summaryrefslogtreecommitdiff
path: root/lib/rubygems/source/git.rb
AgeCommit message (Expand)Author
2020-09-23Revert "Manually merged from https://github.com/rubygems/rubygems/pull/2636"Hiroshi SHIBATA
2020-09-23Manually merged from https://github.com/rubygems/rubygems/pull/2636Hiroshi SHIBATA
2020-07-31[rubygems/rubygems] Remove more unnecessary requiresDavid Rodríguez
2020-07-31Enforce no empty lines around class body in rubygemsDavid Rodríguez
2020-06-15Replace `Gem::Util.silent_system` with better toolsDavid Rodríguez
2020-03-30[rubygems/rubygems] Enable Style/PercentLiteralDelimiters cop in rubygemsDavid Rodríguez
2018-11-21Merge master branch from rubygems/rubygems upstream.hsbt
2017-10-08Merge rubygems master.hsbt
2016-02-01* lib/rubygems.rb, lib/rubygems/*, test/rubygems/*: Update rubygems-2.5.2.hsbt
2015-12-16Add frozen_string_literal: false for all filesnaruse
2014-10-01* lib/rubygems: Update to RubyGems 2.4.2.drbrain
2014-09-14* lib/rubygems: Update to RubyGems 2.4.1 master(713ab65)hsbt
2014-02-04 * lib/rubygems: Update to RubyGems 2.2.2 prerelease to check fixes todrbrain
2013-12-13* lib/rubygems: Update to RubyGems master ddac51f. Changes:drbrain
2013-12-10* lib/rubygems: Update to RubyGems master ec8ed22. Notable changesdrbrain
2013-12-08* lib/rubygems: Update to RubyGems master 14749ce. This fixes bugsdrbrain
2013-11-30* lib/rubygems: Update to RubyGems master 66e5c39. Notable changes:drbrain
2013-11-25* lib/rubygems: Update to RubyGems master 612f85a. Notable changes:drbrain
2013-11-22* lib/rubygems: Update to RubyGems master dcce4ff. Important changesdrbrain
2013-11-21* lib/rubygems: Update to RubyGems master 50a8210. Important changesdrbrain
2013-11-19rubygems/source/git.rb: discard outputnobu
2013-11-19* lib/rubygems: Update to RubyGems master 6a3d9f9. Changes include:drbrain
2.0%;'/> -rw-r--r--README.EXT.ja2077
-rw-r--r--README.ja241
-rw-r--r--ToDo124
-rw-r--r--addr2line.c552
-rw-r--r--array.c1908
-rw-r--r--atomic.h56
-rw-r--r--benchmark/bm_app_mandelbrot.rb2
-rw-r--r--benchmark/bm_app_raise.rb4
-rw-r--r--benchmark/bm_app_strconcat.rb4
-rw-r--r--benchmark/bm_io_select2.rb6
-rw-r--r--benchmark/bm_io_select3.rb6
-rw-r--r--benchmark/bm_loop_whileloop.rb4
-rw-r--r--benchmark/bm_loop_whileloop2.rb4
-rw-r--r--benchmark/bm_so_concatenate.rb4
-rw-r--r--benchmark/bm_so_exception.rb2
-rw-r--r--benchmark/bm_so_lists.rb2
-rw-r--r--benchmark/bm_so_nsieve_bits.rb1
-rw-r--r--benchmark/bm_so_random.rb4
-rw-r--r--benchmark/bm_so_sieve.rb4
-rw-r--r--benchmark/bm_vm1_attr_ivar.rb14
-rw-r--r--benchmark/bm_vm1_attr_ivar_set.rb14
-rw-r--r--benchmark/bm_vm1_block.rb4
-rw-r--r--benchmark/bm_vm1_const.rb2
-rw-r--r--benchmark/bm_vm1_ensure.rb4
-rw-r--r--benchmark/bm_vm1_float_simple.rb7
-rw-r--r--benchmark/bm_vm1_ivar.rb2
-rw-r--r--benchmark/bm_vm1_ivar_set.rb2
-rw-r--r--benchmark/bm_vm1_length.rb4
-rw-r--r--benchmark/bm_vm1_lvar_init.rb18
-rw-r--r--benchmark/bm_vm1_lvar_set.rb5
-rw-r--r--benchmark/bm_vm1_neq.rb2
-rw-r--r--benchmark/bm_vm1_not.rb2
-rw-r--r--benchmark/bm_vm1_rescue.rb4
-rw-r--r--benchmark/bm_vm1_simplereturn.rb4
-rw-r--r--benchmark/bm_vm1_swap.rb4
-rw-r--r--benchmark/bm_vm1_yield.rb10
-rw-r--r--benchmark/bm_vm2_array.rb4
-rw-r--r--benchmark/bm_vm2_bigarray.rb106
-rw-r--r--benchmark/bm_vm2_bighash.rb5
-rw-r--r--benchmark/bm_vm2_case.rb4
-rw-r--r--benchmark/bm_vm2_defined_method.rb4
-rw-r--r--benchmark/bm_vm2_dstr.rb6
-rw-r--r--benchmark/bm_vm2_eval.rb4
-rw-r--r--benchmark/bm_vm2_method.rb4
-rw-r--r--benchmark/bm_vm2_method_missing.rb12
-rw-r--r--benchmark/bm_vm2_method_with_block.rb9
-rw-r--r--benchmark/bm_vm2_mutex.rb4
-rw-r--r--benchmark/bm_vm2_poly_method.rb4
-rw-r--r--benchmark/bm_vm2_poly_method_ov.rb4
-rw-r--r--benchmark/bm_vm2_proc.rb4
-rw-r--r--benchmark/bm_vm2_raise1.rb18
-rw-r--r--benchmark/bm_vm2_raise2.rb18
-rw-r--r--benchmark/bm_vm2_regexp.rb4
-rw-r--r--benchmark/bm_vm2_send.rb4
-rw-r--r--benchmark/bm_vm2_super.rb2
-rw-r--r--benchmark/bm_vm2_unif1.rb2
-rw-r--r--benchmark/bm_vm2_zsuper.rb2
-rw-r--r--benchmark/bm_vm3_backtrace.rb22
-rw-r--r--benchmark/bm_vm3_clearmethodcache.rb4
-rw-r--r--benchmark/bm_vm_thread_create_join.rb4
-rw-r--r--benchmark/bm_vm_thread_mutex1.rb4
-rw-r--r--benchmark/bm_vm_thread_mutex2.rb4
-rw-r--r--benchmark/bm_vm_thread_mutex3.rb4
-rw-r--r--benchmark/bm_vm_thread_pass_flood.rb2
-rw-r--r--benchmark/bmx_temp.rb9
-rw-r--r--benchmark/driver.rb133
-rw-r--r--benchmark/other-lang/fact.rb4
-rw-r--r--benchmark/other-lang/loop.rb4
-rw-r--r--bignum.c392
-rwxr-xr-xbin/rake5
-rwxr-xr-xbin/rdoc4
-rwxr-xr-xbin/testrb9
-rwxr-xr-xbootstraptest/runner.rb110
-rw-r--r--bootstraptest/test_block.rb32
-rw-r--r--bootstraptest/test_eval.rb37
-rw-r--r--bootstraptest/test_exception.rb16
-rw-r--r--bootstraptest/test_flow.rb27
-rw-r--r--bootstraptest/test_io.rb10
-rw-r--r--bootstraptest/test_literal.rb33
-rw-r--r--bootstraptest/test_method.rb82
-rw-r--r--bootstraptest/test_proc.rb25
-rw-r--r--bootstraptest/test_syntax.rb4
-rw-r--r--bootstraptest/test_thread.rb26
-rw-r--r--class.c388
-rw-r--r--common.mk394
-rw-r--r--compar.c34
-rw-r--r--compile.c1928
-rw-r--r--complex.c640
-rw-r--r--configure.in1699
-rw-r--r--constant.h2
-rw-r--r--cont.c187
-rw-r--r--cygwin/GNUmakefile.in4
-rw-r--r--debug.c6
-rw-r--r--debug.h (renamed from vm_debug.h)2
-rw-r--r--defs/default_gems12
-rw-r--r--defs/id.def93
-rw-r--r--defs/opt_operand.def49
-rw-r--r--dir.c165
-rw-r--r--dln.c71
-rw-r--r--dln_find.c8
-rw-r--r--dmydln.c2
-rw-r--r--dmyext.c5
-rw-r--r--doc/.document4
-rw-r--r--doc/ChangeLog-1.9.312151
-rw-r--r--doc/NEWS-1.8.725
-rw-r--r--doc/NEWS-1.9.133
-rw-r--r--doc/NEWS-1.9.250
-rw-r--r--doc/NEWS-1.9.3341
-rw-r--r--doc/etc.rd75
-rw-r--r--doc/etc.rd.ja76
-rw-r--r--doc/forwardable.rd83
-rw-r--r--doc/forwardable.rd.ja44
-rw-r--r--doc/globals.rdoc68
-rw-r--r--doc/irb/irb-tools.rd.ja110
-rw-r--r--doc/irb/irb.rd391
-rw-r--r--doc/irb/irb.rd.ja350
-rw-r--r--doc/pty/README84
-rw-r--r--doc/pty/README.expect22
-rw-r--r--doc/pty/README.expect.ja28
-rw-r--r--doc/pty/README.ja86
-rw-r--r--doc/rake/CHANGES2
-rw-r--r--doc/rake/command_line_usage.rdoc87
-rw-r--r--doc/rake/glossary.rdoc4
-rw-r--r--doc/rake/proto_rake.rdoc44
-rw-r--r--doc/rake/rakefile.rdoc89
-rw-r--r--doc/rake/rational.rdoc12
-rw-r--r--doc/rake/release_notes/rake-0.8.7.rdoc2
-rw-r--r--doc/rake/release_notes/rake-0.9.0.rdoc112
-rw-r--r--doc/rake/release_notes/rake-0.9.1.rdoc52
-rw-r--r--doc/rake/release_notes/rake-0.9.2.2.rdoc55
-rw-r--r--doc/rake/release_notes/rake-0.9.2.rdoc49
-rw-r--r--doc/rake/release_notes/rake-0.9.3.rdoc102
-rw-r--r--doc/rake/release_notes/rake-0.9.4.rdoc110
-rw-r--r--doc/rake/release_notes/rake-0.9.5.rdoc114
-rw-r--r--doc/rake/release_notes/rake-0.9.6.rdoc127
-rw-r--r--doc/re.rdoc95
-rw-r--r--doc/rubygems/ChangeLog5689
-rw-r--r--doc/rubygems/History.txt852
-rw-r--r--doc/rubygems/LICENSE.txt (renamed from lib/rubygems/LICENSE.txt)0
-rw-r--r--doc/rubygems/README41
-rw-r--r--doc/security.rdoc149
-rw-r--r--doc/shell.rd347
-rw-r--r--doc/shell.rd.ja150
-rw-r--r--doc/standard_library.rdoc126
-rw-r--r--doc/syntax.rdoc34
-rw-r--r--doc/syntax/assignment.rdoc455
-rw-r--r--doc/syntax/calling_methods.rdoc349
-rw-r--r--doc/syntax/control_expressions.rdoc500
-rw-r--r--doc/syntax/exceptions.rdoc96
-rw-r--r--doc/syntax/literals.rdoc295
-rw-r--r--doc/syntax/methods.rdoc414
-rw-r--r--doc/syntax/miscellaneous.rdoc107
-rw-r--r--doc/syntax/modules_and_classes.rdoc345
-rw-r--r--doc/syntax/precedence.rdoc60
-rw-r--r--doc/syntax/refinements.rdoc240
-rw-r--r--enc/Makefile.in10
-rw-r--r--enc/ascii.c7
-rw-r--r--enc/big5.c12
-rw-r--r--enc/cp949.c4
-rw-r--r--enc/depend91
-rw-r--r--enc/emacs_mule.c3
-rw-r--r--enc/encdb.c2
-rw-r--r--enc/encinit.c.erb26
-rw-r--r--enc/euc_jp.c292
-rw-r--r--enc/euc_kr.c4
-rw-r--r--enc/euc_tw.c4
-rw-r--r--enc/gb18030.c4
-rw-r--r--enc/gbk.c4
-rw-r--r--enc/iso_2022_jp.h7
-rw-r--r--enc/iso_8859_1.c4
-rw-r--r--enc/iso_8859_10.c4
-rw-r--r--enc/iso_8859_11.c4
-rw-r--r--enc/iso_8859_13.c4
-rw-r--r--enc/iso_8859_14.c4
-rw-r--r--enc/iso_8859_15.c4
-rw-r--r--enc/iso_8859_16.c4
-rw-r--r--enc/iso_8859_2.c4
-rw-r--r--enc/iso_8859_3.c4
-rw-r--r--enc/iso_8859_4.c4
-rw-r--r--enc/iso_8859_5.c4
-rw-r--r--enc/iso_8859_6.c4
-rw-r--r--enc/iso_8859_7.c4
-rw-r--r--enc/iso_8859_8.c4
-rw-r--r--enc/iso_8859_9.c4
-rw-r--r--enc/koi8_r.c4
-rw-r--r--enc/koi8_u.c4
-rwxr-xr-xenc/make_encmake.rb86
-rw-r--r--enc/mktable.c1162
-rw-r--r--enc/shift_jis.c279
-rw-r--r--enc/trans/JIS/JISX0213-1%UCS@BMP.src1926
-rw-r--r--enc/trans/JIS/JISX0213-1%UCS@SIP.src60
-rw-r--r--enc/trans/JIS/JISX0213-2%UCS@BMP.src2193
-rw-r--r--enc/trans/JIS/JISX0213-2%UCS@SIP.src311
-rw-r--r--enc/trans/JIS/UCS@BMP%JISX0213-1.src1922
-rw-r--r--enc/trans/JIS/UCS@BMP%JISX0213-2.src2189
-rw-r--r--enc/trans/JIS/UCS@SIP%JISX0213-1.src56
-rw-r--r--enc/trans/JIS/UCS@SIP%JISX0213-2.src307
-rw-r--r--enc/trans/big5.trans3
-rw-r--r--enc/trans/chinese.trans3
-rw-r--r--enc/trans/emoji.trans3
-rw-r--r--enc/trans/emoji_iso2022_kddi.trans3
-rw-r--r--enc/trans/emoji_sjis_docomo.trans3
-rw-r--r--enc/trans/emoji_sjis_kddi.trans3
-rw-r--r--enc/trans/emoji_sjis_softbank.trans3
-rw-r--r--enc/trans/escape.trans3
-rw-r--r--enc/trans/euckr-tbl.rb2
-rw-r--r--enc/trans/gb18030.trans3
-rw-r--r--enc/trans/gbk.trans3
-rw-r--r--enc/trans/iso-8859-16-tbl.rb98
-rw-r--r--enc/trans/iso2022.trans3
-rw-r--r--enc/trans/japanese.trans3
-rw-r--r--enc/trans/japanese_euc.trans15
-rw-r--r--enc/trans/japanese_sjis.trans3
-rw-r--r--enc/trans/korean.trans3
-rw-r--r--enc/trans/single_byte.trans4
-rw-r--r--enc/trans/utf8_mac.trans3
-rw-r--r--enc/trans/utf_16_32.trans3
-rw-r--r--enc/unicode.c1945
-rw-r--r--enc/unicode/casefold.h2238
-rw-r--r--enc/unicode/name2ctype.h15274
-rw-r--r--enc/unicode/name2ctype.h.blt15274
-rw-r--r--enc/unicode/name2ctype.kwd12679
-rw-r--r--enc/unicode/name2ctype.src12679
-rw-r--r--enc/us_ascii.c4
-rw-r--r--enc/utf_16_32.h5
-rw-r--r--enc/utf_16be.c11
-rw-r--r--enc/utf_16le.c11
-rw-r--r--enc/utf_32be.c12
-rw-r--r--enc/utf_32le.c12
-rw-r--r--enc/utf_8.c12
-rw-r--r--enc/windows_1251.c4
-rw-r--r--enc/windows_31j.c80
-rw-r--r--encoding.c294
-rw-r--r--enum.c1281
-rw-r--r--enumerator.c957
-rw-r--r--error.c636
-rw-r--r--eval.c543
-rw-r--r--eval_error.c59
-rw-r--r--eval_intern.h69
-rw-r--r--eval_jump.c17
-rw-r--r--ext/-test-/bug-5832/bug.c14
-rw-r--r--ext/-test-/bug-5832/extconf.rb1
-rw-r--r--ext/-test-/debug/extconf.rb6
-rw-r--r--ext/-test-/debug/init.c11
-rw-r--r--ext/-test-/debug/inspector.c32
-rw-r--r--ext/-test-/exception/enc_raise.c15
-rw-r--r--ext/-test-/exception/ensured.c25
-rw-r--r--ext/-test-/exception/extconf.rb6
-rw-r--r--ext/-test-/exception/init.c11
-rw-r--r--ext/-test-/fatal/extconf.rb1
-rw-r--r--ext/-test-/fatal/rb_fatal.c19
-rw-r--r--ext/-test-/iter/break.c25
-rw-r--r--ext/-test-/iter/extconf.rb1
-rw-r--r--ext/-test-/marshal/compat/extconf.rb1
-rw-r--r--ext/-test-/marshal/compat/usrcompat.c32
-rw-r--r--ext/-test-/marshal/usr/extconf.rb1
-rw-r--r--ext/-test-/marshal/usr/usrmarshal.c35
-rw-r--r--ext/-test-/method/arity.c22
-rw-r--r--ext/-test-/method/extconf.rb6
-rw-r--r--ext/-test-/method/init.c11
-rw-r--r--ext/-test-/num2int/depend1
-rw-r--r--ext/-test-/num2int/extconf.rb1
-rw-r--r--ext/-test-/num2int/num2int.c120
-rw-r--r--ext/-test-/old_thread_select/extconf.rb3
-rw-r--r--ext/-test-/path_to_class/extconf.rb6
-rw-r--r--ext/-test-/path_to_class/path_to_class.c15
-rw-r--r--ext/-test-/printf/extconf.rb1
-rw-r--r--ext/-test-/printf/printf.c110
-rw-r--r--ext/-test-/st/numhash/numhash.c57
-rw-r--r--ext/-test-/st/update/extconf.rb1
-rw-r--r--ext/-test-/st/update/update.c34
-rw-r--r--ext/-test-/string/coderange.c30
-rw-r--r--ext/-test-/string/enc_str_buf_cat.c14
-rw-r--r--ext/-test-/string/qsort.c61
-rw-r--r--ext/-test-/struct/extconf.rb7
-rw-r--r--ext/-test-/struct/init.c11
-rw-r--r--ext/-test-/struct/member.c18
-rw-r--r--ext/-test-/symbol/extconf.rb6
-rw-r--r--ext/-test-/symbol/init.c11
-rw-r--r--ext/-test-/symbol/intern.c14
-rw-r--r--ext/-test-/symbol/type.c43
-rw-r--r--ext/-test-/typeddata/extconf.rb1
-rw-r--r--ext/-test-/typeddata/typeddata.c20
-rw-r--r--ext/.document11
-rw-r--r--ext/Setup2
-rw-r--r--ext/Setup.atheos2
-rw-r--r--ext/Setup.emx2
-rw-r--r--ext/Setup.nacl49
-rw-r--r--ext/Setup.nt2
-rw-r--r--ext/bigdecimal/README6
-rw-r--r--ext/bigdecimal/bigdecimal.c581
-rw-r--r--ext/bigdecimal/bigdecimal.gemspec8
-rw-r--r--ext/bigdecimal/bigdecimal.h15
-rw-r--r--ext/bigdecimal/bigdecimal_en.html792
-rw-r--r--ext/bigdecimal/bigdecimal_ja.html799
-rw-r--r--ext/bigdecimal/lib/bigdecimal/jacobian.rb5
-rw-r--r--ext/bigdecimal/lib/bigdecimal/math.rb1
-rw-r--r--ext/bigdecimal/lib/bigdecimal/newton.rb2
-rw-r--r--ext/bigdecimal/lib/bigdecimal/util.rb23
-rw-r--r--ext/coverage/coverage.c12
-rw-r--r--ext/curses/curses.c282
-rw-r--r--ext/curses/depend2
-rw-r--r--ext/curses/extconf.rb112
-rw-r--r--ext/curses/rain.rb2
-rw-r--r--ext/curses/view.rb2
-rw-r--r--ext/date/date_core.c431
-rw-r--r--ext/date/date_parse.c829
-rw-r--r--ext/date/date_strftime.c1692
-rw-r--r--ext/date/date_strptime.c11
-rw-r--r--ext/date/date_tmx.h2
-rw-r--r--ext/date/depend1
-rw-r--r--ext/dbm/dbm.c181
-rw-r--r--ext/dbm/extconf.rb364
-rw-r--r--ext/digest/digest.c13
-rw-r--r--ext/digest/md5/extconf.rb4
-rw-r--r--ext/digest/md5/md5init.c3
-rw-r--r--ext/digest/rmd160/extconf.rb4
-rw-r--r--ext/digest/rmd160/rmd160.c10
-rw-r--r--ext/digest/rmd160/rmd160init.c3
-rw-r--r--ext/digest/sha1/extconf.rb4
-rw-r--r--ext/digest/sha1/sha1init.c3
-rw-r--r--ext/digest/sha2/extconf.rb4
-rw-r--r--ext/digest/sha2/lib/sha2.rb6
-rw-r--r--ext/digest/sha2/sha2.c14
-rw-r--r--ext/digest/sha2/sha2ossl.c2
-rw-r--r--ext/dl/callback/mkcallback.rb28
-rw-r--r--ext/dl/cfunc.c3
-rw-r--r--ext/dl/cptr.c18
-rw-r--r--ext/dl/dl.c200
-rw-r--r--ext/dl/dl.h31
-rw-r--r--ext/dl/extconf.rb21
-rw-r--r--ext/dl/handle.c3
-rw-r--r--ext/dl/lib/dl.rb3
-rw-r--r--ext/dl/lib/dl/cparser.rb47
-rw-r--r--ext/dl/lib/dl/func.rb78
-rw-r--r--ext/dl/lib/dl/import.rb22
-rw-r--r--ext/dl/lib/dl/struct.rb154
-rw-r--r--ext/dl/lib/dl/types.rb6
-rw-r--r--ext/dl/lib/dl/value.rb2
-rw-r--r--ext/dl/win32/extconf.rb2
-rw-r--r--ext/dl/win32/lib/Win32API.rb3
-rw-r--r--ext/etc/etc.c295
-rwxr-xr-xext/extmk.rb157
-rw-r--r--ext/fcntl/fcntl.c188
-rw-r--r--ext/fiddle/closure.c19
-rw-r--r--ext/fiddle/conversions.c2
-rw-r--r--ext/fiddle/extconf.rb30
-rw-r--r--ext/fiddle/fiddle.c373
-rw-r--r--ext/fiddle/fiddle.h40
-rw-r--r--ext/fiddle/function.c75
-rw-r--r--ext/fiddle/handle.c470
-rw-r--r--ext/fiddle/lib/fiddle.rb22
-rw-r--r--ext/fiddle/lib/fiddle/cparser.rb176
-rw-r--r--ext/fiddle/lib/fiddle/function.rb11
-rw-r--r--ext/fiddle/lib/fiddle/import.rb314
-rw-r--r--ext/fiddle/lib/fiddle/pack.rb128
-rw-r--r--ext/fiddle/lib/fiddle/struct.rb243
-rw-r--r--ext/fiddle/lib/fiddle/types.rb71
-rw-r--r--ext/fiddle/lib/fiddle/value.rb112
-rw-r--r--ext/fiddle/pointer.c724
-rw-r--r--ext/fiddle/win32/extconf.rb3
-rw-r--r--ext/fiddle/win32/lib/win32/registry.rb845
-rw-r--r--ext/fiddle/win32/lib/win32/resolv.rb379
-rw-r--r--ext/gdbm/gdbm.c50
-rw-r--r--ext/iconv/charset_alias.rb104
-rw-r--r--ext/iconv/depend2
-rw-r--r--ext/iconv/extconf.rb54
-rw-r--r--ext/iconv/iconv.c1256
-rw-r--r--ext/iconv/mkwrapper.rb53
-rw-r--r--ext/io/console/console.c12
-rw-r--r--ext/io/console/io-console.gemspec7
-rw-r--r--ext/io/wait/wait.c49
-rw-r--r--ext/json/fbuffer/fbuffer.h190
-rw-r--r--ext/json/generator/depend3
-rw-r--r--ext/json/generator/extconf.rb8
-rw-r--r--ext/json/generator/generator.c281
-rw-r--r--ext/json/generator/generator.h72
-rw-r--r--ext/json/lib/json.rb4
-rw-r--r--ext/json/lib/json/add/bigdecimal.rb28
-rw-r--r--ext/json/lib/json/add/core.rb250
-rw-r--r--ext/json/lib/json/add/date.rb34
-rw-r--r--ext/json/lib/json/add/date_time.rb50
-rw-r--r--ext/json/lib/json/add/exception.rb31
-rw-r--r--ext/json/lib/json/add/ostruct.rb31
-rw-r--r--ext/json/lib/json/add/range.rb29
-rw-r--r--ext/json/lib/json/add/regexp.rb30
-rw-r--r--ext/json/lib/json/add/struct.rb30
-rw-r--r--ext/json/lib/json/add/symbol.rb25
-rw-r--r--ext/json/lib/json/add/time.rb38
-rw-r--r--ext/json/lib/json/common.rb77
-rw-r--r--ext/json/lib/json/ext.rb6
-rw-r--r--ext/json/lib/json/generic_object.rb61
-rw-r--r--ext/json/lib/json/version.rb2
-rw-r--r--ext/json/parser/depend3
-rw-r--r--ext/json/parser/extconf.rb7
-rw-r--r--ext/json/parser/parser.c200
-rw-r--r--ext/json/parser/parser.h9
-rw-r--r--ext/json/parser/parser.rl33
-rw-r--r--ext/nkf/depend5
-rw-r--r--ext/nkf/nkf-utf8/nkf.c698
-rw-r--r--ext/nkf/nkf-utf8/nkf.h25
-rw-r--r--ext/nkf/nkf-utf8/utf8tbl.c5875
-rw-r--r--ext/nkf/nkf-utf8/utf8tbl.h14
-rw-r--r--ext/nkf/nkf.c23
-rw-r--r--ext/objspace/objspace.c244
-rw-r--r--ext/openssl/deprecation.rb21
-rw-r--r--ext/openssl/extconf.rb48
-rw-r--r--ext/openssl/lib/openssl.rb5
-rw-r--r--ext/openssl/lib/openssl/bn.rb6
-rw-r--r--ext/openssl/lib/openssl/buffering.rb31
-rw-r--r--ext/openssl/lib/openssl/cipher.rb6
-rw-r--r--ext/openssl/lib/openssl/digest.rb25
-rw-r--r--ext/openssl/lib/openssl/ssl-internal.rb177
-rw-r--r--ext/openssl/lib/openssl/ssl.rb295
-rw-r--r--ext/openssl/lib/openssl/x509-internal.rb158
-rw-r--r--ext/openssl/lib/openssl/x509.rb164
-rw-r--r--ext/openssl/ossl.c244
-rw-r--r--ext/openssl/ossl.h14
-rw-r--r--ext/openssl/ossl_asn1.c59
-rw-r--r--ext/openssl/ossl_bio.c2
-rw-r--r--ext/openssl/ossl_bn.c6
-rw-r--r--ext/openssl/ossl_cipher.c264
-rw-r--r--ext/openssl/ossl_engine.c55
-rw-r--r--ext/openssl/ossl_ns_spki.c138
-rw-r--r--ext/openssl/ossl_pkcs5.c104
-rw-r--r--ext/openssl/ossl_pkey.c47
-rw-r--r--ext/openssl/ossl_pkey.h10
-rw-r--r--ext/openssl/ossl_pkey_dh.c60
-rw-r--r--ext/openssl/ossl_pkey_dsa.c71
-rw-r--r--ext/openssl/ossl_pkey_ec.c97
-rw-r--r--ext/openssl/ossl_pkey_rsa.c84
-rw-r--r--ext/openssl/ossl_ssl.c460
-rw-r--r--ext/openssl/ossl_x509cert.c42
-rw-r--r--ext/openssl/ossl_x509name.c104
-rw-r--r--ext/openssl/ossl_x509store.c65
-rw-r--r--ext/openssl/ruby_missing.h13
-rw-r--r--ext/pathname/lib/pathname.rb163
-rw-r--r--ext/pathname/pathname.c340
-rw-r--r--ext/psych/.gitignore11
-rw-r--r--ext/psych/emitter.c (renamed from ext/psych/psych_emitter.c)0
-rw-r--r--ext/psych/emitter.h (renamed from ext/psych/psych_emitter.h)0
-rw-r--r--ext/psych/extconf.rb32
-rw-r--r--ext/psych/lib/psych.rb18
-rw-r--r--ext/psych/lib/psych/core_ext.rb9
-rw-r--r--ext/psych/lib/psych/deprecated.rb1
-rw-r--r--ext/psych/lib/psych/handler.rb13
-rw-r--r--ext/psych/lib/psych/handlers/recorder.rb39
-rw-r--r--ext/psych/lib/psych/scalar_scanner.rb56
-rw-r--r--ext/psych/lib/psych/syntax_error.rb5
-rw-r--r--ext/psych/lib/psych/visitors/to_ruby.rb110
-rw-r--r--ext/psych/lib/psych/visitors/yaml_tree.rb61
-rw-r--r--ext/psych/lib/psych/y.rb9
-rw-r--r--ext/psych/parser.c (renamed from ext/psych/psych_parser.c)2
-rw-r--r--ext/psych/parser.h (renamed from ext/psych/psych_parser.h)0
-rw-r--r--ext/psych/psych.gemspec24
-rw-r--r--ext/psych/psych.h8
-rw-r--r--ext/psych/to_ruby.c (renamed from ext/psych/psych_to_ruby.c)0
-rw-r--r--ext/psych/to_ruby.h (renamed from ext/psych/psych_to_ruby.h)0
-rw-r--r--ext/psych/yaml/LICENSE19
-rw-r--r--ext/psych/yaml/api.c1415
-rw-r--r--ext/psych/yaml/config.h10
-rw-r--r--ext/psych/yaml/dumper.c394
-rw-r--r--ext/psych/yaml/emitter.c2329
-rw-r--r--ext/psych/yaml/loader.c459
-rw-r--r--ext/psych/yaml/parser.c1370
-rw-r--r--ext/psych/yaml/reader.c469
-rw-r--r--ext/psych/yaml/scanner.c3583
-rw-r--r--ext/psych/yaml/writer.c141
-rw-r--r--ext/psych/yaml/yaml.h1971
-rw-r--r--ext/psych/yaml/yaml_private.h664
-rw-r--r--ext/psych/yaml_tree.c (renamed from ext/psych/psych_yaml_tree.c)0
-rw-r--r--ext/psych/yaml_tree.h (renamed from ext/psych/psych_yaml_tree.h)0
-rw-r--r--ext/pty/extconf.rb4
-rw-r--r--ext/pty/lib/expect.rb24
-rw-r--r--ext/pty/pty.c367
-rw-r--r--ext/racc/cparse/cparse.c6
-rw-r--r--ext/readline/README.ja344
-rw-r--r--ext/readline/extconf.rb106
-rw-r--r--ext/readline/readline.c230
-rw-r--r--ext/ripper/depend6
-rw-r--r--ext/ripper/eventids2.c14
-rw-r--r--ext/ripper/extconf.rb3
-rw-r--r--ext/ripper/lib/ripper.rb69
-rw-r--r--ext/ripper/lib/ripper/core.rb8
-rw-r--r--ext/ripper/lib/ripper/filter.rb21
-rw-r--r--ext/ripper/lib/ripper/lexer.rb23
-rw-r--r--ext/ripper/lib/ripper/sexp.rb4
-rwxr-xr-xext/ripper/tools/generate.rb12
-rw-r--r--ext/sdbm/_sdbm.c85
-rw-r--r--ext/sdbm/init.c351
-rw-r--r--ext/socket/ancdata.c58
-rw-r--r--ext/socket/basicsocket.c10
-rw-r--r--ext/socket/depend2
-rw-r--r--ext/socket/extconf.rb64
-rw-r--r--ext/socket/getaddrinfo.c1
-rw-r--r--ext/socket/init.c96
-rw-r--r--ext/socket/ipsocket.c13
-rw-r--r--ext/socket/lib/socket.rb218
-rw-r--r--ext/socket/mkconstants.rb2
-rw-r--r--ext/socket/option.c7
-rw-r--r--ext/socket/raddrinfo.c205
-rw-r--r--ext/socket/rubysocket.h15
-rw-r--r--ext/socket/socket.c189
-rw-r--r--ext/socket/tcpsocket.c2
-rw-r--r--ext/socket/unixsocket.c35
-rw-r--r--ext/stringio/stringio.c217
-rw-r--r--ext/strscan/extconf.rb1
-rw-r--r--ext/strscan/strscan.c147
-rw-r--r--ext/syck/bytecode.c1165
-rw-r--r--ext/syck/depend12
-rw-r--r--ext/syck/emitter.c1247
-rw-r--r--ext/syck/extconf.rb5
-rw-r--r--ext/syck/gram.c1894
-rw-r--r--ext/syck/gram.h79
-rw-r--r--ext/syck/handler.c173
-rw-r--r--ext/syck/implicit.c2990
-rw-r--r--ext/syck/lib/syck.rb447
-rw-r--r--ext/syck/lib/syck/baseemitter.rb242
-rw-r--r--ext/syck/lib/syck/basenode.rb222
-rw-r--r--ext/syck/lib/syck/constants.rb45
-rw-r--r--ext/syck/lib/syck/encoding.rb35
-rw-r--r--ext/syck/lib/syck/error.rb34
-rw-r--r--ext/syck/lib/syck/loader.rb14
-rw-r--r--ext/syck/lib/syck/rubytypes.rb467
-rw-r--r--ext/syck/lib/syck/stream.rb41
-rw-r--r--ext/syck/lib/syck/stringio.rb85
-rw-r--r--ext/syck/lib/syck/syck.rb16
-rw-r--r--ext/syck/lib/syck/tag.rb95
-rw-r--r--ext/syck/lib/syck/types.rb192
-rw-r--r--ext/syck/lib/syck/yamlnode.rb54
-rw-r--r--ext/syck/lib/syck/ypath.rb54
-rw-r--r--ext/syck/lib/yaml/syck.rb14
-rw-r--r--ext/syck/node.c407
-rw-r--r--ext/syck/rubyext.c2328
-rw-r--r--ext/syck/syck.c524
-rw-r--r--ext/syck/syck.h453
-rw-r--r--ext/syck/token.c2724
-rw-r--r--ext/syck/yaml2byte.c259
-rw-r--r--ext/syck/yamlbyte.h171
-rw-r--r--ext/syslog/lib/syslog/logger.rb194
-rw-r--r--ext/syslog/syslog.c188
-rw-r--r--ext/tk/ChangeLog.tkextlib2
-rw-r--r--ext/tk/MANUAL_tcltklib.eng2
-rw-r--r--ext/tk/MANUAL_tcltklib.eucj822
-rw-r--r--ext/tk/README.1st14
-rw-r--r--ext/tk/extconf.rb140
-rw-r--r--ext/tk/lib/multi-tk.rb2
-rw-r--r--ext/tk/lib/tcltk.rb2
-rw-r--r--ext/tk/lib/tk/canvas.rb9
-rw-r--r--ext/tk/lib/tk/image.rb40
-rw-r--r--ext/tk/lib/tk/msgcat.rb41
-rw-r--r--ext/tk/lib/tk/namespace.rb7
-rw-r--r--ext/tk/lib/tk/wm.rb6
-rwxr-xr-xext/tk/lib/tkextlib/pkg_checker.rb2
-rw-r--r--ext/tk/lib/tkextlib/tcllib/plotchart.rb4
-rw-r--r--ext/tk/lib/tkextlib/tktable/tktable.rb2
-rw-r--r--ext/tk/old-README.tcltklib.eucj206
-rw-r--r--ext/tk/sample/demos-en/README114
-rw-r--r--ext/tk/sample/demos-en/README.tkencoding18
-rw-r--r--ext/tk/sample/demos-en/text.rb2
-rw-r--r--ext/tk/sample/demos-en/tree.rb2
-rw-r--r--ext/tk/sample/demos-en/widget8
-rw-r--r--ext/tk/sample/demos-jp/README102
-rw-r--r--ext/tk/sample/demos-jp/README.1st28
-rw-r--r--ext/tk/sample/demos-jp/anilabel.rb22
-rw-r--r--ext/tk/sample/demos-jp/aniwave.rb10
-rw-r--r--ext/tk/sample/demos-jp/arrow.rb22
-rw-r--r--ext/tk/sample/demos-jp/bind.rb38
-rw-r--r--ext/tk/sample/demos-jp/bitmap.rb20
-rw-r--r--ext/tk/sample/demos-jp/button.rb20
-rw-r--r--ext/tk/sample/demos-jp/check.rb30
-rw-r--r--ext/tk/sample/demos-jp/check2.rb30
-rw-r--r--ext/tk/sample/demos-jp/clrpick.rb28
-rw-r--r--ext/tk/sample/demos-jp/colors.rb20
-rw-r--r--ext/tk/sample/demos-jp/combo.rb36
-rw-r--r--ext/tk/sample/demos-jp/cscroll.rb22
-rw-r--r--ext/tk/sample/demos-jp/ctext.rb36
-rw-r--r--ext/tk/sample/demos-jp/dialog1.rb12
-rw-r--r--ext/tk/sample/demos-jp/dialog2.rb12
-rw-r--r--ext/tk/sample/demos-jp/entry1.rb32
-rw-r--r--ext/tk/sample/demos-jp/entry2.rb32
-rw-r--r--ext/tk/sample/demos-jp/entry3.rb46
-rw-r--r--ext/tk/sample/demos-jp/filebox.rb28
-rw-r--r--ext/tk/sample/demos-jp/floor.rb24
-rw-r--r--ext/tk/sample/demos-jp/floor2.rb24
-rw-r--r--ext/tk/sample/demos-jp/form.rb28
-rw-r--r--ext/tk/sample/demos-jp/goldberg.rb20
-rw-r--r--ext/tk/sample/demos-jp/hello6
-rw-r--r--ext/tk/sample/demos-jp/hscale.rb14
-rw-r--r--ext/tk/sample/demos-jp/icon.rb24
-rw-r--r--ext/tk/sample/demos-jp/image1.rb22
-rw-r--r--ext/tk/sample/demos-jp/image2.rb34
-rw-r--r--ext/tk/sample/demos-jp/image3.rb18
-rw-r--r--ext/tk/sample/demos-jp/items.rb60
-rw-r--r--ext/tk/sample/demos-jp/ixset240
-rw-r--r--ext/tk/sample/demos-jp/knightstour.rb20
-rw-r--r--ext/tk/sample/demos-jp/label.rb30
-rw-r--r--ext/tk/sample/demos-jp/labelframe.rb32
-rw-r--r--ext/tk/sample/demos-jp/mclist.rb58
-rw-r--r--ext/tk/sample/demos-jp/menu.rb108
-rw-r--r--ext/tk/sample/demos-jp/menu84.rb50
-rw-r--r--ext/tk/sample/demos-jp/menu8x.rb120
-rw-r--r--ext/tk/sample/demos-jp/menubu.rb28
-rw-r--r--ext/tk/sample/demos-jp/msgbox.rb30
-rw-r--r--ext/tk/sample/demos-jp/msgbox2.rb32
-rw-r--r--ext/tk/sample/demos-jp/paned1.rb16
-rw-r--r--ext/tk/sample/demos-jp/paned2.rb22
-rw-r--r--ext/tk/sample/demos-jp/pendulum.rb10
-rw-r--r--ext/tk/sample/demos-jp/plot.rb26
-rw-r--r--ext/tk/sample/demos-jp/puzzle.rb30
-rw-r--r--ext/tk/sample/demos-jp/radio.rb30
-rw-r--r--ext/tk/sample/demos-jp/radio2.rb26
-rw-r--r--ext/tk/sample/demos-jp/radio3.rb24
-rw-r--r--ext/tk/sample/demos-jp/rolodex-j132
-rw-r--r--ext/tk/sample/demos-jp/ruler.rb22
-rw-r--r--ext/tk/sample/demos-jp/sayings.rb20
-rw-r--r--ext/tk/sample/demos-jp/search.rb40
-rw-r--r--ext/tk/sample/demos-jp/spin.rb42
-rw-r--r--ext/tk/sample/demos-jp/states.rb34
-rw-r--r--ext/tk/sample/demos-jp/style.rb192
-rw-r--r--ext/tk/sample/demos-jp/tcolor34
-rw-r--r--ext/tk/sample/demos-jp/text.rb102
-rw-r--r--ext/tk/sample/demos-jp/textpeer.rb32
-rw-r--r--ext/tk/sample/demos-jp/toolbar.rb56
-rw-r--r--ext/tk/sample/demos-jp/tree.rb24
-rw-r--r--ext/tk/sample/demos-jp/ttkbut.rb56
-rw-r--r--ext/tk/sample/demos-jp/ttkmenu.rb46
-rw-r--r--ext/tk/sample/demos-jp/ttknote.rb42
-rw-r--r--ext/tk/sample/demos-jp/ttkpane.rb24
-rw-r--r--ext/tk/sample/demos-jp/ttkprogress.rb26
-rw-r--r--ext/tk/sample/demos-jp/twind.rb76
-rw-r--r--ext/tk/sample/demos-jp/twind2.rb116
-rw-r--r--ext/tk/sample/demos-jp/unicodeout.rb42
-rw-r--r--ext/tk/sample/demos-jp/vscale.rb16
-rw-r--r--ext/tk/sample/demos-jp/widget322
-rw-r--r--ext/tk/sample/msgs_rb2/ja.msg154
-rw-r--r--ext/tk/sample/scrollframe.rb2
-rw-r--r--ext/tk/sample/tcltklib/sample0.rb12
-rw-r--r--ext/tk/sample/tcltklib/sample1.rb304
-rw-r--r--ext/tk/sample/tcltklib/sample2.rb14
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/notebook.rb2
-rw-r--r--ext/tk/sample/tkextlib/iwidgets/sample/notebook2.rb2
-rw-r--r--ext/tk/sample/tkextlib/tkHTML/page1/index.html2
-rw-r--r--ext/tk/sample/tkoptdb-safeTk.rb2
-rw-r--r--ext/tk/sample/tkoptdb.rb2
-rw-r--r--ext/tk/stubs.c18
-rw-r--r--ext/tk/tcltklib.c141
-rw-r--r--ext/tk/tkutil/tkutil.c94
-rw-r--r--ext/win32ole/extconf.rb11
-rw-r--r--ext/win32ole/lib/win32ole.rb22
-rw-r--r--ext/win32ole/win32ole.c119
-rw-r--r--ext/zlib/extconf.rb4
-rw-r--r--ext/zlib/zlib.c999
-rw-r--r--file.c458
-rw-r--r--gc.c4982
-rw-r--r--gc.h13
-rw-r--r--goruby.c34
-rw-r--r--hash.c692
-rw-r--r--ia64.s4
-rw-r--r--id.c51
-rw-r--r--include/ruby.h1
-rw-r--r--include/ruby/backward/rubysig.h8
-rw-r--r--include/ruby/debug.h93
-rw-r--r--include/ruby/defines.h72
-rw-r--r--include/ruby/encoding.h4
-rw-r--r--include/ruby/intern.h145
-rw-r--r--include/ruby/io.h11
-rw-r--r--include/ruby/missing.h38
-rw-r--r--include/ruby/oniguruma.h92
-rw-r--r--include/ruby/ruby.h508
-rw-r--r--include/ruby/st.h17
-rw-r--r--include/ruby/subst.h1
-rw-r--r--include/ruby/thread.h49
-rw-r--r--include/ruby/util.h2
-rw-r--r--include/ruby/version.h6
-rw-r--r--include/ruby/win32.h100
-rw-r--r--inits.c1
-rw-r--r--insns.def1008
-rw-r--r--internal.h182
-rw-r--r--io.c2104
-rw-r--r--iseq.c1178
-rw-r--r--iseq.h43
-rw-r--r--lib/English.rb42
-rw-r--r--lib/README91
-rw-r--r--[-rwxr-xr-x]lib/abbrev.rb84
-rw-r--r--lib/benchmark.rb73
-rw-r--r--lib/cgi.rb35
-rw-r--r--lib/cgi/cookie.rb1
-rw-r--r--lib/cgi/core.rb91
-rw-r--r--lib/cgi/html.rb104
-rw-r--r--lib/cgi/session.rb2
-rw-r--r--lib/cgi/util.rb18
-rw-r--r--lib/csv.rb253
-rw-r--r--lib/debug.rb182
-rw-r--r--lib/delegate.rb11
-rw-r--r--lib/drb/drb.rb113
-rw-r--r--lib/drb/eq.rb2
-rw-r--r--lib/drb/extserv.rb2
-rw-r--r--lib/drb/gw.rb42
-rw-r--r--lib/drb/invokemethod.rb2
-rw-r--r--lib/drb/observer.rb3
-rw-r--r--lib/drb/ssl.rb164
-rw-r--r--lib/drb/timeridconv.rb16
-rw-r--r--lib/drb/unix.rb7
-rw-r--r--lib/erb.rb74
-rw-r--r--lib/fileutils.rb143
-rw-r--r--lib/find.rb2
-rw-r--r--lib/forwardable.rb152
-rw-r--r--lib/getoptlong.rb2
-rw-r--r--lib/gserver.rb17
-rw-r--r--lib/ipaddr.rb106
-rw-r--r--lib/irb.rb372
-rw-r--r--lib/irb/cmd/chws.rb3
-rw-r--r--lib/irb/cmd/fork.rb5
-rw-r--r--lib/irb/cmd/help.rb2
-rw-r--r--lib/irb/cmd/load.rb2
-rw-r--r--lib/irb/cmd/nop.rb3
-rw-r--r--lib/irb/cmd/pushws.rb2
-rw-r--r--lib/irb/cmd/subirb.rb2
-rw-r--r--lib/irb/completion.rb14
-rw-r--r--lib/irb/context.rb171
-rw-r--r--lib/irb/ext/change-ws.rb10
-rw-r--r--lib/irb/ext/history.rb15
-rw-r--r--lib/irb/ext/loader.rb17
-rw-r--r--lib/irb/ext/math-mode.rb13
-rw-r--r--lib/irb/ext/multi-irb.rb48
-rw-r--r--lib/irb/ext/save-history.rb31
-rw-r--r--lib/irb/ext/tracer.rb11
-rw-r--r--lib/irb/ext/use-loader.rb9
-rw-r--r--lib/irb/ext/workspaces.rb13
-rw-r--r--lib/irb/extend-command.rb76
-rw-r--r--lib/irb/frame.rb16
-rw-r--r--lib/irb/help.rb1
-rw-r--r--lib/irb/init.rb13
-rw-r--r--lib/irb/input-method.rb71
-rw-r--r--lib/irb/inspector.rb146
-rw-r--r--lib/irb/lc/.document4
-rw-r--r--lib/irb/lc/error.rb4
-rw-r--r--lib/irb/lc/ja/encoding_aliases.rb2
-rw-r--r--lib/irb/lc/ja/error.rb3
-rw-r--r--lib/irb/locale.rb2
-rw-r--r--lib/irb/magic-file.rb3
-rw-r--r--lib/irb/notifier.rb89
-rw-r--r--lib/irb/output-method.rb46
-rw-r--r--lib/irb/ruby-lex.rb42
-rw-r--r--lib/irb/ruby-token.rb2
-rw-r--r--lib/irb/slex.rb4
-rw-r--r--lib/irb/version.rb2
-rw-r--r--lib/irb/workspace.rb14
-rw-r--r--lib/irb/xmp.rb76
-rw-r--r--lib/logger.rb133
-rw-r--r--lib/matrix.rb413
-rw-r--r--lib/matrix/eigenvalue_decomposition.rb18
-rw-r--r--lib/matrix/lup_decomposition.rb58
-rw-r--r--lib/minitest/.document2
-rw-r--r--lib/minitest/README.txt147
-rw-r--r--lib/minitest/autorun.rb1
-rw-r--r--lib/minitest/benchmark.rb42
-rw-r--r--lib/minitest/hell.rb16
-rw-r--r--lib/minitest/mock.rb152
-rw-r--r--lib/minitest/parallel_each.rb36
-rw-r--r--lib/minitest/pride.rb36
-rw-r--r--lib/minitest/spec.rb102
-rw-r--r--lib/minitest/unit.rb746
-rw-r--r--lib/mkmf.rb4007
-rw-r--r--lib/monitor.rb2
-rw-r--r--lib/mutex_m.rb58
-rw-r--r--lib/net/.document8
-rw-r--r--lib/net/ftp.rb240
-rw-r--r--lib/net/http.rb1878
-rw-r--r--lib/net/http/backward.rb25
-rw-r--r--lib/net/http/exceptions.rb25
-rw-r--r--lib/net/http/generic_request.rb329
-rw-r--r--lib/net/http/header.rb452
-rw-r--r--lib/net/http/proxy_delta.rb16
-rw-r--r--lib/net/http/request.rb20
-rw-r--r--lib/net/http/requests.rb122
-rw-r--r--lib/net/http/response.rb405
-rw-r--r--lib/net/http/responses.rb268
-rw-r--r--lib/net/imap.rb138
-rw-r--r--lib/net/pop.rb28
-rw-r--r--lib/net/protocol.rb26
-rw-r--r--lib/net/smtp.rb43
-rw-r--r--lib/net/telnet.rb21
-rw-r--r--lib/observer.rb4
-rw-r--r--lib/open-uri.rb116
-rw-r--r--lib/open3.rb31
-rw-r--r--lib/optparse.rb57
-rw-r--r--lib/optparse/ac.rb50
-rw-r--r--lib/ostruct.rb114
-rw-r--r--lib/pp.rb62
-rw-r--r--lib/prime.rb2
-rw-r--r--lib/profiler.rb146
-rw-r--r--lib/pstore.rb76
-rw-r--r--lib/racc/parser.rb247
-rw-r--r--lib/racc/rdoc/grammar.en.rdoc219
-rw-r--r--lib/rake.rb2
-rw-r--r--lib/rake/application.rb387
-rw-r--r--lib/rake/backtrace.rb18
-rw-r--r--lib/rake/clean.rb2
-rw-r--r--lib/rake/cloneable.rb23
-rw-r--r--lib/rake/contrib/ftptools.rb3
-rw-r--r--lib/rake/contrib/sys.rb13
-rw-r--r--lib/rake/dsl_definition.rb20
-rw-r--r--lib/rake/ext/module.rb2
-rw-r--r--lib/rake/ext/string.rb3
-rw-r--r--lib/rake/ext/time.rb3
-rw-r--r--lib/rake/file_list.rb11
-rw-r--r--lib/rake/file_utils.rb2
-rw-r--r--lib/rake/file_utils_ext.rb7
-rw-r--r--lib/rake/lib/.document1
-rw-r--r--lib/rake/multi_task.rb7
-rw-r--r--lib/rake/phony.rb15
-rw-r--r--lib/rake/private_reader.rb20
-rw-r--r--lib/rake/promise.rb99
-rw-r--r--lib/rake/rake_module.rb8
-rw-r--r--lib/rake/rdoctask.rb2
-rwxr-xr-x[-rw-r--r--]lib/rake/ruby182_test_unit_fix.rb0
-rw-r--r--lib/rake/runtest.rb3
-rw-r--r--lib/rake/task.rb39
-rw-r--r--lib/rake/task_arguments.rb2
-rw-r--r--lib/rake/task_manager.rb2
-rw-r--r--lib/rake/testtask.rb9
-rw-r--r--lib/rake/thread_history_display.rb48
-rw-r--r--lib/rake/thread_pool.rb155
-rw-r--r--lib/rake/trace_output.rb19
-rw-r--r--lib/rake/version.rb11
-rw-r--r--lib/rbconfig/obsolete.rb43
-rw-r--r--lib/rdoc.rb171
-rw-r--r--lib/rdoc/alias.rb2
-rw-r--r--lib/rdoc/anon_class.rb2
-rw-r--r--lib/rdoc/any_method.rb109
-rw-r--r--lib/rdoc/attr.rb63
-rw-r--r--lib/rdoc/class_module.rb283
-rw-r--r--lib/rdoc/code_object.rb77
-rw-r--r--lib/rdoc/code_objects.rb24
-rw-r--r--lib/rdoc/comment.rb232
-rw-r--r--lib/rdoc/constant.rb108
-rw-r--r--lib/rdoc/context.rb327
-rw-r--r--lib/rdoc/context/section.rb238
-rw-r--r--lib/rdoc/cross_reference.rb136
-rw-r--r--lib/rdoc/encoding.rb69
-rw-r--r--lib/rdoc/erb_partial.rb18
-rw-r--r--lib/rdoc/extend.rb117
-rw-r--r--lib/rdoc/generator.rb32
-rw-r--r--lib/rdoc/generator/darkfish.rb464
-rw-r--r--lib/rdoc/generator/json_index.rb248
-rw-r--r--lib/rdoc/generator/markup.rb91
-rw-r--r--lib/rdoc/generator/ri.rb70
-rw-r--r--lib/rdoc/generator/template/darkfish/_footer.rhtml5
-rw-r--r--lib/rdoc/generator/template/darkfish/_head.rhtml16
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml18
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml9
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml16
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml8
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml16
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml14
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml12
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_navigation.rhtml7
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml12
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml10
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml10
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml10
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml19
-rw-r--r--lib/rdoc/generator/template/darkfish/class.rhtml179
-rw-r--r--lib/rdoc/generator/template/darkfish/classpage.rhtml321
-rw-r--r--lib/rdoc/generator/template/darkfish/filepage.rhtml124
-rwxr-xr-xlib/rdoc/generator/template/darkfish/images/add.pngbin733 -> 0 bytes-rwxr-xr-xlib/rdoc/generator/template/darkfish/images/arrow_up.pngbin372 -> 0 bytes-rwxr-xr-xlib/rdoc/generator/template/darkfish/images/delete.pngbin715 -> 0 bytes-rwxr-xr-xlib/rdoc/generator/template/darkfish/images/tag_blue.pngbin1880 -> 0 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/images/transparent.pngbin97 -> 0 bytes-rw-r--r--lib/rdoc/generator/template/darkfish/index.rhtml77
-rw-r--r--lib/rdoc/generator/template/darkfish/js/darkfish.js163
-rw-r--r--lib/rdoc/generator/template/darkfish/js/jquery.js36
-rw-r--r--lib/rdoc/generator/template/darkfish/js/quicksearch.js114
-rw-r--r--lib/rdoc/generator/template/darkfish/js/search.js94
-rw-r--r--lib/rdoc/generator/template/darkfish/js/thickbox-compressed.js10
-rw-r--r--lib/rdoc/generator/template/darkfish/page.rhtml18
-rw-r--r--lib/rdoc/generator/template/darkfish/rdoc.css508
-rw-r--r--lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml18
-rw-r--r--lib/rdoc/generator/template/darkfish/servlet_root.rhtml37
-rw-r--r--lib/rdoc/generator/template/darkfish/table_of_contents.rhtml55
-rw-r--r--lib/rdoc/generator/template/json_index/.document1
-rw-r--r--lib/rdoc/generator/template/json_index/js/navigation.js142
-rw-r--r--lib/rdoc/generator/template/json_index/js/searcher.js228
-rw-r--r--lib/rdoc/ghost_method.rb2
-rw-r--r--lib/rdoc/include.rb43
-rw-r--r--lib/rdoc/markdown.rb16336
-rw-r--r--lib/rdoc/markdown/entities.rb2131
-rw-r--r--lib/rdoc/markdown/literals_1_9.rb417
-rw-r--r--lib/rdoc/markup.rb316
-rw-r--r--lib/rdoc/markup/attr_changer.rb22
-rw-r--r--lib/rdoc/markup/attr_span.rb29
-rw-r--r--lib/rdoc/markup/attribute_manager.rb41
-rw-r--r--lib/rdoc/markup/attributes.rb70
-rw-r--r--lib/rdoc/markup/block_quote.rb14
-rw-r--r--lib/rdoc/markup/document.rb61
-rw-r--r--lib/rdoc/markup/formatter.rb129
-rw-r--r--lib/rdoc/markup/formatter_test_case.rb120
-rw-r--r--lib/rdoc/markup/hard_break.rb31
-rw-r--r--lib/rdoc/markup/heading.rb47
-rw-r--r--lib/rdoc/markup/include.rb42
-rw-r--r--lib/rdoc/markup/indented_paragraph.rb14
-rw-r--r--lib/rdoc/markup/inline.rb145
-rw-r--r--lib/rdoc/markup/list.rb28
-rw-r--r--lib/rdoc/markup/list_item.rb21
-rw-r--r--lib/rdoc/markup/paragraph.rb14
-rw-r--r--lib/rdoc/markup/parser.rb194
-rw-r--r--lib/rdoc/markup/pre_process.rb88
-rw-r--r--lib/rdoc/markup/raw.rb10
-rw-r--r--lib/rdoc/markup/special.rb40
-rw-r--r--lib/rdoc/markup/text_formatter_test_case.rb2
-rw-r--r--lib/rdoc/markup/to_ansi.rb15
-rw-r--r--lib/rdoc/markup/to_bs.rb2
-rw-r--r--lib/rdoc/markup/to_html.rb210
-rw-r--r--lib/rdoc/markup/to_html_crossref.rb63
-rw-r--r--lib/rdoc/markup/to_html_snippet.rb284
-rw-r--r--lib/rdoc/markup/to_joined_paragraph.rb71
-rw-r--r--lib/rdoc/markup/to_label.rb74
-rw-r--r--lib/rdoc/markup/to_markdown.rb189
-rw-r--r--lib/rdoc/markup/to_rdoc.rb52
-rw-r--r--lib/rdoc/markup/to_table_of_contents.rb87
-rw-r--r--lib/rdoc/markup/to_test.rb3
-rw-r--r--lib/rdoc/markup/to_tt_only.rb16
-rw-r--r--lib/rdoc/markup/verbatim.rb38
-rw-r--r--lib/rdoc/meta_method.rb2
-rw-r--r--lib/rdoc/method_attr.rb81
-rw-r--r--lib/rdoc/normal_class.rb35
-rw-r--r--lib/rdoc/normal_module.rb17
-rw-r--r--lib/rdoc/options.rb413
-rw-r--r--lib/rdoc/parser.rb191
-rw-r--r--lib/rdoc/parser/c.rb552
-rw-r--r--lib/rdoc/parser/changelog.rb194
-rw-r--r--lib/rdoc/parser/markdown.rb23
-rw-r--r--lib/rdoc/parser/rd.rb22
-rw-r--r--lib/rdoc/parser/ruby.rb403
-rw-r--r--lib/rdoc/parser/ruby_tools.rb11
-rw-r--r--lib/rdoc/parser/simple.rb30
-rw-r--r--lib/rdoc/parser/text.rb11
-rw-r--r--lib/rdoc/rd.rb99
-rw-r--r--lib/rdoc/rd/block_parser.rb1055
-rw-r--r--lib/rdoc/rd/inline.rb71
-rw-r--r--lib/rdoc/rd/inline_parser.rb1207
-rw-r--r--lib/rdoc/rdoc.rb185
-rw-r--r--lib/rdoc/require.rb2
-rw-r--r--lib/rdoc/ri.rb6
-rw-r--r--lib/rdoc/ri/driver.rb412
-rw-r--r--lib/rdoc/ri/paths.rb121
-rw-r--r--lib/rdoc/ri/store.rb356
-rw-r--r--lib/rdoc/ruby_lex.rb147
-rw-r--r--lib/rdoc/ruby_token.rb51
-rw-r--r--lib/rdoc/rubygems_hook.rb50
-rw-r--r--lib/rdoc/servlet.rb416
-rw-r--r--lib/rdoc/single_class.rb2
-rw-r--r--lib/rdoc/stats.rb58
-rw-r--r--lib/rdoc/store.rb977
-rw-r--r--lib/rdoc/task.rb28
-rw-r--r--lib/rdoc/test_case.rb178
-rw-r--r--lib/rdoc/text.rb77
-rw-r--r--lib/rdoc/token_stream.rb45
-rw-r--r--lib/rdoc/tom_doc.rb233
-rw-r--r--lib/rdoc/top_level.rb364
-rw-r--r--lib/resolv-replace.rb2
-rw-r--r--lib/resolv.rb91
-rw-r--r--lib/rexml/document.rb74
-rw-r--r--lib/rexml/element.rb12
-rw-r--r--lib/rexml/encoding.rb14
-rw-r--r--lib/rexml/entity.rb7
-rw-r--r--lib/rexml/light/node.rb2
-rw-r--r--lib/rexml/output.rb7
-rw-r--r--lib/rexml/parsers/baseparser.rb42
-rw-r--r--lib/rexml/rexml.rb12
-rw-r--r--lib/rexml/source.rb87
-rw-r--r--lib/rexml/text.rb41
-rw-r--r--lib/rexml/xmldecl.rb8
-rw-r--r--lib/rinda/ring.rb8
-rw-r--r--lib/rinda/tuplespace.rb4
-rw-r--r--lib/rss/atom.rb83
-rw-r--r--lib/rss/maker.rb26
-rw-r--r--lib/rss/maker/base.rb12
-rw-r--r--lib/rss/maker/entry.rb4
-rw-r--r--lib/rss/rss.rb18
-rw-r--r--lib/rubygems.rb688
-rw-r--r--lib/rubygems/available_set.rb93
-rw-r--r--lib/rubygems/builder.rb99
-rw-r--r--lib/rubygems/command.rb133
-rw-r--r--lib/rubygems/command_manager.rb106
-rw-r--r--lib/rubygems/commands/build_command.rb28
-rw-r--r--lib/rubygems/commands/cert_command.rb257
-rw-r--r--lib/rubygems/commands/check_command.rb101
-rw-r--r--lib/rubygems/commands/cleanup_command.rb137
-rw-r--r--lib/rubygems/commands/contents_command.rb42
-rw-r--r--lib/rubygems/commands/dependency_command.rb11
-rw-r--r--lib/rubygems/commands/environment_command.rb21
-rw-r--r--lib/rubygems/commands/fetch_command.rb18
-rw-r--r--lib/rubygems/commands/generate_index_command.rb54
-rw-r--r--lib/rubygems/commands/help_command.rb12
-rw-r--r--lib/rubygems/commands/install_command.rb105
-rw-r--r--lib/rubygems/commands/lock_command.rb2
-rw-r--r--lib/rubygems/commands/mirror_command.rb17
-rw-r--r--lib/rubygems/commands/outdated_command.rb9
-rw-r--r--lib/rubygems/commands/owner_command.rb18
-rw-r--r--lib/rubygems/commands/pristine_command.rb51
-rw-r--r--lib/rubygems/commands/push_command.rb45
-rw-r--r--lib/rubygems/commands/query_command.rb251
-rw-r--r--lib/rubygems/commands/rdoc_command.rb55
-rw-r--r--lib/rubygems/commands/search_command.rb4
-rw-r--r--lib/rubygems/commands/server_command.rb2
-rw-r--r--lib/rubygems/commands/setup_command.rb213
-rw-r--r--lib/rubygems/commands/sources_command.rb45
-rw-r--r--lib/rubygems/commands/specification_command.rb26
-rw-r--r--lib/rubygems/commands/uninstall_command.rb37
-rw-r--r--lib/rubygems/commands/unpack_command.rb10
-rw-r--r--lib/rubygems/commands/update_command.rb67
-rw-r--r--lib/rubygems/commands/yank_command.rb98
-rw-r--r--lib/rubygems/compatibility.rb55
-rw-r--r--lib/rubygems/config_file.rb219
-rw-r--r--lib/rubygems/core_ext/kernel_gem.rb53
-rwxr-xr-xlib/rubygems/core_ext/kernel_require.rb149
-rw-r--r--lib/rubygems/custom_require.rb69
-rw-r--r--lib/rubygems/defaults.rb51
-rw-r--r--lib/rubygems/dependency.rb77
-rw-r--r--lib/rubygems/dependency_installer.rb268
-rw-r--r--lib/rubygems/dependency_list.rb32
-rw-r--r--lib/rubygems/dependency_resolver.rb575
-rw-r--r--lib/rubygems/deprecate.rb80
-rw-r--r--lib/rubygems/doc_manager.rb243
-rw-r--r--lib/rubygems/doctor.rb125
-rw-r--r--lib/rubygems/errors.rb102
-rw-r--r--lib/rubygems/exceptions.rb32
-rw-r--r--lib/rubygems/ext.rb1
-rw-r--r--lib/rubygems/ext/builder.rb45
-rw-r--r--lib/rubygems/ext/cmake_builder.rb14
-rw-r--r--lib/rubygems/ext/configure_builder.rb4
-rw-r--r--lib/rubygems/ext/ext_conf_builder.rb52
-rw-r--r--lib/rubygems/ext/rake_builder.rb4
-rw-r--r--lib/rubygems/format.rb82
-rw-r--r--lib/rubygems/gem_openssl.rb90
-rw-r--r--lib/rubygems/gem_path_searcher.rb172
-rw-r--r--lib/rubygems/gem_runner.rb19
-rw-r--r--lib/rubygems/gemcutter_utilities.rb60
-rw-r--r--lib/rubygems/indexer.rb172
-rw-r--r--lib/rubygems/install_message.rb12
-rw-r--r--lib/rubygems/install_update_options.rb74
-rw-r--r--lib/rubygems/installer.rb479
-rw-r--r--lib/rubygems/installer_test_case.rb90
-rw-r--r--lib/rubygems/mock_gem_ui.rb17
-rw-r--r--lib/rubygems/name_tuple.rb110
-rw-r--r--lib/rubygems/old_format.rb153
-rw-r--r--lib/rubygems/package.rb568
-rw-r--r--lib/rubygems/package/digest_io.rb64
-rw-r--r--lib/rubygems/package/f_sync_dir.rb23
-rw-r--r--lib/rubygems/package/old.rb178
-rw-r--r--lib/rubygems/package/tar_header.rb73
-rw-r--r--lib/rubygems/package/tar_input.rb235
-rw-r--r--lib/rubygems/package/tar_output.rb146
-rw-r--r--lib/rubygems/package/tar_reader.rb23
-rw-r--r--lib/rubygems/package/tar_writer.rb70
-rw-r--r--lib/rubygems/package_task.rb14
-rw-r--r--lib/rubygems/path_support.rb21
-rw-r--r--lib/rubygems/platform.rb47
-rw-r--r--lib/rubygems/psych_additions.rb9
-rw-r--r--lib/rubygems/psych_tree.rb29
-rw-r--r--lib/rubygems/rdoc.rb336
-rw-r--r--lib/rubygems/remote_fetcher.rb197
-rw-r--r--lib/rubygems/request_set.rb182
-rw-r--r--lib/rubygems/require_paths_builder.rb18
-rw-r--r--lib/rubygems/requirement.rb90
-rw-r--r--lib/rubygems/security.rb862
-rw-r--r--lib/rubygems/security/policies.rb115
-rw-r--r--lib/rubygems/security/policy.rb263
-rw-r--r--lib/rubygems/security/signer.rb136
-rw-r--r--lib/rubygems/security/trust_dir.rb104
-rw-r--r--lib/rubygems/server.rb123
-rw-r--r--lib/rubygems/source.rb149
-rw-r--r--lib/rubygems/source_index.rb406
-rw-r--r--lib/rubygems/source_list.rb87
-rw-r--r--lib/rubygems/source_local.rb92
-rw-r--r--lib/rubygems/source_specific_file.rb28
-rw-r--r--lib/rubygems/spec_fetcher.rb306
-rw-r--r--lib/rubygems/specification.rb1094
-rw-r--r--lib/rubygems/ssl_certs/.document1
-rw-r--r--lib/rubygems/ssl_certs/AddTrustExternalCARoot-2048.pem25
-rw-r--r--lib/rubygems/ssl_certs/AddTrustExternalCARoot.pem32
-rw-r--r--lib/rubygems/ssl_certs/Class3PublicPrimaryCertificationAuthority.pem14
-rw-r--r--lib/rubygems/ssl_certs/DigiCertHighAssuranceEVRootCA.pem23
-rw-r--r--lib/rubygems/ssl_certs/EntrustnetSecureServerCertificationAuthority.pem28
-rw-r--r--lib/rubygems/ssl_certs/GeoTrustGlobalCA.pem20
-rw-r--r--lib/rubygems/ssl_certs/ca-bundle.pem3366
-rw-r--r--lib/rubygems/syck_hack.rb71
-rw-r--r--lib/rubygems/test_case.rb350
-rw-r--r--lib/rubygems/test_utilities.rb37
-rw-r--r--lib/rubygems/uninstaller.rb102
-rw-r--r--lib/rubygems/user_interaction.rb10
-rw-r--r--lib/rubygems/validator.rb74
-rw-r--r--lib/rubygems/version.rb29
-rw-r--r--lib/scanf.rb2
-rw-r--r--lib/securerandom.rb11
-rwxr-xr-x[-rw-r--r--]lib/set.rb676
-rw-r--r--lib/shell.rb143
-rw-r--r--lib/shell/command-processor.rb284
-rw-r--r--lib/shell/filter.rb36
-rw-r--r--lib/shell/process-controller.rb2
-rw-r--r--lib/shell/system-command.rb2
-rw-r--r--lib/shell/version.rb2
-rw-r--r--lib/shellwords.rb128
-rw-r--r--lib/sync.rb45
-rw-r--r--lib/tempfile.rb38
-rw-r--r--lib/test/unit.rb593
-rw-r--r--lib/test/unit/assertions.rb8
-rw-r--r--lib/test/unit/parallel.rb60
-rw-r--r--lib/test/unit/test-unit.gemspec14
-rw-r--r--lib/test/unit/testcase.rb9
-rw-r--r--lib/thread.rb172
-rw-r--r--lib/time.rb283
-rw-r--r--lib/timeout.rb10
-rw-r--r--lib/tmpdir.rb25
-rw-r--r--lib/tracer.rb42
-rw-r--r--lib/un.rb15
-rw-r--r--lib/uri/common.rb10
-rw-r--r--lib/uri/ftp.rb13
-rw-r--r--lib/uri/generic.rb90
-rw-r--r--lib/uri/http.rb2
-rw-r--r--lib/uri/mailto.rb2
-rw-r--r--lib/weakref.rb111
-rw-r--r--lib/webrick.rb7
-rw-r--r--lib/webrick/accesslog.rb7
-rw-r--r--lib/webrick/cgi.rb52
-rw-r--r--lib/webrick/config.rb32
-rw-r--r--lib/webrick/cookie.rb71
-rw-r--r--lib/webrick/htmlutils.rb5
-rw-r--r--lib/webrick/httpauth/authenticator.rb20
-rw-r--r--lib/webrick/httpauth/basicauth.rb2
-rw-r--r--lib/webrick/httpauth/digestauth.rb24
-rw-r--r--lib/webrick/httpproxy.rb46
-rw-r--r--lib/webrick/httprequest.rb148
-rw-r--r--lib/webrick/httpresponse.rb99
-rw-r--r--lib/webrick/https.rb24
-rw-r--r--lib/webrick/httpserver.rb16
-rw-r--r--lib/webrick/httpservlet/abstract.rb2
-rw-r--r--lib/webrick/httpservlet/cgihandler.rb19
-rw-r--r--lib/webrick/httpservlet/filehandler.rb46
-rw-r--r--lib/webrick/httpservlet/prochandler.rb13
-rw-r--r--lib/webrick/httpstatus.rb28
-rw-r--r--lib/webrick/httputils.rb143
-rw-r--r--lib/webrick/httpversion.rb28
-rw-r--r--lib/webrick/log.rb23
-rw-r--r--lib/webrick/server.rb165
-rw-r--r--lib/webrick/ssl.rb74
-rw-r--r--lib/webrick/utils.rb7
-rw-r--r--lib/webrick/version.rb4
-rw-r--r--lib/xmlrpc.rb301
-rw-r--r--lib/xmlrpc/README.rdoc300
-rw-r--r--lib/xmlrpc/README.txt31
-rw-r--r--lib/xmlrpc/base64.rb63
-rw-r--r--lib/xmlrpc/client.rb599
-rw-r--r--lib/xmlrpc/config.rb26
-rw-r--r--lib/xmlrpc/create.rb21
-rw-r--r--lib/xmlrpc/datetime.rb119
-rw-r--r--lib/xmlrpc/httpserver.rb45
-rw-r--r--lib/xmlrpc/marshal.rb18
-rw-r--r--lib/xmlrpc/parser.rb84
-rw-r--r--lib/xmlrpc/server.rb561
-rw-r--r--lib/xmlrpc/utils.rb44
-rw-r--r--lib/yaml.rb133
-rw-r--r--lib/yaml/dbm.rb14
-rw-r--r--lib/yaml/store.rb15
-rw-r--r--load.c522
-rw-r--r--main.c4
-rw-r--r--man/erb.110
-rw-r--r--man/goruby.110
-rw-r--r--man/irb.18
-rw-r--r--man/rake.12
-rw-r--r--man/ri.111
-rw-r--r--man/ruby.137
-rw-r--r--marshal.c406
-rw-r--r--math.c6
-rw-r--r--method.h52
-rw-r--r--misc/inf-ruby.el2
-rw-r--r--misc/ruby-additional.el100
-rw-r--r--misc/ruby-electric.el24
-rw-r--r--misc/ruby-mode.el50
-rw-r--r--missing/alloca.c6
-rw-r--r--missing/crt_externs.h8
-rw-r--r--missing/flock.c3
-rw-r--r--missing/setproctitle.c10
-rw-r--r--nacl/GNUmakefile.in87
-rw-r--r--nacl/README.nacl34
-rw-r--r--nacl/create_nmf.rb70
-rw-r--r--nacl/dirent.h15
-rw-r--r--nacl/example.html150
-rw-r--r--nacl/ioctl.h7
-rw-r--r--nacl/nacl-config.rb61
-rw-r--r--nacl/package.rb109
-rw-r--r--nacl/pepper_main.c870
-rw-r--r--nacl/resource.h8
-rw-r--r--nacl/select.h7
-rw-r--r--nacl/signal.h6
-rw-r--r--nacl/stat.h10
-rw-r--r--nacl/unistd.h9
-rw-r--r--nacl/utime.h11
-rw-r--r--node.c66
-rw-r--r--node.h52
-rw-r--r--numeric.c718
-rw-r--r--object.c847
-rw-r--r--pack.c186
-rw-r--r--parse.y2475
-rw-r--r--prelude.rb16
-rw-r--r--probes.d211
-rw-r--r--probes_helper.h67
-rw-r--r--proc.c577
-rw-r--r--process.c2587
-rw-r--r--random.c318
-rw-r--r--range.c489
-rw-r--r--rational.c580
-rw-r--r--re.c189
-rw-r--r--regcomp.c605
-rw-r--r--regenc.c32
-rw-r--r--regenc.h14
-rw-r--r--regerror.c25
-rw-r--r--regexec.c853
-rw-r--r--regint.h115
-rw-r--r--regparse.c1140
-rw-r--r--regparse.h9
-rw-r--r--regsyntax.c84
-rw-r--r--ruby.c255
-rw-r--r--ruby_atomic.h170
-rw-r--r--safe.c2
-rw-r--r--sample/README2
-rw-r--r--sample/coverage.rb2
-rw-r--r--sample/drb/README.rd.ja48
-rw-r--r--sample/drb/dhasenc.rb6
-rw-r--r--sample/drb/gw_cu.rb2
-rw-r--r--sample/logger/app.rb2
-rw-r--r--[-rwxr-xr-x]sample/mine.rb40
-rw-r--r--[-rwxr-xr-x]sample/test.rb101
-rw-r--r--signal.c374
-rw-r--r--sparc.c3
-rw-r--r--spec/default.mspec10
-rw-r--r--sprintf.c104
-rw-r--r--st.c715
-rw-r--r--strftime.c165
-rw-r--r--string.c1277
-rw-r--r--struct.c251
-rw-r--r--template/Doxyfile.tmpl20
-rw-r--r--template/encdb.h.tmpl2
-rwxr-xr-x[-rw-r--r--]template/fake.rb.in6
-rw-r--r--template/id.c.tmpl27
-rw-r--r--template/id.h.tmpl141
-rw-r--r--template/ruby.pc.in21
-rw-r--r--template/yarvarch.ja402
-rw-r--r--test/-ext-/debug/test_debug.rb58
-rw-r--r--test/-ext-/exception/test_enc_raise.rb15
-rw-r--r--test/-ext-/exception/test_ensured.rb32
-rw-r--r--test/-ext-/iter/test_iter_break.rb12
-rw-r--r--test/-ext-/marshal/test_usrmarshal.rb34
-rw-r--r--test/-ext-/method/test_arity.rb37
-rw-r--r--test/-ext-/num2int/test_num2int.rb227
-rw-r--r--test/-ext-/old_thread_select/test_old_thread_select.rb3
-rw-r--r--test/-ext-/path_to_class/test_path_to_class.rb12
-rw-r--r--test/-ext-/st/test_numhash.rb28
-rw-r--r--test/-ext-/st/test_update.rb50
-rw-r--r--test/-ext-/string/test_enc_str_buf_cat.rb15
-rw-r--r--test/-ext-/string/test_modify_expand.rb20
-rw-r--r--test/-ext-/string/test_qsort.rb19
-rw-r--r--test/-ext-/struct/test_member.rb16
-rw-r--r--test/-ext-/symbol/test_inadvertent_creation.rb183
-rw-r--r--test/-ext-/symbol/test_type.rb114
-rw-r--r--test/-ext-/test_bug-5832.rb21
-rw-r--r--test/-ext-/test_printf.rb61
-rw-r--r--test/-ext-/typeddata/test_typeddata.rb21
-rw-r--r--test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb3
-rw-r--r--test/base64/test_base64.rb1
-rw-r--r--test/benchmark/test_benchmark.rb102
-rw-r--r--test/bigdecimal/test_bigdecimal.rb207
-rw-r--r--test/bigdecimal/test_bigdecimal_util.rb2
-rw-r--r--test/cgi/test_cgi_core.rb18
-rw-r--r--test/cgi/test_cgi_header.rb48
-rw-r--r--test/cgi/test_cgi_modruby.rb7
-rw-r--r--test/cgi/test_cgi_multipart.rb53
-rw-r--r--test/cgi/test_cgi_session.rb2
-rw-r--r--test/cgi/test_cgi_tag_helper.rb13
-rw-r--r--test/cgi/test_cgi_util.rb30
-rw-r--r--test/coverage/test_coverage.rb2
-rwxr-xr-xtest/csv/test_encodings.rb10
-rwxr-xr-xtest/csv/test_features.rb50
-rwxr-xr-xtest/csv/test_row.rb33
-rwxr-xr-xtest/csv/test_serialization.rb158
-rw-r--r--test/csv/ts_all.rb1
-rw-r--r--test/date/test_date_marshal.rb12
-rw-r--r--test/date/test_date_parse.rb782
-rw-r--r--test/date/test_date_strftime.rb23
-rw-r--r--test/date/test_date_strptime.rb172
-rw-r--r--test/date/test_switch_hitter.rb91
-rw-r--r--test/dbm/test_dbm.rb58
-rwxr-xr-xtest/digest/test_digest.rb15
-rw-r--r--test/digest/test_digest_extend.rb1
-rw-r--r--test/dl/test_base.rb9
-rw-r--r--test/dl/test_c_struct_entry.rb55
-rw-r--r--test/dl/test_c_union_entity.rb31
-rw-r--r--test/dl/test_callback.rb9
-rw-r--r--test/dl/test_cfunc.rb2
-rw-r--r--test/dl/test_cparser.rb24
-rw-r--r--test/dl/test_cptr.rb4
-rw-r--r--test/dl/test_dl2.rb16
-rw-r--r--test/dl/test_func.rb93
-rw-r--r--test/dl/test_handle.rb15
-rw-r--r--test/dl/test_import.rb9
-rw-r--r--test/drb/drbtest.rb36
-rw-r--r--test/drb/test_drb.rb2
-rw-r--r--test/drb/ut_array_drbssl.rb11
-rw-r--r--test/drb/ut_drb.rb3
-rw-r--r--test/drb/ut_drb_drbssl.rb13
-rw-r--r--test/dtrace/dummy.rb1
-rw-r--r--test/dtrace/helper.rb40
-rw-r--r--test/dtrace/test_array_create.rb35
-rw-r--r--test/dtrace/test_cmethod.rb49
-rw-r--r--test/dtrace/test_function_entry.rb87
-rw-r--r--test/dtrace/test_gc.rb26
-rw-r--r--test/dtrace/test_hash_create.rb52
-rw-r--r--test/dtrace/test_load.rb52
-rw-r--r--test/dtrace/test_object_create_start.rb35
-rw-r--r--test/dtrace/test_raise.rb29
-rw-r--r--test/dtrace/test_require.rb34
-rw-r--r--test/dtrace/test_singleton_function.rb55
-rw-r--r--test/dtrace/test_string.rb27
-rw-r--r--test/erb/test_erb.rb62
-rw-r--r--test/etc/test_etc.rb21
-rw-r--r--test/fiddle/helper.rb11
-rw-r--r--test/fiddle/test_c_struct_entry.rb76
-rw-r--r--test/fiddle/test_c_union_entity.rb34
-rw-r--r--test/fiddle/test_closure.rb4
-rw-r--r--test/fiddle/test_cparser.rb35
-rw-r--r--test/fiddle/test_fiddle.rb16
-rw-r--r--test/fiddle/test_func.rb92
-rw-r--r--test/fiddle/test_function.rb5
-rw-r--r--test/fiddle/test_handle.rb196
-rw-r--r--test/fiddle/test_import.rb149
-rw-r--r--test/fiddle/test_pointer.rb238
-rw-r--r--test/fileutils/fileasserts.rb79
-rw-r--r--test/fileutils/test_dryrun.rb20
-rw-r--r--test/fileutils/test_fileutils.rb101
-rw-r--r--test/fileutils/test_nowrite.rb21
-rw-r--r--test/fileutils/test_verbose.rb18
-rw-r--r--test/fileutils/visibility_tests.rb41
-rw-r--r--test/gdbm/test_gdbm.rb10
-rw-r--r--test/iconv/test_basic.rb59
-rw-r--r--test/iconv/test_option.rb43
-rw-r--r--test/iconv/test_partial.rb41
-rw-r--r--test/iconv/utils.rb29
-rw-r--r--test/io/console/test_io_console.rb57
-rw-r--r--test/io/wait/test_io_wait.rb36
-rw-r--r--test/json/fixtures/fail18.json2
-rwxr-xr-xtest/json/test_json.rb127
-rwxr-xr-xtest/json/test_json_addition.rb79
-rw-r--r--test/json/test_json_encoding.rb4
-rwxr-xr-xtest/json/test_json_fixtures.rb4
-rwxr-xr-xtest/json/test_json_generate.rb172
-rw-r--r--test/json/test_json_generic_object.rb60
-rw-r--r--test/json/test_json_string_matching.rb15
-rwxr-xr-xtest/json/test_json_unicode.rb4
-rw-r--r--test/logger/test_logger.rb13
-rw-r--r--test/matrix/test_vector.rb15
-rw-r--r--test/minitest/metametameta.rb74
-rw-r--r--test/minitest/test_minitest_benchmark.rb2
-rw-r--r--test/minitest/test_minitest_mock.rb239
-rw-r--r--test/minitest/test_minitest_spec.rb581
-rw-r--r--test/minitest/test_minitest_unit.rb887
-rw-r--r--test/misc/test_ruby_mode.rb41
-rw-r--r--test/mkmf/base.rb28
-rw-r--r--test/mkmf/test_constant.rb37
-rw-r--r--test/mkmf/test_convertible.rb2
-rw-r--r--test/mkmf/test_flags.rb21
-rw-r--r--test/mkmf/test_framework.rb46
-rw-r--r--test/mkmf/test_have_func.rb14
-rw-r--r--test/mkmf/test_have_library.rb53
-rw-r--r--test/mkmf/test_have_macro.rb35
-rw-r--r--test/mkmf/test_libs.rb86
-rw-r--r--test/mkmf/test_signedness.rb2
-rw-r--r--test/mkmf/test_sizeof.rb2
-rw-r--r--test/net/ftp/test_buffered_socket.rb40
-rw-r--r--test/net/ftp/test_ftp.rb813
-rw-r--r--test/net/http/test_http.rb423
-rw-r--r--test/net/http/test_http_request.rb79
-rw-r--r--test/net/http/test_httpheader.rb27
-rw-r--r--test/net/http/test_httpresponse.rb285
-rw-r--r--test/net/http/test_httpresponses.rb24
-rw-r--r--test/net/http/test_https.rb37
-rw-r--r--test/net/http/test_https_proxy.rb6
-rw-r--r--test/net/http/utils.rb7
-rw-r--r--test/net/imap/Makefile15
-rw-r--r--test/net/imap/cacert.pem84
-rw-r--r--test/net/imap/server.crt65
-rw-r--r--test/net/imap/test_imap.rb75
-rw-r--r--test/net/imap/test_imap_response_parser.rb146
-rw-r--r--test/net/protocol/test_protocol.rb28
-rw-r--r--test/net/smtp/test_smtp.rb13
-rw-r--r--test/objspace/test_objspace.rb58
-rw-r--r--test/open-uri/test_open-uri.rb83
-rw-r--r--test/open-uri/test_ssl.rb25
-rw-r--r--test/openssl/test_asn1.rb22
-rw-r--r--test/openssl/test_bn.rb4
-rw-r--r--test/openssl/test_buffering.rb1
-rw-r--r--test/openssl/test_cipher.rb157
-rw-r--r--test/openssl/test_config.rb13
-rw-r--r--test/openssl/test_digest.rb8
-rw-r--r--test/openssl/test_engine.rb70
-rw-r--r--test/openssl/test_fips.rb14
-rw-r--r--test/openssl/test_ns_spki.rb1
-rw-r--r--test/openssl/test_pair.rb82
-rw-r--r--test/openssl/test_pkcs12.rb6
-rw-r--r--test/openssl/test_pkcs5.rb97
-rw-r--r--test/openssl/test_pkcs7.rb2
-rw-r--r--test/openssl/test_pkey_dh.rb22
-rw-r--r--test/openssl/test_pkey_dsa.rb16
-rw-r--r--test/openssl/test_pkey_ec.rb59
-rw-r--r--test/openssl/test_pkey_rsa.rb69
-rw-r--r--test/openssl/test_ssl.rb646
-rw-r--r--test/openssl/test_ssl_session.rb52
-rw-r--r--test/openssl/test_x509cert.rb19
-rw-r--r--test/openssl/test_x509crl.rb5
-rw-r--r--test/openssl/test_x509name.rb3
-rw-r--r--test/openssl/test_x509req.rb4
-rw-r--r--test/openssl/utils.rb26
-rw-r--r--test/optparse/test_acceptable.rb195
-rw-r--r--test/optparse/test_autoconf.rb63
-rw-r--r--test/optparse/test_summary.rb8
-rw-r--r--test/ostruct/test_ostruct.rb53
-rw-r--r--test/pathname/test_pathname.rb29
-rw-r--r--test/psych/handlers/test_recorder.rb25
-rw-r--r--test/psych/helper.rb9
-rw-r--r--test/psych/test_alias_and_anchor.rb10
-rw-r--r--test/psych/test_deprecated.rb2
-rw-r--r--test/psych/test_engine_manager.rb10
-rw-r--r--test/psych/test_exception.rb22
-rw-r--r--test/psych/test_merge_keys.rb51
-rw-r--r--test/psych/test_numeric.rb20
-rw-r--r--test/psych/test_object_references.rb6
-rw-r--r--test/psych/test_parser.rb7
-rw-r--r--test/psych/test_psych.rb3
-rw-r--r--test/psych/test_scalar_scanner.rb15
-rw-r--r--test/psych/test_string.rb27
-rw-r--r--test/psych/test_struct.rb4
-rw-r--r--test/psych/test_yaml.rb22
-rw-r--r--test/psych/test_yamldbm.rb197
-rw-r--r--test/psych/visitors/test_to_ruby.rb1
-rw-r--r--test/psych/visitors/test_yaml_tree.rb18
-rw-r--r--test/rake/helper.rb74
-rw-r--r--test/rake/test_private_reader.rb42
-rw-r--r--test/rake/test_rake_application.rb44
-rw-r--r--test/rake/test_rake_application_options.rb133
-rw-r--r--test/rake/test_rake_backtrace.rb89
-rw-r--r--test/rake/test_rake_directory_task.rb21
-rw-r--r--test/rake/test_rake_file_task.rb22
-rw-r--r--test/rake/test_rake_functional.rb60
-rw-r--r--test/rake/test_rake_multi_task.rb8
-rw-r--r--test/rake/test_rake_rake_test_loader.rb2
-rw-r--r--test/rake/test_rake_reduce_compat.rb65
-rw-r--r--test/rake/test_rake_task.rb65
-rw-r--r--test/rake/test_rake_task_with_arguments.rb20
-rw-r--r--test/rake/test_rake_thread_pool.rb123
-rw-r--r--test/rake/test_rake_top_level_functions.rb2
-rw-r--r--test/rake/test_thread_history_display.rb91
-rw-r--r--test/rake/test_trace_output.rb43
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Amps and angle encoding.text21
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Auto links.text13
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Backslash escapes.text120
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Blockquotes with code blocks.text11
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Code Blocks.text14
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Code Spans.text6
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Hard-wrapped paragraphs with list-like lines.text8
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Horizontal rules.text67
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Inline HTML (Advanced).text15
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Inline HTML (Simple).text69
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Inline HTML comments.text13
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Links, inline style.text12
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Links, reference style.text71
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Links, shortcut references.text20
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Literal quotes in titles.text7
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Markdown Documentation - Basics.text306
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Markdown Documentation - Syntax.text888
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Nested blockquotes.text5
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Ordered and unordered lists.text131
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Strong and em together.text7
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Tabs.text21
-rw-r--r--test/rdoc/MarkdownTest_1.0.3/Tidyness.text5
-rw-r--r--test/rdoc/test.ja.largedoc3
-rw-r--r--test/rdoc/test_attribute_manager.rb66
-rw-r--r--test/rdoc/test_rdoc_any_method.rb157
-rw-r--r--test/rdoc/test_rdoc_attr.rb89
-rw-r--r--test/rdoc/test_rdoc_class_module.rb889
-rw-r--r--test/rdoc/test_rdoc_code_object.rb35
-rw-r--r--test/rdoc/test_rdoc_comment.rb504
-rw-r--r--test/rdoc/test_rdoc_constant.rb136
-rw-r--r--test/rdoc/test_rdoc_context.rb255
-rw-r--r--test/rdoc/test_rdoc_context_section.rb125
-rw-r--r--test/rdoc/test_rdoc_cross_reference.rb43
-rw-r--r--test/rdoc/test_rdoc_encoding.rb31
-rw-r--r--test/rdoc/test_rdoc_extend.rb94
-rw-r--r--test/rdoc/test_rdoc_generator_darkfish.rb122
-rw-r--r--test/rdoc/test_rdoc_generator_json_index.rb275
-rw-r--r--test/rdoc/test_rdoc_generator_markup.rb59
-rw-r--r--test/rdoc/test_rdoc_generator_ri.rb39
-rw-r--r--test/rdoc/test_rdoc_include.rb12
-rw-r--r--test/rdoc/test_rdoc_markdown.rb977
-rw-r--r--test/rdoc/test_rdoc_markdown_test.rb1891
-rw-r--r--test/rdoc/test_rdoc_markup.rb16
-rw-r--r--test/rdoc/test_rdoc_markup_attribute_manager.rb17
-rw-r--r--test/rdoc/test_rdoc_markup_attributes.rb39
-rw-r--r--test/rdoc/test_rdoc_markup_document.rb74
-rw-r--r--test/rdoc/test_rdoc_markup_formatter.rb120
-rw-r--r--test/rdoc/test_rdoc_markup_hard_break.rb31
-rw-r--r--test/rdoc/test_rdoc_markup_heading.rb20
-rw-r--r--test/rdoc/test_rdoc_markup_include.rb19
-rw-r--r--test/rdoc/test_rdoc_markup_indented_paragraph.rb23
-rw-r--r--test/rdoc/test_rdoc_markup_paragraph.rb23
-rw-r--r--test/rdoc/test_rdoc_markup_parser.rb385
-rw-r--r--test/rdoc/test_rdoc_markup_pre_process.rb69
-rw-r--r--test/rdoc/test_rdoc_markup_raw.rb14
-rw-r--r--test/rdoc/test_rdoc_markup_to_ansi.rb49
-rw-r--r--test/rdoc/test_rdoc_markup_to_bs.rb33
-rw-r--r--test/rdoc/test_rdoc_markup_to_html.rb314
-rw-r--r--test/rdoc/test_rdoc_markup_to_html_crossref.rb142
-rw-r--r--test/rdoc/test_rdoc_markup_to_html_snippet.rb710
-rw-r--r--test/rdoc/test_rdoc_markup_to_joined_paragraph.rb32
-rw-r--r--test/rdoc/test_rdoc_markup_to_label.rb112
-rw-r--r--test/rdoc/test_rdoc_markup_to_markdown.rb383
-rw-r--r--test/rdoc/test_rdoc_markup_to_rdoc.rb48
-rw-r--r--test/rdoc/test_rdoc_markup_to_table_of_contents.rb126
-rw-r--r--test/rdoc/test_rdoc_markup_to_tt_only.rb25
-rw-r--r--test/rdoc/test_rdoc_markup_verbatim.rb29
-rw-r--r--test/rdoc/test_rdoc_method_attr.rb35
-rw-r--r--test/rdoc/test_rdoc_normal_class.rb29
-rw-r--r--test/rdoc/test_rdoc_normal_module.rb2
-rw-r--r--test/rdoc/test_rdoc_options.rb293
-rw-r--r--test/rdoc/test_rdoc_parser.rb222
-rw-r--r--test/rdoc/test_rdoc_parser_c.rb565
-rw-r--r--test/rdoc/test_rdoc_parser_changelog.rb322
-rw-r--r--test/rdoc/test_rdoc_parser_markdown.rb61
-rw-r--r--test/rdoc/test_rdoc_parser_rd.rb62
-rw-r--r--test/rdoc/test_rdoc_parser_ruby.rb1312
-rw-r--r--test/rdoc/test_rdoc_parser_simple.rb54
-rw-r--r--test/rdoc/test_rdoc_rd.rb30
-rw-r--r--test/rdoc/test_rdoc_rd_block_parser.rb541
-rw-r--r--test/rdoc/test_rdoc_rd_inline.rb63
-rw-r--r--test/rdoc/test_rdoc_rd_inline_parser.rb178
-rw-r--r--test/rdoc/test_rdoc_rdoc.rb268
-rw-r--r--test/rdoc/test_rdoc_ri_driver.rb552
-rw-r--r--test/rdoc/test_rdoc_ri_paths.rb150
-rw-r--r--test/rdoc/test_rdoc_ri_store.rb473
-rw-r--r--test/rdoc/test_rdoc_ruby_lex.rb278
-rw-r--r--test/rdoc/test_rdoc_ruby_token.rb19
-rw-r--r--test/rdoc/test_rdoc_rubygems_hook.rb133
-rw-r--r--test/rdoc/test_rdoc_servlet.rb467
-rw-r--r--test/rdoc/test_rdoc_stats.rb352
-rw-r--r--test/rdoc/test_rdoc_store.rb1001
-rw-r--r--test/rdoc/test_rdoc_task.rb21
-rw-r--r--test/rdoc/test_rdoc_text.rb198
-rw-r--r--test/rdoc/test_rdoc_token_stream.rb42
-rw-r--r--test/rdoc/test_rdoc_tom_doc.rb492
-rw-r--r--test/rdoc/test_rdoc_top_level.rb245
-rw-r--r--test/rdoc/xref_test_case.rb24
-rw-r--r--test/readline/test_readline.rb146
-rw-r--r--test/readline/test_readline_history.rb8
-rw-r--r--test/resolv/test_addr.rb13
-rw-r--r--test/resolv/test_dns.rb70
-rw-r--r--test/resolv/test_resource.rb21
-rw-r--r--test/rexml/data/testsrc.xml128
-rw-r--r--test/rexml/data/ticket_61.xml8
-rw-r--r--test/rexml/test_comment.rb25
-rw-r--r--test/rexml/test_contrib.rb8
-rw-r--r--test/rexml/test_core.rb12
-rw-r--r--test/rexml/test_document.rb287
-rw-r--r--test/rexml/test_encoding.rb5
-rw-r--r--test/rexml/test_entity.rb34
-rw-r--r--test/rexml/test_lightparser.rb2
-rw-r--r--test/rexml/test_order.rb7
-rw-r--r--test/rexml/test_pullparser.rb4
-rw-r--r--test/rexml/test_xml_declaration_parent_child.rb (renamed from test/rexml/test_xml_declaration.rb)7
-rw-r--r--test/rexml/test_xpath.rb8
-rw-r--r--test/rexml/test_xpathtext.rb2
-rw-r--r--test/ripper/dummyparser.rb2
-rw-r--r--test/ripper/test_files.rb23
-rw-r--r--test/ripper/test_parser_events.rb74
-rw-r--r--test/ripper/test_ripper.rb2
-rw-r--r--test/ripper/test_scanner_events.rb160
-rw-r--r--test/rss/rss-assertions.rb2
-rw-r--r--test/rss/rss-testcase.rb2
-rw-r--r--test/rss/test_1.0.rb54
-rw-r--r--test/rss/test_2.0.rb54
-rw-r--r--test/rss/test_atom.rb24
-rw-r--r--test/rss/test_dublincore.rb22
-rw-r--r--test/rss/test_maker_2.0.rb8
-rw-r--r--test/rss/test_parser.rb10
-rw-r--r--test/ruby/enc/test_euc_jp.rb2
-rw-r--r--test/ruby/enc/test_euc_kr.rb8
-rw-r--r--test/ruby/enc/test_shift_jis.rb2
-rw-r--r--test/ruby/enc/test_utf16.rb2
-rw-r--r--test/ruby/enc/test_utf32.rb2
-rw-r--r--test/ruby/envutil.rb303
-rw-r--r--test/ruby/lbtest.rb9
-rw-r--r--test/ruby/marshaltestlib.rb47
-rw-r--r--test/ruby/memory_status.rb53
-rw-r--r--test/ruby/test_alias.rb88
-rw-r--r--test/ruby/test_argf.rb82
-rw-r--r--test/ruby/test_arity.rb71
-rw-r--r--test/ruby/test_array.rb254
-rw-r--r--test/ruby/test_autoload.rb126
-rw-r--r--test/ruby/test_backtrace.rb187
-rw-r--r--test/ruby/test_basicinstructions.rb19
-rw-r--r--test/ruby/test_beginendblock.rb41
-rw-r--r--test/ruby/test_bignum.rb206
-rw-r--r--test/ruby/test_call.rb16
-rw-r--r--test/ruby/test_class.rb118
-rw-r--r--test/ruby/test_comparable.rb14
-rw-r--r--test/ruby/test_complex.rb20
-rw-r--r--test/ruby/test_const.rb18
-rw-r--r--test/ruby/test_continuation.rb19
-rw-r--r--test/ruby/test_defined.rb66
-rw-r--r--test/ruby/test_dir.rb29
-rw-r--r--test/ruby/test_dir_m17n.rb7
-rw-r--r--test/ruby/test_econv.rb36
-rw-r--r--test/ruby/test_encoding.rb8
-rw-r--r--test/ruby/test_enum.rb37
-rw-r--r--test/ruby/test_enumerator.rb219
-rw-r--r--test/ruby/test_env.rb134
-rw-r--r--test/ruby/test_eval.rb226
-rw-r--r--test/ruby/test_exception.rb252
-rw-r--r--test/ruby/test_fiber.rb141
-rw-r--r--test/ruby/test_file.rb99
-rw-r--r--test/ruby/test_file_exhaustive.rb194
-rw-r--r--test/ruby/test_fixnum.rb69
-rw-r--r--test/ruby/test_flip.rb42
-rw-r--r--test/ruby/test_float.rb118
-rw-r--r--test/ruby/test_fnmatch.rb26
-rw-r--r--test/ruby/test_gc.rb100
-rw-r--r--test/ruby/test_hash.rb299
-rw-r--r--test/ruby/test_ifunless.rb14
-rw-r--r--test/ruby/test_integer.rb43
-rw-r--r--test/ruby/test_io.rb1487
-rw-r--r--test/ruby/test_io_m17n.rb146
-rw-r--r--test/ruby/test_iseq.rb95
-rw-r--r--test/ruby/test_iterator.rb34
-rw-r--r--test/ruby/test_keyword.rb377
-rw-r--r--test/ruby/test_lambda.rb43
-rw-r--r--test/ruby/test_lazy_enumerator.rb487
-rw-r--r--test/ruby/test_literal.rb154
-rw-r--r--test/ruby/test_m17n.rb152
-rw-r--r--test/ruby/test_m17n_comb.rb95
-rw-r--r--test/ruby/test_marshal.rb103
-rw-r--r--test/ruby/test_method.rb150
-rw-r--r--test/ruby/test_module.rb699
-rw-r--r--test/ruby/test_not.rb12
-rw-r--r--test/ruby/test_numeric.rb119
-rw-r--r--test/ruby/test_object.rb243
-rw-r--r--test/ruby/test_objectspace.rb26
-rw-r--r--test/ruby/test_optimization.rb40
-rw-r--r--test/ruby/test_pack.rb75
-rw-r--r--test/ruby/test_parse.rb163
-rw-r--r--test/ruby/test_pipe.rb13
-rw-r--r--test/ruby/test_proc.rb446
-rw-r--r--test/ruby/test_process.rb345
-rw-r--r--test/ruby/test_rand.rb59
-rw-r--r--test/ruby/test_range.rb200
-rw-r--r--test/ruby/test_rational.rb36
-rw-r--r--test/ruby/test_refinement.rb1207
-rw-r--r--test/ruby/test_regexp.rb149
-rw-r--r--test/ruby/test_require.rb317
-rw-r--r--test/ruby/test_rubyoptions.rb109
-rw-r--r--test/ruby/test_settracefunc.rb942
-rw-r--r--test/ruby/test_signal.rb57
-rw-r--r--test/ruby/test_sleep.rb2
-rw-r--r--test/ruby/test_sprintf.rb73
-rw-r--r--test/ruby/test_sprintf_comb.rb46
-rw-r--r--test/ruby/test_string.rb246
-rw-r--r--test/ruby/test_stringchar.rb32
-rw-r--r--test/ruby/test_struct.rb181
-rw-r--r--test/ruby/test_super.rb332
-rw-r--r--test/ruby/test_symbol.rb53
-rw-r--r--test/ruby/test_syntax.rb345
-rw-r--r--test/ruby/test_system.rb64
-rw-r--r--test/ruby/test_thread.rb747
-rw-r--r--test/ruby/test_threadgroup.rb55
-rw-r--r--test/ruby/test_time.rb518
-rw-r--r--test/ruby/test_time_tz.rb176
-rw-r--r--test/ruby/test_transcode.rb95
-rw-r--r--test/ruby/test_unicode_escape.rb4
-rw-r--r--test/ruby/test_variable.rb6
-rw-r--r--test/ruby/test_whileuntil.rb3
-rw-r--r--test/ruby/test_yield.rb11
-rw-r--r--test/rubygems/alternate_cert.pem18
-rw-r--r--test/rubygems/alternate_cert_32.pem18
-rw-r--r--test/rubygems/alternate_key.pem27
-rw-r--r--test/rubygems/bad_rake.rb1
-rw-r--r--test/rubygems/child_cert.pem18
-rw-r--r--test/rubygems/child_cert_32.pem18
-rw-r--r--test/rubygems/child_key.pem27
-rw-r--r--test/rubygems/data/null-type.gemspec.rzbin554 -> 553 bytes-rw-r--r--test/rubygems/expired_cert.pem18
-rw-r--r--test/rubygems/future_cert.pem18
-rw-r--r--test/rubygems/future_cert_32.pem18
-rw-r--r--test/rubygems/good_rake.rb1
-rw-r--r--test/rubygems/grandchild_cert.pem18
-rw-r--r--test/rubygems/grandchild_cert_32.pem18
-rw-r--r--test/rubygems/grandchild_key.pem27
-rw-r--r--test/rubygems/invalid_issuer_cert.pem18
-rw-r--r--test/rubygems/invalid_issuer_cert_32.pem18
-rw-r--r--test/rubygems/invalid_key.pem27
-rw-r--r--test/rubygems/invalid_signer_cert.pem18
-rw-r--r--test/rubygems/invalid_signer_cert_32.pem18
-rw-r--r--test/rubygems/invalidchild_cert.pem18
-rw-r--r--test/rubygems/invalidchild_cert_32.pem18
-rw-r--r--test/rubygems/invalidchild_key.pem27
-rw-r--r--test/rubygems/plugin/exception/rubygems_plugin.rb2
-rw-r--r--test/rubygems/plugin/standarderror/rubygems_plugin.rb2
-rw-r--r--test/rubygems/private_key.pem50
-rw-r--r--test/rubygems/public_cert.pem34
-rw-r--r--test/rubygems/public_cert_32.pem18
-rw-r--r--test/rubygems/public_key.pem9
-rw-r--r--test/rubygems/rubygems/commands/crash_command.rb2
-rw-r--r--test/rubygems/test_bundled_ca.rb59
-rw-r--r--test/rubygems/test_config.rb10
-rw-r--r--test/rubygems/test_deprecate.rb76
-rw-r--r--test/rubygems/test_gem.rb528
-rw-r--r--test/rubygems/test_gem_available_set.rb106
-rw-r--r--test/rubygems/test_gem_builder.rb44
-rw-r--r--test/rubygems/test_gem_command.rb10
-rw-r--r--test/rubygems/test_gem_command_manager.rb64
-rw-r--r--test/rubygems/test_gem_commands_build_command.rb30
-rw-r--r--test/rubygems/test_gem_commands_cert_command.rb488
-rw-r--r--test/rubygems/test_gem_commands_check_command.rb50
-rw-r--r--test/rubygems/test_gem_commands_cleanup_command.rb65
-rw-r--r--test/rubygems/test_gem_commands_contents_command.rb23
-rw-r--r--test/rubygems/test_gem_commands_dependency_command.rb5
-rw-r--r--test/rubygems/test_gem_commands_fetch_command.rb69
-rw-r--r--test/rubygems/test_gem_commands_generate_index_command.rb85
-rw-r--r--test/rubygems/test_gem_commands_help_command.rb8
-rw-r--r--test/rubygems/test_gem_commands_install_command.rb696
-rw-r--r--test/rubygems/test_gem_commands_mirror.rb32
-rw-r--r--test/rubygems/test_gem_commands_owner_command.rb24
-rw-r--r--test/rubygems/test_gem_commands_pristine_command.rb103
-rw-r--r--test/rubygems/test_gem_commands_push_command.rb131
-rw-r--r--test/rubygems/test_gem_commands_query_command.rb133
-rw-r--r--test/rubygems/test_gem_commands_search_command.rb17
-rw-r--r--test/rubygems/test_gem_commands_setup_command.rb129
-rw-r--r--test/rubygems/test_gem_commands_sources_command.rb66
-rw-r--r--test/rubygems/test_gem_commands_specification_command.rb34
-rw-r--r--test/rubygems/test_gem_commands_uninstall_command.rb104
-rw-r--r--test/rubygems/test_gem_commands_unpack_command.rb6
-rw-r--r--test/rubygems/test_gem_commands_update_command.rb111
-rw-r--r--test/rubygems/test_gem_commands_which_command.rb8
-rw-r--r--test/rubygems/test_gem_commands_yank_command.rb97
-rw-r--r--test/rubygems/test_gem_config_file.rb206
-rw-r--r--test/rubygems/test_gem_dependency.rb46
-rw-r--r--test/rubygems/test_gem_dependency_installer.rb390
-rw-r--r--test/rubygems/test_gem_dependency_list.rb9
-rw-r--r--test/rubygems/test_gem_dependency_resolver.rb327
-rw-r--r--test/rubygems/test_gem_dependency_resolver_api_set.rb80
-rw-r--r--test/rubygems/test_gem_doc_manager.rb32
-rw-r--r--test/rubygems/test_gem_doctor.rb168
-rw-r--r--test/rubygems/test_gem_ext_builder.rb60
-rw-r--r--test/rubygems/test_gem_ext_cmake_builder.rb90
-rw-r--r--test/rubygems/test_gem_ext_configure_builder.rb8
-rw-r--r--test/rubygems/test_gem_ext_ext_conf_builder.rb76
-rw-r--r--test/rubygems/test_gem_ext_rake_builder.rb26
-rw-r--r--test/rubygems/test_gem_format.rb88
-rw-r--r--test/rubygems/test_gem_gem_path_searcher.rb94
-rw-r--r--test/rubygems/test_gem_gem_runner.rb32
-rw-r--r--test/rubygems/test_gem_gemcutter_utilities.rb82
-rw-r--r--test/rubygems/test_gem_indexer.rb289
-rw-r--r--test/rubygems/test_gem_install_update_options.rb86
-rw-r--r--test/rubygems/test_gem_installer.rb744
-rw-r--r--test/rubygems/test_gem_local_remote_options.rb10
-rw-r--r--test/rubygems/test_gem_name_tuple.rb15
-rw-r--r--test/rubygems/test_gem_package.rb636
-rw-r--r--test/rubygems/test_gem_package_old.rb81
-rw-r--r--test/rubygems/test_gem_package_tar_input.rb129
-rw-r--r--test/rubygems/test_gem_package_tar_output.rb101
-rw-r--r--test/rubygems/test_gem_package_tar_reader.rb32
-rw-r--r--test/rubygems/test_gem_package_tar_writer.rb85
-rw-r--r--test/rubygems/test_gem_package_task.rb25
-rw-r--r--test/rubygems/test_gem_path_support.rb34
-rw-r--r--test/rubygems/test_gem_platform.rb86
-rw-r--r--test/rubygems/test_gem_rdoc.rb269
-rw-r--r--test/rubygems/test_gem_remote_fetcher.rb266
-rw-r--r--test/rubygems/test_gem_request_set.rb70
-rw-r--r--test/rubygems/test_gem_requirement.rb75
-rw-r--r--test/rubygems/test_gem_security.rb236
-rw-r--r--test/rubygems/test_gem_security_policy.rb488
-rw-r--r--test/rubygems/test_gem_security_signer.rb190
-rw-r--r--test/rubygems/test_gem_security_trust_dir.rb94
-rw-r--r--test/rubygems/test_gem_server.rb177
-rw-r--r--test/rubygems/test_gem_silent_ui.rb4
-rw-r--r--test/rubygems/test_gem_source.rb198
-rw-r--r--test/rubygems/test_gem_source_index.rb250
-rw-r--r--test/rubygems/test_gem_source_list.rb87
-rw-r--r--test/rubygems/test_gem_source_local.rb83
-rw-r--r--test/rubygems/test_gem_source_specific_file.rb33
-rw-r--r--test/rubygems/test_gem_spec_fetcher.rb362
-rw-r--r--test/rubygems/test_gem_specification.rb386
-rw-r--r--test/rubygems/test_gem_uninstaller.rb194
-rw-r--r--test/rubygems/test_gem_validator.rb55
-rw-r--r--test/rubygems/test_gem_version.rb46
-rw-r--r--test/rubygems/test_require.rb215
-rw-r--r--test/rubygems/wrong_key_cert.pem18
-rw-r--r--test/rubygems/wrong_key_cert_32.pem18
-rw-r--r--test/runner.rb4
-rw-r--r--test/socket/test_addrinfo.rb23
-rw-r--r--test/socket/test_socket.rb181
-rw-r--r--test/socket/test_unix.rb120
-rw-r--r--test/stringio/test_stringio.rb71
-rw-r--r--test/strscan/test_stringscanner.rb12
-rw-r--r--test/syck/test_array.rb18
-rw-r--r--test/syck/test_boolean.rb37
-rw-r--r--test/syck/test_class.rb27
-rw-r--r--test/syck/test_engine_manager.rb3
-rw-r--r--test/syck/test_exception.rb46
-rw-r--r--test/syck/test_hash.rb29
-rw-r--r--test/syck/test_null.rb20
-rw-r--r--test/syck/test_omap.rb56
-rw-r--r--test/syck/test_set.rb31
-rw-r--r--test/syck/test_string.rb45
-rw-r--r--test/syck/test_struct.rb42
-rw-r--r--test/syck/test_symbol.rb22
-rw-r--r--test/syck/test_time.rb24
-rw-r--r--test/syck/test_yaml.rb1413
-rw-r--r--test/syck/test_yaml_properties.rb64
-rw-r--r--test/syck/test_yamlstore.rb (renamed from test/psych/test_yamlstore.rb)26
-rw-r--r--test/syslog/test_syslog_logger.rb522
-rw-r--r--test/test_abbrev.rb54
-rw-r--r--test/test_curses.rb63
-rw-r--r--test/test_delegate.rb7
-rw-r--r--test/test_mathn.rb104
-rw-r--r--test/test_pp.rb5
-rw-r--r--test/test_pstore.rb26
-rw-r--r--test/test_pty.rb20
-rw-r--r--test/test_rbconfig.rb53
-rw-r--r--test/test_securerandom.rb12
-rw-r--r--test/test_set.rb641
-rw-r--r--test/test_shellwords.rb5
-rw-r--r--test/test_tempfile.rb15
-rw-r--r--test/test_time.rb9
-rw-r--r--test/test_timeout.rb12
-rw-r--r--test/test_tmpdir.rb33
-rw-r--r--test/test_tracer.rb4
-rw-r--r--test/test_weakref.rb56
-rw-r--r--test/testunit/test4test_redefinition.rb11
-rw-r--r--test/testunit/test4test_sorting.rb15
-rw-r--r--test/testunit/test_hideskip.rb11
-rw-r--r--test/testunit/test_parallel.rb21
-rw-r--r--test/testunit/test_redefinition.rb13
-rw-r--r--test/testunit/test_sorting.rb17
-rw-r--r--test/testunit/tests_for_parallel/ptest_forth.rb15
-rw-r--r--test/thread/test_cv.rb191
-rw-r--r--test/thread/test_queue.rb140
-rw-r--r--test/thread/test_sync.rb57
-rw-r--r--test/uri/test_common.rb3
-rw-r--r--test/uri/test_generic.rb94
-rw-r--r--test/uri/test_mailto.rb10
-rw-r--r--test/webrick/test_cgi.rb12
-rw-r--r--test/webrick/test_htmlutils.rb20
-rw-r--r--test/webrick/test_httpauth.rb2
-rw-r--r--test/webrick/test_httpresponse.rb49
-rw-r--r--test/webrick/test_httpserver.rb72
-rw-r--r--test/webrick/test_httputils.rb4
-rw-r--r--test/webrick/test_server.rb25
-rw-r--r--test/webrick/utils.rb7
-rw-r--r--test/win32ole/test_err_in_callback.rb29
-rw-r--r--test/win32ole/test_thread.rb25
-rw-r--r--test/win32ole/test_win32ole.rb2
-rw-r--r--test/win32ole/test_win32ole_event.rb12
-rw-r--r--test/win32ole/test_win32ole_type.rb2
-rw-r--r--test/win32ole/test_win32ole_variant.rb29
-rw-r--r--test/win32ole/test_win32ole_variant_outarg.rb13
-rw-r--r--test/xmlrpc/data/blog.xml18
-rw-r--r--test/xmlrpc/test_client.rb293
-rw-r--r--test/xmlrpc/test_webrick_server.rb3
-rw-r--r--test/xmlrpc/webrick_testing.rb1
-rw-r--r--test/zlib/test_zlib.rb264
-rw-r--r--thread.c2403
-rw-r--r--thread_pthread.c523
-rw-r--r--thread_pthread.h5
-rw-r--r--thread_win32.c64
-rw-r--r--thread_win32.h7
-rw-r--r--time.c682
-rwxr-xr-x[-rw-r--r--]tool/asm_parse.rb0
-rwxr-xr-xtool/change_maker.rb6
-rwxr-xr-x[-rw-r--r--]tool/compile_prelude.rb6
-rwxr-xr-xtool/config.guess235
-rwxr-xr-xtool/config.sub184
-rwxr-xr-xtool/enc-unicode.rb90
-rwxr-xr-x[-rw-r--r--]tool/eval.rb0
-rwxr-xr-xtool/file2lastrev.rb105
-rwxr-xr-xtool/gen_dummy_probes.rb30
-rwxr-xr-x[-rw-r--r--]tool/generic_erb.rb8
-rwxr-xr-xtool/id2token.rb24
-rw-r--r--tool/install-sh2
-rwxr-xr-xtool/instruction.rb100
-rwxr-xr-xtool/make-snapshot36
-rwxr-xr-xtool/merger.rb112
-rwxr-xr-xtool/mkconfig.rb53
-rwxr-xr-xtool/mkrunnable.rb96
-rwxr-xr-x[-rw-r--r--]tool/parse.rb0
-rwxr-xr-xtool/rbinstall.rb269
-rwxr-xr-xtool/rubytest.rb5
-rwxr-xr-xtool/runruby.rb12
-rwxr-xr-x[-rw-r--r--]tool/transcode-tblgen.rb18
-rw-r--r--tool/vcs.rb114
-rw-r--r--tool/vpath.rb82
-rwxr-xr-x[-rw-r--r--]tool/vtlh.rb0
-rw-r--r--transcode.c200
-rw-r--r--transcode_data.h10
-rw-r--r--util.c116
-rw-r--r--variable.c718
-rw-r--r--version.c39
-rw-r--r--version.h16
-rw-r--r--vm.c1174
-rw-r--r--vm_backtrace.c1206
-rw-r--r--vm_core.h464
-rw-r--r--vm_dump.c386
-rw-r--r--vm_eval.c977
-rw-r--r--vm_exec.c55
-rw-r--r--vm_exec.h29
-rw-r--r--vm_insnhelper.c2805
-rw-r--r--vm_insnhelper.h136
-rw-r--r--vm_method.c627
-rw-r--r--vm_opts.h9
-rw-r--r--vm_trace.c1351
-rw-r--r--vsnprintf.c117
-rw-r--r--win32/Makefile.sub158
-rw-r--r--win32/README.win3222
-rwxr-xr-xwin32/configure.bat30
-rw-r--r--win32/dir.h15
-rw-r--r--win32/file.c118
-rwxr-xr-xwin32/mkexports.rb18
-rwxr-xr-xwin32/rm.bat4
-rw-r--r--win32/rtname.cmd18
-rw-r--r--win32/setup.mak101
-rw-r--r--win32/win32.c1666
1953 files changed, 119726 insertions, 282290 deletions
diff --git a/.document b/.document
index 9a5067bc52..8a05d61beb 100644
--- a/.document
+++ b/.document
@@ -10,19 +10,13 @@
prelude.rb
# the lib/ directory (which has its own .document file)
+
lib
+
# and some of the ext/ directory (which has its own .document file)
+
ext
# rdoc files
-ChangeLog
-
-NEWS
-
-README
-README.EXT
-README.EXT.ja
-README.ja
-
-doc
+doc/*.rdoc
diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index 67abf4b978..0000000000
--- a/.editorconfig
+++ /dev/null
@@ -1,16 +0,0 @@
-root = true
-
-[*]
-end_of_line = lf
-insert_final_newline = true
-trim_trailing_whitespace = true
-tab_width = 8
-indent_style = tab
-indent_size = 4
-
-[**.bat]
-end_of_line = crlf
-
-[**.rb]
-indent_style = space
-indent_size = 2
diff --git a/.gdbinit b/.gdbinit
index c8705a6ccf..2a38da8892 100644
--- a/.gdbinit
+++ b/.gdbinit
@@ -89,11 +89,7 @@ define rp
echo undef\n
else
if (VALUE)($arg0) & RUBY_IMMEDIATE_MASK
- if ((VALUE)($arg0) & RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG
- printf "FLONUM: %g\n", (double)rb_float_value($arg0)
- else
- echo immediate\n
- end
+ echo immediate\n
else
set $flags = ((struct RBasic*)($arg0))->flags
if ($flags & RUBY_T_MASK) == RUBY_T_NONE
@@ -110,15 +106,15 @@ define rp
else
if ($flags & RUBY_T_MASK) == RUBY_T_CLASS
printf "T_CLASS%s: ", ($flags & RUBY_FL_SINGLETON) ? "*" : ""
- rp_class $arg0
+ print (struct RClass *)($arg0)
else
if ($flags & RUBY_T_MASK) == RUBY_T_ICLASS
printf "T_ICLASS: "
- rp_class $arg0
+ print (struct RClass *)($arg0)
else
if ($flags & RUBY_T_MASK) == RUBY_T_MODULE
printf "T_MODULE: "
- rp_class $arg0
+ print (struct RClass *)($arg0)
else
if ($flags & RUBY_T_MASK) == RUBY_T_FLOAT
printf "T_FLOAT: %.16g ", (((struct RFloat*)($arg0))->float_value)
@@ -341,19 +337,6 @@ document rp
Print a Ruby's VALUE.
end
-define rp_class
- printf "(struct RClass *) %p", (void*)$arg0
- if ((struct RClass *)($arg0))->ptr.origin != $arg0
- printf " -> %p", ((struct RClass *)($arg0))->ptr.origin
- end
- printf "\n"
- print *(struct RClass *)($arg0)
- print *((struct RClass *)($arg0))->ptr
-end
-document rp_class
- Print the content of a Class/Module.
-end
-
define nd_type
print (enum node_type)((((NODE*)($arg0))->flags&RUBY_NODE_TYPEMASK)>>RUBY_NODE_TYPESHIFT)
end
@@ -642,18 +625,18 @@ define rb_numtable_entry
set $rb_numtable_key = 0
set $rb_numtable_rec = 0
if $rb_numtable_tbl->entries_packed
- set $rb_numtable_p = $rb_numtable_tbl->as.packed.bins
- while $rb_numtable_p && $rb_numtable_p < $rb_numtable_tbl->as.packed.bins+$rb_numtable_tbl->num_entries
- if $rb_numtable_p.k == $rb_numtable_id
- set $rb_numtable_key = $rb_numtable_p.k
- set $rb_numtable_rec = $rb_numtable_p.v
+ set $rb_numtable_p = $rb_numtable_tbl->bins
+ while $rb_numtable_p && $rb_numtable_p < $rb_numtable_tbl->bins+$rb_numtable_tbl->num_entries
+ if (st_data_t)$rb_numtable_p[0] == $rb_numtable_id
+ set $rb_numtable_key = (st_data_t)$rb_numtable_p[0]
+ set $rb_numtable_rec = (st_data_t)$rb_numtable_p[1]
set $rb_numtable_p = 0
else
- set $rb_numtable_p = $rb_numtable_p + 1
+ set $rb_numtable_p = $rb_numtable_p + 2
end
end
else
- set $rb_numtable_p = $rb_numtable_tbl->as.big.bins[$rb_numtable_id % $rb_numtable_tbl->num_bins]
+ set $rb_numtable_p = $rb_numtable_tbl->bins[$rb_numtable_id % $rb_numtable_tbl->num_bins]
while $rb_numtable_p
if $rb_numtable_p->key == $rb_numtable_id
set $rb_numtable_key = $rb_numtable_p->key
@@ -706,23 +689,12 @@ define rb_classname
print *(struct RClass*)($arg0)
end
-define rb_ancestors
- set $rb_ancestors_module = $arg0
- while $rb_ancestors_module
- rp $rb_ancestors_module
- set $rb_ancestors_module = ((struct RClass *)($rb_ancestors_module))->ptr.super
- end
-end
-document rb_ancestors
- Print ancestors.
-end
-
define rb_backtrace
call rb_backtrace()
end
define iseq
- if ruby_dummy_gdb_enums.special_consts
+ if dummy_gdb_enums.special_consts
end
if ($arg0)->type == ISEQ_ELEMENT_NONE
echo [none]\n
@@ -759,8 +731,8 @@ define rb_ps_vm
if $ps_threads->entries_packed
set $ps_threads_i = 0
while $ps_threads_i < $ps_threads->num_entries
- set $ps_threads_key = (st_data_t)$ps_threads->as.packed.entries[$ps_threads_i].key
- set $ps_threads_val = (st_data_t)$ps_threads->as.packed.entries[$ps_threads_i].val
+ set $ps_threads_key = (st_data_t)$ps_threads->bins[$ps_threads_i * 2]
+ set $ps_threads_val = (st_data_t)$ps_threads->bins[$ps_threads_i * 2 + 1]
rb_ps_thread $ps_threads_key $ps_threads_val
set $ps_threads_i = $ps_threads_i + 1
end
@@ -783,20 +755,3 @@ define rb_ps_thread
set $ps_thread_id = $arg1
print $ps_thread_th = (rb_thread_t*)$ps_thread->data
end
-
-# Details: https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/MachineInstructionsTraceWithGDB
-define trace_machine_instructions
- set logging on
- set height 0
- set width 0
- display/i $pc
- while !$exit_code
- info line *$pc
- si
- end
-end
-
-define SDR
- call rb_vmdebug_stack_dump_raw_current()
-end
-
diff --git a/.gitignore b/.gitignore
index 5808bf1082..57557c9c2e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,9 +2,7 @@
*.a
*.bak
*.dSYM
-*.dmyh
*.dylib
-*.elc
*.inc
*.log
*.o
@@ -53,10 +51,11 @@ y.tab.c
/configure
/doc/capi
/enc.mk
+/enc/trans/*.c
/encdb.h
/exts.mk
/goruby
-/id.[ch]
+/id.h
/largefile.h
/lex.c
/libruby*.*
@@ -73,7 +72,6 @@ y.tab.c
/ppack
/prelude.c
/preview
-/probes.h
/rbconfig.rb
/rename2.h
/repack
@@ -86,7 +84,6 @@ y.tab.c
/tmp
/transdb.h
/uncommon.mk
-/verconf.h
/web
/yasmdata.rb
@@ -99,10 +96,18 @@ y.tab.c
# /ext/
/ext/extinit.c
+# /ext/dl/
+/ext/dl/*.func
+
# /ext/dl/callback/
+/ext/dl/callback/*.func
/ext/dl/callback/callback-*.c
/ext/dl/callback/callback.c
+# /ext/iconv/
+/ext/iconv/config.charset
+/ext/iconv/iconv.rb
+
# /ext/ripper/
/ext/ripper/eventids1.c
/ext/ripper/eventids2table.c
@@ -124,4 +129,3 @@ y.tab.c
# /win32/
/win32/*.ico
-/win32/.time
diff --git a/.travis.yml b/.travis.yml
index db25c9eb08..286342c1cc 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,71 +1,8 @@
-# Copyright (C) 2011 Urabe, Shyouhei. All rights reserved.
-#
-# This file is a part of the programming language Ruby. Permission is hereby
-# granted, to either redistribute or modify this file, provided that the
-# conditions mentioned in the file COPYING are met. Consult the file for
-# details.
+# no installation...
+before_script: autoconf
+script: "./configure && make all test"
-# This is a Travis-CI build configuration file. The list of configurations
-# available is located in
-#
-# http://about.travis-ci.org/docs/user/build-configuration/
-#
-# and as Ruby itself is a project written in C language,
-#
-# http://about.travis-ci.org/docs/user/languages/c/
-#
-# is also a good place to look at.
-
-# Language specification.
-language: c
-
-# Compilers. Several compilers are provided in Travis, so we try them all.
-# The value set here is visible via $CC environment variable.
-compiler:
- - gcc
- - clang
-
-# Dependencies. Some header files are missing in a Travis' worker VM, so we
-# have to install them. The "1.9.1" here is OK. It is the most adopted
-# version string for Debian/Ubuntu, and no dependencies have been changed so
-# far since the 1.9.1 release.
-before_install:
- - "sudo apt-get -qq update"
- - "sudo apt-get -qq install $CC" # upgrade if any
-install: "sudo apt-get -qq build-dep ruby1.9.1 2>/dev/null"
-
-# Script is where the test runs. Note we just do "make test", not other tests
-# like test-all, test-rubyspec. This is because they take too much time,
-# enough for Travis to shut down the VM as being stalled.
-before_script:
- - "autoconf"
- - "./configure --with-gcc=$CC"
- - "make -sj encs"
- - "make -sj exts"
-script: "make test OPTS=-v"
-
-# Branch matrix. Not all branches are Travis-ready so we limit branches here.
branches:
only:
- trunk
- ruby_1_9_3
-
-# We want to be notified when something happens.
-notifications:
- irc:
- channels:
- - "irc.freenode.org#ruby-core"
- - "irc.freenode.org#ruby-ja"
- on_success: change # [always|never|change] # default: always
- on_failure: change # [always|never|change] # default: always
- template:
- - "%{message} by @%{author}: See %{build_url}"
-
-# Local Variables:
-# mode: YAML
-# coding: utf-8-unix
-# indent-tabs-mode: nil
-# tab-width: 4
-# fill-column: 79
-# default-justification: full
-# End:
diff --git a/BSDL b/BSDL
index a009caefea..82725534fa 100644
--- a/BSDL
+++ b/BSDL
@@ -1,4 +1,4 @@
-Copyright (C) 1993-2013 Yukihiro Matsumoto. All rights reserved.
+Copyright (C) 1993-2010 Yukihiro Matsumoto. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
diff --git a/COPYING.ja b/COPYING.ja
index e50d01c8d1..5b5b91c149 100644
--- a/COPYING.ja
+++ b/COPYING.ja
@@ -1,51 +1,51 @@
-本プログラムはフリーソフトウェアです.2-clause BSDL
-または以下に示す条件で本プログラムを再配布できます
-2-clause BSDLについてはBSDLファイルを参照して下さい.
+$BK\%W%m%0%i%`$O%U%j!<%=%U%H%&%'%"$G$9!%(B2-clause BSDL
+$B$^$?$O0J2<$K<($9>r7o$GK\%W%m%0%i%`$r:FG[I[$G$-$^$9(B
+2-clause BSDL$B$K$D$$$F$O(BBSDL$B%U%!%$%k$r;2>H$7$F2<$5$$!%(B
- 1. 複製は制限なく自由です.
+ 1. $BJ#@=$O@)8B$J$/<+M3$G$9!%(B
- 2. 以下の条件のいずれかを満たす時に本プログラムのソースを
- 自由に変更できます.
+ 2. $B0J2<$N>r7o$N$$$:$l$+$rK~$?$9;~$KK\%W%m%0%i%`$N%=!<%9$r(B
+ $B<+M3$KJQ99$G$-$^$9!%(B
- (a) ネットニューズにポストしたり,作者に変更を送付する
- などの方法で,変更を公開する.
+ (a) $B%M%C%H%K%e!<%:$K%]%9%H$7$?$j!$:n<T$KJQ99$rAwIU$9$k(B
+ $B$J$I$NJ}K!$G!$JQ99$r8x3+$9$k!%(B
- (b) 変更した本プログラムを自分の所属する組織内部だけで
- 使う.
+ (b) $BJQ99$7$?K\%W%m%0%i%`$r<+J,$N=jB0$9$kAH?%FbIt$@$1$G(B
+ $B;H$&!%(B
- (c) 変更点を明示したうえ,ソフトウェアの名前を変更する.
- そのソフトウェアを配布する時には変更前の本プログラ
- ムも同時に配布する.または変更前の本プログラムのソー
- スの入手法を明示する.
+ (c) $BJQ99E@$rL@<($7$?$&$(!$%=%U%H%&%'%"$NL>A0$rJQ99$9$k!%(B
+ $B$=$N%=%U%H%&%'%"$rG[I[$9$k;~$K$OJQ99A0$NK\%W%m%0%i(B
+ $B%`$bF1;~$KG[I[$9$k!%$^$?$OJQ99A0$NK\%W%m%0%i%`$N%=!<(B
+ $B%9$NF~<jK!$rL@<($9$k!%(B
- (d) その他の変更条件を作者と合意する.
+ (d) $B$=$NB>$NJQ99>r7o$r:n<T$H9g0U$9$k!%(B
- 3. 以下の条件のいずれかを満たす時に本プログラムをコンパイ
- ルしたオブジェクトコードや実行形式でも配布できます.
+ 3. $B0J2<$N>r7o$N$$$:$l$+$rK~$?$9;~$KK\%W%m%0%i%`$r%3%s%Q%$(B
+ $B%k$7$?%*%V%8%'%/%H%3!<%I$d<B9T7A<0$G$bG[I[$G$-$^$9!%(B
- (a) バイナリを受け取った人がソースを入手できるように,
- ソースの入手法を明示する.
+ (a) $B%P%$%J%j$r<u$1<h$C$??M$,%=!<%9$rF~<j$G$-$k$h$&$K!$(B
+ $B%=!<%9$NF~<jK!$rL@<($9$k!%(B
- (b) 機械可読なソースコードを添付する.
+ (b) $B5!3#2DFI$J%=!<%9%3!<%I$rE:IU$9$k!%(B
- (c) 変更を行ったバイナリは名前を変更したうえ,オリジナ
- ルのソースコードの入手法を明示する.
+ (c) $BJQ99$r9T$C$?%P%$%J%j$OL>A0$rJQ99$7$?$&$(!$%*%j%8%J(B
+ $B%k$N%=!<%9%3!<%I$NF~<jK!$rL@<($9$k!%(B
- (d) その他の配布条件を作者と合意する.
+ (d) $B$=$NB>$NG[I[>r7o$r:n<T$H9g0U$9$k!%(B
- 4. 他のプログラムへの引用はいかなる目的であれ自由です.た
- だし,本プログラムに含まれる他の作者によるコードは,そ
- れぞれの作者の意向による制限が加えられる場合があります.
+ 4. $BB>$N%W%m%0%i%`$X$N0zMQ$O$$$+$J$kL\E*$G$"$l<+M3$G$9!%$?(B
+ $B$@$7!$K\%W%m%0%i%`$K4^$^$l$kB>$N:n<T$K$h$k%3!<%I$O!$$=(B
+ $B$l$>$l$N:n<T$N0U8~$K$h$k@)8B$,2C$($i$l$k>l9g$,$"$j$^$9!%(B
- それらファイルの一覧とそれぞれの配布条件などに付いては
- LEGALファイルを参照してください.
+ $B$=$l$i%U%!%$%k$N0lMw$H$=$l$>$l$NG[I[>r7o$J$I$KIU$$$F$O(B
+ LEGAL$B%U%!%$%k$r;2>H$7$F$/$@$5$$!%(B
- 5. 本プログラムへの入力となるスクリプトおよび,本プログラ
- ムからの出力の権利は本プログラムの作者ではなく,それぞ
- れの入出力を生成した人に属します.また,本プログラムに
- 組み込まれるための拡張ライブラリについても同様です.
+ 5. $BK\%W%m%0%i%`$X$NF~NO$H$J$k%9%/%j%W%H$*$h$S!$K\%W%m%0%i(B
+ $B%`$+$i$N=PNO$N8"Mx$OK\%W%m%0%i%`$N:n<T$G$O$J$/!$$=$l$>(B
+ $B$l$NF~=PNO$r@8@.$7$??M$KB0$7$^$9!%$^$?!$K\%W%m%0%i%`$K(B
+ $BAH$_9~$^$l$k$?$a$N3HD%%i%$%V%i%j$K$D$$$F$bF1MM$G$9!%(B
- 6. 本プログラムは無保証です.作者は本プログラムをサポート
- する意志はありますが,プログラム自身のバグあるいは本プ
- ログラムの実行などから発生するいかなる損害に対しても責
- 任を持ちません.
+ 6. $BK\%W%m%0%i%`$OL5J]>Z$G$9!%:n<T$OK\%W%m%0%i%`$r%5%]!<%H(B
+ $B$9$k0U;V$O$"$j$^$9$,!$%W%m%0%i%`<+?H$N%P%0$"$k$$$OK\%W(B
+ $B%m%0%i%`$N<B9T$J$I$+$iH/@8$9$k$$$+$J$kB;32$KBP$7$F$b@U(B
+ $BG$$r;}$A$^$;$s!%(B
diff --git a/ChangeLog b/ChangeLog
index 305d1be2ff..b34ed8cda1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,28553 +1,16420 @@
-Tue Aug 18 22:00:12 2015 SHIBATA Hiroshi <hsbt@ruby-lang.org>
+Sat Nov 10 00:37:02 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/rubygems.rb: bump version to 2.0.14.1. this version fixed
- CVE-2015-3900.
-
- * lib/rubygems/remote_fetcher.rb: ditto.
-
- * test/rubygems/test_gem_remote_fetcher.rb: added testcase for CVE-2015-3900
-
-Tue Jun 2 00:10:14 2015 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/resolv.rb (Requester#request): typo, regression introduced at
- r49422 (patchlevel 618). reported and patched by Stefan Kolb
- [ruby-core:69429] [Backport #11204]
-
-Mon Apr 13 22:11:42 2015 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-
- * ext/openssl/lib/openssl/ssl.rb: stricter hostname verification
- following RFC 6125. with the patch provided by Tony Arcieri and
- Hiroshi Nakamura [ruby-core:61545] [Bug #9644]
- * test/openssl/test_ssl.rb: add tests for above.
-
-Tue Mar 24 16:38:14 2015 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
-
- * spec/default.mspec: use default configuration file name.
- https://github.com/ruby/rubyspec/commit/cc69f337b06362e5607ffa3e3ad40ef7494960cf
-
-Tue Mar 24 16:38:14 2015 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
-
- * spec/default.mspec: remove specific version number.
- https://github.com/ruby/rubyspec/commit/7a909e925c1baa9c700bd44af9241aef6e596714
-
-Tue Mar 24 16:38:14 2015 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
-
- * common.mk: use ruby organization for rubyspec.
-
-Wed Feb 25 17:30:10 2015 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * class.c (clone_method): fixed missing assignment introduced by
- previous commit.
-
- * vm_insnhelper.c (rb_vm_rewrite_cref_stack): ditto.
-
-Wed Feb 25 15:07:01 2015 Kazuki Tsujimoto <kazuki@callcc.net>
-
- * vm_insnhelper.c (rb_vm_rewrite_cref_stack): copy nd_refinements
- of original crefs. It fixes segmentation fault when calling
- refined method in duplicate module. [ruby-dev:48878] [Bug #10885]
-
- * vm_core.h, class.c: change accordingly.
-
- * test/ruby/test_refinement.rb: add a test for above.
-
-Wed Feb 25 14:53:27 2015 Shugo Maeda <shugo@ruby-lang.org>
-
- * class.c (method_entry_i, class_instance_method_list,
- rb_obj_singleton_methods): should not include methods of
- superclasses if recur is false. [ruby-dev:48854] [Bug #10826]
-
-Wed Feb 25 14:53:27 2015 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_method.c (remove_method): When remove refined
- method, raise a NameError if the method is not
- defined in refined class.
-
- But if the method is defined in refined class,
- it should keep refined method and remove original
- method.
-
- Patch by Seiei Higa. [ruby-core:67722] [Bug #10765]
-
-Wed Feb 25 14:41:01 2015 Seiei Higa <hanachin@gmail.com>
-
- * vm_method.c (check_definition): Module#public_method_defined?,
- Module#private_method_defined?, Module#protected_method_defined?
- should not use refinements. [ruby-core:67656] [Bug #10753]
-
-Wed Feb 25 14:29:19 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/sdbm/_sdbm.c: include ruby/ruby.h for PRIdPTRDIFF when a
- macro `DEBUG` is defined. based on the patch by Owen Rodley in
- [ruby-core:67987]. [Bug #10825]
-
-Wed Feb 25 14:22:57 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (try_cppflags, try_cflags, try_ldflags): get rid of
- interference by modifying global variables in have_devel? method.
- [ruby-core:67962] [Bug #10821]
-
-Wed Feb 25 14:19:35 2015 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
-
- * thread.c: Improve documentation for Thread#value
- [Bug #10694][ruby-core:67324][ci skip]
-
-Wed Feb 25 14:18:26 2015 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
-
- * string.c: [DOC] Add missing documentation around String#chomp.
- Patchby @stderr [ci skip][fix GH-780]
-
-Sat Feb 21 09:48:48 2015 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/uri/generic.rb (URI::Generic.build):
- use hostname= to detect and wrap IPv6 hosts.
- Build is accepting URI components and users may not expect
- that a host component needs to be wrapped with square brackets
- since it's not providing a URI.
- Note: initialize with arg_check => true does not wrap IPv6 hosts.
- by Joe Rafaniello <jrafanie@redhat.com>
- https://github.com/ruby/ruby/pull/765 fix GH-765
-
- * test/uri/test_generic.rb: Add more tests
-
-Wed Feb 18 16:02:30 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/resolv.rb (Resolv::DNS::Resource#==, #hash): elements
- returned by Kernel#instance_variables are Symbols now.
- [ruby-core:68128] [Bug #10857]
-
-Tue Feb 17 17:37:14 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/socket/getaddrinfo.c (get_addr): reject too long hostname to
- get rid of GHOST vulnerability on very old platforms.
-
- * ext/socket/raddrinfo.c (make_hostent_internal): ditto, paranoic
- check for the canonical name.
-
-Fri Jan 30 16:49:15 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * object.c: [DOC] Revise documentation by Marcus Stollsteimer at
- [ruby-core:66368]. [Bug #10526]
-
- * #inspect: be more specific about generated string, remove
- obsolete example.
- * #nil?: use code examples instead of different call-seq's.
- * #tap: clarify what is yielded.
- * Integer(): be more specific about to_int and to_i, remove
- reference to Ruby 1.8.
- * Array(): fix error.
- * Class: fix variable name style and indentation in example.
- * improve consistency, fix typos and formatting.
-
-Fri Jan 30 16:49:15 2015 Benoit Daloze <eregontp@gmail.com>
-
- * object.c (Module#const_defined?): [DOC] Revise the documentation.
- Patch by Xavier Noria.
- [Fixes GH-754] https://github.com/ruby/ruby/pull/754
-
-Fri Jan 30 16:49:15 2015 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
-
- * object.c: fix document of Kernel.Stirng by @suzukaze
- [fix GH-743][ci skip]
-
-Fri Jan 30 16:26:57 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * pack.c (str_associate, str_associated): keep associated objects
- in an instance variables, instead of in the internal structure.
-
-Fri Jan 30 16:11:47 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/rdoc/text.rb (expand_tabs): get rid of infinite loop with
- CR. should check if substitution occurred too.
- [ruby-dev:48813] [Bug #10732]
-
-Fri Jan 30 16:00:35 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (install_dirs): revert DESTDIR prefix by r39841, since
- it is fixed by r41648. [ruby-core:55760] [Bug #8115]
-
-Fri Jan 30 15:47:49 2015 Eric Wong <e@80x24.org>
-
- * numeric.c (bit_coerce): use original value for error message
- [ruby-core:67405] [Bug #10711]
- * test/ruby/test_numeric.rb (test_coerce): check error message
-
-Tue Jan 27 17:05:43 2015 Seiei Higa <hanachin@gmail.com>
-
- * vm_method.c (rb_alias): raise a NameError when creating alias to
- a refined method if the original method of the refined method is
- not defined. [ruby-core:67523] [Bug #10731]
-
-Tue Jan 27 16:41:33 2015 Seiei Higa <hanachin@gmail.com>
-
- * vm_method.c (rb_export_method): bail out if the original method
- is undefined when the method is refined.
- [ruby-core:67387] [Bug #10706]
-
-Tue Jan 27 16:27:44 2015 Eric Wong <e@80x24.org>
-
- * lib/resolv.rb: consider ENETUNREACH as ResolvTimeout
- [ruby-core:67411] [Bug #10712]
-
-Thu Jan 22 18:15:41 2015 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
-
- * ext/zlib/zlib.c: fix document of method signatures.
- [Bug #10668][ruby-core:67186][ci skip]
-
-Thu Jan 22 18:10:35 2015 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
-
- * test/ruby/test_io.rb: added timeout for AIX environment.
- [ruby-core:62983][Bug #9917]
-
-Thu Jan 22 17:30:33 2015 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
-
- * lib/net/http.rb (Net::HTTP#send_request): there is no response body
- with HEAD request. Patch by @rodrigosaito [fix GH-520]
-
-Thu Jan 22 17:30:33 2015 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
-
- * test/net/http/test_http.rb (_test_send_request__HEAD): Added
- failing test for send_request with HEAD method.
-
-Wed Jan 14 16:53:14 2015 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
-
- * ext/tk/lib/tkextlib/tcllib/plotchart.rb: fix to invoke correct function
- of tcllib. Patch by @zalt50 [fix GH-787]
-
-Wed Jan 14 16:48:15 2015 Tanaka Akira <akr@fsij.org>
-
- * lib/resolv.rb (Resolv::DNS::Name#==): Compare an array of Label:Str
- objects. Label#Str#== is case-insensitive.
-
-Wed Jan 14 16:48:15 2015 Ben Miller <bmiller@rackspace.com>
-
- * lib/resolv.rb (Resolv::DNS::Name#==): DNS is case-insensitive, so the
- comparison should be case-insensitive as well.
- [ruby-core:66498] [Bug #10550]
-
-Wed Jan 14 16:48:15 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/resolv.rb (Resolv::DNS::Name): names with different dots
- should be different.
-
-Wed Jan 14 16:30:51 2015 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http/response.rb (Net::HTTPResponse): require one or more
- spaces [Bug #10591].
- by leriksen <leif.eriksen.au@gmail.com>
- https://github.com/ruby/ruby/pull/782 fix GH-782
- NOTE: graph.facebook.com returns without SP Reason-Phrase.
-
-Wed Jan 14 16:23:49 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/openssl/ossl_cipher.c (ossl_cipher_update_long): update huge
- data gradually not to exceed INT_MAX. workaround of OpenSSL API
- limitation. [ruby-core:67043] [Bug #10633]
-
-Wed Jan 14 16:14:50 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (rb_cv_binary_elf): get rid of -e option of cat
- which is not available on BusyBox, use tr instead.
- [ruby-core:64824] [Bug #10210]
-
-Wed Jan 14 16:07:11 2015 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * signal.c (ruby_signal): since SIGKILL is not supported by MSVCRT,
- should be treated before calling signal(3).
- [Bug #10615]
-
-Wed Jan 14 15:57:26 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread.c (exec_recursive): use the same last method name as
- recursive_push in the error message when recursive_pop failed.
- [ruby-core:66742] [Bug #10579]
-
-Wed Jan 14 15:57:26 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (rb_frame_last_func): return the most recent frame method
- name.
-
- * thread.c (recursive_list_access): use the last method name,
- instead of the current method name which can be unset in some
- cases, not to use a symbol by the invalid ID.
- [ruby-core:66742] [Bug #10579]
-
-Wed Jan 14 15:54:18 2015 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * lib/resolv.rb: fall back if canonicalization fails.
- Thanks Vit Ondruch for the patch! [ruby-core:65836]
-
- * test/resolv/test_dns.rb: test for patch
-
-Fri Nov 28 16:43:20 2014 Eric Hodel <drbrain@segment7.net>
-
- * lib/net/http.rb: Do not attempt SSL session resumption when the
- session is expired. [Bug #10533]
-
-Fri Nov 28 16:36:34 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (symbol_list): fix the node type of literal symbol list
- with no interpolation. [ruby-core:66343]
-
-Fri Nov 28 16:28:07 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/etc/etc.c (etc_getlogin): set login name encoding properly.
- [ruby-core:66163] [Bug #10493]
-
-Fri Nov 28 16:18:44 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * proc.c (method_proc): the receiver of binding from method should
- be same as the receiver of the method.
- [ruby-core:65917] [Bug #10432]
-
-Fri Nov 28 16:12:22 2014 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http.rb (Net::HTTP.proxy_uri): use initializer instead
- of parser to handle IPv6 address. [Bug #9129]
-
-Fri Nov 28 16:05:09 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (copy_stream_body): should write in binary mode. based on a
- patch by godfat (Lin Jen-Shin) at [ruby-core:56556].
- [ruby-core:56518] [Bug #8767]
-
-Fri Nov 28 16:05:09 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (copy_stream_body): move common open flags.
-
-Fri Nov 28 16:01:44 2014 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/rubygems/ssl_certs/AddTrustExternalCARoot{-2048,}.pem: add newer
- root CA for rubygems.org. a part of r48389 of trunk.
- see also https://github.com/rubygems/rubygems/commit/98f5f44c7141881c756003e4256b1a96b200b98e .
- [Backport #10516] [ruby-core:66303]
-
-Wed Nov 19 10:19:36 2014 Eric Wong <e@80x24.org>
-
- * vm_eval.c (rb_yield_splat): add missing GC guard
- [Bug #10509]
-
-Thu Nov 13 22:31:50 2014 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-
- * lib/rexml/document.rb: add REXML::Document#document.
- reported by Tomas Hoger <thoger@redhat.com> and patched by nahi.
-
-Thu Nov 6 17:31:51 2014 Naohisa Goto <ngotogenome@gmail.com>
-
- * compile.c (compile_data_alloc): add padding when strict alignment
- is required for memory access. Currently, the padding is enabled
- only when the CPU is 32-bit SPARC and the compiler is GCC.
- [Bug #9681] [ruby-core:61715]
-
- * compile.c (STRICT_ALIGNMENT): defined if strict alignment is required
-
- * compile.c (ALIGNMENT_SIZE, ALIGNMENT_SIZE_MASK, PADDING_SIZE_MAX):
- new macros for alignemnt word size, bit mask, max size of padding.
-
- * compile.c (calc_padding): new function to calculate padding size
-
-Wed Nov 5 18:26:49 2014 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * vm_insnhelper.c (unknown_keyword_error): delete expected keywords
- directly from raw table, so that the given block is not called.
- derived from r48102 of trunk.
- [ruby-core:65837] [Bug #10413]
-
-Mon Oct 27 20:21:05 2014 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/rexml/entity.rb: keep the entity size within the limitation.
- reported by Willis Vandevanter <will@silentrobots.com> and
- patched by nahi.
-
-Mon Oct 27 13:26:46 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_method.c (rb_method_entry_make): warn redefinition only for
- already defined methods, but not for undefined methods.
- [ruby-dev:48691] [Bug #10421]
-
-Thu Oct 23 18:56:55 2014 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-
- * ext/openssl/lib/openssl/ssl.rb (DEFAULT_PARAMS): override
- options even if OpenSSL::SSL::OP_NO_SSLv3 is not defined.
- this is pointed out by Stephen Touset. [ruby-core:65711] [Bug #9424]
-
-Thu Oct 23 18:56:55 2014 Martin Bosslet <Martin.Bosslet@gmail.com>
-
- * test/openssl/test_ssl.rb: Reuse TLS default options from
- OpenSSL::SSL::SSLContext::DEFAULT_PARAMS.
-
-Thu Oct 23 18:56:55 2014 Martin Bosslet <Martin.Bosslet@gmail.com>
-
- * lib/openssl/ssl.rb: Explicitly whitelist the default
- SSL/TLS ciphers. Forbid SSLv2 and SSLv3, disable
- compression by default.
- Reported by Jeff Hodges.
- [ruby-core:59829] [Bug #9424]
-
-Mon Oct 20 14:41:45 2014 Kazuki Tsujimoto <kazuki@callcc.net>
-
- * vm_core.h, vm.c, proc.c: fix GC mark miss on bindings.
- [ruby-dev:48616] [Bug #10368]
-
- * test/ruby/test_eval.rb: add a test code.
-
-Fri Oct 17 13:22:17 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (parser_here_document): do not append already appended
- and disposed code fragment. [ruby-dev:48647] [Bug #10392]
-
-Fri Oct 17 13:19:44 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/stringio/stringio.c (strio_write): ASCII-8BIT StringIO
- should be writable any encoding strings, without conversion.
- [ruby-core:65240] [Bug #10285]
-
-Fri Oct 17 13:10:08 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_eval.c (eval_string_with_cref): fix super from eval with
- scope. set klass in the current control frame to the class of
- the receiver in the context to be evaluated, this class/module
- must match the actual receiver to call super.
- [ruby-core:65122] [Bug #10263]
-
-Thu Oct 16 16:33:51 2014 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * regcomp.c, regexec.c: Optimization should be disabled not only for
- /(?<=x).*/ but also for /(?!x).*/.
- (merge r47598 partially. [Bug #9728])
-
-Thu Oct 16 16:23:03 2014 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
-
- * lib/fileutils.rb: handle ENOENT error with symlink targeted to
- non-exists file. [ruby-dev:45933] [Bug #6716]
-
-Wed Oct 15 16:23:22 2014 Tanaka Akira <akr@fsij.org>
-
- * test/ruby/test_time_tz.rb: Fix test error with tzdata-2014g.
- [ruby-core:65058] [Bug #10245] Reported by Vit Ondruch.
-
-Wed Oct 15 16:23:22 2014 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
-
- * test/minitest/test_minitest_unit.rb: removed obsoleted condition
- for Ruby 1.8.
- * test/ruby/test_time_tz.rb: ditto.
-
-Wed Oct 15 16:19:39 2014 Eric Wong <e@80x24.org>
-
- * array.c (ary_recycle_hash): add RB_GC_GUARD
- (rb_ary_diff): remove volatile
- [Bug #10369]
-
-Wed Oct 15 16:13:28 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dir.c (dir_s_aref): fix rdoc. `Dir.glob` allows an array but
- `Dir[]` not. the former accepts an optional parameter `flags`,
- while the latter accepts arbitrary number of arguments but no
- `flags`. [ruby-core:65265] [Bug #10294]
-
-Wed Oct 15 16:12:11 2014 Rei Odaira <Rei.Odaira@gmail.com>
-
- * configure.in: Fix typo. [Bug #9914]
-
-Wed Oct 15 16:05:47 2014 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * error.c: update exception tree. [DOC]
- reported by @hemge via twitter.
-
-Wed Oct 15 15:57:48 2014 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/Makefile.sub (VCSUP): nothing to do if this worktree is not
- under any VCS (it means that the worktree may be from the release
- package).
-
-Wed Oct 15 15:35:39 2014 Kazuki Tsujimoto <kazuki@callcc.net>
-
- * ext/pathname/pathname.c (path_inspect): use PRIsVALUE to preserve
- the result encoding.
-
-Wed Sep 17 15:09:16 2014 Natalie Weizenbaum <nweiz@google.com>
-
- * ext/pathname/lib/pathname.rb (SAME_PATHS):
- Pathname#relative_path_from uses String#casecmp to compare strings
- on case-insensitive filesystem platforms (e.g., Windows). This can
- return nil for strings with different encodings, and the code
- previously assumed that it always returned a Fixnum. [Fix GH-713]
-
-Wed Sep 17 15:07:35 2014 Sho Hashimoto <sho.hsmt@gmail.com>
-
- * ext/fiddle/lib/fiddle/import.rb (Fiddle::Importer#sizeof): fix typo,
- SIZEOF_LONG_LON. [Fix GH-714]
-
-Wed Sep 17 14:58:50 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (MakeMakefile#pkg_config): append --cflags to also
- $CXXFLAGS, as they are often used by C++ compiler.
- [ruby-core:54532] [Bug #8315]
-
-Wed Sep 17 14:58:50 2014 Shota Fukumori <her@sorah.jp>
-
- * lib/mkmf.rb (configuration): Make CXXFLAGS customizable.
- Patch by Kohei Suzuki (eagletmt). [Fixes GH-492]
-
-Wed Sep 17 14:52:38 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/csv.rb (CSV#<<): honor explicitly given encoding. based on
- the patch by DAISUKE TANIWAKI <daisuketaniwaki AT gmail.com> at
- [ruby-core:62113]. [Bug #9766]
-
-Fri Sep 12 11:34:39 2014 Koichi Sasada <ko1@atdot.net>
-
- * test/ruby/test_object.rb: extend timeout.
-
-Fri Sep 12 11:34:39 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * object.c (rb_obj_copy_ivar): allocate no memory for empty
- instance variables. [ruby-core:64700] [Bug #10191]
-
-Fri Sep 12 11:34:39 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * object.c (rb_obj_copy_ivar): extract function to copy instance
- variables only for T_OBJECT from init_copy.
-
-Fri Sep 12 11:30:50 2014 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * regcomp.c: Merge Onigmo 988517a4f16f14acbd7cc9d5b51a096d5153992c.
- [Bug #9344].
-
-Fri Sep 12 11:22:55 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (Doxyfile): revert r43888, not to require preinstalled
- ruby. [ruby-core:64488] [Bug #10161]
-
-Fri Sep 12 11:15:04 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (rb_io_reopen): create a new, temporary FD via rb_sysopen and
- call rb_cloexec_dup2 on it to atomically replace the file fptr->fd
- points to. This leaves no possible window where fptr->fd is invalid
- to userspace (even for any threads running w/o GVL). based on the
- patch by Eric Wong <normalperson@yhbt.net> at [ruby-core:57943].
- [Bug #9036]
-
-Wed Sep 10 12:34:34 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (io_close): ignore only "closed stream" IOError and
- NoMethodError, do not swallow other exceptions at the end of
- block. [ruby-core:64463] [Bug #10153]
-
-Wed Sep 10 12:27:08 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * enc/trans/euckr-tbl.rb (EUCKR_TO_UCS_TBL): add missing euro and
- registered signs. [ruby-core:64452] [Bug #10149]
-
-Wed Sep 10 12:25:24 2014 Eric Wong <e@80x24.org>
-
- * time.c (time_timespec): fix tv_nsec overflow
- [Bug #10144]
-
-Wed Sep 10 12:21:51 2014 Eric Wong <e@80x24.org>
-
- * ext/zlib/zlib.c (gzfile_reset): preserve ZSTREAM_FLAG_GZFILE
- [Bug #10101]
-
- * test/zlib/test_zlib.rb (test_rewind): test each_byte
-
-Wed Sep 10 12:06:27 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (rb_io_initialize): [DOC] fix rdoc of append mode. it does
- not move the pointer at open. [ruby-core:63747] [Bug #10039]
-
-Wed Sep 10 11:50:26 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * sprintf.c (GETASTER): should not use the numbered argument to be
- formatted, raise ArgumentError instead.
- [ruby-dev:48330] [Bug #9982]
-
-Wed Sep 10 11:43:55 2014 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
-
- * test/openssl/test_pkey_rsa.rb (OpenSSL#test_sign_verify_memory_leak):
- added timeout into testcase for low performance environment.
- [Bug #9984][ruby-core:63367]
-
-Wed Sep 10 11:39:54 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * hash.c (env_aset, env_has_key, env_assoc, env_has_value),
- (env_rassoc, env_key): prohibit tainted strings if $SAFE is
- non-zero. [Bug #9976]
-
-Sat Sep 6 09:10:45 2014 Zachary Scott <e@zzak.io>
-
- * lib/rdoc/generator/template/darkfish/js/jquery.js: Backport
- rdoc/rdoc@74f60fcb04fee1778fe2694d1a0ea6513f8e67b7
-
-Fri Sep 5 14:08:00 2014 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c (ole_create_dcom): use the converted
- result if the argument can be converted to a string, to get rid
- of invalid access. Thanks to nobu. [ruby-dev:48467] [Bug #10127]
-
-Fri Sep 5 14:00:33 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * process.c (open): use UTF-8 version function to support
- non-ascii path properly. [ruby-core:63185] [Bug #9946]
-
-Fri Sep 5 13:53:41 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (parser_yylex): fix invalid char in eval, should raise
- an syntax error too, as well as directly coded.
- [ruby-core:64243] [Bug #10117]
-
-Fri Sep 5 13:51:10 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (parser_yyerror): preserve source code encoding in
- syntax error messages. [ruby-core:64228] [Bug #10114]
-
-Fri Sep 5 13:44:53 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (rb_str_count): fix wrong single-byte optimization.
- 7bit ascii can be a trailing byte in Shift_JIS.
- [ruby-dev:48442] [Bug #10078]
-
-Fri Sep 5 13:36:12 2014 NAKAMURA Usaku <usa@ruby-lang.org>
-
- merge r46831 partially. these changes are from:
- https://github.com/k-takata/Onigmo/commit/7abd7b29481f98eb92be786e3d33611fc7d000a0
- [Bug #8716]
-
- * include/ruby/oniguruma.h (ONIG_MAX_CAPTURE_GROUP_NUM,
- ONIGERR_TOO_MANY_CAPTURE_GROUPS): add cheking the number of capture
- groups.
-
- * regerror.c (onig_error_code_to_format): ditto.
-
- * regparse.c (scan_env_add_mem_entry): ditto.
-
- * regexec.c (onig_region_copy, match_at): fix: segmation fault occurs
- when many groups are used.
-
-Fri Sep 5 13:06:53 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (rb_str_resize): update capa only when buffer get
- reallocated.
- http://d.hatena.ne.jp/nagachika/20140613/ruby_trunk_changes_46413_46420#r46413
-
-Fri Sep 5 13:06:53 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (rb_str_resize): should consider the capacity instead
- of the old length, as pointed out by nagachika.
-
-Fri Sep 5 13:06:53 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (expand_path): shrink expanded path which no longer needs
- rooms to append. [ruby-core:63114] [Bug #9934]
-
-Wed Sep 3 13:42:24 2014 Mark Lorenz <mlorenz@covermymeds.com>
-
- * lib/erb.rb (result): [DOC] no longer accepts a Proc, as
- Kernel.eval does not. [fix GH-619]
-
-Wed Sep 3 13:23:29 2014 Tanaka Akira <akr@fsij.org>
-
- * io.c (rb_io_autoclose_p): Don't raise on frozen IO.
-
- * test/lib/minitest/unit.rb: IO#autoclose? may raise IOError.
-
-Wed Sep 3 13:23:29 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (rb_io_fileno, rb_io_inspect): non-modification does not
- error on frozen IO. [ruby-dev:48241] [Bug #9865]
-
-Wed Sep 3 13:17:38 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (posix_fadvise): disable use of posix_fadvise
- itself on 32-bit AIX. [ruby-core:62968] [Bug #9914]
-
-Wed Sep 3 13:17:38 2014 <kanemoto@ruby-lang.org>
-
- * io.c (rb_io_advise): AIX currently does not support a 32-bit call to
- posix_fadvise() if _LARGE_FILES is defined. Patch by Rei Odaira.
- [ruby-core:62968] [Bug #9914]
-
-Wed Sep 3 12:48:14 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/stringio/stringio.c (strio_write): use rb_str_append to
- reuse coderange bits other than ASCII-8BIT, and keep
- taintedness. [ruby-dev:48118] [Bug #9769]
-
-Wed Sep 3 12:41:35 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * hash.c (env_shift): fix memory leak on Windows, free environment
- strings block always. [ruby-dev:48332] [Bug #9983]
-
-Wed Sep 3 12:41:35 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * hash.c (env_select): fix memory leak and crash on Windows, make
- keys array first instead of iterating on environ directly.
- [ruby-dev:48325] [Bug #9978]
-
-Wed Sep 3 12:41:35 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * hash.c (ruby_setenv): fix memory leak on Windows, free
- environment strings block after check for the size.
- [ruby-dev:48323] [Bug #9977]
-
-Wed Sep 3 12:24:39 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * re.c (match_aref, rb_reg_regsub): consider encoding of captured
- names, encoding-incompatible should not match.
- [ruby-dev:48278] [Bug #9903]
-
-Wed Sep 3 12:24:39 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * sprintf.c (ruby__sfvextra): add QUOTE flag to escape unprintable
- characters.
-
-Wed Sep 3 12:24:39 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * sprintf.c (ruby__sfvextra): add QUOTE flag to escape unprintable
- characters.
-
-Sun Aug 31 16:59:45 2014 Koichi Sasada <ko1@atdot.net>
-
- * vm_eval.c (rb_catch_protect): fix same problem of [Bug #9961].
-
- * vm_eval.c (rb_iterate): ditto.
-
-Sun Aug 31 16:59:45 2014 Koichi Sasada <ko1@atdot.net>
-
- * vm.c (rb_vm_rewind_cfp): add new function to rewind specified cfp
- with invoking RUBY_EVENT_C_RETURN.
- [Bug #9961]
-
- * vm_core.h: ditto.
-
- * eval.c (rb_protect): use it.
-
- * eval.c (rb_rescue2): ditto.
-
- * vm_eval.c (rb_iterate): ditto.
-
- * test/ruby/test_settracefunc.rb: add a test.
-
- * vm_core.h (rb_name_err_mesg_new):
-
-Sun Aug 31 16:50:06 2014 Koichi Sasada <ko1@atdot.net>
-
- * compile.c (rb_iseq_compile_node): put start label of block after
- trace (b_call).
- [Bug #9964]
-
- * test/ruby/test_settracefunc.rb: add a test.
-
- added assert_consistent_call_return() method check call/return
- consistency.
-
-Sun Aug 31 16:38:26 2014 Koichi Sasada <ko1@atdot.net>
-
- * vm_core.h: add VM_FRAME_MAGIC_RESCUE to recognize normal block or
- rescue clause.
-
- * vm.c (vm_exec): use VM_FRAME_MAGIC_RESCUE on at rescue/ensure.
-
- * test/ruby/test_settracefunc.rb: should not invoke b_return at rescue
- clause.
- [Bug #9957]
-
- * vm_dump.c (control_frame_dump): check VM_FRAME_MAGIC_RESCUE.
-
- * vm_dump.c (vm_stack_dump_each): ditto.
-
-Sun Aug 31 16:32:10 2014 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * lib/test/unit/parallel.rb: fix test-all parallel failure if a test
- is skipped after raise.
- DL::TestFunc#test_sinf is skipped after raise on mingw ruby.
- But it causes Marshal.load failure due to undefined class/module
- DL::DLError when doing test-all parallel and test-all doesn't
- complete. We create new MiniTest::Skip object to avoid Marshal.load
- failure.
- [ruby-core:62133] [Bug #9767]
-
- * test/testunit/test_parallel.rb (TestParallel): add a test.
-
- * test/testunit/tests_for_parallel/ptest_forth.rb: ditto.
-
-Sun Aug 31 16:24:54 2014 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/lib/pathname.rb (cleanpath_aggressive): make all
- separators File::SEPARATOR from File::ALT_SEPARATOR.
- Reported by Daniel Rikowski.
- Fixed by Nobuyoshi Nakada. [Bug #9618]
-
- * ext/pathname/lib/pathname.rb (cleanpath_conservative): ditto.
-
-Sun Aug 31 16:23:41 2014 Naohisa Goto <ngotogenome@gmail.com>
-
- * lib/fileutils.rb (rmdir): rescue Errno::EEXIST in addition to
- ENOTEMPTY (and ENOENT), because SUSv3 describes that "If the
- directory is not an empty directory, rmdir() shall fail and set
- errno to [EEXIST] or [ENOTEMPTY]" and Solaris uses EEXIST.
- [Bug #9571] [ruby-dev:48017]
-
-Sun Aug 31 16:20:14 2014 Tanaka Akira <akr@fsij.org>
-
- * lib/resolv.rb (bind_random_port): Rescue EPERM for FreeBSD which
- security.mac.portacl.port_high is changed.
- See mac_portacl(4) for details.
- Reported by Jakub Szafranski. [ruby-core:60917] [Bug #9544]
-
-Sun Aug 31 16:16:24 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * re.c (match_aref): should not ignore name after NUL byte.
- [ruby-dev:48275] [Bug #9902]
-
-Sun Aug 31 16:10:30 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/digest/digest.c (rb_digest_instance_equal): no need to call
- `to_s` twice. [Bug #9913]
-
-Sun Aug 31 16:10:30 2014 Benoit Daloze <eregontp@gmail.com>
-
- * ext/digest/digest.c (rb_digest_instance_equal):
- fix #== for non-string arguments. [ruby-core:62967] [Bug #9913]
-
- * test/digest/test_digest.rb: add test for above.
-
-Sun Aug 31 15:46:23 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c (yield_indexed_values): extract from permute0(),
- rpermute0(), and rcombinate0().
-
-Sun Aug 31 15:23:25 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c (rb_ary_permutation): `p` is the array of size `r`, as
- commented at permute0(). since `n >= r` here, buffer overflow
- never happened, just reduce unnecessary allocation though.
-
-Mon Jul 7 13:05:04 2014 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
-
- * test/test_timeout.rb (test_timeout): inverted test condition.
- [Bug #8523]
-
-Mon Jul 7 12:57:26 2014 Masaya Tarui <tarui@ruby-lang.org>
-
- * st.c (st_foreach_check): change start point of search at check
- from top to current. [ruby-dev:48047] [Bug #9646]
-
-Mon Jul 7 12:53:45 2014 Zachary Scott <e@zzak.io>
-
- * lib/gserver.rb: [DOC] Fixed typo in example by @stomar [Bug #9543]
-
-Mon Jul 7 12:52:44 2014 Zachary Scott <e@zzak.io>
-
- * enumerator.c: [DOC] Fix example to show Enumerator#peek behavior
- Patch by Erik Hollembeak [Bug #9814]
-
-Mon Jul 7 12:51:09 2014 Zachary Scott <e@zzak.io>
-
- * enum.c: [DOC] Use #find in example to clarify alias by @rachellogie
- Patch submitted via documenting-ruby/ruby#34
-
-Mon Jul 7 12:49:10 2014 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
-
- * man/ruby.1: remove deadlink. [ruby-core:62145][Bug #9773]
-
-Mon Jul 7 12:46:28 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * struct.c (not_a_member): extract name error and use same error
- messages. based on the patch by Marcus Stollsteimer <sto.mar AT
- web.de> at [ruby-core:61721]. [Bug #9684]
-
-Mon Jul 7 12:39:34 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (read_all): truncate the buffer before appending read data,
- instead of truncating before reading.
- [ruby-core:55951] [Bug #8625]
-
-Mon Jul 7 12:39:34 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (io_setstrbuf, io_read): should not shorten the given buffer until
- read succeeds. [ruby-core:55951] [Bug #8625]
-
-Mon Jul 7 12:16:54 2014 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/ftp.rb (gets, readline): read lines without LF properly.
- [ruby-core:63205] [Bug #9949]
-
- * test/net/ftp/test_buffered_socket.rb: related test.
-
-Mon Jul 7 12:13:09 2014 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/imap.rb (body_type_1part): Gmail IMAP reports a body
- type as "MIXED" followed immediately by params
- [ruby-core:62864] [Bug #9885]
- Patch by @rayners (David Raynes). [Fixes GH-622]
- https://github.com/ruby/ruby/pull/622
-
-Mon Jul 7 12:05:28 2014 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/imap.rb (body_type_msg): should accept
- message/delivery-status with extra data.
- [ruby-core:53741] [Bug #8167]
-
- * test/net/imap/test_imap_response_parser.rb: related test.
-
-Mon Jul 7 11:47:51 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (local_tbl_gen): remove local variables duplicated with
- arguments.
-
-Thu Jul 3 15:17:22 2014 Koichi Sasada <ko1@atdot.net>
-
- [ruby-core:60501] [Bug #9486]
- * vm.c (rb_vm_pop_cfunc_frame): added. It cares c_return event.
- The patch base by drkaes (Stefan Kaes).
- [Bug #9321]
-
- * variable.c (rb_mod_const_missing): use rb_vm_pop_cfunc_frame()
- instead of rb_frame_pop().
-
- * vm_eval.c (raise_method_missing): ditto.
-
- * vm_eval.c (rb_iterate): ditto.
-
- * internal.h (rb_vm_pop_cfunc_frame): add decl.
-
- * test/ruby/test_settracefunc.rb: add tests.
- provided by drkaes (Stefan Kaes).
-
- * vm.c, eval.c, include/ruby/intern.h (rb_frame_pop):
- move definition of rb_frame_pop() and deprecate it.
- It doesn't care about `return' events.
-
-Fri Jun 27 17:57:16 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (rb_str_substr): need to reset code range for shared
- string too, not only copied string.
- [ruby-core:62842] [Bug #9882]
-
-Fri Jun 27 17:54:09 2014 Rei Odaira <Rei.Odaira@gmail.com>
-
- * signal.c (ruby_signal): should return either `old.sa_sigaction`
- or `old.sa_handler`, depending on whether `SA_SIGINFO` is set in
- `old.sa_flags`, because they may not be a union.
- [ruby-core:62836] [Bug #9878]
-
-Fri Jun 27 17:37:12 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vsnprintf.c (BSD_vfprintf): fix string width when precision is
- given. as the result of `memchr` is NULL or its offset from the
- start cannot exceed the size, the comparison was always false.
- [ruby-core:62737] [Bug #9861]
-
-Fri Jun 27 17:27:26 2014 Eric Wong <e@80x24.org>
-
- * process.c (proc_getgroups, proc_setgroups): use ALLOCV_N
- [Bug #9856]
-
-Fri Jun 27 17:19:22 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (io_setstrbuf): always check if the buffer is modifiable.
- [ruby-core:62643] [Bug #9847]
-
-Fri Jun 27 17:15:36 2014 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLServer#accept):
- Consider Socket#accept as well as TCPServer#accept.
- Reported by Sam Stelfox. [ruby-core:62064] [Bug #9750]
-
-Fri Jun 27 17:12:45 2014 Eric Wong <e@80x24.org>
+ * siphash.h: check configure macros before include newer headers.
- * complex.c (parse_comp): replace ALLOCA_N with ALLOCV_N/ALLOCV_END
- [Bug #9608]
- * rational.c (read_digits): ditto
+Sat Nov 10 00:37:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jun 27 17:05:23 2014 Tanaka Akira <akr@fsij.org>
+ * siphash.c (sip_init_state): use union to suppress warnings by gcc
+ 4.7.
- * lib/net/ftp.rb (transfercmd): Close TCP server socket even if an
- exception occur.
+Sat Nov 10 00:37:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jun 27 17:02:36 2014 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * random.c (rb_memhash): use siphash.
- * thread_win32.c (rb_w32_stack_overflow_handler): use Structured
- Exception Handling by AddVectoredExceptionHandler() for machine
- stack overflow on mingw.
- This would be equivalent to the handling using __try and __except
- on mswin introduced by r43748.
+Fri Nov 9 16:17:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jun 27 17:02:36 2014 NAKAMURA Usaku <usa@ruby-lang.org>
+ * file.c (append_fspath): revert a part of r37562.
- * eval_intern.h (SAVE_ROOT_JMPBUF): workaround for the failure of
- test/ruby/test_exception.rb on Windows.
- wrap by __try and __exception statements on mswin to raise SIGSEGV
- when EXCEPTION_STACK_OVERFLOW is occurred, because MSVCRT doesn't
- handle the exception.
- however, (1) mingw-gcc doesn't support __try and __exception
- statements, and (2) we cannot retry SystemStackError after this
- change yet (maybe crashed) because SEH and longjmp() are too
- uncongenial.
+ * file.c (rb_file_expand_path_internal): ditto.
- * signal.c (check_stack_overflow, CHECK_STACK_OVERFLOW): now defined on
- Windows, too.
+ * file.c (rb_file_expand_path_internal): ignore the encoding of the
+ given path name and use filesystem encoding, except when the result
+ is 8bit range and the filesystem encoding is US-ASCII.
+ [ruby-dev:39393] [Bug #2154]
- * thread_win32.c (ruby_stack_overflowed_p): ditto.
+Fri Nov 9 16:15:50 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-Fri Jun 27 16:56:38 2014 Eric Wong <e@80x24.org>
+ * test/csv/test_features.rb: add require for Tempfile.
+ * test/csv/test_serialization.rb: ditto.
- * signal.c (signal_exec): ignore immediate cmd for SIG_IGN
- * signal.c (trap_handler): set cmd to true for SIG_IGN
- * signal.c (trap): handle nil and true values for oldcmd
- [Bug #9835]
+Fri Nov 9 13:47:45 2012 Luis Lavena <luislavena@gmail.com>
-Mon Jun 23 18:51:43 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/win32ole/test_win32ole.rb (test_s_codepage_changed):
+ FileSystemObject only supports ANSI or UTF-16LE encoding.
+ Patch by bosko (Bosko Ivanisevic) [ruby-trunk - Bug #6650]
- * class.c (rb_mod_init_copy): always clear instance variable,
- constant and method tables first, regardless the source tables.
- [ruby-dev:48182] [Bug #9813]
+Fri Nov 9 13:16:16 2012 Kenta Murata <mrkn@mrkn.jp>
-Mon Jun 23 18:50:13 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * bignum.c (bigmul0): enable big_mul_toom3.
+ [ruby-core:48552] [Bug #7242]
- * thread.c (thread_start_func_2): stop if forked in a sub-thread,
- the thread has become the main thread.
- [ruby-core:62070] [Bug #9751]
+ * bignum.c (bigmul1_toom3): fix incorrect calculation.
+ the patch is made by Heesob Park.
+ [ruby-core:48552] [Bug #7242]
-Mon Jun 23 18:35:34 2014 Josh Goebel <dreamer3@gmail.com>
+Fri Nov 9 13:16:16 2012 Kenta Murata <mrkn@mrkn.jp>
- * net/protocol.rb (using_each_crlf_line): fix SMTP dot-stuffing
- for messages not ending with a new-line.
- [ruby-core:61441] [Bug #9627] [fix GH-616]
+ * bignum.c (bigmul0): disable big_mul_toom3 temporalily.
+ [ruby-core:48552] [Bug #7242]
-Mon Jun 23 18:16:07 2014 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * test/ruby/test_bignum.rb (test_mul_large_numbers):
+ add a test for bigmul1_toom3 suggested in [Bug #7242].
- * configure.in: enable SSE2 on mingw. target='i386-pc-mingw32'.
- [ruby-core:62095] [Bug #8358]
+Thu Nov 8 17:37:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Jun 23 18:16:07 2014 Tanaka Akira <akr@fsij.org>
+ * file.c (append_fspath): filesystem encoding is prior to the encoding
+ of argument.
- * configure.in: Fix compilation error.
- https://bugs.ruby-lang.org/issues/8358#note-16
+ * file.c (rb_file_expand_path_internal, EXPAND_PATH_BUFFER): ignore
+ the encoding of the given path name, use filesystem encoding always
+ instead. [ruby-dev:39393] [Bug #2154]
-Mon Jun 23 18:16:07 2014 Vit Ondruch <vondruch@redhat.com>
+ * test/ruby/test_file_exhaustive.rb: removed 2.0 spec tests.
- * configure.in: add qouting brackets and append wildcard for the
- rest after target_cpu, to properly detect platform for SSE2
- instructions. [ruby-core:60576] [Bug #8358]
+Thu Nov 8 17:33:53 2012 Luis Lavena <luislavena@gmail.com>
-Mon Jun 23 18:16:07 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/zlib/extconf.rb: Recognize zlibwapi as linking library.
+ Patch by Daniel Berger.
- * configure.in: use SSE2 instructions to drop unexpected precisions on
- other than mingw. [ruby-core:59472] [Bug #8358]
+ [ruby-core:44979] [Feature #6421]
-Mon Jun 23 18:16:07 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Nov 8 16:17:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * configure.in: use SSE2 instructions for drop unexpected
- precisions. [ruby-core:54738] [Bug #8358]
+ * test/ruby/test_dir_m17n.rb: remove a garbage.
-Mon Jun 23 17:29:53 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Nov 8 15:22:09 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * process.c (obj2uid, obj2gid): now getpwnam_r() and getgrnam_r()
- may need larger buffers than sysconf values, so retry with
- expanding the buffer when ERANGE is returned.
- [ruby-core:61325] [Bug #9600]
+ * test/ruby/test_dir_m17n.rb: sorry, typo.
-Mon Jun 23 17:20:10 2014 Tanaka Akira <akr@fsij.org>
+Thu Nov 8 14:50:02 2012 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- * ext/socket/socket.c (sock_s_getnameinfo): Save errno for EAI_SYSTEM.
- Reported by Saravana kumar. [ruby-core:61820] [Bug #9697]
- Fixed by Heesob Park. [ruby-core:61868]
+ * test/win32ole/test_win32ole_variant.rb: setting WIN32OLE.locale
+ to pass some assertion. Thanks to Hiroshi Shirosaki.
+ [ruby-core:46873][Bug #6814]
-Mon Jun 23 17:20:10 2014 Tanaka Akira <akr@fsij.org>
+Thu Nov 8 14:46:17 2012 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- * ext/socket/ipsocket.c (ip_s_getaddress): Don't access freed memory.
+ * test/win32ole/test_win32ole.rb (test_s_codepage_changed):
+ FileSystemObject only supports ANSI or UTF-16LE encoding.
+ Patch by h.shirosaki (Hiroshi Shirosaki) [ruby-trunk - Bug #6650]
-Mon Jun 23 17:20:10 2014 Tanaka Akira <akr@fsij.org>
- * ext/socket: always operate length of socket addess companion with
- socket address.
+Thu Nov 8 14:43:17 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/socket/rubysocket.h (rsock_make_ipaddr): add an argument for
- socket address length.
- (rsock_ipaddr): ditto.
+ * test/ruby/test_dir_m17n.rb: refactoring. RE should be in the left side
+ of the =~ operator, and compare the result with nil is meaningless.
- * ext/socket/ipsocket.c (ip_addr): pass length to rsock_ipaddr.
- (ip_peeraddr): ditto.
- (ip_s_getaddress): pass length to rsock_make_ipaddr.
+Thu Nov 8 14:43:17 2012 Luis Lavena <luislavena@gmail.com>
- * ext/socket/socket.c (make_addrinfo): pass length to rsock_ipaddr.
- (sock_s_getnameinfo): pass actual address length to rb_getnameinfo.
- (sock_s_unpack_sockaddr_in): pass length to rsock_make_ipaddr.
-
- * ext/socket/init.c (rsock_s_recvfrom): pass length to rsock_ipaddr.
- (rsock_s_recvfrom_nonblock): ditto.
+ * test/ruby/test_dir_m17n.rb (create_and_check_raw_file_name): add new
+ helper method to ease encoding testing. Patch by Oleg Sukhodolsky.
+ [ruby-core:46589][Bug #6765]
- * ext/socket/tcpsocket.c (tcp_sockaddr): pass length to
- rsock_make_ipaddr.
+ * test/ruby/test_dir_m17n.rb (test_filename_extutf8): use filesystem
+ encoding when reading entries and comparing.
- * ext/socket/raddrinfo.c (make_ipaddr0): add an argument for socket
- address length. pass the length to rb_getnameinfo.
- (rsock_ipaddr): ditto.
- (rsock_make_ipaddr): add an argument for socket address length.
- pass the length to make_ipaddr0.
- (make_inetaddr): pass length to make_ipaddr0.
- a local variable renamed.
- (host_str): a local variable renamed.
- (port_str): ditto.
+ * test/ruby/test_dir_m17n.rb (test_filename_utf8_raw_name): removed.
-Mon Jun 23 16:55:13 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_dir_m17n.rb (test_filename_utf8_raw_jp_name): split test.
- * parse.y (primary): flush cmdarg flags inside left-paren in a
- command argument, to allow parenthesed do-block as an argument
- without arguments parentheses. [ruby-core:61950] [Bug #9726]
+Thu Nov 8 14:16:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Jun 23 16:45:48 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/mkmf.rb (MakeMakefile#timestamp_file): use .-. instead of !, a
+ special character of NMAKE and BSD make. [Bug #7265]
- * ext/dl/cptr.c (dlptr_free), ext/dl/handle.c (dlhandle_free),
- ext/fiddle/handle.c (fiddle_handle_free),
- ext/fiddle/pointer.c (fiddle_ptr_free): fix memory leak.
- based on the patch Heesob Park at [ruby-dev:48021] [Bug #9599].
+Thu Nov 8 14:16:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed May 28 13:24:39 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/mkmf.rb (MakeMakefile#timestamp_file): use ! instead of %, a GNU
+ make special character.
- * configure.in (rb_cv_func___builtin_unreachable): try with an
- external variable not only by a warning, which might not be
- shown due to the optimization. [ruby-core:61647] [Bug #9665]
+Thu Nov 8 14:16:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed May 28 13:20:32 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/mkmf.rb (create_makefile): use timestamp for destination
+ directories to make them before making or copying files there.
+ [ruby-dev:46067] [Bug #6904]
- * ext/openssl/ossl_asn1.c (ossl_asn1_initialize): SYMID on a value
- other than Symbol is an undefined behavior. fix up r31699.
- [ruby-core:62142] [Bug #9771]
+Thu Nov 8 14:13:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed May 28 13:18:21 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in (visibility_option): visibility attribute is not
+ available before GCC 4, so do not use -fvisibility option in that
+ case. [ruby-core:48147] [Bug #7205]
- * ext/stringio/stringio.c (strio_putc): fix for non-ascii
- encoding, like as IO#putc. [ruby-dev:48114] [Bug #9765]
+Thu Nov 8 14:11:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue May 27 13:57:41 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * vm.c (rb_vm_jump_tag_but_local_jump): pass through thrown objects.
+ [ruby-dev:46234] [Bug #7185]
- * lib/fileutils.rb (FileUtils#copy_entry): update rdoc about
- preserve option and permissions, following r31123.
- [ruby-core:62065] [Bug #9748]
+ * vm_eval.c (rb_eval_cmd): if state is non-zero, val should be nil and
+ rb_vm_jump_tag_but_local_jump() just jump tag.
-Tue May 27 13:42:36 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Nov 8 14:09:18 2012 Kenta Murata <mrkn@mrkn.jp>
- * proc.c (umethod_bind): use the ancestor iclass instead of new
- iclass to get rid of infinite recursion, if the defined module
- is already included. [ruby-core:62014] [Bug #9721]
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_add),
+ test/bigdecimal/test_bigdecimal.rb:
+ need to specify precision for converting Rational and Float.
+ [ruby-core:48045] [Bug #7176]
-Tue May 27 13:42:36 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Nov 8 14:05:31 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * proc.c (rb_method_call_with_block, umethod_bind): call with
- IClass including the module for a module instance method.
- [ruby-core:61936] [Bug #9721]
+ * win32/win32.c (has_redirection): should use shell (cmd.exe) when
+ the commandline containts '&'.
+ reported by Roger Pack at [ruby-core:47912] [Bug #7143], and
+ patched by Heesob Park at [ruby-core:47931].
- * vm_insnhelper.c (vm_search_super_method): allow bound
- UnboundMethod case.
+Fri Oct 26 17:22:18 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Tue May 27 11:51:00 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * file.c (append_fspath): need to set the encoding to result always.
- * array.c (ary_reject): may be turned into a shared array during
- the given block. [ruby-dev:48101] [Bug #9727]
+Fri Oct 26 11:03:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue May 27 11:48:22 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * file.c (rb_enc_path_next, rb_enc_path_skip_prefix)
+ (rb_enc_path_last_separator, rb_enc_path_end)
+ (ruby_enc_find_basename, ruby_enc_find_extname): encoding-aware
+ path handling functions.
- * string.c (str_buf_cat): should round up the capacity by 4KiB,
- but not number of rooms. [ruby-core:61886] [Bug #9709]
+ * file.c (rb_home_dir, file_expand_path, rb_realpath_internal)
+ (rb_file_s_basename, rb_file_dirname, rb_file_s_extname)
+ (rb_file_join): should respect the encodings of arguments than
+ file system encoding. [ruby-dev:45145] [Bug #5919]
-Tue May 27 11:46:03 2014 NARUSE, Yui <naruse@ruby-lang.org>
+ * dir.c (check_dirname, ruby_glob0): ditto.
- * lib/xmlrpc/client.rb (do_rpc): don't check body length.
- If HTTP content-encoding is used, the length may be different.
- [Bug #8182] [ruby-core:53811]
+ * ext/pathname/pathname.c (path_sub_ext): ditto.
-Tue May 27 11:23:02 2014 Tadayoshi Funaba <tadf@dotrb.org>
+Fri Oct 26 11:03:46 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/date/date_core.c (d_lite_cmp): should compare with #<.
+ * util.c, include/ruby/util.h (ruby_add_suffix): remove the function.
+ [Bug #5153] [ruby-core:38736]
-Mon May 5 00:42:35 2014 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
+ * io.c (argf_next_argv): remove the call of above function.
- * ext/psych/yaml/config.h: ditto.
+ * ext/-test-/add_suffix, test/-ext-/test_add_suffix.rb: remove the test
+ extension module because this is only for testsing ruby_add_suffix().
- * ext/psych/yaml/scanner.c: ditto.
+ * LEGAL: remove the mention about a part of util.c, because now we
+ removed the part.
- * ext/psych/yaml/yaml_private.h: ditto.
+ * io.c (argf_next_argv): now the new filename is not guranteed to
+ use, so should check the return value of rename(2).
-Thu May 8 02:01:51 2014 Kenta Murata <mrkn@mrkn.jp>
+ * test/ruby/test_argf.rb (TestArgf#test_inplace_rename_impossible):
+ now we expect same result with other platforms on no_safe_rename
+ platforms (=Windows).
- * ext/bigdecimal/bigdecimal.c (BigDecimal_initialize): Insert GC guard.
+Thu Oct 25 18:16:25 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/bigdecimal/bigdecimal.c (BigDecimal_global_new): ditto.
+ * lib/rubygems/installer.rb (check_that_user_bin_dir_is_in_path):
+ test_generate_bin_bindir_with_user_install_warning(TestGemInstaller)
+ fails on Windows with msys bash. It makes comparing paths
+ case-insensitive.
+ pick from upstream to fix a failure of test-all [ruby-core:47711]
+ https://github.com/rubygems/rubygems/commit/c474edb2f3704206f04da1c8c6cf9fb079d84abe
-Thu May 8 01:51:19 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Oct 25 17:55:01 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/openssl/ossl_pkey.c (ossl_pkey_verify): as EVP_VerifyFinal()
- finalizes only a copy of the digest context, the context must be
- cleaned up after initialization by EVP_MD_CTX_cleanup() or a
- memory leak will occur. [ruby-core:62038] [Bug #9743]
+ * test/etc/test_etc.rb (TestEtc#test_getpwuid): `s' is never set to nil.
-Wed Apr 30 16:39:43 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Oct 25 16:59:17 2012 Luis Lavena <luislavena@gmail.com>
- * ext/readline/extconf.rb (rl_hook_func_t): check pointer type.
- [ruby-dev:48089] [Bug #9702]
+ * test/ruby/test_file_exhaustive.rb: fix test introduced in r36811 for
+ posix environments where HOME is not defined. [ruby-core:47322]
-Wed Apr 30 16:37:16 2014 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Oct 25 16:59:17 2012 Luis Lavena <luislavena@gmail.com>
- * win32/win32.c (rb_w32_accept, open_ifs_socket, socketpair_internal):
- reset inherit flag of socket to avoid unintentional inheritance of
- socket. note that the return value of SetHandleInformation() is not
- verified intentionally because old Windows may return an error.
- [Bug #9688] [ruby-core:61754]
+ * configure.in (mingw): add shlwapi to the list of dependency
+ libs for Windows.
+ * win32/Makefile.sub (EXTSOLIBS): ditto.
-Wed Apr 30 16:33:57 2014 Eric Wong <e@80x24.org>
+ * internal.h: declare internal functions rb_w32_init_file,
+ rb_file_expand_path_internal and rb_file_expand_path_fast.
- * time.c (time_mload): freeze and preserve marshal-loaded time zone
- * test/ruby/test_time.rb: add test for GC on loaded object
- [Bug #9652]
+ * file.c (Init_File): invoke Windows initialization rb_w32_init_file
-Wed Apr 30 16:15:09 2014 Kohei Suzuki <eagletmt@gmail.com>
+ * win32/file.c (rb_file_load_path_internal): new function.
+ Windows-specific implementation that replaces file_expand_path.
+ [Bug #6836][ruby-core:46996]
- * vm_method.c (rb_method_entry_get_without_cache): me->klass is 0
- for a method aliased in a module. [ruby-core:61636] [Bug #9663]
+ * win32/file.c (rb_w32_init_file): new function. Initialize codepage
+ cache for faster conversion encodings lookup.
-Wed Apr 30 16:15:09 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * file.c (file_expand_path): rename to rb_file_expand_path_internal.
+ Conditionally exclude from Windows.
- * vm_method.c (rb_method_entry_get_without_cache): get rid of
- infinite recursion at aliases in a subclass and a superclass.
- return actually defined class for other than singleton class.
- [ruby-core:60431] [Bug #9475]
+ * file.c (rb_file_expand_path_fast): new function. delegates to
+ rb_file_expand_path_internal without performing a hit to the
+ filesystem.
-Wed Apr 30 16:09:18 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * file.c (file_expand_path_1): use rb_file_expand_path_internal without
+ path expansion (used by require).
+ * file.c (rb_find_file_ext_safe): ditto.
+ * file.c (rb_find_file_safe): ditto.
- * vm_insnhelper.c (vm_callee_setup_arg): turn a macro into an
- inline function.
+ * load.c (rb_get_expanded_load_path): use rb_file_expand_path_fast.
+ * load.c (rb_feature_provided): ditto.
-Wed Apr 30 15:04:25 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * file.c (rb_file_expand_path): use rb_file_expand_path_internal with
+ path expansion.
+ * file.c (rb_file_absolute_path): ditto.
- * ext/readline/extconf.rb: fix typo, `$defs` not `$DEFS`.
- [ruby-core:61756] [Bug #9578]
+ * test/ruby/test_file_exhaustive.rb: new tests to exercise
+ rb_file_expand_path_internal implementation and compliance with
+ existing behaviors.
-Mon Mar 31 00:57:39 2014 James Edward Gray II <james@graysoftinc.com>
+Thu Oct 25 16:59:17 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/csv.rb: Fixed a broken regular expression that was causing
- CSV to miss escaping some special meaning characters when used
- in parsing.
- Reported by David Unric
- [ruby-core:54986] [Bug #8405]
+ * win32/file.c (INVALID_FILE_ATTRIBUTES): define for old SDK.
-Mon Mar 31 00:48:12 2014 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+Thu Oct 25 16:59:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/envutil.rb (assert_no_memory_leak): increase default value
- of `limit` keyword argument.
- assert_no_memory_leak occasionally fails with limit=1.5.
+ * win32/makedirs.bat: new command to make intermediate
+ directories, and not to report any errors if the directory
+ already exists.
-Mon Mar 31 00:15:45 2014 Shota Fukumori <her@sorah.jp>
+ * win32/Makefile.sub (MAKEDIRS): enable command extensions.
- * vm_eval.c (eval_string_with_cref): Unify to use NIL_P.
+Thu Oct 25 16:59:17 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Mon Mar 31 00:15:45 2014 Shota Fukumori <her@sorah.jp>
+ * win32/Makefile.sub (MAKEDIRS): use mkdir of cmd.exe instead of ruby.
+ [Bug #6103] [ruby-core:43012]
- * vm_eval.c (eval_string_with_cref): Use file path even if scope is
- given. Related to [ruby-core:56099] [Bug #8662] and r42103.
+ * win32/README.win32: added a notice about command extension of cmd.exe.
-Mon Mar 31 00:02:04 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Oct 25 16:59:17 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * parse.y (yycompile): store file name as String to keep the encoding.
+ * Makefile.in (PLATFORM_DIR): add a variable for `win32` directory.
+ * Makefile.in (clean-platform): add new target.
+ It cleans `win32` directory.
- * parse.y (rb_parser_compile_string_path, rb_parser_compile_file_path):
- new functions to pass file name as a String.
+ * common.mk (clean): add a dependency for `win32` directory.
+ * common.mk (distclean): ditto.
+ * common.mk (distclean-platform): add new target.
+ It cleans `win32` directory.
+ * common.mk ($(PLATFORM_D)): add new target to make `win32` directory.
+ * common.mk (win32/win32.$(OBJEXT)): move win32.o into `win32`
+ directory.
+ * common.mk (win32/file.$(OBJEXT)): add new target for win32/file.c.
- * parse.y (gettable_gen): return a copy of the original file name, not
- a copy in filesystem encoding.
+ * configure.in: move win32.o into `win32` directory and add
+ win32/file.o to MISSING.
- * vm_eval.c (eval_string_with_cref): use Qundef instead of "(eval)".
+ * file.c (file_load_ok, rb_file_load_ok): replace static
+ file_load_ok() with public rb_file_load_ok().
+ It's to link Windows implementation in win32/file.c.
+ * file.c (rb_find_file_ext_safe): ditto.
+ * file.c (rb_find_file_safe): ditto.
-Sun Mar 30 23:49:21 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * win32/file.c (rb_file_load_ok): new file. Add Windows specific
+ optimized implementation of rb_file_load_ok(). We created a
+ separated file to avoid too many #ifdef macro which is unreadable.
- * ext/openssl/ossl.c (ossl_make_error): check NULL for unknown
- error reasons with old OpenSSL, and insert a colon iff formatted
- message is not empty.
+ * win32/Makefile.sub (PLATFORM_DIR): add a variable for `win32`
+ directory.
+ * win32/Makefile.sub (MISSING): move win32.obj into `win32`
+ directory and add win32/file.obj to MISSING.
+ * win32/Makefile.sub (MAKEDIRS): replace MINIRUBY with BASERUBY.
+ It's because miniruby doesn't exist when making `win32` directory.
+ * win32/Makefile.sub (clean-platform): add new target to clean `win32`
+ directory.
+ * win32/Makefile.sub ({$(srcdir)}.c{}.obj): make it not match
+ win32/file.c to build properly.
+ * win32/Makefile.sub (win32/win32.$(OBJEXT)): move win32.obj into
+ `win32` directory.
-Thu Mar 20 21:13:18 2014 Eric Wong <e@80x24.org>
+ Patch created with Luis Lavena.
+ [ruby-core:42480] [Feature #5999]
- * variable.c (rb_const_set): delete existing entry on redefinition
- [Bug #9645]
- * test/ruby/test_const.rb (test_redefinition): test for leak
+Fri Oct 19 13:28:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Mar 20 20:44:17 2014 Kazuki Tsujimoto <kazuki@callcc.net>
+ * configure.in (opt-dir): allow multiple directories separated by
+ $PATH_SEPARATOR as well as dir_config in mkmf.rb. [ruby-core:47868]
+ [Bug #7120]
- * test/fiddle/test_c_struct_entry.rb,
- test/fiddle/test_c_union_entity.rb,
- test/fiddle/test_cparser.rb, test/fiddle/test_func.rb,
- test/fiddle/test_handle.rb, test/fiddle/test_import.rb,
- test/fiddle/test_pointer.rb: don't run test if the system
- don't support fiddle.
+Tue Oct 16 11:18:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Mar 16 00:57:20 2014 Kazuki Tsujimoto <kazuki@callcc.net>
+ * lib/mkmf.rb (dir_config, init_mkmf): use configured libdir value as
+ default library path. [ruby-core:43726] [Bug #6207]
- * ext/.document: remove refinement from documentable directories.
+Tue Oct 16 10:56:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Mar 3 01:43:30 2014 Charlie Somerville <charliesome@ruby-lang.org>
+ * file.c (rb_find_file_ext_safe, rb_find_file_safe): default to
+ US-ASCII for encdb and transdb.
- * eval_error.c (warn_printf): use rb_vsprintf instead so ruby specific
- extensions like PRIsVALUE can be used in format strings
- * eval_error.c (error_print): use warn_print_str (alias for
- rb_write_error_str) to print a string value instead of using
- RSTRING_PTR and RSTRING_LEN manually
- * eval.c (setup_exception): use PRIsVALUE instead of %s and RSTRING_PTR
+ * load.c (search_required): keep encoding of feature name. set
+ loading path to filesystem encoding. [Bug #6377][ruby-core:44750]
-Mon Mar 3 01:32:14 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ruby.c (add_modules, require_libraries): assume default external
+ encoding as well as ARGV.
- * ext/readline/extconf.rb (rl_hook_func_t): define as Function for
- very old readline versions. [ruby-core:61209] [Bug #9578]
+Tue Oct 16 10:47:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Mar 3 01:32:14 2014 Tanaka Akira <akr@fsij.org>
+ * random.c (random_s_rand): ensure default PRNG is re-initialized
+ after fork. patched by Eric Wong. [ruby-core:41209][Bug #5661]
- * ext/readline/readline.c (Init_readline): Use rl_hook_func_t instead
- of Function to support readline-6.3. (rl_hook_func_t is available
- since readline-4.2.)
- Reported by Dmitry Medvinsky. [ruby-core:61141] [Bug #9578]
+Tue Oct 16 10:21:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Mar 3 01:25:28 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ruby.c (rb_f_sub, rb_f_gsub): pass the given block.
+ [ruby-core:47967] [Bug #7157]
- * eval.c (setup_exception): preserve errinfo across calling #to_s
- method on the exception. [ruby-core:61091] [Bug #9568]
+Tue Oct 16 09:47:47 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Mon Mar 3 01:00:00 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_regexp.rb
+ (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): use
+ Regexp.new instead of literal to ignore a parser warning.
- * numeric.c (ruby_num_interval_step_size): check signs and get rid
- of implementation dependent behavior of negative division.
- [ruby-core:61106] [Bug #9570]
+Tue Oct 16 09:47:47 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Mon Mar 3 00:43:33 2014 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * test/ruby/test_regexp.rb
+ (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): ignoring
+ warnings are already set in setup method.
- (merged partially from r42781)
- * test/ruby/test_numeric.rb (assert_step): introduce assert_step.
+Sun Oct 14 01:21:42 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Mon Mar 3 00:24:38 2014 Zachary Scott <e@zzak.io>
+ * regparse.c (parse_char_class): should match with a hyphen after a
+ range in a character class.
- * README.EXT.ja: [DOC] Fix typo "macro macro" @utenmiki [Fixes GH-551]
- https://github.com/ruby/ruby/pull/551
+ * test/ruby/test_regexp.rb (TestRegexp#test_char_class): fixed wrong
+ test.
-Sat Feb 22 22:11:58 2014 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/ruby/test_regexp.rb (TestRegexp#check): now can accept the
+ error message.
- * ext/io/console/console.c (console_dev): need read access for conout$
- because some functions need it. [Bug#9554]
+ * test/ruby/test_regexp.rb
+ (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): renamed
+ because the previous name was wrong.
-Sat Feb 22 14:01:42 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_regexp.rb
+ (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): added
+ more test pattern.
- * iseq.c (iseq_load): keep type_map to get rid of memory leak.
- based on a patch by Eric Wong at [ruby-core:59699]. [Bug #9399]
+Sat Oct 13 01:41:38 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Sat Feb 22 13:56:38 2014 Charlie Somerville <charliesome@ruby-lang.org>
+ * regparse.c (parse_char_class): also need to check the type of token
+ after raw hyphen in regexp class, because the charcter code area
+ is union'ed with the property of TK_CHAR_TYPE.
+ reported by Bushi Zhang at [ruby-core:47115] [Backport #6853].
- * compile.c (iseq_build_from_ary_body): Use :blockptr instead of :block
- as hash key when loading serialized instruction sequences from arrays.
- [Bug #9455] [ruby-core:60146]
+Sat Oct 13 01:39:46 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Sat Feb 22 13:04:54 2014 Shugo Maeda <shugo@ruby-lang.org>
+ * test/ruby/test_regexp.rb
+ (TestRegexp#test_raw_hyphen_and_type_char_after_range): added new
+ test. ref [ruby-core:47115] [Backport #6853]
- * ext/socket/init.c (wait_connectable): break if the socket is
- writable to avoid infinite loops on FreeBSD and other platforms
- which conforms to SUSv3. This problem cannot be reproduced with
- loopback interfaces, so it's hard to write test code.
- rsock_connect() and wait_connectable() are overly complicated, so
- they should be refactored, but I commit this fix as a workaround
- for the release of Ruby 1.9.3 scheduled on Feb 24.
- [ruby-core:60940] [Bug #9547]
+Fri Oct 12 18:19:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Feb 22 12:55:24 2014 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * file.c (rb_get_path_check): path name must not contain NUL bytes.
- (merged partially from r42927)
- * lib/rubygems/core_ext/kernel_require.rb: Backport a fix for concurrent
- requires. [ruby-core:58918] [Backport #9224]
- see also https://github.com/rubygems/rubygems/pull/833
+Fri Oct 12 17:51:43 2012 Shugo Maeda <shugo@ruby-lang.org>
-Sat Feb 22 11:50:52 2014 Eric Wong <e@80x24.org>
+ * error.c (exc_to_s, name_err_to_s, name_err_mesg_to_str): do not
+ taint messages.
- * ext/socket/ancdata.c (bsock_sendmsg_internal): only retry on error
- (bsock_recvmsg_internal): ditto
- * test/socket/test_unix.rb: test above for infinite loop
+Fri Oct 12 16:11:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Feb 22 11:44:50 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in (LIBDIR_BASENAME): use configured libdir value to fix
+ --enable-load-relative on systems where libdir is not default value,
+ overridden in config.site files. [ruby-core:47267] [Bug #6903]
- * class.c (rb_mod_init_copy): do nothing if copying self.
- [ruby-dev:47989] [Bug #9535]
+ * ruby.c (ruby_init_loadpath_safe): ditto.
- * hash.c (rb_hash_initialize_copy): ditto.
+Fri Oct 12 13:56:01 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-Thu Feb 20 02:14:18 2014 Zachary Scott <e@zzak.io>
+ * test/rexml/test_encoding.rb:
+ Add require 'require 'rexml/document'
- * ext/openssl/lib/openssl/buffering.rb: Fix warning in copyright
+Fri Oct 12 13:36:32 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Thu Feb 20 02:14:18 2014 Zachary Scott <e@zzak.io>
+ * numeric.c (flodivmod): must through the same pass if HAVE_FMOD or not.
+ this is a bugfix of r35013.
- * ext/openssl/lib/openssl/buffering.rb: [DOC] Fix HEREDOC comment for
- OpenSSL::Buffering which breaks overview because of RDoc bug
+Fri Oct 12 13:28:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Thu Feb 20 02:04:09 2014 Eric Hodel <drbrain@segment7.net>
+ * io.c (rb_cloexec_fcntl_dupfd): get rid of compile error on windows.
+ reported by Donovan Lampa at [ruby-core:43152] [Backport #6127],
+ based on a patch by Hiroshi Shirosaki at [ruby-core:47917].
- * ext/.document: Add syslog/lib to documentable items. [Bug #9228]
+Fri Oct 12 00:30:17 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Thu Feb 20 01:54:08 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * io.c (ioctl_narg_len, linux_iocparm_len): reinstantiate linux
+ specific narg length calculation.
+ * test/ruby/test_io.rb (test_ioctl_linux2): add new test for old and
+ unstructured ioctl.
- * vm_insnhelper.c (vm_search_super_method): when super called in a
- bound UnboundMethod generated from a module, no superclass is
- found since the current defined class is the module, then call
- method_missing in that case. [ruby-core:59619] [Bug #9377]
+Fri Oct 12 00:30:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Feb 20 01:33:06 2014 Eric Hodel <drbrain@segment7.net>
+ * io.c (ioctl_narg_len): don't use _IOC_SIZE macro on Linux.
+ On Linux some constants for ioctl(2) doesn't include the size of
+ its return value and 16bit value; for example FIONREAD 0x541B.
+ Moreover the manual, ioctl_list(2), says "Note that the size
+ bits are very unreliable: in lots of cases they are wrong,
+ either because of buggy macros using sizeof(sizeof(struct)),
+ or because of legacy values."
+ So we shouldn't use it.
- * lib/optparse.rb: The Integer acceptable now allows binary and
- hexadecimal numbers per the documentation. [ruby-trunk - Bug #8865]
+Tue Sep 25 09:30:36 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- DecimalInteger, OctalInteger, DecimalNumeric now validate their input
- before converting to a number. [ruby-trunk - Bug #8865]
+ * win32/mkexports.rb: should not export DllMain().
+ reported by luis at [ruby-core:46743] [Bug #6790], solved by
+ Heesob Park, and confirmed by nobu.
- * test/optparse/test_acceptable.rb: Tests for the above, tests for all
- numeric acceptables for existing behavior.
+Mon Sep 24 16:34:07 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-Thu Feb 20 01:23:36 2014 Aaron Pfeifer <aaron.pfeifer@gmail.com>
+ * include/ruby/win32.h (rb_w32_pow): add new function.
+ We use powl() instead of broken pow() for x64-mingw32. This workaround
+ fixes test failures related to floating point numeric.
+ [ruby-core:46686] [Bug #6784]
- * thread.c (terminate_atfork_i): fix locking mutexes not unlocked in
- forks when not tracked in thread. [ruby-core:55102] [Bug #8433]
+Mon Sep 24 10:38:55 2012 Luis Lavena <luislavena@gmail.com>
-Tue Feb 18 23:48:03 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/win32ole/test_win32ole_method.rb (is_ruby64?): Correct platform
+ used to identify mingw-w64 (x64-mingw32). Patch by Hiroshi Shirosaki.
+ [ruby-core:46651][Bug #6782]
- * test/ruby/envutil.rb (assert_separately): require envutil in the
- child process too.
+Mon Sep 24 10:37:56 2012 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Feb 18 22:38:01 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/test/unit/parallel.rb: workaround fix for rubygems.
+ RubyGems can't find rake if the source directory is not equal to
+ the directory which is running the test. [Bug #6604]
- * test/ruby/envutil.rb (Test::Unit::Assertions#assert_separately):
- specify the encoding of source.
+Fri Sep 21 19:53:38 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Mon Feb 17 02:00:36 2014 Tanaka Akira <akr@fsij.org>
+ * ext/dl/cfunc.c (rb_dlcfunc_call): should convert a Bignum value to
+ unsigned long long on Win64.
+ [ruby-core:44636][Bug #6364] reported by raylinn@gmail.com (ray linn)
- * lib/open-uri.rb: Make proxy disabling working again.
- Fixed by Christophe Philemotte. [ruby-core:59650] [Bug #9385]
+Fri Sep 21 18:45:20 2012 Luis Lavena <luislavena@gmail.com>
-Mon Feb 17 01:57:45 2014 Benoit Daloze <eregontp@gmail.com>
+ * include/ruby/win32.h: undef stat to silence mingw-w64 stat
+ redefinition warnings (GCC 4.6.3).
- * range.c (Range#size): [DOC] improve description and add examples.
- Patch by @skade. [Fixes GH-501]
+Fri Sep 21 17:54:54 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Feb 17 01:51:49 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in: add -Wall always.
- * lib/webrick/htmlutils.rb (WEBrick::HTMLUtils#escape): replace HTML
- meta chars even in non-ascii string. [Bug #8425] [ruby-core:55052]
+Thu Sep 20 10:23:37 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/webrick/httputils.rb (WEBrick::HTTPUtils#{_escape,_unescape}):
- fix %-escape encodings. [Bug #8425] [ruby-core:55052]
+ * thread_pthread.c (native_cond_initialize): destroy condattr
+ after using it. Patch by Stanislav Sedov. Thank you.
+ [Bug #7041] [ruby-core:47619]
-Mon Feb 17 01:51:49 2014 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Sun Sep 9 23:01:43 2012 Tanaka Akira <akr@fsij.org>
- * test/webrick/test_htmlutils.rb: add test for WEBrick::HTMLUtils.
+ * ext/zlib/extconf.rb: detect z_crc_t type which will be defined
+ since zlib-1.2.7.
-Mon Feb 17 01:41:59 2014 Masaki Matsushita <glass.saga@gmail.com>
+ * ext/zlib/zlib.c (rb_zlib_crc_table): use z_crc_t if available.
- * array.c (rb_hash_rehash): use hash_alloc() instead of rb_hash_new().
- [Bug #9187]
+Sun Sep 9 02:44:21 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Feb 17 01:41:59 2014 Masaki Matsushita <glass.saga@gmail.com>
+ * ext/zlib/extconf.rb: Use an exception instaed of bare puts.
- * hash.c (rb_hash_rehash): make temporary st_table under the control
- of GC. [Bug #9187]
+Sun Sep 9 02:44:21 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/ruby/test_hash.rb: add a test for above.
+ * ext/psych/extconf.rb: Use an exception instaed of bare abort.
-Mon Feb 17 01:41:59 2014 Masaki Matsushita <glass.saga@gmail.com>
+Sun Sep 9 02:44:21 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * hash.c (rb_hash_rehash): fix to free new st_table when exception
- is raised in do_hash(). [Bug #9187]
+ * ext/fiddle/extconf.rb: Use an exception instaed of bare abort.
-Mon Feb 17 01:18:04 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Sep 9 02:44:21 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * eval.c (rb_mod_s_constants): return its own constants for other
- than Module itself. [ruby-core:59763] [Bug #9413]
+ * ext/readline/extconf.rb: Use an exception instead of bare exit.
-Mon Feb 17 01:16:00 2014 Eric Wong <e@80x24.org>
+Sun Sep 9 02:34:39 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/json/generator/depend: add build dependencies for json extension
- [Bug #9374] [ruby-core:59609]
- * ext/json/parser/depend: ditto
+ * ext/extmk.rb: Show a message when extconf.rb raised an exception.
+ * ext/openssl/extconf.rb: Use exception raising instead of message
+ and/or abort. We want to display error message to console _and_
+ logging into mkmf.log.
-Mon Feb 17 01:12:57 2014 Yusuke Endoh <mame@tsg.ne.jp>
+Sun Sep 9 02:30:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/fiddle/closure.c: use sizeof(*pcl) for correct sizeof value.
- [ruby-core:57599] [Bug #8978].
+ * thread.c (rb_mutex_lock): stop multiple threads use
+ pthread_cond_timedwait() concurrently. [Bug #6278] [ruby-core:44275]
-Mon Feb 17 01:12:57 2014 Aaron Patterson <aaron@tenderlovemaking.com>
+Thu Aug 30 09:24:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/fiddle/closure.c: use sizeof(*pcl) for correct sizeof value.
- [ruby-core:57599] [Bug #8978]. Thanks mame!
+ * lib/uri/ftp.rb (URI::FTP#initialize): raise InvalidURIError if "//"
+ is not present [ruby-core:47344] [Bug #6945]
-Mon Feb 17 01:09:52 2014 Eric Wong <e@80x24.org>
+Tue Aug 28 00:40:14 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * benchmark/driver: avoid large alloc in driver process
- [ruby-core:59869] [Bug #9430]
+ * test/webrick/test_cgi.rb (TestWEBrickCGI#start_cgi_server): there are
+ no guarantee of existance of RbConfig::CONFIG['LIBPATHENV'].
+ it only exists in Unix-like environments.
-Mon Feb 17 00:59:40 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/webrick/test_filehandler.rb
+ (WEBrick::TestFileHandler#test_script_disclosure): ditto.
- * thread_pthread.c (rb_thread_create_timer_thread): fix for platforms
- where PTHREAD_STACK_MIN is a dynamic value and not a compile-time
- constant. [ruby-dev:47911] [Bug #9436]
+Thu Aug 23 12:08:25 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-Mon Feb 17 00:59:40 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_file_exhaustive.rb
+ (TestFileExhaustive#test_stat_special_file): add a test.
+ GetFileAttributesExW fails to get attributes of special files
+ such as pagefile.sys.
- * thread_pthread.c (rb_thread_create_timer_thread): expand timer
- thread stack size to get rid of segfault on FreeBSD/powerpc64.
- based on the patch by Steve Wills at [ruby-core:59923].
- [ruby-core:56590] [Bug #8783]
+ * win32/win32.c (check_valid_dir): for performance, check the path
+ by FindFirstFileW only if the path contains "...".
-Mon Feb 17 00:45:44 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * win32/win32.c (winnt_stat): use GetFileAttributesExW instead of
+ FindFirstFileW since GetFileAttributesExW is faster.
+ Based on the patch by Dusan D. Majkic.
+ [ruby-core:47083] [Feature #6845]
- * string.c (rb_str_modify_expand): enable capacity and disable
- association with packed objects when setting capa, so that
- pack("p") string fails to unpack properly after modified.
+Thu Aug 23 11:19:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Feb 16 01:36:57 2014 Aaron Patterson <aaron@tenderlovemaking.com>
+ * thread_pthread.c (ruby_init_stack): STACK_GROW_DIR_DETECTION is
+ necessary on platforms with unknown stack direction. [Bug #6761]
- * ext/psych/yaml/emitter.c: merge libyaml 0.1.5
- * ext/psych/yaml/loader.c: ditto
- * ext/psych/yaml/parser.c: ditto
- * ext/psych/yaml/reader.c: ditto
- * ext/psych/yaml/scanner.c: ditto
- * ext/psych/yaml/writer.c: ditto
- * ext/psych/yaml/yaml_private.h: ditto
+Thu Aug 23 11:19:51 2012 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Feb 16 01:02:32 2014 Zachary Scott <e@zzak.io>
+ * thread_pthread.c (get_stack): Linux is the only OS which includes
+ the size of guard page into the stack size.
- * lib/racc/rdoc/grammar.en.rdoc: [DOC] Correct grammar and typos
- Patch by Giorgos Tsiftsis [Bug #9429] [ci skip]
+Thu Aug 23 11:19:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Feb 16 01:00:45 2014 Zachary Scott <e@zzak.io>
+ * gc.h (IS_STACK_DIR_UPPER): utility macro.
- * lib/open-uri.rb: [DOC] use lower case version of core classes, same
- as commit r44878, based on patch by Jonathan Jackson [Bug #9483]
+ * thread_pthread.c (get_stack): seems stack size does not include
+ guard size on Mac OS X.
-Sun Feb 16 01:00:45 2014 Zachary Scott <e@zzak.io>
+ * thread_pthread.c (ruby_init_stack): adjust stack size for offset of
+ addr from the bottom.
- * ext/ripper/lib/ripper/lexer.rb: [DOC] use lower case version of core
- classes when referring to return value, since we aren't directly
- talking about the class. Patch by Jonathan Jackson [Bug #9483]
+Thu Aug 23 11:19:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Feb 16 00:57:13 2014 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * thread_pthread.c (ruby_init_stack): use stack info if possible.
- * variable.c: [DOC] adding extra example in docs.
- patched by Steve Klabnik. [Bug #9210]
+Mon Aug 20 17:11:01 2012 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Feb 16 00:54:50 2014 Tanaka Akira <akr@fsij.org>
+ * file.c (file_path_convert): don't convert it when the path string is
+ ascii only. [ruby-core:41556] [Bug #5733]
+ tests are contributed by nobu.
- * lib/resolv.rb (Resolv::DNS::Resource::TXT#data): Return concatenated
- string.
- Patch by Ryan Brunner. [ruby-core:58220] [Bug #9093]
+Thu Aug 9 22:48:58 2012 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Feb 16 00:50:59 2014 Zachary Scott <e@zzak.io>
+ * pack.c (pack_unpack): when unpack('M') occurs an illegal byte
+ sequence, output the "=" character and the following character in
+ the decoded data without any transformation.
+ [ruby-dev:44875] [Bug #5635]
- * ext/openssl/ossl_pkey_dh.c: Fixed typo by Sandor Szuecs [Bug #9243]
+Tue Jul 31 10:36:12 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-Sun Feb 16 00:47:36 2014 Zachary Scott <e@zzak.io>
+ * ext/psych/lib/psych.rb: updated to released version.
- * lib/xmlrpc/client.rb: [DOC] Remove note about SSL package on RAA
- Since RAA has been deprecated, and the SSL package has been replaced
- with net/https this statement is entirely false and should be
- deleted. [Bug #9152]
+ * ext/psych/psych.gemspec: ditto
-Sun Feb 16 00:44:51 2014 Zachary Scott <e@zzak.io>
+Thu Jul 19 09:33:46 2012 Aaron Patterson <aaron@tenderlovemaking.com>
- * lib/net/smtp.rb: [DOC] Remove dead link to RAA by Giorgos Tsiftsis
- Fixes the following bugs: [Bug #9152] [Bug #9268] [Bug #9394]
- * lib/open-uri.rb: ditto
+ * ext/psych/emitter.c (initialize): allow a configuration object to be
+ passed to the constructor so that mutation isn't required after
+ instantiation.
-Sun Feb 16 00:27:04 2014 Masaki Matsushita <glass.saga@gmail.com>
+ * ext/psych/lib/psych/handler.rb: add configuration object
- * hash.c (rb_hash_assoc): revert r42224. table->type->compare is
- called only if hashes are matched.
+ * ext/psych/lib/psych/visitors/emitter.rb: use configuration object if
+ extra configuration is present.
- * test/ruby/test_hash.rb: add a test to check using #== to compare.
+Tue Jul 17 03:56:34 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-Sun Feb 16 00:27:04 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/psych/lib/psych/visitors/to_ruby.rb: strings with YAML anchors
+ are properly referenced. Patched by Joe Rafaniello via Github:
+ https://github.com/tenderlove/psych/pull/69
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: ditto
+ * test/psych/test_alias_and_anchor.rb: test for change
- * hash.c (rb_hash_initialize_copy): copy st_table type even if empty.
- [ruby-core:56256] [Bug #8703]
+Sat Jun 16 01:27:14 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-Sun Feb 16 00:27:04 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/psych/lib/psych.rb: bumping psych to 1.3.3
+ * ext/psych/psych.gemspec: ditto
- * hash.c (rb_hash_initialize_copy): clear old table before copy new
- table.
+Fri May 18 15:53:05 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sun Feb 16 00:27:04 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/psych/extconf.rb: Use an exception instaed of bare abort.
- * hash.c (rb_hash_assoc): aggregate object can be initialized only
- with link time constants.
+Fri May 18 01:28:21 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-Sun Feb 16 00:27:04 2014 Masaki Matsushita <glass.saga@gmail.com>
+ * ext/psych/parser.c (transcode_string): fix encoding index names.
+ Thanks markizko for reporting.
- * hash.c (rb_hash_assoc): performance improvement by replacing
- compare function in RHASH(hash)->ntbl->type temporarily.
+Wed May 16 05:11:29 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-Sun Feb 16 00:01:16 2014 Tanaka Akira <akr@fsij.org>
+ * ext/psych/lib/psych/visitors/to_ruby.rb: fix a bug with string
+ subclass dumping and loading.
- * lib/resolv.rb: Ignore name servers which cause EAFNOSUPPORT on
- socket creation.
- Reported by Bjoern Rennhak. [ruby-core:60442] [Bug #9477]
+ * test/psych/test_array.rb: pertinent tests
-Sat Feb 15 23:58:31 2014 Tanaka Akira <akr@fsij.org>
+ * test/psych/test_string.rb: ditto
- * lib/resolv.rb (Resolv::DNS::Message::MessageDecoder): Raise
- DecodeError if no data before the limit.
- Reported by Will Bryant. [ruby-core:60557] [Bug #9498]
+Wed May 16 01:31:21 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-Sat Feb 15 23:46:31 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/psych/lib/psych/visitors/to_ruby.rb: convert omap tagged maps to
+ Psych::Omap objects rather than hashes. [Bug #6425]
- * parse.y (IDSET_ATTRSET_FOR_INTERN): fix off-by-one bug.
+ * test/psych/test_omap.rb: pertinent test.
- * parse.y (rb_enc_symname_type): junk ID succeeded by '=' is also
- attrset ID. [ruby-core:60668] [Bug #8756]
+Wed May 16 01:15:45 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-Sat Feb 15 23:42:04 2014 Richo Healy <richo@psych0tik.net>
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: keep a reference to
+ custom coders so that GC does not impact dumped yaml reference ids.
- * test/ruby/test_struct.rb: Add regression test for question marks and
- bangs in struct members. [Closes GH-468]
+Mon Apr 30 04:43:53 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-Sat Feb 15 23:26:31 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/psych/lib/psych/json/yaml_events.rb: implicit styles should not
+ be changeable for JSON events.
- * struct.c (new_struct): fix warning message, class name and encoding.
+Sun Jul 29 04:32:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Feb 15 16:08:26 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in (ruby_pc): make configurable. [Bug #6051]
- * struct.c (make_struct): avoid inadvertent symbol creation.
- (rb_struct_aref): ditto.
- (rb_struct_aset): ditto.
+Sun Jul 29 04:32:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Feb 15 15:32:46 2014 Shugo Maeda <shugo@ruby-lang.org>
+ * template/ruby.pc.in: added rubylibprefix, {rubylib,vendor,site}dir
+ and {ruby,vendor,site}archdir. [ruby-core:42766][Feature #6052]
- * vm_insnhelper.c (vm_call_method): should check ci->me->flag of
- a refining method in case the method is private.
- [ruby-core:60111] [Bug #9452]
+Sun Jul 29 04:31:01 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * vm_method.c (make_method_entry_refined): set me->flag of a refined
- method entry to NOEX_PUBLIC in case the original method is private
- and it is refined as a public method. The original flag is stored
- in me->def->body.orig_me, so it's OK to make a refined method
- entry public. [ruby-core:60111] [Bug #9452]
+ * bignum.c: Added #include <strings.h> for ffs(). Patch by Perry
+ Smith. Thank you. [Bug #6748]
- * test/ruby/test_refinement.rb: related tests.
+Sat Jul 28 04:04:01 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Feb 11 23:21:02 2014 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * include/ruby/intern.h (rb_num_zerodiv): Added NORETURN.
+ Patched by Xi Wang. [Bug #6736]
- * test/ruby/test_struct.rb (test_struct_question_mark): add a testcase
- for Struct attribute with question mark. the patch was originally
- written by Eric Wong [ruby-core:59095] [Backport #9248]
+Wed Jul 4 19:36:17 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Tue Feb 11 23:21:02 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/dl/cfunc.c (rb_dlcfunc_call): also needed the workaround for VC8
+ for x64. [ruby-dev:45875] [Bug #6676]
+ reported by aves_ramphastos (Seigo Ishigane)
- * parse.y (rb_id_attrset, intern_str): allow junk attrset ID for
- Struct.
+Tue Jul 3 19:37:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * parse.y (rb_id_attrset): fix inconsistency with literals, allow
- ID_ATTRSET and return it itself, but ID_JUNK cannot make ID_ATTRSET.
- and raise a NameError instead of rb_bug() for invalid argument.
+ * file.c (rmext): no extension to strip if empty string.
-Tue Feb 11 23:21:02 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * proc.c (rb_vm_rewrite_dfp_in_errinfo): Fix `unexpected return'
+ occurs when a proc is called in ensure. [Backport #6460]
- * parse.y (rb_enc_symname_type): allow ID_ATTRSET for ID_INSTANCE,
- ID_GLOBAL, ID_CLASS, ID_JUNK too. [Bug #8756]
+Tue Jul 3 11:44:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Feb 11 23:21:02 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * file.c (rb_enc_path_next, rb_enc_path_skip_prefix)
+ (rb_enc_path_last_separator, rb_enc_path_end)
+ (ruby_enc_find_basename, ruby_enc_find_extname): encoding-aware
+ path handling functions.
- * parse.y (rb_id_attrset): allow other than ID_ATTRSET.
+ * file.c (rb_home_dir, file_expand_path, rb_realpath_internal)
+ (rb_file_s_basename, rb_file_dirname, rb_file_s_extname)
+ (rb_file_join): should respect the encodings of arguments than
+ file system encoding. [ruby-dev:45145] [Bug #5919]
- * parse.y (intern_str): ditto. try stem ID for ID_INSTANCE,
- ID_GLOBAL, ID_CLASS, ID_JUNK too. [Bug #8756]
+ * dir.c (check_dirname, ruby_glob0): ditto.
-Tue Feb 11 23:21:02 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/pathname/pathname.c (path_sub_ext): ditto.
- * parse.y (rb_id_attrset): check if the argument is valid type as an
- attribute.
+Tue Jul 3 11:43:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Feb 11 00:26:19 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * dir.c (dir_chdir, check_dirname): get rid of optimization-out.
- * file.c (GetLastError): already defined in windows.h on nowadays
- cygwin, and caused the confliction with the system provided
- definition on cygwin64. by @kou1okada [Fixes GH-433].
+Thu Jun 28 17:57:49 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Mon Feb 10 01:15:10 2014 Kouhei Sutou <kou@cozmixng.org>
+ * win32/win32.c (is_socket, is_console): add prototypes to fix compile
+ problem with gcc introduced at r32549.
- * ext/socket/raddrinfo.c (nogvl_getaddrinfo): Fix indent.
+Wed Jun 27 08:31:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Feb 10 01:15:10 2014 Kouhei Sutou <kou@cozmixng.org>
+ * insns.def (splatarray): make new array if flag is set.
- * ext/socket/raddrinfo.c (nogvl_getaddrinfo): Add missing return
- value assignment.
+ * compile.c (iseq_compile_each): make new array with
+ splat. [ruby-core:21901][Feature #1125]
-Mon Feb 10 01:15:10 2014 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Jun 27 04:23:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/socket/raddrinfo.c (nogvl_getaddrinfo): work around for Ubuntu
- 13.04's getaddrinfo issue with mdns4. [ruby-list:49420]
+ * win32/win32.c (rb_w32_sysinit): let the system not display the
+ critical-error-handler message box and the Windows Error Reporting
+ dialog. [ruby-core:45389] [Bug #6535]
-Mon Feb 10 00:42:12 2014 Masaki Matsushita <glass.saga@gmail.com>
+Wed Jun 27 04:20:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/thread/thread.c (rb_szqueue_clear): notify SZQUEUE_WAITERS
- on SizedQueue#clear. [ruby-core:59462] [Bug #9342]
+ * bignum.c (rb_big_pow): estimate result bit size more precisely.
+ [ruby-core:30735][Feature #3429]
- * test/thread/test_queue.rb: add test. the patch is from
- Justin Collins.
+Tue Jun 26 20:36:53 2012 Tanaka Akira <akr@fsij.org>
-Mon Feb 10 00:27:33 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/drb/ssl.rb: generate 1024 bits RSA key instead of 512 bits.
+ OpenSSL 1.0.1 rejects 512 bits RSA key for TLS1.2 with SHA512.
+ http://rt.openssl.org/Ticket/Display.html?id=2769&user=guest&pass=guest
+ reported by Bohuslav Kabrda.
+ [ruby-core:43844] [ruby-trunk - Bug #6221]
- * parse.y (local_push_gen, local_pop_gen): save cmdarg_stack to
- isolate command argument state from outer scope.
- [ruby-core:59342] [Bug #9308]
+Tue Jun 26 20:35:59 2012 Eric Hodel <drbrain@segment7.net>
-Mon Feb 10 00:02:18 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/zlib/zlib.c (do_inflate): Inflate more data if buffered data
+ exists. Allows Zlib::Inflate#set_dictionary to work.
+ [ruby-trunk - Bug #5929]
- * dir.c (glob_helper): don't skip current directories if FNM_DOTMATCH
- is given. [ruby-core:53108] [Bug #8006]
+Thu Jun 21 13:42:57 2012 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Feb 5 23:39:36 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * thread.c (rb_threadptr_execute_interrupts_common):
+ test_signal_requiring of test/ruby/test_signal.rb fail if the sub
+ process is killed on waiting IO in lex_io_gets in rb_load_file in
+ rb_load_internal in require.
+ This is because
+ (1) the process receive the killing signal in
+ rb_thread_io_blocking_region in rb_read_internal in lex_io_gets.
+ (2) set th->errinfo as INT2FIX(TAG_FATAL) at
+ rb_threadptr_execute_interrupts_common.
+ (3) escape rb_load_file in rb_load_internal and jump to EXEC_TAG()
+ without set loaded as TRUE.
+ (4) call first rb_exc_raise(GET_THREAD()->errinfo); because loaded
+ is FALSE as above. this errinfo should be an exception object
+ but this is INT2FIX(TAG_FATAL).
+ Don't call first rb_exc_raise if GET_THREAD()->errinfo is Fixnum.
- * parse.y (intern_str): sigil only names are junk, at least one
- identifier character is needed. [ruby-dev:47723] [Bug #8928]
+Mon Jun 11 19:56:22 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * parse.y (rb_enc_symname_type): fix out of bound access.
+ * test/webrick/test_cgi.rb (class TestWEBrickCGI): respect
+ RbConfig::CONFIG["LIBPATHENV"]. [Bug #5135] [ruby-core:38653]
+ * test/webrick/test_filehandler.rb (class WEBrick): ditto.
-Wed Feb 5 22:54:52 2014 Kazuki Tsujimoto <kazuki@callcc.net>
+Tue Jun 5 14:03:53 2012 Akinori MUSHA <knu@iDaemons.org>
- * time.c (get_timeval, get_new_timeval): use rb_obj_class()
- instead of CLASS_OF() because CLASS_OF() may return
- a singleton class.
+ * lib/ipaddr.rb: Inhibit zero-filled octets in an IPv4 address in
+ all platforms. [ruby-dev:45671]
-Sun Feb 2 05:48:42 2014 Eric Wong <e@80x24.org>
+ * lib/ipaddr.rb: Allow the x:x:x:x:x:x:d.d.d.d form not limited to
+ IPv4 mapped/compatible addresses. This change also makes it
+ possible for the parser to understand IPv4 mapped and compatible
+ IPv6 addresses in non-compressed form.
- * io.c (rb_io_syswrite): add RB_GC_GUARD
- [Bug #9472][ruby-core:60407]
+ * lib/ipaddr.rb: Stop exposing IPSocket.valid*? methods which were
+ only usable on non-IPv6-ready platforms.
-Fri Jan 31 00:51:50 2014 Shugo Maeda <shugo@ruby-lang.org>
+Sat Jun 2 18:49:39 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * configure.in: use $@ instead of $(.TARGET) because .TARGET is not
- supported by GNU make.
+ * string.c (rb_enc_cr_str_buf_cat): don't reset coderange as unknown.
+ the condition 'ptr_a8 && str_cr != ENC_CODERANGE_7BIT' means not
+ unknown, str is also ASCII-8BIT because str_encindex == ptr_encindex,
+ and nont (str_cr == ENC_CODERANGE_UNKNOWN) and
+ str_cr != ENC_CODERANGE_7BIT means str_cr is valid because ASCII-8BIT
+ can't be broken. [ruby-dev:45688] [Bug #6509]
-Fri Jan 31 00:49:41 2014 Yamashita Yuu <yamashita@geishatokyo.com>
+Wed May 30 17:19:56 2012 Eric Hodel <drbrain@segment7.net>
- * ext/openssl/ossl_ssl.c (Init_ossl_ssl): Declare a constant
- `OP_MSIE_SSLV2_RSA_PADDING` only if the macro is defined. The
- `SSL_OP_MSIE_SSLV2_RSA_PADDING` has been removed from latest
- snapshot of OpenSSL 1.0.1. [Fixes GH-488]
+ * ext/zlib/zlib.c (do_inflate): Inflate more data if buffered data
+ exists. Allows Zlib::Inflate#set_dictionary to work.
+ [ruby-trunk - Bug #5929]
-Thu Jan 23 21:08:16 2014 Shota Fukumori <her@sorah.jp>
+Mon May 28 11:40:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm_insnhelper.c (check_match): Fix SEGV with VM_CHECKMATCH_TYPE_CASE
- and class of `pattern` has `method_missing`
- [Bug #8882] [ruby-core:58606]
+ * io.c (rb_io_extract_modeenc): fail only if conflicting
+ text/binary modes given explicitly. [ruby-dev:45268][Bug #6055]
-Mon Jan 20 01:02:18 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri May 25 17:18:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/bigdecimal/bigdecimal.c (CLASS_NAME): macro to wrap
- depending on PRIsVALUE for 1.9. [Backport #9406]
+ * parse.y (f_arglist): should reset lexical states after empty
+ argument list with no parenthesis as well as parenthesized list,
+ so that reserved name method definition work. [ruby-dev:45626]
+ [Bug #6403]
- * ext/bigdecimal/bigdecimal.c (DECIMAL_SIZE_OF_BITS): fallback
- definition for 2.1 or older. [ruby-core:59750] [Backport #9406]
+Fri May 25 10:40:31 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-Sun Jan 12 22:46:49 2014 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * include/ruby/win32.h (FD_SET): change function to macro.
+ To avoid buffer overflow when smaller FD_SETSISE is used in ext
+ libraries.
- patch inspired from r44260 on trunk. [ruby-core:58652] [Bug #9168]
+ * win32/win32.c (rb_w32_fdset): this function is not used anymore.
+ But we leave this for compatibility.
- * gc.c (run_finalizer): clear th->errinfo before invoke finalizer and
- restore afterward.
+ * win32/win32.c (rb_w32_select_with_thread): fix SEGV when smaller
+ FD_SETSISE is used in ext libraries. Dereference of fd_set pointer
+ causes SEGV.
- * test/ruby/test_gc.rb (test_exception_in_finalizer): add test for
+ * test/-ext-/win32/test_fd_setsize.rb(TestFdSetSize): add tests for
above.
+ * ext/-test-/win32/fd_setsize/depend: ditto.
+ * ext/-test-/win32/fd_setsize/extconf.rb: ditto.
+ * ext/-test-/win32/fd_setsize/fd_setsize.c: ditto.
- * vm_trace.c (rb_threadptr_exec_event_hooks_orig): clear th->errinfo
- before invoke hook.
-
-Sun Jan 12 16:07:52 2014 vo.x (Vit Ondruch) <vondruch@redhat.com>
-
- * tool/rbinstall.rb (Gem::Specification#collect): make stable
- Gem::Specification.files in default .gemspecs the different order of
- "files" in .gemspec files makes them different therefore possibly
- conflicting in multilib scenario. patch by vo.x (Vit Ondruch) at
- [ruby-core:57544] [Bug #8623].
-
-Sun Jan 12 16:01:54 2014 Tanaka Akira <akr@fsij.org>
-
- * test/openssl/test_cipher.rb (test_aes_gcm_wrong_tag): Don't use
- String#succ because it can make modified (wrong) auth_tag longer
- than 16 bytes. The longer auth_tag makes that
- EVP_CIPHER_CTX_ctrl (and internally aes_gcm_ctrl) fail.
- [ruby-core:55143] [Bug #8439] reported by Vit Ondruch.
-
-Sun Jan 12 15:33:11 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * util.c (ruby_qsort): fix potential stack overflow on a large
- machine. based on the patch by Conrad Irwin <conrad.irwin AT
- gmail.com> at [ruby-core:51816]. [Bug #7772]
-
-Sun Jan 12 15:17:00 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/tk/tkutil/tkutil.c: use rb_sprintf(), rb_id2str(), and
- rb_intern_str() instead of rb_intern() and RSTRING_PTR() with
- RB_GC_GUARD(), to prevent temporary objects from GC.
- [ruby-core:39000] [Bug #5199]
-
-Tue Jan 7 01:16:34 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * proc.c (mnew_from_me): keep iclass as-is, to make inheritance
- chain consistent. [ruby-core:59358] [Bug #9315]
-
- * proc.c (method_owner): return the original defined_class from
- prepended iclass, instead.
-
-Tue Jan 7 01:16:34 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_insnhelper.c (vm_search_super_method): direct superclass of a
- module is found when super called in a Method object generated a
- method defined in a module, call method_missing in that case.
- [ruby-core:59358] [Bug #9315]
-
-Fri Jan 3 22:25:23 2014 Aman Gupta <ruby@tmm1.net>
-
- * test/net/imap/cacert.pem: generate new CA cert, since the last one
- expired. [Bug #9341] [ruby-core:59459]
- * test/net/imap/server.crt: new server cert signed with updated CA.
- * test/net/imap/Makefile: add `make regen_certs` to automate this
- process.
-
-Wed Dec 25 00:46:44 2013 Eric Hodel <drbrain@segment7.net>
-
- * lib/net/smtp.rb (Net::SMTP#critical): Always return a
- Net::SMTP::Response. Patch by Pawel Veselov.
- [ruby-trunk - Bug #9125]
- * test/net/smtp/test_smtp.rb: Test for the above.
-
-Wed Dec 25 00:18:19 2013 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/lib/socket.rb: Don't test $! in "ensure" clause because
- it may be set before the body.
- Reported by ko1 and mrkn. [ruby-core:59088] [Bug #9247]
-
- * lib/cgi/core.rb: Ditto.
-
- * lib/drb/ssl.rb: Ditto.
-
-Tue Dec 24 00:18:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (configuration): strip destdir part from prefix to get
- rid of duplication. a patch by arton at [ruby-core:58859].
- [ruby-core:58856] [Bug #9213]
-
-Mon Dec 23 22:37:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * proc.c (mnew_from_me): method by respond_to_missing? should be
- owned by the original class.
-
-Sun Dec 22 22:56:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * proc.c (mnew_from_me): achieve the original defined_class from
- prepended iclass, to fix inherited owner.
-
- * proc.c (method_owner): return the defined class, but not the
- class which the method object is created from.
-
-Sun Dec 22 22:56:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * proc.c (method_owner): return the class where alias is defined, not
- the class original method is defined.
-
- * vm_method.c (rb_method_entry_make, rb_alias): store the originally
- defined class in me. [Bug #7993] [Bug #7842] [Bug #9236]
-
- * vm_method.c (rb_method_entry_get_without_cache): cache included
- module but not iclass.
-
-Sun Dec 22 00:07:09 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * insns.def: Fix optimization bug of Float#/ [Bug #9238]
-
-Sat Dec 21 23:13:55 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval_jump.c (rb_exec_end_proc): unlink and free procs data before
- calling for each procs. [Bug #9110]
-
-Sat Dec 21 23:13:55 2013 Masaki Matsushita <glass.saga@gmail.com>
-
- * eval_jump.c (rb_exec_end_proc): fix double free or corruption error
- when reentering by callcc. [ruby-core:58329] [Bug #9110]
-
- * test/ruby/test_beginendblock.rb: test for above.
-
-Sat Dec 21 22:55:03 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/resolv.rb (Resolv::Hosts#lazy_initialize): should not
- consider encodings in hosts file. [ruby-core:59239] [Bug #9273]
-
- * lib/resolv.rb (Resolv::Config.parse_resolv_conf): ditto.
-
-Sat Dec 21 22:51:51 2013 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/Makefile.sub (fake.rb): fixed wrong RUBY_PLATFORM, to correctly
- install win32.h.
- [ruby-core:58801][Bug #9199] reported by arton.
-
-Sat Dec 21 16:16:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * gc.c (finalize_deferred): flush all deferred finalizers while other
- finalizers can get ready to run newly by lazy sweep.
- [ruby-core:58833] [Bug #9205]
-
-Sat Dec 21 16:07:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby_atomic.h (ATOMIC_PTR_EXCHANGE): atomic exchange function for
- a generic pointer.
-
-Sat Dec 21 15:50:13 2013 Masaki Matsushita <glass.saga@gmail.com>
-
- * ruby_atomic.h: remove duplicate definisions between ATOMIC_XXX
- and ATOMIC_SIZE_XXX.
-
-Sat Dec 21 15:50:13 2013 Masaki Matsushita <glass.saga@gmail.com>
-
- * ruby_atomic.h: define ATOMIC_SIZE_CAS() with
- __atomic_compare_exchange_n() and refactoring.
-
-Sat Dec 21 15:50:13 2013 Masaki Matsushita <glass.saga@gmail.com>
-
- * ruby_atomic.h: use __atomic builtin functions supported by GCC.
- __sync family are legacy functions now and it is recommended
- that new code use the __atomic functions.
- http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html
-
- * configure.in: check existence of __atomic functions.
-
-Sat Dec 21 15:37:11 2013 Naohisa Goto <ngotogenome@gmail.com>
-
- * ruby_atomic.h (ATOMIC_SIZE_CAS): fix compile error on Solaris
- since r43460.
-
-Sat Dec 21 15:37:11 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby_atomic.h (ATOMIC_SIZE_CAS): new macro, compare and swap size_t.
-
-Sat Dec 21 15:37:11 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby_atomic.h (rb_w32_atomic_cas): call InterlockedCompareExchange
- directly.
-
- * ruby_atomic.h (ATOMIC_CAS): fix missing function call.
-
-Sat Dec 21 15:37:11 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby_atomic.h (ATOMIC_CAS): suppress C4022 and C4047 warnings in
- VC6. only InterlockedCompareExchange is declared using PVOID.
-
-Sat Dec 21 14:54:37 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-
- * ext/bigdecimal/lib/bigdecimal/util.rb: [DOC] remove example of
- Rational#to_d without argument. [Bug #8958]
-
-Sat Dec 21 14:54:37 2013 Zachary Scott <e@zzak.io>
-
- * ext/bigdecimal/lib/bigdecimal/util.rb: [DOC] +precision+ is required
-
-Sat Dec 21 14:54:37 2013 Zachary Scott <e@zzak.io>
-
- * ext/bigdecimal/lib/bigdecimal/util.rb: [DOC] Document the required
- +precision+ argument for Rational#to_d [Bug #8958]
-
-Sat Dec 21 03:46:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/date/date_strptime.c (date__strptime_internal): unset
- case-insensitive flag for [:alpha:], which already implies both
- cases, to get rid of backtrack explosion. [ruby-core:58984]
- [Bug #9221]
-
-Sat Dec 21 03:46:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/date/date_parse.c (parse_time): unset case-insensitive flag
- for [:alpha:], which already implies both cases, to get rid of
- backtrack explosion. [ruby-core:58876] [Bug #9221]
-
-Fri Dec 13 00:23:01 2013 NARUSE, Yui <naruse@ruby-lang.org>
-
- * enumerator.c (enumerator_with_index): try to convert given offset to
- integer. fix bug introduced in r39594.
-
-Mon Dec 2 23:31:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * enumerator.c (enumerator_with_index): should not store local variable
- address to memoise the arguments. it is invalidated after the return.
- [ruby-core:58692] [Bug #9178]
-
-Mon Dec 2 23:16:50 2013 Eric Hodel <drbrain@segment7.net>
-
- * enumerator.c (enumerator_with_index): Restore handling of a nil memo
- from r39594.
-
-Mon Dec 2 22:53:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (rb_readlink): fix buffer overflow on a long symlink. since
- rb_str_modify_expand() expands from its length but not its capacity,
- need to set the length properly for each expansion.
- [ruby-core:58592] [Bug #9157]
-
-Fri Nov 29 00:31:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (Doxyfile): tool/file2lastrev.rb needs running with
- BASERUBY since r43617. [ruby-dev:47823] [Bug #9169]
-
-Fri Nov 22 13:18:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * util.c (ruby_strtod): BigMath requires more precision.
-
-Fri Nov 22 12:46:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * util.c (ruby_strtod): ignore too long fraction part, which does not
- affect the result.
-
-Wed Nov 20 15:20:00 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-
- * test/ruby/test_thread.rb (test_mutex_unlock_on_trap): extend waiting
- time to invocation of signal handler from 0.01 sec to 0.2 sec.
- RubyCI report error on mswin. reported by @unak
-
-Wed Nov 13 11:57:01 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-
- * lib/rubygems: Update to RubyGems 2.0.14. [ruby-core:58300]
- [Backport #9104]
- the patch is provided by drbrain (Eric Hodel).
-
-Tue Nov 12 23:41:43 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * load.c (rb_feature_p): deal with default loadable suffixes.
-
- * load.c (load_lock): initialize statically linked extensions.
-
- * load.c (search_required, rb_require_safe): deal with statically
- linked extensions.
-
- * load.c (ruby_init_ext): defer initialization of statically linked
- extensions until required actually. [Bug #8883]
-
-Tue Nov 12 23:41:43 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * load.c (ruby_init_ext): share feature names between frame name and
- provided features.
-
-Tue Nov 12 23:33:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/rbinstall.rb (Gem::Specification.load): obtain spec date from
- VCS for the case using git, RUBY_RELEASE_DATE is the last resort.
- probably fixes [Bug #9085].
-
-Tue Nov 12 23:24:35 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (RUNRUBY): append -- only after runruby.rb, not
- cross-compiling baseruby, so that $(RUN_OPT) can be command line
- options. [ruby-dev:47703] [Bug #8893]
-
-Tue Nov 12 23:24:35 2013 Masaki Matsushita <glass.saga@gmail.com>
-
- (partially merged from r42862)
- * common.mk: use RUNRUBY instead of MINIRUBY because MINIRUBY can't
- require extension libraries. The patch is from nobu
- (Nobuyoshi Nakada).
-
-Mon Nov 11 23:54:51 2013 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/init.c (cloexec_accept): Fix a compile error on
- Debian GNU/kFreeBSD. Consider HAVE_ACCEPT4 is defined
- but SOCK_CLOEXEC is not defined.
-
-Mon Nov 11 22:14:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/win32.h (rb_infinity_float): suppress overflow in
- constant arithmetic warnings. [ruby-core:57981] [Bug #9044]
-
-Mon Nov 11 22:14:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/Makefile.sub (config.h): VC 2013 supports C99 mathematics
- functions. [ruby-core:57981] [Bug #9044]
-
-Thu Oct 31 22:28:04 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
-
- * test/openssl/test_pkey_ec.rb: Skip tests for "Oakley" curves as
- they are not suitable for ECDSA.
- [ruby-core:54881] [Bug #8384]
-
-Thu Oct 31 22:28:04 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
-
- * ext/openssl/ossl_pkey_ec.c: Ensure compatibility to builds of
- OpenSSL with OPENSSL_NO_EC2M defined, but OPENSSL_NO_EC not
- defined.
- * test/openssl/test_pkey_ec.rb: Iterate over built-in curves
- (and assert their non-emptiness!) instead of hard-coding them, as
- this may cause problems with respect to the different availability
- of individual curves in individual OpenSSL builds.
- [ruby-core:54881] [Bug #8384]
-
- Thanks to Vit Ondruch for providing the patch!
-
-Sun Oct 27 01:04:28 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-
- * lib/rubygems: Update to RubyGems 2.0.13. [ruby-core:58031]
- [Backport #9052]
- the patch is provided by drbrain (Eric Hodel).
-
-Sat Oct 26 16:04:36 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-
- * gc.c (gc_prof_set_heap_info): fix compile error when
- GC_PROFILE_MORE_DETAIL != 0.
- the patch is provided by ko1 (Koichi Sasada).
-
-Thu Oct 24 23:27:12 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-
- * lib/rubygems: Update to RubyGems 2.0.12. [ruby-core:57818]
- [Backport #9014]
- the patch is provided by drbrain (Eric Hodel).
-
-Thu Oct 24 22:49:28 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * parse.y: Remove +(binary) and -(binary) special cases
- [Feature #9048]
-
-Thu Oct 24 22:36:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * encoding.c (load_encoding): should preserve outer errinfo, so that
- expected exception may not be lost. [ruby-core:57949] [Bug #9038]
-
-Fri Oct 18 02:10:00 2013 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_insnhelper.c (vm_call_method): set ci->me to 0 when the
- original method of a refined method is undef to avoid SEGV.
-
- * vm_method.c (rb_method_entry_without_refinements): return 0 when
- the original method of a refined method is undef to avoid SEGV.
-
- * test/ruby/test_refinement.rb: related test.
-
-Fri Oct 18 02:05:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/file.c (rb_file_expand_path_internal): fix memory leaks at
- a non-absolute home exception.
-
-Thu Oct 10 01:14:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * compar.c (cmp_eq): fail if recursion. [ruby-core:57736] [Bug #9003]
-
- * thread.c (rb_exec_recursive_paired_outer): new function which is
- combinnation of paired and outer variants.
-
-Thu Oct 10 01:07:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/tempfile.rb (Tempfile#unlink): finalizer is no longer needed
- after unlinking. patched by by normalperson (Eric Wong) at
- [ruby-core:56521] [Bug #8768]
-
-Thu Oct 10 00:58:39 2013 Benoit Daloze <eregontp@gmail.com>
-
- * test/ruby/test_array.rb (test_count): add a test case for #count
- with an argument. See Bug #8654.
-
-Thu Oct 10 00:58:39 2013 Benoit Daloze <eregontp@gmail.com>
-
- * array.c (rb_ary_count): check length to avoid SEGV
- while iterating. Remove other pointer loop when arg is given.
-
- * test/ruby/test_array.rb (test_count): add test for bug.
- [ruby-core:56072] [Bug #8654]
-
-Thu Oct 10 00:58:39 2013 Masaki Matsushita <glass.saga@gmail.com>
-
- * array.c (rb_ary_count): iterate items appropriately.
- [Bug #8654]
-
-Thu Oct 10 00:44:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * process.c (rb_fork_internal): remove cloexec setting on pipes
- created by rb_cloexec_pipe. patch by normalperson (Eric Wong) at
- [ruby-core:56523]. [Bug #8769]
-
-Thu Oct 10 00:24:01 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * cont.c: disable FIBER_USE_NATIVE on GNU/Hurd because it doesn't
- support a combination getcontext() and threads. Patch by
- Gabriele Giacone (1o5g4r8o@gmail.com). [Bug #8990][ruby-core:57685]
-
-Mon Oct 7 21:03:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in, win32/Makefile.sub (FIBER_USE_NATIVE): move conditions
- from cont.c
-
-Thu Oct 10 00:17:56 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/dl/test_base.rb: {libc, libm} detection now handle GNU/Hurd
- correctly. Patch by Gabriele Giacone (1o5g4r8o@gmail.com).
- [Bug #8937][ruby-core:57311]
- * test/fiddle/helper.rb: ditto.
-
-Thu Oct 10 00:00:30 2013 Tanaka Akira <akr@fsij.org>
-
- * lib/time.rb (Time.strptime): Time.strptime('0', '%s') returns local
- time Time object as Ruby 2.0 and before.
-
-Thu Oct 10 00:00:30 2013 Tanaka Akira <akr@fsij.org>
-
- * lib/time.rb (Time.strptime): Use :offset.
- Patch by Felipe Contreras. [ruby-core:57694]
-
-Wed Oct 9 23:32:37 2013 Koichi Sasada <ko1@atdot.net>
-
- * gc.c (rb_gc_disable): do rest_sweep() before disable GC.
- This fix may solve a failure of
- TestTracepointObj#test_tracks_objspace_events
- [test/-ext-/tracepoint/test_tracepoint.rb:43].
-
-Sat Oct 5 02:14:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (rb_io_close_read): duplex IO should wait its child process
- even after close_read.
-
-Sat Oct 5 02:14:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (rb_io_close_read): keep fptr in write_io to be discarded, to
- fix freed pointer access when it is in use by other threads, and get
- rid of potential memory/fd leak.
-
-Sat Oct 5 01:59:50 2013 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_method.c (rb_undef): raise a NameError if the original method
- of a refined method is not defined.
-
- * vm_insnhelper.c (rb_method_entry_eq): added NULL check to avoid SEGV.
-
- * test/ruby/test_refinement.rb: related test.
-
-Sat Oct 5 00:16:33 2013 NARUSE, Yui <naruse@ruby-lang.org>
-
- * process.c (rb_daemon): daemon(3) is implemented with fork(2).
- Therefore it needs rb_thread_atfork(). (and revert r41903)
-
-Sat Oct 5 00:16:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * process.c (fork_daemon): kill the other threads all and abandon the
- kept mutexes.
-
-Sat Oct 5 00:16:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ [ruby-core:44588] [Bug #6352]
- * process.c (fork_daemon): kill the other threads all and abandon the
- kept mutexes.
+Fri May 25 10:38:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Oct 1 00:28:40 2013 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
+ * io.c (io_strip_bom): check EOF. [Bug #6487][ruby-core:45203]
- * tool/make-snapshot: Fix order of priority for option parameter.
+Fri May 25 10:36:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Sep 28 21:40:40 2013 Kenichi Kamiya <kachick1@gmail.com>
+ * parse.y (f_arglist): should reset lexical states after empty
+ argument list with no parenthesis as well as parenthesized list,
+ so that reserved name method definition work. [ruby-dev:45626]
+ [Bug #6403]
- * random.c (rb_random_ulong_limited): coerce before check negative.
- [Fixes GH-379]
+Mon May 21 16:24:40 2012 Akinori MUSHA <knu@iDaemons.org>
-Fri Sep 27 01:24:20 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * ext/syslog/syslog.c (mSyslog_inspect): Use rb_sprintf().
- * lib/rubygems: Update to Rubygems 2.0.10. [ruby-core:57360]
- [Backport #8950]
- the patch is provided by drbrain (Eric Hodel).
- this update contains a security fix for CVE-2013-4363.
+ * ext/syslog/syslog.c (mSyslog_inspect): Make sure self is a
+ module before calling rb_class2name().
-Fri Sep 27 01:11:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat May 19 14:42:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * parse.y (lambda): adjust position to the beginning of the block.
+ * test/drb/drbtest.rb ({DRbCore,DRbAry}#teardown}: cannot pass SIGTERM
+ to another process on Windows, so use SIGINT instead.
-Fri Sep 27 01:02:59 2013 NARUSE, Yui <naruse@ruby-lang.org>
+Sat May 19 14:42:20 2012 Tanaka Akira <akr@fsij.org>
- * lib/uri/generic.rb (URI::Generic.find_proxy): return nil if
- http_proxy environment variable is empty string.
- [ruby-core:57140] [Bug #8898]
+ * lib/drb/ssl.rb: generate 1024 bits RSA key instead of 512 bits.
+ OpenSSL 1.0.1 rejects 512 bits RSA key for TLS1.2 with SHA512.
+ http://rt.openssl.org/Ticket/Display.html?id=2769&user=guest&pass=guest
+ reported by Bohuslav Kabrda.
+ [ruby-core:43844] [ruby-trunk - Bug #6221]
-Fri Sep 27 00:58:57 2013 Zachary Scott <e@zzak.io>
+Sat May 19 14:41:45 2012 Tanaka Akira <akr@fsij.org>
- * lib/gserver.rb: [DOC] correct gserver.rb license [Bug #8913]
+ * test/drb/drbtest.rb: rescue Errno::ESRCH for Process.kill.
+ reported by NARUSE, Yui. [ruby-dev:45551]
-Sun Sep 15 23:15:32 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+Sat May 19 14:41:09 2012 Tanaka Akira <akr@fsij.org>
- * lib/rubygems: Update to Rubygems 2.0.9. [ruby-core:57183]
- [Backport #8908]
- the patch is provided by drbrain (Eric Hodel).
+ * lib/drb/extservm.rb (DRb::ExtServManager): don't use /bin/sh to
+ invoke service subprocess. mark detach threads for clean up.
-Sun Sep 15 22:59:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/drb/drbtest.rb: clean up the service subprocess in teardown.
- * tool/rbinstall.rb (Gem::Specification#initialize): default date to
- RUBY_RELEASE_DATE. [ruby-core:57072] [Bug #8878]
+ * test/drb/test_drb.rb: set @service_name for teardown.
- * tool/rbinstall.rb (Gem::Specification#to_ruby): add date.
+ * test/drb/test_drbunix.rb: ditto.
-Sun Sep 15 22:55:44 2013 Zachary Scott <e@zzak.io>
+ * test/drb/test_drbssl.rb: ditto.
- * hash.c (rb_hash_aset): [DOC] Document key dup patch by @kachick
- [Fixes GH-382] https://github.com/ruby/ruby/pull/382
+Sat May 19 14:40:49 2012 Tanaka Akira <akr@fsij.org>
-Sun Sep 15 22:03:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/drb/ssl.rb: close accepted TCP socket if SSL accept is failed.
+ [ruby-dev:45541]
- * vsnprintf.c (MAXEXP, MAXFRACT): calculate depending on constants in
- float.h.
+Sat May 19 14:39:50 2012 Tanaka Akira <akr@fsij.org>
- * vsnprintf.c (BSD_vfprintf): limit length for cvt() to get rid of
- buffer overflow. [ruby-core:57023] [Bug #8864]
+ * lib/webrick/utils.rb: fix fcntl call.
- * vsnprintf.c (exponent): make expbuf size more precise.
+ * lib/drb/unix.rb: ditto.
-Sat Sep 14 00:01:20 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+Fri May 18 18:13:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rubygems: Update to RubyGems 2.0.8. [ruby-core:57155]
- [Backport #8900]
- the patch is provided by drbrain (Eric Hodel).
- this update contains a security fix for CVE-2013-4287.
+ * lib/mkmf.rb (MakeMakefile#configuration): keep space at end of
+ OUTFLAG and COUTFLAG. [ruby-dev:45650]
-Fri Sep 13 23:20:29 2013 Kenichi Kamiya <kachick1@gmail.com>
+Fri May 18 00:04:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * object.c (Init_Object): undef Module#prepend_features on Class, as
- well as Module#append_features. [Fixes GH-376]
+ * win32/win32.c (rb_w32_fstat, rb_w32_fstati64): convert FILETIME
+ to time_t directly, not to be affected by TZ unnecessarily.
- * test_class.rb: Added test for above. And ensure type checking
- on similar methods as module_function.
+ * win32/win32.c (unixtime_to_filetime): convert time_t to FILETIME
+ simply.
-Fri Sep 13 23:16:12 2013 Zachary Scott <e@zzak.io>
+Wed May 16 01:07:46 2012 Aaron Patterson <aaron@tenderlovemaking.com>
- * enumerator.c: [DOC] Remove reference to Enumerator::Lazy#cycle
- Patch by @kachick [Fixes GH-372]
- https://github.com/ruby/ruby/pull/372
+ * ext/digest/md5/extconf.rb: use pkg_config for openssl so that
+ customized ssl paths are used for linking. Backports fixes for
+ [ruby-core:44755].
+ * ext/digest/rmd160/extconf.rb: ditto
+ * ext/digest/sha1/extconf.rb: ditto
+ * ext/digest/sha2/extconf.rb: ditto
-Fri Sep 13 22:40:28 2013 Koichi Sasada <ko1@atdot.net>
+Mon May 14 17:14:10 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
- * vm_insnhelper.c (vm_search_super_method): use ci->argc instead of
- ci->orig_argc. ci->argc can be changed by splat arguments.
- [ruby-list:49575]
- This fix should be applied to Ruby 2.0.0 series.
+ * test/ruby/test_io.rb (test_flush_in_finalizer1): don't use IO.for_fd
+ to close IO objects. it create IO object with already closed fd, and
+ cause occasional Errno::EBADF in following tests. [ruby-core:45020]
+ [Bug #6228]
- * test/ruby/test_super.rb: add a test for above.
+Mon May 14 17:14:10 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-Fri Sep 13 01:44:54 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/ruby/test_io.rb (TestIO): revert r35631. it broke the intent of
+ test_flush_in_finalizer1. [ruby-core:43951] [Bug ##6228]
- * thread.c (rb_mutex_unlock): Mutex#unlock no longer raise
- an exception even if uses on trap. [Bug #8891]
+Mon May 14 13:18:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Sep 13 01:09:59 2013 Shota Fukumori <sorah@tubusu.net>
+ * parse.y (parser_tokadd_string): insert a backslash only if
+ quoted by single quotes. [ruby-dev:45281] [Bug #6069]
- * vm_backtrace.c (vm_backtrace_to_ary): Ignore the second argument if
- it is nil. [Bug #8884] [ruby-core:57094]
+Mon May 14 13:17:57 2012 Luis Lavena <luislavena@gmail.com>
- * test/ruby/test_backtrace.rb (test_caller_with_nil_length):
- Test for above.
+ * test/ruby/test_io.rb (class TestIO): Disable GC during IO tests to
+ avoid file descriptors being GC'ed. Suggestion by Tomoyuki Chikanaga
+ [ruby-core:43951][Bug #6228]
-Fri Sep 13 00:57:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri May 11 14:09:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * class.c (method_entry_i): should exclude refined methods from
- instance method list. [ruby-core:57080] [Bug #8881]
+ * ext/bigdecimal/bigdecimal.c (PUSH): to prevent VALUE from GC,
+ must not cast it to unsigned long, which may be shorter than
+ VALUE, and the result can be mere garbage.
-Fri Sep 13 00:33:09 2013 Charlie Somerville <charliesome@ruby-lang.org>
+Fri May 11 01:04:54 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * vm_eval.c (vm_call0): fix prototype, the id parameter should be of
- type ID, not VALUE
+ * io.c (io_unread): fix IO#pos with mode 'r' bug on Windows.
+ If the end of reading buffer is CR, io_unread() needs to unread one
+ more byte.
+ [ruby-core:44874] [Bug #6401]
- * vm_insnhelper.c (check_match): the rb_funcall family of functions
- does not care about refinements. We need to use
- rb_method_entry_with_refinements instead to call === with
- refinements. Thanks to Jon Conley for reporting this bug.
- [ruby-core:57051] [Bug #8872]
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#test_pos_with_buffer_end_cr):
+ add a test for above.
- * test/ruby/test_refinement.rb: add test
+Wed May 9 15:59:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Sep 13 00:18:55 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in (RUBY_WERROR_FLAG): append all warning flags which
+ are enabled to compile, so that printf format modifiers properly
+ fail. [ruby-core:41351] [Bug #5679]
- * enumerator.c (lazy_zip_func): fix non-single argument. fix
- out-of-bound access and pack multiple yielded values.
- [ruby-core:56383] [Bug #8735]
+Mon May 7 20:23:29 2012 Tanaka Akira <akr@fsij.org>
-Thu Sep 12 01:44:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/securerandom.rb (random_bytes): call to_int method for the
+ argument at first.
- * string.c (str_gsub): use BEG(0) for whole matched position not
- return value from rb_reg_search(), for \K matching.
- [ruby-dev:47694] [Bug #8856]
+Mon May 7 20:23:29 2012 Tanaka Akira <akr@fsij.org>
-Thu Sep 12 01:34:07 2013 Charlie Somerville <charliesome@ruby-lang.org>
+ * lib/securerandom.rb: show actual read length in an error message.
- * object.c (rb_class_inherited_p): allow iclasses to be tested for
- inheritance. [Bug #8686] [ruby-core:56174]
+Mon May 7 11:09:20 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * test/ruby/test_method.rb: add test
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal): define IDs before
+ they are used. [ruby-core:44900] [Bug #6406]
-Thu Sep 12 01:18:44 2013 Michal Rokos <michal@rokos.cz>
+Fri Apr 27 11:02:33 2012 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
- * configure.in (sys/pstat.h): fix missing header check for
- missing/setproctitle.c on HP-UX. [ruby-core:56644] [Bug #8792]
+ * test/rinda/test_rinda.rb (test_core_03_notify): Fixed test failures
+ [ruby-dev:44430] [Ruby 1.9 - Bug #372]
-Thu Sep 12 01:02:56 2013 Benoit Daloze <eregontp@gmail.com>
+Fri Apr 27 08:29:51 2012 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
- * test/ruby/test_time.rb: use the in_timezone() helper
- and define it at the top with other helpers.
+ * test/rinda/test_rinda.rb: fix sticks on some testsf problem
+ [Bug #6272]
-Thu Sep 12 01:02:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Apr 25 05:56:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * time.c (time_mload): ignore auxiliary data, offset and zone, if
- invalid. [ruby-core:56648] [Bug #8795]
+ * lib/optparse.rb (OptionParser#to_a): split for each lines.
+ [ruby-dev:45568][Bug #6348]
-Thu Sep 12 00:22:22 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+Tue Apr 24 21:20:39 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * variable.c (classname): the name of class that has
- non class id should not be nil. This bug was introduced
- in r36577.
+ * lib/optparse.rb (OptionParser#to_a): should split by end-of-line,
+ and MUST TEST IT, MUST RUN THE TEST, MUST VERIFY BEFORE BACKPORT.
+ [ruby-dev:45568][Bug #6348]
- * test/thread/test_cv.rb: test for change.
+Tue Apr 24 14:55:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Aug 29 21:51:33 2013 Eric Hodel <drbrain@segment7.net>
+ * lib/optparse.rb (OptionParser#to_a): String#to_a is no longer
+ defined. [ruby-dev:45568][Bug #6348]
- * ext/zlib/zlib.c (zstream_run): Fix handling of deflate streams that
- need a dictionary but are being decompressed by Zlib::Inflate.inflate
- (which has no option to set a dictionary). Now Zlib::NeedDict is
- raised instead of crashing. [ruby-trunk - Bug #8829]
- * test/zlib/test_zlib.rb (TestZlibInflate): Test for the above.
+Sat Apr 21 07:16:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Aug 29 21:28:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * strftime.c (rb_strftime_with_timespec): fix padding of time zone
+ offset. [ruby-dev:43287][Bug #4458]
- * vm_insnhelper.c (vm_call_method): a method entry refers the based
- class/module, so should search superclass from the origin i-class
- where the entry belongs to, to get rid of infinite loop when zsuper
- in a prepended class/module. [ruby-core:54105] [Bug #8238]
+ * strftime.c (rb_strftime_with_timespec): add an interim digit for
+ the timezone offset which is less than an hour.
-Fri Aug 23 01:16:00 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * strftime.c (rb_strftime_with_timespec): fix carry-up bug and
+ overwrite '+' with '-' if negative offset less than a hour.
+ [ruby-core:44447][Bug #6323]
- * ext/date/date_parse.c (rfc2822_cb): check if wday is given, since it
- can be omitted.
+Fri Apr 20 12:30:06 2012 Eric Hodel <drbrain@segment7.net>
-Fri Aug 23 00:55:02 2013 Tanaka Akira <akr@fsij.org>
+ * lib/rubygems/ssl_certs/AddTrustExternalCARoot.pem: Removed to avoid
+ conflict with ca-bundle.pem
+ * lib/rubygems/ssl_certs/VerisignClass3PublicPrimaryCertificationAuthority-G2.pem:
+ ditto.
+ * lib/rubygems/ssl_certs/Entrust_net-Secure-Server-Certification-Authority.pem:
+ ditto.
- * gc.c (getrusage_time): Fallback clock_gettime to getrusage when
- clock_gettime fails.
- Reported by Eric Saxby. [ruby-core:56762] [Bug #8805]
-
-Sat Aug 17 00:42:12 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+Fri Apr 20 08:30:55 2012 Eric Hodel <drbrain@segment7.net>
- * parse.y: fix build error with bison-3.0.
+ * lib/rubygems: Update to RubyGems 1.8.23 which contains security
+ fixes:
-Sat Aug 17 00:39:20 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+ RubyGems now disallows redirection from HTTPS to HTTP.
- * test/webrick/test_cgi.rb (TestWEBrickCGI#{start_cgi_server,test_cgi}):
- mswin is not only mswin32 but also mswin64. [Bug #8746]
+ RubyGems now verifies SSL connections.
-Sat Aug 17 00:36:24 2013 Charlie Somerville <charliesome@ruby-lang.org>
+ See https://github.com/rubygems/rubygems/blob/1.8/History.txt for
+ changes since 1.8.22.
+ * test/rubygems: ditto.
- * test/openssl/test_ssl.rb: Fix test for CVE-2013-4073.
- Patch by Antonio Terceiro. [Bug #8750] [ruby-core:56437]
+Fri Apr 20 07:39:50 2012 Eric Hodel <drbrain@segment7.net>
-Sat Aug 17 00:32:17 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * lib/rubygems: Update to RubyGems 1.8.22 plus r33517 and r35337 which
+ were ported to the rubygems git repository.
- * lib/rubygems: update to RubyGems 2.0.7. the patch by drbrain.
- [ruby-core:56633] [Backport #8787]
+ See https://github.com/rubygems/rubygems/blob/1.8/History.txt for
+ changes since 1.8.11.
-Sat Aug 10 23:59:47 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/rubygems: ditto.
- * test/coverage/test_coverage.rb (TestCoverage#test_big_code): use `1'
- instead of `p' to get rid of a side effect.
- Kernel#p without any argument seems to do nothing, but flushes stdout.
- and, if stdout is redirected to file, fsync() will be called on
- Windows. so, when running test-all on Windows with redirection, such
- as CI environment, this test took a lot of time.
+ * lib/rubygems/version.rb: Fixed init_with warning by calling into
+ yaml_initialize (for syck) from psych's init_with
-Sun Aug 4 22:42:16 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Apr 19 12:55:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * win32/win32.c (wrename): use MoveFileExW instead of MoveFileW,
- because the latter fails on cross device file move of some
- environments.
- fix [ruby-core:53492] [Bug #8109]
- reported by mitchellh (Mitchell Hashimoto)
+ * ext/-test-/win32/dln/extconf.rb: need import library for ordinal
+ entry even on mingw. [ruby-core:44441][Bug #6320]
-Sat Aug 3 23:02:09 2013 Tanaka Akira <akr@fsij.org>
+Wed Apr 18 23:08:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/extmk.rb (extmake): Invoke Logging::log_close in a ensure
- clause.
+ * configure.in (DOT, DOXYGEN): use AC_CHECK_PROGS instead of
+ AC_CHECK_PROG which needs the third argument. [ruby-core:44433]
+ [Bug #6316]
-Sat Aug 3 23:02:09 2013 Tanaka Akira <akr@fsij.org>
+ * configure.in (PKG_CONFIG): fix condition to skip older version
+ of pkg-config. continue in backticks does not affect outside.
- * ext/extmk.rb (extmake): Use Logging.open to switch stdout and
- stderr. Delay Logging::log_close until the failure message is
- written. Write the failure message only if log file is opened.
+Tue Apr 17 21:35:47 2012 Kouhei Sutou <kou@cozmixng.org>
- * lib/mkmf.rb (Logging.log_opened?): New method.
+ * lib/rexml/parsers/baseparser.rb, test/rexml/test_namespace.rb:
+ fix the default xml namespace URI validation.
+ [ruby-dev:45169] [Bug #5956]
+ Reported by Miho Hiramatsu. Thanks!!!
- [ruby-dev:47215] [Bug #8209]
+Mon Apr 17 14:27:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Aug 3 22:46:19 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * dln.c (rb_w32_check_imported): skip ordinal entries. based on a
+ patch by phasis68 (Heesob Park) at [ruby-core:44381].
+ [ruby-core:44371][Bug #6303]
- * lib/mkmf.rb (xsystem): expand environment variable in all macros not
- expanded with RbConfig. [Bug #8702]
+Sun Apr 15 14:57:00 2012 Tanaka Akira <akr@fsij.org>
- * test/mkmf/test_framework.rb (create_framework): replace all $@ not
- only once.
+ * test/test_pty.rb (test_pty_check_default): call PTY.check until
+ "cat" command is finished.
-Sat Aug 3 22:40:57 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Apr 15 14:54:16 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/mkmf.rb (have_framework): allow header file to check.
- [ruby-core:55745] [Bug #8593]
+ * test/ruby/test_process.rb (TestProcess#windows?): new method.
-Sat Aug 3 22:24:44 2013 Shota Fukumori <her@sorah.jp>
+ * test/ruby/test_process.rb (TestProcess#*): use above method.
- * lib/uri/common.rb (URI.decode_www_form_component):
- Don't raise error when str includes multibyte characters.
+ * test/ruby/test_process.rb (TestProcess#test_execopts_redirect):
+ windows doesn't support FD_CLOEXEC.
-Sun Jul 28 22:00:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Apr 15 06:40:28 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * rational.c (f_round_common): Rational is expected to be returned by
- Rational#*, but mathn.rb breaks that assumption. [ruby-core:56177]
- [Bug #8687]
+ * include/ruby/win32.h (rb_w32_aspawn_flags): add the declaration of
+ new function.
-Sun Jul 28 21:50:34 2013 Masaki Matsushita <glass.saga@gmail.com>
+ * process.c (enum): add EXEC_OPTION_PGROUP and move the position
+ above for the usage in proc_spawn_n().
- * io.c (io_getpartial): use rb_str_locktmp_ensure().
- [ruby-core:56121] [Bug #8669]
+ * process.c (proc_spawn_n): add an argument to pass new option
+ `new_pgroup`. The option specifies CREATE_NEW_PROCESS_GROUP flag to
+ CreateProcessW(). This flag is necessary for the usage of
+ Process.kill on the subprocess on Windows.
- * io.c (rb_io_sysread): ditto.
+ * process.c (rb_exec_arg_addopt): ditto.
- * test/ruby/test_io.rb: add tests for above.
+ * process.c (rb_spawn_process): ditto.
-Sun Jul 28 21:50:34 2013 Masaki Matsushita <glass.saga@gmail.com>
+ * process.c (documentation for rb_f_spawn): add documentation for new
+ option `new_pgroup` of spawn.
- * string.c: add internal API rb_str_locktmp_ensure().
+ * test/ruby/test_process.rb (TestProcess#test_execopts_new_pgroup):
+ add tests for option `new_pgroup`.
- * io.c (io_fread): use rb_str_locktmp_ensure().
- [ruby-core:56121] [Bug #8669]
+ * test/ruby/test_thread.rb
+ (TestThreadGroup#test_thread_timer_and_interrupt):
+ add option `new_pgroup: true` to spawn on Windows. It's needed for
+ Process.kill on a subprocess.
- * test/ruby/test_io.rb: add a test for above.
+ * win32/win32.c (CreateChild): add an argument to pass
+ dwCreationFlags of CreateProcessW().
-Sun Jul 28 21:44:57 2013 Eric Hodel <drbrain@segment7.net>
+ * win32/win32.c (rb_w32_spawn): ditto.
- * ext/openssl/ossl_asn1.c (asn1time_to_time): Implement YYMMDDhhmmZ
- format for ASN.1 UTCTime. [ruby-trunk - Bug #8664]
- * test/openssl/test_asn1.rb: Test for the above.
+ * win32/win32.c (rb_w32_aspawn_flags): add new function to pass
+ dwCreationFlags.
-Fri Jul 26 00:38:58 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * win32/win32.c (rb_w32_aspawn): refactor to move the content to
+ rb_w32_aspawn_flags().
+ [ruby-core:43245][Bug #6131]
- * lib/rubygems: Update to RubyGems 2.0.6. [ruby-core:56160]
- [Backport #8682]
+Sun Apr 15 06:40:28 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-Wed Jul 24 22:35:32 2013 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/ruby/test_thread.rb
+ (TestThreadGroup#test_thread_timer_and_interrupt): skip on Windows.
+ Process.kill cannot kill a subprocess if CREATE_NEW_PROCESS_GROUP
+ flag is not specified in a call to CreateProcessW().
- * lib/uri/generic.rb (find_proxy): raise BadURIError if the URI is
- a relative URI. [Bug #8645]
+ * win32/win32.c (CreateChild): revert the usage of
+ CREATE_NEW_PROCESS_GROUP flag for compatibility.
+ [ruby-core:43245][Bug #6131]
-Wed Jul 24 01:13:02 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+Sun Apr 15 04:35:48 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * include/ruby/intern.h (rb_f_lambde): restore the declaration of
- rb_f_lambda() for backword compatibility. and mark it as deprecated.
+ * io.c (rb_io_eof): use eof() instead of io_fillbuf(). It's because
+ io_unread() doesn't work properly when reading CRLF with read(length)
+ and mode 'r'.
+ [ruby-core:44189][Bug #6271]
-Tue Jul 23 01:36:43 2013 Zachary Scott <e@zzak.io>
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#test_read_crlf_and_eof):
+ test for above.
- * lib/rubygems/psych_additions.rb: Ignore Psych docs here
+Sun Apr 15 03:00:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Tue Jul 23 01:34:00 2013 Koichi Sasada <ko1@atdot.net>
+ * io.c (io_unread): fixed memory leak. report by nagachika via IRC.
- * test/test_tracer.rb: catch up recent rubygems changes.
+Sun Apr 15 03:00:54 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-Tue Jul 23 01:28:54 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * io.c (static int io_fflush): add the definition.
+ Use it in set_binary_mode_with_seek_cur().
- * lib/rubygems: Update to RubyGems 2.0.5.
- The patch provided by drbrain (Eric Hodel). [ruby-core:55896]
- [Backport #8617]
+ * io.c (set_binary_mode_with_seek_cur): refactoring to split the
+ content into io_unread(). Fix the possibility of buffer overflow.
- * test/rubygems: Tests for the above.
+ * io.c (io_unread): add new implementation for Windows. Previous one
+ caused invalid cursor position using IO#pos with OS text mode. New
+ one fixes the bug.
-Tue Jul 23 00:00:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_io_m17n.rb
+ (TestIO_M17N#test_pos_dont_move_cursor_position): add a test for
+ above bug.
+ [ruby-core:43497] [Bug #6179]
- * vm_eval.c (eval_string_with_cref): use the given file name unless
- eval even if scope is given. additional fix for [Bug #8436].
- based on the patch by srawlins at [ruby-core:56099] [Bug #8662].
+Sun Apr 15 03:00:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Sat Jul 20 23:49:33 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/ruby/test_io.rb (TestIO#test_pos_with_getc): updated.
+ see [ruby-core:43550]
- * test/drb/drbtest.rb (Drb{Core,Ary}#teardown): retry Process.kill
- if it fails with Errno::EPERM on Windows (workaround).
- [ruby-dev:47245] [Bug #8251]
+Sun Apr 15 03:00:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Sat Jul 20 23:31:11 2013 Aman Gupta <tmm1@ruby-lang.org>
+ * test/ruby/test_io.rb (TestIO#test_pos_with_getc): added.
+ see [Bug #6179][ruby-core:43518]
- * iseq.c (iseq_location_setup): re-use existing string when iseq has
- the same path and absolute_path. [Bug #8149]
+Wed Apr 11 16:22:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Jul 14 00:18:08 2013 Zachary Scott <e@zzak.io>
+ * ext/-test-/add_suffix/bug.c (ruby_add_suffix): no static
+ declaration. [ruby-core:44277][Bug #6279]
- * sprintf.c: Fix typo patch by @hynkle [Fixes GH-357]
- https://github.com/ruby/ruby/pull/357
+Sun Apr 8 06:53:55 2012 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Jul 14 00:17:07 2013 Zachary Scott <zachary@zacharyscott.net>
+ * io.c (io_unread): cast as long the value for extra_max.
+ [ruby-core:44137] [Bug #6257]
- * man/ri.1: Incorrect use of .Dd macro [Bug #8620] by Tristan Hill
+Sat Apr 7 10:28:40 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-Sun Jul 14 00:15:26 2013 Zachary Scott <zachary@zacharyscott.net>
+ * ext/psych/lib/psych.rb: bumping up psych version to match release.
+ * ext/psych/psych.gemspec: ditto
- * lib/logger.rb: Use :call-seq: for method signature rdoc
+Sat Apr 7 02:07:00 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-Sun Jul 14 00:13:01 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/psych/parser.c: fall back to any encoding if the external
+ encoding is wrong. [ruby-core:44163]
+ * test/psych/test_encoding.rb: fix test
- * test/net/http/test_http.rb (TestNetHTTP_v1_2#test_get,
- TestNetHTTP_v1_2_chunked#test_get): shouldn't check
- HttpResponse#decode_content if Zlib is not available.
- ko1 complained via IRC.
+Wed Apr 4 18:29:15 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Sat Jul 13 23:50:00 2013 Tadayoshi Funaba <tadf@dotrb.org>
+ * test/ruby/test_sleep.rb (TestSleep#test_sleep_5sec): syntax error.
- * ext/date/date_core.c: fixed coding error [ruby-core:55337].
- reported by Riley Lynch.
+ * test/ruby/test_sleep.rb (TestSleep#test_sleep_5sec): call uname
+ only on linux because it's a workaround for linux only.
-Sat Jul 13 23:50:00 2013 Tadayoshi Funaba <tadf@dotrb.org>
+Wed Apr 4 11:32:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/date/date_core.c: fixed a bug [ruby-core:55295]. reported
- by Riley Lynch.
+ * ext/-test-/add_suffix/bug.c: make all functions in util.c static
+ to get rid of multiple definitions. reported at
+ https://trac.macports.org/ticket/33814
-Sat Jul 13 23:41:25 2013 Tadayoshi Funaba <tadf@dotrb.org>
+Tue Apr 3 18:34:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/date/date_parse.c (date_zone_to_diff): [ruby-core:55831].
+ * process.c (setreuid, setregid): suppress warnings.
+ [ruby-core:43374][Bug #6169]
-Sat Jul 13 23:34:13 2013 Akinori MUSHA <knu@iDaemons.org>
+Sat Mar 31 12:11:21 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * object.c: Fix rdoc for Kernel#<=>. [Fix GH-352]
+ * ext/openssl/ossl_x509cert.c: Fix doc typo.
-Sat Jul 13 23:29:51 2013 Akinori MUSHA <knu@iDaemons.org>
+Fri Mar 30 14:17:17 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * lib/fileutils.rb (FileUtils#mode_to_s): Define mode_to_s() also
- as singleton method, or FileUtils.chmod fails in verbose mode.
+ * ext/openssl/ossl_pkcs7.c: fix crash when parsing garbage data.
+ * test/openssl/test_pkcs7.rb: assert correct behavior for it.
+ Thanks to Matt Venables for reporting the issue.
+ [ruby-core:43250][Bug #6134]
-Sat Jul 13 23:27:12 2013 Akinori MUSHA <knu@iDaemons.org>
+Fri Mar 30 14:17:17 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * lib/fileutils.rb (FileUtils#chown, FileUtils#chown_R): If user
- and group are both nil, print ":".
+ * test/openssl/test_x509cert.rb: exclude test that fails when issuing
+ a certificate with RSA signature and DSS1 digest for earlier
+ OpenSSL versions when used in conjunction with OpenSSL 1.0.1.
+ Thanks, Vit Ondruch, for reporting the issue.
+ [ruby-core:42949][Bug #6089]
-Sat Jul 13 23:16:49 2013 Tanaka Akira <akr@fsij.org>
+Fri Mar 30 14:15:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * bignum.c (bigrsh_bang): Fix bignum digits overrun.
+ * string.c (str_new_empty): should copy also the encoding as an
+ empty substring. [ruby-dev:45441][Bug #6206]
-Sat Jul 13 23:16:49 2013 Tanaka Akira <akr@fsij.org>
+Fri Mar 30 14:14:36 2012 Tadayoshi Funaba <tadf@dotrb.org>
- * bignum.c (biglsh_bang): Fix bignum digits under-run.
+ * ext/date/date_core.c (datetime_s_now): [ruby-core:43256].
-Sat Jul 13 22:45:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Mar 30 14:12:53 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * configure.in (RUBY_DTRACE_POSTPROCESS): dtrace version SUN D 1.11
- introduces a check in the dtrace compiler to ensure that probes
- actually exist. If there are no probes, then the -G step will
- fail. As this test is only being used to determine whether -G is
- necessary (for instance, on OSX it is not), adding a real probe to
- the conftest allows it to succeed on newer versions of dtrace.
- Patch by Eric Saxby <sax AT livinginthepast.org> at
- [ruby-core:55826]. [Fix GH-351], [Bug #8606].
+ * numeric.c: fix flodivmod for cornercases [Bug #6044]
+ add ruby_float_mod
-Sat Jul 13 22:41:20 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
+ * insns.def (opt_mod): use ruby_float_mod
- * test/openssl/test_x509crl.rb: Remove unused variable.
- [ruby-core:53501] [Bug #8114]
+ * internal.h: declare ruby_float_mod
- Thanks, Vipul Amler, for pointing this out!
+ * test/ruby/test_float.rb: tests for above
-Sun Jul 7 02:00:41 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
+ * test/ruby/envutil.rb: create helper assert_is_minus_zero
- * lib/openssl/ssl.rb: Fix SSL client connection crash for SAN marked
- critical.
- The patch for CVE-2013-4073 caused SSL crash when a SSL server returns
- the certificate that has critical SAN value. X509 extension could
- include 2 or 3 elements in it:
+Wed Mar 28 08:44:24 2012 Aaron Patterson <aaron@tenderlovemaking.com>
- [id, criticality, octet_string] if critical,
- [id, octet_string] if not.
+ * ext/psych/lib/psych.rb: updating version to match gem
+ * ext/psych/psych.gemspec: ditto
+ * ext/psych/lib/psych/visitors/to_ruby.rb: fixing deprecation warning
- Making sure to pick the last element of X509 extension and use it as
- SAN value.
- [ruby-core:55685] [Bug #8575]
+Mon Jul 18 13:36:47 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- Thank you @nahi for providing the patch!
+ * ext/psych/lib/psych.rb: define a new BadAlias error class.
-Sun Jul 7 01:58:25 2013 Akinori MUSHA <knu@iDaemons.org>
+ * ext/psych/lib/psych/visitors/to_ruby.rb: raise an exception when
+ deserializing an alias that does not exist.
- * lib/fileutils.rb (FileUtils#symbolic_modes_to_i): Fix the wrong
- character class [+-=], which happened to match all desired
- characters but also match undesired characters.
+ * test/psych/test_merge_keys.rb: corresponding test.
-Sun Jul 7 01:54:44 2013 Akinori MUSHA <knu@iDaemons.org>
+Fri Mar 9 06:29:22 2012 Aaron Patterson <aaron@tenderlovemaking.com>
- * lib/fileutils.rb (FileUtils#chown, FileUtils#chown_R): Fix the
- wrong output message when user is nil, which should be "chown
- :group file" instead of "chown group file".
+ * ext/psych/lib/psych.rb (load, parse): stop parsing or loading after
+ the first document has been parsed.
-Fri Jul 5 00:55:05 2013 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/psych/test_stream.rb: pertinent tests.
- * regcomp.c (): Merge Onigmo 5.13.5 23b523076d6f1161.
+Fri Mar 9 06:17:05 2012 Aaron Patterson <aaron@tenderlovemaking.com>
- * [bug] (thanks Akinori MUSHA and Ippei Obayashi)
- Fix a renumbering bug in condition regexp with a named
- capture. [Bug #8583]
- * [spec] (thanks Akinori MUSHA)
- Allow ENCLOSE_OPTION in look-behind.
+ * ext/psych/lib/psych.rb (parse_stream, load_stream): if a block is
+ given, documents will be yielded to the block as they are parsed.
+ [ruby-core:42404] [Bug #5978]
-Wed Jul 3 23:31:26 2013 Shota Fukumori <sorah@cookpad.com>
+ * ext/psych/lib/psych/handlers/document_stream.rb: add a handler that
+ yields documents as they are parsed
- * lib/mkmf.rb (try_config): Fix to not replace $LDFLAGS with $libs
- (1.9.3 behavior) [ruby-core:55752] [Bug #8595]
+ * test/psych/test_stream.rb: corresponding tests.
-Tue Jul 2 03:06:38 2013 Kenta Murata <mrkn@mrkn.jp>
+Tue Mar 6 02:31:20 2012 Aaron Patterson <aaron@tenderlovemaking.com>
- * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): Fix for the cases when
- the argument x is not a BigDecimal.
- This change is based on the patch made by Heesob Park and Garth Snyder.
- [Bug #6862] [ruby-core:47145]
- [Fix GH-332] https://github.com/ruby/ruby/pull/332
+ * ext/psych/lib/psych/core_ext.rb: only extend Kernel if IRB is loaded
+ in order to stop method pollution.
-Fri Jun 28 02:20:13 2013 Aman Gupta <ruby@tmm1.net>
+Tue Feb 28 10:28:51 2012 Aaron Patterson <aaron@tenderlovemaking.com>
- * compile.c (iseq_add_mark_object): Use new rb_iseq_add_mark_object().
+ * ext/psych/lib/psych.rb: default open YAML files with utf8 external
+ encoding. [ruby-core:42967]
+ * test/psych/test_tainted.rb: ditto
- * insns.def (setinlinecache): Ditto.
+Fri Feb 24 13:54:33 2012 Aaron Patterson <aaron@tenderlovemaking.com>
- * iseq.c (rb_iseq_add_mark_object): New function to allocate
- iseq->mark_ary on demand. [Bug #8142]
+ * ext/psych/parser.c: prevent a memory leak by protecting calls to
+ handler callbacks.
+ * test/psych/test_parser.rb: test to demonstrate leak.
- * iseq.h (rb_iseq_add_mark_object): Ditto.
+Fri Feb 24 08:08:38 2012 Aaron Patterson <aaron@tenderlovemaking.com>
- * iseq.c (prepare_iseq_build): Avoid allocating mark_ary until needed.
+ * ext/psych/parser.c: set parser encoding based on the YAML input
+ rather than user configuration.
+ * test/psych/test_encoding.rb: corresponding tests.
+ * test/psych/test_parser.rb: ditto
+ * test/psych/test_tainted.rb: ditto
- * iseq.c (rb_iseq_build_for_ruby2cext): Ditto.
+Fri Feb 10 03:41:31 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-Thu Jun 27 20:10:56 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * ext/psych/parser.c: removed external encoding setter, allow parser
+ to be reused.
+ * ext/psych/lib/psych/parser.rb: added external encoding setter.
+ * test/psych/test_parser.rb: test parser reuse
- * ext/openssl/lib/openssl/ssl.rb (verify_certificate_identity): fix
- hostname verification. Patched by nahi.
+Wed Jan 18 12:49:15 2012 Aaron Patterson <aaron@tenderlovemaking.com>
- * test/openssl/test_ssl.rb (test_verify_certificate_identity): test for
- above.
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Added support for loading
+ subclasses of String with ivars
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Added support for dumping
+ subclasses of String with ivars
+ * test/psych/test_string.rb: corresponding tests
+Wed Jan 18 10:39:47 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-Thu Jun 27 13:16:40 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Added ability to load array
+ subclasses with ivars.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Added ability to dump
+ array subclasses with ivars.
+ * test/psych/test_array.rb: corresponding tests
- * test/rubygems/test_gem_installer.rb (test_install_extension_flat):
- use ruby in build directory in case ruby is not installed.
- [ruby-core:53265] [Bug #8058]
+Wed Dec 21 02:25:36 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Wed Jun 26 23:05:34 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * ext/psych/emitter.c: fixing clang warnings. Thanks Joey!
- * test/ruby/test_io.rb (TestIO#test_write_32bit_boundary): skip if
- writing a file is slow.
- [ruby-core:55541] [Bug #8519]
+Sun Dec 18 12:42:48 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Wed Jun 26 22:42:36 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/psych/lib/psych/visitors/to_ruby.rb: BigDecimals can be restored
+ from YAML.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: BigDecimals can be dumped
+ to YAML.
+ * test/psych/test_numeric.rb: tests for BigDecimal serialization
- * lib/mkmf.rb: should use expanded values for header directories
- unless extmk. patch by vo.x (Vit Ondruch) at [ruby-core:55653]
- [Bug #8115], rhbz#921650.
+Sun Dec 18 12:03:13 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Wed Jun 26 02:25:52 2013 Akinori MUSHA <knu@iDaemons.org>
+ * ext/psych/lib/psych/scalar_scanner.rb: Strings that look like dates
+ should be treated as strings and not dates.
- * lib/rubygems/ext/builder.rb (Gem::Ext::Builder.make): Pass
- DESTDIR via command line to override what's in MAKEFLAGS. This
- fixes an installation problem under a package building
- environment where DESTDIR is specified in the (parent) command
- line. [Fixes GH-327]
+ * test/psych/test_scalar_scanner.rb: corresponding tests.
-Tue Jun 25 00:12:19 2013 Zachary Scott <zachary@zacharyscott.net>
+Wed Dec 7 08:04:31 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * array.c: Return value in Array overview example found by @PragTob
- [Fix GH-336] https://github.com/ruby/ruby/pull/336
+ * ext/psych/lib/psych.rb (module Psych): parse and load methods take
+ an optional file name that is used when raising Psych::SyntaxError
+ exceptions
+ * ext/psych/lib/psych/syntax_error.rb (module Psych): allow nil file
+ names and handle nil file names in the exception message
+ * test/psych/test_exception.rb (module Psych): Tests for changes.
-Tue Jun 25 00:11:46 2013 Zachary Scott <zachary@zacharyscott.net>
+Wed Nov 30 09:09:37 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * array.c (rb_ary_zip): typo by @PragTob [Fix GH-337]
- https://github.com/ruby/ruby/pull/337
+ * ext/psych/parser.c (parse): parse method can take an option file
+ name for use in exception messages.
+ * test/psych/test_parser.rb: corresponding tests.
-Tue Jun 25 00:10:54 2013 Zachary Scott <zachary@zacharyscott.net>
+Tue Nov 22 04:46:22 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * win32/README.win32: grammar typo by @blankenshipz [Fix GH-334]
- https://github.com/ruby/ruby/pull/334
+ * ext/psych/lib/psych.rb: remove autoload from psych
+ * ext/psych/lib/psych/json.rb: ditto
-Sun Jun 23 00:03:18 2013 Charlie Somerville <charliesome@ruby-lang.org>
+Wed Nov 9 04:52:16 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * ext/etc/etc.c (etc_getpwnam): use PRIsVALUE in format string instead
- of %s and RSTRING_PTR
+ * ext/psych/lib/psych/tree_builder.rb: dump complex numbers,
+ rationals, etc with reference ids.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: ditto
+ * ext/psych/lib/psych/visitors/to_ruby.rb: loading complex numbers,
+ rationals, etc with reference ids.
+ * test/psych/test_object_references.rb: corresponding tests
- * ext/etc/etc.c (etc_getgrnam): ditto
+Mon Nov 7 20:31:52 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Sat Jun 22 00:54:41 2013 Eric Hodel <drbrain@segment7.net>
+ * ext/psych/lib/psych/scalar_scanner.rb: make sure strings that look
+ like base 60 numbers are serialized as quoted strings.
+ * test/psych/test_string.rb: test for change.
- * lib/rubygems: Update to RubyGems 2.0.3
+Thu Oct 27 08:47:38 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * test/rubygems: Tests for the above.
+ * ext/psych/parser.c: remove unused variable.
- * NEWS: Added RubyGems 2.0.3 note.
+Wed Oct 5 02:50:27 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Wed Jun 19 04:20:31 2013 Charlie Somerville <charliesome@ruby-lang.org>
+ * ext/psych/lib/psych/syntax_error.rb: Add file, line, offset, and
+ message attributes during parse failure.
+ * ext/psych/parser.c: Update parser to raise exception with correct
+ values.
+ * test/psych/test_exception.rb: corresponding tests.
- * vm_insnhelper.c (vm_call_method): ensure methods of type
- VM_METHOD_TYPE_ATTR_SET are called with 1 argument
+Wed Oct 5 01:52:16 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * test/ruby/test_module.rb (class TestModule): add test
+ * ext/psych/parser.c (parse): Use context_mark for indicating error
+ line and column.
- [ruby-core:55543] [Bug #8540]
+Wed Oct 5 01:22:08 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Wed Jun 19 03:54:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/psych/lib/psych/scalar_scanner.rb: use normal begin / rescue
+ since postfix rescue cannot receive the exception class. Thanks
+ nagachika!
- * defs/id.def (predefined): add "idProc".
+Tue Mar 27 22:22:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * proc.c (mnew, mproc, mlambda): use predefined IDs.
+ * configure.in (RUBY_STACK_GROW_DIRECTION): substitute CPU name as
+ shell variable name. based on the patch by The Written Word Inc. at
+ [ruby-core:40421]. [Bug #5488]
- * vm.c (Init_VM): ditto.
+Mon Mar 26 09:57:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Jun 19 03:54:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * parse.y (parser_nextc): set encoding for the buffer of ripper.
- * include/ruby/intern.h (rb_block_lambda): add declaration instead of
- deprecated rb_f_lambda.
+Sun Mar 18 13:23:28 2012 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Jun 19 03:24:07 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+ * encoding.c (rb_enc_compatible): return ASCII-8BIT even if 2nd string
+ is ascii only string. [ruby-core:42354] [Bug #5968]
- * include/ruby/ruby.h, vm_eval.c (rb_funcall_with_block):
- new function to invoke a method with a block passed
- as an argument.
+Tue Mar 6 18:55:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * string.c (sym_call): use the above function to avoid
- a block sharing. [ruby-dev:47438] [Bug #8531]
+ * lib/test/unit/assertions.rb (assert_send, assert_not_send):
+ parenthesize non-empty arguments.
- * vm_insnhelper.c (vm_yield_with_cfunc): don't set block
- in the frame.
+Tue Mar 6 18:55:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_symbol.rb (TestSymbol#test_block_given_to_proc):
- run related tests.
+ * lib/test/unit/assertions.rb (assert_send): make arguments in
+ the default message clearer.
-Wed Jun 19 03:06:57 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+Tue Mar 6 12:48:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_proc.rb (TestProc#test_block_given_method_to_proc):
- run test for r41359.
+ * ext/io/console/console.c (set_rawmode): clear ECHOE and ECHOK
+ bits too.
-Wed Jun 19 03:06:57 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+ * ext/io/console/console.c (echo_p): ignore ECHOE and ECHOK bits.
+ [ruby-dev:45309] [Bug #6116]
- * include/ruby/intern.h, proc.c (rb_method_call_with_block):
- new function to invoke a Method object with a block passed
- as an argument.
+ * ext/io/console/console.c (console_raw): fix rdoc.
- * proc.c (bmcall): use the above function to avoid a block sharing.
- [ruby-core:54626] [Bug #8341]
+ * ext/io/console/console.c (console_set_echo): mentioned about
+ platform dependency.
- * test/ruby/test_proc.rb (TestProc#test_block_persist_between_calls):
- run related tests.
+Tue Mar 6 12:40:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Jun 18 02:49:20 2013 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/io/console/console.c (console_raw, console_set_raw)
+ (console_getch): optional parameters. [EXPERIMENTAL]
- * test/ruby/envutil.rb (assert_separately): stop_auto_run of
- Test::Unit::Runner to prevent auto runner use ARGV.
+Tue Mar 6 12:39:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/envutil.rb (assert_separately): add $: to separate process.
+ * ext/io/console/console.c (console_cooked, console_set_cooked):
+ new methods to reset cooked mode. [EXPERIMENTAL]
- * test/ruby/envutil.rb (assert_separately): fail if stderr is not
- empty and ignore_stderr is false.
+Tue Mar 6 12:31:47 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Jun 18 02:21:54 2013 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/io/console/console.c (io_getch): default delegating method
+ for StringIO. https://github.com/nobu/io-console/issues/4
- * test/ruby/envutil.rb (EnvUtil.with_default_external): add for
- changing Encoding.default_external without warnings.
+ * ext/stringio/stringio.c: moved some methods to hidden modules.
- * test/ruby/envutil.rb (EnvUtil.with_default_internal): ditto.
+Tue Mar 6 12:29:34 2012 Eric Hodel <drbrain@segment7.net>
- * test/ruby/test_io_m17n.rb: use above with_default_external.
+ * io.c (Init_IO): Mention io/console methods. [Ruby 1.9 - Bug #5602]
+ * ext/io/console/console.c: Mention that io/console must be required
+ similar to lib/time.rb
-Tue Jun 18 00:43:27 2013 Zachary Scott <zachary@zacharyscott.net>
+Tue Mar 6 11:42:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm_backtrace.c: Update rdoc for Backtrace#label with @_ko1
+ * ext/syck/lib/syck/rubytypes.rb (Exception.yaml_new): fix bug
+ that causes YAML serialization problem for Exception.
+ Exception#initialize doesn't use visible instance variable for
+ the exception message, so call the method with the message.
+ patched by Jingwen Owen Ou <jingweno AT gmail.com>.
+ http://github.com/ruby/ruby/pull/41
-Tue Jun 18 00:34:57 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+Fri Mar 2 22:09:03 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
-merge revision(s) 41347: [Backport #5048] [Backport #5465] [Backport #8319]
+ * .travis.yml: Backport TravisCI configuration from trunk.
- * ext/tk/extconf.rb: support s390x (Thanks to bkabrda) [Bug #5465]
+Thu Mar 1 18:39:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/tk/extconf.rb: apply [Bug #5048]
+ * file.c (rb_file_join): honor input encodings than ASCII-8BIT.
+ [ruby-core:40338] [Bug #5483]
- * ext/tk/lib/tk/canvas.rb,ext/tk/sample/demos-{en,jp}/{tree.rb,widget}:
- fix bug (Thanks to zzak) [ruby-trunk - Bug #8319]
+Tue Feb 28 11:56:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Jun 16 01:56:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in (debugflags): check if -ggdb is accepted.
+ [ruby-core:42875][Bug #6080]
- * array.c (FL_SET_EMBED): shared object is frozen even when get
- unshared.
+Mon Feb 27 17:25:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * array.c (rb_ary_modify): ARY_SET_CAPA needs unshared array.
+ * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): since methods
+ can be overridden, so should not make an assumption on the type
+ of results. [ruby-core:42969][Bug #6093]
-Sun Jun 16 01:32:26 2013 TAKANO Mitsuhiro <tak@no32.tk>
+Mon Feb 27 02:28:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * insns.def: fix condition.
+ * regparse.c (add_code_range_to_buf0): wrong condition of duplicated
+ warnings.
-Sun Jun 16 01:22:35 2013 Eric Hodel <drbrain@segment7.net>
+Sun Feb 26 12:26:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/socket/extconf.rb: Enable RFC 3542 IPV6 socket options for OS X
- 10.7+. [ruby-trunk - Bug #8517]
+ * compile.c (iseq_compile_each): call on special object instead of
+ self. since stabby lambda is a syntax, so it should not be
+ affected by the context. [ruby-core:42349][Bug #5966]
-Sun Jun 16 01:11:10 2013 Koichi Sasada <ko1@atdot.net>
+ * insns.def (send): no special deal for FCALL. self should be put
+ on TOS instead.
- * compile.c (rb_iseq_compile_node): fix location of a `trace'
- instruction (b_return event).
- [ruby-core:55305] [ruby-trunk - Bug #8489]
- (need a backport to 2.0.0?)
+Sat Feb 25 23:47:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_settracefunc.rb: add a test.
+ * file.c (utime_internal): fix a variable missed to replace.
+ [ruby-core:42864] [Bug #6077]
-Sun Jun 16 00:30:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Feb 25 21:29:09 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
- * vm_eval.c (eval_string_with_cref): propagate absolute path from the
- binding if it is given explicitly. patch by Gat (Dawid Janczak) at
- [ruby-core:55123]. [Bug #8436]
+ * test/ruby/test_literal.rb (TestRubyLiteral#test_special_const):
+ test for https://bugs.php.net/bug.php?id=61095
-Wed Jun 12 23:41:21 2013 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Feb 25 21:29:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm_insnhelper.c (vm_yield_setup_block_args): partially revert r41019.
- The code is not useless.
+ * dir.c, file.c, io.c (rb_sys_fail_path): use rb_sys_fail_str.
-Wed Jun 12 23:41:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * error.c: new functions to deal exceptions with string instances.
- * vm_insnhelper.c (vm_yield_setup_block_args): split single parameter
- if any keyword arguments exist, and then extract keyword arguments.
- [ruby-core:55203] [Bug #8463]
+ * dir.c, file.c, io.c: use rb_sys_fail_path.
-Wed Jun 12 23:05:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Feb 25 21:18:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (io_getc): fix 7bit coderange condition, check if ascii read
- data instead of read length. [ruby-core:55444] [Bug #8516]
+ * dir.c (dir_inspect), io.c (rb_io_inspect): keep encoding of path.
+ [Bug #6072]
-Sun Jun 9 02:27:07 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Feb 25 21:18:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/mkmf.rb (install_dirs, with_destdir): prefix with DESTDIR
- directories to install only unless bundled extension libraries.
- [ruby-core:53502] [Bug #8115]
+ * dir.c (dir_initialize): keep path in original encoding.
-Sun Jun 9 02:17:16 2013 Charlie Somerville <charliesome@ruby-lang.org>
+ * error.c (syserr_initialize): prefer the encoding of message over
+ locale. [ruby-dev:45279][Bug #6071]
- * class.c (include_modules_at): invalidate method cache if included
- module contains constants
+Sat Feb 25 17:10:51 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * test/ruby/test_module.rb: add test
+ * lib/fileutils.rb: use chomp(?/) instead of sub to optimize and avoid
+ to regexping invalid string.
-Sun Jun 9 01:59:39 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+Sat Feb 25 16:39:13 2012 NARUSE, Yui <naruse@ruby-lang.org>
-merge revision 40783 (partially): [Backport #8413]
+ * complex.c (nucomp_marshal_load): raise error on invalid data.
+ reported by John Firebaugh [ruby-core:42860] [Bug #6076]
- * win32/Makefile.sub: fix a typo in config.h.
+Fri Feb 24 23:49:05 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-Sun Jun 9 01:38:55 2013 Charlie Somerville <charliesome@ruby-lang.org>
+ * lib/ostruct.rb (delete_field): Bug fix so previous value is
+ returned. Patch by Nick Recobra [Bug #6063]
- * intern.h: remove dangling rb_class_init_copy declaration
- [ruby-core:55120] [Bug #8434]
+Fri Feb 24 08:53:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Jun 9 01:30:57 2013 Shugo Maeda <shugo@ruby-lang.org>
+ * parse.y (parser_tokadd_string, parser_yylex): insert a backslash
+ if the next character is non-ascii. [ruby-dev:45278] [Bug #6069]
- * lib/net/imap.rb (capability_response): should ignore trailing
- spaces. Thanks, Peter Kovacs. [ruby-core:55024] [Bug #8415]
+Thu Feb 23 14:44:36 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * test/net/imap/test_imap_response_parser.rb: related test.
+ * lib/uri/common.rb (URI::Parser#initialize_regexp):
+ use \A \z instead of ^ $. [Bug #5843]
-Wed Jun 5 00:38:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Feb 23 08:08:23 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/zlib/zlib.c (gzfile_read, gzfile_read_all, gzfile_getc),
- (gzreader_gets): check EOF. [ruby-core:55220] [Bug #8467]
+ * win32/win32.c (rb_w32_uchmod): typo. [Bug#5671] [ruby-dev:44898]
-Wed Jun 5 00:32:18 2013 Tanaka Akira <akr@fsij.org>
+ * test/ruby/test_file.rb (TestFile#test_chmod_m17n): test of above bug.
- * test/ruby/test_require.rb: Remove temporally files in the tests.
+Wed Feb 22 23:27:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_rubyoptions.rb: Ditto.
+ * test/iconv/test_option.rb: enabled. [ruby-core:42802][Bug #6061]
- * test/logger/test_logger.rb: Ditto.
+Wed Feb 22 22:04:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/psych/test_psych.rb: Ditto.
+ * io.c (rb_io_s_foreach): argument check before making Enumerator.
+ [ruby-dev:31525]
- * test/readline/test_readline.rb: Ditto.
+Wed Feb 22 22:04:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/syslog/test_syslog_logger.rb: Ditto.
+ * io.c (rb_io_s_foreach): return enumerator including kerword
+ arguments. [ruby-dev:45267][Bug #6054]
- * test/webrick/test_httpauth.rb: Ditto.
+Wed Feb 22 21:42:16 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * test/zlib/test_zlib.rb: Ditto.
+ * configure.in: remove workaround replacement from gcc to gcc-4.2.
+ [Backport #6043]
-Wed Jun 5 00:08:55 2013 Yusuke Endoh <mame@tsg.ne.jp>
+Wed Feb 22 08:11:06 2012 Narihiro Nakamura <authornari@gmail.com>
- * dir.c (bracket): fix copy-paste error. When the first and last
- characters of fnmatch range have different length, fnmatch may
- have wrongly matched a path that does not really match.
- Coverity Scan found this bug.
+ * gc.c : remove gc_clear_mark_on_sweep_slots() and use
+ rest_sweep() instead of it, because some dead objects might be
+ marked in next the mark phase by false pointers.
+ [ruby-core:42672]
-Wed Jun 5 00:04:12 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Feb 19 12:27:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * string.c (rb_str_quote_unprintable): check if argument is a string.
+ * configure.in: ignore all warnings from an arbitrary
+ header in /usr/local/include.
-Tue Jun 4 23:42:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Feb 17 12:51:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * load.c (loaded_feature_path): fix invalid read by index underflow.
- the beginning of name is also a boundary as well as just after '/'.
+ * lib/mkmf.rb (create_header): log the content of header.
-Tue Jun 4 23:32:12 2013 Charlie Somerville <charliesome@ruby-lang.org>
+Fri Feb 17 12:26:15 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * variable.c (set_const_visibility): use rb_frame_this_func() instead
- of rb_frame_callee() for getting the name of the called method
+ * test/readline/test_readline.rb (test_completion_proc_empty_result):
+ ensure clearance of Readline's line_buffer after the test.
- * test/ruby/test_module.rb: add test for private_constant with no args
+Fri Feb 17 11:46:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Jun 4 23:27:24 2013 Yusuke Endoh <mame@tsg.ne.jp>
+ * test/readline/test_readline.rb (test_line_buffer__point): use
+ lambda not to exit entire method by "return". or "next" for
+ proc. [ruby-dev:45042] [Bug #5802]
- * vm_insnhelper.c (vm_callee_setup_keyword_arg,
- vm_callee_setup_arg_complex): consider a hash argument for keyword
- only when the number of arguments is more than the expected
- mandatory parameters. [ruby-core:53199] [ruby-trunk - Bug #8040]
+Fri Feb 17 10:15:54 2012 Tanaka Akira <akr@fsij.org>
- * test/ruby/test_keyword.rb: update a test for above.
+ * ext/dbm/extconf.rb: check _DB_H_ macro unavailable except
+ Berkeley DB library.
-Tue Jun 4 00:46:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Feb 17 10:14:47 2012 Tanaka Akira <akr@fsij.org>
- * win32/win32.c (setup_overlapped, finish_overlapped): extract from
- rb_w32_read() and rb_w32_write().
+ * test/dbm/test_dbm.rb: fix skip condition for libgdbm 1.8.0 or prior.
+ reported by Bohuslav Kabrda.
+ [ruby-core:42685] [ruby-trunk - Bug #6036]
-Tue Jun 4 00:02:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Feb 17 09:53:46 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * vm_core.h (rb_vm_tag): move jmpbuf between tag and prev so ensure to
- be accessible.
+ * tool/transcode-tblgen.rb (import_ucm): don't use \h because the
+ script should work with ruby 1.8.
-Tue Jun 4 00:02:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * tool/enc-unicode.rb: ditto.
- * eval_intern.h (TH_PUSH_TAG): ensure jmpbuf to be accessible before
- pushing tag to get rid of unaccessible tag by stack overflow.
+Thu Feb 16 17:54:14 2012 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Jun 3 23:22:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/dbm/extconf.rb: merge trunk's ext/dbm/extconf.rb and
+ related functions of lib/mkmf.rb. [Backport #6021]
- * compile.c (iseq_compile_each): forward anonymous and first keyword
- rest argument one. [ruby-core:55033] [Bug #8416].
+Thu Feb 16 09:25:52 2012 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Jun 2 22:39:24 2013 Zachary Scott <zachary@zacharyscott.net>
+ * configure.in (enable_pthread): use -pthread on OpenBSD without
+ explicit option. patched by Jeremy Evans. [ruby-core:38572]
- * range.c: Fix rdoc on Range#bsearch [Bug #8242] [ruby-core:54143]
+Thu Feb 16 07:34:34 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Mon May 20 04:00:48 2013 Zachary Scott <zachary@zacharyscott.net>
+ * cont.c (rb_fiber_reset_root_local_storage): add a new function to
+ restore rb_thread_t::local_storage.
- * lib/yaml.rb: YAML documentation from #8344 [Bug #8355]
+ * cont.c (rb_obj_is_fiber): add a new function to tell finalizer to
+ prevent fibers from destroy.
-Wed May 15 23:22:09 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * gc.c (rb_objspace_call_finalizer): don't sweep fibers at finalizing
+ objspace.
- * include/ruby/intern.h: should include sys/time.h for struct timeval
- if it exists. [ruby-list:49363]
+ * internal.h (rb_fiber_reset_root_local_storage, rb_obj_is_fiber):
+ add prototypes.
-Tue May 14 20:21:41 2013 Eric Hodel <drbrain@segment7.net>
+ * vm.c (ruby_vm_destruct): reset main thread's local_storage before
+ free main thread. rb_thread_t::local_storage is replaced by fiber's
+ local storage when forked from fiber, and it should be already freed
+ when the fiber was destroyed. [ruby-core:41456] [Bug #5700]
- * lib/rubygems/config_file.rb: Lazily load .gem/credentials to only
- check permissions when necessary. RubyGems bug #465
- * test/rubygems/test_gem_config_file.rb: Test for the above.
+ * test/ruby/test_fiber.rb (test_fork_from_fiber): add test for fork
+ from fiber.
- * test/rubygems/test_gem_commands_push_command.rb: Remove duplicated
- test.
+Thu Feb 16 06:30:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue May 14 20:11:00 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * ext/fiddle/closure.c (callback): deal with unsinged integers.
+ [ruby-core:42458][Bug #5991][Bug #6022]
- * ext/dl/lib/dl/func.rb (DL::Function#call): check tainted when
- $SAFE > 0.
- * ext/fiddle/function.c (function_call): check tainted when $SAFE > 0.
- * test/fiddle/test_func.rb (module Fiddle): add test for above.
+ * ext/fiddle/conversions.c (value_to_generic, generic_to_value):
+ ditto.
+ * ext/fiddle/closure.c (callback): same as r34506.
-Sun May 12 22:42:25 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Feb 15 10:35:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * signal.c (rb_f_kill): fixes typo. s/HAS_KILLPG/HAVE_KILLPG/.
+ * include/ruby/ruby.h (FIXNUM_P): simple flag should be int.
-Sun May 12 04:23:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 15 10:33:41 2012 Eric Hodel <drbrain@segment7.net>
- * parse.y (parser_peek_variable_name): treat invalid global, class,
- and instance variable names as mere strings rather than errors.
- [ruby-core:54885] [Bug #8375]
+ * vm_eval.c (check_funcall): Call respond_to? with matching arity for
+ legacy single-argument implementations. [ruby-trunk - Bug #6000]
-Sun May 12 04:23:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 15 10:25:22 2012 Naohisa Goto <ngotogenome@gmail.com>
- * parse.y (parser_yylex): fail if $, @, @@ are not followed by a valid
- name character. [ruby-core:54846] [Bug #8375].
+ * vm_eval.c (check_funcall): set array elements one-by-one to fix
+ compile error with Fujitsu C Compiler 5.6 on Solaris 10 on Sparc.
-Sun May 12 02:50:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 15 10:25:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in (RUBY_RM_RECURSIVE): this hack is needed by only
- autoconf 2.69 or earlier on darwin.
+ * test/ruby/test_object.rb: tests that respond_to? returns false.
-Sun May 12 02:50:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 15 10:25:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in (rm, shvar_to_cpp, unexpand_shvar): local is not
- available on old shells.
+ * vm_eval.c (check_funcall): try respond_to? first if redefined.
+ [Bug #5158]
- * configure.in (shvar_to_cpp): escape quotes for old shells.
- [Bug #7959] [Bug #8071]
+Wed Feb 15 07:15:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu May 9 23:39:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * compile.c (defined_expr): guard the whole expression.
+ [ruby-dev:45021][Bug#5786]
- * class.c (rb_mod_included_modules): should not include non-modules.
- [ruby-core:53158] [Bug #8025]
+Wed Feb 15 05:08:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu May 9 23:39:47 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/dl/cptr.c (rb_dlptr_s_to_ptr): use rb_check_funcall.
- * class.c (rb_mod_included_modules): should not include the original
- module itself. [ruby-core:53158] [Bug #8025]
+ * ext/dl/cfunc.c (dlcfunc_mark), ext/dl/cptr.c (dlptr_mark):
+ workaround to mark wrapped object. this is not a true fix,
+ because [Bug #4929] is caused by the interface design of DL.
-Wed May 8 23:07:19 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 15 05:04:47 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * insns.def (defined): use vm_search_superclass() like as normal super
- call. based on a patch <https://gist.github.com/wanabe/5520026> by
- wanabe.
+ * ext/dl/cptr.c (rb_dlptr_aref, rb_dlptr_aset): check NULL pointer
+ dereference.
- * vm_insnhelper.c (vm_search_superclass): return error but not raise
- exceptions.
+ * test/rinda/test_rinda.rb: decrease the code that depends on timing.
+ [Bug #372] [Bug #4160]
- * vm_insnhelper.c (vm_search_super_method): check the result of
- vm_search_superclass and raise exceptions on error.
+Wed Feb 15 05:03:41 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Wed May 8 23:07:19 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/rinda/test_rinda.rb (test_remote_array_and_hash):
+ add local variables to protect objects from GC. [ruby-dev:44253]
+ [Bug #5104]
- * insns.def (defined): get method entry from the method top level
- frame, not block frame. [ruby-core:54769] [Bug #8367]
+Wed Feb 15 05:02:43 2012 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-Wed May 8 01:18:41 2013 Tanaka Akira <akr@fsij.org>
+ * test/win32ole/test_err_in_callback.rb (test_err_in_callback):
+ skip test if ADODB.connection is not available.
- * internal.h (MUL_OVERFLOW_SIGNED_INTEGER_P): New macro.
- (MUL_OVERFLOW_FIXNUM_P): Ditto.
- (MUL_OVERFLOW_LONG_P): Ditto.
+Wed Feb 15 04:49:23 2012 Yusuke Endoh <mame@tsg.ne.jp>
- * array.c (rb_ary_product): Don't overflow on signed integer
- multiplication.
+ * parse.y (debug_lines, coverage): set file path encoding for coverage
+ result. [ruby-dev:44950]
- * numeric.c (fix_mul): Ditto.
- (int_pow): Ditto.
+Tue Feb 14 16:57:11 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * rational.c (f_imul): Ditto.
+ * lib/rake/file_list.rb (Rake::FileList#egrep): there is no need to
+ open files in binary mode.
+ see more details in https://github.com/jimweirich/rake/issues/74
- * insns.def (opt_mult): Ditto.
+Tue Feb 14 16:52:17 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * thread.c (sleep_timeval): Don't overflow on signed integer addition.
+ * lib/rdoc/encoding.rb (RDoc::Encoding.read_file): fixup newline chars
+ on Windows.
+ see https://github.com/rdoc/rdoc/issues/87
- * bignum.c (rb_int2big): Don't overflow on signed integer negation.
- (rb_big2ulong): Ditto.
- (rb_big2long): Ditto.
- (rb_big2ull): Ditto.
- (rb_big2ll): Ditto.
+ * test/rdoc/test_rdoc_markup_pre_process.rb
+ (TestRDocMarkupPreProcess#test_include_file,
+ TestRDocMarkupPreProcess#test_include_file_encoding_incompatible):
+ follow above change.
-Tue May 7 20:13:12 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+Tue Feb 14 16:34:11 2012 Shota Fukumori <sorah@tubusu.net>
- * test/ruby/test_thread.rb (invoke_rec): extend timeout 10 -> 50 sec,
- to investigate test failure on rubyci.
- http://a.mrkn.jp/~mrkn/chkbuild/mountain_lion/ruby-2.0.0-m64-o0/log/20130507T052909Z.log.html.gz
+ * test/rubygems/test_gem_commands_help_command.rb: Add one
+ `require` because if run test-all with test/unit parallel
+ running, sometimes this test fails by some constants not found.
+ The error reason is some worker doesn't require the file needed by
+ this test. This issue is related to [ruby-core:36168].
-Sat May 4 23:48:56 2013 Zachary Scott <zachary@zacharyscott.net>
+Tue Feb 14 15:58:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * doc/security.rdoc: Add note about reporting security vulns
+ * gc.c (initial_params): pack in a struct.
-Sat May 4 23:44:54 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (rb_gc_set_params): set parameters always.
+ [ruby-dev:44648] [Bug #5467]
- * object.c (rb_obj_is_kind_of): skip prepending modules.
- [ruby-core:54742] [Bug #8357]
+Tue Feb 14 15:44:42 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * object.c (rb_class_inherited_p): ditto.
- [ruby-core:54736] [Bug #8357]
+ * test/irb/test_completion.rb: skip if cannot load irb/completion
+ (maybe readline does not exist).
-Thu May 2 23:39:45 2013 Tanaka Akira <akr@fsij.org>
+Tue Feb 14 15:07:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * thread.c (double2timeval): convert the infinity to TIME_MAX to avoid
- SEGV by Thread.new {}.join(Float::INFINITY) on
- Debian GNU/Linux (amd64).
+ * lib/test/unit/assertions.rb (build_message): skip escaped
+ question marks.
-Thu May 2 00:30:00 2013 Tanaka Akira <akr@fsij.org>
+Mon Feb 13 12:06:29 2012 Loren Segal <lsegal@soen.ca>
- * thread_pthread.c (ruby_init_stack): Add STACK_GROW_DIR_DETECTION.
- This fixes a compilation failure while cross-compiling for Tensilica
- Xtensa Processor.
+ * io.c (Init_IO): use directive hack to make ARGF documentable
+ in other tools. [ruby-core:42515][Bug #6007]
-Thu May 2 00:19:46 2013 Tanaka Akira <akr@fsij.org>
+Sun Feb 12 16:57:56 2012 Akinori MUSHA <knu@iDaemons.org>
- * dir.c (dir_set_pos): Fix a compilation error when seekdir() is not
- exist.
+ * misc/rdoc-mode.el (rdoc-imenu-create-index): Add imenu support
+ to rdoc-mode.
-Thu May 2 00:16:36 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * misc/rdoc-mode.el (rdoc-mode): Fix regexp patterns containing
+ "\s " where CR/LF is not supposed to match.
- * README.EXT: correct method name to be used. [Bug #7982]
+Sun Feb 12 16:56:23 2012 Akinori MUSHA <knu@iDaemons.org>
- * README.EXT.ja: add notes too.
+ * misc/rdoc-mode.el (rdoc-mode): Add provide so that requiring
+ this library succeeds.
-Thu May 2 00:16:36 2013 Zachary Scott <zachary@zacharyscott.net>
+Sun Feb 12 16:53:18 2012 Akinori MUSHA <knu@iDaemons.org>
- * README.EXT: Copy note from r40505 for rb_sprintf() [Bug #7982]
+ * lib/tempfile.rb (Tempfile#unlink, Tempfile::Remover#call): Just
+ call File.unlink and ignore ENOENT because existence check
+ before unlinking does not help in terms of race condition.
-Thu May 2 00:16:36 2013 Zachary Scott <zachary@zacharyscott.net>
+ * lib/tempfile.rb (Tempfile#unlink, Tempfile::Remover#call): My
+ comment about thread safeness is obsolete.
- * README.EXT: Update note from r40504, by Jeremy Evans [Bug #7982]
+Sun Feb 12 16:50:28 2012 Akinori MUSHA <knu@iDaemons.org>
-Thu May 2 00:16:36 2013 Zachary Scott <zachary@zacharyscott.net>
+ * lib/shellwords.rb: Fix rdoc markups.
- * README.EXT: Add note to warn use of %i in Exceptions [Bug #7982]
+Sun Feb 12 16:50:28 2012 Akinori MUSHA <knu@iDaemons.org>
-Wed May 1 23:35:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/shellwords.rb (Shellwords#shellsplit): Fix a bug where
+ consecutive backslashes in double quotes are all removed except
+ the one at the tail.
- * io.c (rb_io_ext_int_to_encs, parse_mode_enc): bom-prefixed name is
- not a real encoding name, just a fallback. so the proper conversion
- should take place even if if the internal encoding is equal to the
- bom-prefixed name, unless actual encoding is equal to the internal
- encoding. [ruby-core:54563] [Bug #8323]
+Sun Feb 12 16:38:13 2012 Akinori MUSHA <knu@iDaemons.org>
- * io.c (io_set_encoding_by_bom): reset extenal encoding if no BOM
- found. [ruby-core:54569]
+ * lib/shellwords.rb (Shellwords#shellescape): Drop the //n flag
+ that only causes warnings with no real effect. [Bug #5637]
-Sat Apr 27 02:12:14 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Feb 12 16:34:55 2012 Akinori MUSHA <knu@iDaemons.org>
- * io.c (rb_fd_fix_cloexec): use rb_update_max_fd().
+ * tool/merger.rb (#default_merge_branch): Add support for
+ Subversion 1.7 which adopted a whole new working directory
+ structure.
-Sat Apr 27 02:12:14 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Feb 12 09:38:46 2012 Yukihiro Matsumoto <matz@ruby-lang.org>
- * io.c (rb_update_max_fd): use ATOMIC_CAS because this function
- is used from timer thread too.
+ * vm_method.c (rb_add_method): should not call method_added hook
+ for undef operation. [Bug #5015]
-Sat Apr 27 01:57:43 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+Sun Feb 12 09:29:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in: use quadrigraphs. workaround for autoconf 2.64.
- a patch provided by Hessob Park. [ruby-core:53157] [Backport #8020]
+ * regint.h (PLATFORM_UNALIGNED_WORD_ACCESS): Power PC does not
+ allow unaligned word access.
-Sat Apr 27 00:39:28 2013 NARUSE, Yui <naruse@ruby-lang.org>
+ * st.c (UNALIGNED_WORD_ACCESS): x86_64 allows unaligned word
+ access as well as i386.
- * string.c (rb_str_inspect): refix r40413, on Ruby 1.9 usual character
- escape uses hex/Unicode escapes, so fix to use Unicode escape on
- Unicode strings and hex on others. [ruby-core:54458] [Bug #8290]
+Sat Feb 11 08:06:12 2012 Tanaka Akira <akr@fsij.org>
-Sat Apr 27 00:39:28 2013 Akinori MUSHA <knu@iDaemons.org>
+ * test/openssl/test_ssl.rb (test_multibyte_read_write): start server
+ for each length to avoid race condition.
- * test/ruby/test_module.rb
- (TestModule#test_const_get_invalid_name)
- (test_const_defined_invalid_name): Fix expected values.
+Sat Feb 11 06:13:07 2012 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Apr 27 00:39:28 2013 Akinori MUSHA <knu@iDaemons.org>
+ * dir.c (fnmatch): The * needs to be escaped to avoid formatting in
+ fnmatch comment.
+ patched by @dalton. https://github.com/ruby/ruby/pull/91
- * string.c (rb_str_inspect): NUL should not be represented as "\0"
- when octal digits may follow. [ruby-core:54458] [Bug #8290]
+Sat Feb 11 03:38:48 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-Fri Apr 26 23:48:58 2013 Tanaka Akira <akr@fsij.org>
+ * io.c (rb_sys_fail_path): move the definition.
+ Move above for using it in set_binary_mode_with_seek_cur().
- * thread_pthread.c (ruby_init_stack): Add STACK_GROW_DIR_DETECTION.
- This fixes a compilation failure while cross-compiling for ARM.
+ * io.c (set_binary_mode_with_seek_cur): fix improper seek cursor.
+ Seeking file cursor with setting binary mode has possibility to
+ cause infinite loop. Fixed the bug and refined error handling.
+ Introduced at r34043.
-Fri Apr 26 23:32:09 2013 Kouhei Sutou <kou@cozmixng.org>
+ And cleanups as below.
+ Remove unnecessary parentheses of `fptr`.
+ Use return value of setmode().
- * lib/rss/atom.rb (RSS::Atom::Entry): Fix indent of document comment.
+ * test/ruby/test_io_m17n.rb
+ (TestIO_M17N#test_seek_with_setting_binmode): add a test for abobe.
+ [ruby-core:41671] [Bug #5714]
-Fri Apr 26 23:32:09 2013 Kouhei Sutou <kou@cozmixng.org>
+Sat Feb 11 03:38:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/rss/maker.rb (RSS::Maker): Fix indent of document comment.
+ * test/ruby/test_io_m17n.rb
+ (TestIO_M17N#test_{read_with_binmode_and_get[cs]}): only for Windows.
-Fri Apr 26 23:32:09 2013 Zachary Scott <zachary@zacharyscott.net>
+Sat Feb 11 03:38:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/rss/atom.rb: Documentation for RSS::Atom based on a patch by
- Michael Denomy
- * lib/rss/maker.rb: Documentation for RSS::Maker also by @mdenomy
+ * win32/win32.c, include/ruby/win32.h (rb_w32_fd_is_text): new function.
-Thu Apr 25 00:40:41 2013 Zachary Scott <zachary@zacharyscott.net>
+ * win32/win32.c (init_stdhandle): set default mode of stdin as binmode.
- * numeric.c: Fix wiki link on Float imprecision in overview, patched
- by Makoto Kishimoto [Bug #8304] [ruby-dev:47280]
+ * io.c (set_binary_mode_with_seek_cur): new function to replace
+ SET_BINARY_MODE_WITH_SEEK_CUR macro. now returns previous mode of the
+ fd and take care of LF in rbuf.
-Thu Apr 25 00:39:16 2013 Zachary Scott <zachary@zacharyscott.net>
+ * io.c (do_writeconv): set text mode when needed.
- * string.c: Document String#setbyte return value by @gjmurakami-10gen
- [Fixes GH-294]
+ * io.c (io_read): need to change the mode of the IO to binmode
+ temporally when the length for IO#read, because IO#read with length
+ must behave so.
-Thu Apr 25 00:38:06 2013 Zachary Scott <zachary@zacharyscott.net>
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#test_{read_with_length,
+ read_with_length_binmode,get[cs]_and_read_with_binmode,
+ read_with_binmode_and_get[cs],read_write_with_binmode}): tests for
+ above changes.
- * ext/socket/lib/socket.rb: Doc typos by @vipulnsward [Fixes GH-292]
+ all patches are written by Hiroshi Shirosaki. [ruby-core:41496]
+ [Feature #5714]
-Tue Apr 23 23:06:43 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Feb 11 03:37:56 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * vm_method.c (rb_mod_public_method): fix visibility on anonymous
- module. set visibility of singleton method, not method in base
- class. [ruby-core:54404] [Bug #8284]
+ * test/rexml/test_order.rb (OrderTester#test_more_ordering): use
+ GZip::GzReader.open instead of GZip::GzReader.new with File.new.
+ fixed a test error on Windows introduced at r33946.
-Tue Apr 23 22:33:16 2013 Shugo Maeda <shugo@ruby-lang.org>
+Sat Feb 11 03:37:34 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/net/imap.rb (getacl_response): parse the mailbox of an ACL
- response correctly. [ruby-core:54365] [Bug #8281]
+ * ext/zlib/zlib.c (rb_gzreader_initialize): revert a part of r33937.
+ 1st, to change the mode of an IO is very sensitive problem, so
+ fixed test errors on Windows introduced at r33953.
+ the maintainer of this library should judge it.
+ 2nd, usually Zlib::GzReader.new is not called directly. #initialize
+ is called via .open, and in the method the I/O is opened in binary
+ mode, so there is no problem without changing the mode in #initialize.
-Sun Apr 21 00:14:36 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ fixed test errors on Windows introduced at r33947.
+Sat Feb 11 03:23:58 2012 Luis Lavena <luislavena@gmail.com>
- * test/ruby/test_require.rb (TestRequire#test_require_nonascii_path):
- RUBY_PLATFORM should escape as Regexp,
- because RUBY_PLATFORM may contain '.'.
+ * ext/zlib/zlib.c (rb_gzreader_initialize): use binary mode by default
+ under Windows. Patch by Hiroshi Shirosaki. [ruby-core:40706]
+ [Feature #5562]
-Sun Apr 21 00:14:36 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * include/ruby/encoding.h (void rb_econv_binmode): define NEWLINE
+ decorator.
- * test/ruby/test_require.rb (TestRequire#test_require_nonascii_path):
- fix load path for encoding to run the test as stand-alone.
+ * io.c (rb_cloexec_fcntl_dupfd): Introduce NEED_READCONV and
+ NEED_WRITECONV to replace universal newline decorator by CRLF only
+ when required to improve file reading and writing under Windows.
+ Patch by Hiroshi Shirosaki. [ruby-core:40706] [Feature #5562]
+ * io.c (do_writeconv): adjust binary mode if required.
+ * io.c (read_all, appendline, swallow, rb_io_getline_1): ditto.
+ * io.c (io_getc, rb_io_each_codepoint, rb_io_ungetc): ditto.
+ * io.c (rb_io_binmode, rb_io_ascii8bit_binmode): ditto.
+ * io.c (rb_io_extract_modeenc, rb_sysopen): ditto.
+ * io.c (pipe_open, prep_stdio, io_encoding_set): ditto.
+ * io.c (rb_io_s_pipe, copy_stream_body): ditto.
-Sun Apr 21 00:14:36 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * test/ruby/test_io_m17n.rb (EOT): add test for pipe and stdin in
+ binary mode.
- * load.c (features_index_add): use rb_str_subseq() to specify C string
- position properly to fix require non ascii path.
- [ruby-core:53733] [Bug #8165]
+ * win32/win32.c (init_stdhandle): remove O_BINARY from stdhandle
+ initialization.
+ * win32/win32.c (rb_w32_write): use FTEXT mode accordingly.
- * test/ruby/test_require.rb (TestRequire#test_require_nonascii_path):
- a test for the above.
+Sat Feb 11 03:20:22 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Sun Apr 21 00:13:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * io.c (argf_next_argv): wrong timing of setting ecflags.
+ fixed the failure of TestArgf#test_textmode introduced at r33662.
- * load.c (rb_feature_p), vm_core.h (rb_vm_struct): turn
- loaded_features_index into st_table. patches by tmm1 (Aman Gupta)
- in [ruby-core:53251] and [ruby-core:53274] [Bug #8048]
+Sat Feb 11 03:19:45 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Sun Apr 21 00:13:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_io_m17n.rb
+ (TestIO_M17N#test_default_stdout_stderr_mode): new test for
+ r33627-33629. see [backport #5565]
+Sat Feb 11 03:20:22 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * load.c (features_index_add_single, rb_feature_p): store single index
- as Fixnum to reduce the number of arrays for the indexes. based on
- the patch by tmm1 (Aman Gupta) in [ruby-core:53216] [Bug #8048].
+ * include/ruby/encoding.h (ECONV_NEWLINE_DECORATOR_READ_MASK,
+ ECONV_NEWLINE_DECORATOR_WRITE_MASK): new macro.
-Sat Apr 20 23:32:06 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * io.c (rb_io_extract_modeenc, pipe_open, prep_stdio, argf_next_argv):
+ set TEXTMODE_NEWLINE_DECORATOR_ON_WRITE for textmode on creating IO
+ if the flag is available.
- * dir.c (glob_helper): should skip dot directories only for recursion,
- but should not if matching to the given pattern. [ruby-core:54387]
- [Bug #8283]
+ * io.c (make_writeconv): drop decorators for reading.
-Sat Apr 20 02:37:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * io.c (make_readconv): drop decorators for writing.
- * ext/curses/curses.c (Init_curses): fix implementation function,
- crmode should be same as cbreak. [ruby-core:54013] [Bug #8222]
+ * io.c (do_writeconv): existing writeconv is not the condition to raise
+ ArgumentError. should check textmode or not.
-Sat Apr 20 02:09:46 2013 Martin Bosslet <Martin.Bosslet@gmail.com>
+ * test/ruby/test_io_m17n.rb
+ (TestIO_M17N#test_{cr,lf,crlf}_decorator_on_stdout): test above
+ changes.
- * ext/openssl/ossl_ssl.c: Correct shutdown behavior w.r.t GC.
- * test/openssl/test_ssl.rb: Add tests to verify correct behavior.
+Sat Feb 11 03:19:45 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- [Bug #8240] Patch provided by Shugo Maeda. Thanks!
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#test_{default_mode_on_dosish,
+ default_mode_on_unix,text_mode,binary_mode}): sorry for wrong test
+ committed in r33144. I'd misunderstood the spec of ruby's universal
+ newline.
-Sat Apr 20 01:56:32 2013 Yuki Yugui Sonoda <yugui@google.com>
+Sat Feb 11 03:17:41 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * thread_pthread.c (ruby_init_stack): Avoid using uninitialized value.
- stackaddr and size are not set if get_stack() fails.
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#test_{default_mode_on_dosish,
+ default_mode_on_unix,text_mode,binary_mode}): tests for [Bug #5164].
-Sat Apr 20 01:47:31 2013 Yuki Yugui Sonoda <yugui@google.com>
+Sat Feb 11 03:13:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * thread_pthread.c: Fixes wrong scopes of #if USE_SLEEPY_TIMER_THREAD
- .. #endif sections. This fixes a build error on NativeClient.
+ * transcode.c: enabled econv newline option.
-Sat Apr 20 01:31:38 2013 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Feb 11 02:39:09 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * Merge Onigmo 5.13.4 f22cf2e566712cace60d17f84d63119d7c5764ee.
- [bug] fix problem with optimization of \z (Issue #16) [Bug #8210]
+ * variable.c (set_const_visibility): clear inine-cache when constant's
+ visibility is modified. [ruby-dev:44929]
-Sat Apr 20 01:18:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_module.rb (test_private_constants_clear_inlinecache):
+ add test for it.
- * vm_insnhelper.c (vm_callee_setup_keyword_arg): non-symbol key is not
- a keyword argument, keep it as a positional argument.
+Sat Feb 11 02:39:09 2012 Yusuke Endoh <mame@tsg.ne.jp>
-Sat Apr 20 01:14:08 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * variable.c (set_const_visibility): print a warning when no argument
+ is passwd to Module#private_constant. [ruby-list:48558]
- * thread.c (rb_mutex_synchronize_m): yield no block params. patch by
- splattael (Peter Suschlik) in [ruby-core:53773] [Bug #8097].
- fix GH-266.
+ * vm_method.c (set_method_visibility): ditto for
+ Module#private_class_method.
-Sat Apr 20 00:41:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Feb 11 02:39:09 2012 Yusuke Endoh <mame@tsg.ne.jp>
- * compile.c (iseq_compile_each): append keyword hash to argument array
- to splat if needed. [ruby-core:54094] [Bug #8236]
+ * variable.c (set_const_visibility): Module#private_constant has
+ changed the visibility of only the first argument. Now it changes
+ all of them. [ruby-list:48558]
-Sat Apr 20 00:31:57 2013 Kouhei Sutou <kou@cozmixng.org>
+ * test/ruby/test_module.rb: add a test for above.
- * README.EXT.ja (Data_Wrap_Struct): Remove a description about
- orphan argument. Oh, I renamed the argument name without
- changing description at r36180... Sorry....
- Patch by Makoto Kishimoto. Thanks!!! [ruby-dev:47269] [Bug #8292]
- * README.EXT.ja (Data_Make_Struct): Add a sample code that describes
- how it works.
- Patch by Makoto Kishimoto. Thanks!!! [ruby-dev:47269] [Bug #8292]
+Sat Feb 11 02:39:09 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Tue Apr 16 01:30:47 2013 Kenta Murata <mrkn@mrkn.jp>
+ * variable.c (set_const_visibility): clear inine-cache when constant's
+ visibility is modified. [ruby-dev:44929]
- * configure.in: set ac_cv_prog_cxx if CXX is supplied.
+ * test/ruby/test_module.rb (test_private_constants_clear_inlinecache):
+ add test for it.
-Tue Apr 16 01:30:47 2013 Kenta Murata <mrkn@mrkn.jp>
+Sat Feb 11 02:39:09 2012 Yusuke Endoh <mame@tsg.ne.jp>
- * configure.in: Fix c++ compiler auto-selection not only for
- Darwin 11.x, but also the other versions of Darwin.
+ * variable.c (set_const_visibility): print a warning when no argument
+ is passwd to Module#private_constant. [ruby-list:48558]
-Tue Apr 16 00:27:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * vm_method.c (set_method_visibility): ditto for
+ Module#private_class_method.
- * compile.c (iseq_compile_each): fix of defined? with empty
- expression. [ruby-core:53999] [Bug #8220]
+Sat Feb 11 02:39:09 2012 Yusuke Endoh <mame@tsg.ne.jp>
-Mon Apr 15 00:25:00 2013 Tanaka Akira <akr@fsij.org>
+ * variable.c (set_const_visibility): Module#private_constant has
+ changed the visibility of only the first argument. Now it changes
+ all of them. [ruby-list:48558]
- * time.c (num_exact): use to_r method only if to_int method is
- available.
- [ruby-core:53764] [Bug #8173] reported by Hiro Asari.
+ * test/ruby/test_module.rb: add a test for above.
-Mon Apr 15 00:22:09 2013 Shota Fukumori <her@sorah.jp>
+Sat Feb 11 02:26:51 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * ext/objspace/objspace.c: Fix typo in doc. Patch by Sho Hashimoto.
- [Bug #8116] [ruby-dev:47177]
+ * lib/openssl/buffering.rb: Force multi-byte strings to be treated as
+ binary data.
+ * test/openssl/test_ssl.rb: Add test for it.
-Mon Apr 15 00:15:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ Thanks to Niklas Baumstark for reporting the issue!
- * class.c (HAVE_METACLASS_P): should check FL_SINGLETON flag before get
- instance variable to get rid of wrong warning about __attached__.
- [ruby-core:53839] [Bug #8188]
+ [Ruby 1.9 - Bug #5233] [ruby-core:39120]
-Mon Apr 15 00:13:13 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Feb 10 17:25:28 2012 Tanaka Akira <akr@fsij.org>
- * win32/file.c (code_page): use cp1252 instead of cp20127 as US-ASCII.
- fix [ruby-core:53079] [Bug #7996]
- reported and patched by mmeltner (Michael Meltner).
+ * lib/set.rb (SortedSet.setup): remove old_init after initialize
+ method is redefined. The remove before redefinition makes the
+ warning prevention fragile. [ruby-dev:44892]
-Mon Apr 15 00:07:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Feb 10 17:02:12 2012 okkez <okkez000@gmail.com>
- * include/ruby/io.h: undef POSIX compliant names on AIX, which are no
- longer needed. patch suggested by edelsohn (David Edelsohn) in
- [ruby-core:53815]. [Bug #8174]
+ * thread_pthread.c (rb_thread_create_timer_thread): fix memory
+ leak. [ruby-dev:44904] [Bug #5688]
-Mon Apr 15 00:07:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Feb 10 05:22:32 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * include/ruby/io.h: rename SVR3,4 member names as POSIX compliant,
- to get rid of conflict on AIX. [ruby-core:53765] [Bug #8174]
+ * cont.c (fiber_setcontext): Use longjmp() instead of swapcontext() on
+ FreeBSD 9. [ruby-dev:41316] [Bug #3295] [Bug #5526]
-Sun Apr 14 23:49:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Feb 10 05:13:12 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
- * lib/mkmf.rb (configuration): not include all CFLAGS in CXXFLAGS, to
- use different set than C for C++. [ruby-core:45273] [Bug #6504]
+ * object.c: Added examples for Object#is_a? and
+ Object#instance_of? patcheed from Manoj Kumar.
+ [Bug #5880] [ruby-core:42057]
-Sun Apr 14 23:43:06 2013 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Feb 10 05:11:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/fiddle/closure.c (initialize): check mprotect's return value.
- If mprotect is failed because of PaX or something, its function call
- will cause SEGV.
- http://c5664.rubyci.org/~chkbuild/ruby-trunk/log/20130401T210301Z.diff.html.gz
+ * io.c (argf_next_argv): reset ARGF.next_p on ARGV.replace.
+ r34409 breaks replacing ARGV.
+ [ruby-dev:45160] [Bug #5952]
-Sun Apr 14 23:19:55 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Feb 10 05:11:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/mkmf.rb (MAIN_DOES_NOTHING): ensure symbols for tests to be
- preserved. [ruby-core:53745] [Bug #8169]
+ * io.c (argf_close): skip stdin, which should be readable again.
+ [ruby-dev:45160] [Bug #5952]
-Sun Apr 14 23:19:55 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * io.c (argf_readlines): reinitialize after all read to be
+ readable again.
- * lib/mkmf.rb (MAIN_DOES_NOTHING): force to refer symbols for tests
- to be preserved. [ruby-core:53745] [Bug #8169]
+Fri Feb 9 01:36:19 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Sun Apr 14 03:00:51 2013 Naohisa Goto <ngotogenome@gmail.com>
+ * backport r34482 from trunk
- * configure.in (AC_CHECK_HEADERS): atomic.h for Solaris atomic_ops.
+ * ext/openssl/ossl_ssl.c: Add SSL constants and allow to unset SSL
+ option to prevent BEAST attack. See [Bug #5353].
- * ruby_atomic.h: Skip using Solaris10 atomic_ops on Solaris 9 or
- earlier if atomic.h is not available. [ruby-dev:47229] [Bug #8228]
+ In OpenSSL, OP_DONT_INSERT_EMPTY_FRAGMENTS is used to prevent
+ TLS-CBC-IV vulunerability described at
+ http://www.openssl.org/~bodo/tls-cbc.txt
+ It's known issue of TLSv1/SSLv3 but it attracts lots of attention
+ these days as BEAST attack. (CVE-2011-3389)
-Sun Apr 14 02:32:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ Until now ossl sets OP_ALL at SSLContext allocation and call
+ SSL_CTX_set_options at connection. SSL_CTX_set_options updates the
+ value by using |= so bits set by OP_ALL cannot be unset afterwards.
+ This commit changes to call SSL_CTX_set_options only 1 time for each
+ SSLContext. It sets the specified value if SSLContext#options= are
+ called and sets OP_ALL if not.
- * time.c (GetTimeval): check if already initialized instance.
+ To help users to unset bits in OP_ALL, this commit also adds several
+ constant to SSL such as
+ OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS. These constants were
+ not exposed in Ruby because there's no way to unset bits in OP_ALL
+ before.
- * time.c (GetNewTimeval): check if newly created instance.
+ Following is an example to enable 0/n split for BEAST prevention.
- * time.c (time_init_0, time_init_1, time_init_copy, time_mload): must
- be newly created instance. [ruby-core:53436] [Bug #8099]
+ ctx.options = OP_ALL & ~OP_DONT_INSERT_EMPTY_FRAGMENTS
-Sun Apr 14 02:13:25 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * test/openssl/test_ssl.rb: Test above option exists.
- * vm_eval.c (check_funcall_respond_to): preserve passed_block, which
- is modified in vm_call0_body() via vm_call0(), and caused a bug of
- rb_check_funcall() by false negative result of rb_block_given_p().
- re-fix [ruby-core:53650] [Bug #8153].
- [ruby-core:53653] [Bug #8154]
+Thu Feb 9 17:08:20 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Fri Apr 12 04:16:30 2013 Naohisa Goto <ngotogenome@gmail.com>
+ * cont.c (cont_mark): mark original Thread object from saved_thread.
+ [ruby-dev:44567] [Bug #5386]
- * marshal.c (marshal_dump, marshal_load): workaround for segv on
- Intel Solaris compiled with Oracle SolarisStudio 12.3.
- Partly revert r38174. [ruby-core:52042] [Bug #7805]
+Thu Feb 9 17:05:07 2012 NARUSE, Yui <naruse@ruby-lang.org>
-Fri Apr 12 04:12:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * cont.c (HAVE_GETCONTEXT): see getcontext(3) because DragonFly BSD
+ x64 port doesn't have it.
- * string.c (rb_str_conv_enc_opts): convert with one converter, instead
- of re-creating converters for each buffer expansion.
+Thu Feb 9 16:19:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Fri Apr 12 03:48:25 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/memory_status.rb (Memory::Win32): 64bit support.
- * lib/mkmf.rb (find_library): fix to format message.
- [ruby-core:53568] [Bug #8130]
+Thu Feb 9 16:19:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Fri Apr 12 03:44:45 2013 Narihiro Nakamura <authornari@gmail.com>
+ * ext/dl/lib/value.rb (DL::ValueUtil.{unsigned_value,signed_value}):
+ currenly pack/unpack does not accept "q!" and "Q!".
- * proc.c (bm_free): need to clean up the mark flag of a free and
- unlinked method entry. [Bug #8100] [ruby-core:53439]
+Thu Feb 9 16:19:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Fri Apr 12 02:27:42 2013 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/fiddle/conversions.c (value_to_generic): src is not guranteed as
+ a Bignum if the type is LONG_LONG. it may be a Fixnum if the value
+ is small.
- * addr2line.c: use more generic type:
- * u_char -> unsigned char
- * u_short -> unsigned short
- * u_int -> unsigned int
- * u_long -> unsigned long
- * quad_t -> int64_t
- * u_quad_t -> uint64_t
+Thu Feb 9 16:19:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * addr2line.c (imax): inline is defined by configure.
+ * ext/dl/lib/types.rb: Win64 support.
-Fri Apr 12 02:27:42 2013 Naohisa Goto <ngotogenome@gmail.com>
+Thu Feb 9 11:11:15 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
- * addr2line.c: quad_t and u_quad_t is not available on Solaris.
- __inline is not available with old compilers on Solaris.
- [ruby-dev:47229] [Bug #8227]
+ * ext/dbm/dbm.c (Init_dbm): fix a build error on mswin32.
+ use `extern __declspec(dllimport)` for dll link with VC.
+ [ruby-core:41996] [Bug #5869]
-Fri Apr 12 02:27:42 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Thu Feb 9 11:11:15 2012 Tanaka Akira <akr@fsij.org>
- * addr2line.c (putce): suppress unused return value warning.
+ * ext/dbm/dbm.c: use db_version() instead of DB_VERSION_STRING to
+ detect runtime Berkeley DB version.
+ use dpversion instead of _QDBM_VERSION to detect runtime QDBM
+ version.
+ [ruby-dev:44948]
-Fri Apr 12 02:27:42 2013 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Feb 9 11:11:15 2012 Tanaka Akira <akr@fsij.org>
- * addr2line.c (kprintf): added from FreeBSD libstand's printf.
- this is consided as async signal safe function.
+ * ext/dbm/extconf.rb: detect gdbm_version in libgdbm.
- * addr2line.c (rb_dump_backtrace_with_lines): use kfprintf.
- [Bug #8144] [ruby-core:53632]
+ * ext/dbm/dbm.c: make DBM::VERSION more informative for gdbm, qdbm and
+ Berkeley DB 1.x. [ruby-dev:44944]
-Fri Apr 12 02:27:42 2013 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Feb 9 07:32:40 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * addr2line.c (rb_dump_backtrace_with_lines): output line at once.
+ * numeric.c (rb_enc_uint_char): raise RangeError when added codepoint
+ is invalid. [Feature #5855] [Bug #5863] [Bug #5864]
-Fri Apr 12 02:10:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * string.c (rb_str_concat): ditto.
- * vm_method.c (rb_export_method): directly override the flag of method
- defined in prepending class too, not adding zsuper entry.
- [ruby-core:53106] [Bug #8005]
+ * string.c (rb_str_concat): set encoding as ASCII-8BIT when the string
+ is US-ASCII and the argument is an integer greater than 127.
-Fri Apr 12 01:57:52 2013 Eric Hodel <drbrain@segment7.net>
+ * regenc.c (onigenc_mb2_code_to_mbclen): rearrange error code.
- * lib/fileutils.rb: Revert r34669 which altered the way
- metaprogramming in FileUtils occurred. [ruby-trunk - Bug #7958]
+ * enc/euc_jp.c (code_to_mbclen): ditto.
- * test/fileutils/visibility_tests.rb: Refactored tests of FileUtils
- options modules to expose bug found in #7958
- * test/fileutils/test_dryrun.rb: ditto.
- * test/fileutils/test_nowrite.rb: ditto.
- * test/fileutils/test_verbose.rb: ditto.
+ * enc/shift_jis.c (code_to_mbclen): ditto.
-Fri Apr 12 01:28:46 2013 Luis Lavena <luislavena@gmail.com>
+Thu Feb 9 07:28:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * win32/file.c (get_user_from_path): add internal function that retrieves
- username from supplied path (refactored).
- * win32/file.c (rb_file_expand_path_internal): refactor expansion of user
- home to use get_user_from_path and cover dir_string corner cases.
- [ruby-core:53168] [Bug #8034]
+ * test/pathname/test_pathname.rb: not read but binread.
+ patched by Benoit Daloze, [ruby-core:42440] [Bug #5984]
-Fri Apr 12 01:28:46 2013 Luis Lavena <luislavena@gmail.com>
+Wed Feb 8 22:29:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * win32/file.c (rb_file_expand_path_internal): Expand home directory when
- used as second parameter (dir_string). [ruby-core:53168] [Bug #8034]
- * test/ruby/test_file_exhaustive.rb: add test to verify.
+ * string.c (rb_str_modify_expand): fix memory leak.
-Mon Apr 8 00:10:59 2013 Narihiro Nakamura <authornari@gmail.com>
+Wed Feb 8 10:58:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * gc.c: Fix unlimited memory growth with large values of
- RUBY_FREE_MIN. patched by tmm1(Aman Gupta).
- [Bug #8095] [ruby-core:53405]
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ respect encodings. [Bug #5941]
-Sun Apr 7 22:27:12 2013 Narihiro Nakamura <authornari@gmail.com>
+Wed Feb 8 10:56:00 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * gc.c: Avoid unnecessary heap growth. patched by tmm1(Aman Gupta).
- [Bug #8093] [ruby-core:53393]
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ fix compile error.
-Sun Apr 7 03:01:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 8 10:56:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * parse.y (simple_re_meta): escape all closing characters, not only
- round parenthesis. [ruby-core:53578] [Bug #8133]
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ empty completion result does not mean memory error.
-Sun Apr 7 02:54:40 2013 Narihiro Nakamura <authornari@gmail.com>
+Wed Feb 8 10:54:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * gc.c: Improve accuracy of objspace_live_num() and
- allocated/freed counters. patched by tmm1(Aman Gupta).
- [Bug #8092] [ruby-core:53392]
+ * ext/readline/readline.c (readline_readline): check if outstream
+ is closed to get rid of a bug of readline 6. [ruby-dev:45043]
+ [Bug #5803]
-Fri Apr 5 00:54:08 2013 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Feb 8 10:52:51 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/openssl/ossl_bn.c (ossl_bn_initialize): fix can't create from bn.
+ * ext/readline/readline.c (Init_readline): like r18313, libedit's
+ replace_history_entry may use offset instead of which.
+ so introduce history_replace_offset_func and initialize it.
-Thu Apr 4 02:27:12 2013 Tanaka Akira <akr@fsij.org>
+ * ext/readline/readline.c (hist_set): use history_replace_offset_func.
- * lib/resolv-replace.rb (TCPSocket#initialize): resolve the 3rd
- argument only if non-nil value is given.
- [ruby-dev:47150] [ruby-trunk - Bug #8054] reported and analyzed by
- mrkn.
+Wed Feb 8 10:52:36 2012 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Apr 4 02:24:59 2013 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/readline/readline.c (Init_readline): fix wrong condition.
- * Merge Onigmo d4bad41e16e3eccd97ccce6f1f96712e557c4518.
- fix lookbehind assertion fails with /m mode enabled. [Bug #8023]
- fix \Z matches where it shouldn't. [Bug #8001]
+Wed Feb 8 10:50:11 2012 Naohisa Goto <ngotogenome@gmail.com>
-Thu Apr 4 02:11:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_rubyoptions.rb (test_script_from_stdin): slave pty
+ should be manipulated because master pty may not be a tty on some
+ environment (e.g. Solaris). [Bug:#5222] [ruby-dev:44420]
- * marshal.c (w_extended): check for prepended object.
- [ruby-core:53206] [Bug #8043]
+Wed Feb 8 10:38:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Mar 27 03:02:30 2013 NARUSE, Yui <naruse@ruby-lang.org>
+ * Makefile.in (CFLAGS): append ARCH_FLAG.
- * vm_exec.c: Correct predefined macro name. This typo is introduced by
- r36534 and should be backported to ruby_2_0_0.
+ * configure.in (ARCH_FLAG): exclude from CFLAGS.
-Wed Mar 27 02:58:44 2013 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Feb 08 09:19:00 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * Merge Onigmo 0fe387da2fee089254f6b04990541c731a26757f
- v5.13.3 [Bug#7972] [Bug#7974]
+ * ext/openssl/ossl_cipher.c: Add warning about key as IV.
-Wed Mar 27 02:53:53 2013 Kouhei Sutou <kou@cozmixng.org>
+Wed Feb 8 10:37:31 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * lib/rexml/document.rb: move entity_expansion_text_limit accessor to ...
- * lib/rexml/rexml.rb: ... here to make rexml/text independent from
- REXML::Document. It causes circular require.
- * lib/rexml/document.rb (REXML::Document.entity_expansion_text_limit):
- deprecated.
- * lib/rexml/document.rb (REXML::Document.entity_expansion_text_limit=):
- deprecated.
- * lib/rexml/text.rb: add missing require "rexml/rexml" for
- REXML.entity_expansion_text_limit.
- Reported by Robert Ulejczyk. Thanks!!! [ruby-core:52895] [Bug #7961]
+ * ext/openssl/ossl_cipher.c: Update and complete documentation.
-Wed Mar 27 02:50:45 2013 Shugo Maeda <shugo@ruby-lang.org>
+Wed Feb 08 09:57:33 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * object.c (Init_Object): remove Module#used, which has been
- introduced in Ruby 2.0 by mistake. [Bug #7916] [ruby-core:52719]
+ * ext/openssl/ossl_asn1.c: Call INT2NUM only once for GeneralString.
+ Thanks to Mantas Mikulenas for noticing and providing a patch!
+ [ruby-core:42358] [Bug #5972]
-Mon Mar 25 02:02:15 2013 Tadayoshi Funaba <tadf@dotrb.org>
+Wed Feb 8 10:34:59 2012 TAKAO Kouji <kouji@takao7.net>
- * complex.c: edited rdoc.
- * rational.c: ditto.
+ * ext/readline/readline.c (readline_attempted_completion_function):
+ in Readline module with GNU Readline 6 case, Readline module
+ resets completion_append_character to " ", after it executes
+ completion. So, Readline module stores
+ completion_append_character, and Readline module always sets it
+ after Readline module executes completion. [ruby-dev:43456]
+ [Feature #4635]
-Mon Mar 25 02:02:15 2013 Tadayoshi Funaba <tadf@dotrb.org>
+Wed Feb 8 09:47:52 2012 Tanaka Akira <akr@fsij.org>
- * complex.c: described syntax of string form.
- * rational.c: ditto.
+ * test/ruby/test_sleep.rb (test_sleep_5sec): 0.1sec tolerance is too
+ small for busy environment.
-Mon Mar 25 01:26:26 2013 Zachary Scott <zachary@zacharyscott.net>
+Wed Feb 8 09:45:23 2012 Tanaka Akira <akr@fsij.org>
- * lib/webrick/httpproxy.rb: Fix typos in HTTPProxyServer [Bug #8013]
- Patch by Nobuhiro IMAI [ruby-core:53127]
+ * test/dbm/test_dbm.rb: split tests for read only database.
-Mon Mar 25 01:09:48 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/gdbm/test_gdbm.rb: ditto.
- * compile.c (iseq_compile_each): pass keyword arguments to zsuper,
- with current values. [ruby-core:53114] [Bug #8008]
+Wed Feb 8 09:43:48 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Mon Mar 25 01:05:15 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * error.c (name_err_mesg_to_str): clear rb_thread_t::errinfo when
+ ignore exception under rb_protect(). [ruby-core:41612] [Bug #5755]
- * ext/objspace/objspace.c (count_nodes): count also newly added nodes,
- and fix key for unknown node. patch by tmm1 (Aman Gupta) in
- [ruby-core:53130] [Bug #8014]
+ * test/ruby/test_exception.rb (test_exception_in_name_error_to_str):
+ add a corresponding test.
-Mon Mar 25 01:00:03 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 8 09:36:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * class.c (rb_prepend_module): check redefinition of built-in optimized
- methods. [ruby-dev:47124] [Bug #7983]
+ * encoding.c (require_enc): reject only loading from untrusted
+ load paths. [ruby-dev:44541] [Bug #5279]
- * vm.c (rb_vm_check_redefinition_by_prepend): ditto.
+ * transcode.c (load_transcoder_entry): ditto.
-Mon Mar 25 00:51:57 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 8 09:36:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * Makefile.in (miniruby, ruby): move MAINLIBC because linker arguments
- must appear after object files with newer versions of gcc. patch by
- tmm1 (Aman Gupta) in [ruby-core:53121] [Bug #8009]
+ * encoding.c (load_encoding): predefined encoding names are safe.
+ [ruby-dev:44469] [Bug #5279]
-Mon Mar 25 00:47:04 2013 Koichi Sasada <ko1@atdot.net>
+ * transcode.c (load_transcoder_entry): ditto.
- * iseq.c (iseq_data_to_ary): fix condition.
- r34303 introduces a bug to avoid all line information from
- a result of ISeq#to_a. This is a regression problem from 2.0.0p0.
+Tue Feb 7 14:29:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_iseq.rb: add a test of lines after ISeq#to_a.
+ * st.c (st_foreach): should not yield same pair when checking
+ after unpacking.
-Mon Mar 25 00:41:23 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Feb 7 14:03:45 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * tool/mkconfig.rb: reconstruct comma separated list values. a
- command line to Windows batch file is split not only by spaces
- and equal signs but also by commas and semicolons.
+ * lib/tempfile.rb (Tempfile#_close): clear @tempfile and @data[1] even
+ when exception is raised at @tempfile.close. [ruby-dev:45113]
-Wed Mar 20 23:21:14 2013 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * lib/tempfile.rb (Tempfile#unlink): fix a typo.
- * test/rubygems/test_gem_installer.rb (test_install_extension_flat):
- use ruby in build directory in case ruby is not installed.
- [ruby-core:53265] [Bug #8058]
+Tue Feb 7 14:02:32 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Wed Mar 20 23:17:33 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/ruby/test_io.rb (test_autoclose_true_closed_by_finalizer,
+ test_autoclose_true_closed_by_finalizer): skip if IO objects are
+ not recycled yet. [ruby-dev:45098] [Bug #5850]
- * test/win32ole/test_err_in_callback.rb (TestErrInCallBack#setup):
- allow using different root for source and build directories.
- this may fixes a minor problem of r39834.
+Tue Feb 7 13:59:26 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Wed Mar 20 23:17:33 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+ * gc.c (run_finalizer): clear rb_thread_t::errinfo when ignore
+ an exception under rb_protect(). [ruby-dev:45113]
- * test/win32ole/test_err_in_callback.rb (TestErrInCallBack#setup): use
- relative path to get rid of "too long commandline" error.
+Mon Feb 6 15:34:47 2012 Tanaka Akira <akr@fsij.org>
-Wed Mar 20 23:17:33 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ruby.c (fill_standard_fds): use fstat() instead of fcntl(F_GETFD)
+ for MinGW. reported by Luis Lavena. [ruby-core:40526] [Bug #5516]
- * test/win32ole/test_err_in_callback.rb
- (TestErrInCallBack#test_err_in_callback): shouldn't create a file in
- the top of build directory.
+Mon Feb 6 15:34:47 2012 Tanaka Akira <akr@fsij.org>
-Wed Mar 20 23:08:40 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ruby.c (fill_standard_fds): new function to open closed standard
+ file descriptors.
+ (ruby_sysinit): call fill_standard_fds.
- * include/ruby/missing.h: removed __linux__. it's unnecessary.
+Mon Feb 6 15:19:17 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Mar 20 23:03:27 2013 Tanaka Akira <akr@fsij.org>
+ * io.c (rb_io_fsync,rb_io_fdatasync): release GVL during fsync().
+ fsync() and fdatasync() may take a long time on slow disks and/or
+ if there is much dirty data.
+ Patch by Eric Wong. [Feature #5665] [ruby-core:41247]
- * configure.in: move OS specific header/function knowledge before
- automatic header tests.
+Mon Feb 6 15:01:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Mar 20 23:01:42 2013 Tanaka Akira <akr@fsij.org>
+ * vm_eval.c (vm_call0): should pass block to enumerators. patched
+ by Kazuki Tsujimoto. [ruby-dev:44961][Bug #5731]
- * configure.in: move header files check to the beginning of
- "header and library section".
- test rlim_t with sys/types.h and sys/time.h for MirOS BSD.
- sys/types.h and sys/time.h is gurded by #ifdef and the above move
- is required for this change.
+ * vm_eval.c (method_missing), vm_insnhelper.c (vm_call_method):
+ ditto. patched by satoshi shiba.
-Wed Mar 20 22:57:27 2013 Tanaka Akira <akr@fsij.org>
+Mon Feb 6 21:52:20 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
- * configure.in: move the test for -march=i486 just after
- RUBY_UNIVERSAL_ARCH/RUBY_DEFAULT_ARCH.
+ * common.mk (INSTRUBY_ARGS): added --mantype to apply mdoc2man.rb
+ to man pages. Fixes #5598.
+ (do-install-nodoc, do-install-local, do-install-man,
+ dont-install-nodoc, dont-install-local, dont-install-man):
+ No longer needs --mantype.
-Wed Mar 20 22:56:07 2013 Tanaka Akira <akr@fsij.org>
+ Reported by Rainer Orth <ro AT cebitec.uni-bielefeld.de>,
+ patch by George Koehler <xkernigh AT netscape.net>.
- * configure.in: change CFLAGS temporally to test
- ARCH_FLAG="-march=i486".
+Mon Feb 6 21:21:46 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-Wed Mar 20 22:54:33 2013 Tanaka Akira <akr@fsij.org>
+ * test/unit/assertions.rb (MINI_DIR): quick dirty hack to get rid of
+ warnings when using assert/assert_respond_to.
- * configure.in: don't define ARCH_FLAG="-march=i486" if it causes
- compilation problem.
+Mon Feb 6 20:38:19 2012 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Mar 20 22:36:41 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * file.c (file_expand_path): reset coderange after expanding path.
- * thread.c: disabled _FORTIFY_SOURCE for avoid to hit glibc bug.
- [Bug #8080] [ruby-core:53349]
- * test/ruby/test_io.rb (TestIO#test_io_select_with_many_files):
- test for the above.
+Mon Feb 6 20:32:17 2012 Tadayoshi Funaba <tadf@dotrb.org>
-Wed Mar 20 22:34:52 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/date/date_strptime.c: moved detector of leftover.
- * include/ruby/missing.h (__syscall): moved to...
- * io.c: here. because __syscall() is only used from io.c.
+Mon Feb 6 20:32:17 2012 Tadayoshi Funaba <tadf@dotrb.org>
- * include/ruby/missing.h: move "#include <sys/type.h>" to ....
- * include/ruby/intern.h: here. because it was introduced for
- fixing NFDBITS issue. [ruby-core:05179].
+ * ext/date/date_parse.c: [ruby-core:42173].
-Wed Mar 20 22:33:26 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon Feb 6 20:31:35 2012 Tadayoshi Funaba <tadf@dotrb.org>
- * include/ruby/missing.h (struct timespec): include <sys/time.h>
+ * ext/date/date_core.c: uses to_integer instead.
+ * test/date/test_switch_hitter.rb: added a test.
-Wed Mar 20 22:33:26 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon Feb 6 20:31:35 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * configure.in: check struct timeval exist or not.
- * include/ruby/missing.h (struct timeval): check HAVE_STRUCT_TIMEVAL
- properly. and don't include sys/time.h if struct timeval exist.
+ * ext/date/date_core.c (wholenum): fix the type of the return value.
- * file.c: include sys/time.h explicitly.
- * random.c: ditto.
- * thread_pthread.c: ditto.
- * time.c: ditto.
- * ext/date/date_strftime.c: ditto.
+Mon Feb 6 20:31:35 2012 Tadayoshi Funaba <tadf@dotrb.org>
-Mon Mar 18 00:12:28 2013 Eric Hodel <drbrain@segment7.net>
+ * ext/date/date_core.c: [ruby-dev:45008].
- * lib/rubygems/commands/setup_command.rb: Don't delete non-rubygems
- files when installing RubyGems.
- * test/rubygems/test_gem_commands_setup_command.rb: Test for the
- above.
+Mon Feb 6 16:38:56 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/rubygems/ext/ext_conf_builder.rb: Use full path to siteconf.rb
- in case the extconf.rb changes directories (like memcached does).
+ * win32/win32.c (unixtime_to_filetime): should check the return value
+ of localtime(). reported by snowjail at gmail.com.
+ [ruby-dev:44838] [Bug #5596]
- * lib/rubygems/package.rb: Remove double slash from path.
- * test/rubygems/test_gem_package.rb: Test for the above.
- * test/rubygems/test_gem_package_old.rb: ditto.
+Mon Feb 6 16:36:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rubygems/source.rb: Revert automatic HTTPS upgrade
- * lib/rubygems/spec_fetcher.rb: ditto.
- * test/rubygems/test_gem_remote_fetcher.rb: ditto.
- * test/rubygems/test_gem_source.rb: ditto.
- * test/rubygems/test_gem_spec_fetcher.rb: ditto.
+ * io.c (rb_update_max_fd): fstat(2) can fail with other than
+ EBADF. [ruby-dev:44837] [Bug #5593]. Cf.
+ http://pubs.opengroup.org/onlinepubs/9699919799/functions/fstat.html
-Mon Mar 18 00:11:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Feb 6 16:31:16 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/rubygems/ext/ext_conf_builder.rb (Gem::Ext::ExtConfBuilder.build):
- it is impossible to predict which file will be installed to where,
- by the arguments, so use intermediate destination directory always.
- [Bug #7698]
+ * io.c (io_fwrite): call rb_w32_write_console() only if FMODE_TTY is
+ set. this is the one of the reason of IO writing slowness of Windows
+ in 1.9.3 or later.
-Mon Mar 18 00:11:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Feb 6 16:21:57 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/rubygems/ext/ext_conf_builder.rb (Gem::Ext::ExtConfBuilder.build):
- it is impossible to predict which file will be installed to where,
- by the arguments, so use intermediate destination directory always.
- [Bug #7698]
+ * file.c (file_expand_path): reset coderange after expanding path.
-Mon Mar 18 00:05:50 2013 Eric Hodel <drbrain@segment7.net>
+Mon Feb 6 00:06:39 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/rubygems/commands/setup_command.rb: Install .pem files.
- * test/rubygems/test_gem_commands_setup_command.rb: Test for the
- above.
+ * ext/json/parser/parser.rl (json_string_unescape): workaround fix
+ for over optimization of GCC 4.7. [ruby-core:42085] [Bug #5888]
+ http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51862
- * lib/rubygems/spec_fetcher.rb: Test HTTPS upgrade with URI::HTTPS,
- not URI::HTTP. Fixes bug in automatic HTTPS upgrade.
- * test/rubygems/test_gem_spec_fetcher.rb: Test for the above.
+Fri Feb 3 16:16:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rubygems.rb: Version 2.0.2
+ * test/ruby/envutil.rb (EnvUtil.invoke_ruby): yield also child pid
+ in block form.
- * lib/rubygems/test_utilities.rb: Ensure scheme and uri class match.
+Fri Feb 3 16:16:10 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-Mon Mar 18 00:03:27 2013 Eric Hodel <drbrain@segment7.net>
+ * test/ruby/test_thread.rb
+ (TestThreadGroup#test_thread_timer_and_interrupt): skip exit status
+ assertion because we cannot get signal status on Windows.
- * test/rubygems/test_require.rb: Fix tests when 'a.rb' exists.
- [ruby-trunk - Bug #7749]
+ * win32/win32.c (CreateChild): create process group to receive the
+ signal by GenerateConsoleCtrlEvent().
-Mon Mar 18 00:02:27 2013 Eric Hodel <drbrain@segment7.net>
+ * win32/win32.c (kill): use CTRL_BREAK_EVENT instead of CTRL_C_EVENT
+ if a process group is specified. CTRL_C_EVENT signal cannot be
+ generated for process groups for the specification.
+ [ruby-dev:45149] [Bug #5812]
- * lib/rubygems.rb: Allow specification of directory permissions.
- [ruby-trunk - Bug #7713]
- * test/rubygems/test_gem.rb: Test for the above.
+Fri Feb 3 16:16:10 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Mon Mar 18 00:00:32 2013 Eric Hodel <drbrain@segment7.net>
+ * test/ruby/envutil.rb (invoke_ruby): remove :timeout option before
+ pass it to Kernel#spawn.
- * test/rubygems/test_gem_spec_fetcher.rb: Removed unused variable.
+Fri Feb 3 10:10:02 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Mon Mar 18 00:00:32 2013 Eric Hodel <drbrain@segment7.net>
+ * thread_pthread.c (ping_signal_thread_list): remove return value.
+ * thread_pthread.c (check_signal_thread_list): add a new function to
+ check if signal thread list is empty.
+ * thread_pthread.c (thread_timer): check signal thread list after
+ timer_thread_function(). main thread might be added into signal thread
+ list during timer_thread_function().
- * lib/rubygems/commands/query_command.rb: Only fetch remote specs when
- showing details. [ruby-trunk - Bug #8019] RubyGems bug #487
- * lib/rubygems/remote_fetcher.rb: ditto.
- * lib/rubygems/security/policy.rb: ditto.
- * test/rubygems/test_gem_commands_query_command.rb: Test for the
- above.
+Fri Feb 3 10:10:02 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/rubygems/security.rb: Make OpenSSL optional for RubyGems.
- * lib/rubygems/commands/cert_command.rb: ditto.
+ * thread_pthread.c (ubf_select): call rb_thread_wakeup_timer_thread()
+ only when it is not timer_thread. [Bug #5757] [ruby-dev:44985]
+ patched by Tomoyuki Chikanaga.
- * lib/rubygems/config_file.rb: Display file with YAML error, not
- ~/.gemrc
+Wed Feb 1 09:50:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rubygems/remote_fetcher.rb: Only create gem subdirectories when
- installing gems.
- * lib/rubygems/dependency_resolver.rb: ditto.
- * lib/rubygems/test_utilities.rb: ditto.
- * test/rubygems/test_gem_commands_fetch_command.rb: Test for the
- above.
+ * doc/re.rdoc (Repetition): fix typo. reported by Ori Avtalion
+ and patched by Zachary Scott. [Bug #5947]
- * lib/rubygems/spec_fetcher.rb: Only try to upgrade
- http://rubygems.org to HTTPS
- * test/rubygems/test_gem_spec_fetcher.rb: Test for the above.
+Tue Jan 24 11:38:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/rubygems.rb: Update win_platform? check for JRuby compatibility.
+ * lib/uri/common.rb (URI.encode_www_form_component): initialize on
+ requiring to support JRuby, which runs parallel multithreads.
+ [ruby-core:42222] [Bug #5925]
- * test/rubygems/test_gem_installer.rb: Update for Ruby 1.9.2
- compatibility
+ * lib/uri/common.rb (URI.decode_www_form_component): initialize on
-Sun Mar 17 23:53:19 2013 Eric Hodel <drbrain@segment7.net>
+Sat Jan 28 05:53:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rubygems.rb: Bump version to 2.0.1 for upcoming bugfix release
+ * lib/irb/completion.rb (IRB::InputCompletor::CompletionProc):
+ ignore non-string name modules. [ruby-core:42244][Bug #5938]
- * lib/rubygems/ext/ext_conf_builder.rb: Restore ruby 1.8 compatibility
- for [Bug #7698]
- * test/rubygems/test_gem_installer.rb: Ditto.
+Mon Jan 23 18:18:58 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/rubygems/package.rb: Restore ruby 1.8 compatibility.
+ * encoding.c (rb_enc_compatible): fix segv on symbols.
+ [ruby-core:42204] [Bug #5921]
- * test/rubygems/test_gem_dependency_installer.rb: Fix warnings
+Tue Jan 17 17:18:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Mar 17 23:36:05 2013 Eric Hodel <drbrain@segment7.net>
+ * configure.in (SPT_TYPE): enable as SPT_REUSEARGV on Darwin.
- * lib/rubygems/available_set.rb: Undent for style
+ * missing/setproctitle.c (ruby_init_setproctitle): changed prefix.
- * lib/rubygems/dependency_installer.rb: Pick latest prerelease gem to
- install. Fixes RubyGems bug #468.
- * test/rubygems/test_gem_dependency_installer.rb: Test for the above.
+Mon Jan 16 16:41:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rubygems/dependency_installer.rb: Don't display "Done installing
- documentation" if documentation will not be installed.
- * lib/rubygems/rdoc.rb: ditto
+ * lib/optparse.rb (Regexp): fix incorrect options when casting to
+ a Regexp, and suppress encoding option warnings.
+ https://github.com/ruby/ruby/pull/82
- * lib/rubygems/dependency_list.rb: Use Array#concat for Ruby 1.x
- performance.
+Fri Jan 13 15:22:43 2012 Tanaka Akira <akr@fsij.org>
- * lib/rubygems/installer.rb: Use formatted program name when comparing
- executables. RubyGems pull request #471
- * test/rubygems/test_gem_installer.rb: Test for the above.
+ * time.c (TIME_COPY_GMT): copy vtm.utc_offset and vtm.zone too.
+ patch by Tomoyuki Chikanaga.
+ [ruby-dev:44827] [Bug #5586]
- * lib/rubygems/package.rb: Use more explicit feature check to work
- around JRuby bug #552
+Thu Jan 12 13:52:13 2012 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/rubygems/ssl_certs/GeoTrust_Global_CA.pem: Added GeoTrust root
- certificate.
+ * cont.c (cont_restore_0): prevent optimizing out `sp'. sp is used for
+ reserving a memory space with ALLOCA_N for restoring machine stack
+ stored in cont->machine_stack, but clang optimized out it (and
+ maybe #5851 is also caused by this).
+ This affected TestContinuation#test_check_localvars.
- * test/rubygems/test_gem_source_list.rb: Use "example" instead of real
- hostname
+ * cont.c (cont_restore_1): revert workaround introduced in r32201.
-Sun Mar 17 23:28:44 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Jan 12 01:40:33 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/rubygems/ext/ext_conf_builder.rb (Gem::Ext::ExtConfBuilder.build):
- clear DESTDIR so RUBYARCHDIR and RUBYLIBDIR are not be overrdden.
- [Bug #7698]
+ * test/ruby/test_io.rb (TestIO#test_autoclose): Tempfile.new doesn't
+ accept the block argument.
-Sun Mar 17 23:26:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Jan 7 22:46:36 2012 Kouhei Sutou <kou@cozmixng.org>
- * lib/rubygems/ext/ext_conf_builder.rb (Gem::Ext::ExtConfBuilder.build):
- fix for unusal cases again. install to a temporary directory once
- and move instaled files to the destination directory, if it is same
- as the current directory. [Bug #7698]
+ * lib/rexml/parsers/baseparser.rb: use private instead of _xxx
+ method name. This is Ruby code not Python code.
+ refs #5696
-Sun Mar 17 23:22:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Jan 03 23:57:37 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
- * lib/rubygems/ext/ext_conf_builder.rb
- (Gem::Ext::ExtConfBuilder.hack_for_obsolete_style_gems): remove
- circular dependencies in install-so too. [ruby-core:52882]
- [Bug #7698]
+ * lib/rexml/parsers/baseparser.rb: rexml BaseParser uses
+ instance_eval unnecessarily on listener add.
+ patch from Charles Nutter. [Bug #5696] [ruby-core:41437]
-Sun Mar 17 23:19:34 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Jan 03 19:13:05 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
- * lib/rubygems/ext/ext_conf_builder.rb (Gem::Ext::ExtConfBuilder.build):
- revert use of temporary directory for build, to work some buggy
- extconf.rb which cannot build outside the source directory.
- [ruby-core:53056] [Bug #7698]
+ * test/rexml/test_sax.rb: add require 'rexml/document'.
+ [Backport #5834] [ruby-dev:45079]
-Sun Mar 17 23:11:35 2013 Eric Hodel <drbrain@segment7.net>
+Tue Jan 3 19:05:42 2012 Naohisa Goto <ngotogenome@gmail.com>
- * lib/rubygems/ext/builder.rb: Fix incompatibilities when installing
- extensions. Patch by Nobu.
- [ruby-trunk - Bug #7698] [ruby-trunk - Bug #7971]
- * lib/rubygems/ext/ext_conf_builder.rb: ditto.
- * lib/rubygems/installer.rb: ditto.
- * test/rubygems/test_gem_ext_ext_conf_builder.rb: Test for the above.
- * test/rubygems/test_gem_installer.rb: ditto.
+ * include/ruby/defines.h (FLUSH_REGISTER_WINDOWS): move sparc asm code
+ to a separete file sparc.c for preventing inlining optimization.
+ Patched by Jurij Smakov. [Bug #5244] [ruby-core:40685]
+ * sparc.c (rb_sparc_flush_register_windows): ditto.
+ * configure.in: ditto.
- * lib/rubygems/commands/sources_command.rb: Prefer HTTPS over HTTP.
- * lib/rubygems/defaults.rb: ditto
- * lib/rubygems/dependency_resolver.rb: Ditto.
- * lib/rubygems/source.rb: ditto.
- * lib/rubygems/spec_fetcher.rb: ditto.
- * lib/rubygems/specification.rb: ditto.
- * lib/rubygems/test_utilities.rb: ditto.
- * test/rubygems/test_gem.rb: Test for the above.
- * test/rubygems/test_gem_commands_sources_command.rb: ditto.
- * test/rubygems/test_gem_dependency_resolver_api_set.rb: ditto.
- * test/rubygems/test_gem_remote_fetcher.rb: ditto.
- * test/rubygems/test_gem_source.rb: ditto.
- * test/rubygems/test_gem_spec_fetcher.rb: ditto.
+Mon Jan 2 23:52:20 2012 TAKAO Kouji <kouji@takao7.net>
-Tue Mar 12 00:56:19 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/readline/readline.c (Init_readline): libedit check
+ rl_getc_function only when rl_initialize() is called, and
+ using_history() call rl_initialize(). This assignment should be
+ placed before using_history(). [ruby-core:40641] [Bug #5539]
- * test/thread/test_queue.rb (TestQueue#test_thr_kill): reduce
- iterations from 2000 to 250. When running on uniprocessor
- systems, every th.kill needs TIME_QUANTUM_USEC time (i.e.
- 100msec on posix systems). Because, "r.read 1" is 3 steps
- operations that 1) release GVL 2) read 3) acquire gvl and
- (1) invoke context switch to main thread. and then, main
- thread's th.kill resume (1), but not (2). Thus read interrupt
- need TIME_QUANTUM_USEC. Then maximum iteration is 30sec/100msec
- = 300.
+Mon Jan 2 23:47:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Mar 12 00:53:34 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * tool/rbinstall.rb (install_recursive, bin-comm): split mere
+ string not path name. [ruby-core:40462] [Bug #5492]
- * process.c (setup_communication_pipe): remove unused function.
- it was unintentionally added r39683.
+Mon Jan 2 23:41:57 2012 Tajima Akil <artonx@yahoo.co.jp>
-Tue Mar 12 00:53:34 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * win32/Makefile.sub (CONFIG_H): have stdint.h if VC2010.
+ [Bug #5243]
- * thread_pthread.c (ARRAY_SIZE): new.
- * thread_pthread.c (gvl_acquire_common): use low priority
- notification for avoiding timer thread interval confusion.
- If we use timer_thread_pipe[1], every gvl_yield() request
- one more gvl_yield(). It lead to thread starvation.
- [Bug #7999] [ruby-core:53095]
- * thread_pthread.c (rb_reserved_fd_p): adds timer_thread_pipe_low
- to reserved fds.
+Mon Jan 2 21:40:45 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Mar 12 00:53:34 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * tool/merger.rb (#version_up): version.h date should be Japanese
+ locale date.
- * thread_pthread.c (rb_thread_wakeup_timer_thread_fd): add fd
- argument and remove hardcoded dependency of timer_thread_pipe[1].
- * thread_pthread.c (consume_communication_pipe): add fd argument.
- * thread_pthread.c (close_communication_pipe): ditto.
+Mon Jan 2 21:36:56 2012 Luis Lavena <luislavena@gmail.com>
- * thread_pthread.c (timer_thread_sleep): adjust the above changes.
+ * configure.in: check -fno-omit-frame-pointer acceptance and usage
+ under MinGW. [ruby-core:39957] [Bug #5407]
- * thread_pthread.c (setup_communication_pipe_internal): factor
- out pipe initialize logic.
+Mon Jan 2 20:05:10 2012 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Mar 12 00:53:34 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * include/ruby/ruby.h (SIZE_MAX): define SIZE_MAX if not defined.
+ patched by The Written Word Inc. [ruby-core:40422] [Bug #5489]
- * thread_pthread.c (rb_thread_create_timer_thread): factor out
- creating communication pipe logic into separate function.
- * thread_pthread.c (setup_communication_pipe): new helper function.
- * thread_pthread.c (set_nonblock): moves a definition before
- setup_communication_pipe.
+Mon Jan 2 20:00:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Mar 12 00:53:34 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/pty/pty.c (pty_check): should return nil until the child
+ terminates or stops. [ruby-dev:44600] [Bug #2642]
- * thread_pthread.c (consume_communication_pipe): retry when
- read returned CCP_READ_BUFF_SIZE.
+Mon Jan 2 19:27:18 2012 Yusuke Endoh <mame@tsg.ne.jp>
-Tue Mar 12 00:53:34 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * thread.c (update_coverage): skip coverage count up if the current
+ line is out of the way. rb_sourceline() is unreliable when source
+ code is big. [ruby-dev:44413]
- * thread_pthread.c (set_nonblock): new helper function for set
- O_NONBLOCK.
- * thread_pthread.c (rb_thread_create_timer_thread): set O_NONBLOCK
- to timer_thread_pipe[0] too.
+ * test/coverage/test_coverage.rb: add a test for above.
-Tue Mar 12 00:51:23 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon Jan 2 19:08:54 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * thread_pthread.c (timer_thread_sleep): use poll() instead of
- select(). select doesn't work if timer_thread_pipe[0] is
- greater than FD_SETSIZE.
- * thread_pthread.c (USE_SLEEPY_TIMER_THREAD): add a dependency
- against poll.
+ * thread_pthread.c (gvl_yield): don't prevent concurrent sched_yield().
+ [Bug #5130] [ruby-core:38647]
-Tue Mar 12 00:51:23 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon Jan 2 18:54:52 2012 NAKAMURA Usaku <usa@ruby-lang.org>
- * thread_pthread.c (USE_SLEEPY_TIMER_THREAD): use more accurate
- ifdef condtions.
+ * win32/configure.bat: disable delayed expansion of enironment variable.
+ [Bug #5517] [ruby-core:40531]
-Mon Mar 11 01:16:12 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Dec 28 11:22:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in (unexpand_shvar): get rid of non-portable shell
- behavior on OpenBSD, so no extra quotes. [Bug #7959]
+ * lib/fileutils.rb (FileUtils::Entry_#entries): use utility method
+ instead of typoed regexp. [ruby-core:41829] [Bug #5817]
-Mon Mar 11 01:12:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Dec 15 10:44:54 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * parse.y (IS_LABEL_POSSIBLE): allow labels for keyword arguments just
- after method definition without a parenthesis. [ruby-core:52820]
- [Bug #7942]
+ * array.c (rb_ary_reject_bang, rb_ary_delete_if): update rdoc.
+ documentation from Thomas Leitner <t_leitner AT gmx.at> in
+ [ruby-core:41616]. [Bug #5752]
-Mon Mar 11 01:09:23 2013 Zachary Scott <zachary@zacharyscott.net>
+Wed Dec 14 15:28:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * error.c: clarify reason for sleep in SignalException example
+ * transcode.c (str_encode): about the extension of :fallback
+ option since 1.9.3.
-Mon Mar 11 01:09:23 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue Oct 4 06:43:47 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * error.c: clarify a document of SignalException. Process.kill()
- doesn't have any guarantee when signal will be delivered.
- [Bug #7951] [ruby-core:52864]
+ * ext/psych/lib/psych.rb: update psych version.
+ * ext/psych/psych.gemspec: generate new gemspec for new version.
-Mon Mar 11 01:04:54 2013 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Oct 4 06:29:55 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * string.c (str_byte_substr): don't set coderange if it's not known.
- [Bug #7954] [ruby-dev:47108]
+ * ext/psych/lib/psych.rb: calling `yaml` rather than `to_yaml`.
+ * ext/psych/lib/psych/nodes/node.rb: Rename `to_yaml` to just `yaml`
+ in order to avoid YAML::ENGINE switching from replacing this method.
+ * test/psych/helper.rb: fix tests for method name change.
+ * test/psych/test_document.rb: ditto
+ * test/psych/visitors/test_emitter.rb: ditto
-Mon Mar 11 00:58:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Oct 4 06:20:19 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * common.mk (realclean-local): miniprelude.c is made by srcs, so it
- should not removed by distclean but by realclean. [Bug #6807]
+ * ext/psych/lib/psych/scalar_scanner.rb: Match values against the
+ floating point spec defined in YAML to avoid erronious parses.
+ * test/psych/test_numeric.rb: corresponding test.
-Mon Mar 11 00:54:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Oct 4 05:59:24 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * enc/depend (ARFLAGS): VisualC++ linker does not allow spaces between
- output option and the output file name. [Bug #7950]
+ * ext/psych/lib/psych/visitors/to_ruby.rb: ToRuby visitor can be
+ constructed with a ScalarScanner.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: ScalarScanner can be
+ passed to the YAMLTree visitor.
- * enc/depend (RANLIB): set default command to do nothing, or make the
- entire line a label on Windows.
+Tue Oct 4 05:47:23 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Mon Mar 11 00:50:21 2013 Zachary Scott <zachary@zacharyscott.net>
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Define Regexp::NOENCODING
+ for 1.9.2 backwards compatibility.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Fix Date string
+ generation for 1.9.2 backwards compatibility.
- * thread.c: Document Thread::new, clean up ::fork and mention calling
- super if subclassing Thread
+Fri Sep 2 04:05:25 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Mon Mar 11 00:47:47 2013 Akinori MUSHA <knu@iDaemons.org>
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: emit strings tagged as
+ ascii-8bit as binary in YAML.
+ * test/psych/test_string.rb: corresponding test.
- * configure.in (unexpand_shvar): Use the numeric comparison
- operator instead of '==' which is a ksh extention. [Bug #7941]
+Wed Dec 7 19:04:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Mar 10 00:01:07 2013 Tadayoshi Funaba <tadf@dotrb.org>
+ * configure.in (rpath): fix typo in the help string. a patch from
+ Yuji Yamano <yyamano AT kt.rim.or.jp> in [ruby-list:48568].
- * ext/date/date_core.c: [ruby-core:52303]
+Wed Nov 30 18:22:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Mar 9 23:55:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * complex.c (nucomp_rationalize): fix function. [ruby-core:40667]
+ [Bug #5546]
- * random.c (rb_random_ulong_limited): limit is inclusive, but generic
- rand method should return a number less than it, so increase for the
- difference. [ruby-core:52779] [Bug #7935]
+Thu Nov 17 10:36:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Sat Mar 9 23:51:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/psych/lib/psych.rb (load_file): make sure opened yaml files are
+ also closed. [ruby-core:41088]
- * random.c (rb_random_ulong_limited): fix error message for negative
- value. [ruby-dev:47061] [Bug #7903]
+Wed Nov 30 02:58:46 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-Sat Mar 9 23:41:11 2013 Zachary Scott <zachary@zacharyscott.net>
+ * numeric.c (dbl2ival): Fix Float#divmod and #round for 32 bit
+ platform. part 1 of [bug #5276]
- * thread.c: Document ThreadGroup::Default
+Wed Nov 30 02:58:46 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-Sat Mar 9 23:31:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * numeric.c (flo_round): Fix criteria for 32 bits platform
+ part 2 of [bug #5276]
- * vm_insnhelper.c (vm_call_method): block level control frame does not
- have method entry, so obtain the method entry from method top-level
- control frame to be compared with refined method entry.
- [ruby-core:52750] [Bug #7925]
+Wed Nov 30 02:37:32 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-Sat Mar 9 23:15:06 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * numeric.c (flo_round): Make Float#round round big values [bug
+ #5272]
- * signal.c (sigsegv): suppress unused result warning. Because
- write(2) is marked __warn_unused_result__ on Linux glibc.
+Wed Nov 30 02:37:32 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Mar 9 23:08:43 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * numeric.c (flo_round): substitute machine dependent magic number.
- * compile.c (iseq_set_arguments): no keyword check if any keyword rest
- argument exists, even unnamed. [ruby-core:52744] [Bug #7922]
+Wed Nov 30 02:28:22 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-Sat Mar 9 22:50:28 2013 Zachary Scott <zachary@zacharyscott.net>
+ * numeric.c (int_round): Integer#round always returns an Integer [Bug
+ #5271]
- * array.c: Document #<=> return values and formatting
- * bignum.c: ditto
- * file.c: ditto
- * object.c: ditto
- * numeric.c: ditto
- * rational.c: ditto
- * string.c: ditto
- * time.c: ditto
+Fri Nov 4 01:56:30 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Sat Mar 9 22:45:01 2013 Zachary Scott <zachary@zacharyscott.net>
+ * io.c (make_writeconv): unversal_newline converter is for reading.
+ so, if the io is text mode and has ECONV_UNIVERSAL_NEWLINE_DECORATOR
+ flag, use crlf_newline converter for writing.
+ this change fixes the problem about the luck of CR up Kernel.p and
+ Kernel.puts to stdout/stderr on Windows.
- * array.c (rb_ary_diff, rb_ary_and, rb_ary_or): Document return order
- [RubySpec #7803]
+Mon Nov 7 23:39:23 2011 Tajima Akio <artonx@yahoo.co.jp>
-Sat Mar 9 22:38:26 2013 Zachary Scott <zachary@zacharyscott.net>
+ * io.c (io_fflush): remove fsync().
+ * io.c (rb_io_flush, rb_io_rewind): fsync() here.
+ These pathces are backports of trunk r33651 for [Bug #5585]
- * object.c (rb_obj_comp): Documenting Object#<=> return values
- Patch by Stefan Rusterholz
+Mon Oct 10 22:33:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sat Mar 9 22:35:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/-ext-/old_thread_select/test_old_thread_select.rb:
+ select() with timeout may return early in old Linux kernels
+ with 250 Hz tickrate and no dynticks, so skip everything older
+ than 2.6.32 (which has long term support).
+ And, Make the timing assertions consistently use assert_operator with
+ timing difference in error message
+ Patch by Eric Wong. [Bug #5335] [ruby-core:39618]
- * dir.c (file_s_fnmatch, fnmatch_brace): encoding-incompatible pattern
- and string do not match, instead of exception. [ruby-dev:47069]
- [Bug #7911]
+Tue Oct 4 16:17:50 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Mar 9 22:18:43 2013 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/time.rb (Time.strptime): use Time.at if d[:seconds] is set.
+ Reported by Christopher Eberz. [ruby-core:39903] Bug #5399
- * test/test_rbconfig.rb (TestRbConfig): fix r39372.
- It must see RbConfig::CONFIG instead of CONFIG.
+Tue Oct 4 11:44:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Mar 9 22:18:43 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (rb_gc_set_params): ruby_verbose can be Qnil, so use RTEST.
- * test/test_rbconfig.rb (TestRbConfig): skip user defined values by
- configuration options. [Bug #7902]
+Mon Oct 3 23:56:39 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Sat Mar 9 22:07:53 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * gc.c (rb_gc_set_params): output GC parameter change messages only
+ if -w/-v options are specified. these messages are output to stderr,
+ not to stdout. [ruby-core:39795] [Bug #5380]
- * lib/rexml/document.rb (REXML::Document.entity_expansion_text_limit):
- fix a typo in comment in r39384.
+ * test/ruby/test_gc.rb (test_gc_parameter): add test for it.
-Sat Mar 9 21:52:19 2013 Zachary Scott <zachary@zacharyscott.net>
+Wed Sep 28 09:14:16 2011 Nobuyoshi Nakada <>
- * numeric.c: Examples and formatting for Numeric and Float
- Based on a patch by Zach Morek and Oren K of newhaven.rb
- [Github documenting-ruby/ruby#5]
+ * configure.in (pthread_np.h): needs pthread.h to be included
+ previously on OpenBSD. a patch by George Koehler <xkernigh AT
+ netscape.net> at [ruby-core:39752]. [Bug #5376]
-Sat Mar 9 21:46:41 2013 Eric Hodel <drbrain@segment7.net>
+Tue Sep 13 15:02:48 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * doc/globals.rdoc: Document what setting $DEBUG does.
+ * lib/pstore.rb (PStore): always open in binary mode even if
+ default encodings are set. [Bug #5311] [ruby-core:39503]
- * doc/globals.rdoc: Added pointer to $-d for full documentation.
+Sat Oct 8 07:31:42 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Mar 9 21:45:38 2013 Eric Hodel <drbrain@segment7.net>
+ * array.c (ary_join_1): should not copy the encoding of non-string
+ element after string element. [ruby-core:39776] [Bug #5379]
- * doc/globals.rdoc: Document what setting $VERBOSE does. [Bug #7899]
+Sat Oct 8 06:51:46 2011 Eric Hodel <drbrain@segment7.net>
- * doc/globals.rdoc: Added pointer to $-w and $-v for full
- documentation.
+ * lib/rubygems: Update to RubyGems 1.8.11. Move Deprecate into the
+ Gem namespace.
-Sat Mar 9 21:29:45 2013 Naohisa Goto <ngotogenome@gmail.com>
+Sat Oct 8 06:37:08 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * signal.c (ruby_abort): fix typo in r39354 [Bug #5014]
+ * gc.c (rb_gc_set_params): output GC parameter change messages only
+ if -w/-v options are specified. these messages are output to stderr,
+ not to stdout. [ruby-core:39795] [Bug #5380]
-Sat Mar 9 21:29:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_gc.rb (test_gc_parameter): add test for it.
- * signal.c (check_stack_overflow): extract duplicated code and get rid
- of declaration-after-statement. [Bug #5014]
+Sat Oct 8 06:26:24 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Sat Mar 9 21:29:45 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c (add_heap_slots, init_heap): reset heaps_inc zero when
+ heap slots are expanded by environment variable RUBY_HEAP_MIN_SLOTS.
+ [ruby-core:39777] [Bug #5380]
- * signal.c (sigsegv): avoid to use async signal unsafe functions
- when nested sigsegv is happen.
- [Bug #5014] [ruby-dev:44082]
+ * test/ruby/test_gc.rb (test_gc_parameter): add test for it.
-Sat Mar 9 21:25:45 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/ruby/envutil.rb (assert_normal_exit): add :child_env option to
+ enable pass environemnt variables to child process.
- * file.c (rb_group_member): added an error check. SUS says,
- getgroups(small_value) may return EINVAL.
+Sat Oct 8 05:45:28 2011 Eric Hodel <drbrain@segment7.net>
-Sat Mar 9 21:23:36 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * proc.c (proc_call): Update documentation to match argument handling
+ of proc/Proc.new/lambda/->()
- * process.c (RB_MAX_GROUPS): moved to
- * internal.h (RB_MAX_GROUPS): here.
+Sat Oct 8 05:38:29 2011 Eric Hodel <drbrain@segment7.net>
- * file.c (rb_group_member): use RB_MAX_GROUPS instead of
- RUBY_GROUP_MAX. They are the same.
+ * proc.c (proc_call): Fix documentation of Proc#call vs Proc#===.
+ [Ruby 1.9 - Bug #5349]
-Sat Mar 9 21:15:39 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue Sep 27 13:05:39 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * file.c (access_internal): removed.
- * file.c (rb_file_readable_real): use access() instead of
- access_internal().
- * file.c (rb_file_writable_real): ditto.
- * file.c (rb_file_executable_real): ditto.
+ * ext/openssl/ossl_asn1.c: fix int_ossl_asn1_decode0_cons when being
+ fed arbitrary string values.
+ Clearly distinguish between the cases "universal, infinite and
+ not a SEQUENCE or SET" and "universal SEQUENCE or SET, possibly
+ infinite". Raise error for universal tags that are not infinite.
+ * test/openssl/test_asn1.rb: add a test for this.
-Wed Mar 6 22:13:38 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ Thanks to Hiroshi Yoshida for reporting this bug.
+ [Bug #5363] [ruby-dev:44542]
-merge revision(s) 39297: [Backport #8032]
+Sat Sep 17 23:34:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * tool/mkconfig.rb: clear exec_prefix which may differ from prefix,
- before expanding rubyarchdir to remove prefix.
+ * parse.y (parser_data_type): inherit the core type in ripper so
+ that checks in core would work. [ruby-core:39591] [Bug #5331]
-Tue Mar 5 01:20:39 2013 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Sep 23 14:15:01 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * tool/merger.rb: add interaction when only ChangeLog is modified.
+ * ext/openssl/ossl_asn1.c
+ ext/openssl/ossl_pkey.c: Remove unused variables.
-Tue Mar 5 01:03:16 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Sep 23 06:54:44 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * file.c (rb_group_member): get rid of NGROUPS dependency.
- [Bug #7886] [ruby-core:52537]
+ * backport r33315 from trunk.
-Tue Mar 5 00:16:56 2013 Eric Hodel <drbrain@segment7.net>
+ * test/openssl/test_ssl_session.rb: execute test_session_exts_read
+ only for OpenSSL versions >= 0.9.8k. Thanks, Eric Wong, for
+ reporting this.
+ [Bug #4961] [ruby-core:37726]
- * ext/openssl/ossl.c (class OpenSSL): Use only inner parenthesis in
- create_extension examples.
+Fri Sep 23 12:18:52 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Tue Mar 5 00:16:56 2013 Eric Hodel <drbrain@segment7.net>
+ * backport r33311 from trunk.
- * ext/openssl/ossl.c (class OpenSSL): Fixed ExtensionFactory example.
- Patch by Richard Bradley. [ruby-trunk - Bug #7551]
+ * test/openssl/test_ssl_session.rb: ensure server calls callbacks in
+ test_ctx_server_session_cb. Thanks to Eric Wong for the patch.
+ [Bug #5336] [ruby-core:39619]
-Mon Mar 4 23:53:18 2013 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+Thu Sep 22 19:45:22 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- (merge r39291)
- * configure.in (opt-dir): remove debug print.
+ * thread_pthread.c (ubf_select): activate timer thread when interrupt
+ blocking thread.
+ A patch created by Koichi Sasada. [ruby-core:39634] [Bug #5343]
+ to cover race condition, timer thread periodically send SIGVTARLM to
+ threads in signal thread list. so you should activate timer thread
+ when interrupt a thread.
-Mon Mar 4 23:42:34 2013 Zachary Scott <zachary@zacharyscott.net>
+Wed Sep 21 16:57:03 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/psych/lib/psych/y.rb: Document Kernel#y by Adam Stankiewicz
- [Github tenderlove/psych#127]
+ * test/io/wait/test_io_wait.rb (TestIOWait#setup): of course, the
+ behavior of mingw is just same with mswin.
-Mon Mar 4 23:37:14 2013 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Sep 17 22:21:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * tool/mkconfig.rb: remove prefix from rubyarchdir.
- r39267 expands variables, it changes expansion timing,
- breaks RbConfig::CONFIG["includedir"] and building
- extension libraries with installed ruby.
+ * vm.c (rb_vm_make_env_object, rb_vm_get_sourceline): export as a
+ workaround for ruby-debug19 for the time being.
+ [ruby-core:38972] [Bug #5193]
-Sun Mar 3 02:45:13 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+Fri Sep 16 01:08:19 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * vm.c (ENV_IN_HEAP_P): fix off-by-one error.
+ * NEWS: cosmetic changes.
-Sun Mar 3 02:39:01 2013 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Wed Sep 14 12:39:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * test/ruby/test_thread.rb: fixed typo
- patched by Hiroki Matsue via https://github.com/ruby/ruby/pull/248
+ * configure.in: do not use gcc-4.2 as the default compiler.
-Sun Mar 3 02:22:56 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * NEWS: describe the issue about Xcode.
- * class.c (include_modules_at): detect cyclic prepend with original
- method table. [ruby-core:52205] [Bug #7841]
+Wed Sep 14 11:46:30 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sun Mar 3 02:16:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * thread.c (rb_fd_rcopy): added an argument guard.
+ Patch by NAKAMURA Usaku. [Bug #5306] [ruby-core:39435]
- * vm_method.c: call method_removed hook on called class, not on
- prepending iclass. [ruby-core:52207] [Bug #7843]
+Tue Sep 13 09:28:58 2011 Koichi Sasada <ko1@atdot.net>
-Sun Mar 3 01:57:50 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * NEWS: wrote about rb_reserved_fd_p() and objspace.
- * configure.in (warnflags): disable -Werror by default unless
- development. [ruby-core:52131] [Bug #7830]
+Mon Sep 12 20:47:52 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Feb 27 00:20:43 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * thread.c (rb_thread_select): fix a typo to initialize efds
+ properly. [Bug #5299] [ruby-core:39380]
- * test/ruby/test_process.rb (test_setsid): Added a workaround for
- MacOS X. Patch by nagachika. [Bug #7826] [ruby-core:52126]
+Mon Sep 12 20:41:20 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sun Feb 24 15:16:00 2013 Eric Hodel <drbrain@segment7.net>
+ * thread.c (rb_thread_select): fix to ignore an argument
+ modification of rb_thread_fd_select().
+ based on a patch by Eric Wong. [Bug #5306] [ruby-core:39435]
+ * thread.c (rb_fd_rcopy): New. for reverse fd copy.
- * lib/net/http.rb: Removed duplicate Accept-Encoding in Net::HTTP#get.
- [ruby-trunk - Bug #7924]
- * test/net/http/test_http.rb: Test for the above.
+ * test/-ext-/old_thread_select/test_old_thread_select.rb
+ (test_old_select_false_positive): test for bug5306.
-Wed Feb 20 14:23:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * ext/-test-/old_thread_select/old_thread_select.c (fdset2array):
+ New. convert fdsets to array.
+ * ext/-test-/old_thread_select/old_thread_select.c (old_thread_select):
+ return 'read', 'write', 'except' argument of rb_thread_select()
+ to ruby script.
- * thread.c: Grammar for #backtrace_locations and ::handle_interrupt
+Tue Sep 6 13:15:44 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Feb 22 11:10:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * encoding.c (load_encoding): predefined encoding names are safe.
+ [ruby-dev:44469] [Bug #5279]
- * enum.c (Enumerable#chunk: Improved examples, grammar, and formatting
- Patch by Dan Bernier and Rich Bruchal of newhaven.rb
- [Backport #7926]
+ * transcode.c (load_transcoder_entry): ditto.
-Fri Feb 22 02:33:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Fri Sep 9 16:02:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/abbrev.rb: Add words parameter to Abbrev::abbrev
- Patch by Devin Weaver [Backport #7927]
+ * insns.def (concatstrings): don't use initial ASCII-8BIT string.
+ [ruby-core:38635] [Bug #5126]
-Wed Feb 20 13:37:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Thu Sep 8 21:17:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/pty/pty.c: Documentation for the PTY module [Backport #7928]
+ * ext/nkf/nkf-utf8/nkf.c: import nkf 2.1.2 (be9c280)
+ Bump version number/release date only.
-Wed Feb 20 12:18:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Wed Sep 7 23:42:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * object.c: Document Data class by Matthew Mongeau [Backport #7929]
+ * io.c (argf_next_argv): open in default text mode.
+ [ruby-core:39234] [Bug #5268]
-Wed Feb 20 11:50:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Mon Sep 5 15:06:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/mutex_m.rb: Add rdoc for Mutex_m module [Backport #7930]
+ * test/rubygems/test_gem_security.rb
+ (test_class_build_self_signed_cert): reset opt[:trust_dir] to apply
+ temporary Gem.user_home.
-Tue Feb 19 12:30:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Sun Sep 4 00:56:58 2011 Kazuki Tsujimoto <kazuki@callcc.net>
- * object.c: rdoc formatting for Kernel#Array() [Backport #7931]
- * array.c: Add rdoc for Array() method to Creating Arrays section
+ * backport r33177 from trunk.
-Sat Feb 23 16:51:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * test/ruby/test_fiber.rb (TestFiber#test_no_valid_cfp):
+ add a test. Unlike TestThread#test_no_valid_cfp,
+ this test succeeds even if win32ole is required (see r33153).
- * thread.c: Documentation for Thread#backtrace_locations
- [Backport #7932]
+Fri Sep 2 21:11:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Feb 23 16:05:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * io.c (validate_enc_binmode, prep_stdio): default to text mode on
+ dosish platforms. [ruby-core:38822] [Bug #5164]
- * vm.c: Typo in ObjectSpace::WeakMap overview [Backport #7933]
+ * transcode.c (rb_econv_prepare_options): keep default ecflags
+ unchanged if no options.
-Sat Feb 23 16:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Fri Sep 2 14:36:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * thread.c: Improved rdoc for ::handle_interrupt, ::pending_interrupt?
- and #pending_interrupt? [Backport #7934]
+ * vm_insnhelper.c (vm_search_const_defined_class): search
+ ancestors only when global scope. [ruby-core:39227] [Bug #5264]
-Sat Feb 23 14:19:51 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Sep 2 09:58:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * include/ruby/ruby.h (HAVE_RB_SCAN_ARGS_OPTIONAL_HASH): for
- rb_scan_args() optional hash feature. [Bug #7861]
+ * parse.y (parser_tokadd_string, parser_yylex): ignore a backslash
+ which prefixes an non-ascii character, which has no escape
+ syntax. [ruby-core:39222] [Ruby 1.9 - Bug #5262]
-Sat Feb 23 13:03:22 2013 Akinori MUSHA <knu@iDaemons.org>
+Thu Sep 1 17:31:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/ipaddr.rb (IPAddr#in6_addr): Fix a typo with the closing
- parenthesis.
+ * insns.def (defineclass), vm_insnhelper.c (vm_get_cvar_base): see
+ also inherited constants for classes without superclass and
+ modules. [ruby-core:37698] [Bug #3423]
-Sat Feb 23 13:03:22 2013 Akinori MUSHA <knu@iDaemons.org>
+Thu Sep 1 14:11:16 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/ipaddr.rb (IPAddr#in6_addr): Fix the parser so that it can
- recognize IPv6 addresses with only one edge 16-bit piece
- compressed, like [::2:3:4:5:6:7:8] or [1:2:3:4:5:6:7::].
- [Bug #7477]
+ * test/ruby/test_thread.rb (TestThread#test_no_valid_cfp): skip when
+ win32ole is required. in such case, win32ole redefines
+ Thread#initialize, and the block argument becomes to be not the top
+ of the thread, then this testcase always fails.
-Sat Feb 23 13:00:49 2013 Akinori MUSHA <knu@iDaemons.org>
+Wed Aug 31 16:02:45 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * configure.in (LIBRUBY_DLDFLAGS): Fix a bug where --with-opt-dir
- options given were not reflected to LIBRUBY_DLDFLAGS on many
- platforms including Linux and other GNU-based systems, NetBSD,
- AIX and BeOS.
+ * ext/json: Merge json gem v1.5.4 (3dab4c5a6a97fac03dac).
-Sat Feb 23 13:00:07 2013 Akinori MUSHA <knu@iDaemons.org>
+Wed Aug 31 13:19:31 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * configure.in: Fix a bug introduced in r38342 that the cflagspat
- substitution is messed up by the way CFLAGS and optflags are
- modified, which affected FreeBSD and NetBSD/amd64 when
- configured to use libexecinfo. This bug resulted in CFLAGS and
- CXXFLAGS in RbConfig::CONFIG having warnflags expanded in them,
- forcing third-party C/C++ extensions to follow what warnflags
- demands, like ANSI/ISO-C90 conformance. ref [Bug #7101]
+ * numeric.c (flo_round): Avoid overflow by optimizing for trivial
+ cases
+ [Bug #5227]
-Sat Feb 23 12:58:32 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Aug 31 06:45:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/mkmf.rb: remove extra topdir in VPATH, which was in
- win32/Makefile.sub for some reason and moved from there.
- [ruby-dev:46998] [Bug #7864]
+ * configure.in: fix r32835. $withval can't be used outer AC_ARG_WITH().
-Tue Feb 23 12:07:00 2013 Kenta MURATA <mrkn@mrkn.jp>
+Wed Aug 31 05:29:03 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * backport r39321 from trunk. [ruby-core:51777] [Bug #7761]
+ * win32/win32.c (rb_w32_select_with_thread): and my typo. we all must
+ be more careful.
- * ext/bigdecimal/bigdecimal.gemspec: bump to 1.2.0.
- [ruby-core:51777] [Bug #7761]
+Wed Aug 31 05:28:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Sat Feb 23 08:57:46 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * thread.c (rb_thread_select): critical typo in r33117.
- * backport r39410 from trunk
+Wed Aug 31 05:28:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * doc/NEWS-*: Update NEWS from their respective branches
+ * test/-ext-/old_thread_select/test_old_thread_select.rb
+ (TestOldThreadSelect#test_old_select_read_timeout): if the machine
+ is fast enough, the time used by code around IO.select may be smaller
+ than Time implement threshold.
-Sat Feb 23 08:14:43 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+Wed Aug 31 05:27:59 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * backport r39400-r39407 from trunk.
+ * ext/-test-/old_thread_select/old_thread_select.c (old_thread_select):
+ typo.
- * NEWS: many additions
+ * test/-ext-/old_thread_select/test_old_thread_select.rb
+ (TestOldThreadSelect#test_old_select_signal_safe): use SIGINT instead
+ of SIGUSR1 because the former is general and the latter is platform
+ dependent.
- * object.c: Add doc for Module.prepended
+Wed Aug 31 05:26:30 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Sat Feb 23 06:07:04 2013 Eric Hodel <drbrain@segment7.net>
+ * win32/win32.c, include/ruby/intern.h (rb_w32_fd_copy): implement
+ for rb_thread_select() in thread.c. the use of rb_fd_copy() is
+ introduced in r33117.
+ [Bug #5229] [ruby-core:39102]
- * lib/rubygems/installer.rb (build_extensions): Create extension
- install destination before building extension. Patch by Kenta Murata.
- [ruby-trunk - Bug #7897]
- * test/rubygems/test_gem_installer.rb: Test for the above.
+ * thread.c (rb_thread_select): must call rb_fd_init() before using
+ rb_fdset_t. see the implementations of rb_fd_init()s if you want to
+ know the reason.
-Sat Feb 23 04:34:44 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+Tue Aug 30 11:25:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * NEWS: pending_interrupt? is both instance and singleton method
+ * ext/json: Merge json gem 1.5.4+ (2149f4185c598fb97db1).
+ [Bug #5173] [ruby-core:38866]
-Sat Feb 23 02:49:10 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+Tue Aug 30 09:53:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * NEWS: Add Thread#pending_interrupt? and Thread.handle_interrupt
+ * cont.c (fiber_entry): fix stack allocation failure on Debian
+ GNU/kFreeBSD.
+ Patch by Lucas Nussbaum <lucas at lucas-nussbaum dot net>.
+ [Bug #5241] [ruby-core:39147]
-Fri Feb 22 19:22:05 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+Tue Aug 30 09:52:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/rexml/document.rb (REXML::Document.entity_expansion_text_limit):
- new attribute to read/write entity expansion text limit. the default
- limit is 10Kb.
+ * backport r33117 from trunk.
- * lib/rexml/text.rb (REXML::Text.unnormalize): check above attribute.
+ * thread.c (rb_thread_select): rewrite by using
+ rb_thread_fd_select(). old one is EINTR unsafe.
+ Patch by Eric Wong. [Bug #5229] [ruby-core:39102]
-Thu Feb 21 05:03:38 2013 Eric Hodel <drbrain@segment7.net>
+ * test/-ext-/old_thread_select/test_old_thread_select.rb:
+ a testcase for rb_thread_select().
+ * ext/-test-/old_thread_select/old_thread_select.c: ditto.
+ * ext/-test-/old_thread_select/depend: ditto.
+ * ext/-test-/old_thread_select/extconf.rb: ditto.
- * lib/rubygems/commands/update_command.rb: Create the installer after
- options are processed. [ruby-trunk - Bug #7779]
- * test/rubygems/test_gem_commands_update_command.rb: Test for the
- above.
+Tue Aug 30 09:16:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Thu Feb 21 04:54:14 2013 Eric Hodel <drbrain@segment7.net>
+ * configure.in: fix a build failure on GNU Hurd.
+ Patch by Samuel Thibault <sthibault at debian dot org>. Thank you!
+ [Bug #5250] [ruby-core:39185]
- * lib/rubygems/installer.rb: Use gsub instead of gsub! to avoid
- altering @bin_dir. Fixes tests on windows. [ruby-trunk - Bug #7885]
+Sun Aug 28 15:38:17 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Thu Feb 21 03:16:37 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * backport r33106 from trunk.
- * NEWS: Floats are frozen too
+ * ext/date/date_parse.c (date_zone_to_diff): keep a temporary string
+ stored in variable while the contents buffer is beeing used.
-Thu Feb 21 03:10:53 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * ext/date/date_parse.c (date_zone_to_diff): get rid of out of bounds
+ memory read. [ruby-dev:44409] [Bug #5213]
- * NEWS: Add that Fixnums and Bignums are frozen
+Sun Aug 28 05:29:50 2011 Ryan Davis <ryand-ruby@zenspider.com>
-Wed Feb 20 17:02:12 2013 Koichi Sasada <ko1@atdot.net>
+ * backport r33102 from trunk.
- * vm_eval.c (vm_call0_body): check interrupts after method dispatch
- from C methods. [Bug #7878]
+ * lib/minitest/*: Imported minitest 2.5.1 (r6596)
+ * test/minitest/*: ditto
-Wed Feb 20 08:05:25 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Aug 27 20:54:54 2011 Kazuki Tsujimoto <kazuki@callcc.net>
- * compar.c (rb_invcmp): compare by inversed comparison, with preventing
- from infinite recursion. [ruby-core:52305] [Bug #7870]
+ * backport r33099 from trunk.
- * string.c (rb_str_cmp_m), time.c (time_cmp): get rid of infinite
- recursion.
+ * vm.c (rb_vm_rewrite_dfp_in_errinfo): change return type
+ to suppress a warning.
-Tue Feb 19 15:49:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * vm_core.h: ditto.
- * configure.in (unexpand_shvar): regularize a shell variable by
- unexpanding shell variables in it.
+Sat Aug 27 19:03:44 2011 Kazuki Tsujimoto <kazuki@callcc.net>
- * configure.in (shvar_to_cpp): do not substitute exec_prefix itself
- with RUBY_EXEC_PREFIX, which cause recursive definition.
- [ruby-core:52296] [Bug #7860]
+ * backport r33096 from trunk.
- * configure.in: unexpand arch sitearch and exec_prefix values, so
- directly specified bindir, libdir, rubyprefix, etc can be properly
- substituted. [ruby-core:52296] [Bug #7860]
+ * proc.c (proc_new): force to rewrite errinfo when calling Proc.new in ensure.
+ [Bug #5234] [ruby-core:39125]
-Tue Feb 19 14:08:46 2013 Eric Hodel <drbrain@segment7.net>
+ * vm.c (rb_vm_rewrite_dfp_in_errinfo): new function.
- * backport r39307 from trunk. [Bug #7880]
+ * vm.c (vm_make_env_each): changed accordingly.
- * lib/rubygems/installer.rb: Fixed placement of executables with
- --user-install. [ruby-trunk - Bug #7779]
+ * vm_core.h: ditto.
- * test/rubygems/test_gem_installer.rb: Test for above.
+ * bootstraptest/test_flow.rb: add tests for above.
-Tue Feb 19 13:57:26 2013 Eric Hodel <drbrain@segment7.net>
+Sat Aug 27 08:59:12 2011 Eric Hodel <drbrain@segment7.net>
- * backport r39247 from trunk. [Bug #7853]
+ * NEWS: Update version of rake to 0.9.2.2.
- * lib/rdoc.rb: Update to release version of 4.0.0
+Sat Aug 27 08:44:58 2011 Eric Hodel <drbrain@segment7.net>
- * lib/rubygems.rb: Update to release version of 2.0.0
+ * backport r33087 from trunk
-Tue Feb 19 12:25:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rdoc: Import RDoc 3.9.4. Typo and grammar fixes by Luke Gruber.
+ [Ruby 1.9 - Bug #5203]
- * win32/Makefile.sub (config.status): site and vendor directories
- should use sitearch, not arch. [ruby-dev:46964] [Bug #7823]
+Sat Aug 27 07:53:34 2011 Eric Hodel <drbrain@segment7.net>
-Tue Feb 19 07:51:01 2013 Koichi Sasada <ko1@atdot.net>
+ * backport r33087 from trunk.
- * backport r39275 from trunk. [ruby-dev:46994] [Bug #7774]
+ * lib/open-uri.rb: Fix indentation of OpenURI::OpenRead#open. Use ++
+ instead of `' for method arguments in open-uri.rb
- * proc.c (rb_binding_new_with_cfp): create binding object even if
- the frame is IFUNC. But return a ruby-level binding to keep
- compatibility.
- This patch fix degradation introduced from r39067.
- [Bug #7774] [ruby-dev:46960]
+Sat Aug 27 07:22:07 2011 Eric Hodel <drbrain@segment7.net>
- * test/ruby/test_settracefunc.rb: add a test.
+ * backport r33086 from trunk.
-Sat Feb 16 20:43:43 2013 Koichi Sasada <ko1@atdot.net>
+ * ext/pathname/lib/pathname.rb: Fix typos and grammar mistakes. Patch
+ by Luke Gruber. [#5203]
+ * ext/pty/lib/expect.rb: ditto
+ * lib/mathn.rb: ditto
+ * lib/net/http.rb: ditto
+ * lib/open-uri.rb: ditto
+ * lib/ostruct.rb: ditto
+ * lib/tempfile.rb: ditto
+ * lib/thread.rb: ditto
+ * lib/weakref.rb: ditto
+ * sample/webrick/httpproxy.rb: ditto
- * backport r39276 from trunk. [ruby-dev:46997] [Bug #7825]
+Fri Aug 26 10:10:37 2011 Eric Hodel <drbrain@segment7.net>
- * vm.c (rb_thread_mark): mark a working Proc of bmethod
- (a method defined by define_method) even if the method was removed.
- We could not trace working Proc object which represents the body
- of bmethod if the method was removed (alias/undef/overridden).
- Simply, it was mark miss.
- This patch by Kazuki Tsujimoto. [Bug #7825]
+ * backport r33074 from trunk.
- NOTE: We can brush up this marking because we do not need to mark
- `me' on each living control frame. We need to mark `me's
- only if `me' was free'ed. This is future work after Ruby 2.0.0.
+ * lib/rubygems: Update to RubyGems 1.8.10. Fixes security issue in
+ creating ruby-format gemspecs. Fixes Gem.dir not being at the front
+ of Gem.path to fix uninstall and cleanup commands. Fixes gem
+ uninstall stopping on the first missing gem.
- * test/ruby/test_method.rb: add a test.
+Wed Aug 24 09:49:10 2011 Koichi Sasada <ko1@atdot.net>
-Fri Feb 15 00:49:32 2013 Eric Hodel <drbrain@segment7.net>
+ * backport r33045 from trunk.
- * lib/net/http.rb: Removed OpenSSL dependency from Net::HTTP.
+ * insns.def (defined): fix to checking class variable.
+ A patch by Magnus Holm <judofyr@gmail.com>. Thanks!
- * test/net/http/test_http.rb: Remove Zlib dependency from tests.
- * test/net/http/test_http_request.rb: ditto.
+Fri Aug 26 08:21:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Fri Feb 15 00:49:32 2013 Eric Hodel <drbrain@segment7.net>
+ * test/ruby/test_variable.rb: add a test for above.
- * lib/net/http: Do not handle Content-Encoding when the user sets
- Accept-Encoding. This allows users to handle Content-Encoding for
- themselves. This restores backwards-compatibility with Ruby 1.x.
- [ruby-trunk - Bug #7831]
- * lib/net/http/generic_request.rb: ditto.
- * lib/net/http/response.rb: ditto
- * test/net/http/test_http.rb: Test for the above.
- * test/net/http/test_http_request.rb: ditto.
- * test/net/http/test_httpresponse.rb: ditto.
+Thu Aug 25 09:43:16 2011 Eric Hodel <drbrain@segment7.net>
-Thu Feb 14 13:17:10 2013 Zachary Scott <zachary@zacharyscott.net>
+ * backport r33066 from trunk.
- * Backport r39168 Warning about TracePoint events to 2.0.0
- [ruby-core:52073] [Bug #7815]
+ * ext/openssl/lib/openssl/bn.rb: Hide copyright info from RDoc.
+ * ext/openssl/lib/openssl/digest.rb: ditto
+ * ext/openssl/lib/openssl/cipher.rb: ditto
- * vm_trace.c: note about TracePoint events set
+Thu Aug 25 09:25:48 2011 Eric Hodel <drbrain@segment7.net>
-Thu Feb 14 07:04:13 2013 Eric Hodel <drbrain@segment7.net>
+ * backport r33065 from trunk.
- * Backport r39213 from trunk [ruby-trunk - Bug #7383]
+ * ext/openssl/ossl_digest.c: Document OpenSSL::Digest::digest and add
+ an example to OpenSSL::Digest. Patch by Sylvain Daubert.
+ [Ruby 1.9 - Bug #5166]
+ * ext/openssl/lib/openssl/digest.rb (module OpenSSL): ditto
- * lib/rubygems.rb: Return BINARY strings from Gem.gzip and Gem.gunzip.
- Fixes intermittent test failures. RubyGems issue #450 by Jeremey
- Kemper.
- * test/rubygems/test_gem.rb: Test for the above.
+Thu Aug 25 08:19:43 2011 Koichi Sasada <ko1@atdot.net>
-Thu Feb 14 07:01:12 2013 Eric Hodel <drbrain@segment7.net>
+ * vm.c (vm_make_env_each): work around to solve Bug #2729.
+ fixes: Bug #2729
+ a patch from Kazuki Tsujimoto <kazuki@callcc.net>
+ This problem is caused by changing dfp (dynamic env pointer)
+ from saved dfp. Saved dfp is pointed env in VM stack. However,
+ the dfp can be moved because VM copies env from VM stack to
+ the heap. At this copying, dfp was also changed. To solve this
+ problem, I'll try to change throw mechanism (not save target dfp,
+ but save target cfp).
- * Backport part of r39166 from trunk [ruby-trunk - Bug #7809]
+ * bootstraptest/test_flow.rb: add a test for above.
- * lib/rubygems/package.rb: Include checksums.yaml.gz signatures for
- verification.
- * test/rubygems/test_gem_package.rb: Test for the above.
+Thu Aug 25 08:04:08 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-Wed Feb 13 15:34:21 2013 NARUSE, Yui <naruse@ruby-lang.org>
+ * numeric.c (int_round): Fix Integer#round [ruby-core:39096]
- * ext/json: merge JSON 1.7.7.
- This includes security fix. [CVE-2013-0269]
- https://github.com/flori/json/commit/d0a62f3ced7560daba2ad546d83f0479a5ae2cf2
- https://groups.google.com/d/topic/rubyonrails-security/4_YvCpLzL58/discussion
+Thu Aug 25 06:51:08 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Sat Feb 9 21:13:35 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+ * ext/psych/lib/psych.rb: Fixing psych version number.
- * backport r39167 from trunk. [ruby-core:52059] [Bug #7812]
+Thu Aug 25 06:11:35 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * BSDL: update copyright notice for 2013.
+ * ext/psych/lib/psych/nodes/node.rb: default `to_yaml` encoding to be
+ UTF-8.
+ * test/psych/test_encoding.rb: test yaml dump encoding.
-Fri Feb 8 19:56:54 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Aug 24 08:53:06 2011 Eric Hodel <drbrain@segment7.net>
- * array.c (rb_ary_dup): reverted r39004. see [Bug #7768], and
- release manager finally decided to revert it.
+ * backport r33043 from trunk.
-Fri Feb 8 16:09:45 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rdoc: Update to RDoc 3.9.3. Fixes RDoc with `ruby -Ku`. Allows
+ HTTPS image paths to be turned into <img> tags. Prevents special
+ markup inside <tt> from being processed.
- * eval.c (rb_ensure): preserve errinfo across ensure proc before
- JUMP_TAG(). [ruby-core:52022] [Bug #7802]
+Wed Aug 24 07:57:43 2011 Eric Hodel <drbrain@segment7.net>
-Fri Feb 8 16:08:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * backport r33040 from trunk.
- * test/ruby/envutil.rb (assert_separately): check also terminating
- signal not only if core dumped.
+ * lib/rubygems: Update to RubyGems 1.8.9. Fixes uninstalling multiple
+ gems and gem cleanup.
-Fri Feb 8 13:12:04 2013 Eric Hodel <drbrain@segment7.net>
+Wed Aug 24 06:45:20 2011 Ryan Davis <ryand-ruby@zenspider.com>
- * lib/rdoc/generator/darkfish.rb: Set encoding on output template to
- user-specified encoding.
- * test/rdoc/test_rdoc_generator_darkfish.rb: Test for above.
+ * backport r33036 from trunk.
- * lib/rdoc.rb: Bump version
+ * lib/minitest/*: Imported minitest 2.5.0 (r6557)
+ * test/minitest/*: ditto
-Fri Feb 8 11:53:33 2013 Eric Hodel <drbrain@segment7.net>
+Tue Aug 23 15:23:56 2011 Eric Hodel <drbrain@segment7.net>
- * lib/rubygems/security/policy.rb: Raise proper exceptions when
- verifying unsigned gems (instead of crashing).
- * test/rubygems/test_gem_security_policy.rb: Tests for the above.
+ * backport r33027 from trunk.
-Fri Feb 8 10:44:44 2013 Eric Hodel <drbrain@segment7.net>
+ * load.c (rb_f_require): Improve documentation of Kernel#require.
+ [Ruby 1.9 - Bug #5210]
- * test/rubygems/test_gem_dependency_installer.rb: Improve coverage of
- --install-dir feature of gem install.
+Tue Aug 23 15:11:48 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-Fri Feb 8 10:11:09 2013 Eric Hodel <drbrain@segment7.net>
+ * backport r33023 from trunk.
- * lib/rubygems/config_file.rb: Add missing require for
- user_interaction.rb
+ * ext/zlib/zlib.c (gzfile_read_header): Ensure that each section of
+ gzip header is readable to avoid SEGV.
- * lib/rubygems/dependency_installer.rb: Minor refactor for clarity.
+ * test/zlib/test_zlib.rb (test_corrupted_header): Test it.
-Fri Feb 8 09:35:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Aug 22 23:43:33 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * lib/mkmf.rb (MakeMakefile#configuration): set all ruby names.
- hdrdir now needs RUBY_VERSION_NAME.
+ * backport r33021 from trunk.
-Fri Feb 8 08:58:26 2013 Eric Hodel <drbrain@segment7.net>
+ * sprintf.c (rb_str_format): add RB_GC_GUARD to prevent temporary
+ strings from GC.
- * lib/rubygems/package/old.rb: Fix loading old format gems on ruby
- 1.8. This commit is only so trunk and rubygems master have the same
- code.
+Sun Aug 21 17:58:38 2011 Kazuki Tsujimoto <kazuki@callcc.net>
-Fri Feb 8 08:53:27 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+ * backport r33019 from trunk.
- * ext/psych/lib/psych/visitors/yaml_tree.rb: fixing string quotation
- when dumping Ruby strings. Thanks Ingy
+ * iseq.c (iseq_s_disasm): remove variable which is no longer used
+ since r33013.
- * test/psych/test_psych.rb: appropriate tests.
+Sun Aug 21 14:20:58 2011 Naohisa Goto <ngotogenome@gmail.com>
- * test/psych/test_yaml.rb: ditto
+ * configure.in: use LD_LIBRARY_PATH_64 on 64-bit Solaris.
-Fri Feb 8 08:50:42 2013 Aaron Patterson <aaron@tenderlovemaking.com>
+Sun Aug 21 11:13:54 2011 Naohisa Goto <ngotogenome@gmail.com>
- * ext/psych/lib/psych/visitors/yaml_tree.rb: change output reference
- ids to be sequential numbers.
+ * backport r32895 from trunk.
-Fri Feb 8 07:47:56 2013 Eric Hodel <drbrain@segment7.net>
+ * ext/fiddle/conversions.c (generic_to_value): ffi_arg and ffi_sarg
+ should be used to handle shorter return value. fix [Bug #3861]
+ [ruby-core:32504]
- * lib/rubygems/package/old.rb: Disallow installation of old-format
- gems when a security policy is active.
- * test/rubygems/test_gem_package_old.rb: Test for above.
+ * ext/fiddle/closure.c (callback): ditto
-Fri Feb 8 07:34:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * ext/fiddle/conversions.h (fiddle_generic): ditto
- * lib/net/http.rb (HTTP.post_form): Fix module scope in documentation
- Patch by David Albert [Bug #7794] [ruby-core:51955]
+ * ext/fiddle/conversions.c (value_to_generic): char, short and int
+ are strictly distinguished on big-endian CPU, e.g. sparc64.
-Fri Feb 8 07:33:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Sat Aug 20 13:28:32 2011 Kazuki Tsujimoto <kazuki@callcc.net>
- * compar.c (cmp_equal): Document ignored exception and return false
- By Makoto Kishimoto [Bug #7790] [ruby-dev:46925] [ruby-dev:46910]
+ * backport r33013 from trunk.
-Fri Feb 8 07:17:00 2013 Eric Hodel <drbrain@segment7.net>
+ * iseq.c (iseq_s_disasm): fix a bug that may cause SEGV.
- * lib/rubygems/dependency_installer.rb: Only install local gems if
- they end in '.gem'. Fixes github rubygems issue #407.
- * test/rubygems/test_gem_dependency_installer.rb: Test for the above.
+ * test/ruby/test_method.rb (test_body): add a test for the above change.
-Fri Feb 8 00:02:48 2013 Tanaka Akira <akr@fsij.org>
+Sat Aug 20 10:43:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * process.c (obj2gid): use getgrnam_r() only if getgrnam_r() and
- _SC_GETGR_R_SIZE_MAX is available.
- MirOS BSD (MirBSD 10 GENERIC#1382 i386) have getgrnam_r() but
- no _SC_GETGR_R_SIZE_MAX.
- (obj2uid): use getpwnam_r() only if getpwnam_r() and
- _SC_GETPW_R_SIZE_MAX is available.
- This is consistency for obj2gid.
- MirOS BSD have neither getpwnam_r() nor _SC_GETPW_R_SIZE_MAX.
+ * ext/stringio/stringio.c (strio_read): return new string if nil
+ is explicitly given as a buffer ([Bug #5207]), otherwise set the
+ encoding. also removed dead code.
-Thu Feb 7 22:01:18 2013 Tanaka Akira <akr@fsij.org>
+Fri Aug 19 14:25:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in: define linker for shared library on MirOS BSD.
+ * process.c (proc_spawn_v, proc_spawn): should not wait the
+ spawned process.
-Thu Feb 7 21:09:23 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+ * process.c (proc_spawn_v): fix missing argument, and try with
+ /bin/sh only if failed with ENOEXEC.
- * test/rubygems/test_gem_config_file.rb
- (TestGemConfigFile#test_check_credentials_permissions): skip on
- Windows. see [Bug #7784] [ruby-core:51864] and r39070.
+Fri Aug 19 14:12:57 2011 Shugo Maeda <shugo@ruby-lang.org>
-Thu Feb 7 20:52:40 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+ * backport r33007 from trunk.
- * win32/Makefile.sub (config.status): added variables which were
- missing at r39130.
+ * lib/net/imap.rb (idle): raises a Net::IMAP::Error when the
+ connection is closed. based on the patch by Hugo Barauna.
+ [Bug #5190] [ruby-core:38930]
-Thu Feb 7 15:33:17 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Aug 19 11:28:58 2011 Shugo Maeda <shugo@ruby-lang.org>
- * lib/mkmf.rb (MakeMakefile#merge_libs): insert following reversal
- ordered elements just after the duplicated element, not overwriting
- successive elements. [ruby-core:50314] [Bug #7467]
+ * backport r33001 from trunk.
-Thu Feb 7 14:56:15 2013 Eric Hodel <drbrain@segment7.net>
+ * lib/net/imap.rb (msg_att): accepts extra space before ')'.
+ based on the patch by art lussos. [Bug #5163] [ruby-core:38820]
- * lib/rubygems/package.rb: Ensure digests are generated for signing.
- * test/rubygems/test_gem_package.rb: Test for the above.
+Wed Aug 17 15:27:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * lib/rubygems/security/policy.rb: Ensure digests are present when
- verifying a gem and match the number of signatures bidirectionally.
- * test/rubygems/test_gem_security_policy.rb: Test for the above.
+ * backport r32996 from trunk.
- * lib/rubygems.rb: Documentation improvements (by zzak)
+ * ext/bigdecimal/bigdecimal.c (cannot_be_coerced_into_BigDecimal):
+ add a new function for raising error when an object cannot coerce
+ into BigDecimal. [Bug #5172]
-Thu Feb 7 05:52:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * ext/bigdecimal/bigdecimal.c (BigDecimalValueWithPrec): use
+ cannot_be_coerced_into_BigDecimal function.
- * doc/pty/README: Remove static documentation file
- * ext/pty/pty.c: Add License to PTY module overview
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): ditto.
-Thu Feb 7 02:31:10 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_log): ditto.
- * vm_insnhelper.c: attr_writer should return its argument [Bug #7773]
+ * test/bigdecimal/test_bigdecimal.rb: test for the avobe changes.
- * test/ruby/test_basicinstructions.rb: Test for above
+ * test/bigdecimal/testbase.rb (under_gc_stress): add a new utility
+ method to run tests under the condition of GC.stress = true.
-Thu Feb 7 01:35:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Wed Aug 17 10:16:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * doc/security.rdoc: Link to japanese version of CVE page patch by
- nagachika
+ * backport r32994 from trunk.
-Wed Feb 6 23:30:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * rational.c (nurat_coerce): Rational#coerce should converts itself
+ into Complex if the argument is a Complex with non-zero imaginary
+ part. [Bug #5020] [ruby-dev:44088]
- * doc/pty/README.expect: Removed static documentation file
- * ext/pty/lib/expect.rb: Documentation for IO#expect
+ * test/ruby/test_rational.rb (test_coerce): test for the above change.
-Wed Feb 6 22:25:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+Wed Aug 17 06:33:19 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * hash.c (env_reject_bang): hide keys array from ObjectSpace
- * hash.c (env_select_bang): ditto
+ * backport r32992 from trunk.
-Wed Feb 6 17:33:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/openssl/ossl_x509cert.c: Add class documentation for
+ OpenSSL::X509::Certificate.
- * configure.in (multiarch): add option to move architecture dependent
- directories. [Feature #6111]
+Wed Aug 17 05:02:25 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * template/ruby.pc.in: add arch dependent paths.
+ * backport r32987 from trunk.
- * configure.in (rubyarchhdrdir, sitearchhdrdir, vendorarchhdrdir): add
- options to customize architecture dependent header directories.
+ * ext/openssl/ossl_pkey.c: corrected docs, OpenSSL::PKey::DH does
+ *not* support #sign/verify.
- * configure.in (rubyarchprefix, sitearchdir, vendorarchdir): add
- options to customize architecture dependent library directories.
+Tue Aug 16 18:56:54 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * template/ruby.pc.in, tool/mkconfig.rb, tool/rbinstall.rb: use
- configured values.
+ * vm.c (ruby_threadptr_data_type): rename to hide.
+ [ruby-core:38972]
- * tool/mkconfig.rb: expand rubyarchdir to extract prefix.
+Tue Aug 16 18:52:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in (RUBY_VERSION_NAME), template/ruby.pc.in: add
- substitution and define.
+ * win32/mkexports.rb (Exports::Mswin#each_export): exclude Init_
+ and _threadptr_ functions, as well as mingw.
- * configure.in, version.c: parametric architecture name for paths.
+Tue Aug 16 09:38:37 2011 Eric Hodel <drbrain@segment7.net>
- * configure.in (shvar_to_cpp): convert sh variable references
- by replacing with string literal forms in cpp.
+ * backport r32981 and r32982 from trunk.
-Wed Feb 6 17:05:26 2013 Eric Hodel <drbrain@segment7.net>
+ * ext/dl: Add documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #5192]
- * lib/rdoc: Import RDoc 4.0.0.rc.2
+ * ext/.document (fiddle): Remove duplicate entry
-Mon Feb 4 02:22:49 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/fiddle: Complete documentation of Fiddle. Patch by Vincent
+ Batts. [#5192]
- * test/ruby/test_process.rb (test_setsid): ensure to call
- Process.wait(). Reported by George Koehler. Thanks.
+Tue Aug 16 08:00:15 2011 Eric Hodel <drbrain@segment7.net>
-Mon Feb 4 02:18:00 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * backport r32977 from trunk
- * test/ruby/test_process.rb (test_setsid): skip when platform is
- OpenBSD. Contributed from George Koehler.
- [Bug #7789] [ruby-core:51889]
+ * ext/socket: Make Socket documentation appear. Add documentation for
+ Socket, TCPServer, SOCKSSocket. Patch by Sylvain Daubert.
+ [Ruby 1.9 - Feature #5182]
-Wed Feb 6 13:35:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Aug 15 10:16:55 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * backport r32973 from trunk.
- * proc.c (rb_method_entry_location, rb_{mod,obj}_method_location): new
- functions to obtain source location of method definition.
+ * ext/openssl/ossl_ssl.c: Support disabling OpenSSL compression.
- * vm_method.c (rb_obj_respond_to): show the location of old style
- respond_to? method.
+ * test/openssl/test_ssl.rb: Add a test for it.
+ Thanks to Eric Wong for the patch.
+ [Ruby 1.9 - Feature #5183] [ruby-core:38911]
-Wed Feb 6 13:03:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Sat Aug 13 22:17:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * doc/security.rdoc: Add link to CVEs on ruby-lang.org/en/security
+ * tool/mkconfig.rb: do not make the entries related to sitedir and
+ verdordir if disabled by --without options. [ruby-core:38922]
+ [Bug #5187]
-Wed Feb 6 12:49:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Sat Aug 13 17:06:57 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * NEWS: Add note about removal of CSV::load and CSV::dump from r39077
+ * ext/date/date_core.c: [ruby-core:38861]
-Wed Feb 6 05:57:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Sat Aug 13 16:59:51 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * lib/racc/parser.rb: Hide copyright notice from Racc doc
+ * test/date/test_*.rb: added tests.
-Wed Feb 6 05:50:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Sat Aug 13 09:36:19 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * doc/rubygems/*: Removed outdated documentation files
- * lib/rubygems/LICENSE.txt: Include license file
- * lib/rubygems.rb: Move Gem module documentation so rdoc can parse it
- and link to LICENSE.txt
- * lib/rubygems/*: Hide useless documentation from Gem module rdoc
+ * ext/date/date_parse.c (parse_ddd_cb): fix r32896. RB_GC_GUARD
+ insertion position was mistaken. [ruby-dev:44337] [Bug #5152]
-Wed Feb 6 03:45:19 2013 Zachary Scott <zachary@zacharyscott.net>
+Sat Aug 13 09:26:24 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * doc/security.rdoc: Remove documentation for unsafe CSV.load which
- was deleted in r39077
+ * ext/psych/lib/psych/core_ext.rb: Make Kernel#y private.
+ [ruby-core:38913]
-Wed Feb 6 03:27:19 2013 James Edward Gray II <james@graysoftinc.com>
+ * test/psych/test_yaml.rb: corresponding test.
- * lib/csv.rb: Remove the dangerous serialization feature.
+Sat Aug 13 09:15:16 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Wed Feb 6 00:56:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * ext/date/date_core.c (date_strftime_alloc): followed the change
+ of r32885.
- * lib/irb.rb: Remove example from restrictions, it works [Github #246]
- Based on patch by Ryunosuke SATO
+ * NEWS: followed the above change.
-Wed Feb 6 00:46:53 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+Sat Aug 13 08:49:05 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * vm.c (rb_vm_stack_to_heap): call rb_vm_get_binding_creatable_next_cfp
- instead of rb_vm_get_ruby_level_next_cfp to prevent a segfault by
- calling Kernel#callcc. See r39067 for more details.
- [ruby-dev:46908] [ruby-trunk - Bug #7774]
+ * ext/date/date_core.c: [ruby-core:38855].
- * test/ruby/test_settracefunc.rb: add a test.
+Sat Aug 13 03:41:37 2011 Eric Hodel <drbrain@segment7.net>
-Tue Feb 5 18:48:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+ * backport r32953 from trunk.
- * doc/security.rdoc: add regex, eval and drb sections
+ * lib/uri/common.rb: Fix documentation of URI::Parser.new. Patch by
+ Steve Klabnik. [Ruby 1.9 - Bug #5177]
-Tue Feb 5 17:24:02 2013 Eric Hodel <drbrain@segment7.net>
+Sat Aug 13 02:19:57 2011 Eric Hodel <drbrain@segment7.net>
- * lib/rdoc/servlet.rb: Fixed root search paths, filesystem paths
- instead of HTTP paths were returned.
- * test/rdoc/test_rdoc_servlet.rb: Test for above.
+ * backport r32950 from trunk.
-Tue Feb 5 16:37:00 2013 Eric Hodel <drbrain@segment7.net>
+ * ext/digest/digest.c: Add documentation for the Digest module. Patch
+ by Sylvain Daubert. [Ruby 1.9 - Bug #5167]
- * lib/rubygems/config_file.rb: Ignore permissions check on windows.
- Windows writes 0600 file as 0644 permissions making the check
- useless.
+Fri Aug 5 13:32:43 2011 Shugo Maeda <shugo@ruby-lang.org>
-Tue Feb 5 16:25:25 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * backport r32856 from trunk.
- * vm_method.c (rb_obj_respond_to): drop optional include_all flag if
- respond_to? method is defined in old style. [Bug #7722]
+ * lib/xmlrpc/client.rb, lib/xmlrpc/server.rb: should use
+ String#bytesize instead of String#size.
-Tue Feb 05 15:04:34 2013 Koichi Sasada <ko1@atdot.net>
+Fri Aug 12 13:53:03 2011 Narihiro Nakamura <narihiro@netlab.jp>
- * proc.c (rb_binding_new_with_cfp): permit to create binding object
- of IFUNC frame.
- When `rb_binding_new_with_cfp()' is called, VM finds out the first
- normal (has iseq) frame and create a binding object of this frame
- and create Env objects. `ep's of related frames are updated
- (`ep's point Env object managed spaces).
- However, `ep' of skipped IFUNC frame was not updated and
- old invalid `ep' was remained. It causes serious problems.
- To solve this issue, permit IFUNC to create binding.
- (Maybe there is no problem on it)
- [ruby-dev:46908] [ruby-trunk - Bug #7774]
+ * backport r32894 from trunk.
- * test/ruby/test_settracefunc.rb: add a test.
+ * gc.c (gc_lazy_sweep): if sweep target slots are not found, we
+ try heap_increment() because it might be able to expand the
+ heap. [Bug #5127] [ruby-dev:44285]
- * vm.c (rb_vm_get_binding_creatable_next_cfp), vm_core.h: added.
+ * gc.c (gc_clear_mark_on_sweep_slots): if a sweeping was
+ interrupted, we expand the heap if at all possible.
- * vm_trace.c: fix to use `rb_vm_get_binding_creatable_next_cfp()'.
+Fri Aug 12 12:28:17 2011 Eric Hodel <drbrain@segment7.net>
-Tue Feb 5 14:43:15 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * lib/rake: Update to Rake 0.9.2.2. Prevent pollution of toplevel
+ namespace by Commands. Remove unused variable and debugging
+ statement in tests.
- * lib/matrix.rb: Fix error message, patch by pypypy [Bug #7777]
+Fri Aug 12 09:00:24 2011 Eric Hodel <drbrain@segment7.net>
-Tue Feb 5 14:36:04 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * backport r32941 from trunk
- * numeric.c (fix_pow): Handle special cases when base is 0, -1 or +1
- [Bug #5713] [Bug #5715]
+ * lib/rubygems: Import RubyGems 1.8.8. Fixes encoding of YAML gemspec
+ from gems. Github Issue #149
- * rational.c (nurat_expt): ditto
+Fri Aug 12 03:24:35 2011 Eric Hodel <drbrain@segment7.net>
-Tue Feb 5 13:27:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * backport r32935 from trunk
- * ext/io/console/console.c (rawmode_opt): use default values by `stty
- raw`.
+ * lib/rdoc: Import RDoc 3.9.2. Fixes TIDYLINK for HTML output.
-Tue Feb 5 12:50:47 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+Tue Aug 2 22:04:46 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * range.c: Use div instead of / for bsearch
+ * backport r32815 from trunk.
- * test/ruby/test_range.rb: Test showing bug when requiring mathn
+ * gc.c (init_heap): allocate sigaltstack after heaps are allocated.
+ [ruby-dev:44315] [Bug #5139]
-Tue Feb 5 12:48:38 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * vm.c (thread_free): use free because objspace is not ready.
- * enumerator.c: Use to_enum for Enumerable methods returning
- Enumerators.
- This makes Lazy#cycle no longer needed, so it was removed.
- Make Enumerator#chunk and slice_before return lazy Enumerators.
- [Bug #7715]
+ * vm.c (th_init): use malloc because objspace is not ready.
- * internal.h: Remove ref to rb_enum_cycle_size; no longer needed
+Thu Aug 11 19:04:38 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
- * enum.c: Make enum_cycle_size static.
+ * backport r32931 from trunk.
- * test/ruby/test_lazy_enumerator.rb: Test for above
+ * variable.c (autoload_delete): An autoload entry is still in a
+ RCLASS_IV_TBL, not in a RCLASS_CONST_TBL, so take back the table
+ changed in r29600. And an autoload entry keeps not a
+ rb_const_entry_t but a NODE so remove rb_const_entry_t thing added
+ in r29602.
-Tue Feb 5 12:48:10 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+Thu Aug 11 15:07:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * enumerator.c: Finalize and document Lazy.new. [Bug #7248]
- Add Lazy#to_enum and simplify Lazy#size.
+ * lib/mkmf.rb (link_command): use LIBRUBYARG in rbconfig for
+ unbundled extensions. [ruby-core:38802] [Bug #5147]
- * test/ruby/test_lazy_enumerator.rb: tests for above
+ * lib/mkmf.rb (init_mkmf): revert r32902. [ruby-core:38903]
-Tue Feb 5 11:35:35 2013 Eric Hodel <drbrain@segment7.net>
+Wed Aug 10 19:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * lib/rubygems/commands/push_command.rb: Fixed credential download for
- `gem push --host`
- * lib/rubygems/gemcutter_utilities.rb: ditto.
- * test/rubygems/test_gem_commands_push_command.rb: Test for the above.
- * test/rubygems/test_gem_gemcutter_utilities.rb: ditto.
+ * backport r32903 from trunk.
- * lib/rubygems/config_file.rb: Abort if the `gem push` credentials
- file has insecure permissions.
- * test/rubygems/test_gem_config_file.rb: Test for the above.
+ * complex.c (nucomp_rationalize): calls rationalize of real part if
+ imaginary part is exactly zero. The patch is made by Marc-Andre
+ Lafortune. fixes [Bug #5178] [ruby-core:38885]
- * lib/rubygems/ext/builder.rb: Do not look for Gemfile, Isolate, etc.
- while building gem extensions.
+ * test/ruby/test_complex.rb (test_rationalize): add a test for the
+ above change.
- * lib/rubygems/package.rb: Unset spec and files list if a gem's
- signatures cannot be verified.
- * test/rubygems/test_gem_package.rb: Test for the above.
+ * complex.c (nucomp_to_r): fix RDoc comment. The patch is made by
+ Marc-Andre Lafortune.
- * lib/rubygems/specification.rb: Reduce use of eval.
- * lib/rubygems/test_case.rb: ditto.
+Wed Aug 10 14:11:07 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/rubygems/test_gem_specification.rb: Test setting
- specification_version for legacy gems. Dup Gem.ruby before
- untainting in case it's frozen.
+ * lib/mkmf.rb (init_mkmf): set $LIBRUBYARG regardless of shared
+ option. [ruby-core:38802] [Bug #5147]
- * lib/rubygems.rb: Reduce use of eval. Only read files when looking
- for Gemfile, Isolate, etc.
- * test/rubygems/test_gem.rb: Test for the above.
+Wed Aug 10 02:57:01 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Feb 5 10:15:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * lib/net/http.rb: come back autoload. OpenSSL constant is used
+ some places, so it leads mistakes like HTTP.start.
- * doc/security.rdoc: Wrap security guide at 80 columns
+Tue Aug 9 22:57:45 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Tue Feb 5 10:15:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * ext/date/date_parse.c (date_zone_to_diff): add RB_GC_GUARD.
+ [ruby-dev:44337] [Bug #5152]
- * doc/security.rdoc: Grammatical error on security guide
- Patch by Josh Bassett [Github fixes #245]
+ * ext/date/data_parse.c (parse_ddd_cb): ditto.
-Tue Feb 5 10:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Tue Aug 9 12:20:33 2011 Naohisa Goto <ngotogenome@gmail.com>
- * lib/racc/parser.rb: Update #do_parse and #yyparse from upstream
- See [Github tenderlove/racc@7d954b5]
+ * test/fiddle/helper.rb (libc_so, libm_so): Solaris support added.
+ [ruby-core:38853] [Bug #5168]
-Tue Feb 5 09:55:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * test/dl/test_base.rb (libc_so, libm_so): on Solaris, remove libc
+ and libm version numbers for detecting default libc and libm.
- * lib/racc: Merge Racc documentation downstream, add grammar ref file
+Tue Aug 9 10:49:52 2011 Igor Zubkov <igor.zubkov@gmail.com>
-Tue Feb 5 08:03:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * array.c: Fix typo. https://github.com/ruby/ruby/pull/36
- * lib/irb.rb, lib/irb/ext/save-history.rb: Add documentation on how to
- enabled irb history [ruby-core:51347] [Bug #7679]
+Mon Aug 8 00:10:45 2011 Akinori MUSHA <knu@iDaemons.org>
-Tue Feb 5 07:35:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * test/test_syslog.rb (TestSyslog#test_log): Do not be too
+ specific about the log line format. Fixes #5081.
- * lib/irb.rb, lib/irb/context.rb: Add documentation on how to enable
- auto-indentation and autocompletion using irbrc and irb_context
- [ruby-core:51209] [Bug #7642] and [ruby-core:51348] [Bug #7680]
+Sun Aug 7 23:39:44 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Feb 5 05:20:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * time.c (rb_strftime_alloc): raise ERANGE if width is too large.
+ Patch by Nobuyoshi Nakada. [Bug #4457] [ruby-dev:43285]
- * doc/standard_library.rdoc: Document list of libraries and extensions
- and their purpose or short description
- * lib/README: Remove lib/README in favor of doc/standard_library.rdoc
+ * test/ruby/test_time.rb (class TestTime): add a test for the
+ above change.
-Tue Feb 5 04:40:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Sun Aug 7 14:15:10 2011 Kazuki Tsujimoto <kazuki@callcc.net>
- * ext/json/lib/json.rb: Move module overview definition for rdoc
+ * backport r32876 from trunk.
-Tue Feb 5 03:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * ext/objspace/objspace.c: fix typos in a document.
- * lib/tracer.rb: Move class overview definition and reformat
+Sun Aug 7 04:42:36 2011 Eric Hodel <drbrain@segment7.net>
-Mon Feb 4 15:10:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * marshal.c (w_object): Fix exception message when _dump_data
+ is not defined on a T_DATA object.
- * ext/io/console/console.c (rawmode_opt): initialize options for the
- case all options are not given.
+Sat Aug 6 06:14:20 2011 Eric Hodel <drbrain@segment7.net>
-Mon Feb 4 12:44:13 2013 Koichi Sasada <ko1@atdot.net>
+ * lib/rdoc: Update to 3.9.1. Fixes === lines in verbatim sections.
+ Fixes :nodoc: on class aliases. Fixes :stopdoc: creating references
+ to Object. Fixes spacing when class comments are merged in ri.
+ Fixes `ri []` crash. Fixes bug report URL when rdoc crashes. Adds
+ :doc: and :nodoc: to allow hiding of implementation details in ruby.
+ Makes `rdoc` and `ri` gem-aware.
- * vm_dump.c (control_frame_dump): capitalize prefix of `ep'
- if `ep' points an env object.
+Sat Aug 6 03:19:45 2011 Eric Hodel <drbrain@segment7.net>
-Mon Feb 4 04:20:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * lib/rubygems: Import RubyGems 1.8.7:
+ Added missing require for `gem uninstall --format-executable`.
- * lib/English.rb: Add English module for RDoc to parse, then
- remove_const to avoid confusion. Include full list of aliases and
- their associated global variable.
+ The correct name of the executable being uninstalled is now displayed
+ with --format-executable.
-Mon Feb 4 02:40:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ Fixed `gem unpack uninstalled_gem` default version picker.
- * lib/yaml.rb (YAML::EngineManager): Documentation for #yamler and
- #yamler= for using the removed Syck gem as the YAML::ENGINE
+ RubyGems no longer claims a nonexistent gem can be uninstalled.
-Sun Feb 3 16:54:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ `gem which` no longer claims directories are requirable files.
- * ext/io/console/io-console.gemspec: bump. [Bug #7762]
+ `gem cleanup` continues cleaning up gems if one can't be uninstalled
+ due to permissions. Issue #82.
- * test/io/console/test_io_console.rb (test_stringio_getch): use more
- descriptive assertions.
+ Gem repository directories are no longer created world-writable.
+ Patch by Sakuro OZAWA. [Ruby 1.9 - Bug #4930]
- * ext/io/console/console.c (rawmode_opt): min is minimum characters,
- not tenths.
+Fri Aug 5 23:08:39 2011 Naohisa Goto <ngotogenome@gmail.com>
-Sun Feb 3 16:13:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+ * backport r32845 from trunk.
- * doc/security.rdoc: add first cut at a Ruby security document
+ * configure.in: when Solaris cc, use $(CC) to link shared libs.
-Sun Feb 3 10:25:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Fri Aug 5 22:16:20 2011 Naohisa Goto <ngotogenome@gmail.com>
- * random.c: Document range argument for Kernel#rand.
- [ruby-core:51794] [Bug #7770]
+ * numeric.c (rb_infinity, rb_nan): use WORDS_BIGENDIAN to get endian.
+ fix [Bug #5160] [ruby-dev:44356]
-Sun Feb 3 10:00:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Fri Aug 5 15:57:10 2011 Naohisa Goto <ngotogenome@gmail.com>
- * numeric.c: Document Float constants [ruby-core:51484] [Bug #7709]
+ * complex.c (f_signbit): fix compile error in gcc4 on Solaris with
+ CFLAGS="-std=gnu99". [ruby-dev:44355] fix [Bug #5159]
-Sun Feb 3 09:38:44 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * math.c: ditto.
- * lib/profiler.rb (PROFILE_CALL_PROC, PROFILE_RETURN_PROC): add b_call
- and b_return to profile block calls.
+Thu Aug 5 10:09:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * lib/profiler.rb (PROFILE_CALL_PROC, PROFILE_RETURN_PROC): split
- PROFILE_PROC for call and return events.
+ * backport r32846 from trunk.
-Sat Feb 2 14:32:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * thread_pthread.c (native_cond_signal): retry to call pthread_cond_signal
+ and pthread_cond_broadcast if they return EAGAIN in
+ native_cond_signal and native_cond_broadcast, respectively.
+ It is for the pthread implementation of Mac OS X 10.7 (Lion).
+ fixes #5155. [ruby-dev:44342].
- * lib/minitest/mock.rb, lib/minitest/hell.rb: nodoc top-level module
+ * thread_pthread.c (native_cond_broadcast): ditto.
-Sat Feb 2 14:05:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * thread_pthread.c (struct cached_thread_entry): stop using
+ pthread_cond_t and its functions directly.
- * lib/debug.rb: Documentation for DEBUGGER__ class methods based on
- patch by Vincent Batts [ruby-core:51253]
+ * thread_pthread.c (register_cached_thread_and_wait): ditto.
-Sat Feb 2 13:37:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * thread_pthread.c (use_cached_thread): ditto.
- * lib/net/smtp.rb: Fix rdoc title for Net::SMTP
+Fri Aug 5 07:35:00 2011 Luis Lavena <luislavena@gmail.com>
-Sat Feb 2 13:32:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * lib/rubygems/installer.rb (class Gem): Correct path check on Windows
+ Possible fix for [Ruby 1.9 - Bug #5111]
- * lib/net/pop.rb: Fix rdoc title for Net::POP3
+ * test/rubygems/test_gem_installer.rb (load Gem): ditto
+ Backported from trunk r32804
-Sat Feb 2 13:00:11 2013 Yusuke Endoh <mame@tsg.ne.jp>
+Fri Aug 5 07:00:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/gserver.rb (GServer#start): fix a timing issue. patch from
- Charles Nutter. [Bug #7081]
+ * test/io/console/test_io_console.rb (test_noctty): daemon() on
+ Fedora Rawhide seems not to detach the controlling terminal,
+ when the argument noclose is non-zero. ref: [Bug #5135]
-Sat Feb 2 12:36:54 2013 Yusuke Endoh <mame@tsg.ne.jp>
+Wed Aug 4 02:35:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * lib/fileutils.rb (copy_entry, wrap_traverse): preserve attributes of
- directories on FileUtils.cp_r. The fix was proposed by Jan
- Wedekind. [Bug #7246]
+ * configure.in: use build_os variable for checking C and C++ compilers
+ matching.
- * test/fileutils/test_fileutils.rb: add a test for above.
+ * configure.in: use clang++ if clang is used.
-Sat Feb 2 12:30:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Thu Aug 4 02:21:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/uri/ftp.rb (URI::FTP.new2): nodoc method from r39013 [Bug #7301]
+ * lib/mkmf.rb (link_command): use static library only for bundled
+ extensions. [Bug #5147]
-Sat Feb 2 12:15:36 2013 Yusuke Endoh <mame@tsg.ne.jp>
+Wed Aug 3 00:11:08 2011 Tanaka Akira <akr@fsij.org>
- * lib/uri/ftp.rb (URI::FTP.new2): remove the rdoc because it is not
- well tested yet. [Bug #7301]
+ * lib/prettyprint.rb: update document. [ruby-core:36776]
-Sat Feb 2 12:07:41 2013 Yusuke Endoh <mame@tsg.ne.jp>
- * ChangeLog: Forgot to add a reference to the ChangeLog of the
- previous commit.
+Tue Aug 2 20:10:16 2011 Shota Fukumori <sorah@tubusu.net>
-Sat Feb 2 12:05:18 2013 Yusuke Endoh <mame@tsg.ne.jp>
+ * test/testunit/test_parallel.rb: pass "--ruby" option to
+ test/testunit/tests_for_parallel/runner.rb. [Bug #5132] [ruby-dev:44303]
+ Backported from trunk r32812.
- * lib/fileutils.rb: chmod/chmod_R with a string mode (e.g., "+x")
- caused error in verbose mode. [Bug #7373]
+Tue Aug 2 12:03:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/fileutils/test_fileutils.rb: add a test for above.
+ * hash.c (recursive_hash): hash value of emptied hash should be
+ equal to an empty hash. [ruby-core:38650]
-Sat Feb 2 11:44:42 2013 Yusuke Endoh <mame@tsg.ne.jp>
+Tue Aug 2 11:42:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/English.rb: Remove some confusing words from rdoc. [Bug #7406]
+ * parse.y (rb_enc_symname2_p): :! is valid symbol. [Bug #5136]
-Sat Feb 2 10:17:12 2013 Kazuki Tsujimoto <kazuki@callcc.net>
+Tue Aug 2 03:26:02 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * NEWS: add keyword arguments.
+ * test/rake/test_rake_directory_task.rb (TestRakeDirectoryTask#
+ test_directory_win32): fixed wrong test.
+ backported r32670 from trunk.
-Sat Feb 2 07:45:44 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+Mon Aug 1 15:45:23 2011 Eric Hodel <drbrain@segment7.net>
- * proc.c (proc_curry): Fix arity check [Bug #5747]
+ * test/rake/test_rake_functional.rb: Don't assume the binary name of
+ ruby is "ruby". [Ruby 1.9 - Bug #5114]
+ * test/rake/helper.rb: ditto
- * test/ruby/test_proc.rb: Test for above
+Mon Aug 1 05:21:42 2011 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
-Sat Feb 2 07:44:15 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * cont.c (cont_save_thread): fix missing semicolon.
- * proc.c: Add {*}_min_max_arity and refactor.
- [Bug #7765]
+Sun Jul 31 22:57:16 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
- * test/ruby/test_proc.rb: Fix wrong test
+ * enc/Makefile.in (ECHO1): Same as the recent fix in common.mk.
+ ":" in a make variable replacement cause a syntax error with
+ /usr/ccs/bin/make on Solaris. Uses $(NULLCMD) instead.
-Fri Feb 2 00:46:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+Sun Jul 31 22:44:08 2011 Kazuki Tsujimoto <kazuki@callcc.net>
- * marshal.c: add security considerations to marshal overview, refer to
- overview from Marshal.load documentation [#7759]
+ * configure.in: fix typos.
-Fri Feb 1 23:04:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+Sun Jul 31 21:19:51 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
- * array.c (rb_ary_dup): make returned array the same class as the original
- array [Bug #7768] [ruby-core:51792]
- * test/ruby/test_array.rb (class TestArray): add test
+ * lib/mkmf.rb (configuration:ECHO1): Same as the recent fix in
+ common.mk.
+ ":" in a make variable replacement cause a syntax error with
+ /usr/ccs/bin/make on Solaris. Uses $(NULLCMD) instead.
-Fri Feb 1 16:35:34 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Jul 31 21:16:02 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
- * marshal.c (r_object0): prohibit setting instance variables of
- existing class/module.
+ * complex.c (f_signbit): gcc4 on Solaris DOES have signbit but does
+ not have it on header.
-Fri Feb 1 14:34:29 2013 Shugo Maeda <shugo@ruby-lang.org>
+ * math.c: ditto.
- * ext/readline/extconf.rb, ext/readline/readline.c: check
- RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE directly in
- readline.c. Patch by Zachary Scott. [Bug #7397] [ruby-core:49561]
+Sun Jul 31 21:09:04 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-Thu Jan 31 21:55:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+ * common.mk (node_name.inc): Use $(Q) for consistency.
- * marshal.c (marshal_load): Add documentation warning against using
- Marshal.load on untrusted data [Bug #7759] [ruby-core:51765]
+ * Makefile.in (INSNS): ditto.
-Thu Jan 31 16:33:27 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Jul 31 20:39:12 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
- * parse.y (local_push_gen): no assigned but unused variable warnings
- in eval as well as -e. [Feature #7730] [ruby-core:51580]
+ * common.mk (ECHO1): nmake does not allow parenthesis in make variable
+ replacement.
-Wed Jan 30 12:30:08 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Jul 31 20:21:36 2011 "Yuki Sonoda (Yugui)" <yugui@yugui.jp>
- * test/ruby/test_signal.rb (test_trap_puts): Fix typo. "sync"
- should be "STDOUT.sync".
+ * common.mk (ECHO1): ":" in a make variable replacement cause a syntax
+ error with /usr/ccs/bin/make on Solaris. Uses $(NULLCMD) instead.
-Thu Jan 31 15:39:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * configure.in (NULLCMD): new check.
- * string.c (rb_str_aset_m): Documentation for String#[]= fix
- Raises an IndexError if Regexp match is out of range.
- Github fixes #243 Patch by Dmtiriy Budnik
+ * Makefile.in (NULLCMD): Reflects checking in configure.
-Thu Jan 31 13:54:44 2013 Shugo Maeda <shugo@ruby-lang.org>
+ * win32/Makefile.sub (NULLCMD): new assignment.
- * ext/socket/raddrinfo.c (rsock_unix_sockaddr_len): return
- sizeof(sa_family_t) if path is empty. see "Autobind Feature" in
- unix(7) for details.
+Sun Jul 31 11:31:07 2011 Kazuki Tsujimoto <kazuki@callcc.net>
- * ext/socket/lib/socket.rb (unix_socket_abstract_name?): treat an
- empty path as an abstract name.
+ * backport r32768 from trunk.
- * test/socket/test_unix.rb: related test.
+ * vm.c: check if cfp is valid. [Bug #5083] [ruby-dev:44208]
-Wed Jan 30 20:58:50 2013 Tanaka Akira <akr@fsij.org>
+Sat Jul 31 01:23:45 2011 Kenta Murata <mrkn@mrkn.jp>
- * ext/socket/basicsocket.c (bsock_getsockname): ignore truncated
- part of socket address.
- (bsock_getpeername): ditto.
- (bsock_local_address): ditto.
- (bsock_remote_address): ditto.
+ * backport r32762 from trunk.
- * ext/socket/unixsocket.c (unix_path): ditto.
- (unix_addr): ditto.
- (unix_peeraddr): ditto.
+ * test/bigdecimal/test_bigdecimal.rb (test_version): removed.
- * ext/socket/init.c (cloexec_accept): ditto.
+Sat Jul 30 23:51:44 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Wed Jan 30 17:08:20 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/cmath.rb (cbrt): should return a real number if possible.
- * include/ruby/win32.h (fstat): revert r37337, which uses _fstati64()
- instead of fstati64() on mingw32. [Bug #7276]
+Sat Jul 30 23:48:04 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Wed Jan 30 15:26:37 2013 Shugo Maeda <shugo@ruby-lang.org>
+ * ext/date/date_core.c: an issue that is same as [ruby-dev:44071].
- * ext/socket/unixsocket.c (rsock_init_unixsock): use rb_inspect()
- because rb_sys_fail_str() fails if its argument contains NUL.
+ * ext/date/date_strftime.c: identical to [ruby-dev:44112].
- * test/socket/test_unix.rb: related test.
+Sat Jul 30 23:19:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jan 30 15:21:30 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * defs/default_gems: separate from tool/rbinstall.rb.
- * vm_dump.c (rb_vm_bugreport): show the most important message, Crash
- Report log information, first.
+Sat Jul 30 23:14:44 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jan 30 15:00:05 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * io.c (rb_io_each_byte): rbuf can be refreshed during yield.
+ [Bug #5119]
- * array.c (rb_ary_bsearch): Raise TypeError on bad return from block
+Sat Jul 30 22:35:50 2011 Naohisa Goto <ngotogenome@gmail.com>
- * range.c (range_bsearch): ditto
+ * strftime.c (NEEDS): avoid SEGV due to integer overflow in
+ sparc-solaris2.10 and i686-linux. fix [Bug #4456] [ruby-dev:43284]
- * test/ruby/test_array.rb (class): Test for above
+Sat Jul 30 14:27:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * test/ruby/test_range.rb (class): ditto
+ * backport r32754 from trunk.
-Wed Jan 30 14:46:28 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_version): version 1.1.0.
- * range.c: Restrict bsearch to integers [#7728]
+ * ext/bigdecimal/bigdecimal.gemspec: turn into a default gem.
- * test/ruby/test_range.rb: Test for above
+ * tool/rbinstall.rb: ditto.
-Wed Jan 30 14:10:52 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+Sat Jul 30 13:52:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * array.c (rb_ary_bsearch): Return enumerator if no block [#7725]
+ * ext/bigdecimal/lib/bigdecimal/util.rb (Rational#to_d):
+ revive zero and implicit precision support as a deprecated feature.
- * range.c (range_bsearch): ditto
+ * test/bigdecimal/test_bigdecimal_util.rb: modify a test for the above
+ change.
- * test/ruby/test_array.rb: Test for above
+ * NEWS: describes the above change.
- * test/ruby/test_range.rb: ditto
+Sat Jul 30 10:58:10 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Jan 30 13:53:43 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * vm.c (th_init): preallocate alternative stack.
+ NoMemoryError is better than rb_bug, of course.
+ Patch by Eric Wong. [ruby-core:38572][ruby-core:38594].
- * lib/matrix.rb: Take conjugate for inner product
- [rubyspec:5a01ad5719f2] [ruby-dev:46101]
+ * signal.c (rb_register_sigaltstack): ditto.
-Wed Jan 30 13:22:05 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * vm_core.h: moved ALT_STACK_SIZE definition from signal.c.
- * parse.y (local_push_gen): warn assigned but unused variables also in
- toplevel, except for -e option. [Feature #7730] [ruby-core:51580]
+ * vm.c (thread_free): use xfree() instead of free().
-Wed Jan 30 13:17:53 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Jul 30 07:20:49 2011 Tanaka Akira <akr@fsij.org>
- * cont.c (cont_restore_thread): svar should be separate per fibers.
- [ruby-core:51331] [Bug #7678]
+ * ext/socket/lib/socket.rb (udp_server_sockets): unused variable
+ removed.
+ patch by Jeremy Evans. [ruby-core:38600]
-Wed Jan 30 07:15:04 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+Fri Jul 29 23:56:32 2011 Tanaka Akira <akr@fsij.org>
- * re.c (reg_operand): Simplify and reuse error handling [Bug #7539]
+ * lib/securerandom.rb: call OpenSSL::Random.seed at the
+ SecureRandom.random_bytes call.
+ based on the patch by Masahiro Tomita. [ruby-dev:44270]
- * test/ruby/test_regexp.rb: Test for above
+Fri Jul 29 20:48:39 2011 Tanaka Akira <akr@fsij.org>
-Wed Jan 30 07:00:16 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * ext/socket/mkconstants.rb: fix typos.
- * object.c: Improve error for failed implicit conversions [Bug #7539]
+Fri Jul 29 20:28:56 2011 Tanaka Akira <akr@fsij.org>
- * error.c: Adapt rdoc
+ * ext/socket/mkconstants.rb: use whitespaces as a separator.
- * test/ruby/test_object.rb: Test for above
+Fri Jul 29 18:59:07 2011 Tanaka Akira <akr@fsij.org>
-Tue Jan 29 21:40:12 2013 Tanaka Akira <akr@fsij.org>
+ * ext/socket/mkconstants.rb: add documents for constants.
+ patch by Eric Hodel. [ruby-core:37853] [Bug #4989]
- * lib/net/http/generic_request.rb (encode_multipart_form_data): remove
- tempfile explicitly.
+Mon Jul 25 23:51:01 2011 Yusuke Endoh <mame@tsg.ne.jp>
-Tue Jan 29 19:27:18 2013 Benoit Daloze <eregontp@gmail.com>
+ * backport r32671 from trunk.
- * array.c: Improve documentation about
- comparison by hash for concerned methods. [ruby-core:51266]
+ * proc.c: pre-allocate the unlinked_method_entry_list_entry struct to
+ avoid memory allocation during GC. based on a patch from Eric Wong.
+ [ruby-core:38498]
-Tue Jan 29 17:03:28 2013 Koichi Sasada <ko1@atdot.net>
+Mon Jul 25 22:36:11 2011 Yusuke Endoh <mame@tsg.ne.jp>
- * vm_backtrace.c: fix issue of rb_debug_inspector_open().
- The order of making binding should be stack (frame) top to bottom.
- [Bug #7635]
- And also fix issue of collecting klass. Collecting klass is same
- as TracePoint#defined_class.
- (previous version, it returns T_ICLASS (internal objects).
+ * backport r32669 from trunk.
- * test/-ext-/debug/test_debug.rb: add a test.
+ * proc.c (struct METHOD), gc.c (gc_marks), vm_method.c
+ (rb_gc_mark_unlinked_live_method_entries): fix SEGV bug.
+ rb_method_entry_t was free'd even when the method is still on the
+ stack if it is BMETHOD (i.e., Method#call). This is because
+ rb_method_entry_t is embedded in struct METHOD. This commit
+ separates them and marks the live method entries.
+ See [ruby-core:38449] in detail. fix [Bug #5047] [ruby-core:38171]
- * ext/-test-/debug/extconf.rb, init.c, inspector.c: ditto.
+Thu Jul 28 23:36:28 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * vm_backtrace.c: remove magic number and add enum CALLER_BINDING_*.
+ * ext/fiddle/closure.c (callback): use rb_ary_tmp_new() instead of
+ xmalloc() to allocate an array for arguments of callback procedure,
+ to prevent arguments from being swept by GC. [ruby-core:38546]
+ [Bug #4929]
- * vm_backtrace.c, include/ruby/debug.h: add new C api (experimental)
- rb_debug_inspector_frame_self_get().
+Thu Jul 28 22:51:27 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
- * vm.c, vm_core.h, vm_trace.c: move decl. of
- rb_vm_control_frame_id_and_class() and constify first parameter.
+ * backport r32723 from trunk.
-Tue Jan 29 16:50:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/openssl/ossl_cipher.c (ossl_cipher_initialize): Avoid possible
+ SEGV from AES encryption/decryption. Processing data by
+ Cipher#update without initializing key (meaningless usage of Cipher
+ object since we don't offer a way to export a key) could cause SEGV.
- * vm_trace.c (rb_tracepoint_enable, rb_tracepoint_disable): check safe
- level as well as set_trace_func.
+ In OpenSSL, the EVP which has EVP_CIPH_RAND_KEY flag (such as DES3)
+ allows uninitialized key, but other EVPs (such as AES) does not
+ allow it. Calling EVP_CipherUpdate() without initializing key causes
+ SEGV so we set the data filled with "\0" as the key by default. See
+ #2768.
- * vm_trace.c (set_trace_func, thread_{add,set}_trace_func_m): check
- safe level as well as 1.8.
+ * test/openssl/test_cipher.rb: test it.
-Tue Jan 29 16:49:19 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Jul 28 04:53:31 2011 Eric Hodel <drbrain@segment7.net>
- * proc.c (rb_mod_method_arity): return original arity of the method if
- aliased because of visibility change, like as Method#arity.
+ * lib/delegate.rb: Move file-level documentation to the appropriate
+ classes.
-Tue Jan 29 12:05:18 2013 Tanaka Akira <akr@fsij.org>
+Thu Jul 28 00:33:47 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * test/ruby/test_marshal.rb: remove temporally files early.
+ * test/fileutils/test_fileutils.rb: add OpenBSD case.
+ patched by Jeremy Evans [ruby-core:38530] see #5097
* test/ruby/test_process.rb: ditto.
- * test/psych/test_exception.rb: ditto.
-
-Tue Jan 29 09:26:20 2013 Shugo Maeda <shugo@ruby-lang.org>
-
- * ext/socket/socket.c (sock_s_pack_sockaddr_un): calculate the
- correct address length of an abstract socket.
-
- * test/socket/test_unix.rb: related test.
-
-Mon Jan 28 18:02:16 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_backtrace.c (rb_debug_inspector_frame_{class,binding,iseq}_get):
- use long as index as well as RARRAY_LEN().
-
-Mon Jan 28 17:51:38 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/envutil.rb (assert_separately): imply no core dump.
-
-Mon Jan 28 12:32:31 2013 Tanaka Akira <akr@fsij.org>
-
- * ext/fcntl/fcntl.c: update document. use "file descriptor" instead
- of "file handle" because it is not used other Ruby documents and
- it is confusing with Windows file handle.
- correct F_DUPFD behavior.
-
-Sat Jan 26 22:39:12 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * marshal.c (w_object): dump instance variables of the result of
- marshal_dump not the original object. [ruby-core:51163] [Bug #7627]
-
- * complex.c (nucomp_marshal_dump): need to copy instance variables.
-
- * rational.c (nurat_marshal_dump): ditto.
-
-Sat Jan 26 13:35:56 2013 Eric Hodel <drbrain@segment7.net>
-
- * ext/fcntl/fcntl.c: Document Fcntl constants
-
-Sat Jan 26 12:54:40 2013 Eric Hodel <drbrain@segment7.net>
-
- * hash.c (rb_env_size): Restored documentation for ENV.size
-
- * lib/drb/drb.rb: Documented DRb::DRb#run.
-
- * lib/erb.rb (class ERB): Improved documentation of ERb.
-
- * transcode.c: Documented Encoding::Converter constants.
-
-Sat Jan 26 10:09:57 2013 Eric Hodel <drbrain@segment7.net>
-
- * lib/webrick/accesslog.rb: Improved WEBrick documentation.
- * lib/webrick/cgi.rb: ditto.
- * lib/webrick/config.rb: ditto.
- * lib/webrick/cookie.rb: ditto.
- * lib/webrick/httpauth/authenticator.rb: ditto.
- * lib/webrick/httpauth/basicauth.rb: ditto.
- * lib/webrick/httpauth/digestauth.rb: ditto.
- * lib/webrick/httpproxy.rb: ditto.
- * lib/webrick/httprequest.rb: ditto.
- * lib/webrick/httpresponse.rb: ditto.
- * lib/webrick/https.rb: ditto.
- * lib/webrick/httpserver.rb: ditto.
- * lib/webrick/httpservlet/cgihandler.rb: ditto.
- * lib/webrick/httpservlet/filehandler.rb: ditto.
- * lib/webrick/httpservlet/prochandler.rb: ditto.
- * lib/webrick/httputils.rb: ditto.
- * lib/webrick/httpversion.rb: ditto.
- * lib/webrick/log.rb: ditto.
- * lib/webrick/server.rb: ditto.
- * lib/webrick/ssl.rb: ditto.
- * lib/webrick/utils.rb: ditto.
- * lib/webrick/version.rb: ditto.
-
-Sat Jan 26 08:29:33 2013 Shugo Maeda <shugo@ruby-lang.org>
-
- * ext/socket/raddrinfo (rsock_unix_sockaddr_len): renamed from
- rsock_unixpath_len, because it returns not the length of the path,
- but the length of a socket address for the path.
-
-Sat Jan 26 01:12:23 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_io.rb (test_ioctl_linux): skip if a platform is
- not x86 because linux ioctl request number depend on cpu arch.
- At least, alpha, mips, sparc and ppc have a different number.
- [Bug #7718] [ruby-core:51544]
-
-Fri Jan 25 19:14:24 2013 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c: use TlsAlloc instead of __declspec(thread)
- to avoid SEGV if win32ole.so loaded with LoadLibrary in Windows
- XP or earlier.
-
-Fri Jan 25 16:47:31 2013 Shugo Maeda <shugo@ruby-lang.org>
-
- * ext/socket/raddrinfo.c (rsock_unixpath_len, init_unix_addrinfo),
- ext/socket/unixsocket.c (unixsock_connect_internal,
- rsock_init_unixsock): calculate the correct address length of
- an abstract socket. Without this fix, sizeof(struct sockaddr_un)
- is specified as the length of an abstract socket for bind(2) or
- connect(2), so the address of the socket is filled with extra NUL
- characters. See unix(7) for details.
-
- * ext/socket/lib/socket.rb (unix_server_socket): don't access the
- file system if the platform is Linux and path starts with NUL,
- which means that the socket is an abstract socket.
-
- * test/socket/test_unix.rb: related test.
-
-Fri Jan 25 13:02:27 2013 Eric Hodel <drbrain@segment7.net>
-
- * lib/drb/drb.rb: Updated documentation based on patch from Vincent
- Batts. [ruby-trunk - Bug #7714]
- * lib/drb/ssl.rb: ditto.
-
-Fri Jan 25 12:23:29 2013 Eric Hodel <drbrain@segment7.net>
-
- * lib/drb/drb.rb: Improved documentation by adding or hiding methods.
- * lib/drb/eq.rb: ditto.
- * lib/drb/extserv.rb: ditto.
- * lib/drb/gw.rb: ditto.
- * lib/drb/invokemethod.rb: ditto.
- * lib/drb/observer.rb: ditto.
- * lib/drb/ssl.rb: ditto.
- * lib/drb/timeridconv.rb: ditto.
- * lib/drb/unix.rb: ditto.
-
- * sample/drb/gw_cu.rb: Fixed bug in DRb gateway sample.
-
-Fri Jan 25 12:01:56 2013 Koichi Sasada <ko1@atdot.net>
-
- * vm_core.h: modify a comment about rb_iseq_t::local_size.
- A patch by davidbalbert (David Albert) [Bug #6750]
-
-Fri Jan 25 10:36:31 2013 Eric Hodel <drbrain@segment7.net>
-
- * lib/mkmf.rb: Documented MakeMakefile constants. Hide implementation
- details from RDoc
-
-Fri Jan 25 10:04:07 2013 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/compatibility.rb: Hide compatibility shims from RDoc
-
- * lib/rubygems/config_file.rb: Hide RbConfig use from RDoc
-
- * lib/rubygems/test_case.rb: Added note to use realpath when 1.8
- support is dropped.
-
-Fri Jan 25 09:14:43 2013 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/generator/darkfish.rb: Fixed debug message. RDoc bug #174
- by Thomas Leitner.
-
- * lib/rdoc/store.rb: Fixed deletion of ri attribute data when a class
- was loaded then saved. RDoc bug #171 by Thomas Leitner.
- * test/rdoc/test_rdoc_store.rb: Test for above.
-
-Thu Jan 24 19:55:25 2013 Shota Fukumori <her@sorah.jp>
-
- * NEWS (yaml): Write about bundled libyaml.
-
-Thu Jan 24 16:54:34 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/calling_methods.rdoc: Added a Method Lookup section.
- * doc/syntax/refinements.rdoc (Method Lookup): Clarified that
- refinement methods are looked up in classes, not instances.
-
-Thu Jan 24 16:49:17 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * enum.c (enum_zip): Fix error message
-
- * array.c (take_items): Same, for Array#zip
-
-Thu Jan 24 16:47:26 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * enumerator.c (lazy_zip): raise error for bad arguments
- [Bug #7706]
-
-Thu Jan 24 16:05:08 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * enumerator.c: Optimize Lazy#zip when passed only arrays
- [Bug #7706]
-
-Thu Jan 24 15:21:17 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * enumerator.c: Fix state handling for Lazy#zip,{drop_take}{_while}
- [bug #7696] [bug #7691]
-
-Thu Jan 24 11:43:47 2013 Narihiro Nakamura <authornari@gmail.com>
-
- * eval.c (f_current_dirname): Add documentation about "__dir__
- returns always an absolute path". [Bug #7729]
-
-Thu Jan 24 10:28:30 2013 Eric Hodel <drbrain@segment7.net>
-
- * NEWS (RDoc): Added mention of page support and markdown support.
-
-Thu Jan 24 09:40:13 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/refinements.rdoc: Added refinements document based on
- the specification from the wiki.
- * doc/syntax.rdoc: Added link to refinements document.
-
-Wed Jan 23 16:29:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/win32.c (rb_w32_spawn, rb_w32_aspawn_flags): fix missing
- initialization. pointed out by phasis68 (Heesob Park) at
- [ruby-core:51579]. [Bug #7721]
-
-Wed Jan 23 16:18:04 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (MakeMakefile#try_constant): fix for large unsigned.
-
- * lib/mkmf.rb (MakeMakefile#try_constant): fix for larger constants.
-
- * test/mkmf/test_constant.rb: tests for try_constant.
- TODO: define check_constant and use it.
-
-Wed Jan 23 13:35:37 2013 Koichi Sasada <ko1@atdot.net>
-
- * thread_pthread.c (ruby_init_stack): ignore `STACK_END_ADDRESS'
- if Ruby interpreter is running on co-routine.
- [Feature #2294]
- https://bugs.ruby-lang.org/issues/2294#note-18
-
-Wed Jan 23 12:28:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/win32.c (rb_w32_spawn, rb_w32_aspawn_flags): check the results
- of acp_to_wstr() which can return NULL. [ruby-core:51557] [Bug #7721]
-
-Wed Jan 23 10:40:49 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/assignment.rdoc (Implicit Array Assignment): Clarify
- that "left-hand side" means "of the assignment". Suggested by Jorge
- Dias.
- * doc/syntax/assignment.rdoc (Multiple Assignment): ditto.
-
-Wed Jan 23 10:34:47 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/assignment.rdoc (Local Variables and Methods): Fixed
- example showing caching of a method's results into a local variable.
- Added not about using an explicit receiver to call a method that
- matches a local variable. Suggested by markov_twain on twitter.
-
-Wed Jan 23 10:20:08 2013 Eric Hodel <drbrain@segment7.net>
-
- * lib/README: Fixed typo. Patch by Pradeep Sahoo.
- Fixes #240 on github
-
-Wed Jan 23 09:53:39 2013 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/servlet.rb: Fixed display of site and home documentation.
- Fixes rdoc issue #170 by Thomas Leitner.
- * test/rdoc/test_rdoc_servlet.rb: Test for above.
-
- * lib/rdoc/code_object.rb: Split #initialize_visibility from
- #initialize for reuse when loading a stored object.
- Fixes rdoc issue #171 by Thomas Leitner.
-
- * lib/rdoc/any_method.rb: Initialize visibility for #display? For
- rdoc issue #171
- * lib/rdoc/attr.rb: ditto.
- * lib/rdoc/class_module.rb: ditto.
- * lib/rdoc/top_level.rb: ditto.
- * test/rdoc/test_rdoc_any_method.rb: Test for above.
- * test/rdoc/test_rdoc_attr.rb: ditto.
- * test/rdoc/test_rdoc_class_module.rb: ditto.
- * test/rdoc/test_rdoc_constant.rb: ditto.
- * test/rdoc/test_rdoc_top_level.rb: ditto.
-
-Wed Jan 23 06:43:26 2013 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/test_case.rb: Use Dir.tmpdir for rubygems tests instead
- of ./tmp/test. Fixes [ruby-trunk - Bug #7717]
-
-Tue Jan 22 22:58:03 2013 Akinori MUSHA <knu@iDaemons.org>
-
- * misc/ruby-electric.el (ruby-electric-curlies): Fix the bug where
- an open curly inserted in a string is always replaced with a
- hash sign.
-
-Mon Jan 21 15:41:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/mkconfig.rb: BASERUBY is transient at core build.
-
-Mon Jan 21 13:51:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb ($extmk): traverse parent directories for the case
- srcdir is a symlink.
-
-Sun Jan 20 23:55:37 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * marshal.c (w_object, r_object0): separate respond_to checks and
- calling, and get back to the old behavior for 2.0. [Bug #7564]
-
-Sun Jan 20 22:24:28 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/vpath.rb (VPath#def_options): hack for msys make, which
- converts a command line argument to non-msys command seems like a
- path list automagically. [Bug #7710] [ruby-core:51489]
-
-Sat Jan 19 11:35:00 2013 Zachary Scott <zachary@zacharyscott.net>
-
- * struct.c (Struct.new): Document Struct.new with block
- Patch by Hiroyuki Iwatsuki [Bug #7674]
-
-Sat Jan 19 09:52:46 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/miscellaneous.rdoc: Added section on defined?
-
-Sat Jan 19 09:27:31 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/assignment.rdoc (Local Variables and Methods): Made it
- more clear that local variables are created by the parser, not
- execution. Thanks to John Hawthorn.
-
-Sat Jan 19 09:15:58 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/assignment.rdoc: Improved links
- * doc/syntax/methods.rdoc: ditto.
-
- * doc/syntax.rdoc: Added link to assignment document
-
-Sat Jan 19 08:47:33 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/assignment.rdoc: Added a syntax document on assignment.
-
-Fri Jan 18 14:11:01 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/methods.rdoc: Added Array Decomposition.
-
-Fri Jan 18 12:54:21 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/rbinstall.rb (gem): Gem.ensure_gem_subdirectories makes
- subdirectories group-writable, so make them with $dir_mode.
-
-Fri Jan 18 11:24:33 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/win32ole/win32ole.c (ole_initialize): uninitialize OLE at thread
- ends. [Bug #2618] [ruby-core:27634]
-
- * ext/win32ole/win32ole.c (ole_initialize): initialize OLE for each
- threads. [Bug #2618] [ruby-core:27634]
-
-Thu Jan 17 22:10:35 2013 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rubygems/ext/builder.rb (Gem::Ext::Builder.make): Remove
- .time dependency from *.rb install target. It causes needless
- *.rb install. [Bug #7698] [ruby-core:51437]
- Reported by Tadashi Saito. Thanks!!!
- * test/rubygems/test_gem_installer.rb
- (TestGemInstaller#test_install_extension_and_script): Add a test
- for the above change.
-
-Thu Jan 17 21:08:20 2013 Kouhei Sutou <kou@cozmixng.org>
-
- * eval.c: Fix a typo in ruby_finalize() documentation.
-
-Thu Jan 17 20:28:18 2013 Benoit Daloze <eregontp@gmail.com>
-
- * object.c: Typo in Kernel#hash documentation.
- Patch by zed_0xff [Github Fixes #237]
-
-Thu Jan 17 10:48:56 2013 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/scalar_scanner.rb: use constants rather than
- calculating Inf and NaN.
-
-Thu Jan 17 10:21:05 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/miscellaneous.rdoc: Added Ending an Expression and
- indentation.
-
-Thu Jan 17 09:30:21 2013 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/installer.rb: Untaint string when checking output
- for $SAFE=1
-
- * lib/rubygems/specification.rb: Keep previously loaded specs as
- active. This prevents double loading when refreshing the gem list.
- * test/rubygems/test_gem.rb: Test for above
-
- * lib/rubygems.rb: Bump version to 2.0.0.rc.2
-
-Thu Jan 17 09:08:37 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/control_expressions.rdoc: Added ? : ternary if
-
-Thu Jan 17 08:36:04 2013 Eric Hodel <drbrain@segment7.net>
+Wed Jul 27 17:59:46 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * doc/syntax/miscellaneous.rdoc: Added documentation for alias, undef,
- BEGIN, END.
- * doc/syntax/modules_and_classes.rdoc (Constants): Fixed unwrapped
- paragraph with trailing whitespace.
- * doc/syntax/modules_and_classes.rdoc (Scope): Added section pointing
- to alias and undef documentation.
- * doc/syntax.rdoc: Added link to miscellaneous section.
-
-Thu Jan 17 07:50:26 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/control_expressions.rdoc (Flip-Flop): Added a section on
- the flip-flop.
-
-Thu Jan 17 06:59:51 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/control_expressions.rdoc (if Expressions): Fixed markup
- error. Fixes #235 on github by FlyingFoX.
-
-Thu Jan 17 06:53:58 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/literals.rdoc (Strings): Fixed typo. Fixes #236 on
- github by Doug Yun.
-
-Wed Jan 16 18:45:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/win32ole/lib/win32ole.rb: use TracePoint to hook all thread
- creation not only by Thread.new and to get rid of interference with
- svar scope. [Bug #7681] [ruby-core:51365]
-
-Wed Jan 16 09:35:53 2013 Eric Hodel <drbrain@segment7.net>
-
- * .document: Removed extra space
- * lib/irb/lc/.document: Hide help-message
- * lib/minitest/.document: Hide README.txt
- * lib/rake/lib/.document: Hide project.rake
- * lib/rdoc/generator/template/json_index/.document: Hide JavaScript
- files
- * lib/rubygems/ssl_certs/.document: Hide PEM files.
-
-Wed Jan 16 03:54:28 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/control_expressions.rdoc: Omit optional "then" for if and
- unless expressions. Improved description of "a if a = 0.zero?"
- NameError. Note that "do" for for loop is optional.
-
-Wed Jan 16 03:28:47 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/calling_methods.rdoc: Link to defining methods.
- * doc/syntax/methods.rdoc: Link to calling methods, fixed typo.
-
-Wed Jan 16 03:15:00 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/methods.rdoc: Fixed link
- * doc/syntax/modules_and_classes.rdoc: Fixed link
- * doc/syntax.rdoc: Updated with links to the recently added pages
-
-Wed Jan 16 03:05:50 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/control_expressions.rdoc (redo Statement): Added note
- about retry.
- * doc/syntax/exceptions.rdoc: Added retry statement
-
-Tue Jan 15 23:12:34 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/vpath.rb (VPath#list): default separator to PATH_SEPARATOR from
- configure.in for make, not same name constant of File for use in ruby.
-
-Tue Jan 15 22:30:04 2013 Keiju Ishitsuka <keiju@ishitsuka.com>
-
- * lib/irb/ext/save-history.rb: identify rightly a status of a
- history file that already exists [Bug #7694]. Thanks Nobuhiro IMAI
- for this patch.
-
-Tue Jan 15 15:55:28 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/control_expressions.rdoc: Added description of control
- expressions in ruby.
-
-Tue Jan 15 13:33:00 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/methods.rdoc (Method Names): Added method names including
- operator methods.
- * doc/syntax/methods.rdoc (Return Values): Added note that assignment
- methods ignore return values.
- * doc/syntax/precedence.rdoc: Added document describing precedence.
-
-Tue Jan 15 11:49:31 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/methods.rdoc (Block Argument): Added section on block
- argument. Thanks to Andy Lindeman.
-
-Tue Jan 15 10:54:59 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/calling_methods.rdoc (Arguments): Added improved
- introduction to arguments including passing style and lazy
- evaluation. Thanks to Matt Aimonetti.
- * doc/syntax/calling_methods.rdoc (Positional Arguments): Added
- description for sending a message to a method with *arguments
- * doc/syntax/calling_methods.rdoc (Default Positional Arguments):
- Added description. Thanks to Andy Lindeman.
- * doc/syntax/calling_methods.rdoc (Block Local Arguments):
- Added description of block locals. Thanks to Justin Collins.
- * doc/syntax/calling_methods.rdoc (Hash to Keyword Arguments): Added
- section describing ** operator. Thanks to Justin Collins.
-
-Tue Jan 15 10:40:18 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * test_lazy_enumerator: Test that map & flat_map also require a block
-
-Tue Jan 15 09:22:47 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (gvl_init): Reset gvl.wait_yield explicitly when
- fork()ing. Patch by Apollon Oikonomopoulos. Thanks!
- [Bug #7693][ruby-core:51424]
-
-Tue Jan 15 09:27:56 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/calling_methods.rdoc (Receiver): Added :: as pointed out
- by Tony Arcieri
- * doc/syntax/calling_methods.rdoc (Block Argument): Fixed { } block
- examples as pointed out by David Copeland.
-
-Tue Jan 15 09:10:29 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/methods.rdoc (Array/Hash Argument): Moved above Keyword
- Arguments
- * doc/syntax/methods.rdoc (Keyword Arguments): Described ** for
- gathering arbitrary keyword arguments.
-
-Tue Jan 15 08:56:37 2013 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/calling_methods.rdoc: Added document describing method
- calls.
-
-Tue Jan 15 07:39:21 2013 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/top_level.rb: Fixed extension trimming for page names in
- RDoc HTML output. [ruby-trunk - Bug #7673]
- * test/rdoc/test_rdoc_top_level.rb: Test for above.
-
-Mon Jan 14 23:06:41 2013 Keiju Ishitsuka <keiju@ishitsuka.com>
-
- * lib/irb/ext/save-history.rb: outputs its history to
- owner-only-readable file and change the permission of a file that
- already exists [Bug #7694]. Thanks Nobuhiro IMAI for bug reports.
-
-Mon Jan 14 17:12:48 2013 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c (lazy_flat_map_func): flat_map should call each only
- when the value of a block returns a forcable object.
- [ruby-core:51401] [Bug #7690]
-
- * enumerator.c (lazy_flat_map): add documentation.
-
- * test/ruby/test_lazy_enumerator.rb: related test.
-
-Mon Jan 14 16:42:28 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * enumerator.c: Require block for Lazy#{take|drop}_while [Bug #7692]
-
-Mon Jan 14 14:41:00 2013 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_to_s): use CRuby style.
-
-Mon Jan 14 14:39:00 2013 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c: use `RB_TYPE_P(x, t)` instead of
- `TYPE(x) == t`.
-
-Mon Jan 14 10:18:56 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * enumerator.c: Fix size for Enumerator::Lazy#flat_map
-
-Mon Jan 14 07:12:52 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * lib/matrix/lup_decomposition: Fix bugs with LUP Decomposition of
- rectangular matrices. [rubyspec:ba849801a85]
-
-Mon Jan 14 06:46:53 2013 NARUSE, Yui <naruse@ruby-lang.org>
-
- * regparse.c (add_ctype_to_cc): don't check dup warn on adding
- negative ctype to cclass. [Bug #7471] [ruby-core:50344]
-
-Mon Jan 14 06:06:03 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * lib/matrix/eigenvalue_decomposition: Backport bugfix of Jama 1.0.3
- [rubyspec:df87040be371]
-
-Sun Jan 13 16:45:00 2013 Zachary Scott <zachary@zacharyscott.net>
-
- * ext/psych/yaml/scanner.c: Fix typos, patch by James Dabbs
- [Github tenderlove/psych#118]
-
-Sun Jan 13 15:00:00 2013 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_sub):
- need to specify precision for converting Rational and Float.
- [ruby-dev:46544] [Bug #7404]
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_mult): ditto.
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_divide): ditto.
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_DoDivmod): ditto.
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_divremain): ditto.
-
- * test/bigdecimal/test_bigdecimal.rb: add tests for the above fixes.
-
-Sun Jan 13 14:48:55 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * lib/matrix/eigenvalue_decomposition: Fix eigensystem with complex
- eigenvectors. Patch by pypypy567.
- [Bug #7208] [ruby-dev:46251] [rubyspec:242f8e55bd]
-
- * lib/matrix/lup_decomposition.rb: Fix error for rectangular matrices
- [bug#7620] [ruby-core:51118] [rubyspec:41f833ee2]
-
-Sun Jan 13 14:06:00 2013 Zachary Scott <zachary@zacharyscott.net>
-
- * lib/irb.rb, lib/prime.rb: Typos in overview
- Patch by Ershad K [Github Fixes #234]
-
-Sun Jan 13 13:40:00 2013 Zachary Scott <zachary@zacharyscott.net>
-
- * lib/open3.rb : Typo in Open3 overview. Patch by zed_0xff
- [Github Fixes #233]
-
-Sat Jan 12 17:42:00 2013 Kenta Murata <mrkn@cookpad.com>
-
- * numeric.c (do_coerce): fix for the exceptions which the coerce
- method raises. The optimization done by r38756 is preserved.
- [Bug #7645] [ruby-core:51213]
-
-Sat Jan 12 16:12:46 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/setup.mak (-runtime-): see msvcrt from link header on mswin
- instead of running testing executable file, for cross compiling.
-
-Sat Jan 12 08:58:47 2013 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/to_ruby.rb: merge key values that
- contain something besides a hash should be left in tact.
-
- * test/psych/test_merge_keys.rb: test for change
-
-Sat Jan 12 07:52:47 2013 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c (ole_set_byref): support VT_UI8|VT_BYREF,
- VT_I8|VT_BYREF in cygwin and mingw.
-
- * ext/win32ole/win32ole.c (ole_variant2val): ditto.
-
- * test/win32ole/test_win32ole_variant.rb (test_s_new_with_i8_byref):
- ditto.
-
- * test/win32ole/test_win32ole_variant.rb (test_s_new_with_ui8_byref):
- ditto.
-
-Sat Jan 12 02:45:00 2013 Zachary Scott <zachary@zacharyscott.net>
-
- * man/ruby.1 (options): include --*-encoding from r38784
-
-Fri Jan 11 23:34:48 2013 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * ruby.c (usage): sort --*-encoding in help. (same order of -E)
-
-Fri Jan 11 16:56:29 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/mkconfig.rb: use configured libdir value to fix
- --enable-load-relative on systems where libdir is not default value,
- overridden in config.site files. [ruby-core:47267] [Bug #6903]
-
-Fri Jan 11 11:59:32 2013 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (dispose_string): use rb_str_free for freeing string in
- parse.y. by Sokolov Yura <funny.falcon@gmail.com>
- https://github.com/ruby/ruby/pull/87 fix GH-87
-
-Fri Jan 11 09:56:22 2013 Shugo Maeda <shugo@ruby-lang.org>
-
- * insns.def (defineclass): private constants should not be accessed
- by scoped module definitions. The bug was introduced in r38495.
-
- * test/ruby/test_module.rb: related test.
-
-Fri Jan 11 02:11:59 2013 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/rbconfig/obsolete.rb (respond_to_missing?): use send because
- RbConfig.respond_to_missing? is now private.
-
-Thu Jan 10 22:00:58 2013 Koichi Sasada <ko1@atdot.net>
-
- * vm_core.h (VM_DEBUG_BP_CHECK): set 0 as default.
- This flag specifies checking BP consistency on each frame popping.
- Now, we don't have any trouble on it, so I remove it.
- If you feel any bugs about VM execution, then set it to 1.
-
-Thu Jan 10 21:03:05 2013 TAKANO `takano32' Mitsuhiro <tak@no32.tk>
-
- * cont.c: define FIBER_USE_NATIVE as 0 in ia64.
-
-Thu Jan 10 19:39:05 2013 TAKANO `takano32' Mitsuhiro <tak@no32.tk>
-
- * thread.c: fix RB_GC_SAVE_MACHINE_REGISTER_STACK define for ia64.
-
-Thu Jan 10 17:45:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * Makefile.in, win32/Makefile.sub ($(MKFILES)): continue if Makefile
- unchanged.
-
-Thu Jan 10 16:31:20 2013 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_insnhelper.c (vm_search_super_method): raise a TypeError
- instead of a NotImplementedError if self is not an instance of the
- current class. [ruby-dev:39772] [Bug #2402]
-
-Thu Jan 10 16:47:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/tk/extconf.rb (find_tcltk_header): use have_header instead of
- try_cpp, which is incredibly slow with VC.
-
-Thu Jan 10 15:55:28 2013 Shugo Maeda <shugo@ruby-lang.org>
-
- * numeric.c (do_coerce): remove an unused variable.
-
-Thu Jan 10 15:35:55 2013 Shugo Maeda <shugo@ruby-lang.org>
-
- * tool/gen_dummy_probes.rb: remove comments in probes.d to fix the
- compilation error introduced by r38755.
-
-Thu Jan 10 11:15:04 2013 Kenta Murata <mrkn@cookpad.com>
-
- * numeric.c (do_coerce): speed optimization by using rb_check_funcall
- instead of rb_rescue + rb_funcall.
- This fix is based on the patch by Benoit Daloze.
- [Bug #7645] [ruby-core:51213]
-
-Thu Jan 10 11:15:04 2013 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * probes.d: updating probes to be more symmetrical, adding
- documentation.
-
- * load.c: ditto
-
-Thu Jan 10 04:23:07 2013 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/scalar_scanner.rb: strip trailing dots from
- floats so that Float() will not raise an exception.
-
- * test/psych/test_numeric.rb: test to ensure "1." can be loaded
-
- * test/psych/test_string.rb: make sure "1." can round trip
-
-Thu Jan 10 03:38:40 2013 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/yaml_tree.rb: ascii only binary strings
- will be dumped as unicode. Thanks Paul Kunysch!
-
- * test/psych/test_string.rb: appropriate test
-
-Thu Jan 10 03:29:55 2013 Koichi Sasada <ko1@atdot.net>
-
- * compile.c (compile_array_): modify wrong optimization.
- A script "[print(1)]; print(2)" should output "12".
- However, the compiler had eliminated "[print(1)]" expression
- because it is void expression (unused array).
- Of course, side-effect should be remained.
- This issue is reported by Masaya Tarui.
-
- * bootstraptest/test_literal.rb: add a test.
-
-Wed Jan 9 22:07:42 2013 Masaki Matsushita <glass.saga@gmail.com>
-
- * load.c (load_lock): if thread shield is destroyed and there is no
- waiting thread, insert new thread shield into load_table.
- [Bug #7530] [ruby-core:50645]
-
-Wed Jan 9 21:43:32 2013 Masaki Matsushita <glass.saga@gmail.com>
-
- * load.c (load_lock): revert r38744. it should acquire new thread
- shield.
-
-Wed Jan 9 15:40:18 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm.c (th_init, ruby_thread_init): initialize root_svar with Qnil,
- since lep_svar_place() expects uninitialized svar to be nil, not 0.
-
-Wed Jan 9 13:20:23 2013 Masaki Matsushita <glass.saga@gmail.com>
-
- * test/ruby/test_require.rb: improve test for r38744.
- fix to use Tempfile instead of temporary file in current directory.
- the patch is from nobu (Nobuyoshi Nakada).
-
-Wed Jan 9 09:53:23 2013 Masaki Matsushita <glass.saga@gmail.com>
-
- * load.c (load_lock): fix not to delete thread shield twice.
- it may break the shield locked by another thread.
- [Bug #7530] [ruby-core:50645]
-
- * test/ruby/test_require.rb: a test for above.
-
-Wed Jan 9 02:13:22 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/ruby.h (RBasic): to be aligned on a VALUE size
- boundary. [Bug #7647]
-
-Tue Jan 8 14:41:41 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_core.h (rb_iseq_t): move flip_cnt from struct iseq_compile_data,
- because it has same life span as enclosing iseq. [Bug #7671]
- [ruby-core:51296]
-
-Mon Jan 7 23:43:00 2013 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (rmpd_power_by_big_decimal):
- add RB_GC_GUARD to prevent the intermediate object is GCed too early.
- This patch was made by Yusuke Endoh. [Bug #7044] [ruby-core:47632]
-
- * test/bigdecimal/test_bigdecimal.rb: add a reproduction test for
- the issue [Bug #7044]
-
-Mon Jan 7 21:40:36 2013 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_method.c (Init_eval_method): main.public and main.private
- should be private.
-
- * proc.c (Init_Proc): main.define_method should be private.
-
- * test/ruby/test_module.rb: related test.
-
-Mon Jan 7 20:48:47 2013 Shugo Maeda <shugo@ruby-lang.org>
-
- * eval.c (Init_eval): main.include should be private.
- [ruby-core:51293] [Bug #7670]
-
- * test/ruby/test_module.rb (test_top_include_is_private): a new test
- for the above change.
-
-Mon Jan 7 20:29:50 2013 Shugo Maeda <shugo@ruby-lang.org>
-
- * NEWS: remove description about `require "refinement"'.
-
-Mon Jan 7 20:15:49 2013 Shugo Maeda <shugo@ruby-lang.org>
-
- * eval.c (Init_eval): enable Refinements by default.
- [ruby-core:51286] [Bug #7667]
-
- * eval.c (rb_mod_refine, top_using): show a warning when
- Module#refine or main.using is called at the first time.
-
- * ext/refinement/*: removed the extension library "refinement".
-
- * test/ruby/test_refinement.rb: fix for the above changes.
-
-Mon Jan 7 17:34:22 2013 Koichi Sasada <ko1@atdot.net>
-
- * include/ruby/ruby.h (RUBY_EVENT_SPECIFIED_LINE): make it special.
- This flag is not contained by RUBY_EVENT_TRACEPOINT_ALL.
- This event is experimental one. It is possible to remove/rename
- flag name after 2.0.1.
-
- * vm_trace.c (get_event_id): return :line if SPECIFIED_LINE was
- occurred. `:specified_line' never been returned.
-
-Mon Jan 7 15:42:10 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (f_kwrest): allow bare kwrest_mark as valid syntax. its
- semantics is still undefined. [Bug #7662] [ruby-core:51269]
-
-Mon Jan 7 15:31:58 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * include/ruby/missing.h: define __syscall if the platform has
+ __syscall in the library but doesn't define it in headers
+ for example Mac OS X.
- * parse.y (f_kwrest): reject duplicated kwrest argument name.
+Wed Jul 27 15:39:14 2011 Eric Hodel <drbrain@segment7.net>
-Mon Jan 7 15:24:10 2013 Koichi Sasada <ko1@atdot.net>
+ * object.c: Add usage documentation for BasicObject. Based on patch
+ by Thomas Sawyer. [Ruby 1.9 - Bug #5067]
- * vm_trace.c (rb_threadptr_exec_event_hooks_orig): pop tag before
- JUMP_TAG() if frame is `finish' frame.
- Without this patch, there is an inconsistency between control
- frame stack and tags stack.
- [Bug #7668]
+Wed Jul 27 12:24:17 2011 Eric Hodel <drbrain@segment7.net>
- * test/ruby/test_settracefunc.rb: add a test for above.
+ * lib/rubygems/uninstaller.rb: Add missing require and update
+ messaging to avoid confusion with uninstall --format-executable.
+ [Ruby 1.9 - Bug #4062]
-Mon Jan 7 15:21:48 2013 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Jul 27 10:47:57 2011 Eric Hodel <drbrain@segment7.net>
- * Makefile.in, common.mk (fake, yes-fake, no-make): these dependencies
- are not platform dependent.
+ * lib/rubygems: Update to RubyGems 1.8.6.1.
- * win32/Makefile.sub ($(arch)-fake.rb): workaround.
+Wed Jul 27 10:04:06 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Mon Jan 7 12:09:24 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * backport r32690 from trunk.
- * vm_insnhelper.c (vm_callee_setup_arg_complex, vm_yield_setup_block_args):
- set keyrest hash after making rest array, so that the last element
- will not be overwritten. [ruby-core:51278] [Bug #7665]
+ * test/openssl/test_pkcs12.rb: Add test and intermediate certificates.
+ [ Ruby 1.9 - Feature #3793 ] [ruby-core:32088]
-Mon Jan 7 09:37:24 2013 Koichi Sasada <ko1@atdot.net>
+Sat Jul 27 01:26:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * NEWS: add a NEWS entry about RubyVM.
+ * NEWS: add changes of bigdecimal and bigdecimal/util.
-Sun Jan 6 19:06:57 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+Wed Jul 27 01:13:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * win32/Makefile.sub: Fix build with VC.
- Patch by Charlie Savage. Fixes [ruby-core:51261]
+ * ext/bigdecimal/lib/bigdecimal/util.rb (Rational#to_d):
+ zero or negative precision is error. fixes #5098.
+ [ruby-dev:44210]
-Sun Jan 6 18:43:48 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+ * ext/bigdecimal/lib/bigdecimal/util.rb (Float#to_d): modified for
+ specifying precision. fixes #5098. [ruby-dev:44210]
- * bootstraptest/test_io.rb: add a test for [ruby-dev:46834].
+ * ext/bigdecimal/lib/bigdecimal/util.rb (Integer#to_d): added
+ for symmetry to BigDecimal() function with an Integer.
+ fixes #5098. [ruby-dev:44210]
- * io.c (rb_cloexec_fcntl_dupfd) Use an emulation with dup(2) when
- fcntl(2) and/or F_DUPFD is unavailable.
- Suggested by akr.
+ * ext/bigdecimal/lib/bigdecimal/util.rb (BigDecimal#to_d): added
+ for adapting other Numeric subclasses. [ruby-dev:44245]
- * configure.in (HAVE_FCNTL): NativeClient does not provide fcntl(2).
+ * test/bigdecimal/test_bigdecimal_util.rb: add tests for the above
+ changes.
-Sun Jan 6 11:11:26 2013 Eric Hodel <drbrain@segment7.net>
+Wed Jul 27 00:54:38 2011 Kenta Murata <mrkn@mrkn.jp>
- * doc/syntax/modules_and_classes.rdoc: Fixed typo.
+ * bigdecimal/bigdecimal.c (VpDup) a new function for duplicating
+ a BigDecimal.
-Sun Jan 6 05:35:18 2013 Eric Hodel <drbrain@segment7.net>
+ * bigdecimal/bigdecimal.c (BigDecimal_new): support generating a new
+ BigDecimal from another BigDecimal using BigDecimal global function
+ or constructor. [ruby-dev:44245]
- * doc/syntax/modules_and_classes.rdoc: Added singleton classes
- documentation.
+Mon Jul 25 22:24:09 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-Sun Jan 6 02:22:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * backport r32666 from trunk.
- * lib/webrick/httpservlet/abstract.rb (WEBrick::HTTPServlet): Typo in
- example. Patch by shlensky [Fixes #232 on github]
+ * lib/xmlrpc/client.rb: Fix possible HTTP header formatting failure by
+ 'Basic' header. Long username caused the base64 String truncation in
+ HTTP header which is not allowed. See #5046.
-Sat Jan 5 21:15:10 2013 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/xmlrpc/test_webrick_server.rb: test it.
- * lib/net/http/generic_request.rb:
- Amazon ECA API and GTE/1.3 disallow requests whose host has port
- number if its port number equals to default port number of the
- scheme. [Bug #7650]
+Mon Jul 25 15:36:07 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-Sat Jan 5 13:58:59 2013 Eric Hodel <drbrain@segment7.net>
+ * ext/openssl/lib/openssl/{x509.rb,ssl.rb}: Add deprecation warning
+ for openssl/{x509,ssl} usage. Users should require "openssl" instead
+ of "openssl/ssl" and "openssl/x509". Start of transition period
+ introduced by [ruby-dev:38018].
- * doc/syntax/modules_and_classes.rdoc: Improved description of methods
- on a module or class as suggested by Tobias Buhlmann
+Mon Jul 25 13:50:33 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-Sat Jan 5 13:38:07 2013 Masaki Matsushita <glass.saga@gmail.com>
+ * backport r32662 from trunk.
- * string.c (rb_str_enumerate_lines): fix invalid byte sequence error
- when a separator is passed. The patch is from yoshidam (Yoshida
- Masato).
- [Bug #7646] [ruby-dev:46827]
+ * ext/openssl/lib/openssl/x509.rb: Cosmetic change: move definition
+ introduced in r30152 to x509-internal.rb.
- * test/ruby/test_string.rb: a test for above.
+Mon Jul 25 13:35:20 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-Sat Jan 5 12:25:42 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * backport r32658 from trunk.
- * test/ruby/envutil.rb (Test::Unit::Assertions#assert_in_out_err):
- check stdout and stderr both.
+ * ext/openssl/ossl_ssl.c (ossl_ssl_shutdown): Avoid randomly generated
+ SSLError from SSLSocket just after invoking SSLSocket#close.
+ OpenSSL's SSL_shutdown could try to send alert packet and it might
+ set SSLerr(global error stack) as the result. It causes the next
+ SSL read/write operation to fail by unrelated reason.
-Sat Jan 5 10:21:54 2013 Eric Hodel <drbrain@segment7.net>
+ By design, we're ignoring any error at SSL_shutdown() so we clear
+ global error stack after SSL_shutdown is called. See #5039.
- * doc/syntax/modules_and_classes.rdoc: Added documentation of syntax
- for Modules and Classes.
- * doc/syntax/methods.rdoc: Moved some text to the Modules and
- Classes syntax document.
+Sun Jul 24 20:29:53 2011 Tanaka Akira <akr@fsij.org>
-Sat Jan 5 08:38:27 2013 Eric Hodel <drbrain@segment7.net>
+ * ext/socket/extconf.rb: refine the recvmsg test.
- * doc/syntax/methods.rdoc: Added return values and scope sections,
- slightly modified from the original patch. Fixes #227 from github by
- Dave Brown.
+Sun Jul 24 20:02:31 2011 Tanaka Akira <akr@fsij.org>
-Sat Jan 5 08:21:41 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/socket/extconf.rb: fix the recvmsg test.
- * io.c (rb_cloexec_fcntl_dupfd): improve #ifdef condition.
- * io.c (rb_maygvl_fd_fix_cloexec): ditto.
+Sun Jul 24 08:42:51 2011 Tanaka Akira <akr@fsij.org>
-Sat Jan 5 07:54:59 2013 Eric Hodel <drbrain@segment7.net>
+ * ext/socket/extconf.rb: test recvmsg allocates file descriptors for
+ fd passing even with MSG_PEEK.
- * lib/rubygems/commands/cleanup_command.rb: Clean all possible gems
- using multiple passes. Fixes RubyGems bug #422. Refactored for
- maintainability.
- * test/rubygems/test_gem_commands_cleanup_command.rb: Test for above.
+ * ext/socket/ancdata.c: use the above test result.
-Sat Jan 5 05:04:39 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Jul 24 01:24:31 2011 Eric Hodel <drbrain@segment7.net>
- * gc.c (vm_xrealloc): add a few comment why we avoid realloc(ptr,0).
+ * lib/rubygems/specification.rb: Restore behavior of
+ Gem::Specification#loaded. [Ruby 1.9 - Bug #5032]
-Fri Jan 4 20:17:06 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+Sun Jul 24 01:14:49 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * Makefile.in (RBCONFIG): Moved from common.mk in order to use the
- variable in Makefile.in.
+ * test/rake/test_rake_functional.rb (setup): Use __FILE__ for the base
+ directory. Current directory is not the top source directory when
+ the building process runs on other than there.
- * win32/Makefile.sub (RBCONFIG): Ditto.
+ * test/rake/test_rake_rake_test_loader.rb: ditto.
-Fri Jan 4 19:45:50 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+ * test/rake/test_rake_task_argument_parsing.rb
+ (test_terminal_width_using_hardcoded_80): hardcoded 80 is used
+ when app.unix? is false.
- * common.mk (run, parse): Use BTESTRUBY instead of MINIRUBY to handle
- cross-compiling cases, e.g. NativeClient.
+Sun Jul 24 00:42:00 2011 Kenta Murata <mrkn@mrkn.jp>
-Fri Jan 4 17:58:16 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+ * configure.in: change the default compiler to gcc-4.2 if target os
+ is OS X 10.7 (Lion).
- * common.mk (yes-btest): btest depends on also $(arch)-fake.rb and
- rbconfig.rb on building for NativeClient.
+Sat Jul 23 17:06:25 2011 Tanaka Akira <akr@fsij.org>
- * Makefile.in (fake): Avoid generating $(arch)-fake.rb unless cross
- compiling.
+ * io.c (rb_update_max_fd): validate fd.
- * configure.in (CROSS_COMPILING): New substitution.
+ * ext/socket/rubysocket.h (rsock_discard_cmsg_resource): add
+ msg_peek_p argument for the declaration.
-Fri Jan 4 16:26:45 2013 Eric Hodel <drbrain@segment7.net>
+ * ext/socket/ancdata.c (discard_cmsg): add msg_peek_p argument.
+ assume FreeBSD, NetBSD and MacOS X doesn't generate passed fd
+ when MSG_PEEK.
+ (rsock_discard_cmsg_resource): add msg_peek_p argument.
+ (bsock_recvmsg_internal): call rsock_discard_cmsg_resource with
+ msg_peek_p argument.
- * lib/rubygems/doctor.rb: Process directories in order in case the
- filesystem doesn't. [ruby-trunk - Bug #7618]
+ * ext/socket/unixsocket.c (unix_recv_io): call
+ rsock_discard_cmsg_resource with msg_peek_p argument.
- Process specifications before other directories in case of bugs.
- * test/rubygems/test_gem_doctor.rb: Test for above.
+Sat Jul 23 14:38:28 2011 Eric Hodel <drbrain@segment7.net>
- * lib/rubygems.rb: Updated version.
+ * test/rake*: Remove dependencies on flexmock and session gems.
+ [Ruby 1.9 - Bug #4987]
- * test/rubygems/test_require.rb: Fixed double require of
- benchmark.rb. RubyGems bug #420.
+Fri Jul 22 21:46:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/rubygems/test_gem_commands_check_command.rb: Fixed unused
- variable warnings.
- * test/rubygems/test_gem_commands_query_command.rb: ditto
- * test/rubygems/test_gem_installer.rb: ditto
+ * vm_insnhelper.c (vm_call_cfunc): added volatile for a workaround
+ of cfp consistency error problem on OS X 10.7 (Lion). It's
+ suspected llvm optimization bug.
+ [Bug #5076] [ruby-dev:44185]
-Fri Jan 4 15:05:25 2013 Eric Hodel <drbrain@segment7.net>
+Fri Jul 22 21:50:16 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/rdoc/cross_reference.rb: Fixed matching of C#=== or #===. RDoc
- bug #164
- * test/rdoc/test_rdoc_cross_reference.rb: Test for above.
+ * lib/uri/generic.rb (WFKV_): unroll the loop of regexp.
- * lib/rdoc/parser/changelog.rb: Fixed parsing of dates. RDoc bug #165
- * test/rdoc/test_rdoc_parser_changelog.rb: Test for above.
+ * lib/uri/generic.rb (URI.decode_www_form_component): ditto.
- * lib/rdoc/parser.rb: Fixed parsing multibyte files with incomplete
- characters at byte 1024. [ruby-trunk - Bug #6393]
- Fixed handling of -E. [ruby-trunk - Bug #6392]
- * test/rdoc/test_rdoc_options.rb: Test for above.
- * test/rdoc/test_rdoc_parser.rb: ditto.
- * test/rdoc/test_rdoc_parser_c.rb: ditto.
- * test/rdoc/test_rdoc_parser_changelog.rb: ditto.
- * test/rdoc/test_rdoc_parser_markdown.rb: ditto.
- * test/rdoc/test_rdoc_parser_rd.rb: ditto.
- * test/rdoc/test_rdoc_rdoc.rb: ditto.
+Fri Jul 22 21:49:48 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/rdoc/tom_doc.rb: Fixed parsing of [] in TomDoc arguments list.
- RDoc bug #167
- * test/rdoc/test_rdoc_tom_doc.rb: Test for above.
+ * enum.c (enum_inject): remove empty line to notify rdoc
+ Enumerable#reduce is alias. patched by milki@github.
+ https://github.com/ruby/ruby/pull/26
- * lib/rdoc.rb: Update version.
+Fri Jul 22 21:49:28 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Fri Jan 4 11:51:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#each):
+ Allow HTTP/0.9 request which doesn't has any header or body.
+ patched by Felix Jodoin. [ruby-core:38040] [Bug #5022]
- * lib/forwardable.rb: Fix rdoc parameters for ::def_single_delegator.
- Patch by Vladimir Andrijevik [Github Fixes #230]
+Fri Jul 22 21:45:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Fri Jan 4 00:35:11 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+ * ext/dl/handle.c (dlhandle_sym): clear previous error with dlerror()
+ before calling dlsym(). [ruby-dev:44091] [Bug #5021]
- Fix failures on btest for NativeClient.
- * bootstraptest/runner.rb (nacl?): New method to distinguish NaCl
- cross build.
+Fri Jul 22 19:05:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * bootstraptest/test_io.rb: Skip unsupported operations.
+ * parse.y (rb_enc_symname2_p): get rid of potential out-of-bound
+ access.
- * bootstraptest/test_literal.rb: ditto.
+Fri Jul 22 13:55:59 2011 Eric Hodel <drbrain@segment7.net>
-Fri Jan 4 00:29:40 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+ * lib/net/http.rb: Net::HTTP#finish is used to manually close
+ connections. [Ruby 1.9 - Bug #5045]
- * io.c (rb_cloexec_fcntl_dupfd): Fix failures in
- bootstrap_test/test_io.rb. NativeClient does not support F_DUPFD
- but supports dup2(2).
+Fri Jul 22 13:51:29 2011 Eric Hodel <drbrain@segment7.net>
-Thu Jan 3 17:46:50 2013 Kouhei Sutou <kou@cozmixng.org>
+ * ext/readline/readline.c: Add examples for Readline.completion_proc=.
+ [Ruby 1.9 - Bug #5057]
- * lib/rexml/element.rb (REXML::Elements#add): Remove too much
- "elements" in document. Sorry...
+Fri Jul 22 13:20:33 2011 Eric Hodel <drbrain@segment7.net>
-Thu Jan 3 17:42:32 2013 Kouhei Sutou <kou@cozmixng.org>
+ * tool/rbinstall.rb (default gems): Install executables into the fake
+ gem dir for Gem.bin_path. [Ruby 1.9 - Bug #4485]
- * lib/rexml/element.rb (REXML::Elements#each): Add missing
- "elements" in document. [ruby-talk:402713]
- Reported by Wesley Rishel. Thanks!!!
+Fri Jul 22 13:03:12 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Thu Jan 3 15:13:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * backport r32609 from trunk.
- * ext/psych/lib/psych.rb (Psych.load): Return value of
- Psych::SyntaxError.message should be same as example.
- Patch by Ippei Obayashi [ruby-core:51193] [Bug #7636]
+ * ext/openssl/ossl_hmac.c: Revert checking return type of
+ HMAC_Init_ex as it is not compatible with OpenSSL < 1.0.0.
-Thu Jan 3 14:58:00 2013 Zachary Scott <zachary@zacharyscott.net>
+Fri Jul 22 11:22:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * lib/forwardable.rb (SingleForwardable): Fix example in overview
- Patch by Vladimir Andrijevik [Github Fixes #231]
+ * backport r32606 from trunk.
-Thu Jan 3 14:32:47 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+ * ext/openssl/ossl_digest.c: Check return value of EVP_DigestInit_ex.
+ * ext/openssl/ossl_hmac.c: Check return value of HMAC_Init_ex.
+ Thanks, Jared Jennings, for the patch.
+ [ Ruby 1.9 - Bug #4944 ] [ruby-core:37670]
- * configure.in (OBJCOPY): Fixes build error for NativeClient.
- Avoid disabling OBJCOPY for NativeClient.
+Fri Jul 22 09:17:43 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * thread_pthread.c (rb_reserved_fd_p): USE_SLEEPY_TIMER_THREAD is
- always defined. Fixes compilation error for NativeClient.
+ * backport r32604 from trunk.
-Wed Jan 02 03:09:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * ext/openssl/ossl_engine.c: Avoid double free of ENGINE reference.
+ * test/openssl/test_engine.rb: Add a test for it.
+ Thanks to Ippei Obayashi for providing the patch.
+ [ Ruby 1.9 - Bug #5062 ] [ruby-dev:44173]
- * ext/zlib/zlib.c (Zlib::GzipReader): Fix typo by zed_0xff
- [Fixes Github #229]
+Fri Jul 22 06:39:34 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-Wed Jan 02 02:29:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * lib/csv.rb: Do not modify CSV.generate's argument [ruby-core:38356]
- * hash.c (rb_hash_update): Revert documentation from r38672
- See: https://github.com/ruby/ruby/pull/228#issuecomment-11791013
+Thu Jul 21 20:02:11 2011 Yusuke Endoh <mame@tsg.ne.jp>
-Wed Jan 02 02:16:00 2013 Zachary Scott <zachary@zacharyscott.net>
+ * thread.c (set_trace_func, thread_set_trace_func_m): reset tracing
+ state when set_trace_func hook is removed. This is workaround patch
+ to force to reset tracing state that is broken by continuation call.
+ a patch from James M. Lawrence. [Feature #4347] [ruby-core:34998]
- * hash.c (rb_hash_update): Documentation for Hash#merge and shallow
- copies Patch by Yorick Peterse [Fixes Github #228]
+ * test/ruby/test_continuation.rb (class TestContinuation): add a test
+ for above. a patch from James M. Lawrence.
-Mon Dec 31 15:10:00 2012 Zachary Scott <zachary@zacharyscott.net>
+Thu Jul 21 20:59:59 2011 Tanaka Akira <akr@fsij.org>
- * vm_backtrace.c: Add documentation for Kernel#caller_locations,
- Kernel#caller, and Thread::Backtrace::Location
+ * ext/socket/ancdata.c (discard_cmsg): workaround for MacOS X Lion.
-Mon Dec 31 13:05:00 2012 Zachary Scott <zachary@zacharyscott.net>
- * test/ruby/test_backtrace.rb: Add test for r37957 [Feature #7434]
+Thu Jul 21 07:07:57 2011 Tanaka Akira <akr@fsij.org>
-Sun Dec 30 23:33:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * backport r32579, r32581, r32587 by akr and r32588 by kazu.
- * parse.y (simple_re_meta): escaped closing parenthesis has different
- meaning. [Bug #7610] [ruby-core:51088]
+ r32579:
-Sun Dec 30 12:09:47 2012 Charlie Somerville <charlie@charliesomerville.com>
+ * io.c (rb_update_max_fd): new function.
- * configure.in: use 4 argument form of AC_CHECK_HEADERS to force
- autoconf to use compiler's result
+ * internal.h (rb_update_max_fd): declare rb_update_max_fd.
-Sun Dec 30 10:58:04 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+ * thread_pthread.c (rb_thread_create_timer_thread): update max fd when
+ timer thread pipe is created.
- * test/ruby/test_keyword.rb: add a test for passing hash
- as a last argument. [ruby-dev:46712] [Bug #7529]
+ r32581:
-Sun Dec 30 10:51:29 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+ * io.c (UPDATE_MAXFD): removed.
- * vm_insnhelper.c: set keyword hash on Proc/block calls.
- [ruby-core:51172] [Bug #7630]
+ r32587:
- * test/ruby/test_keyword.rb: add tests for above.
+ * include/ruby/intern.h (rb_update_max_fd): declaration moved from
+ internal.h.
-Sat Dec 29 21:57:11 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+ * file.c: ditto.
- * lib/irb/completion.rb: treat rightly completion for symbol on irb
- [Bug #7632].
+ * io.c: call rb_update_max_fd for each new fds.
-Sat Dec 29 21:51:30 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * process.c: ditto.
- * ext/curses/curses.c (window_cury, window_curx, window_maxy,
- window_maxx, window_begy, window_begx): use RB_UNUSED_VAR()
- to suppress unused-but-set-variable warnings.
+ * random.c: ditto.
-Sat Dec 29 16:45:00 2012 Zachary Scott <zachary@zacharyscott.net>
+ * ruby.c: ditto.
- * iseq.c (RubyVM::InstructionSequence): rdoc formatting
+ * ext/io/console/console.c: ditto.
-Sat Dec 29 15:28:00 2012 Zachary Scott <zachary@zacharyscott.net>
+ * ext/openssl/ossl_bio.c: ditto.
- * iseq.c (RubyVM::InstructionSequence): Add rdoc for new iseq features
- added from r38085, this includes ::of, #path, #absolute_path,
- #label, #base_label, #first_lineno, and #inspect
+ * ext/pty/pty.c: ditto.
-Sat Dec 29 14:06:00 2012 Zachary Scott <zachary@zacharyscott.net>
+ * ext/socket/init.c: ditto.
- * iseq.c (rb_iseq_line_trace_all, rb_iseq_line_trace_specify): Add
- rdoc for experimental C level api of iseq, from r38076
+ * ext/socket/socket.c: ditto.
-Sat Dec 29 11:37:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/socket/ancdata.c: ditto.
- * object.c (rb_obj_clone): attach clone to its singleton class during
- cloning singleton class so that singleton_method_added will be called
- on it. based on the patch by shiba (satoshi shiba)[Bug #5283] in
- [ruby-dev:44477]. [Bug #5283]
+ * ext/socket/unixsocket.c: ditto.
-Sat Dec 29 10:10:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ r32588:
- * configure.in (crt_externs.h): use standard macro AC_CHECK_HEADERS.
+ * io.c (rb_update_max_fd): remove parentheses. they are not in
+ macro.
-Fri Dec 28 23:12:44 2012 Charlie Somerville <charlie@charliesomerville.com>
+Sun Jul 17 08:07:31 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * configure.in: check for the whether crt_externs.h is present when compiling
- for darwin (this header is missing in the iOS SDK)
- * eval_intern.h: check HAVE_CRT_EXTERNS_H before including crt_externs.h, if
- not defined, include missing/crt_externs.h instead
- * hash.c: ditto
- * missing/setproctitle.c: ditto
- * missing/crt_externs.h: declare _NSGetEnviron() function and define environ
- for iOS
+ * backport r32563 from trunk
-Fri Dec 28 21:40:36 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+ * test/openssl/test_ssl_session.rb: add PEM SSL session without TLS
+ extensions. Use this as the default for the tests to ensure
+ compatibility with OpenSSL 0.9.7.
+ [ Ruby 1.9 - Bug #4961 ] [ruby-core:37726]
- * lib/irb/context.rb: IRB::Context#new: Check from JobManager
- inside IRB namespace [Bug #7628]. Thanks rafaelfranca for bug
- report and its patch.
+Sat Jul 16 17:29:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Dec 28 17:06:17 2012 Akinori MUSHA <knu@iDaemons.org>
+ * configure.in (RUBY_UNIVERSAL_ARCH): restore arch flag.
+ Bug #4977
- * misc/ruby-electric.el (ruby-electric-curlies): Automatically
- indent closing curly brackets when
- ruby-electric-newline-before-closing-bracket is true.
+Sat Jul 16 11:18:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Fri Dec 28 11:50:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * win32/setup.mak: support to build x64-mswin64 on Windows7 (and Vista,
+ perhaps).
+ backported r32521 from trunk
- * vm_insnhelper.c (vm_yield_setup_block_args): pass single argument to
- single optional parameter unchanged without splatting. [Bug #7621]
- [ruby-dev:46801]
+Sat Jul 16 06:31:23 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-Fri Dec 28 11:17:47 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * lib/uri/common.rb (module): Remove optional parser argument to
+ Kernel#URI
+ [ruby-core:38061]
- * proc.c (method_eq): fix the documentation to refer to owner.
- [ruby-core:51105] [Bug #7613]
+ * lib/uri/generic.rb (module): ditto
- * test/ruby/test_method.rb (test_alias_onwer): new test to confirm
- that `a == b' returns false if owners of a and b are different.
+Sat Jul 16 01:15:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Fri Dec 28 07:07:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * time.c (time_dup): used rb_obj_class() instead of CLASS_OF().
+ The patch is made by Kazuki Tsujimoto. [Bug #5012] [ruby-dev:44071]
- * def/id.def: use split(/^/) instead of String#lines to support
- Ruby 1.8.5 as BASERUBY.
+ * test/ruby/test_time.rb (TestTime#test_getlocal_dont_share_eigenclass):
+ added a new test for eigenclass of time object.
-Thu Dec 27 21:56:56 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Jul 15 19:11:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * variable.c (rb_mod_remove_const): fix segv caused by r38558.
+ * bignum.c (bigsub_int): add RB_GC_GUARD. This patch is made by
+ Makoto Kishimoto. fixes #4223 [ruby-dev:42907]
-Tue Dec 28 01:13:48 2012 James Edward Gray II <james@graysoftinc.com>
+ * bignum.c (bigadd_int): ditto.
- * lib/csv.rb: Added more Hash methods to CSV::Row.
+Fri Jul 15 09:59:12 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-Thu Dec 27 23:27:15 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+ * backport r32546 from trunk.
- * lib/irb/ruby-lex.rb: make lex_state to EXPR_END when next token
- is an operator after SYMBEG [Bug #6378].
+ * ext/digest/sha2/sha2.c (SHA256_Update, SHA512_Update): avoid Bus
+ Error caused by unalignment access on Sparc-Solaris (and possibly on
+ other similar environment.) This patch just do memcpy always instead
+ of checking architecture. I see no perf drop on my 64bit env. For
+ more details, see #4320.
-Thu Dec 27 21:30:21 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+ * test/digest/test_digest.rb: add test for unalignment access.
- * lib/irb/ruby-lex.rb: allow to handle recursive heredocs on
- irb[Bug #5648].
-Thu Dec 27 20:45:29 2012 Masaki Matsushita <glass.saga@gmail.com>
+Thu Jul 14 12:40:07 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
- * ext/stringio/stringio.c (strio_getline): fix not to raise TypeError
- when limit is nil.
- [Bug #7232] [ruby-core:48531]
+ * backport r32537 from trunk.
- * test/stringio/test_stringio.rb: a test for above.
+ * ext/openssl/ossl.c (ossl_verify_cb): trap the exception from
+ verify callback of SSLContext and X509Store and make the
+ verification fail normally. Raising exception directly from callback
+ causes orphan resources in OpenSSL stack. Patched by Ippei Obayashi.
+ See #4445.
-Thu Dec 27 21:08:23 2012 Charlie Somerville <charlie@charliesomerville.com>
+ * test/openssl/test_ssl.rb
+ (test_exception_in_verify_callback_is_ignored): test it.
- * vm_core.h (VM_DEFINECLASS_TYPE): explicit cast to enum type to avoid 64->32
- shorten warning
+Wed Jul 13 08:20:08 2011 Shota Fukumori <sorah@tubusu.net>
-Thu Dec 27 20:11:29 2012 Masaki Matsushita <glass.saga@gmail.com>
+ * lib/test/unit.rb(Test::Unit::Options#process_args): Fix bug.
+ Fix process_args didn't return `@option` after r30939. Backported
+ r32526 from trunk.
- * ext/stringio/stringio.c (strio_ungetc): raise IOError instead of RuntimeError
- if the string is frozen.
- [Bug #7231] [ruby-core:48530]
+Mon Jul 11 23:50:39 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
- * ext/stringio/stringio.c (strio_ungetbyte): ditto.
+ * time.c: can't compile time.c on AIX due to missing declaration for
+ ffs(). It is declared in strings.h on AIX. backported r32518 from
+ trunk.
- * test/stringio/test_stringio.rb: a test for above.
+Mon Jul 11 23:47:00 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
-Wed Dec 26 23:55:18 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+ * thread_pthread.c (get_stack): need to adjust stack addr for
+ [Bug #1813] on AIX. backported r32511 from trunk.
- * lib/irb/context.rb: fix IRB::Inspector#keys_with_inspector [Bug #7598]
+Mon Jul 11 15:17:03 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Wed Dec 26 23:26:15 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+ * numeric.c (rb_num2ull): use FIX2LONG instead of FIX2ULONG. see
+ rb_num2ulong(). fixed the problem of ObjectSpace._id2ref of IL32LLP64
+ platforms, introduced at r32433.
+ backported r32512 from trunk.
- * lib/irb/context.rb: IRB::Context#use_readline= has been obsolete
- [Bug #6339].
+Sun Jul 10 23:58:55 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-Wed Dec 26 21:32:46 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+ * version.h: 1.9.3 is no longer trunk.
- * lib/irb/context.rb: make a correct prompt from
- IRB.conf[:IRB_NAME] on irb [Bug #6338]. Patched by sho-h.
+Sun Jul 10 23:24:29 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-Wed Dec 26 21:09:19 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+ * class.c (rb_mix_module): reverted r31873.
+ (check_mix_method_i, do_mix_method_i) reverted r31917.
- * lib/irb/ext/math-mode.rb: make not able to change math-mode
- after irb starting [Bug #6302]. Patched by sho-h.
+ * test/ruby/test_module.rb (TestModule#test_mix_const): reverted
+ r31918.
-Wed Dec 26 12:52:36 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+Sun Jul 10 22:50:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * lib/irb/init.rb: change default debug level for
- irb[ruby-dev:46805], [Bug #6301].
+ * ext/bigdecimal/bigdecimal.c (rmpd_power_by_big_decimal): fix
+ precision treatment errors.
-Wed Dec 26 11:54:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/bigdecimal/test_bigdecimal.rb: add tests for the above change.
+ fix precision treatment errors.
- * configure.in: enable -fPIE when checking -pie for fixing
- OpenBSD build error. Patch by George Koehler. Thank you!
- [Bug #7606] [ruby-core:51082]
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power): precision argument
+ should be optional for its compatibility.
-Wed Dec 26 07:31:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Jul 10 22:38:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * string.c (rb_enc_cr_str_copy_for_substr): empty string is always
- valid or 7bit.
+ * parse.y (var_ref): distinguish vcall from local variable
+ references. based on a patch by Michael Edgar michael.j.edgar
+ AT dartmouth.edu. Bug #5002
- * string.c (rb_str_enumerate_lines, rb_str_chop): reduce duplicated
- code.
+Sun Jul 10 21:51:29 2011 Koichi Sasada <ko1@atdot.net>
- * string.c (rb_str_enumerate_chars): prevent shared copy from GC.
+ * internal.h: add comments (cautions).
-Wed Dec 26 01:31:16 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+Sun Jul 10 20:59:38 2011 Shota Fukumori <sorah@tubusu.net>
- * lib/irb/init.rb, lib/irb/context.rb: fix conf.debug_level=
- [Bug #6301] and fix irb command option: -- irb_debug_level for irb.
+ * lib/test/unit.rb: Add new class variable `@@testfile_prefix`.
+ This is for changing test name prefix. (For testing)
-Wed Dec 26 00:59:18 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+ * test/testunit/tests_for_parallel/ptest_first.rb: Renamed from
+ test_first.rb
- * lib/irb/ruby-lex.rb: improve RubyLex performance for large files
- [Bug #5202]. Patch by ryanmelt.
+ * test/testunit/tests_for_parallel/ptest_second.rb: Renamed from
+ test_second.rb
-Tue Dec 25 22:21:06 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+ * test/testunit/tests_for_parallel/ptest_third.rb: Renamed from
+ test_third.rb
- * lib/irb/output-method.rb: raise right exception when
- IRB::OutputMethod#print don't defined [Bug #6657].
+ * test/testunit/tests_for_parallel/ptest_forth.rb: Renamed from
+ test_forth.rb
-Tue Dec 25 22:06:33 2012 Koichi Sasada <ko1@atdot.net>
+ * test/testunit/tests_for_parallel/runner.rb: Remove misc.rb
- * vm_trace.c (rb_threadptr_exec_event_hooks_and_pop_frame):
- pop a frame before JUMP_TAG() if exception occurred.
- This change fix bug of Ruby 1.9.
- [ruby-core:51128] [ruby-trunk - Bug #7624]
+ * test/testunit/tests_for_parallel/ptest_first.rb: ditto.
- * vm_core.h (EXEC_EVENT_HOOK_AND_POP_FRAME): add to use
- `rb_threadptr_exec_event_hooks_and_pop_frame()'.
+ * test/testunit/tests_for_parallel/ptest_second.rb: ditto.
- * vm.c (vm_exec): use EXEC_EVENT_HOOK_AND_POP_FRAME() while
- exception handling. While exception handling, if an exception
- is raised in hooks, need to pop current frame and raise this
- raised exception by hook.
+ * test/testunit/tests_for_parallel/ptest_third.rb: ditto.
- * test/ruby/test_settracefunc.rb: add a test.
+ * test/testunit/tests_for_parallel/ptest_forth.rb: ditto.
-Tue Dec 25 21:08:53 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+ * test/testunit/tests_for_parallel/misc.rb: Removed because no longer
+ needed.
- * lib/irb/init.rb, lib/irb/lc/ja/error.rb, lib/irb/lc/error.rb:
- raise exception when illegal RC_NAME_GENERATOR defined [Bug #6455].
+ * test/testunit/test_parallel.rb: Fix assertions for above.
-Tue Dec 25 19:22:17 2012 Keiju Ishitsuka <keiju@ishitsuka.com>
+Sun Jul 10 16:57:08 2011 Koichi Sasada <ko1@atdot.net>
- * lib/irb/workspace.rb: define method to private on top-level irb
- [Bug #5776]. Patch by davidbalbert.
+ * vm_insnhelper.c (vm_throw): check a class frame.
+ Fixes Bug #4648.
+ The patch is contributed by Kazuki Tsujimoto.
-Tue Dec 25 19:09:51 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * bootstraptest/test_proc.rb: add tests for above.
- * bignum.c, include/ruby/intern.h (rb_big_eql): exported.
+Sun Jul 10 17:28:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * thread.c (recursive_check): object_id maybe a Bignum, not Fixnum on
- LLP64. see also r38493 and r38548.
- reported by Heesob Park at [ruby-core:51083] [Bug #7607], and patched
- by shirosaki at [ruby-core:51095]
+ * thread_pthread.c (mutex_debug): use exit(EXIT_FAILURE) instad of
+ exit(1).
+ * thread_pthread.c (add_signal_thread_list): ditto.
+ * thread.c (rb_thread_call_with_gvl): ditto.
+ * util.c (Bug): ditto.
-Tue Dec 25 18:53:35 2012 Koichi Sasada <ko1@atdot.net>
+Sun Jul 10 15:58:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * vm_core.h, eval_intern.h (CHECK_STACK_OVERFLOW): move
- CHECK_STACK_OVERFLOW() to vm_core.h and rename to
- CHECK_VM_STACK_OVERFLOW().
- This change is only move and rename.
+ * ext/json: Merge json gem 1.5.4+ (f7f78896607b6f6226cd).
+ [Bug #4700]
- * tool/instruction.rb: catch up above changes.
+Sun Jul 10 16:41:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * vm.c, vm_insnhelper.c: ditto.
+ * vm_core.h (typedef struct rb_vm_struct): create a new
+ 'inhibit_thread_creation' field.
+ * thread.c (rb_thread_terminate_all): set inhibit_thread_creation.
+ * thread.c (thread_s_new): don't permit to create new thread
+ if the VM is under destruction. Otherwise evil finalizer code
+ can make SEGV. [Bug #4992][ruby-core:37858]
- * vm_insnhelper.c (vm_stackoverflow): add a function to unify
- raising vm stackoverflow exception.
+ * bootstraptest/test_objectspace.rb: new test for this fix.
-Tue Dec 25 16:16:54 2012 Koichi Sasada <ko1@atdot.net>
+Sun Jul 10 16:06:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * vm_core.h (RUBY_VM_THREAD_VM_STACK_SIZE): change default
- VM stack size (128 KB or 256 KB -> 512 KB or 1024 KB).
- This re-sizing corrects smaller value introduced at r38478.
- Newer value is same VM stack size of Ruby 1.9.
- [ruby-dev:46797] [ruby-trunk - Bug #7603]
+ * signal.c (sigsegv): use abort() instead of exit() when nested
+ SEGV was happen. Because unnested SEGV use abort().
+ [Bug #5013][ruby-dev:44078]
-Tue Dec 25 13:38:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Jul 10 15:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * error.c (compile_err_append, compile_warn_print, warn_print): use
- rb_write_error_str() instead of writing to rb_stderr directly.
+ * load.c (rb_f_autoload): prevent to autoload for singleton
+ classes. fixes [Bug #4886] [ruby-dev:43816]
- * io.c (rb_write_error_str): a stopgap measure not to unblock GVL.
- warning from require seems to still have race condition errors.
+ * bootstraptest/test_autoload.rb: add tests for the above change.
-Tue Dec 25 00:59:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Jul 10 15:09:17 2011 Shota Fukumori <sorah@tubusu.net>
- * node.h (NODE_OP_CDECL), compile.c (iseq_compile_each),
- parse.y (stmt, arg): allow scoped constant op-assignment.
- [ruby-core:40154] [Bug #5449]
+ * lib/test/unit/assertions.rb: Import documentation patch by Justin
+ Collins. [ruby-core:37225] [Feature #4903]
-Mon Dec 24 04:56:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sun Jul 10 14:57:36 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * lib/net/http/generic_request.rb (Net::HTTPGenericRequest):
- set content-length to zero on empty post requests
- by Gregory Ostermayr <gregory.ostermayr@gmail.com>
- https://github.com/ruby/ruby/pull/201 fix GH-201
+ * ext/date/date_core.c: canonicalizes nth and sf.
-Sun Dec 23 19:09:16 2012 Koichi Sasada <ko1@atdot.net>
+Sun Jul 10 14:13:50 2011 Koichi Sasada <ko1@atdot.net>
- * thread.c: rename methods:
- from Thread.async_interrupt_timing to Thread.handle_interrupt,
- from Thread.async_interrupted? to Thread.pending_interrupt?.
- Also rename option from `defer' to `never'.
- [ruby-core:51074] [ruby-trunk - Feature #6762]
+ * internal.h (rb_thread_call_with_gvl, rb_thread_call_without_gvl):
+ make them visible as experimental C APIs. fixes Feature #4328.
- * vm_core.c, thread.c: rename functions and data structure
- `async_errinfo' to `pending_interrupt'.
+Sun Jul 10 12:18:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * thread.c: add global variables sym_immediate, sym_on_blocking and
- sym_never.
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power): support non-integral
+ exponent. fixes [Bug #3271]
- * cont.c, process.c, vm.c, signal.c: ditto.
+ * ext/bigdecimal/bigdecimal.c (rmpd_power_by_big_decimal): ditto.
- * lib/sync.rb, lib/thread.rb: catch up this renaming.
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_power_op): add a function to
+ only use for "**" operator.
- * test/ruby/test_thread.rb: ditto.
+ * test/bigdecimal/test_bigdecimal.rb: add a bunch of tests for the
+ above changes.
-Sun Dec 23 17:57:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/bigdecimal/bigdecimal.c (is_integer): add an utility function.
- * lib/profiler.rb (Profiler__::PROFILE_PROC, print_profile): store
- profile data per threads for concurrent-execution.
- [ruby-core:22046] [Bug #1152]
+ * ext/bigdecimal/bigdecimal.c (is_negative): ditto.
- * lib/profiler.rb (Profiler__::Wrapper): support calling singleton
- methods of an instance of BasicObject.
+ * ext/bigdecimal/bigdecimal.c (is_positive): ditto.
- * lib/profiler.rb (Profiler__::PROFILE_PROC): use TracePoint.
+ * ext/bigdecimal/bigdecimal.c (is_zero): ditto.
-Sun Dec 23 16:13:00 2012 Zachary Scott <zachary@zacharyscott.net>
+ * ext/bigdecimal/bigdecimal.c (is_one): ditto.
- * lib/erb.rb: typos for ERB::new link
+ * ext/bigdecimal/bigdecimal.c (is_even): ditto.
-Sun Dec 23 16:06:00 2012 Zachary Scott <zachary@zacharyscott.net>
+Sun Jul 10 12:08:39 2011 Yusuke Endoh <mame@tsg.ne.jp>
- * lib/erb.rb: Document ERB::new trim_mode '-' for lines ending in -%>
- [ruby-core:51084] [Bug #7608]
+ * compile.c (when_vals): when a string literal is written on when
+ clause, skip string creation to make it faster. [ruby-dev:44068]
+ [Feature #5000]
-Sun Dec 23 15:25:00 2012 Zachary Scott <zachary@zacharyscott.net>
+Sun Jul 10 11:35:29 2011 Yusuke Endoh <mame@tsg.ne.jp>
- * lib/irb/ruby-lex.rb: Add handling for %i and %I quoting to irb
- Patch by flori [ruby-core:49550] [Bug #7392] [Github Issue #157]
+ * parse.y (reduce_nodes_gen): NODE_RETURN in rescue body must not be
+ reduced when there is an else clause. This caused bizarre behavior
+ in [Bug #4473] [ruby-core:35629] [ruby-core:37884].
-Sun Dec 23 15:05:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Jul 10 09:46:14 2011 Masaya Tarui <tarui@ruby-lnag.org>
- * vm_eval.c (rb_check_funcall_with_hook): rb_check_funcall with hook
- which is called before calling method_missing or target method.
+ * range.c (range_max): fix behavior with excluded end value.
+ [Bug #4591]
- * marshal.c (w_object, r_object0): use rb_check_funcall_with_hook
- instead of respond_to? and call.
+Sun Jul 10 09:13:18 2011 Eric Hodel <drbrain@segment7.net>
-Sun Dec 23 14:52:00 2012 Zachary Scott <zachary@zacharyscott.net>
+ * NEWS: Fix RubyGems version. [Ruby 1.9 - Bug #5004]
- * re.c (rb_reg_eqq): doc: #=== is not a synonym for #=~, added example
- [ruby-dev:46746] [Bug #7571]
+Sat Jul 9 20:01:59 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Sun Dec 23 14:35:13 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * internal.h: rb_rational_reciprocal is defined in rational.c.
- * thread.c (BLOCKING_REGION): if fail_if_interrupted is false ignore
- the result of blocking_region_begin(), since it always is true in
- that case. suppress "uninitialized" warnings.
+Sat Jul 9 19:48:31 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Sun Dec 23 09:34:07 2012 Eric Hodel <drbrain@segment7.net>
+ * internal.h: added declarations.
+ * complex.c: followed the above change.
- * lib/rubygems/commands/check_command.rb: Added --doctor and --dry-run
- options to clean up after failed uninstallation.
- * test/rubygems/test_gem_commands_check_command.rb: Test for above.
+Sat Jul 9 17:24:41 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * lib/rubygems/commands/push_command.rb: Allow pushes from RubyGems
- 2.0.0.preview3
+ * NEWS: bigdecimal is not a builtin.
- * lib/rubygems/commands/update_command.rb: Use Gem.ruby_version
+Sat Jul 9 17:17:53 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * lib/rubygems/dependency.rb: Update style.
+ * ext/date/date_core.c: some improvements for performance.
- * lib/rubygems/installer.rb: Ensure installed gem specifications will
- be useable. Refactor.
- * test/rubygems/test_gem_installer.rb: ditto.
+Sat Jul 9 16:56:01 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rubygems/validator.rb: Fixed bug with unreadable files.
+ * atomic.h (ATOMIC_OR): _InterlockedOr is unavailable in VC6.
- * lib/rubygems.rb: Fixed broken methods.
- * test/rubygems/test_gem.rb: Test for above.
+ * numeric.c (ULLONG_MAX): fallback definition.
- * test/rubygems/test_gem_commands_push_command.rb: Fixed overridden
- Gem.latest_rubygems_version
+Sat Jul 9 15:59:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Dec 23 01:52:01 2012 Akinori MUSHA <knu@iDaemons.org>
+ * win32/win32.c (rb_w32_{read,write}): should be signed.
+ Bug #5001
- * io.c (rb_io_lines, rb_io_bytes, rb_io_chars, rb_io_codepoints):
- Deprecate IO#{lines,bytes,chars,codepoints} and those of ARGF.
- [Feature #6670]
+Sat Jul 9 14:02:20 2011 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
- * ext/stringio/stringio.c (strio_lines, strio_bytes, strio_chars)
- (strio_codepoints): Deprecate
- StringIO#{lines,bytes,chars,codepoints}. [Feature #6670]
+ * lib/cgi/core.rb: fix multipart form parsing bug. [Bug #3866]
- * ext/zlib/zlib.c (rb_gzreader_lines, rb_gzreader_bytes):
- Deprecate Zlib::GzipReader#{lines,bytes}. [Feature #6670]
+Sat Jul 9 11:41:03 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-Sat Dec 23 01:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
+ * lib/matrix.rb: Add Vector#normalize [ruby-dev:43829]
- * lib/optparse.rb: Documentation for OptionParser to remove 'shadowed
- outer local variable' from example and make obvious ARGV with
- non-option arguments.
- Patch by Marcus Stollsteimer [ruby-core:47460] [Bug #6997]
+Sat Jul 9 09:25:06 2011 Eric Hodel <drbrain@segment7.net>
-Sat Dec 23 00:08:00 2012 Kenta Murata <mrkn@mrkn.jp>
+ * enumerator.c: Remove "enumeration sequenced by".
+ [Ruby 1.9 - Bug #4757]
- * include/ruby/intern.h: add the prototype declaration of
- rb_num_coerce_bit.
+Sat Jul 9 09:14:56 2011 Eric Hodel <drbrain@segment7.net>
- * numeric.c (rb_num_coerce_bit): the new coerce function for bitwise
- binary operation.
+ * io.c: Note that methods other than IO#gets may increase IO#lineno.
+ [Ruby 1.9 - Bug #4902]
- * bignum.c (rb_big_and): use coerce to convert the argument, which isn't
- a Fixnum nor a Bignum, to the corresponding Integer object so that
- bitwise operations can support Integer-mimic objects.
- [Bug #1792] [ruby-core:39491]
+Sat Jul 9 08:39:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * bignum.c (rb_big_or): ditto.
+ * common.mk (RUN_OPT): disable gems.
- * bignum.c (rb_big_xor): ditto.
+Sat Jul 9 08:37:05 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * numeric.c (bit_coerce): ditto.
+ * io.c (rb_io_close): close(2) on a fd which is being read by
+ another thread causes deadlock on Mac OS X 10.5
- * numeric.c (fix_and): ditto.
+Fri Jul 8 21:20:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * numeric.c (fix_or): ditto.
+ * addr2line.c: use USE_ELF instead of __ELF__ because Solaris
+ doesn't define it. USE_ELF is already provided by configure.
+ patched by Naohisa Goto. [ruby-dev:44066] [Bug #4998]
- * numeric.c (fix_xor): ditto.
+ * addr2line.h: ditto.
- * test/ruby/test_integer.rb: add tests for the above changes.
+ * vm_dump.c: ditto.
- * test/ruby/test_bignum.rb: ditto.
+Fri Jul 8 16:40:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Dec 23 00:04:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/json/parser/parser.rl (convert_encoding): should not modify
+ the argument.
- * internal.h (QUOTE, QUOTE_ID): quote unprintable chars in strings and
- IDs. [Bug #7574] [ruby-dev:46749]
+ * ext/json/parser/parser.rl (convert_encoding): no needs to use
+ force_encoding.
- * string.c (rb_str_quote_unprintable): ditto.
+Fri Jul 8 15:53:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Dec 22 23:59:18 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * error.c (rb_bug): get rid of segfault after all threads
+ disposed.
- * error.c (rb_compile_error, rb_compile_warn, rb_compile_warning),
- (rb_warn, rb_warning): support PRIsVALUE.
+Fri Jul 8 15:01:06 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Sat Dec 22 22:04:58 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * ext/openssl/ossl.h: include openssl/e_os2.h before checking the
+ definition of OPENSSL_SYS_WIN32.
- * cont.c (rb_fiber_start): unify conditions.
+Fri Jul 8 14:40:39 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Sat Dec 22 21:47:55 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * win32/win32.c (wunlink): reverted a part of r32426. it was mistakenly
+ mixed.
- * io.c (rb_io_wait_writable): use rb_thread_check_ints() instead
- of rb_thread_fd_writable().
- * io.c (rb_io_wait_readable): ditto.
+Fri Jul 8 14:29:47 2011 Narihiro Nakamura <authornari@gmail.com>
-Sat Dec 22 20:31:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in: can't subtract void *.
- * object.c (rb_mod_const_get): symbol cannot be nested constant name.
+Fri Jul 8 14:33:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Sat Dec 22 19:26:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * win32/Makefile.sub (config.h): define GC_MARK_STACKFRAME_WORD.
+ fixed build problem of r32438. the value (30) is temporary value.
+ maybe it's enough by 20~24 according to my observation.
- * object.c (rb_mod_const_get): check more strictly. [ruby-dev:46748]
- [Bug #7573]
+Fri Jul 8 13:47:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Dec 19 02:34:48 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * thread.c (rb_mutex_unlock_all): folded into
+ rb_threadptr_unlock_all_locking_mutexes.
+ * thread.c (rb_threadptr_unlock_all_locking_mutexes) ditto.
- * cont.c (rb_fiber_start): in case of jump with TAG_FATAL,
- enqueue error into async_errinfo_queue, because you cannot call
- TH_TAG_JUMP() in this function. [ruby-dev:45218] [Bug #5993]
+Fri Jul 8 13:36:02 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * thread.c (rb_threadptr_execute_interrupts): now INT2FIX(TAG_FATAL)
- can be popped from async_errinfo_queue.
+ * thread.c (thread_unlock_all_locking_mutexes): rename to
+ rb_threadptr_unlock_all_locking_mutexes and remove static.
+ * vm_core.h: add rb_threadptr_unlock_all_locking_mutexes declaration.
+ * thread.c (thread_start_func_2): adjust the above rename.
- * vm.c (rb_vm_make_jump_tag_but_local_jump): revert r38441.
- rb_vm_make_jump_tag_but_local_jump() shouldn't return exception
- in case of state == TAG_FATAL.
+ * eval.c (ruby_cleanup): call rb_threadptr_unlock_all_locking_mutexes
+ again after finalizer. [Bug #4988] [ruby-dev:44049]
- * test/ruby/test_fiber.rb (test_exit_in_fiber): fix a test to illuminate
- Thread.exit should terminate current Thread.
+Fri Jul 8 13:06:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sat Dec 22 13:15:08 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * cont.c (FIBER_MACHINE_STACK_ALLOCATION_SIZE): Fiber stack size
+ don't need to keep multiple number of sizeof(VALUE).
- * gc.c (obj_id_to_ref): add a macro to treat Bignum object id.
- This follows the change r38493.
+Fri Jul 8 11:39:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * gc.c (id2ref): fix for working fine with Bignum object id on x64
+ * common.mk (sudo-precheck): true command is not standard on
Windows.
- * gc.c (wmap_finalize): ditto.
-
-Sat Dec 22 11:30:21 2012 Masaki Matsushita <glass.saga@gmail.com>
-
- * struct.c (make_struct): remove junk ID check to allow members who
- have junk name like "foo\000".
- * test/ruby/test_struct.rb: Test for above.
- [Bug #7575] [ruby-dev:46750]
-
-Sat Dec 22 05:34:54 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/net/http.rb: Requests may be created with a URI which sets the
- Host header. Responses contain the requested URI for easier redirect
- following. [ruby-trunk - Feature #6482]
- * lib/net/http/generic_request.rb: ditto.
- * lib/net/http/response.rb: ditto.
- * NEWS (net/http): Updated for above.
- * test/net/http/test_http.rb: Tests for above.
- * test/net/http/test_http.rb: ditto.
- * test/net/http/test_httpresponse.rb: ditto.
-
-Sat Dec 22 02:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * lib/irb/slex.rb(#match): Typo, should be D_DETAIL
- [ruby-core:51071] [Bug#7600]
-
-Sat Dec 22 02:29:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * lib/irb/input-method.rb, lib/irb.rb: Typo in
- InputMethod#readable_atfer_eof? to #readable_after_eof?
- [ruby-core:51069] [Bug #7599]
-
-Sat Dec 22 02:19:38 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * vm_dump.c (rb_vm_bugreport): revert r38533.
- * addr2line.c (fill_lines): add ELF sanity check.
- [Bug #7597] [ruby-dev:46786]
-
-Sat Dec 22 02:05:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * lib/irb/inspector.rb, lib/irb/context.rb: Move IRB::INSPECTORS and
- class methods to IRB::Inspector [ruby-core:51067][Bug #7598]
-
-Sat Dec 22 00:28:46 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * object.c (rb_obj_hash): shouldn't assume object_id can be long.
- based on a patch by Heesob Park at [ruby-core:51060].
- cf. [Backport #7454]
-
-Fri Dec 21 23:15:25 2012 Kouhei Sutou <kou@cozmixng.org>
-
- * ext/fiddle/lib/fiddle/struct.rb (Fiddle::CStructEntity#set_ctypes):
- CPtr -> Pointer.
- * test/fiddle/test_c_struct_entry.rb
- (Fiddle::TestCStructEntity#test_aref_pointer):
- Added the test for the above.
-
-Fri Dec 21 23:12:05 2012 Kouhei Sutou <kou@cozmixng.org>
-
- * ext/fiddle/lib/fiddle/struct.rb (Fiddle::CStructEntity#set_ctypes):
- CPtr -> Pointer.
- * test/fiddle/test_c_struct_entry.rb
- (Fiddle::TestCStructEntity#test_aref_pointer_array):
- Added the test for the above.
-
-Fri Dec 21 22:43:36 2012 Kouhei Sutou <kou@cozmixng.org>
-
- * ext/fiddle/lib/fiddle/import.rb (Fiddle::Importer#sizeof):
- CPtr -> Pointer.
- * test/fiddle/test_import.rb (Fiddle::TestImport#test_sizeof):
- Added the test for the above.
-
-Fri Dec 21 22:34:17 2012 Koichi Sasada <ko1@atdot.net>
-
- * test/ruby/test_iseq.rb: disable a test which checks features
- removed at r38532.
-
-Fri Dec 21 22:02:00 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/{dir.h,win32.c} (rb_w32_readdir): removed old rb_w32_readdir()
- and renamed from rb_w32_readdir_with_enc().
- [ruby-core:24864] [Feature #1927]
-
- * dir.c (READDIR): follow above change.
-
-Fri Dec 21 21:12:54 2012 Masaya Tarui <tarui@ruby-lang.org>
-
- * vm_dump.c (rb_vm_bugreport): commentout addr2line call temporarily
- in order to avoid segv. anyone can fix addr2line?
- [Bug #7597] [ruby-dev:46786]
-
-Fri Dec 21 20:38:28 2012 Koichi Sasada <ko1@atdot.net>
-
- * iseq.c (Init_ISeq): remove definition of the following methods:
- ISeq#line_trace_all and ISeq#line_trace_specify because they are
- half baked.
- C APIs are remained as experimental. These functions will be
- renamed, removed their parameters may be changed.
- You can use these methods by C exts. Please give us your comments.
-
-Fri Dec 21 20:21:04 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_trace.c (tracepoint_new): add code to support specified thread.
- But not tested and this feature is not supported officially.
-
-Fri Dec 21 19:37:15 2012 Koichi Sasada <ko1@atdot.net>
-
- * ruby.c (process_options): need to acquire env from TOPLEVEL_BINDING
- each time.
- `bind->env' may update after `eval()'.
- [Bug #7536]
-
-Fri Dec 21 18:46:50 2012 Koichi Sasada <ko1@atdot.net>
-
- * include/ruby/debug.h, vm_core.h: define rb_trace_arg_t at
- include/ruby/debug.h (move from vm_core.h).
-
-Fri Dec 21 17:48:15 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_core.h, vm_trace.c: fix multi-threading bug for tracing.
- Move `trace_arg' from rb_tp_t::trace_arg to rb_thread_t::trace_arg.
- `trace_arg' may changed by multiple threads.
- rb_thread_t::trace_arg can represent rb_thread_t::trace_running
- (null or non-null) and rb_thread_t::trace_running is removed.
- After that, `rb_tp_t' is not needed to check tracing or not
- (A running thread knows tracing or not). This is why I remove
- tp_attr_check_active() and make new function get_trace_arg().
-
- And this modification disable to work the following code:
- TracePoint.trace{|tp|
- Thread.new{p tp.event} # access `tp' from other threads.
- }
- I believe nobody mix threads at trace procedure.
- This is current limitation.
- [Bug #7590]
-
- * cont.c (fiber_switch, rb_cont_call): use rb_thread_t::trace_arg
- instead of rb_thread_t::trace_running.
-
- * test/ruby/test_settracefunc.rb: add a multi-threading test.
-
-Fri Dec 21 16:38:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * template/id.h.tmpl (ID2ATTRSET): compile time constant macro for
- ID_ATTRSET.
-
- * defs/id.def (KeywordError): check duplication.
-
- * defs/id.def: support for other scope IDs,
- ID_{INSTANCE,GLOBAL,CONST,CLASS}.
-
-Fri Dec 21 14:45:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * lib/irb.rb, lib/irb/*: Documentation for IRB
-
-Fri Dec 21 11:31:02 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rake/*: Updated to rake 0.9.6
- * doc/rake/*: ditto
- * test/rake/*: ditto
-
-Fri Dec 21 08:56:34 2012 Masaya Tarui <tarui@ruby-lang.org>
-
- * vm_trace.c (rb_suppress_tracing): remove unused variable 'vm_tracing'
-
-Fri Dec 21 01:01:45 2012 Masaya Tarui <tarui@ruby-lang.org>
-
- * lib/irb/completion.rb (CompletionProc): support completion of
- instance variables. [ruby-dev:46710] [Bug #7520]
-
-Thu Dec 20 20:58:25 2012 Masaya Tarui <tarui@ruby-lang.org>
-
- * vm_trace.c (rb_suppress_tracing): bugfix for vm->trace_running
- counter. And if tracing is already true, vm_trace_running ops is
- skipped to control overflow.
-
-Thu Dec 20 18:29:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/ruby.h (RTEST, NIL_P): make bare expressions without
- outermost parentheses.
-
-Thu Dec 20 17:29:00 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * NEWS: fix the description for Refinements.
-
-Thu Dec 20 16:53:59 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_core.h (rb_vm_defineclass_type_t),
- compile.c (iseq_compile_each), insns.def (defineclass): change the
- meaning of the third operand of defineclass as follows:
- lower 3bits: the type of the defineclass
- 0 = class, 1 = singleton class, 2 = module
- 4th bit: a flag represents whether the defineclass is scoped
- 0 = not scoped (e.g., class Foo)
- 1 = scoped (e.g., class Bar::Baz)
- 5th bit: a flag represents whether the superclass is specified
- 0 = not specified (e.g., class Foo)
- 1 = specified (e.g., class Bar < Foo)
- If the superclass is specified and is not a class, a TypeError
- should be raised. [ruby-dev:46747] [Bug #7572]
-
- * test/ruby/test_class.rb: related test.
-
-Thu Dec 20 16:52:37 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * NEWS: announce AEAD encryption support in the OpenSSL extension.
-
-Thu Dec 20 16:40:13 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * gc.c (nonspecial_obj_id): VALUE is not compatible with Fixnum on
- LLP64 platform, such as 64bit Windows.
- reported by Heesob Park at [ruby-core:50255] [Bug #7454], and the
- fix is suggested by akr.
-
-Thu Dec 20 16:39:04 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
-
- * ext/openssl/ossl_cipher.c: fix errors for installations that do not
- feature Authenticated Encryption.
- * ext/openssl/extconf.rb: detect presence of EVP_CTRL_GCM_GET_TAG to
- determine whether Authenticated Encryption can be used.
- [Feature #6980] [ruby-core:47426]
-
-Thu Dec 20 15:55:46 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
-
- * ext/openssl/ossl.c: do not use FIPS_mode_set if not available.
- * test/openssl/utils.rb: revise comment about setting FIPS mode to
- false.
- * test/openssl/test_fips.rb: remove tests that cause errors on
- ruby-ci.
- [Feature #6946] [ruby-core:47345]
-
-Thu Dec 20 15:22:59 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/parser/ruby.rb: Ignore methods defined on constants to
- prevent modules with the names of constants from appearing in the
- documentation.
- * test/rdoc/test_rdoc_parser_ruby.rb: Test for the above.
-
-Thu Dec 20 15:00:33 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
-
- * ext/openssl/ossl_cipher.c: add support for Authenticated Encryption
- with Associated Data (AEAD) for OpenSSL versions that support the
- GCM encryption mode. It's the only mode supported for now by OpenSSL
- itself. Add Cipher#authenticated? to detect whether a chosen mode
- does support Authenticated Encryption.
- * test/openssl/test_cipher.rb: add tests for Authenticated Encryption.
- [Feature #6980] [ruby-core:47426] Thank you, Stephen Touset for
- providing a patch!
-
-Thu Dec 20 12:56:53 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/markup/to_html.rb (class RDoc): Added current heading and
- top links to headings.
- * lib/rdoc/generator/template/darkfish/rdoc.css: ditto
- * test/rdoc/test_rdoc_generator_markup.rb: Test for above
- * test/rdoc/test_rdoc_markup_to_html.rb: ditto
-
- * test/rdoc/test_rdoc_comment.rb: Removed trailing whitespace.
-
-Thu Dec 20 11:05:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/envutil.rb (assert_valid_syntax): move from
- test_syntax.rb.
-
- * test/ruby/envutil.rb (assert_normal_exit): validate syntax before
- running because this assertion passes even if the code fails by
- SyntaxError.
-
-Thu Dec 20 10:29:58 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * test/openssl/test_pkey_dh.rb: revert special treatment of
- FIPS-capable installations since FIPS mode is now disabled for the
- tests.
-
-Thu Dec 20 10:23:12 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
-
- * ext/openssl/ossl.c: add OpenSSL.fips_mode= to allow enabling FIPS
- mode manually.
- * test/openssl/utils.rb: turn off FIPS mode for tests. This prevents
- OpenSSL installations with FIPS mode enabled by default from raising
- FIPS-related errors during the tests.
- * test/openssl/test_fips.rb: add tests for FIPS-capable OpenSSL
- installations.
- [Feature #6946] [ruby-core:47345]
-
-Thu Dec 20 06:59:52 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm.c: support variable VM/Machine stack sizes.
- Specified by the following environment variables:
- - RUBY_THREAD_VM_STACK_SIZE: vm stack size used at thread creation.
- default: 128KB (32bit CPU) or 256KB (64bit CPU).
- - RUBY_THREAD_MACHINE_STACK_SIZE: machine stack size used at thread
- creation. default: 512KB or 1024KB.
- - RUBY_FIBER_VM_STACK_SIZE: vm stack size used at fiber creation.
- default: 64KB or 128KB.
- - RUBY_FIBER_MACHINE_STACK_SIZE: machine stack size used at fiber
- creation. default: 256KB or 256KB.
- This values are specified at launched timing. You can not change
- these values at running time.
- Environ variables are only *hints* because:
- - They are aligned to 4KB.
- - They have minimum values (depend on OSs).
- - Machine stack settings are ignored by some OSs.
- Default values especially fiber stack sizes are increased.
- This change affect Fiber's behavior:
- (1) You can run more complex program on a Fiber.
- (2) You can not make many (thousands) Fibers because of
- lack of address space (on 32bit CPU).
- If (2) bothers you,
- (a) Use 64bit CPU with big memory, or
- (b) Specify RUBY_FIBER_(VM|MACHINE)_STACK_SIZE correctly.
- You need to choose correct stack size carefully. These values
- are completely rely on systems (OS/compiler and so on).
- [Feature #4614], [Bug #7212]
-
- * vm_core.h (rb_vm_t::default_params): add to record above settings.
-
- * vm.c (RubyVM::DEFAULT_PARAMS): add new constant to see
- above setting.
-
- * thread_pthread.c: support RUBY_THREAD_MACHINE_STACK_SIZE.
-
- * cont.c: support RUBY_FIBER_(VM|MACHINE)_STACK_SIZE.
-
- * test/ruby/test_fiber.rb: add tests for above.
-
- * test/ruby/test_thread.rb: ditto.
-
-Thu Dec 20 06:25:44 2012 Koichi Sasada <ko1@atdot.net>
-
- * test/ruby/test_fiber.rb: remove a strange single quote character.
- With this character, this script exits by SyntaxError.
-
-Thu Dec 20 01:03:00 2012 Zachary Scott <zachary@zacharyscott>
-
- * ext/.document: Add missing ext modules to .document
- Patch by Ryunosuke SATO [Fixes Github #224]
-
-Wed Dec 19 23:52:16 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ruby.c (load_file_internal): use original C string as the filename
- for parser.
- reported by whiteleaf at [ruby-list:49085] [ruby-dev:46738]
- [Bug #7562]
-
-Wed Dec 19 23:36:12 2012 Naohisa Goto <ngotogenome@gmail.com>
-
- * marshal.c (marshal_dump, marshal_load): fix SEGV during make rdoc
- and test failure in TestMarshal#test_gc and test_context_switch
- on SPARC Solaris 10 compiled with Oracle Solaris Studio 12.3.
- [Bug #7591] [ruby-dev:46772]
-
-Wed Dec 19 19:34:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * object.c (rb_mod_const_get): nul byte is invalid as constant name.
-
-Wed Dec 19 17:54:18 2012 Masaya Tarui <tarui@ruby-lang.org>
-
- * vm_trace.c (rb_threadptr_exec_event_hooks): get rid of race
- condition. [Bug #7589] [ruby-dev:46763]
-
-Wed Dec 19 16:30:28 2012 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/literals.rdoc: Added 0d decimal format. Thanks Nobu!
-
-Wed Dec 19 16:19:36 2012 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/methods.rdoc: Fixed typo. Thanks to Josh Susser.
-
-Wed Dec 19 16:18:22 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/commands/query_command.rb: Refactored to improve
- maintainability.
- * test/rubygems/test_gem_commands_query_command.rb: Note default gems
- in gem list details.
-
- * lib/rubygems/uninstaller.rb: Detect all gems for uninstallation.
- This allows duplicate installs of default gems to be removed.
- * lib/rubygems/specification.rb: Allow use of ::each_spec.
- * lib/rubygems/test_case.rb: Added install_default_gems.
- * test/rubygems/test_gem_commands_uninstall_command.rb: Moved test
- down to the uninstaller tests.
- * test/rubygems/test_gem_uninstaller.rb: Test for uninstallation of
- default gems and duplicate default gems.
-
-Wed Dec 19 15:23:50 2012 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/methods.rdoc: Add () around keyword arguments example for
- consistency. Thanks to Josh Susser.
-
-Wed Dec 19 01:51:24 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-
- * vm.c (rb_vm_jump_tag_but_local_jump): remove unnecessary 2nd
- argument.
-
- * load.c (rb_load_internal): ditto.
-
- * eval_intern.h (rb_vm_jump_tag_but_local_jump): ditto.
-
-Tue Dec 18 18:57:58 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (rb_io_wait_writable): don't use rb_thread_wait_fd()
- because it is for waiting until io readable.
-
- * io.c (rb_io_wait_writable): always use rb_thread_fd_writable()
- instead of bare rb_wait_for_single_fd(). we shouldn't ignore
- return value.
- * io.c (rb_io_wait_readable): ditto. always use rb_thread_wait_fd().
-
-Tue Dec 18 18:55:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_thread_wait_fd_rw): fix infinite loop bug.
- rb_wait_for_single_fd() never return positive number.
-
-Tue Dec 18 17:24:40 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/encoding.rb: Do not remove #! line from document when
- setting encoding. This allows ruby executables to be parsed as ruby
- files.
- * test/rdoc/test_rdoc_encoding.rb: Test for above.
-
- * lib/rdoc/parser.rb: Set the parser file name of ruby executables
- correctly.
- * test/rdoc/test_rdoc_parser.rb: Test for above.
-
-Tue Dec 18 16:46:15 2012 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/literals.rdoc: Used simplified heredoc example that
- doesn't include method definition. Added heredoc with backticks.
-
-Tue Dec 18 16:38:51 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/store.rb: Work around RDoc stores from older versions of
- RDoc.
- * test/rdoc/test_rdoc_store.rb: Test for above.
-
-Tue Dec 18 16:31:20 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/ruby_lex.rb: Return a TkHEREDOC instead of a TkSTRING when
- the heredoc identifier is followed by a line-end. This allows proper
- display of some HEREDOCs in source view.
- * lib/rdoc/ruby_token.rb: Added TkHEREDOC
- * test/rdoc/test_rdoc_ruby_lex.rb: Test for above.
-
-Tue Dec 18 09:45:14 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-
- * vm.c (rb_vm_make_jump_tag_but_local_jump): take care of the case
- TAG_JUMP() with TAG_FATAL (ex. rb_fatal()). [ruby-core:50917]
- [Bug #7570]
-
- * test/ruby/test_fiber.rb (test_fatal_in_fiber): add a test for above.
-
- * ext/-test-/fatal/extconf.rb, ext/-test-/fatal/rb_fatal.c: ditto.
-
-Tue Dec 18 13:17:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * vm_trace.c (tracepoint_attr_defined_class): Clean up rdoc for
- TracePoint#defined_class
-
-Tue Dec 18 12:15:59 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/specification.rb: Fixed ruby output of requirements
- with multiple version specifiers.
- * test/rubygems/test_gem_ext_cmake_builder.rb: Only look for specific
- lines in cmake output. Should fix [ruby-trunk - Bug #7579]
-
-Tue Dec 18 11:45:26 2012 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/literals.rdoc: Added 0o octal integers.
-
-Tue Dec 18 12:28:52 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
-
- * test/openssl/test_ssl.rb: Use :TLSv1_2_client explicitly in
- test_tls_v1_2 to prevent upstream bug.
- [Bug #7197] [ruby-dev:46240]
-
-Tue Dec 18 11:52:34 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
-
- * ext/openssl/lib/ssl.rb: Enable insertion of empty fragments as a
- countermeasure for the BEAST attack by default. The default options
- of OpenSSL::SSL:SSLContext are now:
- OpenSSL::SSL::OP_ALL & ~OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS
- [Bug #5353] [ruby-core:39673]
-
- * test/openssl/test_ssl.rb: Adapt tests to new SSLContext default.
- * NEWS: Announce the new default.
+Fri Jul 8 10:39:52 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Dec 18 06:36:12 2012 Koichi Sasada <ko1@atdot.net>
+ * thread_pthread.c (gvl_destroy): fix cond_t leak.
- * method.h: remove `VM_METHOD_TYPE_CFUNC_FRAMELESS' method type.
- This method type is for optimized CFUNC such as Fixnum#+ and so on.
- This feature is half-baked and no way to use them.
- [Background]
- Now, VM has opt_plus instructions to optimize `+' methods for
- some Classes (such as Fixnum, Float (flonum)). We call this
- type of instructions as `specialized instructions'.
- This simple technique improve simple program dramatically.
- However, we can make specialized instructions for only several
- types (classes) and selectors (method names) because a large
- instruction will be slow. In other words, this technique has no
- extensibility.
- To overcome this problem, VM_METHOD_TYPE_CFUNC_FRAMELESS was
- introduced (r37198). This type is a variant of CFUNC, but called
- their functions directly without building a method frame.
- Any CFUNC method can be defined as frameless methods if a method
- is not needed to make method frame. Frameless methods are faster
- as specialized instructions (a bit slower, but no need to care).
- No problem described at
- http://charlie.bz/blog/why-do-singleton-methods-make-ruby-slow
- because this technique doesn't see class, but see method body
- itself. Alias is also no problem.
- [Problem]
- However, we can't set frameless method type for polymorphic methods
- such as Array#[]. Necessity for method frame depends on which
- parameter type. For example, Fixnum#+ needs method frame if
- coerce is needed. Current VM_METHOD_TYPE_CFUNC_FRAMELESS is not
- flexible and need more tuning to introduce it.
- Expected behavior of frameless method type may be:
- result = optimized_cfunc(params); /* call optimized cfunc */
- if (result == Qundef) { result = normal_cfunc(); }
- This is why I say this feature is half-baked.
- We need to learn primitive method in Smalltalk more.
- (I heard this name at RubyConf Taiwan this month. Thanks!)
- [Conclusion]
- I remove this feature and consider again.
- This feature goes to next minor (2.1?).
- Nobody may use this feature and there is no compatibility issue.
+Fri Jul 8 09:17:59 2011 Eric Hodel <drbrain@segment7.net>
- * proc.c (rb_method_entry_arity): ditto.
+ * gc.c: Improve documentation
- * vm_eval.c, vm_insnhelper.c, vm_method.c: ditto.
+Thu Jul 7 23:35:31 2011 Narihiro Nakamura <authornari@gmail.com>
-Tue Dec 18 04:58:22 2012 Koichi Sasada <ko1@atdot.net>
+ * gc.c: change water_mark value that may call
+ gc_mark(lev <= GC_LEVEL_MAX) in gc_mark().
+ In ruby_stack_check(), water_mark is a value that may call some
+ C function. Fixes Bug #3781
- * vm_trace.c (fill_id_and_klass): TracePoint#defined_class returns
- singleton class. `set_trace_func' passed attached class (which is
- attached/modified by singleton class) by 6th block parameter if it
- is singleton class. Previous behavior follows this spec.
- However, this method named `defined_class' should return singleton
- class directly because singleton methods are defined in singleton
- class. There are no compatible issue because TracePoint is introduced
- after 2.0.
- But compatibility with `set_trace_func' is broken. This means that
- you can not replace all `set_trace_func' code with TracePoint
- without consideration of this behavior.
- [Bug #7554]
+ * configure.in: define GC_MARK_STACKFRAME_WORD that approximate
+ size of gc_mark() and gc_mark_children() stackframes.
- * test/ruby/test_settracefunc.rb: change a test to catch up
- an above change.
+Thu Jul 7 17:55:05 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Tue Dec 18 03:03:10 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * test/testunit/test_parallel.rb (TestParallelWorker#teardown): wait
+ the child process even if the communication pipe is broken.
- * ext/psych/lib/psych/visitors/to_ruby.rb: speed up node mapping so
- common cases are evaluated first. Thanks Kevin Menard!
+Thu Jul 7 15:44:42 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Dec 18 02:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
+ * encoding.c (rb_enc_set_index, rb_enc_associate_index): should
+ check if frozen.
- * lib/optparse.rb: Remove 'developer documentation' section from rdoc
- Patch by Marcus Stollsteimer [ruby-core:50526][Bug #7504]
+ * parse.y (rb_intern3), ruby.c (process_options, ruby_script):
+ defer freezing after associating encodings.
-Tue Dec 18 02:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
+Thu Jul 7 15:16:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/matrix.rb (#lup): typo in example [ruby-core:50946][Bug #7582]
+ * numeric.c (rb_num2ull): use own switch sentence.
+ Current implementation can't convert 18446744073709551615.
-Mon Dec 17 18:03:34 2012 Charlie Somerville <charlie@charliesomerville.com>
+Thu Jul 7 06:56:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * class.c (rewrite_cref_stack, clone_method): rewrite a method's cref
- stack when cloning into a new class to allow lexical const lookup to
- work as expected [ruby-core:47834] [Bug #7107]
- * test/ruby/test_class.rb (class TestClass): related test
+ * cont.c (FIBER_STACK_FLAGS): workaround fix for r32420 on FreeBSD.
-Mon Dec 17 13:56:55 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (io_flush_buffer_sync2): avoid to return 0. because
- rb_thread_call_without_gvl2 uses 0 internally.
- * io.c (io_flush_buffer_async2): adapt the above.
-
-Mon Dec 17 12:05:32 2012 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax/methods.rdoc: Added a description of singleton methods.
-
-Mon Dec 17 11:35:57 2012 Eric Hodel <drbrain@segment7.net>
+Thu Jul 7 06:46:12 2011 Eric Hodel <drbrain@segment7.net>
- * doc/.document: Added doc/syntax
-
-Mon Dec 17 11:25:32 2012 Eric Hodel <drbrain@segment7.net>
-
- * doc/syntax.rdoc: Added syntax guide table of contents
- * doc/syntax/exceptions.rdoc: Syntax guide for exceptions
- * doc/syntax/literals.rdoc: Syntax guide for literals
- * doc/syntax/methods.rdoc: Syntax guide for methods
-
-Mon Dec 17 07:59:40 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems.rb: Updated VERSION
-
- * test/rubygems/test_gem_installer.rb: Fixed ambiguous first argument
- warning.
-
- * test/rubygems/test_gem_rdoc.rb: RDoc generation depends on installed
- version of RDoc.
-
-Sun Dec 16 02:04:41 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * signal.c (rb_sigaltstack_size): cast sysconf() return value
- explicitly. Fix compile error on Mac OS X.
-
-Sun Dec 16 00:39:43 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-
- * cont.c (rb_fiber_start): don't enqueue Qnil to async_errinfo_queue.
- rb_vm_make_jump_tag_but_local_jump() could return Qnil (ex. when
- finished by Thread.exit). [ruby-dev:45218] [Bug #5993]
-
- * test/ruby/test_fiber.rb (test_exit_in_fiber): add test for it.
-
-Sat Dec 15 23:56:51 2012 Naohisa Goto <ngotogenome@gmail.com>
-
- * ext/fiddle/pointer.c (rb_fiddle_ptr2cptr): fix error message
- forgotten to be changed from DL to Fiddle.
-
-Sat Dec 15 23:14:32 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * signal.c (default_handler): remove rb_register_sigaltstack()
- call. sigaltstack was already registered when creating threads.
-
-Sat Dec 15 23:08:56 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * signal.c (rb_sigaltstack_size): new. calculate stack size for
- sigsegv handler. enlarge value when x86 or x86_64 on Linux.
- Linux has very small MINSIGSTKSZ size (2048 bytes) and
- our sigsegv routine need 5KiB at least. [Bug #7141]
- * internal.h: add declaration of rb_sigaltstack_size().
- * vm_core.h: remove ALT_STACK_SIZE definition.
-
- * signal.c (rb_register_sigaltstack): replace ALT_STACK_SIZE with
- rb_sigaltstack_size();
- * gc.c (Init_heap): ditto.
- * vm.c (th_init): ditto.
-
-Sat Dec 15 18:24:21 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * rational.c (f_round_common): should check overflow.
-
-Sat Dec 15 18:00:00 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * rational.c (float_rationalize): reduced.
-
-Sat Dec 15 14:18:44 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (finish_writeconv): uses rb_write_internal2 if
- fptr->write_lock have.
-
-Sat Dec 15 13:57:08 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_mutex_owned_p): remove static.
- * io.c (io_flush_buffer): don't hold mutex if already have.
- Now recursive lock may occur when following scenario.
- fptr_finalize -> finish_writeconv_sync -> finish_writeconv
- -> io_fflush.
-
-Sat Dec 15 13:38:30 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (io_flush_buffer): uses io_flush_buffer_async2 instead of
- io_flush_buffer_async.
- * io.c (io_flush_buffer_async2): new helper function for
- io_flush_buffer. It uses rb_thread_call_without_gvl2() instead
- of rb_thread_io_blocking_region.
- * io.c (io_flush_buffer_sync2): new helper function for
- io_flush_buffer_async2.
-
-Sat Dec 15 13:04:26 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (internal_write_func2): new helper function for rb_write_internal2().
- * io.c (rb_write_internal2): new function. it uses
- rb_thread_call_without_gvl2() instead of rb_thread_io_blocking_region().
- * io.c (rb_binwrite_string): uses rb_write_internal2 instead of
- rb_write_internal. [Bug #7134]
-
-Sat Dec 15 12:55:29 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (rb_io_wait_writable): add to call rb_thread_wait_fd()
- likes rb_io_wait_readable.
-
-Sat Dec 15 11:54:50 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (rb_io_wait_writable): don't call rb_thread_fd_writable()
- when EINTR. EINTR mean signal interrupt was happen. We don't
- need any wait.
-
-Sat Dec 15 11:53:36 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_thread_wait_fd_rw): remove silly rb_thread_alone()
- check.
-
-Sat Dec 15 10:22:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread.c (rb_thread_polling): revert but deprecate.
-
- * include/ruby/intern.h (rb_thread_polling): deprecate.
-
-Sat Dec 15 08:37:01 2012 Masaya Tarui <tarui@ruby-lang.org>
-
- * test/rubygems/test_gem_ext_cmake_builder.rb (test_self_build):
- get rid of false positive.
-
-Sat Dec 15 08:05:56 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_thread.rb (test_uninitialized, test_backtrace,
- test_thread_timer_and_interrupt, test_thread_join_in_trap,
- test_thread_join_current, test_thread_join_main_thread,
- test_main_thread_status_at_exit, test_thread_status_in_trap,
- test_thread_status_raise_after_kill, test_mutex_owned,
- test_mutex_owned2): move these tests from TestThreadGroup class
- to TestThread because they are not thread group tests.
-
- * test/ruby/test_thread.rb (test_thread_status_raise_after_kill):
- add t.join.
-
- * test/ruby/test_threadgroup.rb: new file. moved ThreadGroup test
- from test_thread.rb.
-
-Sat Dec 15 08:02:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_thread.rb (TestThread::Thread::new.): remove
- th.abort_on_exception change. Test template shouldn't change
- global flag. It prevent to test a normal case.
-
-Sat Dec 15 06:15:14 2012 Eric Hodel <drbrain@segment7.net>
-
- * configure.in (HAVE_GCC_ATOMIC_BUILTINS): Set -march=i486 to enable
- __sync_val_compare_and_swap. Patch by KOSAKI Motohiro.
- [ruby-trunk - Bug #7485]
-
-Sat Dec 15 03:42:34 2012 Naohisa Goto <ngotogenome@gmail.com>
-
- * ext/.document: add fiddle/pointer.c, fiddle/handle.c, and
- fiddle/win32/lib as documentation.
-
-Sat Dec 15 03:06:40 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * file.c (rb_file_flock): use rb_thread_wait_for() instead of
- rb_thread_polling(). When getting EAGAIN, we need to wait a
- while even if no multi threading.
- * thread.c (sleep_for_polling, rb_thread_polling) removed.
-
-Sat Dec 15 00:03:31 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * signal.c (rb_f_kill): remove rb_thread_polling() because this
- has no good effect and makes meaningless 100ms delay. 1)
- when sending signal to another process, waiting has just silly.
- 2) when sending signal to current process, 100ms is often not
- enough time to wait. It depend on kernel behavior. And,
- rb_thread_polling() doesn't make sense anyway. When rb_thread_alone()
- is true, it doesn't wait at all and Process.kill() users don't
- expect threading changes Process.kill() behavior. [Bug #7560]
-
-Fri Dec 14 17:10:57 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (parser_params): parser_tokline to track the line number at
- which token started. [ruby-dev:46737] [Bug #7559]
-
- * parse.y (fcall): operation with starting line number.
-
- * parse.y (command, primary, method_call): point method name line.
-
- * parse.y (gettable_gen): return token line for __LINE__.
-
-Fri Dec 14 16:56:59 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_insnhelper.c (vm_call_super_method): remove volatile introduced
- in r38365.
-
- * vm_insnhelper.c (vm_call_method): use __forceinline to prevent
- VC++ to make vm_call_general and vm_call_super_method as the same
- method. Thanks, Heesob Park. [Bug #7556] [ruby-core:50867]
-
-Fri Dec 14 14:59:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/envutil.rb (Test::Unit::Assertions#assert_separately):
- take file and line by using caller_locations if not given.
-
- * test/ruby/envutil.rb (Test::Unit::Assertions#assert_separately):
- count assertions in separated tests.
-
-Fri Dec 14 14:16:42 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/rubygems_hook.rb: Fixed generation of documentation.
- Disabled rdoc generation by default to match RubyGems defaults.
- Reduced diff with RubyGems::RDoc.
- * test/rdoc/test_rdoc_rubygems_hook.rb: Tests for the above.
- * test/rubygems/test_gem_rdoc.rb: ditto.
+ * benchmark/driver.rb: Add difference column to report that averages
+ across all runs of a benchmark. [Ruby 1.9 - Feature #4982]
- * lib/rdoc/store.rb: Removed useless variable assignment
+Thu Jul 7 06:19:38 2011 Eric Hodel <drbrain@segment7.net>
-Fri Dec 14 13:58:40 2012 Eric Hodel <drbrain@segment7.net>
+ * lib/rubygems.rb: Reduce requires to improve `make benchmark`.
+ [#4962]
+ * lib/rubygems/specification.rb: Delay initialization of rubygems
+ until require is called.
- * lib/rubygems/commands/rdoc_command.rb: When overwriting
- documentation, remove existing documentation first.
+Thu Jul 7 04:31:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rubygems/server.rb: Fixed documentation links.
- * test/rubygems/test_gem_server.rb: Test for the above.
+ * parse.y (arg): rescue_mod is in inverse order from other
+ modifiers. patched by michael.j.edgar AT dartmouth.edu at
+ [ruby-core:36248]. fixed #4716.
- * lib/rubygems/rdoc.rb: Reduced diff with RDoc::RubyGemsHook
- * test/rubygems/test_gem_rdoc.rb: ditto
+Thu Jul 7 00:40:16 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Fri Dec 14 04:08:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * win32/win32.c (kill): check that the process exited or not before
+ terminating it. [Bug #4943]
- * test/ruby/envutil.rb (Test::Unit::Assertions#assert_separately):
- added to execute given test source on separate process,
- catch its resulted exception and raise it on main process.
+Wed Jul 6 23:13:19 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
-Fri Dec 14 07:43:44 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * parse.y (opt_call_args): allow trailing comma after assoc
+ argument e.g. 'foo(bar:1,)'. fixed #3456
- * ext/psych/lib/psych/visitors/yaml_tree.rb: quote strings that begin
- with non-word characters. Thanks Alex Tambellini!
- * test/psych/test_yaml.rb: appropriate test case
+Wed Jul 6 22:11:12 2011 Shota Fukumori <sorah@tubusu.net>
-Thu Dec 13 23:14:17 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Validate date in
+ "Date:" header
- * vm_insnhelper.c (vm_call_super_method): a workaround for the
- failure of TestRefinement#test_refine_recursion in Windows.
- See [ruby-core:50871] for details.
+Wed Jul 6 21:29:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Thu Dec 13 23:10:52 Charlie Somerville <charlie@charliesomerville.com>
+ * cont.c (fiber_machine_stack_alloc): cleanup pointer arithmetic.
+ "size/sizeof(VALUE)" is ugly and easy confusing.
+ * cont.c (fiber_initialize_machine_stack_context): ditto.
- * object.c (Init_Object): use rb_mod_init_copy for Class#initialize_copy
- * class.c (rb_class_init_copy): rename to class_init_copy_check, performs type
- checks on arguments to prevent reinitialization of initialized class
- [ruby-core:50869] [Bug #7557]
- * class.c (rb_mod_init_copy): use class_init_copy_check if receiver is T_CLASS
- * test/ruby/test_class.rb (class TestClass): related test
+Wed Jul 6 21:24:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Thu Dec 13 16:53:10 2012 Eric Hodel <drbrain@segment7.net>
+ * cont.c (fiber_machine_stack_alloc): fix mprotect misuse. A stack
+ guard page should have PROT_NONE.
+ * cont.c (fiber_initialize_machine_stack_context):
+ th->machine_stack_maxsize shouldn't be included guard pages size.
+ [Bug #4983][ruby-dev:44043]
- * lib/rdoc/class_module.rb: Fixed duplicate comments for classes and
- modules from C.
- * test/rdoc/test_rdoc_class_module.rb: Test for the above.
+Wed Jul 6 21:23:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/rdoc/parser/c.rb: Reload C variable names to allow proper
- updates of an ri store for C files.
- * lib/rdoc/rdoc.rb: ditto.
- * lib/rdoc/store.rb: ditto.
- * test/rdoc/test_rdoc_parser_c.rb: Test for the above.
- * test/rdoc/test_rdoc_store.rb: ditto.
+ * cont.c (fiber_machine_stack_alloc): use MAP_STACK if it's provided.
-Thu Dec 13 14:20:00 2012 Zachary Scott <zachary@zacharyscott.net>
+Wed Jul 6 21:22:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/irb*: merge doc from doc/irb/ird.rd and improve overall
- documentation of IRB
- * doc/irb/irb.rd: remove stale documentation
+ * cont.c (fiber_machine_stack_alloc): use MAP_FAILED instead of -1.
-Thu Dec 13 14:10:00 2012 Shugo Maeda <shugo@ruby-lang.org>
+Wed Jul 6 21:21:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * marshal.c (r_entry0): don't taint classes and modules because
- Marshal.load just returns the dumped classes and modules.
- [Bug #7325] [ruby-core:49198]
+ * cont.c (fiber_machine_stack_alloc): remove unnecessary cast.
- * test/ruby/test_marshal.rb: related test.
+Wed Jul 6 18:10:13 2011 Shota Fukumori <sorah@tubusu.net>
-Thu Dec 13 14:10:13 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Adding space after
+ comma.
- * test/ruby/test_require.rb (TestRequire#test_loaded_features_encoding):
- need to check compatibility, not equality of encodings.
+ * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Remove variable
+ `now`. Suppress warning.
-Thu Dec 13 14:02:15 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Jul 6 12:18:09 2011 Shota Fukumori <sorah@tubusu.net>
- * file.c (rb_file_join): check encoding compatibility before joining
- strings.
+ * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Fix bug depends to
+ time. The test fails if time past 1 second in line 136-145
-Thu Dec 13 13:06:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Jul 5 15:28:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * proc.c (umethod_bind): allow another form of method transplanting
- from a module via UnboundMethod. [ruby-core:34267][Feature #4254]
+ * parse.y (parser_here_document): should dispatch heredoc_end
+ scanner event on an empty here document. fixed Bug#4543.
-Thu Dec 13 12:07:25 2012 Shugo Maeda <shugo@ruby-lang.org>
+Tue Jul 5 13:49:26 2011 Yusuke Endoh <mame@tsg.ne.jp>
- * include/ruby/ruby.h (RB_UNUSED_VAR): new macro to suppress
- warnings for unused variables.
+ * addr2line.c: fix r32407 to check HAVE_ALLOCA_H.
- * ext/bigdecimal/bigdecimal.c (ENTER): use RB_UNUSED_VAR() to
- suppress annoying warnings by -Wunused-but-set-variable in gcc 4.6.
+Tue Jul 5 14:05:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Dec 13 11:22:33 2012 Koichi Sasada <ko1@atdot.net>
+ * lib/webrick/httpauth/digestauth.rb (_authenticate):
+ Literal texts in HTTP ABNF is case-insensitive (RFC2616 2.1),
+ and a sample implementation in RFC2617 also ignores the case
+ of algorithms. So now this ignores those cases.
+ [ruby-dev:43965] [Feature #4936]
- * method.h: remove "VM_METHOD_TYPE__MAX" from rb_method_type_t.
- rb_method_type_t is not a number and "_MAX" causes misunderstanding.
+ * lib/webrick/httpauth/digestauth.rb (initialize):
+ Because of above, opera_hack is useless and removed.
- * proc.c (rb_method_entry_arity): ditto.
+Tue Jul 5 01:30:01 2011 Yusuke Endoh <mame@tsg.ne.jp>
- * vm_eval.c (vm_call0_body): ditto.
+ * thread_pthread.c (native_sleep): cut the waiting time up to
+ 100,000,000 because Solaris cond_timedwait() return EINVAL if an
+ argument is greater than current_time + 100,000,000. This is
+ considered as a kind of spurious wakeup. The caller to native_sleep
+ should care about spurious wakeup.
- * vm_insnhelper.c (vm_call_method): ditto.
+Tue Jul 5 01:24:26 2011 Yusuke Endoh <mame@tsg.ne.jp>
-Wed Dec 12 21:40:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * cont.c: disable FIBER_USE_NATIVE on Solaris because resuming any
+ Fiber caused SEGV. I haven't follow up the issue deeply, but it
+ works when disabling the feature.
- * lib/tmpdir.rb (Dir::Tmpname#create): deal with a prefix name which
- starts with tilde as a plain name, not expanding as home directory.
- [ruby-core:50793] [Bug #7547]
+Tue Jul 5 01:22:46 2011 Yusuke Endoh <mame@tsg.ne.jp>
-Wed Dec 12 19:48:59 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * addr2line.c: include <alloca.h> to fix a build issue on Solaris.
- * ext/json: merge JSON 1.7.5.
- fix tests and other fixes.
+Tue Jul 5 00:49:05 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Wed Dec 12 18:30:29 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * ext/coverage/coverage.c: resurrect r32071 + add GC guard for
+ rb_coverages. [ruby-core:37352] [Bug #4927]
+ [ruby-core:36539] [Feature #4796]
- * class.c (rb_prepend_module): move refined methods from the origin
- of a class to the class, because refinements should have priority
- over prepended modules.
+ * test/coverage/test_coverage.rb resurrect r32071.
- * test/ruby/test_refinement.rb: related test.
+Mon Jul 4 22:24:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Dec 12 18:27:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * thread_pthread.c (get_stack): For NetBSD/FreeBSD, use
+ pthread_attr_getstack() if possible. and, remove an assumption
+ of stack growing direction.
- * time.c (zone_str): lookup or insert by using st_update() at once.
+Mon Jul 4 20:42:31 2011 Yusuke Endoh <mame@tsg.ne.jp>
-Wed Dec 12 15:30:11 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/coverage/coverage.c: revert r32071. The commit caused SEGV on
+ some minor nonfree OS. I have no means of debugging the bug. My
+ personal opinion is that such OS should be unsupported unless there
+ is an active maintainer. [ruby-core:37352]
- * configure.in: add -fno-omit-frame-pointer if libexecinfo is used.
- At least on FreeBSD ruby will crash on getting C backtrace
- when it is compiled with other than -O0.
+ * test/coverage/test_coverage.rb: ditto.
- * vm_dump.c: enable backtrace on FreeBSD even if with optimizations.
+Mon Jul 4 07:14:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Dec 12 16:08:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * thread_pthread.c (get_stack): the return address of get_stack
+ must be the highest address of the current thread's stack.
- * test/rdoc/test_rdoc_rdoc.rb (TestRDocRDoc#test_normalized_file_list_non_file_directory):
- use File::NULL for portability if possible.
+Mon Jul 4 06:37:22 2011 Koichi Sasada <ko1@atdot.net>
-Wed Dec 12 16:07:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * include/ruby/intern.h, thread_pthread.c (rb_reserved_fd_p,
+ RB_RESERVED_FD_P): added. This C API is to limit to access
+ fds which are used by RubyVM internal. In this version of
+ CRuby, return 1 if fd is communication pipe.
+ If your application needs to close all file descriptors to
+ present resource leak, skip internal fds using this C API.
+ We also define a macro RB_RESERVED_FD_P(fd). So you can write
+ #ifndef RB_RESERVED_FD_P
+ #define RB_RESERVED_FD_P(fd) 0
+ #endif
+ for Ruby 1.9.2 or previous version to write compatible extensions.
+ See [ruby-core:37727]
- * method.h (rb_method_flag_t): name a magic number for NOEX_SAFE and
- NOEX_WITH as NOEX_SAFE_SHIFT_OFFSET.
+ * thread_win32.c (rb_reserved_fd_p): added (return 0 for any fds).
- * method.h (rb_method_type_t, method_optimized_type): C89 forbids a
- comma after the last element in enum.
+ * io.c (rb_io_initialize): raise ArgumentError if given fd is reserved by Ruby.
- * proc.c (rb_method_entry_arity), vm_eval.c (vm_call0_body),
- vm_insnhelper.c (vm_call_method): add VM_METHOD_TYPE__MAX case.
+Sun Jul 3 23:43:56 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-Wed Dec 12 14:16:35 2012 Eric Hodel <drbrain@segment7.net>
+ * ext/extmk.rb (extmake): suppresses outputs from extconf.rb.
+ (extmake) warns a failure in extconf.rb.
- * lib/rdoc/class_module.rb: Added RDoc::ClassModule#documented? which
- checks comment_location. Hide RDoc::ClassModule#comment=.
- * test/rdoc/test_rdoc_class_module.rb: Test for above.
+Sun Jul 3 13:44:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml:
- Fix display of the table of contents in the sidebar.
+ * array.c (ary_reject_bang): should not remove elements which are
+ not yielded. [Bug #2545]
- * lib/rdoc/generator/template/darkfish/table_of_contents.rhtml:
- Use #comment_location when displaying classes or modules.
+Sun Jul 3 06:10:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/rdoc/test_rdoc_store.rb: Use comment_location.
+ * thread_pthread.c (get_stack): pthread_attr_getstack() doesn't
+ return stack start address, but stack base address. Thus,
+ we need to add stack size for getting stack start address.
+ And, we don't have to decrease guard size twice.
+ * thread_pthread.c (thread_start_func_1): don't use inaccurate
+ stack start guess if native_thread_init_stack() can be used.
+ [Bug #1813] [ruby-core:24540]
-Wed Dec 12 13:40:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Jul 3 04:50:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * vm_insnhelper.c (vm_getivar): no uninitialized instance variables
- warnings for non-object if attr method.
+ * thread_pthread.c (get_stack): add to a care of guard page on Mac
+ OS X. [Bug #1813] [ruby-core:24540]
+ * signal.c (ruby_signal): SIGBUS use alternative stack too.
+ * signal.c (sigbus): On Mac, thread stack overflow makes SIGBUS
+ instead of SIGSEGV. thus, added stackoverflow check.
+ * signal.c (default_handler): get rid of compilation warning.
+ * signal.c (Init_signal): ditto.
-Wed Dec 12 06:43:37 2012 Benoit Daloze <eregontp@gmail.com>
+Sat Jul 02 08:59:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * iseq.c (rb_iseq_parameters): fix limit for optional arguments.
+ * test/openssl/test_ocsp.rb
+ * test/openssl/test_x509_cert.rb: Perform SHA-256 tests only if
+ supported by the available OpenSSL version. Versions < 0.9.8 don't
+ support it. [ruby-core:37724]
- * test/ruby/test_keyword.rb: tests for above.
+Sat Jul 2 07:17:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm_core.h (struct rb_iseq_struct): update documentation
- with keyword arguments. [Bug #7540] [ruby-core:50735]
+ * array.c (rb_ary_reject_bang, rb_ary_delete_if): rejected
+ elements should be removed. fixed [Bug #2545]
-Wed Dec 12 03:45:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Jul 2 01:57:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * vm.c (vm_exec): pass exceptions while handling an exception.
+ * NEWS: remove a description of Kernel#respond_to? because it has
+ been reverted at revision 28564.
- * vm_trace.c (rb_threadptr_exec_event_hooks): propagate exceptions.
- revert r38293 partially.
+Sat Jul 2 00:58:00 2011 Kenta Murata <mrkn@mrkn.jp>
-Wed Dec 12 03:09:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * NEWS: describe a change of multiplication of Bignum.
- * sample/test.rb (Progress#initialize): add --verbose option and show
- messages in one line unless --verbose is given.
+Fri Jul 1 18:52:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Dec 12 01:47:02 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * benchmark/bm_app_erb.rb: increase loop count. too short
+ measurement time makes less accuracy.
+ * benchmark/bm_app_factorial.rb: ditto.
+ * benchmark/bm_app_mandelbrot.rb: ditto.
+ * benchmark/bm_app_strconcat.rb: ditto.
- * eval.c (rb_using_refinement): make the method table of an iclass
- for a refinement that of the refinement, not that of the origin of
- the refinement, which is set by rb_include_class_new(). This
- change is needed to make module prepend into a refinement work
- properly.
+ * benchmark/bm_io_file_create.rb: ditto.
+ * benchmark/bm_io_file_read.rb: ditto.
+ * benchmark/bm_io_file_write.rb: ditto.
- * test/ruby/test_refinement.rb: related test.
+ * benchmark/bm_so_concatenate.rb: ditto.
+ * benchmark/bm_so_lists.rb: ditto.
+ * benchmark/bm_so_matrix.rb: ditto.
+ * benchmark/bm_so_random.rb: ditto.
+ * benchmark/bm_so_sieve.rb: ditto.
-Wed Dec 12 01:05:04 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * benchmark/bm_vm_thread_mutex1.rb: ditto.
+ * benchmark/bm_vm_thread_mutex2.rb: ditto.
+ * benchmark/bm_vm_thread_mutex3.rb: ditto.
- * tool/make-snapshot: add --disable-rubygem to both MINIRUBY and RUBY.
- On making miniprelude.c, it seems use MINIRUBY. this fixes #7541
- but rubygems also needs to be fixed for older rubies.
+ * benchmark/bm_vm1_block.rb: cleanup.
+ * benchmark/bm_vm1_const.rb: cleanup.
+ * benchmark/bm_vm1_ensure.rb: cleanup.
+ * benchmark/bm_vm1_ivar.rb: cleanup.
+ * benchmark/bm_vm1_length.rb: cleanup.
+ * benchmark/bm_vm1_neq.rb: cleanup.
+ * benchmark/bm_vm1_not.rb: cleanup.
+ * benchmark/bm_vm1_rescue.rb: cleanup.
+ * benchmark/bm_vm1_simplereturn.rb: cleanup.
+ * benchmark/bm_vm1_swap.rb: cleanup.
-Wed Dec 12 00:32:11 2012 Naohisa Goto <ngotogenome@gmail.com>
+ * benchmark/bm_vm2_array.rb: cleanup.
+ * benchmark/bm_vm2_case.rb: cleanup.
+ * benchmark/bm_vm2_defined_method.rb: cleanup.
+ * benchmark/bm_vm2_eval.rb: cleanup.
+ * benchmark/bm_vm2_method.rb: cleanup.
+ * benchmark/bm_vm2_mutex.rb: cleanup.
+ * benchmark/bm_vm2_poly_method.rb: cleanup.
+ * benchmark/bm_vm2_poly_method_ov.rb: cleanup.
+ * benchmark/bm_vm2_proc.rb: cleanup.
+ * benchmark/bm_vm2_regexp.rb: cleanup.
+ * benchmark/bm_vm2_send.rb: cleanup.
+ * benchmark/bm_vm2_super.rb: cleanup.
+ * benchmark/bm_vm2_unif1.rb: cleanup.
+ * benchmark/bm_vm2_zsuper.rb: cleanup.
- * test/dl/test_func.rb (test_name_with_block, test_bind, test_qsort1):
- call unbind to release the callback closure because maximum number
- of callbacks is limited to DL::MAX_CALLBACK (== 5) with pure DL
- without Fiddle.
+ * benchmark/bm_vm_thread_alive_check1.rb: cleanup.
-Wed Dec 12 00:13:34 2012 Naohisa Goto <ngotogenome@gmail.com>
+Fri Jul 1 15:23:00 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * ext/dl/lib/dl/func.rb (DL::Function#unbind, #bound?): suppress
- NoMethodError when Fiddle is available. [ruby-core:50756] [Bug #7543]
- * test/dl/test_func.rb (test_bound*, test_unbind*): tests for the above.
+ * lib/matrix: Add LUP decomposition
-Tue Dec 11 19:38:37 2012 Naohisa Goto <ngotogenome@gmail.com>
+Fri Jul 1 15:21:14 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * ext/fiddle/function.c (Fiddle::Function.new): new keyword argument
- :name to set the name attribute.
- * ext/fiddle/lib/fiddle/import.rb (import_function, bind_function):
- set function name by using the :name keyword argument.
- Re-fixes r38243. [ruby-core:50566]
- * test/fiddle/test_function.rb (test_name): test for the :name keyword
- argument and Fiddle::Function#name.
+ * lib/matrix.rb: Allow non integer exponents for Matrix#**
-Tue Dec 11 16:57:33 2012 Eric Hodel <drbrain@segment7.net>
+Fri Jul 1 15:13:25 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * common.mk: Added --pages-dir to rdoc creation. Now doc/ items show
- up at top-level.
- * .document: Moved doc/* entries to doc/.document
- * doc/.document: ditto
+ * lib/matrix: Add Eigenvalue Decomposition
-Tue Dec 11 16:44:37 2012 Eric Hodel <drbrain@segment7.net>
+Fri Jul 1 15:10:22 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * lib/rdoc/options.rb: Added --page-dir option for moving pages in
- doc/ to the top-level.
- * lib/rdoc/rdoc.rb: ditto.
- * test/rdoc/test_rdoc_options.rb: Test for the above.
- * test/rdoc/test_rdoc_rdoc.rb: ditto.
+ * lib/matrix: Add Matrix#round
-Tue Dec 11 15:24:05 2012 Eric Hodel <drbrain@segment7.net>
+Fri Jul 1 11:41:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/pathname/lib/pathname.rb: Hide private methods from RDoc.
+ * string.c (tr_trans): free heap ptr when the str is not embedded.
+ patched by Eric Wong. [Bug #4956] [ruby-core:37708]
-Tue Dec 11 15:11:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Jul 1 11:07:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * tool/make-snapshot (BASERUBY): add --disable-gem to avoid load gems.
- [Bug #7541] [ruby-core:50736]
+ * thread.c (do_select): fix memory leak.
+ Patch by Eric Wong. Thank you! [Bug #4953] [ruby-core:37702]
-Tue Dec 11 12:00:19 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Jul 1 08:21:28 2011 Koichi Sasada <ko1@atdot.net>
- * ext/dl/win32/extconf.rb: Fix typo
- by Santiago Pastorino <santiago@wyeworks.com>
- https://github.com/ruby/ruby/pull/221 fix GH-221
+ * vm_insnhelper.c (vm_getivar): check vm state version
+ to invalidate inline cache (ivar index).
+ fixes Bug #4926.
-Tue Dec 11 01:53:37 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * vm_insnhelper.c (vm_setivar): ditto.
- * lib/matrix: alias {row|column}_size to {row|column}_count and use
- the latter.
- [Bug #7369] [ruby-core:49409]
+Fri Jul 1 08:03:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Dec 11 00:26:58 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * error.c, thread_pthread.c (WRITE_CONST): suppress warnings
+ `ignoring return value'.
- * fix the behavior when a module is included into a refinement.
- This change is a little tricky, so it might be better to prohibit
- module inclusion to refinements.
+Fri Jul 1 06:41:36 2011 Koichi Sasada <ko1@atdot.net>
- * include/ruby/ruby.h (RMODULE_INCLUDED_INTO_REFINEMENT): new flag
- to represent that a module (iclass) is included into a refinement.
+ * thread.c (rb_threadptr_check_signal): only wake up main thread.
- * class.c (include_modules_at): set RMODULE_INCLUDED_INTO_REFINEMENT
- if klass is a refinement.
+ * thread.c (rb_threadptr_execute_interrupts_common): check signal
+ delivery if it is main thread.
+ fixes [ruby-dev:44005] [Ruby 1.9 - Bug #4950]
- * eval.c (rb_mod_refine): set the superclass of a refinement to the
- refined class for super.
+ * bootstraptest/test_fork.rb: add a test for above.
- * eval.c (rb_using_refinement): skip the above superclass (the
- refined class) when creating iclasses for refinements. Otherwise,
- `using Refinement1; using Refinement2' creates iclasses:
- <Refinement2> -> <RefinedClass> -> <Refinement1> -> RefinedClass,
- where <Module> is an iclass for Module, so RefinedClass is
- searched before Refinement1. The correct iclasses should be
- <Refinement2> -> <Refinement1> -> RefinedClass.
+ * signal.c (rb_get_next_signal): skip if signal_buff is empty.
+ (check signal_buff.size first)
- * vm_insnhelper.c (vm_search_normal_superclass): if klass is an
- iclass for a refinement, use the refinement's superclass instead
- of the iclass's superclass. Otherwise, multiple refinements are
- searched by super. For example, if a refinement Refinement2
- includes a module M (i.e., Refinement2 -> <M> -> RefinedClass,
- and if refinements iclasses are <Refinement2> -> <M>' ->
- <Refinement1> -> RefinedClass, then super in <Refinement2> should
- use Refinement2's superclass <M> instead of <Refinement2>'s
- superclass <M>'.
+ * vm_core.h: remove unused variable rb_thread_t::exec_signal.
- * vm_insnhelper.c (vm_search_super_method): do not raise a
- NotImplementError if current_defined_class is a module included
- into a refinement. Because of the change of
- vm_search_normal_superclass(), the receiver might not be an
- instance of the module('s iclass).
+ * thread.c (rb_thread_check_trap_pending): check
+ rb_signal_buff_size() because rb_thread_t::exec_signal
+ is no longer available.
- * test/ruby/test_refinement.rb: related test.
+Fri Jul 1 03:28:25 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
-Mon Dec 10 18:35:25 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_method.c (rb_method_entry_without_refinements): use
- rb_resolve_refined_method() to search superclasses if
- me->def->orig_me is 0. This change fixes make test-all
- TESTS="json ruby/test_refinement.rb".
-
- * test/ruby/test_refinement.rb: related test.
-
-Mon Dec 10 17:59:07 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/fiddle/win32/*: library ports from DL to Fiddle.
-
- * ext/dl/win32/extconf.rb: check fiddle. often case dl compiled prior
- to fiddle, so this change is no meaning. in most cases, simply
- fiddle/win32 overwrite dl/win32.
-
-Mon Dec 10 15:23:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_trace.c (rb_threadptr_exec_event_hooks): exceptions in event
- hooks should not propagate outside.
-
-Mon Dec 10 15:11:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * compile.c (iseq_compile_each): count flip-flop state in local iseq
- not in each iseqs, so that the keys can be other than hidden
- strings. [ruby-core:47253] [Bug #6899]
-
- * vm_insnhelper.c (lep_svar_get, lep_svar_set, vm_getspecial): store
- flip-flop states in an array instead of a hash.
-
- * iseq.c (set_relation): main iseq also can has local scope.
-
-Mon Dec 10 10:36:12 2012 Narihiro Nakamura <authornari@gmail.com>
-
- * lib/irb/magic-file.rb: set a encoding, which is detected from
- the file to read, to the internal encoding.
- [Bug #4281][ruby-dev:43036]
-
-Mon Dec 10 09:40:19 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/ext/cmake_builder.rb: Added a builder for cmake.
- * lib/rubygems/ext.rb: ditto.
- * lib/rubygems/installer.rb: ditto.
- * test/rubygems/test_gem_ext_cmake_builder.rb: Test for above.
-
-Mon Dec 10 09:13:08 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/package.rb: Omit directories when packaging gems like
- RubyGems 1.8.x
- * test/rubygems/test_gem_package.rb: Test for above.
-
-Sun Dec 9 17:36:59 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_insnhelper.c (vm_call_opt_send): Kernel#send should not use
- refinements.
-
- * proc.c (mnew): Kernel#method, Kernel#public_method,
- Module#instance_method, and Module#public_instance_method should
- not use refinements.
-
- * vm_method.c (rb_method_boundp): Kernel#respond_to? should not use
- refinements.
-
- * test/ruby/test_refinement.rb: related test.
-
-Sun Dec 9 06:19:04 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/markdown/entities.rb: Added documentation.
-
- * lib/rdoc/parser/ruby.rb: Updated style
-
- * lib/rdoc/ruby_lex.rb: Parse characters up to \u{FFFFF}
- * test/rdoc/test_rdoc_ruby_lex.rb: Test for above.
-
-Sat Dec 8 22:38:35 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * eval.c (rb_mod_refine): don't override Module#include. It's
- unnecessary now because refinements are activated only in refine
- blocks.
-
-Sat Dec 8 22:33:26 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * eval.c: remove Module#refinements.
-
- * test/ruby/test_refinement.rb: remove tests for Module#refinements.
-
-Sat Dec 8 13:17:55 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * eval.c (top_using): raise a RuntimeError if using is called in a
- module definition or a method definition.
-
- * test/ruby/test_refinement.rb: related test.
-
-Sat Dec 8 15:01:35 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/commands/cleanup_command.rb: Skip default gems when
- cleaning up.
- * test/rubygems/test_gem_commands_cleanup_command.rb: Test for above.
-
- * lib/rubygems/commands/query_command.rb: Fixed listing remote gems.
-
- * lib/rubygems/dependency_installer.rb: Ignore non-files when looking
- for local gems.
- * test/rubygems/test_gem_dependency_installer.rb: Test for above.
-
- * lib/rubygems/uninstaller.rb: The user must confirm uninstalling gems
- that have dependencies.
- * test/rubygems/test_gem_uninstaller.rb: Test for above.
-
- * lib/rubygems.rb (module Gem): Updated version.
+ * class.c (Init_class_hierarchy): should name BasicObject
+ explicitly.
- * test/rubygems/*.pem: Updated to run in FIPS mode.
- * test/rubygems/test_gem_security.rb: ditto.
- * test/rubygems/test_gem_security_signer.rb: ditto.
+ * variable.c (rb_const_defined_0): should not check for
+ superclasses as const_get.
-Sat Dec 8 12:34:01 2012 Shugo Maeda <shugo@ruby-lang.org>
+Fri Jul 1 03:24:03 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * vm_insnhelper.c (vm_search_normal_superclass): super in a
- refinement always uses the refined class as its superclass.
+ * ext/date/date_core.c: mathn is still alive (should die soon).
- * test/ruby/test_refinement.rb: related test.
+Thu Jun 30 23:50:00 2011 Kenta Murata <mrkn@mrkn.jp>
-Sat Dec 8 11:59:59 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * misc/ruby-mode.el (ruby-indent-beg-re): Fix broken regular
+ expression. Fixes #4546
- * eval.c (rb_mod_refine): raise an ArgumentError if a given
- block is of a Proc object.
+Thu Jun 30 23:43:30 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * vm_insnhelper.c (vm_call_method): store refined methods in inline
- cache to improve performance. It's safe now because blocks cannot
- be yielded with different refinements in the new specification.
+ * ext/openssl/ossl.c/.h: Added ossl_x509_name_sk2ary.
+ * ext/openssl/ossl.c: Replaced ossl_x509_ary2k by generic macro to
+ simplify future conversions.
+ * ext/openssl/ossl_ssl.c: Implement SSLSocket#client_ca.
+ * test/openssl/test_ssl.rb: Add test for SSLSocket#client_ca.
+ Thanks to Ippei Obayashi for providing the patch!
+ [ Ruby 1.9 - Feature #4481 ] [ruby-core:35461]
- * test/ruby/test_refinement.rb: related test.
+Thu Jun 30 22:38:58 2011 Koichi Sasada <ko1@atdot.net>
-Sat Dec 8 11:17:53 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * benchmark/bm_vm2_defined_method.rb: added to measure performance of
+ bmethod (method defined by define_method()).
- * eval.c (rb_mod_refine), vm_eval.c (rb_yield_refine_block):
- Module#refine activates all refinements defined in that module
- only in a given block.
+Thu Jun 30 22:17:04 2011 Koichi Sasada <ko1@atdot.net>
- * string.c (sym_to_proc, sym_call): don't use refinements.
+ * vm_insnhelper.c (vm_call_bmethod): fix to hook call/return event
+ for methods defined by define_method(). fixes Bug #4613.
- * test/ruby/test_refinement.rb: related test.
+ * thread.c (call_trace_proc): Fix to skip if class is not given (0).
+ Note that ID and Class object are passed for call/return event
+ if the called method was defined by define_method().
+ If you are author of tracer/profiler/debugger, this may be an
+ important change. You should check passed class as zero or
+ non-zero instead of checking the event type.
-Sat Dec 8 09:24:42 2012 Eric Hodel <drbrain@segment7.net>
+ * test/ruby/test_settracefunc.rb: add a test for above.
- * ext/openssl/ossl_x509name.c: Completed documentation for
- OpenSSL::X509::Name.
+Thu Jun 30 21:18:35 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
-Sat Dec 8 07:57:12 2012 Koichi Sasada <ko1@atdot.net>
+ * configure.in: Add warnflags for XL/C on AIX during configure
+ to avoid [Bug #3971]. See [ruby-core:32859]
- * ext/objspace/objspace.c (iow_size): return size of internal object
- for ObjectSpace.memsize_of().
+Thu Jun 30 21:16:04 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * test/objspace/test_objspace.rb: add a test.
+ * ext/date/date_core.c (m_ajd): refers a constant.
-Tue Dec 08 02:39:23 2012 James Edward Gray II <james@graysoftinc.com>
+Thu Jun 30 20:54:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/csv.rb: A fix for row comparison by Stephen Wattam. [Bug #7528]
+ * ext/io/console/io-console.gemspec: spin-off gem for 1.9.2.
-Sat Dec 8 01:27:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Jun 30 20:36:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): no need to
- check all reports.
+ * ext/date/date_core.c: trivial changes.
-Sat Dec 8 00:10:34 2012 Shugo Maeda <shugo@ruby-lang.org>
+Thu Jun 30 20:12:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm_eval.c (yield_under, eval_under): do not activate refinements
- of the receiver in module_eval and instance_eval.
+ * test/ruby/test_module.rb: tests for [Bug #3422] and [Bug #3423].
- * eval.c (ruby_Init_refinement): undef Class#refine.
+Thu Jun 30 20:03:39 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * eval.c (ruby_Init_refinement): remove Module#using.
+ * ext/date/date_core.c: modified doc.
- * eval.c (ruby_Init_refinement): main.using should be private.
+Thu Jun 30 19:09:19 2011 Koichi Sasada <ko1@atdot.net>
- * eval.c (rb_mod_refine): the argument of Module#refine should not
- be a module.
+ * thread_pthread.c (thread_timer): ignore unknown errno.
+ (we observed that select(2) was canceled by errno=514 on
+ boron == Linux/Xen environment)
- * insns.def (defineclass): do not activate refinements in a class or
- module.
+Thu Jun 30 17:33:25 2011 Koichi Sasada <ko1@atdot.net>
-Fri Dec 7 23:42:11 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * ext/objspace/objspace.c (ObjectSpace.count_tdata_objects):
+ Fix rdoc. Fixes Bug #3892.
- * ext/refinement/refinement.c: include ruby/ruby.h instead of the
- declaration of rb_warn().
+ * ext/objspace/objspace.c (ObjectSpace.count_tdata_objects):
+ Change key type if the klass of a object is zero (internal object).
+ Read rdoc for details.
-Fri Dec 7 16:07:00 2012 Zachary Scott <zachary@zacharyscott.net>
+ * internal.h: export rb_objspace_data_type_name().
- * doc/etc.rd: Removed stale documentation file
- * ext/etc/etc.c: Merged documentation from doc/etc.rd and updated
- rdoc, added documentation for Etc::Passwd and Etc::Group
+Thu Jun 30 17:25:08 2011 Koichi Sasada <ko1@atdot.net>
-Fri Dec 7 16:00:57 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * thread_pthread.c (ping_signal_thread_list, thread_timer):
+ fix to keep polling state if there are any ping-tasks.
- * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): no need to
- retry skipped test. this fix makes 40% faster the whole test-all
- with -j5 on Windows.
+Thu Jun 30 12:25:34 2011 Koichi Sasada <ko1@atdot.net>
-Fri Dec 7 14:22:29 2012 Eric Hodel <drbrain@segment7.net>
+ * thread_pthread.c (rb_thread_create_timer_thread): allocate
+ machine stack for the timer thread at least 12KB. FreeBSD 8.2
+ AMD64 causes machine stack overflow (SIGSEGV) only with
+ PTHREAD_STACK_MIN (maybe defined as 2KB).
- * lib/rdoc/markup/to_joined_paragraph.rb: Completed documentation
- * lib/rdoc/parser/c.rb: ditto
- * lib/rdoc/parser/changelog.rb: ditto
- * lib/rdoc/servlet.rb: ditto
- * lib/rdoc/store.rb: ditto
+Thu Jun 30 09:36:37 2011 Eric Hodel <drbrain@segment7.net>
- * lib/rdoc/store.rb: Improved HTML error page. Completed
+ * lib/weakref.rb: Attach documentation to WeakRef and add missing
documentation
- * lib/rdoc/parser/ruby.rb: Fixed bug attaching a comment to A::B = 42
- * test/rdoc/test_rdoc_parser_ruby.rb: Test for above
-
- * test/rdoc/test_rdoc_comment.rb: Removed garbage
-
-Fri Dec 7 14:03:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/timeout.rb (Timeout#timeout): since async_interrupt_timing
- re-raises a deferred exception, replace the timeout exception with
- Timeout::Error after it. [Bug #7503]
-
-Fri Dec 7 13:07:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * doc/forwardable.rd: Remove stale documentation file
- * lib/forwardable.rb: Merge documentation from doc/forwardable.rd
-
-Fri Dec 7 09:47:35 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * time.c (time_mdump): dump timezone string to private instance variable
- on marshaling.
-
- * time.c (time_mload): load timezone string from private instance
- variable named 'zone'.
-
-Fri Dec 7 01:15:07 2012 Naohisa Goto <ngotogenome@gmail.com>
-
- * ext/fiddle/lib/fiddle/function.rb (Fiddle::Function#name): new
- attribute needed to switch Win32::Registry from DL to Fiddle.
-
- * ext/fiddle/lib/fiddle/import.rb (import_function, bind_function):
- set function name to the returned Fiddle::Function object.
-
-Fri Dec 7 00:11:44 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * test/ruby/test_refinement.rb: fix some tests to use neither
- Module#using nor Module#module_eval.
-
-Thu Dec 6 23:27:50 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * eval.c (ruby_Init_refinement): a new function to enable
- Refinements with a warning "Refinements are experimental...".
-
- * ext/refinement/refinement.c, ext/refinement/extconf.rb: a new
- extension library to enable Refinements.
-
-Thu Dec 6 18:23:05 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * revised r37993 to avoid SEGV/ILL in tests. In r37993, a method
- entry with VM_METHOD_TYPE_REFINED holds only the original method
- definition, so ci->me is set to a method entry allocated in the
- stack, and it causes SEGV/ILL. In this commit, a method entry
- with VM_METHOD_TYPE_REFINED holds the whole original method entry.
- Furthermore, rb_thread_mark() is changed to mark cfp->klass to
- avoid GC for iclasses created by copy_refinement_iclass().
-
- * vm_method.c (rb_method_entry_make): add a method entry with
- VM_METHOD_TYPE_REFINED to the class refined by the refinement if
- the target module is a refinement. When a method entry with
- VM_METHOD_TYPE_UNDEF is invoked by vm_call_method(), a method with
- the same name is searched in refinements. If such a method is
- found, the method is invoked. Otherwise, the original method in
- the refined class (rb_method_definition_t::body.orig_me) is
- invoked. This change is made to simplify the normal method lookup
- and to improve the performance of normal method calls.
-
- * vm_method.c (EXPR1, search_method, rb_method_entry),
- vm_eval.c (rb_call0, rb_search_method_entry): do not use
- refinements for method lookup.
-
- * vm_insnhelper.c (vm_call_method): search methods in refinements if
- ci->me is VM_METHOD_TYPE_REFINED. If the method is called by
- super (i.e., ci->call == vm_call_super_method), skip the same
- method entry as the current method to avoid infinite call of the
- same method.
-
- * class.c (include_modules_at): add a refined method entry for each
- method defined in a module included in a refinement.
-
- * class.c (rb_prepend_module): set an empty table to
- RCLASS_M_TBL(klass) to add refined method entries, because
- refinements should have priority over prepended modules.
-
- * proc.c (mnew): use rb_method_entry_with_refinements() to get
- a refined method.
-
- * vm.c (rb_thread_mark): mark cfp->klass for iclasses created by
- copy_refinement_iclass().
-
- * vm.c (Init_VM), cont.c (fiber_init): initialize th->cfp->klass.
-
- * test/ruby/test_refinement.rb (test_inline_method_cache): do not skip
- the test because it should pass successfully.
-
- * test/ruby/test_refinement.rb (test_redefine_refined_method): new
- test for the case a refined method is redefined.
-
-Thu Dec 6 17:29:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (parser_here_document): flush string content between new
- line and :string_embexpr. [ruby-core:48703] [Bug #7255]
-
-Thu Dec 6 16:35:21 2012 Eric Hodel <drbrain@segment7.net>
-
- * test/rake/helper.rb: Load envutil correctly. Removed useless rescue
- for signal propagation tests
- * lib/rake/file_utils.rb: Prefer the built ruby.
- * test/rake/test_rake_functional.rb: ditto
-
-Thu Dec 6 15:20:34 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/context.rb: Don't warn for duplicate methods while loading.
- * test/rdoc/test_rdoc_context.rb: Test for above.
-
-Thu Dec 6 14:26:22 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/command_manager.rb: Removed string concatenation
- syntax. [Bug #6265]
- * lib/rubygems/commands/install_command.rb: ditto
- * lib/rubygems/commands/uninstall_command.rb: ditto
- * lib/rubygems/indexer.rb: ditto
- * lib/rubygems/security/policy.rb: ditto
- * lib/rubygems/security.rb: ditto
- * lib/rubygems/uninstaller.rb: ditto
- * test/rubygems/test_gem_commands_cert_command.rb: ditto
- * test/rubygems/test_gem_package.rb: ditto
- * test/rubygems/test_gem_security.rb: ditto
- * test/rubygems/test_gem_security_policy.rb: ditto
-
-Thu Dec 6 14:10:08 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/package.rb: Set rubygems_version before validation.
- Fixes issue with bundler.
- * test/rubygems/test_gem_package.rb: Test for above.
-
- * lib/rubygems/remote_fetcher.rb: Only update the cache when we have
- permission. [ruby-trunk - Bug #7509]
- * lib/rubygems/source.rb (class Gem): ditto
- * test/rubygems/test_gem_remote_fetcher.rb: Test for above.
- * lib/rubygems/test_utilities.rb: ditto
-
- * lib/rubygems/specification.rb: Derive base_dir properly for default
- gems. [ruby-trunk - Bug #7496]
- * test/rubygems/test_gem_specification.rb: Test for above.
-
- * lib/rubygems.rb: Untaint Dir.pwd when searching for gemdeps files
- for operation under $SAFE=1
-
-Thu Dec 06 12:07:11 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_trace.c: TracePoint#enable should not cause an error
- when it is already enabled. TracePoint#disable is too.
- [ruby-core:50561] [ruby-trunk - Bug #7513]
-
- * test/ruby/test_settracefunc.rb: add tests.
-
-Thu Dec 6 07:19:58 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc*: Improved display of ChangeLog files as HTML.
- * test/rdoc*: Test for above.
-
-Thu Dec 6 04:34:19 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_uninterruptible): helper function for providing
- temporary async_interrupt_timing(Object => :defer)
-
- * io.c (rb_f_p): use rb_uninterruptible.
- * io.c (rb_f_p_internal): helper function for rb_f_p().
- * io.c (struct rb_f_p_arg): new struct for rb_f_p_internal.
-
- * test/ruby/test_thread.rb (test_async_interrupt_and_p): test for
- the above.
-
-Thu Dec 6 04:27:10 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (io_binwrite): check interrupt before io issue.
- * test/ruby/test_thread.rb (test_async_interrupt_and_io):
- test for the above.
-
-Thu Dec 6 01:10:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_eval.c (rb_method_call_status): use Qundef as no self instead of
- the current self.
-
- * vm_eval.c (send_internal): public_send does not consider how it is
- called, as mentioned in r14173. patched by charliesome (Charlie
- Somerville). [ruby-core:50489] [Bug #7499]
-
-Wed Dec 5 23:50:23 2012 Narihiro Nakamura <authornari@gmail.com>
-
- * gc.c (getrusage_time): uses clock_gettime() with
- CLOCK_PROCESS_CPUTIME_ID when available, which provides a 1ns
- precision on linux. [ruby-core:50495] [Bug #7500]
- patched by Aman Gupta.
-
-Wed Dec 5 22:46:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm.c (rb_vm_make_proc): save the proc made from the given block so
- that it will not get collected. [ruby-core:50545] [Bug #7507]
-
-Wed Dec 5 22:13:57 2012 Naohisa Goto <ngotogenome@gmail.com>
-
- * ext/dl/lib/dl/func.rb (DL::Function#bind): When Fiddle is used,
- @ptr should be updated. This fixes SEGV raised in DL::Function#call
- after calling DL::Function#bind. [Bug #7516] [ruby-dev:46708]
-
- * test/dl/test_func.rb (test_bind): test for the above
-
-Wed Dec 5 18:53:00 2012 Masaya Tarui <tarui@ruby-lang.org>
-
- * thread.c (rb_thread_s_async_interrupt_timing): have to check ints
- before jumping out.
- * test/ruby/test_thread.rb (test_async_interrupt_with_return): add test
- rescue has to catch a queued async exception at the time of return.
- * test/ruby/test_thread.rb (test_async_interrupt_with_break): add test
- rescue has to catch a queued async exception at the time of break.
-
-Wed Dec 5 16:54:28 2012 Koichi Sasada <ko1@atdot.net>
-
- * test/ruby/memory_status.rb: suppress warning.
- A patch from NAKAMURA Usaku.
-
-Wed Dec 5 16:06:54 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/parser/changelog.rb: Parse more ChangeLog file variations.
- * test/rdoc/test_rdoc_parser_changelog.rb: Test for above.
-
-Wed Dec 5 12:17:11 2012 Naohisa Goto <ngotogenome@gmail.com>
-
- * ext/dl/lib/dl/func.rb (DL::Function#initialize, DL::Function#bind):
- ABI should be set by using CFunc#calltype even when Fiddle is used.
- When Fiddle is used and a block is given, name should not be ignored.
- [ruby-core:50562] [Bug #7514]
-
- * ext/dl/lib/dl/import.rb (DL::Importer#bind_function): should respect
- abi and name when Fiddle is used.
-
- * test/dl/test_func.rb (test_name_with_block): test for "name" method
- with giving a block.
-
-Wed Dec 5 11:55:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * doc/shell.rd, doc/shell.rd.ja: Removed stale doc files
- * lib/shell.rb, lib/shell/*: Merge and updates docs from doc/shell.rd*
-
-Wed Dec 5 11:42:38 2012 Koichi Sasada <ko1@atdot.net>
-
- * test/ruby/test_settracefunc.rb: disable trace.
-
-Wed Dec 5 11:37:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (MakeMakefile#macro_defined?): use clearly different
- strings from conflict markers.
-
-Wed Dec 5 04:25:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * lib/README: Add rdoc modeline directive and formatting libs
-
-Wed Dec 5 04:04:02 2012 Masaya Tarui <tarui@ruby-lang.org>
-
- * test/ruby/test_thread.rb (test_async_interrupt_blocking): bugfix
- about deferred check
-
-Wed Dec 5 03:35:37 2012 Masaya Tarui <tarui@ruby-lang.org>
-
- * vm_core.h (RUBY_VM_CHECK_INTS_BLOCKING): check async queue everytime.
- * thread.c (sleep_forever): check RUBY_VM_CHECK_INTS_BLOCKING first.
- * thread.c (sleep_timeval): ditto.
- * test/ruby/test_thread.rb (test_async_interrupt_blocking): add a test
- exceptions are correctly deferred and raised on :on_blocking context.
-
-Wed Dec 5 02:36:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk, defs/id.def, template/id.c.tmpl: generate id.c as well as id.h.
-
-Wed Dec 5 00:56:21 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_mutex_owned_p): new method that return current
- thread have the target mutex or not. [Feature #7505] [ruby-dev:46697]
- * test/ruby/test_thread.rb (test_mutex_owned, test_mutex_owned2):
- test for the above.
- * NEWS: new for the above.
-
-Wed Dec 5 00:05:47 2012 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-
- * lib/erb.rb (make_compiler, add_put_cmd, add_insert_cmd): extract
- methods.
-
-Tue Dec 4 18:21:04 2012 Naohisa Goto <ngotogenome@gmail.com>
-
- * test/ruby/memory_status.rb (Memory): use fiddle/types if available.
-
- * test/ruby/memory_status.rb (Memory::Win32): :stdcall is needed on
- x86 WIN32. This commit partly reverts r38054.
-
-Tue Dec 4 18:05:58 2012 Naohisa Goto <ngotogenome@gmail.com>
-
- * ext/fiddle/lib/fiddle/types.rb: copied from ext/dl/lib/dl/types.rb
- and modified for Fiddle, needed for migration from DL to Fiddle.
-
-Tue Dec 4 17:57:09 2012 Naohisa Goto <ngotogenome@gmail.com>
-
- * ext/fiddle/lib/fiddle/import.rb (import_function, bind_function):
- should respect call_type for migration from DL to Fiddle.
- [Bug #7484] [ruby-core:50405]
-
-Tue Dec 4 16:54:00 2012 Eric Hodel <drbrain@segment7.net>
-
- * .document: Added ChangeLog and doc/ChangeLog-* as documentation
-
-Tue Dec 4 16:47:46 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/parser/changelog.rb: Added a ChangeLog parser to RDoc.
- * lib/rdoc/parser.rb: ditto
- * test/rdoc/test_rdoc_parser_changelog.rb: Test for above.
-
-Tue Dec 4 16:23:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * marshal.c (path2class, path2module): use PRIsVALUE.
-
- * marshal.c (w_object, marshal_dump, marshal_load): use
- rb_check_funcall if possible.
-
- * marshal.c (w_object, marshal_dump, r_object0, marshal_load): use
- RB_GC_GUARD() (directly or indirectly) instead of volatile.
-
- * variable.c (rb_path_to_class): prevent the argument from GC.
-
-Tue Dec 04 13:55:07 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_opts.h: enable optimization - operand unification.
- Operand unification technique enable to combine
- an instruction and specific operands and make new
- instruction.
-
- * defs/opt_operand.def: add several configuration
- of operand unification.
-
- * insns.def: use `int' instead to suppress warning.
-
-Mon Dec 3 17:58:53 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * parse.y: replace parser->enc with current_enc.
-
-Tue Dec 4 08:33:46 2012 Eric Hodel <drbrain@segment7.net>
-
- * README.EXT: Converted to RDoc format
- * README.EXT.ja: ditto
-
-Tue Dec 4 08:32:10 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/ri/driver.rb: Fixed ri page display for files with
- extensions.
- * test/rdoc/test_rdoc_ri_driver.rb: Test for above
-
-Tue Dec 4 04:11:50 2012 Eric Hodel <drbrain@segment7.net>
-
- * .document: Add NEWS for `ri ruby:NEWS`
- * NEWS: Set format as rdoc
- * doc/NEWS-1.8.7: ditto
- * doc/NEWS-1.9.1: ditto
- * doc/NEWS-1.9.2: ditto
- * doc/NEWS-1.9.3: ditto
-
-Mon Dec 3 20:37:22 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_exec.c: check VM_COLLECT_USAGE_DETAILS.
-
-Mon Dec 3 20:28:02 2012 Koichi Sasada <ko1@atdot.net>
-
- * compile.c (iseq_specialized_instruction):
- change condition of using `opt_send_simple'.
- More method invocations can be simple.
-
-Mon Dec 3 20:03:38 2012 Koichi Sasada <ko1@atdot.net>
-
- * test/ruby/test_objectspace.rb: skip RuntimeError
- which says a message "can't modify frozen File".
- Is that correct behavior?
-
-Mon Dec 03 20:00:19 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_exec.c: vm_analysis_insn should be static.
-
-Mon Dec 3 19:10:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * random.c (Init_Random), rational.c (Init_Rational): make marshal
- methods private. [Feature #6539]
-
-Mon Dec 3 18:29:27 2012 Koichi Sasada <ko1@atdot.net>
-
- * iseq.h: iseq_catch_table_entry::catch_type should be
- Fixnum because they are pushed into Array in a compiler.
- [Bug #7502]
-
- * test/ruby/test_objectspace.rb: add a test of this issue.
-
-Mon Dec 3 18:25:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * template/id.h.tmpl (preserved_ids): "empty?" is not an attribute name.
-
-Mon Dec 3 16:23:09 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_backtrace.c (vm_backtrace_to_ary): check negative size (2nd arg).
-
-Mon Dec 3 15:50:33 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * misc/ruby-additional.el (ruby-mode-set-encoding): Unbreak by
- fixing a typo, s/set/setq/.
-
-Mon Dec 3 14:14:19 2012 Koichi Sasada <ko1@atdot.net>
-
- * compile.c (iseq_compile_each): joke shouldn't use id.h defined ids.
-
- * id.c (Init_id): ditto.
-
- * common.mk: fix dependency.
-
-Mon Dec 3 12:43:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * misc/ruby-mode.el (ruby-block-end-re, ruby-delimiter)
- (ruby-mode-syntax-table, ruby-parse-partial, ruby-beginning-of-indent):
- merge from Emacs.
-
- * misc/ruby-mode.el (ruby-calculate-indent): fix indentation of
- argument lines in parentheses. [Bug #5140]
-
-Mon Dec 3 07:52:41 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/parser.rb: Improved modeline support. Patch by nobu.
- * test/rdoc/test_rdoc_parser.rb: Test for above.
+Thu Jun 30 09:30:14 2011 Eric Hodel <drbrain@segment7.net>
-Sun Dec 3 00:06:00 2012 Kenta Murata <mrkn@mrkn.jp>
+ * lib/yaml.rb: Document toplevel YAML and YAML::ENGINE to describe
+ Psych vs Syck engines.
- * ext/bigdecimal/bigdecimal.c (BigDecimal_new): stop checking string
- taintness. [Bug #5508] [ruby-core:40510]
+Thu Jun 30 09:21:52 2011 Eric Hodel <drbrain@segment7.net>
-Sun Dec 2 19:26:47 2012 Masaya Tarui <tarui@ruby-lang.org>
+ * lib/cmath.rb: Hide handle_no_method_error from RDoc.
+ * error.c: Document or hide undocumented error classes.
- * thread.c (RB_GC_SAVE_MACHINE_CONTEXT, rb_gc_save_machine_context):
- extract rb_gc_save_machine_context to RB_GC_SAVE_MACHINE_CONTEXT.
- NOTE: machine_regs and machine_stack_end must be set in current scope.
+Thu Jun 30 07:49:04 2011 Eric Hodel <drbrain@segment7.net>
-Sun Dec 2 18:46:24 2012 Koichi Sasada <ko1@atdot.net>
+ * hash.c: Document ENV
- * array.c, enum.c, insns.def, io.c, numeric.c, parse.y, process.c,
- range.c: use prepared IDs.
- A patch from charliesome (Charlie Somerville).
- [Bug #7495]
+Thu Jun 30 06:37:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * common.mk: add dependency to id.h.
+ * ruby.c (ruby_init_loadpath_safe): ensure RUBYLIB_PREFIX stored
+ before RUBYLIB, even if MANGLED_PATH is enabled. fixed #1679.
+ MANGLED_PATH is disabled by the default and will be removed
+ completely in the future.
- * common.mk: replace ID_H_INCLUDES with id.h.
+Thu Jun 30 06:32:21 2011 Eric Hodel <drbrain@segment7.net>
-Sun Dec 2 16:48:00 2012 Zachary Scott <zachary@zacharyscott.net>
+ * lib/drb/drb.rb: Hide deprecated toplevel DRb constants.
- * lib/weakref.rb (rdoc): Clean up usage, add example,
- note ArgumentError on WeakRef.new
+Thu Jun 30 06:17:02 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Dec 2 16:45:00 2012 Zachary Scott <zachary@zacharyscott.net>
+ * lib/cmath.rb (CMath.log): second argument: b can be nil.
- * gc.c (WeakMap): Add doc for internal reference, use lib/weakref.rb
+Thu Jun 30 06:23:28 2011 Eric Hodel <drbrain@segment7.net>
-Sun Dec 2 07:24:23 2012 Eric Hodel <drbrain@segment7.net>
+ * thread.c (ruby_thread_s_pass): Fix typo.
- * lib/rdoc/parser.rb: Parse files with a -*- rdoc -*- modeline
- * test/rdoc/test_rdoc_parser.rb: Test for above
+Thu Jun 30 06:16:53 2011 Eric Hodel <drbrain@segment7.net>
-Sun Dec 2 06:02:00 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * lib/rdoc: Update to RDoc 3.8 which contains fixes for documentation
+ in trunk.
- * gc.h (SET_MACHINE_STACK_END): add volatile for preventing
- harmful optimization. [ruby-dev:46665] [Bug #7468]
+Thu Jun 30 02:53:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sun Dec 2 05:01:58 2012 Koichi Sasada <ko1@atdot.net>
+ * thread.c (rb_threadptr_execute_interrupts_common): remove
+ meaningless native_thread_yield(). It never close a race.
- * iseq.c (rb_iseq_line_trace_each): iterate `line' event only.
+Thu Jun 30 02:41:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/ruby/test_iseq.rb: add a test for this change.
+ * thread.c (rb_thread_schedule_limits): minor optimization.
+ eliminate machine context saving when running time is enough small.
-Sun Dec 2 02:46:04 2012 Koichi Sasada <ko1@atdot.net>
+Thu Jun 30 02:28:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * vm_trace.c: add TracePoint#inspect.
+ * thread.c (rb_thread_schedule_rec): move interrupt_flag check to
+ rb_thread_schedule().
+ And also rename to rb_thread_schedule_limits() and remove
+ sched_depth argument. It's no longer called recursive.
+ * thread.c (rb_thread_schedule): add to check interrupt_flag as
+ above explained.
- * test/ruby/test_settracefunc.rb: add a test for this change.
-
-Sat Dec 1 21:18:19 2012 Koichi Sasada <ko1@atdot.net>
-
- * test/ruby/test_backtrace.rb: add a test for
- Thread::Backtrace::Location#inspect.
- BTW, tests for `caller_locations' are not enough.
- Any volunteers are welcome.
-
-Sat Dec 1 21:06:58 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_backtrace.c (location_inspect_m): add
- Thread::Backtrace::Location#inspect.
- It same as loc_obj.to_s.inspect.
-
-Sat Dec 1 19:24:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (rb_io_puts): recurse for the argument itself, not converted
- array elements. [ruby-core:42444] [Bug #5986]
-
-Sat Dec 1 19:01:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * marshal.c (w_object, r_object0): call private marshal methods.
- [Feature #6539]
-
-Sat Dec 1 18:52:22 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/commands/cleanup_command.rb: Fix cleanup command for
- multiple gems. [ruby-trunk - #7481] by Kouhei Sutou
- * test/rubygems/test_gem_commands_cleanup_command.rb: Test for above.
- * lib/rubygems.rb: Autoload Gem::Source to prevent test failures
-
-Sat Dec 1 18:17:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * complex.c (Init_Complex), time.c (Init_Time): make marshal methods
- private. [Feature #6539]
-
- * object.c (Init_Object): make remove_instance_variable public.
- [Feature #6539]
-
- * id.c (Init_id), template/id.h.tmpl: add initialize_{copy,clone,dup}
- and respond_to_missing?.
-
- * vm_method.c (rb_method_entry_make): make above methods private.
- [Feature #6539]
-
-Sat Dec 1 16:40:22 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_thread.rb: move ConditionVariable related test
- into test/thread/test_cv.rb.
- * test/thread/test_cv.rb: new file.
- * test/thread/test_cv.rb (test_condvar_empty_signal): new tests.
- * test/thread/test_cv.rb (test_condvar_empty_broadcast): ditto.
-
-Sat Dec 1 15:14:25 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_thread.rb (test_cv_wait_deadlock): enable
- cv deadlock test.
-
-Sat Dec 1 14:23:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * lib/thread.rb (ConditionVariable): use hash instead of array for
- @waiters.
- * test/thread/test_queue.rb (test_sized_queue_and_wakeup): remove
- a test because @waiters no longer have a chance to duplicated. Now it's
- a hash.
-
-Sat Dec 1 17:16:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * misc/ruby-electric.el (ruby-electric-curlies): use kill-region
- instead of interactive command delete-backward-char.
-
-Sat Dec 1 17:12:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * misc/inf-ruby.el (inferior-ruby-mode): fix the
- compilation-shell-minor-mode configuration. a patch by
- j2petkov (Jean-Christophe Petkovich) in [ruby-core:46518].
- [Bug #6742]
-
-Sat Dec 1 15:05:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dir.c (glob_helper): use NAMLEN() to tell the length of d_name
- instead of strlen(), which can access beyond the boundary.
-
-Sat Dec 1 13:48:13 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/specification.rb: Don't add default gems to $LOAD_PATH
- as they are already there.
-
-Sat Dec 1 12:22:17 2012 Kouhei Sutou <kou@cozmixng.org>
-
- * re-added r38053 that is reverted by r38061. Problems by r38053
- are resolved by r38096. r38096 removed GEM_SKIP configuration.
-
- The below is ChangeLog of r38053:
-
- * defs/default_gems: Add base directory column.
-
- * tool/rbinstall.rb:
- - Install .gemspecs of default gem to
- #{GEM_HOME}/specifications/default/.
- - Update files parameter of .gemspecs by relative path from
- library directory.
-
-Sat Dec 1 11:09:12 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * variable.c (rb_class_path_no_cache): add a function to get the class
- path without caching the computed path. Some classes are frozen, and
- will raise an exception without this.
-
- * probes.d (cmethod-entry, cmethod-return): separate cmethods from
- regular methods to match set trace func.
-
- * probes_helper.h: refactor macros. Fix probes to avoid calling
- #inspect when profiling.
-
- * insns.def: update for use with new macros.
-
- * vm_eval.c: ditto
-
- * vm_insnhelper.c: ditto
-
- * test/dtrace/test_singleton_function.rb: fix test for new output.
-
- * test/dtrace/test_cmethod.rb: test the cmethod probes.
-
-Sat Dec 1 09:44:16 2012 Eric Hodel <drbrain@segment7.net>
-
- * test/rdoc/test_rdoc_options.rb: Windows drive letters are
- case-insensitive.
-
-Sat Dec 1 09:42:13 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems.rb: Search for gem deps file up the directory tree.
- * test/rubygems/test_gem.rb: Test for above.
-
-Sat Dec 1 09:33:32 2012 Eric Hodel <drbrain@segment7.net>
-
- * test/runner.rb: Set GEM_HOME, GEM_PATH and GEM_SKIP to empty set.
- With default_gem support in RubyGems GEM_SKIP prevents loading of
- built-in gems.
-
-Sat Dec 1 07:16:17 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * compile.c (ADD_CATCH_ENTRY): add a cast to fix SEGV with x64 mingw
- on Windows 8. Without cast, 0 might be non zero value at higher bits
- in rb_ary_new3().
- [ruby-core:50258] [Bug #7456]
-
-Sat Dec 1 04:07:57 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * parse.y (parser.utf8): remove unused property.
-
- * parse.y (UTF8_ENC): remove unused macro.
-
- * parse.y (parser_tokadd_utf8): use rb_utf8_encoding() directly.
-
-Sat Dec 1 03:49:45 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * lib/sync.rb (Sync_m#sync_synchronize): add Thread.async_interrupt_timing
- for protecting from async interrupt.
- * lib/sync.rb (Sync_m#sync_lock): ditto.
-
-Sat Dec 1 03:38:04 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * lib/thread.rb (ConditionVariable#broadcast): s/RuntimeError/StandardError/
- * lib/thread.rb (ConditionVariable#signal): ditto.
-
-Sat Dec 1 03:29:52 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * lib/thread.rb (SizedQueue#pop): rewrite by using ConditionVariable.
- * lib/thread.rb (SizedQueue#push): ditto.
- * lib/thread.rb (SizedQueue#max): ditto.
- * lib/thread.rb (Queue#pop): ditto.
- * lib/thread.rb (Queue#push): ditto.
-
- * lib/thread.rb (SizedQueue#num_waiting): adopt the above changes.
- * lib/thread.rb (SizedQueue#initialize): ditto.
- * lib/thread.rb (Queue#num_waiting): ditto.
- * lib/thread.rb (Queue#initialize): ditto.
- * test/thread/test_queue.rb (test_sized_queue_and_wakeup): ditto.
-
-Sat Dec 1 03:45:47 2012 Koichi Sasada <ko1@atdot.net>
-
- * thread.c (Thread.async_interrupt_timing): fix RDoc.
- :never is not used any more.
-
-Sat Dec 1 02:56:19 2012 Koichi Sasada <ko1@atdot.net>
-
- * iseq.c: add RubyVM::InstructionSequence (ISeq) inspection methods.
- * ISeq#path returns path of this ISeq written.
- * ISeq#absolute_path returns absolute path.
- * ISeq#label returns label (method name and so on).
- * ISeq#base_label returns base label (see Thread::Backtrace::Location).
- * ISeq#first_lineno returns first line number of this ISeq.
- * ISeq.of(obj) returns ISeq object which obj (Proc or Method)
- is contains.
-
- * test/ruby/test_iseq.rb: add tests.
-
-Sat Dec 1 02:58:51 2012 Eric Hodel <drbrain@segment7.net>
-
- * include/ruby/ruby.h (rb_event_flag_t): Maintain integer precision
- for clang error (VALUE aka unsigned long vs unsigned int)
-
-Sat Dec 1 02:53:18 2012 Eric Hodel <drbrain@segment7.net>
-
- * test/rubygems/test_gem_dependency_installer.rb: Use Gem.read_binary
- instead of File.binread for ruby 1.8 compatibility in the rubygems
- source repository. Updates r38075
-
-Sat Dec 1 02:33:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_threadptr_interrupt_mask, async_interrupt_timing_func):
- merge into them into rb_thread_s_async_interrupt_timing.
- * thread.c (rb_thread_s_async_interrupt_timing): ditto.
-
-Sat Dec 1 02:11:47 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_threadptr_interrupt_mask): add argument check.
- * thread.c (async_interrupt_timing_arg_check_i): helper function
- for the above.
- * test/ruby/test_thread.rb (test_async_interrupt_timing_invalid_argument):
- test for the above.
-
-Sat Dec 1 01:19:34 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * lib/thread.rb (ConditionVariable#broadcast): protect from
- async interrupt by using Thread.async_interrupt_timing.
- * lib/thread.rb (ConditionVariable#signal): ditto.
- * lib/thread.rb (ConditionVariable#wait): ditto.
-
-Sat Dec 1 02:04:23 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * test/ruby/envutil.rb (Test::Unit::Assertions#assert_in_out_err):
- raise if assert_in_out_err misused.
-
-Sat Dec 1 02:08:16 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/rdoc/test_rdoc_rubygems_hook.rb
- (TestRDocRubygemsHook#test_setup_unwritable): 1. check the existence
- of the file(directory) before touch it. 2. remove test
- file(directory) after the test. see [ruby-core:50388].
-
-Sat Dec 1 01:51:06 2012 Koichi Sasada <ko1@atdot.net>
-
- [EXPERIMENTAL]
- * iseq.c: add following two methods.
- * ISeq#line_trace_all returns all line traces (line numbers)
- * ISeq#line_trace_specify(pos, set) set `pos'th line event to
- specified_line event (if set is true).
- These features are introduced for debuggers (mainly to make
- breakpoint).
-
- * iseq.h: add decl. of C APIs.
-
- * test/ruby/test_iseq.rb: add tests.
-
- * vm_trace.c: add `specified_line' event.
-
- * include/ruby/ruby.h: ditto.
-
-Sat Dec 1 01:49:52 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/rubygems/test_gem_dependency_installer.rb: gems are of course
- binary files, so use a binary reading method when reading it.
- see [ruby-core:50388].
-
-Sat Dec 1 01:21:07 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/rubygems/command.rb (Gem::Command#get_all_gem_names_and_versions):
- who assumes that the pathname of a gem never contains ':' ?
- yes, on Unixen pathnames can contain ':', and on Windows they almost
- certainly contain ':'. see [ruby-core:50388].
-
- * lib/rubygems/requirement.rb (Gem::Requirement::PATTERN_RAW): extract
- the regexp to match the version specifier from PATTERN to use in
- above method.
-
-Sat Dec 1 00:48:19 2012 Naohisa Goto <ngotogenome@gmail.com>
-
- * ext/fiddle/extconf.rb, ext/fiddle/function.c
- (Fiddle::Function::STDCALL): FFI_STDCALL is not a macro, but an
- enumeration. [ruby-core:50398] [Bug #7483]
-
-Sat Dec 1 00:08:55 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/rubygems/test_gem_installer.rb
- (TestGemInstaller#test_check_executable_overwrite_other_non_gem):
- on Windows, rubygems always generate a wrapper .bat file when
- installing a file into bin, so testing no-overwrite a wrapper file
- and a non-wrapper file is nonsense. see [ruby-core:50388].
-
-Fri Nov 30 23:39:58 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/rubygems/test_gem_installer.rb
- (TestGemInstaller#test_check_executable_overwrite_default_bin_dir):
- if the executable to be overwritten was generated by rubygems, the
- error message differs from the only copied one's.
- see [ruby-core:50388].
-
-Fri Nov 30 23:27:26 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/rubygems/test_gem_ext_ext_conf_builder.rb
- (TestGemExtExtConfBuilder::test_class_make): reading with binary mode
- of course introduce \r on Windows. see [ruby-core:50388].
-
-Fri Nov 30 23:11:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/rubygems/specification.rb
- (Gem::Specification.validate_permissions): don't check executability
- of the source on Windows. they will be wrapped to .bat files when
- installing. see [ruby-core:50388].
-
-Fri Nov 30 22:44:14 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * vm_core.h (rb_vm_struct): add thread_destruct_lock field.
- * thread.c (Init_Thread): ditto.
- * thread.c (rb_vm_gvl_destroy): ditto.
-
- * thread.c (thread_start_func_2): make sure vm->running_thread
- don't point to dead thread.
- * thread.c (timer_thread_function): close a race against thread
- destruction. [Bug #4911][ruby-dev:43859]
-
- * vm_core.h (rb_thread_set_current): reset running time of
- current thread instead of previous thread. We no longer
- assume previous running thread still live.
-
-Fri Nov 30 21:57:43 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * revert r38053 because it causes too many test failures.
- if you've already installed r38053 or later, remove the installed
- lib/ruby/gems/2.0.0 directory and reinstall this revision or later.
-
-Fri Nov 30 21:07:56 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/test/unit/parallel.rb (Test::Unit::Worker.run): wrap LoadError
- because it's Gem::LoadError sometimes. see [Bug #6882]
-
-Fri Nov 30 20:47:44 2012 Koichi Sasada <ko1@atdot.net>
-
- * thread.c: TracePoint#self returns invoking/exiting thread object
- at thread_begin/end event.
-
- * test/ruby/test_settracefunc.rb: fix test.
-
-Fri Nov 30 19:55:17 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/memory_status.rb (Memory::Win32): use fiddle instead of dl,
- but I doubt fiddle is not compatible with dl. (if you are interested,
- see the diff.) [ruby-core:50194] [Bug #7443]
-
-Fri Nov 30 19:37:44 2012 Kouhei Sutou <kou@cozmixng.org>
-
- * defs/default_gems: Add base directory column.
-
- * tool/rbinstall.rb:
- - Install .gemspecs of default gem to
- #{GEM_HOME}/specifications/default/.
- - Update files parameter of .gemspecs by relative path from
- library directory.
-
-Fri Nov 30 19:30:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * vm_trace.c:
- tracepoint_attr_return_value (TracePoint#return_value):
- include `:b_return` for method doc
- tracepoint_enable_m, tracepoint_disable_m (#enable/#disable):
- don't have block argument, document block scope
-
-Fri Nov 30 18:52:56 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_trace.c (tracepoint_disable_m, tracepoint_enable_m):
- fix block parameter.
- No argument should be given to a block which is passed
- to TracePoint#enable (and disable).
-
-Fri Nov 30 18:23:26 2012 Koichi Sasada <ko1@atdot.net>
-
- * thread.c: rename Thread.control_interrupt
- to Thread.async_interrupt_timing.
- The option name `:never' is also changed to `:defer'.
- [ruby-core:50375] [ruby-trunk - Feature #6762]
-
- * thread.c: remove Thread.check_interrupt.
- This method is difficult to understand by name.
-
- * thread.c: add Thread.async_interrupted?.
- This method check any deferred async interrupts.
-
- * test/ruby/test_thread.rb: change tests for above.
-
-Fri Nov 30 18:24:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * vm_trace.c: Documentation for TracePoint API
- [ruby-core:47243] [Feature #6895]
-
-Fri Nov 30 17:43:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (rb_str_cmp_m): try to compare with to_str result if
- possible before calling <=> method. [ruby-core:49279] [Bug #7342]
-
- * string.c (rb_str_cmp_m): use rb_check_funcall instead of respond_to
- and call.
-
- * string.c (rb_str_cmp_m): return fixed value, one of -1,0,+1 always.
-
-Fri Nov 30 16:19:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_dump.c (rb_vm_bugreport): get rid of calling methods in sigsegv
- handler. based on a patch by charliesome (Charlie Somerville)
- [ruby-core:49573] [Bug #7402]
-
-Fri Nov 30 16:05:44 2012 Eric Hodel <drbrain@segment7.net>
-
- * NEWS: Added RubyGems 2.0.0
-
-Fri Nov 30 15:24:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (parser_yylex): fix false usage of local variable, it cannot
- appear in fname state [ruby-core:49659] [Bug #7408]
-
-Fri Nov 30 15:20:12 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/package.rb: Load YAML for building gems.
- * test/rubygems/test_gem_commands_contents_command.rb: Sort expected
- output of default gem contents. Re-fixes r38004 and r38005.
-
-Fri Nov 30 15:15:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * vm_trace.c (set_trace_func): Formatting of params and events
-
-Fri Nov 30 14:45:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * lib/net/http.rb: Net::HTTP::Patch to list of HTTP Request Classes
- Patch by Ryunosuke SATO [Fixes #217 on github]
-
-Fri Nov 30 14:05:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * lib/cgi.rb: CGI example for HTML generation
- Patch by Marcus Stollsteimer [ruby-core:50303] [Bug #7465]
-
-Fri Nov 30 13:52:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * time.c: Documentation improvements, grammar and formatting
- Patch by Bernd Homuth [ruby-core:49203] [Bug #7326]
-
-Fri Nov 30 13:48:33 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc.rb: Set version to 4.0.0.preview2
- * lib/rubygems.rb: Set version to 2.0.0.preview2
-
-Fri Nov 30 13:11:53 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/commands/setup_command.rb: Remove old files on install
- of RubyGems. (not by rbinstall.rb).
- * test/rubygems/test_gem_commands_setup_command.rb: Test for above.
-
-Fri Nov 30 12:47:59 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * lib/abbrev.rb (Abbrev#abbrev): A fixed string prefix pattern
- should only match the beginning of each word, not the beginning
- of every line in it.
-
- * lib/abbrev.rb (Abbrev#abbrev): Stop using a regexp that causes a
- false warning. [Bug #7471]
-
-Fri Nov 30 12:30:55 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * test/test_abbrev.rb: Add tests for lib/abbrev.rb.
-
-Fri Nov 30 12:27:51 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/spec_fetcher.rb: Allow prerelease spec fetching to fail
- for bundler.
- * test/rubygems/test_gem_spec_fetcher.rb: Test for above.
-
-Fri Nov 30 12:20:53 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rake/backtrace.rb: Removed duplication in
- Rake::Backtrace::SUPPRESSED_PATHS
- * test/rake/test_rake_backtrace.rb: Skip tests when tmpdir is in the
- suppressed pattern.
-
-Fri Nov 30 11:07:45 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * revert r37993 to avoid SEGV in tests.
-
-Fri Nov 30 10:38:54 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/ri/driver.rb: Relaxed matching for pages to be more
- user-friendly.
- * test/rdoc/test_rdoc_ri_driver.rb: Test for above.
-
-Fri Nov 30 09:50:16 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/markdown.rb: Fixed warnings with -w
-
-Fri Nov 30 09:38:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/ruby.h (RB_GC_GUARD_PTR): add note.
-
- * vm_backtrace.c (backtrace_to_str_ary): use RB_GC_GUARD() instead of
- RB_GC_GUARD_PTR() which has no effect.
- (backtrace_to_location_ary): ditto.
- (vm_backtrace_to_ary): ditto.
-
-Fri Nov 30 09:22:52 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/commands/contents_command.rb: Sort output from command.
- Replaces r38004, r38005
- * test/rubygems/test_gem_commands_contents_command.rb: ditto.
-
- * lib/rubygems/defaults.rb: Use Gem.path_separator for jruby support.
- * lib/rubygems/path_support.rb: ditto
-
-Fri Nov 30 08:34:03 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/generator/darkfish.rb: Silenced warning
- * test/rdoc/test_rdoc_rdoc.rb: ditto
-
- * lib/rdoc/markup/parser.rb: Use byteslice when available for
- performance
- * test/rdoc/test_rdoc_markup_parser.rb: Test for above
- * lib/rdoc/test_case.rb: ditto
-
- * lib/rdoc/parser/ruby.rb: Fixed bug parsing yield({})
- * test/rdoc/test_rdoc_parser_ruby.rb (end):
-
- * lib/rdoc/rubygems_hook.rb: Skip default gems. Display generator
- name properly.
- * test/rdoc/test_rdoc_rubygems_hook.rb: Test for above
-
- * lib/rdoc/servlet.rb: Fixed typo.
-
-Fri Nov 30 08:09:56 2012 Narihiro Nakamura <authornari@gmail.com>
-
- * gc.c : remove a unused function.
-
-Fri Nov 30 07:46:42 2012 Narihiro Nakamura <authornari@gmail.com>
-
- * gc.c (rb_objspace_call_finalizer): finalize_deferred may free up
- a object which is reachable from a part after this function,
- e.g. ruby_vm_destruct(). [ruby-dev:46647] [Bug #7452]
-
- * test/ruby/test_gc.rb (test_finalizing_main_thread): add a test
- for above.
-
-Fri Nov 30 07:43:44 2012 Koichi Sasada <ko1@atdot.net>
-
- * thread.c (rb_thread_interrupted): avoid warning of
- implicit conversion.
+ * thread.c (rb_threadptr_execute_interrupts_rec): rename to
+ rb_threadptr_execute_interrupts_common() and remove sched_depth
+ argument. It's no longer called recursive.
+ * thread.c (rb_thread_sleep): adapt the renaming.
* thread.c (rb_threadptr_execute_interrupts): ditto.
+ * thread.c (rb_thread_execute_interrupts): ditto.
-Fri Nov 30 07:34:28 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_backtrace.c: add GC guards.
-
-Fri Nov 30 07:21:33 2012 Koichi Sasada <ko1@atdot.net>
-
- [EXPERIMENTAL: NEED DISCUSS]
- * vm_trace.c: add events
- * :thread_begin - hook at thread beginning.
- * :thread_end - hook at thread ending.
- * :b_call - hook at block enter.
- * :b_return - hook at block leave.
- This change slow down block invocation.
- Please try and give us feedback until 2.0 code freeze.
-
- * include/ruby/ruby.h: ditto.
-
- * compile.c (rb_iseq_compile_node): ditto.
-
- * insns.def: ditto.
-
- * thread.c: ditto.
-
- * vm.c: ditto.
-
- * include/ruby/debug.h: add a comment.
-
- * test/ruby/test_settracefunc.rb: add a tests.
-
-Fri Nov 30 06:56:30 2012 Ryan Davis <ryand-ruby@zenspider.com>
-
- * test/minitest/*: Imported minitest 4.3.2 (r8027)
-
-Fri Nov 30 04:16:29 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rake/*: Updated to rake 0.9.5
- * test/rake/*: ditto.
- * NEWS: ditto.
-
-Fri Nov 30 02:53:47 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * vm.c: add a return hook when a method raises an exception.
-
- * probes_helper.h: look up klass and method if none are provided.
-
- * eval.c: update macro usage.
-
- * vm_eval.c: ditto.
-
- * vm_insnhelper.c: ditto.
-
- * test/dtrace/test_function_entry.rb: test for change.
-
-Fri Nov 30 02:27:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * compile.c (compile_array_): refix r37991 remove assertion:
- it is true only if type == COMPILE_ARRAY_TYPE_HASH.
- [ruby-dev:46658] [Bug #7466]
-
- * vm.c (m_core_hash_from_ary): add assertion instead of above.
-
- * vm.c (m_core_hash_merge_ary): ditto.
-
-Thu Nov 29 19:15:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * compile.c (compile_array_): hash elements must be paired even for
- literal elements. [ruby-dev:46658] [Bug #7466]
-
-Thu Nov 29 22:39:35 2012 Naohisa Goto <ngotogenome@gmail.com>
-
- * ext/openssl/ossl_ssl.c (ssl_npn_encode_protocol_i): fix byte order
- issue on big-endian architecture [ruby-core:50292] [Bug #7463]
-
-Thu Nov 29 22:23:31 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * test/openssl/test_cipher.rb (test_ctr_if_exists): add CTR mode test
- if underlying OpenSSL supports it. See #4408
-
-Thu Nov 29 21:42:16 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_method.c (rb_method_entry_make): add a method entry with
- VM_METHOD_TYPE_REFINED to the class refined by the refinement if
- the target module is a refinement. When a method entry with
- VM_METHOD_TYPE_UNDEF is invoked by vm_call_method(), a method with
- the same name is searched in refinements. If such a method is
- found, the method is invoked. Otherwise, the original method in
- the refined class (rb_method_definition_t::body.orig_def) is
- invoked. This change is made to simplify the normal method lookup
- and to improve the performance of normal method calls.
-
- * vm_method.c (EXPR1, search_method, rb_method_entry),
- vm_eval.c (rb_call0, rb_search_method_entry): do not use
- refinements for method lookup.
-
- * vm_insnhelper.c (vm_call_method): search methods in refinements if
- ci->me is VM_METHOD_TYPE_REFINED. If the method is called by
- super (i.e., ci->call == vm_call_super_method), skip the same
- method entry as the current method to avoid infinite call of the
- same method.
-
- * class.c (include_modules_at): add a refined method entry for each
- method defined in a module included in a refinement.
-
- * class.c (rb_prepend_module): set an empty table to
- RCLASS_M_TBL(klass) to add refined method entries, because
- refinements should have priority over prepended modules.
-
- * proc.c (mnew): use rb_method_entry_with_refinements() to get
- a refined method.
-
- * test/ruby/test_refinement.rb (test_inline_method_cache): do not skip
- the test because it should pass successfully.
-
- * test/ruby/test_refinement.rb (test_redefine_refined_method): new
- test for the case a refined method is redefined.
-
-Thu Nov 29 17:45:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * variable.c (rb_const_set): show namespace in warning messages.
- [Feature #7190]
-
-Thu Nov 29 17:31:53 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/rubygems.rb (Gem.load_yaml): return if Kernel#gem is not defined
- yet. This causes crash if test-all requires libraries in a certain
- order. A simple reproducible code is
- ruby --disable-gem -e'require"yaml";require"minitest/autorun"'
-
-Thu Nov 29 17:19:26 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/tracer.rb: Updated to match removal of custom_require from
- RubyGems.
- * test/test_tracer.rb: ditto. Improved failure message if the test
- fails
-
-Thu Nov 29 17:15:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * gc.c: Documentation for GC, GC::Profiler, ObjectSpace, and
- ObjectSpace::WeakMap [ruby-core:50245] [Bug #7449]
-
-Thu Nov 29 17:12:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/generic_erb.rb, tool/id2token.rb: add --path-separator option
- for mingw where make and built ruby live in different world.
-
- * tool/vpath.rb: extract from tool/instruction.rb.
-
-Thu Nov 29 17:11:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/io/wait/test_io_wait.rb (TestIOWait#fill_pipe):
- Errno::EWOULDBLOCK may not be the same as Errno::EAGAIN. patch by
- phasis68 (Heesob Park) at [ruby-core:49894]. [Bug #7420]
-
-Thu Nov 29 17:03:38 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/test_case.rb: Determine path to certificates to avoid
- build-dir problems.
- * test/rubygems/test_gem_security_signer.rb: Use predetermined paths
- to avoid build-dir problems.
-
-Thu Nov 29 16:18:14 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/test_case.rb: Disable loading of keys and certificates
- outside rubygems or ruby tests as the files are not available (or
- necessary).
-
-Thu Nov 29 16:14:41 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_backtrace.c (rb_debug_inspector_open): use RARRAY_LENINT() for
- int variable.
-
-Thu Nov 29 15:59:55 2012 Koichi Sasada <ko1@atdot.net>
-
- * include/ruby/debug.h: add rb_debug_inspector_* APIs.
-
- * vm_backtrace.c: ditto.
-
- * common.mk: add dependency from vm_backtrace.o to
- include/ruby/debug.h.
-
- * proc.c (rb_binding_new_with_cfp): constify.
+Thu Jun 30 01:31:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * vm.c (rb_vm_get_ruby_level_next_cfp): constify.
+ * thread.c (thread_s_pass): change RDoc description and remove
+ a sample code. The actual implementation never behave as explained by
+ an example. It's a documentation bug.
- * vm_core.h, vm_trace.c: move decls.
+Thu Jun 30 00:54:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Thu Nov 29 15:56:14 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * thread.c (rb_thread_stop): change RDoc sample code. The old
+ example is buggy and may cause deadlock. The patch is
+ suggested by Heesob Park <phasis@gmail.com>. Thank you!
+ [Bug #3606][ruby-core:31454]
- * lib/rdoc/test_case.rb (RDoc::TestCase#verbose_capture_io):
- defined for asserts of warnings.
+Thu Jun 30 00:49:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/rdoc: use verbose_capture_io on asserts of warnings.
- they failed when tests was run with RUBYOPT=-W0.
+ * thread.c (rb_thread_wakeup): change RDoc sample code. The old
+ example is buggy and may not display anything by a race.
+ The patch is suggested by Heesob Park <phasis@gmail.com>.
+ Thank you! [Bug #3606][ruby-core:31454]
-Thu Nov 29 15:53:38 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Jun 30 00:43:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/psych/extconf.rb: added --enable-bundled-libyaml option. this
- enforces using bundled libyaml.
+ * thread.c (rb_thread_run): change RDoc. The old example is buggy
+ and may cause deadlock. The patch is suggested by Heesob Park
+ <phasis@gmail.com>. Thank you! [Bug #3606][ruby-core:31454]
-Thu Nov 29 15:51:54 2012 Eric Hodel <drbrain@segment7.net>
+Thu Jun 30 00:30:15 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
- * lib/rubygems*: Updated to RubyGems 2.0
- * test/rubygems*: ditto.
+ * lib/cmath.rb: make same exception for Math. fix [Bug #3137].
- * common.mk (prelude): Updated for RubyGems 2.0 source rearrangement.
+Thu Jun 30 00:03:20 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
- * tool/change_maker.rb: Allow invalid UTF-8 characters in source
- files.
+ * lib/irb/completion.rb: complement correctly string literal. fix
+ [Bug #1145].
-Thu Nov 29 15:38:14 2012 Koichi Sasada <ko1@atdot.net>
+Wed Jun 29 23:42:51 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * include/ruby/debug.h: provide rb_tracearg_*() APIs,
- instead of rb_tracepoint_attr_*().
- These APIs are for debuggers/profilers.
- They will be explained in another docs sometime.
-
- * vm_trace.c: ditto.
-
-Thu Nov 29 15:10:45 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * test/minitest/test_minitest_unit.rb: restore orig_verbose only
- if it is set. This broke rdoc's tests.
- http://u64.rubyci.org/~chkbuild/ruby-trunk/log/20121129T050102Z.diff.html.gz
-
-Thu Nov 29 14:56:30 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_trace.c (rb_tracepoint_attr_method_id):
- rename TracePoint#id to TracePoint#method_id.
-
- * include/ruby/debug.h: ditto.
-
- * test/ruby/test_settracefunc.rb: ditto,
-
-Thu Nov 29 14:49:10 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_trace.c (rb_tracepoint_attr_defined_class):
- rename TracePoint#klass to TracePoint#defined_class.
- [ruby-core:50187] Re: [ruby-trunk - Feature #6895]
-
- * include/ruby/debug.h: ditto.
-
- * test/ruby/test_settracefunc.rb: ditto.
-
-Thu Nov 29 14:27:57 2012 Koichi Sasada <ko1@atdot.net>
-
- * gc.c (gc_stat): prepare Symbol objects at first time
- to make it fast.
-
-Thu Nov 29 14:02:15 2012 Koichi Sasada <ko1@atdot.net>
-
- * gc.c (gc_stat): GC.stat supports new information
- * total_allocated_object: total allocated object number.
- * total_freed_object: total freed object number.
- Above two numbers are only accumulated and they will
- overflow (return to 0). Please use them as a hint.
-
-Thu Nov 29 12:13:54 2012 Ryan Davis <ryand-ruby@zenspider.com>
-
- * lib/minitest/*: Imported minitest 4.3.2 (r8026)
- * test/minitest/*: ditto
-
-Thu Nov 29 11:06:06 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (thread_start_func_2): remove unused code. When
- th->safe_level == 4, th->errinfo never be thrown. So, to
- create new exception makes no sense.
-
-Thu Nov 29 10:29:53 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_backtrace.c: same as a last patch.
-
-Thu Nov 29 10:24:25 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_backtrace.c: use `long' for return values of `NUM2LONG()'.
-
-Thu Nov 29 09:52:08 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * thread.c (do_select): suppress warning (uninitialized value warning)
- with UNINITIALIZED_VAR().
-
-Thu Nov 29 09:36:09 2012 Koichi Sasada <ko1@atdot.net>
-
- * eval.c (ruby_cleanup): delay THREAD_KILLED timing.
- It should be located just before rb_thread_terminate_all().
-
-Thu Nov 29 09:10:17 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_backtrace.c (vm_backtrace_to_ary): support range argument
- like Array#[].
- [ruby-core:50092] [ruby-trunk - Feature #7434]
- Test and document is not available. Please help us.
-
-Thu Nov 29 06:46:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (thread_start_func_2): small cleanups.
-
-Thu Nov 29 06:37:08 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (thread_start_func_2): remove unused code.
- this function never be used for main thread.
-
-Thu Nov 29 06:27:55 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (thread_start_func_2): remove unused code.
- errinfo = th->errinfo; and errinfo = rb_errinfo(); are
- the same.
-
-Thu Nov 29 05:26:32 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_backtrace.c (backtrace_to_str_ary2): rename to backtrace_to_str_ary.
-
- * vm_backtrace.c (rb_backtrace_to_str_ary): use `backtrace_to_str_ary()'.
-
- * vm_backtrace.c (backtrace_to_frame_ary): rename to
- backtrace_to_location_ary.
-
-Thu Nov 29 05:19:25 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * probes.d: Change function-entry probe to method-entry.
- * insns.def: ditto
- * probes_helper.h: ditto
- * test/dtrace/test_function_entry.rb: ditto
- * test/dtrace/test_singleton_function.rb: ditto
- * vm.c: ditto
- * vm_eval.c: ditto
- * vm_insnhelper.c: ditto
-
-Thu Nov 29 04:45:17 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_backtrace.c: rename Class name from
- ::RubyVM::Backtrace and ::RubyVM::Backtrace::Location
- to ::Thread::Backtrace and ::Thread::Backtrace::Location.
-
-Wed Nov 28 23:52:02 2012 Masaya Tarui <tarui@ruby-lang.org>
-
- * NEWS (Thread) remove incompatible changes about trap.
-
-Wed Nov 28 23:39:01 2012 Koichi Sasada <ko1@atdot.net>
-
- * thread.c (rb_mutex_sleep): fix to allow spurious wakeup.
- [ruby-dev:46654] [ruby-trunk - Bug #7455]
-
- * NEWS: write about spurious wakeup.
-
-Wed Nov 28 22:57:23 2012 Koichi Sasada <ko1@atdot.net>
-
- * thread_win32.c: catch up latest change of BLOCKING_REGION.
-
-Wed Nov 28 22:54:21 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c (vm_call_method): fix undefined behavior.
- Should not access scope local variable from outer scope.
-
-Wed Nov 28 22:20:55 2012 Masaya Tarui <tarui@ruby-lang.org>
-
- * test/ruby/test_thread.rb (test_thread_status_in_trap): change test for
- thread status in trap. now can accept Thread#join and Thread#value in trap.
-
-Wed Nov 28 21:58:47 2012 Koichi Sasada <ko1@atdot.net>
-
- * include/ruby/thread.h (rb_thread_call_without_gvl2): change
- meaning of function.
- This function is called with same parameters of
- `rb_thread_call_without_gvl()'.
- However, if interrupts are detected, then return immediately.
-
- * thread.c: implement `rb_thread_call_without_gvl2()'.
-
-Wed Nov 28 21:31:21 2012 Masaya Tarui <tarui@ruby-lang.org>
-
- * thread.c (thread_join_sleep): check spurious wakeup by itself for
- corresponding status change in trap context.
- * vm_core.h (struct rb_thread_struct): add rb_thread_list_t and use as join_list for
- reentry by trap context.
- * thread.c (thread_start_func_2): ditto.
- * thread.c (remove_from_join_list): ditto.
- * thread.c (rb_thread_atfork): ditto.
- * thread.c (thread_join): ditto. & remove trap handler check.
- * thread.c (sleep_forever): add argument : spurious_check.
- * thread.c (sleep_timeval): ditto.
- * thread.c (rb_thread_sleep_forever): set spurious_check.
- * thread.c (rb_thread_sleep_deadly): ditto.
- * thread.c (sleep_for_polling): ditto.
- * thread.c (rb_thread_wait_for): ditto.
- * thread.c (sleep_wait_for_interrupt): bypass spurious_check.
-
-Wed Nov 28 21:23:18 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/psych/yaml/emitter.c (yaml_emitter_write_indicator): constify.
-
- * ext/psych/yaml/emitter.c (yaml_emitter_write_block_scalar_hints):
- ditto.
-
- * ext/psych/extconf.rb: mingw32 also needs macros for win32, not
- only mswin32.
-
- * ext/psych/extconf.rb: compile sources in the source directory
- without copying by using VPATH.
-
-Wed Nov 28 21:18:57 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (MakeMakefile#each_compile_rules): splat $(*VPATH*) for
- each VPATH elements.
-
-Wed Nov 28 16:40:14 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * vm_core.h (enum rb_thread_status): remove THREAD_TO_KILL
- * vm_core.h (struct rb_thread_struct): add to_kill field
- * thread.c (terminate_i): convert THREAD_TO_KILL to to_kill.
- * thread.c (rb_threadptr_to_kill): ditto.
- * thread.c (rb_thread_kill): ditto.
- * thread.c (rb_thread_wakeup_alive): ditto.
- * thread.c (thread_list_i): ditto.
- * thread.c (static const char): ditto.
- * thread.c (thread_status_name): ditto.
- * thread.c (rb_thread_status): ditto.
- * thread.c (rb_thread_inspect): ditto.
- * vm_backtrace.c (thread_backtrace_to_ary): ditto.
-
- * thread.c (rb_threadptr_execute_interrupts): fix thread status
- overwritten issue. [Bug #7450] [ruby-core:50249]
-
- * test/ruby/test_thread.rb (test_hread_status_raise_after_kill):
- test for the above.
- * test/ruby/test_thread.rb (test_thread_status_in_trap): test for
- thread status in trap.
- * test/ruby/test_thread.rb (test_status_and_stop_p): remove
- Thread.control_interrupt unsafe test. Thread#kill no longer
- changes thread status. Instead of, Thread#kill receiver changes
- their own status when receiving kill signal.
-
-Wed Nov 28 16:21:46 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (struct rb_mutex_struct): add allow_trap field.
- * internal.h (rb_mutex_allow_trap): added.
- * thread.c (rb_mutex_lock, rb_mutex_unlock): check mutex->allow_trap.
- * thread.c (mutex_sleep): remove trap check because it uses
- rb_mutex_lock and rb_mutex_unlock internally.
- * thread.c (rb_mutex_allow_trap): new helper function for the above.
-
- * io.c (io_binwrite): mark fptr->write_lock as writable in trap.
-
- * test/ruby/test_signal.rb (test_trap_puts): test for the above.
-
-Wed Nov 28 16:59:12 2012 Koichi Sasada <ko1@atdot.net>
-
- * proc.c: remove Proc#== and Proc#eql?.
- Proc objects compared with their object ids.
- [Bug #4559]
-
- * test/ruby/test_proc.rb: remove related test.
-
-Wed Nov 28 16:41:04 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/servlet.rb: Add support for serving documentation from a
- subdirectory.
- * lib/rdoc/generator/darkfish.rb: ditto
- * test/rdoc/test_rdoc_servlet.rb: Test for above
- * test/rdoc/test_rdoc_servlet.rb: ditto
-
-Wed Nov 28 15:37:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * configure.in: fix r37924: run only on i[3-6]86-linux.
-
-Wed Nov 28 15:31:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (FMODE_SYNCWRITE): removed unused macro.
-
-Wed Nov 28 15:19:25 2012 Naohisa Goto <ngotogenome@gmail.com>
-
- * configure.in: revert r37911, r37906 and r37904 which break build
- with non-gcc and/or non-IA32 compilers, e.g. Solaris Studio,
- Fujitsu C Compiler. [ruby-dev:46646] [Bug #7451]
-
-Wed Nov 28 14:50:55 2012 Koichi Sasada <ko1@atdot.net>
-
- * ext/psych/extconf.rb: copy sources into build directory,
- not into srcdir.
-
-Wed Nov 28 14:34:06 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_mutex_lock): moved trap context check from
- rb_mutex_trylock because try_lock have no change to make
- a deadlock.
- * thread.c (rb_mutex_trylock): ditto.
- * NEWS: news for the above.
-
-Wed Nov 28 13:39:54 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (thread_s_new): uses main_thread->status instead of
- th->inhibit_thread_creation for preventing thread creation.
- * vm_core.h (rb_vm_struct): remove inhibit_thread_creation field.
- * thread.c (rb_thread_terminate_all): ditto.
-
-Wed Nov 28 13:27:29 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/extconf.rb: use embedded libyaml if no system libyaml is
- found. [ruby-core:49463]
- * ext/psych/lib/psych.rb: updating to psych 2.0.0
- * ext/psych/lib/psych/deprecated.rb: updated docs
- * ext/psych/psych.gemspec: updated to psych 2.0.0
- * ext/psych/psych.h: fixing header file include for rename
- * ext/psych/psych_emitter.c: renamed to avoid libyaml conflict.
- * ext/psych/psych_emitter.h: ditto
- * ext/psych/psych_parser.c: ditto
- * ext/psych/psych_parser.h: ditto
- * ext/psych/psych_to_ruby.c: ditto
- * ext/psych/psych_to_ruby.h: ditto
- * ext/psych/psych_yaml_tree.c: ditto
- * ext/psych/psych_yaml_tree.h: ditto
- * ext/psych/yaml/LICENSE: embedding libyaml 0.1.4
- * ext/psych/yaml/api.c: ditto
- * ext/psych/yaml/config.h: ditto
- * ext/psych/yaml/dumper.c: ditto
- * ext/psych/yaml/emitter.c: ditto
- * ext/psych/yaml/loader.c: ditto
- * ext/psych/yaml/parser.c: ditto
- * ext/psych/yaml/reader.c: ditto
- * ext/psych/yaml/scanner.c: ditto
- * ext/psych/yaml/writer.c: ditto
- * ext/psych/yaml/yaml.h: ditto
- * ext/psych/yaml/yaml_private.h: ditto
-
-Wed Nov 28 12:54:59 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (thread_join): A trap handler check was moved from
- thread_join_m because Thread#value should be raised an exception
- too.
- * thread.c (thread_join_m): remove trap handler check.
- * test/ruby/test_thread.rb (test_thread_join_in_trap): add test
- for thread#value.
- * NEWS: documentation fix for the above.
-
-Wed Nov 28 11:07:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * ext/fiddle/closure.c: Documentation for Fiddle
- * ext/fiddle/lib/fiddle/import.rb: ditto
- * ext/fiddle/lib/fiddle/value.rb: ditto
- * ext/fiddle/lib/fiddle/pack.rb: ditto
- * ext/fiddle/lib/fiddle/cparser.rb: ditto
- * ext/fiddle/lib/fiddle/struct.rb: ditto
- * ext/fiddle/lib/fiddle/function.rb: ditto
-
-Wed Nov 28 09:15:51 2012 Ryan Davis <ryand-ruby@zenspider.com>
-
- * ext/strscan/strscan.c: Added #charpos for multibyte string position.
- * test/strscan/test_stringscanner.rb: ditto
-
-Wed Nov 28 09:00:34 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/fiddle/fiddle.c: adding alignment constants for compatibility
- with DL.
- * ext/fiddle/fiddle.h: ditto
- * ext/fiddle/lib/fiddle/cparser.rb: importing the C parser for DL
- backwards compatibility.
- * ext/fiddle/lib/fiddle/import.rb: importing the import DSL for DL
- backwards compatibility.
- * ext/fiddle/lib/fiddle/pack.rb: importing structure pack for DL
- backwards compatibility.
- * ext/fiddle/lib/fiddle/value.rb: ditto
- * ext/fiddle/lib/fiddle/struct.rb: importing struct DSL for DL backwards
- compatibility.
- * test/dl/test_c_struct_entry.rb: importing tests
- * test/dl/test_c_union_entity.rb: ditto
- * test/dl/test_cparser.rb: ditto
- * test/dl/test_import.rb: ditto
- * test/fiddle/test_c_struct_entry.rb: ditto
- * test/fiddle/test_c_union_entity.rb: ditto
- * test/fiddle/test_cparser.rb: ditto
- * test/fiddle/test_import.rb: ditto
-
-Wed Nov 28 08:56:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * doc/globals.rdoc: Add documentation file for magic globals
- [ruby-core:29048] [Bug #3022]
-
-Wed Nov 28 08:55:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * .document: Add README's to be included with docs
-
-Wed Nov 28 08:26:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * ext/dl/lib/dl.rb: Deprecation notice for DL
-
-Wed Nov 28 08:25:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * ext/fiddle/closure.c: Documentation for Fiddle
- * ext/fiddle/pointer.c: ditto
- * ext/fiddle/function.c: ditto
- * ext/fiddle/lib/fiddle.rb: ditto
- * ext/fiddle/fiddle.c: ditto
- * ext/fiddle/handle.c: ditto
-
-Wed Nov 28 04:53:40 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/fiddle/handle.c: Make Fiddle independent of DL, copy DL::Handle
- to Fiddle::Handle.
- * ext/fiddle/pointer.c: Make Fiddle independent of DL, copy
- DL::Pointer to Fiddle::Pointer.
- * test/fiddle/test_func.rb: relevant tests
- * test/fiddle/test_handle.rb: ditto
- * test/fiddle/test_pointer.rb: ditto
- * ext/dl/lib/dl/struct.rb: use Fiddle::Pointer if available
- * ext/fiddle/extconf.rb: check for dlfcn.h
- * ext/fiddle/fiddle.c: add constants for sizeof() things
- * ext/fiddle/fiddle.h: include dlfcn.h
- * ext/fiddle/function.c: expose a C function for creating new
- Fiddle::Function objects.
- * ext/fiddle/lib/fiddle.rb: include constants for dl backwards compat
- * ext/fiddle/lib/fiddle/function.rb: read the pointer from the
- function for dl backwards compat.
- * test/dl/test_callback.rb: check the addresses of the pointers rather
- than their types.
- * test/fiddle/helper.rb: remove dependency on dl
- * test/fiddle/test_closure.rb: ditto
- * test/fiddle/test_fiddle.rb: ditto
-
-Wed Nov 28 03:03:28 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * configure.in (opt-dir): don't use non portable flag -E of sed.
-
-Wed Nov 28 02:55:35 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * configure.in (ARCH_FLAG): __sync_val_compare_and_swap_4 needs
- -march=$target_cpu on at least linux gcc 4.1.
- patched by KOSAKI Motohiro
-
-Tue Nov 27 22:03:09 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * string.c (rb_str_enumerate_chars, rb_str_enumerate_codepoints)
- (rb_str_enumerate_lines): Dummy initialization of ary has been
- replaced with UNINITIALIZED_VAR().
-
-Tue Nov 27 21:29:00 2012 Kenta Murata <mrkn@mrkn.jp>
-
- * bignum.c (bigdivrem): optimize the way to retry calculation of
- bigdivrem so that the calculation is started from the point where
- the last interruption was occurred.
-
- * bignum.c (bigdivrem1): ditto.
-
- * test/ruby/test_bignum.rb: add a test case for rb_bigdivrem in the
- case that an interruption is occurred during bigdivrem1 is running.
-
-Tue Nov 27 19:56:43 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm.c (rb_vm_make_env_object): make Proc object if Env is possible
- to point block.
- [ruby-core:41038] [ruby-trunk - Bug #5634]
-
- * vm.c (rb_vm_make_proc): No need to make Proc object here.
-
- * bootstraptest/test_proc.rb: add tests.
-
-Tue Nov 27 18:51:06 2012 Naohisa Goto <ngotogenome@gmail.com>
-
- * ruby_atomic.h (ATOMIC_CAS): added for Solaris and other platforms.
- * ruby_atomic.h, signal.c (NEED_RUBY_ATOMIC_OPS): renamed from
- NEED_RUBY_ATOMIC_EXCHANGE.
- * signal.c (ruby_atomic_compare_and_swap): naive, non-atomic
- compare-and-swap implementation only used for platforms without
- valid support for atomic operations.
-
-Tue Nov 27 17:43:46 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/*: Added --root option for building documentation outside
- the source directory.
- * test/rdoc/*: ditto
- * common.mk (rdoc): Added --root to rdoc rule
-
-Tue Nov 27 16:24:45 2012 Eric Hodel <drbrain@segment7.net>
-
- * test/rdoc/test_rdoc_ri_paths.rb: Fixed duplicate path bug which
- caused windows failures.
-
-Tue Nov 27 16:06:00 2012 Eric Hodel <drbrain@segment7.net>
-
- * test/rdoc/test_rdoc_generator_darkfish.rb: Updated tests for windows
- * test/rdoc/test_rdoc_options.rb: ditto
- * test/rdoc/test_rdoc_parser.rb: ditto
- * test/rdoc/test_rdoc_rdoc.rb: ditto
- * test/rdoc/test_rdoc_ri_driver.rb: ditto
- * test/rdoc/test_rdoc_servlet.rb: ditto
-
-Tue Nov 27 15:13:51 2012 Eric Hodel <drbrain@segment7.net>
-
- * common.mk (rdoc): Set --debug for rdoc generation in case of bugs
-
-Tue Nov 27 14:56:45 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/rubygems_hook.rb: Updated for (upcoming) RubyGems 2
- import.
- * test/rdoc/test_rdoc_rubygems_hook.rb: ditto
-
-Tue Nov 27 13:59:29 2012 Narihiro Nakamura <authornari@gmail.com>
-
- * NEWS: add improvements of the garbage collector.
-
-Tue Nov 27 13:27:46 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc*: Updated to RDoc 4.0 (pre-release)
- * bin/rdoc: ditto
- * test/rdoc*: ditto
- * NEWS: Updated with RDoc 4.0 information
-
-Tue Nov 27 12:17:11 2012 Koichi Sasada <ko1@atdot.net>
-
- * thread.c (rb_thread_terminate_all): retry broadcast only when
- an exception is raised.
-
-Tue Nov 27 12:02:25 2012 Koichi Sasada <ko1@atdot.net>
-
- * thread.c (rb_thread_terminate_all): broadcast terminate event
- not only an interrupt exception but any exceptions.
-
-Tue Nov 27 10:55:09 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * eval.c (ruby_cleanup): set thread status to THREAD_KILLED
- for preventing thr.raise.
- * test/ruby/test_thread.rb (test_main_thread_status_at_exit):
- test for the above.
-
-Tue Nov 27 10:31:29 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_thread_terminate_all): suppress a warning.
-
-Tue Nov 27 09:29:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (thread_join): raises ThreadError if target thread
- is a main thread.
- * test/ruby/test_thread.rb (test_thread_join_main_thread):
- test for the above.
- * NEWS: news for the above.
-
-Tue Nov 27 09:24:47 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (thread_join): raises ThreadError if target thread
- is a current thread.
- * test/ruby/test_thread.rb (test_thread_join_current):
- test for the above.
- * NEWS: news for the above.
-
-Tue Nov 27 09:59:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/extmk.rb (extmake): close mkmf.log for each libraries so that
- failure messages are not mixed.
-
-Tue Nov 27 09:58:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/digest/*/extconf.rb, ext/openssl/extconf.rb: get git rid of
- post-1.8 feature require_relative for cross compilation.
- [ruby-core:50160] [Bug #7439]
-
-Tue Nov 27 09:17:59 2012 Koichi Sasada <ko1@atdot.net>
-
- * NEWS: add TracePoint.
-
-Tue Nov 27 08:16:03 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_trace.c: rename TracePoint#file and TracePoint#line
- to TracePoint#path and TracePoint#lineno respectively.
- They are consistent to RubyVM::Backtrace::Location.
-
- * include/ruby/debug.h: ditto.
-
- * vm_core.h: ditto.
-
- * test/ruby/test_settracefunc.rb: ditto.
-
-Tue Nov 27 08:04:26 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_thread_terminate_all): broadcast eTerminateSignal
- again when Ctrl-C was pressed. [Feature #1952] [ruby-dev:39107]
-
-Tue Nov 27 07:58:03 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_core.h: add members to rb_trace_arg_t:
- * `klass_solved' represents klass and id is checked.
- * `line' represents line calculated from cfp.
- * `file' represents line calculated from cfp.
-
- * vm_trace.c: fix to use above data structures.
- No need to calculate klass and id, line and file
- pairs for each trace points.
-
-Tue Nov 27 07:47:09 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_thread_terminate_all): add RUBY_VM_CHECK_INTS_BLOCKING().
- Otherwise the loop in this function behave as busy loop because
- native_sleep() return immediately when RUBY_VM_INTERRUPTED() is true.
-
-Tue Nov 27 04:12:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/extmk.rb (extmake): git rid of post-1.8 features for cross
- compilation. [ruby-core:50160] [Bug #7439]
-
-Tue Nov 27 00:13:41 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_mutex_trylock, rb_mutex_unlock, mutex_sleep):
- raises ThreadError if called from trap handler as Thread#join.
- * NEWS: news for the above.
-
-Mon Nov 26 23:55:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * NEWS: update for Thread#join incompatible change.
-
-Mon Nov 26 22:44:24 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_thread_terminate_all): use native_sleep() instead
- of rb_thread_schedule(). Otherwise, it consume 100% cpu meaninglessly.
- [Bug #5368] [ruby-dev:44546]
- * thread.c (thread_start_func_2): last sub-thread wakes up main thread.
-
-Mon Nov 26 21:16:04 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * vm_core.h (RUBY_VM_SET_TIMER_INTERRUPT, RUBY_VM_SET_INTERRUPT)
- (RUBY_VM_SET_FINALIZER_INTERRUPT, RUBY_VM_SET_TRAP_INTERRUPT)
- (RUBY_VM_INTERRUPTED): use enum symbol instead of immediate value.
- * thread.c (thread_join_m, rb_threadptr_execute_interrupts): ditto.
- * signal.c (signal_exec): ditto.
-
-Mon Nov 26 20:23:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (thread_join_m): use th->interrupt_mask instead of
- th->in_trap.
-
- * vm_core.h (struct rb_thread_struct): remove in_trap member.
- * signal.c (signal_exec): ditto.
- * thread.c (thread_create_core): ditto.
- * thread.c (Init_Thread): ditto.
-
-Mon Nov 26 20:23:49 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_argf.rb (TestArgf#test_chars): since marshal data is
- binary, shouldn't pass via text mode. use base64 encoded data.
-
-Mon Nov 26 19:45:18 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ruby_atomic.h (ATOMIC_CAS): new macro for compare-and-exchange.
-
- * vm_core.h (struct rb_thread_struct): add interrupt_mask member.
- * thread.c (thread_create_core, Init_Thread): initialize
- th->thread_mask.
-
- * vm_core.h (RUBY_VM_INTERRUPTED_ANY): new macro for avoiding
- bare th->interrupt_flag.
- * vm_core.h (RUBY_VM_INTERRUPTED, RUBY_VM_INTERRUPTED): check
- th->interrupt_mask.
- * thread.c (set_unblock_function, rb_thread_schedule): replace
- th->interrupt_flag with RUBY_VM_INTERRUPTED_ANY()
-
- * signal.c (signal_exec): set up thread->interrupt_mask for
- preventing recursive trap handler.
- * vm_core.h (RUBY_VM_CHECK_INTS, RUBY_VM_CHECK_INTS_BLOCKING): ditto.
-
- * thread.c (rb_threadptr_execute_interrupts):
- don't process interrupt if it is masked.
- [Bug #6009] [ruby-core:42524]
-
-Mon Nov 26 19:43:42 2012 Koichi Sasada <ko1@atdot.net>
-
- * iseq.c (make_compile_option_value): add trace_instruction option.
- a patch by davidbalbert (David Albert).
- [Bug #6786]
-
-Mon Nov 26 19:10:53 2012 Koichi Sasada <ko1@atdot.net>
-
- * bootstraptest/test_thread.rb: try to `join' each 100
- threads.
- This benchmark seems consuming long time on travis-ci
- several times (and make `failure').
-
-Mon Nov 26 18:22:56 2012 Koichi Sasada <ko1@atdot.net>
-
- * common.mk: specify label `built-ruby'.
-
- * benchmark/driver.rb: quote path.
-
-Mon Nov 26 18:26:28 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * signal.c (signal_exec): add volatile to make sure setjmp safe.
-
-Mon Nov 26 18:19:47 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * signal.c (signal_exec): suppress "warning: variable 'signum'
- might be clobbered by 'longjmp' or 'vfork'" warning.
-
-Mon Nov 26 18:15:47 2012 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/driver.rb: accept multiple `-e'.
- You don't need to use `;' separation character.
- [ruby-core:50139] [ruby-trunk - Bug #7380]
-
-Mon Nov 26 17:10:04 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * string.c (rb_str_enumerate_chars, rb_str_enumerate_codepoints)
- (rb_str_enumerate_lines): suppress "may be used uninitialized in
- this function" warning.
-
-Mon Nov 26 17:00:12 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * vm_core.h (rb_thread_struct): added 'in_trap' member for marking
- running trap handler.
- * signal.c (signal_exec): turn on in_trap when running trap.
- * thread.c (Init_Thread, thread_create_core): initialize in_trap
- when creating new threads.
- * thread.c (thread_join_m): raise ThreadError when running trap
- handler.Bug [#6416][ruby-core:44956]
- * test/ruby/test_thread.rb (test_thread_join_in_trap): new test
- for the above.
-
-Mon Nov 26 16:36:13 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * io.c (argf_each_codepoint): add missing ARGF#codepoints [Bug #7438]
-
-Mon Nov 26 15:50:29 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * bignum.c (bigdivrem): restart calculation when bigdivrem1 was
- interrupted by signal. Otherwise, ruby script may see a garbage
- value.
-
-Mon Nov 26 15:33:02 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * bignum.c (big_div_struct): added volatile to 'stop' member.
- Otherwise, "if (bds->stop)" check in bigdivrem1 don't read
- memory and ignore interrupt.
- * bignum.c (bigdivrem, rb_big_stop): ditto.
-
-Mon Nov 26 12:11:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/Makefile.sub (DLNOBJ): missing in r37821.
-
-Mon Nov 26 10:50:19 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_process.rb (test_setsid): added a few wait for
- preventing that Process.getsid(io.pid) makes Errno::ESRCH.
-
-Sun Nov 25 22:34:00 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * array.c (ary_resize_smaller): new function to resize array.
-
- * array.c (rb_ary_delete): refactoring to extract a function.
-
- * array.c (rb_ary_delete_same): refactoring.
- It renames function, reduces duplicated code and removes unused
- code.
-
- * gc.c (wmap_final_func): follow the above change.
-
- * internal.h (rb_ary_delete_same): ditto.
-
-Sun Nov 25 22:27:33 2012 Benoit Daloze <eregontp@gmail.com>
-
- * array.c: fixes for the updated documentation in r35858:
- Typos and #take/#drop accept to take/drop 0 elements.
-
-Sun Nov 25 19:43:29 2012 Kazuki Tsujimoto <kazuki@callcc.net>
-
- * NEWS: add a news about iconv.
-
-Sun Nov 25 03:49:23 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * lib/set.rb, test/test_set.rb: Move tests embedded in lib/set.rb
- to test/test_set.rb.
-
-Sun Nov 25 03:44:50 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * string.c (rb_str_each_line, rb_str_lines): String#lines now
- returns an array instead of an enumerator. Passing a block is
- deprecated but still supported for backwards compatibility.
- Based on the patch by yhara. [Feature #6670]
-
- * string.c (rb_str_each_char, rb_str_chars): Ditto for
- String#chars.
-
- * string.c (rb_str_each_codepoint, rb_str_codepoints): Ditto for
- String#codepoints.
-
- * string.c (rb_str_each_byte, rb_str_bytes): Ditto for
- String#bytes.
-
- * NEWS: Add notes for the above changes.
-
-Sun Nov 25 02:07:37 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * test/ruby/envutil.rb (Test::Unit::Assertions#assert_warning)
- (Test::Unit::Assertions#assert_warn), test/ruby/envutil.rb,
- test/ruby/test_enumerator.rb, test/ruby/test_io_m17n.rb,
- test/ruby/test_regexp.rb, test/ruby/test_syntax.rb:
- assert_warn() and assert_warning() are reversed.
-
-Sat Nov 24 21:08:50 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * gc.c (wmap_final_func): rename variables to clarify the meaning.
- In wmap2obj the key is WeakRef and the value is referenced object.
- In obj2wmap the key is referenced object and the value is an array
- of WeakRef.
-
- * gc.c (wmap_finalize): ditto.
- [ruby-core:49044] [Bug #7304]
-
-Sat Nov 24 21:01:55 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * array.c (rb_ary_delete_same_obj): new function for WeakRef.
- This deletes same objects as item argument in the array.
-
- * internal.h (rb_ary_delete_same_obj): add a declaration.
-
- * gc.c (wmap_final_func): remove WeakRef object reference from the
- array. rb_ary_delete() is not usable because it uses rb_equal() to
- compare object references.
-
- * gc.c (wmap_finalize): remove recycled object references from weak
- map hash properly. How to get object reference from object id was
- wrong. st_delete() doesn't work properly if key and value arguments
- are same. The key of obj2wmap is referenced object and the value of
- obj2wmap is WeakRef array.
-
- * gc.c (wmap_aset): obj2wmap should contain WeakRef array in the
- definition.
-
- * test/test_weakref.rb
- (TestWeakRef#test_not_reference_different_object,
- TestWeakRef#test_weakref_finalize): add tests for above.
- [ruby-core:49044] [Bug #7304]
-
-Sat Nov 24 19:44:41 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf/nkf-utf8/nkf.c (unicode_iconv_combine): returning flags are
- nkf_char.
-
-Sat Nov 24 19:29:18 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * test/ruby/test_rubyoptions.rb (test_usage, test_usage_long):
- reduced, renamed.
-
-Sat Nov 24 13:10:14 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_trace.c (rb_tracepoint_attr_raised_exception): should not check
- value before event checking.
-
- * vm_trace.c (rb_tracepoint_attr_return_value): ditto.
-
- * test/ruby/test_settracefunc.rb: add tests for TracePoint#return_value
- and TracePoint#raised_exception.
-
-Sat Nov 24 12:47:27 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * test/ruby/test_process.rb (TestProcess#test_setsid): "./ruby-trunk"
- doesn't work on all environments. EnvUtil.rubybin would be suitable.
-
-Sat Nov 24 12:28:04 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * array.c (rb_ary_aref): fix Segmentation fault at TestArray#test_aref
- on x64 mingw. Variable argument of rb_scan_args() should be a pointer
- (VALUE *), but 0 of variable argument seems not equal to null pointer
- on x64 mingw.
-
-Sat Nov 24 11:47:14 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * process.c (proc_getsid): adds new method for getting session id.
- Contributed from fumiyas (Fumiyasu SATOH). Thank you!
- [Feature #6757] [ruby-dev:45977]
- * configure.in: adds getsid check.
- * test/ruby/test_process.rb (TestProcess#test_setsid): new test
- for the above.
- * NEWS: news for the above.
-
-Sat Nov 24 10:59:14 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (thread_create_core): don't use th->thread_id before
- initialized.
-
-Sat Nov 24 00:00:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby.c (proc_options, process_options, ruby_process_options): take
- care of the case argc is 0, and check if argv has NULL.
- [ruby-core:49889] [Bug #7423]
-
-Sat Nov 24 00:00:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (--disable-dln): option to disable dynamic linking
- feature. [ruby-core:37676] [Feature #4946]
-
-Fri Nov 23 23:44:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (MakeMakefile#pkg_config): strip all white spaces for
- mingw64+MSYS pkg-config which erroneously emits extra newlines.
- [ruby-core:47998] [Bug #7163]
-
-Fri Nov 23 17:31:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby.c (usage): wrap description lines if options are too long.
-
-Fri Nov 23 11:13:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_usage2): refine
- assertion.
-
- * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_usage2): now
- --help option is for modern terminals.
-
-Fri Nov 23 10:45:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * ext/socket/ipsocket.c (IPSocket#peeraddr): Fix example
- [ruby-core:46429] [Bug #6732]
-
-Fri Nov 23 02:40:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * lib/cgi/core.rb: Documentation for CGI#header alias
- Based on a patch by Marcus Stollsteimer
- [ruby-core:49585] [Bug #7405]
-
-Thu Nov 22 23:48:10 2012 Narihiro Nakamura <authornari@gmail.com>
-
- * gc.c (is_swept_object): extract from is_dead_object().
-
- * gc.c (rb_gcdebug_print_obj_condition): add the function for debug.
- This function shows some conditions of given object (e.g.,
- marked, in heap, swept).
-
- * gc.c (rb_gcdebug_sentinel): add the function for debug.
- This function allow check to inadvertently free up an object.
-
-Thu Nov 22 23:45:18 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * ext/date/date_core.c: avoided using timev.
+ * ext/date/date_strftime.c: ditto.
+ * ext/date/date_tmx.h: ditto.
- * array.c (rb_ary_shared_with_p): fix cache validity check.
- If #pop or #shift has been called against $: or $", the array will
- be still shared with the snapshot. We check array length for cache
- validity.
- [ruby-core:49518] [Bug #7383]
+Wed Jun 29 23:17:57 2011 WATANABE Hirofumi <eban@ruby-lang.org>
- * test/ruby/test_require.rb
- (TestRequire#test_require_with_array_pop,
- TestRequire#test_require_with_array_shift): add tests for above.
+ * ext/openssl/ossl.h (OPENSSL_SYS_WIN32): support for mingw(msys).
-Thu Nov 22 21:48:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Jun 29 23:09:14 2011 WATANABE Hirofumi <eban@ruby-lang.org>
- * common.mk, win32/Makefile.sub (probes.dmyh): now be made in current
- (=build) directory if build from the repository.
+ * ext/tk/extconf.rb (intptr_t, uintptr_t): support for the latest ActiveTcl with mingw.
-Thu Nov 22 21:34:51 2012 Tadayoshi Funaba <tadf@dotrb.org>
+Wed Jun 29 22:49:10 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
- * test/ruby/test_rubyoptions.rb: added a test.
+ * lib/irb/cmd/help.rb: support RDoc 3.7. fix [Bug #3760].
-Thu Nov 22 20:32:07 2012 Tadayoshi Funaba <tadf@dotrb.org>
+Wed Jun 29 22:04:14 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * complex.c (string_to_c_strict, string_to_c): check NUL.
- * rational.c (string_to_r_strict, string_to_r): ditto.
+ * lib/tracer.rb: Tracer.on only if required by -r command-line option.
+ and consider --disable-gems option.
+ * test/test_tracer.rb: add tests for it.
-Thu Nov 22 20:21:45 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Jun 29 13:55:36 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
- * Makefile.in (.dmyh.h): removed $(VPATH). GNU make don't
- recognize suffix rule with VPATH.
+ * variable.c (rb_const_get_0): should not look for superclasses if
+ the second optional argument is given for #const_get().
+ fix [Bug #3422] [Bug #3423]
-Thu Nov 22 18:11:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Jun 29 12:07:27 2011 Eric Hodel <drbrain@segment7.net>
- * common.mk, Makefile.in, win32/Makefile.sub (.dmyh.h): nmake merges
- explicit rules for same target, but not merges explicit rules and
- implicit rules -- always explicit rules win. So, need to add an
- explicit rule for probes.h. [Bug #7421] [ruby-core:49839]
+ * math.c: Attach documentation for Math.
+ * object.c: Document NIL, TRUE, FALSE.
+ * io.c: Improve grammar in ARGF comment. Document STDIN/OUT/ERR.
+ Document ARGF global constant.
+ * lib/rake: Hide deprecated toplevel constants from RDoc (import from
+ rake trunk).
+ * lib/thwait.rb: Document ThWait.
+ * lib/mathn.rb: Hide Math redefinition from RDoc
+ * lib/sync.rb: Add a basic comment for Sync_m, Synchronizer_m, Sync,
+ Synchronizer.
+ * parse.y: Document SCRIPT_LINES__.
+ * hash.c: Document ENV class and global constant.
+ * vm.c: Document TOPLEVEL_BINDING.
+ * version.c: Document RUBY_* constants.
+ * ruby.c: Document DATA and ARGV.
-Thu Nov 22 18:01:28 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Jun 29 10:13:12 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * Makefile.in (probes.o): add -C to ignore #include in probes.d.
+ * lib/matrix.rb: Matrix.zero can build rectangular matrices.
+ Vector#r should be called #magnitude
- * probes.d: include vm_opts.h instead of vm_core.h.
+Wed Jun 29 10:11:08 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * vm_opts.h (VM_COLLECT_USAGE_DETAILS): move definition from vm_core.h.
+ * lib/matrix.rb: Add Matrix#diagonal?, hermitian?, normal?,
+ orthogonal?
+ permutation?, symmetric?, {lower|upper}triangular?, unitary?, zero?
-Thu Nov 22 17:45:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Jun 29 10:09:35 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * ext/nkf/nkf-utf8: Merge b0a6577a521d1bba5e19853f95d5c4b9be1072b5.
- Support JIS X 0213 and some bugfixes.
+ * lib/matrix.rb: Specialize Matrix#find_index to return [row, col]
+ and accept the same optional argument as #each
-Thu Nov 22 17:39:37 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Jun 29 10:07:32 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * tool/gen_dummy_probes.rb: don't change #include, #if and #endif
- lines. [Bug #7370]
+ * lib/matrix.rb: Matrix#each{_with_index} can iterate over a subset
+ of the Matrix
-Thu Nov 22 16:58:26 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Jun 29 06:21:02 2011 Koichi Sasada <ko1@atdot.net>
- * Makefile.in: run preprocessor when making probe.h
- * probes.d: define probe insn and insn__operand only when
- VM_COLLECT_USAGE_DETAILS is 1. [Bug #7370]
+ * thread_pthread.c (native_stop_timer_thread): skip to close
+ communication pipe to avoid timing bug (process termination timing).
+ The communication pipe will closed by OS.
-Thu Nov 22 16:20:49 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Jun 29 06:09:54 2011 Koichi Sasada <ko1@atdot.net>
- * vm.c: Don't define vm_collect_usage_operand() and
- static void vm_collect_usage_insn() when disabling
- VM_COLLECT_USAGE_DETAILS. (refix r37796)
+ * error.c (rb_async_bug_errno): async-safe bug report function.
+ In timer thread, signal handler should use it.
+ The patch is contributed by Eric Wong <normalperson@yhbt.net>.
+ Refs: [ruby-core:37644] and [ruby-core:37647]
-Thu Nov 22 15:26:02 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * thread_pthread.c: use rb_async_bug_errno().
+ And replace all fprintf() to write().
- * vm_insnhelper.h: partly revert r37631 (DTrace support).
- "vm usage information is always collected, so uncomment the
- functions." causes performance impact. [Bug #7370]
- Off course this revert disables related probes.
+ * internal.h (rb_async_bug_errno): add decl. of above func.
-Thu Nov 22 14:14:36 2012 Akinori MUSHA <knu@iDaemons.org>
+Tue Jun 28 23:46:08 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
- * re.c (rb_memsearch_ss): Apply performance improvement to short
- byte array search for platforms without memmem(3).
- [Feature #6311] [ruby-dev:45530]
+ * lib/tracer.rb: count only non-internal libraries in stack trace,
+ ignoring custom_require.
-Thu Nov 22 12:52:19 2012 Akinori MUSHA <knu@iDaemons.org>
+Tue Jun 28 21:44:58 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
- * test/ruby/test_string.rb (TestString#test_index): Add some
- corner cases to tests for String#index, which might fail if ruby
- directly used a buggy memmem(3) implementation.
+ * lib/irb/ruby-lex.rb: recognize '\char' in ruby statement.
-Thu Nov 22 08:06:42 2012 Narihiro Nakamura <authornari@gmail.com>
+Tue Jun 28 20:39:29 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
- * test/ruby/test_gc.rb (test_profiler_clear): fix wrong method
- calls [Bug #7419] [ruby-core:49828].
+ * lib/debug.rb (var_list): Command 'var *' did not work on 1.9(!).
+ global_variables, local_variables, and instance_variables returns
+ Symbols from 1.9 and need to stringify before evaling it.
+ See #4931.
-Thu Nov 22 02:22:33 2012 Tadayoshi Funaba <tadf@dotrb.org>
+Tue Jun 28 19:23:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * NEWS: edited (order etc).
+ * signal.c: Now, USE_TRAP_SIGMASK depend on HAVE_PTHREAD_SIGMASK.
+ The code have already depended on pthread_sigmask since r27464.
-Wed Nov 21 22:52:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Jun 28 15:09:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/io/wait/wait.c (io_wait_readable): add alias wait_readable.
+ * lib/benchmark.rb: merge eregon/benchmark.
+ https://github.com/eregon/ruby/tree/benchmark
+ patched by Benoit Daloze. [ruby-core:37593] [Bug #4940]
- * ext/io/wait/wait.c (io_wait_writable): this is easier to use than
- IO.select for a single IO object and is immune to the
- limitations/inefficiency of select() on platforms where poll/ppoll
- is available. patched by Eric Wong. [Feature #4646]
+ * lib/benchmark (Benchmark#bmbm): bmbm should be consistent with bm
+ for the return value.
-Wed Nov 21 22:27:52 2012 Narihiro Nakamura <authornari@gmail.com>
+ * test/benchmark: remove preemptive test instead of skipping
+ I removed the preemptive test I wrote for Feature #4197.
+ I'll add it back when the implementation will be able to satisfy it.
- * gc.c (garbage_collect): remove a duplicative probe.
+ * lib/benchmark (Benchmark#bmbm): remove useless explicit call,
+ #format is an alias of #to_s test/benchmark: add a test for
+ format of long time.
-Wed Nov 21 22:08:48 2012 Narihiro Nakamura <authornari@gmail.com>
+ * lib/benchmark: fix label width: always add 1 to ensure there is a
+ space delimiter even with times over 100s
+ When I asked for Feature #4197, I wanted to make delimiting spaces
+ consistent for #bm and #bmbm.
+ But with times over 100s, the output contains no space between the
+ label and the first time (user).
+ Now both ensure there is always a space, even if that means 3 spaces
+ with times under 10s (because it is formatted as %10.6f)
- * gc.c (gc_profile_clear): realloc profile records if its size is
- higher than the threshold, GC_PROFILE_RECORD_DEFAULT_SIZE * 2.
+ * test/benchmark: let labels be a constant
+ lib/benchmark (Benchmark#realtime): avoid creating an unused Proc
+ lib/benchmark (Benchmark#benchmark): use ensure clause to restore
+ STDOUT.sync, as in #bmbm
-Wed Nov 21 21:53:29 2012 Tadayoshi Funaba <tadf@dotrb.org>
+Tue Jun 28 13:41:51 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * complex.c (nucomp_to_c): added.
+ * thread_win32.c (native_stop_timer_thread): fixed commit miss of
+ r32244. grep sources before changing the signature of a function.
-Wed Nov 21 21:35:38 2012 Tadayoshi Funaba <tadf@dotrb.org>
+Tue Jun 28 11:49:14 2011 Koichi Sasada <ko1@atdot.net>
- * include/ruby/util.h: removed extra semicolon in definition of
+ * thread_pthread.c (consume_communication_pipe):
+ Make "buff" as static. (Maybe) "buff" can be shared between
+ any caller (any threads) because no one use the read values.
+ "buff" (1024 byte) on stack may cause stack overflow on
+ several environment (we found a crash on FreeBSD).
+ And remove const value "buff_size", and define CCP_READ_BUFF_SIZE
macro.
- * compile.c: ditto.
- * cont.c: ditto.
- * math.c: ditto.
- * node.c: ditto.
- * parse.y: ditto.
-
-Wed Nov 21 18:46:37 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * rational.c (read_digits): due to a bit tighter rb_cstr_to_inum().
-
-Wed Nov 21 16:13:37 2012 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/bm_so_nsieve_bits.rb: add an encoding pragma because
- this benchmark using strings (literals) as binary sequence.
- Now, they are UTF-8 strings. [ruby-dev:46578]
-
-Wed Nov 21 00:57:43 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * file.c (Init_File): null device definition uses rb_define_const
- instead of rb_file_const.
-
-Wed Nov 21 00:28:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * test/ruby/test_m17n_comb.rb (test_str_crypt): Use RbConfig to get
- libc's directory. Patched by Vit Ondruch [ruby-core:49763] [Bug #7312]
-
-Tue Nov 20 23:28:26 2012 Masaki Matsushita <glass.saga@gmail.com>
-
- * marshal.c: add marshal readahead. marshalized Array, Hash and Struct
- have size at least number of its elements, marshal readahead will
- read the certain readable length and buffer when it needs more bytes.
- marshal readahead prevents many calls to IO#getbyte and IO#read,
- then it enables performance improvement.
- [ruby-dev:45637] [Feature #6440]
-
-Tue Nov 20 22:35:02 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * Makefile.in (.d.h): replace char * to const char * because somehow
- current dtrace removes const of function declaration in probes.d.
-
-Tue Nov 20 21:41:04 2012 Koichi Sasada <ko1@atdot.net>
-
- * include/ruby/debug.h: introduced.
- Debugging/profiling features will be located.
-
- * vm_trace.c: expose C-level TracePoint APIs.
- Note that they are experimental.
-
- * vm_trace.c, include/ruby/debug.h: rename `rb_hook_flag_t'
- to `rb_event_hook_flag_t'.
- Macro names `RUBY_HOOK_FLAG_*' are also renamed to
- `RUBY_EVENT_HOOK_FLAG_*'.
-
- * debug.h, vm_debug.h: rename debug.h to vm_debug.h.
-
- * common.mk: ditto.
-
- * debug.c, main.c, vm_core.h: ditto.
-
-Tue Nov 20 21:12:37 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * configure.in (RUBY_DTRACE_AVAILABLE): only check dtrace availability.
-
- * configure.in (RUBY_DTRACE_POSTPROCESS): restore.
-
-Tue Nov 20 21:22:44 2012 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * test/win32ole/test_win32ole_type.rb (test_implemented_ole_types):
- IShellDispatch6 bundled in Windows 8. Thanks to phasis68 (Heesob
- Park). [ruby-core:49580][Bug #7403]
-
-Tue Nov 20 21:06:41 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * complex.c: some improvements.
- * rational.c: ditto.
-
-Tue Nov 20 21:01:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (incs): BSD make cannot deal with non-prefixed dependency
- and prefixed target.
-
-Tue Nov 20 20:10:23 2012 Yusuke Endoh <mame@tsg.ne.jp>
-
- * array.c (rb_ary_bsearch): fix rdoc bug (O(n log n) -> O(log n)).
- Patch by Charlie Somerville. [ruby-core:49661] [Bug #7409]
-
- * range.c (range_bsearch): ditto.
-
-Tue Nov 20 19:02:44 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_trace.c: rename and add TracePoint APIs.
- (1) TracePoint.new(...){...} creates a new trace point
- but does not make it enable.
- (2) TracePoint.trace(...){...} creates a new trace point
- and enable it (same as old behavior).
- (3) TracePoint#enable make it enable (renamed from TracePoint#retrace).
- If block given, when enable only in block.
- (4) TracePoint#disable make it disable (renamed from TracePoint#untrace).
- If block given, when disable only in block.
- (5) TracePoint#enabled? returns this trace is enable or not.
- [Feature #6895]
-
- * test/ruby/test_settracefunc.rb: add tests.
-
-Tue Nov 20 18:35:05 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_trace.c: add two methods:
- (1) TracePoint#return_value which returns return
- value on the :return and :c_return event.
- (2) TracePoint#raised_exception which returns raised exception
- value on the :raise event.
- Each methods raise RuntimeError if it is called at unsupported
- event.
- Please review and give us feedback until next preview
- release (Dec/2012) of Ruby 2.0.0.
- [Feature #6895]
-
- * insns.def, vm.c, vm_eval.c, vm_insnhelper.c, eval.c, thread.c:
- ditto.
-
- * vm_trace.c, vm_core.h: move definition of rb_trace_arg_t from
- vm_trace.c to vm_core.h.
- Caller fills rb_trace_arg_t and pass the pointer of this variable.
-
- * test/ruby/test_settracefunc.rb: fix tests to test this change.
-
-Tue Nov 20 17:31:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * configure.in: fix dtrace didn't work on darwin.
-
- * configure.in (RUBY_DTRACE_AVAILABLE): unify RUBY_DTRACE_POSTPROCESS
- and RUBY_DTRACE_BSD_BROKEN.
-
-Tue Nov 20 15:20:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * file.c (File.extname): Documentation for extname on dotfiles and
- files ending with a dot. Also, added example for this.
- [ruby-core:47852] [Bug #7112]
-
-Tue Nov 20 14:19:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_signal.rb (TestSignal#test_signame): fix windows
- test failure. Process.kill on windows can't send a signal to
- another process.
-
-Tue Nov 20 13:58:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (Init_IO): moved all rb_file_const() into file.c.
- * file.c (Init_File): replace with rb_file_const() with
- rb_define_const() because RDoc don't care rb_file_const.
- [Bug #5530]
-
-Tue Nov 20 12:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * ruby.c (usage_msg): Fix typo [ruby-core:49205] [Bug #7327]
-
-Tue Nov 20 12:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * file.c (File::NULL): Document File::NULL constant
- [ruby-core:49384] [Bug #7365]
-
-Tue Nov 20 12:05:15 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (rb_w32_read): Windows 8 fixed one of a bug of console
- API.
- based on the patch by Heesob Park at [ruby-core:49479] [Bug #7379]
-
-Tue Nov 20 11:14:33 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * configure.in (--enable-dtrace): always call RUBY_DTRACE_BSD_BROKEN
- for portability.
- As the note, FreeBSD 8 has DTrace as the optional
- feature (it is enabled by the build option), but doesn't have USDT.
- FreeBSD 9 has USDT but they are still optional. FreeBSD 10 will
- enable them by default.
- The variable $rb_cv_prog_dtrace_g is "yes" only on FreeBSD 9 with
- optional DTrace or FreeBSD 10. If it is "no", you cannot know
- whether it doesn't need -G or DTrace is disabled. (by checking
- error code, you can know)
-
-Mon Nov 19 22:55:48 2012 Naohisa Goto <ngotogenome@gmail.com>
-
- * configure.in (--enable-dtrace): change help message
-
-Tue Nov 20 11:05:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * lib/tracer.rb (Tracer.trace_func): printf to stdout
- Patch by Michal Fojtik [ruby-core:45219] [Bug #6490]
-
-Mon Nov 19 21:24:18 2012 Naohisa Goto <ngotogenome@gmail.com>
-
- * vm_dump.c: not to include probes.h because the code does not depend
- on it.
- * common.mk (vm_dump.$(OBJEXT)): remove dependency on probes.h
-
-Tue Nov 20 10:14:22 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_thread_s_check_interrupt): removed redundant
- GET_THREAD().
-
-Tue Nov 20 10:12:46 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_threadptr_async_errinfo_active_p): added a small
- comment.
-
-Tue Nov 20 10:05:56 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_thread_blocking_region_end): replaced GET_THREAD()
- with ruby_thread_from_native(). We don't have GVL here.
-
-Tue Nov 20 09:56:15 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_threadptr_execute_interrupts) removed.
- * thread.c (rb_threadptr_execute_interrupts_common) renamed to
- rb_threadptr_execute_interrupts. I.e. unified
- rb_threadptr_execute_interrupts and rb_threadptr_execute_interrupts_common.
- * thread.c (rb_thread_schedule, rb_thread_execute_interrupts) s/_common//.
-
-Tue Nov 20 09:48:34 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * signal.c (rb_get_next_signal): removed pointless signal
- disabling. pthread_sigmask() only changes current thread
- mask.
-
-Tue Nov 20 09:36:55 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * signal.c (install_sighandler): added comments why we need
- rb_disable_interrupt().
-
-Tue Nov 20 09:31:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * signal.c (rb_disable_interrupt, rb_enable_interrupt): removed
- USE_TRAP_MASK.
- * signal.c (trap_arg, trap_ensure): removed.
- * signal.c (trap, sig_trap): removed pointless signal disabling.
- We don't need it because we no longer run trap handler on signal
- handler context.
-
-Tue Nov 20 09:20:49 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * prelude.rb: Moved Mutex#synchronize to
- * thread.c (rb_mutex_synchronize_m): here. [Bug #4266]
-
-Tue Nov 20 08:36:15 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * signal.c (sig_signame): implements Signal.signame method
- [Feature #5613]
- * test/ruby/test_signal.rb (test_signame): adds test for above
- * NEWS: add an item about above
-
-Mon Nov 19 16:30:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * struct.c (rb_struct_each_pair): yield associated pairs so that
- an unsplat argument can get both, for consistency with Hash,
- OpenStruct, and etc. [ruby-dev:46533] [Bug #7382]
-
-Mon Nov 19 16:17:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (LIBS): libelf is need on only FreeBSD.
-
-Mon Nov 19 16:08:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (RUBYLIB): purelib option in runruby.rb is deprecated
- since r28841, so set to an empty list to get rid of a bogus path in
- child processes, which caused an insecure operation exception in
- test/ruby/test_encoding.rb:test_unsafe.
-
-Mon Nov 19 15:40:50 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * .travis.yml (script): add OPTS=-v, requested by @_ko1.
-
-Mon Nov 19 15:09:07 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * configure.in: fix didn't enable_dtrace=yes on auto.
-
- * configure.in: see enable_dtrace for adding libelf on FreeBSD.
-
- * common.mk: VPATH is not needed.
-
-Mon Nov 19 14:55:51 2012 Koichi Sasada <ko1@atdot.net>
-
- * thread.c: add `Thread#backtrace_locations' method.
- This method is similar to `caller_locations' method for
- specific method.
- And fix to accept `level' and `n' parameters for `Thread#backtrace'
- and `Thread#backtrace_locations'.
- `caller' (and `caller_locations') do not return `caller' method
- frame.
- However, `Thread#backtrace' (and `Thread#backtrace_locations')
- return `Thread#backtrace' method frame itself
- if `Thread.current.backtrace' was called.
-
- * vm_backtrace.c: ditto.
-
- * internal.h: ditto.
-
- * test/ruby/test_backtrace.rb: add tests.
-
-Mon Nov 19 14:54:32 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * Makefile.in, common.mk (probes.h): moved to common.mk and changed to
- see $(srcdir).
-
- * common.mk (probes.dmyh): now created it on $(srcdir) always.
-
- * win32/Makefile.sub (.SUFFIXES): removed common suffix.
-
-Mon Nov 19 10:00:10 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * Makefile.in (.SUFFIX): bsdmake needs .SUFFIX is defined before use.
-
- * common.mk: fix path of probes.dmyh.
-
- * common.mk (vm_dump.o): depend probes.h.
-
- * configure.in: FreeBSD's USDT requires libelf.
-
-Mon Nov 19 01:11:59 2012 Naohisa Goto <ngotogenome@gmail.com>
-
- * vm_core.h, probes_helper.h (RUBY_DTRACE_FUNC_ENTRY_HOOK,
- RUBY_DTRACE_FUNC_RETURN_HOOK): move from vm_core.h to new file
- probes_helper.h for narrowing dependency to probes.h.
- * common.mk (VM_CORE_H_INCLUDES): remove dependency to probes.h.
- * common.mk (vm.$(OBJEXT)): add dependency to probes_helper.h.
- * vm.c, vm_insnhelper.c: include probes_helper.h.
-
-Sun Nov 18 16:33:00 2012 Naohisa Goto <ngotogenome@gmail.com>
-
- * configure.in, Makefile.in, common.mk: support DTrace on Solaris 10,
- based on r26235 by Yugui. On Solaris 10, low optimization level
- may also be needed, e.g. optflags="-xO1" or "-xO0" with Oracle
- SolarisStudio 12.3 cc.
-
- * configure.in (--enable-dtrace): new option to enable/disable
- DTrace support. By default, trying to enable if dtrace command
- is found on the system. It is disabled when cross compiling.
-
- * configure.in (RUBY_DTRACE_POSTPROCESS): new macro. checks whether
- the dtrace on the system needs postprocessing with "dtrace -G".
- The postprocessing is needed on Solaris 10 and other platforms.
-
- * configure.in (RUBY_DTRACE_BSD_BROKEN): new macro. checks whether
- the dtrace supports USDT.
-
- * configure.in (DTRACE): move after RUBY_DTRACE_POSTPROCESS.
-
- * configure.in (LD): On Solaris, /usr/ccs/bin/ld is preferred.
-
- * configure.in, Makefile.in, common.mk (DTRACE_OBJ): new macro for
- DTrace probe object generated by postprocessing with "dtrace -G".
-
- * Makefile.in, common.mk (probes.$(OBJEXT)): DTrace probe object
- generated by the postprocessing. New file probes.stamp is for
- rebuilding related objects that may be modified by "dtrace -G".
-
- * configure.in, Makefile.in, common.mk (DTRACE_GLOMMED_OBJ): new
- macro for DTrace static library hacks.
-
- * configure.in, Makefile.in (LIBRUBY_A_OBJS): ditto.
- * Makefile.in, common.mk (ruby-glommed.$(OBJEXT)): new target with
- rule for DTrace static library hacks.
-
- * common.mk (DTRACE_DEPENDENT_OBJS): objects depended on probes.h.
-
-Sun Nov 18 09:31:47 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * complex.c (read_comp): mathn compliant.
- * rational.c (read_num): ditto.
-
-Sun Nov 18 02:50:12 2012 Luis Lavena <luislavena@gmail.com>
-
- * win32/file.c (replace_to_long_name): correct logic around wildcard
- characters detection and ensure wide-chars are used as pattern.
- [ruby-core:49451] [Bug #7374]
-
-Sun Nov 18 02:02:46 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * complex.c (read_comp): modified handling of polar form.
-
-Sun Nov 18 00:50:44 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * complex.c (read_comp): fixed handling of polar form.
-
-Sun Nov 18 00:14:46 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * complex.c (string_to_c_strict, string_to_c): rewrote without regexp.
- * rational.c (string_to_r_strict, string_to_r): ditto.
-
-Sat Nov 17 23:53:05 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * complex.c (make_patterns): should not accept extra sign.
-
-Sat Nov 17 21:45:12 Luis Lavena <luislavena@gmail.com>
-
- * win32/file.c (replace_to_long_name): skip expansion for all wildcard
- characters.
- [ruby-core:49451] [Bug #7374]
-
- * test/ruby/test_file_exhaustive.rb: add more assertions to test.
-
-Sat Nov 17 12:14:50 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/yaml_tree.rb: use literal YAML style
- when emitting multi-line strings. Thanks @atambo
-
- * test/psych/test_yaml.rb: test for change.
-
-Sat Nov 17 12:03:41 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/scalar_scanner.rb: avoid raising exceptions when
- parsing Floats and Integers. Thanks riffraff [ruby-core:44426]
- * test/psych/test_numeric.rb: associated test
-
-Sat Nov 17 11:34:31 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * st.c (st_update): pass the key in st_table so that we can free
- memory of the key in st_table when deleting.
- [ruby-core:49220] [Bug #7330]
-
- * test/-ext-/st/test_update.rb
- (Bug::StTable#test_pass_objects_in_st_table): add a test.
-
-Sat Nov 17 11:26:36 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/core_ext.rb: move Kernel#y so that it can
- manually be required as 'psych/y'.
-
- * ext/psych/lib/psych/y.rb: ditto
-
-Sat Nov 17 08:13:48 2012 Benoit Daloze <eregontp@gmail.com>
-
- * lib/abbrev.rb: fix r37113. Correct examples, fix style
- and show explicit dependency (require 'abbrev').
-
-Sat Nov 17 07:35:15 2012 Luis Lavena <luislavena@gmail.com>
-
- * win32/file.c (replace_to_long_name): skip automatic path expansion
- when wildcard character is used. [ruby-core:49451] [Bug #7374]
-
- * test/ruby/test_file_exhaustive.rb: add a test for above.
-
-Sat Nov 17 00:50:23 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-
- * marshal.c (w_object): add flonum to arg->data to keep reference index
- consistency. [ruby-core:49323] [Bug #7348]
-
- * test/ruby/test_marshal.rb: add a test for above.
-
-Sat Nov 17 00:40:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (incs): dist files need probes.dmyh.
-
- * common.mk (probes.dmyh): depends on generator script.
-
- * Makefile.in, common.mk, configure.in, win32/Makefile.sub (probes.h):
- select generating with dtrace or copying dummy file by suffix rules.
-
-Fri Nov 16 19:24:10 2012 Koichi Sasada <ko1@atdot.net>
-
- * thread.c (rb_thread_call_without_gvl2): change the parameter of
- `func' from `int *skip_interrupt' to `VALUE *flags'.
- If (flags & RUBY_CALL_WO_GVL_FLAG_SKIP_CHECK_INTS) is not zero,
- then skip checking interrupt.
- [ruby-core:46547]
-
- * include/ruby/thread.h: ditto.
-
-Fri Nov 16 18:59:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * Makefile.in (no-dtrace-probes.h): dmyprobes.h is in srcdir.
-
- * common.mk (dmyprobes.h): ditto.
-
-Fri Nov 16 17:57:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * Makefile.in (probes.h): split build commands for dtrace-available
- and unavailable platforms.
-
- * Makefile.in (incs): probes.h is a platform dependent file, so it
- cannot be a part of prereq target. move it to all-incs.
-
- * configure.in (DTRACE): move after AC_PROG_CC since cross_compiling
- is set in it.
-
- * configure.in (DTRACE): ignore non-prefixed version if
- cross-compiling.
-
- * Makefile.in, win32/Makefile.sub (probes.h): fix copying dmyprobes.h
- path when outplace-build.
-
-Fri Nov 16 15:27:36 2012 Masaki Matsushita <glass.saga@gmail.com>
-
- * lib/net/pop.rb (POP3.certs): fix typo in comment.
- patch from no6v (Nobuhiro IMAI) <nov@yo.rim.or.jp>.
- [ruby-dev:46519] [Bug #7355]
-
-Fri Nov 16 12:36:47 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * test/rake/helper.rb (Rake::TestCase#setup): revert r37669.
- @orig_PWD should be the original pwd.
-
- * test/rake/test_*.rb: don't use @orig_PWD to load libraries.
- It should be specified with relative path from the file.
-
-Fri Nov 16 10:22:52 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * test/rake/helper.rb (Rake::TestCase#setup): @orig_PWD shouldn't be
- Dir.pwd when the build directory is different from source directory.
-
-Fri Nov 16 09:41:08 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/rake/version.rb: workaround fix to build. see #7366
- [ruby-dev:46522]
-
-Fri Nov 16 07:23:18 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rake*: Updated to rake 0.9.4
- http://rake.rubyforge.org/doc/release_notes/rake-0_9_4_rdoc.html for
- a list of changes in 0.9.4.
-
- * test/rake*: ditto
+Tue Jun 28 11:45:30 2011 Eric Hodel <drbrain@segment7.net>
+ * lib/rake: Update rake to fix some bugs and hide deprecated features
+ from RDoc.
+ * lib/rake/version.rb: Bump version to 0.9.2.1 to distinguish it from
+ the released version.
* NEWS: ditto
-Fri Nov 16 06:58:52 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rake*: Updated to rake 0.9.3. See
- http://rake.rubyforge.org/doc/release_notes/rake-0_9_3_rdoc.html for
- a list of changes in 0.9.3.
-
- * test/rake*: ditto
-
- * bin/rake: ditto
+Tue Jun 28 11:17:28 2011 Eric Hodel <drbrain@segment7.net>
+ * lib/rdoc: Update to RDoc 3.7 (final)
* NEWS: ditto
-Thu Nov 15 22:39:32 2012 Yusuke Endoh <mame@tsg.ne.jp>
-
- * range.c (range_bsearch): fix some bugs: a documentation bug, a wrong
- condition, missed break in switch/case, and workaround for GCC
- optimization. See [ruby-core:49364] in detail. A great patch from
- Heesob Park. [Bug #7352] [Feature #4766]
-
- * array.c (rb_ary_bsearch): fix similar bug (missed break).
-
- * test/ruby/test_range.rb: add two test cases for above.
-
-Thu Nov 15 22:41:57 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_exec.h (GENTRY): GENTRY should be pointer size.
- A patch by yoshidam (Yoshida Masato) [Bug #7332].
-
-Thu Nov 15 13:20:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * man/erb.1: Fix grammar and copyright dates
- * man/goruby.1: ditto
- * man/irb.1: ditto
- * man/rake.1: ditto
- * man/ri.1: ditto
- * man/ruby.1: ditto
- Patch by Arthur Gunn
- [Fixes Github #210]
-
-Thu Nov 15 11:35:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * man/ruby.1: Grammar edits for man page
- Based on a patch by Michael Endsley [Fixes Github #183]
-
-Thu Nov 15 00:47:20 2012 Yusuke Endoh <mame@tsg.ne.jp>
-
- * array.c (rb_ary_bsearch): add Array#bsearch for binary search.
- [ruby-core:36390] [Feature #4766]
-
- * test/ruby/test_array.rb: add a test for above.
-
- * range.c (range_bsearch): add Range#bsearch for binary search.
- [ruby-core:36390] [Feature #4766]
-
- * test/ruby/test_range.rb: add a test for above
-
- * NEWS: added the two new methods.
-
-Wed Nov 14 13:25:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * lib/fileutils.rb (chmod): Add "X" to modes, convert format to table
- [ruby-core:48965] [Bug #7288]
-
-Wed Nov 14 11:51:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * lib/csv.rb (init_comments): Document private method #init_comments.
- Based on a patch from Vincent Batts [ruby-core:49172] [Bug #7319]
-
-Wed Nov 14 00:54:00 2012 Kenta Murata <mrkn@mrkn.jp>
-
- * Makefile.in (probes.h): create from probes.d
-
-Tue Nov 13 18:44:01 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c (vm_call_cfunc_with_frame): don't use ci after
- EXEC_EVENT_HOOK because ci can be overridden.
-
- * vm_eval.c: ditto.
-
- * method.h: change invoker's parameters types.
-
- * vm_method.c (call_cfunc_invoker_func): ditto.
-
-Tue Nov 13 18:01:54 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * eval.c (rb_mod_using): raise an ArgumentError if cyclic using is
- detected. based on the patch by Charlie Somerville.
- [ruby-core:49092] Bug #7308
-
- * test/ruby/test_refinement.rb: related test.
+Tue Jun 28 10:18:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Nov 13 17:40:04 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * process.c (rb_daemon): fix wrong #endif position.
- * common.mk (vm_insnhelper.c): this target is useless and causes
- ruby always need rebuild.
+Tue Jun 28 07:50:32 2011 Eric Hodel <drbrain@segment7.net>
-Tue Nov 13 17:35:49 2012 Koichi Sasada <ko1@atdot.net>
+ * object.c (Init_Object): Teach RDoc what Init_class_hierarchy does to
+ hook up ri for BasicObject, Object, Module and Class.
- * compile.c (insn_data_to_s_detail): remove debug lines.
+Tue Jun 28 05:03:32 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-Tue Nov 13 17:28:47 2012 Koichi Sasada <ko1@atdot.net>
+ * thread.c (rb_thread_local_aref): RDoc fix. Thread#[] example
+ had a race. See #4480.
- * vm_insnhelper.c (vm_caller_setup_args): save and restore
- ci->argc and ci->blockptr before and after method invocations
- because these method dispatches can override call_info.
+Tue Jun 28 01:22:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * bootstraptest/test_method.rb: add tests for this fix.
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_log): move BigMath.log from
+ bigdecimal/math.rb.
-Tue Nov 13 16:38:02 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/bigdecimal/lib/bigdecimal/math.rb: ditto.
- * common.mk (dmyprobes.h): always create for make dist.
+ * test/bigdecimal/test_bigdecimal.rb: move test for BigMath.log from
+ test/bigdecimal/test_bigmath.rb.
- * Makefile.in (probes.h): create or copy dmyprobes.h
+ * test/bigdecimal/test_bigmath.rb: ditto.
- * win32/Makefile.sub: only do copy dmyprobes.h.
+Tue Jun 28 01:19:52 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
-Tue Nov 13 15:37:21 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/irb/ruby-lex.rb: fix [Bug #4232].
- * Makefile.in (.SUFFIX): .SUFFIX is needed here for .d.h on bsd make.
+Tue Jun 28 00:14:13 2011 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-Tue Nov 13 15:34:35 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/drb/drb.rb: fix [Bug #4409]. add DRbServer#here?.
- * common.mk Makefile.in win32/Makefile.sub (.d.h): it's not common.
+ * test/drb/test_drb.rb: ditto.
-Tue Nov 13 12:27:11 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/drb/drbtest.rb: ditto.
- * configure.in: disable dtrace because it doesn't work on FreeBSD.
+ * test/drb/ut_eq.rb: ditto.
- * common.mk (clean-local): rm probes.h.
+Tue Jun 28 00:08:43 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
- * common.mk (parse.o): depend $(PROBES_H_INCLUDES).
+ * lib/irb/workspace.rb: fix BUG#4793.
- * common.mk (.d.h): moved from Makefile.in and use BASERUBY.
+Mon Jun 27 22:06:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * tool/gen_dummy_probes.rb: reimplemented with ruby because sed is not
- available on Windows Microsoft VC++ environment.
+ * thread_pthread.c (consume_communication_pipe): don't use C99
+ style variable length array.
-Tue Nov 13 12:30:26 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Jun 27 22:04:27 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * win32/README.win32: added mention about build directory. currently
- we can not build ruby in win32 directory. this problem is reported
- by Masahiro Kitajima <katonbo@katontech.com>.
+ * thread_pthread.c (consume_communication_pipe): change return
+ type to void. caller doesn't use it.
-Tue Nov 13 11:03:47 2012 Masaki Matsushita <glass.saga@gmail.com>
+Mon Jun 27 21:29:50 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * re.c (rb_memsearch_ss): performance improvement by using memmem(3) if
- possible. [ruby-dev:45530] [Feature #6311]
+ * thread_pthread.h (rb_global_vm_lock_struct): add volatile to
+ gvl->waiting. now thread_timer() access it w/o lock.
- * configure.in: check existence of memmem(3) and that it is not broken.
+Mon Jun 27 21:16:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Nov 13 06:50:02 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * thread_pthread.c: s/__gvl_acquire/gvl_acquire_common/ and
+ s/__gvl_release/gvl_release_common/.
- * probes.d: add DTrace probe declarations. [ruby-core:27448]
+Mon Jun 27 11:41:47 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * array.c (empty_ary_alloc, ary_new): added array create DTrace probe.
+ * thread_pthread.c (rb_thread_create_timer_thread):
+ the type of return value of write(2) is ssize_t.
- * compile.c (rb_insns_name): allowing DTrace probes to access
- instruction sequence name.
+Mon Jun 27 09:57:02 2011 Koichi Sasada <ko1@atdot.net>
- * Makefile.in: translate probes.d file to appropriate header file.
+ * thread_pthread.c (rb_thread_create_timer_thread):
+ Fixes missing initialization of oflags.
- * common.mk: declare dependencies on the DTrace header.
+Mon Jun 27 09:07:42 2011 Koichi Sasada <ko1@atdot.net>
- * configure.in: add a test for existence of DTrace.
+ * thread_pthread.c: Stop polling in the timer thread when there are
+ no waiting thread. If there are 2 or more runnable threads,
+ the timer thread does polling. Avoid polling makes power save
+ for several computers (0.2W per a Ruby process, when I measured).
+ If outside-event such as signal or Thread#kill was occurred
+ when the timer thread does not do polling, then wake-up
+ the timer thread using communication-pipe (the timer thread
+ waits this communication-pipe with select(2)).
+ The discussion about this modification can be found from the post
+ [ruby-core:33456] and other related posts.
+ Note that Eric Wong and KOSAKI Motohiro give us the huge
+ contributions for this modification. Thanks.
- * eval.c (setup_exception): add a probe for when an exception is
- raised.
+ * thread_pthread.c (rb_thread_wakeup_timer_thread): add a function.
+ This function wakes up the timer thread using communication-pipe.
- * gc.c: Add DTrace probes for mark begin and end, and sweep begin and
- end.
+ * thread.c (rb_thread_stop_timer_thread): add a parameter which
+ specify closing communication-pipe or not.
- * hash.c (empty_hash_alloc): Add a probe for hash allocation.
+ * thread.c (rb_thread_terminate_all): do not stop timer thread here
+ (ruby_cleanup() terminate timer thread).
- * insns.def: Add probes for function entry and return.
+ * signal.c: wake up timer thread using
+ rb_thread_wakeup_timer_thread() from signal handler.
- * internal.h: function declaration for compile.c change.
+ * eval.c (ruby_cleanup): use rb_thread_stop_timer_thread(1).
- * load.c (rb_f_load): add probes for `load` entry and exit, require
- entry and exit, and wrapping search_required for load path search.
+ * process.c: use rb_thread_stop_timer_thread(0)
+ (reuse communication-pipe).
- * object.c (rb_obj_alloc): added a probe for general object creation.
-
- * parse.y (yycompile0): added a probe around parse and compile phase.
-
- * string.c (empty_str_alloc, str_new): DTrace probes for string
- allocation.
-
- * test/dtrace/*: tests for DTrace probes.
-
- * vm.c (vm_invoke_proc): add probes for function return on exception
- raise, hash create, and instruction sequence execution.
-
- * vm_core.h: add probe declarations for function entry and exit.
-
- * vm_dump.c: add probes header file.
-
- * vm_eval.c (vm_call0_cfunc, vm_call0_cfunc_with_frame): add probe on
- function entry and return.
-
- * vm_exec.c: expose instruction number to instruction name function.
-
- * vm_insnhelper.c: add function entry and exit probes for cfunc
- methods.
-
- * vm_insnhelper.h: vm usage information is always collected, so
- uncomment the functions.
-
-Mon Nov 12 19:14:50 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * configure.in (isinf, isnan): isinf() and isnan() are macros on
- DragonFly which cannot be found by AC_REPLACE_FUNCS(). This
- workaround enforces the fact that they exist on DragonFly.
-
-Mon Nov 12 15:59:38 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo),
- vm_insnhelper.c (vm_search_method): revert r37616 because it's too
- slow. [ruby-dev:46477]
-
- * test/ruby/test_refinement.rb (test_inline_method_cache): skip
- the test until the bug is fixed efficiently.
+ * thread_win32.c (rb_thread_wakeup_timer_thread): add a dummy
+ function.
-Mon Nov 12 14:28:01 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * vm_core.h: add and fix decl. of functions.
- * win32/mkexports.rb (each_export): skip garbage generated by VS2012's
- nmake.
- reported and patched by Yoshida Masato at [Bug #7333] [ruby-dev:46484]
+Mon Jun 27 08:01:19 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Sun Nov 11 18:58:55 2012 Tadayoshi Funaba <tadf@dotrb.org>
+ * ext/date/date_parse.c: should use ALLOCA_N.
- * test/date/test_date_{parse,strptime}.rb: changed the format of
- some extra messages.
+Mon Jun 27 01:34:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Nov 11 18:41:34 2012 Tadayoshi Funaba <tadf@dotrb.org>
+ * test/etc/test_etc.rb (TestEtc#test_get{pw,gr}nam): skip entries
+ start with + sign, which means NIS. these are returned in the
+ case that passwd and group entries in /etc/nsswitch.conf are set
+ to use "nis" explicitly on Debian. fixed #3683
- * ext/date/date_parse.c (date__parse): revised the tight parser
- (about handling of apostrophes).
+Mon Jun 27 00:44:53 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Nov 11 15:39:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * parse.y (rb_parser_end_seen_p): fix documentation about return
+ value. patched by Sho Hashimoto. [Bug #4511]
- * hash.c (rb_hash_s_create): just warn for wrong elements now.
- [ruby-dev:46440] [Bug #7300]
+Mon Jun 27 00:40:47 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * hash.c (rb_hash_s_create): refine error messages.
+ * hash.c (rb_hash_reject): add documentation that Hash#reject
+ without block returns enumerator.
+ patched by Michael Edgar [Bug #4847] [ruby-core:36800]
- * error.c (rb_builtin_class_name): share for above.
+Sun Jun 26 23:49:21 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Sun Nov 11 15:12:18 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * test/date/test_switch_hitter.rb: added a test.
- * eval.c (top_using): remove Kernel#using, and add main.using instead.
+ Sun Jun 26 22:21:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * test/ruby/test_refinement.rb: related test.
+ * ext/date/date_core.c: refactoring.
-Sun Nov 11 13:41:01 2012 Shugo Maeda <shugo@ruby-lang.org>
+Sun Jun 26 18:03:30 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
- * eval.c (rb_using_refinement, rb_mod_using, f_using): clear method
- cache only when using is called explicitly.
+ * parse.y: comma at the end of line is no longer allowed.
+ A patch from Yukihiro Matsumoto <matz AT ruby-lang.org>.
+ (fixed #3456).
- * test/ruby/test_refinement.rb: related test.
+Sun Jun 26 13:35:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sun Nov 11 12:56:34 2012 Masaki Matsushita <glass.saga@gmail.com>
+ * vm_dump.c (rb_vm_bugreport): change CrashReporter suggestion messages
+ on Mac. It should be placed after "-- C level backtrace" line.
+ Suggested by Endoh-san.
- * lib/pstore.rb (PStore): fix not to replace ThreadError raised in
- #transaction block with PStore::Error.
- [ruby-core:39238] [Bug #5269]
+ <before>
+ -- See Crash Report log file under ~/Library/Logs/CrashReporter or ---------
+ -- /Library/Logs/CrashReporter, for the more detail of ---------------------
+ -- C level backtrace information -------------------------------------------
-Sun Nov 11 11:36:19 2012 Shugo Maeda <shugo@ruby-lang.org>
+ <after>
+ -- C level backtrace information -------------------------------------------
- * vm_core.h (rb_call_info_t::refinements), compile.c (new_callinfo):
- add a new field for inline method cache.
+ See Crash Report log file under ~/Library/Logs/CrashReporter or
+ /Library/Logs/CrashReporter, for the more detail of.
- * vm_insnhelper.c (vm_search_method): check rb_call_info_t::refinements
- not to confuse inline method cache when module_eval is used with
- refinements.
+Sun Jun 26 10:08:28 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * test/ruby/test_refinement.rb: related test.
+ * ext/openssl/extconf.rb
+ * ext/openssl/ossl_missing.h/.c: add ASN1_put_eoc if missing.
-Sun Nov 11 08:45:45 2012 Martin Duerst <duerst@it.aoyama.ac.jp>
+ * ext/openssl/ossl_asn1.c: introduce ossl_asn1_object_size and
+ ossl_asn1_put_object to wrap functionality depending on OpenSSL
+ version in use.
+ Fixes [ Ruby 1.9 - Bug #4916 ] reported by Hiroshi Nakamura.
+ [ruby-core:37286]
- * ruby.c: removed a comma before "before"
+Sun Jun 26 01:00:15 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Sat Nov 10 23:02:31 2012 Narihiro Nakamura <authornari@gmail.com>
+ * ext/date/date_core.c (date_strftime_internal): removed meaningless braces.
+ * ext/date/date_core.c (gengo): the value should be int.
- * gc.c: move immutable fields from struct heaps_slot and struct
- sorted_heaps_slot into struct heaps_header.
- Based on a patch from Sokolov Yura [Feature #6199][ruby-core:43592]
+Sat Jun 25 23:45:30 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Sat Nov 10 19:28:16 2012 Tadayoshi Funaba <tadf@dotrb.org>
+ * vm_insnhelper.c (vm_search_superclass): avoid control frame
+ stack overrun. currently super() in Proc created in a method
+ defined by Module#define_method raise NoMethodError. [Bug #4881]
+ * test/ruby/test_method.rb t_super_in_proc_from_define_method):
+ add test for it.
- * complex.c: modified doc.
- * rational.c: ditto.
+Sat Jun 25 23:23:14 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Sat Nov 10 18:20:10 2012 Tadayoshi Funaba <tadf@dotrb.org>
+ * thread.c (sleep_forever): now Kernel#sleep don't wakeup by
+ signal handler execution. [Bug #4072]
- * ext/date/date_parse.c: edited about era.
+Sat Jun 25 23:14:47 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Sat Nov 10 12:13:41 2012 Kouhei Sutou <kou@cozmixng.org>
+ * thread.c (rb_threadptr_check_signal): remove unnecessary th->status
+ backup. fix race condition which may results unexpected main thread's
+ status transition. see #4072
- * tool/rbinstall.rb: Don't install *.gemspec under lib/.
- [ruby-core:48966] [Bug #7289]
- Reported by Vit Ondruch. Thanks!!!
+Fri Jun 24 19:57:30 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-Sat Nov 10 00:49:26 2012 Naohisa Goto <ngotogenome@gmail.com>
+ * lib/webrick/httprequest.rb (setup_forwarded_info): Parsing request
+ header failed when the request is from 2 or more Apache reverse
+ proxies. It's said that all X-Forwarded-* headers will contain more
+ than one (comma-separated) value if the original request already
+ contained one of these headers. Since we could use these values as
+ Host header, we choose the initial(first) value. See #4922.
- * ruby_atomic.h: renamed from atomic.h to avoid header file name
- conflict on Solaris 10. [ruby-dev:46414] [Bug #7287]
+ * test/webrick/test_httprequest.rb (test_forwarded): Test it.
- * gc.c, signal.c, vm_core.h, common.mk: reflect the rename from
- atomic.h to ruby_atomic.h.
+Fri Jun 24 17:06:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Nov 10 00:46:57 2012 Naohisa Goto <ngotogenome@gmail.com>
+ * process.c (proc_daemon): should not start timer thread
+ twice. fixed Bug#4920.
- * atomic.h: Revert r37491 which is a temporary workaround.
+Fri Jun 24 15:54:14 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-Sat Nov 10 00:33:31 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/openssl/ossl_ssl.c (ossl_ssl_shutdown): Try to shutdown SSL
+ connection more gracefully. Call SSL_shutdown() max 4 times until it
+ returns 1 (success). Bi-directional SSL close has several states but
+ SSL_shutdown() kicks only 1 transition per call. Max 4 is from
+ mod_ssl.c of Apache httpd that says 'max 2x pending + 2x data = 4'.
+ See #4237.
- * siphash.h: check configure macros before include newer headers.
+Fri Jun 24 07:24:37 2011 Eric Hodel <drbrain@segment7.net>
-Fri Nov 9 23:33:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rake/version.rb: Fixed VERSION to work with tool/rbinstall.rb
+ * bin/rake: Import bin/rake from 0.9.2
+ * tool/rbinstall.rb (install): Rake::VERSION is now in
+ lib/rake/version.rb. Fixes `make install`
- * lib/erb.rb (ERB#run, ERB#result): eval under isolated bindings for
- safe concurrent use. [ruby-core:47638] [Bug #7046]
+Fri Jun 24 07:11:37 2011 Eric Hodel <drbrain@segment7.net>
-Fri Nov 9 23:05:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rake: Import Rake 0.9.2
- * random.c (BYTE_ORDER): define using configured WORDS_BIGENDIAN.
+Fri Jun 24 00:44:15 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * siphash.c (sip_init_state): use union to suppress warnings by gcc
- 4.7.
+ * ext/date/date_core.c (c_valid_{julian,gregorian}_p): fixed the range of month.
-Fri Nov 9 19:40:03 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Jun 24 00:14:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * array.c (rb_ary_splice): fix r37583 doesn't consider the case when
- beg > array length.
+ * ext/date/date_core.c: trivial changes on text.
-Fri Nov 9 16:11:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Jun 23 22:46:57 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
- * random.c (rb_memhash): use siphash.
+ * ext/openssl/ossl_x509name.c: Add X509::Name#hash_old as a wrapper
+ for X509_NAME_hash_old in OpenSSL 1.0.0. See #4805
-Fri Nov 9 16:08:46 2012 Sokolov Yura funny-falcon <funny.falcon@gmail.com>
+ * test/openssl/test_x509name.rb (test_hash): Make test pass with
+ OpenSSL 1.0.0.
- * array.c: speedup Array#unshift by using space in shared array.
- [Feature #6638]
- - when array owns its shared array (ARY_SHARED_NUM == 1), and there
- is enough space then try unshift values directly into shared
- array.
- - when resulting array is big (~>64 items) then make it shared with
- enough room for future #unshifts, and then insert into shared
- array.
+ * NEWS: Add it.
- * array.c (rb_ary_splice): use shared array in rb_ary_slice.
- [Feature #6638]
- - use ary_ensure_room_for_push when rb_ary_slice used to add at the
- end of array, cause rb_ary_concat use rb_ary_slice.
+Thu Jun 23 19:30:53 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
- * array.c (ary_ensure_room_for_push): make array really suitable for
- queue. [Feature #6638]
- when array is shared (which happens after Array#shift), and
- ARY_SHARED_NUM == 1 (which is very often when array used as queue),
- then make rb_ary_push push directly into shared array.
+ * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_set_time): Check
+ argument type with NUM2LONG if the arg is not a Time object.
+ See #4919.
- * array.c (rb_ary_modify): steal shared array's container when
- ARY_SHARED_NUM == 1. [Feature #6638]
- - Do not allocate new memory in rb_ary_modify when ARY_SHARED_NUM == 1
- and length almost same.
- - Store ARY_CAPA instead of RARRAY_LEN in ary_make_shared, to make
- it useful.
- - Fix rb_ary_sort_bang accordantly.
+ * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_set_timeout): Check
+ type with NUM2LONG. Time as an arg is not allowed. See #4919.
-Fri Nov 9 16:00:00 2012 Zachary Scott <zzak@zacharyscott.net>
+ * test/openssl/test_ssl_session.rb (test_session_time,
+ test_session_timeout): Test it.
- * ext/bigdecimal/bigdecimal.c: Documentation for BigDecimal
- Based on a patch from Vincent Batts [ruby-core:49047] [Bug #7305]
+Wed Jun 23 13:30:30 2011 Shota Fukumori <sorah@tubusu.net>
-Fri Nov 9 15:25:42 2012 Akinori MUSHA <knu@iDaemons.org>
+ * signal.c(ruby_atomic_exchange): Fix definition style.
- * lib/shellwords.rb (Shellwords#shellescape): Add back my original
- real world example with some enhancement.
+Wed Jun 22 22:34:05 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
- * lib/shellwords.rb (Shellwords#shelljoin): Undo part of the
- previous rdoc change. This new example using a string-only
- array was not in line with the description.
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_session_new_cb): Return 0 to
+ OpenSSL from the callback for SSL_CTX_sess_set_get_cb().
+ Returning 0 means to OpenSSL that the session is still valid
+ (since we created Ruby Session object) and was not freed by us with
+ SSL_SESSION_free(). Call SSLContext#remove_session(sess) in
+ session_get_cb block if you don't want OpenSSL to cache the session
+ internally.
+ This potential issue was pointed by Ippei Obayashi. See #4416.
-Fri Nov 9 12:58:13 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/openssl/test_ssl_session.rb (test_ctx_server_session_cb): Test
+ it.
- * string.c (rb_str_crypt): crypt(3) may return NULL.
- Latest glibc (2.16?) crypt(3) actually returns NULL. [Bug #7312]
+Wed Jun 22 22:21:17 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Fri Nov 9 12:07:06 2012 Akinori MUSHA <knu@iDaemons.org>
+ * ext/openssl/ossl_ssl_session.c: Respect T_BIGNUM time values. Patch by
+ Tomoyuki Chikanaga.
+ [ Ruby 1.9 - Bug #4919 ] [ruby-dev:43869]
- * include/ruby/ruby.h (alloca), eval_intern.h (alloca), gc.c
- (alloca): Make alloca() globally available by moving the
- ultimate ifdef's to ruby/ruby.h. Gcc hides its builtin alloca()
- when compiling with -ansi, and linking thus fails on platforms
- that lack their own alloca() implementation in libc, which
- include OpenBSD and some ports of NetBSD. We use alloca()
- everywhere including from within third party C extensions, so
- alloca() must be made globally available. [Bug #7307]
+Wed Jun 22 21:29:25 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * addr2line.c (alloca): Replace the alloca() part with the
- ultimate ifdef's. [Bug #7307]
+ * ext/socket/depend (SOCK_HEADERS): use $(top_srcdir) instead of
+ $(topdir). sorry!
-Fri Nov 9 09:30:00 2012 Zachary Scott <zachary@zacharyscott.net>
+Wed Jun 22 19:47:03 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * io.c (IO#new):
- Fix indentation from r37444
- [ruby-core:48052] [Bug #7179]
+ * cont.c (cont_capture): add volatile.
+ On clang -O, it is needed to avoid the optimization.
+ With this and llvm/clang's recent fix, clang 3.0 can
+ build ruby-trunk with -O option.
-Fri Nov 9 07:36:00 2012 Kenta Murata <mrkn@mrkn.jp>
+ * cont.c (cont_capture): use for-loop.
- * bignum.c (bigmul0): enable big_mul_toom3.
- [ruby-core:48552] [Bug #7242]
+ * array.c (rb_ary_each): add volatile and use it.
- * bignum.c (bigmul1_toom3): fix incorrect calculation.
- the patch is made by Heesob Park.
- [ruby-core:48552] [Bug #7242]
-
-Fri Nov 9 05:33:00 2012 Kenta Murata <mrkn@mrkn.jp>
-
- * bignum.c (bigmul0): disable big_mul_toom3 temporarily.
- [ruby-core:48552] [Bug #7242]
-
- * test/ruby/test_bignum.rb (test_mul_large_numbers):
- add a test for bigmul1_toom3 suggested in [Bug #7242].
-
-Thu Nov 8 21:57:59 2012 Masaki Matsushita <glass.saga@gmail.com>
-
- * re.c (rb_memsearch): performance improvement by using memchr().
- [ruby-dev:45397] [Feature #6173]
-
-Thu Nov 8 19:02:50 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * vm_insnhelper.c (vm_call_cfunc): ditto.
- * lib/net/protocol.rb (Net::InternetMessageIO#each_crlf_line):
- treat \r as newline as mame pointed. [ruby-dev:46425] [Bug #7278]
+Wed Jun 22 18:20:46 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-Thu Nov 8 11:32:11 2012 Akinori MUSHA <knu@iDaemons.org>
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_session_remove_cb):
+ OpenSSL::SSL::SSLContext#session_remove_cb was broken. It wrongly
+ tried to call the session_*new*_cb callback.
- * configure.in (--with-opt-dir): Avoid nesting of double quotes
- inside backquotes, since some traditional shells like PD KSH
- (which OpenBSD's /bin/sh bases on) fail to parse them.
+ * test/openssl/test_ssl_session.rb (class OpenSSL): Test it.
-Thu Nov 8 09:34:00 2012 Kenta Murata <mrkn@cookpad.com>
+Wed Jun 22 17:37:49 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * numeric.c: Add a caution that the results of the comparing
- operations of two NaNs are undefined.
- [#1720] [ruby-dev:38725] [ruby-core:36966]
+ * ext/openssl/ossl.h: Introduced OSSL_BIO_reset macro for PEM/DER
+ fallback scenarios.
-Thu Nov 8 04:45:21 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * ext/openssl/ossl_pkey_dsa.c
+ * ext/openssl/ossl_x509req.c
+ * ext/openssl/ossl_pkey_rsa.c
+ * ext/openssl/ossl_pkey_ec.c
+ * ext/openssl/ossl_ssl_session.c
+ * ext/openssl/ossl_x509crl.c
+ * ext/openssl/ossl_pkey.c
+ * ext/openssl/ossl_pkey_dh.c
+ * ext/openssl/ossl_x509cert.c
+ * ext/openssl/ossl_pkcs7.c: Use OSSL_BIO_reset.
+
+ * ext/openssl/ossl_ssl.c
+ * ext/openssl/ossl_cipher.c
+ * ext/openssl/ossl_pkey_ec.c
+ * ext/openssl/ossl_pkcs12.c
+ * ext/openssl/ossl_ssl_session.c: Replace rb_raise occurrences by
+ ossl_raise. This automatically flushes OpenSSL's error queue.
- * include/ruby/intern.h: Restore rb_enumeratorize as it was before
- r37497 and introduce rb_enumeratorize_with_size instead. [#7302]
+ * ext/openssl/ossl_pkcs7.c: Raise error if DER fallback for parsing
+ fails.
- * enumerator.c: ditto.
+ * test/openssl/test_pkey_ec.rb
+ * test/openssl/test_pkey_dsa.rb
+ * test/openssl/test_pkey_rsa.rb: Add assertions that OpenSSL.errors is
+ empty.
-Wed Nov 7 15:22:37 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/openssl/test_pkey_rsa.rb: Remove initial OpenSSL.errors call in
+ test_new.
+ [ Ruby 1.9 - Bug #4885 ] [ruby-core:37134]
- * numeric.c (ruby_float_step): fix r37514: it yielded with NaN
- if the unit is infinity.
+Wed Jun 22 15:01:24 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Wed Nov 7 15:46:12 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * ext/openssl/ossl_ssl.c: Use SSL_MODE_RELEASE_BUFFERS if available.
+ Thanks, Eric Wong, for providing the patch.
+ [ Ruby 1.9 - Feature #4672 ] [ruby-core:36127]
- * lib/webrick.rb: fix typo. reported by Rohit Arondekar.
- https://github.com/ruby/ruby/pull/211
+Wed Jun 22 14:47:53 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Wed Nov 7 15:34:12 2012 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+ * test/openssl/test_buffering.rb
+ * test/openssl/test_pkcs12.rb: Inherit from Test::Unit::TestCase
+ instead of MiniTest::Unit::TestCase. [ruby-core:37275]
- * lib/cgi/core.rb: alias CGI#http_header to CGI#header.
+Wed Jun 22 12:41:03 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-Wed Nov 7 12:49:39 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_to_der):
+ OpenSSL::SSL::Session#to_der was broken. Fix buffer handling.
- * eval.c (rb_mod_refine): set RMODULE_IS_REFINEMENT to a created
- refinement module, and don't override method_added.
+ * test/openssl/test_ssl_session.rb (test_session): Test it.
- * vm_method.c (rb_method_entry_make): check redefinition of
- optimized methods when a method is added to a refinement module.
- [ruby-core:48970] [Bug #7290]
+Wed Jun 22 12:38:52 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
- * test/ruby/test_refinement.rb: related test.
+ * test/openssl/test_ssl_session.rb: Split out SSL::Session related
+ tests from test_ssl.rb
-Wed Nov 7 11:48:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Jun 22 03:20:52 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * misc/ruby-additional.el (ruby-mode-set-encoding): now encoding needs
- to be set always explicitly actually. [Feature #6679]
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Fix cyclic references of
+ objects. Thanks to CvX for reporting the bug and a test case.
+ * test/psych/test_object.rb: test for cyclic object references.
-Wed Nov 7 09:15:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Jun 22 02:39:54 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
- * object.c (rb_mod_const_get): avoid inadvertent symbol creation.
+ * lib/net/http.rb (Net::HTTP.post_form): Do not ignore query part of
+ the given URI to post. See #655.
-Wed Nov 7 07:52:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/net/http/test_http.rb, test/net/http/utils.rb: Test it.
- * enum.c (rb_enum_cycle_size): prefix with rb.
+Wed Jun 22 01:28:13 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-Wed Nov 7 04:32:15 2012 Luis Lavena <luislavena@gmail.com>
+ * test/openssl/test_x509store.rb (test_set_errors): Redhat is
+ distributing a patched version of OpenSSL that allows multiple CRL
+ for a key (multi-crl.patch.) Make test pass on such env. See #4122,
+ #4554.
- * test/ruby/test_file_exhaustive.rb: Remove FIXME skip on Windows
- specific test because the test in question was already fixed.
+Tue Jun 21 21:50:37 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-Wed Nov 7 03:45:12 2012 Luis Lavena <luislavena@gmail.com>
+ * lib/webrick/httpresponse.rb (HTTPResponse#setup_header): Close
+ HTTP/1.1 connection when returning an IO object as response body
+ without setting HTTPResponse#chunked to true. See #855 no.1.
- * ext/zlib/extconf.rb: Recognize zlibwapi as linking library.
- Patch by Daniel Berger.
+ * test/webrick/test_httpserver.rb: Test it.
- [ruby-core:44979] [Feature #6421]
+Tue Jun 21 21:27:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Nov 7 02:06:40 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * internal.h: move rb_thread_io_blocking_region() declaration
+ from intern.h to internal.h. It's still experimental API and
+ need more discussion. [ruby-dev:43698]
+ * include/ruby/intern.h: ditto.
- * enumerator.c: New method #size; constructor accepts size.
- Have #to_enum accept a block
- Warn when using deprecated form of constructor
- Support #size for enumerators created from enumerators
- Support for lazy.{map|flat_map|...}.size.
+ * ext/socket/rubysocket.h: include internal.h.
+ * ext/socket/depend: add internal.h dependency.
+ * ext/socket/extconf.rb: add $INCFLAGS to topdir.
- * include/ruby/intern.h: RETURN_SIZED_ENUMERATOR for support of
- sized enumerators.
+Tue Jun 21 20:38:47 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * array.c: Support for various enumerator.size.
+ * ext/date/date_core.c (datetime_s_*): canonicalize 24 o'clock.
- * enum.c: ditto.
+Tue Jun 21 19:46:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * hash.c: ditto.
+ * test/ruby/test_thread.rb (TestThread#test_priority): enable
+ this test again. Current GVL respect thread priority rather
+ than past.
- * numeric.c: ditto.
+Tue Jun 21 13:25:35 2011 TAKAO Kouji <kouji@takao7.net>
- * range.c: ditto.
+ * ext/readline/readline.c (readline_getc): applied a patch in
+ #3827 by by Akio Tajima <artonx AT yahoo.co.jp>. (see #3827)
- * string.c: ditto.
+Tue Jun 21 13:16:31 2011 TAKAO Kouji <kouji@takao7.net>
- * struct.c: ditto.
+ * ext/readline/extconf.rb: fixed bug, specify --disable-libedit
+ then disable libedit, does not specify then check readline and
+ libedit if failed checking readline. (fixes #3375)
- * vm_eval.c: ditto.
+Mon Jun 20 22:52:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Nov 6 20:40:28 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * process.c (before_exec): use sig_do_nothing instead of SIG_DFL
+ for avoiding a race.
+ * process.c (sig_do_nothing): new function.
- * object.c (rb_mod_const_get): Fix constant missing exception class
- and message to maintain backwards compatibility. Constant search
- should start at Object when constant starts with '::'
+Mon Jun 20 21:31:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/ruby/test_module.rb: test for fixes
+ * thread_pthread.c (thread_timer): rename timeout_10ms to
+ time_quantum. it's no longer 10ms.
-Tue Nov 6 16:50:00 2012 Masaki Matsushita <glass.saga@gmail.com>
+Mon Jun 20 18:46:02 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
- * lib/tempfile.rb (Tempfile#inspect): fix confusing #inspect.
- previous Tempfile#inspect says it is a File, but actually
- it is not a File.
+ * ext/openssl/ossl_cipher.c, ext/openssl/lib/openssl/cipher.rb:
+ Documentation fix by Ippei Obayashi. See #4419.
- t = Tempfile.new("foo") #=> #<File:/tmp/foo20121106-31970-1ffbum0>
- t.is_a? File #=> false
+Mon Jun 20 15:41:33 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
- now Tempfile#inspect returns like:
+ * lib/webrick/cookie.rb (WEBrick::Cookie.parse): Revert r31228.
+ r31228 was for allowing the 'Cookie:' header which did not have no
+ SP after ';' for separating cookie-pairs but RFC6265 requires single
+ SP after ';' there. We allow multiple SPs here for compatibility
+ with older WEBrick version.
- t = Tempfile.new("foo")
- #=> #<Tempfile:/tmp/foo20121106-31970-1ffbum0>
+ * test/webrick/test_cookie.rb: Test it.
- [ruby-core:47544] [Bug #7027]
+Sun Jun 19 13:31:26 2011 Shota Fukumori <sorah@tubusu.net>
-Tue Nov 6 16:22:30 2012 Naohisa Goto <ngotogenome@gmail.com>
+ * NEWS: Introduce --hide-skip on test/unit.
- * atomic.h: add #include <sys/atomic.h> for the workaround of
- header file name conflict of atomic.h with /usr/include/atomic.h
- on Solaris 10. [ruby-dev:46414] [Bug #7287]
+Sun Jun 19 10:05:16 2011 Shota Fukumori <sorah@tubusu.net>
-Tue Nov 6 14:38:00 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/test/unit/parallel.rb: Override Test::Unit::TestCase#on_parallel_worker?
+ only when $0 == __FILE__.
- * test/win32ole/test_win32ole.rb: now source encoding is UTF-8, so
- binary strings in old scripts are dangerous.
+ * lib/test/unit/parallel.rb: Run Test::Unit::Worker.run only when
+ $0 == __FILE__.
-Tue Nov 6 14:25:09 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Jun 18 23:59:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/net/protocol.rb (Net::InternetMessageIO#each_crlf_line):
- don't use /n in universal regexp. [ruby-dev:46394] [Bug #7278]
+ * io.c (fill_cbuf): finish reading at EOF, and the readconv has
+ been cleared by another thread while io_fillbuf() is waiting at
+ select(). a patch in [ruby-core:37197] by Hiroshi Shirosaki
+ <h.shirosaki AT gmail.com>. fixed #3840
-Tue Nov 6 09:42:26 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Jun 18 21:36:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * string.c (rb_str_b): Add String#b, returning a copied string
- whose encoding is ASCII-8BIT. [ruby-dev:45992] [Feature #6767]
+ * thread_pthread.c: remove GVL_DEBUG
-Tue Nov 6 09:37:57 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Jun 18 21:32:02 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ruby.c (load_file_internal): set default source encoding as
- UTF-8 instead of US-ASCII. [ruby-core:46021] [Feature #6679]
+ * vm.c, vm_core.h (rb_vm_stack_to_heap): remove const.
+ It makes compilations warnings.
- * parse.y (parser_initialize): set default parser encoding as
- UTF-8 instead of US-ASCII.
+Sat Jun 18 18:54:15 2011 Koichi Sasada <ko1@atdot.net>
-Tue Nov 6 05:48:06 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * vm.c, vm_core.h (rb_vm_stack_to_heap): fix "const" place.
- * test/ruby/test_require.rb
- (TestRequire#test_require_to_path_redefined_in_load_path,
- TestRequire#test_require_to_str_redefined_in_load_path):
- Suppress method redefined warning when test-all with RUBYOPT=-w.
+Sat Jun 18 17:23:38 2011 Tanaka Akira <akr@fsij.org>
-Thu Nov 8 00:24:14 2012 Akinori MUSHA <knu@iDaemons.org>
+ * eval.c, hash.c, load.c, proc.c, range.c, thread.c, time.c: don't
+ declare internal functions.
- * ext/curses/view.rb: Do not fail if the file to view is shorter
- than the screen height.
+ * internal.h, vm_core.h: declare internal functions.
-Mon Nov 5 11:40:00 2012 Mark Somerville <mark@scottishclmibs.com>
+ * array.c: include internal.h.
- * thread_pthread.c (rb_reserved_fd_p): fix typo in macro check
- that prevented the ifdef ever being true.
- [Bug #7281] [ruby-core:48940]
+ * common.mk: update dependency for array.o.
-Mon Nov 5 23:28:57 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Sat Jun 18 13:39:33 2011 Tanaka Akira <akr@fsij.org>
- * file.c (rb_get_path_check_to_string): extract from
- rb_get_path_check(). We change the spec not to call to_path of
- String object.
+ * internal.h: declarations declared in include/ruby/*.h removed.
- * file.c (rb_get_path_check_convert): extract from rb_get_path_check().
+Sat Jun 18 12:42:17 2011 Tanaka Akira <akr@fsij.org>
- * file.c (rb_get_path_check): follow the above change.
+ * method.h, internal.h iseq.h: declare internal functions.
- * file.c (rb_file_expand_path_fast): remove check_expand_path_args().
- Instead we call it in load.c.
+ * compile.c, eval.c, iseq.c, object.c, parse.y, proc.c, process.c,
+ thread.c, vm.c, vm_eval.c, vm_insnhelper.c, vm_method.c: don't
+ declare internal functions.
- * file.c (rb_find_file_ext_safe): use rb_get_expanded_load_path() to
- reduce expand cost.
+ Note that rb_method_entry_eq() is defined in vm_method.c but
+ there was a declaration in proc.c with different const-ness.
+ Now it is declared in method.h with same const-ness to the
+ definition.
- * file.c (rb_find_file_safe): ditto.
+ * object.c (rb_mod_module_exec): don't declare functions declared in
+ include/ruby/intern.h.
- * internal.h (rb_get_expanded_load_path): add a declaration.
+Sat Jun 18 12:05:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * internal.h (rb_get_path_check_to_string, rb_get_path_check_convert):
- add declarations.
+ * include/ruby/backward/classext.h: for evil gems. fixed #4803
- * load.c (rb_construct_expanded_load_path): fix for compatibility.
- Same checks in rb_get_path_check() are added. We don't replace
- $LOAD_PATH and ensure that String object of $LOAD_PATH are frozen.
- We don't freeze non String object and expand it every time. We add
- arguments for expanding load path partially and checking if load path
- have relative paths or non String objects.
+Sat Jun 18 11:12:13 2011 Tanaka Akira <akr@fsij.org>
- * load.c (load_path_getcwd): get current working directory for checking
- if it's changed when getting load path.
+ * common.mk: update dependencies.
- * load.c (rb_get_expanded_load_path): fix for rebuilding cache properly.
- We check if current working directory is changed and rebuild expanded
- load path cache. We expand paths which start with ~ (User HOME) and
- non String objects every time for compatibility. We make this
- accessible from other source files.
+Sat Jun 18 11:09:03 2011 Tanaka Akira <akr@fsij.org>
- * load.c (rb_feature_provided): call rb_get_path() since we changed
- rb_file_expand_path_fast() not to call it.
+ * io.c: suppress warnings.
- * load.c (Init_load): initialize vm->load_path_check_cache.
+Sat Jun 18 10:22:39 2011 Tanaka Akira <akr@fsij.org>
- * vm.c (rb_vm_mark): mark vm->load_path_check_cache for GC.
+ * internal.h: declare more internal functions.
- * vm_core.h (rb_vm_struct): add vm->load_path_check_cache to store data
- to check load path cache validity.
+ * iseq.h (rb_method_get_iseq): declared.
- * test/ruby/test_require.rb (TestRequire): add tests for require
- compatibility related to cached expanded load path.
- [ruby-core:47970] [Bug #7158]
+ * compile.c, eval.c, eval_error.c, iseq.c, parse.y, proc.c, range.c,
+ ruby.c, time.c, util.c, vm.c: don't declare internal functions.
-Mon Nov 5 23:26:05 2012 Greg Price <price@mit.edu>
+ * eval.c, parse.y, thread_pthread.c: non-existing function declarations
+ removed.
- * load.c (rb_get_expanded_load_path): cache the expanded load
- path. This saves 4KB of allocation and some stats for every
- element of the load path (so nearly a MB in my Rails app)
- on every require.
+Sat Jun 18 08:12:54 2011 Tanaka Akira <akr@fsij.org>
- * load.c (rb_construct_expanded_load_path): ensure that $LOAD_PATH
- entries are frozen strings. The user must mutate $LOAD_PATH
- itself rather than its individual entries.
+ * common.mk: dependencies updated.
- * vm_core.h (rb_vm_struct): add fields.
+ * tool/update-deps: new file to assist update dependencies in
+ common.mk.
- * vm.c (rb_vm_mark): mark new fields.
+Sat Jun 18 07:27:27 2011 Tanaka Akira <akr@fsij.org>
- * ruby.c (process_options): modify $LOAD_PATH directly rather than
- its elements.
- Patch by Greg Price.
- [ruby-core:47970] [Bug #7158]
+ * internal.h: declare internal functions here.
-Mon Nov 5 23:24:42 2012 Greg Price <price@mit.edu>
+ * node.h: declare NODE dependent internal functions here.
- * load.c (rb_feature_p, rb_provide_feature): index $LOADED_FEATURES
- so that require isn't so slow.
+ * iseq.h: declare rb_iseq_t dependent internal functions here.
- * load.c (rb_provide_feature, get_loaded_features_index): ensure
- that $LOADED_FEATURES entries are frozen strings. The user
- must mutate $LOADED_FEATURES itself rather than its individual
- entries.
+ * vm_core.h: declare rb_thread_t dependent internal functions here.
- * load.c (reset_loaded_features_snapshot): add a new function to reset
- vm->loaded_features_snapshot.
+ * bignum.c, class.c, compile.c, complex.c, cont.c, dir.c, encoding.c,
+ enumerator.c, error.c, eval.c, file.c, gc.c, hash.c, inits.c, io.c,
+ iseq.c, load.c, marshal.c, math.c, numeric.c, object.c, parse.y,
+ proc.c, process.c, range.c, rational.c, re.c, ruby.c, string.c,
+ thread.c, time.c, transcode.c, variable.c, vm.c,
+ tool/compile_prelude.rb: don't declare internal functions declared
+ in above headers. include above headers if required.
- * load.c (get_loaded_features_index_raw): add a new function to get
- the loaded-features index.
+ Note that rb_thread_mark() was declared as
+ void rb_thread_mark(rb_thread_t *th) in cont.c but defined as
+ void rb_thread_mark(void *ptr) in vm.c. Now it is declared as
+ the later in internal.h.
- * load.c (features_index_add_single): add a new function to add to the
- loaded-features index a single feature.
+Sat Jun 18 02:36:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * load.c (features_index_add): add a new function to add to the
- loaded-features index all the required entries for `feature`.
+ * ext/bigdecimal/bigdecimal.c (VpNewRbClass): fix type of the 2nd
+ argument.
- * vm_core.h (rb_vm_struct): add fields.
+ * ext/bigdecimal/bigdecimal.h: ditto.
- * vm.c (rb_vm_mark): mark new fields.
+Sat Jun 18 02:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * include/ruby/intern.h (rb_hash_clear): declare function.
+ * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): move BigMath.exp from
+ bigdecimal/math.rb.
- * hash.c (rb_hash_clear): make function non-static.
- Patch by Greg Price.
- [ruby-core:47970] [Bug #7158]
+ * ext/bigdecimal/lib/bigdecimal/math.rb: ditto.
-Mon Nov 5 23:23:51 2012 Greg Price <price@mit.edu>
+ * test/bigdecimal/test_bigdecimal.rb: move test for BigMath.exp from
+ test/bigdecimal/test_bigmath.rb.
- * array.c (rb_ary_shared_with_p): new function.
- Expose whether two arrays are shared (read-only, C only).
+ * test/bigdecimal/test_bigmath.rb: ditto.
- * include/ruby/intern.h (rb_ary_shared_with_p): declare.
- Patch by Greg Price.
- [ruby-core:47970] [Bug #7158]
+Sat Jun 18 00:20:54 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Mon Nov 5 23:21:14 2012 Greg Price <price@mit.edu>
+ * ext/date/date_core.c: do not define wnum[01].
- * load.c (loaded_feature_path): clarify and briefly comment
- function. These clarifications have no effect on the behavior
- of the function.
+Fri Jun 17 18:57:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * load.c (rb_feature_p): explain the search loop. Especially
- useful because the logic is complicated as described in the
- second paragraph.
- Patch by Greg Price.
- [ruby-core:47970] [Bug #7158]
+ * compile.c (iseq_compile_each): fix return value of obj[a,*b]=c.
-Mon Nov 5 22:45:03 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Fri Jun 17 13:09:45 2011 Eric Hodel <drbrain@segment7.net>
- * ext/dl/win32/lib/Win32API.rb (Win32API#call): use 64bit pointer for x64
- Windows. This would fix
- TestSecureRandom#test_s_random_bytes_without_openssl error.
- [ruby-core:47451] [Bug #6990]
+ * ext/curses/curses.c: Clean up documentation.
-Mon Nov 5 22:09:26 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Fri Jun 17 09:25:14 2011 Eric Hodel <drbrain@segment7.net>
- * cygwin/GNUmakefile.in (uncommon.mk): link *.res.o.
- EXTOBJES is defined in uncommon.mk. *.res.o setting should be below
- uncommon.mk.
- [ruby-core:48858] [Bug #7277]
+ * ext/curses/curses.c: Document curses constants. Patch by Vincent
+ Batts. [Ruby 1.9 - Bug #4880]
-Mon Nov 5 11:35:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Jun 17 09:11:05 2011 Eric Hodel <drbrain@segment7.net>
- * thread_pthread.c (native_thread_init, native_thread_destroy):
- removed HAVE_PTHREAD_CONDATTR_INIT check because this silly
- #ifdef makes use-uninitialized-var issue and (2) native_cond_initialize()
- already have a right platform and caller don't need any additional care.
- [Bug #6825]
+ * object.c: Document Module#method_added and #method_removed.
+ Patch by Bryce Kerley. [Ruby 1.9 - Feature #4867]
-Mon Nov 5 10:57:59 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Jun 17 08:50:16 2011 Eric Hodel <drbrain@segment7.net>
- * lib/cgi/core.rb: check if Tempfile is defined before use it.
+ * io.c: Improve documentation of IO and File open and new.
+ Patch by Roger Pack. [Ruby 1.9 - Bug #4790]
- * lib/cgi/core.rb: remove tempfiles only if tempfiles exist
+Fri Jun 17 07:53:50 2011 Eric Hodel <drbrain@segment7.net>
-Mon Nov 5 12:17:00 2012 Zachary Scott <zachary@zacharyscott.net>
+ * lib/csv.rb: Document #raw_encoding. Patch by David Czarnecki.
+ [Ruby 1.9 - Bug #4874]
- * lib/uri/http.rb (URI::HTTP.build): Fix example
- Patch by Carina C. Zona
- [Fixes #209 Github]
+Fri Jun 17 07:46:50 2011 Eric Hodel <drbrain@segment7.net>
-Mon Nov 5 09:55:05 2012 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+ * lib/benchmark.rb: Document Benchmark::Tms#memberwise. Patch by
+ David Czarnecki. [Ruby 1.9 - Bug #4873]
- * lib/cgi/core.rb: remove tempfile more early.
+Fri Jun 17 07:38:31 2011 Eric Hodel <drbrain@segment7.net>
-Sun Nov 4 20:29:46 2012 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+ * lib/prettyprint.rb: Improve documentation. Patch by Ysiad
+ Ferreiras. [#4834]
- * lib/cgi.rb, lib/cgi/*/rb: rename CGI#header to CGI#http_header,
- add and update HTML5 tag generator. [Bug #7110]
- Patch provided by Marcus Stollsteimer, thank you !
+Fri Jun 17 07:23:03 2011 Eric Hodel <drbrain@segment7.net>
-Sun Nov 4 11:47:39 2012 Masaki Matsushita <glass.saga@gmail.com>
+ * array.c (rb_ary_drop): Improve documentation. Patch by Caley Woods.
+ [Ruby 1.9 - Bug #4858]
- * lib/fileutils.rb (module FileUtils): repatch [ruby-core:39622]
- [Feature #5337]. improve performance of FileUtils.compare_stream.
- [ruby-core:47545] [Feature #7028]
+Fri Jun 17 06:11:31 2011 Eric Hodel <drbrain@segment7.net>
-Sun Nov 4 11:27:54 2012 Masaki Matsushita <glass.saga@gmail.com>
+ * lib/webrick/log.rb: Improve documentation of BasicLog and Log.
+ Patch by Olivier Brisse. [Ruby 1.9 - Bug #4833]
+ * lib/webrick/httpstatus.rb: Improve documentation of
+ WEBrick::HTTPStatus. Patch by Olivier Brisse.
+ [Ruby 1.9 - Bug #4833]
- * array.c (recursive_equal): fix to return true when self and other
- are resized to same size and the current index become out of
- range.
+Fri Jun 17 04:48:22 2011 Koichi Sasada <ko1@atdot.net>
- * test/ruby/test_array.rb: add a test for the above.
+ * thread_pthread.c, thread_pthread.h: remove unused variables.
+ (native_thread_data_t::gvl_cond, native_thread_data_t::gvl_next)
-Sun Nov 4 10:19:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Jun 16 14:32:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * dir.c (file_s_fnmatch): match with expanding braces if FNM_EXTGLOB
- is set. [ruby-core:40037] [Feature #5422]
+ * time.c (rb_time_new): prevent overflow by "* 1000".
-Sat Nov 3 23:38:15 2012 Tadayoshi Funaba <tadf@dotrb.org>
+Fri Jun 17 03:07:36 2011 Koichi Sasada <ko1@atdot.net>
- * complex.c: modified doc.
- * rational.c: ditto.
+ * benchmark/bm_vm4_thread_create_join.rb,
+ benchmark/bm_vm4_thread_mutex[1-3].rb: renamed to
+ bm_thread_* (fix last rename).
-Sat Nov 3 22:38:55 2012 Tadayoshi Funaba <tadf@dotrb.org>
+Fri Jun 17 02:26:47 2011 Koichi Sasada <ko1@atdot.net>
- * ext/date/date_core.c: modified doc.
+ * thread_pthread.c (native_thread_create): fix debug message.
+ (add last newline)
-Sat Nov 3 18:35:55 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+Thu Jun 16 23:40:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * vm.c (rb_vm_rewrite_ep_in_errinfo, vm_rewrite_ep_in_errinfo):
- merge code and remove `rb_vm_rewrite_ep_in_errinfo'.
+ * thread.c (rb_thread_schedule_rec): fix {UN,}LIKELY macro misuse.
+ * gc.c (rb_newobj): ditto.
+ * vm_insnhelper.c (vm_method_search): ditto.
-Sat Nov 3 18:15:24 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+Thu Jun 16 20:06:15 2011 Shota Fukumori <sorah@tubusu.net>
- * vm.c, proc.c: avoid unnecessary `rb_vm_rewrite_ep_in_errinfo'
- calls.
+ * test/testunit/test_parallel.rb: Fix Regexp for test.
-Sat Nov 3 17:53:43 2012 Kouhei Sutou <kou@cozmixng.org>
+ * test/testunit/tests_for_parallel/test_third.rb: Use
+ Test::Unit::TestCase#on_parallel_worker? for detecting worker.
- * bin/testrb: Use only Test::Unit::AutoRunner in test-unit gem
- compatible API to be available by both test/unit bundled in Ruby
- and test-unit gem.
- * lib/test/unit.rb (Test::Unit::AutoRunner): Move codes from testrb.
+ * lib/test/unit/testcase.rb(Test::Unit::TestCase#on_parallel_worker?):
+ New Method Test::Unit::TestCase#on_parallel_worker? returns true
+ when a testcase is running on parallel worker.
+ * lib/test/unit/parallel.rb(Test::Unit::TestCase#on_parallel_worker?):
+ ditto.
-Sat Nov 3 14:56:21 2012 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Jun 16 19:27:12 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
- * ext/date/date_parse.c (parse_eu): should capture apostrophe too.
+ * test/test_securerandom.rb: Add testcase. This testcase does NOT aim
+ to test cryptographically strongness and randomness. It includes
+ the test for PID recycle issue of OpenSSL described in #4579 but
+ it's disabled by default.
-Sat Nov 3 14:46:15 2012 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Jun 16 17:55:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/date/date_parse.c (date__parse): revised the tight parser.
+ * test/ruby/test_io.rb (TestIO#test_copy_stream_socket): fix
+ test hanging up issue. Patch by CHIKANAGA Tomoyuki.
-Sat Nov 3 14:43:42 2012 Kouhei Sutou <kou@cozmixng.org>
+Thu Jun 16 15:17:39 2011 Eric Hodel <drbrain@segment7.net>
- * lib/rexml/xmldecl.rb (REXML::XMLDecl#content): Add missing \A
- and \z.
+ * variable.c (const_missing): Add simple example of const_missing.
+ Patch by Anuj Dutta. [Ruby 1.9 - Bug #4794]
-Sat Nov 3 14:42:55 2012 Kouhei Sutou <kou@cozmixng.org>
+Thu Jun 16 15:09:29 2011 Eric Hodel <drbrain@segment7.net>
- * lib/rexml/output.rb (REXML::Output#initialize): Use normalized
- encoding name.
+ * lib/monitor.rb: Improve documentation. Patch by Sandor Szucs.
+ [Ruby 1.9 - Bug #4823]
-Sat Nov 3 14:41:17 2012 Kouhei Sutou <kou@cozmixng.org>
+Thu Jun 16 14:54:09 2011 Eric Hodel <drbrain@segment7.net>
- * lib/rexml/output.rb (REXML::Output): Don't output BOM in middle
- of the output string.
- * test/rexml/test_document.rb: Add a test for the above change.
+ * lib/webrick/utils.rb: Document WEBrick::Utils. Patch by Olivier
+ Brisse. [Ruby 1.9 - Bug #4819]
-Sat Nov 3 14:09:55 2012 Kouhei Sutou <kou@cozmixng.org>
+Thu Jun 16 14:26:46 2011 Eric Hodel <drbrain@segment7.net>
- * NEWS: Add an item about REXML::Document#write.
+ * lib/webrick/httpservlet/erbhandler.rb: Allow the ERB document to
+ alter the content-type of the response. [Ruby 1.9 - Bug #4685]
-Sat Nov 3 13:46:49 2012 Kouhei Sutou <kou@cozmixng.org>
+Thu Jun 16 14:15:47 2011 Eric Hodel <drbrain@segment7.net>
- * test/rexml/test_document.rb: Fix tests that expect encoding name
- isn't normalized.
+ * lib/timeout.rb: Clarify timeout duration types. Patch by Alf Mikula.
+ [Ruby 1.9 - Bug #4791]
+ * lib/net/http.rb: ditto
-Sat Nov 3 13:26:00 2012 Zachary Scott <zachary@zacharyscott.net>
+Thu Jun 16 13:25:25 2011 Eric Hodel <drbrain@segment7.net>
- * dir.c (Dir#glob):
- Documentation for pattern section, backslash subsection
- Patch by Eric Bouchut
- [ruby-core:48528] [Bug #7230]
+ * lib/rdoc*: Import RDoc 3.7 release candidate
-Sat Nov 3 13:26:00 2012 Zachary Scott <zachary@zacharyscott.net>
+Thu Jun 16 11:35:09 2011 Shugo Maeda <shugo@ruby-lang.org>
- * io.c (IO#new):
- Documentation for IO#open modes and formatting
- [ruby-core:48052] [Bug #7179]
+ * lib/net/imap.rb (search_response): parses SEARCH responses from
+ the Yahoo IMAP server correctly. patched by Mark Nadig. [Bug #4509]
-Sat Nov 3 13:01:02 2012 Kouhei Sutou <kou@cozmixng.org>
+Thu Jun 16 09:12:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/rexml/test_encoding.rb (EncodingTester#test_in_different_out):
- Fix a test that expects encoding in XML declaration is changed by
- Output's encoding. It is dropped feature.
+ * fix for build on solaris 10.
-Sat Nov 3 12:49:45 2012 Kouhei Sutou <kou@cozmixng.org>
+Thu Jun 16 09:08:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rexml/document.rb (REXML::Document#write): Document encoding
- option. Now different encoding between XML file's encoding and
- XML declaration's encoding is support.
- [Feature #4872] (work in progress)
- * lib/rexml/xmldecl.rb (REXML::XMLDecl#write): Always use XMLDecl's
- encoding.
- * test/rexml/test_document.rb: Update tests for the above change.
+ * test/io/console/test_io_console.rb (TestIO_Console#test_sync):
+ fix for daemon process.
-Sat Nov 3 12:18:35 2012 Masaki Matsushita <glass.saga@gmail.com>
+Thu Jun 16 07:58:01 2011 Shota Fukumori <sorah@tubusu.net>
- * array.c (recursive_equal): fix not to make invalid pointers when
- self and other are resized to same size in #== of their elements.
- [ruby-dev:46373] [Feature #6177]
+ * test/testunit/test_parallel.rb(test_ignore_tzero): Test for r32109.
-Sat Nov 3 12:06:15 2012 Kouhei Sutou <kou@cozmixng.org>
+ * test/testunit/tests_for_parallel/test_third.rb: Use another way to
+ detect that test is running on worker. This fixes sometimes
+ TestParallel failing.
- * test/rexml/test_xml_declaration.rb (TestXmlDeclaration#test_*):
- Remove needless prefix from test names.
+Thu Jun 16 07:20:06 2011 Shota Fukumori <sorah@tubusu.net>
-Sat Nov 3 12:04:52 2012 Kouhei Sutou <kou@cozmixng.org>
+ * lib/test/unit.rb(Test::Unit::Runner#_run_parallel): Ignore -j0
+ because it makes blocking forever by IO.select.
- * test/rexml/test_xml_declaration_parent_child.rb: Rename to ...
- * test/rexml/test_xml_declaration.rb: ... this.
+Thu Jun 16 03:08:11 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Sat Nov 3 11:43:00 2012 Zachary Scott <zachary@zacharyscott.net>
+ * test/testunit/test_parallel.rb (TestParallel::TestParallelWorker#
+ setup): now can run on Windows, probably.
- * hash.c (rb_hash_delete): Correct grammar
- Patch by Glenn Oppegard
- [Fixes #208 Github]
+ * test/testunit/test_parallel.rb (TestParallel::TestParallel#setup):
+ ditto.
-Sat Nov 3 11:28:28 2012 Narihiro Nakamura <authornari@gmail.com>
+Thu Jun 16 03:00:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * NEWS: add a news about GC::Profiler.raw_data.
+ * thread.c (do_select): Windows: no need to poll if select(2) is
+ cancelable.
-Sat Nov 3 11:01:32 2012 Narihiro Nakamura <authornari@gmail.com>
+ * thread_win32.c (native_fd_select): new function to make select(2)
+ cancelable.
- * NEWS: add a news about rb_newobj_of() and NEWOBJ_OF().
+ * thread_win32.c (rb_w32_check_interrupt): new function for checking
+ interrupt.
-Sat Nov 3 10:17:41 2012 Narihiro Nakamura <authornari@gmail.com>
+ * win32/win32.c (rb_w32_select_with_thread): new function. cancelable
+ select(2).
- * eval.c (f_current_dirname): add the new method for Kernel.
- This method almost same as File.dirname(__FILE__). One
- different behavior is it returns nil when __FILE__ returns nil.
- [Feature #3346]
+ * win32/win32.c (rb_w32_select): use above function internally.
- * NEWS: ditto
+Wed Jun 15 23:30:45 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/ruby/test_method.rb: related test.
+ * gc.c: fix a regression by r31690 on AIX because AIX malloc
+ return NULL if it's passed 0. But some caller don't expect it.
+ patch by Yutaka Kanemoto. [ruby-dev:43779]
+ (vm_malloc_prepare): return calculated size.
+ (vm_xmalloc): use above result.
+ (vm_xcalloc): ditto.
-Sat Nov 3 09:03:34 2012 Shugo Maeda <shugo@ruby-lang.org>
+Wed Jun 15 23:11:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/ruby/test_refinement.rb (test_new_method_by_send,
- test_new_method_by_method_object): add tests for Kernel#send and
- Kernel#method with refinements.
+ * thread.c: remove BLOCKING_REGION_CORE() macro. It's no longer used
+ since r32022.
- * test/ruby/test_refinement.rb (test_symbol_to_proc): add a test
- calling a proc created by Symbol#to_proc outside the scope where
- a refinement is closed over.
+Wed Jun 15 21:00:47 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Sat Nov 3 04:14:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/openssl/test_config.rb: execute based on the existence of the
+ OpenSSL module.
- * vm.c (rb_vm_rewrite_ep_in_errinfo): rewrite all catch points in
- errinfo, not only the topmost frame. based on the patch by
- ktsj (Kazuki Tsujimoto) in [ruby-dev:45656]. [Bug #6460]
+Wed Jun 15 12:35:11 2011 Tanaka Akira <akr@fsij.org>
-Fri Nov 2 20:11:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_io.rb (test_copy_stream_socket): wait a child process
+ before SIGUSR1 handler is removed.
- * lib/mkmf.rb (MakeMakefile#timestamp_file): remove @ which looks like
- configure variables.
+ * test/pathname/test_pathname.rb (define_assertion): use line number
+ for test method names.
- * lib/mkmf.rb (MakeMakefile#timestamp_file): use .-. instead of !, a
- special character of NMAKE and BSD make. [Bug #7265]
+Wed Jun 15 10:37:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Fri Nov 2 17:55:39 2012 Shota Fukumori <sorah@tubusu.net>
+ * file.c (rb_stat_rdev): use DEVT2NUM.
- * lib/test/unit.rb (_run_parallel): Delete status line before showing
- results. Patch by Hiroshi Shirosaki. [Bug #6897] [ruby-core:47250]
+ * file.c (rb_stat_rdev_major): ditto.
- * lib/test/unit.rb (_run_parallel): Fix strange result when disabled retrying.
- Patch by Hiroshi Shirosaki. [Bug #6897] [ruby-core:47250]
+ * file.c (rb_stat_rdev_minor): ditto.
-Fri Nov 2 17:52:12 2012 Shugo Maeda <shugo@ruby-lang.org>
+Wed Jun 15 05:12:59 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * object.c (rb_mod_to_s): Module#{to_s,inspect}, when invoked on
- a refinement, returns a string in the format #<refinement:C@M>,
- where C is a refined class and M is a module at which the refinement
+ * ext/tk/tcltklib.c (lib_eventloop_core): revert the last change (it's
+ the part for ruby_1_8), and use rb_thread_check_ints() when RUBY_VM
is defined.
- * eval.c (rb_mod_refine): store information on a refinement for the
- above change.
-
- * test/ruby/test_refinement.rb: related test.
-
-Fri Nov 2 16:57:52 2012 Shota Fukumori <sorah@tubusu.net>
-
- * vm_dump.c (rb_vm_bugreport): Because of many log directories,
- making directory lists readable.
-
-Fri Nov 2 16:44:00 2012 Kenta Murata <mrkn@mrkn.jp>
-
- * vm_dump.c (rb_vm_bugreport): add ~/Library/Logs/DiagnosticReports
- in the locations list of crash reports.
-
-Fri Nov 2 14:52:52 2012 Masaki Matsushita <glass.saga@gmail.com>
-
- * array.c (recursive_equal): performance improvement by avoiding
- overhead to call rb_ary_elt().
- [ruby-dev:45412] [Feature #6177]
-
-Fri Nov 2 14:47:53 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * string.c (sym_to_proc, sym_call): A Proc created by Symbol#to_proc
- should close over the current refinements.
- [ruby-dev:46345] [Bug #7261]
-
- * vm_eval.c (rb_call0, rb_search_method_entry,
- rb_funcall_passing_block_with_refinements): add a new argument
- `refinements' for the above changes.
-
- * test/ruby/test_refinement.rb: related test.
-
-Fri Nov 2 08:24:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * proc.c (top_define_method): new method, main.define_method.
- [ruby-core:45715] [Feature #6609]
-
- * eval.c (top_include): fix a warning message, main is not a class or
- module.
-
-Fri Nov 2 04:41:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (MakeMakefile#timestamp_file): use ! instead of %, a GNU
- make special character.
-
-Fri Nov 2 04:40:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/test_process.rb (test_execopts_preserve_env_on_exec_failure):
- use never existing file in the current temporary directory.
-
-Fri Nov 2 04:23:20 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * tool/merger.rb: add feature to tag preview/rc.
-
-Fri Nov 2 03:23:37 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/mkmf.rb: fix for if config["libdir"] is nil.
-
-Thu Nov 1 23:06:01 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * tool/make-snapshot: fix wrong regexp for releasing preview.
- patched by mame.
-
-Thu Nov 1 22:27:11 2012 Koichi Sasada <ko1@atdot.net>
-
- * NEWS: add a news about objspace,
- ObjectSpace.reachable_objects_from.
-
-Thu Nov 1 21:57:00 2012 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_new),
- test/bigdecimal/test_bigdecimal.rb:
- Fix exception message of BigDecimal constructor with a Float.
-
-Thu Nov 1 21:52:20 2012 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_add),
- test/bigdecimal/test_bigdecimal.rb:
- need to specify precision for converting Rational and Float.
- [ruby-core:48045] [Bug #7176]
-
-Thu Nov 1 21:42:20 2012 Yusuke Endoh <mame@tsg.ne.jp>
-
- * test/ruby/test_process.rb: Revert r37404. My ubuntu box has
- actually the directory named "/nonexistent"... Sorry.
-
-Thu Nov 1 21:28:28 2012 Yusuke Endoh <mame@tsg.ne.jp>
-
- * test/ruby/test_process.rb: Process.exec raised EACCES on Linux
- 3.5.0-17-generic. This is a temporal fix to rescue that exception.
- Needs kosaki's review.
-
-Thu Nov 1 21:19:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * iseq.c (set_relation): parent_iseq need to be set regardless iseq
- type. fix r37397.
-
-Thu Nov 1 19:47:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread_pthread.c (RUBY_STACK_MIN): may not a compile time constant.
- fix r37079. [ruby-dev:46322] [Bug #7247]
-
-Thu Nov 1 16:44:36 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * NEWS: add note for Module#refine, Module#refinements,
- Module#using, and Kernel#using.
-
-Thu Nov 1 14:41:47 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * eval.c (rb_using_module): using should be used indirectly.
- [ruby-dev:46326] [Feature #7251]
-
-Wed Oct 31 18:17:38 2012 Narihiro Nakamura <authornari@gmail.com>
-
- * gc.c (gc_profile_record): don't define unused variables when
- GC_PROFILE_MORE_DETAIL is 0.
-
-Wed Oct 31 18:10:53 2012 Narihiro Nakamura <authornari@gmail.com>
-
- * gc.c (gc_prof_mark_timer_stop): count is not initialized.
-
-Wed Oct 31 09:28:24 2012 Eric Hodel <drbrain@segment7.net>
-
- * thread.c (rb_thread_call_without_gvl2): Note that ubf() may or may
- not be called with the GVL. Hinted that rb_thread_call_with_gvl()
- can be used to access ruby functionality.
-
-Wed Oct 31 09:06:54 2012 Eric Hodel <drbrain@segment7.net>
-
- * thread.c (rb_thread_call_without_gvl2): Update documentation to
- natural English.
- * thread.c (rb_thread_call_with_gvl): ditto.
-
-Wed Oct 31 02:53:07 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/dl/lib/dl/struct.rb: fix strange require order. [ruby-dev:45702]
-
- * ext/dl/lib/dl/value.rb: ditto
-
- * test/dl/test_c_struct_entry.rb: remove strange require order from
- tests.
-
- * test/dl/test_c_union_entity.rb: ditto
-
-Tue Oct 30 23:59:32 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * eval.c (rb_mod_refine): fix the error message when no block is
- given. [ruby-dev:46319] [Bug #7244]
-
- * test/ruby/test_refinement.rb: related test.
-
-Tue Oct 30 19:27:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * process.c (redirect_dup2): set standard handles when new fd is stdio,
- because if there is no allocated console at the moment Windows does
- not automatically associate it for child process's standard handle.
- this is adhoc workaround.
- reported by Martin Thiede at [ruby-core:48542] [Bug #7239].
-
- * io.c (rb_cloexec_dup2): ditto.
-
-Tue Oct 30 03:08:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/rbconfig/obsolete.rb (Config): re-introduce warnings for a
- lame-duck. [ruby-core:46836] [Bug #6809]
-
-Tue Oct 30 02:20:10 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * thread.c: added Thread#thread_variable_(get|set),
- Thread#thread_variable?, and Thread#thread_variables for operating
- on variables that are local to threads. [ruby-core:47790]
-
- * vm.c: ditto
-
- * test/ruby/test_thread.rb: tests for thread variables.
-
-Mon Oct 29 18:22:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/stringio/stringio.c (strio_close): close separately per each
- instances, as well as IO.
-
-Mon Oct 29 10:22:00 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/handlers/recorder.rb: added a class for
- recording YAML parse and emit events.
-
- * ext/psych/lib/psych/handler.rb: adding a list of events so that
- handler classes can more easily be meta-programmed.
-
- * test/psych/handlers/test_recorder.rb: tests for the change.
-
-Mon Oct 29 05:48:52 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * lib/ostruct.rb: Add [] and []=, base on a patch by Thomas Sawyer.
- Also accept {Open}Struct as argument to new.
- Add #eql?, #hash & #each_pair
- Protect new_ostruct_member
-
-Mon Oct 29 03:20:58 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * lib/matrix.rb: Fix determinant_e [ruby-dev:46305] [Bug #7228]
-
-Sun Oct 28 23:52:25 2012 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rexml/test_document.rb: Add tests for parsing XML encoded
- by UTF-8 with BOM.
-
-Sun Oct 28 23:47:09 2012 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rexml/source.rb: Move encoding detection code to base class.
- * lib/rexml/encoding.rb: Remove needless encoding detection code.
-
-Sun Oct 28 21:40:13 2012 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rexml/parsers/baseparser.rb: Fix a bug that UTF-8 is used
- for UTF-16XX encoded XML that doesn't have encoding="UTF-16" in
- XML declaration.
- * test/rexml/test_document.rb: Add tests for the above change.
-
-Sun Oct 28 21:37:34 2012 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rexml/test_document.rb: Group tests that they parse
- UTF-16XX encoded XML that has encoding="UTF-16" in XML declaration.
-
-Sun Oct 28 21:25:11 2012 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rexml/source.rb (REXML::IOSource#initialize): Reduce
- @line_break initialize code. It should be done only in #encoding=.
- * lib/rexml/parsers/baseparser.rb: Don't set UTF-16 encoding to
- source by encoding="UTF-16" in XML declaration because UTF-16XX
- source encoding should be set in Source#initialize or
- IOSource#initialize. They should handle BOM. Parser should not
- consider about it.
-
-Sun Oct 28 21:18:37 2012 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rexml/test_document.rb: Add tests for parsing XML encoded
- by UTF-16 with BOM.
-
-Sun Oct 28 19:12:11 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_parse.c (iso8601_{ext,bas}_time): should not match
- empty string.
+Wed Jun 15 04:42:47 2011 Koichi Sasada <ko1@atdot.net>
-Sun Oct 28 18:51:33 2012 Tadayoshi Funaba <tadf@dotrb.org>
+ * benchmark/bm_vm3_thread_*.rb: renamed bm_vm3_thread_*.rb to
+ benchmark/bm_vm_thread_*.rb.
- * ext/date/date_parse.c (date__parse): revised the tight parser.
+Wed Jun 15 04:28:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sun Oct 28 15:41:50 2012 Kouhei Sutou <kou@cozmixng.org>
+ * benchmark/bm_vm4_thread_pass.rb: rename bm_vm4* to
+ bm_vm_thread_*. suggested by ko1.
+ * benchmark/bm_vm4_pipe.rb: ditto.
+ * benchmark/bm_vm4_alive_check1.rb: ditto.
+ * benchmark/bm_vm4_pass_flood.rb: ditto.
- * lib/rexml/document.rb (REXML::Document#write): Add :encoding option
- to support custom XML encoding.
- [Feature #4872] (work in progress)
- * test/rexml/test_document.rb: Add tests for the above change.
+Wed Jun 15 03:52:50 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sun Oct 28 15:00:19 2012 Kouhei Sutou <kou@cozmixng.org>
+ * benchmark/bm_vm4_pass_flood.rb: new benchmark for GVL fairness.
+ * benchmark/bm_vm4_alive_check1.rb: ditto.
- * lib/rexml/document.rb (REXML::Document#write): Remove needless
- indent in document.
+Wed Jun 15 01:27:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sun Oct 28 14:59:14 2012 Kouhei Sutou <kou@cozmixng.org>
+ * thread_pthread.c (gvl_yield): fix live lock issue on 1-2 cpus
+ system. It's additional fix for r32021.
+ * thread_pthread.c (gvl_init): add switch_wait_cond.
+ * thread_pthread.h (typedef struct rb_global_vm_lock_struct): ditto.
- * lib/rexml/document.rb (REXML::Document#write): Accept options
- Hash as argument.
- * test/rexml/test_document.rb: Add tests for the above change.
+Tue Jun 14 23:16:22 2011 Tanaka Akira <akr@fsij.org>
-Sun Oct 28 14:09:44 2012 Kouhei Sutou <kou@cozmixng.org>
+ * bootstraptest/runner.rb (show_progress): refine verbose mode.
+ (exec_test): ditto.
- * lib/rexml/document.rb (REXML::Document#write): Fix wrong usage
- in document.
+Tue Jun 14 23:02:36 2011 Tanaka Akira <akr@fsij.org>
-Sun Oct 28 14:03:48 2012 Kouhei Sutou <kou@cozmixng.org>
+ * bootstraptest/runner.rb (show_progress): extracted from assert_check.
+ (assert_check): use show_progress.
+ (assert_normal_exit): ditto.
+ (assert_finish): ditto.
+ (flunk): ditto.
- * lib/rexml/document.rb (REXML::Document#write): Fix wrong method
- names in document.
+Tue Jun 14 22:51:42 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Sun Oct 28 10:12:15 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/yaml_tree.rb: `tree` should return the
- same thing on every call.
-
- * test/psych/visitors/test_yaml_tree.rb: related test.
-
-Sun Oct 28 10:05:03 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/yaml_tree.rb: YAML Tree object should
- be able to take an emitter object as it's output.
-
- * test/psych/visitors/test_yaml_tree.rb: related test.
-
-Sun Oct 28 08:23:16 2012 Koichi Sasada <ko1@atdot.net>
-
- * bignum.c (bignew_1): Bignum instances are frozen.
- Feature #3222
-
- * include/ruby/ruby.h: Fixnum instances are also frozen.
-
- * class.c (singleton_class_of): check Bignum before
- singleton checking.
-
- * test/ruby/test_bignum.rb: add a test.
-
- * test/ruby/test_fixnum.rb: ditto.
-
- * test/ruby/marshaltestlib.rb, test/ruby/test_eval.rb,
- test/ruby/test_object.rb: catch up above changes.
-
-Sun Oct 28 04:38:06 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm.c (vm_define_method): remove type and frozen checking.
- Checking is done in `rb_singleton_class()'.
-
-Sun Oct 28 00:49:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (assign_in_cond): warn for static content object assignments
- in conditional statements. [ruby-dev:43083] [Feature #4299]
-
-Sat Oct 27 23:33:41 2012 Benoit Daloze <eregontp@gmail.com>
-
- * gc.c (gc_profile_result, gc_profile_report): use internal structures
- to avoid allocations and progressively print the output for #report.
- [ruby-core:47163] [Bug #6865]
-
-Sat Oct 27 11:01:10 2012 Koichi Sasada <ko1@atdot.net>
-
- * numeric.c (rb_float_new_in_heap), include/ruby/ruby.h:
- make all Float objects frozen.
- [ruby-dev:46081] [ruby-trunk - Feature #6936]
- Most part of patch by NARUSE, Yui <naruse@ruby-lang.org>.
-
- * class.c (singleton_class_of): raise TypeError when
- trying to define a singleton method on Float objects.
-
- * vm.c (vm_define_method): ditto.
-
- * test/ruby/marshaltestlib.rb: catch up above changes.
-
- * test/ruby/test_class.rb: ditto.
-
- * test/test_pp.rb: ditto.
-
-Sat Oct 27 10:50:53 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * object.c (rb_mod_const_get): make sure the constant name is
- converted to a string before searching. [ruby-core:48405]
-
-Sat Oct 27 10:12:13 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * iseq.c (rb_iseq_compile_with_option): Instead of testing
- respond_to, just check if the argument is actually a file,
- because by calling user-defined gets something weired can
- happen. Patch by Glass_saga. [ruby-dev:40202] [Bug #2861]
-
- * parse.y (ripper_initialize): ditto.
-
-Sat Oct 27 10:07:57 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (enum lex_state_e): [EXPERIMENTAL] lex_state as bit field /
- IS_lex_state() macro. based on the patch by Dave B in
- [ruby-core:23503]. [Feature #1493]
-
-Sat Oct 27 10:05:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/win32.h (fstat): use _fstati64() instead of fstati64()
- on mingw32.
-
-Sat Oct 27 06:28:33 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * object.c (rb_mod_const_get): const_get accepts qualified constant
- strings. e.g. Object.const_get("Foo::Bar::Baz") [ruby-core:41404]
-
- * test/ruby/test_module.rb: tests for new behavior
-
-Fri Oct 26 13:24:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (literal_concat_gen): merge fixed strings across
- concatenated literals, after an interpolation.
-
-Thu Oct 25 17:48:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (has_redirection): should use shell (cmd.exe) when
- the commandline contains '&'.
- reported by Roger Pack at [ruby-core:47912] [Bug #7143], and
- patched by Heesob Park at [ruby-core:47931].
-
-Thu Oct 25 15:00:08 2012 Koichi Sasada <ko1@atdot.net>
-
- * include/ruby/ruby.h, class.c: remove (revert)
- `rb_add_method_cfunc_frameless()' API.
- This API is not mature to become an official API.
- For example, we can not use this API with
- `rb_define_private_method()'.
-
- * method.h, vm_method.c (rb_add_method_cfunc_frameless): removed.
-
-Thu Oct 25 13:35:07 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * tool/mkconfig.rb: remove string literal concatenation.
-
-Wed Oct 24 18:49:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/objspace/objspace.c (type2sym, count_objects_size): use enum
- instead of size_t which may be larger than actual values.
-
-Wed Oct 24 17:41:24 2012 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/driver.rb: add `-x' or `--exclude' option
- to specify exclude benchmark name pattern.
- You can specify "-x foo" if you want to exclude the benchmarks
- if the name of benchmark contains `foo'.
-
-Wed Oct 24 11:57:24 2012 Narihiro Nakamura <authornari@gmail.com>
-
- * gc.c (gc_prepare_free_objects): rename to match the behavior of
- this function.
-
-Wed Oct 24 11:55:19 2012 Koichi Sasada <ko1@atdot.net>
-
- * ext/objspace/objspace.c (reachable_object_from_i): change data
- structure of the result of reachable objects. Keys of table
- contains object_id of each reachable objects. Value of table
- is an object itself or an instance of InternalObjectWrapper.
- To avoid duplication, we use st_table and object_id keys.
-
- * ext/objspace/objspace.c (type2sym): bug fix.
- Should use `i' instead of `type'.
-
-Wed Oct 24 10:33:09 2012 Koichi Sasada <ko1@atdot.net>
-
- * gc.c (garbage_collect, gc_marks): move the location of
- clear and restore rb_objspace_t::mark_func_data
- from garbage_collect() to gc_marks().
-
-Wed Oct 24 10:17:45 2012 Koichi Sasada <ko1@atdot.net>
-
- * ext/objspace/objspace.c (Init_objspace): add a new method
- `ObjectSpace::InternalObjectWrapper#internal_object_id' which returns
- an object id of a wrapped internal object.
-
-Wed Oct 24 08:55:04 2012 Koichi Sasada <ko1@atdot.net>
-
- * ext/objspace/objspace.c (ObjectSpace.reachable_objects_from):
- internal object support.
- If given object `obj' has references to internal objects
- (such as T_NODE objects), then this method returns instances of
- `ObjectSpace::InternalObjectWrapper' instead of that internal objects.
- This instance contains a reference to an internal object and you can
- check the type of internal object using
- `ObjectSpace::InternalObjectWrapper#type' method.
- Rdoc of `InternalObjectWrapper' is not prepared yet.
-
- * gc.c (rb_objspace_reachable_objects_from), gc.h: change
- an interface of 'rb_objspace_reachable_objects_from()'
-
- * gc.c, gc.h: add two APIs
- - rb_objspace_markable_object_p(obj): check markable or not.
- - rb_objspace_internal_object_p(obj): check internal or not.
-
-Wed Oct 24 05:52:36 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c (vm_call_method): remove `default' and
- add a case for `VM_METHOD_TYPE_UNDEF'.
-
-Wed Oct 24 05:41:18 2012 Koichi Sasada <ko1@atdot.net>
-
- * eval_error.c (error_print), vm_eval.c (eval_string_with_cref),
- vm_trace.c (rb_suppress_tracing): use TH_PUSH_TAG() instead of
- PUSH_TAG().
-
-Wed Oct 24 05:17:52 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_eval.c (vm_call0_body): remove RUBY_VM_CHECK_INTS()
- after method invocation using rb_call0().
-
- * vm_eval.c (vm_call0_body): remove default section on top of
- switch statement and add cases for `VM_METHOD_TYPE_CFUNC_FRAMELESS'
- and `VM_METHOD_TYPE_UNDEF'.
-
- * vm_eval.c (vm_call0_body): remove useless brackets.
-
-Tue Oct 23 22:34:49 2012 Koichi Sasada <ko1@atdot.net>
-
- * thread.c (thread_raise_m): check interrupts after Thread#raise
- if a target thread is the current thread because the behavior
- of Thread.current.raise is expected to perform same as
- Kernel.raise (by rubyspec).
-
-Tue Oct 23 17:08:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby.c (usage, process_options): show more info in --help.
- [EXPERIMENTAL] [ruby-core:48072] [Bug #7184]
-
-Tue Oct 23 14:20:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * misc/ruby-electric.el using variable `last-command-event' instead of
- obsolete `last-command-char', so that work with Emacs trunk.
- a patch by Victor Deryagin <vderyagin AT gmail.com>.
-
-Tue Oct 23 14:06:47 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (visibility_option): visibility attribute is not
- available before GCC 4, so do not use -fvisibility option in that
- case. [ruby-core:48147] [Bug #7205]
-
-Tue Oct 23 12:57:29 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_core.h, vm_insnhelper.c, vm_eval.c (OPT_CALL_CFUNC_WITHOUT_FRAME):
- add a new optimization and its macro `OPT_CALL_CFUNC_WITHOUT_FRAME'.
- This optimization makes all cfunc method calls `frameless', which
- is faster than ordinal cfunc method call.
- If `frame' is needed (for example, it calls another method with
- `rb_funcall()'), then build a frame. In other words, this
- optimization delays frame building.
- However, to delay the frame building, we need additional overheads:
- (1) Store the last call information.
- (2) Check the delayed frame building before the frame is needed.
- (3) Overhead to build a delayed frame.
- rb_thread_t::passed_ci is storage of delayed cfunc call information.
- (1) is lightweight because it is only 1 assignment to `passed_ci'.
- To achieve (2), we modify GET_THREAD() to check `passed_ci' every
- time. It causes 10% overhead on my environment.
- This optimization only works for cfunc methods which do not need
- their `frame'.
- After evaluation on my environment, this optimization does not
- effective every time. Because of this evaluation results, this
- optimization is disabled at default.
-
- * vm_insnhelper.c, vm.c: add VM_PROFILE* macros to measure behaviour
- of VM internals. I will extend this feature.
-
- * vm_method.c, method.h: change parameters of the `invoker' function.
- Receive `func' pointer as the first parameter.
-
-Tue Oct 23 06:21:05 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/parser.c: just get the constant defined in Ruby.
-
- * ext/psych/lib/psych/syntax_error.rb: Psych::SyntaxError now inherits
- from StandardError rather than SyntaxError. Thanks Eric Hodel!
-
- * test/psych/test_exception.rb: tests for change.
-
-Tue Oct 23 06:17:36 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/scalar_scanner.rb: Cache symbols while
- tokenizing. Thanks Kevin Menard!
-
-Tue Oct 23 06:15:40 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/scalar_scanner.rb: Updated the RegExp to catch
- Strings earlier in the tokenization process. Thanks Kevin Menard!
-
-Tue Oct 23 06:12:39 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/to_ruby.rb: Handle nil tags specially
- to avoid slow method_missing calls. Thanks Kevin Menard!
-
-Tue Oct 23 06:07:57 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/scalar_scanner.rb: Ignore bad timestamps. If
- something looks like a timestamp but has an invalid component, treat
- it as a string instead of throwing an ArgumentError.
- Thanks Rhett Sutphin!
-
- * test/psych/test_scalar_scanner.rb: appropriate tests.
-
-Tue Oct 23 06:04:07 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/scalar_scanner.rb: Fix scalar_scanner to
- understand strings starting with an underscore and containing only
- digits. Thanks Kelley Reynolds.
-
- * test/psych/test_scalar_scanner.rb: test for fix
-
-Tue Oct 23 06:00:41 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych.rb: Changed comment in psych.rb to update new
- home page for libyaml. Thanks to Carolyn Ann.
-
-Sun Oct 21 19:12:59 2012 Kazuki Tsujimoto <kazuki@callcc.net>
-
- * vm_core.h (rb_vm_t::trace_running): add a new field
- `trace_running' to store vm global tracing status.
-
- * vm_trace.c: fix SEGV bug. event_hook was free'd
- even when the hook is still used in another thread.
- [ruby-dev:46141] [Bug #7032]
-
-Sun Oct 21 19:12:42 2012 Kazuki Tsujimoto <kazuki@callcc.net>
-
- * vm_core.h (rb_vm_t::trace_flag): remove `trace_flag'
- which is no longer used.
-
-Sun Oct 21 18:34:27 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_parse.c (date__parse): uses more tight parser if
- defined TIGHT_PARSER. now inactivated; because it introduces
- incompatibilities and it is a bit slow.
-
-Sat Oct 20 15:35:06 2012 Narihiro Nakamura <authornari@gmail.com>
-
- * include/ruby/ruby.h: add C APIs.
- VALUE rb_newobj_of(VALUE klass, VALUE flags)
- #define NEWOBJ_OF(obj,type,klass,flags)
- These allow to change a allocation strategy depending on klass
- or flags.
-
- * gc.c: ditto
-
- * array.c: use new C API.
- * bignum.c: ditto
- * class.c: ditto
- * complex.c: ditto
- * ext/socket/ancdata.c: ditto
- * ext/socket/option.c: ditto
- * hash.c: ditto
- * io.c: ditto
- * marshal.c: ditto
- * numeric.c: ditto
- * object.c: ditto
- * random.c: ditto
- * range.c: ditto
- * rational.c: ditto
- * re.c: ditto
- * string.c: ditto
- * struct.c: ditto
- [Feature #7177][Feature #7047]
-
-Sat Oct 20 12:50:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * ext/socket/socket.c: Documentation for Socket
- Based on a patch by David Albert
- [Bug #7105] [ruby-core:47828]
-
-Sat Oct 20 11:00:00 2012 Zachary Scott <zachary@zacharyscott.net>
-
- * lib/open-uri.rb: Documentation for OpenURI
-
-Sat Oct 20 06:18:34 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * hash.c (initialize_copy): unset the default proc if there isn't one
- for the target hash, call to_hash, check frozen status.
-
-Fri Oct 19 22:22:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm.c (rb_vm_jump_tag_but_local_jump): pass through thrown objects.
- [ruby-dev:46234] [Bug #7185]
-
- * vm_eval.c (rb_eval_cmd): if state is non-zero, val should be nil and
- rb_vm_jump_tag_but_local_jump() just jump tag.
-
-Fri Oct 19 22:11:55 2012 Benoit Daloze <eregontp@gmail.com>
-
- * pack.c (pack_unpack): set encoding of the
- 'H','h','B' and 'B' modifiers to US-ASCII.
-
- * test/ruby/test_pack.rb: tests for the above.
- [ruby-core:47653][Bug #7050]
-
- * test/test_securerandom.rb: tests for SecureRandom.hex
- from tenderlove. [ruby-core:46792][Bug #6799]
-
-Fri Oct 19 19:29:11 2012 Koichi Sasada <ko1@atdot.net>
-
- * method.h (rb_method_cfunc_t::invoker): add new field (func ptr)
- `invoker'. `invoker' function invoke cfunc body
- (rb_method_cfunc_t::func).
- `invoker' is set at method definition timing.
- With this change, the big `switch' (branch) in `call_cfunc()'
- is no longer needed.
- However, the performance benefit is only a bit.
-
- * vm_core.h (rb_call_info_t::aux::func): add a new field to store
- cfunc body function pointer.
-
- * vm_method.c (call_cfunc_invoker_func): add a new function which
- returns a suitable invoke function.
-
- * vm_method.c (setup_method_cfunc_struct): added.
-
- * vm_method.c (rb_add_method): fix to set `invoker'.
-
- * vm_eval.c (vm_call0_body): catch up above changes.
-
- * vm_insnhelper.c (call_cfunc): removed.
-
- * vm_insnhelper.c (vm_call_cfunc): fix to call cfunc body
- with `invoker' function.
-
-Fri Oct 19 16:55:58 2012 Koichi Sasada <ko1@atdot.net>
-
- * eval.c, vm_eval.c: use TH_PUSH_TAG() instead of PUSH_TAG().
-
-Fri Oct 19 11:13:55 2012 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/driver.rb: remove unexpected `output'.
- (commit miss)
-
-Fri Oct 19 10:24:03 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c (vm_search_method): remove needless local variable.
-
-Fri Oct 19 10:22:26 2012 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/bmx_temp.rb: removed.
- This file should not be in repository.
-
-Fri Oct 19 10:20:10 2012 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/driver.rb: add new option `--ruby-arg [ARG]'
- which is passed as a launch parameter for each ruby's execution.
- ($ ruby [ARG] [File])
-
-Thu Oct 18 18:42:35 2012 Koichi Sasada <ko1@atdot.net>
-
- * insns.def (opt_send_simple): move the location of
- `opt_send_simple' to the place near `send' definition.
- (to take care about icache locality).
-
-Thu Oct 18 18:29:25 2012 Koichi Sasada <ko1@atdot.net>
-
- * insns.def (send): remove unused condition.
- This condition will be true after r37258.
-
- * vm_insnhelper.c (vm_caller_setup_args): remove `UNLIKELY' on
- checking blockiseq (it seems `LIKELY').
-
-Thu Oct 18 17:31:58 2012 Koichi Sasada <ko1@atdot.net>
-
- * insns.def (opt_send_simple): introduce new instruction used
- when no need to care about block and splat.
-
- * compile.c: use the `opt_send_simple' instruction.
-
-Thu Oct 18 16:44:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_method.c (rb_add_method_cfunc, rb_add_method_cfunc_frameless):
- check arity earlier at definition time.
-
-Thu Oct 18 15:11:31 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c: add `inline' keyword to several functions.
- Compilers (gcc) are conservative than I expected.
-
-Thu Oct 18 15:01:15 2012 Koichi Sasada <ko1@atdot.net>
-
- * include/ruby/ruby.h: add a decl. of
- `rb_define_frameless_method()'.
-
-Thu Oct 18 14:31:17 2012 Koichi Sasada <ko1@atdot.net>
-
- * compile.c (new_callinfo): set a temporary index of callinfo
- (used in `iseq_set_sequence()') to rb_call_info_t::aux::index.
- rb_call_info_t::argc is initialized by same value of
- rb_call_info_t::orig_argc.
-
-Thu Oct 18 14:11:08 2012 Koichi Sasada <ko1@atdot.net>
-
- * class.c (rb_define_frameless_method): rename from
- rb_define_method_fast(). Defined method with this C API
- does not make a method frame. It is bit lightweight than
- ordinal C functions. Now only 0 or 1 argc are permitted.
-
- * method.h (VM_METHOD_TYPE_CFUNC_FRAMELESS): rename macro name
- from VM_METHOD_TYPE_CFUNC_FAST.
-
- * vm_insnhelper.c, vm_method.c: rename related functions.
-
- * proc.c (rb_method_entry_arity): catch up above changes.
-
-Thu Oct 18 10:30:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (assignable_gen): fail if yyerror occurred. fix a bug in
- r36973.
-
-Thu Oct 18 09:23:03 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * hash.c (initialize_copy): duping should rehash the hash.
-
- * test/ruby/test_hash.rb: added a test to ensure rehash.
-
-Wed Oct 17 21:16:47 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * common.mk (WPROGRAM): need same dependencies as PROGRAM.
-
- * cygwin/GNUmakefile.in (uncommon.mk): move include position
- below WPROGRAM definition to be defined in uncommon.mk.
-
- * ext/extmk.rb (all, static): fix make rubyw.exe failure with make -jN.
- If make of ruby.exe and rubyw.exe run in parallel, link dll and link
- exe run in parallel, which causes link failure on mingw. To fix this,
- we make ruby.exe and rubyw.exe in one make process.
- [ruby-core:48007] [Bug #7165]
-
-Wed Oct 17 16:25:34 2012 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/bm_vm2_method_missing.rb: add a benchmark to measure
- performance of invoking `method_missing'.
-
-Wed Oct 17 16:23:17 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c (vm_getivar): fix to use `aux.index' instead of
- `aux.opt_pc'.
-
-Wed Oct 17 16:03:54 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c (vm_call_method_missing): make a refactoring
- about method_missing process. Use `vm_call_method()' to invoke
- `method_missing' method instead of `rb_funcall2()'.
- In `vm_call_method()', set fastpath to `vm_call_method_missing()'
- if it can be cached.
-
- * vm_core.h (rb_call_info_t): add new field
- `rb_call_info_t::aux::missing_reason' to pass the reason to
- `vm_call_method_missing()'.
-
-Wed Oct 17 15:33:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (opt-dir): allow multiple directories separated by
- $PATH_SEPARATOR as well as dir_config in mkmf.rb. [ruby-core:47868]
- [Bug #7120]
-
-Wed Oct 17 15:08:13 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/imap.rb: fix Net::IMAP::ResponseParser to accept
- message/delivery-status ([ruby-core:47920] [Bug #7146]),
- message/rfc822 attachments ([ruby-core:47921] [Bug #7147]), and
- (BODY ("MIXED")) ([ruby-core:47951] [Bug #7153]).
- patched by Tony Arkles.
-
- * test/net/imap/test_imap_response_parser.rb: related test.
-
-Wed Oct 17 11:04:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_hash.rb (TestHash#test_dup_equality): added a new test
- to show the problem of r37232.
-
-Wed Oct 17 10:48:40 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_insnhelper.c (vm_search_method): fix a build error that occurs
- when OPT_INLINE_METHOD_CACHE is 0.
-
-Wed Oct 17 08:46:47 2012 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/bm_vm2_dstr.rb: add a benchmark to measure
- performance of dynamic generated string ("foo#{bar}baz").
-
-Wed Oct 17 08:32:46 2012 Koichi Sasada <ko1@atdot.net>
-
- * compile.c (compile_dstr_fragments): use `putobject' instead of
- `putstring' for all of strings used by NODE_DSTR because
- ruby users can not grab this string.
- For example, the string object of "baz" in "foo#{bar}baz"
- is located by `putobject' (users can not touch "baz" object
- directly). This change reduces GC pressure.
- This improvement is suggested by Aaron Patterson.
-
-Wed Oct 17 08:02:57 2012 Koichi Sasada <ko1@atdot.net>
-
- * thread.c (rb_threadptr_interrupt_mask): fix to check interrupt
- after interrupt_mask changed.
-
-Wed Oct 17 06:42:47 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c (vm_call_method): fix to return value immediately.
- Remove CHECK_INTS() after that method dispatch.
-
-Wed Oct 17 06:25:56 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * hash.c (initialize_copy): copy the underlying st_table on dup,
- rather than copying the hash key by key. [ruby-core:48009]
-
- * test/ruby/test_hash.rb: relevant tests for initialize_copy
-
-Wed Oct 17 06:17:44 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c (vm_call_iseq_setup_2): separate tailcall and normal
- method frame setup functions.
- Add checking interrupts at the tailcall setup function.
-
-Wed Oct 17 05:35:37 2012 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/bm_vm1_yield.rb: add a benchmark to measure `yield'
- (invoke empty block) performance.
-
- * benchmark/bm_vm2_method_with_block.rb: add a benchmark to measure
- method invocation with empty block.
-
-Wed Oct 17 05:05:07 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c (vm_invoke_block): vm_caller_setup_args() can skip
- when splat flag is not set.
-
-Wed Oct 17 01:53:47 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c (vm_getivar, vm_setivar): support index inline cache
- with rb_call_info_t to speedup `attr' getter and setter.
- Cached index is stored in rb_call_info_t::aux::index.
- `index' == 0 means not cached. `index' > 0 means cached and cached
- index is `index - 1'.
-
- * insns.def ((get|set)instancevariable): use new wrapper functions
- vm_(get|set)instancevariable() defined in vm_insnhelper.c.
-
- * vm_core.h (rb_call_info_t::aux): introduce new union data because
- opt_pc can share with index.
-
-Tue Oct 16 22:24:44 2012 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/driver.rb (show_results): Show speedup ratio
- with first executables score at last of results
- if two or more executables are given.
-
-Tue Oct 16 21:59:01 2012 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/driver.rb: some refactoring.
- (1) Remove `average differential'.
- In this benchmark driver, We should not care about `average'.
- We use fastest score because this score should not include
- any disturbances (affections of background process, etc).
- If you care about timing affect, I recommend `median'
- score with more than 5 examinations rather than simple
- `average' score (`average' score was affected by error scores).
- (2) Show log file name.
- (3) Change default directory from './' to driver's directory.
-
-Tue Oct 16 14:56:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (rb_file_join): need to check again after any conversion run.
- [ruby-core:48012] [Bug #7168]
-
-Tue Oct 16 12:52:14 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * test/ruby/envutil.rb (Test::Unit::Assertions#assert_file):
- rename from file_assertion.
-
-Tue Oct 16 11:30:18 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (rb_file_join): hide the result under construction until
- return.
-
- * file.c (rb_file_join): check nul-byte only for strings, since
- FilePathStringValue() does it. [ruby-core:48012] [Bug #7168]
-
- * file.c (rb_file_join): path names must be ASCII-compatible.
- [ruby-core:48012] [Bug #7168]
-
- * file.c (check_path_encoding): new function to ensure path name
- encoding to be ASCII-compatible.
-
-Tue Oct 16 09:40:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_regexp.rb
- (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): use
- Regexp.new instead of literal to ignore a parser warning.
-
-Tue Oct 16 09:30:30 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_regexp.rb
- (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): ignoring
- warnings are already set in setup method.
-
-Tue Oct 16 06:44:06 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c (VM_CALLEE_SETUP_ARG): fix wrong condition.
-
-Tue Oct 16 06:29:18 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c (vm_call_method): disable CI_SET_FASTPATH() if
- this method call needs splat argument because cached functions
- (vm_call_attrset, vm_call_ivar, vm_call_cfunc_fast_(unary|binary))
- do not check an arity.
-
- * bootstraptest/test_method.rb: add a test to check an above issue.
-
-Tue Oct 16 06:15:44 2012 Koichi Sasada <ko1@atdot.net>
-
- * method.h: introduce new method type VM_METHOD_TYPE_CFUNC_FAST.
- This method is similar to VM_METHOD_TYPE_CFUNC methods, but
- called cfunc without building new frame (does not push new control
- frame). If error is occurred in cfunc, the backtrace only shows
- caller frame and upper.
- This kind of methods can be added by rb_define_method_fast().
- This feature is similar to specialized instructions (opt_plus, etc),
- but more flexible (but a bit slower).
-
- * class.c (rb_define_method_fast): added.
- Maybe it will be renamed soon.
-
- * vm_insnhelper.c (vm_call_method): support method type
- VM_METHOD_TYPE_CFUNC_FAST.
-
- * proc.c (rb_method_entry_arity): catch up new method type.
-
- * vm_method.c (rb_add_method_cfunc_fast): added.
-
-Tue Oct 16 02:32:29 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.h (CI_SET_FASTPATH): add new parameter `enabled'.
- If `enable' is 0 then CI_SET_FASTPATH() doesn't work.
- And add new configuration option OPT_CALL_FASTPATH. If this macro
- was defined by 0, then CI_SET_FASTPATH() doesn't work any more.
-
- * vm_insnhelper.c (vm_call_method): Pass `0' for `enabled' parameter
- of CI_SET_FASTPATH if this method is protected.
-
-Tue Oct 16 02:17:35 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_core.h (VM_CALL_*): rename VM_CALL_*_BIT
- to VM_CALL_* (remove `_BIT' suffix).
- Add comments on each macros.
- Remove unused macro VM_CALL_TAILRECURSION_BIT.
-
- * compile.c, iseq.c, insns.def, vm_insnhelper.c: ditto.
-
-Mon Oct 15 22:14:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/envutil.rb (Test::Unit::Assertions#file_assertion):
- rewrite file assertions.
-
-Mon Oct 15 09:41:17 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c (VM_CALLEE_SETUP_ARG): skip CI_SET_FASTPATH() if
- it was called from vm_yield_setup_args().
-
-Mon Oct 15 05:20:13 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.h CI_SET_FASTPATH: introduce new macro
- `CI_SET_FASTPATH(ci, func)'. This macro set `ci->call' as `func'.
- `func' (ci->call) is called at the last of `send'
- (and `invokesuper') instruction.
- `CI_SET_FASTPATH' does not set `ci->call' when the method
- (stored in `ci->me') is `protected'.
-
- * vm_insnhelper.c (vm_call_method): use `CI_SET_FASTPATH'.
- After several checking (visibility, argc checking), the result of
- checking can be reused until re-definition of this method
- with inline method cache.
-
- Note that this optimization is now experimental.
- If you find any problem about it, please tell us.
-
-Mon Oct 15 04:51:55 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c: refactoring.
- - move all `call' related functions to the last of file.
- - make functions for respective method types in vm_call_method().
- (all functions have same function parameters)
-
- * vm_core.h: add `opt_pc' field in `rb_call_info_t'
- as temporal variable.
-
- * vm_eval.c (vm_call0_body): catch up above changes.
-
-Mon Oct 15 03:51:46 2012 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/bm_vm1_attr_ivar(_set).rb: added (for method dispatch speed).
-
- * benchmark/bm_vm1_float_simple.rb: added (for flonum/float).
-
-Mon Oct 15 02:51:16 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_eval.c (vm_call0_body): add new function.
- `vm_call0()' makes call_info struct and calls `vm_call0_body()'
- with this struct. In near future, `vm_call0()' will be removed
- because all of `vm_call0()' users setup call_info struct by itself.
-
-Mon Oct 15 01:38:06 2012 Koichi Sasada <ko1@atdot.net>
-
- * insns.def (send, invokesuper, invokeblock, opt_*), vm_core.h:
- use only a `ci' (rb_call_info_t) parameter instead of using
- parameters such as `op_id', 'op_argc', `blockiseq' and flag.
- These information are stored in rb_call_info_t at the compile
- time.
- This technique simplifies parameter passing at related
- function calls (~10% speedups for simple method invocation at
- my machine).
- `rb_call_info_t' also has new function pointer variable `call'.
- This `call' variable enables to customize method (block)
- invocation process for each place. However, it always call
- `vm_call_general()' at this changes.
- `rb_call_info_t' also has temporary variables for method
- (block) invocation.
-
- * vm_core.h, compile.c, insns.def: introduce VM_CALL_ARGS_SKIP_SETUP
- VM_CALL macro. This flag indicates that this call can skip
- caller_setup (block arg and splat arg).
-
- * compile.c: catch up above changes.
-
- * iseq.c: catch up above changes (especially for TS_CALLINFO).
-
- * tool/instruction.rb: catch up above changes.
-
- * vm_insnhelper.c, vm_insnhelper.h: ditto. Macros and functions
- parameters are changed.
-
- * vm_eval.c (vm_call0): ditto (it will be rewritten soon).
-
-Sun Oct 14 12:30:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby.c (rb_f_sub, rb_f_gsub): pass the given block.
- [ruby-core:47967] [Bug #7157]
-
-Sat Oct 13 23:15:39 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * regparse.c (parse_char_class): should match with a hyphen after a
- range in a character class.
-
- * test/ruby/test_regexp.rb (TestRegexp#test_char_class): fixed wrong
- test.
-
- * test/ruby/test_regexp.rb (TestRegexp#check): now can accept the
- error message.
+ * test/date/test_*.rb: added tests.
- * test/ruby/test_regexp.rb
- (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): renamed
- because the previous name was wrong.
+Tue Jun 14 22:09:58 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * test/ruby/test_regexp.rb
- (TextRegexp#test_raw_hyphen_and_tk_char_type_after_range): added
- more test pattern.
+ * ext/date/date_core.c: renamed some functions.
+ * ext/date/date_core.c: modified doc.
-Sat Oct 13 03:01:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Jun 14 21:26:01 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * file.c (realpath_rec): prevent link from GC while link_names refers
- the content.
+ * cont.c (cont_save_thread): add new utility function.
+ rb_context_t::saved_thread.machine_stack_start and
+ machine_stack_end should be cleared immediately after a snapshot of
+ current thread is stored to saved_thread. [ruby-dev:43680] [Bug #4855]
+ this change aims to get rid of unnecessary GC mark at machine stack.
-Sat Oct 13 01:37:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Jun 14 19:50:49 2011 Tanaka Akira <akr@fsij.org>
- * test/ruby/test_regexp.rb
- (TestRegexp#test_raw_hyphen_and_type_char_after_range): added new
- test. ref [ruby-core:47115] [Backport #6853]
+ * test/ruby/test_autoload.rb: remove temporary directory.
-Fri Oct 12 21:55:08 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Tue Jun 14 11:05:03 2011 Narihiro Nakamura <narihiro@netlab.jp>
- * include/ruby/win32.h (rb_w32_pow): set floating point precision
- for mingw-w64 x86 pow(). This improves the precision of pow() on
- Windows XP for TestFloat#test_round_with_precision failure.
- [ruby-core:47911] [Bug #7142]
+ * gc.c (rb_gc_set_params): call initial_expand_heap if
+ initial_heap_min_slots is set.
-Fri Oct 12 21:37:25 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Tue Jun 14 11:02:08 2011 Narihiro Nakamura <narihiro@netlab.jp>
- * test/webrick/test_cgi.rb (TestWEBrickCGI#test_cgi): skip a test
- depending on locale on Windows. ENV[] doesn't work properly if
- console code page is not equal to file system encoding.
- [ruby-core:47910] [Bug #7140]
+ * gc.c: use size_t.
-Fri Oct 12 20:40:29 2012 Tanaka Akira <akr@fsij.org>
+Tue Jun 14 01:10:38 2011 Yusuke Endoh <mame@tsg.ne.jp>
- * process.c (posix_sh_cmds): the command name of colon is ":".
+ * test/coverage/test_coverage.rb: add a test for restart. a patch
+ from Xavier Shay. [ruby-core:36745]
-Fri Oct 12 18:18:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Jun 14 01:05:10 2011 Yusuke Endoh <mame@tsg.ne.jp>
- * file.c (rb_get_path_check): path name must not contain NUL bytes.
+ * ext/coverage/coverage.c: make it restartable. [ruby-core:36539]
-Fri Oct 12 16:06:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Jun 13 23:55:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * tool/merger.rb: now can merge revision(s) without --ticket again.
+ * thread.c (rb_thread_schedule_rec): call gvl_yield() unconditionally.
+ * thread_pthread.c: remove HAVE_GVL_YIELD macro.
+ * thread_win32.c (gvl_yield): new. this fallback logic was moved from
+ rb_thread_schedule_rec().
-Fri Oct 12 14:10:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jun 13 23:50:25 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/mkmf.rb (dir_config, init_mkmf): use configured libdir value as
- default library path. [ruby-core:43726] [Bug #6207]
+ * ext/io/console/console.c (console_dev): typo.
-Fri Oct 12 05:25:00 2012 Zachary Scott <zzak@ruby-lang.org>
+Mon Jun 13 23:38:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/timeout.rb (timeout):
- Remove paragraph on wrong implementation detail.
- [ruby-core:47739] [Bug #7088]
+ * parse.y (parser_parse_string): flush delayed token. based on a
+ patch by Masaya Tarui in [ruby-dev:43762]. Bug #4544
-Thu Oct 11 23:09:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * parse.y (yylex): revert r24557. delayed token at the end of
+ string should be flushed already by the above change.
- * string.c (rb_str_sub{seq,pos,str}, rb_str_each_{line,codepoint}):
- prevent String copies from GC. [ruby-core:47881] [Bug #7135]
+Mon Jun 13 23:33:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Oct 11 07:40:50 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/io/console/console.c (console_dev): console should be
+ unbuffered.
- * iseq.c (insn_operand_intern): cast op to rb_call_info_t* before
- compare with iseq->callinfo_entries whose type is rb_call_info_t*.
+ * ext/io/console/console.c (console_dev): take care of no-ctty
+ case.
-Thu Oct 11 03:37:08 2012 Koichi Sasada <ko1@atdot.net>
+Mon Jun 13 23:06:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * bootstraptest/test_block.rb: add tests for block with super.
-
-Thu Oct 11 02:54:07 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_dump.c: fix debug prints to catch up recent changes
- such as VM data structures.
+ * thread_pthread.c: rewrite GVL completely. This fix improve some
+ benchmark dramatically (e.g. vm3_thread_mutex result changed
+ form 120.601sec to 3.426sec).
+ * thread_win32.c: ditto.
+ * thread_pthread.h: ditto.
+ * vm_core.h: ditto.
+ * thread.c: ditto.
-Thu Oct 11 02:50:34 2012 Koichi Sasada <ko1@atdot.net>
+Mon Jun 13 23:11:52 2011 Tanaka Akira <akr@fsij.org>
- * iseq.c (insn_operand_intern): add support disasm TS_CALLINFO
- operands.
+ * test/socket/test_unix.rb: don't use Thread.abort_on_exception.
-Wed Oct 10 15:12:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Jun 13 23:05:01 2011 Tanaka Akira <akr@fsij.org>
- * test/ruby/test_process.rb (TestProcess#test_execopts_gid): skip on
- windows because the platform does not have Process.group method.
- patched by Jon Forums in [ruby-core:47878] [Bug #7133].
+ * ext/socket/unixsocket.c (unix_send_io): race condition fixed.
+ (unix_recv_io): ditto.
+ fixed by Eric Wong. [ruby-core:35574]
-Tue Oct 9 23:18:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/socket/test_unix.rb: test added for above problem.
- * test/ruby/envutil.rb (assert_file, assert_file_not): more
- descriptive assertions for File predicates.
+Mon Jun 13 21:41:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Oct 9 18:01:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * thread_win32.c (native_cond_signal): remove unnecessary rb_bug().
+ It's additional fix for r32021. [Bug #4696]
- * array.c (rb_ary_sample): use rb_random_ulong_limited, since
- precision of long may be larger than double.
+Mon Jun 13 20:50:49 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * random.c (rb_random_ulong_limited): new function to return a random
- value from 0 upto limit as unsigned long, similarly to
- rb_genrand_ulong_limited but with arbitrary RNG object.
+ * test/openssl/test_ec.rb
+ test/openssl/test_pkey_ec.rb: merge both files into test_pkey_ec.rb.
+ Removed redundant group instantiation from PKey tests.
+ * test/openssl/utils.rb: only create TEST_PKEY_EC_P256V1 if EC is
+ defined.
-Tue Oct 9 17:13:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jun 13 20:28:24 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * process.c (rb_execarg_addopt, rb_execarg_run_options): add :uid and
- :gid options. [ruby-core:47414] [Feature #6975]
+ * test/openssl/digest.rb: remove MDC2 from test, it is not available
+ by default in an OpenSSL installation.
-Tue Oct 9 14:36:11 2012 Koichi Sasada <ko1@atdot.net>
+Mon Jun 13 20:18:55 2011 Koichi Sasada <ko1@atdot.net>
- * iseq.c (iseq_free): fix memory leak.
- rb_iseq_t::callinfo_entries should be freed.
+ * vm_core.h, vm_insnhelper.h: move decl. of
+ ruby_vm_global_state_version and related macros
+ from vm_core.h to vm_insnhelper.h.
-Tue Oct 9 14:28:18 2012 Koichi Sasada <ko1@atdot.net>
+ * vm.c (vm_clear_all_cache): added. This function is called
+ when ruby_vm_global_state_version overflows.
+ TODO: vm_clear_all_inline_method_cache() is only place holder.
+ We need to implement it ASAP.
- * vm_core.h (rb_call_info_t): add new type `rb_call_info_t'.
- This data structure contains information including inline method
- cache. After that, `struct iseq_inline_cache_entry' does not
- need to contain inline cache for method invocation.
- Other information will be added to this data structure.
+ * vm_method.c (vm_clear_global_method_cache): added.
- * vm_core.h (rb_iseq_t): add `callinfo_entries' and `callinfo_size'
- members to `rb_iseq_t'.
+Mon Jun 13 19:46:21 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
- * insns.def, compile.c: Use CALL_INFO instead of IC.
+ * lib/cmath.rb: add new method Object#real?. fix #3137
- * tool/instruction.rb: support CALL_INFO as operand type.
+Mon Jun 13 18:52:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * vm_insnhelper.c, vm_insnhelper.h: ditto.
+ * ext/bigdecimal/bigdecimal.c (is_kind_of_BigDecimal): new function to
+ examine the whether the object is kind of BigDecimal.
-Sun Oct 7 23:54:33 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+Mon Jun 13 18:49:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * ext/zlib/zlib.c (zstream_run_func): don't call inflate() when
- z->stream.avail_in == 0. it return Z_BUF_ERROR.
- but deflate() could be called with z->stream->avail_in == 0 because
- it has hidden buffer in z->stream->state (opaque structure).
- fix for gem install error. [ruby-dev:46149] [Bug #7040]
+ * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): use GetVpValueWithPrec
+ for Float and Rational arguments.
-Mon Oct 8 23:55:41 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * test/bigdecimal/test_bigdecimal.rb (test_new, test_cmp, test_power):
+ add and modify tests for the above change.
- * eval.c (rb_mod_refinements): new method Module#refinements.
+ * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): modify coding style to
+ match ruby's standard.
- * test/ruby/test_refinement.rb: add new tests for the above changes.
+Mon Jun 13 18:33:04 2011 Tanaka Akira <akr@fsij.org>
-Mon Oct 8 23:02:19 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * lib/securerandom.rb (SecureRandom.random_bytes): modify PRNG state
+ to prevent random number sequence repetition at forked child
+ process which has same pid.
+ reported by Eric Wong. [ruby-core:35765]
- * eval.c, gc.c, iseq.c, node.h, vm_insnhelper.c, vm_insnhelper.h,
- vm_method.c: rename omod and overlaid modules to refinements.
+Mon Jun 13 17:02:34 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * eval.c (hidden_identity_hash_new): renamed from identity_hash_new.
+ * lib/net/http.rb (Net::HTTP#use_ssl?): require 'openssl' only when
+ https is needed. fixes r31933.
-Sun Oct 7 04:50:00 2012 Zachary Scott <zzak@ruby-lang.org>
+Mon Jun 13 14:35:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * lib/abbrev.rb: Documentation examples for Abbrev.
- [ruby-core:47442] [Bug #6985]
+ * lib/cmath.rb (CMath.cbrt): returns the principal value of the cube
+ root of the argument. fix #3676
-Sun Oct 7 04:50:00 2012 Zachary Scott <zzak@ruby-lang.org>
+ * test/test_cmath.rb (test_cbrt_returns_principal_value_of_cube_root):
+ test for the above change.
- * thread.c (rb_thread_aref):
- Grammar in Thread documentation.
- Patch by Steve Klabnik [ruby-core:47799] [Bug #7099]
+Mon Jun 13 14:17:00 2011 Kenta Murata <mrkn@mrkn.jp>
-Sun Oct 7 04:37:00 2012 Zachary Scott <zzak@ruby-lang.org>
+ * lib/test/unit.rb (Test::Unit::GlobOption#non_options): fix typo.
- * string.c (rb_str_match):
- Clarify behavior for captured strings and local variable assignment
- Patch by Marcus Stollsteimer [ruby-core:47668] [Bug #7062]
+Mon Jun 13 13:04:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Sat Oct 6 18:31:36 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * ext/openssl/ossl_digest.c: fix error for digests that have no oid
+ (e.g. DSS1).
+ * test/openssl/test_digest.c: add tests for this.
- * vm_opts.h (OPT_GLOBAL_METHOD_CACHE): new build option to
- enable/disable global method caching. [ruby-dev:46203] [Bug #7111]
+Mon Jun 13 12:51:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * vm_method.c (rb_method_entry_get_with_omod): don't use global
- method cache if OPT_GLOBAL_METHOD_CACHE is 0.
+ * lib/yaml.rb: load psych only when syck is not loaded.
-Sat Oct 6 16:32:04 2012 Shugo Maeda <shugo@ruby-lang.org>
+Mon Jun 13 12:23:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * vm_method.c (search_method): check omod only once for performance.
+Mon Jun 13 12:23:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Oct 6 09:42:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/psych/lib/psych/deprecated.rb (Object#to_yaml_properties):
+ undef to_yaml_properties before redefine it.
- * enc/encdb.c, enc/utf_16_32.h (ENC_DUMMY_UNICODE): endian-less wide
- UTF encodings are dummy but Unicode.
+ * ext/syck/lib/syck/rubytypes.rb: ditto.
- * encoding.c (rb_encdb_set_unicode): set Unicode flag.
+Mon Jun 13 11:30:10 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * template/encdb.h.tmpl: allow ENC_DUMMY variants.
+ * ext/openssl/ossl_digest.c: allow Digests to be created by sn, ln or
+ oid.
+ * test/openssl/test_digest.rb: add tests for this.
+ [Ruby 1.9 - Feature #4412] [ruby-core:35319]
- * encoding.c (rb_enc_unicode_p): oniguruma provides Unicode flag.
+Mon Jun 13 10:54:03 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Fri Oct 5 17:18:42 JST 2012 TAKANO Mitsuhiro <tak@no32.tk>
+ * ext/openssl/pkey_dh.c: corrected documentation.
+ * test/openssl/utils.rb: add test key for DH.
+ * test/openssl/test_pkey_dh.rb: add tests.
- * template/Doxyfile.tmpl: remove SHOW_DIRECTORIES and
- HTML_ALIGN_MEMBERS lines. They have been obsolete in
- Doxygen version 1.8.2.
+Mon Jun 13 10:13:08 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Fri Oct 5 15:26:18 2012 Koichi Sasada <ko1@atdot.net>
+ * ext/openssl/pkey_dh.c: clarify difference between DH#public_key and
+ DH#pub_key in documentation.
- * ext/objspace/objspace.c: add ObjectSpace#reachable_objects_from.
- This method returns an array of objects referenced by given object.
- If given object is special objects such as true/false/nil/Fixnum etc
- then it returns nil. See rdoc for details.
- [ruby-core:39772]
+Mon Jun 13 05:50:43 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * test/objspace/test_objspace.rb: add a test for this method.
+ * NEWS: introduce PKey.read.
- * gc.c: add rb_objspace_reachable_objects_from().
- To make this function, add several member `mark_func_data'
- to rb_objspace_t. If mark_func_data is not null, then
- gc_mark() calls mark_func_data::mark_func.
+Mon Jun 13 05:17:29 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * gc.h: export rb_objspace_reachable_objects_from().
+ * ext/openssl/ossl_pkey.c: added PKey.read module function that allows
+ reading arbitrary public/private keys from DER-/PEM-encoded File or
+ string instances.
+ * ext/openssl/ossl_pkey_dh.c: improved documentation.
+ * test/openssl/utils.rb: added EC test key.
+ * test/openssl/test_pkey_rsa.rb
+ test/openssl/test_pkey_dsa.rb: Test PKey.read. Reuse keys from
+ OpenSSL::TestUtils.
+ * test/openssl/test_pkey_ec.rb: Created test file for EC tests.
+ Test PKey.read.
+ [Ruby 1.9 - Feature #4424] [ruby-core:35330]
-Thu Oct 4 23:40:04 2012 Narihiro Nakamura <authornari@gmail.com>
+Mon Jun 13 04:42:24 2011 Koichi Sasada <ko1@atdot.net>
- * gc.c (init_heap): call init_mark_stack before to allocate
- altstack. This change avoid the stack overflow at the signal
- handler on 32bit, but I don't understand reason... [Feature #7095]
+ * ext/objspace/objspace.c (total_i): fix to skip no ruby objects.
-Thu Oct 4 22:39:27 2012 Koichi Sasada <ko1@atdot.net>
+Mon Jun 13 03:07:38 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * insns.def (getlocal, setlocal): remove old getlocal/setlocal
- instructions and rename getdaynmic/setdynamic instructions
- to getlocal/setlocal.
+ * test/benchmark/test_benchmark.rb (capture_output):
+ replace '-' as space. On NetBSD, subtract between two Process.times
+ after and before the short process may return negative value like:
+ t0=Process.times; yield; t1=Process.times; p t1.utime-t0.utime
- * compile.c: ditto.
+Mon Jun 13 02:40:23 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * iseq.c: remove TS_DINDEX.
+ * test/openssl/test_pkey_dsa.rb: Test for DSA#syssign/sysverify.
- * vm_exec.h (dindex_t): remove type definition of `dindex_t'.
+Mon Jun 13 01:59:19 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * tool/instruction.rb: ditto.
+ * ext/openssl/ossl_pkey_dh.c: completed documentation.
+ * ext/openssl/ossl_pkey_dsa.c: corrected examples. Improved parameter
+ sections.
-Thu Oct 4 21:44:17 2012 Koichi Sasada <ko1@atdot.net>
+Mon Jun 13 00:25:10 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * vm.c (vm_analysis_insn|operand|register): use st_insert
- instead of using rb_hash_aset() because rb_hash_aset()
- check $SAFE.
+ * ext/openssl/ossl_pkey_dsa.c: completed documentation.
-Thu Oct 4 21:15:26 2012 Koichi Sasada <ko1@atdot.net>
+Sun Jun 12 23:36:46 2011 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
- * vm.c (VM_COLLECT_USAGE_DETAILS): make new VM usage analysis
- hooks (old macro name is COLLECT_USAGE_ANALYSIS).
- This feature is only for VM developers. (I'm not sure I can use
- `VM developers' (the plural form) in this sentence).
- If VM_COLLECT_USAGE_DETAILS is not 0, VM enables the following
- usage collection features:
- (1) instruction: collect instruction usages.
- (2) operand: collect operand usages.
- (3) register: collect register usages.
- The results are stored in
- RubyVM::USAGE_ANALYSIS_INSN for (1, 2),
- RubyVM::USAGE_ANALYSIS_INSN_BIGRAM for (1) and
- RubyVM::USAGE_ANALYSIS_REGS for (3).
- You can stop collecting usages with
- RubyVM::USAGE_ANALYSIS_INSN_STOP(),
- RubyVM::USAGE_ANALYSIS_OPERAND_STOP(),
- RubyVM::USAGE_ANALYSIS_REGISTER_STOP()
- for (1), (2), (3) respectively.
- You can also change the hook functions by setting
- C level global variables
- `ruby_vm_collect_usage_func_(insn|operand|register)'
- for (1), (2), (3) respectively.
- See codes for more details.
+ * lib/drb/drb.rb (kill_sub_thread): remove the method. [ruby-core:34185]
- * tool/instruction.rb: fix macro names.
+Sun Jun 12 21:01:56 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * iseq.c (insn_operand_intern): make it export (used in vm.c).
- fix to skip several processes if not needed (pointer is 0).
+ * ext/date/date_core.c (d_lite_marshal_load): should give converted value.
- * vm_dump.c: move codes for collection features to vm.c.
+Sun Jun 12 20:36:30 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * vm_exec.h: rename macro and function names.
+ * ext/date/date_core.c: edited doc.
- * vm_insnhelper.h: ditto.
+Sun Jun 12 18:12:07 2011 Koichi Sasada <ko1@atdot.net>
-Thu Oct 4 18:59:14 2012 Koichi Sasada <ko1@atdot.net>
+ * benchmark/bm_vm3_clearmethodcache.rb: added.
- * test/ruby/test_settracefunc.rb (test_tracepoint):
- remove unused test case.
- (this test case is redefined by newer tests)
+Sun Jun 12 17:40:29 2011 Koichi Sasada <ko1@atdot.net>
-Thu Oct 4 17:24:51 2012 Narihiro Nakamura <authornari@gmail.com>
+ * vm_method.c (rb_clear_cache*): update only vm state version.
- * gc.c (rb_objspace_call_finalizer): call gc_mark_stacked_objects
- at suitable point.
+ * vm_method.c (rb_method_entry_get_without_cache, rb_method_entry):
+ Fill method cache entry with vm state version, and
+ check current vm state version for method (cache) look up.
+ This modification speed-up invalidating of global method cache table.
+ [Ruby 1.9 - Feature #3905] [ruby-core:36908]
-Thu Oct 4 16:31:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Jun 12 16:19:48 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * gc.c (rb_objspace_call_finalizer): mark self-referencing finalizers
- before run finalizers, to fix SEGV from btest on 32bit.
+ * ext/tk/extconf.rb: fail on Mac OS X. [Bug #4853][ruby-dev:43655]
- * gc.c (gc_mark_stacked_objects): extract from gc_marks().
+Sun Jun 12 15:56:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Thu Oct 4 11:43:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * thread.c: remove th->transition_for_lock. It's thread unsafe.
+ [Bug #4723][ruby-dev:43563]
- * thread_pthread.c (ruby_init_stack): round stack limit to page size
- boundary to calculate stack size more precisely. [ruby-dev:46174]
- [Bug #7084]
+Sun Jun 12 15:47:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Oct 3 19:51:57 2012 Narihiro Nakamura <authornari@gmail.com>
+ * thread.c: introduce spurious wakeup safe deadlock check.
+ [Bug #4696][ruby-dev:43554]
- * gc.c: Use the non-recursive marking instead of recursion. The
- recursion marking of CRuby needs checking stack overflow and the
- fail-safe system, but these systems not good at partial points,
- for example, marking deep tree structures. [ruby-dev:46184]
- [Feature #7095]
+Sun Jun 12 13:33:52 2011 Koichi Sasada <ko1@atdot.net>
- * configure.in (GC_MARK_STACKFRAME_WORD): removed. It's used by
- checking stack overflow of marking.
+ * benchmark/bm_vm3_thread_mutex.rb: remove it.
- * win32/Makefile.sub (GC_MARK_STACKFRAME_WORD): ditto.
+ * benchmark/bm_vm3_thread_mutex[1-3].rb: added 3 benchmarks.
+ 1: one thread with one mutex (no contention).
+ 2: two threads with one mutex (contention).
+ 3: 1000 threads with one mutex (huge number of contention)
+ Above removed benchmark was type 3.
+ Therefore, this commit adds type 1 and 2 benchmark.
-Wed Oct 3 15:33:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Jun 12 11:16:59 2011 Tanaka Akira <akr@fsij.org>
- * thread_pthread.c (ruby_init_stack): use getrlimit() for the main
- thread on Mac OS X, since pthread_get_stack{addr,size}_np()
- return the default value always, but not the ulimit value.
- [ruby-dev:46174] [Bug #7084]
+ * io.c: use select() appropriately for sendfile().
+ Fixed by Eric Wong. [ruby-core:36150]
+ (maygvl_copy_stream_wait_readwrite): removed.
+ (nogvl_copy_stream_sendfile): use nogvl_copy_stream_wait_write and
+ maygvl_copy_stream_wait_read instead of
+ maygvl_copy_stream_wait_readwrite.
-Wed Oct 3 11:43:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Jun 12 09:32:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (rb_io_reopen): improvement to accept optional arguments.
- a patch by Glass_saga (Masaki Matsushita) in [ruby-core:47806].
- [Feature #7103]
+ * atomic.h (ATOMIC_OR): _InterlockedOr is not available on mingw.h
+ * gc.c (rb_gc_set_params): VM_OBJSPACE is disabled on mingw.
-Wed Oct 3 04:36:11 2012 Eric Hodel <drbrain@segment7.net>
+Sun Jun 12 01:07:09 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * ext/openssl/ossl_x509store.c (ossl_x509store_add_file): Added
- documentation
- * ext/openssl/ossl_x509store.c (ossl_x509store_set_default_paths):
- ditto
- * ext/openssl/ossl_x509store.c (ossl_x509store_add_cert): ditto
+ * ext/date/date_core.c: edited doc.
-Wed Oct 3 02:23:37 2012 Shugo Maeda <shugo@ruby-lang.org>
+Sat Jun 11 23:18:00 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * error.c (exc_to_s, name_err_to_s, name_err_mesg_to_str): do not
- taint messages.
+ * vm_core.h (RUBY_VM_SET_TIMER_INTERRUPT, RUBY_VM_SET_INTERRUPT,
+ RUBY_VM_SET_FINALIZER_INTERRUPT): use atomic ops for preventing
+ interrupt_flag bit lost. [Bug #4770][ruby-dev:43467]
+ * thread.c (rb_threadptr_execute_interrupts_rec): ditto.
+ * vm_core.h (typedef struct rb_thread_struct): change type of
+ interrupt_flag to rb_atomic_t.
+ * atomic.h: move atomic ops definition from signal.c.
+ * signal.c: remove atomic ops definition.
+ * common.mk (gc, signal, thread, cont): add to dependency to atomic.h.
-Tue Oct 2 16:47:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Jun 11 23:23:52 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * eval.c (identity_hash_new): hide internal hashes for refinements.
+ * ext/date/date_core.c: edited doc.
- * eval.c (rb_mod_refine): no default value.
+Sat Jun 11 23:02:36 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-Mon Oct 1 22:54:02 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * ext/openssl/lib/openssl/buffering.rb (module OpenSSL):
+ Buffering#each_byte should return String in accordance with IO in
+ 1.9.
- * eval.c (identity_hash_new): new function to create a new identity
- hash.
+ * test/openssl/test_buffering.rb (class OpenSSL): add tests for getc
+ and each_byte.
- * eval.c (rb_overlay_module, rb_mod_using, rb_mod_refine): use
- identity_hash_new().
+Sat Jun 11 22:41:37 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Mon Oct 1 02:34:53 2012 Akinori MUSHA <knu@iDaemons.org>
+ * time.c: a correction of doc for strftime (%v).
- * configure.in (--with-opt-dir): Make this also work on DLDFLAGS
- so LIBRUBY_SO links fine with libexecinfo installed in a
- non-system directory.
+Sat Jun 11 22:30:53 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Sun Sep 30 23:32:00 2012 Kenta Murata <mrkn@mrkn.jp>
+ * ext/date/date_core.c: replaced doc for strftime based on Time's one.
- * vm_dump.c (rb_vm_bugreport): add /Library/Logs/DiagnosticReports
- in the list of locations of crash reports.
+Sat Jun 11 22:07:56 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Sun Sep 30 21:18:03 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/date/date_core.c (datetime_s_{iso8601,rfc3339,xmlschema,rfc2822,httpdate}):
+ do not take argument comp.
- * string.c (rb_str_concat): use memcpy to copy a string which contains
- NUL characters. [ruby-core:47751] [Bug #7090]
+Sat Jun 11 21:58:31 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Sat Sep 29 19:41:53 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * ext/date/date_core.c: added examples.
- * test/ruby/envutil.rb (EnvUtil#invoke_ruby): kill child process
- before Timeout::Error is raised. rmdir of mktmpdir fails with
- EACCES if child process is alive on Windows.
+Sat Jun 11 19:40:45 2011 Narihiro Nakamura <authornari@gmail.com>
- * test/thread/test_queue.rb (TestQueue): increase timeout.
- This test takes long time on Windows XP.
+ * gc.c: expand heap if initial_heap_min_slots is bigger than
+ HEAP_MIN_SLOTS.
-Sat Sep 29 19:41:33 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Sat Jun 11 19:42:50 2011 WATANABE Hirofumi <eban@ruby-lang.org>
- * test/net/http/test_http.rb (TestNetHTTP#test_proxy_address):
- clear environment variables. If http_proxy environment variable was
- set, the test failed.
+ * ChangeLog (vim): set shiftwidth to 2.
- * test/net/http/test_http.rb (TestNetHTTP#test_proxy_port): ditto.
+Sat Jun 11 19:27:06 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-Sat Sep 29 19:41:11 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * ext/openssl/ossl_x509req.c: raise RequestError instead of
+ CertificateError when Request#to_der gets an error from OpenSSL.
+ Patch from Ippei Obayashi, see #4420. I cannot write a test for
+ this... Request does not allow to create broken bytes...
- * test/drb/drbtest.rb (DRbCore#teardown):
- Use Process.kill :KILL on Windows because Process.kill :INT silently
- fails on Windows 7 and raises EINVAL on Windows XP for spawned
- process with new_pgroup: false.
+Sat Jun 11 19:34:51 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * test/drb/drbtest.rb (DRbAry#teardown): ditto.
+ * ext/date/date_core.c (Date::(ABBR_)?(MONTH|DAY)NAMES): should be usascii.
-Sat Sep 29 19:40:32 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Sat Jun 11 19:24:33 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * test/ruby/test_unicode_escape.rb (TestUnicodeEscape#test_basic):
- set script encoding to work with LANG=C. It would work on both
- Windows and Unix. Refix of r37051.
+ * ext/date/date_core.c: rewrote doc.
-Sat Sep 29 11:21:06 2012 Shugo Maeda <shugo@ruby-lang.org>
+Sat Jun 11 19:04:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm_insnhelper.c (rb_vm_using_modules): use using_modules before
- klass to fix method lookup order, and use klass even if klass is
- not a module to make refinements in class_eval invoked on classes
- work.
+ * lib/test/unit.rb (Test::Unit::GlobOption#non_options): should run
+ with 1.8.
- * eval.c (rb_using_module): accept a class as the second argument.
+Sat Jun 11 18:05:57 2011 WATANABE Hirofumi <eban@ruby-lang.org>
- * eval.c (rb_mod_using, f_using): raise a TypeError if the argument
- is not a module.
+ * bootstraptest/runner.rb: should initialize $stress to avoid warnings.
- * test/ruby/test_refinement.rb: add new tests for the above changes.
+Sat Jun 11 18:02:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Sep 29 02:18:57 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * io.c (io_getc): should be 7bit if ascii. fixes #4557
- * test/ruby/test_unicode_escape.rb (TestUnicodeEscape#test_basic):
- Use ruby only on Windows since the test fails on Unix with LANG=C.
- [ruby-core:47709] [Bug #7076]
+Sat Jun 11 16:52:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Sep 28 22:19:31 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * numeric.c (rb_enc_uint_chr): fix message format. Bug#4869
- * test/ruby/test_unicode_escape.rb (TestUnicodeEscape#test_basic):
- echo command doesn't work properly against non-ascii character on
- Windows with chcp 437. Instead we use ruby.
- [ruby-core:47709] [Bug #7076]
+Sat Jun 11 16:28:25 2011 Kouhei Sutou <kou@cozmixng.org>
-Fri Sep 28 17:54:31 2012 Koichi Sasada <ko1@atdot.net>
+ * lib/rexml/formatters/pretty.rb
+ (REXML::Formatters::Pretty#write_text),
+ test/rexml/test_core.rb
+ (Tester#test_pretty_format_long_text_finite): don't ignore
+ 'width' parameter in pretty formatter. fixes #4498
+ Reported by Michael Frasca. Thanks!!!
- * vm_insnhelper.c (vm_setup_method): refactoring.
- Remove src_argc and use iseq->arg_size directly.
+Sat Jun 11 16:11:36 2011 Kouhei Sutou <kou@cozmixng.org>
-Fri Sep 28 17:26:27 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/rexml/test_core.rb
+ (Tester#test_pretty_format_long_text_finite): remove needless
+ assert_nothing_raised.
- * lib/rubygems/installer.rb (check_that_user_bin_dir_is_in_path):
- test_generate_bin_bindir_with_user_install_warning(TestGemInstaller)
- fails on Windows with msys bash. It makes comparing paths
- case-insensitive.
- pick from upstream to fix a failure of test-all [ruby-core:47711]
- https://github.com/rubygems/rubygems/commit/c474edb2f3704206f04da1c8c6cf9fb079d84abe
+Sat Jun 11 16:04:03 2011 Kouhei Sutou <kou@cozmixng.org>
-Fri Sep 28 15:44:45 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * lib/rexml/parsers/xpathparser.rb
+ (REXML::Parsers::XPathParser#parse),
+ test/rexml/test_elements.rb
+ (ElementsTester#test_each_with_frozen_condition):
+ don't modify original XPath. fixes #4161
+ Reported by Pavel Shved. Thanks!!!
- * vm_method.c (search_method): copy refinement iclasses to search
- superclasses correctly.
+Sat Jun 11 15:53:27 2011 Kouhei Sutou <kou@cozmixng.org>
- * test/ruby/test_refinement.rb: related test.
+ * test/rexml/test_elements.rb (ElementsTester): remove needless
+ prefix from test name.
-Fri Sep 28 15:15:41 2012 Koichi Sasada <ko1@atdot.net>
+Sat Jun 11 15:36:36 2011 Martin Duerst <duerst@it.aoyama.ac.jp>
+ * common.mk: fixed a grammatical error
- * insns.def (opt_checkenv): remove unused instruction `opt_checkenv'.
+Sat Jun 11 14:20:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * compile.c (iseq_compile_each): ditto.
+ * vm.c (thread_memsize): don't ignore size of th->local_storage.
- * node.h: remove unused node `NODE_OPTBLOCK'.
+Sat Jun 11 10:32:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/objspace/objspace.c, gc.c (gc_mark_children): ditto.
+ * lib/mkmf.rb: should quote arch_hdrdir and libpath for the case
+ installed prefix contains spaces.
-Fri Sep 28 13:14:34 2012 Koichi Sasada <ko1@atdot.net>
+Sat Jun 11 10:20:52 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm_core.h: now VM_DEBUG_BP_CHECK should be 1.
+ * thread_pthread.c (native_cond_timeout): wrap conditionally used
+ label.
-Fri Sep 28 12:51:54 2012 Koichi Sasada <ko1@atdot.net>
+ * thread_pthread.c (native_sleep): remove unused variable.
- * vm_core.h: remove rb_control_frame_t::bp (bp: base pointer).
- `bp' can be calculate by `sp' (stack pointer) of previous frame.
- Now, `bp_check' field is remained for debug. You can eliminate
- this field by setting VM_DEBUG_BP_CHECK as 0.
+Sat Jun 11 10:15:50 2011 Tanaka Akira <akr@fsij.org>
- * vm_insnhelper.c (vm_base_ptr): add `vm_base_ptr(cfp).
- This function calculates base pointer from cfp.
+ * thread.c (rb_thread_execute_interrupts): use GetThreadPtr to extract
+ rb_thread_t from VALUE.
+ reported by Motohiro KOSAKI. [ruby-dev:43700]
- * vm_insnhelper.c (vm_setup_method): push `recv' value on top of
- value stack (before method parameters).
- This change is for keeping consistency with normal method dispatch.
+Sat Jun 11 10:00:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * insns.def: fix to use vm_base_ptr().
+ * ruby.c (ruby_process_options): add missing return type.
- * vm.c (vm_exec): ditto.
+Fri Jun 10 23:18:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * vm_dump.c: remove `bp' related dumps.
+ * ext/tk/tcltklib.c (lib_eventloop_core): replace CHECK_INTS with
+ rb_thread_check_ints(). Because current code can't be compiled.
- * cont.c (fiber_init): fix to check VM_DEBUG_BP_CHECK.
+Fri Jun 10 16:38:13 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Fri Sep 28 10:40:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * encoding.c (rb_locale_charmap): When ruby process is run as Windows
+ Service the console codepage is not set, GetConsoleCP returns 0.
+ So on such environment, use GetACP().
+ http://blogs.msdn.com/b/michkap/archive/2005/02/08/369197.aspx
+ patched by Rafal Bigaj [ruby-core:36832] [Bug #4854]
- * io.c (rb_io_reopen): accept File::Constants as well as mode string.
- based on the patch by Glass_saga (Masaki Matsushita) in
- [ruby-core:47694]. [Feature #7067]
+Fri Jun 10 14:34:24 2011 Koichi Sasada <ko1@atdot.net>
-Thu Sep 27 18:36:51 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * common.mk: restore TESTRUN_SCRIPT to "$(srcdir)/test.rb".
+ TESTRUN_SCRIPT is used by "make run", "make gdb" and so on.
- * eval.c (rb_overlay_module, rb_mod_refine): accept a module as the
- argument of Module#refine.
+Fri Jun 10 13:01:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm_method.c (search_method): if klass is an iclass, lookup the
- original module of the iclass in omod in order to allow
- refinements of modules.
+ * test/ruby/test_module.rb (TestModule#remove_rake_mixins): remove all
+ module related to Rake.
- * test/ruby/test_refinement.rb: add tests for the above changes.
+Fri Jun 10 09:52:38 2011 Eric Hodel <drbrain@segment7.net>
-Thu Sep 27 18:12:20 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * encoding.c: Mention that Encoding.compatible? can work with more
+ than just Strings.
- * ext/syslog/lib/syslog/logger.rb: add a formatter to the
- Syslog::Logger object. [Bug #7065]
- * test/syslog/test_syslog_logger.rb: ditto.
+Fri Jun 10 02:25:53 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Wed Sep 26 16:39:57 2012 Koichi Sasada <ko1@atdot.net>
+ * ext/psych/lib/psych.rb: updating version to match released gem.
- * insns.def: add new instruction `opt_empty_p' for optimize `empty?'
- method. Apply a patch proposed at [ruby-dev:46120]
- [ruby-trunk - Feature #6972] by Glass_saga (Masaki Matsushita).
+Fri Jun 10 01:06:29 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * compile.c (iseq_specialized_instruction), vm.c, vm_insnhelper.h:
- ditto.
+ * ext/bigdecimal (BigDecimal_to_i): Integer#** may return flonum.
- * id.c, template/id.h.tmpl: ditto.
+Fri Jun 10 00:35:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * test/ruby/test_optimization.rb: test for this changes.
+ * complex.c (string_to_c_internal): uses rb_reg_nth_match;
+ * rational.c (string_to_r_internal): ditto.
-Tue Sep 25 09:59:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jun 10 00:25:03 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * insns.def (invokesuper): klass in cfp is not valid in at_exit and
- END blocks. [ruby-core:47680] [Bug #7064]
+ * gc.c: remove an unused declaration.
-Tue Sep 25 08:11:11 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Jun 10 00:24:04 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * iseq.c (rb_iseq_defined_string): the index of defined_strings must
- be the value of type - 1.
+ * rational.c (string_to_r): Rational#** may return flonum.
-Mon Sep 24 17:36:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Jun 9 23:57:53 2011 Tanaka Akira <akr@fsij.org>
- * compile.c (defined_expr), insns.def (defined): share single frozen
- strings. [EXPERIMENTAL] [ruby-core:47558][Feature #7035]
+ * io.c: fix IO.copy_stream interrupt handling.
+ based on the patch by Eric Wong. [ruby-core:36156]
- * iseq.c (rb_iseq_defined_string): make expression strings.
+ * vm_core.h (rb_thread_call_with_gvl): don't declare here.
-Mon Sep 24 11:22:36 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * thread.c: include internal.h.
+ (rb_thread_execute_interrupts): new function.
- * tool/merger.rb: add --ticket option to add ticket number.
+ * internal.h (rb_thread_execute_interrupts): declared.
+ (rb_thread_call_with_gvl): declared.
-Sun Sep 23 21:51:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Jun 9 23:34:01 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * lib/mkmf.rb (String#unspace): unescape with backslashes. normal
- makes need to escape spaces with backslashes. nmake is not the
- case. [Bug #7036]
+ * gc.c (rb_objspace_call_finalizer): use rb_typeddata_is_kind_of() for
+ type check to get rid of a double free when main Thread has singleton
+ class. [ruby-core:36741] [Bug #4828]
+ * thread.c (rb_obj_is_mutex): add a new utility function.
+ * vm.c (rb_obj_is_thread): ditto.
- * lib/mkmf.rb (create_makefile): use timestamp file dependencies for
- directories.
+Thu Jun 9 22:53:49 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * lib/mkmf.rb: unexpand macros.
+ * test/ruby/test_thread.rb (TestThread#test_kill_thread_subclass):
+ add test for Thread.kill with Thread subclass instance.
- * lib/mkmf.rb (LIBPATHFLAG): no needs to escape library path here.
+Thu Jun 9 22:31:47 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * lib/mkmf.rb (MakeMakefile#configuration): make prefix paths
- internal to deal with in Makefile.
+ * test/ruby/test_thread.rb (TestThread#test_kill_wrong_argument):
+ test for [ruby-core:35086].
+ partially forward porting r31402 from ruby_1_9_2 branch.
- * lib/mkmf.rb (MakeMakefile#mkintpath): not a global function now.
+Thu Jun 9 18:36:00 2011 Kenta Murata <mrkn@mrkn.jp>
-Sun Sep 23 02:33:37 2012 Benoit Daloze <eregontp@gmail.com>
+ * string.c: Fix the ambiguous description of the behavior of
+ rb_str_aref_m with a range. It returns nil when the beginning of
+ the range is greater than the end of the string rather than the range.
- * complex.c: Fix examples of r36993.
- Keep the simple definition, mathematics define the result.
- Based on patch by Robin Dupret. Fixes #188 on github.
+Thu Jun 9 10:57:03 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Sat Sep 22 07:15:00 2012 Zachary Scott <zzak@ruby-lang.org>
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Hash subclasses can be read
+ from YAML files.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Hash subclasses can be
+ dumped to YAML files.
+ * test/psych/test_hash.rb: corresponding test.
- * ext/ripper/lib/ripper.rb:
- Match sample output to Ripper.sexp from current trunk version.
- [Bug #6929]
+Thu Jun 9 09:18:51 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Thu Sep 20 23:05:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Ruby modules can be loaded
+ from YAML files.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Ruby modules can be
+ dumped to YAML files.
+ * test/psych/test_class.rb: corresponding test.
- * thread_pthread.c (native_cond_initialize): destroy condattr
- after using it. Patch by Stanislav Sedov. Thank you.
- [Bug #7041] [ruby-core:47619]
+Thu Jun 9 09:05:04 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Thu Sep 20 22:53:02 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/psych/lib/psych/visitors/to_ruby.rb: Ruby classes can be loaded
+ from YAML files.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Ruby classes can be
+ dumped to YAML files.
+ * test/psych/test_class.rb: corresponding test.
- * thread_pthread.c (native_cond_initialize): clean up #ifdef condition.
+Wed Jun 8 21:38:57 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Thu Sep 20 16:42:44 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * cont.c (root_fiber_alloc): set root fiber's status RUNNING.
+ in cont_mark() only RUNNING fiber's machine stack is marked.
+ root fiber's status should be RUNNING at the beginning regardless of
+ FIBER_USE_NATIVE. [ruby-core:36735] fixes #4827
- * lib/drb/ssl.rb (DRb::DRbSSLSocket::SSLConfig::DEFAULT): add
- SSLTmpDhCallback for configuration option.
+Tue Jun 7 20:50:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/drb/ssl.rb (setup_ssl_context): copy the value of tmp_dh_callback.
+ * doc/irb/irb.rd: fix typo. patch by Nobuhiro IMAI.
+ [Bug #4843] [ruby-dev:43639]
+ * doc/irb/irb.rd.ja: ditto.
+ * doc/ChangeLog-YARV: ditto.
- * test/drb/ut_array_drbssl.rb: set tmp_dh_callback to suppress warning.
+Tue Jun 7 18:52:55 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * test/drb/ut_drb_drbssl.rb: ditto.
+ * lib/rubygems/user_interaction.rb (Gem::StreamUI#tty?): IO#tty? of
+ Windows has been fixed at r29969.
-Thu Sep 20 10:56:08 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/rubygems/test_gem_stream_ui.rb: now can run tests.
- * test/drb/ut_drb.rb: revert a part of r36987, and get rid of a warning
- with another method. if the substitution is removed, the ExtSrv
- object will be GC'ed and some tests will be blocked.
+Tue Jun 7 18:36:41 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Thu Sep 20 07:20:00 2012 Zachary Scott <zzak@ruby-lang.org>
+ * test/rubygems/test_gem.rb (TestGem#{test_self_user_home_userprofile,
+ test_self_user_home_user_drive_and_path}): should simply ignore
+ meaningless tests instead of skipping them.
- * complex.c: Examples for Complex Documentation.
- Patch by Robin Dupret.
- Fixes #184 on github.
+Tue Jun 7 18:15:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Thu Sep 20 07:15:00 2012 Zachary Scott <zzak@ruby-lang.org>
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
+ should show some messages when skipping tests.
- * ext/ripper/lib/ripper.rb: Documentation for Ripper.
- +:void_stmt+ is meaningless
- [Bug #6929] [ruby-core:47507]
+Tue Jun 7 13:59:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Sep 20 07:05:00 2012 Zachary Scott <zzak@ruby-lang.org>
+ * ext/date/date_core.c (date_s_today, datetime_s_now): check the
+ result of localtime_r().
- * lib/csv.rb (Object#CSV, Array#to_csv, String#parse_csv):
- Examples and documentation for CSV.
- [Bug #6880] [ruby-core:47218]
+Tue Jun 7 13:36:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Sep 20 00:42:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/tk/extconf.rb: use $defs not $CPPFLAGS to get rid of
+ command line escape issues on Windows. fixed #4835.
- * array.c (take_items), enum.c (enum_zip): raise TypeError at
- non-enumerable objects, not NoMethodError. [ruby-dev:46145]
- [Bug #7038]
+Tue Jun 7 03:18:45 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * vm_eval.c (rb_check_block_call): check_funcall variant with block
- function.
+ * test/ruby/test_io.rb (TestIO#test_s_{,bin}write): do not create a
+ file under /tmp. [Bug #4846]
-Tue Sep 18 17:51:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Jun 6 22:51:43 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * ext/openssl/ossl_ssl.c (ossl_sslctx_attrs): add npn_select_db to
- suppress warning: instance variable @npn_select_cb not initialized
+ * cont.c: use #if FIBER_USE_NATIVE instead of #ifdef.
+ you can suppress use of setcontext for Fiber with compile option
+ -DFIBER_USE_NATIVE=0
-Sun Sep 16 17:47:00 2012 Eric Hodel <drbrain@segment7.net>
+Mon Jun 6 21:59:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * tool/change_maker.rb: Update svn detection for subversion 1.7's
- single .svn directory.
+ * test/date/test_switch_hitter.rb: added a test.
-Sun Sep 16 11:39:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jun 6 21:37:45 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * io.c (io_set_read_length): if the read length equals to the buffer
- string size then nothing to do. or ensure the string modifiable
- before setting the length only when the former is shorter. based on
- the patch in [ruby-core:47541] by Hiroshi Shirosaki.
- [ruby-core:46586] [Bug #6764]
+ * ext/date/date_core.c: added notes.
-Sun Sep 16 08:57:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jun 6 21:02:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * configure.in (strict_warnflags): separate strict flags from
- warnflags only for core. [ruby-dev:46105]
+ * ext/date/date_core.c: flattened format to strftimev.
+ * ext/date/date_core.c (date_strftime_internal): taints run.
-Sun Sep 16 08:16:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jun 6 15:10:17 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * .editorconfig: add. [ruby-core:47548] [Feature #7030]
+ * include/ruby/{defines,missing}.h (rb_infinity, rb_nan): move from
+ defines.h to missing.h. (couldn't use RUBY_EXTERN there.)
-Sat Sep 15 01:56:40 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Jun 6 14:35:48 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/nkf/nkf-utf8/nkf.c: Merge upstream: 50a383c84.
- [ruby-dev:46128] [Bug #7005]
+ * test/rdoc/test_rdoc_markup_pre_process.rb (TestRDocMarkupPreProcess#
+ {test_include_file,test_include_file_encoding_incompatible}): no
+ need to write such workaround. don't hide the bug of ruby. (and the
+ bug is already fixed.)
-Sat Sep 15 00:20:04 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Jun 6 14:11:11 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/nkf/nkf.c (rb_nkf_convert): suppress warning.
+ * ext/date/date_core.c (valid_jd_sub): need to convert from VALUE to
+ double.
-Fri Sep 14 04:05:00 2012 Zachary Scott <zzak@ruby-lang.org>
+ * ext/date/date_core.c (offset_to_sec): get rid of a compiler warning.
- * array.c (rb_ary_diff, rb_ary_uniq):
- Enhance documentation for array uniqueness
- Based on a patch by Robin Dupret
- [Bug #6872] [ruby-core:47209]
+Mon Jun 6 14:09:08 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Fri Sep 14 03:30:00 2012 Zachary Scott <zzak@ruby-lang.org>
+ * include/ruby/defines.h (rb_infinity, rb_nan): export for Windows.
- * array.c (rb_ary_select):
- Update documentation for Array#select
- * enum.c (enum_find_all, enum_reject):
- Update documentation for Enumerable#find_all and Enumerable#reject
- Based on a patch by Jeff Saracco
- [Bug #6908] [ruby-core:47285] [Fixes #166 on github]
+Mon Jun 6 10:54:45 2011 Shota Fukumori <sorah@tubusu.net>
-Fri Sep 14 00:20:00 2012 Zachary Scott <zzak@ruby-lang.org>
+ * lib/test/unit.rb(Test::Unit::Runner#puke):
+ Add overriding from MiniTest::Unit#puke. This reverts minitest's fix
+ that skip messages are hidden when not verbose mode (-v option).
+ To hide skip messages, use --hide-skip option instead.
- * signal.c (rb_f_kill):
- Update documentation for Process.kill to reflect kill(2)
- Patch by Richo Healey
+Mon Jun 6 10:52:13 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Sep 13 21:40:49 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * lib/net/http.rb: don't use autoload.
- * lib/securerandom.rb (SecureRandom.random_bytes):
- Use 64bit value as pointer for Windows x64 to fix SystemCallError.
+Mon Jun 6 09:39:43 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * lib/securerandom.rb (SecureRandom.lastWin32ErrorMessage):
- Set proper encoding to avoid invalid byte sequence error.
- [ruby-core:47451] [Bug #6990]
+ * ext/psych/parser.c (parse): release event objects to plug memory
+ leak. Thanks Mark J. Titorenko!
-Thu Sep 13 11:20:00 2012 Zachary Scott <zzak@ruby-lang.org>
+Sun Jun 5 23:26:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/optparse.rb: Remove unreachable email address from documentation
- [Bug #6996] [ruby-core:47459]
+ * eval.c: remove rb_thread_stop_timer_thread function declaration.
+ Instead, include vm_core.h.
+ * process.c: ditto.
-Thu Sep 13 11:20:00 2012 Zachary Scott <zzak@ruby-lang.org>
+Sun Jun 5 21:38:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/xmlrpc.rb: Documentation for XMLRPC
- * lib/xmlrpc/datetime.rb: ditto.
- * lib/xmlrpc/parser.rb: ditto.
- * lib/xmlrpc/client.rb: ditto.
- * lib/xmlrpc/utils.rb: ditto.
- * lib/xmlrpc/README.rdoc: ditto.
- * lib/xmlrpc/create.rb: ditto.
- * lib/xmlrpc/base64.rb: ditto.
- * lib/xmlrpc/config.rb: ditto.
- * lib/xmlrpc/httpserver.rb: ditto.
- * lib/xmlrpc/server.rb: ditto.
- * lib/xmlrpc/marshal.rb: ditto.
- * lib/xmlrpc/README.txt: ditto.
- [Bug #6909] [ruby-core:47286]
+ * thread_pthread.c (thread_timer): add to care a spurious wakeup.
+ When native_cond_timedwait() return 0 by spurious wakeup, we
+ don't have to neither 1) call timer_thread_function and 2)
+ exit the timer thread.
-Thu Sep 13 10:22:11 2012 Takashi Toyoshima <toyoshim@gmail.com>
+Sun Jun 5 17:50:01 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * configure.in: Don't use PIE on Haiku because loader support is not
- enough.
+ * ext/date/date_core.c (m_real_cwyear): new. derived from m_cwyear.
+ * ext/date/date_strftime.c: trivial changes.
-Thu Sep 13 08:20:00 2012 Zachary Scott <zzak@ruby-lang.org>
+Sun Jun 5 17:22:01 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * lib/shellwords.rb: Documentation for Shellwords.
+ * ext/tk/config_list.in: add new options for tcltklib.
-Thu Sep 13 08:00:00 2012 Zachary Scott <zzak@ruby-lang.org>
+Sun Jun 5 10:06:50 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * ext/ripper/lib/ripper.rb: Documentation for Ripper.
- * ext/ripper/lib/ripper/lexer.rb: ditto.
- * ext/ripper/lib/ripper/sexp.rb: ditto.
- * ext/ripper/lib/ripper/filter.rb: ditto.
- * ext/ripper/lib/ripper/core.rb: ditto.
- [Bug #6929] [ruby-core:47309]
+ * ext/date/date_tmx.h: now does not place decoded data. allows to
+ access indirectly via functions on demand.
+ * ext/date/date_strftime.c: ditto.
+ * ext/date/date_core.c: ditto.
+ * ext/date/date_core.c ({d|dt}_lite_to_s): use strftime.
-Wed Sep 12 22:59:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Jun 5 06:22:02 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * vm_insnhelper.c (vm_method_missing, vm_call_method): reuse arguments
- on the VM stack and get rid of ALLOCA.
+ * NEWS: wrote about changes of date.
-Wed Sep 12 22:45::00 2012 Zachary Scott <zzak@ruby-lang.org>
+Sat Jun 4 16:59:26 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * ext/pathname/lib/pathname.rb: Documentation for Pathname.
- * ext/pathname/pathname.c: ditto.
- [Bug #6947] [ruby-core:47354]
+ * ext/date/date_core.c (d_lite_inspect): changed the format.
+ * ext/date/date_core.c: refactoring and fixing some bugs.
-Mon Sep 10 10:19:34 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Sat Jun 4 04:04:41 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * enc/depend: fixed wrong change in a part of r34802.
+ * test/rubygems/test_gem_commands_which_command.rb:
+ "missing" exists on ruby's top source directory. [Bug #4815]
-Sun Sep 9 22:02:50 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Jun 3 21:48:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/socket/basicsocket.c (rsock_bsock_send):
- avoid unnecessary select() calls before doing I/O
- Patch by Eric Wong. [Feature #4538] [ruby-core:35586]
- * ext/socket/init.c (rsock_s_recvfrom): ditto.
- * ext/socket/init.c (rsock_s_accept): ditto.
- * ext/socket/udpsocket.c (udp_send): ditto.
- * io.c (io_fflush): ditto.
- * io.c (io_binwrite): ditto.
- * io.c (rb_io_syswrite): ditto.
+ * lib/rubygems/test_case.rb: Refix for test-all in separate directory.
+ r31147 + r31151.
-Mon Sep 10 01:38:51 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Jun 3 20:58:47 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * io.c (nogvl_close, maygvl_close, nogvl_fclose, maygvl_fclose):
- suppress integer <-> pointer cast warnings.
- [Feature #4570] [ruby-core:35711]
+ * ext/date/date_core.c (d_lite_plus): get rid of compiler warnings.
-Mon Sep 10 01:36:00 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Jun 3 20:56:40 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * io.c (rb_io_close): notify fd close before releasing gvl.
- * io.c (fptr_finalize): modify fptr->mode before releasing gvl.
- remove unnecessary rb_thread_fd_close().
- [Feature #4570] [ruby-core:35711]
+ * include/ruby/missing.h, numeric.c (round): moved prototype of round()
+ from numeric.c to missing.h. (note: round() is C99 feature, so ruby
+ provides it if not exist in C runtime.)
-Mon Sep 10 00:16:34 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Jun 3 20:42:04 2011 Shota Fukumori <sorah@tubusu.net>
- * process.c: exec() requires to be single threaded also on Haiku.
- by Takashi Toyoshima <toyoshim@gmail.com>
- https://github.com/ruby/ruby/pull/178
+ * lib/test/unit/parallel.rb: Keep $stdin, $stdout before run testcase
+ and restore after run. Because some test break $stdin, $stdout.
+ Fixes [Bug #4433] [ruby-core:35353]
-Sun Sep 9 21:21:15 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Jun 3 19:58:14 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/thread.rb (Queue#pop): Fixed double registration issue when
- mutex.sleep is interrupted. [Bug #5258] [ruby-dev:44448]
- * lib/thread.rb (SizedQueue#push): ditto.
+ * io.c (io_fflush): windows -- call fsync() only when the FD is tied to
+ file, because if the FD is pipe, it blocks.
- * test/thread/test_queue.rb (test_sized_queue_and_wakeup,
- test_queue_pop_interrupt, test_sized_queue_pop_interrupt,
- test_sized_queue_push_interrupt): new tests.
+Fri Jun 3 09:27:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Sep 9 20:20:31 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * lib/net/http.rb (URI::HTTP#request_uri): return nil when the uri
+ is path-rootless form. Bug #4759
- * lib/sync.rb (Sync_m#sync_lock): Fixed wakeup/raise unsafe code.
- Patched by Masaki Matsushita. [Bug #5355] [ruby-dev:44521]
+Thu Jun 2 23:51:03 2011 James Edward Gray II <jeg2@ruby-lang.org>
- * test/thread/test_sync.rb (test_sync_lock_and_wakeup,
- test_sync_upgrade_and_wakeup, test_sync_lock_and_raise):
- new test.
+ * lib/csv.rb: Improve the line ending detection algorithm
+ patch by Alexey).
-Sun Sep 9 18:39:46 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Thu Jun 2 20:05:57 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * include/ruby/intern.h (rb_thread_blocking_region): Added
- a comment of recommended alternative way.
+ * io.c (rb_io_s_write, rb_io_s_binwrite): return!!!
-Sun Sep 9 18:37:05 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Thu Jun 2 16:29:34 2011 Shota Fukumori <sorah@tubusu.net>
- * lib/sync.rb (Sync_m): Removed RCS_ID.
+ * io.c: Add File.write, File.binwrite. [Feature #1081] [ruby-core:21701]
-Sun Sep 9 18:21:03 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/ruby/test_io.rb: Test for File.write, File.binwrite.
- * test/ruby/test_io.rb (test_advise_pipe): new test to check
- io.advise() against anonymous io object don't make crash.
- made by Eric Wong. [Bug #6081] [ruby-core:42880]
+ * NEWS: News for above.
-Sun Sep 9 16:47:12 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Thu Jun 2 12:33:09 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * io.c (nogvl_close, maygvl_close, nogvl_fclose, maygvl_fclose):
- new functions.
- * io.c (fptr_finalize): release GVL if possible.
- Patched by Eric Wong. [Feature #4570] [ruby-core:35711]
+ * io.c (io_fflush, rb_io_flush): need to fsync() when ruby calls
+ internal flush. [ruby-core:36670] [Bug #4813]
-Sun Sep 9 16:08:48 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Thu Jun 2 07:56:24 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * io.c (io_bufread): removed unnecessary rb_thread_wait_fd().
- Patch by Eric Wong. [Bug #6629] [ruby-core:45789]
- * io.c (rb_io_sysread): ditto.
- * io.c (copy_stream_fallback_body): ditto.
+ * ext/tk/tcltklib.c: reduce CPU power required by an eventloop.
-Sun Sep 9 15:21:52 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue May 31 21:28:33 2011 Tanaka Akira <akr@fsij.org>
- * thread.c (rb_mutex_lock): stop multiple threads use
- pthread_cond_timedwait() concurrently. [Bug #6278] [ruby-core:44275]
+ * test/ruby/test_signal.rb (TestSignal#test_signal_requiring):
+ redirect stderr to null device.
-Sat Sep 8 18:52:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Jun 2 00:45:26 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * internal.h (struct rb_classext_struct): move allocator function into
- rb_classext_t from ordinary method table. [ruby-dev:46121]
- [Feature #6993]
+ * ext/tk/extconf.rb: fix for uninitialized global variables.
+ [Ruby 1.9 - Bug #4811]
- * object.c (rb_obj_alloc): call allocator function directly.
+Wed Jun 1 21:57:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * vm_method.c (rb_define_alloc_func, rb_undef_alloc_func)
- (rb_get_alloc_func): use allocator function in rb_classext_t.
+ * thread_pthread.c (native_sleep): fix 1000times calculation error.
+ this is a regression since r31457. [Bug #4808] [ruby-dev:43606]
-Fri Sep 7 01:21:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Jun 1 17:19:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/extmk.rb (extmake), lib/mkmf.rb (have_framework): fix splitting
- options with an argument, not using NUL as special character.
- [ruby-core:47447] [Bug #6987]
+ * thread_pthread.c: remove unused macro.
-Thu Sep 6 14:49:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Jun 1 15:42:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * .gdbinit (rp): FLONUM support.
+ * parse.y (peek_n): new macro to see next nth char.
- * include/ruby/ruby.h (ruby_special_consts): define FLONUM constants
- always, so that they are available from gdb.
+Wed Jun 1 15:40:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * include/ruby/ruby.h (RB_FLOAT_TYPE_P): merge FLONUM and non-FLONUM
- versions. inline TYPE() comparison and FLONUM_P() should be
- optimized away on non-FLONUM.
+ * tool/rbinstall.rb (gem): fix for rubygems change.
-Thu Sep 6 08:20:55 2012 Ryan Davis <ryand-ruby@zenspider.com>
+Wed Jun 1 14:07:57 2011 Ryan Davis <ryand-ruby@zenspider.com>
- * lib/minitest/*: Imported minitest 3.4.0 (r7762)
+ * lib/minitest/*: Imported minitest 2.2.2 (r6281)
* test/minitest/*: ditto
-Wed Sep 5 19:20:53 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * parse.y (rb_warn4S): renamed from rb_warn4(), because the case in
- r36911 takes a string.
-
- * parse.y (rb_warn4S): use ripper_warnS() for ripper.
-
- * parse.y (ripper_warnS): now it is used.
-
-Wed Sep 5 15:51:52 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * .travis.yml (notifications): [experimental] update notification
- template.
-
-Wed Sep 5 15:21:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * parse.y (rb_warn4): added as a rb_warn variant to warn with explicit
- source file name and line in parse.y.
+Wed Jun 1 12:35:50 2011 Ryan Davis <ryand-ruby@zenspider.com>
- * parse.y (warn_unused_var): use rb_warn4 to suppress warning on ripper.
+ * lib/rubygems*: Import rubygems 1.8.5 (released @ 137c80f)
+ * test/rubygems: Ditto
-Wed Sep 5 13:30:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Jun 1 12:34:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * dir.c (glob_make_pattern): names under recursive need to be single
- basenames to match for each name. [ruby-core:47418] [Bug #6977]
+ * NEWS: add new features of bigdecimal.
-Tue Sep 4 20:55:17 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Wed Jun 1 09:41:14 2011 Eric Hodel <drbrain@segment7.net>
- * test/ruby/envutil.rb (EnvUtil#invoke_ruby): show Timeout::Error
- instead of IOError if the timeout has expired.
+ * lib/cgi/util.rb: Improve documentation. Patch by Kuba Fietkiewicz.
+ [Ruby 1.9 - Bug #4775]
+ * lib/cgi/core.rb: ditto
- * test/test_pstore.rb
- (PStoreTest#test_pstore_files_are_accessed_as_binary_files):
- increase timeout because this test is slow on Windows.
- [ruby-core:47402] [Bug #6965]
+Wed Jun 1 09:26:05 2011 Eric Hodel <drbrain@segment7.net>
-Tue Sep 4 11:28:57 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * lib/mathn.rb: Improve documentation and attach it to Numeric.
+ Modified from patch by Anil V. [Ruby 1.9 - Bug #4762]
- * vm_eval.c (ruby_eval_string_from_file_protect): initializer
- element is not computable at load time.
+Wed Jun 1 09:21:30 2011 Eric Hodel <drbrain@segment7.net>
-Tue Sep 4 07:48:35 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * lib/prime.rb: Indent examples enough to appear as code sections.
+ Note that Prime is Enumerable. [#4762]
- * test/openssl/test_asn1_rb:
- test/openssl/test_ssl_session.rb:
- test/openssl/test_x509name.rb:
- test/openssl/test_buffering.rb:
- test/openssl/test_x509cert.rb:
- test/openssl/test_ssl.rb: Refactor code that leads to warnings on
- Ruby CI.
+Wed Jun 1 07:34:57 2011 Eric Hodel <drbrain@segment7.net>
-Tue Sep 4 07:02:56 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * hash.c (key_i): Change rdoc from "the first occurrence" to "an
+ occurrence" since first occurrence is not a specification of
+ Hash#key. [Ruby 1.9 - Bug #4760]
- * test/openssl/utils.rb: Use DSS1 as DSA signature digest for all
- OpenSSL versions < 1.0.0.
- [Feature #6946] [ruby-core:47405]
+Wed Jun 1 07:26:19 2011 Eric Hodel <drbrain@segment7.net>
-Mon Sep 3 21:22:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/pty/pty.c (pty_check): Restore "not reached" comment.
+ [Ruby 1.9 - Bug #4756]
- * include/ruby/ruby.h (rb_float_value): suppress warnings.
- [ruby-core:47406][Bug #6971]
+Wed Jun 1 07:21:40 2011 Eric Hodel <drbrain@segment7.net>
-Mon Sep 3 14:49:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/zlib/zlib.c: Fix document-method declarations for set_sync and
+ set_comment. [Ruby 1.9 - Bug #4695]
- * lib/matrix.rb (Vector#magnitude): accumulate squares of absolute
- values to fix for complex vector. [ruby-dev:46100] [Bug #6966]
+Wed Jun 1 06:43:13 2011 Masaya Tarui <tarui@ruby-lang.org>
-Mon Sep 3 10:09:36 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * load.c (loaded_feature_path): cut nonsense loop execution to fix
+ performance bug.
- * ext/openssl/extconf.rb: Detect OpenSSL_FIPS macro
- ext/openssl/ossl.c: Expose OpenSSL::OPENSSL_FIPS constant to
- indicate whether OpenSSL runs in FIPS mode.
- test/openssl/test_pkey_dh.rb: Generate 256 bit keys for
- non-FIPS installations to improve test performance (e.g. for
- rubyci).
- test/openssl/utils.rb: Replace DSS1 as certificate signature
- digest with SHA1 for FIPS installations when using DSA by
- introducing TestUtils::DSA_SIGNATURE_DIGEST.
- test/openssl/test_x509cert.rb:
- test/openssl/test_x509crl.rb:
- test/openssl/test_x509req.rb: Use DSA_SIGNATURE_DIGEST
- NEWS: Introduce OpenSSL::OPENSSL_FIPS
+Wed Jun 1 01:16:02 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- These changes allow running the OpenSSL tests in FIPS mode
- while keeping a high performance for non-FIPS installations.
- Introduction of OpenSSL::OPENSSL_FIPS allows for applications
- to react to special requirements when using OpenSSL in FIPS mode.
- [Feature #6946] [ruby-core:47345]
+ * class.c (rb_mix_module): implement Module#mix.
-Sun Sep 2 21:46:28 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Wed Jun 1 01:15:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/openssl/utils.rb: Use a cached DH key instead of generating a
- new one each time.
+ * io.c (io_encoding_set): should honor already set ecflags since it
+ might be set by mode option. fixed #4804
-Sun Sep 2 05:41:28 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Jun 1 00:34:04 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * lib/webrick/ssl.rb (WEBrick::Config::SSL): add new key
- SSLTmpDhCallback to set SSLContext#tmp_dh_callback.
+ * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): remove unused
+ variable.
- * lib/webrick/ssl.rb (WEBrick::GenericServer#setup_ssl_context):
- follow above.
+Wed Jun 1 00:32:00 2011 Kenta Murata <mrkn@mrkn.jp>
-Sat Sep 1 18:50:50 2012 Akinori MUSHA <knu@iDaemons.org>
+ * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): support instantiation from
+ a Float through Rational.
- * lib/set.rb (#initialize_copy, #eql): Use instance_variable_get
- instead of instance_eval.
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_new): ditto.
-Fri Aug 31 21:47:56 2012 Kouhei Sutou <kou@cozmixng.org>
+ * test/bigdecimal/test_bigdecimal.rb (test_global_new_float): add a test for
+ the above changes.
- * lib/test/unit/test-unit.gemspec: Make test/unit default gem.
- [Feature #6875] [ruby-dev:46051]
-
-Fri Aug 31 18:35:02 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/extconf.rb: Check existence of OPENSSL_NPN_NEGOTIATED.
- ext/ossl_ssl.c: Support Next Protocol Negotiation. Protocols to be
- advertised by the server can be set in the SSLContext by using
- SSLContext#npn_protocols=, protocol selection on the client is
- supported by providing a selection callback with
- SSLContext#npn_select_cb. The protocol that was finally negotiated
- is available through SSL#npn_protocol.
- test/openssl/test_ssl.rb: Add tests for Next Protocol Negotiation.
- NEWS: add news about NPN support.
- [Feature #6503] [ruby-core:45272]
-
-Fri Aug 31 17:38:43 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * lib/set.rb (Set#{each,reject!,select!}, SortedSet#each): Pass
- the original block through instead of creating one that only
- yields the passed argument.
-
-Fri Aug 31 16:23:20 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * lib/ipaddr.rb: Introduce several new error classes where only
- ArgumentError and StandardError were used. IPAddr::Error is
- their common ancestor class that inherits from ArgumentError for
- backward compatibility. Submitted by Jon Daniel. Fixes #173 on
- GitHub.
-
-Fri Aug 31 14:51:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/bigdecimal/test_bigdecimal.rb (TestBigDecimal#test_to_f): added
- for previous commit.
-
-Fri Aug 31 14:32:05 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_to_f): use self's sign to
- determine 0.0 and Inf's sign instead of internal double value's.
- Reported by phasis68 (Heesob Park) at [ruby-core:47381] [Bug #6955]
-
-Fri Aug 31 14:31:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * template/id.h.tmpl, tool/id2token.rb: make id.h independent from
- parse.h, and make parse.c dependent on it instead.
-
-Fri Aug 31 14:27:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (create_makefile): fix race conditions at install-ext.
- target files need to depend on destination directory timestamp
- files, not phony targets.
-
-Fri Aug 31 14:03:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_trace.c (clean_hooks): do not access freed memory.
-
- * vm_trace.c (rb_threadptr_exec_event_hooks): fix uninitialized state
- when no events is executed.
-
-Thu Aug 30 18:21:51 2012 Tanaka Akira <akr@fsij.org>
-
- * io.c (rb_io_close): call rb_last_status_clear.
-
-Thu Aug 30 16:17:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_to_f): check underflow since
- strtod() sets errno to ERANGE at underflow too. [ruby-core:47342]
- [Bug #6944]
-
-Thu Aug 30 12:44:43 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * lib/set.rb (Set#{<,>,<=,>=}): Define comparison operators as
- shorthand for the {proper_}{subset?,superset?} methods (finally).
- Given a push by Alexander E. Fischer.
-
-Thu Aug 30 09:21:01 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/uri/ftp.rb (URI::FTP#initialize): raise InvalidURIError if "//"
- is not present [ruby-core:47344] [Bug #6945]
-
-Thu Aug 30 07:45:12 2012 Luis Lavena <luislavena@gmail.com>
-
- * test/ruby/test_file_exhaustive.rb: fix test introduced in r36811 for
- posix environments where HOME is not defined. [ruby-core:47322]
+ * test/bigdecimal/test_bigdecimal.rb (test_new_with_float): ditto.
-Wed Aug 29 23:42:59 2012 Tanaka Akira <akr@fsij.org>
+Wed Jun 1 00:07:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * internal.h (rb_last_status_clear): declared.
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_coerce): support coerce with a
+ Rational. The precision used for instantiate a BigDecimal from the
+ given Rational is obtained from the receiver BigDecimal.
- * process.c (rb_last_status_clear): exported.
- (rb_f_system): call rb_last_status_clear.
-
- * io.c (rb_f_backquote): call rb_last_status_clear.
-
-Wed Aug 29 22:01:15 2012 Tanaka Akira <akr@fsij.org>
-
- * process.c (rb_f_system): check failures of waitpid.
- [ruby-talk:398687]
-
-Wed Aug 29 15:03:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (LIBDIR_BASENAME): use configured libdir value to fix
- --enable-load-relative on systems where libdir is not default value,
- overridden in config.site files. [ruby-core:47267] [Bug #6903]
-
- * ruby.c (ruby_init_loadpath_safe): ditto.
-
-Wed Aug 29 14:34:41 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * addr2line.c: SIZE_MAX is defined in stdint.h, so r36755 breaks
- 32bit FreeBSD. [ruby-core:47360] [Bug #6948]
-
-Wed Aug 29 04:50:04 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * test/openssl/utils.rb
- test/openssl/test_pair.rb
- test/openssl/test_pkey_dh.rb: Use 1024 bit DH parameters to satisfy
- OpenSSL FIPS requirements. Patch by Vit Ondruch.
- [Bug #6938] [ruby-core:47326]
-
-Tue Aug 28 22:31:49 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
-
- * insns.def (checkmatch): suppress warnings. [ruby-core:47339]
- [Bug #6930]
-
-Tue Aug 28 20:03:54 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * configure.in: Fixing Haiku R1/alpha3 build with gcc-4.4.4.
- - omit ANSI standard flags to compile socket extension where
- anonymous union is required.
- - remove redundant -be flags.
- by Takashi Toyoshima <toyoshim@gmail.com>
- https://github.com/ruby/ruby/pull/168
-
-Tue Aug 28 11:32:37 2012 Yuki Yugui Sonoda <yugui@google.com>
-
- * nacl/GNUmakefile.in (.rbconfig.time): r36828 was incomplete.
- It did not run correctly on clean build.
-
-Tue Aug 28 09:25:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/Makefile.sub (Makefile): make to depend on common.mk, to
- stop and force to re-run make process when common.mk is changed.
-
-Mon Aug 27 20:19:49 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * test/etc/test_etc.rb (TestEtc#test_getgrgid): fix for non unique GID.
- No unixen systems guarantee that GID is unique. Etc.getgrgid would
- not return the first entry in the order of Etc.group for shared GID.
- [ruby-core:47312] [Bug #6935]
-
-Mon Aug 27 18:19:36 2012 Koichi Sasada <ko1@atdot.net>
-
- * include/ruby/ruby.h (rb_float_value): optimize it.
- This technique was pointed by shinichiro.hamaji
- <http://shinh.skr.jp/m/?date=20120825#p02>.
-
-Mon Aug 27 15:08:25 2012 Yuki Yugui Sonoda <yugui@google.com>
-
- * common.mk (vm_trace.o): Added a missing dependency.
-
-Sun Aug 26 09:29:32 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * nacl/GNUmakefile.in (package): make package should install
- example.html for nacl build
-
- Patch by Takashi Toyoshima <toyoshim AT gmail.com>.
-
-Sun Aug 26 09:22:33 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * nacl/GNUmakefile.in (CC, LD, NM, AR, AS, RANLIB, OBJDUMP, OBJCOPY)
- Rewrites these variables instead of PATH.
- NaCl port uses a toolchain which is specified by NACL_SDK_ROOT
- environment variable. Originally, NaCl build added the toolchain
- under the NACL_SDK_ROOT to the PATH. But updating PATH doesn't work
- on Mac.
- (RBCONFIG): Replaces configs with the variable updates above.
-
- * configure.in: Thus it is no longer necessary to check $PATH.
-
- Based on a patch by Takashi Toyoshima <toyoshim AT gmail.com>.
-
-Sun Aug 26 16:53:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * insns.def (checkmatch): suppress warnings. [ruby-core:47310]
- [Bug #6930]
-
- * vm_core.h (VM_FRAME_TYPE_FINISH_P): ditto.
-
-Fri Aug 24 15:42:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (create_makefile): use timestamp for destination
- directories to make them before making or copying files there.
- [ruby-dev:46067] [Bug #6904]
-
-Fri Aug 24 12:40:15 2012 Luis Lavena <luislavena@gmail.com>
-
- * configure.in (mingw): add shlwapi to the list of dependency
- libs for Windows.
- * win32/Makefile.sub (EXTSOLIBS): ditto.
-
- * internal.h: declare internal functions rb_w32_init_file,
- rb_file_expand_path_internal and rb_file_expand_path_fast.
-
- * file.c (Init_File): invoke Windows initialization rb_w32_init_file
-
- * win32/file.c (rb_file_load_path_internal): new function.
- Windows-specific implementation that replaces file_expand_path.
- [Bug #6836][ruby-core:46996]
-
- * win32/file.c (rb_w32_init_file): new function. Initialize codepage
- cache for faster conversion encodings lookup.
-
- * file.c (file_expand_path): rename to rb_file_expand_path_internal.
- Conditionally exclude from Windows.
-
- * file.c (rb_file_expand_path_fast): new function. delegates to
- rb_file_expand_path_internal without performing a hit to the
- filesystem.
-
- * file.c (file_expand_path_1): use rb_file_expand_path_internal without
- path expansion (used by require).
- * file.c (rb_find_file_ext_safe): ditto.
- * file.c (rb_find_file_safe): ditto.
-
- * load.c (rb_get_expanded_load_path): use rb_file_expand_path_fast.
- * load.c (rb_feature_provided): ditto.
-
- * file.c (rb_file_expand_path): use rb_file_expand_path_internal with
- path expansion.
- * file.c (rb_file_absolute_path): ditto.
-
- * test/ruby/test_file_exhaustive.rb: new tests to exercise
- rb_file_expand_path_internal implementation and compliance with
- existing behaviors.
-
-Fri Aug 24 07:35:24 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/net/http/backward.rb (class Net): Restored Net::HTTPSession to
- fix backwards-compatibility with ancient Net::HTTP. [Bug #6889]
-
-Thu Aug 23 20:58:55 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * common.mk: support `make id.h` without `rm .id.h.time` after
- `rm id.h`.
-
-Thu Aug 23 20:48:45 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_fixnum.rb (TestFixnum#test_singleton_method): new test.
-
- * test/ruby/test_bignum.rb (TestBignum#test_singleton_method): ditto.
-
- * test/ruby/test_float.rb (TestFloat#test_singleton_method): ditto.
-
- * test/ruby/test_symbol.rb (TestSymbol#test_singleton_method): ditto.
-
-Thu Aug 23 20:34:32 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * class.c (singleton_class_of): flonum can't have singleton class.
-
- * vm.c (vm_define_method): flonum can't have singleton method.
-
-Thu Aug 23 19:18:33 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * common.mk (win32/*): macro RUBY_H_INCLUDES is not defined there,
- so need to move dependency rules under the definition of it.
-
-Thu Aug 23 19:16:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/Makefile.sub: refactoring. remove unused rules, and update
- some rules which are not used usually to fit current macros.
-
-Thu Aug 23 16:46:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (rb_find_file_ext_safe, rb_find_file_safe): default to
- US-ASCII for encdb and transdb.
-
- * load.c (search_required): keep encoding of feature name. set
- loading path to filesystem encoding. [Bug #6377][ruby-core:44750]
-
- * ruby.c (add_modules, require_libraries): assume default external
- encoding as well as ARGV.
-
-Thu Aug 23 16:20:04 2012 Koichi Sasada <ko1@atdot.net>
-
- * include/ruby/ruby.h: introduce flonum technique for
- 64bit CPU environment (sizeof(double) == sizeof(VALUE)).
- flonum technique enables to avoid double object creation
- if the double value d is in range about between
- 1.72723e-77 < |d| <= 1.15792e+77 or 0.0.
- flonum Float value is immediate and their lowest two bits
- are b10.
- If flonum is activated, then USE_FLONUM macro is 1.
- I'll write detailed in this technique on
- https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/Flonum_tech
-
- * benchmark/bmx_temp.rb: add an benchmark for simple
- Float calculation.
-
- * gc.c (id2ref, rb_obj_id): add flonum Float support.
-
- * include/ruby/intern.h: move decl of rb_float_new(double)
- to include/ruby/ruby.h.
-
- * insns.def, vm.c, vm_insnhelper.c: add flonum optimization
- and simplify source code.
-
- * vm_insnhelper.h (FLONUM_2_P): added.
-
- * marshal.c: support flonum output.
-
- * numeric.c (rb_float_new_in_heap): added.
-
- * parse.y: support flonum.
-
- * random.c: ditto.
-
-Thu Aug 23 16:12:40 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/mkmf.rb (create_makefile): add dependency to header files when
- depend files don't exist. now we can remove simple (and often
- wrong) depend files in most cases.
-
-Thu Aug 23 16:02:20 2012 Koichi Sasada <ko1@atdot.net>
-
- * ext/date/depend: add dependency to $(ruby_headers).
-
-Thu Aug 23 12:51:39 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * insns.def (invokesuper): reverted r36640 partially to make super
- in a thread work correctly. [ruby-core:47284] [Bug #6907]
-
- * test/ruby/test_super.rb: related test.
-
-Thu Aug 23 12:30:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/configure.bat: support --with(out)?-ext(ensions) options.
-
-Thu Aug 23 11:52:04 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * configure.in: Fixing Haiku build.
- - -lbe is not required for linking
- - stack protector doesn't work for now because of the default gcc's
- bug
- by Takashi Toyoshima <toyoshim@gmail.com>
- https://github.com/ruby/ruby/pull/167
-
- * signal.c (ruby_signal): haiku doesn't have SIGBUS.
-
-Thu Aug 23 11:32:44 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/open-uri/test_open-uri.rb (TestOpenURI#test_read_timeout): this
- test expects that the server thread will be killed in sleep, but 0.01
- sec is too short to reach there.
-
-Thu Aug 23 10:49:28 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * configure.in: use the value of --with-opt-dir on building ruby
- itself. [ruby-dev:46064] [Bug #6900]
-
-Thu Aug 23 10:36:35 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * common.mk (ID_H_TARGET): revert a part of r36724 and r36751. they
- break mswin build from clean source.
-
-Thu Aug 23 02:37:35 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/syck: removed. Fixes [ruby-core:43360]
-
- * test/syck: removed.
-
- * lib/yaml.rb: only require psych, show a warning if people try to set
- the engine to syck.
-
-Thu Aug 23 01:46:53 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * insns.def: search up the cf stack for an object that is an instance
- of the recipient class. Fixes [ruby-core:47186]
-
- * test/ruby/test_super.rb: related test.
-
-Wed Aug 22 19:46:24 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: [ruby-core:47266].
-
-Wed Aug 22 19:41:19 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: [ruby-core:47226].
-
-Wed Aug 22 16:57:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (configuration): extract least ruby headers list as
- ruby_headers, so depend files can use default dependency
- explicitly.
-
-Wed Aug 22 15:27:50 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c (vm_setup_method): fix last commit of
- vm_insnhelper.c (r36771). [ruby-dev:46065] [Bug #6901]
- Should not disable tail call opt on FINISH_FRAME.
- This flag should be propagated correctly.
-
-Wed Aug 22 14:05:23 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_trace.c: support TracePoint. [ruby-trunk - Feature #6895]
-
- * test/ruby/test_settracefunc.rb: add tests for above.
-
- * proc.c (rb_binding_new_with_cfp): add an internal function.
-
- * vm.c (rb_vm_control_frame_id_and_class): add an internal function.
-
- * vm_trace.c: add rb_add_event_hook2() and rb_thread_add_event_hook2().
- Give us the good name for them!
-
-Wed Aug 22 11:38:16 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * .travis.yml (before_script): Turned out that make -j is broken.
-
-Wed Aug 22 11:23:35 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_insnhelper.c (vm_setup_method): should not enable tail call
- optimization for frames with VM_FRAME_FLAG_FINISH.
- [ruby-dev:46065] [Bug #6901]
-
-Wed Aug 22 11:20:47 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/rubygems/test_case.rb: run test with psych if exist.
-
-Thu Aug 16 12:09:51 2012 Yuki Yugui Sonoda <yugui@google.com>
-
- * nacl/pepper_main.c (init_loadpath): Pushes the correct load path on
- other architectures than x86_64. Fixes #6873.
-
-Wed Aug 15 19:37:33 2012 Yuki Yugui Sonoda <yugui@google.com>
-
- * configure.in (ac_cv_func_shutdown): shutdown(2) has a dummy
- implementation but has no declaration and does not work in
- NativeClient SDK pepper_20.
-
-Wed Aug 15 19:29:29 2012 Yuki Yugui Sonoda <yugui@google.com>
-
- * common.mk (vm_backtrace.o): Added missing dependencies.
-
- * ext/nkf/depend (nkf.o): ditto.
-
- * ext/ripper/depend (ripper.o) ditto.
-
-Wed Aug 22 07:27:00 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/cgi/util.rb (CGI.escapeHTML): use &#39;
- [ruby-core:47221] [Bug #6861]
-
-Tue Aug 21 21:59:22 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-
- * lib/observer.rb: fix typo. https://github.com/ruby/ruby/pull/162 by
- unsymbol (Philip Cunningham).
-
-Tue Aug 21 20:30:06 2012 Benoit Daloze <eregontp@gmail.com>
-
- * test/fileutils/test_fileutils.rb (TestFileUtils#teardown):
- do not assume cwd is TMPROOT and never remove current directory.
- [ruby-core:47224][Bug #6884]
-
-Tue Aug 21 17:29:56 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * addr2line.c (fill_lines): need check and cast of the file size of
- target binary because there are some platforms which off_t > size_t.
-
-Tue Aug 21 17:07:58 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * .travis.yml (compiler): [experimental] clang support.
-
-Tue Aug 21 15:44:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/dl/lib/dl/func.rb (DL::Function#bind): fixes an error in
- test/dl/test_import.rb (DL::TestImport#test_carried_function)
- introduced by r36718.
- the instance of the anonymous class which wraps the block should have
- same methods and instance variables of self.
-
-Tue Aug 21 14:29:22 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/Makefile.sub (scriptbin.mk): no need to include twice.
-
-Tue Aug 21 10:52:08 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/unit/test.rb (Test::Unit::ProxyError): new exception class to
- wrap exceptions raised in workers in parallel test mode.
-
- * test/unit/parallel.rb (Test::Unit::Worker#puke): use above wrapper
- exception.
- [Bug #6882] [ruby-dev:46054]
-
-Tue Aug 21 10:40:06 2012 Koichi Sasada <ko1@atdot.net>
+ * test/bigdecimal/test_bigdecimal.rb (test_coerce): add a test for the
+ above change.
- * test_continuation.rb (tracing_with_thread_set_trace_func):
- fix to use Thread#set_trace_func(nil), not set_trace_func(nil).
+Tue May 31 23:49:08 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Tue Aug 21 09:32:41 2012 Ryan Davis <ryand-ruby@zenspider.com>
+ * ext/date/date_core.c (offset_to_sec): fixed invalid validation.
- * lib/minitest/*: Imported minitest 3.3.0 (r7676)
- * test/minitest/*: ditto
+Tue May 31 23:43:00 2011 Kenta Murata <mrkn@mrkn.jp>
-Tue Aug 21 09:05:32 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): replace the algorithm for
+ coercing from a Rational to stop requiring "bigdecimal/util.rb".
+ [ruby-core:34318]
- * test/testunit/tests_for_parallel/ptest_forth.rb: added a test case
- which causes an error.
+ * ext/bigdecimal/bigdecimal.c (GetVpValue): refactoring.
- * test/testunit/test_parallel.rb: follow above change.
- see [Bug #6882]
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_new): support instantiation from a
+ Rational.
-Tue Aug 21 05:43:00 2012 James Edward Gray II <james@graysoftinc.com>
+ * test/bigdecimal/test_bigdecimal.rb (test_global_new_with_rational): add a
+ test for the above change.
- * lib/csv.rb: Fixes #161 on github
- * lib/csv.rb: You can now specify a pattern for :skip_lines.
- Matching lines will not be passed to the CSV parser.
- * lib/csv.rb: Patch by Christian Schwartz.
+ * test/bigdecimal/test_bigdecimal.rb (test_new_with_rational): ditto.
-Tue Aug 21 05:25:41 2012 Eric Hodel <drbrain@segment7.net>
+Tue May 31 22:44:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * re.c (rb_reg_initialize_m): Forgot to update output for or'd-options
- example.
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_new): support instantiation a
+ BigDecimal object from an Integer.
-Tue Aug 21 05:18:03 2012 Eric Hodel <drbrain@segment7.net>
+ * test/bigdecimal/test_bigdecimal.rb (test_new_with_integer):
+ add for testing the above change.
- * re.c (rb_reg_initialize_m): Update example to show that regexp
- options use | an not || to avoid confusion.
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_global_new): replace its body
+ with a BigDecimal_new call.
-Mon Aug 20 23:02:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/bigdecimal/test_bigdecimal.rb (test_global_new_with_integer):
+ add for testing the above change.
- * parse.y: more descriptive token names in syntax error messages.
+Tue May 31 22:24:39 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Mon Aug 20 20:36:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/date/date_core.c: use simple/complex mode instead of light/right mode.
+ * test/date/*.rb: followed the above changes.
- * vm_insnhelper.c (vm_call_method): follow iclasses as klass in cfp
- but not included modules. [ruby-core:47241] [Bug #6891]
+Tue May 31 21:28:33 2011 Tanaka Akira <akr@fsij.org>
- * vm_insnhelper.c (vm_call_bmethod): pass defined_class to follow
- proper ancestors. [ruby-core:47241] [Bug #6891]
+ * test/ruby/test_signal.rb (TestSignal#test_signal_requiring):
+ initialize SIGINT handler.
-Mon Aug 20 11:40:27 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+Tue May 31 17:03:24 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
- * common.mk: fix failed to make with -j2.
- https://gist.github.com/3397935
+ * lib/net/http.rb, lib/net/protocol.rb: Allow to configure to wait
+ server returning '100 continue' response before sending HTTP request
+ body. See NEWS for more detail. See #3622.
+ Original patch is made by Eric Hodel <drbrain@segment7.net>.
-Mon Aug 20 10:51:01 2012 Shota Fukumori <sorah@tubusu.net>
+ * test/net/http/test_http.rb: test it.
- * lib/test/unit.rb, lib/test/unit/parallel.rb:
- generate error message (String) in parallel.rb instead of
- marshalling Exception. Fixes [Bug #6882] [ruby-dev:46054]
+ * NEWS: Add new feature.
-Sun Aug 19 01:24:32 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Tue May 31 14:17:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * enum.c: fix docs. https://github.com/ruby/ruby/pull/129 by
- richardkmichael (Richard Michael).
+ * io.c (rb_io_s_pipe): potential bug. the mode of read IO is set as
+ DEFAULT_TEXTMODE in call of io_set_encoding(), and of write IO is
+ also set as it in call of io_new_instance() via rb_protect().
+ so, if DEFAULT_TEXTMODE is not 0, we should check the result of
+ extract_binmode() and avoid crush of default IO mode and the result.
-Sun Aug 19 00:47:26 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Tue May 31 13:00:17 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
- * lib/fileutils.rb: fix typo.
- https://github.com/ruby/ruby/pull/155 by simonc (Simon COURTOIS).
+ * strftime.c (rb_strftime_with_timespec): improved style consistency.
+ constified some variables.
-Sat Aug 18 09:57:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/test_time.rb (TestTime#test_huge_precision): test for #4456.
- * enc/depend: fix inplace-build condition. enc.mk is generated with
- setting $srcdir to enc, but pwd is still top build directory.
- [ruby-core:47236] [Bug #6888]
+Tue May 31 12:53:10 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Fri Aug 17 23:28:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/io/wait/test_io_wait.rb (TestIOWait#{test_nread,test_ready?,
+ test_wait}: give system some time to process the written data.
- * object.c (rb_any_to_s, rb_obj_inspect): preserve encodings of class
- name and instance variable names.
+Tue May 31 12:40:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Fri Aug 17 12:39:33 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/ruby/test_io.rb (TestIO#test_open_mode): MUST release resources
+ explicitly. fix problem of r31671
- * ext/dl/lib/dl/func.rb (DL::Function#bind): allow to return/break from
- the callback method. (Fiddle already allows it.)
- [Bug #6389] [ruby-dev:45604]
+Tue May 31 10:49:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Aug 16 19:54:24 2012 Koichi Sasada <ko1@atdot.net>
+ * vm_exec.c: remove conditions for clang
+ because clang version 3.0 (trunk 132165) doesn't need them.
- * vm_trace.c, vm_core.h: simplify tracing mechanism.
+Mon May 30 22:19:33 2011 Tanaka Akira <akr@fsij.org>
- (1) add rb_hook_list_t data structure which includes
- hooks, events (flag) and `need_clean' flag.
- If the last flag is true, then clean the hooks list.
- In other words, deleted hooks are contained by `hooks'.
- Cleanup process should run before traversing the list.
- (2) Change check mechanism
- See EXEC_EVENT_HOOK() in vm_core.h.
- (3) Add `raw' hooks APIs
- Normal hooks are guarded from exception by rb_protect().
- However, this protection is overhead for too simple
- functions which never cause exceptions. `raw' hooks
- are executed without protection and faster.
- Now, we only provide registration APIs. All `raw'
- hooks are kicked under protection (same as normal hooks).
+ * test/ruby/test_signal.rb (TestSignal#test_signal_requiring): don't
+ close stderr.
- * include/ruby/ruby.h: remove internal data definition and
- macros.
+Mon May 30 20:22:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * internal.h (ruby_suppress_tracing), vm_trace.c: rename
- ruby_suppress_tracing() to rb_suppress_tracing()
- and remove unused function parameter.
+ * test/ruby/test_signal.rb (TestSignal#test_signal_requiring): small
+ but critical typo of r31642. sorry...
+ [Bug #4798] [ruby-core:36550]
- * parse.y: fix to use renamed rb_suppress_tracing().
+Mon May 30 15:44:16 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * thread.c (thread_create_core): no need to set RUBY_VM_VM.
+ * insns.def (opt_mult): as r31805, volatile it.
+ Without this, clang -O fails calculation.
- * vm.c (mark_event_hooks): move definition to vm_trace.c.
+ * numeric.c (fix_mul): ditto.
- * vm.c (ruby_vm_event_flags): add a global variable.
- This global variable represents all of Threads and VM's
- event masks (T1#events | T2#events | ... | VM#events).
- You can check the possibility kick trace func or not
- with ruby_vm_event_flags.
- ruby_vm_event_flags is maintained by vm_trace.c.
+ * rational.c (f_imul): ditto.
- * cont.c (fiber_switch, rb_cont_call): restore tracing status.
- [Feature #4347]
+Mon May 30 10:26:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * test/ruby/test_continuation.rb: ditto.
+ * numeric.c (int_pow): make sure to assign the result of x * z.
+ If xz is optimized out, the value won't overflow.
-Thu Aug 16 19:15:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun May 29 23:17:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * object.c (rb_class_initialize): forbid inheriting uninitialized
- class. another class tree not based on BasicObject cannot exist.
- [ruby-core:47148][Bug #6863]
+ * re.c (rb_reg_match): fix rdoc of Regexp#=~.
+ patched by Tsuyoshi Sawada. [Bug #4781]
-Thu Aug 16 11:52:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun May 29 23:10:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * test/-ext-/test_printf.rb (Test_SPrintf#test_{taint,untrust}): use
- plain object so that the results of to_s and inspect are infected.
- [ruby-dev:46053] [Bug #6881]
+ * lib/webrick/https.rb (WEBrick::HTTPRequest#parse_uri):
+ keep parse_uri as private. patched by okkez. [Bug #4773]
-Thu Aug 16 09:46:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun May 29 17:53:03 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * strftime.c: remove unnecessary macros to check traditional C.
- https://github.com/ruby/ruby/pull/46 by lateau (Daehyub Kim).
+ * numeric.c: add #include "internal.h" for rb_big_uminus() prototype.
- * vsnprintf.c: remove K&R.
+Sun May 29 15:09:05 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Aug 15 20:47:49 2012 Benoit Daloze <eregontp@gmail.com>
+ * numeric.c (flo_round): fix for negative value.
- * object.c (rb_obj_inspect): Kernel#inspect: do not call #to_s. A class
- can now benefit from the nice default #inspect even if it defines #to_s.
- Also, there is no more unexpected change in #inspect result.
+Sun May 29 02:16:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * NEWS: Add note about the change.
+ * test/net/http/utils.rb (TestNetHTTPUtils#teardown): add nil check.
- * bignum.c, io.c, numeric.c, object.c, proc.c, vm.c (Init_*):
- Adapt internal structures (by aliasing #inspect to #to_s) so they
- don't rely on the removed behavior (#inspect calling overridden #to_s).
+Sun May 29 00:22:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/ruby/test_object.rb (test_inspect): add tests for Kernel#inspect.
+ * process.c (before_exec, after_exec): change from macro to function.
- * lib/pp.rb (class PP): do not call #to_s anymore, as #inspect
- no more does (mame).
+Sat May 28 19:30:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/test_pp.rb (class PPInspectTest): remove related assertion (mame).
- [ruby-core:43238][Feature #6130]
+ * process.c (before_exec, after_exec): change SIGPIPE handler to SIG_DFL
+ before calling execve(). Because r31760 reintroduced an issue that
+ system() may hang up (i.e. [ruby-dev:12261]).
+ * process.c (save_sigpipe, restore_sigpipe): new.
- * test/drb/drbtest.rb (DRbCore#teardown, DRbAry#teardown):
- adapt DRb tests with the new change (shirosaki).
- [ruby-core:47182][Bug #6866]
+Sat May 28 16:08:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Aug 15 18:05:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * signal.c (Init_signal, default_handler): change default SIGPIPE handler
+ from empty function to SIG_IGN. [ruby-dev:43215]
+ * signal.c (sigpipe): removed.
- * lib/test/unit.rb (Test::Unit::Runner#failed): need to delete the
- status line if the status is skipped and -q is specified.
+Sat May 28 03:04:27 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Aug 15 16:26:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * io.c (fill_cbuf): return MORE_CHAR_SUSPENDED when cbuf is not empty.
- * sprintf.c (ruby__sfvextra): the result should be infected by the
- given strings.
+Sat May 28 02:22:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * sprintf.c (ruby__sfvwrite): set buffer length and exclude
- uninitialized garbage to get correct coderange.
+ * string.c (rb_str_bytesize): rb_str_bytesize() should use LONG2NUM().
+ Patch by Nikolai Weibull. [Bug #4789] [ruby-core:36511]
-Wed Aug 15 16:20:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat May 28 02:06:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * common.mk (ID_H_TARGET): make timestamp file of id.h so that the
- header will not be remade repetitively.
+ * io.c (fill_cbuf): Fix test-all crash.
-Wed Aug 15 11:39:53 2012 Koichi Sasada <ko1@atdot.net>
+Sat May 28 00:58:40 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * vm_trace.c: separate trace_func related functions from
- thread.c.
+ * lib/ostruct.rb (method_missing): Handle [] and []= correctly.
+ Based on a patch by Caius Durling, bug #4179 [ruby-core:33792]
- * thread.c: ditto.
+Fri May 27 23:56:54 2011 Kouhei Sutou <kou@cozmixng.org>
- * common.mk: add vm_trace.o.
+ * test/rexml/test_core.rb (Tester::test_text_frozen): split frozen
+ string test. refs #4783
- * inits.c: call Init_vm_trace().
+Fri May 27 22:46:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Aug 14 16:25:46 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * tool/rbinstall.rb (gem): install gemspec of json. fixed #4784
- * test/erb/test_erb.rb (test_html_escape): add assertions for the
- cases where the argument is not a String.
+Fri May 27 22:45:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Aug 14 16:03:31 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * io.c (validate_enc_binmode): do not clear textmode flag if
+ default. fixed #4732
- * win32/win32.c (check_valid_dir): reject "..." as directory name.
- [Bug #6851]
+ * io.c (fill_cbuf): finish reading at EOF.
-Tue Aug 14 16:02:51 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri May 27 11:31:51 2011 misfo <tedwardo2@gmail.com>
- * test/ruby/test_file_exhaustive.rb
- (TestFileExhaustive#test_stat_dotted_prefix): added.
+ * lib/rexml/text.rb (REXML::Text#initialize): prevent an error
+ when passing a frozen string to REXML::Text.new
-Tue Aug 14 15:39:09 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ dup the string passed in instead of cloning so that it's frozen
+ state is ignored
- * test/ruby/test_file_exhaustive.rb
- (TestFileExhaustive#test_stat_drive_root): added.
+Fri May 27 08:47:26 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-Tue Aug 14 10:38:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * thread.c (ppoll): typo bug fix.
- * lib/erb.rb (ERB::Util.html_escape): fix r36687: call to_s before
- passing it to CGI.escapeHTML.
+Fri May 27 08:35:04 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-Mon Aug 13 13:13:19 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * ext/tk/lib/tk.rb: hang-up at exit before calling Tk.mainloop.
- * lib/erb.rb (ERB::Util.html_escape): use CGI.escapeHTML to escape
- single quotes. [ruby-core:47138] [Bug #6861]
+ * ext/tk/lib/tk/extconf.rb: cannot make on MinGW [Ruby 1.9 - Bug #4141].
-Sun Aug 12 11:57:20 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+Thu May 27 00:34:07 2011 James Edward Gray II <jeg2@ruby-lang.org>
- * vm.c (invoke_block_from_c): fix unintentional block passing.
- [ruby-dev:45071] [Bug #5832]
+ * lib/csv.rb: Enhance each() to support Enumerator.
-Fri Aug 10 08:41:28 2012 Eric Hodel <drbrain@segment7.net>
+Thu May 26 10:32:11 2011 James Edward Gray II <jeg2@ruby-lang.org>
- * gc.c (gc_malloc_allocated_size): RDoc does not process macros, so
- mention this method is only available when ruby is built with
- CALC_EXACT_MALLOC_SIZE
- * gc.c (gc_malloc_allocations): ditto
+ * lib/csv.rb: Documentation improvements from Ysiad Ferreiras.
+ [Ruby 1.9 - Bug #4785]
-Thu Aug 9 23:46:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu May 26 15:42:02 2011 Cezary Baginski <cezary.baginski@gmail.com>
- * tool/mkrunnable.rb: see build_os instead of target arch for
- cross-compiling.
+ * lib/xmlrpc/parser.rb (FaultException): fix to_s and inspect
- * configure.in (MINIRUBY): use real path for include path.
+ * test/xmlrpc/parser.rb: test for the above
- * template/fake.rb.in (builddir): remove duplications
+Wed May 25 11:54:31 2011 Eric Hodel <drbrain@segment7.net>
-Thu Aug 9 20:03:11 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * ext/curses/curses.c: Remove color constants block.
+ [Ruby 1.9 - Bug #4748]
- * test/ruby/test_file_exhaustive.rb
- (TestFileExhaustive#test_stat_special_file): add a test.
- GetFileAttributesExW fails to get attributes of special files
- such as pagefile.sys.
+Wed May 25 09:56:45 2011 Eric Hodel <drbrain@segment7.net>
- * win32/win32.c (check_valid_dir): for performance, check the path
- by FindFirstFileW only if the path contains "..."
+ * ext/curses/curses.c: Add missing documentation for button state, MIN
+ and MAX comments. Add Curses. to TABSIZE= and ESCDELAY= methods.
+ [Ruby 1.9 - Bug #4747]
- * win32/win32.c (winnt_stat): use GetFileAttributesExW instead of
- FindFirstFileW since GetFileAttributesExW is faster.
- Based on the patch by Dusan D. Majkic.
- [ruby-core:47083] [Feature #6845]
+Wed May 25 09:35:31 2011 Eric Hodel <drbrain@segment7.net>
-Thu Aug 9 18:33:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/benchmark.rb: Restore nodoc for Benchmark::Job and
+ Benchmark::Report. [Ruby 1.9 - Bug #4726]
- * ruby.c (proc_options): show version only once even if -v and
- --version are given together.
- http://twitter.com/d6rkaiz/status/233491797085671424
+Wed May 25 09:29:38 2011 Eric Hodel <drbrain@segment7.net>
-Thu Aug 9 12:37:22 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * lib/net/pop.rb: Hide implementation details from RDoc.
+ [Ruby 1.9 - Bug #4711]
- * test/openssl/test_config.rb (OpenSSL#test_constants): skip this
- test if platform is Mac OS X or Windows. [Bug #6830]
+Wed May 25 09:26:29 2011 Eric Hodel <drbrain@segment7.net>
-Wed Aug 8 22:51:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/net/ftp.rb: Add :nodoc: for private methods.
+ [Ruby 1.9 - Bug #4710]
- * vm_eval.c (eval_under): singletons other than special constants
- don't need cref-scope hack.
+Wed May 25 09:19:17 2011 Eric Hodel <drbrain@segment7.net>
-Wed Aug 8 22:45:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/zlib/zlib.c: Fix Document-method declarations. Improve
+ Zlib::GzipFile's method catalog. [Ruby 1.9 - Bug #4695]
- * common.mk (.y.h): split from .y.c rule to manage dependency on
- parse.h. [ruby-core:46741] [Bug #6789]
+Wed May 25 08:22:12 2011 Eric Hodel <drbrain@segment7.net>
- * common.mk (id.h): keep old file unless changed.
+ * lib/erb.rb: Hide documentation for implementation details of ERB.
+ [Ruby 1.9 - Bug #4694]
-Wed Aug 8 17:11:20 2012 Koichi Sasada <ko1@atdot.net>
+Wed May 25 07:58:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * compile.c (ADD_INSNL): make ADD_INSNL as alias of ADD_INSN1.
+ * lib/tempfile.rb (Tempfile.{mkdir,rmdir}): revert for backward
+ compatibility.
-Wed Aug 8 17:08:14 2012 Koichi Sasada <ko1@atdot.net>
+Wed May 25 07:13:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * bootstrap/test_exception.rb: fix a last committed test.
+ * spec/README: update the description.
-Wed Aug 8 16:27:58 2012 Koichi Sasada <ko1@atdot.net>
+Wed May 25 07:12:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * compile.c, insns.def (checkmatch):
- remove checkincludearray instruction and
- add new instruction checkmatch.
- This change is to solve
- [Bug #4438] "rescue args type check omitted".
+ * lib/tempfile.rb (Tempfile.{lock,unlock}_tempfile): refactor.
- * iseq.c: increment ISEQ_MAJOR_VERSION because removal of
- checkincludearray instruction.
+Tue May 24 17:30:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * vm_core.h: add several definitions for
- the checkmatch instruction.
+ * spec/README: fix typo.
+ patched by bowsersenior. https://github.com/ruby/ruby/pull/24
- * vm_insnhelper.c (check_match): added.
+Tue May 24 07:06:34 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * bootstraptest/test_exception.rb: add a test.
+ * ext/tk/lib/tk.rb: fail to start Tk.mainloop (exit immediately) on
+ some environment (reported on [ruby-talk:381444]).
- * test/ruby/test_exception.rb: ditto.
+ * ext/tk/lib/tk/canvas.rb: support creating a canvas item object from
+ an item ID number.
-Wed Aug 8 05:51:20 2012 Eric Hodel <drbrain@segment7.net>
+ * ext/tk/lib/tk/image.rb: import documents which are pull-requested.
+ [Ruby 1.9 - Feature #4595]
- * proc.c (method_clone): Added documentation. Patch by Robin Dupret.
- Fixes #152 on github.
+ * ext/tk/lib/tk/extconf.rb: search directories for 64bit library (e.g.
+ /usr/lib64), add some new configure options (see README.tcltklib),
+ and bug fix.
-Tue Aug 7 20:19:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/tk/lib/tk/README.tcltklib: modify docs for some new configure
+ options.
- * ext/readline/readline.c (Init_readline): rl_catch_signals=0 returns
- back. Without this, on FreeBSD9 and readline 6.2 irb can't catch ^C.
- [Bug #5423]
+Tue May 24 04:01:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Tue Aug 7 20:12:39 2012 Koichi Sasada <ko1@atdot.net>
+ * lib/yaml.rb: switch default YAML engine to Psych, old syck engine
+ may be enabled via YAML::ENGINE.yamler = "syck". [ruby-core:36374]
- * vm_exec.c, insns.def (leave): solve problems on
- OPT_CALL_THREADED_CODE.
- Catch up finish frame structure on OPT_CALL_THREADED_CODE.
+Mon May 23 09:45:26 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
- * vm_core.h: add rb_thread_t#retval for temporary space on
- OPT_CALL_THREADED_CODE.
+ * include/ruby/defines.h (CASEFOLD_FILESYSTEM): Revert r30508. Forgot to
+ include this file in the commit r31692. __APPLE__ is not
+ CASEFOLD_FILESYSTEM again, from this time.
- * vm.c (th_init): clear rb_thread_t#retval as Qundef.
+Mon May 23 10:01:02 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * vm_dump.c (rb_vmdebug_debug_print_pre): fix debug print format.
+ * ext/openssl/ossl_asn1.c: Do not parse zero-tagged values as EOC. Do
+ not let current length become negative for infinite length constructed
+ values. Support constructed values of length zero. Added tests.
-Tue Aug 7 11:58:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon May 23 09:19:53 2011 Eric Hodel <drbrain@segment7.net>
- * test/ruby/test_require.rb (TestRequire#test_require_twice): added.
+ * lib/net/smtp.rb: Document Net::SMTP::Response. Patch by J.R. Garcia.
+ [Ruby 1.9 - Bug #4768]
-Tue Aug 7 11:35:37 2012 Shugo Maeda <shugo@ruby-lang.org>
+Mon May 23 09:03:52 2011 Shota Fukumori <sorah@tubusu.net>
- * vm_method.c (rb_redefine_opt_method): use RCLASS_ORIGIN to avoid
- SEGV when a module-prepended class is refined.
+ * lib/test/unit/parallel.rb: Never Ignore SIGINT. When received
+ Interrupt, immediately puts result and exit. [ruby-dev:43571]
-Tue Aug 7 10:46:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/test/unit.rb: When received Interrupt, wait results from workers
+ and collect them. [ruby-dev:43571]
- * test/ruby/test_file_exhaustive.rb
- (TestFileExhaustive#test_expand_path*): refactoring. split the method
- into some chunks of the same kind of tests.
+Mon May 23 09:08:07 2011 Eric Hodel <drbrain@segment7.net>
-Tue Aug 7 00:31:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/mathn.rb: Improve documentation. Patch by Sandor Szucs.
+ [Ruby 1.9 - Bug #4767]
- * class.c (rb_special_singleton_class_of): utility function.
+Mon May 23 08:45:55 2011 Eric Hodel <drbrain@segment7.net>
- * vm_eval.c (eval_under): special deal for class variable scope with
- instance_eval.
+ * lib/ostruct.rb: Improve documentation. Patch by Franklin Webber.
+ [Ruby 1.9 - Bug #4761]
- * vm_eval.c (rb_obj_instance_eval, rb_obj_instance_exec): allow method
- definition in instance_eval of special constants. [ruby-core:28324]
- [Bug #2788]
+Mon May 23 08:35:24 2011 Eric Hodel <drbrain@segment7.net>
-Tue Aug 7 00:23:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * hash.c: Improve documentation of Hash#key. Patch by Utkarsh
+ Kukreti. [Ruby 1.9 - Bug #4760]
- * variable.c (CVAR_LOOKUP): split into helper functions.
+Mon May 23 08:32:59 2011 Eric Hodel <drbrain@segment7.net>
-Mon Aug 6 19:15:11 2012 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+ * enumerator.c: Improve documentation. Patch by Dave Copeland.
+ [Ruby 1.9 - Bug #4757]
- * test/win32ole/test_win32ole_variant.rb: setting WIN32OLE.locale
- to pass some assertion. Thanks to Hiroshi Shirosaki.
- [ruby-core:46873][Bug #6814]
+Mon May 23 07:19:45 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Mon Aug 6 15:54:50 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * NEWS (openssl): Infinite length support. Different behavior of
+ Constructive and Primitive constructors.
- * internal.h, class.c, eval.c, insns.def: find the appropriate
- receiver for super called in instance_eval. If such a receiver is
- not found, raise NoMethodError. [ruby-dev:39772] [Bug #2402]
+Mon May 23 06:58:33 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Mon Aug 6 14:54:38 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * ext/openssl/ossl_asn1.c: Forbid Constructives whose value is not an
+ Array to prevent segfault. Added test.
- * include/ruby/ruby.h, eval.c, vm_insnhelper.c: fix typo.
+Mon May 23 06:33:17 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Mon Aug 6 13:13:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/openssl/ossl_asn1.c: Forbid Constructive without infinite
+ length. This also prevents a segfault. Added test and improved
+ documentation.
- * vm_eval.c (vm_call_super): since cfp->klass is always class or
- iclass, no search from method entry.
+Mon May 23 05:58:14 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * insns.def (defined): now should use klass in the current control
- frame to search superclass, not me->klass. reported by naruse.
+ * ext/openssl/ossl_asn1.c: Fix decoding of infinite length values.
+ Simplified ossl_asn1_decode0 by splitting it into three separate
+ functions. Add tests.
+ [Ruby 1.9 - Bug #4374][ruby-core:35123]
-Mon Aug 6 11:19:19 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon May 23 04:03:46 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * test/etc/test_etc.rb (TestEtc#test_getpwuid): `s' is never set to nil.
+ * ext/openssl/ossl_asn1.c (ossl_asn1_initialize): Allow creation of
+ Constructives with an explicit tag_class parameter without
+ automatically setting tagging to :EXPLICIT. Fixes a bug when encoding
+ infinite length primitive values.
-Mon Aug 6 11:08:48 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon May 23 04:03:46 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * test/syslog/test_syslog_logger.rb: skip unless Syslog module is
- available.
+ * ext/openssl/ossl_asn1.c (ossl_asn1_cons_to_der): Add an additional
+ EOC for infinite length Constructives that are supposed to be encoded
+ with explicit tagging. Also tabify method correctly.
-Mon Aug 6 00:40:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon May 23 03:44:39 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * ext/bigdecimal/bigdecimal.c (BigMath_s_log): fix format specifier.
+ * ext/openssl/ossl_asn1.c (ossl_asn1data_to_der): Remove redundant
+ flag tmp_cons.
-Mon Aug 6 00:39:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon May 23 00:35:00 2001 Kenta Murata <mrkn@mrkn.jp>
- * include/ruby/ruby.h (NUM2ULONG): optimize by inline as well as
- NUM2LONG, and cast to unsigned long explicitly for the platforms
- where SIZEOF_VALUE is larger than SIZEOF_LONG.
+ * bignum.c (dump_bignum, bigmul1_balance, big_split, biglsh_bang),
+ (bigrsh_bang, big_split3, bigmul1_toom3, bigmul0): implement Toom3 (Toom-Cook)
+ multiplication.
- * include/ruby/ruby.h (NUM2SSIZET): fix type to cast.
+ * include/ruby/defines.h: add format prefixes for BDIGIT and BDIGIT_DBL.
-Sun Aug 5 21:10:36 2012 Narihiro Nakamura <authornari@gmail.com>
+Sun May 22 23:24:02 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * gc.c : if ENABLE_VM_OBJSPACE is 1, rest_sweep is not defined.
- remove unused declarations. [ruby-core:47004] [Bug #6837]
+ * ext/openssl/ossl_asn1.c: Instead of rb_intern use static symbols to
+ improve performance.
-Sun Aug 5 19:31:57 2012 Narihiro Nakamura <authornari@gmail.com>
+Sun May 22 21:56:51 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * gc.c: just move functions and so on. I don't touch any internal
- implementation.
+ * ext/openssl/ossl_asn1.c: Use OpenSSL constants V_ASN1_xxx instead of
+ hardcoded numbers for initializing class_tag_map.
-Sun Aug 5 13:22:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sun May 22 21:29:29 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
- * configure.in: use gcc-4.2 prior to clang, gcc, and cc if exist for
- the use of Snow Leopard's old clang. see also r36594, r36610, r36611.
+ * include/ruby/defines.h (CASEFOLD_FILESYSTEM): Revert r30508. See #4255.
+ Now __APPLE__ is not CASEFOLD_FILESYSTEM again.
-Sun Aug 5 06:55:10 2012 Tadayoshi Funaba <tadf@dotrb.org>
+ * load.c (loaded_feature_path, rb_feature_p, load_lock): Revert r30508.
+ See #4255. Make $LOADED_FEATURES scanning case-sensitive again.
- * ext/date/date_{core,strftime}.c: [ruby-core:46990].
+Sun May 22 18:59:27 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-Sat Aug 4 22:56:20 2012 Narihiro Nakamura <authornari@gmail.com>
+ * ext/openssl/ossl_asn1.c(ossl_asn1_default_tag): avoid using RCLASS_SUPER
+ to make it compilable. Plus, tabify and change variable definition style.
- * gc.c: use inline functions instead of macros, and close up
- related codes for the profiler.
+Sun May 22 18:26:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Aug 4 20:37:56 2012 Narihiro Nakamura <authornari@gmail.com>
+ * gc.c (vm_xcalloc): use calloc provided by platforms.
+ fixes #4754
- * gc.c (gc_mark_children): use gc_mark_ptr instead of marking
- a object directly.
+Sun May 22 11:44:53 2011 Eric Hodel <drbrain@segment7.net>
-Sat Aug 4 10:02:03 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * ext/pty/pty.c: Improve documentation. Patch by David Copeland.
+ [Ruby 1.9 - Bug #4756]
- * test/ruby/test_alias.rb (test_super_in_aliased_module_method):
- add a test case for [ruby-dev:46028], which fails in 1.8.
+Sun May 22 11:26:39 2011 Eric Hodel <drbrain@segment7.net>
-Sat Aug 4 01:56:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/timeout.rb: Improve documentation. Patch by David Copeland.
+ [Ruby 1.9 - Bug #4755]
- * vm_insnhelper.c (vm_search_normal_superclass): no longer needs
- receiver, klass is always unique in the ancestors now.
+Sun May 22 11:21:41 2011 Eric Hodel <drbrain@segment7.net>
-Sat Aug 4 01:27:40 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * lib/ipaddr.rb: Improve documentation. Patch by Sandor Szucs.
+ [Ruby 1.9 - Bug #4753]
- * insns.def (invokesuper): reverted r36612 so that super in an
- aliased method will not call the same method.
+Sun May 22 11:14:40 2011 Eric Hodel <drbrain@segment7.net>
-Fri Aug 3 19:26:10 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * lib/forwardable.rb: Document def_delegator. Patch by Sandor Szucs.
+ [Ruby 1.9 - Bug #4752]
- * insns.def (invokesuper): don't skip the same class. instead, use
- rb_method_entry_get_with_omod() to avoid infinite loop when
- super is used with refinements. [ruby-core:30450] [Bug #3351]
+Sun May 22 11:11:41 2011 Eric Hodel <drbrain@segment7.net>
-Fri Aug 3 19:21:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/fileutils.rb: Document block behavior of FileUtils.cd. Patch by
+ Bil Kleb. [Ruby 1.9 - Bug #4751]
- * configure.in: use clang prior to gcc only when self-compiling on
- darwin. search default compilers on other platforms. [Bug #6816]
+Sun May 22 11:07:47 2011 Eric Hodel <drbrain@segment7.net>
-Fri Aug 3 17:25:49 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/curses/curses.c: Complete documentation. Patch by Vincent
+ Batts. [Ruby 1.9 - Bug #4748]
- * configure.in: move RUBY_MINGW32 after AC_PROG_CC.
- RUBY_MINGW32 uses AC_TRY_CPP and it sets CC and CPP. [Bug #6816]
+Sun May 22 09:29:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * configure.in: don't use AC_PROG_CC in AS_CASE.
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
+ use spawn. it prevent that other tests inherit renamed $0.
-Fri Aug 3 17:21:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun May 22 08:57:13 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * test/runner.rb: get rid of loading previously installed gems.
- [ruby-dev:46025]
+ * ext/openssl/ossl_asn1.c: Default tag lookup in constant time via hash
+ instead of previous linear algorithm.
+ [Ruby 1.9 - Feature #4309][ruby-core:34813]
-Fri Aug 3 16:40:01 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+Sun May 22 07:54:16 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * .travis.yml (notifications): [experimental] IRC notifications.
+ * ext/openssl/ossl_digest.c: Explain DSS and DSS1 in documentation.
-Thu Aug 2 20:32:29 2012 Shugo Maeda <shugo@ruby-lang.org>
+Sun May 22 07:10:25 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * eval.c (rb_mod_using): new method Module#using. [experimental]
+ * test/openssl/test_pkey_dsa.rb: Add tests for sign/verify.
- * eval.c (rb_mod_refine): new method Module#refine. [experimental]
+Sun May 22 06:07:17 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * eval.c (f_using): new method Kernel#using. [experimental]
+ * test/openssl/test_x509cert.rb: Merge DSA-related tests from ruby_1_8
+ branch.
-Thu Aug 2 20:08:02 2012 Shugo Maeda <shugo@ruby-lang.org>
+Sun May 22 04:11:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * class.c, insns.def, method.h, proc.c, vm.c, vm_core.h, vm_eval.c,
- vm_insnhelper.c, vm_insnhelper.h, vm_method.c: add klass to
- rb_control_frame_t to implement super correctly.
+ * thread.c (Init_Thread): add a code comment why the meaningless
+ line is necessary.
-Thu Aug 2 13:23:08 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sun May 22 01:35:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * configure.in (AC_PROG_CC): AC_PROG_CC tries clang at first on
- darwin. [Bug #6816]
+ * ext/date/date_core.c: modified documentation.
-Thu Aug 2 11:39:25 2012 Narihiro Nakamura <authornari@gmail.com>
+Sat May 21 22:46:26 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * gc.c: return true or false. Patch by Dirkjan Bussink. [Bug #6821]
+ * ext/date/date_strftime(date_strftime_with_tmx): "%v" means "%e-%b-%Y".
- * test/ruby/test_gc.rb: add test-case for this bug.
+Sat May 21 22:14:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Thu Aug 2 10:51:12 2012 Martin Bosslet <Martin.Bosslet@gmail.com>
+ * io.c (rb_io_extract_modeenc): accept combination hash and
+ File::Constants. (eg. File.open('yo', :mode => File::WRONLY))
+ [Feature #4742][ruby-core:36338]
+ * test/ruby/test_io.rb (TestIO#test_open_mode): new test.
- * ext/openssl/lib/openssl/digest.rb
- test/openssl/test_digest.rb: Add Digest module function to OpenSSL
- module and test it. Patch provided by Eric Hodel.
- [ruby-core:46908][Feature #6819]
+Sat May 21 21:44:14 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Wed Aug 1 22:29:12 2012 Benoit Daloze <eregontp@gmail.com>
+ * test/date/test_switch_hitter.rb: new.
- * ext/digest/digest.c (hexencode_str_new): return an ASCII string
+Sat May 21 21:18:29 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * test/digest: tests for all kind of digests encodings
- [ruby-core:46792][Bug #6799]
+ * ext/date/date_{core,parse}.c: moved nearly all core code from ext/date/lib.
+ * ext/date/lib/{date,date/format}.rb: removed nearly all code.
-Wed Aug 1 05:50:53 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Sat May 21 02:58:46 2011 Eric Hodel <drbrain@segment7.net>
- * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_encoding):
- Fix test_encoding failure on Windows.
- With chcp 65001, 1252 and 437, test_encoding failed. Test result
- depends on locale because LANG environment variable doesn't affect
- locale on Windows.
- [ruby-core:46872] [Bug #6813]
+ * ext/.document: Add curses to documented extensions.
+ * ext/curses/curses.c: Improve documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4747]
-Wed Aug 1 00:33:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat May 21 02:51:01 2011 Eric Hodel <drbrain@segment7.net>
- * class.c (include_class_new): fix duplication of prepended module.
- since m_tbl of prepended module is always zero, copy from its
- copy iclass of original.
+ * ext/bigdecimal/lib/bigdecimal/util.rb: Improve documentation. Patch
+ by Pete Higgins. [Ruby 1.9 - Bug #4746]
-Tue Jul 31 18:22:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat May 21 02:44:10 2011 Eric Hodel <drbrain@segment7.net>
- * variable.c (classname): tell if found name is permanent. search
- tmp_classpath only if class id is set. [ruby-core:42865][Bug #6078]
+ * ext/bigdecimal/lib/bigdecimal/jacobian.rb: Document isEqual. Patch
+ by Kuba Fietkiewicz. [Ruby 1.9 - Bug #4744]
- * variable.c (rb_class_path): duplicate found temporary path.
+Sat May 21 02:22:34 2011 Eric Hodel <drbrain@segment7.net>
- * variable.c (rb_set_class_path_string, rb_set_class_path): set class
- id to find classpath.
+ * ext/date/lib/date/format.rb: Document date formats. Patch by
+ Clinton Nixon. [Ruby 1.9 - Bug #4743]
-Tue Jul 31 10:36:12 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+Fri May 20 05:15:19 2011 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
- * ext/psych/lib/psych.rb: updated to released version.
+ * gc.c: Fix build on m68k by 'error: too few arguments to
+ function 'mark_locations_array''.
- * ext/psych/psych.gemspec: ditto
+Fri May 20 04:23:42 2011 Eric Hodel <drbrain@segment7.net>
-Tue Jul 31 06:18:06 2012 Eric Hodel <drbrain@segment7.net>
+ * lib/scanf.rb: Improve documentation. Patch by Gabe McArthur.
+ [Ruby 1.9 - Bug #4735]
- * time.c (time_sec): Remove extra wording about leap seconds and refer
- directly to Wikipedia's leap second page for further information.
- [Bug #6749]
+Fri May 20 00:58:01 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Jul 30 23:01:47 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * enc/trans/ibm737-tbl.rb: greek code page. fixes #4738
- * lib/rubygems/platform.rb (Gem::Platform#initialize): Support pattern
- like x86_64-netbsd6.99.7.
+Thu May 19 14:44:05 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Mon Jul 30 21:00:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_signal.rb (test_signal_requiring): skip on Windows.
+ we can send SIGINT only to pid 0 and the process itself.
- * variable.c (find_class_path): no retry when preferred is given.
+Thu May 19 09:07:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * variable.c (classname): if classid is set try it to find full
- qualified class path, and then try arbitrary class path. try
- tmp_classpath at last even if enclosing namespace is anonymous.
- fix r36574. [ruby-core:42865][Bug #6078]
+ * lib: revert r31635-r31638 and untabify with expand(1).
- * variable.c (rb_set_class_path_string, rb_set_class_path): set
- tmp_classpath instead of classpath if the name is not permanent.
+Thu May 19 07:47:26 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Mon Jul 30 14:24:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/openssl/test_pkey_rsa.rb: Add tests for sign/verify.
- * variable.c: store anonymous class path in tmp_classpath but not in
- classpath. [ruby-core:42865][Bug #6078]
+Thu May 19 07:19:16 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Mon Jul 30 13:11:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/openssl/ossl_pkey.c: Add documentation.
- * configure.in (DLDFLAGS): on Darwin, deprecate -flat_namespace to get
- rid of huge imported symbols table.
+Thu May 19 07:06:56 2011 Eric Hodel <drbrain@segment7.net>
- * configure.in (LIBRUBY_RELATIVE): libruby_so is not made when
- disable-shared, so no absolute path is used for it and executable
- file is runnable anywhere.
+ * lib/benchmark.rb: Fix indentation.
+ * lib/net/imap.rb: Fix indentation of regular expressions.
-Mon Jul 30 01:30:10 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+Thu May 19 06:36:11 2011 Eric Hodel <drbrain@segment7.net>
- * common.mk: add a dependency. [ruby-core:46741] [Bug #6789]
+ * lib/net/imap.rb: Fix indentation of EOF for heredoc.
+ * lib/debug.rb (Commands): Fix indentation of EOHELP for heredoc.
-Sun Jul 29 15:44:47 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+Thu May 19 06:30:38 2011 Eric Hodel <drbrain@segment7.net>
- * thread.c (thread_create_core): hide th->async_errinfo_mask_stack from
- ObjectSpace.each_object. refix of r36539.
+ * lib/mkmf.rb: Fix indentation of EOM for heredoc.
-Sun Jul 29 23:57:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu May 19 06:16:41 2011 Eric Hodel <drbrain@segment7.net>
- * ext/socket/option.c (inet_ntop): use rb_w32_inet_ntop, instead of
- inet_ntop directly, which is unavailable on older version Windows.
+ * lib: Convert tabs to spaces for ruby files per
+ http://redmine.ruby-lang.org/projects/ruby/wiki/DeveloperHowto#coding-style
+ Patch by Steve Klabnik [Ruby 1.9 - Bug #4730]
+ Patch by Jason Dew [Ruby 1.9 - Feature #4718]
- * win32/win32.c (rb_w32_inet_ntop): type should be const.
+Thu May 19 06:06:07 2011 Eric Hodel <drbrain@segment7.net>
-Sun Jul 29 14:20:34 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+ * lib/cgi/util.rb: Improve documentation. Patch by Clinton Nixon.
+ [Ruby 1.9 - Bug #4733]
+ * lib/cgi/core.rb: ditto
+ * lib/cgi/cookie.rb: ditto
- * thread.c (Init_Thread): does not need to set klass
- explicitly.
+Thu May 19 06:02:21 2011 Eric Hodel <drbrain@segment7.net>
-Sun Jul 29 06:21:04 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * lib/tempfile.rb: Document Dir.mkdir and Dir.rmdir. Patch by Clinton
+ Nixon. [Ruby 1.9 - Bug #4728]
- * win32/win32.c: suppress warning redeclared on mingw64.
- *_s functions are declared if MINGW_HAS_SECURE_API is defined.
- Follow up r36556.
+Thu May 19 05:57:52 2011 Eric Hodel <drbrain@segment7.net>
-Sun Jul 29 00:28:46 2012 Narihiro Nakamura <authornari@gmail.com>
+ * encoding.c: Improve documentation for Encoding#default_external and
+ Encoding#default_internal.
- * gc.c: remove unused initialization.
+Wed May 18 22:45:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Jul 28 16:26:09 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * ext/io/console/lib/console/size.rb (IO#console_size): new
+ method. (EXPERIMENTAL)
- * win32/win32.c (gmtime_r): use _gmtime64_s() with x86_64-w64-mingw32.
+Wed May 18 22:41:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * win32/win32.c (localtime_r): use _localtime64_s() with
- x86_64-w64-mingw32. Since FileTimeToSystemTime() seems not work with
- large value under x64. Mingw-w64 doesn't have these declaration.
- [ruby-core:46780] [Bug #6794]
+ * internal.h: add for internal use only.
-Fri Jul 27 18:25:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed May 18 22:36:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (rb_io_check_io): make public.
+ * eval.c (setup_exception): internal exception should be hidden
- * process.c (check_exec_redirect): try conversion to IO on redirect
- parameters. [ruby-core:44181] [Bug #6269]
+Wed May 18 20:25:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Fri Jul 27 17:58:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/timeout.rb (Timeout#timeout): don't leak "execution expired"
+ exception. [Bug #4283] [ruby-core:34534].
- * configure.in (RUBY_CPPOUTFILE): get rid of variable conflict so
- CPPFLAGS is not duplicated. [ruby-core:43097] [Bug #6119]
+Wed May 18 06:09:24 2011 Eric Hodel <drbrain@segment7.net>
-Fri Jul 27 12:12:36 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/cmath.rb: Add some examples and improve documentation. Patch by
+ Sandor Szucs. [Ruby 1.9 - Bug #4727]
- * win32/mkexports.rb: should not export DllMain().
- reported by luis at [ruby-core:46743] [Bug #6790], solved by
- Heesob Park, and confirmed by nobu.
+Wed May 18 05:40:31 2011 Eric Hodel <drbrain@segment7.net>
-Thu Jul 26 14:51:29 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * lib/benchmark.rb: Remove nodoc from Benchmark::Job and
+ Benchmark::Report. Patch by Sandor Szucs. [Ruby 1.9 - Bug #4726]
- * test/net/http/test_https.rb (TestNetHTTPS#test_session_reuse):
- localhost is not (always) 127.0.0.1. Don't expect that.
+Wed May 18 05:29:26 2011 Eric Hodel <drbrain@segment7.net>
-Thu Jul 26 07:18:38 2012 <kanemoto@ruby-lang.org>
+ * lib/webrick/compat.rb: Improve documentation. Patch by Sandor
+ Szucs. [Ruby 1.9 - Bug #4725]
- * ext/json/fbuffer/fbuffer.h: avoid compilation error on AIX by
- -ansi -std=iso9899:199409 (r36038). [ruby-core:46744] [Bug #6791].
+Wed May 18 05:10:35 2011 Eric Hodel <drbrain@segment7.net>
-Thu Jul 26 00:42:23 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * lib/tracer.rb: Improve documentation. Patch by Richard Ramsden.
+ [Ruby 1.9 - Feature #4720]
- * thread.c (thread_create_core, Init_Thread): hide
- th->async_errinfo_queue and th->async_errinfo_mask_stack from
- ObjectSpace.each_object.
+Wed May 18 04:53:41 2011 Eric Hodel <drbrain@segment7.net>
-Wed Jul 25 17:41:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/cmath.rb: Improve documentation. Patch by Jason Dew.
+ [Ruby 1.9 - Feature #4717]
- * complex.c, rational.c: compatible marshal loader for compatibilities
- with 1.8. [ruby-core:45775] [Bug #6625]
+Wed May 18 04:50:24 2011 Eric Hodel <drbrain@segment7.net>
-Wed Jul 25 17:17:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/net/ftp.rb: Improve documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4710]
- * atomic.h: prefer GCC atomic builtins than Windows APIs, if possible,
- since they are generic.
+Wed May 18 03:14:49 2011 Eric Hodel <drbrain@segment7.net>
-Wed Jul 25 11:16:57 2012 Eric Hodel <drbrain@segment7.net>
+ * test/test_singleton.rb: Add tests from lib/singleton.rb. Patch by
+ Pete Higgins. [Ruby 1.9 - Bug #4715]
- * lib/net/.document: Removed. All files in net/ should be included in
- RDoc.
+Wed May 18 03:03:07 2011 Eric Hodel <drbrain@segment7.net>
-Wed Jul 25 10:00:23 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/singleton.rb: Improve documentation. Patch by Pete Higgins.
+ [Ruby 1.9 - Bug #4709]
- * test/testunit/test_redefinition.rb: broken class/method names.
+Tue May 17 21:24:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Jul 25 09:26:32 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * thread.c (rb_mutex_lock): remove remove_signal_thread_list() call.
+ It's meaningless because lock_interrupt doesn't call
+ add_signal_thread_list().
- * lib/cgi/html.rb: Use << instead of +=.
- `a += b` is syntax sugar of `a = a + b`; it creates a new string
- object. `a << b` is concatenation and doesn't create new object.
+Tue May 17 20:20:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Jul 25 09:16:26 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * vm_core.h (rb_thread_struct): add volatile to
+ transition_for_lock because it is not protected by lock.
- * lib/cgi/html.rb (element_init): suppress redefine warning.
- Don't define methods if they are already defined.
+Tue May 17 20:08:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Wed Jul 25 09:05:38 2012 Eric Hodel <drbrain@segment7.net>
+ * LEGAL (missing/{elf,tgamma,lgamma_r}.c): they've been replaced by
+ public domain implementations.
- * lib/net/http.rb: Added SSL session reuse across connections for a
- single instance to speed up connection. [Feature #5341]
- * NEWS: ditto
- * test/net/http/test_https.rb: Tests for #5341
+ * LEGAL (vsnprintf.c): it has moved to srcdir from missing/.
-Wed Jul 25 06:54:24 2012 Eric Hodel <drbrain@segment7.net>
+ * LEGAL (missing/crypt.c): list its original license.
- * doc/re.rdoc: Fix spelling
+Tue May 17 19:54:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Jul 25 06:49:12 2012 Eric Hodel <drbrain@segment7.net>
+ * LEGAL (configure): add missing/setproctitle.c
- * re.c (rb_reg_s_last_match): Update $~ to reference Regexp
- documentation about "special global variables". [Bug #6723]
+Tue May 17 19:35:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ Fix FreeBSD test failure.
-Wed Jul 25 06:28:56 2012 Eric Hodel <drbrain@segment7.net>
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
+ use ps -o command instead of ps -o cmd. FreeBSD doesn't support
+ -o cmd option.
- * iseq.c: Added documentation. Patch by David Albert. [Bug #6785]
+Tue May 17 08:04:26 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Wed Jul 25 03:05:06 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * ext/openssl/ossl_digest.c: Add documentation.
- * parse.y: added symbols and qsymbols productions for %i and %I
- support. %i{ .. } returns a list of symbols without interpolation,
- %I{ .. } returns a list of symbols with interpolation. Thanks to
- Josh Susser for inspiration of this feature. [Feature #4985]
+Tue May 17 07:14:58 2011 Eric Hodel <drbrain@segment7.net>
- * ext/ripper/eventids2.c: added ripper events for %i and %I.
+ * lib/net/http.rb: Improve documentation of proxy configuration
+ methods. Patch by Alf Mikula. [Ruby 1.9 - Bug #4714]
- * test/ripper/test_parser_events.rb: ripper tests
+Tue May 17 07:09:01 2011 Eric Hodel <drbrain@segment7.net>
- * test/ripper/test_scanner_events.rb: ditto
+ * lib/net/pop.rb: Improve documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4711]
+ * lib/net/telnet.rb: ditto
- * test/ruby/test_array.rb: test for %i and %I behavior
+Tue May 17 07:00:41 2011 Eric Hodel <drbrain@segment7.net>
-Tue Jul 24 23:34:43 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * lib/net/http.rb: Fix nodoc for Net::HTTP::version_1_1?. Patch by
+ Alf Mikula. [Ruby 1.9 - Bug #4713]
- * include/ruby/win32.h (rb_w32_pow): add new function.
- We use powl() instead of broken pow() for x64-mingw32. This workaround
- fixes test failures related to floating point numeric.
- [ruby-core:46686] [Bug #6784]
+Tue May 17 06:56:26 2011 Eric Hodel <drbrain@segment7.net>
-Tue Jul 24 15:01:24 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/optparse.rb: Add link to make_switch to improve documentation.
+ Patch by David Copeland. [Ruby 1.9 - Bug #4708]
- * win32/win32.c (rb_w32_socket, rb_w32_socketpair): remember the family
- in the high word of socklist value.
+Tue May 17 06:50:40 2011 Eric Hodel <drbrain@segment7.net>
- * win32/win32.c (overlapped_socket_io, recvmsg, sendmsg, setfl): follow
- above changes.
+ * lib/observer.rb: Improve documentation. Patch by David Copeland.
+ [Ruby 1.9 - Bug #4707]
- * win32/win32.c (rb_w32_getsockname): set remembered family to the
- argument when OS's function fails.
+Tue May 17 06:42:53 2011 Eric Hodel <drbrain@segment7.net>
-Tue Jul 24 12:35:13 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/logger.rb: Improve documentation. Patch by David Copeland.
+ [Ruby 1.9 - Bug #4706]
- * test/ruby/test_dir_m17n.rb: remove a garbage.
+Tue May 17 06:28:14 2011 Eric Hodel <drbrain@segment7.net>
- * test/ruby/test_dir_m17n.rb: convert from ascii-8bit to other encoding
- with 8bit bytes always fails.
+ * lib/gserver.rb: Improve documentation. Patch by David Copeland.
+ [Ruby 1.9 - Bug #4705]
-Tue Jul 24 12:32:18 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue May 17 06:21:15 2011 Eric Hodel <drbrain@segment7.net>
- * test/ruby/test_dir_m17n.rb: sorry, typo.
+ * lib/cgi.rb: Add toplevel documentation to class CGI
+ * lib/cgi/session.rb: Add overview documentation to CGI::Cookie
+ * lib/cgi/html.rb: Don't add CGI::TagMaker documentation to CGI.
+ Patch by David Copeland. [Ruby 1.9 - Bug #4704]
+ * lib/cgi/core.rb: Clean up CGI documentation. Patch by David
+ Copeland. [Ruby 1.9 - Bug #4704]
+ * lib/cgi/cookie.rb: Clean up CGI::Cookie documentation. Patch by
+ David Copeland. [Ruby 1.9 - Bug #4704]
-Tue Jul 24 12:13:26 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue May 17 05:52:30 2011 Eric Hodel <drbrain@segment7.net>
- * test/ruby/test_dir_m17n.rb: refactoring. RE should be in the left side
- of the =~ operator, and compare the result with nil is meaningless.
+ * ext/digest: Improve documentation of Digest, Digest::HMAC and
+ Digest::SHA2. Patch by Pete Higgins. [Ruby 1.9 - Bug #4702]
-Tue Jul 24 11:35:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue May 17 03:51:42 2011 Eric Hodel <drbrain@segment7.net>
- * test/ruby/test_pack.rb (test_pack_unpack_M): was redefined
- accidentally.
+ * lib/abbrev.rb: Hide copyright and revision information from RDoc.
+ Inspired by patch from David Copeland, bug #4703.
-Tue Jul 24 09:31:18 2012 Eric Hodel <drbrain@segment7.net>
+Tue May 17 03:33:21 2011 Eric Hodel <drbrain@segment7.net>
- * lib/rubygems: Updated to RubyGems 1.8.24, a bugfix release.
+ * lib/timeout.rb (module Timeout): Hide internal constants. Patch by
+ Pete Higgins. [Ruby 1.9 - Bug #4701]
-Tue Jul 24 08:30:15 2012 Luis Lavena <luislavena@gmail.com>
+Mon May 16 11:21:09 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * test/ruby/test_dir_m17n.rb (create_and_check_raw_file_name): add new
- helper method to ease encoding testing. Patch by Oleg Sukhodolsky.
- [ruby-core:46589][Bug #6765]
+ * configure.in, win32/Makefile.sub (RUBY_SO_NAME): add CPU as prefix
+ of RUBY_SO_NAME on x64/ia64 mswin/mingw.
+ [Feature #4602]
- * test/ruby/test_dir_m17n.rb (test_filename_extutf8): use filesystem
- encoding when reading entries and comparing.
+Mon May 16 08:00:05 2011 Eric Hodel <drbrain@segment7.net>
- * test/ruby/test_dir_m17n.rb (test_filename_utf8_raw_name): removed.
+ * lib/rdoc.rb: Update to RDoc 3.6.1, allows OpenSSL::Digest to be
+ found.
- * test/ruby/test_dir_m17n.rb (test_filename_utf8_raw_jp_name): split test.
-
-Tue Jul 24 08:09:30 2012 Luis Lavena <luislavena@gmail.com>
+Mon May 16 05:49:54 2011 Eric Hodel <drbrain@segment7.net>
- * test/win32ole/test_win32ole_method.rb (is_ruby64?): Correct platform
- used to identify mingw-w64 (x64-mingw32). Patch by Hiroshi Shirosaki.
- [ruby-core:46651][Bug #6782]
+ * lib/drb/acl.rb: Add documentation.
-Tue Jul 24 07:22:58 2012 Eric Hodel <drbrain@segment7.net>
+Mon May 16 05:13:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * time.c (time_sec): Updated description of leap seconds for accuracy.
- Based on patch by Marcus Stollsteimer. [Bug #6749]
+ * ext/openssl/ossl_asn1.c: Add documentation.
-Tue Jul 24 07:03:11 2012 Eric Hodel <drbrain@segment7.net>
+Mon May 16 00:32:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * string.c (rb_str_sub): Fixed wording of documentation to match the
- replacement operation. Minor cleanup of markup. [Bug #6719]
- * string.c (rb_str_sub_bang): Minor wording change for clarity, minor
- cleanup of markup.
+ * test/ruby/test_signal.rb (TestSignal#test_signal_process_group):
+ skip if the platform doesn't have :pgroup capability. (i.e. skip
+ if mswin32)
-Mon Jul 23 23:58:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun May 15 23:53:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * enc/Makefile.in (TARGET_NAME, TARGET_ENTRY): needed for EXTDLDFLAGS
- on some platforms. [ruby-core:46600] [Bug #6768]
+ * include/ruby/intern.h: resurrect old rb_fd_copy().
+ * thread.c (rb_fd_copy): ditto.
- * enc/depend: no longer needs tweaking DLDFLAGS for TARGET names.
+Sun May 15 23:45:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Jul 23 22:48:19 2012 Tanaka Akira <akr@fsij.org>
+ * include/ruby/intern.h: remove rb_fd_copy() to rb_fd_dup() and
+ rb_w32_fdcopy() to rb_w32_fd_dup().
+ * win32/win32.c: ditto.
+ * thread.c: ditto.
- * lib/open-uri.rb: use respond_to? to test Tempfile.
- [ruby-dev:45995] [Bug #6781] reported by hsbt (Hiroshi SHIBATA).
+Sun May 15 22:26:39 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Mon Jul 23 14:43:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * signal.c (rb_f_kill): accept '-SIGXXX' style signal with Symbol or
+ implicit convertion with #to_str. [ruby-dev:43169] fixes #4362
+ * test/ruby/test_signal.rb (test_signal_process_group): add a test
+ for send signal to process group.
- * configure.in (LIBPATHENV): LIBPATH is used on AIX, but not
- SHLIB_PATH which was carelessly copied from HP/UX. suggested by
- Perry Smith at [ruby-core:46397]. [Bug #6728]
+Sun May 15 21:22:35 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Mon Jul 23 01:55:08 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * cont.c (cont_init): clear macihne_stack_start/end of saved thread to
+ prevent mark machine stack of GC'ed Thread. root Fiber is not
+ initialized by fiber_init().
+ based on a patch by Serge Balyuk [ruby-core:35891] fixes #4612
+ * test/ruby/test_fiber.rb (test_gc_root_fiber): add test for it.
- * test/uri/test_generic.rb (URI#test_find_proxy): add tests with
- empty *_proxy env variables.
+Sun May 15 21:04:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Jul 23 01:47:26 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * transcode.c (econv_init): revert r31353. [ruby-dev:43512]
- * test/uri/test_generic.rb (URI#with_env): unset proxy related env
- variables. [Bug #6774]
+Sun May 15 03:39:35 2011 Eric Hodel <drbrain@segment7.net>
- * test/uri/test_generic.rb (URI#test_find_proxy): fix failures
- when proxy related env variables already set. [Bug #6774]
+ * ext/zlib/zlib.c: Improve documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4695]
-Sun Jul 22 23:58:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sun May 15 03:23:46 2011 Eric Hodel <drbrain@segment7.net>
- * thread.c (rb_threadptr_execute_interrupts_common): increase
- running_time_us on THREAD_TO_KILL like on THREAD_RUNNABLE.
- This cause not to switch from a thread which is to be killed
- on FreeBSD and Mac OS X. see also the test.
- This issue maybe exist for long time but happens after r36430.
+ * lib/erb.rb: Document ERB::Compiler. Patch by Simon Chiang.
+ [Ruby 1.9 - Bug #4694]
-Sat Jul 21 06:21:45 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sun May 15 00:58:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ fix mswin32 build error.
- * lib/net/http.rb: fixes for r36476. [Feature #6546]
- http://u64.rubyci.org/~chkbuild/ruby-trunk/log/20120720T030101Z.diff.html.gz
+ * missing/setproctitle.c: add #ifdef HAVE_UNISTD_H.
+ * win32/Makefile.sub (MISSING): add setproctitle.obj
- * lib/net/http.rb (Net::HTTP.newobj): return back for compatibility.
+Sat May 14 22:45:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/net/http.rb (Net::HTTP.new): set default_port if proxy port is
- not given.
+ * missing/setproctitle.c: add to include "ruby/util.h".
- * lib/net/http.rb (Net::HTTP#initialize): ditto.
+Sat May 14 19:52:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/net/http.rb (Net::HTTP#proxy?): return true or false.
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
+ add for $0 test.
- * lib/net/http.rb (Net::HTTP#proxy_address): check proxy_uri is not nil.
+Sat May 14 19:50:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/net/http.rb (Net::HTTP#proxy_port): ditto.
+ * missing/setproctitle.c (compat_init_setproctitle): use
+ ruby_strdup() instead of strdup().
-Sat Jul 21 23:12:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat May 14 19:37:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * thread_pthread.c (ruby_init_stack): STACK_GROW_DIR_DETECTION is
- necessary on platforms with unknown stack direction. [Bug #6761]
+ * include/ruby/missing.h: add setproctitle() declaration.
+ * missing/setproctitle.c: added.
+ * configure.in: add check for missing/setproctitle.c.
-Sat Jul 21 15:13:42 2012 Shota Fukumori <sorah@tubusu.net>
+ * ruby.c (ruby_process_options): add to call compat_init_setproctitle().
+ * ruby.c (set_arg0): remove all platform specific code. it's
+ moved to missing/setproctitle.c.
+ * ruby.c (origarg): remove len field. It's no longer used.
+ * ruby.c (get_arglen): removed.
- * lib/test/unit/testcase.rb (method_added): refactoring.
+ This patch makes a lot of cleanup set_arg0 related code and fixes
+ [Feature #4689].
-Sat Jul 21 14:06:41 2012 Shota Fukumori <sorah@tubusu.net>
+Sat May 14 17:42:21 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * lib/test/unit/testcase.rb: warn when test_* method is redefined.
- Patch by mame (Yusuke Endoh). [Feature #2643] [ruby-core:27790]
+ * process.c (rb_proc_times): improve documentation.
+ [ruby-core:35785] fixes #4581, reported by Andrew Grimm.
- * test/testunit/test_redefinition.rb: Test for above.
+Sat May 14 12:12:54 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * test/testunit/test4test_redefinition.rb: Ditto.
+ * test/openssl/test_pkey_dsa.rb: Add basic tests and tests that
+ ensure new public key PEM encoding behavior and ensure backward
+ compatibility.
+ [Ruby 1.9 - Bug #4422] [ruby-core:35328]
+ * test/openssl/test_pkey_rsa.rb: Remove line with 'puts'.
-Sat Jul 21 08:41:14 2012 Eric Hodel <drbrain@segment7.net>
+Sat May 14 12:06:49 2011 Eric Hodel <drbrain@segment7.net>
- * lib/logger.rb: Updated example in Logger comment to match other
- examples and fixed a bug. Patch by Marcus Stollsteimer.
- [Bug #6759]
+ * lib/rdoc/context.rb (class RDoc): Fix infinite loop caused by
+ re-encountering BasicObject.
-Fri Jul 20 17:20:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat May 14 10:32:36 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * random.c (rb_random_real): refine error message.
+ * test/openssl/test_pkey_rsa.rb: Add tests that ensure new public key
+ encoding behavior and also ensure backward compatibility.
+ [Ruby 1.9 - Bug #4421] [ruby-core:35327]
-Fri Jul 20 11:03:17 2012 Eric Hodel <drbrain@segment7.net>
+Sat May 14 09:50:10 2011 Eric Hodel <drbrain@segment7.net>
- * NEWS: Updated net/http for automatic proxy detection (#6546) and
- automatic gzip and deflate compression (#6492, #6494).
+ * lib/yaml/dbm.rb: Add documentation. Patch by Justin Collins.
+ [Ruby 1.9 - Bug #4693]
+ * lib/yaml/store.rb: ditto
-Fri Jul 20 10:55:38 2012 Eric Hodel <drbrain@segment7.net>
+Sat May 14 09:31:43 2011 Eric Hodel <drbrain@segment7.net>
- * lib/net/http.rb: Net::HTTP now automatically detects and uses
- proxies from the environment. A proxy may also be specified as
- before.
+ * lib/rdoc.rb: Updated to RDoc 3.6
- Net::HTTP::Proxy still creates anonymous classes, but these classes
- are only used to store configuration information. When an HTTP
- instance is created the configuration is now copied.
+Sat May 14 07:30:29 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- Additionally, Net::HTTP::ProxyDelta is no longer used by Net::HTTP
+ * ext/psych/lib/psych.rb: released a new gem, so increasing version.
- [Feature #6546]
- * lib/open-uri.rb: Moved URI::Generic#find_proxy to uri/generic.
- * lib/uri/generic.rb: Imported find_proxy from open-uri.
- * test/open-uri/test_open-uri.rb: Moved proxy-discovery tests to URI.
- * test/uri/test_generic.rb: Imported proxy-discovery tests from
- open-uri.
- * test/net/http/test_http.rb: Added tests for proxy behavior.
+Sat May 14 05:08:32 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Fri Jul 20 09:34:11 2012 Eric Hodel <drbrain@segment7.net>
+ * ext/openssl/ossl_digest.c
+ * ext/openssl/ossl_pkey.c
+ * ext/openssl/ossl_pkey.h
+ * test/openssl/pkey/test_pkey_rsa.rb
+ Reverted premature commit. Sorry for the noise!
- * test/socket/test_socket.rb: Ignore IPv6 unique local addresses on OS
- X (iCloud Back to my Mac addresses) for test_udp_socket since they do
- not act as loopback addresses. [Bug #6692]
+Sat May 14 05:02:58 2011 Eric Hodel <drbrain@segment7.net>
-Fri Jul 20 09:32:14 2012 Eric Hodel <drbrain@segment7.net>
+ * lib/uri.rb: Add toplevel documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4690]
- * ext/socket/raddrinfo.c (addrinfo_ipv6_unique_local_p): Added
- Addrinfo#ipv6_unique_local? to detect RFC 4193 unique local
- addresses. Part of #6692
- * ext/socket/rubysocket.h: Add IN6_IS_ADDR_UNIQUE_LOCAL macro if
- missing.
- * test/socket/test_addrinfo.rb: Test for ipv6_unique_local?
+Sat May 14 04:19:06 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Fri Jul 20 07:40:32 2012 Eric Hodel <drbrain@segment7.net>
+ * NEWS: Describe altered behaviour for RSA and DSA public key
+ encoding. [Ruby 1.9 - Bug #4421, Bug #4422]
+ [ruby-core:35327,35328]
- * lib/net/http/response.rb: Automatically inflate gzip and
- deflate-encoded response bodies. [Feature #6942]
- * lib/net/http/generic_request.rb: Automatically accept gzip and
- deflate content-encoding for requests. [Feature #6494]
- * lib/net/http/request.rb: Updated documentation for #6494.
- * lib/net/http.rb: Updated documentation for #6492 and #6494, removed
- Content-Encoding handling now present in Net::HTTPResponse.
- * test/net/http/test_httpresponse.rb: Tests for #6492
- * test/net/http/test_http_request.rb: Tests for #6494
- * test/open-uri/test_open-uri.rb (test_content_encoding): Updated test
- for automatic content-encoding handling.
+Sat May 14 02:57:52 2011 Eric Hodel <drbrain@segment7.net>
-Fri Jul 20 03:42:54 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/ipaddr.rb (unless Socket): Document valid*? methods. Patch by
+ Sebastian Martinez. [Ruby 1.9 - Feature #4687]
- * thread_pthread.c: use #ifdef, not #if.
+Sat May 14 02:54:04 2011 Eric Hodel <drbrain@segment7.net>
-Thu Jul 19 15:08:40 2012 Koichi Sasada <ko1@atdot.net>
+ * lib/rexml/functions.rb: Add some documentation for REXML::Functions.
+ Patch by Sebastian Martinez. [Ruby 1.9 - Feature #4688]
- * thread.c (rb_thread_s_control_interrupt,
- rb_thread_s_check_interrupt): added for
- Thread.control_interrupt and Thread.check_interrupt.
- See details on rdoc.
- I'll make an ticket for this feature.
+Sat May 14 02:51:42 2011 Eric Hodel <drbrain@segment7.net>
- * test/ruby/test_thread.rb: add a test for Thread.control_interrupt.
+ * lib/resolv.rb: Hide private method and state-tracking constants from
+ RDoc. Patch by Mark Turner. [Ruby 1.9 - Feature #4691]
- * thread.c (rb_threadptr_raise): make a new exception object
- even if argc is 0.
+Fri May 13 19:23:21 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
- * thread.c (rb_thread_kill): kill thread immediately if target thread
- is current thread.
+ * numeric.c (flo_coerce): Add #flo_coerce documentation.
+ Patch by Sebastian Martinez.
+ https://github.com/ruby/ruby/pull/21
- * vm_core.h (RUBY_VM_CHECK_INTS_BLOCKING): added.
- CHECK_INTS while/after blocking operation.
+Fri May 13 18:42:22 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
- * vm_core.h (RUBY_VM_CHECK_INTS): require rb_thread_t ptr.
+ * README.EXT: fix typo. Patch by William Blackerby.
+ https://github.com/ruby/ruby/pull/19
- * cont.c (fiber_switch): use replaced RUBY_VM_CHECK_INTS().
+ * README.EXT.ja: ditto.
- * eval.c (ruby_cleanup): ditto.
+Fri May 13 15:22:34 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * insns.def: ditto.
+ * win32/win32.c (rb_w32_select): check invalid handle before doing
+ select operations. see [ruby-dev:43513], [ruby-dev:43535]
- * process.c (rb_waitpid): ditto.
+Fri May 13 08:34:00 2011 Eric Hodel <drbrain@segment7.net>
- * vm_eval.c (vm_call0): ditto.
+ * lib/rdoc/rdoc.rb: Output summary after documentation report.
+ * lib/rdoc/stats/normal.rb: Don't output information for users when
+ we're not on a TTY
- * vm_insnhelper.c (vm_call_method): ditto.
+Fri May 13 07:49:02 2011 Eric Hodel <drbrain@segment7.net>
-Thu Jul 19 22:46:48 2012 Tanaka Akira <akr@fsij.org>
+ * lib/fileutils.rb: Hide internal methods from RDoc. Patch by Darragh
+ Curran. [Ruby 1.9 - Bug #4684]
- * test/ruby/test_io.rb: remove temporally files early.
+Fri May 13 07:36:23 2011 Eric Hodel <drbrain@segment7.net>
-Thu Jul 19 15:38:35 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * lib/webrick/httpservlet/erbhandler.rb: Add documentation.
- * variable.c (rb_mod_class_variables): return inherited variables
- except when the optional argument is set to false.
- [ruby-dev:44034] [Bug #4971]
+Fri May 13 07:04:33 2011 Eric Hodel <drbrain@segment7.net>
- * variable.c (rb_mod_constants): fix typo in documentation.
+ * lib/mathn.rb: Fix indentation. Patch by Jason Dew.
+ [Ruby 1.9 - Feature #4682]
-Thu Jul 19 14:30:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri May 13 06:50:43 2011 Eric Hodel <drbrain@segment7.net>
- * internal.h: move mark function declarations that should be private.
+ * lib/mathn.rb: Add documentation. Patch by Jason Dew. [Ruby 1.9 -
+ Feature #4667]
-Thu Jul 19 14:18:22 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri May 13 05:44:19 2011 Eric Hodel <drbrain@segment7.net>
- * ext/socket/init.c (rsock_init_sock): need to update max fd on all
- platforms.
+ * lib/logger.rb (class Logger): Document Logger#datetime_format.
+ Patch by Sergio Gil Perez de la Manga. [Ruby 1.9 - Bug #4678]
-Thu Jul 19 14:15:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri May 13 05:39:11 2011 Eric Hodel <drbrain@segment7.net>
- * thread.c (rb_gc_mark_threads): remove deprecated function.
+ * re.c (Init_Regexp): Document option constants. Patch by Vincent
+ Batts. [Ruby 1.9 - Bug #4677]
+ * lib/uri/common.rb (module URI): Documentation for URI. Patch by
+ Vincent Batts. [Ruby 1.9- Bug #4677]
+ * lib/uri/ftp.rb (module URI): ditto
+ * lib/uri/generic.rb (module URI): ditto
+ * lib/uri/http.rb (module URI): ditto
+ * lib/uri/https.rb (module URI): ditto
+ * lib/uri/ldap.rb (module URI): ditto
+ * lib/uri/ldaps.rb (module URI): ditto
+ * lib/uri/mailto.rb (module URI): ditto
+ * process.c (Init_process): Document Process constants. Patch by
+ Vincent Batts. [Ruby 1.9- Bug #4677]
-Thu Jul 19 13:28:03 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri May 13 05:16:38 2011 Eric Hodel <drbrain@segment7.net>
- * test/net/http/test_http.rb (TestNetHTTPLocalBind#test_bind_to_local*):
- re-enable the tests because now it's OK on windows.
+ * lib/rss/atom.rb (module RSS): Document URIs. Patch by Mark Turner.
+ [Ruby 1.9 - #4671]
+ * lib/rss/rss.rb (module RSS): Document exception classes. Patch by
+ Mark Turner. [Ruby 1.9 - #4671]
-Thu Jul 19 13:26:25 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri May 13 02:15:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/socket/extconf.rb: now enable IPv6 by default on mswin.
+ * io.c (select_internal): remove unused variable (interrupt_flag).
-Thu Jul 19 09:33:46 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+Thu May 12 18:24:34 2011 Kouhei Sutou <kou@clear-code.com>
- * ext/psych/emitter.c (initialize): allow a configuration object to be
- passed to the constructor so that mutation isn't required after
- instantiation.
+ * configure.in: limit to "T" type for prefix of external symbols
+ because x86_64-w64-mingw32-gcc on Debian GNU/Linux generates the
+ following symbol:
+ 0000000068483390 D _GLOBAL__F__conftest_external
- * ext/psych/lib/psych/handler.rb: add configuration object
+ Approved by nobu.
- * ext/psych/lib/psych/visitors/emitter.rb: use configuration object if
- extra configuration is present.
+Thu May 12 14:50:52 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Thu Jul 19 08:20:25 2012 Tanaka Akira <akr@fsij.org>
+ * test/dl/test_base.rb (Fiddle::LIBC_SO): its always msvc*.dll on
+ mswin/mingw.
- * test/ruby/test_file.rb: remove temporally files early.
+Thu May 12 14:47:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Thu Jul 19 07:37:41 2012 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+ * lib/mkmf.rb (Logging.postpone): copy only when temporary logfile
+ exists.
- * test/drb/drbtest.rb: fixed: can't delete unix domain sockets problem.
+Thu May 12 12:24:22 2011 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-Thu Jul 19 03:41:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/openssl/ossl_ssl.c: By trunk@31346, function check of SSLv2 is
+ executed.
+ However, the problem is not revised in this.
+ This adds the control of using function of SSLv2 in made macro by
+ function check.
- * bignum.c: Added #include <strings.h> for ffs(). Patch by Perry
- Smith. Thank you. [Bug #6748]
+Thu May 12 08:10:46 2011 Eric Hodel <drbrain@segment7.net>
-Thu Jul 19 01:56:02 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * lib/set.rb (class Set): Add nodoc to internal-use methods. Patch
+ by Pete Higgins. [Ruby 1.9 - Bug #4665]
- * include/ruby/intern.h (rb_num_zerodiv): Added NORETURN.
- Patched by Xi Wang. [Bug #6736]
+Thu May 12 08:01:14 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-Wed Jul 18 23:57:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/openssl/ossl_pkey_ec.c: Allow encryption when PEM-encoding
+ Elliptic Curve private keys.
+ [ruby-core:35329] [Bug #4423]
- * pack.c (pack_pack): round down too long uuencode width. folding
- width in uuencode format cannot be longer than 63 bytes.
+Thu May 12 07:54:59 2011 Eric Hodel <drbrain@segment7.net>
-Wed Jul 18 23:04:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * object.c (rb_obj_equal): Add documentation. Patch by Vincent Batts.
+ [Ruby 1.9 - Bug #4664]
+ * lib/rexml: ditto
+ * lib/mkmf.rb: ditto
+ * ext/socket/lib/socket.rb: ditto
- * ext/dbm/dbm.c (fdbm_empty_p): fix wrong condition introduced in r36438.
+Thu May 12 07:30:08 2011 Eric Hodel <drbrain@segment7.net>
- * ext/sdbm/init.c (fsdbm_empty_p): ditto.
+ * Various .document files: Update .document files to match files which
+ have documentation.
-Wed Jul 18 23:08:57 2012 Tanaka Akira <akr@fsij.org>
+Thu May 12 07:18:45 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * test/ruby/test_beginendblock.rb: remove temporally files early.
+ * ext/openssl/ossl_pkey_dsa.c: Use generic X.509 SubjectPublicKeyInfo
+ format for PEM-encoding DSA public keys.
+ [ruby-core:35328] [Bug #4422]
-Wed Jul 18 22:43:02 2012 Tanaka Akira <akr@fsij.org>
+Thu May 12 06:27:31 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
- * test/ruby/test_autoload.rb: remove temporally files early.
+ * ext/openssl/ossl_pkey_rsa.c: Use generic X.509 SubjectPublicKeyInfo
+ format for encoding RSA public keys.
+ [ruby-core:35327] [Bug #4421]
-Wed Jul 18 21:59:46 2012 Tanaka Akira <akr@fsij.org>
+Wed May 11 19:45:27 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
- * test/ruby/test_argf.rb: use temporally directory.
+ * lib/forwardable.rb: support 'delegate :foo => :bar' for to meet
+ by specification of RDOC.
-Wed Jul 18 19:41:19 2012 Tanaka Akira <akr@fsij.org>
+Wed May 11 08:36:38 2011 Eric Hodel <drbrain@segment7.net>
- * test/openssl/test_config.rb: remove temporally files early.
+ * lib/webrick: Add documentation for WEBrick::HTTPAuth
-Wed Jul 18 17:45:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed May 11 03:06:35 2011 Eric Hodel <drbrain@segment7.net>
- * error.c (rb_builtin_type_name): map by index.
+ * lib/rss.rb: Add documentation for RSS. Patch by Steve Klabnik.
+ [Ruby 1.9 - Bug #4663]
-Wed Jul 18 16:17:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue May 10 14:50:32 2011 Shota Fukumori <sorah@tubusu.net>
- * lib/mkmf.rb (have_framework): get rid of separating -framework
- option and its argument and dealing with the argument as a library
- or an object name. if $LDFLAGS were an array...
+ * lib/test/unit.rb: Add option for hiding skip messages when test
+ ends. #4657
-Wed Jul 18 16:09:10 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * test/testunit/test_hideskip.rb, test/testunit/test4test_hideskip.rb:
+ test for above.
- * ext/curses/extconf.rb: support PDCurses. patched by Luis Lavena.
- [ruby-core:46485] [Feature #6735]
+Tue May 10 10:53:04 2011 Eric Hodel <drbrain@segment7.net>
-Wed Jul 18 15:50:25 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * common.mk (rdoc): Add rdoc-coverage rule
- * parse.y (primary): allow an empty grouped expression as the
- operand of the not operator (e.g., not ()).
- [ruby-core:45976] [Bug #6674]
+Tue May 10 09:13:21 2011 Eric Hodel <drbrain@segment7.net>
- * parse.y (parser_yylex): show no warning for a grouped expression
- as the operand of the not operator (e.g., not (a)) or as an
- argument of a method call without parentheses (e.g., foo (a)).
- [ruby-core:39050] [Bug #5214]
+ * lib/webrick: Add Documentation
-Wed Jul 18 15:33:21 2012 Koichi Sasada <ko1@atdot.net>
+Tue May 10 04:22:09 Eric Hodel <drbrain@segment7.net>
- * thread.c (rb_thread_call_without_gvl2): added.
- it can skip last CHECK_INTS. See document for more details.
- Document about it was updated a bit.
+ * lib/webrick/log.rb: Hide copyright info from ri
+ * lib/webrick/httpstatus.rb: ditto
+ * lib/webrick/htmlutils.rb: ditto
+ * lib/webrick/httpversion.rb: ditto
+ * lib/webrick/version.rb: ditto
+ * lib/webrick/httpauth/userdb.rb: ditto
+ * lib/webrick/httpauth/authenticator.rb: ditto
+ * lib/webrick/accesslog.rb: ditto
- * include/ruby/thread.h (decl. of rb_thread_call_without_gvl2): added.
+Mon May 9 20:57:13 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * thread.c (rb_thread_call_with_gvl): remove "EXPERIMENTAL!"
- warning from a document.
+ * test/ruby/test_{complex,rational}.rb: added tests.
-Wed Jul 18 14:53:21 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon May 9 20:29:44 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * configure.in (EXTDLDFLAGS): split options for each extension
- libraries, and unused in ruby.pc. [Bug #6734]
+ * complex.c (string_to_c_internal): a refactoring.
- * lib/mkmf.rb (MakeMakefile#configuration): add EXTDLDFLAGS.
+Mon May 9 18:33:05 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Jul 18 14:47:23 2012 Koichi Sasada <ko1@atdot.net>
+ * string.c: Improve documentation for String#start_with? and
+ String#end_with?. fixes #4652
+ patched by Andrew Grimm <andrew.j.grimm at gmail.com>
- * thread.c: fix last commit miss.
+Mon May 9 13:49:00 2011 Kenta Murata <mrkn@mrkn.jp>
-Wed Jul 18 14:16:51 2012 Koichi Sasada <ko1@atdot.net>
+ * complex.c (string_to_c_internal): support scientific notation.
+ patched by Tinco Andringa. https://github.com/ruby/ruby/pull/16
+ [ruby-core:36046][Bug #4655]
- * thread.c (rb_threadptr_async_errinfo_*): manage async errors queue.
- Async events such as an exception throwed by Thread#raise,
- Thread#kill and thread termination (after main thread termination)
- will be queued to th->async_errinfo_queue.
- - clear: clear the queue.
- - enque: enque err object into queue.
- - deque: deque err object from queue.
- - active_p: return 1 if the queue should be checked.
- rb_thread_t#thrown_errinfo was removed.
+Mon May 9 11:52:48 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * vm_core.h: add declarations of rb_threadptr_async_errinfo_*.
- remove rb_thread_t#thrown_errinfo field and
- add rb_thread_t#async_errinfo_queue (queue body: Array),
- rb_thread_t#async_errinfo_queue_checked (flag),
- rb_thread_t#async_errinfo_mask_stack(Array, not used yet).
+ * numeric.c (int_ord): remove K&R style.
+ patched by Daehyub Kim. https://github.com/ruby/ruby/pull/17
- * vm.c (rb_thread_mark): fix a mark function.
+Sun May 8 22:17:24 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * cont.c (rb_fiber_start): enque an error.
+ * test/ruby/test_{complex2,complexrational}.rb: use skip.
+ * test/date/*.rb: ditto.
- * process.c (after_fork): clear async errinfo queue.
+Sun May 8 21:02:31 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Wed Jul 18 14:25:55 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * test/ruby/test_{complex2,complexrational}.rb: NEVER SKIP.
- * pack.c: (ditto) bitwise operations are not char. Apply explicit
- casts on them.
+Sun May 8 21:01:21 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Wed Jul 18 12:59:50 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * test/date/test_date_base.rb: fixed.
- * encoding.c (load_encoding): explicit cast to suppress warning.
- Though the cast truncates some bits, from heuristic analysis I
- believe it is OK to do so here.
+Sun May 8 20:54:11 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * bignum.c (rb_cstr_to_inum): ditto.
+ * test/date/*.rb: NEVER SKIP.
-Wed Jul 18 12:55:54 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sun May 8 20:37:33 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * lib/benchmark.rb: Fix Benchmark.benchmark output with an empty
- caption. patched by Benoit Daloze. [ruby-core:45719] [Bug #6610]
+ * test/date/*.rb: reverted 31432.
-Wed Jul 18 10:00:54 2012 Eric Hodel <drbrain@segment7.net>
+Sun May 8 20:32:43 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * lib/debug.rb: Added toplevel documentation. Based on patch by Oscar
- Del Ben. [Bug #6743], fixes #146 on github.
+ * test/date/*.rb: reverted 31483.
-Wed Jul 18 09:33:59 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun May 8 19:39:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/win32ole/test_win32ole_event.rb (TestWIN32OLE_EVENT): use
- standard skip method to skip tests.
+ * thread_pthread.c (native_cond_timedwait): add to care EINTR.
+ * thread_pthread.c (thread_timer): remove EINTR check.
-Wed Jul 18 09:26:45 2012 Eric Hodel <drbrain@segment7.net>
+Sun May 8 19:04:15 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * lib/logger.rb: Updated typos and output to match modern Logger
- output. Patch by Marcus Stollsteimer. [Bug #6738]
+ * lib/time.rb (xmlschema): avoid passing any negative numbers.
-Wed Jul 18 07:59:29 2012 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
+Sun May 8 18:40:03 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * lib/cgi/util.rb (CGI.escapeHTML,unescapeHTML): Add &apos; for HTML5
- escaping.
- [Feature #6620]
+ * ext/date/date_{parse,strptime}.c: introduced some macros.
-Tue Jul 17 22:17:13 2012 Tanaka Akira <akr@fsij.org>
+Sun May 8 17:17:13 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * lib/open-uri.rb: call io.close! for Tempfile.
+ * test/date/*.rb: use skip /w messages.
-Tue Jul 17 16:41:32 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sun May 8 17:04:55 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * proc.c (rb_proc_arity): return normal value (not -n-1) if it is not
- a labmda, or it is a labmda and no arg_opts. [Bug #5694]
+ * ext/date/lib/date/format.rb (_httpdate): omitted to call zone_to_diff.
-Tue Jul 17 03:56:34 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+Sun May 8 16:56:19 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * ext/psych/lib/psych/visitors/to_ruby.rb: strings with YAML anchors
- are properly referenced. Patched by Joe Rafaniello via Github:
- https://github.com/tenderlove/psych/pull/69
- * ext/psych/lib/psych/visitors/yaml_tree.rb: ditto
- * test/psych/test_alias_and_anchor.rb: test for change
+ * ext/date/date_core.c (date_s_test_*): use macros.
-Mon Jul 16 23:20:24 2012 Tanaka Akira <akr@fsij.org>
+Sun May 8 10:24:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * bignum.c (rb_integer_float_cmp): use FIXNUM_MIN and FIXNUM_MAX,
- instead of LONG_MIN and LONG_MAX.
+ * thread_pthread.c: cleanup signal_thread_list related ifdef.
+ 1) we don't have to use #ifdef FOO-PLATFORM directly 2) About
+ half #ifdef didn't care symbian properly.
-Mon Jul 16 22:50:41 2012 Tanaka Akira <akr@fsij.org>
+Sun May 8 05:19:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * numeric.c (flo_to_s): use the exponential form if the integer part
- is longer than or equal DBL_DIG.
- [ruby-dev:45960] [ruby-trunk - Bug #6741]
+ * test/io/wait/test_io_wait.rb: Linux socketpair(2) only support
+ AF_UNIX, but windows socketpair doesn't support it. we can't
+ avoid platform check. sigh!
-Mon Jul 16 22:01:00 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Sun May 8 00:13:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/readline/readline.c: fixed docs. [Bug #6740][ruby-core:46501]
- patched by Nobuhiro IMAI.
+ * test/io/wait/test_io_wait.rb: use Socket.pair instead of pipe.
+ Windows can only treat a socket.
-Mon Jul 16 19:24:01 2012 Tanaka Akira <akr@fsij.org>
+Sat May 7 22:43:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * bignum.c (rb_integer_float_eq): new function.
- (rb_big_eq): use rb_integer_float_eq.
+ * thread.c (rb_fd_zero): remove redundant zero fill.
- * internal.h (rb_integer_float_eq): declared.
+Sat May 7 22:38:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * numeric.c (flo_eq): use rb_integer_float_eq.
- (fix_equal): ditto.
+ * thread.c (rb_fd_init): remove volatile qualifier.
-Mon Jul 16 19:02:31 2012 Tanaka Akira <akr@fsij.org>
+Sat May 7 22:34:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * bignum.c (rb_integer_float_cmp): rename a local variable.
+ * thread.c (rb_fd_init_copy): new internal api. It provide efficient
+ copy constructor semantics.
+ * thread.c (do_select): use rb_fd_init_copy().
-Mon Jul 16 18:40:26 2012 Tanaka Akira <akr@fsij.org>
+Sat May 7 15:18:06 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ fix incorrect native_cond_signal call when deadlock was detected.
- * bignum.c (rb_integer_float_cmp): renamed from rb_big_float_cmp.
+ * thread.c (lock_func): decrement cond_waiting if timeout was happen.
- * internal.h: follow the above change.
+Sat May 7 18:28:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * numeric.c: ditto.
+ * thread_pthread.c (USE_MONOTONIC_COND): check the availability
+ more strictly.
-Mon Jul 16 17:57:54 2012 Tanaka Akira <akr@fsij.org>
+ * thread_pthread.h (rb_thread_cond_t): ditto.
- * bignum.c (rb_big_float_cmp): compare an integer and float precisely.
- [ruby-core:31376] [Bug #3589] reported by Tomasz Wegrzanowski.
+Sat May 7 15:15:10 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Jul 16 17:29:45 2012 Tanaka Akira <akr@fsij.org>
+ fix win32 native_cond_timedwait() makes SIGSEGV.
- * bignum.c (rb_big_float_cmp): support fixnum for argument x.
+ * thread_win32.h (rb_thread_cond_struct): add prev field instead of
+ last. (ie cond_event_entry is now using double linked list instead of
+ single)
+ * thread_win32.c (cond_event_entry): add prev field.
- * numeric.c (fix_equal): use rb_big_float_cmp.
- (fix_cmp): ditto.
- (fix_gt): ditto.
- (fix_ge): ditto.
- (fix_lt): ditto.
- (fix_le): ditto.
- (flo_eq): ditto.
- (flo_cmp): use rb_big_float_cmp for fixnum argument.
- (flo_gt): ditto.
- (flo_ge): ditto.
- (flo_lt): ditto.
- (flo_le): ditto.
+ * thread_win32.c (__cond_timedwait): remove entry properly if timeout
+ was happen.
-Mon Jul 16 17:05:53 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * thread_win32.c (native_cond_signal): change for double linked list.
+ * thread_win32.c (native_cond_broadcast): ditto.
+ * thread_win32.c (native_cond_initialize): ditto.
- * test/fileutils/test_fileutils.rb: add test for FileUtils#uptodate?
+Sat May 7 12:41:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ fix mutex deadlock test hang-up.
-Mon Jul 16 16:56:12 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * thread_win32.c (abs_timespec_to_timeout_ms): fix 1000x calculation
+ mistake. (ie fix hang-up native_cond_timedwait())
- * lib/fileutils.rb (FileUtils.uptodate?): remove useless parameter.
- patched by Oscar Del Ben.[Bug #6708][ruby-core:46256]
+Sat May 7 03:14:13 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Jul 16 15:37:56 2012 Tanaka Akira <akr@fsij.org>
+ sleep_cond use monotonic time if possible.
- * bignum.c (rb_big_eq): use rb_big_float_cmp.
+ * thread_pthread.c (native_thread_init): change sleep_cond
+ attribute to monotonic.
+ * thread_pthread.c (native_sleep): use native_cond_timeout().
-Mon Jul 16 15:00:45 2012 Tanaka Akira <akr@fsij.org>
+ * thread_pthread.c (native_cond_timeout): add overflow care.
+ * thread_win32.c (native_cond_timeout): ditto.
- * internal.h (rb_big_float_cmp): declared.
+Sat May 7 02:49:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ fix win32 compile error.
- * bignum.c (rb_big_float_cmp): extracted from rb_big_cmp and big_op.
- (rb_big_cmp): use rb_big_float_cmp.
- (big_op): ditto.
+ * thread_win32.c (RB_CONDATTR_CLOCK_MONOTONIC): define
+ RB_CONDATTR_CLOCK_MONOTONIC always.
+ * thread_pthread.c (RB_CONDATTR_CLOCK_MONOTONIC): ditto.
- * numeric.c (flo_cmp): use rb_big_float_cmp.
- (flo_gt): ditto.
- (flo_ge): ditto.
- (flo_lt): ditto.
- (flo_le): ditto.
+Sat May 7 02:29:41 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Jul 16 14:14:21 2012 Tanaka Akira <akr@fsij.org>
+ mutex: deadlock check timeout use monotonic time.
- * bignum.c (enum big_op_t): new type.
- (big_op): use enum big_op_t.
- (big_gt): ditto.
- (big_ge): ditto.
- (big_lt): ditto.
- (big_le): ditto.
+ * thread_pthread.c (native_cond_timeout): new internal api.
+ it calculate a proper time for argument of native_cond_timedwait().
+ * thread_win32.c (native_cond_timeout): ditto.
-Sat Jul 14 18:18:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * thread_pthread.c (thread_timer): use native_cond_timeout()
+ instead of get_ts.
+ * thread.c (lock_func): ditto.
- * array.c (rb_get_values_at): fill with nil out of range.
- [ruby-core:43678] [Bug #6203]
+ * thread_pthread.c (get_ts): removed. use native_cond_timeout().
+ * thread.c (init_lock_timeout): ditto.
-Sat Jul 14 17:17:55 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Sat May 7 01:54:21 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * cont.c (cont_restore_0): improve docs. [Bug #6706][ruby-core:46243]
- patched by Oscar Del Ben via https://github.com/ruby/ruby/pull/140
+ * thread_pthread.c (get_ts): add monotonic clock capability.
+ * thread_pthread.c (rb_thread_create_timer_thread): use monotonic
+ clock if possible.
-Sat Jul 14 17:08:13 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat May 7 01:43:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * hash.c (rb_hash_s_create): raise an exception, when input elements
- are not one or two elements arrays. [ruby-core:39945] [Bug #5406]
+ * thread_pthread.h (rb_thread_cond_t): add clockid field. it's
+ no longer an alias of pthread_cond_t.
+ * thread_pthread.c: adapt new rb_thread_cond_t type.
+ * thread.c (mutex_alloc): ditto.
+ * thread_win32.c (native_cond_initialize): ditto.
+ * configure.in: add check for pthread_cond_attr_setclock() and
+ clockid_t type.
-Sat Jul 14 16:16:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri May 6 23:29:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): use
- Array#uniq!.
+ * thread.c (rb_wait_for_single_fd): use ppoll() instead of poll()
+ if possible. based on a patch from Eric Wong. [ruby-core:36003].
- * lib/test/unit.rb (Test::Unit::Runner#deal): deal tasks to workers.
+Fri May 6 23:13:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/test/unit.rb (Test::Unit::Runner#quit_workers): close and kill
- all workers.
+ * configure.in: remove nanosleep check. we no longer use it.
+ r20124 removed last usage.
- * lib/test/unit.rb (Test::Unit::Runner#delete_worker): delete dead
- worker from working set.
+Fri May 6 22:35:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/test/unit.rb (Test::Unit::Runner#launch_worker): add new worker
- to working set.
+ * ext/syck/rubyext.c (mktime_do): extra digits are not used.
- * lib/test/unit.rb (Test::Unit::Runner#launch_worker): extract.
+Fri May 6 17:43:07 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/test/unit.rb (Test::Unit::Runner#start_watchdog): extract.
+ * ext/syck/rubyext.c (mktime_do): remove unused variable offset.
- * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): move
- initializations with nothing to release outside begin/ensure.
+ * ext/syck/syck.h: use #ifdef instead of #if DEBUG.
-Sat Jul 14 16:04:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri May 6 16:27:33 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * array.c (rb_ary_join): should not infected by separator if it is not
- used. [ruby-core:42161][Bug #5902]
+ * ext/date/date_core.c (DAY_IN_NANOSECONDS): refix: 31438.
+ check with LONG_MAX and cast as long; without this the calculation
+ will be done as int and overflow.
-Sat Jul 14 02:31:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri May 6 15:01:11 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
- * include/ruby/intern.h (rb_thread_blocking_region): fix declarations
- prototypes without arguments in C++ have different meanings than C.
+ * ext/syck/rubyext.c (mktime_do): avoid buffer overrun, by
+ silently ignoring lesser significant digits. Required buffer
+ length can be computable so you might at first think of
+ allocating enough memory space on the fly using alloca(). That
+ is a wrong idea because when using alloca there is always risk
+ of integer overflow. A function that accepts outer-process
+ resources like this should not blindly trust its inputs. In
+ this particular case we just want to generate milliseconds
+ resolution by strtod() so the string in question needs no more
+ length than what we originally have. Ignoring lesser
+ significant digits should suffice I believe.
-Thu Jul 12 12:32:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri May 6 14:25:53 2011 Tinco Andringa <mail@tinco.nl>
- * test/runner.rb: skip default gems to get rid of loading old versions
- before installation.
+ * ext/syck/rubyext.c (mktime_do): YAML.load time correctly parse
+ usecs smaller than 1 fixes #4571
-Thu Jul 12 11:44:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu May 5 22:23:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * string.c (rb_str_new_frozen): since the result object should have
- same tainted/untrusted bits with the original object, return new
- object if the shared object unmatch. [ruby-core:39745][Bug #5374]
+ * thread_pthread.c (native_mutex_reinitialize_atfork): removed
+ unused macro.
+ * thread_win32.c (native_mutex_reinitialize_atfork): ditto.
-Thu Jul 12 10:46:39 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu May 5 22:09:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/net/http/test_http.rb (TestNetHTTPLocalBind#test_bind_to_local*):
- cannot cross between network interfaces on Windows, so skip this test
- until we find better test.
+ * ext/date/date_core.c (DAY_IN_NANOSECONDS): long long int is not
+ available on all platforms.
-Thu Jul 12 08:48:33 2012 Ryan Davis <ryand-ruby@zenspider.com>
+Thu May 5 17:36:31 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * lib/minitest/*: Imported minitest 3.2.0 (r7598)
- * test/minitest/*: ditto
+ * eval.c (frame_func_id): store result of method_entry_of_iseq() to
+ cfp->me because method_entry_of_iseq() might become expensive.
-Thu Jul 12 05:11:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu May 5 15:03:51 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * insns.def (defined): use method entry and id in cfp for proper
- superclass, since klass in iseq is shared by dynamically defined
- methods from the same block. [ruby-core:45831][Bug #6644]
+ * eval.c (frame_func_id): __method__ return different name from
+ methods defined by Module#define_method with a same block.
+ [ruby-core:35386] fixes #4606
+ * eval.c (method_entry_of_iseq): new helper function. search control
+ frame stack for a method entry which has given iseq.
+ * test/ruby/test_method.rb: add tests for #4606
-Thu Jul 12 01:49:07 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Wed May 4 22:13:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/net/http.rb (Net::HTTP#connect): use local_host and local_port
- if specified. patched by Ricardo Amorim [Feature #6617]
+ * benchmark/bm_vm4_pipe.rb: Reduced iterations. Too slow benchmark
+ is bad.
+ * benchmark/bm_vm4_thread_pass.rb: ditto.
-Wed Jul 11 17:36:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed May 4 22:08:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/extmk.rb: append ENCOBJS to DLDOBJS but not EXTSOLIBS which is
- not a target, to compile enc/encinit.c.
+ * test/date/test_date_base.rb: don't use no message skip().
-Wed Jul 11 12:38:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed May 4 21:11:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/openssl/ossl_pkey_ec.c (ossl_ec_point_mul): nonstatic initializer
- of an aggregate type is a C99ism.
+ * benchmark/bm_io_select2.rb: reduce number of using file
+ descriptors. because gdb need some fds.
- * ext/openssl/ossl_pkey_ec.c (ossl_ec_point_mul): get rid of VC++
- warnings.
+Wed May 4 19:00:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Jul 9 16:11:30 2012 Yuki Yugui Sonoda <yugui@google.com>
+ * thread.c (rb_wait_for_single_fd): Fix wrong return value.
+ * test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb
+ (TestWaitForSingleFD#test_wait_for_closed_pipe): test for it.
- * vm_eval.c (rb_eval_string_from_file,
- rb_eval_string_from_file_protect): new functions to replace
- rb_compile_main_from_string() and ruby_eval_main().
+Wed May 4 18:46:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * nacl/pepper_ruby.c: Follows the change in vm_eval.c
+ * ext/-test-/wait_for_single_fd: New. for testing
+ rb_wait_for_single_fd() internal function.
+ The patch was written by Eric Wong. [ruby-core:35991]
-Mon Jul 9 14:05:42 2012 Yuki Yugui Sonoda <yugui@google.com>
+ * test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb: ditto.
- Reverts a half of r36079. As we discussed on ruby-dev@ and IRC,
- we do not need to disclose intermediate representation of program.
- The program embedding CRuby should use rb_eval_string family.
- * include/ruby/ruby.h (ruby_opaque_t): removed.
- (ruby_compile_main_from_file, ruby_compile_main_from_string,
- ruby_eval_main): removed.
+Wed May 4 12:46:25 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * eval.c (ruby_eval_main_internal): became ruby_exec_internal() again.
- (ruby_eval_main): removed.
+ * thread.c (rb_wait_for_single_fd): Added POLLNVAL check.
+ based on a patch from Eric Wong at [ruby-core:35991].
- * ruby.c (PREPARE_PARSE_MAIN) reverted.
- (parse_and_compile_main, ruby_compile_main_from_file,
- ruby_compile_main_from_string): removed
+Wed May 4 11:51:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Jul 11 10:16:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * io.c (rb_f_select): remove useless ifdef.
- * include/ruby.h (HAVE_RUBY_THREAD_H): to show ruby/thread.h to be
- available. fixup of r36355.
+Wed May 4 11:42:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Jul 11 03:26:47 2012 Eric Hodel <drbrain@segment7.net>
+ * ext/socket/init.c (wait_connectable): fix error handling code.
+ RB_WAITFD_OUT is turned on even though an error occur.
- * ext/zlib/zlib.c: Added streaming support to inflate processing.
- This allows zlib streams to be processed without huge memory growth.
- [Feature #6612]
- * NEWS: ditto
- * ext/zlib/zlib.c (zstream_expand_buffer): Uses rb_yield when a block
- is given for streaming support. Refactored to use
- zstream_expand_buffer_into to remove duplicate code.
- * ext/zlib/zlib.c (zstream_expand_buffer_protect): Added wrapper
- function to pass jump state back through GVL-free section to allow
- zstream clean-up before terminating the ruby call.
- * ext/zlib/zlib.c (zstream_expand_buffer_without_gvl): Acquire GVL to
- yield processed chunk of output stream.
- * ext/zlib/zlib.c (zstream_detach_buffer): When a block is given,
- returns Qnil mid-stream and yields the output buffer at the end of
- the stream.
- * test/zlib/test_zlib.rb: Updated tests
+Wed May 4 10:12:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Jul 10 22:57:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/readline/readline.c (readline_event): use rb_wait_for_single_fd().
+ The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
- * include/ruby/thread.h: new header file for thread stuff.
+Wed May 4 10:10:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * thread.c (rb_thread_call_without_gvl): export. [Feature#4328]
- returns void* instead of VALUE. [Feature #5543]
+ * ext/socket/init.c (wait_connectable): use rb_wait_for_single_fd().
+ The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
- * thread.c (rb_thread_blocking_region): deprecate. [ruby-core:46295]
+ * ext/socket/init.c (try_wait_connectable, wait_connectable_ensure):
+ removed.
-Tue Jul 10 10:48:59 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed May 4 10:07:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * include/ruby/win32.h (NT, NtInitialize): removed unused old macros.
+ * ext/io/wait/wait.c (io_wait): use rb_wait_for_single_fd().
+ The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
-Tue Jul 10 10:43:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed May 4 10:01:27 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * configure.in: removed --enable/disable-win95 options. (see r36342)
+ * thread.c (rb_wait_for_single_fd): new. poll(2) based backend for
+ rb_wait_for_single_fd().
+ Now only Linux uses it.
-Tue Jul 10 00:44:41 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
- * include/ruby/ruby.h: Removed RUBY_GLOBAL_SETUP completely. It is
- no meaning definition since r24894.
- * main.c: ditto.
- * nacl/pepper_main.c: ditto.
+Wed May 4 09:56:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Jul 9 23:59:36 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * thread.c (rb_wait_for_single_fd): new.
+ * thread.c (select_single): select(2) based backend for
+ rb_wait_for_single_fd().
- * dln.c: Simplify and make consistent an ifdef for Mac OS X.
- * ext/socket/rubysocket.h: ditto.
- * ext/tk/stubs.c: ditto.
- * io.c: ditto.
- * process.c: ditto.
- * signal.c: ditto.
- * vm_dump.c: ditto.
+ * io.c (make_writeconv): use rb_wait_for_single_fd() instead of
+ rb_thread_fd_select().
+ * io.c (rb_io_wait_readable): ditto.
+ * thread.c (rb_thread_wait_fd_rw): ditto.
-Mon Jul 9 17:37:35 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * io.c (wait_readable): removed.
+ * thread.c (init_set_fd): new helper function.
+ * include/ruby/io.h (RB_WAITFD_IN, RB_WAITFD_PRI, RB_WAITFD_OUT):
+ new constant for rb_single_wait_fd().
- * win32/win32.c (win95_stat): removed unnecessary macro.
+ The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
-Mon Jul 9 17:22:16 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed May 4 08:04:59 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * win32/configure.bat, win32/setup.mak, win32/Makefile.sub: omitted
- Win9x support. removed --enable/disable-win95 options.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: fix time dumping so that
+ Syck can load UTC times that Psych dumps.
- * include/ruby/win32.h, file.c, win32/win32.c: ditto.
+Wed May 4 07:33:00 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * win32/README.win32: ditto.
+ * thread.c (rb_fd_copy): fix wrong argument.This issue was pointed
+ out by Eric Wong. [ruby-core:35982]
-Mon Jul 9 13:28:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue May 3 20:29:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * configure.in (DLDFLAGS): use TARGET_ENTRY to specify an entry point
- instead of TARGET which may contain non-identifier characters.
+ * test/fileutils/test_fileutils.rb (TestFileUtils#test_chmod_symbol_mode):
+ Skip sticky bit test if the platform is FreeBSD. It doesn't allow to
+ change sticky bit if a target is regular file.
- * lib/mkmf.rb (create_makefile): add TARGET_NAME which is the first
- part consists of only word characters. [ruby-core:46248][Bug #6709]
+Tue May 3 18:23:57 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-Sun Jul 8 07:36:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/date/test_date.rb (TestDate#test_coerce):
+ test for [ruby-core:35127].
- * parse.y (shadowing_lvar_gen, warn_unused_var): no warnings for
- variables starting with _. [ruby-core:46160][Feature #6693]
+Tue May 3 04:27:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Jul 7 23:07:30 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * thread.c (rb_thread_select): preserve errno if no error
+ occurred.
- * test/csv/test_features.rb: add require for Tempfile.
- * test/csv/test_serialization.rb: ditto.
+Tue May 3 03:57:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jul 6 06:49:50 2012 Eric Hodel <drbrain@segment7.net>
+ * include/ruby/intern.h (rb_w32_fdcopy): add prototype. fixes
+ #4640
- * array.c (rb_ary_aref): Added a description of the behavior of
- index positioning. [Bug #6680]
- * array.c (rb_ary_aset): ditto. Reordered sentences for clarity.
- * string.c (rb_str_aref_m): Added a description of the behavior of
- index positioning
+Mon May 2 01:02:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Fri Jul 6 05:38:44 2012 Eric Hodel <drbrain@segment7.net>
+ * lib/fileutils.rb (FileUtils#chmod): accept symbolic mode argument.
+ The patch was written by takkanm. [ruby-core:26029][Feature #2190]
- * string.c (rb_str_bytesize): Improve documentation. Patch by Oscar
- Del Ben from github issue #138.
- * string.c (rb_str_empty): ditto.
- * string.c (rb_str_times): ditto.
- * string.c (rb_str_dump): ditto.
- * string.c (rb_str_center): ditto.
+ * lib/fileutils.rb (FileUtils#fu_mode): new helper function.
+ * lib/fileutils.rb (FileUtils#symbolic_modes_to_i): ditto.
+ * lib/fileutils.rb (FileUtils#mode_mask): ditto.
+ * lib/fileutils.rb (FileUtils#user_mask): ditto.
-Fri Jul 6 04:05:59 2012 Eric Hodel <drbrain@segment7.net>
+ * test/fileutils/test_fileutils.rb (TestFileUtils#test_chmod_symbol_mode):
+ new test for the above symbolic mode.
+ * test/fileutils/test_fileutils.rb (TestFileUtils#test_chmod_R): ditto.
- * ext/zlib/zlib.c (zstream_expand_buffer_without_gvl): Use
- ruby_xrealloc() to avoid crash with CALC_EXACT_MALLOC_SIZE.
+Mon May 2 00:36:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Thu Jul 5 17:32:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/socket/init.c (rsock_connect): add to care EINTR. based
+ on a patch from Eric Wong at [ruby-core:35621][Bug #4555]
- * internal.h: move ThreadShield declarations from intern.h.
+Sun May 1 01:06:24 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Thu Jul 5 16:00:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * thread.c (rb_thread_select): release GVL while waiting select().
- * thread.c (ThreadShield): rename from Barrier.
+Sat Apr 30 23:10:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Thu Jul 5 15:14:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * win32/win32.c (rb_w32_fdcopy): New. This can copy even though
+ fdset size exceed FD_SETSIZE.
+ * include/ruby/intern.h (rb_fd_copy): use rb_w32_fdcopy()
- * bootstraptest/runner.rb (show_progress): refine error output. do not
- count non-empty error message, but just warn.
+Sat Apr 30 20:18:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * bootstraptest/runner.rb (error): show errors immediately if tty.
+ * thread.c (do_select): Change argument type to rb_fdset_t.
+ Now do_select() is free from unexpected hangup if
+ HAVE_RB_FD_INIT=1 [Bug #4636]
-Thu Jul 5 12:28:11 2012 Akinori MUSHA <knu@iDaemons.org>
+ * thread.c (rb_thread_fd_select, rb_thread_wait_fd_rw):
+ adapt new argument type.
- * test/net/http/test_httpresponses.rb: Add a test file for
- Net::HTTPResponses and put a test case for the previous bug.
+ * thread.c (rb_thread_select): make dummy implementation.
-Thu Jul 5 06:33:52 2012 Mark Dodwell <mark@mkdynamic.co.uk>
+Sat Apr 30 20:16:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/net/http/responses.rb: Fix 4xx classes to inherit correctly
- from Net::HTTPClientError. [Bug #6700]
+ * thread.c (rb_fd_copy): Change function argument. Now
+ rb_fd_copy() has fully copy semantics.
+ * include/ruby/intern.h: ditto.
-Wed Jul 4 21:55:35 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Apr 30 20:11:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ruby.c (proc_options): warn only if -K and -w option is specified.
- see also r36274 [Feature #5206]
+ * include/ruby/intern.h (rb_thread_select): mark as deprecated.
-Wed Jul 4 21:41:44 2012 Naohisa Goto <ngotogenome@gmail.com>
+ * ext/io/wait/wait.c (wait_readable): use rb_thread_fd_select
+ instead of rb_thread_select.
+ * ext/socket/init.c (wait_connectable0): ditto.
+ * ext/readline/readline.c (readline_event): ditto.
+ * io.c (rb_io_wait_readable, wait_readable, rb_io_wait_writable,
+ wait_writable): ditto.
- * gc.c, atomic.h (ATOMIC_SIZE_*): moved from gc.c to atomic.h
- [ruby-dev:45909]
+Sat Apr 30 20:06:36 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Jul 4 19:13:15 2012 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+ * thread.c (do_select): remove useless ifdef. time calculation
+ is not heavy weight.
- * test/win32ole/test_win32ole.rb (test_s_codepage_changed):
- FileSystemObject only supports ANSI or UTF-16LE encoding.
- Patch by h.shirosaki (Hiroshi Shirosaki) [ruby-trunk - Bug #6650]
+Sat Apr 30 16:48:36 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Jul 4 11:52:12 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * benchmark/bm_io_select3.rb: New.
- * gc.c (ATOMIC_SIZE_*): 64bit Windows support.
+Sat Apr 30 16:27:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Jul 4 11:11:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * io.c (copy_stream_body, rb_io_s_copy_stream): move rb_fd_init()
+ from copy_stream_body to rb_io_s_copy_stream. fds of passing
+ rb_fd_term() have to be guaranteed initialized.
- * eval.c (rb_frame_callee, rb_f_callee_name): fix to return the
- called id. this longstanding bug has been caused and blocked by
- the structure of old rb_control_frame_t and rb_iseq_t.
+Sat Apr 30 16:13:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * vm_insnhelper.c (vm_push_frame): set proper method entry.
+ * benchmark/bm_io_select.rb, benchmark/bm_io_select2.rb: New.
+ based on a patch from Eric Wong at [Feature #4531]
-Wed Jul 4 08:29:31 2012 Eric Hodel <drbrain@segment7.net>
+Sat Apr 30 03:25:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * array.c (rb_ary_aref): Updated documentation to indicate the
- starting index is an index into the array or string. Updated
- examples to show behavior of indexes at the end of an array or
- string. Based on patch by Marcus Stollsteimer. [Bug #6680]
- * array.c (rb_ary_aset): ditto.
- * string.c (rb_str_aref): ditto. Also added descriptive argument
- names to call-seq section.
+ * test/io/wait/test_io_wait.rb: New. for testing ext/io/wait.
+ the patch was written by Eric Wong. [Feature #4531]
-Wed Jul 4 07:05:59 2012 Eric Hodel <drbrain@segment7.net>
+Sat Apr 30 00:34:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/zlib/test_zlib.rb (test_inflate_partial_input): Added test for
- inflating incomplete zlib streams.
+ * include/ruby/win32.h: remove redundant declaration of
+ rb_w32_time_subtract().
-Tue Jul 3 23:14:16 2012 Naohisa Goto <ngotogenome@gmail.com>
+Sat Apr 30 00:16:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * gc.c (ATOMIC_SIZE_EXCHANGE): fix function name on Solaris [Bug #6689]
- [ruby-dev:45904]
+ * thread_pthread.c (gvl_init): fix hangup if GVL_SIMPLE_LOCK=1.
+ We don't have to call mutex_unlock() before initialize it!
-Tue Jul 3 16:07:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Apr 29 13:15:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * gc.c (vm_malloc_fixup, vm_xrealloc, vm_xfree, after_gc_sweep): use
- atomic operations to update malloc_params.
+ * thread_win32.c (native_cond_timedwait): New. r31373 caused
+ win32 build failure.
-Tue Jul 3 14:50:16 2012 Eric Hodel <drbrain@segment7.net>
+ * thread_win32.c (__cond_timedwait, abs_timespec_to_timeout_ms):
+ New helper functions.
- * ext/zlib/zlib.c (zstream_run_func): Don't exit run loop for buffer
- error. [Feature #6615]
- * ext/zlib/zlib.c: Fix style to match existing functions.
+ * win32/win32.c (rb_w32_time_subtract): rename from subtract and
+ remove static.
-Tue Jul 3 12:05:51 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Apr 29 10:43:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/dl/cfunc.c (rb_dlcfunc_call): also needed the workaround for VC8
- for x64. [ruby-dev:45875] [Bug #6676]
- reported by aves_ramphastos (Seigo Ishigane)
+ * benchmark/bm_vm4_pipe.rb: Add two new benchmark for GVL
+ performance. They was written by Koichi Sasada.
+ * benchmark/bm_vm4_thread_pass.rb: ditto.
-Tue Jul 3 11:56:46 2012 Eric Hodel <drbrain@segment7.net>
+Fri Apr 29 10:25:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/zlib/zlib.c (zstream_detach_buffer): Refactored tainting of
- output string, moving it from the callee to zstream_detach_buffer.
- * ext/zlib/zlib.c (rb_zstream_finish): ditto
- * ext/zlib/zlib.c (rb_zstream_flush_next_out): ditto
- * ext/zlib/zlib.c (rb_deflate_deflate): ditto
- * ext/zlib/zlib.c (rb_deflate_flush): ditto
- * ext/zlib/zlib.c (rb_inflate_inflate): ditto
+ * vm_method.c (rb_clear_cache_by_class): Revert r29673. It made
+ a segmentation fault regression. [Bug #4289][ruby-core:34554].
-Tue Jul 3 11:16:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Apr 29 10:24:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * common.mk (runnable): make symbolic links to run in build directory.
+ * io.c (make_writeconv): do not add textmode newline decorator if any
+ newline decorator is set already. fixes #4618, fixes #4619
-Tue Jul 3 10:46:06 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Apr 29 10:17:42 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ruby.c (proc_options): warn if -K option is specified. [Feature #5206]
+ * thread.c (lock_func): small cleanup.
-Tue Jul 3 06:12:13 2012 Eric Hodel <drbrain@segment7.net>
+Fri Apr 29 10:07:13 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * object.c (Init_Object): Added RDoc location pointers for
- Kernel#methods, Kernel#protected_methods, Kernel#private_methods and
- Kernel#public_methods. [Bug #6666]
+ * thread.c (rb_mutex_lock, lock_func): Avoid busy loop and
+ performance regression. bm_vm3_thread_mutex.rb performance
+ change from 109.064sec to 16.331sec. [Feature #4607]
-Tue Jul 3 06:02:54 2012 Eric Hodel <drbrain@segment7.net>
+ * thread.c (init_lock_timeout): New helper function.
- * ext/zlib/zlib.c (zstream_run): Process zlib streams without GVL.
- [Feature #6615]
- * NEWS: ditto.
+Thu Apr 28 16:15:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Mon Jul 2 22:13:04 2012 Tanaka Akira <akr@fsij.org>
+ * win32/{win32.c,dir.h} (rb_w32_uopendir): new API to pass UTF-8 path.
- * thread.c (rb_thread_aref): add explanation for why Thread#[] and
- Thread#[]= are fiber-local and not thread-local.
- reported by Julien A. [ruby-core:41606] [ruby-trunk - Bug #5750]
+ * win32/win32.c (opendir_internal, rb_w32_opendir): extract and merge
+ common part of rb_w32_opendir() and rb_w32_uopendir().
-Mon Jul 2 21:25:55 2012 Tanaka Akira <akr@fsij.org>
+ * dir.c (do_opendir, glob_helper): encoding.
- * time.c (timew_out_of_timet_range): specialization for
- SIZEOF_TIME_T == SIZEOF_INT64_T.
+ * dir.c (dir_initialize, do_opendir): convert path to UTF-8 and call
+ rb_w32_uopendir() instead of rb_w32_opendir() on Windows.
+ fixes #4491, reported by Joey Zhou.
-Mon Jul 2 17:06:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Apr 28 15:32:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * class.c (rb_include_module): include modules after the origin.
+ * test/dl/test_base.rb (DL::LIBC_SO): its always msvc*.dll on
+ mswin/mingw.
- * class.c (include_modules_at): skip prepended modules.
+Thu Apr 28 06:07:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * class.c (rb_prepend_module): now basic.klass in ICLASS refers the
- old original class/module. [ruby-dev:45868][Bug #6662]
+ * lib/csv.rb (CSV::open): suppress universal newline decorator.
+ fixes #4603
- * class.c (rb_mod_ancestors): ditto.
+ * lib/csv.rb (CSV.read): no mode is needed.
- * vm_method.c (search_method): search method entry from the origin
- iclass.
+Thu Apr 28 06:06:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Jul 2 05:54:58 2012 Tadayoshi Funaba <tadf@dotrb.org>
+ * io.c (rb_io_extract_modeenc, rb_f_backquote): set default text
+ mode. fixes #4619
- * ext/date/date_core.c: [ruby-core:46058].
+ * io.c (pipe_open): set universal newline decorator if needed.
-Mon Jul 2 05:35:43 2012 Tadayoshi Funaba <tadf@dotrb.org>
+Wed Apr 27 11:33:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/date/date_core.c (d_lite_marshal_load): accepts old dump.
+ * enc/trans/emoji_iso2022_kddi.trans: ISO-2022-JP-KDDI doesn't have
+ CP932 UDA. Another reason is emacs-mule: the implementation of
+ stateless-iso-2022-jp doesn't support beyond 94x94 (0x7fxx);
+ but CP932 UDA is in 7Fxx-92xx.
-Mon Jul 2 03:21:53 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Wed Apr 27 07:42:44 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * README.EXT.ja: fixed args of have_struct_member() ,
- create_makefile() same as r35977. however, mkmf.rb include
- no Japanese-docs, so Appendix C was not removed. [Bug #6597]
+ * configure.in (STRIP): use proper toolchain. based on a patch
+ from Jon Forums at [ruby-core:35909]. fixes #4617
-Fri Jun 29 05:08:41 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Apr 27 01:20:59 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * lib/test/unit/parallel.rb: workaround fix for rubygems.
- RubyGems can't find rake if the source directory is not equal to
- the directory which is running the test. [Bug #6604]
+ * ext/date/date_core.c (date_zone_to_diff): renamed.
+ * ext/date/date_parse.c: ditto.
+ * ext/date/date_strptime.c: ditto.
-Thu Jun 28 20:33:15 2012 Luis Lavena <luislavena@gmail.com>
+Wed Apr 27 01:16:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/win32ole/test_win32ole.rb (test_s_codepage_changed):
- FileSystemObject only supports ANSI or UTF-16LE encoding.
- Patch by bosko (Bosko Ivanisevic) [ruby-trunk - Bug #6650]
+ * encoding.c (enc_find): accept Encoding objects.
-Thu Jun 28 09:27:09 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+Wed Apr 27 00:55:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * class.c (class_instance_method_list): consider prepended Class/Module
- when recur != 0. [ruby-dev:45863] [Bug #6660]
+ * transcode.c (econv_opts): add newline option.
- * test/ruby/test_module.rb (test_prepend_instance_methods_false): add
- a test for it.
+ * io.c (validate_enc_binmode, rb_io_extract_modeenc): set newline
+ decorator according to open mode.
+ * transcode.c (rb_econv_prepare_options): new function, to prepare
+ econv options with newline flags.
-Thu Jun 28 06:12:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * include/ruby/encoding.h (ECONV_NEWLINE_DECORATOR_MASK): add.
- * class.c (rb_mod_ancestors): fix ancestors order.
- [ruby-core:45919][Bug #6658] [ruby-dev:45861][Bug #6659]
+Wed Apr 27 00:51:01 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jun 27 21:28:59 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * file.c (rb_file_truncate): fix function.
- * lib/racc/parser.rb: NotImplementError is not exist.
+ * include/ruby/win32.h (ftruncate, truncate, ftello, fseeko): non-64
+ versions on mingw are useless because they use int32_t. fixes #4564
- * lib/irb/output-method.rb (IRB::OutputMethod#print): ditto.
+Wed Apr 27 00:50:33 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Wed Jun 27 21:31:13 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/date/date_core.c: modified validation methods.
+ * ext/date/lib/date.rb: ditto.
- * class.c (rb_prepend_module): ancestors of prepending module also
- should be included. [ruby-core:45914][Bug #6654]
+Wed Apr 27 00:00:37 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Wed Jun 27 21:01:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/date/date_core.c (dt_lite_set_tmx): should get df value.
- * class.c (class_instance_method_list): m_tbl in prepended
- class/module is NULL. [ruby-core:45915][Bug #6655]
+Tue Apr 26 22:34:04 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Wed Jun 27 16:48:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/date/lib/date/format.rb (_iso8601): allowed day only civil
+ date. disallowed separatorless day only ordinal date.
- * class.c (rb_prepend_module): prepend module into another module.
+Mon Apr 25 21:31:36 2011 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
- * eval.c (rb_mod_prepend): new method Module#prepend. [Feature #1102]
+ * ext/openssl/extconf.rb: Should check SSLv2_*method.
+ openssl compiled with "no-ssl2" the extconf don't fail
+ when running `make' having this compilation errors.
+ Patched by Laurent Arnoud. fixes #4562, #4556
-Wed Jun 27 09:15:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Apr 25 20:53:32 2011 Tajima, Akio <artonx@yahoo.co.jp>
- * io.c (is_popen_fork): check if fork and raise NotImplementedError if
- unavailable.
+ * win32/win32.c (kill): accept 0 only sig is SIGINT #4596
- * io.c (rb_io_s_popen): allow environment variables hash and exec
- options as flat parameters, not in an array arguments.
- [Feature#6651] [EXPERIMENTAL]
+Mon Apr 25 19:59:47 2011 Tajima, Akio <artonx@yahoo.co.jp>
- * process.c (rb_execarg_extract_options): extract exec options, but no
- exceptions on non-exec options and returns them as a Hash.
+ * win32/win32.c (kill): accept 0 as pid, fixes #4596
- * process.c (rb_execarg_setenv): set environment variables.
+Mon Apr 25 16:43:45 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Jun 26 16:57:14 2012 Koichi Sasada <ko1@atdot.net>
+ * random.c (random_rand): remove unused variables.
- * thread_pthread.c (register_cached_thread_and_wait):
- return immediately if malloc() failed.
- [ruby-core:43960] [ruby-trunk - Bug #6235]
+ * struct.c (rb_struct_define_without_accessor): ditto.
- * thread_pthread.c (USE_THREAD_CACHE): check already defined or not.
+ * strftime.c (rb_strftime_with_timespec): ditto.
-Tue Jun 26 10:01:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * sprintf.c: ditto.
- * io.c (rb_io_s_popen): revert r36213 "popen: shell commands with
- envvar" because it disabled to let single command bypass shell.
+ * time.c (time_asctime): remove useless GetTimeval().
-Mon Jun 25 17:49:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * thread_pthread.c: cast to (void *) for %p.
- * class.c (rb_mix_module): revert Module#mix.
+Mon Apr 25 11:02:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Jun 25 16:57:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/ripper/lib/ripper/sexp.rb: fix rdoc around sexp.
+ patched by Sho Hashimoto. fixes #4599
- * proc.c (rb_mod_define_method): allow method transplanting from a
- module to either class or module. [ruby-core:34267][Feature #4254]
+Mon Apr 25 08:24:04 2011 Shota Fukumori <sorah@tubusu.net>
-Mon Jun 25 11:34:45 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * random.c (rb_f_rand, random_s_rand): RDocs for them.
- * internal.h: use rb_pid_t instead of pid_t because of there is no
- definition of pid_t here on Windows.
+Mon Apr 25 07:18:00 2011 Kenta Murata <mrkn@mrkn.jp>
-Mon Jun 25 00:25:01 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * random.c (random_s_rand, Init_Random): Random.rand should behave as
+ Random::DEFAULT.rand rather than Kernel#rand.
- * configure.in (for stack end address): remove human68k specific
- check. It is no longer supported.
+ * random.c (rand_range, random_rand): rand_range function extracted
+ from random_rand function.
-Sun Jun 24 23:02:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * random.c (rb_f_rand): accept a Range argument as Random#rand
+ [ruby-dev:43427] #4605
- * io.c (pipe_open): merge win32 code using spawnv().
+Mon Apr 25 03:31:06 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Sun Jun 24 22:53:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/time.rb: require 'date'.
+ * ext/date/lib/date/format.rb: removed require line.
- * process.c (check_exec_fds): separate check_exec_fds_1() since
- nonstatic initializer of an aggregate type is not allowed by C89.
+Mon Apr 25 03:08:39 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Sun Jun 24 07:47:17 2012 Tanaka Akira <akr@fsij.org>
+ * ext/date/lib/date/format.rb: require 'date'.
- * internal.h (rb_execarg): options field removed.
+Mon Apr 25 03:04:16 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * process.c: follow the rb_execarg change.
+ * ext/date/lib/date/format.rb (_iso8601): added a pattern.
-Sat Jun 23 23:48:21 2012 Tanaka Akira <akr@fsij.org>
+Mon Apr 25 02:51:22 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * process.c (proc_spawn_cmd): unused variable removed to suppress a
- warning.
- (save_env): ditto.
+ * ext/date/lib/date/format.rb: require 'date_core.so'.
+ date/format needs methods which are now in date_core.so.
+ This breaks make rdoc which uses Date._parse from time.rb.
- [ruby-core:45797] reported by Luis Lavena.
+Mon Apr 25 02:47:46 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Sat Jun 23 23:19:31 2012 Tanaka Akira <akr@fsij.org>
+ * ext/date/lib/date/format.rb (_iso8601): fixed a bug of regex.
- * internal.h (rb_execarg): add new_pgroup_given and new_pgroup_flag
- fields.
+Mon Apr 25 02:12:26 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * process.c (EXEC_OPTION_NEW_PGROUP): removed.
- (proc_spawn_cmd): take a struct rb_execarg argument.
- use the new fields.
- (rb_execarg_addopt): use the new fields.
- (rb_spawn_process): follow the proc_spawn_cmd change.
+ * ext/date/lib/date/format.rb: an adjustment of regex.
- [ruby-core:45794] [ruby-trunk - Bug #6633] reported by Luis Lavena.
+Mon Apr 25 01:58:50 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Sat Jun 23 20:26:36 2012 Tanaka Akira <akr@fsij.org>
+ * ext/date/lib/date/format.rb: omitted to call _parse.
- * internal.h (rb_execarg): add fd_dup2, fd_close, fd_open,
- fd_dup2_child fields.
+Mon Apr 25 01:03:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * process.c (EXEC_OPTION_DUP2): removed.
- (EXEC_OPTION_CLOSE): removed.
- (EXEC_OPTION_OPEN): removed.
- (EXEC_OPTION_DUP2_CHILD): removed.
- (mark_exec_arg): mark the new fields.
- (check_exec_redirect1): change condition for default option.
- (check_exec_redirect): take a struct rb_execarg argument.
- use the new fields.
- (rb_execarg_addopt): follow the check_exec_redirect change.
- (check_exec_fds): use the new fields.
- (save_redirect_fd): ditto.
+ * string.c (rb_to_id): remove unused variable.
-Sat Jun 23 19:01:18 2012 Tanaka Akira <akr@fsij.org>
+Sun Apr 24 22:19:05 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * process.c (rb_execarg_fixup): fix envopts condition.
+ * complex.c, rational.c: omitted some method calls.
-Sat Jun 23 18:44:13 2012 Tanaka Akira <akr@fsij.org>
+Sun Apr 24 02:57:27 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * process.c (check_exec_redirect1): extracted from
- check_exec_redirect.
+ * ext/date/date_parse.c (n2i): takes long.
-Sat Jun 23 17:22:02 2012 Tanaka Akira <akr@fsij.org>
+Sun Apr 24 02:51:06 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * process.c (save_env): don't use EXEC_OPTION_UNSETENV_OTHERS.
- (rb_execarg_run_options): ditto.
+ * ext/date/date_parse.c: reverted.
-Sat Jun 23 17:04:08 2012 Tanaka Akira <akr@fsij.org>
+Sun Apr 24 02:25:23 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * internal.h (rb_execarg): add env_modification field.
+ * include/ruby/intern.h: pcc can't use __builtin_constant_p.
- * process.c (EXEC_OPTION_ENV): removed.
- (mark_exec_arg): mark env_modification field.
- (rb_exec_fillarg): update the new field, instead of options array.
- (rb_execarg_fixup): use the new field.
- (save_env): ditto.
- (rb_execarg_run_options): ditto.
+ * vm_exec.c: change condition.
-Sat Jun 23 16:27:01 2012 Tanaka Akira <akr@fsij.org>
+Sun Apr 24 01:58:01 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * internal.h (rb_execarg): add rlimit_limits field.
+ * ext/date/date_core.c (leap_p): suppress warning: parentheses.
- * process.c (EXEC_OPTION_RLIMIT): removed.
- (mark_exec_arg): mark rlimit_limits field.
- (rb_execarg_addopt): update the new fields, instead of options array.
- (run_exec_rlimit): use the new field.
- (rb_execarg_run_options): clear sarg using MEMZERO. use the new
- field.
+ * ext/date/date_core.c (date_s__parse_internal): remove unused
+ variable "str".
-Sat Jun 23 14:29:25 2012 Tanaka Akira <akr@fsij.org>
+ * ext/date/date_parse.c (parse_ddd_cb): use RSTRING_LENINT.
- * internal.h (rb_execarg): add chdir_given and chdir_dir fields.
+ * ext/date/date_strftime.c (date_strftime_with_tmx): remove unused
+ variable.
- * process.c (EXEC_OPTION_CHDIR): removed.
- (mark_exec_arg): mark chdir_dir field.
- (rb_execarg_addopt): update the new fields, instead of options array.
- (rb_execarg_run_options): use the new fields.
+Sun Apr 24 00:34:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Sat Jun 23 13:20:47 2012 Tanaka Akira <akr@fsij.org>
+ * ext/date/date_parse.c: removed some unused macros. use strchr()
+ instead of index().
- * internal.h (rb_execarg): add close_others_given, close_others_do and
- close_others_maxhint fields.
+Sat Apr 23 21:29:42 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * process.c (EXEC_OPTION_CLOSE_OTHERS): removed.
- (rb_execarg_addopt): update the new fields, instead of options array.
- (check_exec_fds): take eargp as an argument. update the
- close_others_maxhint field.
- (rb_execarg_fixup): follow the argument change of check_exec_fds.
- (rb_execarg_run_options): use the new fields.
+ * ext/date/date_core.c: replacement of implementation of
+ _parse. [experimental]
+ * ext/date/date_parse.c: new.
+ * ext/date/lib/date/format.rb: removed ruby version of _parse.
-Sat Jun 23 10:41:59 2012 Tanaka Akira <akr@fsij.org>
+Fri Apr 22 12:04:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * internal.h (rb_execarg): add unsetenv_others_given and
- unsetenv_others_do fields.
+ * array.c (rb_ary_sort_bang): fix rdoc.
+ patched by burningTyger. https://github.com/ruby/ruby/pull/11
- * process.c (EXEC_OPTION_UNSETENV_OTHERS): removed.
- (rb_execarg_addopt): update the new fields, instead of options array.
- (rb_execarg_fixup): use the new fields.
+Fri Apr 22 11:49:49 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Jun 23 09:35:47 2012 Tanaka Akira <akr@fsij.org>
+ * lib/xmlrpc/create.rb (XMLRPC::Create#conv2value):
+ XML-RPC's int is 32bit int, and Fixnum also may be beyond 32bit.
- * process.c: use the variable name "soptions" for sargp->options.
+ * lib/xmlrpc/create.rb (XMLRPC::Create#conv2value):
+ XML-RPC doesn't allow Infinity and NaN.
+ http://www.xmlrpc.com/spec
-Sat Jun 23 09:17:49 2012 Tanaka Akira <akr@fsij.org>
+Fri Apr 22 04:16:14 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * process.c: use the name "sargp" for struct rb_execarg variables
- consistently for saving process attributes.
+ * ext/psych/parser.c (parse): strings from psych have proper taint
+ markings.
- * io.c: ditto.
+ * test/psych/test_tainted.rb: test for string taint
-Sat Jun 23 07:59:57 2012 Tanaka Akira <akr@fsij.org>
+Thu Apr 21 01:30:02 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * process.c: use the name "eargp" for struct rb_execarg variables
- consistently except for saving process attributes.
+ * random.c (rb_f_srand): fix rdoc: srand(0)'s 0 is a seed.
+ [ruby-core:35833] fixes #4590
- * io.c: ditto.
+Thu Apr 21 01:01:28 2011 Masaya Tarui <tarui@ruby-lang.org>
- * ext/pty/pty.c: ditto.
+ * win32/win32.c (CreateChild): maximum length of lpCommandLine is
+ 32,768 characters, including the Unicode terminating null character.
-Wed Jun 20 18:27:03 2012 Yuki Yugui Sonoda <yugui@google.com>
+Wed Apr 20 21:32:11 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * common.mk: Add missing dependencies.
+ * ext/date/date_strptime.c (date__strptime_internal): do not
+ overwrite local variables.
-Fri Jun 22 20:27:39 2012 Tanaka Akira <akr@fsij.org>
+Wed Apr 20 14:41:28 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * internal.h (rb_execarg): add pgroup_given and pgroup_pgid fields.
+ * string.c (rb_str_each_line): check string's length when compare
+ separator and string. [ruby-core:35815] fixes #4586
- * process.c (EXEC_OPTION_PGROUP): removed.
- (rb_execarg_addopt): update the new fields, instead of options array.
- (run_exec_pgroup): take a struct rb_execarg argument. refer the new
- fields.
- (rb_execarg_run_options): follow run_exec_pgroup change.
+Wed Apr 20 00:02:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jun 22 18:48:51 2012 Kouhei Sutou <kou@cozmixng.org>
+ * misc/ruby-mode.el (ruby-parse-partial): use position of open paren.
- * README.EXT, README.EXT.ja: use "sval" for the third argument
- name of Data_Wrap_Struct().
- Suggested by @satoh_fumiyasu. Thanks!!!
+Tue Apr 19 01:00:21 2011 Tajima Akio <artonx@yahoo.co.jp>
-Fri Jun 22 18:04:26 2012 Koichi Sasada <ko1@atdot.net>
+ * test/ruby/test_io.rb (TestIO#test_cross_thread_close_fd):
+ skip cross thread pipe close if windows
- * iseq.c, vm_eval.c: set th->base_block properly.
- th->base_block is information for (a) parsing, (b) compiling
- and (c) setting up the frame to execute the program passed by
- `eval' method. For example, (1) parser need to know up-level
- variables to detect it is variable or method without paren.
- Befor (a), (b) and (c), VM set th->base_block by passed bindng
- (or previous frame information). After execute (a), (b) and (c),
- VM should clear th->base_block. However, if (a), (b) or (c)
- raises an exception, then th->base_block is not cleared.
- Problem is that the uncleared value th->balo_block is used for
- irrelevant iseq compilation. It causes SEGV or critical error.
- I tried to solve this problem: to clear them before exception,
- but finally I found out that it is difficult to do it (Ruby
- program can be run in many places).
- Because of this background, I set th->base_block before
- compiling iseq and restore it after compiling.
- Basically, th->base_block is dirty hack (similar to global
- variable) and this patch is also dirty.
+Mon Apr 18 12:15:46 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * bootstraptest/test_eval.rb: add a test for above.
+ * test/ruby/test_range.rb (TestRange#test_step_ruby_core_35753):
+ avoid float error. [ruby-core:35804]
- * internal.h: remove unused decl.
+Sun Apr 17 00:20:14 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * iseq.c (rb_iseq_compile_with_option): add base_block parameter.
- set th->base_block before compilation and restore it after
- compilation.
+ * ext/date/date_{core,strftime}.c: use struct tmx instead of vtm.
+ * ext/date/date_tmx.h: new.
- * ruby.c (require_libraries): pass 0 as base_block instead of
- setting th->base_block
+Sat Apr 16 22:23:52 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * tool/compile_prelude.rb (prelude_eval): apply above changes.
+ * ext/date/date_strftime.c (date_strftime_wo_timespec): changed
+ the way of validation of locale modifiers.
- * vm.c, vm_eval.c: ditto.
+Sat Apr 16 21:55:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * vm_core.h: add comments.
+ * ext/date/date_core.c: replacement of implementation of
+ _strptime. [experimental]
+ * ext/date/date_strptime.c: new.
+ * ext/date/lib/date/format.rb: removed ruby version of _strptime.
-Fri Jun 22 18:19:38 2012 Tanaka Akira <akr@fsij.org>
+Sat Apr 16 10:18:30 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * process.c: pass struct rb_execarg value instead of its options
- field for saving process attribute changing functions.
- (save_redirect_fd): take a struct rb_execarg argument.
- (run_exec_dup2): ditto.
- (run_exec_close): ditto.
- (run_exec_open): ditto.
- (run_exec_dup2_child): ditto.
- (run_exec_pgroup): ditto.
- (run_exec_rlimit): ditto.
- (save_env): ditto.
- (rb_execarg_run_options): follow the above functions change.
+ * vm.c (Init_VM): suppress warning: "OPT_BASIC_OPERATIONS" is not
+ defined.
-Fri Jun 22 17:55:48 2012 Koichi Sasada <ko1@atdot.net>
+Fri Apr 15 23:41:18 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * test/ruby/test_backtrace.rb: decrease recursion depth
- to reduce consuming stack size.
+ * ruby.c (proc_options): suppress warning:
+ "ALLOW_DEFAULT_SOURCE_ENCODING" is not defined.
-Fri Jun 22 13:36:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Apr 15 15:10:29 2011 Akinori MUSHA <knu@iDaemons.org>
- * random.c (random_init, random_load): cannot initialize frozen object
- again, nor with tainted/untrusted object. [Bug #6540]
+ * lib/uri/generic.rb (#route_from_path): Fix a bug where
+ URI('http://h/b/').route_to('http://h/b') wrongly returned './'
+ (should be '../b'). [Bug #4476]
-Fri Jun 22 13:32:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Apr 15 14:58:06 2011 Akinori MUSHA <knu@iDaemons.org>
- * error.c (rb_check_copyable): new function, to ensure the target is
- not frozen and the source is not tainted nor untrusted.
+ * lib/fileutils.rb (FileUtils#touch): Fix corrupted output when
+ mtime is specified in addition to nocreate (and verbose).
+ ref [ruby-dev:43401]
-Fri Jun 22 05:55:20 2012 Eric Hodel <drbrain@segment7.net>
+Thu Apr 14 23:43:43 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * eval.c (ruby_cleanup): Fixed typo. Patch by Trever Dawe.
- Fixes #131 (github). [ruby-trunk - Bug #6619]
+ * numeric.c (ruby_float_step): wrong loop condition.
+ fixes [ruby-core:35753], reported by Joey Zhou.
-Thu Jun 21 21:16:58 2012 Tanaka Akira <akr@fsij.org>
+ * test/ruby/test_range.rb (TestRange#test_step_ruby_core_35753):
+ test above change.
- * process.c (rb_execarg_addopt): take a VALUE argument instead of
- struct rb_execarg.
- (rb_exec_arg_addopt): follow the rb_execarg_addopt change.
- (check_exec_options_i): ditto.
+Thu Apr 14 22:48:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (pipe_open): follow the rb_execarg_addopt change.
+ * lib/test/unit.rb (Test::Unit::Options#setup_options): set possible
+ values for completion. no conversion is needed.
- * internal.h (rb_execarg_addopt): follow the definition change.
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#initialize): use
+ positional arguments instead of keyword arguments.
-Thu Jun 21 20:34:19 2012 Tanaka Akira <akr@fsij.org>
+ * lib/test/unit.rb (Test::Unit::Runner#jobs_status): io/console may
+ not be available. use 80 as the last resort if IO#winsize and
+ COLUMNS are unavailable.
- * process.c (rb_exec_fillarg): take a VALUE argument instead of
- struct rb_execarg.
- (rb_check_exec_options): ditto.
- (check_exec_options_i): ditto.
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#died): rename using a
+ verb.
-Thu Jun 21 19:48:05 2012 Tanaka Akira <akr@fsij.org>
+ * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): check if worker
+ is signaled and use its exit status.
- * process.c (rb_exec_async_signal_safe): use rb_execarg_run_options
- instead of rb_run_exec_options_err.
- (rb_spawn_process): ditto.
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#dead): no longer @in
+ and @out are separated.
-Thu Jun 21 19:02:43 2012 Tanaka Akira <akr@fsij.org>
+Thu Apr 14 21:23:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * process.c (rb_exec_fillarg): take a VALUE argument instead of
- struct rb_execarg.
- (rb_execarg_init): follow the rb_exec_fillarg change.
+ * variable.c (rb_autoload_p): search superclasses as same as actual
+ loading. fixes [ruby-core:35679]
-Thu Jun 21 18:36:43 2012 Tanaka Akira <akr@fsij.org>
+Thu Apr 14 21:21:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * process.c (rb_execarg_init): take a VALUE argument instead of
- struct rb_execarg.
- (rb_execarg_new): follow the rb_execarg_init change.
- (rb_exec_arg_init): ditto.
+ * include/ruby/win32.h (frexp, modf): wrongly declared as pure in
+ mingw math.h.
- * internal.h (rb_execarg_init): follow the definition change.
+ * include/ruby/win32.h (ftruncate, truncate): mingw64 misses
+ prototypes.
-Thu Jun 21 17:20:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * win32/win32.c (rb_w32_read): suppress warning.
- * parse.y (new_args_tail_gen): fix GC problem of keyword rest
- argument. the wrapped struct should be bound to the wrapping node
- before assignment of child nodes, to get rid of the case the
- children are referred by only the struct pointer which is not a
- subject of GC. [ruby-core:45744]
+Thu Apr 14 19:55:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Thu Jun 21 07:06:52 2012 Koichi Sasada <ko1@atdot.net>
+ * lib/fileutils.rb (FileUtils#touch): fix corrupted output when
+ FileUtils.touch(:nocreate => true, :verbose => true) case.
+ The patch was written by Hiroyuki Iwatsuki. [ruby-dev:43401]
- * error.c (err_append): rename err_append() to compile_err_append()
- and move definition body. err_append() is used only by compiling.
+Thu Apr 14 16:01:45 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-Thu Jun 21 06:21:54 2012 Tanaka Akira <akr@fsij.org>
+ * io.c (rb_f_syscall): suppress warning: "HAVE___SYSCALL" is not
+ defined.
- * process.c (rb_execarg_fixup): take a VALUE argument instead of
- struct rb_execarg.
+Thu Apr 14 00:41:09 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * internal.h (rb_execarg_fixup): follow the definition change.
+ * thread.c (thread_fd_close_i): IOError exception should be assigned
+ to rb_thread_t::thrown_errinfo.
- * io.c (pipe_open): follow rb_execarg_fixup change.
+Wed Apr 13 20:12:26 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * ext/pty/pty.c (establishShell): ditto.
+ * io.c (rb_io_fdatasync): remove unused variable.
-Wed Jun 20 21:25:37 2012 Tanaka Akira <akr@fsij.org>
+Tue Apr 12 20:54:12 2011 Tanaka Akira <akr@fsij.org>
- * internal.h (struct rb_execarg): add umask_given and umask_mask
- fields.
+ * include/ruby/st.h: parenthesize macro arguments.
- * process.c (STATIC_ASSERT): removed.
- (rb_execarg_addopt): follow the rb_execarg change.
- (rb_execarg_run_options): ditto.
+Tue Apr 12 19:19:50 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Jun 20 20:38:23 2012 Tanaka Akira <akr@fsij.org>
+ * lib/uri/common.rb: avoid race condition. fixes #4572
- * internal.h (struct rb_execarg) moved and renamed from
- struct rb_exec_arg in intern.h.
+Tue Apr 12 18:07:13 2011 TAKAO Kouji <kouji@takao7.net>
- * include/ruby/intern.h (struct rb_exec_arg): refer Data object which
- contains struct rb_execarg.
+ * ext/readline/extconf.rb: --disable-libedit to disable
+ libedit. fixes #4550
- * process.c: use struct rb_execarg instead of struct rb_exec_arg
- except functions declared in intern.h.
- (rb_exec_arg_addopt): extract a pointer to struct rb_execarg from
- struct rb_exec_arg.
- (rb_exec_arg_init): ditto.
- (rb_exec_arg_fixup): ditto.
- (rb_run_exec_options_err): ditto.
- (rb_run_exec_options): ditto.
- (rb_exec_err): ditto.
- (rb_exec): ditto.
+Tue Apr 12 10:37:39 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * io.c: use struct rb_execarg instead of struct rb_exec_arg.
+ * include/ruby/win32.h: VC doesn't have ftruncate() and others, but
+ ruby needs HAVE_ macros to use our emulation functions.
+ (fix the problem of 31262)
- * ext/pty/pty.c: ditto.
+Tue Apr 12 01:33:00 2011 Luis Lavena <luislavena@gmail.com>
-Wed Jun 20 19:13:25 2012 Tanaka Akira <akr@fsij.org>
+ * configure.in: properly evaluate existence of truncate, ftruncate
+ and ftello for MinGW. [ruby-core:35678]
+ * win32/win32.c: rename truncate, ftruncate and ftello to avoid
+ redefinitions.
+ * win32/win32.h: ditto.
- * internal.h (rb_execarg_new): declared.
- (rb_execarg_get): ditto.
+Mon Apr 11 21:51:52 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * process.c (mark_exec_arg): new function.
- (free_exec_arg): ditto.
- (memsize_exec_arg): ditto.
- (exec_arg_data_type): defined.
- (rb_execarg_new): new function.
- (rb_execarg_get): ditto.
- (rb_f_exec): use rb_execarg_new.
- (rb_spawn_internal): ditto.
- (rb_f_spawn): ditto.
+ * io.c: revert r31230. Because it made a regression.
+ [ruby-core:35631]
- * io.c (pipe_open_v): use rb_execarg_new.
- (pipe_open_s): ditto.
+Mon Apr 11 21:49:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/pty/pty.c (establishShell): use rb_execarg_new.
+ * test/ruby/test_io.rb: Added TestIO#test_cross_thread_close_stdio
+ and TestIO#test_cross_thread_close_fd.
+ The patch was written by Eric Wong. [ruby-core:35669]
-Wed Jun 20 16:36:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Apr 11 21:15:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * missing/setproctitle.c (environ): use (*_NSGetEnviron()) instead of
- environ on Darwin for namespace cleanness, same as [ruby-core:00537].
- [ruby-core:45615] [Bug #6576]
+ * file.c (rb_group_member): kill 256K of stack usage.
+ the patch was written by Eric Wong. [ruby-core:35699]
-Wed Jun 20 11:33:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Apr 11 07:24:13 2011 Eric Hodel <drbrain@segment7.net>
- * process.c (rb_execarg_addopt): always make Fixnum, and ignore higher
- bits in too large umask value.
+ * ext/openssl/ossl.c: Fix typo, document version constants.
-Wed Jun 20 11:24:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Apr 10 22:23:45 2011 Tanaka Akira <akr@fsij.org>
- * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): deal with
- sudden-death of workers.
+ * include/ruby/ruby.h: parenthesize macro arguments.
-Mon Jun 18 20:34:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Apr 9 23:31:47 2011 Shota Fukumori <sorah@tubusu.net>
- * time.c (init_leap_second_info): fix non-ANSI function declaration.
+ * ext/stringio/stringio.c (strio_each, strio_readlines):
+ Use `NUM2LONG` instead of `FIX2INT`. Fixes [ruby-dev:43395].
-Mon Jun 18 20:29:04 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Apr 9 23:22:27 2011 Shota Fukumori <sorah@tubusu.net>
- * ruby.c (rb_f_sub): use ansi style declaration.
- * ruby.c (rb_f_gsub): ditto.
- * ruby.c (rb_f_chomp): ditto.
+ * ext/stringio/stringio.c (strio_each):
+ Fix exception message and don't raise immediately if block is not
+ given.
+ Fixes [ruby-dev:43394].
-Mon Jun 18 20:26:23 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/stringio/test_stringio.rb (test_each_line_limit_0):
+ Fix test for above.
- * random.c (rb_random_int32): get rid of "warning: constant 0x100000000
- is so big it is long" warning.
+Sat Apr 9 21:54:15 2011 Shota Fukumori <sorah@tubusu.net>
-Mon Jun 18 20:07:23 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/stringio/stringio.c (strio_each, strio_readlines):
+ limit must not be zero. Fixes [ruby-dev:43392].
- * dir.c (dir_initialize): get rid of "unused return: argc = rb_scan_args()"
- warning.
+ * test/stringio/test_stringio.rb: Add tests for above.
-Mon Jun 18 19:31:20 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Apr 9 18:01:36 2011 Tanaka Akira <akr@fsij.org>
- * include/ruby/missing.h: include math.h before checking INFINITY
- and NAN. Otherwise, strange macro redefinition will occur.
+ * include/ruby/util.h: parenthesize macro arguments.
-Mon Jun 18 19:12:37 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Apr 8 16:01:56 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * array.c (ary_reverse): use ansi style declaration.
+ * ext/stringio/stringio.c (strio_getline): check whether str is
+ a string when str and lim are given.
+ https://twitter.com/watson1978/status/56225052152168449
-Tue Jun 19 18:43:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Apr 7 20:03:52 2011 Tanaka Akira <akr@fsij.org>
- * include/ruby/backward/rubysig.h: fix visibility. [Bug #6607]
+ * include/ruby/io.h: parenthesize macro arguments.
-Tue Jun 19 17:51:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Apr 6 21:08:31 2011 Tanaka Akira <akr@fsij.org>
- * process.c (rb_execarg_run_options): do not call any methods in the
- async-signal-safe function. mask has been checked with NUM2MODET()
- already and converted with LONG2NUM().
+ * include/ruby/intern.h: parenthesize macro arguments.
-Tue Jun 19 11:59:56 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Apr 6 15:12:40 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/readline/readline.c (Init_readline): don't set 0 to
- rl_catch_signals and rl_catch_sigwinch. [Bug #5423]
+ * ext/openssl/ossl_pkey_dh.c (ossl_dh_initialize):
+ pop pushed error after each try of reading. fixes #4550
-Tue Jun 19 11:52:59 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/openssl/ossl_pkey_dsa.c (ossl_dsa_initialize): ditto.
- * ext/readline/readline.c (readline_s_get_special_prefixes): suppress
- warning: uninitialized instance variable.
+ * ext/openssl/ossl_pkey_ec.c (ossl_ec_initialize): ditto.
-Tue Jun 19 11:43:16 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Apr 6 11:36:44 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/readline/readline.c (readline_getc): fix editline compatibility
- broken by r36123. [Bug #6601]
+ * ext/openssl/ossl_pkey_rsa.c (ossl_rsa_initialize):
+ pop pushed error after each try of reading. fixes #4550
-Mon Jun 18 17:10:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Apr 5 20:33:43 2011 Tanaka Akira <akr@fsij.org>
- * string.c (rb_str_subpos): split from rb_str_substr. returns
- adjusted position for substring.
+ * include/ruby/encoding.h: parenthesize macro arguments.
-Mon Jun 18 10:42:57 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Apr 4 22:02:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/readline/readline.c (readline_getc): deal with ESC just followed
- by ASCII as meta prefix in incremental search mode. based on the
- patch from rctay (Tay Ray Chuan) at [ruby-core:45682]. [Bug #6601]
+ * ext/io/nonblock/nonblock.c (io_nonblock_set): Avoid F_SETFL if
+ we're not changing the O_NONBLOCK bit. F_SETFL is an expensive
+ operation since it needs to affect all processes with the same
+ file object.
+ The patch is written by Eric Wong. [ruby-core:35556]
-Sun Jun 17 22:23:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Apr 4 21:41:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * dir.c (rb_file_directory_p): move documentation for Dir.exist? from
- file.c so that the proper description will be shown instead of the
- documentation of File.directory?. [ruby-core:45685]
+ * io.c (rb_io_syswrite): While local FS writes are usually
+ buffered, the buffers can be full or the file opened with
+ O_SYNC. IO#syswrite can also be used on blocking IOs
+ (pipe/socket) just like IO#write.
+ The patch is written by Eric Wong. [ruby-core:35554]
-Sun Jun 17 16:21:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Apr 4 11:50:40 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * thread_win32.h (rb_thread_lock_t): make a union for USE_WIN32_MUTEX.
- this internal is used only in thread_win32.c, but has to be complete
- to define rb_thread_t.
+ * test/test_tempfile.rb: simply ignore platform dependent testcases
+ instead of skipping.
- * thread_win32.c (native_mutex_lock, native_mutex_destroy): fix for
- USE_WIN32_MUTEX.
+Sun Apr 3 22:52:22 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * thread_win32.c (native_cond_timedwait_ms): rename reserved pattern
- name. user defined symbols should not start with __.
+ * ext/syslog/syslog.c: improve rdoc.
+ a patch by Jonas Pfenniger. [ruby-core:35592] fixes #4545
-Sat Jun 16 19:24:01 2012 Tadayoshi Funaba <tadf@dotrb.org>
+Sun Apr 3 22:10:09 2011 Tanaka Akira <akr@fsij.org>
- * ext/date/date_core.c: define date_sg_t.
+ * ext/zlib/zlib.c: parenthesize macro arguments.
-Sat Jun 16 18:46:57 2012 Tadayoshi Funaba <tadf@dotrb.org>
+Sun Apr 3 21:33:58 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/date/date_tmx.h: offset in struct tmx_funcs is now int.
- * ext/date/date_strftime.c: ditto.
- * ext/date/date_core.c: ditto.
+ * configure.in: disable fdatasync again on Mac OS X.
+ [ruby-core:35493][Bug #4500]
-Sat Jun 16 18:31:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Apr 3 21:16:20 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * eval.c (ruby_setup): set running state in the normal case before
- popping a tag.
+ * io.c (io_reopen): IO#close releases GVL if possible.
+ close() may block for certain file types (NFS, SO_LINGER
+ sockets, inotify), so let other threads run. The patch was
+ created by Eric Wong [ruby-core:35555][Bug #4527]
-Sat Jun 16 07:46:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * io.c (fptr_finalize): ditto.
- * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): format workers
- results in the parent.
+ * io.c (maygvl_fclose): new.
+ * io.c (nogvl_fclose): ditto.
+ * io.c (maygvl_close): ditto.
+ * io.c (nogvl_close): ditto.
-Sat Jun 16 07:12:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Apr 1 22:25:50 2011 Tanaka Akira <akr@fsij.org>
- * tool/runruby.rb (File.realpath): return real path of expanded path.
- [Bug #6598]
+ * ext/syslog/syslog.c: parenthesize macro arguments.
-Sat Jun 16 07:12:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Apr 1 18:53:06 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
- * bootstraptest/runner.rb (main): ignore -j option for compatibility
- with test/unit.
+ * lib/webrick/cookie.rb (WEBrick::Cookie.parse): 'white space is
+ permitted between tokens' according to RFC2965. Though 'Netscape
+ spec' does not define the syntax clearly, make it tolerant as a
+ server. As a real-world example, rest-client gem sends
+ 'Cookie: foo=1;bar=2'
-Sat Jun 16 07:11:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/webrick/test_cookie.rb (test_parse_non_whitespace): test it.
- * lib/test/unit.rb (Test::Unit::Runner#puke): modify only result and
- drop useless reports, not override entirely.
+Fri Apr 1 13:19:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/test/unit/parallel.rb (Test::Unit::Worker#_run_suite): report
- unformatted results. formatting messages is not a workers task.
+ * vm_core.h (RUBY_VM_CHECK_INTS_TH): merge a patch by ko1
+ in [ruby-dev:43373].
- * lib/test/unit/parallel.rb (Test::Unit::Worker#puke): store raw
- results.
+Thu Mar 31 23:15:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Jun 16 01:27:14 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * misc/ruby-mode.el (ruby-brace-to-do-end, ruby-do-end-to-brace):
+ adjust space between block beginning and block arguments
- * ext/psych/lib/psych.rb: bumping psych to 1.3.3
- * ext/psych/psych.gemspec: ditto
+Thu Mar 31 20:42:05 2011 Tanaka Akira <akr@fsij.org>
-Fri Jun 15 20:54:28 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * ext/strscan/strscan.c: parenthesize macro arguments.
- * vm_backtrace.c (backtrace_collect): rename from backtreace_collect.
+Thu Mar 31 18:06:12 2011 Shugo Maeda <shugo@ruby-lang.org>
-Fri Jun 15 19:22:13 2012 Koichi Sasada <ko1@atdot.net>
+ * vm_insnhelper.c (vm_get_ev_const): should ignore crefs with
+ the NODE_FL_CREF_PUSHED_BY_EVAL flag.
- * vm_core.h: remove VM_FRAME_MAGIC_FINISH (finish frame type).
- Before this commit:
- `finish frame' was place holder which indicates that VM loop
- needs to return function.
- If a C method calls a Ruby methods (a method written by Ruby),
- then VM loop will be (re-)invoked. When the Ruby method returns,
- then also VM loop should be escaped. `finish frame' has only
- one instruction `finish', which returns VM loop function.
- VM loop function executes `finish' instruction, then VM loop
- function returns itself.
- With such mechanism, `leave' instruction (which returns one
- frame from current scope) doesn't need to check that this `leave'
- should also return from VM loop function.
- Strictly, one branch can be removed from `leave' instruction.
- Consideration:
- However, pushing the `finish frame' needs costs because
- it needs several memory accesses. The number of pushing
- `finish frame' is greater than I had assumed. Of course,
- pushing `finish frame' consumes additional control frame.
- Moreover, recent processors has good branch prediction,
- with which we can ignore such trivial checking.
- After this commit:
- Finally, I decide to remove `finish frame' and `finish'
- instruction. Some parts of VM depend on `finish frame',
- so the new frame flag VM_FRAME_FLAG_FINISH is introduced.
- If this frame should escape from VM function loop, then
- the result of VM_FRAME_TYPE_FINISH_P(cfp) is true.
- `leave' instruction checks this flag every time.
- I measured performance on it. However on my environments,
- it improves some benchmarks and slows some benchmarks down.
- Maybe it is because of C compiler optimization parameters.
- I'll re-visit here if this cause problems.
+Thu Mar 31 16:49:56 2011 Shugo Maeda <shugo@ruby-lang.org>
- * insns.def (leave, finish): remove finish instruction.
+ * vm_insnhelper.c (vm_get_ev_const): search root cref properly.
+ [ruby-dev:43365]
- * vm.c, vm_eval.c, vm_exec.c, vm_backtrace.c, vm_dump.c:
- apply above changes.
+Thu Mar 31 14:50:25 2011 Shugo Maeda <shugo@ruby-lang.org>
-Fri Jun 15 19:11:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * eval.c (rb_mod_s_constants): should ignore crefs with
+ the NODE_FL_CREF_PUSHED_BY_EVAL flag.
- * lib/test/unit.rb (Test::Unit::Runner#puke): always add skipped
- results to the report for parallel test. [Bug #6595]
+Wed Mar 30 22:55:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jun 15 09:01:35 2012 Yuki Yugui Sonoda <yugui@google.com>
+ * misc/ruby-mode.el (ruby-toggle-block): toggle do/end and {}.
- * nacl/pepper_main.c: Removed an unnecessary and erroneous inclusion.
+ * misc/ruby-mode.el (ruby-move-to-block): move to opening of
+ block.
-Thu Jun 14 22:59:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Mar 30 14:35:15 2011 Shugo Maeda <shugo@ruby-lang.org>
- * configure.in (RUBY_CPPOUTFILE): check if output is really sent to
- specified file to tell if -o option works. [ruby-dev:45742]
- [Bug#6591]
+ * vm_insnhelper.h (COPY_CREF): should copy
+ the NODE_FL_CREF_PUSHED_BY_EVAL flag to hide constants from
+ methods defined by class_eval. [ruby-dev:43365]
- * configure.in (RUBY_CPPOUTFILE): check if output file is actually
- created. [ruby-dev:45742] [Bug#6591]
+Wed Mar 30 00:24:53 2011 Tanaka Akira <akr@fsij.org>
-Thu Jun 14 22:10:50 2012 Tanaka Akira <akr@fsij.org>
+ * ext/stringio/stringio.c: parenthesize macro arguments.
- * process.c (proc_exec_sh): don't strip leading spaces of the script.
+Tue Mar 29 21:51:31 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Thu Jun 14 15:54:02 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * object.c (rb_String): Kernel#String should call to_str before to_s.
- * file.c (rb_file_s_basename, rb_file_s_dirname): documentation fix.
- File.basename and File.dirname support File::ALT_SEPARATOR.
+Tue Mar 29 10:28:08 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Thu Jun 14 11:10:10 2012 Yuki Yugui Sonoda <yugui@google.com>
+ * test/webrick/test_filehandler.rb
+ (WEBrick::TestFileHandler#test_short_filename): the cgi doesn't exist
+ on current directory.
- * nacl/pepper_main.c: Applies the new embedding API to pepper_ruby.
+Tue Mar 29 05:19:57 2011 Tanaka Akira <akr@fsij.org>
-Thu Jun 14 10:44:41 2012 Yuki Yugui Sonoda <yugui@google.com>
+ * ext/socket/raddrinfo.c: parenthesize macro arguments.
- * include/ruby/ruby.h: Grouped APIs for embedding CRuby interpreter.
- (ruby_setup, ruby_compile_main_from_file,
- ruby_compile_main_from_string, ruby_eval_main,
- ruby_set_script_name): new APIs to embed CRuby.
- (ruby_opaque_t) Opaque pointer to an internal data, to NODE or iseq
- in particular.
+Tue Mar 29 00:03:51 2011 Tajima Akio <artonx@yahoo.co.jp>
- * eval.c (ruby_setup): Similar to ruby_init but returns an error code
- instead of exit(3) on error.
- (ruby_eval_main): Similar to ruby_exec_node but returns the
- evaluation result.
- (ruby_eval_main_internal): renamed from ruby_exec_internal.
+ * test/webrick/test_filehandler.rb (test_short_filename):
+ read real short filename by cmd because smb mounted files
+ have different naming convention.
- * ruby.c (toplevel_context): new helper function.
- (PREPARE_EVAL_MAIN): moved.
- (process_options): refactored with new functions.
- (parse_and_compile_main) new helper function.
- (ruby_compile_main_from_file, ruby_compile_main_from_string) new API
- (ruby_set_script_name): new API.
+Mon Mar 28 11:38:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/date/date_core.c (date_s_today): use int for year.
-Thu Jun 14 10:39:48 2012 Yuki Yugui Sonoda <yugui@google.com>
+ * ext/date/date_core.c (datetime_s_now): ditto.
- * eval.c: Add doxygen comments.
+Mon Mar 28 11:07:41 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * ruby.c: ditto.
+ * ext/extmk.rb: set MFLAGS from MAKEFLAGS when using nmake.
- * thread_pthread.c: ditto
+Mon Mar 28 11:07:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * version.c: ditto.
+ * common.mk (love): all you need is love.
- * vm_core.h: ditto.
+Sun Mar 27 23:16:31 2011 Tanaka Akira <akr@fsij.org>
-Thu Jun 14 10:16:07 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/socket/ipsocket.c: parenthesize macro arguments.
- * configure.in: revert r36071 and add NetBSD to blacklist of -ansi.
+Sun Mar 27 16:55:34 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Jun 14 07:59:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * misc/ruby-mode.el (ruby-mode-map): remove unnecessary
+ binding. fixes
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468952
- * thread_pthread.c (get_stack): Linux is the only OS which includes
- the size of guard page into the stack size.
+ * misc/ruby-mode.el: suppress warnings at byte compile. fixes
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502926
-Thu Jun 14 06:21:00 2012 Eric Hodel <drbrain@segment7.net>
+Sun Mar 27 11:18:35 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * lib/drb/drb.rb: Replace broken links to the English DRb book.
- Patch by Zachary Scott. [ruby-trunk - Bug #6544]
+ * ext/date/date_core.c: removed unused variables.
-Thu Jun 14 06:17:47 2012 Eric Hodel <drbrain@segment7.net>
+Sat Mar 26 15:16:09 2011 Tanaka Akira <akr@fsij.org>
- * lib/observer.rb: Update broken link to the Programming Ruby book.
- Patch by Zachary Scott. [ruby-trunk - Bug #6536]
- * lib/drb/drb.rb: ditto.
+ * ext/socket/getaddrinfo.c: parenthesize macro arguments.
-Thu Jun 14 05:23:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Mar 26 05:27:34 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * regparse.c (PFETCH_READY): suppress Wunused-but-set-variable.
+ * ext/date/lib/date/format.rb (DateTime#strftime): removed because
+ date_core defines it.
- * regparse.c (is_onechar_cclass): restructured to clarify that c is
- used iff found == 1.
+Fri Mar 25 21:59:45 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Thu Jun 14 02:54:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/date/date_core.c: should not force cast with macros.
- * configure.in: use -fbuiltin with -ansi -std=iso9899:199409.
- This prevents errors introduced by disabling builtin functions,
- which is the sub-effect of -ansi/-std.
- Now NetBSD can use -ansi -std=iso9899:199409.
- Maybe mingw, cygwin and darwin can also.
+Fri Mar 25 21:56:10 2011 Tanaka Akira <akr@fsij.org>
-Thu Jun 14 02:53:30 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/sdbm/init.c: parenthesize macro arguments.
- * Makefile.in: don't remove macros. now name2ctype uses macros.
+Fri Mar 25 19:39:40 2011 Ben Walton <bwalton@artsci.utoronto.ca>
- * tool/enc-unicode.rb: add comment why it uses Hash#index.
+ * test/test_syslog.rb:
+ Skip syslog tests that rely on LOG_PERROR unless it's defined
- * enc/unicode/{name2ctype.kwd,name2ctype.src,name2ctype.h.blt}:
- update to follow the current name2ctype.h.
- FYI current Unicode version is 6.1.
+ Instead of checking looking at the platform to determine if the tests
+ relying on LOG_PERROR should be run, look for the definition of the
+ constant as this will be robust against all platforms as long as the
+ underlying syslog.c code sets it up correctly.
-Thu Jun 14 00:16:59 2012 Akinori MUSHA <knu@iDaemons.org>
+ This specifically addresses failures on Solaris 9.
- * lib/net/http/responses.rb, lib/webrick/httpstatus.rb: Add HTTP
- response codes added in RFCs 2817 and 4918. [ruby-core:45547]
- [Feature #6569]
+ Use LOG_PID instead of LOG_PERROR in Syslog.open test
- * lib/net/http/responses.rb: Rename Net::HTTPMultipleChoice to
- Net::HTTPMultipleChoices, leaving the former as alias to the
- latter for backward compatibility. [ruby-core:45547]
- [Feature #6569]
+ LOG_PERROR isn't a POSIX option for syslog, so it fails on platforms
+ that don't define it. Solaris 9 and 10 are examples of this.
- * lib/net/http/responses.rb: Add comments about unused,
- still-in-draft and private extension response codes.
- [ruby-core:45547] [Feature #6569]
+ Use LOG_PID instead.
-Wed Jun 13 22:44:32 2012 Naohisa Goto <ngotogenome@gmail.com>
+Fri Mar 25 15:42:17 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * test/dl/test_func.rb (test_qsort1, test_qsort2): use TYPE_SIZE_T
- for size_t variables. [ruby-dev:45733] [Bug #6584]
+ * ext/sdbm/_sdbm.c (sdbm_open): use size_t.
-Wed Jun 13 22:18:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/syck/bytecode.c: ditto.
- * configure.in: remove -ansi and -std options for lgamma_r() and
- finite().
+ * ext/sdbm/_sdbm.c (delpair): use ptrdiff_t.
-Wed Jun 13 21:46:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/sdbm/init.c: use RSTRING_LENINT.
- * configure.in: cygwin does not provide some declarations in strict
- ANSI mode.
+ * ext/dl/handle.c: suppress warning: shorten-64-to-32.
-Wed Jun 13 20:19:59 2012 Tanaka Akira <akr@fsij.org>
+ * ext/strscan/strscan.c: ditto.
- * process.c (rb_fork_internal): move a variable declaration.
+ * ext/syck/emitter.c: ditto.
-Wed Jun 13 17:54:38 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * ext/syck/implicit.c: ditto.
- * regparse.c (PFETCH_READY): this line was to suppress warning,
- but did emit warnings if -Wuninitialized was set. Assigning
- NULL instead if pfetch_prev should suffice the situation.
+ * ext/syck/syck.c: ditto.
-Wed Jun 13 17:51:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/syck/token.c: ditto.
- * configure.in: cygwin needs C99 for some stuff, e.g.,
- pthread_attr_setstacksize, sched_yield.
+Fri Mar 25 12:14:58 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Jun 13 17:50:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/nkf/nkf-utf8/nkf.c: import nkf 7f18e30.
- * Makefile.in (.c.i): add warnflags to make the result consistent with
- compilation.
+Fri Mar 25 11:49:29 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Wed Jun 13 15:12:07 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * test/ruby/test_process.rb (TestProcess#test_no_curdir): skip silently
+ on Windows, because this tests a platform specific feature and it'll
+ never be supported on ruby on Windows.
- * configure.in: On Windows platforms, system provided headers are
- VC++ optimized. That is, C++ habits are often contaminated into
- various headers. Most frequent situation is the use of //
- comments. We bypass ANSI C mode for them. Otherwise extension
- libs cannot include those headers.
+ * test/ruby/test_dir_m17n.rb
+ (TestDir_M17N#test_filename_extutf8_invalid,
+ TestDir_M17N#test_filename_as_bytes_extutf8): ditto.
-Wed Jun 13 13:39:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/open-uri/test_open-uri.rb
+ (TestOpenURI#test_find_proxy_case_sensitive_env): ditto.
- * include/ruby/win32.h: get rid of C99 style one line comments.
+ * test/dl/test_handle.rb (DL::TestHandle#test_NEXT,
+ DL::TestHandle#test_DEFAULT): ditto.
-Wed Jun 13 13:39:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Mar 24 23:06:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * encoding.c (enc_alias_internal): use strdup defined as macro.
+ * vm_insnhelper.c (vm_get_ev_const): should not autoload in
+ defined? mode.
-Wed Jun 13 10:20:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * variable.c (rb_const_defined_0): fix autoloading base.
+ [ruby-core:35509]
- * process.c (rb_exec_fillarg): get rid of SIZE_T_MAX which may need
- more headers.
+Thu Mar 24 22:48:43 2011 Tanaka Akira <akr@fsij.org>
- * process.c (rb_exec_fillarg): fix array element size. "continue" and
- "readonly" exceeded the size.
+ * ext/sdbm/_sdbm.c: parenthesize macro arguments.
- * process.c (rb_exec_fillarg): use shell if the first word is reserved
- or special built-in name.
- http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html
+Thu Mar 24 14:45:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * process.c (rb_exec_fillarg): treat '=' only in the first word. if
- the first word does not contain '=', it is the command name and
- environment assignments cannot be anymore.
+ * ext/openssl/ossl.c: suppress warning: shorten-64-to-32.
-Tue Jun 12 23:45:36 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/openssl/ossl.h: ditto.
- * lib/mkmf.rb: add dummy clean-static target to prevent errors for the
- case real clean-static target doesn't exist.
+ * ext/openssl/ossl_asn1.c: ditto.
-Tue Jun 12 22:49:42 2012 Naohisa Goto <ngotogenome@gmail.com>
+ * ext/openssl/ossl_bio.c: ditto.
- * process.c (rb_exec_arg_fixup): fix compile error
+ * ext/openssl/ossl_bn.c: ditto.
-Tue Jun 12 21:40:13 2012 Tanaka Akira <akr@fsij.org>
+ * ext/openssl/ossl_cipher.c: ditto.
- * process.c (rb_exec_fillarg): treat '=' character as a meta
- character to detect assignments preceding command name.
+ * ext/openssl/ossl_hmac.c: ditto.
-Tue Jun 12 20:29:19 2012 Tanaka Akira <akr@fsij.org>
+ * ext/openssl/ossl_ns_spki.c: ditto.
- * include/ruby/intern.h (rb_exec_arg_init): deprecated.
- (rb_exec_arg_addopt): ditto.
- (rb_exec_arg_fixup): ditto.
- (rb_run_exec_options): ditto.
- (rb_run_exec_options_err): ditto.
+ * ext/openssl/ossl_ocsp.c: ditto.
- * internal.h (rb_execarg_init): declared.
- (rb_execarg_addopt): ditto.
- (rb_execarg_fixup): ditto.
- (rb_execarg_run_options): ditto.
+ * ext/openssl/ossl_pkcs5.c: ditto.
- * process.c: call rb_execarg_addopt, rb_execarg_fixup,
- rb_execarg_run_options, rb_execarg_init.
- (rb_execarg_addopt): renamed from rb_exec_arg_addopt.
- (rb_exec_arg_addopt): stub to call rb_execarg_addopt.
- (rb_execarg_init): renamed from rb_exec_arg_init.
- (rb_exec_arg_init): stub to call rb_execarg_init.
- (rb_execarg_fixup): renamed from rb_exec_arg_fixup.
- (rb_exec_arg_fixup): stub to call rb_execarg_fixup.
- (rb_execarg_run_options): renamed from rb_run_exec_options_err.
- (rb_run_exec_options_err): stub to call rb_execarg_run_options.
- (rb_run_exec_options): call rb_execarg_run_options.
+ * ext/openssl/ossl_pkey.c: ditto.
- * io.c: call rb_execarg_addopt, rb_execarg_fixup,
- rb_execarg_run_options, rb_execarg_init.
+ * ext/openssl/ossl_pkey_dh.c: ditto.
- * ext/pty/pty.c (establishShell): call rb_execarg_init and
- rb_execarg_fixup.
+ * ext/openssl/ossl_pkey_dsa.c: ditto.
-Tue Jun 12 18:39:59 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * ext/openssl/ossl_pkey_ec.c: ditto.
- * configure.in: enable strict ANSI mode by default in case of GCC,
- requested by _ko1.
+ * ext/openssl/ossl_pkey_rsa.c: ditto.
-Tue Jun 12 06:40:23 2012 Tanaka Akira <akr@fsij.org>
+ * ext/openssl/ossl_rand.c: ditto.
- * process.c (rb_exec_fillarg): detect '#' as a meta character.
+ * ext/openssl/ossl_ssl.c: ditto.
-Mon Jun 11 22:15:44 2012 Tanaka Akira <akr@fsij.org>
+ * ext/openssl/ossl_x509ext.c: ditto.
- * include/ruby/intern.h (rb_proc_exec_n): deprecated.
- (rb_exec): ditto.
- (rb_exec_err): ditto.
- (rb_fork): ditto.
- (rb_fork_err): ditto.
+ * ext/openssl/ossl_x509name.c: ditto.
-Mon Jun 11 18:49:52 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Mar 24 11:48:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * configure.in: on checking libexecinfo, don't specify /use/local.
- On FreeBSD people must specify --with-opt-dir or --with-execinfo-dir.
+ * ext/openssl/ossl_rand.c (ossl_rand_egd_bytes): use NUM2INT because
+ the result is used with functions whose argument is int.
-Mon Jun 11 12:14:37 2012 Koichi Sasada <ko1@atdot.net>
+ * ext/openssl/ossl_ssl.c (ossl_sslctx_setup): ditto.
- * vm_core.h: remove lfp (local frame pointer) and rename
- dfp (dynamic frame pointer) to ep (environment pointer).
- This change make VM `normal' (similar to other interpreters).
- Before this commit:
- Each frame has two env pointers lfp and dfp. lfp points
- local environment which is method/class/toplevel frame.
- lfp[0] is block pointer.
- dfp is block local frame. dfp[0] points previous (parent)
- environment pointer.
- lfp == dfp when frame is method/class/toplevel.
- You can get lfp from dfp by traversing previous environment
- pointers.
- After this commit:
- Each frame has only `ep' to point respective environment.
- If there is parent environment, then ep[0] points parent
- environment (as dfp). If there are no more environment,
- then ep[0] points block pointer (as lfp). We call such ep
- as `LEP' (local EP). We add some macros to get LEP and to
- detect LEP or not.
- In short, we replace dfp and lfp with ep and LEP.
- rb_block_t and rb_binding_t member `lfp' and `dfp' are removed
- and member `ep' is added.
- rename rb_thread_t's member `local_lfp' and `local_svar' to
- `root_lep' and `root_svar'.
- (VM_EP_PREV_EP(ep)): get previous environment pointer. This macro
- assume that ep is not LEP.
- (VM_EP_BLOCK_PTR(ep)): get block pointer. This macro assume
- that ep is LEP.
- (VM_EP_LEP_P(ep)): detect ep is LEP or not.
- (VM_ENVVAL_BLOCK_PTR(ptr)): make block pointer.
- (VM_ENVVAL_BLOCK_PTR_P(v)): detect v is block pointer.
- (VM_ENVVAL_PREV_EP_PTR(ptr)): make prev environment pointer.
- (VM_ENVVAL_PREV_EP_PTR_P(v)): detect v is prev env pointer.
-
- * vm.c: apply above changes.
- (VM_EP_LEP(ep)): get LEP.
- (VM_CF_LEP(cfp)): get LEP of cfp->ep.
- (VM_CF_PREV_EP(cfp)): utility function VM_EP_PREV_EP(cfp->ep).
- (VM_CF_BLOCK_PTR(cfp)): utility function VM_EP_BLOCK_PTR(cfp->ep).
-
- * vm.c, vm_eval.c, vm_insnhelper.c, vm_insnhelper.h, insns.def:
- apply above changes.
-
- * cont.c: ditto.
-
- * eval.c, eval_intern.h: ditto.
+ * ext/openssl/ossl_x509store.c (ossl_x509store_set_purpose): ditto.
- * proc.c: ditto.
+ * ext/openssl/ossl_x509store.c (ossl_x509store_set_trust): ditto.
- * thread.c: ditto.
+ * ext/openssl/ossl_x509store.c (ossl_x509stctx_set_purpose): ditto.
- * vm_dump.c: ditto.
+ * ext/openssl/ossl_x509store.c (ossl_x509stctx_set_trust): ditto.
- * vm_exec.h: fix function name (on vm debug mode).
+Thu Mar 24 11:36:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Jun 11 11:52:18 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * ext/openssl/ossl_x509name.c: id_aref's type is ID.
- * compile.c (iseq_set_sequence): nonstatic initializer of an
- aggregate type is a C99ism.
+Thu Mar 24 10:04:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * compile.c (enum compile_array_type_t): comma at the end of enum
- list is a C99ism.
+ * ext/io/console/console.c (console_set_winsize):
+ suppress warning: shorten-64-to-32.
- * vm_backtrace.c (enum LOCATION_TYPE): ditto.
+Thu Mar 24 09:56:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Jun 11 06:31:33 2012 Tanaka Akira <akr@fsij.org>
+ * ext/openssl/ossl_ocsp.c (ossl_ocspreq_verify): flags is VALUE,
+ so it should use NUM2INT.
- * process.c (rb_proc_exec_n): revert the function removed at r35889.
+ * ext/openssl/ossl_ocsp.c (ossl_ocspbres_verify): ditto.
-Mon Jun 11 06:20:50 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Mar 23 21:09:29 2011 Tanaka Akira <akr@fsij.org>
- * thread_pthread.c (rb_thread_create_timer_thread): assign return
- value to the variable err.
+ * ext/readline/readline.c: parenthesize macro arguments.
-Mon Jun 11 06:17:06 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Mar 23 08:07:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * thread_pthread.c (native_cond_initialize): fix typo in r36022.
- this cause a failure on FreeBSD 8.2 amd64.
- http://fbsd.rubyci.org/~chkbuild/ruby-trunk/log/20120610T130201Z.diff.html.gz
+ * numeric.c (flo_round): fix inaccurate results.
-Mon Jun 11 05:21:57 2012 Koichi Sasada <ko1@atdot.net>
+Wed Mar 23 00:12:16 2011 Tajima Akio <artonx@yahoo.co.jp>
- * .gdbinit (SDR): add SDR function. It's only for VM debugging.
+ * win32/win32.c: wait process real termination after reading
+ exit code. fixes #4518
-Sun Jun 10 21:50:45 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+Tue Mar 22 21:20:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * nacl/nacl_config.rb: Fixed for 32bit hosts.
+ * lib/rubygems/test_case.rb: save current dir to @current_dir
+ before Dir.chdir.
-Sun Jun 10 20:23:14 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+Tue Mar 22 20:10:04 2011 Tanaka Akira <akr@fsij.org>
- Fixes threading on NativeClient.
+ * ext/psych/parser.c: parenthesize macro arguments.
- * thread_pthread.c (timer_thread_sleep): Extracted out a function from
- thread_timer(). Added an alternative implementation for platforms
- that lacks select(2) or pipe(2).
- (rb_thread_create_timer_thread, native_cond_initialize,
- native_cond_destroy): Replaced wrong HAVE_XXX checks.
+Tue Mar 22 20:10:01 2011 Tanaka Akira <akr@fsij.org>
- * configure.in (pthread_attr_init): New check.
+ * ext/openssl/ruby_missing.h: parenthesize macro arguments.
-Sun Jun 10 21:30:11 2012 Tanaka Akira <akr@fsij.org>
+Tue Mar 22 13:33:22 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
- * process.c (rb_exec_without_timer_thread): renamed from rb_exec_err.
- (rb_exec_err): new stub function to call
- rb_exec_without_timer_thread.
- (rb_f_exec): call rb_exec_without_timer_thread.
- (rb_exec): call rb_exec_without_timer_thread.
+ * ext/openssl/lib/openssl/buffering.rb: removed circular require of
+ openssl.rb.
-Sun Jun 10 21:13:10 2012 Tanaka Akira <akr@fsij.org>
+ * ext/openssl/lib/openssl/*: removed following comment for transition
+ measures of avoiding circular require. No one claimed about this as
+ far as I know.
+ ##
+ # Should we care what if somebody require this file directly?
+ # require "openssl"
- * process.c (rb_fork): call rb_fork_internal instead of rb_fork_err.
+Tue Mar 22 10:57:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Jun 10 20:55:59 2012 Tanaka Akira <akr@fsij.org>
+ * test/runner.rb: set Gem::TestCase's @@project_dir.
- * process.c (rb_fork_ruby): call rb_fork_internal directly.
+ * lib/rubygems/test_case.rb: set Gem::TestCase's @@project_dir only
+ when it is not defined.
-Sun Jun 10 20:19:40 2012 Tanaka Akira <akr@fsij.org>
+Tue Mar 22 09:38:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * process.c (rb_fork_ruby): new function.
- (rb_f_fork): use rb_fork_ruby instead of rb_fork.
- (rb_daemon): ditto.
+ * numeric.c (flo_round): use pow instead of while-loop. fixes #4510
+ patched by Alex Young [ruby-core:35526]
- * io.c (pipe_open): use rb_fork_ruby instead of rb_fork.
+Tue Mar 22 06:47:46 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * internal.h (rb_fork_ruby): declared.
+ * ext/date/date_strftime.c (date_strftime_wo_timespec):
+ suppress warning: shorten-64-to-32.
-Sun Jun 10 18:58:16 2012 Akinori MUSHA <knu@iDaemons.org>
+Tue Mar 22 06:42:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/net/http/response.rb: Remove a duplicated rdoc and leave a
- pointer.
+ * ext/date/date_core.c: suppress warning: shorten-64-to-32.
- * lib/net/http/responses.rb: Add RFC numbers to base on.
+Tue Mar 22 06:41:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Jun 10 18:31:42 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+ * lib/test/unit/parallel.rb: remove unused variable.
- * configure.in (RUBY_NACL): Warns if $PATH does not contain the path
- to NativeClient SDK. PATH variable redefinition in GNUmakefile does
- not work for GNU make 3.81.
+Tue Mar 22 06:19:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Jun 10 17:54:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * enc/utf_16le.c: suppress warning: shorten-64-to-32.
- * gc.h (IS_STACK_DIR_UPPER): utility macro.
+ * ext/dbm/dbm.c: ditto.
- * thread_pthread.c (get_stack): seems stack size does not include
- guard size on Mac OS X.
+ * ext/gdbm/gdbm.c: ditto.
- * thread_pthread.c (ruby_init_stack): adjust stack size for offset of
- addr from the bottom.
+ * parse.y (Init_ripper): suppress warning: unused value.
-Sun Jun 10 15:49:47 2012 Tanaka Akira <akr@fsij.org>
+Mon Mar 21 11:21:32 2011 Shota Fukumori <sorah@tubusu.net>
- * process.c (retry_fork): call after_fork except in a child process.
- (rb_fork_internal): restrict after_fork call condition.
+ * lib/test/unit.rb: Refactoring. Unified if and elsif.
-Sun Jun 10 14:19:33 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sun Mar 20 23:09:34 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * configure.in: NetBSD 6 adds libexecinfo but it only works on amd64.
- http://www.mail-archive.com/source-changes-full@netbsd.org/msg38729.html
+ * ext/date/date_strftime.c: checks duplicated modifiers.
-Sun Jun 10 12:43:23 2012 Tanaka Akira <akr@fsij.org>
+Sun Mar 20 22:32:30 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * process.c (rb_f_exec): call rb_exec_async_signal_safe except on
- Mac OS X. cf. the comment in before_exec_non_async_signal_safe.
+ * ext/date/date_strftime.c: removed unused code and arguments.
-Sun Jun 10 12:15:18 2012 Tanaka Akira <akr@fsij.org>
+Sun Mar 20 21:34:49 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * io.c (popen_exec): don't call rb_thread_atfork_before_exec. use
- rb_exec_async_signal_safe instead of rb_exec_err.
- (pipe_open): use rb_fork_async_signal_safe instead of rb_fork_err.
+ * ext/date/date_core.c: replacement of implementation of
+ strftime. It has some limitations that is same as Time's
+ one. [experimental]
+ * ext/date/date_strftime.c: new.
+ * ext/date/lib/date/format.rb: removed ruby version of strftime.
-Sun Jun 10 11:44:57 2012 Tanaka Akira <akr@fsij.org>
+Sun Mar 20 12:43:12 2011 Tanaka Akira <akr@fsij.org>
- * process.c (rb_fork_internal): call after_fork only unless
- chfunc_is_async_signal_safe.
+ * ext/openssl/ossl_x509store.c: parenthesize macro arguments.
-Sun Jun 10 11:33:01 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Sun Mar 20 01:39:48 2011 Tajima Akio <artonx@yahoo.co.jp>
- * ext/openssl/ossl_pkey_ec.c
- test/openssl/test_pkey_ec.rb: Add support for EC_POINT_mul.
- Patch provided by Sambasiva Suda. Thanks!
- [ruby-core:44408][ruby-trunk - Feature #6310]
+ * hash.c (ruby_setenv): check env process block size with OS ver.
+ * win32/win32.c: export rb_w32_osver for above patch.
+ * include/ruby/win32.h: declare rb_w32_osver for Win32 Libs.
-Sun Jun 10 10:48:15 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Sat Mar 19 18:35:05 2011 Tajima Akio <artonx@yahoo.co.jp>
- * lib/openssl/ssl.rb: Use a simple random number to generate the
- session id. MD5, as was used before, causes problems when
- using a FIPS version of OpenSSL. Issue was found by Jared
- Jennings, thank you!
- [ruby-trunk - Bug #6137]
+ * hash.c (ruby_setenv): calculate total env block size for win32.
+ * test/ruby/test_env.rb: add test for above patch.
-Sun Jun 10 10:27:34 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Sat Mar 19 17:14:46 2011 Tajima Akio <artonx@yahoo.co.jp>
- * NEWS: Add note about the new private key export behavior.
+ * hash.c (ruby_setenv): checking with max process environment
+ block size for Win32. 32767 for 2000/XP, 2003. if failed to
+ read the block, then checking with 5120 for earlier Windows.
-Sun Jun 10 10:24:51 2012 Tanaka Akira <akr@fsij.org>
+Sat Mar 19 12:30:25 2011 Tanaka Akira <akr@fsij.org>
- * process.c (rb_exec_async_signal_safe): exported.
+ * ext/openssl/ossl_x509revoked.c: parenthesize macro arguments.
- * ext/pty/extconf.rb: modify $INCFLAGS to include internal.h
+Fri Mar 18 20:44:36 2011 Tanaka Akira <akr@fsij.org>
- * ext/pty/pty.c: include internal.h.
- (chfunc): don't call rb_thread_atfork_before_exec. use
- rb_exec_async_signal_safe instead of rb_f_exec.
- (establishShell): set up earg. use rb_fork_async_signal_safe
- instead of rb_fork_err.
+ * ext/openssl/ossl_x509req.c: parenthesize macro arguments.
- * internal.h (rb_exec_async_signal_safe): declared.
- (rb_fork_async_signal_safe): declared.
+Fri Mar 18 08:48:06 2011 Oleg Shaldybin <oleg.shaldybin@gmail.com>
-Sun Jun 10 10:21:37 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * lib/fileutils.rb (FileUtils::Entry_#copy_file): updated FileUtils.cp
+ to still copy file permissions when :preserve is false (as cp does
+ this even when -p isn't set).
- * ext/openssl/ossl.c
- ext/openssl/ossl_pkey_rsa.c
- ext/openssl/ossl_pkey_dsa.c
- ext/openssl/ossl_pkey_ec.c: Forbid export passwords that are less
- than four characters long, as OpenSSL itself does not allow this.
- Issue found by Eric Hodel.
- * ext/openssl/ossl_pkey_ec.c: Add export as an alias of to_pem,
- following the PKey interface contract.
- * test/openssl/test_pkey_dsa.rb
- test/openssl/test_pkey_rsa.rb
- test/openssl/test_pkey_ec.rb: Add tests that assert correct
- behaviour when dealing with passwords that are less than four
- characters long.
- [ruby-core: 42281][ruby-trunk - Bug #5951]
+Fri Mar 18 00:59:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Jun 10 10:14:26 2012 Tanaka Akira <akr@fsij.org>
+ * ext/win32ole/extconf.rb (create_docfile): removed. should not
+ modify source directory unnecessarily, platform dependent
+ documentation should be dealt with by rdoc. [ruby-core:35495]
- * process.c (rb_f_exec): use rb_exec_arg_prepare.
+Fri Mar 18 00:54:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Jun 10 06:43:51 2012 Tanaka Akira <akr@fsij.org>
+ * include/ruby/ruby.h (rb_funcall_passing_block): add prototype.
+ a patch by James M. Lawrence at [ruby-core:35501]
- * process.c: split after_exec into async-signal-safe part and rest.
- (after_exec_async_signal_safe): extracted from after_exec.
- (after_exec_non_async_signal_safe): ditto.
- (after_exec): call them.
- (rb_exec_async_signal_safe): call after_exec_async_signal_safe.
- (rb_exec_err): call after_exec_non_async_signal_safe instead of
- after_exec.
+Wed Mar 17 06:23:31 2011 Tanaka Akira <akr@fsij.org>
-Sun Jun 10 06:21:10 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * ext/openssl/ossl_x509name.c: parenthesize macro arguments.
- * NEWS: document new features of Ruby OpenSSL.
+Wed Mar 16 20:36:56 2011 Tanaka Akira <akr@fsij.org>
-Sun Jun 10 03:09:41 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * ext/socket/ipsocket.c (init_inetsock_internal): raise an error on
+ listen(2) failure.
+ reported by Xavier Shay. [ruby-core:35505]
- * ext/openssl/ossl.c: Fix error in example. Patch by David Albert.
+Wed Mar 16 15:06:21 2011 Eric Hodel <drbrain@segment7.net>
- Add/extend existing documentation. Examples now also cover RSA
- signatures and PBKDF2.
- [ruby-core: 45154][ruby-trunk - Bug #6475]
+ * ext/openssl/lib/openssl/buffering.rb (module OpenSSL): #flush should
+ not change sync mode on exception.
+ * test/openssl/test_buffering.rb: added
+Wed Mar 16 13:45:28 2011 Eric Hodel <drbrain@segment7.net>
-Sun Jun 10 01:41:45 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * ext/openssl/lib/openssl/buffering.rb: de-nest Buffering module
- * ext/openssl/ossl_ssl.c: Introduce SSLContext#renegotiation_cb and
- remove SSLContext#disable_client_renegotiation and related
- functionality introduced in r35797. The new callback approach
- gives clients maximum flexibility to decide on their own what to
- do on renegotiation attempts.
- Add documentation for SSL module and SSLError.
- * test/openssl/test_ssl.rb: Add a test for
- SSLContext#renegotiation_cb.
+ * ext/openssl/lib/openssl/buffering.rb: add RDoc
-Sun Jun 10 01:37:18 2012 Tanaka Akira <akr@fsij.org>
+Wed Mar 16 08:40:39 2011 Tanaka Akira <akr@fsij.org>
- * process.c (rb_fork_internal): initialize exc.
+ * ext/openssl/ossl_x509ext.c: parenthesize macro arguments.
-Sun Jun 10 00:19:25 2012 Tanaka Akira <akr@fsij.org>
+Tue Mar 15 18:34:27 2011 Tanaka Akira <akr@fsij.org>
- * process.c: don't use non async-signal-safe functions in a child
- process before exec, for invoking a command.
- (rb_exec_atfork): call rb_exec_async_signal_safe only.
- (retry_fork): take chfunc_is_async_signal_safe argument. call
- before_fork and after_fork only unless chfunc_is_async_signal_safe.
- (send_child_error): take chfunc_is_async_signal_safe argument.
- send an exception only unless chfunc_is_async_signal_safe.
- (recv_child_error): take chfunc_is_async_signal_safe argument.
- receive an exception only unless chfunc_is_async_signal_safe.
- (rb_fork_internal): renamed from rb_fork_err and take
- chfunc_is_async_signal_safe argument.
- use rb_protect only unless chfunc_is_async_signal_safe.
- (rb_fork_err): call rb_fork_internal with false as
- chfunc_is_async_signal_safe.
- (rb_fork_async_signal_safe): call rb_fork_internal with true as
- chfunc_is_async_signal_safe.
- (rb_spawn_process): call rb_fork_async_signal_safe instead of
- rb_fork_err.
+ * ext/openssl/ossl_x509crl.c: parenthesize macro arguments.
-Sat Jun 9 23:57:03 2012 Tanaka Akira <akr@fsij.org>
+Tue Mar 15 09:49:03 2011 Shota Fukumori <sorah@tubusu.net>
- * process.c (rb_fork_err): rewrite a complex "if" statement.
+ * test/misc/test_ruby_mode.rb (test_singleton_class): Skip for Pending.
-Sat Jun 9 23:44:29 2012 Tanaka Akira <akr@fsij.org>
+Mon Mar 14 21:20:44 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * process.c (before_exec_async_signal_safe): extracted from
- before_exec.
- (before_exec_non_async_signal_safe): ditto.
- (before_exec): call before_exec_async_signal_safe and
- before_exec_non_async_signal_safe.
- (rb_exec_async_signal_safe): call before_exec_async_signal_safe.
- (rb_exec_err): call before_exec_non_async_signal_safe instead of
- before_exec.
+ * test/ruby/test_require.rb (test_require_too_long_filename):
+ increase path length, because MAXPATHLEN is defined as 4096 on linux.
-Sat Jun 9 23:36:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_require.rb (test_require_path_home_1): ditto.
- * iseq.c (iseq_load, insn_operand_intern, rb_iseq_disasm)
- (rb_iseq_parameters): use rb_id2str() instead of rb_id2name() to
- keep encoding.
+ * test/ruby/test_require.rb (test_require_path_home_2): ditto.
- * string.c (rb_str_symname_p): new function that checks if the string
- is valid as a symbol name. split from sym_inspect().
+Mon Mar 14 19:54:37 2011 Tanaka Akira <akr@fsij.org>
-Sat Jun 9 22:27:05 2012 Tanaka Akira <akr@fsij.org>
+ * ext/openssl/ossl_x509cert.c: parenthesize macro arguments.
- * process.c (retry_fork): rewrite a complex "for" statement by
- simple statements.
+Sun Mar 13 18:11:28 2011 Tanaka Akira <akr@fsij.org>
-Sat Jun 9 21:50:04 2012 Tanaka Akira <akr@fsij.org>
+ * ext/openssl/ossl_x509attr.c: parenthesize macro arguments.
- * process.c (retry_fork): extracted from rb_fork_err.
- (send_child_error): ditto.
- (recv_child_error): ditto.
+Sun Mar 13 16:07:58 2011 Shota Fukumori <sorah@tubusu.net>
-Sat Jun 9 17:21:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/pstore.rb: Fix don't raise "nested transaction" when thread_safe
+ is true. Patch by Masaki Matsushita (Glass_saga). [ruby-dev:43337]
- * iseq.c (iseq_load): type is a symbol, and invalid as ID in common.
+ * test/test_pstore.rb: Test for above.
+ Patch by Masaki Matsushita (Glass_saga) [ruby-dev:43337]
-Sat Jun 9 10:57:14 2012 Tanaka Akira <akr@fsij.org>
+Sat Mar 12 04:12:41 2011 Tanaka Akira <akr@fsij.org>
- * process.c (rb_exec_async_signal_safe): extracted from rb_exec_err.
+ * ext/openssl/ossl_ssl_session.c: parenthesize macro arguments.
-Sat Jun 9 09:31:07 2012 Tanaka Akira <akr@fsij.org>
+Sat Mar 12 02:27:07 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * process.c: simplified because close_others option is always
- enabled by default.
- (rb_f_exec): don't need to set the option.
- (rb_exec_arg_prepare): don't need to set the option. don't need
- default_close_others argument.
- (rb_spawn_internal): don't need to give default_close_others
- argument for rb_exec_arg_prepare. don't need default_close_others
+ * ext/date/date_core.c ({d,dt}_lite_marshal_load): checks the given
argument.
- (rb_spawn_err): don't need to give default_close_others
- argument for rb_spawn_internal.
- (rb_spawn): don't need to give default_close_others
- argument for rb_spawn_internal.
- (rb_f_system): don't need to give default_close_others argument for
- rb_spawn_internal.
- (rb_f_spawn): don't need to give default_close_others argument for
- rb_exec_arg_prepare.
-Sat Jun 9 09:00:58 2012 Tanaka Akira <akr@fsij.org>
+Sat Mar 12 01:26:24 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * process.c (rb_proc_exec): call before_exec() here addition to
- rb_exec_err.
+ * ext/date/date_core.c: changed some directives.
-Sat Jun 9 08:30:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Mar 12 01:16:02 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * thread_pthread.c (ruby_init_stack): use stack info if possible.
-
-Sat Jun 9 08:21:32 2012 Eric Hodel <drbrain@segment7.net>
-
- * README.EXT (prepare extconf.rb): Added note to see MakeMakefile for
- documentation of extconf.rb functions. Patch by Zachary Scott.
- [ruby-trunk - Feature #6522]
- * README.EXT (Appendix C): Removed in favor of MakeMakefile.
- Patch by Zachary Scott.
- * lib/mkmf.rb: Merged documentation from README.EXT Appendix C. Patch
- by Zachary Scott.
-
-Sat Jun 9 08:16:47 2012 Eric Hodel <drbrain@segment7.net>
-
- * doc/re.rdoc: Completed wording in the description of the =~ operator.
- [ruby-trunk - Bug #6529]
-
-Sat Jun 9 08:09:38 2012 Eric Hodel <drbrain@segment7.net>
-
- * string.c (rb_str_start_with): Removed "p" from start_with? examples
- to match other String method examples. [ruby-trunk - Bug #6553]
- * string.c (rb_str_end_with): Updated end_with? to use code markup
- instead of italic.
-
-Sat Jun 9 07:56:03 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/benchmark.rb: Updated formatting of Benchmark documentation for
- consistency. [ruby-trunk - Bug #6533]
-
-Sat Jun 9 07:46:26 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/delegate.rb: Added documentation for Delegator#!. Patch by
- Zachary Scott. [ruby-trunk - Feature #6534]
-
-Sat Jun 9 07:39:50 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/net/http/responses.rb: Add RFC 6585 response codes. Patch by
- Sangil Jung. [ruby-trunk - Feature #6480]
- * lib/net/http/response.rb: ditto
- * lib/net/http.rb: ditto
- * lib/webrick/httpstatus.rb: ditto
-
-Sat Jun 9 01:24:28 2012 Tanaka Akira <akr@fsij.org>
-
- * process.c (rb_exec_err): before_exec() call moved from proc_exec_cmd
- and proc_exec_sh.
- (rb_proc_exec): ditto.
+ * ext/date/date_core.c, ext/date/lib/*: moved rdoc descriptions.
-Sat Jun 9 01:11:07 2012 Tanaka Akira <akr@fsij.org>
+Sat Mar 12 00:06:24 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * include/ruby/intern.h (rb_exec_arg_init): declaration changed to
- return a value.
+ * ext/date/lib: moved from lib.
- * process.c (rb_exec_arg_init): return a value.
+Fri Mar 11 23:32:38 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Fri Jun 8 23:44:14 2012 Tanaka Akira <akr@fsij.org>
+ * lib/date/delta*: removed undocumented delta.
- * process.c: don't check the availability of FD_CLOEXEC. It should
- be available if fork() is available.
+Fri Mar 11 18:42:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c: ditto.
+ * lib/mkmf.rb (find_executable0): should exclude directories.
-Fri Jun 8 22:39:32 2012 Tanaka Akira <akr@fsij.org>
+Fri Mar 11 01:40:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * process.c (rb_fork_err): revert r35955. The condition needs !chfunc
- to close ep[0] and ep[1]. The catched exception is re-raised
- immediately after that if status is not NULL.
+ * process.c (proc_getmaxgroups, proc_setmaxgroups): Process#maxgroups
+ and Process#maxgroups= now raise NotImplementedError if the
+ platform don't support supplementary groups concept.
-Fri Jun 8 19:43:33 2012 Tanaka Akira <akr@fsij.org>
+Fri Mar 11 01:25:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * process.c (rb_exec_err): after_exec() call moved from proc_exec_cmd
- and proc_exec_sh.
- (rb_proc_exec): ditto.
+ * process.c (get_sc_ngroups_max): return -1 if platform don't
+ support NGROUPS_MAX.
-Fri Jun 8 19:00:59 2012 Tanaka Akira <akr@fsij.org>
+Thu Mar 10 22:28:15 2011 Tanaka Akira <akr@fsij.org>
- * process.c (ARGV_COUNT): unused macro removed.
- (ARGV_SIZE): ditto.
- (ALLOC_ARGV): ditto.
- (ALLOC_ARGV_WITH_STR): ditto.
+ * ext/openssl/ossl_ssl.h: parenthesize macro arguments.
-Fri Jun 8 16:19:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Mar 10 21:59:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * test/runner.rb (src_testdir): expand real path so that
- TestGem#test_self_find_files does not fail by aliased load path when
- srcdir contains a symbolic link.
+ * parse.y (parser_encode_length): add exception as UTF8-MAC for
+ magic comment's emacs newline specifier
+ patched by James M. Lawrence [ruby-core:35476] fixes #4489
- * tool/runruby.rb (srcdir): ditto.
+Thu Mar 10 16:00:22 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Fri Jun 8 12:04:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * parse.y (parser_encode_length): fix typo: the length of
+ "-dos" and "-mac" is not 5 but 4.
+ patched by James M. Lawrence [ruby-core:35476] fixes #4489
- * process.c (rb_fork_err): error state in the child process is prior
- to exceptions in proc_syswait().
+Thu Mar 10 10:52:01 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * process.c (rb_fork_err): determine status on errors.
+ * test/ruby/test_require.rb: setting too long string to ENV causes
+ Errno::EINVAL on Windows. long path name errors may causes over
+ about 1024 bytes, then limit it about 4000 bytes.
- * ext/pty/pty.c (establishShell): reraise exception if something
- raised during sleep.
+Thu Mar 10 10:09:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/pty/pty.c (establishShell): now needs status to protect from
- exceptions in rb_fork_err().
+ * lib/test/unit.rb (Test::Unit::Runner::Worker#read): fix for the case
+ when IO#read or IO#gets returns nil.
-Thu Jun 7 22:13:05 2012 Tanaka Akira <akr@fsij.org>
+Thu Mar 10 07:12:03 2011 Ryan Davis <ryand-ruby@zenspider.com>
- * process.c (rb_fork_err): Fix the condition to use rb_protect.
+ * lib/rubygems*: Import rubygems 1.6.2 (release candidate @ 2026fbb5)
+ * test/rubygems: Ditto
+ * test/runner.rb: Added test to load path to fix test requires.
-Thu Jun 7 20:29:12 2012 Tanaka Akira <akr@fsij.org>
+Thu Mar 10 03:00:43 2011 Tanaka Akira <akr@fsij.org>
- * include/ruby/intern.h: rb_exec_arg and related stuff moved back from
- internal.h
+ * ext/openssl/ossl_ssl.c: parenthesize macro arguments.
-Thu Jun 7 15:53:03 2012 Koichi Sasada <ko1@atdot.net>
+Wed Mar 9 23:51:26 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * .gdbinit: add function `trace_machine_instructions' to trace
- in native machine assemble.
- See https://bugs.ruby-lang.org/projects/ruby-trunk/wiki/MachineInstructionsTraceWithGDB
- for more details.
+ * test/ruby/test_io_m17n.rb (test_io_new_enc): "sjis" is now an alias
+ of Windows-31J.
-Wed Jun 6 21:31:21 2012 Tanaka Akira <akr@fsij.org>
+Wed Mar 9 23:06:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * process.c (proc_exec_cmd) renamed from proc_exec_v.
- (proc_exec_sh): renamed from rb_proc_exec_e.
- (proc_spawn_cmd_internal): renamed from proc_spawn_v.
- (proc_spawn_cmd): renamed from proc_spawn_n.
- (proc_spawn_sh): renamed from proc_spawn.
+ * misc/ruby-mode.el (ruby-parse-partial): fix indent after aref.
-Wed Jun 6 21:18:47 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Mar 9 12:50:24 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * process.c (try_with_sh): please take care of the macro defined by
- you.
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: Rescue exceptions when
+ people implement the method method. Thanks Lin Jen-Shin.
+ [ruby-core:35255]
-Wed Jun 6 20:45:08 2012 Tanaka Akira <akr@fsij.org>
+ * test/psych/visitors/test_yaml_tree.rb: test for implementation of
+ method method.
- * process.c (proc_exec_v): don't call dln_find_exe_r here because it
- is not async-signal-safe and proc_exec_v is called in a child
- process.
- command_abspath field of rb_exec_arg.
- (rb_exec_fillarg): call dln_find_exe_r and set command_abspath.
- (rb_exec_err): Give the absolute path of the invoking command for
- proc_exec_v, instead of the command name.
+Wed Mar 9 11:53:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * internal.h: add command_abspath field for rb_exec_arg.
+ * enc/shift_jis.c: Change SJIS as an alias of Windows-31J.
+ [ruby-dev:43027] fixes #4280
-Wed Jun 6 20:08:01 2012 Tanaka Akira <akr@fsij.org>
+ * enc/shift_jis.c: Add PCK as an alias of Windows-31J.
- * process.c (try_with_sh): take envp argument.
- (exec_with_sh): ditto. use it for execve.
- (proc_exec_v): provide envp for try_with_sh.
+Wed Mar 9 00:45:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jun 6 13:25:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/extmk.rb: nmake substitutes all occurrences in macro.
- * win32/win32.c, include/ruby/win32.h (rb_w32_wrap_io_handle): new API.
- this API wraps an I/O handle (HANDLE or SOCKET) and returns fd.
- the second parameter should be combination of O_*, for example,
- O_RDWR | O_BINARY | O_NOINHERIT.
+ * ext/extmk.rb: workaround for nmake.
- * win32/win32.c, include/ruby/win32.h (rb_w32_unwrap_io_handle): new
- API. this API unwraps an I/O handle and close the fd (not closes
- the handle itself).
+Tue Mar 8 23:49:45 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- [Feature #4906] [ruby-core:37227]
+ * process.c (proc_setgroups): cleanup.
-Wed Jun 6 13:18:26 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Mar 8 23:40:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * win32/win32.c (rb_w32_close): of course, console handle is not socket.
+ * test/misc/test_ruby_mode.rb: test for ruby-mode.el.
-Wed Jun 6 12:37:43 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Mar 8 23:27:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * process.c (rb_run_exec_options_err): allocate a temporary buffer for
- run_exec_dup2() for restoring fds on non-fork environments.
+ * process.c (get_sc_ngroups_max): try to use NGROUPS_MAX at first if
+ _SC_NGROUP_MAX is not defined.
-Wed Jun 6 09:45:21 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Mar 8 23:10:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/dl/test_c_{struct_entry,union_entity}.rb: sorry, typos.
+ * misc/ruby-mode.el (ruby-parse-partial): fix for array in block.
-Wed Jun 6 05:27:54 2012 Tanaka Akira <akr@fsij.org>
+Tue Mar 8 21:44:49 2011 Tanaka Akira <akr@fsij.org>
- * process.c (rb_exec_fillarg): check use_shell field before accessing
- a union field.
+ * ext/openssl/ossl_rand.c: parenthesize macro arguments.
-Wed Jun 6 04:58:44 2012 Tanaka Akira <akr@fsij.org>
+Tue Mar 8 16:45:31 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * process.c (rb_spawn_process): prog variable is not used for Unix.
+ * hash.c (ruby_setenv): MSDN says that Windows XP or earlier limits
+ the total size of environment block to 5,120 chars. and on such
+ OS, putenv() causes SEGV. So, ruby should limit the size of an
+ environment variable to 5,120 bytes for workaround.
-Wed Jun 6 00:20:37 2012 Tanaka Akira <akr@fsij.org>
+Tue Mar 8 15:57:20 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * internal.h (rb_exec_arg_init): change return type to void.
+ * test/rubygems/test_gem_spec_fetcher.rb
+ (TestGemSpecFetcher#test_cache_dir_escapes_windows_paths): cache_dir
+ may have driveletter and `:' for base of cache_dir itself, so need
+ to skip it for checking.
- * process.c (rb_exec_arg_init): don't return a value.
- (rb_exec_arg_prepare): ditto.
- (rb_spawn_process): don't take the prog argument. extract the
- information from earg.
- (rb_spawn_internal): follow rb_spawn_process change.
- (rb_f_spawn): ditto.
+Tue Mar 8 12:30:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (pipe_open): don't take the prog argument. extract the
- information from eargp.
- (pipe_open_v): follow pipe_open change.
- (pipe_open_s): ditto.
+ * misc/ruby-mode.el (ruby-deep-indent-paren-p, ruby-calculate-indent):
+ do not apply deep-indent inside parens at the beginning of
+ expressions.
-Tue Jun 5 23:51:33 2012 Tanaka Akira <akr@fsij.org>
+Tue Mar 8 09:32:48 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * internal.h (rb_exec_arg): use union to represent command invocation
- with/without shell.
+ * common.mk (configure-ext, build-ext), ext/extmk.rb (extmake):
+ support parallel-make under ext.
- * process.c: follow the rb_exec_arg change.
+Tue Mar 8 09:25:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (pipe_open): ditto.
+ * process.c (proc_setgroups): use getgrnam() if getgrnam_r() is
+ not available.
-Tue Jun 5 22:28:46 2012 Tanaka Akira <akr@fsij.org>
+ * process.c: RARRAY_LEN() returns long int.
- * internal.h: rb_exec_arg and related stuff moved from intern.h
+Tue Mar 8 09:07:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * include/ruby/intern.h (rb_proc_exec_n): removed.
+ * configure.in (RUBY_REPLACE_TYPE): enclose in quotes for multiple
+ type names.
-Tue Jun 5 21:57:22 2012 Tanaka Akira <akr@fsij.org>
+Tue Mar 8 01:43:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * process.c (rb_exec_arg_fixup): allocate a temporary buffer for
- run_exec_dup2 here because it should be async-signal-safe.
- (run_exec_dup2): use the temporary buffer.
- (run_exec_dup2_tmpbuf_size): new function.
+ * process.c (get_sc_ngroups_max): define to wrap sysconf(3).
+ this also supports Windows which doesn't have sysconf(3).
- * include/ruby/intern.h (rb_exec_arg): add dup2_tmpbuf field.
+ * process.c (maxgroups): use get_sc_ngroups_max.
-Tue Jun 5 20:13:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * process.c (proc_setmaxgroups): ditto.
- * object.c (rb_obj_init_copy): should check if trusted too.
+Tue Mar 8 01:16:49 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Jun 5 19:59:13 2012 Tanaka Akira <akr@fsij.org>
+ * gc.c (rb_objspace): an initializer must be a constant.
- * process.c (strtok): declaration removed because it is not used.
+Tue Mar 8 01:11:44 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Jun 5 19:33:51 2012 Tanaka Akira <akr@fsij.org>
+ * process.c (maxgroups): cast because sysconf(3)'s return value is long.
- * process.c (proc_spawn): don't detect simple command line here
- because rb_exec_fillarg already did.
+ * process.c (proc_setmaxgroups): ditto.
-Tue Jun 5 19:21:10 2012 Tanaka Akira <akr@fsij.org>
+ * process.c (proc_setgroups): cast because RARRAY_LEN() is long.
- * process.c (rb_exec_fillarg): bail out a loop eagerly.
+Tue Mar 8 00:02:47 2011 Tanaka Akira <akr@fsij.org>
-Tue Jun 5 19:15:14 2012 Tanaka Akira <akr@fsij.org>
+ * ext/openssl/ossl_pkey_rsa.c: parenthesize macro arguments.
- * process.c: add comments about async-signal-safe.
+Mon Mar 7 22:59:39 2011 Shota Fukumori <sorah@tubusu.net>
- * io.c: ditto.
+ * lib/pstore.rb: Delete variable @transaction and fix #4474. Patch by
+ Masaki Matsushita (Glass_saga).
-Tue Jun 5 09:25:10 2012 Eric Hodel <drbrain@segment7.net>
+ * test/test_pstore.rb(test_thread_safe): Add test for #4474.
- * io.c: Edited documentation for IO and File open and new and
- Kernel#open for consistency and clarity.
+Mon Mar 7 21:31:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Jun 4 21:53:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * process.c (proc_setgroups): replace getgrnam() with getgrnam_r()
+ because getgrnam() isn't thread safe.
- * win32/win32.c (rb_w32_sysinit): let the system not display the
- critical-error-handler message box and the Windows Error Reporting
- dialog. [ruby-core:45389] [Bug #6535]
-
-Mon Jun 4 19:36:25 2012 Tanaka Akira <akr@fsij.org>
+Mon Mar 7 20:49:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * process.c (rb_exec_fillarg): allocate one more element before
- beginning in argv_str for try_with_sh.
+ * process.c (proc_getmaxgroups, proc_setmaxgroups): reflect
+ platform maxgroups limitation by default instead hardcoded 65536.
- * internal.h (ARGVSTR2ARGC): adjust for the above change.
- (ARGVSTR2ARGV): ditto.
+Mon Mar 7 17:13:00 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
-Mon Jun 4 19:17:06 2012 Tanaka Akira <akr@fsij.org>
+ * gc.c (rb_gc_set_params): allow GC parameter configuration by
+ environment variables. based on a patch from funny-falcon at
+ https://gist.github.com/856296, but honors safe level.
- * internal.h (ARGVSTR2ARGC): defined.
- (ARGVSTR2ARGV): defined.
+Mon Mar 7 09:05:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * process.c (proc_exec_v): use ARGVSTR2ARGV.
- (rb_spawn_process): use ARGVSTR2ARGC and ARGVSTR2ARGV.
+ * process.c: NUM2RLIM is defined but no getrlimit and setrlimit on
+ mingw.
- * io.c (pipe_open): use ARGVSTR2ARGV.
+Mon Mar 7 08:38:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Jun 4 16:13:00 2012 Koichi Sasada <ko1@atdot.net>
+ * ext/date/date_core.c (DateTimeData): should not use bare 'long long'
+ and 'long double', which are not defined by C89.
- * vm_insnhelper.h: remove magical code "lfp[0] & 0x02".
- Current VM doesn't use this bit.
+ * ext/date/date_core.c (dt_lite_plus): get rid of overflow at casting
+ down double to integer.
- * vm_core.h (RUBY_VM_GET_BLOCK_PTR): added.
+Mon Mar 7 00:21:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * eval.c (rb_block_given_p): use RUBY_VM_GET_BLOCK_PTR().
+ * process.c (proc_getgroups): get rid of maxgroups dependency.
+ ngroups can be calculated dynamically.
- * vm_eval.c (rb_f_block_given_p): ditto.
+Sun Mar 6 23:45:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Jun 4 15:39:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in: rlim_t use standard RUBY_REPLACE_TYPE mechanism.
- * win32/win32.c (constat_apply): apply VT100 functions.
- [ruby-core:44958] [Feature #6418]
+Sun Mar 6 23:26:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * win32/win32.c (constat_parse): parse some VT100 escape sequence.
+ * process.c (proc_setmaxgroups): added negative value check.
+ This was suggested by Daniel Berger. Thanks Daniel!
+ [ruby-core:35426][Bug#4467]
-Mon Jun 4 14:06:12 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Mar 6 23:18:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * process.c (rb_exec_err): should preserve errno.
+ * process.c (maxgroups, proc_setmaxgroups): increase max groups
+ limitation up to 65536.
-Mon Jun 4 13:10:11 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Mar 6 22:20:59 2011 Tanaka Akira <akr@fsij.org>
- * test/dl/test_c_{struct_entry,union_entity}.rb: broken require.
+ * ext/openssl/ossl_pkey_ec.c: parenthesize macro arguments.
-Mon Jun 4 12:01:21 2012 Koichi Sasada <ko1@atdot.net>
+Sun Mar 6 21:49:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/ruby/test_backtrace.rb: fix test.
- Windows path includes `:' character.
+ * sample/list.rb (MyElem#initialize): initialize @head
+ explicitly. Otherwise -W2 option makes following warning.
+ "warning: instance variable @head not initialized".
+ This issue was founded by Andrew Grimm. Thanks Andrew!
+ [ruby-core:35435][Bug#4471]
-Mon Jun 4 11:42:39 2012 Koichi Sasada <ko1@atdot.net>
+Sun Mar 6 05:21:41 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * vm_core.h (rb_location_t): fix type and field name.
- (1) rename rb_location_t to rb_iseq_location_t.
- (2) rename field names of rb_iseq_location_t to adjust
- RubyVM::Backtrace::Location methods.
- (2-1) filename -> path
- (2-2) filepath -> absolute_path
- (2-3) basename -> base_label
- (2-4) name -> label
- (3) rename filed name rb_iseq_location_t#line_no to
- rb_iseq_location_t#first_lineno to clear purpose of this field.
- (4) The field names rb_binding_t#(filename|line_no) are also renamed
- to rb_binding_t#(path|first_lineno).
+ * class.c: fix camelCase to snake_case in documentation code examples.
+ patched by Andrew Grimm. fixes Bug #4469
- * compile.c: apply above changes.
-
- * iseq.c: ditto.
+ * marshal.c: ditto.
* proc.c: ditto.
- * vm*.c: ditto.
-
-Mon Jun 4 11:40:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * marshal.c (r_object0): also load TYPE_USRMARSHAL, TYPE_DATA using
- compatible loader.
-
-Mon Jun 4 11:33:42 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * process.c (rb_run_exec_options_err): restore save_env() call for
- non-fork environments.
-
- * process.c (rb_exec_err): restore environments after the failure of
- exec to fix [ruby-core:44093] [Bug #6249] on non-fork environments
-
-Mon Jun 4 10:42:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * io.c (pipe_open): follow up changes in r35889.
-
- * process.c (proc_spawn_n): now uses char ** instead of VALUE *.
-
- * process.c (rb_spawn_process): prog is now VALUE of String, not char *.
-
-Mon Jun 4 06:12:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * marshal.c (r_object0): remove old warning for _alloc.
-
-Mon Jun 4 04:24:06 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * marshal.c: experimental test aborted.
- * complex.c: ditto.
- * rational.c: ditto.
- * include/ruby/intern.h: ditto.
-
-Mon Jun 4 00:45:18 2012 Tanaka Akira <akr@fsij.org>
-
- * process.c (rb_spawn_process): fix for Windows. not tested.
-
-Mon Jun 4 00:11:51 2012 Tanaka Akira <akr@fsij.org>
-
- * process.c (rb_proc_exec_e): don't use ISSPACE(). \f, \r and \v
- are not word separator in Bourne shell.
-
-Sun Jun 3 23:47:30 2012 Tanaka Akira <akr@fsij.org>
-
- * include/ruby/intern.h (rb_exec_arg): remove argc and argv fields.
- add use_shell, argv_str and argv_buf fields.
-
- * process.c (rb_proc_exec_e): don't split shell command line arguments
- here to avoid memory allocation in a child process.
- (rb_exec_fillarg): split shell command line arguments here.
- (proc_exec_v): takes argv_str argument instead of argv.
- (rb_proc_exec_ne): removed.
- (rb_proc_exec_n): removed.
- (rb_run_exec_options_err): don't initialize the removed fields.
- (rb_exec_err): don't initialize the removed fields.
- call proc_exec_v directly instead of rb_proc_exec_ne.
- (rb_spawn_process): use use_shell field.
-
-Sun Jun 3 21:53:00 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * GPL: update text of GPLv2. [ruby-core:44488] [Bug #6328]
- http://www.gnu.org/licenses/gpl-2.0.txt
-
-Sun Jun 3 21:22:52 2012 Tanaka Akira <akr@fsij.org>
-
- * process.c (rb_exec_getargs): remove rb_exec_arg argument.
-
-Sun Jun 3 21:14:26 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * marshal.c: calls directly rb_{Complex,Rational}_marshal_load().
- But now disabled. [experimental]
- * complex.c: followed the above.
- * rational.c: ditto.
- * include/ruby/intern.h: ditto.
-
-Sun Jun 3 21:18:17 2012 Tanaka Akira <akr@fsij.org>
-
- * process.c (rb_check_argv): use rb_str_new_frozen instead of
- rb_str_new4.
-
-Sun Jun 3 20:10:52 2012 Tanaka Akira <akr@fsij.org>
-
- * process.c (rb_proc_exec_e): extended version of rb_proc_exec() to
- call execle().
- (rb_proc_exec): use rb_proc_exec_e().
- (rb_exec_err): use rb_proc_exec_e().
-
-Sun Jun 3 19:47:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * thread.c (vm_living_thread_num): suppress a warning.
-
-Sun Jun 3 17:23:52 2012 Tanaka Akira <akr@fsij.org>
-
- * use execve() to preserve environment variables when exec method is
- failed. [ruby-core:44093] [ruby-trunk - Bug #6249]
-
- * include/ruby/intern.h (rb_exec_arg): add envp_str and envp_buf field
- to store envp of execve().
-
- * process.c (proc_exec_v): takes envp_str as an argument and use it
- for execve().
- (rb_proc_exec_ne): extended version of rb_proc_exec_n().
- (rb_proc_exec_n): use rb_proc_exec_ne().
- (rb_proc_exec): follow proc_exec_v() change.
- (fill_envp_buf_i): new function.
- (rb_exec_arg_fixup): set up envp_str and envp_buf.
- (save_env_i): removed.
- (save_env): removed.
- (rb_run_exec_options_err): don't modify environment variables.
- (rb_exec_err): use rb_proc_exec_ne().
-
-Sun Jun 3 16:33:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * marshal.c: revert r35879 "now marshal_{load|dump} are external."
-
- * complex.c (nucomp_marshal__{dump,load}): should use rb_marshal_{dump,load}.
-
- * rational.c (nurat_marshal__{dump,load}): ditto.
-
-Sun Jun 3 14:13:58 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: checks whether the object is frozen or not.
-
-Sun Jun 3 14:00:51 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * complex.c: wrote Complex#_dump and Complex::load. But now
- disabled (due to compatibility) [experimental].
-
- * rational.c: wrote Rational#_dump and Rational::load. ditto.
-
-Sun Jun 3 10:23:32 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * complex.c (nucomp_marshal_load): [ruby-core:45394]
- * rational.c (nurat_marshal_load): ditto.
-
-Sun Jun 3 03:15:46 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * regparse.c (onig_number_of_names): suppress a warning.
-
-Sun Jun 3 01:36:52 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_backtrace.c: change names.
- (1) Class name: RubyVM::FrameInfo -> RubyVM::Backtrace::Location.
- (2) Method name: RubyVM::FrameInfo.caller ->
- Kernel.caller_locations.
- (3) Instance methods of
- RubyVM::FrameInfo (RubyVM::Backtrace::Location)
- (3-1) name -> label
- (3-2) basename -> base_label (basename is confusing with
- File.basename)
- (3-3) line_no -> lineno (We have already similar name
- File#lineno, commented by kou [ruby-dev:45686]).
- (3-4) filename -> path.
- (3-5) filepath -> absolute_path.
- (3-5) iseq -> removed (we will make other APIs to access iseq
- and other information of frame for debugging).
-
- * test/ruby/test_backtrace.rb: apply above changes.
- And apply comment from kou [ruby-dev:45686].
-
-Sun Jun 3 00:49:11 2012 Koichi Sasada <ko1@atdot.net>
-
- * common.mk: fix to build vm_backtrace.c only itself (vm_backtrace.c
- is no longer included from vm.c). I hope this separation reduce
- compile time of vm.c.
-
- * internal.h: ditto.
-
- * vm.c, vm_core.h, vm_dump.c, vm_eval.c: ditto.
-
- * vm_eval.c: some functions (callee, etc) moved to vm_backtrace.c.
-
-Sun Jun 3 00:20:53 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_backtrace.c: added. Separate backtrace related functions to
- this file.
-
- * vm.c, common.mk: ditto.
-
-Sat Jun 2 18:09:02 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * lib/ipaddr.rb: Inhibit zero-filled octets in an IPv4 address in
- all platforms. [ruby-dev:45671]
-
- * lib/ipaddr.rb: Allow the x:x:x:x:x:x:d.d.d.d form not limited to
- IPv4 mapped/compatible addresses. This change also makes it
- possible for the parser to understand IPv4 mapped and compatible
- IPv6 addresses in non-compressed form.
-
- * lib/ipaddr.rb: Stop exposing IPSocket.valid*? methods which were
- only usable on non-IPv6-ready platforms.
-
-Sat Jun 2 16:59:00 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (rb_enc_cr_str_buf_cat): don't reset coderange as unknown.
- the condition 'ptr_a8 && str_cr != ENC_CODERANGE_7BIT' means not
- unknown, str is also ASCII-8BIT because str_encindex == ptr_encindex,
- and nont (str_cr == ENC_CODERANGE_UNKNOWN) and
- str_cr != ENC_CODERANGE_7BIT means str_cr is valid because ASCII-8BIT
- can't be broken. [ruby-dev:45688] [Bug #6509]
-
-Sat Jun 2 07:04:48 2012 Eric Hodel <drbrain@segment7.net>
-
- * doc/re.rdoc (Performance): Replaced incorrect example of reducing
- backtracking through anchoring with reduced backtracking through a
- range. [ruby-trunk - Bug #6525]
-
-Sat Jun 2 06:34:15 2012 Eric Hodel <drbrain@segment7.net>
-
- * doc/re.rdoc (Performance): Removed useless sample output from final
- performance example and switched from #match to #=~ for consistency.
- [ruby-trunk - Bug #6524]
-
-Fri Jun 1 09:30:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * object.c (class_or_module_required): extract check for class or
- module.
-
-Fri Jun 1 08:50:47 2012 Eric Hodel <drbrain@segment7.net>
-
- * array.c: Updated Array documentation formatting. Patch by Zachary
- Scott. [ruby-trunk - Feature #6517]
-
-Fri Jun 1 06:57:10 2012 Eric Hodel <drbrain@segment7.net>
-
- * ext/dl/lib/dl/struct.rb (DL::CStructEntity#set_ctypes): Refactored
- #set_ctypes using newer ruby features to simplify its implementation.
- * test/dl/test_c_struct_entry.rb (class DL): Test to verify
- refactoring.
-
-Fri Jun 1 06:40:25 2012 Eric Hodel <drbrain@segment7.net>
-
- * object.c (Init_Object): Restored Kernel documentation based on
- Pickaxe book documentation. Patch by Zachary Scott.
- [ruby-trunk - Feature #6521]
-
-Fri Jun 1 06:29:42 2012 Eric Hodel <drbrain@segment7.net>
-
- * object.c (rb_equal): Let Object be a link in #=== documentation.
- Patch by Zachary Scott. [ruby-trunk - Feature #6518]
-
-Thu May 31 09:27:06 2012 Eric Hodel <drbrain@segment7.net>
-
- * ext/dl/lib/dl/struct.rb (DL::CStructEntity::size): Refactored ::size
- to remove unused variables and simplify using newer ruby features.
- * test/dl/test_c_struct_entry.rb: Test to validate refactoring
-
-Thu May 31 08:40:34 2012 Eric Hodel <drbrain@segment7.net>
-
- * ext/dl/lib/dl/struct.rb (DL::CUnionEntity#set_ctypes): Refactored
- #set_types to reuse DL::CUnionEntity::size
- * test/dl/test_c_union_entity.rb: Added test
-
-Thu May 31 08:20:14 2012 Eric Hodel <drbrain@segment7.net>
-
- * ext/dl/lib/dl/struct.rb (DL::CUnionEntity::size): Fixed ::size to
- return the size of the union.
- * test/dl/test_c_union_entity.rb: Test for DL::CUnionEntity::size
-
-Thu May 31 07:45:43 2012 Eric Hodel <drbrain@segment7.net>
-
- * ext/dl: Added documentation. Patch by Vincent Batts.
- [ruby-trunk - Bug #6496]
-
-Wed May 30 16:30:00 2012 Kenta Murata <mrkn@cookpad.com>
-
- * ext/bigdecimal/lib/bigdecimal/jacobian.rb,
- ext/bigdecimal/lib/bigdecimal/newton.rb:
- fix documentation comments.
- Patch by alperakgun from github.com/shyouhei/ruby/pull/8
-
-Wed May 30 16:20:00 2012 Kenta Murata <mrkn@cookpad.com>
-
- * ext/bigdecimal/lib/bigdecimal/jacobian.rb (Jacobian#dfdxi):
- fix jacobian to get stuck in an infinite loop when a solution is not
- found due to forget to increment nRetry counter.
- Patch by alperakgun from github.com/shyouhei/ruby/pull/8
-
-Wed May 30 10:58:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * time.c (utc_offset_arg): utc offset can be precision in seconds.
- e.g. old Europe/Lisbon (c.f. [ruby-dev:40066])
-
-Wed May 30 06:20:29 2012 Eric Hodel <drbrain@segment7.net>
-
- * error.c (exc_set_backtrace): Updated documentation to indicate
- set_backtrace allows a string as well as an array of strings.
- [ruby-trunk - Bug #6501]
-
-Tue May 29 17:28:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * strftime.c (rb_strftime_with_timespec): support GNU extension triple
- colons modifier. [EXPERIMENTAL]
-
- * strftime.c (rb_strftime_with_timespec): check conversion with locale
- modifier.
-
- * strftime.c (rb_strftime_with_timespec): colons are valid only for
- 'z' and must come just before it.
-
-Mon May 28 16:56:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit.rb (Test::Unit::Runner#_prepare_run): StatusLineOutput
- needs job_status to be :replace.
-
-Mon May 28 13:35:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (do-install-*): fix dependencies. based on the patch by
- nagachika at [ruby-dev:45683]. [Bug #6506]
-
-Mon May 28 12:03:04 2012 Narihiro Nakamura <authornari@gmail.com>
-
- * gc.c (obj_free): doesn't free a method table if it doesn't
- exist. [ruby-dev:44436]
- * test/ruby/test_gc.rb (class TestGc): added the test case for
- this issue.
-
-Sun May 27 23:37:48 2012 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/bm_vm1_lvar_init.rb: added.
- This benchmark measures a initialize time of non-used variable.
-
- * benchmark/bm_vm1_lvar_set.rb: added.
- This benchmark measures a local variables initialization time.
-
- * benchmark/bm_vm2_bigarray.rb: added.
- This benchmark mesures a big array literal creation time.
-
- * benchmark/bm_vm2_bighash.rb: added.
- This benchmark mesures a big hash literal creation time.
-
- * benchmark/bm*: change notation "i=0" to "i = 0".
-
-Sun May 27 13:33:26 2012 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/driver.rb: fix to continue benchmarks when
- an error is occurred.
-
-Sun May 27 11:27:50 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit.rb (Test::Unit::Runner#_prepare_run): fix operator
- precedence, so that platform and TERM should be counted.
-
-Sun May 27 10:02:33 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_strftime.c: allows %Ok and %Ol.
-
-Sun May 27 09:29:20 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: modified doc.
-
-Sat May 26 19:04:34 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: added description.
-
-Sat May 26 18:14:57 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_strftime.c: reduced the code.
-
-Sat May 26 18:08:59 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * time.c: modified doc.
- * ext/date/date_core.c: ditto.
-
-Sat May 26 17:05:45 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm.c (backtrace_*): change type of lev and n from size_t to int.
- Also set type of rb_backtrace_t#backtrace_size to int.
- A patch from nobu.
+ * sample/biorhythm.rb: ditto.
* vm_eval.c: ditto.
-Sat May 26 16:26:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (realpath_rec): UNC prefix does not end with path separator,
- so new separator is needed after it.
-
-Sat May 26 15:29:22 2012 Koichi Sasada <ko1@atdot.net>
-
- * test/ruby/test_backtrace.rb (test_caller_lev):
- decrease recursion size.
-
-Sat May 26 13:50:48 2012 Koichi Sasada <ko1@atdot.net>
-
- * NEWS: add Kernel#caller's second argument.
-
-Sat May 26 13:40:29 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm.c (RubyVM::FrameInfo): add a class to access each frame
- information. You don't need to parse strings from caller().
- FrameInfo has the following methods:
- FrameInfo#name: method name, class name, etc with decorations.
- FrameInfo#basename: name without decorations.
- FrameInfo#line_no: line number.
- FrameInfo#filename: file name.
- FrameInfo#filepath: full filepath.
- FrameInfo#iseq: iseq if it is iseq frame (defined by ruby script)
- FrameInfo#to_s: return caller() method style string.
- RubyVM::FrameInfo.caller(n, lev) returns array of FrameInfo objects.
- The name "RubyVM::FrameInfo.caller" is long and ambiguous (it is
- confusing with Kernel::caller() method), we need to change the name
- before Ruby 2.0 release. Good names or comments are welcome.
-
- * test/ruby/test_backtrace.rb: add a test for above change.
-
-Sat May 26 12:18:09 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm.c (frame_info_to_str): add `break'.
-
- * vm.c (backtrace_object): remove lev and n parameter.
- backtrace_object always returns all of backtrace information.
-
- * vm.c (rb_backtrace_to_str_ary): fix to use backtrace_object().
- This change improve performance of caller(lev, n).
-
- * benchmark/bm_vm3_backtrace.rb: added to check above improvement.
- FYI: measurement on my laptop, 1.9.3p229 needs 5.125 sec,
- and current trunk only needs 0.299sec.
-
-Sat May 26 11:05:09 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm.c (rb_frame_info_t): keep previous ISEQ frame info for CFUNC
- frame info. And fix to cache a calculated line_no of ISEQ frame
- info.
-
-Sat May 26 09:54:53 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_ssl.c: Allow disabling client-side renegotiation.
- * test/openssl/test_ssl.rb: Simple tests for this.
-
- Client-side renegotiation is still considered problematic, even
- when used in the context of secure renegotiation (RI, RFC 5746).
- The changes allow users to either completely disable client
- renegotiation on the server, or to specify a maximum number of
- handshakes allowed in total. The number of total handshakes is
- counted in a callback set as SSL_set_info_callback. If the
- maximum number of handshakes is exceeded an error will be raised
- We do not support renegotiation in the OpenSSL extension, therefore
- this feature can only be tested externally.
- The feature is opt-in, the default setting will be to allow
- unlimited client renegotiation, as was the case before.
-
-Fri May 25 23:38:58 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * test/openssl/test_ssl.rb: Clarify the intention of errors to be
- expected. Two errors are possible when connection is refused due
- to a protocol version that was explicitly disallowed,
- OpenSSL::SSL::SSLError or Errno::ECONNRESET, depending on the
- OpenSSL version in use.
-
-Fri May 25 22:19:40 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_ssl.c: Revert r35583
- * test/openssl/test_ssl.rb: Handle ECONNRESET in code instead to avoid
- the test failing in Ruby CI [1]
-
- [1] http://u64.rubyci.org/~chkbuild/ruby-trunk/log/20120507T190102Z.log.html.gz#test-all
-
-Fri May 25 19:51:36 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_eval.c (rb_f_caller): caller() method accepts second optional
- argument `n' which specify how many frames should return.
- For example, `caller(0, 1)' returns only one frame information
- which calls caller() method. If there are less than n frame
- information, then all frame information are returned. If n is 0,
- then always return [].
- This fix is part of [ruby-dev:42345] [Ruby 1.9-Feature#3917].
- However, performance and features are not enough.
- RDoc is also not available.
-
- * test/ruby/test_backtrace.rb: add a test for above.
-
-Fri May 25 17:05:07 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm.c (oldbt_init, vm_backtrace_str_ary): arg->data should
- be initialized before calling `backtrace_each()'.
-
-Fri May 25 16:11:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * trunk/ext/-test-/printf/printf.c: change function names because of
- conflict with msvcrt. fixed build error of mswin.
-
-Fri May 25 10:52:52 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm.c: refactoring backtrace related functions.
- (1) unify similar functions (rb_backtrace_each() and
- backtrace_object()). backtrace_each() is a unified function.
- variation:
- a) backtrace_object(): create backtrace object.
- b) vm_backtrace_str_ary(): create bt as an array of string.
- c) vm_backtrace_print(): print backtrace to specified file.
- d) rb_backtrace_print_as_bugreport(): print backtrace on
- bugreport style.
- (2) remove rb_backtrace_each(). Use backtrace_each() instead.
- (3) change the type of lev parameter to size_t.
- a) lev == 0 means current frame (exception, etc use it).
- b) lev == 1 means upper frame (caller(0) use it).
-
- * vm_core.h, vm_dump.c, vm_eval.c: ditto.
-
- * vm.c (backtrace_object(), vm_backtrace_str_ary()): fix to return a
- correct size of caller(lev) array.
- Let n be a "caller(0).size" then ln as caller(lev).size should be
- (n - lev). However, the previous implementation returns a wrong
- size array (ln > n - lev). [ruby-dev:45673]
-
- * test/ruby/test_backtrace.rb: add tests for backtrace.
-
-Fri May 25 08:51:39 2012 Eric Hodel <drbrain@segment7.net>
-
- * enum.c (enum_count): Enumerable#count no longer uses #size when
- counting elements. Patch by Nobuhiro IMAI. [ruby-trunk - Bug #6473]
-
-Fri May 25 01:15:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * sprintf.c (ruby__sfvextra): [EXPERIMENTAL] use inspect instead of
- to_s if plus flag is given.
-
- * vsnprintf.c (BSD_vfprintf): pass sign flag.
-
-Fri May 25 00:37:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/rubygems/test_gem_indexer.rb (setup, teardown): save @tempdir
- to remove it properly. [Bug #5348]
-
-Thu May 24 23:36:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vsnprintf.c (BSD_vfprintf): [EXPERIMENTAL] object representation in
- rb_enc_vsprintf(). [Feature #5896]
-
-Thu May 24 15:33:01 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_method.c (rb_method_defined_by): removed.
- nobu pointed out that rb_method_basic_definition_p() is enough
- for last commit.
-
- * error.c, eval_error.c: change for above.
-
-Thu May 24 14:30:13 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm.c: add RubyVM::Backtrace object (btobj).
- Backtrace information contains an array consists of location
- information for each frames by string.
- RubyVM::Backtrace object is lightweight backtrace information,
- which contains complete information to generate traditional style
- backtrace (an array of strings) with faster generation.
- If someone accesses to backtrace information via
- Exception#backtrace, then convert a RubyVM::Backtrace object to
- traditional style backtrace.
- This change causes incompatibility on marshal dumped binary
- of Exception. If you have any trouble on it, please tell us
- before Ruby 2.0 release.
- Note that RubyVM::Backtrace object should not expose Ruby level.
-
- * error.c, eval.c, vm_eval.c: ditto.
-
- * internal.h: ditto.
-
- * eval_error.c: fix to skip "set_backtrace" method invocation in
- creating an exception object if it call a normal set_backtrace
- method (defined by core).
-
- * test/ruby/test_settracefunc.rb: fix for above change.
-
- * vm_method.c (rb_method_defined_by): added. This function
- checks that the given object responds with the given method
- by the given cfunc.
-
- * benchmark/bm_vm2_raise1.rb, benchmark/bm_vm2_raise2.rb:
- add to measure exception creation speed. raise1 create
- exception objects from shallow stack frame. raise2 create
- exception objects from deep stack frame.
-
-Thu May 24 12:07:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (io_strip_bom): check EOF. [Bug #6487][ruby-core:45203]
-
-Wed May 23 22:06:14 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http/header.rb (Net::HTTPHeader#range): fix broken parser of
- HTTP Range request. Old one can't parse invalid specs and multiple
- specs correctly.
-
-Wed May 23 10:18:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (finish_overlapped_socket, overlapped_socket_io):
- replace ECONNABORTED to EPIPE in send, sendto and sendmsg to improve
- BSD socket compatibility. this change removes a failure on the test
- of net/ftp.
-
-Wed May 23 05:35:58 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/net/http.rb: Broke up Net::HTTP into individual files.
- [ruby-trunk - Feature #6435]
- * lib/net/http/backward.rb: ditto.
- * lib/net/http/response.rb: ditto.
- * lib/net/http/exceptions.rb: ditto.
- * lib/net/http/responses.rb: ditto.
- * lib/net/http/generic_request.rb: ditto.
- * lib/net/http/header.rb: ditto.
- * lib/net/http/request.rb: ditto.
- * lib/net/http/proxy_delta.rb: ditto.
- * lib/net/http/requests.rb: ditto.
-
-Wed May 23 05:15:11 2012 Eric Hodel <drbrain@segment7.net>
-
- * class.c (rb_mod_init_copy): Clear the cached inspect string of a
- dup'd anonymous module or class. [ruby-trunk - Bug #6454]
- * test/ruby/test_module.rb (class TestModule): ditto
-
-Tue May 22 16:49:15 2012 Koichi Sasada <ko1@atdot.net>
-
- * vm_core.h: add a data type rb_location_t to store iseq location
- information.
- rb_location_t#filename, filepath, name and line_no was moved from
- rb_iseq_t. rb_location_t#basename is a new field which is
- similar to `name' field without any decoration.
- `name' field contains some decoration such as `block in foo'.
- `basename' only contains `foo'.
- rb_iseq_t contains memory object of rb_location_t.
-
- * iseq.c: setup rb_location_t for each rb_iseq_t memory objects.
-
- * compile.c, proc.c, vm.c, vm_dump.c, vm_eval.c, vm_insnhelper.c,
- vm_method.c: support about it.
-
-Tue May 22 00:45:05 2012 Yusuke Endoh <mame@tsg.ne.jp>
-
- * struct.c (rb_struct_members): Refactoring. As Struct#members had
- returned an array of String, the old code was needed to convert
- Symbols to Strings. But it is almost unnecessary because the
- method now returns an array of Symbols. A patch by Masaki
- Matsushita <glass.saga at gmail dot com> [Feature #6218]
- [ruby-dev:45451]
-
-Mon May 21 19:20:25 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/ftp.rb (Net::FTP#retrbinary): close only if conn is not nil
- because transfercmd may fail and return nil.
-
- * lib/net/ftp.rb (Net::FTP#retrlines): ditto.
-
-Mon May 21 15:10:28 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/syslog/syslog.c: Classify constants and macros into several
- sub-modules. (Syslog::Priority, Syslog::Level, Syslog::Option
- and Syslog::Macros)
-
- * ext/syslog/syslog.c (mSyslog_inspect): Use rb_sprintf().
-
- * ext/syslog/syslog.c (mSyslog_inspect): Make sure self is a
- module before calling rb_class2name().
-
-Mon May 21 12:44:11 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * .travis.yml (install): It seems tcl/tk is skipped in Travis
- CI. Trying to fix the situation.
-
-Mon May 21 12:11:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * enc/depend (ENCOBJS): add dependencies.
-
- * enc/make_encmake.rb (target_encodings): extract dependencies.
-
-Mon May 21 11:26:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/ftp.rb (Net::FTP#transfercmd): rescue shutdown.
-
-Sun May 20 23:00:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/extmk.rb (extmake): reopen $stdout to NULL, since setting
- $stdout cannot affect child processes.
-
-Sun May 20 21:36:39 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * enc/shift_jis.c (code_to_mbclen): return
- ONIGERR_INVALID_CODE_POINT_VALUE if the code is invalid.
-
- * string.c (tr_next): increment character until the code
- is a valid character. [ruby-dev:45652] [Bug #6450]
-
-Sun May 20 12:25:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * Makefile.in (LIBRUBY_SO): link EXTSOLIBS too.
-
- * ext/extmk.rb (mf.macro): use EXTSOLIBS instead of SOLIBS to get rid
- of discard libraries needed by default. [Bug #6462]
-
-Sat May 19 19:04:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/extmk.rb (command_output): ENCOBJS is needed for all linked
- ruby, if --disable-shared and --with-static-linked-ext.
-
- * ext/extmk.rb (command_output): dmyext is needed as DLDOBJS if no
- static linked extensions.
-
- * Makefile.in, common.mk (PROGRAM): no extension libraries.
-
- * common.mk (build-ext): pass macros for libruby.so.
-
- * ext/extmk.rb (command_output): link extension libraries and encoding
- libraries into libruby.so, not ruby executable.
-
- * ext/extmk.rb (command_output): fold long macro lines.
-
- * Makefile.in (LIBEXT): add macro.
-
- * configure.in (ENCOBJS, EXTOBJS): use LIBEXT, not hardcoded suffix.
-
- * Makefile.in (LIBRUBY_A): fix typo. re-applying r35242.
-
-Sat May 19 04:46:53 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/openssl/extconf.rb: Use Logging::message instead of message.
- * ext/zlib/extconf.rb: ditto.
-
-Fri May 18 18:13:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (MakeMakefile#configuration): keep space at end of
- OUTFLAG and COUTFLAG. [ruby-dev:45650]
-
-Fri May 18 17:39:42 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (rb_thread_create_timer_thread): Added error
- check when failing fcntl(). [Bug #6147] [ruby-dev:45364]
-
-Fri May 18 17:41:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/extmk.rb (extmake): link archives only, skip script only
- extension libraries.
-
-Fri May 18 17:25:33 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * cont.c: bump up fiber machine stack size when running on 64bit
- arch. [Bug #6344] [ruby-dev:45554]
-
-Fri May 18 15:20:56 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/uri/generic.rb (URI::Generic.build): duplicate args before adding
- new items. (don't change arguments)
-
- * lib/uri/generic.rb (URI::Generic.build): use URI::Generic::COMPONENT
- if this method is called from URI::Generic.
-
- * lib/uri/generic.rb (URI::Generic.build2): escape only if the item is
- a String.
-
- * lib/uri/generic.rb (URI::Generic.build2): use DEFAULT_PARSER because
- it doesn't have parser method. [Bug #6420]
-
-Fri May 18 15:54:07 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/zlib/extconf.rb: Use an exception instead of bare puts.
-
-Fri May 18 15:53:05 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/psych/extconf.rb: Use an exception instead of bare abort.
-
-Fri May 18 15:51:32 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/fiddle/extconf.rb: Use an exception instead of bare abort.
-
-Fri May 18 15:49:35 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/readline/extconf.rb: Use an exception instead of bare exit.
-
-Fri May 18 15:38:11 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/ripper/extconf.rb: Use an exception instead of bare
- Logging.message.
-
-Fri May 18 15:23:06 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/openssl/extconf.rb: Clarify a message when hit Apple
- OpenSSL issue.
-
-Fri May 18 15:14:32 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/extmk.rb: Show a message when extconf.rb raised an exception.
- * ext/openssl/extconf.rb: Use exception raising instead of message
- and/or abort. We want to display error message to console _and_
- logging into mkmf.log.
-
-Fri May 18 06:14:07 2012 Eric Hodel <drbrain@segment7.net>
-
- * ext/syslog/lib/syslog/logger.rb: Added Syslog::Logger which was
- ported from the SyslogLogger gem. [ruby-trunk - Feature #5096]
- * NEWS: ditto.
- * test/syslog/test_syslog_logger.rb: ditto.
-
-Fri May 18 01:28:21 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/parser.c (transcode_string): fix encoding index names.
- Thanks markizko for reporting.
+ * vm_method.c: ditto.
-Thu May 17 23:03:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in: fix function name to be checked, to initialize
- rb_thread_cond_t properly.
+Sun Mar 6 03:22:27 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * thread_pthread.c (native_cond_initialize, native_cond_destroy):
- fix macro name.
+ * io.c (io_cntl): use rb_thread_io_blocking_region() instead
+ rb_thread_blocking_region().
-Thu May 17 12:53:07 2012 Yuki Yugui Sonoda <yugui@google.com>
+Sat Mar 5 22:54:36 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * thread.c, thread_pthread.c: Moved pthread-specific preprocessor
- hacks to thread_pthread.c
+ * include/ruby/intern.h: fix a typo of prototype declaration.
+ rb_mutex_try_lock -> rb_mutex_trylock [ruby-dev:43213]
-Thu May 17 12:18:47 2012 Yuki Yugui Sonoda <yugui@google.com>
+Sat Mar 5 19:44:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * io.c: Fix a mistake on merging the patch in the previous commit.
+ * test/ruby/test_io.rb (TestIO#test_fcntl_lock): small clean up.
-Thu May 17 11:33:07 2012 Yuki Yugui Sonoda <yugui@google.com>
+Sat Mar 5 01:33:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- Imports Ruby's port to NativeClient (a.k.a NaCl).
- Patch by Google Inc. [ruby-core:45073].
+ * io.c (io_cntl, nogvl_io_cntl): IO.fcntl() and IO.ioctl()
+ release GVL during calling kernel interface.
+ Suggested by Eric Wong. [ruby-core:35417][Bug #4463]
- * configure.in (RUBY_NACL): New M4 func to configure variables for
- NaCl.
- (RUBY_NACL_CHECK_PEPPER_TYPES): New M4 func to check the old names
- of Pepper interface types.
- (BTESTRUBY): New variable to specify which ruby should be run on
- "make btest". NaCl can run the built binary by sel_ldr, but it need
- rbconfig.rb. So this variable is distinguished from $MINIRUBY.
+ * test/ruby/test_io.rb (TestIO#test_fcntl_lock): add new test for
+ IO.fcntl().
- * thread_pthread.c: Disabled some features on NaCl.
+Fri Mar 4 23:09:12 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * io.c: ditto.
+ * test/testunit/test_parallel.rb
+ (test_should_run_all_without_any_leaks): consider that the order of
+ testcase could change. [ruby-dev:43300] [Bug #4466]
- * process.c: ditto.
+Fri Mar 4 22:01:14 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * signal.c: ditto.
+ * io.c (io_cntl): change 'cmd' type to int. ioctl and fcntl need to
+ be passed int.
+ * io.c (rb_io_ctl): ditto.
- * file.c: ditto.
+Fri Mar 4 21:10:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * missing/flock.c: ditto.
+ * configure.in: save warnflags. the patch is created by Eric Wong.
+ [Bug #4465]
- * nacl/pepper_main.c: An example implementation of Pepper application
- that embeds Ruby.
+Wed Mar 2 21:15:00 2011 Tanaka Akira <akr@fsij.org>
- * nacl/example.html: An example of web page that uses the Pepper
- application.
+ * ext/openssl/ossl_pkey_dsa.c: parenthesize macro arguments.
- * nacl/nacl-config.rb: Detects variants of NaCl SDK.
+Thu Mar 3 22:10:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * nacl/GNUmakefile.in: Makefile template for NaCl specific build
- process.
+ * process.c (check_exec_redirect_fd, check_exec_redirect): raise
+ ArgumentError if fd >= 3 on Windows because the feature is not
+ supported.
- * nacl/package.rb: script for packaging a NaCl-Ruby embedding
- application.
+ * test/ruby/test_process.rb (test_execopts_redirect): remove meaningless
+ argument.
- * nacl/reate_nmf.rb: Wrapper script of create_nmf.py
+Thu Mar 3 21:21:42 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * dln.c (dln_load): Added a hack to call on NaCl.
+ * test/ruby/test_process.rb (test_execopts_redirect): redirecting fd
+ >= 3 is not supported on Windows, so should not specify such options
+ when calling spawn or others.
- * util.c (ruby_getcwd): Path to the current directory is not available
- on NaCl.
+Thu Mar 3 18:59:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Thu May 17 10:54:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * string.c (rb_str_slice_bang): raise error when the string is frozen.
- * ext/tk/extconf.rb: add -l options to $libs not $LDFLAGS,
- to be passed to EXTLIBS in exts.mk.
+Thu Mar 3 14:25:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * enc/encinit.c.erb: use %-lines to adjust indent in the generated file.
+ * strftime.c (STRFTIME): return 0 and ERANGE when precision is too
+ large. [ruby-dev:43284] fixes #4456
- * lib/mkmf.rb (MakeMakefile#have_framework): combine -framework option
- and its argument with an equal sign not to be separated in merge_libs.
+Thu Mar 3 00:46:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/tk/extconf.rb: ditto.
+ * addr2line.c (uleb128): cast the value to unsigned long.
- * ext/extmk.rb: EXTLDFLAGS also needs to be passed.
+ * addr2line.c (fill_lines): print error when lseek fails.
-Wed May 16 15:44:22 2012 Yuki Yugui Sonoda <yugui@google.com>
+Thu Mar 3 00:36:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * configure.in: Fix an unbalanced quote.
+ * lib/rexml/encoding.rb (REXML::Encoding#encoding=): store @encoding
+ a String which means the name of the encoding.
+ this partially revert r29646.
-Wed May 16 15:43:10 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/rexml/document.rb: follow above.
- * ext/extmk.rb (exts.mk): use double quotes instead of single quotes
- for commandline because it's not recognized as quotes on Windows.
+ * lib/rexml/output.rb: ditto.
-Wed May 16 15:15:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rexml/parsers/baseparser.rb: ditto.
- * configure.in (LD): enclose with single quotes but not double quotes
- not to expand command substitution.
+ * lib/rexml/source.rb: ditto.
-Wed May 16 14:19:51 2012 Yuki Yugui Sonoda <yugui@google.com>
+ * lib/rexml/xmldecl.rb: ditto.
- Supports static linking of extensions and encodings again.
- Fixes --with-static-linked-ext.
+Wed Mar 2 23:19:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- Patch by Google Inc. [ruby-core:45073].
+ * string.c (str_byte_substr): return nil for negative length.
- * Makefile.in (ENCOBJS, EXTOBJS): New variables to specify static
- linked libraries. Also reintroduces extinit.o, introduces encinit.o
- introduces encinit.o
+Wed Mar 2 21:15:00 2011 Tanaka Akira <akr@fsij.org>
- * common.mk: Builds static libraries rather than shared objects if
- specified.
+ * ext/openssl/ossl_pkey_dh.c: parenthesize macro arguments.
- * configure.in (LD): new substitution.
+Wed Mar 2 14:24:04 2011 Shota Fukumori <sorah@tubusu.net>
- * enc/depend: Supports static linked libraries
- (libencs, libenc, libtrans): New target.
+ * lib/test/unit/parallel.rb: Fix name from `inclement_io` to
+ `increment_io`.
- * enc/encinit.c.erb: new template to generate the initialization of
- statically linked encodings.
+Wed Mar 2 14:06:01 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * enc/make_encmake.rb (--module): new flag to specify whether static
- or dynamic.
+ * string.c (rb_str_slice_bang): move treatments which is only needed
+ when the result is not nil.
- * transcode_data.h (TRANS_INIT): New macro to get rid of the name
- collision of encoding initializers and transcoder initializers.
+Wed Mar 2 14:02:29 2011 Shota Fukumori <sorah@tubusu.net>
- * ext/extmk.rb: Fixes the behavior on $extstatic is true.
+ * test/testunit/test_parallel.rb(TestParallel#spawn_runner):
+ Fix outputing empty line in running test.
- * lib/mkmf.rb (clean-static): new target to clean up static linked
- libraries.
+ * test/testunit/tests_for_parallel/test_third.rb: Remove `sleep`
- * ruby.c (process_options): New initializes statically linked
- encodings here.
+Tue Mar 1 22:29:10 2011 Tanaka Akira <akr@fsij.org>
-Wed May 16 14:30:43 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/openssl/ossl_pkey.h: parenthesize macro arguments.
- * io.c: fixed a merge mistake of r33878, reported by nobu via IRC.
+Tue Mar 1 22:02:35 2011 Shota Fukumori <sorah@tubusu.net>
-Wed May 16 06:59:41 2012 Tadayoshi Funaba <tadf@dotrb.org>
+ * lib/test/unit/parallel.rb: Fix number.
- * ext/date/date_strftime.c: should also be aware of flags on
- complex specifier.
+Tue Mar 1 21:48:22 2011 Shota Fukumori <sorah@tubusu.net>
-Wed May 16 05:11:29 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * lib/test/unit/parallel.rb: For Windows.
- * ext/psych/lib/psych/visitors/to_ruby.rb: fix a bug with string
- subclass dumping and loading.
+ * test/testunit/test_parallel.rb(TestParallelWorker#test_quit_in_test):
+ Fix for above specification change.
+ * test/testunit/test_parallel.rb(TestParallel#spawn_runner):
+ Fix outputing empty line in running test.
- * test/psych/test_array.rb: pertinent tests
+Tue Mar 1 20:51:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/psych/test_string.rb: ditto
+ * test/ruby/test_system.rb (TestSystem#test_system_at):
+ remove tests for [bug#4396]. because we decided to reject this
+ ticket.
-Wed May 16 01:31:21 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+Tue Mar 1 19:46:19 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * ext/psych/lib/psych/visitors/to_ruby.rb: convert omap tagged maps to
- Psych::Omap objects rather than hashes. [Bug #6425]
+ * test/date/{test_date.rb,test_date_attr.rb}: [ruby-dev:43280]
- * test/psych/test_omap.rb: pertinent test.
+Tue Mar 1 18:40:38 2011 Ryan Davis <ryan@YPCMC09457>
-Wed May 16 01:15:45 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * lib/rubygems*: Import rubygems 1.6.0 (released version @ 58d8a0b9)
+ * test/rubygems: Ditto
- * ext/psych/lib/psych/visitors/yaml_tree.rb: keep a reference to
- custom coders so that GC does not impact dumped yaml reference ids.
+Tue Mar 1 16:22:22 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Tue May 15 23:59:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * win32/win32.c: revert r30987 because it causes some failures in
+ test-all, especially webrick.
- * lib/test/unit.rb (Test::Unit::Options#setup_options): add --color option.
+Tue Mar 1 15:59:53 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/test/unit.rb (Test::Unit::Runner#_prepare_run): defer color code
- initialization to regard --color option.
+ * string.c (rb_str_byteslice): the resulted encoding should keep
+ original encoding. this also fixes the encoding when the result
+ shares internal string. [ruby-core:35376]
-Mon May 14 16:28:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Mar 1 13:25:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * parse.y (f_arglist): should reset lexical states after empty
- argument list with no parenthesis as well as parenthesized list,
- so that reserved name method definition work. [ruby-dev:45626]
- [Bug #6403]
+ * ext/bigdecimal/bigdecimal.c (VpMemAlloc): CVE-2011-0188.
+ Fixes a bug reported by Drew Yao <ayao at apple.com>
-Mon May 14 00:14:24 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+Tue Mar 1 10:34:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * enumerator.c (lazy_take_func, lazy_take): multiple calls of
- force/to_a method to Enumerator::Lazy#take should return same
- results. [ruby-dev:45634] [Bug #6428]
+ * string.c (rb_str_byteslice): Add String#byteslice. [ruby-core:35376]
- * test/ruby/test_lazy_enumerator.rb (test_take_recycle): add test for
- above.
+Tue Mar 1 00:12:49 2011 Tajima Akio <artonx@yahoo.co.jp>
-Sun May 13 23:38:31 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * include/ruby/win32.h: define WIN32 if neither _WIN64 nor WIN32
+ defined. it forces to use push/pop for pack(4) pragma.
- * test/ruby/test_io.rb (test_flush_in_finalizer1): don't use IO.for_fd
- to close IO objects. it create IO object with already closed fd, and
- cause occasional Errno::EBADF in following tests. [ruby-core:45020]
- [Bug #6228]
+Mon Feb 28 23:52:13 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Sun May 13 23:32:16 2012 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org>
+ * test/testunit/test_rake_integration.rb (test_with_rake_runner):
+ use assert_in_out_err for suppress messages.
- * test/ruby/test_io.rb (TestIO): revert r35631. it broke the intent of
- test_flush_in_finalizer1. [ruby-core:43951] [Bug #6228]
+Mon Feb 28 22:48:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sun May 13 22:46:36 2012 Tanaka Akira <akr@fsij.org>
+ * win32/win32.c (rb_w32_spawn): use shell if a commandline contain
+ double-quote character.
+ * win32/win32.c (is_internal_cmd): similar, use shell if a commandline
+ contain caret character.
- * ext/etc/etc.c (passwd_ensure): move endpwent() call from
- passwd_iterate to close /etc/passwd on exception.
- (group_ensure): move endgrent() call from group_iterate to close
- /etc/group on exception.
+ * test/ruby/test_system.rb (TestSystem#test_system_at): fix
+ wrong test case. if system() invoke a command by using shell,
+ system() never return nil. Also, "" quotation must not appear
+ twice in a command line.
-Sun May 13 18:10:43 2012 Tadayoshi Funaba <tadf@dotrb.org>
+Mon Feb 28 17:36:57 2011 Tanaka Akira <akr@fsij.org>
- * ext/date/date_strftime.c: removed unused code and changed the style.
+ * ext/openssl/ossl_pkcs7.c: parenthesize macro arguments.
-Sun May 13 17:37:56 2012 Tadayoshi Funaba <tadf@dotrb.org>
+Mon Feb 28 16:48:42 2011 Tanaka Akira <akr@fsij.org>
- * ext/date/date_strftime.c: refactored.
+ * ext/openssl/ossl_pkcs12.c: parenthesize macro arguments.
-Sun May 13 06:40:12 2012 Luis Lavena <luislavena@gmail.com>
+Mon Feb 28 16:28:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * test/ruby/test_io.rb (class TestIO): Disable GC during IO tests to
- avoid file descriptors being GC'ed. Suggestion by Tomoyuki Chikanaga
- [ruby-core:43951][Bug #6228]
+ * string.c (tr_trans): when the hash for multibyte repl is empty,
+ tr is inverse mode, and a character doesn't much the table, the
+ character should be replaced by last replacement. Bug #4449
-Sat May 12 07:00:16 2012 Eric Hodel <drbrain@segment7.net>
+Mon Feb 28 16:38:56 2011 Tanaka Akira <akr@fsij.org>
- * ext/sdbm/init.c: Added documentation. Patch by Justin Collins,
- cleanup by Zachary Scott. [ruby-trunk - #6410]
+ * ext/openssl/ossl_ocsp.c: parenthesize macro arguments.
-Sat May 12 06:02:03 2012 Eric Hodel <drbrain@segment7.net>
+Mon Feb 28 13:02:15 2011 Danial Pearce <github@tigris.id.au>
- * lib/fileutils.rb (cp_r): Fixed cp_r example. Patch by TJ Koblentz
- from pull request #114. [ruby-trunk - Bug #6411]
+ * lib/tempfile.rb: Fix example file paths in docs for tempfile.
+ https://github.com/ruby/ruby/pull/5
-Sat May 12 05:23:06 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Feb 28 12:56:18 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
- * thread.c (rb_threadptr_execute_interrupts_common):
- test_signal_requiring of test/ruby/test_signal.rb fail if the sub
- process is killed on waiting IO in lex_io_gets in rb_load_file in
- rb_load_internal in require.
- This is because
- (1) the process receive the killing signal in
- rb_thread_io_blocking_region in rb_read_internal in lex_io_gets.
- (2) set th->errinfo as INT2FIX(TAG_FATAL) at
- rb_threadptr_execute_interrupts_common.
- (3) escape rb_load_file in rb_load_internal and jump to EXEC_TAG()
- without set loaded as TRUE.
- (4) call first rb_exc_raise(GET_THREAD()->errinfo); because loaded
- is FALSE as above. this errinfo should be an exception object
- but this is INT2FIX(TAG_FATAL).
- Don't call first rb_exc_raise if GET_THREAD()->errinfo is Fixnum.
+ * ext/openssl/ossl_cipher.c (ossl_cipher_init): typo fix.
+ https://github.com/ruby/ruby/pull/8
-Fri May 11 14:23:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Feb 28 12:28:13 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * parse.y (primary): begin/end block should be isolated from outside.
- [ruby-dev:45631][Bug #6419]
+ * ext/date/date_core.c (datetime_s_now): localtime() and localtime_r()
+ required time_t pointer as 1st parameter, and tv_sec member of struct
+ timeval is long.
-Fri May 11 14:09:47 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Feb 28 11:57:40 2011 Shota Fukumori <sorah@tubusu.net>
- * ext/bigdecimal/bigdecimal.c (PUSH): to prevent VALUE from GC,
- must not cast it to unsigned long, which may be shorter than
- VALUE, and the result can be mere garbage.
+ * test/testunit/test_parallel.rb: Temporally disable test on Windows.
-Fri May 11 09:51:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Feb 28 07:28:35 2011 Shota Fukumori <sorah@tubusu.net>
- * lib/test/unit.rb (Test::Unit::Runner#failed): no unnecessary
- newlines if no reports to be displayed.
+ * lib/test/unit.rb(Test::Unit::Runner#after_worker_quit):
+ method name more be natural English.
-Thu May 10 10:55:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/test/unit.rb(Test::Unit::Runner::Worker.launch):
+ IO.sync doesn't need. Should use "b" for mode.
- * test/minitest/test_minitest_mock.rb: Correct requiring path to
- metametameta.rb.
+Sun Feb 27 21:59:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/minitest/test_minitest_unit.rb: Correct requiring path to
- metametameta.rb.
+ * test/ruby/test_system.rb (TestSystem#test_system_redirect_win):
+ add test for system().
-Thu May 10 10:18:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Feb 27 18:00:09 2011 Shota Fukumori <sorah@tubusu.net>
- * parse.y (lex_state_name): returns name for lex_state_e, for debug
- use.
+ * lib/test/unit.rb: Refactoring; Worker never use Hash for internal
+ storage.
-Wed May 9 16:36:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/test/unit.rb: Never use Kernel#spawn. Use IO.popen instead.
- * lib/mkmf.rb (MakeMakefile#pkg_config): check if libs resulted from
- pkg-config works actually.
+Sun Feb 27 13:16:48 2011 Tanaka Akira <akr@fsij.org>
-Wed May 9 16:01:38 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * ext/openssl/ossl_ns_spki.c: parenthesize macro arguments.
- * lib/net/imap.rb (decode_utf7, encode_utf7): refactored by
- Nobuyoshi Nakada, to use String#encode.
+Sat Feb 26 17:07:53 2011 Tadayoshi Funaba <tadf@dotrb.org>
-Wed May 9 13:26:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/date.rb: [Feature #4257]
- * test/rubygems/test_gem_remote_fetcher.rb: skip OpenSSL dependent
- tests if not available.
+ * ext/date/extconf.rb: new
-Wed May 9 08:09:38 2012 Ryan Davis <ryand-ruby@zenspider.com>
+ * ext/date/date_core.c: new
- * lib/minitest/*: Imported minitest 3.0.0 (r7435)
- * test/minitest/*: ditto
- * test/rubygems/*: Imported fixes for buggy use of assert_match
- and deprecated assert_block
- UNBUNCH YOUR PANTIES. THE TESTS DO NOT RUN CLEAN ON OSX.
+Sat Feb 26 16:10:23 2011 Shota Fukumori <sorah@tubusu.net>
-Wed May 9 06:28:59 2012 Eric Hodel <drbrain@segment7.net>
+ * lib/test/unit.rb: --jobs-status won't puts over 2 lines.
- * re.c (rb_reg_equal): Removed incorrect example for Regexp#== with
- "n" option. [ruby-talk - Bug #6415]
+ * test/testunit/test_parallel.rb: Fix test for above.
-Wed May 9 06:23:33 2012 Tadayoshi Funaba <tadf@dotrb.org>
+ * lib/test/*: refactoring.
- * ext/date/date_core.c: reverted.
+Sat Feb 26 07:10:05 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Wed May 9 04:31:26 2012 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+ * ext/psych/lib/psych/scalar_scanner.rb: fix parsing timezone's whose
+ whose format is (+/-)hhmm. Thanks Goncalo Silva!
- * lib/rinda/ring.rb (lookup_ring_any): fix Rinda::RingFinger.primary
- hungs forever. [ruby-talk:395364]
+ * test/psych/test_scalar_scanner.rb: test for bug.
-Tue May 8 21:09:00 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Thu Feb 24 23:02:55 2011 Tanaka Akira <akr@fsij.org>
- * include/ruby/win32.h (FD_SET): change function to macro.
- To avoid buffer overflow when smaller FD_SETSIZE is used in ext
- libraries.
+ * ext/openssl/ossl_hmac.c: parenthesize macro arguments.
- * win32/win32.c (rb_w32_fdset): this function is not used anymore.
- But we leave this for compatibility.
+Thu Feb 24 22:53:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * win32/win32.c (rb_w32_select_with_thread): fix SEGV when smaller
- FD_SETSIZE is used in ext libraries. Dereference of fd_set pointer
- causes SEGV.
+ * common.mk (love): for the birthday.
- * test/-ext-/win32/test_fd_setsize.rb(TestFdSetSize): add tests for
- above.
- * ext/-test-/win32/fd_setsize/depend: ditto.
- * ext/-test-/win32/fd_setsize/extconf.rb: ditto.
- * ext/-test-/win32/fd_setsize/fd_setsize.c: ditto.
+Thu Feb 24 22:51:54 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- [ruby-core:44588] [Bug #6352]
+ * vm.c (ruby_vm_destruct): run vm exit hooks after all objects are
+ destructed.
-Tue May 8 20:44:46 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Thu Feb 24 14:40:33 2011 Shota Fukumori <sorah@tubusu.net>
- * io.c (io_unread): fix IO#pos with mode 'r' bug on Windows.
- If the end of reading buffer is CR, io_unread() needs to unread one
- more byte.
- [ruby-core:44874] [Bug #6401]
-
- * test/ruby/test_io_m17n.rb (TestIO_M17N#test_pos_with_buffer_end_cr):
- add a test for above.
-
-Tue May 8 13:38:17 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-
- * ext/date/date_core.c: improving introduction in Date/DateTime
- documentation. patched by Daniel Kaufman via Github.
- https://github.com/ruby/ruby/pull/110
-
-Tue May 8 13:36:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (POSTLINK): default to : command to get rid of flag
- only command, since BSD make does not work with it.
-
-Tue May 8 13:35:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit.rb (MiniTest#run_test): remove exact trace and get rid
- of IndexError, which could caused by modified $@ sometimes.
-
-Tue May 8 11:21:27 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/minitest/metametameta.rb (MetaMetaMetaTestCase#assert_report):
- support drive letter on Windows. yes, the original code is metameta.
-
-Tue May 8 08:54:48 2012 Eric Hodel <drbrain@segment7.net>
+ * ChangeLog (vim): Modeline for vim
- * lib/abbrev.rb: Fixed typo in abbrev pattern documentation. Based on
- patch by Mark Rushakoff. [ruby-trunk - #6346]
+Thu Feb 24 13:39:25 2011 Shota Fukumori <sorah@tubusu.net>
-Tue May 8 07:44:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * common.mk: Use $RUNRUBY for worker process.
- * ext/openssl/ossl_ssl.c (ossl_start_ssl): remove useless rb_sys_fail
- before ossl_raise. this cause a test failure on Linux.
- http://u64.rubyci.org/~chkbuild/ruby-trunk/log/20120507T190102Z.log.html.gz
+ * lib/test/unit.rb: Fix bug.
-Tue May 8 05:35:18 2012 Eric Hodel <drbrain@segment7.net>
+ * lib/test/unit.rb: @options[:ruby](@opts[:ruby]) is now Array.
- * object.c (Init_Object): Added reference to variable.c where
- public_constant and private_constant documentation lives. [#6381]
+ * test/testunit/parallel.rb: Fix for above.
-Tue May 8 04:47:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Feb 24 10:05:55 2011 Shota Fukumori <sorah@tubusu.net>
- * lib/test/unit.rb (Test::Unit::Runner#output): prefer local output to
- get rid of unexpected side effect in test/minitest/metametameta.rb.
+ * test/testunit/tests_for_parallel/misc.rb: Fix bug in r30947.
- * lib/test/unit.rb (MiniTest#run_test): show the running test in $0.
+ * lib/test/unit.rb, lib/test/unit/assertions.rb: For this test.
- * lib/test/unit.rb (Test::Unit::StatusLineOutput): new class to output
- in status line.
+Wed Feb 23 23:07:38 2011 Shota Fukumori <sorah@tubusu.net>
- * test/testunit/test_hideskip.rb (TestHideSkip#test_hideskip):
- MiniTest#puke now reports Skipped messages only if verbose mode.
+ * test/testunit/test_parallel.rb, test/testunit/parallel/*:
+ Test for r30939.
- * test/testunit/test_sorting.rb (TestTestUnitSorting#test_sorting):
- ditto.
-
- * lib/test/unit.rb (Test::Unit::Runner#puke): modify only result and
- drop useless reports, not override entirely.
+ * lib/test/unit.rb: For test.
- * bootstraptest/runner.rb (exec_test, show_progress): show rotators
- and pass/fail counts.
+ * lib/test/parallel.rb: For test.
- * sample/test.rb (PROGRESS): refine output.
+ * lib/test/unit/testcase.rb: For test.
-Tue May 8 02:34:26 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Feb 23 22:05:13 2011 Tanaka Akira <akr@fsij.org>
- * lib/minitest/unit.rb (assert_match): refix of r35563.
- r35563 breaks the intention of the original change.
- https://github.com/seattlerb/minitest/commit/68858105b2eb11c85105ffac5f32b662c59397f3
- * lib/minitest/unit.rb (refute_match): ditto.
+ * ext/openssl/ossl_engine.c: parenthesize macro arguments.
-Mon May 7 21:19:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Feb 22 23:15:17 2011 Shota Fukumori <sorah@tubusu.net>
- * ext/json: Merge JSON 1.7.1.
- https://github.com/flori/json/commit/e5b9a9465c1159fae533bca320d950b772bcb4ac
+ * lib/test/unit.rb: Fix --ruby option doesn't effect.
-Mon May 7 22:54:22 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * lib/test/unit.rb: Fix typo.
- * ext/openssl/ossl_ssl.c: add support for option flags
- OpenSSL::SSL::OP_NO_TLSv1_1
- OpenSSL::SSL::OP_NO_TLSv1_2
- to allow blocking specific TLS versions. Thanks to Justin Guyett for
- pointing this out to me.
- * test/openssl/test_ssl.rb: add tests to assert correct behavior when
- blocking certain versions of TLS/SSL both on server and client side.
- Also refactored tests to reduce boilerplate code a little.
- * test/openssl/utils.rb: rescue Errno::ECONNRESET for tests where
- client rejects the connection because a forbidden protocol version
- was used.
+Tue Feb 22 21:39:28 2011 Tanaka Akira <akr@fsij.org>
-Mon May 7 20:14:15 2012 Tanaka Akira <akr@fsij.org>
+ * ext/openssl/ossl_digest.c: parenthesize macro arguments.
- * lib/securerandom.rb (random_bytes): call to_int method for the
- argument at first.
+Tue Feb 22 14:34:26 2011 Shota Fukumori <sorah@tubusu.net>
-Mon May 7 17:54:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/test/unit.rb: Fix merging miss.
- * lib/minitest/unit.rb (assert_match): replace matcher only if both
- matcher and obj are String. fix r35541. [Bug #6405]
- DON'T COMMIT IF YOU CAN'T RUN TEST.
- FIX AS SOON AS POSSIBLE YOU BREAK TESTS.
- patched by ayumin.
- https://github.com/seattlerb/minitest/pull/124
+Tue Feb 22 12:27:26 2011 Shota Fukumori <sorah@tubusu.net>
- * lib/minitest/unit.rb (refute_match): ditto.
+ * lib/test/unit.rb: Add new options; --jobs,-j,--ruby,--jobs-status,
+ --no-retry.
+ [Feature #4415] [ruby-dev:43226],[ruby-dev:43222],[ruby-core:35294]
-Mon May 7 13:41:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/test/unit/parallel.rb: Used at test/unit --jobs(-j) option.
- * Makefile.in (PROGRAM), configure.in (POSTLINK): sign built program
- using RUBY_CODESIGN identity.
+ * test/csv/test_serialization.rb: test/unit parallel running ready.
-Mon May 7 13:03:55 2012 Shugo Maeda <shugo@ruby-lang.org>
+ * test/rake/test_file_task.rb: test/unit parallel running ready.
- * lib/net/imap.rb (body_type_attachment): parse body type
- "ATTACHMENT". [ruby-core:44849] [Bug #6397]
+Tue Feb 22 06:09:10 2011 Eric Hodel <drbrain@segment7.net>
-Mon May 7 10:49:36 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/syslog/syslog.c: Apply documentation patch from mathew murphy.
+ [Bug #4149]
- * ext/bigdecimal/bigdecimal.c (Init_bigdecimal): define IDs before
- they are used. [ruby-core:44900] [Bug #6406]
+Tue Feb 22 03:09:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Mon May 7 10:27:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/psych/lib/psych.rb: increase Psych to 1.1.0 for help with
+ debugging.
- * ext/digest/rmd160/rmd160.c (RMD160_Update): fix for huge data.
+Tue Feb 22 03:04:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Mon May 7 10:23:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/psych/lib/psych/streaming.rb: refactor streaming methods to a
+ module.
+ * ext/psych/lib/psych/stream.rb: extracted streaming specific methods
+ to a module.
+ * ext/psych/lib/psych/json/stream.rb: JSON stream inherits from
+ JSONTree and includes streaming methods.
+ * ext/psych/lib/psych/visitors/json_tree.rb: JSON does not support
+ object references, so remove object reference testing when building
+ JSON trees.
+
+Tue Feb 22 02:41:51 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/visitors/yaml_tree.rb (accept): use Hash#key?
+ when looking up object references to err on the side of cache
+ misses.
+
+Mon Feb 21 10:58:39 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/psych/lib/psych/json/yaml_events.rb: refactoring JSON event
+ handling methods to a module for reuse.
+ * ext/psych/lib/psych/json/tree_builder.rb: AST builder uses JSON
+ event methods.
+ * ext/psych/lib/psych/json/stream.rb: stream emitter uses JSON event
+ methods.
- * test/fileutils/fileasserts.rb: use assert_equal, assert_match, and so on.
+Mon Feb 21 10:54:29 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * test/ruby/enc/test_utf16.rb, test/ruby/enc/test_utf32.rb,
- test/ruby/test_io_m17n.rb (assert_str_equal): ditto.
+ * ext/psych/lib/psych/json/stream.rb: do not emit custom tags in maps
+ or sequences when emitting JSON.
+ * ext/psych/lib/psych/json/tree_builder.rb: do not emit custom tags in
+ sequences when emitting JSON.
+ * test/psych/json/test_stream.rb: tests for custom stream emits.
+ * test/psych/test_json_tree.rb: tests for JSON emits.
- * test/rubygems/test_gem_remote_fetcher.rb
- (assert_data_from_{server,proxy}): ditto.
+Mon Feb 21 10:05:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * test/test_pstore.rb (test_thread_safe): ditto.
+ * ext/psych/lib/psych/json/ruby_events.rb: DRY up ruby event handling
+ for JSON.
+ * ext/psych/lib/psych/visitors/json_tree.rb: use ruby events module
+ * ext/psych/lib/psych/json/stream.rb: ditto
-Mon May 7 10:16:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Feb 21 10:01:01 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * test/rubygems/test_gem_installer.rb (TestGemInstaller#test_dir): fix
- argument order. expected value must come first.
+ * ext/psych/lib/psych/json/stream.rb: fix JSON stream emits to use
+ double quotes during stream.
+ * test/psych/json/test_stream.rb: tests to reflect changes.
-Mon May 7 09:14:11 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Mon Feb 21 00:38:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/openssl/ossl_ssl.c: support TLSv1.1 & TLSv1.2. Add
- SSLContext#version to inspect the version that was negotiated for
- a given connection.
- * ext/openssl/extconf.rb: detect TLS 1.1 & 1.2 support.
- * test/openssl/test_ssl.rb: add tests for TLS 1.1 & 1.2 given they
- are supported by the native OpenSSL being used.
+ * test/ruby/test_system.rb (TestSystem#test_system_at):
+ add testcase for bug4396.
-Sun May 6 21:34:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sun Feb 20 19:59:32 2011 Tanaka Akira <akr@fsij.org>
- * io.c (io_encoding_set): suppress warnings. [ruby-dev:45627]
- this tmp1 is not required after r35538.
+ * ext/openssl/ossl_cipher.c: parenthesize macro arguments.
- * addr2line.c: suppress warnings.
+Sun Feb 20 16:26:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun May 6 18:39:39 2012 Koichi Sasada <ko1@atdot.net>
+ * thread.c (exec_recursive): prevent temporary objects from GC.
- * compile.c (iseq_compile_each): remove unused variable `size'.
+ * prevent temporary objects from GC, and should not use
+ RSTRING_PTR() for function calls since it evaluates the argument
+ a couple of times.
-Sun May 6 14:50:03 2012 Tanaka Akira <akr@fsij.org>
+Sun Feb 20 16:22:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/securerandom.rb: show actual read length in an error message.
+ * file.c (rb_file_flock): use rb_thread_io_blocking_region for the
+ time being.
-Sat May 5 06:43:10 2012 Ryan Davis <ryand-ruby@zenspider.com>
+Sun Feb 20 05:33:17 2011 Ryan Davis <ryand-ruby@zenspider.com>
- * lib/minitest/*: Imported minitest 2.12.1 (r7323)
+ * lib/minitest/*.rb: Imported minitest 2.0.2 r6207.
* test/minitest/*: ditto
-Sat May 5 01:47:33 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * test/zlib/test_zlib.rb (test_inflate): add a test for Zlib.inflate.
- patched by headius (Charles Nutter). [ruby-core:44859] [Bug #6398]
-
- * test/zlib/test_zlib.rb (test_deflate): add a test for Zlib.deflate.
-
-Sat May 5 00:53:55 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sun Feb 20 02:14:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * io.c (parse_mode_enc): remove warnings 'Ignoring internal encoding'.
- [ruby-core:44455] [Bug #6324]
+ * signal.c (sig_trap): avoid pthread_sigmask(xx, &mask, &mask) usage
+ because FreeBSD don't permit it. If it's used, it behave as
+ pthread_sigmask(xx, NULL, &mask).
- * io.c (io_encoding_set): ditto.
+ * signal.c (init_sigchld): ditto.
-Fri May 4 07:19:02 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sun Feb 20 00:46:51 2011 Tanaka Akira <akr@fsij.org>
- * lib/rdoc/parser.rb (RDoc.binary?): fix wrong regexp.
- [ruby-core:44798] [Bug #6393]
+ * ext/openssl/ossl_bn.c: parenthesize macro arguments.
-Fri May 4 01:33:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Feb 19 22:37:42 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * lib/rdoc/parser.rb (RDoc.alias_extension): a real file is irrelevant
- to aliasing. [ruby-core:44796][Bug #6392]
+ * vm_insnhelper.c (vm_check_if_namespace): guard temporary object
+ from GC.
- * lib/rdoc/parser.rb (RDoc.zip?): non-existent file will not be a zip
- file.
+Sat Feb 19 06:36:27 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * lib/rdoc/parser.rb (RDoc.can_parse_by_name): accept aliased
- extension file names.
+ * lib/test/unit.rb: partial revert of r30849. [ruby-core:32864]
- * lib/rdoc/parser.rb (RDoc.binary?): binary read data may have
- incomplete multibyte sequence. [ruby-core:44798][Bug #6393]
+ * test/testunit/test_rake_integration.rb: adding an integration test
+ with the rake loader to prevent regressions.
-Wed May 2 23:55:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Feb 18 19:31:31 2011 Shugo Maeda <shugo@ruby-lang.org>
- * lib/test/unit.rb (Test::Unit::RequireFiles#non_options): expand
- real path to get rid of loading same files via symlinks.
+ * lib/fileutils.rb (FileUtils::remove_entry_secure): there is a
+ race condition in the case where the given path is a directory,
+ and some other user can move that directory, and create a
+ symlink while this method is executing.
+ Reported by: Nicholas Jefferson <nicholas at pythonic.com.au>
-Wed May 2 23:26:04 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Fri Feb 18 00:28:39 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * cont.c (rb_fiber_m_transfer): improve sample code in Fiber#transfer
- documentation. emphasize the difference between transfer and resume.
+ * compile.c (get_exception_sym2type): guard temporary object from GC.
-Wed May 2 23:21:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Feb 17 23:54:29 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * parse.y (parser_yylex): allow spaces between lambda arrow and
- parenthesis. [ruby-dev:45605][Feature #6390]
+ * iseq.c (prepare_iseq_build): initialize iseq_compile_data::err_info
+ with nil. this fix exception in rb_iseq_load().
-Wed May 2 19:06:30 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Thu Feb 17 22:32:35 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
- * cont.c (rb_fiber_m_transfer): Improved Fiber documentation.
- patched by Anuj Dutta. [ruby-core:44540][Bug #6343]
+ * test/ruby/test_marshal.rb (test_marshal_dump_extra_iv):
+ fix a typo of local variable. [Bug #3720] [ruby-dev:42083]
-Wed May 2 13:06:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Feb 17 21:32:53 2011 Tanaka Akira <akr@fsij.org>
- * README, README.ja: reformatted using rdoc markup. based on the
- patches by zzak (Zachary Scott) in [Feature #6388].
+ * ext/openssl/ossl.h: parenthesize macro arguments.
- * README, README.ja: updated the author's mail address.
+Wed Feb 16 20:37:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed May 2 09:46:09 2012 Kouji Takao <kouji@takao7.net>
+ * eval_jump.c (rb_exec_end_proc): changed at_exit and END proc
+ evaluation order. [Bug #4400] [ruby-core:35237]
+ * eval_jump.c (rb_mark_end_proc): ditto.
- * ext/readline/readline.c (Readline.special_prefixes=)
- (Readline.special_prefixes): new function. An original patch was
- created by nagachika. [Feature #5784]
+ * test/ruby/test_beginendblock.rb (TestBeginEndBlock#test_nested_at_exit):
+ added a test for nested at_exit.
+ * test/ruby/test_beginendblock.rb (TestBeginEndBlock#test_beginendblock):
+ changed the test to adopt new spec.
-Tue May 1 22:18:45 2012 Kouji Takao <kouji@takao7.net>
+Wed Feb 16 20:17:06 2011 Tanaka Akira <akr@fsij.org>
- * ext/readline/readline.c (Readline.pre_input_hook)
- (Readline.insert_text, Readline.redisplay): new function. An
- original patch was created by nagachika. [Feature #5785]
+ * ext/openssl/openssl_missing.h: parenthesize macro arguments.
-Tue May 1 15:46:48 2012 Koichi Sasada <ko1@atdot.net>
+Tue Feb 15 21:37:45 2011 Tanaka Akira <akr@fsij.org>
- * common.mk: "$(Q)-..." doesn't work on nmake.
+ * ext/gdbm/gdbm.c: parenthesize macro arguments.
-Tue May 1 15:32:10 2012 Koichi Sasada <ko1@atdot.net>
+Tue Feb 15 20:34:53 2011 Tanaka Akira <akr@fsij.org>
- * common.mk: replace '@' prefix to '$(Q)' to control build
- process outputs.
+ * array.c (ary_join_1): fix array size.
-Tue May 1 14:17:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Feb 15 19:43:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/openssl/deprecation.rb (OpenSSL.check_func): check if header is
- available for macro compatibility.
+ * configure.in: fix and resubmit r30621. [ruby-dev:43203]
-Tue May 1 10:53:54 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Feb 15 15:41:30 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * test/ruby/test_settracefunc.rb: ignore traces from another threads
- because Kernel.set_trace_func affects other threads.
+ * array.c (array_join): copy the encoding of the first element as
+ an initial encoding.
-Tue May 1 06:04:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * array.c (array_join_0): ditto.
- * ext/digest/sha2/sha2.c (REVERSE32): explicitly cast since unsigned
- long may be larger than sha2_word32.
+ * array.c (array_join_1): ditto.
- * ext/digest/sha2/sha2.c (SHA{256,512,384}_{Final,End}): should clear
- whole content, not pointer size.
+ * array.c (inspect_ary): ditto.
- * ext/digest/*/extconf.rb: use pkg_config to use same library with
- openssl. [ruby-core:44755][Bug #6379]
+ * array.c (array_join_1): add an argument to check the appending is
+ first one or not.
- * ext/openssl/deprecation.rb: extract check for broken Apple OpenSSL.
+Tue Feb 15 15:40:53 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Tue May 1 05:02:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * hash.c (inspect_i): copy the encoding of the first key as
+ an initial encoding.
- * configure.in (optflags): disable unsafe optimizations.
- [ruby-core:44679][Bug #6370]
+Mon Feb 14 15:00:16 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Apr 30 23:36:49 2012 Tanaka Akira <akr@fsij.org>
+ * array.c (inspect_ary): don't taint the inspected result of a
+ recursive array.
- * lib/fileutils.rb (copy_metadata): use File.lchown and File.lchmod to
- update meta data of symlinks.
+Tue Feb 15 15:43:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Apr 30 23:05:53 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * encoding.c (rb_enc_compatible): change the rule for empty strings:
+ remove the special treatment of the US-ASCII encoded empty string.
+ Now Encoding.compatible? usually respect the encoding of the
+ receiver.
- * test/ruby/test_continuation.rb (tracing_with_set_trace_func): don't
- call Continuation from other threads. [ruby-dev:45596] [Bug #6382]
+Tue Feb 15 15:39:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Apr 30 20:10:04 2012 Tanaka Akira <akr@fsij.org>
+ * string.c (rb_enc_cr_str_buf_cat): remove special treatment of
+ ASCII-8BIT receivers.
- * ext/zlib/extconf.rb: detect z_crc_t type which will be defined
- since zlib-1.2.7.
+ * string.c (str_gsub): set initial encoding of the buffer as the
+ same of the receiver. [ruby-core:35141]
- * ext/zlib/zlib.c (rb_zlib_crc_table): use z_crc_t if available.
+Tue Feb 15 09:49:33 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Mon Apr 30 09:02:15 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * test/ruby/test_system.rb (TestSystem#test_system_at): use findstr
+ command instead of find command, because the latter is confusing
+ another famous Unix command.
- * ext/openssl/lib/openssl/ssl.rb: add hostname to "hostname does not
- match server cert." error. patched by Wes Morgan via Github.
- https://github.com/ruby/ruby/pull/122
+Mon Feb 14 23:01:19 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Mon Apr 30 04:43:53 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/json/yaml_events.rb: implicit styles should not
- be changeable for JSON events.
-
-Sun Apr 29 06:12:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (assoc, parser_yylex): add syntax to splat keyword hash.
- [ruby-core:44591][Feature #6353]
-
- * compile.c (compile_array_): generate keyword splat insns.
-
- * vm.c (m_core_hash_merge_kwd): merge keyword hash into intermediate
- hash. leftward argument is prior currently.
-
-Fri Apr 27 12:34:23 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/dl/cfunc.c (rb_dlcfunc_call): should convert a Bignum value to
- unsigned long long on Win64.
- [ruby-core:44636][Bug #6364] reported by raylinn@gmail.com (ray linn)
-
-Fri Apr 27 10:58:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/readline/test_readline.rb (setup): avoid affected by user's
- inputrc file. [ruby-dev:45584][Bug #6357]
-
-Fri Apr 27 01:45:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * thread.c (rb_threadptr_execute_interrupts_common):
- handle timer_interrupt only on the first loop for the case to avoid
- the infinite loop like following case:
- * there is 2 Ruby threads (3 pthreads)
- (1) main thread is waiting at gvl_yield:112 (native_cond_wait)
- (2) sub thread works
- (3) sub thread waits at gvl_yield:133 (native_mutex_unlock)
- (4) main thread works
- (5) main thread goes to gvl_acquire_common
- (6) main thread call rb_wakeup_timer_thread
- (7) timer thread set timer interrupt to the main thread
- (8) main thread works
- (9) main thread waits at gvl_acquire_common:64 (native_cond_wait)
- (10) sub tread works
- (11) set sub thread as the current thread
- (12) run Ruby thread
- (13) ...100ms
- (14) sub thread goes to rb_threadptr_execute_interrupts_common
- (15) sub thread call rb_thread_schedule_limits
- (16) sub thread call gvl_release_common
- (17) sub threads waits at gvl_yield:121 (native_cond_wait)
- (18) main threads works
- (19) main thread back to gvl_yield
- (20) set main thread as the current thread
- (21) main thread call gvl_yield
- (22) main thread waits at gvl_yield:112 (native_cond_wait)
- As described above, the main thread can't escape from
- rb_threadptr_execute_interrupts_common.
- See extended memo: http://bugs.ruby-lang.org/projects/ruby-trunk/wiki/R35480_ExtendedMemo
-
-Fri Apr 27 07:15:07 2012 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/socket.c (sock_s_pack_sockaddr_un): support the longest
- path in sockaddr_un, really.
- reported by nagachika.
- http://d.hatena.ne.jp/nagachika/20120426/ruby_trunk_changes_35474_35476
-
-Thu Apr 26 12:28:06 2012 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/raddrinfo.c (init_unix_addrinfo): support the longest
- path in sockaddr_un.
- (inspect_sockaddr): ditto.
- (addrinfo_mdump): ditto.
- (addrinfo_mload): ditto.
- (rsock_unixpath_str): new function.
- (rsock_unixpath): removed.
- (rsock_unixaddr): use rsock_unixpath_str.
-
- * ext/socket/socket.c (sock_s_pack_sockaddr_un): support the longest
- path in sockaddr_un.
- (sock_s_unpack_sockaddr_un): ditto.
- (sock_s_gethostbyaddr): unused variable removed.
-
- * ext/socket/unixsocket.c (rsock_init_unixsock): support the longest
- path in sockaddr_un.
-
- * ext/socket/rubysocket.h (rsock_unixpath_str): declared.
- (rsock_unixpath): removed.
-
- * test/socket/test_unix.rb: comment out test_nul because abstract unix
- sockets may contain NULs.
-
-Thu Apr 26 01:32:33 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * test/optparse/test_summary.rb (test_summary_containing_space): add
- test for r35467. OptionParser#to_a shouldn't split banner by spaces.
-
-Wed Apr 25 23:02:46 2012 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/raddrinfo.c (init_unix_addrinfo): refine error message
- format.
- (addrinfo_mload): show more information on "too long AF_UNIX path"
- error.
- (addrinfo_unix_path): ditto for "too short AF_UNIX address" and
- "too long AF_UNIX address" error.
-
-Wed Apr 25 05:46:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/optparse.rb (OptionParser#to_a): split for each lines.
- [ruby-dev:45568][Bug #6348]
-
-Tue Apr 24 21:57:53 2012 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/raddrinfo.c (init_unix_addrinfo): show actual path length
- when it is too long for Unix socket.
-
- * ext/socket/unixsocket.c (rsock_init_unixsock): ditto.
-
- * ext/socket/socket.c (sock_s_pack_sockaddr_un): ditto.
-
-Tue Apr 24 21:43:58 2012 Yusuke Endoh <mame@tsg.ne.jp>
-
- * lib/net/smtp.rb (check_continue): raise an error with an explanatory
- message. [ruby-core:35854] [Feature #4598]
-
-Tue Apr 24 21:11:31 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/optparse.rb (OptionParser#to_a): should split by end-of-line,
- and MUST TEST IT, MUST RUN THE TEST, MUST VERIFY BEFORE BACKPORT.
- [ruby-dev:45568][Bug #6348]
+ * thread.c (rb_thread_io_blocking_region): reset th->waiting_fd
+ after blocking region, because remaining waiting_fd might
+ cause unnecessary IOError.
-Tue Apr 24 19:59:31 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Feb 14 21:06:50 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
- * enc/euc_jp.c: added EUC-JP-2004 and its alias EUC-JISX0213.
- [ruby-dev:45571] [Feature #6349]
- Requested by Kyouhei Yanagita <yanagi@shakenbu.org>.
+ * configure.in: revert r30621. That revision introduced mkmf test
+ failures and it turned out to be OK to revert. [ruby-dev:43203]
- * enc/trans/japanese_euc.trans: ditto.
+Mon Feb 14 21:04:01 2011 Tanaka Akira <akr@fsij.org>
- * enc/trans/JIS/JISX0213-[12]%UCS@{BMP,SIP}.src: JIS X 0213:2004 ->
- Unicode mapping table from NetBSD.
+ * ext/fiddle/conversions.h: parenthesize macro arguments.
- * enc/trans/JIS/UCS@{BMP,SIP}%JISX0213-[12].src: Unicode -> JIS X
- 0213:2004 mapping table from NetBSD.
+Mon Feb 14 18:41:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * tool/transcode-tblgen.rb: added SIP support.
+ * win32/setup.mak (USE_RUBYGEMS): fixed r30835. It didn't work on
+ mswin32 port. If you changed win32/configure.bat, you should change
+ setup.mak too.
- * test/ruby/test_transcode.rb: tests of above changes.
+Mon Feb 14 17:28:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Apr 24 18:12:13 2012 Koichi Sasada <ko1@atdot.net>
+ * test/ruby/test_system.rb (TestSystem#test_system_at):
+ added test. [ruby-core:35218] (#4393)
- * compile.c: fix to output warning when the same literals
- are available as a condition of same case clause.
- And remove information ('#n') because we can find duplicated
- condition with explicit line numbers.
- [ruby-core:38343] [Ruby 1.9 - Bug #5068]
+Mon Feb 14 13:15:35 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * test/ruby/test_syntax.rb: add a test for above.
+ * win32/win32.c (is_internal_cmd): if the first char of prog is '@',
+ execute it via shell. [ruby-core:35218] (#4393)
-Tue Apr 24 17:03:51 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Feb 14 10:33:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * win32/win32.c (waitpid): need to check the return value of
- FindChildSlotByHandle() before passing poll_child_status().
- this fixed a SEGV in test-all. reported by ko1 via IRC.
+ * lib/test/unit.rb: revert r30863, because it causes too many noise.
-Tue Apr 24 16:04:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (parser_yylex): EXPR_BEG by keywords is a start point of
- commands. [ruby-dev:45563][Bug #6347]
-
- * parse.y (superclass): ditto for superclass.
-
- * parse.y (parser_parse_string, parser_here_document): ditto for
- string interpolation.
-
- * parse.y (parser_yylex): ditto for singleton class.
-
-Tue Apr 24 15:51:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/optparse.rb (OptionParser#to_a): should split by end-of-line
- [ruby-dev:45568][Bug #6348]
-
- * lib/optparse.rb (OptionParser#to_a): String#to_a is no longer
- defined. [ruby-dev:45568][Bug #6348]
-
-Tue Apr 24 12:46:50 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * hash.c, object.c, struct.c, lib/ostruct.rb: add to_h methods.
- [Feature #6276]
-
-Tue Apr 24 10:54:34 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/drb/drbtest.rb ({DRbCore,DRbAry}#teardown): cannot pass SIGTERM
- to another process on Windows, so use SIGINT instead.
-
-Tue Apr 24 00:25:39 2012 Yusuke Endoh <mame@tsg.ne.jp>
-
- * thread.c (rb_check_deadlock): refine an error message of deadlock
- detection. [ruby-core:44336] [Bug #6288]
-
-Tue Apr 24 00:14:42 2012 Yusuke Endoh <mame@tsg.ne.jp>
-
- * parse.y (primary): remove wrong "fixpos" that caused incorrect
- source_location of blocks. [ruby-core:42232] [Bug #5930]
-
- * test/ruby/test_proc.rb: add a test for above.
-
-Mon Apr 23 22:56:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/iconv: deprecated. [Feature #6322]
-
-Mon Apr 23 22:07:00 2012 Tanaka Akira <akr@fsij.org>
-
- * test/socket/test_unix.rb (bound_unix_socket): make temporary
- filename shorter for less possibility of Unix socket path over
- 107 bytes when TMPDIR has long path.
-
-Mon Apr 23 20:35:49 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (szInternalCmds, internal_match, internal_cmd_match):
- get rid of a segmentation fault with GCC 4.7.0.
- reported by raylinn@gmail.com (ray linn) at [ruby-core:44505]
- [Bug #6333], and patched by mame.
-
- * test/ruby/test_system.rb (TestSystem#test_system): test for it.
-
-Mon Apr 23 20:11:02 2012 Tanaka Akira <akr@fsij.org>
-
- * lib/drb/ssl.rb: generate 1024 bits RSA key instead of 512 bits.
- OpenSSL 1.0.1 rejects 512 bits RSA key for TLS1.2 with SHA512.
- http://rt.openssl.org/Ticket/Display.html?id=2769&user=guest&pass=guest
- reported by Bohuslav Kabrda.
- [ruby-core:43844] [ruby-trunk - Bug #6221]
-
-Mon Apr 23 19:54:33 2012 Tanaka Akira <akr@fsij.org>
-
- * test/drb/drbtest.rb: rescue Errno::ESRCH for Process.kill.
- reported by NARUSE, Yui. [ruby-dev:45551]
-
-Mon Apr 23 14:16:45 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * .gdbinit (rb_ps_vm): follow st_table's packing change.
-
-Mon Apr 23 10:43:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in: disable rubygems not to load rbconfig.rb before
- fake.rb. [ruby-core:44492][Bug #6329]
-
-Sun Apr 22 20:26:06 2012 Tanaka Akira <akr@fsij.org>
-
- * lib/drb/extservm.rb (DRb::ExtServManager): don't use /bin/sh to
- invoke service subprocess. mark detach threads for clean up.
-
- * test/drb/drbtest.rb: clean up the service subprocess in teardown.
-
- * test/drb/test_drb.rb: set @service_name for teardown.
-
- * test/drb/test_drbunix.rb: ditto.
-
- * test/drb/test_drbssl.rb: ditto.
-
- [ruby-dev:45547]
-
-Sun Apr 22 07:51:29 2012 Tanaka Akira <akr@fsij.org>
-
- * lib/drb/ssl.rb: close accepted TCP socket if SSL accept is failed.
- [ruby-dev:45541]
-
-Sat Apr 21 14:36:49 2012 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-
- * test/rinda/test_rinda.rb: fix sticks on some tests problem
- [Bug #6272]
-
-Fri Apr 20 12:24:04 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/ssl_certs/AddTrustExternalCARoot.pem: Removed to avoid
- conflict with ca-bundle.pem
- * lib/rubygems/ssl_certs/VerisignClass3PublicPrimaryCertificationAuthority-G2.pem:
- ditto.
- * lib/rubygems/ssl_certs/Entrust_net-Secure-Server-Certification-Authority.pem:
- ditto.
-
-Fri Apr 20 08:07:06 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems: Update to RubyGems 1.8.23 which contains security
- fixes:
-
- RubyGems now disallows redirection from HTTPS to HTTP.
-
- RubyGems now verifies SSL connections.
-
- See https://github.com/rubygems/rubygems/blob/1.8/History.txt for
- changes since 1.8.22.
- * test/rubygems: ditto.
-
-Thu Apr 19 16:33:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * strftime.c (rb_strftime_with_timespec): fix carry-up bug and
- overwrite '+' with '-' if negative offset less than a hour.
- [ruby-core:44447][Bug #6323]
-
-Thu Apr 19 09:39:57 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/-test-/win32/dln/extconf.rb: need import library for ordinal
- entry even on mingw. [ruby-core:44441][Bug #6320]
-
-Thu Apr 19 09:35:15 2012 Eric Hodel <drbrain@segment7.net>
-
- * random.c (random_init): Clarify that the default seed is
- Random.new_seed, not zero. Based on patch by Roger Pack.
- [ruby-trunk - Bug #6313]
- * random.c (rb_f_srand): ditto.
-
-Thu Apr 19 08:59:02 2012 Eric Hodel <drbrain@segment7.net>
-
- * ext/curses/curses.c (window_nodelay): Fixed call-seq of nodelay to
- include the '='.
-
- Improved description window.nodelay=.
-
-Thu Apr 19 08:47:54 2012 Eric Hodel <drbrain@segment7.net>
-
- * io.c (io_readpartial): Document the output buffer parameter is
- overwritten with the read contents even when non-empty.
- Patch by yu nobuoka. [ruby-trunk - Bug #6285]
- * io.c (io_read_nonblock): ditto.
- * io.c (io_read): ditto.
- * io.c (rb_io_sysread): ditto.
- * io.c (argf_read): ditto.
- * io.c (argf_readpartial): ditto.
- * ext/stringio/stringio.c (strio_read): ditto.
- * test/ruby/test_argf.rb (class TestArgf): Add test for existing
- behavior of read outbuf.
- * test/ruby/test_io.rb (class TestIO): ditto.
- * test/stringio/test_stringio.rb (class TestStringIO): ditto.
-
-Wed Apr 18 22:58:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (DOT, DOXYGEN): use AC_CHECK_PROGS instead of
- AC_CHECK_PROG which needs the third argument. [ruby-core:44433]
- [Bug #6316]
-
- * configure.in (PKG_CONFIG): fix condition to skip older version
- of pkg-config. continue in backticks does not affect outside.
-
-Wed Apr 18 13:59:40 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/file.c (INVALID_FILE_ATTRIBUTES): define for old SDK.
-
-Wed Apr 18 10:22:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * strftime.c (rb_strftime_with_timespec): add an interim digit for
- the timezone offset which is less than an hour.
-
-Wed Apr 18 09:58:29 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/version.rb: Fixed init_with warning by calling into
- yaml_initialize (for syck) from psych's init_with
-
-Wed Apr 18 09:03:43 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems: Update to RubyGems 1.8.22 plus r33517 and r35337 which
- were ported to the rubygems git repository.
-
- See https://github.com/rubygems/rubygems/blob/1.8/History.txt for
- changes since 1.8.11.
-
- * test/rubygems: ditto.
-
-Tue Apr 17 22:18:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * strftime.c (rb_strftime_with_timespec): fix padding of time zone
- offset. [ruby-dev:43287][Bug #4458]
-
-Tue Apr 17 13:11:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dln.c (rb_w32_check_imported): skip ordinal entries. based on a
- patch by phasis68 (Heesob Park) at [ruby-core:44381].
- [ruby-core:44371][Bug #6303]
-
-Mon Apr 16 18:22:14 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * spec/default.mspec: expand relative path for ruby_exe which uses
- them with Dir.chdir; it breaks relative paths, for example
- core/kernel/exec_spec.rb.
-
-Mon Apr 16 16:22:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/win32.c (gmtime_r, localtime_r): POSIX compliant reentrant
- versions.
-
- * configure.in (RUBY_MSVCRT_VERSION): define on mingw too.
-
- * win32/Makefile.sub (config.h): prefix RT_VER with RUBY and make
- more descriptive to get rid of potential conflict.
-
-Mon Apr 16 15:19:39 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (NO_RUBY_VENDOR_LIB): fix missing comma.
-
-Mon Apr 16 12:17:12 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * lib/matrix.rb (hermitian?): Bug fix, patch by George Koehler
- [Bug #6290] [rubyspec:4b9573d7613]
-
-Mon Apr 16 09:42:50 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/rubygems/remote_fetcher.rb (Gem::RemoteFetcher#download): should
- use File.identical? to check the identity of the files.
- this fixed an error of a test on Windows.
-
-Sat Apr 14 12:55:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (UNREACHABLE): gcc 4.4 eliminates unreachable code
- if -O3 is given.
-
- * win32/win32.c (child_result): dropped colon.
-
-Sat Apr 14 10:45:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/webrick/server.rb (WEBrick::GenericServer#start):
- partially revert r35315.
-
- * test/webrick/test_server.rb (test_start_exception):
- received signal is delivered to the main thread, so it is needed to
- emulate it. patched by Eric Hodel. [ruby-core:44348] [Feature #6236]
-
-Sat Apr 14 09:35:45 2012 Eric Hodel <drbrain@segment7.net>
-
- * variable.c (trace_ev): Removed "not reached" comment as this line is
- reached.
- * variable.c (rb_obj_remove_instance_variable): Replaced "not reached"
- comment with the UNREACHABLE macro.
- * variable.c (rb_mod_const_missing): ditto.
- * variable.c (rb_mod_remove_cvar): ditto.
- * enum.c (first_i): ditto.
- * string.c (rb_str_aref): ditto.
- * string.c (str_byte_aref): ditto.
- * string.c (rb_to_id): ditto.
- * io.c (rb_io_fmode_modestr): ditto.
- * io.c (rb_io_oflags_modestr): ditto.
- * pack.c (num2i32): ditto.
- * vm_eval.c (rb_method_missing): ditto.
- * vm_eval.c (rb_f_throw): ditto.
- * dir.c (dir_read): ditto.
- * win32/win32.c (child_result): ditto.
- * struct.c (rb_struct_getmember): ditto.
- * struct.c (rb_struct_set): ditto.
- * struct.c (rb_struct_aref_id): ditto.
- * eval.c (rb_f_raise): ditto.
- * process.c (rb_f_exit_bang): ditto.
- * process.c (rb_f_exit): ditto.
- * process.c (rb_f_abort): ditto.
- * ext/-test-/iter/break.c (iter_break_value): ditto.
- * ext/pty/pty.c (pty_check): ditto.
- * ext/openssl/ossl_pkey.c (ossl_pkey_new): ditto.
- * ext/readline/readline.c (rb_remove_history): ditto.
- * ext/stringio/stringio.c (strio_unimpl): ditto.
- * numeric.c (num_sadded): ditto.
- * numeric.c (num_init_copy): ditto.
- * numeric.c (rb_num2ll): ditto.
- * numeric.c (rb_num2ull): ditto.
- * vm_insnhelper.c (call_cfunc): ditto.
- * ruby.c (opt_W_getter): ditto.
- * bignum.c (rb_big_coerce): ditto.
- * file.c (rb_f_test): ditto.
-
-Sat Apr 14 08:38:20 2012 Eric Hodel <drbrain@segment7.net>
-
- * encoding.c (rb_enc_codepoint_len): Use UNREACHABLE to avoid "control
- reaches end of non-void function" warnings. [ruby-trunk - Bug #6066]
- * re.c (name_to_backref_number): ditto.
- * object.c (rb_Float): ditto.
- * io.c (io_readpartial): ditto.
- * io.c (io_read_nonblock): ditto.
- * pack.c (rb_uv_to_utf8): ditto.
- * proc.c (rb_method_entry_arity): ditto.
- * vm_method.c (rb_f_notimplement): ditto.
- * struct.c (rb_struct_aset_id): ditto.
- * class.c (rb_scan_args): ditto.
- * process.c (rlimit_resource_type): ditto.
- * process.c (rlimit_resource_value): ditto.
- * process.c (p_uid_switch): ditto.
- * process.c (p_gid_switch): ditto.
- * ext/digest/digest.c (rb_digest_instance_update): ditto.
- * ext/digest/digest.c (rb_digest_instance_finish): ditto.
- * ext/digest/digest.c (rb_digest_instance_reset): ditto.
- * ext/digest/digest.c (rb_digest_instance_block_length): ditto.
- * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): ditto.
- * ext/dl/handle.c (rb_dlhandle_close): ditto.
- * ext/tk/tcltklib.c (pending_exception_check0): ditto.
- * ext/tk/tcltklib.c (pending_exception_check1): ditto.
- * ext/tk/tcltklib.c (ip_cancel_eval_core): ditto.
- * ext/tk/tcltklib.c (lib_get_reltype_name): ditto.
- * ext/tk/tcltklib.c (create_dummy_encoding_for_tk_core): ditto.
- * ext/tk/tkutil/tkutil.c (tk_hash_kv): ditto.
- * ext/openssl/ossl_ssl.c (ossl_ssl_session_reused): ditto.
- * ext/openssl/ossl_pkey_ec.c (ossl_ec_key_dsa_verify_asn1): ditto.
- * ext/openssl/ossl_pkey_ec.c (ossl_ec_point_is_at_infinit): ditto.
- * ext/openssl/ossl_pkey_ec.c (ossl_ec_point_is_on_curve): ditto.
- * ext/fiddle/conversions.c (generic_to_value): ditto.
- * ext/socket/raddrinfo.c (rsock_io_socket_addrinfo): ditto.
- * ext/socket/socket.c (sock_s_getnameinfo): ditto.
- * ext/ripper/eventids2.c (ripper_token2eventid): ditto.
- * cont.c (return_fiber): ditto.
- * dmydln.c (dln_load): ditto.
- * vm_insnhelper.c (vm_search_normal_superclass): ditto.
- * bignum.c (big_fdiv): ditto.
- * marshal.c (r_symlink): ditto.
- * marshal.c (r_symbol): ditto.
-
-Fri Apr 13 17:12:09 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * hash.c (inspect_i): keep string's coderange.
-
-Fri Apr 13 15:26:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * hash.c (rb_hash_aset, rb_hash_update, rb_hash_update_by): use
- st_update() to reduce evaluation of hash values.
-
-Fri Apr 13 15:17:36 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/webrick/server.rb (WEBrick::GenericServer#stop): fix r35303;
- this method is to deny new connections, not shutdown yet.
-
- * lib/webrick/server.rb (WEBrick::GenericServer#start):
- re-raise exception only when the exception is Interrupt (^C).
-
-Thu Apr 12 19:51:45 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: added some notes.
-
-Wed Apr 11 17:16:49 2012 Koichi Sasada <ko1@atdot.net>
-
- * compile.c (compile_array, compile_array_):
- Divide big array (or hash) literals into several blocks and
- concatenate them. There was a problem that a big array (hash)
- literal causes SystemStackError exception (stack overflow)
- because VM push all contents of the literal onto VM stack to
- make an array (or hash). To solve this issue, we make several
- arrays (hashes) and concatenate them to make a big array (hash)
- object. [ruby-dev:37701] [Bug #982]
-
- * compile.c (iseq_compile_each, setup_args): use modified
- compile_array.
-
- * vm.c (m_core_hash_from_ary, m_core_hash_merge_ary,
- m_core_hash_merge_ptr): added for above change.
-
- * id.c (Init_id), parse.y: add core method ids.
-
- * bootstraptest/test_literal.rb: add simple tests.
-
- * bootstraptest/test_eval.rb: remove rescue clause to catch
- SystemStackError exception.
-
- * test/ruby/test_literal.rb: add tests to check no stack overflow.
-
-Thu Apr 12 07:10:37 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/uri/generic.rb (module URI): URI now downcases the scheme to
- follow RFC 2396 section 3.1. [ruby-trunk - Feature #4551]
- * test/uri/test_generic.rb (class URI): Test for above
-
-Thu Apr 12 06:15:44 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/net/protocol.rb (module Net): Added ReadTimeout to match
- OpenTimeout. ReadTimeout is now raised by rbuf_fill instead of
- Timeout::Error to help users distinguish what type of timeout
- occurred. [ruby-trunk - Feature #6088]
- * lib/net/pop.rb (module Net): Updated documentation for ReadTimeout
- and OpenTimeout.
- * lib/net/http.rb (module Net): ditto
- * lib/net/smtp.rb (module Net): ditto
- * lib/net/telnet.rb (module Net): Net::ReadTimeout is now raised in
- waitfor to match Net::Protocol.
- * test/net/http/test_http.rb: Updated Timeout::Error expectation to
- Net::ReadTimeout.
- * test/net/ftp/test_ftp.rb: ditto
-
-Thu Apr 12 05:27:01 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/webrick/server.rb (module WEBrick::GenericServer): A server
- will now continue only when a StandardError subclass is raised. For
- other exception types the error will be logged at the fatal level and
- the server will safely stop. Based on a patch by Alex Young.
- [ruby-trunk - Feature #6236]
- * test/webrick/test_server.rb: Test for new exception handling
- behavior. Join the server thread instead of busy-waiting for it to
- shut down to remove race conditions.
-
-Thu Apr 12 03:50:44 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/test/unit.rb (Test::Unit:Runner::Worker#_run_suites):
- call GC.start before running the test suites.
-
-Wed Apr 11 22:31:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (rb_check_id_cstr): new function to check if ID is
- registered with NUL-terminated C string.
-
- * sprintf.c (rb_str_format): avoid inadvertent symbol creation.
-
-Wed Apr 11 20:28:36 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * io.c (rb_io_eof): use eof() instead of io_fillbuf(). It's because
- io_unread() doesn't work properly when reading CRLF with read(length)
- and mode 'r'.
- [ruby-core:44189][Bug #6271]
-
- * test/ruby/test_io_m17n.rb (TestIO_M17N#test_read_crlf_and_eof):
- test for above.
-
-Wed Apr 11 07:38:33 2012 Eric Hodel <drbrain@segment7.net>
-
- * ext/digest/sha2/lib/sha2.rb (Digest#block_length): Fixed method name
- in documentation examples. Patch by naleski via
- https://github.com/ruby/ruby/pull/115
-
-Wed Apr 11 07:33:13 2012 Eric Hodel <drbrain@segment7.net>
-
- * pack.c (pack_pack): Warn when an invalid character is found in the
- format string when $VERBOSE is true. [ruby-trunk - Feature #5219]
- * pack.c (pack_unpack): ditto
- * test/ruby/test_pack.rb (class TestPack): Test for warnings on
- invalid format characters.
-
-Wed Apr 11 06:11:10 2012 Eric Hodel <drbrain@segment7.net>
-
- * string.c (rb_str_tr): Documented use of \ to escape characters.
- [ruby-trunk - Bug #6161]
- * string.c (rb_str_count): ditto
-
-Wed Apr 11 05:14:51 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/abbrev.rb: Clarified that Abbrev.abbrev returns a Hash instead
- of an Array. Patch by Andrei Bocan. [ruby-trunk - Bug #6107]
-
-Wed Apr 11 03:02:24 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-
- * ext/ripper/lib/ripper/sexp.rb: fix spelling. patched by
- Jonathan Hinkle via https://github.com/ruby/ruby/pull/116
-
-Tue Apr 10 19:07:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * error.c (rb_enc_raise): new function to raise an exception with
- the message in the given encoding. patched by now (Nikolai
- Weibull) at [ruby-core:41160]. [Feature #5650]
-
-Tue Apr 10 18:19:32 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http.rb (Net::HTTP#send_request_with_body_stream):
- use IO.copy_stream for requests using body_stream.
- patched by Eric Wong. [ruby-core:40898] [Feature #5605]
-
-Tue Apr 10 16:53:21 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread_pthread.c: add prototype declarations for older Mac OS X.
- [ruby-core:43376][Bug #6170]
-
-Tue Apr 10 15:35:21 2012 Koichi Sasada <ko1@atdot.net>
-
- * compile.c (iseq_set_sequence): show a hint if there are duplicated
- "when" clauses. [ruby-core:41502] [ruby-trunk - Feature #5716]
-
-Tue Apr 10 09:57:00 2012 Eric Hodel <drbrain@segment7.net>
-
- * string.c (rb_str_split_m): Documented behavior of split on the empty
- string. [ruby-trunk - Feature #3575]
-
-Tue Apr 10 09:48:31 2012 Eric Hodel <drbrain@segment7.net>
-
- * ext/zlib/zlib.c (rb_deflate_s_deflate): Fixed ruby example replacing
- NO_FLUSH with FINISH. [ruby-trunk - Bug #6273]
-
-Mon Apr 9 23:10:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/win32.c (isUNCRoot, winnt_stat): support long UNC.
- [ruby-core:30623][Feature #3399]
-
-Mon Apr 9 15:16:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (string_content, parser_yylex): count brace nesting to
- dispatch embexpr_end. [ruby-core:43775][Bug #6211]
-
-Mon Apr 9 13:06:58 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * hash.c (rb_hash_set_default_proc): Accept nil, patch by Run Paint
- [Feature #4234]
-
- * test/ruby/test_hash.rb: test for above.
-
-Mon Apr 9 08:01:15 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_strftime.c: gets the value with range() consistently.
- * ext/date/date_strftime.c (range): now just replaces the given item.
-
-Mon Apr 9 06:58:01 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * complex.c (nucomp_expt): [ruby-core:44170].
-
-Mon Apr 9 02:52:03 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * complex.c (nucomp_expt): the result of f_complex_new2 may be a fixnum
- with mathn. [ruby-core:44170] [Bug #6267]
-
-Sun Apr 8 22:46:01 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/json/generator/generator.c (generate_json_bignum):
- add RB_GC_GUARD.
- http://fb.rubyci.org/~chkbuild/ruby-trunk/log/20120407T210301Z.diff.html.gz
-
-Sun Apr 8 07:26:40 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/webrick/utils.rb (WEBrick::Utils::TimeoutHandler): get keys
- and fetch values from it to prevent @timeout_info's error
- "can't add a new key into hash during iteration".
-
-Sun Apr 8 06:51:57 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * io.c (io_unread): cast as long the value for extra_max.
- [ruby-core:44137] [Bug #6257]
-
-Sun Apr 8 06:46:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/webrick/httpresponse.rb (WEBrick::HTTPResponse#send_body_io):
- use readpartial to get data even if the response is streaming data and
- each data is smaller than @buffer_size.
- patched by yu nobuoka. [ruby-dev:45471] [Bug #6230]
-
-Sat Apr 7 22:35:36 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * include/ruby/win32.h (rb_w32_aspawn_flags): add the declaration of
- new function.
-
- * process.c (enum): add EXEC_OPTION_PGROUP and move the position
- above for the usage in proc_spawn_n().
-
- * process.c (proc_spawn_n): add an argument to pass new option
- `new_pgroup`. The option specifies CREATE_NEW_PROCESS_GROUP flag to
- CreateProcessW(). This flag is necessary for the usage of
- Process.kill on the subprocess on Windows.
-
- * process.c (rb_exec_arg_addopt): ditto.
-
- * process.c (rb_spawn_process): ditto.
-
- * process.c (documentation for rb_f_spawn): add documentation for new
- option `new_pgroup` of spawn.
-
- * test/ruby/test_process.rb (TestProcess#test_execopts_new_pgroup):
- add tests for option `new_pgroup`.
-
- * test/ruby/test_thread.rb
- (TestThreadGroup#test_thread_timer_and_interrupt):
- add option `new_pgroup: true` to spawn on Windows. It's needed for
- Process.kill on a subprocess.
-
- * win32/win32.c (CreateChild): add an argument to pass
- dwCreationFlags of CreateProcessW().
-
- * win32/win32.c (rb_w32_spawn): ditto.
-
- * win32/win32.c (rb_w32_aspawn_flags): add new function to pass
- dwCreationFlags.
-
- * win32/win32.c (rb_w32_aspawn): refactor to move the content to
- rb_w32_aspawn_flags().
- [ruby-core:43245][Bug #6131]
-
-Sat Apr 7 22:32:00 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * test/ruby/test_thread.rb
- (TestThreadGroup#test_thread_timer_and_interrupt): skip on Windows.
- Process.kill cannot kill a subprocess if CREATE_NEW_PROCESS_GROUP
- flag is not specified in a call to CreateProcessW().
-
- * win32/win32.c (CreateChild): revert the usage of
- CREATE_NEW_PROCESS_GROUP flag for compatibility.
- [ruby-core:43245][Bug #6131]
-
-Sat Apr 7 10:28:40 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych.rb: bumping up psych version to match release.
- * ext/psych/psych.gemspec: ditto
-
-Sat Apr 7 02:07:00 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/parser.c: fall back to any encoding if the external
- encoding is wrong. [ruby-core:44163]
- * test/psych/test_encoding.rb: fix test
+Mon Feb 14 07:34:55 2011 Tanaka Akira <akr@fsij.org>
-Fri Apr 6 16:24:24 2012 Martin Duerst <duerst@it.aoyama.ac.jp>
+ * ext/curses/curses.c: parenthesize macro arguments.
- * struct.c (documentation for rb_struct_members_m):
- fix 'array of strings' to 'array of symbols'
- [ruby-core:44152][Bug #6264]
+Sun Feb 13 19:41:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Apr 6 14:27:04 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * lib/test/unit.rb (Test::Unit::RequireFiles#non_options): skip
+ test suites failed to load instead of mere messages.
- * Makefile.in ($(LIBRUBY_A)): fix typo.
+Sun Feb 13 09:56:44 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Apr 5 13:26:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/openssl/test_config.rb (OpenSSL#test_freeze): fix error
+ message assertion.
- * missing/alloca.c (xmalloc, xfree): use ruby version, not
- depending on RUBY_LIB_PREFIX. [ruby-dev:45492][Bug #6255]
+ * test/io/nonblock/test_flush.rb (TestIONonblock#flush_test):
+ return true to finish the test.
-Wed Apr 4 13:06:39 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/ftp/ftp.rb (Net::FTP#close): restore original read_timeout.
-
-Wed Apr 4 10:33:31 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/ftp/ftp.rb (Net::FTP#close): ignore exceptions from shutdown and
- read on closing.
-
-Wed Apr 4 01:48:35 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/ftp/ftp.rb (Net::FTP#close): close socket more gracefully.
-
- * lib/ftp/ftp.rb (Net::BufferedSocket#shutdown): added.
-
- * test/net/ftp/test_ftp.rb (FTPTest#create_ftp_server): wait socket
- with shutdown and read.
-
-Tue Apr 3 19:00:52 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/net/ftp/test_ftp.rb (FTPTest#create_ftp_server): should wait
- a little before closing socket because if the client call
- Net::FTP#getmultiline the socket is suddenly closed by the server in
- the getline loop.
-
-Tue Apr 3 18:33:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * process.c (setreuid, setregid): suppress warnings.
- [ruby-core:43374][Bug #6169]
-
-Tue Apr 3 10:18:27 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * enumerator.c (inspect_enumerator): suppress uninitialized
- instance variable warnings. [ruby-dev:45449][Bug #6214]
- patched by no6v (Nobuhiro IMAI).
-
-Mon Apr 2 13:25:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/optparse/ac.rb: autoconf-like options.
-
-Mon Apr 2 10:34:00 2012 eregon <eregontp@gmail.com>
-
- * string.c (rb_str_start_with, rb_str_end_with): raise an error if
- an argument is not convertible to a String.
- [ruby-core:40623][Bug #5536]
-
-Mon Apr 2 03:35:25 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/webrick/server.rb (WEBrick::GenericServer): close socket only if
- the socket is not closed yet.
-
-Sun Apr 1 23:03:18 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/ftp.rb (Net::BufferedSocket): should delegate send() to @io
- for Net::FTP#abort and Net::FTP#status.
-
-Sun Apr 1 00:41:56 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/ftp.rb: fixed the domain name in examples.
-
-Sat Mar 31 21:39:45 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/webrick/utils.rb (WEBrick::Utils::TimeoutHandler): dup to prevent
- @timeout_info's "can't add a new key into hash during iteration".
-
-Sat Mar 31 14:22:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * hash.c (hash_default_value): extract from rb_hash_aref(), to be
- shared with rb_hash_shift(), so that overriding Hash#default
- will be respected.
-
-Sat Mar 31 14:16:02 2012 Sokolov Yura (funny-falcon) <funny.falcon@gmail.com>
-
- * hash.c: do not allocate st_table when it is not necessary.
-
-Sat Mar 31 13:42:39 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/ftp.rb (read_timeout=, open_timeout=): supported timeout.
-
-Sat Mar 31 13:20:40 2012 Sokolov Yura (funny-falcon) <funny.falcon@gmail.com>
-
- * hash.c: remove unnecessary checks for Qundef in hash iterations.
- since hash use st_foreach_check for iterations, such checks are
- needless.
-
-Sat Mar 31 12:05:01 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_x509cert.c: Fix doc typo.
-
-Sat Mar 31 10:13:24 2012 Sokolov Yura (funny-falcon) <funny.falcon@gmail.com>
-
- * st.c (st_foreach_check, st_foreach): remove ancient check. This
- check are from initial ordered hash commit when first entry were
- created with entry->fore = entry->back = entry.
-
- * st.c (st_delete): use real_entries in st_delete for packed tables
-
-Sat Mar 31 07:53:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * st.c (st_foreach_check): remove the entry by replacing with never
- when ST_DELETE.
-
- * hash.c (st_foreach_safe): since table is not for VALUE, Qundef is
- not special value, so use 0 instead. therefore this function can be
- applied to only st_table which 0 is invalid as keys, e.g., IDs.
-
- * hash.c: Qundef cannot be passed from st_foreach_check().
-
- * hash.c, marshal.c, object.c, variable.c: fix callback argument types
- of iterators.
-
-Thu Mar 29 23:50:15 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * st.c (st_update): pass pointer to key to the callback function.
-
-Thu Mar 29 16:36:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * st.c (st_update): add existing parameter to the callback function.
-
-Thu Mar 29 16:35:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit.rb (terminal_width, del_status_line, put_status):
- extract as methods.
-
-Thu Mar 29 10:20:18 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_pkcs7.c: fix crash when parsing garbage data.
- * test/openssl/test_pkcs7.rb: assert correct behavior for it.
- Thanks to Matt Venables for reporting the issue.
- [ruby-core:43250][Bug #6134]
-
-Thu Mar 29 10:16:05 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * thread_win32.c (TIME_QUANTUM_USEC): 10ms(= old setting) [experimental]
- cf. [Bug #6098]
-
-Thu Mar 29 10:12:12 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * thread.c (rb_threadptr_execute_interrupts_common): use defined
- TIME_QUANTUM_USEC instead of a magic number. there is no meanings
- to use different values for checking interval of interruption and
- thread switching limits.
- cf. [Bug #6098]
-
-Thu Mar 29 09:26:17 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * test/openssl/test_x509cert.rb: exclude test that fails when issuing
- a certificate with RSA signature and DSS1 digest for earlier
- OpenSSL versions when used in conjunction with OpenSSL 1.0.1.
- Thanks, Vit Ondruch, for reporting the issue.
- [ruby-core:42949][Bug #6089]
-
-Thu Mar 29 08:25:35 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * NEWS: add note about unified behavior of encoding nil values in
- instances of OpenSSL::ASN1::ASN1Data.
-
-Thu Mar 29 07:45:36 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_asn1.c: raise TypeError when trying to encode nil
- values for Primitive instances.
- * test/openssl/test_asn1.rb: Assert consistent behavior when
- encoding nil values: Primitives raise TypeError, Constructives
- raise NoMethodError.
- Fixes [ruby-core:43009][Bug #6102]
-
-Wed Mar 28 16:39:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * process.c (obj2uid, obj2gid): allow strings as input user/group id.
- [ruby-core:40923][Feature #5610]
-
-Wed Mar 28 15:06:18 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * marshal.c (r_symreal): default to ASCII-8BIT for non-ascii symbols,
- otherwise it should be converted to US-ASCII in rb_intern_str() if
- possible. [ruby-core:43762][Bug #6209]
-
-Wed Mar 28 08:44:24 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych.rb: updating version to match gem
- * ext/psych/psych.gemspec: ditto
- * ext/psych/lib/psych/visitors/to_ruby.rb: fixing deprecation warning
-
-Tue Mar 27 23:44:11 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * io.c (io_unread): fixed memory leak. report by nagachika via IRC.
-
-Tue Mar 27 22:44:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (verconf.h): separate load path specific stuff from
- config.h.
-
-Tue Mar 27 22:43:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/Makefile.sub: fix config.h path to include.
-
-Tue Mar 27 17:08:08 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * win32/win32.c (check_if_dir): fix memory leak.
-
-Tue Mar 27 13:13:51 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (str_new_empty): should copy also the encoding as an
- empty substring. [ruby-dev:45441][Bug #6206]
-
-Mon Mar 26 23:43:04 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/ftp.rb (parse227, parse228, parse229): don't use $~.
-
-Mon Mar 26 23:34:40 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/ftp.rb (parse227, parse228, parse229): don't use local
- variables defined by named capture for other Ruby implementations
- such as Rubinius.
-
-Mon Mar 26 23:19:03 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/ftp.rb (parse_pasv_port): refactored.
-
-Mon Mar 26 19:49:49 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * test/net/ftp/test_ftp.rb: add the test, which was forgotten in the
- previous commit.
-
-Mon Mar 26 19:37:27 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/ftp.rb (parse227, parse228, parse229): refactored.
-
-Mon Mar 26 11:46:23 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c (inspect_enumerator): show method arguments of
- lazy enumerators correctly.
-
-Mon Mar 26 13:51:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/win32.c (check_if_dir, check_if_wdir): fix for Visual C++
- not to use S_ISDIR(). [Feature #2408][ruby-core:26925]
-
- * ruby.c (load_file_internal): ditto.
-
-Mon Mar 26 11:46:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby.c (load_file_internal): bail out if the script is a directory.
- [Feature #2408][ruby-core:26925]
-
- * win32/win32.c (rb_w32_open, rb_w32_wopen): check if the file is a
- directory when access denied, to set errno to EISDIR.
-
-Sun Mar 25 18:13:14 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (tr_setup_table): fix multiple non latin argument for
- non latin (over 256 characters) tr-like methods.
- [ruby-core:43371] [Bug #6167]
-
-Sun Mar 25 00:46:06 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator (lazy_initialize): set the instance variable "receiver"
- to include the receiver to the return value of inspect on a lazy
- enumerator directly created by Enumerator::Lazy.new.
-
- * enumerator (RETURN_LAZY): don't set the instance variable "receiver".
-
-Sat Mar 24 23:59:00 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator (enumerator_inspect): include the original receiver and
- method name of Enumerator::Lazy in the result of inspect.
- [ruby-core:43345] [Bug #6159]
-
- * enumerator (InitVM_Enumerator): don't use rb_define_alias for
- some methods such as collect in order to make rb_frame_this_func()
- return the correct method names.
-
-Sat Mar 24 22:22:18 2012 Sambasiva Rao Suda <sambasivarao@gmail.org>
-
- * time.c (time_init_1): Time.new will accept seconds as string or
- int. [ruby-core:43569][Bug #6193]
-
-Fri Mar 23 15:12:12 2012 Martin Duerst <duerst@it.aoyama.ac.jp>
-
- * transcode.c (documentation for str_encode): Explain
- that transcoding to the same encoding is a no-op
- (i.e. no exceptions, no replacements,...).
- [ruby-core:43557][Bug #6190]
-
-Fri Mar 23 13:19:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * bignum.c (rb_str_to_inum): must be ASCII compatible encoding as
- well as String#hex and String#oct. [ruby-core:43566][Bug #6192]
-
- * string.c (rb_must_asciicompat): check if ASCII compatible.
-
-Thu Mar 22 23:14:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * transcode.c (str_encode_bang, encoded_dup): if nothing was
- transcoded, just set encoding but leave coderange unchanged as
- force_encoding. [ruby-core:43557][Bug #6190]
-
-Thu Mar 22 22:30:44 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * io.c (static int io_fflush): add the definition.
- Use it in set_binary_mode_with_seek_cur().
-
- * io.c (set_binary_mode_with_seek_cur): refactoring to split the
- content into io_unread(). Fix the possibility of buffer overflow.
-
- * io.c (io_unread): add new implementation for Windows. Previous one
- caused invalid cursor position using IO#pos with OS text mode. New
- one fixes the bug.
-
- * test/ruby/test_io_m17n.rb
- (TestIO_M17N#test_pos_dont_move_cursor_position): add a test for
- above bug.
- [ruby-core:43497] [Bug #6179]
-
-Thu Mar 22 19:55:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/win32.c (rb_w32_fstat, rb_w32_fstati64): convert FILETIME
- to time_t directly, not to be affected by TZ unnecessarily.
-
- * win32/win32.c (unixtime_to_filetime): convert time_t to FILETIME
- simply.
-
-Thu Mar 22 13:43:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/openssl/ossl_pkey_rsa.c (rsa_generate): fix argument type.
- [Bug #6094]
-
-Thu Mar 22 11:14:10 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_io.rb (TestIO#test_pos_with_getc): updated.
- see [ruby-core:43550]
-
-Wed Mar 21 17:57:57 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * regcomp.c: Merge Onigmo 3d855b30d574536d3ae600260208c6624ae4791c.
- [Bug#6143] [Bug#6144] [Bug#6145]
-
-Wed Mar 21 17:01:55 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_io.rb (TestIO#test_pos_with_getc): added.
- see [Bug #6179][ruby-core:43518]
-
-Mon Mar 19 17:18:51 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c (lazy_flat_map_func): convert the block value to
- Array if it doesn't respond to each. [ruby-core:43334]
- [Bug #6155]
-
-Mon Mar 19 16:34:14 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enum.c (zip_i): variadic argument needs explicit cast on the
- platforms where VALUE is longer than int.
-
-Mon Mar 19 15:36:41 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c (enumerable_lazy): add an example of take and first
- to the documentation. [ruby-core:43344] [Bug #6158]
- add the description of the behavior when a block is given to zip
- or cycle.
-
-Mon Mar 19 15:20:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * compile.c (iseq_specialized_instruction): DRY and replace chain
- of if-else with switch for special instructions. based on a
- patch by Vasfed. https://github.com/ruby/ruby/pull/105
-
-Mon Mar 19 15:05:54 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * test/test_pty.rb: same as r29280, skip tests when PTY allocation
- failed (that's not our fault).
-
-Sun Mar 18 23:21:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * gc.c (aligned_free): fix condition for free. memalign() and
- posix_memalign() are not defined together normally.
-
-Sun Mar 18 18:31:45 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * gc.c (aligned_malloc, aligned_free): added fallback implementations
- for platforms like OSX Leopard.
-
-Sun Mar 18 17:17:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * bignum.c (rb_big_pow): estimate result bit size more precisely.
- [ruby-core:30735][Feature #3429]
-
-Sun Mar 18 17:17:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * gc.c (free_method_entry_i): method entry may be in
- unlinked_method_entry_list. [ruby-core:43383][Bug #6171]
-
-Sun Mar 18 15:27:31 2012 Tanaka Akira <akr@fsij.org>
-
- * compile.c: typo fix by Run Paint Run Run.
- [ruby-core:28368] [Bug #2824]
-
-Sun Mar 18 10:01:02 2012 Kazuki Tsujimoto <kazuki@callcc.net>
-
- * lib/profiler.rb: support calling singleton methods of
- an instance of BasicObject.
-
-Sat Mar 17 06:56:58 2012 Eric Hodel <drbrain@segment7.net>
-
- * object.c: Fix indentation of Class#inherited example.
-
-Sat Mar 17 01:46:05 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * string.c (trnext): fix bug with string ending with '\\'.
- [ruby-dev:45374][Bug #6160]
-
- * test/ruby/test_string.rb (TestString#test_delete): test for
- above.
-
-Fri Mar 16 20:06:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (trnext): should advance char-wise.
- [ruby-core:43335][Bug #6156]
-
-Fri Mar 16 17:42:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (block_append_gen): fix unreachable warning line number.
- should warn at the code, not jump.
-
-Fri Mar 16 17:33:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * enum.c (enum_take): allocate buffer array before iteration, as well
- as enum_first did.
-
- * enum.c (enum_first): remove duplication.
-
-Fri Mar 16 14:43:18 2012 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * load.c (ruby_init_ext): don't free the given pointer itself.
- It is not guaranteed even that the pointer is on heap.
-
-Fri Mar 16 14:37:57 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_eval.c (rb_mod_module_eval): fix the documentation of
- class_eval to mention class variable lookup. [ruby-core:40649]
- [Bug #5544]
-
-Fri Mar 16 14:27:11 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_eval.c (rb_mod_module_eval): fix the documentation of
- class_eval to mention constant lookup. [ruby-core:41718]
- [Bug #5777]
-
-Fri Mar 16 14:10:45 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/imap.rb (initialize): raise Net::IMAP::Error when the
- connection is closed without a greeting response.
- [ruby-core:40938] [Bug #5616]
-
-Fri Mar 16 13:50:12 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/imap.rb (rfc822_text): ignore [] after RFC822.
- [ruby-core:40945] [Bug #5620]
-
-Fri Mar 16 12:00:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_insnhelper.c (argument_error): use line number at the beginning
- of lambda, not the first code of its body.
- [ruby-core:43314][Bug #6151]
-
- * iseq.c (rb_iseq_first_lineno): constified.
-
-Fri Mar 16 11:20:07 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c (lazy_take): don't enumerate an extra value.
- [ruby-dev:45370] [Bug #6152]
-
-Fri Mar 16 06:30:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * enumerator.c (lazy_zip_func): variadic argument needs explicit cast
- on the platforms where VALUE is longer than int.
-
- * enumerator.c (lazy_init_iterator): no need to check overflow twice.
-
-Fri Mar 16 05:47:09 2012 Eric Hodel <drbrain@segment7.net>
-
- * enumerator.c (lazy_init_iterator): Fix type error (int vs long).
-
-Thu Mar 15 23:13:36 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enum.c (rb_enum_values_pack): rename from enum_values_pack, and
- remove static.
-
- * enumerator.c (lazy_init_iterator, lazy_init_yielder,
- lazy_select_func, lazy_reject_func, lazy_grep_func): handle
- multiple values correctly.
-
- * enumerator.c (lazy_grep): change the behavior when a block is
- given, to be consistent with Enumerable#grep.
-
-Thu Mar 15 19:12:31 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c (lazy_zip): rescue StopIteration returned by
- Enumerator#next.
-
-Thu Mar 15 18:19:53 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c (lazy_zip, lazy_cycle): Enumerator::Lazy#{zip,cycle}
- should be eager when a block is given, to be consistent with
- Enumerable#{zip,cycle}.
-
-Thu Mar 15 17:45:27 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c (InitVM_Enumerator): renamed Enumerable::Lazy to
- Enumerator::Lazy.
-
-Thu Mar 15 16:37:38 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c (enumerable_lazy): added cycle to the documentation.
-
-Thu Mar 15 15:37:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (parser_yylex): fix warning line number.
-
-Thu Mar 15 15:19:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * enumerator.c (lazy_cycle): check argument number overflow before
- creating temporary array.
-
-Thu Mar 15 15:04:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * util.c (ruby_strtod): no need to check same digit for hexdigit
- twice. [ruby-dev:45363][Bug #6146]
-
- * parse.y (sym_check_asciionly): check ascii compatibility before
- scanning for code range.
-
- * parse.y (intern_str): set to us-ascii if ascii only.
- [ruby-dev:45363][Bug #6146]
-
- * file.c (ruby_enc_find_basename): allow NULL as alllen.
- [ruby-dev:45363][Bug #6146]
-
-Thu Mar 15 14:49:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (rb_str_conv_enc_opts): default to original encoding.
-
-Thu Mar 15 13:47:17 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * hash.c (env_str_new, rb_f_getenv, env_fetch): use rb_str_conv_enc()
- instead of rb_str_encode() to simplify the code.
-
-Thu Mar 15 12:44:50 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c, include/ruby/win32.h (rb_w32_ugetenv): new API to
- accept and to return UTF-8 strings.
-
- * win32/win32.c (rb_w32_getenv): follow above change.
-
- * win32/win32.c (rb_w32_get_environ): returns UTF-8 environment area.
-
- * hash.c (env_str_new, rb_f_getenv, env_fetch): follow above changes.
- [Bug #5570] [ruby-core:40737]
-
-Thu Mar 15 10:57:27 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c (lazy_cycle): add Enumerable::Lazy#cycle.
-
-Thu Mar 15 10:31:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/test_arity.rb (TestArity#err_mess): use assert_raise.
-
-Thu Mar 15 07:03:52 2012 Eric Hodel <drbrain@segment7.net>
-
- * vm_eval.c (check_funcall): Raise ArgumentError if respond_to?
- requires more than three arguments. [Bug #6000]
-
- * test/ruby/test_object.rb (class TestObject): Test for respond_to?
- requiring more than three arguments.
-
-Thu Mar 15 06:08:06 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * include/ruby/intern.h: Add rb_check_arity, rb_error_arity [#6085]
-
- * array.c: Use rb_check_arity / rb_error_arity
-
- * class.c: ditto
-
- * enumerator.c: ditto
-
- * eval.c: ditto
-
- * file.c: ditto
-
- * hash.c: ditto
-
- * numeric.c: ditto
-
- * proc.c: ditto
-
- * process.c: ditto
-
- * random.c: ditto
-
- * re.c: ditto
-
- * signal.c: ditto
-
- * string.c: ditto
-
- * struct.c: ditto
-
- * transcode.c: ditto
-
- * vm_eval.c: ditto
-
- * vm_insnhelper.c: ditto & implementation of rb_error_arity
-
- * test/ruby/test_arity.rb: tests for above
-
-Thu Mar 15 06:08:05 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * vm_insnhelper.c: improve number of arguments error in case of
- optional parameters (issue #6085)
-
- * include/ruby/intern.h: define UNLIMITED_ARGUMENTS
-
- * test/ruby/test_arity.rb: test for above
-
-Thu Mar 15 00:58:04 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c (enumerable_lazy): fix the documentation of
- Enumerable#lazy.
-
-Wed Mar 14 22:01:06 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c (lazy_init_iterator): break when Qundef is returned
- to make obj.drop(3).take(2) work properly.
-
- * enumerator.c (lazy_take_while): add Enumerable::Lazy#take_while.
-
- * enumerator.c (lazy_drop): add Enumerable::Lazy#drop.
-
- * enumerator.c (lazy_drop_while): add Enumerable::Lazy#drop_while.
-
- * enumerator.c (InitVM_Enumerator): add Enumerable::Lazy#force as an
- alias of to_a.
-
-Wed Mar 14 19:28:40 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c (lazy_take): add Enumerable::Lazy#take.
-
-Wed Mar 14 18:40:36 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c: use long for array indices.
-
-Wed Mar 14 18:25:18 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c: moved the comment of StopIteration.
-
-Wed Mar 14 17:55:29 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * numeric.c (flodivmod): must go through the same pass if HAVE_FMOD or
- not. this is a bugfix of r35013.
-
-Wed Mar 14 16:41:55 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/test_tmpdir.rb (TestTmpdir#test_world_writable): skip on Windows.
-
-Wed Mar 14 15:09:23 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * numeric.c: fix flodivmod for cornercases [Bug #6044]
- add ruby_float_mod
-
- * insns.def (opt_mod): use ruby_float_mod
-
- * internal.h: declare ruby_float_mod
-
- * test/ruby/test_float.rb: tests for above
-
- * test/ruby/envutil.rb: create helper assert_is_minus_zero
-
-Wed Mar 14 10:44:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * enumerator.c (lazy_grep_func): should use === instead of =~, as
- well as Enumerable#grep
-
-Wed Mar 14 08:15:54 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c (lazy_flat_map_func): use each for non-Array objects.
-
-Wed Mar 14 08:06:35 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c (lazy_zip): add Enumerable::Lazy#zip.
-
- * enumerator.c (lazy_lazy): just returns self.
-
-Wed Mar 14 07:48:36 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c (datetime_s_now): [ruby-core:43256].
-
-Tue Mar 13 22:00:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * compile.c (iseq_set_arguments): keyword rest arg without keyword args.
-
- * node.c (dump_node): dump kw_rest_arg too.
-
- * parse.y (block_param, f_arg): more kwrest patterns.
- [ruby-core:42455][Bug #5989]
-
- * parse.y (new_args_gen): no extra kw_rest_arg if no keyword rest arg.
-
-Tue Mar 13 15:17:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (block_param, f_args): add rules for the case arguments
- begin with kwrest. [ruby-core:42455][Bug #5989]
-
-Tue Mar 13 12:37:53 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * io.c (io_encoding_set): always warn if external encoding and internal
- encoding are identical. [ruby-core:40727] [Bug #5568]
-
-Tue Mar 13 12:37:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * gc.c: add ObjectSpace::WeakMap. [ruby-dev:44565][Bug #5350]
-
- * lib/weakref.rb: use WeakMap instead of _id2ref.
-
-Tue Mar 13 10:59:48 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/rbinstall.rb (prepare): skip if basedir is not defined.
- [ruby-core:39135][Bug #5238]
-
- * tool/rbinstall.rb (CONFIG.[]): check for mandatory
- configurations.
-
-Tue Mar 13 00:09:18 2012 Shugo Maeda <shugo@ruby-lang.org>
-
- * enumerator.c (enumerable_lazy): added documentation.
-
-Mon Mar 12 20:19:25 2012 Tanaka Akira <akr@fsij.org>
-
- * lib/tmpdir.rb (Dir::tmpdir): test the current directory suitable for
- temporary directory.
-
-Mon Mar 12 20:08:16 2012 Tanaka Akira <akr@fsij.org>
-
- * lib/fileutils.rb (fu_have_symlink?): specify TypeError for rescue
- clause.
-
-Mon Mar 12 19:23:13 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * encoding.c (rb_find_encoding): new function find encoding from
- arbitrary object as a pointer to rb_encoding, and return NULL if
- not found.
-
- * io.c (io_encoding_set): just warn unsupported encodings, but not
- exception. [ruby-core:40726] [Bug #5567]
-
-Mon Mar 12 19:03:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_method.c (Init_eval_method): respond_to? and
- respond_to_missing? are public.
-
-Mon Mar 12 14:56:52 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * node.h (NEW_YIELD), parse.y (new_yield_gen): array-values flags
- has been already obsolete. patch by Thomas Enebo.
- [ruby-core:41929][Bug #5847]
-
-Mon Mar 12 12:44:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_method.c (Init_eval_method): copy basic methods to Exception.
- [ruby-core:40287][Bug #5473]
-
-Mon Mar 12 10:13:36 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval_jump.c (rb_exec_end_proc): remember the latest exit status.
- [ruby-core:43173][Bug #5218]
-
-Mon Mar 12 07:33:12 2012 Tanaka Akira <akr@fsij.org>
-
- * lib/tmpdir.rb: update document for changing
- FileUtils.remove_entry_secure to FileUtils.remove_entry.
-
- * NEWS: add incompatibility note for lib/tmpdir.rb.
-
-Mon Mar 12 07:19:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/tmpdir.rb (Dir.tmpdir): should not use world-writable but
- non-sticky directory.
-
- * lib/tmpdir.rb (Dir.mktmpdir): check the parent directory.
-
-Mon Mar 12 07:04:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * random.c (Init_Random): removed rb_Random_DEFAULT and register as
- mark-object instead of global variable.
-
-Mon Mar 12 07:03:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * random.c (random_s_rand): ensure default PRNG is re-initialized
- after fork. patched by Eric Wong. [ruby-core:41209][Bug #5661]
-
-Sun Mar 11 23:57:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * pack.c (pack_unpack): when unpack('M') occurs an illegal byte
- sequence, output the "=" character and the following character in
- the decoded data without any transformation.
- [ruby-dev:44875] [Bug #5635]
-
-Sun Mar 11 22:32:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/json: Merge 164a75c8bd2007d32c4d7665d53140d8fc126dcd.
- [ruby-core:41917] [Bug #5846]
-
-Sun Mar 11 17:10:04 2012 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit.rb: Put error message into STDERR if failed to launch
- worker (job) process. [ruby-dev:44802] [Bug #5577]
-
- * lib/test/unit/parallel.rb: If failed to increment_io, exit with code
- 2. [ruby-dev:44802] [Bug #5577]
+ * test/syck/test_string.rb (Syck::TestString#test_non_binary_string):
+ use assert_not instead of refute, unless required minitest
+ explicitly.
-Sun Mar 11 15:46:45 2012 Shota Fukumori <sorah@tubusu.net>
+ * test/test_prime.rb (TestPrime::sieve.Integer): ditto.
- * io.c: fix rdoc of `IO.binwrite` to show same as `IO.write` except
- it opens file with mode "wb:ASCII-8BIT". [Bug #5782] [ruby-core:42592]
+ * test/xmlrpc/webrick_testing.rb (WEBrick_Testing#start_server):
+ catch IOError when server socket was closed.
-Sat Mar 10 23:52:28 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Feb 13 07:39:51 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
- * st.c: pack tables also generic keys. patched by Sokolov Yura at
- https://github.com/ruby/ruby/pull/84
+ * enum.c (enum_inject): typo fixed. a patch from Gaku Ueda in
+ [ruby-core:35216].
- * st.c: add st_foreach_check for fixing iteration over packed table
- and st_delete_safe. patched by Sokolov Yura at
- https://github.com/ruby/ruby/pull/84
+Sun Feb 13 00:48:47 2011 Tadayoshi Funaba <tadf@dotrb.org>
- * st.c: fix packed num_entries on delete_safe. patched by Sokolov
- Yura at https://github.com/ruby/ruby/pull/84
+ * lib/date.rb (Date#===): [ruby-core:35127]
-Fri Mar 9 14:29:32 2012 Shugo Maeda <shugo@ruby-lang.org>
+Sun Feb 13 00:29:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * enumerator.c (lazy_flat_map): add Enumerable::Lazy#flat_map.
+ * lib/test/unit.rb (Test::Unit::Options#process_args): always
+ return options.
-Fri Mar 9 06:29:22 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * lib/test/unit.rb (Test::Unit::RequireFiles#non_options): return
+ if any test case get loaded.
- * ext/psych/lib/psych.rb (load, parse): stop parsing or loading after
- the first document has been parsed.
+ * lib/test/unit.rb (Test::Unit::AutoRunner#initialize): do not add
+ default directory if it is nil.
- * test/psych/test_stream.rb: pertinent tests.
+ * lib/test/unit.rb (Test::Unit::AutoRunner#process_args): return
+ true if any test cases to run.
-Fri Mar 9 06:17:05 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+Sat Feb 12 23:17:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/psych/lib/psych.rb (parse_stream, load_stream): if a block is
- given, documents will be yielded to the block as they are parsed.
- [ruby-core:42404] [Bug #5978]
+ * lib/test/unit.rb (assert_include): add alias.
- * ext/psych/lib/psych/handlers/document_stream.rb: add a handler that
- yields documents as they are parsed
+Sat Feb 12 14:44:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/psych/test_stream.rb: corresponding tests.
+ * thread.c (rb_thread_io_blocking_region): new function to run
+ blocking region with GIL released, for fd.
-Fri Mar 9 00:35:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * thread.c (rb_thread_fd_close): implement. [ruby-core:35203]
- * enumerator.c (lazy_initialize, enumerable_lazy): no additional
- arguments.
+ * vm.c (th_init): rename from th_init2.
-Fri Mar 9 00:30:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Feb 12 14:41:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * enumerator.c: add Enumerable#lazy. based on the patch by
- Innokenty Mikhailov at <https://github.com/ruby/ruby/pull/101>
- [ruby-core:37164] [Feature #4890]
+ * lib/test/unit.rb (Test::Unit::AutoRunner#initialize): use
+ default_dir if no test case given.
-Fri Mar 9 00:25:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/test/unit.rb (Test::Unit::Runner): rename from Test::Unit::Mini.
- * enumerator.c (enumerator_each, generator_each): pass arguments to
- the block with yielder.
+ * lib/test/unit.rb (Test::Unit::GlobOption#non_options): run tests
+ under base directory if no argument given.
-Fri Mar 9 00:25:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Feb 12 08:03:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * array.c (rb_ary_cat): new function to concat objects into array.
+ * test/ruby/test_settracefunc.rb (TestSetTraceFunc): ensure to use
+ method_added hook defined in Module.
-Thu Mar 8 16:44:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Feb 12 01:04:02 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * .gdbinit (rb_numtable_entry): update for recent refactoring of
- st_table.
+ * ruby.c (proc_options): enable rubygems if --gem option is given.
-Wed Mar 7 22:41:50 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * ruby.c (process_options): load rubygems if it is disabled but
+ --gem option is given.
- * lib/xmlrpc/client.rb (module XMLRPC): fix typo.
+Fri Feb 11 23:27:50 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
- * test/xmlrpc/test_client.rb (test_async_call): add test for
- XMLRPC::Client#call_async to check above fix.
+ * ruby.c (proc_options): add --gem=enabled as an alias of
+ --enable=gems and --gem=disabled as an alias of --disable=gems.
+ Gem named "enabled" or "disabled" has already been reserved
+ legitimately for this purpose.
-Wed Mar 7 16:30:24 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Feb 11 23:17:04 2011 Tanaka Akira <akr@fsij.org>
- * error.c (rb_load_fail): should honor encoding.
+ * ext/dl/cfunc.c: parenthesize macro arguments.
- * load.c (load_failed): ditto.
+Fri Feb 11 21:41:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Mar 7 12:26:25 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * bin/testrb, test/runner.rb, lib/test/unit.rb: improve backward
+ compatibility.
- * error.c (rb_load_fail): use path as a string, not char*.
+Fri Feb 11 19:45:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * internal.h: (rb_load_fail): moved from ruby/intern.h.
+ * eval.c (ruby_cleanup): use rb_ary_free to free internal object.
- * ruby.c (load_file_internal): fname cannot be NULL.
+ * gc.h (RUBY_FREE_UNLESS_NULL): get rid of double free.
+ [ruby-core:35192]
-Wed Mar 7 08:32:43 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+Fri Feb 11 16:57:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * error.c (rb_loaderror_with_path): Adding the missing file as an
- instance variable to the LoadError exception.
- [ruby-core:39079]
+ * test/ruby/test_transcode.rb (test_from_cp50221): fix wrong
+ assertion and move back.
- * load.c: call rb_loaderror_with_path so that the missing path is
- added to the exception.
+Fri Feb 11 14:33:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ruby.c: call rb_loaderror rather than raising our own LoadError
- exception.
+ * lib/test/unit/assertions.rb (assert_no_match): alias for
+ backward compatibility.
- * include/ruby/intern.h: add declaration for rb_loaderror_with_path.
+Fri Feb 11 12:06:48 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_require.rb: add supporting test for LoadError#path
- method.
+ * ruby.c (add_gems, require_libraries, proc_options): add
+ --require and --gem options.
-Wed Mar 7 08:28:00 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+Fri Feb 11 12:03:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/xmlrpc/parser.rb: support i8 types. Thanks Stas Kelvich!
- [ruby-core:29246] [Feature #3090]
+ * configure.in (rubygems): add --disable-rubygems option.
- * test/xmlrpc/test_client.rb: supporting test
+Fri Feb 11 11:39:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Mar 7 07:43:29 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * template/fake.rb.in (CROSS_COMPILING): get rid of NameError.
- * lib/xmlrpc/client.rb: assume servers that do not send a Content-Type
- header are sending 'text/xml'. Thanks Nathan Leavitt!
- [ruby-core:41204] [Bug #5660]
+Thu Feb 10 23:12:34 2011 Tanaka Akira <akr@fsij.org>
- * test/xmlrpc/test_client.rb: supporting test
+ * ext/dl/dl.h: parenthesize macro arguments.
-Wed Mar 7 07:39:28 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+Wed Feb 9 23:11:27 2011 Tanaka Akira <akr@fsij.org>
- * test/xmlrpc/test_client.rb: adding a test for performing an XMLRPC
- call.
- * test/xmlrpc/data/blog.xml: supporting XML document for the response.
+ * ext/pty/pty.c: parenthesize macro arguments.
-Tue Mar 6 16:24:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Feb 8 11:47:11 2011 Loren Sands-Ramshaw <lorensr@gmail.com>
- * parse.y (parser_tokadd_string): escape simple regexp meta
- character terminators.
+ * array.c: documentation clarification in rotate, rotate!,
+ index, and rindex. [ruby-core:35144]
-Tue Mar 6 10:11:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Feb 9 09:45:43 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/io/console/console.c (set_rawmode): clear ECHOE and ECHOK
- bits too.
+ * test/rdoc/test_rdoc_encoding.rb: remove unnecessary (and wrong)
+ platform-dependent hacks.
- * ext/io/console/console.c (echo_p): ignore ECHOE and ECHOK bits.
- [ruby-dev:45309] [Bug #6116]
+Wed Feb 9 00:47:18 2011 Tanaka Akira <akr@fsij.org>
- * ext/io/console/console.c (console_raw): fix rdoc.
+ * ext/etc/etc.c: parenthesize macro arguments.
- * ext/io/console/console.c (console_set_echo): mentioned about
- platform dependency.
+Tue Feb 8 19:38:00 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Mar 6 07:18:10 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * misc/ruby-mode.el (ruby-expr-beg): fix for invalid nest errors.
- * lib/xmlrpc/client.rb: switch net/http post2 calls to modern
- `request_post` methods.
+Tue Feb 8 19:22:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Mar 6 02:31:20 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * configure.in (AC_MSG_CHECKING): fixed typo. the patch is
+ created by Benoit Daloze. Thanks a lot. [Bug #4384][ruby-core:35148]
- * ext/psych/lib/psych/core_ext.rb: only extend Kernel if IRB is loaded
- in order to stop method pollution.
+Tue Feb 8 16:04:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Mar 6 01:34:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * io.c (rb_io_s_sysopen): use NUM2MODET() instead NUM2UINT().
- * parse.y (block_call): rules for block_call after block_call.
- based on a patch by pasberth https://github.com/ruby/ruby/pull/102
- [ruby-dev:45308][Bug #6115]
+Tue Feb 8 15:59:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Mar 6 01:24:13 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * process.c (rb_run_exec_options_err): use MODET2NUM() instead
+ LONG2NUM().
- * parse.y (block_command, block_call): simplified rules.
+Tue Feb 8 13:59:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Mar 5 18:28:35 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * configure.in: revert r30725. Now we have proper runtime fallback.
+ Therefore, no need compile time disabling. (see r30762).
- * test/ruby/test_regexp.rb (TestRegexp#test_source): fix typo.
- * test/ruby/test_regexp.rb (TestRegexp#test_equal): ditto.
+Tue Feb 8 01:00:21 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Mon Mar 5 17:11:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * process.c (proc_setgroups): add GC guard to prevent intermediate
+ variable from GC.
- * ext/syck/lib/syck/rubytypes.rb (Exception.yaml_new): fix bug
- that causes YAML serialization problem for Exception.
- Exception#initialize doesn't use visible instance variable for
- the exception message, so call the method with the message.
- patched by Jingwen Owen Ou <jingweno AT gmail.com>.
- http://github.com/ruby/ruby/pull/41
+Tue Feb 8 00:56:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Mar 5 16:50:22 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * misc/ruby-mode.el (ruby-expr-beg, ruby-in-here-doc-p): tell
+ singleton class definitions from here documents.
- * test/ruby/test_sleep.rb (TestSleep#test_sleep_5sec): syntax error.
+ * misc/ruby-mode.el (ruby-expr-beg, ruby-parse-partial): keyword
+ followed by colon is label.
- * test/ruby/test_sleep.rb (TestSleep#test_sleep_5sec): call uname
- only on linux because it's a workaround for linux only.
+Mon Feb 7 22:56:16 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Mon Mar 5 12:44:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/benchmark.rb (Benchmark#bmbm): use ensure clause instead of
+ Object#tap to restore STDOUT.sync.
- * st.c (unpack_entries): chain entries directly. based on a patch
- by Sokolov Yura <funny.falcon AT gmail.com>.
+Mon Feb 7 22:34:20 2011 Tanaka Akira <akr@fsij.org>
- * st.c (unpack_entries): use union instead of casted pointer.
- patched by Sokolov Yura <funny.falcon AT gmail.com>.
+ * lib/net/http.rb (Net::HTTP#connect): support SNI (Server Name
+ Indication) for HTTPS. [ruby-dev:43164]
+ http://stackoverflow.com/questions/4685736/openssl-server-name-indication-support-in-ruby
- * st.c: use PACKED_ENT and FIND_ENTRY. patched by Sokolov
- Yura <funny.falcon AT gmail.com>.
+Mon Feb 7 16:05:32 2011 Eric Hodel <drbrain@segment7.net>
- * st.c (unpack_entries): reallocate bins if packed array size
- is not same as initial bins size. based on a patch by
- Sokolov Yura <funny.falcon AT gmail.com>.
+ * lib/rdoc: Upgrade to RDoc 3.5.3 Fixes [Bug #4376]
-Mon Mar 5 11:51:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Feb 7 11:46:59 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/bigdecimal/lib/bigdecimal/math.rb: remove description about
- BigMath#log. patched by Sho Hashimoto [ruby-dev:45307] [Bug #6112]
+ * common.mk (rdoc): add --encoding=UTF-8; ruby's rdoc must be UTF-8.
- * string.c (str_byteslice): fix typo.
+Mon Feb 7 10:21:50 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Sun Mar 4 23:21:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/rdoc/test_rdoc_options.rb (TestRDocOptions#test_check_files):
+ there is no easy way to create owner unreadable file on Windows.
+ So, skip the test.
- * parse.y (parser_tokadd_string): regexp engine doesn't need
- terminators to be escaped. [ruby-core:40364][Bug #5484]
+Sun Feb 6 13:48:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Mar 3 22:51:46 2012 Tanaka Akira <akr@fsij.org>
+ * ext/json/lib/json/common.rb (JSON::MissingUnicodeSupport.iconv):
+ should not drop rest of the result. use Iconv.conv instead.
- * process.c (rb_run_exec_options_err): chdir at last to interpret
- relative pathnames from the current directory of the parent process.
+Sun Feb 6 12:46:02 2011 Eric Hodel <drbrain@segment7.net>
-Sat Mar 3 12:20:44 2012 Tadayoshi Funaba <tadf@dotrb.org>
+ * string.c (gsub): Ensure result encoding is the same as input
+ encoding. [Bug #4340].
- * ext/date/date_strftime.c: reassigned some variables.
+Sun Feb 6 12:18:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Mar 3 12:12:16 2012 Tadayoshi Funaba <tadf@dotrb.org>
+ * parse.y (words, qwords): dispatch array events. based on a
+ patch from Michael Edgar. [Bug #4365].
- * ext/date/date_{parse,strptime}.c: [ruby-dev:45303].
+Sun Feb 6 12:12:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Mar 3 10:09:21 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * test/fileutils/fileasserts.rb (FileAssertions): separate module.
- * lib/xmlrpc/client.rb (initialize): net/http defaults to 1_2 in 1.8+,
- so we can safely remove the call to enable it.
+Sun Feb 6 11:29:23 2011 Tanaka Akira <akr@fsij.org>
-Sat Mar 3 08:42:25 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * ext/dbm/dbm.c: parenthesize macro arguments.
- * lib/xmlrpc/client.rb (new2): use URI for uri parsing.
- * test/xmlrpc/test_client.rb: test that query params are passed to the
- client constructor.
+Sat Feb 5 22:01:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sat Mar 3 08:20:10 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ revert r30796. r30797 and r30798 are an alternative fix.
+ [ruby-dev:43174]
- * lib/xmlrpc/client.rb (new2): raises an ArgumentError on bad
- arguments.
- * test/xmlrpc/test_client.rb: tests for bad uris
+Sat Feb 5 21:47:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Mar 3 08:08:11 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * parse.y (mlhs_basic): include mlhs_post for ripper. a patch
+ from Michael Edgar at [ruby-core:35078].
- * lib/xmlrpc/client.rb (new2): fix custom port specification when an
- SSL uri is used.
- * test/xmlrpc/test_client.rb: tests for XMLRPC::Client.new2
+Sat Feb 5 21:22:21 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Mar 3 08:03:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/test/unit/assertions.rb (assert_block): move from
+ test/fileutils/fileasserts.rb.
- * ext/syck/rubyext.c (mktime_do): use ISDIGIT().
- [ruby-core:43060] [Bug #6108]
+ * test/fileutils/fileasserts.rb (assert_block): pass arguments
+ as-is. [ruby-dev:43174]
- * ext/syck/token.c (sycklex_yaml_utf8): cast as unsigned char.
- [ruby-core:43060] [Bug #6108]
+Sat Feb 5 16:47:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sat Mar 3 06:57:14 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ msg can be passed nil. [Bug #4371] [ruby-dev:43174]
- * configure.in (ruby_pc): make configurable. [Bug #6051]
+Sat Feb 5 15:18:25 2011 Eric Hodel <drbrain@segment7.net>
-Fri Mar 2 17:49:03 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * lib/rdoc: Upgrade to RDoc 3.5.2
- * .travis.yml (branches): Enable TravisCI for ruby_1_9_3.
+Sat Feb 5 12:05:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Mar 2 17:13:33 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * ext/syck/rubyext.c (syck_node_init_copy): SyckNode is not
+ copiable. [ruby-core:35094]
- * test/ruby/test_array.rb (test_combination2): Make the test case for
- [ruby-core:29240] more descriptive.
- cf. http://bugs.jruby.org/6518
+Sat Feb 5 11:48:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Mar 2 16:37:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/openssl/ossl_cipher.c (ossl_cipher_alloc): leave data ptr
+ NULL.
- * file.c (file_expand_path): use wcscasecmp().
+ * ext/openssl/ossl_cipher.c (ossl_cipher_new, ossl_cipher_initialize):
+ allocate internal structure. [ruby-core:35094]
-Fri Mar 2 16:36:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/openssl/ossl_cipher.c (ossl_cipher_copy): ditto.
- * thread_pthread.c (native_cond_timeout): cast explicitly to suppress
- a warning.
+Sat Feb 5 11:29:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Mar 2 16:35:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/json/parser/parser.h (GET_PARSER): raise TypeError.
- * io.c (pipe_open): cmd is no longer used if fork is available.
+ * ext/json/parser/parser.rl (cParser_initialize): ditto.
-Thu Mar 1 16:13:18 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/json/parser/parser.h (GET_PARSER): check if initialized.
+ [ruby-core:35079]
- * internal.h (rb_file_const, rb_file_load_ok): moved functions for
- internal use only.
+ * ext/json/parser/parser.rl (cParser_initialize): ditto.
-Thu Mar 1 15:40:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Feb 5 10:09:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * win32/makedirs.bat: new command to make intermediate
- directories, and not to report any errors if the directory
- already exists.
+ * load.c (rb_get_expanded_load_path): always expand load paths.
- * win32/Makefile.sub (MAKEDIRS): enable command extensions.
+Sat Feb 5 09:38:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Mar 1 01:25:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * transcode.c (encoded_dup): extract.
- * regparse.c (is_onechar_cclass): optimize character class
- Merge Onigmo 27278c12e6674043cc8affca6507e20e119a86ee.
+Sat Feb 5 03:37:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * regparse.c (is_onechar_cclass): [bug] unexpected match occurs when a
- char class contains no char
+ * lib/fileutils.rb (FileUtils::LowMethods): make low level methods
+ in NoWrite and DryRun to do nothing. [ruby-dev:43129]
- * enc/unicode.c (init_case_fold_table): define the sizes of case
- folding tables in casefold.h
+ * test/fileutils/fileasserts.rb: add message arguments.
-Wed Feb 29 16:11:34 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/fileutils/fileasserts.rb (Test::Unit::Assertions#assert_block):
+ show the given message.
- * win32/Makefile.sub (MAKEDIRS): use mkdir of cmd.exe instead of ruby.
- [Bug #6103] [ruby-core:43012]
+Sat Feb 5 02:09:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * win32/README.win32: added a notice about command extension of cmd.exe.
+ * parse.y (lex_getline, parser_set_encode): set encoding of lines
+ in SCRIPT_LINES__ as source encoding. [ruby-dev:43168]
-Wed Feb 29 15:39:39 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Sat Feb 5 02:08:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_io.rb (TestIO#test_readpartial_locktmp): skip on
- windows because of the platform restriction.
+ * vm.c (ruby_thread_data_type): add prefix.
-Wed Feb 29 15:38:50 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Sat Feb 5 00:59:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/ruby/memory_status.rb (Memory): syntax error.
+ * vm_core.h (GetThreadPtr): use TypedData_Get_Struct() instead
+ CoreDataFromValue() because we need type check. Otherwise,
+ type mismatch can cause segmentation fault crash.
+ [ruby-core:35086] [Ruby 1.9-Bug#4367]
-Wed Feb 29 13:06:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * vm.c (thread_data_type): remove static.
- * test/ruby/memory_status.rb: use /proc/self/status if it is in
- the expected format.
+Fri Feb 4 19:14:27 2011 Tanaka Akira <akr@fsij.org>
-Wed Feb 29 06:14:51 2012 Tadayoshi Funaba <tadf@dotrb.org>
+ * enc/trans/utf8_mac.trans: parenthesize macro arguments.
- * ext/date/date_core.c: reverted r34825.
+Fri Feb 4 12:11:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Feb 28 23:20:01 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * string.c (str_utf8_nth): fixed a condition of optimized lead
+ byte counting. [Bug #4366][ruby-dev:43170]
- * Makefile.in (PLATFORM_DIR): add a variable for `win32` directory.
- * Makefile.in (clean-platform): add new target.
- It cleans `win32` directory.
+Fri Feb 4 01:50:13 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * common.mk (clean): add a dependency for `win32` directory.
- * common.mk (distclean): ditto.
- * common.mk (distclean-platform): add new target.
- It cleans `win32` directory.
- * common.mk ($(PLATFORM_D)): add new target to make `win32` directory.
- * common.mk (win32/win32.$(OBJEXT)): move win32.o into `win32`
- directory.
- * common.mk (win32/file.$(OBJEXT)): add new target for win32/file.c.
+ * string.c (count_utf8_lead_bytes_with_word): wrote function
+ comments.
- * configure.in: move win32.o into `win32` directory and add
- win32/file.o to MISSING.
+Fri Feb 4 00:14:55 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * file.c (file_load_ok, rb_file_load_ok): replace static
- file_load_ok() with public rb_file_load_ok().
- It's to link Windows implementation in win32/file.c.
- * file.c (rb_find_file_ext_safe): ditto.
- * file.c (rb_find_file_safe): ditto.
+ * ext/zlib/zlib.c (gzfile_reader_get_unused): no need to dup
+ before rb_str_resurrect.
- * win32/file.c (rb_file_load_ok): new file. Add Windows specific
- optimized implementation of rb_file_load_ok(). We created a
- separated file to avoid too many #ifdef macro which is unreadable.
+Thu Feb 3 20:04:44 2011 Tanaka Akira <akr@fsij.org>
- * win32/Makefile.sub (PLATFORM_DIR): add a variable for `win32`
- directory.
- * win32/Makefile.sub (MISSING): move win32.obj into `win32`
- directory and add win32/file.obj to MISSING.
- * win32/Makefile.sub (MAKEDIRS): replace MINIRUBY with BASERUBY.
- It's because miniruby doesn't exist when making `win32` directory.
- * win32/Makefile.sub (clean-platform): add new target to clean `win32`
- directory.
- * win32/Makefile.sub ({$(srcdir)}.c{}.obj): make it not match
- win32/file.c to build properly.
- * win32/Makefile.sub (win32/win32.$(OBJEXT)): move win32.obj into
- `win32` directory.
+ * ext/curses/curses.c (CHECK): unused macro removed.
- Patch created with Luis Lavena.
- [ruby-core:42480] [Feature #5999]
+Thu Feb 3 18:33:26 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Feb 28 20:27:25 2012 Tadayoshi Funaba <tadf@dotrb.org>
+ * ext/zlib/zlib.c (gzfile_reader_get_unused): use rb_str_resurrect
+ because gz->z.input is hidden string. [ruby-core:35057]
- * ext/date/date_core.c: [ruby-core:42998]
+Thu Feb 3 16:34:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Feb 28 18:47:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * enc/shift_jis.c (code_to_mbc): cast as int from the subtraction of
+ pointers.
- * io.c (io_binwrite, rb_io_syswrite): use shared frozen source
- strings.
+ * enc/utf_16le.c (utf16le_mbc_enc_len): use ptrdiff_t.
- * io.c (io_fread, io_getpartial, rb_io_sysread): set buffer size
- after check if readable, which can cause thread switch.
- [ruby-dev:45297][Bug #6099]
+ * enc/utf_32be.c (utf32be_left_adjust_char_head): ditto.
-Tue Feb 28 17:16:01 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * enc/utf_32le.c (utf32le_left_adjust_char_head): ditto.
- * lib/time.rb (Time#xmlschema): use strftime specifiers instead of
- fractional exponential calculation which yields undesirable
- result. [ruby-core:42997][Bug #6100]
+Thu Feb 3 16:31:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Feb 28 14:15:29 2012 Eric Hodel <drbrain@segment7.net>
+ * include/ruby/missing.h: don't use HAVE_STDDEF_H because it never
+ defined by configure though configure.bat defines it.
- * lib/net/protocol.rb: Add OpenTimeout subclass of Timeout::Error
- * lib/net/pop.rb: Modernize Timeout usage. Patch by Eric Wong.
- Use Net::OpenTimeout instead of Timeout::Error. [Bug #5765]
- * lib/net/http.rb: ditto
- * lib/net/smtp.rb: ditto
- * lib/net/telnet.rb: ditto
+ * include/ruby/ruby.h: move include stddef.h to defines.h
-Tue Feb 28 13:51:12 2012 Eric Hodel <drbrain@segment7.net>
+ * include/ruby/defines.h: ditto.
- * lib/net/http.rb: Retry HTTP requests for additional network errors.
- Introduce OpenTimeout subclass of Timeout::Error. [Bug #6001]
- * test/net/http/test_http.rb: Reduce timeout to 0.01s for faster test
- * test/net/http/test_https.rb: ditto
+Wed Feb 2 20:25:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Feb 28 11:44:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * include/ruby/encoding.h (rb_enc_step_back): cast 4th argument 'n'
+ as int because Ruby usually treats length value as long but
+ onigenc_step_back's 4th argument is int.
- * configure.in (debugflags): check if -ggdb is accepted.
- [ruby-core:42875][Bug #6080]
+Thu Feb 3 07:20:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Tue Feb 28 10:28:51 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * ext/psych/lib/psych/visitors/to_ruby.rb: use Regexp::NOENCODING
+ rather than magic number.
- * ext/psych/lib/psych.rb: default open YAML files with utf8 external
- encoding. [ruby-core:42967]
- * test/psych/test_tainted.rb: ditto
+ * ext/syck/lib/syck/rubytypes.rb: ditto
-Mon Feb 27 23:46:09 2012 Yukihiro Matsumoto <matz@ruby-lang.org>
+Thu Feb 3 07:16:11 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * parse.y (opt_bv_decl): allow newline at the end. [ruby-dev:45292]
+ * re.c (Init_Regexp): added a constant for ARG_ENCODING_NONE
+ [ruby-core:35054]
-Mon Feb 27 20:43:05 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/ruby/test_regexp.rb: corresponding test.
- * io.c (rb_io_set_pos): add rdoc about textmode.
+Thu Feb 3 07:02:16 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * test/ruby/test_io.rb (TestIO#test_setpos): use binmode.
+ * ext/psych/lib/psych/visitors/to_ruby.rb: ARG_ENCODING_NONE regular
+ expressions can round trip. [ruby-core:34969]
-Mon Feb 27 17:00:15 2012 Akinori MUSHA <knu@iDaemons.org>
+ * test/psych/test_yaml.rb: test for ARG_ENCODING_NONE regex
- * string.c (rb_str_crypt): Update rdoc and state that this
- function is system dependent. Reviewed by nobu, thanks to
- @takai.
+ * ext/sych/lib/syck/rubytypes.rb: ARG_ENCODING_NONE regular
+ expressions can round trip.
-Mon Feb 27 17:03:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/syck/test_yaml.rb: test for ARG_ENCODING_NONE regex
- * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): since methods
- can be overridden, so should not make an assumption on the type
- of results. [ruby-core:42969][Bug #6093]
+Wed Feb 2 17:09:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Feb 27 10:54:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * io.c (rb_io_fdatasync): Use fsync(2) if the underlying
+ operating system does not support fdatasync(2).
- * lib/mkmf.rb (try_cppflags, try_cflags, try_ldflags): replace the
- target flags if the given flag is accepted.
+Wed Feb 2 14:51:08 2011 Eric Hodel <drbrain@segment7.net>
-Mon Feb 27 10:53:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rdoc/markup/to_tt_only.rb: commit miss
+ * test/rdoc/test_rdoc_markup_to_tt_only.rb: ditto
+ * test/rdoc/test_rdoc_single_class.rb: ditto
- * test/rubygems/test_gem_specification.rb (test_self_from_yaml_syck_default_key_bug):
- ignore the test for too old versions.
+Wed Feb 2 09:27:53 2011 Eric Hodel <drbrain@segment7.net>
-Mon Feb 27 10:53:12 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rdoc: Upgrade to RDoc 3.5.1
- * lib/test/unit.rb (Test::Unit::Runner#puke): skips with no
- messages should be trivial.
+Wed Feb 2 00:30:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Feb 27 10:50:23 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * include/ruby/st.h (st_table): Added comment why we need __extension__.
- * io.c, process.c, time.c, ext: use rb_sys_fail_str instead of
- rb_sys_fail.
+Tue Feb 1 20:45:44 2011 Tanaka Akira <akr@fsij.org>
-Mon Feb 27 10:48:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * enc/encdb.c: parenthesize macro arguments.
- * ext/openssl/extconf.rb: suppress useless deprecation warnings
- from OpenSSL added by Apple.
+Tue Feb 1 15:12:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Sun Feb 26 23:29:49 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/ruby/test_require.rb (TestRequire#test_require_with_unc):
+ use ``127.0.0.1'' instead of ``localhost'' as host name, because
+ XP or earlier cannot resolv it as NBT hostname.
- * regparse.c (add_code_range_to_buf0): wrong condition of duplicated
- warnings.
+Tue Feb 1 13:20:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sun Feb 26 11:26:44 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/benchmark/test_benchmark.rb (#capture_bench_output):
+ Added explicit sleep. Windows have imprecise time support.
+ Thus Tms.new.Add!{} may be or may be not equal 0. The
+ test failure started since r30747.
- * compile.c (iseq_compile_each): call on special object instead of
- self. since stabby lambda is a syntax, so it should not be
- affected by the context. [ruby-core:42349][Bug #5966]
+Tue Feb 1 11:03:47 2011 Ryan Davis <ryan@lust.local>
- * insns.def (send): no special deal for FCALL. self should be put
- on TOS instead.
+ * lib/rubygems*: Import rubygems 1.5.0 (released version @ 1fb59d0)
+ * test/rubygems: Ditto
-Sun Feb 26 05:35:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Feb 1 08:01:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * error.c (report_bug): use buf and snprintf to avoid consuming stack.
- [ruby-dev:45272] [Bug #6058]
+ * ext/io/console/console.c (console_set_winsize): new method to set
+ console size. [EXPERIMENTAL]
-Sat Feb 25 17:41:19 2012 Tanaka Akira <akr@fsij.org>
+ * ext/io/console/console.c (console_winsize): use GetWriteFD.
- * ext/dbm/extconf.rb (headers): try ambiguous headers at last.
+Tue Feb 1 02:28:14 2011 Masaya Tarui <tarui@ruby-lnag.org>
-Sat Feb 25 17:07:15 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * include/ruby/win32.h, win32/win32.c: add rb_w32_inet_ntop.
+ inet_ntop's minimum supported client is Vista.
- * lib/fileutils.rb: use chomp(?/) instead of sub to optimize and avoid
- to regexping invalid string.
-
-Sat Feb 25 16:18:24 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * complex.c (nucomp_marshal_load): raise error on invalid data.
- reported by John Firebaugh [ruby-core:42860] [Bug #6076]
-
-Sat Feb 25 14:46:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/dl/dl.c (Init_dl): support intrinsic types, size_t, ptrdiff_t
- and intptr_t. [ruby-core:42460][Feature #5992]
-
- * ext/fiddle/fiddle.c (Init_fiddle): ditto.
+Tue Feb 1 00:10:30 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/dl/lib/dl/cparser.rb (DL::CParser#parse_ctype): ditto.
+ * lib/benchmark.rb: fix benchmark to work with current ruby.
+ patched by Benoit Daloze [ruby-core:33846] [ruby-dev:43143]
+ merged from https://github.com/eregon/ruby/commits/benchmark
-Sat Feb 25 11:08:28 2012 Tanaka Akira <akr@fsij.org>
+ * lib/benchmark (Report#width): update documentation
+ * lib/benchmark: document the return value of #benchmark and the
+ :list attribute in Report
+ * lib/benchmark (Tms#format): rename variables, use String#%
+ instead of Kernel.format
+ * lib/benchmark: remove undocumented Benchmark::times (an alias
+ of Process::times used twice)
+ * lib/benchmark (#benchmark): use label_width for the caption
+ * lib/benchmark (Tms#initialize): rename variables
+ * lib/benchmark: allow title to not be a String and call #to_s
+ * lib/benchmark (Benchmark#bm): return an Array of the times with
+ the labels
+ * lib/benchmark: correct output for Benchmark#bmbm
+ (remove the extra space)
+ * lib/benchmark: add a few tests for Benchmark::Tms output
+ * lib/benchmark: improve style (enumerators, ljust, unused vars)
+ * lib/benchmark: add spec about output and return value
+ * lib/benchmark: improve basic style and consistency
+ no parenthesis for print and use interpolation instead of printf
+ * lib/benchmark: remove unnecessary conversions and variables
+ * lib/benchmark: correct indentation
+ * lib/benchmark: rename the FMTSTR constant and variable to FORMAT
+ * lib/benchmark: remove useless exception
- * ext/curses/curses.c (Init_curses): use rb_define_const once for
- Curses::VERSION.
+ * test/benchmark: remove unused variable warnings
- * ext/dbm/dbm.c (Init_dbm): ditto for DBM::VERSION.
+Mon Jan 31 23:27:23 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Sat Feb 25 10:34:22 2012 Tanaka Akira <akr@fsij.org>
+ * node.c (add_id): remove duplicated rb_id2str() call.
- * ext/curses/curses.c (Init_curses): make Curses::VERSION
- understandable without context.
+Sun Jan 30 17:19:46 2011 Tanaka Akira <akr@fsij.org>
- * ext/dbm/dbm.c (Init_dbm): ditto for DBM::VERSION.
+ * missing/langinfo.c: parenthesize macro arguments.
-Sat Feb 25 07:53:58 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jan 31 21:57:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * parse.y (parser_tokadd_string): insert a backslash only if
- quoted by single quotes. [ruby-dev:45281] [Bug #6069]
+ * configure.in: revert r30698.
-Sat Feb 25 07:53:49 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dir.c (dir_inspect), io.c (rb_io_inspect): keep encoding of path.
- [Bug #6072]
+Mon Jan 31 21:32:44 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Sat Feb 25 07:53:40 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * thread.c (thread_start_func_2): check deadlock condition before
+ release thread stack. fix memory violation when deadlock detected.
+ reported by Max Aller. [Bug #4009] [ruby-core:32982]
- * dir.c (dir_initialize): keep path in original encoding.
+Mon Jan 31 14:45:47 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
- * error.c (syserr_initialize): prefer the encoding of message over
- locale. [ruby-dev:45279][Bug #6071]
+ * lib/irb/locale.rb (IRB::Locale::#search_file):
+ Gem might be undefined if --disable-gems. [ruby-core:34990]
-Sat Feb 25 06:55:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jan 31 12:26:14 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * file.c (utime_internal): fix a variable missed to replace.
- [ruby-core:42864] [Bug #6077]
-
-Fri Feb 24 18:21:55 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * test/zlib/test_zlib.rb (TestZlibGzipReader#test_encoding): Add
- encoding testcases for GzipReader#read. read() emits
- Encoding.default_external in contrast to read(size) emits BINARY.
- See also: http://bugs.jruby.org/6208
-
-Fri Feb 24 17:56:39 2012 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * test/ruby/test_literal.rb (TestRubyLiteral#test_special_const):
- test for https://bugs.php.net/bug.php?id=61095
-
-Fri Feb 24 16:48:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dir.c, file.c, io.c (rb_sys_fail_path): use rb_sys_fail_str.
-
- * error.c: new functions to deal exceptions with string instances.
-
- * dir.c, file.c, io.c: use rb_sys_fail_path.
-
-Fri Feb 24 15:49:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (__builtin_unreachable): check for clang.
- [ruby-core:42849]
-
- * include/ruby/ruby.h (UNREACHABLE): fallback definition.
-
-Fri Feb 24 13:54:33 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/parser.c: prevent a memory leak by protecting calls to
- handler callbacks.
- * test/psych/test_parser.rb: test to demonstrate leak.
-
-Fri Feb 24 12:07:34 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-
- * lib/net/http.rb: Fix documentation. Patched from Florian Mhun
- via http://github.com/ruby/ruby/pull/96
-
-Fri Feb 24 11:48:07 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * addr2line.c: suppressed shorten-64-to-32 warnings.
+ * regcomp.c: ditto.
+ * regexec.c: ditto.
+ * regint.h: ditto.
+ * regparse.c: ditto.
+ * regparse.h: ditto.
+ * time.c: ditto.
+ * variable.c: ditto.
- * string.c (rb_str_prepend): Fix documentation for String#prepend.
- Patched from Franck Verrot via http://github.com/ruby/ruby/pull/98
- and Andrew Horsman via http://github.com/ruby/ruby/pull/55
+Mon Jan 31 04:45:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Fri Feb 24 10:08:33 2012 Eric Hodel <drbrain@segment7.net>
+ * array.c (rb_ary_uniq_bang): call ARY_SET_LEN(ary, 0) before
+ ary_resize_capa because ary_resize_capa expects resized length is
+ smaller than current array length. call rb_ary_unshare before
+ ary_resize_capa because ary_resize_capa lost the reference to
+ original shared array. [ruby-core:34997]
- * lib/net/http.rb (Net::HTTP#transport_request): Fix infinite loop
- upon EOFError or Errno::ECONNRESET where count is reset to 0.
- * test/net/http/test_http.rb (class TestNetHTTPKeepAlive): Test for
- above.
+Sun Jan 30 17:19:46 2011 Tanaka Akira <akr@fsij.org>
-Fri Feb 24 09:05:40 2012 Eric Hodel <drbrain@segment7.net>
+ * missing/crypt.c: parenthesize macro arguments.
- * complex.c (Init_Complex): Document Complex::I. Patch by Sylvain
- Daubert. [Feature #5623]
+Sun Jan 30 16:40:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Feb 24 08:52:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/rubygems/test_gem_security.rb (TestGemSecurity): valid only
+ if OpenSSL is available.
- * parse.y (parser_tokadd_string, parser_yylex): insert a backslash
- if the next character is non-ascii. [ruby-dev:45278] [Bug #6069]
+ * test/dl/test_dl2.rb (TestDL#test_sin): math functions do not
+ work on x86_64 due to the design of DL2.
-Fri Feb 24 08:13:20 2012 Eric Hodel <drbrain@segment7.net>
+ * test/dl/test_func.rb (DL::TestFunc#test_{sinf,sin): ditto.
- * lib/profiler.rb: Add Profiler documentation by Gonzalo Rodriguez.
- [Bug #5816]
+Sun Jan 30 16:09:22 2011 Tanaka Akira <akr@fsij.org>
-Fri Feb 24 08:08:38 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * strftime.c (rb_strftime_with_timespec): %G produces 4 digits.
- * ext/psych/parser.c: set parser encoding based on the YAML input
- rather than user configuration.
- * test/psych/test_encoding.rb: corresponding tests.
- * test/psych/test_parser.rb: ditto
- * test/psych/test_tainted.rb: ditto
+Sun Jan 30 15:13:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Feb 24 08:02:52 2012 Eric Hodel <drbrain@segment7.net>
+ * enc/emacs_mule.c (emacsmule_islead): 7bit range is also leading
+ byte.
- * hash.c (Init_Hash): Add section on how objects are used as Hash keys
- and how to use custom classes as Hash keys.
+Sun Jan 30 13:03:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Feb 24 07:36:11 2012 Eric Hodel <drbrain@segment7.net>
+ * hash.c (rb_hash_fetch_m): use useful message for longer key, not a
+ nonsense id value.
- * object.c (rb_obj_eql): Improve equality documentation by adding an
- example of equal? vs == and recommending eql? be aliased to == when
- overridden.
+ * string.c (rb_str_ellipsize): new function to ellipsize a string.
-Fri Feb 24 07:21:15 2012 Eric Hodel <drbrain@segment7.net>
+ * include/ruby/encoding.h (rb_enc_step_back): new function to step
+ back n characters.
- * object.c (rb_obj_hash): Added note that the hash value is not
- deterministic on Marc-Andre's suggestion. Expanded description of
- the purpose of the hash method. [Bug #6068]
+Sun Jan 30 12:53:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Feb 23 23:01:21 2012 Tanaka Akira <akr@fsij.org>
+ * enc/emacs_mule.c (emacsmule_islead): fix inverse condition.
- * ext/dbm/extconf.rb: unused macro removed.
+Sun Jan 30 09:37:25 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
-Thu Feb 23 22:26:53 2012 Tanaka Akira <akr@fsij.org>
+ * io.c (struct argf): char behaves like an unsigned char
+ by default on AIX.
- * test/test_curses.rb: new file.
+Sun Jan 30 08:02:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Feb 23 19:57:56 2012 Tanaka Akira <akr@fsij.org>
+ * configure.in: Mac OS X wrongly reports it has fdatasync(3).
- * ext/curses/rain.rb: trap SIGHUP, SIGINT, SIGQUIT and SIGTERM only.
+Sun Jan 30 03:29:47 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Feb 23 19:56:48 2012 Tanaka Akira <akr@fsij.org>
+ * ext/openssl/ossl_bn.c (GetBNPtr): add missing nil case.
+ patched by Martin Bosslet. [ruby-core:34987]
- * signal.c (sig_trap): show signal name on error.
+Sun Jan 30 01:02:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Thu Feb 23 12:21:48 2012 Tanaka Akira <akr@fsij.org>
+ * include/ruby/ruby.h: Added NUM2MODET() and MODET2NUM() default
+ definition.
+ Because r30686 introduced win32 build failure.
- * ext/dbm/extconf.rb: use DBM_SUFFIX only to detect header of
- Berkeley DB.
+Sat Jan 29 22:16:26 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Feb 23 10:00:18 2012 Eric Hodel <drbrain@segment7.net>
+ * array.c (rb_ary_join): [].join.encoding must be US-ASCII.
+ [ruby-list:47790]
- * io.c (rb_io_f_sync): Fix double-negative typo. [ruby-trunk - #5837]
+Sat Jan 29 20:22:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Thu Feb 23 09:57:21 2012 Eric Hodel <drbrain@segment7.net>
+ * benchmark/driver.rb (BenchmarkDriver#measure): Show command line
+ when abnormal exiting occur.
- * load.c (rb_f_require): Add note to require for scope of items in the
- loaded file. [ruby-trunk - #5910]
+Sat Jan 29 10:53:16 2011 Yusuke Endoh <mame@tsg.ne.jp>
-Thu Feb 23 03:58:08 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * vm_insnhelper.c (vm_get_ev_const): no-scope reference to toplevel
+ private constant has been prohibited incorrectly.
- * lib/ostruct.rb (delete_field): Bug fix so previous value is
- returned. Patch by Nick Recobra [Bug #6063]
+ * test/ruby/test_module.rb (test_toplevel_private_constant): add a
+ test for above.
-Thu Feb 23 02:33:00 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Jan 29 08:43:23 2011 Ryan Davis <ryand-ruby@zenspider.com>
- * io.c (rb_io_extract_modeenc): fail only if conflicting
- text/binary modes given explicitly. [ruby-dev:45268][Bug #6055]
+ * lib/rubygems*: Import rubygems 1.5.0 (release candidate @ 09893d9)
+ * test/rubygems: Ditto
-Wed Feb 22 23:27:08 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Jan 29 02:02:37 2011 Yusuke Endoh <mame@tsg.ne.jp>
- * test/iconv/test_option.rb: enabled. [ruby-core:42802][Bug #6061]
+ * variable.c (rb_mod_const_of, sv_i): Module#constant should exclude
+ private constants. see [ruby-core:32912].
-Wed Feb 22 21:45:56 2012 Tanaka Akira <akr@fsij.org>
+ * test/ruby/test_module.rb (test_constants_with_private_constant): add
+ a test for above.
- * ext/curses/curses.c: use defined() to suppress a warning.
+Sat Jan 29 01:36:41 2011 Yusuke Endoh <mame@tsg.ne.jp>
-Wed Feb 22 21:44:29 2012 Tanaka Akira <akr@fsij.org>
+ * variable.c (rb_const_set): const_set should preserve constant
+ visibility. see [ruby-core:32912].
- * ext/curses/extconf.rb: refactored.
+ * test/ruby/test_module.rb: add a test for above.
-Wed Feb 22 20:42:28 2012 Tanaka Akira <akr@fsij.org>
+Sat Jan 29 01:24:57 2011 Yusuke Endoh <mame@tsg.ne.jp>
- * ext/curses/extconf.rb: try to distinguish curses_version is a
- function or variable.
+ * compile.c (NODE_CLASS, NODE_MODULE), insns.def (defineclass): raise
+ an exception when "class Foo::Bar" is evaluated and Foo::Bar is
+ private. To implement this, define_type of "defineclass" is added
+ so that the instruction can distinguish whether the class definition
+ is scoped (class Foo::Bar) or not (class Bar).
- * ext/curses/curses.c (Init_curses): refine Curses::VERSION.
+ * test/ruby/test_class.rb (test_redefine_private_class),
+ test/ruby/test_module.rb
+ (test_define_module_under_private_constant): add tests for above.
-Wed Feb 22 19:47:03 2012 Tanaka Akira <akr@fsij.org>
+Sat Jan 29 01:19:17 2011 Yusuke Endoh <mame@tsg.ne.jp>
- * ext/curses/extconf.rb: show the chosen header and library.
+ * constant.h, variable.c: to ensure compatibility, rb_const_get_* must
+ not raise an exception even when the constant is private. Instead,
+ rb_public_const_get_* and rb_public_const_defined_* are introduced,
+ which raise an exception when the referring constant is private.
+ see [ruby-core:32912].
-Wed Feb 22 19:22:31 2012 Tadayoshi Funaba <tadf@dotrb.org>
+ * vm_insnhelper.c (vm_get_ev_const): use rb_public_const_get_* instead
+ of rb_const_get_* to follow the constant visibility when user code
+ refers a constant.
- * reverted 34739 for test/date.
+ * test/ruby/test_marshal.rb (test_marshal_private_class): add a test.
+ This test had failed because of incompatibility of rb_const_get.
-Wed Feb 22 19:08:55 2012 Tanaka Akira <akr@fsij.org>
+Sat Jan 29 00:30:44 2011 Yusuke Endoh <mame@tsg.ne.jp>
- * ext/curses/extconf.rb: refactored.
+ * variable.c (set_const_visibility): fix typo. a patch from Tomoyuki
+ Chikanaga in [ruby-core:32919].
-Wed Feb 22 18:44:41 2012 Shota Fukumori <sorah@tubusu.net>
+Fri Jan 28 23:20:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/test/unit.rb (setup_options): add option "--retry" as opposite
- for "--no-retry"
+ * test/gdbm/test_gdbm.rb (TestGDBM#test_s_open_no_create,
+ TestGDBM2#test_writer_open_notexist): We only need to skip libgdbm
+ 1.8.0, not all 1.8.x. 1.8.1 or later don't have GDBM_WRITER sickness.
-Wed Feb 22 18:34:02 2012 Shota Fukumori <sorah@tubusu.net>
+Fri Jan 28 21:56:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/test/unit.rb (setup_options): add option "--show-skip" to
- cancel "--hide-skip" (-q)
+ * ext/dbm/extconf.rb: Added new header places for Fedora13.
-Wed Feb 22 17:36:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jan 28 21:49:30 2011 Tanaka Akira <akr@fsij.org>
- * io.c (rb_io_s_foreach): argument check before making Enumerator.
- [ruby-dev:31525]
+ * ext/zlib/zlib.c: parenthesize macro arguments.
-Wed Feb 22 17:07:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jan 28 17:47:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * io.c (rb_io_s_foreach): return enumerator including keyword
- arguments. [ruby-dev:45267][Bug #6054]
+ * test/gdbm/test_gdbm.rb (TestGDBM2#test_writer_open_notexist):
+ gdbm 1.8.x changed GDBM::WRITER behavior. Thus our testcase need
+ to be changed too.
-Wed Feb 22 12:15:16 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Jan 28 17:33:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * configure.in: allow llvm-gcc because it work fine with r34278.
+ * test/gdbm/test_gdbm.rb (TestGDBM#test_s_open_no_create): skip
+ the test if gdbm version is 1.8.x.
-Wed Feb 22 10:57:08 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Jan 28 16:30:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * regparse.c (fetch_token): don't use // comment.
+ * test/ruby/test_require.rb (TestRequire#test_require_too_long_filename):
+ Added -w option because too long path error don't output a message
+ by default since r30660. [Bug #4336] [ruby-dev:43134]
-Wed Feb 22 10:32:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jan 28 16:19:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/mkmf/test_framework.rb: try CoreFoundation framework, than
- Cocoa which is dependent on QuickTime SDK which has separated
- since Xcode 4.3.
+ * test/ruby/test_require.rb (TestRequire#test_require_path_home_{1,2}):
+ Added -w option because too long path error don't output a message
+ by default since r30660. [Bug #4336] [ruby-dev:43134]
-Wed Feb 22 10:18:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jan 28 16:04:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * common.mk (test-all, test-ruby): more dependencies.
+ * test/ruby/test_require.rb (TestRequire#test_require_path_home_{1,2,3}):
+ split from test_require_path_home.
-Wed Feb 22 06:48:55 2012 Eric Hodel <drbrain@segment7.net>
+Fri Jan 28 13:04:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * file.c (rb_f_test): Fix formatting of Kernel#test rdoc.
+ * configure.in (--with-valgrind): Fixed r29683. Now this option
+ is really default on.
-Wed Feb 22 06:12:15 2012 Tanaka Akira <akr@fsij.org>
+Fri Jan 28 12:05:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/dbm/extconf.rb: check DBM_SUFFIX for Mac OS X.
- Its ndbm.h doesn't include db.h.
+ * configure.in: Add #include<sys/stat.h> when struct stat is
+ tested. Otherwise, incomplete type dereference error will occur.
-Wed Feb 22 06:02:42 2012 Tanaka Akira <akr@fsij.org>
+Fri Jan 28 11:53:19 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/dbm/dbm.c (fdbm_initialize): disable Berkeley DB error messages.
+ * configure.in: redundant variable names made strange conftest
+ error. Fixed it.
- * ext/dbm/extconf.rb: check DBC type for above.
+Fri Jan 28 11:47:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- [ruby-dev:45269]
+ * test/ruby/test_process.rb (TestProcess#test_too_long_path{,2}):
+ should handle Errno::E2BIG, because this test checks crash of ruby,
+ not the error type system.
-Tue Feb 21 20:23:47 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Jan 28 11:23:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * hash.c (rb_any_hash): treat Qundef like as other special constants.
+ * io.c (rb_io_open): Use NUM2MODET() instead NUM2UINT().
+ * io.c (rb_scan_open_args): ditto.
- * hash.c (hash_foreach_iter): fix signature.
+Fri Jan 28 10:58:20 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Feb 21 19:39:34 2012 Tanaka Akira <akr@fsij.org>
+ * configure.in: Added mode_t type checking.
+ * process.c (rb_exec_arg_addopt): Use NUM2MODET() instead
+ NUM2LONG because clang makes compile error by this narrowing
+ conversion.
+ * process.c (rb_run_exec_options_err): ditto.
- * ext/curses/curses.c (Init_curses): use curses_version() for
- Curses::VERSION.
+Fri Jan 28 02:37:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Feb 21 18:21:25 2012 Narihiro Nakamura <authornari@gmail.com>
+ * re.c (rb_reg_raise): add GC guard to prevent intermediate
+ variable from GC.
- * gc.c : remove gc_clear_mark_on_sweep_slots() and use
- rest_sweep() instead of it, because some dead objects might be
- marked in next the mark phase by false pointers.
- [ruby-core:42672]
+Fri Jan 28 02:35:41 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Feb 21 16:08:17 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * hash.c (rb_hash_fetch_m): add GC guard to prevent intermediate
+ variable from GC.
- * proc.c (rb_hash_proc): get wrapped pointer properly. [Bug #6048]
+Fri Jan 28 01:33:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Feb 21 14:41:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_process.rb (TestProcess#test_too_long_path)
+ TestProcess#test_too_long_path): Reduced string size from 100MB
+ to 10MB. 100MB may cause no memory error. It isn't intended.
- * template/ruby.pc.in: added rubylibprefix, {rubylib,vendor,site}dir
- and {ruby,vendor,site}archdir. [ruby-core:42766][Feature #6052]
+Fri Jan 28 01:27:42 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Feb 21 09:13:25 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * test/ruby/test_process.rb (TestProcess#test_too_long_path2):
+ Factored out from test_too_long_path. A test should only do
+ one test.
- * proc.c (method_hash, proc_hash): Fix {Unbound}Method#hash
- [Bug #6048]. Isolate hash computation for proc
+Thu Jan 27 23:29:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * internal.h: Declaration for above
+ * st.c (st_foreach): check if unpacked.
- * vm_method.c (rb_method_definition_hash): Computation for
- hash part of a method definition
+Thu Jan 27 23:14:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * method.h: Declaration for above
+ * misc/ruby-mode.el (ruby-mode-map): remove deprecated binding.
+ use M-; instead.
- * test/ruby/test_method.rb: Test for above
+Thu Jan 27 21:58:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Tue Feb 21 02:56:15 2012 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * bignum.c (rb_str_to_inum): get rid of too huge alloca().
- * enumerator.c (enumerator_rewind): update the documentation.
- fixed: #6053
+Thu Jan 27 21:43:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Feb 20 23:38:35 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * object.c (rb_str_to_dbl): rewrite again. use ALLOCV instead
+ rb_str_tmp_new().
- * enc/depend: ignore mktable.c because it's not encoding library.
- [ruby-core:42760] [Bug #6049]
+Thu Jan 27 21:41:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Feb 20 21:40:53 2012 Tanaka Akira <akr@fsij.org>
+ * win32/win32.c: get rid of STRNDUPA(). It's dangerous API.
- * ext/curses/extconf.rb: fold too long lines.
+Thu Jan 27 21:31:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Feb 20 21:16:48 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+ * win32/win32.c (rb_w32_aspawn): get rid of too huge alloca().
+ [Bug #4330] [ruby-core:34898]
- * lib/fileutils.rb: revert a line modified accidentally at r34669.
- This fixes mingw test errors in TestDir_M17N.
- [ruby-core:42728] [Feature #4970]
+Thu Jan 27 20:30:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Feb 20 21:09:27 2012 Tanaka Akira <akr@fsij.org>
+ * win32/win32.c (rb_w32_spawn): get rid of too huge alloca().
- * ext/curses/curses.c (Init_curses): define Curses::VERSION.
+Thu Jan 27 18:49:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Feb 20 21:08:00 2012 Tanaka Akira <akr@fsij.org>
+ * win32/win32.c (open_dir_handle): get rid of too huge alloca().
- * ext/curses/extconf.rb: restore $libs and $defs for each
- header/library choice.
+Thu Jan 27 18:34:58 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Feb 20 19:57:26 2012 Tanaka Akira <akr@fsij.org>
+ * file.c (w32_io_info): get rid of too huge alloca().
+ [Bug #4313] [ruby-core:34830]
- * ext/dbm/extconf.rb: weaken header/library consistency check if db is
- "ndbm". It seems several (possibly historical) distributions
- provide libndbm. However the content of libndbm vary: Berkeley DB,
- GDBM or even 4.3BSD NDBM. (Mandriva, Tru64 UNIX, OpenSuSE,
- SCO OpenServer, ...)
- "ndbm" is not searched automatically now (dblib doesn't contain it)
- but configure --with-dbm-type=ndbm choose libndbm and ndbm.h.
+Thu Jan 27 18:19:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Feb 20 19:15:57 2012 Tanaka Akira <akr@fsij.org>
+ * win32/win32.c (wstati64): get rid of too huge alloca().
+ [Bug #4316] [ruby-core:34834]
- * ext/dbm/extconf.rb: refine variable names.
+Thu Jan 27 15:11:52 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Mon Feb 20 15:50:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): get rid of too huge
+ alloca(). this is the real fix of [ruby-core:34833].
- * configure.in: check if -fstack-protector is really available.
+Thu Jan 27 12:46:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Feb 19 23:43:38 2012 Tanaka Akira <akr@fsij.org>
+ * process.c (ALLOC_ARGV_WITH_STR): fix void pointer arithmetic.
- * ext/dbm/extconf.rb: show header and library found.
+Thu Jan 27 08:41:40 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Feb 19 23:01:01 2012 Tanaka Akira <akr@fsij.org>
+ * process.c (proc_exec_v, rb_proc_exec_n, rb_proc_exec)
+ (proc_spawn_n, proc_spawn): get rid of too huge alloca().
+ [ruby-core:34827], [ruby-core:34833]
- * ext/dbm/dbm.c (Init_dbm): refine DBM::VERSION definition.
+Thu Jan 27 08:32:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/dbm/extconf.rb: provide RUBYDBM_GDBM_HEADER macro.
+ * include/ruby/ruby.h (ALLOCV): new API for exception-safe
+ temporary buffer. [ruby-core:34844]
-Sun Feb 19 17:07:27 2012 Tanaka Akira <akr@fsij.org>
+ * string.c (rb_alloc_tmp_buffer, rb_free_tmp_buffer):
+ implementation of the API.
- * test/dbm/test_dbm.rb (test_dbmfile_suffix): check pag and dir is
- empty for 4.3BSD ndbm.
+Thu Jan 27 08:22:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Feb 19 03:00:30 2012 Tanaka Akira <akr@fsij.org>
+ * dln_find.c (dln_find_1): use rb_warning and return immediately
+ if fname is longer than buffer.
- * test/dbm/test_dbm.rb (test_dbmfile_suffix): check magic numbers.
+Wed Jan 26 22:57:30 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Sun Feb 19 01:05:41 2012 Tanaka Akira <akr@fsij.org>
+ * class.c (clone_method): add GC guard to prevent intermediate
+ variable from GC. [Bug #4321] [ruby-dev:43107]
- * ext/dbm/extconf.rb: detect GDBM's ndbm.h by testing dbm_clearerr is
- an empty macro.
+Wed Jan 26 22:45:16 2011 Tanaka Akira <akr@fsij.org>
-Sun Feb 19 00:25:55 2012 Tanaka Akira <akr@fsij.org>
+ * template/id.h.tmpl: parenthesize macro arguments.
- * ext/dbm/extconf.rb: don't choose 'dbm' if _GDB_H_ is defined which
- is available since GDBM 1.9 because 'gdbm_compat' is appropriate
- choice since GDBM 1.8.1.
+Wed Jan 26 22:28:49 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-Sat Feb 18 23:27:00 2012 Kenta Murata <mrkn@mrkn.jp>
+ * vm_eval.c (rb_throw_obj): add GC guard to prevent intermediate
+ variable from GC. [Bug #4322] [ruby-dev:43108]
- * random.c: remove a duplicated comment.
+Wed Jan 26 17:08:59 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-Sat Feb 18 18:43:13 2012 Tanaka Akira <akr@fsij.org>
+ * ext/openssl/ossl_asn1.c (ossl_asn1_decode0): OpenSSL::ASN1.decode
+ should reject indefinite length primitive encodings as that is
+ illegal. Patch by Martin Bosslet. See #4324.
- * ext/dbm/extconf.rb (dblib): prefer recent GDBM over older GDBM.
- (have_declared_libvar): new function to check a declared variable
- exists in a library.
- (have_undeclared_libvar): renamed from renamed from have_libvar.
- (headers.db_check2): check that GDBM version variable if GDBM header
- is chosen.
+Wed Jan 26 10:36:28 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/dbm/dbm.c (Init_dbm): use HAVE_DECLARED_LIBVAR_GDBM_VERSION and
- HAVE_UNDECLARED_LIBVAR_GDBM_VERSION macro.
+ * string.c (=~): documentation fix; the return value is nil when
+ it doesn't match. patched by Andrei Kulakov [ruby-core:34562]
-Sat Feb 18 13:53:01 2012 Tanaka Akira <akr@fsij.org>
+Tue Jan 25 08:41:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/dbm/test_dbm.rb (test_dbmfile_suffix): DBM::VERSION should
- be Berkeley DB if foo.db is created by DBM.open.
+ * dln_find.c (dln_find_1): omit too long pathnames.
-Sat Feb 18 13:40:37 2012 Tanaka Akira <akr@fsij.org>
+Tue Jan 25 08:28:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/dbm/test_dbm.rb (test_dbmfile_suffix): test dbm file suffix.
+ * string.c (rb_str_resize): get rid of out-of-bound access.
-Sat Feb 18 12:50:59 2012 Tanaka Akira <akr@fsij.org>
+Tue Jan 25 07:48:22 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * ext/dbm/dbm.c (DBM::VERSION): define it by detecting _GDBM_H_ or
- _DBM_IOERR.
+ * test/ruby/test_thread.rb: remove unused variables.
-Sat Feb 18 07:52:45 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Jan 25 07:45:44 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * tool/enc-unicode.rb: don't use 1.9 feature on tools.
+ * test/ruby/test_thread.rb (TestThread#test_condvar_nolock_2): get
+ rid of method redefined.
-Sat Feb 18 02:48:39 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+Tue Jan 25 07:00:52 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/fileutils.rb: refactored FileUtil methods to use the
- `define_command` API. Patch from 7rans <transfire@gmail.com>
- * test/fileutils/test_dryrun.rb: corresponding test refactoring
- * test/fileutils/test_nowrite.rb: ditto
- * test/fileutils/test_verbose.rb: ditto
+ * string.c (rb_string_value_cstr): rb_str_modify can change
+ RSTRING_PTR.
-Fri Feb 17 21:39:36 2012 Tanaka Akira <akr@fsij.org>
+Tue Jan 25 03:24:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/dbm/extconf.rb: remove dbm.
+ * test/ruby/test_thread.rb: Added various ConditionVariable tests.
-Fri Feb 17 21:18:39 2012 Tanaka Akira <akr@fsij.org>
+Mon Jan 24 22:26:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/dbm/extconf.rb: refine header/library mismatch detection.
- check only for ndbm.h except libc. check _GDBM_H_ for gdbm.
- check _DBM_IOERR for the original ndbm.
+ * object.c (rb_str_to_dbl): Fix again. use rb_str_tmp_new()
+ instead ALLOC_N.
-Fri Feb 17 20:30:44 2012 Tanaka Akira <akr@fsij.org>
+Mon Jan 24 21:50:48 2011 Tanaka Akira <akr@fsij.org>
- * ext/dbm/extconf.rb: don't check libdbm. It is not a ndbm
- implementation. (libdbm in Version 7 Unix is database library
- for single database per process.)
+ * vm_insnhelper.h: parenthesize macro arguments.
-Fri Feb 17 15:38:53 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Jan 24 21:28:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * Merge Onigmo-5.13.1. [ruby-dev:45057] [Feature #5820]
- https://github.com/k-takata/Onigmo
- cp reg{comp,enc,error,exec,parse,syntax}.c reg{enc,int,parse}.h
- cp oniguruma.h
- cp tool/enc-unicode.rb
- cp -r enc/
+ * object.c (rb_str_to_dbl): use ALLOC_N instead ALLOCA_N because
+ ALLOC_N may cause stack overflow.
-Fri Feb 17 15:20:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Jan 24 21:04:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * enum.c (enum_each_slice): arrays to be yielded can be newly
- created in the block.
+ * error.c (rb_invalid_str): prevent intermediate variable from GC.
+ [ruby-core:34820]
- * enum.c: move work variables to objects not to let called blocks
- access stack area out of scope. [Bug #5801]
+Sun Jan 23 23:01:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Fri Feb 17 12:35:55 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/io/console/test_io_console.rb: Don't run test if the system
+ don't support io/console.
- * tool/merger.rb: remove borders from the commit message which is used
- when the commit doesn't change ChangeLog.
+Sun Jan 23 22:17:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Fri Feb 17 11:50:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/fiddle/test_fiddle.rb: Don't run test if the system don't support
+ fiddle.
- * common.mk (btest, btest-ruby, test-sample test-knownbugs)
- (test-all, test-ruby): depend on prog.
+ * test/fiddle/test_function.rb: ditto.
+ * test/fiddle/test_closure.rb: ditto.
-Fri Feb 17 09:56:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Jan 23 11:39:18 2011 Tanaka Akira <akr@fsij.org>
- * lib/mkmf.rb (create_header): log the content of header.
+ * vm_exec.h: parenthesize macro arguments.
-Fri Feb 17 09:44:55 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sun Jan 23 10:33:02 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * tool/transcode-tblgen.rb (import_ucm): don't use \h because the
- script should work with ruby 1.8.
+ * template/fake.rb.in (ruby): suppress warnings.
- * tool/enc-unicode.rb: ditto.
+Sun Jan 23 08:00:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Feb 17 07:33:29 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * string.c (str_nth_len, str_utf8_nth): return the rest length together.
- * enum.c (id_lshift): use constant ID.
+ * string.c (rb_str_substr): get rid of measure the length always
+ to improve performance for huge string. [ruby-core:34648]
-Fri Feb 17 07:30:53 2012 Tanaka Akira <akr@fsij.org>
+Sun Jan 23 00:40:10 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/dbm/extconf.rb: refactored to split too long conditions.
+ * test/test_syslog.rb: Fix to make a lot of test failure if
+ the platform doesn't support syslog.
-Fri Feb 17 00:23:25 2012 Tanaka Akira <akr@fsij.org>
+Sat Jan 22 11:49:55 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * test/dbm/test_dbm.rb: fix skip condition for libgdbm 1.8.0 or prior.
- reported by Bohuslav Kabrda.
- [ruby-core:42685] [ruby-trunk - Bug #6036]
+ * ext/psych/lib/psych/visitors/to_ruby.rb: fixing merge key support
+ when multiple merge keys are specified.
-Fri Feb 17 00:04:21 2012 Tanaka Akira <akr@fsij.org>
+ * test/psych/test_merge_keys.rb: tests for multi-merge key support
- * ext/dbm/extconf.rb: check _DB_H_ macro unavailable except
- Berkeley DB library.
+Sat Jan 22 11:33:04 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Thu Feb 16 05:41:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/psych/lib/psych/visitors/to_ruby.rb: merge keys are actually
+ part of YAML 1.1, so they should be supported. Remove warning and
+ merge keys to parent. [ruby-core:34679]
- * insns.def (splatarray): make new array if flag is set.
+ * test/psych/test_merge_keys.rb: test for merge keys
- * compile.c (iseq_compile_each): make new array with
- splat. [ruby-core:21901][Feature #1125]
+Sat Jan 22 10:25:19 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Thu Feb 16 00:14:04 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * ext/psych/parser.c (parse): add the file name to the exception when
+ parse errors occur.
- * lib/abbrev.rb (Array#abbrev): add missing '"' in documentation.
+ * test/psych/test_parser.rb: test for parse error file name
-Wed Feb 15 22:20:19 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Sat Jan 22 10:12:30 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * cont.c (rb_fiber_reset_root_local_storage): add a new function to
- restore rb_thread_t::local_storage.
+ * ext/psych/parser.c (parse): fix assertion error when reusing a
+ parser after an exception has been raised
- * cont.c (rb_obj_is_fiber): add a new function to tell finalizer to
- prevent fibers from destroy.
+ * test/psych/test_parser.rb: test for assertion error
- * gc.c (rb_objspace_call_finalizer): don't sweep fibers at finalizing
- objspace.
+Sat Jan 22 04:09:22 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * internal.h (rb_fiber_reset_root_local_storage, rb_obj_is_fiber):
- add prototypes.
+ * ext/psych/lib/psych/nodes/node.rb: Make Psych::Nodes::Node
+ enumerable.
- * vm.c (ruby_vm_destruct): reset main thread's local_storage before
- free main thread. rb_thread_t::local_storage is replaced by fiber's
- local storage when forked from fiber, and it should be already freed
- when the fiber was destroyed. [ruby-core:41456] [Bug #5700]
+ * ext/psych/lib/psych/visitors/depth_first.rb: Add a depth-first
+ visitor to enumerate over a YAML AST in a depth-first fashion
- * test/ruby/test_fiber.rb (test_fork_from_fiber): add test for fork
- from fiber.
+ * test/psych/nodes/test_enumerable.rb: test for enumerating nodes
-Wed Feb 15 19:57:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/psych/visitors/test_depth_first.rb: test for depth-first
+ visitor
- * ext/fiddle/closure.c (callback): deal with unsigned integers.
- [ruby-core:42458][Bug #5991][Bug #6022]
+Sat Jan 22 00:53:42 2011 Tanaka Akira <akr@fsij.org>
- * ext/fiddle/conversions.c (value_to_generic, generic_to_value):
- ditto.
+ * vm_core.h: parenthesize macro arguments.
- * ext/fiddle/closure.c (callback): same as r34506.
+Fri Jan 21 18:15:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Feb 15 17:41:31 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * configure.in: should not use -Werror=* flags while conftests.
- * io.c (io_strsetbuf): call rb_str_modify to make str independent
- before calling rb_str_set_len for r34580.
+Fri Jan 21 09:17:00 2011 Luis Lavena <luislavena@gmail.com>
-Wed Feb 15 12:30:10 2012 Eric Hodel <drbrain@segment7.net>
+ * configure.in: Fix incorrectly detected x86_64-w64-mingw32 due
+ canonalization of target_os. Bug #3889 [ruby-core:32634]
- * ext/zlib/zlib.c (Init_zlib): Added Zlib::TEXT and note that
- Zlib::ASCII is deprecated in zlib 1.2.3 and newer.
+Thu Jan 20 23:44:00 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Feb 15 12:24:40 2012 Eric Hodel <drbrain@segment7.net>
+ * configure.in: Fix rb_cv_va_args_macro was broken. We are using
+ -Werror=implicit-function-declaration compile option. therefore
+ we need a function declaration explicitly.
- * ext/zlib/zlib.c: Move constant descriptions to constants. Remove
- extra comment block at the top of Init_zlib().
+Thu Jan 20 23:58:02 2011 Tanaka Akira <akr@fsij.org>
-Wed Feb 15 12:30:46 2012 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * node.h: parenthesize macro arguments.
- * lib/ostruct.rb: Create getters and setters after dup.
- [Bug #6028] [rubyspecs:0380bcc]
+Thu Jan 20 23:25:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Feb 15 10:59:52 2012 Narihiro Nakamura <authornari@gmail.com>
+ * configure.in: Add '#include <stdlib.h>' to
+ rb_cv_localtime_overflow test too. It's reported by Tomoyuki
+ Chikanaga. Thanks.
- * gc.c (HEAP_BITMAP_LIMIT): HEAP_BITMAP_LIMIT is computed on the
- basis of HEAP_SIZE because it must covers a whole heap block.
- [ruby-trunk - Bug #6006]
+Thu Jan 20 16:11:00 2011 Kenta Murata <mrkn@mrkn.jp>
-Wed Feb 15 09:27:45 2012 Eric Hodel <drbrain@segment7.net>
+ * README.EXT, README.EXT.ja: You shouldn't choose ``conftest.c'' as a
+ name of a source file.
- * ext/zlib/zlib.c (Init_zlib): Added Zlib::FIXED and Zlib::RLE
- strategies.
- * NEWS: Add note about the new Zlib constants.
+Thu Jan 20 12:15:44 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Wed Feb 15 09:11:36 2012 Eric Hodel <drbrain@segment7.net>
+ * configure.in: Add stdlib.h inclusion into rb_cv_negative_time_t
+ test because it's required for exit(3). The patch is
+ created by Tomoyuki Chikanaga. [Bug #4287] [ruby-dev:43060]
- * ext/zlib/zlib.c: Improve documentation. [ruby-trunk - Bug #5948]
+Thu Jan 20 11:39:41 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Wed Feb 15 07:28:54 2012 Eric Hodel <drbrain@segment7.net>
+ * test/webrick/utils.rb (TestWEBrick::RubyBin): test CGI does not need
+ to load rubygems. if it activated, ruby raises LoadError about
+ rbconfig.rb.
- * encoding.c (Init_Encoding): Add IO example of internal and external
- encoding. Fixed a typo in the force_encoding example. [#5949]
+Thu Jan 20 09:19:42 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Wed Feb 15 06:58:21 2012 Eric Hodel <drbrain@segment7.net>
+ * ext/psych/lib/psych/visitors/json_tree.rb: Fix JSON emit for
+ DateTime and Time classes.
- * encoding.c (Init_Encoding): Add Encoding documentation.
- [ruby-trunk - Bug #5949]
- * encoding.c (rb_set_default_external): Fix typo in documentation.
+ * test/psych/test_json_tree.rb: test for JSON emit
-Tue Feb 14 20:22:11 2012 Narihiro Nakamura <authornari@gmail.com>
+Thu Jan 20 08:02:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * gc.c (CEILDIV): rename to a appropriate name.
+ * ext/psych/lib/psych/coder.rb (represent_object): arbitrary objects
+ may be passed to the Psych::Coder object.
-Tue Feb 14 18:07:20 2012 Narihiro Nakamura <authornari@gmail.com>
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: support for visiting
+ arbitrary objects set on the coder.
- * gc.c (assign_heap_slot): SEGV happens cause on 64-bit platform
- sometime there should be `objs-=2` instead of `objs--`.
- [Bug #6006]
- patched by Sokolov Yura. https://github.com/ruby/ruby/pull/92
+ * test/psych/test_coder.rb: supporting test case.
-Tue Feb 14 16:00:30 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Jan 20 06:03:17 2011 Tanaka Akira <akr@fsij.org>
- * io.c (io_setstrbuf): cut down the buffer if longer.
+ * method.h: parenthesize macro arguments.
-Tue Feb 14 15:06:37 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Jan 19 13:16:05 2011 Eric Hodel <drbrain@segment7.net>
- * lib/test/unit/assertions.rb (build_message): skip escaped
- question marks.
+ * lib/rubygems/commands/sources_command.rb: Finish removing code,
+ (fixes sources command test).
-Tue Feb 14 12:10:04 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Jan 19 13:04:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * variable.c (autoload_const_set, autoload_require): fix
- signatures.
+ * proc.c (proc_call): Add gc guard to avoid segfault. The fix
+ is created by Tomoyuki Chikanaga. [Bug #4238][ruby-dev:42963]
-Tue Feb 14 05:23:40 2012 Eric Hodel <drbrain@segment7.net>
+Wed Jan 19 12:31:28 2011 Eric Hodel <drbrain@segment7.net>
- * process.c (proc_wait): Change typo "SystemError" to
- "SystemCallError". [ruby-trunk - Bug #5962]
- * process.c (proc_wait2): ditto
+ * lib/rubygems.rb: Since gem_prelude requires rubygems, enable
+ custom_require always.
-Tue Feb 14 05:18:24 2012 Eric Hodel <drbrain@segment7.net>
+Wed Jan 19 12:08:08 2011 Eric Hodel <drbrain@segment7.net>
- * enumerator.c: Document use of Enumerator.new for creating a lazy
- enumeration for filtering/chaining. [ruby-trunk - Feature #707]
+ * lib/rubygems/commands/dependency_command.rb: Remove require of
+ deleted file.
+ * lib/rubygems/commands/fetch_command.rb: ditto
+ * lib/rubygems/commands/setup_command.rb: ditto
+ * lib/rubygems/commands/sources_command.rb: ditto
+ * lib/rubygems/commands/specification_command.rb: ditto
-Mon Feb 13 23:01:50 2012 Akinori MUSHA <knu@iDaemons.org>
+Wed Jan 19 08:13:59 2011 Ryan Davis <ryand-ruby@zenspider.com>
- * vm_method.c (rb_method_boundp):
- obj.respond_to?(:a_protected_method) should return false because
- calling a protected method may cause NoMethodError if called
- from outside the class inheritance tree. Kernel#respond_to? is
- mostly used to test if it is safe to call a method, so the false
- positive should be avoided. [ruby-dev:40461] [ruby-dev:41739]
- [ruby-dev:41837]
+ * lib/rubygems*: Import rubygems 1.5.0 (release candidate)
+ * test/rubygems: Ditto
-Mon Feb 13 21:52:06 2012 Narihiro Nakamura <authornari@gmail.com>
+Tue Jan 18 23:31:01 2011 Yusuke Endoh <mame@tsg.ne.jp>
- * gc.c (HEAP_OBJ_LIMIT, HEAP_BITMAP_LIMIT): HEAP_OBJ_LIMIT used
- `sizeof(struct heaps_slot)` while heap is currently allocated
- with `struct heaps_header`.
- HEAP_BITMAP_LIMIT were calculated from
- `HEAP_OBJ_LIMIT/sizeof(uintptr_t)` - one Byte for each object,
- not one Bit. [Bug #6006]
- patched by Sokolov Yura. https://github.com/ruby/ruby/pull/92
+ * parse.y: avoid NULL reference. [ruby-dev:43067]
-Mon Feb 13 18:30:32 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Jan 19 02:54:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * io.c (io_setstrbuf): defer resizing buffer string until data is
- read actually.
+ * vsnprintf.c (cvt): set first byte of buf to NUL for the case when
+ no bytes are written to the buf. [ruby-dev:43062]
-Mon Feb 13 10:24:39 2012 Loren Segal <lsegal@soen.ca>
+Tue Jan 18 23:04:51 2011 Tanaka Akira <akr@fsij.org>
- * io.c (Init_IO): use directive hack to make ARGF documentable
- in other tools. [ruby-core:42515][Bug #6007]
+ * gc.h: parenthesize macro arguments.
-Sun Feb 12 20:43:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Jan 18 18:31:14 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
- * include/ruby/ruby.h (rb_event_hook_func_t): add argument names.
+ * lib/irb/completion.rb: Irb tab completion support for XX::method
+ forms.
-Sun Feb 12 16:30:23 2012 Akinori MUSHA <knu@iDaemons.org>
+Tue Jan 18 15:05:55 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
- * tool/merger.rb (#default_merge_branch): Add support for
- Subversion 1.7 which adopted a whole new working directory
- structure.
+ * lib/logger.rb: added RDoc document for logging message escape
+ by Hal Brodigan. See #3869
-Sun Feb 12 15:14:41 2012 Kazuki Tsujimoto <kazuki@callcc.net>
+Tue Jan 18 07:53:52 2011 Tanaka Akira <akr@fsij.org>
- * benchmark/driver.rb: suppress unused/shadowing variable warnings.
+ * eval_intern.h: parenthesize macro arguments.
-Sun Feb 12 03:14:40 2012 Eric Hodel <drbrain@segment7.net>
+Tue Jan 18 04:42:44 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * vm_eval.c (check_funcall): Call respond_to? with matching arity for
- legacy single-argument implementations. [ruby-trunk - Bug #6000]
+ * ext/psych/lib/psych/parser.rb (Mark): Adding a class to wrap
+ marker information
-Sat Feb 11 12:04:05 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/psych/parser.c (mark): Add a method to return the mark object
+ for the parser
- * compile.c (defined_expr): guard the whole expression.
- [ruby-dev:45021][Bug#5786]
+ * test/psych/test_parser.rb: tests for the Mark class.
-Sat Feb 11 08:34:42 2012 Eric Hodel <drbrain@segment7.net>
+Tue Jan 18 02:46:55 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * ext/zlib/zlib.c (rb_inflate_add_dictionary): Added
- Zlib::Inflate#add_dictionary to allow users to pre-specify
- for using during #inflate. [ruby-trunk - Feature #5937]
+ * ext/psych/lib/psych/visitors/json_tree.rb (visit_String): JSON
+ strings should be dumped with double quotes. [ruby-core:34186]
-Sat Feb 11 08:23:02 2012 Eric Hodel <drbrain@segment7.net>
+ * test/psych/test_json_tree.rb: test for double quotes
- * ext/zlib/zlib.c (do_inflate): Inflate more data if buffered data
- exists. Allows Zlib::Inflate#set_dictionary to work.
- [ruby-trunk - Bug #5929]
+Mon Jan 17 23:36:33 2011 Tanaka Akira <akr@fsij.org>
-Sat Feb 11 06:00:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * array.c (rb_ary_times): less MEMCPY calls.
- * dir.c (fnmatch): The * needs to be escaped to avoid formatting in
- fnmatch comment.
- patched by @dalton. https://github.com/ruby/ruby/pull/91
+Mon Jan 17 22:54:33 2011 Tanaka Akira <akr@fsij.org>
-Fri Feb 10 03:41:31 2012 Aaron Patterson <aaron@tenderlovemaking.com>
+ * debug.h: parenthesize macro arguments.
- * ext/psych/parser.c: removed external encoding setter, allow parser
- to be reused.
- * ext/psych/lib/psych/parser.rb: added external encoding setter.
- * test/psych/test_parser.rb: test parser reuse
+Mon Jan 17 21:40:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Feb 10 01:30:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ruby.c (process_options): revert r30549.
- * ext/dl/dl.h (ALIGN_OF): use offsetof().
+Sun Jan 16 20:55:45 2011 Tanaka Akira <akr@fsij.org>
- * ext/dl/dl.h (DLALIGN): round up at once and get rid of overflow.
+ * vsnprintf.c: parenthesize macro arguments.
-Fri Feb 10 00:47:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Jan 15 11:57:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/envutil.rb (assert_no_memory_leak): new assertion to
- check memory leak by invoking child ruby process and watch its
- memory size.
+ * configure.in (warnflags): add -Werror=implicit-function-declaration
+ if available.
-Thu Feb 9 23:41:44 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * lib/mkmf.rb (init_mkmf): ignore warnings in mkmf tests.
- * test/pathname/test_pathname.rb (test_binread): add assertion to
- check encoding.
+ * test/mkmf/base.rb (setup, teardown): restore config values.
-Thu Feb 9 16:48:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/mkmf/test_flags.rb: split from test_find_executable.rb.
- * ext/dl/dl.c (Init_dl): fix mangled document.
+Sat Jan 15 10:04:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Feb 9 16:10:34 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ruby.c (process_options): autoload rubygems.
- * test/ruby/memory_status.rb (Memory::Win32): 64bit support.
+ * tool/compile_prelude.rb (Prelude#initialize): ignore empty
+ preludes.
-Thu Feb 9 16:08:55 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ruby.c (ruby_init_prelude): get rid of global namespace
+ pollution.
- * ext/dl/lib/value.rb (DL::ValueUtil.{unsigned_value,signed_value}):
- currently pack/unpack does not accept "q!" and "Q!".
+Sat Jan 15 09:42:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Feb 9 16:01:29 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * include/ruby/io.h: missing prototypes.
- * ext/fiddle/conversions.c (value_to_generic): src is not guaranteed as
- a Bignum if the type is LONG_LONG. it may be a Fixnum if the value
- is small.
+Fri Jan 14 23:25:55 2011 Tanaka Akira <akr@fsij.org>
-Thu Feb 9 11:32:36 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+ * vm_method.c: parenthesize macro arguments.
- * ext/dl/lib/types.rb: Win64 support.
+Fri Jan 14 15:32:29 2011 Shugo Maeda <shugo@ruby-lang.org>
-Thu Feb 9 04:12:29 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/net/imap/test_imap.rb: call neither logout nor disconnect
+ unless connected. patch by Kazuhiro NISHIYAMA. [ruby-dev:42860]
- * test/pathname/test_pathname.rb: not read but binread.
- patched by Benoit Daloze, [ruby-core:42440] [Bug #5984]
+Fri Jan 14 14:56:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Feb 8 22:29:59 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/net/imap.rb: use bytesize for binary strings.
+ patched by Yoshimasa Niwa. [ruby-core:34222]
- * string.c (rb_str_modify_expand): fix memory leak.
+Fri Jan 14 14:01:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Feb 8 14:06:59 2012 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * pack.c (pack_unpack): the resulted string of unpack('M') must have
+ ASCII-8BIT encoding (and ENC_CODERANGE_VALID). [ruby-core:34482]
- * ext/openssl/ossl_ssl.c: Add SSL constants and allow to unset SSL
- option to prevent BEAST attack. See [Bug #5353].
+Fri Jan 14 13:38:58 2011 NARUSE, Yui <naruse@ruby-lang.org>
- In OpenSSL, OP_DONT_INSERT_EMPTY_FRAGMENTS is used to prevent
- TLS-CBC-IV vulnerability described at
- http://www.openssl.org/~bodo/tls-cbc.txt
- It's known issue of TLSv1/SSLv3 but it attracts lots of attention
- these days as BEAST attack. (CVE-2011-3389)
+ * ext/zlib/zlib.c (gzfile_check_footer): ISIZE (Input SIZE) in
+ gzip's header is the size of uncompressed input data modulo 2^32.
+ [ruby-core:34481] http://www.ietf.org/rfc/rfc1952.txt
- Until now ossl sets OP_ALL at SSLContext allocation and call
- SSL_CTX_set_options at connection. SSL_CTX_set_options updates the
- value by using |= so bits set by OP_ALL cannot be unset afterwards.
+Fri Jan 14 11:36:25 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- This commit changes to call SSL_CTX_set_options only 1 time for each
- SSLContext. It sets the specified value if SSLContext#options= are
- called and sets OP_ALL if not.
+ * configure.in, win32/Makefile.sub (RUNRUBY): require path should
+ include "." because rbconfig.rb is there.
- To help users to unset bits in OP_ALL, this commit also adds several
- constant to SSL such as
- OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS. These constants were
- not exposed in Ruby because there's no way to unset bits in OP_ALL
- before.
+Fri Jan 14 10:40:11 2011 Ryan Davis <ryan@lust.local>
- Following is an example to enable 0/n split for BEAST prevention.
+ * gem_prelude.rb: Just require rubygems. Fixes rubygems 1.4.
+ * lib/rubygems.rb: removed all Gem::Quickloader code.
+ * ruby.c: renamed ruby_init_gems to ruby_init_prelude. Set
+ $disable_rubygems since there is no fine grained mechanism to
+ skip parts of the prelude. Open to suggestions on how to do this
+ better.
+ * test/*.rb: Load path isn't set up correctly, so add
+ --disable-gems as needed to failing tests that are explicitly
+ testing stderr w/ ==.
- ctx.options = OP_ALL & ~OP_DONT_INSERT_EMPTY_FRAGMENTS
+Fri Jan 14 07:30:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/openssl/test_ssl.rb: Test above option exists.
+ * io.c (argf_next_argv): go advance when the next file cannot be
+ read. [ruby-core:34446]
-Wed Feb 8 13:12:02 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Thu Jan 13 20:49:19 2011 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl_x509name.c: Use the numerical representation of
- unrecognized OIDs instead of the sn "UNDEF".
+ * vm_insnhelper.c: parenthesize macro arguments.
- * test/openssl/test_x509name.rb: Add tests for the fixed behavior.
+Thu Jan 13 13:21:00 2011 Kenta Murata <mrkn@mrkn.jp>
- Patch provided by Paul Kehrer, thank you!
- [ruby-core:41769] [Feature #5787]
+ * vm_dump.c: delete dashes to make lines 80 chars, Patched by
+ Shota Fukumori (sora_h). [Bug #4275] [ruby-dev:43021]
-Wed Feb 8 09:49:58 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Jan 13 13:21:00 2011 Kenta Murata <mrkn@mrkn.jp>
- * tool/merger.rb: don't abort, update first.
+ * vm_dump.c: fix misspelling of CrashReporter, Patched by Shota
+ Fukumori (sora_h). [Bug #4275] [ruby-dev:43021]
-Wed Feb 8 09:47:33 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Thu Jan 13 06:27:29 2011 Ryan Davis <ryand-ruby@zenspider.com>
- * ext/openssl/ossl_asn1.c: Call INT2NUM only once for GeneralString.
- Thanks to Mantas Mikulenas for noticing and providing a patch!
- [ruby-core:42358] [Bug #5972]
+ * error.c: Exception#to_s should actually call to_s.
-Wed Feb 8 09:19:00 2012 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Thu Jan 13 00:32:54 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/openssl/ossl_cipher.c: Add warning about key as IV.
+ * addr2line.c (get_nth_dirname): decrement the directory index
+ because the index specifies the index of given included_directories
+ which is separated by NUL and its index is begun from 1.
+ Note that 0 specifies the current directory of the compilation.
+ see also http://www.dwarfstd.org/doc/dwarf-2.0.0.pdf
-Tue Feb 7 20:08:12 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Thu Jan 13 00:06:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * error.c (exc_inspect): Fix typo. patch from Trent Ogren
- via https://github.com/ruby/ruby/pull/90
+ * io.c (rb_f_syscall): Add warning messages. [ruby-core:34062]
-Tue Feb 7 19:37:35 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Jan 13 00:00:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * st.c: refactor packed entries using structs.
+ * io.c (rb_f_syscall): Some syscall return unsigned or pointer value.
+ Therefore we should only check the result is -1 or not.
+ [ruby-core:34062]
-Tue Feb 7 14:52:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Jan 12 23:55:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * st.c (st_update): table can be unpacked in the callback.
+ * io.c (rb_f_syscall): Add 64bit Linux support. Some syscall takes
+ long type arguments.
- * st.c (st_foreach): should not yield same pair when checking
- after unpacking.
+Wed Jan 12 19:37:10 2011 Tanaka Akira <akr@fsij.org>
-Mon Feb 6 21:55:13 2012 NARUSE, Yui <naruse@ruby-lang.org>
+ * vm_dump.c: parenthesize macro arguments.
- * tool/merger.rb: abort if the working directory is dirty.
+Wed Jan 12 19:28:23 2011 Tanaka Akira <akr@fsij.org>
- * tool/merger.rb: update the working directory after commit.
+ * vm.c (thread_free): reset ruby_current_thread if it points the
+ thread to free.
+ * gc.c (slot_sweep): don't call RUBY_VM_SET_FINALIZER_INTERRUPT if
+ there is no current thread.
+ [ruby-dev:43000]
-Mon Feb 6 00:16:27 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Jan 12 19:09:29 2011 Tanaka Akira <akr@fsij.org>
- * encoding.c (rb_enc_compatible): return ASCII-8BIT even if 2nd string
- is ascii only string. [ruby-core:42354] [Bug #5968]
+ * enum.c (sort_by_i): reenter check more strictly.
+ (sort_by_cmp): ditto.
+ [ruby-dev:43003] reported by Usaku NAKAMURA.
-Fri Feb 3 07:16:47 2012 Eric Hodel <drbrain@segment7.net>
+Wed Jan 12 16:25:12 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
- * lib/webrick.rb: Moved proxy rewriting to WEBrick::HTTPProxy.
- * lib/webrick/httpproxy.rb: Add examples of creating a proxy server
- and response rewriting using HTTPProxy.
+ * lib/net/http.rb (Net::HTTP#connect): makes it timeout during
+ SSL handshake too. [ruby-core:34203]
+ Patch by Marc Slemko.
-Fri Feb 3 06:53:22 2012 Eric Hodel <drbrain@segment7.net>
+ * test/net/http/test_http.rb (TestNetHTTP_v1_2#test_timeout_during_HTTP_session):
+ test for [ruby-core:34203]
- * ext/openssl/ossl_x509store.c: Add class documentation for
- OpenSSL::X509::Store
-
-Thu Feb 2 22:28:13 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * test/net/http/test_https_proxy.rb
- (HTTPSProxyTest#test_https_proxy_authentication):
- add workaround to avoid to hang up without openssl.
- see [ruby-dev:45021][Bug #5786]
-
- * test/resolv/test_dns.rb (TestResolvDNS#test_query_ipv4_address):
+ * test/net/http/test_https.rb (TestNetHTTPS#test_timeout_during_SSL_handshake):
ditto.
-Thu Feb 2 21:48:18 2012 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rexml/parsers/baseparser.rb: use meaningful names.
-
-Thu Feb 2 21:38:52 2012 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rexml/parsers/baseparser.rb, test/rexml/test_namespace.rb:
- fix the default xml namespace URI validation.
- [ruby-dev:45169] [Bug #5956]
- Reported by Miho Hiramatsu. Thanks!!!
-
-Thu Feb 2 17:51:02 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * io.c (argf_next_argv): reset ARGF.next_p on ARGV.replace.
- r34409 breaks replacing ARGV.
- [ruby-dev:45160] [Bug #5952]
-
-Thu Feb 2 16:21:01 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/net/http/test_http.rb (TestNetHTTPKeepAlive#*): remove debug
- output.
-
-Thu Feb 2 01:24:34 2012 Yusuke Endoh <mame@tsg.ne.jp>
-
- * parse.y (debug_lines, coverage): set file path encoding for coverage
- result. [ruby-dev:44950]
-
-Wed Feb 1 14:38:31 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * lib/tempfile.rb (Tempfile#unlink, Tempfile::Remover#call): Just
- call File.unlink and ignore ENOENT because existence check
- before unlinking does not help in terms of race condition.
-
- * lib/tempfile.rb (Tempfile#unlink, Tempfile::Remover#call): My
- comment about thread safeness is obsolete.
-
-Wed Feb 1 09:50:10 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * doc/re.rdoc (Repetition): fix typo. reported by Ori Avtalion
- and patched by Zachary Scott. [Bug #5947]
-
-Wed Feb 1 06:38:54 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (argf_close): skip stdin, which should be readable again.
- [ruby-dev:45160] [Bug #5952]
-
- * io.c (argf_readlines): reinitialize after all read to be
- readable again.
-
-Tue Jan 31 21:27:43 2012 Narihiro Nakamura <authornari@gmail.com>
-
- * configure.in (HEAP_ALIGN_LOG): HEAP_ALIGN_LOG should be page
- size in OpenBSD. [ruby-core:42158][Bug #5901]
-
- * gc.c : avoid to redefine.
-
-Tue Jan 31 14:27:22 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/envutil.rb (EnvUtil.invoke_ruby): yield also child pid
- in block form.
+Wed Jan 12 16:24:53 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-Mon Jan 30 19:08:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_eval.c (vm_call0): should pass block to enumerators. patched
- by Kazuki Tsujimoto. [ruby-dev:44961][Bug #5731]
+ * ext/readline/extconf.rb: new checks for RL_PROMPT_START_IGNORE
+ and RL_PROMPT_END_IGNORE. [ruby-core:34331]
- * vm_eval.c (method_missing), vm_insnhelper.c (vm_call_method):
- ditto. patched by satoshi shiba.
+ * ext/readline/readline.c: enables USE_INSERT_IGNORE_ESCAPE only if
+ RL_PROMPT_{START,END}_IGNORE are available to get rid of compilation
+ error with libedit.
-Mon Jan 30 12:31:05 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Jan 12 15:53:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * file.c (append_fspath): need to set the encoding to result always.
+ * README.EXT.ja (rb_ensure): typo.
-Mon Jan 30 10:38:37 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Jan 12 11:33:46 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * test/irb/test_completion.rb: skip if cannot load irb/completion
- (maybe readline does not exist).
+ * addr2line.c: OpenBSD uses the elf_abi.h header file instead of the
+ elf.h header file. patched by Jeremy Evans [ruby-core:34384]
-Sun Jan 29 22:47:19 2012 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+Wed Jan 12 03:59:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * tool/config.{guess,sub}: updated to automake-1.11.2.
+ * test/webrick/test_cgi.rb: Removes usage of deprecated
+ :RequestHandler option.
+ patched by Peter Weldon [ruby-core:34010]
-Sun Jan 29 12:17:56 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/webrick/test_httpproxy.rb: ditto.
- * ext/readline/readline.c (readline_attempted_completion_function):
- respect encodings. [Bug #5941]
+ * test/webrick/test_httpserver.rb: Add a test of the deprecation
+ behaviour.
-Sat Jan 28 09:33:33 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Wed Jan 12 08:37:07 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * win32/win32.c (rb_w32_read): fix an issue that $stdin.read doesn't
- terminate by CTRL-C on Windows.
- [ruby-dev:45149] [Bug #5812]
+ * hash.c (hash_i): return different values for inverse hash.
+ [ruby-core:34334]
-Sat Jan 28 08:18:11 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+Tue Jan 11 20:32:59 2011 Tanaka Akira <akr@fsij.org>
- * test/ruby/test_thread.rb
- (TestThreadGroup#test_thread_timer_and_interrupt): skip exit status
- assertion because we cannot get signal status on Windows.
-
- * win32/win32.c (CreateChild): create process group to receive the
- signal by GenerateConsoleCtrlEvent().
-
- * win32/win32.c (kill): use CTRL_BREAK_EVENT instead of CTRL_C_EVENT
- if a process group is specified. CTRL_C_EVENT signal cannot be
- generated for process groups for the specification.
- [ruby-dev:45149] [Bug #5812]
-
-Sat Jan 28 07:46:03 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * thread_win32.c (rb_w32_wait_events_blocking): use
- ruby_thread_from_native() instead of GET_THREAD() because
- GET_THREAD() doesn't always return the current thread and
- WaitForMultipleObjects() at rb_w32_read() doesn't return by
- Thread#kill. This fixes TestQueue#test_thr_kill failure on
- Windows.
-
- * thread_win32.c (rb_w32_wait_events): use ruby_thread_from_native()
- instead of GET_THREAD() for consistency with the above change.
-
- * thread_win32.c (rb_w32_sleep): ditto.
-
- * thread_win32.c (rb_w32_Sleep): ditto.
- [ruby-dev:45149] [Bug #5812]
-
-Sat Jan 28 07:28:48 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * test/zlib/test_zlib.rb (TestZlibGzipReader#test_reader_wrap): set
- binmode explicitly for fixing test error on Windows. This is consistent
- with r34243.
- [ruby-dev:45149] [Bug #5812]
-
-Sat Jan 28 05:53:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/irb/completion.rb (IRB::InputCompletor::CompletionProc):
- ignore non-string name modules. [ruby-core:42244][Bug #5938]
-
-Fri Jan 27 16:31:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * gc.c (HEAP_ALIGN, HEAP_ALIGN_MASK): DRY, let compiler calculate
- from HEAP_ALIGN_LOG.
-
-Thu Jan 26 11:03:37 2012 Eric Hodel <drbrain@segment7.net>
-
- * lib/matrix.rb: Clean up extra whitespace in output documentation.
-
-Thu Jan 26 03:24:02 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/io/console/console.c (io_getch): default delegating method
- for StringIO. https://github.com/nobu/io-console/issues/4
-
- * ext/stringio/stringio.c: moved some methods to hidden modules.
-
-Wed Jan 25 13:27:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (rb_file_s_basename): ignore non-ascii extension in
- different encoding, which cannot match.
-
- * file.c (rmext): no extension to strip if empty string.
-
- * file.c (rb_enc_path_next, rb_enc_path_skip_prefix)
- (rb_enc_path_last_separator, rb_enc_path_end)
- (ruby_enc_find_basename, ruby_enc_find_extname): encoding-aware
- path handling functions.
-
- * file.c (rb_home_dir, file_expand_path, rb_realpath_internal)
- (rb_file_s_basename, rb_file_dirname, rb_file_s_extname)
- (rb_file_join): should respect the encodings of arguments than
- file system encoding. [ruby-dev:45145] [Bug #5919]
-
- * dir.c (check_dirname, ruby_glob0): ditto.
-
- * ext/pathname/pathname.c (path_sub_ext): ditto.
-
-Tue Jan 24 14:20:42 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm.c (rb_iter_break_value): new function to break a block with
- the value. [ruby-dev:45132] [Feature #5895]
-
-Tue Jan 24 12:58:41 2012 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * object.c (rb_Hash): add Kernel#Hash conversion method like
- Array() or Float(). a patch from Run Paint Run Run. Fix #3131
-
-Tue Jan 24 11:38:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/uri/common.rb (URI.encode_www_form_component): initialize on
- requiring to support JRuby, which runs parallel multithreads.
- [ruby-core:42222] [Bug #5925]
-
- * lib/uri/common.rb (URI.decode_www_form_component): initialize on
+ * variable.c: parenthesize macro arguments.
-Mon Jan 23 20:33:11 2012 Jason Kay <geniture@me.com>
+Tue Jan 11 13:06:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/net/http.rb (Net::HTTP#connect): Writing entire packet at
- once to avoid incomplete transmission. Current code using
- writeline was causing sub-optimal conversing with a proxy due to
- the connect tunnel request headers being split over multiple
- packets. The modification I made allows the connect request to
- be written as one packet, avoiding problems and optimizing the
- conversation.
+ * array.c (rb_ary_resize): should care of embeded array when extending
+ the array.
- https://github.com/ruby/ruby/pull/72
- [Feature #5460]
+ * array.c (rb_ary_resize): need to set capa when changing the real
+ size of the array.
+ these are latent bugs.
-Mon Jan 23 17:06:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/uri/mailto.rb (URI::MailTo.build): follow Array#to_s change of
- Ruby 1.9; use Array#join. [Bug #5840]
-
-Mon Jan 23 16:42:28 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * io.c (extract_binmode): raise an exception if binmode/textmode
- is specified with both vmode and opthash.
- [ruby-core:42199] [Bug #5918]
-
-Mon Jan 23 16:35:27 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * io.c (rb_io_extract_modeenc): set ASCII-8BIT if binmode is specified
- with opthash. [ruby-core:42197] [Bug #5917]
-
-Mon Jan 23 10:08:00 2012 Kenta Murata <mrkn@cookpad.com>
-
- * test/cgi/test_cgi_util.rb (test_cgi_escape_preserve_encoding):
- add a test for CGI::escape to preserve encoding.
-
- * test/cgi/test_cgi_util.rb (test_cgi_unescape_preserve_encoding):
- add a test for CGI::unescape to preserve encoding.
-
-Mon Jan 23 00:45:34 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * misc/rdoc-mode.el (rdoc-imenu-create-index): Add imenu support
- to rdoc-mode.
-
- * misc/rdoc-mode.el (rdoc-mode): Fix regexp patterns containing
- "\s " where CR/LF is not supposed to match.
-
-Sun Jan 22 15:41:26 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (rb_intern3): split to registration check and new
- registration.
-
- * parse.y (rb_intern_str): make interned string shared with the
- given string.
-
- * parse.y (rb_intern3, rb_intern_str): check the coderange first.
-
-Sat Jan 21 22:21:07 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/ruby.h (FIXNUM_P): simple flag should be int.
-
-Sat Jan 21 21:51:19 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * encoding.c (rb_enc_compatible): fix segv on symbols.
- [ruby-core:42204] [Bug #5921]
-
-Sat Jan 21 11:43:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dir.c (dir_chdir, check_dirname): get rid of optimization-out.
-
-Fri Jan 20 20:47:37 2012 Kenta Murata <mrkn@cookpad.com>
-
- * lib/cgi/util.rb (CGI.escape): support a string with invalid byte
- sequence. [Bug #5913]
-
- * test/cgi/test_cgi_util.rb
- (test_cgi_escape_with_invalid_byte_sequence): test for the above
- change.
-
-Fri Jan 20 17:37:37 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * vm.c (vm_exec): remove workaround for LLVM because r34278 fixes it.
-
- * vm_insnhelper.c (vm_call_cfunc): ditto.
-
-Fri Jan 20 14:31:43 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http.rb (Net::HTTP#transport_request): retry a idempotent
- request automatically. [ruby-dev:45030] [Bug #5790]
- [ruby-core:41821] [Bug #5813]
-
- * lib/net/http.rb (Net::HTTP#keep_alive_timeout=): added to specify
- the second to reconnect the TCP connection on Keep-Alive.
- The default value is 2 second because current servers uses 2 sec.
- http://ftp-admin.blogspot.com/2009/09/keepalivetimeout2.html
-
- * lib/net/http.rb (Net::HTTP#begin_transport): reconnect TCP
- connection on keep-alive timeout.
-
-Thu Jan 19 07:53:09 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_strptime.c: moved detector of leftover.
-
-Thu Jan 19 07:10:47 2012 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_parse.c: [ruby-core:42173].
-
-Wed Jan 18 18:11:02 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * misc/rdoc-mode.el (rdoc-mode): Add provide so that requiring
- this library succeeds.
-
-Wed Jan 18 18:06:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/curses/curses.c (cWindow, cMouseEvent): made typed data.
-
-Wed Jan 18 12:49:15 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/to_ruby.rb: Added support for loading
- subclasses of String with ivars
- * ext/psych/lib/psych/visitors/yaml_tree.rb: Added support for dumping
- subclasses of String with ivars
- * test/psych/test_string.rb: corresponding tests
-
-Wed Jan 18 10:39:47 2012 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/to_ruby.rb: Added ability to load array
- subclasses with ivars.
- * ext/psych/lib/psych/visitors/yaml_tree.rb: Added ability to dump
- array subclasses with ivars.
- * test/psych/test_array.rb: corresponding tests
-
-Tue Jan 17 17:18:41 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (SPT_TYPE): enable as SPT_REUSEARGV on Darwin.
-
- * missing/setproctitle.c (ruby_init_setproctitle): changed prefix.
-
-Tue Jan 17 12:32:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * gc.c (aligned_malloc, aligned_free): covered missing defined
- operators and fixes for cygwin.
-
-Tue Jan 17 10:54:46 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * st.c (do_hash): it's the time to remove cast to unsigned int.
-
-Tue Jan 17 07:30:12 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * st.c (unpack_entries): Fix r34310: on unpacking, the position of
- a hash must be do_hash-ed value.
-
- * st.c (add_packed_direct): ditto.
-
-Mon Jan 16 16:41:53 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/optparse.rb (Regexp): fix incorrect options when casting to
- a Regexp, and suppress encoding option warnings.
- https://github.com/ruby/ruby/pull/82
-
-Mon Jan 16 11:22:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/win32.c (rb_chsize): no need to get the current file size.
-
-Mon Jan 16 00:41:33 2012 Sokolov Yura <funny.falcon@gmail.com>
-
- * st.c: st use function instead of macro. In my current
- environment (Ubuntu 11.04 32bit gcc-4.5.2) it gives 4%
- performance improvement.
-
- https://github.com/ruby/ruby/pull/77
-
-Sun Jan 15 14:09:48 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * object.c (rb_inspect): raise the result is not compatible with
- the default external encoding. [ruby-core:42095] [Bug #5848]
- If the default external encoding is ASCII compatible, the encoding of
- inspected result must be compatible with it.
- If the default external encoding is ASCII incompatible,
- the result must be ASCII only.
-
-Sun Jan 15 13:21:50 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/json/parser/parser.rl (json_string_unescape): workaround fix
- for over optimization of GCC 4.7. [ruby-core:42085] [Bug #5888]
- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51862
-
-Sat Jan 14 22:24:09 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/dl/callback/mkcallback.rb (gencallback): suppress unused
- variables.
-
-Sat Jan 14 21:56:43 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * iseq.c (iseq_data_to_ary): check line info table boundary. line
- number 0 means no line number info is needed. [ruby-dev:45130]
- [Bug #5894]
-
-Sat Jan 14 18:24:13 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * error.c (exc_equal): clear rb_thread_t::errinfo when ignore
- an exception under rb_protect(). [ruby-core:41979] [Bug #5865]
-
-Sat Jan 14 12:02:55 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * sprintf.c (rb_enc_vsprintf): relaxed the restriction. since the
- implementation deeply depends on plain char, so wchar_t based
- encodings are not supported.
-
-Sat Jan 14 12:00:20 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * error.c (exc_equal): ignore exceptions during implicit
- conversion. [ruby-core:41979] [Bug #5865]
-
-Sat Jan 14 05:58:54 2012 Eric Hodel <drbrain@segment7.net>
-
- * io.c (rb_io_s_read): Fix formatting of open_args comment. Reported
- by Adam Prescott.
-
-Fri Jan 13 18:41:19 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * sprintf.c (rb_enc_vsprintf): can be used for ASCII compatible
- encodings only.
-
-Fri Jan 13 18:29:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread.c (rb_mutex_unlock_th): simplified.
-
- * thread.c (rb_barrier_waiting): fix potential overflows.
-
-Fri Jan 13 17:23:38 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * load.c (load_unlock): update loading table at once.
-
-Fri Jan 13 16:44:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * error.c (exc_equal): try implicit conversion for delegator.
- [ruby-core:41979] [Bug #5865]
-
-Fri Jan 13 03:46:53 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * lib/shellwords.rb (Shellwords#shellescape): shellescape() now
- stringifies the given object using to_s.
-
- * lib/shellwords.rb (Shellwords#shelljoin): shelljoin() accepts
- non-string objects in the given array, each of which is
- stringified using to_s.
-
- * lib/shellwords.rb: Fix rdoc markups.
-
-Fri Jan 13 03:38:36 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * lib/shellwords.rb (Shellwords#shellsplit): Fix a bug where
- consecutive backslashes in double quotes are all removed except
- the one at the tail.
-
-Fri Jan 13 03:28:00 2012 Luis Lavena <luislavena@gmail.com>
-
- * ext/socket/extconf.rb (if ipv6): only define _WIN32_WINNT if was not
- previously defined. This solve warnings with multiple defines in
- command line with GCC 4.6.1
-
-Thu Jan 12 18:44:31 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb: fix r33904 and revert r33905. initialize global
- variables with init_mkmf before initializing constants.
- [ruby-dev:45124] [Bug #5879]
-
-Thu Jan 12 13:51:00 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * cont.c (cont_restore_0): prevent optimizing out `sp'. sp is used for
- reserving a memory space with ALLOCA_N for restoring machine stack
- stored in cont->machine_stack, but clang optimized out it (and
- maybe #5851 is also caused by this).
- This affected TestContinuation#test_check_localvars.
-
- * cont.c (cont_restore_1): revert workaround introduced in r32201.
-
-Thu Jan 12 02:14:43 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-
- * object.c: Added examples for Object#is_a? and
- Object#instance_of? patched from Manoj Kumar.
- [Bug #5880] [ruby-core:42057]
-
-Thu Jan 12 00:57:48 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * lib/mkmf.rb: verbose-mode can use by RM, RMDIRS, etc.
- (e.g. make V=1 realclean)
-
-Wed Jan 11 23:40:21 2012 Naohisa Goto <ngoto@gen-info.osaka-u.ac.jp>
-
- * string.c (rb_str_concat): set array element after definition
- to fix compile error with Fujitsu C Compiler 5.6 on Solaris 10
- on Sparc. [Bug #5878] [ruby-dev:45123]
-
-Wed Jan 11 22:52:51 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * gc.c (ruby_mimmalloc): don't set allocated size to header.
- ruby_mimmalloc() doesn't increment allocated_size/allocations and
- decrement them in ruby_xfree() cause inconsistency.
-
- * gc.c (ruby_xfree): don't decrement allocated_size/allocations if
- allocated size record is 0.
-
-Wed Jan 11 22:36:43 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * test/readline/test_readline.rb (test_completion_proc_empty_result):
- ensure clearance of Readline's line_buffer after the test.
-
-Tue Jan 10 21:57:38 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * ext/dbm/dbm.c (Init_dbm): fix a build error on mswin32.
- use `extern __declspec(dllimport)` for dll link with VC.
- [ruby-core:41996] [Bug #5869]
-
-Tue Jan 10 15:31:55 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * vm.c (vm_exec): refix r34162; suppress warning and add description.
-
-Tue Jan 10 15:13:58 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/readline/readline.c (readline_attempted_completion_function):
- use rb_memerror().
-
-Tue Jan 10 12:49:42 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * gc.c: in fact, i686-linux doesn't need to define _XOPEN_SOURCE 600.
-
-Tue Jan 10 12:44:11 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * gc.c (ruby_mimmalloc): defined for objects need not rb_objspace,
- but should return pointer suitable for ruby_xfree;
- main vm and main thread.
- patched by Sokolov Yura. https://github.com/ruby/ruby/pull/79
-
- * internal.h: ditto.
-
- * vm.c (Init_BareVM): use ruby_mimmalloc.
-
- * ext/dl/cfunc.c: #include <ruby/util.h>.
-
- * ext/syslog/syslog.c: use xfree because it is allocated by
- ruby_strdup.
-
-Tue Jan 10 12:13:56 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * ext/readline/readline.c (readline_attempted_completion_function):
- fix compile error.
-
-Tue Jan 10 10:41:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/readline/readline.c (readline_attempted_completion_function):
- empty completion result does not mean memory error.
-
-Tue Jan 10 02:19:22 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * test/ruby/test_io.rb (test_autoclose_true_closed_by_finalizer,
- test_autoclose_true_closed_by_finalizer): skip if IO objects are
- not recycled yet. [ruby-dev:45098] [Bug #5850]
-
-Tue Jan 10 00:41:28 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * lib/tempfile.rb (Tempfile#_close): clear @tempfile and @data[1] even
- when exception is raised at @tempfile.close. [ruby-dev:45113]
-
- * lib/tempfile.rb (Tempfile#unlink): fix a typo.
-
-Tue Jan 10 00:32:17 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * gc.c (run_finalizer): clear rb_thread_t::errinfo when ignore
- an exception under rb_protect(). [ruby-dev:45113]
-
-Mon Jan 9 23:37:43 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * ext/readline/readline.c (readline_attempted_completion_function):
- fix typos.
-
-Mon Jan 9 20:55:34 2012 Narihiro Nakamura <authornari@gmail.com>
-
- * gc.c : don't embed struct heaps_slot to a heap block because it
- can causes copy-on-write of memory page on heap block when its
- free_next is rewritten.
-
-Mon Jan 9 20:26:33 2012 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_entries): add document suggested by
- the thread [ruby-core:41959] [Bug #5859].
-
-Mon Jan 9 20:14:13 2012 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/lib/socket.rb (family_addrinfo): don't require protocol
- equality. For example, protocol 0 and IPPROTO_TCP is not problem
- for TCP.
-
-Mon Jan 9 20:08:52 2012 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/lib/socket.rb (family_addrinfo): return the given
- addrinfo object.
- Patch by Ippei Obayashi. [ruby-dev:45095] [Bug #5845]
-
-Mon Jan 9 19:40:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/zlib/test_zlib.rb (TestZlibGzipWriter#test_writer_wrap): set
- binmode explicitly.
-
-Mon Jan 9 14:42:41 2012 Narihiro Nakamura <authornari@gmail.com>
-
- * gc.c: free_slots is changed Singly linked list. clear
- free_slots before sweep.
-
-Mon Jan 9 07:46:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * gc.c: i686-linux needs to define _XOPEN_SOURCE 600 for posix_memalign.
-
-Mon Jan 9 04:24:59 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * gc.c (rb_objspace_free): global_List is allocated with xmalloc.
- patched by Sokolov Yura. https://github.com/ruby/ruby/pull/78
-
- * dln_find.c: remove useless replacement of free.
-
- * ext/readline/readline.c (readline_attempted_completion_function):
- strings for readline must allocated with malloc.
-
- * process.c (run_exec_dup2): use free; see also r20950.
-
- * re.c (onig_new_with_source): use malloc for oniguruma.
-
- * vm.c (ruby_vm_destruct): use free for VMs.
-
- * vm.c (thread_free): use free for threads.
-
-Mon Jan 9 04:24:59 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * dln_find.c: remove useless replacement of free.
-
- * ext/readline/readline.c (filename_completion_proc_call):
- matches should use xfree.
-
- * ext/readline/readline.c (username_completion_proc_call): ditto.
-
-Mon Jan 9 01:12:35 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * numeric.c (rb_enc_uint_char): raise RangeError when added codepoint
- is invalid. [Feature #5855] [Bug #5863] [Bug #5864]
-
- * string.c (rb_str_concat): ditto.
-
- * string.c (rb_str_concat): set encoding as ASCII-8BIT when the string
- is US-ASCII and the argument is an integer greater than 127.
-
- * regenc.c (onigenc_mb2_code_to_mbclen): rearrange error code.
-
- * enc/euc_jp.c (code_to_mbclen): ditto.
-
- * enc/shift_jis.c (code_to_mbclen): ditto.
-
-Sun Jan 8 20:31:45 2012 Narihiro Nakamura <narihiro@netlab.jp>
-
- * gc.c : consider header bytes which are used by malloc.
-
-Sun Jan 8 11:54:43 2012 Narihiro Nakamura <authornari@gmail.com>
-
- * gc.c (aligned_free): support MinGW. Patch by Hiroshi Shirosaki.
-
-Sun Jan 8 11:43:05 2012 Narihiro Nakamura <authornari@gmail.com>
-
- * gc.c (slot_sweep): add a assertion instead of a debug print.
-
-Sun Jan 8 01:18:19 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-
- * test/-ext-/old_thread_select/test_old_thread_select.rb:
- avoid platform bug. [Bug #5858] [ruby-dev:45108]
+Mon Jan 10 22:46:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Jan 8 00:46:34 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * include/ruby/defines.h (CASEFOLD_FILESYSTEM): HFS+ is case
+ insensitive.
- * gc.c: get rid of implicit narrowing conversion.
+ * load.c (loaded_feature_path, rb_feature_p, load_lock): on a
+ case-insensitive filesystem, loaded features search should
+ ignore case. [ruby-core:34297]
-Sun Jan 8 00:10:10 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Jan 10 21:34:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in: check posix_memalign(3) and memalign(3).
+ * common.mk (showflags): show LD commands.
- * gc.c (aligned_malloc): use configure's result instead of
- _POSIX_C_SOURCE and _XOPEN_SOURCE because they can't be used
- to check availability at least on FreeBSD.
+Mon Jan 10 14:32:55 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Jan 7 22:25:50 2012 Narihiro Nakamura <authornari@gmail.com>
+ * test/ruby/test_method.rb (TestMethod#test_define_method): method
+ transplanting between class and module is impossible.
- * gc.c: use Bitmap Marking algorithm to avoid copy-on-write of
- memory pages. See [ruby-dev:45085] [Feature #5839]
- [ruby-core:41916].
+Mon Jan 10 13:51:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * include/ruby/ruby.h : FL_MARK rename to FL_RESERVED1.
+ * misc/rdoc-mode.el (rdoc-mode): show trailing whitespace.
- * node.h : ditto.
+Mon Jan 10 11:22:02 2011 Tanaka Akira <akr@fsij.org>
- * debug.c : ditto.
+ * util.c: parenthesize macro arguments.
- * object.c (rb_obj_clone): FL_MARK move to a bitmap.
+Mon Jan 10 07:41:31 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * class.c (rb_singleton_class_clone): ditto.
+ * misc/README: mention rdoc-mode.el and ruby-style.el.
-Sat Jan 7 00:47:07 2012 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Sun Jan 9 20:37:21 2011 Tanaka Akira <akr@fsij.org>
- * configure.in: always define CANONICALIZATION_FOR_MATHN.
- [ruby-dev:45100] [Bug #5852]
+ * transcode.c: parenthesize macro arguments.
-Fri Jan 6 23:11:20 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Sun Jan 9 16:31:53 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
- * include/ruby/version.h: RUBY_API_VERSION 2.0.0
+ * io.c (Kernel.#syscall): implemented on LP64/LLP64 environments too.
+ also uses __syscall if available for *BSD on 64bit architecture.
+ [ruby-core:34062]
-Fri Jan 6 12:24:11 2012 NARUSE, Yui <naruse@ruby-lang.org>
+Sun Jan 9 16:31:34 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
- * object.c (rb_inspect): raises Encoding::CompatibilityError if the
- result is incompatible with the default external encoding.
- [ruby-core:41931] [Bug #5848]
-
-Thu Jan 5 15:26:15 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (check_valid_dir): strict checking of root.
- GetDriveType() succeeds with non root directory as the argument,
- even if MSDN says that the API needs the root directory.
- this patch fixes a failure of test/ruby/test_file_exhaustive.rb.
-
-Thu Jan 5 12:15:55 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * file.c (rb_file_join): separator is appended by array length - 1
- times. patched by Benoit Daloze [ruby-core:41901] [Bug #5841]
-
-Thu Jan 5 11:47:54 2012 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/uri/common.rb (URI::Parser#initialize_regexp):
- use \A \z instead of ^ $. [Bug #5843]
-
-Wed Jan 4 17:55:53 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-
- * array.c (rb_ary_sample): add example for Array#sample
- based on patch from https://github.com/ruby/ruby/pull/74
-
-Wed Jan 4 14:24:33 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (str_nth_len): count ascii-only run at the end. this
- bug appears only when single-byte-optimization is disabled due
- to unknown coderange. [ruby-core:41896] [Bug #5836]
-
-Wed Jan 4 11:32:07 2012 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (check_valid_dir): special case for a root directory.
- Reported by Masateru OKAMOTO at [Bug #5819].
-
-Wed Jan 4 00:19:54 2012 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rexml/parsers/baseparser.rb: use private instead of _xxx
- method name. This is Ruby code not Python code.
- refs #5696
-
-Tue Jan 3 23:57:37 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-
- * lib/rexml/parsers/baseparser.rb: rexml BaseParser uses
- instance_eval unnecessarily on listener add.
- patch from Charles Nutter. [Bug #5696] [ruby-core:41437]
-
-Tue Jan 3 20:44:13 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-
- * README: add comment for Git user. patch from Arun Agrawal.
- * README.ja: ditto.
-
-Tue Jan 3 15:58:22 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-
- * thread.c: changed documentation for "thread-local" variables.
- patch from Julien Ammous.
-
-Tue Jan 3 15:50:12 2012 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-
- * process.c: Fix typo. patch from Aviv Ben-Yosef.
-
-Tue Jan 3 13:43:37 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * tool/merger.rb: allow r0123 style revision number.
-
-Tue Jan 3 11:17:55 2012 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * tool/merger.rb (#version_up): version.h date should be Japanese
- locale date.
-
-Mon Jan 2 22:08:00 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * tool/file2lastrev.rb (VCS::detect): Add support for Subversion
- 1.7 which adopted a whole new working directory structure.
-
- * tool/file2lastrev.rb (VCS::detect): Simply use .each instead of
- .sort.reverse_each which looks too arbitrary. If you want SVN
- to be tried first, then you just have to register it first as it
- is right now.
-
-Mon Jan 2 20:53:36 2012 Tanaka Akira <akr@fsij.org>
-
- * lib/securerandom.rb (random_bytes): use IO#read instead of
- IO#readpartial to make the intent more clear.
-
-Mon Jan 2 15:26:39 2012 Kazuki Tsujimoto <kazuki@callcc.net>
-
- * test/ruby/test_object.rb (test_send_with_block): add a normal case.
-
-Mon Jan 2 15:18:54 2012 Kazuki Tsujimoto <kazuki@callcc.net>
-
- * test/ruby/test_object.rb (test_send_with_block): moved from
- bootstraptest/test_flow.rb.
-
-Mon Jan 2 15:10:11 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * lib/test/unit/parallel.rb: use pack("m0") instead of
- pack("m").gsub("\n","").
- * lib/test/unit.rb (Test::Unit::Runner::Worker#run): ditto.
-
-Mon Jan 2 15:05:09 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * lib/test/unit.rb (Test::Unit::Runner::Worker#run): use
- File.basename with suffix instead of gsub.
-
-Mon Jan 2 14:55:28 2012 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): find may
- return nil and nil can not dup.
-
-Sun Jan 1 12:23:10 2012 Akinori MUSHA <knu@iDaemons.org>
-
- * lib/shellwords.rb (Shellwords#shellescape): Drop the //n flag
- that only causes warnings with no real effect. [Bug #5637]
-
-Sat Dec 31 06:28:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * thread.c (rb_barrier_waiting): save the number of waiting threads
- in RBASIC()->flags. [ruby-dev:45002] [Bug #5768]
-
- * thread.c (rb_barrier_wait): increment and decrement around
- rb_mutex_lock, and use rb_barrier_waiting().
-
- * thread.c (rb_barrier_release): use rb_barrier_waiting().
-
- * thread.c (rb_barrier_destroy): ditto.
-
-Mon Dec 26 17:20:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * vm.c (vm_exec): add guard to prevent optimization for LLVM clang.
-
-Fri Dec 30 17:01:12 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
-
- * vm_eval.c (rb_f_send): fix obj.send() documentation issue.
- [Bug #5125] [ruby-core:38633]
-
-Thu Dec 29 22:36:16 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * lib/test/unit.rb (Test::Unit::Runner::Worker#_run_parallels): fix
- premature exit when all workers' status are :ready or :prepare.
- [ruby-dev:45061] [Bug #5822]
-
-Thu Dec 29 01:51:13 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * include/ruby/ruby.h: fix #error pragma. LLP64 platform is supported.
-
- * include/ruby/st.h: ditto.
-
-Wed Dec 28 11:22:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/fileutils.rb (FileUtils::Entry_#entries): use utility method
- instead of typoed regexp. [ruby-core:41829] [Bug #5817]
-
-Wed Dec 28 02:08:04 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * vm_insnhelper.c (unknown_keyword_error): add GC guard to prevent
- intermediate object from GC.
-
-Tue Dec 27 22:34:54 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit.rb (Worker#close): "closing IO if IO is closed"
- should be "closing IO if IO isn't closed"
-
-Tue Dec 27 22:04:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * st.c (st_update): new function to lookup the given key and
- update the value. [ruby-dev:44998]
-
-Tue Dec 27 21:17:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * node.h (rb_args_info): change pre_args_num and post_args_num as
- int, to match with rb_iseq_t.
-
- * parse.y (new_args_gen): check overflow.
-
-Mon Dec 26 22:38:35 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * vm_insnhelper.c (unknown_keyword_error): make it kind a error
- message when unknown keyword is given. It require more work.
- See [ruby-core:40518] and [ruby-core:40541] in detail.
-
-Mon Dec 26 22:31:07 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * vm_core.h (struct rb_iseq_struct), compile.c (iseq_set_arguments),
- iseq.c (rb_iseq_parameters), vm_insnhelper.c
- (vm_callee_setup_arg_complex): support Method#parameters for keyword
- arguments. The provisional spec is what Benoit Daloze proposed.
- [ruby-core:40541]
-
- * test/ruby/test_keyword.rb: add a test for above.
-
-Mon Dec 26 22:15:27 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * vm_core.h (struct rb_iseq_struct), compile.c (iseq_set_arguments,
- iseq_compile_each), vm_insnhelper.c (vm_callee_setup_arg_complex):
- implement keyword arguments. See [ruby-core:40290]
- The feature is promised to be included in 2.0, but the detail spec
- is still under discussion; this commit is a springboard for further
- discussion. Please try it and give us feedback.
- This commit includes fixes for some problems reported by Benoit
- Daloze <eregontp AT gmail.com> [ruby-core:40518] and Marc-Andre
- Lafortune <ruby-core-mailing-list AT marc-andre.ca>
- [ruby-core:41772].
-
- * iseq.c (iseq_free, prepare_iseq_build): bookkeeping.
-
- * test/ruby/test_keyword.rb: add tests for keyword arguments.
-
- * test/ripper/dummyparser.rb (class DummyParser): temporal fix for
- ripper test.
-
-Mon Dec 26 22:00:17 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * node.h, node.c, parse.y: implement a parser part for keyword
- arguments.
- This is a preparation for keyword argument (see [ruby-core:40290]).
-
- * gc.c (gc_mark_children): bookkeeping.
-
-Mon Dec 26 21:03:18 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * node.h, parse.y (new_args_gen), compile.c (iseq_set_arguments): use
- struct rb_args_info instead of NODEs.
- This is a preparation for keyword argument (see [ruby-core:40290]).
-
- * node.c (dump_node), gc.c (gc_mark_children, obj_free): bookkeeping.
-
-Mon Dec 26 20:59:51 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * node.h, parse.y (lambda, f_larglist): remove NEW_LAMBDA hack.
- This is a preparation for keyword argument (see [ruby-core:40290]).
-
-Mon Dec 26 22:01:19 2011 Hiroshi Shirosaki <h.shirosaki@gmail.com>
-
- * io.c (rb_sys_fail_path): move the definition.
- Move above for using it in set_binary_mode_with_seek_cur().
-
- * io.c (set_binary_mode_with_seek_cur): fix improper seek cursor.
- Seeking file cursor with setting binary mode has possibility to
- cause infinite loop. Fixed the bug and refined error handling.
- Introduced at r34043.
-
- And cleanups as below.
- Remove unnecessary parentheses of `fptr`.
- Use return value of setmode().
-
- * test/ruby/test_io_m17n.rb
- (TestIO_M17N#test_seek_with_setting_binmode): add a test for above.
- [ruby-core:41671] [Bug #5714]
-
-Mon Dec 26 17:01:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (LIBRUBY_A): depends on main.o since r33774.
- [ruby-core:41786] [Bug #5796]
-
-Mon Dec 26 13:07:08 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_io.rb (TestIO#test_autoclose): Tempfile.new doesn't
- accept the block argument.
-
-Mon Dec 26 13:06:52 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit.rb: Avoid zombie processes on "--separate" option
- added at r34121.
-
-Mon Dec 26 04:01:23 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_cipher.c: Update and complete documentation.
-
-Sun Dec 25 23:16:11 2011 Shota Fukumori <sorah@tubusu.net>
-
- * test/testunit/test_parallel.rb (test_separate): Test for "--separate"
- option (r34121)
-
-Sun Dec 25 22:39:49 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit.rb (_run_parallel):
- New option "--separate" for test/unit; when running tests with this
- option, a job process will be restarted after one test file has done.
- This means all test files will run with separated process.
-
- * lib/test/unit/parallel.rb: Fix for above. Now parallel.rb puts
- "ready!" for first ready, "ready" for afters.
-
-Sun Dec 25 00:02:15 2011 Luis Lavena <luislavena@gmail.com>
-
- * configure.in: change --with-ntver to --with-winnt-ver to be more
- descriptive in the context. [ruby-core:41794]
-
-Sat Dec 24 23:25:15 2011 Luis Lavena <luislavena@gmail.com>
-
- * configure.in: add --with-ntver option to match win32/configure.bat
- functionality. Set 0x0501 as default. [ruby-core:35010]
- [ruby-core:35035]
-
-Sat Dec 24 12:38:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * proc.c (proc_call): get rid of optimization-out by clang.
-
- * proc.c (rb_proc_call, rb_proc_call_with_block): ditto.
-
-Sat Dec 24 10:56:32 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/readline/readline.c (readline_readline): check if outstream
- is closed to get rid of a bug of readline 6. [ruby-dev:45043]
- [Bug #5803]
-
-Sat Dec 24 06:59:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/readline/test_readline.rb (test_line_buffer__point): use
- lambda not to exit entire method by "return". or "next" for
- proc. [ruby-dev:45042] [Bug #5802]
-
-Sat Dec 24 01:20:39 2011 Kazuki Tsujimoto <kazuki@callcc.net>
-
- * vm_eval.c (send_internal): PASS_PASSED_BLOCK_TH must be placed
- just before calling rb_call0.
-
- * bootstraptest/test_flow.rb: add a test for above.
-
-Sat Dec 24 00:55:16 2011 Tanaka Akira <akr@fsij.org>
-
- * lib/tempfile.rb (Tempfile#initialize): warn if a block is given.
-
-Fri Dec 23 16:14:30 2011 TAKAO Kouji <kouji@takao7.net>
-
- * ext/readline/readline.c (readline_attempted_completion_function):
- in Readline module with GNU Readline 6 case, Readline module
- resets completion_append_character to " ", after it executes
- completion. So, Readline module stores
- completion_append_character, and Readline module always sets it
- after Readline module executes completion. [ruby-dev:43456]
- [Feature #4635]
-
-Fri Dec 23 15:59:05 2011 TAKAO Kouji <kouji@takao7.net>
-
- * ext/readline/readline.c (Init_readline): libedit check
- rl_getc_function only when rl_initialize() is called, and
- using_history() call rl_initialize(). This assignment should be
- placed before using_history(). [ruby-core:40641] [Bug #5539]
-
-Fri Dec 23 10:14:47 2011 Tanaka Akira <akr@fsij.org>
-
- * test/thread/test_queue.rb (test_thr_kill): show the number of loop
- run when the test failed.
-
-Fri Dec 23 09:23:48 2011 Tanaka Akira <akr@fsij.org>
-
- * test/test_pty.rb (test_pty_check_default): call PTY.check until
- "cat" command is finished.
-
-Fri Dec 23 06:03:00 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * common.mk: add "check succeeded" message.
-
- * README, README.ja: follow above change.
-
-Fri Dec 23 06:00:39 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * ext/bigdecimal/bigdecimal.h: add satisfy cc-mode comment.
- * util.c: ditto.
-
-Fri Dec 23 00:08:25 2011 Tanaka Akira <akr@fsij.org>
-
- * test/test_pty.rb (test_pty_check_default): "cat" may not terminated
- in the 0.1 second.
-
-Thu Dec 22 23:37:25 2011 Tanaka Akira <akr@fsij.org>
-
- * test/ruby/test_thread.rb (test_condvar_timed_wait): don't test the
- maximum sleep time. Ruby is not a real-time system.
-
-Thu Dec 22 22:37:45 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * thread_pthread.c (ping_signal_thread_list): remove return value.
- * thread_pthread.c (check_signal_thread_list): add a new function to
- check if signal thread list is empty.
- * thread_pthread.c (thread_timer): check signal thread list after
- timer_thread_function(). main thread might be added into signal thread
- list during timer_thread_function().
-
-Thu Dec 22 00:40:24 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * ext/bigdecimal/bigdecimal.c (VpMult, VpCtoV, VpSqrt): remove assigned
- but unused variables.
-
-Wed Dec 21 18:28:22 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * common.mk (newline.c, miniprelude.c): revert r33949 because the change
- broke mswin build, and the changer said no reason about the change.
- [ruby-dev:45016] [Bug #5783]
-
-Wed Dec 21 12:35:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_s_allocate): follow
- Allocation Framework. [Bug #5775]
-
-Wed Dec 21 02:25:36 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/emitter.c: fixing clang warnings. Thanks Joey!
-
-Wed Dec 21 01:06:00 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * ext/bigdecimal/README: Update redmine.ruby-lang.org to bugs.ruby-lang.org
- * ext/socket/ancdata.c: ditto
- * test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb: ditto
- * test/syck/test_yaml.rb: ditto
- * doc/ChangeLog-1.9.3: ditto
-
-Tue Dec 20 23:50:12 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * PStore content update perf optimization. Patch by Masaki Matsushita.
- See #5248.
-
- * lib/pstore.rb (save_data):
-
- * Delete inadequate Marshal check.
-
- * Deferred file truncation: when writing the new content, truncate
- the saved file to the data size after writing the data, instead of
- truncating whole bytes before writing data.
-
- * Deferred MD5 calculation: when comparing MD5 hash to check the
- content modification, calculate MD5 hash of new data iif the
- content length is differ from the old one.
-
- * Compare content size with String#bytesize instead of String#size.
-
-Tue Dec 20 21:00:30 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: uses to_integer instead.
- * test/date/test_switch_hitter.rb: added a test.
-
-Tue Dec 20 15:04:18 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * Make sure to clear $! when ignoring an exception
-
- * ext/openssl/ossl.c (ossl_pem_passwd_cb0, ossl_verify_cb):
- pem_passwd_cb and verify_cb ignores the exception raised in a
- callback proc so it should clear $! for subsequent execution.
-
- That's said, both subsequent processes for pem_passwd_cb and
- verify_cb raises another exception before leaking $! to Ruby world.
- We cannot test this fix in Ruby land.
-
- * test/openssl/test_pkey_rsa.rb
- (test_read_private_key_pem_pw_exception): Test for pem_passwd_cb +
- exception.
-
-Tue Dec 20 11:49:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/date/test_date_base.rb (test_jd): tests for
- [ruby-dev:45008].
-
-Tue Dec 20 10:20:48 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/date/date_core.c (wholenum): fix the type of the return value.
-
-Tue Dec 20 05:03:24 2011 Eric Hodel <drbrain@segment7.net>
-
- * README.ja: Update redmine.ruby-lang.org to bugs.ruby-lang.org
- * README: ditto
- * common.mk: ditto
- * man/erb.1: ditto
- * man/irb.1: ditto
- * man/ri.1: ditto
- * man/ruby.1: ditto
- * sparc.c: ditto
- * tool/install-sh: ditto
-
-Tue Dec 20 02:15:18 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: [ruby-dev:45008].
-
-Sun Dec 18 18:52:37 2011 Naohisa Goto <ngotogenome@gmail.com>
-
- * vm.c (vm_define_method): improve guard of iseq from GC. Fix
- failure or segmentation fault in test_singleton_method(TestGc)
- on sparc Solaris10 compiled with Oracle Solaris Studio 12.2.
- [Bug #5762] [ruby-dev:45000] [Bug #4178]
-
-Sun Dec 18 14:34:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/bigdecimal/bigdecimal.c (Init_bigdecimal): does not follow
- allocation framework right now. [ruby-core:41710] [Bug #5773]
-
-Sun Dec 18 12:42:48 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/to_ruby.rb: BigDecimals can be restored
- from YAML.
- * ext/psych/lib/psych/visitors/yaml_tree.rb: BigDecimals can be dumped
- to YAML.
- * test/psych/test_numeric.rb: tests for BigDecimal serialization
-
-Sun Dec 18 12:03:13 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/scalar_scanner.rb: Strings that look like dates
- should be treated as strings and not dates.
-
- * test/psych/test_scalar_scanner.rb: corresponding tests.
-
-Sun Dec 18 09:43:21 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * test/thread/test_queue.rb (test_thr_kill): extend timeout.
- this test takes a long time at slow machine.
-
-Sun Dec 18 09:36:51 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * test/ruby/envutil.rb (invoke_ruby): remove :timeout option before
- pass it to Kernel#spawn.
-
-Fri Dec 16 17:18:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * README, README.ja: 'make check' is preferable to 'make test'.
-
-Thu Dec 15 23:16:13 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * error.c (builtin_type_name): don't return pointer to the buffer of
- temporary String object.
-
-Thu Dec 15 17:56:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (argf_type): make typed data.
-
-Thu Dec 15 17:40:28 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * error.c (rb_check_type): fix typo.
-
-Thu Dec 15 14:48:35 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/strscan/strscan.c: use typed data with
- onig_region_memsize().
-
-Thu Dec 15 14:33:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * error.c (rb_check_typeddata): refine error message with
- including expected struct name.
-
-Thu Dec 15 13:15:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * regcomp.c (onig_region_memsize): implemented for memsize_of().
-
- * ext/objspace/objspace.c (memsize_of): use it.
-
-Thu Dec 15 10:44:54 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c (rb_ary_reject_bang, rb_ary_delete_if): update rdoc.
- documentation from Thomas Leitner <t_leitner AT gmx.at> in
- [ruby-core:41616]. [Bug #5752]
-
-Thu Dec 15 10:10:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/test_require.rb (test_race_exception): get rid of
- not-guaranteed timing issue. [ruby-core:41655] [Bug #5754]
-
-Wed Dec 14 21:58:42 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_io_m17n.rb
- (TestIO_M17N#test_{read_with_binmode_and_get[cs]}): only for Windows.
-
-Wed Dec 14 19:57:23 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * common.mk,Makefile.in,win32/Makefile.sub (ECHO1): move platform
- specific hack from common.mk to Makefile.in (and win32/Makefile.sub).
- [Bug #5711]
-
- * lib/mkmf.rb: we can generate Makefile as we like.
-
-Wed Dec 14 19:22:33 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c, include/ruby/win32.h (rb_w32_fd_is_text): new function.
-
- * win32/win32.c (init_stdhandle): set default mode of stdin as binmode.
-
- * io.c (set_binary_mode_with_seek_cur): new function to replace
- SET_BINARY_MODE_WITH_SEEK_CUR macro. now returns previous mode of the
- fd and take care of LF in rbuf.
-
- * io.c (do_writeconv): set text mode when needed.
-
- * io.c (io_read): need to change the mode of the IO to binmode
- temporally when the length for IO#read, because IO#read with length
- must behave so.
-
- * test/ruby/test_io_m17n.rb (TestIO_M17N#test_{read_with_length,
- read_with_length_binmode,get[cs]_and_read_with_binmode,
- read_with_binmode_and_get[cs],read_write_with_binmode}): tests for
- above changes.
-
- all patches are written by Hiroshi Shirosaki. [ruby-core:41496]
- [Feature #5714]
-
-Wed Dec 14 15:28:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * transcode.c (str_encode): about the extension of :fallback
- option since 1.9.3.
-
-Wed Dec 14 12:19:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * load.c (load_unlock): release loading barrier and then remove it
- from loading_table if it is not in-use. [Bug #5754]
-
- * thread.c (rb_barrier_release, rb_barrier_destroy): return
- whether any other threads are waiting on it.
-
-Wed Dec 14 11:23:45 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * thread_pthread.c (ubf_select): call rb_thread_wakeup_timer_thread()
- only when it is not timer_thread. [Bug #5757] [ruby-dev:44985]
- patched by Tomoyuki Chikanaga.
-
-Wed Dec 14 10:20:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * load.c (load_lock): delete the loading barrier if it has been
- destroyed.
-
- * thread.c (rb_barrier_wait): return nil for recursive lock
- instead of false, to distinguish it from destroyed barrier.
-
-Wed Dec 14 01:24:55 2011 okkez <okkez000@gmail.com>
-
- * thread_pthread.c (rb_thread_create_timer_thread): fix memory
- leak. [ruby-dev:44904] [Bug #5688]
-
-Wed Dec 14 00:01:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (primary): point method name line. [ruby-core:40936]
- [Bug #5614]
-
-Tue Dec 13 23:43:48 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * error.c (name_err_mesg_to_str): clear rb_thread_t::errinfo when
- ignore exception under rb_protect(). [ruby-core:41612] [Bug #5755]
-
- * test/ruby/test_exception.rb (test_exception_in_name_error_to_str):
- add a corresponding test.
-
-Tue Dec 13 16:13:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * load.c (load_unlock): all threads requiring one file should
- share same loading barrier, so it must be kept alive while those
- are waiting on it. [ruby-core:41618] [Bug #5754]
-
-Tue Dec 13 07:30:14 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * lib/webrick/httpresponse.rb (setup_header): 1xx responses
- are allowed to have Keep-Alive connections.
-
- * test/webrick/test_httpresponse.rb: corresponding test.
-
-Tue Dec 13 07:13:28 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * lib/webrick/httpresponse.rb (setup_header): 204 and 304 responses
- are allowed to have a Keep-Alive connection. [ruby-core:41581]
-
- * test/webrick/test_httpresponse.rb: corresponding test.
-
-Tue Dec 13 06:29:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (parser_magic_comment): should pass the proper value.
- [ruby-dev:44984][Bug #5753]
-
-Tue Dec 13 05:50:07 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_insnhelper.c (vm_yield_setup_block_args): splat single
- argument if optional arguments are defined not only mandatory or
- post arguments. [ruby-core:41557] [Bug #5730]
-
-Mon Dec 12 22:35:39 2011 Shugo Maeda <shugo@ruby-lang.org>
-
- * parse.y (stmt_or_begin): changed the error message for BEGIN not
- at toplevel. [ruby-dev:44963] [Bug #5738]
-
-Mon Dec 12 17:29:01 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * README: Fixed SupportedPlatforms URL in the README.
- patched by eMxyzptlk. https://github.com/ruby/ruby/pull/62
-
-Mon Dec 12 17:26:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * load.c (rb_feature_p): lazy assigned load_path searched in
- loading_table were not expanded, but all features, pushed to
- loading table, are expanded. a patch by Yura Sokolov
- <funny.falcon AT gmail.com> in [ruby-core:41545]. [Bug #5727]
-
-Mon Dec 12 15:41:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/stringio/stringio.c (strio_truncate): fix typo. patched by
- Nick Howard <ndh AT baroquebobcat.com>.
- https://github.com/ruby/ruby/pull/65
-
-Sun Dec 11 12:19:17 2011 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/imap.rb: includes the sequence number of UID in a error
- message. suggested by art lussos.
- [ruby-core:41413] [Feature #5692]
-
-Sun Dec 11 11:42:10 2011 Kazuki Tsujimoto <kazuki@callcc.net>
-
- * ext/syslog/syslog.c: fix a typo. [ruby-core:41585] [Bug #5740]
-
-Sun Dec 11 10:48:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * error.c (exit_initialize): deal with true and false as well as
- Kernel#exit. [ruby-dev:44951] [Bug #5728]
+ * lib/irb/locale.rb (IRB::Locale::LOCALE_NAME_RE):
+ some platform has a locale without territory but with
+ encoding.
+ (#each_sub_locale): ditto.
-Sun Dec 11 10:37:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Jan 9 14:47:50 2011 TAKAO Kouji <kouji@takao7.net>
- * object.c (rb_check_to_int): new function to convert a VALUE to
- an Integer if possible, but returns nil instead of raising an
- exception otherwise.
+ * ext/readline/readline.c: apply a patch from Nobuyoshi Nakada.
+ fixed #3616 [ruby-core:31484] IRB + readline incorrectly counts
+ non-printing characters in prompt
-Sun Dec 11 10:34:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Jan 8 21:47:26 2011 Tanaka Akira <akr@fsij.org>
- * process.c (rb_exit_status_code): extract from rb_f_exit_bang and
- rb_f_exit. assume 0 to be success in Kernel#exit! too.
+ * enum.c (enum_sort_by): use rb_ary_resize.
+ (ary_cutoff): removed.
-Fri Dec 9 19:24:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Jan 8 21:24:17 2011 Tanaka Akira <akr@fsij.org>
- * enc/trans/iso-8859-16-tbl.rb: add ISO-8859-16 converter.
+ * pack.c (swapf): compilation condition simplified.
+ (swapd): ditto.
- * enc/trans/single_byte.trans: ditto.
+Sat Jan 8 20:51:25 2011 Tanaka Akira <akr@fsij.org>
-Fri Dec 9 14:28:40 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * pack.c (swapd): remove duplicated code.
- * file.c (file_path_convert): don't convert it when the path string is
- ascii only. [ruby-core:41556] [Bug #5733]
- tests are contributed by nobu.
+Sat Jan 8 19:28:55 2011 Tanaka Akira <akr@fsij.org>
-Fri Dec 9 08:00:15 2011 Luis Lavena <luislavena@gmail.com>
+ * thread.c: parenthesize macro arguments.
- * include/ruby/win32.h: undef stat to silence mingw-w64 stat
- redefinition warnings (GCC 4.6.3).
+Fri Jan 7 23:07:40 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Dec 8 23:38:24 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * lib/mkmf.rb (configuration): backref needs to capture.
- * variable.c (set_const_visibility): clear inline-cache when constant's
- visibility is modified. [ruby-dev:44929]
+Fri Jan 7 21:57:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_module.rb (test_private_constants_clear_inlinecache):
- add test for it.
-
-Thu Dec 8 23:26:11 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/extmk.rb (extract_makefile): should sort after map, not before
- it. in this case there is no difference, but we should write better
- code. this bad smell was caught by nagachika.
-
-Thu Dec 8 22:31:13 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * misc/ruby-mode.el (ruby-mode-variables), misc/ruby-style.el:
+ show trailing whitespace.
- * ext/extmk.rb (extract_makefile): need to sort the array of current
- srcs before comparing to the sorted old srcs.
- fixed the problem that the configuring stage of exts were always
- run, introduced at r33801.
-
-Thu Dec 8 13:26:24 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/rexml/test_order.rb (OrderTester#test_more_ordering): use
- Zlib::GzipReader.open instead of Zlib::GzipReader.new with File.new.
- fixed a test error on Windows introduced at r33946.
+ * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): highlight
+ regexp after open bracket. [ruby-core:34183]
-Thu Dec 8 13:11:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Jan 7 00:37:35 2011 Tanaka Akira <akr@fsij.org>
- * test/ruby/test_process.rb (TestProcess#test_sete[gu]id): silently
- skip if not implemented such functions (such as, on Windows).
- fixed test errors on Windows introduced at r33953.
+ * string.c: parenthesize macro arguments.
-Thu Dec 8 12:57:50 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Jan 6 22:42:02 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
- * ext/socket/extconf.rb: forgotten to define HAVE_SOCKETPAIR for
- windows.
- fixed test errors on Windows introduced at r33947.
+ * bignum.c (bigmul1_karatsuba): avoid overflow that make assertion
+ fail in certain case. this patch is contributed from Ray Chason
+ <chasonr at gmail.com> in personal communication.
-Thu Dec 8 12:11:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Jan 6 20:55:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
- * configure.in (RUBY_WERROR_FLAG): append all warning flags which
- are enabled to compile, so that printf format modifiers properly
- fail. [ruby-core:41351] [Bug #5679]
+ * lib/mkmf.rb (create_makefile): ignore rest from first dot from
+ TARGET to generate init function name.
+ this is followup of r30464.
-Thu Dec 8 07:20:15 2011 Eric Hodel <drbrain@segment7.net>
+Thu Jan 6 11:27:01 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * doc/re.rdoc: Document difference between match and =~, options with
- Regexp.new and global variables. Patch by Sylvain Daubert.
- [Ruby 1.9 - Bug #5709]
+ * ext/psych/lib/psych/json/tree_builder.rb (start_mapping): tags
+ should not be included in JSON mapping
-Thu Dec 8 06:53:10 2011 Eric Hodel <drbrain@segment7.net>
+Thu Jan 6 09:23:33 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * doc/re.rdoc: Fix example code to match documentation. Patch by
- Jarno Lamberg. [Ruby 1.9 - Bug #5624]
+ * lib/net/protocol.rb (eof?): BufferedIO should proxy eof? to the
+ underlying IO object.
-Wed Dec 7 19:04:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Jan 6 09:12:31 2011 Aaron Patterson <aaron@tenderlovemaking.com>
- * configure.in (rpath): fix typo in the help string. a patch from
- Yuji Yamano <yyamano AT kt.rim.or.jp> in [ruby-list:48568].
+ * lib/mkmf.rb (configuration): fixing gsub when multiple error flags
+ are passed to GCC.
-Wed Dec 7 18:55:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Jan 6 05:25:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm.c (vm_set_top_stack, vm_set_eval_stack): check for stack
- overflow with stack_max before push new frame. [ruby-core:41520]
- [Bug #5720]
+ * array.c (rb_ary_modify): export.
- * vm.c (vm_set_main_stack): no stack overflow chances after
- vm_set_eval_stack().
+Thu Jan 6 05:14:41 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Dec 7 09:58:15 2011 Eric Hodel <drbrain@segment7.net>
+ * ext/stringio/stringio.c (get_strio, strio_set_string)
+ (strio_reopen): check if frozen. [ruby-core:33648]
- * ext/bigdecimal/bigdecimal.c: Document +@, -@, hash, INFINITY, Nan.
- Patch by Sylvain Daubert. [Ruby 1.9 - Feature #5622]
+Thu Jan 6 05:10:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Dec 7 09:48:00 2011 Eric Hodel <drbrain@segment7.net>
+ * array.c (rb_ary_resize): new utility function. [ruby-dev:42912]
- * io.c (Init_IO): Mention io/console methods. [Ruby 1.9 - Bug #5602]
- * ext/io/console/console.c: Mention that io/console must be required
- similar to lib/time.rb
+Thu Jan 6 05:03:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Dec 7 08:04:31 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * dln.c (init_funcname_len): ignore rest from first dot.
+ [ruby-dev:41774]
- * ext/psych/lib/psych.rb (module Psych): parse and load methods take
- an optional file name that is used when raising Psych::SyntaxError
- exceptions
- * ext/psych/lib/psych/syntax_error.rb (module Psych): allow nil file
- names and handle nil file names in the exception message
- * test/psych/test_exception.rb (module Psych): Tests for changes.
+Thu Jan 6 02:55:48 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Tue Dec 6 18:26:33 2011 Tanaka Akira <akr@fsij.org>
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: use YAML 1.0 output
+ format for serializing nil values. Thanks Eric Hodel!
- * ext/dbm/dbm.c: use db_version() instead of DB_VERSION_STRING to
- detect runtime Berkeley DB version.
- use dpversion instead of _QDBM_VERSION to detect runtime QDBM
- version.
- [ruby-dev:44948]
+ * test/psych/test_nil.rb: test for nil values
-Tue Dec 6 12:30:41 2011 Tanaka Akira <akr@fsij.org>
+Wed Jan 5 14:21:34 2011 Mark Dodwell <hi@mkdynamic.co.uk>
- * ext/dbm/extconf.rb: detect gdbm_version in libgdbm.
+ * string.c: fix rdoc typo.
+ https://github.com/shyouhei/ruby/pull/3
- * ext/dbm/dbm.c: make DBM::VERSION more informative for gdbm, qdbm and
- Berkeley DB 1.x. [ruby-dev:44944]
+Wed Jan 5 14:06:01 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-Tue Dec 6 07:26:37 2011 Eric Hodel <drbrain@segment7.net>
+ * test/rdoc/test_rdoc_options.rb (TestRDocOptions#test_check_files):
+ skip on Windows because chmod 0 doesn't mean unreadable by owner.
- * range.c: Improve documentation for Range. Patch by Chris Zetter.
- [Ruby 1.9 - Bug #5656]
+Wed Jan 5 13:56:54 2011 Akinori MUSHA <knu@iDaemons.org>
-Mon Dec 5 19:08:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/net/http.rb (Net::HTTP#get): A header hash given should not
+ be modified.
- * regparse.c (PFETCH_READY): separate gcc specific trick.
+Wed Jan 5 12:10:08 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-Mon Dec 5 19:01:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/dl/{cfunc.c,dl.h,handle.c}, ext/fiddle/fiddle.{h,c}: Use _WIN32
+ rather than checking for windows.h. Thanks Jon Forums!
+ [ruby-core:33977]
- * process.c (proc_seteuid_m): fix argument.
+Sat Jan 1 17:02:50 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
- * test/ruby/test_process.rb (test_geteuid): fix typo.
+ * lib/irb/locale.rb (IRB::Locale#search_file): make it possible
+ to load a localization from a gem.
+ (IRB::Locale#lc_path): obsoleted because of the change of #search_file
+ (IRB::Locale#each_localized_path): new private method, based on
+ lc_path
+ (IRB::Locale#find): follows the change of #search_file.
+ (IRB::Locale#load): removed duplicate with #find.
- * test/ruby/test_process.rb (test_getegid, test_set[eg]uid): add.
+Sat Jan 1 11:44:42 2011 Tanaka Akira <akr@fsij.org>
-Mon Dec 5 18:56:55 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * strftime.c: parenthesize macro arguments.
- * bignum.c (big_rshift), compile.c (validate_label,
- iseq_build_from_ary_exception), cont.c (cont_capture), dir.c
- (dir_open_dir), gc.c (objspace_each_objects), io.c (pipe_open)
- (rb_io_advise), parse.y (parser_compile_string)
- (rb_parser_compile_file), proc.c (binding_free), process.c
- (rb_proc_exec_n, rb_seteuid_core, proc_setegid, rb_setegid_core)
- (p_uid_exchange, p_gid_exchange), regparse.c (strdup_with_null),
- signal.c (sig_dfl), vm.c (rb_iseq_eval, rb_iseq_eval_main),
- vm_insnhelper.c (vm_expandarray): suppress
- unused-but-set-variable warnings.
+Sat Jan 1 11:10:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * class.c (rb_obj_methods), compile.c (iseq_compile_each),
- iseq.c(iseq_load, rb_iseq_parameters), pack.c (pack_pack),
- regcomp.c (is_not_included, update_string_node_case_fold),
- transcode.c (rb_econv_open0, make_replacement),
- vm_eval.c (raise_method_missing): remove unused variable.
+ * ext/zlib/zlib.c: take care of platforms where long is bigger
+ than int.
- * signal.c (reserved_signal_p): static.
+Sat Jan 1 11:03:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Dec 5 14:27:23 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * NEWS (optparse): shell completion support.
- * include/ruby/{subst.h,win32.h}, ext/socket/rubysocket.h: revert
- r33876. [ruby-core:41475] [Bug #5706]
+ * misc/README (rb_optparse.{bash,zsh}): for shell completion.
- * ext/socket/extconf.rb: the alternative hack for [Bug #5675].
+ * include/ruby/intern.h (VALUE rb_ary_print_on): I have never seen
+ this function anywhere.
-Mon Dec 5 10:18:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Sat Jan 1 04:20:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/zlib/zlib.c (rb_gzreader_initialize): revert a part of r33937.
- 1st, to change the mode of an IO is very sensitive problem, so
- the maintainer of this library should judge it.
- 2nd, usually Zlib::GzipReader.new is not called directly. #initialize
- is called via .open, and in the method the I/O is opened in binary
- mode, so there is no problem without changing the mode in #initialize.
+ * win32/win32.c (rb_w32_write_console): don't raise exception when
+ the conversion is for writing to console.
+ Patched by Heesob Park [ruby-core:33999]
-Sun Dec 4 22:53:12 2011 Tanaka Akira <akr@fsij.org>
+Fri Dec 31 12:02:06 2010 Tanaka Akira <akr@fsij.org>
- * lib/tempfile.rb: don't use lock directory. [ruby-dev:39197]
+ * enum.c (enum_sort_by): use less temporary objects.
-Sun Dec 4 22:34:43 2011 Tanaka Akira <akr@fsij.org>
+Fri Dec 31 11:46:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/tempfile.rb (Tempfile::MAX_TRY): remove unused constant.
+ * configure.in (warnflags), lib/mkmf.rb (configuration): turn
+ warnings into errors only for bundled extensions.
+ [ruby-core:33815]
-Sun Dec 4 12:11:28 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+Fri Dec 31 11:15:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/pp.rb: fix rdoc.
+ * ext/zlib/zlib.c (sizeof): zlib.h mistakenly assumes the result
+ of sizeof to be int, not size_t.
-Sun Dec 4 12:03:16 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Dec 31 10:27:34 2010 Tanaka Akira <akr@fsij.org>
- * lib/delegate.rb (Delegator#methods): Kernel#methods receives
- zero or one argument. [ruby-core:37118] [Bug #4882]
+ * st.c: parenthesize macro arguments.
-Sun Dec 4 10:15:00 2011 Luis Lavena <luislavena@gmail.com>
+Fri Dec 31 03:23:26 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/zlib/zlib.c (rb_gzreader_initialize): use binary mode by default
- under Windows. Patch by Hiroshi Shirosaki. [ruby-core:40706]
- [Feature #5562]
+ * vsnprintf.c (BSD__uqtoa): Fix overflow when long != quad_t.
+ patched by Peter Weldon <peter.weldon AT null.net>
+ [ruby-core:33985]
- * include/ruby/encoding.h (void rb_econv_binmode): define NEWLINE
- decorator.
+Fri Dec 31 03:00:34 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * io.c (rb_cloexec_fcntl_dupfd): Introduce NEED_READCONV and
- NEED_WRITECONV to replace universal newline decorator by CRLF only
- when required to improve file reading and writing under Windows.
- Patch by Hiroshi Shirosaki. [ruby-core:40706] [Feature #5562]
- * io.c (do_writeconv): adjust binary mode if required.
- * io.c (read_all, appendline, swallow, rb_io_getline_1): ditto.
- * io.c (io_getc, rb_io_each_codepoint, rb_io_ungetc): ditto.
- * io.c (rb_io_binmode, rb_io_ascii8bit_binmode): ditto.
- * io.c (rb_io_extract_modeenc, rb_sysopen): ditto.
- * io.c (pipe_open, prep_stdio, io_encoding_set): ditto.
- * io.c (rb_io_s_pipe, copy_stream_body): ditto.
+ * Makefile.in: remove unnecessary semicolons.
- * test/ruby/test_io_m17n.rb (EOT): add test for pipe and stdin in
- binary mode.
+Thu Dec 30 23:09:47 2010 wanabe <s.wanabe@gmail.com>
- * win32/win32.c (init_stdhandle): remove O_BINARY from stdhandle
- initialization.
- * win32/win32.c (rb_w32_write): use FTEXT mode accordingly.
+ * vm.c (vm_define_method): guard iseq from GC while method definition.
+ [ruby-dev:42832]
-Sat Dec 3 20:49:16 2011 Yusuke Endoh <mame@tsg.ne.jp>
+Thu Dec 30 20:18:32 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * variable.c (set_const_visibility): print a warning when no argument
- is passwd to Module#private_constant. [ruby-list:48558]
+ * win32/Makefile.sub: ditto.
- * vm_method.c (set_method_visibility): ditto for
- Module#private_class_method.
+Thu Dec 30 20:57:09 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sat Dec 3 20:43:14 2011 Yusuke Endoh <mame@tsg.ne.jp>
+ * Makefile.in: Check V=1 argument if run "make clean" or similar.
- * variable.c (set_const_visibility): Module#private_constant has
- changed the visibility of only the first argument. Now it changes
- all of them. [ruby-list:48558]
+Thu Dec 30 20:41:50 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/ruby/test_module.rb: add a test for above.
+ * Makefile.in: Kill ugly line continuation.
-Sat Dec 3 07:17:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Dec 30 11:49:40 2010 Tanaka Akira <akr@fsij.org>
- * Makefile.in (CFLAGS): append ARCH_FLAG.
+ * sprintf.c: parenthesize macro arguments.
- * configure.in (ARCH_FLAG): exclude from CFLAGS.
+Wed Dec 29 21:20:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in (UNIVERSAL_INTS): include short int. fix for
- test/mkmf.
+ * io.c (maygvl_copy_stream_wait_readwrite): define if USE_SENDFILE
-Fri Dec 2 15:48:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Dec 29 20:37:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/bigdecimal/bigdecimal.c (VpAllocReal): reduce extra frac.
+ * ext/extmk.rb: strip current directory prefix.
-Fri Dec 2 15:41:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * enc/depend (clean): remove name2ctype.h when out-of-place build.
- * configure.in: check whether -pie or -Wl,-pie is valid as
- LDFLAGS. [ruby-core:41438] [Bug#5697]
+ * win32/Makefile.sub (clean-enc): pass V to inferior make.
- * configure.in: use $linker_flag for LDFLAGS option which is not
- limited to particular platforms.
+Wed Dec 29 18:23:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Thu Dec 1 23:21:58 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * re.c (rb_reg_expr_str): need to escape if the coderange is invalid.
- * thread_pthread.c (thread_timer): call prctl(PR_SET_NAME) only if
- PR_SET_NAME is available.
+Wed Dec 29 10:06:51 2010 Tanaka Akira <akr@fsij.org>
-Thu Dec 1 22:31:16 2011 Tanaka Akira <akr@fsij.org>
+ * signal.c: parenthesize macro arguments.
- * io.c (linux_get_maxfd): change local variable name.
+Wed Dec 29 07:22:15 2010 Eric Hodel <drbrain@segment7.net>
-Thu Dec 1 16:59:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rake/rdoctask.rb: Deprecate in favor of rdoc/task.
- * ext/socket/extconf.rb: add arguments for macro calls.
- [ruby-core:41370] [Bug#5681]
+Wed Dec 29 07:07:06 2010 Eric Hodel <drbrain@segment7.net>
-Thu Dec 1 16:20:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rdoc: Import RDoc 3.1
- * lib/mkmf.rb (MakeMakefile#try_func): fix broken patch at r33834.
+Tue Dec 28 18:36:38 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Thu Dec 1 14:43:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * error.c, include/ruby/intern.h (rb_compile_error_with_enc): new
+ function to raise syntax error, with source encoding'ed message.
- * ext/bigdecimal/bigdecimal.h (Real): suppress false warning from
- clang. [ruby-core:41418] [Bug#5693]
+ * parse.y (compile_error): use above function.
+ [ruby-core:33951] (#4217)
-Thu Dec 1 10:31:55 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Dec 28 07:37:38 2010 Tanaka Akira <akr@fsij.org>
- * configure.in (LDFLAGS): -fstack-protector is always needed to
- link static library created with it. [ruby-core:41387]
- [Bug#5686]
+ * ruby.c: parenthesize macro arguments.
-Thu Dec 1 07:03:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue Dec 28 07:17:11 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * configure.in: add sys/prctl.h test.
- * thread_pthread.c (thread_timer): call prctl(PR_SET_NAME) to change
- thread name. It may help to debug.
+ * NEWS: add ARGF.write and so on.
-Wed Nov 30 23:35:45 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Dec 28 07:12:38 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * variable.c (rb_path2class): don't raise NameError when the middle
- constant of the path is not defined but defined on toplevel.
- [ruby-core:41410] [Bug #5691]
+ * NEWS: add new magic-comment. (warn-indent) [ruby-core:25442]
-Wed Nov 30 20:02:02 2011 Martin Duerst <duerst@it.aoyama.ac.jp>
+Tue Dec 28 04:32:37 2010 Aaron Patterson <aaron@tenderlovemaking.com>
- * transcode.c: Simplified rb_econv_binmode, avoided a warning on cygwin.
+ * ext/fiddle/extconf.rb: check for windows.h while building fiddle.
+ Thanks Jon Forums! [ruby-core:33923]
-Wed Nov 30 08:57:07 2011 Eric Hodel <drbrain@segment7.net>
+Tue Dec 28 01:45:12 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * lib/mkmf.rb: Use MakeMakefile's rm_f to avoid conflict with Rake or
- FileUtils.
- * test/ruby/test_module.rb: Hide MakeMakefile's inclusion in Object
+ * NEWS: Add Zlib.deflate and Zlib.inflate.
+ [ruby-dev:42833]
-Wed Nov 30 09:12:43 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Dec 27 21:22:33 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/rdoc/encoding.rb (RDoc::Encoding.read_file): fixup newline chars
- on Windows.
- see https://github.com/rdoc/rdoc/issues/87
+ * win32/configure.bat: Remove obsoleted coding rule. Now, we
+ don't support to build on Windows 95/98 and Me.
- * test/rdoc/test_rdoc_markup_pre_process.rb
- (TestRDocMarkupPreProcess#test_include_file,
- TestRDocMarkupPreProcess#test_include_file_encoding_incompatible):
- follow above change.
+Mon Dec 27 18:27:13 2010 Tanaka Akira <akr@fsij.org>
-Wed Nov 30 09:09:37 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * re.c: parenthesize macro arguments.
- * ext/psych/parser.c (parse): parse method can take an option file
- name for use in exception messages.
- * test/psych/test_parser.rb: corresponding tests.
+Mon Dec 27 15:22:23 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Tue Nov 29 09:07:59 2011 Eric Hodel <drbrain@segment7.net>
+ * win32/README.win32: note to need NT based OS to build ruby.
- * lib/mkmf.rb: Fix indentations of constants at end of module.
- Document some constants.
+Mon Dec 27 12:14:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Tue Nov 29 09:58:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * common.mk (EXTMK_ARGS): specify to pass macro V, because nmake
+ doesn't pass it via MAKEFLAGS.
- * io.c (rb_write_error2): suppress unused variable warning.
+Mon Dec 27 10:33:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Nov 29 07:45:26 2011 Eric Hodel <drbrain@segment7.net>
+ * ext/zlib/zlib.c (Init_zlib): Add Zlib.deflate and Zlib.inflate.
+ [ruby-dev:42833]
- * lib/mkmf.rb: Wrap comments to 78 columns and clean up formatting.
+Mon Dec 27 07:38:07 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-Tue Nov 29 05:54:18 2011 Eric Hodel <drbrain@segment7.net>
+ * misc/rb_optparse.zsh: add compdef for generator.
- * lib/mkmf.rb: Wrap mkmf.rb in module MakeMakefile to clean up Object
- documentation. [Ruby 1.9 - Feature #5658]
- * ext/extmk.rb: Use MakeMakefile::CONFIG instead of Object::CONFIG
- * test/mkmf/base.rb: ditto
+Mon Dec 27 07:32:07 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-Tue Nov 29 00:08:57 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+ * lib/optparse.rb (OptionParser#compsys): escape brackets too.
+ [ruby-dev:42754]
- * common.mk (INSTRUBY_ARGS): added --mantype to apply mdoc2man.rb
- to man pages. Fixes #5598.
- (do-install-nodoc, do-install-local, do-install-man,
- dont-install-nodoc, dont-install-local, dont-install-man):
- No longer needs --mantype.
+Mon Dec 27 01:30:08 2010 Tanaka Akira <akr@fsij.org>
- Reported by Rainer Orth <ro AT cebitec.uni-bielefeld.de>,
- patch by George Koehler <xkernigh AT netscape.net>.
+ * ext/socket/mkconstants.rb: add IF_NAMESIZE.
+ add a default for INET6_ADDRSTRLEN.
-Mon Nov 28 22:26:31 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Dec 26 23:49:47 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/rake/test_rake_directory_task.rb
- (TestRakeDirectoryTask#test_directory_win32): shouldn't create any
- file/directory on root directory. create on @tempdir (= Dir.pwd).
- see https://github.com/jimweirich/rake/issues/91
+ * win32/Makefile.sub: suppress a strange error message when RMALL
+ found no such file.
+ * win32/rmall.bat: new.
-Mon Nov 28 12:57:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Dec 26 21:23:23 2010 <kosaki.motohiro@gmail.com>
- * io.c (rb_write_error2): fwrite() returns ssize_t.
+ * win32/Makefile.sub: fix 'nmake clean-enc' breakage since r28322.
-Mon Nov 28 12:47:19 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Dec 26 22:25:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * parse.y (nodetype, nodeline): static. these functions are for
- debugging, and not intend to be public.
+ * ext/ripper/depend (ripper.y): fix messages with nmake.
+ [ruby-dev:42896]
-Mon Nov 28 12:37:54 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Dec 26 22:24:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * gc.c (initial_params): static. it seems to be forgotten at r33501.
+ * file.c (file_expand_path): get rid of warnings caused by
+ -Wdeclaration-after-statement on cygwin.
-Mon Nov 28 12:32:24 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Dec 26 20:28:34 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * include/ruby/win32.h, win32/win32.c (GetCurrentThreadHandle): remove
- unused old API.
+ * process.c (before_exec): add small comment.
-Mon Nov 28 12:29:20 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Dec 26 20:52:21 2010 Tanaka Akira <akr@fsij.org>
- * win32/mkexports.rb (Exports#initialize): remove old symbol name.
+ * ext/socket/mkconstants.rb: define INET_ADDRSTRLEN as 16 if not
+ available. fix compilation error on mswin32-60. reported by nobu.
-Mon Nov 28 12:15:28 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Dec 26 19:37:37 2010 Tanaka Akira <akr@fsij.org>
- * win32/mkexports.rb (Exports#read_substitution): need to read
- from subst.h too. [Bug #5675]
+ * ext/socket/option.c: define IFNAMSIZ if not available.
+ fix compilation error on mingw32. reported by nobu.
-Mon Nov 28 11:46:35 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Dec 26 12:16:29 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (rb_io_flush): release GVL during fsync() on Windows.
+ * lib/rdoc/ri/paths.rb (RDoc::RI::Paths::HOMEDIR): no exception if
+ HOME is not set. [ruby-core:33867]
-Mon Nov 28 11:00:25 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Dec 26 11:39:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * include/ruby/subst.h: typo of r33876.
+ * parse.y (stmt): missing ripper rule. i.e., `a::B ||= c 1'.
+ http://twitter.com/#!/wannabe53/status/18797576396472321
+ http://twitter.com/#!/wannabe53/status/18798416150663168
-Mon Nov 28 10:36:00 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Dec 26 11:15:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * include/ruby/subst.h: moved Windows specific substitutions from
- win32.h.
+ * test/with_different_ofs.rb (DifferentOFS): should not affect
+ original classes.
- * ext/socket/rubysocket.h: include ruby/subst.h. [Bug #5675]
+Sun Dec 26 09:35:07 2010 Tanaka Akira <akr@fsij.org>
-Mon Nov 28 10:20:58 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * rational.c: parenthesize macro arguments.
- * win32/{Makeilfe.sub,win32.c} (FILE_COUNT, FILE_READPTR): move the
- definitions from config.h to win32.c. I dared to have left such
- macros, for other future compiler support.
- [ruby-core:41313] [Bug #5674]
+Sun Dec 26 09:22:19 2010 Tanaka Akira <akr@fsij.org>
-Mon Nov 28 09:28:30 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/socket/option.c (rb_if_indextoname): new function to abstract
+ environments without if_indextoname.
+ (inspect_ipv6_multicast_if): new function to inspect
+ IPV6_MULTICAST_IF.
+ Socket::Option.new(:INET6, :IPV6, :MULTICAST_IF,
+ [2].pack("I!")).inspect is
+ "#<Socket::Option: INET6 IPV6 MULTICAST_IF eth0>".
- * win32/win32.c (rb_w32_uchmod): typo. [Bug#5671] [ruby-dev:44898]
+Sun Dec 26 04:31:15 2010 Luis Lavena <luislavena@gmail.com>
- * test/ruby/test_file.rb (TestFile#test_chmod_m17n): test of above bug.
+ * ext/dl/win32/registry.rb: Corrected RegCreateKeyExA signature.
+ Patch by Rafal Michalski [ruby-core:33874] [Ruby 1.9-Bug#4203]
-Sun Nov 27 21:25:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Dec 26 02:31:58 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * configure.in: added -fno-strict-overflow. it suppress annoying
- -Wstrict-overflow warning.
+ * io.c (advice_arg_check): Change argument check.
+ Now, an unsupported advice makes NotImplementedError.
+ [ruby-dev:42887] [Ruby 1.9-Feature#4204]
-Sun Nov 27 20:58:02 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Dec 26 03:00:53 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * io.c (rb_write_error2): get rid of warning on linux. fwrite
- of glibc is tagged __attribute__ ((__warn_unused_result__))
- if _FORTIFY_SOURCE != 0.
- * vm_dump.c (rb_vm_bugreport): ditto.
+ * ext/socket/extconf.rb: Fix build error which was introduced r30372.
-Sun Nov 27 19:09:02 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Dec 26 01:37:10 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * configure.in (stack_protector): disable on mingw. [Bug#5676]
+ * ext/socket/extconf.rb: check the existence of if_indextoname().
- * Makefile.in (DLDFLAGS): also needs -fstack-protector.
- [Bug#5676]
+ * ext/socket/option.c: yesterday's akr's commits destroyed the build of
+ some unrelated platforms (such as Windows).
-Sun Nov 27 14:13:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Dec 25 23:29:11 2010 Tanaka Akira <akr@fsij.org>
- * configure.in: add -fstack-protector into XLDFLAGS as well as
- XCFLAGS if stack-protector is used.
+ * ext/socket/option.c (inspect_ipv4_add_drop_membership): new function
+ to inspect struct ip_mreq and struct ip_mreqn for
+ IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
+ Socket::Option.new(:INET, :IP, :ADD_MEMBERSHIP,
+ [239,255,99,81, 0,0,0,0].pack("CCCCCCCC")).inspect is now
+ "#<Socket::Option: INET IP ADD_MEMBERSHIP 239.255.99.81 0.0.0.0>".
+ (inspect_ipv4_multicast_if): new function to inspect struct in_addr
+ and struct ip_mreqn for IP_MULTICAST_IF.
+ Socket::Option.new(:INET, :IP, :MULTICAST_IF,
+ [192,168,0,7].pack("CCCC")).inspect is now
+ "#<Socket::Option: INET IP MULTICAST_IF 192.168.0.7>".
-Sun Nov 27 13:09:25 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/socket/extconf.rb: check struct ip_mreq and struct ip_mreqn.
- * configure.in: workaround to avoid MacOS X build error.
- Maybe autoconf 2.61 is slightly buggy. [ruby-core:41316]
+Sat Dec 25 22:49:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Nov 27 04:57:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/csv: DifferentOFS needs to be include in each classes.
- * configure.in (--no-undefined): r33840 breaks FreeBSD and DragonFly
- with gcc 4.4 or later. Their environ is in /usr/libexec/ld-elf.so.1,
- so it will be false negative.
+ * test/digest/test_digest_extend.rb (TestDigestExtend#setup):
+ should not depend on the result of previous tests
-Sun Nov 27 04:55:45 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/with_different_ofs.rb (DifferentOFS::WithDifferentOFS): give
+ name.
- * lib/net/http.rb (Net::HTTP::SSL_IVNAMES): rerefix 33701.
- SSL_ATTRIBUTES stores names for set_params, they are symbol.
- SSL_IVNAMES stores instance variable names.
+ * test/with_different_ofs.rb (DifferentOFS): test suite for test
+ suites affected by $,.
-Sun Nov 27 00:16:07 2011 Tanaka Akira <akr@fsij.org>
+ * test/digest/test_digest_extend.rb (TestDigestExtend): should not
+ assume $, invariant.
- * io.c (copy_stream_body): use 0666 for permission argument for open.
- [ruby-core:40865]
+ * test/csv/test_data_converters.rb, test/csv/test_table.rb: don't
+ call setup within tests.
-Sat Nov 26 23:01:38 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Sat Dec 25 20:01:40 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/openssl/test_engine.rb: remove side effect of generic engine
- load by explicitly loading software-based "openssl" engine for
- all tests.
+ * io.c (pipe_open): Added rb_thread_atfork(). We must reinitialize
+ GVL at new process creation.
-Sat Nov 26 20:41:48 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Dec 25 18:26:55 2010 Tanaka Akira <akr@fsij.org>
- * lib/net/http.rb (Net::HTTP.get_response): enable use_ssl
- if given URI object is https.
- patched by Mark Ferlatte [ruby-core:40665] [Bug #5545]
+ * ext/socket/option.c (inspect_ipv6_mreq): new function to inspect
+ struct ipv6_mreq for IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP.
+ Socket::Option.new(:INET6, :IPV6, :JOIN_GROUP,
+ [0xff12,0,0,0,0,0,0,1, 2].pack("nnnnnnnnI!")).inspect is now
+ "#<Socket::Option: INET6 IPV6 JOIN_GROUP ff12::1 eth0>".
- * lib/net/http.rb (Net::HTTP.post_form): ditto.
+ * ext/socket/extconf.rb: check struct ipv6_mreq.
-Sat Nov 26 20:01:18 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Dec 25 18:04:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/net/http.rb (Net::HTTP::SSL_ATTRIBUTES): refix 33701.
- store instance variable symbol names.
+ * lib/csv.rb (CSV.foreach): 'rb' mode is defaulted in open.
-Sat Nov 26 15:40:25 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * lib/csv.rb (CSV#init_separators): cannonicalize encoding options
+ as Encoding objects.
- * .travis.yml (script): should be ./configure
+Sat Dec 25 18:30:34 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Sat Nov 26 15:39:18 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * thread.c (rb_thread_atfork): Add small comment why we need
+ reset random seed.
- * .travis.yml (before_script): wrong name, sorry.
+Sat Dec 25 17:33:55 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Nov 26 15:31:34 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * test/csv/base.rb (TestCSV.with_different_ofs): give name to
+ anonymous classes.
- * .travis.yml (before-script): autoconf required.
+ * lib/csv.rb (CSV#init_separators): use IO#gets with length
+ parameter to get rid of wrong convertion.
-Sat Nov 26 15:24:05 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * lib/csv.rb (CSV::foreach, CSV#initialize): directly use encoding
- * .travis.yml: Travis enable.
+ * lib/csv.rb, test/csv: should not assume $, invariant.
-Sat Nov 26 10:47:50 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Sat Dec 25 16:08:06 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/openssl/extconf.rb: remove checks for available functions.
- * ext/openssl/missing.h: ditto.
- Thanks, Tim Mooney for reporting this!
- [Bug #5432] [ruby-core:40088]
+ * signal.c: change rb_atomic_t definition from uchar to uint.
-Sat Nov 26 10:22:28 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Sat Dec 25 15:04:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/openssl/ossl_ssl.c: add comment on where to find implementation
- of OpenSSL::SSL::SSLSocket#session.
+ * test/csv/test_encodings.rb (TestEncodings#setup): fix evil test
+ suite writing to the source directory.
-Sat Nov 26 05:00:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Dec 25 15:08:08 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * configure.in (--no-undefined): RUBY_TRY_CFLAGS does nothing for
- linker flags. use RUBY_TRY_LDFLAGS.
+ * ext/pty/pty.c (chfunc): Added rb_thread_atfork_before_exec().
+ We must reinitialize GVL at new process creation. Otherwise
+ we may meet an insane deadlock. [Bug#4121][ruby-dev:42686]
-Fri Nov 25 11:37:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Dec 25 14:27:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (ioctl_narg_len, linux_iocparm_len): reinstantiate linux
- specific narg length calculation.
- * test/ruby/test_io.rb (test_ioctl_linux2): add new test for old and
- unstructured ioctl.
+ * io.c (rb_io_extract_encoding_option): accept Encoding object as
+ encoding: optional argument. [ruby-dev:42884]
-Fri Nov 25 10:39:14 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Dec 25 13:37:55 2010 Ryan Davis <ryand-ruby@zenspider.com>
- * Makefile.in (EXTLDFLAGS): export it.
- * configure.in: add --no-undefined if --enable-shared is specified.
- Gentoo enabled this option long time. Also, export EXTLDFALGS.
+ * lib/minitest/*.rb: Imported minitest 2.0.2 r6093.
-Fri Nov 25 08:48:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Dec 25 13:05:59 2010 Tanaka Akira <akr@fsij.org>
- * configure.in: turn on PIE if --enable-shared is not specified.
+ * random.c: parenthesize macro arguments.
-Fri Nov 25 08:05:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Dec 25 12:48:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in: add -fstack-protector. It help to protect us from
- stack smashing attack.
+ * load.c (rb_f_require_relative): don't omit return type.
-Fri Nov 25 08:03:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Dec 25 11:06:00 2010 Eric Hodel <drbrain@segment7.net>
- * configure.in: add -D_FORTIFY_SOURCE=2. It provide some compile
- time and runtime check for security.
+ * load.c (rb_f_require_relative): Add documentation.
-Fri Nov 25 08:00:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Dec 25 11:02:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/mkmf.rb: get rid of warnings of mkmf.rb if -Wmissing-declarations
- and/or -Wold-style-definition warnings if specified.
- Patch by Nikolai Weibull. Thank you! [Bug #5459] [ruby-core:40200]
+ * ext/zlib/zlib.c (gzreader_gets): support optional length
+ parameter.
-Fri Nov 25 07:46:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/zlib/zlib.c (gzfile_read, gzfile_readpartial): length should
+ be long.
- * configure.in: add -Wall always.
+Sat Dec 25 10:51:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Nov 24 20:02:40 2011 Tanaka Akira <akr@fsij.org>
+ * ext/json/generator/generator.{c,h} (fbuffer_free_only_buffer):
+ unused.
- * test/openssl/test_engine.rb: use IO#reopen to restore stderr.
+ * ext/openssl/ossl_pkcs5.c (ossl_pkcs5_pbkdf2_hmac): add casts.
-Thu Nov 24 19:59:56 2011 Tanaka Akira <akr@fsij.org>
+Fri Dec 24 08:46:04 2010 Tanaka Akira <akr@fsij.org>
- * io.c (rb_io_reopen): re-initialize buffering mode for stdout and
- stderr.
+ * process.c: parenthesize macro arguments.
-Thu Nov 24 11:12:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Thu Dec 23 19:17:14 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
- * io.c (rb_io_fsync,rb_io_fdatasync): release GVL during fsync().
- fsync() and fdatasync() may take a long time on slow disks and/or
- if there is much dirty data.
- Patch by Eric Wong. [Feature #5665] [ruby-core:41247]
+ * test/net/imap/cacert.pem: updated because it has been expired.
-Thu Nov 24 10:05:02 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * test/net/imap/server.crt: signed again because CA cert was expired.
- * test/openssl/test_engine.rb: Suppress output from 'openssl'
- engine's RC4 cipher.
- [Bug #5633] [ruby-core:41026]
+Thu Dec 23 11:16:52 2010 Tanaka Akira <akr@fsij.org>
-Thu Nov 24 08:05:02 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * parse.y: parenthesize macro arguments.
- * ext/openssl/ossl_pkey_dsa.c: remove redundant colon from error
- message.
- * ext/openssl/ossl_ssl.c: ditto.
- * ext/openssl/ossl_pkey_rsa: ditto.
- patched by Eric Hodel [Bug #5604] [ruby-core:40896]
+Thu Dec 23 11:00:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Nov 23 20:03:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * error.c (rb_check_type): check for type from extensions for ruby
+ 1.8. see [ruby-core:33797].
- * io.c (ioctl_narg_len): don't use _IOC_SIZE macro on Linux.
- On Linux some constants for ioctl(2) doesn't include the size of
- its return value and 16bit value; for example FIONREAD 0x541B.
- Moreover the manual, ioctl_list(2), says "Note that the size
- bits are very unreliable: in lots of cases they are wrong,
- either because of buggy macros using sizeof(sizeof(struct)),
- or because of legacy values."
- So we shouldn't use it.
+Thu Dec 23 08:12:59 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-Tue Nov 22 18:07:32 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/net/smtp.rb: refactoring Net::SMTP#esmtp= to use an
+ attr_accessor
- * win32/win32.c (_pioinfo): need to declare _pioinfo() before using
- _osfhnd and other macros which uses _pioinfo() internally.
+Thu Dec 23 06:35:41 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-Tue Nov 22 17:49:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/net/smtp.rb: Net::SMTP should close the SSL connection if the
+ connection verification fails.
- * win32/win32.c (_pioinfo): make an inline function.
+Thu Dec 23 01:47:58 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-Tue Nov 22 11:26:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * NEWS: remove #object_id. [ruby-dev:42840]
-Tue Nov 22 11:33:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Dec 22 08:56:39 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * win32/win32.c (dupfd): argument of _osfhnd and so on should not
- have side effect.
+ * NEWS: add Module#private_constant and Module#public_constant.
+ [ruby-dev:39685][ruby-core:32698]
-Tue Nov 22 11:26:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Dec 22 07:59:23 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * bignum.c (rb_big_divide): refix of r33536. Don't change behavior of Bignum#/.
- [ruby-core:40429] [Bug #5490]
+ * NEWS: add IO#advise. [ruby-core:33110] [Ruby 1.9-Feature#4038]
-Tue Nov 22 10:46:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Dec 21 23:45:31 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
- * numeric.c (ruby_float_step): improve floating point calculations.
- [ruby-core:35753] [Bug #4576]
+ * gc.c (Init_GC): move back object_id to Kernel. [ruby-dev:42840]
- * numeric.c (ruby_float_step): correct the error of floating point
- numbers on the excluding case.
- patched by Masahiro Tanaka [ruby-core:39608]
+Tue Dec 21 12:45:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * numeric.c (ruby_float_step): use the end value when the current
- value is greater than or equal to the end value.
- patched by Akira Tanaka [ruby-core:39612]
+ * configure.in (target_archs): remove temporary objects.
-Tue Nov 22 06:59:21 2011 Tanaka Akira <akr@fsij.org>
+ * enc/Makefile.in, enc/depend (clean): remove work directories.
- * test/ruby/test_io.rb (test_fcntl_dupfd): there is no known platform
- which don't have F_DUPFD. [ruby-dev:44874]
+Tue Dec 21 07:39:12 2010 Tanaka Akira <akr@fsij.org>
-Tue Nov 22 04:46:22 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * pack.c: parenthesize macro arguments.
- * ext/psych/lib/psych.rb: remove autoload from psych
- * ext/psych/lib/psych/json.rb: ditto
+Tue Dec 21 06:25:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Nov 22 00:44:59 2011 Tanaka Akira <akr@fsij.org>
+ * test/rexml/test_contrib.rb (ContribTester#test_pos): should not
+ use fixed path name for tests. [ruby-dev:42827]
- * test/ruby/test_io.rb (test_fcntl_dupfd): the argument of F_DUPFD is
- minimum file descriptor.
+ * test/rexml/test_sax.rb (SAX2Tester#test_socket): should not use
+ fixed port for tests. [ruby-dev:42828]
-Tue Nov 22 00:25:17 2011 Tanaka Akira <akr@fsij.org>
+Tue Dec 21 06:10:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (linux_get_maxfd): get rid of a warning.
+ * compile.c (setup_args), vm.c (invoke_block_from_c),
+ vm_insnhelper.c (caller_setup_args): reverted r30241 and r30243
+ except for the test.
-Mon Nov 21 23:39:14 2011 Tanaka Akira <akr@fsij.org>
+Tue Dec 21 01:41:42 2010 Masaya Tarui <tarui@ruby-lnag.org>
- * io.c (linux_get_maxfd): new function to find maximum fd on Linux.
- (rb_close_before_exec): use linux_get_maxfd.
+ * io.c : add an extra byte to buffer for the specification of read
+ in Windows. see [ruby-core:33460] and r29980. and, we have to
+ discuss how to do this one byte.
-Mon Nov 21 06:16:24 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Dec 21 01:18:06 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * cont.c (fiber_switch): ignore fiber context switch
- because destination fiber is same as current fiber.
- With out this, it may segv on FreeBSD 9.
- patched by Koichi Sasada.
+ * error.c: Fix build error for win32. This regression was
+ introduced by r30271.
-Sun Nov 20 23:22:42 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Dec 21 00:59:40 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/extmk.rb (extract_makefile, extmake): regenerate makefiles
- if globbed source file list is changed.
+ * thread.c (thread_cleanup_func): Moved interrupted_lock
+ destroying code from native_thread_destroy() to
+ thread_cleanup_func() because it's platform independent logic.
- * lib/mkmf.rb (create_makefile): store ORIG_SRCS.
+ * thread_win32.c (native_thread_destroy): ditto.
+ * thread_pthread.c (native_thread_destroy): ditto.
-Sun Nov 20 22:43:03 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Dec 21 00:46:20 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * enc/unicode.c (PROPERTY_NAME_MAX_SIZE): +1.
- reported by Ken Takata. [ruby-dev:44894][Bug #5652]
+ * thread.c (thread_cleanup_func): Don't touch native threading
+ resource at fork. Sadly this is purely bandaid. We need to
+ implement proper fix later. [Bug #4169] [ruby-core:33767]
-Sun Nov 20 11:01:28 2011 Tanaka Akira <akr@fsij.org>
+Tue Dec 21 00:22:44 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * lib/set.rb (SortedSet.setup): remove old_init after initialize
- method is redefined. The remove before redefinition makes the
- warning prevention fragile. [ruby-dev:44892]
+ * error.c (exit_success_p): Check status code more carefully.
+ status code may have garbage in upper bit.
-Sun Nov 20 04:01:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Dec 20 23:12:37 2010 Tanaka Akira <akr@fsij.org>
- * Makefile.in (enc/unicode/name2ctype.h): remove duplicated
- ifdefs.
+ * node.c: parenthesize macro arguments.
-Sat Nov 19 19:31:47 2011 Tanaka Akira <akr@fsij.org>
+Mon Dec 20 20:04:41 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * time.c (TIME_COPY_GMT): copy vtm.utc_offset and vtm.zone too.
- patch by Tomoyuki Chikanaga.
- [ruby-dev:44827] [Bug #5586]
+ * NEWS: add #__id__ and #object_id. [ruby-dev:42778]
-Sat Nov 19 16:36:57 2011 Tanaka Akira <akr@fsij.org>
+Mon Dec 20 20:03:21 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * test/net/http/test_http.rb: remove temporally files in ensure clause.
+ * thread_pthread.c (native_thread_destroy): Fixed gvl_cond leak.
-Sat Nov 19 08:18:41 2011 Tanaka Akira <akr@fsij.org>
+Mon Dec 20 13:49:05 2010 Eric Hodel <drbrain@segment7.net>
- * test/net/http/test_http.rb: remove temporally files.
+ * NEWS: Add item for RDoc 3.0.1
-Fri Nov 18 17:18:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rdoc: Import RDoc 3.0.1, remove require for perl parser.
- * ext/io/console/console.c (console_raw, console_set_raw)
- (console_getch): optional parameters. [EXPERIMENTAL]
+Mon Dec 20 12:15:32 2010 Eric Hodel <drbrain@segment7.net>
-Fri Nov 18 16:12:11 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/rdoc: Import RDoc 3.0.
- * ext/io/console/console.c (console_cooked, console_set_cooked):
- new methods to reset cooked mode. [EXPERIMENTAL]
+Mon Dec 20 01:55:03 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Fri Nov 18 13:20:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * io.c (Init_IO): Added O_DIRECT. This feature was proposed by
+ Run Paint Run Run.
+ [Feature #4015] [ruby-core:33018]
- * test/unit/assertions.rb (MINI_DIR): quick dirty hack to get rid of
- warnings when using assert/assert_respond_to.
+Sun Dec 19 19:15:23 2010 Tanaka Akira <akr@fsij.org>
-Fri Nov 18 13:03:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * marshal.c: parenthesize macro arguments.
- * io.c (rb_cloexec_open): set O_NOINHERIT instead of O_CLOEXEC if it is
- available (for Windows).
+Sat Dec 18 21:52:37 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * win32/win32.c (fcntl): on F_DUPFD, determine the inheritance of the
- new handle by O_NOINHERIT flag of original fd.
+ * vsnprintf.c (BSD_vfprintf): suppress warning: "_WIN32" is not
+ defined.
-Fri Nov 18 08:00:41 2011 Ryan Davis <ryand-ruby@zenspider.com>
+Sat Dec 18 16:02:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/minitest/*: Imported minitest 2.8.1 (r6750)
- * test/minitest/*: ditto
- * configure.in: Improved gcc-llvm error message to help people migrate.
+ * compile.c (setup_args), vm.c (invoke_block_from_c),
+ vm_insnhelper.c (caller_setup_args): fix of r30241. lambda block
+ should check argument number.
-Thu Nov 17 20:43:34 2011 Tanaka Akira <akr@fsij.org>
+Sat Dec 18 14:42:29 2010 Tanaka Akira <akr@fsij.org>
- * ext/dbm/extconf.rb: revert a part of the patch in [ruby-dev:41531].
- don't use db.h with other headers. [ruby-dev:44884].
+ * load.c: parenthesize macro arguments.
-Thu Nov 17 20:23:03 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Sat Dec 18 10:07:04 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * benchmark/bm_io_select[23].rb: use Process::RLIMIT_NOFILE only when
- it is defined. if it is not defined, assume 64 as the max of fds.
+ * compile.c (setup_args, iseq_compile_each): optimize AMPER LAMBDA
+ combination as block.
-Thu Nov 17 10:36:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Fri Dec 17 22:07:16 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
- * ext/psych/lib/psych.rb (load_file): make sure opened yaml files are
- also closed. [ruby-core:41088]
+ * gc.c (Init_GC): move #__id__ and #object_id to BasicObject.
+ [ruby-dev:42778]
-Wed Nov 16 18:13:52 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Dec 17 19:35:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * Makefile.in (LIBRUBY_A): check if generated linked library is
- valid for extconf.
+ * test/mkmf/base.rb (TestMkmf::FakeLog): capture output from mkmf.
-Wed Nov 16 13:51:40 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * test/mkmf/test_find_executable.rb (test_find_executable):
+ suppress meaningless differences for chkbuild.
- * bignum.c (rb_big2ulong): need to calc in unsigned long, because
- the range of VALUE is larger than it on LLP64 platform, such as Win64.
- this change fixes the failures of test/-ext-/num2int.
+Fri Dec 17 13:26:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Wed Nov 16 12:02:47 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * win32/setup.mak (BASERUBY): quit with an error when BASERUBY was not
+ able to set, just like configure.in does. [ruby-dev:42782]
- * test/webrick/test_cgi.rb (TestWEBrickCGI#start_cgi_server): there are
- no guarantee of existence of RbConfig::CONFIG['LIBPATHENV'].
- it only exists in Unix-like environments.
+Fri Dec 17 07:04:09 2010 Tanaka Akira <akr@fsij.org>
- * test/webrick/test_filehandler.rb
- (WEBrick::TestFileHandler#test_script_disclosure): ditto.
+ * iseq.c: parenthesize macro arguments.
-Wed Nov 16 11:34:20 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Dec 17 04:18:37 2010 Eric Hodel <drbrain@segment7.net>
- * io.c (argf_next_argv): wrong timing of setting ecflags.
- fixed the failure of TestArgf#test_textmode introduced at r33662.
+ * transcode.c (str_encode): Alter comment for better wording and ri
+ output.
-Wed Nov 16 10:45:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Dec 17 00:05:40 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- * ext/-test-/num2int/num2int.c: remove an unnecessary and wrong decl
- of rb_stdout. it's declared in ruby.h correctly.
+ * io.c (rb_io_advise): New API. IO#advise() allows to tell the
+ ruby runtime how it expects to use a file handle. This feature
+ can be improved a performance some situations.
+ Note: This feature is mainly developed by Run Paint Run Run.
+ Thank you! [ruby-core:33110] [Ruby 1.9-Feature#4038]
-Wed Nov 16 10:26:41 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * io.c (do_io_advise): Helper function.
+ * io.c (io_advise_sym_to_const): ditto.
- * bignum.c (rb_big2ull): add a cast to get rid of a VC++ warning.
+Thu Dec 16 23:29:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Nov 16 09:39:27 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * tool/rbinstall.rb (bin-comm): use transformed name.
+ [ruby-dev:42777]
- * lib/minitest/unit.rb (assert_raises): experimental fix to run
- correctly on chkbuild over 64bit linux. call exception_details only
- when the detail is really needed to avoid create needless inspect
- under ulimit-ed environment.
+Thu Dec 16 21:52:07 2010 Tanaka Akira <akr@fsij.org>
-Wed Nov 16 06:34:30 2011 Tanaka Akira <akr@fsij.org>
+ * io.c: parenthesize macro arguments.
- * test/ruby/test_thread.rb (test_condvar_timed_wait): use
- assert_operator.
+Thu Dec 16 21:46:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Nov 15 21:56:25 2011 Tanaka Akira <akr@fsij.org>
+ * tool/mkconfig.rb (RbConfig): honor ARCHFLAGS and RC_ARCHS to
+ override embedded ARCH_FLAG value on universal-darwin.
- * test/ruby/test_sleep.rb (test_sleep_5sec): 0.1sec tolerance is too
- small for busy environment.
+Thu Dec 16 19:50:12 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Tue Nov 15 20:08:55 2011 Tanaka Akira <akr@fsij.org>
+ * win32/{configure.bat,setup.mak,Makefile.sub} (PROGRAM_PREFIX,
+ PROGRAM_SUFFIX): unite the differences of the names of macros of
+ prefix and suffix.
+ reported by HANEDA Norikatsu. [ruby-dev:42775]
- * io.c, thread.c, ext/pty/pty.c, ext/fiddle/closure.c: use
- __linux__ macro for consistency.
+Thu Dec 16 08:04:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Nov 15 14:45:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * node.h (RNode): match the type of flags to RBasic, and renamed
+ nd_file as nd_reserved.
- * include/ruby/ruby.h(NUM2LONG, NUM2INT, NUM2SHORT, NUM2LL,
- INT2NUM, UINT2NUM, LONG2NUM, ULONG2NUM, NUM2CHR): wrap by
- macros.
+ * iseq.c (set_relation), vm_insnhelper.c (vm_cref_push): nd_file
+ is always zero-cleared.
-Tue Nov 15 13:38:14 2011 Naohisa Goto <ngotogenome@gmail.com>
+Thu Dec 16 07:22:30 2010 Ryan Davis <ryand-ruby@zenspider.com>
- * include/ruby/defines.h (FLUSH_REGISTER_WINDOWS): move sparc asm code
- to a separate file sparc.c for preventing inlining optimization.
- Patched by Jurij Smakov. [Bug #5244] [ruby-core:40685]
- * sparc.c (rb_sparc_flush_register_windows): ditto.
- * configure.in: ditto.
+ * lib/minitest/unit.rb: Imported minitest 2.0.1 r6079.
-Tue Nov 15 13:11:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Dec 15 20:45:02 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * include/ruby/ruby.h: get rid of gcc specific rb_long2int(),
- NUM2LONG(), NUM2INT(), NUM2SHORT(), NUM2LL(), INT2NUM(),
- UINT2NUM(), LONG2NUM(), ULONG2NUM() and NUM2CHR()
- implementation. Because 1) They don't make any better code
- at all. 2) Inline function have a better debugger supoort.
+ * lib/test/unit.rb (process_args): need to setup @help to print options.
-Tue Nov 15 09:58:25 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Dec 15 11:19:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * test/ruby/test_io.rb (TestIO#test_fcntl_dupfd): fix OpenBSD test
- failure. [ruby-dev:44872]
+ * test/zlib/test_zlib.rb (test_to_io): forgotten to fix with r30201.
-Tue Nov 15 09:50:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Dec 15 11:07:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * regcomp.c (print_indent_tree): fix double printing of ENCLOSE_OPTION
- children bug. patched by Suraj Kurapati. [ruby-core:40964]
+ * io.c (simple_sendfile): enable on Mac OS X.
-Tue Nov 15 01:53:48 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * io.c (nogvl_copy_stream_sendfile): moved precheck of copy length.
- * test/ruby/test_io.rb (test_fcntl_dupfd): fix test error on
- SnowLeopard. Pointed out by CHIKANAGA Tomoyuki. [ruby-dev:44866]
+ * io.c (nogvl_copy_stream_sendfile): should wait for both of
+ read/write fds.
-Mon Nov 14 22:06:02 2011 Tanaka Akira <akr@fsij.org>
+Wed Dec 15 07:11:55 2010 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl_pkey.c (ossl_pkey_new_from_file): set close-on-exec
- flag.
+ * hash.c: parenthesize macro arguments.
- * ext/openssl/ossl_x509cert.c (rb_fd_fix_cloexec): ditto.
+Wed Dec 15 04:02:00 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Nov 14 14:54:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/openssl/ossl_x509ext.c (ossl_x509extfactory_set_config):
+ fix compile error when !HAVE_X509V3_SET_NCONF. Thanks
+ Chikanaga-san. [ruby-dev:42761] [Ruby 1.9-Bug#4158]
- * bignum.c (rb_big2ull): fix 32bit platform breakage. we must
- not assume sizeof(VALUE) == sizeof(LONG_LONG).
- * test/-ext-/num2int/test_num2int.rb (class TestNum2int):
- fix false assumption on 32bit platform.
+Wed Dec 15 03:41:31 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-Mon Nov 14 14:52:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/ripper/test_parser_events.rb (TestRipper#test_block_variables):
+ Limit address space 100MB instead 100KB. Quite frankly, This
+ margin is too narrow to contain ruby. [ruby-dev:42763] [Bug#4159]
- * numeric.c (rb_fix2ushort): fix typo. use num rb_num2ushort()
- instead of num2uint().
+Tue Dec 14 23:53:52 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Nov 13 10:31:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * io.c (simple_sendfile): improve linux compatibility on FreeBSD,
+ and now it works. But without cpuset -l 0, it still gets stuck.
- * include/ruby/ruby.h: add #ifdef comment.
+Tue Dec 14 20:31:33 2010 Tanaka Akira <akr@fsij.org>
-Sun Nov 13 10:28:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c: parenthesize macro arguments.
- * include/ruby/ruby.h: add NUM2SHORT(), NUM2USHORT() macros.
- * numeric.c: ditto.
+Tue Dec 14 18:31:48 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * test/-ext-/num2int/test_num2int.rb: add testcases for NUM2SHORT().
- * ext/-test-/num2int/num2int.c: ditto.
+ * lib/test/unit.rb: help messages.
-Sun Nov 13 10:23:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue Dec 14 18:19:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * bignum.c (rb_big2ull): fix off-by-twice bug of NUM2ULL.
- * test/-ext-/num2int/test_num2int.rb (class TestNum2int):
- fix a testcase too.
+ * common.mk (help): there is no reason to use the abbreviation for here.
-Sun Nov 13 10:22:44 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue Dec 14 15:03:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * test/-ext-/num2int/test_num2int.rb (class TestNum2int):
- add FIXNUM tests.
+ * test/ruby/test_io.rb (test_reopen, test_reinitialize): should close
+ the temporary files.
-Sun Nov 13 09:57:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue Dec 14 14:24:15 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * numeric.c (check_uint): fix off-by-one bug of NUM2UINT.
- * bignum.c (rb_big2ulong): fix off-by-one bug of NUM2ULONG.
+ * test/ruby/test_io.rb (make_tempfile): change the prefix from 'foo'
+ to 'test_io' because the old one is meaningless and inconvenient.
- * test/-ext-/num2int/test_num2int.rb: add a testcase for NUM2INT()
- NUM2UINT(), NUM2LONG(), NUM2ULONG(), NUM2LL and NUM2ULL().
- * ext/-test-/num2int/depend: ditto.
- * ext/-test-/num2int/extconf.rb: ditto.
- * ext/-test-/num2int/num2int.c: ditto.
+ * test/ruby/test_io.rb (test_binmode_after_closed): the temporary file
+ maked by make_temfile is already closed.
-Sun Nov 13 23:47:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Dec 14 13:52:19 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/dbm/extconf.rb: use convertible_int.
+ * test/ruby/test_io.rb (test_flush_in_finalizer[12]): should close
+ temporary file because it's only used for taking pathname and
+ unlinking the file after the end of the test (in GC phase).
-Sun Nov 13 23:45:57 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Dec 14 13:34:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/mkmf.rb (checking_for): should not modify the result.
+ * ext/zlib/zlib.c (gzfile_s_open): should close the IO if some error
+ occurs in initializing.
- * lib/mkmf.rb (have_struct_member): accept compiler options.
+Tue Dec 14 13:04:16 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/mkmf.rb (convertible_int): add restricted support of struct
- member, and TYPEOF_ macro.
+ * lib/net/http.rb (Net::HTTPRequest#send_request_body_data):
+ set binmode to tempfile.
-Sun Nov 13 23:21:24 2011 Tanaka Akira <akr@fsij.org>
+Tue Dec 14 12:55:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/gdbm/gdbm.c (fgdbm_reorganize): set close-on-exec flag after
- gdbm_reorganize(). gdbm_reorganize() opens a new database internally.
+ * test/zlib/test_zlib.rb (*): should close files associated with zlib.
-Sun Nov 13 19:57:18 2011 Tanaka Akira <akr@fsij.org>
+Tue Dec 14 11:30:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/dbm/extconf.rb: rollback for each headers for each libraries.
+ * test/ruby/test_argf.rb (test_inplace_rename_impossible): unlink
+ the renamed temporary file on no_safe_rename platforms.
-Sun Nov 13 16:24:48 2011 Tanaka Akira <akr@fsij.org>
+ * test/ruby/test_argf.rb (test_readlines_limit_0,
+ test_each_line_limit_0): should close argf because the associated
+ Tempfile object cannot unlink the temporary file when it's gc'ed
+ on some platforms (Windows, etc.)
- * ext/dbm/extconf.rb: treat libc as a choice for a library which
- provide ndbm API.
+Tue Dec 14 11:27:07 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Nov 13 15:40:43 2011 Tanaka Akira <akr@fsij.org>
+ * lib/minitest/unit.rb (Minitest::Unit#_run_suite): split test
+ name and its time. Thiw allows to know test's name when you are
+ running tests and meet a test which spends long time at realtime.
- * ext/dbm/extconf.rb: duplicate $libs and $defs when save them.
+Tue Dec 14 11:25:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Nov 13 12:43:48 2011 Tanaka Akira <akr@fsij.org>
+ * configure.in: Add -Werror=declaration-after-statement to default
+ warning flag. If you are using GCC, this flag is useful to
+ prevent breaking VC build.
- * ext/dbm/extconf.rb: rollback $libs and $defs when db detection is
- failed. It fixes -lgdbm -lqdbm when the system has qdbm and gdbm
- without gdbm_compat.
+Tue Dec 14 10:25:57 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Sat Nov 12 21:14:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/openssl/ossl_asn1.c (ossl_asn1_decode0): how many gcc-c99isms
+ must a man mend; before he can build with VC? r30178
- * test/webrick/test_cgi.rb (class TestWEBrickCGI): respect
- RbConfig::CONFIG["LIBPATHENV"]. [Bug #5135] [ruby-core:38653]
- * test/webrick/test_filehandler.rb (class WEBrick): ditto.
+Mon Dec 13 21:26:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Nov 12 20:57:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * io.c (simple_sendfile): disable the use of sendfile(2) on
+ FreeBSD. It blocks on TestIO#test_copy_stream_socket.
- * test/ruby/test_io.rb (test_fcntl_dupfd): skip if Fcntl::DUPFD
- is not defined. Pointed out by CHIKANAGA Tomoyuki. Thanks.
+Mon Dec 13 18:35:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Nov 12 17:26:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * io.c: define USE_SENDFILE on FreeBSD or DragonFly BSD.
+ Remove Mac OS X because its argument is different from them.
- * io.c (do_ioctl, ioctl_narg_len, setup_narg, rb_ioctl): use
- ioctl_req_t.
+Mon Dec 13 12:00:09 2010 Tanaka Akira <akr@fsij.org>
-Sat Nov 12 17:01:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * file.c: parenthesize macro arguments.
- * ext/dbm/extconf.rb (headers.db_check): reduce duplicated code.
+Mon Dec 13 11:21:14 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Nov 12 15:59:42 2011 Tanaka Akira <akr@fsij.org>
+ * io.c (simple_sendfile): added for BSD version of sendfile(2).
- * ext/dbm/extconf.rb: dbm_clearerr should be available in all ndbm
- implementation. If it is not available, it is caused by
- header/library mismatch such that Berkeley DB header & gdbm library.
+Mon Dec 13 09:50:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/dbm/dbm.c (fdbm_store): use dbm_clearerr() unconditionally.
- gdbm 1.9 provides it as a real function instead of a empty macro.
+ * lib/net/http.rb (Net::HTTPRequest#set_form): Added to support
+ both application/x-www-form-urlencoded and multipart/form-data.
+ There is a similar API, Net::HTTPRequest#set_form_data, but
+ to keep its compatibility this is newly added. [ruby-dev:42729]
-Sat Nov 12 13:35:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Dec 12 23:45:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * bootstraptest/runner.rb: don't suppress SIGINT.
- [Feature #5612] [ruby-dev:44856]
+ * compile.c (iseq_compile_each): fix for __goto__ and __label__
+ where were totally broken.
-Sat Nov 12 11:20:36 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Dec 12 22:45:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (fcntl_narg_len): introduce narg calculation for fcntl instead
- of hard coded 256.
- * io.c (setup_narg): ditto.
+ * common.mk (ID_H_INCLUDES): now id.h depends on vm_opts.h.
-Sat Nov 12 11:19:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Dec 12 20:42:47 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * test/ruby/test_io.rb (test_fcntl_dupfd): add another fcntl test.
+ * template/id.h.tmpl: suppress all warning: "SUPPORT_JOKE" is not
+ defined. [ruby-dev:42730]
-Sat Nov 12 11:18:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Dec 12 20:35:07 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * test/ruby/test_io.rb (test_fcntl_lock_freebsd): add a testcase
- of fcntl lock for freebsd.
+ * misc/rb_optparse.zsh: update how to install.
-Sat Nov 12 11:16:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * misc/rb_optparse.zsh: avoid error when setopt noclobber.
- * io.c (ioctl_narg_len): Linux doesn't have IOCPARM_LEN macro, but
- has _IOC_SIZE. support it.
+ * lib/optparse.rb: fix typo. pointed out at
+ <http://d.hatena.ne.jp/nagachika/20101207>.
-Sat Nov 12 11:13:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Dec 12 13:27:35 2010 Tanaka Akira <akr@fsij.org>
- * io.c (rb_ioctl): don't expose our sanity check value to ruby script.
- It may change string value meaning if the value is string.
- (e.g. MacOS X has F_GETPATH ioctl)
- * io.c (rb_fcntl): ditto.
+ * eval_error.c: parenthesize macro arguments.
-Sat Nov 12 11:06:02 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Dec 12 11:53:24 2010 Tanaka Akira <akr@fsij.org>
- * io.c (ioctl_req_t): Type of req argument of ioctl() depend on platform.
- Moreover almost all linux ioctl can't be represented by 32bit integer
- (i.e. MSB is 1). We need wrap ioctl argument type.
- [Bug #5429] [ruby-dev:44589]
- * io.c (struct ioctl_arg): ditto.
- * io.c (rb_ioctl): ditto.
- * test/ruby/test_io.rb (test_ioctl_linux): add a testcase for ioctl
+ * error.c: parenthesize macro arguments.
-Sat Nov 12 11:00:42 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Dec 12 04:01:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * io.c (struct io_cntl_arg): remove io_p member.
- * io.c (nogvl_fcntl, do_fcntl, rb_fcntl): separated from ioctl functions.
- * io.c (nogvl_io_cntl): remove fcntl depended logic.
- * io.c (io_cntl): ditto.
- * io.c (rb_io_ctl): ditto.
- * io.c (rb_io_ioctl): ditto.
+ * string.c (rb_str_inspect): fix: extra back slash is added when
+ the string is dummy encoding and includes \x22 or \x5C.
-Sat Nov 12 10:59:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Dec 12 02:42:24 2010 Aaron Patterson <aaron@tenderlovemaking.com>
- * io.c (setup_narg): fix off by one bug.
+ * ext/openssl/ossl_asn1.c: indefinite length BER to DER encoding is
+ properly supported. Thanks Martin Bosslet! [ruby-core:33082]
-Sat Nov 12 10:56:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Dec 11 17:43:34 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * io.c (+setup_narg): factor out length calculation logic.
- * io.c (rb_io_ctl): ditto.
+ * ext/bigdecimal/bigdecimal.h: suppress "warning: 'VPrint' declared
+ 'static' but never defined".
-Sat Nov 12 10:52:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sat Dec 11 09:24:57 2010 Tanaka Akira <akr@fsij.org>
- * io.c (+ioctl_narg_len) new helper function.
- * io.c (rb_io_ctl): don't use ioctl specific length check
- if caller is fcntl.
+ * encoding.c: parenthesize macro arguments.
-Fri Nov 11 23:00:46 2011 Tanaka Akira <akr@fsij.org>
+Sat Dec 11 08:12:48 2010 Eric Hodel <drbrain@segment7.net>
- * ext/dbm/extconf.rb: db_prefix is not required now.
+ * ext/openssl/ossl.c, ext/openssl/ossl_pkey_rsa.c: Document RSA, RSA
+ encryption/decryption and PKCS #5 encryption/decryption.
-Fri Nov 11 21:13:30 2011 Tanaka Akira <akr@fsij.org>
+Sat Dec 11 06:23:41 2010 Eric Hodel <drbrain@segment7.net>
- * ext/gdbm/gdbm.c (fgdbm_initialize): use GDBM_CLOEXEC if available.
+ * ext/openssl/ossl_x509name.c: include Comparable to provide #==.
+ Document OpenSSL::X509::Name#<=>. [Ruby 1.9-Feature#4116]
-Fri Nov 11 21:00:05 2011 Tanaka Akira <akr@fsij.org>
+Sat Dec 11 05:48:28 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * ext/dbm/extconf.rb: fix dbm_pagfno and dbm_dirfno detection with
- Berkeley DB. Macro definitions needs arguments to detect correctly.
- SIZEOF_DSIZE needs -DDB_DBM_HSEARCH because db.h defines datum type
- only if DB_DBM_HSEARCH is defined.
+ * ext/tk/lib/multi-tk.rb: infinite loop on method_missing at loading.
+ [ruby-dev:42716] [Ruby 1.9-Bug#4129]
-Fri Nov 11 18:41:57 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/tk/lib/multi-tk.rb: when no eventloop is running, ruby freezes at
+ exit.
- * process.c (proc_seteuid): separate an internal wrapper function
- from the method implementation.
+Sat Dec 11 02:23:15 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-Fri Nov 11 17:21:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/openssl/extconf.rb: try pkgconfig first, then fall back to
+ normal have_library, etc. Thanks Erik Hollensbe. [ruby-core:32406]
- * lib/mkmf.rb (have_library, find_library, have_func): allow
- arguments of function to be checked.
+Fri Dec 10 22:33:39 2010 Tanaka Akira <akr@fsij.org>
-Fri Nov 11 17:09:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * dln_find.c: parenthesize macro arguments.
- * vm_dump.c (HAVE_BACKTRACE): fallback to 0.
+Fri Dec 10 20:05:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm_dump.c (rb_vm_bugreport): show "Other runtime information"
- header only when available.
+ * template/id.h.tmpl (ruby_method_ids): suppress warnings.
+ [ruby-dev:42730]
- * vm_dump.c (rb_vm_bugreport): get rid of modifying the content of
- VM directly.
+Fri Dec 10 18:29:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm_dump.c (rb_vm_bugreport): check if vm is non-null.
- Pointed out by Ikegami Daisuke <ikegami.da@gmail.com>.
- Thank you.
+ * ruby.c (ruby_init_loadpath_safe): relatively called non-shared
+ binary cannot be found in PATH, so use given pathname.
-Fri Nov 11 12:36:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Dec 10 18:28:40 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (pipe_open): Remove fflush(stdin). it's no effect.
- Pointed out by Ikegami Daisuke <ikegami.da@gmail.com>.
- Thank you.
+ * cygwin/GNUmakefile.in (SCRIPTPROGRAMS): ignore backup files and etc.
-Fri Nov 11 07:33:30 2011 Eric Hodel <drbrain@segment7.net>
+ * cygwin/GNUmakefile.in (scriptbin): set executable bit.
- * lib/net/http.rb (Net::HTTP::SSL_ATTRIBUTES): Use symbol keys instead
- of string keys to avoid duplicating parameters in
- OpenSSL::SSL:SSLContext#set_params.
+ * tool/rbinstall.rb (install_recursive): always skip default ignored
+ files. if block is given, call it instead of calling install.
-Thu Nov 10 15:02:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * tool/rbinstall.rb (bin-comm): use install_recursive.
- * lib/mkmf.rb (have_library, have_func, have_var, have_header):
- add compiler option parameter.
+Fri Dec 10 18:12:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Nov 10 07:45:16 2011 Eric Hodel <drbrain@segment7.net>
+ * test/mkmf/base.rb (TestMkmf#config_value): extract macro value from
+ config.h.
- * ext/openssl/lib/openssl/ssl.rb (class OpenSSL::SSL::SSLContext):
- Document #set_params.
+ * test/mkmf/test_sizeof.rb (TestMkmf::TestSizeof#test_sizeof_builtin),
+ (TestMkmf::TestSizeof#test_sizeof_struct): more tests.
-Wed Nov 9 11:36:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * lib/mkmf.rb (check_signedness): should use the prelude code.
+ [ruby-dev:42731]
- * thread_pthread.c (gvl_yield): don't prevent concurrent sched_yield().
- [Bug #5130] [ruby-core:38647]
+ * lib/mkmf.rb (Logging.log_close): separate from Logging.logfile.
-Wed Nov 9 23:20:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/mkmf/base.rb (TestMkmf::MKMFLOG): show mkmf.log at failures.
- * io.c (rb_update_max_fd): fstat(2) can fail with other than
- EBADF. [ruby-dev:44837] [Bug #5593]. Cf.
- http://pubs.opengroup.org/onlinepubs/9699919799/functions/fstat.html
+ * test/mkmf/base.rb (TestMkmf#teardown): close log file for each tests.
- * io.c (rb_sysopen): max fd is updated in rb_sysopen_internal()
- already.
+Fri Dec 10 11:36:43 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-Wed Nov 9 22:13:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * compile.c (enum): remove a comma at end of enumerator list.
- * test/ruby/test_file.rb (TestFile#test_utime_with_minus_time_segv):
- fixed previous commit.
+ * constant.h (rb_const_flag_t): ditto.
-Wed Nov 9 19:53:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * iseq.h (enum catch_type): ditto.
- * test/ruby/test_file.rb (TestFile#test_utime_with_minus_time_segv):
- add test for r33685.
+ * iseq.h (enum defined_type): ditto.
-Wed Nov 9 19:00:44 2011 Koichi Sasada <ko1@atdot.net>
+ * vm_core.h (enum iseq_type): ditto.
- * test/ruby/test_fiber.rb: add tests for r33684 (Fiber#resume).
+ * vm_core.h (enum vm_special_object_type): ditto.
-Wed Nov 9 16:40:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Dec 10 10:47:53 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * win32/win32.c (unixtime_to_filetime): should check the return value
- of localtime(). reported by snowjail at gmail.com.
- [ruby-dev:44838] [Bug #5596]
+ * sprintf.c (_HAVE_SANE_QUAD_): Don't forget LP64, r30156.
-Thu Nov 9 13:17:25 2011 Koichi Sasada <ko1@atdot.net>
+Fri Dec 10 10:37:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * cont.c (rb_fiber_m_transfer, rb_fiber_resume): prohibit using
- "resume" after "transfer" method are used. You should not mix
- "resume" fiber and "transfer" fiber.
- [Bug #5526]
+ * sprintf.c (_HAVE_SANE_QUAD_): if a certain platform has LONG_LONG in
+ 8 byte, it might be sane quad. [ruby-core:33634]
- * NEWS: add information about this change.
+Fri Dec 10 10:07:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Nov 9 11:40:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/net/http.rb: remove version 1.1 features.
- * template/Doxyfile.tmpl (INCLUDE_PATH): add srcdir and include.
- [ruby-core:40843] [Bug #5597]
+Fri Dec 10 02:18:02 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-Wed Nov 9 11:02:54 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/openssl/ossl_x509store.c (ossl_x509stctx_cleanup): removing C
+ implementation of `cleanup`.
- * thread.c (do_select): fix cast, tv_sec is time_t.
+ * ext/openssl/lib/openssl/x509.rb: adding ruby implementation of
+ `cleanup`. OpenSSL::X509::StoreContext#cleanup is deprecated since
+ reusing the underlying struct doesn't make sense. [ruby-dev:42546]
-Wed Nov 9 10:32:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Dec 9 20:14:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in: should not use test -e for portability.
- [ruby-core:40841] [Bug #5594]
+ * parse.y (lvar_defined_gen, shadowing_lvar_gen, dvar_defined): no
+ warnings for unused method and block arguments.
+ [ruby-dev:42718] [ruby-dev:42724]
-Wed Nov 9 04:52:16 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Thu Dec 9 19:25:49 2010 Tanaka Akira <akr@fsij.org>
- * ext/psych/lib/psych/tree_builder.rb: dump complex numbers,
- rationals, etc with reference ids.
- * ext/psych/lib/psych/visitors/yaml_tree.rb: ditto
- * ext/psych/lib/psych/visitors/to_ruby.rb: loading complex numbers,
- rationals, etc with reference ids.
- * test/psych/test_object_references.rb: corresponding tests
+ * dln.c: parenthesize macro arguments.
-Tue Nov 8 23:34:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Dec 9 18:51:06 2010 Tanaka Akira <akr@fsij.org>
- * ext/dbm/dbm.c (fdbm_fetch, fdbm_key, fdbm_delete, fdbm_store)
- (fdbm_has_key, fdbm_has_value): get rid of overflow.
+ * lib/webrick/accesslog.rb (WEBrick::AccessLog#format): support
+ %{remote}p for logging remote (client) port number.
+ [ruby-dev:42670]
- * ext/gdbm/gdbm.c (rb_gdbm_fetch2, rb_gdbm_nextkey)
- (rb_gdbm_delete, fgdbm_store, fgdbm_has_key): ditto.
+Thu Dec 9 11:00:30 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
- * ext/dbm/dbm.c (fdbm_delete_if): hide intermediate objects.
+ * array.c (rb_ary_dup): should copy contents only. no instance
+ variable, no class would be copied. it would affect methods
+ #sort, #reject, #transpose, #uniq, #compact, and #shuffle.
+ [ruby-core:33640]
- * ext/gdbm/gdbm.c (fgdbm_delete_if): ditto.
+ * array.c (rb_ary_reverse_m): ditto.
- * ext/dbm/extconf.rb: check size of datum.dsize to get rid of
- overflow.
+ * array.c (rb_ary_rotate_m): ditto.
-Tue Nov 8 23:30:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Dec 8 21:38:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * addr2line.c (PATH_MAX): define if not defined. [ruby-core:40840]
+ * ext/dl/lib/dl/struct.rb: clean a warning: assigned but unused
+ variable. patched by Kouhei Yanagita. [ruby-dev:42722]
-Tue Nov 8 23:26:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/dl/lib/dl/import.rb: ditto.
- * ext/tk/tcltklib.c (rb_thread_critical): fix type.
+Wed Dec 8 21:36:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/tk/tcltklib.c (eventloop_sleep, lib_eventloop_core): int is
- enough for micro seconds. may need to check overflow in the
- setter though.
+ * parse.y (shadowing_lvar_gen): fix line number. [ruby-dev:42718]
- * ext/tk/tcltklib.c (RSTRING_LENINT): check overflow if necessary.
+Wed Dec 8 20:37:11 2010 Tanaka Akira <akr@fsij.org>
- * ext/tk/tcltklib.c (RbTk_ALLOC_N): wrapper for ckalloc() which
- takes an int.
+ * dir.c: parenthesize macro arguments.
- * ext/tk/tcltklib.c (ip_ruby_cmd_receiver_get, tcltklib_compile_info):
- get rid overflow.
+Tue Dec 7 22:37:15 2010 Masaya Tarui <tarui@ruby-lnag.org>
- * ext/tk/tcltklib.c (tcltklib_compile_info): constified.
+ * io.c (io_read): duplicate string if shared. [ruby-dev:42719]
-Tue Nov 8 20:50:45 2011 Tanaka Akira <akr@fsij.org>
+Tue Dec 7 22:31:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/dbm/test_dbm.rb: split tests for read only database.
+ * lib/optparse.rb (OptionParser::Officious): separate completion
+ options from --help. [ruby-dev:42690]
- * test/gdbm/test_gdbm.rb: ditto.
+ * lib/optparse.rb (OptionParser::Completion#candidate),
+ (OptionParser::Switch#compsys): remove unused variables.
-Tue Nov 8 18:59:07 2011 Tanaka Akira <akr@fsij.org>
+Tue Dec 7 22:05:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/pty/pty.c (MasterDevice): define only when used.
- (SlaveDevice): ditto.
- (deviceNo): ditto.
+ * transcode.c (transcode_loop): call default handler of the given
+ hash, method, proc or [] method as fallback. [ruby-dev:42692]
-Tue Nov 8 17:59:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Dec 7 21:59:37 2010 Kouhei Sutou <kou@cozmixng.org>
- * include/ruby/ruby.h (rb_long2int): define as a macro always, so
- that cpp conditionals can tell if it is provided.
+ * lib/rexml/light/node.rb: remove circular require.
-Tue Nov 8 17:30:50 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Dec 7 21:56:01 2010 Kouhei Sutou <kou@cozmixng.org>
- * lib/mkmf.rb (cpp_command): remove multiple -arch flags since cpp
- cannot work.
+ * test/rexml/test_light.rb: really suppress a warning.
-Tue Nov 8 14:50:55 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Dec 7 21:51:57 2010 Kouhei Sutou <kou@cozmixng.org>
- * io.c (io_fwrite): call rb_w32_write_console() only if FMODE_TTY is
- set. this is the one of the reason of IO writing slowness of Windows
- in 1.9.3 or later.
+ * test/rexml/test_light.rb: suppress a warning.
-Tue Nov 8 11:01:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Dec 7 21:14:03 2010 Tanaka Akira <akr@fsij.org>
- * ext/pty/pty.c (get_device_once): FreeBSD 8 supported O_CLOEXEC flag
- for posix_openpt, but FreeBSD 9's posix_openpt doesn't support
- O_CLOEXEC and fails if specified.
+ * debug.c: parenthesize macro arguments.
-Tue Nov 8 02:36:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Dec 7 21:06:38 2010 Kouhei Sutou <kou@cozmixng.org>
- * include/ruby/encoding.h (ECONV_NEWLINE_DECORATOR_READ_MASK,
- ECONV_NEWLINE_DECORATOR_WRITE_MASK): new macro.
+ * lib/rexml/doctype.rb, test/rexml/test_doctype.rb: suppress warnings.
+ [ruby-core:33305]
+ Reported by Aaron Patterson. Thanks!!!
- * io.c (rb_io_extract_modeenc, pipe_open, prep_stdio, argf_next_argv):
- set TEXTMODE_NEWLINE_DECORATOR_ON_WRITE for textmode on creating IO
- if the flag is available.
+Tue Dec 7 18:56:52 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * io.c (make_writeconv): drop decorators for reading.
+ * ext/nkf/lib/kconv.rb (String#kconv): fix typo and update rdoc.
+ patched by Kouhei Yanagita [ruby-dev:42696]
- * io.c (make_readconv): drop decorators for writing.
+Tue Dec 7 20:32:11 2010 Kouhei Sutou <kou@cozmixng.org>
- * io.c (do_writeconv): existing writeconv is not the condition to raise
- ArgumentError. should check textmode or not.
+ * test/rexml/test_doctype.rb: add Accessor to test case name.
- * test/ruby/test_io_m17n.rb
- (TestIO_M17N#test_{cr,lf,crlf}_decorator_on_stdout): test above
- changes.
+Tue Dec 7 20:31:02 2010 Kouhei Sutou <kou@clear-code.com>
-Mon Nov 7 22:03:47 2011 Tanaka Akira <akr@fsij.org>
+ * test/rexml/test_doctype.rb: Doctype -> DocType.
- * ext/gdbm/gdbm.c (fgdbm_initialize): set close-on-exec flag.
+Tue Dec 7 20:29:23 2010 Kouhei Sutou <kou@clear-code.com>
-Mon Nov 7 20:31:52 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * test/rexml/test_doctype_mixin.rb: rename to ...
+ * test/rexml/test_doctype.rb: ... this to remove needless name.
- * ext/psych/lib/psych/scalar_scanner.rb: make sure strings that look
- like base 60 numbers are serialized as quoted strings.
- * test/psych/test_string.rb: test for change.
+Tue Dec 7 17:03:16 2010 Shugo Maeda <shugo@ruby-lang.org>
-Mon Nov 7 20:26:37 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * lib/net/imap.rb (xlist): supported the XLIST command, which is an
+ extension by Apple and Google. patch by Geoff Youngs.
+ [ruby-core:33521]
- * test/psych/test_yamlstore.rb: make test case inherit from MiniTest,
- load psych/helper so that psych is loaded.
+Tue Dec 7 08:00:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Nov 7 20:18:29 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * configure.in, win32/Makefile.sub (WERRORFLAG): flag to treat
+ warnings as errors.
- * test/psych/test_yamldbm.rb: Test case should inherit from MiniTest,
- load psych/helper so that psych and friends are loaded.
+ * lib/mkmf.rb (Logging.postpone): yield log file object.
-Mon Nov 7 20:15:44 2011 Tanaka Akira <akr@fsij.org>
+ * lib/mkmf.rb (xsystem): add options, :werror only right now.
- * ext/dbm/extconf.rb: check dbm_pagfno() and dbm_dirfno().
+ * lib/mkmf.rb (with_werror): check as if warnings are errors.
- * ext/dbm/dbm.c: use above to set close-on-exec flag.
+ * lib/mkmf.rb (convertible_int): make declaration conflict
+ warnings errors not to pass wrong type. [ruby-dev:42684]
-Mon Nov 7 20:05:16 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/mkmf.rb (COMMON_MACROS): get rid of conflicts.
- * io.c (io_fflush): remove fsync().
+ * win32/Makefile.sub (WARNFLAGS): make declaration conflict
+ warnings errors if possible.
- * io.c (rb_io_flush, rb_io_rewind): fsync() here.
+Sun Dec 7 21:16:10 2010 Tanaka Akira <akr@fsij.org>
- these changes reduces fsync() calls to improve performance.
- first reported at [ruby-list:48515] by ak7 at mail.goo.ne.jp .
- [Bug #5585]
+ * cont.c: parenthesize macro arguments.
-Mon Nov 7 19:43:10 2011 Tanaka Akira <akr@fsij.org>
+Tue Dec 7 00:27:14 2010 Masaya Tarui <tarui@ruby-lnag.org>
- * io.c (rb_close_before_exec): use F_MAXFD if available.
- F_MAXFD is available on NetBSD since NetBSD 2.0.
+ * win32/win32.c (rb_w32_read): fixed more for readline,
+ and so on. [ruby-core:33511]
-Mon Nov 7 19:25:16 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Dec 6 23:18:22 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_io_m17n.rb
- (TestIO_M17N#test_default_stdout_stderr_mode): new test for
- r33627-33629. see [backport #5565]
+ * test/mkmf/base.rb (TestMkmf#setup): run quietly.
-Mon Nov 7 01:14:22 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * test/mkmf/test_find_executable.rb (test_find_executable): use
+ configured results.
- * lib/debug.rb: add help for 'pp' and 'r[estart]'. patch
- from Sho Hashimoto. [Bug #5093] [ruby-dev:44222]
+ * common.mk (test-build): test for build process.
-Sun Nov 6 14:49:58 2011 Tanaka Akira <akr@fsij.org>
+Mon Dec 6 22:47:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/socket/rubysocket.h (rsock_recvmsg): declared.
+ * lib/optparse.rb (OptionParser#candidate): skip separators.
- * ext/socket/ancdata.c (rsock_recvmsg): extracted from
- nogvl_recvmsg_func.
- (nogvl_recvmsg_func): use rsock_recvmsg.
+ * sample/optparse/opttest.rb: should not override --help.
+ [ruby-dev:42690]
- * ext/socket/unixsocket.c (recvmsg_blocking): use rsock_recvmsg.
+Mon Dec 6 19:00:48 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-Sun Nov 6 03:22:36 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * misc/rb_optparse.zsh: fix typos.
- * test/openssl/test_engine.rb: add test for engine cipher. RC4 is used
- because AES is not supported by the "openssl" engine currently.
+Mon Dec 6 18:59:04 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-Sun Nov 6 00:11:52 2011 Tanaka Akira <akr@fsij.org>
+ * NEWS: add new encodings.
- * lib/test/unit.rb (Test::Unit::Options#non_options): options[:ruby]
- should be an array. This fixes
- "./ruby test/runner.rb test/testunit/test_parallel.rb"
- [ruby-dev:44782]
+Mon Dec 6 18:56:42 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-Sat Nov 5 20:30:30 2011 Martin Duerst <duerst@it.aoyama.ac.jp>
+ * test/ruby/test_string.rb (TestString#test_scan): add a test for
+ [ruby-core:33338] #4087.
- * insns.def: Some fixes and tweaks to English explanations
+Mon Dec 6 18:55:36 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-Sat Nov 5 19:11:50 2011 Tanaka Akira <akr@fsij.org>
+ * test/uri/test_common.rb (TestCommon#test_encode_www_form): add
+ tests for r30015.
- * io.c (rb_cloexec_fcntl_dupfd): don't clear try_dupfd_cloexec if
- fcntl(F_DUPFD) failed as fcntl(F_DUPFD_CLOEXEC).
+Mon Dec 6 10:39:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Nov 5 18:05:12 2011 Tanaka Akira <akr@fsij.org>
+ * lib/uri/common.rb (URI::Parser#initialize_pattern):
+ refix for restrict the pattern.
- * ext/socket/socket.c (rsock_socketpair0): refactored.
+Mon Dec 6 09:45:11 2010 Eric Hodel <drbrain@segment7.net>
-Sat Nov 5 17:55:52 2011 Tanaka Akira <akr@fsij.org>
+ * ext/openssl (OpenSSL): add toplevel documentation
+ * ext/openssl/ossl_ssl.c (SSLContext, SSLSocket: add additional
+ documentation
+ * ext/openssl: move "let rdoc know about mOSSL" comments so they don't
+ show up in output
- * ext/socket/init.c (rsock_socket0): don't clear try_sock_cloexec if
- SOCK_CLOEXEC is not a reason for EINVAL.
+Mon Dec 6 09:16:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Nov 5 16:27:52 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+ * lib/uri/common.rb (URI::Parser#initialize_pattern):
+ workaround fix pattern of hostname for RFC 3986. [ruby-dev:42672]
- * ext/pathname/lib/pathname.rb, ext/tk/lib/multi-tk.rb,
- ext/tk/sample/demos-en/widget, lib/benchmark.rb, lib/irb/cmd/fork.rb,
- lib/mkmf.rb, lib/net/ftp.rb, lib/net/smtp.rb, lib/open3.rb,
- lib/pstore.rb, lib/rexml/element.rb, lib/rexml/light/node.rb,
- lib/rinda/tuplespace.rb, lib/rss/maker/base.rb,
- lib/rss/maker/entry.rb, lib/scanf.rb, lib/set.rb, lib/shell.rb,
- lib/shell/command-processor.rb, lib/shell/process-controller.rb,
- lib/shell/system-command.rb, lib/uri/common.rb: remove unused block
- arguments to avoid creating Proc objects.
+Mon Dec 6 09:14:38 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Nov 5 15:45:04 2011 Tanaka Akira <akr@fsij.org>
+ * lib/mkmf.rb (check_signedness): rename unused variable prelude.
- * ext/socket/init.c (rsock_socket0): extract single socket() call with
- CLOEXEC handling from rsock_socket.
+Sun Dec 5 17:56:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Nov 5 13:49:40 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+ * class.c (make_metaclass): fix probable typo. builtin type flag
+ cannot be used with FL_TEST.
- * lib/pathname.rb (Pathname#find): return an enumerator if
- no block is given.
+Sun Dec 5 12:09:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/pathname/test_pathname.rb: add tests for above.
+ * lib/irb/init.rb (IRB.parse_opts): fix typo. [ruby-core:33574]
- [ruby-dev:44797] [Feature #5572]
+Sun Dec 5 11:27:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Nov 5 11:18:12 2011 Tanaka Akira <akr@fsij.org>
+ * ruby.c (load_file_internal): decrement for ungotten line.
+ [ruby-dev:42680]
- * ext/socket/socket.c (rsock_socketpair0): don't clear
- try_sock_cloexec if SOCK_CLOEXEC is not a reason for EINVAL.
+Sun Dec 5 10:32:11 2010 Tanaka Akira <akr@fsij.org>
-Fri Nov 4 14:08:19 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * complex.c: parenthesize macro arguments.
- * ext/openssl/ossl_pkey_rsa.c (rsa_generate): [SECURITY] Set RSA
- exponent value correctly. Awful bug. This bug caused exponent of
- generated key to be always '1'. By default, and regardless of e
- given as a parameter.
+Sat Dec 4 11:39:17 2010 Eric Hodel <drbrain@segment7.net>
- !!! Keys generated by this code (trunk after 2011-09-01) must be
- re-generated !!! (ruby_1_9_3 is safe)
+ * ext/openssl/ossl_x509ext.c (initialize): add documentation.
- * test/openssl/test_pkey_rsa.rb: Add tests for default exponent and
- specifying exponent by a parameter.
+Sat Dec 4 11:21:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Nov 4 01:31:25 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * hash.c (rb_hash_update_by): new API for Hash#update.
- * test/openssl/test_engine.rb: add first tests for builtin "openssl"
- engine.
+Sat Dec 4 11:18:10 2010 Tanaka Akira <akr@fsij.org>
-Fri Nov 4 08:41:26 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * class.c: parenthesize macro arguments.
- * ext/openssl/extconf.rb:
- * ext/openssl/ossl_engine.c: add some missing OpenSSL engines.
- Thanks, Yui Naruse, for providing the patch!
- [Bug #5548] [ruby-core:40670]
+Sat Dec 4 11:07:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Nov 4 04:54:10 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * vm_core.h (rb_vm_inc_const_missing_count): missing prototype.
- * win32/configure.bat: disable delayed expansion of enironment variable.
- [Bug #5517] [ruby-core:40531]
+Sat Dec 4 08:50:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Nov 4 03:45:22 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/iconv/iconv.c (Init_iconv): no warnings if $VERBOSE is nil.
- * io.c (make_writeconv): fixed typo of previous commit.
+Sat Dec 4 08:25:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Nov 4 01:56:30 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * vm_insnhelper.c (vm_call_method): revert r30064 and r30071,
+ because of [ruby-core:26761]. Bug#4106 rejected.
- * io.c (make_writeconv): unversal_newline converter is for reading.
- so, if the io is text mode and has ECONV_UNIVERSAL_NEWLINE_DECORATOR
- flag, use crlf_newline converter for writing.
- this change fixes the problem about the luck of CR up Kernel.p and
- Kernel.puts to stdout/stderr on Windows.
+Sat Dec 4 07:46:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Nov 4 01:04:48 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/mkmf.rb (String#tr_cpp): substitute * with P like as
+ autoconf.
- * ext/readline/readline.c (Init_readline): like r18313, libedit's
- replace_history_entry may use offset instead of which.
- so introduce history_replace_offset_func and initialize it.
+Fri Dec 3 22:36:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/readline/readline.c (hist_set): use history_replace_offset_func.
+ * vm_insnhelper.c (vm_call_method): protected methods should be
+ checked against the real class.
-Fri Nov 4 00:53:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Dec 3 20:23:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/readline/readline.c (Init_readline): fix wrong condition.
+ * lib/mkmf.rb (convertible_int): define printf format prefix too.
-Thu Nov 3 23:53:04 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/mkmf.rb (convertible_int): detect convertible integer type.
+ port RUBY_REPLACE_INT from configure.in.
- * encoding.c (rb_locale_charmap): ignore calling nl_langinfo_codeset()
- on Windows except cygwin. [experimental]
+ * lib/mkmf.rb (check_sizeof): should return integer always.
-Thu Nov 3 22:45:09 2011 Tanaka Akira <akr@fsij.org>
+Fri Dec 3 12:54:48 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/socket/socket.c (rsock_socketpair0): extracted from
- rsock_socketpair to set close-on-exec flag for each socketpair()
- call.
+ * win32/Makefile.sub (RCFLAGS): VC10 and after only. fixed the problem
+ of r30015. [ruby-core:33530]
-Thu Nov 3 22:12:41 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Fri Dec 3 12:41:52 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
- * ext/socket/init.c (rsock_socket): set close-on-exec flag when
- SOCK_CLOEXEC is not available.
+ * gc.c (rb_objspace_free): With our "lazy-sweep" GC engine, it is
+ possible for an object to survive until its surrounding object
+ space is about to be freed. Those objects, if any, remains
+ leaked for the rest of a process life. This is problematic
+ because for instance a T_DATA object may have its own destructor
+ to terminate something.
-Thu Nov 3 08:36:00 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * vm.c (ruby_vm_destruct): ruby_current_vm termination should be
+ somewhere after rb_objspace_free for above reason.
- * test/openssl/test_engine.rb: call Engine::cleanup on exit.
- Patch provided by Yui Naruse, thanks!
- [Bug #5547] [ruby-core:40669]
+Fri Dec 3 12:17:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Nov 2 21:36:00 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * vm_insnhelper.c (vm_call_method): protected singleton methods should
+ be visible from same real class methods. [ruby-core:33506]
- * complex.c (nucomp_rationalize): fix function. [ruby-core:40667]
- [Bug #5546]
+Fri Dec 3 07:08:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Nov 2 08:16:45 2011 Tanaka Akira <akr@fsij.org>
+ * ext/stringio/stringio.c (strio_getline): round upto next char
+ boundary. [ruby-dev:42674]
- * lib/webrick/utils.rb: fix fcntl call.
+Fri Dec 3 06:52:46 2010 Tanaka Akira <akr@fsij.org>
- * lib/drb/unix.rb: ditto.
+ * compile.c: parenthesize macro arguments.
-Wed Nov 2 00:43:59 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Fri Dec 3 04:08:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * test/psych/test_yamldbm.rb: avoid platform dependency.
- patch by Naohisa Goto. [ruby-dev:44763] [Bug #5535]
- * test/syck/test_yamldbm.rb: ditto.
+ * encoding.c (enc_alias_internal): use st_insert2 and change return
+ value to int.
-Wed Nov 2 00:14:15 2011 Shugo Maeda <shugo@ruby-lang.org>
+ * encoding.c (enc_alias): follow enc_alias_internal.
- * test/ruby/test_marshal.rb: renamed methods duplicated with those
- of marshaltestlib.rb.
+Fri Dec 3 01:52:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Nov 1 22:08:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * encoding.c (enc_alias_internal): use xfree instead of free.
- * configure.in: reject llvm-gcc.
+Thu Dec 2 23:52:26 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-Tue Nov 1 21:39:00 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * NEWS: entry for ruby_vm_at_exit().
- * io.c (rb_cloexec_pipe): remove workaround of r33587.
- The bug of NetBSD is fixed on Mon Oct 31 21:31:29 UTC 2011.
- http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=45545
+ * eval.c (ruby_cleanup): bug fix around at_exit (1) timing was
+ wrong. (2) execution order was opposite.
-Tue Nov 1 19:49:08 2011 Tanaka Akira <akr@fsij.org>
+Thu Dec 2 23:05:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * io.c (rb_io_reopen): call rb_fd_fix_cloexec instead of
- rb_maygvl_fd_fix_cloexec.
+ * win32/Makefile.sub (RCFLAGS): -nologo switch is only available in
+ newer versions of rc.exe. fixed the problem of r30012.
-Tue Nov 1 19:00:30 2011 Tanaka Akira <akr@fsij.org>
+Thu Dec 2 21:28:07 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * io.c (rb_io_reopen): call rb_maygvl_fd_fix_cloexec after freopen().
+ * ext/json/lib/json/add/rails.rb: removed.
-Tue Nov 1 17:17:26 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Dec 2 21:22:05 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * file.c (file_expand_path): reset coderange after expanding path.
+ * encoding.c (enc_alias_internal): free the copied key and
+ return NULL when given key is already registered.
-Tue Nov 1 14:55:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * encoding.c (enc_alias): call set_encoding_const only when the
+ alias is not registered yet.
- * io.c (nogvl_io_cntl): rb_cloexec_fcntl_dupfd's 2nd argument is int.
+Thu Dec 2 19:58:24 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
- * process.c (move_fds_to_avoid_crash): ditto.
+ * vm.c (ruby_vm_at_exit): new API. This enables extension libs to
+ hook a VM termination. Right now, because the VM we have is
+ process global, most extensions do not deallocate resources and
+ leave them to Operating System's reaping userland processes. But
+ in a future we plan to have multiple VMs to run simultaneously in
+ a single process (MVM project). At that stage we can no longer
+ rely on OSes and have to manage every resources to be reclaimed
+ properly. So it is. For a forward-compatibility reason this API
+ is introduced now, encouraging you to be as gentle as you can for
+ your resources; that is, tidy up your room.
-Tue Nov 1 13:14:33 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * include/ruby/vm.h: ditto.
- * vsnprintf.c (BSD_vfprintf): support 'll' prefix.
+ * vm_core.h (rb_vm_struct): new field.
- * vsnprintf.c (__sfeof): rename to avoid the collision with NetBSD's
- one.
+ * vm.c (vm_init2): initialize above new field.
- * vsnprintf.c (__sferror): ditto.
+ * eval.c (ruby_cleanup): trigger those hooks.
- * vsnprintf.c (__sclearerr): ditto.
+Thu Dec 2 17:00:44 2010 Tanaka Akira <akr@fsij.org>
- * vsnprintf.c (__sfileno): ditto.
+ * bignum.c: parenthesize macro arguments.
-Tue Nov 1 12:36:16 2011 Tanaka Akira <akr@fsij.org>
+Thu Dec 2 15:31:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * internal.h (rb_maygvl_fd_fix_cloexec): change the visibility for
- ext/socket.
+ * win32/win32.c (rb_w32_read): more fix. [ruby-core:33513]
-Tue Nov 1 12:00:53 2011 Tanaka Akira <akr@fsij.org>
+Thu Dec 2 13:41:43 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * io.c (rb_maygvl_fd_fix_cloexec): renamed from fd_set_cloexec.
+ * win32/win32.c (rb_w32_read): workaround for console reading troubles.
+ fixed [ruby-core:33511]
- * internal.h (rb_maygvl_fd_fix_cloexec): declared.
+Thu Dec 2 13:10:42 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/socket/init.c (cloexec_accept): use rb_maygvl_fd_fix_cloexec.
- (rsock_s_accept_nonblock): use rb_update_max_fd.
- (rsock_s_accept): use rb_update_max_fd.
+ * lib/uri/common.rb (URI.encode_www_form):
+ split key-value when the value is Array like object.
-Tue Nov 1 08:24:40 2011 Tanaka Akira <akr@fsij.org>
+Thu Dec 2 10:39:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/socket/init.c (cloexec_accept): new function to use accept4 if
- available.
- (rsock_s_accept_nonblock): use cloexec_accept.
- (accept_blocking): ditto.
+ * lib/net/http.rb (Net::HTTP#set_form_data):
+ use URI.encode_www_form for application/x-www-form-urlencoded.
- * ext/socket/extconf.rb: check accept4.
+Thu Dec 2 10:38:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Nov 1 07:31:55 2011 Tanaka Akira <akr@fsij.org>
+ * ext/extmk.rb: remove $makeflags.defined?, it should be $mflags.
- * ext/socket/ancdata.c (nogvl_recvmsg_func): use MSG_CMSG_CLOEXEC if
- available.
+Thu Dec 2 10:19:47 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/socket/unixsocket.c (recvmsg_blocking): ditto.
+ * win32/Makefile.sub (rc): suppress meaningless message.
-Tue Nov 1 05:59:41 2011 Tanaka Akira <akr@fsij.org>
+Thu Dec 2 10:09:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/socket/socket.c (rsock_socketpair): use SOCK_CLOEXEC if
- available.
+ * ext/json/generator/extconf.rb: remove the lines which set -O3
+ when -O option is not set.
+ Note that -O3 doesn't always exist.
-Tue Nov 1 02:56:17 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * ext/json/parser/extconf.rb: ditto.
- * ruby.c (load_file_internal): convert the encoding of load path if
- needed by platform. calling open() was replaced by rb_cloexec_open()
- at r33549, but the function expected UTF-8 pathname on Windows.
- (open() expected "locale" pathname.)
- reported by taco via IRC.
+Thu Dec 2 10:01:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ruby.c (load_file): change the type of the 2nd parameter to pass its
- encoding to load_file_internal().
+ * ext/extmk.rb: define $makeflags.defined? like $mflags.
- * ruby.c (process_options, rb_load_file): follow above change.
- NOTE: we should pass encoding information to rb_load_file().
+Thu Dec 2 07:20:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Oct 31 23:49:38 2011 Tanaka Akira <akr@fsij.org>
+ * lib/test/unit.rb (Test::Unit::GCStressOption): --gc-stress
+ option.
- * ext/socket/socket.c (rsock_socketpair): extracted from
- rsock_sock_s_socketpair.
+ * lib/test/unit.rb (Test::Unit::Mini#_run_suites): show the result
+ even when interrupted on the way.
-Mon Oct 31 23:31:53 2011 Tanaka Akira <akr@fsij.org>
+Thu Dec 2 07:08:38 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/socket/init.c (rsock_socket): use SOCK_CLOEXEC if available.
+ * ext/io/console/console.c (setattr): should retry on EINTR.
+ [ruby-dev:42666]
-Mon Oct 31 21:47:44 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Thu Dec 2 02:30:50 2010 Eric Hodel <drbrain@segment7.net>
- * io.c (rb_cloexec_pipe): NetBSD 6.0 will support pipe2(2),
- but its return value is -1 or larger than 0.
+ * lib/net/http.rb: fixed positional wording to match revised order.
-Mon Oct 31 22:04:54 2011 Tanaka Akira <akr@fsij.org>
+Thu Dec 2 01:24:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/dbm/dbm.c (fdbm_initialize): use O_CLOEXEC if available.
+ * ext/json/lib/json/common.rb: don't use iconv on 1.9.
+ patched by Shota Fukumori [ruby-core:33164]
-Mon Oct 31 21:47:48 2011 Tanaka Akira <akr@fsij.org>
+Thu Dec 2 01:02:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * include/ruby/intern.h (rb_fd_fix_cloexec): renamed from
- rb_fd_set_cloexec.
+ * ext/json: Update github/flori/json from 1.4.2+ to
+ e22b2f2bdfe6a9b0. this fixes some bugs.
- * io.c: follow the above renaming.
+Thu Dec 2 00:05:44 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/pty/pty.c: ditto.
+ * lib/net/http.rb: improve rdoc.
+ This change the order of chapter because such overview should
+ begin with simple examples.
+ patched by Eric Hodel [ruby-core:33469]
- * ext/socket/init.c: ditto.
+Wed Dec 1 22:01:49 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/socket/socket.c: ditto.
+ * numeric.c (Init_Numeric): fixed a potential bug when using bccwin32
+ ruby with Microsoft's dll, though we already gave up of supporting
+ bccwin32. [ruby-core:33503]
- * ext/socket/ancdata.c: ditto.
+Wed Dec 1 21:43:21 2010 Tanaka Akira <akr@fsij.org>
- * ext/socket/unixsocket.c: ditto.
+ * array.c: parenthesize macro arguments.
-Mon Oct 31 21:02:43 2011 Tanaka Akira <akr@fsij.org>
+Wed Dec 1 21:41:57 2010 Tanaka Akira <akr@fsij.org>
- * lib/resolv.rb (Resolv::DNS): retry IO.select for premature wakeup.
+ * test/socket/test_addrinfo.rb: extract Errno::EADDRINUSE as a method.
-Mon Oct 31 20:14:22 2011 Tanaka Akira <akr@fsij.org>
+ * test/socket/test_socket.rb: ditto.
- * io.c (fd_set_cloexec): clear CLOEXEC flag for standard file
- descriptors.
- (rb_cloexec_dup): use rb_cloexec_fcntl_dupfd.
- (rb_cloexec_fcntl_dupfd): use F_DUPFD_CLOEXEC if available.
+Wed Dec 1 15:08:32 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Mon Oct 31 19:14:11 2011 Tanaka Akira <akr@fsij.org>
+ * test/openssl/test_ssl.rb (test_not_started_session): non socket
+ argument of SSLSocket.new is not supported on Windows.
- * test/resolv/test_dns.rb: don't check maximum slept time.
- ruby doesn't guarantee the maximum time because it is not a
- realtime application.
+Wed Dec 1 14:36:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Oct 31 13:10:06 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * string.c (rb_memhash): zero-filled strings should return
+ different values. [ruby-core:33500]
- * win32/win32.c (setfl): extract from fcntl().
+Wed Dec 1 14:27:49 2010 Ryan Davis <ryand-ruby@zenspider.com>
- * win32/win32.c (dupfd): new function to support F_DUPFD. based on a
- patch written by akr.
+ * lib/minitest/*.rb: Imported minitest 2.0.0 r5952.
+ * test/minitest/*.rb: ditto.
+ * lib/test/unit.rb: Compatibility fix for minitest changes.
- * win32/win32.c (fcntl): use above functions.
+Wed Dec 1 10:16:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * include/ruby/win32.h (F_DUPFD): define. [experimental]
+ * string.c (rb_str_inspect): fix typo (not 0xFD but 0xFE).
- * include/ruby/win32.h (F_SETFL): change the value to correspond with
- other platforms.
+Wed Dec 1 09:28:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Oct 31 12:37:50 2011 Tanaka Akira <akr@fsij.org>
+ * addr2line.c: Follow .gnu_debuglink section.
+ A user of distribution provided ruby will see line
+ info if s/he has a debug package for ruby.
+ patched by Shinichiro Hamaji [ruby-dev:42655]
- * ext/pty/pty.c (get_device_once): use O_CLOEXEC for posix_openpt if
- available.
+Wed Dec 1 01:29:15 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Oct 31 12:05:24 2011 Tanaka Akira <akr@fsij.org>
+ * string.c (rb_str_inspect): inspect as a dummy encoding string
+ when a UTF-16/32 (not BE/LE) string does not have a BOM.
+ Unicode and some RFCs say that a string labeled as UTF-16/32
+ doesn't have a BOM, it should be considered big endian.
+ But many Windows programs generates little endian UTF-16
+ strings without a BOM. So String#inspect treats a string
+ labeled UTF-16/32 without a BOM as a dummy encoding string.
+ patched by Martin Duerst. [ruby-core:33461]
- * io.c (rb_cloexec_dup2): check oldfd == newfd at first.
- pointed by KOSAKI Motohiro. [ruby-dev:44713]
+Tue Nov 30 17:04:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Mon Oct 31 10:50:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * addr2line.c (parse_debug_line_cu): ignore DW_LNE_set_discriminator.
+ To ignore, it needs to read a single unsigned LEB128 integer.
- * io.c (rb_cloexec_fcntl_dupfd): this function needs F_DUPFD.
+Tue Nov 30 16:29:19 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * io.c (nogvl_io_cntl): use rb_cloexec_fcntl_dupfd() only if the
- platform has F_DUPFD.
+ * vm_dump.c: undef HAVE_BACKTRACE when the OS is FreeBSD (in other
+ words backtrace() is libexecinfo) and it is optimized.
+ This temporary hack may be also applied to other libexecinfo
+ environments.
-Mon Oct 31 00:50:00 2011 Luis Lavena <luislavena@gmail.com>
+Tue Nov 30 16:23:23 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * configure.in: check -fno-omit-frame-pointer acceptance and usage
- under MinGW. [ruby-core:39957] [Bug #5407]
+ * lib/net/http.rb: improve rdoc.
+ patched by Eric Hodel ref #4100
-Mon Oct 31 00:16:11 2011 Tanaka Akira <akr@fsij.org>
+Tue Nov 30 12:23:52 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * include/ruby/intern.h (rb_cloexec_fcntl_dupfd): declared.
+ * win32/win32.c (rb_w32_read): read only 1 byte at once on console.
+ workaround of Windows bug. see [ruby-core:33460].
+ this is not the final solution.
- * io.c (rb_cloexec_fcntl_dupfd): new function.
- (nogvl_io_cntl): use rb_cloexec_fcntl_dupfd.
+Tue Nov 30 11:39:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * process.c (move_fds_to_avoid_crash): use rb_cloexec_fcntl_dupfd.
+ * lib/net/http.rb: improve rdoc.
+ patched by mathew murphy [ruby-core:33472] ref #4100
-Sun Oct 30 22:46:46 2011 Tanaka Akira <akr@fsij.org>
+Tue Nov 30 05:03:44 2010 Eric Hodel <drbrain@segment7.net>
- * configure.in: check pipe2.
+ * lib/uri/common.rb (encode_www_form, encode_www_form_component):
+ Improve English in documentation.
- * io.c (rb_cloexec_pipe): use pipe2 if available.
+ * ext/openssl/ossl_ssl.c (ssl_version=, ciphers=): Document
+ #ssl_version=, add documentation for #ciphers=.
-Sun Oct 30 22:32:44 2011 Tanaka Akira <akr@fsij.org>
+Mon Nov 29 22:55:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ruby.c (fill_standard_fds): use fstat() instead of fcntl(F_GETFD)
- for MinGW. reported by Luis Lavena. [ruby-core:40526] [Bug #5516]
+ * lib/uri/common.rb (URI::WFKV_): get rid of backtrack explosion
+ by nested repeat operators. [ruby-core:33464]
-Sun Oct 30 21:12:47 2011 Tanaka Akira <akr@fsij.org>
+Mon Nov 29 22:53:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * include/ruby/intern.h (rb_cloexec_pipe): declared.
+ * win32/Makefile.sub (scriptbin.mk): fix generated rules.
- * io.c (rb_cloexec_pipe): new function.
- (rb_pipe): use rb_cloexec_pipe.
+ * win32/win32.c (rb_w32_write_console): fix argument type.
- * thread_pthread.c (rb_thread_create_timer_thread): use
- rb_cloexec_pipe.
+Mon Nov 29 21:12:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Oct 30 20:06:07 2011 Tanaka Akira <akr@fsij.org>
+ * misc/ruby-mode.el (ruby-forward-sexp): stop after literal hash
+ key labels.
- * io.c (rb_cloexec_dup): refine control flow.
- (rb_cloexec_dup2): ditto.
+ * misc/ruby-mode.el (ruby-font-lock-keywords): highlight literal
+ hash key labels as symbols.
-Sun Oct 30 18:45:50 2011 Tanaka Akira <akr@fsij.org>
+Mon Nov 29 18:31:31 2010 Martin Duerst <duerst@it.aoyama.ac.jp>
- * ruby.c (fill_standard_fds): new function to open closed standard
- file descriptors.
- (ruby_sysinit): call fill_standard_fds.
+ * test/ruby/test_transcode.rb (test_unicode_public_review_issue_121):
+ - Removed commented-out options that are no longer under discussion.
+ - Added two more tests for forthcomming clarifications.
-Sun Oct 30 10:50:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Nov 29 14:31:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * tool/rbinstall.rb (install_recursive, bin-comm): split mere
- string not path name. [ruby-core:40462] [Bug #5492]
+ * win32/win32.c (rb_w32_isatty): use GetConsoleMode() to determine the
+ fd is console or not, just like rb_w32_write_console(). [experimental]
-Sun Oct 30 10:47:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Nov 29 14:19:40 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * io.c (rb_cloexec_dup, rb_cloexec_dup2): CLOEXEC has been set if
- dup3 succeeded.
+ * include/ruby/win32.h (rb_w32_write_console): wrong prototype.
-Sun Oct 30 09:58:48 2011 Tanaka Akira <akr@fsij.org>
+Mon Nov 29 14:10:55 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * io.c (rb_cloexec_dup): don't allocate standard file descriptors.
+ * win32/win32.c (rb_w32_write_console): fixed indentation.
-Sun Oct 30 08:29:51 2011 Tanaka Akira <akr@fsij.org>
+Sun Nov 28 22:13:39 2010 Koichi Sasada <ko1@atdot.net>
- * io.c (rb_cloexec_dup2): don't set CLOEXEC for standard file
- descriptors.
+ * thread_pthread.c (NATIVE_MUTEX_LOCK_DEBUG): move and use it.
-Sun Oct 30 07:47:10 2011 Tanaka Akira <akr@fsij.org>
+ * ChangeLog: fix my timezone.
- * configure.in: check dup3.
+Mon Nov 28 21:58:58 2010 Koichi Sasada <ko1@atdot.net>
- * io.c (rb_cloexec_dup2): use dup3 if available.
+ * thread_pthread.c: remove pthread_atfork().
-Sat Oct 29 22:06:37 2011 Tanaka Akira <akr@fsij.org>
+Mon Nov 28 21:54:22 2010 Koichi Sasada <ko1@atdot.net>
- * include/ruby/intern.h (rb_cloexec_dup2): declared.
+ * thread_pthread.c (native_cond_*): Check return code.
+ (Some OSes except Linux return error code).
- * io.c (rb_cloexec_dup2): new function.
- (io_reopen): use rb_cloexec_dup2.
+Sun Nov 28 21:46:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Oct 20 21:08:18 2011 Tajima Akio <artonx@yahoo.co.jp>
+ * thread_pthread.c (thread_start_func_1): initialize native thread
+ data immediately before starting.
- * win32/Makefile.sub (CONFIG_H): have stdint.h if VC2010.
- [Bug #5243]
+Sun Nov 28 14:56:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Oct 29 20:59:08 2011 Tanaka Akira <akr@fsij.org>
+ * io.c (struct argf): make lineno long, and reorder members.
- * io.c (rb_cloexec_dup): use F_DUPFD_CLOEXEC if available.
+Sun Nov 28 14:55:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Oct 29 20:00:26 2011 Tanaka Akira <akr@fsij.org>
+ * thread_win32.c (gvl_release, gvl_init): suppress warnings.
- * include/ruby/intern.h (rb_cloexec_dup): declared.
+Sun Nov 28 14:48:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (rb_cloexec_dup): new function.
- (ruby_dup): use rb_cloexec_dup.
+ * thread_pthread.c (gvl_release, gvl_init): suppress warnings.
- * ext/pty/pty.c (pty_getpty): use rb_cloexec_dup.
+ * vm_core.h (rb_vm_gvl_destroy): add prototype.
- * ext/openssl/ossl_bio.c (ossl_obj2bio): ditto.
+Sun Nov 28 14:46:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Oct 29 16:11:34 2011 Tanaka Akira <akr@fsij.org>
+ * thread_pthread.c (gvl_reinit): register atfork handler only in
+ the parent process, to get rid of dead lock.
- * ext/sdbm/_sdbm.c (sdbm_prep): use O_CLOEXEC if available.
+Sun Nov 28 12:23:57 2010 Koichi Sasada <ko1@atdot.net>
-Sat Oct 29 14:26:56 2011 Tanaka Akira <akr@fsij.org>
+ * thread.c, vm_core.h: make gvl_acquire/release/init/destruct
+ APIs to modularize GVL implementation.
- * io.c (rb_cloexec_open): use O_CLOEXEC if available.
+ * thread_pthread.c, thread_pthread.h: Two GVL implementations.
+ (1) Simple locking GVL which is same as existing GVL.
+ (2) Wake-up queued threads. The wake-up order is simple FIFO.
+ (We can make several queues to support exact priorities, however
+ this causes some issues such as priority inversion and so on.)
+ This impl. prevents spin-loop (*1) caused on SMP environments.
+ *1: Only one Ruby thread acquires GVL again and again.
+ Bug #2359 [ruby-core:26694]
-Sat Oct 29 12:57:15 2011 Tanaka Akira <akr@fsij.org>
+ * thread_win32.c, thread_win32.h: Using simple lock
+ not by CRITICAL_SECTION but by Mutex.
+ Bug #3890 [ruby-dev:42315]
- * process.c (ruby_setsid): use rb_cloexec_open.
- (rb_daemon): ditto.
+ * vm.c (ruby_vm_destruct): ditto.
- * ruby.c (load_file_internal): ditto.
+Sun Nov 28 04:40:00 2010 Luis Lavena <luislavena@gmail.com>
- * file.c (rb_file_s_truncate): ditto.
- (file_load_ok): ditto.
+ * io.c (io_fwrite): use rb_w32_write_console under Windows.
- * random.c (fill_random_seed): ditto.
+ * win32/win32.c (rb_w32_write_console): added to write to write
+ Unicode using WriteConsoleW for stdout/stderr. [ruby-core:33166]
- * ext/pty/pty.c (chfunc): ditto.
- (get_device_once): ditto.
+Sun Nov 28 03:58:47 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/io/console/console.c (console_dev): ditto.
+ * lib/net/http.rb: improve rdoc.
+ patched by Mike Perham [ruby-core:33433]
-Sat Oct 29 10:40:19 2011 Tanaka Akira <akr@fsij.org>
+Sat Nov 27 19:12:10 2010 Tanaka Akira <akr@fsij.org>
- * include/ruby/intern.h (rb_cloexec_open): declared.
+ * time.c: parenthesize macro arguments.
- * io.c (fd_set_cloexec): extracted from rb_fd_set_cloexec.
- (rb_cloexec_open): new function.
- (sysopen_func): use rb_cloexec_open.
- (rb_sysopen_internal): use rb_update_max_fd instead of
- rb_fd_set_cloexec.
+Sat Nov 27 18:08:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Oct 29 09:05:07 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * time.c (leap_year_v_p): fixed typo. [ruby-dev:42631]
- * thread_pthread.h: no Structured Exception Handling like macros.
- [ruby-core:40432] [Bug #5491]
+Sat Nov 27 17:57:08 2010 Tanaka Akira <akr@fsij.org>
-Fri Oct 28 22:05:34 2011 Tanaka Akira <akr@fsij.org>
+ * resolv.rb (Resolv::DNS): use the same DNS server when retry using
+ TCP. reported by Julian Mehnle. [ruby-core:32970]
- * ext/sdbm/_sdbm.c: RCS $Id$ removed.
+Sat Nov 27 15:45:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Oct 27 18:58:00 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * vm_dump.c (rb_vm_bugreport): see CrashReport log on Mac OS X.
- * parse.y (parser_nextc): set encoding for the buffer of ripper.
+ * configure.in: link addr2line only for ELF.
-Fri Oct 28 06:06:08 2011 Tanaka Akira <akr@fsij.org>
+Sat Nov 27 13:58:55 2010 Shugo Maeda <shugo@ruby-lang.org>
- * ext/sdbm/_sdbm.c (sdbm_prep): set FD_CLOEXEC flags for file
- descriptors.
- (fd_set_cloexec): new function.
+ * lib/optparse.rb (OptionParser#candidate): : was missing. Thanks,
+ Shota Fukumori. [ruby-dev:42634]
-Fri Oct 28 03:01:27 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Sat Nov 27 12:07:05 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
- * vm_insnhelper.c (vm_call_cfunc): adding back useless hack. For some
- reason, this fixes CFP errors on OS X 10.7.
+ * man/ruby.1: Ruby man page from Arthur Gunn in [ruby-core:33412]
-Fri Oct 28 00:09:31 2011 Tanaka Akira <akr@fsij.org>
+Sat Nov 27 11:29:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/sdbm/_sdbm.c (sdbm_prep): refactored for less nesting.
+ * lib/optparse.rb (OptionParser#candidate): get rid of 1.9 syntax
+ so that BASERUBY can be 1.8.
-Thu Oct 27 18:28:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Nov 27 08:16:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in (RUBY_DEFINE_IF): revert r33534 partially to get
- rid of AS_ECHO which is not available in autoconf 2.61.
- [ruby-dev:44702]
+ * addr2line.c (rb_dump_backtrace_with_lines): should close fd on
+ edge case.
-Thu Oct 27 16:10:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Nov 26 13:33:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * bignum.c (rb_big_divide): raise ZeroDivisionError if divisor is
- zero, as well as Fixnum. [ruby-core:40429] [Bug #5490]
+ * addr2line.c: apply a patch from shinichiro.h.
-Thu Oct 27 14:56:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Nov 26 12:21:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * configure.in (RUBY_FUNC_ATTRIBUTE): unset temporary variable.
+ * addr2line.c: added to show source filename and line number of
+ functions in backtrace. [ruby-dev:42625]
+ a patch from shinichiro.h <shinichiro.hamaji AT gmail.com>
- * configure.in (RUBY_STACK_GROW_DIRECTION): substitute CPU name as
- shell variable name. based on the patch by The Written Word Inc. at
- [ruby-core:40421]. [Bug #5488]
+ * addr2line.h: ditto.
-Thu Oct 27 09:57:56 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * common.mk: add addr2line.$(OBJEXT).
- * include/ruby/ruby.h (SIZE_MAX): define SIZE_MAX if not defined.
- patched by The Written Word Inc. [ruby-core:40422] [Bug #5489]
+ * configure.in: check dl_iterate_phdr.
-Thu Oct 27 08:47:38 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * vm_dump.c (rb_vm_bugreport): use rb_dump_backtrace_with_lines in
+ addr2line.c when the binary is ELF.
- * ext/psych/parser.c: remove unused variable.
+Fri Nov 26 12:12:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Oct 27 08:38:41 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * regcomp.c (setup_tree): restart setup_tree() for a node whose
+ AnchorNode's type is ANCHOR_PREC_BEHIND or ANCHOR_PREC_BEHIND_NOT
+ and divide_look_behind_alternatives() divided it to NT_ALT or
+ NT_LIST. [ruby-core:33370]
- * ext/openssl/extconf.rb: add -Wall flag by default when compiler is
- GCC.
+Fri Nov 26 11:40:11 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Wed Oct 26 15:24:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * vm_dump.c (dump_thread): get only required rights of the target
+ thread because THREAD_ALL_ACCESS causes an access error on XP.
+ reported by Masaya TARUI via IRC.
- * file.c (rb_file_join): honor input encodings than ASCII-8BIT.
- [ruby-core:40338] [Bug #5483]
+Fri Nov 26 11:09:07 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Tue Oct 25 21:52:31 2011 Tanaka Akira <akr@fsij.org>
+ * vm_dump.c (dump_thread): show the displacement from the beginning
+ of the symbol.
- * include/ruby/defines.h: use "__sparc" instead of "sparc" and
- "__sparc__".
+Fri Nov 26 10:48:23 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * dln.c: ditto.
+ * vm_dump.c (dump_thread): follow the output of glibc.
+ see [ruby-dev:42627]
- [ruby-dev:44694]
+Fri Nov 26 09:48:45 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Tue Oct 25 06:34:39 2011 Eric Hodel <drbrain@segment7.net>
+ * re.c (rb_reg_initialize_str): should succeed the taint status from
+ the origin. [ruby-core:33338]
- * re.c (match_aref): Use <code> around indexing examples to prevent
- hyperlinks. [ruby-talk:389396]
+Fri Nov 26 09:32:37 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Mon Oct 24 23:55:31 2011 Tanaka Akira <akr@fsij.org>
+ * vm_dump.c (dump_thread): seems to be necessary the 3rd argument of
+ SymGetLineFromAddr64(), even though MSDN says it can be zero.
- * complex.c: use "__sun" instead of "__sun__" to detect SunOS.
+Fri Nov 26 09:03:38 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * math.c: ditto.
+ * regcomp.c (onig_is_prelude): added to check whether ruby is still
+ in prelude (or other boot processes) or not.
- * hash.c: ditto.
+ * regcomp.c (optimize_node_left): use onig_is_prelude for printing.
- * atomic.h: ditto.
+ * regcomp.c (set_optimize_info_from_tree): ditto.
- * ext/io/wait/wait.c: ditto.
+ * regcomp.c (onig_compile): ditto.
- [ruby-dev:44693]
+ * regcomp.c (print_compiled_byte_code_list): print its address.
-Mon Oct 24 22:45:37 2011 Tanaka Akira <akr@fsij.org>
+ * regcomp.c (print_indent_tree): print its contents tree of
+ ANCHOR_PREC_READ(_NOT) and ANCHOR_PREC_BEHIND(_NOT).
- * io.c: use "__sun" instead of "sun" to detect SunOS.
+Thu Nov 25 23:10:49 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * dln.c: ditto.
+ * regcomp.c (print_distance_range): use PRIuSIZE.
- * cont.c: ditto.
+ * regcomp.c (print_optimize_info): use %ld because the type of
+ calculated value of integers is long.
- * ext/sdbm/_sdbm.c: ditto.
+ * regexec.c (onig_print_compiled_byte_code): add prototype.
- [ruby-dev:44693]
+ * regexec.c (match_at): add 2nd argument.
-Mon Oct 24 22:38:08 2011 Tanaka Akira <akr@fsij.org>
+Thu Nov 25 10:29:55 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/pty/pty.c (get_device_once): delay rb_fd_set_cloexec() until
- grantpt() on Solaris. grantpt() doesn't work with CLOEXEC on
- Solaris 10.
- reported by Naohisa GOTO. [ruby-dev:44688] [Bug #5475]
+ * ext/dl/callback/mkcallback.rb (gencallback): shouldn't assume that
+ VALUE is the same size with long.
-Mon Oct 24 08:18:14 2011 Tanaka Akira <akr@fsij.org>
+Thu Nov 25 10:03:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * io.c (copy_stream_fallback_body): check nil for EOF of read method.
- patch by Eric Wong. [ruby-core:39134] [Bug #5237]
+ * test/win32ole/test_err_in_callback.rb (teardown): remove tmp file
+ only when it exists.
-Sun Oct 23 18:21:23 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+Thu Nov 25 01:38:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/tk/MANUAL_tcltklib.eng: fix typo.
+ * enc/trans/big5-hkscs-tbl.rb: Update table as HKSCS-2008.
+ patched by oCameLo oTnTh [ruby-core:33256]
-Sun Oct 23 18:03:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * enc/big5.c: add alias Big5-HKSCS:2008 to Big5-HKSCS.
- * numeric.c (rb_infinity, rb_nan): aggregated member initializers
- need braces.
+Wed Nov 24 15:18:07 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Sun Oct 23 16:43:43 2011 Naohisa Goto <ngotogenome@gmail.com>
+ * vsnprintf (BSD_vfprintf): use QUADINT macro only when _HAVE_SANE_QUAD_
+ macro is defined.
- * ext/io/wait/wait.c: ioctl(2) is declared in unistd.h on Solaris.
+Wed Nov 24 12:47:16 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Sun Oct 23 16:33:35 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * vsnprintf (BSD_vfprintf): added VC++ compatible size specifications
+ (I, I32, I64).
- * ext/tk/MANUAL_tcltklib.eng: fix typo. reported by Mimura-san.
- [ruby-dev:44683] [Bug #5471]
+Wed Nov 24 11:19:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Oct 23 08:01:29 2011 Tanaka Akira <akr@fsij.org>
+ * string.c (rb_str_inspect): treat UTF-16 and UTF-32 as BE or LE.
- * io.c (rb_fd_set_cloexec): set close-on-exec flag only if F_GETFD is
- defined. reported by Luis Lavena. [ruby-core:40281] [Bug #5470]
+Wed Nov 24 06:35:32 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Oct 22 19:48:50 2011 Tanaka Akira <akr@fsij.org>
+ * enc/trans/utf_16_32.trans: add the UTF-32 converter.
- * test/openssl/test_ssl.rb (test_multibyte_read_write): start server
- for each length to avoid race condition.
+Wed Nov 24 05:40:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Oct 22 18:49:24 2011 Tanaka Akira <akr@fsij.org>
+Wed Nov 24 06:13:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * include/ruby/intern.h (rb_fd_set_cloexec): declared.
+ * win32/win32.c (filecp, wstr_to_mbstr, mbstr_to_wstr):
+ refactored.
- * io.c (rb_fd_set_cloexec): new function.
- (ruby_dup): call rb_fd_set_cloexec to set close-on-exec flag.
- (rb_sysopen_internal): ditto.
- (rb_pipe): ditto.
- (io_reopen): ditto.
- (io_cntl): ditto.
+Wed Nov 24 05:40:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * process.c (rb_f_exec): change the default :close_others option to
- true.
- (rb_f_system): ditto.
- (move_fds_to_avoid_crash): call rb_fd_set_cloexec to set
- close-on-exec flag.
- (ruby_setsid): ditto.
- (rb_daemon): ditto.
+ * enc/trans/utf_16_32.trans: add a converter from UTF-8 to UTF-16.
- * thread_pthread.c (rb_thread_create_timer_thread): call
- rb_fd_set_cloexec to set close-on-exec flag.
+Wed Nov 24 03:21:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ruby.c (load_file_internal): ditto.
+ * enc/trans/utf_16_32.trans: raise error on unpaired upper
+ surrogates.
- * file.c (rb_file_s_truncate): ditto.
- (file_load_ok): ditto.
+Wed Nov 24 01:40:23 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * random.c (fill_random_seed): ditto.
+ * enc/utf_16_32.h: add UTF-16 and UTF-32 as a dummy encoding.
- * ext/pty/pty.c (chfunc): ditto.
- (get_device_once): ditto.
+ * enc/trans/utf_16_32.trans: add a converter from UTF-16 to UTF-8.
- * ext/openssl/ossl_bio.c (ossl_obj2bio): ditto.
+Tue Nov 23 21:59:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/socket/init.c (rsock_socket): ditto.
- (rsock_s_accept_nonblock): ditto.
- (rsock_s_accept): ditto.
+ * win32/win32.c (wlink, rb_w32_getppid): use typedef instead of
+ repeating complicated function prototypes.
- * ext/socket/socket.c (rsock_sock_s_socketpair): ditto.
+Tue Nov 23 18:54:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/socket/ancdata.c (discard_cmsg): ditto.
- (make_io_for_unix_rights): ditto.
+ * vm.c (rb_thread_mark): should mark self in control
+ frames. [ruby-core:33289]
- * ext/socket/unixsocket.c (unix_recv_io): ditto.
+Tue Nov 23 07:57:31 2010 Tadayoshi Funaba <tadf@dotrb.org>
- * ext/io/console/console.c (console_dev): ditto.
+ * lib/date/delta/parser.{ry,rb}: fixed a bug of token scanner.
- [ruby-core:38140] [Feature #5041]
+Tue Nov 23 07:29:24 2010 Tadayoshi Funaba <tadf@dotrb.org>
-Sat Oct 22 17:46:27 2011 Tanaka Akira <akr@fsij.org>
+ * complex.c, rational.c ({nucomp,nurat}_expt): added a check.
- * lib/resolv.rb: fix a exception name in previous patch.
+Tue Nov 23 07:27:27 2010 Tadayoshi Funaba <tadf@dotrb.org>
-Sat Oct 22 17:43:33 2011 Tanaka Akira <akr@fsij.org>
+ * lib/date.rb (daynum): should be private.
- * lib/resolv.rb: make timeout configurable for DNS query.
- patch by Eric Wong. [ruby-core:38533] [Feature #5100]
+Tue Nov 23 07:22:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Oct 22 02:07:48 2011 Naohisa Goto <ngotogenome@gmail.com>
+ * ChangeLog (change-log-indent-text): hanging indent.
- * numeric.c (rb_infinity, rb_nan): use union to prevent bus error
- caused by misalignment. [Bug #5469] [ruby-dev:44657]
+Tue Nov 23 06:30:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * include/ruby/missing.h (INFINITY, NAN): ditto
+ * configure.in (SITE_DIR, VENDOR_DIR),
+ version.c (ruby_initial_load_paths): exclude directories that
+ are configured without them from $LOAD_PATH. [ruby-core:33267]
-Fri Oct 21 22:02:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in (rubylibprefix): No ruby, No libprefix.
- * gc.c (initial_params): pack in a struct.
+Tue Nov 23 01:05:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * gc.c (rb_gc_set_params): set parameters always.
- [ruby-dev:44648] [Bug #5467]
+ * vsnprintf.c (BSD_vfprintf): don't output floating point
+ when the precision is 0. [ruby-dev:42615]
-Fri Oct 21 12:10:20 2011 Naohisa Goto <ngotogenome@gmail.com>
+Mon Nov 22 21:30:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * atomic.h: change Solaris checking macro because atomic_ops can work
- not only with Sun Studio but also with Fujitsu C Compiler.
+ * string.c (rb_str_inspect): fix for ascii-compatible external
+ encoding and different encoding string. [ruby-core:33283]
-Fri Oct 21 02:11:00 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Mon Nov 22 18:45:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/openssl/ossl_ns_spki.c: Complete documentation.
- * test/openssl/test_ns_spki.rb: Integrate SPKI#to_text.
+ * lib/mkmf.rb (create_makefile): should not duplicate rules.
+ bug fix of r29842.
-Thu Oct 20 22:47:28 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Mon Nov 22 18:04:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * win32/win32.c (socklist_insert, socklist_lookup, socklist_delete):
- new functions to wrap of st_insert(), st_lookup() and st_delete() to
- socklist.
- allocating socklist is deferred until it is really needed.
+ * enc/big5.c: split CP950 from Big5.
- * win32/win32.c (exit_handler): delete socklist only if it is
- initialized.
+ * enc/big5.c: split CP951 from Big5-HKSCS.
- * win32/win32.c (rb_w32_sysinit, StartSockets): refactoring: move
- initialization of select_mutex to StartSockets().
+ * enc/trans/big5.trans: import conversion table of Big5, Big5-HKSCS,
+ CP950, and CP951 from ICU. they need fallback conversions.
+ ref [ruby-core:33256]
+ http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/
- * win32/win32.c (exit_handler): refactoring: delete select_mutex only
- if winsock is used.
+ * tool/transcode-tblgen.rb (import_ucm): add to import ucm files.
-Thu Oct 20 22:38:53 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Mon Nov 22 18:33:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/openssl/ossl_pkcs5.c: add note on timing attacks and general
- documentation.
+ * string.c (rb_str_inspect): append for each chars instead of bulk
+ copy if encoding conversion is needed. [ruby-core:33283]
-Thu Oct 20 21:19:15 2011 Naohisa Goto <ngotogenome@gmail.com>
+Mon Nov 22 14:22:45 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * vm_eval.c (check_funcall): set array elements one-by-one to fix
- compile error with Fujitsu C Compiler 5.6 on Solaris 10 on Sparc.
- [Bug #5464] [ruby-dev:44632]
+ * time.c (time_zone): use rb_locale_str_new_cstr to set encoding
+ as locale and convert its content to internal encoding.
+ [ruby-core:33278]
-Thu Oct 20 13:09:35 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Nov 22 11:58:11 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * include/ruby/defines.h (flush_register_windows): use software
- trap on Debian Sparc 32-bit userspace. [Bug #5244]
+ * string.c (rb_str_concat): set ENC_CODERANGE_VALID when the
+ receiver is 7BIT and the argument is non ASCII.
-Thu Oct 20 12:28:22 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Mon Nov 22 01:48:58 2010 Tadayoshi Funaba <tadf@dotrb.org>
- * test/openssl/test_pkcs5.rb: add RFC 6070 tests for PBKDF2 with
- HMAC-SHA1
+ * lib/date.rb: some improvements for performance.
-Thu Oct 20 11:42:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Nov 20 07:45:50 2010 Aaron Patterson <aaron@tenderlovemaking.com>
- * util.c (mmprepare): fix for fragmental size.
+ * lib/mkmf.rb: adding compilation support for ObjC/ObjC++ extensions.
+ Thanks Scott Gonyea! [ruby-core:33260]
- * util.c (mmswap_, mmrot3_): portability improvement.
+Sat Nov 20 01:57:55 2010 Akio Tajima <artonx@yahoo.co.jp>
-Thu Oct 20 05:58:02 2011 Eric Hodel <drbrain@segment7.net>
+ * common.mk: add dependency(insns.inc) to compile.obj
- * ext/openssl/ossl_ns_spki.c (Init_ossl_ns_spki): Stub documentation
- for Netscape SPKI.
+Fri Nov 19 23:05:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Oct 20 05:13:39 2011 Ryan Davis <ryand-ruby@zenspider.com>
+ * win32/Makefile.sub (insns_rules.mk): remove extra backslash.
- * lib/minitest/*: Imported minitest 2.6.2 (r6712)
- * test/minitest/*: ditto
+ * cygwin/GNUmakefile.in, win32/Makefile.sub (clean): rc files are
+ made at compile time, so should be removed by clean.
-Thu Oct 20 06:55:32 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Fri Nov 19 22:09:46 2010 Kouhei Sutou <kou@cozmixng.org>
- * lib/openssl/buffering.rb: Force multi-byte strings to be treated as
- binary data.
- * test/openssl/test_ssl.rb: Add test for it.
-
- Thanks to Niklas Baumstark for reporting the issue!
-
- [Ruby 1.9 - Bug #5233] [ruby-core:39120]
-
-Wed Oct 19 17:06:54 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * test/rexml/test_core.rb
+ (Tester#test_pretty_format_long_text_finite): skip a test that
+ uses long string on small memory system. [ruby-dev:42599]
- * version.h (RUBY_VERSION): finally declare start of 2.0 work!
+Fri Nov 19 21:07:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Oct 19 11:48:44 2011 Eric Hodel <drbrain@segment7.net>
+ * lib/optparse.rb: shell completion support for zsh. based on
+ <http://d.hatena.ne.jp/rubikitch/20071002/zshcomplete>
- * error.c (Init_Exception): Document $! and $@. Provide
- recommendations for creating exceptions for a library.
+ * lib/optparse.rb: shell completion support for bash.
-Wed Oct 19 11:25:46 2011 Eric Hodel <drbrain@segment7.net>
+Fri Nov 19 00:00:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * error.c (Init_Exception): Add hierarchy of Exception subclasses.
- Based on patch by Sylvain Daubert. [Ruby 1.9 - Bug #5438]
+ * cygwin/GNUmakefile.in (SCRIPTPROGRAMS): no needs on cygwin.
-Wed Oct 19 11:04:47 2011 Eric Hodel <drbrain@segment7.net>
+ * win32/Makefile.sub (scriptbin): create script binaries.
- * enum.c: Reformat block args to a single standard, { |args| ... }.
- Patch by b t. [Ruby 1.9 - Bug #5393]
+Thu Nov 18 23:21:23 2010 Kouhei Sutou <kou@cozmixng.org>
-Wed Oct 19 12:11:26 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * lib/rexml/formatters/pretty.rb (REXML::Formatters::Pretty#wrap):
+ REXML::Formatters::Pretty#wrap used a recursive method call to
+ format text. This switches it to use an iterative approach.
+ [ruby-core:33245]
+ Patch by Jeremy Evans. Thanks!!!
- * ext/openssl/ossl_ssl.c: Remove set, but unused variables.
- ext/openssl/ossl_pkey.c: ditto
+ * test/rexml/test_core.rb: add a test for it.
- * ext/openssl/ossl_pkey_dh.c: Make functions passed to
- rb_thread_blocking_region return VALUE instead of void.
- ext/openssl/ossl_pkey_dsa.c: ditto
- ext/openssl/ossl_pkey_rsa.c: ditto
+Thu Nov 18 22:58:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Oct 18 23:28:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * include/ruby/io.h (rb_io_buffer_t): extract from rb_io_t.
- * hash.c (identhash): share with type_numhash.
+Thu Nov 18 07:37:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * st.c (st_hashtype_num): rename from type_numhash.
+ * Makefile.in (reconfig): force reconfigure with previous options.
-Tue Oct 18 23:07:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * common.mk (showconfig): show configure flags, like as
+ `config.status --config' generated by recent autoconf.
- * vm_core.h (ruby_current_thread): probeprofiler has been removed
- long ago.
+Thu Nov 18 07:16:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Oct 18 23:05:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * missing/langinfo.c (strncasecmp): get rid of redefinition.
- * ext/ripper/eventids2.c (ripper_init_eventids2): separate
- initializations of IDs and objects.
+Thu Nov 18 00:02:17 2010 James Edward Gray II <jeg2@ruby-lang.org>
- * ext/ripper/tools/generate.rb (generate_eventids1): ditto.
+ * lib/csv.rb: Upgrading output encoding with ASCII content
+ as needed. [ruby-core:33229]
- * parse.y (Init_ripper, InitVM_ripper): fix inversed roles.
+Wed Nov 17 23:19:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Oct 16 19:46:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * win32/configure.bat: remove quotes from arguments to be quoted.
- * ext/bigdecimal/bigdecimal.gemspec (files): fixed typo, and
- removed nonexistent file.
+ * lib/mkmf.rb (create_makefile): use forward slashes in messages.
- * ext/bigdecimal/bigdecimal.gemspec (homepage): added.
+ * lib/mkmf.rb (create_makefile): make extension libraries messages
+ brief.
- * ext/io/console/io-console.gemspec (homepage): ditto.
+ * win32/Makefile.sub (MAKEDIRS): should not include silent flag.
-Fri Oct 14 12:13:57 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * common.mk (ext/ripper/ripper.c, ext/json/parser/parser.c): pass
+ Q and ECHO. [ruby-core:33226]
- * ext/pty/pty.c (pty_check): should return nil until the child
- terminates or stops. [ruby-dev:44600] [Bug #2642]
+Wed Nov 17 16:09:52 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-Fri Oct 14 11:19:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/test_tracer.rb: new test case.
+ minimal regression test for r29280.
- * include/ruby/intern.h (rb_ary_rotate): export.
+Wed Nov 17 16:04:23 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-Fri Oct 14 05:58:05 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/envutil.rb (Test::Unit::Assersions#assert_warn):
+ new assertion to assert that a particular warning message is
+ displayed.
+ forward port from branches/ruby_1_9_2@29795.
- * atomic.h (ATOMIC_INC, ATOMIC_DEC): return old values.
- [ruby-dev:44596] [Bug #5439]
+Wed Nov 17 15:16:48 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * signal.c (ruby_atomic_exchange): no needs to define on the
- platforms where atomic.h is available.
+ * regint.h (OnigOpInfoType): constify name.
-Thu Oct 13 19:29:40 2011 Naohisa Goto <ngotogenome@gmail.com>
+ * regcomp.c (op2name): constify return value.
- * atomic.h (ATOMIC_*): use atomic_ops(3C) when SunStudio on Solaris.
- [ruby-dev:44596] [Bug #5439]
+ * regcomp.c (onig_print_compiled_byte_code): use PRIuPTR and
+ uintptr_t to clean warnings.
-Thu Oct 13 18:13:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * regcomp.c (print_indent_tree): use PRIxPTR and intptr_t.
- * atomic.h(ATOMIC_SET): add cast to void to prevent misuse.
- [ruby-dev:44596] [Bug #5439]
+ * regexec.c (match_at): use PRIdPTR and intptr_t.
-Thu Oct 13 18:04:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Nov 17 09:49:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * gc.c (rb_gc_finalize_deferred, rb_objspace_call_finalizer):
- should use ATOMIC_EXCHANGE() to check the previous value.
- [ruby-dev:44596] [Bug #5439]
+ * enc/shift_jis.c (property_name_to_ctype): fix memory leak.
-Wed Oct 12 23:39:58 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * enc/euc_jp.c (property_name_to_ctype): ditto.
- * test/openssl/test_ssl.rb: Move duplicated tests for SSL::Session to
- test_ssl_session.rb
+Wed Nov 17 08:54:04 2010 James Edward Gray II <jeg2@ruby-lang.org>
-Tue Oct 11 08:49:40 2011 Eric Hodel <drbrain@segment7.net>
+ * lib/csv.rb: Upgrading output encoding as needed. [ruby-core:33135]
- * array.c (rb_ary_initialize): Improve explanation of Array.new
- parameters. Patch by Alvaro Pereyra Rabanal. [Ruby 1.9 - Bug #5425]
- * array.c (rb_ary_s_try_convert): Fix typo (try => tries)
- * array.c (rb_ary_rindex): Add spacing for block.
- * array.c (rb_ary_uniq_bang): Describe block
- * array.c (rb_ary_uniq): ditto
+Tue Nov 16 22:30:39 2010 Yusuke Endoh <mame@tsg.ne.jp>
-Tue Oct 11 07:55:38 2011 Eric Hodel <drbrain@segment7.net>
-
- * array.c: Add a description to Array, minor cleanups. Patch by
- Andrea Singh. [Ruby 1.9 - Bug #5412]
-
-Tue Oct 11 06:09:52 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/pp.rb: Move PP documentation to top of class PP. Patch by
- Sylvain Daubert. [Ruby 1.9 - Bug #5430]
-
-Tue Oct 11 06:06:29 2011 Eric Hodel <drbrain@segment7.net>
+ * vm_insnhelper.c (vm_throw): remove fear of undefined behavior :-)
+ Coverity Scan found this bug.
- * ext/coverage/coverage.c (Init_coverage): Change list format and
- describe Coverage.result output. Patch by Sylvain Daubert.
- [Ruby 1.9 - Bug #5428]
+Tue Nov 16 09:33:00 2010 Kenta Murata <mrkn@mrkn.jp>
-Tue Oct 11 05:53:23 2011 Eric Hodel <drbrain@segment7.net>
+ * ext/bigdecimal/lib/bigdecimal/util.rb (to_digits): avoid unused
+ variables warning, reported by Aaron Patterson.
- * object.c (Init_Object): Add reference to BasicObject, brief
- explanation of constant lookup. Based on patch by Alvaro Pereyra
- Rabanal.
- [Ruby 1.9 - Bug #5426]
+Tue Nov 16 06:39:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Oct 9 11:06:52 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+ * pack.c (PACK_ITEM_ADJUST): return nil not result array and yield
+ values if block is given. [ruby-core:33193]
- * test/psych/test_yamldbm.rb: don't run test if the system
- don't support yaml/dbm.
+Tue Nov 16 00:21:20 2010 Yusuke Endoh <mame@tsg.ne.jp>
- * test/syck/test_yamldbm.rb: ditto.
+ * regparse.c (and_cclass, or_cclass): fix memory leak. Coverity Scan
+ found this bug. [ruby-dev:42579]
-Sat Oct 8 08:54:56 2011 Eric Hodel <drbrain@segment7.net>
+Tue Nov 16 00:07:32 2010 Yusuke Endoh <mame@tsg.ne.jp>
- * enum.c (group_by): Improve group_by description. Patch by b t.
- [#5411]
+ * gc.c (assign_heap_slot): fix fear of memory leak and memory
+ violation. Coverity Scan found this bug.
-Sat Oct 8 03:17:51 2011 Eric Hodel <drbrain@segment7.net>
+Mon Nov 15 23:54:45 2010 Yusuke Endoh <mame@tsg.ne.jp>
- * lib/shell.rb: Document some methods of Shell. Patch by Carol
- Nichols. [Ruby 1.9 - Bug #5417]
+ * eval_intern.h (CHECK_STACK_OVERFLOW): it was not intended to add
+ size_t to a pointer typed VALUE*. Coverity Scan found this defect.
-Fri Oct 7 17:54:28 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Nov 15 23:41:21 2010 Yusuke Endoh <mame@tsg.ne.jp>
- * lib/test/unit/assertions.rb (assert_send, assert_not_send):
- parenthesize non-empty arguments.
+ * compile.c (iseq_set_exception_local_table, iseq_set_local_table,
+ rb_iseq_build_from_ary): fix type inconsistency (which is benign
+ because sizeof(ID) == sizeof(ID*), though). Coverity Scan found
+ these bugs.
-Fri Oct 7 06:35:50 2011 Eric Hodel <drbrain@segment7.net>
+Mon Nov 15 22:47:27 2010 Yusuke Endoh <mame@tsg.ne.jp>
- * array.c: Use + for arguments described in documentation to allow
- rdoc -C2 to work better. Remove <code> from method references to
- allow cross-references in HTML documentation.
+ * vm_eval.c (rb_funcall): ensure va_end after va_init_list. Coverity
+ Scan found this bug.
-Thu Oct 6 18:46:23 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+Mon Nov 15 08:36:12 2010 Aaron Patterson <aaron@tenderlovemaking.com>
- * vm_eval.c (make_no_method_exception): fix typo.
+ * lib/racc/parser.rb (do_parse, yyparse): using class eval to define
+ method and avoid __send__.
- * vm_insnhelper.c, vm_insnhelper.h: ditto.
+Mon Nov 15 06:43:48 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-Thu Oct 6 16:29:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * etc/openssl/ossl_ssl.c (ossl_ssl_get_cert): raise exception if
+ pointer is invalid. Thanks Ippei Obayashi! [ruby-dev:42573]
- * vm_eval.c (make_no_method_execption): extract from
- raise_method_missing().
+Sun Nov 14 17:57:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm_eval.c (send_internal): remove inadvertent symbol creation
- from public_send. based on a patch by Jeremy Evans <code AT
- jeremyevans.net> in [ruby-core:38576]. [Feature #5112]
+ * enc/Makefile.in (distclean): should not remove sources which are
+ distributed in tarball.
- * vm_insnhelper.c (vm_call_method): remove inadvertent symbol
- creation from send and __send__, too.
+Sun Nov 14 16:48:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Oct 6 14:59:11 2011 Eric Hodel <drbrain@segment7.net>
+ * parse.y (parser_set_token_info): turn on/off with directives.
+ [ruby-core:25442]
- * lib/time.rb: Clean up Time documentation. Patch by Jake Goulding.
- [Ruby 1.9 - Bug #5416]
+Sun Nov 14 12:05:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Oct 6 10:00:54 2011 Eric Hodel <drbrain@segment7.net>
+ * io.c (argf_readlines): forward to current_file for arguments
+ check. http://twitter.com/nagachika/status/3634254856589312
- * enum.c (group_by): Improve documentation based on patch by b t.
+Sun Nov 14 08:48:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Oct 6 09:56:30 2011 Eric Hodel <drbrain@segment7.net>
+ * win32/setup.mak (-basic-vars-, -runtime-): suppress trailing
+ space and compiler command line.
- * enum.c: Clean up wording in Enumerable documentation. Patch by b t.
- [Ruby 1.9 - Bug #5411]
+Sun Nov 14 04:22:32 2010 Alexander Zavorine <alexandre.zavorine@nokia.com>
-Thu Oct 6 09:17:18 2011 Eric Hodel <drbrain@segment7.net>
+ * symbian/setup (config.h): Added HAVE_LABS and HAVE_LLABS to config.h.
- * time.c (Init_Time): Remove editorial comments from Time
- documentation, fix link.
+ * symbian/configure.bat: Changed packaging version in line with API
+ style 3 versioning.
-Thu Oct 6 09:14:20 2011 Eric Hodel <drbrain@segment7.net>
+Sat Nov 13 16:37:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * time.c (Init_Time): Improve Time documentation. Patch by Shane
- Emmons. [Ruby 1.9 - Bug #5404]
- * lib/time.rb: Improve time.rb documentation including Time.strptime.
- Patch by Shane Emmons. [Ruby 1.9 - Bug #5402]
+ * common.mk (showflags, help): emit messages at once.
-Thu Oct 6 08:54:05 2011 Eric Hodel <drbrain@segment7.net>
+ * win32/Makefile.sub (MSG, EOM): remove surrounding quotes by %~I.
- * random.c: Improve documentation of Random. Patch by Gregory
- Parkhurst. [Ruby 1.9 - Bug #5410]
+Sat Nov 13 01:31:30 2010 Akio Tajima <artonx@yahoo.co.jp>
-Thu Oct 6 01:44:51 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * win32/Makefile.sub: reorder variable End Of Message (don't display it)
- * cont.c (cont_mark): mark original Thread object from saved_thread.
- [ruby-dev:44571] [Bug #5386]
+Fri Nov 12 20:52:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Oct 5 16:33:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * common.mk (showflags, help): use caret to quote leading spaces on
+ Windows.
- * vm_insnhelper.c (vm_call_cfunc): remove useless hack.
+ * Makefile.in, common.mk, cygwin/GNUmakefile.in, enc/depend,
+ ext/ripper/depend, lib/mkmf.rb, win32/Makefile.sub: caddle up.
-Wed Oct 5 05:56:39 2011 Eric Hodel <drbrain@segment7.net>
+Fri Nov 12 16:35:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * hash.c (Init_Hash): Improve Hash documentation. Patch by Alvaro
- Pereyra Rabanal. [Ruby 1.9 - Bug #5405]
+ * configure.in: support C level backtrace information on FreeBSD.
+ When devel/libexecinfo is installed on FreeBSD, now ruby
+ can show C level backtrace information.
+ http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/libexecinfo/
-Wed Oct 5 05:47:59 2011 Eric Hodel <drbrain@segment7.net>
+Fri Nov 12 09:58:30 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * random.c (Init_Random): Add a top-level comment for Random. Patch
- by Brett Bim. [Ruby 1.9 - Bug #5403]
+ * win32/setup.mak: use findstr.exe instead of find.exe, because all
+ target build platforms should have findstr.exe, and, find.exe often
+ means another command such as cygwin's.
-Wed Oct 5 02:50:27 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Fri Nov 12 00:30:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/psych/lib/psych/syntax_error.rb: Add file, line, offset, and
- message attributes during parse failure.
- * ext/psych/parser.c: Update parser to raise exception with correct
- values.
- * test/psych/test_exception.rb: corresponding tests.
+ * win32/Makefile.sub (config.h): need PRI_LL_PREFIX.
-Wed Oct 5 01:52:16 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Thu Nov 11 23:38:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/psych/parser.c (parse): Use context_mark for indicating error
- line and column.
+ * configure.in: ANSI C-conforming const and volatile are mandatory
-Wed Oct 5 01:22:08 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * configure.in (AC_C_CONST, AC_C_INLINE, AC_C_VOLATILE): check
+ before used in other checks.
- * ext/psych/lib/psych/scalar_scanner.rb: use normal begin / rescue
- since postfix rescue cannot receive the exception class. Thanks
- nagachika!
+ * configure.in (RUBY_CHECK_PRINTF_PREFIX): should not break from
+ RUBY_WERROR_FLAG, so that ac_c_werror_flag gets restored.
-Tue Oct 4 21:10:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Nov 11 23:04:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * class.c (class_alloc): allocate extra memory after containing
- object setup to get rid of rare-but-potential memory leak.
+ * ext/iconv/iconv.c (warn_deprecated): show caller position.
- * gc.c (gc_mark_children): skip marking extended members if ptr is
- NULL.
+Thu Nov 11 23:03:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Oct 4 16:17:50 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * io.c (argf_close): untie tied io before closing.
- * lib/time.rb (Time.strptime): use Time.at if d[:seconds] is set.
- Reported by Christopher Eberz. [ruby-core:39903] Bug #5399
+ * io.c (argf_write): add ARGF.write and so on.
-Tue Oct 4 11:44:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * io.c (argf_read_nonblock): add ARGF.read_nonblock.
- * gc.c (rb_gc_set_params): ruby_verbose can be Qnil, so use RTEST.
+Thu Nov 11 21:49:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Oct 4 08:33:41 2011 Eric Hodel <drbrain@segment7.net>
+ * lib/rdoc/stats.rb (RDoc#print): get rid of NaN.
- * ext/etc/etc.c: Document Etc, Etc.sysconfdir, Etc.systmpdir. Patch
- by mathew murphy. [Ruby 1.9 - Bug #5396]
+Thu Nov 11 21:47:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Oct 4 08:21:51 2011 Eric Hodel <drbrain@segment7.net>
+ * common.mk (SHOWFLAGS): show compile flags.
- * lib/shellwords.rb: Update toplevel comment with an example. Patch
- by Samnang Chhun. [Ruby 1.9 - Bug #5388]
+ * common.mk: hide long command lines by default. verbose-mode is
+ turned on by V=1 as before.
+ http://jarp.does.notwork.org/diary/200605b.html#200605121
-Tue Oct 4 08:15:50 2011 Eric Hodel <drbrain@segment7.net>
+Thu Nov 11 21:32:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * proc.c (proc_call): Update documentation to match argument handling
- of proc/Proc.new/lambda/->()
+ * lib/mkmf.rb (try_func): accept variable address.
-Tue Oct 4 07:59:16 2011 Eric Hodel <drbrain@segment7.net>
+ * ext/win32ole/extconf.rb: libuuid is needed on cygwin.
- * proc.c (proc_call): Fix documentation of Proc#call vs Proc#===.
- [Ruby 1.9 - Bug #5349]
+Thu Nov 11 21:24:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Oct 4 07:43:18 2011 Eric Hodel <drbrain@segment7.net>
+ * file.c (file_expand_path): use cygwin_conv_path on cygwin 1.7 or
+ later.
- * array.c (rb_ary_initialize): Make Array.new description match
- call-seq. Patch by Henry Maddocks. [Ruby 1.9 - Bug #5344]
+ * ruby.c (push_include_cygwin): ditto.
-Tue Oct 4 07:35:23 2011 Eric Hodel <drbrain@segment7.net>
+Thu Nov 11 20:49:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * array.c (rb_ary_initialize): Add output for examples. Patch by
- Jonathan Mukai. [Ruby 1.9 - Bug #5216]
+ * include/ruby/ruby.h (PRI_LL_PREFIX): format type specifier for
+ LONG_LONG may vary on platforms.
-Tue Oct 4 07:30:50 2011 Eric Hodel <drbrain@segment7.net>
+Thu Nov 11 20:45:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * array.c (rb_ary_s_create): Add example results for Array::[]. Patch
- by Jonathan Mukai. [Ruby 1.9 - Bug #5215]
+ * configure.in (SYMBOL_PREFIX): separate from EXPORT_PREFIX.
-Tue Oct 4 07:15:17 2011 Eric Hodel <drbrain@segment7.net>
+ * win32/mkexports.rb (Exports#each_export): use SYMBOL_PREFIX.
- * lib/rubygems: Update to RubyGems 1.8.11. Move Deprecate into the
- Gem namespace.
+Wed Nov 10 07:20:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Oct 4 06:43:47 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * cygwin/GNUmakefile.in (scriptbin): make executable file from
+ scripts with stub.
- * ext/psych/lib/psych.rb: update psych version.
- * ext/psych/psych.gemspec: generate new gemspec for new version.
+ * ruby.c (load_file_internal): assume xflag for exe file as well
+ as no-shebang file.
-Tue Oct 4 06:29:55 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * tool/rbinstall.rb: install script programs.
- * ext/psych/lib/psych.rb: calling `yaml` rather than `to_yaml`.
- * ext/psych/lib/psych/nodes/node.rb: Rename `to_yaml` to just `yaml`
- in order to avoid YAML::ENGINE switching from replacing this method.
- * test/psych/helper.rb: fix tests for method name change.
- * test/psych/test_document.rb: ditto
- * test/psych/visitors/test_emitter.rb: ditto
+ * win32/mkexports.rb (Exports#initialize): alias ruby_sysinit for
+ stub.
-Tue Oct 4 06:20:19 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * win32/stub.c: stub for scripts. [EXPERIMENTAL]
- * ext/psych/lib/psych/scalar_scanner.rb: Match values against the
- floating point spec defined in YAML to avoid erroneous parses.
- * test/psych/test_numeric.rb: corresponding test.
+Tue Nov 9 21:57:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Oct 4 05:59:24 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * dln.c (init_funcname): allocate and build initialization
+ funciton name at once.
- * ext/psych/lib/psych/visitors/to_ruby.rb: ToRuby visitor can be
- constructed with a ScalarScanner.
- * ext/psych/lib/psych/visitors/yaml_tree.rb: ScalarScanner can be
- passed to the YAMLTree visitor.
+Tue Nov 9 21:14:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Oct 4 05:47:23 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * configure.in (AC_FUNC_GETPGRP, AC_FUNC_SETPGRP): no need when
+ not used.
- * ext/psych/lib/psych/visitors/to_ruby.rb: Define Regexp::NOENCODING
- for 1.9.2 backwards compatibility.
- * ext/psych/lib/psych/visitors/yaml_tree.rb: Fix Date string
- generation for 1.9.2 backwards compatibility.
+ * configure.in (EXPORT_PREFIX): check generic prefix.
-Mon Oct 3 23:56:39 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Tue Nov 9 13:24:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * gc.c (rb_gc_set_params): output GC parameter change messages only
- if -w/-v options are specified. these messages are output to stderr,
- not to stdout. [ruby-core:39795] [Bug #5380]
+ * regenc.c (onigenc_minimum_property_name_to_ctype):
+ \p{...} should be case insensitive. [ruby-core:33000]
- * test/ruby/test_gc.rb (test_gc_parameter): add test for it.
+ * regenc.c (onigenc_property_list_add_property):
+ ditto.
-Sun Oct 2 20:05:32 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+ * enc/euc_jp.c (init_property_list, property_name_to_ctype):
+ to lowercase property names.
- * vm.c (rb_thread_mark), cont.c (cont_mark): revert r33369 and r33371
- that may cause SEGV in certain environments.
+ * enc/shift_jis.c (init_property_list, property_name_to_ctype):
+ ditto.
-Sun Oct 2 12:14:06 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Tue Nov 9 13:29:36 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * test/psych/test_yamldbm.rb: add test case.
- * test/syck/test_yamldbm.rb: ditto.
+ * win32/win32.c (overlapped_socket_io): get rid of a warning of 64bit
+ mingw.
-Sun Oct 2 11:28:09 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Tue Nov 9 10:44:19 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/yaml/store.rb: make initialize method signature match the
- superclass signature.
+ * util.c (ruby_strtod): this code uses FPU's rounding system.
+ But x86's FPU calculates double precision floating-point
+ numbers in 80bit precision, so it fails to round the value.
+ So ensure the value is assigned a variable. [ruby-dev:42551]
+ see also [ruby-math:00802]
+ http://www.shudo.net/java-grandprix99/strictfp/
-Sun Oct 2 10:44:01 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+Tue Nov 9 07:30:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c: fix documentation of ARGF.lineno=.
+ * error.c (rb_syserr_new): new function to make SystemCallError
+ instance without errno. [EXPERIMENTAL]
-Sat Oct 1 20:03:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * error.c (rb_syserr_fail, rb_mod_syserr_fail): ditto.
- * lib/mkmf.rb (have_framework): try as Objective-C.
- https://twitter.com/nagachika/status/120294447660539904
+Tue Nov 9 05:54:57 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-Sun Oct 2 08:43:25 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+ * lib/*.rb: Remove unused variable warnings.
+ Patch by Run Paint [ruby-core:30991]
- * vm.c (rb_thread_mark), cont.c (cont_mark): self pointer should not
- be marked by itself. Patch by Koichi Sasada.
- [ruby-dev:44567] [Bug #5386]
+ * lib/rubygems/*, lib/rdoc/*.rb, lib/rake/*.rb: ditto
-Sun Oct 2 00:42:14 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+Mon Nov 8 18:26:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * vm.c (rb_thread_mark): rb_thread_t needs self to be marked.
- [ruby-dev:44566] [Bug #5386]
+ * util.c (ruby_hdtoa): fix type cast and bufsize.
-Sat Oct 1 09:48:53 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Mon Nov 8 15:40:56 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * gc.c (add_heap_slots, init_heap): reset heaps_inc zero when
- heap slots are expanded by environment variable RUBY_HEAP_MIN_SLOTS.
- [ruby-core:39777] [Bug #5380]
+ * vsnprintf.c (BSD_vfprintf): fix precision specifier doesn't
+ work well on %f. [ruby-dev:42552]
- * test/ruby/test_gc.rb (test_gc_parameter): add test for it.
+Mon Nov 8 14:41:40 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * test/ruby/envutil.rb (assert_normal_exit): add :child_env option to
- enable pass environment variables to child process.
+ * win32/win32.c (get_wsa_extension_function): typos.
-Thu Sep 29 13:17:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Nov 8 13:41:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * array.c (ary_join_1): should not copy the encoding of non-string
- element after string element. [ruby-core:39776] [Bug #5379]
+ * tool/enc-unicode.rb,
+ enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ Add Age property to regexp. [ruby-core:33019]
+ patched by Ammar Ali, tested by Run Paint Run Run
-Thu Sep 29 11:53:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Nov 8 12:16:39 2010 Ben Walton <bwalton@artsci.utoronto.ca>
- * gc.c (slot_sweep, rb_gc_finalize_deferred)
- (rb_objspace_call_finalizer, rb_gc): run finalizers
- sequentially. [ruby-dev:44562]
+ * configure.in: support -h for solaris linker when gcc not used
-Thu Sep 29 20:37:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Nov 8 11:47:39 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/gdbm/gdbm.c (rb_gdbm_fatal): adjust argument type.
+ * win32/win32.c (finish_overlapped_socket): refactoring.
-Thu Sep 29 20:10:42 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Nov 8 11:02:21 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * gc.c (is_id_value, is_live_object): extract from id2ref().
+ * win32/win32.c (get_proc_address): refactoring.
- * gc.c (run_finalizer): use object instead of object id.
+ * win32/win32.c (get_wsa_exetinsion_function): refactoring.
-Thu Sep 29 20:07:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Nov 8 09:45:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * use RB_TYPE_P which is optimized for constant types, instead of
- comparison with TYPE.
+ * enc/trans/gbk-tbl.rb: Add euro sign. [ruby-core:33094]
+ CP936, which is de facto definition of GBK, has it.
+ http://msdn.microsoft.com/en-us/goglobal/cc305153.aspx
-Wed Sep 28 09:20:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Nov 8 07:26:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * configure.in (pthread_np.h): needs pthread.h to be included
- previously on OpenBSD. a patch by George Koehler <xkernigh AT
- netscape.net> at [ruby-core:39752]. [Bug #5376]
+ * configure.in: check only the first symbol to get rid of
+ duplication. [ruby-core:33084] #4031
-Wed Sep 28 04:41:35 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Sun Nov 7 10:13:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/psych/test_yamlstore.rb: use tmpdir for tmpfile.
- * test/syck/test_yamlstore.rb: ditto.
+ * configure.in (NM): check on all platforms. #4031
-Wed Sep 28 04:10:46 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Sun Nov 7 06:16:33 2010 Aaron Patterson <aaron@tenderlovemaking.com>
- * ext/bigdecimal/README: update report to.
+ * test/openssl/test_ocsp.rb: adding test for r29699. Thanks Elise
+ Huard! [ruby-core:32460]
-Tue Sep 28 04:05:00 2011 Kenta Murata <mrkn@mrkn.jp>
+Sat Nov 6 07:33:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/bigdecimal/bigdecimal_en.html: removed because this file isn't
- maintained now.
+ * configure.in (rb_cv_export_prefix): check for prefixed
+ underscore of exported symbols
- * ext/bigdecimal/bigdecimal_ja.html: ditto.
+ * tool/rbinstall.rb (bin-comm): prepend prolog shell script if
+ necessary.
-Tue Sep 27 09:55:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * configure.in (LIBRUBY_RELATIVE): use rpath token expansion.
- * thread_pthread.c: make native_fd_select().
- * thread.c (do_select): remove #ifdef _WIN32. Instead, use
- native_fd_select() always.
+Sat Nov 6 07:24:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Sep 27 09:44:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * template/ruby.pc.in (arch, sitearch): reordered.
- * thread.c (do_select): remove cygwin specific hack. It's layer
- violation and too large hack.
- * thread.c (cmp_tv, subtract_tv): removed.
+ * configure.in: keep failed file.
-Tue Sep 27 03:50:19 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Sat Nov 6 07:03:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/rexml/test_sax.rb: add require 'rexml/document'.
+ * process.c (rb_fork_err): save errinfo before fdopen.
-Tue Sep 27 03:32:27 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Sat Nov 6 00:43:58 2010 Aaron Patterson <aaron@tenderlovemaking.com>
- * test/psych/test_yamldbm.rb: fix #setup and #teardown.
- [Bug #5370] [ruby-core:39730]
- * test/syck/test_yamldbm.rb: ditto.
+ * ext/openssl/ossl_ocsp.c (ossl_ocspcid_initialize): an optional
+ parameter may be used to specify the OpenSSL::OCSP::CertificateId on
+ initialization. Thanks Elise Huard! [ruby-core:32460]
-Mon Sep 26 11:27:38 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Fri Nov 5 12:23:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/webrick/httputils.rb: Add MIME Type definition of .js and .svg.
- patched by Hal Brodigan. [ruby-core:39704] [Bug #5365]
+ * test/ruby/test_{process,system}.rb (test_fallback_to_sh):
+ meaningless and wrong tests where /bin/sh does not exist.
-Mon Sep 26 09:20:44 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * process.c (proc_spawn_v): should spawn, not exec.
- * configure.in: remove DJGPP support. It's not longer supported
- since ruby 1.9.0.
+Fri Nov 5 01:21:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Sep 26 09:07:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * process.c (proc_exec_v, proc_spawn_v): try to execute with sh if
+ no shebang. [ruby-core:32745] [EXPERIMENTAL]
- * include/ruby/defines.h: remove NextStep, OpenStep, Rhapsody
- support. Last activity of their OSes are 7 years ago.
- * configure.in: ditto.
- * dir.c: ditto.
- * ext/tk/extconf.rb: ditto.
+Fri Nov 5 00:39:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Sep 26 09:02:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * io.c (rb_io_readlines, rb_io_each_line): limit must not be zero.
+ a patch from Tomoyuki Chikanaga at [ruby-dev:42538]. #4024
- * configure.in: remove a code for human68k. it's no longer
- supported since r19677.
+Fri Nov 5 00:14:15 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-Sun Sep 25 23:43:32 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * ext/fiddle/extconf.rb: fixing ffi library location on windows.
+ Thanks Usa! [ruby-core:32930]
- * ext/openssl/ossl_asn1.c: fix int_ossl_asn1_decode0_cons when being
- fed arbitrary string values.
- Clearly distinguish between the cases "universal, infinite and
- not a SEQUENCE or SET" and "universal SEQUENCE or SET, possibly
- infinite". Raise error for universal tags that are not infinite.
- * test/openssl/test_asn1.rb: add a test for this.
+Thu Nov 4 20:04:44 2010 Koichi Sasada <ko1@atdot.net>
- Thanks to Hiroshi Yoshida for reporting this bug.
- [Bug #5363] [ruby-dev:44542]
+ * gc.c (rb_newobj): force garbage_collect() if GC.stress == true.
-Sun Sep 25 20:57:18 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Thu Nov 4 19:48:22 2010 Koichi Sasada <ko1@atdot.net>
- * test/syck/test/yamldbm.rb: add test for Syck::DBM.
- * test/psych/test_yamldbm.rb: add test for Psych::DBM.
- * test/psych/test_yamlstore.rb: add test for Psych::PStore.
+ * ChangeLog: missed to write a last ChangeLog.
-Sun Sep 25 20:54:10 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * gc.c (gc_finalize_deferred): removed.
- * lib/yaml/dbm/dbm.rb: fix #update, add #key for using instead #index.
- [Bug #5305][ruby-dev:44485]
+ * gc.c (rb_gc_finalize_deferred): Do not invoke a free_unused_heaps().
-Sun Sep 25 16:54:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Nov 4 19:45:27 2010 Koichi Sasada <ko1@atdot.net>
- * encoding.c (require_enc): reject only loading from untrusted
- load paths. [ruby-dev:44541] [Bug #5279]
+ * gc.c (run_final): do not need argument obj.
- * transcode.c (load_transcoder_entry): ditto.
+Thu Nov 4 19:26:10 2010 Koichi Sasada <ko1@atdot.net>
-Sun Sep 25 16:45:05 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (before_gc_sweep): fix commit miss.
- * configure.in: ignore all warnings from an arbitrary
- header in /usr/local/include.
+Thu Nov 4 19:20:46 2010 Koichi Sasada <ko1@atdot.net>
-Sun Sep 25 03:43:03 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * gc.c (after_gc_sweep, before_gc_sweep):
+ invoke rb_sweep_method_entry() as soon as possible.
- * enum.c (slice_before_i): use rb_attr_get to suppress wrong warning
- for internal instance variable slicebefore_initial_state.
+Thu Nov 4 19:13:58 2010 Koichi Sasada <ko1@atdot.net>
-Fri Sep 23 14:20:14 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * gc.c (after_gc_sweep, slot_sweep): finalizers should be invoked
+ as soon as possible.
- * ext/openssl/ossl_asn1.c: remove unused variable.
+Thu Nov 4 10:30:40 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-Fri Sep 23 13:46:59 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * configure.in (--with-valgrind): Now this option is default on.
+ You can still explicitly disable this feature by specifying
+ --without-valgrind.
- * test/openssl/test_ssl_session.rb: execute test_session_exts_read
- only for OpenSSL versions >= 0.9.8k. Thanks, Eric Wong, for
- reporting this.
- [Bug #4961] [ruby-core:37726]
+Thu Nov 4 02:06:16 2010 Yusuke Endoh <mame@tsg.ne.jp>
-Fri Sep 23 11:59:08 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * cont.c (fiber_t_alloc): raise an error when fiber is going to be
+ initialized twice. [ruby-dev:42524]
- * test/openssl/test_ssl_session.rb: ensure server calls callbacks in
- test_ctx_server_session_cb. Thanks to Eric Wong for the patch.
- [Bug #5336] [ruby-core:39619]
+Thu Nov 4 02:04:25 2010 Yusuke Endoh <mame@tsg.ne.jp>
-Thu Sep 22 02:53:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * cont.c (rb_fiber_resume): raise an "double resume" error when root
+ fiber is going to be resumed. [ruby-dev:42523]
- * vm_insnhelper.c (vm_call_cfunc): suppress a warning. note that
- `volatile type *var' doesn't make var itself volatile.
+Wed Nov 3 14:17:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Sep 22 01:52:48 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * lib/ostruct.rb (OpenStruct#delete_field): also undefine
+ accessor methods. [ruby-core:33010]
- * thread_pthread.c (ubf_select): activate timer thread when interrupt
- blocking thread.
- A patch created by Koichi Sasada. [ruby-core:39634] [Bug #5343]
- to cover race condition, timer thread periodically send SIGVTARLM to
- threads in signal thread list. so you should activate timer thread
- when interrupt a thread.
+Wed Nov 3 14:13:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Sep 21 16:55:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * string.c (rb_enc_cr_str_buf_cat): concatenation of valid
+ encoding string and invalid encoding string should result
+ invalid encoding. [ruby-core:33027]
- * test/io/wait/test_io_wait.rb (TestIOWait#setup): of course, the
- behavior of mingw is just same with mswin.
+Wed Nov 3 08:58:59 2010 Koichi Sasada <ko1@atdot.net>
-Tue Sep 20 18:08:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c, vm.c, vm_core.h: remove USE_VALUE_CACHE option.
- * vm_insnhelper.c (vm_get_cvar_base): reduce duplicated checks and
- move a warning outside the loop.
+Wed Nov 3 07:47:25 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
-Mon Sep 19 18:55:51 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * lib/irb/ruby-lex.rb (RubyLex#identify_string): parse multiple
+ regex options. a patch from Heesob Park in [ruby-core:32988].
- * lib/fileutils.rb (module FileUtils): improve performance of
- FileUtils.compare_stream. a patch by Masaki Matsushita.
- [Feature #5337] [ruby-core:39622]
+Wed Nov 3 07:33:57 2010 Tanaka Akira <akr@fsij.org>
-Mon Sep 19 18:42:58 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * vm_method.c (rb_clear_cache_by_class): just return if the class has
+ no method. reported by Eric Wong. [ruby-core:32689]
- * test/-ext-/old_thread_select/test_old_thread_select.rb:
- select() with timeout may return early in old Linux kernels
- with 250 Hz tickrate and no dynticks, so skip everything older
- than 2.6.32 (which has long term support).
- And, Make the timing assertions consistently use assert_operator with
- timing difference in error message
- Patch by Eric Wong. [Bug #5335] [ruby-core:39618]
+Tue Nov 2 22:50:25 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-Mon Sep 19 09:28:06 2011 Eric Hodel <drbrain@segment7.net>
+ * ext/psych/lib/psych/visitors/visitor.rb (initialize): push accessor
+ methods to subclass that actually uses them.
- * test/openssl/test_ssl.rb (class OpenSSL): Test
- OpenSSL::SSL::SSLSocket#session and #session=.
+Tue Nov 2 22:47:08 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-Mon Sep 19 07:54:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/psych/lib/psych/visitors/visitor.rb (accept): switch to
+ a dispatch cache rather than case / when statement.
- * object.c (rb_obj_clone): singleton class should be attached
- singleton object to. a patch by Satoshi Shiba <shiba AT rvm.jp>
- at [ruby-dev:44460]. [Bug #5274]
+Tue Nov 2 21:46:52 2010 Kouhei Sutou <kou@cozmixng.org>
-Sat Sep 17 23:34:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * NEWS: fix a typo.
- * parse.y (parser_data_type): inherit the core type in ripper so
- that checks in core would work. [ruby-core:39591] [Bug #5331]
+Tue Nov 2 20:10:32 2010 Tajima Akio <artonx@yahoo.co.jp>
-Sat Sep 17 12:44:04 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+ * test/rake/test_tasks.rb: clear env var which is used by the test.
+ [ruby-dev:42508]
- * lib/find.rb (Find.find): add documentation that Find.find
- without block returns an enumerator.
+Tue Nov 2 00:25:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Thu Sep 15 11:39:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/socket/extconf.rb: win64 is just same with win32 about socket.
+ notice: but wince is not same.
- * gc.c (mark_entry, mark_key, mark_keyvalue): adjust callback
- argument types.
+Mon Nov 1 21:25:57 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-Thu Sep 15 01:44:10 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * main.c: <stdlib.h> is needed, to introduce the getenv(3)
+ prototype declaration. Without it a C compiler shall infer
+ the getenv type as "int getenv(...);", but this is totally
+ wrong, especially when your machine's sizeof(int) and
+ sizeof(char*) differs. On such environment a return value
+ of getenv(3), which is in fact a char*, might first casted
+ into a int (loses data here), and then casted back to char*
+ by automatic integral promotion to fit to the prototype of
+ ruby_set_debug_option().
- * ext/tk/*: Change encoding from EUC-JP to UTF-8
+Sun Oct 31 23:27:09 2010 Koichi Sasada <ko1@atdot.net>
-Wed Sep 14 11:43:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c (finalizer_table, objspace->final.table):
+ Create finalizer_table at Init_heap().
+ Remove all null checks of finalizer_table.
- * thread.c (rb_fd_rcopy): added an argument guard.
- Patch by NAKAMURA Usaku. [Bug #5306] [ruby-core:39435]
+ * gc.c (mark_tbl): skip if no table entries.
-Tue Sep 13 20:21:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * gc.c (slot_swee): remove useless need_call_final check.
- * lib/pstore.rb, test/test_pstore.rb: suppress warnings with -v.
+Sun Oct 31 22:32:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/pstore.rb (PStore): always open in binary mode even if
- default encodings are set. [Bug #5311] [ruby-core:39503]
+ * gc.c (rb_objspace_free): finalizers should be called separately
+ from freeing objspace. [ruby-dev:42479]
-Tue Sep 13 05:37:15 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+Sun Oct 31 22:24:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * io.c (Init_IO): update BINARY comment. it should not change the
- encoding of the result to ASCII-8BIT. [ruby-talk:387719]
+ * eval.c (ruby_cleanup): free current VM and its objspace even
+ when exiting by SystemExit.
-Mon Sep 12 19:55:00 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Sun Oct 31 22:10:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * thread.c (rb_thread_select): fix to ignore an argument
- modification of rb_thread_fd_select().
- based on a patch by Eric Wong. [Bug #5306] [ruby-core:39435]
- * thread.c (rb_fd_rcopy): New. for reverse fd copy.
+ * compile.c (new_child_iseq): adjust argument types.
- * test/-ext-/old_thread_select/test_old_thread_select.rb
- (test_old_select_false_positive): test for bug5306.
+ * iseq.c (prepare_iseq_build, rb_iseq_new),
+ (rb_iseq_new_with_bopt_and_opt, rb_iseq_new_with_opt),
+ (rb_iseq_new_with_bopt): ditto.
- * ext/-test-/old_thread_select/old_thread_select.c (fdset2array):
- New. convert fdsets to array.
- * ext/-test-/old_thread_select/old_thread_select.c (old_thread_select):
- return 'read', 'write', 'except' argument of rb_thread_select()
- to ruby script.
+ * compile.c (iseq_set_exception_table): suppress warnings.
-Mon Sep 12 13:38:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * insns.def (putspecialobject, defined): ditto.
- * README.EXT, README.EXT.ja (2.2.2), parse.y (rb_check_id): add
- documents for rb_check_id().
+ * iseq.c (iseq_load): ditto.
-Mon Sep 12 12:53:39 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Oct 31 09:30:51 2010 Koichi Sasada <ko1@atdot.net>
- * lib/rake/file_list.rb (Rake::FileList#egrep): there is no need to
- open files in binary mode.
- see more details in https://github.com/jimweirich/rake/issues/74
+ * vm_core.h: some refactoring.
+ - move decl. of rb_compile_option_struct to iseq.h.
+ - define enum iseq_type.
+ - define enum vm_special_object_type.
-Mon Sep 12 12:42:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * compile.c: some refactoring.
+ - apply above changes.
+ - (struct iseq_link_element): change value of type.
+ - remove unused decl.
+ - fix comment.
+ - rename iseq_build_body and iseq_build_exception to
+ iseq_build_from_ary_body and iseq_build_from_ary_exception.
- * test/ruby/test_exception.rb (TestException#test_exit_success_p):
- assert also the cases when exiting with true and false.
+ * iseq.h: define enum catch_type and enum defined_type.
- * lib/test/unit/assertions.rb (assert_send): make arguments in
- the default message clearer.
+ * insns.def: apply above changes.
-Sun Sep 11 05:23:14 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * iseq.c: define ISEQ_MAJOR_VERSION and ISEQ_MINOR_VERSION.
- * lib/matrix.rb: Deal with subclasses of Matrix [redmine #5307]
+Sat Oct 30 23:38:59 2010 Kouhei Sutou <kou@cozmixng.org>
-Sat Sep 10 13:38:20 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * lib/rexml/encoding.rb: untabify.
- * dir.c (dir_s_aref):
- * dir.c (dir_entries): Two small documentation fixes.
- A patch from Aaron Lerch. [Bug #5302] [ruby-core:39404]
+Sat Oct 30 21:06:37 2010 Kouhei Sutou <kou@cozmixng.org>
-Sat Sep 10 08:30:03 2011 Koichi Sasada <ko1@atdot.net>
+ * lib/rexml/encoding.rb: use Ruby native encoding mechanism.
+ [ruby-dev:42464]
+ * lib/rexml/encodings/: remove.
- * gc.c (GC_PROFILE_MORE_DETAIL, CALC_EXACT_MALLOC_SIZE):
- define macros only if they are not defined.
- fixes: [Ruby 1.9 - Feature #5291]
+ * lib/rexml/document.rb, lib/rexml/formatters/default.rb,
+ lib/rexml/output.rb, lib/rexml/parseexception.rb,
+ lib/rexml/parsers/baseparser.rb, lib/rexml/source.rb,
+ lib/rexml/xmldecl.rb: use Ruby's native Encoding object.
-Sat Sep 10 08:25:47 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+ * test/rexml/, test/rss/: follow the above encoding changes.
- * parse.y (bv_decls): parse.y relies on $$ = $1 before action
- routines. a patch from Michael Edgar. [Bug #5303]
- [ruby-core:39429]
+ * NEWS: add REXML's incompatible change about encoding.
-Sat Sep 10 01:37:55 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+Sat Oct 30 17:23:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * sample/drb/dhasenc.rb: coding cookie of Emacs is coding,
- not encoding.
+ * util.c (ruby_strtod): get rid of overflow/underflow as possible.
- * sample/mine.rb: ditto.
+Sat Oct 30 14:37:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Sep 9 21:56:40 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * configure.in (ruby_pc): erase runtime-defined variables and
+ check if generated pc file is valid.
- * ext/bigdecimal/bigdecimal.c (BigDecimal_sqrt): Fix comment.
- BigDecimal#sqrt requires argument. Reported by Makoto Kishimoto.
- Thanks for your contribution. [Bug #5267] [ruby-dev:44452]
+ * template/ruby.pc.in (DEFFILE): need for mingw.
-Fri Sep 9 11:00:55 2011 Shota Fukumori <sorah@tubusu.net>
+ * template/ruby.pc.in (LIBRUBY): fix the order.
- * test/rubygems/test_gem_commands_help_command.rb: Add one
- `require` because if run test-all with test/unit parallel
- running, sometimes this test fails by some constants not found.
- The error reason is some worker doesn't require the file needed by
- this test. This issue is related to [ruby-core:36168].
+Sat Oct 30 11:33:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Sep 9 10:22:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * win32/Makefile.sub (ruby_pc): ignore missing variables.
- * thread.c (rb_thread_select): fix a typo to initialize efds
- properly. [Bug #5299] [ruby-core:39380]
+ * template/ruby.pc.in: add missing variables for mswin.
-Fri Sep 9 02:02:09 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Sat Oct 30 10:24:35 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
- * template/yarvarch.ja:
- Change encoding from Shift_JIS to UTF-8
+ * object.c: Make BasicObject.new accept no parameter.
+ Revert of r26135 [ruby-core:27080], as per [ruby-core:32952].
-Thu Sep 9 01:14:00 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Sat Oct 30 09:40:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * sample/drb/README.rd.ja:
- * sample/drb/dhasenc.rb:
- * sample/mine.rb:
- Change encoding from EUC-JP to UTF-8
+ * enum.c: use constants in id.h.
-Thu Sep 8 21:03:22 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Oct 30 09:08:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/nkf/nkf-utf8/nkf.c: import nkf 2.1.2 (be9c280)
- Bump version number/release date only.
+ * ext/fiddle/closure.c (fiddle_closure): embed cif not reference
+ so that the content surely get initialized. [ruby-dev:42480]
-Thu Sep 8 12:43:18 2011 Narihiro Nakamura <authornari@gmail.com>
+Sat Oct 30 07:01:53 2010 Tanaka Akira <akr@fsij.org>
- * gc.c (Init_GC): defined GC::Profiler.raw_data. based on the
- patch by Eric Hodel. [ruby-core:37857] [Bug #4991]
+ * lib/resolv-replace.rb: suppress warning.
-Thu Sep 8 09:02:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/open-uri.rb: ditto.
- * gc.c (id2ref): objects which are unmarked but not in sweep_slots
- are not dead.
+Sat Oct 30 06:32:52 2010 Tanaka Akira <akr@fsij.org>
-Thu Sep 8 07:44:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/pathname/test_pathname.rb (TestPathname#test_grpowned?): the
+ group of the created file is inherited from the parent
+ directory on BSDs and MacOS X. Linux also inherit the group if
+ the setgid bit of the directory is set. It causes the test fail.
+ fixed by Shota Fukumori. [ruby-dev:42458]
- * transcode.c (rb_declare_transcoder, load_transcoder_entry): no
- longer need to limit the length of transcoder library name.
+Sat Oct 30 05:58:54 2010 Tanaka Akira <akr@fsij.org>
-Thu Sep 8 07:36:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/resolv.rb: retry via TCP if UDP reply is truncated.
+ fixed by Julian Mehnle. [ruby-core:32407]
- * ext/syck/lib/syck/types.rb: use toplevel Syck.
- for the case someone define Syck::Syck (or YAML::Syck).
+Sat Oct 30 00:35:13 2010 Koichi Sasada <ko1@atdot.net>
-Thu Sep 8 07:33:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * iseq.c (iseq_s_compile): fix optional argument.
+ a patch from Yutaka HARA [ruby-core:32953] [Ruby 1.9-Bug#4001]
- * gc.c (id2ref): unmarked object is already dead while lazy
- sweeping, and to it cannot come back since other objects
- referred from it might have been freed already.
+Sat Oct 30 00:24:42 2010 Koichi Sasada <ko1@atdot.net>
-Wed Sep 8 03:48:00 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * ext/objspace/objspace.c (memsize_of): take care of
+ T_CLASS/const_tbl.
+ a patch from nagachika <nagachika00@gmail.com> [ruby-dev:42490]
- * ext/readline/README.ja:
- Change encoding from EUC-JP to UTF-8
+Fri Oct 29 23:32:36 2010 Koichi Sasada <ko1@atdot.net>
-Wed Sep 8 02:59:00 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * test/profile_test_all.rb: added.
+ You can use test-all profiler with the following command:
+ RUBY_TEST_ALL_PROFILE=true make test-all
+ This command generates ./test_all_profile and you can analyze
+ which tests consume memories.
- * test/rexml/test_encoding.rb:
- Add require 'require 'rexml/document'
+ * test/runner.rb: ditto.
-Wed Sep 8 02:53:00 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Fri Oct 29 10:02:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/nkf/nkf-utf8/nkf.c:
- Change encoding from ISO-2022 to UTF-8
+ * tool/enc-unicode.rb,
+ enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ Add 'Unknown' Script.
+ patched by Run Paint Run Run. [ruby-core:32937] #3998
-Wed Sep 7 23:41:24 2011 Kouhei Sutou <kou@cozmixng.org>
+Fri Oct 29 05:13:34 2010 Koichi Sasada <ko1@atdot.net>
- * lib/rexml/parsers/baseparser.rb, test/rexml/test_comment.rb:
- allow a single hyphen in comment. [Bug #5278] [ruby-core:39289]
- Reported by Thomas Fritzsche. Thanks!!!
+ * ext/objspace/objspace.c (ObjectSpace.memsize_of_all): rename
+ ObjectSpace.total_memsize_of_all_objects() to
+ ObjectSpace.memsize_of_all([klass]).
+ Accept Class object to filter the objects.
-Wed Sep 7 17:27:18 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/objspace/test_objspace.rb: fix test for above change.
- * lib/yaml.rb: explicitly specify ::Object to avoid the collision with
- Syck::Object.
+Fri Oct 29 03:04:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Sep 6 21:06:49 2011 Shota Fukumori <sorah@tubusu.net>
+ * string.c (rb_str_dump): fix expected length. [ruby-core:32935]
- * lib/test/unit.rb (_run_suites): Now reports are written the
- following order: Skip, Failure, Error. [Feature #5282]
+Thu Oct 28 23:31:39 2010 Koichi Sasada <ko1@atdot.net>
- * test_sorting.rb: test for above.
+ * gc.c (before_gc_sweep, run_final): fix decrement timing of final_num.
- * test4test_sorting.rb: Ditto.
+Thu Oct 28 20:11:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/test/unit.rb (run): Put RUBY_DESCRIPTION before quitting.
- [Feature #5282]
+ * tool/enc-unicode.rb,
+ enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
+ enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
+ Update Oniguruma for Unicode 6.
+ patched by Run Paint Run Run. [ruby-core:32923] #3989
-Tue Sep 6 21:13:47 2011 Masaya Tarui <tarui@ruby-lang.org>
+Thu Oct 28 20:06:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * win32/Makefile.sub (INSNS): change command line option -Ks to -Ku
- for generate *.inc. because insns.def encoding has been changed SJIS
- to UTF-8. if $BASERUBY is 1.9, -Ks cause an error. [Feature #5128]
- (same as r33194)
+ * include/ruby/oniguruma.h (ONIGENC_CTYPE_SPECIAL_MASK):
+ change mask from 128 to 256. [ruby-core:32931]
-Tue Sep 6 15:55:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Oct 28 12:06:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * transcode.c (load_transcoder_entry): concatenate paths directly.
+ * lib/webrick/httprequest.rb (read_request_line): extend max
+ length to 2083. This is from Internet Explorer's max uri
+ length. http://support.microsoft.com/kb/208427 [ruby-core:32924]
- * encoding.c (load_encoding): predefined encoding names are safe.
- [ruby-dev:44469] [Bug #5279]
+Thu Oct 28 04:00:08 2010 Koichi Sasada <ko1@atdot.net>
- * transcode.c (load_transcoder_entry): ditto.
+ * gc.c (GC.stat): added. [ruby-dev:38607]
-Tue Sep 6 12:07:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_gc.rb: add a test for above.
- * transcode.c: enabled econv newline option.
+Thu Oct 28 03:13:06 2010 Koichi Sasada <ko1@atdot.net>
-Tue Sep 6 06:44:57 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * ext/objspace/objspace.c (memsize_of): fix rdoc.
- * numeric.c (dbl2ival): Fix Float#divmod and #round for 32 bit
- platform. part 1 of [bug #5276]
+ * ext/objspace/objspace.c (total_memsize_of_all_objects): added.
-Tue Sep 6 06:44:25 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * test/objspace/test_objspace.rb:
+ - add a test for ObjectSpace.total_memsize_of_all_objects.
+ - add two tests for ObjectSpace.memsize_of (for nil and Fixnum).
- * numeric.c (flo_round): Fix criteria for 32 bits platform
- part 2 of [bug #5276]
+Wed Oct 27 23:55:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Sep 6 05:37:11 2011 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
+ * ext/iconv/iconv.c (Init_iconv): warn deprecated use.
- * test/rinda/test_rinda.rb (test_core_03_notify): Fixed test failures
- [ruby-dev:44430] [Ruby 1.9 - Bug #372]
+Wed Oct 27 18:50:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Mon Sep 5 20:59:30 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * bignum.c (rb_big2long, rb_big2ulong): rb2ulong() returns VALUE, but
+ its real range is ulong. So, if the size of VALUE is bigger than
+ ulong, upper bits are always zero even if the actual value is
+ negative.
+ fixed #3490
- * insns.def: change encoding pragma for emacs (shift_jis to utf-8).
+Wed Oct 27 18:27:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Mon Sep 5 19:32:15 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * test/ruby/test_io.rb (TestIO#pipe): should close write end of pipe
+ before closing read end, to get rid of timing problem.
- * Makefile.in (INSNS): change command line option -Ks to -Ku for
- generate *.inc. because insns.def encoding has been changed SJIS to
- UTF-8. if $BASERUBY is 1.9, -Ks cause an error. [Feature #5128]
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#pipe): ditto.
-Mon Sep 5 18:10:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Oct 27 18:14:27 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * transcode.c (rb_econv_binmode): newline decorators are
- exclusive.
+ * win32/win32.c (rb_w32_getppid): support Win64.
-Mon Sep 5 15:03:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Oct 27 15:07:19 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * test/rubygems/test_gem_security.rb
- (test_class_build_self_signed_cert): reset opt[:trust_dir] to apply
- temporary Gem.user_home.
+ * thread_win32.c (w32_error): should get error no only once, because
+ the result of the second getting will indicate the error of the
+ first FormatMessage() call.
-Mon Sep 5 10:04:35 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+Wed Oct 27 13:51:25 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * README.ja, README.EXT.ja: resolve conflicts. [ruby-dev:44459]
+ * test/ruby/test_io.rb (TestIO#pipe): need to propagate exceptions
+ in read/write thread. fix r29541.
-Mon Sep 5 05:13:22 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#pipe): ditto.
- * numeric.c (flo_round): Make Float#round round big values [bug
- #5272]
+Wed Oct 27 12:05:40 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Mon Sep 5 04:28:25 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * class.c (clone_const): need to return value. fix r29602.
- * numeric.c (int_round): Integer#round always returns an Integer [Bug
- #5271]
+Wed Oct 27 11:58:58 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Sun Sep 4 22:28:50 2011 Shugo Maeda <shugo@ruby-lang.org>
+ * include/ruby/ruby.h (NUM2LONG_internal): add cast to get rid of a
+ non GCC compiler warning. this is intentional type conversion.
- * lib/net/imap.rb (default_port, default_imap_port,
- default_tls_port, default_ssl_port, default_imaps_port):
- added methods for consistency with Net::POP.
- based on the patch by art lussos. [ruby-core:38997] [Bug #5198]
+Wed Oct 27 09:25:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Sep 4 21:19:19 2011 Ayumu AIZAWA <ayumu.aizawa@gmail.com>
+ * cont.c: apply documentation patch by Run Paint Run Run.
+ [ruby-core:32915]
- * Change encoding from EUC-JP to UTF-8. [Feature #5128]
+Wed Oct 27 02:12:10 2010 Yusuke Endoh <mame@tsg.ne.jp>
-Sun Sep 4 00:47:39 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+ * object.c (Init_Object), constant.h, variable.c
+ (rb_mod_private_constant, rb_mod_public_constant,
+ set_const_visibility, rb_const_get_0): add Module#public_constant
+ and private_constant. [ruby-dev:39685][ruby-core:32698]
- * test/ruby/test_fiber.rb (TestFiber#test_no_valid_cfp):
- add a test. Unlike TestThread#test_no_valid_cfp,
- this test succeeds even if win32ole is required (see r33153).
+ * test/ruby/test_module.rb: add tests for above.
-Sun Sep 4 00:11:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Oct 27 02:02:54 2010 Yusuke Endoh <mame@tsg.ne.jp>
- * variable.c (rb_const_set): show the previous definition
- location. [EXPERIMENTAL]
+ * class.c, constant.h, gc.c, method.h, object.c, variable.c,
+ vm_insnhelper.c: use struct rb_constant_entry_t as entry of
+ RCLASS_CONST_TBL. RCLASS_CONST_TBL has contained VALUE of constant
+ directly. Now instead rb_const_entry_t is contained in
+ RCLASS_CONST_TBL, rb_const_entry_t is managed by malloc, and
+ have not only the value itself but also visibility flag.
+ This is another preparation for private constant (see
+ [ruby-dev:39685][ruby-core:32698]).
-Sat Sep 3 23:56:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Oct 27 01:56:34 2010 Yusuke Endoh <mame@tsg.ne.jp>
- * configure.in (sizeof_struct_dirent_too_small): check if struct
- dirent.d_name is too small.
+ * class.c, gc.c, object.c, variable.c, vm_insnhelper.c,
+ include/ruby/ruby.h: separate RCLASS_CONST_TBL from RCLASS_IV_TBL.
+ RCLASS_IV_TBL has contained not only instance variable table but
+ also constant table. Now the two table are separated to
+ RCLASS_CONST_TBL and RCLASS_IV_TBL. This is a preparation for
+ private constant (see [ruby-dev:39685][ruby-core:32698]).
- * configure.in (RUBY_MINGW32): take tool prefix from CC.
+Tue Oct 26 18:51:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Sep 3 23:52:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/scanf.rb (extract_float): allow 2.e+2 style.
+ [ruby-dev:42452] #3978
- * io.c (argf_next_argv): open in default text mode.
- [ruby-core:39234] [Bug #5268]
+Tue Oct 26 18:09:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Sep 3 18:40:57 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * Makefile.in (ASFLAGS): needs INCFLAGS.
- * lib/thread.rb (SizedQueue#max=): raise ArgumentError if max is not
- positive number. patch by Masaki Matsushita.
- [ruby-dev:44449] [Bug #5259]
+ * configure.in (rb_cv_dynamic_alloca): check if extra source for
+ dynamic size alloca.
- * test/thread/test_queue.rb (test_sized_queue_initialize,
- test_sized_queue_assign_max): add tests for it.
+ * missing/x86_64-chkstk.s (___chkstk): necessary for alloca of
+ amd64-mingw32msvc-gcc on Ubuntu.
-Fri Sep 2 21:11:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * thread_win32.c (ruby_alloca_chkstk): check stack overflow
- * io.c (validate_enc_binmode, prep_stdio): default to text mode on
- dosish platforms. [ruby-core:38822] [Bug #5164]
+Tue Oct 26 18:04:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * transcode.c (rb_econv_prepare_options): keep default ecflags
- unchanged if no options.
+ * template/ruby.pc.in (Libs): needs DLDFLAGS.
-Fri Sep 2 14:36:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Oct 26 12:47:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm_insnhelper.c (vm_search_const_defined_class): search
- ancestors only when global scope. [ruby-core:39227] [Bug #5264]
+ * common.mk (pkgconfig-data): moved from Makefile.in.
-Fri Sep 2 09:58:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * tool/rbinstall.rb: install pc file only if non-empty.
+ [ruby-core:32901] #3983
- * parse.y (parser_tokadd_string, parser_yylex): ignore a backslash
- which prefixes an non-ascii character, which has no escape
- syntax. [ruby-core:39222] [Ruby 1.9 - Bug #5262]
+ * win32/Makefile.sub (ruby_pc): create pc file.
-Fri Sep 2 04:05:25 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Tue Oct 26 09:13:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/psych/lib/psych/visitors/yaml_tree.rb: emit strings tagged as
- ascii-8bit as binary in YAML.
- * test/psych/test_string.rb: corresponding test.
+ * configure.in (rb_cv_gcc_atomic_builtins): check for atomic
+ builtins, all are not available in Apple derivative gcc.
-Fri Sep 2 01:07:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Oct 26 00:29:26 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * numeric.c (flo_round): substitute machine dependent magic number.
+ * Makefile.in (pkgconfig-data): create pkg-config metadata file.
-Thu Sep 1 17:31:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * tool/rbinstall.rb: install pkg-config metadata file.
- * insns.def (defineclass), vm_insnhelper.c (vm_get_cvar_base): see
- also inherited constants for classes without superclass and
- modules. [ruby-core:37698] [Bug #3423]
+ * template/ruby.pc.in: template of pkg-config metadata file.
-Thu Sep 1 16:18:44 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Mon Oct 25 16:38:07 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
- * Release GVL while OpenSSL's public key generation.
+ * signal.c (rb_atomic_t): GCC (of at least recent versions)
+ has ubiquitous support for atomic operations. On that
+ compiler a C program can issue a memory barrier using these
+ dedicated instructions. According to the GCC manual they
+ cargo culted this feature form the Itanium ABI so chances
+ are that other compilers could also support this feature.
+ But so far GCC is the only compiler that I know to have it.
+ Also note that this works on non-Itanium machines.
- t = Thread.new { print "."; sleep 0.1 }
- key = OpenSSL::PKey::RSA.new(2048)
- #=> Thread t works in parallel with public key generation if
- OS/machine allows it.
+Mon Oct 25 06:21:35 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- This works with OpenSSL >= 0.9.8. From this version, it has new
- public key generation function which allows us to interrupt the
- execution while pkey generation iterations.
+ * vsnprintf.c (BSD_vfprintf): prec digits fractal part should be
+ appended to 0 if prec is given. [ruby-dev:42453] #3979
- * ext/openssl/extconf.rb: Check existence of OpenSSL's new public key
- generation function. (DH_generate_parameters_ex,
- DSA_generate_parameters_ex and RSA_generate_key_ex.
+Mon Oct 25 02:57:21 2010 Koichi Sasada <ko1@atdot.net>
- * ext/openssl/ossl_pkey.{h,c} (ossl_generate_cb_2,
- ossl_generate_cb_stop): Added new callback function for OpenSSL pkey
- generation which handles Thread interruption by Ruby.
- ossl_generate_cb_stop is the unblock function(ubf) for Ruby which
- sets a stop flag. New pkey generation callback ossl_generate_cb_2
- checks the stop flag at each iterations of OpenSSL and interrupts
- pkey generation when the flag is set.
+ * common.mk (run.gdb): Quit gdb on 'make gdb' when
+ no signals are received.
- * ext/openssl/ossl_pkey_dsa.c (dsa_generate): Call
- rb_thread_blocking_region with the above unblock function to release
- GVL while pkey generation.
+Mon Oct 25 00:25:23 2010 Tadayoshi Funaba <tadf@dotrb.org>
- * ext/openssl/ossl_pkey_rsa.c (rsa_generate): ditto.
+ * lib/date.rb: some corrections of documentation.
- * ext/openssl/ossl_pkey_dh.c (dh_generate): ditto.
+Sun Oct 24 17:14:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/openssl/test_pkey_{dh,dsa,rsa}.rb: Test it.
+ * array.c, gc.c, hash.c, object.c, string.c, struct.c,
+ transcode.c, variable.c, vm.c, vm_insnhelper.c, vm_method.c:
+ replace calls to rb_error_frozen() with rb_check_frozen(). a
+ patch from Run Paint Run Run at [ruby-core:32014]
-Thu Sep 1 14:06:54 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * include/ruby/intern.h (rb_check_frozen): optimize.
+ [ruby-core:32878]
- * test/ruby/test_thread.rb (TestThread#test_no_valid_cfp): skip when
- win32ole is required. in such case, win32ole redefines
- Thread#initialize, and the block argument becomes to be not the top
- of the thread, then this testcase always fails.
+Sun Oct 24 15:16:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Sep 1 10:20:50 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/test/unit.rb (Test::Unit::Mini#run): abort if interrupted.
- * test/ruby/test_io_m17n.rb (TestIO_M17N#test_{default_mode_on_dosish,
- default_mode_on_unix,text_mode,binary_mode}): sorry for wrong test
- committed in r33144. I'd misunderstood the spec of ruby's universal
- newline.
+ * lib/test/unit.rb (Test::Unit::Mini#run_test_suites): show the
+ result even when interrupted on the way.
-Thu Sep 1 09:27:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/test/unit.rb (Test::Unit::Mini#run_test_suites): ensure
+ output sync mode to be restored.
- * variable.c (rb_autoloading_value): Fix the order of definitions.
- It is used by autoload_defined_p.
+Sun Oct 24 14:11:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Aug 31 17:28:23 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * vm.c (vm_define_method): defined method is run with the default
+ public visibility regardless the visibility context of definition.
+ [ruby-core:30638]
- * variable.c (rb_autoload): There was a chance to run GC (from
- rb_str_new2()) before finishing autoload_data_i construction. It
- caused SEGV at rb_gc_mark() at autoload_i_mark.
+Sun Oct 24 12:08:54 2010 Aaron Patterson <aaron@tenderlovemaking.com>
- * variable.c (rb_autoload_load): Move RB_GC_GUARD() to proper
- position based on suggestion by CHIKANAGA Tomoyuki at
- http://d.hatena.ne.jp/nagachika/20110826/ruby_trunk_changes_33070_33078
+ * lib/test/unit.rb: make test/unit play nicely with the rake test
+ loader. [ruby-core:32864]
- * variable.c (autoload_defined_p): Fix incompatible autoload behavior
- that causes Rails crash. Class definition instruction defined in
- 'defineclass' in insns.def always invokes rb_autoload_load for a
- constant. It's invoked for every class definition regardless of
- existence of autoload definition. rb_autoload_load checks if a
- constant is defined as autoloaded, but new thread-safe autoload
- returned different value if the constant is under autoloading.
+Sun Oct 24 00:25:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Aug 31 17:20:56 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * test/ruby/test_rubyoptions.rb (test_segv_test): follow up the
+ change at r29556.
- * Re-apply r33078, thread-safe autoload which is reverted at r33093.
+Sat Oct 23 14:39:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Aug 31 16:28:04 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * lib/mkmf.rb: $extmk should be true for test/runner.
- * test/ruby/test_io_m17n.rb (TestIO_M17N#test_{default_mode_on_dosish,
- default_mode_on_unix,text_mode,binary_mode}): tests for [Bug #5164].
+Sat Oct 23 10:55:37 2010 Koichi Sasada <ko1@atdot.net>
-Wed Aug 31 15:54:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * vm_dump.c (rb_vm_bugreport): fix to add bug outputs.
+ - loaded script ($0)
+ - loaded features ($")
+ - process memory map on Linux (/proc/self/maps)
- * ext/json: Merge json gem v1.5.4 (3dab4c5a6a97fac03dac).
+ * vm_dump.c (rb_vmdebug_stack_dump_raw): fix header message.
-Wed Aug 31 13:09:41 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+Fri Oct 22 14:50:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * numeric.c (flo_round): Avoid overflow by optimizing for trivial
- cases [Bug #5227]
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ assertion message must not be nil.
-Wed Aug 31 00:50:01 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Oct 22 13:59:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * win32/win32.c (rb_w32_select_with_thread): and my typo. we all must
- be more careful.
+ * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
+ treat nil case. Please run test-all before commit such change.
-Wed Aug 31 00:48:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Oct 21 23:58:14 2010 Koichi Sasada <ko1@atdot.net>
- * thread.c (rb_thread_select): critical typo in r33117.
+ * gc.c (gc_lazy_sweep): Variable declarations should be at
+ the head of block.
-Wed Aug 31 00:30:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Oct 21 23:56:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/-ext-/old_thread_select/test_old_thread_select.rb
- (TestOldThreadSelect#test_old_select_read_timeout): if the machine
- is fast enough, the time used by code around IO.select may be smaller
- than Time implement threshold.
+ * gc.c (objspace_each_objects, rb_objspace_each_objects): use
+ struct.
-Wed Aug 31 00:04:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * gc.c (objspace_each_objects): fix return with no value.
- * ext/-test-/old_thread_select/old_thread_select.c (old_thread_select):
- typo.
+Thu Oct 21 23:47:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/-ext-/old_thread_select/test_old_thread_select.rb
- (TestOldThreadSelect#test_old_select_signal_safe): use SIGINT instead
- of SIGUSR1 because the former is general and the latter is platform
- dependent.
+ * dir.c (dir_initialize): remove useless intermediate variable.
-Tue Aug 30 23:59:36 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Oct 21 16:07:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * win32/win32.c, include/ruby/intern.h (rb_w32_fd_copy): implement
- for rb_thread_select() in thread.c. the use of rb_fd_copy() is
- introduced in r33117.
- [Bug #5251] [ruby-core:39195]
+ * io.c (rb_f_select): change rdoc.
+ patched by Eito Katagiri [ruby-core:31805]
- * thread.c (rb_thread_select): must call rb_fd_init() before using
- rb_fdset_t. see the implementations of rb_fd_init()s if you want to
- know the reason.
+Thu Oct 21 15:55:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Aug 30 22:34:45 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * lib/webrick/httpauth/digestauth.rb
+ (WEBrick::HTTPAuth::ProxyDigestAuth#check_uri): privated.
+ [ruby-dev:42344]
- * test/dl/test_callback.rb (test_callback_with_string): prevents
- temporary string from GC.
+Thu Oct 21 15:50:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Aug 30 22:25:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * io.c (rb_f_select): add correct rdoc.
+ patched by Dave Thomas [ruby-core:32467]
- * vm_insnhelper.c (vm_call_cfunc): revert r33112. RB_GC_GUARD macro
- protect a VALUE from GC. It's not for general anti-optimizing
- purpose.
+Thu Oct 21 15:42:01 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Aug 30 11:06:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/net/telnet.rb (Net::Telnet#close): added.
+ patched by Erik Hollensbe [ruby-dev:42260] #3830
- * ext/json: Merge json gem 1.5.4+ (2149f4185c598fb97db1).
- [Bug #5173] [ruby-core:38866]
+Thu Oct 21 13:08:00 2010 Narihiro Nakamura <authornari@gmail.com>
-Tue Aug 30 09:57:50 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * gc.c (rb_objspace_each_objects): don't lazy sweep in
+ rb_objspace_each_objects. [Bug #3940] [ruby-dev:42369]
- * lib/thread.rb (Queue#pop): fix a race against Thread.wakeup.
- Patch by Masaki Matsushita <glass.saga at gmail dot com>
- [Bug #5195] [ruby-dev:44400]
+Thu Oct 21 00:05:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Aug 30 09:48:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/ruby/test_io.rb (TestIO#pipe): get rid of deadlock on pipe.
+ a patch from Tomoyuki Chikanaga at [ruby-dev:42435]. #3970
- * cont.c (fiber_entry): fix stack allocation failure on Debian
- GNU/kFreeBSD.
- Patch by Lucas Nussbaum <lucas at lucas-nussbaum dot net>.
- [Bug #5241] [ruby-core:39147]
+ * test/ruby/test_io_m17n.rb (TestIO_M17N#pipe): ditto.
-Tue Aug 30 09:28:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Oct 20 23:54:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * thread.c (rb_thread_select): rewrite by using
- rb_thread_fd_select(). old one is EINTR unsafe.
- Patch by Eric Wong. [Bug #5229] [ruby-core:39102]
+ * ext/dbm/dbm.c: rdoc based on a patch by mathew meta AT
+ pobox.com, at [ruby-core:32853].
- * test/-ext-/old_thread_select/test_old_thread_select.rb:
- a testcase for rb_thread_select().
- * ext/-test-/old_thread_select/old_thread_select.c: ditto.
- * ext/-test-/old_thread_select/depend: ditto.
- * ext/-test-/old_thread_select/extconf.rb: ditto.
+Wed Oct 20 10:47:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Aug 30 09:08:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * util.c (ruby_strtod): reject 0x1.p+0. [ruby-dev:42432] #3966
- * configure.in: fix a build failure on GNU Hurd.
- Patch by Samuel Thibault <sthibault at debian dot org>. Thank you!
- [Bug #5250] [ruby-core:39185]
+Wed Oct 20 10:00:57 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Aug 29 23:22:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * vsnprintf.c (BSD_vfprintf): print floating point on "%#a".
+ [ruby-dev:42431] Bug#3965
- * test/ruby/test_numeric.rb (test_num2long): modify a test against the
- change by r33108.
+Tue Oct 19 19:30:11 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Aug 29 09:58:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * vsnprintf.c (BSD_vfprintf): clear ALT flag for %a.
+ [ruby-core:32841] [ruby-core:32848]
- * numeric.c (bit_coerce): A Fixnum and a Bignum are only permitted for
- bitwise arithmetic with a Fixnum. #1792
+Tue Oct 19 12:19:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_fixnum.rb: add tests for the above change.
+ * vsnprintf.c (BSD_vfprintf): fix over-count of field size.
- * bignum.c (bit_coerce): A Fixnum and a Bignum are only permitted for
- bitwise arithmetic with a Bignum. #1792
+Tue Oct 19 03:08:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_bignum.rb: add tests for the above change.
+ * vsnprintf.c (BSD_vfprintf): use HEXPREFIX flag for prefix of %a.
+ [ruby-core:32841]
-Sun Aug 28 15:38:17 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Mon Oct 18 13:18:01 2010 Akinori MUSHA <knu@iDaemons.org>
- * ext/date/date_parse.c (date_zone_to_diff): keep a temporary string
- stored in variable while the contents buffer is being used.
+ * ext/digest/digest.c (rb_digest_class_init): Define
+ Digest::Class.new(). [Feature #3954]
- * ext/date/date_parse.c (date_zone_to_diff): get rid of out of bounds
- memory read. [ruby-dev:44409] [Bug #5213]
+Mon Oct 18 12:58:40 2010 Tanaka Akira <akr@fsij.org>
-Sun Aug 28 05:29:50 2011 Ryan Davis <ryand-ruby@zenspider.com>
+ * pack.c (pack_pack): refine the document. [ruby-dev:42397]
+ (pack_unpack): ditto.
- * lib/minitest/*: Imported minitest 2.5.1 (r6596)
- * test/minitest/*: ditto
+Mon Oct 18 10:19:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Aug 27 20:46:05 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+ * lib/net/http.rb (transport_request): @socket may be nil.
+ patched by Egbert Eich [ruby-core:32829]
- * vm.c (rb_vm_rewrite_dfp_in_errinfo): change return type
- to suppress a warning.
+Mon Oct 18 09:57:28 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * vm_core.h: ditto.
+ * sprintf.c (BSD_vfprintf): wrong padding around prefix and
+ floating point with %a. [ruby-dev:42403] Bug #3956
-Sat Aug 27 19:04:06 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sun Oct 17 22:36:33 2010 Tadayoshi Funaba <tadf@dotrb.org>
- * internal.h (rb_strftime_timespec): moved from time.c and define only
- if ruby/encoding.h is included.
+ * lib/date/delta.rb: added an rdoc tag.
- * internal.h (rb_strftime): ditto.
+Sun Oct 17 10:47:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Aug 27 18:53:51 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+ * variable.c (rb_mod_remove_const): update rdoc.
+ [ruby-core:31957]
- * proc.c (proc_new): force to rewrite errinfo when calling Proc.new in ensure.
- [Bug #5234] [ruby-core:39125]
- This code will be removed after changing throw mechanism (see r33064).
+Sun Oct 17 10:40:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm.c (rb_vm_rewrite_dfp_in_errinfo): new function.
+ * class.c (rb_define_{class,module}_id_under): register to be
+ marked, which probably are defined and used internally.
- * vm.c (vm_make_env_each): changed accordingly.
+Sat Oct 16 11:10:55 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- * vm_core.h: ditto.
+ * ext/win32ole/win32ole.c (ole_encoding2cp): set codepage 20936
+ according to GB2312. [Bug #3937] [ruby-core:32758]
- * bootstraptest/test_flow.rb: add tests for above.
+Sat Oct 16 10:54:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Aug 27 18:44:06 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * Makefile.in (CPP): already used in .c.i rule.
- * internal.h (rb_strftime_timespec): move to time.c because it depends
- encoding.h.
+ * cygwin/GNUmakefile.in (DLLWRAP, WINDRES): add --driver-name and
+ --preprocessor options explicitly. [ruby-core:32776]
-Sat Aug 27 18:17:58 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sat Oct 16 10:06:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * strftime.c (rb_strftime_with_timespec): get enc argument to specify
- the encoding of the format. On Windows (at least Japanese Windows),
- Time#strftime("%Z") includes non ASCII in locale encoding (CP932).
- So convert locale to default internal. [ruby-core:39092] [Bug #5226]
+ * ext/sdbm/_sdbm.c (SEEDUPS, BADMESS): make settable using command
+ line options.
- * strftime.c (rb_strftime): ditto.
+ * ext/sdbm/_sdbm.c (makroom): suppress unused result warning.
- * strftime.c (rb_strftime_timespec): ditto.
+ * ext/sdbm/extconf.rb: disable BADMESS, a library should not emit
+ messages directly.
- * internal.h (rb_strftime_timespec): follow above.
+Sat Oct 16 08:39:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * time.c (rb_strftime_alloc): ditto.
+ * dln.c (dln_strerror): get English message first, instead of
+ system default. see [ruby-dev:42358].
- * time.c (strftimev): ditto.
+Sat Oct 16 00:08:00 2010 Koichi Sasada <ko1@atdot.net>
- * time.c (time_strftime): ditto.
+ * hash.c (rb_hash_aref): skip calling "default" method
+ if it is not needed, for speed-up.
- * time.c (time_to_s): the resulted string of Time#to_s is always
- ascii only, so this should be US-ASCII.
+Fri Oct 15 23:36:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * time.c (time_asctime): ditto.
+ * file.c (NUM2DEVT, DEVT2NUM, PRI_DEVT_PREFIX): fallback to
+ unsigned int.
-Sat Aug 27 11:18:12 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Fri Oct 15 22:54:46 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- * Revert r33078. It caused a Rails application NoMethodError.
+ * ext/win32ole/win32ole.c (ole_hresult2msg): get English message first,
+ instead of system default. [ruby-core:32765]
- /home/nahi/git/emptyApp/ruby/1.9.1/gems/rack-mount-0.6.14/lib/rack/mount/utils.rb:157: warning: toplevel constant ScanError referenced by Regin::Parser::ScanError
- /home/nahi/git/emptyApp/ruby/1.9.1/gems/rack-mount-0.6.14/lib/rack/mount/vendor/regin/regin/parser.rb:17:in `parse_regexp': undefined method `scan_str' for #<Regin::Parser:0x00000002344548> (NoMethodError)
+Fri Oct 15 22:47:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Aug 27 08:44:58 2011 Eric Hodel <drbrain@segment7.net>
+ * include/ruby/ruby.h (VALUE): prefer long over uintptr_t,
+ FIX2LONG expects VALUE to be long at least.
- * lib/rdoc: Import RDoc 3.9.4. Typo and grammar fixes by Luke Gruber.
- [Ruby 1.9 - Bug #5203]
+ * include/ruby/ruby.h (FIX2LONG): parenthesize the argument.
-Sat Aug 27 07:53:34 2011 Eric Hodel <drbrain@segment7.net>
+Fri Oct 15 20:30:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/open-uri.rb: Fix indentation of OpenURI::OpenRead#open. Use ++
- instead of `' for method arguments in open-uri.rb
+ * configure.in (dev_t): use RUBY_REPLACE_TYPE.
-Sat Aug 27 07:22:07 2011 Eric Hodel <drbrain@segment7.net>
+ * file.c (rb_stat_inspect): use PRI_DEVT_PREFIX.
- * ext/pathname/lib/pathname.rb: Fix typos and grammar mistakes. Patch
- by Luke Gruber. [#5203]
- * ext/pty/lib/expect.rb: ditto
- * lib/mathn.rb: ditto
- * lib/net/http.rb: ditto
- * lib/open-uri.rb: ditto
- * lib/ostruct.rb: ditto
- * lib/tempfile.rb: ditto
- * lib/thread.rb: ditto
- * lib/weakref.rb: ditto
- * sample/webrick/httpproxy.rb: ditto
+Fri Oct 15 17:26:57 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Aug 27 04:03:18 2011 Koichi Sasada <ko1@atdot.net>
+ * pack.c (pack_pack): simplify comparison of explicit_endian
+ as pointed by nobu.
- * iseq.c (iseq_data_to_ary): fix type of variable
- (long -> unsigned long) to suppress a warning.
+ * pack.c (pack_unpack): ditto.
-Sat Aug 27 04:02:11 2011 Koichi Sasada <ko1@atdot.net>
+Fri Oct 15 16:40:37 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * vm_core.h: add a decl. of rb_autoloading_value().
+ * pack.c (pack_pack): fix more than one modifiers appear in the
+ format string. [ruby-core:32793]
-Fri Aug 26 19:12:08 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * pack.c (pack_unpack): ditto.
- * variable.c: Make autoload thread-safe. See #921.
+Thu Oct 14 23:20:42 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- What's the problem?
- autoload is thread unsafe. When we define a constant to be
- autoloaded, we expect the constant construction is invariant. But
- current autoload implementation allows other threads to access the
- constant while the first thread is loading a file.
+ * test/win32ole/test_folderitem2_invokeverb.rb: refactoring.
- What's happening inside?
- The current implementation uses Qundef as a marker of autoload in
- Constant table. Once the first thread find Qundef as a value at
- constant lookup, it starts loading a defined feature. Generally a
- loaded file overrides the Qundef in Constant table by module/class
- declaration at very beginning lines of the file, so other threads
- can see the new Module/Class object before feature loading is
- finished. It breaks invariant construction.
+Thu Oct 14 22:18:29 2010 Koichi Sasada <ko1@atdot.net>
- How to solve?
- To ensure invariant constant construction, we need to override
- Qundef with defined Object after the feature loading. For keeping
- Qundef in Constant table, I expanded autoload_data struct in
- Module to have a slot for keeping the defined object while feature
- loading. And changed Module's constant lookup/update logic a
- little so that the slot is only visible from the thread which
- invokes feature loading. (== the first thread which accessed the
- autoload constant)
+ * insns.def, iseq.c, vm_insnhelper.c: rename variable name
+ (ip -> iseq).
- Evaluation?
- All test passes (bootstrap test, test-all and RubySpec) and added
- 8 tests for threading behavior. Extra logics are executed only
- when Qundef is found, so no perf drop should happen except
- autoloading.
+Thu Oct 14 20:41:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * variable.c (rb_autoload): Prepare new autoload_data struct.
+ * pack.c (pack_pack): support endian modifiers: < and >.
+ [ruby-dev:42376] Feature #3491
- * variable.c (rb_autoload_load): Load feature and update Constant
- table after feature loading is finished.
+ * pack.c (pack_unpack): ditto.
- * variable.c (rb_const_get_0): When the fetched constant is under
- autoloading, it returns the object only for the thread which starts
- autoloading.
+Thu Oct 14 20:50:51 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
- * variable.c (rb_const_defined_0): Ditto.
+ * ext/win32ole/win32ole.c (reg_get_val): expand environment in
+ the pathname. [Bug #3907]
- * variable.c (rb_const_set): When the specified constant is under
- autoloading, it sets the object only for the thread which starts
- autoloading. Otherwise, simply overrides Qundef with constant
- override warning.
+Thu Oct 14 07:35:07 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * vm_insnhelper.c (vm_get_ev_const): Apply same change as
- rb_const_get_0 in variable.c.
+ * file.c (DEVT2NUM): added. Size of dev_t is depend on the
+ environment even if POSIX defines dev_t as unsigned integer.
+ For example, OpenVMS, 64bit Solaris 9, and NetBSD 6 defines
+ dev_t as 64bit unsigned integer.
- * test/ruby/test_autoload.rb: Added tests for threading behavior.
+ * file.c (rb_stat_dev): use DEVT2NUM.
-Fri Aug 26 10:10:37 2011 Eric Hodel <drbrain@segment7.net>
+ * file.c (rb_stat_dev_major): dev_t is not long. major(3)'s return
+ value is int.
- * lib/rubygems: Update to RubyGems 1.8.10. Fixes security issue in
- creating ruby-format gemspecs. Fixes Gem.dir not being at the front
- of Gem.path to fix uninstall and cleanup commands. Fixes gem
- uninstall stopping on the first missing gem.
+ * file.c (rb_stat_dev_minor): dev_t is not long. minor(3)'s return
+ value is int.
-Fri Aug 26 08:21:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * configure.in: check size of dev_t.
- * time.c (strftimev): Make Time#to_s default to US-ASCII encoding but
- respect Encoding.default_internal. [ruby-core:39092]
- * test/ruby/test_time.rb (class TestTime): Corresponding test.
+Thu Oct 14 07:22:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Aug 25 09:43:16 2011 Eric Hodel <drbrain@segment7.net>
+ * array.c (rb_ary_and, rb_ary_or), class.c (rb_mod_init_copy),
+ gc.c (undefine_final), time.c (time_mload): get rid of
+ type-punning casts.
- * ext/openssl/lib/openssl/bn.rb: Hide copyright info from RDoc.
- * ext/openssl/lib/openssl/digest.rb: ditto
- * ext/openssl/lib/openssl/x509.rb: ditto
- * ext/openssl/lib/openssl/cipher.rb: ditto
+Thu Oct 14 04:16:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Aug 25 09:25:48 2011 Eric Hodel <drbrain@segment7.net>
+ * numeric.c (ruby_float_step): fix Numeric#step with infinity unit
+ doesn't works well. [ruby-core:32779]
- * ext/openssl/ossl_digest.c: Document OpenSSL::Digest::digest and add
- an example to OpenSSL::Digest. Patch by Sylvain Daubert.
- [Ruby 1.9 - Bug #5166]
- * ext/openssl/lib/openssl/digest.rb (module OpenSSL): ditto
+Wed Oct 13 23:16:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Aug 25 08:19:43 2011 Koichi Sasada <ko1@atdot.net>
+ * tool/enc-unicode.rb: get rid of lots of warnings.
- * vm.c (vm_make_env_each): work around to solve Bug #2729.
- fixes: Bug #2729
- a patch from Kazuki Tsujimoto <kazuki@callcc.net>
- This problem is caused by changing dfp (dynamic env pointer)
- from saved dfp. Saved dfp is pointed env in VM stack. However,
- the dfp can be moved because VM copies env from VM stack to
- the heap. At this copying, dfp was also changed. To solve this
- problem, I'll try to change throw mechanism (not save target dfp,
- but save target cfp).
+ * iseq.c (insn_operand_intern, rb_iseq_disasm): fix format specifiers.
- * bootstraptest/test_flow.rb: add a test for above.
+ * vm.c (thread_free): ditto.
-Thu Aug 25 07:57:33 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+ * numeric.c (check_uint): get rid of overflow on LLP64 platforms.
- * numeric.c (int_round): Fix Integer#round [ruby-core:39096]
+ * insns.def (opt_case_dispatch): use st_data_t.
-Thu Aug 25 07:00:00 2011 Koichi Sasada <ko1@atdot.net>
+Wed Oct 13 22:32:34 2010 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
- * vm_insnhelper.h, vm_insnhelper.c, vm.c, vm_method.c, insns.def:
- Manage a redefinition of special methods for each classes.
- A patch from Joel Gouly <joel.gouly@gmail.com>. Thanks!
+ * lib/cgi/util.rb (CGI::unescape): bugfix to unescape the multibyte
+ string. Thanks nobu and tDiary dev members. [Bug #3909]
-Thu Aug 25 06:51:08 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Wed Oct 13 21:13:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/psych/lib/psych.rb: Fixing psych version number.
- * ext/psych/psych.gemspec: updating the gemspec.
+ * numeric.c (int_chr): raise error when the value is negative.
-Thu Aug 25 06:11:35 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Wed Oct 13 19:24:08 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
- * ext/psych/lib/psych/nodes/node.rb: default `to_yaml` encoding to be
- UTF-8.
- * test/psych/test_encoding.rb: test yaml dump encoding.
+ * vm.c (ruby_vm_destruct): This function type was wrong; correct to the prototype.
-Thu Aug 25 01:24:33 2011 Naohisa Goto <ngotogenome@gmail.com>
+Wed Oct 13 14:58:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * test/fileutils/test_fileutils.rb (test_chmod_symbol_mode): Solaris
- seems to behave the same as FreeBSD.
+ * numeric.c (rb_num_to_uint): fix 32bit logic.
-Thu Aug 25 01:11:36 2011 Naohisa Goto <ngotogenome@gmail.com>
+Wed Oct 13 12:53:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * test/ruby/test_rubyoptions.rb (test_script_from_stdin): slave pty
- should be manipulated because master pty may not be a tty on some
- environment (e.g. Solaris). [Bug:#5222] [ruby-dev:44420]
+ * numeric.c (rb_num_to_uint): added to check the range of arguments.
+ Mainly for negative value with NUM2UINT on 32bit environment.
-Wed Aug 24 15:13:56 2011 Koichi Sasada <ko1@atdot.net>
-
- * iseq.h, iseq.c, compile.c: Change the line number data structure
- to solve an issue reported at [ruby-dev:44413] [Ruby 1.9 - Bug #5217].
- Before this fix, each instruction has an information including
- line number (iseq::iseq_insn_info_table). Instead of this data
- structure, recording only line number changing places
- (iseq::iseq_line_info_table).
- The order of entries in iseq_line_info_table is ascending order of
- iseq_line_info_table_entry::position. You can get a line number
- by an iseq and a program counter with this data structure.
- This fix reduces memory consumption of iseq (bytecode).
- On my measurement, a rails application consumes 21.8MB for
- iseq with this fix on the 32bit CPU. Without this fix, it
- consumes 24.7MB for iseq [ruby-dev:44415].
+ * string.c (rb_str_concat): use rb_num_to_uint.
- * proc.c: ditto.
+Wed Oct 13 12:10:02 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * vm_insnhelper.c: ditto.
+ * thread_win32.c (w32_error): get English message first, instead
+ of system default. see [ruby-core:32765].
+ [experimental]
- * vm_method.c: ditto.
+Wed Oct 13 11:04:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm.c (rb_vm_get_sourceline): change to use rb_iseq_line_no().
+ * debug.c (ruby_set_debug_option): define always for binary
+ compatibility with debug env enabled binary.
-Wed Aug 24 09:49:10 2011 Koichi Sasada <ko1@atdot.net>
+ * signal.c (ruby_enable_coredump): ditto.
- * insns.def (defined): fix to checking class variable.
- A patch by Magnus Holm <judofyr@gmail.com>. Thanks!
+Wed Oct 13 10:52:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/ruby/test_variable.rb: add a test for above.
+ * include/ruby/ruby.h (ruby_executable_node): missing prototype.
-Wed Aug 24 08:53:06 2011 Eric Hodel <drbrain@segment7.net>
+Wed Oct 13 05:23:04 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/rdoc: Update to RDoc 3.9.3. Fixes RDoc with `ruby -Ku`. Allows
- HTTPS image paths to be turned into <img> tags. Prevents special
- markup inside <tt> from being processed.
+ * missing/strchr.c: add strlen's prototype.
-Wed Aug 24 07:57:43 2011 Eric Hodel <drbrain@segment7.net>
+ * missing/strstr.c: ditto.
- * lib/rubygems: Update to RubyGems 1.8.9. Fixes uninstalling multiple
- gems and gem cleanup.
+Wed Oct 13 00:21:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Aug 24 06:45:20 2011 Ryan Davis <ryand-ruby@zenspider.com>
+ * ext/syck/rubyext.c (struct mktime_arg): constified.
- * lib/minitest/*: Imported minitest 2.5.0 (r6557)
- * test/minitest/*: ditto
+ * ext/syck/rubyext.c (mktime_do, mktime_r, rb_syck_mktime): fix
+ function signatures.
-Wed Aug 24 00:38:22 2011 Yusuke Endoh <mame@tsg.ne.jp>
+Wed Oct 13 00:18:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * thread.c (update_coverage): skip coverage count up if the current
- line is out of the way. rb_sourceline() is unreliable when source
- code is big. [ruby-dev:44413]
+ * st.c (MurmurMagic): get rid of literal overflow.
- * test/coverage/test_coverage.rb: add a test for above.
+ * configure.in (RUBY_CHECK_PRINTF_PREFIX): check for printf format
+ specifier if possible.
-Tue Aug 23 15:23:56 2011 Eric Hodel <drbrain@segment7.net>
+Tue Oct 12 23:58:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * load.c (rb_f_require): Improve documentation of Kernel#require.
- [Ruby 1.9 - Bug #5210]
+ * win32/win32.c (rb_w32_open_osfhandle, rb_w32_wopen, rb_w32_pipe):
+ use uintptr_t instead of long for win64.
-Tue Aug 23 11:27:26 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * win32/win32.c (socketpair_internal): suppress warnings.
- * ext/zlib/zlib.c (gzfile_read_header): Ensure that each section of
- gzip header is readable to avoid SEGV.
+ * win32/win32.c (ftruncate): use HANDLE instead of long for win64.
- * test/zlib/test_zlib.rb (test_corrupted_header): Test it.
+ * vsnprintf.c (BSD_vfprintf): fix cast.
-Mon Aug 22 23:43:33 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * numeric.c (rb_num2fix): result of rb_num2long is SIGNED_VALUE.
- * sprintf.c (rb_str_format): add RB_GC_GUARD to prevent temporary
- strings from GC.
+ * compile.c (iseq_build_body), error.c (set_syserr, get_syserr),
+ (syserr_initialize), gc.c (define_final, rb_gc_copy_finalizer),
+ (run_final), hash.c (rb_hash_aref, rb_hash_lookup2),
+ (rb_hash_fetch_m, rb_hash_clear, rb_hash_aset, eql_i),
+ iseq.c (iseq_load, iseq_data_to_ary), marshal.c (r_symlink),
+ thread.c (rb_thread_local_aref),
+ variable.c (generic_ivar_remove, ivar_get, rb_const_get_0),
+ (rb_cvar_get), vm.c (rb_vm_check_redefinition_opt_method),
+ vm_insnhelper.c (vm_get_ev_const), vm_method.c (remove_method),
+ ext/iconv/iconv.c (map_charset): use st_data_t.
-Sun Aug 21 17:49:53 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+ * compile.c (iseq_build_body), insns.def (getglobal, setglobal),
+ iseq.c (iseq_load, iseq_data_to_ary), util.c (valid_filename):
+ use VALUE.
- * iseq.c (iseq_s_disasm): remove variable which is no longer used
- since r33013.
+ * gc.c (obj_free, rb_objspace_call_finalizer): fix truncating
+ cast.
-Sun Aug 21 14:20:58 2011 Naohisa Goto <ngotogenome@gmail.com>
+ * gc.c (mark_current_machine_context): suppress warnings.
- * configure.in: use LD_LIBRARY_PATH_64 on 64-bit Solaris.
+ * compile.c (iseq_compile_each): fix truncating cast.
-Sat Aug 20 13:19:52 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+ * cont.c (fiber_setcontext): missing variable definition.
- * iseq.c (iseq_s_disasm): fix a bug that may cause SEGV.
+Tue Oct 12 19:25:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * test/ruby/test_method.rb (test_body): add a test for the above change.
+ * error.c (exc_to_s): use OBJ_INFECT.
-Sat Aug 20 10:43:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * error.c (name_err_to_s): ditto.
- * ext/stringio/stringio.c (strio_read): return new string if nil
- is explicitly given as a buffer ([Bug #5207]), otherwise set the
- encoding. also removed dead code.
+ * error.c (name_err_mesg_to_str): ditto.
-Fri Aug 19 14:25:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * error.c (syserr_initialize): ditto.
- * process.c (proc_spawn_v, proc_spawn): should not wait the
- spawned process.
+Tue Oct 12 19:07:55 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * process.c (proc_spawn_v): fix missing argument, and try with
- /bin/sh only if failed with ENOEXEC.
+ * error.c (syserr_initialize): taint message if mesg is given
+ and it is tainted.
-Fri Aug 19 14:12:57 2011 Shugo Maeda <shugo@ruby-lang.org>
+Tue Oct 12 18:25:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/net/imap.rb (idle): raises a Net::IMAP::Error when the
- connection is closed. based on the patch by Hugo Barauna.
- [Bug #5190] [ruby-core:38930]
+ * io.c (rb_io_ungetc): always see Bignum. On 32bit valid value
+ may be a Bignum. On 64bit for errors. [ruby-dev:42366]
-Fri Aug 19 13:18:00 2011 Kenta Murata <mrkn@mrkn.jp>
+Tue Oct 12 18:25:04 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * configure.in: defines _DARWIN_UNLIMITED_SELECT if the target_os
- is darwin.
+ * string.c (rb_str_concat): use unsigned int for GB18030.
-Fri Aug 19 13:14:00 2011 Kenta Murata <mrkn@mrkn.jp>
+Tue Oct 12 17:53:49 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * thread.c: add a description for the behavior of select(2) on
- Mac OS X 10.7 (Lion).
+ * numeric (check_uint): the mask must refer to VALUE.
-Fri Aug 19 11:28:58 2011 Shugo Maeda <shugo@ruby-lang.org>
+Tue Oct 12 17:47:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/net/imap.rb (msg_att): accepts extra space before ')'.
- based on the patch by art lussos. [Bug #5163] [ruby-core:38820]
+ * numeric (check_uint): set MSB for negative value.
-Wed Aug 17 23:01:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * numeric (rb_num2uint): return value's type of rb_num2ulong
+ is VALUE.
- * ext/bigdecimal/bigdecimal.c (cannot_be_coerced_into_BigDecimal):
- remove duplication.
+ * numeric (int_chr): variable i can't be negative.
-Wed Aug 17 15:27:00 2011 Kenta Murata <mrkn@mrkn.jp>
+Tue Oct 12 16:04:37 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/bigdecimal/bigdecimal.c (cannot_be_coerced_into_BigDecimal):
- add a new function for raising error when an object cannot coerce
- into BigDecimal. [Bug #5172]
+ * win32/win32.c (rb_w32_strerror): get English message first, instead
+ of system default. see [ruby-dev:42358].
+ [experimental]
- * ext/bigdecimal/bigdecimal.c (BigDecimalValueWithPrec): use
- cannot_be_coerced_into_BigDecimal function.
+Tue Oct 12 15:52:35 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): ditto.
+ * win32/win32.c (rb_w32_strerror): unmap some range of errno for
+ workaround of VC10's strerror() and sys_nerr problem.
+ based on a patch from Akio Tajima, [ruby-dev:42355].
- * ext/bigdecimal/bigdecimal.c (BigMath_s_log): ditto.
+Tue Oct 12 15:36:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * test/bigdecimal/test_bigdecimal.rb: test for the above changes.
+ * io.c (rb_io_ungetc): use unsigned int for GB18030.
- * test/bigdecimal/testbase.rb (under_gc_stress): add a new utility
- method to run tests under the condition of GC.stress = true.
+Tue Oct 12 15:14:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Aug 17 10:16:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * io.c (rb_io_putc): support multibyte characters.
+ [ruby-core:30697]
- * rational.c (nurat_coerce): Rational#coerce should converts itself
- into Complex if the argument is a Complex with non-zero imaginary
- part. [Bug #5020] [ruby-dev:44088]
+Tue Oct 12 15:10:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * test/ruby/test_rational.rb (test_coerce): test for the above change.
+ * numeric.c (rb_enc_uint_chr): split from int_chr.
-Wed Aug 17 06:33:19 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * numeric.c (int_chr): use rb_enc_uint_chr.
- * ext/openssl/ossl_x509cert.c: Add class documentation for
- OpenSSL::X509::Certificate.
+ * include/ruby/encoding.h (rb_enc_uint_chr): added.
-Wed Aug 17 04:54:25 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Tue Oct 12 14:04:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/openssl/ossl_pkey.c: corrected docs, OpenSSL::PKey::DH does
- *not* support #sign/verify.
+ * numeric.c (int_chr): a codepoint of Ruby M17N must be 32bit
+ unsigned int; GB18030 uses MSB. Also note that OnigCodePoint
+ is defined as unsigned int.
-Tue Aug 16 18:56:54 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Oct 12 12:20:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * vm.c (ruby_threadptr_data_type): rename to hide.
- [ruby-core:38972]
+ * vm_dump.c (dump_thread): foolish mistake.
-Tue Aug 16 18:52:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Oct 12 10:39:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * win32/mkexports.rb (Exports::Mswin#each_export): exclude Init_
- and _threadptr_ functions, as well as mingw.
+ * configure.in (RUBY_MINGW32): canonicalize only on mingw.
-Tue Aug 16 09:31:44 2011 Eric Hodel <drbrain@segment7.net>
+Mon Oct 11 20:20:23 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/dl: Add documentation. Patch by Vincent Batts.
- [Ruby 1.9 - Bug #5192]
+ * lib/net/http.rb (HTTP.get): specify ASCII-8BIT as the result
+ encoding of Zlib::GzipReader.
+ http://hibari.2ch.net/test/read.cgi/tech/1281473294/271
-Tue Aug 16 08:48:26 2011 Eric Hodel <drbrain@segment7.net>
+Mon Oct 11 17:42:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/.document (fiddle): Remove duplicate entry
- * ext/fiddle: Complete documentation of Fiddle. Patch by Vincent
- Batts. [#5192]
+ * error.c (syserr_initialize): use mesg's encoding when locale
+ encoding is US-ASCII. If locale encoding is not US-ASCII,
+ assume err has non ASCII characters. [ruby-dev:42358]
-Tue Aug 16 08:00:15 2011 Eric Hodel <drbrain@segment7.net>
+Mon Oct 11 14:03:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/socket: Make Socket documentation appear. Add documentation for
- Socket, TCPServer, SOCKSSocket. Patch by Sylvain Daubert.
- [Ruby 1.9 - Feature #5182]
+ * error.c (syserr_initialize): set the encoding of Errno::*#message
+ as locale. [ruby-dev:42358]
-Mon Aug 15 09:58:55 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Mon Oct 11 06:38:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/openssl/ossl_ssl.c: Support disabling OpenSSL compression.
+ * ext/stringio/stringio.c (strio_set_encoding):
+ StringIO#set_encoding can get 2nd argument and optional hash
+ for API compatibility to IO. [ruby-dev:42356]
- * test/openssl/test_ssl.rb: Add a test for it.
- Thanks to Eric Wong for the patch.
- [Ruby 1.9 - Feature #5183] [ruby-core:38911]
+Mon Oct 11 06:11:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sun Aug 14 05:57:01 2011 Tanaka Akira <akr@fsij.org>
+ * io.c (rb_io_set_encoding): use rb_funcall2 when the io is not
+ a T_FILE. [ruby-dev:42356]
- * test/socket/test_socket.rb (test_connect_timeout): added a test
- based on a patch by Eric Wong. [ruby-core:38910]
+Sun Oct 10 18:42:23 2010 Akinori MUSHA <knu@iDaemons.org>
-Sat Aug 13 22:17:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/set.rb (Set#replace): Apply a bit of optimization.
- * tool/mkconfig.rb: do not make the entries related to sitedir and
- verdordir if disabled by --without options. [ruby-core:38922]
- [Bug #5187]
+Sun Oct 10 10:20:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Aug 13 17:03:22 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * configure.in (RUBY_MINGW32): canonicalize as like mswin version.
- * ext/date/date_core.c: [ruby-core:38861]
+Sun Oct 10 05:33:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Aug 13 09:39:07 2011 Tadayoshi Funaba <tadf@dotrb.org>
+ * vm_core.h (rb_signal_buff_size, rb_signal_exec): moved
+ declarations from thread.c.
- * test/date/test_*.rb: added tests.
+Sat Oct 9 16:54:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Aug 13 09:36:19 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * configure.in (RSHIFT): quote to get rid of argument expansion
+ for autoconf 2.68.
- * ext/date/date_parse.c (parse_ddd_cb): fix r32896. RB_GC_GUARD
- insertion position was mistaken. [ruby-dev:44337] [Bug #5152]
+Sat Oct 9 11:00:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Aug 13 09:26:24 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * thread.c (thread_reset_event_flags, exec_event_hooks): ignore
+ hooks marked as removed.
- * ext/psych/lib/psych/core_ext.rb: Make Kernel#y private.
- [ruby-core:38913]
+ * thread.c (thread_exec_event_hooks): remove hooks to be removed.
- * test/psych/test_yaml.rb: corresponding test.
+ * thread.c (rb_threadptr_remove_event_hook, rb_remove_event_hook):
+ defer removing hooks if running the hooks. [ruby-dev:42350]
-Sat Aug 13 09:05:16 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Sat Oct 9 10:51:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/date/date_core.c (date_strftime_alloc): followed the change
- of r32885.
+ * thread.c (rb_threadptr_exec_event_hooks): suppress each event
+ hooks separately.
- * doc/NEWS-1.9.3: followed the above change.
+ * thread.c (thread_suppress_tracing): split from
+ ruby_suppress_tracing, accepting thread pointer and event mask.
-Sat Aug 13 08:55:38 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Sat Oct 9 08:16:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/psych/lib/psych/scalar_scanner.rb: Only consider strings
- with fewer than 2 dots to be numbers. [ruby-core:38915]
+ * thread.c (rb_threadptr_remove_event_hook): fix typo.
-Sat Aug 13 08:47:20 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Fri Oct 8 10:52:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/date/date_core.c: [ruby-core:38855].
+ * common.mk (RBCONFIG): depends on version.h due to
+ RUBY_PATCHLEVEL. [ruby-core:32709]
-Sat Aug 13 03:41:37 2011 Eric Hodel <drbrain@segment7.net>
+Fri Oct 8 00:24:54 2010 James Edward Gray II <jeg2@ruby-lang.org>
- * lib/uri/common.rb: Fix documentation of URI::Parser.new. Patch by
- Steve Klabnik. [Ruby 1.9 - Bug #5177]
+ * lib/csv.rb: Fixing documentation typos. [ruby-core:32712]
-Sat Aug 13 02:19:57 2011 Eric Hodel <drbrain@segment7.net>
+Thu Oct 7 09:14:28 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/digest/digest.c: Add documentation for the Digest module. Patch
- by Sylvain Daubert. [Ruby 1.9 - Bug #5167]
+ * vm_exec.c (vm_exec_core): Treat clang as non gcc on this
+ context: It has __asm__ but doesn't works well.
-Sat Aug 13 01:56:11 2011 Eric Hodel <drbrain@segment7.net>
+Wed Oct 6 12:28:22 2010 Tanaka Akira <akr@fsij.org>
- * lib/rake: Update to Rake 0.9.2.2. Prevent pollution of toplevel
- namespace by Commands. Remove unused variable and debugging
- statement in tests.
+ * lib/uri/generic.rb (URI::Generic#hostname): new method.
+ (URI::Generic#hostname=): ditto.
-Fri Aug 12 11:39:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * lib/open-uri.rb: use URI#hostname
- * configure.in: Describe "no" configure option for site_ruby
- and vendor_ruby. Patch by Vit Ondruch. [Bug #5187][ruby-core:38921]
+ * lib/net/http.rb: ditto.
-Fri Aug 12 09:00:24 2011 Eric Hodel <drbrain@segment7.net>
+ reported by Adam Majer. [ruby-core:32056]
- * lib/rubygems: Import RubyGems 1.8.8. Fixes encoding of YAML gemspec
- from gems. Github Issue #149
+Wed Oct 6 11:52:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Aug 12 08:17:46 2011 Tanaka Akira <akr@fsij.org>
+ * io.c (fptr_finalize): write_mutex might have been destroyed
+ already in finalization phase, as the order of finalizers is not
+ guaranteed. rb_mutex_t should be used in place of Mutex object
+ in the future.
- * ext/socket/ipsocket.c (init_inetsock_internal): use SOMAXCONN for
- listen backlog.
+Tue Oct 5 22:17:02 2010 wanabe <s.wanabe@gmail.com>
- * ext/socket/unixsocket.c (rsock_init_unixsock): ditto.
+ * win32/mkexports.rb: revert r29320 and r29402.
- * ext/socket/lib/socket.rb (Addrinfo#listen): ditto.
- (Socket.tcp_server_sockets_port0): ditto.
+Mon Oct 4 12:43:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/socket/mkconstants.rb: define SOMAXCONN as 5 if not available.
+ * parse.y (regexp): dregexp has literal string only at the head
+ and successors are array. [ruby-core:32682]
- [ruby-core:38493]
+Mon Oct 4 10:22:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Fri Aug 12 03:24:35 2011 Eric Hodel <drbrain@segment7.net>
+ * random.c (rand_init): This checks the value is in 32bit or not,
+ so use int32_t, not int.
- * lib/rdoc: Import RDoc 3.9.2. Fixes TIDYLINK for HTML output.
+Mon Oct 4 09:47:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Aug 11 15:37:42 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * random.c (rand_init): remove useless assignment.
- * variable.c (autoload_delete): An autoload entry is still in a
- RCLASS_IV_TBL, not in a RCLASS_CONST_TBL, so take back the table
- changed in r29600. And an autoload entry keeps not a
- rb_const_entry_t but a NODE so remove rb_const_entry_t thing added
- in r29602.
+ * re.c (update_char_offset): remove unused variable.
-Thu Aug 11 15:07:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * re.c (read_escaped_byte): ditto.
- * lib/mkmf.rb (link_command): use LIBRUBYARG in rbconfig for
- unbundled extensions. [ruby-core:38802] [Bug #5147]
+Mon Oct 4 09:30:42 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/mkmf.rb (init_mkmf): revert r32902. [ruby-core:38903]
+ * ext/openssl/lib/openssl/bn.rb (Integer#to_bn): OpenSSL::BN.new
+ accepts only Strings, so call Integer#to_s(16).
+ 16 is for an optimization. [ruby-dev:42336]
-Wed Aug 10 23:03:55 2011 Tanaka Akira <akr@fsij.org>
+Mon Oct 4 07:57:51 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/socket/lib/socket.rb: fix argument check in the previous commit.
+ * cont.c (fiber_memsize): Return size.
+ Before this change, fiber_memsize always returns 0.
-Wed Aug 10 22:12:28 2011 Tanaka Akira <akr@fsij.org>
+Mon Oct 4 07:16:55 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/socket/lib/socket.rb (Socket.tcp): add :connect_timeout option.
- (Addrinfo#connect_from): add :timeout option.
- (Addrinfo#connect): ditto.
- (Addrinfo#connect_to): ditto.
- [ruby-core:38538]
+ * enc/unicode.c (onigenc_unicode_property_name_to_ctype):
+ remove useless assignment.
-Wed Aug 10 21:27:19 2011 Tanaka Akira <akr@fsij.org>
+ * vm.c (vm_make_proc_from_block): ditto.
- * lib/net/pop.rb: fix typo in document.
+ * variable.c (rb_ivar_count): ditto.
- * lib/net/http.rb: ditto.
+Mon Oct 4 06:40:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/net/imap.rb: ditto.
+ * Makefile.in (clean-rdoc): Don't use \ in variable expansion.
+ BSD make treats it as an escape character.
-Wed Aug 10 19:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
+Mon Oct 4 00:01:53 2010 wanabe <s.wanabe@gmail.com>
- * complex.c (nucomp_rationalize): calls rationalize of real part if
- imaginary part is exactly zero. The patch is made by Marc-Andre
- Lafortune. fixes [Bug #5178] [ruby-core:38885]
+ * tool/config.sub: revert r29320, r29324, r29347, r29354, r29365
+ to automake-1.11.1. [ruby-core:32634]
- * test/ruby/test_complex.rb (test_rationalize): add a test for the
- above change.
+ * win32/mkexports.rb: no longer use 'mingw64'. a patch from Luis Lavena
+ at [ruby-core:32678].
- * complex.c (nucomp_to_r): fix RDoc comment. The patch is made by
- Marc-Andre Lafortune.
+Sun Oct 3 20:36:37 2010 Akio Tajima (arton) <artonx@yahoo.co.jp>
-Wed Aug 10 14:11:07 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/win32ole/test_folderitem2_invokeverb.rb: Change creating
+ shortcut verb to 'Link' [Bug #3339]
- * lib/mkmf.rb (init_mkmf): set $LIBRUBYARG regardless of shared
- option. [ruby-core:38802] [Bug #5147]
+Sun Oct 3 19:44:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Aug 10 02:53:27 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * configure.in (Makefile): get rid of duplicated ruby target when
+ already there it was.
- * lib/net/http.rb: come back autoload. OpenSSL constant is used
- some places, so it leads mistakes like HTTP.start.
+Sat Oct 2 22:59:32 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-Tue Aug 9 22:57:45 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * test/win32ole/test_thread.rb: add for win32ole with Thread.
- * ext/date/date_parse.c (date_zone_to_diff): add RB_GC_GUARD.
- [ruby-dev:44337] [Bug #5152]
+Fri Oct 1 17:03:00 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
- * ext/date/data_parse.c (parse_ddd_cb): ditto.
+ * test/webrick/test_httpproxy.rb (TestWEBrickHTTPProxy::test_upstream_proxy):
+ My machine fails this test at this line, saying 503 service unavailable.
-Tue Aug 9 14:25:47 2011 Naohisa Goto <ngotogenome@gmail.com>
+Thu Sep 30 16:11:08 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/fiddle/conversions.c (generic_to_value): ffi_arg and ffi_sarg
- should be used to handle shorter return value. fix [Bug #3861]
- [ruby-core:32504]
+ * win32/win32.c (rb_w32_getenv): should return NULL if specified name
+ is empty. a patch from Heesob Park at [ruby-core:32650]
- * ext/fiddle/closure.c (callback): ditto
+Thu Sep 30 15:18:23 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
- * ext/fiddle/conversions.h (fiddle_generic): ditto
+ * parse.y (command_asgn): allow command_call to be right hand side
+ expression of chained assignment. [ruby-dev:42313]
- * ext/fiddle/conversions.c (value_to_generic): char, short and int
- are strictly distinguished on big-endian CPU, e.g. sparc64.
+Thu Sep 30 10:55:38 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Tue Aug 9 11:21:08 2011 Narihiro Nakamura <authornari@gmail.com>
+ * hash.c (ruby_setenv): workaround for old Windows. a patch from
+ Heesob Park. [ruby-core:32353]
- * gc.c (gc_lazy_sweep): if sweep target slots are not found, we
- try heap_increment() because it might be able to expand the
- heap. [Bug #5127] [ruby-dev:44285]
+Thu Sep 30 09:29:06 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * gc.c (gc_clear_mark_on_sweep_slots): if a sweeping was
- interrupted, we expand the heap if at all possible.
+ * lib/uri/common.rb (URI.encode_www_form): change treatment of
+ undefined value in given array as latest internet draft for
+ application/www-form-urlencoded.
+ http://tools.ietf.org/html/draft-hoehrmann-urlencoded-01
-Tue Aug 9 12:20:33 2011 Naohisa Goto <ngotogenome@gmail.com>
+Thu Sep 30 09:34:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * test/fiddle/helper.rb (libc_so, libm_so): Solaris support added.
- [ruby-core:38853] [Bug #5168]
+ * vm_dump.c (dump_thread): fixed wrong type of return value of
+ SymGetModuleBase64(). [ruby-dev:42306]
- * test/dl/test_base.rb (libc_so, libm_so): on Solaris, remove libc
- and libm version numbers for detecting default libc and libm.
+Wed Sep 29 21:04:05 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-Tue Aug 9 09:18:04 2011 Eric Hodel <drbrain@segment7.net>
+ * test/ruby/test_rubyoptions.rb (TestRubyOptions::test_script_from_stdin):
+ As usual, PTY is not always available.
- * ext/zlib/zlib.c (gzfile_wrap): Document encoding options.
+Wed Sep 29 18:38:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/zlib/zlib.c (rb_gzwriter_s_open): ditto
+ * tool/config.sub (x64): regularize only for pc vendor, and strip
+ useless 64 suffix.
- * ext/zlib/zlib.c (rb_gzreader_s_open): ditto
+Wed Sep 29 17:53:02 2010 Kenta Murata <mrkn@mrkn.jp>
-Sun Aug 7 23:31:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/bigdecimal/bigdecimal.c (BIGDECIMAL_ENABLE_VPRINT):
+ VPrint is usually disabled. It's only used in debugging.
- * time.c (rb_strftime_alloc): raise ERANGE if width is too large.
- Patch by Nobuyoshi Nakada. [Bug #4457] [ruby-dev:43285]
+Wed Sep 29 17:41:34 2010 Kenta Murata <mrkn@mrkn.jp>
- * test/ruby/test_time.rb (class TestTime): add a test for the
- above change.
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_save_limit):
+ return the result of a block.
-Sun Aug 7 22:51:45 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/bigdecimal/test_bigdecimal.rb (test_save_limit):
+ add a test for the above change.
- * ext/openssl/ossl_asn1.c (decode_eoc): remove unused variables.
- Patch by Eric Wong. [Feature #5157] [ruby-core:38798]
+Wed Sep 29 16:18:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/openssl/ossl_asn1.c (ossl_asn1_decode): ditto.
+ * vm_dump.c (dump_thread): remove unused optional arguments.
- * ext/openssl/ossl_pkey.c (ossl_pkey_new_from_data): ditto.
+Wed Sep 29 13:26:30 2010 Kenta Murata <mrkn@mrkn.jp>
-Sun Aug 7 22:37:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_save_rounding_mode):
+ return the result of a block.
- * configure.in: add -Wunused-variable to default CFLAGS.
- Patch by Eric Wong. [Feature #5157] [ruby-core:38798]
+ * test/bigdecimal/test_bigdecimal.rb (test_save_rounding_mode):
+ add a test for the above change.
-Sun Aug 7 15:37:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * test/bigdecimal/test_bigdecimal.rb (test_save_exception_mode):
+ add a test for the return value of BigDecimal.save_exception_mode.
- * ext/digest/sha2/sha2ossl.c: use original SHA384_Final on DragonFly.
+Wed Sep 29 12:45:30 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Sun Aug 7 14:08:16 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_div2, BigDecimal_add2,
+ BigDecimal_sub2, BigDecimal_mult2, VpLimitRound): remove meaningless
+ casts to get rid of compiler warnings.
- * ext/objspace/objspace.c: fix typos in a document.
+Wed Sep 29 12:35:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Aug 7 07:14:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * ext/bigdecimal/bigdecimal.c (VPrint, VpToString): fix format.
- * cont.c (HAVE_GETCONTEXT): see getcontext(3) because DragonFly BSD
- x64 port doesn't have it.
+Wed Sep 29 12:31:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Aug 7 00:42:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/rdoc/known_classes.rb (RDoc::KNOWN_CLASSES): add Encoding.
- * ext/tk/lib/tk/wm.rb (Tk::Wm.command): Add the missing receiver
- before calling epath. patched by flori
- https://github.com/flori/ruby/commit/aa9474d32e5f2c57f8b0e2e0c528a03f06a4d433
+Tue Sep 28 20:50:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Aug 6 07:06:34 2011 Eric Hodel <drbrain@segment7.net>
+ * tool/config.sub (x64): regularize same as mswin.
- * marshal.c (w_object): Fix exception message when _dump_data is not
- defined on a T_DATA object.
+Tue Sep 28 20:06:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Fri Aug 5 22:16:20 2011 Naohisa Goto <ngotogenome@gmail.com>
+ * vm_dump.c (rb_vm_bugreport): add windows support.
+ based on patches from Peter Weldon at [ruby-core:32551]
- * numeric.c (rb_infinity, rb_nan): use WORDS_BIGENDIAN to get endian.
- fix [Bug #5160] [ruby-dev:44356]
+Mon Sep 27 23:30:34 2010 Koichi Sasada <ko1@atdot.net>
-Fri Aug 5 17:14:11 2011 Akinori MUSHA <knu@iDaemons.org>
+ * insns.def (opt_case_dispatch), vm_insnhelper.c:
+ execute the procedures of "when" clauses by bytecode
+ instead of st_foreach() when the object does not hit
+ prepared hash. [ruby-dev:42304]
- * test/test_syslog.rb (TestSyslog#test_log): Do not be too
- specific about the log line format. Fixes #5081.
+Mon Sep 27 15:54:03 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-Fri Aug 5 15:57:10 2011 Naohisa Goto <ngotogenome@gmail.com>
+ * test/net/http/test_https.rb: As always, localhost is not
+ guaranteed to be resolved as 127.0.0.1. But a SSL
+ certificate needs a socket to listen on a specific address
+ where a CN resolves to. On situations where localhost is
+ not 127.0.0.1, these tests are not possible.
- * complex.c (f_signbit): fix compile error in gcc4 on Solaris with
- CFLAGS="-std=gnu99". [ruby-dev:44355] fix [Bug #5159]
+Mon Sep 27 15:25:05 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
- * math.c: ditto.
+ * test/net/imap/test_imap.rb: resurrection of r29259.
+ this change depends on minitest 1.7.1.
-Fri Aug 5 15:55:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/test/unit/assertions.rb: ditto.
- * test/ruby/test_object.rb: tests that respond_to? returns false.
+Sun Sep 26 22:59:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Aug 5 13:32:43 2011 Shugo Maeda <shugo@ruby-lang.org>
+ * tool/config.sub (x86_64-pc-mingw64): regularize.
- * lib/xmlrpc/client.rb, lib/xmlrpc/server.rb: should use
- String#bytesize instead of String#size.
+Sun Sep 26 22:21:07 2010 wanabe <s.wanabe@gmail.com>
-Fri Aug 5 12:18:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/openssl/ossl_hmac.c (ossl_hmac_hexdigest, ossl_hmac_s_hexdigest),
+ ext/openssl/ossl_pkey_ec.c (ossl_ec_group_set_seed),
+ ext/openssl/ossl_ssl_session.c (ossl_ssl_session_to_der),
+ ext/openssl/ossl_pkcs7.c (numberof): suppress warnings.
+ [ruby-core:31932]
- * vm_eval.c (check_funcall): try respond_to? first if redefined.
- [Bug #5158]
+Sun Sep 26 10:25:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Aug 5 09:48:22 2011 Eric Hodel <drbrain@segment7.net>
+ * tool/config.{guess,sub}: updated to automake-1.11.1.
- * lib/rubygems: Import RubyGems 1.8.7:
- Added missing require for `gem uninstall --format-executable`.
+Sat Sep 25 22:48:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- The correct name of the executable being uninstalled is now displayed
- with --format-executable.
+ * configure.in (LIBRUBY_DLDFLAGS): fix quoting.
- Fixed `gem unpack uninstalled_gem` default version picker.
+Sat Sep 25 10:30:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- RubyGems no longer claims a nonexistent gem can be uninstalled.
+ * configure.in (LIBRUBY_DLDFLAGS): use -unexported_symbol only
+ when available. http://trac.macports.org/ticket/26341
- `gem which` no longer claims directories are requirable files.
+Sat Sep 25 10:05:49 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- `gem cleanup` continues cleaning up gems if one can't be uninstalled
- due to permissions. Issue #82.
+ * configure.in: Always add -mieee for Renesas SH4.
+ Thanks, Nobuhiro Iwamatsu. [Feature #3874] [ruby-core:32548]
- Gem repository directories are no longer created world-writable.
- Patch by Sakuro OZAWA. [Ruby 1.9 - Bug #4930]
+Sat Sep 25 01:34:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Aug 5 07:00:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * Makefile.in (install-cross): target to install cross-compiling
+ stuff.
- * test/io/console/test_io_console.rb (test_noctty): daemon() on
- Fedora Rawhide seems not to detach the controlling terminal,
- when the argument noclose is non-zero. ref: [Bug #5135]
+Fri Sep 24 23:44:59 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Aug 4 23:48:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * string.c (sym_call), vm.c (invoke_block_from_c),
+ vm_insnhelper.c (vm_yield_with_cfunc): pass given block.
+ [ruby-core:32075]
- * thread_pthread.c (native_cond_signal): retry to call pthread_cond_signal
- and pthread_cond_broadcast if they return EAGAIN in
- native_cond_signal and native_cond_broadcast, respectively.
- It is for the pthread implementation of Mac OS X 10.7 (Lion).
- fixes #5155. [ruby-dev:44342].
+ * vm_eval.c (rb_funcall_passing_block): new function to call
+ method with passing given block.
- * thread_pthread.c (native_cond_broadcast): ditto.
+Fri Sep 24 15:50:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * thread_pthread.c (struct cached_thread_entry): stop using
- pthread_cond_t and its functions directly.
+ * string.c (rb_str_to_i): fix rdoc: String#to_i raises an
+ exception when base is invalid. [ruby-core:31685]
- * thread_pthread.c (register_cached_thread_and_wait): ditto.
+Fri Sep 24 15:28:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * thread_pthread.c (use_cached_thread): ditto.
+ * string.c (rb_str_rindex): use rb_enc_prev_char instead of repeated
+ str_nth.
+ patched by Michael Selig [ruby-core:32498]
-Thu Aug 4 20:29:41 2011 Naohisa Goto <ngotogenome@gmail.com>
+Fri Sep 24 14:19:12 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
- * configure.in: when Solaris cc, use $(CC) to link shared libs.
+ * test/test_pty.rb: Same as 229281; existence of PTY class do not
+ guarantee a successful pty operation.
-Thu Aug 4 20:19:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Fri Sep 24 06:25:55 2010 Ryan Davis <ryand-ruby@zenspider.com>
- * error.c (report_bug): use a small message buffer instead of BUFSIZ.
- It is needed for avoiding nested SIGSEGV on Linux.
- Note: BUFSIZ is not proper buffer size. It's unrelated with maximum
- filename length. :-/
- [Bug #5139] [ruby-dev:44315]
+ * lib/minitest/*.rb: Imported minitest 1.7.2 r5879.
+ * test/minitest/*.rb: ditto.
-Thu Aug 4 16:08:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Sep 23 23:09:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * tool/rbinstall.rb (gem): install all gemspecs under lib and ext.
+ * vm_insnhelper.c (vm_get_cref0): cref is stacked only in normal
+ iseqs, so check if it is the case first.
- * tool/rbinstall.rb (Gem::Specification): may not be defined when
- cross-compiling and BASERUBY is 1.8.
+Thu Sep 23 23:08:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Aug 4 11:30:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * tool/config.sub: mingw64 should use x86_64. [ruby-core:32514]
- * include/ruby/missing.h: define __syscall on OpenBSD as r32702.
+Thu Sep 23 21:40:40 2010 wanabe <s.wanabe@gmail.com>
-Thu Aug 4 03:02:54 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * ext/socket/raddrinfo.c (init_addrinfo, inspect_sockaddr): suppress
+ warnings. see [ruby-core:31932].
- * tool/rbinstall.rb: use rubygems to load gemspecs, copy actual
- gemspecs on install rather than generate fake ones for all gems.
+Thu Sep 23 19:27:57 2010 wanabe <s.wanabe@gmail.com>
-Thu Aug 4 02:45:10 2011 Kenta Murata <mrkn@mrkn.jp>
+ * thread_win32.c (w32_wait_events, w32_close_handle): suppress warnings.
+ see [ruby-core:31932].
- * configure.in: set CXX variable to the C++ compiler that matches the
- C compiler specified by CC variable (e.g. use g++-4.2 for gcc-4.2).
+Thu Sep 23 18:54:39 2010 wanabe <s.wanabe@gmail.com>
-Thu Aug 4 02:21:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * tool/config.sub: add mingw64.
- * lib/mkmf.rb (link_command): use static library only for bundled
- extensions. [Bug #5147]
+ * win32/mkexports.rb (Exports::Mingw64): added.
-Thu Aug 4 02:02:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+ * win32/mkexports.rb (Exports::Mingw32): renamed from Exports::Mingw.
- * ext/psych/psych.gemspec: installing psych as a gem.
+Thu Sep 23 09:01:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Aug 3 16:01:35 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * vm_insnhelper.c (vm_cref_push): no outer cref is needed for proc
+ from method. Bug #3786, Bug #3860, [ruby-core:32501]
- * util.c, include/ruby/util.h (ruby_add_suffix): remove the function.
- [Bug #5153] [ruby-core:38736]
+Wed Sep 22 17:12:01 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * io.c (argf_next_argv): remove the call of above function.
+ * test/openssl/utils.rb (OpenSSL#silent): always restore $VERBOSE.
+ [ruby-dev:42285]
- * ext/-test-/add_suffix, test/-ext-/test_add_suffix.rb: remove the test
- extension module because this is only for testing ruby_add_suffix().
+Wed Sep 22 16:59:40 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
- * LEGAL: remove the mention about a part of util.c, because now we
- removed the part.
+ * test/test_prime.rb (TestPrime#test_new): the warning expected have
+ not been displayed when $VERBOSE == nil. Patch by Shota Fukumori
+ a.k.a. sora_h. [ruby-dev:42272]
+ Recovers $stderr even if StringIO.new fails. Reported by unak.
- * io.c (argf_next_argv): now the new filename is not guaranteed to
- use, so should check the return value of rename(2).
+Wed Sep 22 01:55:48 2010 Koichi Sasada <ko1@atdot.net>
- * test/ruby/test_argf.rb (TestArgf#test_inplace_rename_impossible):
- now we expect same result with other platforms on no_safe_rename
- platforms (=Windows).
+ * bootstraptest/test_method.rb: fix last commit.
-Wed Aug 3 09:18:08 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+Wed Sep 22 01:49:52 2010 Koichi Sasada <ko1@atdot.net>
- * test/xmlrpc/webrick_testing.rb (WEBrick_Testing#start_server):
- Like r32795, bind address should be specified.
+ * bootstraptest/test_method.rb: add a test for [ruby-core:30534].
-Wed Aug 3 07:46:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Wed Sep 22 00:52:44 2010 WATANABE Hirofumi <eban@ruby-lang.org>
- * encoding.c (enc_find): mistakenly remained !. [Bug #5150]
+ * lib/rdoc/ri/store.rb (save_cache): remove duplicate entries.
-Wed Aug 3 00:11:08 2011 Tanaka Akira <akr@fsij.org>
+Wed Sep 22 00:00:05 2010 Tanaka Akira <akr@fsij.org>
- * lib/prettyprint.rb: update document. [ruby-core:36776]
+ * ext/pathname/pathname.c (path_f_pathname): Pathname() translated
+ from pathname.rb.
-Tue Aug 2 22:04:46 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Tue Sep 21 22:18:30 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * gc.c (init_heap): allocate sigaltstack after heaps are allocated.
- [ruby-dev:44315] [Bug #5139]
+ * tool/mkconfig.rb: fixed build problem on mswin64 introduced in r29278.
- * vm.c (thread_free): use free because objspace is not ready.
+Tue Sep 21 02:42:35 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
- * vm.c (th_init): use malloc because objspace is not ready.
+ * test/pathname/test_pathname.rb (TestPathname#test_mkdir): fix typo.
-Tue Aug 2 20:10:16 2011 Shota Fukumori <sorah@tubusu.net>
+Mon Sep 20 23:23:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/testunit/test_parallel.rb: pass "--ruby" option to
- test/testunit/tests_for_parallel/runner.rb. [Bug #5132] [ruby-dev:44303]
+ * dir.c (bracket): get rid of scanning at the end of the pattern
+ string, not to raise an exception while globbing command line.
+ [ruby-core:32478]
-Tue Aug 2 15:53:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Sep 20 11:25:49 2010 Tanaka Akira <akr@fsij.org>
- * encoding.c (str_to_encoding): rename from to_encoding and
- use str_to_encindex.
+ * ext/pathname/pathname.c (Init_pathname): Pathname#=~ undefinition
+ translated from pathname.rb.
- * encoding.c (str_to_encindex): split from to_encoding.
+Mon Sep 20 02:34:11 2010 Kenta Murata <mrkn@mrkn.jp>
- * encoding.c (rb_to_encoding): use str_to_encoding.
+ * ext/bigdecimal/bigdecimal.c (check_rounding_mode, BigDecimal_mode):
+ raise ArgumentError instead of TypeError passing invalid modes.
- * encoding.c (rb_obj_encoding): don't bypass rb_encoding*.
- If it uses rb_encoding*, it bypass encindex. If it uses encindex,
- it doesn't bypass.
+ * test/bigdecimal/test_bigdecimal.rb (test_mode, test_round):
+ change against the above modifications.
- * encoding.c (enc_find): add shortcut for encoding object, use
- str_to_encindex, and avoid bypass rb_encoding*.
+Sun Sep 19 22:08:39 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-Tue Aug 2 12:03:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * lib/mkmf.rb (try_link): rdoc
+ (try_compile): ditto
+ (try_cpp): ditto
+ (try_func): ditto
+ (try_var): ditto
+ (try_run): ditto
+ (egrep_cpp): ditto
- * hash.c (recursive_hash): hash value of emptied hash should be
- equal to an empty hash. [ruby-core:38650]
+Sun Sep 19 20:43:33 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-Tue Aug 2 11:42:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * configure.in (--disable-install-doc): disables capi too, in addition
+ to rdoc.
+ (--disable-install-rdoc): a new option for disabling only rdoc.
+ (--disable-install-capi): a new option for disabling only capi.
- * parse.y (rb_enc_symname2_p): :! is valid symbol. [Bug #5136]
+Sun Sep 19 20:37:45 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-Tue Aug 2 07:33:29 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * common.mk (clean): removes all documents on cleaning.o
+ (CAPIOUT): new variable.
+ (clean-capi, distclean-capi, realclean-capi): new targets
- * test/net/http/test_http.rb (TestNetHTTP_version_1_1_methods#test_timeout_during_HTTP_session):
- If you connect to localhost, you should listen localhost.
+ * Makefile.in (clean-capi, distclean-capi, realclean-capi): ditto.
- * test/net/http/test_https.rb (TestNetHTTPS#test_timeout_during_SSL_handshake):
+ * win32/Makefile.sub (clean-capi, distclean-capi, realclean-capi):
ditto.
-Tue Aug 2 06:18:15 2011 Luis Lavena <luislavena@gmail.com>
+Sun Sep 19 13:44:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/rubygems/installer.rb (class Gem): Correct path check on Windows
- Possible fix for [Ruby 1.9 - Bug #5111]
- * test/rubygems/test_gem_installer.rb (load Gem): ditto
+ * configure.in (LIBRUBY_SO): fix an oversight of replace
+ RUBY_INSTALL_NAME with RUBY_SO_NAME. a patch from Jeremy Evans
+ at [ruby-core:32474].
-Mon Aug 1 20:12:03 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Sun Sep 19 07:48:20 2010 Tanaka Akira <akr@fsij.org>
- * test/ruby/test_process.rb (TestProcess#windows?): new method.
+ * ext/pathname/pathname.c (path_unlink): Pathname#unlink and
+ Pathname#delete translated from pathname.rb.
- * test/ruby/test_process.rb (TestProcess#*): use above method.
+Sun Sep 19 06:06:07 2010 Kenta Murata <mrkn@mrkn.jp>
- * test/ruby/test_process.rb (TestProcess#test_execopts_redirect):
- windows doesn't support FD_CLOEXEC.
+ * ext/bigdecimal/bigdecimal.c (check_rounding_mode): added for
+ converting symbol to rounding mode number.
-Mon Aug 1 15:45:23 2011 Eric Hodel <drbrain@segment7.net>
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_mode, BigDecimal_round):
+ support to specify rounding mode by symbol.
- * test/rake/test_rake_functional.rb: Don't assume the binary name of
- ruby is "ruby". [Ruby 1.9 - Bug #5114]
- * test/rake/helper.rb: ditto
+ * test/bigdecimal/test_bigdecimal.rb (test_mode, test_round):
+ add tests for above changes.
-Mon Aug 1 15:31:14 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+Sun Sep 19 05:14:35 2010 Kenta Murata <mrkn@mrkn.jp>
- * test/io/console/test_io_console.rb (TestIO_Console#test_sync):
- Skip when PTY allocation failed (that's not our fault).
+ * ext/bigdecimal/bigdecimal.c: fix rounding algorithms for half-down
+ and half-even. This change is based on the patch created by Matthew
+ Willson, the reporter of this bug. [Bug #3803] [ruby-core:32136]
-Mon Aug 1 15:04:12 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
+ * test/bigdecimal/test_bigdecimal.rb: add tests for above changes.
- * test/xmlrpc/test_webrick_server.rb (Test_Webrick#setup_http_server):
- XMLRPC::Client.new3(), when called without host: argument, tries
- to connect to a host where "localhost" resolves to. On the
- other hand a WEBrick::HTTPServer.new(), when called without
- BindAddress: argument, tries to listen all the address where
- getaddrinfo(AF_UNSPEC) resolves to. This is a mismatch because
- "localhost" might not resolve to one of those listening sockets.
- We would better explicitly specify "localhost" here and if
- failed, just skip the whole test.
+Sat Sep 18 20:09:51 2010 Tanaka Akira <akr@fsij.org>
-Mon Aug 1 14:24:56 2011 Eric Hodel <drbrain@segment7.net>
+ * ext/pathname/pathname.c (path_each_entry): Pathname#each_entry
+ translated from pathname.rb.
- * lib/rdoc.rb: Import RDoc 3.9.1. Fixes bugs in the RDoc::Markup
- parser.
+Fri Sep 17 23:44:07 2010 Kouhei Sutou <kou@cozmixng.org>
-Mon Aug 1 12:00:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/rexml/xpath_parser.rb, test/rexml/test_xpath.rb:
+ add missing method availability check. [ruby-core:32447]
+ Reported by Wiebe Cazemier. Thanks!!!
- * insns.def (concatstrings): don't use initial ASCII-8BIT string.
- [ruby-core:38635] [Bug #5126]
+Fri Sep 17 23:23:26 2010 Kouhei Sutou <kou@cozmixng.org>
-Sun Jul 31 22:57:16 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+ * test/rexml/test_sax.rb: don't use thread and sleep to avoid slow test.
- * enc/Makefile.in (ECHO1): Same as the recent fix in common.mk.
- ":" in a make variable replacement cause a syntax error with
- /usr/ccs/bin/make on Solaris. Uses $(NULLCMD) instead.
+Fri Sep 17 23:10:44 2010 Kouhei Sutou <kou@cozmixng.org>
-Sun Jul 31 21:16:02 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+ * test/rexml/test_core.rb: enable.
- * complex.c (f_signbit): gcc4 on Solaris DOES have signbit but does
- not have it on header.
+Fri Sep 17 22:46:02 2010 Kouhei Sutou <kou@cozmixng.org>
- * math.c: ditto.
+ * test/rexml/: untabify.
-Sun Jul 31 21:09:04 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+Fri Sep 17 22:29:56 2010 Kouhei Sutou <kou@cozmixng.org>
- * common.mk (node_name.inc): Use $(Q) for consistency.
+ * test/rexml/: fix fixture data path. All REXML tests are worked.
- * Makefile.in (INSNS): ditto.
+Fri Sep 17 22:15:15 2010 Kouhei Sutou <kou@cozmixng.org>
-Sun Jul 31 21:19:51 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+ * test/rexml/test_listener.rb: remove needless codes.
- * lib/mkmf.rb (configuration:ECHO1): Same as the recent fix in
- common.mk.
- ":" in a make variable replacement cause a syntax error with
- /usr/ccs/bin/make on Solaris. Uses $(NULLCMD) instead.
-
-Sun Jul 31 20:39:12 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * common.mk (ECHO1): nmake does not allow parenthesis in make variable
- replacement.
-
-Sun Jul 31 23:06:57 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+Fri Sep 17 22:12:23 2010 Kouhei Sutou <kou@cozmixng.org>
- * vm.c (check_env): print debug messages to stderr.
- [Feature #4871] [ruby-dev:43743]
+ * test/rexml/: import REXML tests from
+ http://www.germane-software.com/repos/rexml/trunk/test/.
+ Many tests are failed temporary. I'll fix them quickly. Sorry.
-Sun Jul 31 22:50:23 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+Fri Sep 17 16:48:49 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
- * vm.c (vm_make_env_each): don't save prev env value.
- It is no longer used. [Feature #4871] [ruby-dev:43743]
+ * test/io/console/test_io_console.rb (TestIO_Console::helper):
+ PTY.open is not guaranteed to work. On my machine opening a
+ pty is prohibited via process control group. On those cases
+ exceptions shall occur, and that doesn't mean our fault.
+ Skip those tests on such situations.
- * vm.c (check_env): changed accordingly.
+Fri Sep 17 08:30:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Jul 31 20:21:36 2011 "Yuki Sonoda (Yugui)" <yugui@yugui.jp>
-
- * common.mk (ECHO1): ":" in a make variable replacement cause a syntax
- error with /usr/ccs/bin/make on Solaris. Uses $(NULLCMD) instead.
+ * lib/tracer.rb: count only non-internal libraries in stack trace,
+ ignoring custom_require. [ruby-core:31858]
- * configure.in (NULLCMD): new check.
-
- * Makefile.in (NULLCMD): Reflects checking in configure.
+Fri Sep 17 02:18:41 2010 Akinori MUSHA <knu@iDaemons.org>
- * win32/Makefile.sub (NULLCMD): new assignment.
+ * tool/mkconfig.rb: Fix build with m4 1.4.15 generating duplicate
+ lines in config.status. According to nobu, the mswin32 port may
+ depend on the piece of code in question, so the behavior is left
+ unchanged on mswin32.
-Sun Jul 31 18:58:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Thu Sep 16 23:47:59 2010 Tanaka Akira <akr@fsij.org>
- * io.c (rb_pipe): pipe on cygwin can succeed half but fail
- half.
+ * ext/pathname/pathname.c (path_opendir): Pathname#opendir translated
+ from pathname.rb.
-Sun Jul 31 11:31:07 2011 Kazuki Tsujimoto <kazuki@callcc.net>
+Thu Sep 16 21:40:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm.c: check if cfp is valid. [Bug #5083] [ruby-dev:44208]
+ * lib/test/unit.rb (Test::Unit::GlobOption): merged RejectOption.
-Sun Jul 31 09:18:28 2011 Eric Hodel <drbrain@segment7.net>
+ * test/runner.rb: utilize GlobOption.
- * lib/rdoc: Update to RDoc 3.9. Fixed `ri []`, stopdoc creating an
- object reference, nodoc for class aliases, verbatim === lines.
+Thu Sep 16 21:31:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sun Jul 31 01:29:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/rdoc/ri/driver.rb (RDoc::RI::Driver.setup_options)
+ (RDoc::RI::Driver.fixup_options): split from process_args.
+ libraries should not parse ARGV inside, since it's a task of
+ applications, not libraries.
- * io.c (rb_io_each_byte): remove unused variable e.
+Thu Sep 16 21:02:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Jul 31 01:23:45 2011 Kenta Murata <mrkn@mrkn.jp>
+ * lib/rdoc/ri/paths.rb (RDoc::RI::Paths.each): HOMEDIR can be nil
+ if $HOME is unset.
- * test/bigdecimal/test_bigdecimal.rb (test_version): removed.
+Thu Sep 16 14:50:42 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-Sat Jul 30 23:19:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * test/ruby/test_file_exhaustive.rb (TestFileExhaustive::test_expand_path):
+ ENV["HOME"] might not be set. On those cases without it an
+ exception raises here, which effectively disables later
+ tests on this method.
- * defs/default_gems: separate from tool/rbinstall.rb.
+Thu Sep 16 08:30:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Jul 30 23:14:44 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * sprintf.c (rb_f_sprintf): fix rdoc. pointed out by Tomoyuki
+ Chikanaga at [ruby-core:32395], and a patch from Daniel
+ Bovensiepen at [ruby-core:32403].
- * io.c (rb_io_each_byte): rbuf can be refreshed during yield.
- [Bug #5119]
+Thu Sep 16 08:27:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Jul 30 22:35:50 2011 Naohisa Goto <ngotogenome@gmail.com>
+ * ext/etc/extconf.rb: use expanded sysconfdir with empty DESTDIR.
+ [ruby-core:32394]
- * strftime.c (NEEDS): avoid SEGV due to integer overflow in
- sparc-solaris2.10 and i686-linux. fix [Bug #4456] [ruby-dev:43284]
+Thu Sep 16 06:07:24 2010 Tanaka Akira <akr@fsij.org>
-Sat Jul 30 17:26:26 2011 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+ * ext/pathname/pathname.c (path_rmdir): Pathname#rmdir translated
+ from pathname.rb.
- * test/win32ole/test_win32ole_variant.rb: use skip method to skip the test.
+Thu Sep 16 00:36:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * test/win32ole/test_win32ole_variant_outarg.rb: ditto.
+ * ext/readline/extconf.rb: Remove Readline 6 check because
+ Ruby's license is now GPLv3 compatible. [ruby-core:28736]
-Sat Jul 30 14:27:00 2011 Kenta Murata <mrkn@mrkn.jp>
+Thu Sep 16 00:26:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/bigdecimal/bigdecimal.c (BigDecimal_version): version 1.1.0.
+ * COPYING: change Ruby's License from a dual license with GPLv2
+ to a dual license with 2-clause BSDL.
+ [ruby-dev:42166] [ruby-core:31971]
+ [ruby-dev:39167] [ruby-core:25272]
- * ext/bigdecimal/bigdecimal.gemspec: turn into a default gem.
+ * COPYING.ja: ditto.
- * tool/rbinstall.rb: ditto.
+ * BSDL: added. this is from The FreeBSD License.
-Sat Jul 30 11:21:55 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * vm_core.h (ALT_STACK_SIZE): use MINSIGSTKSZ*2 instead of SIGSTKSZ*2.
- [ruby-core:38607]
-
-Sat Jul 30 10:39:14 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * vm.c (th_init): preallocate alternative stack.
- NoMemoryError is better than rb_bug, of course.
- Patch by Eric Wong. [ruby-core:38572][ruby-core:38594].
-
- * signal.c (rb_register_sigaltstack): ditto.
-
- * vm_core.h: moved ALT_STACK_SIZE definition from signal.c.
- * vm.c (thread_free): use xfree() instead of free().
-
-Sat Jul 30 07:20:49 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/lib/socket.rb (udp_server_sockets): unused variable
- removed.
- patch by Jeremy Evans. [ruby-core:38600]
-
-Fri Jul 29 23:56:32 2011 Tanaka Akira <akr@fsij.org>
-
- * lib/securerandom.rb: call OpenSSL::Random.seed at the
- SecureRandom.random_bytes call.
- based on the patch by Masahiro Tomita. [ruby-dev:44270]
-
-Fri Jul 29 23:53:48 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c (rb_ary_set_len): new function to set array length.
-
- * vm_eval.c (method_missing): set the length of argv array, to mark
- arguments.
-
- * vm_eval.c (rb_apply): get rid of too large alloca.
-
-Fri Jul 29 20:48:39 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/mkconstants.rb: fix typos.
+Wed Sep 15 21:07:06 2010 Tanaka Akira <akr@fsij.org>
-Fri Jul 29 20:28:56 2011 Tanaka Akira <akr@fsij.org>
+ * ext/pathname/pathname.c (path_mkdir): Pathname#mkdir translated
+ from pathname.rb.
- * ext/socket/mkconstants.rb: use whitespaces as a separator.
+Wed Sep 15 13:37:00 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-Fri Jul 29 18:59:07 2011 Tanaka Akira <akr@fsij.org>
+ * test/net/imap/test_imap.rb: "localhost" not guaranteed to
+ resolve to "127.0.0.1". On my machine it is "::1" instead.
+ The problem is, you have to connect to the imaps server via
+ the canonical name written in a server certificate, and that
+ of the server.cert is "localhost". So you have to listen to
+ the address of what "localhost" resolves to. I think this
+ situation cannot be resolved in a handy manner because the
+ test "test_imaps_post_connection_check" is actually
+ expecting to connect to a server via an address other than
+ the CN. On my machine several assertions won't pass because
+ the test cannot connect to the server.
- * ext/socket/mkconstants.rb: add documents for constants.
- patch by Eric Hodel. [ruby-core:37853] [Bug #4989]
+Wed Sep 15 09:12:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jul 29 16:00:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * io.c (rb_io_puts): fix for wide char encoding strings.
+ [ruby-dev:42212]
- * configure.in (enable_pthread): use -pthread on OpenBSD without
- explicit option. patched by Jeremy Evans. [ruby-core:38572]
+Wed Sep 15 07:27:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Jul 28 23:36:28 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+ * string.c (rb_str_format_m): mentioned about Hash argument. a patch
+ from Daniel Bovensiepen at [ruby-core:32386].
- * ext/fiddle/closure.c (callback): use rb_ary_tmp_new() instead of
- xmalloc() to allocate an array for arguments of callback procedure,
- to prevent arguments from being swept by GC. [ruby-core:38546]
- [Bug #4929]
+ * sprintf.c (get_hash): ditto, and fix typo.
-Thu Jul 28 22:36:06 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Wed Sep 15 07:22:20 2010 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl_cipher.c (ossl_cipher_initialize): Avoid possible
- SEGV from AES encryption/decryption. Processing data by
- Cipher#update without initializing key (meaningless usage of Cipher
- object since we don't offer a way to export a key) could cause SEGV.
+ * ext/pathname/pathname.c (path_entries): Pathname#entries translated
+ from pathname.rb.
- In OpenSSL, the EVP which has EVP_CIPH_RAND_KEY flag (such as DES3)
- allows uninitialized key, but other EVPs (such as AES) does not
- allow it. Calling EVP_CipherUpdate() without initializing key causes
- SEGV so we set the data filled with "\0" as the key by default. See
- #2768.
+Wed Sep 15 02:13:44 2010 Aaron Patterson <aaron@tenderlovemaking.com>
- * test/openssl/test_cipher.rb: test it.
+ * ext/fiddle/closure.c : Don't use FFI closure alloc on OpenBSD.
+ Thanks Jeremy Evans! [ruby-core:32384]
-Thu Jul 28 14:25:08 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Tue Sep 14 20:17:48 2010 Tanaka Akira <akr@fsij.org>
- * lib/rubygems/user_interaction.rb (Gem::StreamUI#tty?): typo.
+ * ext/pathname/pathname.c (path_s_getwd): Pathname.getwd and
+ Pathname.pwd translated from pathname.rb.
-Thu Jul 28 12:32:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Sep 14 05:13:04 2010 Tanaka Akira <akr@fsij.org>
- * ext/dl/callback/mkcallback.rb (gencallback): use PTR2NUM.
+ * ext/pathname/pathname.c (path_s_glob): Pathname.glob translated
+ from pathname.rb.
- * ext/dl/cptr.c (rb_dlptr_aref, rb_dlptr_aset): check NULL pointer
- dereference.
+Tue Sep 14 01:24:51 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
- * ext/dl/cptr.c (rb_dlptr_s_to_ptr): use rb_check_funcall.
+ * ext/socket/raddrinfo.c (ruby_getaddrinfo__aix): suppress a
+ warning.
- * ext/dl/cptr.c (rb_dlptr_s_to_ptr): fix wrapping condition.
+Mon Sep 13 20:48:30 2010 Tanaka Akira <akr@fsij.org>
-Thu Jul 28 04:53:31 2011 Eric Hodel <drbrain@segment7.net>
+ * ext/pathname/pathname.c (path_zero_p): Pathname#zero? translated
+ from pathname.rb.
- * lib/delegate.rb: Move file-level documentation to the appropriate
- classes.
+Mon Sep 13 19:56:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Jul 28 02:15:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/socket/rubysocket.h (__DARWIN_ALIGNBYTES): workaround of a
+ bug in system header of darwin 9. [ruby-core:32341]
- * ext/dl/cfunc.c (dlcfunc_mark), ext/dl/cptr.c (dlptr_mark):
- workaround to mark wrapped object. this is not a true fix,
- because [Bug #4929] is caused by the interface design of DL.
+Mon Sep 13 18:11:55 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Thu Jul 28 00:28:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * lib/mkmf.rb (try_do): fix typo. a patch from Peter Weldon
+ at [ruby-core:32327].
- * test/fileutils/test_fileutils.rb: add OpenBSD case.
- patched by Jeremy Evans [ruby-core:38530] see #5097
+Mon Sep 13 10:12:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * test/ruby/test_process.rb: ditto.
+ * util.c (ruby_strtod): reject Float('0x0.').
+ [ruby-dev:42239] Bug #3820
-Wed Jul 27 22:46:59 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
+Mon Sep 13 09:23:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * test/rinda/test_rinda.rb (test_remote_array_and_hash):
- add local variables to protect objects from GC. [ruby-dev:44253]
- [Bug #5104]
+ * ext/openssl/ossl_bn.c (ossl_bn_is_prime): fix comparison
+ with rb_scan_args. Before this fix, OpenSSL::BN#prime?
+ is fully broken. [ruby-dev:42225]
-Wed Jul 27 17:55:54 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Sep 13 06:45:24 2010 Tanaka Akira <akr@fsij.org>
- * include/ruby/missing.h: define __syscall if the platform has
- __syscall in the library but doesn't define it in headers
- for example Mac OS X.
+ * ext/pathname/pathname.c (path_writable_real_p):
+ Pathname#writable_real? translated from pathname.rb.
-Wed Jul 27 15:39:14 2011 Eric Hodel <drbrain@segment7.net>
+Sun Sep 12 21:21:50 2010 Tadayoshi Funaba <tadf@dotrb.org>
- * object.c: Add usage documentation for BasicObject. Based on patch
- by Thomas Sawyer. [Ruby 1.9 - Bug #5067]
+ * lib/date.rb: [ruby-core:32096] Thanks Colin Bartlett.
-Wed Jul 27 12:24:17 2011 Eric Hodel <drbrain@segment7.net>
+Sun Sep 12 19:30:27 2010 Tanaka Akira <akr@fsij.org>
- * lib/rubygems/uninstaller.rb: Add missing require and update
- messaging to avoid confusion with uninstall --format-executable.
- [Ruby 1.9 - Bug #4062]
+ * ext/pathname/pathname.c (path_world_writable_p):
+ Pathname#world_writable? translated from pathname.rb.
-Wed Jul 27 09:34:24 2011 Eric Hodel <drbrain@segment7.net>
+Sun Sep 12 09:16:06 2010 Tanaka Akira <akr@fsij.org>
- * lib/rubygems: Update to RubyGems 1.8.6.1.
+ * ext/pathname/pathname.c (path_writable_p): Pathname#writable?
+ translated from pathname.rb.
-Wed Jul 27 09:27:59 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Sun Sep 12 08:36:15 2010 Tanaka Akira <akr@fsij.org>
- * test/openssl/test_pkcs12.rb: Add test and intermediate certificates.
- [ Ruby 1.9 - Feature #3793 ] [ruby-core:32088]
+ * process.c (rlimit_resource_name2int): support more limits:
+ RLIMIT_MSGQUEUE, RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_RTTIME and
+ RLIMIT_SIGPENDING.
+ (Init_process): ditto.
+ patch by Run Paint Run Run. [ruby-core:32262]
-Wed Jul 27 01:05:32 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun Sep 12 04:27:13 2010 Tanaka Akira <akr@fsij.org>
- * eval_error.c (rb_print_undef_str): new function to raise
- NameError for undefined method.
+ * process.c (rlimit_resource_name2int): use STRCASECMP to avoid
+ ALLOCA_N.
- * load.c (rb_mod_autoload_p), object.c (rb_mod_const_get),
- variable.c (rb_f_untrace_var, set_const_visibility), vm_method.c
- (rb_mod_{remove,undef,alias}_method, set_method_visibility):
- remove inadvertent symbol creation. based on the first patch by
- Jeremy Evans at [ruby-core:38447]. [Feature #5089]
+Sat Sep 11 16:47:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm_method.c (obj_respond_to): fix the respond_to_missing? override
- case. based on the patch by Jeremy Evans at [ruby-core:38417].
- [Feature #5072]
+ * hash.c (ruby_setenv): raise if putenv and SetEnvironmentVariable
+ failed, because of the restriction of the size on Windows.
+ based on a patch from Peter Weldon at [ruby-core:32304]. fix:
+ Bug#3812, [ruby-core:32250]
- * parse.y (rb_check_id): make the given name a symbol or a string.
- based on the second patch by Jeremy Evans at [ruby-core:38447]
+Sat Sep 11 15:19:57 2010 Eric Hodel <drbrain@segment7.net>
-Wed Jul 27 00:50:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * lib/webrick/httpauth/digestauth.rb (WEBrick::Config::DigestAuth):
+ Add documentation
- * ext/bigdecimal/lib/bigdecimal/util.rb (Rational#to_d):
- zero or negative precision is error. fixes #5098.
- [ruby-dev:44210]
+ * lib/webrick/config.rb (WEBrick::Config::DigestAuth): Add
+ documentation
- * test/bigdecimal/test_bigdecimal_util.rb: add test for the above
- change.
+Sat Sep 11 12:32:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jul 27 00:48:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * include/ruby/intern.h (rb_set_kcode, rb_get_kcode): removed
+ zombie prototype declarations. a patch from Eric Hodel
+ at [ruby-core:32305].
- * ext/bigdecimal/lib/bigdecimal/util.rb (Float#to_d): modified for
- specifying precision. fixes #5098. [ruby-dev:44210]
+Sat Sep 11 06:53:12 2010 Tanaka Akira <akr@fsij.org>
- * test/bigdecimal/test_bigdecimal_util.rb: add test for the above
- change.
+ * ext/pathname/pathname.c (path_symlink_p): Pathname#symlink?
+ translated from pathname.rb.
-Wed Jul 27 00:45:00 2011 Kenta Murata <mrkn@mrkn.jp>
+Fri Sep 10 23:03:43 2010 Tanaka Akira <akr@fsij.org>
- * ext/bigdecimal/lib/bigdecimal/util.rb (Integer#to_d): added
- for symmetry to BigDecimal() function with an Integer.
- fixes #5098. [ruby-dev:44210]
+ * ext/pathname/pathname.c (path_sticky_p): Pathname#sticky? translated
+ from pathname.rb.
- * test/bigdecimal/test_bigdecimal_util.rb: add test for the above
- change.
+Fri Sep 10 19:11:13 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-Wed Jul 27 00:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#continue): add
+ method for generating HTTP/1.1 100 continue response if the client
+ expects it, otherwise does nothing. Patch by Brian Candler.
+ ref #855.
- * ext/bigdecimal/lib/bigdecimal/util.rb (BigDecimal#to_d): added
- for adapting other Numeric subclasses. [ruby-dev:44245]
+ * test/webrick/test_httprequest.rb: test added.
- * test/bigdecimal/test_bigdecimal_util.rb: test for the above change.
+Fri Sep 10 17:49:34 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-Wed Jul 27 00:27:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * ext/openssl/lib/openssl/x509-internal.rb: removed unused local
+ variable.
- * bigdecimal/bigdecimal.c (VpDup) a new function for duplicating
- a BigDecimal.
+ * test/openssl/*: less warnings while test running with -w.
- * bigdecimal/bigdecimal.c (BigDecimal_new): support generating a new
- BigDecimal from another BigDecimal using BigDecimal global function
- or constructor. [ruby-dev:44245]
+Fri Sep 10 16:49:20 2010 Akinori MUSHA <knu@iDaemons.org>
-Tue Jul 26 23:33:24 2011 Igor Zubkov <igor.zubkov@gmail.com>
+ * class.c (rb_scan_args): Add support for optional keyword
+ argument hash. [ruby-dev:42221] [ruby-dev:38048]
- * array.c: Fix typo. https://github.com/ruby/ruby/pull/36
+ * README.EXT, README.EXT.ja: Update documentation accordingly.
-Mon Jul 25 23:51:01 2011 Yusuke Endoh <mame@tsg.ne.jp>
+ * dir.c (dir_initialize): Make use of the new rb_scan_args()
+ feature.
- * proc.c: pre-allocate the unlinked_method_entry_list_entry struct to
- avoid memory allocation during GC. based on a patch from Eric Wong.
- [ruby-core:38498]
+ * io.c (rb_io_s_popen, rb_scan_open_args, rb_io_initialize)
+ (rb_io_s_pipe, open_key_args, io_s_foreach, io_s_readlines)
+ (rb_io_s_read, rb_io_set_encoding): Ditto.
-Mon Jul 25 23:39:33 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * transcode.c (str_transcode, econv_args)
+ (econv_primitive_convert): Ditto.
- * test/rake/test_rake_directory_task.rb (TestRakeDirectoryTask#
- test_directory_win32): fixed wrong test.
+ * ext/zlib/zlib.c (rb_gzreader_initialize): Ditto.
-Mon Jul 25 22:36:11 2011 Yusuke Endoh <mame@tsg.ne.jp>
+Fri Sep 10 10:33:18 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * proc.c (struct METHOD), gc.c (gc_marks), vm_method.c
- (rb_gc_mark_unlinked_live_method_entries): fix SEGV bug.
- rb_method_entry_t was free'd even when the method is still on the
- stack if it is BMETHOD (i.e., Method#call). This is because
- rb_method_entry_t is embedded in struct METHOD. This commit
- separates them and marks the live method entries.
- See [ruby-core:38449] in detail. fix [Bug #5047] [ruby-core:38171]
+ * random.c (rb_genrand_ulong_limited): renamed from
+ rb_rand_internal and now this is public API.
-Mon Jul 25 22:14:37 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * include/ruby/ruby.h (rb_genrand_ulong_limited): added.
- * lib/xmlrpc/client.rb: Fix possible HTTP header formatting failure by
- 'Basic' header. Long username caused the base64 String truncation in
- HTTP header which is not allowed. See #5046.
+ * bignum.c (big_sparse_p): use rb_genrand_ulong_limited.
- * test/xmlrpc/test_webrick_server.rb: test it.
+Fri Sep 10 13:07:22 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-Mon Jul 25 15:04:33 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * ext/digest/lib/digest.rb: removed unused exception variable
+ assignment to avoid a warning.
- * ext/openssl/lib/openssl.rb: End of transition period introduced by
- [ruby-dev:38018]. From the next version of 1.9.3, you should use
- require "openssl"
- instead of
- require "openssl/ssl"
- and
- require "openssl/x509"
+Fri Sep 10 07:29:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Mon Jul 25 13:46:38 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * ext/etc/etc.c (etc_systmpdir): assume system default tmpdir
+ safe. [ruby-dev:42089]
- * ext/openssl/lib/openssl/x509.rb: Cosmetic change: move definition
- introduced in r30152 to x509-internal.rb.
+Fri Sep 10 07:03:23 2010 Tanaka Akira <akr@fsij.org>
-Mon Jul 25 13:09:42 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * ext/pathname/pathname.c (path_size_p): Pathname#size? translated from
+ pathname.rb.
- * ext/openssl/ossl_ssl.c (ossl_ssl_shutdown): Avoid randomly generated
- SSLError from SSLSocket just after invoking SSLSocket#close.
- OpenSSL's SSL_shutdown could try to send alert packet and it might
- set SSLerr(global error stack) as the result. It causes the next
- SSL read/write operation to fail by unrelated reason.
+Fri Sep 10 02:15:29 2010 Tanaka Akira <akr@fsij.org>
- By design, we're ignoring any error at SSL_shutdown() so we clear
- global error stack after SSL_shutdown is called. See #5039.
+ * ext/socket/option.c (inspect_peercred): support OpenBSD-current.
+ patch by Jeremy Evans. [ruby-core:32240]
-Sun Jul 24 20:29:53 2011 Tanaka Akira <akr@fsij.org>
+Thu Sep 9 23:25:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/socket/extconf.rb: refine the recvmsg test.
+ * vm.c (vm_backtrace_each): skip allocator frames which have no
+ name. [ruby-core:32231]
-Sun Jul 24 20:02:31 2011 Tanaka Akira <akr@fsij.org>
+Thu Sep 9 22:39:08 2010 Tanaka Akira <akr@fsij.org>
- * ext/socket/extconf.rb: fix the recvmsg test.
+ * ext/pathname/pathname.c (path_size): Pathname#size translated from
+ pathname.rb.
-Sun Jul 24 08:42:51 2011 Tanaka Akira <akr@fsij.org>
+Thu Sep 9 22:34:48 2010 wanabe <s.wanabe@gmail.com>
- * ext/socket/extconf.rb: test recvmsg allocates file descriptors for
- fd passing even with MSG_PEEK.
+ * compile.c (case_when_optimizable_literal): When float value can be
+ treated as integer, add to table hash of case that way.
+ based on a patch from Ikuo KOBORI. [ruby-dev:42038]
- * ext/socket/ancdata.c: use the above test result.
+ * insns.def (opt_case_dispatch): ditto.
-Sun Jul 24 01:04:50 2011 Eric Hodel <drbrain@segment7.net>
+ * test/ruby/test_case.rb: add tests.
- * lib/rubygems/specification.rb: Restore behavior of
- Gem::Specification#loaded. [Ruby 1.9 - Bug #5032]
+Thu Sep 9 17:15:15 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-Sun Jul 24 00:05:00 2011 Jeremy Evans <merch-redmine@jeremyevans.net>
+ * test/net/http/test_https.rb (test_identity_verify_failure): follows
+ the SSL hostname check error message of openssl.
- * error.c (rb_name_error_str): new function to raise NameError
- with the name string but not ID.
+Thu Sep 9 10:44:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * object.c, proc.c, variable.c: more removal of inadvertent symbol
- creation. [Feature #5079]
+ * test/ruby/test_env.rb (test_aset): OpenBSD acts like NetBSD in
+ that it ignores characters after = in ENV.
+ patched by Jeremy Evans [ruby-core:32184]
-Sat Jul 23 21:14:00 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Thu Sep 9 09:02:01 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * lib/cmath.rb (cbrt): should return a real number if possible.
+ * tool/rbinstall.rb (install?): gemspec filename should include
+ its version. patched by Luis Lavena [ruby-core:32165]
-Sat Jul 23 20:12:52 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Sep 8 22:46:31 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
- * test/rake/test_rake_functional.rb (setup): Use __FILE__ for the base
- directory. Current directory is not the top source directory when
- the building process runs on other than there.
+ * ext/openssl/ossl_ssl.c (ssl_get_error): Thread context switch was
+ blocked on Windows while blocking call for SSLSocket. Need to
+ convert errno for letting rb_io_wait_readable detect EWOULDBLOCK.
+ Patch by arton. ref #3794.
- * test/rake/test_rake_rake_test_loader.rb: ditto.
+Wed Sep 8 20:56:57 2010 Tanaka Akira <akr@fsij.org>
- * test/rake/test_rake_task_argument_parsing.rb
- (test_terminal_width_using_hardcoded_80): hardcoded 80 is used
- when app.unix? is false.
+ * ext/pathname/pathname.c (path_setgid_p): Pathname#setgid? translated
+ from pathname.rb.
-Sat Jul 23 20:11:50 2011 Tadayoshi Funaba <tadf@dotrb.org>
+Wed Sep 8 06:25:41 2010 Tanaka Akira <akr@fsij.org>
- * ext/date/date_core.c: an issue that is same as [ruby-dev:44071].
- * ext/date/date_strftime.c: identical to [ruby-dev:44112].
+ * ext/pathname/pathname.c (path_setuid_p): Pathname#setuid? translated
+ from pathname.rb.
-Sat Jul 23 19:12:53 2011 Masaki Suketa <masaki.suketa@nifty.ne.jp>
+Tue Sep 7 21:03:35 2010 Tanaka Akira <akr@fsij.org>
- * test/win32ole/test_err_in_callback.rb (test_err_in_callback):
- skip test if ADODB.connection is not available.
+ * ext/pathname/pathname.c (path_readable_real_p):
+ Pathname#readable_real? translated from pathname.rb.
-Sat Jul 23 15:37:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Sep 6 23:07:25 2010 Tanaka Akira <akr@fsij.org>
- * parse.y (rb_enc_symname_type): :$a!, @a! and so on are not
- valid symbols, so they should be inspected with quotes.
+ * ext/pathname/pathname.c (path_world_readable_p):
+ Pathname#world_readable? translated from pathname.rb.
-Sat Jul 23 17:06:25 2011 Tanaka Akira <akr@fsij.org>
+Mon Sep 6 11:03:13 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
- * io.c (rb_update_max_fd): validate fd.
+ * Fixed wrong check of missing functions. Patch by Adrian Quark.
+ ref #3400
+ The patch contains following comment:
+ This patch should avoid unnecessary incompatibility with future
+ versions of Openssl. Changes suggested by bmaher_at_amazon.com.
- * ext/socket/rubysocket.h (rsock_discard_cmsg_resource): add
- msg_peek_p argument for the declaration.
+Mon Sep 6 10:46:55 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
- * ext/socket/ancdata.c (discard_cmsg): add msg_peek_p argument.
- assume FreeBSD, NetBSD and MacOS X doesn't generate passed fd
- when MSG_PEEK.
- (rsock_discard_cmsg_resource): add msg_peek_p argument.
- (bsock_recvmsg_internal): call rsock_discard_cmsg_resource with
- msg_peek_p argument.
+ * Fixed exception message for SSL post connection check failure. Patch
+ by Paul Betteridge. ref [Bug #3704]
- * ext/socket/unixsocket.c (unix_recv_io): call
- rsock_discard_cmsg_resource with msg_peek_p argument.
+Mon Sep 6 10:31:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Jul 23 14:38:28 2011 Eric Hodel <drbrain@segment7.net>
+ * ext/readline/readline.c (readline_s_get_line_buffer):
+ Readline.line_buffer should return locale string.
+ [ruby-dev:42184] #3791
- * test/rake*: Remove dependencies on flexmock and session gems.
- [Ruby 1.9 - Bug #4987]
+Mon Sep 6 09:47:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Sat Jul 23 12:19:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * util.c (ruby_strtod): check there is at least 1 digit after
+ "0x" before ".". [ruby-dev:42183] #3790
- * parse.y (rb_check_id): take care of attrset ID created
- implicitly by local ID. [Bug #5084]
+Mon Sep 6 09:44:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * parse.y (rb_check_id): conversion condition was inverse.
- [Bug #5084]
+ * util.c (ruby_strtod): check integer overflow.
+ [ruby-dev:42180] #3789
-Fri Jul 22 21:46:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Mon Sep 6 06:17:21 2010 Tanaka Akira <akr@fsij.org>
- * vm_insnhelper.c (vm_call_cfunc): added volatile for a workaround
- of cfp consistency error problem on OS X 10.7 (Lion). It's
- suspected llvm optimization bug.
- [Bug #5074] [ruby-dev:44185]
+ * ext/pathname/pathname.c (path_readable_p): Pathname#readable?
+ translated from pathname.rb.
-Fri Jul 22 21:18:20 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Sun Sep 5 23:02:34 2010 Tanaka Akira <akr@fsij.org>
- * lib/uri/generic.rb (WFKV_): unroll the loop of regexp.
+ * ext/pathname/pathname.c (path_owned_p): Pathname#owned?
+ translated from pathname.rb.
- * lib/uri/generic.rb (URI.decode_www_form_component): ditto.
+Sat Sep 4 23:48:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jul 22 21:06:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * file.c (rb_file_s_readlink): symlink target should be in
+ filesystem encoding.
- * object.c (rb_mod_{const,cvar}_defined, rb_obj_ivar_defined):
- avoid inadvertent symbol creation in reflection methods. based
- on a patch by Jeremy Evans at [ruby-core:38367]. [Feature #5072]
+Sat Sep 4 10:40:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm_method.c (rb_mod_method_defined)
- (rb_mod_{public,private,protected}_method_defined)
- (obj_respond_to): ditto.
+ * load.c (ruby_init_ext): export for golfers.
- * parse.y (rb_check_id): new function returns already interned ID
- or 0.
+ * vm_core.h (rb_iseq_eval, rb_iseq_compile_with_option): ditto.
-Fri Jul 22 20:44:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sun May 23 17:29:41 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
- * parse.y (rb_is_global_id, rb_is_attrset_id): add missing
- predicates.
+ * common.mk (capi): uses a timestamp file to get rid of
+ generating twice.
-Fri Jul 22 20:24:38 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+Fri Jun 18 01:33:21 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
- * test/ruby/test_object.rb (TestObject#test_respond_to_missing):
- 2nd argument of respond_to_missing? is not optional.
+ * enc/Makefile.in (realclean): has been missing. necessary
+ for make realclean-enc.
-Fri Jul 22 19:05:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Fri Sep 3 23:51:26 2010 Tanaka Akira <akr@fsij.org>
- * parse.y (rb_enc_symname2_p): get rid of potential out-of-bound
- access.
+ * ext/pathname/pathname.c (path_socket_p): Pathname#socket?
+ translated from pathname.rb.
-Fri Jul 22 13:55:59 2011 Eric Hodel <drbrain@segment7.net>
+Fri Sep 3 06:40:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * lib/net/http.rb: Net::HTTP#finish is used to manually close
- connections. [Ruby 1.9 - Bug #5045]
+ * ext/pty/pty.c (chfunc): pass through exceptions.
-Fri Jul 22 13:51:29 2011 Eric Hodel <drbrain@segment7.net>
+ * io.c (rb_io_bufwrite, rb_io_bufread): added.
- * ext/readline/readline.c: Add examples for Readline.completion_proc=.
- [Ruby 1.9 - Bug #5057]
+ * process.c (rb_fork_err): protect from exceptions.
-Fri Jul 22 13:03:12 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Fri Sep 3 06:16:07 2010 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl_hmac.c: Revert checking return type of
- HMAC_Init_ex as it is not compatible with OpenSSL < 1.0.0.
+ * ext/pathname/pathname.c (path_pipe_p): Pathname#pipe?
+ translated from pathname.rb.
-Fri Jul 22 12:10:21 2011 Eric Hodel <drbrain@segment7.net>
+Fri Sep 3 06:14:40 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * tool/rbinstall.rb (default gems): Install executables into the fake
- gem dir for Gem.bin_path. [#4485]
+ * ext/pty/pty.c (chfunc): restore errno from SystemCallError and
+ propagate proper exception to the parent. [ruby-dev:41965]
-Fri Jul 22 11:20:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Thu Sep 2 22:10:38 2010 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl_digest.c: Check return value of EVP_DigestInit_ex.
- * ext/openssl/ossl_hmac.c: Check return value of HMAC_Init_ex.
- Thanks, Jared Jennings, for the patch.
- [ Ruby 1.9 - Bug #4944 ] [ruby-core:37670]
+ * ext/pathname/pathname.c (path_file_p): Pathname#file?
+ translated from pathname.rb.
-Fri Jul 22 09:09:43 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+Thu Sep 2 09:12:02 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * ext/openssl/ossl_engine.c: Avoid double free of ENGINE reference.
- * test/openssl/test_engine.rb: Add a test for it.
- Thanks to Ippei Obayashi for providing the patch.
- [ Ruby 1.9 - Bug #5062 ] [ruby-dev:44173]
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): don't forget to free
+ memory.
-Fri Jul 22 06:37:13 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+Thu Sep 2 09:01:13 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * lib/csv.rb: Do not modify CSV.generate's argument [ruby-core:38356]
+ * win32/win32.c (CreateChild): unicodize.
-Thu Jul 21 20:59:59 2011 Tanaka Akira <akr@fsij.org>
+ * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): convert arguments of
+ CreateChild() from ACP to WideChar.
- * ext/socket/ancdata.c (discard_cmsg): workaround for MacOS X Lion.
+Thu Sep 2 06:53:43 2010 Tanaka Akira <akr@fsij.org>
-Thu Jul 21 20:02:11 2011 Yusuke Endoh <mame@tsg.ne.jp>
+ * ext/pathname/pathname.c (path_directory_p): Pathname#directory?
+ translated from pathname.rb.
- * thread.c (set_trace_func, thread_set_trace_func_m): reset tracing
- state when set_trace_func hook is removed. This is workaround patch
- to force to reset tracing state that is broken by continuation call.
- a patch from James M. Lawrence. [Feature #4347] [ruby-core:34998]
+Wed Sep 1 22:03:41 2010 Tanaka Akira <akr@fsij.org>
- * test/ruby/test_continuation.rb (class TestContinuation): add a test
- for above. a patch from James M. Lawrence.
+ * ext/pathname/pathname.c (path_grpowned_p): Pathname#grpowned?
+ translated from pathname.rb.
-Thu Jul 21 19:27:19 2011 Yusuke Endoh <mame@tsg.ne.jp>
+Wed Sep 1 17:39:02 2010 Ryan Davis <ryand-ruby@zenspider.com>
- * node.c (dump_node): add today's knowledge. "init arguments (m)" and
- "init arguments (p)" of compile.c indicates a Ruby code that
- evaluates multiple assignments that is in method or block
- parameters: def foo((m1,m2), (m3,m4), *r, (p1,p2), (p3,p4)); end
- The former (init arguments (m)) evaluates the multiple assignments
- before rest argument, that are (m1,m2) and (m3,m4). The letter
- (init arguments (p)) does ones after rest argument, that are
- (p1,p2) and (p3, p4).
+ * lib/minitest/*.rb: Imported minitest 1.7.1 r5835.
+ * test/minitest/*.rb: ditto.
-Thu Jul 21 18:11:07 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Wed Sep 1 16:50:42 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * enum.c (enum_inject): remove empty line to notify rdoc
- Enumerable#reduce is alias. patched by milki@github.
- https://github.com/ruby/ruby/pull/26
+ * string.c (tr_setup_table): optimized. don't create hash objects
+ when given pattern is ASCII only.
-Thu Jul 21 17:30:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * string.c (tr_find): ditto.
- * array.c (rb_ary_delete_at_m): use simple array literal in rdoc.
- patched by samuel tonini. [ruby-core:38310] [Bug #5066]
+Wed Sep 1 14:35:29 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Thu Jul 21 17:14:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
+ * array.c (rb_ary_rotate_m): fix typo of rdoc.
+ patched by Andrei Kulakov [ruby-core:31975]
- * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#each):
- Allow HTTP/0.9 request which doesn't has any header or body.
- patched by Felix Jodoin. [ruby-core:38040] [Bug #5022]
+Wed Sep 1 14:33:36 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Wed Jul 20 23:02:18 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+ * enum.c (enum_zip): fix typo of rdoc.
+ patched by Andrei Kulakov [ruby-core:31974]
- * io.c (rb_update_max_fd): remove parentheses. they are not in
- macro.
+Wed Sep 1 12:56:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Wed Jul 20 22:22:23 2011 Tanaka Akira <akr@fsij.org>
+ * thread.c (ruby_suppress_tracing): restore the state and invoke
+ the func with normal state. a patch from Satoshi Shiba <shiba
+ AT rvm.jp> at [ruby-dev:42162]. [ruby-core:31783]
- * include/ruby/intern.h (rb_update_max_fd): declaration moved from
- internal.h.
+Tue Aug 31 21:10:23 2010 Tanaka Akira <akr@fsij.org>
- * file.c: ditto.
+ * ext/pathname/pathname.c (path_exist_p): Pathname#exist? translated
+ from pathname.rb.
- * io.c: call rb_update_max_fd for each new fds.
+Tue Aug 31 17:32:34 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
- * process.c: ditto.
+ * ext/tk/stubs.c: fix [Bug #3771] "VC++ can't make ext/tk with enabling
+ stubs". Thanks, Akio Tajima [ruby-dev:42159].
- * random.c: ditto.
+Tue Aug 31 03:42:14 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ruby.c: ditto.
+ * string.c (tr_setup_table): fix bug in r29146.
+ Initialize table even if cflag is 0; tr_find see whether
+ del is empty or not.
- * ext/io/console/console.c: ditto.
+ * string.c (tr_find): nodel can't be NULL; if NULL, it means
+ it is not specified.
- * ext/openssl/ossl_bio.c: ditto.
+Mon Aug 30 21:29:21 2010 Tanaka Akira <akr@fsij.org>
- * ext/pty/pty.c: ditto.
+ * ext/pathname/pathname.c (path_executable_real_p):
+ Pathname#executable_real? translated from pathname.rb.
- * ext/socket/init.c: ditto.
+Mon Aug 30 15:00:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/socket/socket.c: ditto.
+ * string.c (tr_setup_table): initialize negating table when
+ negating string is given. [ruby-core:31851]
- * ext/socket/ancdata.c: ditto.
+ * string.c (tr_find): add a sentence for the time when
+ target characters include negating one.
- * ext/socket/unixsocket.c: ditto.
+ * string.c (rb_str_count): move definition.
-Wed Jul 20 15:16:22 2011 NARUSE, Yui <naruse@ruby-lang.org>
+Mon Aug 30 07:32:41 2010 Tanaka Akira <akr@fsij.org>
- * ext/dl/handle.c (dlhandle_sym): clear previous error with dlerror()
- before calling dlsym(). [ruby-dev:44091] [Bug #5021]
+ * ext/pathname/pathname.c (path_executable_p): Pathname#executable?
+ translated from pathname.rb.
-Wed Jul 20 07:16:26 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
+Sun Aug 29 23:54:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * NEWS: mention Kernel#warn. [ruby-core:38119] [Feature #5029]
+ * lib/rdoc/parser/ruby.rb (RDoc#parse_call_parameters): don't
+ include assignment. [Bug #3759], [ruby-dev:42154]
-Tue Jul 19 16:40:45 2011 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
+ * lib/rdoc/parser/ruby.rb (RDoc#parse_class): ignore non-constant
+ name singleton class. [Bug #3759], [ruby-dev:42154]
- * cont.c (cont_save_thread): fix missing semicolon.
+Sun Aug 29 23:25:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Tue Jul 19 16:25:15 2011 Tanaka Akira <akr@fsij.org>
+ * file.c (rb_get_path_check): clarify error message for
+ ASCII-incompatible path name.
- * io.c (UPDATE_MAXFD): removed.
+Sun Aug 29 16:02:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Jul 19 16:07:45 2011 Tanaka Akira <akr@fsij.org>
+ * common.mk (node_name.inc): remove command option -n and give
+ file as stdin, because IronRuby 1.1 still doesn't support it.
+ So now we can use ir.exe as BASERUBY.
- * io.c (rb_update_max_fd): new function.
+ * tool/node_name.rb: read stdin with while gets.
- * internal.h (rb_update_max_fd): declare rb_update_max_fd.
+Sun Aug 29 13:22:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * thread_pthread.c (rb_thread_create_timer_thread): update max fd when
- timer thread pipe is created.
+ * vm.c (rb_thread_method_id_and_class): curried proc has no
+ method. [ruby-core:31871]
-Mon Jul 18 13:36:47 2011 Aaron Patterson <aaron@tenderlovemaking.com>
+Sun Aug 29 12:51:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ext/psych/lib/psych.rb: define a new BadAlias error class.
+ * load.c (rb_provide_feature): clarify error message for frozen
+ $LOADED_FEATURES. based on a patch from Run Paint Run Run at
+ [ruby-core:31913].
- * ext/psych/lib/psych/visitors/to_ruby.rb: raise an exception when
- deserializing an alias that does not exist.
+Sun Aug 29 12:19:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * test/psych/test_merge_keys.rb: corresponding test.
+ * load.c (load_failed): should honor encoding. [ruby-core:31915]
-Mon Jul 18 00:00:46 2011 Shugo Maeda <shugo@ruby-lang.org>
+Sun Aug 29 09:35:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
- * ext/curses/curses.c: added the new class Curses::Pad, which
- supports scrolling. patch by Eric Hodel. [Feature #4896]
- [ruby-core:37206]
+ * common.mk (clean): exclude *.inc. [ruby-dev:41931]
-Sun Jul 17 16:26:40 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * common.mk (distclean): include *.inc.
- * error.c (rb_check_trusted): new function to check an object is
- trusted.
+ * common.mk (help): change description about clean and distclean.
- * struct.c (rb_struct_modify), time.c (time_modify): check by the
- above function to show proper class names. [Bug #5036]
+Sat Aug 29 06:34:52 2010 Tanaka Akira <akr@fsij.org>
-Sun Jul 17 15:30:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/pathname/pathname.c (path_chardev_p): Pathname#chardev?
+ translated from pathname.rb.
- * error.c (rb_warn_m): accept multiple args in like puts. rdoc
- patch by Erik Price at [ruby-core:38119]. [Feature #5029]
+Sat Aug 28 17:39:33 2010 Kenta Murata <mrkn@mrkn.jp>
-Sun Jul 17 07:56:31 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_save_exception_mode,
+ BigDecimal_save_rounding_mode, BigDecimal_save_limit): added.
- * test/openssl/test_ssl_session.rb: add PEM SSL session without TLS
- extensions. Use this as the default for the tests to ensure
- compatibility with OpenSSL 0.9.7.
- [ Ruby 1.9 - Bug #4961 ] [ruby-core:37726]
+ * test/bigdecimal/test_bigdecimal.rb: added tests for the above
+ features.
-Sat Jul 16 17:29:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Sat Aug 28 08:11:05 2010 Tanaka Akira <akr@fsij.org>
- * configure.in (RUBY_UNIVERSAL_ARCH): restore arch flag.
- Bug #4977
+ * ext/pathname/pathname.c (path_blockdev_p): Pathname#blockdev?
+ translated from pathname.rb.
-Sat Jul 16 06:27:51 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+Fri Aug 27 16:20:01 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
- * lib/uri/common.rb (module): Remove optional parser argument to
- Kernel#URI
- [ruby-core:38061]
+ * string.c (rb_str_prepend): new method by Shota Fukumori (sora_h)
+ [Feature #3765]
- * lib/uri/generic.rb (module): ditto
+Fri Aug 27 15:24:20 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-Sat Jul 16 03:19:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+ * math.c (math_atan2): you should know that M_PI is not the feature
+ of C90.
+ fixed build failure caused by r29115.
- * win32/win32.c (is_socket, is_console): add prototypes to fix compile
- problem with gcc introduced at r32549.
- reported by Jon Forums. [Bug #5030] [ruby-core:38079]
+Fri Aug 27 15:26:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Sat Jul 16 00:55:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * file.c (null_device): move from io.c.
- * time.c (time_dup): used rb_obj_class() instead of CLASS_OF().
- The patch is made by Kazuki Tsujimoto. [Bug #5012] [ruby-dev:44071]
+Fri Aug 27 12:47:44 2010 Kenta Murata <mrkn@mrkn.jp>
- * test/ruby/test_time.rb (TestTime#test_getlocal_dont_share_eigenclass):
- added a new test for eigenclass of time object.
+ * math.c (math_atan2): change the behavior when x and y are zero.
+ [ruby-dev:42090] [Bug #3736] [ruby-dev:42116]
-Fri Jul 15 19:11:00 2011 Kenta Murata <mrkn@mrkn.jp>
+ * test/ruby/test_math.rb (test_atan2): add tests for the above
+ changes.
- * bignum.c (bigsub_int): add RB_GC_GUARD. This patch is made by
- Makoto Kishimoto. fixes #4223 [ruby-dev:42907]
+Fri Aug 27 12:26:23 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * bignum.c (bigadd_int): ditto.
+ * object.c (rb_obj_class): remove mention of obsolete method.
+ a patch from Run Paint Run Run at [ruby-core:31842].
-Fri Jul 15 14:27:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Fri Aug 27 12:25:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * win32/win32.c, include/ruby/win32.h (rb_w32_io_cancelable_p): renamed
- from rb_w32_has_cancel_io(). now it takes a parameter as fd to check
- the fd is console or not, because we cannot cancel console input even
- if we have cancel_io function.
+ * io.c (null_device): the name of null device. [ruby-dev:41791]
- * io.c (WAIT_FD_IN_WIN32): call above function instead of the old one,
- so now we can kill the thread which calls STDIN.gets.
- the problem was reported by ko1 via IRC.
+Fri Aug 27 07:57:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-Fri Jul 15 09:10:41 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+ * array.c (rb_ary_shuffle_bang): bail out from modification during
+ shuffle.
- * ext/digest/sha2/sha2.c (SHA256_Update, SHA512_Update): avoid Bus
- Error caused by unalignment access on Sparc-Solaris (and possibly on
- other similar environment.) This patch just do memcpy always instead
- of checking architecture. I see no perf drop on my 64bit env. For
- more details, see #4320.
+ * array.c (rb_ary_sample): ditto.
- * test/digest/test_digest.rb: add test for unalignment access.
+Fri Aug 27 05:11:51 2010 Tanaka Akira <akr@fsij.org>
-Fri Jul 15 01:51:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
+ * ext/pathname/pathname.c (path_sysopen): Pathname#sysopen translated
+ from pathname.rb.
- * regint.h (PLATFORM_UNALIGNED_WORD_ACCESS): Power PC does not
- allow unaligned word access.
+Thu Aug 26 22:53:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * st.c (UNALIGNED_WORD_ACCESS): x86_64 allows unaligned word
- access as well as i386.
+ * array.c (rb_ary_shuffle): rdoc fix. argument name was missing.
+ a patch from Run Paint Run Run at [ruby-core:31848].
-Thu Jul 14 12:19:34 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
+Thu Aug 26 21:49:46 2010 Tanaka Akira <akr@fsij.org>
- * ext/openssl/ossl.c (ossl_verify_cb): trap the exception from
- verify callback of SSLContext and X509Store and make the
- verification fail normally. Raising exception directly from callback
- causes orphan resources in OpenSSL stack. Patched by Ippei Obayashi.
- See #4445.
+ * ext/pathname/pathname.c (path_readlines): Pathname#readlines
+ translated from pathname.rb.
- * test/openssl/test_ssl.rb
- (test_exception_in_verify_callback_is_ignored): test it.
+Thu Aug 26 10:37:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
-Tue Jul 12 23:41:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * regint.h (OnigStackIndex): the type should be intptr_t.
+ Original Oniguruma assumes the size of long and that of void *
+ are equal, but it's not true on LLP64 platform: mswin64.
+ originally patched by shintaro kuwamoto [ruby-dev:42133]
- * NEWS: add a description of Signal.trap change.
+Thu Aug 26 10:38:11 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
-Tue Jul 12 20:02:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * test/dl/test_base.rb: AIX does not have dynamically loadable lib[cm].
- * signal.c (reserved_signal_p): reverted a part of r32523.
- chikanaga noticed trap(:CHLD) has some realworld usecase.
- * test/ruby/test_signal.rb (TestSignal#test_reserved_signal):
- ditto.
+ * test/fiddle/helper.rb: AIX does not have dynamically loadable lib[cm].
-Tue Jul 12 17:12:45 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
+Thu Aug 26 09:49:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * vm_method.c (rb_add_method): should not call method_added hook
- for undef operation. [Bug #5015]
+ * array.c (rb_ary_shuffle_bang): check number of argument.
-Tue Jul 12 16:58:44 2011 Shota Fukumori <sorah@tubusu.net>
+Tue Aug 26 09:11:40 2010 Kenta Murata <mrkn@mrkn.jp>
- * lib/test/unit.rb(Test::Unit::Options#process_args): Fix bug.
- Fix process_args didn't return `@option` after r30939.
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal,
+ rmpd_set_thread_local_exception_mode, VpGetException,
+ VpSetException): thread-local exception mode.
-Tue Jul 12 14:07:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal,
+ rmpd_set_thread_local_precision_limit, VpGetPrecLimit,
+ VpSetPrecLimit): thread-local precision limit.
- * signal.c (install_sighandler): fixed a race.
+ * ext/bigdecimal/bigdecimal.c (Init_bigdecimal,
+ rmpd_set_thread_local_rounding_mode, VpGetRoundMode,
+ VpSetRoundMode, VpException, VpInternalRound):
+ thread-local rounding mode.
-Tue Jul 12 13:49:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+ * ext/bigdecimal/bigdecimal.c (BigDecimal_mode, BigDecimal_round,
+ VpIsRoundMode, VpGetRoundMode, VpSetRoundMode, VpActiveRound,
+ VpMidRound, VpLeftRound), ext/bigdecimal/bigdecimal.h:
+ use unsigned short for rounding mode.
- * signal.c (sig_trap): don't permit to change a signal handler which
- the interpreter reserved.
- * signal.c (reserved_signal_p): ditto.
- [Bug #2616] [ruby-core:27625]
+ * test/bigdecimal/test_bigdecimal.rb (test_mode): add test for
+ setting rounding mode.
- * test/ruby/test_signal.rb (TestSignal#test_reserved_signal):
- added a test for reserved signal.
+ * test/bigdecimal/test_bigdecimal.rb (test_thread_local_mode):
+ add test for setting mode thread-locally.
-Tue Jul 12 11:58:28 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Thu Aug 26 07:29:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * win32/setup.mak: support x86-amd64 cross compile environment.
+ * array.c (rb_ary_{shuffle_bang,sample}): use Random class object.
-Mon Jul 11 23:22:28 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+ * random.c (try_get_rnd): use default_rand for Random as same as
+ singleton methods.
- * time.c: can't compile time.c on AIX due to missing declaration for
- ffs(). It is declared in strings.h on AIX.
+ * random.c (rb_random_real): check the range of result.
-Mon Jul 11 15:54:24 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Wed Aug 25 22:11:11 2010 Tanaka Akira <akr@fsij.org>
- * process.c: removed signal() macro. It's no longer used.
+ * ext/pathname/pathname.c (path_binread): Pathname#binread translated
+ from pathname.rb.
-Mon Jul 11 15:02:24 2011 NAKAMURA Usaku <usa@ruby-lang.org>
+Wed Aug 25 03:42:43 2010 NAKAMURA Usaku <usa@ruby-lang.org>
- * numeric.c (rb_num2ull): use FIX2LONG instead of FIX2ULONG. see
- rb_num2ulong(). fixed the problem of ObjectSpace._id2ref of IL32LLP64
- platforms, introduced at r32433.
+ * ext/dl/cfunc.c (rb_dlcfunc_call): workaround for VC9 for x64.
+ reported by kuwamoto shintaro in [ruby-dev:42125].
-Mon Jul 11 05:38:05 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
+Tue Aug 24 23:28:50 2010 Yusuke Endoh <mame@tsg.ne.jp>
- * thread_pthread.c (get_stack): need to adjust stack addr for
- [Bug #1813] on AIX.
+ * .gitignore: updated.
-Mon Jul 11 01:16:27 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+Tue Aug 24 22:07:28 2010 Tanaka Akira <akr@fsij.org>
- * thread_pthread.c (rb_thread_create_timer_thread): removed
- rb_disable_interrupt()/rb_enable_interrupt().
- * vm_core.h: ditto.
- * process.c (static void before_exec): ditto.
- * process.c (static void after_exec): ditto.
- [Bug #4765] [ruby-dev:43571]
+ * ext/pathname/pathname.c (path_read): Pathname#read translated from
+ pathname.rb.
- * eval_intern.h: removed rb_trap_restore_mask().
- * vm_eval.c (rb_throw_obj): ditto.
- * eval.c (setup_exception): ditto.
+Tue Aug 24 10:11:04 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * signal.c: removed trap_last_mask.
- * signal.c (trap_restore_mask): removed.
- * signal.c (init_sigchld): comment clarification why signal block
- is needed. and removed trap_last_mask operation.
- * signal.c (trap_ensure): removed trap_last_mask operation.
+ * configure.in: read API version from include/ruby/version.h.
- * signal.c (rb_disable_interrupt, rb_enable_interrupt): made
- static and removed sigdelset(SIGVTALRM) and sigdelset(SIGSEGV).
+ * {bcc,win}32/setup.mak (-version-): ditto.
- * process.c (rb_syswait): removed implicit signal handler change.
+ * version.h (RUBY_LIB_VERSION): use API version numbers.
-Sun Jul 10 23:49:12 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+Tue Aug 24 07:07:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * docs/NEWS-1.9.3: moved from NEWS.
+ * array.c (rb_ary_shuffle_bang, rb_ary_sample): add optional
+ argument random. [ruby-dev:41923] [EXPERIMENTAL]
- * docs/ChangeLog-1.9.3: merged ChangeLog for 1.9.3.
+ * random.c (rb_random_{int32,real,bytes}): fallback to normal
+ method invocation.
- * NEWS: NEWS for 1.9.4 that describes changes since 1.9.3
+Tue Aug 24 06:08:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * ChangeLog: new ChangeLog for 1.9.4.
+ * include/ruby/version.h (RUBY_API_VERSION_*): renamed and moved
+ from version.h. [ruby-dev:42103]
-Sun Jul 10 23:30:52 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
+Tue Aug 24 05:58:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
- * version.h (RUBY_VERSION): ruby_1_9_3 branch was forked.
+ * ChangeLog: flushed. [ruby-dev:42050]
For the changes before 1.9.3, see doc/ChangeLog-1.9.3
For the changes before 1.8.0, see doc/ChangeLog-1.8.0
diff --git a/GPL b/GPL
index d159169d10..5b6e7c66c2 100644
--- a/GPL
+++ b/GPL
@@ -1,12 +1,12 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
- Preamble
+ Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
+the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
@@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
-
- GNU GENERAL PUBLIC LICENSE
+
+ GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
-
+
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
-
+
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
@@ -225,7 +225,7 @@ impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
-
+
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
@@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
- NO WARRANTY
+ NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
@@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
@@ -303,9 +303,10 @@ the "copyright" line and a pointer to where the full notice is found.
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
Also add information on how to contact you by electronic and paper mail.
@@ -335,5 +336,5 @@ necessary. Here is a sample; alter the names:
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
+library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
diff --git a/Makefile.in b/Makefile.in
index 2d349e5201..df521cae94 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,13 +1,9 @@
SHELL = /bin/sh
NULLCMD = @NULLCMD@
-n=$(NULLCMD)
-ECHO1 = $(V:1=@$n)
RUNCMD = $(SHELL)
-CDPATH = .
CHDIR = @CHDIR@
exec = exec
NULL = /dev/null
-PATH_SEPARATOR = @PATH_SEPARATOR@
#### Start of system configuration section. ####
@@ -18,7 +14,6 @@ PLATFORM_DIR = @PLATFORM_DIR@
CC = @CC@
CPP = @CPP@
-LD = @LD@
YACC = bison
PURIFY =
AUTOCONF = autoconf
@@ -26,7 +21,6 @@ AUTOCONF = autoconf
MKFILES = @MAKEFILES@
BASERUBY = @BASERUBY@
TEST_RUNNABLE = @TEST_RUNNABLE@
-CROSS_COMPILING = @CROSS_COMPILING@
DOXYGEN = @DOXYGEN@
prefix = @prefix@
@@ -59,49 +53,36 @@ CFLAGS = @CFLAGS@ $(ARCH_FLAG)
cflags = @cflags@
optflags = @optflags@
debugflags = @debugflags@
-warnflags = @warnflags@ @strict_warnflags@
+warnflags = @warnflags@
INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir) -I$(srcdir)
XCFLAGS = @XCFLAGS@
CPPFLAGS = @CPPFLAGS@ $(INCFLAGS)
LDFLAGS = @STATIC@ $(CFLAGS) @LDFLAGS@
-EXTLDFLAGS = @EXTLDFLAGS@
+EXTLDFLAGS =
XLDFLAGS = @XLDFLAGS@ $(EXTLDFLAGS)
-EXTLIBS =
+EXTLIBS =
LIBS = @LIBS@ $(EXTLIBS)
MISSING = @LIBOBJS@ @ALLOCA@
LDSHARED = @LIBRUBY_LDSHARED@
-DLDFLAGS = @LIBRUBY_DLDFLAGS@ $(XLDFLAGS) $(ARCH_FLAG)
+DLDFLAGS = @LIBRUBY_DLDFLAGS@ $(EXTLDFLAGS) $(ARCH_FLAG)
SOLIBS = @SOLIBS@
MAINLIBS = @MAINLIBS@
ARCHMINIOBJS = @MINIOBJS@
-DLNOBJ = @DLNOBJ@
-ENCOBJS = @ENCOBJS@
-EXTOBJS = @EXTOBJS@
BUILTIN_ENCOBJS = @BUILTIN_ENCOBJS@
BUILTIN_TRANSSRCS = @BUILTIN_TRANSSRCS@
BUILTIN_TRANSOBJS = @BUILTIN_TRANSOBJS@
-POSTLINK = @POSTLINK@
RUBY_BASE_NAME=@RUBY_BASE_NAME@
RUBY_PROGRAM_VERSION=@RUBY_PROGRAM_VERSION@
RUBY_INSTALL_NAME=@RUBY_INSTALL_NAME@
RUBY_SO_NAME=@RUBY_SO_NAME@
-RUBY_RELEASE_DATE=@RUBY_RELEASE_DATE@
EXEEXT = @EXEEXT@
-LIBEXT = @LIBEXT@
PROGRAM=$(RUBY_INSTALL_NAME)$(EXEEXT)
RUBY = $(RUBY_INSTALL_NAME)
MINIRUBY = @MINIRUBY@\
$(MINIRUBYOPT)
-# RUNRUBY_COMMAND:: runruby.rb or baseruby. do not append options directly
-RUNRUBY_COMMAND = @RUNRUBY_COMMAND@
-# RUNRUBY:: run ruby with RUN_OPTS which is passed to ruby
-RUNRUBY = @RUNRUBY@ $(RUN_OPTS)
-# RUNRUBY_DEBUGGER:: debugging option for runruby.rb
-RUNRUBY_DEBUGGER = --debugger='gdb -x run.gdb --quiet --args'
+RUNRUBY = @RUNRUBY@ $(RUNRUBYOPT) -- $(RUN_OPTS)
XRUBY = @XRUBY@
-BTESTRUBY = @BTESTRUBY@\
- $(MINIRUBYOPT)
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -125,8 +106,6 @@ LIBRUBY = @LIBRUBY@
LIBRUBYARG = @LIBRUBYARG@
LIBRUBYARG_STATIC = @LIBRUBYARG_STATIC@
LIBRUBYARG_SHARED = @LIBRUBYARG_SHARED@
-LIBRUBY_RELATIVE = @LIBRUBY_RELATIVE@
-LIBRUBY_A_OBJS = @LIBRUBY_A_OBJS@
THREAD_MODEL = @THREAD_MODEL@
@@ -155,10 +134,6 @@ OBJDUMP = @OBJDUMP@
OBJCOPY = @OBJCOPY@
VCS = @VCS@
VCSUP = @VCSUP@
-DTRACE = @DTRACE@
-DTRACE_EXT = @DTRACE_EXT@
-DTRACE_OBJ = @DTRACE_OBJ@
-DTRACE_GLOMMED_OBJ = @DTRACE_GLOMMED_OBJ@
OBJEXT = @OBJEXT@
ASMEXT = S
@@ -170,14 +145,7 @@ INSTALLED_LIST= .installed.list
MKMAIN_CMD = mkmain.sh
-NEWLINE_C = newline.c
-MINIPRELUDE_C = miniprelude.c
-RBCONFIG = .rbconfig.time
-
SRC_FILE = $<
-OS_SRC_FILE = $<
-DEST_FILE = $@
-OS_DEST_FILE = $@
MESSAGE_BEGIN = @for line in
MESSAGE_END = ; do echo "$$line"; done
@@ -185,8 +153,6 @@ MESSAGE_END = ; do echo "$$line"; done
configure_args = @configure_args@
#### End of variables
-.SUFFIXES: .inc .h .c .y .i .$(DTRACE_EXT)
-
all:
.DEFAULT: all
@@ -197,13 +163,12 @@ all:
miniruby$(EXEEXT):
@-if test -f $@; then $(MV) -f $@ $@.old; $(RM) $@.old; fi
$(ECHO) linking $@
- $(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(DMYEXT) $(DTRACE_OBJ) $(MAINLIBS) $(LIBS) $(OUTFLAG)$@
+ $(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(DMYEXT) $(LIBS) $(OUTFLAG)$@
$(PROGRAM):
@$(RM) $@
$(ECHO) linking $@
- $(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(MAINLIBS) $(LIBS) $(EXTLIBS) $(OUTFLAG)$@
- $(Q) $(POSTLINK)
+ $(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) $(OUTFLAG)$@
# We must `rm' the library each time this rule is invoked because "updating" a
# MAB library on Apple/NeXT (see --enable-fat-binary in configure) is not
@@ -211,21 +176,19 @@ $(PROGRAM):
$(LIBRUBY_A):
@$(RM) $@
$(ECHO) linking static-library $@
- $(Q) $(AR) $(ARFLAGS) $@ $(LIBRUBY_A_OBJS) $(DMYEXT)
+ $(Q) $(AR) $(ARFLAGS) $@ $(OBJS) $(DMYEXT)
@-$(RANLIB) $@ 2> /dev/null || true
- $(ECHO) verifying static-library $@
- @$(PURIFY) $(CC) $(XLDFLAGS) $(MAINOBJ) $(LIBRUBY_A) $(MAINLIBS) $(EXTLIBS) $(LIBS) $(OUTFLAG)conftest$(EXEEXT) $(LDFLAGS)
- @$(RM) conftest$(EXEEXT) conftest.c
$(LIBRUBY_SO):
@-$(PRE_LIBRUBY_UPDATE)
$(ECHO) linking shared-library $@
- $(Q) $(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(DTRACE_OBJ) $(SOLIBS) $(EXTSOLIBS) $(OUTFLAG)$@
+ $(Q) $(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(SOLIBS) $(OUTFLAG)$@
-$(Q) $(OBJCOPY) -w -L '$(SYMBOL_PREFIX)Init_*' -L '$(SYMBOL_PREFIX)*_threadptr_*' $@
- $(Q) $(POSTLINK)
@-$(MINIRUBY) -e 'ARGV.each{|link| File.delete link if File.exist? link; \
File.symlink "$(LIBRUBY_SO)", link}' \
$(LIBRUBY_ALIASES) || true
+
+fake: $(arch)-fake.rb
$(arch)-fake.rb: config.status $(srcdir)/template/fake.rb.in
@./config.status --file=$@:$(srcdir)/template/fake.rb.in
@chmod +x $@
@@ -254,10 +217,8 @@ install-cross: $(arch)-fake.rb $(RBCONFIG) rbconfig.rb $(arch_hdrdir)/ruby/confi
Makefile: $(srcdir)/Makefile.in $(srcdir)/enc/Makefile.in
$(MKFILES): config.status
- @[ -f Makefile ] && mv Makefile Makefile.old
MAKE=$(MAKE) $(SHELL) ./config.status
- @cmp Makefile Makefile.old > /dev/null 2>&1 && echo Makefile unchanged && exit 0; \
- { \
+ @{ \
echo "all:; -@rm -f conftest.mk"; \
echo "conftest.mk: .force; @echo AUTO_REMAKE"; \
echo ".force:"; \
@@ -274,8 +235,7 @@ config.status-args = ./config.status --recheck
reconfig-exec-0 = exec 3>&1; exit `exec 4>&1; { "$$@" 3>&- 4>&-; echo $$? 1>&4; } | fgrep -v '(cached)' 1>&3`
reconfig-exec-1 = set -x; "$$@"
-reconfig config.status: $(srcdir)/configure $(srcdir)/enc/Makefile.in \
- $(srcdir)/include/ruby/version.h
+reconfig config.status: $(srcdir)/configure $(srcdir)/enc/Makefile.in
@PWD= MINIRUBY="$(MINIRUBY)"; export MINIRUBY; \
set $(SHELL) $($@-args); $(reconfig-exec-$(V))
@@ -283,7 +243,6 @@ $(srcdir)/configure: $(srcdir)/configure.in
$(CHDIR) $(srcdir) && exec $(AUTOCONF)
incs: id.h
-all-incs: probes.h
# Things which should be considered:
# * with gperf v.s. without gperf
@@ -317,7 +276,7 @@ enc/unicode/name2ctype.h: enc/unicode/name2ctype.kwd
trap '$(RM) $@-1.h $@-2.h' 0 && \
set -x; \
sed '/^#ifdef USE_UNICODE_PROPERTIES/,/^#endif/d' $? | gperf $(NAME2CTYPE_OPTIONS) > $@-1.h && \
- sed '/^#ifdef USE_UNICODE_PROPERTIES/d;/^#endif/d' $? | gperf $(NAME2CTYPE_OPTIONS) > $@-2.h && \
+ gperf $(NAME2CTYPE_OPTIONS) < $? > $@-2.h && \
diff -DUSE_UNICODE_PROPERTIES $@-1.h $@-2.h > $@.tmp || :; \
$(MV) $@.tmp $@ && \
$(CP) $? $(?:.kwd=.src) && \
@@ -338,47 +297,16 @@ enc/unicode/name2ctype.h: enc/unicode/name2ctype.kwd
.c.i:
@$(ECHO) preprocessing $<
- $(Q) $(CPP) $(warnflags) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -E $< > $@
-
-.d.h:
- @$(ECHO) translating probes $<
- $(Q) $(DTRACE) -o $@.tmp -h -C $(INCFLAGS) -s $<
- $(Q) sed -e 's/RUBY_/RUBY_DTRACE_/g' -e 's/PROBES_H_TMP/PROBES_H/g' -e 's/(char \*/(const char */g' -e 's/, char \*/, const char */g' $@.tmp > $@
- $(Q) $(RM) $@.tmp
-
-.dmyh.h:
- @$(ECHO) copying dummy $(DEST_FILE)
- $(Q) $(CP) $(OS_SRC_FILE) $(OS_DEST_FILE)
-
-probes.@OBJEXT@: $(srcdir)/probes.d
- @$(ECHO) processing probes in object files
- $(Q) stamp="$*.stamp"; \
- if test -f "$$stamp" -o -f "$@"; then \
- $(RM) $(DTRACE_DEPENDENT_OBJS) "$$stamp"; \
- for o in $(DTRACE_DEPENDENT_OBJS); do \
- echo "rebuilding $$o which was modified by \"dtrace -G\""; \
- $(MAKE) "$$o"; \
- done; \
- fi; \
- touch "$$stamp"
- $(RM) $@
- $(Q) $(DTRACE) -G -C $(INCFLAGS) -s $(srcdir)/probes.d -o $@ $(DTRACE_DEPENDENT_OBJS)
-
-# DTrace static library hacks described here:
-# http://mail.opensolaris.org/pipermail/dtrace-discuss/2005-August/000207.html
-ruby-glommed.$(OBJEXT):
- @$(ECHO) generating a glommed object with DTrace probes for static library
- $(Q) $(LD) -r -o $@ $(OBJS) $(DTRACE_OBJ)
+ $(Q) $(CPP) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -E $< > $@
clean-local::
- $(Q)$(RM) ext/extinit.c ext/extinit.$(OBJEXT) ext/ripper/y.output \
- enc/encinit.c enc/encinit.$(OBJEXT)
+ $(Q)$(RM) ext/extinit.c ext/extinit.$(OBJEXT) ext/ripper/y.output
-$(Q)$(RM) $(pkgconfig_DATA)
distclean-local::
$(Q)$(RM) ext/config.cache $(RBCONFIG) Doxyfile
-$(Q)$(RM) run.gdb
- -$(Q)$(RM) $(INSTALLED_LIST) $(arch_hdrdir)/ruby/config.h verconf.h
+ -$(Q)$(RM) $(INSTALLED_LIST) $(arch_hdrdir)/ruby/config.h
-$(Q)$(RMDIRS) $(arch_hdrdir)/ruby 2> /dev/null || true
clean-ext distclean-ext realclean-ext::
@@ -396,10 +324,8 @@ clean-ext distclean-ext realclean-ext::
$(RMDIRS) "ext/$$dir" 2> /dev/null || true;; \
esac; \
done
- -$(Q)$(RM) ext/extinit.$(OBJEXT)
distclean-ext realclean-ext::
- -$(Q)$(RM) ext/extinit.c
-$(Q)$(RMDIR) ext 2> /dev/null || true
clean-extout:
@@ -425,8 +351,6 @@ ext/extinit.$(OBJEXT): ext/extinit.c $(SETUP)
$(ECHO) compiling $@
$(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c ext/extinit.c
-enc/encinit.$(OBJEXT): enc/encinit.c $(SETUP)
-
up::
@$(CHDIR) "$(srcdir)" && LC_TIME=C exec $(VCSUP)
@@ -462,4 +386,4 @@ $(INSNS): $(srcdir)/insns.def vm_opts.h \
$(srcdir)/defs/opt_operand.def $(srcdir)/defs/opt_insn_unif.def \
$(srcdir)/tool/instruction.rb $(srcdir)/tool/insns2vm.rb
$(ECHO) generating $@
- $(Q) $(BASERUBY) -Ku $(srcdir)/tool/insns2vm.rb $(INSNS2VMOPT) $@
+ $(Q) $(BASERUBY) -Ks $(srcdir)/tool/insns2vm.rb $(INSNS2VMOPT) $@
diff --git a/NEWS b/NEWS
index 99c9e1dd26..30fec33fdd 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,5 @@
-# -*- rdoc -*-
-
-= NEWS for Ruby 2.0.0
+# -*- rd -*-
+= NEWS
This document is a list of user visible feature changes made between
releases except for bug fixes.
@@ -9,536 +8,334 @@ Note that each entry is kept so brief that no reason behind or
reference information is supplied with. For a full list of changes
with all sufficient information, see the ChangeLog file.
-== Changes since the 1.9.3 release
+== Changes since the 1.9.2 release
+=== License
-=== Language changes
+* Ruby's License is changed from a dual license with GPLv2
+ to a dual license with 2-clause BSDL.
-* Added keyword arguments.
+=== Known platform dependent issues
+==== OS X Lion
-* Added %i and %I for symbol list creation (similar to %w and %W).
+* You have to configure ruby with '--with-gcc=gcc-4.2' if you're using
+ Xcode 4.1, or, if you're using Xcode 4.2, you have to configure ruby
+ with '--with-gcc=clang'.
-* Default source encoding is changed to UTF-8. (was US-ASCII)
+=== C API updates
-* No warning for unused variables starting with '_'
+* rb_scan_args() is enhanced with support for option hash argument
+ extraction.
+
+* ruby_vm_at_exit() added. This enables extension libs to hook a VM
+ termination.
+
+* rb_reserved_fd_p() added. If you want to close all file descriptors,
+ check using this API. [ruby-core:37759]
+
+=== Library updates (outstanding ones only)
+
+* builtin classes
+
+ * ARGF
+ * new methods:
+ * ARGF.print
+ * ARGF.printf
+ * ARGF.putc
+ * ARGF.puts
+ * ARGF.read_nonblock
+ * ARGF.to_write_io
+ * ARGF.write
-=== Core classes updates (outstanding ones only)
+ * Array
+ * extended method:
+ * Array#pack supports endian modifiers
-* ARGF
- * added method:
- * added ARGF#codepoints and ARGF#each_codepoint, like the corresponding
- methods for IO.
+ * Bignum
+ * Multiplication algorithm for Bignums with a large number of digits over
+ 150 BDIGITs is changed in order to reduce its calculation time.
+ Now such large Bignums are multiplied by using Toom-3 algorithm.
-* Array
- * added method:
- * added Array#bsearch for binary search.
- * incompatible changes:
- * random parameter of Array#shuffle! and Array#sample now
- will be called with one argument, maximum value.
- * when given Range arguments, Array#values_at now returns nil for each
- value that is out-of-range.
+ * Encoding
+ * new encodings:
+ * CP950
+ * CP951
+ * UTF-16
+ * UTF-32
+ * change alias:
+ * SJIS is Windows-31J
-* Enumerable
- * added method:
- * added Enumerable#lazy method for lazy enumeration.
+ * File
+ * new constant:
+ * File::NULL
+ name of NULL device.
+ * File::DIRECT
+ name of O_DIRECT.
-* Enumerator
- * added method:
- * added Enumerator#size for lazy size evaluation.
- * extended method:
- * Enumerator.new accept an argument for lazy size evaluation.
- * new class Enumerator::Lazy for lazy enumeration
+ * IO
+ * extended method:
+ * IO#putc supports multibyte characters
+ * new methods:
+ * IO#advise
+ * IO.write(name, string, [offset] )
+ Write `string` to file `name`.
+ Opposite with File.read.
+ * IO.binwrite(name, string, [offset] )
+ binary version of IO.write.
-* ENV
- * aliased method:
- * ENV.to_h is a new alias for ENV.to_hash
+ * Kernel
+ * move #__id__ to BasicObject.
+ * extended method:
+ * Kernel#rand supports range argument
-* Fiber
- * incompatible changes:
- * Fiber#resume cannot resume a fiber which invokes "Fiber#transfer".
+ * Module
+ * new methods:
+ * Module#private_constant
+ * Module#public_constant
-* File
- * extended method:
- * File.fnmatch? now expands braces in the pattern if
- File::FNM_EXTGLOB option is given.
-
-* GC
- * improvements:
- * introduced the bitmap marking which suppresses to copy a memory page
- with Copy-on-Write.
- * introduced the non-recursive marking which avoids unexpected stack overflow.
-
-* GC::Profiler
- * added method:
- * added GC::Profiler.raw_data which returns raw profile data for GC.
-
-* Hash
- * added method:
- * added Hash#to_h as explicit conversion method, like Array#to_a.
- * extended method:
- * Hash#default_proc= can be passed nil to clear the default proc.
-
-* IO
- * deprecated methods:
- * IO#lines, #bytes, #chars and #codepoints are deprecated.
-
-* Kernel
- * added method:
- * added Kernel#Hash conversion method like Array() or Float().
- * added Kernel#__dir__ which returns the absolute path of the
- directory of the file from which this method is called.
- * added Kernel#caller_locations which returns an array of
- frame information objects.
- * extended method:
- * Kernel#warn accepts multiple args in like puts.
- * Kernel#caller accepts second optional argument `n' which specify
- required caller size.
- * Kernel#to_enum and enum_for accept a block for lazy size evaluation.
- * incompatible changes:
- * system() and exec() closes non-standard file descriptors
- (The default of :close_others option is changed to true by default.)
- * respond_to? against a protected method now returns false unless
- the second argument is true.
- * __callee__ has returned to the original behavior, and now
- returns the called name but not the original name in an
- aliased method.
- * Kernel#inspect does not call #to_s anymore
- (it used to call redefined #to_s).
-
-* LoadError
- * added method:
- * added LoadError#path method to return the file name that could not be
- loaded.
-
-* Module
- * added method:
- * added Module#prepend which is similar to Module#include,
- however a method in the prepended module overrides the
- corresponding method in the prepending module.
- * added Module.prepended and Module.prepend_features, similar
- to included and append_features.
- * added Module#refine, which extends a class or module locally.
- [experimental]
- * extended method:
- * Module#define_method accepts a UnboundMethod from a Module.
- * Module#const_get accepts a qualified constant string, e.g.
- Object.const_get("Foo::Bar::Baz")
-
-* Mutex
- * added method:
- * added Mutex#owned? which returns the mutex is held by current
- thread or not. [experimental]
- * incompatible changes:
- * Mutex#lock, Mutex#unlock, Mutex#try_lock, Mutex#synchronize
- and Mutex#sleep are no longer allowed to be used from trap handler
- and raise a ThreadError in such case.
- * Mutex#sleep may spurious wakeup. Check after wakeup.
-
-* NilClass
- * added method:
- * added nil.to_h which returns {}
-
-* ObjectSpace::WeakMap
- * new low level class to hold weak references to objects.
-
-* Proc
- * incompatible change:
- * removed Proc#== and #eql? so two procs are == only when they are
- the same object.
-
-* Process
- * added method:
- * added getsid for getting session id (unix only).
-
-* Range
- * added method:
- * added Range#size for lazy size evaluation.
- * added Range#bsearch for binary search.
-
-* RubyVM (MRI specific)
- * added RubyVM::InstructionSequence.of to get the instruction sequence
- from a method or a block.
- * added RubyVM::InstructionSequence#path, #absolute_path, #label,
- #base_label and #first_lineno to retrieve information from where
- the instruction sequence was defined.
- * added Environment variables to specify stack usage:
- * RUBY_THREAD_VM_STACK_SIZE: vm stack size used at thread creation.
- default: 128KB (32bit CPU) or 256KB (64bit CPU).
- * RUBY_THREAD_MACHINE_STACK_SIZE: machine stack size used at thread
- creation. default: 512KB or 1024KB.
- * RUBY_FIBER_VM_STACK_SIZE: vm stack size used at fiber creation.
- default: 64KB or 128KB.
- * RUBY_FIBER_MACHINE_STACK_SIZE: machine stack size used at fiber
- creation. default: 256KB or 256KB.
- These variables are checked only at launched time.
- * added constant DEFAULT_PARAMS to get above default parameters.
-
-* Signal
- * added method:
- * added Signal.signame which returns signal name
-
- * incompatible changes:
- * Signal.trap raises ArgumentError when :SEGV, :BUS, :ILL, :FPE, :VTALRM
- are specified.
-
-* String
- * added method:
- * added String#b returning a copied string whose encoding is ASCII-8BIT.
- * change return value:
- * String#lines now returns an array instead of an enumerator.
- * String#chars now returns an array instead of an enumerator.
- * String#codepoints now returns an array instead of an enumerator.
- * String#bytes now returns an array instead of an enumerator.
-
-* Struct
- * added method:
- * added Struct#to_h returning values with keys corresponding to the
- instance variable names.
-
-* Thread
- * added method:
- * added Thread#thread_variable_get for getting thread local variables
- (these are different than Fiber local variables).
- * added Thread#thread_variable_set for setting thread local variables.
- * added Thread#thread_variables for getting a list of the thread local
- variable keys.
- * added Thread#thread_variable? for testing to see if a particular thread
- variable has been set.
- * added Thread.handle_interrupt as well as instance and singleton methods
- pending_interrupt? for asynchronous handling of exceptions
- * added Thread#backtrace_locations which returns similar information of
- Kernel#caller_locations.
- * new class Thread::Backtrace::Location to hold backtrace location
- information. These are returned by Thread#backtrace_locations and
- Kernel#caller_locations.
- * incompatible changes:
- * Thread#join and Thread#value now raises a ThreadError if target thread
- is the current or main thread.
-
-* Time
- * change return value:
- * Time#to_s now returns US-ASCII encoding instead of BINARY.
-
-* TracePoint
- * new class. This class is replacement of set_trace_func.
- Easy to use and efficient implementation.
-
-* toplevel
- * added method:
- * added main.define_method which defines a global function.
- * added main.using, which imports refinements into the current file or
- eval string. [experimental]
-
-=== Core classes compatibility issues (excluding feature bug fixes)
-
-* Array#values_at
-
- See above.
-
-* String#lines
-* String#chars
-* String#codepoints
-* String#bytes
-
- These methods no longer return an Enumerator, although passing a
- block is still supported for backwards compatibility.
-
- Code like str.lines.with_index(1) { |line, lineno| ... } no longer
- works because str.lines returns an array. Replace lines with
- each_line in such cases.
-
-* IO#lines
-* IO#chars
-* IO#codepoints
-* IO#bytes
-* ARGF#lines
-* ARGF#chars
-* ARGF#bytes
-* StringIO#lines
-* StringIO#chars
-* StringIO#codepoints
-* StringIO#bytes
-* Zlib::GzipReader#lines
-* Zlib::GzipReader#bytes
-
- These methods are deprecated in favor of each_line, each_byte,
- each_char and each_codepoint.
-
-* Proc#==
-* Proc#eql?
-
- These methods were removed. Two procs are == only when they are
- the same object.
-
-* Fixnum
-* Bignum
-* Float
-
- Fixnums, Bignums and Floats are frozen.
-
-* Signal.trap
-
- See above.
-
-* Merge Onigmo.
- https://github.com/k-takata/Onigmo
-
-* The :close_others option is true by default for system() and exec().
- Also, the close-on-exec flag is set by default for all new file descriptors.
- This means file descriptors doesn't inherit to spawned process unless
- explicitly requested such as system(..., fd=>fd).
+ * Random
+ * extended method:
+ * Random.rand supports range argument
-* Kernel#respond_to? against a protected method now returns false
- unless the second argument is true.
+ * String
+ * extended method:
+ * String#unpack supports endian modifiers
+ * new method:
+ * String#prepend
+ * String#byteslice
-* Kernel#respond_to_missing?
-* Kernel#initialize_clone
-* Kernel#initialize_dup
+ * Time
+ * extended method:
+ * Time#strftime supports %:z and %::z.
- These methods are now private.
+ * Process
+ * Process#maxgroups and Process#maxgroups= now raise NotImplementedError if
+ the platform don't support supplementary groups concept.
-* Thread#join, Thread#value
+* bigdecimal
- See above.
+ * BigDecimal#power and BigDecimal#** support non-integral exponent.
-* Mutex#lock, Mutex#unlock, Mutex#try_lock, Mutex#synchronize and Mutex#sleep
+ * Kernel.BigDecimal and BigDecimal.new now accept instances of Integer,
+ Rational, Float, and BigDecimal. If you pass a Rational or a Float to
+ them, you must specify the precision to produce the digits of a BigDecimal.
- See above.
+ * The behavior of BigDecimal#coerce with a Rational is changed. It uses
+ the precision of the receiver BigDecimal to produce the digits of a
+ BigDecimal from the given Rational.
-=== Stdlib updates (outstanding ones only)
+* bigdecimal/util
-* cgi
- * Add HTML5 tag maker.
- * CGI#header has been renamed to CGI#http_header and
- aliased to CGI#header.
- * When HTML5 tagmaker called, overwrite CGI#header,
- CGI#header function is to create a <header> element.
+ * BigDecimal#to_d and Integer#to_d are added.
-* CSV
- * Removed CSV::dump and CSV::load to protect users from dangerous
- serialization vulnerability
+ * Float#to_d accepts a precision.
-* iconv
- * Iconv has been removed. Use String#encode instead.
+ * Rational#to_d raises ArgumentError when passing zero or negative
+ precision.
-* io/console
- * new methods:
- * added IO#cooked which sets the terminal to cooked mode within the given block.
- * added IO#cooked! which sets the terminal to cooked.
- * extended method:
- * IO#raw, IO#raw!, and IO#getch accept keyword arguments, :min and :time.
+ * Rational#to_d
-* io/wait
- * new features:
- * added IO#wait_writable method.
- * added IO#wait_readable method as alias of IO#wait.
+ * Zero and an implicit precision is deprecated.
+ This feature is removed at the next release of bigdecimal.
-* json
- * updated to 1.7.7.
+ * A negative precision isn't supported.
+ Be careful it is an incompatible change.
-* net/http
- * new features:
- * Proxies are now automatically detected from the http_proxy environment
- variable. See Net::HTTP::new for details.
- * gzip and deflate compression are now requested for all requests by
- default. See Net::HTTP for details.
- * SSL sessions are now reused across connections for a single instance.
- This speeds up connection by using a previously negotiated session.
- * Requests may be created from a URI which sets the request_uri and host
- header of the request (but does not change the host connected to).
- * Responses contain the URI requested which allows easier implementation of
- redirect following.
- * new methods:
- * Net::HTTP#local_host
- * Net::HTTP#local_host=
- * Net::HTTP#local_port
- * Net::HTTP#local_port=
- * extended method:
- * Net::HTTP#connect uses local_host and local_port if specified.
+* date
-* net/imap
- * new methods:
- * Net::IMAP.default_port
- * Net::IMAP.default_imap_port
- * Net::IMAP.default_tls_port
- * Net::IMAP.default_ssl_port
- * Net::IMAP.default_imaps_port
+ * Accepts flonum explicitly with limitations.
+ * If the given offset is flonum, DateTime assumes its precision is
+ at most second.
-* objspace
- * new method:
- * ObjectSpace.reachable_objects_from(obj)
+ DateTime.new(2001,2,3,0,0,0,3.0/24) ==
+ DateTime.new(2001,2,3,0,0,0,'+03:00')
+ #=> true
-* openssl
- * Consistently raise an error when trying to encode nil values. All instances
- of OpenSSL::ASN1::Primitive now raise TypeError when calling to_der on an
- instance whose value is nil. All instances of OpenSSL::ASN1::Constructive
- raise NoMethodError in the same case. Constructing such values is still
- permitted.
- * TLS 1.1 & 1.2 support by setting OpenSSL::SSL::SSLContext#ssl_version to
- :TLSv1_2, :TLSv1_2_server, :TLSv1_2_client or :TLSv1_1, :TLSv1_1_server
- :TLSv1_1_client. The version being effectively used can be queried
- with OpenSSL::SSL#ssl_version. Furthermore, it is also possible to
- blacklist the new TLS versions with OpenSSL::SSL:OP_NO_TLSv1_1 and
- OpenSSL::SSL::OP_NO_TLSv1_2.
- * Added OpenSSL::SSL::SSLContext#renegotiation_cb. A user-defined callback
- may be set which gets called whenever a new handshake is negotiated. This
- also allows to programmatically decline (client) renegotiation attempts.
- * Support for "0/n" splitting of records as BEAST mitigation via
- OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS.
- * The default options for OpenSSL::SSL::SSLContext have changed to
- OpenSSL::SSL::OP_ALL & ~OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS
- instead of OpenSSL::SSL::OP_ALL only. This enables the countermeasure for
- the BEAST attack by default.
- * OpenSSL requires passwords for decrypting PEM-encoded files to be at least
- four characters long. This led to awkward situations where an export with
- a password with fewer than four characters was possible, but accessing the
- file afterwards failed. OpenSSL::PKey::RSA, OpenSSL::PKey::DSA and
- OpenSSL::PKey::EC therefore now enforce the same check when exporting a
- private key to PEM with a password - it has to be at least four characters
- long.
- * SSL/TLS support for the Next Protocol Negotiation extension. Supported
- with OpenSSL 1.0.1 and higher.
- * OpenSSL::OPENSSL_FIPS allows client applications to detect whether OpenSSL
- is FIPS-enabled. OpenSSL.fips_mode= allows turning on and off FIPS mode
- manually in order to adapt to situations where FIPS mode would be an
- explicit requirement.
- * Authenticated Encryption with Associated Data (AEAD) is supported via
- Cipher#auth_data= and Cipher#auth_tag/Cipher#auth_tag=.
- Currently (OpenSSL 1.0.1c), only GCM mode is supported.
-
-* ostruct
- * new methods:
- * OpenStruct#[], []=
- * OpenStruct#each_pair
- * OpenStruct#eql?
- * OpenStruct#hash
- * OpenStruct#to_h converts the struct to a hash.
- * extended method:
- * OpenStruct.new also accepts an OpenStruct / Struct.
+ * If the given operand for -/+ is flonum, DateTime assumes its
+ precision is at most nanosecond.
-* pathname
- * extended method:
- * Pathname#find returns an enumerator if no block is given.
+ DateTime.new(2001,2,3) + 0.5 == DateTime.new(2001,2,3,12)
+ #=> true
-* rake
- * rake has been updated to version 0.9.5.
+ * Precision of offset is always at most second.
- This version is backwards-compatible with previous rake versions and
- contains many bug fixes.
+ Rational('0.5') == Rational('0.500001') #=> false
+ DateTime.new(2001,2,3,0,0,0,Rational('0.5')) ==
+ DateTime.new(2001,2,3,0,0,0,Rational('0.500001'))
+ #=> true
- See
- http://rake.rubyforge.org/doc/release_notes/rake-0_9_5_rdoc.html for a list
- of changes in rake 0.9.3, 0.9.4 and 0.9.5.
+ * Ignores long offset and far reform day (with warning).
-* RDoc
- * RDoc has been updated to version 4.0
+ * Now accepts only:
- This version is largely backwards-compatible with previous rdoc versions.
- The most notable change is an update to the ri data format (ri data must
- be regenerated for gems shared across rdoc versions). Further API changes
- are internal and won't affect most users.
+ -1<=offset<=1 (-24:00..+24:00)
+ 2298874<=start<=2426355 or -/+oo
+ (proleptic Gregorian/Julian mean -/+oo)
- Notable changes include:
+ * A method strftime cannot produce huge output (same as Time's one).
- * Page support for ri. Try `ri ruby:` for a list of pages in ruby or
- `ri ruby:syntax/literals` for the syntax documentation for literals.
+ * Even though Date/DateTime can handle far dates, the following causes
+ an exception.
- This also works for gems such as `ri rspec:README` for the rspec gem's
- README file.
- * Markdown support. See ri RDoc::Markdown for details.
+ DateTime.new(1<<10000).strftime('%Y') # Errno::ERANGE
- See https://github.com/rdoc/rdoc/blob/master/History.rdoc for a full list
- of changes in rdoc 4.0.
+ * Changed the format of inspect.
+ * Changed the format of marshal (but, can load old dumps).
-* resolv
+* io/console
* new methods:
- * Resolv::DNS#timeouts=
- * Resolv::DNS::Config#timeouts=
-
-* rexml
- * REXML::Document#write supports Hash arguments.
- * REXML::Document#write supports new :encoding option. It changes
- XML document encoding. Without :encoding option, encoding in
- XML declaration is used for XML document encoding.
+ * IO#noecho {|io| }
+ * IO#echo=
+ * IO#echo?
+ * IO#raw {|io| }
+ * IO#raw!
+ * IO#getch
+ * IO#winsize
+ * IO.console
-* RubyGems
- * Updated to 2.0.14.
+* json
+ * updated to v1.5.4.
- See http://rubygems.rubyforge.org/rubygems-update/History_txt.html#label-2.0.14+%2F+2013-11-12
- for release notes.
+* matrix
+ * new classes:
+ * Matrix::EigenvalueDecomposition
+ * Matrix::LUPDecomposition
+ * new methods:
+ * Matrix#diagonal?
+ * Matrix#eigen
+ * Matrix#eigensystem
+ * Matrix#hermitian?
+ * Matrix#lower_triangular?
+ * Matrix#lup
+ * Matrix#lup_decomposition
+ * Matrix#normal?
+ * Matrix#orthogonal?
+ * Matrix#permutation?
+ * Matrix#round
+ * Matrix#symmetric?
+ * Matrix#unitary?
+ * Matrix#upper_triangular?
+ * Matrix#zero?
+ * Vector#magnitude, #norm
+ * Vector#normalize
+ * extended methods:
+ * Matrix#each and #each_with_index can iterate on a subset of the elements
+ * Matrix#find_index returns [row, column] and can iterate on a subset
+ of the elements
+ * Matrix#** implements Numeric exponents (using the eigensystem)
+ * Matrix.zero can build rectangular matrices
+
+* minitest
+ * Minitest has been updated to version 2.2.2.
+ * For full details, see https://github.com/seattlerb/minitest/blob/master/History.txt
- * Updated to 2.0.10. This fixes CVE_2013-4363:
+* net/http
+ * SNI (Server Name Indication) supported for HTTPS.
- http://rubygems.rubyforge.org/rubygems-update/CVE-2013-4363_txt.html
+ * Allow to configure to wait server returning '100 continue' response
+ before sending HTTP request body. Set Net::HTTP#continue_timeout AND pass
+ 'expect' => '100-continue' to a extra HTTP header.
- * Updated to 2.0.8. This fixes CVE-2013-4287:
+ For example, the following code sends HTTP header and waits for getting
+ '100 continue' response before sending HTTP request body. When 0.5 [sec]
+ timeout occurs or the server send '100 continue', the client sends HTTP
+ request body.
+ http.continue_timeout = 0.5
+ http.request_post('/continue', 'body=BODY', 'expect' => '100-continue')
- http://rubygems.rubyforge.org/rubygems-update/CVE-2013-4287_txt.html
+ * new method:
+ * Net::HTTPRequest#set_form): Added to support
+ both application/x-www-form-urlencoded and multipart/form-data.
- * Updated to 2.0.0
+* objspace
+ * new method:
+ * ObjectSpace::memsize_of_all
- RubyGems 2.0.0 features the following improvements:
+* openssl
+ * PKey::RSA and PKey::DSA now use the generic X.509 encoding scheme
+ (e.g. used in a X.509 certificate's Subject Public Key Info) when
+ exporting public keys to DER or PEM. Backward compatibility is
+ ensured by (already existing) fallbacks during creation.
+ * OpenSSL::ASN1::Constructive#new and OpenSSL::ASN1::Primitive#new
+ (and the constructors of their sub-classes) will no longer force
+ tagging to be set to :EXPLICIT when tag and/or tag_class are passed
+ as parameters. tagging must be set explicitly.
+ * Support for infinite length encodings via infinite_length attribute.
+ * OpenSSL::PKey.read( file | string [, pwd] ) allows to read arbitrary
+ public/private keys in DER-/PEM-encoded form with an optional password
+ for encrypted PEM encodings.
+ * Add new method OpenSSL::X509::Name#hash_old as a wrapper of
+ X509_NAME_hash_old() defined from OpenSSL 1.0.0. It returns OpenSSL 0.9.8
+ compatible hash value.
+
+* optparse
+ * support for bash/zsh completion.
+
+* Rake
+ * Rake has been upgraded from 0.8.7 to 0.9.2.2. For full release notes see
+ https://github.com/jimweirich/rake/blob/master/CHANGES
- * Improved support for default gems shipping with ruby 2.0.0+
- * A gem can have arbitrary metadata through Gem::Specification#metadata
- * `gem search` now defaults to --remote and is anchored like gem list.
- * Added --document to replace --rdoc and --ri. Use --no-document to
- disable documentation, --document=rdoc to only generate rdoc.
- * Only ri-format documentation is generated by default.
- * `gem server` uses RDoc::Servlet from RDoc 4.0 to generate HTML
- documentation.
+* RDoc
+ * RDoc has been upgraded to version 3.9.4. For full release notes see
+ http://docs.seattlerb.org/rdoc/History_txt.html
- For an expanded list of updates and bug fixes see:
- https://github.com/rubygems/rubygems/blob/master/History.txt
+* rexml
+ * Support Ruby native encoding mechanism and iconv dependency is dropped.
-* shellwords
- * Shellwords#shellescape now stringifies the given object using to_s.
- * Shellwords#shelljoin accepts non-string objects in the given
- array, each of which is stringified using to_s.
+* RubyGems
+ * RubyGems has been upgraded to version 1.8.10. For full release notes see
+ http://rubygems.rubyforge.org/rubygems-update/History_txt.html
* stringio
- * deprecated methods:
- * StringIO#lines, #bytes, #chars and #codepoints are deprecated.
-
-* syslog
- * Added Syslog::Logger which provides a Logger API atop Syslog.
- * Syslog::Priority, Syslog::Level, Syslog::Option and Syslog::Macros
- are introduced for easy detection of available constants on a
- running system.
-
-* tmpdir
- * incompatible changes:
- * Dir.mktmpdir uses FileUtils.remove_entry instead of
- FileUtils.remove_entry_secure. This means that applications should not
- change the permission of the created temporary directory to make
- accessible from other users.
+ * extended method:
+ * StringIO#set_encoding can get 2nd argument and optional hash.
+
+* test/unit
+ * New arguments:
+ * -j N, --jobs=N: Allow run N testcases at once.
+ * --jobs-status: Show status of jobs when parallel running.
+ * --no-retry: Don't retry testcases which failed when parallel running.
+ * --ruby=RUBY: path to ruby for job(worker) process. optional.
+ * --hide-skip: Hide skip messages. You'll see the number of skips at end of
+ test result.
+
+* uri
+ * new methods:
+ * URI::Generic#hostname
+ * URI::Generic#hostname=
+
+* webrick
+ * new method:
+ * WEBrick::HTTPRequest#continue for generating '100 continue' response.
+ * new logging directive:
+ * %{remote}p for remote (client) port number.
* yaml
- * Syck has been removed. YAML now completely depends on libyaml being
- installed.
- * libyaml is now bundled with ruby, for cases where the library is not
- installed locally.
+ * The default YAML engine is now Psych. You may downgrade to syck by setting
+ YAML::ENGINE.yamler = 'syck'.
* zlib
- * Added streaming support for Zlib::Inflate and Zlib::Deflate. This allows
- processing of a stream without the use of large amounts of memory.
- * Added support for the new deflate strategies Zlib::RLE and Zlib::FIXED.
- * Zlib streams are now processed without the GVL. This allows gzip, zlib and
- deflate streams to be processed in parallel.
- * deprecated methods:
- * Zlib::GzipReader#lines and #bytes are deprecated.
+ * new methods:
+ * Zlib.deflate
+ * Zlib.inflate
-=== Stdlib compatibility issues (excluding feature bug fixes)
+* FileUtils
+ * extended method:
+ * FileUtils#chmod supports symbolic mode argument.
-* OpenStruct new methods can conflict with custom attributes named
- "each_pair", "eql?", "hash" or "to_h".
+=== Language changes
-* Dir.mktmpdir in lib/tmpdir.rb
+* Regexps now support Unicode 6.0. (new characters and scripts)
- See above.
+* [experimental] Regexps now support Age property.
+ Unlike Perl, current implementation takes interpretation of the
+ interpretation of UTS #18.
+ http://www.unicode.org/reports/tr18/
-=== C API updates
+* Turning on/off indentation warnings with directives.
+ ("# -*- warn-indent: true -*-" / "# -*- warn-indent: false -*-")
-* NUM2SHORT() and NUM2USHORT() added. They are similar to NUM2INT, but short.
+=== Compatibility issues (excluding feature bug fixes)
-* rb_newobj_of() and NEWOBJ_OF() added. They create a new object of a given class.
+ * Rational#to_d
+ See above.
diff --git a/README b/README
index cda6a93cd6..3d2e636e4d 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-= What's Ruby
+* What's Ruby
Ruby is the interpreted scripting language for quick and
easy object-oriented programming. It has many features to
@@ -6,130 +6,113 @@ process text files and to do system management tasks (as in
Perl). It is simple, straight-forward, and extensible.
-== Features of Ruby
+* Features of Ruby
-* Simple Syntax
-* *Normal* Object-Oriented features(ex. class, method calls)
-* *Advanced* Object-Oriented features(ex. Mix-in, Singleton-method)
-* Operator Overloading
-* Exception Handling
-* Iterators and Closures
-* Garbage Collection
-* Dynamic Loading of Object files(on some architecture)
-* Highly Portable (works on many Unix-like/POSIX compatible platforms
+ + Simple Syntax
+ + *Normal* Object-Oriented features(ex. class, method calls)
+ + *Advanced* Object-Oriented features(ex. Mix-in, Singleton-method)
+ + Operator Overloading
+ + Exception Handling
+ + Iterators and Closures
+ + Garbage Collection
+ + Dynamic Loading of Object files(on some architecture)
+ + Highly Portable (works on many Unix-like/POSIX compatible platforms
as well as Windows, Mac OS X, BeOS etc.)
- cf. http://bugs.ruby-lang.org/projects/ruby-trunk/wiki/SupportedPlatforms
+ cf. http://redmine.ruby-lang.org/wiki/ruby-19/SupportedPlatforms
-== How to get Ruby
-
-For a complete list of ways to install Ruby, including using third party
-tools like rvm, see:
-
-http://www.ruby-lang.org/en/downloads/
+* How to get Ruby
The Ruby distribution files can be found in the following FTP site:
-ftp://ftp.ruby-lang.org/pub/ruby/
+ ftp://ftp.ruby-lang.org/pub/ruby/
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
-Or if you are using git then use following command:
-
- $ git clone git://github.com/ruby/ruby.git
-
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/
-Or if you are using git then use following command:
-
- $ git ls-remote git://github.com/ruby/ruby.git
-== Ruby home-page
+* Ruby home-page
The URL of the Ruby home-page is:
-http://www.ruby-lang.org/
+ http://www.ruby-lang.org/
-== Mailing list
+* Mailing list
There is a mailing list to talk about Ruby.
To subscribe this list, please send the following phrase
- subscribe YourFirstName YourFamilyName
+ subscribe YourFirstName YourFamilyName
e.g.
subscribe Joseph Smith
-in the mail body (not subject) to the address <mailto:ruby-talk-ctl@ruby-lang.org>.
+in the mail body (not subject) to the address <ruby-talk-ctl@ruby-lang.org>.
-== How to compile and install
+* How to compile and install
This is what you need to do to compile and install Ruby:
-0. If you want to use Microsoft Visual C++ to compile ruby,
- read win32/README.win32 instead of this document.
-
-1. If +./configure+ does not exist or is older than configure.in,
+ 1. If ./configure does not exist or is older than configure.in,
run autoconf to (re)generate configure.
-2. Run +./configure+, which will generate config.h and Makefile.
+ 2. Run ./configure, which will generate config.h and Makefile.
Some C compiler flags may be added by default depending on your
- environment. Specify <tt>optflags=..</tt> and <tt>warnflags=..</tt> as
- necessary to override them.
+ environment. Specify optflags=.. and warnflags=.. as necessary
+ to override them.
-3. Edit +defines.h+ if you need. Usually this step will not be needed.
+ 3. Edit defines.h if you need. Usually this step will not be needed.
-4. Remove comment mark(<tt>#</tt>) before the module names from +ext/Setup+
- (or add module names if not present), if you want to link modules
+ 4. Remove comment mark(#) before the module names from ext/Setup (or
+ add module names if not present), if you want to link modules
statically.
If you don't want to compile non static extension modules
(probably on architectures which does not allow dynamic loading),
- remove comment mark from the line "<tt>#option nodynamic</tt>" in
- +ext/Setup+.
-
- Usually this step will not be needed.
+ remove comment mark from the line "#option nodynamic" in
+ ext/Setup.
-5. Run +make+.
+ 5. Run make.
-6. Optionally, run '<tt>make check</tt>' to check whether the compiled Ruby
- interpreter works well. If you see the message "<tt>check succeeded</tt>",
+ 6. Optionally, run 'make test' to check whether the compiled Ruby
+ interpreter works well. If you see the message "test succeeded",
your ruby works as it should (hopefully).
-7. Run '<tt>make install</tt>'
+ 7. Run 'make install'
This command will create following directories and install files
onto them.
- * <tt>${DESTDIR}${prefix}/bin</tt>
- * <tt>${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}</tt>
- * <tt>${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}</tt>
- * <tt>${DESTDIR}${prefix}/lib</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/site_ruby</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/vendor_ruby</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/gems/${MAJOR}.${MINOR}.${TEENY}</tt>
- * <tt>${DESTDIR}${prefix}/share/man/man1</tt>
- * <tt>${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system</tt>
-
- If Ruby's API version is '_x.y.z_', the <tt>${MAJOR}</tt> is '_x_', the
- <tt>${MINOR}</tt> is '_y_', and the <tt>${TEENY}</tt> is '_z_'.
-
- *NOTE*: teeny of the API version may be different from one of
+ * ${DESTDIR}${prefix}/bin
+ * ${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}
+ * ${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
+ * ${DESTDIR}${prefix}/lib
+ * ${DESTDIR}${prefix}/lib/ruby
+ * ${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}
+ * ${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
+ * ${DESTDIR}${prefix}/lib/ruby/site_ruby
+ * ${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}
+ * ${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
+ * ${DESTDIR}${prefix}/lib/ruby/vendor_ruby
+ * ${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}
+ * ${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
+ * ${DESTDIR}${prefix}/lib/ruby/gems/${MAJOR}.${MINOR}.${TEENY}
+ * ${DESTDIR}${prefix}/share/man/man1
+ * ${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system
+
+ If Ruby's API version is `x.y.z', the ((|${MAJOR}|)) is `x', the
+ ((|${MINOR}|)) is `y', and the ((|${TEENY}|)) is `z'.
+
+ NOTE: teeny of the API version may be different from one of
Ruby's program version
You may have to be a super user to install ruby.
@@ -137,30 +120,21 @@ This is what you need to do to compile and install Ruby:
If you fail to compile ruby, please send the detailed error report with
the error log and machine/OS type, to help others.
-Some extension libraries may not get compiled because of lack of
-necessary external libraries and/or headers, then you will need to run
-'<tt>make distclean-ext</tt>' to remove old configuration after
-installing them in such case.
-
-== Copying
-
-See the file +COPYING+.
-== Feedback
+* Copying
-Questions about the Ruby language can be asked on the Ruby-Talk mailing list
-(http://www.ruby-lang.org/en/community/mailing-lists) or on websites like
-(http://stackoverflow.com).
+See the file COPYING.
-Bug reports should be filed at http://bugs.ruby-lang.org
-== The Author
+* The Author
-Ruby was originally designed and developed by Yukihiro Matsumoto (Matz) in 1995.
+Feel free to send comments and bug reports to the author. Here is the
+author's latest mail address:
-<mailto:matz@ruby-lang.org>
+ matz@netlab.jp
---
+-------------------------------------------------------
+created at: Thu Aug 3 11:57:36 JST 1995
Local variables:
-mode: rdoc
+mode: indented-text
end:
diff --git a/README.EXT b/README.EXT
index 61bc6ef731..de63f54699 100644
--- a/README.EXT
+++ b/README.EXT
@@ -1,8 +1,8 @@
-# README.EXT - -*- RDoc -*- created at: Mon Aug 7 16:45:54 JST 1995
+.\" README.EXT - -*- Text -*- created at: Mon Aug 7 16:45:54 JST 1995
This document explains how to make extension libraries for Ruby.
-= Basic Knowledge
+1. Basic knowledge
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
@@ -13,46 +13,47 @@ has its data-type.
To retrieve C data from a VALUE, you need to:
-1. Identify the VALUE's data type
-2. Convert the VALUE into C data
+ (1) Identify the VALUE's data type
+ (2) Convert the VALUE into C data
Converting to the wrong data type may cause serious problems.
-== Data-Types
+
+1.1 Data-types
The Ruby interpreter has the following data types:
-T_NIL :: nil
-T_OBJECT :: ordinary object
-T_CLASS :: class
-T_MODULE :: module
-T_FLOAT :: floating point number
-T_STRING :: string
-T_REGEXP :: regular expression
-T_ARRAY :: array
-T_HASH :: associative array
-T_STRUCT :: (Ruby) structure
-T_BIGNUM :: multi precision integer
-T_FIXNUM :: Fixnum(31bit or 63bit integer)
-T_COMPLEX :: complex number
-T_RATIONAL :: rational number
-T_FILE :: IO
-T_TRUE :: true
-T_FALSE :: false
-T_DATA :: data
-T_SYMBOL :: symbol
+ T_NIL nil
+ T_OBJECT ordinary object
+ T_CLASS class
+ T_MODULE module
+ T_FLOAT floating point number
+ T_STRING string
+ T_REGEXP regular expression
+ T_ARRAY array
+ T_HASH associative array
+ T_STRUCT (Ruby) structure
+ T_BIGNUM multi precision integer
+ T_FIXNUM Fixnum(31bit or 63bit integer)
+ T_COMPLEX complex number
+ T_RATIONAL rational number
+ T_FILE IO
+ T_TRUE true
+ T_FALSE false
+ T_DATA data
+ T_SYMBOL symbol
In addition, there are several other types used internally:
-T_ICLASS :: included module
-T_MATCH :: MatchData object
-T_UNDEF :: undefined
-T_NODE :: syntax tree node
-T_ZOMBIE :: object awaiting finalization
+ T_ICLASS
+ T_MATCH
+ T_UNDEF
+ T_NODE
+ T_ZOMBIE
Most of the types are represented by C structures.
-== Check Data Type of the VALUE
+1.2 Check Data Type of the VALUE
The macro TYPE() defined in ruby.h shows the data type of the VALUE.
TYPE() returns the constant number T_XXXX described above. To handle
@@ -86,7 +87,7 @@ There are also faster check macros for fixnums and nil.
FIXNUM_P(obj)
NIL_P(obj)
-== Convert VALUE into C Data
+1.3 Convert VALUE into C data
The data for type T_NIL, T_FALSE, T_TRUE are nil, false, true
respectively. They are singletons for the data type.
@@ -136,19 +137,19 @@ 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 bugs.
-== Convert C Data into VALUE
+1.4 Convert C data into VALUE
To convert C data to Ruby values:
-FIXNUM ::
+ * FIXNUM
- left shift 1 bit, and turn on LSB.
+ left shift 1 bit, and turn on LSB.
-Other pointer values::
+ * Other pointer values
- cast to VALUE.
+ cast to VALUE.
-You can determine whether a VALUE is pointer or not by checking its LSB.
+You can determine whether a VALUE is pointer or not by checking its LSB.
Notice Ruby does not allow arbitrary pointer values to be a VALUE. They
should be pointers to the structures which Ruby knows about. The known
@@ -156,153 +157,146 @@ structures are defined in <ruby.h>.
To convert C numbers to Ruby values, use these macros.
-INT2FIX() :: for integers within 31bits.
-INT2NUM() :: for arbitrary sized integer.
+ INT2FIX() for integers within 31bits.
+ INT2NUM() for arbitrary sized integer.
INT2NUM() converts an integer into a Bignum if it is out of the FIXNUM
range, but is a bit slower.
-== Manipulating Ruby Data
+1.5 Manipulating Ruby data
As I already mentioned, it is not recommended to modify an object's
internal structure. To manipulate objects, use the functions supplied
by the Ruby interpreter. Some (not all) of the useful functions are
listed below:
-=== String Functions
-
-rb_str_new(const char *ptr, long len) ::
-
- Creates a new Ruby string.
-
-rb_str_new2(const char *ptr) ::
-rb_str_new_cstr(const char *ptr) ::
+ String functions
- Creates a new Ruby string from a C string. This is equivalent to
- rb_str_new(ptr, strlen(ptr)).
+ rb_str_new(const char *ptr, long len)
-rb_tainted_str_new(const char *ptr, long len) ::
+ Creates a new Ruby string.
- Creates a new tainted Ruby string. Strings from external data
- sources should be tainted.
+ rb_str_new2(const char *ptr)
+ rb_str_new_cstr(const char *ptr)
-rb_tainted_str_new2(const char *ptr) ::
-rb_tainted_str_new_cstr(const char *ptr) ::
+ Creates a new Ruby string from a C string. This is equivalent to
+ rb_str_new(ptr, strlen(ptr)).
- Creates a new tainted Ruby string from a C string.
+ rb_tainted_str_new(const char *ptr, long len)
-rb_sprintf(const char *format, ...) ::
-rb_vsprintf(const char *format, va_list ap) ::
+ Creates a new tainted Ruby string. Strings from external data
+ sources should be tainted.
- Creates a new Ruby string with printf(3) format.
+ rb_tainted_str_new2(const char *ptr)
+ rb_tainted_str_new_cstr(const char *ptr)
- Note: In the format string, %i is used for Object#to_s (or Object#inspect if
- '+' flag is set) output (and related argument must be a VALUE). For integers
- in format strings, use %d.
+ Creates a new tainted Ruby string from a C string.
-rb_str_cat(VALUE str, const char *ptr, long len) ::
+ rb_sprintf(const char *format, ...)
+ rb_vsprintf(const char *format, va_list ap)
- Appends len bytes of data from ptr to the Ruby string.
+ Creates a new Ruby string with printf(3) format.
-rb_str_cat2(VALUE str, const char* ptr) ::
+ rb_str_cat(VALUE str, const char *ptr, long len)
- Appends C string ptr to Ruby string str. This function is
- equivalent to rb_str_cat(str, ptr, strlen(ptr)).
+ Appends len bytes of data from ptr to the Ruby string.
-rb_str_catf(VALUE str, const char* format, ...) ::
-rb_str_vcatf(VALUE str, const char* format, va_list ap) ::
+ rb_str_cat2(VALUE str, const char* ptr)
- Appends C string format and successive arguments to Ruby string
- str according to a printf-like format. These functions are
- equivalent to rb_str_cat2(str, rb_sprintf(format, ...)) and
- rb_str_cat2(str, rb_vsprintf(format, ap)), respectively.
+ Appends C string ptr to Ruby string str. This function is
+ equivalent to rb_str_cat(str, ptr, strlen(ptr)).
-rb_enc_str_new(const char *ptr, long len, rb_encoding *enc) ::
+ rb_str_catf(VALUE str, const char* format, ...)
+ rb_str_vcatf(VALUE str, const char* format, va_list ap)
- Creates a new Ruby string with the specified encoding.
+ Appends C string format and successive arguments to Ruby string
+ str according to a printf-like format. These functions are
+ equivalent to rb_str_cat2(str, rb_sprintf(format, ...)) and
+ rb_str_cat2(str, rb_vsprintf(format, ap)), respectively.
-rb_usascii_str_new(const char *ptr, long len) ::
-rb_usascii_str_new_cstr(const char *ptr) ::
+ rb_enc_str_new(const char *ptr, long len, rb_encoding *enc)
+
+ Creates a new Ruby string with the specified encoding.
+
+ rb_usascii_str_new(const char *ptr, long len)
+ rb_usascii_str_new_cstr(const char *ptr)
- Creates a new Ruby string with encoding US-ASCII.
+ Creates a new Ruby string with encoding US-ASCII.
-rb_str_resize(VALUE str, long len) ::
+ rb_str_resize(VALUE str, long len)
- Resizes Ruby string to len bytes. If str is not modifiable, this
- function raises an exception. The length of str must be set in
- advance. If len is less than the old length the content beyond
- len bytes is discarded, else if len is greater than the old length
- the content beyond the old length bytes will not be preserved but
- will be garbage. Note that RSTRING_PTR(str) may change by calling
- this function.
+ Resizes Ruby string to len bytes. If str is not modifiable, this
+ function raises an exception. The length of str must be set in
+ advance. If len is less than the old length the content beyond
+ len bytes is discarded, else if len is greater than the old length
+ the content beyond the old length bytes will not be preserved but
+ will be garbage. Note that RSTRING_PTR(str) may change by calling
+ this function.
-rb_str_set_len(VALUE str, long len) ::
+ rb_str_set_len(VALUE str, long len)
- Sets the length of Ruby string. If str is not modifiable, this
- function raises an exception. This function preserves the content
- upto len bytes, regardless RSTRING_LEN(str). len must not exceed
- the capacity of str.
+ Sets the length of Ruby string. If str is not modifiable, this
+ function raises an exception. This function preserves the content
+ upto len bytes, regardless RSTRING_LEN(str). len must not exceed
+ the capacity of str.
-=== Array Functions
+ Array functions
-rb_ary_new() ::
+ rb_ary_new()
- Creates an array with no elements.
+ Creates an array with no elements.
-rb_ary_new2(long len) ::
+ rb_ary_new2(long len)
- Creates an array with no elements, allocating internal buffer
- for len elements.
+ Creates an array with no elements, allocating internal buffer
+ for len elements.
-rb_ary_new3(long n, ...) ::
+ rb_ary_new3(long n, ...)
- Creates an n-element array from the arguments.
+ Creates an n-element array from the arguments.
-rb_ary_new4(long n, VALUE *elts) ::
+ rb_ary_new4(long n, VALUE *elts)
- Creates an n-element array from a C array.
+ Creates an n-element array from a C array.
-rb_ary_to_ary(VALUE obj) ::
+ rb_ary_to_ary(VALUE obj)
- Converts the object into an array.
- Equivalent to Object#to_ary.
+ Converts the object into an array.
+ Equivalent to Object#to_ary.
-There are many functions to operate an array. They may dump core if other
-types are given.
+ There are many functions to operate an array.
+ They may dump core if other types are given.
-rb_ary_aref(argc, VALUE *argv, VALUE ary) ::
+ rb_ary_aref(argc, VALUE *argv, VALUE ary)
- Equivaelent to Array#[].
+ Equivaelent to Array#[].
-rb_ary_entry(VALUE ary, long offset) ::
+ rb_ary_entry(VALUE ary, long offset)
- ary[offset]
+ ary[offset]
-rb_ary_subseq(VALUE ary, long beg, long len) ::
+ rb_ary_subseq(VALUE ary, long beg, long len)
- ary[beg, len]
+ ary[beg, len]
-rb_ary_push(VALUE ary, VALUE val) ::
-rb_ary_pop(VALUE ary) ::
-rb_ary_shift(VALUE ary) ::
-rb_ary_unshift(VALUE ary, VALUE val) ::
+ rb_ary_push(VALUE ary, VALUE val)
+ rb_ary_pop(VALUE ary)
+ rb_ary_shift(VALUE ary)
+ rb_ary_unshift(VALUE ary, VALUE val)
-rb_ary_cat(VALUE ary, const VALUE *ptr, long len) ::
- Appends len elements of objects from ptr to the array.
+2. Extending Ruby with C
-= Extending Ruby with C
-
-== Adding New Features to Ruby
+2.1 Adding new features to Ruby
You can add new features (classes, methods, etc.) to the Ruby
interpreter. Ruby provides APIs for defining the following things:
-* Classes, Modules
-* Methods, Singleton Methods
-* Constants
+ * Classes, Modules
+ * Methods, Singleton Methods
+ * Constants
-=== Class and Module Definition
+2.1.1 Class/module definition
To define a class or module, use the functions below:
@@ -317,21 +311,21 @@ To define nested classes or modules, use the functions below:
VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super)
VALUE rb_define_module_under(VALUE outer, const char *name)
-=== Method and Singleton Method Definition
+2.1.2 Method/singleton method definition
To define methods or singleton methods, use these functions:
- void rb_define_method(VALUE klass, const char *name,
+ void rb_define_method(VALUE klass, const char *name,
VALUE (*func)(), int argc)
- void rb_define_singleton_method(VALUE object, const char *name,
+ void rb_define_singleton_method(VALUE object, const char *name,
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.
If `argc' is negative, it specifies the calling sequence, not number of
-the arguments.
+the arguments.
If argc is -1, the function will be called as:
@@ -349,16 +343,16 @@ where obj is the receiver, and args is the Ruby array containing
actual arguments.
There are some more functions to define methods. One takes an ID
-as the name of method to be defined. See also ID or Symbol below.
+as the name of method to be defined. See 2.2.2 for IDs.
- void rb_define_method_id(VALUE klass, ID name,
+ void rb_define_method_id(VALUE klass, ID name,
VALUE (*func)(ANYARGS), int argc)
There are two functions to define private/protected methods:
- void rb_define_private_method(VALUE klass, const char *name,
+ void rb_define_private_method(VALUE klass, const char *name,
VALUE (*func)(), int argc)
- void rb_define_protected_method(VALUE klass, const char *name,
+ void rb_define_protected_method(VALUE klass, const char *name,
VALUE (*func)(), int argc)
At last, rb_define_module_function defines a module functions,
@@ -375,7 +369,7 @@ or
To define module functions, use:
- void rb_define_module_function(VALUE module, const char *name,
+ void rb_define_module_function(VALUE module, const char *name,
VALUE (*func)(), int argc)
In addition, function-like methods, which are private methods defined
@@ -400,7 +394,7 @@ func has to take the klass as the argument and return a newly
allocated instance. This instance should be as empty as possible,
without any expensive (including external) resources.
-=== Constant Definition
+2.1.3 Constant definition
We have 2 functions to define constants:
@@ -410,11 +404,11 @@ We have 2 functions to define constants:
The former is to define a constant under specified class/module. The
latter is to define a global constant.
-== Use Ruby Features from C
+2.2 Use Ruby features from C
There are several ways to invoke Ruby's features from C code.
-=== Evaluate Ruby Programs in a String
+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:
@@ -424,7 +418,7 @@ evaluate the string as Ruby program. This function will do the job:
Evaluation is done under the current context, thus current local variables
of the innermost method (which is defined by Ruby) can be accessed.
-Note that the evaluation can raise an exception. There is a safer
+Note that the evaluation can raise an exception. There is a safer
function:
VALUE rb_eval_string_protect(const char *str, int *state)
@@ -432,7 +426,8 @@ function:
It returns nil when an error occur. Moreover, *state is zero if str was
successfully evaluated, or nonzero otherwise.
-=== ID or Symbol
+
+2.2.2 ID or Symbol
You can invoke methods directly, without parsing the string. First I
need to explain about ID. ID is the integer number to represent
@@ -440,30 +435,18 @@ Ruby's identifiers such as variable names. The Ruby data type
corresponding to ID is Symbol. It can be accessed from Ruby in the
form:
- :Identifier
-
+ :Identifier
or
-
- :"any kind of string"
+ :"any kind of string"
You can get the ID value from a string within C code by using
rb_intern(const char *name)
- rb_intern_str(VALUE name)
You can retrieve ID from Ruby object (Symbol or String) given as an
argument by using
rb_to_id(VALUE symbol)
- rb_check_id(volatile VALUE *name)
- rb_check_id_cstr(const char *name, long len, rb_encoding *enc)
-
-These functions try to convert the argument to a String if it was not
-a Symbol nor a String. The second function stores the converted
-result into *name, and returns 0 if the string is not a known symbol.
-After this function returned a non-zero value, *name is always a
-Symbol or a String, otherwise it is a String if the result is 0.
-The third function takes NUL-terminated C string, not Ruby VALUE.
You can convert C ID to Ruby Symbol by using
@@ -473,7 +456,7 @@ and to convert Ruby Symbol object to ID, use
ID SYM2ID(VALUE symbol)
-=== Invoke Ruby Method from C
+2.2.3 Invoke Ruby method from C
To invoke methods directly, you can use the function below
@@ -482,7 +465,7 @@ To invoke methods directly, you can use the function below
This function invokes a method on the recv, with the method name
specified by the symbol mid.
-=== Accessing the Variables and Constants
+2.2.4 Accessing the variables and constants
You can access class variables and instance variables using access
functions. Also, global variables can be shared between both
@@ -499,11 +482,11 @@ To access the constants of the class/module:
VALUE rb_const_get(VALUE obj, ID id)
-See also Constant Definition above.
+See 2.1.3 for defining new constant.
-= Information Sharing Between Ruby and C
+3. Information sharing between Ruby and C
-=== Ruby Constants That C Can Be Accessed From C
+3.1 Ruby constants that C can be accessed from C
As stated in section 1.3,
the following Ruby constants can be referred from C.
@@ -517,7 +500,7 @@ Boolean values. Qfalse is false in C also (i.e. 0).
Ruby nil in C scope.
-== Global Variables Shared Between C and Ruby
+3.2 Global variables shared between C and Ruby
Information can be shared between the two environments using shared global
variables. To define them, you can use functions listed below:
@@ -561,12 +544,12 @@ The prototypes of the getter and setter functions are as follows:
void (*setter)(VALUE val, ID id);
-== Encapsulate C Data into a Ruby Object
+3.3 Encapsulate C data into a Ruby object
To wrap and objectify a C pointer as a Ruby object (so called
DATA), use Data_Wrap_Struct().
- Data_Wrap_Struct(klass, mark, free, sval)
+ Data_Wrap_Struct(klass, mark, free, ptr)
Data_Wrap_Struct() returns a created DATA object. The klass argument
is the class for the DATA object. The mark argument is the function
@@ -599,25 +582,25 @@ Data_Get_Struct().
A pointer to the structure will be assigned to the variable sval.
-See the example below for details.
+See the example below for details.
-= Example - Creating dbm Extension
+4. Example - Creating dbm extension
OK, here's the example of making an extension library. This is the
extension to access DBMs. The full source is included in the ext/
directory in the Ruby's source tree.
-== Make the Directory
+(1) make the directory
% mkdir ext/dbm
Make a directory for the extension library under ext directory.
-== Design the Library
+(2) design the library
You need to design the library features, before making it.
-== Write the C Code
+(3) write C code.
You need to write C code for your extension library. If your library
has only one source file, choosing ``LIBRARY.c'' as a file name is
@@ -634,37 +617,41 @@ the library.
Here's the example of an initializing function.
- void
- Init_dbm(void)
- {
- /* define DBM class */
- cDBM = rb_define_class("DBM", rb_cObject);
- /* DBM includes Enumerable module */
- rb_include_module(cDBM, rb_mEnumerable);
-
- /* DBM has class method open(): arguments are received as C array */
- rb_define_singleton_method(cDBM, "open", fdbm_s_open, -1);
-
- /* DBM instance method close(): no args */
- rb_define_method(cDBM, "close", fdbm_close, 0);
- /* DBM instance method []: 1 argument */
- rb_define_method(cDBM, "[]", fdbm_fetch, 1);
-
- /* ... */
-
- /* ID for a instance variable to store DBM data */
- id_dbm = rb_intern("dbm");
- }
-
-The dbm extension wraps the dbm struct in the C environment using
+--
+void
+Init_dbm(void)
+{
+ /* define DBM class */
+ cDBM = rb_define_class("DBM", rb_cObject);
+ /* DBM includes Enumerate module */
+ rb_include_module(cDBM, rb_mEnumerable);
+
+ /* DBM has class method open(): arguments are received as C array */
+ rb_define_singleton_method(cDBM, "open", fdbm_s_open, -1);
+
+ /* DBM instance method close(): no args */
+ rb_define_method(cDBM, "close", fdbm_close, 0);
+ /* DBM instance method []: 1 argument */
+ rb_define_method(cDBM, "[]", fdbm_fetch, 1);
+ :
+
+ /* ID for a instance variable to store DBM data */
+ id_dbm = rb_intern("dbm");
+}
+--
+
+The dbm extension wraps the dbm struct in the C environment using
Data_Make_Struct.
- struct dbmdata {
- int di_size;
- DBM *di_dbm;
- };
+--
+struct dbmdata {
+ int di_size;
+ DBM *di_dbm;
+};
- obj = Data_Make_Struct(klass, struct dbmdata, 0, free_dbm, dbmp);
+
+obj = Data_Make_Struct(klass, struct dbmdata, 0, free_dbm, dbmp);
+--
This code wraps the dbmdata structure into a Ruby object. We avoid
wrapping DBM* directly, because we want to cache size information.
@@ -672,10 +659,12 @@ wrapping DBM* directly, because we want to cache size information.
To retrieve the dbmdata structure from a Ruby object, we define the
following macro:
- #define GetDBM(obj, dbmp) {\
- Data_Get_Struct(obj, struct dbmdata, dbmp);\
- if (dbmp->di_dbm == 0) closed_dbm();\
- }
+--
+#define GetDBM(obj, dbmp) {\
+ Data_Get_Struct(obj, struct dbmdata, dbmp);\
+ if (dbmp->di_dbm == 0) closed_dbm();\
+}
+--
This sort of complicated macro does the retrieving and close checking for
the DBM.
@@ -683,11 +672,13 @@ the DBM.
There are three kinds of way to receive method arguments. First,
methods with a fixed number of arguments receive arguments like this:
- static VALUE
- fdbm_delete(VALUE obj, VALUE keystr)
- {
- /* ... */
- }
+--
+static VALUE
+fdbm_delete(VALUE obj, VALUE keystr)
+{
+ :
+}
+--
The first argument of the C function is the self, the rest are the
arguments to the method.
@@ -695,15 +686,17 @@ arguments to the method.
Second, methods with an arbitrary number of arguments receive
arguments like this:
- static VALUE
- fdbm_s_open(int argc, VALUE *argv, VALUE klass)
- {
- /* ... */
- if (rb_scan_args(argc, argv, "11", &file, &vmode) == 1) {
- mode = 0666; /* default value */
- }
- /* ... */
- }
+--
+static VALUE
+fdbm_s_open(int argc, VALUE *argv, VALUE klass)
+{
+ :
+ if (rb_scan_args(argc, argv, "11", &file, &vmode) == 1) {
+ mode = 0666; /* default value */
+ }
+ :
+}
+--
The first argument is the number of method arguments, the second
argument is the C array of the method arguments, and the third
@@ -718,21 +711,25 @@ references.
The following is an example of a method that takes arguments by Ruby's
array:
- static VALUE
- thread_initialize(VALUE thread, VALUE args)
- {
- /* ... */
- }
+--
+static VALUE
+thread_initialize(VALUE thread, VALUE args)
+{
+ :
+}
+--
The first argument is the receiver, the second one is the Ruby array
which contains the arguments to the method.
-*Notice*: GC should know about global variables which refer to Ruby's objects,
-but are not exported to the Ruby world. You need to protect them by
+** Notice
+
+GC should know about global variables which refer to Ruby's objects, but
+are not exported to the Ruby world. You need to protect them by
void rb_global_variable(VALUE *var)
-== Prepare extconf.rb
+(4) prepare extconf.rb
If the file named extconf.rb exists, it will be executed to generate
Makefile.
@@ -745,26 +742,10 @@ need to put
at the top of the file. You can use the functions below to check
various conditions.
- have_macro(macro[, headers[, opt]]): check whether macro is defined
- have_library(lib[, func[, headers[, opt]]]): check whether library containing function exists
- find_library(lib[, func, *paths]): find library from paths
- have_func(func[, headers[, opt]): check whether function exists
- have_var(var[, headers[, opt]]): check whether variable exists
- have_header(header[, preheaders[, opt]]): check whether header file exists
- find_header(header, *paths): find header from paths
- have_framework(fw): check whether framework exists (for MacOS X)
- have_struct_member(type, member[, headers[, opt]]): check whether struct has member
- have_type(type[, headers[, opt]]): check whether type exists
- find_type(type, opt, *headers): check whether type exists in headers
- have_const(const[, headers[, opt]]): check whether constant is defined
- check_sizeof(type[, headers[, opts]]): check size of type
- check_signedness(type[, headers[, opts]]): check signedness of type
- convertible_int(type[, headers[, opts]]): find convertible integer type
- find_executable(bin[, path]): find excutable file path
- create_header(header): generate configured header
- create_makefile(target[, target_prefix]): generate Makefile
-
-See MakeMakefile for full documentation of these functions.
+ have_library(lib, func): check whether library containing function exists.
+ have_func(func, header): check whether function exists
+ have_header(header): check whether header file exists
+ create_makefile(target): generate Makefile
The value of the variables below will affect the Makefile.
@@ -781,7 +762,7 @@ If a compilation condition is not fulfilled, you should not call
``create_makefile''. The Makefile will not be generated, compilation will
not be done.
-== Prepare Depend (Optional)
+(5) prepare depend (optional)
If the file named depend exists, Makefile will include that file to
check dependencies. You can make this file by invoking
@@ -790,7 +771,7 @@ check dependencies. You can make this file by invoking
It's harmless. Prepare it.
-== Generate Makefile
+(6) generate Makefile
Try generating the Makefile by:
@@ -805,7 +786,7 @@ You don't need this step if you put the extension library under the ext
directory of the ruby source tree. In that case, compilation of the
interpreter will do this step for you.
-== Run make
+(7) make
Type
@@ -814,38 +795,36 @@ Type
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.
-== Debug
+(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
you can inspect the extension with the debugger.
-== Done! Now You Have the Extension Library
+(9) done, now you have the extension library
You can do anything you want with your library. The author of Ruby
will not claim any restrictions on your code depending on the Ruby API.
Feel free to use, modify, distribute or sell your program.
-= Appendix A. Ruby Source Files Overview
-
-== Ruby Language Core
-
-class.c :: classes and modules
-error.c :: exception classes and exception mechanism
-gc.c :: memory management
-load.c :: library loading
-object.c :: objects
-variable.c :: variables and constants
+Appendix A. Ruby source files overview
-== Ruby Syntax Parser
+ruby language core
-parse.y :: grammar definition
-parse.c :: automatically generated from parse.y
-keywords :: reserved keywords
-lex.c :: automatically generated from keywords
+ class.c : classes and modules
+ error.c : exception classes and exception mechanism
+ gc.c : memory management
+ load.c : library loading
+ object.c : objects
+ variable.c : variables and constants
-== Ruby Evaluator (a.k.a. YARV)
+ruby syntax parser
+ parse.y
+ -> parse.c : automatically generated
+ keywords : reserved keywords
+ -> lex.c : automatically generated
+ruby evaluator (a.k.a. YARV)
compile.c
eval.c
eval_error.c
@@ -870,8 +849,7 @@ lex.c :: automatically generated from keywords
-> opt*.inc : automatically generated
-> vm.inc : automatically generated
-== Regular Expression Engine (Oniguruma)
-
+regular expression engine (oniguruma)
regex.c
regcomp.c
regenc.c
@@ -880,18 +858,18 @@ lex.c :: automatically generated from keywords
regparse.c
regsyntax.c
-== Utility Functions
+utility functions
-debug.c :: debug symbols for C debuggger
-dln.c :: dynamic loading
-st.c :: general purpose hash table
-strftime.c :: formatting times
-util.c :: misc utilities
+ debug.c : debug symbols for C debuggger
+ dln.c : dynamic loading
+ st.c : general purpose hash table
+ strftime.c : formatting times
+ util.c : misc utilities
-== Ruby Interpreter Implementation
+ruby interpreter implementation
dmyext.c
- dmydln.c
+ dmydln.c
dmyencoding.c
id.c
inits.c
@@ -902,568 +880,587 @@ util.c :: misc utilities
gem_prelude.rb
prelude.rb
-== Class Library
-
-array.c :: Array
-bignum.c :: Bignum
-compar.c :: Comparable
-complex.c :: Complex
-cont.c :: Fiber, Continuation
-dir.c :: Dir
-enum.c :: Enumerable
-enumerator.c :: Enumerator
-file.c :: File
-hash.c :: Hash
-io.c :: IO
-marshal.c :: Marshal
-math.c :: Math
-numeric.c :: Numeric, Integer, Fixnum, Float
-pack.c :: Array#pack, String#unpack
-proc.c :: Binding, Proc
-process.c :: Process
-random.c :: random number
-range.c :: Range
-rational.c :: Rational
-re.c :: Regexp, MatchData
-signal.c :: Signal
-sprintf.c :: String#sprintf
-string.c :: String
-struct.c :: Struct
-time.c :: Time
-
-defs/known_errors.def :: Errno::* exception classes
--> known_errors.inc :: automatically generated
-
-== Multilingualization
-
-encoding.c :: Encoding
-transcode.c :: Encoding::Converter
-enc/*.c :: encoding classes
-enc/trans/* :: codepoint mapping tables
-
-== goruby Interpreter Implementation
+class library
+
+ array.c : Array
+ bignum.c : Bignum
+ compar.c : Comparable
+ complex.c : Complex
+ cont.c : Fiber, Continuation
+ dir.c : Dir
+ enum.c : Enumerable
+ enumerator.c : Enumerator
+ file.c : File
+ hash.c : Hash
+ io.c : IO
+ marshal.c : Marshal
+ math.c : Math
+ numeric.c : Numeric, Integer, Fixnum, Float
+ pack.c : Array#pack, String#unpack
+ proc.c : Binding, Proc
+ process.c : Process
+ random.c : random number
+ range.c : Range
+ rational.c : Rational
+ re.c : Regexp, MatchData
+ signal.c : Signal
+ sprintf.c :
+ string.c : String
+ struct.c : Struct
+ time.c : Time
+
+ defs/known_errors.def : Errno::* exception classes
+ -> known_errors.inc : automatically generated
+
+multilingualization
+ encoding.c : Encoding
+ transcode.c : Encoding::Converter
+ enc/*.c : encoding classes
+ enc/trans/* : codepoint mapping tables
+
+goruby interpreter implementation
+
goruby.c
golf_prelude.rb : goruby specific libraries.
-> golf_prelude.c : automatically generated
-= Appendix B. Ruby Extension API Reference
-
-== Types
-
-VALUE ::
+Appendix B. Ruby extension API reference
- The type for the Ruby object. Actual structures are defined in ruby.h,
- such as struct RString, etc. To refer the values in structures, use
- casting macros like RSTRING(obj).
+** Types
-== Variables and Constants
+ VALUE
-Qnil::
- nil object
+The type for the Ruby object. Actual structures are defined in ruby.h,
+such as struct RString, etc. To refer the values in structures, use
+casting macros like RSTRING(obj).
-Qtrue::
- true object (default true value)
+** Variables and constants
-Qfalse::
- false object
+ Qnil
-== C Pointer Wrapping
+const: nil object
-Data_Wrap_Struct(VALUE klass, void (*mark)(), void (*free)(), void *sval) ::
+ Qtrue
- Wrap a C pointer into a Ruby object. If object has references to other
- Ruby objects, they should be marked by using the mark function during
- the GC process. Otherwise, mark should be 0. When this object is no
- longer referred by anywhere, the pointer will be discarded by free
- function.
+const: true object(default true value)
-Data_Make_Struct(klass, type, mark, free, sval) ::
+ Qfalse
- This macro allocates memory using malloc(), assigns it to the variable
- sval, and returns the DATA encapsulating the pointer to memory region.
+const: false object
-Data_Get_Struct(data, type, sval) ::
+** C pointer wrapping
- This macro retrieves the pointer value from DATA, and assigns it to
- the variable sval.
+ Data_Wrap_Struct(VALUE klass, void (*mark)(), void (*free)(), void *sval)
-== Checking Data Types
+Wrap a C pointer into a Ruby object. If object has references to other
+Ruby objects, they should be marked by using the mark function during
+the GC process. Otherwise, mark should be 0. When this object is no
+longer referred by anywhere, the pointer will be discarded by free
+function.
-TYPE(value) ::
+ Data_Make_Struct(klass, type, mark, free, sval)
- Internal type (T_NIL, T_FIXNUM, etc.)
+This macro allocates memory using malloc(), assigns it to the variable
+sval, and returns the DATA encapsulating the pointer to memory region.
-FIXNUM_P(value) ::
+ Data_Get_Struct(data, type, sval)
- Is +value+ a Fixnum?
+This macro retrieves the pointer value from DATA, and assigns it to
+the variable sval.
-NIL_P(value) ::
+** Checking data types
- Is +value+ nil?
+TYPE(value)
+FIXNUM_P(value)
+NIL_P(value)
+void Check_Type(VALUE value, int type)
+void Check_SafeStr(VALUE value)
-void Check_Type(VALUE value, int type) ::
+** Data type conversion
- Ensures +value+ is of the given internal +type+ or raises a TypeError
+FIX2INT(value), INT2FIX(i)
+FIX2LONG(value), LONG2FIX(l)
+NUM2INT(value), INT2NUM(i)
+NUM2UINT(value), UINT2NUM(ui)
+NUM2LONG(value), LONG2NUM(l)
+NUM2ULONG(value), ULONG2NUM(ul)
+NUM2LL(value), LL2NUM(ll)
+NUM2ULL(value), ULL2NUM(ull)
+NUM2OFFT(value), OFFT2NUM(off)
+NUM2SIZET(value), SIZET2NUM(size)
+NUM2SSIZET(value), SSIZET2NUM(ssize)
+NUM2DBL(value)
+rb_float_new(f)
+StringValue(value)
+StringValuePtr(value)
+StringValueCStr(value)
+rb_str_new2(s)
-SaveStringValue(value) ::
+** defining class/module
- Checks that +value+ is a String and is not tainted
+ VALUE rb_define_class(const char *name, VALUE super)
-== Data Type Conversion
+Defines a new Ruby class as a subclass of super.
-FIX2INT(value), INT2FIX(i) ::
+ VALUE rb_define_class_under(VALUE module, const char *name, VALUE super)
- Fixnum <-> integer
+Creates a new Ruby class as a subclass of super, under the module's
+namespace.
-FIX2LONG(value), LONG2FIX(l) ::
+ VALUE rb_define_module(const char *name)
- Fixnum <-> long
+Defines a new Ruby module.
-NUM2INT(value), INT2NUM(i) ::
+ VALUE rb_define_module_under(VALUE module, const char *name)
- Numeric <-> integer
+Defines a new Ruby module under the module's namespace.
-NUM2UINT(value), UINT2NUM(ui) ::
+ void rb_include_module(VALUE klass, VALUE module)
- Numeric <-> unsigned integer
+Includes module into class. If class already includes it, just
+ignored.
-NUM2LONG(value), LONG2NUM(l) ::
+ void rb_extend_object(VALUE object, VALUE module)
- Numeric <-> long
+Extend the object with the module's attributes.
-NUM2ULONG(value), ULONG2NUM(ul) ::
+** Defining Global Variables
- Numeric <-> unsigned long
+ void rb_define_variable(const char *name, VALUE *var)
-NUM2LL(value), LL2NUM(ll) ::
+Defines a global variable which is shared between C and Ruby. If name
+contains a character which is not allowed to be part of the symbol,
+it can't be seen from Ruby programs.
- Numeric <-> long long
+ void rb_define_readonly_variable(const char *name, VALUE *var)
-NUM2ULL(value), ULL2NUM(ull) ::
+Defines a read-only global variable. Works just like
+rb_define_variable(), except the defined variable is read-only.
- Numeric <-> unsigned long long
+ void rb_define_virtual_variable(const char *name,
+ VALUE (*getter)(), VALUE (*setter)())
-NUM2OFFT(value), OFFT2NUM(off) ::
+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:
- Numeric <-> off_t
+ VALUE getter(ID id)
+ void setter(VALUE val, ID id)
-NUM2SIZET(value), SIZET2NUM(size) ::
+The getter function must return the value for the access.
- Numeric <-> size_t
+ void rb_define_hooked_variable(const char *name, VALUE *var,
+ VALUE (*getter)(), VALUE (*setter)())
-NUM2SSIZET(value), SSIZET2NUM(ssize) ::
+Defines hooked variable. It's a virtual variable with a C variable.
+The getter is called as
- Numeric <-> ssize_t
+ VALUE getter(ID id, VALUE *var)
-NUM2DBL(value) ::
+returning a new value. The setter is called as
- Numeric -> double
+ void setter(VALUE val, ID id, VALUE *var)
-rb_float_new(f) ::
+GC requires C global variables which hold Ruby values to be marked.
- double -> Float
+ void rb_global_variable(VALUE *var)
-StringValue(value) ::
+Tells GC to protect these variables.
- Object with #to_str -> String
+** Constant Definition
-StringValuePtr(value) ::
+ void rb_define_const(VALUE klass, const char *name, VALUE val)
- Object with #to_str -> pointer to String data
+Defines a new constant under the class/module.
-StringValueCStr(value) ::
+ void rb_define_global_const(const char *name, VALUE val)
- Object with #to_str -> pointer to String data without NULL bytes
+Defines a global constant. This is just the same as
-rb_str_new2(s) ::
+ rb_define_const(cKernal, name, val)
- char * -> String
+** Method Definition
-== Defining Class and Module
+ rb_define_method(VALUE klass, const char *name, VALUE (*func)(), int argc)
-VALUE rb_define_class(const char *name, VALUE super) ::
+Defines a method for the class. func is the function pointer. argc
+is the number of arguments. if argc is -1, the function will receive
+3 arguments: argc, argv, and self. if argc is -2, the function will
+receive 2 arguments, self and args, where args is a Ruby array of
+the method arguments.
- Defines a new Ruby class as a subclass of super.
+ rb_define_private_method(VALUE klass, const char *name, VALUE (*func)(), int argc)
-VALUE rb_define_class_under(VALUE module, const char *name, VALUE super) ::
+Defines a private method for the class. Arguments are same as
+rb_define_method().
- Creates a new Ruby class as a subclass of super, under the module's
- namespace.
+ rb_define_singleton_method(VALUE klass, const char *name, VALUE (*func)(), int argc)
-VALUE rb_define_module(const char *name) ::
+Defines a singleton method. Arguments are same as rb_define_method().
- Defines a new Ruby module.
+ rb_scan_args(int argc, VALUE *argv, const char *fmt, ...)
-VALUE rb_define_module_under(VALUE module, const char *name) ::
+Retrieve argument from argc and argv to given VALUE references
+according to the format string. The format can be described in ABNF
+as follows:
- Defines a new Ruby module under the module's namespace.
+--
+scan-arg-spec := param-arg-spec [option-hash-arg-spec] [block-arg-spec]
-void rb_include_module(VALUE klass, VALUE module) ::
+param-arg-spec := pre-arg-spec [post-arg-spec] / post-arg-spec / pre-opt-post-arg-spec
+pre-arg-spec := num-of-leading-mandatory-args [num-of-optional-args]
+post-arg-spec := sym-for-variable-length-args [num-of-trailing-mandatory-args]
+pre-opt-post-arg-spec := num-of-leading-mandatory-args num-of-optional-args num-of-trailing-mandatory-args
+option-hash-arg-spec := sym-for-option-hash-arg
+block-arg-spec := sym-for-block-arg
- Includes module into class. If class already includes it, just ignored.
+num-of-leading-mandatory-args := DIGIT ; The number of leading
+ ; mandatory arguments
+num-of-optional-args := DIGIT ; The number of optional
+ ; arguments
+sym-for-variable-length-args := "*" ; Indicates that variable
+ ; length arguments are
+ ; captured as a ruby array
+num-of-trailing-mandatory-args := DIGIT ; The number of trailing
+ ; mandatory arguments
+sym-for-option-hash-arg := ":" ; Indicates that an option
+ ; hash is captured if the last
+ ; argument is a hash or can be
+ ; converted to a hash with
+ ; #to_hash. When the last
+ ; argument is nil, it is
+ ; captured if it is not
+ ; ambiguous to take it as
+ ; empty option hash; i.e. '*'
+ ; is not specified and
+ ; arguments are given more
+ ; than sufficient.
+sym-for-block-arg := "&" ; Indicates that an iterator
+ ; block should be captured if
+ ; given
+--
-void rb_extend_object(VALUE object, VALUE module) ::
+For example, "12" means that the method requires at least one
+argument, and at most receives three (1+2) arguments. So, the format
+string must be followed by three variable references, which are to be
+assigned to captured arguments. For omitted arguments, variables are
+set to Qnil. NULL can be put in place of a variable reference, which
+means the corresponding captured argument(s) should be just dropped.
- Extend the object with the module's attributes.
+The number of given arguments, excluding an option hash or iterator
+block, is returned.
-== Defining Global Variables
+** Invoking Ruby method
-void rb_define_variable(const char *name, VALUE *var) ::
+ VALUE rb_funcall(VALUE recv, ID mid, int narg, ...)
- Defines a global variable which is shared between C and Ruby. If name
- contains a character which is not allowed to be part of the symbol,
- it can't be seen from Ruby programs.
+Invokes a method. To retrieve mid from a method name, use rb_intern().
-void rb_define_readonly_variable(const char *name, VALUE *var) ::
+ VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv)
- Defines a read-only global variable. Works just like
- rb_define_variable(), except the defined variable is read-only.
+Invokes a method, passing arguments by an array of values.
-void rb_define_virtual_variable(const char *name, VALUE (*getter)(), VALUE (*setter)()) ::
+ VALUE rb_eval_string(const char *str)
- 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:
+Compiles and executes the string as a Ruby program.
- VALUE getter(ID id)
- void setter(VALUE val, ID id)
+ ID rb_intern(const char *name)
- The getter function must return the value for the access.
+Returns ID corresponding to the name.
-void rb_define_hooked_variable(const char *name, VALUE *var, VALUE (*getter)(), VALUE (*setter)()) ::
+ char *rb_id2name(ID id)
- Defines hooked variable. It's a virtual variable with a C variable.
- The getter is called as
+Returns the name corresponding ID.
- VALUE getter(ID id, VALUE *var)
+ char *rb_class2name(VALUE klass)
- returning a new value. The setter is called as
+Returns the name of the class.
- void setter(VALUE val, ID id, VALUE *var)
+ int rb_respond_to(VALUE object, ID id)
- GC requires C global variables which hold Ruby values to be marked.
+Returns true if the object responds to the message specified by id.
-void rb_global_variable(VALUE *var)
+** Instance Variables
- Tells GC to protect these variables.
+ VALUE rb_iv_get(VALUE obj, const char *name)
-== Constant Definition
+Retrieve the value of the instance variable. If the name is not
+prefixed by `@', that variable shall be inaccessible from Ruby.
-void rb_define_const(VALUE klass, const char *name, VALUE val) ::
+ VALUE rb_iv_set(VALUE obj, const char *name, VALUE val)
- Defines a new constant under the class/module.
+Sets the value of the instance variable.
-void rb_define_global_const(const char *name, VALUE val) ::
+** Control Structure
- Defines a global constant. This is just the same as
+ VALUE rb_block_call(VALUE recv, ID mid, int argc, VALUE * argv,
+ VALUE (*func) (ANYARGS), VALUE data2)
- rb_define_const(cKernal, name, val)
+Calls a method on the recv, with the method name specified by the
+symbol mid, with argc arguments in argv, supplying func as the
+block. When func is called as the block, it will receive the value
+from yield as the first argument, and data2 as the second argument.
+When yielded with multiple values (in C, rb_yield_values(),
+rb_yield_values2() and rb_yield_splat()), data2 is packed as an Array,
+whereas yielded values can be gotten via argc/argv of the third/fourth
+arguments.
-== Method Definition
+ [OBSOLETE] VALUE rb_iterate(VALUE (*func1)(), void *arg1, VALUE (*func2)(), void *arg2)
-rb_define_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::
+Calls the function func1, supplying func2 as the block. func1 will be
+called with the argument arg1. func2 receives the value from yield as
+the first argument, arg2 as the second argument.
+
+When rb_iterate is used in 1.9, func1 has to call some Ruby-level method.
+This function is obsolete since 1.9; use rb_block_call instead.
- Defines a method for the class. func is the function pointer. argc
- is the number of arguments. if argc is -1, the function will receive
- 3 arguments: argc, argv, and self. if argc is -2, the function will
- receive 2 arguments, self and args, where args is a Ruby array of
- the method arguments.
+ VALUE rb_yield(VALUE val)
-rb_define_private_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::
+Evaluates the block with value val.
- Defines a private method for the class. Arguments are same as
- rb_define_method().
+ VALUE rb_rescue(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2)
-rb_define_singleton_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::
+Calls the function func1, with arg1 as the argument. If an exception
+occurs during func1, it calls func2 with arg2 as the argument. The
+return value of rb_rescue() is the return value from func1 if no
+exception occurs, from func2 otherwise.
- Defines a singleton method. Arguments are same as rb_define_method().
+ VALUE rb_ensure(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2)
-rb_scan_args(int argc, VALUE *argv, const char *fmt, ...) ::
+Calls the function func1 with arg1 as the argument, then calls func2
+with arg2 if execution terminated. The return value from
+rb_ensure() is that of func1 when no exception occured.
- Retrieve argument from argc and argv to given VALUE references
- according to the format string. The format can be described in ABNF
- as follows:
+ VALUE rb_protect(VALUE (*func) (VALUE), VALUE arg, int *state)
- scan-arg-spec := param-arg-spec [option-hash-arg-spec] [block-arg-spec]
+Calls the function func with arg as the argument. If no exception
+occured during func, it returns the result of func and *state is zero.
+Otherwise, it returns Qnil and sets *state to nonzero. If state is
+NULL, it is not set in both cases.
- param-arg-spec := pre-arg-spec [post-arg-spec] / post-arg-spec /
- pre-opt-post-arg-spec
- pre-arg-spec := num-of-leading-mandatory-args [num-of-optional-args]
- post-arg-spec := sym-for-variable-length-args
- [num-of-trailing-mandatory-args]
- pre-opt-post-arg-spec := num-of-leading-mandatory-args num-of-optional-args
- num-of-trailing-mandatory-args
- option-hash-arg-spec := sym-for-option-hash-arg
- block-arg-spec := sym-for-block-arg
+ void rb_jump_tag(int state)
- num-of-leading-mandatory-args := DIGIT ; The number of leading
- ; mandatory arguments
- num-of-optional-args := DIGIT ; The number of optional
- ; arguments
- sym-for-variable-length-args := "*" ; Indicates that variable
- ; length arguments are
- ; captured as a ruby array
- num-of-trailing-mandatory-args := DIGIT ; The number of trailing
- ; mandatory arguments
- sym-for-option-hash-arg := ":" ; Indicates that an option
- ; hash is captured if the last
- ; argument is a hash or can be
- ; converted to a hash with
- ; #to_hash. When the last
- ; argument is nil, it is
- ; captured if it is not
- ; ambiguous to take it as
- ; empty option hash; i.e. '*'
- ; is not specified and
- ; arguments are given more
- ; than sufficient.
- sym-for-block-arg := "&" ; Indicates that an iterator
- ; block should be captured if
- ; given
+Continues the exception caught by rb_protect() and rb_eval_string_protect().
+state must be the returned value from those functions. This function
+never return to the caller.
- For example, "12" means that the method requires at least one
- argument, and at most receives three (1+2) arguments. So, the format
- string must be followed by three variable references, which are to be
- assigned to captured arguments. For omitted arguments, variables are
- set to Qnil. NULL can be put in place of a variable reference, which
- means the corresponding captured argument(s) should be just dropped.
+** Exceptions and Errors
- The number of given arguments, excluding an option hash or iterator
- block, is returned.
+ void rb_warn(const char *fmt, ...)
-== Invoking Ruby method
+Prints a warning message according to a printf-like format.
-VALUE rb_funcall(VALUE recv, ID mid, int narg, ...) ::
+ void rb_warning(const char *fmt, ...)
- Invokes a method. To retrieve mid from a method name, use rb_intern().
+Prints a warning message according to a printf-like format, if
+$VERBOSE is true.
-VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv) ::
+void rb_raise(rb_eRuntimeError, const char *fmt, ...)
- Invokes a method, passing arguments by an array of values.
+Raises RuntimeError. The fmt is a format string just like printf().
-VALUE rb_eval_string(const char *str) ::
+ void rb_raise(VALUE exception, const char *fmt, ...)
- Compiles and executes the string as a Ruby program.
+Raises a class exception. The fmt is a format string just like printf().
-ID rb_intern(const char *name) ::
+ void rb_fatal(const char *fmt, ...)
- Returns ID corresponding to the name.
+Raises a fatal error, terminates the interpreter. No exception handling
+will be done for fatal errors, but ensure blocks will be executed.
-char *rb_id2name(ID id) ::
+ void rb_bug(const char *fmt, ...)
- Returns the name corresponding ID.
+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.
-char *rb_class2name(VALUE klass) ::
+** Initialize and Start the Interpreter
- Returns the name of the class.
-
-int rb_respond_to(VALUE object, ID id) ::
-
- Returns true if the object responds to the message specified by id.
-
-== Instance Variables
-
-VALUE rb_iv_get(VALUE obj, const char *name) ::
-
- Retrieve the value of the instance variable. If the name is not
- prefixed by `@', that variable shall be inaccessible from Ruby.
-
-VALUE rb_iv_set(VALUE obj, const char *name, VALUE val) ::
-
- Sets the value of the instance variable.
-
-== Control Structure
-
-VALUE rb_block_call(VALUE recv, ID mid, int argc, VALUE * argv, VALUE (*func) (ANYARGS), VALUE data2) ::
+The embedding API functions are below (not needed for extension libraries):
- Calls a method on the recv, with the method name specified by the
- symbol mid, with argc arguments in argv, supplying func as the
- block. When func is called as the block, it will receive the value
- from yield as the first argument, and data2 as the second argument.
- When yielded with multiple values (in C, rb_yield_values(),
- rb_yield_values2() and rb_yield_splat()), data2 is packed as an Array,
- whereas yielded values can be gotten via argc/argv of the third/fourth
- arguments.
+ void ruby_init()
-[OBSOLETE] VALUE rb_iterate(VALUE (*func1)(), void *arg1, VALUE (*func2)(), void *arg2) ::
+Initializes the interpreter.
- Calls the function func1, supplying func2 as the block. func1 will be
- called with the argument arg1. func2 receives the value from yield as
- the first argument, arg2 as the second argument.
+ void ruby_options(int argc, char **argv)
- When rb_iterate is used in 1.9, func1 has to call some Ruby-level method.
- This function is obsolete since 1.9; use rb_block_call instead.
+Process command line arguments for the interpreter.
-VALUE rb_yield(VALUE val) ::
+ void ruby_run()
- Evaluates the block with value val.
+Starts execution of the interpreter.
-VALUE rb_rescue(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::
+ void ruby_script(char *name)
- Calls the function func1, with arg1 as the argument. If an exception
- occurs during func1, it calls func2 with arg2 as the argument. The
- return value of rb_rescue() is the return value from func1 if no
- exception occurs, from func2 otherwise.
+Specifies the name of the script ($0).
-VALUE rb_ensure(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::
+** Hooks for the Interpreter Events
- Calls the function func1 with arg1 as the argument, then calls func2
- with arg2 if execution terminated. The return value from
- rb_ensure() is that of func1 when no exception occured.
+ void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data)
-VALUE rb_protect(VALUE (*func) (VALUE), VALUE arg, int *state) ::
+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
- Calls the function func with arg as the argument. If no exception
- occured during func, it returns the result of func and *state is zero.
- Otherwise, it returns Qnil and sets *state to nonzero. If state is
- NULL, it is not set in both cases.
- You have to clear the error info with rb_set_errinfo(Qnil) when
- ignoring the caught exception.
+The definition of rb_event_hook_func_t is below:
-void rb_jump_tag(int state) ::
+ typedef void (*rb_event_hook_func_t)(rb_event_t event, VALUE data,
+ VALUE self, ID id, VALUE klass)
- Continues the exception caught by rb_protect() and rb_eval_string_protect().
- state must be the returned value from those functions. This function
- never return to the caller.
+The third argument `data' to rb_add_event_hook() is passed to the hook
+function as the second argument, which was the pointer to the current
+NODE in 1.8. See RB_EVENT_HOOKS_HAVE_CALLBACK_DATA below.
-void rb_iter_break() ::
+ int rb_remove_event_hook(rb_event_hook_func_t func)
- Exits from the current innermost block. This function never return to
- the caller.
+Removes the specified hook function.
-void rb_iter_break_value(VALUE value) ::
+** Macros for the Compatibilities
- Exits from the current innermost block with the value. The block will
- return the given argument value. This function never return to the
- caller.
+Some macros to check API compatibilities are available by default.
-== Exceptions and Errors
+ NORETURN_STYLE_NEW
-void rb_warn(const char *fmt, ...) ::
+Means that NORETURN macro is functional style instead of prefix.
- Prints a warning message according to a printf-like format.
+ HAVE_RB_DEFINE_ALLOC_FUNC
-void rb_warning(const char *fmt, ...) ::
+Means that function rb_define_alloc_func() is provided, that means the
+allocation framework is used. This is same as the result of
+have_func("rb_define_alloc_func", "ruby.h").
- Prints a warning message according to a printf-like format, if
- $VERBOSE is true.
+ HAVE_RB_REG_NEW_STR
-void rb_raise(rb_eRuntimeError, const char *fmt, ...) ::
+Means that function rb_reg_new_str() is provided, that creates Regexp
+object from String object. This is same as the result of
+have_func("rb_reg_new_str", "ruby.h").
- Raises RuntimeError. The fmt is a format string just like printf().
+ HAVE_RB_IO_T
-void rb_raise(VALUE exception, const char *fmt, ...) ::
+Means that type rb_io_t is provided.
- Raises a class exception. The fmt is a format string just like printf().
+ USE_SYMBOL_AS_METHOD_NAME
-void rb_fatal(const char *fmt, ...) ::
+Means that Symbols will be returned as method names, e.g.,
+Module#methods, #singleton_methods and so on.
- Raises a fatal error, terminates the interpreter. No exception handling
- will be done for fatal errors, but ensure blocks will be executed.
+ HAVE_RUBY_*_H
-void rb_bug(const char *fmt, ...) ::
+Defined in ruby.h and means correspoinding header is available. For
+instance, when HAVE_RUBY_ST_H is defined you should use ruby/st.h not
+mere st.h.
- 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.
+ RB_EVENT_HOOKS_HAVE_CALLBACK_DATA
-Note: In the format string, %i is used for Object#to_s (or Object#inspect if
-'+' flag is set) output (and related argument must be a VALUE). For integers
-in format strings, use %d.
+Means that rb_add_event_hook() takes the third argument `data', to be
+passed to the given event hook function.
-== Initialize and Start the Interpreter
+Appendix C. Functions Available in extconf.rb
-The embedding API functions are below (not needed for extension libraries):
+These functions are available in extconf.rb:
-void ruby_init() ::
+ have_macro(macro, headers)
- Initializes the interpreter.
+Checks whether macro is defined with header. Returns true if the macro
+is defined.
-void ruby_options(int argc, char **argv) ::
+ have_library(lib, func)
- Process command line arguments for the interpreter.
+Checks whether the library exists, containing the specified function.
+Returns true if the library exists.
-void ruby_run() ::
+ find_library(lib, func, path...)
- Starts execution of the interpreter.
+Checks whether a library which contains the specified function exists in
+path. Returns true if the library exists.
-void ruby_script(char *name) ::
+ have_func(func, header)
- Specifies the name of the script ($0).
+Checks whether func exists with header. Returns true if the function
+exists. To check functions in an additional library, you need to
+check that library first using have_library().
-== Hooks for the Interpreter Events
+ have_var(var, header)
- void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events,
- VALUE data)
+Checks whether var exists with header. Returns true if the variable
+exists. To check variables in an additional library, you need to
+check that library first using have_library().
-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
+ have_header(header)
-The definition of rb_event_hook_func_t is below:
+Checks whether header exists. Returns true if the header file exists.
- typedef void (*rb_event_hook_func_t)(rb_event_t event, VALUE data,
- VALUE self, ID id, VALUE klass)
+ find_header(header, path...)
-The third argument `data' to rb_add_event_hook() is passed to the hook
-function as the second argument, which was the pointer to the current
-NODE in 1.8. See RB_EVENT_HOOKS_HAVE_CALLBACK_DATA below.
+Checks whether header exists in path. Returns true if the header file
+exists.
- int rb_remove_event_hook(rb_event_hook_func_t func)
+ have_struct_member(type, member, header)
-Removes the specified hook function.
+Checks whether type has member with header. Returns true if the type
+is defined and has the member.
-== Macros for Compatibility
+ have_type(type, header, opt)
-Some macros to check API compatibilities are available by default.
+Checks whether type is defined with header. Returns true if the type
+is defined.
-NORETURN_STYLE_NEW ::
+ check_sizeof(type, header)
- Means that NORETURN macro is functional style instead of prefix.
+Checks the size of type in char with header. Returns the size if the
+type is defined, otherwise nil.
-HAVE_RB_DEFINE_ALLOC_FUNC ::
+ create_makefile(target)
- Means that function rb_define_alloc_func() is provided, that means the
- allocation framework is used. This is same as the result of
- have_func("rb_define_alloc_func", "ruby.h").
+Generates the Makefile for the extension library. If you don't invoke
+this method, the compilation will not be done.
-HAVE_RB_REG_NEW_STR ::
+ find_executable(bin, path)
- Means that function rb_reg_new_str() is provided, that creates Regexp
- object from String object. This is same as the result of
- have_func("rb_reg_new_str", "ruby.h").
+Finds command in path, which is File::PATH_SEPARATOR-separated list of
+directories. If path is nil or omitted, environment variable PATH
+will be used. Returns the path name of the command if it is found,
+otherwise nil.
-HAVE_RB_IO_T ::
+ with_config(withval[, default=nil])
- Means that type rb_io_t is provided.
+Parses the command line options and returns the value specified by
+--with-<withval>.
-USE_SYMBOL_AS_METHOD_NAME ::
+ enable_config(config, *defaults)
+ disable_config(config, *defaults)
- Means that Symbols will be returned as method names, e.g.,
- Module#methods, #singleton_methods and so on.
+Parses the command line options for boolean. Returns true if
+--enable-<config> is given, or false if --disable-<config> is given.
+Otherwise, yields defaults to the given block and returns the result
+if it is called with a block, or returns defaults.
-HAVE_RUBY_*_H ::
+ dir_config(target[, default_dir])
+ dir_config(target[, default_include, default_lib])
- Defined in ruby.h and means corresponding header is available. For
- instance, when HAVE_RUBY_ST_H is defined you should use ruby/st.h not
- mere st.h.
+Parses the command line options and adds the directories specified by
+--with-<target>-dir, --with-<target>-include, and/or --with-<target>-lib
+to $CFLAGS and/or $LDFLAGS. --with-<target>-dir=/path is equivalent to
+--with-<target>-include=/path/include --with-<target>-lib=/path/lib.
+Returns an array of the added directories ([include_dir, lib_dir]).
-RB_EVENT_HOOKS_HAVE_CALLBACK_DATA ::
+ pkg_config(pkg)
- Means that rb_add_event_hook() takes the third argument `data', to be
- passed to the given event hook function.
+Obtains the information for pkg by pkg-config command. The actual
+command name can be overridden by --with-pkg-config command line
+option.
/*
* Local variables:
diff --git a/README.EXT.ja b/README.EXT.ja
index 993a21ac79..f2d7609ff5 100644
--- a/README.EXT.ja
+++ b/README.EXT.ja
@@ -1,952 +1,941 @@
-# README.EXT.ja - -*- RDoc -*- created at: Mon Aug 7 16:45:54 JST 1995
+.\" README.EXT.ja - -*- Text -*- created at: Mon Aug 7 16:45:54 JST 1995
-Rubyの拡張ライブラリの作り方を説明します.
+Rubyγĥ饤֥κޤ
-= 基礎知識
+1μ
-Cの変数には型があり,データには型がありません.ですから,た
-とえばポインタをintの変数に代入すると,その値は整数として取
-り扱われます.逆にRubyの変数には型がなく,データに型がありま
-す.この違いのため,CとRubyは相互に変換しなければ,お互いの
-データをアクセスできません.
+CѿˤϷꡤǡˤϷޤ󡥤Ǥ顤
+ȤХݥ󥿤intѿȡͤȤƼ
+갷ޤդRubyѿˤϷʤǡ˷
+ΰ㤤ΤᡤCRubyߤѴʤСߤ
+ǡ򥢥Ǥޤ
-RubyのデータはVALUEというCの型で表現されます.VALUE型のデー
-タはそのデータタイプを自分で知っています.このデータタイプと
-いうのはデータ(オブジェクト)の実際の構造を意味していて,Ruby
-のクラスとはまた違ったものです.
+RubyΥǡVALUEȤCηɽޤVALUEΥǡ
+ϤΥǡפʬΤäƤޤΥǡפ
+Τϥǡ(֥)μºݤι¤̣ƤơRuby
+Υ饹ȤϤޤäΤǤ
-VALUEからCにとって意味のあるデータを取り出すためには
+VALUECˤȤäựΤǡФˤ
-1. VALUEのデータタイプを知る
-2. VALUEをCのデータに変換する
+ (1) VALUEΥǡפΤ
+ (2) VALUECΥǡѴ
-の両方が必要です.(1)を忘れると間違ったデータの変換が行われ
-て,最悪プログラムがcore dumpします.
+ξɬפǤ(1)˺ȴְäǡѴԤ
+ơǰץबcore dumpޤ
-== データタイプ
+1.1 ǡ
-Rubyにはユーザが使う可能性のある以下のタイプがあります.
+Rubyˤϥ桼ȤǽΤʲΥפޤ
-T_NIL :: nil
-T_OBJECT :: 通常のオブジェクト
-T_CLASS :: クラス
-T_MODULE :: モジュール
-T_FLOAT :: 浮動小数点数
-T_STRING :: 文字列
-T_REGEXP :: 正規表現
-T_ARRAY :: 配列
-T_HASH :: 連想配列
-T_STRUCT :: (Rubyの)構造体
-T_BIGNUM :: 多倍長整数
-T_FIXNUM :: Fixnum(31bitまたは63bit長整数)
-T_COMPLEX :: 複素数
-T_RATIONAL :: 有理数
-T_FILE :: 入出力
-T_TRUE :: 真
-T_FALSE :: 偽
-T_DATA :: データ
-T_SYMBOL :: シンボル
+ T_NIL nil
+ T_OBJECT ̾Υ֥
+ T_CLASS 饹
+ T_MODULE ⥸塼
+ T_FLOAT ư
+ T_STRING ʸ
+ T_REGEXP ɽ
+ T_ARRAY
+ T_HASH Ϣ
+ T_STRUCT (Ruby)¤
+ T_BIGNUM ¿Ĺ
+ T_FIXNUM Fixnum(31bitޤ63bitĹ)
+ T_COMPLEX ʣǿ
+ T_RATIONAL ͭ
+ T_FILE
+ T_TRUE
+ T_FALSE
+ T_DATA ǡ
+ T_SYMBOL ܥ
-その他に内部で利用されている以下のタイプがあります.
+¾ѤƤʲΥפޤ
- T_ICLASS
- T_MATCH
- T_UNDEF
- T_NODE
- T_ZOMBIE
+ T_ICLASS
+ T_MATCH
+ T_UNDEF
+ T_NODE
+ T_ZOMBIE
-ほとんどのタイプはCの構造体で実装されています.
+ۤȤɤΥפCι¤ΤǼƤޤ
-== VALUEのデータタイプをチェックする
+1.2 VALUEΥǡפå
-ruby.hではTYPE()というマクロが定義されていて,VALUEのデータ
-タイプを知ることが出来ます.TYPE()マクロは上で紹介したT_XXXX
-の形式の定数を返します.VALUEのデータタイプに応じて処理する
-場合には,TYPE()の値で分岐することになります.
+ruby.hǤTYPE()ȤޥƤơVALUEΥǡ
+פΤ뤳ȤޤTYPE()ޥϾǾҲ𤷤T_XXXX
+η֤ޤVALUEΥǡפ˱ƽ
+ˤϡTYPE()ͤʬ뤳Ȥˤʤޤ
switch (TYPE(obj)) {
case T_FIXNUM:
- /* FIXNUMの処理 */
+ /* FIXNUMν */
break;
case T_STRING:
- /* 文字列の処理 */
+ /* ʸν */
break;
case T_ARRAY:
- /* 配列の処理 */
+ /* ν */
break;
default:
- /* 例外を発生させる */
+ /* 㳰ȯ */
rb_raise(rb_eTypeError, "not valid value");
break;
}
-それとデータタイプをチェックして,正しくなければ例外を発生す
-る関数が用意されています.
+ȥǡפåơʤ㳰ȯ
+ؿѰդƤޤ
void Check_Type(VALUE value, int type)
-この関数はvalueがtypeで無ければ,例外を発生させます.引数と
-して与えられたVALUEのデータタイプが正しいかどうかチェックす
-るためには,この関数を使います.
+δؿvaluetype̵С㳰ȯޤ
+Ϳ줿VALUEΥǡפɤå
+뤿ˤϡδؿȤޤ
-FIXNUMとNILに関してはより高速な判別マクロが用意されています.
+FIXNUMNIL˴ؤƤϤ®Ƚ̥ޥѰդƤޤ
FIXNUM_P(obj)
NIL_P(obj)
-== VALUEをCのデータに変換する
-
-データタイプがT_NIL,T_FALSE,T_TRUEである時,データはそれぞ
-れnil,false,trueです.このデータタイプのオブジェクトはひと
-つずつしか存在しません.
+1.3 VALUECΥǡѴ
+
+ǡפT_NILT_FALSET_TRUEǤǡϤ줾
+nilfalsetrueǤΥǡפΥ֥ȤϤҤ
+ĤĤ¸ߤޤ
-データタイプがT_FIXNUMの時,これは31bitまたは63bitのサイズを
-持つ整数です.longのサイズが32bitのプラットフォームであれば
-31bitに,longのサイズが64bitのプラットフォームであれば63bit
-になります. FIXNUM を C の整数に変換するためにはマクロ
-「FIX2INT()」または「FIX2LONG()」を使います.これらのマクロ
-を使用する際には事前にデータタイプがFIXNUMであることを確認す
-る必要がありますが,比較的高速に変換を行うことができます.ま
-た,「FIX2LONG()」は例外を発生しませんが,「FIX2INT()」は変
-換結果がintのサイズに収まらない場合には例外を発生します.
-それから,FIXNUMに限らずRubyのデータを整数に変換する
-「NUM2INT()」および「NUM2LONG()」というマクロがあります.こ
-れらのマクロはデータタイプのチェック無しで使えます
-(整数に変換できない場合には例外が発生する).同様にチェック無
-で使える変換マクロはdoubleを取り出す「NUM2DBL()」があります.
+ǡפT_FIXNUMλ31bitޤ63bitΥ
+ǤlongΥ32bitΥץåȥեǤ
+31bitˡlongΥ64bitΥץåȥեǤ63bit
+ˤʤޤ. FIXNUM C Ѵ뤿ˤϥޥ
+FIX2INT()פޤϡFIX2LONG()פȤޤΥޥ
+Ѥݤˤϻ˥ǡפFIXNUMǤ뤳Ȥǧ
+ɬפޤŪ®ѴԤȤǤޤ
+FIX2LONG()פ㳰ȯޤ󤬡FIX2INT()פ
+̤intΥ˼ޤʤˤ㳰ȯޤ
+줫顤FIXNUM˸¤餺RubyΥǡѴ
+NUM2INT()פӡNUM2LONG()פȤޥޤ
+ΥޥϥޥϥǡפΥå̵ǻȤޤ
+(ѴǤʤˤ㳰ȯ)Ʊͤ˥å̵
+ǻȤѴޥdoubleФNUM2DBL()פޤ
-char* を取り出す場合, StringValue() と StringValuePtr()
-を使います.
-StringValue(var) は var が String
-であれば何もせず,そうでなければ var を var.to_str() の結果
-に置き換えるマクロ,StringValuePtr(var) は同様に var を
-String に置き換えてから var のバイト列表現に対する char* を
-返すマクロです.var の内容を直接置き換える処理が入るので,
-var は lvalue である必要があります.
-また,StringValuePtr() に類似した StringValueCStr() というマ
-クロもあります.StringValueCStr(var) は var を String に置き
-換えてから var の文字列表現に対する char* を返します.返され
-る文字列の末尾には nul 文字が付加されます.なお,途中に nul
-文字が含まれる場合は ArgumentError が発生します.
-一方,StringValuePtr() では,末尾に nul 文字がある保証はなく,
-途中に nul 文字が含まれている可能性もあります.
+char* Ф硤 StringValue() StringValuePtr()
+Ȥޤ
+StringValue(var) var String
+Ǥв⤻Ǥʤ var var.to_str() η
+֤ޥStringValuePtr(var) Ʊͤ var
+String ֤Ƥ var ΥХɽФ char*
+֤ޥǤvar Ƥľ֤Τǡ
+var lvalue Ǥɬפޤ
+ޤStringValuePtr() StringValueCStr() Ȥ
+⤢ޤStringValueCStr(var) var String ֤
+Ƥ var ʸɽФ char* ֤ޤ֤
+ʸˤ nul ʸղäޤʤ nul
+ʸޤޤ ArgumentError ȯޤ
+StringValuePtr() Ǥϡ nul ʸݾڤϤʤ
+ nul ʸޤޤƤǽ⤢ޤ
-それ以外のデータタイプは対応するCの構造体があります.対応す
-る構造体のあるVALUEはそのままキャスト(型変換)すれば構造体の
-ポインタに変換できます.
+ʳΥǡפбCι¤Τޤб
+빽¤ΤΤVALUEϤΤޤޥ㥹(Ѵ)й¤Τ
+ݥ󥿤ѴǤޤ
-構造体は「struct RXxxxx」という名前でruby.hで定義されていま
-す.例えば文字列は「struct RString」です.実際に使う可能性が
-あるのは文字列と配列くらいだと思います.
+¤Τϡstruct RXxxxxפȤ̾ruby.hƤ
+㤨ʸϡstruct RStringפǤºݤ˻Ȥǽ
+Τʸ󤯤餤Ȼפޤ
-ruby.hでは構造体へキャストするマクロも「RXXXXX()」(全部大文
-字にしたもの)という名前で提供されています(例: RSTRING()).
+ruby.hǤϹ¤Τإ㥹ȤޥRXXXXX()(ʸ
+ˤ)Ȥ̾󶡤Ƥޤ(: RSTRING())
-構造体からデータを取り出すマクロが提供されています.文字列
-strの長さを得るためには「RSTRING_LEN(str)」とし,文字列strを
-char*として得るためには「RSTRING_PTR(str)」とします.配列の
-場合には,それぞれ「RARRAY_LEN(ary)」,「RARRAY_PTR(ary)」と
-なります.
+¤ΤǡФޥ󶡤Ƥޤʸ
+strĹ뤿ˤϡRSTRING_LEN(str)פȤʸstr
+char*Ȥ뤿ˤϡRSTRING_PTR(str)פȤޤ
+ˤϡ줾RARRAY_LEN(ary)סRARRAY_PTR(ary)פ
+ʤޤ
-Rubyの構造体を直接アクセスする時に気をつけなければならないこ
-とは,配列や文字列の構造体の中身は参照するだけで,直接変更し
-ないことです.直接変更した場合,オブジェクトの内容の整合性が
-とれなくなって,思わぬバグの原因になります.
+Rubyι¤Τľܥ˵ĤʤФʤʤ
+Ȥϡʸι¤ΤȤϻȤǡľѹ
+ʤȤǤľѹ硤֥ȤƤ
+Ȥʤʤäơפ̥Хθˤʤޤ
-== CのデータをVALUEに変換する
+1.4 CΥǡVALUEѴ
-VALUEの実際の構造は
+VALUEμºݤι¤
-FIXNUMの場合 ::
+ * FIXNUMξ
- 1bit左シフトして,LSBを立てる.
+ 1bitեȤơLSBΩƤ롥
-その他のポインタの場合 ::
+ * ¾Υݥ󥿤ξ
- そのままVALUEにキャストする.
+ ΤޤVALUE˥㥹Ȥ롥
-となっています.よって,LSBをチェックすればVALUEがFIXNUMかど
-うかわかるわけです(ポインタのLSBが立っていないことを仮定して
-いる).
+ȤʤäƤޤäơLSBåVALUEFIXNUM
+狼櫓Ǥ(ݥ󥿤LSBΩäƤʤȤꤷ
+)
-ですから,FIXNUM以外のRubyのオブジェクトの構造体は単にVALUE
-にキャストするだけでVALUEに変換出来ます.ただし,任意の構造
-体がVALUEにキャスト出来るわけではありません.キャストするの
-はRubyの知っている構造体(ruby.hで定義されているstruct RXxxx
-のもの)だけです.
+Ǥ顤FIXNUMʳRubyΥ֥Ȥι¤ΤñVALUE
+˥㥹ȤVALUEѴޤǤդι¤
+ΤVALUE˥㥹Ƚ櫓ǤϤޤ󡥥㥹Ȥ
+RubyΤäƤ빽¤(ruby.hƤstruct RXxxx
+Τ)Ǥ
-FIXNUMに関しては変換マクロを経由する必要があります.Cの整数
-からVALUEに変換するマクロは以下のものがあります.必要に応じ
-て使い分けてください.
+FIXNUM˴ؤƤѴޥͳɬפޤC
+VALUEѴޥϰʲΤΤޤɬפ˱
+ƻȤʬƤ
-INT2FIX() :: もとの整数が31bitまたは63bit以内に収まる自信
- がある時
-INT2NUM() :: 任意の整数からVALUEへ
+ INT2FIX() Ȥ31bitޤ63bit˼ޤ뼫
+
+ INT2NUM() ǤդVALUE
-INT2NUM()は整数がFIXNUMの範囲に収まらない場合,Bignumに変換
-してくれます(が,少し遅い).
+INT2NUM()FIXNUMϰϤ˼ޤʤ硤BignumѴ
+Ƥޤ(٤)
-== Rubyのデータを操作する
+1.5 RubyΥǡ
-先程も述べた通り,Rubyの構造体をアクセスする時に内容の更新を
-行うことは勧められません.で,Rubyのデータを操作する時には
-Rubyが用意している関数を用いてください.
+Ҥ٤̤ꡤRubyι¤Τ򥢥Ƥι
+ԤȤϴޤ󡥤ǡRubyΥǡˤ
+RubyѰդƤؿѤƤ
-ここではもっとも使われるであろう文字列と配列の生成/操作を行
-い関数をあげます(全部ではないです).
+ǤϤäȤȤǤʸ/
+ؿ򤢤ޤ(ǤϤʤǤ)
-=== 文字列に対する関数
+ ʸФؿ
-rb_str_new(const char *ptr, long len) ::
+ rb_str_new(const char *ptr, long len)
- 新しいRubyの文字列を生成する.
+ Rubyʸ롥
-rb_str_new2(const char *ptr)
-rb_str_new_cstr(const char *ptr)
+ rb_str_new2(const char *ptr)
+ rb_str_new_cstr(const char *ptr)
- Cの文字列からRubyの文字列を生成する.この関数の機能は
- rb_str_new(ptr, strlen(ptr))と同等である.
+ Cʸ󤫤Rubyʸ롥δؿεǽ
+ rb_str_new(ptr, strlen(ptr))ƱǤ롥
-rb_tainted_str_new(const char *ptr, long len)
+ rb_tainted_str_new(const char *ptr, long len)
- 汚染マークが付加された新しいRubyの文字列を生成する.外部
- からのデータに基づく文字列には汚染マークが付加されるべき
- である.
+ ޡղä줿Rubyʸ롥
+ Υǡ˴Ťʸˤϱޡղä٤
+ Ǥ롥
-rb_tainted_str_new2(const char *ptr)
-rb_tainted_str_new_cstr(const char *ptr)
+ rb_tainted_str_new2(const char *ptr)
+ rb_tainted_str_new_cstr(const char *ptr)
- Cの文字列から汚染マークが付加されたRubyの文字列を生成する.
+ Cʸ󤫤ޡղä줿Rubyʸ롥
-rb_sprintf(const char *format, ...)
-rb_vsprintf(const char *format, va_list ap)
+ rb_sprintf(const char *format, ...)
+ rb_vsprintf(const char *format, va_list ap)
- Cの文字列formatと続く引数をprintf(3)のフォーマットにしたがって
- 整形し,Rubyの文字列を生成する.
+ Cʸformat³printf(3)ΥեޥåȤˤä
+ Rubyʸ롥
- 注意: %iはObject#to_s('+'フラグが指定されているときはObject#inspect)を
- 使ったVALUEの出力に使用されているため,整数には%dを使用すること.
+ rb_str_cat(VALUE str, const char *ptr, long len)
-rb_str_cat(VALUE str, const char *ptr, long len)
+ RubyʸstrlenХȤʸptrɲä롥
- Rubyの文字列strにlenバイトの文字列ptrを追加する.
+ rb_str_cat2(VALUE str, const char* ptr)
-rb_str_cat2(VALUE str, const char* ptr)
+ RubyʸstrCʸptrɲä롥δؿεǽ
+ rb_str_cat(str, ptr, strlen(ptr))ƱǤ롥
- Rubyの文字列strにCの文字列ptrを追加する.この関数の機能は
- rb_str_cat(str, ptr, strlen(ptr))と同等である.
+ rb_str_catf(VALUE str, const char* format, ...)
+ rb_str_vcatf(VALUE str, const char* format, va_list ap)
-rb_str_catf(VALUE str, const char* format, ...)
-rb_str_vcatf(VALUE str, const char* format, va_list ap)
+ Cʸformat³printf(3)ΥեޥåȤˤä
+ Rubyʸstrɲä롥δؿεǽϡ줾
+ rb_str_cat2(str, rb_sprintf(format, ...))
+ rb_str_cat2(str, rb_vsprintf(format, ap)) ƱǤ롥
- Cの文字列formatと続く引数をprintf(3)のフォーマットにしたがって
- 整形し,Rubyの文字列strに追加する.この関数の機能は,それぞれ
- rb_str_cat2(str, rb_sprintf(format, ...)) や
- rb_str_cat2(str, rb_vsprintf(format, ap)) と同等である.
-
-rb_enc_str_new(const char *ptr, long len, rb_encoding *enc)
-
- 指定されたエンコーディングでRubyの文字列を生成する.
-
-rb_usascii_str_new(const char *ptr, long len)
-rb_usascii_str_new_cstr(const char *ptr)
-
- エンコーディングがUS-ASCIIのRubyの文字列を生成する.
-
-rb_str_resize(VALUE str, long len)
+ rb_enc_str_new(const char *ptr, long len, rb_encoding *enc)
+
+ ꤵ줿󥳡ǥ󥰤Rubyʸ.
+
+ rb_usascii_str_new(const char *ptr, long len)
+ rb_usascii_str_new_cstr(const char *ptr)
- Rubyの文字列のサイズをlenバイトに変更する.strの長さは前
- 以てセットされていなければならない.lenが元の長さよりも短
- い時は,lenバイトを越えた部分の内容は捨てられる.lenが元
- の長さよりも長い時は,元の長さを越えた部分の内容は保存さ
- れないでゴミになるだろう.この関数の呼び出しによって
- RSTRING_PTR(str)が変更されるかもしれないことに注意.
+ 󥳡ǥ󥰤US-ASCIIRubyʸ.
-rb_str_set_len(VALUE str, long len)
+ rb_str_resize(VALUE str, long len)
- Rubyの文字列のサイズをlenバイトにセットする.strが変更可
- 能でなければ例外が発生する.RSTRING_LEN(str)とは無関係に,
- lenバイトまでの内容は保存される.lenはstrの容量を越えてい
- てはならない.
+ RubyʸΥlenХȤѹ롥strĹ
+ ʤƥåȤƤʤФʤʤlenĹû
+ ϡlenХȤۤʬƤϼΤƤ롥len
+ ĹĹϡĹۤʬƤ¸
+ ʤǥߤˤʤδؿθƤӽФˤä
+ RSTRING_PTR(str)ѹ뤫⤷ʤȤա
+ rb_str_set_len(VALUE str, long len)
-== 配列に対する関数
+ RubyʸΥlenХȤ˥åȤ롥strѹ
+ ǽǤʤ㳰ȯ롥RSTRING_LEN(str)Ȥ̵طˡ
+ lenХȤޤǤƤ¸롥lenstr̤ۤƤ
+ ƤϤʤʤ
-rb_ary_new()
- 要素が0の配列を生成する.
+ Фؿ
-rb_ary_new2(long len)
+ rb_ary_new()
- 要素が0の配列を生成する.len要素分の領域をあらかじめ割り
- 当てておく.
+ Ǥ0롥
-rb_ary_new3(long n, ...)
+ rb_ary_new2(long len)
- 引数で指定したn要素を含む配列を生成する.
+ Ǥ0롥lenʬΰ򤢤餫
+ ƤƤ
-rb_ary_new4(long n, VALUE *elts)
+ rb_ary_new3(long n, ...)
- 配列で与えたn要素の配列を生成する.
+ ǻꤷnǤޤ롥
-rb_ary_to_ary(VALUE obj)
+ rb_ary_new4(long n, VALUE *elts)
- オブジェクトを配列に変換する.
- Object#to_aryと同等である.
+ ͿnǤ롥
-他にも配列を操作する関数が多数ある. これらは
-引数aryに配列を渡さなければならない. さもないと
-コアを吐く.
+ rb_ary_to_ary(VALUE obj)
-rb_ary_aref(argc, VALUE *argv, VALUE ary)
+ ֥ȤѴ.
+ Object#to_aryƱǤ.
- Array#[]と同等.
+ ¾ˤؿ¿.
+ aryϤʤФʤʤ. ʤ
+ Ǥ.
-rb_ary_entry(VALUE ary, long offset)
+ rb_ary_aref(argc, VALUE *argv, VALUE ary)
- ary[offset]
+ Array#[]Ʊ.
-rb_ary_subseq(VALUE ary, long beg, long len)
+ rb_ary_entry(VALUE ary, long offset)
- ary[beg, len]
+ ary[offset]
-rb_ary_push(VALUE ary, VALUE val)
-rb_ary_pop(VALUE ary)
-rb_ary_shift(VALUE ary)
-rb_ary_unshift(VALUE ary, VALUE val)
+ rb_ary_subseq(VALUE ary, long beg, long len)
-rb_ary_cat(VALUE ary, const VALUE *ptr, long len)
+ ary[beg, len]
- 配列aryにptrからlen個のオブジェクトを追加する.
+ rb_ary_push(VALUE ary, VALUE val)
+ rb_ary_pop(VALUE ary)
+ rb_ary_shift(VALUE ary)
+ rb_ary_unshift(VALUE ary, VALUE val)
-= Rubyの機能を使う
+2RubyεǽȤ
-原理的にRubyで書けることはCでも書けます.RubyそのものがCで記
-述されているんですから,当然といえば当然なんですけど.ここで
-はRubyの拡張に使うことが多いだろうと予測される機能を中心に紹
-介します.
+ŪRubyǽ񤱤뤳ȤCǤ񤱤ޤRubyΤΤCǵ
+ҤƤǤ顤ȤʤǤɡ
+Rubyγĥ˻ȤȤ¿ͽ¬뵡ǽ濴˾
+𤷤ޤ
-== Rubyに機能を追加する
+2.1 Ruby˵ǽɲä
-Rubyで提供されている関数を使えばRubyインタプリタに新しい機能
-を追加することができます.Rubyでは以下の機能を追加する関数が
-提供されています.
+Ruby󶡤ƤؿȤRuby󥿥ץ꥿˿ǽ
+ɲä뤳ȤǤޤRubyǤϰʲεǽɲäؿ
+󶡤Ƥޤ
-* クラス,モジュール
-* メソッド,特異メソッドなど
-* 定数
+ * 饹⥸塼
+ * ᥽åɡðۥ᥽åɤʤ
+ *
-では順に紹介します.
+ǤϽ˾Ҳ𤷤ޤ
-=== クラス/モジュール定義
+2.1.1 饹/⥸塼
-クラスやモジュールを定義するためには,以下の関数を使います.
+饹⥸塼뤿ˤϡʲδؿȤޤ
VALUE rb_define_class(const char *name, VALUE super)
VALUE rb_define_module(const char *name)
-これらの関数は新しく定義されたクラスやモジュールを返します.
-メソッドや定数の定義にこれらの値が必要なので,ほとんどの場合
-は戻り値を変数に格納しておく必要があるでしょう.
+δؿϿ줿饹⥸塼֤ޤ
+᥽åɤˤͤɬפʤΤǡۤȤɤξ
+ͤѿ˳ǼƤɬפǤ礦
-クラスやモジュールを他のクラスの内部にネストして定義する時に
-は以下の関数を使います.
+饹⥸塼¾Υ饹˥ͥȤ
+ϰʲδؿȤޤ
VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super)
VALUE rb_define_module_under(VALUE outer, const char *name)
-=== メソッド/特異メソッド定義
+2.1.2 ᥽å/ðۥ᥽å
-メソッドや特異メソッドを定義するには以下の関数を使います.
+᥽åɤðۥ᥽åɤˤϰʲδؿȤޤ
- void rb_define_method(VALUE klass, const char *name,
- VALUE (*func)(), int argc)
+ void rb_define_method(VALUE klass, const char *name,
+ VALUE (*func)(), int argc)
- void rb_define_singleton_method(VALUE object, const char *name,
- VALUE (*func)(), int argc)
+ void rb_define_singleton_method(VALUE object, const char *name,
+ VALUE (*func)(), int argc)
-念のため説明すると「特異メソッド」とは,その特定のオブジェク
-トに対してだけ有効なメソッドです.RubyではよくSmalltalkにお
-けるクラスメソッドとして,クラスに対する特異メソッドが使われ
-ます.
+ǰΤȡðۥ᥽åɡפȤϡΥ֥
+ȤФƤͭʥ᥽åɤǤRubyǤϤ褯Smalltalkˤ
+륯饹᥽åɤȤơ饹Фðۥ᥽åɤȤ
-これらの関数の argcという引数はCの関数へ渡される引数の数(と
-形式)を決めます.argcが0以上の時は関数に引き渡す引数の数を意
-味します.16個以上の引数は使えません(が,要りませんよね,そ
-んなに).実際の関数には先頭の引数としてselfが与えられますの
-で,指定した数より1多い引数を持つことになります.
+δؿ argcȤCδؿϤο(
+)ޤargc0ʾλϴؿ˰Ϥο
+̣ޤ16İʾΰϻȤޤ(פޤ͡
+ʤ)ºݤδؿˤƬΰȤselfͿޤ
+ǡꤷ1¿ĤȤˤʤޤ
-argcが負の時は引数の数ではなく,形式を指定したことになります.
-argcが-1の時は引数を配列に入れて渡されます.argcが-2の時は引
-数はRubyの配列として渡されます.
+argcλϰοǤϤʤꤷȤˤʤޤ
+argc-1λϰϤޤargc-2λϰ
+RubyȤϤޤ
-メソッドを定義する関数はまだいくつかあります. ひとつはメソッド
-名としてIDを取ります. IDについては2.2.2を参照.
+᥽åɤؿϤޤĤޤ. ҤȤĤϥ᥽å
+̾ȤIDޤ. IDˤĤƤ2.2.2򻲾.
- void rb_define_method_id(VALUE klass, ID name,
+ void rb_define_method_id(VALUE klass, ID name,
VALUE (*func)(ANYARGS), int argc)
-private/protectedなメソッドを定義するふたつの関数があります.
+private/protectedʥ᥽åɤդĤδؿޤ.
- void rb_define_private_method(VALUE klass, const char *name,
+ void rb_define_private_method(VALUE klass, const char *name,
VALUE (*func)(), int argc)
- void rb_define_protected_method(VALUE klass, const char *name,
+ void rb_define_protected_method(VALUE klass, const char *name,
VALUE (*func)(), int argc)
-privateメソッドとは関数形式でしか呼び出すことの出来ないメソッ
-ドです.
+private᥽åɤȤϴؿǤƤӽФȤνʤ᥽
+ɤǤ
-最後に, rb_define_module関数はモジュール関数を定義します.
-モジュール関数とはモジュールの特異メソッドであり,同時に
-privateメソッドでもあるものです.例をあげるとMathモジュール
-のsqrt()などがあげられます.このメソッドは
+Ǹˡ rb_define_moduleؿϥ⥸塼ؿޤ
+⥸塼ؿȤϥ⥸塼ðۥ᥽åɤǤꡤƱ
+private᥽åɤǤ⤢ΤǤ򤢤Math⥸塼
+sqrt()ʤɤޤΥ᥽åɤ
Math.sqrt(4)
-という形式でも
+ȤǤ
include Math
sqrt(4)
-という形式でも使えます.モジュール関数を定義する関数は以下の
-通りです.
+ȤǤȤޤ⥸塼ؿؿϰʲ
+̤Ǥ
- void rb_define_module_function(VALUE module, const char *name,
+ void rb_define_module_function(VALUE module, const char *name,
VALUE (*func)(), int argc)
-関数的メソッド(Kernelモジュールのprivate method)を定義するた
-めの関数は以下の通りです.
+ؿŪ᥽å(Kernel⥸塼private method)뤿
+δؿϰʲ̤Ǥ
void rb_define_global_function(const char *name, VALUE (*func)(), int argc)
-メソッドの別名を定義するための関数は以下の通りです.
+᥽åɤ̾뤿δؿϰʲ̤Ǥ
void rb_define_alias(VALUE module, const char* new, const char* old);
-属性の取得・設定メソッドを定義するには
+°μ᥽åɤˤ
void rb_define_attr(VALUE klass, const char *name, int read, int write)
-クラスメソッドallocateを定義したり削除したりするための関数は
-以下の通りです.
+饹᥽åallocateꤹ뤿δؿ
+ʲ̤Ǥ
void rb_define_alloc_func(VALUE klass, VALUE (*func)(VALUE klass));
void rb_undef_alloc_func(VALUE klass);
-funcはクラスを引数として受け取って,新しく割り当てられたイン
-スタンスを返さなくてはなりません.このインスタンスは,外部リ
-ソースなどを含まない,できるだけ「空」のままにしておいたほう
-がよいでしょう.
+funcϥ饹ȤƼäơƤ줿
+󥹤֤ʤƤϤʤޤ󡥤Υ󥹥󥹤ϡ
+ʤɤޤޤʤǤֶפΤޤޤˤƤۤ
+褤Ǥ礦
-=== 定数定義
+2.1.3
-拡張ライブラリが必要な定数はあらかじめ定義しておいた方が良い
-でしょう.定数を定義する関数は二つあります.
+ĥ饤֥꤬ɬפϤ餫Ƥɤ
+Ǥ礦ؿĤޤ
void rb_define_const(VALUE klass, const char *name, VALUE val)
void rb_define_global_const(const char *name, VALUE val)
-前者は特定のクラス/モジュールに属する定数を定義するもの,後
-者はグローバルな定数を定義するものです.
+ԤΥ饹/⥸塼°Ρ
+ԤϥХΤǤ
-== Rubyの機能をCから呼び出す
+2.2 RubyεǽCƤӽФ
-既に『1.5 Rubyのデータを操作する』で一部紹介したような関数を
-使えば,Rubyの機能を実現している関数を直接呼び出すことが出来
-ます.
+ˡ1.5 RubyΥǡ٤ǰҲ𤷤褦ʴؿ
+ȤСRubyεǽ¸ƤؿľܸƤӽФȤ
-# このような関数の一覧表はいまのところありません.ソースを見
-# るしかないですね.
+# Τ褦ʴؿΰɽϤޤΤȤޤ󡥥
+# 뤷ʤǤ͡
-それ以外にもRubyの機能を呼び出す方法はいくつかあります.
+ʳˤRubyεǽƤӽФˡϤĤޤ
-=== Rubyのプログラムをevalする
+2.2.1 RubyΥץeval
-CからRubyの機能を呼び出すもっとも簡単な方法として,文字列で
-与えられたRubyのプログラムを評価する以下の関数があります.
+CRubyεǽƤӽФäȤñˡȤơʸ
+Ϳ줿RubyΥץɾʲδؿޤ
VALUE rb_eval_string(const char *str)
-この評価は現在の環境で行われます.つまり,現在のローカル変数
-などを受け継ぎます.
+ɾϸߤδĶǹԤޤĤޤꡤߤΥѿ
+ʤɤѤޤ
-評価は例外を発生するかもしれないことに注意しましょう. より安全
-な関数もあります.
+ɾ㳰ȯ뤫⤷ʤȤդޤ礦.
+ʴؿ⤢ޤ.
VALUE rb_eval_string_protect(const char *str, int *state)
-この関数はエラーが発生するとnilを返します.そして,成功時には
-*stateはゼロに,さもなくば非ゼロになります.
+δؿϥ顼ȯnil֤ޤơˤ
+*stateϥˡʤ󥼥ˤʤޤ
-=== IDまたはシンボル
-Cから文字列を経由せずにRubyのメソッドを呼び出すこともできま
-す.その前に,Rubyインタプリタ内でメソッドや変数名を指定する
-時に使われているIDについて説明しておきましょう.
+2.2.2 IDޤϥܥ
-IDとは変数名,メソッド名を表す整数です.Rubyの中では
+CʸͳRubyΥ᥽åɤƤӽФȤǤ
+ˡRuby󥿥ץ꥿ǥ᥽åɤѿ̾ꤹ
+˻ȤƤIDˤĤƤޤ礦
- :識別子
+IDȤѿ̾᥽å̾ɽǤRubyǤ
-または
+ :̻
+ :"Ǥդʸ"
- :"任意の文字列"
-
-でアクセスできます.Cからこの整数を得るためには関数
+ǥǤޤC餳뤿ˤϴؿ
rb_intern(const char *name)
- rb_intern_str(VALUE name)
-を使います.Rubyから引数として与えられたシンボル(または文字
-列)をIDに変換するには以下の関数を使います.
+ȤޤRubyȤͿ줿ܥ(ޤʸ
+)IDѴˤϰʲδؿȤޤ
rb_to_id(VALUE symbol)
- rb_check_id(volatile VALUE *name)
- rb_check_id_cstr(const char *name, long len, rb_encoding *enc)
-
-もし引数がシンボルでも文字列でもなければ、to_strメソッドで文
-字列に変換しようとします.第二の関数はその変換結果を*nameに保
-存し,その名前が既知のシンボルでない場合は0を返します.この関
-数が0以外を返した場合は*nameは常にシンボルか文字列であり、0を
-返した場合は常に文字列です.第三の関数はRubyの文字列ではなく
-NUL終端されたCの文字列を使います.
-=== CからRubyのメソッドを呼び出す
+2.2.3 CRubyΥ᥽åɤƤӽФ
-Cから文字列を経由せずにRubyのメソッドを呼び出すためには以下
-の関数を使います.
+CʸͳRubyΥ᥽åɤƤӽФˤϰʲ
+δؿȤޤ
VALUE rb_funcall(VALUE recv, ID mid, int argc, ...)
-この関数はオブジェクトrecvのmidで指定されるメソッドを呼び出
-します.その他に引数の指定の仕方が違う以下の関数もあります.
+δؿϥ֥recvmidǻꤵ᥽åɤƤӽ
+ޤ¾˰λλ㤦ʲδؿ⤢ޤ
VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv)
VALUE rb_apply(VALUE recv, ID mid, VALUE args)
-applyには引数としてRubyの配列を与えます.
+applyˤϰȤRubyͿޤ
-=== 変数/定数を参照/更新する
+2.2.4 ѿ/򻲾/
-Cから関数を使って参照・更新できるのは,定数,インスタンス変
-数です.大域変数は一部のものはCの大域変数としてアクセスでき
-ます.ローカル変数を参照する方法は公開していません.
+CؿȤäƻȡǤΤϡ󥹥
+ǤѿϰΤΤCѿȤƥǤ
+ޤѿ򻲾ȤˡϸƤޤ
-オブジェクトのインスタンス変数を参照・更新する関数は以下の通
-りです.
+֥ȤΥ󥹥ѿ򻲾ȡؿϰʲ
VALUE rb_ivar_get(VALUE obj, ID id)
VALUE rb_ivar_set(VALUE obj, ID id, VALUE val)
-idはrb_intern()で得られるものを使ってください.
+idrb_intern()ΤȤäƤ
-定数を参照するには以下の関数を使ってください.
+򻲾ȤˤϰʲδؿȤäƤ
VALUE rb_const_get(VALUE obj, ID id)
-定数を新しく定義するためには『2.1.3 定数定義』で紹介さ
-れている関数を使ってください.
+򿷤뤿ˤϡ2.1.3 ٤ǾҲ
+ƤؿȤäƤ
-= RubyとCとの情報共有
+3RubyCȤξͭ
-C言語とRubyの間で情報を共有する方法について解説します.
+CRubyδ֤ǾͭˡˤĤƲ⤷ޤ
-== Cから参照できるRubyの定数
+3.1 C黲ȤǤRuby
-以下のRubyの定数はCのレベルから参照できます.
+ʲRubyCΥ٥뤫黲ȤǤޤ
Qtrue
Qfalse
-真偽値.QfalseはC言語でも偽とみなされます(つまり0).
+ ͡QfalseCǤ⵶Ȥߤʤޤ(Ĥޤ0)
Qnil
-C言語から見た「nil」.
+ C줫鸫nilס
-== CとRubyで共有される大域変数
+3.2 CRubyǶͭѿ
-CとRubyで大域変数を使って情報を共有できます.共有できる大域
-変数にはいくつかの種類があります.そのなかでもっとも良く使わ
-れると思われるのはrb_define_variable()です.
+CRubyѿȤäƾͭǤޤͭǤ
+ѿˤϤĤμबޤΤʤǤäȤɤȤ
+ȻפΤrb_define_variable()Ǥ
void rb_define_variable(const char *name, VALUE *var)
-この関数はRubyとCとで共有する大域変数を定義します.変数名が
-`$'で始まらない時には自動的に追加されます.この変数の値を変
-更すると自動的にRubyの対応する変数の値も変わります.
+δؿRubyCȤǶͭѿޤѿ̾
+`$'ǻϤޤʤˤϼưŪɲäޤѿͤ
+ȼưŪRubyбѿͤѤޤ
-またRuby側からは更新できない変数もあります.このread onlyの
-変数は以下の関数で定義します.
+ޤRuby¦ϹǤʤѿ⤢ޤread only
+ѿϰʲδؿޤ
void rb_define_readonly_variable(const char *name, VALUE *var)
-これら変数の他にhookをつけた大域変数を定義できます.hook付き
-の大域変数は以下の関数を用いて定義します.hook付き大域変数の
-値の参照や設定はhookで行う必要があります.
+ѿ¾hookĤѿǤޤhookդ
+ѿϰʲδؿѤޤhookդѿ
+ͤλȤhookǹԤɬפޤ
void rb_define_hooked_variable(const char *name, VALUE *var,
VALUE (*getter)(), void (*setter)())
-この関数はCの関数によってhookのつけられた大域変数を定義しま
-す.変数が参照された時には関数getterが,変数に値がセットされ
-た時には関数setterが呼ばれる.hookを指定しない場合はgetterや
-setterに0を指定します.
-# getterもsetterも0ならばrb_define_variable()と同じになる.
+δؿCδؿˤähookΤĤ줿ѿ
+ѿȤ줿ˤϴؿgetterѿͤåȤ
+ˤϴؿsetterƤФ롥hookꤷʤgetter
+setter0ꤷޤ
+# gettersetter0ʤrb_define_variable()Ʊˤʤ롥
-getterとsetterの仕様は次の通りです.
+gettersetterλͤϼ̤Ǥ
VALUE (*getter)(ID id, VALUE *var);
void (*setter)(VALUE val, ID id, VALUE *var);
-それから,対応するCの変数を持たないRubyの大域変数を定義する
-こともできます. その変数の値はフック関数のみによって取得・設定
-されます.
+줫顤бCѿʤRubyѿ
+ȤǤޤ. ѿͤϥեåؿΤߤˤäƼ
+ޤ.
void rb_define_virtual_variable(const char *name,
VALUE (*getter)(), void (*setter)())
-この関数によって定義されたRubyの大域変数が参照された時には
-getterが,変数に値がセットされた時にはsetterが呼ばれます.
+δؿˤä줿RubyѿȤ줿ˤ
+getterѿͤåȤ줿ˤsetterƤФޤ
-getterとsetterの仕様は以下の通りです.
+gettersetterλͤϰʲ̤Ǥ
(*getter)(ID id);
(*setter)(VALUE val, ID id);
-== CのデータをRubyオブジェクトにする
+3.3 CΥǡRuby֥Ȥˤ
-Cの世界で定義されたデータ(構造体)をRubyのオブジェクトとして
-取り扱いたい場合がありえます.このような場合には,Dataという
-RubyオブジェクトにCの構造体(へのポインタ)をくるむことでRuby
-オブジェクトとして取り扱えるようになります.
+C줿ǡ(¤)RubyΥ֥ȤȤ
+갷礬ꤨޤΤ褦ʾˤϡDataȤ
+Ruby֥ȤCι¤(ؤΥݥ)򤯤ळȤRuby
+֥ȤȤƼ갷褦ˤʤޤ
-Dataオブジェクトを生成して構造体をRubyオブジェクトにカプセル
-化するためには,以下のマクロを使います.
+Data֥Ȥƹ¤ΤRuby֥Ȥ˥ץ
+뤿ˤϡʲΥޥȤޤ
- Data_Wrap_Struct(klass, mark, free, sval)
+ Data_Wrap_Struct(klass, mark, free, ptr)
-このマクロの戻り値は生成されたDataオブジェクトです.
+Υޥͤ줿Data֥ȤǤ
-klassはこのDataオブジェクトのクラスです.markはこの構造体が
-Rubyのオブジェクトへの参照がある時に使う関数です.そのような
-参照を含まない時には0を指定します.
+klassϤData֥ȤΥ饹Ǥptrϥץ벽
+Cι¤ΤؤΥݥ󥿤ǤmarkϤι¤ΤRubyΥ֥
+ȤؤλȤ˻ȤؿǤΤ褦ʻȤޤޤʤ
+ˤ0ꤷޤ
-# そのような参照は勧められません.
+# Τ褦ʻȤϴޤ
-freeはこの構造体がもう不要になった時に呼ばれる関数です.この
-関数がガーベージコレクタから呼ばれます.これが-1の場合は,単
-純に開放されます.
+freeϤι¤Τ⤦פˤʤä˸ƤФؿǤ
+ؿ١쥯ƤФޤ줬-1ξϡñ
+˳ޤ
-markおよびfree関数はGC実行中に呼び出されます.
-なお, GC実行中はRubyオブジェクトのアロケーションは禁止されま
-す. よって, markおよびfree関数でRubyオブジェクトのアロケーシ
-ョンは行わないでください.
+markfreeؿGC¹˸ƤӽФޤ.
+ʤ, GC¹Ruby֥ȤΥ϶ػߤ
+. ä, markfreeؿRuby֥ȤΥ
+ϹԤʤǤ.
-Cの構造体の割当とDataオブジェクトの生成を同時に行うマクロと
-して以下のものが提供されています.
+Cι¤ΤγData֥ȤƱ˹Ԥޥ
+ưʲΤΤ󶡤Ƥޤ
Data_Make_Struct(klass, type, mark, free, sval)
-このマクロの戻り値は生成されたDataオブジェクトです.このマク
-ロは以下の式のように働きます:
+Υޥͤ줿Data֥ȤǤ
- (sval = ALLOC(type), Data_Wrap_Struct(klass, mark, free, sval))
+klass, mark, freeData_Wrap_StructƱƯ򤷤ޤtype
+ϳƤC¤ΤηǤƤ줿¤Τѿsval
+ޤѿη (type*) Ǥɬפޤ
-klass, mark, freeはData_Wrap_Structと同じ働きをします.type
-は割り当てるC構造体の型です.割り当てられた構造体は変数sval
-に代入されます.この変数の型は (type*) である必要があります.
-
-Dataオブジェクトからポインタを取り出すのは以下のマクロを用い
-ます.
+Data֥Ȥݥ󥿤ФΤϰʲΥޥѤ
Data_Get_Struct(obj, type, sval)
-Cの構造体へのポインタは変数svalに代入されます.
+Cι¤ΤؤΥݥ󥿤ѿsvalޤ
-これらのDataの使い方はちょっと分かりにくいので,後で説明する
-例題を参照してください.
+DataλȤϤäʬˤΤǡ
+򻲾ȤƤ
-= 例題 - dbmパッケージを作る
+4 - dbmѥå
-ここまでの説明でとりあえず拡張ライブラリは作れるはずです.
-Rubyのextディレクトリにすでに含まれているdbmライブラリを例に
-して段階的に説明します.
+ޤǤǤȤꤢĥ饤֥ϺϤǤ
+Rubyextǥ쥯ȥˤǤ˴ޤޤƤdbm饤֥
+ʳŪޤ
-== ディレクトリを作る
+(1) ǥ쥯ȥ
% mkdir ext/dbm
-Ruby 1.1からは任意のディレクトリでダイナミックライブラリを作
-ることができるようになりました.Rubyに静的にリンクする場合に
-はRubyを展開したディレクトリの下,extディレクトリの中に拡張
-ライブラリ用のディレクトリを作る必要があります.名前は適当に
-選んで構いません.
-
-== 設計する
-
-まあ,当然なんですけど,どういう機能を実現するかどうかまず設
-計する必要があります.どんなクラスをつくるか,そのクラスには
-どんなメソッドがあるか,クラスが提供する定数などについて設計
-します.
-
-== Cコードを書く
-
-拡張ライブラリ本体となるC言語のソースを書きます.C言語のソー
-スがひとつの時には「ライブラリ名.c」を選ぶと良いでしょう.C
-言語のソースが複数の場合には逆に「ライブラリ名.c」というファ
-イル名は避ける必要があります.オブジェクトファイルとモジュー
-ル生成時に中間的に生成される「ライブラリ名.o」というファイル
-とが衝突するからです.また,後述する mkmf ライブラリのいくつ
-かの関数がコンパイルを要するテストのために「conftest.c」とい
-うファイル名を使用することに注意してください.ソースファイル
-名として「conftest.c」を使用してはなりません.
-
-Rubyは拡張ライブラリをロードする時に「Init_ライブラリ名」と
-いう関数を自動的に実行します.dbmライブラリの場合「Init_dbm」
-です.この関数の中でクラス,モジュール,メソッド,定数などの
-定義を行います.dbm.cから一部引用します.
-
- void
- Init_dbm(void)
- {
- /* DBMクラスを定義する */
- cDBM = rb_define_class("DBM", rb_cObject);
- /* DBMはEnumerableモジュールをインクルードする */
- rb_include_module(cDBM, rb_mEnumerable);
-
- /* DBMクラスのクラスメソッドopen(): 引数はCの配列で受ける */
- rb_define_singleton_method(cDBM, "open", fdbm_s_open, -1);
-
- /* DBMクラスのメソッドclose(): 引数はなし */
- rb_define_method(cDBM, "close", fdbm_close, 0);
- /* DBMクラスのメソッド[]: 引数は1個 */
- rb_define_method(cDBM, "[]", fdbm_fetch, 1);
-
- /* ... */
-
- /* DBMデータを格納するインスタンス変数名のためのID */
- id_dbm = rb_intern("dbm");
- }
-
-DBMライブラリはdbmのデータと対応するオブジェクトになるはずで
-すから,Cの世界のdbmをRubyの世界に取り込む必要があります.
-
-dbm.cではData_Make_Structを以下のように使っています.
-
- struct dbmdata {
- int di_size;
- DBM *di_dbm;
- };
-
-
- obj = Data_Make_Struct(klass, struct dbmdata, 0, free_dbm, dbmp);
-
-ここではdbmstruct構造体へのポインタをDataにカプセル化してい
-ます.DBM*を直接カプセル化しないのはclose()した時の処理を考
-えてのことです.
-
-Dataオブジェクトからdbmstruct構造体のポインタを取り出すため
-に以下のマクロを使っています.
-
- #define GetDBM(obj, dbmp) {\
- Data_Get_Struct(obj, struct dbmdata, dbmp);\
- if (dbmp->di_dbm == 0) closed_dbm();\
- }
-
-ちょっと複雑なマクロですが,要するにdbmdata構造体のポインタ
-の取り出しと,closeされているかどうかのチェックをまとめてい
-るだけです.
-
-DBMクラスにはたくさんメソッドがありますが,分類すると3種類の
-引数の受け方があります.ひとつは引数の数が固定のもので,例と
-してはdeleteメソッドがあります.deleteメソッドを実装している
-fdbm_delete()はこのようになっています.
-
- static VALUE
- fdbm_delete(VALUE obj, VALUE keystr)
- {
- /* ... */
- }
-
-引数の数が固定のタイプは第1引数がself,第2引数以降がメソッド
-の引数となります.
-
-引数の数が不定のものはCの配列で受けるものとRubyの配列で受け
-るものとがあります.dbmライブラリの中で,Cの配列で受けるもの
-はDBMのクラスメソッドであるopen()です.これを実装している関
-数fdbm_s_open()はこうなっています.
-
- static VALUE
- fdbm_s_open(int argc, VALUE *argv, VALUE klass)
- {
- /* ... */
-
- if (rb_scan_args(argc, argv, "11", &file, &vmode) == 1) {
- mode = 0666; /* default value */
- }
-
- /* ... */
- }
-
-このタイプの関数は第1引数が与えられた引数の数,第2引数が与え
-られた引数の入っている配列になります.selfは第3引数として与
-えられます.
-
-この配列で与えられた引数を解析するための関数がopen()でも使わ
-れているrb_scan_args()です.第3引数に指定したフォーマットに従
-い,第4変数以降に指定したVALUEへの参照に値を代入してくれま
-す.
-
-
-引数をRubyの配列として受け取るメソッドの例には
-Thread#initializeがあります.実装はこうです.
-
- static VALUE
- thread_initialize(VALUE thread, VALUE args)
- {
- /* ... */
- }
-
-第1引数はself,第2引数はRubyの配列です.
-
-*注意事項*
-
-Rubyと共有はしないがRubyのオブジェクトを格納する可能性のある
-Cの大域変数は以下の関数を使ってRubyインタプリタに変数の存在
-を教えてあげてください.でないとGCでトラブルを起こします.
+Ruby 1.1ǤդΥǥ쥯ȥǥʥߥå饤֥
+뤳ȤǤ褦ˤʤޤRubyŪ˥󥯤
+RubyŸǥ쥯ȥβextǥ쥯ȥ˳ĥ
+饤֥ѤΥǥ쥯ȥɬפޤ̾Ŭ
+ǹޤ
+
+(2) ߷פ
+
+ޤʤǤɡɤǽ¸뤫ɤޤ
+פɬפޤɤʥ饹Ĥ뤫Υ饹ˤ
+ɤʥ᥽åɤ뤫饹󶡤ʤɤˤĤ߷
+
+(3) Cɤ
+
+ĥ饤֥ΤȤʤCΥ񤭤ޤCΥ
+ҤȤĤλˤϡ֥饤֥̾.cפ֤ɤǤ礦C
+Υʣξˤϵդˡ֥饤֥̾.cפȤե
+̾򤱤ɬפޤ֥ȥեȥ⥸塼
+Ū֥饤֥̾.oפȤե
+Ȥͤ뤫ǤޤҤ mkmf 饤֥Τ
+δؿѥפƥȤΤˡconftest.cפȤ
+ե̾Ѥ뤳ȤդƤե
+̾Ȥơconftest.cפѤƤϤʤޤ
+
+Rubyϳĥ饤֥ɤˡInit_饤֥̾פ
+ؿưŪ˼¹Ԥޤdbm饤֥ξInit_dbm
+Ǥδؿǥ饹⥸塼롤᥽åɡʤɤ
+Ԥޤdbm.cѤޤ
+
+--
+void
+Init_dbm(void)
+{
+ /* DBM饹 */
+ cDBM = rb_define_class("DBM", rb_cObject);
+ /* DBMEnumerate⥸塼򥤥󥯥롼ɤ */
+ rb_include_module(cDBM, rb_mEnumerable);
+
+ /* DBM饹Υ饹᥽åopen(): CǼ */
+ rb_define_singleton_method(cDBM, "open", fdbm_s_open, -1);
+
+ /* DBM饹Υ᥽åclose(): Ϥʤ */
+ rb_define_method(cDBM, "close", fdbm_close, 0);
+ /* DBM饹Υ᥽å[]: 1 */
+ rb_define_method(cDBM, "[]", fdbm_fetch, 1);
+ :
+
+ /* DBMǡǼ륤󥹥ѿ̾ΤID */
+ id_dbm = rb_intern("dbm");
+}
+--
+
+DBM饤֥dbmΥǡб륪֥ȤˤʤϤ
+顤CdbmRuby˼ɬפޤ
+
+
+dbm.cǤData_Make_StructʲΤ褦˻ȤäƤޤ
+
+--
+struct dbmdata {
+ int di_size;
+ DBM *di_dbm;
+};
+
+
+obj = Data_Make_Struct(klass, struct dbmdata, 0, free_dbm, dbmp);
+--
+
+Ǥdbmstruct¤ΤؤΥݥ󥿤Data˥ץ벽Ƥ
+ޤDBM*ľܥץ벽ʤΤclose()ν
+ƤΤȤǤ
+
+Data֥Ȥdbmstruct¤ΤΥݥ󥿤Ф
+˰ʲΥޥȤäƤޤ
+
+--
+#define GetDBM(obj, dbmp) {\
+ Data_Get_Struct(obj, struct dbmdata, dbmp);\
+ if (dbmp->di_dbm == 0) closed_dbm();\
+}
+--
+
+äʣʥޥǤפdbmdata¤ΤΥݥ
+μФȡcloseƤ뤫ɤΥåޤȤƤ
+
+DBM饹ˤϤ᥽åɤޤʬह3
+μޤҤȤĤϰοΤΤǡ
+Ƥdelete᥽åɤޤdelete᥽åɤƤ
+fdbm_delete()ϤΤ褦ˤʤäƤޤ
+
+--
+static VALUE
+fdbm_delete(VALUE obj, VALUE keystr)
+{
+ :
+}
+--
+
+οΥפ1self2ʹߤ᥽å
+ΰȤʤޤ
+
+οΤΤCǼΤRubyǼ
+ΤȤޤdbm饤֥ǡCǼ
+DBMΥ饹᥽åɤǤopen()ǤƤ
+fdbm_s_open()ϤʤäƤޤ
+
+--
+static VALUE
+fdbm_s_open(int argc, VALUE *argv, VALUE klass)
+{
+ :
+ if (rb_scan_args(argc, argv, "11", &file, &vmode) == 1) {
+ mode = 0666; /* default value */
+ }
+ :
+}
+--
+
+Υפδؿ1Ϳ줿ο2Ϳ
+줿äƤˤʤޤself3ȤͿ
+
+Ϳ줿Ϥ뤿δؿopen()ǤȤ
+Ƥrb_scan_args()Ǥ3˻ꤷեޥåȤ˽
+4ѿʹߤ˻ꤷVALUEؤλȤͤƤ
+
+
+
+RubyȤƼ᥽åɤˤ
+Thread#initializeޤϤǤ
+
+--
+static VALUE
+thread_initialize(VALUE thread, VALUE args)
+{
+ :
+}
+--
+
+1self2RubyǤ
+
+** ջ
+
+RubyȶͭϤʤRubyΥ֥ȤǼǽΤ
+CѿϰʲδؿȤäRuby󥿥ץ꥿ѿ¸
+򶵤ƤƤǤʤGCǥȥ֥򵯤ޤ
void rb_global_variable(VALUE *var)
-== extconf.rbを用意する
+(4) extconf.rbѰդ
-Makefileを作る場合の雛型になるextconf.rbというファイルを作り
-ます.extconf.rbはライブラリのコンパイルに必要な条件のチェッ
-クなどを行うことが目的です.まず,
+Makefileοˤʤextconf.rbȤե
+ޤextconf.rbϥ饤֥ΥѥɬפʾΥ
+ʤɤԤȤŪǤޤ
require 'mkmf'
-をextconf.rbの先頭に置きます.extconf.rbの中では以下のRuby関
-数を使うことが出来ます.
+extconf.rbƬ֤ޤextconf.rbǤϰʲRuby
+ȤȤޤ
- have_library(lib, func): ライブラリの存在チェック
- have_func(func, header): 関数の存在チェック
- have_header(header): ヘッダファイルの存在チェック
- create_makefile(target[, target_prefix]): Makefileの生成
+ have_library(lib, func): 饤֥¸ߥå
+ have_func(func, header): ؿ¸ߥå
+ have_header(header): إåե¸ߥå
+ create_makefile(target): Makefile
-以下の変数を使うことができます.
+ʲѿȤȤǤޤ
- $CFLAGS: コンパイル時に追加的に指定するフラグ(-Oなど)
- $CPPFLAGS: プリプロセッサに追加的に指定するフラグ(-Iや-Dなど)
- $LDFLAGS: リンク時に追加的に指定するフラグ(-Lなど)
- $objs: リンクされるオブジェクトファイル名のリスト
+ $CFLAGS: ѥɲŪ˻ꤹե饰(-Oʤ)
+ $CPPFLAGS: ץץåɲŪ˻ꤹե饰(-I-Dʤ)
+ $LDFLAGS: 󥯻ɲŪ˻ꤹե饰(-Lʤ)
+ $objs: 󥯤륪֥ȥե̾Υꥹ
-オブジェクトファイルのリストは,通常はソースファイルを検索し
-て自動的に生成されますが,makeの途中でソースを生成するような
-場合は明示的に指定する必要があります.
+֥ȥեΥꥹȤϡ̾ϥե򸡺
+ƼưŪޤmakeǥ褦
+Ū˻ꤹɬפޤ
-ライブラリをコンパイルする条件が揃わず,そのライブラリをコン
-パイルしない時にはcreate_makefileを呼ばなければMakefileは生
-成されず,コンパイルも行われません.
+饤֥򥳥ѥ뤹郎·鷺Υ饤֥򥳥
+ѥ뤷ʤˤcreate_makefileƤФʤMakefile
+줺ѥԤޤ
-== dependを用意する
+(5) dependѰդ
-もし,ディレクトリにdependというファイルが存在すれば,
-Makefileが依存関係をチェックしてくれます.
+⤷ǥ쥯ȥdependȤե뤬¸ߤС
+Makefile¸طåƤޤ
% gcc -MM *.c > depend
-などで作ることが出来ます.あって損は無いでしょう.
+ʤɤǺ뤳Ȥޤä»̵Ǥ礦
-== Makefileを生成する
+(6) Makefile
-Makefileを実際に生成するためには
+Makefileºݤ뤿ˤ
ruby extconf.rb
-とします.extconf.rbに require 'mkmf' の行がない場合にはエラー
-になりますので,引数を追加して
+Ȥޤextconf.rb require 'mkmf' ιԤʤˤϥ顼
+ˤʤޤΤǡɲä
ruby -r mkmf extconf.rb
-としてください.
+ȤƤ
-site_ruby ディレクトリでなく,
-vendor_ruby ディレクトリにインストールする場合には
-以下のように --vendor オプションを加えてください.
+site_ruby ǥ쥯ȥǤʤ
+vendor_ruby ǥ쥯ȥ˥󥹥ȡ뤹ˤ
+ʲΤ褦 --vendor ץäƤ
ruby extconf.rb --vendor
-ディレクトリをext以下に用意した場合にはRuby全体のmakeの時に
-自動的にMakefileが生成されますので,このステップは不要です.
-
-== makeする
+ǥ쥯ȥextʲѰդˤRubyΤmakeλ
+ưŪMakefileޤΤǡΥƥåפפǤ
-動的リンクライブラリを生成する場合にはその場でmakeしてくださ
-い.必要であれば make install でインストールされます.
+(7) make
-ext以下にディレクトリを用意した場合は,Rubyのディレクトリで
-makeを実行するとMakefileを生成からmake,必要によってはそのモ
-ジュールのRubyへのリンクまで自動的に実行してくれます.
-extconf.rbを書き換えるなどしてMakefileの再生成が必要な時はま
-たRubyディレクトリでmakeしてください.
+ưŪ󥯥饤֥ˤϤξmakeƤ
+ɬפǤ make install ǥ󥹥ȡ뤵ޤ
-拡張ライブラリはmake installでRubyライブラリのディレクトリの
-下にコピーされます.もし拡張ライブラリと協調して使うRubyで記
-述されたプログラムがあり,Rubyライブラリに置きたい場合には,
-拡張ライブラリ用のディレクトリの下に lib というディレクトリ
-を作り,そこに 拡張子 .rb のファイルを置いておけば同時にイン
-ストールされます.
+extʲ˥ǥ쥯ȥѰդϡRubyΥǥ쥯ȥ
+make¹ԤMakefilemakeɬפˤäƤϤΥ
+塼RubyؤΥ󥯤ޤǼưŪ˼¹ԤƤޤ
+extconf.rb񤭴ʤɤMakefileκɬפʻϤ
+Rubyǥ쥯ȥmakeƤ
-== デバッグ
+ĥ饤֥make installRuby饤֥Υǥ쥯ȥ
+˥ԡޤ⤷ĥ饤֥ȶĴƻȤRubyǵ
+Ҥ줿ץबꡤRuby饤֥֤ˤϡ
+ĥ饤֥ѤΥǥ쥯ȥβ lib Ȥǥ쥯ȥ
+ꡤ ĥ .rb Υե֤ƤƱ˥
+ȡ뤵ޤ
-まあ,デバッグしないと動かないでしょうね.ext/Setupにディレ
-クトリ名を書くと静的にリンクするのでデバッガが使えるようにな
-ります.その分コンパイルが遅くなりますけど.
+(8) ǥХå
-== できあがり
+ޤǥХåʤưʤǤ礦͡ext/Setup˥ǥ
+ȥ̾񤯤Ū˥󥯤ΤǥǥХåȤ褦ˤ
+ޤʬѥ뤬٤ʤޤɡ
-後はこっそり使うなり,広く公開するなり,売るなり,ご自由にお
-使いください.Rubyの作者は拡張ライブラリに関して一切の権利を
-主張しません.
+(9) Ǥ
-= Appendix A. Rubyのソースコードの分類
+ϤäȤʤꡤʤꡤʤꡤͳˤ
+ȤRubyκԤϳĥ饤֥˴ؤưڤθ
+ĥޤ
-Rubyのソースはいくつかに分類することが出来ます.このうちクラ
-スライブラリの部分は基本的に拡張ライブラリと同じ作り方になっ
-ています.これらのソースは今までの説明でほとんど理解できると
-思います.
+Appendix A. RubyΥɤʬ
-== Ruby言語のコア
+RubyΥϤĤʬह뤳ȤޤΤ
+饤֥ʬϴŪ˳ĥ饤֥Ʊˤʤ
+ƤޤΥϺޤǤǤۤȤǤ
+פޤ
-class.c :: クラスとモジュール
-error.c :: 例外クラスと例外機構
-gc.c :: 記憶領域管理
-load.c :: ライブラリのロード
-object.c :: オブジェクト
-variable.c :: 変数と定数
+RubyΥ
-== Rubyの構文解析器
+ class.c : 饹ȥ⥸塼
+ error.c : 㳰饹㳰
+ gc.c : ΰ
+ load.c : 饤֥Υ
+ object.c : ֥
+ variable.c : ѿ
- parse.y : 字句解析器と構文定義
- -> parse.c : 自動生成
- keywords : 予約語
- -> lex.c : 自動生成
+Rubyιʸϴ
+ parse.y : ϴȹʸ
+ -> parse.c : ư
+ keywords : ͽ
+ -> lex.c : ư
-== Rubyの評価器 (通称YARV)
+Rubyɾ (̾YARV)
compile.c
eval.c
eval_error.c
eval_jump.c
eval_safe.c
- insns.def : 仮想機械語の定義
- iseq.c : VM::ISeqの実装
- thread.c : スレッド管理とコンテキスト切り替え
- thread_win32.c : スレッド実装
- thread_pthread.c : 同上
+ insns.def : ۵
+ iseq.c : VM::ISeqμ
+ thread.c : åɴȥƥڤؤ
+ thread_win32.c : åɼ
+ thread_pthread.c : Ʊ
vm.c
vm_dump.c
vm_eval.c
@@ -954,15 +943,14 @@ variable.c :: 変数と定数
vm_insnhelper.c
vm_method.c
- opt_insns_unif.def : 命令融合
- opt_operand.def : 最適化のための定義
+ opt_insns_unif.def : ̿ͻ
+ opt_operand.def : ŬΤ
- -> insn*.inc : 自動生成
- -> opt*.inc : 自動生成
- -> vm.inc : 自動生成
-
-== 正規表現エンジン (鬼車)
+ -> insn*.inc : ư
+ -> opt*.inc : ư
+ -> vm.inc : ư
+ɽ󥸥 ()
regex.c
regcomp.c
regenc.c
@@ -971,15 +959,15 @@ variable.c :: 変数と定数
regparse.c
regsyntax.c
-== ユーティリティ関数
+桼ƥƥؿ
-debug.c :: Cデバッガ用のデバッグシンボル
-dln.c :: 動的ローディング
-st.c :: 汎用ハッシュ表
-strftime.c :: 時刻整形
-util.c :: その他のユーティリティ
+ debug.c : CǥХåѤΥǥХåܥ
+ dln.c : ưŪǥ
+ st.c : ѥϥåɽ
+ strftime.c :
+ util.c : ¾Υ桼ƥƥ
-== Rubyコマンドの実装
+Rubyޥɤμ
dmyext.c
dmydln.c
@@ -993,600 +981,587 @@ util.c :: その他のユーティリティ
gem_prelude.rb
prelude.rb
-== クラスライブラリ
-
-array.c :: Array
-bignum.c :: Bignum
-compar.c :: Comparable
-complex.c :: Complex
-cont.c :: Fiber, Continuation
-dir.c :: Dir
-enum.c :: Enumerable
-enumerator.c :: Enumerator
-file.c :: File
-hash.c :: Hash
-io.c :: IO
-marshal.c :: Marshal
-math.c :: Math
-numeric.c :: Numeric, Integer, Fixnum, Float
-pack.c :: Array#pack, String#unpack
-proc.c :: Binding, Proc
-process.c :: Process
-random.c :: 乱数
-range.c :: Range
-rational.c :: Rational
-re.c :: Regexp, MatchData
-signal.c :: Signal
-sprintf.c :: String#sprintf
-string.c :: String
-struct.c :: Struct
-time.c :: Time
-defs/known_errors.def :: 例外クラス Errno::*
--> known_errors.inc :: 自動生成
-
-== 多言語化
-
-encoding.c :: Encoding
-transcode.c :: Encoding::Converter
-enc/*.c :: エンコーディングクラス群
-enc/trans/* :: コードポイント対応表
-
-== gorubyコマンドの実装
-
+饹饤֥
+
+ array.c : Array
+ bignum.c : Bignum
+ compar.c : Comparable
+ complex.c : Complex
+ cont.c : Fiber, Continuation
+ dir.c : Dir
+ enum.c : Enumerable
+ enumerator.c : Enumerator
+ file.c : File
+ hash.c : Hash
+ io.c : IO
+ marshal.c : Marshal
+ math.c : Math
+ numeric.c : Numeric, Integer, Fixnum, Float
+ pack.c : Array#pack, String#unpack
+ proc.c : Binding, Proc
+ process.c : Process
+ random.c :
+ range.c : Range
+ rational.c : Rational
+ re.c : Regexp, MatchData
+ signal.c : Signal
+ sprintf.c :
+ string.c : String
+ struct.c : Struct
+ time.c : Time
+
+ defs/known_errors.def : 㳰饹 Errno::*
+ -> known_errors.inc : ư
+
+¿첽
+ encoding.c : Encoding
+ transcode.c : Encoding::Converter
+ enc/*.c : 󥳡ǥ󥰥饹
+ enc/trans/* : ɥݥбɽ
+
+gorubyޥɤμ
+
goruby.c
- golf_prelude.rb : goruby固有のライブラリ
- -> golf_prelude.c : 自動生成
+ golf_prelude.rb : gorubyͭΥ饤֥
+ -> golf_prelude.c : ư
-= Appendix B. 拡張用関数リファレンス
-C言語からRubyの機能を利用するAPIは以下の通りである.
+Appendix B. ĥѴؿե
-== 型
+C줫RubyεǽѤAPIϰʲ̤Ǥ롥
-VALUE ::
+**
- Rubyオブジェクトを表現する型.必要に応じてキャストして用いる.
- 組み込み型を表現するCの型はruby.hに記述してあるRで始まる構造
- 体である.VALUE型をこれらにキャストするためにRで始まる構造体
- 名を全て大文字にした名前のマクロが用意されている.
+VALUE
-== 変数・定数
+ Ruby֥Ȥɽ뷿ɬפ˱ƥ㥹ȤѤ롥
+ Ȥ߹߷ɽCηruby.h˵ҤƤRǻϤޤ빽¤
+ ΤǤ롥VALUE򤳤˥㥹Ȥ뤿RǻϤޤ빽¤
+ ̾ʸˤ̾ΥޥѰդƤ롥
-Qnil ::
+** ѿ
- 定数: nilオブジェクト
+Qnil
-Qtrue ::
+ : nil֥
- 定数: trueオブジェクト(真のデフォルト値)
+Qtrue
-Qfalse ::
+ : true֥(Υǥե)
- 定数: falseオブジェクト
+Qfalse
-== Cデータのカプセル化
+ : false֥
-Data_Wrap_Struct(VALUE klass, void (*mark)(), void (*free)(), void *sval) ::
+** CǡΥץ벽
- Cの任意のポインタをカプセル化したRubyオブジェクトを返す.こ
- のポインタがRubyからアクセスされなくなった時,freeで指定した
- 関数が呼ばれる.また,このポインタの指すデータが他のRubyオブ
- ジェクトを指している場合,markに指定する関数でマークする必要
- がある.
+Data_Wrap_Struct(VALUE klass, void (*mark)(), void (*free)(), void *sval)
-Data_Make_Struct(klass, type, mark, free, sval) ::
+ CǤդΥݥ󥿤򥫥ץ벽Ruby֥Ȥ֤
+ Υݥ󥿤Ruby饢ʤʤäfreeǻꤷ
+ ؿƤФ롥ޤΥݥ󥿤λؤǡ¾Ruby
+ ȤؤƤ硤mark˻ꤹؿǥޡɬ
+ 롥
- type型のメモリをmallocし,変数svalに代入した後,それをカプセ
- ル化したデータを返すマクロ.
+Data_Make_Struct(klass, type, mark, free, sval)
-Data_Get_Struct(data, type, sval) ::
+ typeΥmallocѿsval塤򥫥ץ
+ 벽ǡ֤ޥ
- dataからtype型のポインタを取り出し変数svalに代入するマクロ.
+Data_Get_Struct(data, type, sval)
-== 型チェック
+ datatypeΥݥ󥿤Фѿsvalޥ
- TYPE(value)
- FIXNUM_P(value)
- NIL_P(value)
- void Check_Type(VALUE value, int type)
- SafeStringValue(value)
+** å
-== 型変換
+TYPE(value)
+FIXNUM_P(value)
+NIL_P(value)
+void Check_Type(VALUE value, int type)
+void Check_SafeStr(VALUE value)
- FIX2INT(value), INT2FIX(i)
- FIX2LONG(value), LONG2FIX(l)
- NUM2INT(value), INT2NUM(i)
- NUM2UINT(value), UINT2NUM(ui)
- NUM2LONG(value), LONG2NUM(l)
- NUM2ULONG(value), ULONG2NUM(ul)
- NUM2LL(value), LL2NUM(ll)
- NUM2ULL(value), ULL2NUM(ull)
- NUM2OFFT(value), OFFT2NUM(off)
- NUM2SIZET(value), SIZET2NUM(size)
- NUM2SSIZET(value), SSIZET2NUM(ssize)
- NUM2DBL(value)
- rb_float_new(f)
- StringValue(value)
- StringValuePtr(value)
- StringValueCStr(value)
- rb_str_new2(s)
+** Ѵ
-== クラス/モジュール定義
+FIX2INT(value), INT2FIX(i)
+FIX2LONG(value), LONG2FIX(l)
+NUM2INT(value), INT2NUM(i)
+NUM2UINT(value), UINT2NUM(ui)
+NUM2LONG(value), LONG2NUM(l)
+NUM2ULONG(value), ULONG2NUM(ul)
+NUM2LL(value), LL2NUM(ll)
+NUM2ULL(value), ULL2NUM(ull)
+NUM2OFFT(value), OFFT2NUM(off)
+NUM2SIZET(value), SIZET2NUM(size)
+NUM2SSIZET(value), SSIZET2NUM(ssize)
+NUM2DBL(value)
+rb_float_new(f)
+StringValue(value)
+StringValuePtr(value)
+StringValueCStr(value)
+rb_str_new2(s)
-VALUE rb_define_class(const char *name, VALUE super) ::
+** 饹/⥸塼
- superのサブクラスとして新しいRubyクラスを定義する.
+VALUE rb_define_class(const char *name, VALUE super)
-VALUE rb_define_class_under(VALUE module, const char *name, VALUE super) ::
+ superΥ֥饹ȤƿRuby饹롥
- superのサブクラスとして新しいRubyクラスを定義し,moduleの
- 定数として定義する.
+VALUE rb_define_class_under(VALUE module, const char *name, VALUE super)
-VALUE rb_define_module(const char *name) ::
+ superΥ֥饹ȤƿRuby饹module
+ Ȥ롥
- 新しいRubyモジュールを定義する.
+VALUE rb_define_module(const char *name)
-VALUE rb_define_module_under(VALUE module, const char *name) ::
+ Ruby⥸塼롥
- 新しいRubyモジュールを定義し,moduleの定数として定義する.
+VALUE rb_define_module_under(VALUE module, const char *name)
-void rb_include_module(VALUE klass, VALUE module) ::
+ Ruby⥸塼moduleȤ롥
- モジュールをインクルードする.classがすでにmoduleをインク
- ルードしている時には何もしない(多重インクルードの禁止).
+void rb_include_module(VALUE klass, VALUE module)
-void rb_extend_object(VALUE object, VALUE module) ::
+ ⥸塼򥤥󥯥롼ɤ롥classǤmodule򥤥
+ 롼ɤƤˤϲ⤷ʤ(¿ť󥯥롼ɤζػ)
- オブジェクトをモジュール(で定義されているメソッド)で拡張する.
+void rb_extend_object(VALUE object, VALUE module)
-== 大域変数定義
+ ֥Ȥ⥸塼(Ƥ᥽å)dzĥ롥
-void rb_define_variable(const char *name, VALUE *var) ::
+** ѿ
- RubyとCとで共有するグローバル変数を定義する.変数名が`$'で
- 始まらない時には自動的に追加される.nameとしてRubyの識別子
- として許されない文字(例えば` ')を含む場合にはRubyプログラ
- ムからは見えなくなる.
+void rb_define_variable(const char *name, VALUE *var)
-void rb_define_readonly_variable(const char *name, VALUE *var) ::
+ RubyCȤǶͭ륰Хѿ롥ѿ̾`$'
+ ϤޤʤˤϼưŪɲä롥nameȤRubyμ̻
+ ȤƵʤʸ(㤨` ')ޤˤRubyץ
+ फϸʤʤ롥
- RubyとCとで共有するread onlyのグローバル変数を定義する.
- read onlyであること以外はrb_define_variable()と同じ.
+void rb_define_readonly_variable(const char *name, VALUE *var)
-void rb_define_virtual_variable(const char *name, VALUE (*getter)(), void (*setter)()) ::
+ RubyCȤǶͭread onlyΥХѿ롥
+ read onlyǤ뤳Ȱʳrb_define_variable()Ʊ
- 関数によって実現されるRuby変数を定義する.変数が参照された
- 時にはgetterが,変数に値がセットされた時にはsetterが呼ばれ
- る.
+void rb_define_virtual_variable(const char *name,
+ VALUE (*getter)(), void (*setter)())
-void rb_define_hooked_variable(const char *name, VALUE *var, VALUE (*getter)(), void (*setter)()) ::
+ ؿˤäƼ¸Rubyѿ롥ѿȤ줿
+ ˤgetterѿͤåȤ줿ˤsetterƤФ
+ 롥
- 関数によってhookのつけられたグローバル変数を定義する.変数
- が参照された時にはgetterが,関数に値がセットされた時には
- setterが呼ばれる.getterやsetterに0を指定した時にはhookを
- 指定しないのと同じ事になる.
+void rb_define_hooked_variable(const char *name, VALUE *var,
+ VALUE (*getter)(), void (*setter)())
-void rb_global_variable(VALUE *var)
+ ؿˤähookΤĤ줿Хѿ롥ѿ
+ Ȥ줿ˤgetterؿͤåȤ줿ˤ
+ setterƤФ롥gettersetter0ꤷˤhook
+ ꤷʤΤƱˤʤ롥
- GCのため,Rubyプログラムからはアクセスされないが, Rubyオブ
- ジェクトを含む大域変数をマークする.
+void rb_global_variable(VALUE *var)
-== 定数
+ GCΤᡤRubyץफϥʤ, Ruby
+ Ȥޤѿޡ롥
-void rb_define_const(VALUE klass, const char *name, VALUE val) ::
+**
- 定数を定義する.
+void rb_define_const(VALUE klass, const char *name, VALUE val)
-void rb_define_global_const(const char *name, VALUE val) ::
+ 롥
- 大域定数を定義する.
+void rb_define_global_const(const char *name, VALUE val)
- rb_define_const(rb_cObject, name, val)
+ 롥
- と同じ意味.
+ rb_define_const(rb_cObject, name, val)
-== メソッド定義
+ Ʊ̣
-rb_define_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::
+** ᥽å
- メソッドを定義する.argcはselfを除く引数の数.argcが-1の時,
- 関数には引数の数(selfを含まない)を第1引数, 引数の配列を第2
- 引数とする形式で与えられる(第3引数はself).argcが-2の時,
- 第1引数がself, 第2引数がargs(argsは引数を含むRubyの配列)と
- いう形式で与えられる.
+rb_define_method(VALUE klass, const char *name, VALUE (*func)(), int argc)
-rb_define_private_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::
+ ᥽åɤ롥argcselfοargc-1λ,
+ ؿˤϰο(selfޤޤʤ)1, 2
+ ȤͿ(3self)argc-2λ,
+ 1self, 2args(argsϰޤRuby)
+ Ϳ롥
+
+rb_define_private_method(VALUE klass, const char *name, VALUE (*func)(), int argc)
- privateメソッドを定義する.引数はrb_define_method()と同じ.
+ private᥽åɤ롥rb_define_method()Ʊ
-rb_define_singleton_method(VALUE klass, const char *name, VALUE (*func)(), int argc) ::
+rb_define_singleton_method(VALUE klass, const char *name, VALUE (*func)(), int argc)
- 特異メソッドを定義する.引数はrb_define_method()と同じ.
+ ðۥ᥽åɤ롥rb_define_method()Ʊ
-rb_scan_args(int argc, VALUE *argv, const char *fmt, ...) ::
+rb_scan_args(int argc, VALUE *argv, const char *fmt, ...)
- argc, argv形式で与えられた指定されたフォーマットに従って引
- 数を分解し,続くVALUEへの参照にセットします.このフォーマッ
- トは,ABNFで記述すると以下の通りです.
+ argc, argvͿ줿ꤵ줿եޥåȤ˽äư
+ ʬ򤷡³VALUEؤλȤ˥åȤޤΥեޥ
+ ȤϡABNFǵҤȰʲ̤Ǥ
- scan-arg-spec := param-arg-spec [option-hash-arg-spec] [block-arg-spec]
+--
+scan-arg-spec := param-arg-spec [option-hash-arg-spec] [block-arg-spec]
- param-arg-spec := pre-arg-spec [post-arg-spec] / post-arg-spec /
- pre-opt-post-arg-spec
- pre-arg-spec := num-of-leading-mandatory-args [num-of-optional-args]
- post-arg-spec := sym-for-variable-length-args
- [num-of-trailing-mandatory-args]
- pre-opt-post-arg-spec := num-of-leading-mandatory-args num-of-optional-args
- num-of-trailing-mandatory-args
- option-hash-arg-spec := sym-for-option-hash-arg
- block-arg-spec := sym-for-block-arg
+param-arg-spec := pre-arg-spec [post-arg-spec] / post-arg-spec / pre-opt-post-arg-spec
+pre-arg-spec := num-of-leading-mandatory-args [num-of-optional-args]
+post-arg-spec := sym-for-variable-length-args [num-of-trailing-mandatory-args]
+pre-opt-post-arg-spec := num-of-leading-mandatory-args num-of-optional-args num-of-trailing-mandatory-args
+option-hash-arg-spec := sym-for-option-hash-arg
+block-arg-spec := sym-for-block-arg
- num-of-leading-mandatory-args := DIGIT ; 先頭に置かれる省略不能な引数の数
- num-of-optional-args := DIGIT ; 続いて置かれる省略可能な引数の数
- sym-for-variable-length-args := "*" ; 続いて置かれる可変長引数を
- ; Rubyの配列で取得するための指定
- num-of-trailing-mandatory-args := DIGIT ; 終端に置かれる省略不能な引数の数
- sym-for-option-hash-arg := ":" ; オプションハッシュを取得する
- ; ための指定; 省略不能な引数の
- ; 数よりも多くの引数が指定され,
- ; 最後の引数がハッシュ(または
- ; #to_hashで変換可能)の場合に
- ; 取得される.最後の引数がnilの
- ; 場合,可変長引数指定がなく,
- ; 省略不能引数の数よりも多くの
- ; 引数が指定された場合に取得される
- sym-for-block-arg := "&" ; イテレータブロックを取得するための
- ; 指定
+num-of-leading-mandatory-args := DIGIT ; Ƭ֤άǽʰο
+num-of-optional-args := DIGIT ; ³֤άǽʰο
+sym-for-variable-length-args := "*" ; ³֤Ĺ
+ ; RubyǼ뤿λ
+num-of-trailing-mandatory-args := DIGIT ; ü֤άǽʰο
+sym-for-option-hash-arg := ":" ; ץϥå
+ ; λ; άǽʰ
+ ; ¿ΰꤵ졤
+ ; Ǹΰϥåʤޤ
+ ; #to_hashѴǽˤξ
+ ; 롥Ǹΰnil
+ ; 硤Ĺ꤬ʤ
+ ; άǽο¿
+ ; ꤵ줿˼
+sym-for-block-arg := "&" ; ƥ졼֥å뤿
+ ;
+--
- フォーマットが"12"の場合,引数は最低1つで,3つ(1+2)まで許さ
- れるという意味になります.従って,フォーマット文字列に続い
- て3つのVALUEへの参照を置く必要があります.それらには取得した
- 変数がセットされます.変数への参照の代わりにNULLを指定する
- こともでき,その場合は取得した引数の値は捨てられます.なお,
- 省略可能引数が省略された時の変数の値はnil(C言語のレベルでは
- Qnil)になります.
+ եޥåȤ"12"ξ硤Ϻ1Ĥǡ3(1+2)ޤǵ
+ Ȥ̣ˤʤޤäơեޥåʸ³
+ 3ĤVALUEؤλȤ֤ɬפޤˤϼ
+ ѿåȤޤѿؤλȤNULLꤹ
+ ȤǤξϼͤϼΤƤޤʤ
+ άǽά줿ѿͤnil(CΥ٥Ǥ
+ Qnil)ˤʤޤ
- 返り値は与えられた引数の数です.オプションハッシュおよびイ
- テレータブロックは数えません.
+ ֤ͤͿ줿οǤץϥå太ӥ
+ ƥ졼֥åϿޤ
-== Rubyメソッド呼び出し
+** Ruby᥽åɸƤӽФ
-VALUE rb_funcall(VALUE recv, ID mid, int narg, ...) ::
+VALUE rb_funcall(VALUE recv, ID mid, int narg, ...)
- メソッド呼び出し.文字列からmidを得るためにはrb_intern()を
- 使う.
+ ᥽åɸƤӽФʸ󤫤mid뤿ˤrb_intern()
+ Ȥ
-VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv) ::
+VALUE rb_funcall2(VALUE recv, ID mid, int argc, VALUE *argv)
- メソッド呼び出し.引数をargc, argv形式で渡す.
+ ᥽åɸƤӽФargc, argvϤ
VALUE rb_eval_string(const char *str)
- 文字列をRubyスクリプトとしてコンパイル・実行する.
-
-ID rb_intern(const char *name) ::
-
- 文字列に対応するIDを返す.
-
-char *rb_id2name(ID id) ::
+ ʸRubyץȤȤƥѥ롦¹Ԥ롥
- IDに対応する文字列を返す(デバッグ用).
+ID rb_intern(const char *name)
-char *rb_class2name(VALUE klass) ::
+ ʸбID֤
- クラスの名前を返す(デバッグ用).クラスが名前を持たない時に
- は, 祖先を遡って名前を持つクラスの名前を返す.
+char *rb_id2name(ID id)
-int rb_respond_to(VALUE obj, ID id) ::
+ IDбʸ֤(ǥХå)
- objがidで示されるメソッドを持つかどうかを返す.
+char *rb_class2name(VALUE klass)
-== インスタンス変数
+ 饹֤̾(ǥХå)饹̾ʤ
+ , ̤ä̾ĥ饹֤̾
-VALUE rb_iv_get(VALUE obj, const char *name) ::
+int rb_respond_to(VALUE obj, ID id)
- objのインスタンス変数の値を得る.`@'で始まらないインスタン
- ス変数は Rubyプログラムからアクセスできない「隠れた」イン
- スタンス変数になる.定数は大文字の名前を持つクラス(または
- モジュール)のインスタンス変数として実装されている.
+ objidǼ᥽åɤĤɤ֤
-VALUE rb_iv_set(VALUE obj, const char *name, VALUE val) ::
+** 󥹥ѿ
- objのインスタンス変数をvalにセットする.
+VALUE rb_iv_get(VALUE obj, const char *name)
-== 制御構造
+ objΥ󥹥ѿͤ롥`@'ǻϤޤʤ󥹥
+ ѿ Rubyץफ饢Ǥʤֱ줿ץ
+ ѿˤʤ롥ʸ̾ĥ饹(ޤ
+ ⥸塼)Υ󥹥ѿȤƼƤ롥
-VALUE rb_block_call(VALUE obj, ID mid, int argc, VALUE * argv, VALUE (*func) (ANYARGS), VALUE data2) ::
+VALUE rb_iv_set(VALUE obj, const char *name, VALUE val)
- funcをブロックとして設定し,objをレシーバ,argcとargvを引数
- としてmidメソッドを呼び出す.funcは第一引数にyieldされた値,
- 第二引数にdata2を受け取る.複数の値がyieldされた場合(Cでは
- rb_yield_values()とrb_yield_values2(), rb_yield_splat()),
- data2はArrayとしてパックされている.第三, 第四引数のargcと
- argvによってyieldされた値を取り出すことができる.
-
-[OBSOLETE] VALUE rb_iterate(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::
-
- func2をブロックとして設定し, func1をイテレータとして呼ぶ.
- func1には arg1が引数として渡され, func2には第1引数にイテレー
- タから与えられた値, 第2引数にarg2が渡される.
-
- 1.9でrb_iterateを使う場合は, func1の中でRubyレベルのメソッド
- を呼び出さなければならない.
- 1.9でobsoleteとなった. 代わりにrb_block_callが用意された.
+ objΥ󥹥ѿval˥åȤ롥
-VALUE rb_yield(VALUE val) ::
+** 湽¤
- valを値としてイテレータブロックを呼び出す.
+VALUE rb_block_call(VALUE obj, ID mid, int argc, VALUE * argv,
+ VALUE (*func) (ANYARGS), VALUE data2)
-VALUE rb_rescue(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::
+ func֥åȤꤷobj쥷Сargcargv
+ Ȥmid᥽åɤƤӽФfuncyield줿͡
+ data2롥ʣͤyield줿(CǤ
+ rb_yield_values()rb_yield_values2(), rb_yield_splat())
+ data2ArrayȤƥѥåƤ롥軰, Ͱargc
+ argvˤäyield줿ͤФȤǤ롥
- 関数func1をarg1を引数に呼び出す.func1の実行中に例外が発生
- した時には func2をarg2を引数として呼ぶ.戻り値は例外が発生
- しなかった時はfunc1の戻り値, 例外が発生した時にはfunc2の戻
- り値である.
+[OBSOLETE] VALUE rb_iterate(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2)
-VALUE rb_ensure(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2) ::
+ func2֥åȤꤷ, func1򥤥ƥ졼ȤƸƤ֡
+ func1ˤ arg1ȤϤ, func2ˤ1˥ƥ졼
+ Ϳ줿, 2arg2Ϥ롥
+
+ 1.9rb_iterateȤ, func1Ruby٥Υ᥽å
+ ƤӽФʤФʤʤ.
+ 1.9obsoleteȤʤä. rb_block_callѰդ줿.
- 関数func1をarg1を引数として実行し, 実行終了後(たとえ例外が
- 発生しても) func2をarg2を引数として実行する.戻り値はfunc1
- の戻り値である(例外が発生した時は戻らない).
+VALUE rb_yield(VALUE val)
-VALUE rb_protect(VALUE (*func) (VALUE), VALUE arg, int *state) ::
+ valͤȤƥƥ졼֥åƤӽФ
- 関数funcをargを引数として実行し, 例外が発生しなければその戻
- り値を返す.例外が発生した場合は, *stateに非0をセットして
- Qnilを返す.
- rb_jump_tag()を呼ばずに捕捉した例外を無視する場合には,
- rb_set_errinfo(Qnil)でエラー情報をクリアしなければならない.
+VALUE rb_rescue(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2)
-void rb_jump_tag(int state) ::
+ ؿfunc1arg1˸ƤӽФfunc1μ¹㳰ȯ
+ ˤ func2arg2ȤƸƤ֡ͤ㳰ȯ
+ ʤäfunc1, 㳰ȯˤfunc2
+ ͤǤ롥
- rb_protect()やrb_eval_string_protect()で捕捉された例外を再
- 送する.stateはそれらの関数から返された値でなければならない.
- この関数は直接の呼び出し元に戻らない.
+VALUE rb_ensure(VALUE (*func1)(), VALUE arg1, VALUE (*func2)(), VALUE arg2)
-void rb_iter_break() ::
+ ؿfunc1arg1ȤƼ¹Ԥ, ¹Խλ(Ȥ㳰
+ ȯƤ) func2arg2ȤƼ¹Ԥ롥ͤfunc1
+ ͤǤ(㳰ȯʤ)
- 現在の最も内側のブロックを終了する.この関数は直接の呼び出
- し元に戻らない.
+VALUE rb_protect(VALUE (*func) (VALUE), VALUE arg, int *state)
-void rb_iter_break_value(VALUE value) ::
+ ؿfuncargȤƼ¹Ԥ, 㳰ȯʤФ
+ ֤ͤ㳰ȯ, *state0򥻥åȤ
+ Qnil֤
- 現在の最も内側のブロックをvalueで終了する.ブロックは引数で
- 与えられたvalueを返す.この関数は直接の呼び出し元に戻らない.
+void rb_jump_tag(int state)
-== 例外・エラー
+ rb_protect()rb_eval_string_protect()ª줿㳰
+ 롥stateϤδؿ֤줿ͤǤʤФʤʤ
+ δؿľܤθƤӽФʤ
-void rb_warning(const char *fmt, ...) ::
+** 㳰顼
- rb_verbose時に標準エラー出力に警告情報を表示する.引数は
- printf()と同じ.
+void rb_warning(const char *fmt, ...)
-void rb_raise(rb_eRuntimeError, const char *fmt, ...) ::
+ rb_verboseɸ२顼Ϥ˷ٹɽ롥
+ printf()Ʊ
- RuntimeError例外を発生させる.引数はprintf()と同じ.
+void rb_raise(rb_eRuntimeError, const char *fmt, ...)
-void rb_raise(VALUE exception, const char *fmt, ...) ::
+ RuntimeError㳰ȯ롥printf()Ʊ
- exceptionで指定した例外を発生させる.fmt以下の引数は
- printf()と同じ.
+void rb_raise(VALUE exception, const char *fmt, ...)
-void rb_fatal(const char *fmt, ...) ::
+ exceptionǻꤷ㳰ȯ롥fmtʲΰ
+ printf()Ʊ
- 致命的例外を発生させる.通常の例外処理は行なわれず, インター
- プリタが終了する(ただしensureで指定されたコードは終了前に
- 実行される).
+void rb_fatal(const char *fmt, ...)
-void rb_bug(const char *fmt, ...) ::
+ ̿Ū㳰ȯ롥̾㳰ϹԤʤ줺, 󥿡
+ ץ꥿λ(ensureǻꤵ줿ɤϽλ
+ ¹Ԥ)
- インタープリタなどプログラムのバグでしか発生するはずのない
- 状況の時呼ぶ.インタープリタはコアダンプし直ちに終了する.
- 例外処理は一切行なわれない.
+void rb_bug(const char *fmt, ...)
-注意: %iはObject#to_s('+'フラグが指定されているときはObject#inspect)を
-使ったVALUEの出力に使用されているため,整数には%dを使用すること.
+ 󥿡ץ꥿ʤɥץΥХǤȯϤΤʤ
+ λƤ֡󥿡ץ꥿ϥפľ˽λ롥
+ 㳰ϰڹԤʤʤ
-== Rubyの初期化・実行
+** Rubyν¹
-Rubyをアプリケーションに埋め込む場合には以下のインタフェース
-を使う.通常の拡張ライブラリには必要ない.
+Ruby򥢥ץꥱˤϰʲΥ󥿥ե
+Ȥ̾γĥ饤֥ˤɬפʤ
-void ruby_init() ::
+void ruby_init()
- Rubyインタプリタの初期化を行なう.
+ Ruby󥿥ץ꥿νԤʤ
-void ruby_options(int argc, char **argv) ::
+void ruby_options(int argc, char **argv)
- Rubyインタプリタのコマンドライン引数の処理を行なう.
+ Ruby󥿥ץ꥿Υޥɥ饤νԤʤ
-void ruby_run() ::
+void ruby_run()
- Rubyインタプリタを実行する.
+ Ruby󥿥ץ꥿¹Ԥ롥
-void ruby_script(char *name) ::
+void ruby_script(char *name)
- Rubyのスクリプト名($0)を設定する.
+ RubyΥץ̾($0)ꤹ롥
-== インタプリタのイベントのフック
+** 󥿥ץ꥿Υ٥ȤΥեå
- void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events,
- VALUE data)
+ void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data)
-指定されたインタプリタのイベントに対するフック関数を追加します.
-eventsは以下の値のorでなければなりません:
+ꤵ줿󥿥ץ꥿Υ٥ȤФեåؿɲäޤ
+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
+ 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の定義は以下の通りです:
+rb_event_hook_func_tϰʲ̤Ǥ:
- typedef void (*rb_event_hook_func_t)(rb_event_t event, VALUE data,
- VALUE self, ID id, VALUE klass)
+ typedef void (*rb_event_hook_func_t)(rb_event_t event, VALUE data,
+ VALUE self, ID id, VALUE klass)
-rb_add_event_hook() の第3引数 data は,フック関数の第2引数と
-して渡されます.これは1.8では現在のNODEへのポインタでした.以
-下の RB_EVENT_HOOKS_HAVE_CALLBACK_DATA も参照してください.
+rb_add_event_hook() 3 data ϡեåؿ2
+Ϥޤ1.8ǤϸߤNODEؤΥݥ󥿤Ǥ
+ RB_EVENT_HOOKS_HAVE_CALLBACK_DATA ⻲ȤƤ
- int rb_remove_event_hook(rb_event_hook_func_t func)
+ int rb_remove_event_hook(rb_event_hook_func_t func)
-指定されたフック関数を削除します.
+ꤵ줿եåؿޤ
-== 互換性のためのマクロ
+** ߴΤΥޥ
-APIの互換性をチェックするために以下のマクロがデフォルトで定義されています.
+APIθߴå뤿˰ʲΥޥǥեȤƤޤ
-NORETURN_STYLE_NEW ::
+NORETURN_STYLE_NEW
- NORETURN マクロが関数型マクロとして定義されていることを意味する.
+ NORETURN ޥؿޥȤƤ뤳Ȥ̣롥
-HAVE_RB_DEFINE_ALLOC_FUNC ::
+HAVE_RB_DEFINE_ALLOC_FUNC
- rb_define_alloc_func() 関数が提供されていること,つまり
- allocation framework が使われることを意味する.
+ rb_define_alloc_func() ؿ󶡤Ƥ뤳ȡĤޤ
+ allocation framework Ȥ뤳Ȥ̣롥
have_func("rb_define_alloc_func", "ruby.h")
- の結果と同じ.
+ η̤Ʊ
-HAVE_RB_REG_NEW_STR ::
+HAVE_RB_REG_NEW_STR
- StringオブジェクトからRegexpオブジェクトを作る
- rb_reg_new_str() 関数が提供されていることを意味する.
+ String֥ȤRegexp֥Ȥ
+ rb_reg_new_str() ؿ󶡤Ƥ뤳Ȥ̣롥
have_func("rb_reg_new_str", "ruby.h").
- の結果と同じ.
+ η̤Ʊ
-HAVE_RB_IO_T ::
+HAVE_RB_IO_T
- rb_io_t 型が提供されていることを意味する.
+ rb_io_t 󶡤Ƥ뤳Ȥ̣롥
-USE_SYMBOL_AS_METHOD_NAME ::
+USE_SYMBOL_AS_METHOD_NAME
- メソッド名を返すメソッド,Module#methods, #singleton_methods
- などがSymbolを返すことを意味する.
+ ᥽å֤̾᥽åɡModule#methods, #singleton_methods
+ ʤɤSymbol֤Ȥ̣롥
-HAVE_RUBY_*_H ::
+HAVE_RUBY_*_H
- ruby.h で定義されている.対応するヘッダが提供されていること
- を意味する.たとえば,HAVE_RUBY_ST_H が定義されている場合は
- 単なる st.h ではなく ruby/st.h を使用する.
+ ruby.h Ƥ롥бإå󶡤Ƥ뤳
+ ̣롥ȤСHAVE_RUBY_ST_H Ƥ
+ ñʤ st.h ǤϤʤ ruby/st.h Ѥ롥
-RB_EVENT_HOOKS_HAVE_CALLBACK_DATA ::
+RB_EVENT_HOOKS_HAVE_CALLBACK_DATA
- rb_add_event_hook() がフック関数に渡す data を第3引数として
- 受け取ることを意味する.
+ rb_add_event_hook() եåؿϤ data 3Ȥ
+ 뤳Ȥ̣롥
-= Appendix C. extconf.rbで使える関数たち
+Appendix C. extconf.rbǻȤؿ
-extconf.rbの中では利用可能なコンパイル条件チェックの関数は以
-下の通りである.
+extconf.rbǤѲǽʥѥåδؿϰ
+̤Ǥ롥
-have_macro(macro, headers) ::
+have_macro(macro, headers)
- ヘッダファイルheaderをインクルードしてマクロmacroが定義さ
- れているかどうかチェックする.マクロが定義されている時true
- を返す.
+ إåեheader򥤥󥯥롼ɤƥޥmacro
+ Ƥ뤫ɤå롥ޥƤtrue
+ ֤
-have_library(lib, func) ::
+have_library(lib, func)
- 関数funcを定義しているライブラリlibの存在をチェックする.
- ライブラリが存在する時,trueを返す.
+ ؿfuncƤ饤֥lib¸ߤå롥
+ 饤֥꤬¸ߤtrue֤
-find_library(lib, func, path...) ::
+find_library(lib, func, path...)
- 関数funcを定義しているライブラリlibの存在を -Lpath を追加
- しながらチェックする.ライブラリが見付かった時,trueを返す.
+ ؿfuncƤ饤֥lib¸ߤ -Lpath ɲ
+ ʤå롥饤֥꤬դätrue֤
-have_func(func, header) ::
+have_func(func, header)
- ヘッダファイルheaderをインクルードして関数funcの存在をチェ
- ックする.funcが標準ではリンクされないライブラリ内のもので
- ある時には先にhave_libraryでそのライブラリをチェックしてお
- く事.関数が存在する時trueを返す.
+ إåեheader򥤥󥯥롼ɤƴؿfunc¸ߤ
+ å롥funcɸǤϥ󥯤ʤ饤֥ΤΤ
+ ˤhave_libraryǤΥ饤֥åƤ
+ ؿ¸ߤtrue֤
-have_var(var, header) ::
+have_var(var, header)
- ヘッダファイルheaderをインクルードして変数varの存在をチェッ
- クする.varが標準ではリンクされないライブラリ内のものであ
- る時には先にhave_libraryでそのライブラリをチェックしておく
- 事.変数が存在する時trueを返す.
+ إåեheader򥤥󥯥롼ɤѿvar¸ߤ
+ 롥varɸǤϥ󥯤ʤ饤֥ΤΤǤ
+ ˤhave_libraryǤΥ饤֥åƤ
+ ѿ¸ߤtrue֤
-have_header(header) ::
+have_header(header)
- ヘッダファイルの存在をチェックする.ヘッダファイルが存在す
- る時trueを返す.
+ إåե¸ߤå롥إåե뤬¸ߤ
+ true֤
-find_header(header, path...) ::
+find_header(header, path...)
- ヘッダファイルheaderの存在を -Ipath を追加しながらチェック
- する.ヘッダファイルが見付かった時,trueを返す.
+ إåեheader¸ߤ -Ipath ɲäʤå
+ 롥إåե뤬դätrue֤
-have_struct_member(type, member[, header[, opt]]) ::
+have_struct_member(type, member, header)
- ヘッダファイルheaderをインクルードして型typeにメンバmember
- が存在するかをチェックする.typeが定義されていて,memberを
- 持つする時trueを返す.
+ إåեheader򥤥󥯥롼ɤƷtype˥member
+ ¸ߤ뤫å롥typeƤơmember
+ Ĥtrue֤
-have_type(type, header, opt) ::
+have_type(type, header, opt)
- ヘッダファイルheaderをインクルードして型typeが存在するかを
- チェックする.typeが定義されている時trueを返す.
+ إåեheader򥤥󥯥롼ɤƷtype¸ߤ뤫
+ å롥typeƤtrue֤
-check_sizeof(type, header) ::
+check_sizeof(type, header)
- ヘッダファイルheaderをインクルードして型typeのchar単位サイ
- ズを調べる.typeが定義されている時そのサイズを返す.定義さ
- れていないときはnilを返す.
+ إåեheader򥤥󥯥롼ɤƷtypecharñ̥
+ Ĵ٤롥typeƤΥ֤
+ ƤʤȤnil֤
-create_makefile(target[, target_prefix]) ::
+create_makefile(target)
- 拡張ライブラリ用のMakefileを生成する.この関数を呼ばなけれ
- ばそのライブラリはコンパイルされない.targetはモジュール名
- を表す.
+ ĥ饤֥ѤMakefile롥δؿƤФʤ
+ ФΥ饤֥ϥѥ뤵ʤtargetϥ⥸塼̾
+ ɽ
-find_executable(command, path) ::
+find_executable(command, path)
- コマンドcommandをFile::PATH_SEPARATORで区切られたパス名の
- リストpathから探す.pathがnilまたは省略された場合は,環境
- 変数PATHの値を使用する.実行可能なコマンドが見つかった場合
- はパスを含むファイル名,見つからなかった場合はnilを返す.
+ ޥcommandFile::PATH_SEPARATORǶڤ줿ѥ̾
+ ꥹpathõpathnilޤϾά줿ϡĶ
+ ѿPATHͤѤ롥¹ԲǽʥޥɤĤä
+ ϥѥޤե̾Ĥʤänil֤
-with_config(withval[, default=nil]) ::
+with_config(withval[, default=nil])
- コマンドライン上の--with-<withval>で指定されたオプション値
- を得る.
+ ޥɥ饤--with-<withval>ǻꤵ줿ץ
+ 롥
-enable_config(config, *defaults) ::
-disable_config(config, *defaults) ::
+enable_config(config, *defaults)
+disable_config(config, *defaults)
- コマンドライン上の--enable-<config>または
- --disable-<config>で指定された真偽値を得る.
- --enable-<config>が指定されていた場合はtrue,
- --disable-<config>が指定されていた場合はfalseを返す.
- どちらも指定されていない場合は,ブロックつきで呼び出されて
- いる場合は*defaultsをyieldした結果,ブロックなしなら
- *defaultsを返す.
+ ޥɥ饤--enable-<config>ޤ
+ --disable-<config>ǻꤵ줿ͤ롥
+ --enable-<config>ꤵƤtrue
+ --disable-<config>ꤵƤfalse֤
+ ɤꤵƤʤϡ֥åĤǸƤӽФ
+ *defaultsyield̡֥åʤʤ
+ *defaults֤
-dir_config(target[, default_dir]) ::
-dir_config(target[, default_include, default_lib]) ::
+dir_config(target[, default_dir])
+dir_config(target[, default_include, default_lib])
- コマンドライン上の--with-<target>-dir, --with-<target>-include,
- --with-<target>-libのいずれかで指定されるディレクトリを
- $CFLAGS や $LDFLAGS に追加する.--with-<target>-dir=/pathは
+ ޥɥ饤--with-<target>-dir, --with-<target>-include,
+ --with-<target>-libΤ줫ǻꤵǥ쥯ȥ
+ $CFLAGS $LDFLAGS ɲä롥--with-<target>-dir=/path
--with-<target>-include=/path/include --with-<target>-lib=/path/lib
- と等価である.追加された include ディレクトリと lib ディレ
- クトリの配列を返す. ([include_dir, lib_dir])
+ Ǥ롥ɲä줿 include ǥ쥯ȥ lib ǥ
+ ȥ֤ ([include_dir, lib_dir])
-pkg_config(pkg) ::
+pkg_config(pkg)
- pkg-configコマンドからパッケージpkgの情報を得る.
- pkg-configの実際のコマンド名は,--with-pkg-configコマンド
- ラインオプションで指定可能.
+ pkg-configޥɤѥåpkgξ롥
+ pkg-configμºݤΥޥ̾ϡ--with-pkg-configޥ
+ 饤󥪥ץǻǽ
/*
* Local variables:
diff --git a/README.ja b/README.ja
index 03c007af7c..dd7f67ca59 100644
--- a/README.ja
+++ b/README.ja
@@ -1,192 +1,185 @@
-= Rubyとは
+* RubyȤ
-Rubyはシンプルかつ強力なオブジェクト指向スクリプト言語です.
-Rubyは最初から純粋なオブジェクト指向言語として設計されていま
-すから,オブジェクト指向プログラミングを手軽に行う事が出来ま
-す.もちろん通常の手続き型のプログラミングも可能です.
+Rubyϥץ뤫ĶϤʥ֥ȻظץȸǤ
+RubyϺǽ餫ʥ֥ȻظȤ߷פƤ
+顤֥Ȼظץߥ󥰤ڤ˹Ԥ
+̾μ³Υץߥ󥰤ǽǤ
-Rubyはテキスト処理関係の能力などに優れ,Perlと同じくらい強力
-です.さらにシンプルな文法と,例外処理やイテレータなどの機構
-によって,より分かりやすいプログラミングが出来ます.
+RubyϥƥȽطǽϤʤɤͥ졤PerlƱ餤
+Ǥ˥ץʸˡȡ㳰䥤ƥ졼ʤɤε
+ˤäơʬ䤹ץߥ󥰤ޤ
-== Rubyの特長
+* RubyĹ
-* シンプルな文法
-* 普通のオブジェクト指向機能(クラス,メソッドコールなど)
-* 特殊なオブジェクト指向機能(Mixin, 特異メソッドなど)
-* 演算子オーバーロード
-* 例外処理機能
-* イテレータとクロージャ
-* ガーベージコレクタ
-* ダイナミックローディング (アーキテクチャによる)
-* 移植性が高い.多くのUnix-like/POSIX互換プラットフォーム上で
- 動くだけでなく,Windows, Mac OS X,BeOSなどの上でも動く
- cf. http://bugs.ruby-lang.org/projects/ruby-trunk/wiki/SupportedPlatformsJa
+ + ץʸˡ
+ + ̤Υ֥Ȼظǽ(饹᥽åɥʤ)
+ + üʥ֥Ȼظǽ(Mixin, ðۥ᥽åɤʤ)
+ + 黻ҥС
+ + 㳰ǽ
+ + ƥ졼ȥ
+ + ١쥯
+ + ʥߥåǥ (ƥˤ)
+ + ܿ⤤¿Unix-like/POSIXߴץåȥե
+ ưǤʤWindows Mac OS XBeOSʤɤξǤư
+ cf. http://redmine.ruby-lang.org/wiki/ruby-19/SupportedPlatformsJa
-== 入手法
+* ˡ
-=== FTPで
+** FTP
-以下の場所においてあります.
+ʲξˤƤޤ
-ftp://ftp.ruby-lang.org/pub/ruby/
+ ftp://ftp.ruby-lang.org/pub/ruby/
-=== Subversionで
+** Subversion
-開発先端のソースコードは次のコマンドで取得できます.
+ȯüΥɤϼΥޥɤǼǤޤ
$ svn co http://svn.ruby-lang.org/repos/ruby/trunk/ ruby
-他に開発中のブランチの一覧は次のコマンドで見られます.
+¾˳ȯΥ֥ΰϼΥޥɤǸޤ
$ svn ls http://svn.ruby-lang.org/repos/ruby/branches/
-=== Gitで
-SubversionのミラーをGitHubに公開しています.
-以下のコマンドでリポジトリを取得できます.
+* ۡڡ
- $ git clone git://github.com/ruby/ruby.git
+RubyΥۡڡURL
-== ホームページ
+ http://www.ruby-lang.org/
-RubyのホームページのURLは
-http://www.ruby-lang.org/
-です.
+* ᡼󥰥ꥹ
+RubyΥ᡼󥰥ꥹȤޤô˾
-== メーリングリスト
+ ruby-list-ctl@ruby-lang.org
-Rubyのメーリングリストがあります。参加希望の方は
-
-mailto:ruby-list-ctl@ruby-lang.org
-
-まで本文に
+ޤʸ
subscribe YourFirstName YourFamilyName
+
+Ƚ񤤤äƲ
-と書いて送って下さい。
-
-Ruby開発者向けメーリングリストもあります。こちらではrubyのバ
-グ、将来の仕様拡張など実装上の問題について議論されています。
-参加希望の方は
+RubyȯԸ᡼󥰥ꥹȤ⤢ޤǤrubyΥ
+λͳĥʤɼˤĤƵƤޤ
+ô˾
-mailto:ruby-dev-ctl@ruby-lang.org
+ ruby-dev-ctl@ruby-lang.org
-までruby-listと同様の方法でメールしてください。
+ޤruby-listƱͤˡǥ᡼뤷Ƥ
-Ruby拡張モジュールについて話し合うruby-extメーリングリストと
-数学関係の話題について話し合うruby-mathメーリングリストと
-英語で話し合うruby-talkメーリングリストもあります。参加方法
-はどれも同じです。
+Rubyĥ⥸塼ˤĤä礦ruby-ext᡼󥰥ꥹȤ
+شطˤĤä礦ruby-math᡼󥰥ꥹȤ
+Ѹä礦ruby-talk᡼󥰥ꥹȤ⤢ޤˡ
+ϤɤƱǤ
-== コンパイル・インストール
+* ѥ롦󥹥ȡ
-以下の手順で行ってください.
+ʲμǹԤäƤ
-1. もし +configure+ ファイルが見つからない、もしくは
- +configure.in+ より古いようなら、 +autoconf+ を実行して
- 新しく +configure+ を生成する
+ 1. ⤷configureե뤬Ĥʤ⤷
+ configure.inŤ褦ʤ顢autoconf¹Ԥ
+ configure
-2. +configure+ を実行して +Makefile+ などを生成する
+ 2. configure¹ԤMakefileʤɤ
- 環境によってはデフォルトのCコンパイラ用オプションが付き
- ます. +configure+ オプションで <tt>optflags=..</tt> <tt>warnflags=..</tt> 等
- で上書きできます.
+ ĶˤäƤϥǥեȤCѥѥץդ
+ ޤconfigureץ optflags=.. warnflags=..
+ Ǿ񤭤Ǥޤ
-3. (必要ならば)+defines.h+ を編集する
+ 3. (ɬפʤ)defines.hԽ
- 多分,必要無いと思います.
+ ¿ʬɬ̵Ȼפޤ
-4. (必要ならば)+ext/Setup+ に静的にリンクする拡張モジュールを
- 指定する
+ 4. (ɬפʤ)ext/SetupŪ˥󥯤ĥ⥸塼
+ ꤹ
- +ext/Setup+ に記述したモジュールは静的にリンクされます.
+ ext/Setup˵Ҥ⥸塼Ū˥󥯤ޤ
- ダイナミックローディングをサポートしていないアーキテク
- チャでは +Setup+ の1行目の「<tt>option nodynamic</tt>」という行のコ
- メントを外す必要があります.また,このアーキテクチャで
- 拡張モジュールを利用するためには,あらかじめ静的にリン
- クしておく必要があります.
+ ʥߥåǥ󥰤򥵥ݡȤƤʤƥ
+ ǤSetup1ܤΡoption nodynamicפȤԤΥ
+ Ȥ򳰤ɬפޤޤΥƥ
+ ĥ⥸塼Ѥ뤿ˤϡ餫Ū˥
+ Ƥɬפޤ
-5. +make+ を実行してコンパイルする
+ 5. make¹Ԥƥѥ뤹
-6. <tt>make check</tt>でテストを行う.
+ 6. make testǥƥȤԤ
- 「<tt>check succeeded</tt>」と表示されれば成功です.ただしテスト
- に成功しても完璧だと保証されている訳ではありません.
+ test succeededפɽǤƥ
+ ƤⴰݾڤƤǤϤޤ
-7. <tt>make install</tt>
+ 7. make install
- 以下のディレクトリを作って,そこにファイルをインストー
- ルします.
+ ʲΥǥ쥯ȥäơ˥ե򥤥󥹥ȡ
+ 뤷ޤ
- * <tt>${DESTDIR}${prefix}/bin</tt>
- * <tt>${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}</tt>
- * <tt>${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}</tt>
- * <tt>${DESTDIR}${prefix}/lib</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/site_ruby</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/vendor_ruby</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}</tt>
- * <tt>${DESTDIR}${prefix}/lib/ruby/gems/${MAJOR}.${MINOR}.${TEENY}</tt>
- * <tt>${DESTDIR}${prefix}/share/man/man1</tt>
- * <tt>${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system</tt>
+ * ${DESTDIR}${prefix}/bin
+ * ${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}
+ * ${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
+ * ${DESTDIR}${prefix}/lib
+ * ${DESTDIR}${prefix}/lib/ruby
+ * ${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}
+ * ${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
+ * ${DESTDIR}${prefix}/lib/ruby/site_ruby
+ * ${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}
+ * ${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
+ * ${DESTDIR}${prefix}/lib/ruby/vendor_ruby
+ * ${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}
+ * ${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
+ * ${DESTDIR}${prefix}/lib/ruby/gems/${MAJOR}.${MINOR}.${TEENY}
+ * ${DESTDIR}${prefix}/share/man/man1
+ * ${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system
- RubyのAPIバージョンが'_x.y.z_'であれば,<tt>${MAJOR}</tt>は
- '_x_'で,<tt>${MINOR}</tt>は'_y_',<tt>${TEENY}</tt>は'_z_'です.
+ RubyAPIС`x.y.z'ǤС((|${MAJOR}|))
+ `x'ǡ((|${MINOR}|))`y'((|${TEENY}|))`z'Ǥ
- <b>注意</b>: APIバージョンの +teeny+ は,Rubyプログラムのバージョ
- ンとは異なることがあります.
+ : APIСteenyϡRubyץΥС
+ Ȥϰۤʤ뤳Ȥޤ
- +root+ で作業する必要があるかもしれません.
+ rootǺȤɬפ뤫⤷ޤ
-もし,コンパイル時にエラーが発生した場合にはエラーのログとマ
-シン,OSの種類を含むできるだけ詳しいレポートを作者に送ってく
-ださると他の方のためにもなります.
+⤷ѥ˥顼ȯˤϥ顼Υȥ
+OSμޤǤܤݡȤԤäƤ
+¾Τˤʤޤ
-== 移植
+* ܿ
-UNIXであれば +configure+ がほとんどの差異を吸収してくれるはずで
-すが,思わぬ見落としがあった場合(あるに違いない),作者にその
-ことをレポートすれば,解決できるかも知れません.
+UNIXǤconfigureۤȤɤκۤۼƤϤ
+פ̸Ȥä(˰㤤ʤ)Ԥˤ
+ȤݡȤСǤ뤫Τޤ
-アーキテクチャにもっとも依存するのはGC部です.RubyのGCは対象
-のアーキテクチャが<tt>setjmp()</tt>または<tt>getcontext()</tt>によって全てのレ
-ジスタを +jmp_buf+ や +ucontext_t+ に格納することと, +jmp_buf+ や
-+ucontext_t+ とスタックが32bitアラインメントされていることを仮定
-しています.特に前者が成立しない場合の対応は非常に困難でしょう.
-後者の解決は比較的簡単で, +gc.c+ でスタックをマークしている
-部分にアラインメントのバイト数だけずらしてマークするコードを
-追加するだけで済みます.<tt>defined(\_\_mc68000\_\_)</tt>で括られてい
-る部分を参考にしてください.
+ƥˤäȤ¸ΤGCǤRubyGCо
+Υƥ㤬setjmp()ޤgetcontext()ˤäƤΥ
+jmp_bufucontext_t˳Ǽ뤳Ȥȡjmp_buf
+ucontext_tȥå32bit饤ȤƤ뤳Ȥ
+ƤޤäԤΩʤб˺Ǥ
+ԤβŪñǡgc.cǥåޡƤ
+ʬ˥饤ȤΥХȿ餷ƥޡ륳ɤ
+ɲäǺѤߤޤdefined(__mc68000__)פdzƤ
+ʬ򻲹ͤˤƤ
-レジスタウィンドウを持つCPUでは,レジスタウィンドウをスタッ
-クにフラッシュするアセンブラコードを追加する必要があるかも知
-れません.
+쥸ɥCPUǤϡ쥸ɥ򥹥
+˥եå夹륢֥饳ɤɲäɬפ뤫
-== 配布条件
+* ۾
-+COPYING.ja+ ファイルを参照してください。
+COPYING.jaե򻲾ȤƤ
-== 著者
+*
-コメント,バグレポートその他は mailto:matz@ruby-lang.jp まで.
+ȡХݡȤ¾ matz@netlab.jp ޤǡ
-------------------------------------------------------
created at: Thu Aug 3 11:57:36 JST 1995
---
Local variables:
-mode: rdoc
+mode: indented-text
end:
diff --git a/ToDo b/ToDo
new file mode 100644
index 0000000000..7e5ef523a8
--- /dev/null
+++ b/ToDo
@@ -0,0 +1,124 @@
+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.
+* ... inside condition turns off just before right condition.???
+* package or access control for global variables??
+* named arguments like foo(nation:="german") or foo(nation: "german").
+* method to retrieve argument information (needs new C API)
+* multiple return values, yield values. maybe incompatible ???
+* cascading method invocation ???
+* def Class#method .. end ??
+* def Foo::Bar::baz() .. end ??
+* I18N (or M17N) script/string/regexp
+* 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?)
+ + remove scope by block
+ + variables appears within block may have independent values.
+* Regexp: make /o thread safe.
+* decide whether begin with rescue or ensure make do..while loop.
+* unify == and eql? again
+* to_i returns nil if str contains no digit.
+* jar like combined library package. -> RubyGems?
+* method combination, e.g. before, after, around, etc.
+* .. or something like defadvice in Emacs.
+* property - for methods, or for objects in general.
+* "in" modifier, to annotate, or to encourage assertion.
+* 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()"
+
+Hacking Interpreter
+
+- generational GC
+* non-blocking open (e.g. for named pipe) for thread
+* avoid blocking with gethostbyname/gethostbyaddr (use fork ???)
+* objectify interpreters ???
+* remove rb_eval() recursions
+* syntax tree -> bytecode ???
+* scrambled script, or script filter
+* setuid ruby
+* performance tune for in-block (dynamic) local variables.
+* give warnings to assign magic variables.
+* export rb_io_{addstr,printf,puts,print}
+* autoload should work with threads [ruby-talk:4589]
+* remove stdio dependency from IOs.
+* warn for inconsistent local variable usage (lv m and method m at the same time).
+* MicroRuby
+* Built-in Interactive Ruby.
+* Parser API
+* trap every method invocation, which can be enabled by e.g. trap_call :method.
+* unify Errno exceptions of same errno, or new exception comparison scheme.
+* 2.times{|i| if i==0 then a = 15 else puts eval("a") end} should print nil.
+* Thread#max_stack_size attribute (possible??)
+
+Standard Libraries
+
+- Module#define_method which takes a name and a body (block, proc or method).
+- Enume#inject
+- Array#fetch
+- IO::for_fd
+- Process::waitall [ruby-talk:4557]
+- Process::Status
+- File::lchown, File::lchmod; xxx - still need work for non existing platforms
+- move Time::times to Process.
+- Enumerable#sort_by for Schwartzian transformation
+- fork_and_kill_other_threads.
+- signal list (Signal::trap, Signal::list).
+- move NameError under StandardError.
+- Integer#to_s(base)
+- Hash::new{default}
+- hash etc. should handle self referenceing array/hash
+- Array#select(n1,n2...) works like Array#indexes(n1,n2...)
+- use Mersenne Twister RNG for random.
+- deprecate Array#indexes, and Array#indices.
+- remove dependency on MAXPATHLEN.
+- String#scanf(?)
+* Object#fmt(?)
+* Time::strptime
+* Integer[num], Float[num]; Fixnum[num]?
+* method to retrieve non-number trailer for to_i/to_f.
+* Stream or Port, abstract superclass of IO ?
+* String#{pred,prev}, String#downto
+* optional stepsize argument for succ()
+* Ruby module -- Ruby::Version, Ruby::Interpreter
+* introduce Boolean class; super of TrueClass, FalseClass
+* synchronized method - synchronized{...}, synchronized :foo, :bar
+* Array#&, Array#| to allow duplication. ???
+* way to specify immortal (fork endurance) thread;
+* or raise ForkException to every thread but fork caller.
+* new user-defined marshal scheme. _dump(dumper), _load(restorer)
+* library to load per-user profile seeking .ruby_profile or ruby.ini file.
+* warning framework (warn, warning for Ruby level)
+* marshal should not depend on sprintf (works bad with locale).
+* ternary arg pow: a.pow(b,c) == a**b%c
+* new caller(), e.g. call_stack; needs better name.
+* pointer share mechanism similar to one in String for Array.
+* require "1.6" etc. by /usr/lib/ruby/1.6/1.6.rb ;-)
+* save both "feature names" and "normalized path" in $"
+* implement Mutex_m (or MutexMixin) using Mutex.
+
+Extension Libraries
+
+* ptk.rb pTk wrapper that is compatible to tk.rb
+* Berkeley DB extension
+* BitVector
+* thread-safe fcgi
+
+Ruby Libraries
+
+- urllib.rb, nttplib.rb, etc.
+* format like perl's
+
+Tools
+
+* freeze or undump to bundle everything
+* bundle using zlib
diff --git a/addr2line.c b/addr2line.c
index 72e2c15617..219d1d4b47 100644
--- a/addr2line.c
+++ b/addr2line.c
@@ -1,6 +1,6 @@
/**********************************************************************
- addr2line.c -
+ addr2line.h -
$Author$
@@ -24,7 +24,6 @@
#include <fcntl.h>
#include <limits.h>
#include <stdio.h>
-#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <sys/mman.h>
@@ -32,26 +31,9 @@
#include <sys/stat.h>
#include <unistd.h>
-/* Make alloca work the best possible way. */
-#ifdef __GNUC__
-# ifndef atarist
-# ifndef alloca
-# define alloca __builtin_alloca
-# endif
-# endif /* atarist */
-#else
-# ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-# else
-# ifdef _AIX
-#pragma alloca
-# else
-# ifndef alloca /* predefined by HP cc +Olibcalls */
-void *alloca();
-# endif
-# endif /* AIX */
-# endif /* HAVE_ALLOCA_H */
-#endif /* __GNUC__ */
+#if defined(HAVE_ALLOCA_H)
+#include <alloca.h>
+#endif
#ifdef HAVE_DL_ITERATE_PHDR
# ifndef _GNU_SOURCE
@@ -86,11 +68,6 @@ void *alloca();
# define ElfW(x) Elf32##_##x
# endif
#endif
-#ifndef PATH_MAX
-#define PATH_MAX 4096
-#endif
-
-int kprintf(const char *fmt, ...);
typedef struct {
const char *dirname;
@@ -107,8 +84,7 @@ typedef struct {
static char binary_filename[PATH_MAX];
static unsigned long
-uleb128(char **p)
-{
+uleb128(char **p) {
unsigned long r = 0;
int s = 0;
for (;;) {
@@ -124,8 +100,7 @@ uleb128(char **p)
}
static long
-sleb128(char **p)
-{
+sleb128(char **p) {
long r = 0;
int s = 0;
for (;;) {
@@ -155,7 +130,7 @@ get_nth_dirname(unsigned long dir, char *p)
while (*p) p++;
p++;
if (!*p) {
- kprintf("Unexpected directory number %lu in %s\n",
+ fprintf(stderr, "Unexpected directory number %lu in %s\n",
dir, binary_filename);
return "";
}
@@ -175,7 +150,7 @@ fill_filename(int file, char *include_directories, char *filenames,
filename = p;
if (!*p) {
/* Need to output binary file name? */
- kprintf("Unexpected file number %d in %s\n",
+ fprintf(stderr, "Unexpected file number %d in %s\n",
file, binary_filename);
return;
}
@@ -240,19 +215,19 @@ parse_debug_line_cu(int num_traces, void **traces,
int default_is_stmt, line_base;
unsigned int header_length, minimum_instruction_length, line_range,
opcode_base;
- /* unsigned char *standard_opcode_lengths; */
+ unsigned char *standard_opcode_lengths;
/* The registers. */
unsigned long addr = 0;
unsigned int file = 1;
unsigned int line = 1;
- /* unsigned int column = 0; */
+ unsigned int column = 0;
int is_stmt;
- /* int basic_block = 0; */
- /* int end_sequence = 0; */
- /* int prologue_end = 0; */
- /* int epilogue_begin = 0; */
- /* unsigned int isa = 0; */
+ int basic_block = 0;
+ int end_sequence = 0;
+ int prologue_end = 0;
+ int epilogue_begin = 0;
+ unsigned int isa = 0;
p = *debug_line;
@@ -288,7 +263,7 @@ parse_debug_line_cu(int num_traces, void **traces,
opcode_base = *(unsigned char *)p;
p++;
- /* standard_opcode_lengths = (unsigned char *)p - 1; */
+ standard_opcode_lengths = (unsigned char *)p - 1;
p += opcode_base - 1;
include_directories = p;
@@ -308,7 +283,7 @@ parse_debug_line_cu(int num_traces, void **traces,
do { \
fill_line(num_traces, traces, addr, file, line, \
include_directories, filenames, lines); \
- /*basic_block = prologue_end = epilogue_begin = 0;*/ \
+ basic_block = prologue_end = epilogue_begin = 0; \
} while (0)
while (p < cu_end) {
@@ -331,13 +306,13 @@ parse_debug_line_cu(int num_traces, void **traces,
file = (unsigned int)uleb128(&p);
break;
case DW_LNS_set_column:
- /*column = (unsigned int)*/(void)uleb128(&p);
+ column = (unsigned int)uleb128(&p);
break;
case DW_LNS_negate_stmt:
is_stmt = !is_stmt;
break;
case DW_LNS_set_basic_block:
- /*basic_block = 1; */
+ basic_block = 1;
break;
case DW_LNS_const_add_pc:
a = ((255 - opcode_base) / line_range) *
@@ -349,35 +324,35 @@ parse_debug_line_cu(int num_traces, void **traces,
addr += a;
break;
case DW_LNS_set_prologue_end:
- /* prologue_end = 1; */
+ prologue_end = 1;
break;
case DW_LNS_set_epilogue_begin:
- /* epilogue_begin = 1; */
+ epilogue_begin = 1;
break;
case DW_LNS_set_isa:
- /* isa = (unsigned int)*/(void)uleb128(&p);
+ isa = (unsigned int)uleb128(&p);
break;
case 0:
a = *(unsigned char *)p++;
op = *p++;
switch (op) {
case DW_LNE_end_sequence:
- /* end_sequence = 1; */
+ end_sequence = 1;
FILL_LINE();
addr = 0;
file = 1;
line = 1;
- /* column = 0; */
+ column = 0;
is_stmt = default_is_stmt;
- /* end_sequence = 0; */
- /* isa = 0; */
+ end_sequence = 0;
+ isa = 0;
break;
case DW_LNE_set_address:
addr = *(unsigned long *)p;
p += sizeof(unsigned long);
break;
case DW_LNE_define_file:
- kprintf("Unsupported operation in %s\n",
+ fprintf(stderr, "Unsupported operation in %s\n",
binary_filename);
break;
case DW_LNE_set_discriminator:
@@ -385,7 +360,7 @@ parse_debug_line_cu(int num_traces, void **traces,
uleb128(&p);
break;
default:
- kprintf("Unknown extended opcode: %d in %s\n",
+ fprintf(stderr, "Unknown extended opcode: %d in %s\n",
op, binary_filename);
}
break;
@@ -413,7 +388,7 @@ parse_debug_line(int num_traces, void **traces,
parse_debug_line_cu(num_traces, traces, &debug_line, lines);
}
if (debug_line != debug_line_end) {
- kprintf("Unexpected size of .debug_line in %s\n",
+ fprintf(stderr, "Unexpected size of .debug_line in %s\n",
binary_filename);
}
}
@@ -475,39 +450,22 @@ fill_lines(int num_traces, void **traces, char **syms, int check_debuglink,
if (filesize < 0) {
int e = errno;
close(fd);
- kprintf("lseek: %s\n", strerror(e));
- return;
- }
-#if SIZEOF_OFF_T > SIZEOF_SIZE_T
- if (filesize > (off_t)SIZE_MAX) {
- close(fd);
- kprintf("Too large file %s\n", binary_filename);
+ fprintf(stderr, "lseek: %s\n", strerror(e));
return;
}
-#endif
lseek(fd, 0, SEEK_SET);
/* async-signal unsafe */
- file = (char *)mmap(NULL, (size_t)filesize, PROT_READ, MAP_SHARED, fd, 0);
+ file = (char *)mmap(NULL, filesize, PROT_READ, MAP_SHARED, fd, 0);
if (file == MAP_FAILED) {
int e = errno;
close(fd);
- kprintf("mmap: %s\n", strerror(e));
- return;
- }
-
- ehdr = (ElfW(Ehdr) *)file;
- if (memcmp(ehdr->e_ident, "\177ELF", 4) != 0) {
- /*
- * Huh? Maybe filename was overridden by setproctitle() and
- * it match non-elf file.
- */
- close(fd);
+ fprintf(stderr, "mmap: %s\n", strerror(e));
return;
}
current_line->fd = fd;
current_line->mapped = file;
- current_line->mapped_size = (size_t)filesize;
+ current_line->mapped_size = filesize;
for (i = 0; i < num_traces; i++) {
const char *path;
@@ -518,6 +476,7 @@ fill_lines(int num_traces, void **traces, char **syms, int check_debuglink,
}
}
+ ehdr = (ElfW(Ehdr) *)file;
shdr = (ElfW(Shdr) *)(file + ehdr->e_shoff);
shstr_shdr = shdr + ehdr->e_shstrndx;
@@ -616,22 +575,23 @@ rb_dump_backtrace_with_lines(int num_traces, void **trace, char **syms)
fill_lines(num_traces, trace, syms, 1, &lines[i], lines);
}
+ /* fprintf may not be async-signal safe */
for (i = 0; i < num_traces; i++) {
line_info_t *line = &lines[i];
if (line->line > 0) {
+ fprintf(stderr, "%s ", syms[i]);
if (line->filename) {
if (line->dirname && line->dirname[0]) {
- kprintf("%s %s/%s:%d\n", syms[i], line->dirname, line->filename, line->line);
- }
- else {
- kprintf("%s %s:%d\n", syms[i], line->filename, line->line);
+ fprintf(stderr, "%s/", line->dirname);
}
+ fprintf(stderr, "%s", line->filename);
} else {
- kprintf("%s ???:%d\n", syms[i], line->line);
+ fprintf(stderr, "???");
}
+ fprintf(stderr, ":%d\n", line->line);
} else {
- kprintf("%s\n", syms[i]);
+ fprintf(stderr, "%s\n", syms[i]);
}
}
@@ -645,436 +605,6 @@ rb_dump_backtrace_with_lines(int num_traces, void **trace, char **syms)
free(lines);
}
-/* From FreeBSD's lib/libstand/printf.c */
-/*-
- * Copyright (c) 1986, 1988, 1991, 1993
- * The Regents of the University of California. All rights reserved.
- * (c) UNIX System Laboratories, Inc.
- * All or some portions of this file are derived from material licensed
- * to the University of California by American Telephone and Telegraph
- * Co. or Unix System Laboratories, Inc. and are reproduced herein with
- * the permission of UNIX System Laboratories, Inc.
- *
- * 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.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
- *
- * @(#)subr_prf.c 8.3 (Berkeley) 1/21/94
- */
-
-#include <stdarg.h>
-#define MAXNBUF (sizeof(intmax_t) * CHAR_BIT + 1)
-extern int rb_toupper(int c);
-#define toupper(c) rb_toupper(c)
-#define hex2ascii(hex) (hex2ascii_data[hex])
-char const hex2ascii_data[] = "0123456789abcdefghijklmnopqrstuvwxyz";
-static inline int imax(int a, int b) { return (a > b ? a : b); }
-static int kvprintf(char const *fmt, void (*func)(int), void *arg, int radix, va_list ap);
-
-static void putce(int c)
-{
- char s[1];
- ssize_t ret;
-
- s[0] = (char)c;
- ret = write(2, s, 1);
- (void)ret;
-}
-
-int
-kprintf(const char *fmt, ...)
-{
- va_list ap;
- int retval;
-
- va_start(ap, fmt);
- retval = kvprintf(fmt, putce, NULL, 10, ap);
- va_end(ap);
- return retval;
-}
-
-/*
- * Put a NUL-terminated ASCII number (base <= 36) in a buffer in reverse
- * order; return an optional length and a pointer to the last character
- * written in the buffer (i.e., the first character of the string).
- * The buffer pointed to by `nbuf' must have length >= MAXNBUF.
- */
-static char *
-ksprintn(char *nbuf, uintmax_t num, int base, int *lenp, int upper)
-{
- char *p, c;
-
- p = nbuf;
- *p = '\0';
- do {
- c = hex2ascii(num % base);
- *++p = upper ? toupper(c) : c;
- } while (num /= base);
- if (lenp)
- *lenp = p - nbuf;
- return (p);
-}
-
-/*
- * Scaled down version of printf(3).
- *
- * Two additional formats:
- *
- * The format %b is supported to decode error registers.
- * Its usage is:
- *
- * printf("reg=%b\n", regval, "<base><arg>*");
- *
- * where <base> is the output base expressed as a control character, e.g.
- * \10 gives octal; \20 gives hex. Each arg is a sequence of characters,
- * the first of which gives the bit number to be inspected (origin 1), and
- * the next characters (up to a control character, i.e. a character <= 32),
- * give the name of the register. Thus:
- *
- * kvprintf("reg=%b\n", 3, "\10\2BITTWO\1BITONE\n");
- *
- * would produce output:
- *
- * reg=3<BITTWO,BITONE>
- *
- * XXX: %D -- Hexdump, takes pointer and separator string:
- * ("%6D", ptr, ":") -> XX:XX:XX:XX:XX:XX
- * ("%*D", len, ptr, " " -> XX XX XX XX ...
- */
-static int
-kvprintf(char const *fmt, void (*func)(int), void *arg, int radix, va_list ap)
-{
-#define PCHAR(c) {int cc=(c); if (func) (*func)(cc); else *d++ = cc; retval++; }
- char nbuf[MAXNBUF];
- char *d;
- const char *p, *percent, *q;
- unsigned char *up;
- int ch, n;
- uintmax_t num;
- int base, lflag, qflag, tmp, width, ladjust, sharpflag, neg, sign, dot;
- int cflag, hflag, jflag, tflag, zflag;
- int dwidth, upper;
- char padc;
- int stop = 0, retval = 0;
-
- num = 0;
- if (!func)
- d = (char *) arg;
- else
- d = NULL;
-
- if (fmt == NULL)
- fmt = "(fmt null)\n";
-
- if (radix < 2 || radix > 36)
- radix = 10;
-
- for (;;) {
- padc = ' ';
- width = 0;
- while ((ch = (unsigned char)*fmt++) != '%' || stop) {
- if (ch == '\0')
- return (retval);
- PCHAR(ch);
- }
- percent = fmt - 1;
- qflag = 0; lflag = 0; ladjust = 0; sharpflag = 0; neg = 0;
- sign = 0; dot = 0; dwidth = 0; upper = 0;
- cflag = 0; hflag = 0; jflag = 0; tflag = 0; zflag = 0;
-reswitch: switch (ch = (unsigned char)*fmt++) {
- case '.':
- dot = 1;
- goto reswitch;
- case '#':
- sharpflag = 1;
- goto reswitch;
- case '+':
- sign = 1;
- goto reswitch;
- case '-':
- ladjust = 1;
- goto reswitch;
- case '%':
- PCHAR(ch);
- break;
- case '*':
- if (!dot) {
- width = va_arg(ap, int);
- if (width < 0) {
- ladjust = !ladjust;
- width = -width;
- }
- } else {
- dwidth = va_arg(ap, int);
- }
- goto reswitch;
- case '0':
- if (!dot) {
- padc = '0';
- goto reswitch;
- }
- case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- for (n = 0;; ++fmt) {
- n = n * 10 + ch - '0';
- ch = *fmt;
- if (ch < '0' || ch > '9')
- break;
- }
- if (dot)
- dwidth = n;
- else
- width = n;
- goto reswitch;
- case 'b':
- num = (unsigned int)va_arg(ap, int);
- p = va_arg(ap, char *);
- for (q = ksprintn(nbuf, num, *p++, NULL, 0); *q;)
- PCHAR(*q--);
-
- if (num == 0)
- break;
-
- for (tmp = 0; *p;) {
- n = *p++;
- if (num & (1 << (n - 1))) {
- PCHAR(tmp ? ',' : '<');
- for (; (n = *p) > ' '; ++p)
- PCHAR(n);
- tmp = 1;
- } else
- for (; *p > ' '; ++p)
- continue;
- }
- if (tmp)
- PCHAR('>');
- break;
- case 'c':
- PCHAR(va_arg(ap, int));
- break;
- case 'D':
- up = va_arg(ap, unsigned char *);
- p = va_arg(ap, char *);
- if (!width)
- width = 16;
- while(width--) {
- PCHAR(hex2ascii(*up >> 4));
- PCHAR(hex2ascii(*up & 0x0f));
- up++;
- if (width)
- for (q=p;*q;q++)
- PCHAR(*q);
- }
- break;
- case 'd':
- case 'i':
- base = 10;
- sign = 1;
- goto handle_sign;
- case 'h':
- if (hflag) {
- hflag = 0;
- cflag = 1;
- } else
- hflag = 1;
- goto reswitch;
- case 'j':
- jflag = 1;
- goto reswitch;
- case 'l':
- if (lflag) {
- lflag = 0;
- qflag = 1;
- } else
- lflag = 1;
- goto reswitch;
- case 'n':
- if (jflag)
- *(va_arg(ap, intmax_t *)) = retval;
- else if (qflag)
- *(va_arg(ap, int64_t *)) = retval;
- else if (lflag)
- *(va_arg(ap, long *)) = retval;
- else if (zflag)
- *(va_arg(ap, size_t *)) = retval;
- else if (hflag)
- *(va_arg(ap, short *)) = retval;
- else if (cflag)
- *(va_arg(ap, char *)) = retval;
- else
- *(va_arg(ap, int *)) = retval;
- break;
- case 'o':
- base = 8;
- goto handle_nosign;
- case 'p':
- base = 16;
- sharpflag = (width == 0);
- sign = 0;
- num = (uintptr_t)va_arg(ap, void *);
- goto number;
- case 'q':
- qflag = 1;
- goto reswitch;
- case 'r':
- base = radix;
- if (sign)
- goto handle_sign;
- goto handle_nosign;
- case 's':
- p = va_arg(ap, char *);
- if (p == NULL)
- p = "(null)";
- if (!dot)
- n = strlen (p);
- else
- for (n = 0; n < dwidth && p[n]; n++)
- continue;
-
- width -= n;
-
- if (!ladjust && width > 0)
- while (width--)
- PCHAR(padc);
- while (n--)
- PCHAR(*p++);
- if (ladjust && width > 0)
- while (width--)
- PCHAR(padc);
- break;
- case 't':
- tflag = 1;
- goto reswitch;
- case 'u':
- base = 10;
- goto handle_nosign;
- case 'X':
- upper = 1;
- case 'x':
- base = 16;
- goto handle_nosign;
- case 'y':
- base = 16;
- sign = 1;
- goto handle_sign;
- case 'z':
- zflag = 1;
- goto reswitch;
-handle_nosign:
- sign = 0;
- if (jflag)
- num = va_arg(ap, uintmax_t);
- else if (qflag)
- num = va_arg(ap, uint64_t);
- else if (tflag)
- num = va_arg(ap, ptrdiff_t);
- else if (lflag)
- num = va_arg(ap, unsigned long);
- else if (zflag)
- num = va_arg(ap, size_t);
- else if (hflag)
- num = (unsigned short)va_arg(ap, int);
- else if (cflag)
- num = (unsigned char)va_arg(ap, int);
- else
- num = va_arg(ap, unsigned int);
- goto number;
-handle_sign:
- if (jflag)
- num = va_arg(ap, intmax_t);
- else if (qflag)
- num = va_arg(ap, int64_t);
- else if (tflag)
- num = va_arg(ap, ptrdiff_t);
- else if (lflag)
- num = va_arg(ap, long);
- else if (zflag)
- num = va_arg(ap, ssize_t);
- else if (hflag)
- num = (short)va_arg(ap, int);
- else if (cflag)
- num = (char)va_arg(ap, int);
- else
- num = va_arg(ap, int);
-number:
- if (sign && (intmax_t)num < 0) {
- neg = 1;
- num = -(intmax_t)num;
- }
- p = ksprintn(nbuf, num, base, &n, upper);
- tmp = 0;
- if (sharpflag && num != 0) {
- if (base == 8)
- tmp++;
- else if (base == 16)
- tmp += 2;
- }
- if (neg)
- tmp++;
-
- if (!ladjust && padc == '0')
- dwidth = width - tmp;
- width -= tmp + imax(dwidth, n);
- dwidth -= n;
- if (!ladjust)
- while (width-- > 0)
- PCHAR(' ');
- if (neg)
- PCHAR('-');
- if (sharpflag && num != 0) {
- if (base == 8) {
- PCHAR('0');
- } else if (base == 16) {
- PCHAR('0');
- PCHAR('x');
- }
- }
- while (dwidth-- > 0)
- PCHAR('0');
-
- while (*p)
- PCHAR(*p--);
-
- if (ladjust)
- while (width-- > 0)
- PCHAR(' ');
-
- break;
- default:
- while (percent < fmt)
- PCHAR(*percent++);
- /*
- * Since we ignore an formatting argument it is no
- * longer safe to obey the remaining formatting
- * arguments as the arguments will no longer match
- * the format specs.
- */
- stop = 1;
- break;
- }
- }
-#undef PCHAR
-}
#else /* defined(USE_ELF) */
#error not supported
#endif
diff --git a/array.c b/array.c
index 54d3d763e0..e427cb3320 100644
--- a/array.c
+++ b/array.c
@@ -16,8 +16,6 @@
#include "ruby/st.h"
#include "ruby/encoding.h"
#include "internal.h"
-#include "probes.h"
-#include "id.h"
#ifndef ARRAY_DEBUG
# define NDEBUG
@@ -28,7 +26,7 @@
VALUE rb_cArray;
-static ID id_cmp, id_div, id_power;
+static ID id_cmp;
#define ARY_DEFAULT_SIZE 16
#define ARY_MAX_SIZE (LONG_MAX / (int)sizeof(VALUE))
@@ -67,6 +65,7 @@ memfill(register VALUE *mem, register long size, register VALUE val)
#define ARY_OWNS_HEAP_P(a) (!FL_TEST((a), ELTS_SHARED|RARRAY_EMBED_FLAG))
#define FL_SET_EMBED(a) do { \
assert(!ARY_SHARED_P(a)); \
+ assert(!OBJ_FROZEN(a)); \
FL_SET((a), RARRAY_EMBED_FLAG); \
} while (0)
#define FL_UNSET_EMBED(ary) FL_UNSET((ary), RARRAY_EMBED_FLAG|RARRAY_EMBED_LEN_MASK)
@@ -256,24 +255,15 @@ rb_ary_modify(VALUE ary)
rb_ary_modify_check(ary);
if (ARY_SHARED_P(ary)) {
long len = RARRAY_LEN(ary);
- VALUE shared = ARY_SHARED(ary);
if (len <= RARRAY_EMBED_LEN_MAX) {
VALUE *ptr = ARY_HEAP_PTR(ary);
+ VALUE shared = ARY_SHARED(ary);
FL_UNSET_SHARED(ary);
FL_SET_EMBED(ary);
MEMCPY(ARY_EMBED_PTR(ary), ptr, VALUE, len);
rb_ary_decrement_share(shared);
ARY_SET_EMBED_LEN(ary, len);
}
- else if (ARY_SHARED_NUM(shared) == 1 && len > (RARRAY_LEN(shared)>>1)) {
- long shift = RARRAY_PTR(ary) - RARRAY_PTR(shared);
- FL_UNSET_SHARED(ary);
- ARY_SET_PTR(ary, RARRAY_PTR(shared));
- ARY_SET_CAPA(ary, RARRAY_LEN(shared));
- MEMMOVE(RARRAY_PTR(ary), RARRAY_PTR(ary)+shift, VALUE, len);
- FL_SET_EMBED(shared);
- rb_ary_decrement_share(shared);
- }
else {
VALUE *ptr = ALLOC_N(VALUE, len);
MEMCPY(ptr, RARRAY_PTR(ary), VALUE, len);
@@ -284,48 +274,6 @@ rb_ary_modify(VALUE ary)
}
}
-static void
-ary_ensure_room_for_push(VALUE ary, long add_len)
-{
- long new_len = RARRAY_LEN(ary) + add_len;
- long capa;
-
- if (ARY_SHARED_P(ary)) {
- if (new_len > RARRAY_EMBED_LEN_MAX) {
- VALUE shared = ARY_SHARED(ary);
- if (ARY_SHARED_NUM(shared) == 1) {
- if (RARRAY_PTR(ary) - RARRAY_PTR(shared) + new_len <= RARRAY_LEN(shared)) {
- rb_ary_modify_check(ary);
- }
- else {
- /* if array is shared, than it is likely it participate in push/shift pattern */
- rb_ary_modify(ary);
- capa = ARY_CAPA(ary);
- if (new_len > capa - (capa >> 6)) {
- ary_double_capa(ary, new_len);
- }
- }
- return;
- }
- }
- }
- rb_ary_modify(ary);
- capa = ARY_CAPA(ary);
- if (new_len > capa) {
- ary_double_capa(ary, new_len);
- }
-}
-
-/*
- * call-seq:
- * ary.freeze -> ary
- *
- * Calls Object#freeze on +ary+ to prevent any further
- * modification. A RuntimeError will be raised if a modification
- * attempt is made.
- *
- */
-
VALUE
rb_ary_freeze(VALUE ary)
{
@@ -336,8 +284,8 @@ rb_ary_freeze(VALUE ary)
* call-seq:
* ary.frozen? -> true or false
*
- * Return +true+ if this array is frozen (or temporarily frozen
- * while being sorted). See also Object#frozen?
+ * Return <code>true</code> if this array is frozen (or temporarily frozen
+ * while being sorted).
*/
static VALUE
@@ -347,29 +295,11 @@ rb_ary_frozen_p(VALUE ary)
return Qfalse;
}
-/* This can be used to take a snapshot of an array (with
- e.g. rb_ary_replace) and check later whether the array has been
- modified from the snapshot. The snapshot is cheap, though if
- something does modify the array it will pay the cost of copying
- it. If Array#pop or Array#shift has been called, the array will
- be still shared with the snapshot, but the array length will
- differ. */
-VALUE
-rb_ary_shared_with_p(VALUE ary1, VALUE ary2)
-{
- if (!ARY_EMBED_P(ary1) && ARY_SHARED_P(ary1) &&
- !ARY_EMBED_P(ary2) && ARY_SHARED_P(ary2) &&
- RARRAY(ary1)->as.heap.aux.shared == RARRAY(ary2)->as.heap.aux.shared &&
- RARRAY(ary1)->as.heap.len == RARRAY(ary2)->as.heap.len) {
- return Qtrue;
- }
- return Qfalse;
-}
-
static VALUE
ary_alloc(VALUE klass)
{
- NEWOBJ_OF(ary, struct RArray, klass, T_ARRAY);
+ NEWOBJ(ary, struct RArray);
+ OBJSETUP(ary, klass, T_ARRAY);
FL_SET_EMBED((VALUE)ary);
ARY_SET_EMBED_LEN((VALUE)ary, 0);
@@ -377,16 +307,6 @@ ary_alloc(VALUE klass)
}
static VALUE
-empty_ary_alloc(VALUE klass)
-{
- if (RUBY_DTRACE_ARRAY_CREATE_ENABLED()) {
- RUBY_DTRACE_ARRAY_CREATE(0, rb_sourcefile(), rb_sourceline());
- }
-
- return ary_alloc(klass);
-}
-
-static VALUE
ary_new(VALUE klass, long capa)
{
VALUE ary;
@@ -397,11 +317,6 @@ ary_new(VALUE klass, long capa)
if (capa > ARY_MAX_SIZE) {
rb_raise(rb_eArgError, "array size too big");
}
-
- if (RUBY_DTRACE_ARRAY_CREATE_ENABLED()) {
- RUBY_DTRACE_ARRAY_CREATE(capa, rb_sourcefile(), rb_sourceline());
- }
-
ary = ary_alloc(klass);
if (capa > RARRAY_EMBED_LEN_MAX) {
FL_UNSET_EMBED(ary);
@@ -511,12 +426,12 @@ ary_make_shared(VALUE ary)
return ary;
}
else {
- NEWOBJ_OF(shared, struct RArray, 0, T_ARRAY);
+ NEWOBJ(shared, struct RArray);
+ OBJSETUP(shared, 0, T_ARRAY);
FL_UNSET_EMBED(shared);
- ARY_SET_LEN((VALUE)shared, ARY_CAPA(ary));
+ ARY_SET_LEN((VALUE)shared, RARRAY_LEN(ary));
ARY_SET_PTR((VALUE)shared, RARRAY_PTR(ary));
- rb_mem_clear(RARRAY_PTR(shared) + RARRAY_LEN(ary), ARY_CAPA(ary) - RARRAY_LEN(ary));
FL_SET_SHARED_ROOT(shared);
ARY_SET_SHARED_NUM((VALUE)shared, 1);
FL_SET_SHARED(ary);
@@ -695,13 +610,14 @@ rb_ary_initialize(int argc, VALUE *argv, VALUE ary)
return ary;
}
+
/*
- * Returns a new array populated with the given objects.
- *
- * Array.[]( 1, 'a', /^A/ ) # => [1, "a", /^A/]
- * Array[ 1, 'a', /^A/ ] # => [1, "a", /^A/]
- * [ 1, 'a', /^A/ ] # => [1, "a", /^A/]
- */
+* Returns a new array populated with the given objects.
+*
+* Array.[]( 1, 'a', /^A/ )
+* Array[ 1, 'a', /^A/ ]
+* [ 1, 'a', /^A/ ]
+*/
static VALUE
rb_ary_s_create(int argc, VALUE *argv, VALUE klass)
@@ -805,6 +721,8 @@ ary_take_first_or_last(int argc, VALUE *argv, VALUE ary, enum ary_take_pos_flags
return ary_make_partial(ary, rb_cArray, offset, n);
}
+static VALUE rb_ary_push_1(VALUE ary, VALUE item);
+
/*
* call-seq:
* ary << obj -> ary
@@ -821,22 +739,20 @@ ary_take_first_or_last(int argc, VALUE *argv, VALUE ary, enum ary_take_pos_flags
VALUE
rb_ary_push(VALUE ary, VALUE item)
{
- long idx = RARRAY_LEN(ary);
-
- ary_ensure_room_for_push(ary, 1);
- RARRAY_PTR(ary)[idx] = item;
- ARY_SET_LEN(ary, idx + 1);
- return ary;
+ rb_ary_modify(ary);
+ return rb_ary_push_1(ary, item);
}
-VALUE
-rb_ary_cat(VALUE ary, const VALUE *ptr, long len)
+static VALUE
+rb_ary_push_1(VALUE ary, VALUE item)
{
- long oldlen = RARRAY_LEN(ary);
+ long idx = RARRAY_LEN(ary);
- ary_ensure_room_for_push(ary, len);
- MEMCPY(RARRAY_PTR(ary) + oldlen, ptr, VALUE, len);
- ARY_SET_LEN(ary, oldlen + len);
+ if (idx >= ARY_CAPA(ary)) {
+ ary_double_capa(ary, idx);
+ }
+ RARRAY_PTR(ary)[idx] = item;
+ ARY_SET_LEN(ary, idx + 1);
return ary;
}
@@ -844,22 +760,23 @@ rb_ary_cat(VALUE ary, const VALUE *ptr, long len)
* call-seq:
* ary.push(obj, ... ) -> ary
*
- * Append --- Pushes the given object(s) on to the end of this array. This
+ * Append---Pushes the given object(s) on to the end of this array. This
* expression returns the array itself, so several appends
- * may be chained together. See also Array#pop for the opposite
- * effect.
+ * may be chained together.
*
* a = [ "a", "b", "c" ]
* a.push("d", "e", "f")
* #=> ["a", "b", "c", "d", "e", "f"]
- * [1, 2, 3,].push(4).push(5)
- * #=> [1, 2, 3, 4, 5]
*/
static VALUE
rb_ary_push_m(int argc, VALUE *argv, VALUE ary)
{
- return rb_ary_cat(ary, argv, argc);
+ rb_ary_modify(ary);
+ while (argc--) {
+ rb_ary_push_1(ary, *argv++);
+ }
+ return ary;
}
VALUE
@@ -885,11 +802,10 @@ rb_ary_pop(VALUE ary)
* ary.pop(n) -> new_ary
*
* Removes the last element from +self+ and returns it, or
- * +nil+ if the array is empty.
+ * <code>nil</code> if the array is empty.
*
- * If a number +n+ is given, returns an array of the last +n+ elements
- * (or less) just like <code>array.slice!(-n, n)</code> does. See also
- * Array#push for the opposite effect.
+ * If a number _n_ is given, returns an array of the last n elements
+ * (or less) just like <code>array.slice!(-n, n)</code> does.
*
* a = [ "a", "b", "c", "d" ]
* a.pop #=> "d"
@@ -945,14 +861,12 @@ rb_ary_shift(VALUE ary)
* ary.shift -> obj or nil
* ary.shift(n) -> new_ary
*
- * Removes the first element of +self+ and returns it (shifting all
- * other elements down by one). Returns +nil+ if the array
+ * Returns the first element of +self+ and removes it (shifting all
+ * other elements down by one). Returns <code>nil</code> if the array
* is empty.
*
- * If a number +n+ is given, returns an array of the first +n+ elements
- * (or less) just like <code>array.slice!(0, n)</code> does. With +ary+
- * containing only the remainder elements, not including what was shifted to
- * +new_ary+. See also Array#unshift for the opposite effect.
+ * If a number _n_ is given, returns an array of the first n elements
+ * (or less) just like <code>array.slice!(0, n)</code> does.
*
* args = [ "-m", "-q", "filename" ]
* args.shift #=> "-m"
@@ -990,61 +904,12 @@ rb_ary_shift_m(int argc, VALUE *argv, VALUE ary)
return result;
}
-static void
-ary_ensure_room_for_unshift(VALUE ary, int argc)
-{
- long len = RARRAY_LEN(ary);
- long new_len = len + argc;
- long capa;
- VALUE *head, *sharedp;
-
- if (ARY_SHARED_P(ary)) {
- VALUE shared = ARY_SHARED(ary);
- capa = RARRAY_LEN(shared);
- if (ARY_SHARED_NUM(shared) == 1 && capa > new_len) {
- head = RARRAY_PTR(ary);
- sharedp = RARRAY_PTR(shared);
- goto makeroom_if_need;
- }
- }
-
- rb_ary_modify(ary);
- capa = ARY_CAPA(ary);
- if (capa - (capa >> 6) <= new_len) {
- ary_double_capa(ary, new_len);
- }
-
- /* use shared array for big "queues" */
- if (new_len > ARY_DEFAULT_SIZE * 4) {
- /* make a room for unshifted items */
- capa = ARY_CAPA(ary);
- ary_make_shared(ary);
-
- head = sharedp = RARRAY_PTR(ary);
- goto makeroom;
- makeroom_if_need:
- if (head - sharedp < argc) {
- long room;
- makeroom:
- room = capa - new_len;
- room -= room >> 4;
- MEMMOVE(sharedp + argc + room, head, VALUE, len);
- head = sharedp + argc + room;
- }
- ARY_SET_PTR(ary, head - argc);
- }
- else {
- /* sliding items */
- MEMMOVE(RARRAY_PTR(ary) + argc, RARRAY_PTR(ary), VALUE, len);
- }
-}
-
/*
* call-seq:
* ary.unshift(obj, ...) -> ary
*
- * Prepends objects to the front of +self+, moving other elements upwards.
- * See also Array#shift for the opposite effect.
+ * Prepends objects to the front of +self+,
+ * moving other elements upwards.
*
* a = [ "b", "c", "d" ]
* a.unshift("a") #=> ["a", "b", "c", "d"]
@@ -1054,16 +919,19 @@ ary_ensure_room_for_unshift(VALUE ary, int argc)
static VALUE
rb_ary_unshift_m(int argc, VALUE *argv, VALUE ary)
{
- long len = RARRAY_LEN(ary);
+ long len;
- if (argc == 0) {
- rb_ary_modify_check(ary);
- return ary;
+ rb_ary_modify(ary);
+ if (argc == 0) return ary;
+ if (ARY_CAPA(ary) <= (len = RARRAY_LEN(ary)) + argc) {
+ ary_double_capa(ary, len + argc);
}
- ary_ensure_room_for_unshift(ary, argc);
+ /* sliding items */
+ MEMMOVE(RARRAY_PTR(ary) + argc, RARRAY_PTR(ary), VALUE, len);
MEMCPY(RARRAY_PTR(ary), argv, VALUE, argc);
- ARY_SET_LEN(ary, len + argc);
+ ARY_INCREASE_LEN(ary, argc);
+
return ary;
}
@@ -1119,16 +987,13 @@ rb_ary_subseq(VALUE ary, long beg, long len)
* ary.slice(start, length) -> new_ary or nil
* ary.slice(range) -> new_ary or nil
*
- * Element Reference --- Returns the element at +index+, or returns a
- * subarray starting at the +start+ index and continuing for +length+
- * elements, or returns a subarray specified by +range+ of indices.
- *
- * Negative indices count backward from the end of the array (-1 is the last
- * element). For +start+ and +range+ cases the starting index is just before
- * an element. Additionally, an empty array is returned when the starting
- * index for an element range is at the end of the array.
- *
- * Returns +nil+ if the index (or starting index) are out of range.
+ * Element Reference---Returns the element at _index_,
+ * or returns a subarray starting at _start_ and
+ * continuing for _length_ elements, or returns a subarray
+ * specified by _range_.
+ * Negative indices count backward from the end of the
+ * array (-1 is the last element). Returns +nil+ if the index
+ * (or starting index) are out of range.
*
* a = [ "a", "b", "c", "d", "e" ]
* a[2] + a[0] + a[1] #=> "cab"
@@ -1140,7 +1005,6 @@ rb_ary_subseq(VALUE ary, long beg, long len)
* a[-3, 3] #=> [ "c", "d", "e" ]
* # special cases
* a[5] #=> nil
- * a[6, 1] #=> nil
* a[5, 1] #=> []
* a[5..10] #=> []
*
@@ -1161,7 +1025,7 @@ rb_ary_aref(int argc, VALUE *argv, VALUE ary)
return rb_ary_subseq(ary, beg, len);
}
if (argc != 1) {
- rb_scan_args(argc, argv, "11", NULL, NULL);
+ rb_scan_args(argc, argv, "11", 0, 0);
}
arg = argv[0];
/* special case - speeding up */
@@ -1184,9 +1048,9 @@ rb_ary_aref(int argc, VALUE *argv, VALUE ary)
* call-seq:
* ary.at(index) -> obj or nil
*
- * Returns the element at +index+. A negative index counts from the end of
- * +self+. Returns +nil+ if the index is out of range. See also
- * Array#[].
+ * Returns the element at _index_. A
+ * negative index counts from the end of +self+. Returns +nil+
+ * if the index is out of range. See also <code>Array#[]</code>.
*
* a = [ "a", "b", "c", "d", "e" ]
* a.at(0) #=> "a"
@@ -1205,9 +1069,8 @@ rb_ary_at(VALUE ary, VALUE pos)
* ary.first(n) -> new_ary
*
* Returns the first element, or the first +n+ elements, of the array.
- * If the array is empty, the first form returns +nil+, and the
- * second form returns an empty array. See also Array#last for
- * the opposite effect.
+ * 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"
@@ -1232,9 +1095,7 @@ rb_ary_first(int argc, VALUE *argv, VALUE ary)
* ary.last(n) -> new_ary
*
* Returns the last element(s) of +self+. If the array is empty,
- * the first form returns +nil+.
- *
- * See also Array#first for the opposite effect.
+ * the first form returns <code>nil</code>.
*
* a = [ "w", "x", "y", "z" ]
* a.last #=> "z"
@@ -1256,24 +1117,21 @@ rb_ary_last(int argc, VALUE *argv, VALUE ary)
/*
* call-seq:
* ary.fetch(index) -> obj
- * ary.fetch(index, default) -> obj
- * ary.fetch(index) { |index| block } -> obj
- *
- * Tries to return the element at position +index+, but throws an IndexError
- * exception if the referenced +index+ lies outside of the array bounds. This
- * error can be prevented by supplying a second argument, which will act as a
- * +default+ value.
+ * ary.fetch(index, default ) -> obj
+ * ary.fetch(index) {|index| block } -> obj
*
- * Alternatively, if a block is given it will only be executed when an
- * invalid +index+ is referenced. Negative values of +index+ count from the
- * end of the array.
+ * Tries to return the element at position <i>index</i>. If the index
+ * lies outside the array, the first form throws an
+ * <code>IndexError</code> exception, the second form returns
+ * <i>default</i>, and the third form returns the value of invoking
+ * the block, passing in the index. Negative values of <i>index</i>
+ * count from the end of the array.
*
* a = [ 11, 22, 33, 44 ]
* a.fetch(1) #=> 22
* a.fetch(-1) #=> 44
* a.fetch(4, 'cat') #=> "cat"
- * a.fetch(100) { |i| puts "#{i} is out of bounds" }
- * #=> "100 is out of bounds"
+ * a.fetch(4) { |i| i*i } #=> 16
*/
static VALUE
@@ -1306,27 +1164,24 @@ rb_ary_fetch(int argc, VALUE *argv, VALUE ary)
/*
* call-seq:
- * ary.index(obj) -> int or nil
- * ary.index { |item| block } -> int or nil
- * ary.index -> Enumerator
+ * ary.index(obj) -> int or nil
+ * ary.index {|item| block} -> int or nil
+ * ary.index -> an_enumerator
*
- * Returns the _index_ of the first object in +ary+ such that the object is
- * <code>==</code> to +obj+.
+ * Returns the index of the first object in +self+ such that the object is
+ * <code>==</code> to <i>obj</i>. If a block is given instead of an
+ * argument, returns index of first object for which <em>block</em> is true.
+ * Returns <code>nil</code> if no match is found.
+ * See also <code>Array#rindex</code>.
*
- * If a block is given instead of an argument, returns the _index_ of the
- * first object for which the block returns +true+. Returns +nil+ if no
- * match is found.
- *
- * See also Array#rindex.
- *
- * An Enumerator is returned if neither a block nor argument is given.
+ * If neither block nor argument is given, an enumerator is returned instead.
*
* 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
+ * a.index{|x|x=="b"} #=> 1
*
- * This is an alias of Array#find_index.
+ * This is an alias of <code>#find_index</code>.
*/
static VALUE
@@ -1356,21 +1211,18 @@ rb_ary_index(int argc, VALUE *argv, VALUE ary)
/*
* call-seq:
- * ary.rindex(obj) -> int or nil
- * ary.rindex { |item| block } -> int or nil
- * ary.rindex -> Enumerator
- *
- * Returns the _index_ of the last object in +self+ <code>==</code> to +obj+.
- *
- * If a block is given instead of an argument, returns the _index_ of the
- * first object for which the block returns +true+, starting from the last
- * object.
+ * ary.rindex(obj) -> int or nil
+ * ary.rindex {|item| block} -> int or nil
+ * ary.rindex -> an_enumerator
*
- * Returns +nil+ if no match is found.
+ * Returns the index of the last object in +self+
+ * <code>==</code> to <i>obj</i>. If a block is given instead of an
+ * argument, returns index of first object for which <em>block</em> is
+ * true, starting from the last object.
+ * Returns <code>nil</code> if no match is found.
+ * See also <code>Array#index</code>.
*
- * See also Array#index.
- *
- * If neither block nor argument is given, an Enumerator is returned instead.
+ * If neither block nor argument is given, an enumerator is returned instead.
*
* a = [ "a", "b", "b", "b", "c" ]
* a.rindex("b") #=> 3
@@ -1441,12 +1293,15 @@ rb_ary_splice(VALUE ary, long beg, long len, VALUE rpl)
rpl = rb_ary_to_ary(rpl);
rlen = RARRAY_LEN(rpl);
}
+ rb_ary_modify(ary);
if (beg >= RARRAY_LEN(ary)) {
if (beg > ARY_MAX_SIZE - rlen) {
rb_raise(rb_eIndexError, "index %ld too big", beg);
}
- ary_ensure_room_for_push(ary, rlen-len); /* len is 0 or negative */
len = beg + rlen;
+ if (len >= ARY_CAPA(ary)) {
+ ary_double_capa(ary, len);
+ }
rb_mem_clear(RARRAY_PTR(ary) + RARRAY_LEN(ary), beg - RARRAY_LEN(ary));
if (rlen > 0) {
MEMCPY(RARRAY_PTR(ary) + beg, RARRAY_PTR(rpl), VALUE, rlen);
@@ -1456,7 +1311,6 @@ rb_ary_splice(VALUE ary, long beg, long len, VALUE rpl)
else {
long alen;
- rb_ary_modify(ary);
alen = RARRAY_LEN(ary) + rlen - len;
if (alen >= ARY_CAPA(ary)) {
ary_double_capa(ary, alen);
@@ -1471,22 +1325,6 @@ rb_ary_splice(VALUE ary, long beg, long len, VALUE rpl)
MEMMOVE(RARRAY_PTR(ary) + beg, RARRAY_PTR(rpl), VALUE, rlen);
}
}
- RB_GC_GUARD(rpl);
-}
-
-void
-rb_ary_set_len(VALUE ary, long len)
-{
- long capa;
-
- rb_ary_modify_check(ary);
- if (ARY_SHARED_P(ary)) {
- rb_raise(rb_eRuntimeError, "can't set length of shared ");
- }
- if (len > (capa = (long)ARY_CAPA(ary))) {
- rb_bug("probable buffer overflow: %ld for %ld", len, capa);
- }
- ARY_SET_LEN(ary, len);
}
/*!
@@ -1541,21 +1379,16 @@ rb_ary_resize(VALUE ary, long len)
* ary[start, length] = obj or other_ary or nil -> obj or other_ary or nil
* ary[range] = obj or other_ary or nil -> obj or other_ary or nil
*
- * Element Assignment --- Sets the element at +index+, or replaces a subarray
- * from the +start+ index for +length+ elements, or replaces a subarray
- * specified by the +range+ of indices.
- *
- * If indices are greater than the current capacity of the array, the array
- * grows automatically. Elements are inserted into the array at +start+ if
- * +length+ is zero.
- *
- * Negative indices will count backward from the end of the array. For
- * +start+ and +range+ cases the starting index is just before an element.
- *
- * An IndexError is raised if a negative index points past the beginning of
- * the array.
- *
- * See also Array#push, and Array#unshift.
+ * Element Assignment---Sets the element at _index_,
+ * or replaces a subarray starting at _start_ and
+ * continuing for _length_ elements, or replaces a subarray
+ * specified by _range_. If indices are greater than
+ * 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
+ * <code>Array#push</code>, and <code>Array#unshift</code>.
*
* a = Array.new
* a[4] = "4"; #=> [nil, nil, nil, nil, "4"]
@@ -1566,8 +1399,6 @@ rb_ary_resize(VALUE ary, long len)
* a[-1] = "Z" #=> ["A", "Z"]
* a[1..-1] = nil #=> ["A", nil]
* a[1..-1] = [] #=> ["A"]
- * a[0, 0] = [ 1, 2 ] #=> [1, 2, "A"]
- * a[3, 0] = "B" #=> [1, 2, "A", "B"]
*/
static VALUE
@@ -1582,7 +1413,9 @@ rb_ary_aset(int argc, VALUE *argv, VALUE ary)
rb_ary_splice(ary, beg, len, argv[2]);
return argv[2];
}
- rb_check_arity(argc, 2, 2);
+ if (argc != 2) {
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
+ }
rb_ary_modify_check(ary);
if (FIXNUM_P(argv[0])) {
offset = FIX2LONG(argv[0]);
@@ -1604,10 +1437,8 @@ fixnum:
* call-seq:
* ary.insert(index, obj...) -> ary
*
- * Inserts the given values before the element with the given +index+.
- *
- * Negative indices count backwards from the end of the array, where +-1+ is
- * the last element.
+ * Inserts the given values before the element with the given index
+ * (which may be negative).
*
* a = %w{ a b c d }
* a.insert(2, 99) #=> ["a", "b", 99, "c", "d"]
@@ -1619,7 +1450,9 @@ rb_ary_insert(int argc, VALUE *argv, VALUE ary)
{
long pos;
- rb_check_arity(argc, 1, UNLIMITED_ARGUMENTS);
+ if (argc < 1) {
+ rb_raise(rb_eArgError, "wrong number of arguments (at least 1)");
+ }
rb_ary_modify_check(ary);
if (argc == 1) return ary;
pos = NUM2LONG(argv[0]);
@@ -1633,18 +1466,15 @@ rb_ary_insert(int argc, VALUE *argv, VALUE ary)
return ary;
}
-static VALUE
-rb_ary_length(VALUE ary);
-
/*
* call-seq:
- * ary.each { |item| block } -> ary
- * ary.each -> Enumerator
+ * ary.each {|item| block } -> ary
+ * ary.each -> an_enumerator
*
- * Calls the given block once for each element in +self+, passing that element
- * as a parameter.
+ * Calls <i>block</i> once for each element in +self+, passing that
+ * element as a parameter.
*
- * An Enumerator is returned if no block is given.
+ * If no block is given, an enumerator is returned instead.
*
* a = [ "a", "b", "c" ]
* a.each {|x| print x, " -- " }
@@ -1660,7 +1490,7 @@ rb_ary_each(VALUE array)
long i;
volatile VALUE ary = array;
- RETURN_SIZED_ENUMERATOR(ary, 0, 0, rb_ary_length);
+ RETURN_ENUMERATOR(ary, 0, 0);
for (i=0; i<RARRAY_LEN(ary); i++) {
rb_yield(RARRAY_PTR(ary)[i]);
}
@@ -1669,13 +1499,14 @@ rb_ary_each(VALUE array)
/*
* call-seq:
- * ary.each_index { |index| block } -> ary
- * ary.each_index -> Enumerator
+ * ary.each_index {|index| block } -> ary
+ * ary.each_index -> an_enumerator
+ *
+ * Same as <code>Array#each</code>, but passes the index of the element
+ * instead of the element itself.
*
- * Same as Array#each, but passes the +index+ of the element instead of the
- * element itself.
+ * If no block is given, an enumerator is returned instead.
*
- * An Enumerator is returned if no block is given.
*
* a = [ "a", "b", "c" ]
* a.each_index {|x| print x, " -- " }
@@ -1689,7 +1520,7 @@ static VALUE
rb_ary_each_index(VALUE ary)
{
long i;
- RETURN_SIZED_ENUMERATOR(ary, 0, 0, rb_ary_length);
+ RETURN_ENUMERATOR(ary, 0, 0);
for (i=0; i<RARRAY_LEN(ary); i++) {
rb_yield(LONG2NUM(i));
@@ -1699,10 +1530,11 @@ rb_ary_each_index(VALUE ary)
/*
* call-seq:
- * ary.reverse_each { |item| block } -> ary
- * ary.reverse_each -> Enumerator
+ * ary.reverse_each {|item| block } -> ary
+ * ary.reverse_each -> an_enumerator
*
- * Same as Array#each, but traverses +self+ in reverse order.
+ * Same as <code>Array#each</code>, but traverses +self+ in reverse
+ * order.
*
* a = [ "a", "b", "c" ]
* a.reverse_each {|x| print x, " " }
@@ -1717,7 +1549,7 @@ rb_ary_reverse_each(VALUE ary)
{
long len;
- RETURN_SIZED_ENUMERATOR(ary, 0, 0, rb_ary_length);
+ RETURN_ENUMERATOR(ary, 0, 0);
len = RARRAY_LEN(ary);
while (len--) {
rb_yield(RARRAY_PTR(ary)[len]);
@@ -1735,7 +1567,6 @@ rb_ary_reverse_each(VALUE ary)
* Returns the number of elements in +self+. May be zero.
*
* [ 1, 2, 3, 4, 5 ].length #=> 5
- * [].length #=> 0
*/
static VALUE
@@ -1749,7 +1580,7 @@ rb_ary_length(VALUE ary)
* call-seq:
* ary.empty? -> true or false
*
- * Returns +true+ if +self+ contains no elements.
+ * Returns <code>true</code> if +self+ contains no elements.
*
* [].empty? #=> true
*/
@@ -1879,8 +1710,8 @@ rb_ary_join(VALUE ary, VALUE sep)
VALUE val, tmp, result;
if (RARRAY_LEN(ary) == 0) return rb_usascii_str_new(0, 0);
- if (OBJ_TAINTED(ary)) taint = TRUE;
- if (OBJ_UNTRUSTED(ary)) untrust = TRUE;
+ if (OBJ_TAINTED(ary) || OBJ_TAINTED(sep)) taint = TRUE;
+ if (OBJ_UNTRUSTED(ary) || OBJ_UNTRUSTED(sep)) untrust = TRUE;
if (!NIL_P(sep)) {
StringValue(sep);
@@ -1915,12 +1746,10 @@ rb_ary_join(VALUE ary, VALUE sep)
/*
* call-seq:
- * ary.join(separator=$,) -> str
+ * ary.join(sep=$,) -> str
*
* Returns a string created by converting each element of the array to
- * a string, separated by the given +separator+.
- * If the +separator+ is +nil+, it uses current $,.
- * If both the +separator+ and $, are nil, it uses empty string.
+ * a string, separated by <i>sep</i>.
*
* [ "a", "b", "c" ].join #=> "abc"
* [ "a", "b", "c" ].join("-") #=> "a-b-c"
@@ -1963,12 +1792,10 @@ inspect_ary(VALUE ary, VALUE dummy, int recur)
/*
* call-seq:
+ * ary.to_s -> string
* ary.inspect -> string
- * ary.to_s -> string
*
* Creates a string representation of +self+.
- *
- * [ "a", "b", "c" ].to_s #=> "[\"a\", \"b\", \"c\"]"
*/
static VALUE
@@ -1988,9 +1815,8 @@ rb_ary_to_s(VALUE ary)
* call-seq:
* ary.to_a -> ary
*
- * Returns +self+.
- *
- * If called on a subclass of Array, converts the receiver to an Array object.
+ * Returns +self+. If called on a subclass of Array, converts
+ * the receiver to an Array object.
*/
static VALUE
@@ -2018,7 +1844,8 @@ rb_ary_to_ary_m(VALUE ary)
}
static void
-ary_reverse(VALUE *p1, VALUE *p2)
+ary_reverse(p1, p2)
+ VALUE *p1, *p2;
{
while (p1 < p2) {
VALUE tmp = *p1;
@@ -2060,7 +1887,7 @@ rb_ary_reverse_bang(VALUE ary)
/*
* call-seq:
- * ary.reverse -> new_ary
+ * ary.reverse -> new_ary
*
* Returns a new array containing +self+'s elements in reverse order.
*
@@ -2112,13 +1939,11 @@ rb_ary_rotate(VALUE ary, long cnt)
/*
* call-seq:
- * ary.rotate!(count=1) -> ary
- *
- * Rotates +self+ in place so that the element at +count+ comes first, and
- * returns +self+.
+ * ary.rotate!(cnt=1) -> ary
*
- * If +count+ is negative then it rotates in the opposite direction, starting
- * from the end of the array where +-1+ is the last element.
+ * Rotates +self+ in place so that the element at +cnt+ comes first,
+ * and returns +self+. If +cnt+ is negative then it rotates in
+ * the opposite direction.
*
* a = [ "a", "b", "c", "d" ]
* a.rotate! #=> ["b", "c", "d", "a"]
@@ -2143,13 +1968,11 @@ rb_ary_rotate_bang(int argc, VALUE *argv, VALUE ary)
/*
* call-seq:
- * ary.rotate(count=1) -> new_ary
+ * ary.rotate(cnt=1) -> new_ary
*
- * Returns a new array by rotating +self+ so that the element at +count+ is
- * the first element of the new array.
- *
- * If +count+ is negative then it rotates in the opposite direction, starting
- * from the end of +self+ where +-1+ is the last element.
+ * Returns new array by rotating +self+ so that the element at
+ * +cnt+ in +self+ is the first element of the new array. If +cnt+
+ * is negative then it rotates in the opposite direction.
*
* a = [ "a", "b", "c", "d" ]
* a.rotate #=> ["b", "c", "d", "a"]
@@ -2196,7 +2019,7 @@ enum {
sort_optimizable_count
};
-#define STRING_P(s) (RB_TYPE_P((s), T_STRING) && CLASS_OF(s) == rb_cString)
+#define STRING_P(s) (TYPE(s) == T_STRING && CLASS_OF(s) == rb_cString)
#define SORT_OPTIMIZABLE_BIT(type) (1U << TOKEN_PASTE(sort_opt_,type))
#define SORT_OPTIMIZABLE(data, type) \
@@ -2256,22 +2079,17 @@ sort_2(const void *ap, const void *bp, void *dummy)
/*
* call-seq:
* ary.sort! -> ary
- * ary.sort! { |a, b| block } -> ary
- *
- * Sorts +self+ in place.
+ * ary.sort! {| a,b | block } -> ary
*
- * Comparisons for the sort will be done using the <code><=></code> operator
- * or using an optional code block.
- *
- * The block must implement a comparison between +a+ and +b+, and return
- * +-1+, when +a+ follows +b+, +0+ when +a+ and +b+ are equivalent, or ++1+
- * if +b+ follows +a+.
- *
- * See also Enumerable#sort_by.
+ * Sorts +self+. Comparisons for
+ * the sort will be done using the <code><=></code> operator or using
+ * an optional code block. The block implements a comparison between
+ * <i>a</i> and <i>b</i>, returning -1, 0, or +1. See also
+ * <code>Enumerable#sort_by</code>.
*
* a = [ "d", "a", "e", "c", "b" ]
* a.sort! #=> ["a", "b", "c", "d", "e"]
- * a.sort! { |x,y| y <=> x } #=> ["e", "d", "c", "b", "a"]
+ * a.sort! {|x,y| y <=> x } #=> ["e", "d", "c", "b", "a"]
*/
VALUE
@@ -2282,13 +2100,12 @@ rb_ary_sort_bang(VALUE ary)
if (RARRAY_LEN(ary) > 1) {
VALUE tmp = ary_make_substitution(ary); /* only ary refers tmp */
struct ary_sort_data data;
- long len = RARRAY_LEN(ary);
RBASIC(tmp)->klass = 0;
data.ary = tmp;
data.opt_methods = 0;
data.opt_inited = 0;
- ruby_qsort(RARRAY_PTR(tmp), len, sizeof(VALUE),
+ ruby_qsort(RARRAY_PTR(tmp), RARRAY_LEN(tmp), sizeof(VALUE),
rb_block_given_p()?sort_1:sort_2, &data);
if (ARY_EMBED_P(tmp)) {
@@ -2305,7 +2122,7 @@ rb_ary_sort_bang(VALUE ary)
if (ARY_HEAP_PTR(ary) == ARY_HEAP_PTR(tmp)) {
assert(!ARY_EMBED_P(ary));
FL_UNSET_SHARED(ary);
- ARY_SET_CAPA(ary, RARRAY_LEN(tmp));
+ ARY_SET_CAPA(ary, ARY_CAPA(tmp));
}
else {
assert(!ARY_SHARED_P(tmp));
@@ -2320,8 +2137,8 @@ rb_ary_sort_bang(VALUE ary)
xfree(ARY_HEAP_PTR(ary));
}
ARY_SET_PTR(ary, RARRAY_PTR(tmp));
- ARY_SET_HEAP_LEN(ary, len);
- ARY_SET_CAPA(ary, RARRAY_LEN(tmp));
+ ARY_SET_HEAP_LEN(ary, RARRAY_LEN(tmp));
+ ARY_SET_CAPA(ary, ARY_CAPA(tmp));
}
/* tmp was lost ownership for the ptr */
FL_UNSET(tmp, FL_FREEZE);
@@ -2338,23 +2155,17 @@ rb_ary_sort_bang(VALUE ary)
/*
* call-seq:
* ary.sort -> new_ary
- * ary.sort { |a, b| block } -> new_ary
+ * ary.sort {| a,b | block } -> new_ary
*
- * Returns a new array created by sorting +self+.
- *
- * Comparisons for the sort will be done using the <code><=></code> operator
- * or using an optional code block.
- *
- * The block must implement a comparison between +a+ and +b+, and return
- * +-1+, when +a+ follows +b+, +0+ when +a+ and +b+ are equivalent, or ++1+
- * if +b+ follows +a+.
- *
- *
- * See also Enumerable#sort_by.
+ * Returns a new array created by sorting +self+. Comparisons for
+ * the sort will be done using the <code><=></code> operator or using
+ * an optional code block. The block implements a comparison between
+ * <i>a</i> and <i>b</i>, returning -1, 0, or +1. See also
+ * <code>Enumerable#sort_by</code>.
*
* a = [ "d", "a", "e", "c", "b" ]
* a.sort #=> ["a", "b", "c", "d", "e"]
- * a.sort { |x,y| y <=> x } #=> ["e", "d", "c", "b", "a"]
+ * a.sort {|x,y| y <=> x } #=> ["e", "d", "c", "b", "a"]
*/
VALUE
@@ -2365,106 +2176,6 @@ rb_ary_sort(VALUE ary)
return ary;
}
-/*
- * call-seq:
- * ary.bsearch {|x| block } -> elem
- *
- * By using binary search, finds a value from this array which meets
- * the given condition in O(log n) where n is the size of the array.
- *
- * You can use this method in two use cases: a find-minimum mode and
- * a find-any mode. In either case, the elements of the array must be
- * monotone (or sorted) with respect to the block.
- *
- * In find-minimum mode (this is a good choice for typical use case),
- * the block must return true or false, and there must be an index i
- * (0 <= i <= ary.size) so that:
- *
- * - the block returns false for any element whose index is less than
- * i, and
- * - the block returns true for any element whose index is greater
- * than or equal to i.
- *
- * This method returns the i-th element. If i is equal to ary.size,
- * it returns nil.
- *
- * ary = [0, 4, 7, 10, 12]
- * ary.bsearch {|x| x >= 4 } #=> 4
- * ary.bsearch {|x| x >= 6 } #=> 7
- * ary.bsearch {|x| x >= -1 } #=> 0
- * ary.bsearch {|x| x >= 100 } #=> nil
- *
- * In find-any mode (this behaves like libc's bsearch(3)), the block
- * must return a number, and there must be two indices i and j
- * (0 <= i <= j <= ary.size) so that:
- *
- * - the block returns a positive number for ary[k] if 0 <= k < i,
- * - the block returns zero for ary[k] if i <= k < j, and
- * - the block returns a negative number for ary[k] if
- * j <= k < ary.size.
- *
- * Under this condition, this method returns any element whose index
- * is within i...j. If i is equal to j (i.e., there is no element
- * that satisfies the block), this method returns nil.
- *
- * ary = [0, 4, 7, 10, 12]
- * # try to find v such that 4 <= v < 8
- * ary.bsearch {|x| 1 - x / 4 } #=> 4 or 7
- * # try to find v such that 8 <= v < 10
- * ary.bsearch {|x| 4 - x / 2 } #=> nil
- *
- * You must not mix the two modes at a time; the block must always
- * return either true/false, or always return a number. It is
- * undefined which value is actually picked up at each iteration.
- */
-
-static VALUE
-rb_ary_bsearch(VALUE ary)
-{
- long low = 0, high = RARRAY_LEN(ary), mid;
- int smaller = 0, satisfied = 0;
- VALUE v, val;
-
- RETURN_ENUMERATOR(ary, 0, 0);
- while (low < high) {
- mid = low + ((high - low) / 2);
- val = rb_ary_entry(ary, mid);
- v = rb_yield(val);
- if (FIXNUM_P(v)) {
- if (FIX2INT(v) == 0) return val;
- smaller = FIX2INT(v) < 0;
- }
- else if (v == Qtrue) {
- satisfied = 1;
- smaller = 1;
- }
- else if (v == Qfalse || v == Qnil) {
- smaller = 0;
- }
- else if (rb_obj_is_kind_of(v, rb_cNumeric)) {
- switch (rb_cmpint(rb_funcall(v, id_cmp, 1, INT2FIX(0)), v, INT2FIX(0))) {
- case 0: return val;
- case 1: smaller = 1; break;
- case -1: smaller = 0;
- }
- }
- else {
- rb_raise(rb_eTypeError, "wrong argument type %s"
- " (must be numeric, true, false or nil)",
- rb_obj_classname(v));
- }
- if (smaller) {
- high = mid;
- }
- else {
- low = mid + 1;
- }
- }
- if (low == RARRAY_LEN(ary)) return Qnil;
- if (!satisfied) return Qnil;
- return rb_ary_entry(ary, low);
-}
-
static VALUE
sort_by_i(VALUE i)
@@ -2474,13 +2185,13 @@ sort_by_i(VALUE i)
/*
* call-seq:
- * ary.sort_by! { |obj| block } -> ary
- * ary.sort_by! -> Enumerator
+ * ary.sort_by! {| obj | block } -> ary
+ * ary.sort_by! -> an_enumerator
*
* Sorts +self+ in place using a set of keys generated by mapping the
* values in +self+ through the given block.
*
- * If no block is given, an Enumerator is returned instead.
+ * If no block is given, an enumerator is returned instead.
*
*/
@@ -2489,7 +2200,7 @@ rb_ary_sort_by_bang(VALUE ary)
{
VALUE sorted;
- RETURN_SIZED_ENUMERATOR(ary, 0, 0, rb_ary_length);
+ RETURN_ENUMERATOR(ary, 0, 0);
rb_ary_modify(ary);
sorted = rb_block_call(ary, rb_intern("sort_by"), 0, 0, sort_by_i, 0);
rb_ary_replace(ary, sorted);
@@ -2499,22 +2210,20 @@ rb_ary_sort_by_bang(VALUE ary)
/*
* call-seq:
- * ary.collect { |item| block } -> new_ary
- * ary.map { |item| block } -> new_ary
- * ary.collect -> Enumerator
- * ary.map -> Enumerator
- *
- * Invokes the given block once for each element of +self+.
- *
- * Creates a new array containing the values returned by the block.
+ * ary.collect {|item| block } -> new_ary
+ * ary.map {|item| block } -> new_ary
+ * ary.collect -> an_enumerator
+ * ary.map -> an_enumerator
*
- * See also Enumerable#collect.
+ * Invokes <i>block</i> once for each element of +self+. Creates a
+ * new array containing the values returned by the block.
+ * See also <code>Enumerable#collect</code>.
*
- * If no block is given, an Enumerator is returned instead.
+ * If no block is given, an enumerator is returned instead.
*
* a = [ "a", "b", "c", "d" ]
- * a.map { |x| x + "!" } #=> ["a!", "b!", "c!", "d!"]
- * a #=> ["a", "b", "c", "d"]
+ * a.collect {|x| x + "!" } #=> ["a!", "b!", "c!", "d!"]
+ * a #=> ["a", "b", "c", "d"]
*/
static VALUE
@@ -2523,7 +2232,7 @@ rb_ary_collect(VALUE ary)
long i;
VALUE collect;
- RETURN_SIZED_ENUMERATOR(ary, 0, 0, rb_ary_length);
+ 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]));
@@ -2536,19 +2245,18 @@ rb_ary_collect(VALUE ary)
* call-seq:
* ary.collect! {|item| block } -> ary
* ary.map! {|item| block } -> ary
- * ary.collect! -> Enumerator
- * ary.map! -> Enumerator
- *
- * Invokes the given block once for each element of +self+, replacing the
- * element with the value returned by the block.
+ * ary.collect -> an_enumerator
+ * ary.map -> an_enumerator
*
- * See also Enumerable#collect.
+ * Invokes the block once for each element of +self+, replacing the
+ * element with the value returned by _block_.
+ * See also <code>Enumerable#collect</code>.
*
- * If no block is given, an Enumerator is returned instead.
+ * If no block is given, an enumerator is returned instead.
*
* a = [ "a", "b", "c", "d" ]
- * a.map! {|x| x + "!" }
- * a #=> [ "a!", "b!", "c!", "d!" ]
+ * a.collect! {|x| x + "!" }
+ * a #=> [ "a!", "b!", "c!", "d!" ]
*/
static VALUE
@@ -2556,7 +2264,7 @@ rb_ary_collect_bang(VALUE ary)
{
long i;
- RETURN_SIZED_ENUMERATOR(ary, 0, 0, rb_ary_length);
+ 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]));
@@ -2576,13 +2284,15 @@ rb_get_values_at(VALUE obj, long olen, int argc, VALUE *argv, VALUE (*func) (VAL
continue;
}
/* check if idx is Range */
- if (rb_range_beg_len(argv[i], &beg, &len, olen, 1)) {
- long end = olen < beg+len ? olen : beg+len;
- for (j = beg; j < end; j++) {
- rb_ary_push(result, (*func)(obj, j));
+ switch (rb_range_beg_len(argv[i], &beg, &len, olen, 0)) {
+ case Qfalse:
+ break;
+ case Qnil:
+ continue;
+ default:
+ for (j=0; j<len; j++) {
+ rb_ary_push(result, (*func)(obj, j+beg));
}
- if (beg + len > j)
- rb_ary_resize(result, RARRAY_LEN(result) + (beg + len) - j);
continue;
}
rb_ary_push(result, (*func)(obj, NUM2LONG(argv[i])));
@@ -2592,20 +2302,18 @@ rb_get_values_at(VALUE obj, long olen, int argc, VALUE *argv, VALUE (*func) (VAL
/*
* call-seq:
- * ary.values_at(selector, ...) -> new_ary
- *
- * Returns an array containing the elements in +self+ corresponding to the
- * given +selector+(s).
+ * ary.values_at(selector,... ) -> new_ary
*
- * The selectors may be either integer indices or ranges.
- *
- * See also Array#select.
+ * Returns an array containing the elements in
+ * +self+ corresponding to the given selector(s). The selectors
+ * may be either integer indices or ranges.
+ * See also <code>Array#select</code>.
*
* a = %w{ a b c d e f }
- * a.values_at(1, 3, 5) # => ["b", "d", "f"]
- * a.values_at(1, 3, 5, 7) # => ["b", "d", "f", nil]
- * a.values_at(-1, -2, -2, -7) # => ["f", "e", "e", nil]
- * a.values_at(4..6, 3...6) # => ["e", "f", nil, "d", "e", "f"]
+ * a.values_at(1, 3, 5)
+ * a.values_at(1, 3, 5, 7)
+ * a.values_at(-1, -3, -5, -7)
+ * a.values_at(1..3, 2...5)
*/
static VALUE
@@ -2617,20 +2325,17 @@ rb_ary_values_at(int argc, VALUE *argv, VALUE ary)
/*
* call-seq:
- * ary.select { |item| block } -> new_ary
- * ary.select -> Enumerator
- *
- * Returns a new array containing all elements of +ary+
- * for which the given +block+ returns a true value.
+ * ary.select {|item| block } -> new_ary
+ * ary.select -> an_enumerator
*
- * If no block is given, an Enumerator is returned instead.
+ * Invokes the block passing in successive elements from +self+,
+ * returning an array containing those elements for which the block
+ * returns a true value (equivalent to <code>Enumerable#select</code>).
*
- * [1,2,3,4,5].select { |num| num.even? } #=> [2, 4]
+ * If no block is given, an enumerator is returned instead.
*
* a = %w{ a b c d e f }
- * a.select { |v| v =~ /[aeiou]/ } #=> ["a", "e"]
- *
- * See also Enumerable#select.
+ * a.select {|v| v =~ /[aeiou]/} #=> ["a", "e"]
*/
static VALUE
@@ -2639,7 +2344,7 @@ rb_ary_select(VALUE ary)
VALUE result;
long i;
- RETURN_SIZED_ENUMERATOR(ary, 0, 0, rb_ary_length);
+ 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]))) {
@@ -2651,17 +2356,16 @@ rb_ary_select(VALUE ary)
/*
* call-seq:
- * ary.select! {|item| block } -> ary or nil
- * ary.select! -> Enumerator
- *
- * Invokes the given block passing in successive elements from +self+,
- * deleting elements for which the block returns a +false+ value.
+ * ary.select! {|item| block } -> ary or nil
+ * ary.select! -> an_enumerator
*
- * If changes were made, it will return +self+, otherwise it returns +nil+.
+ * Invokes the block passing in successive elements from
+ * +self+, deleting elements for which the block returns a
+ * false value. It returns +self+ if changes were made,
+ * otherwise it returns <code>nil</code>.
+ * See also <code>Array#keep_if</code>
*
- * See also Array#keep_if
- *
- * If no block is given, an Enumerator is returned instead.
+ * If no block is given, an enumerator is returned instead.
*
*/
@@ -2670,7 +2374,7 @@ rb_ary_select_bang(VALUE ary)
{
long i1, i2;
- RETURN_SIZED_ENUMERATOR(ary, 0, 0, rb_ary_length);
+ RETURN_ENUMERATOR(ary, 0, 0);
rb_ary_modify(ary);
for (i1 = i2 = 0; i1 < RARRAY_LEN(ary); i1++) {
VALUE v = RARRAY_PTR(ary)[i1];
@@ -2689,53 +2393,38 @@ rb_ary_select_bang(VALUE ary)
/*
* call-seq:
- * ary.keep_if { |item| block } -> ary
- * ary.keep_if -> Enumerator
+ * ary.keep_if {|item| block } -> ary
+ * ary.keep_if -> an_enumerator
*
- * Deletes every element of +self+ for which the given block evaluates to
- * +false+.
+ * Deletes every element of +self+ for which <i>block</i> evaluates
+ * to false.
+ * See also <code>Array#select!</code>
*
- * See also Array#select!
- *
- * If no block is given, an Enumerator is returned instead.
+ * If no block is given, an enumerator is returned instead.
*
* a = %w{ a b c d e f }
- * a.keep_if { |v| v =~ /[aeiou]/ } #=> ["a", "e"]
+ * a.keep_if {|v| v =~ /[aeiou]/} #=> ["a", "e"]
*/
static VALUE
rb_ary_keep_if(VALUE ary)
{
- RETURN_SIZED_ENUMERATOR(ary, 0, 0, rb_ary_length);
+ RETURN_ENUMERATOR(ary, 0, 0);
rb_ary_select_bang(ary);
return ary;
}
-static void
-ary_resize_smaller(VALUE ary, long len)
-{
- rb_ary_modify(ary);
- if (RARRAY_LEN(ary) > len) {
- ARY_SET_LEN(ary, len);
- if (len * 2 < ARY_CAPA(ary) &&
- ARY_CAPA(ary) > ARY_DEFAULT_SIZE) {
- ary_resize_capa(ary, len * 2);
- }
- }
-}
-
/*
* call-seq:
- * ary.delete(obj) -> item or nil
- * ary.delete(obj) { block } -> item or result of block
- *
- * Deletes all items from +self+ that are equal to +obj+.
+ * ary.delete(obj) -> obj or nil
+ * ary.delete(obj) { block } -> obj or nil
*
- * Returns the last deleted item, or +nil+ if no matching item is found.
- *
- * If the optional code block is given, the result of the block is returned if
- * the item is not found. (To remove +nil+ elements and get an informative
- * return value, use Array#compact!)
+ * Deletes items from +self+ that are equal to <i>obj</i>.
+ * If any items are found, returns <i>obj</i>. If
+ * the item is not found, returns <code>nil</code>. If the optional
+ * code block is given, returns the result of <i>block</i> if the item
+ * is not found. (To remove <code>nil</code> elements and
+ * get an informative return value, use #compact!)
*
* a = [ "a", "b", "b", "b", "c" ]
* a.delete("b") #=> "b"
@@ -2769,32 +2458,16 @@ rb_ary_delete(VALUE ary, VALUE item)
return Qnil;
}
- ary_resize_smaller(ary, i2);
-
- return v;
-}
-
-void
-rb_ary_delete_same(VALUE ary, VALUE item)
-{
- long i1, i2;
-
- for (i1 = i2 = 0; i1 < RARRAY_LEN(ary); i1++) {
- VALUE e = RARRAY_PTR(ary)[i1];
-
- if (e == item) {
- continue;
- }
- if (i1 != i2) {
- rb_ary_store(ary, i2, e);
+ rb_ary_modify(ary);
+ if (RARRAY_LEN(ary) > i2) {
+ ARY_SET_LEN(ary, i2);
+ if (i2 * 2 < ARY_CAPA(ary) &&
+ ARY_CAPA(ary) > ARY_DEFAULT_SIZE) {
+ ary_resize_capa(ary, i2*2);
}
- i2++;
- }
- if (RARRAY_LEN(ary) == i2) {
- return;
}
- ary_resize_smaller(ary, i2);
+ return v;
}
VALUE
@@ -2822,12 +2495,11 @@ rb_ary_delete_at(VALUE ary, long pos)
* call-seq:
* ary.delete_at(index) -> obj or nil
*
- * Deletes the element at the specified +index+, returning that element, or
- * +nil+ if the +index+ is out of range.
- *
- * See also Array#slice!
+ * Deletes the element at the specified index, returning that element,
+ * or <code>nil</code> if the index is out of range. See also
+ * <code>Array#slice!</code>.
*
- * a = ["ant", "bat", "cat", "dog"]
+ * a = %w( ant bat cat dog )
* a.delete_at(2) #=> "cat"
* a #=> ["ant", "bat", "dog"]
* a.delete_at(99) #=> nil
@@ -2845,11 +2517,9 @@ rb_ary_delete_at_m(VALUE ary, VALUE pos)
* ary.slice!(start, length) -> new_ary or nil
* ary.slice!(range) -> new_ary or nil
*
- * Deletes the element(s) given by an +index+ (optionally up to +length+
- * elements) or by a +range+.
- *
- * Returns the deleted object (or objects), or +nil+ if the +index+ is out of
- * range.
+ * Deletes the element(s) given by an index (optionally with a length)
+ * or by a range. Returns the deleted object (or objects), or
+ * <code>nil</code> if the index is out of range.
*
* a = [ "a", "b", "c" ]
* a.slice!(1) #=> "b"
@@ -2919,7 +2589,7 @@ ary_reject(VALUE orig, VALUE result)
for (i = 0; i < RARRAY_LEN(orig); i++) {
VALUE v = RARRAY_PTR(orig)[i];
if (!RTEST(rb_yield(v))) {
- rb_ary_push(result, v);
+ rb_ary_push_1(result, v);
}
}
return result;
@@ -2947,38 +2617,38 @@ ary_reject_bang(VALUE ary)
/*
* call-seq:
- * ary.reject! { |item| block } -> ary or nil
- * ary.reject! -> Enumerator
- *
- * Equivalent to Array#delete_if, deleting elements from +self+ for which the
- * block evaluates to +true+, but returns +nil+ if no changes were made.
+ * ary.reject! {|item| block } -> ary or nil
+ * ary.reject! -> an_enumerator
*
- * The array is changed instantly every time the block is called, not after
- * the iteration is over.
+ * Equivalent to <code>Array#delete_if</code>, deleting elements from
+ * +self+ for which the block evaluates to true, but returns
+ * <code>nil</code> if no changes were made.
+ * The array is changed instantly every time the block is called and
+ * not after the iteration is over.
+ * See also <code>Enumerable#reject</code> and <code>Array#delete_if</code>.
*
- * See also Enumerable#reject and Array#delete_if.
+ * If no block is given, an enumerator is returned instead.
*
- * If no block is given, an Enumerator is returned instead.
*/
static VALUE
rb_ary_reject_bang(VALUE ary)
{
- RETURN_SIZED_ENUMERATOR(ary, 0, 0, rb_ary_length);
+ RETURN_ENUMERATOR(ary, 0, 0);
return ary_reject_bang(ary);
}
/*
* call-seq:
- * ary.reject {|item| block } -> new_ary
- * ary.reject -> Enumerator
+ * ary.reject {|item| block } -> new_ary
+ * ary.reject -> an_enumerator
*
- * Returns a new array containing the items in +self+ for which the given
- * block is not +true+.
+ * Returns a new array containing the items in +self+
+ * for which the block is not true.
+ * See also <code>Array#delete_if</code>
*
- * See also Array#delete_if
+ * If no block is given, an enumerator is returned instead.
*
- * If no block is given, an Enumerator is returned instead.
*/
static VALUE
@@ -2986,7 +2656,7 @@ rb_ary_reject(VALUE ary)
{
VALUE rejected_ary;
- RETURN_SIZED_ENUMERATOR(ary, 0, 0, rb_ary_length);
+ RETURN_ENUMERATOR(ary, 0, 0);
rejected_ary = rb_ary_new();
ary_reject(ary, rejected_ary);
return rejected_ary;
@@ -2994,17 +2664,16 @@ rb_ary_reject(VALUE ary)
/*
* call-seq:
- * ary.delete_if { |item| block } -> ary
- * ary.delete_if -> Enumerator
- *
- * Deletes every element of +self+ for which block evaluates to +true+.
- *
- * The array is changed instantly every time the block is called, not after
- * the iteration is over.
+ * ary.delete_if {|item| block } -> ary
+ * ary.delete_if -> an_enumerator
*
- * See also Array#reject!
+ * Deletes every element of +self+ for which <i>block</i> evaluates
+ * to true.
+ * The array is changed instantly every time the block is called and
+ * not after the iteration is over.
+ * See also <code>Array#reject!</code>
*
- * If no block is given, an Enumerator is returned instead.
+ * If no block is given, an enumerator is returned instead.
*
* a = [ "a", "b", "c" ]
* a.delete_if {|x| x >= "b" } #=> ["a"]
@@ -3013,7 +2682,7 @@ rb_ary_reject(VALUE ary)
static VALUE
rb_ary_delete_if(VALUE ary)
{
- RETURN_SIZED_ENUMERATOR(ary, 0, 0, rb_ary_length);
+ RETURN_ENUMERATOR(ary, 0, 0);
ary_reject_bang(ary);
return ary;
}
@@ -3036,35 +2705,30 @@ take_items(VALUE obj, long n)
if (!NIL_P(result)) return rb_ary_subseq(result, 0, n);
result = rb_ary_new2(n);
args[0] = result; args[1] = (VALUE)n;
- if (rb_check_block_call(obj, idEach, 0, 0, take_i, (VALUE)args) == Qundef)
- rb_raise(rb_eTypeError, "wrong argument type %s (must respond to :each)",
- rb_obj_classname(obj));
+ rb_block_call(obj, rb_intern("each"), 0, 0, take_i, (VALUE)args);
return result;
}
/*
* call-seq:
- * ary.zip(arg, ...) -> new_ary
- * ary.zip(arg, ...) { |arr| block } -> nil
- *
- * Converts any arguments to arrays, then merges elements of +self+ with
- * corresponding elements from each argument.
- *
- * This generates a sequence of <code>ary.size</code> _n_-element arrays,
- * where _n_ is one more than the count of arguments.
- *
- * If the size of any argument is less than the size of the initial array,
- * +nil+ values are supplied.
- *
- * If a block is given, it is invoked for each output +array+, otherwise an
- * array of arrays is returned.
+ * ary.zip(arg, ...) -> new_ary
+ * ary.zip(arg, ...) {| arr | block } -> nil
+ *
+ * Converts any arguments to arrays, then merges elements of
+ * +self+ with corresponding elements from each argument. This
+ * generates a sequence of <code>self.size</code> <em>n</em>-element
+ * arrays, where <em>n</em> is one more that the count of arguments. If
+ * the size of any argument is less than <code>enumObj.size</code>,
+ * <code>nil</code> values are supplied. If a block is given, it is
+ * invoked for each output array, otherwise an array of arrays is
+ * returned.
*
* a = [ 4, 5, 6 ]
* b = [ 7, 8, 9 ]
- * [1, 2, 3].zip(a, b) #=> [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
- * [1, 2].zip(a, b) #=> [[1, 4, 7], [2, 5, 8]]
- * a.zip([1, 2], [8]) #=> [[4, 1, 8], [5, 2, nil], [6, nil, nil]]
+ * [1,2,3].zip(a, b) #=> [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
+ * [1,2].zip(a,b) #=> [[1, 4, 7], [2, 5, 8]]
+ * a.zip([1,2],[8]) #=> [[4,1,8], [5,2,nil], [6,nil,nil]]
*/
static VALUE
@@ -3103,13 +2767,11 @@ rb_ary_zip(int argc, VALUE *argv, VALUE ary)
* call-seq:
* ary.transpose -> new_ary
*
- * Assumes that +self+ is an array of arrays and transposes the rows and
- * columns.
+ * Assumes that +self+ is an array of arrays and transposes the
+ * rows and columns.
*
* a = [[1,2], [3,4], [5,6]]
* a.transpose #=> [[1, 3, 5], [2, 4, 6]]
- *
- * If the length of the subarrays don't match, an IndexError is raised.
*/
static VALUE
@@ -3144,8 +2806,8 @@ rb_ary_transpose(VALUE ary)
* call-seq:
* ary.replace(other_ary) -> ary
*
- * Replaces the contents of +self+ with the contents of +other_ary+,
- * truncating or expanding if necessary.
+ * Replaces the contents of +self+ with the contents of
+ * <i>other_ary</i>, truncating or expanding if necessary.
*
* a = [ "a", "b", "c", "d", "e" ]
* a.replace([ "x", "y", "z" ]) #=> ["x", "y", "z"]
@@ -3223,32 +2885,27 @@ rb_ary_clear(VALUE ary)
/*
* call-seq:
- * ary.fill(obj) -> ary
- * ary.fill(obj, start [, length]) -> ary
- * ary.fill(obj, range ) -> ary
- * ary.fill { |index| block } -> ary
- * ary.fill(start [, length] ) { |index| block } -> ary
- * ary.fill(range) { |index| block } -> ary
+ * ary.fill(obj) -> ary
+ * ary.fill(obj, start [, length]) -> ary
+ * ary.fill(obj, range ) -> ary
+ * ary.fill {|index| block } -> ary
+ * ary.fill(start [, length] ) {|index| block } -> ary
+ * ary.fill(range) {|index| block } -> ary
*
* The first three forms set the selected elements of +self+ (which
- * may be the entire array) to +obj+.
- *
- * A +start+ of +nil+ is equivalent to zero.
- *
- * A +length+ of +nil+ is equivalent to the length of the array.
- *
- * The last three forms fill the array with the value of the given block,
- * which is passed the absolute index of each element to be filled.
- *
- * Negative values of +start+ count from the end of the array, where +-1+ is
- * the last element.
+ * may be the entire array) to <i>obj</i>. A <i>start</i> of
+ * <code>nil</code> is equivalent to zero. A <i>length</i> of
+ * <code>nil</code> is equivalent to <i>self.length</i>. The last three
+ * forms fill the array with the value of the block. The block is
+ * passed the absolute index of each element to be filled.
+ * Negative values of <i>start</i> count from the end of the array.
*
* a = [ "a", "b", "c", "d" ]
* a.fill("x") #=> ["x", "x", "x", "x"]
* a.fill("z", 2, 2) #=> ["x", "x", "z", "z"]
* a.fill("y", 0..1) #=> ["y", "y", "z", "z"]
- * a.fill { |i| i*i } #=> [0, 1, 4, 9]
- * a.fill(-2) { |i| i*i*i } #=> [0, 1, 8, 27]
+ * a.fill {|i| i*i} #=> [0, 1, 4, 9]
+ * a.fill(-2) {|i| i*i*i} #=> [0, 1, 8, 27]
*/
static VALUE
@@ -3326,15 +2983,10 @@ rb_ary_fill(int argc, VALUE *argv, VALUE ary)
* call-seq:
* ary + other_ary -> new_ary
*
- * Concatenation --- Returns a new array built by concatenating the
+ * Concatenation---Returns a new array built by concatenating the
* two arrays together to produce a third array.
*
* [ 1, 2, 3 ] + [ 4, 5 ] #=> [ 1, 2, 3, 4, 5 ]
- * a = [ "a", "b", "c" ]
- * a + [ "d", "e", "f" ]
- * a #=> [ "a", "b", "c", "d", "e", "f" ]
- *
- * See also Array#concat.
*/
VALUE
@@ -3356,16 +3008,12 @@ rb_ary_plus(VALUE x, VALUE y)
* call-seq:
* ary.concat(other_ary) -> ary
*
- * Appends the elements of +other_ary+ to +self+.
+ * Appends the elements of <i>other_ary</i> to +self+.
*
* [ "a", "b" ].concat( ["c", "d"] ) #=> [ "a", "b", "c", "d" ]
- * a = [ 1, 2, 3 ]
- * a.concat( [ 4, 5 ] )
- * a #=> [ 1, 2, 3, 4, 5 ]
- *
- * See also Array#+.
*/
+
VALUE
rb_ary_concat(VALUE x, VALUE y)
{
@@ -3383,11 +3031,9 @@ rb_ary_concat(VALUE x, VALUE y)
* ary * int -> new_ary
* ary * str -> new_string
*
- * Repetition --- With a String argument, equivalent to
- * <code>ary.join(str)</code>.
- *
- * Otherwise, returns a new array built by concatenating the +int+ copies of
- * +self+.
+ * Repetition---With a String argument, equivalent to
+ * self.join(str). Otherwise, returns a new array
+ * built by concatenating the _int_ copies of +self+.
*
*
* [ 1, 2, 3 ] * 3 #=> [ 1, 2, 3, 1, 2, 3, 1, 2, 3 ]
@@ -3445,13 +3091,13 @@ rb_ary_times(VALUE ary, VALUE times)
* call-seq:
* ary.assoc(obj) -> new_ary or nil
*
- * Searches through an array whose elements are also arrays comparing +obj+
- * with the first element of each contained array using <code>obj.==</code>.
- *
- * Returns the first contained array that matches (that is, the first
- * associated array), or +nil+ if no match is found.
- *
- * See also Array#rassoc
+ * Searches through an array whose elements are also arrays
+ * comparing _obj_ with the first element of each contained array
+ * using obj.==.
+ * Returns the first contained array that matches (that
+ * is, the first associated array),
+ * or +nil+ if no match is found.
+ * See also <code>Array#rassoc</code>.
*
* s1 = [ "colors", "red", "blue", "green" ]
* s2 = [ "letters", "a", "b", "c" ]
@@ -3480,14 +3126,10 @@ rb_ary_assoc(VALUE ary, VALUE key)
* call-seq:
* ary.rassoc(obj) -> new_ary or nil
*
- * Searches through the array whose elements are also arrays.
- *
- * Compares +obj+ with the second element of each contained array using
- * <code>obj.==</code>.
- *
- * Returns the first contained array that matches +obj+.
- *
- * See also Array#assoc.
+ * Searches through the array whose elements are also arrays. Compares
+ * _obj_ with the second element of each contained array using
+ * <code>==</code>. Returns the first contained array that matches. See
+ * also <code>Array#assoc</code>.
*
* a = [ [ 1, "one"], [2, "two"], [3, "three"], ["ii", "two"] ]
* a.rassoc("two") #=> [2, "two"]
@@ -3502,7 +3144,7 @@ rb_ary_rassoc(VALUE ary, VALUE value)
for (i = 0; i < RARRAY_LEN(ary); ++i) {
v = RARRAY_PTR(ary)[i];
- if (RB_TYPE_P(v, T_ARRAY) &&
+ if (TYPE(v) == T_ARRAY &&
RARRAY_LEN(v) > 1 &&
rb_equal(RARRAY_PTR(v)[1], value))
return v;
@@ -3513,32 +3155,12 @@ rb_ary_rassoc(VALUE ary, VALUE value)
static VALUE
recursive_equal(VALUE ary1, VALUE ary2, int recur)
{
- long i, len1;
- VALUE *p1, *p2;
+ long i;
if (recur) return Qtrue; /* Subtle! */
-
- p1 = RARRAY_PTR(ary1);
- p2 = RARRAY_PTR(ary2);
- len1 = RARRAY_LEN(ary1);
-
- for (i = 0; i < len1; i++) {
- if (*p1 != *p2) {
- if (rb_equal(*p1, *p2)) {
- len1 = RARRAY_LEN(ary1);
- if (len1 != RARRAY_LEN(ary2))
- return Qfalse;
- if (len1 < i)
- return Qtrue;
- p1 = RARRAY_PTR(ary1) + i;
- p2 = RARRAY_PTR(ary2) + i;
- }
- else {
- return Qfalse;
- }
- }
- p1++;
- p2++;
+ for (i=0; i<RARRAY_LEN(ary1); i++) {
+ if (!rb_equal(rb_ary_elt(ary1, i), rb_ary_elt(ary2, i)))
+ return Qfalse;
}
return Qtrue;
}
@@ -3547,9 +3169,9 @@ recursive_equal(VALUE ary1, VALUE ary2, int recur)
* call-seq:
* ary == other_ary -> bool
*
- * Equality --- Two arrays are equal if they contain the same number of
- * elements and if each element is equal to (according to Object#==) the
- * corresponding element in +other_ary+.
+ * Equality---Two arrays are equal if they contain the same number
+ * of elements and if each element is equal to (according to
+ * Object.==) the corresponding element in the other array.
*
* [ "a", "c" ] == [ "a", "c", 7 ] #=> false
* [ "a", "c", 7 ] == [ "a", "c", 7 ] #=> true
@@ -3561,7 +3183,7 @@ static VALUE
rb_ary_equal(VALUE ary1, VALUE ary2)
{
if (ary1 == ary2) return Qtrue;
- if (!RB_TYPE_P(ary2, T_ARRAY)) {
+ if (TYPE(ary2) != T_ARRAY) {
if (!rb_respond_to(ary2, rb_intern("to_ary"))) {
return Qfalse;
}
@@ -3588,15 +3210,15 @@ recursive_eql(VALUE ary1, VALUE ary2, int recur)
* call-seq:
* ary.eql?(other) -> true or false
*
- * Returns +true+ if +self+ and +other+ are the same object,
- * or are both arrays with the same content (according to Object#eql?).
+ * Returns <code>true</code> if +self+ and _other_ are the same object,
+ * or are both arrays with the same content.
*/
static VALUE
rb_ary_eql(VALUE ary1, VALUE ary2)
{
if (ary1 == ary2) return Qtrue;
- if (!RB_TYPE_P(ary2, T_ARRAY)) return Qfalse;
+ if (TYPE(ary2) != T_ARRAY) return Qfalse;
if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return Qfalse;
return rb_exec_recursive_paired(recursive_eql, ary1, ary2, ary2);
}
@@ -3626,10 +3248,8 @@ recursive_hash(VALUE ary, VALUE dummy, int recur)
* call-seq:
* ary.hash -> fixnum
*
- * Compute a hash-code for this array.
- *
- * Two arrays with the same content will have the same hash code (and will
- * compare using #eql?).
+ * Compute a hash-code for this array. Two arrays with the same content
+ * will have the same hash code (and will compare using <code>eql?</code>).
*/
static VALUE
@@ -3640,10 +3260,11 @@ rb_ary_hash(VALUE ary)
/*
* call-seq:
- * ary.include?(object) -> true or false
+ * ary.include?(obj) -> true or false
*
- * Returns +true+ if the given +object+ is present in +self+ (that is, if any
- * element <code>==</code> +object+), otherwise returns +false+.
+ * Returns <code>true</code> if the given object is present in
+ * +self+ (that is, if any object <code>==</code> <i>anObject</i>),
+ * <code>false</code> otherwise.
*
* a = [ "a", "b", "c" ]
* a.include?("b") #=> true
@@ -3687,21 +3308,16 @@ recursive_cmp(VALUE ary1, VALUE ary2, int recur)
* call-seq:
* ary <=> other_ary -> -1, 0, +1 or nil
*
- * Comparison --- Returns an integer (+-1+, +0+, or <code>+1</code>) if this
- * array is less than, equal to, or greater than +other_ary+.
- *
- * +nil+ is returned if the two values are incomparable.
- *
- * Each object in each array is compared (using the <=> operator).
- *
- * Arrays are compared in an "element-wise" manner; the first two elements
- * that are not equal will determine the return value for the whole
- * comparison.
- *
- * If all the values are equal, then the return is based on a comparison of
- * the array lengths. Thus, two arrays are "equal" according to Array#<=> if,
- * and only if, they have the same length and the value of each element is
- * equal to the value of the corresponding element in the other array.
+ * Comparison---Returns an integer (-1, 0,
+ * or +1) if this array is less than, equal to, or greater than
+ * <i>other_ary</i>. Each object in each array is compared
+ * (using <=>). If any value isn't
+ * equal, then that inequality is the return value. If all the
+ * values found are equal, then the return is based on a
+ * comparison of the array lengths. Thus, two arrays are
+ * ``equal'' according to <code>Array#<=></code> if and only if they have
+ * the same length and the value of each element is equal to the
+ * value of the corresponding element in the other array.
*
* [ "a", "a", "c" ] <=> [ "a", "b", "c" ] #=> -1
* [ 1, 2, 3, 4, 5, 6 ] <=> [ 1, 2 ] #=> +1
@@ -3781,31 +3397,25 @@ ary_recycle_hash(VALUE hash)
RHASH(hash)->ntbl = 0;
st_free_table(tbl);
}
- RB_GC_GUARD(hash);
}
/*
* call-seq:
* ary - other_ary -> new_ary
*
- * Array Difference
- *
- * Returns a new array that is a copy of the original array, removing any
- * items that also appear in +other_ary+. The order is preserved from the
- * original array.
- *
- * It compares elements using their #hash and #eql? methods for efficiency.
+ * Array Difference---Returns a new array that is a copy of
+ * the original array, removing any items that also appear in
+ * <i>other_ary</i>. (If you need set-like behavior, see the
+ * library class Set.)
*
* [ 1, 1, 2, 2, 3, 3, 4, 5 ] - [ 1, 2, 4 ] #=> [ 3, 3, 5 ]
- *
- * If you need set-like behavior, see the library class Set.
*/
static VALUE
rb_ary_diff(VALUE ary1, VALUE ary2)
{
VALUE ary3;
- VALUE hash;
+ volatile VALUE hash;
long i;
hash = ary_make_hash(to_ary(ary2));
@@ -3823,16 +3433,10 @@ rb_ary_diff(VALUE ary1, VALUE ary2)
* call-seq:
* ary & other_ary -> new_ary
*
- * Set Intersection --- Returns a new array containing elements common to the
- * two arrays, excluding any duplicates. The order is preserved from the
- * original array.
- *
- * It compares elements using their #hash and #eql? methods for efficiency.
+ * Set Intersection---Returns a new array
+ * containing elements common to the two arrays, with no duplicates.
*
- * [ 1, 1, 3, 5 ] & [ 1, 2, 3 ] #=> [ 1, 3 ]
- * [ 'a', 'b', 'b', 'z' ] & [ 'a', 'b', 'c' ] #=> [ 'a', 'b' ]
- *
- * See also Array#uniq.
+ * [ 1, 1, 3, 5 ] & [ 1, 2, 3 ] #=> [ 1, 3 ]
*/
@@ -3866,14 +3470,11 @@ rb_ary_and(VALUE ary1, VALUE ary2)
* call-seq:
* ary | other_ary -> new_ary
*
- * Set Union --- Returns a new array by joining +ary+ with +other_ary+,
- * excluding any duplicates and preserving the order from the original array.
- *
- * It compares elements using their #hash and #eql? methods for efficiency.
+ * Set Union---Returns a new array by joining this array with
+ * <i>other_ary</i>, removing duplicates.
*
- * [ "a", "b", "c" ] | [ "c", "d", "a" ] #=> [ "a", "b", "c", "d" ]
- *
- * See also Array#uniq.
+ * [ "a", "b", "c" ] | [ "c", "d", "a" ]
+ * #=> [ "a", "b", "c", "d" ]
*/
static VALUE
@@ -3915,14 +3516,10 @@ push_value(st_data_t key, st_data_t val, st_data_t ary)
* ary.uniq! -> ary or nil
* ary.uniq! { |item| ... } -> ary or nil
*
- * Removes duplicate elements from +self+.
- *
- * If a block is given, it will use the return value of the block for
- * comparison.
- *
- * It compares values using their #hash and #eql? methods for efficiency.
- *
- * Returns +nil+ if no changes are made (that is, no duplicates are found).
+ * Removes duplicate elements from +self+. If a block is given,
+ * it will use the return value of the block for comparison.
+ * Returns <code>nil</code> if no changes are made (that is, no
+ * duplicates are found).
*
* a = [ "a", "a", "b", "b", "c" ]
* a.uniq! # => ["a", "b", "c"]
@@ -3980,11 +3577,8 @@ rb_ary_uniq_bang(VALUE ary)
* ary.uniq -> new_ary
* ary.uniq { |item| ... } -> new_ary
*
- * Returns a new array by removing duplicate values in +self+.
- *
- * If a block is given, it will use the return value of the block for comparison.
- *
- * It compares values using their #hash and #eql? methods for efficiency.
+ * Returns a new array by removing duplicate values in +self+. If a block
+ * is given, it will use the return value of the block for comparison.
*
* a = [ "a", "a", "b", "b", "c" ]
* a.uniq # => ["a", "b", "c"]
@@ -4027,8 +3621,8 @@ rb_ary_uniq(VALUE ary)
* ary.compact! -> ary or nil
*
* Removes +nil+ elements from the array.
- *
- * Returns +nil+ if no changes were made, otherwise returns the array.
+ * Returns +nil+ if no changes were made, otherwise returns
+ * <i>ary</i>.
*
* [ "a", nil, "b", nil, "c" ].compact! #=> [ "a", "b", "c" ]
* [ "a", "b", "c" ].compact! #=> nil
@@ -4080,50 +3674,45 @@ rb_ary_compact(VALUE ary)
/*
* call-seq:
- * ary.count -> int
- * ary.count(obj) -> int
+ * ary.count -> int
+ * ary.count(obj) -> int
* ary.count { |item| block } -> int
*
- * Returns the number of elements.
- *
- * If an argument is given, counts the number of elements which equal +obj+
- * using <code>===</code>.
- *
- * If a block is given, counts the number of elements for which the block
- * returns a true value.
+ * Returns the number of elements. If an argument is given, counts
+ * the number of elements which equals to <i>obj</i>. If a block is
+ * given, counts the number of elements yielding a true value.
*
* ary = [1, 2, 4, 2]
- * ary.count #=> 4
- * ary.count(2) #=> 2
- * ary.count { |x| x%2 == 0 } #=> 3
+ * ary.count #=> 4
+ * ary.count(2) #=> 2
+ * ary.count{|x|x%2==0} #=> 3
*
*/
static VALUE
rb_ary_count(int argc, VALUE *argv, VALUE ary)
{
- long i, n = 0;
+ long n = 0;
if (argc == 0) {
- VALUE v;
+ VALUE *p, *pend;
if (!rb_block_given_p())
return LONG2NUM(RARRAY_LEN(ary));
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- v = RARRAY_PTR(ary)[i];
- if (RTEST(rb_yield(v))) n++;
+ for (p = RARRAY_PTR(ary), pend = p + RARRAY_LEN(ary); p < pend; p++) {
+ if (RTEST(rb_yield(*p))) n++;
}
}
else {
- VALUE obj;
+ VALUE obj, *p, *pend;
rb_scan_args(argc, argv, "1", &obj);
if (rb_block_given_p()) {
rb_warn("given block not used");
}
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- if (rb_equal(RARRAY_PTR(ary)[i], obj)) n++;
+ for (p = RARRAY_PTR(ary), pend = p + RARRAY_LEN(ary); p < pend; p++) {
+ if (rb_equal(*p, obj)) n++;
}
}
@@ -4187,14 +3776,12 @@ flatten(VALUE ary, int level, int *modified)
/*
* call-seq:
* ary.flatten! -> ary or nil
- * ary.flatten!(level) -> ary or nil
+ * ary.flatten!(level) -> array or nil
*
* Flattens +self+ in place.
- *
- * Returns +nil+ if no modifications were made (i.e., the array contains no
- * subarrays.)
- *
- * The optional +level+ argument determines the level of recursion to flatten.
+ * Returns <code>nil</code> if no modifications were made (i.e.,
+ * <i>ary</i> contains no subarrays.) If the optional <i>level</i>
+ * argument determines the level of recursion to flatten.
*
* a = [ 1, 2, [3, [4, 5] ] ]
* a.flatten! #=> [1, 2, 3, 4, 5]
@@ -4232,14 +3819,10 @@ rb_ary_flatten_bang(int argc, VALUE *argv, VALUE ary)
* ary.flatten -> new_ary
* ary.flatten(level) -> new_ary
*
- * Returns a new array that is a one-dimensional flattening of +self+
- * (recursively).
- *
- * That is, for every element that is an array, extract its elements into
- * the new array.
- *
- * The optional +level+ argument determines the level of recursion to
- * flatten.
+ * 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 determines the level of recursion to flatten.
*
* s = [ 1, 2, 3 ] #=> [1, 2, 3]
* t = [ 4, 5, 6, [7, 8] ] #=> [4, 5, 6, [7, 8]]
@@ -4269,7 +3852,7 @@ rb_ary_flatten(int argc, VALUE *argv, VALUE ary)
(argc > 0 && !NIL_P((opts) = rb_check_hash_type(argv[argc-1])) && (--argc, 1))
static VALUE sym_random;
-#define RAND_UPTO(max) (long)rb_random_ulong_limited((randgen), (max)-1)
+#define RAND_UPTO(max) (long)(rb_random_real(randgen)*(max))
/*
* call-seq:
@@ -4277,8 +3860,7 @@ static VALUE sym_random;
* ary.shuffle!(random: rng) -> ary
*
* Shuffles elements in +self+ in place.
- *
- * The optional +rng+ argument will be used as the random number generator.
+ * If +rng+ is given, it will be used as the random number generator.
*/
static VALUE
@@ -4290,7 +3872,9 @@ rb_ary_shuffle_bang(int argc, VALUE *argv, VALUE ary)
if (OPTHASH_GIVEN_P(opts)) {
randgen = rb_hash_lookup2(opts, sym_random, randgen);
}
- rb_check_arity(argc, 0, 0);
+ if (argc > 0) {
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 0)", argc);
+ }
rb_ary_modify(ary);
i = RARRAY_LEN(ary);
ptr = RARRAY_PTR(ary);
@@ -4315,12 +3899,12 @@ rb_ary_shuffle_bang(int argc, VALUE *argv, VALUE ary)
* ary.shuffle -> new_ary
* ary.shuffle(random: rng) -> new_ary
*
- * Returns a new array with elements of +self+ shuffled.
+ * Returns a new array with elements of this array shuffled.
*
* a = [ 1, 2, 3 ] #=> [1, 2, 3]
* a.shuffle #=> [2, 3, 1]
*
- * The optional +rng+ argument will be used as the random number generator.
+ * If +rng+ is given, it will be used as the random number generator.
*
* a.shuffle(random: Random.new(1)) #=> [1, 3, 2]
*/
@@ -4341,20 +3925,13 @@ rb_ary_shuffle(int argc, VALUE *argv, VALUE ary)
* ary.sample(n) -> new_ary
* ary.sample(n, random: rng) -> new_ary
*
- * Choose a random element or +n+ random elements from the array.
+ * Choose a random element or +n+ random elements from the array. The elements
+ * are chosen by using random and unique indices into the array in order to
+ * ensure that an element doesn't repeat itself unless the array already
+ * contained duplicate elements. If the array is empty the first form returns
+ * <code>nil</code> and the second form returns an empty array.
*
- * The elements are chosen by using random and unique indices into the array
- * in order to ensure that an element doesn't repeat itself unless the array
- * already contained duplicate elements.
- *
- * If the array is empty the first form returns +nil+ and the second form
- * returns an empty array.
- *
- * The optional +rng+ argument will be used as the random number generator.
- *
- * a = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
- * a.sample #=> 7
- * a.sample(4) #=> [6, 4, 2, 5]
+ * If +rng+ is given, it will be used as the random number generator.
*/
@@ -4364,7 +3941,7 @@ rb_ary_sample(int argc, VALUE *argv, VALUE ary)
VALUE nv, result, *ptr;
VALUE opts, randgen = rb_cRandom;
long n, len, i, j, k, idx[10];
- long rnds[numberof(idx)];
+ double rnds[numberof(idx)];
if (OPTHASH_GIVEN_P(opts)) {
randgen = rb_hash_lookup2(opts, sym_random, randgen);
@@ -4377,11 +3954,11 @@ rb_ary_sample(int argc, VALUE *argv, VALUE ary)
i = 0;
}
else {
- i = RAND_UPTO(len);
- if ((len = RARRAY_LEN(ary)) <= i) return Qnil;
- ptr = RARRAY_PTR(ary);
+ double x = rb_random_real(randgen);
+ if ((len = RARRAY_LEN(ary)) == 0) return Qnil;
+ i = (long)(x * len);
}
- return ptr[i];
+ return RARRAY_PTR(ary)[i];
}
rb_scan_args(argc, argv, "1", &nv);
n = NUM2LONG(nv);
@@ -4389,37 +3966,27 @@ rb_ary_sample(int argc, VALUE *argv, VALUE ary)
if (n > len) n = len;
if (n <= numberof(idx)) {
for (i = 0; i < n; ++i) {
- rnds[i] = RAND_UPTO(len - i);
+ rnds[i] = rb_random_real(randgen);
}
}
- k = len;
len = RARRAY_LEN(ary);
ptr = RARRAY_PTR(ary);
- if (len < k) {
- if (n <= numberof(idx)) {
- for (i = 0; i < n; ++i) {
- if (rnds[i] >= len) {
- return rb_ary_new2(0);
- }
- }
- }
- }
if (n > len) n = len;
switch (n) {
case 0:
return rb_ary_new2(0);
case 1:
- i = rnds[0];
+ i = (long)(rnds[0] * len);
return rb_ary_new4(1, &ptr[i]);
case 2:
- i = rnds[0];
- j = rnds[1];
+ i = (long)(rnds[0] * len);
+ j = (long)(rnds[1] * (len-1));
if (j >= i) j++;
return rb_ary_new3(2, ptr[i], ptr[j]);
case 3:
- i = rnds[0];
- j = rnds[1];
- k = rnds[2];
+ i = (long)(rnds[0] * len);
+ j = (long)(rnds[1] * (len-1));
+ k = (long)(rnds[2] * (len-2));
{
long l = j, g = i;
if (j >= i) l = i, g = ++j;
@@ -4430,9 +3997,9 @@ rb_ary_sample(int argc, VALUE *argv, VALUE ary)
if (n <= numberof(idx)) {
VALUE *ptr_result;
long sorted[numberof(idx)];
- sorted[0] = idx[0] = rnds[0];
+ sorted[0] = idx[0] = (long)(rnds[0] * len);
for (i=1; i<n; i++) {
- k = rnds[i];
+ k = (long)(rnds[i] * --len);
for (j = 0; j < i; ++j) {
if (k < sorted[j]) break;
++k;
@@ -4465,38 +4032,23 @@ rb_ary_sample(int argc, VALUE *argv, VALUE ary)
return result;
}
-static VALUE
-rb_ary_cycle_size(VALUE self, VALUE args)
-{
- long mul;
- VALUE n = Qnil;
- if (args && (RARRAY_LEN(args) > 0)) {
- n = RARRAY_PTR(args)[0];
- }
- if (RARRAY_LEN(self) == 0) return INT2FIX(0);
- if (n == Qnil) return DBL2NUM(INFINITY);
- mul = NUM2LONG(n);
- if (mul <= 0) return INT2FIX(0);
- return rb_funcall(rb_ary_length(self), '*', 1, LONG2FIX(mul));
-}
/*
* call-seq:
- * ary.cycle(n=nil) { |obj| block } -> nil
- * ary.cycle(n=nil) -> Enumerator
+ * ary.cycle(n=nil) {|obj| block } -> nil
+ * ary.cycle(n=nil) -> an_enumerator
*
- * Calls the given block for each element +n+ times or forever if +nil+ is
- * given.
+ * Calls <i>block</i> for each element repeatedly _n_ times or
+ * forever if none or +nil+ is given. If a non-positive number is
+ * given or the array is empty, does nothing. Returns +nil+ if the
+ * loop has finished without getting interrupted.
*
- * Does nothing if a non-positive number is given or the array is empty.
+ * If no block is given, an enumerator is returned instead.
*
- * Returns +nil+ if the loop has finished without getting interrupted.
- *
- * If no block is given, an Enumerator is returned instead.
*
* a = ["a", "b", "c"]
- * a.cycle { |x| puts x } # print, a, b, c, a, b, c,.. forever.
- * a.cycle(2) { |x| puts x } # print, a, b, c, a, b, c.
+ * a.cycle {|x| puts x } # print, a, b, c, a, b, c,.. forever.
+ * a.cycle(2) {|x| puts x } # print, a, b, c, a, b, c.
*
*/
@@ -4508,7 +4060,7 @@ rb_ary_cycle(int argc, VALUE *argv, VALUE ary)
rb_scan_args(argc, argv, "01", &nv);
- RETURN_SIZED_ENUMERATOR(ary, argc, argv, rb_ary_cycle_size);
+ RETURN_ENUMERATOR(ary, argc, argv);
if (NIL_P(nv)) {
n = -1;
}
@@ -4531,28 +4083,7 @@ rb_ary_cycle(int argc, VALUE *argv, VALUE ary)
#define tmpary_discard(a) (ary_discard(a), RBASIC(a)->klass = rb_cArray)
/*
- * Build a ruby array of the corresponding values and yield it to the
- * associated block.
- * Return the class of +values+ for reentry check.
- */
-static int
-yield_indexed_values(const VALUE values, const long r, const long *const p)
-{
- const VALUE result = rb_ary_new2(r);
- VALUE *const result_array = RARRAY_PTR(result);
- const VALUE *const values_array = RARRAY_PTR(values);
- long i;
-
- for (i = 0; i < r; i++) result_array[i] = values_array[p[i]];
- ARY_SET_LEN(result, r);
- rb_yield(result);
- return !RBASIC(values)->klass;
-}
-
-/*
- * Recursively compute permutations of +r+ elements of the set
- * <code>[0..n-1]</code>.
- *
+ * Recursively compute permutations of r elements of the set [0..n-1].
* When we have a complete permutation of array indexes, copy the values
* at those indexes into a new array and yield that array.
*
@@ -4566,7 +4097,7 @@ yield_indexed_values(const VALUE values, const long r, const long *const p)
static void
permute0(long n, long r, long *p, long index, char *used, VALUE values)
{
- long i;
+ long i,j;
for (i = 0; i < n; i++) {
if (used[i] == 0) {
p[index] = i;
@@ -4577,7 +4108,17 @@ permute0(long n, long r, long *p, long index, char *used, VALUE values)
used[i] = 0; /* index unused */
}
else {
- if (!yield_indexed_values(values, r, p)) {
+ /* We have a complete permutation of array indexes */
+ /* Build a ruby array of the corresponding values */
+ /* And yield it to the associated block */
+ VALUE result = rb_ary_new2(r);
+ VALUE *result_array = RARRAY_PTR(result);
+ const VALUE *values_array = RARRAY_PTR(values);
+
+ for (j = 0; j < r; j++) result_array[j] = values_array[p[j]];
+ ARY_SET_LEN(result, r);
+ rb_yield(result);
+ if (RBASIC(values)->klass) {
rb_raise(rb_eRuntimeError, "permute reentered");
}
}
@@ -4586,66 +4127,29 @@ permute0(long n, long r, long *p, long index, char *used, VALUE values)
}
/*
- * Returns the product of from, from-1, ..., from - how_many + 1.
- * http://en.wikipedia.org/wiki/Pochhammer_symbol
- */
-static VALUE
-descending_factorial(long from, long how_many)
-{
- VALUE cnt = LONG2FIX(how_many >= 0);
- while (how_many-- > 0) {
- cnt = rb_funcall(cnt, '*', 1, LONG2FIX(from--));
- }
- return cnt;
-}
-
-static VALUE
-binomial_coefficient(long comb, long size)
-{
- if (comb > size-comb) {
- comb = size-comb;
- }
- if (comb < 0) {
- return LONG2FIX(0);
- }
- return rb_funcall(descending_factorial(size, comb), id_div, 1, descending_factorial(comb, comb));
-}
-
-static VALUE
-rb_ary_permutation_size(VALUE ary, VALUE args)
-{
- long n = RARRAY_LEN(ary);
- long k = (args && (RARRAY_LEN(args) > 0)) ? NUM2LONG(RARRAY_PTR(args)[0]) : n;
-
- return descending_factorial(n, k);
-}
-
-/*
* call-seq:
* ary.permutation { |p| block } -> ary
- * ary.permutation -> Enumerator
+ * ary.permutation -> an_enumerator
* ary.permutation(n) { |p| block } -> ary
- * ary.permutation(n) -> Enumerator
+ * ary.permutation(n) -> an_enumerator
*
- * When invoked with a block, yield all permutations of length +n+ of the
- * elements of the array, then return the array itself.
+ * When invoked with a block, yield all permutations of length <i>n</i>
+ * of the elements of <i>ary</i>, then return the array itself.
+ * If <i>n</i> is not specified, yield all permutations of all elements.
+ * The implementation makes no guarantees about the order in which
+ * the permutations are yielded.
*
- * If +n+ is not specified, yield all permutations of all elements.
- *
- * The implementation makes no guarantees about the order in which the
- * permutations are yielded.
- *
- * If no block is given, an Enumerator is returned instead.
+ * If no block is given, an enumerator is returned instead.
*
* Examples:
*
- * a = [1, 2, 3]
- * a.permutation.to_a #=> [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
- * a.permutation(1).to_a #=> [[1],[2],[3]]
- * a.permutation(2).to_a #=> [[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]]
- * a.permutation(3).to_a #=> [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
- * a.permutation(0).to_a #=> [[]] # one permutation of length 0
- * a.permutation(4).to_a #=> [] # no permutations of length 4
+ * a = [1, 2, 3]
+ * a.permutation.to_a #=> [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
+ * a.permutation(1).to_a #=> [[1],[2],[3]]
+ * a.permutation(2).to_a #=> [[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]]
+ * a.permutation(3).to_a #=> [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
+ * a.permutation(0).to_a #=> [[]] # one permutation of length 0
+ * a.permutation(4).to_a #=> [] # no permutations of length 4
*/
static VALUE
@@ -4655,7 +4159,7 @@ rb_ary_permutation(int argc, VALUE *argv, VALUE ary)
long r, n, i;
n = RARRAY_LEN(ary); /* Array length */
- RETURN_SIZED_ENUMERATOR(ary, argc, argv, rb_ary_permutation_size); /* Return enumerator if no block */
+ RETURN_ENUMERATOR(ary, argc, argv); /* Return enumerator if no block */
rb_scan_args(argc, argv, "01", &num);
r = NIL_P(num) ? n : NUM2LONG(num); /* Permutation size from argument */
@@ -4671,7 +4175,7 @@ rb_ary_permutation(int argc, VALUE *argv, VALUE ary)
}
}
else { /* this is the general case */
- volatile VALUE t0 = tmpbuf(r,sizeof(long));
+ volatile VALUE t0 = tmpbuf(n,sizeof(long));
long *p = (long*)RSTRING_PTR(t0);
volatile VALUE t1 = tmpbuf(n,sizeof(char));
char *used = (char*)RSTRING_PTR(t1);
@@ -4688,27 +4192,17 @@ rb_ary_permutation(int argc, VALUE *argv, VALUE ary)
return ary;
}
-static VALUE
-rb_ary_combination_size(VALUE ary, VALUE args)
-{
- long n = RARRAY_LEN(ary);
- long k = NUM2LONG(RARRAY_PTR(args)[0]);
-
- return binomial_coefficient(k, n);
-}
-
/*
* call-seq:
* ary.combination(n) { |c| block } -> ary
- * ary.combination(n) -> Enumerator
+ * ary.combination(n) -> an_enumerator
*
- * When invoked with a block, yields all combinations of length +n+ of elements
- * from the array and then returns the array itself.
+ * When invoked with a block, yields all combinations of length <i>n</i>
+ * of elements from <i>ary</i> and then returns <i>ary</i> itself.
+ * The implementation makes no guarantees about the order in which
+ * the combinations are yielded.
*
- * The implementation makes no guarantees about the order in which the
- * combinations are yielded.
- *
- * If no block is given, an Enumerator is returned instead.
+ * If no block is given, an enumerator is returned instead.
*
* Examples:
*
@@ -4728,7 +4222,7 @@ rb_ary_combination(VALUE ary, VALUE num)
long n, i, len;
n = NUM2LONG(num);
- RETURN_SIZED_ENUMERATOR(ary, 1, &num, rb_ary_combination_size);
+ RETURN_ENUMERATOR(ary, 1, &num);
len = RARRAY_LEN(ary);
if (n < 0 || len < n) {
/* yield nothing */
@@ -4742,19 +4236,21 @@ rb_ary_combination(VALUE ary, VALUE num)
}
}
else {
- VALUE ary0 = ary_make_shared_copy(ary); /* private defensive copy of ary */
- volatile VALUE t0;
- long *stack = ALLOCV_N(long, t0, n+1);
+ volatile VALUE t0 = tmpbuf(n+1, sizeof(long));
+ long *stack = (long*)RSTRING_PTR(t0);
+ volatile VALUE cc = tmpary(n);
+ VALUE *chosen = RARRAY_PTR(cc);
long lev = 0;
- RBASIC(ary0)->klass = 0;
- MEMZERO(stack+1, long, n);
+ MEMZERO(stack, long, n);
stack[0] = -1;
for (;;) {
+ chosen[lev] = RARRAY_PTR(ary)[stack[lev+1]];
for (lev++; lev < n; lev++) {
- stack[lev+1] = stack[lev]+1;
+ chosen[lev] = RARRAY_PTR(ary)[stack[lev+1] = stack[lev]+1];
}
- if (!yield_indexed_values(ary0, n, stack+1)) {
+ rb_yield(rb_ary_new4(n, chosen));
+ if (RBASIC(t0)->klass) {
rb_raise(rb_eRuntimeError, "combination reentered");
}
do {
@@ -4763,16 +4259,15 @@ rb_ary_combination(VALUE ary, VALUE num)
} while (stack[lev+1]+n == len+lev+1);
}
done:
- ALLOCV_END(t0);
- RBASIC(ary0)->klass = rb_cArray;
+ tmpbuf_discard(t0);
+ tmpary_discard(cc);
}
return ary;
}
/*
- * Recursively compute repeated permutations of +r+ elements of the set
- * <code>[0..n-1]</code>.
- *
+ * Recursively compute repeated permutations of r elements of the set
+ * [0..n-1].
* When we have a complete repeated permutation of array indexes, copy the
* values at those indexes into a new array and yield that array.
*
@@ -4785,45 +4280,41 @@ rb_ary_combination(VALUE ary, VALUE num)
static void
rpermute0(long n, long r, long *p, long index, VALUE values)
{
- long i;
+ long i, j;
for (i = 0; i < n; i++) {
p[index] = i;
if (index < r-1) { /* if not done yet */
rpermute0(n, r, p, index+1, values); /* recurse */
}
else {
- if (!yield_indexed_values(values, r, p)) {
+ /* We have a complete permutation of array indexes */
+ /* Build a ruby array of the corresponding values */
+ /* And yield it to the associated block */
+ VALUE result = rb_ary_new2(r);
+ VALUE *result_array = RARRAY_PTR(result);
+ const VALUE *values_array = RARRAY_PTR(values);
+
+ for (j = 0; j < r; j++) result_array[j] = values_array[p[j]];
+ ARY_SET_LEN(result, r);
+ rb_yield(result);
+ if (RBASIC(values)->klass) {
rb_raise(rb_eRuntimeError, "repeated permute reentered");
}
}
}
}
-static VALUE
-rb_ary_repeated_permutation_size(VALUE ary, VALUE args)
-{
- long n = RARRAY_LEN(ary);
- long k = NUM2LONG(RARRAY_PTR(args)[0]);
-
- if (k < 0) {
- return LONG2FIX(0);
- }
-
- return rb_funcall(LONG2NUM(n), id_power, 1, LONG2NUM(k));
-}
-
/*
* call-seq:
* ary.repeated_permutation(n) { |p| block } -> ary
- * ary.repeated_permutation(n) -> Enumerator
+ * ary.repeated_permutation(n) -> an_enumerator
*
- * When invoked with a block, yield all repeated permutations of length +n+ of
- * the elements of the array, then return the array itself.
+ * When invoked with a block, yield all repeated permutations of length
+ * <i>n</i> of the elements of <i>ary</i>, then return the array itself.
+ * The implementation makes no guarantees about the order in which
+ * the repeated permutations are yielded.
*
- * The implementation makes no guarantees about the order in which the repeated
- * permutations are yielded.
- *
- * If no block is given, an Enumerator is returned instead.
+ * If no block is given, an enumerator is returned instead.
*
* Examples:
*
@@ -4841,7 +4332,7 @@ rb_ary_repeated_permutation(VALUE ary, VALUE num)
long r, n, i;
n = RARRAY_LEN(ary); /* Array length */
- RETURN_SIZED_ENUMERATOR(ary, 1, &num, rb_ary_repeated_permutation_size); /* Return Enumerator if no block */
+ RETURN_ENUMERATOR(ary, 1, &num); /* Return enumerator if no block */
r = NUM2LONG(num); /* Permutation size from argument */
if (r < 0) {
@@ -4871,6 +4362,7 @@ rb_ary_repeated_permutation(VALUE ary, VALUE num)
static void
rcombinate0(long n, long r, long *p, long index, long rest, VALUE values)
{
+ long j;
if (rest > 0) {
for (; index < n; ++index) {
p[r-rest] = index;
@@ -4878,47 +4370,43 @@ rcombinate0(long n, long r, long *p, long index, long rest, VALUE values)
}
}
else {
- if (!yield_indexed_values(values, r, p)) {
+ VALUE result = rb_ary_new2(r);
+ VALUE *result_array = RARRAY_PTR(result);
+ const VALUE *values_array = RARRAY_PTR(values);
+
+ for (j = 0; j < r; ++j) result_array[j] = values_array[p[j]];
+ ARY_SET_LEN(result, r);
+ rb_yield(result);
+ if (RBASIC(values)->klass) {
rb_raise(rb_eRuntimeError, "repeated combination reentered");
}
}
}
-static VALUE
-rb_ary_repeated_combination_size(VALUE ary, VALUE args)
-{
- long n = RARRAY_LEN(ary);
- long k = NUM2LONG(RARRAY_PTR(args)[0]);
- if (k == 0) {
- return LONG2FIX(1);
- }
- return binomial_coefficient(k, n + k - 1);
-}
-
/*
* call-seq:
* ary.repeated_combination(n) { |c| block } -> ary
- * ary.repeated_combination(n) -> Enumerator
- *
- * When invoked with a block, yields all repeated combinations of length +n+ of
- * elements from the array and then returns the array itself.
+ * ary.repeated_combination(n) -> an_enumerator
*
- * The implementation makes no guarantees about the order in which the repeated
- * combinations are yielded.
+ * When invoked with a block, yields all repeated combinations of
+ * length <i>n</i> of elements from <i>ary</i> and then returns
+ * <i>ary</i> itself.
+ * The implementation makes no guarantees about the order in which
+ * the repeated combinations are yielded.
*
- * If no block is given, an Enumerator is returned instead.
+ * If no block is given, an enumerator is returned instead.
*
* Examples:
*
- * a = [1, 2, 3]
- * a.repeated_combination(1).to_a #=> [[1], [2], [3]]
- * a.repeated_combination(2).to_a #=> [[1,1],[1,2],[1,3],[2,2],[2,3],[3,3]]
- * a.repeated_combination(3).to_a #=> [[1,1,1],[1,1,2],[1,1,3],[1,2,2],[1,2,3],
- * # [1,3,3],[2,2,2],[2,2,3],[2,3,3],[3,3,3]]
- * a.repeated_combination(4).to_a #=> [[1,1,1,1],[1,1,1,2],[1,1,1,3],[1,1,2,2],[1,1,2,3],
- * # [1,1,3,3],[1,2,2,2],[1,2,2,3],[1,2,3,3],[1,3,3,3],
- * # [2,2,2,2],[2,2,2,3],[2,2,3,3],[2,3,3,3],[3,3,3,3]]
- * a.repeated_combination(0).to_a #=> [[]] # one combination of length 0
+ * a = [1, 2, 3]
+ * a.repeated_combination(1).to_a #=> [[1], [2], [3]]
+ * a.repeated_combination(2).to_a #=> [[1,1],[1,2],[1,3],[2,2],[2,3],[3,3]]
+ * a.repeated_combination(3).to_a #=> [[1,1,1],[1,1,2],[1,1,3],[1,2,2],[1,2,3],
+ * # [1,3,3],[2,2,2],[2,2,3],[2,3,3],[3,3,3]]
+ * a.repeated_combination(4).to_a #=> [[1,1,1,1],[1,1,1,2],[1,1,1,3],[1,1,2,2],[1,1,2,3],
+ * # [1,1,3,3],[1,2,2,2],[1,2,2,3],[1,2,3,3],[1,3,3,3],
+ * # [2,2,2,2],[2,2,2,3],[2,2,3,3],[2,3,3,3],[3,3,3,3]]
+ * a.repeated_combination(0).to_a #=> [[]] # one combination of length 0
*
*/
@@ -4928,7 +4416,7 @@ rb_ary_repeated_combination(VALUE ary, VALUE num)
long n, i, len;
n = NUM2LONG(num); /* Combination size from argument */
- RETURN_SIZED_ENUMERATOR(ary, 1, &num, rb_ary_repeated_combination_size); /* Return enumerator if no block */
+ RETURN_ENUMERATOR(ary, 1, &num); /* Return enumerator if no block */
len = RARRAY_LEN(ary);
if (n < 0) {
/* yield nothing */
@@ -4963,12 +4451,11 @@ rb_ary_repeated_combination(VALUE ary, VALUE num)
* ary.product(other_ary, ...) { |p| block } -> ary
*
* Returns an array of all combinations of elements from all arrays.
+ * The length of the returned array is the product of the length
+ * of +self+ and the argument arrays.
+ * If given a block, <i>product</i> will yield all combinations
+ * and return +self+ instead.
*
- * The length of the returned array is the product of the length of +self+ and
- * the argument arrays.
- *
- * If given a block, #product will yield all combinations and return +self+
- * instead.
*
* [1,2,3].product([4,5]) #=> [[1,4],[1,5],[2,4],[2,5],[3,4],[3,5]]
* [1,2].product([1,2]) #=> [[1,1],[1,2],[2,1],[2,2]]
@@ -5013,14 +4500,15 @@ rb_ary_product(int argc, VALUE *argv, VALUE ary)
else {
/* Compute the length of the result array; return [] if any is empty */
for (i = 0; i < n; i++) {
- long k = RARRAY_LEN(arrays[i]);
+ long k = RARRAY_LEN(arrays[i]), l = resultlen;
if (k == 0) {
result = rb_ary_new2(0);
goto done;
}
- if (MUL_OVERFLOW_LONG_P(resultlen, k))
- rb_raise(rb_eRangeError, "too big to product");
resultlen *= k;
+ if (resultlen < k || resultlen < l || resultlen / k != l) {
+ rb_raise(rb_eRangeError, "too big to product");
+ }
}
result = rb_ary_new2(resultlen);
}
@@ -5033,7 +4521,7 @@ rb_ary_product(int argc, VALUE *argv, VALUE ary)
}
/* put it on the result array */
- if (NIL_P(result)) {
+ if(NIL_P(result)) {
FL_SET(t0, FL_USER5);
rb_yield(subarray);
if (! FL_TEST(t0, FL_USER5)) {
@@ -5071,11 +4559,7 @@ done:
* call-seq:
* ary.take(n) -> new_ary
*
- * Returns first +n+ elements from the array.
- *
- * If a negative number is given, raises an ArgumentError.
- *
- * See also Array#drop
+ * Returns first n elements from <i>ary</i>.
*
* a = [1, 2, 3, 4, 5, 0]
* a.take(3) #=> [1, 2, 3]
@@ -5094,18 +4578,16 @@ rb_ary_take(VALUE obj, VALUE n)
/*
* call-seq:
- * ary.take_while { |arr| block } -> new_ary
- * ary.take_while -> Enumerator
- *
- * Passes elements to the block until the block returns +nil+ or +false+, then
- * stops iterating and returns an array of all prior elements.
+ * ary.take_while {|arr| block } -> new_ary
+ * ary.take_while -> an_enumerator
*
- * If no block is given, an Enumerator is returned instead.
+ * Passes elements to the block until the block returns +nil+ or +false+,
+ * then stops iterating and returns an array of all prior elements.
*
- * See also Array#drop_while
+ * If no block is given, an enumerator is returned instead.
*
* a = [1, 2, 3, 4, 5, 0]
- * a.take_while { |i| i < 3 } #=> [1, 2]
+ * a.take_while {|i| i < 3 } #=> [1, 2]
*
*/
@@ -5125,12 +4607,8 @@ rb_ary_take_while(VALUE ary)
* call-seq:
* ary.drop(n) -> new_ary
*
- * Drops first +n+ elements from +ary+ and returns the rest of the elements in
- * an array.
- *
- * If a negative number is given, raises an ArgumentError.
- *
- * See also Array#take
+ * Drops first n elements from +ary+ and returns the rest of
+ * the elements in an array.
*
* a = [1, 2, 3, 4, 5, 0]
* a.drop(3) #=> [4, 5, 0]
@@ -5153,16 +4631,14 @@ rb_ary_drop(VALUE ary, VALUE n)
/*
* call-seq:
- * ary.drop_while { |arr| block } -> new_ary
- * ary.drop_while -> Enumerator
- *
- * Drops elements up to, but not including, the first element for which the
- * block returns +nil+ or +false+ and returns an array containing the
- * remaining elements.
+ * ary.drop_while {|arr| block } -> new_ary
+ * ary.drop_while -> an_enumerator
*
- * If no block is given, an Enumerator is returned instead.
+ * Drops elements up to, but not including, the first element for
+ * which the block returns +nil+ or +false+ and returns an array
+ * containing the remaining elements.
*
- * See also Array#take_while
+ * If no block is given, an enumerator is returned instead.
*
* a = [1, 2, 3, 4, 5, 0]
* a.drop_while {|i| i < 3 } #=> [3, 4, 5, 0]
@@ -5181,238 +4657,13 @@ rb_ary_drop_while(VALUE ary)
return rb_ary_drop(ary, LONG2FIX(i));
}
-/*
- * Arrays are ordered, integer-indexed collections of any object.
- *
- * Array indexing starts at 0, as in C or Java. A negative index is assumed
- * to be relative to the end of the array---that is, an index of -1 indicates
- * the last element of the array, -2 is the next to last element in the
- * array, and so on.
- *
- * == Creating Arrays
- *
- * A new array can be created by using the literal constructor
- * <code>[]</code>. Arrays can contain different types of objects. For
- * example, the array below contains an Integer, a String and a Float:
- *
- * ary = [1, "two", 3.0] #=> [1, "two", 3.0]
- *
- * An array can also be created by explicitly calling Array.new with zero, one
- * (the initial size of the Array) or two arguments (the initial size and a
- * default object).
- *
- * ary = Array.new #=> []
- * Array.new(3) #=> [nil, nil, nil]
- * Array.new(3, true) #=> [true, true, true]
- *
- * Note that the second argument populates the array with references to the
- * same object. Therefore, it is only recommended in cases when you need to
- * instantiate arrays with natively immutable objects such as Symbols,
- * numbers, true or false.
- *
- * To create an array with separate objects a block can be passed instead.
- * This method is safe to use with mutable objects such as hashes, strings or
- * other arrays:
- *
- * Array.new(4) { Hash.new } #=> [{}, {}, {}, {}]
- *
- * This is also a quick way to build up multi-dimensional arrays:
- *
- * empty_table = Array.new(3) { Array.new(3) }
- * #=> [[nil, nil, nil], [nil, nil, nil], [nil, nil, nil]]
- *
- * An array can also be created by using the Array() method, provided by
- * Kernel, which tries to call #to_ary, then #to_a on its argument.
- *
- * Array({:a => "a", :b => "b"}) #=> [[:a, "a"], [:b, "b"]]
- *
- * == Example Usage
- *
- * In addition to the methods it mixes in through the Enumerable module, the
- * Array class has proprietary methods for accessing, searching and otherwise
- * manipulating arrays.
- *
- * Some of the more common ones are illustrated below.
- *
- * == Accessing Elements
- *
- * Elements in an array can be retrieved using the Array#[] method. It can
- * take a single integer argument (a numeric index), a pair of arguments
- * (start and length) or a range.
- *
- * arr = [1, 2, 3, 4, 5, 6]
- * arr[2] #=> 3
- * arr[100] #=> nil
- * arr[-3] #=> 4
- * arr[2, 3] #=> [3, 4, 5]
- * arr[1..4] #=> [2, 3, 4, 5]
- *
- * Another way to access a particular array element is by using the #at method
- *
- * arr.at(0) #=> 1
- *
- * The #slice method works in an identical manner to Array#[].
- *
- * To raise an error for indices outside of the array bounds or else to
- * provide a default value when that happens, you can use #fetch.
- *
- * arr = ['a', 'b', 'c', 'd', 'e', 'f']
- * arr.fetch(100) #=> IndexError: index 100 outside of array bounds: -6...6
- * arr.fetch(100, "oops") #=> "oops"
- *
- * The special methods #first and #last will return the first and last
- * elements of an array, respectively.
- *
- * arr.first #=> 1
- * arr.last #=> 6
- *
- * To return the first +n+ elements of an array, use #take
- *
- * arr.take(3) #=> [1, 2, 3]
- *
- * #drop does the opposite of #take, by returning the elements after +n+
- * elements have been dropped:
- *
- * arr.drop(3) #=> [4, 5, 6]
- *
- * == Obtaining Information about an Array
- *
- * Arrays keep track of their own length at all times. To query an array
- * about the number of elements it contains, use #length, #count or #size.
- *
- * browsers = ['Chrome', 'Firefox', 'Safari', 'Opera', 'IE']
- * browsers.length #=> 5
- * browsers.count #=> 5
- *
- * To check whether an array contains any elements at all
- *
- * browsers.empty? #=> false
- *
- * To check whether a particular item is included in the array
- *
- * browsers.include?('Konqueror') #=> false
- *
- * == Adding Items to Arrays
- *
- * Items can be added to the end of an array by using either #push or #<<
- *
- * arr = [1, 2, 3, 4]
- * arr.push(5) #=> [1, 2, 3, 4, 5]
- * arr << 6 #=> [1, 2, 3, 4, 5, 6]
- *
- * #unshift will add a new item to the beginning of an array.
- *
- * arr.unshift(0) #=> [0, 1, 2, 3, 4, 5, 6]
- *
- * With #insert you can add a new element to an array at any position.
- *
- * arr.insert(3, 'apple') #=> [0, 1, 2, 'apple', 3, 4, 5, 6]
- *
- * Using the #insert method, you can also insert multiple values at once:
- *
- * arr.insert(3, 'orange', 'pear', 'grapefruit')
- * #=> [0, 1, 2, "orange", "pear", "grapefruit", "apple", 3, 4, 5, 6]
- *
- * == Removing Items from an Array
- *
- * The method #pop removes the last element in an array and returns it:
- *
- * arr = [1, 2, 3, 4, 5, 6]
- * arr.pop #=> 6
- * arr #=> [1, 2, 3, 4, 5]
- *
- * To retrieve and at the same time remove the first item, use #shift:
- *
- * arr.shift #=> 1
- * arr #=> [2, 3, 4, 5]
- *
- * To delete an element at a particular index:
- *
- * arr.delete_at(2) #=> 4
- * arr #=> [2, 3, 5]
- *
- * To delete a particular element anywhere in an array, use #delete:
- *
- * arr = [1, 2, 2, 3]
- * arr.delete(2) #=> [1, 3]
- *
- * A useful method if you need to remove +nil+ values from an array is
- * #compact:
- *
- * arr = ['foo', 0, nil, 'bar', 7, 'baz', nil]
- * arr.compact #=> ['foo', 0, 'bar', 7, 'baz']
- * arr #=> ['foo', 0, nil, 'bar', 7, 'baz', nil]
- * arr.compact! #=> ['foo', 0, 'bar', 7, 'baz']
- * arr #=> ['foo', 0, 'bar', 7, 'baz']
- *
- * Another common need is to remove duplicate elements from an array.
- *
- * It has the non-destructive #uniq, and destructive method #uniq!
- *
- * arr = [2, 5, 6, 556, 6, 6, 8, 9, 0, 123, 556]
- * arr.uniq #=> [2, 5, 6, 556, 8, 9, 0, 123]
- *
- * == Iterating over Arrays
- *
- * Like all classes that include the Enumerable module, Array has an each
- * method, which defines what elements should be iterated over and how. In
- * case of Array's #each, all elements in the Array instance are yielded to
- * the supplied block in sequence.
- *
- * Note that this operation leaves the array unchanged.
- *
- * arr = [1, 2, 3, 4, 5]
- * arr.each { |a| print a -= 10, " " }
- * # prints: -9 -8 -7 -6 -5
- * #=> [1, 2, 3, 4, 5]
- *
- * Another sometimes useful iterator is #reverse_each which will iterate over
- * the elements in the array in reverse order.
- *
- * words = %w[rats live on no evil star]
- * str = ""
- * words.reverse_each { |word| str += "#{word.reverse} " }
- * str #=> "rats live on no evil star "
- *
- * The #map method can be used to create a new array based on the original
- * array, but with the values modified by the supplied block:
- *
- * arr.map { |a| 2*a } #=> [2, 4, 6, 8, 10]
- * arr #=> [1, 2, 3, 4, 5]
- * arr.map! { |a| a**2 } #=> [1, 4, 9, 16, 25]
- * arr #=> [1, 4, 9, 16, 25]
- *
- * == Selecting Items from an Array
- *
- * Elements can be selected from an array according to criteria defined in a
- * block. The selection can happen in a destructive or a non-destructive
- * manner. While the destructive operations will modify the array they were
- * called on, the non-destructive methods usually return a new array with the
- * selected elements, but leave the original array unchanged.
- *
- * === Non-destructive Selection
- *
- * arr = [1, 2, 3, 4, 5, 6]
- * arr.select { |a| a > 3 } #=> [4, 5, 6]
- * arr.reject { |a| a < 3 } #=> [3, 4, 5, 6]
- * arr.drop_while { |a| a < 4 } #=> [4, 5, 6]
- * arr #=> [1, 2, 3, 4, 5, 6]
- *
- * === Destructive Selection
- *
- * #select! and #reject! are the corresponding destructive methods to #select
- * and #reject
- *
- * Similar to #select vs. #reject, #delete_if and #keep_if have the exact
- * opposite result when supplied with the same block:
- *
- * arr.delete_if { |a| a < 4 } #=> [4, 5, 6]
- * arr #=> [4, 5, 6]
- *
- * arr = [1, 2, 3, 4, 5, 6]
- * arr.keep_if { |a| a < 4 } #=> [1, 2, 3]
- * arr #=> [1, 2, 3]
- *
+
+
+/* Arrays are ordered, integer-indexed collections of any object.
+ * Array indexing starts at 0, as in C or Java. A negative index is
+ * assumed to be relative to the end of the array---that is, an index of -1
+ * indicates the last element of the array, -2 is the next to last
+ * element in the array, and so on.
*/
void
@@ -5424,7 +4675,7 @@ Init_Array(void)
rb_cArray = rb_define_class("Array", rb_cObject);
rb_include_module(rb_cArray, rb_mEnumerable);
- rb_define_alloc_func(rb_cArray, empty_ary_alloc);
+ rb_define_alloc_func(rb_cArray, ary_alloc);
rb_define_singleton_method(rb_cArray, "[]", rb_ary_s_create, -1);
rb_define_singleton_method(rb_cArray, "try_convert", rb_ary_s_try_convert, 1);
rb_define_method(rb_cArray, "initialize", rb_ary_initialize, -1);
@@ -5525,10 +4776,7 @@ Init_Array(void)
rb_define_method(rb_cArray, "take_while", rb_ary_take_while, 0);
rb_define_method(rb_cArray, "drop", rb_ary_drop, 1);
rb_define_method(rb_cArray, "drop_while", rb_ary_drop_while, 0);
- rb_define_method(rb_cArray, "bsearch", rb_ary_bsearch, 0);
id_cmp = rb_intern("<=>");
sym_random = ID2SYM(rb_intern("random"));
- id_div = rb_intern("div");
- id_power = rb_intern("**");
}
diff --git a/atomic.h b/atomic.h
new file mode 100644
index 0000000000..5b3fb99024
--- /dev/null
+++ b/atomic.h
@@ -0,0 +1,56 @@
+#ifndef RUBY_ATOMIC_H
+#define RUBY_ATOMIC_H
+
+#ifdef _WIN32
+#if defined _MSC_VER && _MSC_VER > 1200
+#pragma intrinsic(_InterlockedOr)
+#endif
+typedef LONG rb_atomic_t;
+
+# define ATOMIC_SET(var, val) InterlockedExchange(&(var), (val))
+# define ATOMIC_INC(var) InterlockedIncrement(&(var))
+# define ATOMIC_DEC(var) InterlockedDecrement(&(var))
+#if defined __GNUC__
+# define ATOMIC_OR(var, val) __asm__("lock\n\t" "orl\t%1, %0" : "=m"(var) : "Ir"(val))
+#elif defined _MSC_VER && _MSC_VER <= 1200
+# define ATOMIC_OR(var, val) rb_w32_atomic_or(&(var), (val))
+static inline void
+rb_w32_atomic_or(volatile rb_atomic_t *var, rb_atomic_t val)
+{
+#ifdef _M_IX86
+ __asm mov eax, var;
+ __asm mov ecx, val;
+ __asm lock or [eax], ecx;
+#else
+#error unsupported architecture
+#endif
+}
+#else
+# define ATOMIC_OR(var, val) _InterlockedOr(&(var), (val))
+#endif
+# define ATOMIC_EXCHANGE(var, val) InterlockedExchange(&(var), (val))
+
+#elif defined HAVE_GCC_ATOMIC_BUILTINS
+/* @shyouhei hack to support atomic operations in case of gcc. Gcc
+ * has its own pseudo-insns to support them. See info, or
+ * http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html */
+
+typedef unsigned int rb_atomic_t; /* Anything OK */
+# define ATOMIC_SET(var, val) __sync_lock_test_and_set(&(var), (val))
+# define ATOMIC_INC(var) __sync_fetch_and_add(&(var), 1)
+# define ATOMIC_DEC(var) __sync_fetch_and_sub(&(var), 1)
+# define ATOMIC_OR(var, val) __sync_or_and_fetch(&(var), (val))
+# define ATOMIC_EXCHANGE(var, val) __sync_lock_test_and_set(&(var), (val))
+
+#else
+typedef int rb_atomic_t;
+extern rb_atomic_t ruby_atomic_exchange(rb_atomic_t *ptr, rb_atomic_t val);
+
+# define ATOMIC_SET(var, val) ((var) = (val))
+# define ATOMIC_INC(var) (++(var))
+# define ATOMIC_DEC(var) (--(var))
+# define ATOMIC_OR(var, val) ((var) |= (val))
+# define ATOMIC_EXCHANGE(var, val) ruby_atomic_exchange(&(var), (val))
+#endif
+
+#endif /* RUBY_ATOMIC_H */
diff --git a/benchmark/bm_app_mandelbrot.rb b/benchmark/bm_app_mandelbrot.rb
index 801b75e8e2..89069db7ab 100644
--- a/benchmark/bm_app_mandelbrot.rb
+++ b/benchmark/bm_app_mandelbrot.rb
@@ -3,7 +3,7 @@ require 'complex'
def mandelbrot? z
i = 0
while i<100
- i += 1
+ i+=1
z = z * z
return false if z.abs > 2
end
diff --git a/benchmark/bm_app_raise.rb b/benchmark/bm_app_raise.rb
index 5db8f95d50..01d2ae3219 100644
--- a/benchmark/bm_app_raise.rb
+++ b/benchmark/bm_app_raise.rb
@@ -1,6 +1,6 @@
-i = 0
+i=0
while i<300000
- i += 1
+ i+=1
begin
raise
rescue
diff --git a/benchmark/bm_app_strconcat.rb b/benchmark/bm_app_strconcat.rb
index 7eed7c1aed..7b2f2da5a7 100644
--- a/benchmark/bm_app_strconcat.rb
+++ b/benchmark/bm_app_strconcat.rb
@@ -1,5 +1,5 @@
-i = 0
+i=0
while i<2_000_000
"#{1+1} #{1+1} #{1+1}"
- i += 1
+ i+=1
end
diff --git a/benchmark/bm_io_select2.rb b/benchmark/bm_io_select2.rb
index 10e37d71b2..7b167af774 100644
--- a/benchmark/bm_io_select2.rb
+++ b/benchmark/bm_io_select2.rb
@@ -2,11 +2,7 @@
ios = []
nr = 1000000
-if defined?(Process::RLIMIT_NOFILE)
- max = Process.getrlimit(Process::RLIMIT_NOFILE)[0]
-else
- max = 64
-end
+max = Process.getrlimit(Process::RLIMIT_NOFILE)[0]
puts "max fd: #{max} (results not apparent with <= 1024 max fd)"
((max / 2) - 10).times do
diff --git a/benchmark/bm_io_select3.rb b/benchmark/bm_io_select3.rb
index 7d0ba1f092..fcdbb96e0e 100644
--- a/benchmark/bm_io_select3.rb
+++ b/benchmark/bm_io_select3.rb
@@ -2,11 +2,7 @@
ios = []
nr = 100
-if defined?(Process::RLIMIT_NOFILE)
- max = Process.getrlimit(Process::RLIMIT_NOFILE)[0]
-else
- max = 64
-end
+max = Process.getrlimit(Process::RLIMIT_NOFILE)[0]
puts "max fd: #{max} (results not apparent with <= 1024 max fd)"
(max - 10).times do
diff --git a/benchmark/bm_loop_whileloop.rb b/benchmark/bm_loop_whileloop.rb
index 0072822c06..43d35e1131 100644
--- a/benchmark/bm_loop_whileloop.rb
+++ b/benchmark/bm_loop_whileloop.rb
@@ -1,4 +1,4 @@
-i = 0
+i=0
while i<30_000_000 # benchmark loop 1
- i += 1
+ i+=1
end
diff --git a/benchmark/bm_loop_whileloop2.rb b/benchmark/bm_loop_whileloop2.rb
index 47d02dffc4..e514989661 100644
--- a/benchmark/bm_loop_whileloop2.rb
+++ b/benchmark/bm_loop_whileloop2.rb
@@ -1,4 +1,4 @@
-i = 0
+i=0
while i< 6_000_000 # benchmark loop 2
- i += 1
+ i+=1
end
diff --git a/benchmark/bm_so_concatenate.rb b/benchmark/bm_so_concatenate.rb
index 873214de7c..56b9410632 100644
--- a/benchmark/bm_so_concatenate.rb
+++ b/benchmark/bm_so_concatenate.rb
@@ -5,9 +5,9 @@
# based on code from Aristarkh A Zagorodnikov and Dat Nguyen
STUFF = "hello\n"
-i = 0
+i=0
while i<10
- i += 1
+ i+=1
hello = ''
4_000_000.times do |e|
hello << STUFF
diff --git a/benchmark/bm_so_exception.rb b/benchmark/bm_so_exception.rb
index deb003a594..d8b461290c 100644
--- a/benchmark/bm_so_exception.rb
+++ b/benchmark/bm_so_exception.rb
@@ -56,6 +56,6 @@ end
i = 1
max = NUM+1
while i < max
- i += 1
+ i+=1
some_function(i+1)
end
diff --git a/benchmark/bm_so_lists.rb b/benchmark/bm_so_lists.rb
index e8f4a2a5f7..f8d26797aa 100644
--- a/benchmark/bm_so_lists.rb
+++ b/benchmark/bm_so_lists.rb
@@ -40,7 +40,7 @@ end
i = 0
while i<NUM
- i += 1
+ i+=1
result = test_lists()
end
diff --git a/benchmark/bm_so_nsieve_bits.rb b/benchmark/bm_so_nsieve_bits.rb
index 6f958ee44e..019b8b6382 100644
--- a/benchmark/bm_so_nsieve_bits.rb
+++ b/benchmark/bm_so_nsieve_bits.rb
@@ -1,5 +1,4 @@
#!/usr/bin/ruby
-#coding: us-ascii
#
# The Great Computer Language Shootout
# http://shootout.alioth.debian.org/
diff --git a/benchmark/bm_so_random.rb b/benchmark/bm_so_random.rb
index a66b9e8e63..57f700b863 100644
--- a/benchmark/bm_so_random.rb
+++ b/benchmark/bm_so_random.rb
@@ -12,9 +12,9 @@ end
N = 3_000_000
-i = 0
+i=0
while i<N
- i +=1
+ i+=1
gen_random(100.0)
end
# "%.9f" % gen_random(100.0)
diff --git a/benchmark/bm_so_sieve.rb b/benchmark/bm_so_sieve.rb
index 43dc302648..3f1b138bd1 100644
--- a/benchmark/bm_so_sieve.rb
+++ b/benchmark/bm_so_sieve.rb
@@ -4,12 +4,12 @@ count = i = j = 0
flags0 = Array.new(8192,1)
k = 0
while k < num
- k += 1
+ k+=1
count = 0
flags = flags0.dup
i = 2
while i<8192
- i += 1
+ i+=1
if flags[i]
# remove all multiples of prime: i
j = i*i
diff --git a/benchmark/bm_vm1_attr_ivar.rb b/benchmark/bm_vm1_attr_ivar.rb
deleted file mode 100644
index 16906f3605..0000000000
--- a/benchmark/bm_vm1_attr_ivar.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-class C
- attr_reader :a, :b
- def initialize
- @a = nil
- @b = nil
- end
-end
-obj = C.new
-i = 0
-while i<30_000_000 # while loop 1
- i += 1
- j = obj.a
- k = obj.b
-end
diff --git a/benchmark/bm_vm1_attr_ivar_set.rb b/benchmark/bm_vm1_attr_ivar_set.rb
deleted file mode 100644
index 7e7a6b48c0..0000000000
--- a/benchmark/bm_vm1_attr_ivar_set.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-class C
- attr_accessor :a, :b
- def initialize
- @a = nil
- @b = nil
- end
-end
-obj = C.new
-i = 0
-while i<30_000_000 # while loop 1
- i += 1
- obj.a = 1
- obj.b = 2
-end
diff --git a/benchmark/bm_vm1_block.rb b/benchmark/bm_vm1_block.rb
index a9f56b15ea..0a97883974 100644
--- a/benchmark/bm_vm1_block.rb
+++ b/benchmark/bm_vm1_block.rb
@@ -2,9 +2,9 @@ def m
yield
end
-i = 0
+i=0
while i<30_000_000 # while loop 1
- i += 1
+ i+=1
m{
}
end
diff --git a/benchmark/bm_vm1_const.rb b/benchmark/bm_vm1_const.rb
index ac59ebccf1..066916dc31 100644
--- a/benchmark/bm_vm1_const.rb
+++ b/benchmark/bm_vm1_const.rb
@@ -2,7 +2,7 @@ Const = 1
i = 0
while i<30_000_000 # while loop 1
- i += 1
+ i+= 1
j = Const
k = Const
end
diff --git a/benchmark/bm_vm1_ensure.rb b/benchmark/bm_vm1_ensure.rb
index a1596145f2..b1948f7621 100644
--- a/benchmark/bm_vm1_ensure.rb
+++ b/benchmark/bm_vm1_ensure.rb
@@ -1,6 +1,6 @@
-i = 0
+i=0
while i<30_000_000 # benchmark loop 1
- i += 1
+ i+=1
begin
begin
ensure
diff --git a/benchmark/bm_vm1_float_simple.rb b/benchmark/bm_vm1_float_simple.rb
deleted file mode 100644
index d4581439ff..0000000000
--- a/benchmark/bm_vm1_float_simple.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-i = 0.0; f = 0.0
-while i<30_000_000
- i += 1
- f += 0.1; f -= 0.1
- f += 0.1; f -= 0.1
- f += 0.1; f -= 0.1
-end
diff --git a/benchmark/bm_vm1_ivar.rb b/benchmark/bm_vm1_ivar.rb
index 68a73cf92f..3ba56427f4 100644
--- a/benchmark/bm_vm1_ivar.rb
+++ b/benchmark/bm_vm1_ivar.rb
@@ -2,7 +2,7 @@
i = 0
while i<30_000_000 # while loop 1
- i += 1
+ i+= 1
j = @a
k = @a
end
diff --git a/benchmark/bm_vm1_ivar_set.rb b/benchmark/bm_vm1_ivar_set.rb
index bd81b06c34..c8076c6ab6 100644
--- a/benchmark/bm_vm1_ivar_set.rb
+++ b/benchmark/bm_vm1_ivar_set.rb
@@ -1,6 +1,6 @@
i = 0
while i<30_000_000 # while loop 1
- i += 1
+ i+= 1
@a = 1
@b = 2
end
diff --git a/benchmark/bm_vm1_length.rb b/benchmark/bm_vm1_length.rb
index 353de3ab0e..ccb773278f 100644
--- a/benchmark/bm_vm1_length.rb
+++ b/benchmark/bm_vm1_length.rb
@@ -1,8 +1,8 @@
a = 'abc'
b = [1, 2, 3]
-i = 0
+i=0
while i<30_000_000 # while loop 1
- i += 1
+ i+=1
a.length
b.length
end
diff --git a/benchmark/bm_vm1_lvar_init.rb b/benchmark/bm_vm1_lvar_init.rb
deleted file mode 100644
index 36f2068811..0000000000
--- a/benchmark/bm_vm1_lvar_init.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-def m v
- unless v
- # unreachable code
- v1 = v2 = v3 = v4 = v5 = v6 = v7 = v8 = v9 = v10 =
- v11 = v12 = v13 = v14 = v15 = v16 = v17 = v18 = v19 = v20 =
- v21 = v22 = v23 = v24 = v25 = v26 = v27 = v28 = v29 = v30 =
- v31 = v32 = v33 = v34 = v35 = v36 = v37 = v38 = v39 = v40 =
- v41 = v42 = v43 = v44 = v45 = v46 = v47 = v48 = v49 = v50 = 1
- end
-end
-
-i = 0
-
-while i<30_000_000 # while loop 1
- i += 1
- m i
-end
-
diff --git a/benchmark/bm_vm1_lvar_set.rb b/benchmark/bm_vm1_lvar_set.rb
deleted file mode 100644
index 222e864134..0000000000
--- a/benchmark/bm_vm1_lvar_set.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-i = 0
-while i<30_000_000 # while loop 1
- i += 1
- a = b = c = d = e = f = g = h = j = k = l = m = n = o = p = q = r = 1
-end
diff --git a/benchmark/bm_vm1_neq.rb b/benchmark/bm_vm1_neq.rb
index bbb4ae07a4..9254a0ca9b 100644
--- a/benchmark/bm_vm1_neq.rb
+++ b/benchmark/bm_vm1_neq.rb
@@ -3,6 +3,6 @@ obj1 = Object.new
obj2 = Object.new
while i<30_000_000 # while loop 1
- i += 1
+ i+= 1
obj1 != obj2
end
diff --git a/benchmark/bm_vm1_not.rb b/benchmark/bm_vm1_not.rb
index b09ecdcc21..ee9d0f3605 100644
--- a/benchmark/bm_vm1_not.rb
+++ b/benchmark/bm_vm1_not.rb
@@ -2,6 +2,6 @@ i = 0
obj = Object.new
while i<30_000_000 # while loop 1
- i += 1
+ i+= 1
!obj
end
diff --git a/benchmark/bm_vm1_rescue.rb b/benchmark/bm_vm1_rescue.rb
index b0d3e2bdfa..3af12bb0f3 100644
--- a/benchmark/bm_vm1_rescue.rb
+++ b/benchmark/bm_vm1_rescue.rb
@@ -1,6 +1,6 @@
-i = 0
+i=0
while i<30_000_000 # while loop 1
- i += 1
+ i+=1
begin
rescue
end
diff --git a/benchmark/bm_vm1_simplereturn.rb b/benchmark/bm_vm1_simplereturn.rb
index 63f9f21675..8e9bcb0129 100644
--- a/benchmark/bm_vm1_simplereturn.rb
+++ b/benchmark/bm_vm1_simplereturn.rb
@@ -1,9 +1,9 @@
def m
return 1
end
-i = 0
+i=0
while i<30_000_000 # while loop 1
- i += 1
+ i+=1
m
end
diff --git a/benchmark/bm_vm1_swap.rb b/benchmark/bm_vm1_swap.rb
index 918f8b2112..611baf6b99 100644
--- a/benchmark/bm_vm1_swap.rb
+++ b/benchmark/bm_vm1_swap.rb
@@ -1,8 +1,8 @@
a = 1
b = 2
-i = 0
+i=0
while i<30_000_000 # while loop 1
- i += 1
+ i+=1
a, b = b, a
end
diff --git a/benchmark/bm_vm1_yield.rb b/benchmark/bm_vm1_yield.rb
deleted file mode 100644
index 775597cea6..0000000000
--- a/benchmark/bm_vm1_yield.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-def m
- i = 0
- while i<30_000_000 # while loop 1
- i += 1
- yield
- end
-end
-
-m{}
-
diff --git a/benchmark/bm_vm2_array.rb b/benchmark/bm_vm2_array.rb
index df9037c83c..7713ae9f25 100644
--- a/benchmark/bm_vm2_array.rb
+++ b/benchmark/bm_vm2_array.rb
@@ -1,5 +1,5 @@
-i = 0
+i=0
while i<6_000_000 # benchmark loop 2
- i += 1
+ i+=1
a = [1,2,3,4,5,6,7,8,9,10]
end
diff --git a/benchmark/bm_vm2_bigarray.rb b/benchmark/bm_vm2_bigarray.rb
deleted file mode 100644
index b02509d6a2..0000000000
--- a/benchmark/bm_vm2_bigarray.rb
+++ /dev/null
@@ -1,106 +0,0 @@
-i = 0
-while i<6_000_000 # benchmark loop 2
- i += 1
- a = [
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- 1,2,3,4,5,6,7,8,9,10,
- ]
-end
diff --git a/benchmark/bm_vm2_bighash.rb b/benchmark/bm_vm2_bighash.rb
deleted file mode 100644
index 5e3f437bb8..0000000000
--- a/benchmark/bm_vm2_bighash.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-i = 0
-while i<60_000 # benchmark loop 2
- i += 1
- a = {0=>0, 1=>1, 2=>2, 3=>3, 4=>4, 5=>5, 6=>6, 7=>7, 8=>8, 9=>9, 10=>10, 11=>11, 12=>12, 13=>13, 14=>14, 15=>15, 16=>16, 17=>17, 18=>18, 19=>19, 20=>20, 21=>21, 22=>22, 23=>23, 24=>24, 25=>25, 26=>26, 27=>27, 28=>28, 29=>29, 30=>30, 31=>31, 32=>32, 33=>33, 34=>34, 35=>35, 36=>36, 37=>37, 38=>38, 39=>39, 40=>40, 41=>41, 42=>42, 43=>43, 44=>44, 45=>45, 46=>46, 47=>47, 48=>48, 49=>49, 50=>50, 51=>51, 52=>52, 53=>53, 54=>54, 55=>55, 56=>56, 57=>57, 58=>58, 59=>59, 60=>60, 61=>61, 62=>62, 63=>63, 64=>64, 65=>65, 66=>66, 67=>67, 68=>68, 69=>69, 70=>70, 71=>71, 72=>72, 73=>73, 74=>74, 75=>75, 76=>76, 77=>77, 78=>78, 79=>79, 80=>80, 81=>81, 82=>82, 83=>83, 84=>84, 85=>85, 86=>86, 87=>87, 88=>88, 89=>89, 90=>90, 91=>91, 92=>92, 93=>93, 94=>94, 95=>95, 96=>96, 97=>97, 98=>98, 99=>99, 100=>100, 101=>101, 102=>102, 103=>103, 104=>104, 105=>105, 106=>106, 107=>107, 108=>108, 109=>109, 110=>110, 111=>111, 112=>112, 113=>113, 114=>114, 115=>115, 116=>116, 117=>117, 118=>118, 119=>119, 120=>120, 121=>121, 122=>122, 123=>123, 124=>124, 125=>125, 126=>126, 127=>127, 128=>128, 129=>129, 130=>130, 131=>131, 132=>132, 133=>133, 134=>134, 135=>135, 136=>136, 137=>137, 138=>138, 139=>139, 140=>140, 141=>141, 142=>142, 143=>143, 144=>144, 145=>145, 146=>146, 147=>147, 148=>148, 149=>149, 150=>150, 151=>151, 152=>152, 153=>153, 154=>154, 155=>155, 156=>156, 157=>157, 158=>158, 159=>159, 160=>160, 161=>161, 162=>162, 163=>163, 164=>164, 165=>165, 166=>166, 167=>167, 168=>168, 169=>169, 170=>170, 171=>171, 172=>172, 173=>173, 174=>174, 175=>175, 176=>176, 177=>177, 178=>178, 179=>179, 180=>180, 181=>181, 182=>182, 183=>183, 184=>184, 185=>185, 186=>186, 187=>187, 188=>188, 189=>189, 190=>190, 191=>191, 192=>192, 193=>193, 194=>194, 195=>195, 196=>196, 197=>197, 198=>198, 199=>199, 200=>200, 201=>201, 202=>202, 203=>203, 204=>204, 205=>205, 206=>206, 207=>207, 208=>208, 209=>209, 210=>210, 211=>211, 212=>212, 213=>213, 214=>214, 215=>215, 216=>216, 217=>217, 218=>218, 219=>219, 220=>220, 221=>221, 222=>222, 223=>223, 224=>224, 225=>225, 226=>226, 227=>227, 228=>228, 229=>229, 230=>230, 231=>231, 232=>232, 233=>233, 234=>234, 235=>235, 236=>236, 237=>237, 238=>238, 239=>239, 240=>240, 241=>241, 242=>242, 243=>243, 244=>244, 245=>245, 246=>246, 247=>247, 248=>248, 249=>249, 250=>250, 251=>251, 252=>252, 253=>253, 254=>254, 255=>255, 256=>256, 257=>257, 258=>258, 259=>259, 260=>260, 261=>261, 262=>262, 263=>263, 264=>264, 265=>265, 266=>266, 267=>267, 268=>268, 269=>269, 270=>270, 271=>271, 272=>272, 273=>273, 274=>274, 275=>275, 276=>276, 277=>277, 278=>278, 279=>279, 280=>280, 281=>281, 282=>282, 283=>283, 284=>284, 285=>285, 286=>286, 287=>287, 288=>288, 289=>289, 290=>290, 291=>291, 292=>292, 293=>293, 294=>294, 295=>295, 296=>296, 297=>297, 298=>298, 299=>299, 300=>300, 301=>301, 302=>302, 303=>303, 304=>304, 305=>305, 306=>306, 307=>307, 308=>308, 309=>309, 310=>310, 311=>311, 312=>312, 313=>313, 314=>314, 315=>315, 316=>316, 317=>317, 318=>318, 319=>319, 320=>320, 321=>321, 322=>322, 323=>323, 324=>324, 325=>325, 326=>326, 327=>327, 328=>328, 329=>329, 330=>330, 331=>331, 332=>332, 333=>333, 334=>334, 335=>335, 336=>336, 337=>337, 338=>338, 339=>339, 340=>340, 341=>341, 342=>342, 343=>343, 344=>344, 345=>345, 346=>346, 347=>347, 348=>348, 349=>349, 350=>350, 351=>351, 352=>352, 353=>353, 354=>354, 355=>355, 356=>356, 357=>357, 358=>358, 359=>359, 360=>360, 361=>361, 362=>362, 363=>363, 364=>364, 365=>365, 366=>366, 367=>367, 368=>368, 369=>369, 370=>370, 371=>371, 372=>372, 373=>373, 374=>374, 375=>375, 376=>376, 377=>377, 378=>378, 379=>379, 380=>380, 381=>381, 382=>382, 383=>383, 384=>384, 385=>385, 386=>386, 387=>387, 388=>388, 389=>389, 390=>390, 391=>391, 392=>392, 393=>393, 394=>394, 395=>395, 396=>396, 397=>397, 398=>398, 399=>399, 400=>400, 401=>401, 402=>402, 403=>403, 404=>404, 405=>405, 406=>406, 407=>407, 408=>408, 409=>409, 410=>410, 411=>411, 412=>412, 413=>413, 414=>414, 415=>415, 416=>416, 417=>417, 418=>418, 419=>419, 420=>420, 421=>421, 422=>422, 423=>423, 424=>424, 425=>425, 426=>426, 427=>427, 428=>428, 429=>429, 430=>430, 431=>431, 432=>432, 433=>433, 434=>434, 435=>435, 436=>436, 437=>437, 438=>438, 439=>439, 440=>440, 441=>441, 442=>442, 443=>443, 444=>444, 445=>445, 446=>446, 447=>447, 448=>448, 449=>449, 450=>450, 451=>451, 452=>452, 453=>453, 454=>454, 455=>455, 456=>456, 457=>457, 458=>458, 459=>459, 460=>460, 461=>461, 462=>462, 463=>463, 464=>464, 465=>465, 466=>466, 467=>467, 468=>468, 469=>469, 470=>470, 471=>471, 472=>472, 473=>473, 474=>474, 475=>475, 476=>476, 477=>477, 478=>478, 479=>479, 480=>480, 481=>481, 482=>482, 483=>483, 484=>484, 485=>485, 486=>486, 487=>487, 488=>488, 489=>489, 490=>490, 491=>491, 492=>492, 493=>493, 494=>494, 495=>495, 496=>496, 497=>497, 498=>498, 499=>499, 500=>500,}
-end
diff --git a/benchmark/bm_vm2_case.rb b/benchmark/bm_vm2_case.rb
index adc6e4df0a..cd09788a85 100644
--- a/benchmark/bm_vm2_case.rb
+++ b/benchmark/bm_vm2_case.rb
@@ -1,4 +1,4 @@
-i = 0
+i=0
while i<6_000_000 # while loop 2
case :foo
when :bar
@@ -8,7 +8,7 @@ while i<6_000_000 # while loop 2
when :boo
raise
when :foo
- i += 1
+ i+=1
end
end
diff --git a/benchmark/bm_vm2_defined_method.rb b/benchmark/bm_vm2_defined_method.rb
index 053ed6c912..06c0d01baa 100644
--- a/benchmark/bm_vm2_defined_method.rb
+++ b/benchmark/bm_vm2_defined_method.rb
@@ -2,8 +2,8 @@ class Object
define_method(:m){}
end
-i = 0
+i=0
while i<6_000_000 # benchmark loop 2
- i += 1
+ i+=1
m; m; m; m; m; m; m; m;
end
diff --git a/benchmark/bm_vm2_dstr.rb b/benchmark/bm_vm2_dstr.rb
deleted file mode 100644
index 58c0f7bbc3..0000000000
--- a/benchmark/bm_vm2_dstr.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-i = 0
-x = y = 'z'
-while i<6_000_000 # benchmark loop 2
- i += 1
- str = "foo#{x}bar#{y}baz"
-end
diff --git a/benchmark/bm_vm2_eval.rb b/benchmark/bm_vm2_eval.rb
index 307cfc28ef..e72b4661ac 100644
--- a/benchmark/bm_vm2_eval.rb
+++ b/benchmark/bm_vm2_eval.rb
@@ -1,6 +1,6 @@
-i = 0
+i=0
while i<6_000_000 # benchmark loop 2
- i += 1
+ i+=1
eval("1")
end
diff --git a/benchmark/bm_vm2_method.rb b/benchmark/bm_vm2_method.rb
index a8ccff7138..f92e39a73f 100644
--- a/benchmark/bm_vm2_method.rb
+++ b/benchmark/bm_vm2_method.rb
@@ -2,8 +2,8 @@ def m
nil
end
-i = 0
+i=0
while i<6_000_000 # benchmark loop 2
- i += 1
+ i+=1
m; m; m; m; m; m; m; m;
end
diff --git a/benchmark/bm_vm2_method_missing.rb b/benchmark/bm_vm2_method_missing.rb
deleted file mode 100644
index 2badc73101..0000000000
--- a/benchmark/bm_vm2_method_missing.rb
+++ /dev/null
@@ -1,12 +0,0 @@
-class C
- def method_missing mid
- end
-end
-
-obj = C.new
-
-i = 0
-while i<6_000_000 # benchmark loop 2
- i += 1
- obj.m; obj.m; obj.m; obj.m; obj.m; obj.m; obj.m; obj.m;
-end
diff --git a/benchmark/bm_vm2_method_with_block.rb b/benchmark/bm_vm2_method_with_block.rb
deleted file mode 100644
index b4efb4f520..0000000000
--- a/benchmark/bm_vm2_method_with_block.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-def m
- nil
-end
-
-i = 0
-while i<6_000_000 # benchmark loop 2
- i += 1
- m{}; m{}; m{}; m{}; m{}; m{}; m{}; m{};
-end
diff --git a/benchmark/bm_vm2_mutex.rb b/benchmark/bm_vm2_mutex.rb
index 7362f738c5..01b1c478cb 100644
--- a/benchmark/bm_vm2_mutex.rb
+++ b/benchmark/bm_vm2_mutex.rb
@@ -2,8 +2,8 @@ require 'thread'
m = Mutex.new
-i = 0
+i=0
while i<6_000_000 # benchmark loop 2
- i += 1
+ i+=1
m.synchronize{}
end
diff --git a/benchmark/bm_vm2_poly_method.rb b/benchmark/bm_vm2_poly_method.rb
index c82c0e4bce..921457d817 100644
--- a/benchmark/bm_vm2_poly_method.rb
+++ b/benchmark/bm_vm2_poly_method.rb
@@ -12,9 +12,9 @@ end
o1 = C1.new
o2 = C2.new
-i = 0
+i=0
while i<6_000_000 # benchmark loop 2
o = (i % 2 == 0) ? o1 : o2
o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m
- i += 1
+ i+=1
end
diff --git a/benchmark/bm_vm2_poly_method_ov.rb b/benchmark/bm_vm2_poly_method_ov.rb
index aa5fd1dd38..bf09837dd7 100644
--- a/benchmark/bm_vm2_poly_method_ov.rb
+++ b/benchmark/bm_vm2_poly_method_ov.rb
@@ -12,9 +12,9 @@ end
o1 = C1.new
o2 = C2.new
-i = 0
+i=0
while i<6_000_000 # benchmark loop 2
o = (i % 2 == 0) ? o1 : o2
# o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m
- i += 1
+ i+=1
end
diff --git a/benchmark/bm_vm2_proc.rb b/benchmark/bm_vm2_proc.rb
index 65e5217371..3f51056bf9 100644
--- a/benchmark/bm_vm2_proc.rb
+++ b/benchmark/bm_vm2_proc.rb
@@ -6,9 +6,9 @@ pr = m{
a = 1
}
-i = 0
+i=0
while i<6_000_000 # benchmark loop 2
- i += 1
+ i+=1
pr.call
end
diff --git a/benchmark/bm_vm2_raise1.rb b/benchmark/bm_vm2_raise1.rb
deleted file mode 100644
index aa5387987f..0000000000
--- a/benchmark/bm_vm2_raise1.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-def rec n
- if n > 0
- rec n-1
- else
- raise
- end
-end
-
-i = 0
-while i<6_000_000 # benchmark loop 2
- i += 1
-
- begin
- rec 1
- rescue
- # ignore
- end
-end
diff --git a/benchmark/bm_vm2_raise2.rb b/benchmark/bm_vm2_raise2.rb
deleted file mode 100644
index 1f61c63157..0000000000
--- a/benchmark/bm_vm2_raise2.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-def rec n
- if n > 0
- rec n-1
- else
- raise
- end
-end
-
-i = 0
-while i<6_000_000 # benchmark loop 2
- i += 1
-
- begin
- rec 10
- rescue
- # ignore
- end
-end
diff --git a/benchmark/bm_vm2_regexp.rb b/benchmark/bm_vm2_regexp.rb
index 55f9e957a3..428099e55a 100644
--- a/benchmark/bm_vm2_regexp.rb
+++ b/benchmark/bm_vm2_regexp.rb
@@ -1,6 +1,6 @@
-i = 0
+i=0
str = 'xxxhogexxx'
while i<6_000_000 # benchmark loop 2
/hoge/ =~ str
- i += 1
+ i+=1
end
diff --git a/benchmark/bm_vm2_send.rb b/benchmark/bm_vm2_send.rb
index 6a3ab6fdab..37c79fb1c3 100644
--- a/benchmark/bm_vm2_send.rb
+++ b/benchmark/bm_vm2_send.rb
@@ -5,8 +5,8 @@ end
o = C.new
-i = 0
+i=0
while i<6_000_000 # benchmark loop 2
- i += 1
+ i+=1
o.__send__ :m
end
diff --git a/benchmark/bm_vm2_super.rb b/benchmark/bm_vm2_super.rb
index afd8579e7b..d4f0b647de 100644
--- a/benchmark/bm_vm2_super.rb
+++ b/benchmark/bm_vm2_super.rb
@@ -16,5 +16,5 @@ obj = CC.new
i = 0
while i<6_000_000 # benchmark loop 2
obj.m
- i += 1
+ i+=1
end
diff --git a/benchmark/bm_vm2_unif1.rb b/benchmark/bm_vm2_unif1.rb
index 1774625942..775f4d37e6 100644
--- a/benchmark/bm_vm2_unif1.rb
+++ b/benchmark/bm_vm2_unif1.rb
@@ -3,6 +3,6 @@ def m a, b
end
while i<6_000_000 # benchmark loop 2
- i += 1
+ i+=1
m 100, 200
end
diff --git a/benchmark/bm_vm2_zsuper.rb b/benchmark/bm_vm2_zsuper.rb
index 2a43e62217..7e90df1822 100644
--- a/benchmark/bm_vm2_zsuper.rb
+++ b/benchmark/bm_vm2_zsuper.rb
@@ -16,5 +16,5 @@ obj = CC.new
while i<6_000_000 # benchmark loop 2
obj.m 10
- i += 1
+ i+=1
end
diff --git a/benchmark/bm_vm3_backtrace.rb b/benchmark/bm_vm3_backtrace.rb
deleted file mode 100644
index 0fbf73e1ca..0000000000
--- a/benchmark/bm_vm3_backtrace.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-# get last backtrace
-
-begin
- caller(0, 0)
-rescue ArgumentError
- alias caller_orig caller
- def caller lev, n
- caller_orig(lev)[0..n]
- end
-end
-
-def rec n
- if n < 0
- 100_000.times{
- caller(0, 1)
- }
- else
- rec(n-1)
- end
-end
-
-rec 50
diff --git a/benchmark/bm_vm3_clearmethodcache.rb b/benchmark/bm_vm3_clearmethodcache.rb
index 9661323cd2..a25c372f06 100644
--- a/benchmark/bm_vm3_clearmethodcache.rb
+++ b/benchmark/bm_vm3_clearmethodcache.rb
@@ -1,6 +1,6 @@
-i = 0
+i=0
while i<200_000
- i += 1
+ i+=1
Class.new{
def m; end
diff --git a/benchmark/bm_vm_thread_create_join.rb b/benchmark/bm_vm_thread_create_join.rb
index 393cd45df9..325a66d587 100644
--- a/benchmark/bm_vm_thread_create_join.rb
+++ b/benchmark/bm_vm_thread_create_join.rb
@@ -1,6 +1,6 @@
-i = 0
+i=0
while i<100_000 # benchmark loop 3
- i += 1
+ i+=1
Thread.new{
}.join
end
diff --git a/benchmark/bm_vm_thread_mutex1.rb b/benchmark/bm_vm_thread_mutex1.rb
index 5c9f85dfb7..588506e87c 100644
--- a/benchmark/bm_vm_thread_mutex1.rb
+++ b/benchmark/bm_vm_thread_mutex1.rb
@@ -7,9 +7,9 @@ max = 2000
lmax = max * max
(1..1).map{
Thread.new{
- i = 0
+ i=0
while i<lmax
- i += 1
+ i+=1
m.synchronize{
r += 1
}
diff --git a/benchmark/bm_vm_thread_mutex2.rb b/benchmark/bm_vm_thread_mutex2.rb
index 10de59054f..d700b146d4 100644
--- a/benchmark/bm_vm_thread_mutex2.rb
+++ b/benchmark/bm_vm_thread_mutex2.rb
@@ -7,9 +7,9 @@ max = 2000
lmax = (max * max)/2
(1..2).map{
Thread.new{
- i = 0
+ i=0
while i<lmax
- i += 1
+ i+=1
m.synchronize{
r += 1
}
diff --git a/benchmark/bm_vm_thread_mutex3.rb b/benchmark/bm_vm_thread_mutex3.rb
index 7f9a44b39d..f502b6ac84 100644
--- a/benchmark/bm_vm_thread_mutex3.rb
+++ b/benchmark/bm_vm_thread_mutex3.rb
@@ -6,9 +6,9 @@ r = 0
max = 2000
(1..max).map{
Thread.new{
- i = 0
+ i=0
while i<max
- i += 1
+ i+=1
m.synchronize{
r += 1
}
diff --git a/benchmark/bm_vm_thread_pass_flood.rb b/benchmark/bm_vm_thread_pass_flood.rb
index 27157d1a6f..56b5b0a956 100644
--- a/benchmark/bm_vm_thread_pass_flood.rb
+++ b/benchmark/bm_vm_thread_pass_flood.rb
@@ -2,7 +2,7 @@
Thread.new{loop{Thread.pass}}
}
-i = 0
+i=0
while i<10000
i += 1
end
diff --git a/benchmark/bmx_temp.rb b/benchmark/bmx_temp.rb
new file mode 100644
index 0000000000..0b4b219ca2
--- /dev/null
+++ b/benchmark/bmx_temp.rb
@@ -0,0 +1,9 @@
+def m
+ nil
+end
+
+i=0
+while i<800000 # benchmark loop 2
+ i+=1
+ m; m; m; m; m; m; m; m;
+end
diff --git a/benchmark/driver.rb b/benchmark/driver.rb
index cbc72cf604..7dab292a15 100644
--- a/benchmark/driver.rb
+++ b/benchmark/driver.rb
@@ -60,25 +60,22 @@ class BenchmarkDriver
if /(.+)::(.+)/ =~ e
# ex) ruby-a::/path/to/ruby-a
- label = $1.strip
- path = $2
- version = `#{path} -v`.chomp
+ v = $1.strip
+ e = $2
else
- path = e
- version = label = `#{path} -v`.chomp
+ v = `#{e} -v`.chomp
+ v.sub!(/ patchlevel \d+/, '')
end
- [path, label, version]
+ [e, v]
}.compact
@dir = dir
@repeat = opt[:repeat] || 1
@repeat = 1 if @repeat < 1
@pattern = opt[:pattern] || nil
- @exclude = opt[:exclude] || nil
@verbose = opt[:quiet] ? false : (opt[:verbose] || false)
@output = opt[:output] ? open(opt[:output], 'w') : nil
@loop_wl1 = @loop_wl2 = nil
- @ruby_arg = opt[:ruby_arg] || nil
@opt = opt
# [[name, [[r-1-1, r-1-2, ...], [r-2-1, r-2-2, ...]]], ...]
@@ -87,33 +84,14 @@ class BenchmarkDriver
if @verbose
@start_time = Time.now
message @start_time
- @execs.each_with_index{|(path, label, version), i|
- message "target #{i}: " + (label == version ? "#{label}" : "#{label} (#{version})") + " at \"#{path}\""
+ @execs.each_with_index{|(e, v), i|
+ message "target #{i}: #{v}"
}
end
end
- def adjusted_results name, results
- s = nil
- results.each_with_index{|e, i|
- r = e.min
- case name
- when /^vm1_/
- if @loop_wl1
- r -= @loop_wl1[i]
- r = 0 if r < 0
- s = '*'
- end
- when /^vm2_/
- if @loop_wl2
- r -= @loop_wl2[i]
- r = 0 if r < 0
- s = '*'
- end
- end
- yield r
- }
- s
+ def average results
+ results.inject(:+) / results.length
end
def show_results
@@ -125,7 +103,7 @@ class BenchmarkDriver
message
message PP.pp(@results, "", 79)
message
- message "Elapsed time: #{Time.now - @start_time} (sec)"
+ message "Elapesed time: #{Time.now - @start_time} (sec)"
end
output '-----------------------------------------------------------'
@@ -135,49 +113,50 @@ class BenchmarkDriver
output "minimum results in each #{@repeat} measurements."
end
- output "Execution time (sec)"
- output "name\t#{@execs.map{|(_, v)| v}.join("\t")}"
+ difference = "\taverage difference" if @execs.length == 2
+ total_difference = 0
+
+ output "name\t#{@execs.map{|(e, v)| v}.join("\t")}#{difference}"
@results.each{|v, result|
rets = []
- s = adjusted_results(v, result){|r|
+ s = nil
+ result.each_with_index{|e, i|
+ r = e.min
+ case v
+ when /^vm1_/
+ if @loop_wl1
+ r -= @loop_wl1[i]
+ s = '*'
+ end
+ when /^vm2_/
+ if @loop_wl2
+ r -= @loop_wl2[i]
+ s = '*'
+ end
+ end
rets << sprintf("%.3f", r)
}
+
+ if difference
+ diff = average(result.last) - average(result.first)
+ total_difference += diff
+ rets << sprintf("%.3f", diff)
+ end
+
output "#{v}#{s}\t#{rets.join("\t")}"
}
- if @execs.size > 1
- output
- output "Speedup ratio: compare with the result of `#{@execs[0][1]}' (greater is better)"
- output "name\t#{@execs[1..-1].map{|(_, v)| v}.join("\t")}"
- @results.each{|v, result|
- rets = []
- first_value = nil
- s = adjusted_results(v, result){|r|
- if first_value
- if r == 0
- rets << "Error"
- else
- rets << sprintf("%.3f", first_value/r)
- end
- else
- first_value = r
- end
- }
- output "#{v}#{s}\t#{rets.join("\t")}"
- }
- end
-
- if @opt[:output]
- output
- output "Log file: #{@opt[:output]}"
+ if difference and @verbose
+ output '-----------------------------------------------------------'
+ output "average total difference is #{total_difference}"
end
end
def files
flag = {}
+ vm1 = vm2 = wl1 = wl2 = false
@files = Dir.glob(File.join(@dir, 'bm*.rb')).map{|file|
next if @pattern && /#{@pattern}/ !~ File.basename(file)
- next if @exclude && /#{@exclude}/ =~ File.basename(file)
case file
when /bm_(vm[12])_/, /bm_loop_(whileloop2?).rb/
flag[$1] = true
@@ -239,35 +218,31 @@ class BenchmarkDriver
end
def measure executable, file
- cmd = "#{executable} #{@ruby_arg} #{file}"
-
+ cmd = "#{executable} #{file}"
m = Benchmark.measure{
- system(cmd, out: File::NULL)
+ `#{cmd}`
}
if $? != 0
- output "\`#{cmd}\' exited with abnormal status (#{$?})"
- 0
- else
- m.real
+ raise "\`#{cmd}\' exited with abnormal status (#{$?})"
end
+
+ m.real
end
end
if __FILE__ == $0
opt = {
- :execs => [],
- :dir => File.dirname(__FILE__),
+ :execs => ['ruby'],
+ :dir => './',
:repeat => 1,
:output => "bmlog-#{Time.now.strftime('%Y%m%d-%H%M%S')}.#{$$}",
}
parser = OptionParser.new{|o|
o.on('-e', '--executables [EXECS]',
- "Specify benchmark one or more targets (e1::path1; e2::path2; e3::path3;...)"){|e|
- e.split(/;/).each{|path|
- opt[:execs] << path
- }
+ "Specify benchmark one or more targets. (exec1; exec2; exec3, ...)"){|e|
+ opt[:execs] = e.split(/;/)
}
o.on('-d', '--directory [DIRECTORY]', "Benchmark suites directory"){|d|
opt[:dir] = d
@@ -275,17 +250,11 @@ if __FILE__ == $0
o.on('-p', '--pattern [PATTERN]', "Benchmark name pattern"){|p|
opt[:pattern] = p
}
- o.on('-x', '--exclude [PATTERN]', "Benchmark exclude pattern"){|e|
- opt[:exclude] = e
- }
o.on('-r', '--repeat-count [NUM]', "Repeat count"){|n|
opt[:repeat] = n.to_i
}
- o.on('-o', '--output-file [FILE]', "Output file"){|f|
- opt[:output] = f
- }
- o.on('--ruby-arg [ARG]', "Optional argument for ruby"){|a|
- opt[:ruby_arg] = a
+ o.on('-o', '--output-file [FILE]', "Output file"){|o|
+ opt[:output] = o
}
o.on('-q', '--quiet', "Run without notify information except result table."){|q|
opt[:quiet] = q
diff --git a/benchmark/other-lang/fact.rb b/benchmark/other-lang/fact.rb
index 6cedc752cd..7e97b22b39 100644
--- a/benchmark/other-lang/fact.rb
+++ b/benchmark/other-lang/fact.rb
@@ -6,8 +6,8 @@ def fact(n)
end
end
-i = 0
+i=0
while i<10000
- i += 1
+ i+=1
fact(100)
end
diff --git a/benchmark/other-lang/loop.rb b/benchmark/other-lang/loop.rb
index b367b9dbf3..d43cef61f3 100644
--- a/benchmark/other-lang/loop.rb
+++ b/benchmark/other-lang/loop.rb
@@ -1,4 +1,4 @@
-i = 0
+i=0
while i<30000000
- i += 1
+ i+=1
end
diff --git a/bignum.c b/bignum.c
index a9448ceab0..04df7ba4ea 100644
--- a/bignum.c
+++ b/bignum.c
@@ -10,7 +10,6 @@
**********************************************************************/
#include "ruby/ruby.h"
-#include "ruby/thread.h"
#include "ruby/util.h"
#include "internal.h"
@@ -105,7 +104,7 @@ rb_cmpint(VALUE val, VALUE a, VALUE b)
if (l < 0) return -1;
return 0;
}
- if (RB_TYPE_P(val, T_BIGNUM)) {
+ if (TYPE(val) == T_BIGNUM) {
if (BIGZEROP(val)) return 0;
if (RBIGNUM_SIGN(val)) return 1;
return -1;
@@ -166,7 +165,8 @@ rb_big_resize(VALUE big, long len)
static VALUE
bignew_1(VALUE klass, long len, int sign)
{
- NEWOBJ_OF(big, struct RBignum, klass, T_BIGNUM);
+ NEWOBJ(big, struct RBignum);
+ OBJSETUP(big, klass, T_BIGNUM);
RBIGNUM_SET_SIGN(big, sign?1:0);
if (len <= RBIGNUM_EMBED_LEN_MAX) {
RBASIC(big)->flags |= RBIGNUM_EMBED_FLAG;
@@ -176,7 +176,7 @@ bignew_1(VALUE klass, long len, int sign)
RBIGNUM(big)->as.heap.digits = ALLOC_N(BDIGIT, len);
RBIGNUM(big)->as.heap.len = len;
}
- OBJ_FREEZE(big);
+
return (VALUE)big;
}
@@ -272,7 +272,7 @@ bigfixize(VALUE x)
static VALUE
bignorm(VALUE x)
{
- if (RB_TYPE_P(x, T_BIGNUM)) {
+ if (!FIXNUM_P(x) && TYPE(x) == T_BIGNUM) {
x = bigfixize(bigtrunc(x));
}
return x;
@@ -309,17 +309,13 @@ VALUE
rb_int2big(SIGNED_VALUE n)
{
long neg = 0;
- VALUE u;
VALUE big;
if (n < 0) {
- u = 1 + (VALUE)(-(n + 1)); /* u = -n avoiding overflow */
+ n = -n;
neg = 1;
}
- else {
- u = n;
- }
- big = rb_uint2big(u);
+ big = rb_uint2big(n);
if (neg) {
RBIGNUM_SET_SIGN(big, 0);
}
@@ -356,14 +352,6 @@ rb_int2inum(SIGNED_VALUE n)
* for each 0 <= i < num_longs.
* So buf is little endian at whole on a little endian machine.
* But buf is mixed endian on a big endian machine.
- *
- * The buf represents negative integers as two's complement.
- * So, the most significant bit of the most significant word,
- * (buf[num_longs-1]>>(SIZEOF_LONG*CHAR_BIT-1)),
- * is the sign bit: 1 means negative and 0 means zero or positive.
- *
- * If given size of buf (num_longs) is not enough to represent val,
- * higier words (including a sign bit) are ignored.
*/
void
rb_big_pack(VALUE val, unsigned long *buf, long num_longs)
@@ -406,7 +394,7 @@ rb_big_pack(VALUE val, unsigned long *buf, long num_longs)
}
}
-/* See rb_big_pack comment for endianness and sign of buf. */
+/* See rb_big_pack comment for endianness of buf. */
VALUE
rb_big_unpack(unsigned long *buf, long num_longs)
{
@@ -737,7 +725,7 @@ rb_cstr_to_inum(const char *str, int base, int badcheck)
if (badcheck) goto bad;
break;
}
- nondigit = (char) c;
+ nondigit = c;
continue;
}
else if ((c = conv_digit(c)) < 0) {
@@ -782,7 +770,6 @@ rb_str_to_inum(VALUE str, int base, int badcheck)
VALUE ret;
StringValue(str);
- rb_must_asciicompat(str);
if (badcheck) {
s = StringValueCStr(str);
}
@@ -1042,8 +1029,7 @@ big2str_find_n1(VALUE x, int base)
bits = BITSPERDIG*RBIGNUM_LEN(x);
}
- /* @shyouhei note: vvvvvvvvvvvvv this cast is suspicious. But I believe it is OK, because if that cast loses data, this x value is too big, and should have raised RangeError. */
- return (long)ceil(((double)bits)/log_2[base - 2]);
+ return (long)ceil(bits/log_2[base - 2]);
}
static long
@@ -1226,15 +1212,11 @@ rb_big2ulong(VALUE x)
{
VALUE num = big2ulong(x, "unsigned long", TRUE);
- if (RBIGNUM_POSITIVE_P(x)) {
- return num;
- }
- else {
- if (num <= LONG_MAX)
- return -(long)num;
- if (num == 1+(unsigned long)(-(LONG_MIN+1)))
- return LONG_MIN;
- rb_raise(rb_eRangeError, "bignum out of range of unsigned long");
+ if (!RBIGNUM_SIGN(x)) {
+ if ((long)num < 0) {
+ rb_raise(rb_eRangeError, "bignum out of range of unsigned long");
+ }
+ return (VALUE)(-(SIGNED_VALUE)num);
}
return num;
}
@@ -1244,18 +1226,12 @@ rb_big2long(VALUE x)
{
VALUE num = big2ulong(x, "long", TRUE);
- if (RBIGNUM_POSITIVE_P(x)) {
- if (LONG_MAX < num)
- rb_raise(rb_eRangeError, "bignum too big to convert into `long'");
- return num;
- }
- else {
- if (num <= LONG_MAX)
- return -(long)num;
- if (num == 1+(unsigned long)(-(LONG_MIN+1)))
- return LONG_MIN;
- rb_raise(rb_eRangeError, "bignum too big to convert into `long'");
+ if ((long)num < 0 &&
+ (RBIGNUM_SIGN(x) || (long)num != LONG_MIN)) {
+ rb_raise(rb_eRangeError, "bignum too big to convert into `long'");
}
+ if (!RBIGNUM_SIGN(x)) return -(SIGNED_VALUE)num;
+ return num;
}
#if HAVE_LONG_LONG
@@ -1283,16 +1259,8 @@ rb_big2ull(VALUE x)
{
unsigned LONG_LONG num = big2ull(x, "unsigned long long");
- if (RBIGNUM_POSITIVE_P(x)) {
- return num;
- }
- else {
- if (num <= LLONG_MAX)
- return -(LONG_LONG)num;
- if (num == 1+(unsigned LONG_LONG)(-(LLONG_MIN+1)))
- return LLONG_MIN;
- rb_raise(rb_eRangeError, "bignum out of range of unsigned long long");
- }
+ if (!RBIGNUM_SIGN(x))
+ return (VALUE)(-(SIGNED_VALUE)num);
return num;
}
@@ -1301,18 +1269,12 @@ rb_big2ll(VALUE x)
{
unsigned LONG_LONG num = big2ull(x, "long long");
- if (RBIGNUM_POSITIVE_P(x)) {
- if (LLONG_MAX < num)
- rb_raise(rb_eRangeError, "bignum too big to convert into `long long'");
- return num;
- }
- else {
- if (num <= LLONG_MAX)
- return -(LONG_LONG)num;
- if (num == 1+(unsigned LONG_LONG)(-(LLONG_MIN+1)))
- return LLONG_MIN;
- rb_raise(rb_eRangeError, "bignum too big to convert into `long long'");
+ if ((LONG_LONG)num < 0 && (RBIGNUM_SIGN(x)
+ || (LONG_LONG)num != LLONG_MIN)) {
+ rb_raise(rb_eRangeError, "bignum too big to convert into `long long'");
}
+ if (!RBIGNUM_SIGN(x)) return -(LONG_LONG)num;
+ return num;
}
#endif /* HAVE_LONG_LONG */
@@ -1455,97 +1417,13 @@ rb_big_to_f(VALUE x)
return DBL2NUM(rb_big2dbl(x));
}
-VALUE
-rb_integer_float_cmp(VALUE x, VALUE y)
-{
- double yd = RFLOAT_VALUE(y);
- double yi, yf;
- VALUE rel;
-
- if (isnan(yd))
- return Qnil;
- if (isinf(yd)) {
- if (yd > 0.0) return INT2FIX(-1);
- else return INT2FIX(1);
- }
- yf = modf(yd, &yi);
- if (FIXNUM_P(x)) {
-#if SIZEOF_LONG * CHAR_BIT < DBL_MANT_DIG /* assume FLT_RADIX == 2 */
- double xd = (double)FIX2LONG(x);
- if (xd < yd)
- return INT2FIX(-1);
- if (xd > yd)
- return INT2FIX(1);
- return INT2FIX(0);
-#else
- long xl, yl;
- if (yi < FIXNUM_MIN)
- return INT2FIX(1);
- if (FIXNUM_MAX+1 <= yi)
- return INT2FIX(-1);
- xl = FIX2LONG(x);
- yl = (long)yi;
- if (xl < yl)
- return INT2FIX(-1);
- if (xl > yl)
- return INT2FIX(1);
- if (yf < 0.0)
- return INT2FIX(1);
- if (0.0 < yf)
- return INT2FIX(-1);
- return INT2FIX(0);
-#endif
- }
- y = rb_dbl2big(yi);
- rel = rb_big_cmp(x, y);
- if (yf == 0.0 || rel != INT2FIX(0))
- return rel;
- if (yf < 0.0)
- return INT2FIX(1);
- return INT2FIX(-1);
-}
-
-VALUE
-rb_integer_float_eq(VALUE x, VALUE y)
-{
- double yd = RFLOAT_VALUE(y);
- double yi, yf;
-
- if (isnan(yd) || isinf(yd))
- return Qfalse;
- yf = modf(yd, &yi);
- if (yf != 0)
- return Qfalse;
- if (FIXNUM_P(x)) {
-#if SIZEOF_LONG * CHAR_BIT < DBL_MANT_DIG /* assume FLT_RADIX == 2 */
- double xd = (double)FIX2LONG(x);
- if (xd != yd)
- return Qfalse;
- return Qtrue;
-#else
- long xl, yl;
- if (yi < LONG_MIN || LONG_MAX < yi)
- return Qfalse;
- xl = FIX2LONG(x);
- yl = (long)yi;
- if (xl != yl)
- return Qfalse;
- return Qtrue;
-#endif
- }
- y = rb_dbl2big(yi);
- return rb_big_eq(x, y);
-}
-
/*
* call-seq:
* big <=> numeric -> -1, 0, +1 or nil
*
- * Comparison---Returns -1, 0, or +1 depending on whether +big+ is
- * less than, equal to, or greater than +numeric+. This is the
- * basis for the tests in Comparable.
- *
- * +nil+ is returned if the two values are incomparable.
+ * Comparison---Returns -1, 0, or +1 depending on whether <i>big</i> is
+ * less than, equal to, or greater than <i>numeric</i>. This is the
+ * basis for the tests in <code>Comparable</code>.
*
*/
@@ -1564,7 +1442,15 @@ rb_big_cmp(VALUE x, VALUE y)
break;
case T_FLOAT:
- return rb_integer_float_cmp(x, y);
+ {
+ double a = RFLOAT_VALUE(y);
+
+ if (isinf(a)) {
+ if (a > 0.0) return INT2FIX(-1);
+ else return INT2FIX(1);
+ }
+ return rb_dbl_cmp(rb_big2dbl(x), a);
+ }
default:
return rb_num_coerce_cmp(x, y, rb_intern("<=>"));
@@ -1580,22 +1466,15 @@ rb_big_cmp(VALUE x, VALUE y)
xds = BDIGITS(x);
yds = BDIGITS(y);
- while (xlen-- && (xds[xlen]==yds[xlen]));
+ while(xlen-- && (xds[xlen]==yds[xlen]));
if (-1 == xlen) return INT2FIX(0);
return (xds[xlen] > yds[xlen]) ?
(RBIGNUM_SIGN(x) ? INT2FIX(1) : INT2FIX(-1)) :
(RBIGNUM_SIGN(x) ? INT2FIX(-1) : INT2FIX(1));
}
-enum big_op_t {
- big_op_gt,
- big_op_ge,
- big_op_lt,
- big_op_le
-};
-
static VALUE
-big_op(VALUE x, VALUE y, enum big_op_t op)
+big_op(VALUE x, VALUE y, int op)
{
VALUE rel;
int n;
@@ -1607,17 +1486,26 @@ big_op(VALUE x, VALUE y, enum big_op_t op)
break;
case T_FLOAT:
- rel = rb_integer_float_cmp(x, y);
- break;
+ {
+ double a = RFLOAT_VALUE(y);
+
+ if (isinf(a)) {
+ if (a > 0.0) rel = INT2FIX(-1);
+ else rel = INT2FIX(1);
+ break;
+ }
+ rel = rb_dbl_cmp(rb_big2dbl(x), a);
+ break;
+ }
default:
{
ID id = 0;
switch (op) {
- case big_op_gt: id = '>'; break;
- case big_op_ge: id = rb_intern(">="); break;
- case big_op_lt: id = '<'; break;
- case big_op_le: id = rb_intern("<="); break;
+ case 0: id = '>'; break;
+ case 1: id = rb_intern(">="); break;
+ case 2: id = '<'; break;
+ case 3: id = rb_intern("<="); break;
}
return rb_num_coerce_relop(x, y, id);
}
@@ -1627,10 +1515,10 @@ big_op(VALUE x, VALUE y, enum big_op_t op)
n = FIX2INT(rel);
switch (op) {
- case big_op_gt: return n > 0 ? Qtrue : Qfalse;
- case big_op_ge: return n >= 0 ? Qtrue : Qfalse;
- case big_op_lt: return n < 0 ? Qtrue : Qfalse;
- case big_op_le: return n <= 0 ? Qtrue : Qfalse;
+ case 0: return n > 0 ? Qtrue : Qfalse;
+ case 1: return n >= 0 ? Qtrue : Qfalse;
+ case 2: return n < 0 ? Qtrue : Qfalse;
+ case 3: return n <= 0 ? Qtrue : Qfalse;
}
return Qundef;
}
@@ -1646,7 +1534,7 @@ big_op(VALUE x, VALUE y, enum big_op_t op)
static VALUE
big_gt(VALUE x, VALUE y)
{
- return big_op(x, y, big_op_gt);
+ return big_op(x, y, 0);
}
/*
@@ -1660,7 +1548,7 @@ big_gt(VALUE x, VALUE y)
static VALUE
big_ge(VALUE x, VALUE y)
{
- return big_op(x, y, big_op_ge);
+ return big_op(x, y, 1);
}
/*
@@ -1674,7 +1562,7 @@ big_ge(VALUE x, VALUE y)
static VALUE
big_lt(VALUE x, VALUE y)
{
- return big_op(x, y, big_op_lt);
+ return big_op(x, y, 2);
}
/*
@@ -1688,7 +1576,7 @@ big_lt(VALUE x, VALUE y)
static VALUE
big_le(VALUE x, VALUE y)
{
- return big_op(x, y, big_op_le);
+ return big_op(x, y, 3);
}
/*
@@ -1712,7 +1600,14 @@ rb_big_eq(VALUE x, VALUE y)
case T_BIGNUM:
break;
case T_FLOAT:
- return rb_integer_float_eq(x, y);
+ {
+ volatile double a, b;
+
+ a = RFLOAT_VALUE(y);
+ if (isnan(a) || isinf(a)) return Qfalse;
+ b = rb_big2dbl(x);
+ return (a == b)?Qtrue:Qfalse;
+ }
default:
return rb_equal(y, x);
}
@@ -1733,10 +1628,10 @@ rb_big_eq(VALUE x, VALUE y)
* 68719476736.eql?(68719476736.0) #=> false
*/
-VALUE
+static VALUE
rb_big_eql(VALUE x, VALUE y)
{
- if (!RB_TYPE_P(y, T_BIGNUM)) return Qfalse;
+ if (TYPE(y) != T_BIGNUM) return Qfalse;
if (RBIGNUM_SIGN(x) != RBIGNUM_SIGN(y)) return Qfalse;
if (RBIGNUM_LEN(x) != RBIGNUM_LEN(y)) return Qfalse;
if (MEMCMP(BDIGITS(x),BDIGITS(y),BDIGIT,RBIGNUM_LEN(y)) != 0) return Qfalse;
@@ -2335,11 +2230,11 @@ biglsh_bang(BDIGIT *xds, long xn, unsigned long shift)
zds = xds + xn - 1;
xn -= s1 + 1;
num = xds[xn]<<s2;
- while (0 < xn) {
+ do {
*zds-- = num | xds[--xn]>>s3;
num = xds[xn]<<s2;
}
- assert(xds <= zds);
+ while (xn > 0);
*zds = num;
for (i = s1; i > 0; --i)
*zds-- = 0;
@@ -2362,11 +2257,11 @@ bigrsh_bang(BDIGIT* xds, long xn, unsigned long shift)
i = 0;
zds = xds + s1;
num = *zds++>>s2;
- while (i < xn - s1 - 1) {
+ do {
xds[i++] = (BDIGIT)(*zds<<s3) | num;
num = *zds++>>s2;
}
- assert(i < xn);
+ while (i < xn - s1 - 1);
xds[i] = num;
MEMZERO(xds + xn - s1, BDIGIT, s1);
}
@@ -2678,32 +2573,30 @@ rb_big_mul(VALUE x, VALUE y)
}
struct big_div_struct {
- long nx, ny, j, nyzero;
+ long nx, ny;
BDIGIT *yds, *zds;
- volatile VALUE stop;
+ VALUE stop;
};
-static void *
+static VALUE
bigdivrem1(void *ptr)
{
struct big_div_struct *bds = (struct big_div_struct*)ptr;
- long ny = bds->ny;
- long i, j;
+ long nx = bds->nx, ny = bds->ny;
+ long i, j, nyzero;
BDIGIT *yds = bds->yds, *zds = bds->zds;
BDIGIT_DBL t2;
BDIGIT_DBL_SIGNED num;
BDIGIT q;
- j = bds->j;
+ j = nx==ny?nx+1:nx;
+ for (nyzero = 0; !yds[nyzero]; nyzero++);
do {
- if (bds->stop) {
- bds->j = j;
- return 0;
- }
+ if (bds->stop) return Qnil;
if (zds[j] == yds[ny-1]) q = (BDIGIT)BIGRAD-1;
else q = (BDIGIT)((BIGUP(zds[j]) + zds[j-1])/yds[ny-1]);
if (q) {
- i = bds->nyzero; num = 0; t2 = 0;
+ i = nyzero; num = 0; t2 = 0;
do { /* multiply and subtract */
BDIGIT_DBL ee;
t2 += (BDIGIT_DBL)yds[i] * q;
@@ -2727,14 +2620,14 @@ bigdivrem1(void *ptr)
}
zds[j] = q;
} while (--j >= ny);
- return 0;
+ return Qnil;
}
static void
rb_big_stop(void *ptr)
{
- struct big_div_struct *bds = ptr;
- bds->stop = Qtrue;
+ VALUE *stop = (VALUE*)ptr;
+ *stop = Qtrue;
}
static VALUE
@@ -2818,17 +2711,8 @@ bigdivrem(VALUE x, VALUE y, volatile VALUE *divp, volatile VALUE *modp)
bds.zds = zds;
bds.yds = yds;
bds.stop = Qfalse;
- bds.j = nx==ny?nx+1:nx;
- for (bds.nyzero = 0; !yds[bds.nyzero]; bds.nyzero++);
if (nx > 10000 || ny > 10000) {
- retry:
- bds.stop = Qfalse;
- rb_thread_call_without_gvl(bigdivrem1, &bds, rb_big_stop, &bds);
-
- if (bds.stop == Qtrue) {
- /* execute trap handler, but exception was not raised. */
- goto retry;
- }
+ rb_thread_blocking_region(bigdivrem1, &bds, rb_big_stop, &bds.stop);
}
else {
bigdivrem1(&bds);
@@ -2845,10 +2729,10 @@ bigdivrem(VALUE x, VALUE y, volatile VALUE *divp, volatile VALUE *modp)
if (modp) { /* normalize remainder */
*modp = zz = rb_big_clone(z);
zds = BDIGITS(zz);
- while (ny > 1 && !zds[ny-1]) --ny;
+ while (--ny && !zds[ny]); ++ny;
if (dd) {
t2 = 0; i = ny;
- while (i--) {
+ while(i--) {
t2 = (t2 | zds[i]) >> dd;
q = zds[i];
zds[i] = BIGLO(t2);
@@ -2893,13 +2777,12 @@ rb_big_divide(VALUE x, VALUE y, ID op)
case T_FLOAT:
{
+ double div = rb_big2dbl(x) / RFLOAT_VALUE(y);
if (op == '/') {
- return DBL2NUM(rb_big2dbl(x) / RFLOAT_VALUE(y));
+ return DBL2NUM(div);
}
else {
- double dy = RFLOAT_VALUE(y);
- if (dy == 0.0) rb_num_zerodiv();
- return rb_dbl2big(rb_big2dbl(x) / dy);
+ return rb_dbl2big(div);
}
}
@@ -3079,31 +2962,32 @@ big_fdiv(VALUE x, VALUE y)
switch (TYPE(y)) {
case T_FIXNUM:
y = rb_int2big(FIX2LONG(y));
- case T_BIGNUM:
+ case T_BIGNUM: {
bigtrunc(y);
l = RBIGNUM_LEN(y) - 1;
ey = l * BITSPERDIG;
ey += bdigbitsize(BDIGITS(y)[l]);
ey -= DBL_BIGDIG * BITSPERDIG;
if (ey) y = big_shift(y, ey);
- break;
+ bignum:
+ bigdivrem(x, y, &z, 0);
+ l = ex - ey;
+#if SIZEOF_LONG > SIZEOF_INT
+ {
+ /* Visual C++ can't be here */
+ if (l > INT_MAX) return DBL2NUM(INFINITY);
+ if (l < INT_MIN) return DBL2NUM(0.0);
+ }
+#endif
+ return DBL2NUM(ldexp(big2dbl(z), (int)l));
+ }
case T_FLOAT:
y = dbl2big(ldexp(frexp(RFLOAT_VALUE(y), &i), DBL_MANT_DIG));
ey = i - DBL_MANT_DIG;
- break;
- default:
- rb_bug("big_fdiv");
+ goto bignum;
}
- bigdivrem(x, y, &z, 0);
- l = ex - ey;
-#if SIZEOF_LONG > SIZEOF_INT
- {
- /* Visual C++ can't be here */
- if (l > INT_MAX) return DBL2NUM(INFINITY);
- if (l < INT_MIN) return DBL2NUM(0.0);
- }
-#endif
- return DBL2NUM(ldexp(big2dbl(z), (int)l));
+ rb_bug("big_fdiv");
+ /* NOTREACHED */
}
/*
@@ -3224,6 +3108,18 @@ rb_big_pow(VALUE x, VALUE y)
return DBL2NUM(pow(rb_big2dbl(x), d));
}
+static inline VALUE
+bit_coerce(VALUE x)
+{
+ while (!FIXNUM_P(x) && TYPE(x) != T_BIGNUM) {
+ if (TYPE(x) == T_FLOAT) {
+ rb_raise(rb_eTypeError, "can't convert Float into Integer");
+ }
+ x = rb_to_int(x);
+ }
+ return x;
+}
+
static VALUE
bigand_int(VALUE x, long y)
{
@@ -3283,13 +3179,8 @@ rb_big_and(VALUE xx, VALUE yy)
long i, l1, l2;
char sign;
- if (!FIXNUM_P(yy) && !RB_TYPE_P(yy, T_BIGNUM)) {
- return rb_num_coerce_bit(xx, yy, '&');
- }
-
x = xx;
- y = yy;
-
+ y = bit_coerce(yy);
if (!RBIGNUM_SIGN(x)) {
x = rb_big_clone(x);
get2comp(x);
@@ -3379,12 +3270,8 @@ rb_big_or(VALUE xx, VALUE yy)
long i, l1, l2;
char sign;
- if (!FIXNUM_P(yy) && !RB_TYPE_P(yy, T_BIGNUM)) {
- return rb_num_coerce_bit(xx, yy, '|');
- }
-
x = xx;
- y = yy;
+ y = bit_coerce(yy);
if (!RBIGNUM_SIGN(x)) {
x = rb_big_clone(x);
@@ -3475,12 +3362,8 @@ rb_big_xor(VALUE xx, VALUE yy)
long i, l1, l2;
char sign;
- if (!FIXNUM_P(yy) && !RB_TYPE_P(yy, T_BIGNUM)) {
- return rb_num_coerce_bit(xx, yy, '^');
- }
-
x = xx;
- y = yy;
+ y = bit_coerce(yy);
if (!RBIGNUM_SIGN(x)) {
x = rb_big_clone(x);
@@ -3555,7 +3438,7 @@ rb_big_lshift(VALUE x, VALUE y)
}
break;
}
- else if (RB_TYPE_P(y, T_BIGNUM)) {
+ else if (TYPE(y) == T_BIGNUM) {
if (!RBIGNUM_SIGN(y)) {
VALUE t = check_shiftdown(y, x);
if (!NIL_P(t)) return t;
@@ -3619,7 +3502,7 @@ rb_big_rshift(VALUE x, VALUE y)
}
break;
}
- else if (RB_TYPE_P(y, T_BIGNUM)) {
+ else if (TYPE(y) == T_BIGNUM) {
if (RBIGNUM_SIGN(y)) {
VALUE t = check_shiftdown(y, x);
if (!NIL_P(t)) return t;
@@ -3655,10 +3538,9 @@ big_rshift(VALUE x, unsigned long shift)
return INT2FIX(-1);
}
if (!RBIGNUM_SIGN(x)) {
- x = rb_big_clone(x);
+ save_x = x = rb_big_clone(x);
get2comp(x);
}
- save_x = x;
xds = BDIGITS(x);
i = RBIGNUM_LEN(x); j = i - s1;
if (j == 0) {
@@ -3678,7 +3560,6 @@ big_rshift(VALUE x, unsigned long shift)
if (!RBIGNUM_SIGN(x)) {
get2comp(z);
}
- RB_GC_GUARD(save_x);
return z;
}
@@ -3709,7 +3590,7 @@ rb_big_aref(VALUE x, VALUE y)
VALUE shift;
long i, s1, s2;
- if (RB_TYPE_P(y, T_BIGNUM)) {
+ if (TYPE(y) == T_BIGNUM) {
if (!RBIGNUM_SIGN(y))
return INT2FIX(0);
bigtrunc(y);
@@ -3767,13 +3648,17 @@ static VALUE
rb_big_coerce(VALUE x, VALUE y)
{
if (FIXNUM_P(y)) {
- y = rb_int2big(FIX2LONG(y));
+ return rb_assoc_new(rb_int2big(FIX2LONG(y)), x);
}
- else if (!RB_TYPE_P(y, T_BIGNUM)) {
+ else if (TYPE(y) == T_BIGNUM) {
+ return rb_assoc_new(y, x);
+ }
+ else {
rb_raise(rb_eTypeError, "can't coerce %s to Bignum",
rb_obj_classname(y));
}
- return rb_assoc_new(y, x);
+ /* not reached */
+ return Qnil;
}
/*
@@ -3869,7 +3754,6 @@ Init_Bignum(void)
rb_cBignum = rb_define_class("Bignum", rb_cInteger);
rb_define_method(rb_cBignum, "to_s", rb_big_to_s, -1);
- rb_define_alias(rb_cBignum, "inspect", "to_s");
rb_define_method(rb_cBignum, "coerce", rb_big_coerce, 1);
rb_define_method(rb_cBignum, "-@", rb_big_uminus, 0);
rb_define_method(rb_cBignum, "+", rb_big_plus, 1);
diff --git a/bin/rake b/bin/rake
index 6aad2f0df3..0de43c97ec 100755
--- a/bin/rake
+++ b/bin/rake
@@ -24,14 +24,9 @@
begin
require 'rubygems'
- gem 'rake'
rescue LoadError
end
-module Rake
- REDUCE_COMPAT = true if ARGV.include?("--reduce-compat")
-end
-
require 'rake'
Rake.application.run
diff --git a/bin/rdoc b/bin/rdoc
index aaa23292df..20d866c220 100755
--- a/bin/rdoc
+++ b/bin/rdoc
@@ -18,10 +18,6 @@ require 'rdoc/rdoc'
begin
r = RDoc::RDoc.new
r.document ARGV
-rescue Errno::ENOSPC
- $stderr.puts 'Ran out of space creating documentation'
- $stderr.puts
- $stderr.puts 'Please free up some space and try again'
rescue SystemExit
raise
rescue Exception => e
diff --git a/bin/testrb b/bin/testrb
index 23a00b439f..e9046eb147 100755
--- a/bin/testrb
+++ b/bin/testrb
@@ -1,3 +1,10 @@
#!/usr/bin/env ruby
require 'test/unit'
-exit Test::Unit::AutoRunner.run(true)
+tests = Test::Unit::AutoRunner.new(true)
+tests.options.banner.sub!(/\[options\]/, '\& tests...')
+unless tests.process_args(ARGV)
+ abort tests.options.banner
+end
+files = tests.to_run
+$0 = files.size == 1 ? File.basename(files[0]) : files.to_s
+exit tests.run
diff --git a/bootstraptest/runner.rb b/bootstraptest/runner.rb
index 75e255428a..df58ca58f3 100755
--- a/bootstraptest/runner.rb
+++ b/bootstraptest/runner.rb
@@ -1,4 +1,4 @@
-"exec" "${RUBY-ruby}" "-x" "$0" "$@" || true # -*- mode: ruby; coding: utf-8 -*-
+"exec" "${RUBY-ruby}" "-x" "$0" "$@"; true # -*- mode: ruby; coding: utf-8 -*-
#!./ruby
# $Id$
@@ -61,9 +61,6 @@ def main
@ruby = File.expand_path('miniruby')
@verbose = false
$stress = false
- @color = nil
- @tty = nil
- @quiet = false
dir = nil
quiet = false
tests = nil
@@ -84,17 +81,8 @@ def main
true
when /\A(--stress|-s)/
$stress = true
- when /\A--color(?:=(?:always|(auto)|(never)|(.*)))?\z/
- warn "unknown --color argument: #$3" if $3
- @color = $1 ? nil : !$2
- true
- when /\A--tty(=(?:yes|(no)|(.*)))?\z/
- warn "unknown --tty argument: #$3" if $3
- @tty = !$1 || !$2
- true
when /\A(-q|--q(uiet))\z/
quiet = true
- @quiet = true
true
when /\A(-v|--v(erbose))\z/
@verbose = true
@@ -104,16 +92,12 @@ Usage: #{File.basename($0, '.*')} --ruby=PATH [--sets=NAME,NAME,...]
--sets=NAME,NAME,... Name of test sets.
--dir=DIRECTORY Working directory.
default: /tmp/bootstraptestXXXXX.tmpwd
- --color[=WHEN] Colorize the output. WHEN defaults to 'always'
- or can be 'never' or 'auto'.
-s, --stress stress test.
-v, --verbose Output test name before exec.
-q, --quiet Don\'t print header message.
-h, --help Print this message and quit.
End
exit true
- when /\A-j/
- true
else
false
end
@@ -126,24 +110,6 @@ End
tests = Dir.glob("#{File.dirname($0)}/test_*.rb").sort if tests.empty?
pathes = tests.map {|path| File.expand_path(path) }
- @progress = %w[- \\ | /]
- @progress_bs = "\b" * @progress[0].size
- @tty = $stderr.tty? if @tty.nil?
- case @color
- when nil
- @color = @tty && /dumb/ !~ ENV["TERM"]
- end
- @tty &&= !@verbose
- if @color
- # dircolors-like style
- colors = (colors = ENV['TEST_COLORS']) ? Hash[colors.scan(/(\w+)=([^:]*)/)] : {}
- @passed = "\e[#{colors["pass"] || "32"}m"
- @failed = "\e[#{colors["fail"] || "31"}m"
- @reset = "\e[m"
- @erase = "\r\e[2K\r"
- else
- @passed = @failed = @reset = @erase = ""
- end
unless quiet
puts Time.now
if defined?(RUBY_DESCRIPTION)
@@ -169,34 +135,23 @@ def exec_test(pathes)
@errbuf = []
@location = nil
pathes.each do |path|
- @basename = File.basename(path)
- $stderr.print @basename, " "
+ $stderr.print "\n#{File.basename(path)} "
$stderr.puts if @verbose
- count = @count
- error = @error
load File.expand_path(path)
- if @tty
- if @error == error
- $stderr.print "#{@progress_bs}#{@passed}PASS #{@count-count}#{@reset}"
- $stderr.print @erase if @quiet
- else
- $stderr.print "#{@progress_bs}#{@failed}FAIL #{@error-error}/#{@count-count}#{@reset}"
- end
- end
- $stderr.puts unless @quiet and @tty
end
+ $stderr.puts
if @error == 0
if @count == 0
$stderr.puts "No tests, no problem"
else
- $stderr.puts "#{@passed}PASS#{@reset} all #{@count} tests"
+ $stderr.puts "PASS all #{@count} tests"
end
exit true
else
@errbuf.each do |msg|
$stderr.puts msg
end
- $stderr.puts "#{@failed}FAIL#{@reset} #{@error}/#{@count} tests failed"
+ $stderr.puts "FAIL #{@error}/#{@count} tests failed"
exit false
end
end
@@ -204,42 +159,22 @@ end
def show_progress(message = '')
if @verbose
$stderr.print "\##{@count} #{@location} "
- elsif @tty
- $stderr.print "#{@progress_bs}#{@progress[@count % @progress.size]}"
end
- faildesc, errout = with_stderr {yield}
+ faildesc = yield
if !faildesc
- if @tty
- $stderr.print "#{@progress_bs}#{@progress[@count % @progress.size]}"
- else
- $stderr.print '.'
- end
+ $stderr.print '.'
$stderr.puts if @verbose
else
- $stderr.print "#{@failed}F#{@reset}"
+ $stderr.print 'F'
$stderr.puts if @verbose
error faildesc, message
- unless errout.empty?
- $stderr.print "#{@failed}stderr output is not empty#{@reset}\n", adjust_indent(errout)
- end
- if @tty and !@verbose
- $stderr.print @basename, " ", @progress[@count % @progress.size]
- end
end
-rescue Interrupt
- raise Interrupt
rescue Exception => err
$stderr.print 'E'
$stderr.puts if @verbose
error err.message, message
end
-# NativeClient is special. The binary is cross-compiled. But runs on the build environment.
-# So RUBY_PLATFORM in this process is not useful to detect it.
-def nacl?
- @ruby and File.basename(@ruby.split(/\s/).first)['sel_ldr']
-end
-
def assert_check(testsrc, message = '', opt = '')
show_progress(message) {
result = get_result_string(testsrc, opt)
@@ -407,7 +342,6 @@ def get_result_string(src, opt = '')
begin
`#{@ruby} -W0 #{opt} #{filename}`
ensure
- raise Interrupt if $?.signaled? && $?.termsig == Signal.list["INT"]
raise CoreDumpError, "core dumped" if $? and $?.coredump?
end
else
@@ -415,27 +349,6 @@ def get_result_string(src, opt = '')
end
end
-def with_stderr
- out = err = nil
- begin
- r, w = IO.pipe
- stderr = $stderr.dup
- $stderr.reopen(w)
- w.close
- reader = Thread.start {r.read}
- begin
- out = yield
- ensure
- $stderr.reopen(stderr)
- err = reader.value
- end
- ensure
- w.close rescue nil
- r.close rescue nil
- end
- return out, err
-end
-
def newtest
@location = File.basename(caller(2).first)
@count += 1
@@ -443,12 +356,7 @@ def newtest
end
def error(msg, additional_message)
- msg = "#{@failed}\##{@count} #{@location}#{@reset}: #{msg} #{additional_message}"
- if @tty
- $stderr.puts "#{@erase}#{msg}"
- else
- @errbuf.push msg
- end
+ @errbuf.push "\##{@count} #{@location}: #{msg} #{additional_message}"
@error += 1
end
diff --git a/bootstraptest/test_block.rb b/bootstraptest/test_block.rb
index 6a2ccfc6da..ea6768cc25 100644
--- a/bootstraptest/test_block.rb
+++ b/bootstraptest/test_block.rb
@@ -565,35 +565,3 @@ assert_normal_exit %q{
t.test_for_bug
}, '[ruby-core:14395]'
-assert_equal 'true', %q{
- class C0
- def foo
- block_given?
- end
- end
-
- class C1 < C0
- def foo
- super
- end
- end
-
- C1.new.foo{}
-}
-
-assert_equal 'true', %q{
- class C0
- def foo
- block_given?
- end
- end
-
- class C1 < C0
- def foo
- super()
- end
- end
-
- C1.new.foo{}
-}
-
diff --git a/bootstraptest/test_eval.rb b/bootstraptest/test_eval.rb
index bf7478006d..c347d50ac9 100644
--- a/bootstraptest/test_eval.rb
+++ b/bootstraptest/test_eval.rb
@@ -264,18 +264,24 @@ assert_equal 'ok', %q{
}, '[ruby-core:16794]'
assert_equal 'ok', %q{
- nil.instance_eval {
- def defd_using_instance_eval() :ok end
- }
- nil.defd_using_instance_eval
-}, '[ruby-core:28324]'
+ begin
+ nil.instance_eval {
+ def a() :a end
+ }
+ rescue TypeError
+ :ok
+ end
+}, '[ruby-core:16796]'
assert_equal 'ok', %q{
- nil.instance_exec {
- def defd_using_instance_exec() :ok end
- }
- nil.defd_using_instance_exec
-}, '[ruby-core:28324]'
+ begin
+ nil.instance_exec {
+ def a() :a end
+ }
+ rescue TypeError
+ :ok
+ end
+}, '[ruby-core:16796]'
assert_normal_exit %q{
eval("", method(:proc).call {}.binding)
@@ -310,15 +316,6 @@ assert_normal_exit %q{
end
begin
eval "class C; @@h = #{hash.inspect}; end"
+ rescue SystemStackError
end
}, '[ruby-core:25714]'
-
-assert_normal_exit %q{
- begin
- eval("# encoding:utf-16le\nfoo")
- rescue Exception => e
- p e
- RubyVM::InstructionSequence.compile("p:hello")
- end
-}, 'check escaping the internal value th->base_block'
-
diff --git a/bootstraptest/test_exception.rb b/bootstraptest/test_exception.rb
index 35c8d25e37..f7d5eeaa07 100644
--- a/bootstraptest/test_exception.rb
+++ b/bootstraptest/test_exception.rb
@@ -414,19 +414,3 @@ assert_equal 'exception class/object expected', %q{
e.message
end
}, '[ruby-core:24767]'
-
-assert_equal 'ok', %q{
- class C
- def ===(o)
- true
- end
- end
- begin
- begin
- raise
- rescue C.new
- end
- rescue TypeError
- :ok
- end
-}
diff --git a/bootstraptest/test_flow.rb b/bootstraptest/test_flow.rb
index 0390062a24..fc93a5a46c 100644
--- a/bootstraptest/test_flow.rb
+++ b/bootstraptest/test_flow.rb
@@ -562,30 +562,3 @@ assert_equal %Q{ENSURE\n}, %q{
assert_equal "false", src + %q{e.all? {false}}, bug
assert_equal "true", src + %q{e.include?(:foo)}, bug
end
-
-assert_equal "foo", %q{
- class Bug6460
- def m1
- m2 {|e|
- return e
- }
- end
-
- def m2
- begin
- yield :foo
- ensure
- begin
- begin
- yield :foo
- ensure
- Proc.new
- raise ''
- end
- rescue
- end
- end
- end
- end
- Bug6460.new.m1
-}, '[ruby-dev:46372]'
diff --git a/bootstraptest/test_io.rb b/bootstraptest/test_io.rb
index f7360f34b3..7304aebc26 100644
--- a/bootstraptest/test_io.rb
+++ b/bootstraptest/test_io.rb
@@ -53,7 +53,7 @@ assert_equal 'ok', %q{
STDIN.reopen(rw)
STDIN.reopen(save)
rw.close
- File.unlink(tmpname) unless RUBY_PLATFORM['nacl']
+ File.unlink(tmpname)
:ok
}
@@ -70,16 +70,10 @@ assert_equal 'ok', %q{
STDIN.print "a"
STDIN.reopen(save)
rw.close
- File.unlink(tmpname) unless RUBY_PLATFORM['nacl']
+ File.unlink(tmpname)
:ok
}
-assert_equal 'ok', %q{
- dup = STDIN.dup
- dupfd = dup.fileno
- dupfd == STDIN.dup.fileno ? :ng : :ok
-}, '[ruby-dev:46834]'
-
assert_normal_exit %q{
ARGF.set_encoding "foo"
}
diff --git a/bootstraptest/test_literal.rb b/bootstraptest/test_literal.rb
index b95a2f2d0a..ab028e2c1e 100644
--- a/bootstraptest/test_literal.rb
+++ b/bootstraptest/test_literal.rb
@@ -65,10 +65,8 @@ assert_equal ':a3c', ':"a#{1+2}c".inspect'
assert_equal 'Symbol', ':"a#{1+2}c".class'
# xstring
-unless nacl?
- assert_equal "foo\n", %q(`echo foo`)
- assert_equal "foo\n", %q(s = "foo"; `echo #{s}`)
-end
+assert_equal "foo\n", %q(`echo foo`)
+assert_equal "foo\n", %q(s = "foo"; `echo #{s}`)
# regexp
assert_equal '', '//.source'
@@ -202,30 +200,3 @@ assert_equal 'ok', %q{
assert_equal 'ok', %q{
"#{}o""#{}k""#{}"
}, '[ruby-core:25284]'
-
-assert_equal 'ok', %q{ # long array literal
- x = nil
- eval "a = [#{(1..10_000).map{'x'}.join(", ")}]"
- :ok
-}
-
-assert_equal 'ok', %q{ # long array literal (optimized)
- eval "a = [#{(1..10_000).to_a.join(", ")}]"
- :ok
-}
-
-assert_equal 'ok', %q{ # long hash literal
- x = nil
- eval "a = {#{(1..10_000).map{|n| "#{n} => x"}.join(', ')}}"
- :ok
-}
-
-assert_equal 'ok', %q{ # long hash literal (optimized)
- eval "a = {#{(1..10_000).map{|n| "#{n} => #{n}"}.join(', ')}}"
- :ok
-}
-
-assert_equal 'ok', %q{
- [print(:ok), exit] # void literal with side-effect
- :dummy
-}
diff --git a/bootstraptest/test_method.rb b/bootstraptest/test_method.rb
index 20dcc7a184..2baf33539d 100644
--- a/bootstraptest/test_method.rb
+++ b/bootstraptest/test_method.rb
@@ -1001,8 +1001,8 @@ assert_equal 'ok', %q{
assert_normal_exit %q{
begin
- Process.setrlimit(Process::RLIMIT_STACK, 4_206_592)
- # FreeBSD SEGVs this less than 4M + 12K bytes.
+ Process.setrlimit(Process::RLIMIT_STACK, 4_202_496)
+ # FreeBSD fails this less than 4M + 8K bytes.
rescue Exception
exit
end
@@ -1184,81 +1184,3 @@ assert_equal 'ok', %q{
'ok'
}, '[ruby-core:30534]'
-# should not cache when splat
-assert_equal 'ok', %q{
- class C
- attr_reader :a
- def initialize
- @a = 1
- end
- end
-
- def m *args
- C.new.a(*args)
- end
-
- m()
- begin
- m(1)
- rescue ArgumentError
- 'ok'
- end
-}
-
-assert_equal 'DC', %q{
- $result = []
-
- class C
- def foo *args
- $result << 'C'
- end
- end
- class D
- def foo *args
- $result << 'D'
- end
- end
-
- o1 = $o1 = C.new
- o2 = $o2 = D.new
-
- args = Object.new
- def args.to_a
- test1 $o2, nil
- []
- end
- def test1 o, args
- o.foo(*args)
- end
- test1 o1, args
- $result.join
-}
-
-assert_equal 'DC', %q{
- $result = []
-
- class C
- def foo *args
- $result << 'C'
- end
- end
- class D
- def foo *args
- $result << 'D'
- end
- end
-
- o1 = $o1 = C.new
- o2 = $o2 = D.new
-
- block = Object.new
- def block.to_proc
- test2 $o2, %w(a, b, c), nil
- Proc.new{}
- end
- def test2 o, args, block
- o.foo(*args, &block)
- end
- test2 o1, [], block
- $result.join
-}
diff --git a/bootstraptest/test_proc.rb b/bootstraptest/test_proc.rb
index c23394e8d2..3d347004ea 100644
--- a/bootstraptest/test_proc.rb
+++ b/bootstraptest/test_proc.rb
@@ -456,28 +456,3 @@ assert_equal 'ok', %q{
end
}
-assert_equal 'ok', %q{
- def x
- binding
- end
- b = x{|a| a }
- b.eval('yield("ok")')
-}, '[Bug #5634]'
-
-assert_equal 'ok', %q{
- def x
- binding
- end
- eval("x { 'ok' }").eval "yield"
-}, '[Bug #5634]'
-
-assert_equal 'ok', %q{
- def x
- binding
- end
- def m
- x{ 'ok' }
- end
- eval('yield', m)
-}, '[Bug #5634]'
-
diff --git a/bootstraptest/test_syntax.rb b/bootstraptest/test_syntax.rb
index 80eaa6416d..ef1c622ace 100644
--- a/bootstraptest/test_syntax.rb
+++ b/bootstraptest/test_syntax.rb
@@ -529,7 +529,7 @@ def assert_syntax_error expected, code, message = ''
end
assert_syntax_error "unterminated string meets end of file", '().."', '[ruby-dev:29732]'
assert_equal %q{[]}, %q{$&;[]}, '[ruby-dev:31068]'
-assert_syntax_error "syntax error, unexpected *, expecting '}'", %q{{*0}}, '[ruby-dev:31072]'
+assert_syntax_error "syntax error, unexpected tSTAR, expecting '}'", %q{{*0}}, '[ruby-dev:31072]'
assert_syntax_error "`@0' is not allowed as an instance variable name", %q{@0..0}, '[ruby-dev:31095]'
assert_syntax_error "identifier $00 is not valid to get", %q{$00..0}, '[ruby-dev:31100]'
assert_syntax_error "identifier $00 is not valid to set", %q{0..$00=1}
@@ -541,7 +541,7 @@ assert_equal %q{1}, %q{
assert_syntax_error "Can't set variable $1", %q{0..$1=1}, '[ruby-dev:31118]'
assert_valid_syntax %q{1.times{1+(1&&next)}}, '[ruby-dev:31119]'
assert_valid_syntax %q{x=-1;loop{x+=1&&redo if (x+=1).zero?}}, '[ruby-dev:31119]'
-assert_syntax_error %q{syntax error, unexpected end-of-input}, %q{!}, '[ruby-dev:31243]'
+assert_syntax_error %q{syntax error, unexpected $end}, %q{!}, '[ruby-dev:31243]'
assert_equal %q{[nil]}, %q{[()]}, '[ruby-dev:31252]'
assert_equal %q{true}, %q{!_=()}, '[ruby-dev:31263]'
assert_equal 'ok', %q{while true; redo; end if 1 == 2; :ok}, '[ruby-dev:31360]'
diff --git a/bootstraptest/test_thread.rb b/bootstraptest/test_thread.rb
index 121def8b42..2494cccbf3 100644
--- a/bootstraptest/test_thread.rb
+++ b/bootstraptest/test_thread.rb
@@ -189,18 +189,18 @@ assert_equal %q{11}, %q{
}.value + Thread.current[:a]
}
assert_normal_exit %q{
- begin
- 100.times do |i|
- begin
- th = Thread.start(Thread.current) {|u| u.raise }
- raise
- rescue
- ensure
- th.join
- end
+begin
+ 100.times do |i|
+ begin
+ th = Thread.start(Thread.current) {|u| u.raise }
+ raise
+ rescue
+ ensure
+ th.join
end
- rescue
end
+rescue
+end
}, '[ruby-dev:31371]'
assert_equal 'true', %{
@@ -267,7 +267,7 @@ assert_normal_exit %q{
assert_equal 'ok', %q{
def m
- t = Thread.new { while true; // =~ "" end }
+ t = Thread.new { while true do // =~ "" end }
sleep 0.1
10.times {
if /((ab)*(ab)*)*(b)/ =~ "ab"*7
@@ -380,9 +380,7 @@ assert_equal 'ok', %q{
assert_equal 'ok', %q{
begin
- 100.times{
- (1..100).map{ Thread.new(true) {|x| x == false } }.each{|th| th.join}
- }
+ 10000.times { Thread.new(true) {|x| x == false } }
rescue NoMemoryError, StandardError
end
:ok
diff --git a/class.c b/class.c
index 8a0bba5a32..df19812d15 100644
--- a/class.c
+++ b/class.c
@@ -49,16 +49,15 @@ static ID id_attached;
static VALUE
class_alloc(VALUE flags, VALUE klass)
{
- NEWOBJ_OF(obj, struct RClass, klass, flags);
- obj->ptr = ALLOC(rb_classext_t);
+ rb_classext_t *ext = ALLOC(rb_classext_t);
+ NEWOBJ(obj, struct RClass);
+ OBJSETUP(obj, klass, flags);
+ obj->ptr = ext;
RCLASS_IV_TBL(obj) = 0;
RCLASS_CONST_TBL(obj) = 0;
RCLASS_M_TBL(obj) = 0;
RCLASS_SUPER(obj) = 0;
- RCLASS_ORIGIN(obj) = (VALUE)obj;
RCLASS_IV_INDEX_TBL(obj) = 0;
- RCLASS_REFINED_CLASS(obj) = Qnil;
- RCLASS_EXT(obj)->allocator = 0;
return (VALUE)obj;
}
@@ -94,7 +93,7 @@ rb_class_boot(VALUE super)
void
rb_check_inheritable(VALUE super)
{
- if (!RB_TYPE_P(super, T_CLASS)) {
+ if (TYPE(super) != T_CLASS) {
rb_raise(rb_eTypeError, "superclass must be a Class (%s given)",
rb_obj_classname(super));
}
@@ -121,29 +120,27 @@ rb_class_new(VALUE super)
return rb_class_boot(super);
}
-static void
-clone_method(VALUE klass, ID mid, const rb_method_entry_t *me)
+struct clone_method_data {
+ st_table *tbl;
+ VALUE klass;
+};
+
+VALUE rb_iseq_clone(VALUE iseqval, VALUE newcbase);
+
+static int
+clone_method(ID mid, const rb_method_entry_t *me, struct clone_method_data *data)
{
VALUE newiseqval;
if (me->def && me->def->type == VM_METHOD_TYPE_ISEQ) {
rb_iseq_t *iseq;
- NODE *new_cref;
- newiseqval = rb_iseq_clone(me->def->body.iseq->self, klass);
+ newiseqval = rb_iseq_clone(me->def->body.iseq->self, data->klass);
GetISeqPtr(newiseqval, iseq);
- rb_vm_rewrite_cref_stack(me->def->body.iseq->cref_stack, me->klass, klass, &new_cref);
- iseq->cref_stack = new_cref;
- rb_add_method(klass, mid, VM_METHOD_TYPE_ISEQ, iseq, me->flag);
+ rb_add_method(data->klass, mid, VM_METHOD_TYPE_ISEQ, iseq, me->flag);
RB_GC_GUARD(newiseqval);
}
else {
- rb_method_entry_set(klass, mid, me, me->flag);
+ rb_method_entry_set(data->klass, mid, me, me->flag);
}
-}
-
-static int
-clone_method_i(st_data_t key, st_data_t value, st_data_t data)
-{
- clone_method((VALUE)data, (ID)key, (const rb_method_entry_t *)value);
return ST_CONTINUE;
}
@@ -162,96 +159,86 @@ clone_const_i(st_data_t key, st_data_t value, st_data_t data)
return clone_const((ID)key, (const rb_const_entry_t *)value, (st_table *)data);
}
-static void
-class_init_copy_check(VALUE clone, VALUE orig)
-{
- if (orig == rb_cBasicObject) {
- rb_raise(rb_eTypeError, "can't copy the root class");
- }
- if (RCLASS_SUPER(clone) != 0 || clone == rb_cBasicObject) {
- rb_raise(rb_eTypeError, "already initialized class");
- }
- if (FL_TEST(orig, FL_SINGLETON)) {
- rb_raise(rb_eTypeError, "can't copy singleton class");
- }
-}
-
/* :nodoc: */
VALUE
rb_mod_init_copy(VALUE clone, VALUE orig)
{
- if (RB_TYPE_P(clone, T_CLASS)) {
- class_init_copy_check(clone, orig);
- }
- if (!OBJ_INIT_COPY(clone, orig)) return clone;
+ rb_obj_init_copy(clone, orig);
if (!FL_TEST(CLASS_OF(clone), FL_SINGLETON)) {
RBASIC(clone)->klass = rb_singleton_class_clone(orig);
rb_singleton_class_attached(RBASIC(clone)->klass, (VALUE)clone);
}
RCLASS_SUPER(clone) = RCLASS_SUPER(orig);
- RCLASS_EXT(clone)->allocator = RCLASS_EXT(orig)->allocator;
- if (RCLASS_IV_TBL(clone)) {
- st_free_table(RCLASS_IV_TBL(clone));
- RCLASS_IV_TBL(clone) = 0;
- }
- if (RCLASS_CONST_TBL(clone)) {
- rb_free_const_table(RCLASS_CONST_TBL(clone));
- RCLASS_CONST_TBL(clone) = 0;
- }
- if (RCLASS_M_TBL(clone)) {
- rb_free_m_table(RCLASS_M_TBL(clone));
- RCLASS_M_TBL(clone) = 0;
- }
if (RCLASS_IV_TBL(orig)) {
st_data_t id;
+ if (RCLASS_IV_TBL(clone)) {
+ st_free_table(RCLASS_IV_TBL(clone));
+ }
RCLASS_IV_TBL(clone) = st_copy(RCLASS_IV_TBL(orig));
- CONST_ID(id, "__tmp_classpath__");
- st_delete(RCLASS_IV_TBL(clone), &id, 0);
CONST_ID(id, "__classpath__");
st_delete(RCLASS_IV_TBL(clone), &id, 0);
CONST_ID(id, "__classid__");
st_delete(RCLASS_IV_TBL(clone), &id, 0);
}
if (RCLASS_CONST_TBL(orig)) {
-
+ if (RCLASS_CONST_TBL(clone)) {
+ rb_free_const_table(RCLASS_CONST_TBL(clone));
+ }
RCLASS_CONST_TBL(clone) = st_init_numtable();
st_foreach(RCLASS_CONST_TBL(orig), clone_const_i, (st_data_t)RCLASS_CONST_TBL(clone));
}
if (RCLASS_M_TBL(orig)) {
- RCLASS_M_TBL(clone) = st_init_numtable();
- st_foreach(RCLASS_M_TBL(orig), clone_method_i, (st_data_t)clone);
+ struct clone_method_data data;
+
+ if (RCLASS_M_TBL(clone)) {
+ rb_free_m_table(RCLASS_M_TBL(clone));
+ }
+ data.tbl = RCLASS_M_TBL(clone) = st_init_numtable();
+ data.klass = clone;
+ st_foreach(RCLASS_M_TBL(orig), clone_method,
+ (st_data_t)&data);
}
return clone;
}
+/* :nodoc: */
VALUE
-rb_singleton_class_clone(VALUE obj)
+rb_class_init_copy(VALUE clone, VALUE orig)
{
- return rb_singleton_class_clone_and_attach(obj, Qundef);
+ if (orig == rb_cBasicObject) {
+ rb_raise(rb_eTypeError, "can't copy the root class");
+ }
+ if (RCLASS_SUPER(clone) != 0 || clone == rb_cBasicObject) {
+ rb_raise(rb_eTypeError, "already initialized class");
+ }
+ if (FL_TEST(orig, FL_SINGLETON)) {
+ rb_raise(rb_eTypeError, "can't copy singleton class");
+ }
+ return rb_mod_init_copy(clone, orig);
}
VALUE
-rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach)
+rb_singleton_class_clone(VALUE obj)
{
VALUE klass = RBASIC(obj)->klass;
if (!FL_TEST(klass, FL_SINGLETON))
return klass;
else {
+ struct clone_method_data data;
/* copy singleton(unnamed) class */
- VALUE clone = class_alloc(RBASIC(klass)->flags, 0);
+ VALUE clone = class_alloc((RBASIC(klass)->flags & ~(FL_MARK)), 0);
if (BUILTIN_TYPE(obj) == T_CLASS) {
- RBASIC(clone)->klass = clone;
+ RBASIC(clone)->klass = (VALUE)clone;
}
else {
RBASIC(clone)->klass = rb_singleton_class_clone(klass);
}
RCLASS_SUPER(clone) = RCLASS_SUPER(klass);
- RCLASS_EXT(clone)->allocator = RCLASS_EXT(klass)->allocator;
if (RCLASS_IV_TBL(klass)) {
RCLASS_IV_TBL(clone) = st_copy(RCLASS_IV_TBL(klass));
}
@@ -259,14 +246,14 @@ rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach)
RCLASS_CONST_TBL(clone) = st_init_numtable();
st_foreach(RCLASS_CONST_TBL(klass), clone_const_i, (st_data_t)RCLASS_CONST_TBL(clone));
}
- if (attach != Qundef) {
- rb_singleton_class_attached(clone, attach);
- }
RCLASS_M_TBL(clone) = st_init_numtable();
- st_foreach(RCLASS_M_TBL(klass), clone_method_i, (st_data_t)clone);
- rb_singleton_class_attached(RBASIC(clone)->klass, clone);
+ data.tbl = RCLASS_M_TBL(clone);
+ data.klass = (VALUE)clone;
+ st_foreach(RCLASS_M_TBL(klass), clone_method,
+ (st_data_t)&data);
+ rb_singleton_class_attached(RBASIC(clone)->klass, (VALUE)clone);
FL_SET(clone, FL_SINGLETON);
- return clone;
+ return (VALUE)clone;
}
}
@@ -296,14 +283,6 @@ rb_singleton_class_attached(VALUE klass, VALUE obj)
*/
#define META_CLASS_OF_CLASS_CLASS_P(k) (METACLASS_OF(k) == (k))
-/*!
- * whether k has a metaclass
- * @retval 1 if \a k has a metaclass
- * @retval 0 otherwise
- */
-#define HAVE_METACLASS_P(k) \
- (FL_TEST(METACLASS_OF(k), FL_SINGLETON) && \
- rb_ivar_get(METACLASS_OF(k), id_attached) == (k))
/*!
* ensures \a klass belongs to its own eigenclass.
@@ -313,7 +292,7 @@ rb_singleton_class_attached(VALUE klass, VALUE obj)
* @note this macro creates a new eigenclass if necessary.
*/
#define ENSURE_EIGENCLASS(klass) \
- (HAVE_METACLASS_P(klass) ? METACLASS_OF(klass) : make_metaclass(klass))
+ (rb_ivar_get(METACLASS_OF(klass), id_attached) == (klass) ? METACLASS_OF(klass) : make_metaclass(klass))
/*!
@@ -493,7 +472,7 @@ rb_define_class(const char *name, VALUE super)
id = rb_intern(name);
if (rb_const_defined(rb_cObject, id)) {
klass = rb_const_get(rb_cObject, id);
- if (!RB_TYPE_P(klass, T_CLASS)) {
+ if (TYPE(klass) != T_CLASS) {
rb_raise(rb_eTypeError, "%s is not a class", name);
}
if (rb_class_real(RCLASS_SUPER(klass)) != super) {
@@ -560,7 +539,7 @@ rb_define_class_id_under(VALUE outer, ID id, VALUE super)
if (rb_const_defined_at(outer, id)) {
klass = rb_const_get_at(outer, id);
- if (!RB_TYPE_P(klass, T_CLASS)) {
+ if (TYPE(klass) != T_CLASS) {
rb_raise(rb_eTypeError, "%s is not a class", rb_id2name(id));
}
if (rb_class_real(RCLASS_SUPER(klass)) != super) {
@@ -611,7 +590,7 @@ rb_define_module(const char *name)
id = rb_intern(name);
if (rb_const_defined(rb_cObject, id)) {
module = rb_const_get(rb_cObject, id);
- if (RB_TYPE_P(module, T_MODULE))
+ if (TYPE(module) == T_MODULE)
return module;
rb_raise(rb_eTypeError, "%s is not a module", rb_obj_classname(module));
}
@@ -635,7 +614,7 @@ rb_define_module_id_under(VALUE outer, ID id)
if (rb_const_defined_at(outer, id)) {
module = rb_const_get_at(outer, id);
- if (RB_TYPE_P(module, T_MODULE))
+ if (TYPE(module) == T_MODULE)
return module;
rb_raise(rb_eTypeError, "%s::%s is not a module",
rb_class2name(outer), rb_obj_classname(module));
@@ -648,8 +627,8 @@ rb_define_module_id_under(VALUE outer, ID id)
return module;
}
-VALUE
-rb_include_class_new(VALUE module, VALUE super)
+static VALUE
+include_class_new(VALUE module, VALUE super)
{
VALUE klass = class_alloc(T_ICLASS, rb_cClass);
@@ -664,9 +643,9 @@ rb_include_class_new(VALUE module, VALUE super)
}
RCLASS_IV_TBL(klass) = RCLASS_IV_TBL(module);
RCLASS_CONST_TBL(klass) = RCLASS_CONST_TBL(module);
- RCLASS_M_TBL(klass) = RCLASS_M_TBL(RCLASS_ORIGIN(module));
+ RCLASS_M_TBL(klass) = RCLASS_M_TBL(module);
RCLASS_SUPER(klass) = super;
- if (RB_TYPE_P(module, T_ICLASS)) {
+ if (TYPE(module) == T_ICLASS) {
RBASIC(klass)->klass = RBASIC(module)->klass;
}
else {
@@ -678,11 +657,10 @@ rb_include_class_new(VALUE module, VALUE super)
return (VALUE)klass;
}
-static int include_modules_at(const VALUE klass, VALUE c, VALUE module);
-
void
rb_include_module(VALUE klass, VALUE module)
{
+ VALUE p, c;
int changed = 0;
rb_frozen_class_p(klass);
@@ -690,39 +668,17 @@ rb_include_module(VALUE klass, VALUE module)
rb_secure(4);
}
- if (!RB_TYPE_P(module, T_MODULE)) {
+ if (TYPE(module) != T_MODULE) {
Check_Type(module, T_MODULE);
}
OBJ_INFECT(klass, module);
-
- changed = include_modules_at(klass, RCLASS_ORIGIN(klass), module);
- if (changed < 0)
- rb_raise(rb_eArgError, "cyclic include detected");
- if (changed) rb_clear_cache();
-}
-
-static int
-add_refined_method_entry_i(st_data_t key, st_data_t value, st_data_t data)
-{
- rb_add_refined_method_entry((VALUE) data, (ID) key);
- return ST_CONTINUE;
-}
-
-static int
-include_modules_at(const VALUE klass, VALUE c, VALUE module)
-{
- VALUE p;
- int changed = 0;
- const st_table *const klass_m_tbl = RCLASS_M_TBL(RCLASS_ORIGIN(klass));
-
+ c = klass;
while (module) {
int superclass_seen = FALSE;
- if (RCLASS_ORIGIN(module) != module)
- goto skip;
- if (klass_m_tbl && klass_m_tbl == RCLASS_M_TBL(module))
- return -1;
+ if (RCLASS_M_TBL(klass) == RCLASS_M_TBL(module))
+ rb_raise(rb_eArgError, "cyclic include detected");
/* ignore if the module included already in superclasses */
for (p = RCLASS_SUPER(klass); p; p = RCLASS_SUPER(p)) {
switch (BUILTIN_TYPE(p)) {
@@ -739,87 +695,13 @@ include_modules_at(const VALUE klass, VALUE c, VALUE module)
break;
}
}
- c = RCLASS_SUPER(c) = rb_include_class_new(module, RCLASS_SUPER(c));
- if (FL_TEST(klass, RMODULE_IS_REFINEMENT)) {
- VALUE refined_class =
- rb_refinement_module_get_refined_class(klass);
-
- st_foreach(RMODULE_M_TBL(module), add_refined_method_entry_i,
- (st_data_t) refined_class);
- FL_SET(c, RMODULE_INCLUDED_INTO_REFINEMENT);
- }
+ c = RCLASS_SUPER(c) = include_class_new(module, RCLASS_SUPER(c));
if (RMODULE_M_TBL(module) && RMODULE_M_TBL(module)->num_entries)
changed = 1;
- if (RMODULE_CONST_TBL(module) && RMODULE_CONST_TBL(module)->num_entries)
- changed = 1;
skip:
module = RCLASS_SUPER(module);
}
-
- return changed;
-}
-
-static int
-move_refined_method(st_data_t key, st_data_t value, st_data_t data)
-{
- rb_method_entry_t *me = (rb_method_entry_t *) value;
- st_table *tbl = (st_table *) data;
-
- if (me->def->type == VM_METHOD_TYPE_REFINED) {
- if (me->def->body.orig_me) {
- rb_method_entry_t *orig_me = me->def->body.orig_me, *new_me;
- me->def->body.orig_me = NULL;
- new_me = ALLOC(rb_method_entry_t);
- *new_me = *me;
- st_add_direct(tbl, key, (st_data_t) new_me);
- *me = *orig_me;
- xfree(orig_me);
- return ST_CONTINUE;
- }
- else {
- st_add_direct(tbl, key, (st_data_t) me);
- return ST_DELETE;
- }
- }
- else {
- return ST_CONTINUE;
- }
-}
-
-void
-rb_prepend_module(VALUE klass, VALUE module)
-{
- void rb_vm_check_redefinition_by_prepend(VALUE klass);
- VALUE origin;
- int changed = 0;
-
- rb_frozen_class_p(klass);
- if (!OBJ_UNTRUSTED(klass)) {
- rb_secure(4);
- }
-
- Check_Type(module, T_MODULE);
-
- OBJ_INFECT(klass, module);
-
- origin = RCLASS_ORIGIN(klass);
- if (origin == klass) {
- origin = class_alloc(T_ICLASS, klass);
- RCLASS_SUPER(origin) = RCLASS_SUPER(klass);
- RCLASS_SUPER(klass) = origin;
- RCLASS_ORIGIN(klass) = origin;
- RCLASS_M_TBL(origin) = RCLASS_M_TBL(klass);
- RCLASS_M_TBL(klass) = st_init_numtable();
- st_foreach(RCLASS_M_TBL(origin), move_refined_method,
- (st_data_t) RCLASS_M_TBL(klass));
- }
- changed = include_modules_at(klass, klass, module);
- if (changed < 0)
- rb_raise(rb_eArgError, "cyclic prepend detected");
- if (changed) {
- rb_clear_cache();
- rb_vm_check_redefinition_by_prepend(klass);
- }
+ if (changed) rb_clear_cache();
}
/*
@@ -844,13 +726,10 @@ rb_mod_included_modules(VALUE mod)
{
VALUE ary = rb_ary_new();
VALUE p;
- VALUE origin = RCLASS_ORIGIN(mod);
for (p = RCLASS_SUPER(mod); p; p = RCLASS_SUPER(p)) {
- if (p != origin && BUILTIN_TYPE(p) == T_ICLASS) {
- VALUE m = RBASIC(p)->klass;
- if (RB_TYPE_P(m, T_MODULE))
- rb_ary_push(ary, m);
+ if (BUILTIN_TYPE(p) == T_ICLASS) {
+ rb_ary_push(ary, RBASIC(p)->klass);
}
}
return ary;
@@ -916,7 +795,7 @@ rb_mod_ancestors(VALUE mod)
if (BUILTIN_TYPE(p) == T_ICLASS) {
rb_ary_push(ary, RBASIC(p)->klass);
}
- else if (p == RCLASS_ORIGIN(p)) {
+ else {
rb_ary_push(ary, p);
}
}
@@ -971,32 +850,25 @@ ins_methods_pub_i(st_data_t name, st_data_t type, st_data_t ary)
return ins_methods_push((ID)name, (long)type, (VALUE)ary, NOEX_PUBLIC);
}
-struct method_entry_arg {
- st_table *list;
- int recur;
-};
-
static int
method_entry_i(st_data_t key, st_data_t value, st_data_t data)
{
const rb_method_entry_t *me = (const rb_method_entry_t *)value;
- struct method_entry_arg *arg = (struct method_entry_arg *)data;
+ st_table *list = (st_table *)data;
long type;
- if (me && me->def->type == VM_METHOD_TYPE_REFINED) {
- VALUE klass = me->klass;
- me = rb_resolve_refined_method(Qnil, me, NULL);
- if (!me) return ST_CONTINUE;
- if (!arg->recur && me->klass != klass) return ST_CONTINUE;
+ if ((ID)key == ID_ALLOCATOR) {
+ return ST_CONTINUE;
}
- if (!st_lookup(arg->list, key, 0)) {
+
+ if (!st_lookup(list, key, 0)) {
if (UNDEFINED_METHOD_ENTRY_P(me)) {
type = -1; /* none */
}
else {
type = VISI(me->flag);
}
- st_add_direct(arg->list, key, type);
+ st_add_direct(list, key, type);
}
return ST_CONTINUE;
}
@@ -1005,8 +877,8 @@ static VALUE
class_instance_method_list(int argc, VALUE *argv, VALUE mod, int obj, int (*func) (st_data_t, st_data_t, st_data_t))
{
VALUE ary;
- int recur, prepended = 0;
- struct method_entry_arg me_arg;
+ int recur;
+ st_table *list;
if (argc == 0) {
recur = TRUE;
@@ -1017,22 +889,16 @@ class_instance_method_list(int argc, VALUE *argv, VALUE mod, int obj, int (*func
recur = RTEST(r);
}
- if (!recur && RCLASS_ORIGIN(mod) != mod) {
- mod = RCLASS_ORIGIN(mod);
- prepended = 1;
- }
-
- me_arg.list = st_init_numtable();
- me_arg.recur = recur;
+ list = st_init_numtable();
for (; mod; mod = RCLASS_SUPER(mod)) {
- if (RCLASS_M_TBL(mod)) st_foreach(RCLASS_M_TBL(mod), method_entry_i, (st_data_t)&me_arg);
- if (BUILTIN_TYPE(mod) == T_ICLASS && !prepended) continue;
+ st_foreach(RCLASS_M_TBL(mod), method_entry_i, (st_data_t)list);
+ if (BUILTIN_TYPE(mod) == T_ICLASS) continue;
if (obj && FL_TEST(mod, FL_SINGLETON)) continue;
if (!recur) break;
}
ary = rb_ary_new();
- st_foreach(me_arg.list, func, ary);
- st_free_table(me_arg.list);
+ st_foreach(list, func, ary);
+ st_free_table(list);
return ary;
}
@@ -1125,13 +991,11 @@ rb_class_public_instance_methods(int argc, VALUE *argv, VALUE mod)
/*
* call-seq:
- * obj.methods(all=true) -> array
+ * obj.methods -> array
*
* Returns a list of the names of public and protected methods of
* <i>obj</i>. This will include all the methods accessible in
* <i>obj</i>'s ancestors.
- * If the <i>all</i> parameter is set to <code>false</code>, only those methods
- * in the receiver will be listed.
*
* class Klass
* def klass_method()
@@ -1149,6 +1013,9 @@ rb_obj_methods(int argc, VALUE *argv, VALUE obj)
{
retry:
if (argc == 0) {
+ VALUE args[1];
+
+ args[0] = Qtrue;
return class_instance_method_list(argc, argv, CLASS_OF(obj), 1, ins_methods_i);
}
else {
@@ -1244,9 +1111,8 @@ rb_obj_public_methods(int argc, VALUE *argv, VALUE obj)
VALUE
rb_obj_singleton_methods(int argc, VALUE *argv, VALUE obj)
{
- VALUE recur, ary, klass, origin;
- struct method_entry_arg me_arg;
- st_table *mtbl;
+ VALUE recur, ary, klass;
+ st_table *list;
if (argc == 0) {
recur = Qtrue;
@@ -1255,24 +1121,20 @@ rb_obj_singleton_methods(int argc, VALUE *argv, VALUE obj)
rb_scan_args(argc, argv, "01", &recur);
}
klass = CLASS_OF(obj);
- origin = RCLASS_ORIGIN(klass);
- me_arg.list = st_init_numtable();
- me_arg.recur = RTEST(recur);
+ list = st_init_numtable();
if (klass && FL_TEST(klass, FL_SINGLETON)) {
- if ((mtbl = RCLASS_M_TBL(origin)) != 0)
- st_foreach(mtbl, method_entry_i, (st_data_t)&me_arg);
+ st_foreach(RCLASS_M_TBL(klass), method_entry_i, (st_data_t)list);
klass = RCLASS_SUPER(klass);
}
if (RTEST(recur)) {
- while (klass && (FL_TEST(klass, FL_SINGLETON) || RB_TYPE_P(klass, T_ICLASS))) {
- if (klass != origin && (mtbl = RCLASS_M_TBL(klass)) != 0)
- st_foreach(mtbl, method_entry_i, (st_data_t)&me_arg);
+ while (klass && (FL_TEST(klass, FL_SINGLETON) || TYPE(klass) == T_ICLASS)) {
+ st_foreach(RCLASS_M_TBL(klass), method_entry_i, (st_data_t)list);
klass = RCLASS_SUPER(klass);
}
}
ary = rb_ary_new();
- st_foreach(me_arg.list, ins_methods_i, ary);
- st_free_table(me_arg.list);
+ st_foreach(list, ins_methods_i, ary);
+ st_free_table(list);
return ary;
}
@@ -1378,20 +1240,6 @@ rb_undef_method(VALUE klass, const char *name)
}\
} while (0)
-static inline VALUE
-special_singleton_class_of(VALUE obj)
-{
- SPECIAL_SINGLETON(Qnil, rb_cNilClass);
- SPECIAL_SINGLETON(Qfalse, rb_cFalseClass);
- SPECIAL_SINGLETON(Qtrue, rb_cTrueClass);
- return Qnil;
-}
-
-VALUE
-rb_special_singleton_class(VALUE obj)
-{
- return special_singleton_class_of(obj);
-}
/*!
* \internal
@@ -1407,20 +1255,14 @@ singleton_class_of(VALUE obj)
{
VALUE klass;
- if (FIXNUM_P(obj) || FLONUM_P(obj) || SYMBOL_P(obj)) {
+ if (FIXNUM_P(obj) || SYMBOL_P(obj)) {
rb_raise(rb_eTypeError, "can't define singleton");
}
- if (SPECIAL_CONST_P(obj)) {
- klass = special_singleton_class_of(obj);
- if (NIL_P(klass))
- rb_bug("unknown immediate %p", (void *)obj);
- return klass;
- }
- else {
- enum ruby_value_type type = BUILTIN_TYPE(obj);
- if (type == T_FLOAT || type == T_BIGNUM) {
- rb_raise(rb_eTypeError, "can't define singleton");
- }
+ if (rb_special_const_p(obj)) {
+ SPECIAL_SINGLETON(Qnil, rb_cNilClass);
+ SPECIAL_SINGLETON(Qfalse, rb_cFalseClass);
+ SPECIAL_SINGLETON(Qtrue, rb_cTrueClass);
+ rb_bug("unknown immediate %p", (void *)obj);
}
if (FL_TEST(RBASIC(obj)->klass, FL_SINGLETON) &&
@@ -1472,7 +1314,7 @@ rb_singleton_class(VALUE obj)
VALUE klass = singleton_class_of(obj);
/* ensures an exposed class belongs to its own eigenclass */
- if (RB_TYPE_P(obj, T_CLASS)) (void)ENSURE_EIGENCLASS(klass);
+ if (TYPE(obj) == T_CLASS) (void)ENSURE_EIGENCLASS(klass);
return klass;
}
@@ -1557,7 +1399,7 @@ rb_define_attr(VALUE klass, const char *name, int read, int write)
int
rb_obj_basic_to_s_p(VALUE obj)
{
- const rb_method_entry_t *me = rb_method_entry(CLASS_OF(obj), rb_intern("to_s"), 0);
+ const rb_method_entry_t *me = rb_method_entry(CLASS_OF(obj), rb_intern("to_s"));
if (me && me->def && me->def->type == VM_METHOD_TYPE_CFUNC &&
me->def->body.cfunc.func == rb_any_to_s)
return 1;
@@ -1630,7 +1472,7 @@ rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...)
argc--;
}
else {
- hash = rb_check_hash_type(last);
+ hash = rb_check_convert_type(last, T_HASH, "Hash", "to_hash");
if (!NIL_P(hash))
argc--;
}
@@ -1688,12 +1530,18 @@ rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...)
}
va_end(vargs);
- if (argi < argc) {
- argc_error:
- rb_error_arity(argc, n_mand, f_var ? UNLIMITED_ARGUMENTS : n_mand + n_opt);
- }
+ if (argi < argc)
+ goto argc_error;
return argc;
+
+ argc_error:
+ if (0 < n_opt)
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for %d..%d%s)",
+ argc, n_mand, n_mand + n_opt, f_var ? "+" : "");
+ else
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for %d%s)",
+ argc, n_mand, f_var ? "+" : "");
}
/*!
diff --git a/common.mk b/common.mk
index 31b8700d2d..c9ef64111e 100644
--- a/common.mk
+++ b/common.mk
@@ -2,37 +2,40 @@ bin: $(PROGRAM) $(WPROGRAM)
lib: $(LIBRUBY)
dll: $(LIBRUBY_SO)
-.SUFFIXES: .inc .h .c .y .i .$(DTRACE_EXT)
+.SUFFIXES: .inc .h .c .y .i
# V=0 quiet, V=1 verbose. other values don't work.
V = 0
Q1 = $(V:1=)
Q = $(Q1:0=@)
+n=$(NULLCMD)
+ECHO1 = $(V:1=@$n)
ECHO = $(ECHO1:0=@echo)
-RUBYLIB = $(PATH_SEPARATOR)
+RUBYLIB = -
RUBYOPT = -
RUN_OPTS = --disable-gems
-SPEC_GIT_BASE = git://github.com/ruby
+SPEC_GIT_BASE = git://github.com/rubyspec
MSPEC_GIT_URL = $(SPEC_GIT_BASE)/mspec.git
RUBYSPEC_GIT_URL = $(SPEC_GIT_BASE)/rubyspec.git
STATIC_RUBY = static-ruby
EXTCONF = extconf.rb
+RBCONFIG = ./.rbconfig.time
LIBRUBY_EXTS = ./.libruby-with-ext.time
REVISION_H = ./.revision.time
PLATFORM_D = ./$(PLATFORM_DIR)/.time
RDOCOUT = $(EXTOUT)/rdoc
CAPIOUT = doc/capi
+ID_H_TARGET = -id.h-
DMYEXT = dmyext.$(OBJEXT)
NORMALMAINOBJ = main.$(OBJEXT)
MAINOBJ = $(NORMALMAINOBJ)
-EXTOBJS =
+EXTOBJS =
DLDOBJS = $(DMYEXT)
-EXTSOLIBS =
MINIOBJS = $(ARCHMINIOBJS) dmyencoding.$(OBJEXT) dmyversion.$(OBJEXT) miniprelude.$(OBJEXT)
ENC_MK = enc.mk
@@ -89,21 +92,18 @@ COMMONOBJS = array.$(OBJEXT) \
iseq.$(OBJEXT) \
vm.$(OBJEXT) \
vm_dump.$(OBJEXT) \
- vm_backtrace.$(OBJEXT) \
- vm_trace.$(OBJEXT) \
thread.$(OBJEXT) \
cont.$(OBJEXT) \
$(BUILTIN_ENCOBJS) \
$(BUILTIN_TRANSOBJS) \
$(MISSING)
-EXPORTOBJS = $(DLNOBJ) \
+EXPORTOBJS = dln.$(OBJEXT) \
encoding.$(OBJEXT) \
version.$(OBJEXT) \
$(COMMONOBJS)
OBJS = $(EXPORTOBJS) prelude.$(OBJEXT)
-ALLOBJS = $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(DMYEXT)
GOLFOBJS = goruby.$(OBJEXT) golf_prelude.$(OBJEXT)
@@ -120,7 +120,7 @@ SCRIPT_ARGS = --dest-dir="$(DESTDIR)" \
--make-flags="$(MAKEFLAGS)"
EXTMK_ARGS = $(SCRIPT_ARGS) --extension $(EXTS) --extstatic $(EXTSTATIC) \
--make-flags="V=$(V) MINIRUBY='$(MINIRUBY)'" --
-INSTRUBY = $(SUDO) $(RUNRUBY) -r./$(arch)-fake $(srcdir)/tool/rbinstall.rb
+INSTRUBY = $(SUDO) $(MINIRUBY) $(srcdir)/tool/rbinstall.rb
INSTRUBY_ARGS = $(SCRIPT_ARGS) \
--data-mode=$(INSTALL_DATA_MODE) \
--prog-mode=$(INSTALL_PROG_MODE) \
@@ -143,7 +143,7 @@ COMPILE_PRELUDE = $(MINIRUBY) -I$(srcdir) $(srcdir)/tool/compile_prelude.rb
all: showflags main docs
-main: showflags $(EXTSTATIC:static=lib)encs exts
+main: showflags encs exts
@$(NULLCMD)
.PHONY: showflags
@@ -169,17 +169,16 @@ showconfig:
exts: build-ext
EXTS_MK = exts.mk
-$(EXTS_MK): $(MKFILES) all-incs $(PREP) $(RBCONFIG) $(LIBRUBY)
- $(ECHO) generating makefile $@
- $(Q)$(MINIRUBY) $(srcdir)/ext/extmk.rb --make="$(MAKE)" --command-output=$(EXTS_MK) $(EXTMK_ARGS) configure
+$(EXTS_MK): $(MKFILES) incs $(PREP) $(RBCONFIG) $(LIBRUBY)
+ @$(MINIRUBY) $(srcdir)/ext/extmk.rb --make="$(MAKE)" --command-output=$(EXTS_MK) $(EXTMK_ARGS) configure
configure-ext: $(EXTS_MK)
build-ext: $(EXTS_MK)
- $(Q)$(MAKE) -f $(EXTS_MK) $(MFLAGS) $(EXTSTATIC) LIBRUBY_EXTS=$(LIBRUBY_EXTS) ENCOBJS="$(ENCOBJS)"
+ $(Q)$(MAKE) -f $(EXTS_MK) $(MFLAGS)
-$(MKMAIN_CMD): $(MKFILES) all-incs $(PREP) $(RBCONFIG) $(LIBRUBY)
- $(Q)$(MINIRUBY) $(srcdir)/ext/extmk.rb --make="$(MAKE)" --command-output=$@ $(EXTMK_ARGS)
+$(MKMAIN_CMD): $(MKFILES) incs $(PREP) $(RBCONFIG) $(LIBRUBY)
+ @$(MINIRUBY) $(srcdir)/ext/extmk.rb --make="$(MAKE)" --command-output=$@ $(EXTMK_ARGS)
prog: program wprogram
@@ -188,20 +187,18 @@ loadpath: $(PREP) PHONY
$(PREP): $(MKFILES)
-miniruby$(EXEEXT): config.status $(ALLOBJS) $(ARCHFILE) $(DTRACE_OBJ)
-
-objs: $(ALLOBJS)
+miniruby$(EXEEXT): config.status $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(DMYEXT) $(ARCHFILE)
GORUBY = go$(RUBY_INSTALL_NAME)
golf: $(LIBRUBY) $(GOLFOBJS) PHONY
$(Q) $(MAKE) $(MFLAGS) MAINOBJ="$(GOLFOBJS)" PROGRAM=$(GORUBY)$(EXEEXT) program
capi: $(CAPIOUT)/.timestamp PHONY
-$(CAPIOUT)/.timestamp: Doxyfile $(PREP)
- $(Q) $(MAKEDIRS) "$(@D)"
+doc/capi/.timestamp: Doxyfile $(PREP)
+ $(Q) $(MAKEDIRS) doc/capi
$(ECHO) generating capi
$(Q) $(DOXYGEN) -b
- $(Q) $(MINIRUBY) -e 'File.open(ARGV[0], "w"){|f| f.puts(Time.now)}' "$@"
+ $(Q) $(MINIRUBY) -e 'File.open("$(CAPIOUT)/.timestamp", "w"){|f| f.puts(Time.now)}'
Doxyfile: $(srcdir)/template/Doxyfile.tmpl $(PREP) $(srcdir)/tool/generic_erb.rb $(RBCONFIG)
$(ECHO) generating $@
@@ -211,9 +208,9 @@ Doxyfile: $(srcdir)/template/Doxyfile.tmpl $(PREP) $(srcdir)/tool/generic_erb.rb
program: showflags $(PROGRAM)
wprogram: showflags $(WPROGRAM)
-$(PROGRAM) $(WPROGRAM): $(LIBRUBY) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(SETUP) $(PREP)
+$(PROGRAM): $(LIBRUBY) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(SETUP) $(PREP)
-$(LIBRUBY_A): $(OBJS) $(MAINOBJ) $(DTRACE_OBJ) $(DTRACE_GLOMMED_OBJ) $(DMYEXT) $(ARCHFILE)
+$(LIBRUBY_A): $(OBJS) $(DMYEXT) $(ARCHFILE)
$(LIBRUBY_SO): $(OBJS) $(DLDOBJS) $(LIBRUBY_A) $(PREP) $(LIBRUBY_SO_UPDATE) $(BUILTIN_ENCOBJS)
@@ -221,11 +218,11 @@ $(LIBRUBY_EXTS):
@exit > $@
$(STATIC_RUBY)$(EXEEXT): $(MAINOBJ) $(DLDOBJS) $(EXTOBJS) $(LIBRUBY_A)
- $(Q)$(RM) $@
+ @$(RM) $@
$(PURIFY) $(CC) $(MAINOBJ) $(DLDOBJS) $(EXTOBJS) $(LIBRUBY_A) $(MAINLIBS) $(EXTLIBS) $(LIBS) $(OUTFLAG)$@ $(LDFLAGS) $(XLDFLAGS)
ruby.imp: $(EXPORTOBJS)
- $(Q)$(NM) -Pgp $(EXPORTOBJS) | \
+ @$(NM) -Pgp $(EXPORTOBJS) | \
awk 'BEGIN{print "#!"}; $$2~/^[BDT]$$/&&$$1!~/^(Init_|.*_threadptr_|\.)/{print $$1}' | \
sort -u -o $@
@@ -236,32 +233,32 @@ $(ruby_pc): $(srcdir)/template/ruby.pc.in config.status
install-all: docs pre-install-all do-install-all post-install-all
pre-install-all:: pre-install-local pre-install-ext pre-install-doc
-do-install-all: all
+do-install-all: $(PROGRAM)
$(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=all --rdoc-output="$(RDOCOUT)"
post-install-all:: post-install-local post-install-ext post-install-doc
@$(NULLCMD)
install-nodoc: pre-install-nodoc do-install-nodoc post-install-nodoc
pre-install-nodoc:: pre-install-local pre-install-ext
-do-install-nodoc: main
+do-install-nodoc: $(PREP)
$(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS)
post-install-nodoc:: post-install-local post-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: $(PROGRAM)
+do-install-local: $(PREP)
$(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=local
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: exts
+do-install-ext: $(PREP)
$(INSTRUBY) --make="$(MAKE)" $(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: main
+do-install-arch: $(PREP)
$(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=bin --install=ext-arch
post-install-arch:: post-install-bin post-install-ext-arch
@@ -273,7 +270,7 @@ 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: $(PROGRAM)
+do-install-bin: $(PREP)
$(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=bin
post-install-bin::
@$(NULLCMD)
@@ -287,14 +284,14 @@ post-install-lib::
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: exts
+do-install-ext-comm: $(PREP)
$(INSTRUBY) --make="$(MAKE)" $(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: exts
+do-install-ext-arch: $(PREP)
$(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=ext-arch
post-install-ext-arch::
@$(NULLCMD)
@@ -405,20 +402,13 @@ do-install-doc: $(PROGRAM)
post-install-doc::
@$(NULLCMD)
-install-gem: pre-install-gem do-install-gem post-install-gem
-pre-install-gem:: pre-install-bin pre-install-lib pre-install-man
-do-install-gem: $(PROGRAM)
- $(INSTRUBY) --make="$(MAKE)" $(INSTRUBY_ARGS) --install=gem
-post-install-gem::
- @$(NULLCMD)
-
rdoc: PHONY main
@echo Generating RDoc documentation
- $(Q) $(XRUBY) "$(srcdir)/bin/rdoc" --root "$(srcdir)" --page-dir "$(srcdir)/doc" --encoding=UTF-8 --no-force-update --all --ri --op "$(RDOCOUT)" --debug $(RDOCFLAGS) "$(srcdir)"
+ $(Q) $(XRUBY) "$(srcdir)/bin/rdoc" --encoding=UTF-8 --no-force-update --all --ri --op "$(RDOCOUT)" $(RDOCFLAGS) "$(srcdir)"
rdoc-coverage: PHONY main
@echo Generating RDoc coverage report
- $(Q) $(XRUBY) "$(srcdir)/bin/rdoc" --root "$(srcdir)" --encoding=UTF-8 --all --quiet -C $(RDOCFLAGS) "$(srcdir)"
+ $(Q) $(XRUBY) "$(srcdir)/bin/rdoc" --encoding=UTF-8 --all --quiet -C $(RDOCFLAGS) "$(srcdir)"
nodoc: PHONY
@@ -432,19 +422,19 @@ post-no-install-doc::
CLEAR_INSTALLED_LIST = clear-installed-list
-install-prereq: $(CLEAR_INSTALLED_LIST) yes-fake PHONY
+install-prereq: $(CLEAR_INSTALLED_LIST) PHONY
clear-installed-list: PHONY
@> $(INSTALLED_LIST) set MAKE="$(MAKE)"
clean: clean-ext clean-local clean-enc clean-golf clean-rdoc clean-capi clean-extout clean-platform
clean-local:: PHONY
- $(Q)$(RM) $(OBJS) $(MINIOBJS) $(MAINOBJ) $(LIBRUBY_A) $(LIBRUBY_SO) $(LIBRUBY) $(LIBRUBY_ALIASES)
- $(Q)$(RM) $(PROGRAM) $(WPROGRAM) miniruby$(EXEEXT) dmyext.$(OBJEXT) $(ARCHFILE) .*.time
- $(Q)$(RM) y.tab.c y.output encdb.h transdb.h prelude.c config.log rbconfig.rb $(ruby_pc) probes.h probes.$(OBJEXT) probes.stamp ruby-glommed.$(OBJEXT)
+ @$(RM) $(OBJS) $(MINIOBJS) $(MAINOBJ) $(LIBRUBY_A) $(LIBRUBY_SO) $(LIBRUBY) $(LIBRUBY_ALIASES)
+ @$(RM) $(PROGRAM) $(WPROGRAM) miniruby$(EXEEXT) dmyext.$(OBJEXT) $(ARCHFILE) .*.time
+ @$(RM) y.tab.c y.output encdb.h transdb.h prelude.c config.log rbconfig.rb $(ruby_pc)
clean-ext:: PHONY
clean-golf: PHONY
- $(Q)$(RM) $(GORUBY)$(EXEEXT) $(GOLFOBJS)
+ @$(RM) $(GORUBY)$(EXEEXT) $(GOLFOBJS)
clean-rdoc: PHONY
clean-capi: PHONY
clean-platform: PHONY
@@ -453,12 +443,12 @@ clean-docs: clean-rdoc clean-capi
distclean: distclean-ext distclean-local distclean-enc distclean-golf distclean-extout distclean-platform
distclean-local:: clean-local
- $(Q)$(RM) $(MKFILES) yasmdata.rb *.inc
- $(Q)$(RM) config.cache config.status config.status.lineno
- $(Q)$(RM) *~ *.bak *.stackdump core *.core gmon.out $(PREP)
+ @$(RM) $(MKFILES) yasmdata.rb *.inc
+ @$(RM) config.cache config.status config.status.lineno $(PRELUDES)
+ @$(RM) *~ *.bak *.stackdump core *.core gmon.out $(PREP)
distclean-ext:: PHONY
distclean-golf: clean-golf
- $(Q)$(RM) $(GOLFPRELUDES)
+ @$(RM) $(GOLFPRELUDES)
distclean-rdoc: PHONY
distclean-capi: PHONY
distclean-extout: clean-extout
@@ -466,66 +456,58 @@ distclean-platform: clean-platform
realclean:: realclean-ext realclean-local realclean-enc realclean-golf realclean-extout
realclean-local:: distclean-local
- $(Q)$(RM) parse.c parse.h lex.c newline.c miniprelude.c revision.h
+ @$(RM) parse.c parse.h lex.c newline.c revision.h
realclean-ext::
realclean-golf: distclean-golf
realclean-capi: PHONY
realclean-extout: distclean-extout
-clean-ext distclean-ext realclean-ext::
- $(Q)$(RM) $(EXTS_MK)
-
clean-enc distclean-enc realclean-enc: PHONY
-check: main test test-all
- $(ECHO) check succeeded
+check: test test-all
check-ruby: test test-ruby
-fake: $(CROSS_COMPILING)-fake
-yes-fake: $(arch)-fake.rb $(RBCONFIG) PHONY
-no-fake: PHONY
-
-btest: $(TEST_RUNNABLE)-btest
+btest: miniruby$(EXEEXT) $(TEST_RUNNABLE)-btest
no-btest: PHONY
-yes-btest: fake miniruby$(EXEEXT) PHONY
- $(BOOTSTRAPRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(BTESTRUBY)" $(OPTS) $(TESTOPTS)
+yes-btest: PHONY
+ $(BOOTSTRAPRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(MINIRUBY)" $(OPTS)
-btest-ruby: $(TEST_RUNNABLE)-btest-ruby
+btest-ruby: miniruby$(EXEEXT) $(RBCONFIG) $(PROGRAM) $(TEST_RUNNABLE)-btest-ruby
no-btest-ruby: PHONY
-yes-btest-ruby: prog PHONY
- $(Q)$(RUNRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM) -I$(srcdir)/lib" -q $(OPTS) $(TESTOPTS)
+yes-btest-ruby: PHONY
+ @$(RUNRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM) -I$(srcdir)/lib" -q $(OPTS)
-test-sample: $(TEST_RUNNABLE)-test-sample
+test-sample: miniruby$(EXEEXT) $(RBCONFIG) $(PROGRAM) $(TEST_RUNNABLE)-test-sample
no-test-sample: PHONY
-yes-test-sample: prog PHONY
- $(Q)$(RUNRUBY) $(srcdir)/tool/rubytest.rb $(OPTS) $(TESTOPTS)
+yes-test-sample: PHONY
+ @$(RUNRUBY) $(srcdir)/tool/rubytest.rb
test-knownbugs: test-knownbug
-test-knownbug: $(TEST_RUNNABLE)-test-knownbug
+test-knownbug: miniruby$(EXEEXT) $(PROGRAM) $(RBCONFIG) $(TEST_RUNNABLE)-test-knownbug
no-test-knownbug: PHONY
-yes-test-knownbug: prog PHONY
- -$(RUNRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM)" $(OPTS) $(TESTOPTS) $(srcdir)/KNOWNBUGS.rb
+yes-test-knownbug: PHONY
+ -$(RUNRUBY) "$(srcdir)/bootstraptest/runner.rb" --ruby="$(PROGRAM)" $(OPTS) $(srcdir)/KNOWNBUGS.rb
test: test-sample btest-ruby test-knownbug
test-all: $(TEST_RUNNABLE)-test-all
-yes-test-all: prog PHONY
- $(RUNRUBY) "$(srcdir)/test/runner.rb" --ruby="$(RUNRUBY)" $(TESTOPTS) $(TESTS)
+yes-test-all: PHONY
+ $(RUNRUBY) "$(srcdir)/test/runner.rb" --ruby="$(RUNRUBY)" $(TESTS)
TESTS_BUILD = mkmf
no-test-all: PHONY
- $(MINIRUBY) -I"$(srcdir)/lib" "$(srcdir)/test/runner.rb" $(TESTOPTS) $(TESTS_BUILD)
+ $(MINIRUBY) -I"$(srcdir)/lib" "$(srcdir)/test/runner.rb" $(TESTS_BUILD)
test-ruby: $(TEST_RUNNABLE)-test-ruby
no-test-ruby: PHONY
-yes-test-ruby: prog encs PHONY
- $(RUNRUBY) "$(srcdir)/test/runner.rb" -q $(TESTOPTS) -- ruby -ext-
+yes-test-ruby: PHONY
+ $(RUNRUBY) "$(srcdir)/test/runner.rb" ruby
extconf: $(PREP)
$(Q) $(MAKEDIRS) "$(EXTCONFDIR)"
$(RUNRUBY) -C "$(EXTCONFDIR)" $(EXTCONF) $(EXTCONFARGS)
$(RBCONFIG): $(srcdir)/tool/mkconfig.rb config.status $(srcdir)/version.h $(PREP)
- $(Q)$(MINIRUBY) $(srcdir)/tool/mkconfig.rb -timestamp=$@ \
+ @$(MINIRUBY) $(srcdir)/tool/mkconfig.rb -timestamp=$@ \
-install_name=$(RUBY_INSTALL_NAME) \
-so_name=$(RUBY_SO_NAME) rbconfig.rb
@@ -534,27 +516,18 @@ test-rubyspec-precheck:
test-rubyspec: test-rubyspec-precheck
$(RUNRUBY) $(srcdir)/spec/mspec/bin/mspec run -B $(srcdir)/spec/default.mspec $(MSPECOPT)
-RUNNABLE = $(LIBRUBY_RELATIVE:no=un)-runnable
-runnable: $(RUNNABLE) prog $(srcdir)/tool/mkrunnable.rb PHONY
- $(Q) $(MINIRUBY) $(srcdir)/tool/mkrunnable.rb -v $(EXTOUT)
-yes-runnable: PHONY
-
encs: enc trans
-libencs: libenc libtrans
-encs enc trans libencs libenc libtrans: showflags $(ENC_MK) $(LIBRUBY) $(PREP)
+encs enc trans: showflags $(ENC_MK) $(LIBRUBY) $(PREP)
$(ECHO) making $@
- $(Q) $(MAKE) -f $(ENC_MK) V="$(V)" \
- RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" \
- $(MFLAGS) $@
-
+ $(Q) $(MAKE) -f $(ENC_MK) RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" $(MFLAGS) $@
-libenc enc: {$(VPATH)}encdb.h
-libtrans trans: {$(VPATH)}transdb.h
+enc: {$(VPATH)}encdb.h
+trans: {$(VPATH)}transdb.h
$(ENC_MK): $(srcdir)/enc/make_encmake.rb $(srcdir)/enc/Makefile.in $(srcdir)/enc/depend \
- $(srcdir)/enc/encinit.c.erb $(srcdir)/lib/mkmf.rb $(RBCONFIG)
+ $(srcdir)/lib/mkmf.rb $(RBCONFIG)
$(ECHO) generating $@
- $(Q) $(MINIRUBY) $(srcdir)/enc/make_encmake.rb --builtin-encs="$(BUILTIN_ENCOBJS)" --builtin-transes="$(BUILTIN_TRANSOBJS)" --module$(EXTSTATIC) $@ $(ENCS)
+ $(Q) $(MINIRUBY) $(srcdir)/enc/make_encmake.rb --builtin-encs="$(BUILTIN_ENCOBJS)" --builtin-transes="$(BUILTIN_TRANSOBJS)" $@ $(ENCS)
.PRECIOUS: $(MKFILES)
@@ -570,18 +543,16 @@ $(ENC_MK): $(srcdir)/enc/make_encmake.rb $(srcdir)/enc/Makefile.in $(srcdir)/enc
PHONY:
-{$(VPATH)}parse.c: {$(VPATH)}parse.y $(srcdir)/tool/ytab.sed {$(VPATH)}id.h
-{$(VPATH)}parse.h: {$(VPATH)}parse.c
+{$(VPATH)}parse.c: {$(VPATH)}parse.y $(srcdir)/tool/ytab.sed
+parse.h {$(VPATH)}parse.h: {$(VPATH)}parse.c
{$(srcdir)}.y.c:
- $(ECHO) generating $@
- $(Q)$(BASERUBY) $(srcdir)/tool/id2token.rb --path-separator=.$(PATH_SEPARATOR)./ --vpath=$(VPATH) id.h $(SRC_FILE) > parse.tmp.y
- $(Q)$(YACC) -d $(YFLAGS) -o y.tab.c parse.tmp.y
- $(Q)$(RM) parse.tmp.y
- $(Q)sed -f $(srcdir)/tool/ytab.sed -e "/^#/s!parse\.tmp\.[iy]!parse.y!" -e "/^#/s!y\.tab\.c!$@!" y.tab.c > $@.new
- $(Q)$(MV) $@.new $@
- $(Q)sed -e "/^#line.*y\.tab\.h/d;/^#line.*parse.*\.y/d" y.tab.h > $(@:.c=.h)
- $(Q)$(RM) y.tab.c y.tab.h
+ $(YACC) -d $(YFLAGS) -o y.tab.c $(SRC_FILE)
+ sed -f $(srcdir)/tool/ytab.sed -e "/^#/s!y\.tab\.c!$@!" y.tab.c > $@.new
+ @$(MV) $@.new $@
+ sed -e "/^#line.*y\.tab\.h/d;/^#line.*parse\.y/d" y.tab.h > $(@:.c=.h).new
+ @$(IFCHANGE) $(@:.c=.h) $(@:.c=.h).new
+ @$(RM) y.tab.c y.tab.h
acosh.$(OBJEXT): {$(VPATH)}acosh.c
alloca.$(OBJEXT): {$(VPATH)}alloca.c {$(VPATH)}config.h
@@ -593,12 +564,9 @@ flock.$(OBJEXT): {$(VPATH)}flock.c
memcmp.$(OBJEXT): {$(VPATH)}memcmp.c
memmove.$(OBJEXT): {$(VPATH)}memmove.c
mkdir.$(OBJEXT): {$(VPATH)}mkdir.c
-setproctitle.$(OBJEXT): {$(VPATH)}setproctitle.c {$(VPATH)}util.h $(RUBY_H_INCLUDES)
strchr.$(OBJEXT): {$(VPATH)}strchr.c
strdup.$(OBJEXT): {$(VPATH)}strdup.c
strerror.$(OBJEXT): {$(VPATH)}strerror.c
-strlcat.$(OBJEXT): {$(VPATH)}strlcat.c
-strlcpy.$(OBJEXT): {$(VPATH)}strlcpy.c
strstr.$(OBJEXT): {$(VPATH)}strstr.c
strtod.$(OBJEXT): {$(VPATH)}strtod.c
strtol.$(OBJEXT): {$(VPATH)}strtol.c
@@ -612,24 +580,27 @@ $(PLATFORM_D):
$(Q) $(MAKEDIRS) $(PLATFORM_DIR)
@exit > $@
+win32/win32.$(OBJEXT): {$(VPATH)}win32/win32.c $(RUBY_H_INCLUDES) $(PLATFORM_D)
+win32/file.$(OBJEXT): {$(VPATH)}win32/file.c $(RUBY_H_INCLUDES) $(PLATFORM_D)
+
###
RUBY_H_INCLUDES = {$(VPATH)}ruby.h {$(VPATH)}config.h {$(VPATH)}defines.h \
{$(VPATH)}intern.h {$(VPATH)}missing.h {$(VPATH)}st.h \
{$(VPATH)}subst.h
ENCODING_H_INCLUDES= {$(VPATH)}encoding.h {$(VPATH)}oniguruma.h
-PROBES_H_INCLUDES = {$(VPATH)}probes.h
+ID_H_INCLUDES = {$(VPATH)}id.h {$(VPATH)}vm_opts.h
VM_CORE_H_INCLUDES = {$(VPATH)}vm_core.h {$(VPATH)}thread_$(THREAD_MODEL).h \
- {$(VPATH)}node.h {$(VPATH)}method.h {$(VPATH)}ruby_atomic.h \
- {$(VPATH)}vm_debug.h {$(VPATH)}id.h
+ {$(VPATH)}node.h {$(VPATH)}method.h {$(VPATH)}atomic.h \
+ $(ID_H_INCLUDES)
-addr2line.$(OBJEXT): {$(VPATH)}addr2line.c {$(VPATH)}addr2line.h {$(VPATH)}config.h
array.$(OBJEXT): {$(VPATH)}array.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
- $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h $(PROBES_H_INCLUDES) {$(VPATH)}id.h
+ $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h
bignum.$(OBJEXT): {$(VPATH)}bignum.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
- {$(VPATH)}thread.h {$(VPATH)}internal.h
+ {$(VPATH)}internal.h
class.$(OBJEXT): {$(VPATH)}class.c $(RUBY_H_INCLUDES) \
- $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h {$(VPATH)}constant.h
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}debug.h {$(VPATH)}internal.h \
+ {$(VPATH)}constant.h
compar.$(OBJEXT): {$(VPATH)}compar.c $(RUBY_H_INCLUDES)
complex.$(OBJEXT): {$(VPATH)}complex.c $(RUBY_H_INCLUDES) \
{$(VPATH)}internal.h
@@ -647,63 +618,63 @@ encoding.$(OBJEXT): {$(VPATH)}encoding.c $(RUBY_H_INCLUDES) \
$(ENCODING_H_INCLUDES) {$(VPATH)}regenc.h {$(VPATH)}util.h \
{$(VPATH)}internal.h
enum.$(OBJEXT): {$(VPATH)}enum.c $(RUBY_H_INCLUDES) {$(VPATH)}node.h \
- {$(VPATH)}util.h {$(VPATH)}id.h
-enumerator.$(OBJEXT): {$(VPATH)}enumerator.c $(RUBY_H_INCLUDES) \
- {$(VPATH)}internal.h
+ {$(VPATH)}util.h $(ID_H_INCLUDES)
+enumerator.$(OBJEXT): {$(VPATH)}enumerator.c $(RUBY_H_INCLUDES)
error.$(OBJEXT): {$(VPATH)}error.c {$(VPATH)}known_errors.inc \
$(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) $(ENCODING_H_INCLUDES) \
+ {$(VPATH)}debug.h \
{$(VPATH)}internal.h
eval.$(OBJEXT): {$(VPATH)}eval.c {$(VPATH)}eval_intern.h {$(VPATH)}vm.h \
$(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) {$(VPATH)}eval_error.c \
- {$(VPATH)}eval_jump.c {$(VPATH)}gc.h {$(VPATH)}iseq.h \
- $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h $(PROBES_H_INCLUDES)
+ {$(VPATH)}eval_jump.c {$(VPATH)}debug.h {$(VPATH)}gc.h {$(VPATH)}iseq.h \
+ $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h
load.$(OBJEXT): {$(VPATH)}load.c {$(VPATH)}eval_intern.h \
{$(VPATH)}util.h $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) \
- {$(VPATH)}dln.h {$(VPATH)}internal.h $(PROBES_H_INCLUDES)
+ {$(VPATH)}dln.h {$(VPATH)}debug.h \
+ {$(VPATH)}internal.h
file.$(OBJEXT): {$(VPATH)}file.c $(RUBY_H_INCLUDES) {$(VPATH)}io.h \
$(ENCODING_H_INCLUDES) {$(VPATH)}util.h {$(VPATH)}dln.h \
{$(VPATH)}internal.h
gc.$(OBJEXT): {$(VPATH)}gc.c $(RUBY_H_INCLUDES) {$(VPATH)}re.h \
{$(VPATH)}regex.h $(ENCODING_H_INCLUDES) $(VM_CORE_H_INCLUDES) \
{$(VPATH)}gc.h {$(VPATH)}io.h {$(VPATH)}eval_intern.h {$(VPATH)}util.h \
- {$(VPATH)}internal.h {$(VPATH)}constant.h \
- {$(VPATH)}thread.h $(PROBES_H_INCLUDES)
+ {$(VPATH)}debug.h {$(VPATH)}internal.h {$(VPATH)}constant.h
hash.$(OBJEXT): {$(VPATH)}hash.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
- $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h $(PROBES_H_INCLUDES)
+ $(ENCODING_H_INCLUDES)
inits.$(OBJEXT): {$(VPATH)}inits.c $(RUBY_H_INCLUDES) \
{$(VPATH)}internal.h
io.$(OBJEXT): {$(VPATH)}io.c $(RUBY_H_INCLUDES) {$(VPATH)}io.h \
- {$(VPATH)}util.h $(ENCODING_H_INCLUDES) {$(VPATH)}dln.h \
- {$(VPATH)}internal.h {$(VPATH)}thread.h {$(VPATH)}id.h
-main.$(OBJEXT): {$(VPATH)}main.c $(RUBY_H_INCLUDES) {$(VPATH)}node.h {$(VPATH)}vm_debug.h
+ {$(VPATH)}util.h $(ENCODING_H_INCLUDES) {$(VPATH)}dln.h {$(VPATH)}internal.h
+main.$(OBJEXT): {$(VPATH)}main.c $(RUBY_H_INCLUDES) {$(VPATH)}debug.h \
+ {$(VPATH)}node.h
marshal.$(OBJEXT): {$(VPATH)}marshal.c $(RUBY_H_INCLUDES) {$(VPATH)}io.h \
$(ENCODING_H_INCLUDES) {$(VPATH)}util.h {$(VPATH)}internal.h
math.$(OBJEXT): {$(VPATH)}math.c $(RUBY_H_INCLUDES) \
{$(VPATH)}internal.h
node.$(OBJEXT): {$(VPATH)}node.c $(RUBY_H_INCLUDES) \
- $(VM_CORE_H_INCLUDES)
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}debug.h
numeric.$(OBJEXT): {$(VPATH)}numeric.c $(RUBY_H_INCLUDES) \
- {$(VPATH)}util.h $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h {$(VPATH)}id.h
+ {$(VPATH)}util.h $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h
object.$(OBJEXT): {$(VPATH)}object.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
- {$(VPATH)}internal.h {$(VPATH)}constant.h $(ENCODING_H_INCLUDES) $(PROBES_H_INCLUDES)
+ {$(VPATH)}internal.h {$(VPATH)}constant.h
pack.$(OBJEXT): {$(VPATH)}pack.c $(RUBY_H_INCLUDES) {$(VPATH)}encoding.h \
{$(VPATH)}oniguruma.h
parse.$(OBJEXT): {$(VPATH)}parse.c $(RUBY_H_INCLUDES) {$(VPATH)}node.h \
- $(ENCODING_H_INCLUDES) {$(VPATH)}id.h {$(VPATH)}regenc.h \
+ $(ENCODING_H_INCLUDES) $(ID_H_INCLUDES) {$(VPATH)}regenc.h \
{$(VPATH)}regex.h {$(VPATH)}util.h {$(VPATH)}lex.c \
{$(VPATH)}defs/keywords {$(VPATH)}id.c {$(VPATH)}parse.y \
- {$(VPATH)}parse.h {$(VPATH)}internal.h $(PROBES_H_INCLUDES)
+ {$(VPATH)}parse.h \
+ {$(VPATH)}internal.h
proc.$(OBJEXT): {$(VPATH)}proc.c {$(VPATH)}eval_intern.h \
$(RUBY_H_INCLUDES) {$(VPATH)}gc.h $(VM_CORE_H_INCLUDES) \
- {$(VPATH)}internal.h {$(VPATH)}iseq.h
+ {$(VPATH)}debug.h {$(VPATH)}internal.h {$(VPATH)}iseq.h
process.$(OBJEXT): {$(VPATH)}process.c $(RUBY_H_INCLUDES) \
{$(VPATH)}util.h {$(VPATH)}io.h $(ENCODING_H_INCLUDES) {$(VPATH)}dln.h \
- $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h \
- {$(VPATH)}thread.h
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}debug.h {$(VPATH)}internal.h
random.$(OBJEXT): {$(VPATH)}random.c $(RUBY_H_INCLUDES) \
{$(VPATH)}siphash.c {$(VPATH)}siphash.h
range.$(OBJEXT): {$(VPATH)}range.c $(RUBY_H_INCLUDES) \
- $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h {$(VPATH)}id.h
+ $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h
rational.$(OBJEXT): {$(VPATH)}rational.c $(RUBY_H_INCLUDES) {$(VPATH)}internal.h
re.$(OBJEXT): {$(VPATH)}re.c $(RUBY_H_INCLUDES) {$(VPATH)}re.h \
{$(VPATH)}regex.h $(ENCODING_H_INCLUDES) {$(VPATH)}util.h \
@@ -724,27 +695,28 @@ regsyntax.$(OBJEXT): {$(VPATH)}regsyntax.c {$(VPATH)}regint.h \
{$(VPATH)}regenc.h {$(VPATH)}oniguruma.h $(RUBY_H_INCLUDES)
ruby.$(OBJEXT): {$(VPATH)}ruby.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
$(ENCODING_H_INCLUDES) {$(VPATH)}eval_intern.h $(VM_CORE_H_INCLUDES) \
- {$(VPATH)}dln.h {$(VPATH)}internal.h
-safe.$(OBJEXT): {$(VPATH)}safe.c $(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES)
+ {$(VPATH)}dln.h {$(VPATH)}debug.h {$(VPATH)}internal.h
+safe.$(OBJEXT): {$(VPATH)}safe.c $(RUBY_H_INCLUDES) \
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}debug.h
signal.$(OBJEXT): {$(VPATH)}signal.c $(RUBY_H_INCLUDES) \
- $(VM_CORE_H_INCLUDES)
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}debug.h
sprintf.$(OBJEXT): {$(VPATH)}sprintf.c $(RUBY_H_INCLUDES) {$(VPATH)}re.h \
{$(VPATH)}regex.h {$(VPATH)}vsnprintf.c $(ENCODING_H_INCLUDES)
st.$(OBJEXT): {$(VPATH)}st.c $(RUBY_H_INCLUDES)
strftime.$(OBJEXT): {$(VPATH)}strftime.c $(RUBY_H_INCLUDES) \
- {$(VPATH)}timev.h $(ENCODING_H_INCLUDES)
+ {$(VPATH)}timev.h
string.$(OBJEXT): {$(VPATH)}string.c $(RUBY_H_INCLUDES) {$(VPATH)}re.h \
- {$(VPATH)}regex.h $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h $(PROBES_H_INCLUDES)
+ {$(VPATH)}regex.h $(ENCODING_H_INCLUDES) {$(VPATH)}internal.h
struct.$(OBJEXT): {$(VPATH)}struct.c $(RUBY_H_INCLUDES) {$(VPATH)}internal.h
thread.$(OBJEXT): {$(VPATH)}thread.c {$(VPATH)}eval_intern.h \
$(RUBY_H_INCLUDES) {$(VPATH)}gc.h $(VM_CORE_H_INCLUDES) \
- {$(VPATH)}thread_$(THREAD_MODEL).c $(ENCODING_H_INCLUDES) \
- {$(VPATH)}internal.h {$(VPATH)}io.h {$(VPATH)}thread.h
+ {$(VPATH)}debug.h {$(VPATH)}thread_$(THREAD_MODEL).c $(ENCODING_H_INCLUDES) \
+ {$(VPATH)}internal.h {$(VPATH)}io.h
transcode.$(OBJEXT): {$(VPATH)}transcode.c $(RUBY_H_INCLUDES) \
$(ENCODING_H_INCLUDES) {$(VPATH)}transcode_data.h {$(VPATH)}internal.h
cont.$(OBJEXT): {$(VPATH)}cont.c $(RUBY_H_INCLUDES) \
$(VM_CORE_H_INCLUDES) {$(VPATH)}gc.h {$(VPATH)}eval_intern.h \
- {$(VPATH)}internal.h
+ {$(VPATH)}debug.h {$(VPATH)}internal.h
time.$(OBJEXT): {$(VPATH)}time.c $(RUBY_H_INCLUDES) \
$(ENCODING_H_INCLUDES) {$(VPATH)}timev.h {$(VPATH)}internal.h
util.$(OBJEXT): {$(VPATH)}util.c $(RUBY_H_INCLUDES) {$(VPATH)}util.h \
@@ -753,84 +725,58 @@ variable.$(OBJEXT): {$(VPATH)}variable.c $(RUBY_H_INCLUDES) \
{$(VPATH)}node.h {$(VPATH)}util.h {$(VPATH)}encoding.h \
{$(VPATH)}oniguruma.h {$(VPATH)}internal.h {$(VPATH)}constant.h
version.$(OBJEXT): {$(VPATH)}version.c $(RUBY_H_INCLUDES) \
- {$(VPATH)}version.h $(srcdir)/version.h $(srcdir)/revision.h {$(VPATH)}config.h \
- verconf.h
+ {$(VPATH)}version.h $(srcdir)/version.h $(srcdir)/revision.h {$(VPATH)}config.h
dmyversion.$(OBJEXT): {$(VPATH)}dmyversion.c version.$(OBJEXT)
compile.$(OBJEXT): {$(VPATH)}compile.c {$(VPATH)}iseq.h \
$(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) {$(VPATH)}insns.inc \
- {$(VPATH)}insns_info.inc {$(VPATH)}optinsn.inc \
+ {$(VPATH)}insns_info.inc {$(VPATH)}optinsn.inc {$(VPATH)}debug.h \
{$(VPATH)}optunifs.inc {$(VPATH)}opt_sc.inc {$(VPATH)}insns.inc \
{$(VPATH)}internal.h
iseq.$(OBJEXT): {$(VPATH)}iseq.c {$(VPATH)}gc.h {$(VPATH)}iseq.h \
$(RUBY_H_INCLUDES) $(VM_CORE_H_INCLUDES) {$(VPATH)}insns.inc \
- {$(VPATH)}insns_info.inc {$(VPATH)}node_name.inc {$(VPATH)}internal.h
+ {$(VPATH)}insns_info.inc {$(VPATH)}node_name.inc {$(VPATH)}debug.h {$(VPATH)}internal.h
vm.$(OBJEXT): {$(VPATH)}vm.c {$(VPATH)}gc.h {$(VPATH)}iseq.h \
{$(VPATH)}eval_intern.h $(RUBY_H_INCLUDES) $(ENCODING_H_INCLUDES) \
$(VM_CORE_H_INCLUDES) {$(VPATH)}vm_method.c {$(VPATH)}vm_eval.c \
{$(VPATH)}vm_insnhelper.c {$(VPATH)}vm_insnhelper.h {$(VPATH)}vm_exec.c \
{$(VPATH)}vm_exec.h {$(VPATH)}insns.def {$(VPATH)}vmtc.inc \
- {$(VPATH)}vm.inc {$(VPATH)}insns.inc \
- {$(VPATH)}internal.h {$(VPATH)}vm.h {$(VPATH)}constant.h \
- $(PROBES_H_INCLUDES) {$(VPATH)}probes_helper.h
+ {$(VPATH)}vm.inc {$(VPATH)}insns.inc {$(VPATH)}debug.h \
+ {$(VPATH)}internal.h {$(VPATH)}vm.h {$(VPATH)}constant.h
vm_dump.$(OBJEXT): {$(VPATH)}vm_dump.c $(RUBY_H_INCLUDES) \
- $(VM_CORE_H_INCLUDES) {$(VPATH)}addr2line.h \
- {$(VPATH)}internal.h
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}debug.h {$(VPATH)}addr2line.h
debug.$(OBJEXT): {$(VPATH)}debug.c $(RUBY_H_INCLUDES) \
$(ENCODING_H_INCLUDES) $(VM_CORE_H_INCLUDES) {$(VPATH)}eval_intern.h \
- {$(VPATH)}util.h
-id.$(OBJEXT): {$(VPATH)}id.c $(RUBY_H_INCLUDES) {$(VPATH)}id.h {$(VPATH)}vm_opts.h
-vm_backtrace.$(OBJEXT): {$(VPATH)}vm_backtrace.c \
- $(VM_CORE_H_INCLUDES) $(RUBY_H_INCLUDES) $(ENCODING_H_INCLUDES) \
- {$(VPATH)}internal.h {$(VPATH)}iseq.h {$(VPATH)}debug.h
-vm_trace.$(OBJEXT): {$(VPATH)}vm_trace.c $(ENCODING_H_INCLUDES) \
- $(VM_CORE_H_INCLUDES) $(RUBY_H_INCLUDES) {$(VPATH)}debug.h \
- {$(VPATH)}internal.h
+ {$(VPATH)}util.h {$(VPATH)}debug.h
+id.$(OBJEXT): {$(VPATH)}id.c $(RUBY_H_INCLUDES) $(ID_H_INCLUDES)
miniprelude.$(OBJEXT): {$(VPATH)}miniprelude.c $(RUBY_H_INCLUDES) \
- $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}debug.h {$(VPATH)}internal.h
prelude.$(OBJEXT): {$(VPATH)}prelude.c $(RUBY_H_INCLUDES) \
- $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}debug.h {$(VPATH)}internal.h
golf_prelude.$(OBJEXT): {$(VPATH)}golf_prelude.c $(RUBY_H_INCLUDES) \
- $(VM_CORE_H_INCLUDES) {$(VPATH)}internal.h
+ $(VM_CORE_H_INCLUDES) {$(VPATH)}debug.h {$(VPATH)}internal.h
goruby.$(OBJEXT): {$(VPATH)}goruby.c {$(VPATH)}main.c $(RUBY_H_INCLUDES) \
- {$(VPATH)}vm_debug.h {$(VPATH)}node.h
+ {$(VPATH)}debug.h {$(VPATH)}node.h
ascii.$(OBJEXT): {$(VPATH)}ascii.c {$(VPATH)}regenc.h {$(VPATH)}config.h \
- {$(VPATH)}oniguruma.h {$(VPATH)}missing.h $(RUBY_H_INCLUDES)
+ {$(VPATH)}oniguruma.h {$(VPATH)}missing.h
us_ascii.$(OBJEXT): {$(VPATH)}us_ascii.c {$(VPATH)}regenc.h \
- {$(VPATH)}config.h {$(VPATH)}oniguruma.h {$(VPATH)}missing.h $(RUBY_H_INCLUDES)
+ {$(VPATH)}config.h {$(VPATH)}oniguruma.h {$(VPATH)}missing.h
unicode.$(OBJEXT): {$(VPATH)}unicode.c {$(VPATH)}regint.h \
{$(VPATH)}config.h {$(VPATH)}defines.h {$(VPATH)}regenc.h \
{$(VPATH)}oniguruma.h {$(VPATH)}st.h {$(VPATH)}ruby.h \
- {$(VPATH)}missing.h {$(VPATH)}intern.h \
- {$(VPATH)}enc/unicode/name2ctype.h {$(VPATH)}enc/unicode/casefold.h \
- {$(VPATH)}subst.h $(RUBY_H_INCLUDES)
+ {$(VPATH)}missing.h {$(VPATH)}intern.h {$(VPATH)}enc/unicode/name2ctype.h \
+ {$(VPATH)}subst.h
utf_8.$(OBJEXT): {$(VPATH)}utf_8.c {$(VPATH)}regenc.h {$(VPATH)}config.h \
- {$(VPATH)}oniguruma.h {$(VPATH)}missing.h $(RUBY_H_INCLUDES)
+ {$(VPATH)}oniguruma.h {$(VPATH)}missing.h
-win32/win32.$(OBJEXT): {$(VPATH)}win32/win32.c $(RUBY_H_INCLUDES) $(PLATFORM_D)
-win32/file.$(OBJEXT): {$(VPATH)}win32/file.c $(RUBY_H_INCLUDES) $(PLATFORM_D)
-
-$(NEWLINE_C): $(srcdir)/enc/trans/newline.trans $(srcdir)/tool/transcode-tblgen.rb
- $(Q) $(BASERUBY) "$(srcdir)/tool/transcode-tblgen.rb" -vo $@ $(srcdir)/enc/trans/newline.trans
-newline.$(OBJEXT): $(NEWLINE_C) {$(VPATH)}defines.h \
+newline.c: $(srcdir)/enc/trans/newline.trans $(srcdir)/tool/transcode-tblgen.rb
+ $(Q) $(BASERUBY) "$(srcdir)/tool/transcode-tblgen.rb" -vo newline.c $(srcdir)/enc/trans/newline.trans
+newline.$(OBJEXT): {$(VPATH)}newline.c {$(VPATH)}defines.h \
{$(VPATH)}intern.h {$(VPATH)}missing.h {$(VPATH)}st.h \
{$(VPATH)}transcode_data.h {$(VPATH)}ruby.h {$(VPATH)}config.h {$(VPATH)}subst.h
-DTRACE_DEPENDENT_OBJS = array.$(OBJEXT) \
- eval.$(OBJEXT) \
- gc.$(OBJEXT) \
- hash.$(OBJEXT) \
- load.$(OBJEXT) \
- object.$(OBJEXT) \
- parse.$(OBJEXT) \
- string.$(OBJEXT) \
- vm.$(OBJEXT)
-
-probes.$(OBJEXT): $(DTRACE_DEPENDENT_OBJS)
-ruby-glommed.$(OBJEXT): $(OBJS) $(DTRACE_OBJ)
-
$(OBJS): {$(VPATH)}config.h {$(VPATH)}missing.h
INSNS2VMOPT = --srcdir="$(srcdir)"
@@ -851,10 +797,9 @@ INSNS2VMOPT = --srcdir="$(srcdir)"
{$(VPATH)}vm.inc: $(srcdir)/template/vm.inc.tmpl
-srcs: {$(VPATH)}parse.c {$(VPATH)}lex.c {$(VPATH)}newline.c {$(VPATH)}id.c srcs-ext srcs-enc
+srcs: {$(VPATH)}parse.c {$(VPATH)}lex.c {$(VPATH)}newline.c srcs-ext srcs-enc
-EXT_SRCS = $(srcdir)/ext/ripper/ripper.c $(srcdir)/ext/json/parser/parser.c \
- $(srcdir)/ext/dl/callback/callback.c
+EXT_SRCS = $(srcdir)/ext/ripper/ripper.c $(srcdir)/ext/json/parser/parser.c
srcs-ext: $(EXT_SRCS)
@@ -862,21 +807,15 @@ srcs-enc: $(ENC_MK)
$(ECHO) making srcs under enc
$(Q) $(MAKE) -f $(ENC_MK) RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" $(MFLAGS) srcs
-all-incs: incs
incs: $(INSNS) {$(VPATH)}node_name.inc {$(VPATH)}encdb.h {$(VPATH)}transdb.h {$(VPATH)}known_errors.inc \
- $(srcdir)/revision.h $(REVISION_H) enc/unicode/name2ctype.h {$(VPATH)}id.h {$(VPATH)}probes.dmyh
+ $(srcdir)/revision.h $(REVISION_H) enc/unicode/name2ctype.h
insns: $(INSNS)
-id.h: $(srcdir)/tool/generic_erb.rb $(srcdir)/template/id.h.tmpl $(srcdir)/defs/id.def
+id.h: parse.h $(srcdir)/tool/generic_erb.rb $(srcdir)/template/id.h.tmpl
$(ECHO) generating $@
$(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb --output=$@ \
- $(srcdir)/template/$@.tmpl
-
-id.c: $(srcdir)/tool/generic_erb.rb $(srcdir)/template/id.c.tmpl $(srcdir)/defs/id.def
- $(ECHO) generating $@
- $(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb --output=$@ \
- $(srcdir)/template/$@.tmpl
+ $(srcdir)/template/id.h.tmpl --vpath=$(VPATH) parse.h
node_name.inc: {$(VPATH)}node.h
$(ECHO) generating $@
@@ -890,19 +829,16 @@ transdb.h: $(PREP) srcs-enc $(srcdir)/tool/generic_erb.rb $(srcdir)/template/tra
$(ECHO) generating $@
$(Q) $(MINIRUBY) $(srcdir)/tool/generic_erb.rb -c -o $@ $(srcdir)/template/transdb.h.tmpl $(srcdir)/enc/trans enc/trans
-enc/encinit.c: $(ENC_MK) $(srcdir)/enc/encinit.c.erb
-
known_errors.inc: $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_errors.def
$(ECHO) generating $@
$(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb -c -o $@ $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_errors.def
-$(MINIPRELUDE_C): $(srcdir)/tool/compile_prelude.rb $(srcdir)/prelude.rb
+miniprelude.c: $(srcdir)/tool/compile_prelude.rb $(srcdir)/prelude.rb
$(ECHO) generating $@
$(Q) $(BASERUBY) -I$(srcdir) $(srcdir)/tool/compile_prelude.rb $(srcdir)/prelude.rb $@
prelude.c: $(srcdir)/tool/compile_prelude.rb $(RBCONFIG) \
- $(srcdir)/lib/rubygems/defaults.rb \
- $(srcdir)/lib/rubygems/core_ext/kernel_gem.rb \
+ $(srcdir)/lib/rubygems/defaults.rb $(srcdir)/lib/rubygems/custom_require.rb \
$(PRELUDE_SCRIPTS) $(PREP)
$(ECHO) generating $@
$(Q) $(COMPILE_PRELUDE) $(PRELUDE_SCRIPTS) $@
@@ -911,11 +847,6 @@ golf_prelude.c: $(srcdir)/tool/compile_prelude.rb $(RBCONFIG) $(srcdir)/prelude.
$(ECHO) generating $@
$(Q) $(COMPILE_PRELUDE) $(srcdir)/golf_prelude.rb $@
-probes.dmyh: {$(srcdir)}probes.d $(srcdir)/tool/gen_dummy_probes.rb
- $(BASERUBY) $(srcdir)/tool/gen_dummy_probes.rb $(srcdir)/probes.d > $@
-
-probes.h: {$(VPATH)}probes.$(DTRACE_EXT)
-
prereq: incs srcs preludes PHONY
preludes: {$(VPATH)}miniprelude.c
@@ -925,52 +856,47 @@ $(srcdir)/revision.h:
@exit > $@
$(REVISION_H): $(srcdir)/version.h $(srcdir)/ChangeLog $(srcdir)/tool/file2lastrev.rb $(REVISION_FORCE)
- -$(Q) $(BASERUBY) $(srcdir)/tool/file2lastrev.rb --revision.h "$(srcdir)" > revision.tmp
- $(Q)$(IFCHANGE) "--timestamp=$@" "$(srcdir)/revision.h" revision.tmp
+ @-$(BASERUBY) $(srcdir)/tool/file2lastrev.rb --revision.h "$(srcdir)" > "$(srcdir)/revision.tmp"
+ @$(IFCHANGE) "--timestamp=$@" "$(srcdir)/revision.h" "$(srcdir)/revision.tmp"
$(srcdir)/ext/ripper/ripper.c: parse.y
$(ECHO) generating $@
$(Q) $(CHDIR) $(@D) && $(exec) $(MAKE) -f depend $(MFLAGS) \
- Q=$(Q) ECHO=$(ECHO) top_srcdir=../.. srcdir=. VPATH=../.. RUBY="$(BASERUBY)"
+ Q=$(Q) ECHO=$(ECHO) top_srcdir=../.. srcdir=. RUBY=$(BASERUBY)
$(srcdir)/ext/json/parser/parser.c: $(srcdir)/ext/json/parser/parser.rl
$(ECHO) generating $@
$(Q) $(CHDIR) $(@D) && $(exec) $(MAKE) -f prereq.mk $(MFLAGS) \
- Q=$(Q) ECHO=$(ECHO) top_srcdir=../../.. srcdir=. VPATH=../../.. BASERUBY="$(BASERUBY)"
-
-$(srcdir)/ext/dl/callback/callback.c: $(srcdir)/ext/dl/callback/mkcallback.rb $(srcdir)/ext/dl/dl.h
- $(ECHO) generating $@
- $(Q) $(CHDIR) $(@D) && $(exec) $(MAKE) -f depend $(MFLAGS) \
- Q=$(Q) ECHO=$(ECHO) top_srcdir=../.. srcdir=. VPATH=../.. RUBY="$(BASERUBY)"
+ Q=$(Q) ECHO=$(ECHO) top_srcdir=../../.. srcdir=.
##
-run: fake miniruby$(EXEEXT) PHONY
- $(BTESTRUBY) $(TESTRUN_SCRIPT) $(RUNOPT)
+run: miniruby$(EXEEXT) PHONY
+ $(MINIRUBY) $(TESTRUN_SCRIPT) $(RUNOPT)
runruby: $(PROGRAM) PHONY
$(RUNRUBY) $(TESTRUN_SCRIPT)
-parse: fake miniruby$(EXEEXT) PHONY
- $(BTESTRUBY) $(srcdir)/tool/parse.rb $(TESTRUN_SCRIPT)
+parse: miniruby$(EXEEXT) PHONY
+ $(MINIRUBY) $(srcdir)/tool/parse.rb $(TESTRUN_SCRIPT)
COMPARE_RUBY = $(BASERUBY)
-ITEM =
-OPTS =
+ITEM =
+OPTS =
benchmark: $(PROGRAM) PHONY
$(BASERUBY) $(srcdir)/benchmark/driver.rb -v \
- --executables="$(COMPARE_RUBY); built-ruby::$(RUNRUBY)" \
+ --executables="$(COMPARE_RUBY); $(RUNRUBY)" \
--pattern='bm_' --directory=$(srcdir)/benchmark $(OPTS)
benchmark-each: $(PROGRAM) PHONY
$(BASERUBY) $(srcdir)/benchmark/driver.rb -v \
- --executables="$(COMPARE_RUBY); built-ruby::$(RUNRUBY)" \
+ --executables="$(COMPARE_RUBY); $(RUNRUBY)" \
--pattern=$(ITEM) --directory=$(srcdir)/benchmark $(OPTS)
tbench: $(PROGRAM) PHONY
$(BASERUBY) $(srcdir)/benchmark/driver.rb -v \
- --executables="$(COMPARE_RUBY); built-ruby::$(RUNRUBY)" \
+ --executables="$(COMPARE_RUBY); $(RUNRUBY)" \
--pattern='bmx_' --directory=$(srcdir)/benchmark $(OPTS)
run.gdb:
@@ -991,13 +917,13 @@ gdb: miniruby$(EXEEXT) run.gdb PHONY
gdb -x run.gdb --quiet --args $(MINIRUBY) $(TESTRUN_SCRIPT)
gdb-ruby: $(PROGRAM) run.gdb PHONY
- $(Q) $(RUNRUBY_COMMAND) $(RUNRUBY_DEBUGGER) -- $(TESTRUN_SCRIPT)
+ gdb -x run.gdb --quiet --args $(PROGRAM) $(TESTRUN_SCRIPT)
dist:
$(BASERUBY) $(srcdir)/tool/make-snapshot tmp $(RELNAME)
up::
- -$(Q)$(MAKE) $(MFLAGS) REVISION_FORCE=PHONY "$(REVISION_H)"
+ -@$(MAKE) $(MFLAGS) REVISION_FORCE=PHONY "$(REVISION_H)"
info: info-program info-libruby_a info-libruby_so info-arch
info-program:
@@ -1048,5 +974,5 @@ help: PHONY
" golf: for golfers" \
"" \
"see DeveloperHowto for more detail: " \
- " http://bugs.ruby-lang.org/wiki/ruby/DeveloperHowto" \
+ " http://redmine.ruby-lang.org/wiki/ruby/DeveloperHowto" \
$(MESSAGE_END)
diff --git a/compar.c b/compar.c
index 63703230bb..65def78484 100644
--- a/compar.c
+++ b/compar.c
@@ -20,7 +20,7 @@ rb_cmperr(VALUE x, VALUE y)
{
const char *classname;
- if (SPECIAL_CONST_P(y) || BUILTIN_TYPE(y) == T_FLOAT) {
+ if (SPECIAL_CONST_P(y)) {
y = rb_inspect(y);
classname = StringValuePtr(y);
}
@@ -32,36 +32,9 @@ rb_cmperr(VALUE x, VALUE y)
}
static VALUE
-invcmp_recursive(VALUE x, VALUE y, int recursive)
-{
- if (recursive) return Qnil;
- return rb_check_funcall(y, cmp, 1, &x);
-}
-
-VALUE
-rb_invcmp(VALUE x, VALUE y)
-{
- VALUE invcmp = rb_exec_recursive(invcmp_recursive, x, y);
- if (invcmp == Qundef || NIL_P(invcmp)) {
- return Qnil;
- }
- else {
- int result = -rb_cmpint(invcmp, x, y);
- return INT2FIX(result);
- }
-}
-
-static VALUE
-cmp_eq_recursive(VALUE arg1, VALUE arg2, int recursive)
-{
- if (recursive) return Qfalse;
- return rb_funcall(arg1, cmp, 1, arg2);
-}
-
-static VALUE
cmp_eq(VALUE *a)
{
- VALUE c = rb_exec_recursive_paired_outer(cmp_eq_recursive, a[0], a[1], a[1]);
+ VALUE c = rb_funcall(a[0], cmp, 1, a[1]);
if (NIL_P(c)) return Qfalse;
if (rb_cmpint(c, a[0], a[1]) == 0) return Qtrue;
@@ -81,9 +54,6 @@ cmp_failed(void)
* Compares two objects based on the receiver's <code><=></code>
* method, returning true if it returns 0. Also returns true if
* _obj_ and _other_ are the same object.
- *
- * Even if _obj_ <=> _other_ raised an exception, the exception
- * is ignoread and returns false.
*/
static VALUE
diff --git a/compile.c b/compile.c
index 7dba662466..f4211ed860 100644
--- a/compile.c
+++ b/compile.c
@@ -51,7 +51,7 @@ typedef struct iseq_label_data {
typedef struct iseq_insn_data {
LINK_ELEMENT link;
enum ruby_vminsn_type insn_id;
- unsigned int line_no;
+ int line_no;
int operand_size;
int sc_state;
VALUE *operands;
@@ -128,7 +128,7 @@ struct iseq_compile_data_ensure_node_stack {
(ruby_debug_print_node(1, CPDEBUG, "", (NODE *)(node)), gl_node_level)), \
gl_node_level++)
-#define debug_node_end() gl_node_level --
+#define debug_node_end() gl_node_level --;
#else
@@ -165,11 +165,11 @@ r_value(VALUE value)
/* create new label */
#define NEW_LABEL(l) new_label_body(iseq, (l))
-#define iseq_path(iseq) \
- (((rb_iseq_t*)DATA_PTR(iseq))->location.path)
+#define iseq_filename(iseq) \
+ (((rb_iseq_t*)DATA_PTR(iseq))->filename)
-#define iseq_absolute_path(iseq) \
- (((rb_iseq_t*)DATA_PTR(iseq))->location.absolute_path)
+#define iseq_filepath(iseq) \
+ (((rb_iseq_t*)DATA_PTR(iseq))->filepath)
#define NEW_ISEQVAL(node, name, type, line_no) \
new_child_iseq(iseq, (node), (name), 0, (type), (line_no))
@@ -185,14 +185,16 @@ r_value(VALUE value)
#define ADD_INSN(seq, line, insn) \
ADD_ELEM((seq), (LINK_ELEMENT *) new_insn_body(iseq, (line), BIN(insn), 0))
+/* add an instruction with label operand */
+#define ADD_INSNL(seq, line, insn, label) \
+ ADD_ELEM((seq), (LINK_ELEMENT *) \
+ new_insn_body(iseq, (line), BIN(insn), 1, (VALUE)(label)))
+
/* add an instruction with some operands (1, 2, 3, 5) */
#define ADD_INSN1(seq, line, insn, op1) \
ADD_ELEM((seq), (LINK_ELEMENT *) \
new_insn_body(iseq, (line), BIN(insn), 1, (VALUE)(op1)))
-/* add an instruction with label operand (alias of ADD_INSN1) */
-#define ADD_INSNL(seq, line, insn, label) ADD_INSN1(seq, line, insn, label)
-
#define ADD_INSN2(seq, line, insn, op1, op2) \
ADD_ELEM((seq), (LINK_ELEMENT *) \
new_insn_body(iseq, (line), BIN(insn), 2, (VALUE)(op1), (VALUE)(op2)))
@@ -209,10 +211,10 @@ r_value(VALUE value)
ADD_INSN((seq), (line), putself)
#define ADD_CALL(seq, line, id, argc) \
- ADD_SEND_R((seq), (line), (id), (argc), (VALUE)Qfalse, (VALUE)INT2FIX(VM_CALL_FCALL))
+ ADD_SEND_R((seq), (line), (id), (argc), (VALUE)Qfalse, (VALUE)INT2FIX(VM_CALL_FCALL_BIT))
#define ADD_CALL_WITH_BLOCK(seq, line, id, argc, block) \
- ADD_SEND_R((seq), (line), (id), (argc), (block), (VALUE)INT2FIX(VM_CALL_FCALL))
+ ADD_SEND_R((seq), (line), (id), (argc), (block), (VALUE)INT2FIX(VM_CALL_FCALL_BIT))
#define ADD_SEND_R(seq, line, id, argc, block, flag) \
ADD_ELEM((seq), (LINK_ELEMENT *) \
@@ -230,7 +232,7 @@ r_value(VALUE value)
if (iseq->compile_data->option->trace_instruction) { \
ADD_INSN1((seq), (line), trace, INT2FIX(event)); \
} \
- } while (0)
+ }while(0);
/* add label */
#define ADD_LABEL(seq, label) \
@@ -249,7 +251,7 @@ r_value(VALUE value)
(rb_ary_push(iseq->compile_data->catch_table_ary, \
rb_ary_new3(5, (type), \
(VALUE)(ls) | 1, (VALUE)(le) | 1, \
- (VALUE)(iseqv), (VALUE)(lc) | 1)))
+ (iseqv), (VALUE)(lc) | 1)))
/* compile node */
#define COMPILE(anchor, desc, node) \
@@ -416,12 +418,12 @@ static int
iseq_add_mark_object(rb_iseq_t *iseq, VALUE v)
{
if (!SPECIAL_CONST_P(v)) {
- rb_iseq_add_mark_object(iseq, v);
+ rb_ary_push(iseq->mark_ary, v);
}
return COMPILE_OK;
}
-#define ruby_sourcefile RSTRING_PTR(iseq->location.path)
+#define ruby_sourcefile RSTRING_PTR(iseq->filename)
static int
iseq_add_mark_object_compile_time(rb_iseq_t *iseq, VALUE v)
@@ -442,7 +444,6 @@ validate_label(st_data_t name, st_data_t label, st_data_t arg)
int ret;
COMPILE_ERROR((ruby_sourcefile, lobj->position,
"%s: undefined label", rb_id2name((ID)name)));
- if (ret) break;
} while (0);
}
return ST_CONTINUE;
@@ -475,36 +476,31 @@ rb_iseq_compile_node(VALUE self, NODE *node)
iseq_set_arguments(iseq, ret, node->nd_args);
switch (iseq->type) {
- case ISEQ_TYPE_BLOCK:
- {
- LABEL *start = iseq->compile_data->start_label = NEW_LABEL(0);
- LABEL *end = iseq->compile_data->end_label = NEW_LABEL(0);
-
- ADD_TRACE(ret, FIX2INT(iseq->location.first_lineno), RUBY_EVENT_B_CALL);
- ADD_LABEL(ret, start);
- COMPILE(ret, "block body", node->nd_body);
- ADD_LABEL(ret, end);
- ADD_TRACE(ret, nd_line(node), RUBY_EVENT_B_RETURN);
-
- /* wide range catch handler must put at last */
- ADD_CATCH_ENTRY(CATCH_TYPE_REDO, start, end, 0, start);
- ADD_CATCH_ENTRY(CATCH_TYPE_NEXT, start, end, 0, end);
- break;
- }
- case ISEQ_TYPE_CLASS:
- {
- ADD_TRACE(ret, FIX2INT(iseq->location.first_lineno), RUBY_EVENT_CLASS);
- COMPILE(ret, "scoped node", node->nd_body);
- ADD_TRACE(ret, nd_line(node), RUBY_EVENT_END);
- break;
- }
- case ISEQ_TYPE_METHOD:
- {
- ADD_TRACE(ret, FIX2INT(iseq->location.first_lineno), RUBY_EVENT_CALL);
- COMPILE(ret, "scoped node", node->nd_body);
- ADD_TRACE(ret, nd_line(node), RUBY_EVENT_RETURN);
- break;
- }
+ case ISEQ_TYPE_BLOCK: {
+ LABEL *start = iseq->compile_data->start_label = NEW_LABEL(0);
+ LABEL *end = iseq->compile_data->end_label = NEW_LABEL(0);
+
+ ADD_LABEL(ret, start);
+ COMPILE(ret, "block body", node->nd_body);
+ ADD_LABEL(ret, end);
+
+ /* wide range catch handler must put at last */
+ ADD_CATCH_ENTRY(CATCH_TYPE_REDO, start, end, 0, start);
+ ADD_CATCH_ENTRY(CATCH_TYPE_NEXT, start, end, 0, end);
+ break;
+ }
+ case ISEQ_TYPE_CLASS: {
+ ADD_TRACE(ret, FIX2INT(iseq->line_no), RUBY_EVENT_CLASS);
+ COMPILE(ret, "scoped node", node->nd_body);
+ ADD_TRACE(ret, nd_line(node), RUBY_EVENT_END);
+ break;
+ }
+ case ISEQ_TYPE_METHOD: {
+ ADD_TRACE(ret, FIX2INT(iseq->line_no), RUBY_EVENT_CALL);
+ COMPILE(ret, "scoped node", node->nd_body);
+ ADD_TRACE(ret, nd_line(node), RUBY_EVENT_RETURN);
+ break;
+ }
default: {
COMPILE(ret, "scoped node", node->nd_body);
break;
@@ -540,7 +536,7 @@ rb_iseq_compile_node(VALUE self, NODE *node)
}
if (iseq->type == ISEQ_TYPE_RESCUE || iseq->type == ISEQ_TYPE_ENSURE) {
- ADD_INSN2(ret, 0, getlocal, INT2FIX(2), INT2FIX(0));
+ ADD_INSN2(ret, 0, getdynamic, INT2FIX(2), INT2FIX(0));
ADD_INSN1(ret, 0, throw, INT2FIX(0) /* continue throw */ );
}
else {
@@ -581,72 +577,18 @@ rb_iseq_translate_threaded_code(rb_iseq_t *iseq)
/* definition of data structure for compiler */
/*********************************************/
-/*
- * On 32-bit SPARC, GCC by default generates SPARC V7 code that may require
- * 8-byte word alignment. On the other hand, Oracle Solaris Studio seems to
- * generate SPARCV8PLUS code with unaligned memory accesss instructions.
- * That is why the STRICT_ALIGNMENT is defined only with GCC.
- */
-#if defined(__sparc) && SIZEOF_VOIDP == 4 && defined(__GNUC__)
- #define STRICT_ALIGNMENT
-#endif
-
-#ifdef STRICT_ALIGNMENT
- #if defined(HAVE_TRUE_LONG_LONG) && SIZEOF_LONG_LONG > SIZEOF_VALUE
- #define ALIGNMENT_SIZE SIZEOF_LONG_LONG
- #else
- #define ALIGNMENT_SIZE SIZEOF_VALUE
- #endif
- #define PADDING_SIZE_MAX ((size_t)((ALIGNMENT_SIZE) - 1))
- #define ALIGNMENT_SIZE_MASK PADDING_SIZE_MAX
- /* Note: ALIGNMENT_SIZE == (2 ** N) is expected. */
-#else
- #define PADDING_SIZE_MAX 0
-#endif /* STRICT_ALIGNMENT */
-
-#ifdef STRICT_ALIGNMENT
-/* calculate padding size for aligned memory access */
-static size_t
-calc_padding(void *ptr, size_t size)
-{
- size_t mis;
- size_t padding = 0;
-
- mis = (size_t)ptr & ALIGNMENT_SIZE_MASK;
- if (mis > 0) {
- padding = ALIGNMENT_SIZE - mis;
- }
-/*
- * On 32-bit sparc or equivalents, when a single VALUE is requested
- * and padding == sizeof(VALUE), it is clear that no padding is needed.
- */
-#if ALIGNMENT_SIZE > SIZEOF_VALUE
- if (size == sizeof(VALUE) && padding == sizeof(VALUE)) {
- padding = 0;
- }
-#endif
-
- return padding;
-}
-#endif /* STRICT_ALIGNMENT */
-
static void *
compile_data_alloc(rb_iseq_t *iseq, size_t size)
{
void *ptr = 0;
struct iseq_compile_data_storage *storage =
iseq->compile_data->storage_current;
-#ifdef STRICT_ALIGNMENT
- size_t padding = calc_padding((void *)&storage->buff[storage->pos], size);
-#else
- const size_t padding = 0; /* expected to be optimized by compiler */
-#endif /* STRICT_ALIGNMENT */
- if (storage->pos + size + padding > storage->size) {
+ if (storage->pos + size > storage->size) {
unsigned long alloc_size = storage->size * 2;
retry:
- if (alloc_size < size + PADDING_SIZE_MAX) {
+ if (alloc_size < size) {
alloc_size *= 2;
goto retry;
}
@@ -658,15 +600,8 @@ compile_data_alloc(rb_iseq_t *iseq, size_t size)
storage->pos = 0;
storage->size = alloc_size;
storage->buff = (char *)(&storage->buff + 1);
-#ifdef STRICT_ALIGNMENT
- padding = calc_padding((void *)&storage->buff[storage->pos], size);
-#endif /* STRICT_ALIGNMENT */
}
-#ifdef STRICT_ALIGNMENT
- storage->pos += (int)padding;
-#endif /* STRICT_ALIGNMENT */
-
ptr = (void *)&storage->buff[storage->pos];
storage->pos += size;
return ptr;
@@ -1001,40 +936,20 @@ new_insn_body(rb_iseq_t *iseq, int line_no, int insn_id, int argc, ...)
return new_insn_core(iseq, line_no, insn_id, argc, operands);
}
-static rb_call_info_t *
-new_callinfo(rb_iseq_t *iseq, ID mid, int argc, VALUE block, unsigned long flag)
-{
- rb_call_info_t *ci = (rb_call_info_t *)compile_data_alloc(iseq, sizeof(rb_call_info_t));
- ci->mid = mid;
- ci->flag = flag;
- ci->orig_argc = argc;
- ci->argc = argc;
-
- if (block) {
- GetISeqPtr(block, ci->blockiseq);
- }
- else {
- ci->blockiseq = 0;
- if (!(ci->flag & (VM_CALL_ARGS_SPLAT | VM_CALL_ARGS_BLOCKARG))) {
- ci->flag |= VM_CALL_ARGS_SKIP_SETUP;
- }
- }
- ci->vmstat = 0;
- ci->blockptr = 0;
- ci->recv = Qundef;
- ci->call = 0; /* TODO: should set default function? */
-
- ci->aux.index = iseq->callinfo_size++;
-
- return ci;
-}
-
static INSN *
-new_insn_send(rb_iseq_t *iseq, int line_no, VALUE id, VALUE argc, VALUE block, VALUE flag)
+new_insn_send(rb_iseq_t *iseq, int line_no,
+ VALUE id, VALUE argc, VALUE block, VALUE flag)
{
- VALUE *operands = (VALUE *)compile_data_alloc(iseq, sizeof(VALUE) * 1);
- operands[0] = (VALUE)new_callinfo(iseq, SYM2ID(id), FIX2INT(argc), block, FIX2INT(flag));
- return new_insn_core(iseq, line_no, BIN(send), 1, operands);
+ INSN *iobj = 0;
+ VALUE *operands =
+ (VALUE *)compile_data_alloc(iseq, sizeof(VALUE) * 5);
+ operands[0] = id;
+ operands[1] = argc;
+ operands[2] = block;
+ operands[3] = flag;
+ operands[4] = INT2FIX(iseq->ic_size++);
+ iobj = new_insn_core(iseq, line_no, BIN(send), 5, operands);
+ return iobj;
}
static VALUE
@@ -1044,9 +959,8 @@ new_child_iseq(rb_iseq_t *iseq, NODE *node,
VALUE ret;
debugs("[new_child_iseq]> ---------------------------------------\n");
- ret = rb_iseq_new_with_opt(node, name,
- iseq_path(iseq->self), iseq_absolute_path(iseq->self),
- INT2FIX(line_no), parent, type, iseq->compile_data->option);
+ ret = rb_iseq_new_with_opt(node, name, iseq_filename(iseq->self), iseq_filepath(iseq->self), INT2FIX(line_no),
+ parent, type, iseq->compile_data->option);
debugs("[new_child_iseq]< ---------------------------------------\n");
iseq_add_mark_object(iseq, ret);
return ret;
@@ -1118,17 +1032,6 @@ iseq_set_exception_local_table(rb_iseq_t *iseq)
}
static int
-get_lvar_level(rb_iseq_t *iseq)
-{
- int lev = 0;
- while (iseq != iseq->local_iseq) {
- lev++;
- iseq = iseq->parent_iseq;
- }
- return lev;
-}
-
-static int
get_dyna_var_idx_at_raw(rb_iseq_t *iseq, ID id)
{
int i;
@@ -1182,34 +1085,52 @@ iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *optargs, NODE *node_args)
debugs("iseq_set_arguments: %s\n", node_args ? "" : "0");
if (node_args) {
- struct rb_args_info *args = node_args->nd_ainfo;
+ NODE *node_aux = node_args->nd_next;
+ NODE *node_opt = node_args->nd_opt;
ID rest_id = 0;
int last_comma = 0;
ID block_id = 0;
+ NODE *node_init = 0;
if (nd_type(node_args) != NODE_ARGS) {
rb_bug("iseq_set_arguments: NODE_ARGS is expected, but %s",
ruby_node_name(nd_type(node_args)));
}
+ /*
+ * new argument information:
+ * NODE_ARGS [m: int, o: NODE_OPT_ARG, ->]
+ * NODE_ARGS_AUX [r: ID, b: ID, ->]
+ * NODE_ARGS_AUX [Pst: id, Plen: int, init: NODE*]
+ * optarg information:
+ * NODE_OPT_ARGS [idx, expr, next ->]
+ * init arg:
+ * NODE_AND(m_init, p_init)
+ * if "r" is 1, it's means "{|x,|}" type block parameter.
+ */
- iseq->argc = (int)args->pre_args_num;
+ iseq->argc = (int)node_args->nd_frml;
debugs(" - argc: %d\n", iseq->argc);
- rest_id = args->rest_arg;
- if (rest_id == 1) {
- last_comma = 1;
- rest_id = 0;
- }
- block_id = args->block_arg;
-
- if (args->first_post_arg) {
- iseq->arg_post_start = get_dyna_var_idx_at_raw(iseq, args->first_post_arg);
- iseq->arg_post_len = args->post_args_num;
+ if (node_aux) {
+ rest_id = node_aux->nd_rest;
+ if (rest_id == 1) {
+ last_comma = 1;
+ rest_id = 0;
+ }
+ block_id = (ID)node_aux->nd_body;
+ node_aux = node_aux->nd_next;
+
+ if (node_aux) {
+ ID post_start_id = node_aux->nd_pid;
+ iseq->arg_post_start = get_dyna_var_idx_at_raw(iseq, post_start_id);
+ iseq->arg_post_len = (int)node_aux->nd_plen;
+ node_init = node_aux->nd_next;
+ }
}
- if (args->opt_args) {
- NODE *node = args->opt_args;
+ if (node_opt) {
+ NODE *node = node_opt;
LABEL *label;
VALUE labels = rb_ary_tmp_new(1);
int i = 0, j;
@@ -1241,41 +1162,13 @@ iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *optargs, NODE *node_args)
iseq->arg_opts = 0;
}
- if (args->kw_args) {
- NODE *node = args->kw_args;
- VALUE keywords = rb_ary_tmp_new(1);
- int i = 0, j;
-
- iseq->arg_keyword = get_dyna_var_idx_at_raw(iseq, args->kw_rest_arg->nd_vid);
- COMPILE(optargs, "kwarg", args->kw_rest_arg);
- while (node) {
- rb_ary_push(keywords, INT2FIX(node->nd_body->nd_vid));
- COMPILE_POPED(optargs, "kwarg", node); /* nd_type(node) == NODE_KW_ARG */
- node = node->nd_next;
- i += 1;
+ if (node_init) {
+ if (node_init->nd_1st) { /* m_init */
+ COMPILE_POPED(optargs, "init arguments (m)", node_init->nd_1st);
}
- iseq->arg_keyword_check = (args->kw_rest_arg->nd_vid & ID_SCOPE_MASK) == ID_JUNK;
- iseq->arg_keywords = i;
- iseq->arg_keyword_table = ALLOC_N(ID, i);
- for (j = 0; j < i; j++) {
- iseq->arg_keyword_table[j] = FIX2INT(RARRAY_PTR(keywords)[j]);
+ if (node_init->nd_2nd) { /* p_init */
+ COMPILE_POPED(optargs, "init arguments (p)", node_init->nd_2nd);
}
- ADD_INSN(optargs, nd_line(args->kw_args), pop);
- }
- else if (args->kw_rest_arg) {
- iseq->arg_keyword = get_dyna_var_idx_at_raw(iseq, args->kw_rest_arg->nd_vid);
- COMPILE(optargs, "kwarg", args->kw_rest_arg);
- ADD_INSN(optargs, nd_line(args->kw_rest_arg), pop);
- }
- else {
- iseq->arg_keyword = -1;
- }
-
- if (args->pre_init) { /* m_init */
- COMPILE_POPED(optargs, "init arguments (m)", args->pre_init);
- }
- if (args->post_init) { /* p_init */
- COMPILE_POPED(optargs, "init arguments (p)", args->post_init);
}
if (rest_id) {
@@ -1295,15 +1188,11 @@ iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *optargs, NODE *node_args)
}
if (iseq->arg_opts != 0 || iseq->arg_post_len != 0 ||
- iseq->arg_rest != -1 || iseq->arg_block != -1 ||
- iseq->arg_keyword != -1) {
+ iseq->arg_rest != -1 || iseq->arg_block != -1) {
iseq->arg_simple = 0;
/* set arg_size: size of arguments */
- if (iseq->arg_keyword != -1) {
- iseq->arg_size = iseq->arg_keyword + 1;
- }
- else if (iseq->arg_block != -1) {
+ if (iseq->arg_block != -1) {
iseq->arg_size = iseq->arg_block + 1;
}
else if (iseq->arg_post_len) {
@@ -1325,8 +1214,7 @@ iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *optargs, NODE *node_args)
}
if (iseq->type == ISEQ_TYPE_BLOCK) {
- if (iseq->arg_opts == 0 && iseq->arg_post_len == 0 &&
- iseq->arg_rest == -1 && iseq->arg_keyword == -1) {
+ if (iseq->arg_opts == 0 && iseq->arg_post_len == 0 && iseq->arg_rest == -1) {
if (iseq->argc == 1 && last_comma == 0) {
/* {|a|} */
iseq->arg_simple |= 0x02;
@@ -1393,7 +1281,7 @@ static st_index_t
cdhash_hash(VALUE a)
{
if (SPECIAL_CONST_P(a)) return (st_index_t)a;
- if (RB_TYPE_P(a, T_STRING)) return rb_str_hash(a);
+ if (TYPE(a) == T_STRING) return rb_str_hash(a);
{
VALUE hval = rb_hash(a);
return (st_index_t)FIX2LONG(hval);
@@ -1405,21 +1293,6 @@ static const struct st_hash_type cdhash_type = {
cdhash_hash,
};
-struct cdhash_set_label_struct {
- VALUE hash;
- int pos;
- int len;
-};
-
-static int
-cdhash_set_label_i(VALUE key, VALUE val, void *ptr)
-{
- struct cdhash_set_label_struct *data = (struct cdhash_set_label_struct *)ptr;
- LABEL *lobj = (LABEL *)(val & ~1);
- rb_hash_aset(data->hash, key, INT2FIX(lobj->position - (data->pos+data->len)));
- return ST_CONTINUE;
-}
-
/**
ruby insn object list -> raw instruction sequence
*/
@@ -1428,8 +1301,7 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)
{
LABEL *lobj;
INSN *iobj;
- struct iseq_line_info_entry *line_info_table;
- unsigned int last_line = 0;
+ struct iseq_insn_info_entry *insn_info_table;
LINK_ELEMENT *list;
VALUE *generated_iseq;
@@ -1472,7 +1344,7 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)
default:
dump_disasm_list(FIRST_ELEMENT(anchor));
dump_disasm_list(list);
- rb_compile_error(RSTRING_PTR(iseq->location.path), line,
+ rb_compile_error(RSTRING_PTR(iseq->filename), line,
"error: set_sequence");
break;
}
@@ -1481,11 +1353,9 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)
/* make instruction sequence */
generated_iseq = ALLOC_N(VALUE, pos);
- line_info_table = ALLOC_N(struct iseq_line_info_entry, k);
+ insn_info_table = ALLOC_N(struct iseq_insn_info_entry, k);
iseq->ic_entries = ALLOC_N(struct iseq_inline_cache_entry, iseq->ic_size);
MEMZERO(iseq->ic_entries, struct iseq_inline_cache_entry, iseq->ic_size);
- iseq->callinfo_entries = ALLOC_N(rb_call_info_t, iseq->callinfo_size);
- /* MEMZERO(iseq->callinfo_entries, rb_call_info_t, iseq->callinfo_size); */
list = FIRST_ELEMENT(anchor);
k = pos = sp = 0;
@@ -1517,11 +1387,11 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)
if (iobj->operand_size != len - 1) {
/* printf("operand size miss! (%d, %d)\n", iobj->operand_size, len); */
dump_disasm_list(list);
- rb_compile_error(RSTRING_PTR(iseq->location.path), iobj->line_no,
+ rb_compile_error(RSTRING_PTR(iseq->filename), iobj->line_no,
"operand size miss! (%d for %d)",
iobj->operand_size, len - 1);
xfree(generated_iseq);
- xfree(line_info_table);
+ xfree(insn_info_table);
return 0;
}
@@ -1534,29 +1404,50 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)
/* label(destination position) */
lobj = (LABEL *)operands[j];
if (!lobj->set) {
- rb_compile_error(RSTRING_PTR(iseq->location.path), iobj->line_no,
+ rb_compile_error(RSTRING_PTR(iseq->filename), iobj->line_no,
"unknown label");
}
if (lobj->sp == -1) {
lobj->sp = sp;
}
- generated_iseq[pos + 1 + j] = lobj->position - (pos + len);
+ generated_iseq[pos + 1 + j] =
+ lobj->position - (pos + len);
break;
}
case TS_CDHASH:
{
- VALUE map = operands[j];
- struct cdhash_set_label_struct data;
- data.hash = map;
- data.pos = pos;
- data.len = len;
- rb_hash_foreach(map, cdhash_set_label_i, (VALUE)&data);
-
+ /*
+ * [obj, label, ...]
+ */
+ int i;
+ VALUE lits = operands[j];
+ VALUE map = rb_hash_new();
+ RHASH_TBL(map)->type = &cdhash_type;
+
+ for (i=0; i < RARRAY_LEN(lits); i+=2) {
+ VALUE obj = rb_ary_entry(lits, i);
+ VALUE lv = rb_ary_entry(lits, i+1);
+ lobj = (LABEL *)(lv & ~1);
+
+ if (!lobj->set) {
+ rb_compile_error(RSTRING_PTR(iseq->filename), iobj->line_no,
+ "unknown label");
+ }
+ if (!st_lookup(rb_hash_tbl(map), obj, 0)) {
+ rb_hash_aset(map, obj, INT2FIX(lobj->position - (pos+len)));
+ }
+ else {
+ rb_compile_warning(RSTRING_PTR(iseq->filename), iobj->line_no,
+ "duplicated when clause is ignored");
+ }
+ }
hide_obj(map);
generated_iseq[pos + 1 + j] = map;
+ iseq_add_mark_object(iseq, map);
break;
}
case TS_LINDEX:
+ case TS_DINDEX:
case TS_NUM: /* ulong */
generated_iseq[pos + 1 + j] = FIX2INT(operands[j]);
break;
@@ -1583,23 +1474,12 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)
int ic_index = FIX2INT(operands[j]);
IC ic = &iseq->ic_entries[ic_index];
if (UNLIKELY(ic_index >= iseq->ic_size)) {
- rb_bug("iseq_set_sequence: ic_index overflow: index: %d, size: %d", ic_index, iseq->ic_size);
+ rb_bug("iseq_set_sequence: ic_index overflow: index: %d, size: %d",
+ ic_index, iseq->ic_size);
}
generated_iseq[pos + 1 + j] = (VALUE)ic;
break;
}
- case TS_CALLINFO: /* call info */
- {
- rb_call_info_t *base_ci = (rb_call_info_t *)operands[j];
- rb_call_info_t *ci = &iseq->callinfo_entries[base_ci->aux.index];
- *ci = *base_ci;
-
- if (UNLIKELY(base_ci->aux.index >= iseq->callinfo_size)) {
- rb_bug("iseq_set_sequence: ci_index overflow: index: %d, size: %d", base_ci->argc, iseq->callinfo_size);
- }
- generated_iseq[pos + 1 + j] = (VALUE)ci;
- break;
- }
case TS_ID: /* ID */
generated_iseq[pos + 1 + j] = SYM2ID(operands[j]);
break;
@@ -1611,19 +1491,18 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)
}
break;
default:
- rb_compile_error(RSTRING_PTR(iseq->location.path), iobj->line_no,
+ rb_compile_error(RSTRING_PTR(iseq->filename), iobj->line_no,
"unknown operand type: %c", type);
xfree(generated_iseq);
- xfree(line_info_table);
+ xfree(insn_info_table);
return 0;
}
}
- if (last_line != iobj->line_no) {
- line_info_table[k].line_no = last_line = iobj->line_no;
- line_info_table[k].position = pos;
- k++;
- }
+ insn_info_table[k].line_no = iobj->line_no;
+ insn_info_table[k].position = pos;
+ insn_info_table[k].sp = sp;
pos += len;
+ k++;
break;
}
case ISEQ_ELEMENT_LABEL:
@@ -1651,21 +1530,19 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)
if (adjust->line_no != -1) {
if (orig_sp - sp > 0) {
- if (last_line != (unsigned int)adjust->line_no) {
- line_info_table[k].line_no = last_line = adjust->line_no;
- line_info_table[k].position = pos;
- k++;
- }
+ insn_info_table[k].line_no = adjust->line_no;
+ insn_info_table[k].position = pos;
+ insn_info_table[k].sp = sp;
+ k++;
generated_iseq[pos++] = BIN(adjuststack);
generated_iseq[pos++] = orig_sp - sp;
}
else if (orig_sp - sp == 0) {
/* jump to next insn */
- if (last_line != (unsigned int)adjust->line_no) {
- line_info_table[k].line_no = last_line = adjust->line_no;
- line_info_table[k].position = pos;
- k++;
- }
+ insn_info_table[k].line_no = adjust->line_no;
+ insn_info_table[k].position = pos;
+ insn_info_table[k].sp = sp;
+ k++;
generated_iseq[pos++] = BIN(jump);
generated_iseq[pos++] = 0;
}
@@ -1691,12 +1568,10 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *anchor)
iseq->iseq = (void *)generated_iseq;
iseq->iseq_size = pos;
+ iseq->insn_info_table = insn_info_table;
+ iseq->insn_info_size = k;
iseq->stack_max = stack_max;
- line_info_table = ruby_xrealloc(line_info_table, k * sizeof(struct iseq_line_info_entry));
- iseq->line_info_table = line_info_table;
- iseq->line_info_size = k;
-
return COMPILE_OK;
}
@@ -1930,16 +1805,15 @@ iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcal
* send ...
* leave
* =>
- * send ..., ... | VM_CALL_TAILCALL, ...
+ * send ..., ... | VM_CALL_TAILCALL_BIT, ...
* leave # unreachable
*/
INSN *piobj = (INSN *)get_prev_insn((INSN *)list);
- if (piobj->insn_id == BIN(send) || piobj->insn_id == BIN(opt_send_simple)) {
- rb_call_info_t *ci = (rb_call_info_t *)piobj->operands[0];
- if (ci->blockiseq == 0) {
- ci->flag |= VM_CALL_TAILCALL;
- }
+ if (piobj->insn_id == BIN(send) &&
+ piobj->operands[2] == 0 /* block */
+ ) {
+ piobj->operands[3] = FIXNUM_OR(piobj->operands[3], VM_CALL_TAILCALL_BIT);
}
}
return COMPILE_OK;
@@ -1948,18 +1822,18 @@ iseq_peephole_optimize(rb_iseq_t *iseq, LINK_ELEMENT *list, const int do_tailcal
static int
insn_set_specialized_instruction(rb_iseq_t *iseq, INSN *iobj, int insn_id)
{
- int old_opsize = iobj->operand_size;
+ int i, old_opsize = iobj->operand_size;
+
iobj->insn_id = insn_id;
iobj->operand_size = insn_len(insn_id) - 1;
+ /* printf("iobj->operand_size: %d\n", iobj->operand_size); */
if (iobj->operand_size > old_opsize) {
- VALUE *old_operands = iobj->operands;
- if (insn_id != BIN(opt_neq)) {
- rb_bug("insn_set_specialized_instruction: unknown insn: %d", insn_id);
- }
- iobj->operands = (VALUE *)compile_data_alloc(iseq, iobj->operand_size * sizeof(VALUE));
- iobj->operands[0] = old_operands[0];
- iobj->operands[1] = (VALUE)new_callinfo(iseq, idEq, 1, 0, 0);
+ iobj->operands = (VALUE *)compile_data_alloc(iseq, iobj->operand_size);
+ }
+
+ for (i=0; i<iobj->operand_size; i++) {
+ iobj->operands[i] = INT2FIX(iseq->ic_size++);
}
return COMPILE_OK;
@@ -1969,45 +1843,72 @@ static int
iseq_specialized_instruction(rb_iseq_t *iseq, INSN *iobj)
{
if (iobj->insn_id == BIN(send)) {
- rb_call_info_t *ci = (rb_call_info_t *)OPERAND_AT(iobj, 0);
-
-#define SP_INSN(opt) insn_set_specialized_instruction(iseq, iobj, BIN(opt_##opt))
- if (ci->blockiseq == 0 && (ci->flag & ~VM_CALL_ARGS_SKIP_SETUP) == 0) {
- switch (ci->orig_argc) {
- case 0:
- switch (ci->mid) {
- case idLength: SP_INSN(length); return COMPILE_OK;
- case idSize: SP_INSN(size); return COMPILE_OK;
- case idEmptyP: SP_INSN(empty_p);return COMPILE_OK;
- case idSucc: SP_INSN(succ); return COMPILE_OK;
- case idNot: SP_INSN(not); return COMPILE_OK;
+ ID mid = SYM2ID(OPERAND_AT(iobj, 0));
+ int argc = FIX2INT(OPERAND_AT(iobj, 1));
+ VALUE block = OPERAND_AT(iobj, 2);
+ VALUE flag = OPERAND_AT(iobj, 3);
+
+ /* TODO: should be more sophisticated search */
+ if (block == 0 && flag == INT2FIX(0)) {
+ if (argc == 0) {
+ if (mid == idLength) {
+ insn_set_specialized_instruction(iseq, iobj, BIN(opt_length));
}
- break;
- case 1:
- switch (ci->mid) {
- case idPLUS: SP_INSN(plus); return COMPILE_OK;
- case idMINUS: SP_INSN(minus); return COMPILE_OK;
- case idMULT: SP_INSN(mult); return COMPILE_OK;
- case idDIV: SP_INSN(div); return COMPILE_OK;
- case idMOD: SP_INSN(mod); return COMPILE_OK;
- case idEq: SP_INSN(eq); return COMPILE_OK;
- case idNeq: SP_INSN(neq); return COMPILE_OK;
- case idLT: SP_INSN(lt); return COMPILE_OK;
- case idLE: SP_INSN(le); return COMPILE_OK;
- case idGT: SP_INSN(gt); return COMPILE_OK;
- case idGE: SP_INSN(ge); return COMPILE_OK;
- case idLTLT: SP_INSN(ltlt); return COMPILE_OK;
- case idAREF: SP_INSN(aref); return COMPILE_OK;
+ else if (mid == idSize) {
+ insn_set_specialized_instruction(iseq, iobj, BIN(opt_size));
+ }
+ else if (mid == idSucc) {
+ insn_set_specialized_instruction(iseq, iobj, BIN(opt_succ));
+ }
+ else if (mid == idNot) {
+ insn_set_specialized_instruction(iseq, iobj, BIN(opt_not));
+ }
+ }
+ else if (argc == 1) {
+ if (0) {
+ }
+ else if (mid == idPLUS) {
+ insn_set_specialized_instruction(iseq, iobj, BIN(opt_plus));
+ }
+ else if (mid == idMINUS) {
+ insn_set_specialized_instruction(iseq, iobj, BIN(opt_minus));
+ }
+ else if (mid == idMULT) {
+ insn_set_specialized_instruction(iseq, iobj, BIN(opt_mult));
+ }
+ else if (mid == idDIV) {
+ insn_set_specialized_instruction(iseq, iobj, BIN(opt_div));
+ }
+ else if (mid == idMOD) {
+ insn_set_specialized_instruction(iseq, iobj, BIN(opt_mod));
+ }
+ else if (mid == idEq) {
+ insn_set_specialized_instruction(iseq, iobj, BIN(opt_eq));
+ }
+ else if (mid == idNeq) {
+ insn_set_specialized_instruction(iseq, iobj, BIN(opt_neq));
+ }
+ else if (mid == idLT) {
+ insn_set_specialized_instruction(iseq, iobj, BIN(opt_lt));
+ }
+ else if (mid == idLE) {
+ insn_set_specialized_instruction(iseq, iobj, BIN(opt_le));
+ }
+ else if (mid == idGT) {
+ insn_set_specialized_instruction(iseq, iobj, BIN(opt_gt));
+ }
+ else if (mid == idGE) {
+ insn_set_specialized_instruction(iseq, iobj, BIN(opt_ge));
+ }
+ else if (mid == idLTLT) {
+ insn_set_specialized_instruction(iseq, iobj, BIN(opt_ltlt));
+ }
+ else if (mid == idAREF) {
+ insn_set_specialized_instruction(iseq, iobj, BIN(opt_aref));
}
- break;
}
- }
- if (ci->flag & VM_CALL_ARGS_SKIP_SETUP) {
- iobj->insn_id = BIN(opt_send_simple);
}
}
-#undef SP_INSN
-
return COMPILE_OK;
}
@@ -2156,7 +2057,7 @@ insn_set_sc_state(rb_iseq_t *iseq, INSN *iobj, int state)
dump_disasm_list((LINK_ELEMENT *)iobj);
dump_disasm_list((LINK_ELEMENT *)lobj);
printf("\n-- %d, %d\n", lobj->sc_state, nstate);
- rb_compile_error(RSTRING_PTR(iseq->location.path), iobj->line_no,
+ rb_compile_error(RSTRING_PTR(iseq->filename), iobj->line_no,
"insn_set_sc_state error\n");
return 0;
}
@@ -2258,7 +2159,7 @@ iseq_set_sequence_stackcaching(rb_iseq_t *iseq, LINK_ANCHOR *anchor)
case SCS_XX:
goto normal_insn;
default:
- rb_compile_error(RSTRING_PTR(iseq->location.path), iobj->line_no,
+ rb_compile_error(RSTRING_PTR(iseq->filename), iobj->line_no,
"unreachable");
}
/* remove useless pop */
@@ -2289,8 +2190,10 @@ iseq_set_sequence_stackcaching(rb_iseq_t *iseq, LINK_ANCHOR *anchor)
return COMPILE_OK;
}
+
+
static int
-compile_dstr_fragments(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node, int *cntp)
+compile_dstr_fragments(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int *cntp)
{
NODE *list = node->nd_next;
VALUE lit = node->nd_lit;
@@ -2304,14 +2207,7 @@ compile_dstr_fragments(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node, int *cntp)
}
while (list) {
- node = list->nd_head;
- if (nd_type(node) == NODE_STR) {
- hide_obj(node->nd_lit);
- ADD_INSN1(ret, nd_line(node), putobject, node->nd_lit);
- }
- else {
- COMPILE(ret, "each string", node);
- }
+ COMPILE(ret, "each string", list->nd_head);
cnt++;
list = list->nd_next;
}
@@ -2383,160 +2279,65 @@ compile_branch_condition(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * cond,
return COMPILE_OK;
}
-enum compile_array_type_t {
- COMPILE_ARRAY_TYPE_ARRAY,
- COMPILE_ARRAY_TYPE_HASH,
- COMPILE_ARRAY_TYPE_ARGS
-};
-
static int
compile_array_(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE* node_root,
- enum compile_array_type_t type, int poped)
+ VALUE opt_p, int poped)
{
NODE *node = node_root;
- int line = (int)nd_line(node);
- int len = 0;
-
- if (nd_type(node) == NODE_ZARRAY) {
- if (!poped) {
- switch (type) {
- case COMPILE_ARRAY_TYPE_ARRAY: ADD_INSN1(ret, line, newarray, INT2FIX(0)); break;
- case COMPILE_ARRAY_TYPE_HASH: ADD_INSN1(ret, line, newhash, INT2FIX(0)); break;
- case COMPILE_ARRAY_TYPE_ARGS: /* do nothing */ break;
- }
- }
- }
- else {
- int opt_p = 1;
- int first = 1, i;
+ int len = (int)node->nd_alen, line = (int)nd_line(node), i=0;
+ DECL_ANCHOR(anchor);
+ INIT_ANCHOR(anchor);
+ if (nd_type(node) != NODE_ZARRAY) {
while (node) {
- NODE *start_node = node, *end_node;
- NODE *kw = 0;
- const int max = 0x100;
- DECL_ANCHOR(anchor);
- INIT_ANCHOR(anchor);
-
- for (i=0; i<max && node; i++, len++, node = node->nd_next) {
- if (CPDEBUG > 0 && nd_type(node) != NODE_ARRAY) {
- rb_bug("compile_array: This node is not NODE_ARRAY, but %s", ruby_node_name(nd_type(node)));
- }
-
- if (type == COMPILE_ARRAY_TYPE_HASH && !node->nd_head) {
- opt_p = 0;
- kw = node->nd_next;
- node = kw->nd_next;
- kw = kw->nd_head;
- break;
- }
- if (opt_p && nd_type(node->nd_head) != NODE_LIT) {
- opt_p = 0;
- }
-
- COMPILE_(anchor, "array element", node->nd_head, poped);
+ if (nd_type(node) != NODE_ARRAY) {
+ rb_bug("compile_array: This node is not NODE_ARRAY, but %s",
+ ruby_node_name(nd_type(node)));
}
- if (opt_p && type != COMPILE_ARRAY_TYPE_ARGS) {
- if (!poped) {
- VALUE ary = rb_ary_tmp_new(i);
-
- end_node = node;
- node = start_node;
-
- while (node != end_node) {
- rb_ary_push(ary, node->nd_head->nd_lit);
- node = node->nd_next;
- }
- while (node && nd_type(node->nd_head) == NODE_LIT &&
- node->nd_next && nd_type(node->nd_next->nd_head) == NODE_LIT) {
- rb_ary_push(ary, node->nd_head->nd_lit);
- node = node->nd_next;
- rb_ary_push(ary, node->nd_head->nd_lit);
- node = node->nd_next;
- len++;
- }
-
- OBJ_FREEZE(ary);
-
- iseq_add_mark_object_compile_time(iseq, ary);
-
- if (first) {
- first = 0;
- if (type == COMPILE_ARRAY_TYPE_ARRAY) {
- ADD_INSN1(ret, line, duparray, ary);
- }
- else { /* COMPILE_ARRAY_TYPE_HASH */
- ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(ret, line, putobject, ary);
- ADD_SEND(ret, line, ID2SYM(id_core_hash_from_ary), INT2FIX(1));
- }
- }
- else {
- if (type == COMPILE_ARRAY_TYPE_ARRAY) {
- ADD_INSN1(ret, line, putobject, ary);
- ADD_INSN(ret, line, concatarray);
- }
- else {
- ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(ret, line, putobject, ary);
- ADD_SEND(ret, line, ID2SYM(id_core_hash_merge_ary), INT2FIX(1));
- }
- }
- }
+ i++;
+ if (opt_p && nd_type(node->nd_head) != NODE_LIT) {
+ opt_p = Qfalse;
}
- else {
- if (!poped) {
- switch (type) {
- case COMPILE_ARRAY_TYPE_ARRAY:
- ADD_INSN1(anchor, line, newarray, INT2FIX(i));
+ COMPILE_(anchor, "array element", node->nd_head, poped);
+ node = node->nd_next;
+ }
+ }
- if (first) {
- first = 0;
- }
- else {
- ADD_INSN(anchor, line, concatarray);
- }
+ if (len != i) {
+ if (0) {
+ rb_bug("node error: compile_array (%d: %d-%d)",
+ (int)nd_line(node_root), len, i);
+ }
+ len = i;
+ }
- APPEND_LIST(ret, anchor);
- break;
- case COMPILE_ARRAY_TYPE_HASH:
- if (first) {
- first = 0;
- ADD_INSN1(anchor, line, newhash, INT2FIX(i));
- APPEND_LIST(ret, anchor);
- }
- else if (i > 0) {
- ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN(ret, line, swap);
- APPEND_LIST(ret, anchor);
- ADD_SEND(ret, line, ID2SYM(id_core_hash_merge_ptr), INT2FIX(i + 1));
- }
- if (kw) {
- ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN(ret, line, swap);
- COMPILE(ret, "keyword splat", kw);
- ADD_SEND(ret, line, ID2SYM(id_core_hash_merge_kwd), INT2FIX(2));
- }
- break;
- case COMPILE_ARRAY_TYPE_ARGS:
- APPEND_LIST(ret, anchor);
- break;
- }
- }
- else {
- /* poped */
- APPEND_LIST(ret, anchor);
- }
+ if (opt_p == Qtrue) {
+ if (!poped) {
+ VALUE ary = rb_ary_tmp_new(len);
+ node = node_root;
+ while (node) {
+ rb_ary_push(ary, node->nd_head->nd_lit);
+ node = node->nd_next;
}
+ OBJ_FREEZE(ary);
+ iseq_add_mark_object_compile_time(iseq, ary);
+ ADD_INSN1(ret, nd_line(node_root), duparray, ary);
}
}
+ else {
+ if (!poped) {
+ ADD_INSN1(anchor, line, newarray, INT2FIX(len));
+ }
+ APPEND_LIST(ret, anchor);
+ }
return len;
}
static VALUE
-compile_array(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE* node_root, enum compile_array_type_t type)
+compile_array(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE* node_root, VALUE opt_p)
{
- return compile_array_(iseq, ret, node_root, type, 0);
+ return compile_array_(iseq, ret, node_root, opt_p, 0);
}
static VALUE
@@ -2546,7 +2347,7 @@ case_when_optimizable_literal(NODE * node)
case NODE_LIT: {
VALUE v = node->nd_lit;
double ival;
- if (RB_TYPE_P(v, T_FLOAT) &&
+ if (TYPE(v) == T_FLOAT &&
modf(RFLOAT_VALUE(v), &ival) == 0.0) {
return FIXABLE(ival) ? LONG2FIX((long)ival) : rb_dbl2big(ival);
}
@@ -2558,30 +2359,27 @@ case_when_optimizable_literal(NODE * node)
case NODE_STR:
return node->nd_lit;
}
- return Qundef;
+ return Qfalse;
}
-static int
-when_vals(rb_iseq_t *iseq, LINK_ANCHOR *cond_seq, NODE *vals, LABEL *l1, int only_special_literals, VALUE literals)
+static VALUE
+when_vals(rb_iseq_t *iseq, LINK_ANCHOR *cond_seq, NODE *vals, LABEL *l1, VALUE special_literals)
{
while (vals) {
- NODE* val = vals->nd_head;
- VALUE lit = case_when_optimizable_literal(val);
+ VALUE lit;
+ NODE* val;
- if (lit == Qundef) {
- only_special_literals = 0;
+ val = vals->nd_head;
+
+ if (special_literals &&
+ (lit = case_when_optimizable_literal(val)) != Qfalse) {
+ rb_ary_push(special_literals, lit);
+ rb_ary_push(special_literals, (VALUE)(l1) | 1);
}
else {
- if (rb_hash_lookup(literals, lit) != Qnil) {
- rb_compile_warning(RSTRING_PTR(iseq->location.path), nd_line(val), "duplicated when clause is ignored");
- }
- else {
- rb_hash_aset(literals, lit, (VALUE)(l1) | 1);
- }
+ special_literals = Qfalse;
}
- ADD_INSN(cond_seq, nd_line(val), dup); /* dup target */
-
if (nd_type(val) == NODE_STR) {
debugp_param("nd_lit", val->nd_lit);
OBJ_FREEZE(val->nd_lit);
@@ -2590,12 +2388,12 @@ when_vals(rb_iseq_t *iseq, LINK_ANCHOR *cond_seq, NODE *vals, LABEL *l1, int onl
else {
COMPILE(cond_seq, "when cond", val);
}
-
- ADD_INSN1(cond_seq, nd_line(vals), checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_CASE));
+ ADD_INSN1(cond_seq, nd_line(val), topn, INT2FIX(1));
+ ADD_SEND(cond_seq, nd_line(val), ID2SYM(idEqq), INT2FIX(1));
ADD_INSNL(cond_seq, nd_line(val), branchif, l1);
vals = vals->nd_next;
}
- return only_special_literals;
+ return special_literals;
}
static int
@@ -2604,16 +2402,15 @@ compile_massign_lhs(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE *node)
switch (nd_type(node)) {
case NODE_ATTRASGN: {
INSN *iobj;
- rb_call_info_t *ci;
VALUE dupidx;
COMPILE_POPED(ret, "masgn lhs (NODE_ATTRASGN)", node);
-
POP_ELEMENT(ret); /* pop pop insn */
iobj = (INSN *)POP_ELEMENT(ret); /* pop send insn */
- ci = (rb_call_info_t *)iobj->operands[0];
- ci->orig_argc += 1; ci->argc = ci->orig_argc;
- dupidx = INT2FIX(ci->orig_argc);
+
+ dupidx = iobj->operands[1];
+ dupidx = FIXNUM_INC(dupidx, 1);
+ iobj->operands[1] = dupidx;
ADD_INSN1(ret, nd_line(node), topn, dupidx);
ADD_ELEM(ret, (LINK_ELEMENT *)iobj);
@@ -2826,23 +2623,23 @@ static int
defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *ret,
NODE *node, LABEL **lfinish, VALUE needstr)
{
- enum defined_type expr_type = 0;
+ const char *estr = 0;
enum node_type type;
switch (type = nd_type(node)) {
/* easy literals */
case NODE_NIL:
- expr_type = DEFINED_NIL;
+ estr = "nil";
break;
case NODE_SELF:
- expr_type = DEFINED_SELF;
+ estr = "self";
break;
case NODE_TRUE:
- expr_type = DEFINED_TRUE;
+ estr = "true";
break;
case NODE_FALSE:
- expr_type = DEFINED_FALSE;
+ estr = "false";
break;
case NODE_ARRAY:{
@@ -2863,13 +2660,13 @@ defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *ret,
case NODE_AND:
case NODE_OR:
default:
- expr_type = DEFINED_EXPR;
+ estr = "expression";
break;
/* variables */
case NODE_LVAR:
case NODE_DVAR:
- expr_type = DEFINED_LVAR;
+ estr = "local-variable";
break;
case NODE_IVAR:
@@ -2991,14 +2788,16 @@ defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *ret,
case NODE_CDECL:
case NODE_CVDECL:
case NODE_CVASGN:
- expr_type = DEFINED_ASGN;
+ estr = "assignment";
break;
}
- if (expr_type) {
+ if (estr != 0) {
if (needstr != Qfalse) {
- VALUE str = rb_iseq_defined_string(expr_type);
- ADD_INSN1(ret, nd_line(node), putobject, str);
+ VALUE str = rb_str_new2(estr);
+ hide_obj(str);
+ ADD_INSN1(ret, nd_line(node), putstring, str);
+ iseq_add_mark_object_compile_time(iseq, str);
}
else {
ADD_INSN1(ret, nd_line(node), putobject, Qtrue);
@@ -3022,7 +2821,7 @@ defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *ret,
VALUE rescue = NEW_CHILD_ISEQVAL(NEW_NIL(),
rb_str_concat(rb_str_new2
("defined guard in "),
- iseq->location.label),
+ iseq->name),
ISEQ_TYPE_DEFINED_GUARD, 0);
APPEND_LABEL(ret, lcur, lstart);
ADD_LABEL(ret, lend);
@@ -3049,10 +2848,10 @@ make_name_for_block(rb_iseq_t *iseq)
}
if (level == 1) {
- return rb_sprintf("block in %s", RSTRING_PTR(ip->location.label));
+ return rb_sprintf("block in %s", RSTRING_PTR(ip->name));
}
else {
- return rb_sprintf("block (%d levels) in %s", level, RSTRING_PTR(ip->location.label));
+ return rb_sprintf("block (%d levels) in %s", level, RSTRING_PTR(ip->name));
}
}
@@ -3132,7 +2931,7 @@ setup_args(rb_iseq_t *iseq, LINK_ANCHOR *args, NODE *argn, VALUE *flag)
INIT_ANCHOR(args_splat);
if (argn && nd_type(argn) == NODE_BLOCK_PASS) {
COMPILE(arg_block, "block", argn->nd_body);
- *flag |= VM_CALL_ARGS_BLOCKARG;
+ *flag |= VM_CALL_ARGS_BLOCKARG_BIT;
argn = argn->nd_head;
}
@@ -3143,7 +2942,7 @@ setup_args(rb_iseq_t *iseq, LINK_ANCHOR *args, NODE *argn, VALUE *flag)
COMPILE(args, "args (splat)", argn->nd_head);
argc = INT2FIX(1);
nsplat++;
- *flag |= VM_CALL_ARGS_SPLAT;
+ *flag |= VM_CALL_ARGS_SPLAT_BIT;
break;
}
case NODE_ARGSCAT:
@@ -3166,10 +2965,11 @@ setup_args(rb_iseq_t *iseq, LINK_ANCHOR *args, NODE *argn, VALUE *flag)
}
INSERT_LIST(args_splat, tmp);
nsplat++;
- *flag |= VM_CALL_ARGS_SPLAT;
+ *flag |= VM_CALL_ARGS_SPLAT_BIT;
if (next_is_array) {
- argc = INT2FIX(compile_array(iseq, args, argn->nd_head, COMPILE_ARRAY_TYPE_ARGS) + 1);
+ argc = INT2FIX(compile_array(iseq, args, argn->nd_head, Qfalse) + 1);
+ POP_ELEMENT(args);
}
else {
argn = argn->nd_head;
@@ -3178,7 +2978,8 @@ setup_args(rb_iseq_t *iseq, LINK_ANCHOR *args, NODE *argn, VALUE *flag)
break;
}
case NODE_ARRAY: {
- argc = INT2FIX(compile_array(iseq, args, argn, COMPILE_ARRAY_TYPE_ARGS));
+ argc = INT2FIX(compile_array(iseq, args, argn, Qfalse));
+ POP_ELEMENT(args);
break;
}
default: {
@@ -3198,7 +2999,7 @@ setup_args(rb_iseq_t *iseq, LINK_ANCHOR *args, NODE *argn, VALUE *flag)
ADD_SEQ(args, args_splat);
}
- if (*flag & VM_CALL_ARGS_BLOCKARG) {
+ if (*flag & VM_CALL_ARGS_BLOCKARG_BIT) {
ADD_SEQ(args, arg_block);
}
return argc;
@@ -3216,7 +3017,6 @@ static int
iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
{
enum node_type type;
- int line;
if (node == 0) {
if (!poped) {
@@ -3226,13 +3026,13 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
return COMPILE_OK;
}
- iseq->compile_data->last_line = line = (int)nd_line(node);
+ iseq->compile_data->last_line = (int)nd_line(node);
debug_node_start(node);
type = nd_type(node);
if (node->flags & NODE_FL_NEWLINE) {
- ADD_TRACE(ret, line, RUBY_EVENT_LINE);
+ ADD_TRACE(ret, nd_line(node), RUBY_EVENT_LINE);
}
switch (type) {
@@ -3256,9 +3056,9 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
INIT_ANCHOR(cond_seq);
INIT_ANCHOR(then_seq);
INIT_ANCHOR(else_seq);
- then_label = NEW_LABEL(line);
- else_label = NEW_LABEL(line);
- end_label = NEW_LABEL(line);
+ then_label = NEW_LABEL(nd_line(node));
+ else_label = NEW_LABEL(nd_line(node));
+ end_label = NEW_LABEL(nd_line(node));
compile_branch_condition(iseq, cond_seq, node->nd_cond,
then_label, else_label);
@@ -3269,7 +3069,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
ADD_LABEL(ret, then_label);
ADD_SEQ(ret, then_seq);
- ADD_INSNL(ret, line, jump, end_label);
+ ADD_INSNL(ret, nd_line(node), jump, end_label);
ADD_LABEL(ret, else_label);
ADD_SEQ(ret, else_seq);
@@ -3285,15 +3085,11 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
DECL_ANCHOR(head);
DECL_ANCHOR(body_seq);
DECL_ANCHOR(cond_seq);
- int only_special_literals = 1;
- VALUE literals = rb_hash_new();
+ VALUE special_literals = rb_ary_tmp_new(1);
INIT_ANCHOR(head);
INIT_ANCHOR(body_seq);
INIT_ANCHOR(cond_seq);
-
- RHASH_TBL(literals)->type = &cdhash_type;
-
if (node->nd_head == 0) {
COMPILE_(ret, "when", node->nd_body, poped);
break;
@@ -3302,39 +3098,37 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
node = node->nd_body;
type = nd_type(node);
- line = nd_line(node);
if (type != NODE_WHEN) {
COMPILE_ERROR((ERROR_ARGS "NODE_CASE: unexpected node. must be NODE_WHEN, but %s", ruby_node_name(type)));
}
- endlabel = NEW_LABEL(line);
- elselabel = NEW_LABEL(line);
+ endlabel = NEW_LABEL(nd_line(node));
+ elselabel = NEW_LABEL(nd_line(node));
ADD_SEQ(ret, head); /* case VAL */
while (type == NODE_WHEN) {
LABEL *l1;
- l1 = NEW_LABEL(line);
+ l1 = NEW_LABEL(nd_line(node));
ADD_LABEL(body_seq, l1);
- ADD_INSN(body_seq, line, pop);
+ ADD_INSN(body_seq, nd_line(node), pop);
COMPILE_(body_seq, "when body", node->nd_body, poped);
- ADD_INSNL(body_seq, line, jump, endlabel);
+ ADD_INSNL(body_seq, nd_line(node), jump, endlabel);
vals = node->nd_head;
if (vals) {
switch (nd_type(vals)) {
case NODE_ARRAY:
- only_special_literals = when_vals(iseq, cond_seq, vals, l1, only_special_literals, literals);
+ special_literals = when_vals(iseq, cond_seq, vals, l1, special_literals);
break;
case NODE_SPLAT:
case NODE_ARGSCAT:
case NODE_ARGSPUSH:
- only_special_literals = 0;
- ADD_INSN (cond_seq, nd_line(vals), dup);
+ special_literals = 0;
COMPILE(cond_seq, "when/cond splat", vals);
- ADD_INSN1(cond_seq, nd_line(vals), checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_CASE | VM_CHECKMATCH_ARRAY));
+ ADD_INSN1(cond_seq, nd_line(vals), checkincludearray, Qtrue);
ADD_INSNL(cond_seq, nd_line(vals), branchif, l1);
break;
default:
@@ -3351,14 +3145,13 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
break;
}
type = nd_type(node);
- line = nd_line(node);
}
/* else */
if (node) {
ADD_LABEL(cond_seq, elselabel);
- ADD_INSN(cond_seq, line, pop);
+ ADD_INSN(cond_seq, nd_line(node), pop);
COMPILE_(cond_seq, "else", node, poped);
- ADD_INSNL(cond_seq, line, jump, endlabel);
+ ADD_INSNL(cond_seq, nd_line(node), jump, endlabel);
}
else {
debugs("== else (implicit)\n");
@@ -3370,11 +3163,11 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
ADD_INSNL(cond_seq, nd_line(tempnode), jump, endlabel);
}
- if (only_special_literals) {
- iseq_add_mark_object(iseq, literals);
-
+ if (special_literals) {
ADD_INSN(ret, nd_line(tempnode), dup);
- ADD_INSN2(ret, nd_line(tempnode), opt_case_dispatch, literals, elselabel);
+ ADD_INSN2(ret, nd_line(tempnode), opt_case_dispatch,
+ special_literals, elselabel);
+ iseq_add_mark_object_compile_time(iseq, special_literals);
}
ADD_SEQ(ret, cond_seq);
@@ -3390,13 +3183,13 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
DECL_ANCHOR(body_seq);
INIT_ANCHOR(body_seq);
- endlabel = NEW_LABEL(line);
+ endlabel = NEW_LABEL(nd_line(node));
while (node && nd_type(node) == NODE_WHEN) {
- LABEL *l1 = NEW_LABEL(line = nd_line(node));
+ LABEL *l1 = NEW_LABEL(nd_line(node));
ADD_LABEL(body_seq, l1);
COMPILE_(body_seq, "when", node->nd_body, poped);
- ADD_INSNL(body_seq, line, jump, endlabel);
+ ADD_INSNL(body_seq, nd_line(node), jump, endlabel);
vals = node->nd_head;
if (!vals) {
@@ -3416,7 +3209,8 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
case NODE_ARGSPUSH:
ADD_INSN(ret, nd_line(vals), putnil);
COMPILE(ret, "when2/cond splat", vals);
- ADD_INSN1(ret, nd_line(vals), checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_WHEN | VM_CHECKMATCH_ARRAY));
+ ADD_INSN1(ret, nd_line(vals), checkincludearray, Qfalse);
+ ADD_INSN(ret, nd_line(vals), pop);
ADD_INSNL(ret, nd_line(vals), branchif, l1);
break;
default:
@@ -3444,28 +3238,28 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
struct iseq_compile_data_ensure_node_stack enl;
- LABEL *next_label = iseq->compile_data->start_label = NEW_LABEL(line); /* next */
- LABEL *redo_label = iseq->compile_data->redo_label = NEW_LABEL(line); /* redo */
- LABEL *break_label = iseq->compile_data->end_label = NEW_LABEL(line); /* break */
- LABEL *end_label = NEW_LABEL(line);
+ LABEL *next_label = iseq->compile_data->start_label = NEW_LABEL(nd_line(node)); /* next */
+ LABEL *redo_label = iseq->compile_data->redo_label = NEW_LABEL(nd_line(node)); /* redo */
+ LABEL *break_label = iseq->compile_data->end_label = NEW_LABEL(nd_line(node)); /* break */
+ LABEL *end_label = NEW_LABEL(nd_line(node));
- LABEL *next_catch_label = NEW_LABEL(line);
+ LABEL *next_catch_label = NEW_LABEL(nd_line(node));
LABEL *tmp_label = NULL;
iseq->compile_data->loopval_popped = 0;
push_ensure_entry(iseq, &enl, 0, 0);
if (type == NODE_OPT_N || node->nd_state == 1) {
- ADD_INSNL(ret, line, jump, next_label);
+ ADD_INSNL(ret, nd_line(node), jump, next_label);
}
else {
- tmp_label = NEW_LABEL(line);
- ADD_INSNL(ret, line, jump, tmp_label);
+ tmp_label = NEW_LABEL(nd_line(node));
+ ADD_INSNL(ret, nd_line(node), jump, tmp_label);
}
- ADD_INSN(ret, line, putnil);
+ ADD_INSN(ret, nd_line(node), putnil);
ADD_LABEL(ret, next_catch_label);
- ADD_INSN(ret, line, pop);
- ADD_INSNL(ret, line, jump, next_label);
+ ADD_INSN(ret, nd_line(node), pop);
+ ADD_INSNL(ret, nd_line(node), jump, next_label);
if (tmp_label) ADD_LABEL(ret, tmp_label);
ADD_LABEL(ret, redo_label);
@@ -3482,26 +3276,26 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
end_label, redo_label);
}
else {
- ADD_CALL_RECEIVER(ret, line);
- ADD_CALL(ret, line, ID2SYM(idGets), INT2FIX(0));
- ADD_INSNL(ret, line, branchif, redo_label);
+ ADD_CALL_RECEIVER(ret, nd_line(node));
+ ADD_CALL(ret, nd_line(node), ID2SYM(idGets), INT2FIX(0));
+ ADD_INSNL(ret, nd_line(node), branchif, redo_label);
/* opt_n */
}
ADD_LABEL(ret, end_label);
if (node->nd_state == Qundef) {
- /* ADD_INSN(ret, line, putundef); */
+ /* ADD_INSN(ret, nd_line(node), putundef); */
rb_bug("unsupported: putundef");
}
else {
- ADD_INSN(ret, line, putnil);
+ ADD_INSN(ret, nd_line(node), putnil);
}
ADD_LABEL(ret, break_label); /* break */
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
ADD_CATCH_ENTRY(CATCH_TYPE_BREAK, redo_label, break_label,
@@ -3521,8 +3315,9 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
case NODE_ITER:
case NODE_FOR:{
VALUE prevblock = iseq->compile_data->current_block;
- LABEL *retry_label = NEW_LABEL(line);
- LABEL *retry_end_l = NEW_LABEL(line);
+ LABEL *retry_label = NEW_LABEL(nd_line(node));
+ LABEL *retry_end_l = NEW_LABEL(nd_line(node));
+ ID mid = 0;
ADD_LABEL(ret, retry_label);
if (nd_type(node) == NODE_FOR) {
@@ -3530,21 +3325,22 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
iseq->compile_data->current_block =
NEW_CHILD_ISEQVAL(node->nd_body, make_name_for_block(iseq),
- ISEQ_TYPE_BLOCK, line);
+ ISEQ_TYPE_BLOCK, nd_line(node));
- ADD_SEND_R(ret, line, ID2SYM(idEach), INT2FIX(0),
+ mid = idEach;
+ ADD_SEND_R(ret, nd_line(node), ID2SYM(idEach), INT2FIX(0),
iseq->compile_data->current_block, INT2FIX(0));
}
else {
iseq->compile_data->current_block =
NEW_CHILD_ISEQVAL(node->nd_body, make_name_for_block(iseq),
- ISEQ_TYPE_BLOCK, line);
+ ISEQ_TYPE_BLOCK, nd_line(node));
COMPILE(ret, "iter caller", node->nd_iter);
}
ADD_LABEL(ret, retry_end_l);
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
iseq->compile_data->current_block = prevblock;
@@ -3560,23 +3356,23 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
/* while/until */
LABEL *splabel = NEW_LABEL(0);
ADD_LABEL(ret, splabel);
- ADD_ADJUST(ret, line, iseq->compile_data->redo_label);
+ ADD_ADJUST(ret, nd_line(node), iseq->compile_data->redo_label);
COMPILE_(ret, "break val (while/until)", node->nd_stts, iseq->compile_data->loopval_popped);
add_ensure_iseq(ret, iseq, 0);
- ADD_INSNL(ret, line, jump, iseq->compile_data->end_label);
+ ADD_INSNL(ret, nd_line(node), jump, iseq->compile_data->end_label);
ADD_ADJUST_RESTORE(ret, splabel);
if (!poped) {
- ADD_INSN(ret, line, putnil);
+ ADD_INSN(ret, nd_line(node), putnil);
}
}
else if (iseq->type == ISEQ_TYPE_BLOCK) {
break_by_insn:
/* escape from block */
COMPILE(ret, "break val (block)", node->nd_stts);
- ADD_INSN1(ret, line, throw, INT2FIX(level | 0x02) /* TAG_BREAK */ );
+ ADD_INSN1(ret, nd_line(node), throw, INT2FIX(level | 0x02) /* TAG_BREAK */ );
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
}
else if (iseq->type == ISEQ_TYPE_EVAL) {
@@ -3623,25 +3419,25 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
ADD_LABEL(ret, splabel);
COMPILE(ret, "next val/valid syntax?", node->nd_stts);
add_ensure_iseq(ret, iseq, 0);
- ADD_ADJUST(ret, line, iseq->compile_data->redo_label);
- ADD_INSNL(ret, line, jump, iseq->compile_data->start_label);
+ ADD_ADJUST(ret, nd_line(node), iseq->compile_data->redo_label);
+ ADD_INSNL(ret, nd_line(node), jump, iseq->compile_data->start_label);
ADD_ADJUST_RESTORE(ret, splabel);
if (!poped) {
- ADD_INSN(ret, line, putnil);
+ ADD_INSN(ret, nd_line(node), putnil);
}
}
else if (iseq->compile_data->end_label) {
LABEL *splabel = NEW_LABEL(0);
debugs("next in block\n");
ADD_LABEL(ret, splabel);
- ADD_ADJUST(ret, line, iseq->compile_data->start_label);
+ ADD_ADJUST(ret, nd_line(node), iseq->compile_data->start_label);
COMPILE(ret, "next val", node->nd_stts);
add_ensure_iseq(ret, iseq, 0);
- ADD_INSNL(ret, line, jump, iseq->compile_data->end_label);
+ ADD_INSNL(ret, nd_line(node), jump, iseq->compile_data->end_label);
ADD_ADJUST_RESTORE(ret, splabel);
if (!poped) {
- ADD_INSN(ret, line, putnil);
+ ADD_INSN(ret, nd_line(node), putnil);
}
}
else if (iseq->type == ISEQ_TYPE_EVAL) {
@@ -3673,10 +3469,10 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
}
if (ip != 0) {
COMPILE(ret, "next val", node->nd_stts);
- ADD_INSN1(ret, line, throw, INT2FIX(level | 0x03) /* TAG_NEXT */ );
+ ADD_INSN1(ret, nd_line(node), throw, INT2FIX(level | 0x03) /* TAG_NEXT */ );
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
}
else {
@@ -3690,12 +3486,12 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
LABEL *splabel = NEW_LABEL(0);
debugs("redo in while");
ADD_LABEL(ret, splabel);
- ADD_ADJUST(ret, line, iseq->compile_data->redo_label);
+ ADD_ADJUST(ret, nd_line(node), iseq->compile_data->redo_label);
add_ensure_iseq(ret, iseq, 0);
- ADD_INSNL(ret, line, jump, iseq->compile_data->redo_label);
+ ADD_INSNL(ret, nd_line(node), jump, iseq->compile_data->redo_label);
ADD_ADJUST_RESTORE(ret, splabel);
if (!poped) {
- ADD_INSN(ret, line, putnil);
+ ADD_INSN(ret, nd_line(node), putnil);
}
}
else if (iseq->type == ISEQ_TYPE_EVAL) {
@@ -3708,12 +3504,12 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
debugs("redo in block");
ADD_LABEL(ret, splabel);
add_ensure_iseq(ret, iseq, 0);
- ADD_ADJUST(ret, line, iseq->compile_data->start_label);
- ADD_INSNL(ret, line, jump, iseq->compile_data->start_label);
+ ADD_ADJUST(ret, nd_line(node), iseq->compile_data->start_label);
+ ADD_INSNL(ret, nd_line(node), jump, iseq->compile_data->start_label);
ADD_ADJUST_RESTORE(ret, splabel);
if (!poped) {
- ADD_INSN(ret, line, putnil);
+ ADD_INSN(ret, nd_line(node), putnil);
}
}
else {
@@ -3740,11 +3536,11 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
ip = ip->parent_iseq;
}
if (ip != 0) {
- ADD_INSN(ret, line, putnil);
- ADD_INSN1(ret, line, throw, INT2FIX(level | 0x05) /* TAG_REDO */ );
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN1(ret, nd_line(node), throw, INT2FIX(level | 0x05) /* TAG_REDO */ );
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
}
else {
@@ -3755,11 +3551,11 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
}
case NODE_RETRY:{
if (iseq->type == ISEQ_TYPE_RESCUE) {
- ADD_INSN(ret, line, putnil);
- ADD_INSN1(ret, line, throw, INT2FIX(0x04) /* TAG_RETRY */ );
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN1(ret, nd_line(node), throw, INT2FIX(0x04) /* TAG_RETRY */ );
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
}
else {
@@ -3772,26 +3568,26 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
break;
}
case NODE_RESCUE:{
- LABEL *lstart = NEW_LABEL(line);
- LABEL *lend = NEW_LABEL(line);
- LABEL *lcont = NEW_LABEL(line);
+ LABEL *lstart = NEW_LABEL(nd_line(node));
+ LABEL *lend = NEW_LABEL(nd_line(node));
+ LABEL *lcont = NEW_LABEL(nd_line(node));
VALUE rescue = NEW_CHILD_ISEQVAL(
node->nd_resq,
- rb_str_concat(rb_str_new2("rescue in "), iseq->location.label),
- ISEQ_TYPE_RESCUE, line);
+ rb_str_concat(rb_str_new2("rescue in "), iseq->name),
+ ISEQ_TYPE_RESCUE, nd_line(node));
ADD_LABEL(ret, lstart);
COMPILE(ret, "rescue head", node->nd_head);
ADD_LABEL(ret, lend);
if (node->nd_else) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
COMPILE(ret, "rescue else", node->nd_else);
}
- ADD_INSN(ret, line, nop);
+ ADD_INSN(ret, nd_line(node), nop);
ADD_LABEL(ret, lcont);
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
/* register catch entry */
@@ -3805,28 +3601,30 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
LABEL *label_miss, *label_hit;
while (resq) {
- label_miss = NEW_LABEL(line);
- label_hit = NEW_LABEL(line);
+ label_miss = NEW_LABEL(nd_line(node));
+ label_hit = NEW_LABEL(nd_line(node));
narg = resq->nd_args;
if (narg) {
switch (nd_type(narg)) {
case NODE_ARRAY:
while (narg) {
- ADD_INSN2(ret, line, getlocal, INT2FIX(2), INT2FIX(0));
COMPILE(ret, "rescue arg", narg->nd_head);
- ADD_INSN1(ret, line, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE));
- ADD_INSNL(ret, line, branchif, label_hit);
+ ADD_INSN2(ret, nd_line(node), getdynamic, INT2FIX(2), INT2FIX(0));
+ ADD_SEND(ret, nd_line(node), ID2SYM(idEqq), INT2FIX(1));
+ ADD_INSNL(ret, nd_line(node), branchif, label_hit);
narg = narg->nd_next;
}
break;
case NODE_SPLAT:
case NODE_ARGSCAT:
case NODE_ARGSPUSH:
- ADD_INSN2(ret, line, getlocal, INT2FIX(2), INT2FIX(0));
+ ADD_INSN2(ret, nd_line(node), getdynamic, INT2FIX(2), INT2FIX(0));
COMPILE(ret, "rescue/cond splat", narg);
- ADD_INSN1(ret, line, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE | VM_CHECKMATCH_ARRAY));
- ADD_INSNL(ret, line, branchif, label_hit);
+ ADD_INSN1(ret, nd_line(node), checkincludearray, Qtrue);
+ ADD_INSN(ret, nd_line(node), swap);
+ ADD_INSN(ret, nd_line(node), pop);
+ ADD_INSNL(ret, nd_line(node), branchif, label_hit);
break;
default:
rb_bug("NODE_RESBODY: unknown node (%s)",
@@ -3834,18 +3632,19 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
}
}
else {
- ADD_INSN2(ret, line, getlocal, INT2FIX(2), INT2FIX(0));
- ADD_INSN1(ret, line, putobject, rb_eStandardError);
- ADD_INSN1(ret, line, checkmatch, INT2FIX(VM_CHECKMATCH_TYPE_RESCUE));
- ADD_INSNL(ret, line, branchif, label_hit);
+ ADD_INSN1(ret, nd_line(node), putobject,
+ rb_eStandardError);
+ ADD_INSN2(ret, nd_line(node), getdynamic, INT2FIX(2), INT2FIX(0));
+ ADD_SEND(ret, nd_line(node), ID2SYM(idEqq), INT2FIX(1));
+ ADD_INSNL(ret, nd_line(node), branchif, label_hit);
}
- ADD_INSNL(ret, line, jump, label_miss);
+ ADD_INSNL(ret, nd_line(node), jump, label_miss);
ADD_LABEL(ret, label_hit);
COMPILE(ret, "resbody body", resq->nd_body);
if (iseq->compile_data->option->tailcall_optimization) {
- ADD_INSN(ret, line, nop);
+ ADD_INSN(ret, nd_line(node), nop);
}
- ADD_INSN(ret, line, leave);
+ ADD_INSN(ret, nd_line(node), leave);
ADD_LABEL(ret, label_miss);
resq = resq->nd_head;
}
@@ -3856,11 +3655,11 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
VALUE ensure = NEW_CHILD_ISEQVAL(node->nd_ensr,
rb_str_concat(rb_str_new2
("ensure in "),
- iseq->location.label),
- ISEQ_TYPE_ENSURE, line);
- LABEL *lstart = NEW_LABEL(line);
- LABEL *lend = NEW_LABEL(line);
- LABEL *lcont = NEW_LABEL(line);
+ iseq->name),
+ ISEQ_TYPE_ENSURE, nd_line(node));
+ LABEL *lstart = NEW_LABEL(nd_line(node));
+ LABEL *lend = NEW_LABEL(nd_line(node));
+ LABEL *lcont = NEW_LABEL(nd_line(node));
struct ensure_range er;
struct iseq_compile_data_ensure_node_stack enl;
struct ensure_range *erange;
@@ -3877,7 +3676,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
COMPILE_(ret, "ensure head", node->nd_head, poped);
ADD_LABEL(ret, lend);
if (ensr->anchor.next == 0) {
- ADD_INSN(ret, line, nop);
+ ADD_INSN(ret, nd_line(node), nop);
}
else {
ADD_SEQ(ret, ensr);
@@ -3897,19 +3696,19 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
case NODE_AND:
case NODE_OR:{
- LABEL *end_label = NEW_LABEL(line);
+ LABEL *end_label = NEW_LABEL(nd_line(node));
COMPILE(ret, "nd_1st", node->nd_1st);
if (!poped) {
- ADD_INSN(ret, line, dup);
+ ADD_INSN(ret, nd_line(node), dup);
}
if (type == NODE_AND) {
- ADD_INSNL(ret, line, branchunless, end_label);
+ ADD_INSNL(ret, nd_line(node), branchunless, end_label);
}
else {
- ADD_INSNL(ret, line, branchif, end_label);
+ ADD_INSNL(ret, nd_line(node), branchif, end_label);
}
if (!poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
COMPILE_(ret, "nd_2nd", node->nd_2nd, poped);
ADD_LABEL(ret, end_label);
@@ -3929,9 +3728,9 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
COMPILE(ret, "rvalue", node->nd_value);
if (!poped) {
- ADD_INSN(ret, line, dup);
+ ADD_INSN(ret, nd_line(node), dup);
}
- ADD_INSN2(ret, line, setlocal, INT2FIX(idx), INT2FIX(get_lvar_level(iseq)));
+ ADD_INSN1(ret, nd_line(node), setlocal, INT2FIX(idx));
break;
}
@@ -3942,7 +3741,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
debugp_param("dassn id", rb_str_new2(rb_id2name(node->nd_vid) ? rb_id2name(node->nd_vid) : "*"));
if (!poped) {
- ADD_INSN(ret, line, dup);
+ ADD_INSN(ret, nd_line(node), dup);
}
idx = get_dyna_var_idx(iseq, node->nd_vid, &lv, &ls);
@@ -3951,16 +3750,17 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
rb_bug("NODE_DASGN(_CURR): unknown id (%s)", rb_id2name(node->nd_vid));
}
- ADD_INSN2(ret, line, setlocal, INT2FIX(ls - idx), INT2FIX(lv));
+ ADD_INSN2(ret, nd_line(node), setdynamic,
+ INT2FIX(ls - idx), INT2FIX(lv));
break;
}
case NODE_GASGN:{
COMPILE(ret, "lvalue", node->nd_value);
if (!poped) {
- ADD_INSN(ret, line, dup);
+ ADD_INSN(ret, nd_line(node), dup);
}
- ADD_INSN1(ret, line, setglobal,
+ ADD_INSN1(ret, nd_line(node), setglobal,
((VALUE)node->nd_entry | 1));
break;
}
@@ -3968,9 +3768,9 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
case NODE_IASGN2:{
COMPILE(ret, "lvalue", node->nd_value);
if (!poped) {
- ADD_INSN(ret, line, dup);
+ ADD_INSN(ret, nd_line(node), dup);
}
- ADD_INSN2(ret, line, setinstancevariable,
+ ADD_INSN2(ret, nd_line(node), setinstancevariable,
ID2SYM(node->nd_vid), INT2FIX(iseq->ic_size++));
break;
}
@@ -3978,26 +3778,26 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
COMPILE(ret, "lvalue", node->nd_value);
if (!poped) {
- ADD_INSN(ret, line, dup);
+ ADD_INSN(ret, nd_line(node), dup);
}
if (node->nd_vid) {
- ADD_INSN1(ret, line, putspecialobject,
+ ADD_INSN1(ret, nd_line(node), putspecialobject,
INT2FIX(VM_SPECIAL_OBJECT_CONST_BASE));
- ADD_INSN1(ret, line, setconstant, ID2SYM(node->nd_vid));
+ ADD_INSN1(ret, nd_line(node), setconstant, ID2SYM(node->nd_vid));
}
else {
compile_cpath(ret, iseq, node->nd_else);
- ADD_INSN1(ret, line, setconstant, ID2SYM(node->nd_else->nd_mid));
+ ADD_INSN1(ret, nd_line(node), setconstant, ID2SYM(node->nd_else->nd_mid));
}
break;
}
case NODE_CVASGN:{
COMPILE(ret, "cvasgn val", node->nd_value);
if (!poped) {
- ADD_INSN(ret, line, dup);
+ ADD_INSN(ret, nd_line(node), dup);
}
- ADD_INSN1(ret, line, setclassvariable,
+ ADD_INSN1(ret, nd_line(node), setclassvariable,
ID2SYM(node->nd_vid));
break;
}
@@ -4032,7 +3832,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
*/
if (!poped) {
- ADD_INSN(ret, line, putnil);
+ ADD_INSN(ret, nd_line(node), putnil);
}
COMPILE(ret, "NODE_OP_ASGN1 recv", node->nd_recv);
switch (nd_type(node->nd_args->nd_head)) {
@@ -4046,8 +3846,8 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
argc = setup_args(iseq, args, node->nd_args->nd_head, &flag);
ADD_SEQ(ret, args);
}
- ADD_INSN1(ret, line, dupn, FIXNUM_INC(argc, 1 + boff));
- ADD_SEND_R(ret, line, ID2SYM(idAREF), argc, Qfalse, LONG2FIX(flag));
+ ADD_INSN1(ret, nd_line(node), dupn, FIXNUM_INC(argc, 1 + boff));
+ ADD_SEND_R(ret, nd_line(node), ID2SYM(idAREF), argc, Qfalse, LONG2FIX(flag));
if (id == 0 || id == 1) {
/* 0: or, 1: and
@@ -4059,92 +3859,92 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
nil
end
*/
- LABEL *label = NEW_LABEL(line);
- LABEL *lfin = NEW_LABEL(line);
+ LABEL *label = NEW_LABEL(nd_line(node));
+ LABEL *lfin = NEW_LABEL(nd_line(node));
- ADD_INSN(ret, line, dup);
+ ADD_INSN(ret, nd_line(node), dup);
if (id == 0) {
/* or */
- ADD_INSNL(ret, line, branchif, label);
+ ADD_INSNL(ret, nd_line(node), branchif, label);
}
else {
/* and */
- ADD_INSNL(ret, line, branchunless, label);
+ ADD_INSNL(ret, nd_line(node), branchunless, label);
}
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
COMPILE(ret, "NODE_OP_ASGN1 args->body: ", node->nd_args->nd_body);
if (!poped) {
- ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 2+boff));
+ ADD_INSN1(ret, nd_line(node), setn, FIXNUM_INC(argc, 2+boff));
}
- if (flag & VM_CALL_ARGS_SPLAT) {
- ADD_INSN1(ret, line, newarray, INT2FIX(1));
+ if (flag & VM_CALL_ARGS_SPLAT_BIT) {
+ ADD_INSN1(ret, nd_line(node), newarray, INT2FIX(1));
if (boff > 0) {
- ADD_INSN1(ret, line, dupn, INT2FIX(3));
- ADD_INSN(ret, line, swap);
- ADD_INSN(ret, line, pop);
+ ADD_INSN1(ret, nd_line(node), dupn, INT2FIX(3));
+ ADD_INSN(ret, nd_line(node), swap);
+ ADD_INSN(ret, nd_line(node), pop);
}
- ADD_INSN(ret, line, concatarray);
+ ADD_INSN(ret, nd_line(node), concatarray);
if (boff > 0) {
- ADD_INSN1(ret, line, setn, INT2FIX(3));
- ADD_INSN(ret, line, pop);
- ADD_INSN(ret, line, pop);
+ ADD_INSN1(ret, nd_line(node), setn, INT2FIX(3));
+ ADD_INSN(ret, nd_line(node), pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
- ADD_SEND_R(ret, line, ID2SYM(idASET),
+ ADD_SEND_R(ret, nd_line(node), ID2SYM(idASET),
argc, Qfalse, LONG2FIX(flag));
}
else {
if (boff > 0)
- ADD_INSN(ret, line, swap);
- ADD_SEND_R(ret, line, ID2SYM(idASET),
+ ADD_INSN(ret, nd_line(node), swap);
+ ADD_SEND_R(ret, nd_line(node), ID2SYM(idASET),
FIXNUM_INC(argc, 1), Qfalse, LONG2FIX(flag));
}
- ADD_INSN(ret, line, pop);
- ADD_INSNL(ret, line, jump, lfin);
+ ADD_INSN(ret, nd_line(node), pop);
+ ADD_INSNL(ret, nd_line(node), jump, lfin);
ADD_LABEL(ret, label);
if (!poped) {
- ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 2+boff));
+ ADD_INSN1(ret, nd_line(node), setn, FIXNUM_INC(argc, 2+boff));
}
- ADD_INSN1(ret, line, adjuststack, FIXNUM_INC(argc, 2+boff));
+ ADD_INSN1(ret, nd_line(node), adjuststack, FIXNUM_INC(argc, 2+boff));
ADD_LABEL(ret, lfin);
}
else {
COMPILE(ret, "NODE_OP_ASGN1 args->body: ", node->nd_args->nd_body);
- ADD_SEND(ret, line, ID2SYM(id), INT2FIX(1));
+ ADD_SEND(ret, nd_line(node), ID2SYM(id), INT2FIX(1));
if (!poped) {
- ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 2+boff));
+ ADD_INSN1(ret, nd_line(node), setn, FIXNUM_INC(argc, 2+boff));
}
- if (flag & VM_CALL_ARGS_SPLAT) {
- ADD_INSN1(ret, line, newarray, INT2FIX(1));
+ if (flag & VM_CALL_ARGS_SPLAT_BIT) {
+ ADD_INSN1(ret, nd_line(node), newarray, INT2FIX(1));
if (boff > 0) {
- ADD_INSN1(ret, line, dupn, INT2FIX(3));
- ADD_INSN(ret, line, swap);
- ADD_INSN(ret, line, pop);
+ ADD_INSN1(ret, nd_line(node), dupn, INT2FIX(3));
+ ADD_INSN(ret, nd_line(node), swap);
+ ADD_INSN(ret, nd_line(node), pop);
}
- ADD_INSN(ret, line, concatarray);
+ ADD_INSN(ret, nd_line(node), concatarray);
if (boff > 0) {
- ADD_INSN1(ret, line, setn, INT2FIX(3));
- ADD_INSN(ret, line, pop);
- ADD_INSN(ret, line, pop);
+ ADD_INSN1(ret, nd_line(node), setn, INT2FIX(3));
+ ADD_INSN(ret, nd_line(node), pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
- ADD_SEND_R(ret, line, ID2SYM(idASET),
+ ADD_SEND_R(ret, nd_line(node), ID2SYM(idASET),
argc, Qfalse, LONG2FIX(flag));
}
else {
if (boff > 0)
- ADD_INSN(ret, line, swap);
- ADD_SEND_R(ret, line, ID2SYM(idASET),
+ ADD_INSN(ret, nd_line(node), swap);
+ ADD_SEND_R(ret, nd_line(node), ID2SYM(idASET),
FIXNUM_INC(argc, 1), Qfalse, LONG2FIX(flag));
}
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_OP_ASGN2:{
ID atype = node->nd_next->nd_mid;
- LABEL *lfin = NEW_LABEL(line);
- LABEL *lcfin = NEW_LABEL(line);
+ LABEL *lfin = NEW_LABEL(nd_line(node));
+ LABEL *lcfin = NEW_LABEL(nd_line(node));
/*
class C; attr_accessor :c; end
r = C.new
@@ -4188,121 +3988,53 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
*/
COMPILE(ret, "NODE_OP_ASGN2#recv", node->nd_recv);
- ADD_INSN(ret, line, dup);
- ADD_SEND(ret, line, ID2SYM(node->nd_next->nd_vid),
+ ADD_INSN(ret, nd_line(node), dup);
+ ADD_SEND(ret, nd_line(node), ID2SYM(node->nd_next->nd_vid),
INT2FIX(0));
if (atype == 0 || atype == 1) { /* 0: OR or 1: AND */
- ADD_INSN(ret, line, dup);
+ ADD_INSN(ret, nd_line(node), dup);
if (atype == 0) {
- ADD_INSNL(ret, line, branchif, lcfin);
+ ADD_INSNL(ret, nd_line(node), branchif, lcfin);
}
else {
- ADD_INSNL(ret, line, branchunless, lcfin);
+ ADD_INSNL(ret, nd_line(node), branchunless, lcfin);
}
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
COMPILE(ret, "NODE_OP_ASGN2 val", node->nd_value);
- ADD_INSN(ret, line, swap);
- ADD_INSN1(ret, line, topn, INT2FIX(1));
- ADD_SEND(ret, line, ID2SYM(node->nd_next->nd_aid),
+ ADD_INSN(ret, nd_line(node), swap);
+ ADD_INSN1(ret, nd_line(node), topn, INT2FIX(1));
+ ADD_SEND(ret, nd_line(node), ID2SYM(node->nd_next->nd_aid),
INT2FIX(1));
- ADD_INSNL(ret, line, jump, lfin);
+ ADD_INSNL(ret, nd_line(node), jump, lfin);
ADD_LABEL(ret, lcfin);
- ADD_INSN(ret, line, swap);
+ ADD_INSN(ret, nd_line(node), swap);
ADD_LABEL(ret, lfin);
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
if (poped) {
/* we can apply more optimize */
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
}
else {
COMPILE(ret, "NODE_OP_ASGN2 val", node->nd_value);
- ADD_SEND(ret, line, ID2SYM(node->nd_next->nd_mid),
+ ADD_SEND(ret, nd_line(node), ID2SYM(node->nd_next->nd_mid),
INT2FIX(1));
if (!poped) {
- ADD_INSN(ret, line, swap);
- ADD_INSN1(ret, line, topn, INT2FIX(1));
+ ADD_INSN(ret, nd_line(node), swap);
+ ADD_INSN1(ret, nd_line(node), topn, INT2FIX(1));
}
- ADD_SEND(ret, line, ID2SYM(node->nd_next->nd_aid),
+ ADD_SEND(ret, nd_line(node), ID2SYM(node->nd_next->nd_aid),
INT2FIX(1));
- ADD_INSN(ret, line, pop);
- }
- break;
- }
- case NODE_OP_CDECL: {
- LABEL *lfin = 0;
- LABEL *lassign = 0;
- ID mid;
-
- switch (nd_type(node->nd_head)) {
- case NODE_COLON3:
- ADD_INSN1(ret, line, putobject, rb_cObject);
- break;
- case NODE_COLON2:
- COMPILE(ret, "NODE_OP_CDECL/colon2#nd_head", node->nd_head->nd_head);
- break;
- default:
- do {
- COMPILE_ERROR((ERROR_ARGS "%s: invalid node in NODE_OP_CDECL",
- ruby_node_name(nd_type(node->nd_head))));
- } while (0);
- return COMPILE_NG;
- }
- mid = node->nd_head->nd_mid;
- /* cref */
- if (node->nd_aid == 0) {
- lassign = NEW_LABEL(line);
- ADD_INSN(ret, line, dup); /* cref cref */
- ADD_INSN3(ret, line, defined, INT2FIX(DEFINED_CONST),
- ID2SYM(mid), Qfalse); /* cref bool */
- ADD_INSNL(ret, line, branchunless, lassign); /* cref */
- }
- ADD_INSN(ret, line, dup); /* cref cref */
- ADD_INSN1(ret, line, getconstant, ID2SYM(mid)); /* cref obj */
-
- if (node->nd_aid == 0 || node->nd_aid == 1) {
- lfin = NEW_LABEL(line);
- if (!poped) ADD_INSN(ret, line, dup); /* cref [obj] obj */
- if (node->nd_aid == 0)
- ADD_INSNL(ret, line, branchif, lfin);
- else
- ADD_INSNL(ret, line, branchunless, lfin);
- /* cref [obj] */
- if (!poped) ADD_INSN(ret, line, pop); /* cref */
- if (lassign) ADD_LABEL(ret, lassign);
- COMPILE(ret, "NODE_OP_CDECL#nd_value", node->nd_value);
- /* cref value */
- if (poped)
- ADD_INSN1(ret, line, topn, INT2FIX(1)); /* cref value cref */
- else {
- ADD_INSN1(ret, line, dupn, INT2FIX(2)); /* cref value cref value */
- ADD_INSN(ret, line, swap); /* cref value value cref */
- }
- ADD_INSN1(ret, line, setconstant, ID2SYM(mid)); /* cref [value] */
- ADD_LABEL(ret, lfin); /* cref [value] */
- if (!poped) ADD_INSN(ret, line, swap); /* [value] cref */
- ADD_INSN(ret, line, pop); /* [value] */
- }
- else {
- COMPILE(ret, "NODE_OP_CDECL#nd_value", node->nd_value);
- /* cref obj value */
- ADD_CALL(ret, line, ID2SYM(node->nd_aid), INT2FIX(1));
- /* cref value */
- ADD_INSN(ret, line, swap); /* value cref */
- if (!poped) {
- ADD_INSN1(ret, line, topn, INT2FIX(1)); /* value cref value */
- ADD_INSN(ret, line, swap); /* value value cref */
- }
- ADD_INSN1(ret, line, setconstant, ID2SYM(mid));
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_OP_ASGN_AND:
case NODE_OP_ASGN_OR:{
- LABEL *lfin = NEW_LABEL(line);
+ LABEL *lfin = NEW_LABEL(nd_line(node));
LABEL *lassign;
if (nd_type(node) == NODE_OP_ASGN_OR) {
@@ -4312,32 +4044,32 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
defined_expr(iseq, ret, node->nd_head, lfinish, Qfalse);
lassign = lfinish[1];
if (!lassign) {
- lassign = NEW_LABEL(line);
+ lassign = NEW_LABEL(nd_line(node));
}
- ADD_INSNL(ret, line, branchunless, lassign);
+ ADD_INSNL(ret, nd_line(node), branchunless, lassign);
}
else {
- lassign = NEW_LABEL(line);
+ lassign = NEW_LABEL(nd_line(node));
}
COMPILE(ret, "NODE_OP_ASGN_AND/OR#nd_head", node->nd_head);
- ADD_INSN(ret, line, dup);
+ ADD_INSN(ret, nd_line(node), dup);
if (nd_type(node) == NODE_OP_ASGN_AND) {
- ADD_INSNL(ret, line, branchunless, lfin);
+ ADD_INSNL(ret, nd_line(node), branchunless, lfin);
}
else {
- ADD_INSNL(ret, line, branchif, lfin);
+ ADD_INSNL(ret, nd_line(node), branchif, lfin);
}
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
ADD_LABEL(ret, lassign);
COMPILE(ret, "NODE_OP_ASGN_AND/OR#nd_value", node->nd_value);
ADD_LABEL(ret, lfin);
if (poped) {
/* we can apply more optimize */
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
@@ -4361,18 +4093,12 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
INIT_ANCHOR(args);
#if SUPPORT_JOKE
if (nd_type(node) == NODE_VCALL) {
- ID id_bitblt;
- ID id_answer;
-
- CONST_ID(id_bitblt, "bitblt");
- CONST_ID(id_answer, "the_answer_to_life_the_universe_and_everything");
-
- if (mid == id_bitblt) {
- ADD_INSN(ret, line, bitblt);
+ if (mid == idBitblt) {
+ ADD_INSN(ret, nd_line(node), bitblt);
break;
}
- else if (mid == id_answer) {
- ADD_INSN(ret, line, answer);
+ else if (mid == idAnswer) {
+ ADD_INSN(ret, nd_line(node), answer);
break;
}
}
@@ -4400,8 +4126,8 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
label_name = SYM2ID(node->nd_args->nd_head->nd_lit);
if (!st_lookup(labels_table, (st_data_t)label_name, &data)) {
- label = NEW_LABEL(line);
- label->position = line;
+ label = NEW_LABEL(nd_line(node));
+ label->position = nd_line(node);
st_insert(labels_table, (st_data_t)label_name, (st_data_t)label);
}
else {
@@ -4414,7 +4140,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
if (mid == goto_id) {
- ADD_INSNL(ret, line, jump, label);
+ ADD_INSNL(ret, nd_line(node), jump, label);
}
else {
ADD_LABEL(ret, label);
@@ -4428,7 +4154,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
COMPILE(recv, "recv", node->nd_recv);
}
else if (type == NODE_FCALL || type == NODE_VCALL) {
- ADD_CALL_RECEIVER(recv, line);
+ ADD_CALL_RECEIVER(recv, nd_line(node));
}
/* args */
@@ -4447,45 +4173,43 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
switch (nd_type(node)) {
case NODE_VCALL:
- flag |= VM_CALL_VCALL;
+ flag |= VM_CALL_VCALL_BIT;
/* VCALL is funcall, so fall through */
case NODE_FCALL:
- flag |= VM_CALL_FCALL;
+ flag |= VM_CALL_FCALL_BIT;
}
- ADD_SEND_R(ret, line, ID2SYM(mid),
+ ADD_SEND_R(ret, nd_line(node), ID2SYM(mid),
argc, parent_block, LONG2FIX(flag));
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_SUPER:
case NODE_ZSUPER:{
DECL_ANCHOR(args);
- int argc;
+ VALUE argc;
VALUE flag = 0;
VALUE parent_block = iseq->compile_data->current_block;
INIT_ANCHOR(args);
iseq->compile_data->current_block = Qfalse;
if (nd_type(node) == NODE_SUPER) {
- VALUE vargc = setup_args(iseq, args, node->nd_args, &flag);
- argc = FIX2INT(vargc);
+ argc = setup_args(iseq, args, node->nd_args, &flag);
}
else {
/* NODE_ZSUPER */
int i;
rb_iseq_t *liseq = iseq->local_iseq;
- int lvar_level = get_lvar_level(iseq);
- argc = liseq->argc;
+ argc = INT2FIX(liseq->argc);
/* normal arguments */
for (i = 0; i < liseq->argc; i++) {
int idx = liseq->local_size - i;
- ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));
+ ADD_INSN1(args, nd_line(node), getlocal, INT2FIX(idx));
}
if (!liseq->arg_simple) {
@@ -4494,18 +4218,18 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
int j;
for (j = 0; j < liseq->arg_opts - 1; j++) {
int idx = liseq->local_size - (i + j);
- ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));
+ ADD_INSN1(args, nd_line(node), getlocal, INT2FIX(idx));
}
i += j;
- argc = i;
+ argc = INT2FIX(i);
}
if (liseq->arg_rest != -1) {
/* rest argument */
int idx = liseq->local_size - liseq->arg_rest;
- ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));
- argc = liseq->arg_rest + 1;
- flag |= VM_CALL_ARGS_SPLAT;
+ ADD_INSN1(args, nd_line(node), getlocal, INT2FIX(idx));
+ argc = INT2FIX(liseq->arg_rest + 1);
+ flag |= VM_CALL_ARGS_SPLAT_BIT;
}
if (liseq->arg_post_len) {
@@ -4517,63 +4241,43 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
int j;
for (j=0; j<post_len; j++) {
int idx = liseq->local_size - (post_start + j);
- ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));
+ ADD_INSN1(args, nd_line(node), getlocal, INT2FIX(idx));
}
- ADD_INSN1(args, line, newarray, INT2FIX(j));
- ADD_INSN (args, line, concatarray);
+ ADD_INSN1(args, nd_line(node), newarray, INT2FIX(j));
+ ADD_INSN (args, nd_line(node), concatarray);
/* argc is setteled at above */
}
else {
int j;
for (j=0; j<post_len; j++) {
int idx = liseq->local_size - (post_start + j);
- ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));
+ ADD_INSN1(args, nd_line(node), getlocal, INT2FIX(idx));
}
- argc = post_len + post_start;
- }
- }
-
- if (liseq->arg_keyword >= 0) {
- int local_size = liseq->local_size;
- int idx = local_size - liseq->arg_keyword;
- argc++;
- ADD_INSN1(args, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));
- ADD_SEND (args, line, ID2SYM(rb_intern("dup")), INT2FIX(0));
- for (i = 0; i < liseq->arg_keywords; ++i) {
- ID id = liseq->arg_keyword_table[i];
- idx = local_size - get_local_var_idx(liseq, id);
- ADD_INSN1(args, line, putobject, ID2SYM(id));
- ADD_INSN2(args, line, getlocal, INT2FIX(idx), INT2FIX(lvar_level));
- }
- ADD_SEND(args, line, ID2SYM(id_core_hash_merge_ptr), INT2FIX(i * 2 + 1));
- if (liseq->arg_rest != -1) {
- ADD_INSN1(args, line, newarray, INT2FIX(1));
- ADD_INSN (args, line, concatarray);
- --argc;
+ argc = INT2FIX(post_len + post_start);
}
}
}
}
/* dummy receiver */
- ADD_INSN1(ret, line, putobject, nd_type(node) == NODE_ZSUPER ? Qfalse : Qtrue);
+ ADD_INSN1(ret, nd_line(node), putobject,
+ nd_type(node) == NODE_ZSUPER ? Qfalse : Qtrue);
ADD_SEQ(ret, args);
- ADD_INSN1(ret, line, invokesuper, new_callinfo(iseq, 0, argc, parent_block,
- flag | VM_CALL_SUPER | VM_CALL_FCALL));
+ ADD_INSN3(ret, nd_line(node), invokesuper,
+ argc, parent_block, LONG2FIX(flag));
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_ARRAY:{
- compile_array_(iseq, ret, node, COMPILE_ARRAY_TYPE_ARRAY, poped);
+ compile_array_(iseq, ret, node, Qtrue, poped);
break;
}
case NODE_ZARRAY:{
if (!poped) {
- ADD_INSN1(ret, line, newarray, INT2FIX(0));
+ ADD_INSN1(ret, nd_line(node), newarray, INT2FIX(0));
}
break;
}
@@ -4583,33 +4287,37 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
COMPILE(ret, "values item", n->nd_head);
n = n->nd_next;
}
- ADD_INSN1(ret, line, newarray, INT2FIX(node->nd_alen));
+ ADD_INSN1(ret, nd_line(node), newarray, INT2FIX(node->nd_alen));
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_HASH:{
DECL_ANCHOR(list);
+ VALUE size = 0;
int type = node->nd_head ? nd_type(node->nd_head) : NODE_ZARRAY;
INIT_ANCHOR(list);
switch (type) {
- case NODE_ARRAY:
- compile_array(iseq, list, node->nd_head, COMPILE_ARRAY_TYPE_HASH);
+ case NODE_ARRAY:{
+ compile_array(iseq, list, node->nd_head, Qfalse);
+ size = OPERAND_AT(POP_ELEMENT(list), 0);
ADD_SEQ(ret, list);
break;
-
+ }
case NODE_ZARRAY:
- ADD_INSN1(ret, line, newhash, INT2FIX(0));
+ size = INT2FIX(0);
break;
default:
rb_bug("can't make hash with this node: %s", ruby_node_name(type));
}
+ ADD_INSN1(ret, nd_line(node), newhash, size);
+
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
@@ -4626,25 +4334,25 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
if (is->type == ISEQ_TYPE_METHOD) {
splabel = NEW_LABEL(0);
ADD_LABEL(ret, splabel);
- ADD_ADJUST(ret, line, 0);
+ ADD_ADJUST(ret, nd_line(node), 0);
}
COMPILE(ret, "return nd_stts (return val)", node->nd_stts);
if (is->type == ISEQ_TYPE_METHOD) {
add_ensure_iseq(ret, iseq, 1);
- ADD_TRACE(ret, line, RUBY_EVENT_RETURN);
- ADD_INSN(ret, line, leave);
+ ADD_TRACE(ret, nd_line(node), RUBY_EVENT_RETURN);
+ ADD_INSN(ret, nd_line(node), leave);
ADD_ADJUST_RESTORE(ret, splabel);
if (!poped) {
- ADD_INSN(ret, line, putnil);
+ ADD_INSN(ret, nd_line(node), putnil);
}
}
else {
- ADD_INSN1(ret, line, throw, INT2FIX(0x01) /* TAG_RETURN */ );
+ ADD_INSN1(ret, nd_line(node), throw, INT2FIX(0x01) /* TAG_RETURN */ );
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
}
}
@@ -4669,10 +4377,10 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
}
ADD_SEQ(ret, args);
- ADD_INSN1(ret, line, invokeblock, new_callinfo(iseq, 0, FIX2INT(argc), 0, flag));
+ ADD_INSN2(ret, nd_line(node), invokeblock, argc, LONG2FIX(flag));
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
@@ -4682,7 +4390,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
int idx = iseq->local_iseq->local_size - get_local_var_idx(iseq, id);
debugs("id: %s idx: %d\n", rb_id2name(id), idx);
- ADD_INSN2(ret, line, getlocal, INT2FIX(idx), INT2FIX(get_lvar_level(iseq)));
+ ADD_INSN1(ret, nd_line(node), getlocal, INT2FIX(idx));
}
break;
}
@@ -4694,22 +4402,22 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
if (idx < 0) {
rb_bug("unknown dvar (%s)", rb_id2name(node->nd_vid));
}
- ADD_INSN2(ret, line, getlocal, INT2FIX(ls - idx), INT2FIX(lv));
+ ADD_INSN2(ret, nd_line(node), getdynamic, INT2FIX(ls - idx), INT2FIX(lv));
}
break;
}
case NODE_GVAR:{
- ADD_INSN1(ret, line, getglobal,
+ ADD_INSN1(ret, nd_line(node), getglobal,
((VALUE)node->nd_entry | 1));
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_IVAR:{
debugi("nd_vid", node->nd_vid);
if (!poped) {
- ADD_INSN2(ret, line, getinstancevariable,
+ ADD_INSN2(ret, nd_line(node), getinstancevariable,
ID2SYM(node->nd_vid), INT2FIX(iseq->ic_size++));
}
break;
@@ -4718,41 +4426,41 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
debugi("nd_vid", node->nd_vid);
if (iseq->compile_data->option->inline_const_cache) {
- LABEL *lend = NEW_LABEL(line);
+ LABEL *lend = NEW_LABEL(nd_line(node));
int ic_index = iseq->ic_size++;
- ADD_INSN2(ret, line, getinlinecache, lend, INT2FIX(ic_index));
- ADD_INSN1(ret, line, getconstant, ID2SYM(node->nd_vid));
- ADD_INSN1(ret, line, setinlinecache, INT2FIX(ic_index));
+ ADD_INSN2(ret, nd_line(node), getinlinecache, lend, INT2FIX(ic_index));
+ ADD_INSN1(ret, nd_line(node), getconstant, ID2SYM(node->nd_vid));
+ ADD_INSN1(ret, nd_line(node), setinlinecache, INT2FIX(ic_index));
ADD_LABEL(ret, lend);
}
else {
- ADD_INSN(ret, line, putnil);
- ADD_INSN1(ret, line, getconstant, ID2SYM(node->nd_vid));
+ ADD_INSN(ret, nd_line(node), putnil);
+ ADD_INSN1(ret, nd_line(node), getconstant, ID2SYM(node->nd_vid));
}
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_CVAR:{
if (!poped) {
- ADD_INSN1(ret, line, getclassvariable,
+ ADD_INSN1(ret, nd_line(node), getclassvariable,
ID2SYM(node->nd_vid));
}
break;
}
case NODE_NTH_REF:{
if (!poped) {
- ADD_INSN2(ret, line, getspecial, INT2FIX(1) /* '~' */,
+ ADD_INSN2(ret, nd_line(node), getspecial, INT2FIX(1) /* '~' */,
INT2FIX(node->nd_nth << 1));
}
break;
}
case NODE_BACK_REF:{
if (!poped) {
- ADD_INSN2(ret, line, getspecial, INT2FIX(1) /* '~' */,
+ ADD_INSN2(ret, nd_line(node), getspecial, INT2FIX(1) /* '~' */,
INT2FIX(0x01 | (node->nd_nth << 1)));
}
break;
@@ -4765,10 +4473,10 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
INIT_ANCHOR(recv);
INIT_ANCHOR(val);
- switch (nd_type(node)) {
+ switch(nd_type(node)) {
case NODE_MATCH:
- ADD_INSN1(recv, line, putobject, node->nd_lit);
- ADD_INSN2(val, line, getspecial, INT2FIX(0),
+ ADD_INSN1(recv, nd_line(node), putobject, node->nd_lit);
+ ADD_INSN2(val, nd_line(node), getspecial, INT2FIX(0),
INT2FIX(0));
break;
case NODE_MATCH2:
@@ -4787,30 +4495,30 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
INSN_OF(recv->last) == BIN(putobject) &&
nd_type(node) == NODE_MATCH2) {
ADD_SEQ(ret, val);
- ADD_INSN1(ret, line, opt_regexpmatch1,
+ ADD_INSN1(ret, nd_line(node), opt_regexpmatch1,
OPERAND_AT(recv->last, 0));
}
else {
ADD_SEQ(ret, recv);
ADD_SEQ(ret, val);
- ADD_INSN(ret, line, opt_regexpmatch2);
+ ADD_INSN(ret, nd_line(node), opt_regexpmatch2);
}
}
else {
ADD_SEQ(ret, recv);
ADD_SEQ(ret, val);
- ADD_SEND(ret, line, ID2SYM(idEqTilde), INT2FIX(1));
+ ADD_SEND(ret, nd_line(node), ID2SYM(idEqTilde), INT2FIX(1));
}
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_LIT:{
debugp_param("lit", node->nd_lit);
if (!poped) {
- ADD_INSN1(ret, line, putobject, node->nd_lit);
+ ADD_INSN1(ret, nd_line(node), putobject, node->nd_lit);
}
break;
}
@@ -4818,7 +4526,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
debugp_param("nd_lit", node->nd_lit);
if (!poped) {
OBJ_FREEZE(node->nd_lit);
- ADD_INSN1(ret, line, putstring, node->nd_lit);
+ ADD_INSN1(ret, nd_line(node), putstring, node->nd_lit);
}
break;
}
@@ -4826,28 +4534,28 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
compile_dstr(iseq, ret, node);
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_XSTR:{
OBJ_FREEZE(node->nd_lit);
- ADD_CALL_RECEIVER(ret, line);
- ADD_INSN1(ret, line, putobject, node->nd_lit);
- ADD_CALL(ret, line, ID2SYM(idBackquote), INT2FIX(1));
+ ADD_CALL_RECEIVER(ret, nd_line(node));
+ ADD_INSN1(ret, nd_line(node), putobject, node->nd_lit);
+ ADD_CALL(ret, nd_line(node), ID2SYM(idBackquote), INT2FIX(1));
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_DXSTR:{
- ADD_CALL_RECEIVER(ret, line);
+ ADD_CALL_RECEIVER(ret, nd_line(node));
compile_dstr(iseq, ret, node);
- ADD_CALL(ret, line, ID2SYM(idBackquote), INT2FIX(1));
+ ADD_CALL(ret, nd_line(node), ID2SYM(idBackquote), INT2FIX(1));
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
@@ -4855,10 +4563,10 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
COMPILE(ret, "nd_body", node->nd_body);
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
else {
- ADD_INSN(ret, line, tostring);
+ ADD_INSN(ret, nd_line(node), tostring);
}
break;
}
@@ -4866,83 +4574,83 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
compile_dregx(iseq, ret, node);
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_DREGX_ONCE:{
/* TODO: once? */
- LABEL *lend = NEW_LABEL(line);
+ LABEL *lend = NEW_LABEL(nd_line(node));
int ic_index = iseq->ic_size++;
- ADD_INSN2(ret, line, onceinlinecache, lend, INT2FIX(ic_index));
- ADD_INSN(ret, line, pop);
+ ADD_INSN2(ret, nd_line(node), onceinlinecache, lend, INT2FIX(ic_index));
+ ADD_INSN(ret, nd_line(node), pop);
compile_dregx(iseq, ret, node);
- ADD_INSN1(ret, line, setinlinecache, INT2FIX(ic_index));
+ ADD_INSN1(ret, nd_line(node), setinlinecache, INT2FIX(ic_index));
ADD_LABEL(ret, lend);
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_ARGSCAT:{
if (poped) {
COMPILE(ret, "argscat head", node->nd_head);
- ADD_INSN1(ret, line, splatarray, Qfalse);
- ADD_INSN(ret, line, pop);
+ ADD_INSN1(ret, nd_line(node), splatarray, Qfalse);
+ ADD_INSN(ret, nd_line(node), pop);
COMPILE(ret, "argscat body", node->nd_body);
- ADD_INSN1(ret, line, splatarray, Qfalse);
- ADD_INSN(ret, line, pop);
+ ADD_INSN1(ret, nd_line(node), splatarray, Qfalse);
+ ADD_INSN(ret, nd_line(node), pop);
}
else {
COMPILE(ret, "argscat head", node->nd_head);
COMPILE(ret, "argscat body", node->nd_body);
- ADD_INSN(ret, line, concatarray);
+ ADD_INSN(ret, nd_line(node), concatarray);
}
break;
}
case NODE_ARGSPUSH:{
if (poped) {
COMPILE(ret, "arsgpush head", node->nd_head);
- ADD_INSN1(ret, line, splatarray, Qfalse);
- ADD_INSN(ret, line, pop);
+ ADD_INSN1(ret, nd_line(node), splatarray, Qfalse);
+ ADD_INSN(ret, nd_line(node), pop);
COMPILE_(ret, "argspush body", node->nd_body, poped);
}
else {
COMPILE(ret, "arsgpush head", node->nd_head);
COMPILE_(ret, "argspush body", node->nd_body, poped);
- ADD_INSN1(ret, line, newarray, INT2FIX(1));
- ADD_INSN(ret, line, concatarray);
+ ADD_INSN1(ret, nd_line(node), newarray, INT2FIX(1));
+ ADD_INSN(ret, nd_line(node), concatarray);
}
break;
}
case NODE_SPLAT:{
COMPILE(ret, "splat", node->nd_head);
- ADD_INSN1(ret, line, splatarray, Qtrue);
+ ADD_INSN1(ret, nd_line(node), splatarray, Qtrue);
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_DEFN:{
VALUE iseqval = NEW_ISEQVAL(node->nd_defn,
rb_str_dup(rb_id2str(node->nd_mid)),
- ISEQ_TYPE_METHOD, line);
+ ISEQ_TYPE_METHOD, nd_line(node));
debugp_param("defn/iseq", iseqval);
- ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_CBASE));
- ADD_INSN1(ret, line, putobject, ID2SYM(node->nd_mid));
- ADD_INSN1(ret, line, putiseq, iseqval);
- ADD_SEND (ret, line, ID2SYM(id_core_define_method), INT2FIX(3));
+ ADD_INSN1(ret, nd_line(node), putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, nd_line(node), putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_CBASE));
+ ADD_INSN1(ret, nd_line(node), putobject, ID2SYM(node->nd_mid));
+ ADD_INSN1(ret, nd_line(node), putiseq, iseqval);
+ ADD_SEND (ret, nd_line(node), ID2SYM(id_core_define_method), INT2FIX(3));
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
debugp_param("defn", iseqval);
@@ -4951,52 +4659,52 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
case NODE_DEFS:{
VALUE iseqval = NEW_ISEQVAL(node->nd_defn,
rb_str_dup(rb_id2str(node->nd_mid)),
- ISEQ_TYPE_METHOD, line);
+ ISEQ_TYPE_METHOD, nd_line(node));
debugp_param("defs/iseq", iseqval);
- ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, nd_line(node), putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
COMPILE(ret, "defs: recv", node->nd_recv);
- ADD_INSN1(ret, line, putobject, ID2SYM(node->nd_mid));
- ADD_INSN1(ret, line, putiseq, iseqval);
- ADD_SEND (ret, line, ID2SYM(id_core_define_singleton_method), INT2FIX(3));
+ ADD_INSN1(ret, nd_line(node), putobject, ID2SYM(node->nd_mid));
+ ADD_INSN1(ret, nd_line(node), putiseq, iseqval);
+ ADD_SEND (ret, nd_line(node), ID2SYM(id_core_define_singleton_method), INT2FIX(3));
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_ALIAS:{
- ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_CBASE));
+ ADD_INSN1(ret, nd_line(node), putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, nd_line(node), putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_CBASE));
COMPILE(ret, "alias arg1", node->u1.node);
COMPILE(ret, "alias arg2", node->u2.node);
- ADD_SEND(ret, line, ID2SYM(id_core_set_method_alias), INT2FIX(3));
+ ADD_SEND(ret, nd_line(node), ID2SYM(id_core_set_method_alias), INT2FIX(3));
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_VALIAS:{
- ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(ret, line, putobject, ID2SYM(node->u1.id));
- ADD_INSN1(ret, line, putobject, ID2SYM(node->u2.id));
- ADD_SEND(ret, line, ID2SYM(id_core_set_variable_alias), INT2FIX(2));
+ ADD_INSN1(ret, nd_line(node), putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, nd_line(node), putobject, ID2SYM(node->u1.id));
+ ADD_INSN1(ret, nd_line(node), putobject, ID2SYM(node->u2.id));
+ ADD_SEND(ret, nd_line(node), ID2SYM(id_core_set_variable_alias), INT2FIX(2));
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_UNDEF:{
- ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_CBASE));
+ ADD_INSN1(ret, nd_line(node), putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, nd_line(node), putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_CBASE));
COMPILE(ret, "undef arg", node->u2.node);
- ADD_SEND(ret, line, ID2SYM(id_core_undef_method), INT2FIX(2));
+ ADD_SEND(ret, nd_line(node), ID2SYM(id_core_undef_method), INT2FIX(2));
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
@@ -5005,17 +4713,14 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
NEW_CHILD_ISEQVAL(
node->nd_body,
rb_sprintf("<class:%s>", rb_id2name(node->nd_cpath->nd_mid)),
- ISEQ_TYPE_CLASS, line);
+ ISEQ_TYPE_CLASS, nd_line(node));
VALUE noscope = compile_cpath(ret, iseq, node->nd_cpath);
- int flags = VM_DEFINECLASS_TYPE_CLASS;
- if (!noscope) flags |= VM_DEFINECLASS_FLAG_SCOPED;
- if (node->nd_super) flags |= VM_DEFINECLASS_FLAG_HAS_SUPERCLASS;
COMPILE(ret, "super", node->nd_super);
- ADD_INSN3(ret, line, defineclass,
- ID2SYM(node->nd_cpath->nd_mid), iseqval, INT2FIX(flags));
+ ADD_INSN3(ret, nd_line(node), defineclass,
+ ID2SYM(node->nd_cpath->nd_mid), iseqval, INT2FIX(noscope ? 3 : 0));
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
@@ -5023,41 +4728,38 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
VALUE iseqval = NEW_CHILD_ISEQVAL(
node->nd_body,
rb_sprintf("<module:%s>", rb_id2name(node->nd_cpath->nd_mid)),
- ISEQ_TYPE_CLASS, line);
+ ISEQ_TYPE_CLASS, nd_line(node));
VALUE noscope = compile_cpath(ret, iseq, node->nd_cpath);
- int flags = VM_DEFINECLASS_TYPE_MODULE;
- if (!noscope) flags |= VM_DEFINECLASS_FLAG_SCOPED;
- ADD_INSN (ret, line, putnil); /* dummy */
- ADD_INSN3(ret, line, defineclass,
- ID2SYM(node->nd_cpath->nd_mid), iseqval, INT2FIX(flags));
+ ADD_INSN (ret, nd_line(node), putnil); /* dummy */
+ ADD_INSN3(ret, nd_line(node), defineclass,
+ ID2SYM(node->nd_cpath->nd_mid), iseqval, INT2FIX(noscope ? 5 : 2));
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_SCLASS:{
ID singletonclass;
VALUE iseqval =
- NEW_ISEQVAL(node->nd_body, rb_str_new2("singleton class"),
- ISEQ_TYPE_CLASS, line);
+ NEW_ISEQVAL(node->nd_body, rb_str_new2("singletonclass"),
+ ISEQ_TYPE_CLASS, nd_line(node));
COMPILE(ret, "sclass#recv", node->nd_recv);
- ADD_INSN (ret, line, putnil);
+ ADD_INSN (ret, nd_line(node), putnil);
CONST_ID(singletonclass, "singletonclass");
- ADD_INSN3(ret, line, defineclass,
- ID2SYM(singletonclass), iseqval,
- INT2FIX(VM_DEFINECLASS_TYPE_SINGLETON_CLASS));
+ ADD_INSN3(ret, nd_line(node), defineclass,
+ ID2SYM(singletonclass), iseqval, INT2FIX(1));
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_COLON2:{
if (rb_is_const_id(node->nd_mid)) {
/* constant */
- LABEL *lend = NEW_LABEL(line);
+ LABEL *lend = NEW_LABEL(nd_line(node));
int ic_index = iseq->ic_size++;
DECL_ANCHOR(pref);
@@ -5068,16 +4770,16 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
compile_colon2(iseq, node, pref, body);
if (LIST_SIZE_ZERO(pref)) {
if (iseq->compile_data->option->inline_const_cache) {
- ADD_INSN2(ret, line, getinlinecache, lend, INT2FIX(ic_index));
+ ADD_INSN2(ret, nd_line(node), getinlinecache, lend, INT2FIX(ic_index));
}
else {
- ADD_INSN(ret, line, putnil);
+ ADD_INSN(ret, nd_line(node), putnil);
}
ADD_SEQ(ret, body);
if (iseq->compile_data->option->inline_const_cache) {
- ADD_INSN1(ret, line, setinlinecache, INT2FIX(ic_index));
+ ADD_INSN1(ret, nd_line(node), setinlinecache, INT2FIX(ic_index));
ADD_LABEL(ret, lend);
}
}
@@ -5088,38 +4790,38 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
}
else {
/* function call */
- ADD_CALL_RECEIVER(ret, line);
+ ADD_CALL_RECEIVER(ret, nd_line(node));
COMPILE(ret, "colon2#nd_head", node->nd_head);
- ADD_CALL(ret, line, ID2SYM(node->nd_mid),
+ ADD_CALL(ret, nd_line(node), ID2SYM(node->nd_mid),
INT2FIX(1));
}
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
case NODE_COLON3:{
- LABEL *lend = NEW_LABEL(line);
+ LABEL *lend = NEW_LABEL(nd_line(node));
int ic_index = iseq->ic_size++;
- debugi("colon3#nd_mid", node->nd_mid);
+ debugi("colon3#nd_mid", node->nd_mid);
/* add cache insn */
if (iseq->compile_data->option->inline_const_cache) {
- ADD_INSN2(ret, line, getinlinecache, lend, INT2FIX(ic_index));
- ADD_INSN(ret, line, pop);
+ ADD_INSN2(ret, nd_line(node), getinlinecache, lend, INT2FIX(ic_index));
+ ADD_INSN(ret, nd_line(node), pop);
}
- ADD_INSN1(ret, line, putobject, rb_cObject);
- ADD_INSN1(ret, line, getconstant, ID2SYM(node->nd_mid));
+ ADD_INSN1(ret, nd_line(node), putobject, rb_cObject);
+ ADD_INSN1(ret, nd_line(node), getconstant, ID2SYM(node->nd_mid));
if (iseq->compile_data->option->inline_const_cache) {
- ADD_INSN1(ret, line, setinlinecache, INT2FIX(ic_index));
+ ADD_INSN1(ret, nd_line(node), setinlinecache, INT2FIX(ic_index));
ADD_LABEL(ret, lend);
}
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
@@ -5129,83 +4831,82 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
COMPILE(ret, "min", (NODE *) node->nd_beg);
COMPILE(ret, "max", (NODE *) node->nd_end);
if (poped) {
- ADD_INSN(ret, line, pop);
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
else {
- ADD_INSN1(ret, line, newrange, flag);
+ ADD_INSN1(ret, nd_line(node), newrange, flag);
}
break;
}
case NODE_FLIP2:
case NODE_FLIP3:{
- LABEL *lend = NEW_LABEL(line);
- LABEL *lfin = NEW_LABEL(line);
- LABEL *ltrue = NEW_LABEL(line);
- rb_iseq_t *local_iseq = iseq->local_iseq;
- rb_num_t cnt;
- VALUE key;
-
- cnt = local_iseq->flip_cnt++ + DEFAULT_SPECIAL_VAR_COUNT;
- key = INT2FIX(cnt);
-
- ADD_INSN2(ret, line, getspecial, key, INT2FIX(0));
- ADD_INSNL(ret, line, branchif, lend);
+ LABEL *lend = NEW_LABEL(nd_line(node));
+ LABEL *lfin = NEW_LABEL(nd_line(node));
+ LABEL *ltrue = NEW_LABEL(nd_line(node));
+ VALUE key = rb_sprintf("flipflag/%s-%p-%d",
+ RSTRING_PTR(iseq->name), (void *)iseq,
+ iseq->compile_data->flip_cnt++);
+
+ hide_obj(key);
+ iseq_add_mark_object_compile_time(iseq, key);
+ ADD_INSN2(ret, nd_line(node), getspecial, key, INT2FIX(0));
+ ADD_INSNL(ret, nd_line(node), branchif, lend);
/* *flip == 0 */
COMPILE(ret, "flip2 beg", node->nd_beg);
- ADD_INSN(ret, line, dup);
- ADD_INSNL(ret, line, branchunless, lfin);
+ ADD_INSN(ret, nd_line(node), dup);
+ ADD_INSNL(ret, nd_line(node), branchunless, lfin);
if (nd_type(node) == NODE_FLIP3) {
- ADD_INSN(ret, line, dup);
- ADD_INSN1(ret, line, setspecial, key);
- ADD_INSNL(ret, line, jump, lfin);
+ ADD_INSN(ret, nd_line(node), dup);
+ ADD_INSN1(ret, nd_line(node), setspecial, key);
+ ADD_INSNL(ret, nd_line(node), jump, lfin);
}
else {
- ADD_INSN1(ret, line, setspecial, key);
+ ADD_INSN1(ret, nd_line(node), setspecial, key);
}
/* *flip == 1 */
ADD_LABEL(ret, lend);
COMPILE(ret, "flip2 end", node->nd_end);
- ADD_INSNL(ret, line, branchunless, ltrue);
- ADD_INSN1(ret, line, putobject, Qfalse);
- ADD_INSN1(ret, line, setspecial, key);
+ ADD_INSNL(ret, nd_line(node), branchunless, ltrue);
+ ADD_INSN1(ret, nd_line(node), putobject, Qfalse);
+ ADD_INSN1(ret, nd_line(node), setspecial, key);
ADD_LABEL(ret, ltrue);
- ADD_INSN1(ret, line, putobject, Qtrue);
+ ADD_INSN1(ret, nd_line(node), putobject, Qtrue);
ADD_LABEL(ret, lfin);
break;
}
case NODE_SELF:{
if (!poped) {
- ADD_INSN(ret, line, putself);
+ ADD_INSN(ret, nd_line(node), putself);
}
break;
}
case NODE_NIL:{
if (!poped) {
- ADD_INSN(ret, line, putnil);
+ ADD_INSN(ret, nd_line(node), putnil);
}
break;
}
case NODE_TRUE:{
if (!poped) {
- ADD_INSN1(ret, line, putobject, Qtrue);
+ ADD_INSN1(ret, nd_line(node), putobject, Qtrue);
}
break;
}
case NODE_FALSE:{
if (!poped) {
- ADD_INSN1(ret, line, putobject, Qfalse);
+ ADD_INSN1(ret, nd_line(node), putobject, Qfalse);
}
break;
}
case NODE_ERRINFO:{
if (!poped) {
if (iseq->type == ISEQ_TYPE_RESCUE) {
- ADD_INSN2(ret, line, getlocal, INT2FIX(2), INT2FIX(0));
+ ADD_INSN2(ret, nd_line(node), getdynamic, INT2FIX(2), INT2FIX(0));
}
else {
rb_iseq_t *ip = iseq;
@@ -5218,29 +4919,24 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
level++;
}
if (ip) {
- ADD_INSN2(ret, line, getlocal, INT2FIX(2), INT2FIX(level));
+ ADD_INSN2(ret, nd_line(node), getdynamic, INT2FIX(2), INT2FIX(level));
}
else {
- ADD_INSN(ret, line, putnil);
+ ADD_INSN(ret, nd_line(node), putnil);
}
}
}
break;
}
case NODE_DEFINED:{
- if (poped) break;
- if (!node->nd_head) {
- VALUE str = rb_iseq_defined_string(DEFINED_NIL);
- ADD_INSN1(ret, nd_line(node), putobject, str);
- }
- else {
+ if (!poped) {
LABEL *lfinish[2];
- lfinish[0] = NEW_LABEL(line);
+ lfinish[0] = NEW_LABEL(nd_line(node));
lfinish[1] = 0;
- ADD_INSN(ret, line, putnil);
+ ADD_INSN(ret, nd_line(node), putnil);
defined_expr(iseq, ret, node->nd_head, lfinish, Qtrue);
- ADD_INSN(ret, line, swap);
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), swap);
+ ADD_INSN(ret, nd_line(node), pop);
if (lfinish[1]) {
ADD_LABEL(ret, lfinish[1]);
}
@@ -5249,64 +4945,32 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
break;
}
case NODE_POSTEXE:{
- LABEL *lend = NEW_LABEL(line);
- VALUE block = NEW_CHILD_ISEQVAL(node->nd_body, make_name_for_block(iseq), ISEQ_TYPE_BLOCK, line);
+ LABEL *lend = NEW_LABEL(nd_line(node));
+ VALUE block = NEW_CHILD_ISEQVAL(node->nd_body, make_name_for_block(iseq), ISEQ_TYPE_BLOCK, nd_line(node));
int ic_index = iseq->ic_size++;
- ADD_INSN2(ret, line, onceinlinecache, lend, INT2FIX(ic_index));
- ADD_INSN(ret, line, pop);
+ ADD_INSN2(ret, nd_line(node), onceinlinecache, lend, INT2FIX(ic_index));
+ ADD_INSN(ret, nd_line(node), pop);
- ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_INSN1(ret, line, putiseq, block);
- ADD_SEND (ret, line, ID2SYM(id_core_set_postexe), INT2FIX(1));
+ ADD_INSN1(ret, nd_line(node), putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_INSN1(ret, nd_line(node), putiseq, block);
+ ADD_SEND (ret, nd_line(node), ID2SYM(id_core_set_postexe), INT2FIX(1));
- ADD_INSN1(ret, line, setinlinecache, INT2FIX(ic_index));
+ ADD_INSN1(ret, nd_line(node), setinlinecache, INT2FIX(ic_index));
ADD_LABEL(ret, lend);
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
- case NODE_KW_ARG:{
- LABEL *default_label = NEW_LABEL(line);
- LABEL *end_label = NEW_LABEL(line);
- int idx, lv, ls;
- ID id = node->nd_body->nd_vid;
-
- ADD_INSN(ret, line, dup);
- ADD_INSN1(ret, line, putobject, ID2SYM(id));
- ADD_SEND(ret, line, ID2SYM(rb_intern("key?")), INT2FIX(1));
- ADD_INSNL(ret, line, branchunless, default_label);
- ADD_INSN(ret, line, dup);
- ADD_INSN1(ret, line, putobject, ID2SYM(id));
- ADD_SEND(ret, line, ID2SYM(rb_intern("delete")), INT2FIX(1));
- switch (nd_type(node->nd_body)) {
- case NODE_LASGN:
- idx = iseq->local_iseq->local_size - get_local_var_idx(iseq, id);
- ADD_INSN2(ret, line, setlocal, INT2FIX(idx), INT2FIX(get_lvar_level(iseq)));
- break;
- case NODE_DASGN:
- case NODE_DASGN_CURR:
- idx = get_dyna_var_idx(iseq, id, &lv, &ls);
- ADD_INSN2(ret, line, setlocal, INT2FIX(ls - idx), INT2FIX(lv));
- break;
- default:
- rb_bug("iseq_compile_each (NODE_KW_ARG): unknown node: %s", ruby_node_name(nd_type(node->nd_body)));
- }
- ADD_INSNL(ret, line, jump, end_label);
- ADD_LABEL(ret, default_label);
- COMPILE_POPED(ret, "keyword default argument", node->nd_body);
- ADD_LABEL(ret, end_label);
- break;
- }
case NODE_DSYM:{
compile_dstr(iseq, ret, node);
if (!poped) {
- ADD_SEND(ret, line, ID2SYM(idIntern), INT2FIX(0));
+ ADD_SEND(ret, nd_line(node), ID2SYM(idIntern), INT2FIX(0));
}
else {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
@@ -5321,8 +4985,8 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
argc = setup_args(iseq, args, node->nd_args, &flag);
if (node->nd_recv == (NODE *) 1) {
- flag |= VM_CALL_FCALL;
- ADD_INSN(recv, line, putself);
+ flag |= VM_CALL_FCALL_BIT;
+ ADD_INSN(recv, nd_line(node), putself);
}
else {
COMPILE(recv, "recv", node->nd_recv);
@@ -5332,39 +4996,53 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
debugp_param("nd_mid", ID2SYM(node->nd_mid));
if (!poped) {
- ADD_INSN(ret, line, putnil);
+ ADD_INSN(ret, nd_line(node), putnil);
ADD_SEQ(ret, recv);
ADD_SEQ(ret, args);
- if (flag & VM_CALL_ARGS_BLOCKARG) {
- ADD_INSN1(ret, line, topn, INT2FIX(1));
- if (flag & VM_CALL_ARGS_SPLAT) {
- ADD_INSN1(ret, line, putobject, INT2FIX(-1));
- ADD_SEND(ret, line, ID2SYM(idAREF), INT2FIX(1));
+ if (flag & VM_CALL_ARGS_BLOCKARG_BIT) {
+ ADD_INSN1(ret, nd_line(node), topn, INT2FIX(1));
+ if (flag & VM_CALL_ARGS_SPLAT_BIT) {
+ ADD_INSN1(ret, nd_line(node), putobject, INT2FIX(-1));
+ ADD_SEND(ret, nd_line(node), ID2SYM(idAREF), INT2FIX(1));
}
- ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 3));
- ADD_INSN (ret, line, pop);
+ ADD_INSN1(ret, nd_line(node), setn, FIXNUM_INC(argc, 3));
+ ADD_INSN (ret, nd_line(node), pop);
}
- else if (flag & VM_CALL_ARGS_SPLAT) {
- ADD_INSN(ret, line, dup);
- ADD_INSN1(ret, line, putobject, INT2FIX(-1));
- ADD_SEND(ret, line, ID2SYM(idAREF), INT2FIX(1));
- ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 2));
- ADD_INSN (ret, line, pop);
+ else if (flag & VM_CALL_ARGS_SPLAT_BIT) {
+ ADD_INSN(ret, nd_line(node), dup);
+ ADD_INSN1(ret, nd_line(node), putobject, INT2FIX(-1));
+ ADD_SEND(ret, nd_line(node), ID2SYM(idAREF), INT2FIX(1));
+ ADD_INSN1(ret, nd_line(node), setn, FIXNUM_INC(argc, 2));
+ ADD_INSN (ret, nd_line(node), pop);
}
else {
- ADD_INSN1(ret, line, setn, FIXNUM_INC(argc, 1));
+ ADD_INSN1(ret, nd_line(node), setn, FIXNUM_INC(argc, 1));
}
}
else {
ADD_SEQ(ret, recv);
ADD_SEQ(ret, args);
}
- ADD_SEND_R(ret, line, ID2SYM(node->nd_mid), argc, 0, LONG2FIX(flag));
- ADD_INSN(ret, line, pop);
+ ADD_SEND_R(ret, nd_line(node), ID2SYM(node->nd_mid), argc, 0, LONG2FIX(flag));
+ ADD_INSN(ret, nd_line(node), pop);
break;
}
+ case NODE_OPTBLOCK:{
+ /* for optimize */
+ LABEL *redo_label = NEW_LABEL(0);
+ LABEL *next_label = NEW_LABEL(0);
+
+ iseq->compile_data->start_label = next_label;
+ iseq->compile_data->redo_label = redo_label;
+
+ ADD_LABEL(ret, redo_label);
+ COMPILE_(ret, "optblock body", node->nd_head, 1 /* pop */ );
+ ADD_LABEL(ret, next_label);
+ ADD_INSN(ret, 0, opt_checkenv);
+ break;
+ }
case NODE_PRELUDE:{
COMPILE_POPED(ret, "prelude", node->nd_head);
COMPILE_(ret, "body", node->nd_body, poped);
@@ -5372,13 +5050,13 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped)
}
case NODE_LAMBDA:{
/* compile same as lambda{...} */
- VALUE block = NEW_CHILD_ISEQVAL(node->nd_body, make_name_for_block(iseq), ISEQ_TYPE_BLOCK, line);
+ VALUE block = NEW_CHILD_ISEQVAL(node->nd_body, make_name_for_block(iseq), ISEQ_TYPE_BLOCK, nd_line(node));
VALUE argc = INT2FIX(0);
- ADD_INSN1(ret, line, putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
- ADD_CALL_WITH_BLOCK(ret, line, ID2SYM(idLambda), argc, block);
+ ADD_INSN1(ret, nd_line(node), putspecialobject, INT2FIX(VM_SPECIAL_OBJECT_VMCORE));
+ ADD_CALL_WITH_BLOCK(ret, nd_line(node), ID2SYM(idLambda), argc, block);
if (poped) {
- ADD_INSN(ret, line, pop);
+ ADD_INSN(ret, nd_line(node), pop);
}
break;
}
@@ -5438,20 +5116,18 @@ insn_data_to_s_detail(INSN *iobj)
{
rb_iseq_t *iseq = (rb_iseq_t *)OPERAND_AT(iobj, j);
VALUE val = Qnil;
- if (0 && iseq) { /* TODO: invalidate now */
+ if (iseq) {
val = iseq->self;
}
rb_str_concat(str, rb_inspect(val));
}
break;
case TS_LINDEX:
+ case TS_DINDEX:
case TS_NUM: /* ulong */
case TS_VALUE: /* VALUE */
- {
- VALUE v = OPERAND_AT(iobj, j);
- rb_str_concat(str, rb_inspect(v));
- break;
- }
+ rb_str_concat(str, rb_inspect(OPERAND_AT(iobj, j)));
+ break;
case TS_ID: /* ID */
rb_str_concat(str, rb_inspect(OPERAND_AT(iobj, j)));
break;
@@ -5460,17 +5136,10 @@ insn_data_to_s_detail(INSN *iobj)
struct rb_global_entry *entry = (struct rb_global_entry *)
(OPERAND_AT(iobj, j) & (~1));
rb_str_cat2(str, rb_id2name(entry->id));
- break;
}
- case TS_IC: /* inline cache */
+ case TS_IC: /* method cache */
rb_str_catf(str, "<ic:%d>", FIX2INT(OPERAND_AT(iobj, j)));
break;
- case TS_CALLINFO: /* call info */
- {
- rb_call_info_t *ci = (rb_call_info_t *)OPERAND_AT(iobj, j);
- rb_str_catf(str, "<callinfo:%s, %d>", ci->mid ? rb_id2name(ci->mid) : "", ci->orig_argc);
- break;
- }
case TS_CDHASH: /* case/when condition cache */
rb_str_cat2(str, "<ch>");
break;
@@ -5502,7 +5171,8 @@ dump_disasm_list(struct iseq_link_element *link)
{
iobj = (INSN *)link;
str = insn_data_to_s_detail(iobj);
- printf("%04d %-65s(%4d)\n", pos, StringValueCStr(str), insn_data_line_no(iobj));
+ printf("%04d %-65s(%4d)\n", pos, StringValueCStr(str),
+ insn_data_line_no(iobj));
pos += insn_data_length(iobj);
break;
}
@@ -5532,12 +5202,6 @@ dump_disasm_list(struct iseq_link_element *link)
printf("---------------------\n");
}
-const char *
-rb_insns_name(int i)
-{
- return insn_name_info[i];
-}
-
VALUE
rb_insns_name_array(void)
{
@@ -5626,8 +5290,6 @@ iseq_build_from_ary_exception(rb_iseq_t *iseq, struct st_table *labels_table,
lcont = register_label(iseq, labels_table, ptr[4]);
sp = NUM2INT(ptr[5]);
- (void)sp;
-
ADD_CATCH_ENTRY(type, lstart, lend, eiseqval, lcont);
}
return COMPILE_OK;
@@ -5647,23 +5309,6 @@ insn_make_insn_table(void)
return table;
}
-static VALUE
-iseq_build_load_iseq(rb_iseq_t *iseq, VALUE op)
-{
- VALUE iseqval;
- if (RB_TYPE_P(op, T_ARRAY)) {
- iseqval = rb_iseq_load(op, iseq->self, Qnil);
- }
- else if (CLASS_OF(op) == rb_cISeq) {
- iseqval = op;
- }
- else {
- rb_raise(rb_eSyntaxError, "ISEQ is required");
- }
- iseq_add_mark_object(iseq, iseqval);
- return iseqval;
-}
-
static int
iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor,
VALUE body, struct st_table *labels_table)
@@ -5673,7 +5318,6 @@ iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor,
long i, len = RARRAY_LEN(body);
int j;
int line_no = 0;
-
/*
* index -> LABEL *label
*/
@@ -5693,7 +5337,7 @@ iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor,
else if (FIXNUM_P(obj)) {
line_no = NUM2INT(obj);
}
- else if (RB_TYPE_P(obj, T_ARRAY)) {
+ else if (TYPE(obj) == T_ARRAY) {
VALUE *argv = 0;
int argc = RARRAY_LENINT(obj) - 1;
st_data_t insn_id;
@@ -5703,12 +5347,12 @@ iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor,
if (st_lookup(insn_table, (st_data_t)insn, &insn_id) == 0) {
/* TODO: exception */
RB_GC_GUARD(insn) = rb_inspect(insn);
- rb_compile_error(RSTRING_PTR(iseq->location.path), line_no,
+ rb_compile_error(RSTRING_PTR(iseq->filename), line_no,
"unknown instruction: %s", RSTRING_PTR(insn));
}
if (argc != insn_len((VALUE)insn_id)-1) {
- rb_compile_error(RSTRING_PTR(iseq->location.path), line_no,
+ rb_compile_error(RSTRING_PTR(iseq->filename), line_no,
"operand size mismatch");
}
@@ -5723,6 +5367,7 @@ iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor,
break;
}
case TS_LINDEX:
+ case TS_DINDEX:
case TS_NUM:
(void)NUM2INT(op);
argv[j] = op;
@@ -5734,7 +5379,16 @@ iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor,
case TS_ISEQ:
{
if (op != Qnil) {
- argv[j] = iseq_build_load_iseq(iseq, op);
+ if (TYPE(op) == T_ARRAY) {
+ argv[j] = rb_iseq_load(op, iseq->self, Qnil);
+ }
+ else if (CLASS_OF(op) == rb_cISeq) {
+ argv[j] = op;
+ }
+ else {
+ rb_raise(rb_eSyntaxError, "ISEQ is required");
+ }
+ iseq_add_mark_object(iseq, argv[j]);
}
else {
argv[j] = 0;
@@ -5747,30 +5401,8 @@ iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *anchor,
break;
case TS_IC:
argv[j] = op;
- if (NUM2INT(op) >= iseq->ic_size) {
+ if (NUM2INT(op) >= iseq->ic_size)
iseq->ic_size = NUM2INT(op) + 1;
- }
- break;
- case TS_CALLINFO:
- {
- ID mid = 0;
- int orig_argc = 0;
- VALUE block = 0;
- unsigned long flag = 0;
-
- if (!NIL_P(op)) {
- VALUE vmid = rb_hash_aref(op, ID2SYM(rb_intern("mid")));
- VALUE vflag = rb_hash_aref(op, ID2SYM(rb_intern("flag")));
- VALUE vorig_argc = rb_hash_aref(op, ID2SYM(rb_intern("orig_argc")));
- VALUE vblock = rb_hash_aref(op, ID2SYM(rb_intern("blockptr")));
-
- if (!NIL_P(vmid)) mid = SYM2ID(vmid);
- if (!NIL_P(vflag)) flag = NUM2ULONG(vflag);
- if (!NIL_P(vorig_argc)) orig_argc = FIX2INT(vorig_argc);
- if (!NIL_P(vblock)) block = iseq_build_load_iseq(iseq, vblock);
- }
- argv[j] = (VALUE)new_callinfo(iseq, mid, orig_argc, block, flag);
- }
break;
case TS_ID:
argv[j] = rb_convert_type(op, T_SYMBOL,
diff --git a/complex.c b/complex.c
index ed8924c253..5b1a5102a1 100644
--- a/complex.c
+++ b/complex.c
@@ -1,5 +1,5 @@
/*
- complex.c: Coded by Tadayoshi Funaba 2008-2012
+ complex.c: Coded by Tadayoshi Funaba 2008-2011
This implementation is based on Keiju Ishitsuka's Complex library
which is written in ruby.
@@ -21,8 +21,7 @@ VALUE rb_cComplex;
static ID id_abs, id_abs2, id_arg, id_cmp, id_conj, id_convert,
id_denominator, id_divmod, id_eqeq_p, id_expt, id_fdiv, id_floor,
id_idiv, id_imag, id_inspect, id_negate, id_numerator, id_quo,
- id_real, id_real_p, id_to_f, id_to_i, id_to_r, id_to_s,
- id_i_real, id_i_imag;
+ id_real, id_real_p, id_to_f, id_to_i, id_to_r, id_to_s;
#define f_boolcast(x) ((x) ? Qtrue : Qfalse)
@@ -122,7 +121,7 @@ f_mul(VALUE x, VALUE y)
if (FIXNUM_P(y)) {
long iy = FIX2LONG(y);
if (iy == 0) {
- if (FIXNUM_P(x) || RB_TYPE_P(x, T_BIGNUM))
+ if (FIXNUM_P(x) || TYPE(x) == T_BIGNUM)
return ZERO;
}
else if (iy == 1)
@@ -131,7 +130,7 @@ f_mul(VALUE x, VALUE y)
else if (FIXNUM_P(x)) {
long ix = FIX2LONG(x);
if (ix == 0) {
- if (FIXNUM_P(y) || RB_TYPE_P(y, T_BIGNUM))
+ if (FIXNUM_P(y) || TYPE(y) == T_BIGNUM)
return ZERO;
}
else if (ix == 1)
@@ -167,14 +166,14 @@ fun1(real_p)
inline static VALUE
f_to_i(VALUE x)
{
- if (RB_TYPE_P(x, T_STRING))
+ if (TYPE(x) == T_STRING)
return rb_str_to_inum(x, 10, 0);
return rb_funcall(x, id_to_i, 0);
}
inline static VALUE
f_to_f(VALUE x)
{
- if (RB_TYPE_P(x, T_STRING))
+ if (TYPE(x) == T_STRING)
return DBL2NUM(rb_str_to_dbl(x, 0));
return rb_funcall(x, id_to_f, 0);
}
@@ -313,7 +312,8 @@ k_complex_p(VALUE x)
inline static VALUE
nucomp_s_new_internal(VALUE klass, VALUE real, VALUE imag)
{
- NEWOBJ_OF(obj, struct RComplex, klass, T_COMPLEX);
+ NEWOBJ(obj, struct RComplex);
+ OBJSETUP(obj, klass, T_COMPLEX);
obj->real = real;
obj->imag = imag;
@@ -439,8 +439,6 @@ nucomp_s_canonicalize_internal(VALUE klass, VALUE real, VALUE imag)
* Complex.rectangular(real[, imag]) -> complex
*
* Returns a complex object which denotes the given rectangular form.
- *
- * Complex.rectangular(1, 2) #=> (1+2i)
*/
static VALUE
nucomp_s_new(int argc, VALUE *argv, VALUE klass)
@@ -480,33 +478,6 @@ f_complex_new2(VALUE klass, VALUE x, VALUE y)
* Complex(x[, y]) -> numeric
*
* Returns x+i*y;
- *
- * Complex(1, 2) #=> (1+2i)
- * Complex('1+2i') #=> (1+2i)
- * Complex(nil) #=> TypeError
- * Complex(1, nil) #=> TypeError
- *
- * Syntax of string form:
- *
- * string form = extra spaces , complex , extra spaces ;
- * complex = real part | [ sign ] , imaginary part
- * | real part , sign , imaginary part
- * | rational , "@" , rational ;
- * real part = rational ;
- * imaginary part = imaginary unit | unsigned rational , imaginary unit ;
- * rational = [ sign ] , unsigned rational ;
- * unsigned rational = numerator | numerator , "/" , denominator ;
- * numerator = integer part | fractional part | integer part , fractional part ;
- * denominator = digits ;
- * integer part = digits ;
- * fractional part = "." , digits , [ ( "e" | "E" ) , [ sign ] , digits ] ;
- * imaginary unit = "i" | "I" | "j" | "J" ;
- * sign = "-" | "+" ;
- * digits = digit , { digit | "_" , digit };
- * digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
- * extra spaces = ? \s* ? ;
- *
- * See String#to_c.
*/
static VALUE
nucomp_f_complex(int argc, VALUE *argv, VALUE klass)
@@ -616,10 +587,10 @@ f_complex_polar(VALUE klass, VALUE x, VALUE y)
*
* Returns a complex object which denotes the given polar form.
*
- * Complex.polar(3, 0) #=> (3.0+0.0i)
- * Complex.polar(3, Math::PI/2) #=> (1.836909530733566e-16+3.0i)
- * Complex.polar(3, Math::PI) #=> (-3.0+3.673819061467132e-16i)
- * Complex.polar(3, -Math::PI/2) #=> (1.836909530733566e-16-3.0i)
+ * Complex.polar(3, 0) #=> (3.0+0.0i)
+ * Complex.polar(3, Math::PI/2) #=> (1.836909530733566e-16+3.0i)
+ * Complex.polar(3, Math::PI) #=> (-3.0+3.673819061467132e-16i)
+ * Complex.polar(3, -Math::PI/2) #=> (1.836909530733566e-16-3.0i)
*/
static VALUE
nucomp_s_polar(int argc, VALUE *argv, VALUE klass)
@@ -644,9 +615,6 @@ nucomp_s_polar(int argc, VALUE *argv, VALUE klass)
* cmp.real -> real
*
* Returns the real part.
- *
- * Complex(7).real #=> 7
- * Complex(9, -4).real #=> 9
*/
static VALUE
nucomp_real(VALUE self)
@@ -661,9 +629,6 @@ nucomp_real(VALUE self)
* cmp.imaginary -> real
*
* Returns the imaginary part.
- *
- * Complex(7).imaginary #=> 0
- * Complex(9, -4).imaginary #=> -4
*/
static VALUE
nucomp_imag(VALUE self)
@@ -677,8 +642,6 @@ nucomp_imag(VALUE self)
* -cmp -> complex
*
* Returns negation of the value.
- *
- * -Complex(1, 2) #=> (-1-2i)
*/
static VALUE
nucomp_negate(VALUE self)
@@ -716,12 +679,6 @@ f_addsub(VALUE self, VALUE other,
* cmp + numeric -> complex
*
* Performs addition.
- *
- * Complex(2, 3) + Complex(2, 3) #=> (4+6i)
- * Complex(900) + Complex(1) #=> (901+0i)
- * Complex(-2, 9) + Complex(-9, 2) #=> (-11+11i)
- * Complex(9, 8) + 4 #=> (13+8i)
- * Complex(20, 9) + 9.8 #=> (29.8+9i)
*/
static VALUE
nucomp_add(VALUE self, VALUE other)
@@ -734,12 +691,6 @@ nucomp_add(VALUE self, VALUE other)
* cmp - numeric -> complex
*
* Performs subtraction.
- *
- * Complex(2, 3) - Complex(2, 3) #=> (0+0i)
- * Complex(900) - Complex(1) #=> (899+0i)
- * Complex(-2, 9) - Complex(-9, 2) #=> (7+7i)
- * Complex(9, 8) - 4 #=> (5+8i)
- * Complex(20, 9) - 9.8 #=> (10.2+9i)
*/
static VALUE
nucomp_sub(VALUE self, VALUE other)
@@ -752,12 +703,6 @@ nucomp_sub(VALUE self, VALUE other)
* cmp * numeric -> complex
*
* Performs multiplication.
- *
- * Complex(2, 3) * Complex(2, 3) #=> (-5+12i)
- * Complex(900) * Complex(1) #=> (900+0i)
- * Complex(-2, 9) * Complex(-9, 2) #=> (0-85i)
- * Complex(9, 8) * 4 #=> (36+32i)
- * Complex(20, 9) * 9.8 #=> (196.0+88.2i)
*/
static VALUE
nucomp_mul(VALUE self, VALUE other)
@@ -845,11 +790,10 @@ f_divide(VALUE self, VALUE other,
*
* Performs division.
*
- * Complex(2, 3) / Complex(2, 3) #=> ((1/1)+(0/1)*i)
- * Complex(900) / Complex(1) #=> ((900/1)+(0/1)*i)
- * Complex(-2, 9) / Complex(-9, 2) #=> ((36/85)-(77/85)*i)
- * Complex(9, 8) / 4 #=> ((9/4)+(2/1)*i)
- * Complex(20, 9) / 9.8 #=> (2.0408163265306123+0.9183673469387754i)
+ * For example:
+ *
+ * Complex(10.0) / 3 #=> (3.3333333333333335+(0/1)*i)
+ * Complex(10) / 3 #=> ((10/3)+(0/1)*i) # not (3+0i)
*/
static VALUE
nucomp_div(VALUE self, VALUE other)
@@ -865,7 +809,9 @@ nucomp_div(VALUE self, VALUE other)
*
* Performs division as each part is a float, never returns a float.
*
- * Complex(11, 22).fdiv(3) #=> (3.6666666666666665+7.333333333333333i)
+ * For example:
+ *
+ * Complex(11,22).fdiv(3) #=> (3.6666666666666665+7.333333333333333i)
*/
static VALUE
nucomp_fdiv(VALUE self, VALUE other)
@@ -885,8 +831,10 @@ f_reciprocal(VALUE x)
*
* Performs exponentiation.
*
- * Complex('i') ** 2 #=> (-1+0i)
- * Complex(-8) ** Rational(1, 3) #=> (1.0000000000000002+1.7320508075688772i)
+ * For example:
+ *
+ * Complex('i') ** 2 #=> (-1+0i)
+ * Complex(-8) ** Rational(1,3) #=> (1.0000000000000002+1.7320508075688772i)
*/
static VALUE
nucomp_expt(VALUE self, VALUE other)
@@ -939,7 +887,7 @@ nucomp_expt(VALUE self, VALUE other)
if (r)
break;
- x = nucomp_s_new_internal(CLASS_OF(self),
+ x = f_complex_new2(CLASS_OF(self),
f_sub(f_mul(dat->real, dat->real),
f_mul(dat->imag, dat->imag)),
f_mul(f_mul(TWO, dat->real), dat->imag));
@@ -972,12 +920,6 @@ nucomp_expt(VALUE self, VALUE other)
* cmp == object -> true or false
*
* Returns true if cmp equals object numerically.
- *
- * Complex(2, 3) == Complex(2, 3) #=> true
- * Complex(5) == 5 #=> true
- * Complex(0) == 0.0 #=> true
- * Complex('1/3') == 0.33 #=> false
- * Complex('1/2') == '1/2' #=> false
*/
static VALUE
nucomp_eqeq_p(VALUE self, VALUE other)
@@ -1002,7 +944,7 @@ nucomp_coerce(VALUE self, VALUE other)
{
if (k_numeric_p(other) && f_real_p(other))
return rb_assoc_new(f_complex_new_bang1(CLASS_OF(self), other), self);
- if (RB_TYPE_P(other, T_COMPLEX))
+ if (TYPE(other) == T_COMPLEX)
return rb_assoc_new(other, self);
rb_raise(rb_eTypeError, "%s can't be coerced into %s",
@@ -1016,9 +958,6 @@ nucomp_coerce(VALUE self, VALUE other)
* cmp.magnitude -> real
*
* Returns the absolute part of its polar form.
- *
- * Complex(-1).abs #=> 1
- * Complex(3.0, -4.0).abs #=> 5.0
*/
static VALUE
nucomp_abs(VALUE self)
@@ -1045,9 +984,6 @@ nucomp_abs(VALUE self)
* cmp.abs2 -> real
*
* Returns square of the absolute value.
- *
- * Complex(-1).abs2 #=> 1
- * Complex(3.0, -4.0).abs2 #=> 25.0
*/
static VALUE
nucomp_abs2(VALUE self)
@@ -1065,7 +1001,8 @@ nucomp_abs2(VALUE self)
*
* Returns the angle part of its polar form.
*
- * Complex.polar(3, Math::PI/2).arg #=> 1.5707963267948966
+ * Complex.polar(3, Math::PI/2).arg #=> 1.5707963267948966
+ *
*/
static VALUE
nucomp_arg(VALUE self)
@@ -1080,8 +1017,6 @@ nucomp_arg(VALUE self)
* cmp.rectangular -> array
*
* Returns an array; [cmp.real, cmp.imag].
- *
- * Complex(1, 2).rectangular #=> [1, 2]
*/
static VALUE
nucomp_rect(VALUE self)
@@ -1095,8 +1030,6 @@ nucomp_rect(VALUE self)
* cmp.polar -> array
*
* Returns an array; [cmp.abs, cmp.arg].
- *
- * Complex(1, 2).polar #=> [2.23606797749979, 1.1071487177940904]
*/
static VALUE
nucomp_polar(VALUE self)
@@ -1110,8 +1043,6 @@ nucomp_polar(VALUE self)
* cmp.conjugate -> complex
*
* Returns the complex conjugate.
- *
- * Complex(1, 2).conjugate #=> (1-2i)
*/
static VALUE
nucomp_conj(VALUE self)
@@ -1179,6 +1110,8 @@ nucomp_denominator(VALUE self)
*
* Returns the numerator.
*
+ * For example:
+ *
* 1 2 3+4i <- numerator
* - + -i -> ----
* 2 3 6 <- denominator
@@ -1240,7 +1173,7 @@ nucomp_eql_p(VALUE self, VALUE other)
inline static VALUE
f_signbit(VALUE x)
{
-#if defined(HAVE_SIGNBIT) && defined(__GNUC__) && defined(__sun) && \
+#if defined(HAVE_SIGNBIT) && defined(__GNUC__) && defined(__sun__) && \
!defined(signbit)
extern int signbit(double);
#endif
@@ -1284,12 +1217,6 @@ f_format(VALUE self, VALUE (*func)(VALUE))
* cmp.to_s -> string
*
* Returns the value as a string.
- *
- * Complex(2).to_s #=> "2+0i"
- * Complex('-8/6').to_s #=> "-4/3+0i"
- * Complex('1/2i').to_s #=> "0+1/2i"
- * Complex(0, Float::INFINITY).to_s #=> "0+Infinity*i"
- * Complex(Float::NAN, Float::NAN).to_s #=> "NaN+NaN*i"
*/
static VALUE
nucomp_to_s(VALUE self)
@@ -1302,12 +1229,6 @@ nucomp_to_s(VALUE self)
* cmp.inspect -> string
*
* Returns the value as a string for inspection.
- *
- * Complex(2).inspect #=> "(2+0i)"
- * Complex('-8/6').inspect #=> "((-4/3)+0i)"
- * Complex('1/2i').inspect #=> "(0+(1/2)*i)"
- * Complex(0, Float::INFINITY).inspect #=> "(0+Infinity*i)"
- * Complex(Float::NAN, Float::NAN).inspect #=> "(NaN+NaN*i)"
*/
static VALUE
nucomp_inspect(VALUE self)
@@ -1323,25 +1244,6 @@ nucomp_inspect(VALUE self)
/* :nodoc: */
static VALUE
-nucomp_dumper(VALUE self)
-{
- return self;
-}
-
-/* :nodoc: */
-static VALUE
-nucomp_loader(VALUE self, VALUE a)
-{
- get_dat1(self);
-
- dat->real = rb_ivar_get(a, id_i_real);
- dat->imag = rb_ivar_get(a, id_i_imag);
-
- return self;
-}
-
-/* :nodoc: */
-static VALUE
nucomp_marshal_dump(VALUE self)
{
VALUE a;
@@ -1356,11 +1258,13 @@ nucomp_marshal_dump(VALUE self)
static VALUE
nucomp_marshal_load(VALUE self, VALUE a)
{
+ get_dat1(self);
Check_Type(a, T_ARRAY);
if (RARRAY_LEN(a) != 2)
rb_raise(rb_eArgError, "marshaled complex must have an array whose length is 2 but %ld", RARRAY_LEN(a));
- rb_ivar_set(self, id_i_real, RARRAY_PTR(a)[0]);
- rb_ivar_set(self, id_i_imag, RARRAY_PTR(a)[1]);
+ dat->real = RARRAY_PTR(a)[0];
+ dat->imag = RARRAY_PTR(a)[1];
+ rb_copy_generic_ivar(self, a);
return self;
}
@@ -1399,12 +1303,7 @@ rb_Complex(VALUE x, VALUE y)
* call-seq:
* cmp.to_i -> integer
*
- * Returns the value as an integer if possible (the imaginary part
- * should be exactly zero).
- *
- * Complex(1, 0).to_i #=> 1
- * Complex(1, 0.0).to_i # RangeError
- * Complex(1, 2).to_i # RangeError
+ * Returns the value as an integer if possible.
*/
static VALUE
nucomp_to_i(VALUE self)
@@ -1423,12 +1322,7 @@ nucomp_to_i(VALUE self)
* call-seq:
* cmp.to_f -> float
*
- * Returns the value as a float if possible (the imaginary part should
- * be exactly zero).
- *
- * Complex(1, 0).to_f #=> 1.0
- * Complex(1, 0.0).to_f # RangeError
- * Complex(1, 2).to_f # RangeError
+ * Returns the value as a float if possible.
*/
static VALUE
nucomp_to_f(VALUE self)
@@ -1447,14 +1341,8 @@ nucomp_to_f(VALUE self)
* call-seq:
* cmp.to_r -> rational
*
- * Returns the value as a rational if possible (the imaginary part
- * should be exactly zero).
- *
- * Complex(1, 0).to_r #=> (1/1)
- * Complex(1, 0.0).to_r # RangeError
- * Complex(1, 2).to_r # RangeError
- *
- * See rationalize.
+ * If the imaginary part is exactly 0, returns the real part as a Rational,
+ * otherwise a RangeError is raised.
*/
static VALUE
nucomp_to_r(VALUE self)
@@ -1473,14 +1361,8 @@ nucomp_to_r(VALUE self)
* call-seq:
* cmp.rationalize([eps]) -> rational
*
- * Returns the value as a rational if possible (the imaginary part
- * should be exactly zero).
- *
- * Complex(1.0/3, 0).rationalize #=> (1/3)
- * Complex(1, 0.0).rationalize # RangeError
- * Complex(1, 2).rationalize # RangeError
- *
- * See to_r.
+ * If the imaginary part is exactly 0, returns the real part as a Rational,
+ * otherwise a RangeError is raised.
*/
static VALUE
nucomp_rationalize(int argc, VALUE *argv, VALUE self)
@@ -1499,21 +1381,6 @@ nucomp_rationalize(int argc, VALUE *argv, VALUE self)
/*
* call-seq:
- * complex.to_c -> self
- *
- * Returns self.
- *
- * Complex(2).to_c #=> (2+0i)
- * Complex(-8, 6).to_c #=> (-8+6i)
- */
-static VALUE
-nucomp_to_c(VALUE self)
-{
- return self;
-}
-
-/*
- * call-seq:
* nil.to_c -> (0+0i)
*
* Returns zero as a complex.
@@ -1536,306 +1403,160 @@ numeric_to_c(VALUE self)
return rb_complex_new1(self);
}
-#include <ctype.h>
+static VALUE comp_pat0, comp_pat1, comp_pat2, a_slash, a_dot_and_an_e,
+ null_string, underscores_pat, an_underscore;
-inline static int
-issign(int c)
-{
- return (c == '-' || c == '+');
-}
+#define WS "\\s*"
+#define DIGITS "(?:[0-9](?:_[0-9]|[0-9])*)"
+#define NUMERATOR "(?:" DIGITS "?\\.)?" DIGITS "(?:[eE][-+]?" DIGITS ")?"
+#define DENOMINATOR DIGITS
+#define NUMBER "[-+]?" NUMERATOR "(?:\\/" DENOMINATOR ")?"
+#define NUMBERNOS NUMERATOR "(?:\\/" DENOMINATOR ")?"
+#define PATTERN0 "\\A" WS "(" NUMBER ")@(" NUMBER ")" WS
+#define PATTERN1 "\\A" WS "([-+])?(" NUMBER ")?[iIjJ]" WS
+#define PATTERN2 "\\A" WS "(" NUMBER ")(([-+])(" NUMBERNOS ")?[iIjJ])?" WS
-static int
-read_sign(const char **s,
- char **b)
+static void
+make_patterns(void)
{
- int sign = '?';
+ static const char comp_pat0_source[] = PATTERN0;
+ static const char comp_pat1_source[] = PATTERN1;
+ static const char comp_pat2_source[] = PATTERN2;
+ static const char underscores_pat_source[] = "_+";
- if (issign(**s)) {
- sign = **b = **s;
- (*s)++;
- (*b)++;
- }
- return sign;
-}
+ if (comp_pat0) return;
-inline static int
-isdecimal(int c)
-{
- return isdigit((unsigned char)c);
-}
+ comp_pat0 = rb_reg_new(comp_pat0_source, sizeof comp_pat0_source - 1, 0);
+ rb_gc_register_mark_object(comp_pat0);
-static int
-read_digits(const char **s, int strict,
- char **b)
-{
- int us = 1;
+ comp_pat1 = rb_reg_new(comp_pat1_source, sizeof comp_pat1_source - 1, 0);
+ rb_gc_register_mark_object(comp_pat1);
- if (!isdecimal(**s))
- return 0;
+ comp_pat2 = rb_reg_new(comp_pat2_source, sizeof comp_pat2_source - 1, 0);
+ rb_gc_register_mark_object(comp_pat2);
- while (isdecimal(**s) || **s == '_') {
- if (**s == '_') {
- if (strict) {
- if (us)
- return 0;
- }
- us = 1;
- }
- else {
- **b = **s;
- (*b)++;
- us = 0;
- }
- (*s)++;
- }
- if (us)
- do {
- (*s)--;
- } while (**s == '_');
- return 1;
-}
+ a_slash = rb_usascii_str_new2("/");
+ rb_gc_register_mark_object(a_slash);
-inline static int
-islettere(int c)
-{
- return (c == 'e' || c == 'E');
-}
+ a_dot_and_an_e = rb_usascii_str_new2(".eE");
+ rb_gc_register_mark_object(a_dot_and_an_e);
-static int
-read_num(const char **s, int strict,
- char **b)
-{
- if (**s != '.') {
- if (!read_digits(s, strict, b))
- return 0;
- }
+ null_string = rb_usascii_str_new2("");
+ rb_gc_register_mark_object(null_string);
- if (**s == '.') {
- **b = **s;
- (*s)++;
- (*b)++;
- if (!read_digits(s, strict, b)) {
- (*b)--;
- return 0;
- }
- }
+ underscores_pat = rb_reg_new(underscores_pat_source,
+ sizeof underscores_pat_source - 1, 0);
+ rb_gc_register_mark_object(underscores_pat);
- if (islettere(**s)) {
- **b = **s;
- (*s)++;
- (*b)++;
- read_sign(s, b);
- if (!read_digits(s, strict, b)) {
- (*b)--;
- return 0;
- }
- }
- return 1;
+ an_underscore = rb_usascii_str_new2("_");
+ rb_gc_register_mark_object(an_underscore);
}
-inline static int
-read_den(const char **s, int strict,
- char **b)
-{
- if (!read_digits(s, strict, b))
- return 0;
- return 1;
-}
+#define id_match rb_intern("match")
+#define f_match(x,y) rb_funcall((x), id_match, 1, (y))
-static int
-read_rat_nos(const char **s, int strict,
- char **b)
-{
- if (!read_num(s, strict, b))
- return 0;
- if (**s == '/') {
- **b = **s;
- (*s)++;
- (*b)++;
- if (!read_den(s, strict, b)) {
- (*b)--;
- return 0;
- }
- }
- return 1;
-}
-
-static int
-read_rat(const char **s, int strict,
- char **b)
-{
- read_sign(s, b);
- if (!read_rat_nos(s, strict, b))
- return 0;
- return 1;
-}
-
-inline static int
-isimagunit(int c)
-{
- return (c == 'i' || c == 'I' ||
- c == 'j' || c == 'J');
-}
-
-VALUE rb_cstr_to_rat(const char *, int);
+#define id_gsub_bang rb_intern("gsub!")
+#define f_gsub_bang(x,y,z) rb_funcall((x), id_gsub_bang, 2, (y), (z))
static VALUE
-str2num(char *s)
+string_to_c_internal(VALUE self)
{
- if (strchr(s, '/'))
- return rb_cstr_to_rat(s, 0);
- if (strpbrk(s, ".eE"))
- return DBL2NUM(rb_cstr_to_dbl(s, 0));
- return rb_cstr_to_inum(s, 10, 0);
-}
-
-static int
-read_comp(const char **s, int strict,
- VALUE *ret, char **b)
-{
- char *bb;
- int sign;
- VALUE num, num2;
-
- bb = *b;
-
- sign = read_sign(s, b);
-
- if (isimagunit(**s)) {
- (*s)++;
- num = INT2FIX((sign == '-') ? -1 : + 1);
- *ret = rb_complex_new2(ZERO, num);
- return 1; /* e.g. "i" */
- }
+ VALUE s;
- if (!read_rat_nos(s, strict, b)) {
- **b = '\0';
- num = str2num(bb);
- *ret = rb_complex_new2(num, ZERO);
- return 0; /* e.g. "-" */
- }
- **b = '\0';
- num = str2num(bb);
+ s = self;
- if (isimagunit(**s)) {
- (*s)++;
- *ret = rb_complex_new2(ZERO, num);
- return 1; /* e.g. "3i" */
- }
+ if (RSTRING_LEN(s) == 0)
+ return rb_assoc_new(Qnil, self);
- if (**s == '@') {
- int st;
-
- (*s)++;
- bb = *b;
- st = read_rat(s, strict, b);
- **b = '\0';
- if (strlen(bb) < 1 ||
- !isdecimal(*(bb + strlen(bb) - 1))) {
- *ret = rb_complex_new2(num, ZERO);
- return 0; /* e.g. "1@-" */
+ {
+ VALUE m, sr, si, re, r, i;
+ int po;
+
+ m = f_match(comp_pat0, s);
+ if (!NIL_P(m)) {
+ sr = rb_reg_nth_match(1, m);
+ si = rb_reg_nth_match(2, m);
+ re = rb_reg_match_post(m);
+ po = 1;
}
- num2 = str2num(bb);
- *ret = rb_complex_polar(num, num2);
- if (!st)
- return 0; /* e.g. "1@2." */
- else
- return 1; /* e.g. "1@2" */
- }
-
- if (issign(**s)) {
- bb = *b;
- sign = read_sign(s, b);
- if (isimagunit(**s))
- num2 = INT2FIX((sign == '-') ? -1 : + 1);
- else {
- if (!read_rat_nos(s, strict, b)) {
- *ret = rb_complex_new2(num, ZERO);
- return 0; /* e.g. "1+xi" */
+ if (NIL_P(m)) {
+ m = f_match(comp_pat1, s);
+ if (!NIL_P(m)) {
+ sr = Qnil;
+ si = rb_reg_nth_match(1, m);
+ if (NIL_P(si))
+ si = rb_usascii_str_new2("");
+ {
+ VALUE t;
+
+ t = rb_reg_nth_match(2, m);
+ if (NIL_P(t))
+ t = rb_usascii_str_new2("1");
+ rb_str_concat(si, t);
+ }
+ re = rb_reg_match_post(m);
+ po = 0;
}
- **b = '\0';
- num2 = str2num(bb);
}
- if (!isimagunit(**s)) {
- *ret = rb_complex_new2(num, ZERO);
- return 0; /* e.g. "1+3x" */
+ if (NIL_P(m)) {
+ m = f_match(comp_pat2, s);
+ if (NIL_P(m))
+ return rb_assoc_new(Qnil, self);
+ sr = rb_reg_nth_match(1, m);
+ if (NIL_P(rb_reg_nth_match(2, m)))
+ si = Qnil;
+ else {
+ VALUE t;
+
+ si = rb_reg_nth_match(3, m);
+ t = rb_reg_nth_match(4, m);
+ if (NIL_P(t))
+ t = rb_usascii_str_new2("1");
+ rb_str_concat(si, t);
+ }
+ re = rb_reg_match_post(m);
+ po = 0;
}
- (*s)++;
- *ret = rb_complex_new2(num, num2);
- return 1; /* e.g. "1+2i" */
- }
- /* !(@, - or +) */
- {
- *ret = rb_complex_new2(num, ZERO);
- return 1; /* e.g. "3" */
- }
-}
-
-inline static void
-skip_ws(const char **s)
-{
- while (isspace((unsigned char)**s))
- (*s)++;
-}
-
-static int
-parse_comp(const char *s, int strict,
- VALUE *num)
-{
- char *buf, *b;
- VALUE tmp;
- int ret = 1;
-
- buf = ALLOCV_N(char, tmp, strlen(s) + 1);
- b = buf;
-
- skip_ws(&s);
- if (!read_comp(&s, strict, num, &b)) {
- ret = 0;
- }
- else {
- skip_ws(&s);
-
- if (strict)
- if (*s != '\0')
- ret = 0;
+ r = INT2FIX(0);
+ i = INT2FIX(0);
+ if (!NIL_P(sr)) {
+ if (strchr(RSTRING_PTR(sr), '/'))
+ r = f_to_r(sr);
+ else if (strpbrk(RSTRING_PTR(sr), ".eE"))
+ r = f_to_f(sr);
+ else
+ r = f_to_i(sr);
+ }
+ if (!NIL_P(si)) {
+ if (strchr(RSTRING_PTR(si), '/'))
+ i = f_to_r(si);
+ else if (strpbrk(RSTRING_PTR(si), ".eE"))
+ i = f_to_f(si);
+ else
+ i = f_to_i(si);
+ }
+ if (po)
+ return rb_assoc_new(rb_complex_polar(r, i), re);
+ else
+ return rb_assoc_new(rb_complex_new2(r, i), re);
}
- ALLOCV_END(tmp);
-
- return ret;
}
static VALUE
string_to_c_strict(VALUE self)
{
- char *s;
- VALUE num;
-
- rb_must_asciicompat(self);
-
- s = RSTRING_PTR(self);
-
- if (!s || memchr(s, '\0', RSTRING_LEN(self)))
- rb_raise(rb_eArgError, "string contains null byte");
-
- if (s && s[RSTRING_LEN(self)]) {
- rb_str_modify(self);
- s = RSTRING_PTR(self);
- s[RSTRING_LEN(self)] = '\0';
- }
-
- if (!s)
- s = (char *)"";
-
- if (!parse_comp(s, 1, &num)) {
- VALUE ins = f_inspect(self);
+ VALUE a = string_to_c_internal(self);
+ if (NIL_P(RARRAY_PTR(a)[0]) || RSTRING_LEN(RARRAY_PTR(a)[1]) > 0) {
+ VALUE s = f_inspect(self);
rb_raise(rb_eArgError, "invalid value for convert(): %s",
- StringValuePtr(ins));
+ StringValuePtr(s));
}
-
- return num;
+ return RARRAY_PTR(a)[0];
}
+#define id_gsub rb_intern("gsub")
+#define f_gsub(x,y,z) rb_funcall((x), id_gsub, 2, (y), (z))
+
/*
* call-seq:
* str.to_c -> complex
@@ -1845,6 +1566,8 @@ string_to_c_strict(VALUE self)
* sequences can be separated by an underscore. Returns zero for null
* or garbage string.
*
+ * For example:
+ *
* '9'.to_c #=> (9+0i)
* '2.5'.to_c #=> (2.5+0i)
* '2.5/1'.to_c #=> ((5/2)+0i)
@@ -1856,31 +1579,23 @@ string_to_c_strict(VALUE self)
* '-0.0-0.0i'.to_c #=> (-0.0-0.0i)
* '1/2+3/4i'.to_c #=> ((1/2)+(3/4)*i)
* 'ruby'.to_c #=> (0+0i)
- *
- * See Kernel.Complex.
*/
static VALUE
string_to_c(VALUE self)
{
- char *s;
- VALUE num;
-
- rb_must_asciicompat(self);
-
- s = RSTRING_PTR(self);
+ VALUE s, a, backref;
- if (s && s[RSTRING_LEN(self)]) {
- rb_str_modify(self);
- s = RSTRING_PTR(self);
- s[RSTRING_LEN(self)] = '\0';
- }
+ backref = rb_backref_get();
+ rb_match_busy(backref);
- if (!s)
- s = (char *)"";
+ s = f_gsub(self, underscores_pat, an_underscore);
+ a = string_to_c_internal(s);
- (void)parse_comp(s, 0, &num);
+ rb_backref_set(backref);
- return num;
+ if (!NIL_P(RARRAY_PTR(a)[0]))
+ return RARRAY_PTR(a)[0];
+ return rb_complex_new1(INT2FIX(0));
}
static VALUE
@@ -2114,7 +1829,6 @@ float_arg(VALUE self)
void
Init_Complex(void)
{
- VALUE compat;
#undef rb_intern
#define rb_intern(str) rb_intern_const(str)
@@ -2144,8 +1858,6 @@ Init_Complex(void)
id_to_i = rb_intern("to_i");
id_to_r = rb_intern("to_r");
id_to_s = rb_intern("to_s");
- id_i_real = rb_intern("@real");
- id_i_imag = rb_intern("@image"); /* @image, not @imag */
rb_cComplex = rb_define_class("Complex", rb_cNumeric);
@@ -2234,10 +1946,8 @@ Init_Complex(void)
rb_define_method(rb_cComplex, "to_s", nucomp_to_s, 0);
rb_define_method(rb_cComplex, "inspect", nucomp_inspect, 0);
- rb_define_private_method(rb_cComplex, "marshal_dump", nucomp_marshal_dump, 0);
- compat = rb_define_class_under(rb_cComplex, "compatible", rb_cObject);
- rb_define_private_method(compat, "marshal_load", nucomp_marshal_load, 1);
- rb_marshal_define_compat(rb_cComplex, compat, nucomp_dumper, nucomp_loader);
+ rb_define_method(rb_cComplex, "marshal_dump", nucomp_marshal_dump, 0);
+ rb_define_method(rb_cComplex, "marshal_load", nucomp_marshal_load, 1);
/* --- */
@@ -2245,10 +1955,11 @@ Init_Complex(void)
rb_define_method(rb_cComplex, "to_f", nucomp_to_f, 0);
rb_define_method(rb_cComplex, "to_r", nucomp_to_r, 0);
rb_define_method(rb_cComplex, "rationalize", nucomp_rationalize, -1);
- rb_define_method(rb_cComplex, "to_c", nucomp_to_c, 0);
rb_define_method(rb_cNilClass, "to_c", nilclass_to_c, 0);
rb_define_method(rb_cNumeric, "to_c", numeric_to_c, 0);
+ make_patterns();
+
rb_define_method(rb_cString, "to_c", string_to_c, 0);
rb_define_private_method(CLASS_OF(rb_cComplex), "convert", nucomp_s_convert, -1);
@@ -2272,9 +1983,6 @@ Init_Complex(void)
rb_define_method(rb_cFloat, "angle", float_arg, 0);
rb_define_method(rb_cFloat, "phase", float_arg, 0);
- /*
- * The imaginary unit.
- */
rb_define_const(rb_cComplex, "I",
f_complex_new_bang2(rb_cComplex, ZERO, ONE));
}
diff --git a/configure.in b/configure.in
index 3c6ce92f81..b006a01a81 100644
--- a/configure.in
+++ b/configure.in
@@ -1,6 +1,6 @@
dnl Process this file with autoconf to produce a configure script.
+dnl {
AC_INIT()
-{
AC_CONFIG_AUX_DIR(tool)
AC_PREREQ(2.60)
@@ -9,25 +9,7 @@ AC_DEFUN([RUBY_PREREQ_AC],
[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [$1]), [-1],
AC_MSG_ERROR([Autoconf version ]$1[ or higher is required]$2))])
-AC_DEFUN([RUBY_RM_RECURSIVE], [
-m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [2.70]), [-1], [
-# suppress error messages, rm: cannot remove 'conftest.dSYM', from
-# AC_EGREP_CPP with CFLAGS=-g on Darwin.
-AS_CASE([$build_os], [darwin*], [
-rm() {
- rm_recursive=''
- for arg do
- AS_CASE("$arg",
- [--*], [],
- [-*r*], [break],
- [conftest.*], [if test -d "$arg"; then rm_recursive=-r; break; fi],
- [])
- done
- command rm $rm_recursive "[$]@"
-}
-])])])
-
-{ # environment section
+dnl environment section {
AC_ARG_WITH(baseruby,
AS_HELP_STRING([--with-baseruby=RUBY], [use RUBY as baseruby; RUBY is the pathname of ruby]),
@@ -37,13 +19,8 @@ AC_ARG_WITH(baseruby,
[
BASERUBY="ruby"
])
-if test "`RUBYOPT=- $BASERUBY -e 'p 42' 2>/dev/null`" = 42; then
- if test "`RUBYOPT=- $BASERUBY --disable=gems -e 'p 42' 2>/dev/null`" = 42; then
- BASERUBY="$BASERUBY --disable=gems"
- fi
-else
+test "`RUBYOPT=- $BASERUBY -e 'p 42' 2>/dev/null`" = 42 ||
BASERUBY="echo executable host ruby is required. use --with-baseruby option.; false"
-fi
AC_SUBST(BASERUBY)
AC_DEFUN([RUBY_MINGW32],
@@ -56,10 +33,7 @@ AC_CACHE_CHECK(for mingw32 environment, rb_cv_mingw32,
#endif
], rb_cv_mingw32=yes,rb_cv_mingw32=no)
rm -f conftest*])
-if test "$rb_cv_mingw32" = yes; then
- target_os="mingw32"
- : ${ac_tool_prefix:="`expr "$CC" : ['\(.*-\)g\?cc[^/]*$']`"}
-fi
+test "$rb_cv_mingw32" = yes && target_os="mingw32"
])
AS_CASE(["$target_os"], [mingw*msvc], [
target_os="`echo ${target_os} | sed 's/msvc$//'`"
@@ -69,93 +43,12 @@ target_cpu=x64
])
])
-AC_DEFUN([RUBY_NACL],
-[
- AS_CASE(["${host_os}"],
-[nacl], [
- ac_cv_exeext=.nexe
- host_vendor=chromium
- ac_cv_host=chromium
- AC_MSG_CHECKING([wheather \$NACL_SDK_ROOT is set])
- if test x"${NACL_SDK_ROOT}" = x; then
- AC_MSG_RESULT([no])
- AC_MSG_ERROR([You need to set \$NACL_SDK_ROOT environment variable to build for NativeClient])
- fi
- AC_MSG_RESULT([yes])
-
- nacl_cv_build_variant=glibc
- AC_ARG_WITH(newlib,
- AS_HELP_STRING([--with-newlib], [uses newlib version of NativeClient SDK]),
- [AS_CASE([$withval],
- [no], [nacl_cv_build_variant=glibc],
- [yes], [nacl_cv_build_variant=newlib])])
-
- AS_CASE(["$build_cpu"],
- [x86_64|i?86], [nacl_cv_cpu_nick=x86], [nacl_cv_cpu_nick=$build_cpu])
- AS_CASE(["$build_os"],
- [linux*], [nacl_cv_os_nick=linux],
- [darwin*], [nacl_cv_os_nick=mac],
- [cygwin*|mingw*], [nacl_cv_os_nick=win],
- [nacl_cv_os_nick=$build_os])
-
- host="$host_cpu-chromium-$host_os-"
- ac_tool_prefix="$host_cpu-nacl-"
-
- AC_MSG_CHECKING([NativeClient toolchain])
- if test -d \
- "${NACL_SDK_ROOT}/toolchain/${nacl_cv_os_nick}_${nacl_cv_cpu_nick}_${nacl_cv_build_variant}"; then
- NACL_TOOLCHAIN="${nacl_cv_os_nick}_${nacl_cv_cpu_nick}_${nacl_cv_build_variant}"
- else
- AS_CASE(
- ["${nacl_cv_build_variant}"],
- [glibc], [if test \
- -d "${NACL_SDK_ROOT}/toolchain/${nacl_cv_os_nick}_${nacl_cv_cpu_nick}_newlib" \
- -a -d "${NACL_SDK_ROOT}/toolchain/${nacl_cv_os_nick}_${nacl_cv_cpu_nick}"; then
- NACL_TOOLCHAIN="${nacl_cv_os_nick}_${nacl_cv_cpu_nick}"
- fi],
- [newlib], [ NACL_TOOLCHAIN="${nacl_cv_os_nick}_${nacl_cv_cpu_nick}" ])
- fi
- if test ! -e "${NACL_SDK_ROOT}/toolchain/${NACL_TOOLCHAIN}/${ac_tool_prefix}gcc"; then
- if test "${build_cpu}" = i686 -a -e "${NACL_SDK_ROOT}/toolchain/${NACL_TOOLCHAIN}/nacl-gcc"; then
- ac_tool_prefix=nacl-
- fi
- if test "${build_cpu}" = x86_64 -a -e "${NACL_SDK_ROOT}/toolchain/${NACL_TOOLCHAIN}/nacl-gcc"; then
- ac_tool_prefix=nacl64-
- fi
- fi
- if test -z "${NACL_TOOLCHAIN}"; then
- AC_MSG_ERROR([Unrecognized --host and --build combination or NaCl SDK is not installed])
- fi
- AC_MSG_RESULT(${NACL_TOOLCHAIN})
-
- AC_MSG_CHECKING([path to SDK])
- if ! echo -- "${PATH}" | grep -F "${NACL_SDK_ROOT}/toolchain/${NACL_TOOLCHAIN}/bin" > /dev/null; then
- PATH="${PATH}:${NACL_SDK_ROOT}/toolchain/${NACL_TOOLCHAIN}/bin"
- fi
-
- AC_SUBST(NACL_TOOLCHAIN)
- AC_SUBST(NACL_SDK_ROOT)
- AC_SUBST(NACL_SDK_VARIANT, nacl_cv_build_variant)
-])])
-
-AC_DEFUN([RUBY_NACL_CHECK_PEPPER_TYPES],
-[AS_CASE(["${host_os}"],
-[nacl], [
- AC_CHECK_TYPES([struct PPB_Core, struct PPB_Messaging, struct PPB_Var,
- struct PPB_URLLoader, struct PPB_URLRequestInfo,
- struct PPB_URLResponseInfo, struct PPB_FileRef,
- struct PPP_Instance])
-])
-])
-
AC_DEFUN([RUBY_CPPOUTFILE],
[AC_CACHE_CHECK(whether ${CPP} accepts -o, rb_cv_cppoutfile,
-[save_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS='-o conftest-1.i'
-rb_cv_cppoutfile=no
-AC_TRY_CPP([test-for-cppout],
- [grep test-for-cppout conftest-1.i > /dev/null && rb_cv_cppoutfile=yes])
-CPPFLAGS="$save_CPPFLAGS"
+[cppflags=$CPPFLAGS
+CPPFLAGS='-o conftest.i'
+AC_TRY_CPP([], rb_cv_cppoutfile=yes, rb_cv_cppoutfile=no)
+CPPFLAGS=$cppflags
rm -f conftest*])
if test "$rb_cv_cppoutfile" = yes; then
CPPOUTFILE='-o conftest.i'
@@ -190,11 +83,12 @@ RUBY_PROGRAM_VERSION=`sed -n 's/^#define RUBY_VERSION "\(.*\)"/\1/p' $srcdir/ver
AC_SUBST(RUBY_PROGRAM_VERSION)
RUBY_RELEASE_DATE=`sed -n 's/^#define RUBY_RELEASE_DATE "\(.*\)"/\1/p' $srcdir/version.h`
AC_SUBST(RUBY_RELEASE_DATE)
-RUBY_PATCHLEVEL=`sed -n 's/^#define RUBY_PATCHLEVEL //p' $srcdir/version.h`
-AC_DEFINE(CANONICALIZATION_FOR_MATHN)
+if test "$MAJOR" = "1"; then
+ AC_DEFINE(CANONICALIZATION_FOR_MATHN)
+fi
+
dnl checks for alternative programs
AC_CANONICAL_BUILD
-RUBY_RM_RECURSIVE
AC_ARG_WITH(gcc,
AS_HELP_STRING([--without-gcc], [never use gcc]),
[
@@ -209,7 +103,7 @@ then
(it is also a good idea to do 'make clean' before compiling))
fi
AS_CASE(["$build_os"],
- [darwin1*.*], [
+ [darwin11.*], [
AS_CASE(["x$CC"],
[xgcc-4.2|x/usr/bin/gcc-4.2], [: ${CXX=g++-4.2}],
[xgcc|x/usr/bin/gcc], [: ${CXX=g++}],
@@ -217,7 +111,6 @@ AS_CASE(["$build_os"],
[xclang|x/usr/bin/clang], [: ${CXX=clang++}])
])
test -z "$CC" || ac_cv_prog_CC="$CC"
-test -z "$CXX" || ac_cv_prog_CXX="$CXX"
if test "$program_prefix" = NONE; then
program_prefix=
@@ -226,9 +119,6 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"`
RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"`
AC_SUBST(RUBY_BASE_NAME)
AC_SUBST(RUBYW_BASE_NAME)
-AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version}')
-AC_DEFINE_UNQUOTED(RUBY_BASE_NAME, "${RUBY_BASE_NAME}" !<verconf>!)
-AC_DEFINE_UNQUOTED(RUBY_VERSION_NAME, RUBY_BASE_NAME"-"RUBY_LIB_VERSION !<verconf>!)
AC_CANONICAL_TARGET
target_os=`echo $target_os | sed 's/linux-gnu$/linux/;s/linux-gnu/linux-/'`
@@ -388,24 +278,13 @@ if test -z "${CXXFLAGS+set}"; then
cxxflags="$cxxflags "'${optflags} ${debugflags} ${warnflags}'
fi
-RUBY_NACL
-AS_CASE(["$host_os:$build_os"],
-[darwin*:darwin*], [
- AC_CHECK_TOOLS(CC, [gcc-4.2 clang gcc cc])
-])
if test x"${build}" != x"${host}"; then
AC_CHECK_TOOL(CC, gcc)
fi
-
AC_PROG_CC
AC_PROG_CXX
-RUBY_MINGW32
AC_PROG_GCC_TRADITIONAL
AC_SUBST(GCC)
-AS_CASE(["$target_os"],
-[solaris*], [AC_PATH_TOOL([LD], [ld], [/usr/ccs/bin/ld], [/usr/ccs/bin:$PATH])],
-[AC_CHECK_TOOL([LD], [ld], [ld])])
-AC_SUBST(LD)
if test "$GCC" = yes; then
linker_flag=-Wl,
: ${optflags=-O3}
@@ -422,34 +301,12 @@ RUBY_CPPOUTFILE
AC_SUBST(OUTFLAG)
AC_SUBST(COUTFLAG)
+RUBY_MINGW32
RUBY_UNIVERSAL_ARCH
if test "$target_cpu" != "$host_cpu" -a "$GCC" = yes -a "$cross_compiling" = no -a "$universal_binary" = no; then
RUBY_DEFAULT_ARCH("$target_cpu")
fi
-AS_CASE(["$target_cpu-$target_os"], [[i[3-6]86*]], [
- AC_CACHE_CHECK([for __sync_val_compare_and_swap], [rb_cv_gcc_compiler_cas], [
- AC_TRY_LINK([unsigned long atomic_var;],
- [
- __sync_val_compare_and_swap(&atomic_var, 0, 1);
- ],
- [rb_cv_gcc_compiler_cas=yes],
- [rb_cv_gcc_compiler_cas=no])])
- if test "$rb_cv_gcc_compiler_cas" = no; then
- unset rb_cv_gcc_compiler_cas
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -march=i486"
- AC_CACHE_CHECK([for __sync_val_compare_and_swap with -march=i486], [rb_cv_gcc_compiler_cas], [
- AC_TRY_LINK([unsigned long atomic_var;],
- [
- __sync_val_compare_and_swap(&atomic_var, 0, 1);
- ],
- [rb_cv_gcc_compiler_cas=yes
- ARCH_FLAG="-march=i486"],
- [rb_cv_gcc_compiler_cas=no])])
- CFLAGS="$save_CFLAGS"
- fi])
-
AC_CHECK_TOOL(RANLIB, ranlib, :)
AC_CHECK_TOOL(AR, ar)
if test -z "$AR"; then
@@ -486,9 +343,6 @@ AS_CASE(["$target_os"],
sed -n '/^[[ ]]*dll name: \(msvc.*\)\.dll$/{s//\1/p;q;}'`],
[rb_cv_msvcrt=msvcrt])
test "$rb_cv_msvcrt" = "" && rb_cv_msvcrt=msvcrt])
- RT_VER=`echo "$rb_cv_msvcrt" | tr -cd [0-9]`
- test "$RT_VER" = "" && RT_VER=60
- AC_DEFINE_UNQUOTED(RUBY_MSVCRT_VERSION, $RT_VER)
])
: ${enable_shared=yes}
],
@@ -511,51 +365,8 @@ fi
MAKEDIRS="$MKDIR_P"
AC_SUBST(MAKEDIRS)
-AC_DEFUN([RUBY_DTRACE_AVAILABLE],
-[AC_CACHE_CHECK(whether dtrace USDT is available, rb_cv_dtrace_available,
-[
- echo "provider conftest{ probe fire(); };" > conftest_provider.d
- if $DTRACE -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null; then
- # DTrace is available on the system
- rb_cv_dtrace_available=yes
- else
- # DTrace is not available while dtrace command exists
- # for example FreeBSD 8 or FreeBSD 9 without DTrace build option
- rb_cv_dtrace_available=no
- fi
- rm -f conftest.[co] conftest_provider.[dho]
-])
-])
-
-AC_DEFUN([RUBY_DTRACE_POSTPROCESS],
-[AC_CACHE_CHECK(whether $DTRACE needs post processing, rb_cv_prog_dtrace_g,
-[
- if {
- echo "provider conftest{ probe fire(); };" > conftest_provider.d &&
- dtrace -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null &&
- cat >conftest.c <<_CONF &&
- @%:@include "conftest_provider.h"
- int main(void){ CONFTEST_FIRE(); return 0; }
-_CONF
- $CC $CFLAGS -c -o conftest.o conftest.c &&
- $DTRACE -G -s conftest_provider.d conftest.o 2>/dev/null
- }; then
- rb_cv_prog_dtrace_g=yes
- else
- rb_cv_prog_dtrace_g=no
- fi
- rm -f conftest.[co] conftest_provider.[dho]
-])
-])
-
-AC_CHECK_PROG([DTRACE], [${ac_tool_prefix}dtrace], [${ac_tool_prefix}dtrace])
-if test "$cross_compiling:$ac_cv_prog_DTRACE" = no: -a -n "$ac_tool_prefix"; then
- AC_CHECK_PROG([DTRACE], [dtrace], [dtrace])
-fi
-
AC_CHECK_PROGS(DOT, dot)
AC_CHECK_PROGS(DOXYGEN, doxygen)
-AS_CASE(["${host_os}"], [nacl], [AC_PATH_PROG(PYTHON, python)])
AC_CHECK_PROG(PKG_CONFIG, pkg-config, [pkg-config], [], [],
[`"$as_dir/$ac_word$ac_exec_ext" --print-errors --version > /dev/null 2>&1 || echo "$as_dir/$ac_word$ac_exec_ext"`])
@@ -585,7 +396,7 @@ $as_ln_s ../build . > /dev/null 2>&1 && cd build &&
for chdir in 'cd -P' 'PWD= cd'; do
/bin/sh -c "$chdir ../src && echo '$chdir' > cdcmd" 2> /dev/null && break
done)
-if test -f conf$$.dir/src/cdcmd; then
+if test -e conf$$.dir/src/cdcmd; then
read CHDIR < conf$$.dir/src/cdcmd 2> /dev/null
else
CHDIR=cd
@@ -594,8 +405,8 @@ rm -fr conf$$.dir
AC_MSG_RESULT([$CHDIR])
AC_SUBST(CHDIR)
-}
-{ # compiler section
+dnl }
+dnl compiler section {
AC_DEFUN([RUBY_WERROR_FLAG], [dnl
save_CFLAGS="$CFLAGS"
@@ -616,7 +427,7 @@ else
fi])
AC_DEFUN(RUBY_TRY_CFLAGS, [
- AC_MSG_CHECKING([whether ]$1[ is accepted as CFLAGS])
+ AC_MSG_CHECKING([whether ]$1[ is accepted])
RUBY_WERROR_FLAG([
CFLAGS="[$]CFLAGS $1"
AC_TRY_COMPILE([$4], [$5],
@@ -630,7 +441,7 @@ AC_DEFUN(RUBY_TRY_CFLAGS, [
AC_DEFUN(RUBY_TRY_LDFLAGS, [
save_LDFLAGS="$LDFLAGS"
LDFLAGS="[$]LDFLAGS $1"
- AC_MSG_CHECKING([whether $1 is accepted as LDFLAGS])
+ AC_MSG_CHECKING([whether $1 is accepted])
RUBY_WERROR_FLAG([
AC_TRY_LINK([$4], [$5],
[$2
@@ -642,38 +453,28 @@ AC_DEFUN(RUBY_TRY_LDFLAGS, [
save_LDFLAGS=
])
-AS_CASE([$RUBY_PATCHLEVEL], [-*],
- [particular_werror_flags=yes], [particular_werror_flags=no])
-AC_ARG_ENABLE(werror,
- AS_HELP_STRING([--disable-werror],
- [don't make warnings into errors
- even if a compiler support -Werror feature
- @<:@disabled by default unless development version@:>@]),
- [particular_werror_flags=$enableval])
-
rb_cv_warnflags="$warnflags"
if test "$GCC:${warnflags+set}:no" = yes::no; then
+ particular_werror_flags=yes
for wflag in -Wno-unused-parameter -Wno-parentheses -Wno-long-long \
-Wno-missing-field-initializers \
- -Wunused-variable \
-Werror=pointer-arith \
-Werror=write-strings \
-Werror=declaration-after-statement \
-Werror=shorten-64-to-32 \
- -Werror=implicit-function-declaration \
+ -Werror-implicit-function-declaration \
; do
- if test "$particular_werror_flags" != yes; then
+ if test "$particular_werror_flags" = yes; then
+ wflag=`echo x$wflag | sed 's/^x-Werror-/-Werror=/;s/^x//'`
+ else
wflag=`echo x$wflag | sed 's/^x-Werror=/-W/;s/^x//'`
fi
ok=no
- RUBY_TRY_CFLAGS($wflag, [
- RUBY_APPEND_OPTIONS(warnflags, $wflag)
- ok=yes
- ])
+ RUBY_TRY_CFLAGS($wflag, [warnflags="${warnflags+$warnflags }$wflag" ok=yes])
AS_CASE([$ok:$wflag], [no:-Werror=*], [
wflag=`echo x$wflag | sed 's/^x-Werror=/-W/'`
RUBY_TRY_CFLAGS($wflag, [
- RUBY_APPEND_OPTIONS(warnflags, $wflag)
+ warnflags="${warnflags+$warnflags }$wflag"
particular_werror_flags=no
])
])
@@ -686,60 +487,13 @@ if test "$GCC:${warnflags+set}:no" = yes::no; then
warnflags=
fi
if test "$GCC" = yes; then
- test "${debugflags+set}" || {RUBY_TRY_CFLAGS(-ggdb3, [debugflags=-ggdb3])}
test "${debugflags+set}" || {RUBY_TRY_CFLAGS(-ggdb, [debugflags=-ggdb])}
test "${debugflags+set}" || {RUBY_TRY_CFLAGS(-g3, [debugflags=-g3])}
-
- # -D_FORTIFY_SOURCE
- RUBY_TRY_CFLAGS(-D_FORTIFY_SOURCE=2, [RUBY_APPEND_OPTION(XCFLAGS, -D_FORTIFY_SOURCE=2)])
-
- # -fstack-protector
- AS_CASE(["$target_os"],
- [mingw*|nacl|haiku], [
- stack_protector=no
- ],
- [
- RUBY_TRY_CFLAGS(-fstack-protector, [stack_protector=yes], [stack_protector=no])
- if test "x$stack_protector" = xyes; then
- RUBY_TRY_LDFLAGS(-fstack-protector, [], [stack_protector=broken])
- fi
- ])
- if test "x$stack_protector" = xyes; then
- RUBY_APPEND_OPTION(XCFLAGS, -fstack-protector)
- RUBY_APPEND_OPTION(XLDFLAGS, -fstack-protector)
- RUBY_APPEND_OPTION(LDFLAGS, -fstack-protector)
- fi
-
- AS_CASE(["$target_os"],[mingw*], [
- # On Windows platforms, system provided headers are VC++
- # optimized. That is, C++ habits are often contaminated into
- # various headers. Most frequent situation is the use of //
- # comments. We bypass ANSI C mode for them. Otherwise
- # extension libs cannot include those headers.
- ],
- [cygwin*|darwin*|netbsd*], [
- # need lgamma_r(), finite()
- ],
- [haiku], [
- # Haiku R1/alpha3 uses gcc-4.4.4 which can not handle anonymous union
- # with ANSI standard flags. Anonumous union is required to compile
- # socket extension where <net/if.h> uses anonymous union.
- ],
- [
- # ANSI (no XCFLAGS because this is C only)
- RUBY_TRY_CFLAGS(-ansi -std=iso9899:199409, [
- RUBY_APPEND_OPTION(warnflags, -ansi -std=iso9899:199409)
- RUBY_APPEND_OPTION(strict_warnflags, -ansi -std=iso9899:199409)
- ])
- ])
-
- # suppress annoying -Wstrict-overflow warnings
- RUBY_TRY_CFLAGS(-fno-strict-overflow, [RUBY_APPEND_OPTION(XCFLAGS, -fno-strict-overflow)])
fi
test $ac_cv_prog_cc_g = yes && : ${debugflags=-g}
if test "$GCC" = ""; then
- AS_CASE(["$target_os"],[aix*],[warnflags="$warnflags -qinfo=por" rb_cv_warnflags="$rb_cv_warnflags -qinfo=por"])
+ AS_CASE(["$target_os"],[aix*],[warnflags="-qinfo=por"])
fi
if test "$GCC" = yes; then
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
@@ -757,242 +511,18 @@ if test "$GCC" = yes; then
else
RUBY_TRY_LDFLAGS([-Wl,-unexported_symbol,_Init_*], [visibility_option=ld], [visibility_option=no])
fi
- test "$visibility_option" = no -o "$host_os" = nacl || OBJCOPY=:
+ test "$visibility_option" = no || OBJCOPY=:
fi
if test "$GCC" = yes; then
- # optflags
-
AS_CASE(["$target_os"], [mingw*], [
RUBY_TRY_CFLAGS(-fno-omit-frame-pointer, [optflags="${optflags+$optflags }-fno-omit-frame-pointer"])
])
-
- # disable fast-math
- for oflag in -fno-fast-math; do
- RUBY_TRY_CFLAGS($oflag, [RUBY_APPEND_OPTION(optflags, $oflag)])
- done
- AS_CASE(["$target"],
- [*-darwin*], [
- # doesn't seem necessary on Mac OS X
- ],
- [[i[4-6]86*|i386*mingw*]], [
- RUBY_TRY_CFLAGS(-msse2 -mfpmath=sse, [
- RUBY_APPEND_OPTION(XCFLAGS, -msse2 -mfpmath=sse)
- ])
- AS_CASE(["$XCFLAGS"],
- [[*-msse2*]], [
- RUBY_TRY_CFLAGS(-mstackrealign, [
- RUBY_APPEND_OPTION(XCFLAGS, -mstackrealign)
- ])
- ])
- ]
- )
fi
test -z "${ac_env_CFLAGS_set}" -a -n "${cflags+set}" && eval CFLAGS="\"$cflags $ARCH_FLAG\""
test -z "${ac_env_CXXFLAGS_set}" -a -n "${cxxflags+set}" && eval CXXFLAGS="\"$cxxflags $ARCH_FLAG\""
-}
-{ # header and library section
-
-AC_ARG_WITH(winnt-ver,
- AS_HELP_STRING([--with-winnt-ver=0xXXXX], [target Windows NT version (default to 0x0501)]),
- [with_winnt_ver="$withval"], [with_winnt_ver="0x0501"])
-AS_CASE(["$target_os"],
-[mingw*], [
- RUBY_APPEND_OPTION(CPPFLAGS, -D_WIN32_WINNT=$with_winnt_ver)
-])
-
-AS_CASE(["$target_os"],
-[freebsd*], [
- AC_CACHE_CHECK([whether pthread should be enabled by default],
- rb_cv_enable_pthread_default,
- [AC_TRY_CPP([
-#include <osreldate.h>
-#if __FreeBSD_version < 502102
-#error pthread should be disabled on this platform
-#endif
- ],
- rb_cv_enable_pthread_default=yes,
- rb_cv_enable_pthread_default=no)])
- enable_pthread=$rb_cv_enable_pthread_default
- ],
-[mingw*], [
- enable_pthread=no
- ],
-[
- enable_pthread=yes
- ])
-
-AC_ARG_ENABLE(pthread,
- AS_HELP_STRING([--enable-pthread], [obsolete, and ignored]))
-
-dnl Checks for libraries.
-AS_CASE(["$target_os"],[*bsd*|dragonfly*],[],[ac_cv_func_daemon=no])
-
-POSTLINK=:
-AC_SUBST(POSTLINK)
-AS_CASE(["$target_os"],
-[nextstep*], [ ],
-[openstep*], [ ],
-[rhapsody*], [ ],
-[darwin*], [ RUBY_PREPEND_OPTION(LIBS, -lobjc)
- RUBY_APPEND_OPTIONS(CPPFLAGS, -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT)
- AC_MSG_CHECKING(whether Mac OS X 10.5 or later)
- AC_TRY_CPP([#include <AvailabilityMacros.h>
- #if MAC_OS_X_VERSION_MAX_ALLOWED <= 1040
- #error pre OS X 10.4
- [!<===== pre OS X 10.4 =====>]
- #endif
- ],
- [macosx_10_5=yes], [macosx_10_5=no])
- AC_MSG_RESULT($macosx_10_5)
- if test $macosx_10_5 = yes; then
- ac_cv_header_ucontext_h=no
- else
- AC_DEFINE(BROKEN_SETREUID, 1)
- AC_DEFINE(BROKEN_SETREGID, 1)
- fi
- ac_cv_type_getgroups=gid_t # getgroups() on Rosetta fills garbage
- ac_cv_lib_crypt_crypt=no
- ac_cv_func_fdatasync=no # Mac OS X wrongly reports it has fdatasync()
- AC_CACHE_CHECK(for broken crypt with 8bit chars, rb_cv_broken_crypt,
- [AC_TRY_RUN([
-#include <stdio.h>
-#include <unistd.h>
-#include <string.h>
-
-int
-main()
-{
- int i;
- for (i = 0; i < 128*128; i++) {
- char salt[2], buf[256], *s;
- salt[0] = 0x80 | (i & 0x7f);
- salt[1] = 0x80 | (i >> 7);
- strcpy(buf, crypt("", salt));
- if (strcmp(buf, s = crypt("", salt))) {
-#if 0
- printf("%.2x%.2x: %s -> %s\n", (unsigned char)salt[0], (unsigned char)salt[1],
- buf+2, s+2);
-#endif
- return 1;
- }
- }
- return 0;
-}
-],
- rb_cv_broken_crypt=no,
- rb_cv_broken_crypt=yes,
- rb_cv_broken_crypt=yes)])
- if test "$rb_cv_broken_crypt" = yes; then
- AC_DEFINE(BROKEN_CRYPT, 1)
- fi
- AC_CHECK_PROGS(codesign, codesign)
- if test -n "$codesign"; then
- POSTLINK="test -z '\$(RUBY_CODESIGN)' || $codesign -s '\$(RUBY_CODESIGN)' -f \$@"
- LINK_SO="$LINK_SO
-$POSTLINK"
- fi
- AC_CHECK_HEADERS(crt_externs.h, [], [], [
- #include <crt_externs.h>
- ])
- ],
-[hpux*], [ LIBS="-lm $LIBS"
- ac_cv_c_inline=no],
-[beos*|haiku*], [
- ac_cv_func_link=no
- ac_cv_func_sched_yield=no
- ac_cv_func_pthread_attr_setinheritsched=no
- AS_CASE(["$target_os"],
- [beos*], [ ac_cv_header_net_socket_h=yes],
- [haiku*], [ ac_cv_func_shutdown=no])
- LIBS="$LIBS" # m lib is include in root under BeOS/Haiku
- ],
-[cygwin*], [ ac_cv_header_langinfo_h=yes
- AC_CHECK_FUNCS(cygwin_conv_path)
- AC_LIBOBJ([langinfo])
- ],
-[mingw*], [ LIBS="-lshell32 -lws2_32 -limagehlp -lshlwapi $LIBS"
- ac_cv_header_a_out_h=no
- ac_cv_header_pwd_h=no
- ac_cv_header_utime_h=no
- ac_cv_header_sys_ioctl_h=no
- ac_cv_header_sys_param_h=no
- ac_cv_header_sys_resource_h=no
- ac_cv_header_sys_select_h=no
- ac_cv_header_sys_time_h=no
- ac_cv_header_sys_times_h=no
- ac_cv_header_sys_socket_h=no
- ac_cv_func_times=yes
- ac_cv_func_waitpid=yes
- ac_cv_func_fsync=yes
- ac_cv_func_seekdir=yes
- ac_cv_func_telldir=yes
- ac_cv_func_isinf=yes
- ac_cv_func_isnan=yes
- ac_cv_func_finite=yes
- ac_cv_func_link=yes
- ac_cv_func_fseeko=yes
- ac_cv_lib_crypt_crypt=no
- ac_cv_func_getpgrp_void=no
- ac_cv_func_memcmp_working=yes
- ac_cv_lib_dl_dlopen=no
- rb_cv_binary_elf=no
- rb_cv_negative_time_t=no
- ac_cv_func_fcntl=yes
- ac_cv_func_flock=yes
- ac_cv_func_gmtime_r=yes
- rb_cv_large_fd_select=yes
- ac_cv_type_struct_timeval=yes
- AC_LIBOBJ([langinfo])
- ],
-[os2-emx*], [ LIBS="-lm $LIBS"
- ac_cv_lib_dir_opendir=no],
-[bsdi*], [ LIBS="-lm $LIBS"
- AC_DEFINE(BROKEN_SETREUID, 1)
- AC_DEFINE(BROKEN_SETREGID, 1)
- ac_cv_sizeof_rlim_t=8],
-[freebsd*], [ LIBS="-lm $LIBS"
- ac_cv_func_getpeername=no
- ac_cv_func_getsockname=no
- ac_cv_func_shutdown=no
- ac_cv_func_close=no
- ],
-[dragonfly*], [ LIBS="-lm $LIBS"
- # isinf() and isnan() are macros on DragonFly.
- ac_cv_func_isinf=yes
- ac_cv_func_isnan=yes
- ],
-[bow], [ ac_cv_func_setitimer=no
- ],
-[superux*], [ ac_cv_func_setitimer=no
- ],
-[nacl], [
- LIBS="-lm $LIBS"
- if test "${nacl_cv_build_variant}" = "newlib"; then
- RUBY_APPEND_OPTION(CPPFLAGS, -DNACL_NEWLIB)
- RUBY_APPEND_OPTION(LIBS, '-lnosys')
- else
- RUBY_APPEND_OPTION(XCFLAGS, -fPIC)
- fi
- ac_cv_func_shutdown=no
- ac_cv_func_fcntl=no
- ],
-[ LIBS="-lm $LIBS"])
-
-dnl Checks for header files.
-AC_HEADER_DIRENT
-dnl AC_HEADER_STDC has been checked in AC_USE_SYSTEM_EXTENSIONS
-AC_HEADER_STDBOOL
-AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS(limits.h sys/file.h sys/ioctl.h sys/syscall.h\
- fcntl.h sys/fcntl.h sys/select.h sys/time.h sys/times.h sys/param.h\
- syscall.h pwd.h grp.h a.out.h utime.h direct.h sys/resource.h \
- sys/mkdev.h sys/utime.h xti.h netinet/in_systm.h float.h ieeefp.h \
- ucontext.h intrinsics.h langinfo.h locale.h sys/sendfile.h time.h \
- net/socket.h sys/socket.h process.h sys/prctl.h atomic.h)
-
dnl check for large file stuff
mv confdefs.h confdefs1.h
: > confdefs.h
@@ -1001,18 +531,7 @@ mv confdefs.h largefile.h
mv confdefs1.h confdefs.h
cat largefile.h >> confdefs.h
-AS_CASE(["$target_os"],
- [mingw*], [ac_cv_type_off_t=yes;ac_cv_sizeof_off_t=8],
- [aix*], [
- AS_CASE(["$target_cpu:$ac_cv_sys_large_files"],
- [ppc64:*|powerpc64:*], [],
- [*:no|*:unknown], [],
- [
- # AIX currently does not support a 32-bit call to posix_fadvise()
- # if _LARGE_FILES is defined.
- ac_cv_func_posix_fadvise=no
- ])
- ])
+AS_CASE(["$target_os"],[mingw*], [ac_cv_type_off_t=yes;ac_cv_sizeof_off_t=8])
AC_C_BIGENDIAN
AC_C_CONST
@@ -1071,8 +590,11 @@ static ac__type_sizeof_ *rbcv_ptr;
done
done
}])
- m4_ifval([$2][$3],
- [test "${AS_TR_SH(ac_cv_sizeof_$1)@%:@SIZEOF_}" = "${AS_TR_SH(ac_cv_sizeof_$1)}" && ]){
+ m4_ifval([$2][$3], [case "${AS_TR_SH(ac_cv_sizeof_$1)}" in
+ #(
+ [SIZEOF_*]);;
+ #(
+ *)])
test "$universal_binary" = yes && cross_compiling=yes
AC_COMPUTE_INT([t], AS_TR_CPP(SIZEOF_$1), [AC_INCLUDES_DEFAULT([$4])]
[${cond+$cond
@@ -1086,7 +608,7 @@ ${cond+@%:@endif}
if test ${t-0} != 0; then
AS_TR_SH(ac_cv_sizeof_$1)="${AS_TR_SH(ac_cv_sizeof_$1)+${AS_TR_SH(ac_cv_sizeof_$1)-} }${t}"
fi
- }
+ m4_ifval([$2][$3], [;; esac])
: ${AS_TR_SH(ac_cv_sizeof_$1)=0}
])
{
@@ -1205,15 +727,7 @@ RUBY_REPLACE_TYPE(gid_t, int, GIDT)
RUBY_REPLACE_TYPE(time_t, [], TIMET, [@%:@include <time.h>])
RUBY_REPLACE_TYPE(dev_t, [int long "long long"], DEVT)
RUBY_REPLACE_TYPE(mode_t, ["unsigned int" long], MODET, [@%:@include <sys/stat.h>])
-RUBY_REPLACE_TYPE(rlim_t, [int long "long long"], RLIM, [
-@%:@ifdef HAVE_SYS_TYPES_H
-@%:@include <sys/types.h>
-@%:@endif
-@%:@ifdef HAVE_SYS_TYPES_H
-@%:@include <sys/time.h>
-@%:@endif
-@%:@include <sys/resource.h>
-])
+RUBY_REPLACE_TYPE(rlim_t, [int long "long long"], RLIM, [@%:@include <sys/resource.h>])
AC_CACHE_CHECK(for prototypes, rb_cv_have_prototypes,
[AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],
@@ -1224,12 +738,12 @@ if test "$rb_cv_have_prototypes" = yes; then
fi
AC_CACHE_CHECK(token paste string, rb_cv_tokenpaste,
- [AC_TRY_COMPILE([@%:@define paste(a,b) a@%:@@%:@b],
+ [AC_TRY_COMPILE([#define paste(a,b) a##b],
[int xy = 1; return paste(x,y);],
rb_cv_tokenpaste=ansi,
rb_cv_tokenpaste=knr)])
if test "$rb_cv_tokenpaste" = ansi; then
- AC_DEFINE(TOKEN_PASTE(x,y),[x@%:@@%:@y])
+ AC_DEFINE(TOKEN_PASTE(x,y),[x##y])
else
AC_DEFINE(TOKEN_PASTE(x,y),[x/**/y])
fi
@@ -1299,12 +813,12 @@ if test "$rb_cv_va_args_macro" = yes; then
fi
AC_DEFUN([RUBY_DEFINE_IF], [dnl
- m4_ifval([$1], [AS_LITERAL_IF([$1], [], [test "X$1" = X || ])cat <<EOH >> confdefs.h
+ m4_ifval([$1],[test "$1" && cat <<EOH >> confdefs.h
@%:@if $1
EOH
])dnl
-AC_DEFINE_UNQUOTED($2, $3)dnl
- m4_ifval([$1], [AS_LITERAL_IF([$1], [], [test "X$1" = X || ])cat <<EOH >> confdefs.h
+AC_DEFINE_UNQUOTED($2, $3)
+ m4_ifval([$1],[test "$1" && cat <<EOH >> confdefs.h
@%:@endif /* $1 */
EOH
])dnl
@@ -1320,7 +834,7 @@ m4_ifval([$3], dnl
[AS_VAR_PUSHDEF([rbcv],[$3])], dnl
[AS_VAR_PUSHDEF([rbcv],[rb_cv_func_][$1])]dnl
)dnl
-m4_ifval([$4], [rbcv_cond=["$4"]; test "$rbcv_cond" || unset rbcv_cond])
+m4_ifval([$4], [rbcv_cond=[$4]; test "$rbcv_cond" || unset rbcv_cond])
AC_CACHE_CHECK(for [$1] function attribute, rbcv,
[rbcv=x
RUBY_WERROR_FLAG([
@@ -1337,11 +851,10 @@ ${rbcv_cond+[@%:@endif]})
done
])])
if test "$rbcv" != x; then
- RUBY_DEFINE_IF(m4_ifval([$4],[${rbcv_cond}]), attrib[(x)], $rbcv)
+ RUBY_DEFINE_IF([${rbcv_cond}], attrib[(x)], $rbcv)
fi
-m4_ifval([$4], [unset rbcv_cond])dnl
-AS_VAR_POPDEF([attrib])dnl
-AS_VAR_POPDEF([rbcv])dnl
+AS_VAR_POPDEF([attrib])
+AS_VAR_POPDEF([rbcv])
])
RUBY_FUNC_ATTRIBUTE(noreturn, NORETURN)
@@ -1367,22 +880,7 @@ if test "$GCC" = yes; then
AC_DEFINE_UNQUOTED([RUBY_ALIAS_FUNCTION_VOID(prot, name, args)],
[RUBY_ALIAS_FUNCTION_TYPE(void, prot, name, args)])
fi
-
- AC_CACHE_CHECK([for __atomic builtins], [rb_cv_gcc_atomic_builtins], [
- AC_TRY_LINK([unsigned char atomic_var;],
- [
- __atomic_exchange_n(&atomic_var, 0, __ATOMIC_SEQ_CST);
- __atomic_exchange_n(&atomic_var, 1, __ATOMIC_SEQ_CST);
- __atomic_fetch_add(&atomic_var, 1, __ATOMIC_SEQ_CST);
- __atomic_fetch_sub(&atomic_var, 1, __ATOMIC_SEQ_CST);
- ],
- [rb_cv_gcc_atomic_builtins=yes],
- [rb_cv_gcc_atomic_builtins=no])])
- if test "$rb_cv_gcc_atomic_builtins" = yes; then
- AC_DEFINE(HAVE_GCC_ATOMIC_BUILTINS)
- fi
-
- AC_CACHE_CHECK([for __sync builtins], [rb_cv_gcc_sync_builtins], [
+ AC_CACHE_CHECK([for atomic builtins], [rb_cv_gcc_atomic_builtins], [
AC_TRY_LINK([unsigned char atomic_var;],
[
__sync_lock_test_and_set(&atomic_var, 0);
@@ -1390,22 +888,10 @@ if test "$GCC" = yes; then
__sync_fetch_and_add(&atomic_var, 1);
__sync_fetch_and_sub(&atomic_var, 1);
],
- [rb_cv_gcc_sync_builtins=yes],
- [rb_cv_gcc_sync_builtins=no])])
- if test "$rb_cv_gcc_sync_builtins" = yes; then
- AC_DEFINE(HAVE_GCC_SYNC_BUILTINS)
- fi
-
- AC_CACHE_CHECK(for __builtin_unreachable, rb_cv_func___builtin_unreachable,
- [RUBY_WERROR_FLAG(
- [AC_TRY_LINK([volatile int zero;],
- [if (zero) __builtin_unreachable();],
- [rb_cv_func___builtin_unreachable=yes],
- [rb_cv_func___builtin_unreachable=no])
- ])
- ])
- if test "$rb_cv_func___builtin_unreachable" = yes; then
- AC_DEFINE_UNQUOTED(UNREACHABLE, [__builtin_unreachable()])
+ [rb_cv_gcc_atomic_builtins=yes],
+ [rb_cv_gcc_atomic_builtins=no])])
+ if test "$rb_cv_gcc_atomic_builtins" = yes; then
+ AC_DEFINE(HAVE_GCC_ATOMIC_BUILTINS)
fi
fi
@@ -1424,15 +910,237 @@ fi
RUBY_APPEND_OPTION(XCFLAGS, -DRUBY_EXPORT)
+dnl }
+dnl header and library section {
+
dnl Check whether we need to define sys_nerr locally
AC_CHECK_DECLS([sys_nerr], [], [], [$ac_includes_default
-@%:@include <errno.h>])
+#include <errno.h>])
+
+AC_ARG_ENABLE(win95,
+ AS_HELP_STRING([--enable-win95], [enable Windows 95 series support]),
+ [AS_CASE(["$enableval"],[yes|no],[enable_win95=$enableval],[unset enable_win95])])
+
+AS_CASE(["$target_os"],
+[freebsd*], [
+ AC_CACHE_CHECK([whether pthread should be enabled by default],
+ rb_cv_enable_pthread_default,
+ [AC_TRY_CPP([
+#include <osreldate.h>
+#if __FreeBSD_version < 502102
+#error pthread should be disabled on this platform
+#endif
+ ],
+ rb_cv_enable_pthread_default=yes,
+ rb_cv_enable_pthread_default=no)])
+ enable_pthread=$rb_cv_enable_pthread_default
+ ],
+[mingw*], [
+ enable_pthread=no
+ ],
+[
+ enable_pthread=yes
+ ])
+
+AC_ARG_ENABLE(pthread,
+ AS_HELP_STRING([--enable-pthread], [obsolete, and ignored]))
+
+dnl Checks for libraries.
+AS_CASE(["$target_os"],[*bsd*|dragonfly*],[],[ac_cv_func_daemon=no])
+
+AS_CASE(["$target_os"],
+[solaris*], [
+ AC_DEFINE(SIZEOF_STRUCT_DIRENT_TOO_SMALL, 1)
+ LIBS="-lm $LIBS"
+ ],
+# GNU Hurd
+[gnu*], [
+ AC_DEFINE(SIZEOF_STRUCT_DIRENT_TOO_SMALL, 1)
+ LIBS="-lm $LIBS"
+ ],
+[nextstep*], [ ],
+[openstep*], [ ],
+[rhapsody*], [ ],
+[darwin*], [ RUBY_PREPEND_OPTION(LIBS, -lobjc)
+ RUBY_APPEND_OPTIONS(CPPFLAGS, -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE)
+ AC_MSG_CHECKING(whether Mac OS X 10.5 or later)
+ AC_TRY_CPP([#include <AvailabilityMacros.h>
+ #if MAC_OS_X_VERSION_MAX_ALLOWED <= 1040
+ #error pre OS X 10.4
+ [!<===== pre OS X 10.4 =====>]
+ #endif
+ ],
+ [macosx_10_5=yes], [macosx_10_5=no])
+ AC_MSG_RESULT($macosx_10_5)
+ if test $macosx_10_5 = yes; then
+ ac_cv_header_ucontext_h=no
+ else
+ AC_DEFINE(BROKEN_SETREUID, 1)
+ AC_DEFINE(BROKEN_SETREGID, 1)
+ fi
+ ac_cv_type_getgroups=gid_t # getgroups() on Rosetta fills garbage
+ ac_cv_lib_crypt_crypt=no
+ ac_cv_func_fdatasync=no # Mac OS X wrongly reports it has fdatasync()
+ AC_CACHE_CHECK(for broken crypt with 8bit chars, rb_cv_broken_crypt,
+ [AC_TRY_RUN([
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+int
+main()
+{
+ int i;
+ for (i = 0; i < 128*128; i++) {
+ char salt[2], buf[256], *s;
+ salt[0] = 0x80 | (i & 0x7f);
+ salt[1] = 0x80 | (i >> 7);
+ strcpy(buf, crypt("", salt));
+ if (strcmp(buf, s = crypt("", salt))) {
+#if 0
+ printf("%.2x%.2x: %s -> %s\n", (unsigned char)salt[0], (unsigned char)salt[1],
+ buf+2, s+2);
+#endif
+ return 1;
+ }
+ }
+ return 0;
+}
+],
+ rb_cv_broken_crypt=no,
+ rb_cv_broken_crypt=yes,
+ rb_cv_broken_crypt=yes)])
+ if test "$rb_cv_broken_crypt" = yes; then
+ AC_DEFINE(BROKEN_CRYPT, 1)
+ fi
+ ],
+[hpux*], [ LIBS="-lm $LIBS"
+ ac_cv_c_inline=no],
+[human*], [ ac_cv_func_getpgrp_void=yes
+ ac_cv_func_setitimer=no
+ AC_CHECK_LIB(signal, _harderr)
+ AC_CHECK_LIB(hmem, hmemset)
+ AC_CHECK_FUNCS(select)
+ AC_CACHE_CHECK(whether PD libc _dtos18 fail to convert big number,
+ rb_cv_missing__dtos18,
+ [AC_TRY_RUN([
+#include <stdio.h>
+int
+main()
+{
+ char buf[256];
+ sprintf(buf, "%g", 1e+300);
+ return (strcmp (buf, "1e+300") ? 0 : 1);
+}
+],
+ rb_cv_missing__dtos18=yes, rb_cv_missing__dtos18=no, rb_cv_missing__dtos18=no)])
+ if test "$rb_cv_missing__dtos18" = yes; then
+ AC_DEFINE(MISSING__DTOS18)
+ fi
+ AC_CACHE_CHECK(whether PD libc fconvert fail to round,
+ rb_cv_missing_fconvert,
+ [AC_TRY_RUN([
+#include <stdio.h>
+#include <math.h>
+int
+main()
+{
+ char buf[256];
+ sprintf(buf, "%f", log(exp(1.0)));
+ return (strcmp (buf, "1.000000") ? 0 : 1);
+}
+],
+ rb_cv_missing_fconvert=yes, rb_cv_missing_fconvert=no, rb_cv_missing_fconvert=no)])
+ if test "$rb_cv_missing_fconvert" = yes; then
+ AC_DEFINE(MISSING_FCONVERT)
+ fi
+ ],
+[beos*|haiku*], [
+ ac_cv_func_link=no
+ ac_cv_func_sched_yield=no
+ ac_cv_func_pthread_attr_setinheritsched=no
+ AS_CASE(["$target_os"],
+ [beos*], [ ac_cv_header_net_socket_h=yes],
+ [haiku*], [ ac_cv_func_shutdown=no])
+ LIBS="$LIBS" # m lib is include in root under BeOS/Haiku
+ ],
+[cygwin*], [ ac_cv_header_langinfo_h=yes
+ AC_CHECK_FUNCS(cygwin_conv_path)
+ AC_LIBOBJ([langinfo])
+ ],
+[mingw*], [ LIBS="-lshell32 -lws2_32 -limagehlp -lshlwapi $LIBS"
+ ac_cv_header_a_out_h=no
+ ac_cv_header_pwd_h=no
+ ac_cv_header_utime_h=no
+ ac_cv_header_sys_ioctl_h=no
+ ac_cv_header_sys_param_h=no
+ ac_cv_header_sys_resource_h=no
+ ac_cv_header_sys_select_h=no
+ ac_cv_header_sys_time_h=no
+ ac_cv_header_sys_times_h=no
+ ac_cv_header_sys_socket_h=no
+ ac_cv_func_times=yes
+ ac_cv_func_waitpid=yes
+ ac_cv_func_fsync=yes
+ ac_cv_func_seekdir=yes
+ ac_cv_func_telldir=yes
+ ac_cv_func_isinf=yes
+ ac_cv_func_isnan=yes
+ ac_cv_func_finite=yes
+ ac_cv_func_link=yes
+ ac_cv_func_fseeko=yes
+ ac_cv_lib_crypt_crypt=no
+ ac_cv_func_getpgrp_void=no
+ ac_cv_func_memcmp_working=yes
+ ac_cv_lib_dl_dlopen=no
+ rb_cv_binary_elf=no
+ rb_cv_negative_time_t=no
+ ac_cv_func_fcntl=yes
+ ac_cv_func_flock=yes
+ rb_cv_large_fd_select=yes
+ AC_LIBOBJ([langinfo])
+ : ${enable_win95=maybe}
+ ],
+[os2-emx*], [ LIBS="-lm $LIBS"
+ ac_cv_lib_dir_opendir=no],
+[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_func_setrlimit=no
+ ac_cv_header_sys_socket_h=no
+ ],
+[bsdi*], [ LIBS="-lm $LIBS"
+ AC_DEFINE(BROKEN_SETREUID, 1)
+ AC_DEFINE(BROKEN_SETREGID, 1)
+ ac_cv_sizeof_rlim_t=8],
+[freebsd*], [ LIBS="-lm $LIBS"
+ ac_cv_func_getpeername=no
+ ac_cv_func_getsockname=no
+ ac_cv_func_shutdown=no
+ ac_cv_func_close=no
+ ],
+[dragonfly*], [ LIBS="-lm $LIBS"
+ ],
+[bow], [ ac_cv_func_setitimer=no
+ ],
+[superux*], [ ac_cv_func_setitimer=no
+ ],
+[ LIBS="-lm $LIBS"])
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
AC_CHECK_LIB(rt, clock_gettime) # GNU/Linux
+if test "${enable_win95}" = maybe; then
+ AC_HAVE_LIBRARY(unicows, [enable_win95=yes], [enable_win95=no])
+fi
+if test "${enable_win95}" = yes; then
+ AC_DEFINE(WIN95)
+ LIBS="-lunicows $LIBS"
+fi
AS_CASE(["$target_cpu"],
[alpha*|sh4|sh4el|sh4eb], [AS_CASE(["$target_os"::"$GCC"],
@@ -1450,6 +1158,17 @@ else
ac_cv_header_sys_socket_h=${ac_cv_header_sys_socket_h=yes}
fi
+dnl Checks for header files.
+AC_HEADER_DIRENT
+dnl AC_HEADER_STDC has been checked in AC_USE_SYSTEM_EXTENSIONS
+AC_HEADER_STDBOOL
+AC_HEADER_SYS_WAIT
+AC_CHECK_HEADERS(limits.h sys/file.h sys/ioctl.h sys/syscall.h\
+ fcntl.h sys/fcntl.h sys/select.h sys/time.h sys/times.h sys/param.h\
+ syscall.h pwd.h grp.h a.out.h utime.h direct.h sys/resource.h \
+ sys/mkdev.h sys/utime.h xti.h netinet/in_systm.h float.h ieeefp.h \
+ ucontext.h intrinsics.h langinfo.h locale.h sys/sendfile.h time.h \
+ net/socket.h sys/socket.h process.h)
AC_TYPE_SIZE_T
RUBY_CHECK_SIZEOF(size_t, [int long void*], [], [@%:@include <sys/types.h>])
@@ -1473,18 +1192,8 @@ AC_CHECK_MEMBERS([struct stat.st_ctim])
AC_CHECK_MEMBERS([struct stat.st_ctimespec])
AC_CHECK_MEMBERS([struct stat.st_ctimensec])
-AC_CHECK_TYPES([struct timeval], [], [], [@%:@ifdef HAVE_TIME_H
-@%:@include <time.h>
-@%:@endif
-@%:@ifdef HAVE_SYS_TIME_H
-@%:@include <sys/time.h>
-@%:@endif])
-
AC_CHECK_TYPES([struct timespec], [], [], [@%:@ifdef HAVE_TIME_H
@%:@include <time.h>
-@%:@endif
-@%:@ifdef HAVE_SYS_TIME_H
-@%:@include <sys/time.h>
@%:@endif])
AC_CHECK_TYPES([struct timezone], [], [], [@%:@ifdef HAVE_TIME_H
@@ -1547,42 +1256,74 @@ RUBY_DEFINT(intptr_t, void*)
RUBY_DEFINT(uintptr_t, void*, unsigned)
RUBY_DEFINT(ssize_t, size_t, [], [@%:@include <sys/types.h>]) dnl may differ from int, so not use AC_TYPE_SSIZE_T.
-RUBY_NACL_CHECK_PEPPER_TYPES
-
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 *__libc_stack_end;],
- [if (!__libc_stack_end) return 1;],
- [rb_cv_stack_end_address="__libc_stack_end"])
-])
+ [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
-AS_CASE(["$target_os"],
-[openbsd*], [
- AC_CACHE_CHECK(for heap align log on openbsd, rb_cv_page_size_log,
- [rb_cv_page_size_log=no
- for page_log in 12 13; do
- AC_TRY_RUN([
-#include <math.h>
-#include <unistd.h>
+AC_CACHE_CHECK(for gc_mark and gc_children stack frame approximate size(word), rb_cv_gc_mark_stackframe_word,
+[save_CFLAGS="$CFLAGS"
+CFLAGS="-O0"
+AC_TRY_RUN([
+int word;
+char *stack_start;
+
+void
+set_stackframe_word()
+{
+ int dumy = 42;
+ int diff;
+
+ if (stack_start < (char *)&dumy) {
+ diff = (int)((char *)&dumy - stack_start);
+ }
+ else {
+ diff = (int)(stack_start - (char *)&dumy);
+ }
+ word = (diff/sizeof(void *));
+ if ((diff % sizeof(void *)) != 0) {
+ word++;
+ }
+}
+
+void
+gc_mark_children(void *p1, void *p2, int lev)
+{
+ void *obj = p2;
+
+ set_stackframe_word(p1,p2,lev);
+}
+
+void
+gc_mark(void *p1, void *p2, int lev)
+{
+ void *obj = p2;
+
+ gc_mark_children(p1,p2,lev++);
+}
int
main() {
- if ((int)log2((double)sysconf(_SC_PAGESIZE)) != $page_log) return 1;
- return 0;
+ int dumy = 42;
+
+ stack_start = (char *)&dumy;
+ gc_mark(0, 0, 255);
+ return word;
}
- ],
- rb_cv_page_size_log="$page_log"; break)
- done])
- if test $rb_cv_page_size_log != no; then
- AC_DEFINE_UNQUOTED(HEAP_ALIGN_LOG, $rb_cv_page_size_log)
- else
- AC_DEFINE_UNQUOTED(HEAP_ALIGN_LOG, 12)
- fi
-])
+],
+ [rb_cv_gc_mark_stackframe_word="$?"],
+ [rb_cv_gc_mark_stackframe_word="$?"],
+ [rb_cv_gc_mark_stackframe_word="30"])
+CFLAGS="$save_CFLAGS"])
+AC_DEFINE_UNQUOTED(GC_MARK_STACKFRAME_WORD, $rb_cv_gc_mark_stackframe_word)
+
dnl Checks for library functions.
AC_TYPE_GETGROUPS
@@ -1658,7 +1399,6 @@ AS_CASE(["$target_os"],
[aix* | k*bsd*-gnu | kopensolaris*-gnu | linux* | darwin*], [AC_DEFINE(SPT_TYPE,SPT_REUSEARGV)],
[hpux*], [AC_DEFINE(SPT_TYPE,SPT_PSTAT) ],
[])
-AC_CHECK_HEADERS(sys/pstat.h)
AC_CACHE_CHECK(for signbit, rb_cv_have_signbit,
@@ -1679,13 +1419,12 @@ AC_CHECK_FUNCS(fmod killpg wait4 waitpid fork spawnv syscall __syscall chroot ge
setitimer setruid seteuid setreuid setresuid socketpair\
setrgid setegid setregid setresgid issetugid pause lchown lchmod\
getpgrp setpgrp getpgid setpgid initgroups getgroups setgroups\
- getpriority getrlimit setrlimit sysconf close getpwnam_r getgrnam_r\
+ getpriority getrlimit setrlimit sysconf close getgrnam_r\
dlopen sigprocmask sigaction sigsetjmp _setjmp _longjmp\
- getsid setsid telldir seekdir fchmod cosh sinh tanh log2 round llabs\
+ setsid telldir seekdir fchmod cosh sinh tanh log2 round\
setuid setgid daemon select_large_fdset setenv unsetenv\
mktime timegm gmtime_r clock_gettime gettimeofday poll ppoll\
- pread sendfile shutdown sigaltstack dl_iterate_phdr\
- dup dup3 pipe2 posix_memalign memalign ioctl isfinite)
+ pread sendfile shutdown sigaltstack dl_iterate_phdr)
AC_CACHE_CHECK(for unsetenv returns a value, rb_cv_unsetenv_return_value,
[AC_TRY_COMPILE([
@@ -1750,7 +1489,7 @@ if test "$use_setreuid" = yes; then
fi
AC_STRUCT_TIMEZONE
AC_CACHE_CHECK(for struct tm.tm_gmtoff, rb_cv_member_struct_tm_tm_gmtoff,
- [AC_TRY_COMPILE([@%:@include <time.h>],
+ [AC_TRY_COMPILE([#include <time.h>],
[struct tm t; t.tm_gmtoff = 3600;],
[rb_cv_member_struct_tm_tm_gmtoff=yes],
[rb_cv_member_struct_tm_tm_gmtoff=no])])
@@ -1954,7 +1693,6 @@ else
AC_DEFINE(RSHIFT(x,y), (((x)<0) ? ~((~(x))>>(int)(y)) : (x)>>(int)(y)))
fi
-# win32.c still use this. Don't remove it.
test "$rb_cv_fcnt" = "not found" && rb_cv_fcnt="not found (OK if using GNU libc)"
AC_CACHE_CHECK([read count field in FILE structures], rb_cv_fcnt,
[rb_cv_fcnt="not found (OK if using GNU libc)"
@@ -1974,7 +1712,6 @@ AS_CASE("$rb_cv_fcnt",
["not found"*], [rb_cv_fcnt="not found"],
[AC_DEFINE_UNQUOTED(FILE_COUNT, $rb_cv_fcnt)])
-# win32.c still use this. Don't remove it.
AC_CACHE_CHECK([read buffer ptr field in FILE structures], rb_cv_frptr,
[for frptr in dnl
_IO_read_ptr dnl
@@ -2014,38 +1751,6 @@ fi
RUBY_CHECK_SIZEOF([struct stat.st_ino], [long "long long"], [], [@%:@include <sys/stat.h>])
-AC_CACHE_CHECK([whether struct dirent.d_name is too small], rb_cv_sizeof_struct_dirent_too_small,
- [AC_COMPILE_IFELSE(
- [AC_LANG_BOOL_COMPILE_TRY([AC_INCLUDES_DEFAULT([
-@%:@if defined _WIN32
-@%:@ error <<<struct direct in win32/dir.h has variable length d_name>>>
-@%:@elif defined HAVE_DIRENT_H
-@%:@ include <dirent.h>
-@%:@elif defined HAVE_DIRECT_H
-@%:@ include <direct.h>
-@%:@else
-@%:@ define dirent direct
-@%:@ if HAVE_SYS_NDIR_H
-@%:@ include <sys/ndir.h>
-@%:@ endif
-@%:@ if HAVE_SYS_DIR_H
-@%:@ include <sys/dir.h>
-@%:@ endif
-@%:@ if HAVE_NDIR_H
-@%:@ include <ndir.h>
-@%:@ endif
-@%:@endif
-@%:@include <stddef.h>
-@%:@define numberof(array) [(int)(sizeof(array) / sizeof((array)[0]))]
-struct dirent d;
-])],
- [offsetof(struct dirent, [d_name[numberof(d.d_name)]]) - offsetof(struct dirent, d_name) < 256])],
- [rb_cv_sizeof_struct_dirent_too_small=yes],
- [rb_cv_sizeof_struct_dirent_too_small=no])])
-if test "$rb_cv_sizeof_struct_dirent_too_small" = yes; then
- AC_DEFINE(SIZEOF_STRUCT_DIRENT_TOO_SMALL, 1)
-fi
-
if test "$ac_cv_func_sysconf" = yes; then
AC_DEFUN([RUBY_CHECK_SYSCONF], [dnl
AC_CACHE_CHECK([whether _SC_$1 is supported], rb_cv_have_sc_[]m4_tolower($1),
@@ -2147,13 +1852,7 @@ if test x"$enable_pthread" = xyes; then
pthread_getattr_np pthread_attr_get_np pthread_attr_getstack\
pthread_get_stackaddr_np pthread_get_stacksize_np \
thr_stksegment pthread_stackseg_np pthread_getthrds_np \
- pthread_cond_init pthread_condattr_setclock pthread_condattr_init \
- pthread_sigmask)
- if test "${host_os}" = "nacl"; then
- ac_cv_func_pthread_attr_init=no
- else
- AC_CHECK_FUNCS(pthread_attr_init)
- fi
+ pthread_condattr_setclock pthread_sigmask)
fi
if test x"$ac_cv_header_ucontext_h" = xyes; then
if test x"$rb_with_pthread" = xyes; then
@@ -2226,9 +1925,25 @@ main(int argc, char *argv[])
test x$rb_cv_fork_with_pthread = xyes || AC_DEFINE(CANNOT_FORK_WITH_PTHREAD)
fi
+AS_CASE(["$target_os"],
+[freebsd*], [
+ AC_CHECK_HEADERS([/usr/local/include/execinfo.h])
+ if test "x$ac_cv_header__usr_local_include_execinfo_h" = xyes; then :
+ RUBY_APPEND_OPTION(CPPFLAGS, -I/usr/local/include)
+ LDFLAGS="${LDFLAGS:+$LDFLAGS }-L/usr/local/lib"
+ DLDFLAGS="${DLDFLAGS:+$DLDFLAGS }-L/usr/local/lib"
+ AC_CHECK_LIB([execinfo], [backtrace])
+ fi])
+AC_CHECK_FUNCS(backtrace)
+
+AC_ARG_WITH(valgrind,
+ AS_HELP_STRING([--without-valgrind],[disable valgrind memcheck support]),
+ [], with_valgrind=yes)
+AS_IF([test x$with_valgrind != xno],
+ [AC_CHECK_HEADERS(valgrind/memcheck.h)])
-}
-{ # runtime section
+dnl }
+dnl runtime section {
dnl wheather use dln_a_out or not
AC_ARG_WITH(dln-a-out,
@@ -2245,8 +1960,8 @@ AC_ARG_WITH(dln-a-out,
AC_CACHE_CHECK(whether ELF binaries are produced, rb_cv_binary_elf,
[AC_TRY_LINK([],[], [
-AS_CASE(["`head -1 conftest$EXEEXT | tr -dc '\177ELF' | tr '\177' .`"],
-[.ELF*], [rb_cv_binary_elf=yes], [rb_cv_binary_elf=no])],
+AS_CASE(["`head -1 conftest$EXEEXT | cat -e`"],
+['^?ELF'*], [rb_cv_binary_elf=yes], [rb_cv_binary_elf=no])],
rb_cv_binary_elf=no)])
if test "$rb_cv_binary_elf" = yes; then
@@ -2254,14 +1969,11 @@ if test "$rb_cv_binary_elf" = yes; then
if test "$with_dln_a_out" = yes; then
AC_MSG_ERROR(dln_a_out does not work with ELF)
fi
- AC_CHECK_HEADERS([elf.h elf_abi.h])
- if test $ac_cv_header_elf_h = yes -o $ac_cv_header_elf_abi_h = yes; then
- AC_LIBOBJ([addr2line])
- fi
+ AC_LIBOBJ([addr2line])
fi
AS_CASE(["$target_os"],
-[linux* | gnu* | k*bsd*-gnu | bsdi* | kopensolaris*-gnu | nacl], [
+[linux* | gnu* | k*bsd*-gnu | bsdi* | kopensolaris*-gnu], [
if test "$rb_cv_binary_elf" = no; then
with_dln_a_out=yes
else
@@ -2288,7 +2000,7 @@ if test "$with_dln_a_out" != yes; then
AC_MSG_CHECKING(whether OS depend dynamic link works)
if test "$GCC" = yes; then
AS_CASE(["$target_os"],
- [darwin*], [
+ [nextstep*|openstep*|rhapsody*|darwin*], [
# The -fno-common is needed if we wish to embed the Ruby interpreter
# into a plugin module of some project (as opposed to embedding it
# within the project's application). The -I/usr/local/include is
@@ -2297,7 +2009,7 @@ if test "$with_dln_a_out" != yes; then
# mkmf.rb's have_header() to fail if the desired resource happens to be
# installed in the /usr/local tree.
RUBY_APPEND_OPTION(CCDLFLAGS, -fno-common)],
- [bsdi*|beos*|haiku*|cygwin*|mingw*|aix*|interix*], [ ],
+ [human*|bsdi*|beos*|haiku*|cygwin*|mingw*|aix*|interix*], [ ],
[
RUBY_APPEND_OPTION(CCDLFLAGS, -fPIC)])
else
@@ -2320,7 +2032,7 @@ if test "$with_dln_a_out" != yes; then
AS_CASE(["$target_os"],
[hpux*], [ DLDFLAGS="$DLDFLAGS -E"
- : ${LDSHARED='$(LD) -b'}
+ : ${LDSHARED='ld -b'}
XLDFLAGS="$XLDFLAGS -Wl,-E"
: ${LIBPATHENV=SHLIB_PATH}
if test "$rb_cv_prog_gnu_ld" = no; then
@@ -2339,17 +2051,17 @@ if test "$with_dln_a_out" != yes; then
: ${LIBPATHENV=LD_LIBRARY_PATH_64}
fi
rb_cv_dlopen=yes],
- [sunos*], [ : ${LDSHARED='$(LD) -assert nodefinitions'}
+ [sunos*], [ : ${LDSHARED='ld -assert nodefinitions'}
rb_cv_dlopen=yes],
- [irix*], [ : ${LDSHARED='$(LD) -shared'}
+ [irix*], [ : ${LDSHARED='ld -shared'}
rb_cv_dlopen=yes],
- [sysv4*], [ : ${LDSHARED='$(LD) -G'}
+ [sysv4*], [ : ${LDSHARED='ld -G'}
rb_cv_dlopen=yes],
[nto-qnx*], [ : ${LDSHARED='$(CC) -shared'}
rb_cv_dlopen=yes],
- [esix*|uxpds*], [ : ${LDSHARED='$(LD) -G'}
+ [esix*|uxpds*], [ : ${LDSHARED="ld -G"}
rb_cv_dlopen=yes],
- [osf*], [ : ${LDSHARED='$(LD) -shared -expect_unresolved "*"'}
+ [osf*], [ : ${LDSHARED="ld -shared -expect_unresolved \"*\""}
rb_cv_dlopen=yes],
[bsdi3*], [ AS_CASE(["$CC"],
[*shlicc*], [ : ${LDSHARED='$(CC) -r'}
@@ -2368,24 +2080,33 @@ if test "$with_dln_a_out" != yes; then
: ${LDSHARED='$(CC) -shared'}
if test "$rb_cv_binary_elf" = yes; then
LDFLAGS="$LDFLAGS -rdynamic"
- DLDFLAGS="$DLDFLAGS "'-Wl,-soname,$@'
+ DLDFLAGS="$DLDFLAGS "'-Wl,-soname,$(.TARGET)'
else
- test "$GCC" = yes && test "$rb_cv_prog_gnu_ld" = yes || LDSHARED='$(LD) -Bshareable'
+ test "$GCC" = yes && test "$rb_cv_prog_gnu_ld" = yes || LDSHARED="ld -Bshareable"
fi
rb_cv_dlopen=yes],
- [openbsd*|mirbsd*], [ : ${LDSHARED='$(CC) -shared ${CCDLFLAGS}'}
+ [openbsd*], [ : ${LDSHARED='$(CC) -shared ${CCDLFLAGS}'}
if test "$rb_cv_binary_elf" = yes; then
LDFLAGS="$LDFLAGS -Wl,-E"
fi
rb_cv_dlopen=yes],
+ [nextstep*], [ : ${LDSHARED='$(CC) -r -nostdlib'}
+ LDFLAGS="$LDFLAGS -u libsys_s"
+ rb_cv_dlopen=yes],
+ [openstep*], [ : ${LDSHARED='$(CC) -dynamic -bundle -undefined suppress'}
+ : ${LDFLAGS=""}
+ rb_cv_dlopen=yes],
+ [rhapsody*], [ : ${LDSHARED='$(CC) -dynamic -bundle -undefined suppress'}
+ : ${LDFLAGS=""}
+ rb_cv_dlopen=yes],
[darwin*], [ : ${LDSHARED='$(CC) -dynamic -bundle'}
- : ${DLDFLAGS="${linker_flag}-undefined${linker_flag:+,}dynamic_lookup ${linker_flag}-multiply_defined${linker_flag:+,}suppress"}
+ : ${DLDFLAGS="${linker_flag}-undefined${linker_flag:+,}dynamic_lookup ${linker_flag}-multiply_defined${linker_flag:+,}suppress ${linker_flag}-flat_namespace"}
: ${LDFLAGS=""}
: ${LIBPATHENV=DYLD_LIBRARY_PATH}
# /usr/local/include is always searched for
# some reason, but /usr/local/lib is not.
hdr=`find /usr/local/include -name \*.h -type f | sed 's:^/usr/local/include/::;q'`
- if test -n "$hdr" && $CC -E -include "$hdr" -xc - </dev/null 2>/dev/null | fgrep -q "$hdr"; then
+ if test -n "$hdr" && $CC -E -include "$hdr" -xc /dev/null 2>/dev/null | fgrep -q "$hdr"; then
$CC -print-search-dirs | grep -q '^libraries:.*:/usr/local/lib/*' ||
echo " $LDFLAGS " | grep -q ' -L */usr/local/lib/* ' ||
LDFLAGS="${LDFLAGS:+$LDFLAGS }-L/usr/local/lib"
@@ -2393,43 +2114,46 @@ if test "$with_dln_a_out" != yes; then
rb_cv_dlopen=yes],
[aix*], [ : ${LDSHARED='$(CC)'}
LDSHARED="$LDSHARED ${linker_flag}-G"
- EXTDLDFLAGS='-e$(TARGET_ENTRY)'
+ DLDFLAGS='-eInit_$(TARGET)'
XLDFLAGS="${linker_flag}"'-bE:$(ARCHFILE)'" ${linker_flag}-brtl"
XLDFLAGS="$XLDFLAGS ${linker_flag}-blibpath:${prefix}/lib:${LIBPATH:-/usr/lib:/lib}"
: ${ARCHFILE="ruby.imp"}
TRY_LINK='$(CC) $(LDFLAGS) -oconftest $(INCFLAGS) -I$(hdrdir) $(CPPFLAGS)'
TRY_LINK="$TRY_LINK"' $(CFLAGS) $(src) $(LIBPATH) $(LOCAL_LIBS) $(LIBS)'
- : ${LIBPATHENV=LIBPATH}
+ : ${LIBPATHENV=SHLIB_PATH}
RPATHFLAG=" ${linker_flag}-blibpath:%1\$-s:${prefix}/lib:${LIBPATH:-/usr/lib:/lib}"
rb_cv_dlopen=yes],
+ [human*], [ : ${DLDFLAGS=''}
+ : ${LDSHARED=''}
+ : ${LDFLAGS=''}
+ : ${LINK_SO='ar cru $@ $(OBJS)'}
+ rb_cv_dlopen=yes],
[beos*], [ AS_CASE(["$target_cpu"],
[powerpc*], [
- : ${LDSHARED='$(LD) -xms'}
- EXTDLDFLAGS='-export $(TARGET_ENTRY)'
- DLDFLAGS="$DLDFLAGS -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o"
+ : ${LDSHARED="ld -xms"}
+ DLDFLAGS="$DLDFLAGS "'-export Init_$(TARGET) -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o'
LDFLAGS="$LDFLAGS -L/boot/home/config/lib -lbe -lroot"
],
[i586*], [
- : ${LDSHARED='$(LD) -shared'}
- DLDFLAGS="$DLDFLAGS -L/boot/develop/lib/x86 -L/boot/home/config/lib \$(topdir)/_APP_ -lroot"
- LDFLAGS="$LDFLAGS -L/boot/develop/lib/x86 -L/boot/home/config/lib -lroot"
+ : ${LDSHARED="ld -shared"}
+ DLDFLAGS="$DLDFLAGS -L/boot/develop/lib/x86 -L/boot/home/config/lib \$(topdir)/_APP_ -lbe -lroot"
+ LDFLAGS="$LDFLAGS -L/boot/develop/lib/x86 -L/boot/home/config/lib -lbe -lroot"
])
: ${LIBPATHENV=LIBRARY_PATH}
rb_cv_dlopen=yes],
[haiku*], [ AS_CASE(["$target_cpu"],
[powerpc*], [
- : ${LDSHARED='$(LD) -xms'}
- EXTDLDFLAGS='-export $(TARGET_ENTRY)'
- DLDFLAGS="$DLDFLAGS -lroot glue-noinit.a init_term_dyn.o start_dyn.o"
+ : ${LDSHARED="ld -xms"}
+ DLDFLAGS="$DLDFLAGS "'-export Init_$(TARGET) -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o'
],
[i586*], [
- : ${LDSHARED='$(LD) -shared'}
- DLDFLAGS="$DLDFLAGS -L/boot/develop/lib/x86 -lroot"
+ : ${LDSHARED="ld -shared"}
+ DLDFLAGS="$DLDFLAGS -L/boot/develop/lib/x86 -lbe -lroot"
])
: ${LIBPATHENV=LIBRARY_PATH}
rb_cv_dlopen=yes ],
[nto-qnx*], [ DLDFLAGS="$DLDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
- : ${LDSHARED='$(LD) -Bshareable -x'}
+ : ${LDSHARED='ld -Bshareable -x'}
LDFLAGS="$LDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
rb_cv_dlopen=yes],
[cygwin*|mingw*], [
@@ -2438,13 +2162,12 @@ if test "$with_dln_a_out" != yes; then
DLDFLAGS="${DLDFLAGS} -Wl,--enable-auto-image-base,--enable-auto-import"
: ${LIBPATHENV=""}
rb_cv_dlopen=yes],
- [hiuxmpp], [ : ${LDSHARED='$(LD) -r'}],
+ [hiuxmpp], [ : ${LDSHARED='ld -r'}],
[atheos*], [ : ${LDSHARED='$(CC) -shared'}
rb_cv_dlopen=yes],
[os2-emx*], [ LDFLAGS="$LDFLAGS -Zomf"
],
- [nacl], [ LDSHARED='$(CC) -shared' ],
- [ : ${LDSHARED='$(LD)'}])
+ [ : ${LDSHARED='ld'}])
AC_MSG_RESULT($rb_cv_dlopen)
fi
if test "${LDSHAREDXX}" = ""; then
@@ -2469,49 +2192,6 @@ AC_SUBST(RPATHFLAG)
AC_SUBST(LIBPATHENV, "${LIBPATHENV-LD_LIBRARY_PATH}")
AC_SUBST(TRY_LINK)
-AC_ARG_WITH(opt-dir,
- AS_HELP_STRING([--with-opt-dir=DIR-LIST],
- [add optional headers and libraries directories separated by $PATH_SEPARATOR]),
- [
- val=`echo "$PATH_SEPARATOR$withval" | sed "s|$PATH_SEPARATOR\([[^$PATH_SEPARATOR]*]\)| -I\1/include|g;s/^ //"`
- CPPFLAGS="$CPPFLAGS $val"
- val=`IFS="$PATH_SEPARATOR"
- for dir in $withval; do
- echo x ${LIBPATHFLAG} ${RPATHFLAG} |
- sed "s/^x *//;s${IFS}"'%1\\$-s'"${IFS}${dir}/lib${IFS}g;s${IFS}%s${IFS}${dir}/lib${IFS}g"
- done | tr '\012' ' '`
- LDFLAGS_OPTDIR="$val"
- LDFLAGS="$LDFLAGS${LDFLAGS:+ }$val"
- DLDFLAGS="$DLDFLAGS${DLDFLAGS:+ }$val"
- ])
-
-AS_CASE(["$target_cpu-$target_os"],
-[*-freebsd*|x86_64-netbsd*], [
- AC_CHECK_HEADERS([execinfo.h])
- if test "x$ac_cv_header_execinfo_h" = xyes; then
- AC_CHECK_LIB([execinfo], [backtrace])
- execinfo_frame_pointer=no
- RUBY_TRY_CFLAGS(-fno-omit-frame-pointer, [execinfo_frame_pointer=yes])
- if test "x$execinfo_frame_pointer" = xyes; then
- # optflags must be manipulated very carefully. For the
- # later cflagspat/cxxflagspat substitution to work, CFLAGS
- # and CXXFLAGS must start exactly with the value of
- # optflags.
- CFLAGS="${CFLAGS# }"; CFLAGS="${CFLAGS#"$optflags "}"
- CXXFLAGS="${CXXFLAGS# }"; CXXFLAGS="${CXXFLAGS#"$optflags "}"
- RUBY_APPEND_OPTION(optflags, -fno-omit-frame-pointer)
- CFLAGS=" $optflags $CFLAGS"
- CXXFLAGS=" $optflags $CXXFLAGS"
- fi
- fi])
-AC_CHECK_FUNCS(backtrace)
-
-AC_ARG_WITH(valgrind,
- AS_HELP_STRING([--without-valgrind],[disable valgrind memcheck support]),
- [], with_valgrind=yes)
-AS_IF([test x$with_valgrind != xno],
- [AC_CHECK_HEADERS(valgrind/memcheck.h)])
-
dln_a_out_works=no
if test "$ac_cv_header_a_out_h" = yes; then
if test "$with_dln_a_out" = yes || test "$rb_cv_dlopen" = unknown; then
@@ -2543,7 +2223,7 @@ else
AS_CASE(["$target_os"],
[hpux*], [
DLEXT=sl],
- [darwin*], [
+ [nextstep*|openstep*|rhapsody*|darwin*], [
RUBY_APPEND_OPTION(XLDFLAGS, [-Wl,-u,_objc_msgSend])
DLEXT=bundle],
[os2-emx*], [
@@ -2559,13 +2239,10 @@ if test "$rb_cv_dlopen:$load_relative" = yes:yes; then
AC_CHECK_FUNCS(dladdr)
if test "$ac_cv_func_dladdr" = yes; then
LOAD_RELATIVE=1
+ else
+ unset load_relative
fi
fi
-if test x"$LOAD_RELATIVE" = x1; then
- load_relative=yes
-else
- unset load_relative
-fi
len=2 # .rb
n=`expr "$DLEXT" : '.*'`; test "$n" -gt "$len" && len=$n
@@ -2584,7 +2261,7 @@ fi
AS_CASE(["$target_os"],
[linux* | gnu* | k*bsd*-gnu | kopensolaris*-gnu], [
STRIP="$STRIP -S -x"],
- [darwin*], [
+ [nextstep* | openstep* | rhapsody* | darwin*], [
STRIP="$STRIP -A -n"])
AC_ARG_WITH(ext,
@@ -2598,15 +2275,11 @@ AC_SUBST(EXTSTATIC)dnl
AC_ARG_WITH(static-linked-ext,
AS_HELP_STRING([--with-static-linked-ext], [link external modules statically]),
[AS_CASE([$withval],[yes],[STATIC=;EXTSTATIC=static])])
-if test x"$EXTSTATIC" = xstatic; then
- ENCOBJS='enc/encinit.$(OBJEXT) enc/libenc.$(LIBEXT) enc/libtrans.$(LIBEXT)'
- EXTOBJS='ext/extinit.$(OBJEXT)'
- AC_DEFINE_UNQUOTED(EXTSTATIC, 1)
-fi
-AC_SUBST(ENCOBJS)
-AC_SUBST(EXTOBJS)
AS_CASE(["$target_os"],
+ [human*], [
+ setup=Setup.x68
+ ],
dnl OS/2 environment w/ Autoconf 2.1x for EMX
[os2-emx], [
setup=Setup.emx
@@ -2614,27 +2287,18 @@ AS_CASE(["$target_os"],
[*djgpp*], [
setup=Setup.dj
],
- [nacl], [
- setup=Setup.nacl
- ],
[
setup=Setup
])
AC_SUBST(setup)
-test x"$prefix" = xNONE && prefix=$ac_default_prefix
-test x"${exec_prefix}" = xNONE && exec_prefix="$prefix"
-pat=`echo "${exec_prefix}" | tr -c '\012' .`'\(.*\)'
-for var in bindir libdir; do
- eval val='"$'$var'"'
- AS_CASE(["$val"], ["${exec_prefix}"*], [val='${exec_prefix}'"`expr \"$val\" : \"$pat\"`"])
- eval $var='"$val"'
-done
+if test "$prefix" = NONE; then
+ prefix=$ac_default_prefix
+fi
-BTESTRUBY='$(MINIRUBY)'
if test x"$cross_compiling" = xyes; then
- test x"$MINIRUBY" = x && MINIRUBY="${RUBY-$BASERUBY} -I`$CHDIR .; pwd` "-r'$(arch)-fake'
+ test x"$MINIRUBY" = x && MINIRUBY="${RUBY-$BASERUBY} -I`pwd` "-r'$(arch)-fake'
XRUBY_LIBDIR=`${RUBY-$BASERUBY} -rrbconfig -e ['puts RbConfig::CONFIG["libdir"]']`
XRUBY_RUBYLIBDIR=`${RUBY-$BASERUBY} -rrbconfig -e ['puts RbConfig::CONFIG["rubylibdir"]']`
XRUBY_RUBYHDRDIR=`${RUBY-$BASERUBY} -rrbconfig -e ['puts RbConfig::CONFIG["rubyhdrdir"]']`
@@ -2642,41 +2306,20 @@ if test x"$cross_compiling" = xyes; then
AC_SUBST(XRUBY_RUBYLIBDIR)
AC_SUBST(XRUBY_RUBYHDRDIR)
PREP='$(arch)-fake.rb'
- RUNRUBY_COMMAND='$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`'
- RUNRUBY='$(RUNRUBY_COMMAND)'
+ RUNRUBY='$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`'
XRUBY='$(MINIRUBY)'
TEST_RUNNABLE=no
- CROSS_COMPILING=yes
-
- if test "$host_os" = "nacl"; then
- if test "$build_cpu" = "$host_cpu" || test "${nacl_cv_cpu_nick}" = "x86" -a "$host_cpu" = "i686"; then
- nacl_cv_sel_ldr='`$(MINIRUBY) $(srcdir)/nacl/nacl-config.rb sel_ldr`'
- nacl_cv_irt_core='`$(MINIRUBY) $(srcdir)/nacl/nacl-config.rb irt_core`'
- nacl_cv_runnable_ld='`$(MINIRUBY) $(srcdir)/nacl/nacl-config.rb runnable_ld`'
- nacl_cv_host_lib='`$(MINIRUBY) $(srcdir)/nacl/nacl-config.rb host_lib`'
- TEST_RUNNABLE=yes
- BTESTRUBY="${nacl_cv_sel_ldr} -a -B ${nacl_cv_irt_core} -w 1:3 -w 2:4"
- BTESTRUBY="$BTESTRUBY -- ${nacl_cv_runnable_ld} --library-path ${nacl_cv_host_lib}"
- BTESTRUBY="$BTESTRUBY `pwd`/"'miniruby$(EXEEXT) -I`cd $(srcdir)/lib; pwd` -I.'
- BTESTRUBY="$BTESTRUBY"' -I$(EXTOUT)/common 3>&1 4>&2 1>/dev/null 2>/dev/null '
- fi
- fi
else
MINIRUBY='./miniruby$(EXEEXT) -I$(srcdir)/lib -I.'
MINIRUBY="$MINIRUBY"' -I$(EXTOUT)/common'
PREP='miniruby$(EXEEXT)'
- RUNRUBY_COMMAND='$(MINIRUBY) $(srcdir)/tool/runruby.rb --extout=$(EXTOUT) $(RUNRUBYOPT)'
- RUNRUBY='$(RUNRUBY_COMMAND) --'
+ RUNRUBY='$(MINIRUBY) $(srcdir)/tool/runruby.rb --extout=$(EXTOUT)'
XRUBY='$(RUNRUBY)'
TEST_RUNNABLE=yes
- CROSS_COMPILING=no
fi
AC_SUBST(TEST_RUNNABLE)
-AC_SUBST(CROSS_COMPILING)
AC_SUBST(MINIRUBY)
-AC_SUBST(BTESTRUBY)
AC_SUBST(PREP)
-AC_SUBST(RUNRUBY_COMMAND)
AC_SUBST(RUNRUBY)
AC_SUBST(XRUBY)
AC_SUBST(EXTOUT, [${EXTOUT=.ext}])
@@ -2689,7 +2332,7 @@ LIBRUBYARG='$(LIBRUBYARG_STATIC)'
SOLIBS=
AS_CASE(["$target_os"],
- [cygwin*|mingw*|beos*|haiku*|darwin*|os2-emx*], [
+ [cygwin*|mingw*|beos*|haiku*|openstep*|nextstep*|rhapsody*|darwin*|os2-emx*], [
: ${DLDLIBS=""}
],
[
@@ -2710,18 +2353,16 @@ AC_ARG_ENABLE(shared,
AS_HELP_STRING([--enable-shared], [build a shared library for Ruby]),
[enable_shared=$enableval])
libprefix='$(libdir)'
-LIBRUBY_RELATIVE=${load_relative-no}
+LIBRUBY_RELATIVE=no
AS_CASE("$enable_shared", [yes], [
LIBRUBY='$(LIBRUBY_SO)'
LIBRUBYARG_SHARED='-l$(RUBY_SO_NAME)'
LIBRUBYARG='$(LIBRUBYARG_SHARED)'
- LIBRUBY_RELATIVE=no
test -z "$CCDLFLAGS" || CFLAGS="$CFLAGS $CCDLFLAGS"
ENABLE_SHARED=yes
if test "$rb_cv_binary_elf" = yes; then
SOLIBS='$(LIBS)'
fi
-
# libdir can be overridden in config.site file (on OpenSUSE at least).
libdir_basename=lib
if test "$bindir" = '${exec_prefix}/bin'; then
@@ -2730,22 +2371,11 @@ AS_CASE("$enable_shared", [yes], [
AC_DEFINE_UNQUOTED(LIBDIR_BASENAME, ["${libdir_basename}"])
AS_CASE(["$target_os"],
- [freebsd*|dragonfly*], [],
- [
- if test "$GCC" = yes; then
- RUBY_TRY_LDFLAGS([${linker_flag}--no-undefined], [no_undefined=yes], [no_undefined=no])
- if test "no_undefined" = yes; then
- RUBY_APPEND_OPTION(EXTLDFLAGS, [${linker_flag}--no-undefined])
- fi
- fi
- ])
-
- AS_CASE(["$target_os"],
[sunos4*], [
LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).so'
],
[linux* | gnu* | k*bsd*-gnu | atheos* | kopensolaris*-gnu], [
- LIBRUBY_DLDFLAGS='-Wl,-soname,lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR)'" $LDFLAGS_OPTDIR"
+ LIBRUBY_DLDFLAGS='-Wl,-soname,lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR)'
LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).so'
if test "$load_relative" = yes; then
LIBRUBY_RPATHFLAGS="'-Wl,-rpath,\$\${ORIGIN}/../${libdir_basename}'"
@@ -2763,7 +2393,7 @@ AS_CASE("$enable_shared", [yes], [
[netbsd*], [
SOLIBS='$(LIBS)'
LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR).$(TEENY)'
- LIBRUBY_DLDFLAGS='-Wl,-soname,lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR)'" $LDFLAGS_OPTDIR"
+ LIBRUBY_DLDFLAGS='-Wl,-soname,lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR)'
if test "$rb_cv_binary_elf" = yes; then # ELF platforms
LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR) lib$(RUBY_SO_NAME).so'
else # a.out platforms
@@ -2791,14 +2421,14 @@ AS_CASE("$enable_shared", [yes], [
LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).sl.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).sl'
],
[aix*], [
- LIBRUBY_DLDFLAGS="${linker_flag}-bnoentry $XLDFLAGS $LDFLAGS_OPTDIR"
+ LIBRUBY_DLDFLAGS="${linker_flag}-bnoentry $XLDFLAGS"
LIBRUBYARG_SHARED='-L${libdir} -l${RUBY_SO_NAME}'
SOLIBS='-lm -lc'
],
[beos*], [
AS_CASE(["$target_cpu"],
[powerpc*], [
- LIBRUBY_DLDFLAGS="-f ruby.exp -lnet -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o $LDFLAGS_OPTDIR"
+ LIBRUBY_DLDFLAGS='-f ruby.exp -lnet -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o'
])
],
[darwin*], [
@@ -2821,44 +2451,9 @@ AS_CASE("$enable_shared", [yes], [
],
[interix*], [
LIBRUBYARG_SHARED='-L. -L${libdir} -l$(RUBY_SO_NAME)'
- ],
- [mingw*|cygwin*|mswin*], [
- LIBRUBY_RELATIVE=yes
])
], [
LIBRUBYARG_SHARED=
-
- # enable PIE if possible
- pie=
- AS_CASE(["$target_os"],
- [haiku], [
- # gcc supports PIE, but doesn't work correctly in Haiku
- pie=no
- ],
- [nacl], [
- # -pie implies -shared for NaCl.
- pie=no
- ])
- if test "$GCC" = yes -a -z "$EXTSTATIC" -a "x$pie" != xno; then
- RUBY_TRY_CFLAGS(-fPIE, [pie=yes], [pie=no])
- if test "$pie" = yes; then
- # Use -fPIE when testing -pie. RUBY_TRY_LDFLAGS sets
- # $save_CFLAGS internally, so set other name here.
- save_CFLAGS_before_pie="$CFLAGS"
- CFLAGS="$CFLAGS -fPIE"
-
- # gcc need -pie but clang need -Wl,-pie.
- for pie in -pie -Wl,-pie; do
- RUBY_TRY_LDFLAGS([$pie], [], [pie=])
- if test "x$pie" != x; then
- RUBY_APPEND_OPTION(XCFLAGS, -fPIE)
- RUBY_APPEND_OPTION(XLDFLAGS, $pie)
- break
- fi
- done
- CFLAGS="$save_CFLAGS_before_pie"
- fi
- fi
])
if test "$enable_rpath" = yes; then
test -z "$LIBRUBY_RPATHFLAGS" || LIBRUBY_RPATHFLAGS="$LIBRUBY_RPATHFLAGS "
@@ -2878,54 +2473,8 @@ if test "$EXEEXT" = .exe; then
AC_SUBST(EXECUTABLE_EXTS)
fi
-AC_ARG_ENABLE(dtrace,
- AS_HELP_STRING([--enable-dtrace],
- [enable DTrace for tracing inside ruby. enabled by default on systems having dtrace]),
- [enable_dtrace=$enableval], [enable_dtrace=auto])
-
-if test "${enable_dtrace}" = "auto"; then
- if test x"$DTRACE" != x -a x"$cross_compiling" != xyes; then
- RUBY_DTRACE_AVAILABLE()
- enable_dtrace=$rb_cv_dtrace_available
- else
- enable_dtrace=no
- fi
-fi
-
-LIBRUBY_A_OBJS='$(OBJS)'
-if test "${enable_dtrace}" = "yes"; then
- if test -z "$DTRACE"; then
- AC_MSG_ERROR([dtrace(1) is missing])
- elif test "$cross_compiling" = yes; then
- AC_MSG_ERROR([--enable-dtrace, however, cross compiling])
- else
- RUBY_DTRACE_AVAILABLE()
- enable_dtrace=$rb_cv_dtrace_available
- if test "${enable_dtrace}" = "no"; then
- AC_MSG_ERROR([--enable-dtrace, however, USDT is not available])
- fi
- RUBY_DTRACE_POSTPROCESS()
- if test "$rb_cv_prog_dtrace_g" = 'yes'; then
- DTRACE_OBJ='probes.$(OBJEXT)'
- DTRACE_GLOMMED_OBJ='ruby-glommed.$(OBJEXT)'
- LIBRUBY_A_OBJS='$(DTRACE_GLOMMED_OBJ)'
- fi
- AS_CASE("${target_os}", [freebsd*], [
- # FreeBSD's dtrace requires libelf
- LIBS="-lelf $LIBS"
- ])
- fi
- DTRACE_EXT=d
-else
- DTRACE_EXT=dmyh
-fi
-AC_SUBST(DTRACE_EXT)
-AC_SUBST(DTRACE_OBJ)
-AC_SUBST(DTRACE_GLOMMED_OBJ)
-AC_SUBST(LIBRUBY_A_OBJS)
-
-}
-{ # build section
+dnl }
+dnl build section {
dnl build rdoc index if requested
RDOCTARGET=""
@@ -2975,22 +2524,29 @@ AC_CACHE_CHECK([for prefix of external symbols], rb_cv_symbol_prefix, [
])
SYMBOL_PREFIX="$rb_cv_symbol_prefix"
test "x$SYMBOL_PREFIX" = xNONE && SYMBOL_PREFIX=''
-DLNOBJ=dln.o
-AC_ARG_ENABLE(dln,
- AC_HELP_STRING([--disable-dln], [disable dynamic link feature]),
- [test "$enableval" = yes || DLNOBJ=dmydln.o])
-AC_SUBST(DLNOBJ)
MINIDLNOBJ=dmydln.o
-
AS_CASE(["$target_os"],
[linux*], [
],
[netbsd*], [
RUBY_APPEND_OPTION(CFLAGS, -pipe)
],
+ [nextstep*|openstep*], [
+ RUBY_APPEND_OPTION(CPPFLAGS, -I/usr/local/include)
+ ],
+ [rhapsody*], [
+ RUBY_APPEND_OPTIONS(CFLAGS, -pipe -no-precomp)
+ ],
[darwin*], [
RUBY_APPEND_OPTION(CFLAGS, -pipe)
],
+ [human*], [
+ AC_LIBOBJ([x68.o])
+ CFLAGS="$CFLAGS -fansi-only"
+ XCFLAGS="$XCFLAGS -cc1-stack=262144 -cpp-stack=2694144"
+ EXEEXT=.x
+ OBJEXT=o
+ ],
[os2-emx], [
AC_LIBOBJ([os2])
CFLAGS="$CFLAGS -DOS2"
@@ -3018,7 +2574,7 @@ AS_CASE(["$target_os"],
CPPFLAGS="$CPPFLAGS -I/boot/home/config/include"
],
[cygwin*|mingw*], [
- RUBY_SO_NAME="${RUBY_SO_NAME}"'$(MAJOR)$(MINOR)$(TEENY)'
+ RUBY_SO_NAME="${RUBY_SO_NAME}${MAJOR}${MINOR}${TEENY}"
LIBRUBY_DLDFLAGS="${DLDFLAGS}"' -Wl,--out-implib=$(LIBRUBY)'
AS_CASE(["$target_os"],
[cygwin*], [
@@ -3062,8 +2618,8 @@ AS_CASE(["$target_os"],
XCFLAGS="$XCFLAGS -DYYMAXDEPTH=300"
YACC="$YACC -Nl40000 -Nm40000"
])],
- [nacl], [
- FIRSTMAKEFILE=GNUmakefile:nacl/GNUmakefile.in
+ [*msdosdjgpp*], [
+ FIRSTMAKEFILE=GNUmakefile:djgpp/GNUmakefile.in
])
MINIOBJS="$MINIDLNOBJ"
@@ -3078,7 +2634,7 @@ AC_ARG_ENABLE(debug-env,
[AC_DEFINE(RUBY_DEBUG_ENV)])
AS_CASE(["$FIRSTMAKEFILE"], [*GNUmakefile:*], [gnumake=yes], [
- AC_MSG_CHECKING([if ${MAKE-make} is GNU make])
+ AC_MSG_CHECKING([for if ${MAKE-make} is GNU make])
mkdir conftest.dir
echo "all:; @echo yes" > conftest.dir/GNUmakefile
echo "all:; @echo no" > conftest.dir/Makefile
@@ -3086,9 +2642,7 @@ AS_CASE(["$FIRSTMAKEFILE"], [*GNUmakefile:*], [gnumake=yes], [
rm -fr conftest.dir
AS_CASE(["$gnumake"],
[*yes*], [
- echo '@%:@ -*- makefile -*-' > GNUmakefile
- echo 'override MFLAGS := $(filter-out -j%,$(MFLAGS))' >> GNUmakefile
- echo "include Makefile" >> GNUmakefile
+ echo "include Makefile" > GNUmakefile
echo "-include uncommon.mk" >> GNUmakefile
gnumake=yes],
[
@@ -3098,20 +2652,22 @@ AS_CASE(["$FIRSTMAKEFILE"], [*GNUmakefile:*], [gnumake=yes], [
AS_IF([test "$gnumake" = yes], [ NULLCMD=: ], [
AC_MSG_CHECKING([for safe null command for ${MAKE-make}])
mkdir conftest.dir
- NULLCMD=
- for cmd in : true; do
+ echo 'A=1' > conftest.dir/Makefile
+ echo 'B=$(A:1=@:)' >> conftest.dir/Makefile
+ echo 'all:; $B 1 2 3 4 5 6 7 8 9' >> conftest.dir/Makefile
+ if (cd conftest.dir; ${MAKE-make} >/dev/null 2>/dev/null); then
+ NULLCMD=:
+ else
echo 'A=1' > conftest.dir/Makefile
- echo 'B=$(A:1=@'$cmd')' >> conftest.dir/Makefile
+ echo 'B=$(A:1=@true)' >> conftest.dir/Makefile
echo 'all:; $B 1 2 3 4 5 6 7 8 9' >> conftest.dir/Makefile
if (cd conftest.dir; ${MAKE-make} >/dev/null 2>/dev/null); then
- NULLCMD=$cmd
- break
+ NULLCMD=true
+ else
+ AC_MSG_ERROR(no candidate for safe null command)
fi
- done
- rm -fr conftest.dir
- if test -z "$NULLCMD"; then
- AC_MSG_ERROR(no candidate for safe null command)
fi
+ rm -fr conftest.dir
AC_MSG_RESULT($NULLCMD)
])
AC_SUBST(NULLCMD)
@@ -3134,7 +2690,7 @@ if test "${universal_binary-no}" = yes ; then
archflagpat=`eval echo '"'"${ARCH_FLAG}"'"' | sed 's/[[][|.*]]/\\&/g'`
new_cflags=`echo "$CFLAGS" | sed "s|$archflagpat"'||'`
for archs in ${universal_archnames}; do
- cpu=${archs@%:@*=}
+ cpu=${archs#*=}
archs=${archs%=*}
CFLAGS="$new_cflags -arch $archs"
archs="__${archs}__"
@@ -3148,42 +2704,6 @@ if test "${universal_binary-no}" = yes ; then
])])
fi
-AC_CHECK_FUNC(memmem, [
- AC_CACHE_CHECK(for broken memmem, rb_cv_broken_memmem, [
- AC_TRY_RUN([
-#include <string.h>
-
-int
-main()
-{
- char *str = "hogefugafoobar";
- char *rs = "foo";
- char *empty = "";
- char *p;
-
- p = memmem(str, strlen(str), rs, strlen(rs));
- if (p == str+8) {
- p = memmem(str, strlen(str), empty, strlen(empty));
- if (p == str)
- return 0;
- else
- return 1;
- }
- else {
- return 1;
- }
-}
- ],
- rb_cv_broken_memmem=no,
- rb_cv_broken_memmem=yes,
- rb_cv_broken_memmem=yes)
- ])
- if test "$rb_cv_broken_memmem" = no; then
- AC_DEFINE(HAVE_MEMMEM, 1)
- fi
-])
-
-
CPPFLAGS="$CPPFLAGS "'$(DEFS)'
test -z "$CPPFLAGS" || CPPFLAGS="$CPPFLAGS "; CPPFLAGS="$CPPFLAGS"'${cppflags}'
if test -n "${cflags+set}"; then
@@ -3207,11 +2727,8 @@ AC_SUBST(cxxflags, ["$orig_cxxflags "'${optflags} ${debugflags} ${warnflags}'])d
AC_SUBST(optflags)dnl
AC_SUBST(debugflags)dnl
AC_SUBST(warnflags)dnl
-AC_SUBST(strict_warnflags)dnl
AC_SUBST(XCFLAGS)dnl
AC_SUBST(XLDFLAGS)dnl
-AC_SUBST(EXTLDFLAGS)dnl
-AC_SUBST(EXTDLDFLAGS)dnl
AC_SUBST(LIBRUBY_LDSHARED)
AC_SUBST(LIBRUBY_DLDFLAGS)
AC_SUBST(RUBY_INSTALL_NAME)
@@ -3257,68 +2774,6 @@ AS_CASE(["$target_os"],
rubyw_install_name='$(RUBYW_INSTALL_NAME)'
])
-AC_ARG_ENABLE(multiarch,
- AS_HELP_STRING([--enable-multiarch], [enable multiarch compatible directories]),
- [multiarch=], [unset multiarch])
-
-archlibdir='${libdir}/${arch}'
-sitearchlibdir='${libdir}/${sitearch}'
-archincludedir='${includedir}/${arch}'
-sitearchincludedir='${includedir}/${sitearch}'
-
-shvar_to_cpp() {
- var="$1" val="$2"
- exec_prefix_pat="`echo \"${exec_prefix}\" | sed 's/\\./\\\\./g'`"
- arch_pat="`echo \"${arch}\" | sed 's/\\./\\\\./g'`"
- sitearch_pat="`echo \"${sitearch}\" | sed 's/\\./\\\\./g'`"
- val="`echo '\"'\"${val}\"'\"' |
- sed \
- -e 's/\${\([[A-Z][A-Z_]]*\)}/\"\1\"/g' \
- -e 's|\${sitearchlibdir}|'\"${sitearchlibdir}|g\" \
- -e 's|\${sitearchincludedir}|'\"${sitearchincludedir}|g\" \
- -e 's|\${archlibdir}|'\"${archlibdir}|g\" \
- -e 's|\${archincludedir}|'\"${archincludedir}|g\" \
- -e 's|\${libdir}|'\"${libdir}|g\" \
- -e 's/\${ruby_version}/\"RUBY_LIB_VERSION\"/g' \
- -e 's/\${arch}/\"arch\"/g' \
- -e 's/\${sitearch}/\"arch\"/g' \
- -e 's/\${vendorarchdir}/\"RUBY_VENDOR_ARCH_LIB\"/g' \
- -e 's/\${sitearchdir}/\"RUBY_SITE_ARCH_LIB\"/g' \
- -e 's/\${vendorlibdir}/\"RUBY_VENDOR_LIB2\"/g' \
- -e 's/\${sitelibdir}/\"RUBY_SITE_LIB2\"/g' \
- -e 's/\${vendordir}/\"RUBY_VENDOR_LIB\"/g' \
- -e 's/\${sitedir}/\"RUBY_SITE_LIB\"/g' \
- -e 's/\${rubylibdir}/\"RUBY_LIB\"/g' \
- -e 's/\${rubylibprefix}/\"RUBY_LIB_PREFIX\"/g' \
- -e 's/\${rubyarchprefix}/\"RUBY_ARCH_PREFIX_FOR(arch)\"/g' \
- -e 's/\${rubysitearchprefix}/\"RUBY_SITEARCH_PREFIX_FOR(arch)\"/g' \
- -e 's/\${exec_prefix}/\"RUBY_EXEC_PREFIX\"/g' \
- -e \"s|${exec_prefix_pat}/|\"'\"RUBY_EXEC_PREFIX\"/|g' \
- -e \"s|${arch_pat}|\"'\"arch\"|g' \
- -e \"s|${sitearch_pat}|\"'\"sitearch\"|g' \
- -e 's|^\\\"NONE/|RUBY_EXEC_PREFIX\\\"/|' \
- -e 's|^\\\"NONE\\\"|\\\"'\"${prefix}\"'\\\"|' \
- -e 's/^\\\"\\\"\(.\)/\1/;s/\(.\)\\\"\\\"$/\1/'
- `"
- eval $var='"$val"'
-}
-
-unexpand_shvar() {
- var=$1 n="" v="" expr=""
- shift
- test "$#" -eq 0 && return
- for n do
- eval v='"$'$n'"'
- v="`echo \"$v\" | sed -e ['s/${[^${}\"]*}/\"&\"/g'] -e ['s/[][$|.\\?*]/\\\\&/g']`"
- if test -n "$v"; then
- expr=["${expr};s|"'\("[^$"]*\)'"$v|\\1\${$n}\"|g"]
- AS_CASE(["$v"], [*'${'*'}'*], [expr=["$expr;s|$v|\"\${$n}\"|g"]])
- fi
- done
- expr=['s/${[^${}"]*}/"&"/g;'"${expr};"'s/"\(\${[^${}"]*}\)"/\1/g']
- eval $var='"`echo \"\\\"${'$var'}\\\"\" | sed \"$expr;s/\\\"//g\"`"'
-}
-
rubylibprefix='${libdir}/${RUBY_BASE_NAME}'
AC_ARG_WITH(rubylibprefix,
AS_HELP_STRING([--with-rubylibprefix=DIR], [prefix for ruby libraries [[LIBDIR/RUBY_BASE_NAME]]]),
@@ -3326,29 +2781,15 @@ AC_ARG_WITH(rubylibprefix,
AC_MSG_ERROR([No ruby, No libprefix])
fi
rubylibprefix="$withval"])
+RUBY_LIB_PREFIX=`eval echo \\"${rubylibprefix}\\"`
AC_SUBST(rubylibprefix)
-rubylibdir='${rubylibprefix}/${ruby_version}'
-rubyarchdir=${multiarch+'${rubyarchprefix}/${ruby_version}'}${multiarch-'${rubylibdir}/${arch}'}
-
-rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'}
-AC_ARG_WITH(rubyarchprefix,
- AS_HELP_STRING([--with-rubyarchprefix=DIR],
- [prefix for architecture dependent ruby libraries [[RUBYLIBPREFIX/ARCH]]]),
- [rubyarchprefix="$withval"])
-AC_SUBST(rubyarchprefix)
-
-rubysitearchprefix=${multiarch+'${sitearchlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${sitearch}'}
-AC_ARG_WITH(rubysitearchprefix,
- AS_HELP_STRING([--with-rubysitearchprefix=DIR],
- [prefix for architecture dependent site libraries [[RUBYLIBPREFIX/SITEARCH]]]),
- [rubysitearchprefix="$withval"])
-AC_SUBST(rubysitearchprefix)
RI_BASE_NAME=`echo ${RUBY_BASE_NAME} | sed 's/ruby/ri/'`
ridir='${datarootdir}/${RI_BASE_NAME}'
AC_ARG_WITH(ridir,
AS_HELP_STRING([--with-ridir=DIR], [ri documentation [[DATAROOTDIR/ri]]]),
[ridir=$withval])
+RIDIR=`eval echo \\"${ridir}\\"`
AC_SUBST(ridir)
AC_SUBST(RI_BASE_NAME)
@@ -3366,104 +2807,93 @@ if test ${RUBY_LIB_VERSION_STYLE+set}; then
echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE"
echo '#define STRINGIZE(x) x'
test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0'
- echo '#include "verconf.h"'
echo '#include "version.h"'
echo 'ruby_version=RUBY_LIB_VERSION'
} > conftest.c
- test -f verconf.h || > verconf.h
- ruby_version="`$CPP -I. -I"${srcdir}" -I"${srcdir}/include" conftest.c | sed '/^ruby_version=/!d;s/ //g'`"
+ ruby_version="`$CPP -I"${srcdir}" -I"${srcdir}/include" conftest.c | sed '/^ruby_version=/!d;s/ //g'`"
eval $ruby_version
else
RUBY_LIB_VERSION="\"${ruby_version}\""
fi
AC_ARG_WITH(sitedir,
- AS_HELP_STRING([--with-sitedir=DIR], [site libraries in DIR [[RUBY_LIB_PREFIX/site_ruby]], "no" to disable site directory]),
+ AS_HELP_STRING([--with-sitedir=DIR], [site libraries in DIR [[RUBY_LIB_PREFIX/site_ruby]]]),
[sitedir=$withval],
[sitedir='${rubylibprefix}/site_ruby'])
-sitelibdir='${sitedir}/${ruby_version}'
-
-AC_ARG_WITH(sitearchdir,
- AS_HELP_STRING([--with-arch-sitedir=DIR],
- [architecture dependent site libraries in DIR [[SITEDIR/SITEARCH]], "no" to disable site directory]),
- [sitearchdir=$withval],
- [sitearchdir=${multiarch+'${rubysitearchprefix}/site_ruby/${ruby_version}'}${multiarch-'${sitelibdir}/${sitearch}'}])
+dir="${sitedir}"
+until SITE_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${SITE_DIR}"; do
+ dir="${SITE_DIR}"
+done
AC_ARG_WITH(vendordir,
- AS_HELP_STRING([--with-vendordir=DIR], [vendor libraries in DIR [[RUBY_LIB_PREFIX/vendor_ruby]], "no" to disable vendor directory]),
+ AS_HELP_STRING([--with-vendordir=DIR], [vendor libraries in DIR [[RUBY_LIB_PREFIX/vendor_ruby]]]),
[vendordir=$withval],
[vendordir='${rubylibprefix}/vendor_ruby'])
-vendorlibdir='${vendordir}/${ruby_version}'
-
-AC_ARG_WITH(vendorarchdir,
- AS_HELP_STRING([--with-arch-vendordir=DIR],
- [architecture dependent vendor libraries in DIR [[VENDORDIR/SITEARCH]], "no" to disable vendor directory]),
- [vendorarchdir=$withval],
- [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby/${ruby_version}'}${multiarch-'${vendorlibdir}/${sitearch}'}])
+dir="${vendordir}"
+until VENDOR_DIR=`eval echo \\"${dir}\\"`; test "x${dir}" = "x${VENDOR_DIR}"; do
+ dir="${VENDOR_DIR}"
+done
-unexpand_shvar rubylibprefix exec_prefix libdir RUBY_BASE_NAME
-unexpand_shvar rubyarchprefix exec_prefix libdir arch RUBY_BASE_NAME archlibdir rubylibprefix
-unexpand_shvar rubysitearchprefix exec_prefix libdir sitearch arch RUBY_BASE_NAME archlibdir sitearchlibdir rubylibprefix
if test "${LOAD_RELATIVE+set}"; then
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
- RUBY_EXEC_PREFIX='""'
+ RUBY_EXEC_PREFIX=""
+ RUBY_LIB_PREFIX="`eval echo "$RUBY_LIB_PREFIX" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
+ RUBY_SITE_LIB_PATH="`eval echo "$SITE_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
+ RUBY_VENDOR_LIB_PATH="`eval echo "$VENDOR_DIR" | sed 's|^NONE/|/|;s|^'"$prefix"'/|/|'`"
else
- shvar_to_cpp RUBY_EXEC_PREFIX "${exec_prefix}"
+ RUBY_EXEC_PREFIX="`eval echo \\"$exec_prefix/\\" | sed 's|^NONE/|'"$prefix"'/|;s|/$||'`"
+ RUBY_LIB_PREFIX="`eval echo \\"$RUBY_LIB_PREFIX\\" | sed 's|^NONE/|'"$prefix"'/|'`"
+ RUBY_SITE_LIB_PATH="`eval echo \\"$SITE_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
+ RUBY_VENDOR_LIB_PATH="`eval echo \\"$VENDOR_DIR\\" | sed 's|^NONE/|'"$prefix"'/|'`"
fi
-shvar_to_cpp RUBY_LIB_PREFIX "${rubylibprefix}"
-shvar_to_cpp RUBY_ARCH_PREFIX_FOR "${rubyarchprefix}"
-shvar_to_cpp RUBY_SITEARCH_PREFIX_FOR "${rubysitearchprefix}"
-shvar_to_cpp RIDIR "${ridir}"
-unexpand_shvar exec_prefix prefix
+
+pat=`echo "$RUBY_LIB_PREFIX/" | tr -c '\012' .`'\(.*\)'
+AS_CASE(["$RUBY_SITE_LIB_PATH"],
+ ["$RUBY_LIB_PREFIX/"*], [
+ RUBY_SITE_LIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_SITE_LIB_PATH\" : \"$pat\"`"'"'
+ ],
+ [
+ RUBY_SITE_LIB_PATH="\"${RUBY_SITE_LIB_PATH}\""
+ ])
+AS_CASE(["$RUBY_VENDOR_LIB_PATH"],
+ ["$RUBY_LIB_PREFIX/"*], [
+ RUBY_VENDOR_LIB_PATH='RUBY_LIB_PREFIX"/'"`expr \"$RUBY_VENDOR_LIB_PATH\" : \"$pat\"`"'"'
+ ],
+ [
+ RUBY_VENDOR_LIB_PATH="\"${RUBY_VENDOR_LIB_PATH}\""
+ ])
+pat=`echo "$RUBY_EXEC_PREFIX/" | tr -c '\012' .`'\(.*\)'
+AS_CASE(["$RUBY_LIB_PREFIX"],
+ ["$RUBY_EXEC_PREFIX/"*], [
+ RUBY_LIB_PREFIX='RUBY_EXEC_PREFIX"/'"`expr \"$RUBY_LIB_PREFIX\" : \"$pat\"`"'"'
+ ],
+ [
+ RUBY_LIB_PREFIX="\"${RUBY_LIB_PREFIX}\""
+ ])
if test ${RUBY_LIB_VERSION_STYLE+set}; then
- AC_DEFINE_UNQUOTED(RUBY_LIB_VERSION_STYLE, $RUBY_LIB_VERSION_STYLE !<verconf>!)
+ AC_DEFINE_UNQUOTED(RUBY_LIB_VERSION_STYLE, $RUBY_LIB_VERSION_STYLE)
else
- AC_DEFINE_UNQUOTED(RUBY_LIB_VERSION, [$RUBY_LIB_VERSION] !<verconf>!)
-fi
-AC_DEFINE_UNQUOTED(RUBY_EXEC_PREFIX, ${RUBY_EXEC_PREFIX})
-AC_DEFINE_UNQUOTED(RUBY_LIB_PREFIX, ${RUBY_LIB_PREFIX} !<verconf>!)
-AC_DEFINE_UNQUOTED(RUBY_ARCH_PREFIX_FOR(arch), ${RUBY_ARCH_PREFIX_FOR} !<verconf>!)
-AC_DEFINE_UNQUOTED(RUBY_SITEARCH_PREFIX_FOR(arch), ${RUBY_SITEARCH_PREFIX_FOR} !<verconf>!)
-
-shvar_to_cpp RUBY_LIB "${rubylibdir}"
-if test "x${RUBY_LIB}" != 'xRUBY_LIB_PREFIX"/"RUBY_LIB_VERSION'; then
- AC_DEFINE_UNQUOTED(RUBY_LIB, ${RUBY_LIB} !<verconf>!)
+ AC_DEFINE_UNQUOTED(RUBY_LIB_VERSION, [$RUBY_LIB_VERSION])
fi
-shvar_to_cpp RUBY_ARCH_LIB_FOR "${rubyarchdir}"
-AC_DEFINE_UNQUOTED(RUBY_ARCH_LIB_FOR(arch), ${RUBY_ARCH_LIB_FOR} !<verconf>!)
-if test "x$sitedir" = xno; then
- AC_DEFINE(NO_RUBY_SITE_LIB, [] !<verconf>!)
+AC_DEFINE_UNQUOTED(RUBY_EXEC_PREFIX, "${RUBY_EXEC_PREFIX}")
+AC_DEFINE_UNQUOTED(RUBY_LIB_PREFIX, ${RUBY_LIB_PREFIX})
+if test "x$SITE_DIR" = xno; then
+ AC_DEFINE(NO_RUBY_SITE_LIB)
else
- shvar_to_cpp RUBY_SITE_LIB "${sitedir}"
- AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, ${RUBY_SITE_LIB} !<verconf>!)
- shvar_to_cpp RUBY_SITE_ARCH_LIB_FOR "${sitearchdir}"
- AC_DEFINE_UNQUOTED(RUBY_SITE_ARCH_LIB_FOR(arch), ${RUBY_SITE_ARCH_LIB_FOR} !<verconf>!)
+ AC_DEFINE_UNQUOTED(RUBY_SITE_LIB, ${RUBY_SITE_LIB_PATH})
fi
-if test "x$vendordir" = xno; then
- AC_DEFINE(NO_RUBY_VENDOR_LIB, [] !<verconf>!)
+if test "x$VENDOR_DIR" = xno; then
+ AC_DEFINE(NO_RUBY_VENDOR_LIB)
else
- shvar_to_cpp RUBY_VENDOR_LIB "${vendordir}"
- AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB, ${RUBY_VENDOR_LIB} !<verconf>!)
- shvar_to_cpp RUBY_VENDOR_ARCH_LIB_FOR "${vendorarchdir}"
- AC_DEFINE_UNQUOTED(RUBY_VENDOR_ARCH_LIB_FOR(arch), ${RUBY_VENDOR_ARCH_LIB_FOR} !<verconf>!)
+ AC_DEFINE_UNQUOTED(RUBY_VENDOR_LIB, ${RUBY_VENDOR_LIB_PATH})
fi
-AC_SUBST(archlibdir)dnl
-AC_SUBST(sitearchlibdir)dnl
-AC_SUBST(archincludedir)dnl
-AC_SUBST(sitearchincludedir)dnl
AC_SUBST(arch)dnl
AC_SUBST(sitearch)dnl
AC_SUBST(ruby_version)dnl
-AC_SUBST(rubylibdir)dnl
-AC_SUBST(rubyarchdir)dnl
AC_SUBST(sitedir)dnl
-AC_SUBST(sitelibdir)dnl
-AC_SUBST(sitearchdir)dnl
AC_SUBST(vendordir)dnl
-AC_SUBST(vendorlibdir)dnl
-AC_SUBST(vendorarchdir)dnl
configure_args=$ac_configure_args
AC_SUBST(configure_args)dnl
@@ -3474,7 +2904,7 @@ if test "${universal_binary-no}" = yes ; then
AC_TRY_COMPILE([const char arch[] = __ARCHITECTURE__;], [puts(arch);],
[rb_cv_architecture_available=yes], [rb_cv_architecture_available=no]))
if test "${rb_cv_architecture_available}" = yes; then
- AC_DEFINE_UNQUOTED(RUBY_PLATFORM_CPU, __ARCHITECTURE__ !<verconf>!)
+ AC_DEFINE_UNQUOTED(RUBY_PLATFORM_CPU, __ARCHITECTURE__)
else
for archs in ${universal_archnames}; do
cpu=`echo $archs | sed 's/.*=//'`
@@ -3482,69 +2912,64 @@ if test "${universal_binary-no}" = yes ; then
RUBY_DEFINE_IF([defined __${archs}__], RUBY_PLATFORM_CPU, ["${cpu}"])
done
fi
- ints='long int short'
+ ints='long int'
test "$ac_cv_type_long_long" = yes && ints="'long long' $ints"
AC_SUBST(UNIVERSAL_ARCHNAMES, "${universal_archnames}")
AC_SUBST(UNIVERSAL_INTS, "${ints}")
- AC_DEFINE_UNQUOTED(RUBY_PLATFORM_OS, "${target_os}" !<verconf>!)
- AC_DEFINE_UNQUOTED(RUBY_ARCH, "universal-"RUBY_PLATFORM_OS !<verconf>!)
- AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "universal."RUBY_PLATFORM_CPU"-"RUBY_PLATFORM_OS !<verconf>!)
+ AC_DEFINE_UNQUOTED(RUBY_PLATFORM_OS, "${target_os}")
+ AC_DEFINE_UNQUOTED(RUBY_ARCH, "universal-"RUBY_PLATFORM_OS)
+ AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "universal."RUBY_PLATFORM_CPU"-"RUBY_PLATFORM_OS)
else
arch="${target_cpu}-${target_os}"
- AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "${arch}" !<verconf>!)
+ AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "${arch}")
fi
unset sitearch
AS_CASE(["$target_os"],[mingw*],[sitearch="$target_cpu-$rb_cv_msvcrt"])
-test ${sitearch+set} && AC_DEFINE_UNQUOTED(RUBY_SITEARCH, "${sitearch}" !<verconf>!)
+test ${sitearch+set} && AC_DEFINE_UNQUOTED(RUBY_SITEARCH, "${sitearch}")
: ${sitearch='${arch}'}
AC_ARG_WITH(search-path,
AS_HELP_STRING([--with-search-path=DIR], [specify the additional search path]),
[search_path=$withval])
if test "$search_path" != ""; then
- AC_DEFINE_UNQUOTED(RUBY_SEARCH_PATH,"$search_path" !<verconf>!)
+ AC_DEFINE_UNQUOTED(RUBY_SEARCH_PATH,"$search_path")
fi
AC_ARG_WITH(rubyhdrdir,
AS_HELP_STRING([--with-rubyhdrdir=DIR], [core headers in DIR [[INCLUDEDIR/RUBY_BASE_NAME-RUBY_VERSION]]]),
[rubyhdrdir=$withval],
- [rubyhdrdir='${includedir}/${RUBY_VERSION_NAME}'])
-
-AC_ARG_WITH(rubyarchhdrdir,
- AS_HELP_STRING([--with-arch-rubyhdrdir=DIR],
- [architecture dependent core headers in DIR [[$(rubyhdrdir)/$(arch)]]]),
- [rubyarchhdrdir=$withval],
- [rubyarchhdrdir=${multiarch+'${archincludedir}/${RUBY_VERSION_NAME}'}${multiarch-'${rubyhdrdir}/${arch}'}])
+ [rubyhdrdir='${includedir}/${RUBY_BASE_NAME}-${ruby_version}'])
AC_ARG_WITH(sitehdrdir,
AS_HELP_STRING([--with-sitehdrdir=DIR], [core site headers in DIR [[RUBYHDRDIR/site_ruby]]]),
[sitehdrdir=$withval],
[sitehdrdir='${rubyhdrdir}/site_ruby'])
-AC_ARG_WITH(sitearchhdrdir,
- AS_HELP_STRING([--with-arch-sitehdrdir=DIR],
- [architecture dependent core site headers in DIR [[RUBYHDRDIR/site_ruby]]]),
- [sitearchhdrdir=$withval],
- [sitearchhdrdir=${multiarch+'${sitearchincludedir}/${RUBY_VERSION_NAME}/site_ruby'}${multiarch-'${sitehdrdir}/${sitearch}'}])
-
AC_ARG_WITH(vendorhdrdir,
AS_HELP_STRING([--with-vendorhdrdir=DIR], [core vendor headers in DIR [[RUBYHDRDIR/vendor_ruby]]]),
[vendorhdrdir=$withval],
[vendorhdrdir='${rubyhdrdir}/vendor_ruby'])
-AC_ARG_WITH(vendorarchhdrdir,
- AS_HELP_STRING([--with-arch-vendorhdrdir=DIR],
- [architecture dependent core vendor headers in DIR [[RUBYHDRDIR/vendor_ruby]]]),
- [vendorarchhdrdir=$withval],
- [vendorarchhdrdir=${multiarch+'${sitearchincludedir}/${RUBY_VERSION_NAME}/vendor_ruby'}${multiarch-'${vendorhdrdir}/${sitearch}'}])
-
AC_SUBST(rubyhdrdir)dnl
AC_SUBST(sitehdrdir)dnl
AC_SUBST(vendorhdrdir)dnl
-AC_SUBST(rubyarchhdrdir)dnl
-AC_SUBST(sitearchhdrdir)dnl
-AC_SUBST(vendorarchhdrdir)dnl
+
+AC_ARG_WITH(opt-dir,
+ AS_HELP_STRING([--with-opt-dir=DIR-LIST],
+ [add optional headers and libraries directories separated by $PATH_SEPARATOR]),
+ [
+ CPPFLAGS="$CPPFLAGS `echo \"$PATH_SEPARATOR$withval\" | sed \"s|$PATH_SEPARATOR\([[^$PATH_SEPARATOR]*]\)| -I\1/include|g;s/^ //\"`"
+ set -x
+ val=`IFS="$PATH_SEPARATOR"
+ for dir in $withval; do
+ echo x ${LIBPATHFLAG} ${RPATHFLAG} |
+ sed -E 's/^x *//;s'"${PATH_SEPARATOR}"'%1\\$-s|%s'"${IFS}${dir}/lib${IFS}g"
+ done | tr '\012' ' '`
+ set +x
+ LDFLAGS="$LDFLAGS${LDFLAGS:+ }$val"
+ DLDFLAGS="$DLDFLAGS${DLDFLAGS:+ }$val"
+ ])
AC_ARG_WITH(mantype,
AS_HELP_STRING([--with-mantype=TYPE], [specify man page type; TYPE is one of man and doc]),
@@ -3581,11 +3006,10 @@ guard=INCLUDE_RUBY_CONFIG_H
{
echo "#ifndef $guard"
echo "#define $guard 1"
- grep -v "^#define PACKAGE_" confdefs.h | grep -v ' !<verconf>!$'
+ grep -v "^#define PACKAGE_" confdefs.h
echo "#endif /* $guard */"
} | tr -d '\015' |
${srcdir}/tool/ifchange "${config_h}" -
-sed -n 's/ !<verconf>!$//p' confdefs.h | ${srcdir}/tool/ifchange verconf.h -
tr -d '\015' < largefile.h > confdefs.h
rm largefile.h
@@ -3615,25 +3039,20 @@ AC_MSG_RESULT($PACKAGE library version = $ruby_version)
AS_CASE([" $CPP "], [*" $CC "*], [CPP=`echo " $CPP " | sed "s| $CC |"' $(CC) |;s/^ *//;s/ *$//'`])
AC_CONFIG_FILES($FIRSTMAKEFILE)
-AC_CONFIG_FILES(Makefile, [
- tmpmk=confmk$$.tmp
- {
- if test ${VCS+set}; then
- :
- elif svn info "$srcdir" > /dev/null 2>&1; then
+AC_CONFIG_FILES(Makefile, [{
+ if test -d "$srcdir/.svn"; then
VCS='svn'
+ VCSUP='$(VCS) up $(SVNUPOPTIONS)'
elif test -d "$srcdir/.git/svn"; then
VCS='git svn'
+ VCSUP='$(VCS) rebase $(GITSVNREBASEOPTIONS)'
elif test -d "$srcdir/.git"; then
VCS='git'
+ VCSUP='$(VCS) pull $(GITPULLOPTIONS)'
else
VCS='echo cannot'
+ VCSUP='$(VCS)'
fi
- AS_CASE("$VCS",
- [svn], [VCSUP='$(VCS) up $(SVNUPOPTIONS)'],
- ["git svn"], [VCSUP='$(VCS) rebase $(GITSVNREBASEOPTIONS)'],
- [git], [VCSUP='$(VCS) pull $(GITPULLOPTIONS)'],
- [VCSUP='$(VCS)'])
sed '/^MISSING/s/\$U\././g;/^VCS *=/s#@VCS@#'"$VCS"'#;/^VCSUP *=/s#@VCSUP@#'"$VCSUP"'#' Makefile
echo; test x"$EXEEXT" = x || echo 'miniruby: miniruby$(EXEEXT)'
if test "$gnumake" != yes; then
@@ -3642,20 +3061,12 @@ AC_CONFIG_FILES(Makefile, [
else
echo 'distclean-local::; @$(RM) GNUmakefile uncommon.mk'
fi
- } > $tmpmk && if ! grep '^ruby:' $tmpmk > /dev/null; then
- if test "${gnumake}" = yes; then
- tmpgmk=confgmk$$.tmp
- {
- echo "include $tmpmk"
- echo "-include uncommon.mk"
- } > $tmpgmk
- else
- tmpgmk=$tmpmk
- fi &&
- test -z "`${MAKE-make} -f $tmpgmk info-program | grep '^PROGRAM=ruby$'`" &&
- echo 'ruby: $(PROGRAM);' >> $tmpmk
- test "$tmpmk" = "$tmpgmk" || rm -f "$tmpgmk"
- fi && mv -f $tmpmk Makefile],
+ } > confmk$$.tmp && mv -f confmk$$.tmp Makefile &&
+ {
+ grep '^ruby:' Makefile > /dev/null ||
+ ${MAKE-make} info-program | grep '^PROGRAM=ruby$' > /dev/null ||
+ echo 'ruby: $(PROGRAM);' >> Makefile
+ }],
[EXEEXT='$EXEEXT' gnumake='$gnumake'])
AC_ARG_WITH([ruby-pc],
@@ -3681,5 +3092,5 @@ AC_CONFIG_FILES($ruby_pc:template/ruby.pc.in,
[ruby_pc='$ruby_pc' PKG_CONFIG='$PKG_CONFIG'])
AC_OUTPUT
-}
-}
+dnl }
+dnl }
diff --git a/constant.h b/constant.h
index 9354241961..8232910737 100644
--- a/constant.h
+++ b/constant.h
@@ -19,8 +19,6 @@ typedef enum {
typedef struct rb_const_entry_struct {
rb_const_flag_t flag;
VALUE value; /* should be mark */
- VALUE file;
- int line;
} rb_const_entry_t;
VALUE rb_mod_private_constant(int argc, VALUE *argv, VALUE obj);
diff --git a/cont.c b/cont.c
index e1c5c8953e..1e42974145 100644
--- a/cont.c
+++ b/cont.c
@@ -15,6 +15,9 @@
#include "gc.h"
#include "eval_intern.h"
+#if ((defined(_WIN32) && _WIN32_WINNT >= 0x0400) || (defined(HAVE_GETCONTEXT) && defined(HAVE_SETCONTEXT))) && !defined(__NetBSD__) && !defined(sun) && !defined(FIBER_USE_NATIVE)
+#define FIBER_USE_NATIVE 1
+
/* FIBER_USE_NATIVE enables Fiber performance improvement using system
* dependent method such as make/setcontext on POSIX system or
* CreateFiber() API on Windows.
@@ -26,45 +29,12 @@
* in Proc. of 51th Programming Symposium, pp.21--28 (2010) (in Japanese).
*/
-#if !defined(FIBER_USE_NATIVE)
-# if defined(HAVE_GETCONTEXT) && defined(HAVE_SETCONTEXT)
-# if 0
-# elif defined(__NetBSD__)
/* On our experience, NetBSD doesn't support using setcontext() and pthread
* simultaneously. This is because pthread_self(), TLS and other information
* are represented by stack pointer (higher bits of stack pointer).
* TODO: check such constraint on configure.
*/
-# define FIBER_USE_NATIVE 0
-# elif defined(__sun)
-/* On Solaris because resuming any Fiber caused SEGV, for some reason.
- */
-# define FIBER_USE_NATIVE 0
-# elif defined(__ia64)
-/* At least, Linux/ia64's getcontext(3) doesn't save register window.
- */
-# define FIBER_USE_NATIVE 0
-# elif defined(__GNU__)
-/* GNU/Hurd doesn't fully support getcontext, setcontext, makecontext
- * and swapcontext functions. Disabling their usage till support is
- * implemented. More info at
- * http://darnassus.sceen.net/~hurd-web/open_issues/glibc/#getcontext
- */
-# define FIBER_USE_NATIVE 0
-# else
-# define FIBER_USE_NATIVE 1
-# endif
-# elif defined(_WIN32)
-# if _WIN32_WINNT >= 0x0400
-/* only when _WIN32_WINNT >= 0x0400 on Windows because Fiber APIs are
- * supported only such building (and running) environments.
- * [ruby-dev:41192]
- */
-# define FIBER_USE_NATIVE 1
-# endif
-# endif
-#endif
-#if !defined(FIBER_USE_NATIVE)
+#elif !defined(FIBER_USE_NATIVE)
#define FIBER_USE_NATIVE 0
#endif
@@ -77,7 +47,8 @@
#define RB_PAGE_SIZE (pagesize)
#define RB_PAGE_MASK (~(RB_PAGE_SIZE - 1))
static long pagesize;
-#endif /*FIBER_USE_NATIVE*/
+#define FIBER_MACHINE_STACK_ALLOCATION_SIZE (0x10000)
+#endif
#define CAPTURE_JUST_VALID_VM_STACK 1
@@ -132,12 +103,6 @@ typedef struct rb_fiber_struct {
enum fiber_status status;
struct rb_fiber_struct *prev_fiber;
struct rb_fiber_struct *next_fiber;
- /* If a fiber invokes "transfer",
- * then this fiber can't "resume" any more after that.
- * You shouldn't mix "transfer" and "resume".
- */
- int transfered;
-
#if FIBER_USE_NATIVE
#ifdef _WIN32
void *fib_handle;
@@ -158,7 +123,7 @@ static VALUE rb_eFiberError;
#define GetFiberPtr(obj, ptr) do {\
TypedData_Get_Struct((obj), rb_fiber_t, &fiber_data_type, (ptr)); \
if (!(ptr)) rb_raise(rb_eFiberError, "uninitialized fiber"); \
-} while (0)
+} while(0)
NOINLINE(static VALUE cont_capture(volatile int *stat));
@@ -494,7 +459,7 @@ cont_capture(volatile int *stat)
}
else {
*stat = 0;
- return contval;
+ return cont->self;
}
}
@@ -542,8 +507,6 @@ cont_restore_thread(rb_context_t *cont)
th->protect_tag = sth->protect_tag;
th->errinfo = sth->errinfo;
th->first_proc = sth->first_proc;
- th->root_lep = sth->root_lep;
- th->root_svar = sth->root_svar;
}
#if FIBER_USE_NATIVE
@@ -657,7 +620,7 @@ fiber_setcontext(rb_fiber_t *newfib, rb_fiber_t *oldfib)
rb_thread_t *th = GET_THREAD(), *sth = &newfib->cont.saved_thread;
if (newfib->status != RUNNING) {
- fiber_initialize_machine_stack_context(newfib, th->vm->default_params.fiber_machine_stack_size);
+ fiber_initialize_machine_stack_context(newfib, FIBER_MACHINE_STACK_ALLOCATION_SIZE);
}
/* restore thread context */
@@ -694,6 +657,17 @@ fiber_setcontext(rb_fiber_t *newfib, rb_fiber_t *oldfib)
/* swap machine context */
#ifdef _WIN32
SwitchToFiber(newfib->fib_handle);
+#elif defined(__FreeBSD__) /* FreeBSD 9 doesn't work with swapcontext */
+ if (!ruby_setjmp(oldfib->cont.jmpbuf)) {
+ if (newfib->status != RUNNING) {
+ if (setcontext(&newfib->context) < 0) {
+ rb_bug("context switch between fiber failed");
+ }
+ }
+ else {
+ ruby_longjmp(newfib->cont.jmpbuf, 1);
+ }
+ }
#else
swapcontext(&oldfib->context, &newfib->context);
#endif
@@ -819,17 +793,17 @@ cont_restore_0(rb_context_t *cont, VALUE *addr_in_prev_frame)
cont_restore_1(cont);
}
#ifdef __ia64
-#define cont_restore_0(cont, vp) register_stack_extend((cont), (vp), (VALUE*)rb_ia64_bsp())
+#define cont_restore_0(cont, vp) register_stack_extend((cont), (vp), (VALUE*)rb_ia64_bsp());
#endif
/*
* Document-class: Continuation
*
- * Continuation objects are generated by Kernel#callcc,
- * after having +require+d <i>continuation</i>. They hold
+ * Continuation objects are generated by <code>Kernel#callcc</code>,
+ * after having <code>require</code>d <i>continuation</i>. They hold
* a return address and execution context, allowing a nonlocal return
* to the end of the <code>callcc</code> block from anywhere within a
- * program. Continuations are somewhat analogous to a structured
+ * program. Continuations are somewhat analogous to a structured
* version of C's <code>setjmp/longjmp</code> (although they contain
* more state, so you might consider them closer to threads).
*
@@ -875,15 +849,15 @@ cont_restore_0(rb_context_t *cont, VALUE *addr_in_prev_frame)
* call-seq:
* callcc {|cont| block } -> obj
*
- * Generates a Continuation object, which it passes to
+ * Generates a <code>Continuation</code> object, which it passes to
* the associated block. You need to <code>require
* 'continuation'</code> before using this method. Performing a
- * <em>cont</em><code>.call</code> will cause the #callcc
+ * <em>cont</em><code>.call</code> will cause the <code>callcc</code>
* to return (as will falling through the end of the block). The
- * value returned by the #callcc is the value of 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 Continuation for more details. Also see
- * Kernel#throw for an alternative mechanism for
+ * class <code>Continuation</code> for more details. Also see
+ * <code>Kernel::throw</code> for an alternative mechanism for
* unwinding a call stack.
*/
@@ -904,7 +878,7 @@ rb_callcc(VALUE self)
static VALUE
make_passing_arg(int argc, VALUE *argv)
{
- switch (argc) {
+ switch(argc) {
case 0:
return Qnil;
case 1:
@@ -955,9 +929,6 @@ rb_cont_call(int argc, VALUE *argv, VALUE contval)
cont->argc = argc;
cont->value = make_passing_arg(argc, argv);
- /* restore `tracing' context. see [Feature #4347] */
- th->trace_arg = cont->saved_thread.trace_arg;
-
cont_restore_0(cont, &contval);
return Qnil; /* unreachable */
}
@@ -1028,6 +999,8 @@ rb_cont_call(int argc, VALUE *argv, VALUE contval)
*
*/
+#define FIBER_VM_STACK_SIZE (4 * 1024)
+
static const rb_data_type_t fiber_data_type = {
"fiber",
{fiber_mark, fiber_free, fiber_memsize,},
@@ -1078,20 +1051,18 @@ fiber_init(VALUE fibval, VALUE proc)
fiber_link_join(fib);
- th->stack_size = th->vm->default_params.fiber_vm_stack_size / sizeof(VALUE);
+ th->stack_size = FIBER_VM_STACK_SIZE;
th->stack = ALLOC_N(VALUE, th->stack_size);
th->cfp = (void *)(th->stack + th->stack_size);
th->cfp--;
th->cfp->pc = 0;
th->cfp->sp = th->stack + 1;
-#if VM_DEBUG_BP_CHECK
- th->cfp->bp_check = 0;
-#endif
- th->cfp->ep = th->stack;
- *th->cfp->ep = VM_ENVVAL_BLOCK_PTR(0);
+ th->cfp->bp = 0;
+ th->cfp->lfp = th->stack;
+ *th->cfp->lfp = 0;
+ th->cfp->dfp = th->stack;
th->cfp->self = Qnil;
- th->cfp->klass = Qnil;
th->cfp->flag = 0;
th->cfp->iseq = 0;
th->cfp->proc = 0;
@@ -1127,19 +1098,20 @@ return_fiber(void)
{
rb_fiber_t *fib;
VALUE curr = rb_fiber_current();
- VALUE prev;
GetFiberPtr(curr, fib);
- prev = fib->prev;
- if (NIL_P(prev)) {
- const VALUE root_fiber = GET_THREAD()->root_fiber;
+ if (fib->prev == Qnil) {
+ rb_thread_t *th = GET_THREAD();
- if (root_fiber == curr) {
+ if (th->root_fiber != curr) {
+ return th->root_fiber;
+ }
+ else {
rb_raise(rb_eFiberError, "can't yield from root fiber");
}
- return root_fiber;
}
else {
+ VALUE prev = fib->prev;
fib->prev = Qnil;
return prev;
}
@@ -1184,22 +1156,21 @@ rb_fiber_start(void)
argv = (argc = cont->argc) > 1 ? RARRAY_PTR(args) : &args;
cont->value = Qnil;
th->errinfo = Qnil;
- th->root_lep = rb_vm_ep_local_ep(proc->block.ep);
- th->root_svar = Qnil;
+ th->local_lfp = proc->block.lfp;
+ th->local_svar = Qnil;
fib->status = RUNNING;
- cont->value = rb_vm_invoke_proc(th, proc, argc, argv, 0);
+ cont->value = rb_vm_invoke_proc(th, proc, proc->block.self, argc, argv, 0);
}
TH_POP_TAG();
if (state) {
- if (state == TAG_RAISE || state == TAG_FATAL) {
- rb_threadptr_pending_interrupt_enque(th, th->errinfo);
+ if (state == TAG_RAISE) {
+ th->thrown_errinfo = th->errinfo;
}
else {
- VALUE err = rb_vm_make_jump_tag_but_local_jump(state, th->errinfo);
- if (!NIL_P(err))
- rb_threadptr_pending_interrupt_enque(th, err);
+ th->thrown_errinfo =
+ rb_vm_make_jump_tag_but_local_jump(state, th->errinfo);
}
RUBY_VM_SET_INTERRUPT(th);
}
@@ -1256,10 +1227,10 @@ fiber_store(rb_fiber_t *next_fib)
#if !FIBER_USE_NATIVE
cont_save_machine_stack(th, &fib->cont);
-#endif
- if (FIBER_USE_NATIVE || ruby_setjmp(fib->cont.jmpbuf)) {
-#if FIBER_USE_NATIVE
+ if (ruby_setjmp(fib->cont.jmpbuf)) {
+#else /* FIBER_USE_NATIVE */
+ {
fiber_setcontext(next_fib, fib);
#ifndef _WIN32
if (terminated_machine_stack.ptr) {
@@ -1304,13 +1275,6 @@ fiber_switch(VALUE fibval, int argc, VALUE *argv, int is_resume)
GetFiberPtr(fibval, fib);
cont = &fib->cont;
- if (th->fiber == fibval) {
- /* ignore fiber context switch
- * because destination fiber is same as current fiber
- */
- return make_passing_arg(argc, argv);
- }
-
if (cont->saved_thread.self != th->self) {
rb_raise(rb_eFiberError, "fiber called across threads");
}
@@ -1348,10 +1312,6 @@ fiber_switch(VALUE fibval, int argc, VALUE *argv, int is_resume)
if (is_resume) {
fib->prev = rb_fiber_current();
}
- else {
- /* restore `tracing' context. see [Feature #4347] */
- th->trace_arg = cont->saved_thread.trace_arg;
- }
cont->argc = argc;
cont->value = make_passing_arg(argc, argv);
@@ -1363,7 +1323,7 @@ fiber_switch(VALUE fibval, int argc, VALUE *argv, int is_resume)
rb_bug("rb_fiber_resume: unreachable");
}
#endif
- RUBY_VM_CHECK_INTS(th);
+ RUBY_VM_CHECK_INTS();
return value;
}
@@ -1383,9 +1343,6 @@ rb_fiber_resume(VALUE fibval, int argc, VALUE *argv)
if (fib->prev != Qnil || fib->cont.type == ROOT_FIBER_CONTEXT) {
rb_raise(rb_eFiberError, "double resume");
}
- if (fib->transfered != 0) {
- rb_raise(rb_eFiberError, "cannot resume transferred Fiber");
- }
return fiber_switch(fibval, argc, argv, 1);
}
@@ -1464,41 +1421,11 @@ rb_fiber_m_resume(int argc, VALUE *argv, VALUE fib)
* You cannot resume a fiber that transferred control to another one.
* This will cause a double resume error. You need to transfer control
* back to this fiber before it can yield and resume.
- *
- * Example:
- *
- * fiber1 = Fiber.new do
- * puts "In Fiber 1"
- * Fiber.yield
- * end
- *
- * fiber2 = Fiber.new do
- * puts "In Fiber 2"
- * fiber1.transfer
- * puts "Never see this message"
- * end
- *
- * fiber3 = Fiber.new do
- * puts "In Fiber 3"
- * end
- *
- * fiber2.resume
- * fiber3.resume
- *
- * <em>produces</em>
- *
- * In fiber 2
- * In fiber 1
- * In fiber 3
- *
*/
static VALUE
-rb_fiber_m_transfer(int argc, VALUE *argv, VALUE fibval)
+rb_fiber_m_transfer(int argc, VALUE *argv, VALUE fib)
{
- rb_fiber_t *fib;
- GetFiberPtr(fibval, fib);
- fib->transfered = 1;
- return rb_fiber_transfer(fibval, argc, argv);
+ return rb_fiber_transfer(fib, argc, argv);
}
/*
diff --git a/cygwin/GNUmakefile.in b/cygwin/GNUmakefile.in
index 5bd414d786..19d1727dd7 100644
--- a/cygwin/GNUmakefile.in
+++ b/cygwin/GNUmakefile.in
@@ -1,4 +1,5 @@
include Makefile
+-include uncommon.mk
ENABLE_SHARED=@ENABLE_SHARED@
DLLWRAP = @DLLWRAP@ --target=@target_os@ --driver-name="$(CC)"
@@ -29,9 +30,6 @@ else
endif
WPROGRAM = $(RUBYW_INSTALL_NAME)$(EXEEXT)
-
--include uncommon.mk
-
SOLIBS := $(DLL_BASE_NAME).res.@OBJEXT@ $(SOLIBS)
EXTOBJS += $(if $(filter-out $(RUBYW_INSTALL_NAME),$(@:$(EXEEXT)=)),$(RUBY_INSTALL_NAME),$(@:$(EXEEXT)=)).res.$(OBJEXT)
RCFILES = $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(DLL_BASE_NAME).rc
diff --git a/debug.c b/debug.c
index 4909a45d17..dcc710bc4a 100644
--- a/debug.c
+++ b/debug.c
@@ -12,7 +12,7 @@
#include "ruby/ruby.h"
#include "ruby/encoding.h"
#include "ruby/util.h"
-#include "vm_debug.h"
+#include "debug.h"
#include "eval_intern.h"
#include "vm_core.h"
#include "id.h"
@@ -32,8 +32,8 @@ const union {
RUBY_ENC_CODERANGE_7BIT = ENC_CODERANGE_7BIT,
RUBY_ENC_CODERANGE_VALID = ENC_CODERANGE_VALID,
RUBY_ENC_CODERANGE_BROKEN = ENC_CODERANGE_BROKEN,
- RUBY_FL_RESERVED1 = FL_RESERVED1,
- RUBY_FL_RESERVED2 = FL_RESERVED2,
+ RUBY_FL_MARK = FL_MARK,
+ RUBY_FL_RESERVED = FL_RESERVED,
RUBY_FL_FINALIZE = FL_FINALIZE,
RUBY_FL_TAINT = FL_TAINT,
RUBY_FL_UNTRUSTED = FL_UNTRUSTED,
diff --git a/vm_debug.h b/debug.h
index 424390fade..f1d11304f0 100644
--- a/vm_debug.h
+++ b/debug.h
@@ -1,6 +1,6 @@
/**********************************************************************
- vm_debug.h - YARV Debug function interface
+ debug.h - YARV Debug function interface
$Author$
created at: 04/08/25 02:33:49 JST
diff --git a/defs/default_gems b/defs/default_gems
index e73e383b26..030d84f6f5 100644
--- a/defs/default_gems
+++ b/defs/default_gems
@@ -1,5 +1,7 @@
-# gem base directory versioning file [executable files under bin]
-rake lib/rake lib/rake/version.rb [rake]
-rdoc lib/rdoc lib/rdoc.rb [rdoc ri]
-minitest lib/minitest lib/minitest/unit.rb
-json ext/json ext/json/lib/json/version.rb
+# gem versioning file [executable files under bin]
+rake lib/rake/version.rb [rake]
+rdoc lib/rdoc.rb [rdoc ri]
+minitest lib/minitest/unit.rb
+json ext/json/lib/json/version.rb
+io-console ext/io/console/io-console.gemspec
+bigdecimal ext/bigdecimal/bigdecimal.gemspec
diff --git a/defs/id.def b/defs/id.def
deleted file mode 100644
index 91c4110d24..0000000000
--- a/defs/id.def
+++ /dev/null
@@ -1,93 +0,0 @@
-# -*- mode: ruby; coding: us-ascii -*-
-firstline, predefined = __LINE__+1, %[\
- intern
- method_missing MethodMissing
- length
- size
- gets
- succ
- each
- proc
- lambda
- send
- __send__
- initialize
- initialize_copy
- initialize_clone
- initialize_dup
- _ UScore
- "/*NULL*/" NULL
- empty?
- respond_to? Respond_to
- respond_to_missing? Respond_to_missing
- <IFUNC>
- <CFUNC>
- core#set_method_alias
- core#set_variable_alias
- core#undef_method
- core#define_method
- core#define_singleton_method
- core#set_postexe
- core#hash_from_ary
- core#hash_merge_ary
- core#hash_merge_ptr
- core#hash_merge_kwd
-]
-
-class KeywordError < RuntimeError
- def self.raise(mesg, line)
- super(self, mesg, ["#{__FILE__}:#{line}", *caller])
- end
-end
-
-predefined_ids = {}
-preserved_ids = []
-local_ids = []
-instance_ids = []
-global_ids = []
-const_ids = []
-class_ids = []
-names = {}
-predefined.split(/^/).each_with_index do |line, num|
- next if /^#/ =~ line
- line.sub!(/\s+#.*/, '')
- name, token = line.split
- next unless name
- token ||= name
- if /#/ =~ token
- token = "_#{token.gsub(/\W+/, '_')}"
- else
- token = token.sub(/\?/, 'P').sub(/\A[a-z]/) {$&.upcase}
- token.sub!(/\A\$/, "_G_")
- token.sub!(/\A@@/, "_C_")
- token.sub!(/\A@/, "_I_")
- token.gsub!(/\W+/, "")
- end
- if prev = names[name]
- KeywordError.raise("#{name} is already registered at line #{prev+firstline}", firstline+num)
- end
- if prev = predefined_ids[token]
- KeywordError.raise("#{token} is already used for #{prev} at line #{names[prev]+firstline}", firstline+num)
- end
- names[name] = num
- case name
- when /\A[A-Z]\w*\z/; const_ids
- when /\A(?!\d)\w+\z/; local_ids
- when /\A\$(?:\d+|(?!\d)\w+)\z/; global_ids
- when /\A@@(?!\d)\w+\z/; class_ids
- when /\A@(?!\d)\w+\z/; instance_ids
- when /\A((?!\d)\w+)=\z/
- KeywordError.raise("use ID2ATTRSET(#{$1}) instead of ATTRSET #{name}", firstline+num)
- else preserved_ids
- end << token
- predefined_ids[token] = name
-end
-{
- "LOCAL" => local_ids,
- "INSTANCE" => instance_ids,
- "GLOBAL" => global_ids,
- "CONST" => const_ids,
- "CLASS" => class_ids,
- :preserved => preserved_ids,
- :predefined => predefined_ids,
-}
diff --git a/defs/opt_operand.def b/defs/opt_operand.def
index ab7103a421..5ca1d74028 100644
--- a/defs/opt_operand.def
+++ b/defs/opt_operand.def
@@ -7,16 +7,53 @@
# wildcard: *
#
-getlocal *, 0
-getlocal *, 1
-setlocal *, 0
-setlocal *, 1
+__END__
+
+getlocal 2
+getlocal 3
+getlocal 4
+
+setlocal 2
+setlocal 3
+setlocal 4
+
+getdynamic *, 0
+getdynamic 1, 0
+getdynamic 2, 0
+getdynamic 3, 0
+getdynamic 4, 0
+
+setdynamic *, 0
+setdynamic 1, 0
+setdynamic 2, 0
+setdynamic 3, 0
+setdynamic 4, 0
putobject INT2FIX(0)
putobject INT2FIX(1)
+putobject Qtrue
+putobject Qfalse
+
+# CALL
+send *, *, Qfalse, 0, *
+send *, 0, Qfalse, 0, *
+send *, 1, Qfalse, 0, *
+send *, 2, Qfalse, 0, *
+send *, 3, Qfalse, 0, *
+
+# FCALL
+send *, *, Qfalse, 0x04, *
+send *, 0, Qfalse, 0x04, *
+send *, 1, Qfalse, 0x04, *
+send *, 2, Qfalse, 0x04, *
+send *, 3, Qfalse, 0x04, *
+
+# VCALL
+send *, 0, Qfalse, 0x0c, *
+
__END__
-putobject Qtrue
-putobject Qfalse
+
+
diff --git a/dir.c b/dir.c
index 7d61b61fdb..387a2490b6 100644
--- a/dir.c
+++ b/dir.c
@@ -30,7 +30,12 @@
# define NAMLEN(dirent) strlen((dirent)->d_name)
#else
# define dirent direct
-# define NAMLEN(dirent) (dirent)->d_namlen
+# if !defined __NeXT__
+# define NAMLEN(dirent) (dirent)->d_namlen
+# else
+# /* On some versions of NextStep, d_namlen is always zero, so avoid it. */
+# define NAMLEN(dirent) strlen((dirent)->d_name)
+# endif
# if HAVE_SYS_NDIR_H
# include <sys/ndir.h>
# endif
@@ -44,10 +49,6 @@
# include "win32/dir.h"
# endif
#endif
-#if defined(__native_client__) && defined(NACL_NEWLIB)
-# include "nacl/dirent.h"
-# include "nacl/stat.h"
-#endif
#include <errno.h>
@@ -85,7 +86,6 @@ char *strchr(char*,char);
#define FNM_PATHNAME 0x02
#define FNM_DOTMATCH 0x04
#define FNM_CASEFOLD 0x08
-#define FNM_EXTGLOB 0x10
#if CASEFOLD_FILESYSTEM
#define FNM_SYSCASE FNM_CASEFOLD
#else
@@ -137,7 +137,7 @@ bracket(
p = t2 + (r2 = rb_enc_mbclen(t2, pend, enc));
if (ok) continue;
if ((r <= (send-s) && memcmp(t1, s, r) == 0) ||
- (r2 <= (send-s) && memcmp(t2, s, r2) == 0)) {
+ (r2 <= (send-s) && memcmp(t2, s, r) == 0)) {
ok = 1;
continue;
}
@@ -397,7 +397,7 @@ dir_initialize(int argc, VALUE *argv, VALUE dir)
}
fsenc = rb_filesystem_encoding();
- rb_scan_args(argc, argv, "1:", &dirname, &opt);
+ argc = rb_scan_args(argc, argv, "1:", &dirname, &opt);
if (!NIL_P(opt)) {
VALUE enc = rb_hash_aref(opt, sym_enc);
@@ -522,7 +522,7 @@ dir_path(VALUE dir)
#if defined HAVE_READDIR_R
# define READDIR(dir, enc, entry, dp) (readdir_r((dir), (entry), &(dp)) == 0 && (dp) != 0)
#elif defined _WIN32
-# define READDIR(dir, enc, entry, dp) (((dp) = rb_w32_readdir((dir), (enc))) != 0)
+# define READDIR(dir, enc, entry, dp) (((dp) = rb_w32_readdir_with_enc((dir), (enc))) != 0)
#else
# define READDIR(dir, enc, entry, dp) (((dp) = readdir(dir)) != 0)
#endif
@@ -589,10 +589,13 @@ dir_read(VALUE dir)
if (READDIR(dirp->dir, dirp->enc, &STRUCT_DIRENT(entry), dp)) {
return rb_external_str_new_with_enc(dp->d_name, NAMLEN(dp), dirp->enc);
}
+ else if (errno == 0) { /* end of stream */
+ return Qnil;
+ }
else {
- if (errno != 0) rb_sys_fail(0);
- return Qnil; /* end of stream */
+ rb_sys_fail(0);
}
+ return Qnil; /* not reached */
}
/*
@@ -689,7 +692,6 @@ dir_seek(VALUE dir, VALUE pos)
#define dir_seek rb_f_notimplement
#endif
-#ifdef HAVE_SEEKDIR
/*
* call-seq:
* dir.pos( integer ) -> integer
@@ -710,9 +712,6 @@ dir_set_pos(VALUE dir, VALUE pos)
dir_seek(dir, pos);
return pos;
}
-#else
-#define dir_set_pos rb_f_notimplement
-#endif
/*
* call-seq:
@@ -1136,9 +1135,10 @@ find_dirsep(const char *p, const char *pend, int flags, rb_encoding *enc)
}
/* Remove escaping backslashes */
-static char *
-remove_backslashes(char *p, register const char *pend, rb_encoding *enc)
+static void
+remove_backslashes(char *p, rb_encoding *enc)
{
+ register const char *pend = p + strlen(p);
char *t = p;
char *s = p;
@@ -1157,8 +1157,6 @@ remove_backslashes(char *p, register const char *pend, rb_encoding *enc)
if (t != s)
memmove(t, s, p - s); /* move '\0' too */
-
- return p;
}
/* Globing pattern */
@@ -1177,7 +1175,6 @@ glob_make_pattern(const char *p, const char *e, int flags, rb_encoding *enc)
{
struct glob_pattern *list, *tmp, **tail = &list;
int dirsep = 0; /* pattern is terminated with '/' */
- int recursive = 0;
while (p < e && *p) {
tmp = GLOB_ALLOC(struct glob_pattern);
@@ -1188,14 +1185,13 @@ glob_make_pattern(const char *p, const char *e, int flags, rb_encoding *enc)
tmp->type = RECURSIVE;
tmp->str = 0;
dirsep = 1;
- recursive = 1;
}
else {
const char *m = find_dirsep(p, e, flags, enc);
int magic = has_magic(p, m, flags, enc);
char *buf;
- if (!magic && !recursive && *m) {
+ if (!magic && *m) {
const char *m2;
while (!has_magic(m+1, m2 = find_dirsep(m+1, e, flags, enc), flags, enc) &&
*m2) {
@@ -1252,22 +1248,23 @@ glob_free_pattern(struct glob_pattern *list)
}
static char *
-join_path(const char *path, int dirsep, const char *name, size_t namlen)
+join_path(const char *path, int dirsep, const char *name)
{
long len = strlen(path);
- char *buf = GLOB_ALLOC_N(char, len+namlen+(dirsep?1:0)+1);
+ long len2 = strlen(name)+(dirsep?1:0)+1;
+ char *buf = GLOB_ALLOC_N(char, len+len2);
if (!buf) return 0;
memcpy(buf, path, len);
if (dirsep) {
buf[len++] = '/';
}
- memcpy(buf+len, name, namlen);
- buf[len+namlen] = '\0';
+ buf[len] = '\0';
+ strlcat(buf+len, name, len2);
return buf;
}
-enum answer {UNKNOWN = -1, NO, YES};
+enum answer { YES, NO, UNKNOWN };
#ifndef S_ISDIR
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
@@ -1368,7 +1365,7 @@ glob_helper(
if (status) return status;
}
if (match_dir && isdir == YES) {
- char *tmp = join_path(path, dirsep, "", 0);
+ char *tmp = join_path(path, dirsep, "");
if (!tmp) return -1;
status = glob_call_func(func, tmp, arg, enc);
GLOB_FREE(tmp);
@@ -1386,30 +1383,15 @@ glob_helper(
if (dirp == NULL) return 0;
while (READDIR(dirp, enc, &STRUCT_DIRENT(entry), dp)) {
- char *buf;
+ char *buf = join_path(path, dirsep, dp->d_name);
enum answer new_isdir = UNKNOWN;
- int dotfile = 0;
-
- if (recursive && dp->d_name[0] == '.') {
- ++dotfile;
- if (!dp->d_name[1]) {
- /* unless DOTMATCH, skip current directories not to recurse infinitely */
- if (!(flags & FNM_DOTMATCH)) continue;
- ++dotfile;
- }
- else if (dp->d_name[1] == '.' && !dp->d_name[2]) {
- /* always skip parent directories not to recurse infinitely */
- continue;
- }
- }
- buf = join_path(path, dirsep, dp->d_name, NAMLEN(dp));
if (!buf) {
status = -1;
break;
}
- if (recursive && dotfile < ((flags & FNM_DOTMATCH) ? 2 : 1)) {
- /* RECURSIVE never match dot files unless FNM_DOTMATCH is set */
+ if (recursive && strcmp(dp->d_name, ".") != 0 && strcmp(dp->d_name, "..") != 0
+ && fnmatch("*", rb_usascii_encoding(), 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;
@@ -1468,8 +1450,7 @@ glob_helper(
break;
}
memcpy(name, (*cur)->str, len);
- if (escape)
- len = remove_backslashes(name, name+len-1, enc) - name;
+ if (escape) remove_backslashes(name, enc);
new_beg = new_end = GLOB_ALLOC_N(struct glob_pattern *, end - beg);
if (!new_beg) {
@@ -1485,7 +1466,7 @@ glob_helper(
}
}
- buf = join_path(path, dirsep, name, len);
+ buf = join_path(path, dirsep, name);
GLOB_FREE(name);
if (!buf) {
GLOB_FREE(new_beg);
@@ -1751,9 +1732,11 @@ dir_globs(long argc, VALUE *argv, int flags)
/*
* call-seq:
+ * Dir[ array ] -> array
* Dir[ string [, 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>.
*
*/
@@ -1792,7 +1775,7 @@ dir_s_aref(int argc, VALUE *argv, VALUE obj)
* <code>/ .* /x</code> in regexp. Note, this
* will not match Unix-like hidden files (dotfiles).
* In order to include those in the match results,
- * you must use something like <code>"{*,.*}"</code>.
+ * you must use something like "{*,.*}".
* <code>**</code>:: Matches directories recursively.
* <code>?</code>:: Matches any one character. Equivalent to
* <code>/.{1}/</code> in regexp.
@@ -1806,11 +1789,10 @@ dir_s_aref(int argc, VALUE *argv, VALUE obj)
* More than two literals may be specified.
* Equivalent to pattern alternation in
* regexp.
- * <code> \\ </code>:: Escapes the next metacharacter.
- * Note that this means you cannot use backslash
- * in windows as part of a glob,
- * i.e. <code>Dir["c:\\foo*"]</code> will not work,
- * use <code>Dir["c:/foo*"]</code> instead.
+ * <code>\</code>:: Escapes the next metacharacter.
+ * Note that this means you cannot use backslash in windows
+ * as part of a glob, i.e. Dir["c:\\foo*"] will not work
+ * use Dir["c:/foo*"] instead
*
* Dir["config.?"] #=> ["config.h"]
* Dir.glob("config.?") #=> ["config.h"]
@@ -1865,8 +1847,9 @@ static VALUE
dir_open_dir(int argc, VALUE *argv)
{
VALUE dir = rb_funcall2(rb_cDir, rb_intern("open"), argc, argv);
+ struct dir_data *dirp;
- rb_check_typeddata(dir, &dir_data_type);
+ TypedData_Get_Struct(dir, struct dir_data, &dir_data_type, dirp);
return dir;
}
@@ -1922,32 +1905,6 @@ dir_entries(int argc, VALUE *argv, VALUE io)
return rb_ensure(rb_Array, dir, dir_close, dir);
}
-static int
-fnmatch_brace(const char *pattern, VALUE val, void *enc)
-{
- struct brace_args *arg = (struct brace_args *)val;
- VALUE path = arg->value;
- rb_encoding *enc_pattern = enc;
- rb_encoding *enc_path = rb_enc_get(path);
-
- if (enc_pattern != enc_path) {
- if (!rb_enc_asciicompat(enc_pattern))
- return FNM_NOMATCH;
- if (!rb_enc_asciicompat(enc_path))
- return FNM_NOMATCH;
- if (!rb_enc_str_asciionly_p(path)) {
- int cr = ENC_CODERANGE_7BIT;
- long len = strlen(pattern);
- if (rb_str_coderange_scan_restartable(pattern, pattern + len,
- enc_pattern, &cr) != len)
- return FNM_NOMATCH;
- if (cr != ENC_CODERANGE_7BIT)
- return FNM_NOMATCH;
- }
- }
- return (fnmatch(pattern, enc, RSTRING_PTR(path), arg->flags) == 0);
-}
-
/*
* call-seq:
* File.fnmatch( pattern, path, [flags] ) -> (true or false)
@@ -1976,7 +1933,7 @@ fnmatch_brace(const char *pattern, VALUE val, void *enc)
* Behaves exactly like character sets in
* Regexp, including set negation
* (<code>[^a-z]</code>).
- * <code> \ </code>:: Escapes the next metacharacter.
+ * <code>\</code>:: Escapes the next metacharacter.
*
* <i>flags</i> is a bitwise OR of the <code>FNM_xxx</code>
* parameters. The same glob pattern and flags are used by
@@ -2002,7 +1959,7 @@ fnmatch_brace(const char *pattern, VALUE val, void *enc)
*
* 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_NOESCAPE makes '\' 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
@@ -2044,22 +2001,9 @@ file_s_fnmatch(int argc, VALUE *argv, VALUE obj)
StringValue(pattern);
FilePathStringValue(path);
- if (flags & FNM_EXTGLOB) {
- struct brace_args args;
-
- args.value = path;
- args.flags = flags;
- if (ruby_brace_expand(RSTRING_PTR(pattern), flags, fnmatch_brace,
- (VALUE)&args, rb_enc_get(pattern)) > 0)
- return Qtrue;
- }
- else {
- rb_encoding *enc = rb_enc_compatible(pattern, path);
- if (!enc) return Qfalse;
- if (fnmatch(RSTRING_PTR(pattern), enc, RSTRING_PTR(path), flags) == 0)
- return Qtrue;
- }
- RB_GC_GUARD(pattern);
+ if (fnmatch(RSTRING_PTR(pattern), rb_enc_get(pattern), RSTRING_PTR(path),
+ flags) == 0)
+ return Qtrue;
return Qfalse;
}
@@ -2086,22 +2030,6 @@ dir_s_home(int argc, VALUE *argv, VALUE obj)
return rb_home_dir(u, rb_str_new(0, 0));
}
-#if 0
-/*
- * call-seq:
- * Dir.exist?(file_name) -> true or false
- * Dir.exists?(file_name) -> true or false
- *
- * Returns <code>true</code> if the named file is a directory,
- * <code>false</code> otherwise.
- *
- */
-VALUE
-rb_file_directory_p()
-{
-}
-#endif
-
/*
* Objects of class <code>Dir</code> are directory streams representing
* directories in the underlying file system. They provide a variety of
@@ -2150,8 +2078,8 @@ Init_Dir(void)
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,"exist?", rb_file_directory_p, 1);
- rb_define_singleton_method(rb_cDir,"exists?", rb_file_directory_p, 1);
+ rb_define_singleton_method(rb_cDir,"exist?", rb_file_directory_p, 1); /* in file.c */
+ rb_define_singleton_method(rb_cDir,"exists?", rb_file_directory_p, 1); /* in file.c */
rb_define_singleton_method(rb_cFile,"fnmatch", file_s_fnmatch, -1);
rb_define_singleton_method(rb_cFile,"fnmatch?", file_s_fnmatch, -1);
@@ -2160,6 +2088,5 @@ Init_Dir(void)
rb_file_const("FNM_PATHNAME", INT2FIX(FNM_PATHNAME));
rb_file_const("FNM_DOTMATCH", INT2FIX(FNM_DOTMATCH));
rb_file_const("FNM_CASEFOLD", INT2FIX(FNM_CASEFOLD));
- rb_file_const("FNM_EXTGLOB", INT2FIX(FNM_EXTGLOB));
rb_file_const("FNM_SYSCASE", INT2FIX(FNM_SYSCASE));
}
diff --git a/dln.c b/dln.c
index e6b20d54e3..44410f75e4 100644
--- a/dln.c
+++ b/dln.c
@@ -75,7 +75,7 @@ void *xrealloc();
char *getenv();
#endif
-#ifdef __APPLE__
+#if defined(__APPLE__) && defined(__MACH__) /* Mac OS X */
# if defined(HAVE_DLOPEN)
/* Mac OS X with dlopen (10.3 or later) */
# define MACOSX_DLOPEN
@@ -228,7 +228,7 @@ load_header(int fd, struct exec *hdrp, long disp)
#define RELOC_TARGET_SIZE(r) ((r)->r_length)
#endif
-#if defined(__sun) && defined(__sparc)
+#if defined(sun) && defined(sparc)
/* Sparc (Sun 4) macros */
# undef relocation_info
# define relocation_info reloc_info_sparc
@@ -530,7 +530,7 @@ reloc_undef(int no, struct undef *undef, struct reloc_arg *arg)
{
int datum;
char *address;
-#if defined(__sun) && defined(__sparc)
+#if defined(sun) && defined(sparc)
unsigned int mask = 0;
#endif
@@ -539,7 +539,7 @@ reloc_undef(int no, struct undef *undef, struct reloc_arg *arg)
datum = arg->value;
if (R_PCREL(&(undef->reloc))) datum -= undef->base;
-#if defined(__sun) && defined(__sparc)
+#if defined(sun) && defined(sparc)
datum += undef->reloc.r_addend;
datum >>= R_RIGHTSHIFT(&(undef->reloc));
mask = (1 << R_BITSIZE(&(undef->reloc))) - 1;
@@ -763,11 +763,11 @@ load_1(int fd, long disp, const char *need_init)
while (rel < rel_end) {
char *address = (char*)(rel->r_address + block);
long datum = 0;
-#if defined(__sun) && defined(__sparc)
+#if defined(sun) && defined(sparc)
unsigned int mask = 0;
#endif
- if (rel >= rel_beg)
+ if(rel >= rel_beg)
address += hdr.a_text;
if (rel->r_extern) { /* Look it up in symbol-table */
@@ -798,7 +798,7 @@ load_1(int fd, long disp, const char *need_init)
} /* end .. is static */
if (R_PCREL(rel)) datum -= block;
-#if defined(__sun) && defined(__sparc)
+#if defined(sun) && defined(sparc)
datum += rel->r_addend;
datum >>= R_RIGHTSHIFT(rel);
mask = (1 << R_BITSIZE(rel)) - 1;
@@ -1318,28 +1318,13 @@ dln_load(const char *file)
# define RTLD_GLOBAL 0
#endif
-#ifdef __native_client__
- char* p, *orig;
- if (file[0] == '.' && file[1] == '/') file+=2;
- orig = strdup(file);
- for (p = file; *p; ++p) {
- if (*p == '/') *p = '_';
- }
-#endif
/* Load file */
if ((handle = (void*)dlopen(file, RTLD_LAZY|RTLD_GLOBAL)) == NULL) {
-#ifdef __native_client__
- free(orig);
-#endif
error = dln_strerror();
goto failed;
}
init_fct = (void(*)())(VALUE)dlsym(handle, buf);
-#ifdef __native_client__
- strcpy(file, orig);
- free(orig);
-#endif
#if defined __SYMBIAN32__
if (init_fct == NULL) {
init_fct = (void(*)())dlsym(handle, "1"); /* Some Symbian versions do not support symbol table in DLL, ordinal numbers only */
@@ -1400,7 +1385,7 @@ dln_load(const char *file)
}
#endif /* _AIX */
-#if defined(MACOSX_DYLD)
+#if defined(NeXT) || defined(MACOSX_DYLD)
#define DLN_DEFINED
/*----------------------------------------------------
By SHIROYAMA Takayuki Psi@fortune.nest.or.jp
@@ -1411,6 +1396,43 @@ dln_load(const char *file)
sunshine@sunshineco.com,
and... Miss ARAI Akino(^^;)
----------------------------------------------------*/
+#if defined(NeXT) && (NS_TARGET_MAJOR < 4)/* NeXTSTEP rld functions */
+
+ {
+ NXStream* s;
+ unsigned long init_address;
+ char *object_files[2] = {NULL, NULL};
+
+ void (*init_fct)();
+
+ object_files[0] = (char*)file;
+
+ s = NXOpenFile(2,NX_WRITEONLY);
+
+ /* Load object file, if return value ==0 , load failed*/
+ if(rld_load(s, NULL, object_files, NULL) == 0) {
+ NXFlush(s);
+ NXClose(s);
+ dln_loaderror("Failed to load %.200s", file);
+ }
+
+ /* lookup the initial function */
+ if(rld_lookup(s, buf, &init_address) == 0) {
+ NXFlush(s);
+ NXClose(s);
+ dln_loaderror("Failed to lookup Init function %.200s", file);
+ }
+
+ NXFlush(s);
+ NXClose(s);
+
+ /* Cannot call *init_address directory, so copy this value to
+ function pointer */
+ init_fct = (void(*)())init_address;
+ (*init_fct)();
+ return (void*)init_address;
+ }
+#else/* OPENSTEP dyld functions */
{
int dyld_result;
NSObjectFileImage obj_file; /* handle, but not use it */
@@ -1429,7 +1451,7 @@ dln_load(const char *file)
NSLinkModule(obj_file, file, NSLINKMODULE_OPTION_BINDNOW);
/* lookup the initial function */
- if (!NSIsSymbolNameDefined(buf)) {
+ if(!NSIsSymbolNameDefined(buf)) {
dln_loaderror("Failed to lookup Init function %.200s",file);
}
init_fct = NSAddressOfSymbol(NSLookupAndBindSymbol(buf));
@@ -1437,6 +1459,7 @@ dln_load(const char *file)
return (void*)init_fct;
}
+#endif /* rld or dyld */
#endif
#if defined(__BEOS__) || defined(__HAIKU__)
diff --git a/dln_find.c b/dln_find.c
index d9166fac39..7ce3a957ed 100644
--- a/dln_find.c
+++ b/dln_find.c
@@ -45,6 +45,14 @@ char *dln_argv0;
# include <strings.h>
#endif
+#ifndef xmalloc
+void *xmalloc();
+void *xcalloc();
+void *xrealloc();
+#endif
+
+#define free(x) xfree(x)
+
#include <stdio.h>
#if defined(_WIN32)
#include "missing/file.h"
diff --git a/dmydln.c b/dmydln.c
index 25872efc98..2c8aacc06a 100644
--- a/dmydln.c
+++ b/dmydln.c
@@ -4,6 +4,4 @@ void*
dln_load(const char *file)
{
rb_loaderror("this executable file can't load extension libraries");
-
- UNREACHABLE;
}
diff --git a/dmyext.c b/dmyext.c
index 34ea7a02f4..4d273f7faf 100644
--- a/dmyext.c
+++ b/dmyext.c
@@ -2,8 +2,3 @@ void
Init_ext(void)
{
}
-
-void
-Init_enc(void)
-{
-}
diff --git a/doc/.document b/doc/.document
deleted file mode 100644
index b48c0387a7..0000000000
--- a/doc/.document
+++ /dev/null
@@ -1,4 +0,0 @@
-*.rdoc
-ChangeLog*
-NEWS-*
-syntax
diff --git a/doc/ChangeLog-1.9.3 b/doc/ChangeLog-1.9.3
index 692b996335..d440e76965 100644
--- a/doc/ChangeLog-1.9.3
+++ b/doc/ChangeLog-1.9.3
@@ -1,12154 +1,3 @@
-Sun Jul 10 22:50:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (rmpd_power_by_big_decimal): fix
- precision treatment errors.
-
- * test/bigdecimal/test_bigdecimal.rb: add tests for the above change.
- fix precision treatment errors.
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_power): precision argument
- should be optional for its compatibility.
-
-Sun Jul 10 22:38:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (var_ref): distinguish vcall from local variable
- references. based on a patch by Michael Edgar michael.j.edgar
- AT dartmouth.edu. Bug #5002
-
-Sun Jul 10 21:51:29 2011 Koichi Sasada <ko1@atdot.net>
-
- * internal.h: add comments (cautions).
-
-Sun Jul 10 20:59:38 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit.rb: Add new class variable `@@testfile_prefix`.
- This is for changing test name prefix. (For testing)
-
- * test/testunit/tests_for_parallel/ptest_first.rb: Renamed from
- test_first.rb
-
- * test/testunit/tests_for_parallel/ptest_second.rb: Renamed from
- test_second.rb
-
- * test/testunit/tests_for_parallel/ptest_third.rb: Renamed from
- test_third.rb
-
- * test/testunit/tests_for_parallel/ptest_forth.rb: Renamed from
- test_forth.rb
-
- * test/testunit/tests_for_parallel/runner.rb: Remove misc.rb
-
- * test/testunit/tests_for_parallel/ptest_first.rb: ditto.
-
- * test/testunit/tests_for_parallel/ptest_second.rb: ditto.
-
- * test/testunit/tests_for_parallel/ptest_third.rb: ditto.
-
- * test/testunit/tests_for_parallel/ptest_forth.rb: ditto.
-
- * test/testunit/tests_for_parallel/misc.rb: Removed because no longer
- needed.
-
- * test/testunit/test_parallel.rb: Fix assertions for above.
-
-Sun Jul 10 16:57:08 2011 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c (vm_throw): check a class frame.
- Fixes Bug #4648.
- The patch is contributed by Kazuki Tsujimoto.
-
- * bootstraptest/test_proc.rb: add tests for above.
-
-Sun Jul 10 17:28:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (mutex_debug): use exit(EXIT_FAILURE) instead of
- exit(1).
- * thread_pthread.c (add_signal_thread_list): ditto.
- * thread.c (rb_thread_call_with_gvl): ditto.
- * util.c (Bug): ditto.
-
-Sun Jul 10 15:58:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/json: Merge json gem 1.5.4+ (f7f78896607b6f6226cd).
- [Bug #4700]
-
-Sun Jul 10 16:41:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * vm_core.h (typedef struct rb_vm_struct): create a new
- 'inhibit_thread_creation' field.
- * thread.c (rb_thread_terminate_all): set inhibit_thread_creation.
- * thread.c (thread_s_new): don't permit to create new thread
- if the VM is under destruction. Otherwise evil finalizer code
- can make SEGV. [Bug #4992][ruby-core:37858]
-
- * bootstraptest/test_objectspace.rb: new test for this fix.
-
-Sun Jul 10 16:06:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * signal.c (sigsegv): use abort() instead of exit() when nested
- SEGV was happen. Because unnested SEGV use abort().
- [Bug #5013][ruby-dev:44078]
-
-Sun Jul 10 15:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * load.c (rb_f_autoload): prevent to autoload for singleton
- classes. fixes [Bug #4886] [ruby-dev:43816]
-
- * bootstraptest/test_autoload.rb: add tests for the above change.
-
-Sun Jul 10 15:09:17 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit/assertions.rb: Import documentation patch by Justin
- Collins. [ruby-core:37225] [Feature #4903]
-
-Sun Jul 10 14:57:36 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: canonicalizes nth and sf.
-
-Sun Jul 10 14:13:50 2011 Koichi Sasada <ko1@atdot.net>
-
- * internal.h (rb_thread_call_with_gvl, rb_thread_call_without_gvl):
- make them visible as experimental C APIs. fixes Feature #4328.
-
-Sun Jul 10 12:18:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_power): support non-integral
- exponent. fixes [Bug #3271]
-
- * ext/bigdecimal/bigdecimal.c (rmpd_power_by_big_decimal): ditto.
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_power_op): add a function to
- only use for "**" operator.
-
- * test/bigdecimal/test_bigdecimal.rb: add a bunch of tests for the
- above changes.
-
- * ext/bigdecimal/bigdecimal.c (is_integer): add an utility function.
-
- * ext/bigdecimal/bigdecimal.c (is_negative): ditto.
-
- * ext/bigdecimal/bigdecimal.c (is_positive): ditto.
-
- * ext/bigdecimal/bigdecimal.c (is_zero): ditto.
-
- * ext/bigdecimal/bigdecimal.c (is_one): ditto.
-
- * ext/bigdecimal/bigdecimal.c (is_even): ditto.
-
-Sun Jul 10 12:08:39 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * compile.c (when_vals): when a string literal is written on when
- clause, skip string creation to make it faster. [ruby-dev:44068]
- [Feature #5000]
-
-Sun Jul 10 11:35:29 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * parse.y (reduce_nodes_gen): NODE_RETURN in rescue body must not be
- reduced when there is an else clause. This caused bizarre behavior
- in [Bug #4473] [ruby-core:35629] [ruby-core:37884].
-
-Sun Jul 10 09:46:14 2011 Masaya Tarui <tarui@ruby-lnag.org>
-
- * range.c (range_max): fix behavior with excluded end value.
- [Bug #4591]
-
-Sun Jul 10 09:13:18 2011 Eric Hodel <drbrain@segment7.net>
-
- * NEWS: Fix RubyGems version. [Ruby 1.9 - Bug #5004]
-
-Sat Jul 9 20:01:59 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * internal.h: rb_rational_reciprocal is defined in rational.c.
-
-Sat Jul 9 19:48:31 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * internal.h: added declarations.
- * complex.c: followed the above change.
-
-Sat Jul 9 17:24:41 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * NEWS: bigdecimal is not a builtin.
-
-Sat Jul 9 17:17:53 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: some improvements for performance.
-
-Sat Jul 9 16:56:01 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * atomic.h (ATOMIC_OR): _InterlockedOr is unavailable in VC6.
-
- * numeric.c (ULLONG_MAX): fallback definition.
-
-Sat Jul 9 15:59:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/win32.c (rb_w32_{read,write}): should be signed.
- Bug #5001
-
-Sat Jul 9 14:02:20 2011 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
-
- * lib/cgi/core.rb: fix multipart form parsing bug. [Bug #3866]
-
-Sat Jul 9 11:41:03 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * lib/matrix.rb: Add Vector#normalize [ruby-dev:43829]
-
-Sat Jul 9 09:25:06 2011 Eric Hodel <drbrain@segment7.net>
-
- * enumerator.c: Remove "enumeration sequenced by".
- [Ruby 1.9 - Bug #4757]
-
-Sat Jul 9 09:14:56 2011 Eric Hodel <drbrain@segment7.net>
-
- * io.c: Note that methods other than IO#gets may increase IO#lineno.
- [Ruby 1.9 - Bug #4902]
-
-Sat Jul 9 08:39:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (RUN_OPT): disable gems.
-
-Sat Jul 9 08:37:05 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (rb_io_close): close(2) on a fd which is being read by
- another thread causes deadlock on Mac OS X 10.5
-
-Fri Jul 8 21:20:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * addr2line.c: use USE_ELF instead of __ELF__ because Solaris
- doesn't define it. USE_ELF is already provided by configure.
- patched by Naohisa Goto. [ruby-dev:44066] [Bug #4998]
-
- * addr2line.h: ditto.
-
- * vm_dump.c: ditto.
-
-Fri Jul 8 16:40:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/json/parser/parser.rl (convert_encoding): should not modify
- the argument.
-
- * ext/json/parser/parser.rl (convert_encoding): no needs to use
- force_encoding.
-
-Fri Jul 8 15:53:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * error.c (rb_bug): get rid of segfault after all threads
- disposed.
-
-Fri Jul 8 15:01:06 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/openssl/ossl.h: include openssl/e_os2.h before checking the
- definition of OPENSSL_SYS_WIN32.
-
-Fri Jul 8 14:40:39 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (wunlink): reverted a part of r32426. it was mistakenly
- mixed.
-
-Fri Jul 8 14:29:47 2011 Narihiro Nakamura <authornari@gmail.com>
-
- * configure.in: can't subtract void *.
-
-Fri Jul 8 14:33:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/Makefile.sub (config.h): define GC_MARK_STACKFRAME_WORD.
- fixed build problem of r32438. the value (30) is temporary value.
- maybe it's enough by 20~24 according to my observation.
-
-Fri Jul 8 13:47:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_mutex_unlock_all): folded into
- rb_threadptr_unlock_all_locking_mutexes.
- * thread.c (rb_threadptr_unlock_all_locking_mutexes) ditto.
-
-Fri Jul 8 13:36:02 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (thread_unlock_all_locking_mutexes): rename to
- rb_threadptr_unlock_all_locking_mutexes and remove static.
- * vm_core.h: add rb_threadptr_unlock_all_locking_mutexes declaration.
- * thread.c (thread_start_func_2): adjust the above rename.
-
- * eval.c (ruby_cleanup): call rb_threadptr_unlock_all_locking_mutexes
- again after finalizer. [Bug #4988] [ruby-dev:44049]
-
-Fri Jul 8 13:06:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * cont.c (FIBER_MACHINE_STACK_ALLOCATION_SIZE): Fiber stack size
- don't need to keep multiple number of sizeof(VALUE).
-
-Fri Jul 8 11:39:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (sudo-precheck): true command is not standard on
- Windows.
-
-Fri Jul 8 10:39:52 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (gvl_destroy): fix cond_t leak.
-
-Fri Jul 8 09:17:59 2011 Eric Hodel <drbrain@segment7.net>
-
- * gc.c: Improve documentation
-
-Thu Jul 7 23:35:31 2011 Narihiro Nakamura <authornari@gmail.com>
-
- * gc.c: change water_mark value that may call
- gc_mark(lev <= GC_LEVEL_MAX) in gc_mark().
- In ruby_stack_check(), water_mark is a value that may call some
- C function. Fixes Bug #3781
-
- * configure.in: define GC_MARK_STACKFRAME_WORD that approximate
- size of gc_mark() and gc_mark_children() stackframes.
-
-Thu Jul 7 17:55:05 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/testunit/test_parallel.rb (TestParallelWorker#teardown): wait
- the child process even if the communication pipe is broken.
-
-Thu Jul 7 15:44:42 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * encoding.c (rb_enc_set_index, rb_enc_associate_index): should
- check if frozen.
-
- * parse.y (rb_intern3), ruby.c (process_options, ruby_script):
- defer freezing after associating encodings.
-
-Thu Jul 7 15:16:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * numeric.c (rb_num2ull): use own switch sentence.
- Current implementation can't convert 18446744073709551615.
-
-Thu Jul 7 06:56:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * cont.c (FIBER_STACK_FLAGS): workaround fix for r32420 on FreeBSD.
-
-Thu Jul 7 06:46:12 2011 Eric Hodel <drbrain@segment7.net>
-
- * benchmark/driver.rb: Add difference column to report that averages
- across all runs of a benchmark. [Ruby 1.9 - Feature #4982]
-
-Thu Jul 7 06:19:38 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems.rb: Reduce requires to improve `make benchmark`.
- [#4962]
- * lib/rubygems/specification.rb: Delay initialization of rubygems
- until require is called.
-
-Thu Jul 7 04:31:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (arg): rescue_mod is in inverse order from other
- modifiers. patched by michael.j.edgar AT dartmouth.edu at
- [ruby-core:36248]. fixed #4716.
-
-Thu Jul 7 00:40:16 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (kill): check that the process exited or not before
- terminating it. [Bug #4943]
-
-Wed Jul 6 23:13:19 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (opt_call_args): allow trailing comma after assoc
- argument e.g. 'foo(bar:1,)'. fixed #3456
-
-Wed Jul 6 22:11:12 2011 Shota Fukumori <sorah@tubusu.net>
-
- * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Validate date in
- "Date:" header
-
-Wed Jul 6 21:29:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * cont.c (fiber_machine_stack_alloc): cleanup pointer arithmetic.
- "size/sizeof(VALUE)" is ugly and easy confusing.
- * cont.c (fiber_initialize_machine_stack_context): ditto.
-
-Wed Jul 6 21:24:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * cont.c (fiber_machine_stack_alloc): fix mprotect misuse. A stack
- guard page should have PROT_NONE.
- * cont.c (fiber_initialize_machine_stack_context):
- th->machine_stack_maxsize shouldn't be included guard pages size.
- [Bug #4983][ruby-dev:44043]
-
-Wed Jul 6 21:23:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * cont.c (fiber_machine_stack_alloc): use MAP_STACK if it's provided.
-
-Wed Jul 6 21:22:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * cont.c (fiber_machine_stack_alloc): use MAP_FAILED instead of -1.
-
-Wed Jul 6 21:21:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * cont.c (fiber_machine_stack_alloc): remove unnecessary cast.
-
-Wed Jul 6 18:10:13 2011 Shota Fukumori <sorah@tubusu.net>
-
- * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Adding space after
- comma.
-
- * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Remove variable
- `now`. Suppress warning.
-
-Wed Jul 6 12:18:09 2011 Shota Fukumori <sorah@tubusu.net>
-
- * test/cgi/test_cgi_header.rb(test_cgi_header_nph): Fix bug depends to
- time. The test fails if time past 1 second in line 136-145
-
-Tue Jul 5 15:28:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (parser_here_document): should dispatch heredoc_end
- scanner event on an empty here document. fixed Bug#4543.
-
-Tue Jul 5 13:49:26 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * addr2line.c: fix r32407 to check HAVE_ALLOCA_H.
-
-Tue Jul 5 14:05:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/webrick/httpauth/digestauth.rb (_authenticate):
- Literal texts in HTTP ABNF is case-insensitive (RFC2616 2.1),
- and a sample implementation in RFC2617 also ignores the case
- of algorithms. So now this ignores those cases.
- [ruby-dev:43965] [Feature #4936]
-
- * lib/webrick/httpauth/digestauth.rb (initialize):
- Because of above, opera_hack is useless and removed.
-
-Tue Jul 5 01:30:01 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * thread_pthread.c (native_sleep): cut the waiting time up to
- 100,000,000 because Solaris cond_timedwait() return EINVAL if an
- argument is greater than current_time + 100,000,000. This is
- considered as a kind of spurious wakeup. The caller to native_sleep
- should care about spurious wakeup.
-
-Tue Jul 5 01:24:26 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * cont.c: disable FIBER_USE_NATIVE on Solaris because resuming any
- Fiber caused SEGV. I haven't follow up the issue deeply, but it
- works when disabling the feature.
-
-Tue Jul 5 01:22:46 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * addr2line.c: include <alloca.h> to fix a build issue on Solaris.
-
-Tue Jul 5 00:49:05 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * ext/coverage/coverage.c: resurrect r32071 + add GC guard for
- rb_coverages. [ruby-core:37352] [Bug #4927]
- [ruby-core:36539] [Feature #4796]
-
- * test/coverage/test_coverage.rb resurrect r32071.
-
-Mon Jul 4 22:24:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (get_stack): For NetBSD/FreeBSD, use
- pthread_attr_getstack() if possible. and, remove an assumption
- of stack growing direction.
-
-Mon Jul 4 20:42:31 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * ext/coverage/coverage.c: revert r32071. The commit caused SEGV on
- some minor nonfree OS. I have no means of debugging the bug. My
- personal opinion is that such OS should be unsupported unless there
- is an active maintainer. [ruby-core:37352]
-
- * test/coverage/test_coverage.rb: ditto.
-
-Mon Jul 4 07:14:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * thread_pthread.c (get_stack): the return address of get_stack
- must be the highest address of the current thread's stack.
-
-Mon Jul 4 06:37:22 2011 Koichi Sasada <ko1@atdot.net>
-
- * include/ruby/intern.h, thread_pthread.c (rb_reserved_fd_p,
- RB_RESERVED_FD_P): added. This C API is to limit to access
- fds which are used by RubyVM internal. In this version of
- CRuby, return 1 if fd is communication pipe.
- If your application needs to close all file descriptors to
- present resource leak, skip internal fds using this C API.
- We also define a macro RB_RESERVED_FD_P(fd). So you can write
- #ifndef RB_RESERVED_FD_P
- #define RB_RESERVED_FD_P(fd) 0
- #endif
- for Ruby 1.9.2 or previous version to write compatible extensions.
- See [ruby-core:37727]
-
- * thread_win32.c (rb_reserved_fd_p): added (return 0 for any fds).
-
- * io.c (rb_io_initialize): raise ArgumentError if given fd is reserved by Ruby.
-
-Sun Jul 3 23:43:56 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * ext/extmk.rb (extmake): suppresses outputs from extconf.rb.
- (extmake) warns a failure in extconf.rb.
-
-Sun Jul 3 13:44:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c (ary_reject_bang): should not remove elements which are
- not yielded. [Bug #2545]
-
-Sun Jul 3 06:10:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (get_stack): pthread_attr_getstack() doesn't
- return stack start address, but stack base address. Thus,
- we need to add stack size for getting stack start address.
- And, we don't have to decrease guard size twice.
- * thread_pthread.c (thread_start_func_1): don't use inaccurate
- stack start guess if native_thread_init_stack() can be used.
- [Bug #1813] [ruby-core:24540]
-
-Sun Jul 3 04:50:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (get_stack): add to a care of guard page on Mac
- OS X. [Bug #1813] [ruby-core:24540]
- * signal.c (ruby_signal): SIGBUS use alternative stack too.
- * signal.c (sigbus): On Mac, thread stack overflow makes SIGBUS
- instead of SIGSEGV. thus, added stackoverflow check.
- * signal.c (default_handler): get rid of compilation warning.
- * signal.c (Init_signal): ditto.
-
-Sat Jul 02 08:59:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * test/openssl/test_ocsp.rb
- * test/openssl/test_x509_cert.rb: Perform SHA-256 tests only if
- supported by the available OpenSSL version. Versions < 0.9.8 don't
- support it. [ruby-core:37724]
-
-Sat Jul 2 07:17:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c (rb_ary_reject_bang, rb_ary_delete_if): rejected
- elements should be removed. fixed [Bug #2545]
-
-Sat Jul 2 01:57:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * NEWS: remove a description of Kernel#respond_to? because it has
- been reverted at revision 28564.
-
-Sat Jul 2 00:58:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * NEWS: describe a change of multiplication of Bignum.
-
-Fri Jul 1 18:52:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * benchmark/bm_app_erb.rb: increase loop count. too short
- measurement time makes less accuracy.
- * benchmark/bm_app_factorial.rb: ditto.
- * benchmark/bm_app_mandelbrot.rb: ditto.
- * benchmark/bm_app_strconcat.rb: ditto.
-
- * benchmark/bm_io_file_create.rb: ditto.
- * benchmark/bm_io_file_read.rb: ditto.
- * benchmark/bm_io_file_write.rb: ditto.
-
- * benchmark/bm_so_concatenate.rb: ditto.
- * benchmark/bm_so_lists.rb: ditto.
- * benchmark/bm_so_matrix.rb: ditto.
- * benchmark/bm_so_random.rb: ditto.
- * benchmark/bm_so_sieve.rb: ditto.
-
- * benchmark/bm_vm_thread_mutex1.rb: ditto.
- * benchmark/bm_vm_thread_mutex2.rb: ditto.
- * benchmark/bm_vm_thread_mutex3.rb: ditto.
-
- * benchmark/bm_vm1_block.rb: cleanup.
- * benchmark/bm_vm1_const.rb: cleanup.
- * benchmark/bm_vm1_ensure.rb: cleanup.
- * benchmark/bm_vm1_ivar.rb: cleanup.
- * benchmark/bm_vm1_length.rb: cleanup.
- * benchmark/bm_vm1_neq.rb: cleanup.
- * benchmark/bm_vm1_not.rb: cleanup.
- * benchmark/bm_vm1_rescue.rb: cleanup.
- * benchmark/bm_vm1_simplereturn.rb: cleanup.
- * benchmark/bm_vm1_swap.rb: cleanup.
-
- * benchmark/bm_vm2_array.rb: cleanup.
- * benchmark/bm_vm2_case.rb: cleanup.
- * benchmark/bm_vm2_defined_method.rb: cleanup.
- * benchmark/bm_vm2_eval.rb: cleanup.
- * benchmark/bm_vm2_method.rb: cleanup.
- * benchmark/bm_vm2_mutex.rb: cleanup.
- * benchmark/bm_vm2_poly_method.rb: cleanup.
- * benchmark/bm_vm2_poly_method_ov.rb: cleanup.
- * benchmark/bm_vm2_proc.rb: cleanup.
- * benchmark/bm_vm2_regexp.rb: cleanup.
- * benchmark/bm_vm2_send.rb: cleanup.
- * benchmark/bm_vm2_super.rb: cleanup.
- * benchmark/bm_vm2_unif1.rb: cleanup.
- * benchmark/bm_vm2_zsuper.rb: cleanup.
-
- * benchmark/bm_vm_thread_alive_check1.rb: cleanup.
-
-Fri Jul 1 15:23:00 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * lib/matrix: Add LUP decomposition
-
-Fri Jul 1 15:21:14 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * lib/matrix.rb: Allow non integer exponents for Matrix#**
-
-Fri Jul 1 15:13:25 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * lib/matrix: Add Eigenvalue Decomposition
-
-Fri Jul 1 15:10:22 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * lib/matrix: Add Matrix#round
-
-Fri Jul 1 11:41:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (tr_trans): free heap ptr when the str is not embedded.
- patched by Eric Wong. [Bug #4956] [ruby-core:37708]
-
-Fri Jul 1 11:07:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (do_select): fix memory leak.
- Patch by Eric Wong. Thank you! [Bug #4953] [ruby-core:37702]
-
-Fri Jul 1 08:21:28 2011 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c (vm_getivar): check vm state version
- to invalidate inline cache (ivar index).
- fixes Bug #4926.
-
- * vm_insnhelper.c (vm_setivar): ditto.
-
-Fri Jul 1 08:03:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * error.c, thread_pthread.c (WRITE_CONST): suppress warnings
- `ignoring return value'.
-
-Fri Jul 1 06:41:36 2011 Koichi Sasada <ko1@atdot.net>
-
- * thread.c (rb_threadptr_check_signal): only wake up main thread.
-
- * thread.c (rb_threadptr_execute_interrupts_common): check signal
- delivery if it is main thread.
- fixes [ruby-dev:44005] [Ruby 1.9 - Bug #4950]
-
- * bootstraptest/test_fork.rb: add a test for above.
-
- * signal.c (rb_get_next_signal): skip if signal_buff is empty.
- (check signal_buff.size first)
-
- * vm_core.h: remove unused variable rb_thread_t::exec_signal.
-
- * thread.c (rb_thread_check_trap_pending): check
- rb_signal_buff_size() because rb_thread_t::exec_signal
- is no longer available.
-
-Fri Jul 1 03:28:25 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * class.c (Init_class_hierarchy): should name BasicObject
- explicitly.
-
- * variable.c (rb_const_defined_0): should not check for
- superclasses as const_get.
-
-Fri Jul 1 03:24:03 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: mathn is still alive (should die soon).
-
-Thu Jun 30 23:50:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * misc/ruby-mode.el (ruby-indent-beg-re): Fix broken regular
- expression. Fixes #4546
-
-Thu Jun 30 23:43:30 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl.c/.h: Added ossl_x509_name_sk2ary.
- * ext/openssl/ossl.c: Replaced ossl_x509_ary2k by generic macro to
- simplify future conversions.
- * ext/openssl/ossl_ssl.c: Implement SSLSocket#client_ca.
- * test/openssl/test_ssl.rb: Add test for SSLSocket#client_ca.
- Thanks to Ippei Obayashi for providing the patch!
- [ Ruby 1.9 - Feature #4481 ] [ruby-core:35461]
-
-Thu Jun 30 22:38:58 2011 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/bm_vm2_defined_method.rb: added to measure performance of
- bmethod (method defined by define_method()).
-
-Thu Jun 30 22:17:04 2011 Koichi Sasada <ko1@atdot.net>
-
- * vm_insnhelper.c (vm_call_bmethod): fix to hook call/return event
- for methods defined by define_method(). fixes Bug #4613.
-
- * thread.c (call_trace_proc): Fix to skip if class is not given (0).
- Note that ID and Class object are passed for call/return event
- if the called method was defined by define_method().
- If you are author of tracer/profiler/debugger, this may be an
- important change. You should check passed class as zero or
- non-zero instead of checking the event type.
-
- * test/ruby/test_settracefunc.rb: add a test for above.
-
-Thu Jun 30 21:18:35 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
-
- * configure.in: Add warnflags for XL/C on AIX during configure
- to avoid [Bug #3971]. See [ruby-core:32859]
-
-Thu Jun 30 21:16:04 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c (m_ajd): refers a constant.
-
-Thu Jun 30 20:54:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/io/console/io-console.gemspec: spin-off gem for 1.9.2.
-
-Thu Jun 30 20:36:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: trivial changes.
-
-Thu Jun 30 20:12:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/test_module.rb: tests for [Bug #3422] and [Bug #3423].
-
-Thu Jun 30 20:03:39 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: modified doc.
-
-Thu Jun 30 19:09:19 2011 Koichi Sasada <ko1@atdot.net>
-
- * thread_pthread.c (thread_timer): ignore unknown errno.
- (we observed that select(2) was canceled by errno=514 on
- boron == Linux/Xen environment)
-
-Thu Jun 30 17:33:25 2011 Koichi Sasada <ko1@atdot.net>
-
- * ext/objspace/objspace.c (ObjectSpace.count_tdata_objects):
- Fix rdoc. Fixes Bug #3892.
-
- * ext/objspace/objspace.c (ObjectSpace.count_tdata_objects):
- Change key type if the klass of a object is zero (internal object).
- Read rdoc for details.
-
- * internal.h: export rb_objspace_data_type_name().
-
-Thu Jun 30 17:25:08 2011 Koichi Sasada <ko1@atdot.net>
-
- * thread_pthread.c (ping_signal_thread_list, thread_timer):
- fix to keep polling state if there are any ping-tasks.
-
-Thu Jun 30 12:25:34 2011 Koichi Sasada <ko1@atdot.net>
-
- * thread_pthread.c (rb_thread_create_timer_thread): allocate
- machine stack for the timer thread at least 12KB. FreeBSD 8.2
- AMD64 causes machine stack overflow (SIGSEGV) only with
- PTHREAD_STACK_MIN (maybe defined as 2KB).
-
-Thu Jun 30 09:36:37 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/weakref.rb: Attach documentation to WeakRef and add missing
- documentation
-
-Thu Jun 30 09:30:14 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/yaml.rb: Document toplevel YAML and YAML::ENGINE to describe
- Psych vs Syck engines.
-
-Thu Jun 30 09:21:52 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/cmath.rb: Hide handle_no_method_error from RDoc.
- * error.c: Document or hide undocumented error classes.
-
-Thu Jun 30 07:49:04 2011 Eric Hodel <drbrain@segment7.net>
-
- * hash.c: Document ENV
-
-Thu Jun 30 06:37:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby.c (ruby_init_loadpath_safe): ensure RUBYLIB_PREFIX stored
- before RUBYLIB, even if MANGLED_PATH is enabled. fixed #1679.
- MANGLED_PATH is disabled by the default and will be removed
- completely in the future.
-
-Thu Jun 30 06:32:21 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/drb/drb.rb: Hide deprecated toplevel DRb constants.
-
-Thu Jun 30 06:17:02 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/cmath.rb (CMath.log): second argument: b can be nil.
-
-Thu Jun 30 06:23:28 2011 Eric Hodel <drbrain@segment7.net>
-
- * thread.c (ruby_thread_s_pass): Fix typo.
-
-Thu Jun 30 06:16:53 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc: Update to RDoc 3.8 which contains fixes for documentation
- in trunk.
-
-Thu Jun 30 02:53:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_threadptr_execute_interrupts_common): remove
- meaningless native_thread_yield(). It never close a race.
-
-Thu Jun 30 02:41:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_thread_schedule_limits): minor optimization.
- eliminate machine context saving when running time is enough small.
-
-Thu Jun 30 02:28:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_thread_schedule_rec): move interrupt_flag check to
- rb_thread_schedule().
- And also rename to rb_thread_schedule_limits() and remove
- sched_depth argument. It's no longer called recursive.
- * thread.c (rb_thread_schedule): add to check interrupt_flag as
- above explained.
-
- * thread.c (rb_threadptr_execute_interrupts_rec): rename to
- rb_threadptr_execute_interrupts_common() and remove sched_depth
- argument. It's no longer called recursive.
-
- * thread.c (rb_thread_sleep): adapt the renaming.
- * thread.c (rb_threadptr_execute_interrupts): ditto.
- * thread.c (rb_thread_execute_interrupts): ditto.
-
-Thu Jun 30 01:31:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (thread_s_pass): change RDoc description and remove
- a sample code. The actual implementation never behave as explained by
- an example. It's a documentation bug.
-
-Thu Jun 30 00:54:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_thread_stop): change RDoc sample code. The old
- example is buggy and may cause deadlock. The patch is
- suggested by Heesob Park <phasis@gmail.com>. Thank you!
- [Bug #3606][ruby-core:31454]
-
-Thu Jun 30 00:49:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_thread_wakeup): change RDoc sample code. The old
- example is buggy and may not display anything by a race.
- The patch is suggested by Heesob Park <phasis@gmail.com>.
- Thank you! [Bug #3606][ruby-core:31454]
-
-Thu Jun 30 00:43:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_thread_run): change RDoc. The old example is buggy
- and may cause deadlock. The patch is suggested by Heesob Park
- <phasis@gmail.com>. Thank you! [Bug #3606][ruby-core:31454]
-
-Thu Jun 30 00:30:15 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
-
- * lib/cmath.rb: make same exception for Math. fix [Bug #3137].
-
-Thu Jun 30 00:03:20 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
-
- * lib/irb/completion.rb: complement correctly string literal. fix
- [Bug #1145].
-
-Wed Jun 29 23:42:51 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: avoided using timev.
- * ext/date/date_strftime.c: ditto.
- * ext/date/date_tmx.h: ditto.
-
-Wed Jun 29 23:17:57 2011 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * ext/openssl/ossl.h (OPENSSL_SYS_WIN32): support for mingw(msys).
-
-Wed Jun 29 23:09:14 2011 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * ext/tk/extconf.rb (intptr_t, uintptr_t): support for the latest ActiveTcl with mingw.
-
-Wed Jun 29 22:49:10 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
-
- * lib/irb/cmd/help.rb: support RDoc 3.7. fix [Bug #3760].
-
-Wed Jun 29 22:04:14 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * lib/tracer.rb: Tracer.on only if required by -r command-line option.
- and consider --disable-gems option.
- * test/test_tracer.rb: add tests for it.
-
-Wed Jun 29 13:55:36 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * variable.c (rb_const_get_0): should not look for superclasses if
- the second optional argument is given for #const_get().
- fix [Bug #3422] [Bug #3423]
-
-Wed Jun 29 12:07:27 2011 Eric Hodel <drbrain@segment7.net>
-
- * math.c: Attach documentation for Math.
- * object.c: Document NIL, TRUE, FALSE.
- * io.c: Improve grammar in ARGF comment. Document STDIN/OUT/ERR.
- Document ARGF global constant.
- * lib/rake: Hide deprecated toplevel constants from RDoc (import from
- rake trunk).
- * lib/thwait.rb: Document ThWait.
- * lib/mathn.rb: Hide Math redefinition from RDoc
- * lib/sync.rb: Add a basic comment for Sync_m, Synchronizer_m, Sync,
- Synchronizer.
- * parse.y: Document SCRIPT_LINES__.
- * hash.c: Document ENV class and global constant.
- * vm.c: Document TOPLEVEL_BINDING.
- * version.c: Document RUBY_* constants.
- * ruby.c: Document DATA and ARGV.
-
-Wed Jun 29 10:13:12 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * lib/matrix.rb: Matrix.zero can build rectangular matrices.
- Vector#r should be called #magnitude
-
-Wed Jun 29 10:11:08 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * lib/matrix.rb: Add Matrix#diagonal?, hermitian?, normal?,
- orthogonal?
- permutation?, symmetric?, {lower|upper}triangular?, unitary?, zero?
-
-Wed Jun 29 10:09:35 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * lib/matrix.rb: Specialize Matrix#find_index to return [row, col]
- and accept the same optional argument as #each
-
-Wed Jun 29 10:07:32 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * lib/matrix.rb: Matrix#each{_with_index} can iterate over a subset
- of the Matrix
-
-Wed Jun 29 06:21:02 2011 Koichi Sasada <ko1@atdot.net>
-
- * thread_pthread.c (native_stop_timer_thread): skip to close
- communication pipe to avoid timing bug (process termination timing).
- The communication pipe will closed by OS.
-
-Wed Jun 29 06:09:54 2011 Koichi Sasada <ko1@atdot.net>
-
- * error.c (rb_async_bug_errno): async-safe bug report function.
- In timer thread, signal handler should use it.
- The patch is contributed by Eric Wong <normalperson@yhbt.net>.
- Refs: [ruby-core:37644] and [ruby-core:37647]
-
- * thread_pthread.c: use rb_async_bug_errno().
- And replace all fprintf() to write().
-
- * internal.h (rb_async_bug_errno): add decl. of above func.
-
-Tue Jun 28 23:46:08 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
-
- * lib/tracer.rb: count only non-internal libraries in stack trace,
- ignoring custom_require.
-
-Tue Jun 28 21:44:58 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
-
- * lib/irb/ruby-lex.rb: recognize '\char' in ruby statement.
-
-Tue Jun 28 20:39:29 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * lib/debug.rb (var_list): Command 'var *' did not work on 1.9(!).
- global_variables, local_variables, and instance_variables returns
- Symbols from 1.9 and need to stringify before evaling it.
- See #4931.
-
-Tue Jun 28 19:23:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * signal.c: Now, USE_TRAP_SIGMASK depend on HAVE_PTHREAD_SIGMASK.
- The code have already depended on pthread_sigmask since r27464.
-
-Tue Jun 28 15:09:21 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/benchmark.rb: merge eregon/benchmark.
- https://github.com/eregon/ruby/tree/benchmark
- patched by Benoit Daloze. [ruby-core:37593] [Bug #4940]
-
- * lib/benchmark (Benchmark#bmbm): bmbm should be consistent with bm
- for the return value.
-
- * test/benchmark: remove preemptive test instead of skipping
- I removed the preemptive test I wrote for Feature #4197.
- I'll add it back when the implementation will be able to satisfy it.
-
- * lib/benchmark (Benchmark#bmbm): remove useless explicit call,
- #format is an alias of #to_s test/benchmark: add a test for
- format of long time.
-
- * lib/benchmark: fix label width: always add 1 to ensure there is a
- space delimiter even with times over 100s
- When I asked for Feature #4197, I wanted to make delimiting spaces
- consistent for #bm and #bmbm.
- But with times over 100s, the output contains no space between the
- label and the first time (user).
- Now both ensure there is always a space, even if that means 3 spaces
- with times under 10s (because it is formatted as %10.6f)
-
- * test/benchmark: let labels be a constant
- lib/benchmark (Benchmark#realtime): avoid creating an unused Proc
- lib/benchmark (Benchmark#benchmark): use ensure clause to restore
- STDOUT.sync, as in #bmbm
-
-Tue Jun 28 13:41:51 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * thread_win32.c (native_stop_timer_thread): fixed commit miss of
- r32244. grep sources before changing the signature of a function.
-
-Tue Jun 28 11:49:14 2011 Koichi Sasada <ko1@atdot.net>
-
- * thread_pthread.c (consume_communication_pipe):
- Make "buff" as static. (Maybe) "buff" can be shared between
- any caller (any threads) because no one use the read values.
- "buff" (1024 byte) on stack may cause stack overflow on
- several environment (we found a crash on FreeBSD).
- And remove const value "buff_size", and define CCP_READ_BUFF_SIZE
- macro.
-
-Tue Jun 28 11:45:30 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rake: Update rake to fix some bugs and hide deprecated features
- from RDoc.
- * lib/rake/version.rb: Bump version to 0.9.2.1 to distinguish it from
- the released version.
- * NEWS: ditto
-
-Tue Jun 28 11:17:28 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc: Update to RDoc 3.7 (final)
- * NEWS: ditto
-
-Tue Jun 28 10:18:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * process.c (rb_daemon): fix wrong #endif position.
-
-Tue Jun 28 07:50:32 2011 Eric Hodel <drbrain@segment7.net>
-
- * object.c (Init_Object): Teach RDoc what Init_class_hierarchy does to
- hook up ri for BasicObject, Object, Module and Class.
-
-Tue Jun 28 05:03:32 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * thread.c (rb_thread_local_aref): RDoc fix. Thread#[] example
- had a race. See #4480.
-
-Tue Jun 28 01:22:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (BigMath_s_log): move BigMath.log from
- bigdecimal/math.rb.
-
- * ext/bigdecimal/lib/bigdecimal/math.rb: ditto.
-
- * test/bigdecimal/test_bigdecimal.rb: move test for BigMath.log from
- test/bigdecimal/test_bigmath.rb.
-
- * test/bigdecimal/test_bigmath.rb: ditto.
-
-Tue Jun 28 01:19:52 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
-
- * lib/irb/ruby-lex.rb: fix [Bug #4232].
-
-Tue Jun 28 00:14:13 2011 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-
- * lib/drb/drb.rb: fix [Bug #4409]. add DRbServer#here?.
-
- * test/drb/test_drb.rb: ditto.
-
- * test/drb/drbtest.rb: ditto.
-
- * test/drb/ut_eq.rb: ditto.
-
-Tue Jun 28 00:08:43 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
-
- * lib/irb/workspace.rb: fix BUG#4793.
-
-Mon Jun 27 22:06:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (consume_communication_pipe): don't use C99
- style variable length array.
-
-Mon Jun 27 22:04:27 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (consume_communication_pipe): change return
- type to void. caller doesn't use it.
-
-Mon Jun 27 21:29:50 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.h (rb_global_vm_lock_struct): add volatile to
- gvl->waiting. now thread_timer() access it w/o lock.
-
-Mon Jun 27 21:16:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c: s/__gvl_acquire/gvl_acquire_common/ and
- s/__gvl_release/gvl_release_common/.
-
-Mon Jun 27 11:41:47 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * thread_pthread.c (rb_thread_create_timer_thread):
- the type of return value of write(2) is ssize_t.
-
-Mon Jun 27 09:57:02 2011 Koichi Sasada <ko1@atdot.net>
-
- * thread_pthread.c (rb_thread_create_timer_thread):
- Fixes missing initialization of oflags.
-
-Mon Jun 27 09:07:42 2011 Koichi Sasada <ko1@atdot.net>
-
- * thread_pthread.c: Stop polling in the timer thread when there are
- no waiting thread. If there are 2 or more runnable threads,
- the timer thread does polling. Avoid polling makes power save
- for several computers (0.2W per a Ruby process, when I measured).
- If outside-event such as signal or Thread#kill was occurred
- when the timer thread does not do polling, then wake-up
- the timer thread using communication-pipe (the timer thread
- waits this communication-pipe with select(2)).
- The discussion about this modification can be found from the post
- [ruby-core:33456] and other related posts.
- Note that Eric Wong and KOSAKI Motohiro give us the huge
- contributions for this modification. Thanks.
-
- * thread_pthread.c (rb_thread_wakeup_timer_thread): add a function.
- This function wakes up the timer thread using communication-pipe.
-
- * thread.c (rb_thread_stop_timer_thread): add a parameter which
- specify closing communication-pipe or not.
-
- * thread.c (rb_thread_terminate_all): do not stop timer thread here
- (ruby_cleanup() terminate timer thread).
-
- * signal.c: wake up timer thread using
- rb_thread_wakeup_timer_thread() from signal handler.
-
- * eval.c (ruby_cleanup): use rb_thread_stop_timer_thread(1).
-
- * process.c: use rb_thread_stop_timer_thread(0)
- (reuse communication-pipe).
-
- * thread_win32.c (rb_thread_wakeup_timer_thread): add a dummy
- function.
-
- * vm_core.h: add and fix decl. of functions.
-
-Mon Jun 27 08:01:19 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_parse.c: should use ALLOCA_N.
-
-Mon Jun 27 01:34:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/etc/test_etc.rb (TestEtc#test_get{pw,gr}nam): skip entries
- start with + sign, which means NIS. these are returned in the
- case that passwd and group entries in /etc/nsswitch.conf are set
- to use "nis" explicitly on Debian. fixed #3683
-
-Mon Jun 27 00:44:53 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * parse.y (rb_parser_end_seen_p): fix documentation about return
- value. patched by Sho Hashimoto. [Bug #4511]
-
-Mon Jun 27 00:40:47 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * hash.c (rb_hash_reject): add documentation that Hash#reject
- without block returns enumerator.
- patched by Michael Edgar [Bug #4847] [ruby-core:36800]
-
-Sun Jun 26 23:49:21 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * test/date/test_switch_hitter.rb: added a test.
-
- Sun Jun 26 22:21:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: refactoring.
-
-Sun Jun 26 18:03:30 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * parse.y: comma at the end of line is no longer allowed.
- A patch from Yukihiro Matsumoto <matz AT ruby-lang.org>.
- (fixed #3456).
-
-Sun Jun 26 13:35:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * vm_dump.c (rb_vm_bugreport): change CrashReporter suggestion messages
- on Mac. It should be placed after "-- C level backtrace" line.
- Suggested by Endoh-san.
-
- <before>
- -- See Crash Report log file under ~/Library/Logs/CrashReporter or ---------
- -- /Library/Logs/CrashReporter, for the more detail of ---------------------
- -- C level backtrace information -------------------------------------------
-
- <after>
- -- C level backtrace information -------------------------------------------
-
- See Crash Report log file under ~/Library/Logs/CrashReporter or
- /Library/Logs/CrashReporter, for the more detail of.
-
-Sun Jun 26 10:08:28 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/extconf.rb
- * ext/openssl/ossl_missing.h/.c: add ASN1_put_eoc if missing.
-
- * ext/openssl/ossl_asn1.c: introduce ossl_asn1_object_size and
- ossl_asn1_put_object to wrap functionality depending on OpenSSL
- version in use.
- Fixes [ Ruby 1.9 - Bug #4916 ] reported by Hiroshi Nakamura.
- [ruby-core:37286]
-
-Sun Jun 26 01:00:15 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c (date_strftime_internal): removed meaningless braces.
- * ext/date/date_core.c (gengo): the value should be int.
-
-Sat Jun 25 23:45:30 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * vm_insnhelper.c (vm_search_superclass): avoid control frame
- stack overrun. currently super() in Proc created in a method
- defined by Module#define_method raise NoMethodError. [Bug #4881]
- * test/ruby/test_method.rb t_super_in_proc_from_define_method):
- add test for it.
-
-Sat Jun 25 23:23:14 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * thread.c (sleep_forever): now Kernel#sleep don't wakeup by
- signal handler execution. [Bug #4072]
-
-Sat Jun 25 23:14:47 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * thread.c (rb_threadptr_check_signal): remove unnecessary th->status
- backup. fix race condition which may results unexpected main thread's
- status transition. see #4072
-
-Fri Jun 24 19:57:30 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * lib/webrick/httprequest.rb (setup_forwarded_info): Parsing request
- header failed when the request is from 2 or more Apache reverse
- proxies. It's said that all X-Forwarded-* headers will contain more
- than one (comma-separated) value if the original request already
- contained one of these headers. Since we could use these values as
- Host header, we choose the initial(first) value. See #4922.
-
- * test/webrick/test_httprequest.rb (test_forwarded): Test it.
-
-Fri Jun 24 17:06:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * process.c (proc_daemon): should not start timer thread
- twice. fixed Bug#4920.
-
-Fri Jun 24 15:54:14 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * ext/openssl/ossl_ssl.c (ossl_ssl_shutdown): Try to shutdown SSL
- connection more gracefully. Call SSL_shutdown() max 4 times until it
- returns 1 (success). Bi-directional SSL close has several states but
- SSL_shutdown() kicks only 1 transition per call. Max 4 is from
- mod_ssl.c of Apache httpd that says 'max 2x pending + 2x data = 4'.
- See #4237.
-
-Fri Jun 24 07:24:37 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rake/version.rb: Fixed VERSION to work with tool/rbinstall.rb
- * bin/rake: Import bin/rake from 0.9.2
- * tool/rbinstall.rb (install): Rake::VERSION is now in
- lib/rake/version.rb. Fixes `make install`
-
-Fri Jun 24 07:11:37 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rake: Import Rake 0.9.2
-
-Fri Jun 24 00:44:15 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c (c_valid_{julian,gregorian}_p): fixed the range of month.
-
-Fri Jun 24 00:14:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: trivial changes on text.
-
-Thu Jun 23 22:46:57 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * ext/openssl/ossl_x509name.c: Add X509::Name#hash_old as a wrapper
- for X509_NAME_hash_old in OpenSSL 1.0.0. See #4805
-
- * test/openssl/test_x509name.rb (test_hash): Make test pass with
- OpenSSL 1.0.0.
-
- * NEWS: Add it.
-
-Thu Jun 23 19:30:53 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_set_time): Check
- argument type with NUM2LONG if the arg is not a Time object.
- See #4919.
-
- * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_set_timeout): Check
- type with NUM2LONG. Time as an arg is not allowed. See #4919.
-
- * test/openssl/test_ssl_session.rb (test_session_time,
- test_session_timeout): Test it.
-
-Wed Jun 23 13:30:30 2011 Shota Fukumori <sorah@tubusu.net>
-
- * signal.c(ruby_atomic_exchange): Fix definition style.
-
-Wed Jun 22 22:34:05 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * ext/openssl/ossl_ssl.c (ossl_sslctx_session_new_cb): Return 0 to
- OpenSSL from the callback for SSL_CTX_sess_set_get_cb().
- Returning 0 means to OpenSSL that the session is still valid
- (since we created Ruby Session object) and was not freed by us with
- SSL_SESSION_free(). Call SSLContext#remove_session(sess) in
- session_get_cb block if you don't want OpenSSL to cache the session
- internally.
- This potential issue was pointed by Ippei Obayashi. See #4416.
-
- * test/openssl/test_ssl_session.rb (test_ctx_server_session_cb): Test
- it.
-
-Wed Jun 22 22:21:17 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_ssl_session.c: Respect T_BIGNUM time values. Patch by
- Tomoyuki Chikanaga.
- [ Ruby 1.9 - Bug #4919 ] [ruby-dev:43869]
-
-Wed Jun 22 21:29:25 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/socket/depend (SOCK_HEADERS): use $(top_srcdir) instead of
- $(topdir). sorry!
-
-Wed Jun 22 19:47:03 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * cont.c (cont_capture): add volatile.
- On clang -O, it is needed to avoid the optimization.
- With this and llvm/clang's recent fix, clang 3.0 can
- build ruby-trunk with -O option.
-
- * cont.c (cont_capture): use for-loop.
-
- * array.c (rb_ary_each): add volatile and use it.
-
- * vm_insnhelper.c (vm_call_cfunc): ditto.
-
-Wed Jun 22 18:20:46 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * ext/openssl/ossl_ssl.c (ossl_sslctx_session_remove_cb):
- OpenSSL::SSL::SSLContext#session_remove_cb was broken. It wrongly
- tried to call the session_*new*_cb callback.
-
- * test/openssl/test_ssl_session.rb (class OpenSSL): Test it.
-
-Wed Jun 22 17:37:49 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl.h: Introduced OSSL_BIO_reset macro for PEM/DER
- fallback scenarios.
-
- * ext/openssl/ossl_pkey_dsa.c
- * ext/openssl/ossl_x509req.c
- * ext/openssl/ossl_pkey_rsa.c
- * ext/openssl/ossl_pkey_ec.c
- * ext/openssl/ossl_ssl_session.c
- * ext/openssl/ossl_x509crl.c
- * ext/openssl/ossl_pkey.c
- * ext/openssl/ossl_pkey_dh.c
- * ext/openssl/ossl_x509cert.c
- * ext/openssl/ossl_pkcs7.c: Use OSSL_BIO_reset.
-
- * ext/openssl/ossl_ssl.c
- * ext/openssl/ossl_cipher.c
- * ext/openssl/ossl_pkey_ec.c
- * ext/openssl/ossl_pkcs12.c
- * ext/openssl/ossl_ssl_session.c: Replace rb_raise occurrences by
- ossl_raise. This automatically flushes OpenSSL's error queue.
-
- * ext/openssl/ossl_pkcs7.c: Raise error if DER fallback for parsing
- fails.
-
- * test/openssl/test_pkey_ec.rb
- * test/openssl/test_pkey_dsa.rb
- * test/openssl/test_pkey_rsa.rb: Add assertions that OpenSSL.errors is
- empty.
-
- * test/openssl/test_pkey_rsa.rb: Remove initial OpenSSL.errors call in
- test_new.
- [ Ruby 1.9 - Bug #4885 ] [ruby-core:37134]
-
-Wed Jun 22 15:01:24 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_ssl.c: Use SSL_MODE_RELEASE_BUFFERS if available.
- Thanks, Eric Wong, for providing the patch.
- [ Ruby 1.9 - Feature #4672 ] [ruby-core:36127]
-
-Wed Jun 22 14:47:53 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * test/openssl/test_buffering.rb
- * test/openssl/test_pkcs12.rb: Inherit from Test::Unit::TestCase
- instead of MiniTest::Unit::TestCase. [ruby-core:37275]
-
-Wed Jun 22 12:41:03 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * ext/openssl/ossl_ssl_session.c (ossl_ssl_session_to_der):
- OpenSSL::SSL::Session#to_der was broken. Fix buffer handling.
-
- * test/openssl/test_ssl_session.rb (test_session): Test it.
-
-Wed Jun 22 12:38:52 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * test/openssl/test_ssl_session.rb: Split out SSL::Session related
- tests from test_ssl.rb
-
-Wed Jun 22 03:20:52 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/to_ruby.rb: Fix cyclic references of
- objects. Thanks to CvX for reporting the bug and a test case.
- * test/psych/test_object.rb: test for cyclic object references.
-
-Wed Jun 22 02:39:54 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * lib/net/http.rb (Net::HTTP.post_form): Do not ignore query part of
- the given URI to post. See #655.
-
- * test/net/http/test_http.rb, test/net/http/utils.rb: Test it.
-
-Wed Jun 22 01:28:13 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * test/openssl/test_x509store.rb (test_set_errors): Redhat is
- distributing a patched version of OpenSSL that allows multiple CRL
- for a key (multi-crl.patch.) Make test pass on such env. See #4122,
- #4554.
-
-Tue Jun 21 21:50:37 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * lib/webrick/httpresponse.rb (HTTPResponse#setup_header): Close
- HTTP/1.1 connection when returning an IO object as response body
- without setting HTTPResponse#chunked to true. See #855 no.1.
-
- * test/webrick/test_httpserver.rb: Test it.
-
-Tue Jun 21 21:27:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * internal.h: move rb_thread_io_blocking_region() declaration
- from intern.h to internal.h. It's still experimental API and
- need more discussion. [ruby-dev:43698]
- * include/ruby/intern.h: ditto.
-
- * ext/socket/rubysocket.h: include internal.h.
- * ext/socket/depend: add internal.h dependency.
- * ext/socket/extconf.rb: add $INCFLAGS to topdir.
-
-Tue Jun 21 20:38:47 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c (datetime_s_*): canonicalize 24 o'clock.
-
-Tue Jun 21 19:46:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_thread.rb (TestThread#test_priority): enable
- this test again. Current GVL respect thread priority rather
- than past.
-
-Tue Jun 21 13:25:35 2011 TAKAO Kouji <kouji@takao7.net>
-
- * ext/readline/readline.c (readline_getc): applied a patch in
- #3827 by by Akio Tajima <artonx AT yahoo.co.jp>. (see #3827)
-
-Tue Jun 21 13:16:31 2011 TAKAO Kouji <kouji@takao7.net>
-
- * ext/readline/extconf.rb: fixed bug, specify --disable-libedit
- then disable libedit, does not specify then check readline and
- libedit if failed checking readline. (fixes #3375)
-
-Mon Jun 20 22:52:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * process.c (before_exec): use sig_do_nothing instead of SIG_DFL
- for avoiding a race.
- * process.c (sig_do_nothing): new function.
-
-Mon Jun 20 21:31:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (thread_timer): rename timeout_10ms to
- time_quantum. it's no longer 10ms.
-
-Mon Jun 20 18:46:02 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * ext/openssl/ossl_cipher.c, ext/openssl/lib/openssl/cipher.rb:
- Documentation fix by Ippei Obayashi. See #4419.
-
-Mon Jun 20 15:41:33 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * lib/webrick/cookie.rb (WEBrick::Cookie.parse): Revert r31228.
- r31228 was for allowing the 'Cookie:' header which did not have no
- SP after ';' for separating cookie-pairs but RFC6265 requires single
- SP after ';' there. We allow multiple SPs here for compatibility
- with older WEBrick version.
-
- * test/webrick/test_cookie.rb: Test it.
-
-Sun Jun 19 13:31:26 2011 Shota Fukumori <sorah@tubusu.net>
-
- * NEWS: Introduce --hide-skip on test/unit.
-
-Sun Jun 19 10:05:16 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit/parallel.rb: Override Test::Unit::TestCase#on_parallel_worker?
- only when $0 == __FILE__.
-
- * lib/test/unit/parallel.rb: Run Test::Unit::Worker.run only when
- $0 == __FILE__.
-
-Sat Jun 18 23:59:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (fill_cbuf): finish reading at EOF, and the readconv has
- been cleared by another thread while io_fillbuf() is waiting at
- select(). a patch in [ruby-core:37197] by Hiroshi Shirosaki
- <h.shirosaki AT gmail.com>. fixed #3840
-
-Sat Jun 18 21:36:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c: remove GVL_DEBUG
-
-Sat Jun 18 21:32:02 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * vm.c, vm_core.h (rb_vm_stack_to_heap): remove const.
- It makes compilations warnings.
-
-Sat Jun 18 18:54:15 2011 Koichi Sasada <ko1@atdot.net>
-
- * vm.c, vm_core.h (rb_vm_stack_to_heap): fix "const" place.
-
-Sat Jun 18 17:23:38 2011 Tanaka Akira <akr@fsij.org>
-
- * eval.c, hash.c, load.c, proc.c, range.c, thread.c, time.c: don't
- declare internal functions.
-
- * internal.h, vm_core.h: declare internal functions.
-
- * array.c: include internal.h.
-
- * common.mk: update dependency for array.o.
-
-Sat Jun 18 13:39:33 2011 Tanaka Akira <akr@fsij.org>
-
- * internal.h: declarations declared in include/ruby/*.h removed.
-
-Sat Jun 18 12:42:17 2011 Tanaka Akira <akr@fsij.org>
-
- * method.h, internal.h iseq.h: declare internal functions.
-
- * compile.c, eval.c, iseq.c, object.c, parse.y, proc.c, process.c,
- thread.c, vm.c, vm_eval.c, vm_insnhelper.c, vm_method.c: don't
- declare internal functions.
-
- Note that rb_method_entry_eq() is defined in vm_method.c but
- there was a declaration in proc.c with different const-ness.
- Now it is declared in method.h with same const-ness to the
- definition.
-
- * object.c (rb_mod_module_exec): don't declare functions declared in
- include/ruby/intern.h.
-
-Sat Jun 18 12:05:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/backward/classext.h: for evil gems. fixed #4803
-
-Sat Jun 18 11:12:13 2011 Tanaka Akira <akr@fsij.org>
-
- * common.mk: update dependencies.
-
-Sat Jun 18 11:09:03 2011 Tanaka Akira <akr@fsij.org>
-
- * io.c: suppress warnings.
-
-Sat Jun 18 10:22:39 2011 Tanaka Akira <akr@fsij.org>
-
- * internal.h: declare more internal functions.
-
- * iseq.h (rb_method_get_iseq): declared.
-
- * compile.c, eval.c, eval_error.c, iseq.c, parse.y, proc.c, range.c,
- ruby.c, time.c, util.c, vm.c: don't declare internal functions.
-
- * eval.c, parse.y, thread_pthread.c: non-existing function declarations
- removed.
-
-Sat Jun 18 08:12:54 2011 Tanaka Akira <akr@fsij.org>
-
- * common.mk: dependencies updated.
-
- * tool/update-deps: new file to assist update dependencies in
- common.mk.
-
-Sat Jun 18 07:27:27 2011 Tanaka Akira <akr@fsij.org>
-
- * internal.h: declare internal functions here.
-
- * node.h: declare NODE dependent internal functions here.
-
- * iseq.h: declare rb_iseq_t dependent internal functions here.
-
- * vm_core.h: declare rb_thread_t dependent internal functions here.
-
- * bignum.c, class.c, compile.c, complex.c, cont.c, dir.c, encoding.c,
- enumerator.c, error.c, eval.c, file.c, gc.c, hash.c, inits.c, io.c,
- iseq.c, load.c, marshal.c, math.c, numeric.c, object.c, parse.y,
- proc.c, process.c, range.c, rational.c, re.c, ruby.c, string.c,
- thread.c, time.c, transcode.c, variable.c, vm.c,
- tool/compile_prelude.rb: don't declare internal functions declared
- in above headers. include above headers if required.
-
- Note that rb_thread_mark() was declared as
- void rb_thread_mark(rb_thread_t *th) in cont.c but defined as
- void rb_thread_mark(void *ptr) in vm.c. Now it is declared as
- the later in internal.h.
-
-Sat Jun 18 02:36:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (VpNewRbClass): fix type of the 2nd
- argument.
-
- * ext/bigdecimal/bigdecimal.h: ditto.
-
-Sat Jun 18 02:30:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): move BigMath.exp from
- bigdecimal/math.rb.
-
- * ext/bigdecimal/lib/bigdecimal/math.rb: ditto.
-
- * test/bigdecimal/test_bigdecimal.rb: move test for BigMath.exp from
- test/bigdecimal/test_bigmath.rb.
-
- * test/bigdecimal/test_bigmath.rb: ditto.
-
-Sat Jun 18 00:20:54 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: do not define wnum[01].
-
-Fri Jun 17 18:57:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * compile.c (iseq_compile_each): fix return value of obj[a,*b]=c.
-
-Fri Jun 17 13:09:45 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/curses/curses.c: Clean up documentation.
-
-Fri Jun 17 09:25:14 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/curses/curses.c: Document curses constants. Patch by Vincent
- Batts. [Ruby 1.9 - Bug #4880]
-
-Fri Jun 17 09:11:05 2011 Eric Hodel <drbrain@segment7.net>
-
- * object.c: Document Module#method_added and #method_removed.
- Patch by Bryce Kerley. [Ruby 1.9 - Feature #4867]
-
-Fri Jun 17 08:50:16 2011 Eric Hodel <drbrain@segment7.net>
-
- * io.c: Improve documentation of IO and File open and new.
- Patch by Roger Pack. [Ruby 1.9 - Bug #4790]
-
-Fri Jun 17 07:53:50 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/csv.rb: Document #raw_encoding. Patch by David Czarnecki.
- [Ruby 1.9 - Bug #4874]
-
-Fri Jun 17 07:46:50 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/benchmark.rb: Document Benchmark::Tms#memberwise. Patch by
- David Czarnecki. [Ruby 1.9 - Bug #4873]
-
-Fri Jun 17 07:38:31 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/prettyprint.rb: Improve documentation. Patch by Ysiad
- Ferreiras. [#4834]
-
-Fri Jun 17 07:23:03 2011 Eric Hodel <drbrain@segment7.net>
-
- * array.c (rb_ary_drop): Improve documentation. Patch by Caley Woods.
- [Ruby 1.9 - Bug #4858]
-
-Fri Jun 17 06:11:31 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/webrick/log.rb: Improve documentation of BasicLog and Log.
- Patch by Olivier Brisse. [Ruby 1.9 - Bug #4833]
- * lib/webrick/httpstatus.rb: Improve documentation of
- WEBrick::HTTPStatus. Patch by Olivier Brisse.
- [Ruby 1.9 - Bug #4833]
-
-Fri Jun 17 04:48:22 2011 Koichi Sasada <ko1@atdot.net>
-
- * thread_pthread.c, thread_pthread.h: remove unused variables.
- (native_thread_data_t::gvl_cond, native_thread_data_t::gvl_next)
-
-Thu Jun 16 14:32:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * time.c (rb_time_new): prevent overflow by "* 1000".
-
-Fri Jun 17 03:07:36 2011 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/bm_vm4_thread_create_join.rb,
- benchmark/bm_vm4_thread_mutex[1-3].rb: renamed to
- bm_thread_* (fix last rename).
-
-Fri Jun 17 02:26:47 2011 Koichi Sasada <ko1@atdot.net>
-
- * thread_pthread.c (native_thread_create): fix debug message.
- (add last newline)
-
-Thu Jun 16 23:40:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_thread_schedule_rec): fix {UN,}LIKELY macro misuse.
- * gc.c (rb_newobj): ditto.
- * vm_insnhelper.c (vm_method_search): ditto.
-
-Thu Jun 16 20:06:15 2011 Shota Fukumori <sorah@tubusu.net>
-
- * test/testunit/test_parallel.rb: Fix Regexp for test.
-
- * test/testunit/tests_for_parallel/test_third.rb: Use
- Test::Unit::TestCase#on_parallel_worker? for detecting worker.
-
- * lib/test/unit/testcase.rb(Test::Unit::TestCase#on_parallel_worker?):
- New Method Test::Unit::TestCase#on_parallel_worker? returns true
- when a testcase is running on parallel worker.
- * lib/test/unit/parallel.rb(Test::Unit::TestCase#on_parallel_worker?):
- ditto.
-
-Thu Jun 16 19:27:12 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * test/test_securerandom.rb: Add testcase. This testcase does NOT aim
- to test cryptographically strongness and randomness. It includes
- the test for PID recycle issue of OpenSSL described in #4579 but
- it's disabled by default.
-
-Thu Jun 16 17:55:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_io.rb (TestIO#test_copy_stream_socket): fix
- test hanging up issue. Patch by CHIKANAGA Tomoyuki.
-
-Thu Jun 16 15:17:39 2011 Eric Hodel <drbrain@segment7.net>
-
- * variable.c (const_missing): Add simple example of const_missing.
- Patch by Anuj Dutta. [Ruby 1.9 - Bug #4794]
-
-Thu Jun 16 15:09:29 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/monitor.rb: Improve documentation. Patch by Sandor Szucs.
- [Ruby 1.9 - Bug #4823]
-
-Thu Jun 16 14:54:09 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/webrick/utils.rb: Document WEBrick::Utils. Patch by Olivier
- Brisse. [Ruby 1.9 - Bug #4819]
-
-Thu Jun 16 14:26:46 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/webrick/httpservlet/erbhandler.rb: Allow the ERB document to
- alter the content-type of the response. [Ruby 1.9 - Bug #4685]
-
-Thu Jun 16 14:15:47 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/timeout.rb: Clarify timeout duration types. Patch by Alf Mikula.
- [Ruby 1.9 - Bug #4791]
- * lib/net/http.rb: ditto
-
-Thu Jun 16 13:25:25 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc*: Import RDoc 3.7 release candidate
-
-Thu Jun 16 11:35:09 2011 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/imap.rb (search_response): parses SEARCH responses from
- the Yahoo IMAP server correctly. patched by Mark Nadig. [Bug #4509]
-
-Thu Jun 16 09:12:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * fix for build on solaris 10.
-
-Thu Jun 16 09:08:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/io/console/test_io_console.rb (TestIO_Console#test_sync):
- fix for daemon process.
-
-Thu Jun 16 07:58:01 2011 Shota Fukumori <sorah@tubusu.net>
-
- * test/testunit/test_parallel.rb(test_ignore_tzero): Test for r32109.
-
- * test/testunit/tests_for_parallel/test_third.rb: Use another way to
- detect that test is running on worker. This fixes sometimes
- TestParallel failing.
-
-Thu Jun 16 07:20:06 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit.rb(Test::Unit::Runner#_run_parallel): Ignore -j0
- because it makes blocking forever by IO.select.
-
-Thu Jun 16 03:08:11 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/testunit/test_parallel.rb (TestParallel::TestParallelWorker#
- setup): now can run on Windows, probably.
-
- * test/testunit/test_parallel.rb (TestParallel::TestParallel#setup):
- ditto.
-
-Thu Jun 16 03:00:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * thread.c (do_select): Windows: no need to poll if select(2) is
- cancelable.
-
- * thread_win32.c (native_fd_select): new function to make select(2)
- cancelable.
-
- * thread_win32.c (rb_w32_check_interrupt): new function for checking
- interrupt.
-
- * win32/win32.c (rb_w32_select_with_thread): new function. cancelable
- select(2).
-
- * win32/win32.c (rb_w32_select): use above function internally.
-
-Wed Jun 15 23:30:45 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * gc.c: fix a regression by r31690 on AIX because AIX malloc
- return NULL if it's passed 0. But some caller don't expect it.
- patch by Yutaka Kanemoto. [ruby-dev:43779]
- (vm_malloc_prepare): return calculated size.
- (vm_xmalloc): use above result.
- (vm_xcalloc): ditto.
-
-Wed Jun 15 23:11:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c: remove BLOCKING_REGION_CORE() macro. It's no longer used
- since r32022.
-
-Wed Jun 15 21:00:47 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * test/openssl/test_config.rb: execute based on the existence of the
- OpenSSL module.
-
-Wed Jun 15 12:35:11 2011 Tanaka Akira <akr@fsij.org>
-
- * test/ruby/test_io.rb (test_copy_stream_socket): wait a child process
- before SIGUSR1 handler is removed.
-
- * test/pathname/test_pathname.rb (define_assertion): use line number
- for test method names.
-
-Wed Jun 15 10:37:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * file.c (rb_stat_rdev): use DEVT2NUM.
-
- * file.c (rb_stat_rdev_major): ditto.
-
- * file.c (rb_stat_rdev_minor): ditto.
-
-Wed Jun 15 05:12:59 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/tcltklib.c (lib_eventloop_core): revert the last change (it's
- the part for ruby_1_8), and use rb_thread_check_ints() when RUBY_VM
- is defined.
-
-Wed Jun 15 04:42:47 2011 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/bm_vm3_thread_*.rb: renamed bm_vm3_thread_*.rb to
- benchmark/bm_vm_thread_*.rb.
-
-Wed Jun 15 04:28:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * benchmark/bm_vm4_thread_pass.rb: rename bm_vm4* to
- bm_vm_thread_*. suggested by ko1.
- * benchmark/bm_vm4_pipe.rb: ditto.
- * benchmark/bm_vm4_alive_check1.rb: ditto.
- * benchmark/bm_vm4_pass_flood.rb: ditto.
-
-Wed Jun 15 03:52:50 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * benchmark/bm_vm4_pass_flood.rb: new benchmark for GVL fairness.
- * benchmark/bm_vm4_alive_check1.rb: ditto.
-
-Wed Jun 15 01:27:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (gvl_yield): fix live lock issue on 1-2 cpus
- system. It's additional fix for r32021.
- * thread_pthread.c (gvl_init): add switch_wait_cond.
- * thread_pthread.h (typedef struct rb_global_vm_lock_struct): ditto.
-
-Tue Jun 14 23:16:22 2011 Tanaka Akira <akr@fsij.org>
-
- * bootstraptest/runner.rb (show_progress): refine verbose mode.
- (exec_test): ditto.
-
-Tue Jun 14 23:02:36 2011 Tanaka Akira <akr@fsij.org>
-
- * bootstraptest/runner.rb (show_progress): extracted from assert_check.
- (assert_check): use show_progress.
- (assert_normal_exit): ditto.
- (assert_finish): ditto.
- (flunk): ditto.
-
-Tue Jun 14 22:51:42 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * test/date/test_*.rb: added tests.
-
-Tue Jun 14 22:09:58 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: renamed some functions.
- * ext/date/date_core.c: modified doc.
-
-Tue Jun 14 21:26:01 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * cont.c (cont_save_thread): add new utility function.
- rb_context_t::saved_thread.machine_stack_start and
- machine_stack_end should be cleared immediately after a snapshot of
- current thread is stored to saved_thread. [ruby-dev:43680] [Bug #4855]
- this change aims to get rid of unnecessary GC mark at machine stack.
-
-Tue Jun 14 19:50:49 2011 Tanaka Akira <akr@fsij.org>
-
- * test/ruby/test_autoload.rb: remove temporary directory.
-
-Tue Jun 14 11:05:03 2011 Narihiro Nakamura <narihiro@netlab.jp>
-
- * gc.c (rb_gc_set_params): call initial_expand_heap if
- initial_heap_min_slots is set.
-
-Tue Jun 14 11:02:08 2011 Narihiro Nakamura <narihiro@netlab.jp>
-
- * gc.c: use size_t.
-
-Tue Jun 14 01:10:38 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * test/coverage/test_coverage.rb: add a test for restart. a patch
- from Xavier Shay. [ruby-core:36745]
-
-Tue Jun 14 01:05:10 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * ext/coverage/coverage.c: make it restartable. [ruby-core:36539]
-
-Mon Jun 13 23:55:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_thread_schedule_rec): call gvl_yield() unconditionally.
- * thread_pthread.c: remove HAVE_GVL_YIELD macro.
- * thread_win32.c (gvl_yield): new. this fallback logic was moved from
- rb_thread_schedule_rec().
-
-Mon Jun 13 23:50:25 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/io/console/console.c (console_dev): typo.
-
-Mon Jun 13 23:38:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (parser_parse_string): flush delayed token. based on a
- patch by Masaya Tarui in [ruby-dev:43762]. Bug #4544
-
- * parse.y (yylex): revert r24557. delayed token at the end of
- string should be flushed already by the above change.
-
-Mon Jun 13 23:33:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/io/console/console.c (console_dev): console should be
- unbuffered.
-
- * ext/io/console/console.c (console_dev): take care of no-ctty
- case.
-
-Mon Jun 13 23:06:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c: rewrite GVL completely. This fix improve some
- benchmark dramatically (e.g. vm3_thread_mutex result changed
- form 120.601sec to 3.426sec).
- * thread_win32.c: ditto.
- * thread_pthread.h: ditto.
- * vm_core.h: ditto.
- * thread.c: ditto.
-
-Mon Jun 13 23:11:52 2011 Tanaka Akira <akr@fsij.org>
-
- * test/socket/test_unix.rb: don't use Thread.abort_on_exception.
-
-Mon Jun 13 23:05:01 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/unixsocket.c (unix_send_io): race condition fixed.
- (unix_recv_io): ditto.
- fixed by Eric Wong. [ruby-core:35574]
-
- * test/socket/test_unix.rb: test added for above problem.
-
-Mon Jun 13 21:41:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_win32.c (native_cond_signal): remove unnecessary rb_bug().
- It's additional fix for r32021. [Bug #4696]
-
-Mon Jun 13 20:50:49 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * test/openssl/test_ec.rb
- test/openssl/test_pkey_ec.rb: merge both files into test_pkey_ec.rb.
- Removed redundant group instantiation from PKey tests.
- * test/openssl/utils.rb: only create TEST_PKEY_EC_P256V1 if EC is
- defined.
-
-Mon Jun 13 20:28:24 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * test/openssl/digest.rb: remove MDC2 from test, it is not available
- by default in an OpenSSL installation.
-
-Mon Jun 13 20:18:55 2011 Koichi Sasada <ko1@atdot.net>
-
- * vm_core.h, vm_insnhelper.h: move decl. of
- ruby_vm_global_state_version and related macros
- from vm_core.h to vm_insnhelper.h.
-
- * vm.c (vm_clear_all_cache): added. This function is called
- when ruby_vm_global_state_version overflows.
- TODO: vm_clear_all_inline_method_cache() is only place holder.
- We need to implement it ASAP.
-
- * vm_method.c (vm_clear_global_method_cache): added.
-
-Mon Jun 13 19:46:21 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
-
- * lib/cmath.rb: add new method Object#real?. fix #3137
-
-Mon Jun 13 18:52:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (is_kind_of_BigDecimal): new function to
- examine the whether the object is kind of BigDecimal.
-
-Mon Jun 13 18:49:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): use GetVpValueWithPrec
- for Float and Rational arguments.
-
- * test/bigdecimal/test_bigdecimal.rb (test_new, test_cmp, test_power):
- add and modify tests for the above change.
-
- * ext/bigdecimal/bigdecimal.c (BigDecimalCmp): modify coding style to
- match ruby's standard.
-
-Mon Jun 13 18:33:04 2011 Tanaka Akira <akr@fsij.org>
-
- * lib/securerandom.rb (SecureRandom.random_bytes): modify PRNG state
- to prevent random number sequence repetition at forked child
- process which has same pid.
- reported by Eric Wong. [ruby-core:35765]
-
-Mon Jun 13 17:02:34 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http.rb (Net::HTTP#use_ssl?): require 'openssl' only when
- https is needed. fixes r31933.
-
-Mon Jun 13 14:35:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * lib/cmath.rb (CMath.cbrt): returns the principal value of the cube
- root of the argument. fix #3676
-
- * test/test_cmath.rb (test_cbrt_returns_principal_value_of_cube_root):
- test for the above change.
-
-Mon Jun 13 14:17:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * lib/test/unit.rb (Test::Unit::GlobOption#non_options): fix typo.
-
-Mon Jun 13 13:04:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_digest.c: fix error for digests that have no oid
- (e.g. DSS1).
- * test/openssl/test_digest.c: add tests for this.
-
-Mon Jun 13 12:51:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/yaml.rb: load psych only when syck is not loaded.
-
-Mon Jun 13 12:23:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
-Mon Jun 13 12:23:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/psych/lib/psych/deprecated.rb (Object#to_yaml_properties):
- undef to_yaml_properties before redefine it.
-
- * ext/syck/lib/syck/rubytypes.rb: ditto.
-
-Mon Jun 13 11:30:10 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_digest.c: allow Digests to be created by sn, ln or
- oid.
- * test/openssl/test_digest.rb: add tests for this.
- [Ruby 1.9 - Feature #4412] [ruby-core:35319]
-
-Mon Jun 13 10:54:03 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/pkey_dh.c: corrected documentation.
- * test/openssl/utils.rb: add test key for DH.
- * test/openssl/test_pkey_dh.rb: add tests.
-
-Mon Jun 13 10:13:08 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/pkey_dh.c: clarify difference between DH#public_key and
- DH#pub_key in documentation.
-
-Mon Jun 13 05:50:43 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * NEWS: introduce PKey.read.
-
-Mon Jun 13 05:17:29 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_pkey.c: added PKey.read module function that allows
- reading arbitrary public/private keys from DER-/PEM-encoded File or
- string instances.
- * ext/openssl/ossl_pkey_dh.c: improved documentation.
- * test/openssl/utils.rb: added EC test key.
- * test/openssl/test_pkey_rsa.rb
- test/openssl/test_pkey_dsa.rb: Test PKey.read. Reuse keys from
- OpenSSL::TestUtils.
- * test/openssl/test_pkey_ec.rb: Created test file for EC tests.
- Test PKey.read.
- [Ruby 1.9 - Feature #4424] [ruby-core:35330]
-
-Mon Jun 13 04:42:24 2011 Koichi Sasada <ko1@atdot.net>
-
- * ext/objspace/objspace.c (total_i): fix to skip no ruby objects.
-
-Mon Jun 13 03:07:38 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * test/benchmark/test_benchmark.rb (capture_output):
- replace '-' as space. On NetBSD, subtract between two Process.times
- after and before the short process may return negative value like:
- t0=Process.times; yield; t1=Process.times; p t1.utime-t0.utime
-
-Mon Jun 13 02:40:23 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * test/openssl/test_pkey_dsa.rb: Test for DSA#syssign/sysverify.
-
-Mon Jun 13 01:59:19 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_pkey_dh.c: completed documentation.
- * ext/openssl/ossl_pkey_dsa.c: corrected examples. Improved parameter
- sections.
-
-Mon Jun 13 00:25:10 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_pkey_dsa.c: completed documentation.
-
-Sun Jun 12 23:36:46 2011 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>
-
- * lib/drb/drb.rb (kill_sub_thread): remove the method. [ruby-core:34185]
-
-Sun Jun 12 21:01:56 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c (d_lite_marshal_load): should give converted value.
-
-Sun Jun 12 20:36:30 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: edited doc.
-
-Sun Jun 12 18:12:07 2011 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/bm_vm3_clearmethodcache.rb: added.
-
-Sun Jun 12 17:40:29 2011 Koichi Sasada <ko1@atdot.net>
-
- * vm_method.c (rb_clear_cache*): update only vm state version.
-
- * vm_method.c (rb_method_entry_get_without_cache, rb_method_entry):
- Fill method cache entry with vm state version, and
- check current vm state version for method (cache) look up.
- This modification speed-up invalidating of global method cache table.
- [Ruby 1.9 - Feature #3905] [ruby-core:36908]
-
-Sun Jun 12 16:19:48 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/extconf.rb: fail on Mac OS X. [Bug #4853][ruby-dev:43655]
-
-Sun Jun 12 15:56:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c: remove th->transition_for_lock. It's thread unsafe.
- [Bug #4723][ruby-dev:43563]
-
-Sun Jun 12 15:47:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c: introduce spurious wakeup safe deadlock check.
- [Bug #4696][ruby-dev:43554]
-
-Sun Jun 12 13:33:52 2011 Koichi Sasada <ko1@atdot.net>
-
- * benchmark/bm_vm3_thread_mutex.rb: remove it.
-
- * benchmark/bm_vm3_thread_mutex[1-3].rb: added 3 benchmarks.
- 1: one thread with one mutex (no contention).
- 2: two threads with one mutex (contention).
- 3: 1000 threads with one mutex (huge number of contention)
- Above removed benchmark was type 3.
- Therefore, this commit adds type 1 and 2 benchmark.
-
-Sun Jun 12 11:16:59 2011 Tanaka Akira <akr@fsij.org>
-
- * io.c: use select() appropriately for sendfile().
- Fixed by Eric Wong. [ruby-core:36150]
- (maygvl_copy_stream_wait_readwrite): removed.
- (nogvl_copy_stream_sendfile): use nogvl_copy_stream_wait_write and
- maygvl_copy_stream_wait_read instead of
- maygvl_copy_stream_wait_readwrite.
-
-Sun Jun 12 09:32:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * atomic.h (ATOMIC_OR): _InterlockedOr is not available on mingw.h
- * gc.c (rb_gc_set_params): VM_OBJSPACE is disabled on mingw.
-
-Sun Jun 12 01:07:09 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: edited doc.
-
-Sat Jun 11 23:18:00 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * vm_core.h (RUBY_VM_SET_TIMER_INTERRUPT, RUBY_VM_SET_INTERRUPT,
- RUBY_VM_SET_FINALIZER_INTERRUPT): use atomic ops for preventing
- interrupt_flag bit lost. [Bug #4770][ruby-dev:43467]
- * thread.c (rb_threadptr_execute_interrupts_rec): ditto.
- * vm_core.h (typedef struct rb_thread_struct): change type of
- interrupt_flag to rb_atomic_t.
- * atomic.h: move atomic ops definition from signal.c.
- * signal.c: remove atomic ops definition.
- * common.mk (gc, signal, thread, cont): add to dependency to atomic.h.
-
-Sat Jun 11 23:23:52 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: edited doc.
-
-Sat Jun 11 23:02:36 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * ext/openssl/lib/openssl/buffering.rb (module OpenSSL):
- Buffering#each_byte should return String in accordance with IO in
- 1.9.
-
- * test/openssl/test_buffering.rb (class OpenSSL): add tests for getc
- and each_byte.
-
-Sat Jun 11 22:41:37 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * time.c: a correction of doc for strftime (%v).
-
-Sat Jun 11 22:30:53 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: replaced doc for strftime based on Time's one.
-
-Sat Jun 11 22:07:56 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c (datetime_s_{iso8601,rfc3339,xmlschema,rfc2822,httpdate}):
- do not take argument comp.
-
-Sat Jun 11 21:58:31 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: added examples.
-
-Sat Jun 11 19:40:45 2011 Narihiro Nakamura <authornari@gmail.com>
-
- * gc.c: expand heap if initial_heap_min_slots is bigger than
- HEAP_MIN_SLOTS.
-
-Sat Jun 11 19:42:50 2011 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * ChangeLog (vim): set shiftwidth to 2.
-
-Sat Jun 11 19:27:06 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * ext/openssl/ossl_x509req.c: raise RequestError instead of
- CertificateError when Request#to_der gets an error from OpenSSL.
- Patch from Ippei Obayashi, see #4420. I cannot write a test for
- this... Request does not allow to create broken bytes...
-
-Sat Jun 11 19:34:51 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c (Date::(ABBR_)?(MONTH|DAY)NAMES): should be usascii.
-
-Sat Jun 11 19:24:33 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: rewrote doc.
-
-Sat Jun 11 19:04:15 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit.rb (Test::Unit::GlobOption#non_options): should run
- with 1.8.
-
-Sat Jun 11 18:05:57 2011 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * bootstraptest/runner.rb: should initialize $stress to avoid warnings.
-
-Sat Jun 11 18:02:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (io_getc): should be 7bit if ascii. fixes #4557
-
-Sat Jun 11 16:52:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * numeric.c (rb_enc_uint_chr): fix message format. Bug#4869
-
-Sat Jun 11 16:28:25 2011 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rexml/formatters/pretty.rb
- (REXML::Formatters::Pretty#write_text),
- test/rexml/test_core.rb
- (Tester#test_pretty_format_long_text_finite): don't ignore
- 'width' parameter in pretty formatter. fixes #4498
- Reported by Michael Frasca. Thanks!!!
-
-Sat Jun 11 16:11:36 2011 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rexml/test_core.rb
- (Tester#test_pretty_format_long_text_finite): remove needless
- assert_nothing_raised.
-
-Sat Jun 11 16:04:03 2011 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rexml/parsers/xpathparser.rb
- (REXML::Parsers::XPathParser#parse),
- test/rexml/test_elements.rb
- (ElementsTester#test_each_with_frozen_condition):
- don't modify original XPath. fixes #4161
- Reported by Pavel Shved. Thanks!!!
-
-Sat Jun 11 15:53:27 2011 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rexml/test_elements.rb (ElementsTester): remove needless
- prefix from test name.
-
-Sat Jun 11 15:36:36 2011 Martin Duerst <duerst@it.aoyama.ac.jp>
- * common.mk: fixed a grammatical error
-
-Sat Jun 11 14:20:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * vm.c (thread_memsize): don't ignore size of th->local_storage.
-
-Sat Jun 11 10:32:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb: should quote arch_hdrdir and libpath for the case
- installed prefix contains spaces.
-
-Sat Jun 11 10:20:52 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread_pthread.c (native_cond_timeout): wrap conditionally used
- label.
-
- * thread_pthread.c (native_sleep): remove unused variable.
-
-Sat Jun 11 10:15:50 2011 Tanaka Akira <akr@fsij.org>
-
- * thread.c (rb_thread_execute_interrupts): use GetThreadPtr to extract
- rb_thread_t from VALUE.
- reported by Motohiro KOSAKI. [ruby-dev:43700]
-
-Sat Jun 11 10:00:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby.c (ruby_process_options): add missing return type.
-
-Fri Jun 10 23:18:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/tk/tcltklib.c (lib_eventloop_core): replace CHECK_INTS with
- rb_thread_check_ints(). Because current code can't be compiled.
-
-Fri Jun 10 16:38:13 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * encoding.c (rb_locale_charmap): When ruby process is run as Windows
- Service the console codepage is not set, GetConsoleCP returns 0.
- So on such environment, use GetACP().
- http://blogs.msdn.com/b/michkap/archive/2005/02/08/369197.aspx
- patched by Rafal Bigaj [ruby-core:36832] [Bug #4854]
-
-Fri Jun 10 14:34:24 2011 Koichi Sasada <ko1@atdot.net>
-
- * common.mk: restore TESTRUN_SCRIPT to "$(srcdir)/test.rb".
- TESTRUN_SCRIPT is used by "make run", "make gdb" and so on.
-
-Fri Jun 10 13:01:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/test_module.rb (TestModule#remove_rake_mixins): remove all
- module related to Rake.
-
-Fri Jun 10 09:52:38 2011 Eric Hodel <drbrain@segment7.net>
-
- * encoding.c: Mention that Encoding.compatible? can work with more
- than just Strings.
-
-Fri Jun 10 02:25:53 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych.rb: updating version to match released gem.
-
-Fri Jun 10 01:06:29 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/bigdecimal (BigDecimal_to_i): Integer#** may return flonum.
-
-Fri Jun 10 00:35:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * complex.c (string_to_c_internal): uses rb_reg_nth_match;
- * rational.c (string_to_r_internal): ditto.
-
-Fri Jun 10 00:25:03 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * gc.c: remove an unused declaration.
-
-Fri Jun 10 00:24:04 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * rational.c (string_to_r): Rational#** may return flonum.
-
-Thu Jun 9 23:57:53 2011 Tanaka Akira <akr@fsij.org>
-
- * io.c: fix IO.copy_stream interrupt handling.
- based on the patch by Eric Wong. [ruby-core:36156]
-
- * vm_core.h (rb_thread_call_with_gvl): don't declare here.
-
- * thread.c: include internal.h.
- (rb_thread_execute_interrupts): new function.
-
- * internal.h (rb_thread_execute_interrupts): declared.
- (rb_thread_call_with_gvl): declared.
-
-Thu Jun 9 23:34:01 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * gc.c (rb_objspace_call_finalizer): use rb_typeddata_is_kind_of() for
- type check to get rid of a double free when main Thread has singleton
- class. [ruby-core:36741] [Bug #4828]
- * thread.c (rb_obj_is_mutex): add a new utility function.
- * vm.c (rb_obj_is_thread): ditto.
-
-Thu Jun 9 22:53:49 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * test/ruby/test_thread.rb (TestThread#test_kill_thread_subclass):
- add test for Thread.kill with Thread subclass instance.
-
-Thu Jun 9 22:31:47 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * test/ruby/test_thread.rb (TestThread#test_kill_wrong_argument):
- test for [ruby-core:35086].
- partially forward porting r31402 from ruby_1_9_2 branch.
-
-Thu Jun 9 18:36:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * string.c: Fix the ambiguous description of the behavior of
- rb_str_aref_m with a range. It returns nil when the beginning of
- the range is greater than the end of the string rather than the range.
-
-Thu Jun 9 10:57:03 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/to_ruby.rb: Hash subclasses can be read
- from YAML files.
- * ext/psych/lib/psych/visitors/yaml_tree.rb: Hash subclasses can be
- dumped to YAML files.
- * test/psych/test_hash.rb: corresponding test.
-
-Thu Jun 9 09:18:51 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/to_ruby.rb: Ruby modules can be loaded
- from YAML files.
- * ext/psych/lib/psych/visitors/yaml_tree.rb: Ruby modules can be
- dumped to YAML files.
- * test/psych/test_class.rb: corresponding test.
-
-Thu Jun 9 09:05:04 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/to_ruby.rb: Ruby classes can be loaded
- from YAML files.
- * ext/psych/lib/psych/visitors/yaml_tree.rb: Ruby classes can be
- dumped to YAML files.
- * test/psych/test_class.rb: corresponding test.
-
-Wed Jun 8 21:38:57 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * cont.c (root_fiber_alloc): set root fiber's status RUNNING.
- in cont_mark() only RUNNING fiber's machine stack is marked.
- root fiber's status should be RUNNING at the beginning regardless of
- FIBER_USE_NATIVE. [ruby-core:36735] fixes #4827
-
-Tue Jun 7 20:50:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * doc/irb/irb.rd: fix typo. patch by Nobuhiro IMAI.
- [Bug #4843] [ruby-dev:43639]
- * doc/irb/irb.rd.ja: ditto.
- * doc/ChangeLog-YARV: ditto.
-
-Tue Jun 7 18:52:55 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/rubygems/user_interaction.rb (Gem::StreamUI#tty?): IO#tty? of
- Windows has been fixed at r29969.
-
- * test/rubygems/test_gem_stream_ui.rb: now can run tests.
-
-Tue Jun 7 18:36:41 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/rubygems/test_gem.rb (TestGem#{test_self_user_home_userprofile,
- test_self_user_home_user_drive_and_path}): should simply ignore
- meaningless tests instead of skipping them.
-
-Tue Jun 7 18:15:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
- should show some messages when skipping tests.
-
-Tue Jun 7 13:59:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/date/date_core.c (date_s_today, datetime_s_now): check the
- result of localtime_r().
-
-Tue Jun 7 13:36:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/tk/extconf.rb: use $defs not $CPPFLAGS to get rid of
- command line escape issues on Windows. fixed #4835.
-
-Tue Jun 7 03:18:45 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * test/ruby/test_io.rb (TestIO#test_s_{,bin}write): do not create a
- file under /tmp. [Bug #4846]
-
-Mon Jun 6 22:51:43 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * cont.c: use #if FIBER_USE_NATIVE instead of #ifdef.
- you can suppress use of setcontext for Fiber with compile option
- -DFIBER_USE_NATIVE=0
-
-Mon Jun 6 21:59:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * test/date/test_switch_hitter.rb: added a test.
-
-Mon Jun 6 21:37:45 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: added notes.
-
-Mon Jun 6 21:02:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: flattened format to strftimev.
- * ext/date/date_core.c (date_strftime_internal): taints run.
-
-Mon Jun 6 15:10:17 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * include/ruby/{defines,missing}.h (rb_infinity, rb_nan): move from
- defines.h to missing.h. (couldn't use RUBY_EXTERN there.)
-
-Mon Jun 6 14:35:48 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/rdoc/test_rdoc_markup_pre_process.rb (TestRDocMarkupPreProcess#
- {test_include_file,test_include_file_encoding_incompatible}): no
- need to write such workaround. don't hide the bug of ruby. (and the
- bug is already fixed.)
-
-Mon Jun 6 14:11:11 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/date/date_core.c (valid_jd_sub): need to convert from VALUE to
- double.
-
- * ext/date/date_core.c (offset_to_sec): get rid of a compiler warning.
-
-Mon Jun 6 14:09:08 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * include/ruby/defines.h (rb_infinity, rb_nan): export for Windows.
-
-Mon Jun 6 10:54:45 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit.rb(Test::Unit::Runner#puke):
- Add overriding from MiniTest::Unit#puke. This reverts minitest's fix
- that skip messages are hidden when not verbose mode (-v option).
- To hide skip messages, use --hide-skip option instead.
-
-Mon Jun 6 10:52:13 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http.rb: don't use autoload.
-
-Mon Jun 6 09:39:43 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/parser.c (parse): release event objects to plug memory
- leak. Thanks Mark J. Titorenko!
-
-Sun Jun 5 23:26:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * eval.c: remove rb_thread_stop_timer_thread function declaration.
- Instead, include vm_core.h.
- * process.c: ditto.
-
-Sun Jun 5 21:38:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (thread_timer): add to care a spurious wakeup.
- When native_cond_timedwait() return 0 by spurious wakeup, we
- don't have to neither 1) call timer_thread_function and 2)
- exit the timer thread.
-
-Sun Jun 5 17:50:01 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c (m_real_cwyear): new. derived from m_cwyear.
- * ext/date/date_strftime.c: trivial changes.
-
-Sun Jun 5 17:22:01 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/config_list.in: add new options for tcltklib.
-
-Sun Jun 5 10:06:50 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_tmx.h: now does not place decoded data. allows to
- access indirectly via functions on demand.
- * ext/date/date_strftime.c: ditto.
- * ext/date/date_core.c: ditto.
- * ext/date/date_core.c ({d|dt}_lite_to_s): use strftime.
-
-Sun Jun 5 06:22:02 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * NEWS: wrote about changes of date.
-
-Sat Jun 4 16:59:26 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c (d_lite_inspect): changed the format.
- * ext/date/date_core.c: refactoring and fixing some bugs.
-
-Sat Jun 4 11:30:57 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * class.c (check_mix_method_i, do_mix_method_i): not mix methods
- renamed as nil.
-
-Sat Jun 4 04:04:41 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * test/rubygems/test_gem_commands_which_command.rb:
- "missing" exists on ruby's top source directory. [Bug #4815]
-
-Fri Jun 3 21:48:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/rubygems/test_case.rb: Refix for test-all in separate directory.
- r31147 + r31151.
-
-Fri Jun 3 20:58:47 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/date/date_core.c (d_lite_plus): get rid of compiler warnings.
-
-Fri Jun 3 20:56:40 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * include/ruby/missing.h, numeric.c (round): moved prototype of round()
- from numeric.c to missing.h. (note: round() is C99 feature, so ruby
- provides it if not exist in C runtime.)
-
-Fri Jun 3 20:42:04 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit/parallel.rb: Keep $stdin, $stdout before run testcase
- and restore after run. Because some test break $stdin, $stdout.
- Fixes [Bug #4433] [ruby-core:35353]
-
-Fri Jun 3 19:58:14 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * io.c (io_fflush): windows -- call fsync() only when the FD is tied to
- file, because if the FD is pipe, it blocks.
-
-Fri Jun 3 09:27:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http.rb (URI::HTTP#request_uri): return nil when the uri
- is path-rootless form. Bug #4759
-
-Thu Jun 2 23:51:03 2011 James Edward Gray II <jeg2@ruby-lang.org>
-
- * lib/csv.rb: Improve the line ending detection algorithm
- patch by Alexey).
-
-Thu Jun 2 20:05:57 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * io.c (rb_io_s_write, rb_io_s_binwrite): return!!!
-
-Thu Jun 2 16:29:34 2011 Shota Fukumori <sorah@tubusu.net>
-
- * io.c: Add File.write, File.binwrite. [Feature #1081] [ruby-core:21701]
-
- * test/ruby/test_io.rb: Test for File.write, File.binwrite.
-
- * NEWS: News for above.
-
-Thu Jun 2 12:33:09 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * io.c (io_fflush, rb_io_flush): need to fsync() when ruby calls
- internal flush. [ruby-core:36670] [Bug #4813]
-
-Thu Jun 2 07:56:24 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/tcltklib.c: reduce CPU power required by an eventloop.
-
-Tue May 31 21:28:33 2011 Tanaka Akira <akr@fsij.org>
-
- * test/ruby/test_signal.rb (TestSignal#test_signal_requiring):
- redirect stderr to null device.
-
-Thu Jun 2 00:45:26 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/extconf.rb: fix for uninitialized global variables.
- [Ruby 1.9 - Bug #4811]
-
-Wed Jun 1 21:57:08 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (native_sleep): fix 1000times calculation error.
- this is a regression since r31457. [Bug #4808] [ruby-dev:43606]
-
-Wed Jun 1 17:19:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c: remove unused macro.
-
-Wed Jun 1 15:42:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (peek_n): new macro to see next nth char.
-
-Wed Jun 1 15:40:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/rbinstall.rb (gem): fix for rubygems change.
-
-Wed Jun 1 14:07:57 2011 Ryan Davis <ryand-ruby@zenspider.com>
-
- * lib/minitest/*: Imported minitest 2.2.2 (r6281)
- * test/minitest/*: ditto
-
-Wed Jun 1 12:35:50 2011 Ryan Davis <ryand-ruby@zenspider.com>
-
- * lib/rubygems*: Import rubygems 1.8.5 (released @ 137c80f)
- * test/rubygems: Ditto
-
-Wed Jun 1 12:34:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * NEWS: add new features of bigdecimal.
-
-Wed Jun 1 09:41:14 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/cgi/util.rb: Improve documentation. Patch by Kuba Fietkiewicz.
- [Ruby 1.9 - Bug #4775]
- * lib/cgi/core.rb: ditto
-
-Wed Jun 1 09:26:05 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/mathn.rb: Improve documentation and attach it to Numeric.
- Modified from patch by Anil V. [Ruby 1.9 - Bug #4762]
-
-Wed Jun 1 09:21:30 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/prime.rb: Indent examples enough to appear as code sections.
- Note that Prime is Enumerable. [#4762]
-
-Wed Jun 1 07:34:57 2011 Eric Hodel <drbrain@segment7.net>
-
- * hash.c (key_i): Change rdoc from "the first occurrence" to "an
- occurrence" since first occurrence is not a specification of
- Hash#key. [Ruby 1.9 - Bug #4760]
-
-Wed Jun 1 07:26:19 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/pty/pty.c (pty_check): Restore "not reached" comment.
- [Ruby 1.9 - Bug #4756]
-
-Wed Jun 1 07:21:40 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/zlib/zlib.c: Fix document-method declarations for set_sync and
- set_comment. [Ruby 1.9 - Bug #4695]
-
-Wed Jun 1 06:43:13 2011 Masaya Tarui <tarui@ruby-lang.org>
-
- * load.c (loaded_feature_path): cut nonsense loop execution to fix
- performance bug.
-
-Wed Jun 1 01:16:02 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * class.c (rb_mix_module): implement Module#mix.
-
-Wed Jun 1 01:15:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (io_encoding_set): should honor already set ecflags since it
- might be set by mode option. fixed #4804
-
-Wed Jun 1 00:34:04 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): remove unused
- variable.
-
-Wed Jun 1 00:32:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): support instantiation from
- a Float through Rational.
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_new): ditto.
-
- * test/bigdecimal/test_bigdecimal.rb (test_global_new_float): add a test for
- the above changes.
-
- * test/bigdecimal/test_bigdecimal.rb (test_new_with_float): ditto.
-
-Wed Jun 1 00:07:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_coerce): support coerce with a
- Rational. The precision used for instantiate a BigDecimal from the
- given Rational is obtained from the receiver BigDecimal.
-
- * test/bigdecimal/test_bigdecimal.rb (test_coerce): add a test for the
- above change.
-
-Tue May 31 23:49:08 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c (offset_to_sec): fixed invalid validation.
-
-Tue May 31 23:43:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (GetVpValueWithPrec): replace the algorithm for
- coercing from a Rational to stop requiring "bigdecimal/util.rb".
- [ruby-core:34318]
-
- * ext/bigdecimal/bigdecimal.c (GetVpValue): refactoring.
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_new): support instantiation from a
- Rational.
-
- * test/bigdecimal/test_bigdecimal.rb (test_global_new_with_rational): add a
- test for the above change.
-
- * test/bigdecimal/test_bigdecimal.rb (test_new_with_rational): ditto.
-
-Tue May 31 22:44:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_new): support instantiation a
- BigDecimal object from an Integer.
-
- * test/bigdecimal/test_bigdecimal.rb (test_new_with_integer):
- add for testing the above change.
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_global_new): replace its body
- with a BigDecimal_new call.
-
- * test/bigdecimal/test_bigdecimal.rb (test_global_new_with_integer):
- add for testing the above change.
-
-Tue May 31 22:24:39 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: use simple/complex mode instead of light/right mode.
- * test/date/*.rb: followed the above changes.
-
-Tue May 31 21:28:33 2011 Tanaka Akira <akr@fsij.org>
-
- * test/ruby/test_signal.rb (TestSignal#test_signal_requiring):
- initialize SIGINT handler.
-
-Tue May 31 17:03:24 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * lib/net/http.rb, lib/net/protocol.rb: Allow to configure to wait
- server returning '100 continue' response before sending HTTP request
- body. See NEWS for more detail. See #3622.
- Original patch is made by Eric Hodel <drbrain@segment7.net>.
-
- * test/net/http/test_http.rb: test it.
-
- * NEWS: Add new feature.
-
-Tue May 31 14:17:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * io.c (rb_io_s_pipe): potential bug. the mode of read IO is set as
- DEFAULT_TEXTMODE in call of io_set_encoding(), and of write IO is
- also set as it in call of io_new_instance() via rb_protect().
- so, if DEFAULT_TEXTMODE is not 0, we should check the result of
- extract_binmode() and avoid crush of default IO mode and the result.
-
-Tue May 31 13:00:17 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * strftime.c (rb_strftime_with_timespec): improved style consistency.
- constified some variables.
-
- * test/test_time.rb (TestTime#test_huge_precision): test for #4456.
-
-Tue May 31 12:53:10 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/io/wait/test_io_wait.rb (TestIOWait#{test_nread,test_ready?,
- test_wait}: give system some time to process the written data.
-
-Tue May 31 12:40:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_io.rb (TestIO#test_open_mode): MUST release resources
- explicitly. fix problem of r31671
-
-Tue May 31 10:49:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * vm_exec.c: remove conditions for clang
- because clang version 3.0 (trunk 132165) doesn't need them.
-
-Mon May 30 22:19:33 2011 Tanaka Akira <akr@fsij.org>
-
- * test/ruby/test_signal.rb (TestSignal#test_signal_requiring): don't
- close stderr.
-
-Mon May 30 20:22:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_signal.rb (TestSignal#test_signal_requiring): small
- but critical typo of r31642. sorry...
- [Bug #4798] [ruby-core:36550]
-
-Mon May 30 15:44:16 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * insns.def (opt_mult): as r31805, volatile it.
- Without this, clang -O fails calculation.
-
- * numeric.c (fix_mul): ditto.
-
- * rational.c (f_imul): ditto.
-
-Mon May 30 10:26:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * numeric.c (int_pow): make sure to assign the result of x * z.
- If xz is optimized out, the value won't overflow.
-
-Sun May 29 23:17:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * re.c (rb_reg_match): fix rdoc of Regexp#=~.
- patched by Tsuyoshi Sawada. [Bug #4781]
-
-Sun May 29 23:10:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/webrick/https.rb (WEBrick::HTTPRequest#parse_uri):
- keep parse_uri as private. patched by okkez. [Bug #4773]
-
-Sun May 29 17:53:03 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * numeric.c: add #include "internal.h" for rb_big_uminus() prototype.
-
-Sun May 29 15:09:05 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * numeric.c (flo_round): fix for negative value.
-
-Sun May 29 02:16:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/net/http/utils.rb (TestNetHTTPUtils#teardown): add nil check.
-
-Sun May 29 00:22:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * process.c (before_exec, after_exec): change from macro to function.
-
-Sat May 28 19:30:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * process.c (before_exec, after_exec): change SIGPIPE handler to SIG_DFL
- before calling execve(). Because r31760 reintroduced an issue that
- system() may hang up (i.e. [ruby-dev:12261]).
- * process.c (save_sigpipe, restore_sigpipe): new.
-
-Sat May 28 16:08:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * signal.c (Init_signal, default_handler): change default SIGPIPE handler
- from empty function to SIG_IGN. [ruby-dev:43215]
- * signal.c (sigpipe): removed.
-
-Sat May 28 03:04:27 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * io.c (fill_cbuf): return MORE_CHAR_SUSPENDED when cbuf is not empty.
-
-Sat May 28 02:22:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * string.c (rb_str_bytesize): rb_str_bytesize() should use LONG2NUM().
- Patch by Nikolai Weibull. [Bug #4789] [ruby-core:36511]
-
-Sat May 28 02:06:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (fill_cbuf): Fix test-all crash.
-
-Sat May 28 00:58:40 2011 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * lib/ostruct.rb (method_missing): Handle [] and []= correctly.
- Based on a patch by Caius Durling, bug #4179 [ruby-core:33792]
-
-Fri May 27 23:56:54 2011 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rexml/test_core.rb (Tester::test_text_frozen): split frozen
- string test. refs #4783
-
-Fri May 27 22:46:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/rbinstall.rb (gem): install gemspec of json. fixed #4784
-
-Fri May 27 22:45:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (validate_enc_binmode): do not clear textmode flag if
- default. fixed #4732
-
- * io.c (fill_cbuf): finish reading at EOF.
-
-Fri May 27 11:31:51 2011 misfo <tedwardo2@gmail.com>
-
- * lib/rexml/text.rb (REXML::Text#initialize): prevent an error
- when passing a frozen string to REXML::Text.new
-
- dup the string passed in instead of cloning so that it's frozen
- state is ignored
-
-Fri May 27 08:47:26 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * thread.c (ppoll): typo bug fix.
-
-Fri May 27 08:35:04 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/lib/tk.rb: hang-up at exit before calling Tk.mainloop.
-
- * ext/tk/lib/tk/extconf.rb: cannot make on MinGW [Ruby 1.9 - Bug #4141].
-
-Thu May 27 00:34:07 2011 James Edward Gray II <jeg2@ruby-lang.org>
-
- * lib/csv.rb: Enhance each() to support Enumerator.
-
-Thu May 26 10:32:11 2011 James Edward Gray II <jeg2@ruby-lang.org>
-
- * lib/csv.rb: Documentation improvements from Ysiad Ferreiras.
- [Ruby 1.9 - Bug #4785]
-
-Thu May 26 15:42:02 2011 Cezary Baginski <cezary.baginski@gmail.com>
-
- * lib/xmlrpc/parser.rb (FaultException): fix to_s and inspect
-
- * test/xmlrpc/parser.rb: test for the above
-
-Wed May 25 11:54:31 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/curses/curses.c: Remove color constants block.
- [Ruby 1.9 - Bug #4748]
-
-Wed May 25 09:56:45 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/curses/curses.c: Add missing documentation for button state, MIN
- and MAX comments. Add Curses. to TABSIZE= and ESCDELAY= methods.
- [Ruby 1.9 - Bug #4747]
-
-Wed May 25 09:35:31 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/benchmark.rb: Restore nodoc for Benchmark::Job and
- Benchmark::Report. [Ruby 1.9 - Bug #4726]
-
-Wed May 25 09:29:38 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/net/pop.rb: Hide implementation details from RDoc.
- [Ruby 1.9 - Bug #4711]
-
-Wed May 25 09:26:29 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/net/ftp.rb: Add :nodoc: for private methods.
- [Ruby 1.9 - Bug #4710]
-
-Wed May 25 09:19:17 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/zlib/zlib.c: Fix Document-method declarations. Improve
- Zlib::GzipFile's method catalog. [Ruby 1.9 - Bug #4695]
-
-Wed May 25 08:22:12 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/erb.rb: Hide documentation for implementation details of ERB.
- [Ruby 1.9 - Bug #4694]
-
-Wed May 25 07:58:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/tempfile.rb (Tempfile.{mkdir,rmdir}): revert for backward
- compatibility.
-
-Wed May 25 07:13:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * spec/README: update the description.
-
-Wed May 25 07:12:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/tempfile.rb (Tempfile.{lock,unlock}_tempfile): refactor.
-
-Tue May 24 17:30:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * spec/README: fix typo.
- patched by bowsersenior. https://github.com/ruby/ruby/pull/24
-
-Tue May 24 07:06:34 2011 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/lib/tk.rb: fail to start Tk.mainloop (exit immediately) on
- some environment (reported on [ruby-talk:381444]).
-
- * ext/tk/lib/tk/canvas.rb: support creating a canvas item object from
- an item ID number.
-
- * ext/tk/lib/tk/image.rb: import documents which are pull-requested.
- [Ruby 1.9 - Feature #4595]
-
- * ext/tk/lib/tk/extconf.rb: search directories for 64bit library (e.g.
- /usr/lib64), add some new configure options (see README.tcltklib),
- and bug fix.
-
- * ext/tk/lib/tk/README.tcltklib: modify docs for some new configure
- options.
-
-Tue May 24 04:01:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * lib/yaml.rb: switch default YAML engine to Psych, old syck engine
- may be enabled via YAML::ENGINE.yamler = "syck". [ruby-core:36374]
-
-Mon May 23 09:45:26 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * include/ruby/defines.h (CASEFOLD_FILESYSTEM): Revert r30508. Forgot to
- include this file in the commit r31692. __APPLE__ is not
- CASEFOLD_FILESYSTEM again, from this time.
-
-Mon May 23 10:01:02 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_asn1.c: Do not parse zero-tagged values as EOC. Do
- not let current length become negative for infinite length constructed
- values. Support constructed values of length zero. Added tests.
-
-Mon May 23 09:19:53 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/net/smtp.rb: Document Net::SMTP::Response. Patch by J.R. Garcia.
- [Ruby 1.9 - Bug #4768]
-
-Mon May 23 09:03:52 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit/parallel.rb: Never Ignore SIGINT. When received
- Interrupt, immediately puts result and exit. [ruby-dev:43571]
-
- * lib/test/unit.rb: When received Interrupt, wait results from workers
- and collect them. [ruby-dev:43571]
-
-Mon May 23 09:08:07 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/mathn.rb: Improve documentation. Patch by Sandor Szucs.
- [Ruby 1.9 - Bug #4767]
-
-Mon May 23 08:45:55 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/ostruct.rb: Improve documentation. Patch by Franklin Webber.
- [Ruby 1.9 - Bug #4761]
-
-Mon May 23 08:35:24 2011 Eric Hodel <drbrain@segment7.net>
-
- * hash.c: Improve documentation of Hash#key. Patch by Utkarsh
- Kukreti. [Ruby 1.9 - Bug #4760]
-
-Mon May 23 08:32:59 2011 Eric Hodel <drbrain@segment7.net>
-
- * enumerator.c: Improve documentation. Patch by Dave Copeland.
- [Ruby 1.9 - Bug #4757]
-
-Mon May 23 07:19:45 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * NEWS (openssl): Infinite length support. Different behavior of
- Constructive and Primitive constructors.
-
-Mon May 23 06:58:33 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_asn1.c: Forbid Constructives whose value is not an
- Array to prevent segfault. Added test.
-
-Mon May 23 06:33:17 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_asn1.c: Forbid Constructive without infinite
- length. This also prevents a segfault. Added test and improved
- documentation.
-
-Mon May 23 05:58:14 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_asn1.c: Fix decoding of infinite length values.
- Simplified ossl_asn1_decode0 by splitting it into three separate
- functions. Add tests.
- [Ruby 1.9 - Bug #4374][ruby-core:35123]
-
-Mon May 23 04:03:46 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_asn1.c (ossl_asn1_initialize): Allow creation of
- Constructives with an explicit tag_class parameter without
- automatically setting tagging to :EXPLICIT. Fixes a bug when encoding
- infinite length primitive values.
-
-Mon May 23 04:03:46 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_asn1.c (ossl_asn1_cons_to_der): Add an additional
- EOC for infinite length Constructives that are supposed to be encoded
- with explicit tagging. Also tabify method correctly.
-
-Mon May 23 03:44:39 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_asn1.c (ossl_asn1data_to_der): Remove redundant
- flag tmp_cons.
-
-Mon May 23 00:35:00 2001 Kenta Murata <mrkn@mrkn.jp>
-
- * bignum.c (dump_bignum, bigmul1_balance, big_split, biglsh_bang),
- (bigrsh_bang, big_split3, bigmul1_toom3, bigmul0): implement Toom3 (Toom-Cook)
- multiplication.
-
- * include/ruby/defines.h: add format prefixes for BDIGIT and BDIGIT_DBL.
-
-Sun May 22 23:24:02 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_asn1.c: Instead of rb_intern use static symbols to
- improve performance.
-
-Sun May 22 21:56:51 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_asn1.c: Use OpenSSL constants V_ASN1_xxx instead of
- hardcoded numbers for initializing class_tag_map.
-
-Sun May 22 21:29:29 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * include/ruby/defines.h (CASEFOLD_FILESYSTEM): Revert r30508. See #4255.
- Now __APPLE__ is not CASEFOLD_FILESYSTEM again.
-
- * load.c (loaded_feature_path, rb_feature_p, load_lock): Revert r30508.
- See #4255. Make $LOADED_FEATURES scanning case-sensitive again.
-
-Sun May 22 18:59:27 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
-
- * ext/openssl/ossl_asn1.c(ossl_asn1_default_tag): avoid using RCLASS_SUPER
- to make it compilable. Plus, tabify and change variable definition style.
-
-Sun May 22 18:26:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * gc.c (vm_xcalloc): use calloc provided by platforms.
- fixes #4754
-
-Sun May 22 11:44:53 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/pty/pty.c: Improve documentation. Patch by David Copeland.
- [Ruby 1.9 - Bug #4756]
-
-Sun May 22 11:26:39 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/timeout.rb: Improve documentation. Patch by David Copeland.
- [Ruby 1.9 - Bug #4755]
-
-Sun May 22 11:21:41 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/ipaddr.rb: Improve documentation. Patch by Sandor Szucs.
- [Ruby 1.9 - Bug #4753]
-
-Sun May 22 11:14:40 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/forwardable.rb: Document def_delegator. Patch by Sandor Szucs.
- [Ruby 1.9 - Bug #4752]
-
-Sun May 22 11:11:41 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/fileutils.rb: Document block behavior of FileUtils.cd. Patch by
- Bil Kleb. [Ruby 1.9 - Bug #4751]
-
-Sun May 22 11:07:47 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/curses/curses.c: Complete documentation. Patch by Vincent
- Batts. [Ruby 1.9 - Bug #4748]
-
-Sun May 22 09:29:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
- use spawn. it prevent that other tests inherit renamed $0.
-
-Sun May 22 08:57:13 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_asn1.c: Default tag lookup in constant time via hash
- instead of previous linear algorithm.
- [Ruby 1.9 - Feature #4309][ruby-core:34813]
-
-Sun May 22 07:54:16 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_digest.c: Explain DSS and DSS1 in documentation.
-
-Sun May 22 07:10:25 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * test/openssl/test_pkey_dsa.rb: Add tests for sign/verify.
-
-Sun May 22 06:07:17 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * test/openssl/test_x509cert.rb: Merge DSA-related tests from ruby_1_8
- branch.
-
-Sun May 22 04:11:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (Init_Thread): add a code comment why the meaningless
- line is necessary.
-
-Sun May 22 01:35:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: modified documentation.
-
-Sat May 21 22:46:26 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_strftime(date_strftime_with_tmx): "%v" means "%e-%b-%Y".
-
-Sat May 21 22:14:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (rb_io_extract_modeenc): accept combination hash and
- File::Constants. (eg. File.open('yo', :mode => File::WRONLY))
- [Feature #4742][ruby-core:36338]
- * test/ruby/test_io.rb (TestIO#test_open_mode): new test.
-
-Sat May 21 21:44:14 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * test/date/test_switch_hitter.rb: new.
-
-Sat May 21 21:18:29 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_{core,parse}.c: moved nearly all core code from ext/date/lib.
- * ext/date/lib/{date,date/format}.rb: removed nearly all code.
-
-Sat May 21 02:58:46 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/.document: Add curses to documented extensions.
- * ext/curses/curses.c: Improve documentation. Patch by Vincent Batts.
- [Ruby 1.9 - Bug #4747]
-
-Sat May 21 02:51:01 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/bigdecimal/lib/bigdecimal/util.rb: Improve documentation. Patch
- by Pete Higgins. [Ruby 1.9 - Bug #4746]
-
-Sat May 21 02:44:10 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/bigdecimal/lib/bigdecimal/jacobian.rb: Document isEqual. Patch
- by Kuba Fietkiewicz. [Ruby 1.9 - Bug #4744]
-
-Sat May 21 02:22:34 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/date/lib/date/format.rb: Document date formats. Patch by
- Clinton Nixon. [Ruby 1.9 - Bug #4743]
-
-Fri May 20 05:15:19 2011 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-
- * gc.c: Fix build on m68k by 'error: too few arguments to
- function 'mark_locations_array''.
-
-Fri May 20 04:23:42 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/scanf.rb: Improve documentation. Patch by Gabe McArthur.
- [Ruby 1.9 - Bug #4735]
-
-Fri May 20 00:58:01 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * enc/trans/ibm737-tbl.rb: greek code page. fixes #4738
-
-Thu May 19 14:44:05 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_signal.rb (test_signal_requiring): skip on Windows.
- we can send SIGINT only to pid 0 and the process itself.
-
-Thu May 19 09:07:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib: revert r31635-r31638 and untabify with expand(1).
-
-Thu May 19 07:47:26 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * test/openssl/test_pkey_rsa.rb: Add tests for sign/verify.
-
-Thu May 19 07:19:16 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_pkey.c: Add documentation.
-
-Thu May 19 07:06:56 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/benchmark.rb: Fix indentation.
- * lib/net/imap.rb: Fix indentation of regular expressions.
-
-Thu May 19 06:36:11 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/net/imap.rb: Fix indentation of EOF for heredoc.
- * lib/debug.rb (Commands): Fix indentation of EOHELP for heredoc.
-
-Thu May 19 06:30:38 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/mkmf.rb: Fix indentation of EOM for heredoc.
-
-Thu May 19 06:16:41 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib: Convert tabs to spaces for ruby files per
- http://bugs.ruby-lang.org/projects/ruby/wiki/DeveloperHowto#coding-style
- Patch by Steve Klabnik [Ruby 1.9 - Bug #4730]
- Patch by Jason Dew [Ruby 1.9 - Feature #4718]
-
-Thu May 19 06:06:07 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/cgi/util.rb: Improve documentation. Patch by Clinton Nixon.
- [Ruby 1.9 - Bug #4733]
- * lib/cgi/core.rb: ditto
- * lib/cgi/cookie.rb: ditto
-
-Thu May 19 06:02:21 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/tempfile.rb: Document Dir.mkdir and Dir.rmdir. Patch by Clinton
- Nixon. [Ruby 1.9 - Bug #4728]
-
-Thu May 19 05:57:52 2011 Eric Hodel <drbrain@segment7.net>
-
- * encoding.c: Improve documentation for Encoding#default_external and
- Encoding#default_internal.
-
-Wed May 18 22:45:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/io/console/lib/console/size.rb (IO#console_size): new
- method. (EXPERIMENTAL)
-
-Wed May 18 22:41:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * internal.h: add for internal use only.
-
-Wed May 18 22:36:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (setup_exception): internal exception should be hidden
-
-Wed May 18 20:25:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * lib/timeout.rb (Timeout#timeout): don't leak "execution expired"
- exception. [Bug #4283] [ruby-core:34534].
-
-Wed May 18 06:09:24 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/cmath.rb: Add some examples and improve documentation. Patch by
- Sandor Szucs. [Ruby 1.9 - Bug #4727]
-
-Wed May 18 05:40:31 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/benchmark.rb: Remove nodoc from Benchmark::Job and
- Benchmark::Report. Patch by Sandor Szucs. [Ruby 1.9 - Bug #4726]
-
-Wed May 18 05:29:26 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/webrick/compat.rb: Improve documentation. Patch by Sandor
- Szucs. [Ruby 1.9 - Bug #4725]
-
-Wed May 18 05:10:35 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/tracer.rb: Improve documentation. Patch by Richard Ramsden.
- [Ruby 1.9 - Feature #4720]
-
-Wed May 18 04:53:41 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/cmath.rb: Improve documentation. Patch by Jason Dew.
- [Ruby 1.9 - Feature #4717]
-
-Wed May 18 04:50:24 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/net/ftp.rb: Improve documentation. Patch by Vincent Batts.
- [Ruby 1.9 - Bug #4710]
-
-Wed May 18 03:14:49 2011 Eric Hodel <drbrain@segment7.net>
-
- * test/test_singleton.rb: Add tests from lib/singleton.rb. Patch by
- Pete Higgins. [Ruby 1.9 - Bug #4715]
-
-Wed May 18 03:03:07 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/singleton.rb: Improve documentation. Patch by Pete Higgins.
- [Ruby 1.9 - Bug #4709]
-
-Tue May 17 21:24:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_mutex_lock): remove remove_signal_thread_list() call.
- It's meaningless because lock_interrupt doesn't call
- add_signal_thread_list().
-
-Tue May 17 20:20:49 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * vm_core.h (rb_thread_struct): add volatile to
- transition_for_lock because it is not protected by lock.
-
-Tue May 17 20:08:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * LEGAL (missing/{elf,tgamma,lgamma_r}.c): they've been replaced by
- public domain implementations.
-
- * LEGAL (vsnprintf.c): it has moved to srcdir from missing/.
-
- * LEGAL (missing/crypt.c): list its original license.
-
-Tue May 17 19:54:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * LEGAL (configure): add missing/setproctitle.c
-
-Tue May 17 19:35:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- Fix FreeBSD test failure.
-
- * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
- use ps -o command instead of ps -o cmd. FreeBSD doesn't support
- -o cmd option.
-
-Tue May 17 08:04:26 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_digest.c: Add documentation.
-
-Tue May 17 07:14:58 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/net/http.rb: Improve documentation of proxy configuration
- methods. Patch by Alf Mikula. [Ruby 1.9 - Bug #4714]
-
-Tue May 17 07:09:01 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/net/pop.rb: Improve documentation. Patch by Vincent Batts.
- [Ruby 1.9 - Bug #4711]
- * lib/net/telnet.rb: ditto
-
-Tue May 17 07:00:41 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/net/http.rb: Fix nodoc for Net::HTTP::version_1_1?. Patch by
- Alf Mikula. [Ruby 1.9 - Bug #4713]
-
-Tue May 17 06:56:26 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/optparse.rb: Add link to make_switch to improve documentation.
- Patch by David Copeland. [Ruby 1.9 - Bug #4708]
-
-Tue May 17 06:50:40 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/observer.rb: Improve documentation. Patch by David Copeland.
- [Ruby 1.9 - Bug #4707]
-
-Tue May 17 06:42:53 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/logger.rb: Improve documentation. Patch by David Copeland.
- [Ruby 1.9 - Bug #4706]
-
-Tue May 17 06:28:14 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/gserver.rb: Improve documentation. Patch by David Copeland.
- [Ruby 1.9 - Bug #4705]
-
-Tue May 17 06:21:15 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/cgi.rb: Add toplevel documentation to class CGI
- * lib/cgi/session.rb: Add overview documentation to CGI::Cookie
- * lib/cgi/html.rb: Don't add CGI::TagMaker documentation to CGI.
- Patch by David Copeland. [Ruby 1.9 - Bug #4704]
- * lib/cgi/core.rb: Clean up CGI documentation. Patch by David
- Copeland. [Ruby 1.9 - Bug #4704]
- * lib/cgi/cookie.rb: Clean up CGI::Cookie documentation. Patch by
- David Copeland. [Ruby 1.9 - Bug #4704]
-
-Tue May 17 05:52:30 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/digest: Improve documentation of Digest, Digest::HMAC and
- Digest::SHA2. Patch by Pete Higgins. [Ruby 1.9 - Bug #4702]
-
-Tue May 17 03:51:42 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/abbrev.rb: Hide copyright and revision information from RDoc.
- Inspired by patch from David Copeland, bug #4703.
-
-Tue May 17 03:33:21 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/timeout.rb (module Timeout): Hide internal constants. Patch by
- Pete Higgins. [Ruby 1.9 - Bug #4701]
-
-Mon May 16 11:21:09 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * configure.in, win32/Makefile.sub (RUBY_SO_NAME): add CPU as prefix
- of RUBY_SO_NAME on x64/ia64 mswin/mingw.
- [Feature #4602]
-
-Mon May 16 08:00:05 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc.rb: Update to RDoc 3.6.1, allows OpenSSL::Digest to be
- found.
-
-Mon May 16 05:49:54 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/drb/acl.rb: Add documentation.
-
-Mon May 16 05:13:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_asn1.c: Add documentation.
-
-Mon May 16 00:32:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_signal.rb (TestSignal#test_signal_process_group):
- skip if the platform doesn't have :pgroup capability. (i.e. skip
- if mswin32)
-
-Sun May 15 23:53:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * include/ruby/intern.h: resurrect old rb_fd_copy().
- * thread.c (rb_fd_copy): ditto.
-
-Sun May 15 23:45:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * include/ruby/intern.h: remove rb_fd_copy() to rb_fd_dup() and
- rb_w32_fdcopy() to rb_w32_fd_dup().
- * win32/win32.c: ditto.
- * thread.c: ditto.
-
-Sun May 15 22:26:39 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * signal.c (rb_f_kill): accept '-SIGXXX' style signal with Symbol or
- implicit convertion with #to_str. [ruby-dev:43169] fixes #4362
- * test/ruby/test_signal.rb (test_signal_process_group): add a test
- for send signal to process group.
-
-Sun May 15 21:22:35 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * cont.c (cont_init): clear macihne_stack_start/end of saved thread to
- prevent mark machine stack of GC'ed Thread. root Fiber is not
- initialized by fiber_init().
- based on a patch by Serge Balyuk [ruby-core:35891] fixes #4612
- * test/ruby/test_fiber.rb (test_gc_root_fiber): add test for it.
-
-Sun May 15 21:04:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * transcode.c (econv_init): revert r31353. [ruby-dev:43512]
-
-Sun May 15 03:39:35 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/zlib/zlib.c: Improve documentation. Patch by Vincent Batts.
- [Ruby 1.9 - Bug #4695]
-
-Sun May 15 03:23:46 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/erb.rb: Document ERB::Compiler. Patch by Simon Chiang.
- [Ruby 1.9 - Bug #4694]
-
-Sun May 15 00:58:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- fix mswin32 build error.
-
- * missing/setproctitle.c: add #ifdef HAVE_UNISTD_H.
- * win32/Makefile.sub (MISSING): add setproctitle.obj
-
-Sat May 14 22:45:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * missing/setproctitle.c: add to include "ruby/util.h".
-
-Sat May 14 19:52:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_rubyoptions.rb (TestRubyOptions#test_set_program_name):
- add for $0 test.
-
-Sat May 14 19:50:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * missing/setproctitle.c (compat_init_setproctitle): use
- ruby_strdup() instead of strdup().
-
-Sat May 14 19:37:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * include/ruby/missing.h: add setproctitle() declaration.
- * missing/setproctitle.c: added.
- * configure.in: add check for missing/setproctitle.c.
-
- * ruby.c (ruby_process_options): add to call compat_init_setproctitle().
- * ruby.c (set_arg0): remove all platform specific code. it's
- moved to missing/setproctitle.c.
- * ruby.c (origarg): remove len field. It's no longer used.
- * ruby.c (get_arglen): removed.
-
- This patch makes a lot of cleanup set_arg0 related code and fixes
- [Feature #4689].
-
-Sat May 14 17:42:21 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * process.c (rb_proc_times): improve documentation.
- [ruby-core:35785] fixes #4581, reported by Andrew Grimm.
-
-Sat May 14 12:12:54 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * test/openssl/test_pkey_dsa.rb: Add basic tests and tests that
- ensure new public key PEM encoding behavior and ensure backward
- compatibility.
- [Ruby 1.9 - Bug #4422] [ruby-core:35328]
- * test/openssl/test_pkey_rsa.rb: Remove line with 'puts'.
-
-Sat May 14 12:06:49 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/context.rb (class RDoc): Fix infinite loop caused by
- re-encountering BasicObject.
-
-Sat May 14 10:32:36 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * test/openssl/test_pkey_rsa.rb: Add tests that ensure new public key
- encoding behavior and also ensure backward compatibility.
- [Ruby 1.9 - Bug #4421] [ruby-core:35327]
-
-Sat May 14 09:50:10 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/yaml/dbm.rb: Add documentation. Patch by Justin Collins.
- [Ruby 1.9 - Bug #4693]
- * lib/yaml/store.rb: ditto
-
-Sat May 14 09:31:43 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc.rb: Updated to RDoc 3.6
-
-Sat May 14 07:30:29 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych.rb: released a new gem, so increasing version.
-
-Sat May 14 05:08:32 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_digest.c
- * ext/openssl/ossl_pkey.c
- * ext/openssl/ossl_pkey.h
- * test/openssl/pkey/test_pkey_rsa.rb
- Reverted premature commit. Sorry for the noise!
-
-Sat May 14 05:02:58 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/uri.rb: Add toplevel documentation. Patch by Vincent Batts.
- [Ruby 1.9 - Bug #4690]
-
-Sat May 14 04:19:06 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * NEWS: Describe altered behaviour for RSA and DSA public key
- encoding. [Ruby 1.9 - Bug #4421, Bug #4422]
- [ruby-core:35327,35328]
-
-Sat May 14 02:57:52 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/ipaddr.rb (unless Socket): Document valid*? methods. Patch by
- Sebastian Martinez. [Ruby 1.9 - Feature #4687]
-
-Sat May 14 02:54:04 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rexml/functions.rb: Add some documentation for REXML::Functions.
- Patch by Sebastian Martinez. [Ruby 1.9 - Feature #4688]
-
-Sat May 14 02:51:42 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/resolv.rb: Hide private method and state-tracking constants from
- RDoc. Patch by Mark Turner. [Ruby 1.9 - Feature #4691]
-
-Fri May 13 19:23:21 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * numeric.c (flo_coerce): Add #flo_coerce documentation.
- Patch by Sebastian Martinez.
- https://github.com/ruby/ruby/pull/21
-
-Fri May 13 18:42:22 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * README.EXT: fix typo. Patch by William Blackerby.
- https://github.com/ruby/ruby/pull/19
-
- * README.EXT.ja: ditto.
-
-Fri May 13 15:22:34 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (rb_w32_select): check invalid handle before doing
- select operations. see [ruby-dev:43513], [ruby-dev:43535]
-
-Fri May 13 08:34:00 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/rdoc.rb: Output summary after documentation report.
- * lib/rdoc/stats/normal.rb: Don't output information for users when
- we're not on a TTY
-
-Fri May 13 07:49:02 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/fileutils.rb: Hide internal methods from RDoc. Patch by Darragh
- Curran. [Ruby 1.9 - Bug #4684]
-
-Fri May 13 07:36:23 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/webrick/httpservlet/erbhandler.rb: Add documentation.
-
-Fri May 13 07:04:33 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/mathn.rb: Fix indentation. Patch by Jason Dew.
- [Ruby 1.9 - Feature #4682]
-
-Fri May 13 06:50:43 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/mathn.rb: Add documentation. Patch by Jason Dew. [Ruby 1.9 -
- Feature #4667]
-
-Fri May 13 05:44:19 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/logger.rb (class Logger): Document Logger#datetime_format.
- Patch by Sergio Gil Perez de la Manga. [Ruby 1.9 - Bug #4678]
-
-Fri May 13 05:39:11 2011 Eric Hodel <drbrain@segment7.net>
-
- * re.c (Init_Regexp): Document option constants. Patch by Vincent
- Batts. [Ruby 1.9 - Bug #4677]
- * lib/uri/common.rb (module URI): Documentation for URI. Patch by
- Vincent Batts. [Ruby 1.9- Bug #4677]
- * lib/uri/ftp.rb (module URI): ditto
- * lib/uri/generic.rb (module URI): ditto
- * lib/uri/http.rb (module URI): ditto
- * lib/uri/https.rb (module URI): ditto
- * lib/uri/ldap.rb (module URI): ditto
- * lib/uri/ldaps.rb (module URI): ditto
- * lib/uri/mailto.rb (module URI): ditto
- * process.c (Init_process): Document Process constants. Patch by
- Vincent Batts. [Ruby 1.9- Bug #4677]
-
-Fri May 13 05:16:38 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rss/atom.rb (module RSS): Document URIs. Patch by Mark Turner.
- [Ruby 1.9 - #4671]
- * lib/rss/rss.rb (module RSS): Document exception classes. Patch by
- Mark Turner. [Ruby 1.9 - #4671]
-
-Fri May 13 02:15:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (select_internal): remove unused variable (interrupt_flag).
-
-Thu May 12 18:24:34 2011 Kouhei Sutou <kou@clear-code.com>
-
- * configure.in: limit to "T" type for prefix of external symbols
- because x86_64-w64-mingw32-gcc on Debian GNU/Linux generates the
- following symbol:
- 0000000068483390 D _GLOBAL__F__conftest_external
-
- Approved by nobu.
-
-Thu May 12 14:50:52 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/dl/test_base.rb (Fiddle::LIBC_SO): its always msvc*.dll on
- mswin/mingw.
-
-Thu May 12 14:47:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/mkmf.rb (Logging.postpone): copy only when temporary logfile
- exists.
-
-Thu May 12 12:24:22 2011 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-
- * ext/openssl/ossl_ssl.c: By trunk@31346, function check of SSLv2 is
- executed.
- However, the problem is not revised in this.
- This adds the control of using function of SSLv2 in made macro by
- function check.
-
-Thu May 12 08:10:46 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/set.rb (class Set): Add nodoc to internal-use methods. Patch
- by Pete Higgins. [Ruby 1.9 - Bug #4665]
-
-Thu May 12 08:01:14 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_pkey_ec.c: Allow encryption when PEM-encoding
- Elliptic Curve private keys.
- [ruby-core:35329] [Bug #4423]
-
-Thu May 12 07:54:59 2011 Eric Hodel <drbrain@segment7.net>
-
- * object.c (rb_obj_equal): Add documentation. Patch by Vincent Batts.
- [Ruby 1.9 - Bug #4664]
- * lib/rexml: ditto
- * lib/mkmf.rb: ditto
- * ext/socket/lib/socket.rb: ditto
-
-Thu May 12 07:30:08 2011 Eric Hodel <drbrain@segment7.net>
-
- * Various .document files: Update .document files to match files which
- have documentation.
-
-Thu May 12 07:18:45 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_pkey_dsa.c: Use generic X.509 SubjectPublicKeyInfo
- format for PEM-encoding DSA public keys.
- [ruby-core:35328] [Bug #4422]
-
-Thu May 12 06:27:31 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
-
- * ext/openssl/ossl_pkey_rsa.c: Use generic X.509 SubjectPublicKeyInfo
- format for encoding RSA public keys.
- [ruby-core:35327] [Bug #4421]
-
-Wed May 11 19:45:27 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
-
- * lib/forwardable.rb: support 'delegate :foo => :bar' for to meet
- by specification of RDOC.
-
-Wed May 11 08:36:38 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/webrick: Add documentation for WEBrick::HTTPAuth
-
-Wed May 11 03:06:35 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rss.rb: Add documentation for RSS. Patch by Steve Klabnik.
- [Ruby 1.9 - Bug #4663]
-
-Tue May 10 14:50:32 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit.rb: Add option for hiding skip messages when test
- ends. #4657
-
- * test/testunit/test_hideskip.rb, test/testunit/test4test_hideskip.rb:
- test for above.
-
-Tue May 10 10:53:04 2011 Eric Hodel <drbrain@segment7.net>
-
- * common.mk (rdoc): Add rdoc-coverage rule
-
-Tue May 10 09:13:21 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/webrick: Add Documentation
-
-Tue May 10 04:22:09 Eric Hodel <drbrain@segment7.net>
-
- * lib/webrick/log.rb: Hide copyright info from ri
- * lib/webrick/httpstatus.rb: ditto
- * lib/webrick/htmlutils.rb: ditto
- * lib/webrick/httpversion.rb: ditto
- * lib/webrick/version.rb: ditto
- * lib/webrick/httpauth/userdb.rb: ditto
- * lib/webrick/httpauth/authenticator.rb: ditto
- * lib/webrick/accesslog.rb: ditto
-
-Mon May 9 20:57:13 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * test/ruby/test_{complex,rational}.rb: added tests.
-
-Mon May 9 20:29:44 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * complex.c (string_to_c_internal): a refactoring.
-
-Mon May 9 18:33:05 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c: Improve documentation for String#start_with? and
- String#end_with?. fixes #4652
- patched by Andrew Grimm <andrew.j.grimm at gmail.com>
-
-Mon May 9 13:49:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * complex.c (string_to_c_internal): support scientific notation.
- patched by Tinco Andringa. https://github.com/ruby/ruby/pull/16
- [ruby-core:36046][Bug #4655]
-
-Mon May 9 11:52:48 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * numeric.c (int_ord): remove K&R style.
- patched by Daehyub Kim. https://github.com/ruby/ruby/pull/17
-
-Sun May 8 22:17:24 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * test/ruby/test_{complex2,complexrational}.rb: use skip.
- * test/date/*.rb: ditto.
-
-Sun May 8 21:02:31 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * test/ruby/test_{complex2,complexrational}.rb: NEVER SKIP.
-
-Sun May 8 21:01:21 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * test/date/test_date_base.rb: fixed.
-
-Sun May 8 20:54:11 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * test/date/*.rb: NEVER SKIP.
-
-Sun May 8 20:37:33 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * test/date/*.rb: reverted 31432.
-
-Sun May 8 20:32:43 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * test/date/*.rb: reverted 31483.
-
-Sun May 8 19:39:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (native_cond_timedwait): add to care EINTR.
- * thread_pthread.c (thread_timer): remove EINTR check.
-
-Sun May 8 19:04:15 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/time.rb (xmlschema): avoid passing any negative numbers.
-
-Sun May 8 18:40:03 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_{parse,strptime}.c: introduced some macros.
-
-Sun May 8 17:17:13 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * test/date/*.rb: use skip /w messages.
-
-Sun May 8 17:04:55 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/lib/date/format.rb (_httpdate): omitted to call zone_to_diff.
-
-Sun May 8 16:56:19 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c (date_s_test_*): use macros.
-
-Sun May 8 10:24:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c: cleanup signal_thread_list related ifdef.
- 1) we don't have to use #ifdef FOO-PLATFORM directly 2) About
- half #ifdef didn't care symbian properly.
-
-Sun May 8 05:19:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/io/wait/test_io_wait.rb: Linux socketpair(2) only support
- AF_UNIX, but windows socketpair doesn't support it. we can't
- avoid platform check. sigh!
-
-Sun May 8 00:13:05 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/io/wait/test_io_wait.rb: use Socket.pair instead of pipe.
- Windows can only treat a socket.
-
-Sat May 7 22:43:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_fd_zero): remove redundant zero fill.
-
-Sat May 7 22:38:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_fd_init): remove volatile qualifier.
-
-Sat May 7 22:34:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_fd_init_copy): new internal api. It provide efficient
- copy constructor semantics.
- * thread.c (do_select): use rb_fd_init_copy().
-
-Sat May 7 15:18:06 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- fix incorrect native_cond_signal call when deadlock was detected.
-
- * thread.c (lock_func): decrement cond_waiting if timeout was happen.
-
-Sat May 7 18:28:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread_pthread.c (USE_MONOTONIC_COND): check the availability
- more strictly.
-
- * thread_pthread.h (rb_thread_cond_t): ditto.
-
-Sat May 7 15:15:10 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- fix win32 native_cond_timedwait() makes SIGSEGV.
-
- * thread_win32.h (rb_thread_cond_struct): add prev field instead of
- last. (ie cond_event_entry is now using double linked list instead of
- single)
- * thread_win32.c (cond_event_entry): add prev field.
-
- * thread_win32.c (__cond_timedwait): remove entry properly if timeout
- was happen.
-
- * thread_win32.c (native_cond_signal): change for double linked list.
- * thread_win32.c (native_cond_broadcast): ditto.
- * thread_win32.c (native_cond_initialize): ditto.
-
-Sat May 7 12:41:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- fix mutex deadlock test hang-up.
-
- * thread_win32.c (abs_timespec_to_timeout_ms): fix 1000x calculation
- mistake. (ie fix hang-up native_cond_timedwait())
-
-Sat May 7 03:14:13 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- sleep_cond use monotonic time if possible.
-
- * thread_pthread.c (native_thread_init): change sleep_cond
- attribute to monotonic.
- * thread_pthread.c (native_sleep): use native_cond_timeout().
-
- * thread_pthread.c (native_cond_timeout): add overflow care.
- * thread_win32.c (native_cond_timeout): ditto.
-
-Sat May 7 02:49:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
- fix win32 compile error.
-
- * thread_win32.c (RB_CONDATTR_CLOCK_MONOTONIC): define
- RB_CONDATTR_CLOCK_MONOTONIC always.
- * thread_pthread.c (RB_CONDATTR_CLOCK_MONOTONIC): ditto.
-
-Sat May 7 02:29:41 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- mutex: deadlock check timeout use monotonic time.
-
- * thread_pthread.c (native_cond_timeout): new internal api.
- it calculate a proper time for argument of native_cond_timedwait().
- * thread_win32.c (native_cond_timeout): ditto.
-
- * thread_pthread.c (thread_timer): use native_cond_timeout()
- instead of get_ts.
- * thread.c (lock_func): ditto.
-
- * thread_pthread.c (get_ts): removed. use native_cond_timeout().
- * thread.c (init_lock_timeout): ditto.
-
-Sat May 7 01:54:21 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (get_ts): add monotonic clock capability.
- * thread_pthread.c (rb_thread_create_timer_thread): use monotonic
- clock if possible.
-
-Sat May 7 01:43:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.h (rb_thread_cond_t): add clockid field. it's
- no longer an alias of pthread_cond_t.
- * thread_pthread.c: adapt new rb_thread_cond_t type.
- * thread.c (mutex_alloc): ditto.
- * thread_win32.c (native_cond_initialize): ditto.
- * configure.in: add check for pthread_cond_attr_setclock() and
- clockid_t type.
-
-Fri May 6 23:29:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_wait_for_single_fd): use ppoll() instead of poll()
- if possible. based on a patch from Eric Wong. [ruby-core:36003].
-
-Fri May 6 23:13:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * configure.in: remove nanosleep check. we no longer use it.
- r20124 removed last usage.
-
-Fri May 6 22:35:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/syck/rubyext.c (mktime_do): extra digits are not used.
-
-Fri May 6 17:43:07 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/syck/rubyext.c (mktime_do): remove unused variable offset.
-
- * ext/syck/syck.h: use #ifdef instead of #if DEBUG.
-
-Fri May 6 16:27:33 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/date/date_core.c (DAY_IN_NANOSECONDS): refix: 31438.
- check with LONG_MAX and cast as long; without this the calculation
- will be done as int and overflow.
-
-Fri May 6 15:01:11 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * ext/syck/rubyext.c (mktime_do): avoid buffer overrun, by
- silently ignoring lesser significant digits. Required buffer
- length can be computable so you might at first think of
- allocating enough memory space on the fly using alloca(). That
- is a wrong idea because when using alloca there is always risk
- of integer overflow. A function that accepts outer-process
- resources like this should not blindly trust its inputs. In
- this particular case we just want to generate milliseconds
- resolution by strtod() so the string in question needs no more
- length than what we originally have. Ignoring lesser
- significant digits should suffice I believe.
-
-Fri May 6 14:25:53 2011 Tinco Andringa <mail@tinco.nl>
-
- * ext/syck/rubyext.c (mktime_do): YAML.load time correctly parse
- usecs smaller than 1 fixes #4571
-
-Thu May 5 22:23:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (native_mutex_reinitialize_atfork): removed
- unused macro.
- * thread_win32.c (native_mutex_reinitialize_atfork): ditto.
-
-Thu May 5 22:09:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/date/date_core.c (DAY_IN_NANOSECONDS): long long int is not
- available on all platforms.
-
-Thu May 5 17:36:31 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * eval.c (frame_func_id): store result of method_entry_of_iseq() to
- cfp->me because method_entry_of_iseq() might become expensive.
-
-Thu May 5 15:03:51 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * eval.c (frame_func_id): __method__ return different name from
- methods defined by Module#define_method with a same block.
- [ruby-core:35386] fixes #4606
- * eval.c (method_entry_of_iseq): new helper function. search control
- frame stack for a method entry which has given iseq.
- * test/ruby/test_method.rb: add tests for #4606
-
-Wed May 4 22:13:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * benchmark/bm_vm4_pipe.rb: Reduced iterations. Too slow benchmark
- is bad.
- * benchmark/bm_vm4_thread_pass.rb: ditto.
-
-Wed May 4 22:08:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/date/test_date_base.rb: don't use no message skip().
-
-Wed May 4 21:11:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * benchmark/bm_io_select2.rb: reduce number of using file
- descriptors. because gdb need some fds.
-
-Wed May 4 19:00:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_wait_for_single_fd): Fix wrong return value.
- * test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb
- (TestWaitForSingleFD#test_wait_for_closed_pipe): test for it.
-
-Wed May 4 18:46:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/-test-/wait_for_single_fd: New. for testing
- rb_wait_for_single_fd() internal function.
- The patch was written by Eric Wong. [ruby-core:35991]
-
- * test/-ext-/wait_for_single_fd/test_wait_for_single_fd.rb: ditto.
-
-Wed May 4 12:46:25 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_wait_for_single_fd): Added POLLNVAL check.
- based on a patch from Eric Wong at [ruby-core:35991].
-
-Wed May 4 11:51:01 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (rb_f_select): remove useless ifdef.
-
-Wed May 4 11:42:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/socket/init.c (wait_connectable): fix error handling code.
- RB_WAITFD_OUT is turned on even though an error occur.
-
-Wed May 4 10:12:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/readline/readline.c (readline_event): use rb_wait_for_single_fd().
- The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
-
-Wed May 4 10:10:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/socket/init.c (wait_connectable): use rb_wait_for_single_fd().
- The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
-
- * ext/socket/init.c (try_wait_connectable, wait_connectable_ensure):
- removed.
-
-Wed May 4 10:07:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/io/wait/wait.c (io_wait): use rb_wait_for_single_fd().
- The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
-
-Wed May 4 10:01:27 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_wait_for_single_fd): new. poll(2) based backend for
- rb_wait_for_single_fd().
- Now only Linux uses it.
-
- The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
-
-Wed May 4 09:56:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_wait_for_single_fd): new.
- * thread.c (select_single): select(2) based backend for
- rb_wait_for_single_fd().
-
- * io.c (make_writeconv): use rb_wait_for_single_fd() instead of
- rb_thread_fd_select().
- * io.c (rb_io_wait_readable): ditto.
- * thread.c (rb_thread_wait_fd_rw): ditto.
-
- * io.c (wait_readable): removed.
- * thread.c (init_set_fd): new helper function.
- * include/ruby/io.h (RB_WAITFD_IN, RB_WAITFD_PRI, RB_WAITFD_OUT):
- new constant for rb_single_wait_fd().
-
- The patch was written by Eric Wong. [Ruby 1.9 - Feature #4531]
-
-Wed May 4 08:04:59 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/yaml_tree.rb: fix time dumping so that
- Syck can load UTC times that Psych dumps.
-
-Wed May 4 07:33:00 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_fd_copy): fix wrong argument.This issue was pointed
- out by Eric Wong. [ruby-core:35982]
-
-Tue May 3 20:29:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/fileutils/test_fileutils.rb (TestFileUtils#test_chmod_symbol_mode):
- Skip sticky bit test if the platform is FreeBSD. It doesn't allow to
- change sticky bit if a target is regular file.
-
-Tue May 3 18:23:57 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * test/date/test_date.rb (TestDate#test_coerce):
- test for [ruby-core:35127].
-
-Tue May 3 04:27:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread.c (rb_thread_select): preserve errno if no error
- occurred.
-
-Tue May 3 03:57:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/intern.h (rb_w32_fdcopy): add prototype. fixes
- #4640
-
-Mon May 2 01:02:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * lib/fileutils.rb (FileUtils#chmod): accept symbolic mode argument.
- The patch was written by takkanm. [ruby-core:26029][Feature #2190]
-
- * lib/fileutils.rb (FileUtils#fu_mode): new helper function.
- * lib/fileutils.rb (FileUtils#symbolic_modes_to_i): ditto.
- * lib/fileutils.rb (FileUtils#mode_mask): ditto.
- * lib/fileutils.rb (FileUtils#user_mask): ditto.
-
- * test/fileutils/test_fileutils.rb (TestFileUtils#test_chmod_symbol_mode):
- new test for the above symbolic mode.
- * test/fileutils/test_fileutils.rb (TestFileUtils#test_chmod_R): ditto.
-
-Mon May 2 00:36:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/socket/init.c (rsock_connect): add to care EINTR. based
- on a patch from Eric Wong at [ruby-core:35621][Bug #4555]
-
-Sun May 1 01:06:24 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_thread_select): release GVL while waiting select().
-
-Sat Apr 30 23:10:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * win32/win32.c (rb_w32_fdcopy): New. This can copy even though
- fdset size exceed FD_SETSIZE.
- * include/ruby/intern.h (rb_fd_copy): use rb_w32_fdcopy()
-
-Sat Apr 30 20:18:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (do_select): Change argument type to rb_fdset_t.
- Now do_select() is free from unexpected hangup if
- HAVE_RB_FD_INIT=1 [Bug #4636]
-
- * thread.c (rb_thread_fd_select, rb_thread_wait_fd_rw):
- adapt new argument type.
-
- * thread.c (rb_thread_select): make dummy implementation.
-
-Sat Apr 30 20:16:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_fd_copy): Change function argument. Now
- rb_fd_copy() has fully copy semantics.
- * include/ruby/intern.h: ditto.
-
-Sat Apr 30 20:11:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * include/ruby/intern.h (rb_thread_select): mark as deprecated.
-
- * ext/io/wait/wait.c (wait_readable): use rb_thread_fd_select
- instead of rb_thread_select.
- * ext/socket/init.c (wait_connectable0): ditto.
- * ext/readline/readline.c (readline_event): ditto.
- * io.c (rb_io_wait_readable, wait_readable, rb_io_wait_writable,
- wait_writable): ditto.
-
-Sat Apr 30 20:06:36 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (do_select): remove useless ifdef. time calculation
- is not heavy weight.
-
-Sat Apr 30 16:48:36 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * benchmark/bm_io_select3.rb: New.
-
-Sat Apr 30 16:27:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (copy_stream_body, rb_io_s_copy_stream): move rb_fd_init()
- from copy_stream_body to rb_io_s_copy_stream. fds of passing
- rb_fd_term() have to be guaranteed initialized.
-
-Sat Apr 30 16:13:17 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * benchmark/bm_io_select.rb, benchmark/bm_io_select2.rb: New.
- based on a patch from Eric Wong at [Feature #4531]
-
-Sat Apr 30 03:25:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/io/wait/test_io_wait.rb: New. for testing ext/io/wait.
- the patch was written by Eric Wong. [Feature #4531]
-
-Sat Apr 30 00:34:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * include/ruby/win32.h: remove redundant declaration of
- rb_w32_time_subtract().
-
-Sat Apr 30 00:16:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (gvl_init): fix hangup if GVL_SIMPLE_LOCK=1.
- We don't have to call mutex_unlock() before initialize it!
-
-Fri Apr 29 13:15:15 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_win32.c (native_cond_timedwait): New. r31373 caused
- win32 build failure.
-
- * thread_win32.c (__cond_timedwait, abs_timespec_to_timeout_ms):
- New helper functions.
-
- * win32/win32.c (rb_w32_time_subtract): rename from subtract and
- remove static.
-
-Fri Apr 29 10:43:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * benchmark/bm_vm4_pipe.rb: Add two new benchmark for GVL
- performance. They was written by Koichi Sasada.
- * benchmark/bm_vm4_thread_pass.rb: ditto.
-
-Fri Apr 29 10:25:31 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * vm_method.c (rb_clear_cache_by_class): Revert r29673. It made
- a segmentation fault regression. [Bug #4289][ruby-core:34554].
-
-Fri Apr 29 10:24:51 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (make_writeconv): do not add textmode newline decorator if any
- newline decorator is set already. fixes #4618, fixes #4619
-
-Fri Apr 29 10:17:42 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (lock_func): small cleanup.
-
-Fri Apr 29 10:07:13 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_mutex_lock, lock_func): Avoid busy loop and
- performance regression. bm_vm3_thread_mutex.rb performance
- change from 109.064sec to 16.331sec. [Feature #4607]
-
- * thread.c (init_lock_timeout): New helper function.
-
-Thu Apr 28 16:15:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/{win32.c,dir.h} (rb_w32_uopendir): new API to pass UTF-8 path.
-
- * win32/win32.c (opendir_internal, rb_w32_opendir): extract and merge
- common part of rb_w32_opendir() and rb_w32_uopendir().
-
- * dir.c (do_opendir, glob_helper): encoding.
-
- * dir.c (dir_initialize, do_opendir): convert path to UTF-8 and call
- rb_w32_uopendir() instead of rb_w32_opendir() on Windows.
- fixes #4491, reported by Joey Zhou.
-
-Thu Apr 28 15:32:53 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/dl/test_base.rb (DL::LIBC_SO): its always msvc*.dll on
- mswin/mingw.
-
-Thu Apr 28 06:07:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/csv.rb (CSV::open): suppress universal newline decorator.
- fixes #4603
-
- * lib/csv.rb (CSV.read): no mode is needed.
-
-Thu Apr 28 06:06:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (rb_io_extract_modeenc, rb_f_backquote): set default text
- mode. fixes #4619
-
- * io.c (pipe_open): set universal newline decorator if needed.
-
-Wed Apr 27 11:33:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * enc/trans/emoji_iso2022_kddi.trans: ISO-2022-JP-KDDI doesn't have
- CP932 UDA. Another reason is emacs-mule: the implementation of
- stateless-iso-2022-jp doesn't support beyond 94x94 (0x7fxx);
- but CP932 UDA is in 7Fxx-92xx.
-
-Wed Apr 27 07:42:44 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (STRIP): use proper toolchain. based on a patch
- from Jon Forums at [ruby-core:35909]. fixes #4617
-
-Wed Apr 27 01:20:59 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c (date_zone_to_diff): renamed.
- * ext/date/date_parse.c: ditto.
- * ext/date/date_strptime.c: ditto.
-
-Wed Apr 27 01:16:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * encoding.c (enc_find): accept Encoding objects.
-
-Wed Apr 27 00:55:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * transcode.c (econv_opts): add newline option.
-
- * io.c (validate_enc_binmode, rb_io_extract_modeenc): set newline
- decorator according to open mode.
-
- * transcode.c (rb_econv_prepare_options): new function, to prepare
- econv options with newline flags.
-
- * include/ruby/encoding.h (ECONV_NEWLINE_DECORATOR_MASK): add.
-
-Wed Apr 27 00:51:01 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (rb_file_truncate): fix function.
-
- * include/ruby/win32.h (ftruncate, truncate, ftello, fseeko): non-64
- versions on mingw are useless because they use int32_t. fixes #4564
-
-Wed Apr 27 00:50:33 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: modified validation methods.
- * ext/date/lib/date.rb: ditto.
-
-Wed Apr 27 00:00:37 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c (dt_lite_set_tmx): should get df value.
-
-Tue Apr 26 22:34:04 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/lib/date/format.rb (_iso8601): allowed day only civil
- date. disallowed separatorless day only ordinal date.
-
-Mon Apr 25 21:31:36 2011 Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
-
- * ext/openssl/extconf.rb: Should check SSLv2_*method.
- openssl compiled with "no-ssl2" the extconf don't fail
- when running `make' having this compilation errors.
- Patched by Laurent Arnoud. fixes #4562, #4556
-
-Mon Apr 25 20:53:32 2011 Tajima, Akio <artonx@yahoo.co.jp>
-
- * win32/win32.c (kill): accept 0 only sig is SIGINT #4596
-
-Mon Apr 25 19:59:47 2011 Tajima, Akio <artonx@yahoo.co.jp>
-
- * win32/win32.c (kill): accept 0 as pid, fixes #4596
-
-Mon Apr 25 16:43:45 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * random.c (random_rand): remove unused variables.
-
- * struct.c (rb_struct_define_without_accessor): ditto.
-
- * strftime.c (rb_strftime_with_timespec): ditto.
-
- * sprintf.c: ditto.
-
- * time.c (time_asctime): remove useless GetTimeval().
-
- * thread_pthread.c: cast to (void *) for %p.
-
-Mon Apr 25 11:02:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/ripper/lib/ripper/sexp.rb: fix rdoc around sexp.
- patched by Sho Hashimoto. fixes #4599
-
-Mon Apr 25 08:24:04 2011 Shota Fukumori <sorah@tubusu.net>
-
- * random.c (rb_f_rand, random_s_rand): RDocs for them.
-
-Mon Apr 25 07:18:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * random.c (random_s_rand, Init_Random): Random.rand should behave as
- Random::DEFAULT.rand rather than Kernel#rand.
-
- * random.c (rand_range, random_rand): rand_range function extracted
- from random_rand function.
-
- * random.c (rb_f_rand): accept a Range argument as Random#rand
- [ruby-dev:43427] #4605
-
-Mon Apr 25 03:31:06 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/time.rb: require 'date'.
- * ext/date/lib/date/format.rb: removed require line.
-
-Mon Apr 25 03:08:39 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/lib/date/format.rb: require 'date'.
-
-Mon Apr 25 03:04:16 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/lib/date/format.rb (_iso8601): added a pattern.
-
-Mon Apr 25 02:51:22 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/date/lib/date/format.rb: require 'date_core.so'.
- date/format needs methods which are now in date_core.so.
- This breaks make rdoc which uses Date._parse from time.rb.
-
-Mon Apr 25 02:47:46 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/lib/date/format.rb (_iso8601): fixed a bug of regex.
-
-Mon Apr 25 02:12:26 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/lib/date/format.rb: an adjustment of regex.
-
-Mon Apr 25 01:58:50 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/lib/date/format.rb: omitted to call _parse.
-
-Mon Apr 25 01:03:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * string.c (rb_to_id): remove unused variable.
-
-Sun Apr 24 22:19:05 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * complex.c, rational.c: omitted some method calls.
-
-Sun Apr 24 02:57:27 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_parse.c (n2i): takes long.
-
-Sun Apr 24 02:51:06 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_parse.c: reverted.
-
-Sun Apr 24 02:25:23 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * include/ruby/intern.h: pcc can't use __builtin_constant_p.
-
- * vm_exec.c: change condition.
-
-Sun Apr 24 01:58:01 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/date/date_core.c (leap_p): suppress warning: parentheses.
-
- * ext/date/date_core.c (date_s__parse_internal): remove unused
- variable "str".
-
- * ext/date/date_parse.c (parse_ddd_cb): use RSTRING_LENINT.
-
- * ext/date/date_strftime.c (date_strftime_with_tmx): remove unused
- variable.
-
-Sun Apr 24 00:34:23 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_parse.c: removed some unused macros. use strchr()
- instead of index().
-
-Sat Apr 23 21:29:42 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: replacement of implementation of
- _parse. [experimental]
- * ext/date/date_parse.c: new.
- * ext/date/lib/date/format.rb: removed ruby version of _parse.
-
-Fri Apr 22 12:04:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * array.c (rb_ary_sort_bang): fix rdoc.
- patched by burningTyger. https://github.com/ruby/ruby/pull/11
-
-Fri Apr 22 11:49:49 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/xmlrpc/create.rb (XMLRPC::Create#conv2value):
- XML-RPC's int is 32bit int, and Fixnum also may be beyond 32bit.
-
- * lib/xmlrpc/create.rb (XMLRPC::Create#conv2value):
- XML-RPC doesn't allow Infinity and NaN.
- http://www.xmlrpc.com/spec
-
-Fri Apr 22 04:16:14 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/parser.c (parse): strings from psych have proper taint
- markings.
-
- * test/psych/test_tainted.rb: test for string taint
-
-Thu Apr 21 01:30:02 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * random.c (rb_f_srand): fix rdoc: srand(0)'s 0 is a seed.
- [ruby-core:35833] fixes #4590
-
-Thu Apr 21 01:01:28 2011 Masaya Tarui <tarui@ruby-lang.org>
-
- * win32/win32.c (CreateChild): maximum length of lpCommandLine is
- 32,768 characters, including the Unicode terminating null character.
-
-Wed Apr 20 21:32:11 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_strptime.c (date__strptime_internal): do not
- overwrite local variables.
-
-Wed Apr 20 14:41:28 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (rb_str_each_line): check string's length when compare
- separator and string. [ruby-core:35815] fixes #4586
-
-Wed Apr 20 00:02:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * misc/ruby-mode.el (ruby-parse-partial): use position of open paren.
-
-Tue Apr 19 01:00:21 2011 Tajima Akio <artonx@yahoo.co.jp>
-
- * test/ruby/test_io.rb (TestIO#test_cross_thread_close_fd):
- skip cross thread pipe close if windows
-
-Mon Apr 18 12:15:46 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_range.rb (TestRange#test_step_ruby_core_35753):
- avoid float error. [ruby-core:35804]
-
-Sun Apr 17 00:20:14 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_{core,strftime}.c: use struct tmx instead of vtm.
- * ext/date/date_tmx.h: new.
-
-Sat Apr 16 22:23:52 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_strftime.c (date_strftime_wo_timespec): changed
- the way of validation of locale modifiers.
-
-Sat Apr 16 21:55:12 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: replacement of implementation of
- _strptime. [experimental]
- * ext/date/date_strptime.c: new.
- * ext/date/lib/date/format.rb: removed ruby version of _strptime.
-
-Sat Apr 16 10:18:30 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * vm.c (Init_VM): suppress warning: "OPT_BASIC_OPERATIONS" is not
- defined.
-
-Fri Apr 15 23:41:18 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * ruby.c (proc_options): suppress warning:
- "ALLOW_DEFAULT_SOURCE_ENCODING" is not defined.
-
-Fri Apr 15 15:10:29 2011 Akinori MUSHA <knu@iDaemons.org>
-
- * lib/uri/generic.rb (#route_from_path): Fix a bug where
- URI('http://h/b/').route_to('http://h/b') wrongly returned './'
- (should be '../b'). [Bug #4476]
-
-Fri Apr 15 14:58:06 2011 Akinori MUSHA <knu@iDaemons.org>
-
- * lib/fileutils.rb (FileUtils#touch): Fix corrupted output when
- mtime is specified in addition to nocreate (and verbose).
- ref [ruby-dev:43401]
-
-Thu Apr 14 23:43:43 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * numeric.c (ruby_float_step): wrong loop condition.
- fixes [ruby-core:35753], reported by Joey Zhou.
-
- * test/ruby/test_range.rb (TestRange#test_step_ruby_core_35753):
- test above change.
-
-Thu Apr 14 22:48:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit.rb (Test::Unit::Options#setup_options): set possible
- values for completion. no conversion is needed.
-
- * lib/test/unit.rb (Test::Unit::Runner::Worker#initialize): use
- positional arguments instead of keyword arguments.
-
- * lib/test/unit.rb (Test::Unit::Runner#jobs_status): io/console may
- not be available. use 80 as the last resort if IO#winsize and
- COLUMNS are unavailable.
-
- * lib/test/unit.rb (Test::Unit::Runner::Worker#died): rename using a
- verb.
-
- * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): check if worker
- is signaled and use its exit status.
-
- * lib/test/unit.rb (Test::Unit::Runner::Worker#dead): no longer @in
- and @out are separated.
-
-Thu Apr 14 21:23:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * variable.c (rb_autoload_p): search superclasses as same as actual
- loading. fixes [ruby-core:35679]
-
-Thu Apr 14 21:21:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/win32.h (frexp, modf): wrongly declared as pure in
- mingw math.h.
-
- * include/ruby/win32.h (ftruncate, truncate): mingw64 misses
- prototypes.
-
- * win32/win32.c (rb_w32_read): suppress warning.
-
-Thu Apr 14 19:55:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * lib/fileutils.rb (FileUtils#touch): fix corrupted output when
- FileUtils.touch(:nocreate => true, :verbose => true) case.
- The patch was written by Hiroyuki Iwatsuki. [ruby-dev:43401]
-
-Thu Apr 14 16:01:45 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * io.c (rb_f_syscall): suppress warning: "HAVE___SYSCALL" is not
- defined.
-
-Thu Apr 14 00:41:09 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * thread.c (thread_fd_close_i): IOError exception should be assigned
- to rb_thread_t::thrown_errinfo.
-
-Wed Apr 13 20:12:26 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * io.c (rb_io_fdatasync): remove unused variable.
-
-Tue Apr 12 20:54:12 2011 Tanaka Akira <akr@fsij.org>
-
- * include/ruby/st.h: parenthesize macro arguments.
-
-Tue Apr 12 19:19:50 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/uri/common.rb: avoid race condition. fixes #4572
-
-Tue Apr 12 18:07:13 2011 TAKAO Kouji <kouji@takao7.net>
-
- * ext/readline/extconf.rb: --disable-libedit to disable
- libedit. fixes #4550
-
-Tue Apr 12 10:37:39 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * include/ruby/win32.h: VC doesn't have ftruncate() and others, but
- ruby needs HAVE_ macros to use our emulation functions.
- (fix the problem of 31262)
-
-Tue Apr 12 01:33:00 2011 Luis Lavena <luislavena@gmail.com>
-
- * configure.in: properly evaluate existence of truncate, ftruncate
- and ftello for MinGW. [ruby-core:35678]
- * win32/win32.c: rename truncate, ftruncate and ftello to avoid
- redefinitions.
- * win32/win32.h: ditto.
-
-Mon Apr 11 21:51:52 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c: revert r31230. Because it made a regression.
- [ruby-core:35631]
-
-Mon Apr 11 21:49:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_io.rb: Added TestIO#test_cross_thread_close_stdio
- and TestIO#test_cross_thread_close_fd.
- The patch was written by Eric Wong. [ruby-core:35669]
-
-Mon Apr 11 21:15:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * file.c (rb_group_member): kill 256K of stack usage.
- the patch was written by Eric Wong. [ruby-core:35699]
-
-Mon Apr 11 07:24:13 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/openssl/ossl.c: Fix typo, document version constants.
-
-Sun Apr 10 22:23:45 2011 Tanaka Akira <akr@fsij.org>
-
- * include/ruby/ruby.h: parenthesize macro arguments.
-
-Sat Apr 9 23:31:47 2011 Shota Fukumori <sorah@tubusu.net>
-
- * ext/stringio/stringio.c (strio_each, strio_readlines):
- Use `NUM2LONG` instead of `FIX2INT`. Fixes [ruby-dev:43395].
-
-Sat Apr 9 23:22:27 2011 Shota Fukumori <sorah@tubusu.net>
-
- * ext/stringio/stringio.c (strio_each):
- Fix exception message and don't raise immediately if block is not
- given.
- Fixes [ruby-dev:43394].
-
- * test/stringio/test_stringio.rb (test_each_line_limit_0):
- Fix test for above.
-
-Sat Apr 9 21:54:15 2011 Shota Fukumori <sorah@tubusu.net>
-
- * ext/stringio/stringio.c (strio_each, strio_readlines):
- limit must not be zero. Fixes [ruby-dev:43392].
-
- * test/stringio/test_stringio.rb: Add tests for above.
-
-Sat Apr 9 18:01:36 2011 Tanaka Akira <akr@fsij.org>
-
- * include/ruby/util.h: parenthesize macro arguments.
-
-Fri Apr 8 16:01:56 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/stringio/stringio.c (strio_getline): check whether str is
- a string when str and lim are given.
- https://twitter.com/watson1978/status/56225052152168449
-
-Thu Apr 7 20:03:52 2011 Tanaka Akira <akr@fsij.org>
-
- * include/ruby/io.h: parenthesize macro arguments.
-
-Wed Apr 6 21:08:31 2011 Tanaka Akira <akr@fsij.org>
-
- * include/ruby/intern.h: parenthesize macro arguments.
-
-Wed Apr 6 15:12:40 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/openssl/ossl_pkey_dh.c (ossl_dh_initialize):
- pop pushed error after each try of reading. fixes #4550
-
- * ext/openssl/ossl_pkey_dsa.c (ossl_dsa_initialize): ditto.
-
- * ext/openssl/ossl_pkey_ec.c (ossl_ec_initialize): ditto.
-
-Wed Apr 6 11:36:44 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/openssl/ossl_pkey_rsa.c (ossl_rsa_initialize):
- pop pushed error after each try of reading. fixes #4550
-
-Tue Apr 5 20:33:43 2011 Tanaka Akira <akr@fsij.org>
-
- * include/ruby/encoding.h: parenthesize macro arguments.
-
-Mon Apr 4 22:02:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/io/nonblock/nonblock.c (io_nonblock_set): Avoid F_SETFL if
- we're not changing the O_NONBLOCK bit. F_SETFL is an expensive
- operation since it needs to affect all processes with the same
- file object.
- The patch is written by Eric Wong. [ruby-core:35556]
-
-Mon Apr 4 21:41:26 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (rb_io_syswrite): While local FS writes are usually
- buffered, the buffers can be full or the file opened with
- O_SYNC. IO#syswrite can also be used on blocking IOs
- (pipe/socket) just like IO#write.
- The patch is written by Eric Wong. [ruby-core:35554]
-
-Mon Apr 4 11:50:40 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/test_tempfile.rb: simply ignore platform dependent testcases
- instead of skipping.
-
-Sun Apr 3 22:52:22 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * ext/syslog/syslog.c: improve rdoc.
- a patch by Jonas Pfenniger. [ruby-core:35592] fixes #4545
-
-Sun Apr 3 22:10:09 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/zlib/zlib.c: parenthesize macro arguments.
-
-Sun Apr 3 21:33:58 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * configure.in: disable fdatasync again on Mac OS X.
- [ruby-core:35493][Bug #4500]
-
-Sun Apr 3 21:16:20 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (io_reopen): IO#close releases GVL if possible.
- close() may block for certain file types (NFS, SO_LINGER
- sockets, inotify), so let other threads run. The patch was
- created by Eric Wong [ruby-core:35555][Bug #4527]
-
- * io.c (fptr_finalize): ditto.
-
- * io.c (maygvl_fclose): new.
- * io.c (nogvl_fclose): ditto.
- * io.c (maygvl_close): ditto.
- * io.c (nogvl_close): ditto.
-
-Fri Apr 1 22:25:50 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/syslog/syslog.c: parenthesize macro arguments.
-
-Fri Apr 1 18:53:06 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * lib/webrick/cookie.rb (WEBrick::Cookie.parse): 'white space is
- permitted between tokens' according to RFC2965. Though 'Netscape
- spec' does not define the syntax clearly, make it tolerant as a
- server. As a real-world example, rest-client gem sends
- 'Cookie: foo=1;bar=2'
-
- * test/webrick/test_cookie.rb (test_parse_non_whitespace): test it.
-
-Fri Apr 1 13:19:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_core.h (RUBY_VM_CHECK_INTS_TH): merge a patch by ko1
- in [ruby-dev:43373].
-
-Thu Mar 31 23:15:46 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * misc/ruby-mode.el (ruby-brace-to-do-end, ruby-do-end-to-brace):
- adjust space between block beginning and block arguments
-
-Thu Mar 31 20:42:05 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/strscan/strscan.c: parenthesize macro arguments.
-
-Thu Mar 31 18:06:12 2011 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_insnhelper.c (vm_get_ev_const): should ignore crefs with
- the NODE_FL_CREF_PUSHED_BY_EVAL flag.
-
-Thu Mar 31 16:49:56 2011 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_insnhelper.c (vm_get_ev_const): search root cref properly.
- [ruby-dev:43365]
-
-Thu Mar 31 14:50:25 2011 Shugo Maeda <shugo@ruby-lang.org>
-
- * eval.c (rb_mod_s_constants): should ignore crefs with
- the NODE_FL_CREF_PUSHED_BY_EVAL flag.
-
-Wed Mar 30 22:55:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * misc/ruby-mode.el (ruby-toggle-block): toggle do/end and {}.
-
- * misc/ruby-mode.el (ruby-move-to-block): move to opening of
- block.
-
-Wed Mar 30 14:35:15 2011 Shugo Maeda <shugo@ruby-lang.org>
-
- * vm_insnhelper.h (COPY_CREF): should copy
- the NODE_FL_CREF_PUSHED_BY_EVAL flag to hide constants from
- methods defined by class_eval. [ruby-dev:43365]
-
-Wed Mar 30 00:24:53 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/stringio/stringio.c: parenthesize macro arguments.
-
-Tue Mar 29 21:51:31 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * object.c (rb_String): Kernel#String should call to_str before to_s.
-
-Tue Mar 29 10:28:08 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/webrick/test_filehandler.rb
- (WEBrick::TestFileHandler#test_short_filename): the cgi doesn't exist
- on current directory.
-
-Tue Mar 29 05:19:57 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/raddrinfo.c: parenthesize macro arguments.
-
-Tue Mar 29 00:03:51 2011 Tajima Akio <artonx@yahoo.co.jp>
-
- * test/webrick/test_filehandler.rb (test_short_filename):
- read real short filename by cmd because smb mounted files
- have different naming convention.
-
-Mon Mar 28 11:38:08 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/date/date_core.c (date_s_today): use int for year.
-
- * ext/date/date_core.c (datetime_s_now): ditto.
-
-Mon Mar 28 11:07:41 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/extmk.rb: set MFLAGS from MAKEFLAGS when using nmake.
-
-Mon Mar 28 11:07:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * common.mk (love): all you need is love.
-
-Sun Mar 27 23:16:31 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/ipsocket.c: parenthesize macro arguments.
-
-Sun Mar 27 16:55:34 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * misc/ruby-mode.el (ruby-mode-map): remove unnecessary
- binding. fixes
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468952
-
- * misc/ruby-mode.el: suppress warnings at byte compile. fixes
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502926
-
-Sun Mar 27 11:18:35 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: removed unused variables.
-
-Sat Mar 26 15:16:09 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/getaddrinfo.c: parenthesize macro arguments.
-
-Sat Mar 26 05:27:34 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/date/lib/date/format.rb (DateTime#strftime): removed because
- date_core defines it.
-
-Fri Mar 25 21:59:45 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: should not force cast with macros.
-
-Fri Mar 25 21:56:10 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/sdbm/init.c: parenthesize macro arguments.
-
-Fri Mar 25 19:39:40 2011 Ben Walton <bwalton@artsci.utoronto.ca>
-
- * test/test_syslog.rb:
- Skip syslog tests that rely on LOG_PERROR unless it's defined
-
- Instead of checking looking at the platform to determine if the tests
- relying on LOG_PERROR should be run, look for the definition of the
- constant as this will be robust against all platforms as long as the
- underlying syslog.c code sets it up correctly.
-
- This specifically addresses failures on Solaris 9.
-
- Use LOG_PID instead of LOG_PERROR in Syslog.open test
-
- LOG_PERROR isn't a POSIX option for syslog, so it fails on platforms
- that don't define it. Solaris 9 and 10 are examples of this.
-
- Use LOG_PID instead.
-
-Fri Mar 25 15:42:17 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/sdbm/_sdbm.c (sdbm_open): use size_t.
-
- * ext/syck/bytecode.c: ditto.
-
- * ext/sdbm/_sdbm.c (delpair): use ptrdiff_t.
-
- * ext/sdbm/init.c: use RSTRING_LENINT.
-
- * ext/dl/handle.c: suppress warning: shorten-64-to-32.
-
- * ext/strscan/strscan.c: ditto.
-
- * ext/syck/emitter.c: ditto.
-
- * ext/syck/implicit.c: ditto.
-
- * ext/syck/syck.c: ditto.
-
- * ext/syck/token.c: ditto.
-
-Fri Mar 25 12:14:58 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf/nkf-utf8/nkf.c: import nkf 7f18e30.
-
-Fri Mar 25 11:49:29 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_process.rb (TestProcess#test_no_curdir): skip silently
- on Windows, because this tests a platform specific feature and it'll
- never be supported on ruby on Windows.
-
- * test/ruby/test_dir_m17n.rb
- (TestDir_M17N#test_filename_extutf8_invalid,
- TestDir_M17N#test_filename_as_bytes_extutf8): ditto.
-
- * test/open-uri/test_open-uri.rb
- (TestOpenURI#test_find_proxy_case_sensitive_env): ditto.
-
- * test/dl/test_handle.rb (DL::TestHandle#test_NEXT,
- DL::TestHandle#test_DEFAULT): ditto.
-
-Thu Mar 24 23:06:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_insnhelper.c (vm_get_ev_const): should not autoload in
- defined? mode.
-
- * variable.c (rb_const_defined_0): fix autoloading base.
- [ruby-core:35509]
-
-Thu Mar 24 22:48:43 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/sdbm/_sdbm.c: parenthesize macro arguments.
-
-Thu Mar 24 14:45:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/openssl/ossl.c: suppress warning: shorten-64-to-32.
-
- * ext/openssl/ossl.h: ditto.
-
- * ext/openssl/ossl_asn1.c: ditto.
-
- * ext/openssl/ossl_bio.c: ditto.
-
- * ext/openssl/ossl_bn.c: ditto.
-
- * ext/openssl/ossl_cipher.c: ditto.
-
- * ext/openssl/ossl_hmac.c: ditto.
-
- * ext/openssl/ossl_ns_spki.c: ditto.
-
- * ext/openssl/ossl_ocsp.c: ditto.
-
- * ext/openssl/ossl_pkcs5.c: ditto.
-
- * ext/openssl/ossl_pkey.c: ditto.
-
- * ext/openssl/ossl_pkey_dh.c: ditto.
-
- * ext/openssl/ossl_pkey_dsa.c: ditto.
-
- * ext/openssl/ossl_pkey_ec.c: ditto.
-
- * ext/openssl/ossl_pkey_rsa.c: ditto.
-
- * ext/openssl/ossl_rand.c: ditto.
-
- * ext/openssl/ossl_ssl.c: ditto.
-
- * ext/openssl/ossl_x509ext.c: ditto.
-
- * ext/openssl/ossl_x509name.c: ditto.
-
-Thu Mar 24 11:48:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/openssl/ossl_rand.c (ossl_rand_egd_bytes): use NUM2INT because
- the result is used with functions whose argument is int.
-
- * ext/openssl/ossl_ssl.c (ossl_sslctx_setup): ditto.
-
- * ext/openssl/ossl_x509store.c (ossl_x509store_set_purpose): ditto.
-
- * ext/openssl/ossl_x509store.c (ossl_x509store_set_trust): ditto.
-
- * ext/openssl/ossl_x509store.c (ossl_x509stctx_set_purpose): ditto.
-
- * ext/openssl/ossl_x509store.c (ossl_x509stctx_set_trust): ditto.
-
-Thu Mar 24 11:36:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/openssl/ossl_x509name.c: id_aref's type is ID.
-
-Thu Mar 24 10:04:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/io/console/console.c (console_set_winsize):
- suppress warning: shorten-64-to-32.
-
-Thu Mar 24 09:56:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/openssl/ossl_ocsp.c (ossl_ocspreq_verify): flags is VALUE,
- so it should use NUM2INT.
-
- * ext/openssl/ossl_ocsp.c (ossl_ocspbres_verify): ditto.
-
-Wed Mar 23 21:09:29 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/readline/readline.c: parenthesize macro arguments.
-
-Wed Mar 23 08:07:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * numeric.c (flo_round): fix inaccurate results.
-
-Wed Mar 23 00:12:16 2011 Tajima Akio <artonx@yahoo.co.jp>
-
- * win32/win32.c: wait process real termination after reading
- exit code. fixes #4518
-
-Tue Mar 22 21:20:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/rubygems/test_case.rb: save current dir to @current_dir
- before Dir.chdir.
-
-Tue Mar 22 20:10:04 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/psych/parser.c: parenthesize macro arguments.
-
-Tue Mar 22 20:10:01 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ruby_missing.h: parenthesize macro arguments.
-
-Tue Mar 22 13:33:22 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * ext/openssl/lib/openssl/buffering.rb: removed circular require of
- openssl.rb.
-
- * ext/openssl/lib/openssl/*: removed following comment for transition
- measures of avoiding circular require. No one claimed about this as
- far as I know.
- ##
- # Should we care what if somebody require this file directly?
- # require "openssl"
-
-Tue Mar 22 10:57:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * test/runner.rb: set Gem::TestCase's @@project_dir.
-
- * lib/rubygems/test_case.rb: set Gem::TestCase's @@project_dir only
- when it is not defined.
-
-Tue Mar 22 09:38:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * numeric.c (flo_round): use pow instead of while-loop. fixes #4510
- patched by Alex Young [ruby-core:35526]
-
-Tue Mar 22 06:47:46 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/date/date_strftime.c (date_strftime_wo_timespec):
- suppress warning: shorten-64-to-32.
-
-Tue Mar 22 06:42:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/date/date_core.c: suppress warning: shorten-64-to-32.
-
-Tue Mar 22 06:41:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/test/unit/parallel.rb: remove unused variable.
-
-Tue Mar 22 06:19:42 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * enc/utf_16le.c: suppress warning: shorten-64-to-32.
-
- * ext/dbm/dbm.c: ditto.
-
- * ext/gdbm/gdbm.c: ditto.
-
- * parse.y (Init_ripper): suppress warning: unused value.
-
-Mon Mar 21 11:21:32 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit.rb: Refactoring. Unified if and elsif.
-
-Sun Mar 20 23:09:34 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_strftime.c: checks duplicated modifiers.
-
-Sun Mar 20 22:32:30 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_strftime.c: removed unused code and arguments.
-
-Sun Mar 20 21:34:49 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: replacement of implementation of
- strftime. It has some limitations that is same as Time's
- one. [experimental]
- * ext/date/date_strftime.c: new.
- * ext/date/lib/date/format.rb: removed ruby version of strftime.
-
-Sun Mar 20 12:43:12 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_x509store.c: parenthesize macro arguments.
-
-Sun Mar 20 01:39:48 2011 Tajima Akio <artonx@yahoo.co.jp>
-
- * hash.c (ruby_setenv): check env process block size with OS ver.
- * win32/win32.c: export rb_w32_osver for above patch.
- * include/ruby/win32.h: declare rb_w32_osver for Win32 Libs.
-
-Sat Mar 19 18:35:05 2011 Tajima Akio <artonx@yahoo.co.jp>
-
- * hash.c (ruby_setenv): calculate total env block size for win32.
- * test/ruby/test_env.rb: add test for above patch.
-
-Sat Mar 19 17:14:46 2011 Tajima Akio <artonx@yahoo.co.jp>
-
- * hash.c (ruby_setenv): checking with max process environment
- block size for Win32. 32767 for 2000/XP, 2003. if failed to
- read the block, then checking with 5120 for earlier Windows.
-
-Sat Mar 19 12:30:25 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_x509revoked.c: parenthesize macro arguments.
-
-Fri Mar 18 20:44:36 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_x509req.c: parenthesize macro arguments.
-
-Fri Mar 18 08:48:06 2011 Oleg Shaldybin <oleg.shaldybin@gmail.com>
-
- * lib/fileutils.rb (FileUtils::Entry_#copy_file): updated FileUtils.cp
- to still copy file permissions when :preserve is false (as cp does
- this even when -p isn't set).
-
-Fri Mar 18 00:59:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/win32ole/extconf.rb (create_docfile): removed. should not
- modify source directory unnecessarily, platform dependent
- documentation should be dealt with by rdoc. [ruby-core:35495]
-
-Fri Mar 18 00:54:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/ruby.h (rb_funcall_passing_block): add prototype.
- a patch by James M. Lawrence at [ruby-core:35501]
-
-Wed Mar 17 06:23:31 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_x509name.c: parenthesize macro arguments.
-
-Wed Mar 16 20:36:56 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/ipsocket.c (init_inetsock_internal): raise an error on
- listen(2) failure.
- reported by Xavier Shay. [ruby-core:35505]
-
-Wed Mar 16 15:06:21 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/openssl/lib/openssl/buffering.rb (module OpenSSL): #flush should
- not change sync mode on exception.
- * test/openssl/test_buffering.rb: added
-
-Wed Mar 16 13:45:28 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/openssl/lib/openssl/buffering.rb: de-nest Buffering module
-
- * ext/openssl/lib/openssl/buffering.rb: add RDoc
-
-Wed Mar 16 08:40:39 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_x509ext.c: parenthesize macro arguments.
-
-Tue Mar 15 18:34:27 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_x509crl.c: parenthesize macro arguments.
-
-Tue Mar 15 09:49:03 2011 Shota Fukumori <sorah@tubusu.net>
-
- * test/misc/test_ruby_mode.rb (test_singleton_class): Skip for Pending.
-
-Mon Mar 14 21:20:44 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * test/ruby/test_require.rb (test_require_too_long_filename):
- increase path length, because MAXPATHLEN is defined as 4096 on linux.
-
- * test/ruby/test_require.rb (test_require_path_home_1): ditto.
-
- * test/ruby/test_require.rb (test_require_path_home_2): ditto.
-
-Mon Mar 14 19:54:37 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_x509cert.c: parenthesize macro arguments.
-
-Sun Mar 13 18:11:28 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_x509attr.c: parenthesize macro arguments.
-
-Sun Mar 13 16:07:58 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/pstore.rb: Fix don't raise "nested transaction" when thread_safe
- is true. Patch by Masaki Matsushita (Glass_saga). [ruby-dev:43337]
-
- * test/test_pstore.rb: Test for above.
- Patch by Masaki Matsushita (Glass_saga) [ruby-dev:43337]
-
-Sat Mar 12 04:12:41 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_ssl_session.c: parenthesize macro arguments.
-
-Sat Mar 12 02:27:07 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c ({d,dt}_lite_marshal_load): checks the given
- argument.
-
-Sat Mar 12 01:26:24 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c: changed some directives.
-
-Sat Mar 12 01:16:02 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/date_core.c, ext/date/lib/*: moved rdoc descriptions.
-
-Sat Mar 12 00:06:24 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * ext/date/lib: moved from lib.
-
-Fri Mar 11 23:32:38 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date/delta*: removed undocumented delta.
-
-Fri Mar 11 18:42:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (find_executable0): should exclude directories.
-
-Fri Mar 11 01:40:35 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * process.c (proc_getmaxgroups, proc_setmaxgroups): Process#maxgroups
- and Process#maxgroups= now raise NotImplementedError if the
- platform don't support supplementary groups concept.
-
-Fri Mar 11 01:25:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * process.c (get_sc_ngroups_max): return -1 if platform don't
- support NGROUPS_MAX.
-
-Thu Mar 10 22:28:15 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_ssl.h: parenthesize macro arguments.
-
-Thu Mar 10 21:59:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * parse.y (parser_encode_length): add exception as UTF8-MAC for
- magic comment's emacs newline specifier
- patched by James M. Lawrence [ruby-core:35476] fixes #4489
-
-Thu Mar 10 16:00:22 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * parse.y (parser_encode_length): fix typo: the length of
- "-dos" and "-mac" is not 5 but 4.
- patched by James M. Lawrence [ruby-core:35476] fixes #4489
-
-Thu Mar 10 10:52:01 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_require.rb: setting too long string to ENV causes
- Errno::EINVAL on Windows. long path name errors may causes over
- about 1024 bytes, then limit it about 4000 bytes.
-
-Thu Mar 10 10:09:35 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/test/unit.rb (Test::Unit::Runner::Worker#read): fix for the case
- when IO#read or IO#gets returns nil.
-
-Thu Mar 10 07:12:03 2011 Ryan Davis <ryand-ruby@zenspider.com>
-
- * lib/rubygems*: Import rubygems 1.6.2 (release candidate @ 2026fbb5)
- * test/rubygems: Ditto
- * test/runner.rb: Added test to load path to fix test requires.
-
-Thu Mar 10 03:00:43 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_ssl.c: parenthesize macro arguments.
-
-Wed Mar 9 23:51:26 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * test/ruby/test_io_m17n.rb (test_io_new_enc): "sjis" is now an alias
- of Windows-31J.
-
-Wed Mar 9 23:06:13 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * misc/ruby-mode.el (ruby-parse-partial): fix indent after aref.
-
-Wed Mar 9 12:50:24 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/yaml_tree.rb: Rescue exceptions when
- people implement the method method. Thanks Lin Jen-Shin.
- [ruby-core:35255]
-
- * test/psych/visitors/test_yaml_tree.rb: test for implementation of
- method method.
-
-Wed Mar 9 11:53:31 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * enc/shift_jis.c: Change SJIS as an alias of Windows-31J.
- [ruby-dev:43027] fixes #4280
-
- * enc/shift_jis.c: Add PCK as an alias of Windows-31J.
-
-Wed Mar 9 00:45:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/extmk.rb: nmake substitutes all occurrences in macro.
-
- * ext/extmk.rb: workaround for nmake.
-
-Tue Mar 8 23:49:45 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * process.c (proc_setgroups): cleanup.
-
-Tue Mar 8 23:40:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/misc/test_ruby_mode.rb: test for ruby-mode.el.
-
-Tue Mar 8 23:27:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * process.c (get_sc_ngroups_max): try to use NGROUPS_MAX at first if
- _SC_NGROUP_MAX is not defined.
-
-Tue Mar 8 23:10:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * misc/ruby-mode.el (ruby-parse-partial): fix for array in block.
-
-Tue Mar 8 21:44:49 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_rand.c: parenthesize macro arguments.
-
-Tue Mar 8 16:45:31 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * hash.c (ruby_setenv): MSDN says that Windows XP or earlier limits
- the total size of environment block to 5,120 chars. and on such
- OS, putenv() causes SEGV. So, ruby should limit the size of an
- environment variable to 5,120 bytes for workaround.
-
-Tue Mar 8 15:57:20 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/rubygems/test_gem_spec_fetcher.rb
- (TestGemSpecFetcher#test_cache_dir_escapes_windows_paths): cache_dir
- may have driveletter and `:' for base of cache_dir itself, so need
- to skip it for checking.
-
-Tue Mar 8 12:30:06 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * misc/ruby-mode.el (ruby-deep-indent-paren-p, ruby-calculate-indent):
- do not apply deep-indent inside parens at the beginning of
- expressions.
-
-Tue Mar 8 09:32:48 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (configure-ext, build-ext), ext/extmk.rb (extmake):
- support parallel-make under ext.
-
-Tue Mar 8 09:25:23 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * process.c (proc_setgroups): use getgrnam() if getgrnam_r() is
- not available.
-
- * process.c: RARRAY_LEN() returns long int.
-
-Tue Mar 8 09:07:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (RUBY_REPLACE_TYPE): enclose in quotes for multiple
- type names.
-
-Tue Mar 8 01:43:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * process.c (get_sc_ngroups_max): define to wrap sysconf(3).
- this also supports Windows which doesn't have sysconf(3).
-
- * process.c (maxgroups): use get_sc_ngroups_max.
-
- * process.c (proc_setmaxgroups): ditto.
-
-Tue Mar 8 01:16:49 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * gc.c (rb_objspace): an initializer must be a constant.
-
-Tue Mar 8 01:11:44 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * process.c (maxgroups): cast because sysconf(3)'s return value is long.
-
- * process.c (proc_setmaxgroups): ditto.
-
- * process.c (proc_setgroups): cast because RARRAY_LEN() is long.
-
-Tue Mar 8 00:02:47 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_pkey_rsa.c: parenthesize macro arguments.
-
-Mon Mar 7 22:59:39 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/pstore.rb: Delete variable @transaction and fix #4474. Patch by
- Masaki Matsushita (Glass_saga).
-
- * test/test_pstore.rb(test_thread_safe): Add test for #4474.
-
-Mon Mar 7 21:31:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * process.c (proc_setgroups): replace getgrnam() with getgrnam_r()
- because getgrnam() isn't thread safe.
-
-Mon Mar 7 20:49:12 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * process.c (proc_getmaxgroups, proc_setmaxgroups): reflect
- platform maxgroups limitation by default instead hardcoded 65536.
-
-Mon Mar 7 17:13:00 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * gc.c (rb_gc_set_params): allow GC parameter configuration by
- environment variables. based on a patch from funny-falcon at
- https://gist.github.com/856296, but honors safe level.
-
-Mon Mar 7 09:05:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * process.c: NUM2RLIM is defined but no getrlimit and setrlimit on
- mingw.
-
-Mon Mar 7 08:38:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/date/date_core.c (DateTimeData): should not use bare 'long long'
- and 'long double', which are not defined by C89.
-
- * ext/date/date_core.c (dt_lite_plus): get rid of overflow at casting
- down double to integer.
-
-Mon Mar 7 00:21:11 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * process.c (proc_getgroups): get rid of maxgroups dependency.
- ngroups can be calculated dynamically.
-
-Sun Mar 6 23:45:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * configure.in: rlim_t use standard RUBY_REPLACE_TYPE mechanism.
-
-Sun Mar 6 23:26:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * process.c (proc_setmaxgroups): added negative value check.
- This was suggested by Daniel Berger. Thanks Daniel!
- [ruby-core:35426][Bug#4467]
-
-Sun Mar 6 23:18:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * process.c (maxgroups, proc_setmaxgroups): increase max groups
- limitation up to 65536.
-
-Sun Mar 6 22:20:59 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_pkey_ec.c: parenthesize macro arguments.
-
-Sun Mar 6 21:49:04 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * sample/list.rb (MyElem#initialize): initialize @head
- explicitly. Otherwise -W2 option makes following warning.
- "warning: instance variable @head not initialized".
- This issue was founded by Andrew Grimm. Thanks Andrew!
- [ruby-core:35435][Bug#4471]
-
-Sun Mar 6 05:21:41 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * class.c: fix camelCase to snake_case in documentation code examples.
- patched by Andrew Grimm. fixes Bug #4469
-
- * marshal.c: ditto.
-
- * proc.c: ditto.
-
- * sample/biorhythm.rb: ditto.
-
- * vm_eval.c: ditto.
-
- * vm_method.c: ditto.
-
-
-Sun Mar 6 03:22:27 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (io_cntl): use rb_thread_io_blocking_region() instead
- rb_thread_blocking_region().
-
-Sat Mar 5 22:54:36 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * include/ruby/intern.h: fix a typo of prototype declaration.
- rb_mutex_try_lock -> rb_mutex_trylock [ruby-dev:43213]
-
-Sat Mar 5 19:44:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_io.rb (TestIO#test_fcntl_lock): small clean up.
-
-Sat Mar 5 01:33:46 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (io_cntl, nogvl_io_cntl): IO.fcntl() and IO.ioctl()
- release GVL during calling kernel interface.
- Suggested by Eric Wong. [ruby-core:35417][Bug #4463]
-
- * test/ruby/test_io.rb (TestIO#test_fcntl_lock): add new test for
- IO.fcntl().
-
-Fri Mar 4 23:09:12 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * test/testunit/test_parallel.rb
- (test_should_run_all_without_any_leaks): consider that the order of
- testcase could change. [ruby-dev:43300] [Bug #4466]
-
-Fri Mar 4 22:01:14 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (io_cntl): change 'cmd' type to int. ioctl and fcntl need to
- be passed int.
- * io.c (rb_io_ctl): ditto.
-
-Fri Mar 4 21:10:40 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * configure.in: save warnflags. the patch is created by Eric Wong.
- [Bug #4465]
-
-Wed Mar 2 21:15:00 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_pkey_dsa.c: parenthesize macro arguments.
-
-Thu Mar 3 22:10:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * process.c (check_exec_redirect_fd, check_exec_redirect): raise
- ArgumentError if fd >= 3 on Windows because the feature is not
- supported.
-
- * test/ruby/test_process.rb (test_execopts_redirect): remove meaningless
- argument.
-
-Thu Mar 3 21:21:42 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_process.rb (test_execopts_redirect): redirecting fd
- >= 3 is not supported on Windows, so should not specify such options
- when calling spawn or others.
-
-Thu Mar 3 18:59:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (rb_str_slice_bang): raise error when the string is frozen.
-
-Thu Mar 3 14:25:19 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * strftime.c (STRFTIME): return 0 and ERANGE when precision is too
- large. [ruby-dev:43284] fixes #4456
-
-Thu Mar 3 00:46:51 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * addr2line.c (uleb128): cast the value to unsigned long.
-
- * addr2line.c (fill_lines): print error when lseek fails.
-
-Thu Mar 3 00:36:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/rexml/encoding.rb (REXML::Encoding#encoding=): store @encoding
- a String which means the name of the encoding.
- this partially revert r29646.
-
- * lib/rexml/document.rb: follow above.
-
- * lib/rexml/output.rb: ditto.
-
- * lib/rexml/parsers/baseparser.rb: ditto.
-
- * lib/rexml/source.rb: ditto.
-
- * lib/rexml/xmldecl.rb: ditto.
-
-Wed Mar 2 23:19:56 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (str_byte_substr): return nil for negative length.
-
-Wed Mar 2 21:15:00 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_pkey_dh.c: parenthesize macro arguments.
-
-Wed Mar 2 14:24:04 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit/parallel.rb: Fix name from `inclement_io` to
- `increment_io`.
-
-Wed Mar 2 14:06:01 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (rb_str_slice_bang): move treatments which is only needed
- when the result is not nil.
-
-Wed Mar 2 14:02:29 2011 Shota Fukumori <sorah@tubusu.net>
-
- * test/testunit/test_parallel.rb(TestParallel#spawn_runner):
- Fix outputing empty line in running test.
-
- * test/testunit/tests_for_parallel/test_third.rb: Remove `sleep`
-
-Tue Mar 1 22:29:10 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_pkey.h: parenthesize macro arguments.
-
-Tue Mar 1 22:02:35 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit/parallel.rb: Fix number.
-
-Tue Mar 1 21:48:22 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit/parallel.rb: For Windows.
-
- * test/testunit/test_parallel.rb(TestParallelWorker#test_quit_in_test):
- Fix for above specification change.
- * test/testunit/test_parallel.rb(TestParallel#spawn_runner):
- Fix outputing empty line in running test.
-
-Tue Mar 1 20:51:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_system.rb (TestSystem#test_system_at):
- remove tests for [bug#4396]. because we decided to reject this
- ticket.
-
-Tue Mar 1 19:46:19 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * test/date/{test_date.rb,test_date_attr.rb}: [ruby-dev:43280]
-
-Tue Mar 1 18:40:38 2011 Ryan Davis <ryan@YPCMC09457>
-
- * lib/rubygems*: Import rubygems 1.6.0 (released version @ 58d8a0b9)
- * test/rubygems: Ditto
-
-Tue Mar 1 16:22:22 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c: revert r30987 because it causes some failures in
- test-all, especially webrick.
-
-Tue Mar 1 15:59:53 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (rb_str_byteslice): the resulted encoding should keep
- original encoding. this also fixes the encoding when the result
- shares internal string. [ruby-core:35376]
-
-Tue Mar 1 13:25:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (VpMemAlloc): CVE-2011-0188.
- Fixes a bug reported by Drew Yao <ayao at apple.com>
-
-Tue Mar 1 10:34:39 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (rb_str_byteslice): Add String#byteslice. [ruby-core:35376]
-
-Tue Mar 1 00:12:49 2011 Tajima Akio <artonx@yahoo.co.jp>
-
- * include/ruby/win32.h: define WIN32 if neither _WIN64 nor WIN32
- defined. it forces to use push/pop for pack(4) pragma.
-
-Mon Feb 28 23:52:13 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * test/testunit/test_rake_integration.rb (test_with_rake_runner):
- use assert_in_out_err for suppress messages.
-
-Mon Feb 28 22:48:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * win32/win32.c (rb_w32_spawn): use shell if a commandline contain
- double-quote character.
- * win32/win32.c (is_internal_cmd): similar, use shell if a commandline
- contain caret character.
-
- * test/ruby/test_system.rb (TestSystem#test_system_at): fix
- wrong test case. if system() invoke a command by using shell,
- system() never return nil. Also, "" quotation must not appear
- twice in a command line.
-
-Mon Feb 28 17:36:57 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_pkcs7.c: parenthesize macro arguments.
-
-Mon Feb 28 16:48:42 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_pkcs12.c: parenthesize macro arguments.
-
-Mon Feb 28 16:28:15 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (tr_trans): when the hash for multibyte repl is empty,
- tr is inverse mode, and a character doesn't much the table, the
- character should be replaced by last replacement. Bug #4449
-
-Mon Feb 28 16:38:56 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_ocsp.c: parenthesize macro arguments.
-
-Mon Feb 28 13:02:15 2011 Danial Pearce <github@tigris.id.au>
-
- * lib/tempfile.rb: Fix example file paths in docs for tempfile.
- https://github.com/ruby/ruby/pull/5
-
-Mon Feb 28 12:56:18 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * ext/openssl/ossl_cipher.c (ossl_cipher_init): typo fix.
- https://github.com/ruby/ruby/pull/8
-
-Mon Feb 28 12:28:13 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/date/date_core.c (datetime_s_now): localtime() and localtime_r()
- required time_t pointer as 1st parameter, and tv_sec member of struct
- timeval is long.
-
-Mon Feb 28 11:57:40 2011 Shota Fukumori <sorah@tubusu.net>
-
- * test/testunit/test_parallel.rb: Temporally disable test on Windows.
-
-Mon Feb 28 07:28:35 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit.rb(Test::Unit::Runner#after_worker_quit):
- method name more be natural English.
-
- * lib/test/unit.rb(Test::Unit::Runner::Worker.launch):
- IO.sync doesn't need. Should use "b" for mode.
-
-Sun Feb 27 21:59:37 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_system.rb (TestSystem#test_system_redirect_win):
- add test for system().
-
-Sun Feb 27 18:00:09 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit.rb: Refactoring; Worker never use Hash for internal
- storage.
-
- * lib/test/unit.rb: Never use Kernel#spawn. Use IO.popen instead.
-
-Sun Feb 27 13:16:48 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_ns_spki.c: parenthesize macro arguments.
-
-Sat Feb 26 17:07:53 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date.rb: [Feature #4257]
-
- * ext/date/extconf.rb: new
-
- * ext/date/date_core.c: new
-
-Sat Feb 26 16:10:23 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit.rb: --jobs-status won't puts over 2 lines.
-
- * test/testunit/test_parallel.rb: Fix test for above.
-
- * lib/test/*: refactoring.
-
-Sat Feb 26 07:10:05 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/scalar_scanner.rb: fix parsing timezone's whose
- whose format is (+/-)hhmm. Thanks Goncalo Silva!
-
- * test/psych/test_scalar_scanner.rb: test for bug.
-
-Thu Feb 24 23:02:55 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_hmac.c: parenthesize macro arguments.
-
-Thu Feb 24 22:53:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (love): for the birthday.
-
-Thu Feb 24 22:51:54 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm.c (ruby_vm_destruct): run vm exit hooks after all objects are
- destructed.
-
-Thu Feb 24 14:40:33 2011 Shota Fukumori <sorah@tubusu.net>
-
- * ChangeLog (vim): Modeline for vim
-
-Thu Feb 24 13:39:25 2011 Shota Fukumori <sorah@tubusu.net>
-
- * common.mk: Use $RUNRUBY for worker process.
-
- * lib/test/unit.rb: Fix bug.
-
- * lib/test/unit.rb: @options[:ruby](@opts[:ruby]) is now Array.
-
- * test/testunit/parallel.rb: Fix for above.
-
-Thu Feb 24 10:05:55 2011 Shota Fukumori <sorah@tubusu.net>
-
- * test/testunit/tests_for_parallel/misc.rb: Fix bug in r30947.
-
- * lib/test/unit.rb, lib/test/unit/assertions.rb: For this test.
-
-Wed Feb 23 23:07:38 2011 Shota Fukumori <sorah@tubusu.net>
-
- * test/testunit/test_parallel.rb, test/testunit/parallel/*:
- Test for r30939.
-
- * lib/test/unit.rb: For test.
-
- * lib/test/parallel.rb: For test.
-
- * lib/test/unit/testcase.rb: For test.
-
-Wed Feb 23 22:05:13 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_engine.c: parenthesize macro arguments.
-
-Tue Feb 22 23:15:17 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit.rb: Fix --ruby option doesn't effect.
-
- * lib/test/unit.rb: Fix typo.
-
-Tue Feb 22 21:39:28 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_digest.c: parenthesize macro arguments.
-
-Tue Feb 22 14:34:26 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit.rb: Fix merging miss.
-
-Tue Feb 22 12:27:26 2011 Shota Fukumori <sorah@tubusu.net>
-
- * lib/test/unit.rb: Add new options; --jobs,-j,--ruby,--jobs-status,
- --no-retry.
- [Feature #4415] [ruby-dev:43226],[ruby-dev:43222],[ruby-core:35294]
-
- * lib/test/unit/parallel.rb: Used at test/unit --jobs(-j) option.
-
- * test/csv/test_serialization.rb: test/unit parallel running ready.
-
- * test/rake/test_file_task.rb: test/unit parallel running ready.
-
-Tue Feb 22 06:09:10 2011 Eric Hodel <drbrain@segment7.net>
-
- * ext/syslog/syslog.c: Apply documentation patch from mathew murphy.
- [Bug #4149]
-
-Tue Feb 22 03:09:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych.rb: increase Psych to 1.1.0 for help with
- debugging.
-
-Tue Feb 22 03:04:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/streaming.rb: refactor streaming methods to a
- module.
- * ext/psych/lib/psych/stream.rb: extracted streaming specific methods
- to a module.
- * ext/psych/lib/psych/json/stream.rb: JSON stream inherits from
- JSONTree and includes streaming methods.
- * ext/psych/lib/psych/visitors/json_tree.rb: JSON does not support
- object references, so remove object reference testing when building
- JSON trees.
-
-Tue Feb 22 02:41:51 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/yaml_tree.rb (accept): use Hash#key?
- when looking up object references to err on the side of cache
- misses.
-
-Mon Feb 21 10:58:39 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/json/yaml_events.rb: refactoring JSON event
- handling methods to a module for reuse.
- * ext/psych/lib/psych/json/tree_builder.rb: AST builder uses JSON
- event methods.
- * ext/psych/lib/psych/json/stream.rb: stream emitter uses JSON event
- methods.
-
-Mon Feb 21 10:54:29 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/json/stream.rb: do not emit custom tags in maps
- or sequences when emitting JSON.
- * ext/psych/lib/psych/json/tree_builder.rb: do not emit custom tags in
- sequences when emitting JSON.
- * test/psych/json/test_stream.rb: tests for custom stream emits.
- * test/psych/test_json_tree.rb: tests for JSON emits.
-
-Mon Feb 21 10:05:10 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/json/ruby_events.rb: DRY up ruby event handling
- for JSON.
- * ext/psych/lib/psych/visitors/json_tree.rb: use ruby events module
- * ext/psych/lib/psych/json/stream.rb: ditto
-
-Mon Feb 21 10:01:01 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/json/stream.rb: fix JSON stream emits to use
- double quotes during stream.
- * test/psych/json/test_stream.rb: tests to reflect changes.
-
-Mon Feb 21 00:38:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_system.rb (TestSystem#test_system_at):
- add testcase for bug4396.
-
-Sun Feb 20 19:59:32 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_cipher.c: parenthesize macro arguments.
-
-Sun Feb 20 16:26:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread.c (exec_recursive): prevent temporary objects from GC.
-
- * prevent temporary objects from GC, and should not use
- RSTRING_PTR() for function calls since it evaluates the argument
- a couple of times.
-
-Sun Feb 20 16:22:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (rb_file_flock): use rb_thread_io_blocking_region for the
- time being.
-
-Sun Feb 20 05:33:17 2011 Ryan Davis <ryand-ruby@zenspider.com>
-
- * lib/minitest/*.rb: Imported minitest 2.0.2 r6207.
- * test/minitest/*: ditto
-
-Sun Feb 20 02:14:09 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * signal.c (sig_trap): avoid pthread_sigmask(xx, &mask, &mask) usage
- because FreeBSD don't permit it. If it's used, it behave as
- pthread_sigmask(xx, NULL, &mask).
-
- * signal.c (init_sigchld): ditto.
-
-Sun Feb 20 00:46:51 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl_bn.c: parenthesize macro arguments.
-
-Sat Feb 19 22:37:42 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * vm_insnhelper.c (vm_check_if_namespace): guard temporary object
- from GC.
-
-Sat Feb 19 06:36:27 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * lib/test/unit.rb: partial revert of r30849. [ruby-core:32864]
-
- * test/testunit/test_rake_integration.rb: adding an integration test
- with the rake loader to prevent regressions.
-
-Fri Feb 18 19:31:31 2011 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/fileutils.rb (FileUtils::remove_entry_secure): there is a
- race condition in the case where the given path is a directory,
- and some other user can move that directory, and create a
- symlink while this method is executing.
- Reported by: Nicholas Jefferson <nicholas at pythonic.com.au>
-
-Fri Feb 18 00:28:39 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * compile.c (get_exception_sym2type): guard temporary object from GC.
-
-Thu Feb 17 23:54:29 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * iseq.c (prepare_iseq_build): initialize iseq_compile_data::err_info
- with nil. this fix exception in rb_iseq_load().
-
-Thu Feb 17 22:32:35 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * test/ruby/test_marshal.rb (test_marshal_dump_extra_iv):
- fix a typo of local variable. [Bug #3720] [ruby-dev:42083]
-
-Thu Feb 17 21:32:53 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/ossl.h: parenthesize macro arguments.
-
-Wed Feb 16 20:37:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * eval_jump.c (rb_exec_end_proc): changed at_exit and END proc
- evaluation order. [Bug #4400] [ruby-core:35237]
- * eval_jump.c (rb_mark_end_proc): ditto.
-
- * test/ruby/test_beginendblock.rb (TestBeginEndBlock#test_nested_at_exit):
- added a test for nested at_exit.
- * test/ruby/test_beginendblock.rb (TestBeginEndBlock#test_beginendblock):
- changed the test to adopt new spec.
-
-Wed Feb 16 20:17:06 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/openssl/openssl_missing.h: parenthesize macro arguments.
-
-Tue Feb 15 21:37:45 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/gdbm/gdbm.c: parenthesize macro arguments.
-
-Tue Feb 15 20:34:53 2011 Tanaka Akira <akr@fsij.org>
-
- * array.c (ary_join_1): fix array size.
-
-Tue Feb 15 19:43:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * configure.in: fix and resubmit r30621. [ruby-dev:43203]
-
-Tue Feb 15 15:41:30 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * array.c (array_join): copy the encoding of the first element as
- an initial encoding.
-
- * array.c (array_join_0): ditto.
-
- * array.c (array_join_1): ditto.
-
- * array.c (inspect_ary): ditto.
-
- * array.c (array_join_1): add an argument to check the appending is
- first one or not.
-
-Tue Feb 15 15:40:53 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * hash.c (inspect_i): copy the encoding of the first key as
- an initial encoding.
-
-Mon Feb 14 15:00:16 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * array.c (inspect_ary): don't taint the inspected result of a
- recursive array.
-
-Tue Feb 15 15:43:29 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * encoding.c (rb_enc_compatible): change the rule for empty strings:
- remove the special treatment of the US-ASCII encoded empty string.
- Now Encoding.compatible? usually respect the encoding of the
- receiver.
-
-Tue Feb 15 15:39:37 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (rb_enc_cr_str_buf_cat): remove special treatment of
- ASCII-8BIT receivers.
-
- * string.c (str_gsub): set initial encoding of the buffer as the
- same of the receiver. [ruby-core:35141]
-
-Tue Feb 15 09:49:33 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_system.rb (TestSystem#test_system_at): use findstr
- command instead of find command, because the latter is confusing
- another famous Unix command.
-
-Mon Feb 14 23:01:19 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * thread.c (rb_thread_io_blocking_region): reset th->waiting_fd
- after blocking region, because remaining waiting_fd might
- cause unnecessary IOError.
-
-Mon Feb 14 21:06:50 2011 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * configure.in: revert r30621. That revision introduced mkmf test
- failures and it turned out to be OK to revert. [ruby-dev:43203]
-
-Mon Feb 14 21:04:01 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/fiddle/conversions.h: parenthesize macro arguments.
-
-Mon Feb 14 18:41:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * win32/setup.mak (USE_RUBYGEMS): fixed r30835. It didn't work on
- mswin32 port. If you changed win32/configure.bat, you should change
- setup.mak too.
-
-Mon Feb 14 17:28:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_system.rb (TestSystem#test_system_at):
- added test. [ruby-core:35218] (#4393)
-
-Mon Feb 14 13:15:35 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (is_internal_cmd): if the first char of prog is '@',
- execute it via shell. [ruby-core:35218] (#4393)
-
-Mon Feb 14 10:33:45 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/test/unit.rb: revert r30863, because it causes too many noise.
-
-Mon Feb 14 07:34:55 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/curses/curses.c: parenthesize macro arguments.
-
-Sun Feb 13 19:41:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit.rb (Test::Unit::RequireFiles#non_options): skip
- test suites failed to load instead of mere messages.
-
-Sun Feb 13 09:56:44 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/openssl/test_config.rb (OpenSSL#test_freeze): fix error
- message assertion.
-
- * test/io/nonblock/test_flush.rb (TestIONonblock#flush_test):
- return true to finish the test.
-
- * test/syck/test_string.rb (Syck::TestString#test_non_binary_string):
- use assert_not instead of refute, unless required minitest
- explicitly.
-
- * test/test_prime.rb (TestPrime::sieve.Integer): ditto.
-
- * test/xmlrpc/webrick_testing.rb (WEBrick_Testing#start_server):
- catch IOError when server socket was closed.
-
-Sun Feb 13 07:39:51 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * enum.c (enum_inject): typo fixed. a patch from Gaku Ueda in
- [ruby-core:35216].
-
-Sun Feb 13 00:48:47 2011 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date.rb (Date#===): [ruby-core:35127]
-
-Sun Feb 13 00:29:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit.rb (Test::Unit::Options#process_args): always
- return options.
-
- * lib/test/unit.rb (Test::Unit::RequireFiles#non_options): return
- if any test case get loaded.
-
- * lib/test/unit.rb (Test::Unit::AutoRunner#initialize): do not add
- default directory if it is nil.
-
- * lib/test/unit.rb (Test::Unit::AutoRunner#process_args): return
- true if any test cases to run.
-
-Sat Feb 12 23:17:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit.rb (assert_include): add alias.
-
-Sat Feb 12 14:44:20 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread.c (rb_thread_io_blocking_region): new function to run
- blocking region with GIL released, for fd.
-
- * thread.c (rb_thread_fd_close): implement. [ruby-core:35203]
-
- * vm.c (th_init): rename from th_init2.
-
-Sat Feb 12 14:41:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit.rb (Test::Unit::AutoRunner#initialize): use
- default_dir if no test case given.
-
- * lib/test/unit.rb (Test::Unit::Runner): rename from Test::Unit::Mini.
-
- * lib/test/unit.rb (Test::Unit::GlobOption#non_options): run tests
- under base directory if no argument given.
-
-Sat Feb 12 08:03:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/test_settracefunc.rb (TestSetTraceFunc): ensure to use
- method_added hook defined in Module.
-
-Sat Feb 12 01:04:02 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby.c (proc_options): enable rubygems if --gem option is given.
-
- * ruby.c (process_options): load rubygems if it is disabled but
- --gem option is given.
-
-Fri Feb 11 23:27:50 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * ruby.c (proc_options): add --gem=enabled as an alias of
- --enable=gems and --gem=disabled as an alias of --disable=gems.
- Gem named "enabled" or "disabled" has already been reserved
- legitimately for this purpose.
-
-Fri Feb 11 23:17:04 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/dl/cfunc.c: parenthesize macro arguments.
-
-Fri Feb 11 21:41:53 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * bin/testrb, test/runner.rb, lib/test/unit.rb: improve backward
- compatibility.
-
-Fri Feb 11 19:45:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (ruby_cleanup): use rb_ary_free to free internal object.
-
- * gc.h (RUBY_FREE_UNLESS_NULL): get rid of double free.
- [ruby-core:35192]
-
-Fri Feb 11 16:57:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/test_transcode.rb (test_from_cp50221): fix wrong
- assertion and move back.
-
-Fri Feb 11 14:33:18 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit/assertions.rb (assert_no_match): alias for
- backward compatibility.
-
-Fri Feb 11 12:06:48 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby.c (add_gems, require_libraries, proc_options): add
- --require and --gem options.
-
-Fri Feb 11 12:03:24 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (rubygems): add --disable-rubygems option.
-
-Fri Feb 11 11:39:03 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * template/fake.rb.in (CROSS_COMPILING): get rid of NameError.
-
-Thu Feb 10 23:12:34 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/dl/dl.h: parenthesize macro arguments.
-
-Wed Feb 9 23:11:27 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/pty/pty.c: parenthesize macro arguments.
-
-Tue Feb 8 11:47:11 2011 Loren Sands-Ramshaw <lorensr@gmail.com>
-
- * array.c: documentation clarification in rotate, rotate!,
- index, and rindex. [ruby-core:35144]
-
-Wed Feb 9 09:45:43 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/rdoc/test_rdoc_encoding.rb: remove unnecessary (and wrong)
- platform-dependent hacks.
-
-Wed Feb 9 00:47:18 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/etc/etc.c: parenthesize macro arguments.
-
-Tue Feb 8 19:38:00 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * misc/ruby-mode.el (ruby-expr-beg): fix for invalid nest errors.
-
-Tue Feb 8 19:22:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * configure.in (AC_MSG_CHECKING): fixed typo. the patch is
- created by Benoit Daloze. Thanks a lot. [Bug #4384][ruby-core:35148]
-
-Tue Feb 8 16:04:03 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (rb_io_s_sysopen): use NUM2MODET() instead NUM2UINT().
-
-Tue Feb 8 15:59:23 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * process.c (rb_run_exec_options_err): use MODET2NUM() instead
- LONG2NUM().
-
-Tue Feb 8 13:59:56 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * configure.in: revert r30725. Now we have proper runtime fallback.
- Therefore, no need compile time disabling. (see r30762).
-
-Tue Feb 8 01:00:21 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * process.c (proc_setgroups): add GC guard to prevent intermediate
- variable from GC.
-
-Tue Feb 8 00:56:33 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * misc/ruby-mode.el (ruby-expr-beg, ruby-in-here-doc-p): tell
- singleton class definitions from here documents.
-
- * misc/ruby-mode.el (ruby-expr-beg, ruby-parse-partial): keyword
- followed by colon is label.
-
-Mon Feb 7 22:56:16 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * lib/benchmark.rb (Benchmark#bmbm): use ensure clause instead of
- Object#tap to restore STDOUT.sync.
-
-Mon Feb 7 22:34:20 2011 Tanaka Akira <akr@fsij.org>
-
- * lib/net/http.rb (Net::HTTP#connect): support SNI (Server Name
- Indication) for HTTPS. [ruby-dev:43164]
- http://stackoverflow.com/questions/4685736/openssl-server-name-indication-support-in-ruby
-
-Mon Feb 7 16:05:32 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc: Upgrade to RDoc 3.5.3 Fixes [Bug #4376]
-
-Mon Feb 7 11:46:59 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * common.mk (rdoc): add --encoding=UTF-8; ruby's rdoc must be UTF-8.
-
-Mon Feb 7 10:21:50 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/rdoc/test_rdoc_options.rb (TestRDocOptions#test_check_files):
- there is no easy way to create owner unreadable file on Windows.
- So, skip the test.
-
-Sun Feb 6 13:48:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/json/lib/json/common.rb (JSON::MissingUnicodeSupport.iconv):
- should not drop rest of the result. use Iconv.conv instead.
-
-Sun Feb 6 12:46:02 2011 Eric Hodel <drbrain@segment7.net>
-
- * string.c (gsub): Ensure result encoding is the same as input
- encoding. [Bug #4340].
-
-Sun Feb 6 12:18:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (words, qwords): dispatch array events. based on a
- patch from Michael Edgar. [Bug #4365].
-
-Sun Feb 6 12:12:59 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/fileutils/fileasserts.rb (FileAssertions): separate module.
-
-Sun Feb 6 11:29:23 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/dbm/dbm.c: parenthesize macro arguments.
-
-Sat Feb 5 22:01:59 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
- revert r30796. r30797 and r30798 are an alternative fix.
- [ruby-dev:43174]
-
-Sat Feb 5 21:47:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (mlhs_basic): include mlhs_post for ripper. a patch
- from Michael Edgar at [ruby-core:35078].
-
-Sat Feb 5 21:22:21 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit/assertions.rb (assert_block): move from
- test/fileutils/fileasserts.rb.
-
- * test/fileutils/fileasserts.rb (assert_block): pass arguments
- as-is. [ruby-dev:43174]
-
-Sat Feb 5 16:47:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
- msg can be passed nil. [Bug #4371] [ruby-dev:43174]
-
-Sat Feb 5 15:18:25 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc: Upgrade to RDoc 3.5.2
-
-Sat Feb 5 12:05:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/syck/rubyext.c (syck_node_init_copy): SyckNode is not
- copiable. [ruby-core:35094]
-
-Sat Feb 5 11:48:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/openssl/ossl_cipher.c (ossl_cipher_alloc): leave data ptr
- NULL.
-
- * ext/openssl/ossl_cipher.c (ossl_cipher_new, ossl_cipher_initialize):
- allocate internal structure. [ruby-core:35094]
-
- * ext/openssl/ossl_cipher.c (ossl_cipher_copy): ditto.
-
-Sat Feb 5 11:29:10 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/json/parser/parser.h (GET_PARSER): raise TypeError.
-
- * ext/json/parser/parser.rl (cParser_initialize): ditto.
-
- * ext/json/parser/parser.h (GET_PARSER): check if initialized.
- [ruby-core:35079]
-
- * ext/json/parser/parser.rl (cParser_initialize): ditto.
-
-Sat Feb 5 10:09:31 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * load.c (rb_get_expanded_load_path): always expand load paths.
-
-Sat Feb 5 09:38:08 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * transcode.c (encoded_dup): extract.
-
-Sat Feb 5 03:37:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/fileutils.rb (FileUtils::LowMethods): make low level methods
- in NoWrite and DryRun to do nothing. [ruby-dev:43129]
-
- * test/fileutils/fileasserts.rb: add message arguments.
-
- * test/fileutils/fileasserts.rb (Test::Unit::Assertions#assert_block):
- show the given message.
-
-Sat Feb 5 02:09:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (lex_getline, parser_set_encode): set encoding of lines
- in SCRIPT_LINES__ as source encoding. [ruby-dev:43168]
-
-Sat Feb 5 02:08:37 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm.c (ruby_thread_data_type): add prefix.
-
-Sat Feb 5 00:59:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * vm_core.h (GetThreadPtr): use TypedData_Get_Struct() instead
- CoreDataFromValue() because we need type check. Otherwise,
- type mismatch can cause segmentation fault crash.
- [ruby-core:35086] [Ruby 1.9-Bug#4367]
-
- * vm.c (thread_data_type): remove static.
-
-Fri Feb 4 19:14:27 2011 Tanaka Akira <akr@fsij.org>
-
- * enc/trans/utf8_mac.trans: parenthesize macro arguments.
-
-Fri Feb 4 12:11:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * string.c (str_utf8_nth): fixed a condition of optimized lead
- byte counting. [Bug #4366][ruby-dev:43170]
-
-Fri Feb 4 01:50:13 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * string.c (count_utf8_lead_bytes_with_word): wrote function
- comments.
-
-Fri Feb 4 00:14:55 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/zlib/zlib.c (gzfile_reader_get_unused): no need to dup
- before rb_str_resurrect.
-
-Thu Feb 3 20:04:44 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/curses/curses.c (CHECK): unused macro removed.
-
-Thu Feb 3 18:33:26 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/zlib/zlib.c (gzfile_reader_get_unused): use rb_str_resurrect
- because gz->z.input is hidden string. [ruby-core:35057]
-
-Thu Feb 3 16:34:10 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * enc/shift_jis.c (code_to_mbc): cast as int from the subtraction of
- pointers.
-
- * enc/utf_16le.c (utf16le_mbc_enc_len): use ptrdiff_t.
-
- * enc/utf_32be.c (utf32be_left_adjust_char_head): ditto.
-
- * enc/utf_32le.c (utf32le_left_adjust_char_head): ditto.
-
-Thu Feb 3 16:31:43 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * include/ruby/missing.h: don't use HAVE_STDDEF_H because it never
- defined by configure though configure.bat defines it.
-
- * include/ruby/ruby.h: move include stddef.h to defines.h
-
- * include/ruby/defines.h: ditto.
-
-Wed Feb 2 20:25:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * include/ruby/encoding.h (rb_enc_step_back): cast 4th argument 'n'
- as int because Ruby usually treats length value as long but
- onigenc_step_back's 4th argument is int.
-
-Thu Feb 3 07:20:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/to_ruby.rb: use Regexp::NOENCODING
- rather than magic number.
-
- * ext/syck/lib/syck/rubytypes.rb: ditto
-
-Thu Feb 3 07:16:11 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * re.c (Init_Regexp): added a constant for ARG_ENCODING_NONE
- [ruby-core:35054]
-
- * test/ruby/test_regexp.rb: corresponding test.
-
-Thu Feb 3 07:02:16 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/to_ruby.rb: ARG_ENCODING_NONE regular
- expressions can round trip. [ruby-core:34969]
-
- * test/psych/test_yaml.rb: test for ARG_ENCODING_NONE regex
-
- * ext/sych/lib/syck/rubytypes.rb: ARG_ENCODING_NONE regular
- expressions can round trip.
-
- * test/syck/test_yaml.rb: test for ARG_ENCODING_NONE regex
-
-Wed Feb 2 17:09:22 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (rb_io_fdatasync): Use fsync(2) if the underlying
- operating system does not support fdatasync(2).
-
-Wed Feb 2 14:51:08 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc/markup/to_tt_only.rb: commit miss
- * test/rdoc/test_rdoc_markup_to_tt_only.rb: ditto
- * test/rdoc/test_rdoc_single_class.rb: ditto
-
-Wed Feb 2 09:27:53 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc: Upgrade to RDoc 3.5.1
-
-Wed Feb 2 00:30:43 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * include/ruby/st.h (st_table): Added comment why we need __extension__.
-
-Tue Feb 1 20:45:44 2011 Tanaka Akira <akr@fsij.org>
-
- * enc/encdb.c: parenthesize macro arguments.
-
-Tue Feb 1 15:12:26 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_require.rb (TestRequire#test_require_with_unc):
- use ``127.0.0.1'' instead of ``localhost'' as host name, because
- XP or earlier cannot resolv it as NBT hostname.
-
-Tue Feb 1 13:20:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/benchmark/test_benchmark.rb (#capture_bench_output):
- Added explicit sleep. Windows have imprecise time support.
- Thus Tms.new.Add!{} may be or may be not equal 0. The
- test failure started since r30747.
-
-Tue Feb 1 11:03:47 2011 Ryan Davis <ryan@lust.local>
-
- * lib/rubygems*: Import rubygems 1.5.0 (released version @ 1fb59d0)
- * test/rubygems: Ditto
-
-Tue Feb 1 08:01:39 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/io/console/console.c (console_set_winsize): new method to set
- console size. [EXPERIMENTAL]
-
- * ext/io/console/console.c (console_winsize): use GetWriteFD.
-
-Tue Feb 1 02:28:14 2011 Masaya Tarui <tarui@ruby-lnag.org>
-
- * include/ruby/win32.h, win32/win32.c: add rb_w32_inet_ntop.
- inet_ntop's minimum supported client is Vista.
-
-Tue Feb 1 00:10:30 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/benchmark.rb: fix benchmark to work with current ruby.
- patched by Benoit Daloze [ruby-core:33846] [ruby-dev:43143]
- merged from https://github.com/eregon/ruby/commits/benchmark
-
- * lib/benchmark (Report#width): update documentation
- * lib/benchmark: document the return value of #benchmark and the
- :list attribute in Report
- * lib/benchmark (Tms#format): rename variables, use String#%
- instead of Kernel.format
- * lib/benchmark: remove undocumented Benchmark::times (an alias
- of Process::times used twice)
- * lib/benchmark (#benchmark): use label_width for the caption
- * lib/benchmark (Tms#initialize): rename variables
- * lib/benchmark: allow title to not be a String and call #to_s
- * lib/benchmark (Benchmark#bm): return an Array of the times with
- the labels
- * lib/benchmark: correct output for Benchmark#bmbm
- (remove the extra space)
- * lib/benchmark: add a few tests for Benchmark::Tms output
- * lib/benchmark: improve style (enumerators, ljust, unused vars)
- * lib/benchmark: add spec about output and return value
- * lib/benchmark: improve basic style and consistency
- no parenthesis for print and use interpolation instead of printf
- * lib/benchmark: remove unnecessary conversions and variables
- * lib/benchmark: correct indentation
- * lib/benchmark: rename the FMTSTR constant and variable to FORMAT
- * lib/benchmark: remove useless exception
-
- * test/benchmark: remove unused variable warnings
-
-Mon Jan 31 23:27:23 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * node.c (add_id): remove duplicated rb_id2str() call.
-
-Sun Jan 30 17:19:46 2011 Tanaka Akira <akr@fsij.org>
-
- * missing/langinfo.c: parenthesize macro arguments.
-
-Mon Jan 31 21:57:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * configure.in: revert r30698.
-
-Mon Jan 31 21:32:44 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * thread.c (thread_start_func_2): check deadlock condition before
- release thread stack. fix memory violation when deadlock detected.
- reported by Max Aller. [Bug #4009] [ruby-core:32982]
-
-Mon Jan 31 14:45:47 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * lib/irb/locale.rb (IRB::Locale::#search_file):
- Gem might be undefined if --disable-gems. [ruby-core:34990]
-
-Mon Jan 31 12:26:14 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * addr2line.c: suppressed shorten-64-to-32 warnings.
- * regcomp.c: ditto.
- * regexec.c: ditto.
- * regint.h: ditto.
- * regparse.c: ditto.
- * regparse.h: ditto.
- * time.c: ditto.
- * variable.c: ditto.
-
-Mon Jan 31 04:45:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * array.c (rb_ary_uniq_bang): call ARY_SET_LEN(ary, 0) before
- ary_resize_capa because ary_resize_capa expects resized length is
- smaller than current array length. call rb_ary_unshare before
- ary_resize_capa because ary_resize_capa lost the reference to
- original shared array. [ruby-core:34997]
-
-Sun Jan 30 17:19:46 2011 Tanaka Akira <akr@fsij.org>
-
- * missing/crypt.c: parenthesize macro arguments.
-
-Sun Jan 30 16:40:27 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/rubygems/test_gem_security.rb (TestGemSecurity): valid only
- if OpenSSL is available.
-
- * test/dl/test_dl2.rb (TestDL#test_sin): math functions do not
- work on x86_64 due to the design of DL2.
-
- * test/dl/test_func.rb (DL::TestFunc#test_{sinf,sin): ditto.
-
-Sun Jan 30 16:09:22 2011 Tanaka Akira <akr@fsij.org>
-
- * strftime.c (rb_strftime_with_timespec): %G produces 4 digits.
-
-Sun Jan 30 15:13:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * enc/emacs_mule.c (emacsmule_islead): 7bit range is also leading
- byte.
-
-Sun Jan 30 13:03:16 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * hash.c (rb_hash_fetch_m): use useful message for longer key, not a
- nonsense id value.
-
- * string.c (rb_str_ellipsize): new function to ellipsize a string.
-
- * include/ruby/encoding.h (rb_enc_step_back): new function to step
- back n characters.
-
-Sun Jan 30 12:53:38 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * enc/emacs_mule.c (emacsmule_islead): fix inverse condition.
-
-Sun Jan 30 09:37:25 2011 Yutaka Kanemoto <kanemoto@ruby-lang.org>
-
- * io.c (struct argf): char behaves like an unsigned char
- by default on AIX.
-
-Sun Jan 30 08:02:55 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * configure.in: Mac OS X wrongly reports it has fdatasync(3).
-
-Sun Jan 30 03:29:47 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/openssl/ossl_bn.c (GetBNPtr): add missing nil case.
- patched by Martin Bosslet. [ruby-core:34987]
-
-Sun Jan 30 01:02:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * include/ruby/ruby.h: Added NUM2MODET() and MODET2NUM() default
- definition.
- Because r30686 introduced win32 build failure.
-
-Sat Jan 29 22:16:26 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * array.c (rb_ary_join): [].join.encoding must be US-ASCII.
- [ruby-list:47790]
-
-Sat Jan 29 20:22:39 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * benchmark/driver.rb (BenchmarkDriver#measure): Show command line
- when abnormal exiting occur.
-
-Sat Jan 29 10:53:16 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * vm_insnhelper.c (vm_get_ev_const): no-scope reference to toplevel
- private constant has been prohibited incorrectly.
-
- * test/ruby/test_module.rb (test_toplevel_private_constant): add a
- test for above.
-
-Sat Jan 29 08:43:23 2011 Ryan Davis <ryand-ruby@zenspider.com>
-
- * lib/rubygems*: Import rubygems 1.5.0 (release candidate @ 09893d9)
- * test/rubygems: Ditto
-
-Sat Jan 29 02:02:37 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * variable.c (rb_mod_const_of, sv_i): Module#constant should exclude
- private constants. see [ruby-core:32912].
-
- * test/ruby/test_module.rb (test_constants_with_private_constant): add
- a test for above.
-
-Sat Jan 29 01:36:41 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * variable.c (rb_const_set): const_set should preserve constant
- visibility. see [ruby-core:32912].
-
- * test/ruby/test_module.rb: add a test for above.
-
-Sat Jan 29 01:24:57 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * compile.c (NODE_CLASS, NODE_MODULE), insns.def (defineclass): raise
- an exception when "class Foo::Bar" is evaluated and Foo::Bar is
- private. To implement this, define_type of "defineclass" is added
- so that the instruction can distinguish whether the class definition
- is scoped (class Foo::Bar) or not (class Bar).
-
- * test/ruby/test_class.rb (test_redefine_private_class),
- test/ruby/test_module.rb
- (test_define_module_under_private_constant): add tests for above.
-
-Sat Jan 29 01:19:17 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * constant.h, variable.c: to ensure compatibility, rb_const_get_* must
- not raise an exception even when the constant is private. Instead,
- rb_public_const_get_* and rb_public_const_defined_* are introduced,
- which raise an exception when the referring constant is private.
- see [ruby-core:32912].
-
- * vm_insnhelper.c (vm_get_ev_const): use rb_public_const_get_* instead
- of rb_const_get_* to follow the constant visibility when user code
- refers a constant.
-
- * test/ruby/test_marshal.rb (test_marshal_private_class): add a test.
- This test had failed because of incompatibility of rb_const_get.
-
-Sat Jan 29 00:30:44 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * variable.c (set_const_visibility): fix typo. a patch from Tomoyuki
- Chikanaga in [ruby-core:32919].
-
-Fri Jan 28 23:20:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/gdbm/test_gdbm.rb (TestGDBM#test_s_open_no_create,
- TestGDBM2#test_writer_open_notexist): We only need to skip libgdbm
- 1.8.0, not all 1.8.x. 1.8.1 or later don't have GDBM_WRITER sickness.
-
-Fri Jan 28 21:56:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/dbm/extconf.rb: Added new header places for Fedora13.
-
-Fri Jan 28 21:49:30 2011 Tanaka Akira <akr@fsij.org>
-
- * ext/zlib/zlib.c: parenthesize macro arguments.
-
-Fri Jan 28 17:47:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/gdbm/test_gdbm.rb (TestGDBM2#test_writer_open_notexist):
- gdbm 1.8.x changed GDBM::WRITER behavior. Thus our testcase need
- to be changed too.
-
-Fri Jan 28 17:33:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/gdbm/test_gdbm.rb (TestGDBM#test_s_open_no_create): skip
- the test if gdbm version is 1.8.x.
-
-Fri Jan 28 16:30:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_require.rb (TestRequire#test_require_too_long_filename):
- Added -w option because too long path error don't output a message
- by default since r30660. [Bug #4336] [ruby-dev:43134]
-
-Fri Jan 28 16:19:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_require.rb (TestRequire#test_require_path_home_{1,2}):
- Added -w option because too long path error don't output a message
- by default since r30660. [Bug #4336] [ruby-dev:43134]
-
-Fri Jan 28 16:04:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_require.rb (TestRequire#test_require_path_home_{1,2,3}):
- split from test_require_path_home.
-
-Fri Jan 28 13:04:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * configure.in (--with-valgrind): Fixed r29683. Now this option
- is really default on.
-
-Fri Jan 28 12:05:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * configure.in: Add #include<sys/stat.h> when struct stat is
- tested. Otherwise, incomplete type dereference error will occur.
-
-Fri Jan 28 11:53:19 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * configure.in: redundant variable names made strange conftest
- error. Fixed it.
-
-Fri Jan 28 11:47:00 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_process.rb (TestProcess#test_too_long_path{,2}):
- should handle Errno::E2BIG, because this test checks crash of ruby,
- not the error type system.
-
-Fri Jan 28 11:23:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (rb_io_open): Use NUM2MODET() instead NUM2UINT().
- * io.c (rb_scan_open_args): ditto.
-
-Fri Jan 28 10:58:20 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * configure.in: Added mode_t type checking.
- * process.c (rb_exec_arg_addopt): Use NUM2MODET() instead
- NUM2LONG because clang makes compile error by this narrowing
- conversion.
- * process.c (rb_run_exec_options_err): ditto.
-
-Fri Jan 28 02:37:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * re.c (rb_reg_raise): add GC guard to prevent intermediate
- variable from GC.
-
-Fri Jan 28 02:35:41 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * hash.c (rb_hash_fetch_m): add GC guard to prevent intermediate
- variable from GC.
-
-Fri Jan 28 01:33:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_process.rb (TestProcess#test_too_long_path)
- TestProcess#test_too_long_path): Reduced string size from 100MB
- to 10MB. 100MB may cause no memory error. It isn't intended.
-
-Fri Jan 28 01:27:42 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_process.rb (TestProcess#test_too_long_path2):
- Factored out from test_too_long_path. A test should only do
- one test.
-
-Thu Jan 27 23:29:36 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * st.c (st_foreach): check if unpacked.
-
-Thu Jan 27 23:14:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * misc/ruby-mode.el (ruby-mode-map): remove deprecated binding.
- use M-; instead.
-
-Thu Jan 27 21:58:32 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * bignum.c (rb_str_to_inum): get rid of too huge alloca().
-
-Thu Jan 27 21:43:29 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * object.c (rb_str_to_dbl): rewrite again. use ALLOCV instead
- rb_str_tmp_new().
-
-Thu Jan 27 21:41:47 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * win32/win32.c: get rid of STRNDUPA(). It's dangerous API.
-
-Thu Jan 27 21:31:57 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * win32/win32.c (rb_w32_aspawn): get rid of too huge alloca().
- [Bug #4330] [ruby-core:34898]
-
-Thu Jan 27 20:30:18 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * win32/win32.c (rb_w32_spawn): get rid of too huge alloca().
-
-Thu Jan 27 18:49:53 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * win32/win32.c (open_dir_handle): get rid of too huge alloca().
-
-Thu Jan 27 18:34:58 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * file.c (w32_io_info): get rid of too huge alloca().
- [Bug #4313] [ruby-core:34830]
-
-Thu Jan 27 18:19:51 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * win32/win32.c (wstati64): get rid of too huge alloca().
- [Bug #4316] [ruby-core:34834]
-
-Thu Jan 27 15:11:52 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): get rid of too huge
- alloca(). this is the real fix of [ruby-core:34833].
-
-Thu Jan 27 12:46:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * process.c (ALLOC_ARGV_WITH_STR): fix void pointer arithmetic.
-
-Thu Jan 27 08:41:40 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * process.c (proc_exec_v, rb_proc_exec_n, rb_proc_exec)
- (proc_spawn_n, proc_spawn): get rid of too huge alloca().
- [ruby-core:34827], [ruby-core:34833]
-
-Thu Jan 27 08:32:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/ruby.h (ALLOCV): new API for exception-safe
- temporary buffer. [ruby-core:34844]
-
- * string.c (rb_alloc_tmp_buffer, rb_free_tmp_buffer):
- implementation of the API.
-
-Thu Jan 27 08:22:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dln_find.c (dln_find_1): use rb_warning and return immediately
- if fname is longer than buffer.
-
-Wed Jan 26 22:57:30 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * class.c (clone_method): add GC guard to prevent intermediate
- variable from GC. [Bug #4321] [ruby-dev:43107]
-
-Wed Jan 26 22:45:16 2011 Tanaka Akira <akr@fsij.org>
-
- * template/id.h.tmpl: parenthesize macro arguments.
-
-Wed Jan 26 22:28:49 2011 CHIKANAGA Tomoyuki <nagachika00@gmail.com>
-
- * vm_eval.c (rb_throw_obj): add GC guard to prevent intermediate
- variable from GC. [Bug #4322] [ruby-dev:43108]
-
-Wed Jan 26 17:08:59 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * ext/openssl/ossl_asn1.c (ossl_asn1_decode0): OpenSSL::ASN1.decode
- should reject indefinite length primitive encodings as that is
- illegal. Patch by Martin Bosslet. See #4324.
-
-Wed Jan 26 10:36:28 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (=~): documentation fix; the return value is nil when
- it doesn't match. patched by Andrei Kulakov [ruby-core:34562]
-
-Tue Jan 25 08:41:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dln_find.c (dln_find_1): omit too long pathnames.
-
-Tue Jan 25 08:28:19 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (rb_str_resize): get rid of out-of-bound access.
-
-Tue Jan 25 07:48:22 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * test/ruby/test_thread.rb: remove unused variables.
-
-Tue Jan 25 07:45:44 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * test/ruby/test_thread.rb (TestThread#test_condvar_nolock_2): get
- rid of method redefined.
-
-Tue Jan 25 07:00:52 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (rb_string_value_cstr): rb_str_modify can change
- RSTRING_PTR.
-
-Tue Jan 25 03:24:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ruby/test_thread.rb: Added various ConditionVariable tests.
-
-Mon Jan 24 22:26:33 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * object.c (rb_str_to_dbl): Fix again. use rb_str_tmp_new()
- instead ALLOC_N.
-
-Mon Jan 24 21:50:48 2011 Tanaka Akira <akr@fsij.org>
-
- * vm_insnhelper.h: parenthesize macro arguments.
-
-Mon Jan 24 21:28:34 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * object.c (rb_str_to_dbl): use ALLOC_N instead ALLOCA_N because
- ALLOC_N may cause stack overflow.
-
-Mon Jan 24 21:04:45 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * error.c (rb_invalid_str): prevent intermediate variable from GC.
- [ruby-core:34820]
-
-Sun Jan 23 23:01:54 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/io/console/test_io_console.rb: Don't run test if the system
- don't support io/console.
-
-Sun Jan 23 22:17:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/fiddle/test_fiddle.rb: Don't run test if the system don't support
- fiddle.
-
- * test/fiddle/test_function.rb: ditto.
- * test/fiddle/test_closure.rb: ditto.
-
-Sun Jan 23 11:39:18 2011 Tanaka Akira <akr@fsij.org>
-
- * vm_exec.h: parenthesize macro arguments.
-
-Sun Jan 23 10:33:02 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * template/fake.rb.in (ruby): suppress warnings.
-
-Sun Jan 23 08:00:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (str_nth_len, str_utf8_nth): return the rest length together.
-
- * string.c (rb_str_substr): get rid of measure the length always
- to improve performance for huge string. [ruby-core:34648]
-
-Sun Jan 23 00:40:10 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/test_syslog.rb: Fix to make a lot of test failure if
- the platform doesn't support syslog.
-
-Sat Jan 22 11:49:55 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/to_ruby.rb: fixing merge key support
- when multiple merge keys are specified.
-
- * test/psych/test_merge_keys.rb: tests for multi-merge key support
-
-Sat Jan 22 11:33:04 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/to_ruby.rb: merge keys are actually
- part of YAML 1.1, so they should be supported. Remove warning and
- merge keys to parent. [ruby-core:34679]
-
- * test/psych/test_merge_keys.rb: test for merge keys
-
-Sat Jan 22 10:25:19 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/parser.c (parse): add the file name to the exception when
- parse errors occur.
-
- * test/psych/test_parser.rb: test for parse error file name
-
-Sat Jan 22 10:12:30 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/parser.c (parse): fix assertion error when reusing a
- parser after an exception has been raised
-
- * test/psych/test_parser.rb: test for assertion error
-
-Sat Jan 22 04:09:22 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/nodes/node.rb: Make Psych::Nodes::Node
- enumerable.
-
- * ext/psych/lib/psych/visitors/depth_first.rb: Add a depth-first
- visitor to enumerate over a YAML AST in a depth-first fashion
-
- * test/psych/nodes/test_enumerable.rb: test for enumerating nodes
-
- * test/psych/visitors/test_depth_first.rb: test for depth-first
- visitor
-
-Sat Jan 22 00:53:42 2011 Tanaka Akira <akr@fsij.org>
-
- * vm_core.h: parenthesize macro arguments.
-
-Fri Jan 21 18:15:09 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in: should not use -Werror=* flags while conftests.
-
-Fri Jan 21 09:17:00 2011 Luis Lavena <luislavena@gmail.com>
-
- * configure.in: Fix incorrectly detected x86_64-w64-mingw32 due
- canonalization of target_os. Bug #3889 [ruby-core:32634]
-
-Thu Jan 20 23:44:00 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * configure.in: Fix rb_cv_va_args_macro was broken. We are using
- -Werror=implicit-function-declaration compile option. therefore
- we need a function declaration explicitly.
-
-Thu Jan 20 23:58:02 2011 Tanaka Akira <akr@fsij.org>
-
- * node.h: parenthesize macro arguments.
-
-Thu Jan 20 23:25:28 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * configure.in: Add '#include <stdlib.h>' to
- rb_cv_localtime_overflow test too. It's reported by Tomoyuki
- Chikanaga. Thanks.
-
-Thu Jan 20 16:11:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * README.EXT, README.EXT.ja: You shouldn't choose ``conftest.c'' as a
- name of a source file.
-
-Thu Jan 20 12:15:44 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * configure.in: Add stdlib.h inclusion into rb_cv_negative_time_t
- test because it's required for exit(3). The patch is
- created by Tomoyuki Chikanaga. [Bug #4287] [ruby-dev:43060]
-
-Thu Jan 20 11:39:41 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/webrick/utils.rb (TestWEBrick::RubyBin): test CGI does not need
- to load rubygems. if it activated, ruby raises LoadError about
- rbconfig.rb.
-
-Thu Jan 20 09:19:42 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/json_tree.rb: Fix JSON emit for
- DateTime and Time classes.
-
- * test/psych/test_json_tree.rb: test for JSON emit
-
-Thu Jan 20 08:02:46 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/coder.rb (represent_object): arbitrary objects
- may be passed to the Psych::Coder object.
-
- * ext/psych/lib/psych/visitors/yaml_tree.rb: support for visiting
- arbitrary objects set on the coder.
-
- * test/psych/test_coder.rb: supporting test case.
-
-Thu Jan 20 06:03:17 2011 Tanaka Akira <akr@fsij.org>
-
- * method.h: parenthesize macro arguments.
-
-Wed Jan 19 13:16:05 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/commands/sources_command.rb: Finish removing code,
- (fixes sources command test).
-
-Wed Jan 19 13:04:16 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * proc.c (proc_call): Add gc guard to avoid segfault. The fix
- is created by Tomoyuki Chikanaga. [Bug #4238][ruby-dev:42963]
-
-Wed Jan 19 12:31:28 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems.rb: Since gem_prelude requires rubygems, enable
- custom_require always.
-
-Wed Jan 19 12:08:08 2011 Eric Hodel <drbrain@segment7.net>
-
- * lib/rubygems/commands/dependency_command.rb: Remove require of
- deleted file.
- * lib/rubygems/commands/fetch_command.rb: ditto
- * lib/rubygems/commands/setup_command.rb: ditto
- * lib/rubygems/commands/sources_command.rb: ditto
- * lib/rubygems/commands/specification_command.rb: ditto
-
-Wed Jan 19 08:13:59 2011 Ryan Davis <ryand-ruby@zenspider.com>
-
- * lib/rubygems*: Import rubygems 1.5.0 (release candidate)
- * test/rubygems: Ditto
-
-Tue Jan 18 23:31:01 2011 Yusuke Endoh <mame@tsg.ne.jp>
-
- * parse.y: avoid NULL reference. [ruby-dev:43067]
-
-Wed Jan 19 02:54:04 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * vsnprintf.c (cvt): set first byte of buf to NUL for the case when
- no bytes are written to the buf. [ruby-dev:43062]
-
-Tue Jan 18 23:04:51 2011 Tanaka Akira <akr@fsij.org>
-
- * gc.h: parenthesize macro arguments.
-
-Tue Jan 18 18:31:14 2011 Keiju Ishitsuka <keiju@ishitsuka.com>
-
- * lib/irb/completion.rb: Irb tab completion support for XX::method
- forms.
-
-Tue Jan 18 15:05:55 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * lib/logger.rb: added RDoc document for logging message escape
- by Hal Brodigan. See #3869
-
-Tue Jan 18 07:53:52 2011 Tanaka Akira <akr@fsij.org>
-
- * eval_intern.h: parenthesize macro arguments.
-
-Tue Jan 18 04:42:44 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/parser.rb (Mark): Adding a class to wrap
- marker information
-
- * ext/psych/parser.c (mark): Add a method to return the mark object
- for the parser
-
- * test/psych/test_parser.rb: tests for the Mark class.
-
-Tue Jan 18 02:46:55 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/json_tree.rb (visit_String): JSON
- strings should be dumped with double quotes. [ruby-core:34186]
-
- * test/psych/test_json_tree.rb: test for double quotes
-
-Mon Jan 17 23:36:33 2011 Tanaka Akira <akr@fsij.org>
-
- * array.c (rb_ary_times): less MEMCPY calls.
-
-Mon Jan 17 22:54:33 2011 Tanaka Akira <akr@fsij.org>
-
- * debug.h: parenthesize macro arguments.
-
-Mon Jan 17 21:40:25 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby.c (process_options): revert r30549.
-
-Sun Jan 16 20:55:45 2011 Tanaka Akira <akr@fsij.org>
-
- * vsnprintf.c: parenthesize macro arguments.
-
-Sat Jan 15 11:57:30 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (warnflags): add -Werror=implicit-function-declaration
- if available.
-
- * lib/mkmf.rb (init_mkmf): ignore warnings in mkmf tests.
-
- * test/mkmf/base.rb (setup, teardown): restore config values.
-
- * test/mkmf/test_flags.rb: split from test_find_executable.rb.
-
-Sat Jan 15 10:04:14 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby.c (process_options): autoload rubygems.
-
- * tool/compile_prelude.rb (Prelude#initialize): ignore empty
- preludes.
-
- * ruby.c (ruby_init_prelude): get rid of global namespace
- pollution.
-
-Sat Jan 15 09:42:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/io.h: missing prototypes.
-
-Fri Jan 14 23:25:55 2011 Tanaka Akira <akr@fsij.org>
-
- * vm_method.c: parenthesize macro arguments.
-
-Fri Jan 14 15:32:29 2011 Shugo Maeda <shugo@ruby-lang.org>
-
- * test/net/imap/test_imap.rb: call neither logout nor disconnect
- unless connected. patch by Kazuhiro NISHIYAMA. [ruby-dev:42860]
-
-Fri Jan 14 14:56:57 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/imap.rb: use bytesize for binary strings.
- patched by Yoshimasa Niwa. [ruby-core:34222]
-
-Fri Jan 14 14:01:12 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * pack.c (pack_unpack): the resulted string of unpack('M') must have
- ASCII-8BIT encoding (and ENC_CODERANGE_VALID). [ruby-core:34482]
-
-Fri Jan 14 13:38:58 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/zlib/zlib.c (gzfile_check_footer): ISIZE (Input SIZE) in
- gzip's header is the size of uncompressed input data modulo 2^32.
- [ruby-core:34481] http://www.ietf.org/rfc/rfc1952.txt
-
-Fri Jan 14 11:36:25 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * configure.in, win32/Makefile.sub (RUNRUBY): require path should
- include "." because rbconfig.rb is there.
-
-Fri Jan 14 10:40:11 2011 Ryan Davis <ryan@lust.local>
-
- * gem_prelude.rb: Just require rubygems. Fixes rubygems 1.4.
- * lib/rubygems.rb: removed all Gem::Quickloader code.
- * ruby.c: renamed ruby_init_gems to ruby_init_prelude. Set
- $disable_rubygems since there is no fine grained mechanism to
- skip parts of the prelude. Open to suggestions on how to do this
- better.
- * test/*.rb: Load path isn't set up correctly, so add
- --disable-gems as needed to failing tests that are explicitly
- testing stderr w/ ==.
-
-Fri Jan 14 07:30:47 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (argf_next_argv): go advance when the next file cannot be
- read. [ruby-core:34446]
-
-Thu Jan 13 20:49:19 2011 Tanaka Akira <akr@fsij.org>
-
- * vm_insnhelper.c: parenthesize macro arguments.
-
-Thu Jan 13 13:21:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * vm_dump.c: delete dashes to make lines 80 chars, Patched by
- Shota Fukumori (sora_h). [Bug #4275] [ruby-dev:43021]
-
-Thu Jan 13 13:21:00 2011 Kenta Murata <mrkn@mrkn.jp>
-
- * vm_dump.c: fix misspelling of CrashReporter, Patched by Shota
- Fukumori (sora_h). [Bug #4275] [ruby-dev:43021]
-
-Thu Jan 13 06:27:29 2011 Ryan Davis <ryand-ruby@zenspider.com>
-
- * error.c: Exception#to_s should actually call to_s.
-
-Thu Jan 13 00:32:54 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * addr2line.c (get_nth_dirname): decrement the directory index
- because the index specifies the index of given included_directories
- which is separated by NUL and its index is begun from 1.
- Note that 0 specifies the current directory of the compilation.
- see also http://www.dwarfstd.org/doc/dwarf-2.0.0.pdf
-
-Thu Jan 13 00:06:38 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (rb_f_syscall): Add warning messages. [ruby-core:34062]
-
-Thu Jan 13 00:00:07 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (rb_f_syscall): Some syscall return unsigned or pointer value.
- Therefore we should only check the result is -1 or not.
- [ruby-core:34062]
-
-Wed Jan 12 23:55:48 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (rb_f_syscall): Add 64bit Linux support. Some syscall takes
- long type arguments.
-
-Wed Jan 12 19:37:10 2011 Tanaka Akira <akr@fsij.org>
-
- * vm_dump.c: parenthesize macro arguments.
-
-Wed Jan 12 19:28:23 2011 Tanaka Akira <akr@fsij.org>
-
- * vm.c (thread_free): reset ruby_current_thread if it points the
- thread to free.
- * gc.c (slot_sweep): don't call RUBY_VM_SET_FINALIZER_INTERRUPT if
- there is no current thread.
- [ruby-dev:43000]
-
-Wed Jan 12 19:09:29 2011 Tanaka Akira <akr@fsij.org>
-
- * enum.c (sort_by_i): reenter check more strictly.
- (sort_by_cmp): ditto.
- [ruby-dev:43003] reported by Usaku NAKAMURA.
-
-Wed Jan 12 16:25:12 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * lib/net/http.rb (Net::HTTP#connect): makes it timeout during
- SSL handshake too. [ruby-core:34203]
- Patch by Marc Slemko.
-
- * test/net/http/test_http.rb (TestNetHTTP_v1_2#test_timeout_during_HTTP_session):
- test for [ruby-core:34203]
-
- * test/net/http/test_https.rb (TestNetHTTPS#test_timeout_during_SSL_handshake):
- ditto.
-
-Wed Jan 12 16:24:53 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * ext/readline/extconf.rb: new checks for RL_PROMPT_START_IGNORE
- and RL_PROMPT_END_IGNORE. [ruby-core:34331]
-
- * ext/readline/readline.c: enables USE_INSERT_IGNORE_ESCAPE only if
- RL_PROMPT_{START,END}_IGNORE are available to get rid of compilation
- error with libedit.
-
-Wed Jan 12 15:53:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * README.EXT.ja (rb_ensure): typo.
-
-Wed Jan 12 11:33:46 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * addr2line.c: OpenBSD uses the elf_abi.h header file instead of the
- elf.h header file. patched by Jeremy Evans [ruby-core:34384]
-
-Wed Jan 12 03:59:36 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * test/webrick/test_cgi.rb: Removes usage of deprecated
- :RequestHandler option.
- patched by Peter Weldon [ruby-core:34010]
-
- * test/webrick/test_httpproxy.rb: ditto.
-
- * test/webrick/test_httpserver.rb: Add a test of the deprecation
- behaviour.
-
-Wed Jan 12 08:37:07 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * hash.c (hash_i): return different values for inverse hash.
- [ruby-core:34334]
-
-Tue Jan 11 20:32:59 2011 Tanaka Akira <akr@fsij.org>
-
- * variable.c: parenthesize macro arguments.
-
-Tue Jan 11 13:06:38 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * array.c (rb_ary_resize): should care of embeded array when extending
- the array.
-
- * array.c (rb_ary_resize): need to set capa when changing the real
- size of the array.
- these are latent bugs.
-
-Mon Jan 10 22:46:43 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/defines.h (CASEFOLD_FILESYSTEM): HFS+ is case
- insensitive.
-
- * load.c (loaded_feature_path, rb_feature_p, load_lock): on a
- case-insensitive filesystem, loaded features search should
- ignore case. [ruby-core:34297]
-
-Mon Jan 10 21:34:12 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (showflags): show LD commands.
-
-Mon Jan 10 14:32:55 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/test_method.rb (TestMethod#test_define_method): method
- transplanting between class and module is impossible.
-
-Mon Jan 10 13:51:17 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * misc/rdoc-mode.el (rdoc-mode): show trailing whitespace.
-
-Mon Jan 10 11:22:02 2011 Tanaka Akira <akr@fsij.org>
-
- * util.c: parenthesize macro arguments.
-
-Mon Jan 10 07:41:31 2011 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * misc/README: mention rdoc-mode.el and ruby-style.el.
-
-Sun Jan 9 20:37:21 2011 Tanaka Akira <akr@fsij.org>
-
- * transcode.c: parenthesize macro arguments.
-
-Sun Jan 9 16:31:53 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * io.c (Kernel.#syscall): implemented on LP64/LLP64 environments too.
- also uses __syscall if available for *BSD on 64bit architecture.
- [ruby-core:34062]
-
-Sun Jan 9 16:31:34 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * lib/irb/locale.rb (IRB::Locale::LOCALE_NAME_RE):
- some platform has a locale without territory but with
- encoding.
- (#each_sub_locale): ditto.
-
-Sun Jan 9 14:47:50 2011 TAKAO Kouji <kouji@takao7.net>
-
- * ext/readline/readline.c: apply a patch from Nobuyoshi Nakada.
- fixed #3616 [ruby-core:31484] IRB + readline incorrectly counts
- non-printing characters in prompt
-
-Sat Jan 8 21:47:26 2011 Tanaka Akira <akr@fsij.org>
-
- * enum.c (enum_sort_by): use rb_ary_resize.
- (ary_cutoff): removed.
-
-Sat Jan 8 21:24:17 2011 Tanaka Akira <akr@fsij.org>
-
- * pack.c (swapf): compilation condition simplified.
- (swapd): ditto.
-
-Sat Jan 8 20:51:25 2011 Tanaka Akira <akr@fsij.org>
-
- * pack.c (swapd): remove duplicated code.
-
-Sat Jan 8 19:28:55 2011 Tanaka Akira <akr@fsij.org>
-
- * thread.c: parenthesize macro arguments.
-
-Fri Jan 7 23:07:40 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (configuration): backref needs to capture.
-
-Fri Jan 7 21:57:22 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * misc/ruby-mode.el (ruby-mode-variables), misc/ruby-style.el:
- show trailing whitespace.
-
- * misc/ruby-mode.el (ruby-font-lock-syntactic-keywords): highlight
- regexp after open bracket. [ruby-core:34183]
-
-Fri Jan 7 00:37:35 2011 Tanaka Akira <akr@fsij.org>
-
- * string.c: parenthesize macro arguments.
-
-Thu Jan 6 22:42:02 2011 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * bignum.c (bigmul1_karatsuba): avoid overflow that make assertion
- fail in certain case. this patch is contributed from Ray Chason
- <chasonr at gmail.com> in personal communication.
-
-Thu Jan 6 20:55:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/mkmf.rb (create_makefile): ignore rest from first dot from
- TARGET to generate init function name.
- this is followup of r30464.
-
-Thu Jan 6 11:27:01 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/json/tree_builder.rb (start_mapping): tags
- should not be included in JSON mapping
-
-Thu Jan 6 09:23:33 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * lib/net/protocol.rb (eof?): BufferedIO should proxy eof? to the
- underlying IO object.
-
-Thu Jan 6 09:12:31 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * lib/mkmf.rb (configuration): fixing gsub when multiple error flags
- are passed to GCC.
-
-Thu Jan 6 05:25:49 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c (rb_ary_modify): export.
-
-Thu Jan 6 05:14:41 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/stringio/stringio.c (get_strio, strio_set_string)
- (strio_reopen): check if frozen. [ruby-core:33648]
-
-Thu Jan 6 05:10:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c (rb_ary_resize): new utility function. [ruby-dev:42912]
-
-Thu Jan 6 05:03:26 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dln.c (init_funcname_len): ignore rest from first dot.
- [ruby-dev:41774]
-
-Thu Jan 6 02:55:48 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/yaml_tree.rb: use YAML 1.0 output
- format for serializing nil values. Thanks Eric Hodel!
-
- * test/psych/test_nil.rb: test for nil values
-
-Wed Jan 5 14:21:34 2011 Mark Dodwell <hi@mkdynamic.co.uk>
-
- * string.c: fix rdoc typo.
- https://github.com/shyouhei/ruby/pull/3
-
-Wed Jan 5 14:06:01 2011 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/rdoc/test_rdoc_options.rb (TestRDocOptions#test_check_files):
- skip on Windows because chmod 0 doesn't mean unreadable by owner.
-
-Wed Jan 5 13:56:54 2011 Akinori MUSHA <knu@iDaemons.org>
-
- * lib/net/http.rb (Net::HTTP#get): A header hash given should not
- be modified.
-
-Wed Jan 5 12:10:08 2011 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/dl/{cfunc.c,dl.h,handle.c}, ext/fiddle/fiddle.{h,c}: Use _WIN32
- rather than checking for windows.h. Thanks Jon Forums!
- [ruby-core:33977]
-
-Sat Jan 1 17:02:50 2011 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * lib/irb/locale.rb (IRB::Locale#search_file): make it possible
- to load a localization from a gem.
- (IRB::Locale#lc_path): obsoleted because of the change of #search_file
- (IRB::Locale#each_localized_path): new private method, based on
- lc_path
- (IRB::Locale#find): follows the change of #search_file.
- (IRB::Locale#load): removed duplicate with #find.
-
-Sat Jan 1 11:44:42 2011 Tanaka Akira <akr@fsij.org>
-
- * strftime.c: parenthesize macro arguments.
-
-Sat Jan 1 11:10:29 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/zlib/zlib.c: take care of platforms where long is bigger
- than int.
-
-Sat Jan 1 11:03:58 2011 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * NEWS (optparse): shell completion support.
-
- * misc/README (rb_optparse.{bash,zsh}): for shell completion.
-
- * include/ruby/intern.h (VALUE rb_ary_print_on): I have never seen
- this function anywhere.
-
-Sat Jan 1 04:20:11 2011 NARUSE, Yui <naruse@ruby-lang.org>
-
- * win32/win32.c (rb_w32_write_console): don't raise exception when
- the conversion is for writing to console.
- Patched by Heesob Park [ruby-core:33999]
-
-Fri Dec 31 12:02:06 2010 Tanaka Akira <akr@fsij.org>
-
- * enum.c (enum_sort_by): use less temporary objects.
-
-Fri Dec 31 11:46:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (warnflags), lib/mkmf.rb (configuration): turn
- warnings into errors only for bundled extensions.
- [ruby-core:33815]
-
-Fri Dec 31 11:15:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/zlib/zlib.c (sizeof): zlib.h mistakenly assumes the result
- of sizeof to be int, not size_t.
-
-Fri Dec 31 10:27:34 2010 Tanaka Akira <akr@fsij.org>
-
- * st.c: parenthesize macro arguments.
-
-Fri Dec 31 03:23:26 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * vsnprintf.c (BSD__uqtoa): Fix overflow when long != quad_t.
- patched by Peter Weldon <peter.weldon AT null.net>
- [ruby-core:33985]
-
-Fri Dec 31 03:00:34 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * Makefile.in: remove unnecessary semicolons.
-
-Thu Dec 30 23:09:47 2010 wanabe <s.wanabe@gmail.com>
-
- * vm.c (vm_define_method): guard iseq from GC while method definition.
- [ruby-dev:42832]
-
-Thu Dec 30 20:18:32 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * win32/Makefile.sub: ditto.
-
-Thu Dec 30 20:57:09 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * Makefile.in: Check V=1 argument if run "make clean" or similar.
-
-Thu Dec 30 20:41:50 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * Makefile.in: Kill ugly line continuation.
-
-Thu Dec 30 11:49:40 2010 Tanaka Akira <akr@fsij.org>
-
- * sprintf.c: parenthesize macro arguments.
-
-Wed Dec 29 21:20:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (maygvl_copy_stream_wait_readwrite): define if USE_SENDFILE
-
-Wed Dec 29 20:37:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/extmk.rb: strip current directory prefix.
-
- * enc/depend (clean): remove name2ctype.h when out-of-place build.
-
- * win32/Makefile.sub (clean-enc): pass V to inferior make.
-
-Wed Dec 29 18:23:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * re.c (rb_reg_expr_str): need to escape if the coderange is invalid.
-
-Wed Dec 29 10:06:51 2010 Tanaka Akira <akr@fsij.org>
-
- * signal.c: parenthesize macro arguments.
-
-Wed Dec 29 07:22:15 2010 Eric Hodel <drbrain@segment7.net>
-
- * lib/rake/rdoctask.rb: Deprecate in favor of rdoc/task.
-
-Wed Dec 29 07:07:06 2010 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc: Import RDoc 3.1
-
-Tue Dec 28 18:36:38 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * error.c, include/ruby/intern.h (rb_compile_error_with_enc): new
- function to raise syntax error, with source encoding'ed message.
-
- * parse.y (compile_error): use above function.
- [ruby-core:33951] (#4217)
-
-Tue Dec 28 07:37:38 2010 Tanaka Akira <akr@fsij.org>
-
- * ruby.c: parenthesize macro arguments.
-
-Tue Dec 28 07:17:11 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * NEWS: add ARGF.write and so on.
-
-Tue Dec 28 07:12:38 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * NEWS: add new magic-comment. (warn-indent) [ruby-core:25442]
-
-Tue Dec 28 04:32:37 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/fiddle/extconf.rb: check for windows.h while building fiddle.
- Thanks Jon Forums! [ruby-core:33923]
-
-Tue Dec 28 01:45:12 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * NEWS: Add Zlib.deflate and Zlib.inflate.
- [ruby-dev:42833]
-
-Mon Dec 27 21:22:33 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * win32/configure.bat: Remove obsoleted coding rule. Now, we
- don't support to build on Windows 95/98 and Me.
-
-Mon Dec 27 18:27:13 2010 Tanaka Akira <akr@fsij.org>
-
- * re.c: parenthesize macro arguments.
-
-Mon Dec 27 15:22:23 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/README.win32: note to need NT based OS to build ruby.
-
-Mon Dec 27 12:14:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * common.mk (EXTMK_ARGS): specify to pass macro V, because nmake
- doesn't pass it via MAKEFLAGS.
-
-Mon Dec 27 10:33:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/zlib/zlib.c (Init_zlib): Add Zlib.deflate and Zlib.inflate.
- [ruby-dev:42833]
-
-Mon Dec 27 07:38:07 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * misc/rb_optparse.zsh: add compdef for generator.
-
-Mon Dec 27 07:32:07 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * lib/optparse.rb (OptionParser#compsys): escape brackets too.
- [ruby-dev:42754]
-
-Mon Dec 27 01:30:08 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/mkconstants.rb: add IF_NAMESIZE.
- add a default for INET6_ADDRSTRLEN.
-
-Sun Dec 26 23:49:47 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * win32/Makefile.sub: suppress a strange error message when RMALL
- found no such file.
- * win32/rmall.bat: new.
-
-Sun Dec 26 21:23:23 2010 <kosaki.motohiro@gmail.com>
-
- * win32/Makefile.sub: fix 'nmake clean-enc' breakage since r28322.
-
-Sun Dec 26 22:25:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/ripper/depend (ripper.y): fix messages with nmake.
- [ruby-dev:42896]
-
-Sun Dec 26 22:24:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (file_expand_path): get rid of warnings caused by
- -Wdeclaration-after-statement on cygwin.
-
-Sun Dec 26 20:28:34 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * process.c (before_exec): add small comment.
-
-Sun Dec 26 20:52:21 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/mkconstants.rb: define INET_ADDRSTRLEN as 16 if not
- available. fix compilation error on mswin32-60. reported by nobu.
-
-Sun Dec 26 19:37:37 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/option.c: define IFNAMSIZ if not available.
- fix compilation error on mingw32. reported by nobu.
-
-Sun Dec 26 12:16:29 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/rdoc/ri/paths.rb (RDoc::RI::Paths::HOMEDIR): no exception if
- HOME is not set. [ruby-core:33867]
-
-Sun Dec 26 11:39:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (stmt): missing ripper rule. i.e., `a::B ||= c 1'.
- http://twitter.com/#!/wannabe53/status/18797576396472321
- http://twitter.com/#!/wannabe53/status/18798416150663168
-
-Sun Dec 26 11:15:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/with_different_ofs.rb (DifferentOFS): should not affect
- original classes.
-
-Sun Dec 26 09:35:07 2010 Tanaka Akira <akr@fsij.org>
-
- * rational.c: parenthesize macro arguments.
-
-Sun Dec 26 09:22:19 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/option.c (rb_if_indextoname): new function to abstract
- environments without if_indextoname.
- (inspect_ipv6_multicast_if): new function to inspect
- IPV6_MULTICAST_IF.
- Socket::Option.new(:INET6, :IPV6, :MULTICAST_IF,
- [2].pack("I!")).inspect is
- "#<Socket::Option: INET6 IPV6 MULTICAST_IF eth0>".
-
-Sun Dec 26 04:31:15 2010 Luis Lavena <luislavena@gmail.com>
-
- * ext/dl/win32/registry.rb: Corrected RegCreateKeyExA signature.
- Patch by Rafal Michalski [ruby-core:33874] [Ruby 1.9-Bug#4203]
-
-Sun Dec 26 02:31:58 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (advice_arg_check): Change argument check.
- Now, an unsupported advice makes NotImplementedError.
- [ruby-dev:42887] [Ruby 1.9-Feature#4204]
-
-Sun Dec 26 03:00:53 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/socket/extconf.rb: Fix build error which was introduced r30372.
-
-Sun Dec 26 01:37:10 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/socket/extconf.rb: check the existence of if_indextoname().
-
- * ext/socket/option.c: yesterday's akr's commits destroyed the build of
- some unrelated platforms (such as Windows).
-
-Sat Dec 25 23:29:11 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/option.c (inspect_ipv4_add_drop_membership): new function
- to inspect struct ip_mreq and struct ip_mreqn for
- IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
- Socket::Option.new(:INET, :IP, :ADD_MEMBERSHIP,
- [239,255,99,81, 0,0,0,0].pack("CCCCCCCC")).inspect is now
- "#<Socket::Option: INET IP ADD_MEMBERSHIP 239.255.99.81 0.0.0.0>".
- (inspect_ipv4_multicast_if): new function to inspect struct in_addr
- and struct ip_mreqn for IP_MULTICAST_IF.
- Socket::Option.new(:INET, :IP, :MULTICAST_IF,
- [192,168,0,7].pack("CCCC")).inspect is now
- "#<Socket::Option: INET IP MULTICAST_IF 192.168.0.7>".
-
- * ext/socket/extconf.rb: check struct ip_mreq and struct ip_mreqn.
-
-Sat Dec 25 22:49:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/csv: DifferentOFS needs to be include in each classes.
-
- * test/digest/test_digest_extend.rb (TestDigestExtend#setup):
- should not depend on the result of previous tests
-
- * test/with_different_ofs.rb (DifferentOFS::WithDifferentOFS): give
- name.
-
- * test/with_different_ofs.rb (DifferentOFS): test suite for test
- suites affected by $,.
-
- * test/digest/test_digest_extend.rb (TestDigestExtend): should not
- assume $, invariant.
-
- * test/csv/test_data_converters.rb, test/csv/test_table.rb: don't
- call setup within tests.
-
-Sat Dec 25 20:01:40 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (pipe_open): Added rb_thread_atfork(). We must reinitialize
- GVL at new process creation.
-
-Sat Dec 25 18:26:55 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/option.c (inspect_ipv6_mreq): new function to inspect
- struct ipv6_mreq for IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP.
- Socket::Option.new(:INET6, :IPV6, :JOIN_GROUP,
- [0xff12,0,0,0,0,0,0,1, 2].pack("nnnnnnnnI!")).inspect is now
- "#<Socket::Option: INET6 IPV6 JOIN_GROUP ff12::1 eth0>".
-
- * ext/socket/extconf.rb: check struct ipv6_mreq.
-
-Sat Dec 25 18:04:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/csv.rb (CSV.foreach): 'rb' mode is defaulted in open.
-
- * lib/csv.rb (CSV#init_separators): cannonicalize encoding options
- as Encoding objects.
-
-Sat Dec 25 18:30:34 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (rb_thread_atfork): Add small comment why we need
- reset random seed.
-
-Sat Dec 25 17:33:55 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/csv/base.rb (TestCSV.with_different_ofs): give name to
- anonymous classes.
-
- * lib/csv.rb (CSV#init_separators): use IO#gets with length
- parameter to get rid of wrong convertion.
-
- * lib/csv.rb (CSV::foreach, CSV#initialize): directly use encoding
-
- * lib/csv.rb, test/csv: should not assume $, invariant.
-
-Sat Dec 25 16:08:06 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * signal.c: change rb_atomic_t definition from uchar to uint.
-
-Sat Dec 25 15:04:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/csv/test_encodings.rb (TestEncodings#setup): fix evil test
- suite writing to the source directory.
-
-Sat Dec 25 15:08:08 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/pty/pty.c (chfunc): Added rb_thread_atfork_before_exec().
- We must reinitialize GVL at new process creation. Otherwise
- we may meet an insane deadlock. [Bug#4121][ruby-dev:42686]
-
-Sat Dec 25 14:27:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (rb_io_extract_encoding_option): accept Encoding object as
- encoding: optional argument. [ruby-dev:42884]
-
-Sat Dec 25 13:37:55 2010 Ryan Davis <ryand-ruby@zenspider.com>
-
- * lib/minitest/*.rb: Imported minitest 2.0.2 r6093.
-
-Sat Dec 25 13:05:59 2010 Tanaka Akira <akr@fsij.org>
-
- * random.c: parenthesize macro arguments.
-
-Sat Dec 25 12:48:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * load.c (rb_f_require_relative): don't omit return type.
-
-Sat Dec 25 11:06:00 2010 Eric Hodel <drbrain@segment7.net>
-
- * load.c (rb_f_require_relative): Add documentation.
-
-Sat Dec 25 11:02:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/zlib/zlib.c (gzreader_gets): support optional length
- parameter.
-
- * ext/zlib/zlib.c (gzfile_read, gzfile_readpartial): length should
- be long.
-
-Sat Dec 25 10:51:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/json/generator/generator.{c,h} (fbuffer_free_only_buffer):
- unused.
-
- * ext/openssl/ossl_pkcs5.c (ossl_pkcs5_pbkdf2_hmac): add casts.
-
-Fri Dec 24 08:46:04 2010 Tanaka Akira <akr@fsij.org>
-
- * process.c: parenthesize macro arguments.
-
-Thu Dec 23 19:17:14 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * test/net/imap/cacert.pem: updated because it has been expired.
-
- * test/net/imap/server.crt: signed again because CA cert was expired.
-
-Thu Dec 23 11:16:52 2010 Tanaka Akira <akr@fsij.org>
-
- * parse.y: parenthesize macro arguments.
-
-Thu Dec 23 11:00:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * error.c (rb_check_type): check for type from extensions for ruby
- 1.8. see [ruby-core:33797].
-
-Thu Dec 23 08:12:59 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * lib/net/smtp.rb: refactoring Net::SMTP#esmtp= to use an
- attr_accessor
-
-Thu Dec 23 06:35:41 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * lib/net/smtp.rb: Net::SMTP should close the SSL connection if the
- connection verification fails.
-
-Thu Dec 23 01:47:58 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * NEWS: remove #object_id. [ruby-dev:42840]
-
-Wed Dec 22 08:56:39 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * NEWS: add Module#private_constant and Module#public_constant.
- [ruby-dev:39685][ruby-core:32698]
-
-Wed Dec 22 07:59:23 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * NEWS: add IO#advise. [ruby-core:33110] [Ruby 1.9-Feature#4038]
-
-Tue Dec 21 23:45:31 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * gc.c (Init_GC): move back object_id to Kernel. [ruby-dev:42840]
-
-Tue Dec 21 12:45:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (target_archs): remove temporary objects.
-
- * enc/Makefile.in, enc/depend (clean): remove work directories.
-
-Tue Dec 21 07:39:12 2010 Tanaka Akira <akr@fsij.org>
-
- * pack.c: parenthesize macro arguments.
-
-Tue Dec 21 06:25:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/rexml/test_contrib.rb (ContribTester#test_pos): should not
- use fixed path name for tests. [ruby-dev:42827]
-
- * test/rexml/test_sax.rb (SAX2Tester#test_socket): should not use
- fixed port for tests. [ruby-dev:42828]
-
-Tue Dec 21 06:10:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * compile.c (setup_args), vm.c (invoke_block_from_c),
- vm_insnhelper.c (caller_setup_args): reverted r30241 and r30243
- except for the test.
-
-Tue Dec 21 01:41:42 2010 Masaya Tarui <tarui@ruby-lnag.org>
-
- * io.c : add an extra byte to buffer for the specification of read
- in Windows. see [ruby-core:33460] and r29980. and, we have to
- discuss how to do this one byte.
-
-Tue Dec 21 01:18:06 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * error.c: Fix build error for win32. This regression was
- introduced by r30271.
-
-Tue Dec 21 00:59:40 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (thread_cleanup_func): Moved interrupted_lock
- destroying code from native_thread_destroy() to
- thread_cleanup_func() because it's platform independent logic.
-
- * thread_win32.c (native_thread_destroy): ditto.
- * thread_pthread.c (native_thread_destroy): ditto.
-
-Tue Dec 21 00:46:20 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread.c (thread_cleanup_func): Don't touch native threading
- resource at fork. Sadly this is purely bandaid. We need to
- implement proper fix later. [Bug #4169] [ruby-core:33767]
-
-Tue Dec 21 00:22:44 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * error.c (exit_success_p): Check status code more carefully.
- status code may have garbage in upper bit.
-
-Mon Dec 20 23:12:37 2010 Tanaka Akira <akr@fsij.org>
-
- * node.c: parenthesize macro arguments.
-
-Mon Dec 20 20:04:41 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * NEWS: add #__id__ and #object_id. [ruby-dev:42778]
-
-Mon Dec 20 20:03:21 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * thread_pthread.c (native_thread_destroy): Fixed gvl_cond leak.
-
-Mon Dec 20 13:49:05 2010 Eric Hodel <drbrain@segment7.net>
-
- * NEWS: Add item for RDoc 3.0.1
-
- * lib/rdoc: Import RDoc 3.0.1, remove require for perl parser.
-
-Mon Dec 20 12:15:32 2010 Eric Hodel <drbrain@segment7.net>
-
- * lib/rdoc: Import RDoc 3.0.
-
-Mon Dec 20 01:55:03 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (Init_IO): Added O_DIRECT. This feature was proposed by
- Run Paint Run Run.
- [Feature #4015] [ruby-core:33018]
-
-Sun Dec 19 19:15:23 2010 Tanaka Akira <akr@fsij.org>
-
- * marshal.c: parenthesize macro arguments.
-
-Sat Dec 18 21:52:37 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * vsnprintf.c (BSD_vfprintf): suppress warning: "_WIN32" is not
- defined.
-
-Sat Dec 18 16:02:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * compile.c (setup_args), vm.c (invoke_block_from_c),
- vm_insnhelper.c (caller_setup_args): fix of r30241. lambda block
- should check argument number.
-
-Sat Dec 18 14:42:29 2010 Tanaka Akira <akr@fsij.org>
-
- * load.c: parenthesize macro arguments.
-
-Sat Dec 18 10:07:04 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * compile.c (setup_args, iseq_compile_each): optimize AMPER LAMBDA
- combination as block.
-
-Fri Dec 17 22:07:16 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * gc.c (Init_GC): move #__id__ and #object_id to BasicObject.
- [ruby-dev:42778]
-
-Fri Dec 17 19:35:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/mkmf/base.rb (TestMkmf::FakeLog): capture output from mkmf.
-
- * test/mkmf/test_find_executable.rb (test_find_executable):
- suppress meaningless differences for chkbuild.
-
-Fri Dec 17 13:26:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/setup.mak (BASERUBY): quit with an error when BASERUBY was not
- able to set, just like configure.in does. [ruby-dev:42782]
-
-Fri Dec 17 07:04:09 2010 Tanaka Akira <akr@fsij.org>
-
- * iseq.c: parenthesize macro arguments.
-
-Fri Dec 17 04:18:37 2010 Eric Hodel <drbrain@segment7.net>
-
- * transcode.c (str_encode): Alter comment for better wording and ri
- output.
-
-Fri Dec 17 00:05:40 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * io.c (rb_io_advise): New API. IO#advise() allows to tell the
- ruby runtime how it expects to use a file handle. This feature
- can be improved a performance some situations.
- Note: This feature is mainly developed by Run Paint Run Run.
- Thank you! [ruby-core:33110] [Ruby 1.9-Feature#4038]
-
- * io.c (do_io_advise): Helper function.
- * io.c (io_advise_sym_to_const): ditto.
-
-Thu Dec 16 23:29:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/rbinstall.rb (bin-comm): use transformed name.
- [ruby-dev:42777]
-
-Thu Dec 16 21:52:07 2010 Tanaka Akira <akr@fsij.org>
-
- * io.c: parenthesize macro arguments.
-
-Thu Dec 16 21:46:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/mkconfig.rb (RbConfig): honor ARCHFLAGS and RC_ARCHS to
- override embedded ARCH_FLAG value on universal-darwin.
-
-Thu Dec 16 19:50:12 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/{configure.bat,setup.mak,Makefile.sub} (PROGRAM_PREFIX,
- PROGRAM_SUFFIX): unite the differences of the names of macros of
- prefix and suffix.
- reported by HANEDA Norikatsu. [ruby-dev:42775]
-
-Thu Dec 16 08:04:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * node.h (RNode): match the type of flags to RBasic, and renamed
- nd_file as nd_reserved.
-
- * iseq.c (set_relation), vm_insnhelper.c (vm_cref_push): nd_file
- is always zero-cleared.
-
-Thu Dec 16 07:22:30 2010 Ryan Davis <ryand-ruby@zenspider.com>
-
- * lib/minitest/unit.rb: Imported minitest 2.0.1 r6079.
-
-Wed Dec 15 20:45:02 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/test/unit.rb (process_args): need to setup @help to print options.
-
-Wed Dec 15 11:19:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/zlib/test_zlib.rb (test_to_io): forgotten to fix with r30201.
-
-Wed Dec 15 11:07:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (simple_sendfile): enable on Mac OS X.
-
- * io.c (nogvl_copy_stream_sendfile): moved precheck of copy length.
-
- * io.c (nogvl_copy_stream_sendfile): should wait for both of
- read/write fds.
-
-Wed Dec 15 07:11:55 2010 Tanaka Akira <akr@fsij.org>
-
- * hash.c: parenthesize macro arguments.
-
-Wed Dec 15 04:02:00 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * ext/openssl/ossl_x509ext.c (ossl_x509extfactory_set_config):
- fix compile error when !HAVE_X509V3_SET_NCONF. Thanks
- Chikanaga-san. [ruby-dev:42761] [Ruby 1.9-Bug#4158]
-
-Wed Dec 15 03:41:31 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * test/ripper/test_parser_events.rb (TestRipper#test_block_variables):
- Limit address space 100MB instead 100KB. Quite frankly, This
- margin is too narrow to contain ruby. [ruby-dev:42763] [Bug#4159]
-
-Tue Dec 14 23:53:52 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * io.c (simple_sendfile): improve linux compatibility on FreeBSD,
- and now it works. But without cpuset -l 0, it still gets stuck.
-
-Tue Dec 14 20:31:33 2010 Tanaka Akira <akr@fsij.org>
-
- * gc.c: parenthesize macro arguments.
-
-Tue Dec 14 18:31:48 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * lib/test/unit.rb: help messages.
-
-Tue Dec 14 18:19:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * common.mk (help): there is no reason to use the abbreviation for here.
-
-Tue Dec 14 15:03:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_io.rb (test_reopen, test_reinitialize): should close
- the temporary files.
-
-Tue Dec 14 14:24:15 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_io.rb (make_tempfile): change the prefix from 'foo'
- to 'test_io' because the old one is meaningless and inconvenient.
-
- * test/ruby/test_io.rb (test_binmode_after_closed): the temporary file
- maked by make_temfile is already closed.
-
-Tue Dec 14 13:52:19 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_io.rb (test_flush_in_finalizer[12]): should close
- temporary file because it's only used for taking pathname and
- unlinking the file after the end of the test (in GC phase).
-
-Tue Dec 14 13:34:33 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/zlib/zlib.c (gzfile_s_open): should close the IO if some error
- occurs in initializing.
-
-Tue Dec 14 13:04:16 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http.rb (Net::HTTPRequest#send_request_body_data):
- set binmode to tempfile.
-
-Tue Dec 14 12:55:46 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/zlib/test_zlib.rb (*): should close files associated with zlib.
-
-Tue Dec 14 11:30:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_argf.rb (test_inplace_rename_impossible): unlink
- the renamed temporary file on no_safe_rename platforms.
-
- * test/ruby/test_argf.rb (test_readlines_limit_0,
- test_each_line_limit_0): should close argf because the associated
- Tempfile object cannot unlink the temporary file when it's gc'ed
- on some platforms (Windows, etc.)
-
-Tue Dec 14 11:27:07 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/minitest/unit.rb (Minitest::Unit#_run_suite): split test
- name and its time. Thiw allows to know test's name when you are
- running tests and meet a test which spends long time at realtime.
-
-Tue Dec 14 11:25:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * configure.in: Add -Werror=declaration-after-statement to default
- warning flag. If you are using GCC, this flag is useful to
- prevent breaking VC build.
-
-Tue Dec 14 10:25:57 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/openssl/ossl_asn1.c (ossl_asn1_decode0): how many gcc-c99isms
- must a man mend; before he can build with VC? r30178
-
-Mon Dec 13 21:26:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * io.c (simple_sendfile): disable the use of sendfile(2) on
- FreeBSD. It blocks on TestIO#test_copy_stream_socket.
-
-Mon Dec 13 18:35:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * io.c: define USE_SENDFILE on FreeBSD or DragonFly BSD.
- Remove Mac OS X because its argument is different from them.
-
-Mon Dec 13 12:00:09 2010 Tanaka Akira <akr@fsij.org>
-
- * file.c: parenthesize macro arguments.
-
-Mon Dec 13 11:21:14 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * io.c (simple_sendfile): added for BSD version of sendfile(2).
-
-Mon Dec 13 09:50:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http.rb (Net::HTTPRequest#set_form): Added to support
- both application/x-www-form-urlencoded and multipart/form-data.
- There is a similar API, Net::HTTPRequest#set_form_data, but
- to keep its compatibility this is newly added. [ruby-dev:42729]
-
-Sun Dec 12 23:45:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * compile.c (iseq_compile_each): fix for __goto__ and __label__
- where were totally broken.
-
-Sun Dec 12 22:45:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (ID_H_INCLUDES): now id.h depends on vm_opts.h.
-
-Sun Dec 12 20:42:47 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * template/id.h.tmpl: suppress all warning: "SUPPORT_JOKE" is not
- defined. [ruby-dev:42730]
-
-Sun Dec 12 20:35:07 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * misc/rb_optparse.zsh: update how to install.
-
- * misc/rb_optparse.zsh: avoid error when setopt noclobber.
-
- * lib/optparse.rb: fix typo. pointed out at
- <http://d.hatena.ne.jp/nagachika/20101207>.
-
-Sun Dec 12 13:27:35 2010 Tanaka Akira <akr@fsij.org>
-
- * eval_error.c: parenthesize macro arguments.
-
-Sun Dec 12 11:53:24 2010 Tanaka Akira <akr@fsij.org>
-
- * error.c: parenthesize macro arguments.
-
-Sun Dec 12 04:01:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (rb_str_inspect): fix: extra back slash is added when
- the string is dummy encoding and includes \x22 or \x5C.
-
-Sun Dec 12 02:42:24 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/openssl/ossl_asn1.c: indefinite length BER to DER encoding is
- properly supported. Thanks Martin Bosslet! [ruby-core:33082]
-
-Sat Dec 11 17:43:34 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * ext/bigdecimal/bigdecimal.h: suppress "warning: 'VPrint' declared
- 'static' but never defined".
-
-Sat Dec 11 09:24:57 2010 Tanaka Akira <akr@fsij.org>
-
- * encoding.c: parenthesize macro arguments.
-
-Sat Dec 11 08:12:48 2010 Eric Hodel <drbrain@segment7.net>
-
- * ext/openssl/ossl.c, ext/openssl/ossl_pkey_rsa.c: Document RSA, RSA
- encryption/decryption and PKCS #5 encryption/decryption.
-
-Sat Dec 11 06:23:41 2010 Eric Hodel <drbrain@segment7.net>
-
- * ext/openssl/ossl_x509name.c: include Comparable to provide #==.
- Document OpenSSL::X509::Name#<=>. [Ruby 1.9-Feature#4116]
-
-Sat Dec 11 05:48:28 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/lib/multi-tk.rb: infinite loop on method_missing at loading.
- [ruby-dev:42716] [Ruby 1.9-Bug#4129]
-
- * ext/tk/lib/multi-tk.rb: when no eventloop is running, ruby freezes at
- exit.
-
-Sat Dec 11 02:23:15 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/openssl/extconf.rb: try pkgconfig first, then fall back to
- normal have_library, etc. Thanks Erik Hollensbe. [ruby-core:32406]
-
-Fri Dec 10 22:33:39 2010 Tanaka Akira <akr@fsij.org>
-
- * dln_find.c: parenthesize macro arguments.
-
-Fri Dec 10 20:05:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * template/id.h.tmpl (ruby_method_ids): suppress warnings.
- [ruby-dev:42730]
-
-Fri Dec 10 18:29:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby.c (ruby_init_loadpath_safe): relatively called non-shared
- binary cannot be found in PATH, so use given pathname.
-
-Fri Dec 10 18:28:40 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * cygwin/GNUmakefile.in (SCRIPTPROGRAMS): ignore backup files and etc.
-
- * cygwin/GNUmakefile.in (scriptbin): set executable bit.
-
- * tool/rbinstall.rb (install_recursive): always skip default ignored
- files. if block is given, call it instead of calling install.
-
- * tool/rbinstall.rb (bin-comm): use install_recursive.
-
-Fri Dec 10 18:12:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/mkmf/base.rb (TestMkmf#config_value): extract macro value from
- config.h.
-
- * test/mkmf/test_sizeof.rb (TestMkmf::TestSizeof#test_sizeof_builtin),
- (TestMkmf::TestSizeof#test_sizeof_struct): more tests.
-
- * lib/mkmf.rb (check_signedness): should use the prelude code.
- [ruby-dev:42731]
-
- * lib/mkmf.rb (Logging.log_close): separate from Logging.logfile.
-
- * test/mkmf/base.rb (TestMkmf::MKMFLOG): show mkmf.log at failures.
-
- * test/mkmf/base.rb (TestMkmf#teardown): close log file for each tests.
-
-Fri Dec 10 11:36:43 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * compile.c (enum): remove a comma at end of enumerator list.
-
- * constant.h (rb_const_flag_t): ditto.
-
- * iseq.h (enum catch_type): ditto.
-
- * iseq.h (enum defined_type): ditto.
-
- * vm_core.h (enum iseq_type): ditto.
-
- * vm_core.h (enum vm_special_object_type): ditto.
-
-Fri Dec 10 10:47:53 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * sprintf.c (_HAVE_SANE_QUAD_): Don't forget LP64, r30156.
-
-Fri Dec 10 10:37:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * sprintf.c (_HAVE_SANE_QUAD_): if a certain platform has LONG_LONG in
- 8 byte, it might be sane quad. [ruby-core:33634]
-
-Fri Dec 10 10:07:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http.rb: remove version 1.1 features.
-
-Fri Dec 10 02:18:02 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/openssl/ossl_x509store.c (ossl_x509stctx_cleanup): removing C
- implementation of `cleanup`.
-
- * ext/openssl/lib/openssl/x509.rb: adding ruby implementation of
- `cleanup`. OpenSSL::X509::StoreContext#cleanup is deprecated since
- reusing the underlying struct doesn't make sense. [ruby-dev:42546]
-
-Thu Dec 9 20:14:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (lvar_defined_gen, shadowing_lvar_gen, dvar_defined): no
- warnings for unused method and block arguments.
- [ruby-dev:42718] [ruby-dev:42724]
-
-Thu Dec 9 19:25:49 2010 Tanaka Akira <akr@fsij.org>
-
- * dln.c: parenthesize macro arguments.
-
-Thu Dec 9 18:51:06 2010 Tanaka Akira <akr@fsij.org>
-
- * lib/webrick/accesslog.rb (WEBrick::AccessLog#format): support
- %{remote}p for logging remote (client) port number.
- [ruby-dev:42670]
-
-Thu Dec 9 11:00:30 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * array.c (rb_ary_dup): should copy contents only. no instance
- variable, no class would be copied. it would affect methods
- #sort, #reject, #transpose, #uniq, #compact, and #shuffle.
- [ruby-core:33640]
-
- * array.c (rb_ary_reverse_m): ditto.
-
- * array.c (rb_ary_rotate_m): ditto.
-
-Wed Dec 8 21:38:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/dl/lib/dl/struct.rb: clean a warning: assigned but unused
- variable. patched by Kouhei Yanagita. [ruby-dev:42722]
-
- * ext/dl/lib/dl/import.rb: ditto.
-
-Wed Dec 8 21:36:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (shadowing_lvar_gen): fix line number. [ruby-dev:42718]
-
-Wed Dec 8 20:37:11 2010 Tanaka Akira <akr@fsij.org>
-
- * dir.c: parenthesize macro arguments.
-
-Tue Dec 7 22:37:15 2010 Masaya Tarui <tarui@ruby-lnag.org>
-
- * io.c (io_read): duplicate string if shared. [ruby-dev:42719]
-
-Tue Dec 7 22:31:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/optparse.rb (OptionParser::Officious): separate completion
- options from --help. [ruby-dev:42690]
-
- * lib/optparse.rb (OptionParser::Completion#candidate),
- (OptionParser::Switch#compsys): remove unused variables.
-
-Tue Dec 7 22:05:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * transcode.c (transcode_loop): call default handler of the given
- hash, method, proc or [] method as fallback. [ruby-dev:42692]
-
-Tue Dec 7 21:59:37 2010 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rexml/light/node.rb: remove circular require.
-
-Tue Dec 7 21:56:01 2010 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rexml/test_light.rb: really suppress a warning.
-
-Tue Dec 7 21:51:57 2010 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rexml/test_light.rb: suppress a warning.
-
-Tue Dec 7 21:14:03 2010 Tanaka Akira <akr@fsij.org>
-
- * debug.c: parenthesize macro arguments.
-
-Tue Dec 7 21:06:38 2010 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rexml/doctype.rb, test/rexml/test_doctype.rb: suppress warnings.
- [ruby-core:33305]
- Reported by Aaron Patterson. Thanks!!!
-
-Tue Dec 7 18:56:52 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/nkf/lib/kconv.rb (String#kconv): fix typo and update rdoc.
- patched by Kouhei Yanagita [ruby-dev:42696]
-
-Tue Dec 7 20:32:11 2010 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rexml/test_doctype.rb: add Accessor to test case name.
-
-Tue Dec 7 20:31:02 2010 Kouhei Sutou <kou@clear-code.com>
-
- * test/rexml/test_doctype.rb: Doctype -> DocType.
-
-Tue Dec 7 20:29:23 2010 Kouhei Sutou <kou@clear-code.com>
-
- * test/rexml/test_doctype_mixin.rb: rename to ...
- * test/rexml/test_doctype.rb: ... this to remove needless name.
-
-Tue Dec 7 17:03:16 2010 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/net/imap.rb (xlist): supported the XLIST command, which is an
- extension by Apple and Google. patch by Geoff Youngs.
- [ruby-core:33521]
-
-Tue Dec 7 08:00:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in, win32/Makefile.sub (WERRORFLAG): flag to treat
- warnings as errors.
-
- * lib/mkmf.rb (Logging.postpone): yield log file object.
-
- * lib/mkmf.rb (xsystem): add options, :werror only right now.
-
- * lib/mkmf.rb (with_werror): check as if warnings are errors.
-
- * lib/mkmf.rb (convertible_int): make declaration conflict
- warnings errors not to pass wrong type. [ruby-dev:42684]
-
- * lib/mkmf.rb (COMMON_MACROS): get rid of conflicts.
-
- * win32/Makefile.sub (WARNFLAGS): make declaration conflict
- warnings errors if possible.
-
-Sun Dec 7 21:16:10 2010 Tanaka Akira <akr@fsij.org>
-
- * cont.c: parenthesize macro arguments.
-
-Tue Dec 7 00:27:14 2010 Masaya Tarui <tarui@ruby-lnag.org>
-
- * win32/win32.c (rb_w32_read): fixed more for readline,
- and so on. [ruby-core:33511]
-
-Mon Dec 6 23:18:22 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/mkmf/base.rb (TestMkmf#setup): run quietly.
-
- * test/mkmf/test_find_executable.rb (test_find_executable): use
- configured results.
-
- * common.mk (test-build): test for build process.
-
-Mon Dec 6 22:47:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/optparse.rb (OptionParser#candidate): skip separators.
-
- * sample/optparse/opttest.rb: should not override --help.
- [ruby-dev:42690]
-
-Mon Dec 6 19:00:48 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * misc/rb_optparse.zsh: fix typos.
-
-Mon Dec 6 18:59:04 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * NEWS: add new encodings.
-
-Mon Dec 6 18:56:42 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * test/ruby/test_string.rb (TestString#test_scan): add a test for
- [ruby-core:33338] #4087.
-
-Mon Dec 6 18:55:36 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * test/uri/test_common.rb (TestCommon#test_encode_www_form): add
- tests for r30015.
-
-Mon Dec 6 10:39:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/uri/common.rb (URI::Parser#initialize_pattern):
- refix for restrict the pattern.
-
-Mon Dec 6 09:45:11 2010 Eric Hodel <drbrain@segment7.net>
-
- * ext/openssl (OpenSSL): add toplevel documentation
- * ext/openssl/ossl_ssl.c (SSLContext, SSLSocket: add additional
- documentation
- * ext/openssl: move "let rdoc know about mOSSL" comments so they don't
- show up in output
-
-Mon Dec 6 09:16:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/uri/common.rb (URI::Parser#initialize_pattern):
- workaround fix pattern of hostname for RFC 3986. [ruby-dev:42672]
-
-Mon Dec 6 09:14:38 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/mkmf.rb (check_signedness): rename unused variable prelude.
-
-Sun Dec 5 17:56:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * class.c (make_metaclass): fix probable typo. builtin type flag
- cannot be used with FL_TEST.
-
-Sun Dec 5 12:09:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/irb/init.rb (IRB.parse_opts): fix typo. [ruby-core:33574]
-
-Sun Dec 5 11:27:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ruby.c (load_file_internal): decrement for ungotten line.
- [ruby-dev:42680]
-
-Sun Dec 5 10:32:11 2010 Tanaka Akira <akr@fsij.org>
-
- * complex.c: parenthesize macro arguments.
-
-Sat Dec 4 11:39:17 2010 Eric Hodel <drbrain@segment7.net>
-
- * ext/openssl/ossl_x509ext.c (initialize): add documentation.
-
-Sat Dec 4 11:21:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * hash.c (rb_hash_update_by): new API for Hash#update.
-
-Sat Dec 4 11:18:10 2010 Tanaka Akira <akr@fsij.org>
-
- * class.c: parenthesize macro arguments.
-
-Sat Dec 4 11:07:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_core.h (rb_vm_inc_const_missing_count): missing prototype.
-
-Sat Dec 4 08:50:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/iconv/iconv.c (Init_iconv): no warnings if $VERBOSE is nil.
-
-Sat Dec 4 08:25:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_insnhelper.c (vm_call_method): revert r30064 and r30071,
- because of [ruby-core:26761]. Bug#4106 rejected.
-
-Sat Dec 4 07:46:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (String#tr_cpp): substitute * with P like as
- autoconf.
-
-Fri Dec 3 22:36:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_insnhelper.c (vm_call_method): protected methods should be
- checked against the real class.
-
-Fri Dec 3 20:23:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (convertible_int): define printf format prefix too.
-
- * lib/mkmf.rb (convertible_int): detect convertible integer type.
- port RUBY_REPLACE_INT from configure.in.
-
- * lib/mkmf.rb (check_sizeof): should return integer always.
-
-Fri Dec 3 12:54:48 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/Makefile.sub (RCFLAGS): VC10 and after only. fixed the problem
- of r30015. [ruby-core:33530]
-
-Fri Dec 3 12:41:52 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * gc.c (rb_objspace_free): With our "lazy-sweep" GC engine, it is
- possible for an object to survive until its surrounding object
- space is about to be freed. Those objects, if any, remains
- leaked for the rest of a process life. This is problematic
- because for instance a T_DATA object may have its own destructor
- to terminate something.
-
- * vm.c (ruby_vm_destruct): ruby_current_vm termination should be
- somewhere after rb_objspace_free for above reason.
-
-Fri Dec 3 12:17:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_insnhelper.c (vm_call_method): protected singleton methods should
- be visible from same real class methods. [ruby-core:33506]
-
-Fri Dec 3 07:08:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/stringio/stringio.c (strio_getline): round upto next char
- boundary. [ruby-dev:42674]
-
-Fri Dec 3 06:52:46 2010 Tanaka Akira <akr@fsij.org>
-
- * compile.c: parenthesize macro arguments.
-
-Fri Dec 3 04:08:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * encoding.c (enc_alias_internal): use st_insert2 and change return
- value to int.
-
- * encoding.c (enc_alias): follow enc_alias_internal.
-
-Fri Dec 3 01:52:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * encoding.c (enc_alias_internal): use xfree instead of free.
-
-Thu Dec 2 23:52:26 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * NEWS: entry for ruby_vm_at_exit().
-
- * eval.c (ruby_cleanup): bug fix around at_exit (1) timing was
- wrong. (2) execution order was opposite.
-
-Thu Dec 2 23:05:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/Makefile.sub (RCFLAGS): -nologo switch is only available in
- newer versions of rc.exe. fixed the problem of r30012.
-
-Thu Dec 2 21:28:07 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/json/lib/json/add/rails.rb: removed.
-
-Thu Dec 2 21:22:05 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * encoding.c (enc_alias_internal): free the copied key and
- return NULL when given key is already registered.
-
- * encoding.c (enc_alias): call set_encoding_const only when the
- alias is not registered yet.
-
-Thu Dec 2 19:58:24 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * vm.c (ruby_vm_at_exit): new API. This enables extension libs to
- hook a VM termination. Right now, because the VM we have is
- process global, most extensions do not deallocate resources and
- leave them to Operating System's reaping userland processes. But
- in a future we plan to have multiple VMs to run simultaneously in
- a single process (MVM project). At that stage we can no longer
- rely on OSes and have to manage every resources to be reclaimed
- properly. So it is. For a forward-compatibility reason this API
- is introduced now, encouraging you to be as gentle as you can for
- your resources; that is, tidy up your room.
-
- * include/ruby/vm.h: ditto.
-
- * vm_core.h (rb_vm_struct): new field.
-
- * vm.c (vm_init2): initialize above new field.
-
- * eval.c (ruby_cleanup): trigger those hooks.
-
-Thu Dec 2 17:00:44 2010 Tanaka Akira <akr@fsij.org>
-
- * bignum.c: parenthesize macro arguments.
-
-Thu Dec 2 15:31:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (rb_w32_read): more fix. [ruby-core:33513]
-
-Thu Dec 2 13:41:43 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (rb_w32_read): workaround for console reading troubles.
- fixed [ruby-core:33511]
-
-Thu Dec 2 13:10:42 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/uri/common.rb (URI.encode_www_form):
- split key-value when the value is Array like object.
-
-Thu Dec 2 10:39:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http.rb (Net::HTTP#set_form_data):
- use URI.encode_www_form for application/x-www-form-urlencoded.
-
-Thu Dec 2 10:38:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/extmk.rb: remove $makeflags.defined?, it should be $mflags.
-
-Thu Dec 2 10:19:47 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/Makefile.sub (rc): suppress meaningless message.
-
-Thu Dec 2 10:09:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/json/generator/extconf.rb: remove the lines which set -O3
- when -O option is not set.
- Note that -O3 doesn't always exist.
-
- * ext/json/parser/extconf.rb: ditto.
-
-Thu Dec 2 10:01:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/extmk.rb: define $makeflags.defined? like $mflags.
-
-Thu Dec 2 07:20:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit.rb (Test::Unit::GCStressOption): --gc-stress
- option.
-
- * lib/test/unit.rb (Test::Unit::Mini#_run_suites): show the result
- even when interrupted on the way.
-
-Thu Dec 2 07:08:38 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/io/console/console.c (setattr): should retry on EINTR.
- [ruby-dev:42666]
-
-Thu Dec 2 02:30:50 2010 Eric Hodel <drbrain@segment7.net>
-
- * lib/net/http.rb: fixed positional wording to match revised order.
-
-Thu Dec 2 01:24:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/json/lib/json/common.rb: don't use iconv on 1.9.
- patched by Shota Fukumori [ruby-core:33164]
-
-Thu Dec 2 01:02:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/json: Update github/flori/json from 1.4.2+ to
- e22b2f2bdfe6a9b0. this fixes some bugs.
-
-Thu Dec 2 00:05:44 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http.rb: improve rdoc.
- This change the order of chapter because such overview should
- begin with simple examples.
- patched by Eric Hodel [ruby-core:33469]
-
-Wed Dec 1 22:01:49 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * numeric.c (Init_Numeric): fixed a potential bug when using bccwin32
- ruby with Microsoft's dll, though we already gave up of supporting
- bccwin32. [ruby-core:33503]
-
-Wed Dec 1 21:43:21 2010 Tanaka Akira <akr@fsij.org>
-
- * array.c: parenthesize macro arguments.
-
-Wed Dec 1 21:41:57 2010 Tanaka Akira <akr@fsij.org>
-
- * test/socket/test_addrinfo.rb: extract Errno::EADDRINUSE as a method.
-
- * test/socket/test_socket.rb: ditto.
-
-Wed Dec 1 15:08:32 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/openssl/test_ssl.rb (test_not_started_session): non socket
- argument of SSLSocket.new is not supported on Windows.
-
-Wed Dec 1 14:36:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (rb_memhash): zero-filled strings should return
- different values. [ruby-core:33500]
-
-Wed Dec 1 14:27:49 2010 Ryan Davis <ryand-ruby@zenspider.com>
-
- * lib/minitest/*.rb: Imported minitest 2.0.0 r5952.
- * test/minitest/*.rb: ditto.
- * lib/test/unit.rb: Compatibility fix for minitest changes.
-
-Wed Dec 1 10:16:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (rb_str_inspect): fix typo (not 0xFD but 0xFE).
-
-Wed Dec 1 09:28:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * addr2line.c: Follow .gnu_debuglink section.
- A user of distribution provided ruby will see line
- info if s/he has a debug package for ruby.
- patched by Shinichiro Hamaji [ruby-dev:42655]
-
-Wed Dec 1 01:29:15 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (rb_str_inspect): inspect as a dummy encoding string
- when a UTF-16/32 (not BE/LE) string does not have a BOM.
- Unicode and some RFCs say that a string labeled as UTF-16/32
- doesn't have a BOM, it should be considered big endian.
- But many Windows programs generates little endian UTF-16
- strings without a BOM. So String#inspect treats a string
- labeled UTF-16/32 without a BOM as a dummy encoding string.
- patched by Martin Duerst. [ruby-core:33461]
-
-Tue Nov 30 17:04:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * addr2line.c (parse_debug_line_cu): ignore DW_LNE_set_discriminator.
- To ignore, it needs to read a single unsigned LEB128 integer.
-
-Tue Nov 30 16:29:19 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * vm_dump.c: undef HAVE_BACKTRACE when the OS is FreeBSD (in other
- words backtrace() is libexecinfo) and it is optimized.
- This temporary hack may be also applied to other libexecinfo
- environments.
-
-Tue Nov 30 16:23:23 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http.rb: improve rdoc.
- patched by Eric Hodel ref #4100
-
-Tue Nov 30 12:23:52 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (rb_w32_read): read only 1 byte at once on console.
- workaround of Windows bug. see [ruby-core:33460].
- this is not the final solution.
-
-Tue Nov 30 11:39:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http.rb: improve rdoc.
- patched by mathew murphy [ruby-core:33472] ref #4100
-
-Tue Nov 30 05:03:44 2010 Eric Hodel <drbrain@segment7.net>
-
- * lib/uri/common.rb (encode_www_form, encode_www_form_component):
- Improve English in documentation.
-
- * ext/openssl/ossl_ssl.c (ssl_version=, ciphers=): Document
- #ssl_version=, add documentation for #ciphers=.
-
-Mon Nov 29 22:55:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/uri/common.rb (URI::WFKV_): get rid of backtrack explosion
- by nested repeat operators. [ruby-core:33464]
-
-Mon Nov 29 22:53:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/Makefile.sub (scriptbin.mk): fix generated rules.
-
- * win32/win32.c (rb_w32_write_console): fix argument type.
-
-Mon Nov 29 21:12:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * misc/ruby-mode.el (ruby-forward-sexp): stop after literal hash
- key labels.
-
- * misc/ruby-mode.el (ruby-font-lock-keywords): highlight literal
- hash key labels as symbols.
-
-Mon Nov 29 18:31:31 2010 Martin Duerst <duerst@it.aoyama.ac.jp>
-
- * test/ruby/test_transcode.rb (test_unicode_public_review_issue_121):
- - Removed commented-out options that are no longer under discussion.
- - Added two more tests for forthcomming clarifications.
-
-Mon Nov 29 14:31:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (rb_w32_isatty): use GetConsoleMode() to determine the
- fd is console or not, just like rb_w32_write_console(). [experimental]
-
-Mon Nov 29 14:19:40 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * include/ruby/win32.h (rb_w32_write_console): wrong prototype.
-
-Mon Nov 29 14:10:55 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (rb_w32_write_console): fixed indentation.
-
-Sun Nov 28 22:13:39 2010 Koichi Sasada <ko1@atdot.net>
-
- * thread_pthread.c (NATIVE_MUTEX_LOCK_DEBUG): move and use it.
-
- * ChangeLog: fix my timezone.
-
-Mon Nov 28 21:58:58 2010 Koichi Sasada <ko1@atdot.net>
-
- * thread_pthread.c: remove pthread_atfork().
-
-Mon Nov 28 21:54:22 2010 Koichi Sasada <ko1@atdot.net>
-
- * thread_pthread.c (native_cond_*): Check return code.
- (Some OSes except Linux return error code).
-
-Sun Nov 28 21:46:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread_pthread.c (thread_start_func_1): initialize native thread
- data immediately before starting.
-
-Sun Nov 28 14:56:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (struct argf): make lineno long, and reorder members.
-
-Sun Nov 28 14:55:42 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread_win32.c (gvl_release, gvl_init): suppress warnings.
-
-Sun Nov 28 14:48:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread_pthread.c (gvl_release, gvl_init): suppress warnings.
-
- * vm_core.h (rb_vm_gvl_destroy): add prototype.
-
-Sun Nov 28 14:46:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread_pthread.c (gvl_reinit): register atfork handler only in
- the parent process, to get rid of dead lock.
-
-Sun Nov 28 12:23:57 2010 Koichi Sasada <ko1@atdot.net>
-
- * thread.c, vm_core.h: make gvl_acquire/release/init/destruct
- APIs to modularize GVL implementation.
-
- * thread_pthread.c, thread_pthread.h: Two GVL implementations.
- (1) Simple locking GVL which is same as existing GVL.
- (2) Wake-up queued threads. The wake-up order is simple FIFO.
- (We can make several queues to support exact priorities, however
- this causes some issues such as priority inversion and so on.)
- This impl. prevents spin-loop (*1) caused on SMP environments.
- *1: Only one Ruby thread acquires GVL again and again.
- Bug #2359 [ruby-core:26694]
-
- * thread_win32.c, thread_win32.h: Using simple lock
- not by CRITICAL_SECTION but by Mutex.
- Bug #3890 [ruby-dev:42315]
-
- * vm.c (ruby_vm_destruct): ditto.
-
-Sun Nov 28 04:40:00 2010 Luis Lavena <luislavena@gmail.com>
-
- * io.c (io_fwrite): use rb_w32_write_console under Windows.
-
- * win32/win32.c (rb_w32_write_console): added to write to write
- Unicode using WriteConsoleW for stdout/stderr. [ruby-core:33166]
-
-Sun Nov 28 03:58:47 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http.rb: improve rdoc.
- patched by Mike Perham [ruby-core:33433]
-
-Sat Nov 27 19:12:10 2010 Tanaka Akira <akr@fsij.org>
-
- * time.c: parenthesize macro arguments.
-
-Sat Nov 27 18:08:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * time.c (leap_year_v_p): fixed typo. [ruby-dev:42631]
-
-Sat Nov 27 17:57:08 2010 Tanaka Akira <akr@fsij.org>
-
- * resolv.rb (Resolv::DNS): use the same DNS server when retry using
- TCP. reported by Julian Mehnle. [ruby-core:32970]
-
-Sat Nov 27 15:45:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_dump.c (rb_vm_bugreport): see CrashReport log on Mac OS X.
-
- * configure.in: link addr2line only for ELF.
-
-Sat Nov 27 13:58:55 2010 Shugo Maeda <shugo@ruby-lang.org>
-
- * lib/optparse.rb (OptionParser#candidate): : was missing. Thanks,
- Shota Fukumori. [ruby-dev:42634]
-
-Sat Nov 27 12:07:05 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * man/ruby.1: Ruby man page from Arthur Gunn in [ruby-core:33412]
-
-Sat Nov 27 11:29:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/optparse.rb (OptionParser#candidate): get rid of 1.9 syntax
- so that BASERUBY can be 1.8.
-
-Sat Nov 27 08:16:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * addr2line.c (rb_dump_backtrace_with_lines): should close fd on
- edge case.
-
-Fri Nov 26 13:33:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * addr2line.c: apply a patch from shinichiro.h.
-
-Fri Nov 26 12:21:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * addr2line.c: added to show source filename and line number of
- functions in backtrace. [ruby-dev:42625]
- a patch from shinichiro.h <shinichiro.hamaji AT gmail.com>
-
- * addr2line.h: ditto.
-
- * common.mk: add addr2line.$(OBJEXT).
-
- * configure.in: check dl_iterate_phdr.
-
- * vm_dump.c (rb_vm_bugreport): use rb_dump_backtrace_with_lines in
- addr2line.c when the binary is ELF.
-
-Fri Nov 26 12:12:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * regcomp.c (setup_tree): restart setup_tree() for a node whose
- AnchorNode's type is ANCHOR_PREC_BEHIND or ANCHOR_PREC_BEHIND_NOT
- and divide_look_behind_alternatives() divided it to NT_ALT or
- NT_LIST. [ruby-core:33370]
-
-Fri Nov 26 11:40:11 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * vm_dump.c (dump_thread): get only required rights of the target
- thread because THREAD_ALL_ACCESS causes an access error on XP.
- reported by Masaya TARUI via IRC.
-
-Fri Nov 26 11:09:07 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * vm_dump.c (dump_thread): show the displacement from the beginning
- of the symbol.
-
-Fri Nov 26 10:48:23 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * vm_dump.c (dump_thread): follow the output of glibc.
- see [ruby-dev:42627]
-
-Fri Nov 26 09:48:45 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * re.c (rb_reg_initialize_str): should succeed the taint status from
- the origin. [ruby-core:33338]
-
-Fri Nov 26 09:32:37 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * vm_dump.c (dump_thread): seems to be necessary the 3rd argument of
- SymGetLineFromAddr64(), even though MSDN says it can be zero.
-
-Fri Nov 26 09:03:38 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * regcomp.c (onig_is_prelude): added to check whether ruby is still
- in prelude (or other boot processes) or not.
-
- * regcomp.c (optimize_node_left): use onig_is_prelude for printing.
-
- * regcomp.c (set_optimize_info_from_tree): ditto.
-
- * regcomp.c (onig_compile): ditto.
-
- * regcomp.c (print_compiled_byte_code_list): print its address.
-
- * regcomp.c (print_indent_tree): print its contents tree of
- ANCHOR_PREC_READ(_NOT) and ANCHOR_PREC_BEHIND(_NOT).
-
-Thu Nov 25 23:10:49 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * regcomp.c (print_distance_range): use PRIuSIZE.
-
- * regcomp.c (print_optimize_info): use %ld because the type of
- calculated value of integers is long.
-
- * regexec.c (onig_print_compiled_byte_code): add prototype.
-
- * regexec.c (match_at): add 2nd argument.
-
-Thu Nov 25 10:29:55 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/dl/callback/mkcallback.rb (gencallback): shouldn't assume that
- VALUE is the same size with long.
-
-Thu Nov 25 10:03:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/win32ole/test_err_in_callback.rb (teardown): remove tmp file
- only when it exists.
-
-Thu Nov 25 01:38:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * enc/trans/big5-hkscs-tbl.rb: Update table as HKSCS-2008.
- patched by oCameLo oTnTh [ruby-core:33256]
-
- * enc/big5.c: add alias Big5-HKSCS:2008 to Big5-HKSCS.
-
-Wed Nov 24 15:18:07 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * vsnprintf (BSD_vfprintf): use QUADINT macro only when _HAVE_SANE_QUAD_
- macro is defined.
-
-Wed Nov 24 12:47:16 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * vsnprintf (BSD_vfprintf): added VC++ compatible size specifications
- (I, I32, I64).
-
-Wed Nov 24 11:19:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (rb_str_inspect): treat UTF-16 and UTF-32 as BE or LE.
-
-Wed Nov 24 06:35:32 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * enc/trans/utf_16_32.trans: add the UTF-32 converter.
-
-Wed Nov 24 05:40:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
-Wed Nov 24 06:13:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/win32.c (filecp, wstr_to_mbstr, mbstr_to_wstr):
- refactored.
-
-Wed Nov 24 05:40:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * enc/trans/utf_16_32.trans: add a converter from UTF-8 to UTF-16.
-
-Wed Nov 24 03:21:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * enc/trans/utf_16_32.trans: raise error on unpaired upper
- surrogates.
-
-Wed Nov 24 01:40:23 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * enc/utf_16_32.h: add UTF-16 and UTF-32 as a dummy encoding.
-
- * enc/trans/utf_16_32.trans: add a converter from UTF-16 to UTF-8.
-
-Tue Nov 23 21:59:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/win32.c (wlink, rb_w32_getppid): use typedef instead of
- repeating complicated function prototypes.
-
-Tue Nov 23 18:54:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm.c (rb_thread_mark): should mark self in control
- frames. [ruby-core:33289]
-
-Tue Nov 23 07:57:31 2010 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date/delta/parser.{ry,rb}: fixed a bug of token scanner.
-
-Tue Nov 23 07:29:24 2010 Tadayoshi Funaba <tadf@dotrb.org>
-
- * complex.c, rational.c ({nucomp,nurat}_expt): added a check.
-
-Tue Nov 23 07:27:27 2010 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date.rb (daynum): should be private.
-
-Tue Nov 23 07:22:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ChangeLog (change-log-indent-text): hanging indent.
-
-Tue Nov 23 06:30:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (SITE_DIR, VENDOR_DIR),
- version.c (ruby_initial_load_paths): exclude directories that
- are configured without them from $LOAD_PATH. [ruby-core:33267]
-
- * configure.in (rubylibprefix): No ruby, No libprefix.
-
-Tue Nov 23 01:05:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * vsnprintf.c (BSD_vfprintf): don't output floating point
- when the precision is 0. [ruby-dev:42615]
-
-Mon Nov 22 21:30:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (rb_str_inspect): fix for ascii-compatible external
- encoding and different encoding string. [ruby-core:33283]
-
-Mon Nov 22 18:45:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (create_makefile): should not duplicate rules.
- bug fix of r29842.
-
-Mon Nov 22 18:04:40 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * enc/big5.c: split CP950 from Big5.
-
- * enc/big5.c: split CP951 from Big5-HKSCS.
-
- * enc/trans/big5.trans: import conversion table of Big5, Big5-HKSCS,
- CP950, and CP951 from ICU. they need fallback conversions.
- ref [ruby-core:33256]
- http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/
-
- * tool/transcode-tblgen.rb (import_ucm): add to import ucm files.
-
-Mon Nov 22 18:33:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (rb_str_inspect): append for each chars instead of bulk
- copy if encoding conversion is needed. [ruby-core:33283]
-
-Mon Nov 22 14:22:45 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * time.c (time_zone): use rb_locale_str_new_cstr to set encoding
- as locale and convert its content to internal encoding.
- [ruby-core:33278]
-
-Mon Nov 22 11:58:11 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (rb_str_concat): set ENC_CODERANGE_VALID when the
- receiver is 7BIT and the argument is non ASCII.
-
-Mon Nov 22 01:48:58 2010 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date.rb: some improvements for performance.
-
-Sat Nov 20 07:45:50 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * lib/mkmf.rb: adding compilation support for ObjC/ObjC++ extensions.
- Thanks Scott Gonyea! [ruby-core:33260]
-
-Sat Nov 20 01:57:55 2010 Akio Tajima <artonx@yahoo.co.jp>
-
- * common.mk: add dependency(insns.inc) to compile.obj
-
-Fri Nov 19 23:05:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/Makefile.sub (insns_rules.mk): remove extra backslash.
-
- * cygwin/GNUmakefile.in, win32/Makefile.sub (clean): rc files are
- made at compile time, so should be removed by clean.
-
-Fri Nov 19 22:09:46 2010 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rexml/test_core.rb
- (Tester#test_pretty_format_long_text_finite): skip a test that
- uses long string on small memory system. [ruby-dev:42599]
-
-Fri Nov 19 21:07:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/optparse.rb: shell completion support for zsh. based on
- <http://d.hatena.ne.jp/rubikitch/20071002/zshcomplete>
-
- * lib/optparse.rb: shell completion support for bash.
-
-Fri Nov 19 00:00:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * cygwin/GNUmakefile.in (SCRIPTPROGRAMS): no needs on cygwin.
-
- * win32/Makefile.sub (scriptbin): create script binaries.
-
-Thu Nov 18 23:21:23 2010 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rexml/formatters/pretty.rb (REXML::Formatters::Pretty#wrap):
- REXML::Formatters::Pretty#wrap used a recursive method call to
- format text. This switches it to use an iterative approach.
- [ruby-core:33245]
- Patch by Jeremy Evans. Thanks!!!
-
- * test/rexml/test_core.rb: add a test for it.
-
-Thu Nov 18 22:58:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/io.h (rb_io_buffer_t): extract from rb_io_t.
-
-Thu Nov 18 07:37:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * Makefile.in (reconfig): force reconfigure with previous options.
-
- * common.mk (showconfig): show configure flags, like as
- `config.status --config' generated by recent autoconf.
-
-Thu Nov 18 07:16:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * missing/langinfo.c (strncasecmp): get rid of redefinition.
-
-Thu Nov 18 00:02:17 2010 James Edward Gray II <jeg2@ruby-lang.org>
-
- * lib/csv.rb: Upgrading output encoding with ASCII content
- as needed. [ruby-core:33229]
-
-Wed Nov 17 23:19:21 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/configure.bat: remove quotes from arguments to be quoted.
-
- * lib/mkmf.rb (create_makefile): use forward slashes in messages.
-
- * lib/mkmf.rb (create_makefile): make extension libraries messages
- brief.
-
- * win32/Makefile.sub (MAKEDIRS): should not include silent flag.
-
- * common.mk (ext/ripper/ripper.c, ext/json/parser/parser.c): pass
- Q and ECHO. [ruby-core:33226]
-
-Wed Nov 17 16:09:52 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * test/test_tracer.rb: new test case.
- minimal regression test for r29280.
-
-Wed Nov 17 16:04:23 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * test/ruby/envutil.rb (Test::Unit::Assersions#assert_warn):
- new assertion to assert that a particular warning message is
- displayed.
- forward port from branches/ruby_1_9_2@29795.
-
-Wed Nov 17 15:16:48 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * regint.h (OnigOpInfoType): constify name.
-
- * regcomp.c (op2name): constify return value.
-
- * regcomp.c (onig_print_compiled_byte_code): use PRIuPTR and
- uintptr_t to clean warnings.
-
- * regcomp.c (print_indent_tree): use PRIxPTR and intptr_t.
-
- * regexec.c (match_at): use PRIdPTR and intptr_t.
-
-Wed Nov 17 09:49:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * enc/shift_jis.c (property_name_to_ctype): fix memory leak.
-
- * enc/euc_jp.c (property_name_to_ctype): ditto.
-
-Wed Nov 17 08:54:04 2010 James Edward Gray II <jeg2@ruby-lang.org>
-
- * lib/csv.rb: Upgrading output encoding as needed. [ruby-core:33135]
-
-Tue Nov 16 22:30:39 2010 Yusuke Endoh <mame@tsg.ne.jp>
-
- * vm_insnhelper.c (vm_throw): remove fear of undefined behavior :-)
- Coverity Scan found this bug.
-
-Tue Nov 16 09:33:00 2010 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/lib/bigdecimal/util.rb (to_digits): avoid unused
- variables warning, reported by Aaron Patterson.
-
-Tue Nov 16 06:39:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * pack.c (PACK_ITEM_ADJUST): return nil not result array and yield
- values if block is given. [ruby-core:33193]
-
-Tue Nov 16 00:21:20 2010 Yusuke Endoh <mame@tsg.ne.jp>
-
- * regparse.c (and_cclass, or_cclass): fix memory leak. Coverity Scan
- found this bug. [ruby-dev:42579]
-
-Tue Nov 16 00:07:32 2010 Yusuke Endoh <mame@tsg.ne.jp>
-
- * gc.c (assign_heap_slot): fix fear of memory leak and memory
- violation. Coverity Scan found this bug.
-
-Mon Nov 15 23:54:45 2010 Yusuke Endoh <mame@tsg.ne.jp>
-
- * eval_intern.h (CHECK_STACK_OVERFLOW): it was not intended to add
- size_t to a pointer typed VALUE*. Coverity Scan found this defect.
-
-Mon Nov 15 23:41:21 2010 Yusuke Endoh <mame@tsg.ne.jp>
-
- * compile.c (iseq_set_exception_local_table, iseq_set_local_table,
- rb_iseq_build_from_ary): fix type inconsistency (which is benign
- because sizeof(ID) == sizeof(ID*), though). Coverity Scan found
- these bugs.
-
-Mon Nov 15 22:47:27 2010 Yusuke Endoh <mame@tsg.ne.jp>
-
- * vm_eval.c (rb_funcall): ensure va_end after va_init_list. Coverity
- Scan found this bug.
-
-Mon Nov 15 08:36:12 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * lib/racc/parser.rb (do_parse, yyparse): using class eval to define
- method and avoid __send__.
-
-Mon Nov 15 06:43:48 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * etc/openssl/ossl_ssl.c (ossl_ssl_get_cert): raise exception if
- pointer is invalid. Thanks Ippei Obayashi! [ruby-dev:42573]
-
-Sun Nov 14 17:57:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * enc/Makefile.in (distclean): should not remove sources which are
- distributed in tarball.
-
-Sun Nov 14 16:48:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (parser_set_token_info): turn on/off with directives.
- [ruby-core:25442]
-
-Sun Nov 14 12:05:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (argf_readlines): forward to current_file for arguments
- check. http://twitter.com/nagachika/status/3634254856589312
-
-Sun Nov 14 08:48:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/setup.mak (-basic-vars-, -runtime-): suppress trailing
- space and compiler command line.
-
-Sun Nov 14 04:22:32 2010 Alexander Zavorine <alexandre.zavorine@nokia.com>
-
- * symbian/setup (config.h): Added HAVE_LABS and HAVE_LLABS to config.h.
-
- * symbian/configure.bat: Changed packaging version in line with API
- style 3 versioning.
-
-Sat Nov 13 16:37:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (showflags, help): emit messages at once.
-
- * win32/Makefile.sub (MSG, EOM): remove surrounding quotes by %~I.
-
-Sat Nov 13 01:31:30 2010 Akio Tajima <artonx@yahoo.co.jp>
-
- * win32/Makefile.sub: reorder variable End Of Message (don't display it)
-
-Fri Nov 12 20:52:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (showflags, help): use caret to quote leading spaces on
- Windows.
-
- * Makefile.in, common.mk, cygwin/GNUmakefile.in, enc/depend,
- ext/ripper/depend, lib/mkmf.rb, win32/Makefile.sub: caddle up.
-
-Fri Nov 12 16:35:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * configure.in: support C level backtrace information on FreeBSD.
- When devel/libexecinfo is installed on FreeBSD, now ruby
- can show C level backtrace information.
- http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/libexecinfo/
-
-Fri Nov 12 09:58:30 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/setup.mak: use findstr.exe instead of find.exe, because all
- target build platforms should have findstr.exe, and, find.exe often
- means another command such as cygwin's.
-
-Fri Nov 12 00:30:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/Makefile.sub (config.h): need PRI_LL_PREFIX.
-
-Thu Nov 11 23:38:32 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in: ANSI C-conforming const and volatile are mandatory
-
- * configure.in (AC_C_CONST, AC_C_INLINE, AC_C_VOLATILE): check
- before used in other checks.
-
- * configure.in (RUBY_CHECK_PRINTF_PREFIX): should not break from
- RUBY_WERROR_FLAG, so that ac_c_werror_flag gets restored.
-
-Thu Nov 11 23:04:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/iconv/iconv.c (warn_deprecated): show caller position.
-
-Thu Nov 11 23:03:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (argf_close): untie tied io before closing.
-
- * io.c (argf_write): add ARGF.write and so on.
-
- * io.c (argf_read_nonblock): add ARGF.read_nonblock.
-
-Thu Nov 11 21:49:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/rdoc/stats.rb (RDoc#print): get rid of NaN.
-
-Thu Nov 11 21:47:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (SHOWFLAGS): show compile flags.
-
- * common.mk: hide long command lines by default. verbose-mode is
- turned on by V=1 as before.
- http://jarp.does.notwork.org/diary/200605b.html#200605121
-
-Thu Nov 11 21:32:09 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (try_func): accept variable address.
-
- * ext/win32ole/extconf.rb: libuuid is needed on cygwin.
-
-Thu Nov 11 21:24:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (file_expand_path): use cygwin_conv_path on cygwin 1.7 or
- later.
-
- * ruby.c (push_include_cygwin): ditto.
-
-Thu Nov 11 20:49:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/ruby.h (PRI_LL_PREFIX): format type specifier for
- LONG_LONG may vary on platforms.
-
-Thu Nov 11 20:45:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (SYMBOL_PREFIX): separate from EXPORT_PREFIX.
-
- * win32/mkexports.rb (Exports#each_export): use SYMBOL_PREFIX.
-
-Wed Nov 10 07:20:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * cygwin/GNUmakefile.in (scriptbin): make executable file from
- scripts with stub.
-
- * ruby.c (load_file_internal): assume xflag for exe file as well
- as no-shebang file.
-
- * tool/rbinstall.rb: install script programs.
-
- * win32/mkexports.rb (Exports#initialize): alias ruby_sysinit for
- stub.
-
- * win32/stub.c: stub for scripts. [EXPERIMENTAL]
-
-Tue Nov 9 21:57:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dln.c (init_funcname): allocate and build initialization
- funciton name at once.
-
-Tue Nov 9 21:14:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (AC_FUNC_GETPGRP, AC_FUNC_SETPGRP): no need when
- not used.
-
- * configure.in (EXPORT_PREFIX): check generic prefix.
-
-Tue Nov 9 13:24:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * regenc.c (onigenc_minimum_property_name_to_ctype):
- \p{...} should be case insensitive. [ruby-core:33000]
-
- * regenc.c (onigenc_property_list_add_property):
- ditto.
-
- * enc/euc_jp.c (init_property_list, property_name_to_ctype):
- to lowercase property names.
-
- * enc/shift_jis.c (init_property_list, property_name_to_ctype):
- ditto.
-
-Tue Nov 9 13:29:36 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (overlapped_socket_io): get rid of a warning of 64bit
- mingw.
-
-Tue Nov 9 10:44:19 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * util.c (ruby_strtod): this code uses FPU's rounding system.
- But x86's FPU calculates double precision floating-point
- numbers in 80bit precision, so it fails to round the value.
- So ensure the value is assigned a variable. [ruby-dev:42551]
- see also [ruby-math:00802]
- http://www.shudo.net/java-grandprix99/strictfp/
-
-Tue Nov 9 07:30:15 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * error.c (rb_syserr_new): new function to make SystemCallError
- instance without errno. [EXPERIMENTAL]
-
- * error.c (rb_syserr_fail, rb_mod_syserr_fail): ditto.
-
-Tue Nov 9 05:54:57 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * lib/*.rb: Remove unused variable warnings.
- Patch by Run Paint [ruby-core:30991]
-
- * lib/rubygems/*, lib/rdoc/*.rb, lib/rake/*.rb: ditto
-
-Mon Nov 8 18:26:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * util.c (ruby_hdtoa): fix type cast and bufsize.
-
-Mon Nov 8 15:40:56 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * vsnprintf.c (BSD_vfprintf): fix precision specifier doesn't
- work well on %f. [ruby-dev:42552]
-
-Mon Nov 8 14:41:40 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (get_wsa_extension_function): typos.
-
-Mon Nov 8 13:41:33 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * tool/enc-unicode.rb,
- enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
- enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
- Add Age property to regexp. [ruby-core:33019]
- patched by Ammar Ali, tested by Run Paint Run Run
-
-Mon Nov 8 12:16:39 2010 Ben Walton <bwalton@artsci.utoronto.ca>
-
- * configure.in: support -h for solaris linker when gcc not used
-
-Mon Nov 8 11:47:39 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (finish_overlapped_socket): refactoring.
-
-Mon Nov 8 11:02:21 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (get_proc_address): refactoring.
-
- * win32/win32.c (get_wsa_exetinsion_function): refactoring.
-
-Mon Nov 8 09:45:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * enc/trans/gbk-tbl.rb: Add euro sign. [ruby-core:33094]
- CP936, which is de facto definition of GBK, has it.
- http://msdn.microsoft.com/en-us/goglobal/cc305153.aspx
-
-Mon Nov 8 07:26:20 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in: check only the first symbol to get rid of
- duplication. [ruby-core:33084] #4031
-
-Sun Nov 7 10:13:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (NM): check on all platforms. #4031
-
-Sun Nov 7 06:16:33 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * test/openssl/test_ocsp.rb: adding test for r29699. Thanks Elise
- Huard! [ruby-core:32460]
-
-Sat Nov 6 07:33:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (rb_cv_export_prefix): check for prefixed
- underscore of exported symbols
-
- * tool/rbinstall.rb (bin-comm): prepend prolog shell script if
- necessary.
-
- * configure.in (LIBRUBY_RELATIVE): use rpath token expansion.
-
-Sat Nov 6 07:24:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * template/ruby.pc.in (arch, sitearch): reordered.
-
- * configure.in: keep failed file.
-
-Sat Nov 6 07:03:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * process.c (rb_fork_err): save errinfo before fdopen.
-
-Sat Nov 6 00:43:58 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/openssl/ossl_ocsp.c (ossl_ocspcid_initialize): an optional
- parameter may be used to specify the OpenSSL::OCSP::CertificateId on
- initialization. Thanks Elise Huard! [ruby-core:32460]
-
-Fri Nov 5 12:23:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/test_{process,system}.rb (test_fallback_to_sh):
- meaningless and wrong tests where /bin/sh does not exist.
-
- * process.c (proc_spawn_v): should spawn, not exec.
-
-Fri Nov 5 01:21:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * process.c (proc_exec_v, proc_spawn_v): try to execute with sh if
- no shebang. [ruby-core:32745] [EXPERIMENTAL]
-
-Fri Nov 5 00:39:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (rb_io_readlines, rb_io_each_line): limit must not be zero.
- a patch from Tomoyuki Chikanaga at [ruby-dev:42538]. #4024
-
-Fri Nov 5 00:14:15 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/fiddle/extconf.rb: fixing ffi library location on windows.
- Thanks Usa! [ruby-core:32930]
-
-Thu Nov 4 20:04:44 2010 Koichi Sasada <ko1@atdot.net>
-
- * gc.c (rb_newobj): force garbage_collect() if GC.stress == true.
-
-Thu Nov 4 19:48:22 2010 Koichi Sasada <ko1@atdot.net>
-
- * ChangeLog: missed to write a last ChangeLog.
-
- * gc.c (gc_finalize_deferred): removed.
-
- * gc.c (rb_gc_finalize_deferred): Do not invoke a free_unused_heaps().
-
-Thu Nov 4 19:45:27 2010 Koichi Sasada <ko1@atdot.net>
-
- * gc.c (run_final): do not need argument obj.
-
-Thu Nov 4 19:26:10 2010 Koichi Sasada <ko1@atdot.net>
-
- * gc.c (before_gc_sweep): fix commit miss.
-
-Thu Nov 4 19:20:46 2010 Koichi Sasada <ko1@atdot.net>
-
- * gc.c (after_gc_sweep, before_gc_sweep):
- invoke rb_sweep_method_entry() as soon as possible.
-
-Thu Nov 4 19:13:58 2010 Koichi Sasada <ko1@atdot.net>
-
- * gc.c (after_gc_sweep, slot_sweep): finalizers should be invoked
- as soon as possible.
-
-Thu Nov 4 10:30:40 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * configure.in (--with-valgrind): Now this option is default on.
- You can still explicitly disable this feature by specifying
- --without-valgrind.
-
-Thu Nov 4 02:06:16 2010 Yusuke Endoh <mame@tsg.ne.jp>
-
- * cont.c (fiber_t_alloc): raise an error when fiber is going to be
- initialized twice. [ruby-dev:42524]
-
-Thu Nov 4 02:04:25 2010 Yusuke Endoh <mame@tsg.ne.jp>
-
- * cont.c (rb_fiber_resume): raise an "double resume" error when root
- fiber is going to be resumed. [ruby-dev:42523]
-
-Wed Nov 3 14:17:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/ostruct.rb (OpenStruct#delete_field): also undefine
- accessor methods. [ruby-core:33010]
-
-Wed Nov 3 14:13:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (rb_enc_cr_str_buf_cat): concatenation of valid
- encoding string and invalid encoding string should result
- invalid encoding. [ruby-core:33027]
-
-Wed Nov 3 08:58:59 2010 Koichi Sasada <ko1@atdot.net>
-
- * gc.c, vm.c, vm_core.h: remove USE_VALUE_CACHE option.
-
-Wed Nov 3 07:47:25 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * lib/irb/ruby-lex.rb (RubyLex#identify_string): parse multiple
- regex options. a patch from Heesob Park in [ruby-core:32988].
-
-Wed Nov 3 07:33:57 2010 Tanaka Akira <akr@fsij.org>
-
- * vm_method.c (rb_clear_cache_by_class): just return if the class has
- no method. reported by Eric Wong. [ruby-core:32689]
-
-Tue Nov 2 22:50:25 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/visitor.rb (initialize): push accessor
- methods to subclass that actually uses them.
-
-Tue Nov 2 22:47:08 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/psych/lib/psych/visitors/visitor.rb (accept): switch to
- a dispatch cache rather than case / when statement.
-
-Tue Nov 2 21:46:52 2010 Kouhei Sutou <kou@cozmixng.org>
-
- * NEWS: fix a typo.
-
-Tue Nov 2 20:10:32 2010 Tajima Akio <artonx@yahoo.co.jp>
-
- * test/rake/test_tasks.rb: clear env var which is used by the test.
- [ruby-dev:42508]
-
-Tue Nov 2 00:25:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/socket/extconf.rb: win64 is just same with win32 about socket.
- notice: but wince is not same.
-
-Mon Nov 1 21:25:57 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * main.c: <stdlib.h> is needed, to introduce the getenv(3)
- prototype declaration. Without it a C compiler shall infer
- the getenv type as "int getenv(...);", but this is totally
- wrong, especially when your machine's sizeof(int) and
- sizeof(char*) differs. On such environment a return value
- of getenv(3), which is in fact a char*, might first casted
- into a int (loses data here), and then casted back to char*
- by automatic integral promotion to fit to the prototype of
- ruby_set_debug_option().
-
-Sun Oct 31 23:27:09 2010 Koichi Sasada <ko1@atdot.net>
-
- * gc.c (finalizer_table, objspace->final.table):
- Create finalizer_table at Init_heap().
- Remove all null checks of finalizer_table.
-
- * gc.c (mark_tbl): skip if no table entries.
-
- * gc.c (slot_swee): remove useless need_call_final check.
-
-Sun Oct 31 22:32:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * gc.c (rb_objspace_free): finalizers should be called separately
- from freeing objspace. [ruby-dev:42479]
-
-Sun Oct 31 22:24:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * eval.c (ruby_cleanup): free current VM and its objspace even
- when exiting by SystemExit.
-
-Sun Oct 31 22:10:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * compile.c (new_child_iseq): adjust argument types.
-
- * iseq.c (prepare_iseq_build, rb_iseq_new),
- (rb_iseq_new_with_bopt_and_opt, rb_iseq_new_with_opt),
- (rb_iseq_new_with_bopt): ditto.
-
- * compile.c (iseq_set_exception_table): suppress warnings.
-
- * insns.def (putspecialobject, defined): ditto.
-
- * iseq.c (iseq_load): ditto.
-
-Sun Oct 31 09:30:51 2010 Koichi Sasada <ko1@atdot.net>
-
- * vm_core.h: some refactoring.
- - move decl. of rb_compile_option_struct to iseq.h.
- - define enum iseq_type.
- - define enum vm_special_object_type.
-
- * compile.c: some refactoring.
- - apply above changes.
- - (struct iseq_link_element): change value of type.
- - remove unused decl.
- - fix comment.
- - rename iseq_build_body and iseq_build_exception to
- iseq_build_from_ary_body and iseq_build_from_ary_exception.
-
- * iseq.h: define enum catch_type and enum defined_type.
-
- * insns.def: apply above changes.
-
- * iseq.c: define ISEQ_MAJOR_VERSION and ISEQ_MINOR_VERSION.
-
-Sat Oct 30 23:38:59 2010 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rexml/encoding.rb: untabify.
-
-Sat Oct 30 21:06:37 2010 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rexml/encoding.rb: use Ruby native encoding mechanism.
- [ruby-dev:42464]
- * lib/rexml/encodings/: remove.
-
- * lib/rexml/document.rb, lib/rexml/formatters/default.rb,
- lib/rexml/output.rb, lib/rexml/parseexception.rb,
- lib/rexml/parsers/baseparser.rb, lib/rexml/source.rb,
- lib/rexml/xmldecl.rb: use Ruby's native Encoding object.
-
- * test/rexml/, test/rss/: follow the above encoding changes.
-
- * NEWS: add REXML's incompatible change about encoding.
-
-Sat Oct 30 17:23:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * util.c (ruby_strtod): get rid of overflow/underflow as possible.
-
-Sat Oct 30 14:37:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (ruby_pc): erase runtime-defined variables and
- check if generated pc file is valid.
-
- * template/ruby.pc.in (DEFFILE): need for mingw.
-
- * template/ruby.pc.in (LIBRUBY): fix the order.
-
-Sat Oct 30 11:33:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/Makefile.sub (ruby_pc): ignore missing variables.
-
- * template/ruby.pc.in: add missing variables for mswin.
-
-Sat Oct 30 10:24:35 2010 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
-
- * object.c: Make BasicObject.new accept no parameter.
- Revert of r26135 [ruby-core:27080], as per [ruby-core:32952].
-
-Sat Oct 30 09:40:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * enum.c: use constants in id.h.
-
-Sat Oct 30 09:08:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/fiddle/closure.c (fiddle_closure): embed cif not reference
- so that the content surely get initialized. [ruby-dev:42480]
-
-Sat Oct 30 07:01:53 2010 Tanaka Akira <akr@fsij.org>
-
- * lib/resolv-replace.rb: suppress warning.
-
- * lib/open-uri.rb: ditto.
-
-Sat Oct 30 06:32:52 2010 Tanaka Akira <akr@fsij.org>
-
- * test/pathname/test_pathname.rb (TestPathname#test_grpowned?): the
- group of the created file is inherited from the parent
- directory on BSDs and MacOS X. Linux also inherit the group if
- the setgid bit of the directory is set. It causes the test fail.
- fixed by Shota Fukumori. [ruby-dev:42458]
-
-Sat Oct 30 05:58:54 2010 Tanaka Akira <akr@fsij.org>
-
- * lib/resolv.rb: retry via TCP if UDP reply is truncated.
- fixed by Julian Mehnle. [ruby-core:32407]
-
-Sat Oct 30 00:35:13 2010 Koichi Sasada <ko1@atdot.net>
-
- * iseq.c (iseq_s_compile): fix optional argument.
- a patch from Yutaka HARA [ruby-core:32953] [Ruby 1.9-Bug#4001]
-
-Sat Oct 30 00:24:42 2010 Koichi Sasada <ko1@atdot.net>
-
- * ext/objspace/objspace.c (memsize_of): take care of
- T_CLASS/const_tbl.
- a patch from nagachika <nagachika00@gmail.com> [ruby-dev:42490]
-
-Fri Oct 29 23:32:36 2010 Koichi Sasada <ko1@atdot.net>
-
- * test/profile_test_all.rb: added.
- You can use test-all profiler with the following command:
- RUBY_TEST_ALL_PROFILE=true make test-all
- This command generates ./test_all_profile and you can analyze
- which tests consume memories.
-
- * test/runner.rb: ditto.
-
-Fri Oct 29 10:02:03 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * tool/enc-unicode.rb,
- enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
- enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
- Add 'Unknown' Script.
- patched by Run Paint Run Run. [ruby-core:32937] #3998
-
-Fri Oct 29 05:13:34 2010 Koichi Sasada <ko1@atdot.net>
-
- * ext/objspace/objspace.c (ObjectSpace.memsize_of_all): rename
- ObjectSpace.total_memsize_of_all_objects() to
- ObjectSpace.memsize_of_all([klass]).
- Accept Class object to filter the objects.
-
- * test/objspace/test_objspace.rb: fix test for above change.
-
-Fri Oct 29 03:04:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (rb_str_dump): fix expected length. [ruby-core:32935]
-
-Thu Oct 28 23:31:39 2010 Koichi Sasada <ko1@atdot.net>
-
- * gc.c (before_gc_sweep, run_final): fix decrement timing of final_num.
-
-Thu Oct 28 20:11:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * tool/enc-unicode.rb,
- enc/unicode/name2ctype.h, enc/unicode/name2ctype.h.blt,
- enc/unicode/name2ctype.kwd, enc/unicode/name2ctype.src:
- Update Oniguruma for Unicode 6.
- patched by Run Paint Run Run. [ruby-core:32923] #3989
-
-Thu Oct 28 20:06:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * include/ruby/oniguruma.h (ONIGENC_CTYPE_SPECIAL_MASK):
- change mask from 128 to 256. [ruby-core:32931]
-
-Thu Oct 28 12:06:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/webrick/httprequest.rb (read_request_line): extend max
- length to 2083. This is from Internet Explorer's max uri
- length. http://support.microsoft.com/kb/208427 [ruby-core:32924]
-
-Thu Oct 28 04:00:08 2010 Koichi Sasada <ko1@atdot.net>
-
- * gc.c (GC.stat): added. [ruby-dev:38607]
-
- * test/ruby/test_gc.rb: add a test for above.
-
-Thu Oct 28 03:13:06 2010 Koichi Sasada <ko1@atdot.net>
-
- * ext/objspace/objspace.c (memsize_of): fix rdoc.
-
- * ext/objspace/objspace.c (total_memsize_of_all_objects): added.
-
- * test/objspace/test_objspace.rb:
- - add a test for ObjectSpace.total_memsize_of_all_objects.
- - add two tests for ObjectSpace.memsize_of (for nil and Fixnum).
-
-Wed Oct 27 23:55:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/iconv/iconv.c (Init_iconv): warn deprecated use.
-
-Wed Oct 27 18:50:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * bignum.c (rb_big2long, rb_big2ulong): rb2ulong() returns VALUE, but
- its real range is ulong. So, if the size of VALUE is bigger than
- ulong, upper bits are always zero even if the actual value is
- negative.
- fixed #3490
-
-Wed Oct 27 18:27:17 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_io.rb (TestIO#pipe): should close write end of pipe
- before closing read end, to get rid of timing problem.
-
- * test/ruby/test_io_m17n.rb (TestIO_M17N#pipe): ditto.
-
-Wed Oct 27 18:14:27 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (rb_w32_getppid): support Win64.
-
-Wed Oct 27 15:07:19 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * thread_win32.c (w32_error): should get error no only once, because
- the result of the second getting will indicate the error of the
- first FormatMessage() call.
-
-Wed Oct 27 13:51:25 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * test/ruby/test_io.rb (TestIO#pipe): need to propagate exceptions
- in read/write thread. fix r29541.
-
- * test/ruby/test_io_m17n.rb (TestIO_M17N#pipe): ditto.
-
-Wed Oct 27 12:05:40 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * class.c (clone_const): need to return value. fix r29602.
-
-Wed Oct 27 11:58:58 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * include/ruby/ruby.h (NUM2LONG_internal): add cast to get rid of a
- non GCC compiler warning. this is intentional type conversion.
-
-Wed Oct 27 09:25:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * cont.c: apply documentation patch by Run Paint Run Run.
- [ruby-core:32915]
-
-Wed Oct 27 02:12:10 2010 Yusuke Endoh <mame@tsg.ne.jp>
-
- * object.c (Init_Object), constant.h, variable.c
- (rb_mod_private_constant, rb_mod_public_constant,
- set_const_visibility, rb_const_get_0): add Module#public_constant
- and private_constant. [ruby-dev:39685][ruby-core:32698]
-
- * test/ruby/test_module.rb: add tests for above.
-
-Wed Oct 27 02:02:54 2010 Yusuke Endoh <mame@tsg.ne.jp>
-
- * class.c, constant.h, gc.c, method.h, object.c, variable.c,
- vm_insnhelper.c: use struct rb_constant_entry_t as entry of
- RCLASS_CONST_TBL. RCLASS_CONST_TBL has contained VALUE of constant
- directly. Now instead rb_const_entry_t is contained in
- RCLASS_CONST_TBL, rb_const_entry_t is managed by malloc, and
- have not only the value itself but also visibility flag.
- This is another preparation for private constant (see
- [ruby-dev:39685][ruby-core:32698]).
-
-Wed Oct 27 01:56:34 2010 Yusuke Endoh <mame@tsg.ne.jp>
-
- * class.c, gc.c, object.c, variable.c, vm_insnhelper.c,
- include/ruby/ruby.h: separate RCLASS_CONST_TBL from RCLASS_IV_TBL.
- RCLASS_IV_TBL has contained not only instance variable table but
- also constant table. Now the two table are separated to
- RCLASS_CONST_TBL and RCLASS_IV_TBL. This is a preparation for
- private constant (see [ruby-dev:39685][ruby-core:32698]).
-
-Tue Oct 26 18:51:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/scanf.rb (extract_float): allow 2.e+2 style.
- [ruby-dev:42452] #3978
-
-Tue Oct 26 18:09:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * Makefile.in (ASFLAGS): needs INCFLAGS.
-
- * configure.in (rb_cv_dynamic_alloca): check if extra source for
- dynamic size alloca.
-
- * missing/x86_64-chkstk.s (___chkstk): necessary for alloca of
- amd64-mingw32msvc-gcc on Ubuntu.
-
- * thread_win32.c (ruby_alloca_chkstk): check stack overflow
-
-Tue Oct 26 18:04:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * template/ruby.pc.in (Libs): needs DLDFLAGS.
-
-Tue Oct 26 12:47:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (pkgconfig-data): moved from Makefile.in.
-
- * tool/rbinstall.rb: install pc file only if non-empty.
- [ruby-core:32901] #3983
-
- * win32/Makefile.sub (ruby_pc): create pc file.
-
-Tue Oct 26 09:13:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (rb_cv_gcc_atomic_builtins): check for atomic
- builtins, all are not available in Apple derivative gcc.
-
-Tue Oct 26 00:29:26 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * Makefile.in (pkgconfig-data): create pkg-config metadata file.
-
- * tool/rbinstall.rb: install pkg-config metadata file.
-
- * template/ruby.pc.in: template of pkg-config metadata file.
-
-Mon Oct 25 16:38:07 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * signal.c (rb_atomic_t): GCC (of at least recent versions)
- has ubiquitous support for atomic operations. On that
- compiler a C program can issue a memory barrier using these
- dedicated instructions. According to the GCC manual they
- cargo culted this feature form the Itanium ABI so chances
- are that other compilers could also support this feature.
- But so far GCC is the only compiler that I know to have it.
- Also note that this works on non-Itanium machines.
-
-Mon Oct 25 06:21:35 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vsnprintf.c (BSD_vfprintf): prec digits fractal part should be
- appended to 0 if prec is given. [ruby-dev:42453] #3979
-
-Mon Oct 25 02:57:21 2010 Koichi Sasada <ko1@atdot.net>
-
- * common.mk (run.gdb): Quit gdb on 'make gdb' when
- no signals are received.
-
-Mon Oct 25 00:25:23 2010 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date.rb: some corrections of documentation.
-
-Sun Oct 24 17:14:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c, gc.c, hash.c, object.c, string.c, struct.c,
- transcode.c, variable.c, vm.c, vm_insnhelper.c, vm_method.c:
- replace calls to rb_error_frozen() with rb_check_frozen(). a
- patch from Run Paint Run Run at [ruby-core:32014]
-
- * include/ruby/intern.h (rb_check_frozen): optimize.
- [ruby-core:32878]
-
-Sun Oct 24 15:16:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit.rb (Test::Unit::Mini#run): abort if interrupted.
-
- * lib/test/unit.rb (Test::Unit::Mini#run_test_suites): show the
- result even when interrupted on the way.
-
- * lib/test/unit.rb (Test::Unit::Mini#run_test_suites): ensure
- output sync mode to be restored.
-
-Sun Oct 24 14:11:16 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm.c (vm_define_method): defined method is run with the default
- public visibility regardless the visibility context of definition.
- [ruby-core:30638]
-
-Sun Oct 24 12:08:54 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * lib/test/unit.rb: make test/unit play nicely with the rake test
- loader. [ruby-core:32864]
-
-Sun Oct 24 00:25:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/test_rubyoptions.rb (test_segv_test): follow up the
- change at r29556.
-
-Sat Oct 23 14:39:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb: $extmk should be true for test/runner.
-
-Sat Oct 23 10:55:37 2010 Koichi Sasada <ko1@atdot.net>
-
- * vm_dump.c (rb_vm_bugreport): fix to add bug outputs.
- - loaded script ($0)
- - loaded features ($")
- - process memory map on Linux (/proc/self/maps)
-
- * vm_dump.c (rb_vmdebug_stack_dump_raw): fix header message.
-
-Fri Oct 22 14:50:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
- assertion message must not be nil.
-
-Fri Oct 22 13:59:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/test/unit/assertions.rb (Test::Unit::Assertions#assert):
- treat nil case. Please run test-all before commit such change.
-
-Thu Oct 21 23:58:14 2010 Koichi Sasada <ko1@atdot.net>
-
- * gc.c (gc_lazy_sweep): Variable declarations should be at
- the head of block.
-
-Thu Oct 21 23:56:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * gc.c (objspace_each_objects, rb_objspace_each_objects): use
- struct.
-
- * gc.c (objspace_each_objects): fix return with no value.
-
-Thu Oct 21 23:47:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dir.c (dir_initialize): remove useless intermediate variable.
-
-Thu Oct 21 16:07:20 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * io.c (rb_f_select): change rdoc.
- patched by Eito Katagiri [ruby-core:31805]
-
-Thu Oct 21 15:55:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/webrick/httpauth/digestauth.rb
- (WEBrick::HTTPAuth::ProxyDigestAuth#check_uri): privated.
- [ruby-dev:42344]
-
-Thu Oct 21 15:50:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * io.c (rb_f_select): add correct rdoc.
- patched by Dave Thomas [ruby-core:32467]
-
-Thu Oct 21 15:42:01 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/telnet.rb (Net::Telnet#close): added.
- patched by Erik Hollensbe [ruby-dev:42260] #3830
-
-Thu Oct 21 13:08:00 2010 Narihiro Nakamura <authornari@gmail.com>
-
- * gc.c (rb_objspace_each_objects): don't lazy sweep in
- rb_objspace_each_objects. [Bug #3940] [ruby-dev:42369]
-
-Thu Oct 21 00:05:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * test/ruby/test_io.rb (TestIO#pipe): get rid of deadlock on pipe.
- a patch from Tomoyuki Chikanaga at [ruby-dev:42435]. #3970
-
- * test/ruby/test_io_m17n.rb (TestIO_M17N#pipe): ditto.
-
-Wed Oct 20 23:54:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/dbm/dbm.c: rdoc based on a patch by mathew meta AT
- pobox.com, at [ruby-core:32853].
-
-Wed Oct 20 10:47:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * util.c (ruby_strtod): reject 0x1.p+0. [ruby-dev:42432] #3966
-
-Wed Oct 20 10:00:57 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * vsnprintf.c (BSD_vfprintf): print floating point on "%#a".
- [ruby-dev:42431] Bug#3965
-
-Tue Oct 19 19:30:11 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * vsnprintf.c (BSD_vfprintf): clear ALT flag for %a.
- [ruby-core:32841] [ruby-core:32848]
-
-Tue Oct 19 12:19:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vsnprintf.c (BSD_vfprintf): fix over-count of field size.
-
-Tue Oct 19 03:08:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vsnprintf.c (BSD_vfprintf): use HEXPREFIX flag for prefix of %a.
- [ruby-core:32841]
-
-Mon Oct 18 13:18:01 2010 Akinori MUSHA <knu@iDaemons.org>
-
- * ext/digest/digest.c (rb_digest_class_init): Define
- Digest::Class.new(). [Feature #3954]
-
-Mon Oct 18 12:58:40 2010 Tanaka Akira <akr@fsij.org>
-
- * pack.c (pack_pack): refine the document. [ruby-dev:42397]
- (pack_unpack): ditto.
-
-Mon Oct 18 10:19:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http.rb (transport_request): @socket may be nil.
- patched by Egbert Eich [ruby-core:32829]
-
-Mon Oct 18 09:57:28 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * sprintf.c (BSD_vfprintf): wrong padding around prefix and
- floating point with %a. [ruby-dev:42403] Bug #3956
-
-Sun Oct 17 22:36:33 2010 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date/delta.rb: added an rdoc tag.
-
-Sun Oct 17 10:47:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * variable.c (rb_mod_remove_const): update rdoc.
- [ruby-core:31957]
-
-Sun Oct 17 10:40:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * class.c (rb_define_{class,module}_id_under): register to be
- marked, which probably are defined and used internally.
-
-Sat Oct 16 11:10:55 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c (ole_encoding2cp): set codepage 20936
- according to GB2312. [Bug #3937] [ruby-core:32758]
-
-Sat Oct 16 10:54:57 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * Makefile.in (CPP): already used in .c.i rule.
-
- * cygwin/GNUmakefile.in (DLLWRAP, WINDRES): add --driver-name and
- --preprocessor options explicitly. [ruby-core:32776]
-
-Sat Oct 16 10:06:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/sdbm/_sdbm.c (SEEDUPS, BADMESS): make settable using command
- line options.
-
- * ext/sdbm/_sdbm.c (makroom): suppress unused result warning.
-
- * ext/sdbm/extconf.rb: disable BADMESS, a library should not emit
- messages directly.
-
-Sat Oct 16 08:39:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dln.c (dln_strerror): get English message first, instead of
- system default. see [ruby-dev:42358].
-
-Sat Oct 16 00:08:00 2010 Koichi Sasada <ko1@atdot.net>
-
- * hash.c (rb_hash_aref): skip calling "default" method
- if it is not needed, for speed-up.
-
-Fri Oct 15 23:36:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (NUM2DEVT, DEVT2NUM, PRI_DEVT_PREFIX): fallback to
- unsigned int.
-
-Fri Oct 15 22:54:46 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c (ole_hresult2msg): get English message first,
- instead of system default. [ruby-core:32765]
-
-Fri Oct 15 22:47:31 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/ruby.h (VALUE): prefer long over uintptr_t,
- FIX2LONG expects VALUE to be long at least.
-
- * include/ruby/ruby.h (FIX2LONG): parenthesize the argument.
-
-Fri Oct 15 20:30:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (dev_t): use RUBY_REPLACE_TYPE.
-
- * file.c (rb_stat_inspect): use PRI_DEVT_PREFIX.
-
-Fri Oct 15 17:26:57 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * pack.c (pack_pack): simplify comparison of explicit_endian
- as pointed by nobu.
-
- * pack.c (pack_unpack): ditto.
-
-Fri Oct 15 16:40:37 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * pack.c (pack_pack): fix more than one modifiers appear in the
- format string. [ruby-core:32793]
-
- * pack.c (pack_unpack): ditto.
-
-Thu Oct 14 23:20:42 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * test/win32ole/test_folderitem2_invokeverb.rb: refactoring.
-
-Thu Oct 14 22:18:29 2010 Koichi Sasada <ko1@atdot.net>
-
- * insns.def, iseq.c, vm_insnhelper.c: rename variable name
- (ip -> iseq).
-
-Thu Oct 14 20:41:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * pack.c (pack_pack): support endian modifiers: < and >.
- [ruby-dev:42376] Feature #3491
-
- * pack.c (pack_unpack): ditto.
-
-Thu Oct 14 20:50:51 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * ext/win32ole/win32ole.c (reg_get_val): expand environment in
- the pathname. [Bug #3907]
-
-Thu Oct 14 07:35:07 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * file.c (DEVT2NUM): added. Size of dev_t is depend on the
- environment even if POSIX defines dev_t as unsigned integer.
- For example, OpenVMS, 64bit Solaris 9, and NetBSD 6 defines
- dev_t as 64bit unsigned integer.
-
- * file.c (rb_stat_dev): use DEVT2NUM.
-
- * file.c (rb_stat_dev_major): dev_t is not long. major(3)'s return
- value is int.
-
- * file.c (rb_stat_dev_minor): dev_t is not long. minor(3)'s return
- value is int.
-
- * configure.in: check size of dev_t.
-
-Thu Oct 14 07:22:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c (rb_ary_and, rb_ary_or), class.c (rb_mod_init_copy),
- gc.c (undefine_final), time.c (time_mload): get rid of
- type-punning casts.
-
-Thu Oct 14 04:16:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * numeric.c (ruby_float_step): fix Numeric#step with infinity unit
- doesn't works well. [ruby-core:32779]
-
-Wed Oct 13 23:16:46 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/enc-unicode.rb: get rid of lots of warnings.
-
- * iseq.c (insn_operand_intern, rb_iseq_disasm): fix format specifiers.
-
- * vm.c (thread_free): ditto.
-
- * numeric.c (check_uint): get rid of overflow on LLP64 platforms.
-
- * insns.def (opt_case_dispatch): use st_data_t.
-
-Wed Oct 13 22:32:34 2010 Takeyuki FUJIOKA <xibbar@ruby-lang.org>
-
- * lib/cgi/util.rb (CGI::unescape): bugfix to unescape the multibyte
- string. Thanks nobu and tDiary dev members. [Bug #3909]
-
-Wed Oct 13 21:13:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * numeric.c (int_chr): raise error when the value is negative.
-
-Wed Oct 13 19:24:08 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * vm.c (ruby_vm_destruct): This function type was wrong; correct to the prototype.
-
-Wed Oct 13 14:58:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * numeric.c (rb_num_to_uint): fix 32bit logic.
-
-Wed Oct 13 12:53:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * numeric.c (rb_num_to_uint): added to check the range of arguments.
- Mainly for negative value with NUM2UINT on 32bit environment.
-
- * string.c (rb_str_concat): use rb_num_to_uint.
-
-Wed Oct 13 12:10:02 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * thread_win32.c (w32_error): get English message first, instead
- of system default. see [ruby-core:32765].
- [experimental]
-
-Wed Oct 13 11:04:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * debug.c (ruby_set_debug_option): define always for binary
- compatibility with debug env enabled binary.
-
- * signal.c (ruby_enable_coredump): ditto.
-
-Wed Oct 13 10:52:51 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/ruby.h (ruby_executable_node): missing prototype.
-
-Wed Oct 13 05:23:04 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * missing/strchr.c: add strlen's prototype.
-
- * missing/strstr.c: ditto.
-
-Wed Oct 13 00:21:17 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/syck/rubyext.c (struct mktime_arg): constified.
-
- * ext/syck/rubyext.c (mktime_do, mktime_r, rb_syck_mktime): fix
- function signatures.
-
-Wed Oct 13 00:18:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * st.c (MurmurMagic): get rid of literal overflow.
-
- * configure.in (RUBY_CHECK_PRINTF_PREFIX): check for printf format
- specifier if possible.
-
-Tue Oct 12 23:58:19 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * win32/win32.c (rb_w32_open_osfhandle, rb_w32_wopen, rb_w32_pipe):
- use uintptr_t instead of long for win64.
-
- * win32/win32.c (socketpair_internal): suppress warnings.
-
- * win32/win32.c (ftruncate): use HANDLE instead of long for win64.
-
- * vsnprintf.c (BSD_vfprintf): fix cast.
-
- * numeric.c (rb_num2fix): result of rb_num2long is SIGNED_VALUE.
-
- * compile.c (iseq_build_body), error.c (set_syserr, get_syserr),
- (syserr_initialize), gc.c (define_final, rb_gc_copy_finalizer),
- (run_final), hash.c (rb_hash_aref, rb_hash_lookup2),
- (rb_hash_fetch_m, rb_hash_clear, rb_hash_aset, eql_i),
- iseq.c (iseq_load, iseq_data_to_ary), marshal.c (r_symlink),
- thread.c (rb_thread_local_aref),
- variable.c (generic_ivar_remove, ivar_get, rb_const_get_0),
- (rb_cvar_get), vm.c (rb_vm_check_redefinition_opt_method),
- vm_insnhelper.c (vm_get_ev_const), vm_method.c (remove_method),
- ext/iconv/iconv.c (map_charset): use st_data_t.
-
- * compile.c (iseq_build_body), insns.def (getglobal, setglobal),
- iseq.c (iseq_load, iseq_data_to_ary), util.c (valid_filename):
- use VALUE.
-
- * gc.c (obj_free, rb_objspace_call_finalizer): fix truncating
- cast.
-
- * gc.c (mark_current_machine_context): suppress warnings.
-
- * compile.c (iseq_compile_each): fix truncating cast.
-
- * cont.c (fiber_setcontext): missing variable definition.
-
-Tue Oct 12 19:25:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * error.c (exc_to_s): use OBJ_INFECT.
-
- * error.c (name_err_to_s): ditto.
-
- * error.c (name_err_mesg_to_str): ditto.
-
- * error.c (syserr_initialize): ditto.
-
-Tue Oct 12 19:07:55 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * error.c (syserr_initialize): taint message if mesg is given
- and it is tainted.
-
-Tue Oct 12 18:25:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * io.c (rb_io_ungetc): always see Bignum. On 32bit valid value
- may be a Bignum. On 64bit for errors. [ruby-dev:42366]
-
-Tue Oct 12 18:25:04 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (rb_str_concat): use unsigned int for GB18030.
-
-Tue Oct 12 17:53:49 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * numeric (check_uint): the mask must refer to VALUE.
-
-Tue Oct 12 17:47:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * numeric (check_uint): set MSB for negative value.
-
- * numeric (rb_num2uint): return value's type of rb_num2ulong
- is VALUE.
-
- * numeric (int_chr): variable i can't be negative.
-
-Tue Oct 12 16:04:37 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (rb_w32_strerror): get English message first, instead
- of system default. see [ruby-dev:42358].
- [experimental]
-
-Tue Oct 12 15:52:35 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (rb_w32_strerror): unmap some range of errno for
- workaround of VC10's strerror() and sys_nerr problem.
- based on a patch from Akio Tajima, [ruby-dev:42355].
-
-Tue Oct 12 15:36:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * io.c (rb_io_ungetc): use unsigned int for GB18030.
-
-Tue Oct 12 15:14:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * io.c (rb_io_putc): support multibyte characters.
- [ruby-core:30697]
-
-Tue Oct 12 15:10:31 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * numeric.c (rb_enc_uint_chr): split from int_chr.
-
- * numeric.c (int_chr): use rb_enc_uint_chr.
-
- * include/ruby/encoding.h (rb_enc_uint_chr): added.
-
-Tue Oct 12 14:04:41 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * numeric.c (int_chr): a codepoint of Ruby M17N must be 32bit
- unsigned int; GB18030 uses MSB. Also note that OnigCodePoint
- is defined as unsigned int.
-
-Tue Oct 12 12:20:54 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * vm_dump.c (dump_thread): foolish mistake.
-
-Tue Oct 12 10:39:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (RUBY_MINGW32): canonicalize only on mingw.
-
-Mon Oct 11 20:20:23 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/net/http.rb (HTTP.get): specify ASCII-8BIT as the result
- encoding of Zlib::GzipReader.
- http://hibari.2ch.net/test/read.cgi/tech/1281473294/271
-
-Mon Oct 11 17:42:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * error.c (syserr_initialize): use mesg's encoding when locale
- encoding is US-ASCII. If locale encoding is not US-ASCII,
- assume err has non ASCII characters. [ruby-dev:42358]
-
-Mon Oct 11 14:03:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * error.c (syserr_initialize): set the encoding of Errno::*#message
- as locale. [ruby-dev:42358]
-
-Mon Oct 11 06:38:27 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/stringio/stringio.c (strio_set_encoding):
- StringIO#set_encoding can get 2nd argument and optional hash
- for API compatibility to IO. [ruby-dev:42356]
-
-Mon Oct 11 06:11:30 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * io.c (rb_io_set_encoding): use rb_funcall2 when the io is not
- a T_FILE. [ruby-dev:42356]
-
-Sun Oct 10 18:42:23 2010 Akinori MUSHA <knu@iDaemons.org>
-
- * lib/set.rb (Set#replace): Apply a bit of optimization.
-
-Sun Oct 10 10:20:07 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (RUBY_MINGW32): canonicalize as like mswin version.
-
-Sun Oct 10 05:33:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_core.h (rb_signal_buff_size, rb_signal_exec): moved
- declarations from thread.c.
-
-Sat Oct 9 16:54:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (RSHIFT): quote to get rid of argument expansion
- for autoconf 2.68.
-
-Sat Oct 9 11:00:06 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread.c (thread_reset_event_flags, exec_event_hooks): ignore
- hooks marked as removed.
-
- * thread.c (thread_exec_event_hooks): remove hooks to be removed.
-
- * thread.c (rb_threadptr_remove_event_hook, rb_remove_event_hook):
- defer removing hooks if running the hooks. [ruby-dev:42350]
-
-Sat Oct 9 10:51:00 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread.c (rb_threadptr_exec_event_hooks): suppress each event
- hooks separately.
-
- * thread.c (thread_suppress_tracing): split from
- ruby_suppress_tracing, accepting thread pointer and event mask.
-
-Sat Oct 9 08:16:01 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread.c (rb_threadptr_remove_event_hook): fix typo.
-
-Fri Oct 8 10:52:25 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * common.mk (RBCONFIG): depends on version.h due to
- RUBY_PATCHLEVEL. [ruby-core:32709]
-
-Fri Oct 8 00:24:54 2010 James Edward Gray II <jeg2@ruby-lang.org>
-
- * lib/csv.rb: Fixing documentation typos. [ruby-core:32712]
-
-Thu Oct 7 09:14:28 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * vm_exec.c (vm_exec_core): Treat clang as non gcc on this
- context: It has __asm__ but doesn't works well.
-
-Wed Oct 6 12:28:22 2010 Tanaka Akira <akr@fsij.org>
-
- * lib/uri/generic.rb (URI::Generic#hostname): new method.
- (URI::Generic#hostname=): ditto.
-
- * lib/open-uri.rb: use URI#hostname
-
- * lib/net/http.rb: ditto.
-
- reported by Adam Majer. [ruby-core:32056]
-
-Wed Oct 6 11:52:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (fptr_finalize): write_mutex might have been destroyed
- already in finalization phase, as the order of finalizers is not
- guaranteed. rb_mutex_t should be used in place of Mutex object
- in the future.
-
-Tue Oct 5 22:17:02 2010 wanabe <s.wanabe@gmail.com>
-
- * win32/mkexports.rb: revert r29320 and r29402.
-
-Mon Oct 4 12:43:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * parse.y (regexp): dregexp has literal string only at the head
- and successors are array. [ruby-core:32682]
-
-Mon Oct 4 10:22:21 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * random.c (rand_init): This checks the value is in 32bit or not,
- so use int32_t, not int.
-
-Mon Oct 4 09:47:39 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * random.c (rand_init): remove useless assignment.
-
- * re.c (update_char_offset): remove unused variable.
-
- * re.c (read_escaped_byte): ditto.
-
-Mon Oct 4 09:30:42 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/openssl/lib/openssl/bn.rb (Integer#to_bn): OpenSSL::BN.new
- accepts only Strings, so call Integer#to_s(16).
- 16 is for an optimization. [ruby-dev:42336]
-
-Mon Oct 4 07:57:51 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * cont.c (fiber_memsize): Return size.
- Before this change, fiber_memsize always returns 0.
-
-Mon Oct 4 07:16:55 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * enc/unicode.c (onigenc_unicode_property_name_to_ctype):
- remove useless assignment.
-
- * vm.c (vm_make_proc_from_block): ditto.
-
- * variable.c (rb_ivar_count): ditto.
-
-Mon Oct 4 06:40:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * Makefile.in (clean-rdoc): Don't use \ in variable expansion.
- BSD make treats it as an escape character.
-
-Mon Oct 4 00:01:53 2010 wanabe <s.wanabe@gmail.com>
-
- * tool/config.sub: revert r29320, r29324, r29347, r29354, r29365
- to automake-1.11.1. [ruby-core:32634]
-
- * win32/mkexports.rb: no longer use 'mingw64'. a patch from Luis Lavena
- at [ruby-core:32678].
-
-Sun Oct 3 20:36:37 2010 Akio Tajima (arton) <artonx@yahoo.co.jp>
-
- * test/win32ole/test_folderitem2_invokeverb.rb: Change creating
- shortcut verb to 'Link' [Bug #3339]
-
-Sun Oct 3 19:44:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (Makefile): get rid of duplicated ruby target when
- already there it was.
-
-Sat Oct 2 22:59:32 2010 Masaki Suketa <masaki.suketa@nifty.ne.jp>
-
- * test/win32ole/test_thread.rb: add for win32ole with Thread.
-
-Fri Oct 1 17:03:00 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * test/webrick/test_httpproxy.rb (TestWEBrickHTTPProxy::test_upstream_proxy):
- My machine fails this test at this line, saying 503 service unavailable.
-
-Thu Sep 30 16:11:08 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (rb_w32_getenv): should return NULL if specified name
- is empty. a patch from Heesob Park at [ruby-core:32650]
-
-Thu Sep 30 15:18:23 2010 Yukihiro Matsumoto <matz@ruby-lang.org>
-
- * parse.y (command_asgn): allow command_call to be right hand side
- expression of chained assignment. [ruby-dev:42313]
-
-Thu Sep 30 10:55:38 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * hash.c (ruby_setenv): workaround for old Windows. a patch from
- Heesob Park. [ruby-core:32353]
-
-Thu Sep 30 09:29:06 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * lib/uri/common.rb (URI.encode_www_form): change treatment of
- undefined value in given array as latest internet draft for
- application/www-form-urlencoded.
- http://tools.ietf.org/html/draft-hoehrmann-urlencoded-01
-
-Thu Sep 30 09:34:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * vm_dump.c (dump_thread): fixed wrong type of return value of
- SymGetModuleBase64(). [ruby-dev:42306]
-
-Wed Sep 29 21:04:05 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * test/ruby/test_rubyoptions.rb (TestRubyOptions::test_script_from_stdin):
- As usual, PTY is not always available.
-
-Wed Sep 29 18:38:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/config.sub (x64): regularize only for pc vendor, and strip
- useless 64 suffix.
-
-Wed Sep 29 17:53:02 2010 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (BIGDECIMAL_ENABLE_VPRINT):
- VPrint is usually disabled. It's only used in debugging.
-
-Wed Sep 29 17:41:34 2010 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_save_limit):
- return the result of a block.
-
- * test/bigdecimal/test_bigdecimal.rb (test_save_limit):
- add a test for the above change.
-
-Wed Sep 29 16:18:03 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * vm_dump.c (dump_thread): remove unused optional arguments.
-
-Wed Sep 29 13:26:30 2010 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_save_rounding_mode):
- return the result of a block.
-
- * test/bigdecimal/test_bigdecimal.rb (test_save_rounding_mode):
- add a test for the above change.
-
- * test/bigdecimal/test_bigdecimal.rb (test_save_exception_mode):
- add a test for the return value of BigDecimal.save_exception_mode.
-
-Wed Sep 29 12:45:30 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_div2, BigDecimal_add2,
- BigDecimal_sub2, BigDecimal_mult2, VpLimitRound): remove meaningless
- casts to get rid of compiler warnings.
-
-Wed Sep 29 12:35:13 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/bigdecimal/bigdecimal.c (VPrint, VpToString): fix format.
-
-Wed Sep 29 12:31:12 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/rdoc/known_classes.rb (RDoc::KNOWN_CLASSES): add Encoding.
-
-Tue Sep 28 20:50:23 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/config.sub (x64): regularize same as mswin.
-
-Tue Sep 28 20:06:14 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * vm_dump.c (rb_vm_bugreport): add windows support.
- based on patches from Peter Weldon at [ruby-core:32551]
-
-Mon Sep 27 23:30:34 2010 Koichi Sasada <ko1@atdot.net>
-
- * insns.def (opt_case_dispatch), vm_insnhelper.c:
- execute the procedures of "when" clauses by bytecode
- instead of st_foreach() when the object does not hit
- prepared hash. [ruby-dev:42304]
-
-Mon Sep 27 15:54:03 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * test/net/http/test_https.rb: As always, localhost is not
- guaranteed to be resolved as 127.0.0.1. But a SSL
- certificate needs a socket to listen on a specific address
- where a CN resolves to. On situations where localhost is
- not 127.0.0.1, these tests are not possible.
-
-Mon Sep 27 15:25:05 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * test/net/imap/test_imap.rb: resurrection of r29259.
- this change depends on minitest 1.7.1.
-
- * lib/test/unit/assertions.rb: ditto.
-
-Sun Sep 26 22:59:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/config.sub (x86_64-pc-mingw64): regularize.
-
-Sun Sep 26 22:21:07 2010 wanabe <s.wanabe@gmail.com>
-
- * ext/openssl/ossl_hmac.c (ossl_hmac_hexdigest, ossl_hmac_s_hexdigest),
- ext/openssl/ossl_pkey_ec.c (ossl_ec_group_set_seed),
- ext/openssl/ossl_ssl_session.c (ossl_ssl_session_to_der),
- ext/openssl/ossl_pkcs7.c (numberof): suppress warnings.
- [ruby-core:31932]
-
-Sun Sep 26 10:25:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/config.{guess,sub}: updated to automake-1.11.1.
-
-Sat Sep 25 22:48:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (LIBRUBY_DLDFLAGS): fix quoting.
-
-Sat Sep 25 10:30:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (LIBRUBY_DLDFLAGS): use -unexported_symbol only
- when available. http://trac.macports.org/ticket/26341
-
-Sat Sep 25 10:05:49 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
-
- * configure.in: Always add -mieee for Renesas SH4.
- Thanks, Nobuhiro Iwamatsu. [Feature #3874] [ruby-core:32548]
-
-Sat Sep 25 01:34:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * Makefile.in (install-cross): target to install cross-compiling
- stuff.
-
-Fri Sep 24 23:44:59 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (sym_call), vm.c (invoke_block_from_c),
- vm_insnhelper.c (vm_yield_with_cfunc): pass given block.
- [ruby-core:32075]
-
- * vm_eval.c (rb_funcall_passing_block): new function to call
- method with passing given block.
-
-Fri Sep 24 15:50:43 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (rb_str_to_i): fix rdoc: String#to_i raises an
- exception when base is invalid. [ruby-core:31685]
-
-Fri Sep 24 15:28:35 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (rb_str_rindex): use rb_enc_prev_char instead of repeated
- str_nth.
- patched by Michael Selig [ruby-core:32498]
-
-Fri Sep 24 14:19:12 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * test/test_pty.rb: Same as 229281; existence of PTY class do not
- guarantee a successful pty operation.
-
-Fri Sep 24 06:25:55 2010 Ryan Davis <ryand-ruby@zenspider.com>
-
- * lib/minitest/*.rb: Imported minitest 1.7.2 r5879.
- * test/minitest/*.rb: ditto.
-
-Thu Sep 23 23:09:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_insnhelper.c (vm_get_cref0): cref is stacked only in normal
- iseqs, so check if it is the case first.
-
-Thu Sep 23 23:08:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * tool/config.sub: mingw64 should use x86_64. [ruby-core:32514]
-
-Thu Sep 23 21:40:40 2010 wanabe <s.wanabe@gmail.com>
-
- * ext/socket/raddrinfo.c (init_addrinfo, inspect_sockaddr): suppress
- warnings. see [ruby-core:31932].
-
-Thu Sep 23 19:27:57 2010 wanabe <s.wanabe@gmail.com>
-
- * thread_win32.c (w32_wait_events, w32_close_handle): suppress warnings.
- see [ruby-core:31932].
-
-Thu Sep 23 18:54:39 2010 wanabe <s.wanabe@gmail.com>
-
- * tool/config.sub: add mingw64.
-
- * win32/mkexports.rb (Exports::Mingw64): added.
-
- * win32/mkexports.rb (Exports::Mingw32): renamed from Exports::Mingw.
-
-Thu Sep 23 09:01:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm_insnhelper.c (vm_cref_push): no outer cref is needed for proc
- from method. Bug #3786, Bug #3860, [ruby-core:32501]
-
-Wed Sep 22 17:12:01 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * test/openssl/utils.rb (OpenSSL#silent): always restore $VERBOSE.
- [ruby-dev:42285]
-
-Wed Sep 22 16:59:40 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * test/test_prime.rb (TestPrime#test_new): the warning expected have
- not been displayed when $VERBOSE == nil. Patch by Shota Fukumori
- a.k.a. sora_h. [ruby-dev:42272]
- Recovers $stderr even if StringIO.new fails. Reported by unak.
-
-Wed Sep 22 01:55:48 2010 Koichi Sasada <ko1@atdot.net>
-
- * bootstraptest/test_method.rb: fix last commit.
-
-Wed Sep 22 01:49:52 2010 Koichi Sasada <ko1@atdot.net>
-
- * bootstraptest/test_method.rb: add a test for [ruby-core:30534].
-
-Wed Sep 22 00:52:44 2010 WATANABE Hirofumi <eban@ruby-lang.org>
-
- * lib/rdoc/ri/store.rb (save_cache): remove duplicate entries.
-
-Wed Sep 22 00:00:05 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_f_pathname): Pathname() translated
- from pathname.rb.
-
-Tue Sep 21 22:18:30 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * tool/mkconfig.rb: fixed build problem on mswin64 introduced in r29278.
-
-Tue Sep 21 02:42:35 2010 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
-
- * test/pathname/test_pathname.rb (TestPathname#test_mkdir): fix typo.
-
-Mon Sep 20 23:23:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * dir.c (bracket): get rid of scanning at the end of the pattern
- string, not to raise an exception while globbing command line.
- [ruby-core:32478]
-
-Mon Sep 20 11:25:49 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (Init_pathname): Pathname#=~ undefinition
- translated from pathname.rb.
-
-Mon Sep 20 02:34:11 2010 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (check_rounding_mode, BigDecimal_mode):
- raise ArgumentError instead of TypeError passing invalid modes.
-
- * test/bigdecimal/test_bigdecimal.rb (test_mode, test_round):
- change against the above modifications.
-
-Sun Sep 19 22:08:39 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * lib/mkmf.rb (try_link): rdoc
- (try_compile): ditto
- (try_cpp): ditto
- (try_func): ditto
- (try_var): ditto
- (try_run): ditto
- (egrep_cpp): ditto
-
-Sun Sep 19 20:43:33 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * configure.in (--disable-install-doc): disables capi too, in addition
- to rdoc.
- (--disable-install-rdoc): a new option for disabling only rdoc.
- (--disable-install-capi): a new option for disabling only capi.
-
-Sun Sep 19 20:37:45 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * common.mk (clean): removes all documents on cleaning.o
- (CAPIOUT): new variable.
- (clean-capi, distclean-capi, realclean-capi): new targets
-
- * Makefile.in (clean-capi, distclean-capi, realclean-capi): ditto.
-
- * win32/Makefile.sub (clean-capi, distclean-capi, realclean-capi):
- ditto.
-
-Sun Sep 19 13:44:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in (LIBRUBY_SO): fix an oversight of replace
- RUBY_INSTALL_NAME with RUBY_SO_NAME. a patch from Jeremy Evans
- at [ruby-core:32474].
-
-Sun Sep 19 07:48:20 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_unlink): Pathname#unlink and
- Pathname#delete translated from pathname.rb.
-
-Sun Sep 19 06:06:07 2010 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (check_rounding_mode): added for
- converting symbol to rounding mode number.
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_mode, BigDecimal_round):
- support to specify rounding mode by symbol.
-
- * test/bigdecimal/test_bigdecimal.rb (test_mode, test_round):
- add tests for above changes.
-
-Sun Sep 19 05:14:35 2010 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c: fix rounding algorithms for half-down
- and half-even. This change is based on the patch created by Matthew
- Willson, the reporter of this bug. [Bug #3803] [ruby-core:32136]
-
- * test/bigdecimal/test_bigdecimal.rb: add tests for above changes.
-
-Sat Sep 18 20:09:51 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_each_entry): Pathname#each_entry
- translated from pathname.rb.
-
-Fri Sep 17 23:44:07 2010 Kouhei Sutou <kou@cozmixng.org>
-
- * lib/rexml/xpath_parser.rb, test/rexml/test_xpath.rb:
- add missing method availability check. [ruby-core:32447]
- Reported by Wiebe Cazemier. Thanks!!!
-
-Fri Sep 17 23:23:26 2010 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rexml/test_sax.rb: don't use thread and sleep to avoid slow test.
-
-Fri Sep 17 23:10:44 2010 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rexml/test_core.rb: enable.
-
-Fri Sep 17 22:46:02 2010 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rexml/: untabify.
-
-Fri Sep 17 22:29:56 2010 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rexml/: fix fixture data path. All REXML tests are worked.
-
-Fri Sep 17 22:15:15 2010 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rexml/test_listener.rb: remove needless codes.
-
-Fri Sep 17 22:12:23 2010 Kouhei Sutou <kou@cozmixng.org>
-
- * test/rexml/: import REXML tests from
- http://www.germane-software.com/repos/rexml/trunk/test/.
- Many tests are failed temporary. I'll fix them quickly. Sorry.
-
-Fri Sep 17 16:48:49 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * test/io/console/test_io_console.rb (TestIO_Console::helper):
- PTY.open is not guaranteed to work. On my machine opening a
- pty is prohibited via process control group. On those cases
- exceptions shall occur, and that doesn't mean our fault.
- Skip those tests on such situations.
-
-Fri Sep 17 08:30:27 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/tracer.rb: count only non-internal libraries in stack trace,
- ignoring custom_require. [ruby-core:31858]
-
-Fri Sep 17 02:18:41 2010 Akinori MUSHA <knu@iDaemons.org>
-
- * tool/mkconfig.rb: Fix build with m4 1.4.15 generating duplicate
- lines in config.status. According to nobu, the mswin32 port may
- depend on the piece of code in question, so the behavior is left
- unchanged on mswin32.
-
-Thu Sep 16 23:47:59 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_opendir): Pathname#opendir translated
- from pathname.rb.
-
-Thu Sep 16 21:40:37 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/test/unit.rb (Test::Unit::GlobOption): merged RejectOption.
-
- * test/runner.rb: utilize GlobOption.
-
-Thu Sep 16 21:31:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/rdoc/ri/driver.rb (RDoc::RI::Driver.setup_options)
- (RDoc::RI::Driver.fixup_options): split from process_args.
- libraries should not parse ARGV inside, since it's a task of
- applications, not libraries.
-
-Thu Sep 16 21:02:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/rdoc/ri/paths.rb (RDoc::RI::Paths.each): HOMEDIR can be nil
- if $HOME is unset.
-
-Thu Sep 16 14:50:42 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * test/ruby/test_file_exhaustive.rb (TestFileExhaustive::test_expand_path):
- ENV["HOME"] might not be set. On those cases without it an
- exception raises here, which effectively disables later
- tests on this method.
-
-Thu Sep 16 08:30:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * sprintf.c (rb_f_sprintf): fix rdoc. pointed out by Tomoyuki
- Chikanaga at [ruby-core:32395], and a patch from Daniel
- Bovensiepen at [ruby-core:32403].
-
-Thu Sep 16 08:27:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/etc/extconf.rb: use expanded sysconfdir with empty DESTDIR.
- [ruby-core:32394]
-
-Thu Sep 16 06:07:24 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_rmdir): Pathname#rmdir translated
- from pathname.rb.
-
-Thu Sep 16 00:36:25 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/readline/extconf.rb: Remove Readline 6 check because
- Ruby's license is now GPLv3 compatible. [ruby-core:28736]
-
-Thu Sep 16 00:26:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * COPYING: change Ruby's License from a dual license with GPLv2
- to a dual license with 2-clause BSDL.
- [ruby-dev:42166] [ruby-core:31971]
- [ruby-dev:39167] [ruby-core:25272]
-
- * COPYING.ja: ditto.
-
- * BSDL: added. this is from The FreeBSD License.
-
-Wed Sep 15 21:07:06 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_mkdir): Pathname#mkdir translated
- from pathname.rb.
-
-Wed Sep 15 13:37:00 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * test/net/imap/test_imap.rb: "localhost" not guaranteed to
- resolve to "127.0.0.1". On my machine it is "::1" instead.
- The problem is, you have to connect to the imaps server via
- the canonical name written in a server certificate, and that
- of the server.cert is "localhost". So you have to listen to
- the address of what "localhost" resolves to. I think this
- situation cannot be resolved in a handy manner because the
- test "test_imaps_post_connection_check" is actually
- expecting to connect to a server via an address other than
- the CN. On my machine several assertions won't pass because
- the test cannot connect to the server.
-
-Wed Sep 15 09:12:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (rb_io_puts): fix for wide char encoding strings.
- [ruby-dev:42212]
-
-Wed Sep 15 07:27:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * string.c (rb_str_format_m): mentioned about Hash argument. a patch
- from Daniel Bovensiepen at [ruby-core:32386].
-
- * sprintf.c (get_hash): ditto, and fix typo.
-
-Wed Sep 15 07:22:20 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_entries): Pathname#entries translated
- from pathname.rb.
-
-Wed Sep 15 02:13:44 2010 Aaron Patterson <aaron@tenderlovemaking.com>
-
- * ext/fiddle/closure.c : Don't use FFI closure alloc on OpenBSD.
- Thanks Jeremy Evans! [ruby-core:32384]
-
-Tue Sep 14 20:17:48 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_s_getwd): Pathname.getwd and
- Pathname.pwd translated from pathname.rb.
-
-Tue Sep 14 05:13:04 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_s_glob): Pathname.glob translated
- from pathname.rb.
-
-Tue Sep 14 01:24:51 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
-
- * ext/socket/raddrinfo.c (ruby_getaddrinfo__aix): suppress a
- warning.
-
-Mon Sep 13 20:48:30 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_zero_p): Pathname#zero? translated
- from pathname.rb.
-
-Mon Sep 13 19:56:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/socket/rubysocket.h (__DARWIN_ALIGNBYTES): workaround of a
- bug in system header of darwin 9. [ruby-core:32341]
-
-Mon Sep 13 18:11:55 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/mkmf.rb (try_do): fix typo. a patch from Peter Weldon
- at [ruby-core:32327].
-
-Mon Sep 13 10:12:09 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * util.c (ruby_strtod): reject Float('0x0.').
- [ruby-dev:42239] Bug #3820
-
-Mon Sep 13 09:23:58 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/openssl/ossl_bn.c (ossl_bn_is_prime): fix comparison
- with rb_scan_args. Before this fix, OpenSSL::BN#prime?
- is fully broken. [ruby-dev:42225]
-
-Mon Sep 13 06:45:24 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_writable_real_p):
- Pathname#writable_real? translated from pathname.rb.
-
-Sun Sep 12 21:21:50 2010 Tadayoshi Funaba <tadf@dotrb.org>
-
- * lib/date.rb: [ruby-core:32096] Thanks Colin Bartlett.
-
-Sun Sep 12 19:30:27 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_world_writable_p):
- Pathname#world_writable? translated from pathname.rb.
-
-Sun Sep 12 09:16:06 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_writable_p): Pathname#writable?
- translated from pathname.rb.
-
-Sun Sep 12 08:36:15 2010 Tanaka Akira <akr@fsij.org>
-
- * process.c (rlimit_resource_name2int): support more limits:
- RLIMIT_MSGQUEUE, RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_RTTIME and
- RLIMIT_SIGPENDING.
- (Init_process): ditto.
- patch by Run Paint Run Run. [ruby-core:32262]
-
-Sun Sep 12 04:27:13 2010 Tanaka Akira <akr@fsij.org>
-
- * process.c (rlimit_resource_name2int): use STRCASECMP to avoid
- ALLOCA_N.
-
-Sat Sep 11 16:47:41 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * hash.c (ruby_setenv): raise if putenv and SetEnvironmentVariable
- failed, because of the restriction of the size on Windows.
- based on a patch from Peter Weldon at [ruby-core:32304]. fix:
- Bug#3812, [ruby-core:32250]
-
-Sat Sep 11 15:19:57 2010 Eric Hodel <drbrain@segment7.net>
-
- * lib/webrick/httpauth/digestauth.rb (WEBrick::Config::DigestAuth):
- Add documentation
-
- * lib/webrick/config.rb (WEBrick::Config::DigestAuth): Add
- documentation
-
-Sat Sep 11 12:32:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/intern.h (rb_set_kcode, rb_get_kcode): removed
- zombie prototype declarations. a patch from Eric Hodel
- at [ruby-core:32305].
-
-Sat Sep 11 06:53:12 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_symlink_p): Pathname#symlink?
- translated from pathname.rb.
-
-Fri Sep 10 23:03:43 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_sticky_p): Pathname#sticky? translated
- from pathname.rb.
-
-Fri Sep 10 19:11:13 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#continue): add
- method for generating HTTP/1.1 100 continue response if the client
- expects it, otherwise does nothing. Patch by Brian Candler.
- ref #855.
-
- * test/webrick/test_httprequest.rb: test added.
-
-Fri Sep 10 17:49:34 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * ext/openssl/lib/openssl/x509-internal.rb: removed unused local
- variable.
-
- * test/openssl/*: less warnings while test running with -w.
-
-Fri Sep 10 16:49:20 2010 Akinori MUSHA <knu@iDaemons.org>
-
- * class.c (rb_scan_args): Add support for optional keyword
- argument hash. [ruby-dev:42221] [ruby-dev:38048]
-
- * README.EXT, README.EXT.ja: Update documentation accordingly.
-
- * dir.c (dir_initialize): Make use of the new rb_scan_args()
- feature.
-
- * io.c (rb_io_s_popen, rb_scan_open_args, rb_io_initialize)
- (rb_io_s_pipe, open_key_args, io_s_foreach, io_s_readlines)
- (rb_io_s_read, rb_io_set_encoding): Ditto.
-
- * transcode.c (str_transcode, econv_args)
- (econv_primitive_convert): Ditto.
-
- * ext/zlib/zlib.c (rb_gzreader_initialize): Ditto.
-
-Fri Sep 10 10:33:18 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * random.c (rb_genrand_ulong_limited): renamed from
- rb_rand_internal and now this is public API.
-
- * include/ruby/ruby.h (rb_genrand_ulong_limited): added.
-
- * bignum.c (big_sparse_p): use rb_genrand_ulong_limited.
-
-Fri Sep 10 13:07:22 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * ext/digest/lib/digest.rb: removed unused exception variable
- assignment to avoid a warning.
-
-Fri Sep 10 07:29:14 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/etc/etc.c (etc_systmpdir): assume system default tmpdir
- safe. [ruby-dev:42089]
-
-Fri Sep 10 07:03:23 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_size_p): Pathname#size? translated from
- pathname.rb.
-
-Fri Sep 10 02:15:29 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/socket/option.c (inspect_peercred): support OpenBSD-current.
- patch by Jeremy Evans. [ruby-core:32240]
-
-Thu Sep 9 23:25:53 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm.c (vm_backtrace_each): skip allocator frames which have no
- name. [ruby-core:32231]
-
-Thu Sep 9 22:39:08 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_size): Pathname#size translated from
- pathname.rb.
-
-Thu Sep 9 22:34:48 2010 wanabe <s.wanabe@gmail.com>
-
- * compile.c (case_when_optimizable_literal): When float value can be
- treated as integer, add to table hash of case that way.
- based on a patch from Ikuo KOBORI. [ruby-dev:42038]
-
- * insns.def (opt_case_dispatch): ditto.
-
- * test/ruby/test_case.rb: add tests.
-
-Thu Sep 9 17:15:15 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * test/net/http/test_https.rb (test_identity_verify_failure): follows
- the SSL hostname check error message of openssl.
-
-Thu Sep 9 10:44:46 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * test/ruby/test_env.rb (test_aset): OpenBSD acts like NetBSD in
- that it ignores characters after = in ENV.
- patched by Jeremy Evans [ruby-core:32184]
-
-Thu Sep 9 09:02:01 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * tool/rbinstall.rb (install?): gemspec filename should include
- its version. patched by Luis Lavena [ruby-core:32165]
-
-Wed Sep 8 22:46:31 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * ext/openssl/ossl_ssl.c (ssl_get_error): Thread context switch was
- blocked on Windows while blocking call for SSLSocket. Need to
- convert errno for letting rb_io_wait_readable detect EWOULDBLOCK.
- Patch by arton. ref #3794.
-
-Wed Sep 8 20:56:57 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_setgid_p): Pathname#setgid? translated
- from pathname.rb.
-
-Wed Sep 8 06:25:41 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_setuid_p): Pathname#setuid? translated
- from pathname.rb.
-
-Tue Sep 7 21:03:35 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_readable_real_p):
- Pathname#readable_real? translated from pathname.rb.
-
-Mon Sep 6 23:07:25 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_world_readable_p):
- Pathname#world_readable? translated from pathname.rb.
-
-Mon Sep 6 11:03:13 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * Fixed wrong check of missing functions. Patch by Adrian Quark.
- ref #3400
- The patch contains following comment:
- This patch should avoid unnecessary incompatibility with future
- versions of Openssl. Changes suggested by bmaher_at_amazon.com.
-
-Mon Sep 6 10:46:55 2010 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
-
- * Fixed exception message for SSL post connection check failure. Patch
- by Paul Betteridge. ref [Bug #3704]
-
-Mon Sep 6 10:31:59 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * ext/readline/readline.c (readline_s_get_line_buffer):
- Readline.line_buffer should return locale string.
- [ruby-dev:42184] #3791
-
-Mon Sep 6 09:47:24 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * util.c (ruby_strtod): check there is at least 1 digit after
- "0x" before ".". [ruby-dev:42183] #3790
-
-Mon Sep 6 09:44:50 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * util.c (ruby_strtod): check integer overflow.
- [ruby-dev:42180] #3789
-
-Mon Sep 6 06:17:21 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_readable_p): Pathname#readable?
- translated from pathname.rb.
-
-Sun Sep 5 23:02:34 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_owned_p): Pathname#owned?
- translated from pathname.rb.
-
-Sat Sep 4 23:48:47 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (rb_file_s_readlink): symlink target should be in
- filesystem encoding.
-
-Sat Sep 4 10:40:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * load.c (ruby_init_ext): export for golfers.
-
- * vm_core.h (rb_iseq_eval, rb_iseq_compile_with_option): ditto.
-
-Sun May 23 17:29:41 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * common.mk (capi): uses a timestamp file to get rid of
- generating twice.
-
-Fri Jun 18 01:33:21 2010 Yuki Sonoda (Yugui) <yugui@yugui.jp>
-
- * enc/Makefile.in (realclean): has been missing. necessary
- for make realclean-enc.
-
-Fri Sep 3 23:51:26 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_socket_p): Pathname#socket?
- translated from pathname.rb.
-
-Fri Sep 3 06:40:44 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/pty/pty.c (chfunc): pass through exceptions.
-
- * io.c (rb_io_bufwrite, rb_io_bufread): added.
-
- * process.c (rb_fork_err): protect from exceptions.
-
-Fri Sep 3 06:16:07 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_pipe_p): Pathname#pipe?
- translated from pathname.rb.
-
-Fri Sep 3 06:14:40 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ext/pty/pty.c (chfunc): restore errno from SystemCallError and
- propagate proper exception to the parent. [ruby-dev:41965]
-
-Thu Sep 2 22:10:38 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_file_p): Pathname#file?
- translated from pathname.rb.
-
-Thu Sep 2 09:12:02 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): don't forget to free
- memory.
-
-Thu Sep 2 09:01:13 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * win32/win32.c (CreateChild): unicodize.
-
- * win32/win32.c (rb_w32_spawn, rb_w32_aspawn): convert arguments of
- CreateChild() from ACP to WideChar.
-
-Thu Sep 2 06:53:43 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_directory_p): Pathname#directory?
- translated from pathname.rb.
-
-Wed Sep 1 22:03:41 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_grpowned_p): Pathname#grpowned?
- translated from pathname.rb.
-
-Wed Sep 1 17:39:02 2010 Ryan Davis <ryand-ruby@zenspider.com>
-
- * lib/minitest/*.rb: Imported minitest 1.7.1 r5835.
- * test/minitest/*.rb: ditto.
-
-Wed Sep 1 16:50:42 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (tr_setup_table): optimized. don't create hash objects
- when given pattern is ASCII only.
-
- * string.c (tr_find): ditto.
-
-Wed Sep 1 14:35:29 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * array.c (rb_ary_rotate_m): fix typo of rdoc.
- patched by Andrei Kulakov [ruby-core:31975]
-
-Wed Sep 1 14:33:36 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * enum.c (enum_zip): fix typo of rdoc.
- patched by Andrei Kulakov [ruby-core:31974]
-
-Wed Sep 1 12:56:36 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * thread.c (ruby_suppress_tracing): restore the state and invoke
- the func with normal state. a patch from Satoshi Shiba <shiba
- AT rvm.jp> at [ruby-dev:42162]. [ruby-core:31783]
-
-Tue Aug 31 21:10:23 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_exist_p): Pathname#exist? translated
- from pathname.rb.
-
-Tue Aug 31 17:32:34 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
-
- * ext/tk/stubs.c: fix [Bug #3771] "VC++ can't make ext/tk with enabling
- stubs". Thanks, Akio Tajima [ruby-dev:42159].
-
-Tue Aug 31 03:42:14 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (tr_setup_table): fix bug in r29146.
- Initialize table even if cflag is 0; tr_find see whether
- del is empty or not.
-
- * string.c (tr_find): nodel can't be NULL; if NULL, it means
- it is not specified.
-
-Mon Aug 30 21:29:21 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_executable_real_p):
- Pathname#executable_real? translated from pathname.rb.
-
-Mon Aug 30 15:00:13 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * string.c (tr_setup_table): initialize negating table when
- negating string is given. [ruby-core:31851]
-
- * string.c (tr_find): add a sentence for the time when
- target characters include negating one.
-
- * string.c (rb_str_count): move definition.
-
-Mon Aug 30 07:32:41 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_executable_p): Pathname#executable?
- translated from pathname.rb.
-
-Sun Aug 29 23:54:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * lib/rdoc/parser/ruby.rb (RDoc#parse_call_parameters): don't
- include assignment. [Bug #3759], [ruby-dev:42154]
-
- * lib/rdoc/parser/ruby.rb (RDoc#parse_class): ignore non-constant
- name singleton class. [Bug #3759], [ruby-dev:42154]
-
-Sun Aug 29 23:25:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (rb_get_path_check): clarify error message for
- ASCII-incompatible path name.
-
-Sun Aug 29 16:02:54 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * common.mk (node_name.inc): remove command option -n and give
- file as stdin, because IronRuby 1.1 still doesn't support it.
- So now we can use ir.exe as BASERUBY.
-
- * tool/node_name.rb: read stdin with while gets.
-
-Sun Aug 29 13:22:43 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * vm.c (rb_thread_method_id_and_class): curried proc has no
- method. [ruby-core:31871]
-
-Sun Aug 29 12:51:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * load.c (rb_provide_feature): clarify error message for frozen
- $LOADED_FEATURES. based on a patch from Run Paint Run Run at
- [ruby-core:31913].
-
-Sun Aug 29 12:19:58 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * load.c (load_failed): should honor encoding. [ruby-core:31915]
-
-Sun Aug 29 09:35:10 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * common.mk (clean): exclude *.inc. [ruby-dev:41931]
-
- * common.mk (distclean): include *.inc.
-
- * common.mk (help): change description about clean and distclean.
-
-Sat Aug 29 06:34:52 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_chardev_p): Pathname#chardev?
- translated from pathname.rb.
-
-Sat Aug 28 17:39:33 2010 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_save_exception_mode,
- BigDecimal_save_rounding_mode, BigDecimal_save_limit): added.
-
- * test/bigdecimal/test_bigdecimal.rb: added tests for the above
- features.
-
-Sat Aug 28 08:11:05 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_blockdev_p): Pathname#blockdev?
- translated from pathname.rb.
-
-Fri Aug 27 16:20:01 2010 URABE Shyouhei <shyouhei@ruby-lang.org>
-
- * string.c (rb_str_prepend): new method by Shota Fukumori (sora_h)
- [Feature #3765]
-
-Fri Aug 27 15:24:20 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * math.c (math_atan2): you should know that M_PI is not the feature
- of C90.
- fixed build failure caused by r29115.
-
-Fri Aug 27 15:26:33 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * file.c (null_device): move from io.c.
-
-Fri Aug 27 12:47:44 2010 Kenta Murata <mrkn@mrkn.jp>
-
- * math.c (math_atan2): change the behavior when x and y are zero.
- [ruby-dev:42090] [Bug #3736] [ruby-dev:42116]
-
- * test/ruby/test_math.rb (test_atan2): add tests for the above
- changes.
-
-Fri Aug 27 12:26:23 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * object.c (rb_obj_class): remove mention of obsolete method.
- a patch from Run Paint Run Run at [ruby-core:31842].
-
-Fri Aug 27 12:25:03 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * io.c (null_device): the name of null device. [ruby-dev:41791]
-
-Fri Aug 27 07:57:34 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c (rb_ary_shuffle_bang): bail out from modification during
- shuffle.
-
- * array.c (rb_ary_sample): ditto.
-
-Fri Aug 27 05:11:51 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_sysopen): Pathname#sysopen translated
- from pathname.rb.
-
-Thu Aug 26 22:53:56 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c (rb_ary_shuffle): rdoc fix. argument name was missing.
- a patch from Run Paint Run Run at [ruby-core:31848].
-
-Thu Aug 26 21:49:46 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_readlines): Pathname#readlines
- translated from pathname.rb.
-
-Thu Aug 26 10:37:00 2010 NARUSE, Yui <naruse@ruby-lang.org>
-
- * regint.h (OnigStackIndex): the type should be intptr_t.
- Original Oniguruma assumes the size of long and that of void *
- are equal, but it's not true on LLP64 platform: mswin64.
- originally patched by shintaro kuwamoto [ruby-dev:42133]
-
-Thu Aug 26 10:38:11 2010 Yutaka Kanemoto <kanemoto@ruby-lang.org>
-
- * test/dl/test_base.rb: AIX does not have dynamically loadable lib[cm].
-
- * test/fiddle/helper.rb: AIX does not have dynamically loadable lib[cm].
-
-Thu Aug 26 09:49:50 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c (rb_ary_shuffle_bang): check number of argument.
-
-Tue Aug 26 09:11:40 2010 Kenta Murata <mrkn@mrkn.jp>
-
- * ext/bigdecimal/bigdecimal.c (Init_bigdecimal,
- rmpd_set_thread_local_exception_mode, VpGetException,
- VpSetException): thread-local exception mode.
-
- * ext/bigdecimal/bigdecimal.c (Init_bigdecimal,
- rmpd_set_thread_local_precision_limit, VpGetPrecLimit,
- VpSetPrecLimit): thread-local precision limit.
-
- * ext/bigdecimal/bigdecimal.c (Init_bigdecimal,
- rmpd_set_thread_local_rounding_mode, VpGetRoundMode,
- VpSetRoundMode, VpException, VpInternalRound):
- thread-local rounding mode.
-
- * ext/bigdecimal/bigdecimal.c (BigDecimal_mode, BigDecimal_round,
- VpIsRoundMode, VpGetRoundMode, VpSetRoundMode, VpActiveRound,
- VpMidRound, VpLeftRound), ext/bigdecimal/bigdecimal.h:
- use unsigned short for rounding mode.
-
- * test/bigdecimal/test_bigdecimal.rb (test_mode): add test for
- setting rounding mode.
-
- * test/bigdecimal/test_bigdecimal.rb (test_thread_local_mode):
- add test for setting mode thread-locally.
-
-Thu Aug 26 07:29:54 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c (rb_ary_{shuffle_bang,sample}): use Random class object.
-
- * random.c (try_get_rnd): use default_rand for Random as same as
- singleton methods.
-
- * random.c (rb_random_real): check the range of result.
-
-Wed Aug 25 22:11:11 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_binread): Pathname#binread translated
- from pathname.rb.
-
-Wed Aug 25 03:42:43 2010 NAKAMURA Usaku <usa@ruby-lang.org>
-
- * ext/dl/cfunc.c (rb_dlcfunc_call): workaround for VC9 for x64.
- reported by kuwamoto shintaro in [ruby-dev:42125].
-
-Tue Aug 24 23:28:50 2010 Yusuke Endoh <mame@tsg.ne.jp>
-
- * .gitignore: updated.
-
-Tue Aug 24 22:07:28 2010 Tanaka Akira <akr@fsij.org>
-
- * ext/pathname/pathname.c (path_read): Pathname#read translated from
- pathname.rb.
-
-Tue Aug 24 10:11:04 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * configure.in: read API version from include/ruby/version.h.
-
- * {bcc,win}32/setup.mak (-version-): ditto.
-
- * version.h (RUBY_LIB_VERSION): use API version numbers.
-
-Tue Aug 24 07:07:28 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * array.c (rb_ary_shuffle_bang, rb_ary_sample): add optional
- argument random. [ruby-dev:41923] [EXPERIMENTAL]
-
- * random.c (rb_random_{int32,real,bytes}): fallback to normal
- method invocation.
-
-Tue Aug 24 06:08:10 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * include/ruby/version.h (RUBY_API_VERSION_*): renamed and moved
- from version.h. [ruby-dev:42103]
-
-Tue Aug 24 05:58:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
-
- * ChangeLog: flushed. [ruby-dev:42050]
-
Tue Aug 24 01:14:58 2010 Kenta Murata <mrkn@mrkn.jp>
* ext/bigdecimal/bigdecimal.c (BigDecimal_to_f): to_f must underflow
diff --git a/doc/NEWS-1.8.7 b/doc/NEWS-1.8.7
index 51fb5f1c6a..460a7c9328 100644
--- a/doc/NEWS-1.8.7
+++ b/doc/NEWS-1.8.7
@@ -1,6 +1,4 @@
-# -*- rdoc -*-
-
-= NEWS for Ruby 1.8.7
+= NEWS
This document is a list of user visible feature changes made between
releases except for bug fixes.
@@ -54,7 +52,7 @@ with all sufficient information, see the ChangeLog file.
* Array#flatten
* Array#flatten!
- Takes an optional argument that determines the level of recursion
+ Take an optional argument that determines the level of recursion
to flatten.
* Array#eql?
@@ -77,7 +75,6 @@ with all sufficient information, see the ChangeLog file.
* Array#reject
* Array#reject!
* Array#delete_if
- * Array#select
Return an enumerator if no block is given.
@@ -162,10 +159,6 @@ with all sufficient information, see the ChangeLog file.
New alias to #inject.
- * Enumerable#to_a
-
- Can take optional arguments and pass them to #each.
-
* Hash#eql?
* Hash#hash
* Hash#==
@@ -267,17 +260,12 @@ with all sufficient information, see the ChangeLog file.
* Regexp.union accepts an array of patterns.
- * String#bytes
-
- New method
-
* String#bytesize
New method, returning the size in bytes. (alias length and size)
* String#chars
* String#each_char
- * String#lines
* String#partition
* String#rpartition
* String#start_with?
@@ -511,15 +499,6 @@ with all sufficient information, see the ChangeLog file.
always use Date.strptime() when you know what you are dealing
with.
-* REXML
-
- * REXML::Document.entity_expansion_limit=
-
- New method to set the entity expansion limit. By default the limit is
- set to 10000. See the following URL for details.
-
- http://www.ruby-lang.org/en/news/2008/08/23/dos-vulnerability-in-rexml/
-
* stringio
* StringIO#each_byte
diff --git a/doc/NEWS-1.9.1 b/doc/NEWS-1.9.1
index fb11026d60..f2afa00bdc 100644
--- a/doc/NEWS-1.9.1
+++ b/doc/NEWS-1.9.1
@@ -1,6 +1,4 @@
-# -*- rdoc -*-
-
-= NEWS for Ruby 1.9.1
+= NEWS
This document is a list of user visible feature changes made between
releases except for bug fixes.
@@ -33,18 +31,18 @@ See doc/NEWS-1.8.7 for changes between 1.8.6 and 1.8.7.
* builtin classes and objects
* Kernel and Object
- o Kernel#methods and #singleton_methods used to return an
+ o Kernel#methods and #singleton_methods used to return an
array of strings but now they return an array of symbols.
* Class and Module
o Module#attr works as Module#attr_reader by default.
Optional boolean argument is obsolete.
o Module#instance_methods, #private_instance_methods and
- #public_instance_methods used to return an array of
+ #public_instance_methods used to return an array of
strings but now they return an array of symbols.
o Extra subclassing check when binding UnboundMethods
-
+
* Exceptions
- o Exceptions are equal to each other if they belong to
+ o Exceptions are equal to each other if they belong to
the same class and have the same message and backtrace.
o SystemStackError used to be a subclass of StandardError
but not it is a direct subclass of Exception.
@@ -73,7 +71,7 @@ See doc/NEWS-1.8.7 for changes between 1.8.6 and 1.8.7.
o Most of the changes in Hash apply to hash like interfaces
such as ENV and *DBM.
* IO operations
- o Many methods used to act byte-wise but now some of those act
+ o Many methods used to act byte-wise but now some of those act
character-wise. You can use alternate byte-wise methods.
o IO#getc
o Non-blocking IO
@@ -96,7 +94,7 @@ See doc/NEWS-1.8.7 for changes between 1.8.6 and 1.8.7.
o IO#internal_encoding, IO#external_encoding,
IO#set_encoding
o IO.pipe takes encoding option
- o Directive %u behaves like %d for negative values in
+ o Directive %u behaves like %d for negative values in
printf-style formatting.
* File and Dir operations
o #to_path is called as necessary in File.path, File.chmod,
@@ -170,7 +168,7 @@ See doc/NEWS-1.8.7 for changes between 1.8.6 and 1.8.7.
* Pathname
o No longer has #to_str nor #=~.
* time and date
- o Time.parse and Date.parse interprets slashed numerical dates
+ o Time.parse and Date.parse interprets slashed numerical dates
as "dd/mm/yyyy".
* Readline
o If Readline uses libedit, Readline::HISTORY[0] returns the
@@ -211,15 +209,15 @@ See doc/NEWS-1.8.7 for changes between 1.8.6 and 1.8.7.
* New syntax and semantics
o Magic comments to declare in which encoding your source
code is written
- o New literal hash syntax and new syntax for hash style
- arguments
+ o New literal hash syntax and new syntax for hash style
+ arguments
o New syntax for lambdas
o .() and calling Procs without #call/#[]
o Block in block arguments
o Block local variables
o Mandatory arguments after optional arguments allowed
o Multiple splats allowed
- o #[] can take splatted arguments, hash style arguments
+ o #[] can take splatted arguments, hash style arguments
and a block.
o New directives in printf-style formatted strings (%).
o Newlines allowed before ternary colon operator (:) and
@@ -265,7 +263,7 @@ See doc/NEWS-1.8.7 for changes between 1.8.6 and 1.8.7.
* Enumerable and Enumerator
o Enumerator#enum_cons and Enumerator#enum_slice are
- removed. Use #each_cons and #each_slice without a block.
+ removed. Use #each_cons and #each_slice without a block.
o Enumerable#each_with_index can take optional arguments
and passes them to #each.
o Enumerable#each_with_object
@@ -335,11 +333,6 @@ See doc/NEWS-1.8.7 for changes between 1.8.6 and 1.8.7.
o Numeric#upto, #downto, #times, #step
o Numeric#real?, Complex#real?
o Numeric#magnitude
- o Numeric#round
- * Float
- o Float#round
- * Integer
- o Integer#round
* Rational / Complex
o They are in the core library now
* Math
@@ -393,7 +386,7 @@ See doc/NEWS-1.8.7 for changes between 1.8.6 and 1.8.7.
o Readline.emacs_editing_mode?
o Readline::HISTORY.clear
* Tk
- o TkXXX widget classes are removed and redefined as aliases of
+ o TkXXX widget classes are removed and redefined as aliases of
Tk::XXX classes.
* RDoc
o Updated to version 2.2.2. See:
diff --git a/doc/NEWS-1.9.2 b/doc/NEWS-1.9.2
index 9cf58c9aff..11e5c82c58 100644
--- a/doc/NEWS-1.9.2
+++ b/doc/NEWS-1.9.2
@@ -1,5 +1,5 @@
-# -*- rdoc -*-
-= NEWS for Ruby 1.9.2
+# -*- rd -*-
+= NEWS
This document is a list of user visible feature changes made between
releases except for bug fixes.
@@ -14,7 +14,7 @@ with all sufficient information, see the ChangeLog file.
* builtin classes
* Array
- * new methods:
+ * new method:
* Array#keep_if
* Array#repeated_combination
* Array#repeated_permutation
@@ -23,11 +23,11 @@ with all sufficient information, see the ChangeLog file.
* Array#select!
* Array#sort_by!
- * extended method:
+ * extended methods:
* Array#{uniq,uniq!,product} can take a block.
* Complex
- * new method:
+ * new methods:
* Complex#rationalize
* Dir
@@ -50,7 +50,7 @@ with all sufficient information, see the ChangeLog file.
* ascii_compatible?
* Enumerable
- * new methods:
+ * New methods:
* Enumerable#chunk
* Enumerable#collect_concat
* Enumerable#each_entry
@@ -65,7 +65,7 @@ with all sufficient information, see the ChangeLog file.
* Enumerator#feed
* StopIteration#result
- * extended method:
+ * extended methods:
* #with_index accepts an optional argument that specifies the
index number to start with, defaulted to 0.
@@ -85,13 +85,14 @@ with all sufficient information, see the ChangeLog file.
* new constants:
* Float::INFINITY
* Float::NAN
- * new method:
+ * new methods:
* Float#rationalize
* File
* new methods:
* File.realpath
* File.realdirpath
+ * File#size
* GC::Profiler
* new method:
@@ -103,14 +104,14 @@ with all sufficient information, see the ChangeLog file.
* Hash#select!
* IO
- * new methods:
+ * new method:
* IO#autoclose=
* IO#autoclose?
* IO#fdatasync
* IO#codepoints
* IO#each_codepoint
- * extended method:
+ * extended methods:
* IO.pipe can take a block.
* new modules:
@@ -119,7 +120,7 @@ with all sufficient information, see the ChangeLog file.
They are used to extend non-blocking exceptions.
* Integer
- * new method:
+ * new methods:
* Integer#rationalize
* Kernel
@@ -128,7 +129,7 @@ with all sufficient information, see the ChangeLog file.
* Kernel#singleton_class
* Kernel#require_relative
- * extended method:
+ * extended methods:
* Kernel#respond_to? can be used to detect methods not implemented.
For example, Process.respond_to?(:fork) returns false on Windows.
@@ -146,15 +147,11 @@ with all sufficient information, see the ChangeLog file.
platforms.
* MatchData
- * new method:
+ * New method:
* MatchData#==
- * Method
- * new method:
- * Method#parameters
-
* NilClass
- * new method:
+ * new methods:
* NilClass#rationalize
* Object
@@ -163,20 +160,18 @@ with all sufficient information, see the ChangeLog file.
* printf() supports %a/%A format.
* Proc
- * new method:
- * Proc#parameters
* extended method:
* Proc#source_location returns location even if receiver is a method
defined by attr_reader / attr_writer / attr_accessor.
* Process
- * extended method:
+ * extended methods:
* Process.spawn accepts [:child, FD] for a redirect target.
* Random (new class to generate pseudo-random numbers)
* Rational
- * new method:
+ * new methods:
* Rational#rationalize
* String
@@ -189,27 +184,22 @@ with all sufficient information, see the ChangeLog file.
* Thread#set_trace_func
* Time
- * extended features:
+ * extended feature:
* time_t restriction is removed to represent before 1901 and after 2038.
Proleptic Gregorian calendar is used for old dates.
* Time.new have optional arguments to specify date with time offset.
* Time#getlocal, Time#localtime have optional time offset argument.
- * new methods:
+ * new method:
* Time#to_r
* Time#subsec
* Time#round
- * incompatible change:
+ * incompatible changes:
* The year argument of Time.{utc,gm,local,mktime} is now interpreted as
the value itself. For example, Time.utc(99) means the year 99 AD,
not 1999 AD.
- * UnboundMethod
- * new method:
- * UnboundMethod#parameters
-
-
* digest
* new methods:
* Digest::Class.base64digest
diff --git a/doc/NEWS-1.9.3 b/doc/NEWS-1.9.3
deleted file mode 100644
index 484660f420..0000000000
--- a/doc/NEWS-1.9.3
+++ /dev/null
@@ -1,341 +0,0 @@
-# -*- rdoc -*-
-= NEWS for Ruby 1.9.3
-
-This document is a list of user visible feature changes made between
-releases except for bug fixes.
-
-Note that each entry is kept so brief that no reason behind or
-reference information is supplied with. For a full list of changes
-with all sufficient information, see the ChangeLog file.
-
-== Changes since the 1.9.2 release
-=== License
-
-* Ruby's License is changed from a dual license with GPLv2
- to a dual license with 2-clause BSDL.
-
-=== Known platform dependent issues
-==== OS X Lion
-
-* You have to configure ruby with '--with-gcc=gcc-4.2' if you're using
- Xcode 4.1, or, if you're using Xcode 4.2, you have to configure ruby
- with '--with-gcc=clang'.
-
-=== C API updates
-
-* rb_scan_args() is enhanced with support for option hash argument
- extraction.
-
-* ruby_vm_at_exit() added. This enables extension libs to hook a VM
- termination.
-
-* rb_reserved_fd_p() added. If you want to close all file descriptors,
- check using this API. [ruby-core:37759]
-
-=== Library updates (outstanding ones only)
-
-* builtin classes
-
- * ARGF
- * new methods:
- * ARGF.print
- * ARGF.printf
- * ARGF.putc
- * ARGF.puts
- * ARGF.read_nonblock
- * ARGF.to_write_io
- * ARGF.write
-
- * Array
- * extended method:
- * Array#pack supports endian modifiers
-
- * Bignum
- * Multiplication algorithm for Bignums with a large number of digits over
- 150 BDIGITs is changed in order to reduce its calculation time.
- Now such large Bignums are multiplied by using Toom-3 algorithm.
-
- * Encoding
- * new encodings:
- * CP950
- * CP951
- * UTF-16
- * UTF-32
- * change alias:
- * SJIS is Windows-31J
-
- * File
- * new constant:
- * File::NULL
- name of NULL device.
- * File::DIRECT
- name of O_DIRECT.
-
- * IO
- * extended method:
- * IO#putc supports multibyte characters
- * new methods:
- * IO#advise
- * IO.write(name, string, [offset] )
- Write `string` to file `name`.
- Opposite with File.read.
- * IO.binwrite(name, string, [offset] )
- binary version of IO.write.
-
- * Kernel
- * move #__id__ to BasicObject.
- * extended method:
- * Kernel#rand supports range argument
-
- * Module
- * new methods:
- * Module#private_constant
- * Module#public_constant
-
- * Random
- * extended method:
- * Random.rand supports range argument
-
- * String
- * extended method:
- * String#unpack supports endian modifiers
- * new method:
- * String#prepend
- * String#byteslice
-
- * Time
- * extended method:
- * Time#strftime supports %:z and %::z.
-
- * Process
- * Process#maxgroups and Process#maxgroups= now raise NotImplementedError if
- the platform don't support supplementary groups concept.
-
-* bigdecimal
-
- * BigDecimal#power and BigDecimal#** support non-integral exponent.
-
- * Kernel.BigDecimal and BigDecimal.new now accept instances of Integer,
- Rational, Float, and BigDecimal. If you pass a Rational or a Float to
- them, you must specify the precision to produce the digits of a BigDecimal.
-
- * The behavior of BigDecimal#coerce with a Rational is changed. It uses
- the precision of the receiver BigDecimal to produce the digits of a
- BigDecimal from the given Rational.
-
-* bigdecimal/util
-
- * BigDecimal#to_d and Integer#to_d are added.
-
- * Float#to_d accepts a precision.
-
- * Rational#to_d raises ArgumentError when passing zero or negative
- precision.
-
- * Rational#to_d
-
- * Zero and an implicit precision is deprecated.
- This feature is removed at the next release of bigdecimal.
-
- * A negative precision isn't supported.
- Be careful it is an incompatible change.
-
-* date
-
- * Accepts flonum explicitly with limitations.
- * If the given offset is flonum, DateTime assumes its precision is
- at most second.
-
- DateTime.new(2001,2,3,0,0,0,3.0/24) ==
- DateTime.new(2001,2,3,0,0,0,'+03:00')
- #=> true
-
- * If the given operand for -/+ is flonum, DateTime assumes its
- precision is at most nanosecond.
-
- DateTime.new(2001,2,3) + 0.5 == DateTime.new(2001,2,3,12)
- #=> true
-
- * Precision of offset is always at most second.
-
- Rational('0.5') == Rational('0.500001') #=> false
- DateTime.new(2001,2,3,0,0,0,Rational('0.5')) ==
- DateTime.new(2001,2,3,0,0,0,Rational('0.500001'))
- #=> true
-
- * Ignores long offset and far reform day (with warning).
-
- * Now accepts only:
-
- -1<=offset<=1 (-24:00..+24:00)
- 2298874<=start<=2426355 or -/+oo
- (proleptic Gregorian/Julian mean -/+oo)
-
- * A method strftime cannot produce huge output (same as Time's one).
-
- * Even though Date/DateTime can handle far dates, the following causes
- an exception.
-
- DateTime.new(1<<10000).strftime('%Y') # Errno::ERANGE
-
- * Changed the format of inspect.
- * Changed the format of marshal (but, can load old dumps).
-
-* io/console
- * new methods:
- * IO#noecho {|io| }
- * IO#echo=
- * IO#echo?
- * IO#raw {|io| }
- * IO#raw!
- * IO#getch
- * IO#winsize
- * IO.console
-
-* json
- * updated to v1.5.4.
-
-* matrix
- * new classes:
- * Matrix::EigenvalueDecomposition
- * Matrix::LUPDecomposition
- * new methods:
- * Matrix#diagonal?
- * Matrix#eigen
- * Matrix#eigensystem
- * Matrix#hermitian?
- * Matrix#lower_triangular?
- * Matrix#lup
- * Matrix#lup_decomposition
- * Matrix#normal?
- * Matrix#orthogonal?
- * Matrix#permutation?
- * Matrix#round
- * Matrix#symmetric?
- * Matrix#unitary?
- * Matrix#upper_triangular?
- * Matrix#zero?
- * Vector#magnitude, #norm
- * Vector#normalize
- * extended methods:
- * Matrix#each and #each_with_index can iterate on a subset of the elements
- * Matrix#find_index returns [row, column] and can iterate on a subset
- of the elements
- * Matrix#** implements Numeric exponents (using the eigensystem)
- * Matrix.zero can build rectangular matrices
-
-* minitest
- * Minitest has been updated to version 2.2.2.
- * For full details, see https://github.com/seattlerb/minitest/blob/master/History.txt
-
-* net/http
- * SNI (Server Name Indication) supported for HTTPS.
-
- * Allow to configure to wait server returning '100 continue' response
- before sending HTTP request body. Set Net::HTTP#continue_timeout AND pass
- 'expect' => '100-continue' to a extra HTTP header.
-
- For example, the following code sends HTTP header and waits for getting
- '100 continue' response before sending HTTP request body. When 0.5 [sec]
- timeout occurs or the server send '100 continue', the client sends HTTP
- request body.
- http.continue_timeout = 0.5
- http.request_post('/continue', 'body=BODY', 'expect' => '100-continue')
-
- * new method:
- * Net::HTTPRequest#set_form): Added to support
- both application/x-www-form-urlencoded and multipart/form-data.
-
-* objspace
- * new method:
- * ObjectSpace::memsize_of_all
-
-* openssl
- * PKey::RSA and PKey::DSA now use the generic X.509 encoding scheme
- (e.g. used in a X.509 certificate's Subject Public Key Info) when
- exporting public keys to DER or PEM. Backward compatibility is
- ensured by (already existing) fallbacks during creation.
- * OpenSSL::ASN1::Constructive#new and OpenSSL::ASN1::Primitive#new
- (and the constructors of their sub-classes) will no longer force
- tagging to be set to :EXPLICIT when tag and/or tag_class are passed
- as parameters. tagging must be set explicitly.
- * Support for infinite length encodings via infinite_length attribute.
- * OpenSSL::PKey.read( file | string [, pwd] ) allows to read arbitrary
- public/private keys in DER-/PEM-encoded form with an optional password
- for encrypted PEM encodings.
- * Add new method OpenSSL::X509::Name#hash_old as a wrapper of
- X509_NAME_hash_old() defined from OpenSSL 1.0.0. It returns OpenSSL 0.9.8
- compatible hash value.
-
-* optparse
- * support for bash/zsh completion.
-
-* Rake
- * Rake has been upgraded from 0.8.7 to 0.9.2.2. For full release notes see
- https://github.com/jimweirich/rake/blob/master/CHANGES
-
-* RDoc
- * RDoc has been upgraded to version 3.9.4. For full release notes see
- http://docs.seattlerb.org/rdoc/History_txt.html
-
-* rexml
- * Support Ruby native encoding mechanism and iconv dependency is dropped.
-
-* RubyGems
- * RubyGems has been upgraded to version 1.8.10. For full release notes see
- http://rubygems.rubyforge.org/rubygems-update/History_txt.html
-
-* stringio
- * extended method:
- * StringIO#set_encoding can get 2nd argument and optional hash.
-
-* test/unit
- * New arguments:
- * -j N, --jobs=N: Allow run N testcases at once.
- * --jobs-status: Show status of jobs when parallel running.
- * --no-retry: Don't retry testcases which failed when parallel running.
- * --ruby=RUBY: path to ruby for job(worker) process. optional.
- * --hide-skip: Hide skip messages. You'll see the number of skips at end of
- test result.
-
-* uri
- * new methods:
- * URI::Generic#hostname
- * URI::Generic#hostname=
-
-* webrick
- * new method:
- * WEBrick::HTTPRequest#continue for generating '100 continue' response.
- * new logging directive:
- * %{remote}p for remote (client) port number.
-
-* yaml
- * The default YAML engine is now Psych. You may downgrade to syck by setting
- YAML::ENGINE.yamler = 'syck'.
-
-* zlib
- * new methods:
- * Zlib.deflate
- * Zlib.inflate
-
-* FileUtils
- * extended method:
- * FileUtils#chmod supports symbolic mode argument.
-
-=== Language changes
-
-* Regexps now support Unicode 6.0. (new characters and scripts)
-
-* [experimental] Regexps now support Age property.
- Unlike Perl, current implementation takes interpretation of the
- interpretation of UTS #18.
- http://www.unicode.org/reports/tr18/
-
-* Turning on/off indentation warnings with directives.
- ("# -*- warn-indent: true -*-" / "# -*- warn-indent: false -*-")
-
-=== Compatibility issues (excluding feature bug fixes)
-
- * Rational#to_d
-
- See above.
diff --git a/doc/etc.rd b/doc/etc.rd
new file mode 100644
index 0000000000..b69f9884ad
--- /dev/null
+++ b/doc/etc.rd
@@ -0,0 +1,75 @@
+# etc.rd - -*- mode: rd; coding: us-ascii -*- created at: Fri Jul 14 00:47:15 JST 1995
+=begin
+
+= Etc(Module)
+
+The module to retrieve information from running OS. All operations
+defined in this module are module functions, so that you can include
+Etc module into your class.
+
+== Module Function
+
+--- getlogin
+
+ returns login name of the user. It this fails, try getpwuid().
+
+--- getpwnam(name)
+
+ searches in /etc/passwd file (or equivalent database), and
+ returns password entry for the user. The return value is an
+ passwd structure, which has members described below.
+
+ struct passwd
+ name # user name(string)
+ passwd # encrypted password(string)
+ uid # user ID(integer)
+ gid # group ID(integer)
+ gecos # gecos field(string)
+ dir # home directory(string)
+ shell # login shell(string)
+ # members below are optional
+ change # password change time(integer)
+ quota # quota value(integer)
+ age # password age(integer)
+ class # user access class(string)
+ comment # comment(string)
+ expire # account expiration time(integer)
+ end
+
+ See getpwnam(3) for detail.
+
+--- getpwuid([uid])
+
+ returns passwd entry for the specified user id. If uid is
+ ommitted, use the value from getuid(). See getpwuid(3) for
+ detail.
+
+--- getgrgid(gid)
+
+ searches in /etc/group file (or equivalent database), and
+ returns group entry for the group id. The return value is an
+ group structure, which has members described below.
+
+ struct group
+ name # group name(string)
+ passwd # group password(string)
+ gid # group ID(integer)
+ mem # array of the group member names
+ end
+
+ See getgrgid(3) for detail.
+
+--- getgrnam(name)
+
+ returns the group entry for the specified name. The return
+ value is the group structure. See getgrnam(3) for detail.
+
+--- group
+
+ iterates over all group entries.
+
+--- passwd
+
+ iterates over all passwd entries.
+
+=end
diff --git a/doc/etc.rd.ja b/doc/etc.rd.ja
index b36e05c994..39a1efbff1 100644
--- a/doc/etc.rd.ja
+++ b/doc/etc.rd.ja
@@ -1,75 +1,75 @@
# etc.rd.ja - -*- mode: rd; coding: euc-jp; -*- created at: Fri Jul 14 00:47:15 JST 1995
=begin
-= Etc(モジュール)
+= Etc(⥸塼)
-実行しているOSからの情報を得るためのモジュール.クラスにインクルード
-して使うこともできる.
+¹ԤƤOSξ뤿Υ⥸塼롥饹˥󥯥롼
+ƻȤȤǤ롥
== Module Function
--- getlogin
- 自分のlogin名を返す.これが失敗した場合はgetpwuid()を用いると
- 良い.
+ ʬlogin֤̾줬Ԥgetpwuid()Ѥ
+ ɤ
--- getpwnam(name)
- /etc/passwdファイル(あるいはDBMファイルやNISデータベース)を検
- 索し,nameの名前を持つpasswdエントリを返す.戻り値はpasswd構造
- 体で以下のメンバを持つ.
+ /etc/passwdե(뤤DBMեNISǡ١)
+ name̾passwdȥ֤ͤpasswd¤
+ ΤǰʲΥФġ
struct passwd
- name # ユーザ名(文字列)
- passwd # パスワード(文字列)
- uid # ユーザID(整数)
- gid # グループID(整数)
- gecos # gecosフィールド(文字列)
- dir # ホームディレクトリ(文字列)
- shell # ログインシェル(文字列)
- # 以降のメンバはシステムによっては提供されない.
- change # パスワード変更時間(整数)
- quota # クォータ(整数)
- age # エージ(整数)
- class # ユーザアクセスクラス(文字列)
- comment # コメント(文字列)
- expire # アカウント有効期限(整数)
+ name # 桼̾(ʸ)
+ passwd # ѥ(ʸ)
+ uid # 桼ID()
+ gid # 롼ID()
+ gecos # gecosե(ʸ)
+ dir # ۡǥ쥯ȥ(ʸ)
+ shell # 󥷥(ʸ)
+ # ʹߤΥФϥƥˤäƤ󶡤ʤ
+ change # ѥѹ()
+ quota # ()
+ age # ()
+ class # 桼饹(ʸ)
+ comment # (ʸ)
+ expire # ͭ()
end
- 詳細はgetpwnam(3)を参照のこと.
+ ܺ٤getpwnam(3)򻲾ȤΤȡ
--- getpwuid([uid])
- uidをユーザIDとするpasswdエントリを返す.戻り値はgetpwnam()と
- 同様である.引数を省略した場合にはgetuid()の値を用いる.詳細は
- getpwuid(3)を参照のこと.
+ uid桼IDȤpasswdȥ֤ͤgetpwnam()
+ ƱͤǤ롥άˤgetuid()ͤѤ롥ܺ٤
+ getpwuid(3)򻲾ȤΤȡ
--- getgrgid(gid)
- /etc/groupファイル(あるいは…getpwnam参照)を検索し,gidをグルー
- プIDとするグループエントリを返す.戻り値はgroup構造体で以下の
- メンバを持つ.
+ /etc/groupե(뤤ϡgetpwnam)򸡺gid򥰥롼
+ IDȤ륰롼ץȥ֤ͤgroup¤Τǰʲ
+ Фġ
struct group
- name # グループ名(文字列)
- passwd # グループのパスワード(文字列)
- gid # グループID(整数)
- mem # グループメンバ名の配列
+ name # 롼̾(ʸ)
+ passwd # 롼פΥѥ(ʸ)
+ gid # 롼ID()
+ mem # 롼ץ̾
end
- 詳細はgetgrgid(3)を参照のこと.
+ ܺ٤getgrgid(3)򻲾ȤΤȡ
--- getgrnam(name)
- nameという名前のグループエントリを返す.戻り値はgetgrgid()と同
- 様である.詳細はgetgrnam(3)を参照.
+ nameȤ̾Υ롼ץȥ֤ͤgetgrgid()Ʊ
+ ͤǤ롥ܺ٤getgrnam(3)򻲾ȡ
--- group
- 全てのグループエントリを順にアクセスするためのイテレータ.
+ ƤΥ롼ץȥ˥뤿Υƥ졼
--- passwd
- 全てのpasswdエントリを順にアクセスするためのイテレータ.
+ Ƥpasswdȥ˥뤿Υƥ졼
=end
diff --git a/doc/forwardable.rd b/doc/forwardable.rd
new file mode 100644
index 0000000000..0eca25b90a
--- /dev/null
+++ b/doc/forwardable.rd
@@ -0,0 +1,83 @@
+ -- forwardable.rb
+
+ $Release Version: 1.1 $
+ $Revision$
+ Original version by Tosh
+
+=begin
+
+= Forwardable
+
+A Module to define delegations for selected methods to a class.
+
+== Usage
+
+Using through extending the class.
+
+ class Foo
+ extend Forwardable
+
+ def_delegators("@out", "printf", "print")
+ def_delegators(:@in, :gets)
+ def_delegator(:@contents, :[], "content_at")
+ end
+ f = Foo.new
+ f.printf ...
+ f.gets
+ f.content_at(1)
+
+== Methods
+
+--- Forwardable#def_instance_delegators(accessor, *methods)
+
+ adding the delegations for each method of ((|methods|)) to
+ ((|accessor|)).
+
+--- Forwardable#def_instance_delegator(accessor, method, ali = method)
+
+ adding the delegation for ((|method|)) to ((|accessor|)). When
+ you give optional argument ((|ali|)), ((|ali|)) is used as the
+ name of the delegation method, instead of ((|method|)).
+
+--- Forwardable#def_delegators(accessor, *methods)
+
+ the alias of ((|Forwardable#def_instance_delegators|)).
+
+--- Forwardable#def_delegator(accessor, method, ali = method)
+
+ the alias of ((|Forwardable#def_instance_delegator|)).
+
+= SingleForwardable
+
+a Module to define delegations for selected methods to an object.
+
+== Usage
+
+Using through extending the object.
+
+ g = Goo.new
+ g.extend SingleForwardable
+ g.def_delegator("@out", :puts)
+ g.puts ...
+
+== Methods
+
+--- SingleForwardable#def_singleton_delegators(accessor, *methods)
+
+ adding the delegations for each method of ((|methods|)) to
+ ((|accessor|)).
+
+--- SingleForwardable#def_singleton_delegator(accessor, method, ali = method)
+
+ adding the delegation for ((|method|)) to ((|accessor|)). When
+ you give optional argument ((|ali|)), ((|ali|)) is used as the
+ name of the delegation method, instead of ((|method|)).
+
+--- SingleForwardable#def_delegators(accessor, *methods)
+
+ the alias of ((|SingleForwardable#def_instance_delegators|)).
+
+--- SingleForwardable#def_delegator(accessor, method, ali = method)
+
+ the alias of ((|SingleForwardable#def_instance_delegator|)).
+=end
diff --git a/doc/forwardable.rd.ja b/doc/forwardable.rd.ja
index 6a5ff2e236..48186b111f 100644
--- a/doc/forwardable.rd.ja
+++ b/doc/forwardable.rd.ja
@@ -5,11 +5,11 @@
=begin
= Forwardable
-クラスに対しメソッドの委譲機能を定義します.
+饹Ф᥽åɤΰѾǽޤ.
-== 使い方
+== Ȥ
-クラスに対してextendして使います.
+饹ФextendƻȤޤ.
class Foo
extend Forwardable
@@ -23,58 +23,58 @@
f.gets
f.content_at(1)
-== メソッド
+== ᥽å
--- Forwardable#def_instance_delegators(accessor, *methods)
- ((|methods|))で渡されたメソッドのリストを((|accessorに|))委譲する
- ようにします.
+ ((|methods|))Ϥ줿᥽åɤΥꥹȤ((|accessor|))Ѿ
+ 褦ˤޤ.
--- Forwardable#def_instance_delegator(accessor, method, ali = method)
- ((||method|))で渡されたメソッドを((|accessor|))に委譲するようにし
- ます. ((|ali|))が引数として渡されたときは, メソッド((|ali|))が呼ば
- れたときには, ((|accessor|))に対し((|method|))を呼び出します.
+ ((||method|))Ϥ줿᥽åɤ((|accessor|))˰Ѿ褦ˤ
+ ޤ. ((|ali|))ȤϤ줿Ȥ, ᥽å((|ali|))Ƥ
+ 줿Ȥˤ, ((|accessor|))Ф((|method|))ƤӽФޤ.
--- Forwardable#def_delegators(accessor, *methods)
- ((|Forwardable#def_instance_delegators|))の別名です.
+ ((|Forwardable#def_instance_delegators|))̾Ǥ.
--- Forwardable#def_delegator(accessor, method, ali = method)
- ((|Forwardable#def_instance_delegator|))の別名です.
+ ((|Forwardable#def_instance_delegator|))̾Ǥ.
= SingleForwardable
-オブジェクトに対し, メソッドの委譲機能を定義します.
+֥ȤФ, ᥽åɤΰѾǽޤ.
-== 使い方
+== Ȥ
-オブジェクトに対して((|extend|))して使います.
+֥ȤФ((|extend|))ƻȤޤ.
g = Goo.new
g.extend SingleForwardable
g.def_delegator("@out", :puts)
g.puts ...
-== メソッド
+== ᥽å
--- SingleForwardable#def_singleton_delegators(accessor, *methods)
- ((|methods|))で渡されたメソッドのリストを((|accessor|))に委譲する
- ようにします.
+ ((|methods|))Ϥ줿᥽åɤΥꥹȤ((|accessor|))˰Ѿ
+ 褦ˤޤ.
--- SingleForwardable#def_singleton_delegator(accessor, method, ali = method)
- ((|method|))で渡されたメソッドを((|accessor|))に委譲するようにしま
- す. ((|ali|))が引数として渡されたときは, メソッド((|ali|))が呼ばれ
- たときには, ((|accessor|))に対し((|method|))を呼び出します.
+ ((|method|))Ϥ줿᥽åɤ((|accessor|))˰Ѿ褦ˤ
+ . ((|ali|))ȤϤ줿Ȥ, ᥽å((|ali|))ƤФ
+ Ȥˤ, ((|accessor|))Ф((|method|))ƤӽФޤ.
--- SingleForwardable#def_delegators(accessor, *methods)
- ((|SingleForwardable#def_singleton_delegators|))の別名です.
+ ((|SingleForwardable#def_singleton_delegators|))̾Ǥ.
--- SingleForwardable#def_delegator(accessor, method, ali = method)
- ((|SingleForwardable#def_singleton_delegator|))の別名です.
+ ((|SingleForwardable#def_singleton_delegator|))̾Ǥ.
=end
diff --git a/doc/globals.rdoc b/doc/globals.rdoc
deleted file mode 100644
index 060764f54e..0000000000
--- a/doc/globals.rdoc
+++ /dev/null
@@ -1,68 +0,0 @@
-# -*- mode: rdoc; coding: utf-8; fill-column: 74; -*-
-
-== Pre-defined variables
-
-$!:: The exception information message set by 'raise'.
-$@:: Array of backtrace of the last exception thrown.
-$&:: The string matched by the last successful match.
-$`:: The string to the left of the last successful match.
-$':: The string to the right of the last successful match.
-$+:: The highest group matched by the last successful match.
-$1:: The Nth group of the last successful match. May be > 1.
-$~:: The information about the last match in the current scope.
-$=:: The flag for case insensitive, nil by default.
-$/:: The input record separator, newline by default.
-$\:: The output record separator for the print and IO#write. Default is nil.
-$,:: The output field separator for the print and Array#join.
-$;:: The default separator for String#split.
-$.:: The current input line number of the last file that was read.
-$<:: The virtual concatenation file of the files given on command line (or from $stdin if no files were given).
-$>:: The default output for print, printf. $stdout by default.
-$_:: The last input line of string by gets or readline.
-$0:: Contains the name of the script being executed. May be assignable.
-$*:: Command line arguments given for the script sans args.
-$$:: The process number of the Ruby running this script.
-$?:: The status of the last executed child process.
-$::: Load path for scripts and binary modules by load or require.
-$":: The array contains the module names loaded by require.
-$DEBUG:: The debug flag, which is set by the -d switch. Enabling debug
- output prints each exception raised to $stderr (but not its
- backtrace). Setting this to a true value enables debug output as
- if -d were given on the command line. Setting this to a false
- value disables debug output.
-$FILENAME:: Current input file from $<. Same as $<.filename.
-$LOAD_PATH:: The alias to the $:.
-$stderr:: The current standard error output.
-$stdin:: The current standard input.
-$stdout:: The current standard output.
-$VERBOSE:: The verbose flag, which is set by the -w or -v switch. Setting
- this to a true value enables warnings as if -w or -v were given
- on the command line. Setting this to nil disables warnings,
- including from Kernel#warn.
-$-0:: The alias to $/.
-$-a:: True if option -a is set. Read-only variable.
-$-d:: The alias of $DEBUG. See $DEBUG above for further discusison.
-$-F:: The alias to $;.
-$-i:: In in-place-edit mode, this variable holds the extension, otherwise nil.
-$-I:: The alias to $:.
-$-l:: True if option -l is set. Read-only variable.
-$-p:: True if option -p is set. Read-only variable.
-$-v:: An alias of $VERBOSE. See $VERBOSE above for further discussion.
-$-w:: An alias of $VERBOSE. See $VERBOSE above for further discussion.
-
-== Pre-defined global constants
-
-TRUE:: The typical true value.
-FALSE:: The false itself.
-NIL:: The nil itself.
-STDIN:: The standard input. The default value for $stdin.
-STDOUT:: The standard output. The default value for $stdout.
-STDERR:: The standard error output. The default value for $stderr.
-ENV:: The hash contains current environment variables.
-ARGF:: The alias to the $<.
-ARGV:: The alias to the $*.
-DATA:: The file object of the script, pointing just after __END__.
-RUBY_VERSION:: The ruby version string (VERSION was deprecated).
-RUBY_RELEASE_DATE:: The release date string.
-RUBY_PLATFORM:: The platform identifier.
-
diff --git a/doc/irb/irb-tools.rd.ja b/doc/irb/irb-tools.rd.ja
index 3c95faeb8a..7711f96e08 100644
--- a/doc/irb/irb-tools.rd.ja
+++ b/doc/irb/irb-tools.rd.ja
@@ -1,70 +1,70 @@
-irb関連おまけコマンドとライブラリ
+irbϢޤޥɤȥ饤֥
$Release Version: 0.7.1 $
$Revision$
by Keiju ISHITSUKA(Nihon Rational Co.,Ltd.)
=begin
-:コマンド:
+:ޥ:
* rtags -- ruby tags command
-:関数ライブラリ:
+:ؿ饤֥:
* xmp -- irb version of gotoken xmp-function
-:クラスライブラリ:
+:饹饤֥:
* frame.rb -- frame tracer
* completion.rb -- irb completor
= rtags
-rtagsはemacs及びvi用の, TAGファイルをつくるコマンドです.
+rtagsemacsڤviѤ, TAGեĤ륳ޥɤǤ.
-== 使い方
+== Ȥ
rtags [-vi] file....
-カレントディレクトリにemacs用のTAGSファイルができます. -viオプションを
-つけた時にはvi用のtagsファイルを作成します.
+ȥǥ쥯ȥemacsѤTAGSե뤬Ǥޤ. -viץ
+ĤˤviѤtagsեޤ.
-emacsの場合, 通常のetags.elがそのまま使えます. 検索可能なのは,
+emacsξ, ̾etags.elΤޤ޻Ȥޤ. ǽʤΤ,
-* クラス
-* メソッド
-* 特異メソッド
+* 饹
+* ᥽å
+* ðۥ᥽å
* alias
-* attrで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る)
-* attr_XXXで宣言されたアクセサ(パラメータがシンボルか文字列リテラルに限る)
+* attr줿(ѥ᡼ܥ뤫ʸƥ˸¤)
+* attr_XXX줿(ѥ᡼ܥ뤫ʸƥ˸¤)
-です.
+Ǥ.
-Cなどで使っているのと違うのは, コンプリーションに関する部分で,
+CʤɤǻȤäƤΤȰ㤦Τ, ץ꡼˴ؤʬ,
-関数名は,
+ؿ̾,
- 関数名(
+ ؿ̾(
-クラスは,
+饹,
- ::クラス名::....::クラス名
+ ::饹̾::....::饹̾
-メソッドは,
+᥽åɤ,
- ::クラス名::....::クラス名#メソッド名
+ ::饹̾::....::饹̾#᥽å̾
-特異メソッド(クラスメソッド)は
+ðۥ᥽å(饹᥽å)
- ::クラス名::....::クラス名.メソッド名
+ ::饹̾::....::饹̾.᥽å̾
-でコンプリーションを行なうところです.
+ǥץ꡼ԤʤȤǤ.
= xmp.rb
-ごとけんxmpの上位互換バージョンです. ただ, 非常に重いのでごとけんxmpで
-は対応できない時に, 使用すると良いでしょう.
+Ȥxmpξ̸ߴСǤ. , ˽ŤΤǤȤxmp
+бǤʤ, ѤɤǤ礦.
-== 使い方
+== Ȥ
-=== 関数として使う.
+=== ؿȤƻȤ.
require "irb/xmp"
xmp <<END
@@ -77,10 +77,10 @@ Cなどで使っているのと違うのは, コンプリーションに関す
foo
==>1
-=== XMPインスタンスを用いる.
+=== XMP󥹥󥹤Ѥ.
-この場合は, XMPがコンテキスト情報を持つので, 変数の値などを保持してい
-ます.
+ξ, XMPƥȾĤΤ, ѿͤʤɤݻƤ
+ޤ.
require "irb/xmp"
xmp = XMP.new
@@ -99,50 +99,50 @@ Cなどで使っているのと違うのは, コンプリーションに関す
foo
==>1
-== コンテキストに関して
+== ƥȤ˴ؤ
-XMPメソッド群のコンテキストは, 呼び出す前のコンテキストで評価されます.
-明示的にコンテキストを指定するとそのコンテキストで評価します.
+XMP᥽åɷΥƥȤ, ƤӽФΥƥȤɾޤ.
+Ū˥ƥȤꤹȤΥƥȤɾޤ.
-例:
+:
xmp "foo", an_binding
-:注:
-マルチスレッドには対応していません.
+::
+ޥåɤˤбƤޤ.
= frame.rb
-現在実行中のフレーム情報を取り扱うためのクラスです.
+߼¹Υե졼갷Υ饹Ǥ.
* IRB::Frame.top(n = 0)
- 上からn番目のコンテキストを取り出します. nは0が最上位になります.
+ 夫nܤΥƥȤФޤ. n0Ǿ̤ˤʤޤ.
* IRB::Frame.bottom(n = 0)
- 下からn番目のコンテキストを取り出します. nは0が最下位になります.
+ nܤΥƥȤФޤ. n0Dz̤ˤʤޤ.
* IRB::Frame.sender
- センダになっているオブジェクトを取り出します. センダとは, そのメソッ
- ドを呼び出した側のselfのことです.
+ ˤʤäƤ륪֥ȤФޤ. Ȥ, Υ᥽
+ ɤƤӽФ¦selfΤȤǤ.
-:注:
-set_trace_funcを用いてRubyの実行をトレースしています. マルチスレッドに
-は対応していません.
+::
+set_trace_funcѤRubyμ¹Ԥȥ졼Ƥޤ. ޥåɤ
+бƤޤ.
= completion.rb
-irbのcompletion機能を提供するものです.
+irbcompletionǽ󶡤ΤǤ.
-== 使い方
+== Ȥ
% irb -r irb/completion
-とするか, ~/.irbrc 中に
+Ȥ뤫, ~/.irbrc
require "irb/completion"
-を入れてください. irb実行中に require "irb/completion" してもよいです.
+Ƥ. irb¹ require "irb/completion" Ƥ褤Ǥ.
-irb実行中に (TAB) を押すとコンプレーションします.
+irb¹ (TAB) 򲡤ȥץ졼󤷤ޤ.
-トップレベルで(TAB)を押すとすべての構文要素, クラス, メソッドの候補がで
-ます. 候補が唯一ならば完全に補完します.
+ȥåץ٥(TAB)򲡤Ȥ٤Ƥιʸ, 饹, ᥽åɤθ䤬
+ޤ. 䤬ͣʤд䴰ޤ.
irb(main):001:0> in
in inspect instance_eval
@@ -153,8 +153,8 @@ irb実行中に (TAB) を押すとコンプレーションします.
irb(main):002:0> foo = Object.new
#<Object:0x4027146c>
- ((|変数名.|))の後に(TAB)を押すと, そのオブジェクトのメソッド一覧がでま
- す.
+ ((|ѿ̾.|))θ(TAB)򲡤, Υ֥ȤΥ᥽åɰǤ
+ .
irb(main):003:0> foo.
foo.== foo.frozen? foo.protected_methods
diff --git a/doc/irb/irb.rd b/doc/irb/irb.rd
new file mode 100644
index 0000000000..75274006e1
--- /dev/null
+++ b/doc/irb/irb.rd
@@ -0,0 +1,391 @@
+irb -- interactive ruby
+ $Release Version: 0.9 $
+ $Revision$
+ by Keiju ISHITSUKA(keiju@ishitsuka.com)
+ by gotoken-san who is original translater from japanese version
+
+=begin
+= What is irb?
+
+irb stands for `interactive ruby'. irb is a tool to execute interactively
+ruby expressions read from stdin.
+
+= Invoking
+
+ % irb
+
+= Usage
+
+Use of irb is easy if you know ruby. Executing irb, prompts are
+displayed as follows. Then, enter expression of ruby. A input is
+executed when it is syntacticaly completed.
+
+ dim% irb
+ irb(main):001:0> 1+2
+ 3
+ irb(main):002:0> class Foo
+ irb(main):003:1> def foo
+ irb(main):004:2> print 1
+ irb(main):005:2> end
+ irb(main):006:1> end
+ nil
+ irb(main):007:0>
+
+And, Readline extesion module can be used with irb. Using Readline
+is the standard default action if Readline is installed.
+
+= Command line option
+
+ irb.rb [options] file_name opts
+ options:
+ -f suppress read ~/.irbrc
+ -m bc mode (fraction or matrix are available)
+ -d set $DEBUG to true (same as `ruby -d')
+ -Kc same as `ruby -Kc'
+ -r load-module same as `ruby -r'
+ --verbose command input is echoed(default)
+ --noverbose command input isn't echoed
+ --echo commands are echoed immediately before execution(default)
+ --noecho commands aren't echoed immediately before execution
+ --inspect uses `inspect' for output (the default except bc mode)
+ --noinspect doesn't uses inspect for output
+ --readline uses Readline extension module
+ --noreadline doesn't use Readline extension module
+ --prompt prompt-mode
+ --prompt-mode prompt-mode
+ switches prompt mode. Pre-defined prompt modes are
+ `default', `simple', `xmp' and `inf-ruby'
+
+ --inf-ruby-mode uses prompt appreciate for inf-ruby-mode on emacs.
+ Suppresses --readline.
+ --simple-prompt simple prompt mode
+ --noprompt no prompt
+ --tracer display trace for each execution of commands.
+ --back-trace-limit n
+ displayes backtrace top n and tail n. The default
+ value is 16.
+ --irb_debug n sets internal debug level to n (It shouldn't be used)
+ -v, --version prints the version of irb
+
+= Configurations
+
+irb reads `~/.irbrc' when it is invoked. If `~/.irbrb' doesn't exist
+irb try to read in the order `.irbrc', `irb.rc', `_irbrc' then `$irbrc'.
+
+The following is altanative to the command line option. To use them
+type as follows in an irb session.
+
+ IRB.conf[:IRB_NAME]="irb"
+ IRB.conf[:MATH_MODE]=false
+ IRB.conf[:USE_TRACER]=false
+ IRB.conf[:USE_LOADER]=false
+ IRB.conf[:IGNORE_SIGINT]=true
+ IRB.conf[:IGNORE_EOF]=false
+ IRB.conf[:INSPECT_MODE]=nil
+ IRB.conf[:IRB_RC] = nil
+ IRB.conf[:BACK_TRACE_LIMIT]=16
+ IRB.conf[:USE_LOADER] = false
+ IRB.conf[:USE_READLINE] = nil
+ IRB.conf[:USE_TRACER] = false
+ IRB.conf[:IGNORE_SIGINT] = true
+ IRB.conf[:IGNORE_EOF] = false
+ IRB.conf[:PROMPT_MODE] = :DEFALUT
+ IRB.conf[:PROMPT] = {...}
+ IRB.conf[:DEBUG_LEVEL]=0
+ IRB.conf[:VERBOSE]=true
+
+== Customizing prompt
+
+To costomize the prompt you set a variable
+
+ IRB.conf[:PROMPT]
+
+For example, describe as follows in `.irbrc'.
+
+ IRB.conf[:PROMPT][:MY_PROMPT] = { # name of prompt mode
+ :PROMPT_I => nil, # normal prompt
+ :PROMPT_S => nil, # prompt for continuated strings
+ :PROMPT_C => nil, # prompt for continuated statement
+ :RETURN => " ==>%s\n" # format to return value
+ }
+
+Then, invoke irb with the above prompt mode by
+
+ % irb --prompt my-prompt
+
+Or add the following in `.irbrc'.
+
+ IRB.conf[:PROMPT_MODE] = :MY_PROMPT
+
+Constants PROMPT_I, PROMPT_S and PROMPT_C specifies the format.
+In the prompt specification, some special strings are available.
+
+ %N command name which is running
+ %m to_s of main object (self)
+ %M inspect of main object (self)
+ %l type of string(", ', /, ]), `]' is inner %w[...]
+ %NNi indent level. NN is degits and means as same as printf("%NNd").
+ It can be ommited
+ %NNn line number.
+ %% %
+
+For instance, the default prompt mode is defined as follows:
+
+IRB.conf[:PROMPT_MODE][:DEFAULT] = {
+ :PROMPT_I => "%N(%m):%03n:%i> ",
+ :PROMPT_S => "%N(%m):%03n:%i%l ",
+ :PROMPT_C => "%N(%m):%03n:%i* ",
+ :RETURN => "%s\n"
+}
+
+RETURN is used to printf.
+
+== Configurating subirb
+
+The command line option or IRB.conf specify the default behavior of
+(sub)irb. On the other hand, each conf of in the next sction `6. Command'
+is used to individually configurate (sub)irb.
+
+If proc is set to IRB.conf[:IRB_RC], its subirb will be invoked after
+execution of that proc under giving the context of irb as its
+aregument. By this mechanism each subirb can be configurated.
+
+= Command
+
+For irb commands, both simple name and `irb_'-prefixed name are prepared.
+
+--- exit, quit, irb_exit
+ Quits (sub)irb.
+
+--- conf, irb_context
+ Displays current configuration. Modifing the configuration is
+ achieved by sending message to `conf'.
+
+--- conf.eval_history = N
+ Sets execution result history.
+ N is a integer or nil. If N > 0, the number of historys is N.
+ If N == 0, the number of historys is unlimited. If N is nill,
+ execution result history isn't used(default).
+
+--- conf.back_trace_limit
+ Sets display lines of backtrace as top n and tail n.
+ The default value is 16.
+
+--- conf.debug_level = N
+ Sets debug level of irb.
+
+--- conf.ignore_eof = true/false
+ Whether ^D (control-d) will be ignored or not.
+ If false is set, ^D means quit.
+
+--- conf.ignore_sigint= true/false
+ Whether ^C (control-c) will be ignored or not.
+ If false is set, ^D means quit. If true,
+ during input: cancel inputing then return to top level.
+ during execute: abondon current execution.
+
+--- conf.inf_ruby_mode = true/false
+ Whether inf-ruby-mode or not. The default value is false.
+
+--- conf.inspect_mode = true/false/nil
+ Specifies inspect mode.
+ true: display inspect
+ false: display to_s
+ nil: inspect mode in non math mode,
+ non inspect mode in math mode.
+
+--- conf.math_mode
+ Whether bc mode or not.
+
+--- conf.use_loader = true/false
+ Whether irb's own file reader method is used when load/require or not.
+ This mode is globaly affected (irb wide).
+
+--- conf.prompt_c
+ prompt for a continuating statement (e.g, immediately after of `if')
+
+--- conf.prompt_i
+ standard prompt
+
+--- conf.prompt_s
+ prompt for a continuating string
+
+--- conf.rc
+ Whether ~/.irbrc is read or not.
+
+--- conf.use_prompt = true/false
+ Prompting or not.
+
+--- conf.use_readline = true/false/nil
+ Whether readline is used or not.
+ true: uses
+ false: doen't use
+ nil: intends to use readline except for inf-ruby-mode (default)
+#
+#--- conf.verbose=T/F
+# Whether verbose messages are display or not.
+
+--- cws, chws, irb_change_workspace [obj]
+ obj will be self. If obj is omitted, self will be home-object, or
+ the main object of first started irb.
+
+--- pushws, irb_pushws, irb_push_workspace [obj]
+ same as UNIX-shell command pushd.
+
+--- popws, irb_popws, irb_pop_workspace
+ same as UNIX-shell command popd
+
+--- irb [obj]
+ Invoke subirb. If obj is given, obj will be self.
+
+--- jobs, irb_jobs
+ List of subirb
+
+--- fg n, irb_fg n
+ Switch into specified subirb. The following is candidates of n:
+
+ irb number
+ thhread
+ irb object
+ self(obj which is specified of irb obj)
+
+--- kill n, irb_kill n
+ Kill subirb. The means of n is as same as the case of irb_fg.
+
+--- source, irb_source path
+ This is a like UNIX-shell command source. evaluate script in path
+ on current context.
+
+--- irb_load path, prev
+ irb-version of Ruby's load.
+
+= System variable
+
+--- _ The latest value of evaluation (it is local)
+--- __ The history of evaluation values.
+ __[line_no] return an evaluation value of line number<line_no>. If
+ line_no is a negative, return value before -<line_no> from latest
+ value.
+
+= Session Example
+
+ dim% ruby irb.rb
+ irb(main):001:0> irb # invoke subirb
+ irb#1(main):001:0> jobs # list of subirbs
+ #0->irb on main (#<Thread:0x400fb7e4> : stop)
+ #1->irb#1 on main (#<Thread:0x40125d64> : running)
+ nil
+ irb#1(main):002:0> fg 0 # switch job
+ nil
+ irb(main):002:0> class Foo;end
+ nil
+ irb(main):003:0> irb Foo # invoke subirb which has the
+ # context of Foo
+ irb#2(Foo):001:0> def foo # define Foo#foo
+ irb#2(Foo):002:1> print 1
+ irb#2(Foo):003:1> end
+ nil
+ irb#2(Foo):004:0> fg 0 # switch job
+ nil
+ irb(main):004:0> jobs # list of job
+ #0->irb on main (#<Thread:0x400fb7e4> : running)
+ #1->irb#1 on main (#<Thread:0x40125d64> : stop)
+ #2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
+ nil
+ irb(main):005:0> Foo.instance_methods # Foo#foo is defined asurely
+ ["foo"]
+ irb(main):006:0> fg 2 # switch job
+ nil
+ irb#2(Foo):005:0> def bar # define Foo#bar
+ irb#2(Foo):006:1> print "bar"
+ irb#2(Foo):007:1> end
+ nil
+ irb#2(Foo):010:0> Foo.instance_methods
+ ["bar", "foo"]
+ irb#2(Foo):011:0> fg 0
+ nil
+ irb(main):007:0> f = Foo.new
+ #<Foo:0x4010af3c>
+ irb(main):008:0> irb f # invoke subirb which has the
+ # context of f (instance of Foo)
+ irb#3(#<Foo:0x4010af3c>):001:0> jobs
+ #0->irb on main (#<Thread:0x400fb7e4> : stop)
+ #1->irb#1 on main (#<Thread:0x40125d64> : stop)
+ #2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
+ #3->irb#3 on #<Foo:0x4010af3c> (#<Thread:0x4010a1e0> : running)
+ nil
+ irb#3(#<Foo:0x4010af3c>):002:0> foo # evaluate f.foo
+ 1nil
+ irb#3(#<Foo:0x4010af3c>):003:0> bar # evaluate f.bar
+ barnil
+ irb#3(#<Foo:0x4010af3c>):004:0> kill 1, 2, 3# kill job
+ nil
+ irb(main):009:0> jobs
+ #0->irb on main (#<Thread:0x400fb7e4> : running)
+ nil
+ irb(main):010:0> exit # exit
+ dim%
+
+= Restrictions
+
+Because irb evaluates the inputs immediately after the imput is
+syntactically completed, irb gives slight different result than
+directly use ruby. Known difference is pointed out here.
+
+
+== Declaration of the local variable
+
+The following causes an error in ruby:
+
+ eval "foo = 0"
+ foo
+ --
+ -:2: undefined local variable or method `foo' for #<Object:0x40283118> (NameError)
+ ---
+ NameError
+
+Though, the above will successfully done by irb.
+
+ >> eval "foo = 0"
+ => 0
+ >> foo
+ => 0
+
+Ruby evaluates a code after reading entire of code and determination
+of the scope of local variables. On the other hand, irb do
+immediately. More precisely, irb evaluate at first
+
+ evel "foo = 0"
+
+then foo is defined on this timing. It is because of this
+incompatibility.
+
+If you'd like to detect those differences, begin...end can be used:
+
+ >> begin
+ ?> eval "foo = 0"
+ >> foo
+ >> end
+ NameError: undefined local variable or method `foo' for #<Object:0x4013d0f0>
+ (irb):3
+ (irb_local_binding):1:in `eval'
+
+== Here-document
+
+Implementation of Here-document is incomplete.
+
+== Symbol
+
+Irb can not always recognize a symbol as to be Symbol. Concretely, an
+expression have completed, however Irb regard it as continuation line.
+
+=end
+
+% Begin Emacs Environment
+% Local Variables:
+% mode: text
+% comment-column: 0
+% comment-start: "%"
+% comment-end: "\n"
+% End:
+%
diff --git a/doc/irb/irb.rd.ja b/doc/irb/irb.rd.ja
index 6c213a178c..6e3abd7b3c 100644
--- a/doc/irb/irb.rd.ja
+++ b/doc/irb/irb.rd.ja
@@ -3,23 +3,23 @@ irb -- interactive ruby
$Revision$
by Keiju ISHITSUKA(keiju@ruby-lang.org)
=begin
-= irbとは?
+= irbȤ?
-irbはinteractive rubyの略です. rubyの式を標準入力から簡単に入力/実行する
-ためのツールです.
+irbinteractive rubyάǤ. rubyμɸϤñ/¹Ԥ
+ΥġǤ.
-= 起動
+= ư
% irb
-で行ないます.
+ǹԤʤޤ.
-= 使い方
+= Ȥ
-irbの使い方は, Rubyさえ知っていればいたって簡単です. 基本的には irb と
-いうコマンドを実行するだけです. irbを実行すると, 以下のようなプロンプ
-トが表れてきます. 後は, rubyの式を入れて下さい. 式が完結した時点で実行
-されます.
+irbλȤ, RubyΤäƤФäƴñǤ. Ūˤ irb
+ޥɤ¹ԤǤ. irb¹Ԥ, ʲΤ褦ʥץ
+ȤɽƤޤ. , rubyμƲ. 뤷Ǽ¹
+ޤ.
dim% irb
irb(main):001:0> 1+2
@@ -32,55 +32,55 @@ irbの使い方は, Rubyさえ知っていればいたって簡単です. 基本
nil
irb(main):007:0>
-また, irbはReadlineモジュールにも対応しています. Readlineモジュールが
-インストールされている時には, それを使うのが標準の動作になります.
+ޤ, irbReadline⥸塼ˤбƤޤ. Readline⥸塼뤬
+󥹥ȡ뤵Ƥˤ, ȤΤɸưˤʤޤ.
-= コマンドオプション
+= ޥɥץ
irb.rb [options] file_name opts
options:
- -f ~/.irbrc を読み込まない.
- -m bcモード(分数, 行列の計算ができる)
- -d $DEBUG をtrueにする(ruby -d と同じ)
- -Kc ruby -Kcと同じ
- -r load-module ruby -r と同じ.
- --verbose これから実行する行を表示する(デフォルト)
- --noverbose これから実行する行を表示しない
- --echo 実行結果を表示する(デフォルト)
- --noecho 実行結果を表示しない
- --inspect 結果出力にinspectを用いる(bcモード以外はデフォルト).
- --noinspect 結果出力にinspectを用いない.
- --readline readlineライブラリを利用する.
- --noreadline readlineライブラリを利用しない. デフォルトの動作は,
- inf-ruby-mode以外でreadlineライブラリを利用しよう
- とする.
+ -f ~/.irbrc ɤ߹ޤʤ.
+ -m bc⡼(ʬ, η׻Ǥ)
+ -d $DEBUG trueˤ(ruby -d Ʊ)
+ -Kc ruby -KcƱ
+ -r load-module ruby -r Ʊ.
+ --verbose 줫¹ԤԤɽ(ǥե)
+ --noverbose 줫¹ԤԤɽʤ
+ --echo ¹Է̤ɽ(ǥե)
+ --noecho ¹Է̤ɽʤ
+ --inspect ̽ϤinspectѤ(bc⡼ɰʳϥǥե).
+ --noinspect ̽ϤinspectѤʤ.
+ --readline readline饤֥Ѥ.
+ --noreadline readline饤֥Ѥʤ. ǥեȤư,
+ inf-ruby-modeʳreadline饤֥Ѥ褦
+ Ȥ.
--prompt prompt-mode
--prompt-mode prompt-mode
- プロンプトモードを切替えます. 現在定義されているプ
- ロンプトモードは, default, simple, xmp, inf-rubyが
- 用意されています. デフォルトはdefaultプロンプトモー
- ドになっています.
+ ץץȥ⡼ɤؤޤ. Ƥ
+ ץȥ⡼ɤ, default, simple, xmp, inf-ruby
+ ѰդƤޤ. ǥեȤdefaultץץȥ⡼
+ ɤˤʤäƤޤ.
- --inf-ruby-mode emacsのinf-ruby-mode用のプロンプト表示を行なう. 特
- に指定がない限り, readlineライブラリは使わなくなる.
+ --inf-ruby-mode emacsinf-ruby-modeѤΥץץɽԤʤ.
+ ˻꤬ʤ¤, readline饤֥ϻȤʤʤ.
--simple-prompt
- 非常にシンプルなプロンプトを用いるモードです.
- --noprompt プロンプト表示を行なわない.
- --tracer コマンド実行時にトレースを行なう.
+ ˥ץʥץץȤѤ⡼ɤǤ.
+ --noprompt ץץɽԤʤʤ.
+ --tracer ޥɼ¹Ի˥ȥ졼Ԥʤ.
--back-trace-limit n
- バックトレース表示をバックトレースの頭から n, 後ろ
- からnだけ行なう. デフォルトは16
- --irb_debug n irbのデバッグデバッグレベルをnに設定する(利用しな
- い方が無難でしょう).
- -v, --version irbのバージョンを表示する
+ Хåȥ졼ɽХåȥ졼Ƭ n,
+ nԤʤ. ǥեȤ16
+ --irb_debug n irbΥǥХåǥХå٥nꤹ(Ѥ
+ ̵Ǥ礦).
+ -v, --version irbΥСɽ
-= コンフィギュレーション
+= ե졼
-irb起動時に``~/.irbrc''を読み込みます. もし存在しない場合は,
-``.irbrc'', ``irb.rc'', ``_irbrc'', ``$irbrc''の順にloadを試みます.
+irbư``~/.irbrc''ɤ߹ߤޤ. ⤷¸ߤʤ,
+``.irbrc'', ``irb.rc'', ``_irbrc'', ``$irbrc''νloadߤޤ.
-オプションを設定する代わりに, 以下のコマンドでもデフォルトの動作を設定
-できます.
+ץꤹ, ʲΥޥɤǤǥեȤư
+Ǥޤ.
IRB.conf[:IRB_NAME]="irb"
IRB.conf[:MATH_MODE]=false
@@ -101,43 +101,43 @@ irb起動時に``~/.irbrc''を読み込みます. もし存在しない場合は
IRB.conf[:DEBUG_LEVEL]=0
IRB.conf[:VERBOSE]=true
-== プロンプトの設定
+== ץץȤ
-プロンプトをカスタマイズしたい時には,
+ץץȤ򥫥ޥˤ,
IRB.conf[:PROMPT]
-を用います. 例えば, .irbrcの中で下のような式を記述します:
+Ѥޤ. 㤨, .irbrcDzΤ褦ʼ򵭽Ҥޤ:
- IRB.conf[:PROMPT][:MY_PROMPT] = { # プロンプトモードの名前
- :PROMPT_I => nil, # 通常のプロンプト
- :PROMPT_N => nil, # 継続行のプロンプト
- :PROMPT_S => nil, # 文字列などの継続行のプロンプト
- :PROMPT_C => nil, # 式が継続している時のプロンプト
- :RETURN => " ==>%s\n" # リターン時のプロンプト
+ IRB.conf[:PROMPT][:MY_PROMPT] = { # ץץȥ⡼ɤ̾
+ :PROMPT_I => nil, # ̾Υץץ
+ :PROMPT_N => nil, # ³ԤΥץץ
+ :PROMPT_S => nil, # ʸʤɤη³ԤΥץץ
+ :PROMPT_C => nil, # ³ƤΥץץ
+ :RETURN => " ==>%s\n" # ꥿Υץץ
}
-プロンプトモードを指定したい時には,
+ץץȥ⡼ɤꤷˤ,
irb --prompt my-prompt
-でそのプロンプトモードで起動されます. または, .irbrcに下式を記述しても
-OKです.
+ǤΥץץȥ⡼ɤǵưޤ. ޤ, .irbrc˲򵭽ҤƤ
+OKǤ.
IRB.conf[:PROMPT_MODE] = :MY_PROMPT
-PROMPT_I, PROMPT_N, PROMPT_S, PROMPT_Cは, フォーマットを指定します.
+PROMPT_I, PROMPT_N, PROMPT_S, PROMPT_C, եޥåȤꤷޤ.
- %N 起動しているコマンド名が出力される.
- %m mainオブジェクト(self)がto_sで出力される.
- %M mainオブジェクト(self)がinspectされて出力される.
- %l 文字列中のタイプを表す(", ', /, ], `]'は%wの中の時)
- %NNi インデントのレベルを表す. NNは数字が入りprintfの%NNdと同じ. 省
- 略可能
- %NNn 行番号を表します.
+ %N ưƤ륳ޥ̾Ϥ.
+ %m main֥(self)to_sǽϤ.
+ %M main֥(self)inspectƽϤ.
+ %l ʸΥפɽ(", ', /, ], `]'%wλ)
+ %NNi ǥȤΥ٥ɽ. NNϿprintf%NNdƱ.
+ άǽ
+ %NNn ֹɽޤ.
%% %
-例えば, デフォルトのプロンプトモードは:
+㤨, ǥեȤΥץץȥ⡼ɤ:
IRB.conf[:PROMPT_MODE][:DEFAULT] = {
:PROMPT_I => "%N(%m):%03n:%i> ",
@@ -147,175 +147,175 @@ PROMPT_I, PROMPT_N, PROMPT_S, PROMPT_Cは, フォーマットを指定します.
:RETURN => "%s\n"
}
-となっています.
+ȤʤäƤޤ.
-RETURNは, 現在のところprintf形式です. 将来仕様が変わるかも知れません.
+RETURN, ߤΤȤprintfǤ. ͤѤ뤫Τޤ.
-== サブirbの設定
+== irb
-コマンドラインオプションおよびIRB.confは(サブ)irb起動時のデフォルトの
-設定を決めるもので, `5. コマンド'にあるconfで個別の(サブ)irbの設定がで
-きるようになっています.
+ޥɥ饤󥪥ץ󤪤IRB.conf()irbưΥǥեȤ
+Τ, `5. ޥ'ˤconfǸ̤()irb꤬
+褦ˤʤäƤޤ.
-IRB.conf[:IRB_RC]にprocが設定されていると, サブirbを起動する時にその
-procをirbのコンテキストを引数として呼び出します. これによって個別のサ
-ブirbごとに設定を変えることができるようになります.
+IRB.conf[:IRB_RC]procꤵƤ, irbưˤ
+procirbΥƥȤȤƸƤӽФޤ. ˤäƸ̤Υ
+irbȤѤ뤳ȤǤ褦ˤʤޤ.
-= コマンド
+= ޥ
-irb拡張コマンドは, 簡単な名前と頭に`irb_'をつけた名前と両方定義されて
-います. これは, 簡単な名前がoverrideされた時のためです.
+irbĥޥɤ, ñ̾Ƭ`irb_'Ĥ̾ξ
+ޤ. , ñ̾override줿ΤǤ.
--- exit, quit, irb_exit
- 終了する.
- サブirbの場合, そのサブirbを終了する.
+ λ.
+ irbξ, Υirbλ.
--- conf, irb_context
- irbの現在の設定を表示する. 設定の変更は, confにメッセージを送るこ
- とによって行なえる.
+ irbθߤɽ. ѹ, conf˥å뤳
+ ȤˤäƹԤʤ.
--- conf.eval_history = N
- 実行結果のヒストリ機能の設定.
- nnは整数かnilで nn>0 であればその数だけヒストリにためる。nn==0の時は
- 無制限に記憶する、nilだとヒストリ機能はやめる(デフォルト).
+ ¹Է̤Υҥȥ굡ǽ.
+ nnnil nn>0 ǤФοҥȥˤ롣nn==0λ
+ ̵¤˵롢nilȥҥȥ굡ǽϤ(ǥե).
--- Conf.back_trace_limit
- バックトレース表示をバックトレースの頭からn, 後ろからnだけ行なう.
- デフォルトは16
+ Хåȥ졼ɽХåȥ졼Ƭn, nԤʤ.
+ ǥեȤ16
--- conf.debug_level = N
- irb用のデバッグレベルの設定
+ irbѤΥǥХå٥
--- conf.ignore_eof = true/false
- ^Dが入力された時の動作を設定する. trueの時は^Dを無視する, falseの
- 時はirbを終了する.
+ ^DϤ줿ưꤹ. trueλ^D̵뤹, false
+ irbλ.
--- conf.ignore_sigint= true/false
- ^Cが入力された時の動作を設定する. false時は, irbを終了する. trueの
- 時の動作は以下のようになる:
- 入力中: これまで入力したものをキャンセルしトップレベルに戻る.
- 実行中: 実行を中止する.
+ ^CϤ줿ưꤹ. false, irbλ. true
+ ưϰʲΤ褦ˤʤ:
+ : ޤϤΤ򥭥󥻥뤷ȥåץ٥.
+ ¹: ¹Ԥߤ.
--- conf.inf_ruby_mode = true/false
- inf-ruby-mode用のプロンプト表示を行なう. デフォルトはfalse.
+ inf-ruby-modeѤΥץץɽԤʤ. ǥեȤfalse.
--- conf.inspect_mode = true/false/nil
- インスペクトモードを設定する.
- true: インスペクトして表示する.
- false: 通常のprintで表示する.
- nil: 通常モードであれば, inspect modeとなり, mathモードの時は, non
- inspect modeとなる.
+ 󥹥ڥȥ⡼ɤꤹ.
+ true: 󥹥ڥȤɽ.
+ false: ̾printɽ.
+ nil: ̾⡼ɤǤ, inspect modeȤʤ, math⡼ɤλ, non
+ inspect modeȤʤ.
--- conf.math_mode
- 参照のみ. bcモード(分数, 行列の計算ができます)かどうか?
+ ȤΤ. bc⡼(ʬ, η׻Ǥޤ)ɤ?
--- conf.use_loader = true/false
- load/require時にirbのfile読み込み機能を用いるモードのスイッチ(デフォ
- ルトは用いない). このモードはIRB全体に反映される.
+ load/requireirbfileɤ߹ߵǽѤ⡼ɤΥå(ǥե
+ ȤѤʤ). Υ⡼ɤIRBΤȿǤ.
--- conf.prompt_c
- ifの直後など, 行が継続している時のプロンプト.
+ ifľʤ, Ԥ³ƤΥץץ.
--- conf.prompt_i
- 通常のプロンプト.
+ ̾Υץץ.
--- conf.prompt_s
- 文字列中などを表すプロンプト.
+ ʸʤɤɽץץ.
--- conf.rc
- ~/.irbrcを読み込んだかどうか?
+ ~/.irbrcɤ߹ɤ?
--- conf.use_prompt = true/false
- プロンプト表示するかどうか? デフォルトではプロンプトを表示する.
+ ץץɽ뤫ɤ? ǥեȤǤϥץץȤɽ.
--- conf.use_readline = true/false/nil
- readlineを使うかどうか?
- true: readlineを使う.
- false: readlineを使わない.
- nil: (デフォルト)inf-ruby-mode以外でreadlineライブラリを利用しよ
- うとする.
+ readlineȤɤ?
+ true: readlineȤ.
+ false: readlineȤʤ.
+ nil: (ǥե)inf-ruby-modeʳreadline饤֥Ѥ
+ Ȥ.
#
#--- conf.verbose=T/F
-# irbからいろいろなメッセージを出力するか?
+# irb餤ʥåϤ뤫?
--- cws, chws, irb_cws, irb_chws, irb_change_workspace [obj]
- objをselfとする. objが省略されたときは, home workspace, すなわち
- irbを起動したときのmain objectをselfとする.
+ objselfȤ. objά줿Ȥ, home workspace, ʤ
+ irbưȤmain objectselfȤ.
--- pushws, irb_pushws, irb_push_workspace [obj]
- UNIXシェルコマンドのpushdと同様.
+ UNIX륳ޥɤpushdƱ.
--- popws, irb_popws, irb_pop_workspace
- UNIXシェルコマンドのpopdと同様.
+ UNIX륳ޥɤpopdƱ.
--- irb [obj]
- サブirbを立ちあげる. objが指定された時は, そのobjをselfとする.
+ irbΩ. objꤵ줿, objselfȤ.
--- jobs, irb_jobs
- サブirbのリスト
+ irbΥꥹ
--- fg n, irb_fg n
- 指定したサブirbにスイッチする. nは, 次のものを指定する.
+ ꤷirb˥å. n, ΤΤꤹ.
- irb番号
- スレッド
- irbオブジェクト
- self(irb objで起動した時のobj)
+ irbֹ
+ å
+ irb֥
+ self(irb objǵưobj)
--- kill n, irb_kill n
- サブirbをkillする. nはfgと同じ.
+ irbkill. nfgƱ.
--- source, irb_source path
- UNIXシェルコマンドのsourceと似ている. 現在の環境上でpath内のスクリ
- プトを評価する.
+ UNIX륳ޥɤsourceȻƤ. ߤδĶpathΥ
+ ץȤɾ.
--- irb_load path, prev
- Rubyのloadのirb版.
+ Rubyloadirb.
-= システム変数
+= ƥѿ
--- _
- 前の計算の実行結果を覚えている(ローカル変数).
+ η׻μ¹Է̤ФƤ(ѿ).
--- __
- 実行結果の履歴を覚えている.
- __[line_no]で、その行で実行した結果を得ることができる. line_noが負の
- 時には、最新の結果から-line_no前の結果を得ることができる.
+ ¹Է̤ФƤ.
+ __[line_no]ǡιԤǼ¹Ԥ̤뤳ȤǤ. line_no
+ ˤϡǿη̤-line_noη̤뤳ȤǤ.
-= 使用例
+=
-以下のような感じです.
+ʲΤ褦ʴǤ.
dim% ruby irb.rb
- irb(main):001:0> irb # サブirbの立ちあげ
- irb#1(main):001:0> jobs # サブirbのリスト
+ irb(main):001:0> irb # irbΩ
+ irb#1(main):001:0> jobs # irbΥꥹ
#0->irb on main (#<Thread:0x400fb7e4> : stop)
#1->irb#1 on main (#<Thread:0x40125d64> : running)
nil
- irb#1(main):002:0> fg 0 # jobのスイッチ
+ irb#1(main):002:0> fg 0 # jobΥå
nil
irb(main):002:0> class Foo;end
nil
- irb(main):003:0> irb Foo # Fooをコンテキストしてirb
- # 立ちあげ
- irb#2(Foo):001:0> def foo # Foo#fooの定義
+ irb(main):003:0> irb Foo # Foo򥳥ƥȤirb
+ # Ω
+ irb#2(Foo):001:0> def foo # Foo#foo
irb#2(Foo):002:1> print 1
irb#2(Foo):003:1> end
nil
- irb#2(Foo):004:0> fg 0 # jobをスイッチ
+ irb#2(Foo):004:0> fg 0 # job򥹥å
nil
- irb(main):004:0> jobs # jobのリスト
+ irb(main):004:0> jobs # jobΥꥹ
#0->irb on main (#<Thread:0x400fb7e4> : running)
#1->irb#1 on main (#<Thread:0x40125d64> : stop)
#2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
nil
- irb(main):005:0> Foo.instance_methods # Foo#fooがちゃんと定義さ
- # れている
+ irb(main):005:0> Foo.instance_methods # Foo#foo
+ # Ƥ
["foo"]
- irb(main):006:0> fg 2 # jobをスイッチ
+ irb(main):006:0> fg 2 # job򥹥å
nil
- irb#2(Foo):005:0> def bar # Foo#barを定義
+ irb#2(Foo):005:0> def bar # Foo#bar
irb#2(Foo):006:1> print "bar"
irb#2(Foo):007:1> end
nil
@@ -325,36 +325,36 @@ irb拡張コマンドは, 簡単な名前と頭に`irb_'をつけた名前と両
nil
irb(main):007:0> f = Foo.new
#<Foo:0x4010af3c>
- irb(main):008:0> irb f # Fooのインスタンスでirbを
- # 立ちあげる.
+ irb(main):008:0> irb f # FooΥ󥹥󥹤irb
+ # Ω.
irb#3(#<Foo:0x4010af3c>):001:0> jobs
#0->irb on main (#<Thread:0x400fb7e4> : stop)
#1->irb#1 on main (#<Thread:0x40125d64> : stop)
#2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
#3->irb#3 on #<Foo:0x4010af3c> (#<Thread:0x4010a1e0> : running)
nil
- irb#3(#<Foo:0x4010af3c>):002:0> foo # f.fooの実行
+ irb#3(#<Foo:0x4010af3c>):002:0> foo # f.fooμ¹
nil
- irb#3(#<Foo:0x4010af3c>):003:0> bar # f.barの実行
+ irb#3(#<Foo:0x4010af3c>):003:0> bar # f.barμ¹
barnil
- irb#3(#<Foo:0x4010af3c>):004:0> kill 1, 2, 3# jobのkill
+ irb#3(#<Foo:0x4010af3c>):004:0> kill 1, 2, 3# jobkill
nil
irb(main):009:0> jobs
#0->irb on main (#<Thread:0x400fb7e4> : running)
nil
- irb(main):010:0> exit # 終了
+ irb(main):010:0> exit # λ
dim%
-= 使用上の制限
+= Ѿ
-irbは, 評価できる時点(式が閉じた時点)での逐次実行を行ないます. したがっ
-て, rubyを直接使った時と, 若干異なる動作を行なう場合があります.
+irb, ɾǤ(Ĥ)Ǥ༡¹ԤԤʤޤ.
+, rubyľܻȤä, 㴳ۤʤưԤʤ礬ޤ.
-現在明らかになっている問題点を説明します.
+餫ˤʤäƤޤ.
-== ローカル変数の宣言
+== ѿ
-rubyでは, 以下のプログラムはエラーになります.
+rubyǤ, ʲΥץϥ顼ˤʤޤ.
eval "foo = 0"
foo
@@ -363,24 +363,24 @@ rubyでは, 以下のプログラムはエラーになります.
---
NameError
-ところが, irbを用いると
+Ȥ, irbѤ
>> eval "foo = 0"
=> 0
>> foo
=> 0
-となり, エラーを起こしません. これは, rubyが最初にスクリプト全体をコン
-パイルしてローカル変数を決定するからです. それに対し, irbは実行可能に
-なる(式が閉じる)と自動的に評価しているからです. 上記の例では,
+Ȥʤ, 顼򵯤ޤ. , rubyǽ˥ץΤ򥳥
+ѥ뤷ƥѿꤹ뤫Ǥ. Ф, irbϼ¹Բǽ
+ʤ(Ĥ)ȼưŪɾƤ뤫Ǥ. 嵭Ǥ,
evel "foo = 0"
-を行なった時点で評価を行ない, その時点で変数が定義されるため, 次式で
-変数fooは定義されているからです.
+ԤʤäɾԤʤ, λѿ뤿,
+ѿfooƤ뤫Ǥ.
-このようなrubyとirbの動作の違いを解決したい場合は, begin...endで括って
-バッチ的に実行して下さい:
+Τ褦rubyirbưΰ㤤褷, begin...enddzä
+ХåŪ˼¹ԤƲ:
>> begin
?> eval "foo = 0"
@@ -390,14 +390,14 @@ rubyでは, 以下のプログラムはエラーになります.
(irb):3
(irb_local_binding):1:in `eval'
-== ヒアドキュメント
+== ҥɥ
-現在のところヒアドキュメントの実装は不完全です.
+ߤΤȤҥɥȤμԴǤ.
-== シンボル
+== ܥ
-シンボルであるかどうかの判断を間違えることがあります. 具体的には式が完了
-しているのに継続行と見なすことがあります.
+ܥǤ뤫ɤȽǤְ㤨뤳Ȥޤ. Ūˤϼλ
+ƤΤ˷³ԤȸʤȤޤ.
=end
diff --git a/doc/pty/README b/doc/pty/README
new file mode 100644
index 0000000000..d6368f3758
--- /dev/null
+++ b/doc/pty/README
@@ -0,0 +1,84 @@
+pty extension version 0.3 by A.ito
+
+1. Introduction
+
+This extension module adds ruby a functionality to execute an
+arbitrary command through pseudo tty (pty).
+
+2. Install
+
+Follow the instruction below.
+
+(1) Execute
+
+ ruby extconf.rb
+
+ then Makefile is generated.
+
+(3) Do make; make install.
+
+3. What you can do
+
+This extension module defines a module named PTY, which contains
+following module fungtions:
+
+ getpty(command)
+ spawn(command)
+
+ This function reserves a pty, executes command over the pty
+ and returns an array. The return value is an array with three
+ elements. The first element in the array is for reading and the
+ second for writing. The third element is the process ID of the
+ child process. If this function is called with an iterator block,
+ the array is passed to the block as block parameters, and the
+ function itself returns nil.
+
+ When the child process is suspended or finished, an exception is
+ raised. If this function is called with an iterator block,
+ exception is raised only within the block. Child process
+ monitor is terminated on block exit.
+
+ protect_signal
+ reset_signal
+
+ These functions are obsolete in this version of pty.
+
+ PTY.open
+
+ Allocates a pty (pseudo-terminal).
+
+ It returns an array which contains an IO object and a File object.
+ The former is the master of the pty.
+ The latter is the slave of the pty.
+
+ If a block is given, it yields the array instead of return.
+ The value of the block is returned.
+ master_io and slave_file is closed when return if they are not closed.
+
+ PTY.check(pid[, raise=false])
+
+ checks the status of the child process specified by pid, and
+ returns nil if the process is still alive and active.
+ Otherwise, returns Process::Status about the process if raise is
+ false, or PTY::ChildExited exception is raised.
+
+4. License
+
+(C) Copyright 1998 by Akinori Ito.
+
+This software may be redistributed freely for this purpose, in full
+or in part, provided that this entire copyright notice is included
+on any copies of this software and applications and derivations thereof.
+
+This software is provided on an "as is" basis, without warranty of any
+kind, either expressed or implied, as to any matter including, but not
+limited to warranty of fitness of purpose, or merchantability, or
+results obtained from use of this software.
+
+5. Bug report
+
+Please feel free to send E-mail to
+
+ aito@ei5sun.yz.yamagata-u.ac.jp
+
+for any bug report, opinion, contribution, etc.
diff --git a/doc/pty/README.expect b/doc/pty/README.expect
new file mode 100644
index 0000000000..fddbb6fdad
--- /dev/null
+++ b/doc/pty/README.expect
@@ -0,0 +1,22 @@
+ README for expect
+ by A. Ito, 28 October, 1998
+
+ Expect library adds IO class a method called expect(), which
+does similar act to tcl's expect extension.
+
+The usage of the method is:
+
+ IO#expect(pattern,timeout=9999999)
+
+where `pattern' is an instance of String or Regexp and `timeout'
+is Fixnum, which can be omitted.
+ When the method is called without block, it waits until the
+input which matches the pattern is obtained from the IO or the time
+specified as the timeout passes. When the pattern is obtained from the
+IO, the method returns an array. The first element of the array is the
+entire string obtained from the IO until the pattern matches. The
+following elements indicates the specific pattern which matched to the
+anchor in the regular expression. If the method ends because of
+timeout, it returns nil.
+ When the method is called with block, the array is passed as
+the block parameter.
diff --git a/doc/pty/README.expect.ja b/doc/pty/README.expect.ja
index 7c0456f24f..db84695ee5 100644
--- a/doc/pty/README.expect.ja
+++ b/doc/pty/README.expect.ja
@@ -1,21 +1,21 @@
README for expect
by A. Ito, 28 October, 1998
- Expectライブラリは,tcl の expect パッケージと似たような機能を
-IOクラスに追加します.
+ Expect饤֥ϡtcl expect ѥåȻ褦ʵǽ
+IO饹ɲäޤ
- 追加されるメソッドの使い方は次の通りです.
+ ɲä᥽åɤλȤϼ̤Ǥ
IO#expect(pattern,timeout=9999999)
-pattern は String か Regexp のインスタンス,timeout は Fixnum
-のインスタンスです.timeout は省略できます.
- このメソッドがブロックなしで呼ばれた場合,まずレシーバである
-IOオブジェクトから pattern にマッチするパターンが読みこまれる
-まで待ちます.パターンが得られたら,そのパターンに関する配列を
-返します.配列の最初の要素は,pattern にマッチするまでに読みこ
-まれた内容の文字列です.2番目以降の要素は,pattern の正規表現
-の中にアンカーがあった場合に,そのアンカーにマッチする部分です.
-もしタイムアウトが起きた場合は,このメソッドはnilを返します.
- このメソッドがブロック付きで呼ばれた場合には,マッチした要素の
-配列がブロック引数として渡され,ブロックが評価されます.
+pattern String Regexp Υ󥹥󥹡timeout Fixnum
+Υ󥹥󥹤Ǥtimeout ϾάǤޤ
+ Υ᥽åɤ֥åʤǸƤФ줿硤ޤ쥷ФǤ
+IO֥Ȥ pattern ˥ޥåѥɤߤޤ
+ޤԤޤѥ줿顤Υѥ˴ؤ
+֤ޤκǽǤϡpattern ˥ޥåޤǤɤߤ
+ޤ줿ƤʸǤ2ܰʹߤǤϡpattern ɽ
+˥󥫡äˡΥ󥫡˥ޥåʬǤ
+⤷ॢȤϡΥ᥽åɤnil֤ޤ
+ Υ᥽åɤ֥åդǸƤФ줿ˤϡޥåǤ
+󤬥֥åȤϤ졤֥åɾޤ
diff --git a/doc/pty/README.ja b/doc/pty/README.ja
index 9b9d306bf7..ca2a01442a 100644
--- a/doc/pty/README.ja
+++ b/doc/pty/README.ja
@@ -1,76 +1,76 @@
-pty 拡張モジュール version 0.3 by A.ito
+pty ĥ⥸塼 version 0.3 by A.ito
-1. はじめに
+1. Ϥ
-この拡張モジュールは,仮想tty (pty) を通して適当なコマンドを
-実行する機能を ruby に提供します.
+γĥ⥸塼ϡtty (pty) ̤Ŭʥޥɤ
+¹Ԥ뵡ǽ ruby 󶡤ޤ
-2. インストール
+2. 󥹥ȡ
-次のようにしてインストールしてください.
+Τ褦ˤƥ󥹥ȡ뤷Ƥ
(1) ruby extconf.rb
- を実行すると Makefile が生成されます.
+ ¹Ԥ Makefile ޤ
-(2) make; make install を実行してください.
+(2) make; make install ¹ԤƤ
-3. 何ができるか
+3. Ǥ뤫
-この拡張モジュールは,PTY というモジュールを定義します.その中
-には,次のようなモジュール関数が含まれています.
+γĥ⥸塼ϡPTY Ȥ⥸塼ޤ
+ˤϡΤ褦ʥ⥸塼ؿޤޤƤޤ
getpty(command)
spawn(command)
- この関数は,仮想ttyを確保し,指定されたコマンドをその仮想tty
- の向こうで実行し,配列を返します.戻り値は3つの要素からなる
- 配列です.最初の要素は仮想ttyから読み出すためのIOオブジェクト,
- 2番目は書きこむためのIOオブジェクト,3番目は子プロセスのプロ
- セスIDです.この関数がイテレータとして呼ばれた場合,これらの
- 要素はブロックパラメータとして渡され,関数自体はnilを返します.
-
- 子プロセスが終了したり停止した場合には,例外が発生します.この関
- 数がブロックパラメータ付きで呼ばれた場合には,そのブロックの中で
- のみ例外が発生します.子プロセスをモニターしているスレッドはブロッ
- クを抜けるときに終了します.
+ δؿϡttyݤꤵ줿ޥɤ򤽤βtty
+ θǼ¹Ԥ֤ޤͤ3ĤǤʤ
+ ǤǽǤϲttyɤ߽ФIO֥ȡ
+ 2ܤϽ񤭤िIO֥ȡ3ܤϻҥץΥץ
+ IDǤδؿƥ졼ȤƸƤФ줿硤
+ Ǥϥ֥åѥ᡼ȤϤ졤ؿΤnil֤ޤ
+
+ ҥץλߤˤϡ㳰ȯޤδ
+ ֥åѥ᡼դǸƤФ줿ˤϡΥ֥å
+ Τ㳰ȯޤҥץ˥Ƥ륹åɤϥ֥
+ ȴȤ˽λޤ
protect_signal
reset_signal
- 廃止予定です.
+ ѻͽǤ
PTY.open
- 仮想ttyを確保し,マスター側に対応するIOオブジェクトとスレーブ側に
- 対応するFileオブジェクトの配列を返します.ブロック付きで呼び出さ
- れた場合は,これらの要素はブロックパラメータとして渡され,ブロッ
- クから返された結果を返します.また、このマスターIOとスレーブFile
- は、ブロックを抜けるときにクローズ済みでなければクローズされます.
+ ttyݤޥ¦бIO֥Ȥȥ졼¦
+ бFile֥Ȥ֤ޤ֥åդǸƤӽФ
+ 줿ϡǤϥ֥åѥ᡼ȤϤ졤֥
+ ֤줿̤֤ޤޤΥޥIOȥ졼File
+ ϡ֥åȴȤ˥ѤߤǤʤХޤ
PTY.check(pid[, raise=false])
- pidで指定された子プロセスの状態をチェックし,実行中であればnilを
- 返します.終了しているか停止している場合、第二引数が偽であれば、
- 対応するProcess::Statusオブジェクトを返します。真であれば
- PTY::ChildExited例外が発生します.
+ pidǻꤵ줿ҥץξ֤å¹Ǥnil
+ ֤ޤλƤ뤫ߤƤ硢ǤС
+ бProcess::Status֥Ȥ֤ޤǤ
+ PTY::ChildExited㳰ȯޤ
-4. 利用について
+4. ѤˤĤ
-伊藤彰則が著作権を保有します.
+ƣ§ͭޤ
-ソースプログラムまたはドキュメントに元の著作権表示が改変されずに
-表示されている場合に限り,誰でも,このソフトウェアを無償かつ著作
-権者に無断で利用・配布・改変できます.利用目的は限定されていませ
-ん.
+ץޤϥɥȤ˸ɽѤ줺
+ɽƤ˸¤ꡤïǤ⡤Υեȥ̵
+Ԥ̵ǤѡۡѤǤޤŪϸꤵƤޤ
+
-このプログラムの利用・配布その他このプログラムに関係する行為によ
-って生じたいかなる損害に対しても,作者は一切責任を負いません.
+Υץѡۤ¾Υץ˴ط԰٤ˤ
+äʤ»ФƤ⡤ԤϰǤ餤ޤ
-5. バグ報告等
+5. Х
-バグレポートは歓迎します.
+ХݡȤϴޤޤ
aito@ei5sun.yz.yamagata-u.ac.jp
-まで電子メールでバグレポートをお送りください.
+ޤŻҥ᡼ǥХݡȤ꤯
diff --git a/doc/rake/CHANGES b/doc/rake/CHANGES
index 1caac6f024..3b1a02b812 100644
--- a/doc/rake/CHANGES
+++ b/doc/rake/CHANGES
@@ -66,7 +66,7 @@
symbol/string differences. (Patch supplied by Edwin Pratomo)
* Fixed bug with rules involving multiple source (Patch supplied by
- Emanuel Indermühle)
+ Emanuel Indermhle)
* Switched from getoptlong to optparse (patches supplied by Edwin
Pratomo)
diff --git a/doc/rake/command_line_usage.rdoc b/doc/rake/command_line_usage.rdoc
index 688e55a9af..c60e53f51a 100644
--- a/doc/rake/command_line_usage.rdoc
+++ b/doc/rake/command_line_usage.rdoc
@@ -2,26 +2,14 @@
Rake is invoked from the command line using:
- % rake [options ...] [VAR=VALUE ...] [targets ...]
+ % rake [<em>options</em> ...] [<em>VAR</em>=<em>VALUE</em>] [<em>targets</em> ...]
Options are:
[<tt><em>name</em>=<em>value</em></tt>]
Set the environment variable <em>name</em> to <em>value</em>
during the execution of the <b>rake</b> command. You can access
- the value by using ENV['<em>name</em>'].
-
-[<tt>--all</tt> (-A)]
- Used in combination with the -T and -D options, will force
- those options to show all the tasks, even the ones without comments.
-
-[<tt>--backtrace</tt>{=_output_} (-n)]
- Enable a full backtrace (i.e. like --trace, but without the task
- tracing details). The _output_ parameter is optional, but if
- specified it controls where the backtrace output is sent. If
- _output_ is <tt>stdout</tt>, then backtrace output is directed to
- stardard output. If _output_ is <tt>stderr</tt>, or if it is
- missing, then the backtrace output is sent to standard error.
+ the value by using ENV['<em>name</em>'].
[<tt>--classic-namespace</tt> (-n)]
Import the Task, FileTask, and FileCreateTask into the top-level
@@ -30,11 +18,6 @@ Options are:
'rake/classic_namespace'</code> in your Rakefile to get the
classic behavior.
-[<tt>--comments</tt>]
- Used in combination with the -W options to force the output to
- contain commented options only. This is the reverse of
- <tt>--all</tt>.
-
[<tt>--describe</tt> _pattern_ (-D)]
Describe the tasks (matching optional PATTERN), then exit.
@@ -48,40 +31,15 @@ Options are:
[<tt>--execute-print</tt> _code_ (-p)]
Execute some Ruby code, print the result, and exit.
-[<tt>--execute-continue</tt> _code_ (-E)]
+[<tt>--execute-continue</tt> _code_ (-p)]
Execute some Ruby code, then continue with normal task processing.
[<tt>--help</tt> (-H)]
Display some help text and exit.
-[<tt>--jobs</tt> _number_ (-j)]
- Specifies the number of active concurrent tasks used. The
- suggested value is equal to the number of CPUs. The concurrent
- tasks are used to execute the <tt>multitask</tt> prerequisites.
- Also see the <tt>-m</tt> option which turns all tasks into
- multitasks.
-
- Sample values:
- (no -j) : unlimited concurrent tasks (standard rake behavior)
- -j : 2 concurrent tasks (exact number may change)
- -j 16 : 16 concurrent tasks
-
-[<tt>--job-stats</tt> _level_]
-
- Display job statistics at the completion of the run. By default,
- this will display the requested number of active tasks (from the
- -j options) and the maximum number of tasks in play at any given
- time.
-
- If the optional _level_ is <tt>history</tt>, then a complete trace
- of task history will be displayed on standard output.
-
[<tt>--libdir</tt> _directory_ (-I)]
Add _directory_ to the list of directories searched for require.
-[<tt>--multitask</tt> (-m)]
- Treat all tasks as multitasks. ('make/drake' semantics)
-
[<tt>--nosearch</tt> (-N)]
Do not search for a Rakefile in parent directories.
@@ -102,16 +60,6 @@ Options are:
[<tt>--rakelibdir</tt> _rakelibdir_ (-R)]
Auto-import any .rake files in RAKELIBDIR. (default is 'rakelib')
-[<tt>--reduce-compat</tt>]
-
- Remove the DSL commands from the Object inheritance hierarchy and
- do not define top level constants. This reduces the backwards
- compatibility of Rake, but allows rake to be used with software
- that would otherwise have conflicting definitions.
-
- *NOTE:* The next major version of Rake will only be able to be run
- in "reduce-compat" mode.
-
[<tt>--require</tt> _name_ (-r)]
Require _name_ before executing the Rakefile.
@@ -121,11 +69,6 @@ Options are:
[<tt>--silent (-s)</tt>]
Like --quiet, but also suppresses the 'in directory' announcement.
-[<tt>--suppress-backtrace _pattern_ </tt>]
- Line matching the regular expression _pattern_ will be removed
- from the backtrace output. Note that the --backtrace option is the
- full backtrace without these lines suppressed.
-
[<tt>--system</tt> (-g)]
Use the system wide (global) rakefiles. The project Rakefile is
ignored. By default, the system wide rakefiles are used only if no
@@ -137,18 +80,16 @@ Options are:
Use the project level Rakefile, ignoring the system-wide (global)
rakefiles.
-[<tt>--tasks</tt> <em>pattern</em> (-T)]
+[<tt>--tasks</tt> (-T)]
Display a list of the major tasks and their comments. Comments
- are defined using the "desc" command. If a pattern is given, then
- only tasks matching the pattern are displayed.
+ are defined using the "desc" command.
-[<tt>--trace</tt>{=_output_} (-t)]
+[<tt>--trace</tt> (-t)]
Turn on invoke/execute tracing. Also enable full backtrace on
- errors. The _output_ parameter is optional, but if specified it
- controls where the trace output is sent. If _output_ is
- <tt>stdout</tt>, then trace output is directed to stardard output.
- If _output_ is <tt>stderr</tt>, or if it is missing, then trace
- output is sent to standard error.
+ errors.
+
+[<tt>--usage</tt> (-h)]
+ Display a usage message and exit.
[<tt>--verbose</tt> (-v)]
Echo the Sys commands to standard output.
@@ -156,14 +97,6 @@ Options are:
[<tt>--version</tt> (-V)]
Display the program version and exit.
-[<tt>--where</tt> <em>pattern</em> (-W)]
- Display tasks that match <em>pattern</em> and the file and line
- number where the task is defined. By default this option will
- display all tasks, not just the tasks that have descriptions.
-
-[<tt>--no-deprecation-warnings</tt> (-W)]
- Do not display the deprecation warnings.
-
In addition, any command line option of the form
<em>VAR</em>=<em>VALUE</em> will be added to the environment hash
<tt>ENV</tt> and may be tested in the Rakefile.
diff --git a/doc/rake/glossary.rdoc b/doc/rake/glossary.rdoc
index a811764091..0ca1869306 100644
--- a/doc/rake/glossary.rdoc
+++ b/doc/rake/glossary.rdoc
@@ -37,9 +37,9 @@
not needed. This may change in the future.
[<b>prerequisites</b>]
- Every task has a set (possibly empty) of prerequisites. A
+ Every task has a set (possiblity empty) of prerequisites. A
prerequisite P to Task T is itself a task that must be invoked
- before Task T.
+ before Task T.
[<b>rule</b>]
A rule is a recipe for synthesizing a task when no task is
diff --git a/doc/rake/proto_rake.rdoc b/doc/rake/proto_rake.rdoc
index a9e33d11da..39b9b88c1f 100644
--- a/doc/rake/proto_rake.rdoc
+++ b/doc/rake/proto_rake.rdoc
@@ -4,54 +4,54 @@ This is the original 100 line prototype rake program.
---
#!/usr/bin/env ruby
-
+
require 'ftools'
-
+
class Task
TASKS = Hash.new
-
+
attr_reader :prerequisites
-
+
def initialize(task_name)
@name = task_name
@prerequisites = []
@actions = []
end
-
+
def enhance(deps=nil, &block)
@prerequisites |= deps if deps
@actions << block if block_given?
self
end
-
+
def name
@name.to_s
end
-
+
def invoke
@prerequisites.each { |n| Task[n].invoke }
execute if needed?
end
-
+
def execute
return if @triggered
@triggered = true
@actions.collect { |act| result = act.call(self) }.last
end
-
+
def needed?
true
end
-
+
def timestamp
Time.now
end
-
+
class << self
def [](task_name)
TASKS[intern(task_name)] or fail "Don't know how to rake #{task_name}"
end
-
+
def define_task(args, &block)
case args
when Hash
@@ -66,18 +66,18 @@ This is the original 100 line prototype rake program.
deps = deps.collect {|d| intern(d) }
get(task_name).enhance(deps, &block)
end
-
+
def get(task_name)
name = intern(task_name)
TASKS[name] ||= self.new(name)
end
-
+
def intern(task_name)
(Symbol === task_name) ? task_name : task_name.intern
end
end
end
-
+
class FileTask < Task
def needed?
return true unless File.exist?(name)
@@ -85,25 +85,25 @@ This is the original 100 line prototype rake program.
return false if latest_prereq.nil?
timestamp < latest_prereq
end
-
+
def timestamp
File.new(name.to_s).mtime
end
end
-
+
def task(args, &block)
Task.define_task(args, &block)
end
-
+
def file(args, &block)
FileTask.define_task(args, &block)
end
-
+
def sys(cmd)
puts cmd
system(cmd) or fail "Command Failed: [#{cmd}]"
end
-
+
def rake
begin
here = Dir.pwd
@@ -119,9 +119,9 @@ This is the original 100 line prototype rake program.
rescue Exception => ex
puts "rake aborted ... #{ex.message}"
puts ex.backtrace.find {|str| str =~ /Rakefile/ } || ""
- end
+ end
end
-
+
if __FILE__ == $0 then
rake
end
diff --git a/doc/rake/rakefile.rdoc b/doc/rake/rakefile.rdoc
index a00c9fd21e..f8ae72c32a 100644
--- a/doc/rake/rakefile.rdoc
+++ b/doc/rake/rakefile.rdoc
@@ -1,4 +1,4 @@
-= Rakefile Format (as of version 0.8.7)
+= Rakefile Format (as of version 0.8.3)
First of all, there is no special format for a Rakefile. A Rakefile
contains executable Ruby code. Anything legal in a ruby script is
@@ -27,7 +27,7 @@ parameter that is the name of the task.
=== Tasks with Prerequisites
-Any prerequisites are given as a list (enclosed in square brackets)
+Any prerequisites are given as a list (inclosed in square brackets)
following the name and an arrow (=>).
task :name => [:prereq1, :prereq2]
@@ -45,7 +45,7 @@ following ...
Actions are defined by passing a block to the +task+ method. Any Ruby
code can be placed in the block. The block may reference the task
-object via the block parameter.
+object via the block paramter..
task :name => [:prereq1, :prereq2] do |t|
# actions (may reference t)
@@ -119,14 +119,14 @@ Rake allows parallel execution of prerequisites using the following syntax:
end
In this example, +copy_files+ is a normal rake task. Its actions are
-executed whenever all of its prerequisites are done. The big
+executed whereever all of its prerequisites are done. The big
difference is that the prerequisites (+copy_src+, +copy_bin+ and
+copy_doc+) are executed in parallel. Each of the prerequisites are
run in their own Ruby thread, possibly allowing faster overall runtime.
=== Secondary Prerequisites
-If any of the primary prerequisites of a multitask have common secondary
+If any of the primary prerequites of a multitask have common secondary
prerequisites, all of the primary/parallel prerequisites will wait
until the common prerequisites have been run.
@@ -183,22 +183,6 @@ argument string should be quoted. Something like this:
(Quoting rules vary between operating systems and shells, so make sure
you consult the proper docs for your OS/shell).
-=== Tasks Arguments and the Environment
-
-Task argument values can also be picked up from the environment. For
-example, if the "release" task expected a parameter named
-"release_version", then either
-
- rake release[0.8.2]
-
-or
-
- RELEASE_VERSION rake release
-
-will work. Environment variable names must either match the task
-parameter exactly, or match an all-uppercase version of the task
-parameter.
-
=== Tasks that Expect Parameters
Parameters are only given to tasks that are setup to expect them. In
@@ -211,10 +195,10 @@ declared as:
task :name, [:first_name, :last_name]
The first argument is still the name of the task (:name in this case).
-The next two arguments are the names of the parameters expected by
+The next to argumements are the names of the parameters expected by
:name in an array (:first_name and :last_name in the example).
-To access the values of the parameters, the block defining the task
+To access the values of the paramters, the block defining the task
behaviour can now accept a second parameter:
task :name, [:first_name, :last_name] do |t, args|
@@ -226,8 +210,7 @@ The first argument of the block "t" is always bound to the current
task object. The second argument "args" is an open-struct like object
that allows access to the task arguments. Extra command line
arguments to a task are ignored. Missing command line arguments are
-picked up from matching environment variables. If there are no
-matching environment variables, they are given the nil value.
+given the nil value.
If you wish to specify default values for the arguments, you can use
the with_defaults method in the task body. Here is the above example
@@ -256,12 +239,11 @@ for tasks with arguments. For example:
There is an older format for declaring task parameters that omitted
the task argument array and used the :needs keyword to introduce the
dependencies. That format is still supported for compatibility, but
-is not recommended for use. The older format may be dropped in future
-versions of rake.
+is not recommended for use.
-== Accessing Task Programmatically
+== Accessing Task Programatically
-Sometimes it is useful to manipulate tasks programmatically in a
+Sometimes it is useful to manipulate tasks programatically in a
Rakefile. To find a task object, use the <tt>:[]</tt> operator on the
<tt>Rake::Task</tt>.
@@ -278,7 +260,7 @@ actions.
task :dont do
Rake::Task[:doit].clear
- end
+ end
Running this example:
@@ -287,7 +269,7 @@ Running this example:
DONE
$ rake dont doit
(in /Users/jim/working/git/rake/x)
- $
+ $
The ability to programmatically manipulate tasks gives rake very
powerful meta-programming capabilities w.r.t. task execution, but
@@ -312,7 +294,7 @@ Rake is able to find a file named "mycode.c", it will automatically
create a task that builds "mycode.o" from "mycode.c".
If the file "mycode.c" does not exist, rake will attempt
-to recursively synthesize a rule for it.
+to recursively synthesize a rule for it.
When a task is synthesized from a rule, the +source+ attribute of the
task is set to the matching source file. This allows us to write
@@ -330,7 +312,7 @@ The following rule is equivalent to the example above.
proc {|task_name| task_name.sub(/\.[^.]+$/, '.c') }
]) do |t|
sh "cc #{t.source} -c -o #{t.name}"
- end
+ end
<b>NOTE:</b> Because of a _quirk_ in Ruby syntax, parenthesis are
required on *rule* when the first argument is a regular expression.
@@ -340,7 +322,7 @@ The following rule might be used for Java files ...
rule '.java' => [
proc { |tn| tn.sub(/\.class$/, '.java').sub(/^classes\//, 'src/') }
] do |t|
- java_compile(t.source, t.name)
+ java_compile(t.source, t.name)
end
<b>NOTE:</b> +java_compile+ is a hypothetical method that invokes the
@@ -358,17 +340,12 @@ invoked. This make generated dependency files difficult to use. By
the time rake gets around to updating the dependencies file, it is too
late to load it.
-The +Rake.import+ command addresses this by specifying a file to be
-loaded _after_ the main rakefile is loaded, but _before_ any targets
-on the command line are invoked. In addition, if the file name
-matches an explicit task, that task is invoked before loading the
-file. This allows dependency files to be generated and used in a
-single rake command invocation.
-
-<b>NOTE:</b> Starting in Rake version 0.9.0, the top level +import+
-command is deprecated and we recommend using the scoped
-"+Rake.import+" command mentioned above. Future versions of Rake will
-drop support for the top level +import+ command.
+The +import+ command addresses this by specifying a file to be loaded
+_after_ the main rakefile is loaded, but _before_ any targets on the
+command line are specified. In addition, if the file name matches an
+explicit task, that task is invoked before loading the file. This
+allows dependency files to be generated and used in a single rake
+command invocation.
=== Example:
@@ -378,7 +355,7 @@ drop support for the top level +import+ command.
sh "makedepend -f- -- #{CFLAGS} -- #{t.prerequisites} > #{t.name}"
end
- Rake.import ".depends.mf"
+ import ".depends.mf"
If ".depends" does not exist, or is out of date w.r.t. the source
files, a new ".depends" file is generated using +makedepend+ before
@@ -397,9 +374,9 @@ then you need to use the +desc+ command to describe the task.
task :package => [ ... ] do ... end
The "-T" switch (or "--tasks" if you like to spell things out) will
-display a list of tasks that have a description. If you use +desc+ to
-describe your major tasks, you have a semi-automatic way of generating
-a summary of your Rake file.
+display a list of tasks that have a defined comment. If you use
++desc+ to describe your major tasks, you have a semi-automatic way of
+generating a summary of your Rake file.
traken$ rake -T
(in /home/.../rake)
@@ -426,12 +403,12 @@ common for task names to begin to clash. For example, if you might
have a main program and a set of sample programs built by a single
Rakefile. By placing the tasks related to the main program in one
namespace, and the tasks for building the sample programs in a
-different namespace, the task names will not will not interfere with
+different namespace, the task names will not will not interfer with
each other.
For example:
- namespace "main" do
+ namespace "main"
task :build do
# Build the main program
end
@@ -452,7 +429,7 @@ Nested namespaces are supported, so
Note that the name given in the +task+ command is always the unadorned
task name without any namespace prefixes. The +task+ command always
-defines a task in the current namespace.
+defines a task in the current namespace.
=== FileTasks
@@ -522,17 +499,17 @@ Or give it a glob pattern:
== Odds and Ends
-=== do/end versus { }
+=== do/end verses { }
Blocks may be specified with either a +do+/+end+ pair, or with curly
braces in Ruby. We _strongly_ recommend using +do+/+end+ to specify the
actions for tasks and rules. Because the rakefile idiom tends to
-leave off parentheses on the task/file/rule methods, unusual
+leave off parenthesis on the task/file/rule methods, unusual
ambiguities can arise when using curly braces.
For example, suppose that the method +object_files+ returns a list of
object files in a project. Now we use +object_files+ as the
-prerequisites in a rule specified with actions in curly braces.
+prerequistes in a rule specified with actions in curly braces.
# DON'T DO THIS!
file "prog" => object_files {
@@ -554,4 +531,4 @@ This is the proper way to specify the task ...
== See
-* README.rdoc -- Main documentation for Rake.
+* README -- Main documentation for Rake.
diff --git a/doc/rake/rational.rdoc b/doc/rake/rational.rdoc
index 0e1c33873d..f741e65bf8 100644
--- a/doc/rake/rational.rdoc
+++ b/doc/rake/rational.rdoc
@@ -38,13 +38,13 @@ too much work. And that was the end of that!
... Except I couldn't get the thought out of my head. What exactly
would be needed to make the about syntax work as a make file? Hmmm, you
would need to register the tasks, you need some way of specifying
-dependencies between tasks, and some way of kicking off the process.
+dependencies between tasks, and some way of kicking off the process.
Hey! What if we did ... and fifteen minutes later I had a working
prototype of Ruby make, complete with dependencies and actions.
I showed the code to my coworker and we had a good laugh. It was just
about a page worth of code that reproduced an amazing amount of the
-functionality of make. We were both truly stunned with the power of
+functionality of make. We were both truely stunned with the power of
Ruby.
But it didn't do everything make did. In particular, it didn't have
@@ -53,7 +53,7 @@ prerequisite files have a later timestamp). Obviously THAT would be a
pain to add and so Ruby Make would remain an interesting experiment.
... Except as I walked back to my desk, I started thinking about what
-file based dependencies would really need. Rats! I was hooked again,
+file based dependecies would really need. Rats! I was hooked again,
and by adding a new class and two new methods, file/timestamp
dependencies were implemented.
@@ -97,7 +97,7 @@ Here's another task with dependencies ...
end
Task :clobber depends upon task :clean, so :clean will be run before
-:clobber is executed.
+:clobber is executed.
Files are specified by using the "file" command. It is similar to the
task command, except that the task name represents a file, and the task
@@ -115,7 +115,7 @@ Here is a file based dependency that will compile "hello.cc" to
I normally specify file tasks with string (rather than symbols). Some
file names can't be represented by symbols. Plus it makes the
-distinction between them more clear to the casual reader.
+distinction between them more clear to the casual reader.
Currently writing a task for each and every file in the project would be
tedious at best. I envision a set of libraries to make this job
@@ -133,7 +133,7 @@ created for rake.
That's it. There's no documentation (other than whats in this
message). Does this sound interesting to anyone? If so, I'll continue
to clean it up and write it up and publish it on RAA. Otherwise, I'll
-leave it as an interesting exercise and a tribute to the power of Ruby.
+leave it as an interesting excerise and a tribute to the power of Ruby.
Why /might/ rake be interesting to Ruby programmers. I don't know,
perhaps ...
diff --git a/doc/rake/release_notes/rake-0.8.7.rdoc b/doc/rake/release_notes/rake-0.8.7.rdoc
index 884f4c659e..fb0c5d4e36 100644
--- a/doc/rake/release_notes/rake-0.8.7.rdoc
+++ b/doc/rake/release_notes/rake-0.8.7.rdoc
@@ -42,7 +42,7 @@ Otherwise, you can get it from the more traditional places:
Home Page:: http://rake.rubyforge.org/
Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
+GitHub:: git://github.com/jimweirich/rake.git
== Thanks
diff --git a/doc/rake/release_notes/rake-0.9.0.rdoc b/doc/rake/release_notes/rake-0.9.0.rdoc
deleted file mode 100644
index 823483cc27..0000000000
--- a/doc/rake/release_notes/rake-0.9.0.rdoc
+++ /dev/null
@@ -1,112 +0,0 @@
-= Rake 0.9.0 Released
-
-Rake version 0.9.0 has a number of bug fixes and enhancments (see
-below for more details). Additionally, the internals have be slightly
-restructured and improved.
-
-== Changes
-
-=== New Features / Enhancements / Bug Fixes in Version 0.9.0
-
-* Rake now warns when the deprecated :needs syntax used (and suggests
- the proper syntax in the warning).
-
-* Moved Rake DSL commands to top level ruby object 'main'. Rake DSL
- commands are no longer private methods in Object. (Suggested by
- James M. Lawrence/quix)
-
-* Rake now uses case-insensitive comparisons to find the Rakefile on Windows.
- Based on patch by Roger Pack.
-
-* Rake now requires (instead of loads) files in the test task. Patch by Cezary
- Baginski.
-
-* Fixed typos. Patches by Sean Scot August Moon and R.T. Lechow.
-
-* Rake now prints the Rakefile directory only when it's different from the
- current directory. Patch by Alex Chaffee.
-
-* Improved rakefile_location discovery on Windows. Patch by James Tucker.
-
-* Rake now recognizes "Windows Server" as a windows system. Patch by Matthias
- Lüdtke
-
-* Rake::RDocTask is deprecated. Use RDoc::Task from RDoc 2.4.2+ (require
- 'rdoc/task')
-
-* Rake::GemPackageTask is deprecated. Use Gem::PackageTask (require
- 'rubygems/package_task')
-
-* Rake now outputs various messages to $stderr instead of $stdout.
-
-* Rake no longer emits warnings for Config. Patch by Santiago Pastorino.
-
-* Removed Rake's DSL methods from the top level scope. If you need to
- call 'task :xzy' in your code, include Rake::DSL into your class, or
- put the code in a Rake::DSL.environment do ... end block.
-
-* Split rake.rb into individual files.
-
-* Support for the --where (-W) flag for showing where a task is defined.
-
-* Fixed quoting in test task.
- (http://onestepback.org/redmine/issues/show/44,
- http://www.pivotaltracker.com/story/show/1223138)
-
-* Fixed the silent option parsing problem.
- (http://onestepback.org/redmine/issues/show/47)
-
-* Fixed :verbose=>false flag on sh and ruby commands.
-
-* Rake command line options may be given by default in a RAKEOPT
- environment variable.
-
-* Errors in Rake will now display the task invocation chain in effect
- at the time of the error.
-
-* Accepted change by warnickr to not expand test patterns in shell
- (allowing more files in the test suite).
-
-* Fixed that file tasks did not perform prereq lookups in scope
- (Redmine #57).
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* James M. Lawrence (quix)
-* Roger Pack
-* Cezary Baginski
-* Sean Scot August Moon
-* R.T. Lechow
-* Alex Chaffee
-* James Tucker
-* Matthias Lüdtke
-* Santiago Pastorino
-
-Also, bit thanks to Eric Hodel for assisting with getting this release
-out the door (where "assisting" includes, but is not by any means
-limited to, "pushing" me to get it done).
-
--- Jim Weirich
diff --git a/doc/rake/release_notes/rake-0.9.1.rdoc b/doc/rake/release_notes/rake-0.9.1.rdoc
deleted file mode 100644
index 70be8b5688..0000000000
--- a/doc/rake/release_notes/rake-0.9.1.rdoc
+++ /dev/null
@@ -1,52 +0,0 @@
-= Rake 0.9.1 Released
-
-Rake version 0.9.1 has a number of bug fixes and enhancments (see
-below for more details). Additionally, the internals have be slightly
-restructured and improved.
-
-== Changes
-
-Rake 0.9.1 adds back the global DSL methods, but with deprecation
-messages. This allows Rake 0.9.1 to be used with older rakefiles with
-warning messages.
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* James M. Lawrence (quix)
-* Roger Pack
-* Cezary Baginski
-* Sean Scot August Moon
-* R.T. Lechow
-* Alex Chaffee
-* James Tucker
-* Matthias Lüdtke
-* Santiago Pastorino
-
-Also, bit thanks to Eric Hodel for assisting with getting this release
-out the door (where "assisting" includes, but is not by any means
-limited to, "pushing" me to get it done).
-
--- Jim Weirich
diff --git a/doc/rake/release_notes/rake-0.9.2.2.rdoc b/doc/rake/release_notes/rake-0.9.2.2.rdoc
deleted file mode 100644
index d804aba81c..0000000000
--- a/doc/rake/release_notes/rake-0.9.2.2.rdoc
+++ /dev/null
@@ -1,55 +0,0 @@
-= Rake 0.9.3 Released
-
-Rake version 0.9.3 is mainly bug fixes.
-
-== Changes
-
-* The rake test loader now removes arguments it has processed. Issue #51
-* Rake::TaskArguments now responds to #values_at
-* RakeFileUtils.verbose_flag = nil silences output the same as 0.8.7
-* Rake tests are now directory-independent
-* Rake tests are no longer require flexmock
-* Commands constant is no longer polluting top level namespace.
-* Show only the interesting portion of the backtrace by default (James M. Lawrence).
-* Added --reduce-compat option to remove backward compatible DSL hacks (James M. Lawrence).
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* James M. Lawrence (quix)
-* Roger Pack
-* Cezary Baginski
-* Sean Scot August Moon
-* R.T. Lechow
-* Alex Chaffee
-* James Tucker
-* Matthias Lüdtke
-* Santiago Pastorino
-
-Also, bit thanks to Eric Hodel for assisting with getting this release
-out the door (where "assisting" includes, but is not by any means
-limited to, "pushing" me to get it done).
-
--- Jim Weirich
diff --git a/doc/rake/release_notes/rake-0.9.2.rdoc b/doc/rake/release_notes/rake-0.9.2.rdoc
deleted file mode 100644
index 2314193f5e..0000000000
--- a/doc/rake/release_notes/rake-0.9.2.rdoc
+++ /dev/null
@@ -1,49 +0,0 @@
-= Rake 0.9.2 Released
-
-Rake version 0.9.2 has a few small fixes. See below for details.
-
-== Changes
-
-* Support for Ruby 1.8.6 was fixed.
-* Global DSL warnings now honor --no-deprecate
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* James M. Lawrence (quix)
-* Roger Pack
-* Cezary Baginski
-* Sean Scot August Moon
-* R.T. Lechow
-* Alex Chaffee
-* James Tucker
-* Matthias Lüdtke
-* Santiago Pastorino
-
-Also, bit thanks to Eric Hodel for assisting with getting this release
-out the door (where "assisting" includes, but is not by any means
-limited to, "pushing" me to get it done).
-
--- Jim Weirich
diff --git a/doc/rake/release_notes/rake-0.9.3.rdoc b/doc/rake/release_notes/rake-0.9.3.rdoc
deleted file mode 100644
index 4476b4f184..0000000000
--- a/doc/rake/release_notes/rake-0.9.3.rdoc
+++ /dev/null
@@ -1,102 +0,0 @@
-= Rake 0.9.3 Released
-
-Rake version 0.9.3 contains some new, backwards compatible features and
-a number of bug fixes.
-
-== Changes
-
-=== New Features
-
-* Multitask tasks now use a thread pool. Use -j to limit the number of
- available threads.
-
-* Use -m to turn regular tasks into multitasks (use at your own risk).
-
-* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to
- programatically add rake task libraries.
-
-* You can specific backtrace suppression patterns (see
- --supress-backtrace)
-
-* Directory tasks can now take prerequisites and actions
-
-* Use --backtrace to request a full backtrace without the task trace.
-
-* You can say "--backtrace=stdout" and "--trace=stdout" to route trace
- output to standard output rather than standard error.
-
-* Optional 'phony' target (enable with 'require 'rake/phony'") for
- special purpose builds.
-
-* Task#clear now clears task comments as well as actions and
- prerequisites. Task#clear_comment will specifically target comments.
-
-* The --all option will force -T and -D to consider all the tasks,
- with and without descriptions.
-
-=== Bug Fixes
-
-* Semi-colons in windows rakefile paths now work.
-
-* Improved Control-C support when invoking multiple test suites.
-
-* egrep method now reads files in text mode (better support for
- Windows)
-
-* Better deprecation line number reporting.
-
-* The -W option now works with all tasks, whether they have a
- description or not.
-
-* File globs in rake should not be sorted alphabetically, independent
- of file system and platform.
-
-* Numerous internal improvements.
-
-* Documentation typos and fixes.
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://github.com/jimweirich/rake
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* Aaron Patterson
-* Dylan Smith
-* Jo Liss
-* Jonas Pfenniger
-* Kazuki Tsujimoto
-* Michael Bishop
-* Michael Elufimov
-* NAKAMURA Usaku
-* Ryan Davis
-* Sam Grönblom
-* Sam Phippen
-* Sergio Wong
-* Tay Ray Chuan
-* grosser
-* quix
-
-Also, many thanks to Eric Hodel for assisting with getting this release
-out the door.
-
--- Jim Weirich
diff --git a/doc/rake/release_notes/rake-0.9.4.rdoc b/doc/rake/release_notes/rake-0.9.4.rdoc
deleted file mode 100644
index e5d45b46ab..0000000000
--- a/doc/rake/release_notes/rake-0.9.4.rdoc
+++ /dev/null
@@ -1,110 +0,0 @@
-= Rake 0.9.4 Released
-
-Rake version 0.9.4 contains a number of bug fixes.
-
-== Changes
-
-=== New Features (in 0.9.3)
-
-* Multitask tasks now use a thread pool. Use -j to limit the number of
- available threads.
-
-* Use -m to turn regular tasks into multitasks (use at your own risk).
-
-* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to
- programatically add rake task libraries.
-
-* You can specific backtrace suppression patterns (see
- --supress-backtrace)
-
-* Directory tasks can now take prerequisites and actions
-
-* Use --backtrace to request a full backtrace without the task trace.
-
-* You can say "--backtrace=stdout" and "--trace=stdout" to route trace
- output to standard output rather than standard error.
-
-* Optional 'phony' target (enable with 'require 'rake/phony'") for
- special purpose builds.
-
-* Task#clear now clears task comments as well as actions and
- prerequisites. Task#clear_comment will specifically target comments.
-
-* The --all option will force -T and -D to consider all the tasks,
- with and without descriptions.
-
-=== Bug Fixes (0.9.3)
-
-* Semi-colons in windows rakefile paths now work.
-
-* Improved Control-C support when invoking multiple test suites.
-
-* egrep method now reads files in text mode (better support for
- Windows)
-
-* Better deprecation line number reporting.
-
-* The -W option now works with all tasks, whether they have a
- description or not.
-
-* File globs in rake should not be sorted alphabetically, independent
- of file system and platform.
-
-* Numerous internal improvements.
-
-* Documentation typos and fixes.
-
-=== Bug Fixes (0.9.4)
-
-* Exit status with failing tests is not correctly set to non-zero.
-
-* Simplified syntax for phony task (for older versions of RDoc).
-
-* Stand alone FileList usage gets glob function (without loading in
- extra dependencies)
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://github.com/jimweirich/rake
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* Aaron Patterson
-* Dylan Smith
-* Jo Liss
-* Jonas Pfenniger
-* Kazuki Tsujimoto
-* Michael Bishop
-* Michael Elufimov
-* NAKAMURA Usaku
-* Ryan Davis
-* Sam Grönblom
-* Sam Phippen
-* Sergio Wong
-* Tay Ray Chuan
-* grosser
-* quix
-
-Also, many thanks to Eric Hodel for assisting with getting this release
-out the door.
-
--- Jim Weirich
diff --git a/doc/rake/release_notes/rake-0.9.5.rdoc b/doc/rake/release_notes/rake-0.9.5.rdoc
deleted file mode 100644
index 88e2d7cf3b..0000000000
--- a/doc/rake/release_notes/rake-0.9.5.rdoc
+++ /dev/null
@@ -1,114 +0,0 @@
-= Rake 0.9.5 Released
-
-Rake version 0.9.5 contains a number of bug fixes.
-
-== Changes
-
-=== New Features (in 0.9.3)
-
-* Multitask tasks now use a thread pool. Use -j to limit the number of
- available threads.
-
-* Use -m to turn regular tasks into multitasks (use at your own risk).
-
-* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to
- programatically add rake task libraries.
-
-* You can specific backtrace suppression patterns (see
- --supress-backtrace)
-
-* Directory tasks can now take prerequisites and actions
-
-* Use --backtrace to request a full backtrace without the task trace.
-
-* You can say "--backtrace=stdout" and "--trace=stdout" to route trace
- output to standard output rather than standard error.
-
-* Optional 'phony' target (enable with 'require 'rake/phony'") for
- special purpose builds.
-
-* Task#clear now clears task comments as well as actions and
- prerequisites. Task#clear_comment will specifically target comments.
-
-* The --all option will force -T and -D to consider all the tasks,
- with and without descriptions.
-
-=== Bug Fixes (0.9.3)
-
-* Semi-colons in windows rakefile paths now work.
-
-* Improved Control-C support when invoking multiple test suites.
-
-* egrep method now reads files in text mode (better support for
- Windows)
-
-* Better deprecation line number reporting.
-
-* The -W option now works with all tasks, whether they have a
- description or not.
-
-* File globs in rake should not be sorted alphabetically, independent
- of file system and platform.
-
-* Numerous internal improvements.
-
-* Documentation typos and fixes.
-
-=== Bug Fixes (0.9.4)
-
-* Exit status with failing tests is not correctly set to non-zero.
-
-* Simplified syntax for phony task (for older versions of RDoc).
-
-* Stand alone FileList usage gets glob function (without loading in
- extra dependencies)
-
-=== Bug Fixes (0.9.5)
-
-* --trace and --backtrace no longer swallow following task names.
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://github.com/jimweirich/rake
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* Aaron Patterson
-* Dylan Smith
-* Jo Liss
-* Jonas Pfenniger
-* Kazuki Tsujimoto
-* Michael Bishop
-* Michael Elufimov
-* NAKAMURA Usaku
-* Ryan Davis
-* Sam Grönblom
-* Sam Phippen
-* Sergio Wong
-* Tay Ray Chuan
-* grosser
-* quix
-
-Also, many thanks to Eric Hodel for assisting with getting this release
-out the door.
-
--- Jim Weirich
diff --git a/doc/rake/release_notes/rake-0.9.6.rdoc b/doc/rake/release_notes/rake-0.9.6.rdoc
deleted file mode 100644
index e1c5f88ca7..0000000000
--- a/doc/rake/release_notes/rake-0.9.6.rdoc
+++ /dev/null
@@ -1,127 +0,0 @@
-= Rake 0.9.6 Released
-
-Rake version 0.9.6 contains a number of fixes mainly for merging
-Rake into the Ruby source tree and fixing tests.
-
-== Changes
-
-=== New Features (in 0.9.3)
-
-* Multitask tasks now use a thread pool. Use -j to limit the number of
- available threads.
-
-* Use -m to turn regular tasks into multitasks (use at your own risk).
-
-* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to
- programatically add rake task libraries.
-
-* You can specific backtrace suppression patterns (see
- --supress-backtrace)
-
-* Directory tasks can now take prerequisites and actions
-
-* Use --backtrace to request a full backtrace without the task trace.
-
-* You can say "--backtrace=stdout" and "--trace=stdout" to route trace
- output to standard output rather than standard error.
-
-* Optional 'phony' target (enable with 'require 'rake/phony'") for
- special purpose builds.
-
-* Task#clear now clears task comments as well as actions and
- prerequisites. Task#clear_comment will specifically target comments.
-
-* The --all option will force -T and -D to consider all the tasks,
- with and without descriptions.
-
-=== Bug Fixes (0.9.3)
-
-* Semi-colons in windows rakefile paths now work.
-
-* Improved Control-C support when invoking multiple test suites.
-
-* egrep method now reads files in text mode (better support for
- Windows)
-
-* Better deprecation line number reporting.
-
-* The -W option now works with all tasks, whether they have a
- description or not.
-
-* File globs in rake should not be sorted alphabetically, independent
- of file system and platform.
-
-* Numerous internal improvements.
-
-* Documentation typos and fixes.
-
-=== Bug Fixes (0.9.4)
-
-* Exit status with failing tests is not correctly set to non-zero.
-
-* Simplified syntax for phony task (for older versions of RDoc).
-
-* Stand alone FileList usage gets glob function (without loading in
- extra dependencies)
-
-=== Bug Fixes (0.9.5)
-
-* --trace and --backtrace no longer swallow following task names.
-
-=== Bug Fixes (0.9.6)
-
-* Better trace output when using a multi-threaded Rakefile.
-* Arg parsing is now consistent for tasks and multitasks.
-* Skip exit code test in versions of Ruby that don't support it well.
-
-Changes for better integration with the Ruby source tree:
-
-* Fix version literal for Ruby source tree build.
-* Better loading of libraries for testing in Ruby build.
-* Use the ruby version provided by Ruby's tests.
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://github.com/jimweirich/rake
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* Aaron Patterson
-* Dylan Smith
-* Jo Liss
-* Jonas Pfenniger
-* Kazuki Tsujimoto
-* Michael Bishop
-* Michael Elufimov
-* NAKAMURA Usaku
-* Ryan Davis
-* Sam Grönblom
-* Sam Phippen
-* Sergio Wong
-* Tay Ray Chuan
-* grosser
-* quix
-
-Also, many thanks to Eric Hodel for assisting with getting this release
-out the door.
-
--- Jim Weirich
diff --git a/doc/re.rdoc b/doc/re.rdoc
index 1c68533a8d..d629a4a79e 100644
--- a/doc/re.rdoc
+++ b/doc/re.rdoc
@@ -24,36 +24,6 @@ string matches itself.
Specifically, <tt>/st/</tt> requires that the string contains the letter
_s_ followed by the letter _t_, so it matches _haystack_, also.
-== <tt>=~</tt> and Regexp#match
-
-Pattern matching may be achieved by using <tt>=~</tt> operator or Regexp#match
-method.
-
-=== <tt>=~</tt> operator
-
-<tt>=~</tt> is Ruby's basic pattern-matching operator. When one operand is a
-regular expression and the other is a string then the regular expression is
-used as a pattern to match against the string. (This operator is equivalently
-defined by Regexp and String so the order of String and Regexp do not matter.
-Other classes may have different implementations of <tt>=~</tt>.) If a match
-is found, the operator returns index of first match in string, otherwise it
-returns +nil+.
-
- /hay/ =~ 'haystack' #=> 0
- 'haystack' =~ /hay/ #=> 0
- /a/ =~ 'haystack' #=> 1
- /u/ =~ 'haystack' #=> nil
-
-Using <tt>=~</tt> operator with a String and Regexp the <tt>$~</tt> global
-variable is set after a successful match. <tt>$~</tt> holds a MatchData
-object. Regexp.last_match is equivalent to <tt>$~</tt>.
-
-=== Regexp#match method
-
-#match method return a MatchData object :
-
- /st/.match('haystack') #=> #<MatchData "st">
-
== Metacharacters and Escapes
The following are <i>metacharacters</i> <tt>(</tt>, <tt>)</tt>,
@@ -141,7 +111,7 @@ matches any character in the Unicode _Nd_ category.
* <tt>/[[:print:]]/</tt> - Like [:graph:], but includes the space character
* <tt>/[[:punct:]]/</tt> - Punctuation character
* <tt>/[[:space:]]/</tt> - Whitespace character (<tt>[:blank:]</tt>, newline,
- carriage return, etc.)
+ carriage return, etc.)
* <tt>/[[:upper:]]/</tt> - Uppercase alphabetical
* <tt>/[[:xdigit:]]/</tt> - Digit allowed in a hexadecimal number (i.e.,
0-9a-fA-F)
@@ -199,7 +169,7 @@ jeopardises the overall match.
Parentheses can be used for <i>capturing</i>. The text enclosed by the
<i>n</i><sup>th</sup> group of parentheses can be subsequently referred to
with <i>n</i>. Within a pattern use the <i>backreference</i>
-<tt>\n</tt>; outside of the pattern use
+<tt>\</tt><i>n</i>; outside of the pattern use
<tt>MatchData[</tt><i>n</i><tt>]</tt>.
# 'at' is captured by the first group of parentheses, then referred to
@@ -250,7 +220,7 @@ quantified as one <i>atomic</i> whole.
The <tt>(?:</tt>...<tt>)</tt> construct provides grouping without
capturing. That is, it combines the terms it contains into an atomic whole
without creating a backreference. This benefits performance at the slight
-expense of readability.
+expense of readabilty.
# The group of parentheses captures 'n' and the second 'ti'. The
# second group is referred to later with the backreference \2
@@ -271,7 +241,7 @@ it matches becomes fixed for the remainder of the match, unless the entire
subexpression must be abandoned and subsequently revisited. In this
way <i>pat</i> is treated as a non-divisible whole. Atomic grouping is
typically used to optimise patterns so as to prevent the regular
-expression engine from backtracking needlessly.
+expression engine from backtracking needlesly.
# The <tt>"</tt> in the pattern below matches the first character of
# the string, then <tt>.*</tt> matches <i>Quote"</i>. This causes the
@@ -503,13 +473,6 @@ expression enclosed by the parentheses.
/a(?i:b)c/.match('aBc') #=> #<MatchData "aBc">
/a(?i:b)c/.match('abc') #=> #<MatchData "abc">
-Options may also be used with <tt>Regexp.new</tt>:
-
- Regexp.new("abc", Regexp::IGNORECASE) #=> /abc/i
- Regexp.new("abc", Regexp::MULTILINE) #=> /abc/m
- Regexp.new("abc # Comment", Regexp::EXTENDED) #=> /abc # Comment/x
- Regexp.new("abc", Regexp::IGNORECASE | Regexp::MULTILINE) #=> /abc/mi
-
== Free-Spacing Mode and Comments
As mentioned above, the <tt>x</tt> option enables <i>free-spacing</i>
@@ -562,40 +525,6 @@ regexp's encoding can be explicitly fixed by supplying
#=> Encoding::CompatibilityError: incompatible encoding regexp match
(ISO-8859-1 regexp with UTF-8 string)
-== Special global variables
-
-Pattern matching sets some global variables :
-* <tt>$~</tt> is equivalent to Regexp.last_match;
-* <tt>$&</tt> contains the complete matched text;
-* <tt>$`</tt> contains string before match;
-* <tt>$'</tt> contains string after match;
-* <tt>$1</tt>, <tt>$2</tt> and so on contain text matching first, second, etc
- capture group;
-* <tt>$+</tt> contains last capture group.
-
-Example:
-
- m = /s(\w{2}).*(c)/.match('haystack') #=> #<MatchData "stac" 1:"ta" 2:"c">
- $~ #=> #<MatchData "stac" 1:"ta" 2:"c">
- Regexp.latch_match #=> #<MatchData "stac" 1:"ta" 2:"c">
-
- $& #=> "stac"
- # same as m[0]
- $` #=> "hay"
- # same as m.pre_match
- $' #=> "k"
- # same as m.post_match
- $1 #=> "ta"
- # same as m[1]
- $2 #=> "c"
- # same as m[2]
- $3 #=> nil
- # no third group in pattern
- $+ #=> "c"
- # same as m[-1]
-
-These global variables are thread-local and method-local variables.
-
== Performance
Certain pathological combinations of constructs can lead to abysmally bad
@@ -604,8 +533,8 @@ performance.
Consider a string of 25 <i>a</i>s, a <i>d</i>, 4 <i>a</i>s, and a
<i>c</i>.
- s = 'a' * 25 + 'd' + 'a' * 4 + 'c'
- #=> "aaaaaaaaaaaaaaaaaaaaaaaaadaaaac"
+ s = 'a' * 25 + 'd' 'a' * 4 + 'c'
+ #=> "aaaaaaaaaaaaaaaaaaaaaaaaadadadadac"
The following patterns match instantly as you would expect:
@@ -615,7 +544,7 @@ The following patterns match instantly as you would expect:
However, the following pattern takes appreciably longer:
- /(b|a+)*c/ =~ s #=> 26
+ /(b|a+)*c/ =~ s #=> 32
This happens because an atom in the regexp is quantified by both an
immediate <tt>+</tt> and an enclosing <tt>*</tt> with nothing to
@@ -644,10 +573,10 @@ repeatedly so as to satisfy as many of the optional matches as it can
while still matching the mandatory 29. It is plain to us that none of the
optional matches can succeed, but this fact unfortunately eludes Ruby.
-The best way to improve performance is to significantly reduce the amount of
-backtracking needed. For this case, instead of individually matching 29
-optional <i>a</i>s, a range of optional <i>a</i>s can be matched all at once
-with <i>a{0,29}</i>:
+One approach for improving performance is to anchor the match to the
+beginning of the string, thus significantly reducing the amount of
+backtracking needed.
- Regexp.new('a{0,29}' + 'a' * 29) =~ 'a' * 29
+ Regexp.new('\A' 'a?' * 29 + 'a' * 29).match('a' * 29)
+ #=> #<MatchData "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa">
diff --git a/doc/rubygems/ChangeLog b/doc/rubygems/ChangeLog
new file mode 100644
index 0000000000..2e67a4c2c5
--- /dev/null
+++ b/doc/rubygems/ChangeLog
@@ -0,0 +1,5689 @@
+# -*- coding: utf-8 -*-
+
+2010-02-20 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: 1.3.6.
+ * test/*: Windows test fixes
+ * lib/rubygems/remote_fetcher.rb: Fix same file detection on windows.
+
+2010-02-15 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/config_file.rb: Fix use of ConfigFile#api_key= vs
+ #rubygems_api_key=. Patch by Nick Quaranto.
+
+2010-02-12 Eric Hodel <drbrain@segment7.net>
+
+ * Rakefile: RubyGems doesn't depend on previous RubyGems.
+
+2010-02-11 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: http://rubygems.org is now the default source.
+ * lib/rubygems/dependency.rb: Only warn once about
+ #version_requirement
+
+2010-02-09 Eric Hodel <drbrain@segment7.net>
+
+ * bin/update_rubygems: Use system, exec more correctly, remove
+ useless puts.
+ * lib/rubygems/commands/query_command.rb: List every version when
+ --prerelease --all is given.
+
+2010-02-08 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/dependency_command.rb: Support --prerelease.
+ * lib/rubygems/commands/fetch_command.rb: Support --prerelease.
+ * lib/rubygems/format.rb: Don't crash on empty files. Bug #27292 by
+ Ian Ragsdale.
+ * lib/rubygems/server.rb: Fix markup. Bug #27045 by Eric Young.
+ * History.txt: RubyGems 1.3.6 release notes.
+
+2010-02-07 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/dependency_installer.rb: Allow prerelease gems to
+ depend on non-prerelease gems.
+
+2010-02-06 Eric Hodel <drbrain@segment7.net>
+
+ * test/test_gem_commands_specification_command.rb: Don't enforce YAML
+ format. Patch #27791 by Aaron Patterson.
+ * lib/rubygems/version.rb: Allow captial letters in prerelease
+ versions.
+ * lib/rubygems/config_file.rb: Explain format of ~/.gemrc. Bug
+ #27698 by J Smith.
+ * lib/rubygems/gem_path_searcher.rb: Handle nil require_paths.
+ Patch #27334 by Roger Pack.
+ * lib/rubygems/server.rb: Handle --bind option. Patch #27357 by
+ Bruno Michel.
+ * lib/rubygems/doc_manager: gem rdoc --overwrite to preserve built
+ rdoc. Patch #25982 by Akinori MUSHA.
+ * lib/rubygems/commands/which_command.rb: Fail if no paths were
+ found. Adapted patch #27681 by Caio Chassot.
+ * lib/rubygems/remote_fetcher.rb: Don't copy if the file is where we
+ want it. Patch #27409 by Jakub Šťastný.
+
+2010-02-01 John Barnette <jbarnette@rubygems.org>
+
+ * lib/rubygems/command*: Add 'gem push' and 'gem owner' for
+ interacting with modern/Gemcutter sources [Nick Quaranto]
+
+2010-01-18 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/dependency_list.rb: Ignore development dependencies
+ unless explicitly needed. Bug #27608 by Roger Pack.
+
+2010-01-12 John Barnette <jbarnette@rubygems.org>
+
+ * Rakefile: Don't add development deps when building the
+ rubygems-update gem, it borks older versions when they're updating
+ from a stub index.
+
+2009-12-22 Evan Phoenix <evan@fallingsnow.net>
+
+ * lib/rubygems/spec_fetcher.rb: Don't bother re-Marshaling the spec
+ YAML list.
+
+2009-11-04 John Barnette <jbarnette@rubygems.org>
+
+ * lib/rubygems/timer.rb: Removed. The deprecation sun set in July.
+
+2009-10-14 John Barnette <jbarnette@rubygems.org>
+
+ * lib/rubygems/dependency.rb: Burndown/cleanup. Refactored code
+ and tests. Gem::Dependency.version_requirement(s) is deprecated in
+ favor of Gem::Dependency.requirement.
+
+ * lib/rubygems/requirement.rb: Burndown/cleanup. Refactored code
+ and tests. See test/support/shortcuts.rb for some new test helpers.
+
+2009-10-13 John Barnette <jbarnette@rubygems.org>
+
+ * lib/rubygems/local_remote_options.rb: Make --source additive,
+ not exclusive. If exclusive sources are desired, use
+ --clear-sources first.
+
+2009-09-29 John Barnette <jbarnette@rubyforge.org>
+
+ * lib/rubygems/spec_fetcher.rb: Be slightly more robust when faced
+ with corrupted indexes.
+
+2009-09-03 John Barnette <jbarnette@rubyforge.org>
+
+ * LOTS: Use "raise" consistently, not "fail".
+
+2009-09-01 John Barnette <jbarnette@rubyforge.org>
+
+ * lib/rubygems/version.rb: Gem::Version immutability
+ burndown. Changed canonical internal representation to an
+ Array. Refactored significant amounts of the internals for
+ clarity. Breaking change: Gem::Version::Requirement is no longer
+ available, use Gem::Requirement instead. Breaking change: custom
+ YAML marshaling is gone. Credit to Yehuda Katz for certain bits of
+ a related patch.
+ * test/test_gem_dependency.rb: Moved a bunch of tests over from
+ test_gem_version.rb. Work in progress.
+ * test/test_gem_specification.rb: Removed a failing YAML
+ test. Many more will be going away shortly.
+ * test/test_gem_version.rb: Significant refactoring for
+ maintainability and clarity. Moved a ton of poorly-placed tests to
+ test_gem_dependency.rb for future refactoring.
+
+2009-08-19 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/rubygems.rb: Cleanup of rdoc and file layout.
+ * lib/rubygems/versions.rb: Added Version#spermy_recommendation
+ and fixed bug in Version::Part#inspect. General cleanup.
+
+2009-07-29 John Barnette <jbarnette@rubyforge.org>
+
+ * lib/rubygems/package/tar_input.rb: Add Maglev to the list of
+ implementations with working Zlib. Bug #26790 by Peter McLain.
+
+2009-07-21 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: 1.3.5.
+ * lib/rubygems/package.rb: Remove dangling digest require. Reported
+ by Jeremy Kemper.
+
+2009-06-25 Eric Hodel <drbrain@segment7.net>
+
+ * release_notes/: Merged into History.txt for Hoe.
+ * lib/rubygems/commands/setup_command.rb: Streamlined install text.
+
+2009-06-23 Eric Hodel <drbrain@segment7.net>
+
+ * release_notes/rel_1_3_5.rdoc: RubyGems 1.3.5 release notes.
+ * lib/rubygems/builder.rb: Only print out with verbose.
+ * lib/rubygems/package_task.rb: Only print out with -t.
+
+2009-06-12 Ryan Davis <ryand@zenspider.com>
+
+ * Rakefile: Switched to Hoe.
+
+2009-06-10 Phil Hagelberg <technomancy@gmail.com>
+
+ * lib/rubygems/installer.rb: --user-install is no longer enabled by
+ default.
+ * lib/rubygems/source_index.rb: Fix use of prerelease gems.
+
+2009-06-04 Eric Hodel <drbrain@segment7.net>
+
+ * util/gem_prelude.rb.template: Backports from 1.9.
+
+2009-06-03 Eric Hodel <drbrain@segment7.net>
+
+ * bin/gem: Support 1.8.6+
+ * lib/rubygems/digest*: Removed, support dropped for Ruby < 1.8.6
+ * lib/rubygems/installer.rb: Support env(1) in wrong path, use
+ /bin/sh if shebang has options. By Nobu, ruby trunk r22853.
+ * lib/rubygems/config_file.rb: Switch to stdcall for appdata folder.
+ [ruby-core:22601].
+ * lib/rubygems.rb: Use only File::expand_path on 1.9 for home dir.
+ Don't recklessly create directories. Simplify RbConfig::datadir
+ definition.
+
+2009-05-30 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/which_command.rb: Only print out directory
+ information to a TTY.
+ * lib/rubygems/rubygems_version.rb: 1.3.4.
+ * doc/release_notes/rel_1_3_4.rdoc: RubyGems 1.3.4 release notes.
+
+2009-05-28 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/setup_command.rb: Fix --format-executable
+ option name.
+ * lib/rubygems/requirement.rb: Fix typo in #parse. Bug #26000 by
+ Mike Gunderloy.
+
+2009-05-21 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Add 'dev' and svn revision for -1 RUBY_PATCHLEVEL
+ and RUBY_REVISION.
+
+2009-05-20 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/defaults.rb: Restore 1.9.1 path behavior.
+ * lib/rubygems/specification.rb: Fix undefined ivar warning.
+ * lib/rubygems/indexer.rb: Force loading of builder gem.
+ * test/gemutilities.rb: Remove gem_prelude code by hand to avoid 1.9
+ warnings.
+
+2009-05-19 Luis Lavena <luislavena@gmail.com>
+
+ * test/test_gem_specification.rb: skip symlinks tests on Windows.
+ * test/test_gem_commands_install_command.rb: skip chmod test on
+ Windows.
+
+2009-05-15 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems*: Fix 1.9 warnings about circular require.
+
+2009-05-12 Daniel Berger <djberg96@gmail.com>
+
+ * lib/rubygems/remote_fetcher.rb: Fixed the download method in the
+ remote_fetcher.rb file so that it handles local installs on MS
+ Windows when using explicit paths that aren't on the 'C:' drive.
+ Bug #25882 by Lars Christensen.
+ * lib/rubygems/commands/update_command.rb: Replaced deprecated
+ Gem::SourceIndex method 'search' with 'find_name' in the 'execute'
+ method.
+
+2009-05-07 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/query_command.rb: Support prerelease version
+ listing (--prerelease), list locally installed prereleases.
+ * lib/rubygems/source_info_cache.rb: Gem::SourceInfoCache is
+ officially unsupported, maintaining its tests is hard.
+ * lib/rubygems/source_index.rb: Add #all_gems, fix #remove_spec,
+ #search to work with it. Prerelease gems can now be used.
+
+2009-05-04 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/rubygems_version.rb: 1.3.3.
+ * doc/release_notes/rel_1_3_3.rdoc: RubyGems 1.3.3 release notes.
+ * lib/rubygems/specification.rb: Default has_rdoc to true, ignore
+ its value.
+ * lib/rubygems/doc_manager.rb: Always generate RDoc regardless of
+ #has_rdoc?
+ * lib/rubygems.rb: Raise Gem::LoadError if Kernel#gem fails due to
+ previously-loaded gem. Bug reported by Alf Mikula.
+
+2009-05-02 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/server_command.rb: Allow port names with
+ --port.
+ * lib/rubygems/requirement.rb: Match prerelease versions and ~>
+ correctly. Patch #25759 by Yossef Mendelssohn.
+
+2009-05-01 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Check bindir for executables, not
+ root. Bug reported by David Chelimsky. Remove Time.today, no way
+ to override it before RubyGems loads. Bug #25564 by Emanuele
+ Vicentini. Raise Gem::Exception for #installation_path when not
+ installed. Bug #25741 by Daniel Berger. Don't error in #validate
+ when homepage is nil. Bug #25677 by Mike Burrows.
+ * lib/rubygems/commands/cleanup_command.rb: Clean up --user-install
+ gems. Bug #25516 by Brett Eisenberg.
+ * lib/rubygems/uninstaller.rb: Uninstall executables from the correct
+ directory. Bug #25555 by Brett Eisenberg.
+ * lib/rubygems/server.rb: Add search that jumps to RDoc. Patch
+ #22959 by Vladimir Dobriakov.
+
+2009-05-01 James Tucker <jftucker@gmail.com>
+
+ * lib/rubygems.rb: Gem.bin_path now escapes paths with spaces.
+
+2009-04-30 Daniel Berger <djberg96@gmail.com>
+
+ * lib/rubygems/commands/install_command.rb: Replaced deprecated
+ Gem::SourceIndex method 'search' with 'find_name' when using
+ the -t option. Fixes bug # 25632 by Daniel Berger.
+
+2009-04-30 James Tucker <jftucker@gmail.com>
+
+ * lib/rubygems/ext/rake_builder.rb: Use explicit ruby command loading
+ rubygems to invoke rake.
+
+2009-04-24 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/specification_command.rb: Added requesting
+ single fields from a spec.
+
+2009-04-23 James Tucker <jftucker@gmail.com>
+
+ * lib/rubygems/ext/configure_builder.rb: Support Gem::Command.build_args.
+
+2009-04-15 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/rubygems_version.rb: 1.3.2.
+
+2009-04-14 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Complain when summary and
+ description are identical.
+
+2009-04-08 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Strip directories, complain for
+ non-files in #validate.
+
+2009-04-07 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Implement #initialize_copy.
+ * lib/rubygems/commands/contents_command.rb: Add --no-prefix and
+ --all.
+
+2009-04-06 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/defaults.rb: Don't allow gem to overwrite ruby on
+ install. Fixes bug #24958 by Michael Soulier.
+ * doc/release_notes/rel_1_3_2.rdoc: Preliminary 1.3.2 release notes.
+ * Rakefile: Trim off some stale code, switch to Manifest.txt, one
+ step closer to Hoe!
+
+2009-04-06 Daniel Berger <djberg96@gmail.com>
+
+ * test/test_gem_ext_configure_builder.rb: Better handling for MS
+ Windows.
+ * test/gemutilities.rb: Added the make_command and vc_windows? helper
+ methods.
+
+2009-04-03 Eric Hodel <drbrain@segment7.net>
+
+ * lib/: RDoc improvements.
+
+2009-04-02 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/setup_command.rb: Fix --destdir. Patch
+ #24970 by Richard Brown.
+
+2009-04-02 Phil Hagelberg <technomancy@gmail.com>
+
+ * lib/rubygems/version.rb: Documentation of prerelease
+ versions. See http://technomancy.us/123 for details.
+
+2009-03-31 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/spec_fetcher.rb: If the cached specs file won't load,
+ refetch. Bug #24961 by Dylan Stamat.
+ * lib/rubygems/defaults.rb: Add a sanity check to
+ Gem.default_exec_format. Workaround for bug #24958 by Michael
+ Soulier.
+ * lib/rubygems/commands/setup_command.rb: Fix confusion with option
+ names. Patch #24971 by Richard Brown.
+ * lib/rubygems/specification.rb: Make #validate complain about
+ not-files.
+ * lib/gauntlet_rubygems.rb: For verification of the validator.
+
+2009-03-27 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: RubyGems now loads plugins from rubygems_plugin.rb
+ in installed gems. This can be used to add commands (See
+ Gem::CommandManager) or add install/uninstall hooks (See
+ Gem::Installer and Gem::Uninstaller).
+ * setup.rb: Ensure we're in a RubyGems dir when installing.
+
+2009-03-26 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package_task.rb: Import from Rake's
+ rake/gempackagetask.rb
+ * Rakefile: Switched to RDoc::Task from RDoc 2.4.2.
+ * lib/rubygems.rb: Gem.find_files now returns paths in $LOAD_PATH.
+ * lib/rubygems/commands/sources_command.rb: Allow sources to be added
+ behind proxies. Bug #24785 by Elia Schito.
+
+2009-03-25 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/install_command.rb: Fix typo. Patch #24446
+ by Luis Parravicini.
+ * lib/rubygems/version.rb: Handle non-String versions by calling
+ #to_s. Patch #24392 by Stephen Bannasch.
+
+2009-03-22 Daniel Berger <djberg96@gmail.com>
+
+ * lib/rubygems/remote_fetcher.rb: Always escape URI's to deal with spaces
+ and such, regardless of platform.
+ * lib/rubygesm/validator.rb: Use the test-unit gem if installed.
+ Part of the fix for RF #24261 by Daniel Berger
+ * lib/rubygems/commands/install_command.rb: Explictly require
+ rubygems/uninstaller.rb if the user wants to bail because of failed
+ tests.
+ Part of the fix for RF #24261 by Daniel Berger
+
+2009-03-17 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/query_command.rb: Make `gem unpack` work with
+ more than one gem name, fix warning about installation location.
+
+2009-03-16 James Tucker <jftucker@gmail.com>
+
+ * lib/rubygems.rb: Deprecate ConfigMap[:RUBY_INSTALL_NAME]
+ * lib/rubygems/defaults.rb: Gem.default_exec_format to use
+ ConfigMap[:ruby_install_name].
+ Fixes Bug #24457
+ * util/gem_prelude.rb.template: Fix potential bug in
+ Gem.default_exec_format when ConfigMap[:BASERUBY] is not 'ruby'.
+
+2009-03-14 Luis Lavena <luislavena@gmail.com>
+
+ * lib/rubygems/installer.rb: Cleanup quotes on Windows stub scripts.
+ Fixes Bug #24039.
+ * lib/rubygems/commands/setup_command.rb: ditto.
+
+2008-03-13 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/uninstall_command.rb: Add --user-install to
+ allow uninstallation from ~/.gem. Bug #23760 by Roger Pack.
+ * lib/rubygems/uninstaller.rb: Automatically uninstall from
+ Gem.user_dir.
+ * lib/rubygems/commands/update_command.rb: Rescue InstallError
+ and continue. Bug #19268 by Gabriel Wilkins.
+ * lib/rubygems/doc_manager.rb: Remove some options from the args list
+ that RDoc no longer supports.
+
+2008-03-12 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: #description no longer removes
+ newlines.
+ * lib/rubygems/indexer.rb: Wrap description in a pre and force-wrap
+ lines to 78 characters for prettier display.
+ * lib/rubygems/commands/setup_command.rb: Clarify RubyGems RDoc
+ installation location. Bug #22656 by Gian Marco Gherardi.
+
+2008-03-09 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/query_command.rb: Add platforms to gem list
+ -d.
+ * lib/rubygems/commands/setup_command.rb: Allow setup to run from
+ read-only location. Patch #21862 by Luis Herrera.
+ * lib/rubygems/package/tar_input.rb: Use real File methods. Bug
+ #23966 by Mike Furr.
+ * lib/rubygems.rb: Don't add PATCHLEVEL if it's -1. Patch #24048 by
+ Jeremy Kemper.
+ * lib/rubygems/package/tar_input.rb: Choose security policy
+ correctly. Bug #24001 by Mike Furr.
+ * lib/rubygems/remote_fetcher.rb: Handle local paths with spaces.
+ Bug #24169 by Ryan Davis.
+ * lib/rubygems/specification.rb: Removed Gem::Specification::list,
+ causes leaks. Bug #23668 by Steve Purcell.
+
+2008-03-07 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb: Use Gem::bin_path in executable stubs to
+ work around Kernel#load bug.
+ * lib/rubygems/commands/install_command.rb: Copy user_install down to
+ Gem::DependencyInstaller. Patch #23573 by Alf Mikula.
+ * lib/rubygems/command.rb: Add info on gem server directly to `gem
+ help`. Patch #22271 by Hugh Sasse.
+
+2008-03-06 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Don't allow FIXME in specs.
+ * lib/rubygems/commands/spec_command.rb: Add --ruby and --marshal
+ formats.
+ * lib/rubygems.rb: Add Gem::bin_path. Patch #24114 by James Tucker.
+
+2008-03-04 Eric Hodel <drbrain@segment7.net>
+
+ * setup.rb: Moved guts to lib/rubygems/commands/setup_command.rb.
+ * lib/rubygems/indexer.rb: Added RSS feed generation on full index
+ update.
+
+2008-03-04 Phil Hagelberg <technomancy@gmail.com>
+
+ * lib/*: Prerelease gems go into their own index now and are excluded
+ from other indices. InstallCommand only gets prereleases if explicitly
+ requested. Thanks to Alex Vollmer.
+
+2008-03-04 Eric Hodel <drbrain@segment7.net>
+
+ * lib/*: Add lots of pretty pretty_print stuff!
+
+2008-02-25 Ryan Davis <ryand@zenspider.com>
+
+ * lib/rubygems/commands/check_command.rb: Fix various usability
+ issues.
+
+2009-02-10 Daniel Berger <djberg96@gmail.com>
+ * lib/rubygems/specification: Refactored and fixed the installation_path
+ method. It was overwrought and it now no longer uses File::SEPARATOR
+ explicitly.
+ [RubyForge: bug #23879 by Daniel Berger]
+
+2009-02-10 Daniel Berger <djberg96@gmail.com>
+ * lib/rubygems/validator.rb: The Gem::Validator#verify_gem_file method
+ now explicitly rescues Errno::EINVAL as well as Errno::ENOENT because
+ MS Windows raises a different SystemCallError for empty paths.
+
+2009-01-21 Daniel Berger <djberg96@gmail.com>
+ * lib/rubygems/remote_fetcher.rb: Split out nil and file handling in
+ the download method. Modified file URI handling to work properly.
+ [RubyForge: bug #16495 by Paul Sadauskas]
+
+2009-01-19 Daniel Berger <djberg96@gmail.com>
+ * lib/rubygems/remote_fetcher.rb: Added uri scheme validation back
+ into the open_uri_or_path method, though it now accepts 'https' and
+ 'file' as well.
+ * test/test_gem_remote_fetcher.rb: Updated the test_fetch_size_bad_uri
+ to reflect the updated error message.
+
+2009-01-15 Daniel Berger <djberg96@gmail.com>
+ * lib/rubygems/remote_fetcher.rb: Removed the open_file_uri_path method
+ since the URI#path method already does the same thing, and changed
+ the file_uri? method so that it explicitly calls .to_s.
+ * lib/rubygems/local_remote_options.rb: Allow file urls.
+
+2009-01-15 Daniel Berger <djberg96@gmail.com>
+ * lib/rubygems/commands/generate_index_command.rb: Fixed a typo in
+ the description.
+ * test/test_gem_doc_manager.rb: The test_uninstall_doc_unwritable
+ test is now skipped on Windows.
+ * test/test_gem_install_update_options.rb: The
+ test_user_install_disabled_read_only test is now skipped on Windows.
+ * test/test_gem_installer.rb: The test_generate_bin_symlink_no_perms
+ and test_generate_bin_script_no_perms tests are now skipped on Windows.
+
+2009-01-14 Daniel Berger <djberg96@gmail.com>
+ * lib/rubygems/specification.rb: Added support for a license attribute.
+ [RubyForge: feature #11041 (partial) by Kevin Williams]
+ * lib/rubygems/commands/query_command.rb: Gem detail information now
+ includes license information.
+ * test/test_gem_specification.rb: Added tests for the license attribute.
+
+2009-01-05 Chad Woolley <thewoolleyman@gmail.com>
+
+ * move processing of build args out of gem binary so they are handled correctly via API usage.
+ * lib/rubygems/command.rb: Add class accessor for build_args.
+ * lib/rubygems/ext/rake_builder.rb: Use Gem::Command.build_args instead of ARGV.
+ * lib/rubygems/ext/ext_conf_builder.rb: Use Gem::Command.build_args instead of ARGV.
+ * lib/rubygems/gem_runner.rb: Move build arg processing from gem binary.
+ * lib/rubygems/commands/contents_command.rb: Use nonzero return code (required to make tests pass).
+ * bin/gem: Move build arg processing to gem_runner.rb.
+ [RubyForge: bug #23210]
+
+ * lib/rubygems/config_file.rb: Fix --config-file option with no
+ equals and subsequent options to properly assign config file.
+ Previously config file was overwritten by subsequent option.
+ Fixes bug #16688.
+
+2009-1-4 Daniel Berger <djberg96@gmail.com>
+ * lib/rubygems/installer.rb: Remove existing path if it already
+ exists before installing.
+ [RubyForge: patch #22837 by Eric Wong]
+ * lib/rubygems.rb: Minor modification to the location_of_caller
+ method - deal with possible characters after line number
+
+2009-1-3 Daniel Berger <djberg96@gmail.com>
+ * lib/rubygems.rb: Better activation error message.
+ [RubyForge: patch #23082 by Tim Carey-Smith]
+
+2009-1-2 Daniel Berger <djberg96@gmail.com>
+ * lib/rubygems/ext/rake_builder.rb: Quote path if it contains spaces
+ [RubyForge: patch #23003 by Charlie Savage]
+ * lib/rubygems/local_remote_options.rb: Ignore duplicate sources
+ [RubyForge: bug #22277 by Elliot Temple]
+ * lib/rubygems/remote_fetcher.rb: Automatically normalize the URI
+ [RubyForge: bug #22151 by Alex Legler]
+ * lib/rubygems/specification.rb: Ensure that specification_version is
+ a Fixnum [RubyForge: bug #22598 by Tsutomu Kuroda]
+ * lib/rubygems/specification.rb: Bumped the CURRENT_SPECIFICATION_VERSION
+ and added an entry to the SPECIFICATION_VERSION_HISTORY
+
+2009-1-1 Daniel Berger <djberg96@gmail.com>
+
+ * test/test_gem_dependency.rb: Removed a duplicate "def dep" that
+ was causing a warning.
+ * lib/rubygems/platform.rb: Added an empty? method in order to
+ better handle gem indexing when dealing with gems created
+ prior to 0.9.5. [Rubyforge: bug #22603 by Johnathan Conley]
+ * lib/rubygems.rb: Added an explicit 'require "etc"'.
+ [RubyForge: bug #22313 by Matthew Boedicker]
+
+2008-12-31 Daniel Berger <djberg96@gmail.com>
+
+ * lib/rubygems/local_remote_options: Allow 'https' as a valid scheme
+ in addition to 'http' [RubyForge: patch #22485 by Duarte Henriques]
+ * setup.rb: Deal with extraneous quotation mark when autogenerating
+ .bat file on MS Windows [RubyForge: bug #22712 Takayuki Ishikawa]
+ * lib/rubygems/commands/unpack_command.rb: Fixed the --target option
+ [RubyForge: patch #22532 by Bryan Ash]
+
+2008-12-30 Daniel Berger <djberg96@gmail.com>
+
+ * lib/rubygems/builder.rb: Don't allow .gem file to be added back
+ onto itself [RubyForge: bug #19136, patch #23346 by Daniel Berger]
+ * lib/rubygems/defaults.rb: The default_path now only returns the
+ default_dir if the Gem.user_home doesn't exist
+ [RubyForge: bug #23037 by Pierre PLR]
+ * lib/rubygems.rb: Handle the possibility that Etc.getpwuid might
+ return nil on platforms other than Windows
+ [RubyForge: bug #22764 by Dudley Flanders]
+
+2008-12-16 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/doc_manager.rb: Set title for generated documentation.
+ * lib/rubygems/dependency.rb: Make #=~ work with Gem::Specification.
+
+2008-12-15 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb: Fix documentation for
+ Gem::Installer#write_spec. Issue by okkez.
+
+2008-12-12 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/local_remote_options.rb: Merge documentation fix by
+ okkez [ruby-dev:37271].
+ * lib/rubygems/source_info_cache_entry.rb: Merge documentation fix
+ from [ruby-dev:37255].
+
+2008-12-08 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Add Gem::promote_load_path
+
+2008-12-01 Ryan Davis <ryand-ruby@zenspider.com>
+
+ * lib/rubygems/remote_fetcher.rb: made threadsafe.
+
+2008-11-25 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/install_command.rb: Don't do any post-install
+ stuff if no gems were installed. Issue by Daniel Berger.
+
+2008-11-20 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/source_index.rb: Read the file outside the exception
+ block so we raise a sane error.
+ * lib/rubygems/indexer.rb: Allow the modern index to be updated
+ incrementally. Allow the legacy and modern indicies to be updated
+ separately.
+
+2008-11-17 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/indexer.rb: Added ability to only generate modern or
+ legacy indicies.
+
+2008-11-14 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/timer.rb: Deprecate and move methods to Gem and
+ Gem::StreamUI.
+
+2008-11-11 Phil Hagelberg <technomancy@gmail.com>
+
+ * lib/rubygems/, test/: Make Version understand prerelease
+ versions using letters. (eg. '1.2.1.b') Thanks to Josh Susser and
+ Alex Vollmer.
+
+2008-11-03 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Gem name must be a String.
+
+2008-10-31 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/defaults.rb: Update to support 1.9 libdir.
+ * util/gem_prelude.rb: Move to .template, automatically fold in
+ defaults.
+
+2008-10-29 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Handle nonexistent home directory. Bug #22229 by
+ Alexey Verkhovsky.
+
+2008-10-25 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb, lib/rubygems/custom_require.rb: Make kernel
+ methods private. Patch #20801 by James M. Lawrence. Expose
+ our kernel extensions to RDoc. Make Gem::location_of_caller behave on
+ Windows. Patch by Daniel Berger.
+ * doc/release_notes/rel_1_3_1.rdoc: Final release notes for 1.3.1.
+ * lib/rubygems/rubygems_version.rb: 1.3.1.
+
+2008-10-10 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/unpack_command.rb: Silence PATH warning.
+
+2008-10-09 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Fix requires for inflate, deflate, etc.
+ * test/*: Convert to minitest/unit.
+ * lib/rubygems/validator.rb: Fix for MiniTest instead of test/unit
+ classic in 1.9.
+
+2008-10-03 Phil Hagelberg <technomancy@gmail.com>
+
+ * lib/rubygems.rb: Make Gem.dir respect :gemhome value from config.
+ * lib/rubygems/config_file.rb: Expose :gemhome value.
+
+2008-09-26 Luis Lavena <luislavena@gmail.com>
+
+ * lib/rubygems.rb: Disregard ownership of ~ under Windows while
+ creating ~/.gem. Fixes issues related to no uid support under
+ Windows.
+
+2008-09-24 Eric Hodel <drbrain@segment7.net>
+
+ * doc/release_notes/rel_1_3_0.rdoc: Final release notes for 1.3.0.
+ * lib/rubygems/rubygems_version.rb: 1.3.0.
+ * lib/rubygems/builder.rb: Examine process status correctly. Patch
+ by Nobu.
+ * test/test_gem_ext_rake_builder.rb: Override Gem.ruby and
+ ENV['rake'] for 1.9 integration. Patch by Nobu.
+
+2008-09-16 Phil Hagelberg <technomancy@gmail.com>
+
+ * lib/rubygems.rb: Use the path set in the config file if
+ applicable.
+ * lib/rubygems/config_file.rb: Expose the path.
+
+2008-09-16 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Only create ~/.gem by user owning ~. Bug #21561
+ by Neil Wilson.
+
+2008-09-15 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/source_index.rb: Autoload SpecFetcher to improve load
+ time. Patch #21577 by Simon Chiang.
+ * lib/rubygems/commands/lock_command.rb: Modernize. Fix --strict.
+ Patch #21814 by Sven Engelhardt.
+ * lib/rubygems/platform.rb: Fix for solaris platform. Patch #21911
+ by Bob Remeika.
+
+2008-09-10 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/install_command.rb: Describe _version_ in `gem
+ help install`.
+ * lib/rubygems/commands/environment_command.rb: Describe environment
+ variables and gemrc in `gem help env`.
+ * lib/rubygems.rb: Warn when executing Gem::manage_gems.
+ * lib/rubygems/doc_manager.rb: Have RubyGems update the ri cache.
+ * lib/rubygems/source_index.rb: Ensure specs are read as UTF-8.
+ * lib/rubygems/specification.rb: Add magic comment to .gemspec files
+ so they are read in as UTF-8.
+
+2008-08-22 Luis Lavena <luislavena@gmail.com>
+
+ * lib/rubygems.rb: Corrected usage of HOMEDRIVE and HOMEPATH on Windows.
+ Escape Gem.ruby if spaces in the path are present. Solves bug related to
+ extensions compile process.
+ * test/test_gem.rb: Added test to verify both conditions.
+
+2008-08-17 Eric Hodel <drbrain@segment7.net>
+
+ * doc/release_notes/rel_1_3_0.rdoc: Initial release notes for 1.3.0.
+ * util/CL2notes: Release note creation helper script.
+
+2008-08-16 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/local_remote_options.rb: Added #both? to complement
+ #local? and #remote?.
+ * lib/rubygems/commands/query_command.rb: Print out LOCAL/REMOTE with
+ --both, even without a TTY.
+ * lib/rubygems.rb: Add Gem.find_files, allows a gem to discover
+ features provided by other gems.
+
+2008-08-14 Wilson Bilkovich <wilson@supremetyrant.com>
+
+ * lib/rubygems/source_index.rb: Deprecate options to 'search' other than
+ Gem::Dependency instances and issue warning until November 2008.
+ * lib/rubygems/platform.rb: Remove deprecated constant warnings
+ and really deprecate them.
+ * Rakefile: If the SETUP_OPTIONS environment variable is set, pass its
+ contents as arguments to setup.rb
+ * test/test_gem_commands_uninstall_command.rb: Added
+
+2008-08-13 Wilson Bilkovich <wilson@supremetyrant.com>
+
+ * lib/rubygems/uninstaller.rb: Fix binary script uninstallation.
+ Bug #21234 by Neil Wilson.
+ * test/test_gem_commands_uninstall_command.rb: Added
+
+2008-08-12 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb: Try to create directory before diverting
+ to ~/.gems.
+ * lib/rubygems/uninstaller.rb: Fix uninstallation with -i. Bug
+ #20812 by John Clayton. Have #remove_all call #uninstall_gem so hooks
+ get called. Bug #21242 by Neil Wilson.
+ * lib/rubygems/commands/update_command.rb: Fix updating RubyGems when
+ no previous rubygems-update is installed. Bug #20775 by Hemant Kumar.
+
+2008-08-11 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/remote_fetcher.rb: Fix HTTPS support. Patch #21072 by
+ Alex Arnell. Fix Not Modified handling. Bug #21310 by Gordon
+ Thiesfeld.
+
+2008-07-11 Luis Lavena <luislavena@gmail.com>
+
+ * setup.rb: Properly build --destdir folder structure using Pathname.
+ * test/mockgemui.rb: Fix warnings about instance variables in a module.
+
+2008-07-02 Phil Hagelberg <technomancy@gmail.com>
+
+ * lib/rubygems/defaults.rb: Add Gem.user_dir to use paths like
+ ~/.gem/ruby/1.8/gems and the like instead of just ~/.gem. Update
+ remote fetcher and installer to use it.
+
+2008-07-01 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb: Add #gem_home, #bin_dir for hooks. Use
+ DependencyInstaller's source_index so reinstallation via -i does not
+ fail.
+ * lib/rubygems/uninstaller.rb: Add #gem_home, #bin_dir for hooks.
+ * lib/rubygems/commands/query_command.rb: Don't print LOCAL/REMOTE
+ gems if stdout is not a TTY.
+ * lib/rubygems/commands/query_command.rb: Use the regexp we already
+ have for `gem list --installed`. Bug #20876 by Nick Hoffman.
+ * lib/rubygems/commands/which_command.rb: Clarify what `gem which` is
+ for.
+
+2008-06-30 Eric Hodel <drbrain@segment7.net>
+
+ * test/test_ext_configure_builder.rb: Locale-free patch by Yusuke
+ Endoh [ruby-core:17444].
+ * lib/rubygems.rb: Add pre/post (un)install hooks.
+ * lib/rubygems/installer.rb: Call pre/post install hooks as
+ appropriate.
+ * lib/rubygems/uninstaller.rb: Call pre/post uninstall hooks as
+ appropriate. Minor refactoring of #uninstall.
+ * lib/rubygems/package/tar_reader.rb: Some OSs raise EINVAL on seek.
+ Based on patch in bug #20791 by Neil Wilson.
+ * lib/rubygems/specification.rb: Correctly check for support of
+ development dependencies for #to_ruby. Bug #20778 by Evan Weaver.
+ * lib/rubygems/spec_fetcher.rb: Correctly load all cache file even if
+ latest has been loaded. Bug #20776 by Uwe Kubosch.
+
+2008-06-25 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/config_file.rb: Add Gem::ConfigFile constants for
+ packagers and implementors to override defaults.
+ * test/*: Fixes to run tests when under test/rubygems/. Patch by
+ Yusuke ENDOH [ruby-core:17353].
+
+2008-06-24 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/remote_fetcher.rb: Cleanup to support
+ if-modified-since requests. pair: Ryan Davis
+ * lib/rubygems/indexer: Force platform to Gem::Platform::RUBY when
+ nil or blank. Fixes various uninstallable gems.
+
+2008-06-24 Phil Hagelberg <technomancy@gmail.com>
+
+ * lib/rubygems/installer.rb: Fall back on ~/.gem if GEM_HOME is
+ not writable.
+ * lib/rubygems/install_update_options.rb: Allow --user-install or
+ --no-user-install command-line switch to explicitly force whether
+ or not ~/.gem should be used.
+ * lib/rubygems/remote_fetcher.rb: Use ~/.gem/cache if cache dir is
+ not writable.
+ * test/gemutilities.rb: Use MockGemUi for all tests.
+
+2008-06-21 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Load specifications from the future.
+ Roll back specification version change.
+ * lib/rubygems/remote_fetcher.rb: Reset connection when an HTTP
+ server misbehaves.
+ * setup.rb: Fix --destdir for windows.
+ * doc/release_notes/rel_1_2_0.rdoc: Bugs in RubyGems were
+ unintentionally added, order bug fixes by importance.
+ * lib/rubygems/rubygems_version.rb: 1.2.0.
+
+2008-06-20 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/uninstaller.rb: Improve output when a gem to uninstall
+ isn't found. Bug #20746 reported by Chad Wooley.
+ * setup.rb: Fix rdoc installation with --destdir. Patch #20739 by
+ Matthew Kent.
+ * lib/rubygems/commands/install_command.rb: Don't reset GEM_PATH when
+ installing. Fixes Bug #20746 by Chad Wooley.
+
+2008-06-20 Luis Lavena <luislavena@gmail.com>
+
+ * setup.rb: Only prepend install_destdir when especified. Fixes
+ installation issues related to Windows paths (/C:/...)
+
+2008-06-19 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/dependency_installer.rb: Ensure that the entire
+ dependency chain is installed. Fixes bug reported by Chad Woolley.
+
+2008-06-18 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/dependency_command.rb: Restore matching
+ everything when no name is specified, regexp matching. Fixes bug
+ #20716, bug #20717 by Chad Woolley.
+
+2008-06-18 Chad Woolley <thewoolleyman@gmail.com>
+
+ * lib/rubygems/config_file.rb: Fix --config-file option with no
+ equals and subsequent options to properly assign config file.
+ Previously config file was overwritten by subsequent option.
+ Fixes bug #16688.
+
+2008-06-17 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/version.rb: Gem::Version #hash and #eql? now operate
+ on the version string, terms of the version string, so "1" and "1.0"
+ no longer correspond to the same slot. Fixes indexer bug reported by
+ Chad Woolley.
+ * setup.rb: Fix --format-executable. Patch #20698 by Richard Brown.
+ * util/gem_prelude.rb: Prevent infinite recursion, check for Gem now.
+ Patch from ruby trunk by nobu.
+ * lib/*: Spelling cleanup. Patch from trunk by Evan Farrar.
+ * test/*: Fixes for win32 test failures reported by Luis Lavena.
+ * util/gem_prelude.rb: Only remove methods added by gem_prelude.rb.
+
+2008-06-16 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/indexer.rb: Fix quick_index generation.
+ * lib/rubygems/specification.rb: Correctly guard new spec features
+ for older RubyGems.
+ * lib/rubygems/config_file.rb: Add system-wide config file
+ (/etc/gemrc). Patch #14723 by Phil Hagelberg. Add windows code to
+ use appropriate directory. Code by Daniel Berger.
+ * doc/release_notes/rel_1_2_0.rdoc: Draft of 1.2.0 release notes.
+
+2008-06-15 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/server.rb: Store off if we are returning Marshal
+ format before running =~ again. Fixes bug reported by Chad Woolley.
+ * lib/rubygems/commands/stale_command.rb: `gem stale` lists gems by
+ last access time. Patch #20593 by Aaron Patterson.
+ * lib/rubygems/setup.rb: Add --vendor and --destdir to setup.rb for
+ packagers. Patch #20610 by Richard Brown. Don't look for stub
+ files to remove any more.
+ * lib/rubygems/specification.rb: Bump specification version and be
+ backwards compatible with type 2 specs.
+ * lib/rubygems/commands/query_command.rb: Add installed location to
+ details for installed gems.
+
+2008-06-09 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/dependency_installer.rb: Only install all dependencies
+ when install_dir option is set. Don't include satisfied dependencies
+ when gathering dependencies.
+ * lib/rubygems/commands/query_command.rb: Display authors, rubyforge
+ and homepage urls with details.
+ * lib/rubygems/commands/environment_command.rb: Add executable
+ directory (from Rubinius).
+ * lib/rubygems/commands/install_command.rb: Don't set install_dir by
+ default.
+ * lib/rubygems/commands/update_command.rb: Don't set install_dir by
+ default. Use #find_missing for efficiency.
+
+2008-06-07 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/server.rb: Fully mirror Gem::Indexer indexes, set
+ correct content-type headers, always refresh the source index.
+ * lib/rubygems/source_index.rb: Add spec_dirs so that #refresh! will
+ always reload from the same locations. #refresh! on manually-built
+ SourceIndex now raises. Fixes #20509 by Chad Woolley.
+
+2008-06-06 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb: Remove previous bin_script_path in case
+ it is a symlink.
+ * lib/rubygems/commands/pristine_command.rb: Force reinstallation of
+ the gem using the installer. Fixes bug #20387 by Erik Persson.
+ * lib/rubygems/doc_manager.rb: Ensure args to RDoc are all strings.
+ * lib/rubygems/source_index.rb: Use find_matching to discover updated
+ specs instead of fetch.
+ * lib/rubygems/commands/query_command.rb: Platform, not name in spec
+ tuples.
+
+2008-06-05 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/local_remote_options.rb: Ensure remote repository URLs
+ reference directories. Fixes bug #20134 by Neil Wilson.
+ * lib/rubygems/source_index.rb: Gracefully handle ^C or explicit exit
+ while loading .gemspec files from disk. Fixes bug #20523 by Joel
+ VanderWerf.
+ * lib/rubygems/specification.rb: Use File#expand_path in
+ installation_path. Fixes bug #19317 by Hemant Kumar.
+ * lib/rubygems/spec_fetcher.rb: Fix legacy test against URI.
+ * lib/rubygems/remote_fetcher.rb: Always raise FetchError from
+ RemoteFetcher. Fix FetchErrors without URIs. Refactor Net::HTTP
+ request code to use persistent connections for HEAD requests. Feature
+ Request #7973 by Christian Schachtzabel.
+ * lib/rubygems.rb: Don't load custom_require until after the OS and
+ implementation have had a chance to set paths.
+
+2008-06-04 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/source_index.rb: Only fetch specs we need in
+ #outdated.
+ * lib/rubygems.rb: Fix typo in ::activate exception.
+ * lib/rubygems/dependency.rb: For #to_s, display dependency type when
+ nil.
+ * lib/rubygems/dependency_installer.rb: Reset #installed_gems for
+ every #install. Fixes bug #19444 by Glenn Rempe.
+ * lib/rubygems/installer.rb: Don't re-read the disk to check for new
+ gems, add them by hand on install.
+
+2008-06-03 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Add ::gzip, ::gunzip, ::deflate and ::inflate.
+ * lib/rubygems/server.rb: Add specs and latest_specs indicies.
+ * setup.rb: Don't require rdoc until needed. Patch #20414 by Brian
+ Candler.
+ * lib/uninstaller.rb: Correctly uninstall gems installed with a
+ legacy platform. Patch #19877 by Luis Lavena.
+ * lib/rubygems/commands/update_command.rb: Only fetch remote specs
+ when we know what we're looking for.
+
+2008-06-02 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Remove double slash in
+ #installation_path. Fixes bug #19896 by Heiko Seebach.
+ * lib/rubygems/remote_fetcher.rb: Require StringIO. Fixes bug #19866
+ by Caleb Land.
+ * lib/rubygems.rb: Require rubygems/defaults/#{RBX_ENGINE}.rb and
+ rubygem/defaults/operating_system.rb if they exist. (OS require comes
+ first and may be overridden by operating system.)
+
+2008-06-01 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/indexer.rb: Ensure identical names, versions and
+ platforms are identical for a smaller index.
+ * lib/rubygems/spec_fetcher.rb: Only write to cache when we own it.
+ * lib/rubygems.rb: Honor default_path if GEM_PATH environment
+ variable is not set. Patch #19502 by Donavan Pantke.
+ * lib/rubygems/installer.rb: Set file mode indicated by tar file.
+ Patch #19737 by Jason Roelofs.
+
+2008-06-01 John Barnette <jbarnette@rubyforge.org>
+
+ * lib/rubygems.rb: Add Gem.available?(gem, *specs) for easy availability
+ checks at runtime.
+
+2008-05-31 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/dependency_command.rb: Delay fetching specs
+ until needed. Reverse dependencies can no longer be calculated for
+ remote sources. Add backwards compatibility.
+ * lib/rubygems/commands/fetch_command.rb: Add backwards
+ compatibility.
+
+2008-05-30 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/local_remote_options.rb: --sources option should not
+ add URIs to Gem.sources.
+ * lib/rubygems/spec_fetcher.rb: Add #warn_legacy to help handling
+ legacy sources.
+ * luby/rubygems/commands/query_command.rb: Add backwards
+ compatibility with legacy sources.
+
+2008-05-28 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/remote_fetcher.rb: Add #uri to
+ Gem::RemoteFetcher::FetchError.
+ * lib/rubygems/user_interaction.rb: Improve RDoc slightly.
+ * lib/rubygems/spec_fetcher.rb: Introduce backwards compatibility for
+ legacy (pre 1.2) repositories
+ * lib/rubygems/commands/sources_command.rb: Backwards compatibility
+ and restoration of --update.
+ * lib/rubygems/specification.rb: Ensure nil-typed dependencies become
+ runtime dependencies.
+
+2008-05-27 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/spec_fetcher.rb: Switch #fetch, #find_matching to be
+ compatible with Gem::SourceInfoCache#search_with_source. Add caching
+ for .gemspec files.
+ * lib/rubygems/dependency_installer.rb: Switch to SpecFetcher.
+ * lib/rubygems/source_index.rb: Switch #outdated to use SpecFetcher.
+ * lib/rubygems/commands/dependency_command.rb: Switch to SpecFetcher.
+ * lib/rubygems/commands/outdated_command.rb: Switch to SpecFetcher.
+ * lib/rubygems/commands/query_command.rb: Switch to SpecFetcher.
+ * lib/rubygems/commands/sources_command.rb: Switch to SpecFetcher.
+ * lib/rubygems/commands/update_command.rb: Switch to SpecFetcher.
+ * lib/rubygems/version.rb: Handle comparisons with non-Gem::Version
+ objects.
+
+2008-05-13 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/spec_fetcher.rb: Add caching of specs, latest_specs
+ files.
+ * test/gemutilities.rb: Ensure Gem.user_home doesn't point to ~.
+
+2008-05-09 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/indexer.rb: Add Marshal format index of spec names,
+ versions and platforms. WIP.
+ * lib/rubygems/spec_fetcher.rb: WIP for replacement of
+ Gem::SourceInfoCache and SourceInfoCacheEntry.
+ * lib/rubygems/dependency.rb: Add #=~.
+
+2008-05-07 John Barnette <jbarnette@gmail.com>
+
+ * lib/rubygems/specification.rb, et. al: Let gems have development
+ dependencies, which aren't installed (except when --development is
+ supplied) or activated.
+
+2008-05-02 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/indexer.rb: Refactored into simpler more imperative
+ code.
+ * lib/rubygems.rb: Leave rbconfig/datadir.rb for non-RubyGems use.
+
+2008-04-16 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/server.rb: Refresh the source index per request so new
+ gems will be found after server startup.
+
+2008-04-15 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/source_index.rb: Only print out "Bulk updating" when
+ verbose, fix #latest_specs documentation.
+ * lib/rubygems/dependency_installer.rb: Add :cache_dir option for
+ Tinderbox.
+
+2008-04-14 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/test_utilities.rb: Expose some internal testing
+ utilities that are of general use.
+
+2008-04-10 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Fix Gem.prefix so it reports nil when rubygems.rb
+ is in sitelibdir, libdir, or doesn't have 'lib' as a parent directory.
+ * doc/release_notes/rel_1_1_1.rdoc: RubyGems 1.1.1 release notes.
+ * lib/rubygems/rubygems_version.rb: 1.1.1.
+
+2008-04-07 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/server.rb: Fix fragment URIs. Patch by James Tucker.
+ * lib/rubygems/commands/update_command.rb: Pass
+ --no-format-executable to setup.rb. Patch by Stephen Bannasch.
+
+2008-04-06 Chad Woolley <thewoolleyman@gmail.com>
+
+ * lib/rubygems.rb: Add setter Gems.platforms=, to allow platforms
+ to be set/reset when invoking or testing RubyGems programatically.
+ Also force Gems.platforms to automatically reset to default of
+ [Gem::Platform::RUBY, Gem::Platform.local] if cleared.
+ * lib/rubygems/version_option.rb: Change add_platform_option
+ to initialize Gem.platforms to contain only Gem::Platform::RUBY
+
+2008-04-04 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/source_index.rb: Make Gem::SourceIndex#refresh!
+ more-correct. Reported by Paul Haddad.
+ * lib/rubygems.rb: Add Gem::refresh. Bug #19176 by Hongli Lai.
+ * lib/rubygems/dependency_installer.rb: Put downloaded gems into
+ install_dir's cache. Patch #19182 by Richard Brown.
+
+2008-04-03 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/source_info_cache.rb: Merge full cache file into
+ latest data. Don't write cache files when checking for them. Only
+ update full cache file when we've read it. Refresh all data when
+ loading all data.
+ * lib/rubygems/dependency_installer.rb: Fix --force to work without
+ network for dependent gems. Fix all-fetching test.
+ * lib/rubygems/commands/query_command.rb: Obey --all flag for gem
+ query.
+ * lib/rubygems/commands/environment_command.rb: Don't display
+ RubyGemsPackageVersion.
+ * lib/rubygems/indexer.rb: Fix typo. Patch by Tom Copeland.
+ * lib/rubygems/command_manager.rb: Display RubyGemsVersion with
+ --version.
+ * lib/rubygems/commands/pristine_command.rb: Rebuild extensions along
+ with everything else. Patch #19281 by Dr. Nic Williams.
+
+2008-04-01 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Fix prefix to point to directory above RubyGems,
+ so RubyGems will be installed into lib/.
+ * setup.rb: Work around apple's libdir-installed RubyGems, by
+ installing into sitelibdir.
+ * Rakefile: Add svnversion to RubyGems version number for `rake
+ install`.
+
+2008-03-31 Luis Lavena <luislavena@gmail.com>
+
+ * test/: Allow tests to use a random (but controlled) port number
+ instead of a hardcoded one. This helps CI tools when running
+ parallels builds.
+
+2008-03-30 Luis Lavena <luislavena@gmail.com>
+
+ * test/test_gem.rb: Leave APPLE_GEM_HOME tests only to *nixes.
+ * lib/rubygems/remote_fetcher.rb: Errno::ECONNABORTED raised on Windows
+ on closed Keep-Alive connections.
+
+2008-03-29 Eric Hodel <drbrain@segment7.net>
+
+ * gemspecs/: Removed.
+ * examples/: Removed.
+ * doc/design/: Removed.
+ * doc/rdoc_templates/: Removed.
+ * Rakefile: Package doc/release_notes/.
+ * setup.rb: Use full path to release_notes, ensure RDoc can be
+ both removed and installed.
+
+2008-03-28 Eric Hodel <drbrain@segment7.net>
+
+ * bin/gem, Rakefile: RubyGems now requires Ruby > 1.8.3.
+ * lib/rubygems.rb: Added Gem.ruby_version, Gem.read_binary,
+ Gem.binary_mode.
+ * lib/, test/: Read files in binary mode for windows and ruby 1.9.
+ * lib/rubygems/commands/update_command.rb: Only update once.
+ * lib/rubygems/commands/sources_command.rb: Ditto.
+ * lib/rubygems/source_index.rb: Fix #remove_extra, #find_missing so
+ legacy platform gems don't get updated repeatedly.
+ * doc/release_notes/rel_1_1_0.rdoc: RubyGems 1.1.0 release notes.
+ * lib/rubygems/rubygems_version.rb: 1.1.0.
+
+2008-03-28 Ryan Woodrum <rwoodrum@avvo.com>
+
+ * lib/rubygems/commands/query_command.rb: Add --installed
+ subcommand to check if a gem and/or version is installed.
+ * test/test_gem_commands_query_command.rb: Add relevant tests.
+ * test/gemutilities.rb: Override exit() for query tests.
+ * test/mockgemui.rb: Add =() to manipulate output values (clear).
+
+2008-03-28 Chad Woolley <thewoolleyman@gmail.com>
+
+ * lib/rubygems/source_info_cache.rb: Add reset_cache_file.
+
+2008-03-27 Chad Woolley <thewoolleyman@gmail.com>
+
+ * lib/rubygems/user_interaction.rb: Raise Gem::SystemExitException
+ instead of exiting, kill unused terminate_interaction!.
+ * lib/rubygems/exceptions.rb: Add Gem::SystemExitException.
+ * lib/rubygems/commands/install_command.rb: Raise
+ Gem::SystemExitException instead of exiting.
+ * bin/gem: Rescue Gem::SystemExitException and exit with
+ specified exit_code.
+ * test/test_gem_commands_install_command.rb: Assert on
+ Gem::SystemExitException and exit_code in tests.
+
+2008-03-27 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/sources_command.rb: Allow sources to be
+ removed without network. Fixes bug #18644 by Mikel Lindsaar.
+
+2008-03-27 Luis Lavena <luislavena@gmail.com>
+
+ * lib/rubygems/commands/environment_command.rb: Use platform specific
+ PATH_SEPARATOR instead of hardcoded ':'
+ * test/test_gem_commands_unpack_command.rb: Ditto.
+ * test/test_gem_commands_environment_command.rb: Ditto.
+ * test/gemutilities.rb: Fix binary file reads being truncated on
+ Windows.
+ * test/test_gem_commands_install_command.rb: Switch to read_binary.
+ * test/test_gem_commands_update_command.rb: Ditto.
+ * test/test_gem_commands_server_command.rb: Consider full path when
+ evaluating location (instead of hardcoded or missing drive leter).
+ * test/test_gem_installer.rb: Ditto.
+ * test/test_gem_dependency_installer.rb: exclude no-wrapper tests for
+ Windows.
+
+2008-03-26 Luis Lavena <luislavena@gmail.com>
+
+ * lib/rubygems.rb: Handle backslashes that came from GEM_HOME and
+ GEM_PATH on Windows.
+
+2008-03-25 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/source_index.rb: Add updating from latest index,
+ default to updating from latest index. Reduces common-case update
+ to under 3,000 gems at present.
+ * lib/rubygems/remote_fetcher: Fix error reporting from net/http.
+ * lib/rubygems.rb: Sort methods, remove last vestiges of autorequire,
+ RDoc cleanup.
+
+2008-03-23 Luis Lavena <luislavena@gmail.com>
+
+ * setup.rb: generated Windows stubs will honors prefix using Gem.ruby
+ instead of hardcoded 'ruby.exe'
+ * lib/rubygems/installer.rb: generated Windows stubs scripts will now
+ work from differnt directories than Gem::bindir. Fixes bug #16259 by
+ Claus Folke Brobak
+
+2008-03-20 Eric Hodel <drbrain@segment7.net>
+
+ * test/test_gem_source_info_cache.rb: Test with real objects now.
+ * lib/rubygems/source_index.rb: #latest_specs now has latest specs
+ for all platforms.
+ * lib/rubygems/source_info_cache.rb: Add latest cache data, only load
+ full cache data when needed.
+
+2008-03-20 Luis Lavena <luislavena@gmail.com>
+
+ * test/gemutilities.rb: Change all the file processing mechanism to
+ enable binary mode by default (required for Windows file operations
+ dealing with non-printable characters).
+
+2008-03-19 Luis Lavena <luislavena@gmail.com>
+
+ * lib/rubygems/package/tar_output.rb: Adapted code to use #wrap instead
+ of #new when dealing with Zlib::GzipWriter (fixes SEGV and warnings due
+ GzipWriter object not being closed explicitly).
+
+2008-03-12 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/indexer.rb: Add latest_index.
+
+2008-03-09 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/defaults.rb: Add special case for RUBY_ENGINE constant
+ when setting default gem dir.
+ * Rakefile: Add update_rubinius and diff_rubinius.
+
+2008-03-08 Lincoln Stoll <lstoll@lstoll.net>
+
+ * lib/rubygems/server.rb: Drop use of RDoc's TemplatePage in favor of
+ ERB.
+
+2008-03-04 Ryan Davis <ryan@wrath.local>
+
+ * lib/rubygems/remote_fetcher.rb: Moved #download from
+ DependencyInstaller.
+ * lib/rubygems/commands/fetch_command.rb: Updated to use #download.
+ * lib/rubygems/dependency_installer.rb: install now takes name or dep.
+ Renamed gather_specs_to_download to find_spec_by_name_and_version.
+ Modifed #initialize to not take gem name or version.
+
+2008-03-04 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package*: Removed #open_from_io and friends, switched
+ to #open, no special handling for file names.
+ * lib/rubygems/package/tar_output.rb: Refactored ::open to use
+ instance methods.
+ * lib/rubygems/remote_fetcher.rb: Print out number of requests made
+ before connection reset.
+
+2008-02-29 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package/tar_reader/entry.rb: Removed is_directory and
+ is_file? in favor of file? and directory?.
+
+2008-02-28 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package.rb: Broke up Tar bits into separate files.
+ * lib/rubygems/package/tar_reader/entry.rb: Don't copy TarHeader data
+ into Entry, go through #header instead. Better tests for
+ TarReader::Entry.
+
+2008-02-27 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/dependency_installer.rb: Automatically fall back to
+ local-only install on network error. Fixes bug #15759 by Chauk-Mean P.
+ * lib/rubygems/source_index.rb: Process spec dirs so that earlier
+ dirs override later dirs. Fixes bug #14816 by Kurt Stephens.
+
+2008-02-26 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/update_command.rb: Only update gems that need
+ updates. Fixes bug #14780 by Mathieu Lajugie. Don't force
+ remote-only updates. Properly handle dependencies when updating.
+ Fixes bug #17488 by Hongli Lai.
+ * lib/rubygems/commands/environment_command.rb: Display path as a
+ usable path.
+ * lib/rubygems.rb: Don't add APPLE_GEM_HOME with ENV['GEM_HOME'].
+
+2008-02-25 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Expand sitelibdir when checking prefix. Fixes bug
+ #17983 by Hemant Kumar.
+ * setup.rb: Print release notes on installation. Tell people where
+ `gem` was installed.
+ * bin/update_rubygems: Added --help output to explain how to install
+ earlier versions of RubyGems. Added --version option workaround.
+ Fixes bug #16842 by Chad Woolley.
+ * lib/rubygems/install_command.rb: Give proper exit code on failure.
+ Fixes bug #17438 by Josh Nichols.
+
+2008-02-23 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/remote_fetcher.rb: Change hosts correctly when
+ redirecting. Handle EOFError from Net::HTTP.
+ * lib/rubygems/commands/specification_command.rb: Pull specifications
+ from gem files.
+ * lib/rubygems/uninstaller.rb: When :executable is set, don't ask the
+ user. Fixes bug #16812 by Matt Mower. Raise exception instead of
+ printing message when gem is not in GEM_HOME.
+ * lib/rubygems/uninstall_command.rb: Print message when gem is not in
+ GEM_HOME.
+ * lib/rubygems/commands/cleanup_command.rb: Clean up all old gems.
+ * lib/rubygems/commands/unpack_command.rb: Scan every gem path when
+ unpacking. Fixes bug #17602 by Ryan Davis.
+
+2008-02-20 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/install_update_options.rb: Add --bindir option to
+ specify destination to install executables into. Patch #17937 by
+ Donavan Pantke.
+ * lib/rubygems/specification.rb: Fix Time.today == Time.today. Bug
+ #17413 by Andrei Bocan.
+ * setup.rb: Properly check for deletablitily of user and system
+ caches. Bug #17869 by Alexey Verkhovsky. Fix --no-format-executable.
+ Fixes bug #16879 by Charles Nutter.
+
+2008-02-19 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/remote_fetcher.rb: Add persistent connection support.
+ Patch #18180 by Aaron Patterson.
+ * lib/rubygems/installer.rb: Fix #shebang to use the ruby install
+ name. Patch #16878 by Donavan Pantke.
+ * lib/rubygems/defaults.rb, lib/rubygems.rb: Enable defaults for
+ Gem.path and Gem.bindir. Patch #17886 by Donavan Pantke.
+ * test/test_gem_ext_configure_builder.rb: Make test_self_build_fail
+ more platform independent. Patch #17599 by Martin Krauskopf.
+
+2008-02-14 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/fetch_command.rb: Fix a bug when fetching
+ from non-default sources. Report non-existent gems instead of
+ crashing.
+
+2008-01-09 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/update_command.rb: Use portable and safe ENV
+ operation. Patch by usa in ruby SVN revision 14739.
+ * lib/rubygems/open-uri.rb: Fix tests. Patch by NARUSE Yui.
+ [ruby-dev:33336]
+
+2007-12-23 Eric Hodel <drbrain@segment7.net>
+
+ * util/gem_prelude.rb: Remove methods from Gem, not QuickLoader, to
+ fix warnings.
+
+2007-12-22 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/environment_command.rb: Put GEM PATHS in the
+ correct order.
+ * lib/rubygems/commands/uninstall_command.rb: Add --install-dir to
+ specify which local repository to uninstall from. Patch #15151 by
+ Donavan Pantke.
+ * lib/rubygems/uninstaller.rb: Only allow uninstallation of gems from
+ specified directory. Properly clean up executables on uninstall.
+ Patch #15151 by Donavan Pantke.
+ * lib/rubygems/install_update_options.rb: Add --no-env-shebang
+ option. Patch #16508 by Donavan Pantke.
+ * util/gem_prelude.rb: Use require to load rubygems.rb to make
+ $LOADED_FEATURES correct on RubyGems update.
+
+2007-12-21 Eric Hodel <drbrain@segment7.net>
+
+ * util/gem_prelude.rb: Place bin before lib so bin stubs work.
+
+2007-12-20 Eric Hodel <drbrain@segment7.net>
+
+ * Rakefile: Require Ruby > 1.8.2. Enable CERT_DIR.
+ * lib/rubygems.rb: Work with RbConfig and Config. Bug #16457 by
+ Christian Ramilo, John Barnette.
+ * lib/rubygems/commands/build_command.rb: Relax yaml? test to work
+ with Ruby 1.8.3.
+ * lib/rubygems/rubygems_version.rb: 1.0.1.
+ * doc/release_notes/rel_1_0_1.rdoc: RubyGems 1.0.1 release notes.
+
+2007-12-19 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb: Revert change that only wrapped
+ executables with #!.
+ * lib/rubygems/specification.rb: Warn about a lot of things that
+ could be wrong with gemspecs on build, including missing #!. Use
+ 'x86-mswin32' for legacy 'mswin32' platform, fix CURRENT platform.
+ Paired with Luis Lavena.
+ * lib/rubygems/remote_installer.rb: Deleted.
+ * lib/rubygems.rb: Removed Kernel#require_gem.
+ * doc/release_notes/rel_1_0_0.rdoc: RubyGems 1.0 release notes.
+ * lib/rubygems/rubygems_version.rb: 1.0.0.
+
+2007-12-18 Luis Lavena <luislavena@gmail.com>
+
+ * lib/rubygems/commands/mirror_command.rb: Work around URI::parse
+ processing file:// scheme and drive paths on Windows.
+ * test/test_gem_commands_mirror_command.rb: ditto.
+
+2007-12-17 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb: Copy files into bindir if they don't
+ have a shebang. Bug reported by Luis Lavena.
+ * lib/rubygems/server.rb: Handle platforms in Gem::Server#quick.
+ Exactly match gem names. Bugs reported by Chad Woolley.
+ * lib/rubygems/platform.rb: Remove platform constants in favor of
+ Gem::Platform::CURRENT. Bug reported by Luis Lavena.
+ * lib/rubygems/dependency_installer.rb: Work around Dir::glob not
+ understanding File::ALT_SEPARATOR. Bug submitted by Luis Lavena.
+
+2007-12-16 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/remote_fetcher.rb: Be more verbose in error messages
+ from OpenURI.
+ * lib/rubygems/server.rb: Be more verbose in error/missing responses.
+
+2007-12-15 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb: Output extension build results when
+ really verbose. From bug #15853 John Croisant.
+ * lib/rubygems/specification.rb: Fix backwards compatibility with
+ 0.9.4, don't allow the platform to be nil or an empty string. Bug
+ #16177 by Dan Manges.
+ * setup.rb: Re-exec setup.rb if rubygems is loaded and RUBYOPT is
+ set. Fixes bug #15974 by Joshua Sierles.
+ * lib/rubygems/update_command.rb: Tweak formatting of updated
+ message. Bug #15625 by Bil Kleb.
+ * lib/rubygems/remote_fetcher.rb: Add URI to exception message for
+ Gem::RemoteFetcher#fetch_size. Bug #14801 by Bil Kleb.
+
+2007-12-14 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/query_command.rb: Don't display duplicate
+ version numbers. Bug #15828 by Tim Fletcher.
+ * setup.rb: Fix my stupidity with --help. Patch #16308 by Stephen
+ Bannasch. Fix --prefix= argument. Bug #16002 by Piglop.
+
+2007-12-13 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/server_command.rb: Fix --no-daemon. Bug by
+ Chad Woolley.
+ * lib/rubygems/server.rb: Fix Marshal quick index. Bug by Chad
+ Woolley.
+ * lib/rubygems/installer.rb: Respect Gem::Specification#bindir. Bug
+ #16202 by Suraj Kurapati.
+ * lib/rubygems/commands/update_command.rb: Fix `gem update mysql`.
+ Bug #16244 by Stephen Bannasch.
+
+2007-12-12 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb: Add --format-executable option to
+ install executables with ruby's program-suffix and prefix. Patch
+ #14688 by Jeremy Kemper. Also, installing in really-verbose mode
+ prints out written files.
+ * setup.rb: Add --format-executable option to install gem with ruby's
+ program-suffix and prefix. Add --help. Fixes bug #16056 by Chad
+ Woolley.
+ * lib/rubygems/uninstaller.rb: Fallback to original_platform_name
+ correctly. Patch #15960 by Nicola Piccinini's friend.
+
+2007-12-11 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/validator.rb: Correct test run failures when no tests
+ are provided. Patch #15701 by Jérémy Zurcher.
+ * lib/rubygems/commands/mirror_command.rb: Don't File.join a
+ URI::HTTP. Patch #16116 by Morgan Nelson.
+ * lib/rubygems/commands/unpack_command.rb: Add --target option to
+ `gem unpack`. Patch #16154 by Kevin Barnes.
+
+2007-12-10 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/dependency_installer.rb: Revert to nil for the default
+ security policy to avoid requiring OpenSSL.
+ * lib/rubygems/defaults.rb: Consolidate defaults for easier editing.
+ Patch #15150 by Donavan Pantke.
+
+2007-11-27 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/source_index.rb: Remove dependency on forwadable.
+ Patch by Koichi Sasada.
+ * lib/rubygems/specification.rb: Reduce dependency on time.rb. Patch
+ by Koichi Sasada.
+
+2007-11-26 Rich Kilmer <rich@infoether.com>
+
+ * lib/rubygems/version.rb: Fix bug 15948 with version bump
+ * test/test_gem_version.rb: Test for bug 15948 with version bump
+ * util/gem_prelude.rb: wrap init code with exception handler
+ and skip badly formed directory names
+
+2007-11-23 Rich Kilmer <rich@infoether.com>
+
+ * lib/rubygems.rb: Centralize all CONFIG options into Hash
+ Gem::ConfigMap with keys as symbols, change all references
+ to CONFIG to ConfigMap
+ * lib/rubygems/require_paths_builder.rb: Added to support
+ building .require_paths file
+ * lib/rubygems/installer.rb: Add building of .require_paths if
+ needed
+ * lib/rubygems/platform.rb: Use new ConfigMap hash for arch
+ * lib/rubygems
+ * util/gem_prelude.rb: new gem prelude for Ruby 1.9
+ * test/test_gem_installer.rb: change to use ConfigMap hash
+ * test/gemutilities.rb: change to use ConfigMap hash
+
+2007-11-21 Daniel Berger <djberg96@gmail.com>
+
+ * lib/rubygems/platform.rb: Gem::Platform.new now returns
+ Gem::Platform.local if the arch matches Gem::Platform::CURRENT.
+ Bugs #15815 and #15782 submitted by Daniel Berger.
+
+2007-11-20 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/platform.rb: Handle bare 'mswin32' platform's CPU.
+
+2007-11-19 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/rubygems_version.rb: 0.9.5.
+
+2007-11-16 Eric Hodel <drbrain@segment7.net>
+
+ * test/gemutilities: Add a legacy platform gem to the default test
+ gems list.
+ * lib/rubygems/specification.rb: Add Gem::Specification#original_name
+ for legacy purposes
+ * lib/rubygems/indexer.rb: Use #original_name to make the indexer
+ backwards compatible.
+ * lib/rubygems/master_index_builder.rb: Reduce memory consumption.
+
+2007-11-13 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/rubygems_version.rb: 0.9.4.7 beta.
+ * lib/rubygems.rb: Patch for RUBY_FRAMEWORK for OS X 10.5. Patch
+ submitted by Laurent Sansonetti.
+ * lib/rubygems.rb: cygwin, djgpp, mingw are Windows platforms. Fixes
+ bug #15537 by Roger Pack.
+
+2007-11-11 Eric Hodel <drbrain@segment7.net>
+
+ * Rakefile: Tasks for maintaining ruby trunk export of RubyGems.
+ * lib/rubygems/specification.rb: Preserve original platform across
+ serialization.
+ * lib/rubygems/dependency_installer.rb: Retry with original platform
+ name on fetch error.
+
+2007-11-09 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Set #original_platform only once.
+ * lib/rubygems/indexer.rb: Handle legacy platforms.
+ * lib/rubygems/platform.rb: Gem::Platform is a valid argument. Bug
+ #15511 submitted by Daniel Berger.
+ * lib/rubygems/custom_require.rb: Fix compatibility with 1.8.2. Bug
+ #14933 submitted by Aaron Patterson.
+ * lib/rubygems/command.rb: Now '-V' enables verbose. Bug #14951
+ submitted by Sasa Ebach.
+ * lib/rubygems/commands/check_command.rb: Change use of '-v', '-V' to
+ match above.
+ * lib/rubygems/package.rb: #send! is gone again.
+ * lib/rubygems.rb: Don't add custom_require for 1.9.
+ * test/*: Make compatible with 1.9 import.
+
+2007-10-30 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Don't re-use @platform to maintain
+ backwards compatibility.
+ * lib/rubygems/platform.rb: Handle nil and 'ruby' platforms in ::new.
+
+2007-10-20 Daniel Berger <djberg96@gmail.com>
+
+ * lib/rubygems/uninstaller.rb: Changed '.cmd' to '.bat' in the
+ remove_executables method for MS Windows. Patch from Luis Lavena.
+
+2007-10-18 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/rubygems_version.rb: 0.9.4.6 beta.
+
+2007-10-19 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/update_command.rb: Don't install with
+ dependencies when updating. This is a hack.
+
+2007-10-19 Daniel Berger <djberg96@gmail.com>
+
+ * setup.rb: gem.cmd stub is now gem.cmd, and the stub generation was
+ changed - now better for NT. Patch #14725 (Luis Lavena).
+ * lib/rubygems/installer.rb: Same as for setup.rb.
+
+2007-10-18 Daniel Berger <djberg96@gmail.com>
+
+ * lib/rubygems/platform.rb: Modified the Platform.local method for MS
+ Windows for versions built with VC++ 6. Patch #14727 (Luis Lavena).
+ * test/test_gem_specification.rb: Added version independent tests for
+ MS Windows. Patch #14727 (Luis Lavena).
+
+2007-10-18 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/remote_fetcher.rb: Add platform to User-Agent.
+ * lib/rubygems/commands/install_command.rb: Fix typo. Debian bug
+ #443135 submitted by Reuben Thomas.
+ * lib/rubygems/dependency_installer.rb: Don't install dropped
+ dependencies. Fixes bug #14724 submitted by Luis Lavena.
+
+2007-10-17 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/update_command.rb: Unset RUBYOPT when running
+ setup.rb
+ * setup.rb: Re-exec without RUBYOPT if it is set. Fixes bug #14683
+ submitted by Lyle Johnson.
+
+2007-10-16 Daniel Berger <djberg96@gmail.com>
+
+ * lib/rubygems/indexer/abstract_index_builder.rb: The compress method
+ now does a binary read to make MS Windows happy.
+
+2007-10-16 Eric Hodel <drbrain@segment7.net>
+
+ * setup.rb: Installs bin stubs that warn when you try to use the old
+ commands. Simple mswin deprecation stubs by Luis Lavena.
+
+2007-10-12 Eric Hodel <drbrain@segment7.net>
+
+ * setup.rb: Remove source caches on install.
+ * doc/release_notes/rel_0_9_5.rdoc: Draft added.
+ * lib/rubygems/rubygems_version.rb: 0.9.4.5 beta.
+
+2007-10-10 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/dependency_installer.rb: Fix small bug found by Alan C.
+ Francis.
+
+2007-10-09 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/dependency_installer.rb: Use install_dir so custom gem
+ repos can be used.
+ * lib/rubygems/specification.rb: Always set required attributes, even
+ if they match the default.
+
+2007-10-08 Ryan Davis <ryan@wrath.local>
+
+ * lib/rubygems.rb: Fixed require order so custom_require is
+ last. Added HACK tag to remind Jim to release rake.
+ * test/test_gem_source_index.rb: Fixed latest_specs' tests so
+ failures were much more readable.
+ * lib/rubygems/source_index.rb: Fixed latest_specs to deal with
+ platforms appropriately. Returns array again.
+
+2007-10-08 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/config_file.rb: Boost bulk_threshold to 1000, Marshal
+ format is smaller than yaml format quick index.
+ * lib/rubygems/installer.rb: Make #shebang correctly rewrite env
+ shebangs.
+ * lib/rubygems/specification.rb: Mark Time.today for removal, too much
+ depends upon it now.
+
+2007-10-07 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Sped up ::_load.
+ * lib/rubygems/source_index.rb: Sped up #search.
+ * lib/rubygems/version.rb: Replace #to_ints with #ints, and cache
+ result.
+ * lib/rubygems/source_info_cache.rb: Only flush cache when it changes.
+
+2007-10-05 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/user_interaction.rb: Allow customization of completion
+ message for progress reporters.
+ * lib/rubygems/command.rb: Add --quiet option.
+ * lib/rubygems/commands/generate_index_command.rb: Add description.
+
+2007-10-04 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/uninstaller.rb: Also check and uninstall old platform
+ name to ensure legacy platform gems are uninstalled.
+ * lib/rubygems/doc_manager.rb: Remove existing rdoc and ri directory
+ so regenerating docs succeeds even if previously interrupted.
+
+2007-10-02 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/source_index.rb: Make #outdated search only for gems
+ matching the current platform.
+ * lib/rubygems/commands/dependency_command.rb: Add --platform.
+ * lib/rubygems/commands/outdated_command.rb: Ditto.
+ * lib/rubygems/commands/specification_command.rb: Ditto.
+ * lib/rubygems/commands/update_command.rb: Ditto.
+
+2007-10-02 Wilson Bilkovich <wilson@supremetyrant.com>
+
+ * lib/rubygems/specification.rb: Custom Marshal format to reduce index
+ size.
+ * lib/rubygems/requirement.rb: Ditto
+ * lib/rubygems/version.rb: Ditto
+
+2007-10-01 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/platform.rb: Handle mswin32 on VC6. Partial patch and
+ assistance by Luis Lavena. Handle cpu-os-version style platforms for
+ command-line arguments.
+
+2007-09-30 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Gem::Specification is now
+ forward-compatible while loading.
+
+2007-09-29 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/source_info_cache_entry.rb: Correctly handle URIs.
+ * lib/rubygems/remote_fetcher.rb: ditto.
+ * lib/rubygems/remote_options.rb: Add --update-sources option. Patch
+ #14246 submitted by Alan Francis.
+ * lib/rubygems/config_file.rb: Add update_sources setting to control
+ automatic refreshing of sources (patch #14246). Fix bug where things
+ would be overwritten in ~/.gemrc when they shouldn't.
+
+2007-09-28 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/rubygems.rb: Gem.ruby now returns the full path. Added
+ Gem.prefix to make self updating work right.
+ * setup.rb, pre-install.rb, post-install.rb: Replace with a small,
+ simple setup script that works.
+ * lib/rubygems/commands/update_command.rb: Pass rdoc, ri and prefix
+ flags down to setup.rb when self updating.
+
+2007-09-26 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/version_option.rb: Always include RUBY platform,
+ allow RUBY platform as an option.
+ * lib/rubygems/specification.rb: Gems with non-ruby platform sort
+ last (first in preference for installation).
+ * lib/rubygems/platform.rb: Allow matching of legacy platforms.
+ * lib/rubygems/source_index.rb: Add only_platform option to #search.
+
+2007-09-24 Wilson Bilkovich <wilson@supremetyrant.com>
+ * lib/rubygems/indexer.rb: Generate a Marshal index in parallel to YAML
+ * lib/rubygems/source_index.rb: Fetch a Marshal index if it exists, to
+ avoid the memory cost of parsing a huge YAML file
+ * lib/rubygems/commands/mirror_command.rb: Check for Marshal first
+ * lib/rubygems/indexer/abstract_index_builder.rb: Index refactoring
+ * lib/rubygems/indexer/marshal_index_builder.rb: Build Marshal index
+ * lib/rubygems/indexer/master_index_builder.rb: Simplify YAML generation
+ * lib/rubygems/indexer/quick_index_builder.rb: Build Marshal quickindex
+ * lib/rubygems/server.rb: Serve up Marshal index as well as YAML
+ * lib/rubygems/source_info_cache_entry.rb: Expect a Marshal index
+
+2007-09-23 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/fetch_command.rb: `gem fetch` downloads a gem
+ to the current directory. Feature request #10752 by Bret Pettichord.
+ * lib/rubygems/commands/local_remote_options.rb, etc.: Fix spelling of
+ 'threshold'.
+ * lib/rubygems/installer.rb: Revert feature request #8818, it
+ interferes with `ruby -S` and multiple versions of ruby (1.8 and 1.9).
+ * lib/rubygems/dependency_installer.rb: Fix a bug where the wrong
+ platform gem would be installed.
+ * lib/rubygems/version_option.rb: Add --platform.
+ * lib/rubygems/install_update_options.rb: Verify --security-policy.
+ * lib/rubygems/local_remote_options.rb: Verify --source, --http-proxy.
+
+2007-09-22 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/open-uri.rb: Don't document our OpenURI.
+ * lib/rubygems/commands/generate_index_command.rb: Fix Indexer class
+ change.
+ * lib/rubygems/commands/mirror_command.rb: Fix for 1.9.
+ * lib/rubygems/commands/pristine_command.rb: Have `gem pristine`
+ give a better report of what it accomplished.
+ * lib/rubygems/command.rb: Add optional description field.
+ * lib/rubygems/installer.rb: Hack around broken Pathname#absolute? on
+ windows. Patch #14139 by Jim Hughes.
+
+2007-09-20 Eric Hodel <drbrain@segment7.net>
+
+ * misc files: Tests pass on 1.9.
+ * test/gemutilities.rb: Added Object#send! stub for 1.8.
+ * test/test_open_uri.rb: Require gem_open_uri.rb to avoid warnings.
+ * lib/rubygems/commands/sources_command.rb: Clarify `gem sources -c`
+ and what `gem sources` does. Patch by Hugh Sasse.
+
+2007-09-19 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/platform.rb: Make Gem::Platform a class.
+ * lib/rubygems/specification.rb: Gem::Specification#validate returns
+ true, non-Gem::Platform platforms are no longer allowed.
+ * test/gemutilities.rb: 1.9 compatiblity fixes.
+ * lib/rubygems/dependency_installer.rb: Work around a bug in URI.parse
+ which misinterprets "C:/". Patch #13537 submitted by Daniel Berger.
+ * lib/rubygems/format.rb: Ensure file handles are closed. Patch
+ #13533 submitted by Daniel Berger.
+ * test/test_gem_installer.rb: Win32 path fix. Patch #13528 submitted
+ by Daniel Berger.
+ * test/gemutilities.rb: Make the platform be a win32 platform on
+ win32. Fixes confusion in generate_bin_symlink tests. Patch #13529
+ submitted by Daniel Berger.
+ * test/test_gem_specification.rb: Sequel to above. Patch
+ #13535 submitted by Daniel Berger.
+ * lib/rubygems/source_index.rb: Make the updating cache message more
+ clear. Patch #12778 submitted by Bil Kleb.
+ * lib/rubygems/server.rb: Allow gem's rdoc-style.css to be used.
+ Patch #13589 by Stephen Bannasch.
+ * lib/rubygems/indexer.rb: Fail on missing builder gem only when
+ trying to use the indexer. Fixes bug #13939 by Bryan Stearns.
+ * lib/rubygems/indexer/indexer.rb: Move Indexer up one level in
+ nesting.
+ * lib/rubygems/indexer/compressor.rb: Only used in
+ Gem::Indexer::AbstractIndexBuilder subclasses, merged there.
+ * lib/rubygems/command_aids.rb: Merged Gem::CommandAids into
+ Gem::Command since that's the only place it gets used.
+ * misc other files: mswin fixes. Paired with Daniel Berger.
+
+2007-08-24 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb: Fix #full_name for versionless
+ platforms.
+ * lib/rubygems/command_manager.rb: We're only looking for NameError.
+ * lib/rubygems/command.rb: 1.9 fix.
+ * lib/rubygems/format.rb: ditto.
+ * lib/rubygems/installer.rb: ditto.
+
+2007-08-24 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/rubygems_version.rb: 0.9.4.4
+
+2007-08-23 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/platform.rb: Add HPUX, AIX and NetBSD. Thanks to
+ Daniel Berger, Yutaka KANEMOTO and Andre Nathan respectively.
+ * lib/rubygems/installer.rb: Move all option setting to #initialize to
+ make `gem pristine` work again.
+ * lib/rubygems/commands/environment_command.rb: Include platforms.
+ * lib/rubygems/dependency_installer.rb: Support local non-root
+ installation.
+
+2007-08-22 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/dependency_installer.rb: Don't reinstall dependencies
+ existing in the install dir. Don't install dependencies for older
+ versions of the gem we're installing. #installed_gems now contains
+ loaded gemspecs. Always prefer local gems. Handle globs correctly.
+ All deps are now installed into the install_dir.
+ * lib/rubygems/commands/install_command.rb: Switch to
+ Gem::DependencyInstaller. Warn when -y is given, it will be removed.
+ Try our best to install everything the user asked.
+ * lib/rubygems.rb: Gem.bindir now handles Pathname correctly.
+ * lib/rubygems/remote_fetcher.rb: Don't downcase anymore.
+
+2007-08-21 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/dependency_installer.rb: Add installation from local
+ gems. Install gems in the correct order. Handle -E, -f,
+ --ignore-dependencies, -i, -r, -l, -b, -P, -w, -v options for `gem
+ install`
+ * test/gemutilities.rb: Work around OS X /private/tmp.
+ * lib/rubygems/platform.rb: Switch to using arch instead of target_*
+ for JRuby compatibility. Thanks to Nick Sieger.
+
+2007-08-20 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/dependency_installer.rb: Add working but unfinished
+ Gem::DependencyInstaller.
+ * lib/rubygems/source_info_cache.rb: Add #search_with_source.
+ * lib/rubygems/dependency_list.rb: Move #fill_dependencies to
+ Gem::DependencyInstaller
+ * lib/rubygems/platform.rb: Split from specification.rb. Add methods
+ to recognize platforms from Config::CONFIG.
+ * lib/rubygems.rb: Add Gem::platforms.
+ * lib/rubygems/specification.rb: Disallow String platforms.
+
+2007-08-18 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/source_info_cache.rb: Search by Gem::Dependenency.
+ * lib/rubygems/source_index: Search by Gem::Dependenency.
+ * lib/rubygems/version.rb: Version can be String or Integer.
+ Gem::Requirement::default is now >= 0. Gem::Requirement can be built
+ from a Gem::Dependency.
+ * lib/rubygems/dependency_list.rb: Uses TSort now. Add
+ Gem::DependencyList#fill_dependencies.
+ * lib/rubygems/server.rb: Support quick index.
+
+2007-08-17 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/dependency_list.rb: For diamond dependencies with
+ different versions on the bottom of the diamond, trim all but the
+ latest dependency. This will prevent gems like hoe from being
+ installed multiple times.
+
+2007-08-15 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb: Support building mkrf extensions. Fixes
+ bug #11313. Patch by Jeremy Hinegardner.
+ * lib/rubygems/installer.rb: Ensure bin files are executable. Fixes
+ bug #8985 submitted by Ara Howard.
+ * lib/rubygems/installer.rb: Insert installing gem home dir into bin
+ wrapper. Patch #8818 by Ara Howard.
+
+2007-08-13 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/uninstall_command.rb: Gems with version of 0
+ can now be uninstalled.
+
+2007-08-11 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/config_file.rb: Command-line args override ~/.gemrc
+ now. Gem.sources is pulled from ~/.gemrc now. Gem::ConfigFile can
+ write itself out now.
+ * lib/rubygems/commands/sources_command.rb: Now writes out
+ Gem.configuration on changes. No longer checks source cache on
+ --list.
+
+2007-08-09 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/source_info_cache.rb: Make Gem::SourceInfoCache#search
+ only search gems in Gem.sources.
+ * lib/rubygems.rb: Make Gem::configuration a real Gem::ConfigFile
+ object.
+ * lib/rubygems/commands/query_command.rb: Fix `gem query --details`.
+ Add `gem query --no-versions`.
+ * lib/rubygems/local_remote_options.rb: Make `gem mumble --source URL`
+ only use that source.
+ * lib/rubygems/config_file.rb: Fix Gem::ConfigFile#[]= to match
+ Gem::ConfigFile#[].
+
+2007-08-08 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/commands/specification_command.rb: Match only exact gem
+ names. Fixes bug #9681. Patch by Michael DeCandia.
+ * lib/rubygems/commands/unpack_command.rb: Match only exact gem names.
+ Fixes bug #9681. Patch by Michael DeCandia.
+ * lib/rubygems/commands/contents_command.rb: Match only exact gem
+ names. Fixes bug #9681. Patch by Michael DeCandia
+ * lib/rubygems/remote_fetcher.rb: Perform a GET request if the HEAD
+ request doesn't have Content-Length. Fixes bug #9771. Patch by Ben
+ Bleything.
+ * lib/rubygems.rb: Clear Gem::searcher when we Gem::clear_paths.
+ Fixes bug #12886. Submitted by Peter Williams.
+ * lib/rubygems.rb: Add #default_sources and rework #sources to use it.
+ * post-install.rb: No longer runs install_sources.
+ * pkgs/sources: Updated to something what a 0.0.2 would look like, if
+ we ever make one.
+
+2007-08-02 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/gem_commands.rb: Removed and broken up into individual
+ files.
+ * lib/rubygems/command_manager.rb: Lazily loads gem commands. Now to
+ use CommandManager just "require 'rubygems/command_manager'" and
+ everything will be there.
+
+2007-08-01 Eric Hodel <drbrain@segment7.net>
+
+ * lib/*, test/*: Pushed down dependencies as far as reasonable.
+ Removed Gem::manage_gems. Now only 14 files are loaded with "require
+ 'rubygems'". Added tests for `gem build` and `gem cert`.
+ * lib/rubygems/extensions.rb: Added common place for all extensions.
+
+2007-07-26 Eric Hodel <drbrain@segment7.net>
+
+ * test/test_gem_ext_configure_builder.rb: Linux has different behavior
+ for `sh ./configure` when configure is missing. Fix adapted from
+ Patch #10019 by Donavan Pantke.
+ * lib/rubygems/commands/pristine_command.rb: Compare fully-qualified
+ paths. Fixes bug #7976 by Lyle Johnson.
+ * lib/rubygems/config_file.rb: Add ConfigFile#[]=, so --proxy
+ command-line option works. Fixes #8152 by Justin Sabelkko.
+ * lib/rubygems/post-install.rb: Make sure we use the
+ latest-and-greatest RubyGems when running post-install.rb. Fixes Bug
+ #8411 by Duy Nguyen.
+ * lib/rubygems/remote_fetcher.rb: An empty HTTP_PROXY means no proxy.
+ Fixes Bug #9042 by Michael Brodhead.
+ * lib/rubygems/version.rb: Disallow newlines in version string. Strip
+ spaces from version string. Fixes Bug #9499 by Bryce Kerley.
+ * lib/rubygems/commands/sources_command.rb: Fix spelling error. Fixes
+ Bug #11064 by Chris Eskow.
+
+2007-07-25 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/indexer.rb: Create the index in /tmp, then move it into
+ place when we're done. This will prevent spurious bulk index updates
+ from occurring while the quick index is missing. Remove the option to
+ not build the quick index.
+ * lib/rubygems/commands/generate_index_command.rb: --no-quick is gone.
+ * lib/rubygems/user_interaction.rb: If stdin is not a tty, it is
+ unlikely that gem is going to get a response when asking a question.
+ Patch #10660 by Paul Brannan.
+ * lib/rubygems/validator.rb: Output test failures when using install
+ -t. Patch #10659 by Paul Brannan.
+ * lib/rubygems/custom_require.rb (Kernel#require): Only rescue a
+ LoadError that matches the file we are requiring. Patch #10723 by
+ Tyler Rick.
+ * lib/rubygems/remote_fetcher.rb: Support HTTP basic authentication.
+ Patch #8121 by Max Dunn.
+ * lib/rubygems/commands/install_command.rb: Don't raise an error when
+ a gem has no tests. Patch #11824 by Katsuyuki MIYAMUKO.
+
+2007-07-23 Eric Hodel <drbrain@segment7.net>
+
+ * lib/commands/contents_command.rb: Add --lib-only option, remove
+ useless --list option. Feature request #9498 by Martin DeMello.
+ * lib/rubygems/specification.rb: Restrict to only files in
+ #require_paths. Add #required_rubygems_version. Feature request
+ #7780 by Eric Hodel.
+ * lib/rubygems/commands/dependency_command.rb: Display dependencies for
+ remote gems. Feature request #12133 by Eric Hodel. -r for reverse
+ dependencies is now -R.
+ * lib/rubygems/commands/specification_command.rb: Display
+ specifications for remote gems. Feature request #12133 by Eric Hodel.
+ * lib/rubygems/installer.rb (Gem::Installer#install): Check
+ required_rubygems_version.
+ * lib/rubygems/user_interaction.rb
+ (Gem::UserInteraction#choose_from_list): Check result for EOF. Fixes
+ bug #8018. Patch by Jos Backus.
+ * post-install.rb: Install using absolute path. Fixes bug #10675.
+ Patch by Jeremy Burks.
+ * lib/rubygems/commands/environment_command.rb: Add RUBY VERSION to
+ environment output.
+ * lib/rubygems/command.rb: Don't worry about duplicated command-line
+ options, OptionParser takes care of them for us.
+
+2007-07-22 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb (Gem::Specification#files): Make it
+ faster
+ * lib/rubygems/command.rb: Better documentation. -v flag now lets you
+ get to "really verbose" mode which makes the verbose progress meter
+ work. Add command groups to separate types of commands easily.
+ * lib/rubygems/commands/which_command.rb, bin/gemwhich: Move `gemwhich`
+ under `gem`.
+ * lib/rubygems/commands/mirror_command.rb, bin/gem_mirror: Move
+ `gem_mirror` under `gem`.
+ * lib/rubygems/commands/lock_command.rb, bin/gemlock: Move `gemlock`
+ under `gem`.
+ * lib/rubygems/commands/server_command.rb, bin/gem_server: Move
+ `gem_server` under `gem`.
+ * lib/rubygems/doc_manager.rb (Gem::DocManager#initialize): Only raise
+ when operating on the filesystem.
+ * lib/rubygems/server.rb: Remove option processing, now in
+ Gem::Commands::ServerCommand.
+ * lib/rubygems/commands/generate_index.rb, bin/index_gem_repository.rb:
+ Move `index_gem_repository.rb` to `gem generate_index`.
+ * lib/rubygems/indexer (Gem::Indexer): Extract from
+ index_gem_repository.rb and merge RubyForge changes.
+ * lib/rubygems/command_manager.rb (Gem::CommandManager#run): Print
+ backtrace when --debug is set too.
+ * lib/rubygems/command_manager.rb (Gem::CommandManager#load_and_instantiate):
+ Don't infinitely loop in retry.
+ * bin/gemri: Removed. Everybody should have ri integration now.
+ * lib/rubygems/config_file.rb: Allow settings to be examined. Pull
+ settings from .gemrc.
+ * lib/rubygems/commands/environment_command.rb: Add ruby executable
+ and configuration settings to `gem env`.
+ * lib/rubygems/indexer/indexer.rb (Gem::Indexer::Indexer#build_index):
+ Now uses UserInteraction.
+ * various: Use UserInteraction for output.
+ * lib/gemconfigure.rb: Removed. Same as multiple gem commands.
+ * lib/rubygems/commands/contents_command.rb: Removed extra --verbose
+ option.
+ * lib/rubygems/gem_commands.rb (Gem::LocalRemoteOptions): Moved -B,
+ --source, -p from Gem::Commands::common_options.
+
+2007-07-22 Chad Fowler <chad@chadfowler.com>
+
+ * lib/rubygems/gem_commands.rb: Added another example to the gem
+ example output (Gile Bowkett)
+ * test/test_documentation_generation.rb, lib/rubygems/doc_manager.rb:
+ Added a test for documentation generation and fixed a bug when doc
+ location is not writable.
+
+2007-06-16 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/gem_path_searcher.rb (Gem::GemPathSearcher): Moved out
+ of lib/rubygems/custom_require.rb and added tests.
+
+2007-06-02 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/source_info_cache.rb (Gem::try_file): Fix for issue
+ where a non-existing source cache file causes the gem command to
+ not find a gem. This fixes it by marshalling out an empty
+ hash. (Thanks to Nick Sieger for this fix).
+
+2007-06-01 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems.rb
+ (Gem::OperationNotSupportedError::latest_partials): Changed from
+ match data style to $1 style regexp (on the recommendation of
+ better performance).
+
+2007-05-30 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/source_index.rb (Gem::SourceIndex::update):
+ Modified to get the bulk_threshhold from the configuration.
+ (Gem::SourceIndex::convert_specs): Ryan removed the "reduce_specs"
+ method because it is not needed any more and is creating memory
+ overhead.
+
+ * lib/rubygems/config_file.rb (Gem::ConfigFile): Added
+ bulk_threshhold field to ConfigFile.
+ (Gem::ConfigFile::initialize): Initialize bulk threshhold to 500.
+
+ * lib/rubygems/command.rb
+ (Gem::Command::specific_extra_args_hash): Added
+ -B (--bulk-threshhold) option to allow user specified bulk
+ download threshhold.
+
+2007-05-23 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/commands/sources_command.rb
+ (Gem::Commands::SourcesCommand::initialize): Added a --clear-all
+ option to the sources subcommand. Clear-all will remove the cache
+ files.
+
+ * lib/rubygems/source_info_cache.rb (Gem): Moved system_cache_file
+ and user_cache_file to class methods so that we can get the file
+ names without creating a SourceInfoCache instance.
+
+2007-05-23 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/source_info_cache.rb: Teach SIC to repair itself
+ when it encounters a bad cache file.
+
+2007-05-14 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/command_manager.rb: Re-added registration for
+ gem cleanup command which I accidentally removed during refactoring.
+
+2007-05-10 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/remote_installer.rb: Uncommented the require
+ 'sources' line.
+
+ * lib/rubygems/source_info_cache.rb: Uncommented the require
+ 'sources' line.
+
+ * lib/rubygems/rubygems_version.rb (Gem): Bumped to version 0.9.3
+ in preparation for release.
+
+ * lib/rubygems/package.rb (Gem::TarInput::zipped_stream):
+ Zipped_stream now always uses the in memory string IO buffer.
+ There were just too many problems with ZLib (on windows)
+ otherwise.
+
+2007-03-26 Jim Weirich <jim@weirichhouse.org>
+
+ * (Index): new digest technique.
+
+ * lib/rubygems/validator.rb (Gem::Validator::verify_gem): Removed
+ really old MD5 and replaced with gem based digests.
+
+ * experimental/deployment.rb (Gem::Deployment::Manager::initialize):
+ New digest technique.
+
+ * experimental/test_deployment.rb (TestDeployment::test_deployed_file):
+ New digest technique.
+
+2007-03-26 Chad Fowler <chad@chadfowler.com>
+
+ * Extracted the big ball of mud that was gem_commands.rb into
+ separate files.
+
+2007-03-17 Chad Fowler <chad@chadfowler.com>
+
+ * Various ruby 1.8.6 fixes for failing tests.
+
+ * Updated setup.rb to 3.4.1
+
+ * Renamed cmd_manager to command_manager to keep names consistent
+
+ * lib/installer.rb: Rework path checking to use Pathname (ara howard bug #8811)
+
+2007-03-02 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems.rb: Add bin directory before library directory,
+ otherwise gems like rake don't work.
+
+2007-03-01 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/open-uri.rb: Fix all the infinite loop errors.
+
+ * lib/rubygems.rb: Add dirs from activate after -I and ENV['RUBYLIB']
+ dirs. Otherwise gems won't allow -I to work when #gem is called.
+
+2007-02-11 Chad Fowler <chad@chadfowler.com>
+
+ * test/gemutilities.rb: Fix to make Windows tests pass. (Anatol Pomozov)
+
+2007-02-05 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/rubygems_version.rb (Gem): Bumped to version 0.9.2
+ and made a release.
+
+2007-02-04 Chad Fowler <chad@chadfowler.com>
+
+ * Fixed failing tests (changed from assert_equal to assert_match to
+ deal with ARGV inconsistencies in test vs. production).
+
+2007-02-03 Jim Weirich <jim@weirichhouse.org>
+
+ * Bumped version to 0.9.1.1.
+
+ * lib/rubygems/gem_open_uri.rb: Added the patched open-uri back
+ into the gems software. Evidently, the 1.8 version of open-uri
+ does not handle authenticating proxies with username and password.
+
+ * lib/rubygems/source_info_cache.rb (Gem::cache_data): Added
+ rescue block to capture bad file loads. The original rescue was
+ only around the marshal load (bug was probably introduced when the
+ file data was preloaded into a string).
+ (Gem::set_cache_data): Added set_cache_data to be used during
+ testing to avoid reload the cache file over and over.
+
+ * lib/rubygems/gem_commands.rb: Added require for command class so
+ that this file can be loaded independently.
+
+ * lib/rubygems/source_index.rb (Gem::SourceIndex::outdated): Minor
+ cleanup.
+
+ * test/gemutilities.rb
+ (RubyGemTestCase::util_setup_source_info_cache): Minor cleanup
+
+ * test/test_gem_source_info_cache.rb
+ (TestGemSourceInfoCache::test_write_cache_user): Switched to using
+ set_cache_data here and several other places to avoid rereading
+ the cache data over and over again.
+
+2007-02-02 Chad Fowler <chad@chadfowler.com>
+
+ * lib/rubygems/gem_commands.rb:
+ Fixed gem unpack (broken since 0.9.1)
+
+2007-01-20 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/source_info_cache.rb (Gem::SourceInfoCache#cache_data):
+ Read the source_cache in binary mode for mswin.
+
+2007-01-16 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/rubygems_version.rb (Gem): Released 0.9.1.
+
+2007-01-15 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb (Gem::Installer#extract_files): Only allow
+ installation to absolute directories. (Call File::expand_path first).
+ More informative message for attempting to install with bad path.
+ * post-install.rb: Install sources first, since its rather important.
+
+2007-01-14 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/source_info_cache.rb: require 'fileutils', as its
+ needed.
+
+2007-01-12 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb (Gem::Installer#extract_files): Don't
+ allow gems to place files outside the installation directory. Fixes
+ bug 7751 by Gavin Sinclair.
+
+2007-01-08 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/specification.rb
+ (Gem::Specification::test_suite_file): Added rescue clause for
+ default_executable.
+ (Gem::Specification::add_bindir): Added rescue clause for
+ add_bindir.
+
+ * test/test_specification.rb
+ (TestSpecification::test_pathologically_bad_non_array_stuff_doesnt_goof_up_files):
+ Added a sanity check on hash for some pathologically bad case.
+ (TestSpecification::test_pathologically_bad_exectuables_doesnt_goof_up_hash):
+ Added sanity check for pathologically bad executables field.
+
+2007-01-08 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/gem_commands.rb (Gem::PristineCommand#execute): Better
+ messaging.
+ * lib/rubygems.rb, lib/rubygems/custom_require.rb: Correctly include
+ documentation for methods added to Kernel.
+
+2007-01-07 Eric Hodel <drbrain@segment7.net>
+
+ * Rakefile: Include GPL.txt. Fixes bug #7572 by David Lee.
+
+2007-01-06 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/rubygems_version.rb (Gem): Bumped to version
+ 0.9.0.9.
+
+ * lib/rubygems/specification.rb
+ (Gem::Specification::test_suite_file): Rewrote default_executable
+ to be a bit more explicit.
+ (Gem::Specification::add_bindir): Rewrote the 'files' accessor to
+ handle pathologically bad input.
+ (Gem::Specification::copy_of): Added as_array private method.
+
+ * Rakefile (package_version): Added '*.out' to clobber list.
+ Removed the broken-1.0.0.gem file from the clobber list.
+
+ * test/test_specification.rb
+ (TestSpecification::test_default_executable):
+ Seriously beefed up tests for certain specification issues.
+
+ * test/gemenvironment.rb (TestEnvironment::create): Added the 'f'
+ flag to deleting 'gemhome'.
+
+2006-12-30 Eric Hodel <drbrain@segment7.net>
+
+ * post-install.rb, lib/rubygems/server.rb: RubyGems now installs RDoc
+ and ri for itself.
+
+2006-12-28 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb (Gem::Installer#build_extensions):
+ Extension build failures now raise Gem::Installer::ExtensionBuildErrors.
+
+2006-12-26 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/package.rb (Gem::Package::TarInput#initialize): Bad
+ packages now raise FormatError instead of a generic RuntimeError.
+ * lib/rubygems/installer.rb (Gem::Installer#install): Raise an
+ InstallError when we have a bad gem file.
+
+2006-12-25 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/custom_require.rb (Gem::GemPathSearcher::find):
+ Removed SUFFIX_PATTERN. Evidently this was miss during an earlier
+ attempt to remove it.
+ (Gem::GemPathSearcher::matching_file): Changed reference to
+ SUFFIX_PATTERN into a call to Gem.suffix_pattern.
+
+ * Removed tab characters from numerous source files.
+
+ * lib/rubygems/installer.rb (Gem::Uninstaller::uninstall): Removed
+ stray tab characters.
+
+ * lib/rubygems.rb (Kernel::require_gem): Added file and line
+ number information to require_gem worning (makes it easier to
+ track down those offending lines of code).
+ (Kernel::location_of_caller): Added helper function to determine
+ file and line number of caller.
+
+2006-12-25 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb (Gem::Installer#app_script_text):
+ Simpler, more readable bin script.
+ * lib/rubygems/gem_commands.rb (Gem::PristineCommand#execute):
+ Regenerate bin scripts. This will clean up require_gem in scripts.
+
+2006-12-24 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/remote_fetcher.rb (Gem::RemoteFetcher#fetch_path):
+ Rescue various errors and return a more-friendly error.
+
+2006-12-23 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/command.rb lib/rubygems/gem_commands.rb: Make help
+ output fit in 80 columns.
+ * lib/rubygems/rubygems_version.rb: Bump version to 0.9.0.8, beta
+ time! (Oops, didn't go into beta.)
+
+2006-12-20 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/remote_fetcher.rb (Gem::RemoteFetcher#fetch_size): Give
+ a sensible error on bad URIs.
+ * lib/rubygems/gem_commands.rb (Gem::SourceCommand): Allow management
+ of sources in source_cache. Fixes bug #1128.
+ * lib/rubygems.rb (Kernel#require_gem): Add deprecation warning in
+ favor of gem.
+
+2006-12-19 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb (Gem::ExtBuilder): Refactored for
+ uniformity.
+ * lib/rubygems/remote_installer.rb
+ (Gem::RemoteInstaller#specs_n_sources_matching): Don't display gems
+ that can't be installed.
+ * lib/rubygems.rb, pre-install.rb: Fix installation errors on 1.9.
+ Fixes bug #4536 by Ryan Davis.
+ * lib/rubygems/source_index.rb, lib/rubygems/gem_commands.rb,
+ lib/rubygems-custom_require.rb: Use File.join with glob strings.
+ Fixes bug #1096 submitted by Chad Fowler.
+ * lib/rubygems/remote_installer.rb
+ (Gem::RemoteInstaller#install_dependencies): Make --force actually
+ force. Fixes bug #7365 by Robert James.
+
+2006-12-18 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/gem_commands (Gem::OutdatedCommand): Add a way to see
+ which gems are out-of-date.
+
+ * setup.rb: Ignore errors for .config and InstalledFiles when
+ the source path is read-only/NFS. Fixes bugs #1395 and #1374. Patch
+ by Ryan Davis.
+
+ * bin/gem_server: Pull code out into lib/rubygems/server.rb for
+ reusability. Closes Feature Request #2220 by Chris Morris.
+
+2006-12-16 Chad Fowler <chad@chadfowler.com>
+
+ * test/: Added functional test for extension gems proving that
+ non-compiling extensions don't result in success message.
+
+ * lib/rubygems/specification.rb: Raise exception if loaded spec is
+ nil. Closes bug #7299.
+
+ * test/gemenvironment.rb: Clean out gemhome every time to avoid dirty
+ directory failing tests.
+
+ * lib/rubygems/installer.rb: Change uninstall to require a full gem
+ name (not a partial match). Fixes bug #6007 and related unreported
+ issues.
+
+2006-12-15 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/installer.rb (Gem::Uninstaller): Correctly uninstall
+ executables if GEM_HOME is set. Patch #2264 by Sylvain Joyeux.
+
+ * lib/rubygems.rb (Gem::loaded_specs): Expose list of currently loaded
+ gems.
+
+ * lib/rubygems/gem_commands (Gem::UninstallCommand): Allow multiple
+ gems to be uninstalled at once.
+
+2006-12-14 Eric Hodel <drbrain@segment7.net>
+
+ * post-install.rb: Don't attempt to read unreadable files. Fixes
+ bug #2851.
+
+2006-12-13 Eric Hodel <drbrain@segment7.net>
+
+ * pre-install.rb.rb, post-install.rb: Don't call manage_gems because
+ we don't have sources installed yet. Bump version requirement to
+ 1.8.2 since rubygems/open-uri.rb was removed. Should fix bug #6206.
+
+ * lib/rubygems/installer.rb (Gem::Installer#build_extensions): Capture
+ stderr into results when building extensions.
+
+ * lib/rubygems/gem_commands.rb (Gem::ContentsCommand): Allow version
+ to be passed to gem contents. Not backwards compatible, -v now -V and
+ vice versa. Select newest gem for contents. Fixes bugs #2723, #7225.
+ Patches by Sava Chankov, Tom Pollard.
+
+ * lib/rubygems/gem_commands.rb (Gem::InstallCommand#execute): Allow
+ install errors to result in non-zero exit code. Fixes bug #2773.
+
+2006-12-03 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/remote_installer.rb (Gem::RemoteInstaller#install):
+ Add :cache_dir option to override the default.
+
+ * lib/rubygems/remote_installer.rb (Gem::RemoteInstaller#download_gem):
+ Check cache to see if the gem has been cached before downloading.
+
+2006-12-02 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems.rb (Gem::OperationNotSupportedError::suffixes,
+ Gem::OperationNotSupportedError::suffix_pattern): Removed
+ duplicate copies of the SUFFIX_PATTERN by providing a global
+ method Gem.suffixes and Gem.suffix_pattern.
+
+ * lib/rubygems/remote_fetcher.rb (Gem::open_uri_or_path): Reworked
+ the connection options for the open-uri call. Since we are not
+ using the rubygems supplied open_uri, we can use some new options
+ available that make proxy handling much easier.
+ (Gem::file_uri): Renamed is_file_uri to file_uri?.
+
+ * lib/rubygems/loadpath_manager.rb (Gem::LoadPathManager::self):
+ Added .jar to list of suffixes.
+
+ * test/functional.rb (FunctionalTest::test_env_remotesources):
+ Changed test to uses Gem.sources (the sources method on
+ remote_fetcher was removed).
+
+ * test/test_remote_fetcher.rb (TestRemoteFetcher): Renamed some of
+ the test constants and instance variables so that they were more
+ consistent and explained the tests a wee bit better.
+ (TestRemoteFetcher::test_no_proxy): Added assert_data_from_server
+ and assert_data_from_proxy to make it clear what the test was
+ doing and give better error messages on errors.
+ (TestRemoteFetcher::assert_data_from_server): Added
+ assert_data_from_server.
+ (TestRemoteFetcher::assert_data_from_proxy): Added
+ assert_data_from_proxy.
+
+2006-11-30 Chad Fowler <chad@chadfowler.com>
+
+ * lib/rubygems/open-uri.rb: Removed the duplicated library.
+
+2006-11-30 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification (Gem::Specification#eql?): Allow gemspecs
+ to be used intelligently with Array#- and Array#uniq.
+
+ * lib/rubygems/installer.rb: Return extension-building results in
+ Exception on build failure.
+
+ * lib/rubygems/remote_installer.rb: Ensure gems with similar names
+ cannot be matched for install. (Broken when searching was removed
+ from RemoteInstaller.)
+
+2006-11-29 Eric Hodel <drbrain@segment7.net>
+
+ * post-install.rb: Now requires rbconfig.
+
+ * lib/rubygems/specification.rb, lib/rubygems/version.rb: Fixed many
+ ivar warnings due to YAML specs.
+
+ * lib/rubygems/validator.rb, lib/rubygems/validator.rb
+ (Gem::Validator#unit_test Gem::RemoteInstaller::): Ensure the
+ current directory is restored.
+
+ * lib/rubygems/remote_fetcher.rb, lib/rubygems/remote_installer.rb,
+ lib/rubygems/installer.rb: Raise more-friendly and less-deadly errors.
+
+ * lib/rubygems/remote_installer.rb (Gem::RemoteInstaller#install):
+ Create version requirement correctly.
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::RemoteInstaller#find_gem_to_install): Allow RemoteInstaller to
+ work with SilentUI.
+
+ * lib/rubygems/remote_fetcher.rb (RemoteFetcher#open_uri_or_path):
+ Don't double-require open-uri.
+
+2006-11-27 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/specification.rb
+ (Gem::Specification#default_executable): Fixed bug where @executables
+ could be nil when loaded from index.
+
+2006-11-21 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/source_index.rb (Gem::SourceIndex#latest_specs): Grab
+ the latest versions of everything in the index. Written by Ryan
+ Davis.
+
+2006-11-20 Rich Kilmer <rich@infoether.com>
+
+ * lib/rubygems/cmd_manager.rb: Added PristineCommand
+
+ * lib/rubygems/gem_commands.rb: Added PristineCommand to restore
+ gems to pristine condition in the event of files begin deleted
+ based on the cached .gem file
+
+2006-11-19 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/*_fetcher.rb: Removed code specific to remote source
+ index updating.
+
+ * lib/rubygems/remote_installer.rb (Gem::RemoteInstaller#search):
+ Moved to Gem::SourceInfoCache#search
+
+ * lib/rubygems/source_info_cache.rb: Taught to update itself
+
+ * lib/rubygems/source_info_cache_entry.rb: Taught to update itself
+
+ * lib/rubygems/source_index.rb: Taught to update itself from a uri.
+
+2006-11-18 Chad Fowler <chad@chadfowler.com>
+
+ * lib/rubygems/installer.rb: Applied Kevin Clark's patch to make
+ RubyGems recognize mkrf files.
+
+2006-11-17 Eric Hodel <drbrain@segment7.net>
+
+ * test/test_remote_fetcher.rb: Don't allow files in Dir.pwd to make
+ tests fail. Spotted by Chad Fowler.
+
+ * lib/rubygems/remote_installer.rb (Gem::RemoteFetcher,
+ Gem::CacheFetcher): Break out of remote_installer.rb into separate
+ files.
+
+ * lib/rubygems/remote_installer.rb (Gem::SourceInfoCache,
+ Gem::SourceInfoCacheEntry): Allow requiring just the source cache
+ without the remote fetcher.
+
+2006-11-16 Eric Hodel <drbrain@segment7.net>
+
+ * test/test_local_cache.rb: Moved to better name
+
+ * test/test_gem_source_info_cache.rb: Renamed test methods to match
+ implementations. Sorted test names.
+
+ * lib/rubygems/remote_installer (Gem::SourceInfoCache): cache_data no
+ longer resets dirty flag. Sped up source cache loading. Exposed
+ cache file name in use.
+
+2006-11-15 Eric Hodel <drbrain@segment7.net>
+
+ * test/, lib/: Made files -w clean.
+
+ * test/: Made tests run independently.
+
+ * Rakefile: Tests now run with warnings on.
+
+2006-11-14 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rubygems/user_interaction.rb (Gem::StreamUI#progress_reporter):
+ Fix for Gem.configuration.verbose = nil, false
+
+ * lib/rubygems.rb (Gem::configuration): Fix RakeFileUtils pollution.
+
+2006-10-05 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/installer.rb (Gem::Installer::shebang): Updated to
+ optionally call env_shebang if the command line option is set.
+ (Gem::Installer::shebang_env): Added this method.
+
+2006-09-25 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/rubygems_version.rb (Gem): Bumped to version
+ 0.9.0.6.
+
+ * lib/rubygems/security.rb (Gem::Security::Exception): Added
+ permissions for cert files and directories.
+ (Gem::Security::Policy::verify_gem): File.exists? => File.exist?
+ (Gem::Security::self.verify_trust_dir): Beefed up code to create
+ trust directory structure.
+ (Gem::Security::self): Apply permissions when creating trust
+ files.
+
+ * lib/rubygems/package.rb (TarInput::initialize): File.exists? =>
+ File.exist?
+
+2006-09-24 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems.rb
+ (Gem::OperationNotSupportedError::configuration): Added
+ method_missing to configuration hash to allow nicer reference
+ syntax.
+
+2006-09-22 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::RemoteSourceFetcher::initialize): Proxy patch fixup to
+ escape user/password from Anatol Pomozov.
+ (Gem::RemoteSourceFetcher::connect_to): Proxy patch fixup to
+ escape user/password from Anatol Pomozov.
+
+ * test/test_remote_fetcher.rb (TestRemoteFetcher::setup): Proxy
+ patch fixup to escape user/password from Anatol Pomozov.
+ (TestRemoteFetcher::test_no_proxy): Proxy patch fixup to escape
+ user/password from Anatol Pomozov.
+
+ * test/io_capture.rb (Gem::IoCapture): Created new IoCapture
+ module to handle capturing output of code under test.
+
+ * test/test_installer.rb
+ (TestInstaller::test_generate_bin_symlinks_win32): Removed ugly
+ $TESTING hack and substituted new io capture module.
+ (TestInstaller::test_install_with_message): Removed one-off stdout
+ capture and replaced with new IO Capture module.
+
+2006-09-19 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/rubygems_version.rb (Gem): Bumped to version
+ 0.9.0.3.
+
+ * test/test_version_comparison.rb (TestRequirementEquality): Added
+ more tests for Dependency equality testing and one additions check
+ for requirement vs non-requirement equality.
+
+ * lib/rubygems/version.rb (Gem::Dependency::==) Fixed '=' bug in
+ '==' code.
+
+2006-09-18 Chad Fowler <chad@chadfowler.com>
+
+ * lib/rubygems/remote_installer.rb
+ Only show the last 3 gem versions on a multiplatform remote
+ install list.
+
+2006-09-18 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::RemoteInstaller::install): Added Hugh Sasse's patch for
+ skipping gems on install.
+
+ * lib/rubygems/rubygems_version.rb (Gem): Bumped to 0.9.0.2.
+
+ * lib/rubygems/version.rb (Gem::Dependency::hash): Added hash code
+ --http-proxy, the ENV var http_proxy and with no proxy.
+
+2006-08-26 Jim Weirich <jim@weirichhouse.org>
+ * lib/rubygems/remote_installer.rb
+ (Gem::RemoteInstaller::download_gem): Fixed download_gems so that
+ it properly passes the proxy option to the fetcher class. (based
+ on patch by Andy Shen).
+
+2006-08-12 Jim Weirich <jim@weirichhouse.org>
+
+ * bin/index_gem_repository.rb (Indexer::sanitize): Added a
+ sanitize step to the gem index generation in the hope of avoiding
+ problems with non-ASCII names in the yaml data.
+
+2006-06-14 Jim Weirich <jim@weirichhouse.org>
+
+ * Rakefile (announce): Added 1.9 hack for ENV['CERT_DIR']. Remove
+ this in the future if 1.9 behavior changes.
+
+2006-06-13 Jim Weirich <jim@weirichhouse.org>
+
+ * Rakefile: ENV['CERT_DIR'] is now '' rather than nil.
+
+ * lib/rubygems/specification.rb (Gem::Specification::initialize):
+ Eric added some 1.9 compatibility code (funcall vs send).
+
+ * lib/rubygems/package.rb (TarOutput::self): Eric added some 1.9
+ compatibility code (funcall vs send).
+
+ * experimental/deployment.rb (Gem::Deployment): Moved the
+ deployment code out of the live code base into the experimental
+ directory. The code wasn't used and the tests were not all
+ passing.
+
+2006-06-11 Jim Weirich <jim@weirichhouse.org>
+
+ * bin/gemri: Added gemri to bin directory.
+
+ * lib/rubygems/custom_require.rb (Gem::GemPathSearcher::find):
+ Added .rbw to suffix pattern in custom_require.
+
+2006-06-07 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems.rb: Added copyright notices to all Ruby files.
+
+2006-04-07 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/gem_commands.rb (Gem::RDocCommand::execute): Added
+ RI option to the rdoc subcommand.
+
+2006-04-05 Jim Weirich <jim@weirichhouse.org>
+
+ * test/test_parse_commands.rb
+ (TestParseCommands::test_parsing_update_options): Fixed unit tests
+ to assert that the install dir is expanded.
+
+ * lib/rubygems/doc_manager.rb (Gem::DocManager::generate_ri):
+ Break out from generate_rdoc to support installing all RI docs
+ first.
+
+ * lib/rubygems/gem_commands.rb
+ (Gem::InstallUpdateOptions::add_install_update_options): Expanded
+ repository directory to absolute path.
+ (Gem::InstallCommand::execute): Make sure that *all* of the RI
+ documents are generated before generating any RDocs (due to a bug
+ in the RDoc library).
+
+ * lib/rubygems/installer.rb (Gem::ExtExtConfBuilder::self): Fixed
+ typo in ExtExtConfBuilder that prevented C based gems to install.
+ (Gem::ExtExtConfBuilder::self): Installed patch to prevent the
+ overriding of target_prefix in native extensions (thanks to Aaron
+ Patterson for the patch).
+
+2006-04-04 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/rubygems_version.rb (Gem): Bumped to version
+ 0.8.11.10.
+
+ * lib/rubygems/incremental_fetcher.rb
+ (Gem::IncrementalFetcher::update_cache): Now falls back to bulk
+ updates if the number of gems if over 50.
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::RemoteSourceFetcher::source_index): Added "bulk" to the
+ update message to differentiate it from the incremental message.
+
+ * lib/rubygems/specification.rb
+ (Gem::Specification::Specification): Modified to add dashes to
+ gemspecs generated under Ruby 1.8.3. This makes it easier to run
+ RubyGems on a 1.8.2 system.
+
+2006-04-01 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/doc_manager.rb (Gem::DocManager::run_rdoc): Changed
+ exception handler to print error message if document generation
+ fails, but then to continue with the rest of the installation.
+ Permission errors still terminate the install because if one
+ install fails because of permission problems, chances are that all
+ will fail.
+ (Gem::DocManager::install_ri): Removed wrapping of exceptions with
+ DocumentError. Most exceptions now don't propagate out of
+ run_rdoc.
+ (Gem::DocManager::install_rdoc): Removed wrapping of exceptions
+ with DocumentError. Most exceptions now don't propagate out of
+ run_rdoc.
+
+2006-02-23 Jim Weirich <jim@weirichhouse.org>
+
+ * bin/index_gem_repository.rb (MasterIndexBuilder::cleanup): Fixed
+ bug where we were trying to read the index file (to compress it)
+ before it was closed, often leading to a truncated index file.
+
+Tue Jan 24 16:26:13 2006 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/config_file.rb
+ Luca Pireddu reported a fatal error when permissions on
+ .gemrc were too restrictive. Fixed.
+
+Tue Dec 6 14:51:13 2005 Jim Weirich <jim@tardis>
+
+ * lib/rubygems/source_index.rb
+ (Gem::SourceIndex::load_specification): Added an untaint call to
+ make the code run in SAFE=1 mode under 1.8.3.
+ (Gem::SourceIndex::load_gems_in): Untaint here too.
+
+ * lib/rubygems/installer.rb (Gem::Installer::install): Untaint
+ here too.
+ (Gem::Installer::extract_files): Untaint here too.
+
+ * lib/rubygems/custom_require.rb
+ (Gem::GemPathSearcher::matching_file): Untaint here too.
+
+ * test/gemenvironment.rb: Added $SAFE=1 to the test environment to
+ make sure we can run in $SAFE mode.
+
+2005-12-03 Jim Weirich <jim@tardis>
+
+ * lib/rubygems/rubygems_version.rb (Gem): Bumped version to
+ 0.8.11.6'
+
+ * lib/rubygems/user_interaction.rb
+ (Gem::StreamUI::SimpleProgressReporter::done): Added several new
+ progress reporters.
+
+ * lib/rubygems/command.rb
+ (Gem::Command::specific_extra_args_hash): Added --verbose
+ processing.
+
+ * lib/rubygems/config_file.rb (Gem::ConfigFile::handle_arguments):
+ Added --traceback as alias for --backtrace (I always get them
+ confused).
+ (Gem::ConfigFile::initialize): Added a verbose option.
+
+2005-11-28 Jim Weirich <jim@tardis>
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::SourceInfoCacheEntry::replace_source_index): Fixed the
+ SourceIndexCacheEntry so that it will manufacture an empty source
+ index if given a nil value for the +si+ value.
+
+2005-11-08 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems.rb: Ara Howard's fix to allow 0.0.0 to be a valid gem
+ version.
+
+2005-11-08 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/gem_commands.rb: Fixed bug in gem unpack. It was
+ sorting incorrectly, resulting in the wrong version being unpacked in
+ some edge cases. Thanks to Jakob Skjerning for the detailed bug report.
+
+2005-11-03 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/installer.rb: Fixed bug that would cause the executables
+ from the wrong gem to be uninstalled if the names matched the same
+ regex. Thanks Eric Hodel.
+
+2005-11-01 Jim Weirich <jim@tardis>
+ * lib/rubygems/gem_commands.rb (Gem::UpdateCommand::initialize):
+ Upgrade => Update change.
+ (Gem::UpdateCommand::execute): Upgrade => Update change.
+ (Gem::UpdateCommand::execute): Upgrade => Update change.
+
+2005-11-01 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/gem_commands.rb: Allow gem unpack to accept a gem file
+ path instead of gem name: gem unpack mygem-1.0.0.gem.
+
+2005-10-31 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/installer.rb: Tilman Sauerbeck's patch to support
+ extensions built with Rake!
+
+2005-09-13 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/package.rb (TarInput::initialize): Removed
+ requirement for SSL when signatures are found in a gem. Only
+ require SSL if the security policy requires checking the
+ signatures.
+
+ * lib/rubygems/custom_require.rb (Kernel::require): Disabled
+ autorequire during custom require.
+
+2005-09-07 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/gem_openssl.rb (Gem::ensure_ssl_available): Added a
+ test in gem_openssl to make sure the ruby portion of ssl is also
+ loaded.
+
+2005-08-31 Jim Weirich <jim@weirichhouse.org>
+
+ * Rakefile (install): Changed the rake install task to use setup.rb.
+
+2005-07-08 Chad Fowler <chad@chadfowler.com>
+
+ * lib/rubygems/remote_installer.rb: Applied Daniel Roux's patch
+ to make RubyGems work with authenticating proxies.
+
+2005-07-08 Jim Weirich <jim@weirichhouse.org>
+
+ * Preparing for release 0.8.11.
+
+2005-06-12 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/installer.rb
+ (Gem::Installer::installation_satisfies_dependency): Refactored
+ dependency check into ensure_dependency! and
+ installation_satisfies_dependency?.
+
+2005-06-12 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems.rb,lib/rubygems/installer.rb: Applied Mark Hubbart's
+ * lib/rubygems/remote_installer.rb: Applied David Glasser's install-
+ * Applied Paul Duncan's incredibly complete gem signing patch.
+ Thanks, Paul!
+ * lib/rubygems/installer.rb: Fixed bug in installer that caused
+ dependency installation not to work.
+
+2005-06-06 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/specification.rb: Fixed Erik hatcher's reported bug
+ of gem directories having "-" at the end of their names (e.g.
+ "BlueCloth-1.0.0-".
+
+2005-06-01 Jim Weirich <jim@weirichhouse.org>
+
+ * scripts/specdoc.rb (_resolve_links): Updated to generate hieraki
+ format so it can be included in the docs.rubygems.org site.
+
+ * test/test_specification.rb (TestSpecification::test_to_ruby):
+ Fixed test on date that hard-coded a specific date.
+
+2005-05-29 Jim Weirich <jim@weirichhouse.org>
+
+ * Changes from the Seattle Code fest: (1) Package list command
+ (e.g. gem inspect GEM). (2) .gemrc settings now allow cvsrc like
+ options to set defaults per subcommand. (3) The autorequire spec
+ attribute will now accept a list. (4) Binwrappers vs symlinks
+ (more info to follow). (5) Substituted Time for Date in specs,
+ increasing performance dramatically in an important area.
+
+2005-05-04 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems.rb (Gem::Exception::find_home): Changed rescue
+ clause from Exception to StandardError. Exception doesn't seem to
+ catch everything ... I'm not sure I understand why.
+
+2005-04-29 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/specifiation.rb: Marcel Molina's patch to discover
+ which attributes in the spec are Array attributes.
+
+2005-04-27 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/gem_commands.rb: -y is now a synonym for
+ --include-dependencies
+
+2005-04-21 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/installer.rb: Added non-require_gem dependency check
+ for installation.
+
+2005-04-03 Chad Fowler <chad@chadfowler.com>
+
+ * pre-install.rb: Added version check to RubyGems installation.
+
+2005-03-25 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/rubygems_version.rb (Gem): Created release for
+ 0.8.10.
+
+ * lib/rubygems/gem_commands.rb
+ (Gem::UpdateCommand::do_rubygems_update): Update --system now runs
+ the ruby command directly rather than trying to load the
+ update-rubygems command. There were too many things to go wrong
+ with the old way.
+
+2005-03-24 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::RemoteInstaller::find_dependencies_not_installed): Fixed to
+ reload source index before attempting to detect dependencies.
+
+2005-03-23 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::RemoteInstaller::find_dependencies_not_installed): Switched
+ to using SourceIndex#find_name to detect missing dependencies,
+ avoiding a gem activation during an install.
+
+ * lib/rubygems/installer.rb (Gem::Installer::install): Removed
+ activate call from install step. If we need to do something about
+ dependencies at this time, then we need a better way to do them.
+
+ * lib/rubygems.rb: Removed the require for rubygems/timer.
+
+2005-03-16 Jim Weirich <jim@weirichhouse.org>
+
+ * test/gemenvironment.rb (TestEnvironment::create): Added require
+ on gem/builder.
+
+ * lib/rubygems/source_index.rb (Gem::SourceIndex::initialize):
+ Allowing default argument to new to be an empty hash.
+ (Gem::SourceIndex::from_installed_gems): Refactored into a class
+ method that invokes a instance method.
+ (Gem::SourceIndex::refresh): Refresh now does a complete reload
+ from disk. This should be more accurate that the earlier version.
+
+ * lib/rubygems/installer.rb (Gem::Uninstaller::uninstall): removed
+ unneeded refresh!.
+
+ * lib/rubygems.rb (Gem::Exception::source_index): Removed
+ automatic refresh from Gem.source_index ... it wasn't reliable
+ when removing installed gems.
+ (Gem::Exception::activate): Added detection of previously loaded
+ gems.
+
+2005-03-15 Chad Fowler <chad@chadfowler.com>
+
+ * bin/gem_server: (htonl) rdoc opens in existing browser window.
+
+2005-03-14 Jim Weirich <jim@weirichhouse.org>
+
+ * Released 0.8.8
+
+2005-03-14 Jim Weirich <jim@weirichhouse.org>
+
+ * Released 0.8.7
+
+2005-03-13 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/installer.rb (Gem::Installer#shebang): Refactored and
+ stripped result to avoid ^M issues.
+
+2005-03-11 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/gem_commands.rb (Gem::DependencyCommand): Added a
+ new command "gem dependency" to show the dependencies of an
+ installed gem.
+
+ * lib/rubygems/cmd_manager.rb (Gem::CommandManager::initialize):
+ Added DependencyCommand to the command manager registrar.
+
+ * lib/rubygems/version.rb (Gem::Requirement): Unnested Requirement
+ from the Version class. There was no benefit to having it nested.
+ Gem::Version::Requirement is set to point to the new class so to
+ be compatible with old gems.
+
+ * lib/rubygems/installer.rb (Gem::Uninstaller::ask_if_ok): Changed
+ uninstaller confirm message to read 'Continue with uninstall'.
+ Its clearer that way.
+
+ * lib/rubygems.rb (Gem::Exception::required_location): Switch to
+ use SourceIndex#find_name rather than search. Made sure a nil
+ value is returned with a path is not found.
+
+ * lib/rubygems/source_index.rb (Gem::SourceIndex::search): Changed
+ parameter name to gem_pattern to emphasize using Regex in search.
+ (Gem::SourceIndex::find_name): Added find_name to handle the
+ common case of searching for an exact match on the short name.
+
+ * lib/rubygems.rb (Gem::Exception::activate): Make sure that
+ activate more closely adheres to honoring the auto_require=>false
+ request.
+ (Gem::Exception::report_activate_error): Out of line error
+ reporting for activate.
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::RemoteInstaller::find_dependencies_not_installed): Found
+ another location that was using require_gem with auto_require.
+ Fixed to use :auto_require=>false.
+
+ * lib/rubygems/gem_commands.rb
+ (Gem::InstallUpdateOptions::add_install_update_options): Added
+ --ignore-dependencies option. Still needs to be wired to logic.
+
+ * lib/rubygems/installer.rb (Gem::Installer::install): Added call
+ to require_gem_with_options.
+
+ * lib/rubygems.rb (Kernel::require_gem_with_options): Added to
+ allow easier specification of the autorequire flag for
+ Gem.activate.
+
+2005-03-10 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::RemoteSourceFetcher::normalize_uri): Normialize a URI to
+ start with http:// if it does not already.
+
+ * test/test_deployment.rb (TestDeployment::xtest_deploy_sources):
+ Disabled this test. It is part of the new deployment software and
+ is not working yet.
+
+2005-03-09 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/gemconfigure.rb (Gem::self): Added to aid dynamic
+ versioning.
+
+ * lib/rubygems/command.rb (Gem::Command::command_manager): Moved
+ command_manager to base class.
+
+ * lib/rubygems/gem_commands.rb (Gem::CleanupCommand::execute):
+ Both implicit and explicit gems now work with cleanup.
+
+2005-03-08 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/installer.rb (Gem::Uninstaller::ok_to_remove):
+ Fixed source index to be loaded from the installed gems when doing
+ an "OK TO REMOVE" dependency check.
+
+2005-03-06 Rich Kilmer <rich@infoether.com>
+ * lib/rubygems/deployment.rb: beginning of a deployment capability
+
+ * test/test_deployment.rb: first tests of new deployment system
+
+2005-03-04 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/gem_commands.rb: Small bugfix for the case when you
+ pass in a gem name (or more) to cleanup for the cleanup command.
+
+2005-03-04 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/installer.rb (Gem::Uninstaller::ok_to_remove):
+ Reworked logic in uninstall to be intelligent about dependencies.
+ We only complain about dependencies if removing a gem will cause a
+ dependency error. The uninstaller now checks for :ignore, :all
+ and :executables options.
+
+ * lib/rubygems/cmd_manager.rb (Gem::CommandManager::initialize):
+ Registered Cleanup command.
+
+ * lib/rubygems/gem_commands.rb (Gem::CleanupCommand): Added
+ Cleanup command to gem.
+ (Gem::UninstallCommand::initialize): Added --all, --ignore and
+ --executables options to uninstall. This helps to avoid excessive
+ YESes all the time.
+
+2005-02-28 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::LocalSourceInfoCache::write_cache): Open cache file in
+ binary mode.
+
+2005-02-28 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/config_file.rb: don't warn about not being able to
+ find config file.
+ * lib/rubygems/doc_manager.rb: (for DHH) don't install rdoc docs for
+ * lib/rubygems/gem_commands.rb: Print which gems are updated on 'gem
+ update'. If --system is used, report that the rubygems system
+ software has been updated.
+ * lib/rubygems/installer.rb: Cleaned up the uninstall has_dependents
+ logic and output. It was misleading and buggy before.
+
+2005-02-27 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/config_file.rb
+ (Gem::ConfigFile::default_config_file_name): Fixed bug in finding
+ home directory for the .gemrc file.
+
+2005-02-27 Chad Fowler <chad@chadfowler.com>
+
+ * Released 0.8.6
+
+ * Fixed a small bug with shebang construction
+
+2005-02-26 Jim Weirich <jim@weirichhouse.org>
+
+ * Released 0.8.5
+
+ * lib/rubygems/doc_manager.rb (Gem::DocManager::generate_rdoc):
+ Removed warning about generating rdocs on gems w/o an rdoc flag.
+
+ * lib/rubygems/gem_commands.rb
+ (Gem::UpdateCommand::do_rubygems_update): Added --system option to
+ update to specifically update the version of rubygems.
+ (Gem::UpdateCommand::which_to_update): Fixed some refactoring bugs
+ in the which_to_update method.
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::LocalSourceInfoCache::read_cache): switched to Marshal
+ rather than Yaml for local cache.
+
+ * bin/gem: Added requirement for Ruby >= 1.8.0.
+
+2005-02-10 Chad Fowler <chad@chadfowler.com>
+ * bin/gem_server: Added Martin Ankerl's wonderful new gem_server
+ template
+
+2005-01-27 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/gem_commands.rb: Fixed
+ `gem update` so it accepts a list of gems to update and _only_
+ updates those.
+ * lib/rubygems/installer.rb: Fixed a bug in the new shebang code.
+ * lib/rubygems/remote_installer.rb: Attempt to fix Curt Hibbs'
+ reported Proxy bug without actually having a proxy to test with.
+
+2005-01-22 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/custom_require.rb: Lyle Johnson's fix for Bug #1379
+
+2005-01-20 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/validator.rb: Applied Austin Ziegler/Kasper Schiess's
+ patch to fix unit test running bug.
+
+2005-01-14 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/installer.rb: attempt at fixing Ryan Davis's
+ reported Shebang bug. STILL NOT WORKING, because it doesn't work
+ with ^M characters.
+ * lib/rubygems/config_file.rb: small but ugly error fixed if no
+ config file exists.
+ * lib/rubygems/remote_installer.rb: Fixed bug http://rubyforge.org/tracker/index.php?func=detail&aid=1331&group_id=126&atid=575.
+
+2005-01-01 Chad Fowler <chad@chadfowler.com>
+ * Released 0.8.4
+
+2004-12-31 Jim Weirich <jim@weirichhouse.org>
+
+ * Rakefile: Switch to standard Rake test tasks.
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::RemoteSourceFetcher::read_data): Added a retry to try a
+ lower case gem name if the open failed. This fixes a problem
+ where case differences are preventing some gems from installing.
+
+2004-12-29 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/gem_commands.rb (Gem::InstallCommand::execute):
+ Changed the RemoteInstaller to take an options hash rather than
+ individual options. This will leave the interface more resilient
+ to changes as more options are added
+ (e.g. --install_dependencies).
+
+ * lib/rubygems/specification.rb (Gem::Specification): Marked array
+ attributes explicitly. This allows for explicit conversion to
+ arrays when assigned.
+
+ * test/test_specification.rb
+ (TestSimpleSpecification::test_array_attributes): Added test for
+ array_attributes forcing values to arrays.
+
+2004-12-28 Jim Weirich <jim@tardis>
+
+ * lib/rubygems.rb (Gem::Exception::ensure_gem_subdirectories):
+ Fixed the Ryan Davis patch to work correctly when directories are
+ not writable.
+
+2004-12-18 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/version.rb: Erik Veenstra's sort patch.
+ * lib/rubygems.rb: Ryan Davis's installation bug fix.
+
+2004-12-14 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * test/test_loadmanager.rb: invalidated it as a unit test; it's
+ incompatible with custom_require.rb.
+
+2004-12-12 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/custom_require.rb: simple bug fix.
+
+2004-12-12 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/custom_require.rb: new file to replace
+ loadpath_manager.rb and speed up the custom require functionality.
+
+ * lib/rubygems/timer.rb: new file; simple benchmarking tool that's
+ useful at the moment but needn't stay in RubyGems permanently.
+
+ * lib/rubygems/source_index.rb: include Enumerable and implement #size
+ and #length.
+
+ * lib/rubygems/specification.rb: removed lazy initialisation of
+ attributes to reduce #copy_of invocations; folded
+ Specification.copy_of into Specification#copy_of.
+
+ * lib/rubygems.rb: require 'rubygems/custom_require' instead of
+ 'rubygems/loadpath_manager'; removed out of date documentation; added
+ "require 'rubygems/timer'" to temporarily assist with benchmarks.
+
+2004-12-07 Jim Weirich <jim@weirichhouse.org>
+
+ * Released 0.8.3
+
+2004-12-06 Jim Weirich <jim@weirichhouse.org>
+
+ * test/test_specification.rb
+ (TestLegacyYamlSpecification::test_load): Fixed test to avoid the
+ __FILE__ stuff. Running tests from rakefile guarantees that the
+ file paths start from the right location.
+
+ * pkgs/sources/sources.gemspec: Made Gem.sources_spec idempotent.
+
+ * lib/rubygems/specification.rb (Gem::Specification::initialize):
+ Added @@gather to Gem::Specification to facilitate proper loads.
+ (Gem::Specification::Specification): Added Specification.load.
+
+ * lib/rubygems/source_index.rb (Gem::SourceIndex): Fixed comments
+ 'long name' => 'full name'.
+
+ * lib/rubygems/gem_commands.rb (Gem::BuildCommand::load_gemspecs):
+ Changed to use Gem.Specification.load.
+
+ * Rakefile: Added sources-*.gem to clobber list.
+ (egrep): Upgraded the DBG finder to include breakpoint.
+
+ * post-install.rb (install_sources): Using block version of chdir.
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::LocalSourceInfoCache::read_cache): Fixed initialization of
+ cache.
+
+ * lib/rubygems.rb: Updated version to 0.8.2.
+
+2004-12-04 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::LocalSourceInfoCache::writable_file): Now just returns the
+ selected cache file (which was selected based on writability).
+ (Gem::LocalSourceInfoCache::try_file): Added try_file to determine
+ if a file is a candidate for a cache file.
+ (Gem::LocalSourceInfoCache::select_cache_file): Added failure if
+ there are not valid cache file candidates.
+
+ * lib/rubygems.rb (Gem::Exception): Renamed @@cache to
+ @@source_index.
+ (Gem::Exception::source_index): Renamed Gem.cache to
+ Gem.source_index (but left cache as an alias).
+
+2004-12-03 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/remote_installer.rb (Gem::LocalSourceInfoCache):
+ Added a local cache manager object to implement the read/write
+ policies on the system and user cache files.
+ (Gem::LocalSourceInfoCache::update): Added update and flush to the
+ caching fetcher so that it knows when it needs to update the local
+ cache files.
+ (Gem::RemoteInstaller::initialize): Switched to using a cached
+ fetcher in the remote installer. All the caching logic was
+ removed from the installer. User writable cache files are now
+ supported.
+ (Gem::RemoteInstaller::write_gem_to_file): write_gem_to_file now
+ will create the path if needed.
+
+2004-12-02 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/package.rb (TarInput::zipped_stream): To workaround
+ a problem with earlier than 1.2.1, we read the zipped data into a
+ string, and then return an IO object on that string.
+ (TarInput::each): Refactored getting a stream to the zipped data
+ into <tt>zipped_stream</tt>.
+
+2004-12-01 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::RemoteSourceFetcher::convert_spec): We now proprocess the
+ yaml string data to reduce it in size. This was done to
+ workaround a problem with large YAML files (although it is just a
+ temporary fix because our yaml data keeps growing and growing).
+
+ * Rakefile: Added more targets to the clobber target.
+
+ * test/test_remote_fetcher.rb
+ (TestRemoteFetcher::test_explicit_proxy): Added tests for proxy
+ support.
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::RemoteSourceFetcher::connect_to): Refactored to add proxy
+ support.
+
+2004-11-28 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/loadpath_manager.rb: Added Mauricio's patch to work
+ around string contains null byte issue.
+
+2004-11-27 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::RemoteSourceFetcher::get_size): Switched from open-uri with
+ early abort to an HTTP.head call to get the size of the yaml file
+ on the server.
+
+2004-11-26 Jim Weirich <jim@weirichhouse.org>
+
+ * test/test_specification.rb
+ (TestDefaultSpecification::test_defaults): Added test for some
+ basic defaults in a gem spec.
+
+ * test/test_remote_installer.rb (MockFetcher::source_info): Made
+ the fake test data more realistic.
+ (TestRemoteInstaller::test_source_info): Improved tests.
+
+2004-11-26 Jim Weirich <jim@tardis>
+
+ * test/test_remote_installer.rb (MockFetcher): Added MockFetcher
+ to make testing the remote installer easier. Currently there are
+ two remote installer test classes. Eventually TestRemoteInstaller
+ will succeed RemoteInstallerTest, which is very incomplete.
+
+ * test/test_package.rb (TC_TarReader::TC_TarInput): Made the unit
+ test ignore the setgid bit. The setgid bit doesn't work on my
+ laptop for some reason. This may be a problem with my laptop
+ rather than with this code. Should investigate further.
+
+ * lib/rubygems/remote_installer.rb (Gem::RemoteSourceFetcher):
+ Added a Fetcher object to the remote installer to handle all the
+ details of getting the remote information. This allows testing
+ the logic of the remote installer without actually doing remote
+ calls.
+ (Gem::RemoteInstaller::sources): Renamed get_caches to
+ source_info. The problem is that cache is too generic and there
+ are actually several things that we will cache in the system.
+
+ * lib/rubygems/cache.rb (Gem::Cache::self): Changed interface to
+ from_installed_gems slightly.
+ (Gem::Cache::self): Reordered rescue clauses so that the syntax
+ exception might actually be handled.
+
+ * lib/rubygems.rb (Gem::Exception::ensure_gem_subdirectories):
+ Dumped the check_gem_subdirectories method to use the almost
+ identical ensure_gem_subdirectories method.
+ (Gem::Exception::ensure_gem_subdirectories): Only attempt to
+ create the gem subdirectories if we can actually write them.
+
+ * bin/gem_server: Added date of last file modification to header
+ of /yaml. This is in preparation for using a head command with
+ date/time stamping in fetching the source cache.
+
+2004-11-25 Ryan Davis <ryand@zenspider.com>
+ * lib/rubygems.rb: Added GEM_SKIP functionality, which will tell
+ loadpath_manager not to load specific libs from gems. For
+ testing/ development purposes. Created by Ryan Davis.
+
+2004-11-24 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/specification.rb: Allow multiple authors per gem.
+ * lib/rubygems/gem_commands.rb: command line error message if you
+ run 'gem install' with no args.
+ * lib/rubygems/loadpath_manager.rb: Fixed @specs bug as reported by
+ Lothar Schulz on ruby-talk.
+
+2004-11-07 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems.rb,lib/rubygems/installer.rb,lib/rubygems/cache.rb
+ lib/rubygems/remote_installer.rb,lib/rubygems/gem_commands.rb:
+ Fixes to make non-root installation work properly. Still need to
+ fix uninstallation.
+ * lib/rubygems/gem_commands.rb: Allow multiple gems/gem names on the
+ command line for install.
+
+2004-10-31 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/version.rb,test/test_version_comparison.rb: Patrick May's
+ * post-install.rb: Patrick May's fix for rubygems lib not being found
+ during install.
+
+2004-10-29 Chad Fowler <chad@chadfowler.com>
+ * packages/,pkgs,install.rb: renamed "packages" to "pkgs" to avoid
+ * remote_installer.rb: Added user-agent reporting for remote
+ operations
+ * setup.rb,install.rb,bin/update_rubygems: removed install.rb and
+ added setup.rb and post-install.rb. Changed update_rubygems so that
+ params passed to it can be passed on to setup.rb
+
+2004-10-25 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/installer.rb
+ (Gem::Uninstaller::remove_executables): Corrected spelling of
+ "addtion".
+
+2004-10-24 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/version.rb (Gem::Version::Requirement::self): Now
+ properly handles arrays of version constraints.
+
+ * lib/rubygems/loadpath_manager.rb
+ (Gem::LoadPathManager::Gem::Specification): Added comments
+ describing the fast Spec class purpose. Added to_s to
+ Gem::Specification (both fast and slow versions).
+ (Gem::LoadPathManager.paths): Returns (cached) list of gem paths.
+ (Gem::LoadPathManager::self): Refactored to use glob_over in
+ search_loadpaths and search_gempaths.
+
+ * lib/rubygems/installer.rb: Added some requires.
+
+ * lib/rubygems/cache.rb (Gem::Cache::refresh): Fixed refresh! to
+ call load_specification on the Cache class, not on itself.
+
+ * lib/rubygems.rb (Gem::Exception::activate): added comments to
+ activate. Also made sure that partial name matches in the gem
+ cache search were avoided.
+ (Gem::Exception::clear_paths): Added code to clear the gem cache
+ when reseting the gem paths.
+ (Gem::Exception::require): Added a function to take a gem name and
+ a library file name (in that gem) and return a path to the library
+ in the gem. David HH was interested in this in order to speed up
+ some require statements under ModRuby. Eventually I hope we won't
+ need these special tricks.
+ (Gem::Exception::latest_partials): Fixed bug that assumed exactly
+ three digits in a version number.
+
+ * Rakefile (egrep): Added two tasks to find all the FIXME/TODO
+ markers in the source code comments and to find the DBG print
+ lines.
+
+2004-10-23 Jim Weirich <jim@weirichhouse.org>
+
+ * test/test_specification.rb
+ (TestSimpleSpecification::test_add_bindir_to_list_of_files):
+ Verify that an executable doesn't need the bindir if bindir is
+ set.
+ (TestSimpleSpecification::test_no_bindir_in_list_of_files): Added
+ test the verify that exectuable can be written without a default
+ binder.
+
+ * lib/rubygems/installer.rb
+ (Gem::Installer::generate_bin_scripts): Added check so that the
+ bindir is access only when there are actually executables to
+ install. Checking for an installable bindir was giving permission
+ errors when installing test gems.
+
+2004-10-21 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/installer.rb: Show extension build errors during install
+ in addition to logging them to gem_make.out
+
+2004-10-02 Chad Fowler <chad@chadfowler.com>
+
+ * lib/rubygems/validator.rb,lib/rubygems/gem_commands.rb: Added
+ --test option for "gem check" that runs unit tests on already-
+ installed gems.
+
+2004-09-30 Rich Kilmer <rich@infoether.com>
+
+ * lib/rubygems/specification.rb - externalized the loaded_from runtime
+ var on specification
+ * lib/rubygems/cache.rb - optimized cache refresh! method and refactored
+ processing of files when building cache.
+ * lib/rubygems/loadpath_manager.rb - fixed bug in loadpath manager in
+ finding native extensions that have ext on os x, win32 and solaris
+
+2004-09-20 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/gem_commands.rb: If file match during local install is
+ a directory, don't try to treat it erroneously as a gem (bug reported
+ by Rich).
+ * lib/rubygems.rb: Fixed small bug in #latest_load_paths
+
+ (NOTE: It looks like 0.8.0/0.8.1 was released in this timeframe)
+
+2004-09-14 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems.rb: Fixed bug in require_gem (thanks Jamis Buck!)
+ that would require a gem based on an inexact search of its name
+ in the local cache. This caused copland-webrick to be loaded
+ when a request was made for "copland".
+
+2004-09-12 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/specification.rb, test/test_specification.rb: Removed
+ library_stubs attribute.
+
+2004-09-12 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * scripts/specdoc.rb: Check that all attributes are documented; and
+ improved formatting.
+ * scripts/specdoc.yaml: test_suite_file -> test_files; finished
+ documentation.
+ * scripts/specdoc.data: misc changes.
+
+2004-09-11 Chad Fowler <chad@chadfowler.com>
+
+ * test/test_parse_commands.rb: Fix failing unit tests due to Rich's fix from
+
+ * lib/rubygems/specification.rb: Add bindir to executable path on file list
+
+2004-09-11 Rich Kilmer <rich@infoether.com>
+
+ * lib/rubygems/gem_commands.rb - got rid of stub options
+
+ * lib/rubygems/install.rb - changed output of messages so the UI would format
+ better
+
+ * bin/gem_server - exit! from ^c
+
+2004-09-09 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/loadpath_manager.rb: Small bug when gem specs have ruby
+ version requirements.
+ * lib/rubygems/specification.rb, lib/rubygems/gem_commands.rb: Fixed failing
+ functional test.
+
+2004-09-08 Chad Fowler <chad@chadfowler.com>
+ * install.rb: added stub removal to the install process
+
+2004-09-06 Chad Fowler <chad@chadfowler.com>
+ * test/test_package.rb: Fixed failing unit test as per Mauricio's email to
+ the rubygems list.
+ * Fixed minor issues with Windows cmd file generation.
+
+2004-09-06 Rich Kilmer <rich@infoether.com>
+ * lib/rubygems/remote_installer.rb - enabled caching of source caches
+ based on the size of the yaml.Z/yaml file.
+
+2004-08-29 Chad Fowler <chad@chadfowler.com>
+ * /lib/rubygems/gem_command.rb: small big fix for local gem installs
+ on Windows.
+
+2004-08-28 Rich Kilmer <rich@infoether.com>
+
+ * /lib/rubygems/installer.rb, /lib/rubygems/doc_manager.rb,
+ /lib/rubygems/cmd_manager.rb - Added an exception: FilePermissionError
+ which checks to ensure write access to the install/uninstall/rdoc
+ destination directories and raises a nice error instead of the standard
+ one.
+
+2004-08-28 Rich Kilmer <rich@infoether.com>
+
+ * /lib/rubygems/installer.rb - commented out stub addition and removal
+
+2004-08-28 Rich Kilmer <rich@infoether.com>
+
+ * /lib/rubygems.rb, /lib/rubygems/loadpath_manager.rb -
+ this adds all the loadpath_manager stuff with the 'ultimate require hack' to
+ rubygems.rb. Also, require_gem methods body has been extracted into a method
+ Gem.activate that differs in the calling signature in that the second param is
+ a boolean that determines whether to autorequire or not.
+
+2004-08-27 Rich Kilmer <rich@infoether.com>
+
+ * lib/rubygems/user_interaction - added ask_yes_no as a method
+ which returns true/false and formats/processes the [yn] stuff.
+ it also has an optional second parameter of true/false for the
+ default value.
+
+ * lib/rubygems/installer.rb, lib/rubygems/remote_installer.rb,
+ lib/rubygems/command_manager.rb - changed all places where ask
+ was used with [Yn] to ask_yes_no
+
+2004-08-24 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/installer.rb: Library stubs are now installed as per
+ 'library_stubs' gemspec attribute. A stub is (still) also installed
+ for the 'autorequire' attribute. All library stub handling
+ refactored into two new classes: LibraryStubs and LibraryStub.
+
+ * test/test_parse_commands.rb: as per 2004-08-17 below, the 'update'
+ command takes --rdoc as its default now.
+
+2004-08-22 Rich Kilmer <rich@infoether.com>
+ * lib/rubygems/installer.rb: fixed stub generation...i added the version
+ stuff that only app stubs should have...sorry!
+
+2004-08-17 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/gem_commands.rb: --rdoc is default on 'update' command,
+ consistent with 'install'. 'default_str' methods changed to reflect
+ --rdoc being default now.
+
+2004-08-21 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/gem_commands.rb: Proper checking for gems in local
+ directory on local install. rescue Gem::LoadError to avoid ugly
+ backtrace.
+ * lib/rubygems/installer.rb: created Gem::LoadError to hold extra
+ metadata. Setting up for proper dependency installation on local
+ installs.
+
+2004-08-20 Chad Fowler <chad@chadfowler.com>
+
+ * lib/rubygems/specification.rb: Fixed small bug in the previous spec
+ change commit.
+
+ * lib/rubygems/cache.rb: Prevent catastrophic failure if a gemspec is
+ corrupted.
+
+ * lib/rubygems/installer.rb: Fixed (in not a great way) a bug that would
+ cause a zero-length spec file to be written to the gem specifications
+ directory.
+
+2004-08-19 Chad Fowler <chad@chadfowler.com>
+
+ * lib/rubygems/specification.rb: #files auto-includes any #extensions,
+ #extra_rdoc_files, #test_files, etc. that weren't explicitly added
+ to the file list.
+
+2004-08-18 Chad Fowler <chad@chadfowler.com>
+
+ * lib/rubygems/specification.rb: One more bug with #test_files.
+ Default value of [] wasn't set, resulting in an attempt to call
+ #empty? on nil.
+
+ * lib/rubygems/gem_commands.rb: Unit tests appear to be working now.
+ Still more testing to do.
+
+ * lib/rubygems/remote_installer.rb, lib/rubygems/installer.rb: Fixed
+ minor bugs in default selections for questions asked during
+ installation and uninstallation
+
+2004-08-17 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/specification.rb:
+ - #test_suite_file and #test_files now work on older gems.
+ - Added Specification.from_yaml for loading YAML gemspecs
+ - #to_ruby doesn't emit 'specification_version'
+
+ * lib/rubygems/gem_commands.rb: Updated test-on-install code to use
+ Specification#test_files instead of #unit_test_suite.
+
+ * lib/rubygems/old_format.rb: Use Specification.from_yaml
+ * lib/rubygems/package.rb: Ditto
+
+2004-08-17 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/command.rb: --debug option to turn on $DEBUG
+ * lib/rubygems/config_file.rb: ditto
+
+2004-08-11 Rich Kilmer <rich@infoether.com>
+ * lib/rubygems/installer.rb: The application stub now defaults to
+ the latest version of the library, and optionally allows an initial
+ parameter conforming to _VERSION_ to be passed to select a prior
+ version of the library (this initial parameter, if present, is shifted
+ off of ARGV). This change was re-added...I erased it somehow :(
+
+2004-08-11 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/gem_commands.rb:
+ - 'gem spec X' displays spec for _latest_ version of X. Added
+ '--all' option if you want to see all versions.
+ - RDocCommand code cleanup and slight change: document _all_
+ versions of the gem by default, not just the first.
+
+ * lib/rubygems/doc_manager.rb: removed 'kilmer' default template
+ option and obsolete error message.
+
+2004-08-12 Chad Fowler <chad@chadfowler.com>
+ * Added "gem rdoc" command for generating docs for already-installed
+ gems
+
+2004-08-11 Rich Kilmer <rich@infoether.com>
+ * bin/generate_yaml_index: updated to work with new gem format (and use the Gem::Format
+ class to read). Will deploy after testing on RubyForge.
+ * lib/rubygems/gem_commands.rb: generate rdoc by default on installs (I think this is
+ just good practice.
+ * lib/rubygems/remote_install.rb: raise an exception if dependent gems cannot be found
+ on remote_install
+
+2004-08-11 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/gem_commands.rb: query is now case insensitive (as it used to be)
+ * lib/rubygems/installer.rb: gem_make.out wasn't being written when an extension failed to compile.
+
+2004-08-11 Rich Kilmer <rich@infoether.com>
+
+ * removed String.to_requirement...we should not modify
+ base classes in Ruby! modified to get rid of said to_requirement
+ with Gem::Version::Requirement.create(obj)
+
+ * specification.rb - fixed constructor bug of version requirement...
+ it now defaults to Requirement.default
+
+2004-08-11 Chad Fowler <chad@chadfowler.com>
+
+ * One more specification.rb bug fixed.
+
+2004-08-11 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/specification.rb:
+ - Added convenience class methods: attribute_names,
+ attribute_defaults, default_value, required_attributes, and
+ required_attribute?.
+
+ - IMPORTANT: attribute readers now use lazy initialization, just
+ like some of them did before the 2004-08-01 change. This was done
+ to fix the breakage when loading older gemspecs.
+
+ - IMPORTANT: replaced instance variable access with attribute reader
+ method calls in many cases. This is in line with the above change.
+
+ - Good documentation for the "attribute" method.
+
+ - Renamed _copy -> _copy_of.
+
+ * lib/rubygems/cache.rb:
+ - Some fairly shallow changes. Exception handling needs improvement.
+
+ * lib/rubygems/version.rb:
+ - (Version.create) new method (for convenience)
+ - (Version::Requirement.create) new method (for convenience)
+ - (Version::Requirement.default) new method (for consistency)
+
+ * test/test_specification.rb: test attribute_names instead of
+ attributes. Other "class convenience" methods remain to be tested
+ at this stage. Also added test classes for legacy gemspecs.
+
+ * test/data/legacy/keyedlist-0.4.0.ruby: added.
+ * test/data/legacy/keyedlist-0.4.0.yaml: added.
+
+2004-08-06 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/specification.rb:
+ - Added convenience class methods: attribute_names,
+ attribute_defaults, default_value, required_attributes, and
+ required_attribute?.
+
+ - IMPORTANT: attribute readers now use lazy initialization, just
+ like some of them did before the 2004-08-01 change. This was done
+ to fix the breakage when loading older gemspecs.
+
+ - Good documentation for the "attribute" method.
+
+ - Renamed _copy -> _copy_of.
+
+ * test/test_specification.rb: test attribute_names instead of
+ attributes. Other "class convenience" methods remain to be tested
+ at this stage.
+
+2004-08-01 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/specification.rb:
+ - (Re)defined class methods: attribute, attributes,
+ required_attribute, read_only, overwrite_accessor. @@attributes
+ contains a list of attribute names and default values. This
+ allows higher-level specification of gemspec attributes, and the
+ handling of them in a DRY fashion.
+
+ - to_yaml_properties now includes all properties, to ensure
+ correct deserialization of a Gem::Specification object.
+
+ - #to_ruby and #to_yaml_properties rewritten to use @@attributes
+
+ - Introduced 'specification_version' attribute and three constants:
+ NONEXISTENT_SPECIFICATION_VERSION, CURRENT_SPECIFICATION_VERSION, and
+ SPECIFICATION_VERSION_HISTORY. This allows us to track changes to
+ the spec format.
+
+ - Refactored several "helper" methods, using the new class method
+ 'attribute_alias_singular', which provides a "singular" alias for
+ a "plural" attribute (e.g. require_path and require_paths).
+
+ - All gemspec attributes now defined in a uniform fashion, which
+ implies that they all have valid instance variables on
+ initialization. Previously, some attributes were lazily
+ initialized.
+
+ - Introduced attribute 'library_stubs', to allow the specification
+ of several stub files. (That feature not implemented, though.)
+
+ - Introduced attribute 'test_files' and deprecated 'test_suite_file'.
+
+ - Provided #warn_deprecated stub of a method, but don't know what to
+ do with it.
+
+ - Deprecated #has_test_suite? in favour of (new) #has_unit_tests?
+
+ - Used overwrite_accessor to provide special behaviour for the
+ setting of some attributes.
+
+ - The 'date' attribute is now a Date object. We don't need high
+ resolution, and Time objects, being system-dependent, are not nice
+ to deal with.
+
+ - Various code style changes.
+
+ - Summary: uniform treatment of gemspec attributes; reduced code by
+ refactoring; 'test_suite_file' deprecated for 'test_files';
+ 'library_stubs' introduced; spec versioning introduced.
+
+ * lib/rubygems/version.rb: (Dependency) added #to_s, #==, and an
+ alias (requirements_list -> requirement_list).
+
+ * test/test_specification.rb: several new tests: _singular_attributes,
+ _deprecated_attributes, _defaults, _to_{yaml,ruby}_and_back,
+ _directly_setting_dependencies_doesnt_work, and more. Plus a new
+ class to give Specification a more thorough workout (TestSpecificationComplex).
+
+ * scripts/runtest.rb: require 'pp' so it's always available in unit
+ tests.
+
+2004-07-30 Rich Kilmer <rich@infoether.com>
+
+ * lib/rubygems/installer.rb The application stub now defaults
+ to the latest version of the library, and optionally allows
+ an initial parameter conforming to _VERSION_ to be passed
+ to select a prior version of the library (this initial
+ parameter, if present, is shifted off of ARGV).
+
+ * lib/rubygems/version.rb correct? is now a class method on
+ Version enabling Gem::Version.correct?(...)
+
+ * lib/rubygems/install.rb make it so uninstalling a gem will
+ not remove executables if another version of that gem is
+ installed and needs those executables
+
+2004-07-26 Jim Weirich <jim@tardis>
+
+ * lib/rubygems.rb (Gem::Exception::latest_load_paths): Added
+ latest_load_paths and refactored all_load_paths to use common
+ code.
+
+2004-07-25 Rich Kilmer <rich@infoether.com>
+ * fixed bug in using --source in command.rb (removed short -s version)
+
+ * changed spec to use the RUBY_PLATFORM for Platform::CURRENT
+
+ * added ability to choose from list of available gems on remote install
+ if (1) some of the gems are binary and (2) there are move than one.
+ If the gems are all source gems, the latest is selected.
+
+2004-07-25 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems.rb (Gem::Exception::all_load_paths): Added
+ all_load_paths utility function.
+
+ * bin/update_rubygems: Added a command to update the gem
+ installation based on a update gem.
+
+ * Rakefile: Pulled package file list out into a constant so it can
+ be reused between the package command and the gem package command.
+ Added a gem package target to support rubygems updates.
+
+2004-07-22 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/version.rb:
+ * (Requirement#initialize) initialize @version to avoid warning
+ * (Dependency#initialize) initialize @version_requirement to avoid
+ warning
+
+2004-07-19 Chad Fowler <chad@chadfowler.com>
+ * install.rb: Shebang line should point to the ruby version used during
+ installation.
+
+2004-07-19 Assaph Mehr <assaph@avaya.com>
+ * lib/rubygems/command.rb, packages/sources/lib/sources.rb: Added
+ command-line-configurable sources.
+
+2004-07-18 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/validator.rb: Fixed a bug that would cause "managed"
+ files to appear to be unmanaged due to differences in how the paths
+ were formatted.
+
+2004-07-17 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/gem_commands.rb (InstallCommand#execute): removed clear
+ bug (name -> gem.name).
+
+2004-07-14 Rich Kilmer <rich@infoether.com>
+ * added old_format.rb which is used in the (hack) in format.rb
+ to detect the older version of a gem, and if present, switches
+ to that class instead.
+ * fixed the ARGV passing in bin/gem to ingore args past -- which
+ are used for passing params to source gems (extconf.rb)
+
+2004-07-13 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/installer.rb, lib/rubygems/package.rb,
+ lib/rubygems/format.rb, test/test_package.rb: Added Mauricio
+ Fernandez's patch to replace old gem format with tar.gz format.
+ Fixed some failing unit tests that resulted. Still a couple left.
+ * lib/rubygems.rb: Fixed a bug introduced by the previous patch.
+
+2004-07-13 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems.rb: (#require_gem) added the ability to do
+ "require_gem 'rake/packagetask'", for instance, which is a
+ shortcut for "require_gem 'rake'; require 'rake/packagetask'".
+
+2004-07-13 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/gem_commands.rb: refactored --version option
+ in all cases to the new VersionOption module.
+
+2004-07-13 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/cmd_manager.rb: added 'unpack' command.
+
+ * lib/rubygems/gem_commands.rb (UnpackCommand): added.
+
+ * lib/rubygems/installer.rb (Installer#unpack): added.
+
+2004-07-09 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/user_interaction.rb (Gem::StreamUI::ask and
+ Gem::StreamUI::choose_from_list): Added flush before each gets.
+
+2004-07-05 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/command.rb (Gem::Command#defaults_str): added.
+
+ * lib/rubygems/command.rb (Gem::Command#create_option_parser):
+ Defaults for the options are included in the parser output.
+
+ * lib/rubygems/gem_commands.rb: all commands which have options
+ and defaults now have #defaults_str implemented.
+
+2004-07-05 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/command.rb (Gem::Command#create_option_parser):
+ Make the argument and option sections optional. They are only
+ printed if there are options or arguments defined.
+
+2004-07-05 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/gem_commands.rb:
+ - scrubbed up the 'help' command a bit, removing its options
+ - added information to 'help commands'
+
+2004-07-04 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/gem_commands.rb:
+ - modified generic help and examples
+ - improved 'list' and 'search' help, and fixed bug in 'search'
+
+ * lib/rubygems/cmd_manager.rb:
+ - explicit support for top-level commands --help and --version
+ - no more support for --examples and --commands
+
+2004-07-04 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * lib/rubygems/gem_commands.rb:
+ - added 'list' and 'search' commands ('list' is no longer an alias
+ for 'query')
+ - modified return value from all 'arguments' methods (see command.rb)
+
+ * lib/rubygems/cmd_manager.rb: added 'search' command.
+
+ * lib/rubygems/command.rb:
+ (Command#create_option_parser): enhanced the option parser for 'help'
+ display
+ (Command#remove_option): added (to support 'list' and 'search')
+
+ * Rakefile: added 'gem' target. Runs "local" (not installed) command
+ and libraries.
+
+2004-07-04 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * Rakefile: added 'install' target.
+
+ * lib/rubygems/cmd_manager.rb: code formatting.
+
+ * lib/rubygems/gem_commands.rb:
+ - refactored common install and update options into new module
+ InstallUpdateOptions
+ . consolidated option pairs (e.g. --test & --no-test ==> --[no-]test)
+ . --gen-rdoc is now --rdoc
+ - (UninstallCommand) corrected typo
+ - (InstallCommand) corrected output with local install
+
+ * test/test_parse_commands.rb: :%s/--gen-rdoc/--rdoc/g
+
+2004-07-03 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/gem_commands.rb (Gem::InstallCommand::initialize):
+ Added --no-gen-rdoc and --no-test to allow the user to override
+ .gemrc default options.
+
+ * lib/rubygems/doc_manager.rb (Gem::DocManager::generate_rdoc):
+ Concatenate the local rdoc options to the end of the spec's rdoc
+ options.
+ (Gem::DocManager::configured_args): Added configured_args as a
+ place to store local rdoc options.
+
+ * lib/rubygems/gem_runner.rb (Gem::GemRunner::do_configuration):
+ Configuration handled in do_configuration now.
+ (Gem::GemRunner::do_configuration): Set the local rdoc
+ configuration from the config file.
+
+ * lib/rubygems/command.rb (Gem::Command::handles): Added a
+ handles? method to Command so that we can detect which extra
+ arguments can be used with a command.
+ (Gem::Command::add_extra_args): New method to add the config
+ file's extra arguments to the front of the argument list.
+ (Gem::Command::extra_args): Added extra_args to Command class to
+ hold the extra args discovered in the config file.
+
+ * Rakefile: Added TEST=filename option to all the test targets.
+
+ * test/functional.rb (FunctionalTest::test_gemrc): Added
+ functional test for gemrc.
+
+ * scripts/gemdoc.data: Added an example to the specification command.
+
+ * lib/rubygems.rb (Gem::Exception::manage_gems): Added gem_runner
+ and config_file to manage_gems.
+ (Gem::Exception::use_paths): use_paths now accepts (and ignores)
+ nil parameters.
+
+ * bin/gem: Make Gem::GemRunner the top level object. It now
+ creates and calls the CommandManager /after/ the arguments are
+ processed.
+
+ * Rakefile: Added test/data/gemhome to clobber list.
+
+2004-07-01 Jim Weirich <jim@weirichhouse.org>
+
+ * test/test_specification.rb
+ (TestSpecification::test_rdoc_files_included): Test for rdoc files
+ included in file list. Test for redundent file removal.
+
+ * lib/rubygems/specification.rb (Gem::Specification::validate):
+ Added gem version to validation requirement. Added normalize to
+ remove redundent files in lists.
+
+ * lib/rubygems/gem_commands.rb (Gem::InfoCommand::usage): Added
+ usage and arguments methods for InfoCommand.
+ (Gem::SpecificationCommand::usage): Fixed several usage comments.
+
+2004-06-30 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/gem_commands.rb (Gem::InstallCommand::usage):
+ Upcased the comment on the usage statement (and corresponding
+ option). This makes the variable part of the command
+ (e.g. GEMNAME) stand out from the static parts.
+
+ * lib/rubygems/cmd_manager.rb (Gem::CommandManager::process_args):
+ Downcased commands before searching (allows upper case or mixed
+ case for commands on command line).
+
+ * install.rb (install_rb): Fixed bug where the installer falsely
+ triggered the old repository upgrade when the directory part of
+ the file contained the matching "-digits." pattern. Now the
+ pattern must be in the file's base name.
+
+2004-06-26 Gavin Sinclair <gsinclair@soyabean.com.au>
+
+ * scripts/specdoc.rb: added (to generate gem specificiation document)
+ * scripts/specdoc.data: added (supports specdoc.rb)
+ * scripts/specdoc.yaml: added (supports specdoc.rb)
+
+2004-06-27 Jim Weirich <jim@weirichhouse.org>
+
+ * scripts/gemdoc.data Removed extraneous <em> marker.
+
+ * lib/rubygems/specification.rb
+ (Gem::Specification::satisfies_requirement): HA! Caught another
+ version_requirement vs version_requirements error. (I really
+ regret the decision to change that name.)
+
+ * lib/rubygems/installer.rb (Gem::Uninstaller::has_dependents):
+ Changed call to alert to alert_warning.
+
+ * lib/rubygems/gem_commands.rb (Gem::UninstallCommand::execute):
+ Again, remove local error handling to allow the error to perculate
+ up the chain to the top level.
+
+ * lib/rubygems/doc_manager.rb (Gem::DocManager::generate_rdoc):
+ Removed one level of exception handling. Only catching RDocErrors
+ at the outermost level. And instead of reporting the error and
+ swallowing it, I convert it to a Gem::DocumentError (with the same
+ error message). This is for better error handling.
+
+ * lib/rubygems/command.rb (Gem::Command::handle_options): Removed
+ exception handling from handle_options. This allows errors to be
+ handled at the top level. Makes for a more consistent error
+ interface.
+
+ * lib/rubygems/doc_manager.rb (Gem::DocumentError): Added
+ DocumentError to wrap RDocErrors (which derive from Exception
+ ... yuck).
+
+ * lib/rubygems/cmd_manager.rb (Gem::RemoteError): RemoteError and
+ LocalInstallationError are now Gem::Exceptions (rather than
+ StandardErrors).
+
+ * lib/rubygems.rb (Gem::Exception): Changed base of Gem::Exception
+ to RuntimeError (was ::Exception). Apps using gem as a library
+ would have to catch Gem::Exceptions explicitly (yuck), or catch
+ Exceptions generically. Catching Exceptions will catch
+ EVERYTHING, including things like SystemExit. By makeing
+ Gem::Exception a RuntimeError, apps can catch RuntimeError or even
+ StandardError.
+
+2004-06-26 Jim Weirich <jim@weirichhouse.org>
+
+ * test/functional.rb (FunctionalTest::test_all_command_helps):
+ Added functional test to show all commands have usage messaegs.
+
+ * lib/rubygems/gem_commands.rb (Gem::HelpCommand::execute): Added
+ version option to help (gem help version).
+ (Gem): Cleaned up the help text. Dropped unneeded verbage.
+
+ * lib/rubygems/cmd_manager.rb
+ (Gem::CommandManager::find_command_possibilities): Added
+ find_command_possibilities to help the Help command look for
+ commands.
+
+ * lib/rubygems/installer.rb (Gem::Uninstaller::uninstall): Fixed
+ null pointer bug where a list was destroyed in a method.
+
+ * lib/rubygems/gem_commands.rb (Gem::BuildCommand::load_gemspecs):
+ yaml gemspec files are now accepted by the build command.
+
+ * lib/rubygems/command.rb (Gem::Command::parser): Created an
+ on-demand option parser for all commands.
+ (Gem::Command::handle_options): Command line option hash is now
+ and instance variable with a reader.
+
+ * Rakefile: Linked package version to the value in the rubygems.rb
+ file. The gem env command now shows both gem version (e.g. 0.6)
+ and the package version (e.g. 0.6.1).
+
+2004-06-25 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/gem_commands.rb (Gem::InfoCommand): Dropped the
+ version command (its available via gem env). Added a gem info
+ command to extract the yaml from a gemfile.
+ (Gem::LocalRemoteOptions): Refactored the local/remote options
+ (adding and testing) into a mixin module.
+
+ * test/test_version_comparison.rb
+ (TestDependencies::test_normalization): Added some tests for the
+ normalization issues mentions below.
+
+ * lib/rubygems/version.rb (Gem::Dependency::normalize): Old gems
+ have requirements and dependencies incoded in the Yaml spec in an
+ out of date format. When loaded, they have incorrect instance
+ variables for modern objects. I added a normalize call to handle
+ transforming out dated objects in to modern objects. (Remember
+ this next time we change the data structure of something in the
+ spec file.)
+ (Gem::Version::Requirement::parse): Requirements are comparable
+ now, just so that we can test them with asserts.
+
+ * lib/rubygems/remote_installer.rb
+ (Gem::RemoteInstaller::find_dependencies_not_installed): Fixed
+ recursive call to require_gem to properly pass dependency
+ information.
+
+ * lib/rubygems/installer.rb (Gem::Uninstaller::has_dependents):
+ Fixed reference to version_requirement (needs to be plural).
+
+ * lib/rubygems/command.rb (Gem::Command::invoke): Command now
+ handles it own help messages. Commands no longer have to return
+ true/false to trigger help messages.
+
+ * lib/rubygems/cmd_manager.rb (Gem::CommandManager::process_args):
+ Moved help handling into the help command.
+
+ * lib/rubygems/gem_commands.rb (Gem::HelpCommand): Renamed the
+ base command to HelpCommand and made it handle a lot of the help
+ options. Still need work on individual command helps.
+
+ * test/functional.rb (FunctionalTest::test_env_version): Added a
+ bunch of new functional tests for the environment command.
+
+ * lib/rubygems/gem_commands.rb (Gem::InstallCommand::execute):
+ Made multiple gem names an error for now. Should look at later.
+
+ * lib/rubygems/cmd_manager.rb (Gem::ListCommand): Added list as an
+ alias to query.
+ (Gem::UpdateCommand::initialize): Corrected spelling of install
+ (intall) in several places.
+
+ * bin/gem_server: Added Gem.manage_gems to the gem_server to fix
+ missing requirements.
+
+ * lib/rubygems/cmd_manager.rb (Gem::InstallCommand::initialize):
+ Added missing --both option to install.
+
+ * test/test_command.rb
+ (TestCommand::test_invode_with_bad_options): Catch the termination
+ request.
+
+ * test/mockgemui.rb (MockGemUi::terminate_interaction): Make the
+ mock UI throw an exception when a termination is requested. This
+ makes sure that we don't miss accidental terminations.
+
+ * lib/rubygems/cmd_manager.rb (Gem::CommandManager::find_command):
+ Added find_command to handle best matching command names.
+
+ * test/functional.rb (FunctionalTest::test_build): Updated
+ functional tests to use the new command structure.
+
+ * lib/rubygems/version.rb (Gem::Version::Requirement): Changed the
+ pessimistic version comparison operator to "~>". I like to think
+ of it as "approximately greater than". (It was ">*").
+
+ * bin/gem: Moved gem2 into the standard gem script location. It
+ is now stable enough to use as the standard command.
+
+ * lib/rubygems/cmd_manager.rb (Gem::CommandManager::run): Added
+ run method to trap errors while running commands. Makes for
+ prettier output.
+ (Gem::CommandManager): Move *all* commands to their own classes.
+ Simplified CommandManager. Lowered the coupling between
+ CommandManager and the Commands (the commands don't even need to
+ know about the manager anymore). CommandManager maybe created
+ with "new" for testing (the script will continue to use
+ "instance").
+ (Gem::RubyGemsInfoCommand): New command.
+ (Gem::VersionCommand): New command.
+
+2004-06-24 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/user_interaction.rb (Gem::UserInteraction):
+ Significantly rewrote the whole user interaction scheme. We are
+ now using an UI object that responds to the standard list of UI
+ commands (e.g. say, alert, ask). The UserInteraction module
+ defines all the interaction methods to be forwarded to the default
+ UI objects. The "ui" method returns that default object (and you
+ can use self.ui=(new_ui) to change it). Also the use_ui(new_ui) {
+ } command is convienent for switching the UI object for a short
+ period of time.
+
+2004-06-18 Rich Kilmer <rich@infoether.com>
+ * broke test_cmd_manager.rb into test_parse_commands and
+ test_process_commands to test the parsing of command line options
+ and the funtionality, respectively.
+
+2004-06-18 Rich Kilmer <rich@infoether.com>
+ * added new unit test file: test/test_cmd_manager.rb to test the
+ command manager classes. this is just the first few tests which
+ will be expanded to a full test suite.
+
+2004-06-17 Chad FOwler <chad@chadfowler.com>
+
+ * lib/rubygems/installer.rb: Fixed bug in windows batch file generation
+ which was causing file not found errors.
+ * lib/rubygems/installer.rb: Uninstall now removes scripts and batch
+ * lib/rubygems/specification.rb: Fixed install bug. Thanks to Mark
+ Sparshatt for the fix (via the rubyforge bug tracker).
+
+2004-06-17 Jim Weirich <jim@weirichhouse.org>
+
+ * lib/rubygems/doc_manager.rb (Gem::DocManager::generate_rdoc):
+ Changed rdoc generation to do a chdir into the base source
+ directory and then to use a relative path for all the source
+ files. This makes the generated RDOC html look better and may fix
+ the windows drive/rdoc bug as a side effect.
+
+2004-06-17 Rich Kilmer <rich@infoether.com>
+ * Added ability to capture the UserInteraction with:
+ c = Gem::UserInteraction.capture
+ and then you can override specific methods like 'say':
+ c.on_say {|statement| puts "you said: #{statement}"}
+
+2004-06-15 Rich Kilmer <rich@infoether.com>
+ * Added refactored command handling in rubygems/cmd_manager.rb and a
+ (temporary) bin/gem2 command file to test things out. Once we feel
+ comfortable, we can replace gem with gem2.
+
+2004-06-10 Rich Kilmer <rich@infoether.com>
+ * Isolated all user interaction to pass through module methods on a new
+ Gem::UserInteraction module. Those methods will be the method of abstracting
+ the interaction of RubyGems for use in a GUI-based solution.
+
+2004-06-10 Rich Kilmer <rich@infoether.com>
+ * require 'rubygems' now minimally requires only the files needed
+ for runtime access to gems...not management of gems. To manage
+ gems you now additionally need to execute Gem::manage_gems prior
+ to using the builder/installer/etc. This makes gemspecs not
+ backward compatible unless they add that line to the gemspec
+ after the require 'rubygems' line.
+
+2004-06-10 Gavin Sinclair <gsinclair@soyabean.com.au>
+ * bin/gem: --upgrade-all was broken, probably as a result of the
+ search changes listed below.
+
+2004-06-09 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/remote_install.rb: delegate search functionality to
+ Cache class, bringing remote and local search and list together into
+ one piece of code.
+ * bin/gem, lib/rubygems/validator.rb: move all STDIO work to bin/gem.
+ Validator.alien now returns a hash of ErrorData objects.
+ * bin/gem, lib/rubygems/installer.rb: move most of the STDIO stuff to
+ bin/gem, communicating via exceptions in this case.
+
+2004-06-08 Rich Kilmer <rich@infoether.com>
+ * Fixed the drive problem on win32 (hopefully) so multiple drives
+ should now work. Its still a hack until rdoc is fixed.
+
+2004-06-08 Chad Fowler <chad@chadfowler.com>
+ * Fixed bug caused by method change on Version::Requirement
+
+2004-06-08 Rich Kilmer <rich@infoether.com>
+ * fixed bug in doc_manager.rb whereby the extra_rdoc_files should
+ be appended to the list of directories prior to prepending the
+ full path.
+
+2004-06-08 Gavin Sinclair <gsinclair@soyabean.com.au>
+ * bin/gem_server: List installed gems in [name,version] order.
+
+2004-06-08 Gavin Sinclair <gsinclair@soyabean.com.au>
+ * lib/rubygems/installer.rb: don't warn about not being able to
+ install a library stub if a library stub is already installed.
+ Still warn if it's not a library stub that's there already.
+
+2004-06-08 Gavin Sinclair <gsinclair@soyabean.com.au>
+ * bin/gem: renamed --upgrade-dist to --upgrade--all and fixed bug.
+ * lib/rubygems/installer.rb: fixed bug with Ruby version assertion.
+
+2004-06-07 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/remote_installer.rb, lib/rubygems/version.rb: Fixed old
+ dependency on #version method for Gem::Version::Requirement
+ * bin/gem: new --upgrade-dist option allows one to upgrade every
+ installed gem
+ * lib/rubygems/specification.rb,lib/rubygems/installer.rb: new
+ #required_ruby_version attribute added to gem specification for specifying a
+ dependency on which version of ruby the gem needs. Format it accepts is
+ the same as the Gem::Version::Requirement format.
+
+2004-06-06 Chad Fowler <chad@chadfowler.com>
+ * bin/gem: install_stub is once again the default due to requests.
+
+2004-06-04 Chad Fowler <chad@chadfowler.com>
+ * lib/rubygems/specification.rb, lib/rubygems/doc_manager.rb:
+ Allow arbitrary files to be added for rdoc to run over them (as per
+ Jim's request).
+
+2004-06-04 Chad Fowler <chad@chadfowler.com>
+ * bin/gem: Reformatted --search and --list output such that
+ multiple versions of a gem are compressed into a single entry
+ (with version numbers in parentheses)
+
+2004-05-31 Jim Weirich <jweirich@one.net>
+
+ * lib/rubygems/version.rb (Gem::Dependency): Dependency attribute
+ renamed to version_requirements (made plural).
+ (Gem::Version::bump): Added bump to implement pessimistic
+ operator.
+ (Gem::Version::Requirement): Added pessimistic operator to list of
+ operators. Operators now implemented using lambda.
+
+ * lib/rubygems.rb (Kernel::require_gem): require_gem now takes an
+ array of requirement strings.
+
+ * lib/rubygems/version.rb (Gem::Version::Requirement::initialize):
+ Simplified initialization by making parse a bit smarter.
+ (Gem::Version::Requirement::satisfied_by): Simplified by using
+ all?
+ (Gem::Version::Requirement::satisfy): Added explicit one
+ requirement satisfy test.
+ (Gem::Version::Requirement::parse): parse now returns a two
+ element string array (operator and version string). We don't
+ bother converting to an integer array during parsing.
+
+2004-05-31 18:38 chadfowler
+
+ * gemspec now supports #rdoc_options, to which you can append
+ strings that will be passed to rdoc as additional options.
+
+2004-05-08 21:57 chadfowler
+
+ * Using Gem::RubyGemsVersion to match the release number. If we
+ need to use this as an internal version format specifier in the
+ future, we can use the Gem::Version semantics.
+
+2004-05-30 14:33 gsinclair
+
+ * bin/gem: Split --help into --help (basic), --help-options (what
+ --help used to be), and --help-examples.
+
+2004-04-30 15:57 chadfowler
+
+ * bin/gem: --install-stub is no longer the default ;)
+
+2004-04-30 15:51 chadfowler
+
+ * lib/rubygems/installer.rb: Rich Kilmer (who kicks butt) figured
+ out how to fix the library stub stuff.
+
+2004-04-29 19:12 chadfowler
+
+ * lib/rubygems/doc_manager.rb: Dick Davies fixed a bug in the doc
+ generator.
+
+2004-04-29 13:41 gsinclair
+
+ * lib/rubygems/installer.rb: Added skeleton code and comments to
+ uninstall stub apps and libs
+
+2004-04-29 12:20 gsinclair
+
+ * install.rb: Don't install library stub for 'sources'
+
+2004-04-29 12:20 gsinclair
+
+ * lib/rubygems/installer.rb: Improvements to library stub
+ installation: * don't overwrite existing file (emit warning) *
+ nice warning if there's a permission problem * observe
+ --[no-]install-stub flag (rather, observe the argument to
+ #install)
+
+2004-04-29 12:16 gsinclair
+
+ * bin/gem: --install-stub is now the default
+
+2004-04-26 20:20 chadfowler
+
+ * test/test_remote_installer.rb: Cleaning up after Gavin and his
+ test-breaking self. ;)
+
+2004-04-26 12:06 gsinclair
+
+ * bin/gem, lib/rubygems/installer.rb,
+ lib/rubygems/remote_installer.rb: Installing a gem now causes a
+ library stub to be installed as well, allowing you to require
+ 'package' without knowing it's a gem.
+
+2004-04-25 23:18 chadfowler
+
+ * lib/rubygems/: installer.rb, specification.rb: Prompt user if
+ trying to uninstall a gem that other gems *may* depend on.
+
+2004-04-25 09:27 chadfowler
+
+ * test/test_remote_installer.rb: Changed expected test results to
+ match new (old) gem naming scheme--"ruby" doesn't appear as a
+ platform in the gem name.
+
+2004-04-25 05:50 gsinclair
+
+ * bin/gem: Changed @directory -> @install_dir for clarity
+
+2004-04-25 05:47 gsinclair
+
+ * bin/gem: Improved display of gems, platform-wise
+
+2004-04-25 05:46 gsinclair
+
+ * lib/rubygems/specification.rb: Added documentation
+
+2004-04-25 04:17 jimweirich
+
+ * test/functional.rb: Fixed functional test to properly name a Ruby
+ platform gem.
+
+2004-04-25 04:17 jimweirich
+
+ * packages/sources/.cvsignore, test/data/one/.cvsignore: Ignore the
+ proper gem name.
+
+2004-04-25 04:17 jimweirich
+
+ * lib/rubygems/specification.rb: Undefined several attributes that
+ were redefined to avoid warnings.
+
+2004-04-25 04:17 jimweirich
+
+ * lib/rubygems.rb: Need to initialize @gem_home and @gem_path with
+ ||= to avoid warning.
+
+2004-04-25 03:40 gsinclair
+
+ * lib/rubygems.rb, test/test_gempaths.rb: RUBY_GEMS -> GEM_PATH
+ (environment variable)
+
+2004-04-25 03:33 gsinclair
+
+ * lib/rubygems/specification.rb: Pretty-print the specification
+
+2004-04-25 03:18 gsinclair
+
+ * lib/rubygems/specification.rb: Handle platform in a (hopefully)
+ consistent manner
+
+2004-04-25 03:16 gsinclair
+
+ * install.rb: Use return value from Builder#build to locate gem
+ file
+
+2004-04-25 03:09 gsinclair
+
+ * lib/rubygems/builder.rb: Return file name from #build
+
+2004-04-25 02:32 gsinclair
+
+ * lib/rubygems/specification.rb: Platform goes at the *end* of the
+ full name now.
+
+2004-04-22 06:19 chadfowler
+
+ * test/test_remote_installer.rb: Fixed test to reflect fewer cache
+ sources :(
+
+2004-04-21 17:19 rich
+
+ * lib/rubygems/remote_installer.rb: added support to download the
+ yaml index as a .Z (zlib compressed) file if it exists, then move
+ on to the plain yaml file if it does not
+
+2004-04-20 20:23 chadfowler
+
+ * examples/application/an-app.gemspec, lib/rubygems/format.rb,
+ packages/sources/lib/sources.rb: Committed Dick Davies' patch to
+ fix broken tests.
+
+2004-04-18 01:51 gsinclair
+
+ * bin/gem, lib/rubygems/doc_manager.rb: RDoc generation observes
+ 'rdoc' config file value
+
+2004-04-17 12:15 gsinclair
+
+ * bin/gem: Improved 'build' error output
+
+2004-04-17 12:12 gsinclair
+
+ * lib/: rubygems.rb, rubygems/remote_installer.rb,
+ rubygems/specification.rb, rubygems/validator.rb: All
+ gems-related exceptions now extend Gem::Exception
+
+2004-04-17 12:11 gsinclair
+
+ * lib/rubygems/specification.rb: Improved handling of summary and
+ decription strings - convert to single line
+
+2004-04-17 01:09 gsinclair
+
+ * bin/gem: Prevent remote install attempt if local install was
+ successful
+
+2004-04-17 00:49 gsinclair
+
+ * lib/rubygems/builder.rb: Better formatted the output code
+
+2004-04-16 21:31 gsinclair
+
+ * lib/rubygems/remote_installer.rb: Stoopid coding error (thanks
+ Kent Sibilev)
+
+2004-04-16 00:00 rich
+
+ * lib/rubygems/installer.rb: added code to optionally use nmake
+ instead of make on win32 systems
+
+2004-04-15 20:12 gsinclair
+
+ * bin/gem, lib/rubygems/remote_installer.rb: Clarified proxy
+ handling and interface: --[no-]http-proxy [URL]
+
+2004-04-13 00:16 jimweirich
+
+ * bin/gem, test/bogussources.rb, test/functional.rb: Oops, missed
+ an instance of GEM_PATH in the gem binary.
+
+2004-04-12 21:28 jimweirich
+
+ * lib/rubygems/cache.rb: Oops. Missed a GEM_PATH.
+
+2004-04-12 21:11 jimweirich
+
+ * test/test_remote_installer.rb: removed setting of environment
+ variable for now.
+
+2004-04-12 21:09 jimweirich
+
+ * Rakefile, lib/rubygems.rb, lib/rubygems/cache.rb,
+ lib/rubygems/installer.rb, packages/sources/.cvsignore,
+ scripts/runtest.rb, test/.cvsignore, test/bogussources.rb,
+ test/test_format.rb, test/test_gempaths.rb,
+ test/test_remote_installer.rb, test/test_validator.rb: Added
+ test/temp to the clobber list. Broke out tests into inline to
+ avoid test dependencies on rubygem.
+
+2004-04-12 07:52 chadfowler
+
+ * lib/: rubygems.rb, rubygems/installer.rb,
+ rubygems/remote_installer.rb: Cleaning up output strings wrt
+ formating of "gem (version)".
+
+2004-04-12 07:41 chadfowler
+
+ * lib/rubygems/installer.rb: Gavin Sinclair's uninstall bug.
+
+2004-04-11 15:26 jimweirich
+
+ * test/data/one/: .cvsignore, one-ruby-0.0.1.gem: removed
+ one-ruby*.gem from source control. This gem is automatically
+ generated in testing.
+
+2004-04-11 10:50 chadfowler
+
+ * bin/gem: Gavin Sinclair's test code enhancements
+
+2004-04-11 07:50 chadfowler
+
+ * bin/gem, lib/rubygems/installer.rb,
+ lib/rubygems/remote_installer.rb, lib/rubygems/specification.rb,
+ test/insure_session.rb, test/test_remote_installer.rb,
+ test/data/one/one-ruby-0.0.1.gem: Gavin Sinclair patches to make
+ installer return types less ambiguous.
+
+2004-04-09 10:29 chadfowler
+
+ * lib/rubygems/installer.rb, test/data/one/one-ruby-0.0.1.gem: gem
+ -u input validation patch by Ville Aine
+
+2004-04-07 07:49 chadfowler
+
+ * bin/gem, lib/rubygems/cache.rb, test/data/one/one-ruby-0.0.1.gem:
+ Finally have passing tests.
+
+2004-04-07 07:24 chadfowler
+
+ * lib/rubygems/remote_installer.rb,
+ test/data/one/one-ruby-0.0.1.gem: Allow default option to work on
+ remote dependency prompt.
+
+2004-04-07 07:05 chadfowler
+
+ * lib/rubygems/remote_installer.rb, test/test_remote_installer.rb,
+ test/data/one/one-ruby-0.0.1.gem: Applied George Marrows' patch
+ to remote_install
+
+2004-04-07 06:23 chadfowler
+
+ * bin/gem, test/data/one/one-ruby-0.0.1.gem: No longer "seeing"
+ double on remote searches
+
+2004-04-05 07:39 chadfowler
+
+ * Rakefile, test/test_remote_installer.rb,
+ test/data/one/one-ruby-0.0.1.gem: remote_installer tests aren't
+ completely hosed anymore.
+
+2004-04-05 06:16 chadfowler
+
+ * Rakefile, test/data/one/one-ruby-0.0.1.gem: Rake target for
+ running all tests (unit + functional) "alltests"
+
+2004-04-05 00:48 jimweirich
+
+ * test/: insure_session.rb, data/one/README.one,
+ data/one/one-ruby-0.0.1.gem, data/one/one.gemspec,
+ data/one/lib/one.rb: added for functional tests
+
+2004-04-05 00:48 jimweirich
+
+ * test/functional.rb: Moved session gem detection to insure_session
+ file. Modified functional tests to use gem command. Removed
+ some directory stuff because rake guarantees the starting
+ directory. Added test_info functional test. Added test_build
+ functional test. Added assert status.
+
+2004-04-05 00:48 jimweirich
+
+ * lib/rubygems/remote_installer.rb: Changed exceptions to inherit
+ from RunTimeError
+
+2004-04-05 00:48 jimweirich
+
+ * bin/gem: Changed Installer to RemoteInstaller in rubygems-info.
+
+2004-04-05 00:48 jimweirich
+
+ * Rakefile: Added generated test gem to clobber list. Added
+ functional test target to rakefile.
+
+2004-04-04 21:17 chadfowler
+
+ * packages/sources/lib/sources.rb: Added gems mirror at
+ http://gems.chadfowler.com
+
+2004-04-04 20:51 chadfowler
+
+ * bin/gem, lib/rubygems/remote_installer.rb, test/functional.rb:
+ More improved error messages (don't show stack trace when using
+ bin/gem)
+
+2004-04-04 20:43 chadfowler
+
+ * lib/rubygems/cache.rb: Only read specs that end in "gemspec".
+ The code doesn't handle non-gemspecs very well at all.
+
+2004-04-04 20:15 chadfowler
+
+ * test/mock/gems/specifications/sources-0.0.1.gemspec: [no log
+ message]
+
+2004-04-04 20:09 chadfowler
+
+ * test/mock/gems/gems/sources-0.0.1/lib/sources.rb: Rearranging
+ things a bit
+
+2004-04-04 20:02 chadfowler
+
+ * bin/gem, lib/rubygems/remote_installer.rb, test/bogussources.rb,
+ test/functional.rb: Better error messages on unresolvable host.
+
+2004-04-04 12:50 chadfowler
+
+ * redist/session.gem, test/bogussources.rb, test/functional.rb:
+ Added the beginnings of a functional test suite.
+
+2004-04-03 22:02 chadfowler
+
+ * lib/rubygems/validator.rb: Just had to explicitly rescue
+ VerificationError. All is well.
+
+2004-04-03 22:01 chadfowler
+
+ * lib/rubygems/validator.rb: Mauricio fixed a problem with alien
+ (just failed to update it when we changed the gem directory), but
+ now there's another issue I can't find. Anyway, this fix is
+ obviously needed. But alien is broken anyway.
+
+2004-04-03 21:57 chadfowler
+
+ * install.rb, lib/rubygems/builder.rb: Batsman's bug report and
+ code for the bugs I introduced today. :)
+
+2004-04-03 09:50 chadfowler
+
+ * lib/rubygems/specification.rb: Defaulting a spec's require_path
+ to [] to avoid downstream errors.
+
+2004-04-03 09:06 chadfowler
+
+ * lib/rubygems/builder.rb, test/test_builder.rb: builder now
+ validates the gemspec.
+
+2004-04-03 08:48 chadfowler
+
+ * lib/rubygems/specification.rb, test/test_specification.rb: Added
+ checking for gem specs to make sure they have all required
+ attributes.
+
+2004-04-03 08:06 chadfowler
+
+ * gemspecs/rublog.gemspec: My original rublog gem was broken, in
+ that it didn't have a require_path.
+
+2004-04-02 07:48 chadfowler
+
+ * lib/rubygems/remote_installer.rb: Prompt for installation of
+ dependencies.
+
+ For now, there is a puts/gets in the middle of
+ remote_installer.rb This should probably be cleaned up later
+ (return control flow to the gem program to install the
+ dependencies, for example.
+
+2004-04-02 07:37 chadfowler
+
+ * TODO: [no log message]
+
+2004-04-02 07:34 chadfowler
+
+ * test/: simple_gem.rb, test_format.rb: Some things I forgot to cvs
+ add earlier.
+
+2004-04-02 07:29 chadfowler
+
+ * example/: test.gemspec, lib/test.rb, lib/test/wow.rb: Removing
+ example directory in favor of "examples" directory (just better
+ organized).
+
+2004-04-02 07:26 chadfowler
+
+ * test/test_all.rb: Removed test_all.rb. Rake is obviously a
+ better way to do it.
+
+2004-03-31 19:13 chadfowler
+
+ * lib/rubygems/format.rb, lib/rubygems/installer.rb,
+ lib/rubygems/validator.rb, test/test_all.rb,
+ test/test_validator.rb: More tests and refactoring to support
+ them.
+
+2004-03-30 02:41 rich
+
+ * lib/rubygems/installer.rb: allow passing parameters to extconf.rb
+ with:
+
+ ruby -i blah.gem --local -- --with-option
+
+ everything past the -- will go to the extconf.rb...just like
+ setup.rb
+
+2004-03-30 02:34 rich
+
+ * lib/rubygems/: installer.rb, specification.rb: very initial
+ capability to build source gems. this only lets you build native
+ extensions so long as you do not have to specify --with-
+ directories
+
+2004-03-29 08:31 rich
+
+ * install.rb: switched migration of old gems to new ./gems subdir
+ to use FileUtils rather than ftools...hope to fix reported win32
+ error.
+
+2004-03-29 01:04 rich
+
+ * lib/rubygems/doc_manager.rb: fixed bug in pathing based on new
+ directory structure
+
+2004-03-29 01:03 rich
+
+ * lib/rubygems/remote_installer.rb: fixed bug in default for proxy
+ (should default to nil not true)
+
+2004-03-29 01:03 rich
+
+ * bin/gem: updated with patch to allow for config file with minor
+ difference from gavin's patch which passes a nil to the
+ RemoteInstaller if the proxy does not exist
+
+2004-03-28 23:22 rich
+
+ * install.rb: added code to migrate gems if they are in the old
+ directory structure
+
+2004-03-28 21:30 rich
+
+ * install.rb, lib/rubygems.rb, lib/rubygems/installer.rb,
+ lib/rubygems/specification.rb: changed path of installed gems to
+ be:
+
+ ruby/gems/1.8/gems
+
+ which cleans up the root.
+
+2004-03-28 18:53 chadfowler
+
+ * test/test_all.rb: This is the file to run for all of the tests.
+
+ test_remote_installer is commented out for now. The open URI
+ patch that George gave us makes the code a lot nicer to look at,
+ but a little harder to test.
+
+2004-03-28 18:50 chadfowler
+
+ * lib/rubygems/remote_installer.rb, test/test_cache.rb,
+ test/test_remote_installer.rb: Added some tests for cache search
+
+2004-03-28 12:19 chadfowler
+
+ * bin/gem, lib/rubygems/validator.rb, test/test_validator.rb: Some
+ tests for the validator.
+
+ Made the validator more testable.
+
+2004-03-28 09:30 chadfowler
+
+ * bin/gem, lib/rubygems/validator.rb: Fixed a problem with false
+ alarms in the validator.
+
+2004-03-27 08:23 chadfowler
+
+ * bin/gem: No longer have an option to pass http proxy host into
+ the gem program. Only reads it from the environment. This is
+ because George's patch (and open-uri) work this way, and I'm lazy
+ right now.
+
+2004-03-27 08:17 chadfowler
+
+ * lib/rubygems/remote_installer.rb: George Marrows' nice patch to
+ remove a bunch of code from remote_installer.
+
+ Our remote_installer tests are failing. We really need to start
+ paying attention to the test directory. :(`
+
+2004-03-24 23:26 jimweirich
+
+ * install.rb: Do not install commands ending in ~.
+
+2004-03-24 23:25 jimweirich
+
+ * lib/rubygems/specification.rb: Changed executables from accessor
+ to writer to avoid redefinition.
+
+2004-03-21 21:10 jimweirich
+
+ * bin/gem: fixed uninitialized directory option
+
+2004-03-21 15:34 jimweirich
+
+ * bin/gem: removed carriage returns that screwed up the #! line
+
+2004-03-21 09:02 chadfowler
+
+ * bin/gem: Gavin's bin/gem refactoring.
+
+2004-03-20 17:03 jimweirich
+
+ * bin/gem: added wrapping to gem listing
+
+2004-03-20 12:22 chadfowler
+
+ * install.rb: More cleaning by Gavin Sinclair
+
+2004-03-20 12:08 chadfowler
+
+ * examples/application/an-app.gemspec,
+ examples/application/bin/myapp,
+ examples/application/lib/somefunctionality.rb, lib/rubygems.rb,
+ lib/rubygems/installer.rb, lib/rubygems/specification.rb: Added
+ functionality for installing applications into the system bindir.
+ Needs cleaning and refactoring.
+
+2004-03-20 07:53 chadfowler
+
+ * bin/gem: [no log message]
+
+2004-03-19 23:03 chadfowler
+
+ * bin/gem: More intuitive default.
+
+2004-03-19 10:45 chadfowler
+
+ * bin/gem: * Some minor rearranging of the test stuff so that
+ installation errors will also abort the test run * Don't try to
+ run tests if none are included with the gem
+
+2004-03-18 22:27 chadfowler
+
+ * bin/gem, example/lib/test.rb, lib/rubygems/cache.rb,
+ lib/rubygems/specification.rb: * Preliminary support for: gem -i
+ blah-0.0.1.gem --run-tests Needs to be cleaned up considerably.
+ * Introduction of new gemspec metadata "unit_test_suite", which
+ will be require'd in order to load all unit tests
+
+2004-03-17 09:33 chadfowler
+
+ * bin/gem: Applied Gavin Sinclair's patch to make help output
+ better.
+
+2004-03-16 21:55 chadfowler
+
+ * bin/gem: Added --remote-list option for gem command to display
+ all gems on server.
+
+2004-03-16 21:50 chadfowler
+
+ * bin/gem, doc/UserDoc.html: Fixed --help case inconsistencies and
+ documentation typos as per Scott Harper's email.
+
+2004-03-16 21:41 chadfowler
+
+ * bin/gem: --list and --search display are the same.
+
+2004-03-16 21:33 chadfowler
+
+ * bin/gem: Implemented some of Scott Harper's search suggestions:
+ case insensitive sort of returned gems and display description
+ with gem name in search results.
+
+2004-03-16 21:20 chadfowler
+
+ * bin/gem, lib/rubygems/remote_installer.rb: http_proxy option
+ implemented
+
+2004-03-15 07:19 chadfowler
+
+ * lib/rubygems/remote_installer.rb: Installation is now case
+ insensitive (like search)
+
+2004-03-15 07:07 chadfowler
+
+ * TODO, bin/gem, lib/rubygems/remote_installer.rb: Better error
+ messages. updated TODO list.
+
+2004-03-14 21:02 chadfowler
+
+ * bin/gem, lib/rubygems/remote_installer.rb: --dir didn't work with
+ remote-install. Now it does.
+
+2004-03-14 17:48 rich
+
+ * bin/gem: fixed uninstall bug
+
+2004-03-14 17:18 rich
+
+ * lib/rubygems/doc_manager.rb: changed to remove <drive>: on
+ win32...ug
+
+2004-03-14 16:15 rich
+
+ * install.rb: fixed typo
+
+2004-03-14 16:13 rich
+
+ * install.rb: generate cmd files
+
+2004-03-14 16:13 rich
+
+ * bin/: gem.cmd, gem_server.cmd: now generate cmd files
+
+2004-03-14 15:52 chadfowler
+
+ * bin/gem: Fixed a small bug with --gen-rdoc and the remote
+ installer.
+
+2004-03-14 15:38 chadfowler
+
+ * lib/rubygems.rb: Back to version 1.0 ;)
+
+2004-03-14 15:36 chadfowler
+
+ * lib/rubygems.rb: Updated rubygemsversion
+
+2004-03-14 15:31 chadfowler
+
+ * README: credits
+
+2004-03-14 15:24 rich
+
+ * README: initial readme
+
+2004-03-14 15:12 rich
+
+ * doc/UserDoc.html: updated w/doc on documentation ;-)
+
+2004-03-14 15:01 rich
+
+ * gemspecs/jabber4r.gemspec: added jabber4r gemspec
+
+2004-03-14 14:58 rich
+
+ * bin/gem_server: change the documentation path to /
+
+2004-03-14 14:57 rich
+
+ * install.rb: remove installing .rb files from ./bin
+
+2004-03-14 14:32 rich
+
+ * doc/: DevDoc.txt, GemSpecification.txt, UserDoc.html,
+ UserDoc.txt: updated with latest docs
+
+2004-03-14 12:05 chadfowler
+
+ * test/test_remote_installer.rb: Fixed tests.
+
+2004-03-14 11:31 chadfowler
+
+ * lib/rubygems/specification.rb: Fixed bug that would manifest
+ itself if a gem creator put apostrophes/single-quotes in the gem
+ spec.
+
+2004-03-14 00:04 rich
+
+ * doc/: UserDoc.html, UserDoc.txt: finished user's guide
+
+2004-03-13 21:48 rich
+
+ * doc/: DevDoc.html, UserDoc.html, UserDoc.txt: updated user's
+ guide...will finish section on ruby's library mgt soon ;-)
+
+2004-03-13 20:48 chadfowler
+
+ * doc/DevDoc.txt: Added documentation on making and distributing
+ gems
+
+2004-03-13 20:20 chadfowler
+
+ * TODO: [no log message]
+
+2004-03-13 19:51 rich
+
+ * doc/: DevDoc.html, DevDoc.txt, GemSpecification.html,
+ GemSpecification.txt, UserDoc.html, UserDoc.txt, doc.css,
+ makedoc.rb: added these doc (wiki) files from
+ http://rubygems.rubyforge.org/
+
+2004-03-13 17:56 chadfowler
+
+ * TODO, gemspecs/README, gemspecs/cgikit-1.1.0.gemspec,
+ gemspecs/linguistics.gemspec, gemspecs/ook.gemspec,
+ gemspecs/progressbar.gemspec, gemspecs/redcloth.gemspec,
+ gemspecs/rublog.gemspec, gemspecs/ruby-doom.gemspec,
+ gemspecs/rubyjdwp.gemspec, gemspecs/statistics.gemspec: Added
+ some gemspecs for actual RAA packages.
+
+2004-03-13 14:35 chadfowler
+
+ * TODO, lib/rubygems/remote_installer.rb: Preliminary HTTP Proxy
+ support. Untested.
+
+2004-03-13 09:11 chadfowler
+
+ * packages/sources/lib/sources.rb: Changed to point to rubyforge
+
+2004-03-12 22:40 rich
+
+ * bin/generate_yaml_index.rb: generates a yaml index for a gems
+ repository
+
+2004-03-12 22:02 chadfowler
+
+ * bin/gem_server: No longer serving gem specs.
+
+2004-03-12 21:42 chadfowler
+
+ * TODO, bin/gem_server.cgi: We decided to trash gem_server.cgi in
+ favor of the static content generator Rich is working on.
+
+2004-03-12 21:15 chadfowler
+
+ * TODO: [no log message]
+
+2004-03-12 20:11 chadfowler
+
+ * bin/gem, lib/rubygems/installer.rb,
+ lib/rubygems/remote_installer.rb: Basic search funtionality in.
+
+ Slight refactoring of Installer and RemoteInstaller
+
+2004-03-12 18:28 chadfowler
+
+ * TODO: [no log message]
+
+2004-03-12 16:37 chadfowler
+
+ * TODO: [no log message]
+
+2004-03-12 16:14 chadfowler
+
+ * TODO: More TODO items
+
+2004-03-08 13:50 chadfowler
+
+ * TODO, bin/gem_server, example/test.gemspec: Use rdoc templates
+ for HTML. Nearly XHTML compliant.
+
+2004-03-08 08:21 chadfowler
+
+ * TODO: Added TODO list
+
+2004-03-08 08:12 chadfowler
+
+ * lib/rubygems/validator.rb: Fixed a small (but crippling) bug in
+ the validator.
+
+2004-01-24 13:49 chadfowler
+
+ * bin/gem, lib/rubygems.rb, lib/rubygems/cache.rb,
+ lib/rubygems/validator.rb, lib/rubygems/version.rb: More cleanup.
+
+2004-01-24 13:29 chadfowler
+
+ * bin/gem, lib/rubygems/remote_installer.rb: A little cleaning of
+ (Remote)Installer inconsistencies
+
+2004-01-24 13:23 chadfowler
+
+ * bin/gem: Removed the weird instance variable thing we had going
+ on. :)
+
+2004-01-07 17:34 chadfowler
+
+ * bin/gem: removed old cruft
+
+2003-12-24 11:32 chadfowler
+
+ * lib/rubygems/validator.rb: Gem validation was returning false
+ negatives (corrupted gems were not reporting their corruption).
+
+2003-12-18 14:18 chadfowler
+
+ * lib/rubygems/cache.rb: Lyle noticed some out of date rdoc
+ documentation. Thanks Lyle!
+
+2003-12-03 08:05 chadfowler
+
+ * install.rb: Gavin's patch for installing the files in bin/ on
+ rubygems installation.
+
+2003-11-30 00:36 chadfowler
+
+ * lib/rubygems/specification.rb: Little warnings adjustment
+
+2003-11-29 17:27 jimweirich
+
+ * Rakefile: added Rakefile to package
+
+2003-11-29 16:23 jimweirich
+
+ * lib/rubygems/specification.rb: Removed defined? and initialized
+ @platform
+
+2003-11-29 16:08 jimweirich
+
+ * lib/rubygems/specification.rb: Initialized @loaded and check
+ defined?(@platform) to silence some -w warnings.
+
+2003-11-29 09:26 rich
+
+ * bin/gem_server, lib/rubygems/doc_manager.rb: updated to support
+ /doc URL to generate list of installed gems w/doc link for rdoc
+ generated links.
+
+2003-11-29 08:30 rich
+
+ * lib/rubygems/doc_manager.rb: minor format change of error message
+
+2003-11-29 08:29 rich
+
+ * bin/gem, lib/rubygems/builder.rb, lib/rubygems/doc_manager.rb,
+ lib/rubygems/installer.rb: instantiates DocManager now. errors
+ out on no install of RDoc. warns if .gemspec does not specify
+ having rdoc, but rdoc is generated
+
+2003-11-29 02:13 rich
+
+ * bin/gem, lib/rubygems.rb, lib/rubygems/doc_manager.rb,
+ lib/rubygems/format.rb, lib/rubygems/installer.rb,
+ lib/rubygems/specification.rb: added capability to generate rdoc
+ on install of gem (--gen-rdoc). this doc is placed in
+ Gem.dir+doc+gem.full_name fixed but in installer when moving to
+ format (not calling each) added doc manager to add/remove
+ documenatation (right now only rdoc)
+
+2003-11-29 01:28 rich
+
+ * lib/rubygems/specification.rb: should not define the attr_readers
+ for requirements/dependencies so undef is unnecessary
+
+2003-11-29 00:12 jimweirich
+
+ * lib/rubygems/specification.rb: Undefing dependencies and
+ requirements removes warning when used with -w.
+
+2003-11-29 00:12 jimweirich
+
+ * lib/rubygems.rb: Using defined?($GEM_PATH) avoids warning when
+ used with -w switch.
+
+2003-11-28 15:58 chadfowler
+
+ * bin/gem, example/test.gemspec, lib/rubygems.rb,
+ lib/rubygems/installer.rb, lib/rubygems/validator.rb,
+ lib/rubygems/format.rb: Separated gem file reading into a
+ separate class/file.
+
+2003-11-28 15:20 rich
+
+ * lib/rubygems/specification.rb: added has_rdoc?/has_rdoc methods
+ ... will be used to autogenerate rdoc
+
+2003-11-28 12:30 chadfowler
+
+ * lib/rubygems/validator.rb: Rdoc added
+
+2003-11-28 11:51 chadfowler
+
+ * bin/gem, lib/rubygems.rb, lib/rubygems/validator.rb: A little
+ rearranging of the validation/alien code. It's still ugly, but
+ at least it's in its own file now. :)
+
+2003-11-28 11:40 chadfowler
+
+ * bin/gem: Removed a little cruft.
+
+2003-11-27 11:04 chadfowler
+
+ * bin/gem: Print success message for each gem *not* containing
+ errors.
+
+2003-11-27 11:00 chadfowler
+
+ * bin/gem, lib/rubygems/installer.rb: Preliminary support for gem
+ directory validation (--alien). Looks for bad or missing gem
+ files, missing spec files, files installed that aren't part of
+ the gem, checksum mismatches, etc.
+
+ Very ugly code. Very ugly output. Work in progress.
+
+2003-11-24 11:58 rich
+
+ * lib/rubygems/specification.rb: change full_name to include
+ platform
+
+2003-11-24 09:15 chadfowler
+
+ * bin/gem: Option for HTTP Proxy server for remote-install. Not
+ yet implemented.
+
+2003-11-23 20:22 chadfowler
+
+ * lib/rubygems/builder.rb: Removed a stray \" in builder's success
+ message
+
+2003-11-23 20:16 chadfowler
+
+ * lib/rubygems/specification.rb: Leaving escape in but commenting
+ out its functionality because it hosed some other things up.
+ Need to revisit this for the case where:
+
+ s.summary = "Chad's Thing" # It's the apostrophe
+
+2003-11-23 20:08 chadfowler
+
+ * lib/rubygems/specification.rb: Escape quotes to avoid invalid
+ gemspecs in the #{Gem.dir}/specifications directory
+
+2003-11-23 19:21 chadfowler
+
+ * bin/gem: Less ugly error message on file IO problems.
+
+2003-11-22 22:34 chadfowler
+
+ * bin/gem: Very simple support for validating a gem. Will probably
+ move this into the libs eventually.
+
+2003-11-22 20:53 chadfowler
+
+ * example/test.gemspec, lib/rubygems/builder.rb: Generate MD5
+ checksum for gem and store it in the file. Will be used to
+ validate gem file before installation.
+
+2003-11-22 13:58 chadfowler
+
+ * install.rb, lib/rubygems/remote_installer.rb,
+ packages/sources/sources.gemspec,
+ packages/sources/lib/sources.rb: remote-install sources are now
+ installed as a ruby gem at the time of rubygems installation.
+ sources gemspec included in the rubygems distribution.
+
+2003-11-22 12:52 chadfowler
+
+ * bin/gem: Allow gem info by --version
+
+2003-11-22 11:50 chadfowler
+
+ * lib/: rubygems.rb, rubygems/cache.rb: Fixed the bug I introduced
+ by fixing Rich's bug with gem cache caching. ;)
+
+ Gem::Cache now has a #refresh! method.
+
+2003-11-22 10:16 chadfowler
+
+ * bin/gem, lib/rubygems.rb, lib/rubygems/installer.rb,
+ lib/rubygems/remote_installer.rb: - Fixed bug in Gem.cache
+ (though we may want to revisit it for in-memory caching - Command
+ line configurable version for uninstall
+
+2003-11-22 00:28 rich
+
+ * lib/rubygems/cache.rb: rdoc'd search method
+
+2003-11-22 00:24 rich
+
+ * bin/gem, lib/rubygems/cache.rb, lib/rubygems/version.rb,
+ test/test_version_comparison.rb: removed search_by_name because
+ search does the same thing. version::requirement was updated to
+ that if you did not specific a version operation, it assumes an =
+ sign. updated tests accordingly
+
+2003-11-21 23:58 rich
+
+ * lib/rubygems/: cache.rb, installer.rb: allow version to be
+ specified in uninstall (if called programatically)
+
+2003-11-21 23:52 rich
+
+ * lib/: rubygems.rb, rubygems/cache.rb, rubygems/installer.rb,
+ rubygems/specification.rb: > moved all searching into cache..and
+ now search by name/version and return an
+ ordered list (.last == highest version).
+ > modified uninstaller to allow selecting a specific version to
+ uninstall if
+ multiple versions are installed.
+ > implemented comparison function on specification.
+ > changed require_gem to use new search of cache function
+
+2003-11-21 21:06 chadfowler
+
+ * bin/gem, lib/rubygems/remote_installer.rb: Added ability to
+ specify optional version requirement for remote installations
+
+2003-11-21 20:25 chadfowler
+
+ * test/test_remote_installer.rb: Removed carriage returns
+
+2003-11-21 19:04 chadfowler
+
+ * bin/gem_server: Converted from getopts to optparse.
+
+2003-11-21 18:31 rich
+
+ * lib/rubygems.rb: changed the order in which operations are
+ performed in require_gem. it now requires dependent gems prior
+ to adding the require_paths to a gem. otherwise we could have
+ had a LoadError on a dependent gem but the paths were already
+ added...potential problem
+
+2003-11-21 18:21 rich
+
+ * lib/rubygems/installer.rb: updated to ensure
+ (specifications/cache) directories exist for a provided path
+
+2003-11-21 18:01 rich
+
+ * lib/rubygems/specification.rb: updated rdoc
+
+2003-11-21 17:59 rich
+
+ * bin/gem, lib/rubygems/builder.rb, lib/rubygems/installer.rb,
+ lib/rubygems/specification.rb: fixed various bugs with the
+ $GEM_PATH stuff, specifically on uninstall. Also, changed to
+ allow specifying a directory on install (--dir) and force install
+ (--force). Changed the builder generated ruby header to use
+ optparse.
+
+2003-11-21 07:03 chadfowler
+
+ * lib/: rubygems.rb, rubygems/cache.rb,
+ rubygems/remote_installer.rb: Remote installation of dependencies
+ now works. It downloads all dependent gems or errors out.
+
+ Fixed bug in require_gem. Wrong call to cache.
+
+2003-11-21 00:59 rich
+
+ * bin/gem, example/test.gemspec, lib/rubygems.rb,
+ lib/rubygems/cache.rb, lib/rubygems/installer.rb,
+ lib/rubygems/specification.rb: added capability to support
+ multiple paths $GEM_PATH in Ruby and RUBY_GEMS in the ARGV. Lots
+ of changes were needed to support this. also added the --force
+ and --dir options to gem installtion
+
+2003-11-20 22:50 chadfowler
+
+ * bin/gem: Switched to optparse. Not a whole lot gained, but it
+ seems to be the way Ruby is going. It's nice not to have to do
+ the "when" stuff, I guess.
+
+2003-11-19 23:41 chadfowler
+
+ * lib/rubygems/: installer.rb, remote_installer.rb: Added
+ chadfowler.com to the hardcoded remote install list.
+
+ Fixed a dangling YAML.load that broke uninstall.
+
+2003-11-19 22:56 rich
+
+ * lib/rubygems.rb: fixed bug in loading rubygems
+
+2003-11-19 22:51 chadfowler
+
+ * bin/: gem_server, gem_server.cgi: require 'yaml' :)
+
+2003-11-19 22:44 rich
+
+ * lib/: rubygems.rb, rubygems/cache.rb, rubygems/specification.rb:
+ changed the format of stuff stored in the spec directory to ruby
+ instead of YAML. This allows us to not have to load yaml in
+ 'require_gem'. switched the specification list to a Cache
+ object.
+
+2003-11-19 21:56 rich
+
+ * lib/rubygems/installer.rb: write the spec file in ruby and not in
+ yaml format (in the spec dir)
+
+2003-11-19 20:32 rich
+
+ * lib/rubygems/specification.rb: added to_ruby method to generate a
+ ruby string that can be eval'ed in to build a Gem Specification
+
+2003-11-17 21:37 jimweirich
+
+ * bin/: gem_server, gem_server.cgi: removed carriage returns
+
+2003-11-17 21:19 chadfowler
+
+ * install.rb: Accidentally left some junk in the file.
+
+2003-11-17 19:50 dblack
+
+ * test/test_version_comparison.rb: * Test cases for Version.rb
+
+2003-11-17 19:50 dblack
+
+ * lib/rubygems/version.rb: * Split off tests into
+ rubygems/tests/test_version_comparison.rb
+
+2003-11-17 12:37 chadfowler
+
+ * install.rb: Create File.join(Config::CONFIG['libdir'], "ruby",
+ "gems") + "specifications" and + "cache" during installation.
+
+ Need to remove this from rubygems.rb and replace with
+ ensure_directory call.
+
+2003-11-17 12:29 rich
+
+ * lib/rubygems/version.rb: rdoc added
+
+2003-11-17 11:31 rich
+
+ * lib/rubygems/specification.rb: rdoc added
+
+2003-11-17 10:38 rich
+
+ * lib/rubygems/: cache.rb, installer.rb: made rdoc comments and
+ renamed some variables
+
+2003-11-17 08:48 dblack
+
+ * lib/rubygems/version.rb: * Added stricter checking of incoming
+ Requirement string
+
+ * Added unit tests at end of file
+
+2003-11-17 07:32 chadfowler
+
+ * bin/: gem_server, gem_server.cgi: Refactored gem_server program
+ and added an equivalent CGI version.
+
+2003-11-17 00:14 rich
+
+ * lib/: rubygems.rb, rubygems/builder.rb, rubygems/cache.rb: added
+ rdoc documentation
+
+2003-11-16 17:15 chadfowler
+
+ * bin/: gem.cmd, gem_server.cmd: Added some batch files for Windows
+
+2003-11-16 17:08 rich
+
+ * install.rb, bin/gem, bin/gem_server, example/test.gemspec,
+ example/lib/test.rb, example/lib/test/wow.rb, lib/rubygems.rb,
+ lib/rubygems/builder.rb, lib/rubygems/cache.rb,
+ lib/rubygems/installer.rb, lib/rubygems/remote_installer.rb,
+ lib/rubygems/specification.rb, lib/rubygems/version.rb,
+ test/test_remote_installer.rb: Initial import developed at
+ RubyConf 2003 by:
+
+ Rich Kilmer Chad Fowler David Black Paul Brannon Jim Weirich
+
+2003-11-16 17:08 rich
+
+ * install.rb, bin/gem, bin/gem_server, example/test.gemspec,
+ example/lib/test.rb, example/lib/test/wow.rb, lib/rubygems.rb,
+ lib/rubygems/builder.rb, lib/rubygems/cache.rb,
+ lib/rubygems/installer.rb, lib/rubygems/remote_installer.rb,
+ lib/rubygems/specification.rb, lib/rubygems/version.rb,
+ test/test_remote_installer.rb: Initial revision
+
+Local variables:
+indent-tabs-mode: t
+tab-width: 8
+end:
diff --git a/doc/rubygems/History.txt b/doc/rubygems/History.txt
new file mode 100644
index 0000000000..4a80b1bfb4
--- /dev/null
+++ b/doc/rubygems/History.txt
@@ -0,0 +1,852 @@
+# -*- coding: utf-8 -*-
+
+=== 1.3.6 / 2010-02-17
+
+NOTE:
+
+http://rubygems.org is now the default source for downloading gems.
+
+You may have sources set via ~/.gemrc, so you should replace
+http://gems.rubyforge.org with http://rubygems.org
+
+http://gems.rubyforge.org will continue to work for the forseeable future.
+
+New features:
+
+* `gem` commands
+ * Added `gem push` and `gem owner` for interacting with modern/Gemcutter
+ sources
+ * `gem dep` now supports --prerelease.
+ * `gem fetch` now supports --prerelease.
+ * `gem server` now supports --bind. Patch #27357 by Bruno Michel.
+ * `gem rdoc` no longer overwrites built documentation. Use --overwrite
+ force rebuilding. Patch #25982 by Akinori MUSHA.
+* Captial letters are now allowed in prerelease versions.
+
+Bug fixes:
+
+* Development deps are no longer added to rubygems-update gem so older
+ versions can update sucessfully.
+* Installer bugs:
+ * Prerelease gems can now depend on non-prerelease gems.
+ * Development dependencies are ignored unless explicitly needed. Bug #27608
+ by Roger Pack.
+* `gem` commands
+ * `gem which` now fails if no paths were found. Adapted patch #27681 by
+ Caio Chassot.
+ * `gem server` no longer has invalid markup. Bug #27045 by Eric Young.
+ * `gem list` and friends show both prerelease and regular gems when
+ --prerelease --all is given
+* Gem::Format no longer crashes on empty files. Bug #27292 by Ian Ragsdale.
+* Gem::GemPathSearcher handles nil require_paths. Patch #27334 by Roger Pack.
+* Gem::RemoteFetcher no longer copies the file if it is where we want it.
+ Patch #27409 by Jakub Šťastný.
+
+Deprecation Notices:
+
+* lib/rubygems/timer.rb has been removed.
+* Gem::Dependency#version_requirements is deprecated and will be removed on or
+ after August 2010.
+* Bulk index update is no longer supported.
+* Gem::manage_gems was removed in 1.3.3.
+* Time::today was removed in 1.3.3.
+
+=== 1.3.5 / 2009-07-21
+
+Bug fixes:
+
+* Fix use of prerelease gems.
+* Gem.bin_path no longer escapes path with spaces. Bug #25935 and #26458.
+
+Deprecation Notices:
+
+* Bulk index update is no longer supported (the code currently remains, but not
+ the tests)
+* Gem::manage_gems was removed in 1.3.3.
+* Time::today was removed in 1.3.3.
+
+=== 1.3.4 / 2009-05-03
+
+Bug Fixes:
+
+* Fixed various warnings
+* Gem::ruby_version works correctly for 1.8 branch and trunk
+* Prerelease gems now show up in `gem list` and can be used
+* Fixed option name for `gem setup --format-executable`
+* RubyGems now matches Ruby > 1.9.1 gem paths
+* Gem::RemoteFetcher#download now works for explicit Windows paths across
+ drives. Bug #25882 by Lars Christensen
+* Fix typo in Gem::Requirement#parse. Bug #26000 by Mike Gunderloy.
+
+Deprecation Notices:
+
+* Bulk index update is no longer supported (the code currently remains, but not
+ the tests)
+* Gem::manage_gems was removed in 1.3.3.
+* Time::today was removed in 1.3.3.
+
+=== 1.3.3 / 2009-05-04
+
+New Features:
+
+* `gem server` allows port names (from /etc/services) with --port.
+* `gem server` now has search that jumps to RDoc. Patch #22959 by Vladimir
+ Dobriakov.
+* `gem spec` can retrieve single fields from a spec (like `gem spec rake
+ authors`).
+* Gem::Specification#has_rdoc= is deprecated and ignored (defaults to true)
+* RDoc is now generated regardless of Gem::Specification#has_rdoc?
+
+Bug Fixes:
+
+* `gem clean` now cleans up --user-install gems. Bug #25516 by Brett
+ Eisenberg.
+* Gem.bin_path now escapes paths with spaces.
+* Rake extension builder uses explicit correctly loads rubygems when invoking
+ rake.
+* Prerelease versions now match "~>" correctly. Patch #25759 by Yossef
+ Mendelssohn.
+* Check bindir for executables, not root when validating. Bug reported by
+ David Chelimsky.
+* Remove Time.today, no way to override it before RubyGems loads. Bug #25564
+ by Emanuele Vicentini
+* Raise Gem::Exception for #installation_path when not installed. Bug #25741
+ by Daniel Berger.
+* Don't raise in Gem::Specification#validate when homepage is nil. Bug #25677
+ by Mike Burrows.
+* Uninstall executables from the correct directory. Bug #25555 by Brett
+ Eisenberg.
+* Raise Gem::LoadError if Kernel#gem fails due to previously-loaded gem. Bug
+ reported by Alf Mikula.
+
+Deprecation Notices:
+
+* Gem::manage_gems has been removed.
+* Time::today has been removed early. There was no way to make it warn and be
+ easy to override with user code.
+
+=== 1.3.2 / 2009-04-15
+
+Select New Features:
+
+* RubyGems now loads plugins from rubygems_plugin.rb in installed gems.
+ This can be used to add commands (See Gem::CommandManager) or add
+ install/uninstall hooks (See Gem::Installer and Gem::Uninstaller).
+* Gem::Version now understands prerelease versions using letters. (eg.
+ '1.2.1.b') Thanks to Josh Susser, Alex Vollmer and Phil Hagelberg.
+* RubyGems now includes a Rake task for creating gems which replaces rake's
+ Rake::GemPackageTask. See Gem::PackageTask.
+* Gem::find_files now returns paths in $LOAD_PATH.
+* Added Gem::promote_load_path for use with Gem::find_files
+* Added Gem::bin_path to make finding executables easier. Patch #24114 by
+ James Tucker.
+* Various improvements to build arguments for installing gems.
+* `gem contents` added --all and --no-prefix.
+* Gem::Specification
+ * #validate strips directories and errors on not-files.
+ * #description no longer removes newlines.
+ * #name must be a String.
+ * FIXME and TODO are no longer allowed in various fields.
+ * Added support for a license attribute. Feature #11041 (partial).
+ * Removed Gem::Specification::list, too much process growth. Bug #23668 by
+ Steve Purcell.
+* `gem generate_index`
+ * Can now generate an RSS feed.
+ * Modern indicies can now be updated incrementally.
+ * Legacy indicies can be updated separately from modern.
+
+Select Bugs Fixed:
+
+* Better gem activation error message. Patch #23082.
+* Kernel methods are now private. Patch #20801 by James M. Lawrence.
+* Fixed various usability issues with `gem check`.
+* `gem update` now rescues InstallError and continues. Bug #19268 by Gabriel
+ Wilkins.
+* Allow 'https', 'file' as a valid schemes for --source. Patch #22485.
+* `gem install`
+ * Now removes existing path before installing. Bug #22837.
+ * Uses Gem::bin_path in executable stubs to work around Kernel#load bug in
+ 1.9.
+ * Correctly handle build args (after --) via the API. Bug #23210.
+* --user-install
+ * `gem install --no-user-install` now works. Patch #23573 by Alf Mikula.
+ * `gem uninstall` can now uninstall from ~/.gem. Bug #23760 by Roger Pack.
+* setup.rb
+ * Clarify RubyGems RDoc installation location. Bug #22656 by Gian Marco
+ Gherardi.
+ * Allow setup to run from read-only location. Patch #21862 by Luis Herrera.
+ * Fixed overwriting ruby executable when BASERUBY was not set. Bug #24958
+ by Michael Soulier.
+ * Ensure we're in a RubyGems dir when installing.
+ * Deal with extraneous quotation mark when autogenerating .bat file on MS
+ Windows. Bug #22712.
+
+Deprecation Notices:
+
+* Gem::manage_gems has been removed.
+* Time::today will be removed in RubyGems 1.4.
+
+Special thanks to Chad Wooley for backwards compatibility testing and Luis
+Lavena and Daniel Berger for continuing windows support.
+
+=== 1.3.1 / 2008-10-28
+
+Bugs fixed:
+
+* Disregard ownership of ~ under Windows while creating ~/.gem. Fixes
+ issues related to no uid support under Windows.
+* Fix requires for Gem::inflate, Gem::deflate, etc.
+* Make Gem.dir respect :gemhome value from config. (Note: this feature may be
+ removed since it is hard to implement on 1.9.)
+* Kernel methods are now private. Patch #20801 by James M. Lawrence.
+* Gem::location_of_caller now behaves on Windows. Patch by Daniel Berger.
+* Silence PATH warning.
+
+Deprecation Notices:
+
+* Gem::manage_gems will be removed on or after March 2009.
+
+=== 1.3.0 / 2008-09-25
+
+New features:
+
+* RubyGems doesn't print LOCAL/REMOTE titles for `gem query` and friends if
+ stdout is not a TTY, except with --both.
+* Added Gem.find_files, allows a gem to discover features provided by other
+ gems.
+* Added pre/post (un)install hooks for packagers of RubyGems. (Not for gems
+ themselves).
+* RubyGems now installs gems into ~/.gem if GEM_HOME is not writable. Use
+ --no-user-install command-line switch to disable this behavior.
+* Fetching specs for update now uses If-Modified-Since requests.
+* RubyGems now updates the ri cache when the rdoc gem is installed and
+ documentation is generated.
+
+Deprecation Notices:
+
+* Gem::manage_gems now warns when called. It will be removed on or after March
+ 2009.
+
+Bugs Fixed:
+
+* RubyGems 1.3.0+ now updates when no previous rubygems-update is installed.
+ Bug #20775 by Hemant Kumar.
+* RubyGems now uses the regexp we already have for `gem list --installed`. Bug
+ #20876 by Nick Hoffman.
+* Platform is now forced to Gem::Platform::RUBY when nil or blank in the
+ indexer. Fixes various uninstallable gems.
+* Handle EINVAL on seek. Based on patch in bug #20791 by Neil Wilson.
+* Fix HTTPS support. Patch #21072 by Alex Arnell.
+* RubyGems now loads all cache files even if latest has been loaded. Bug
+ #20776 by Uwe Kubosch.
+* RubyGems checks for support of development dependencies for #to_ruby. Bug
+ #20778 by Evan Weaver.
+* Now specifications from the future can be loaded.
+* Binary script uninstallation fixed. Bug #21234 by Neil Wilson.
+* Uninstallation with -i fixed. Bug #20812 by John Clayton.
+* Gem::Uninstaller#remove_all now calls Gem::Uninstaller#uninstall_gem so hooks
+ get called. Bug #21242 by Neil Wilson.
+* Gem.ruby now properly escaped on windows. Fixes problem with extension
+ compilation.
+* `gem lock --strict` works again. Patch #21814 by Sven Engelhardt.
+* Platform detection for Solaris was improved. Patch #21911 by Bob Remeika.
+
+Other Changes Include:
+
+* `gem help install` now describes _version_ argument to executable stubs
+* `gem help environment` describes environment variables and ~/.gemrc and
+ /etc/gemrc
+* On-disk gemspecs are now read in UTF-8 and written with a UTF-8 magic comment
+* Rakefile
+ * If the SETUP_OPTIONS environment variable is set, pass its contents as
+ arguments to setup.rb
+* lib/rubygems/platform.rb
+ * Remove deprecated constant warnings and really deprecate them. (WIN32,
+ etc).
+* lib/rubygems/remote_fetcher.rb
+ * Now uses ~/.gem/cache if the cache dir in GEM_HOME is not writable.
+* lib/rubygems/source_index.rb
+ * Deprecate options to 'search' other than Gem::Dependency instances and
+ issue warning until November 2008.
+* setup.rb
+ * --destdir folder structure now built using Pathname, so it works for
+ Windows platforms.
+* test/*
+ * Fixes to run tests when under test/rubygems/. Patch by Yusuke ENDOH
+ [ruby-core:17353].
+* test/test_ext_configure_builder.rb
+ * Locale-free patch by Yusuke Endoh [ruby-core:17444].
+
+=== 1.2.0 / 2008-06-21
+
+New features:
+
+* RubyGems no longer performs bulk updates and instead only fetches the gemspec
+ files it needs. Alternate sources will need to upgrade to RubyGems 1.2 to
+ allow RubyGems to take advantage of the new metadata updater. If a pre 1.2
+ remote source is in the sources list, RubyGems will revert to the bulk update
+ code for compatibility.
+* RubyGems now has runtime and development dependency types. Use
+ #add_development_dependency and #add_runtime_dependency. All typeless
+ dependencies are considered to be runtime dependencies.
+* RubyGems will now require rubygems/defaults/operating_system.rb and
+ rubygems/defaults/#{RBX_ENGINE}.rb if they exist. This allows packagers and
+ ruby implementers to add custom behavior to RubyGems via these files. (If
+ the RubyGems API is insufficient, please suggest improvements via the
+ RubyGems list.)
+* /etc/gemrc (and windows equivalent) for global settings
+* setup.rb now handles --vendor and --destdir for packagers
+* `gem stale` command that lists gems by last access time
+
+Bugs Fixed:
+
+* File modes from gems are now honored, patch #19737
+* Marshal Gem::Specification objects from the future can now be loaded.
+* A trailing / is now added to remote sources when missing, bug #20134
+* Gems with legacy platforms will now be correctly uninstalled, patch #19877
+* `gem install --no-wrappers` followed by `gem install --wrappers` no longer
+ overwrites executables
+* `gem pristine` now forces reinstallation of gems, bug #20387
+* RubyGems gracefully handles ^C while loading .gemspec files from disk, bug
+ #20523
+* Paths are expanded in more places, bug #19317, bug #19896
+* Gem::DependencyInstaller resets installed gems every install, bug #19444
+* Gem.default_path is now honored if GEM_PATH is not set, patch #19502
+
+Other Changes Include:
+
+* setup.rb
+ * stub files created by RubyGems 0.7.x and older are no longer removed. When
+ upgrading from these ancient versions, upgrade to 1.1.x first to clean up
+ stubs.
+ * RDoc is no longer required until necessary, patch #20414
+* `gem server`
+ * Now completely matches the output of `gem generate_index` and
+ has correct content types
+ * Refreshes from source directories for every hit. The server will no longer
+ need to be restarted after installing gems.
+* `gem query --details` and friends now display author, homepage, rubyforge url
+ and installed location
+* `gem install` without -i no longer reinstalls dependencies if they are in
+ GEM_PATH but not in GEM_HOME
+* Gem::RemoteFetcher now performs persistent connections for HEAD requests,
+ bug #7973
+
+=== 1.1.1 / 2008-04-11
+
+Bugs Fixed:
+
+* Gem.prefix now returns non-nil only when RubyGems was installed outside
+ sitelibdir or libdir.
+* The `gem server` gem list now correctly links to gem details.
+* `gem update --system` now passes --no-format-executable to setup.rb.
+* Gem::SourceIndex#refresh! now works with multiple gem repositories.
+* Downloaded gems now go into --install-dir's cache directory.
+* Various fixes to downloading gem metadata.
+* `gem install --force` now ignores network errors too.
+* `gem pristine` now rebuilds extensions.
+* `gem update --system` now works on virgin Apple ruby.
+* Gem::RemoteFetcher handles Errno::ECONNABORTED.
+* Printing of release notes fixed.
+
+=== 1.1.0 / 2008-03-29
+
+New features:
+
+* RubyGems now uses persistent connections on index updates. Index updates are
+ much faster now.
+* RubyGems only updates from a latest index by default, cutting candidate gems
+ for updates to roughly 1/4 (at present). Index updates are even faster
+ still.
+ * `gem list -r` may only show the latest version of a gem, add --all to see
+ all gems.
+* `gem spec` now extracts specifications from .gem files.
+* `gem query --installed` to aid automation of checking for gems.
+
+Bugs Fixed:
+
+* RubyGems works with both Config and RbConfig now.
+* Executables are now cleaned upon uninstall.
+* You can now uninstall from a particular directory.
+* Updating from non-default sources fixed.
+* Executable stubs now use ruby install name in shebang.
+* `gem unpack` checks every directory in Gem.path now.
+* `gem install` now exits with non-zero exit code when appropriate.
+* `gem update` only updates gems that need updates.
+* `gem update` doesn't force remote-only updates.
+* `gem update` handles dependencies properly when updating.
+* Gems are now loaded in Gem.path order.
+* Gem stub scripts on windows now work outside Gem.bindir.
+* `gem sources -r` now works without network access.
+
+Other Changes Include:
+
+* RubyGems now requires Ruby > 1.8.3.
+* Release notes are now printed upon installation.
+* `gem env path` now prints a usable path.
+* `gem install` reverts to local-only installation upon network error.
+* Tar handling code refactoring and cleanup.
+* Gem::DependencyInstaller's API has changed.
+
+For a full list of changes to RubyGems, see the ChangeLog file.
+
+=== 1.0.1 / 2007-12-20
+
+Bugs Fixed:
+
+* Installation on Ruby 1.8.3 through 1.8.5 fixed
+* `gem build` on 1.8.3 fixed
+
+Other Changes Include:
+
+* Since RubyGems 0.9.5, RubyGems is no longer supported on Ruby 1.8.2 or older,
+ this is official in RubyGems 1.0.1.
+
+=== 1.0.0 / 2007-12-20
+
+Major New Features Include:
+
+* RubyGems warns about various problems with gemspecs during gem building
+* More-consistent versioning for the RubyGems software
+
+Other Changes Include:
+
+* Fixed various bugs and problems with installing gems on Windows
+* Fixed using `gem server` for installing gems
+* Various operations are even more verbose with --verbose
+* Built gems are now backwards compatible with 0.9.4
+* Improved detection of RUBYOPT loading rubygems
+* `ruby setup.rb` now has a --help option
+* Gem::Specification#bindir is now respected on installation
+* Executable stubs can now be installed to match ruby's name, so if ruby is
+ installed as 'ruby18', foo_exec will be installed as 'foo_exec18'
+* `gem unpack` can now unpack into a specific directory with --target
+* OpenSSL is no longer required by default
+
+Deprecations and Deletions:
+
+* Kernel#require_gem has been removed
+* Executables without a shebang will not be wrapped in a future version, this
+ may cause such executables to fail to operate on installation
+* Gem::Platform constants other than RUBY and CURRENT have been removed
+* Gem::RemoteInstaller was removed
+* Gem::Specification#test_suite_file and #test_suite_file= are deprecated in
+ favor of #test_file and #test_file=
+* Gem::Specification#autorequire= has been deprecated
+* Time::today will be removed in a future version
+
+=== 0.9.5 / 2007-11-19
+
+Major New Features Include:
+
+* Platform support
+* Automatic installation of platform gems
+* New bandwidth and memory friendlier index file format
+* "Offline" mode (--no-update-sources)
+* Bulk update threshold can be specified (-B, --bulk-threshold)
+* New `gem fetch` command
+* `gem` now has "really verbose" output when you specify -v
+* Improved stubs and `gem.bat` on mswin, including better compatiblity
+ with the One-Click Installer.
+
+Other Changes Include:
+
+* Time::today is deprecated and will be removed at a future date
+* Gem::manage_gems is deprecated and will be removed at a future date
+* `gem install --include-dependencies` (-y) is now deprecated since it is the
+ default, use --ignore-dependencies to turn off automatic dependency
+ installation
+* Multi-version diamond dependencies only are installed once
+* Processing a YAML bulk index update takes less memory
+* `gem install -i` makes sure all depenencies are installed
+* `gem update --system` reinstalls into the prefix it was originally installed
+ in
+* `gem update --system` respects --no-rdoc and --no-ri flags
+* HTTP basic authentication support for proxies
+* Gem::Specification#platforms should no longer be a String, use
+ Gem::Platform::CURRENT when building binary gems instead
+* `gem env` has more diagnostic information
+* require 'rubygems' loads less code
+* sources.gem is gone, RubyGems now uses built-in defaults
+* `gem install --source` will no longer add --source by default, use `gem
+ sources --add` to make it a permanent extra source
+* `gem query` (list) no longer prints details by default
+* Exact gem names are matched in various places
+* mkrf extensions are now supported
+* A gem can depend on a specific RubyGems version
+* `gem_server` is now `gem server`
+* `gemlock` is now `gem lock`
+* `gem_mirror` is now `gem mirror`
+* `gemwhich` is now `gem which`
+* `gemri` is no longer included with RubyGems
+* `index_gem_repository.rb` is now `gem generate_index`
+* `gem` performs more validation of parameters
+* Custom rdoc styles are now supported
+* Gem indexer no longer removes quick index during index creation
+* Kernel#require only rescues a LoadError for the file being required now
+* `gem dependencies` can now display some information for remote gems
+* Updating RubyGems now works with RUBYOPT=-rubygems
+
+Special thanks to:
+
+* Daniel Berger
+* Luis Lavena
+* Tom Copeland
+* Wilson Bilkovich
+
+=== 0.9.4 / 2007-05-23
+
+If you are experiencing problems with the source index (e.g. strange
+"No Method" errors), or problems with zlib (e.g. "Buffer Error"
+messsage), we recommend upgrading to RubyGems 0.9.4.
+
+Bug Fixes Include:
+
+* Several people have been experiencing problems with no method errors
+ on the source index cache. The source index cache is now a bit more
+ self healing. Furthermore, if the source index cache is
+ irreparable, then it is automatically dropped and reloaded.
+* The source cache files may now be dropped with the "gem sources
+ --clear-all" command. (This command may require root is the system
+ source cache is in a root protected area).
+* Several sub-commands were accidently dropped from the "gem" command.
+ These commands have been restored.
+
+=== 0.9.3 / 2007-05-10
+
+Bug Fixes Include:
+
+The ZLib library on Windows will occasionally complains about a buffer error
+when unpacking gems. The Gems software has a workaround for that problem, but
+the workaround was only enabled for versions of ZLib 1.2.1 or earlier. We
+have received several reports of the error occuring with ZLib 1.2.3, so we
+have permanently enabled the work around on all versions.
+
+=== 0.9.2 / 2007-02-05
+
+Bug Fixes Include:
+
+* The "unpack" command now works properly.
+* User name and password are now passed properly to the authenticating
+ proxy when downloading gems.
+
+=== 0.9.1 / 2007-01-16
+
+See ChangeLog
+
+=== 0.9.0 / 2006-06-28
+
+Finally, the much anticipated RubyGems version 0.9.0 is now available.
+This release includes a number of new features and bug fixes. The
+number one change is that we can now download the gem index
+incrementally. This will greatly speed up the gem command when only a
+few gems are out of date.
+
+Major Enhancments include:
+
+* The gem index is now downloaded incrementally, only updating entries
+ that are out of date. If more than 50 entries are out of date, we
+ revert back to a bulk download.
+* Several patches related to allowing RubyGems to work with
+ authenticating proxies (from Danie Roux and Anatol Pomozov). Just
+ put the user and password in the proxy URL (e.g. -p
+ http://user:password@proxy.address.com:8080) or use the
+ HTTP_PROXY_USER and HTTP_PROXY_PASS environment variables.
+* The gem unpack command can now accept a file path rather than just a
+ install gem name.
+* Both RI and RDOC documents are now generated by default.
+* A gemri command is included to read gem RI docs (only needed for
+ Ruby 1.8.4 or earlier).
+
+Minor enhancements include:
+
+* Verison 0.0.0 is now a valid gem version.
+* Better detection of missing SSL functionality.
+* SSL is not required if the security policy does not require
+ signature checking.
+* Rake built extensions are now supported (Tilman Sauerbeck).
+* Several autorequire bug fixes.
+* --traceback is now an alias for --backtrace (I can never remember
+ which one it is).
+* SAFE=1 compatibility fixes.
+* .rbw is now a supported suffix for RubyGem's custom require.
+* Several Ruby 1.9 compatibility fixes (Eric Hodel).
+
+Bug Fixes:
+
+* Added dashes to gemspecs generated in Ruby 1.8.3. This solves some
+ cross-Ruby version compatibility issues.
+* Fixed bug where the wrong executables could be uninstalled (Eric
+ Hodel).
+* Fixed bug where gem unpack occasionally unpacked the wrong gem.
+* Fixed bug where a fatal error occured when permissions on .gemrc
+ were too restrictive (reported by Luca Pireddu).
+* Fixed prefix handling for native expressions (patch by Aaron Patterson).
+* Fixed several Upgrade => Update typos.
+
+=== 0.8.11 / 2005-07-13
+
+* -y is a synonym for --include-dependencies.
+* Better handling of errors in the top level rescue clause.
+* Package list command (e.g. gem inspect GEM).
+* .gemrc now allows cvsrc-like options to set defaults per subcommand.
+* The autorequire gem spec field will now accept a list.
+* Substituted Time for Date in specs, increasing performance
+ dramatically.
+* Fixed reported bug of gem directories ending in "-" (reported by
+ Erik Hatcher).
+* Fixed but in installer that caused dependency installation to not
+ work.
+* Added Paul Duncan's gem signing patch.
+* Added Mark Hubbart's Framework patch (for better integration with OS
+ X).
+* Added David Glasser's install-from-mirror patch.
+* Additional internal structural cleanup and test reorganization.
+
+=== 0.8.10 / 2005-03-27
+
+* In multi-user environments, it is common to supply mulitple versions of gems
+ (for example Rails), allowing individual users to select the version of the
+ gem they desire. This allows a user to be insulated from updates to that
+ gem. RubyGems 0.8.10 fixes a problem where gems could occasionally become
+ confused about the current versions of libraries selected by the user.
+* The other annoying bug is that if there are any existing rubygems-update gems
+ installed, then the "gem update --system" command will download a new
+ update, but install the latest update prior to the download.
+
+=== 0.8.9
+
+Never released
+
+=== 0.8.8 / 2005-03-14
+
+* Moved the master definition of class Requirement back under version.
+ Kept the body of Requirement under Gem.
+
+=== 0.8.7 / 2005-03-14
+
+Even though it has only been a few weeks since that last release,
+there are quite a number of new features in 0.8.7. A complete list of
+new features will be given below, but here is a summary of the hot
+items.
+
+* The bug that prevented some users from installing rails has been
+ squashed. A big thanks to Bill Guindon (aGorilla) for helping track
+ that one down.
+
+There are several new commands available on the gem command:
+
+* gem cleanup GEMNAME -- Cleanup (uninstall) all the old versions of
+ gem. If the gem name is omitted, the entire repository is cleaned.
+* gem dependency GEMNAME -- Show the dependencies for the named gems.
+ This is really helpful when trying to figure out what gem needs what
+ other gem.
+
+There changes to the existing commands as well.
+
+* gem uninstall is much smarter about removing gems from the
+ repository. Lists of gems are now uninstalled in proper dependency
+ order (ie. if A depends on B, A is uninstalled first). Also,
+ warnings about broken dependencies occur only when removing the
+ *last* gem that supports a dependency is removed.
+
+Both gem install and gem uninstall support some new command line
+options that can reduce the amount of yes/no queries given the user.
+For install we have:
+
+* --ignore-dependencies -- Only install requests gems, no
+ dependendecies are automatically installed.
+* --include-dependencies -- Automatically install dependencies,
+ without confirmation.
+
+For gem uninstall, the new options are:
+
+* --all -- Uninstall all matching gems without confirmation.
+* --ignore-dependencies -- Uninstall, even if dependencies are broken.
+* --executables -- Remove executables without confirmation
+
+Under general cleanup, gems will not, by default, run RDoc on packages
+that do not have the RDoc flag set.
+
+And finally there is a new library file 'gemconfigure' to aid in
+writing version sensitive applications (without undue dependencies on
+RubyGems); and 'gemwhich', a short script to locate libraries in the
+file system. You can read more about them here:
+
+* gemconfigure: http://docs.rubygems.org/read/chapter/4#page73
+* gemwhich: http://docs.rubygems.org/read/chapter/17
+
+=== 0.8.6 / 2005-02-27
+
+* Fixed a small bug with shebang construction
+
+=== 0.8.5 / 2005-02-26
+
+Do you know how you used to dread getting the following message while
+installing gems?
+
+ Updating Gem source index for: http://gems.rubyforge.org
+
+It could take up to 30 seconds (on my machine, even worse on others) for
+that crazy source index to update.
+
+This latest release of RubyGems speeds that wait time up considerably.
+The following table gives the following times for installing RedCloth
+with a required source index update on three system we had available to
+us. No RDoc generation was included in the following times.
+
+ RubyGems Linux Mac OSX Windows
+ 0.8.4 33 secs 73 secs 58 secs
+ 0.8.5 8 secs 14 secs 21 secs
+
+The new caching code is at least 3x faster than previous versions. Woo
+Hoo!
+
+=== 0.8.4 / 2005-01-01
+
+* Rubygems 0.8.3's installer was broken unless you already had an older
+ version of RubyGems installed. That's fixed.
+* Change in the way Gem::Specification internally deals with lazy attributes
+ and defaults, bringing (with some loadpath_manager changes) a fairly
+ significant increase in speed.
+* Support for lower-cased Gem file names (for you, Paul Duncan :)
+* Erik Veenstra's patch for making Gem versions sortable.
+
+=== 0.8.3 / 2004-12-07
+
+No real earth shattering news here, but there were a number of really
+annoying issues involving other libraries that RubyGems depends upon.
+0.8.3 contains some workarounds for these issues. In particular:
+
+* Added workaround for the null byte in Dir string issue. (see
+ http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/121702).
+ (Thanks to Mauricio Fernández for the quick response on this one).
+* Added workaround for old version of Zlib on windows that caused
+ Ruwiki to fail to install. (see
+ http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/121770)
+* Added workaround for large YAML file issues. (We dynamically cut
+ down the size of the source index YAML file and seem to have worked
+ around immediate issues.
+
+There has been some minor usability enhancements and changes ...
+
+* A user specific source index cache can be used when the site-wide
+ cache is unwritable (i.e. because you are running as a non-admin).
+ This *greatly* speeds up gem commands run in non-admin mode when the
+ site-wide cache is out of date.
+* The gem command now used an HTTP HEAD command to detect if the
+ server's source index needs to be downloaed.
+* gem check gemname --test will run unit tests on installed gems that
+ have unit tests.
+* Multiple gem names are allowed on the gem install command line.
+ This means you can do:
+
+ gem install rake rails needle postgres-pr pimki
+
+ (Ok, you get the idea)
+* Multiple authors my be specified in a Gem spec.
+* Switched to using setup.rb (rather than a custom install script) for
+ the installation of RubyGems itself. If you have installed RubyGems
+ before, double check the installation instructions and make sure you
+ use setup.rb instead of install.rb.
+* Ryan Davis has provided a patch so you can use an env variable
+ (GEM_SKIP), to tell loadpath_manager not to load gems of those
+ names. This was useful for him while testing libs that he had in
+ development.
+
+=== 0.8.1 / 2009-09-14
+
+* Quick release to capture some bug fixes.
+
+=== 0.8.0 / 2009-09-12
+
+* Remove need for library stubs. Set the RUBYOPT environment variable to
+ include "rrubygems", and a normal require will find gem files. Continue to
+ use 'require_gem gem_name, version' to specify gem versions.
+* Deprecated "test_suite_file" gemspec attribute in favor of "test_files" array.
+* Generates rdoc by default on installs.
+* Adopted tar/gzip file format, thanks to Mauricio Fernandez.
+* "gem rdoc" allows generation of rdoc after gem installation (will add a "gem
+ test"
+* Application stubs can now accept an optional parameter of _VERSION_ that will
+ run an arbitrary version of the application requested.
+* Various bug fixes
+* Various platform-independency improvements
+* "gem spec --all" displays spec info for all installed version of a given gem.
+* Dynamic caching of sources
+* Support for user-definable sources on the command line (thanks Assaph Mehr)
+* More intelligent support for platform-dependent gems. Use Platform::CURRENT
+ when building a gem to set its platform to the one you're building on.
+ Installation displays a choice of platform-dependent gems, allowing the user
+ to pick.
+* Added "gem unpack" for "unpacking" a gem to the current directory
+
+=== 0.7.0 / 2004-07-09
+
+See ChangeLog
+
+=== 0.6.0 / 2004-06-08
+
+* Collapse output of --search and --list (and gem_server) operations so that
+ each gem is listed only once, with each of its versions listed on the same
+ line.
+* bin/gem: new --upgrade-all option allows one to upgrade every installed gem
+* new #required_ruby_version attribute added to gem specification for
+ specifying a dependency on which version of ruby the gem needs. Format it
+ accepts is the same as the Gem::Version::Requirement format:
+
+ spec.required_ruby_version = "> 1.8.0"
+* --install-stub defaults to true, so library stubs are created
+
+=== 0.5.0 / 2004-06-06
+
+* Jim added the ability to specify version constraints to avoid API
+ incompatibilities. This has been the subject of much debate for the past
+ couple of months, with many ideas and code contributed by Eivind Eklund and
+ Mauricio Fernandez. The following set of assertions shows how it works:
+
+ assert_inadequate("1.3", "~> 1.4")
+ assert_adequate( "1.4", "~> 1.4")
+ assert_adequate( "1.5", "~> 1.4")
+ assert_inadequate("2.0", "~> 1.4") # This one is key--the new operator
+ # disallows major version number
+ # differences.
+* Group gem search output when multiple versions exist for a given gem:
+
+ activerecord (0.7.8, 0.7.7, 0.7.6, 0.7.5)
+ Implements the ActiveRecord pattern for ORM.
+* Add arbitrary RDoc-able files via gemspec (not just Ruby source files) for
+ people who have, for example, README.rdoc in their distributions. Add to
+ gemspec via: spec.extra_rdoc_files = ["list", "of", "files"]. Ruby files are
+ automatically included.
+* Some small bug fixes
+
+=== 0.4.0 / 2004-05-31
+
+* Minor bug fixes including Windows compatability issues
+
+=== 0.3.0 / 2004-04-30
+
+* Cleanup of command-line arguments and handling. Most commands accept a
+ --local or --remote modifier.
+* Creation of Application Gems (packages that include executable programs).
+ See http://rubygems.rubyforge.org/wiki/wiki.pl?DeveloperGuide for information
+ on how to use it.
+* Basic functionality for installing binary gems from source (:extensions
+ property of gem specification holds an array of paths to extconf.rb files to
+ be used for compilation)
+* Install library "stub" allowing a normal 'require' to work (which then does
+ the rubygems require and 'require_gem'
+* --run-tests runs the test suite specified by the "test_suite_file" property
+ of a gem specification
+* HTTP Proxy support works. Rewrite of HTTP code.
+* Unit and functional tests added (see Rakefile).
+* Prompt before remote-installing dependencies during gem installation.
+* Config file for storing preferences for 'gem' command usage.
+* Generally improved error messages (still more work to do)
+* Rearranged gem directory structure for cleanliness.
+
+=== 0.2.0 / 2004-03-14
+
+* Initial public release
+
diff --git a/lib/rubygems/LICENSE.txt b/doc/rubygems/LICENSE.txt
index db88c5e118..db88c5e118 100644
--- a/lib/rubygems/LICENSE.txt
+++ b/doc/rubygems/LICENSE.txt
diff --git a/doc/rubygems/README b/doc/rubygems/README
new file mode 100644
index 0000000000..68a52593d4
--- /dev/null
+++ b/doc/rubygems/README
@@ -0,0 +1,41 @@
+= RubyGems
+
+* http://rubygems.org/
+* http://docs.rubygems.org/
+* http://rubygems.rubyforge.org/
+* http://rubyforge.org/projects/rubygems
+
+== DESCRIPTION
+
+RubyGems is a package management framework for Ruby.
+
+This gem is an update for the RubyGems software. You must have an
+installation of RubyGems before this update can be applied.
+
+See Gem for information on RubyGems (or `ri Gem`)
+
+To upgrade to the latest RubyGems, run:
+
+ $ gem update --system # you might need to be an administrator or root
+
+NOTE: RubyGems 1.1 and 1.2 have problems upgrading when there is no
+rubygems-update installed. You will need to use the following instructions
+if you see "Nothing to update".
+
+If you have an older version of RubyGems installed, then you can still
+do it in two steps:
+
+ $ gem install rubygems-update # again, might need to be admin/root
+ $ update_rubygems # ... here too
+
+If you don't have any RubyGems install, there is still the pre-gem approach to
+getting software, doing it manually:
+
+1. Download from: http://rubyforge.org/frs/?group_id=126
+2. Unpack into a directory and cd there
+3. Install with: ruby setup.rb # you may need admin/root privilege
+
+For more details and other options, see:
+
+ ruby setup.rb --help
+
diff --git a/doc/security.rdoc b/doc/security.rdoc
deleted file mode 100644
index 2cf6531785..0000000000
--- a/doc/security.rdoc
+++ /dev/null
@@ -1,149 +0,0 @@
-= Ruby Security
-
-The Ruby programming language is large and complex and there are many security
-pitfalls often encountered by newcomers and experienced Rubyists alike.
-
-This document aims to discuss many of these pitfalls and provide more secure
-alternatives where applicable.
-
-Please check the full list of publicly known CVEs and how to correctly report a
-security vulnerability, at: http://www.ruby-lang.org/en/security/
-Japanese version is here: http://www.ruby-lang.org/ja/security/
-
-Security vulnerabilities should be reported via an email to
-mailto:security@ruby-lang.org ({the PGP public
-key}[http://www.ruby-lang.org/security.asc]), which is a private mailing list.
-Reported problems will be published after fixes.
-
-== <code>$SAFE</code>
-
-Ruby provides a mechanism to restrict what operations can be performed by Ruby
-code in the form of the <code>$SAFE</code> variable.
-
-However, <code>$SAFE</code> does not provide a secure environment for executing
-untrusted code even at its maximum level of +4+. <code>$SAFE</code> is
-inherently flawed as a security mechanism, as it relies on every unsafe
-operation performed by any C method to be guarded by a <code>$SAFE</code>
-check. If this check is ever missed, the entire security of the system is
-compromised. <code>$SAFE</code> also does not offer any protection against
-denial of service attacks.
-
-If you need to execute untrusted code, you should use an operating system level
-sandboxing mechanism. On Linux, ptrace or LXC can be used to sandbox
-potentially malicious code. Other similar mechanisms exist on every major
-operating system.
-
-== +Marshal.load+
-
-Ruby's +Marshal+ module provides methods for serializing and deserializing Ruby
-object trees to and from a binary data format.
-
-Never use +Marshal.load+ to deserialize untrusted or user supplied data.
-Because +Marshal+ can deserialize to almost any Ruby object and has full
-control over instance variables, it is possible to craft a malicious payload
-that executes code shortly after deserialization.
-
-If you need to deserialize untrusted data, you should use JSON as it is only
-capable of returning 'primitive' types such as strings, arrays, hashes, numbers
-and nil. If you need to deserialize other classes, you should handle this
-manually. Never deserialize to a user specified class.
-
-== YAML
-
-YAML is a popular human readable data serialization format used by many Ruby
-programs for configuration and database persistance of Ruby object trees.
-
-Similar to +Marshal+, it is able to deserialize into arbitrary Ruby classes.
-For example, the following YAML data will create an +ERB+ object when
-deserialized:
-
- !ruby/object:ERB
- src: puts `uname`
-
-Because of this, many of the security considerations applying to Marshal are
-also applicable to YAML. Do not use YAML to deserialize untrusted data.
-
-== Symbols
-
-Symbols are often seen as syntax sugar for simple strings, but they play a much
-more crucial role. The MRI Ruby implementation uses Symbols internally for
-method, variable and constant names. The reason for this is that symbols are
-simply integers with names attached to them, so they are faster to look up in
-hashtables.
-
-Once a symbol is created, the memory used by it is never freed. If you convert
-user input to symbols with +to_sym+ or +intern+, it is possible for an attacker
-to mount a denial of service attack against your application by flooding it
-with unique strings. Because each string is kept in memory until the Ruby
-process exits, this will cause memory consumption to grow and grow until Ruby
-runs out of memory and crashes.
-
-Be careful with passing user input to methods such as +send+,
-+instance_variable_get+ or +_set+, +const_get+ or +_set+, etc. as these methods
-will convert string parameters to symbols internally and pose the same DoS
-potential as direct conversion through +to_sym+/+intern+.
-
-The workaround to this is simple - don't convert user input to symbols. You
-should attempt to leave user input in string form instead.
-
-== Regular expressions
-
-Ruby's regular expression syntax has some minor differences when compared to
-other languages. In Ruby, the <code>^</code> and <code>$</code> anchors do not
-refer to the beginning and end of the string, rather the beginning and end of a
-*line*.
-
-This means that if you're using a regular expression like
-<code>/^[a-z]+$/</code> to restrict a string to only letters, an attacker can
-bypass this check by passing a string containing a letter, then a newline, then
-any string of their choosing.
-
-If you want to match the beginning and end of the entire string in Ruby, use
-the anchors +\A+ and +\z+.
-
-== +eval+
-
-Never pass untrusted or user controlled input to +eval+.
-
-Unless you are implementing a REPL like +irb+ or +pry+, +eval+ is almost
-certainly not what you want. Do not attempt to filter user input before passing
-it to +eval+ - this approach is fraught with danger and will most likely open
-your application up to a serious remote code execution vulnerability.
-
-== +send+
-
-'Global functions' in Ruby (+puts+, +exit+, etc.) are actually private instance
-methods on +Object+. This means it is possible to invoke these methods with
-+send+, even if the call to +send+ has an explicit receiver.
-
-For example, the following code snippet writes "Hello world" to the terminal:
-
- 1.send(:puts, "Hello world")
-
-You should never call +send+ with user supplied input as the first parameter.
-Doing so can introduce a denial of service vulnerability:
-
- foo.send(params[:bar]) # params[:bar] is "exit!"
-
-If an attacker can control the first two arguments to +send+, remote code
-execution is possible:
-
- # params is { :a => "eval", :b => "...ruby code to be executed..." }
- foo.send(params[:a], params[:b])
-
-When dispatching a method call based on user input, carefully verify that the
-method name. If possible, check it against a whitelist of safe method names.
-
-Note that the use of +public_send+ is also dangerous, as +send+ itself is
-public:
-
- 1.public_send("send", "eval", "...ruby code to be executed...")
-
-== DRb
-
-As DRb allows remote clients to invoke arbitrary methods, it is not suitable to
-expose to untrusted clients.
-
-When using DRb, try to avoid exposing it over the network if possible. If this
-isn't possible and you need to expose DRb to the world, you *must* configure an
-appropriate security policy with <code>DRb::ACL</code>.
diff --git a/doc/shell.rd b/doc/shell.rd
new file mode 100644
index 0000000000..8a1f7c5a80
--- /dev/null
+++ b/doc/shell.rd
@@ -0,0 +1,347 @@
+ -- shell.rb
+ $Release Version: 0.6.0 $
+ $Revision$
+ by Keiju ISHITSUKA(keiju@ishitsuka.com)
+
+=begin
+
+= What's shell.rb?
+
+It realizes a wish to do execution of commands with filters and pipes
+like sh/csh by using just native facilities of ruby.
+
+= Main classes
+
+== Shell
+
+Every shell object has its own current working directory, and executes
+each command as if it stands in the directory.
+
+--- Shell#cwd
+--- Shell#dir
+--- Shell#getwd
+--- Shell#pwd
+
+ Returns the current directory
+
+--- Shell#system_path
+
+ Returns the command search path in an array
+
+--- Shell#umask
+
+ Returns the umask
+
+== Filter
+
+Any result of command exection is a Filter. Filter include
+Enumerable, therefore a Filter object can use all Enumerable
+facilities.
+
+= Main methods
+
+== Command definitions
+
+In order to execute a command on your OS, you need to define it as a
+Shell method.
+
+Alternatively, you can execute any command via Shell#system even if it
+is not defined.
+
+--- Shell.def_system_command(command, path = command)
+
+ Defines a command. Registers <path> as a Shell method
+ <command>.
+
+ ex)
+ Shell.def_system_command "ls"
+ Defines ls.
+
+ Shell.def_system_command "sys_sort", "sort"
+ Defines sys_sort as sort.
+
+--- Shell.undef_system_command(command)
+
+ Undefines a commmand
+
+--- Shell.alias_command(ali, command, *opts) {...}
+
+ Aliases a command.
+
+ ex)
+ Shell.alias_command "lsC", "ls", "-CBF", "--show-control-chars"
+ Shell.alias_command("lsC", "ls"){|*opts| ["-CBF", "--show-control-chars", *opts]}
+
+--- Shell.unalias_command(ali)
+
+ Unaliases a command.
+
+--- Shell.install_system_commands(pre = "sys_")
+
+ Defines all commands in the default_system_path as Shell method,
+ all with <pre> prefixed to their names.
+
+== Creation
+
+--- Shell.new
+
+ Creates a Shell object which current directory is set to the
+ process current directory.
+
+--- Shell.cd(path)
+
+ Creates a Shell object which current directory is set to
+ <path>.
+
+== Process management
+
+--- Shell#jobs
+
+ Returns a list of scheduled jobs.
+
+--- Shell#kill sig, job
+
+ Sends a signal <sig> to <job>.
+
+== Current directory operations
+
+--- Shell#cd(path, &block)
+--- Shell#chdir
+
+ Changes the current directory to <path>. If a block is given,
+ it restores the current directory when the block ends.
+
+--- Shell#pushd(path = nil, &block)
+--- Shell#pushdir
+
+ Pushes the current directory to the directory stack, changing
+ the current directory to <path>. If <path> is omitted, it
+ exchanges its current directory and the top of its directory
+ stack. If a block is given, it restores the current directory
+ when the block ends.
+
+--- Shell#popd
+--- Shell#popdir
+
+ Pops a directory from the directory stack, and sets the current
+ directory to it.
+
+== File and directory operations
+
+--- Shell#foreach(path = nil, &block)
+
+ Same as:
+ File#foreach (when path is a file)
+ Dir#foreach (when path is a directory)
+
+--- Shell#open(path, mode)
+
+ Same as:
+ File#open (when path is a file)
+ Dir#open (when path is a directory)
+
+--- Shell#unlink(path)
+
+ Same as:
+ Dir#open (when path is a file)
+ Dir#unlink (when path is a directory)
+
+--- Shell#test(command, file1, file2)
+--- Shell#[command, file1, file2]
+
+ Same as test().
+ ex)
+ sh[?e, "foo"]
+ sh[:e, "foo"]
+ sh["e", "foo"]
+ sh[:exists?, "foo"]
+ sh["exists?", "foo"]
+
+--- Shell#mkdir(*path)
+
+ Same as Dir.mkdir (with multiple directories allowed)
+
+--- Shell#rmdir(*path)
+
+ Same as Dir.rmdir (with multiple directories allowed)
+
+== Command execution
+
+--- System#system(command, *opts)
+
+ Executes <command> with <opts>.
+
+ ex)
+ print sh.system("ls", "-l")
+ sh.system("ls", "-l") | sh.head > STDOUT
+
+--- System#rehash
+
+ Does rehash.
+
+--- Shell#transact &block
+
+ Executes a block as self.
+ ex)
+ sh.transact{system("ls", "-l") | head > STDOUT}
+
+--- Shell#out(dev = STDOUT, &block)
+
+ Does transact, with redirecting the result output to <dev>.
+
+== Internal commands
+
+--- Shell#echo(*strings)
+--- Shell#cat(*files)
+--- Shell#glob(patten)
+--- Shell#tee(file)
+
+ Return Filter objects, which are results of their execution.
+
+--- Filter#each &block
+
+ Iterates a block for each line of it.
+
+--- Filter#<(src)
+
+ Inputs from <src>, which is either a string of a file name or an
+ IO.
+
+--- Filter#>(to)
+
+ Outputs to <to>, which is either a string of a file name or an
+ IO.
+
+--- Filter#>>(to)
+
+ Appends the ouput to <to>, which is either a string of a file
+ name or an IO.
+
+--- Filter#|(filter)
+
+ Processes a pipeline.
+
+--- Filter#+(filter)
+
+ (filter1 + filter2) outputs filter1, and then outputs filter2.
+
+--- Filter#to_a
+--- Filter#to_s
+
+== Built-in commands
+
+--- Shell#atime(file)
+--- Shell#basename(file, *opt)
+--- Shell#chmod(mode, *files)
+--- Shell#chown(owner, group, *file)
+--- Shell#ctime(file)
+--- Shell#delete(*file)
+--- Shell#dirname(file)
+--- Shell#ftype(file)
+--- Shell#join(*file)
+--- Shell#link(file_from, file_to)
+--- Shell#lstat(file)
+--- Shell#mtime(file)
+--- Shell#readlink(file)
+--- Shell#rename(file_from, file_to)
+--- Shell#split(file)
+--- Shell#stat(file)
+--- Shell#symlink(file_from, file_to)
+--- Shell#truncate(file, length)
+--- Shell#utime(atime, mtime, *file)
+
+ Equivalent to the class methods of File with the same names.
+
+--- Shell#blockdev?(file)
+--- Shell#chardev?(file)
+--- Shell#directory?(file)
+--- Shell#executable?(file)
+--- Shell#executable_real?(file)
+--- Shell#exist?(file)/Shell#exists?(file)
+--- Shell#file?(file)
+--- Shell#grpowned?(file)
+--- Shell#owned?(file)
+--- Shell#pipe?(file)
+--- Shell#readable?(file)
+--- Shell#readable_real?(file)
+--- Shell#setgid?(file)
+--- Shell#setuid?(file)
+--- Shell#size(file)/Shell#size?(file)
+--- Shell#socket?(file)
+--- Shell#sticky?(file)
+--- Shell#symlink?(file)
+--- Shell#writable?(file)
+--- Shell#writable_real?(file)
+--- Shell#zero?(file)
+
+ Equivalent to the class methods of FileTest with the same names.
+
+--- Shell#syscopy(filename_from, filename_to)
+--- Shell#copy(filename_from, filename_to)
+--- Shell#move(filename_from, filename_to)
+--- Shell#compare(filename_from, filename_to)
+--- Shell#safe_unlink(*filenames)
+--- Shell#makedirs(*filenames)
+--- Shell#install(filename_from, filename_to, mode)
+
+ Equivalent to the class methods of FileTools with the same
+ names.
+
+ And also, there are some aliases for convenience:
+
+--- Shell#cmp <- Shell#compare
+--- Shell#mv <- Shell#move
+--- Shell#cp <- Shell#copy
+--- Shell#rm_f <- Shell#safe_unlink
+--- Shell#mkpath <- Shell#makedirs
+
+= Samples
+
+== ex1
+
+ sh = Shell.cd("/tmp")
+ sh.mkdir "shell-test-1" unless sh.exists?("shell-test-1")
+ sh.cd("shell-test-1")
+ for dir in ["dir1", "dir3", "dir5"]
+ if !sh.exists?(dir)
+ sh.mkdir dir
+ sh.cd(dir) do
+ f = sh.open("tmpFile", "w")
+ f.print "TEST\n"
+ f.close
+ end
+ print sh.pwd
+ end
+ end
+
+== ex2
+
+ sh = Shell.cd("/tmp")
+ sh.transact do
+ mkdir "shell-test-1" unless exists?("shell-test-1")
+ cd("shell-test-1")
+ for dir in ["dir1", "dir3", "dir5"]
+ if !exists?(dir)
+ mkdir dir
+ cd(dir) do
+ f = open("tmpFile", "w")
+ f.print "TEST\n"
+ f.close
+ end
+ print pwd
+ end
+ end
+ end
+
+== ex3
+
+ sh.cat("/etc/printcap") | sh.tee("tee1") > "tee2"
+ (sh.cat < "/etc/printcap") | sh.tee("tee11") > "tee12"
+ sh.cat("/etc/printcap") | sh.tee("tee1") >> "tee2"
+ (sh.cat < "/etc/printcap") | sh.tee("tee11") >> "tee12"
+
+== ex4
+
+ print sh.cat("/etc/passwd").head.collect{|l| l =~ /keiju/}
+
+=end
diff --git a/doc/shell.rd.ja b/doc/shell.rd.ja
index 053b11fb99..33e5a9ed9b 100644
--- a/doc/shell.rd.ja
+++ b/doc/shell.rd.ja
@@ -5,142 +5,142 @@
=begin
-= 目的
+= Ū
-ruby上でsh/cshのようにコマンドの実行及びフィルタリングを手軽に行う.
-sh/cshの制御文はrubyの機能を用いて実現する.
+rubysh/cshΤ褦˥ޥɤμ¹Եڤӥե륿󥰤ڤ˹Ԥ.
+sh/cshʸrubyεǽѤƼ¸.
-= 主なクラス一覧
+= ʥ饹
== Shell
-Shellオブジェクトはカレントディレクトリを持ち, コマンド実行はそこからの
-相対パスになります.
+Shell֥Ȥϥȥǥ쥯ȥ, ޥɼ¹ԤϤ
+Хѥˤʤޤ.
--- Shell#cwd
--- Shell#dir
--- Shell#getwd
--- Shell#pwd
- カレントディレクトリを返す。
+ ȥǥ쥯ȥ֤
--- Shell#system_path
- コマンドサーチパスの配列を返す。
+ ޥɥѥ֤
--- Shell#umask
- umaskを返す。
+ umask֤
== Filter
-コマンドの実行結果はすべてFilterとしてかえります. Enumerableをincludeし
-ています.
+ޥɤμ¹Է̤Ϥ٤FilterȤƤޤ. Enumerableinclude
+Ƥޤ.
-= 主なメソッド一覧
+= ʥ᥽åɰ
-== コマンド定義
+== ޥ
-OS上のコマンドを実行するにはまず, Shellのメソッドとして定義します.
+OSΥޥɤ¹ԤˤϤޤ, ShellΥ᥽åɤȤޤ.
-注) コマンドを定義しなくとも直接実行できるShell#systemコマンドもあります.
+) ޥɤʤȤľܼ¹ԤǤShell#systemޥɤ⤢ޤ.
--- Shell.def_system_command(command, path = command)
- Shellのメソッドとしてcommandを登録します.
+ ShellΥ᥽åɤȤcommandϿޤ.
- 例)
+ )
Shell.def_system_command "ls"
- ls を定義
+ ls
Shell.def_system_command "sys_sort", "sort"
- sortコマンドをsys_sortとして定義
+ sortޥɤsys_sortȤ
--- Shell.undef_system_command(command)
- commandを削除します.
+ commandޤ.
--- Shell.alias_command(ali, command, *opts) {...}
- commandのaliasをします.
+ commandalias򤷤ޤ.
- 例)
+ )
Shell.alias_command "lsC", "ls", "-CBF", "--show-control-chars"
Shell.alias_command("lsC", "ls"){|*opts| ["-CBF", "--show-control-chars", *opts]}
--- Shell.unalias_command(ali)
- commandのaliasを削除します.
+ commandaliasޤ.
--- Shell.install_system_commands(pre = "sys_")
- system_path上にある全ての実行可能ファイルをShellに定義する. メソッ
- ド名は元のファイル名の頭にpreをつけたものとなる.
+ system_pathˤƤμ¹ԲǽեShell. ᥽
+ ̾ϸΥե̾ƬpreĤΤȤʤ.
-== 生成
+==
--- Shell.new
- プロセスのカレントディレクトリをカレントディレクトリとするShellオ
- ブジェクトを生成します.
+ ץΥȥǥ쥯ȥ򥫥ȥǥ쥯ȥȤShell
+ ֥Ȥޤ.
--- Shell.cd(path)
- pathをカレントディレクトリとするShellオブジェクトを生成します.
+ path򥫥ȥǥ쥯ȥȤShell֥Ȥޤ.
-== プロセス管理
+== ץ
--- Shell#jobs
- スケジューリングされているjobの一覧を返す.
+ 塼󥰤Ƥjobΰ֤.
--- Shell#kill sig, job
- jobにシグナルsigを送る
+ job˥ʥsig
-== カレントディレクトリ操作
+== ȥǥ쥯ȥ
--- Shell#cd(path, &block)
--- Shell#chdir
- カレントディレクトリをpathにする. イテレータとして呼ばれたときには
- ブロック実行中のみカレントディレクトリを変更する.
+ ȥǥ쥯ȥpathˤ. ƥ졼ȤƸƤФ줿Ȥˤ
+ ֥å¹Τߥȥǥ쥯ȥѹ.
--- Shell#pushd(path = nil, &block)
--- Shell#pushdir
- カレントディレクトリをディレクトリスタックにつみ, カレントディレク
- トリをpathにする. pathが省略されたときには, カレントディレクトリと
- ディレクトリスタックのトップを交換する. イテレータとして呼ばれたと
- きには, ブロック実行中のみpushdする.
+ ȥǥ쥯ȥǥ쥯ȥꥹåˤĤ, ȥǥ쥯
+ ȥpathˤ. pathά줿Ȥˤ, ȥǥ쥯ȥ
+ ǥ쥯ȥꥹåΥȥåפ򴹤. ƥ졼ȤƸƤФ줿
+ ˤ, ֥å¹Τpushd.
--- Shell#popd
--- Shell#popdir
- ディレクトリスタックからポップし, それをカレントディレクトリにする.
+ ǥ쥯ȥꥹåݥåפ, 򥫥ȥǥ쥯ȥˤ.
-== ファイル/ディレクトリ操作
+== ե/ǥ쥯ȥ
--- Shell#foreach(path = nil, &block)
- pathがファイルなら, File#foreach
- pathがディレクトリなら, Dir#foreach
+ pathեʤ, File#foreach
+ pathǥ쥯ȥʤ, Dir#foreach
--- Shell#open(path, mode)
- pathがファイルなら, File#open
- pathがディレクトリなら, Dir#open
+ pathեʤ, File#open
+ pathǥ쥯ȥʤ, Dir#open
--- Shell#unlink(path)
- pathがファイルなら, File#unlink
- pathがディレクトリなら, Dir#unlink
+ pathեʤ, File#unlink
+ pathǥ쥯ȥʤ, Dir#unlink
--- Shell#test(command, file1, file2)
--- Shell#[command, file1, file2]
- ファイルテスト関数testと同じ.
- 例)
+ եƥȴؿtestƱ.
+ )
sh[?e, "foo"]
sh[:e, "foo"]
sh["e", "foo"]
@@ -149,75 +149,75 @@ OS上のコマンドを実行するにはまず, Shellのメソッドとして
--- Shell#mkdir(*path)
- Dir.mkdirと同じ(複数可)
+ Dir.mkdirƱ(ʣ)
--- Shell#rmdir(*path)
- Dir.rmdirと同じ(複数可)
+ Dir.rmdirƱ(ʣ)
-== コマンド実行
+== ޥɼ¹
--- System#system(command, *opts)
- commandを実行する.
- 例)
+ command¹Ԥ.
+ )
print sh.system("ls", "-l")
sh.system("ls", "-l") | sh.head > STDOUT
--- System#rehash
- リハッシュする
+ ϥå夹
--- Shell#transact &block
- ブロック中ではshellをselfとして実行する.
- 例)
+ ֥åǤshellselfȤƼ¹Ԥ.
+ )
sh.transact{system("ls", "-l") | head > STDOUT}
--- Shell#out(dev = STDOUT, &block)
- transactを呼び出しその結果をdevに出力する.
+ transactƤӽФη̤dev˽Ϥ.
-== 内部コマンド
+== ޥ
--- Shell#echo(*strings)
--- Shell#cat(*files)
--- Shell#glob(patten)
--- Shell#tee(file)
- これらは実行すると, それらを内容とするFilterオブジェクトを返します.
+ ϼ¹Ԥ, ƤȤFilter֥Ȥ֤ޤ.
--- Filter#each &block
- フィルタの一行ずつをblockに渡す.
+ ե륿ΰԤĤblockϤ.
--- Filter#<(src)
- srcをフィルタの入力とする. srcが, 文字列ならばファイルを, IOであれ
- ばそれをそのまま入力とする.
+ srcե륿ϤȤ. src, ʸʤХե, IOǤ
+ Ф򤽤ΤޤϤȤ.
--- Filter#>(to)
- srcをフィルタの出力とする. toが, 文字列ならばファイルに, IOであれ
- ばそれをそのまま出力とする.
+ srcե륿νϤȤ. to, ʸʤХե, IOǤ
+ Ф򤽤Τޤ޽ϤȤ.
--- Filter#>>(to)
- srcをフィルタに追加する. toが, 文字列ならばファイルに, IOであれば
- それをそのまま出力とする.
+ srcե륿ɲä. to, ʸʤХե, IOǤ
+ 򤽤Τޤ޽ϤȤ.
--- Filter#|(filter)
- パイプ結合
+ ѥ׷
--- Filter#+(filter)
- filter1 + filter2 は filter1の出力の後, filter2の出力を行う.
+ filter1 + filter2 filter1νϤθ, filter2νϤԤ.
--- Filter#to_a
--- Filter#to_s
-== 組込みコマンド
+== ȹߥޥ
--- Shell#atime(file)
--- Shell#basename(file, *opt)
@@ -239,7 +239,7 @@ OS上のコマンドを実行するにはまず, Shellのメソッドとして
--- Shell#truncate(file, length)
--- Shell#utime(atime, mtime, *file)
- これらはFileクラスにある同名のクラスメソッドと同じです.
+ File饹ˤƱ̾Υ饹᥽åɤƱǤ.
--- Shell#blockdev?(file)
--- Shell#chardev?(file)
@@ -263,7 +263,7 @@ OS上のコマンドを実行するにはまず, Shellのメソッドとして
--- Shell#writable_real?(file)
--- Shell#zero?(file)
- これらはFileTestクラスにある同名のクラスメソッドと同じです.
+ FileTest饹ˤƱ̾Υ饹᥽åɤƱǤ.
--- Shell#syscopy(filename_from, filename_to)
--- Shell#copy(filename_from, filename_to)
@@ -273,9 +273,9 @@ OS上のコマンドを実行するにはまず, Shellのメソッドとして
--- Shell#makedirs(*filenames)
--- Shell#install(filename_from, filename_to, mode)
- これらはFileToolsクラスにある同名のクラスメソッドと同じです.
+ FileTools饹ˤƱ̾Υ饹᥽åɤƱǤ.
- その他, 以下のものがエイリアスされています.
+ ¾, ʲΤΤꥢƤޤ.
--- Shell#cmp <- Shell#compare
--- Shell#mv <- Shell#move
@@ -283,7 +283,7 @@ OS上のコマンドを実行するにはまず, Shellのメソッドとして
--- Shell#rm_f <- Shell#safe_unlink
--- Shell#mkpath <- Shell#makedirs
-= サンプル
+= ץ
== ex1
diff --git a/doc/standard_library.rdoc b/doc/standard_library.rdoc
deleted file mode 100644
index e94727f913..0000000000
--- a/doc/standard_library.rdoc
+++ /dev/null
@@ -1,126 +0,0 @@
-= Ruby Standard Library
-
-The Ruby Standard Library is a vast collection of classes and modules that you
-can require in your code for additional features.
-
-Below is an overview of libraries and extensions followed by a brief
-description.
-
-== Libraries
-
-Abbrev:: Calculates a set of unique abbreviations for a given set of strings
-Base64:: Support for encoding and decoding binary data using a Base64 representation
-Benchmark:: Provides methods to measure and report the time used to execute code
-CGI:: Support for the Common Gateway Interface protocol
-CMath:: Provides Trigonometric and Transcendental functions for complex numbers
-complex.rb:: Deprecated library replaced by C implementation in core
-ConditionVariable:: Augments the Mutex class, provided by thread.rb
-CSV:: Provides an interface to read and write CSV files and data
-DEBUGGER__:: Debugging functionality for Ruby
-Delegator:: Provides three abilities to delegate method calls to an object
-DRb:: Distributed object system for Ruby
-E2MM:: Module for defining custom exceptions with specific messages
-English.rb:: Require 'English.rb' to reference global variables with less cryptic names
-ERB:: An easy to use but powerful templating system for Ruby
-FileUtils:: Several file utility methods for copying, moving, removing, etc
-Find:: This module supports top-down traversal of a set of file paths
-Forwardable:: Provides delegation of specified methods to a designated object
-GetoptLong:: Parse command line options similar to the GNU C getopt_long()
-GServer:: HTTP server with logging, thread pooling and multi-server management
-IPAddr:: Provides methods to manipulate IPv4 and IPv6 IP addresses
-IRB:: Interactive Ruby command-line tool for REPL (Read Eval Print Loop)
-Logger:: Provides a simple logging utility for outputing messages
-mathn.rb:: Deprecated library that extends math operations
-MakeMakefile:: Module used to generate a Makefile for C extensions
-Matrix:: Represents a mathematical matrix.
-MiniTest:: A test suite with TDD, BDD, mocking and benchmarking
-Monitor:: Provides an object or module to use safely by more than one thread
-Mutex_m:: Mixin to extend objects to be handled like a Mutex
-Net::FTP:: Support for the File Transfer Protocol
-Net::HTTP:: HTTP client api for Ruby
-Net::IMAP:: Ruby client api for Internet Message Access Protocol
-Net::POP3:: Ruby client library for POP3
-Net::SMTP:: Simple Mail Transfer Protocol client library for Ruby
-Net::Telnet:: Telnet client library for Ruby
-Observable:: Provides a mechanism for publich/subscribe pattern in Ruby
-OpenURI:: An easy-to-use wrapper for Net::HTTP, Net::HTTPS and Net::FTP
-Open3:: Provides access to stdin, stdout and stderr when running other programs
-OptionParser:: Ruby-oriented class for command-line option analysis
-OpenStruct:: Class to build custom data structures, similar to a Hash
-PP:: Provides a PrettyPrinter for Ruby objects
-PrettyPrinter:: Implements a pretty printing algorithm for readable structure
-Prime:: Prime numbers and factorization library
-profile.rb:: Runs the Ruby Profiler__
-Profiler__:: Provides a way to profile your Ruby application
-PStore:: Implements a file based persistence mechanism based on a Hash
-Queue:: Synchronized communication between threads, provided by thread.rb
-Racc:: A LALR(1) parser generator written in Ruby.
-Rake:: Ruby build program with capabilities similar to make
-rational.rb:: Deprecated library replaced by C implementation in core
-RbConfig:: Information of your configure and build of Ruby
-RDoc:: Produces HTML and command-line documentation for Ruby
-resolv-replace.rb:: Replace Socket DNS with Resolv
-Resolv:: Thread-aware DNS resolver library in Ruby
-REXML:: An XML toolkit for Ruby
-Rinda:: The Linda distributed computing paradigm in Ruby
-RSS:: Family of libraries that support various formats of XML "feeds"
-Gem:: Package management framework for Ruby
-Scanf:: A Ruby implementation of the C function scanf(3)
-SecureRandom:: Interface for secure random number generator
-Set:: Provides a class to deal with collections of unordered, unique values
-Shell:: An idiomatic Ruby interface for common UNIX shell commands
-Shellwords:: Manipulates strings with word parsing rules of UNIX Bourne shell
-Singleton:: Implementation of the Singleton pattern for Ruby
-Synchronizer:: A module that provides a two-phase lock with a counter
-Tempfile:: A utility class for managing temporary files
-Test::Unit:: A compatibility layer for MiniTest
-Thread:: Provides support classes for threaded programs
-ThreadsWait:: Watches for termination of multiple threads
-Time:: Extends the Time class with methods for parsing and conversion
-Timeout:: Auto-terminate potentially long-running operations in Ruby
-tmpdir.rb:: Extends the Dir class to manage the OS temporary file path
-Tracer:: Outputs a source level execution trace of a Ruby program
-TSort:: Topological sorting using Tarjan's algorithm
-un.rb:: Utilities to replace common UNIX commands
-URI:: A Ruby module providing support for Uniform Resource Identifiers
-WeakRef:: Allows a referenced object to be garbage-collected
-WEBrick:: An HTTP server toolkit for Ruby
-XMLRPC:: Remote Procedure Call over HTTP support for Ruby
-YAML:: Ruby client library for the Psych YAML implementation
-
-== Extensions
-
-BigDecimal:: Provides arbitrary-precision floating point decimal arithmetic
-Coverage:: Provides coverage measurement for Ruby
-Curses:: Implements the CRT screen handling and optimization library
-Date:: A subclass of Object includes Comparable module for handling dates
-DateTime:: Subclass of Date to handling dates, hours, minutes, seconds, offsets
-DBM:: Provides a wrapper for the UNIX-style Database Manager Library
-Digest:: Provides a framework for message digest libraries
-DL:: Provides a wrapper for the UNIX dlopen() library
-Etc:: Provides access to information typically stored in UNIX /etc directory
-Fcntl:: Loads constants defined in the OS fcntl.h C header file
-Fiddle:: A libffi wrapper for Ruby
-GDBM:: Ruby extension for the GNU dbm (gdbm) library
-IO:: Extensions for Ruby IO class, including #wait and ::console
-JSON:: Implements Javascript Object Notation for Ruby
-NKF:: Ruby extension for Network Kanji Filter
-objspace:: Extends ObjectSpace module to add methods for internal statistics
-OpenSSL:: Provides SSL, TSL and general purpose cryptography for Ruby
-Pathname:: Representation of the name of a file or directory on the filesystem
-Psych:: A YAML parser and emitter for Ruby
-PTY:: Creates and manages pseudo terminals
-Readline:: Provides an interface for GNU Readline and Edit Line (libedit)
-Ripper:: Provides an interface for parsing Ruby programs into S-expressions
-SBDM:: Provides a simple file-based key-value store with String keys and values
-Socket:: Access underlying OS socket implementations
-StringIO:: Pseudo I/O on String objects
-StringScanner:: Provides lexical scanning operations on a String
-Syslog:: Ruby interface for the POSIX system logging facility
-Tk:: Provides a framework for building a Graphical User Interface (GUI)
-WIN32OLE:: Provides an interface for OLE Automation in Ruby
-Zlib:: Ruby interface for the zlib compression/decompression library
-
-
-
-
diff --git a/doc/syntax.rdoc b/doc/syntax.rdoc
deleted file mode 100644
index fe0f98ce4c..0000000000
--- a/doc/syntax.rdoc
+++ /dev/null
@@ -1,34 +0,0 @@
-= Ruby Syntax
-
-The Ruby syntax is large and is split up into the following sections:
-
-Literals[rdoc-ref:syntax/literals.rdoc] ::
- Numbers, Strings, Arrays, Hashes, etc.
-
-Assignment[rdoc-ref:syntax/assignment.rdoc] ::
- Assignment and variables
-
-{Control Expressions}[rdoc-ref:syntax/control_expressions.rdoc] ::
- +if+, +unless+, +while+, +until+, +for+, +break+, +next+, +redo+
-
-Methods[rdoc-ref:syntax/methods.rdoc] ::
- Method and method argument syntax
-
-{Calling Methods}[rdoc-ref:syntax/calling_methods.rdoc] ::
- How to call a method (or send a message to a method)
-
-{Modules and Classes}[rdoc-ref:syntax/modules_and_classes.rdoc] ::
- Creating modules and classes including inheritance
-
-Exceptions[rdoc-ref:syntax/exceptions.rdoc] ::
- Exception handling syntax
-
-Precedence[rdoc-ref:syntax/precedence.rdoc] ::
- Precedence of ruby operators
-
-Refinements[rdoc-ref:syntax/refinements.rdoc] ::
- Use and behavior of the experimental refinements feature
-
-Miscellaneous[rdoc-ref:syntax/miscellaneous.rdoc] ::
- +alias+, +undef+, +BEGIN+, +END+
-
diff --git a/doc/syntax/assignment.rdoc b/doc/syntax/assignment.rdoc
deleted file mode 100644
index 7424d4885f..0000000000
--- a/doc/syntax/assignment.rdoc
+++ /dev/null
@@ -1,455 +0,0 @@
-= Assignment
-
-In Ruby assignment uses the <code>=</code> (equals sign) character. This
-example assigns the number five to the local variable +v+:
-
- v = 5
-
-Assignment creates a local variable if the variable was not previously
-referenced.
-
-== Local Variable Names
-
-A local variable name must start with a lowercase US-ASCII letter or a
-character with the eight bit set. Typically local variables are US-ASCII
-compatible since the keys to type them exist on all keyboards.
-
-(Ruby programs must be written in a US-ASCII-compatible character set. In
-such character sets if the eight bit is set it indicates an extended
-character. Ruby allows local variables to contain such characters.)
-
-A local variable name may contain letters, numbers, an <code>_</code>
-(underscore or low line) or a character with the eighth bit set.
-
-== Local Variable Scope
-
-Once a local variable name has been assigned-to all uses of the name for the
-rest of the scope are considered local variables.
-
-Here is an example:
-
- 1.times do
- a = 1
- puts "local variables in the block: #{local_variables.join ", "}"
- end
-
- puts "no local variables outside the block" if local_variables.empty?
-
-This prints:
-
- local variables in the block: a
- no local variables outside the block
-
-Since the block creates a new scope, any local variables created inside it do
-not leak to the surrounding scope.
-
-Variables defined in an outer scope appear inner scope:
-
- a = 0
-
- 1.times do
- puts "local variables: #{local_variables.join ", "}"
- end
-
-This prints:
-
- local variables: a
-
-You may isolate variables in a block from the outer scope by listing them
-following a <code>;</code> in the block's arguments. See the documentation
-for block local variables in the {calling
-methods}[rdoc-ref:syntax/calling_methods.rdoc] documentation for an example.
-
-See also Kernel#local_variables, but note that a +for+ loop does not create a
-new scope like a block does.
-
-== Local Variables and Methods
-
-In Ruby local variable names and method names are nearly identical. If you
-have not assigned to one of these ambiguous names ruby will assume you wish to
-call a method. Once you have assigned to the name ruby will assume you wish
-to reference a local variable.
-
-The local variable is created when the parser encounters the assignment, not
-when the assignment occurs:
-
- a = 0 if false # does not assign to a
-
- p local_variables # prints [:a]
-
- p a # prints nil
-
-The similarity between method and local variable names can lead to confusing
-code, for example:
-
- def big_calculation
- 42 # pretend this takes a long time
- end
-
- big_calculation = big_calculation()
-
-Now any reference to +big_calculation+ is considered a local variable and will
-be cached. To call the method, use <code>self.big_calculation</code>.
-
-You can force a method call by using empty argument parentheses as shown above
-or by using an explicit receiver like <code>self.</code>. Using an explicit
-receiver may raise a NameError if the method's visibility is not public.
-
-Another commonly confusing case is when using a modifier +if+:
-
- p a if a = 0.zero?
-
-Rather than printing "true" you receive a NameError, "undefined local variable
-or method `a'". Since ruby parses the bare +a+ left of the +if+ first and has
-not yet seen an assignment to +a+ it assumes you wish to call a method. Ruby
-then sees the assignment to +a+ and will assume you are referencing a local
-method.
-
-The confusion comes from the out-of-order execution of the expression. First
-the local variable is assigned-to then you attempt to call a nonexistent
-method.
-
-== Instance Variables
-
-Instance variables are shared across all methods for the same object.
-
-An instance variable must start with a <code>@</code> ("at" sign or
-commercial at). Otherwise instance variable names follow the rules as local
-variable names. Since the instance variable starts with an <code>@</code> the
-second character may be an upper-case letter.
-
-Here is an example of instance variable usage:
-
- class C
- def initialize(value)
- @instance_variable = value
- end
-
- def value
- @instance_variable
- end
- end
-
- object1 = C.new "some value"
- object2 = C.new "other value"
-
- p object1.value # prints "some value"
- p object2.value # prints "other value"
-
-An uninitialized instance variable has a value of +nil+. If you run Ruby with
-warnings enabled you will get a warning when accessing an uninitialized
-instance variable.
-
-The +value+ method has access to the value set by the +initialize+ method, but
-only for the same object.
-
-== Class Variables
-
-Class variables are shared between a class, its subclasses and its instances.
-
-A class variable must start with a <code>@@</code> (two "at" signs). The rest
-of the name follows the same rules as instance variables.
-
-Here is an example:
-
- class A
- @@class_variable = 0
-
- def value
- @@class_variable
- end
-
- def update
- @@class_variable = @@class_variable + 1
- end
- end
-
- class B < A
- def update
- @@class_variable = @@class_variable + 2
- end
- end
-
- a = A.new
- b = B.new
-
- puts "A value: #{a.value}"
- puts "B value: #{b.value}"
-
-This prints:
-
- A value: 0
- B value: 0
-
-Continuing with the same example, we can update using objects from either
-class and the value is shared:
-
- puts "update A"
- a.update
-
- puts "A value: #{a.value}"
- puts "B value: #{b.value}"
-
- puts "update B"
- b.update
-
- puts "A value: #{a.value}"
- puts "B value: #{b.value}"
-
- puts "update A"
- a.update
-
- puts "A value: #{a.value}"
- puts "B value: #{b.value}"
-
-This prints:
-
- update A
- A value: 1
- B value: 1
- update B
- A value: 3
- B value: 3
- update A
- A value: 4
- B value: 4
-
-Accessing an uninitialized class variable will raise a NameError exception.
-
-Note that classes have instance variables because classes are objects, so
-try not to confuse class and instance variables.
-
-== Global Variables
-
-Global variables are accessible everywhere.
-
-Global variables start with a <code>$</code> (dollar sign). The rest of the
-name follows the same rules as instance variables.
-
-Here is an example:
-
- $global = 0
-
- class C
- puts "in a class: #{$global}"
-
- def my_method
- puts "in a method: #{$global}"
-
- $global = $global + 1
- $other_global = 3
- end
- end
-
- C.new.my_method
-
- puts "at top-level, $global: #{$global}, $other_global: #{$other_global}"
-
-This prints:
-
- in a class: 0
- in a method: 0
- at top-level, $global: 1, $other_global: 3
-
-An uninitialized global variable has a value of +nil+.
-
-Ruby has some special globals that behave differently depending on context
-such as the regular expression match variables or that have a side-effect when
-assigned to. See the {global variables documentation}[rdoc-ref:globals.rdoc]
-for details.
-
-== Assignment Methods
-
-You can define methods that will behave like assignment, for example:
-
- class C
- def value=(value)
- @value = value
- end
- end
-
- c = C.new
- c.value = 42
-
-Using assignment methods allows your programs to look nicer. When assigning
-to an instance variable most people use Module#attr_accessor:
-
- class C
- attr_accessor :value
- end
-
-When using method assignment you must always have a receiver. If you do not
-have a receiver Ruby assumes you are assigning to a local variable:
-
- class C
- attr_accessor :value
-
- def my_method
- value = 42
-
- puts "local_variables: #{local_variables.join ", "}"
- puts "@value: #{@value.inspect}"
- end
- end
-
- C.new.my_method
-
-This prints:
-
- local_variables: value
- @value: nil
-
-To use the assignment method you must set the receiver:
-
- class C
- attr_accessor :value
-
- def my_method
- self.value = 42
-
- puts "local_variables: #{local_variables.join ", "}"
- puts "@value: #{@value.inspect}"
- end
- end
-
- C.new.my_method
-
-This prints:
-
- local_variables:
- @value: 42
-
-== Abbreviated Assignment
-
-You can mix several of the operators and assignment. To add 1 to an object
-you can write:
-
- a = 1
-
- a += 2
-
- p a # prints 3
-
-This is equivalent to:
-
- a = 1
-
- a = a + 2
-
- p a # prints 3
-
-You can use the following operators this way: <code>+</code>, <code>-</code>,
-<code>*</code>, <code>/</code>, <code>%</code>, <code>**</code>,
-<code>&</code>, <code>|</code>, <code>^</code>, <code><<</code>,
-<code>>></code>
-
-There are also <code>||=</code> and <code>&&=</code>. The former makes an
-assignment if the value was +nil+ or +false+ while the latter makes an
-assignment if the value was not +nil+ or +false+.
-
-Here is an example:
-
- a ||= 0
- a &&= 1
-
- p a # prints 1
-
-Note that these two operators behave more like <code>a || a = 0<code> than
-<code>a = a || 0</code>.
-
-== Implicit Array Assignment
-
-You can implicitly create an array by listing multiple values when assigning:
-
- a = 1, 2, 3
-
- p a # prints [1, 2, 3]
-
-This implicitly creates an Array.
-
-You can use <code>*</code> or the "splat" operator or unpack an Array when
-assigning. This is similar to multiple assignment:
-
- a = *[1, 2, 3]
-
- p a # prints [1, 2, 3]
-
-You can splat anywhere in the left-hand side of the assignment:
-
- a = 1, *[2, 3]
-
- p a # prints [1, 2, 3]
-
-== Multiple Assignment
-
-You can assign multiple values on the left-hand side to multiple variables:
-
- a, b = 1, 2
-
- p a: a, b: b # prints {:a=>1, :b=>2}
-
-In the following sections any place "variable" is used an assignment method,
-instance, class or global will also work:
-
- def value=(value)
- p assigned: value
- end
-
- self.value, $global = 1, 2 # prints {:assigned=>1}
-
- p $global # prints 2
-
-You can use multiple assignment to swap two values in-place:
-
- old_value = 1
-
- new_value, old_value = old_value, 2
-
- p new_value: new_value, old_value: old_value
- # prints {:new_value=>1, :old_value=>2}
-
-If you have more values on the left hand side of the assignment than variables
-on the right hand side the extra values are ignored:
-
- a, b = 1, 2, 3
-
- p a: a, b: b # prints {:a=>1, :b=>2}
-
-You can use <code>*</code> to gather extra values on the right-hand side of
-the assignment.
-
- a, *b = 1, 2, 3
-
- p a: a, b: b # prints {:a=>1, :b=>[2, 3]}
-
-The <code>*</code> can appear anywhere on the right-hand side:
-
- *a, b = 1, 2, 3
-
- p a: a, b: b # prints {:a=>[1, 2], :b=>3}
-
-But you may only use one <code>*</code> in an assignment.
-
-== Array Decomposition
-
-Like Array decomposition in {method arguments}[rdoc-ref:syntax/methods.rdoc]
-you can decompose an Array during assignment using parenthesis:
-
- (a, b) = [1, 2]
-
- p a: a, b: b # prints {:a=>1, :b=>2}
-
-You can decompose an Array as part of a larger multiple assignment:
-
- a, (b, c) = 1, [2, 3]
-
- p a: a, b: b, c: c # prints {:a=>1, :b=>2, :c=>3}
-
-Since each decomposition is considered its own multiple assignment you can use
-<code>*</code> to gather arguments in the decomposition:
-
- a, (b, *c), *d = 1, [2, 3, 4], 5, 6
-
- p a: a, b: b, c: c, d: d
- # prints {:a=>1, :b=>2, :c=>[3, 4], :d=>[5, 6]}
-
diff --git a/doc/syntax/calling_methods.rdoc b/doc/syntax/calling_methods.rdoc
deleted file mode 100644
index 79c0de59dc..0000000000
--- a/doc/syntax/calling_methods.rdoc
+++ /dev/null
@@ -1,349 +0,0 @@
-= Calling Methods
-
-Calling a method sends a message to an object so it can perform some work.
-
-In ruby you send a message to an object like this:
-
- my_method()
-
-Note that the parenthesis are optional:
-
- my_method
-
-Except when there is difference between using and omitting parentheses, this
-document uses parenthesis when arguments are present to avoid confusion.
-
-This section only covers calling methods. See also the {syntax documentation
-on defining methods}[rdoc-ref:syntax/methods.rdoc].
-
-== Receiver
-
-+self+ is the default receiver. If you don't specify any receiver +self+ will
-be used. To specify a receiver use <code>.</code>:
-
- my_object.my_method
-
-This sends the +my_method+ message to +my_object+. Any object can be a
-receiver but depending on the method's visibility sending a message may raise a
-NoMethodError.
-
-You may also use <code>::</code> to designate a receiver, but this is rarely
-used due to the potential for confusion with <code>::</code> for namespaces.
-
-== Arguments
-
-There are three types of arguments when sending a message, the positional
-arguments, keyword (or named) arguments and the block argument. Each message
-sent may use one, two or all types of arguments, but the arguments must be
-supplied in this order.
-
-All arguments in ruby are passed by reference and are not lazily evaluated.
-
-Each argument is separated by a <code>,</code>:
-
- my_method(1, '2', :three)
-
-Arguments may be an expression, a hash argument:
-
- 'key' => value
-
-or a keyword argument:
-
- key: value
-
-Hash and keyword arguments must be contiguous and must appear after all
-positional arguments, but may be mixed:
-
- my_method('a' => 1, b: 2, 'c' => 3)
-
-=== Positional Arguments
-
-The positional arguments for the message follow the method name:
-
- my_method(argument1, argument2)
-
-In many cases parenthesis are not necessary when sending a message:
-
- my_method argument1, argument2
-
-However, parenthesis are necessary to avoid ambiguity. This will raise a
-SyntaxError because ruby does not know which method argument3 should be sent
-to:
-
- method_one argument1, method_two argument2, argument3
-
-If the method definition has a <code>*argument</code> extra positional
-arguments will be assigned to +argument+ in the method as an Array.
-
-If the method definition doesn't include keyword arguments the keyword or
-hash-type arguments are assigned as a single hash to the last argument:
-
- def my_method(options)
- p options
- end
-
- my_method('a' => 1, b: 2) # prints: {'a'=>1, :b=>2}
-
-If too many positional arguments are given an ArgumentError is raised.
-
-=== Default Positional Arguments
-
-When the method defines default arguments you do not need to supply all the
-arguments to the method. Ruby will fill in the missing arguments in-order.
-
-First we'll cover the simple case where the default arguments appear on the
-right. Consider this method:
-
- def my_method(a, b, c = 3, d = 4)
- p [a, b, c, d]
- end
-
-Here +c+ and +d+ have default values which ruby will apply for you. If you
-send only two arguments to this method:
-
- my_method(1, 2)
-
-You will see ruby print <code>[1, 2, 3, 4]</code>.
-
-If you send three arguments:
-
- my_method(1, 2, 5)
-
-You will see ruby print <code>[1, 2, 5, 4]</code>
-
-Ruby fills in the missing arguments from left to right.
-
-Ruby allows default values to appear in the middle of positional arguments.
-Consider this more complicated method:
-
- def my_method(a, b = 2, c = 3, d)
- p [a, b, c, d]
- end
-
-Here +b+ and +c+ have default values. If you send only two arguments to this
-method:
-
- my_method(1, 4)
-
-You will see ruby print <code>[1, 2, 3, 4]</code>.
-
-If you send three arguments:
-
- my_method(1, 5, 6)
-
-You will see ruby print <code>[1, 5, 3, 6]</code>.
-
-Describing this in words gets complicated and confusing. I'll describe it
-in variables and values instead.
-
-First <code>1</code> is assigned to +a+, then <code>6</code> is assigned to
-+d+. This leaves only the arguments with default values. Since
-<code>5</code> has not been assigned to a value yet, it is given to +b+ and
-+c+ uses its default value of <code>3</code>.
-
-=== Keyword Arguments
-
-Keyword arguments follow any positional arguments and are separated by commas
-like positional arguments:
-
- my_method(positional1, keyword1: value1, keyword2: value2)
-
-Any keyword arguments not given will use the default value from the method
-definition. If a keyword argument is given that the method did not list an
-ArgumentError will be raised.
-
-=== Block Argument
-
-The block argument sends a closure from the calling scope to the method.
-
-The block argument is always last when sending a message to a method. A block
-is sent to a method using <code>do ... end</code> or <code>{ ... }</code>:
-
- my_method do
- # ...
- end
-
-or:
-
- my_method {
- # ...
- }
-
-<code>do end</code> has lower precedence than <code>{ }</code> so:
-
- method_1 method_2 {
- # ...
- }
-
-Sends the block to +method_2+ while:
-
- method_1 method_2 do
- # ...
- end
-
-Sends the block to +method_1+. Note that in the first case if parentheses are
-used the block is sent to +method_1+.
-
-A block will accept arguments from the method it was sent to. Arguments are
-defined similar to the way a method defines arguments. The block's arguments
-go in <code>| ... |</code> following the opening <code>do</code> or
-<code>{</code>:
-
- my_method do |argument1, argument2|
- # ...
- end
-
-==== Block Local Arguments
-
-You may also declare block-local arguments to a block using <code>;</code> in
-the block arguments list. Assigning to a block-local argument will not
-override local arguments outside the block in the caller's scope:
-
- def my_method
- yield self
- end
-
- place = "world"
-
- my_method do |obj; place|
- place = "block"
- puts "hello #{obj} this is #{place}"
- end
-
- puts "place is: #{place}"
-
-This prints:
-
- hello main this is block
- place is world
-
-So the +place+ variable in the block is not the same +place+ variable as
-outside the block. Removing <code>; place</code> from the block arguments
-gives this result:
-
- hello main this is block
- place is block
-
-=== Array to Arguments Conversion
-
-Given the following method:
-
- def my_method(argument1, argument2, argument3)
- end
-
-You can turn an Array into an argument list with <code>*</code> (or splat)
-operator:
-
- arguments = [1, 2, 3]
- my_method(*arguments)
-
-or:
-
- arguments = [2, 3]
- my_method(1, *arguments)
-
-Both are equivalent to:
-
- my_method(1, 2, 3)
-
-If the method accepts keyword arguments the splat operator will convert a hash
-at the end of the array into keyword arguments:
-
- def my_method(a, b, c: 3)
- end
-
- arguments = [1, 2, { c: 4 }]
- my_method(*arguments)
-
-You may also use the <code>**</code> (described next) to convert a Hash into
-keyword arguments.
-
-If the number of objects in the Array do not match the number of arguments for
-the method an ArgumentError will be raised.
-
-If the splat operator comes first in the call, parentheses must be used to
-avoid a warning.
-
-=== Hash to Keyword Arguments Conversion
-
-Given the following method:
-
- def my_method(first: 1, second: 2, third: 3)
- end
-
-You can turn a Hash into keyword arguments with the <code>**</code> operator:
-
- arguments = { first: 3, second: 4, third: 5 }
- my_method(**arguments)
-
-or:
-
- arguments = { first: 3, second: 4 }
- my_method(third: 5, **arguments)
-
-Both are equivalent to:
-
- my_method(first: 3, second: 4, third: 5)
-
-If the method definition uses <code>**</code> to gather arbitrary keyword
-arguments they will not be gathered by <code>*</code>:
-
- def my_method(*a, **kw)
- p arguments: a, keywords: kw
- end
-
- my_method(1, 2, '3' => 4, five: 6)
-
-Prints:
-
- {:arguments=>[1, 2], :keywords=>{"3"=>4, :five=>6}}
-
-Unlike the splat operator described above the <code>**</code> operator has no
-commonly recognized name.
-
-=== Proc to Block Conversion
-
-Given a method that use a block:
-
- def my_method
- yield self
- end
-
-You can convert a proc or lambda to a block argument with the <code>&</code>
-operator:
-
- argument = proc { |a| puts "#{a.inspect} was yielded" }
-
- my_method(&argument)
-
-If the splat operator comes first in the call, parenthesis must be used to
-avoid a warning.
-
-Unlike the splat operator described above the <code>&</code> operator has no
-commonly recognized name.
-
-== Method Lookup
-
-When you send a message Ruby looks up the method that matches the name of the
-message for the receiver. Methods are stored in classes and modules so method
-lookup walks these, not the objects themselves.
-
-Here is the order of method lookup for the receiver's class or module +R+:
-
-* The prepended modules of +R+ in reverse order
-* For a matching method in +R+
-* The included modules of +R+ in reverse order
-
-If +R+ is a class with a superclass, this is repeated with +R+'s superclass
-until a method is found.
-
-Once a match is found method lookup stops.
-
-If no match is found this repeats from the beginning, but looking for
-+method_missing+. The default +method_missing+ is BasicObject#method_missing
-which raises a NameError when invoked.
-
-If refinements (an experimental feature) are active the method lookup changes.
-See the {refinements documentation}[rdoc-ref:syntax/refinements.rdoc] for
-details.
-
diff --git a/doc/syntax/control_expressions.rdoc b/doc/syntax/control_expressions.rdoc
deleted file mode 100644
index 0efc1668ad..0000000000
--- a/doc/syntax/control_expressions.rdoc
+++ /dev/null
@@ -1,500 +0,0 @@
-= Control Expressions
-
-Ruby has a variety of ways to control execution. All the expressions described
-here return a value.
-
-For the tests in these control expressions, +nil+ and +false+ are false-values
-and +true+ and any other object are true-values. In this document "true" will
-mean "true-value" and "false" will mean "false-value".
-
-== +if+ Expression
-
-The simplest +if+ expression has two parts, a "test" expression and a "then"
-expression. If the "test" expression evaluates to a true then the "then"
-expression is evaluated.
-
-Here is a simple if statement:
-
- if true then
- puts "the test resulted in a true-value"
- end
-
-This will print "the test resulted in a true-value".
-
-The +then+ is optional:
-
- if true
- puts "the test resulted in a true-value"
- end
-
-This document will omit the optional +then+ for all expressions as that is the
-most common usage of +if+.
-
-You may also add an +else+ expression. If the test does not evaluate to true
-the +else+ expression will be executed:
-
- if false
- puts "the test resulted in a true-value"
- else
- puts "the test resulted in a false-value"
- end
-
-This will print "the test resulted in a false-value".
-
-You may add an arbitrary number of extra tests to an if expression using
-+elsif+. An +elsif+ executes when all tests above the +elsif+ are false.
-
- a = 1
-
- if a == 0
- puts "a is zero"
- elsif a == 1
- puts "a is one"
- else
- puts "a is some other value"
- end
-
-This will print "a is one" as <code>1</code> is not equal to <code>0</code>.
-Since +else+ is only executed when there are no matching conditions.
-
-Once a condition matches, either the +if+ condition or any +elsif+ condition,
-the +if+ expression is complete and no further tests will be performed.
-
-Like an +if+, an +elsif+ condition may be followed by a +then+.
-
-In this example only "a is one" is printed:
-
- a = 1
-
- if a == 0
- puts "a is zero"
- elsif a == 1
- puts "a is one"
- elsif a >= 1
- puts "a is greater than or equal to one"
- else
- puts "a is some other value"
- end
-
-The tests for +if+ and +elsif+ may have side-effects. The most common use of
-side-effect is to cache a value into a local variable:
-
- if a = object.some_value
- # do something to a
- end
-
-The result value of an +if+ expression is the last value executed in the
-expression.
-
-== Ternary if
-
-You may also write a if-then-else expression using <code>?</code> and
-<code>:</code>. This ternary if:
-
- input_type = gets =~ /hello/i ? "greeting" : "other"
-
-Is the same as this +if+ expression:
-
- input_type =
- if gets =~ /hello/i
- "greeting"
- else
- "other"
- end
-
-While the ternary if is much shorter to write than the more verbose form, for
-readability it is recommended that the ternary if is only used for simple
-conditionals. Also, avoid using multiple ternary conditions in the same
-expression as this can be confusing.
-
-== +unless+ Expression
-
-The +unless+ expression is the opposite of the +if+ expression. If the value
-is false the "then" expression is executed:
-
- unless true
- puts "the value is a false-value"
- end
-
-This prints nothing as true is not a false-value.
-
-You may use an optional +then+ with +unless+ just like +if+.
-
-Note that the above +unless+ expression is the same as:
-
- if not true
- puts "the value is a false-value"
- end
-
-Like an +if+ expression you may use an +else+ condition with +unless+:
-
- unless true
- puts "the value is false"
- else
- puts "the value is true"
- end
-
-This prints "the value is true" from the +else+ condition.
-
-You may not use +elsif+ with an +unless+ expression.
-
-The result value of an +unless+ expression is the last value executed in the
-expression.
-
-== Modifier +if+ and +unless+
-
-+if+ and +unless+ can also be used to modify an expression. When used as a
-modifier the left-hand side is the "then" expression and the right-hand side
-is the "test" expression:
-
- a = 0
-
- a += 1 if a.zero?
-
- p a
-
-This will print 1.
-
- a = 0
-
- a += 1 unless a.zero?
-
- p a
-
-This will print 0.
-
-While the modifier and standard versions have both a "test" expression and a
-"then" expression, they are not exact transformations of each other due to
-parse order. Here is an example that shows the difference:
-
- p a if a = 0.zero?
-
-This raises the NameError "undefined local variable or method `a'".
-
-When ruby parses this expression it first encounters +a+ as a method call in
-the "then" expression, then later it sees the assignment to +a+ in the "test"
-expression and marks +a+ as a local variable.
-
-When running this line it first executes the "test" expression, <code>a =
-0.zero?</code>.
-
-Since the test is true it executes the "then" expression, <code>p a</code>.
-Since the +a+ in the body was recorded as a method which does not exist the
-NameError is raised.
-
-The same is true for +unless+.
-
-== +case+ Expression
-
-The +case+ expression can be used in two ways.
-
-The most common way is to compare an object against multiple patterns. The
-patterns are matched using the +===+ method which is aliased to +==+ on
-Object. Other classes must override it to give meaningful behavior. See
-Module#=== and Regexp#=== for examples.
-
-Here is an example of using +case+ to compare a String against a pattern:
-
- case "12345"
- when /^1/
- puts "the string starts with one"
- else
- puts "I don't know what the string starts with"
- end
-
-Here the string <code>"12345"</code> is compared with <code>/^1/</code> by
-calling <code>/^1/ === "12345"</code> which returns +true+. Like the +if+
-expression the first +when+ that matches is executed and all other matches are
-ignored.
-
-If no matches are found the +else+ is executed.
-
-The +else+ and +then+ are optional, this +case+ expression gives the same
-result as the one above:
-
- case "12345"
- when /^1/
- puts "the string starts with one"
- end
-
-You may place multiple conditions on the same +when+:
-
- case "2"
- when /^1/, "2"
- puts "the string starts with one or is '2'"
- end
-
-Ruby will try each condition in turn, so first <code>/^1/ === "2"</code>
-returns +false+, then <code>"2" === "2"</code> returns +true+, so "the string
-starts with one or is '2'" is printed.
-
-You may use +then+ after the +when+ condition. This is most frequently used
-to place the body of the +when+ on a single line.
-
- case a
- when 1, 2 then puts "a is one or two
- when 3 then puts "a is three"
- else puts "I don't know what a is"
- end
-
-The other way to use a +case+ expression is like an if-elsif expression:
-
- a = 2
-
- case
- when a == 1, a == 2
- puts "a is one or two"
- when a == 3
- puts "a is three"
- else
- puts "I don't know what a is"
- end
-
-Again, the +then+ and +else+ are optional.
-
-The result value of a +case+ expression is the last value executed in the
-expression.
-
-== +while+ Loop
-
-The +while+ loop executes while a condition is true:
-
- a = 0
-
- while a < 10 do
- p a
- a += 1
- end
-
- p a
-
-Prints the numbers 0 through 10. The condition <code>a < 10</code> is checked
-before the loop is entered, then the body executes, then the condition is
-checked again. When the condition results in false the loop is terminated.
-
-The +do+ keyword is optional. The following loop is equivalent to the loop
-above:
-
- while a < 10
- p a
- a += 1
- end
-
-The result of a +while+ loop is +nil+ unless +break+ is used to supply a
-value.
-
-== +until+ Loop
-
-The +until+ loop executes while a condition is false:
-
- a = 0
-
- until a > 10 do
- p a
- a += 1
- end
-
- p a
-
-This prints the numbers 0 through 11. Like a while loop the condition <code>a
-> 10</code> is checked when entering the loop and each time the loop body
-executes. If the condition is false the loop will continue to execute.
-
-Like a +while+ loop the +do+ is optional.
-
-Like a +while+ loop the result of an +until+ loop is nil unless +break+ is
-used.
-
-== +for+ Loop
-
-The +for+ loop consists of +for+ followed by a variable to contain the
-iteration argument followed by +in+ and the value to iterate over using #each.
-The +do+ is optional:
-
- for value in [1, 2, 3] do
- puts value
- end
-
-Prints 1, 2 and 3.
-
-Like +while+ and +until+, the +do+ is optional.
-
-The +for+ loop is similar to using #each, but does not create a new variable
-scope.
-
-The result value of a +for+ loop is the value iterated over unless +break+ is
-used.
-
-The +for+ loop is rarely used in modern ruby programs.
-
-== Modifier +while+ and +until+
-
-Like +if+ and +unless+, +while+ and +until+ can be used as modifiers:
-
- a = 0
-
- a += 1 while a < 10
-
- p a # prints 10
-
-+until+ used as a modifier:
-
- a = 0
-
- a += 1 until a > 10
-
- p a # prints 11
-
-You can use +begin+ and +end+ to create a +while+ loop that runs the body once
-before the condition:
-
- a = 0
-
- begin
- a += 1
- end while a < 10
-
- p a # prints 10
-
-If you don't use +rescue+ or +ensure+ Ruby optimizes away any exception
-handling overhead.
-
-== +break+ Statement
-
-Use +break+ to leave a block early. This will stop iterating over the items in +values+ if one of them is even:
-
- values.each do |value|
- break if value.even?
-
- # ...
- end
-
-You can also terminate from a +while+ loop using +break+:
-
- a = 0
-
- while true do
- p a
- a += 1
-
- break if a < 10
- end
-
- p a
-
-This prints the numbers 0 and 1.
-
-+break+ accepts a value that supplies the result of the expression it is
-"breaking" out of:
-
- result = [1, 2, 3].each do |value|
- break value * 2 if value.even?
- end
-
- p result # prints 4
-
-== +next+ Statement
-
-Use +next+ to skip the rest of the current iteration:
-
- result = [1, 2, 3].map do |value|
- next if value.even?
-
- value * 2
- end
-
- p result # prints [2, nil, 6]
-
-+next+ accepts an argument that can be used the result of the current block
-iteration:
-
- result = [1, 2, 3].map do |value|
- next value if value.even?
-
- value * 2
- end
-
- p result # prints [2, 2, 6]
-
-== +redo+ Statement
-
-Use +redo+ to redo the current iteration:
-
- result = []
-
- while result.length < 10 do
- result << result.length
-
- redo if result.last.even?
-
- result << result.length + 1
- end
-
- p result
-
-This prints [0, 1, 3, 3, 5, 5, 7, 7, 9, 9, 11]
-
-In Ruby 1.8 you could also use +retry+ where you used +redo+. This is no
-longer true, now you will receive a SyntaxError when you use +retry+ outside
-of a +rescue+ block. See {Exceptions}[rdoc-ref:syntax/exceptions.rdoc]
-for proper usage of +retry+.
-
-== Flip-Flop
-
-The flip-flop is rarely seen conditional expression. It's primary use is
-for processing text from ruby one-line programs used with <code>ruby -n</code>
-or <code>ruby -p</code>.
-
-The form of the flip-flop is an expression that indicates when the
-flip-flop turns on, <code>..</code> (or <code>...</code>), then an expression
-that indicates when the flip-flop will turn off. While the flip-flop is on it
-will continue to evaluate to +true+, and +false+ when off.
-
-Here is an example:
-
-
- selected = []
-
- 0.upto 10 do |value|
- selected << value if value==2..value==8
- end
-
- p selected # prints [2, 3, 4, 5, 6, 7, 8]
-
-In the above example the on condition is <code>n==2</code>. The flip-flop
-is initially off (false) for 0 and 1, but becomes on (true) for 2 and remains
-on through 8. After 8 it turns off and remains off for 9 and 10.
-
-The flip-flop must be used inside a conditional such as +if+, +while+,
-+unless+, +until+ etc. including the modifier forms.
-
-When you use an inclusive range (<code>..</code>) the off condition is
-evaluated when the on condition changes:
-
- selected = []
-
- 0.upto 5 do |value|
- selected << value if value==2..value==2
- end
-
- p selected # prints [2]
-
-Here both sides of the flip-flop are evaluated so the flip-flop turns on and
-off only when +value+ equals 2. Since the flip-flop turned on in the
-iteration it returns true.
-
-When you use an exclusive range (<code>...</code>) the off condition is
-evaluated on the following iteration:
-
- selected = []
-
- 0.upto 5 do |value|
- selected << value if value==2...value==2
- end
-
- p selected # prints [2, 3, 4, 5]
-
-Here the flip-flop turns on when +value+ equals 2 but doesn't turn off on the
-same iteration. The off condition isn't evaluated until the following
-iteration and +value+ will never be two again.
-
diff --git a/doc/syntax/exceptions.rdoc b/doc/syntax/exceptions.rdoc
deleted file mode 100644
index 0efc35a59f..0000000000
--- a/doc/syntax/exceptions.rdoc
+++ /dev/null
@@ -1,96 +0,0 @@
-= Exception Handling
-
-Exceptions are rescued in a +begin+/+end+ block:
-
- begin
- # code that might raise
- rescue
- # handle exception
- end
-
-If you are inside a method you do not need to use +begin+ or +end+ unless you
-wish to limit the scope of rescued exceptions:
-
- def my_method
- # ...
- rescue
- # ...
- end
-
-The same is true for a +class+ or +module+.
-
-You can assign the exception to a local variable by using <tt>=>
-variable_name</tt> at the end of the +rescue+ line:
-
- begin
- # ...
- rescue => exception
- warn exception.message
- raise # re-raise the current exception
- end
-
-By default StandardError and its subclasses are rescued. You can rescue a
-specific set of exception classes (and their subclasses) by listing them after
-+rescue+:
-
- begin
- # ...
- rescue ArgumentError, NameError
- # handle ArgumentError or NameError
- end
-
-You may rescue different types of exceptions in different ways:
-
- begin
- # ...
- rescue ArgumentError
- # handle ArgumentError
- rescue NameError
- # handle NameError
- rescue
- # handle any StandardError
- end
-
-The exception is matched to the rescue section starting at the top, and matches
-only once. If an ArgumentError is raised in the begin section it will not be
-handled in the StandardError section.
-
-You may retry rescued exceptions:
-
- begin
- # ...
- rescue
- # do something that may change the result of the begin block
- retry
- end
-
-Execution will resume at the start of the begin block, so be careful not to
-create an infinite loop.
-
-Inside a rescue block is the only valid location for +retry+, all other uses
-will raise a SyntaxError. If you wish to retry a block iteration use +redo+.
-See {Control Expressions}[rdoc-ref:syntax/control_expressions.rdoc] for
-details.
-
-To always run some code whether an exception was raised or not, use +ensure+:
-
- begin
- # ...
- rescue
- # ...
- ensure
- # this always runs
- end
-
-You may also run some code when an exception is not raised:
-
- begin
- # ...
- rescue
- # ...
- else
- # this runs only when no exception was raised
- ensure
- # ...
- end
-
diff --git a/doc/syntax/literals.rdoc b/doc/syntax/literals.rdoc
deleted file mode 100644
index bfe070b0ab..0000000000
--- a/doc/syntax/literals.rdoc
+++ /dev/null
@@ -1,295 +0,0 @@
-= Literals
-
-Literals create objects you can use in your program. Literals include:
-
-* Booleans and nil
-* Numbers
-* Strings
-* Symbols
-* Arrays
-* Hashes
-* Ranges
-* Regular Expressions
-* Procs
-
-== Booleans and nil
-
-+nil+ and +false+ are both false values. +nil+ is sometimes used to indicate
-"no value" or "unknown" but evaluates to +false+ in conditional expressions.
-
-+true+ is a true value. All objects except +nil+ and +false+ evaluate to a
-true value in conditional expressions.
-
-(There are also the constants +TRUE+, +FALSE+ and +NIL+, but the lowercase
-literal forms are preferred.)
-
-== Numbers
-
-You can write integers of any size as follows:
-
- 1234
- 1_234
-
-These numbers have the same value, 1,234. The underscore may be used to
-enhance readability for humans. You may place an underscore anywhere in the
-number.
-
-Floating point numbers may be written as follows:
-
- 12.34
- 1234e-2
- 1.234E1
-
-These numbers have the same value, 12.34. You may use underscores in floating
-point numbers as well.
-
-You can use a special prefix to write numbers in decimal, hexadecimal, octal
-or binary formats. For decimal numbers use a prefix of <tt>0d</tt>, for
-hexadecimal numbers use a prefix of <tt>0x</tt>, for octal numbers use a
-prefix of <tt>0</tt> or <tt>0o</tt>, for binary numbers use a prefix of
-<tt>0b</tt>. The alphabetic component of the number is not case-sensitive.
-
-Examples:
-
- 0d170
- 0D170
-
- 0xaa
- 0xAa
- 0xAA
- 0Xaa
- 0XAa
- 0XaA
-
- 0252
- 0o252
- 0O252
-
- 0b10101010
- 0B10101010
-
-All these numbers have the same decimal value, 170. Like integers and floats
-you may use an underscore for readability.
-
-== Strings
-
-The most common way of writing strings is using <tt>"</tt>:
-
- "This is a string."
-
-The string may be many lines long.
-
-Any internal <tt>"</tt> must be escaped:
-
- "This string has a quote: \". As you can see, it is escaped"
-
-Double-quote strings allow escaped characters such as <tt>\n</tt> for newline,
-<tt>\t</tt> for tab, etc.
-
-Double-quote strings allow interpolation of other values using
-<tt>#{...}</tt>:
-
- "One plus one is two: #{1 + 1}"
-
-Any expression may be placed inside the interpolated section, but it's best to
-keep the expression small for readability.
-
-Interpolation may be disabled by escaping the "#" character or using
-single-quote strings:
-
- '#{1 + 1}' #=> "\#{1 + 1}"
-
-In addition to disabling interpolation, single-quoted strings also disable all
-escape sequences except for the single-quote (<tt>\'</tt>).
-
-You may also create strings using <tt>%</tt>:
-
- %(1 + 1 is #{1 + 1}) #=> "1 + 1 is 2"
-
-There are two different types of <tt>%</tt> strings <tt>%q(...)</tt> behaves
-like a single-quote string (no interpolation or character escaping) while
-<tt>%Q</tt> behaves as a double-quote string. See Percent Strings below for
-more discussion of the syntax of percent strings.
-
-=== Here Documents
-
-If you are writing a large block of text you may use a "here document" or
-"heredoc":
-
- expected_result = <<HEREDOC
- This would contain specially formatted text.
-
- That might span many lines
- HEREDOC
-
-The heredoc starts on the line following <tt><<HEREDOC</tt> and ends with the
-next line that starts with <tt>HEREDOC</tt>. The result includes the ending
-newline.
-
-You may use any identifier with a heredoc, but all-uppercase identifiers are
-typically used.
-
-You may indent the ending identifier if you place a "-" after <tt><<</tt>:
-
- expected_result = <<-INDENTED_HEREDOC
- This would contain specially formatted text.
-
- That might span many lines
- INDENTED_HEREDOC
-
-Note that the while the closing identifier may be indented, the content is
-always treated as if it is flush left. If you indent the content those spaces
-will appear in the output.
-
-A heredoc allows interpolation and escaped characters. You may disable
-interpolation and escaping by surrounding the opening identifier with single
-quotes:
-
- expected_result = <<-'EXPECTED'
- One plus one is #{1 + 1}
- EXPECTED
-
- p expected_result # prints: "One plus one is \#{1 + 1}\n"
-
-The identifier may also be surrounded with double quotes (which is the same as
-no quotes) or with backticks. When surrounded by backticks the HEREDOC
-behaves like Kernel#`:
-
- puts <<-`HEREDOC`
- cat #{__FILE__}
- HEREDOC
-
-To call a method on a heredoc place it after the opening identifier:
-
- expected_result = <<-EXPECTED.chomp
- One plus one is #{1 + 1}
- EXPECTED
-
-You may open multiple heredocs on the same line, but this can be difficult to
-read:
-
- puts(<<-ONE, <<-TWO)
- content for heredoc one
- ONE
- content for heredoc two
- TWO
-
-== Symbols
-
-A Symbol represents a name inside the ruby interpreter. See Symbol for more
-details on what symbols are and when ruby creates them internally.
-
-You may reference a symbol using a colon: <tt>:my_symbol</tt>.
-
-You may also create symbols by interpolation:
-
- :"my_symbol1"
- :"my_symbol#{1 + 1}"
-
-Note that symbols are never garbage collected so be careful when referencing
-symbols using interpolation.
-
-Like strings, a single-quote may be used to disable interpolation:
-
- :"my_symbol#{1 + 1}" #=> :"my_symbol\#{1 + 1}"
-
-When creating a Hash there is a special syntax for referencing a Symbol as
-well.
-
-== Arrays
-
-An array is created using the objects between <tt>[</tt> and <tt>]</tt>:
-
- [1, 2, 3]
-
-You may place expressions inside the array:
-
- [1, 1 + 1, 1 + 2]
- [1, [1 + 1, [1 + 2]]]
-
-See Array for the methods you may use with an array.
-
-== Hashes
-
-A hash is created using key-value pairs between <tt>{</tt> and <tt>}</tt>:
-
- { "a" => 1, "b" => 2 }
-
-Both the key and value may be any object.
-
-You can create a hash using symbol keys with the following syntax:
-
- { a: 1, b: 2 }
-
-This same syntax is used for keyword arguments for a method.
-
-See Hash for the methods you may use with a hash.
-
-== Ranges
-
-A range represents an interval of values. The range may include or exclude
-its ending value.
-
- (1..2) # includes its ending value
- (1...2) # excludes its ending value
-
-You may create a range of any object. See the Range documentation for details
-on the methods you need to implement.
-
-== Regular Expressions
-
-A regular expression is created using "/":
-
- /my regular expression/
-
-The regular expression may be followed by flags which adjust the matching
-behavior of the regular expression. The "i" flag makes the regular expression
-case-insensitive:
-
- /my regular expression/i
-
-Interpolation may be used inside regular expressions along with escaped
-characters. Note that a regular expression may require additional escaped
-characters than a string.
-
-See Regexp for a description of the syntax of regular expressions.
-
-== Procs
-
-A proc can be created with <tt>-></tt>:
-
- -> { 1 + 1 }
-
-Calling the above proc will give a result of <tt>2</tt>.
-
-You can require arguments for the proc as follows:
-
- ->(v) { 1 + v }
-
-This proc will add one to its argument.
-
-== Percent Strings
-
-Besides <tt>%(...)</tt> which creates a String, The <tt>%</tt> may create
-other types of object. As with strings, an uppercase letter allows
-interpolation and escaped characters while a lowercase letter disables them.
-
-These are the types of percent strings in ruby:
-
-<tt>%i</tt> :: Array of Symbols
-<tt>%q</tt> :: String
-<tt>%r</tt> :: Regular Expression
-<tt>%s</tt> :: Symbol
-<tt>%w</tt> :: Array of Strings
-<tt>%x</tt> :: Backtick (capture subshell result)
-
-For the two array forms of percent string, if you wish to include a space in
-one of the array entries you must escape it with a "\\" character:
-
- %w[one one-hundred\ one]
- #=> ["one", "one-hundred one"]
-
-If you are using "(", "[", "{", "<" you must close it with ")", "]", "}", ">"
-respectively. You may use most other non-alphanumeric characters for percent
-string delimiters such as "%", "|", "^", etc.
-
diff --git a/doc/syntax/methods.rdoc b/doc/syntax/methods.rdoc
deleted file mode 100644
index 7fd69983f3..0000000000
--- a/doc/syntax/methods.rdoc
+++ /dev/null
@@ -1,414 +0,0 @@
-= Methods
-
-Methods implement the functionality of your program. Here is a simple method
-definition:
-
- def one_plus_one
- 1 + 1
- end
-
-A method definition consists of the +def+ keyword, a method name, the body of
-the method, then the +end+ keyword. When called the method will execute the
-body of the method. This method returns +2+.
-
-This section only covers defining methods. See also the {syntax documentation
-on calling methods}[rdoc-ref:syntax/calling_methods.rdoc].
-
-== Method Names
-
-Method names may be one of the operators or must start a letter or a character
-with the eight bit set. Typically method names are US-ASCII compatible since
-the keys to type them exist on all keyboards.
-
-(Ruby programs must be written in a US-ASCII-compatible character set. In
-such character sets if the eight bit is set it indicates an extended
-character. Ruby allows method names and other identifiers to contain such
-characters.)
-
-Method names may contain letters, numbers, an <code>_</code> (underscore or
-low line) or a character with the eight bit set.
-
-Method names may end with a <code>!</code> (bang or exclamation mark), a
-<code>?</code> (question mark) or <code>=</code> equals sign.
-
-In the ruby core library when a method ends with a bang it indicates there is
-a non-bang method that has does not modify the receiver. This is typically
-true for the standard library but does not hold true for other ruby libraries.
-
-Methods that end with a question mark do not always return just +true+ or
-+false+. Often they will may return an object to indicate a true value (or
-"truthy" value).
-
-Methods that end with an equals sign indicate an assignment method. For
-assignment methods the return value is ignored, the arguments are returned
-instead.
-
-These are method names for the various ruby operators. Each of these
-operators accept only one argument. Following the operator is the typical
-use or name of the operator. Creating an alternate meaning for the operator
-may lead to confusion as the user expects plus to add things, minus to
-subtract things, etc. Additionally, you cannot alter the precedence of the
-operators.
-
-<code>+</code> :: add
-<code>-</code> :: subtract
-<code>*</code> :: multiply
-<code>**</code> :: power
-<code>/</code> :: divide
-<code>%</code> :: modulus division, String#%
-<code>&</code> :: AND
-<code>^</code> :: XOR (exclusive OR)
-<code>>></code> :: right-shift
-<code><<</code> :: left-shift, append
-<code>==</code> :: equal
-<code>!=</code> :: not equal
-<code>===</code> :: case equality. See Object#===
-<code>=~</code> :: pattern match. (Not just for regular expressions)
-<code>!~</code> :: does not match
-<code><=></code> :: comparison aka spaceship operator. See Comparable
-<code><</code> :: less-than
-<code><=</code> :: less-than or equal
-<code>></code> :: greater-than
-<code>>=</code> :: greater-than or equal
-
-To define unary methods minus, plus, tilde and not (<code>!</code>) follow the
-operator with an <code>@</code> as in <code>+@</code> or <code>!@</code>:
-
- class C
- def -@
- puts "you inverted this object"
- end
- end
-
- obj = C.new
-
- -obj # prints "you inverted this object"
-
-Unary methods accept zero arguments.
-
-== Return Values
-
-By default, a method returns the last expression that was evaluated in the body
-of the method. In the example above, the last (and only) expression evaluated
-was the simple sum <code>1 + 1</code>. The +return+ keyword can be used to
-make it explicit that a method returns a value.
-
- def one_plus_one
- return 1 + 1
- end
-
-It can also be used to make a method return before the last expression is
-evaluated.
-
- def two_plus_two
- return 2 + 2
- 1 + 1 # this expression is never evaluated
- end
-
-Note that for assignment methods the return value will always be ignored.
-Instead the argument will be returned:
-
- def a=(value)
- return 1 + value
- end
-
- p(a = 5) # prints 5
-
-== Scope
-
-The standard syntax to define a method:
-
- def my_method
- # ...
- end
-
-adds the method to a class. You can define an instance method on a specific
-class with the +class+ keyword:
-
- class C
- def my_method
- # ...
- end
- end
-
-A method may be defined on another object. You may define a "class method" (a
-method that is defined on the class, not an instance of the class) like this:
-
- class C
- def self.my_method
- # ...
- end
- end
-
-However, this is simply a special case of a greater syntactical power in Ruby,
-the ability to add methods to any object. Classes are objects, so adding
-class methods is simply adding methods to the Class object.
-
-The syntax for adding a method to an object is as follows:
-
- greeting = "Hello"
-
- def greeting.broaden
- self + ", world!"
- end
-
- greeting.broaden # returns "Hello, world!"
-
-+self+ is a keyword referring to the current object under consideration
-by the compiler, which might make the use of +self+ in defining a class
-method above a little clearer. Indeed, the example of adding a +hello+
-method to the class +String+ can be rewritten thus:
-
- def String.hello
- "Hello, world!"
- end
-
-A method defined like this is called a "singleton method". +broaden+ will only
-exist on the string instance +greeting+. Other strings will not have +broaden+.
-
-== Overriding
-
-When Ruby encounters the +def+ keyword, it doesn't consider it an error if the
-method already exists: it simply redefines it. This is called
-_overriding_. Rather like extending core classes, this is a potentially
-dangerous ability, and should be used sparingly because it can cause unexpected
-results. For example, consider this irb session:
-
- >> "43".to_i
- => 43
- >> class String
- >> def to_i
- >> 42
- >> end
- >> end
- => nil
- >> "43".to_i
- => 42
-
-This will effectively sabotage any code which makes use of the method
-<code>String#to_i</code> to parse numbers from strings.
-
-== Arguments
-
-A method may accept arguments. The argument list follows the method name:
-
- def add_one(value)
- value + 1
- end
-
-When called, the user of the +add_one+ method must provide an argument. The
-argument is a local variable in the method body. The method will then add one
-to this argument and return the value. If given +1+ this method will
-return +2+.
-
-The parentheses around the arguments are optional:
-
- def add_one value
- value + 1
- end
-
-Multiple arguments are separated by a comma:
-
- def add_values(a, b)
- a + b
- end
-
-When called, the arguments must be provided in the exact order. In other
-words, the arguments are positional.
-
-=== Default Values
-
-Arguments may have default values:
-
- def add_values(a, b = 1)
- a + b
- end
-
-The default value does not need to appear first, but arguments with defaults
-must be grouped together. This is ok:
-
- def add_values(a = 1, b = 2, c)
- a + b + c
- end
-
-This will raise a SyntaxError:
-
- def add_values(a = 1, b, c = 1)
- a + b + c
- end
-
-=== Array Decomposition
-
-You can decompose (unpack or extract values from) an Array using extra
-parentheses in the arguments:
-
- def my_method((a, b))
- p a: a, b: b
- end
-
- my_method([1, 2])
-
-This prints:
-
- {:a=>1, :b=>2}
-
-If the argument has extra elements in the Array they will be ignored:
-
- def my_method((a, b))
- p a: a, b: b
- end
-
- my_method([1, 2, 3])
-
-This has the same output as above.
-
-You can use a <code>*</code> to collect the remaining arguments. This splits
-an Array into a first element and the rest:
-
- def my_method((a, *b))
- p a: a, b: b
- end
-
- my_method([1, 2, 3])
-
-This prints:
-
- {:a=>1, :b=>[2, 3]}
-
-The argument will be decomposed if it responds to #to_ary. You should only
-define #to_ary if you can use your object in place of an Array.
-
-Use of the inner parentheses only uses one of the sent arguments. If the
-argument is not an Array it will be assigned to the first argument in the
-decomposition and the remaining arguments in the decomposition will be +nil+:
-
- def my_method(a, (b, c), d)
- p a: a, b: b, c: c, d: d
- end
-
- my_method(1, 2, 3)
-
-This prints:
-
- {:a=>1, :b=>2, :c=>nil, :d=>3}
-
-You can nest decomposition arbitrarily:
-
- def my_method(((a, b), c))
- # ...
- end
-
-=== Array/Hash Argument
-
-Prefixing an argument with <code>*</code> causes any remaining arguments to be
-converted to an Array:
-
- def gather_arguments(*arguments)
- p arguments
- end
-
- gather_arguments 1, 2, 3 # prints [1, 2, 3]
-
-The array argument must be the last positional argument, it must appear before
-any keyword arguments.
-
-The array argument will capture a Hash as the last entry if a hash was sent by
-the caller after all positional arguments.
-
- gather_arguments 1, a: 2 # prints [1, {:a=>2}]
-
-However, this only occurs if the method does not declare any keyword arguments.
-
- def gather_arguments_keyword(*positional, keyword: nil)
- p positional: positional, keyword: keyword
- end
-
- gather_arguments_keyword 1, 2, three: 3
- #=> raises: unknown keyword: three (ArgumentError)
-
-Also, note that a bare <code>*</code> can be used to ignore arguments:
-
- def ignore_arguments(*)
- end
-
-=== Keyword Arguments
-
-Keyword arguments are similar to positional arguments with default values:
-
- def add_values(first: 1, second: 2)
- first + second
- end
-
-Arbitrary keyword arguments will be accepted with <code>**</code>:
-
- def gather_arguments(first: nil, **rest)
- p first, rest
- end
-
- gather_arguments first: 1, second: 2, third: 3
- # prints 1 then {:second=>2, :third=>3}
-
-When calling a method with keyword arguments the arguments may appear in any
-order. If an unknown keyword argument is sent by the caller an ArgumentError
-is raised.
-
-When mixing keyword arguments and positional arguments, all positional
-arguments must appear before any keyword arguments.
-
-== Block Argument
-
-The block argument is indicated by <code>&</code> and must come last:
-
- def my_method(&my_block)
- my_method.call(self)
- end
-
-Most frequently the block argument is used to pass a block to another method:
-
- def each_item(&block)
- @items.each(&block)
- end
-
-If you are only going to call the block and will not otherwise manipulate it
-or send it to another method using <code>yield</code> without an explicit
-block parameter is preferred. This method is equivalent to the first method
-in this section:
-
- def my_method
- yield self
- end
-
-There is also a performance benefit to using yield over a calling a block
-parameter. When a block argument is assigned to a variable a Proc object is
-created which holds the block. When using yield this Proc object is not
-created.
-
-If you only need to use the block sometimes you can use Proc.new to create a
-proc from the block that was passed to your method. See Proc.new for further
-details.
-
-== Exception Handling
-
-Methods have an implied exception handling block so you do not need to use
-+begin+ or +end+ to handle exceptions. This:
-
- def my_method
- begin
- # code that may raise an exception
- rescue
- # handle exception
- end
- end
-
-May be written as:
-
- def my_method
- # code that may raise an exception
- rescue
- # handle exception
- end
-
-If you wish to rescue an exception for only part of your method use +begin+ and
-+end+. For more details see the page on {exception
-handling}[rdoc-ref:syntax/exceptions.rdoc].
-
diff --git a/doc/syntax/miscellaneous.rdoc b/doc/syntax/miscellaneous.rdoc
deleted file mode 100644
index 8f424f019f..0000000000
--- a/doc/syntax/miscellaneous.rdoc
+++ /dev/null
@@ -1,107 +0,0 @@
-= Miscellaneous Syntax
-
-== Ending an Expression
-
-Ruby uses a newline as the end of an expression. When ending a line with an
-operator, open parentheses, comma, etc. the expression will continue.
-
-You can end an expression with a <code>;</code> (semicolon). Semicolons are
-most frequently used with <code>ruby -e</code>.
-
-== Indentation
-
-Ruby does not require any indentation. Typically ruby programs are indented
-two spaces.
-
-If you run ruby with warnings enabled and have an indentation mis-match you
-will receive a warning.
-
-== +alias+
-
-The +alias+ keyword is most frequently used to alias methods. When aliasing a
-method you can use either its name or a symbol:
-
- alias new_name old_name
- alias :new_name :old_name
-
-For methods, Module#alias_method can often be used instead of +alias+.
-
-You can also use +alias+ to alias global variables:
-
- $old = 0
-
- alias $new $old
-
- p $new # prints 0
-
-You may use +alias+ in any scope.
-
-== +undef+
-
-The +undef+ keyword prevents the current class from responding to calls to the
-named methods.
-
- undef my_method
-
-You may use symbols instead of method names:
-
- undef :my_method
-
-You may undef multiple methods:
-
- undef method1, method2
-
-You may use +undef+ in any scope. See also Module#undef_method
-
-== +defined?+
-
-+defined?+ is a keyword that returns a string describing its argument:
-
- p defined?(UNDEFINED_CONSTANT) # prints nil
- p defined?(RUBY_VERSION) # prints "constant"
- p defined?(1 + 1) # prints "method"
-
-You don't need to use parenthesis with +defined?+ but they are recommended due
-to the {low precedence}[rdoc-ref:syntax/precedence.rdoc] of +defined?+.
-
-For example, if you wish to check if an instance variable exists and that the
-instance variable is zero:
-
- defined? @instance_variable && @instance_variable.zero?
-
-This returns <code>"expression"</code> which is not what you want if the
-instance variable is not defined.
-
- @instance_variable = 1
- defined?(@instance_variable) && @instance_variable.zero?
-
-Adding parentheses when checking if the instance variable is defined is a
-better check. This correctly returns +nil+ when the instance variable is not
-defined and +false+ when the instance variable is not zero.
-
-Using the specific reflection methods such as instance_variable_defined? for
-instance variables or const_defined? for constants is less error prone than
-using +defined?+.
-
-== +BEGIN+ and +END+
-
-+BEGIN+ defines a block that is run before any other code in the current file.
-It is typically used in one-liners with <code>ruby -e</code>. Similarly +END+
-defines a block that is run after any other code.
-
-+BEGIN+ must appear at top-level and +END+ will issue a warning when you use it
-inside a method.
-
-Here is an example:
-
- BEGIN {
- count = 0
- }
-
-You must use <code>{</code> and <code>}</code> you may not use +do+ and +end+.
-
-Here is an example one-liner that adds numbers from standard input or any files
-in the argument list:
-
- ruby -ne 'BEGIN { count = 0 }; END { puts count }; count += gets.to_i'
-
diff --git a/doc/syntax/modules_and_classes.rdoc b/doc/syntax/modules_and_classes.rdoc
deleted file mode 100644
index f4ab1ea6f9..0000000000
--- a/doc/syntax/modules_and_classes.rdoc
+++ /dev/null
@@ -1,345 +0,0 @@
-= Modules
-
-Modules serve two purposes in Ruby, namespacing and mix-in functionality.
-
-A namespace can be used to organize code by package or functionality that
-separates common names from interference by other packages. For example, the
-Curses namespace provides functionality for curses that prevents a collision
-for the common name "Window".
-
-Mix-in functionality allows sharing common methods across multiple classes or
-modules. Ruby comes with the Enumerable mix-in module which provides many
-enumeration methods based on the +each+ method and Comparable allows comparison
-of objects based on the <code><=></code> comparison method.
-
-Note that there are many similarities between modules and classes. Besides the
-ability to mix-in a module, the description of modules below also applies to
-classes.
-
-== Module Definition
-
-A module is created using the +module+ keyword:
-
- module MyModule
- # ...
- end
-
-A module may be reopened any number of times to add, change or remove
-functionality:
-
- module MyModule
- def my_method
- end
- end
-
- module MyModule
- alias my_alias my_method
- end
-
- module MyModule
- remove_method :my_method
- end
-
-Reopening classes is a very powerful feature of Ruby, but it is best to only
-reopen classes you own. Reopening classes you do not own may lead to naming
-conflicts or difficult to diagnose bugs.
-
-== Nesting
-
-Modules may be nested:
-
- module Outer
- module Inner
- end
- end
-
-Many packages create a single outermost module (or class) to provide a
-namespace for their functionality.
-
-You may also define inner modules using <code>::</code> provided the outer
-modules (or classes) are already defined:
-
- module Outer::Inner::GrandChild
- end
-
-Note that this will raise a +NameError+ if +Outer+ and
-<code>Outer::Inner</code> are not already defined.
-
-This style has the benefit of allowing the author to reduce the amount
-of indentation. Instead of 3 levels of indentation only one is necessary.
-However, the scope of constant lookup is different for creating a namespace
-using this syntax instead of the more verbose syntax.
-
-== Scope
-
-=== +self+
-
-+self+ refers to the object that defines the current scope. +self+ will change
-when entering a different method or when defining a new module.
-
-=== Constants
-
-Accessible constants are different depending on the module nesting (which
-syntax was used to define the module). In the following example
-the constant <code>A::Z</code> is accessible from B as A is part of the
-nesting:
-
- module A
- Z = 1
-
- module B
- p Module.nesting #=> [A::B, A]
- p Z #=> 1
- end
- end
-
-However, if you use <code>::</code> to define <code>A::B</code> without
-nesting it inside +A+ a NameError exception will be raised because the nesting
-does not include +A+:
-
- module A
- Z = 1
- end
-
- module A::B
- p Module.nesting #=> [A::B]
- p Z #=> raises NameError
- end
-
-If a constant is defined at the top-level you may preceded it with
-<code>::</code> to reference it:
-
- Z = 0
-
- module A
- Z = 1
-
- module B
- p ::Z #=> 0
- end
- end
-
-=== Methods
-
-For method definition documentation see the {syntax documentation for
-methods}[rdoc-ref:syntax/methods.rdoc].
-
-Class methods may be called directly. (This is slightly confusing, but a
-method on a module is often called a "class method" instead of a "module
-method". See also Module#module_function which can convert an instance method
-into a class method.)
-
-When a class method references a constant it uses the same rules as referencing
-it outside the method as the scope is the same.
-
-Instance methods defined in a module are only callable when included. These
-methods have access to the constants defined when they were included through
-the ancestors list:
-
- module A
- Z = 1
-
- def z
- Z
- end
- end
-
- include A
-
- p self.class.ancestors #=> [Object, A, Kernel, BasicObject]
- p z #=> 1
-
-=== Visibility
-
-Ruby has three types of visibility. The default is +public+. A public method
-may be called from any other object.
-
-The second visibility is +protected+. When calling a protected method the
-sender must be a subclass of the receiver or the receiver must be a subclass of
-the sender. Otherwise a NoMethodError will be raised.
-
-Protected visibility is most frequently used to define <code>==</code> and
-other comparison methods where the author does not wish to expose an object's
-state to any caller and would like to restrict it only to inherited classes.
-
-Here is an example:
-
- class A
- def n(other)
- other.m
- end
- end
-
- class B < A
- def m
- 1
- end
-
- protected :m
-
- end
-
- class C < B
- end
-
- a = A.new
- b = B.new
- c = C.new
-
- c.n b #=> 1 -- C is a subclass of B
- b.n b #=> 1 -- m called on defining class
- a.n b # raises NoMethodError A is not a subclass of B
-
-The third visibility is +private+. A private method may not be called with a
-receiver, not even +self+. If a private method is called with a receiver a
-NoMethodError will be raised.
-
-=== +alias+ and +undef+
-
-You may also alias or undefine methods, but these operations are not
-restricted to modules or classes. See the {miscellaneous syntax
-section}[rdoc-ref:syntax/miscellaneous.rdoc] for documentation.
-
-= Classes
-
-Every class is also a module, but unlike modules a class may not be mixed-in to
-another module (or class). Like a module, a class can be used as a namespace.
-A class also inherits methods and constants from its superclass.
-
-== Defining a class
-
-Use the +class+ keyword to create a class:
-
- class MyClass
- # ...
- end
-
-If you do not supply a superclass your new class will inherit from Object. You
-may inherit from a different class using <code><</code> followed by a class
-name:
-
- class MySubclass < MyClass
- # ...
- end
-
-There is a special class BasicObject which is designed as a blank class and
-includes a minimum of built-in methods. You can use BasicObject to create an
-independent inheritance structure. See the BasicObject documentation for
-further details.
-
-== Inheritance
-
-Any method defined on a class is callable from its subclass:
-
- class A
- Z = 1
-
- def z
- Z
- end
- end
-
- class B < A
- end
-
- p B.new.z #=> 1
-
-The same is true for constants:
-
- class A
- Z = 1
- end
-
- class B < A
- def z
- Z
- end
- end
-
- p B.new.z #=> 1
-
-You can override the functionality of a superclass method by redefining the
-method:
-
- class A
- def m
- 1
- end
- end
-
- class B < A
- def m
- 2
- end
- end
-
- p B.new.m #=> 2
-
-If you wish to invoke the superclass functionality from a method use +super+:
-
- class A
- def m
- 1
- end
- end
-
- class B < A
- def m
- 2 + super
- end
- end
-
- p B.new.m #=> 3
-
-When used without any arguments +super+ uses the arguments given to the
-subclass method. To send no arguments to the superclass method use
-<code>super()</code>. To send specific arguments to the superclass method
-provide them manually like <code>super(2)</code>.
-
-+super+ may be called as many times as you like in the subclass method.
-
-= Singleton Classes
-
-The singleton class (also known as the metaclass or eigenclass) of an object is
-a class that holds methods for only that instance. You can access the
-singleton class of an object using <code>class << object</code> like this:
-
- class C
- end
-
- class << C
- # self is the singleton class here
- end
-
-Most frequently you'll see the singleton class accessed like this:
-
- class C
- class << self
- # ...
- end
- end
-
-This allows definition of methods and attributes on a class (or module) without
-needing to write <code>def self.my_method</code>.
-
-Since you can open the singleton class of any object this means that this code
-block:
-
- o = Object.new
-
- def o.my_method
- 1 + 1
- end
-
-is equivalent to this code block:
-
- o = Object.new
-
- class << o
- def my_method
- 1 + 1
- end
- end
-
-Both objects will have a +my_method+ that returns +2+.
-
diff --git a/doc/syntax/precedence.rdoc b/doc/syntax/precedence.rdoc
deleted file mode 100644
index 515626c74f..0000000000
--- a/doc/syntax/precedence.rdoc
+++ /dev/null
@@ -1,60 +0,0 @@
-= Precedence
-
-From highest to lowest, this is the precedence table for ruby. High precedence
-operations happen before low precedence operations.
-
- !, ~, unary +
-
- **
-
- unary -
-
- *, /, %
-
- +, -
-
- <<, >>
-
- &
-
- |, ^
-
- >, >=, <, <=
-
- <=>, ==, ===, !=, =~, !~
-
- &&
-
- ||
-
- .., ...
-
- ?, :
-
- modifier-rescue
-
- =, +=, -=, etc.
-
- defined?
-
- not
-
- or, and
-
- modifier-if, modifier-unless, modifier-while, modifier-until
-
- { } blocks
-
-Unary <code>+</code> and unary <code>-</code> are for <code>+1</code>,
-<code>-1</code> or <code>-(a + b)</code>.
-
-Modifier-if, modifier-unless, etc. are for the modifier versions of those
-keywords. For example, this is a modifier-unless expression:
-
- a += 1 unless a.zero?
-
-<code>{ ... }</code> blocks have priority below all listed operations, but
-<code>do ... end</code> blocks have lower priority.
-
-All other words in the precedence table above are keywords.
-
diff --git a/doc/syntax/refinements.rdoc b/doc/syntax/refinements.rdoc
deleted file mode 100644
index 7b3f0f6127..0000000000
--- a/doc/syntax/refinements.rdoc
+++ /dev/null
@@ -1,240 +0,0 @@
-= Refinements
-
-Due to Ruby's open classes you can redefine or add functionality to existing
-classes. This is called a "monkey patch". Unfortunately the scope of such
-changes is global. All users of the monkey-patched class see the same
-changes. This can cause unintended side-effects or breakage of programs.
-
-Refinements are designed to reduce the impact of monkey patching on other
-users of the monkey-patched class. Refinements provide a way to extend a
-class locally.
-
-Refinements are an experimental feature in Ruby 2.0. At the time of writing,
-refinements are expected to exist in future versions of Ruby but the
-specification of refinements may change. You will receive a warning the first
-time you define or activate a refinement.
-
-Here is a basic refinement:
-
- class C
- def foo
- puts "C#foo"
- end
- end
-
- module M
- refine C do
- def foo
- puts "C#foo in M"
- end
- end
- end
-
-First, a class +C+ is defined. Next a refinement for +C+ is created using
-Module#refine. Refinements only modify classes, not modules so the argument
-must be a class.
-
-Module#refine creates an anonymous module that contains the changes or
-refinements to the class (+C+ in the example). +self+ in the refine block is
-this anonymous module similar to Module#module_eval.
-
-Activate the refinement with #using:
-
- using M
-
- x = C.new
-
- c.foo # prints "C#foo in M"
-
-== Scope
-
-You may only activate refinements at top-level to the end of the file or in a
-string passed to Kernel#eval, Kernel#instance_eval or Kernel#module_eval until
-the end of the string.
-
-Refinements are lexical in scope. When control is transferred outside the
-scope the refinement is deactivated. This means that if you require or load a
-file or call a method that is defined outside the current scope the refinement
-will be deactivated:
-
- class C
- end
-
- module M
- refine C do
- def foo
- puts "C#foo in M"
- end
- end
- end
-
- def call_foo(x)
- x.foo
- end
-
- using M
-
- x = C.new
- x.foo # prints "C#foo in M"
- call_foo(x) #=> raises NoMethodError
-
-If a method is defined in a scope where a refinement is active the refinement
-will be active when the method is called. This example spans multiple files:
-
-c.rb:
-
- class C
- end
-
-m.rb:
-
- require "c"
-
- module M
- refine C do
- def foo
- puts "C#foo in M"
- end
- end
- end
-
-m_user.rb:
-
- require "m"
-
- using M
-
- class MUser
- def call_foo(x)
- x.foo
- end
- end
-
-main.rb:
-
- require "m_user"
-
- x = C.new
- m_user = MUser.new
- m_user.call_foo(x) # prints "C#foo in M"
- x.foo #=> raises NoMethodError
-
-Since the refinement +M+ is active in <code>m_user.rb</code> where
-<code>MUser#call_foo</code> is defined it is also active when
-<code>main.rb</code> calls +call_foo+.
-
-Since #using is a method, refinements are only active when it is called. Here
-are examples of where a refinement +M+ is and is not active.
-
-In a file:
-
- # not activated here
- using M
- # activated here
- class Foo
- # activated here
- def foo
- # activated here
- end
- # activated here
- end
- # activated here
-
-In eval:
-
- # not activated here
- eval <<EOF
- # not activated here
- using M
- # activated here
- EOF
- # not activated here
-
-When not evaluated:
-
- # not activated here
- if false
- using M
- end
- # not activated here
-
-When defining multiple refinements in the same module, inside a refine block
-all refinements from the same module are active when a refined method is
-called:
-
- module ToJSON
- refine Integer do
- def to_json
- to_s
- end
- end
-
- refine Array do
- def to_json
- "[" + map { |i| i.to_json }.join(",") + "]"
- end
- end
-
- refine Hash do
- def to_json
- "{" + map { |k, v| k.to_s.dump + ":" + v.to_json }.join(",") + "}"
- end
- end
- end
-
- using ToJSON
-
- p [{1=>2}, {3=>4}].to_json # prints "[{\"1\":2},{\"3\":4}]"
-
-== Method Lookup
-
-When looking up a method for an instance of class +C+ Ruby checks:
-
-* If refinements are active for +C+, in the reverse order they were activated:
- * The prepended modules from the refinement for +C+
- * The refinement for +C+
- * The included modules from the refinement for +C+
-* The prepended modules of +C+
-* +C+
-* The included modules of +C+
-
-If no method was found at any point this repeats with the superclass of +C+.
-
-Note that methods in a subclass have priority over refinements in a
-superclass. For example, if the method <code>/</code> is defined in a
-refinement for Integer <code>1 / 2</code> invokes the original Fixnum#/
-because Fixnum is a subclass of Integer and is searched before the refinements
-for the superclass Integer.
-
-If a method +foo+ is defined on Integer in a refinement, <code>1.foo</code>
-invokes that method since +foo+ does not exist on Fixnum.
-
-== +super+
-
-When +super+ is invoked method lookup checks:
-
-* The included modules of the current class. Note that the current class may
- be a refinement.
-* If the current class is a refinement, the method lookup proceeds as in the
- Method Lookup section above.
-* If the current class has a direct superclass, the method proceeds as in the
- Method Lookup section above using the superclass.
-
-Note that +super+ in a method of a refinement invokes the method in the
-refined class even if there is another refinement which has been activated in
-the same context.
-
-== Indirect Method Calls
-
-When using indirect method access such as Kernel#send, Kernel#method or
-Kernel#respond_to? refinements are not honored for the caller context during
-method lookup.
-
-This behavior may be changed in the future.
-
-== Further Reading
-
-See http://bugs.ruby-lang.org/projects/ruby-trunk/wiki/RefinementsSpec for the
-current specification for implementing refinements. The specification also
-contains more details.
-
diff --git a/enc/Makefile.in b/enc/Makefile.in
index a64785d1c5..203a83dbfd 100644
--- a/enc/Makefile.in
+++ b/enc/Makefile.in
@@ -20,7 +20,6 @@ ENCSODIR = $(EXTOUT)/$(arch)/enc
TRANSSODIR = $(ENCSODIR)/trans
DLEXT = @DLEXT@
OBJEXT = @OBJEXT@
-LIBEXT = @LIBEXT@
BUILTIN_ENCS = ascii.c us_ascii.c\
unicode.c utf_8.c
@@ -33,10 +32,7 @@ LIBRUBYARG_SHARED = @LIBRUBYARG_SHARED@
LIBRUBYARG_STATIC = $(LIBRUBYARG_SHARED)
empty =
-AR = @AR@
CC = @CC@
-ARFLAGS = @ARFLAGS@$(empty)
-RANLIB = @RANLIB@
OUTFLAG = @OUTFLAG@$(empty)
COUTFLAG = @COUTFLAG@$(empty)
CFLAGS = $(CCDLFLAGS) @CFLAGS@ @ARCH_FLAG@
@@ -52,13 +48,9 @@ LDFLAGS = @LDFLAGS@
LDSHARED = @LDSHARED@
ldflags = $(LDFLAGS)
dldflags = @DLDFLAGS@
-extdldflags = @EXTDLDFLAGS@
archflag = @ARCH_FLAG@
-DLDFLAGS = $(ldflags) $(dldflags) $(extdldflags) $(archflag)
+DLDFLAGS = $(ldflags) $(dldflags) $(archflag)
RUBY = $(MINIRUBY)
-TARGET_NAME_ = $(@F) # BSD make seems unable to deal with @F with substitution
-TARGET_NAME = $(TARGET_NAME_:.@DLEXT@=)
-TARGET_ENTRY = @EXPORT_PREFIX@Init_$(TARGET_NAME)
WORKDIRS = @WORKDIRS@
diff --git a/enc/ascii.c b/enc/ascii.c
index 72150c037c..3d62ec9bf7 100644
--- a/enc/ascii.c
+++ b/enc/ascii.c
@@ -1,9 +1,8 @@
/**********************************************************************
- ascii.c - Onigmo (Oniguruma-mod) (regular expression library)
+ ascii.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
* Copyright (c) 2002-2006 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
- * Copyright (c) 2011 K.Takata <kentkt AT csc DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -46,9 +45,7 @@ OnigEncodingDefine(ascii, ASCII) = {
onigenc_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,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("BINARY", "ASCII-8BIT")
ENC_REPLICATE("IBM437", "ASCII-8BIT")
diff --git a/enc/big5.c b/enc/big5.c
index 9d7738d8f9..c39329170e 100644
--- a/enc/big5.c
+++ b/enc/big5.c
@@ -299,9 +299,7 @@ OnigEncodingDefine(big5, BIG5) = {
big5_is_code_ctype,
onigenc_not_support_get_ctype_code_range,
big5_left_adjust_char_head,
- big5_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ big5_is_allowed_reverse_match
};
/*
@@ -333,9 +331,7 @@ OnigEncodingDefine(big5_hkscs, BIG5_HKSCS) = {
big5_is_code_ctype,
onigenc_not_support_get_ctype_code_range,
big5_left_adjust_char_head,
- big5_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ big5_is_allowed_reverse_match
};
ENC_ALIAS("Big5-HKSCS:2008", "Big5-HKSCS")
@@ -367,7 +363,5 @@ OnigEncodingDefine(big5_uao, BIG5_UAO) = {
big5_is_code_ctype,
onigenc_not_support_get_ctype_code_range,
big5_left_adjust_char_head,
- big5_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ big5_is_allowed_reverse_match
};
diff --git a/enc/cp949.c b/enc/cp949.c
index bf1c2637a3..3eb46c976a 100644
--- a/enc/cp949.c
+++ b/enc/cp949.c
@@ -210,9 +210,7 @@ OnigEncodingDefine(cp949, CP949) = {
cp949_is_code_ctype,
onigenc_not_support_get_ctype_code_range,
cp949_left_adjust_char_head,
- cp949_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ cp949_is_allowed_reverse_match
};
/*
* Name: CP949
diff --git a/enc/depend b/enc/depend
index 014fc4f584..8e930d5053 100644
--- a/enc/depend
+++ b/enc/depend
@@ -1,17 +1,44 @@
-% inplace = File.identical?($top_srcdir, ".")
+% inplace = File.identical?($srcdir, ".")
% workdirs = %w"$(ENCSODIR) $(TRANSSODIR) enc enc/trans"
% CONFIG["WORKDIRS"] = workdirs.join(' ')
+% CONFIG["DLDFLAGS"].sub!(/(\A|\s)(-\S+(?:\s*\w*)?\$\(TARGET\)\S*)/, '\1')
+% dldflags = $2
% enable_shared = CONFIG['ENABLE_SHARED'] == 'yes'
% deffile = (true if /\$\(DEFFILE\)/ =~ CONFIG["LINK_SO"])
-% dependencies = ENCS + TRANS
+% encs = Dir.open($srcdir) {|d| d.grep(/.+\.c\z/)} - BUILTIN_ENCS
+% encs.each {|e| e.chomp!(".c")}
+% encs.reject! {|e| !ENC_PATTERNS.any? {|p| File.fnmatch?(p, e)}} if !ENC_PATTERNS.empty?
+% encs.reject! {|e| NOENC_PATTERNS.any? {|p| File.fnmatch?(p, e)}}
+% alphanumeric_order = proc {|e| e.scan(/(\d+)|(\D+)/).map {|n,a| a||[n.size,n.to_i]}.flatten}
+% encs = encs.sort_by(&alphanumeric_order)
+% encs.unshift(encs.delete("encdb"))
+% atrans = []
+% trans = Dir.open($srcdir+"/trans") {|d|
+% d.select {|e|
+% if e.chomp!('.trans')
+% atrans << e
+% true
+% elsif e.chomp!('.c')
+% true
+% end
+% }
+% }
+% trans -= BUILTIN_TRANSES
+% atrans -= BUILTIN_TRANSES
+% trans.uniq!
+% atrans = atrans.sort_by(&alphanumeric_order)
+% trans = trans.sort_by(&alphanumeric_order)
+% trans.unshift(trans.delete("transdb"))
+% trans.compact!
+% trans |= atrans
+% trans.map! {|e| "trans/#{e}"}
+% dependencies = encs + trans
% cleanlibs = Shellwords.shellwords(CONFIG["cleanlibs"] || "")
% cleanobjs = Shellwords.shellwords(CONFIG["cleanobjs"] || "")
% cleanobjs << "$*.def" if deffile
% rule_subst = CONFIG["RULE_SUBST"] || "%s"
% transvpath = rule_subst.dup.sub!(/\{[^{}]+\}/, '$(TRANSVPATH)/') || "enc/trans/%s"
-% transvpath_prefix = (rule_subst.dup.sub!(/\{[^{}]+\}/, '{$(TRANSVPATH)}') || "%s") % ""
-% CONFIG['ARFLAGS'] = 'rcu ' if (CONFIG['ARFLAGS'] || "").empty?
-% CONFIG['RANLIB'] = ':' if (CONFIG['RANLIB'] || "").empty?
+% transvpath_prefix = (rule_subst.dup.sub!(/\{[^{}]+\}/, '{$(TRANSVPATH)}') || "") % ""
% if File::ALT_SEPARATOR
% pathrep = proc {|path| path.gsub('/', File::ALT_SEPARATOR).gsub(/\$\(([@<?*]\w?|\w+)\)/, "$(\\1:/=\\#{File::ALT_SEPARATOR})")}
% else
@@ -27,51 +54,31 @@ else
''
end %> <%=CONFIG['LIBS']%> $(EXTLIBS)
-ENCOBJS = <%=ENCS.map {|e|"enc/#{e}.$(OBJEXT)"}.join(" \\\n\t ")%><%="\n" if ENCS.size>1%>
-ENCSOS = <%=ENCS.map {|e|"$(ENCSODIR)/#{e}.$(DLEXT)"}.join(" \\\n\t ")%><%="\n" if ENCS.size>1%>
+ENCOBJS = <%=encs.map {|e|"enc/#{e}.$(OBJEXT)"}.join(" \\\n\t ")%><%="\n" if encs.size>1%>
+ENCSOS = <%=encs.map {|e|"$(ENCSODIR)/#{e}.$(DLEXT)"}.join(" \\\n\t ")%><%="\n" if encs.size>1%>
ENCCLEANLIBS = <%=cleanlibs.map {|clean|
clean.gsub(/\$\*(\.\w+)?/) {"$(ENCOBJS#{$1 ? ":.#{CONFIG["OBJEXT"]}=#{$1}" : ""})"}
}.join(" ")%>
ENCCLEANOBJS = <%=cleanobjs.map {|clean|
clean.gsub(/\$\*(\.\w+)?/) {"$(ENCOBJS#{$1 ? ":.#{CONFIG["OBJEXT"]}=#{$1}" : ""})"}
}.join(" ")%>
-LIBENC=enc/libenc.$(LIBEXT)
TRANSVPATH = $(srcdir)/enc/trans
-TRANSCSRCS = <%=ATRANS.map {|e| transvpath % "#{e}.c"}.join(" \\\n\t ")%><%="\n" if TRANS.size>1%>
-TRANSOBJS = <%=TRANS.map {|e|"enc/#{e}.$(OBJEXT)"}.join(" \\\n\t ")%><%="\n" if TRANS.size>1%>
-TRANSSOS = <%=TRANS.map {|e|"$(ENCSODIR)/#{e}.$(DLEXT)"}.join(" \\\n\t ")%><%="\n" if TRANS.size>1%>
+TRANSCSRCS = <%=atrans.map {|e| transvpath % "#{e}.c"}.join(" \\\n\t ")%><%="\n" if trans.size>1%>
+TRANSOBJS = <%=trans.map {|e|"enc/#{e}.$(OBJEXT)"}.join(" \\\n\t ")%><%="\n" if trans.size>1%>
+TRANSSOS = <%=trans.map {|e|"$(ENCSODIR)/#{e}.$(DLEXT)"}.join(" \\\n\t ")%><%="\n" if trans.size>1%>
TRANSCLEANLIBS = <%=cleanlibs.map {|clean|
clean.gsub(/\$\*(\.\w+)?/) {"$(TRANSOBJS#{$1 ? ":.#{CONFIG["OBJEXT"]}=#{$1}" : ""})"}
}.join(" ")%>
TRANSCLEANOBJS = <%=cleanobjs.map {|clean|
clean.gsub(/\$\*(\.\w+)?/) {"$(TRANSOBJS#{$1 ? ":.#{CONFIG["OBJEXT"]}=#{$1}" : ""})"}
}.join(" ")%>
-LIBTRANS=enc/libtrans.$(LIBEXT)
encs: all
-% if MODULE_TYPE == :static
-all: libenc libtrans
-% else
all: enc trans
-%end
-libencs: libenc libtrans
enc: $(ENCSOS)
-libenc: $(LIBENC)
trans: $(TRANSSOS)
-libtrans: $(LIBTRANS)
-
-$(LIBENC): $(ENCOBJS)
- @$(RM) $@
- $(ECHO) linking statically-linked encoding library $@
- $(Q) $(AR) $(ARFLAGS)$@ $(ENCOBJS)
- @-$(RANLIB) $@ 2> /dev/null || true
-$(LIBTRANS): $(TRANSOBJS)
- @$(RM) $@
- $(ECHO) linking statically-linked transcoder library $@
- $(Q) $(AR) $(ARFLAGS)$@ $(TRANSOBJS)
- @-$(RANLIB) $@ 2> /dev/null || true
srcs: $(TRANSCSRCS)
@@ -79,27 +86,24 @@ srcs: $(TRANSCSRCS)
$(ECHO) generating table from $@
$(Q)$(MINIRUBY) "$(srcdir)/tool/transcode-tblgen.rb" -vo "$@" "$<"
-% unless ENCS.empty? or TRANS.empty?
+% unless encs.empty? or trans.empty?
-% unless ENCS.empty?
+% unless encs.empty?
$(ENCOBJS): regenc.h oniguruma.h config.h defines.h
% end
-% ENC_DEPS.each do |e, deps|
-enc/<%=e%>.$(OBJEXT): <%=deps.map {|n| rule_subst % n}.join(' ')%>
-% end
-% unless TRANS.empty?
+% unless trans.empty?
$(TRANSOBJS): ruby.h intern.h config.h defines.h missing.h encoding.h oniguruma.h st.h transcode_data.h
% end
-% ATRANS.each do |e|
+% atrans.each do |e|
% src = "#{e}.trans"
<%=transvpath % "#{e}.c"%>: <%= transvpath % "#{e}.trans"%>
% src = [*IO.read(File.join($srcdir, "trans", src)).scan(/^\s*require\s+[\'\"]([^\'\"]*)/).flatten.map{|c|c+".rb"}]
-<%=transvpath % "#{e}.c"%>: <%= src.map {|s| transvpath % "#{s}"}.join(" ")%> $(srcdir)/tool/transcode-tblgen.rb
+<%=transvpath % "#{e}.c"%>: <%= src.map {|e| transvpath % "#{e}"}.join(" ")%> $(srcdir)/tool/transcode-tblgen.rb
% end
% end
-% link_so = LINK_SO.gsub(/([^\\])\n/, "\\1\n$(Q) ").gsub(/\n/, "\n\t")
+% link_so = LINK_SO.gsub(/\n/, "\n\t")
% link_so.gsub!(/(-(?:implib|pdb):\S+)-\$\(arch\)\./, '\1.')
% dependencies.each do |e|
% obj = "enc/#{e}.$(OBJEXT)"
@@ -115,6 +119,7 @@ $(TRANSOBJS): ruby.h intern.h config.h defines.h missing.h encoding.h oniguruma.
$(ECHO) linking <%=mesg%> $(@F)
% cmd = link_so.sub(/\$\(OBJS\)/) {obj}
% base = File.basename(e)
+% cmd.sub!(/(?=\$\(DLDFLAGS\))/) {dldflags.sub(/\$\(TARGET\)/) {base} + " "} if dldflags
% if df
$(Q)echo> <%=df%> EXPORTS
$(Q)echo>> <%=df%> <%=EXPORT_PREFIX%>Init_<%=base%>
@@ -137,7 +142,7 @@ enc/encdb.$(OBJEXT): encdb.h
enc/trans/transdb.$(OBJEXT): transdb.h
clean:
-% %w[$(ENCSOS) $(LIBENC) $(ENCOBJS) $(ENCCLEANOBJS) $(ENCCLEANLIBS) $(TRANSSOS) $(LIBTRANS) $(TRANSOBJS) $(TRANSCLEANOBJS) $(TRANSCLEANLIBS)].each do |clean|
+% %w[$(ENCSOS) $(ENCOBJS) $(ENCCLEANOBJS) $(ENCCLEANLIBS) $(TRANSSOS) $(TRANSOBJS) $(TRANSCLEANOBJS) $(TRANSCLEANLIBS)].each do |clean|
$(Q)$(RM) <%=pathrep[clean]%>
% end
% @ignore_error = $nmake ? '' : ' 2> /dev/null || true'
@@ -145,8 +150,8 @@ clean:
$(Q)$(RM) enc/unicode/name2ctype.h
-$(Q)$(RMDIR) enc/unicode<%=@ignore_error%>
% end
-% workdirs.reverse_each do|d|
- -$(Q)$(RMDIR) <%=pathrep[d]%><%=@ignore_error%>
+% workdirs.reverse_each do|dir|
+ -$(Q)$(RMDIR) <%=pathrep[dir]%><%=@ignore_error%>
% end
clean-srcs:
@@ -155,5 +160,3 @@ clean-srcs:
$(Q)$(RM) enc/unicode/name2ctype.h
-$(Q)$(RMDIR) <%=pathrep['enc/unicode']%><%=@ignore_error%>
-$(Q)$(RMDIR) <%=pathrep['enc']%><%=@ignore_error%>
-
-<%# vim: set ft=eruby noexpandtab ts=8 sw=2 : -%>
diff --git a/enc/emacs_mule.c b/enc/emacs_mule.c
index 275c8f47dc..e75e40b168 100644
--- a/enc/emacs_mule.c
+++ b/enc/emacs_mule.c
@@ -334,8 +334,7 @@ OnigEncodingDefine(emacs_mule, Emacs_Mule) = {
onigenc_not_support_get_ctype_code_range,
left_adjust_char_head,
onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ 0
};
ENC_REPLICATE("stateless-ISO-2022-JP", "Emacs-Mule")
diff --git a/enc/encdb.c b/enc/encdb.c
index 32def53aeb..958b33504e 100644
--- a/enc/encdb.c
+++ b/enc/encdb.c
@@ -14,13 +14,11 @@ int rb_encdb_alias(const char *alias, const char *orig);
int rb_encdb_dummy(const char *name);
void rb_encdb_declare(const char *name);
void rb_enc_set_base(const char *name, const char *orig);
-void rb_encdb_set_unicode(int index);
#define ENC_REPLICATE(name, orig) rb_encdb_replicate((name), (orig))
#define ENC_ALIAS(name, orig) rb_encdb_alias((name), (orig))
#define ENC_DUMMY(name) rb_encdb_dummy(name)
#define ENC_DEFINE(name) rb_encdb_declare(name)
#define ENC_SET_BASE(name, orig) rb_enc_set_base((name), (orig))
-#define ENC_DUMMY_UNICODE(name) rb_encdb_set_unicode(ENC_DUMMY(name))
void
Init_encdb(void)
diff --git a/enc/encinit.c.erb b/enc/encinit.c.erb
deleted file mode 100644
index fd3ade0c4b..0000000000
--- a/enc/encinit.c.erb
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright 2012 Google Inc. Some Rights Reserved.
- * Author: yugui@google.com (Yugui Sonoda)
- */
-#include <stdio.h>
-
-#define init(func, name) { \
- extern void func(void); \
- ruby_init_ext(name, func); \
-}
-
-void ruby_init_ext(const char *name, void (*init)(void));
-
-void
-Init_enc(void)
-{
-% ENCS.each do |enc|
- init(Init_<%= enc %>, "enc/<%= enc %>.so");
-% end
-
- init(Init_transdb, "enc/trans/transdb.so");
-% TRANS.each do |trans|
-% next if trans == 'trans/transdb'
- init(Init_trans_<%= File.basename trans %>, "enc/<%= trans %>.so");
-% end
-}
-<%# vim: set ft=eruby sw=2 : -%>
diff --git a/enc/euc_jp.c b/enc/euc_jp.c
index d794145b49..7667c5800e 100644
--- a/enc/euc_jp.c
+++ b/enc/euc_jp.c
@@ -1,9 +1,8 @@
/**********************************************************************
- euc_jp.c - Onigmo (Oniguruma-mod) (regular expression library)
+ euc_jp.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2008 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
- * Copyright (c) 2011 K.Takata <kentkt AT csc DOT jp>
+ * Copyright (c) 2002-2007 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -30,6 +29,7 @@
#include "regint.h"
+
#define eucjp_islead(c) ((UChar )((c) - 0xa1) > 0xfe - 0xa1)
static const int EncLen_EUCJP[] = {
@@ -114,97 +114,6 @@ static const signed char trans[][0x100] = {
#undef A
#undef F
-static const OnigPairCaseFoldCodes CaseFoldMap[] = {
- /* Fullwidth Alphabet */
- { 0xa3c1, 0xa3e1 },
- { 0xa3c2, 0xa3e2 },
- { 0xa3c3, 0xa3e3 },
- { 0xa3c4, 0xa3e4 },
- { 0xa3c5, 0xa3e5 },
- { 0xa3c6, 0xa3e6 },
- { 0xa3c7, 0xa3e7 },
- { 0xa3c8, 0xa3e8 },
- { 0xa3c9, 0xa3e9 },
- { 0xa3ca, 0xa3ea },
- { 0xa3cb, 0xa3eb },
- { 0xa3cc, 0xa3ec },
- { 0xa3cd, 0xa3ed },
- { 0xa3ce, 0xa3ee },
- { 0xa3cf, 0xa3ef },
- { 0xa3d0, 0xa3f0 },
- { 0xa3d1, 0xa3f1 },
- { 0xa3d2, 0xa3f2 },
- { 0xa3d3, 0xa3f3 },
- { 0xa3d4, 0xa3f4 },
- { 0xa3d5, 0xa3f5 },
- { 0xa3d6, 0xa3f6 },
- { 0xa3d7, 0xa3f7 },
- { 0xa3d8, 0xa3f8 },
- { 0xa3d9, 0xa3f9 },
- { 0xa3da, 0xa3fa },
-
- /* Greek */
- { 0xa6a1, 0xa6c1 },
- { 0xa6a2, 0xa6c2 },
- { 0xa6a3, 0xa6c3 },
- { 0xa6a4, 0xa6c4 },
- { 0xa6a5, 0xa6c5 },
- { 0xa6a6, 0xa6c6 },
- { 0xa6a7, 0xa6c7 },
- { 0xa6a8, 0xa6c8 },
- { 0xa6a9, 0xa6c9 },
- { 0xa6aa, 0xa6ca },
- { 0xa6ab, 0xa6cb },
- { 0xa6ac, 0xa6cc },
- { 0xa6ad, 0xa6cd },
- { 0xa6ae, 0xa6ce },
- { 0xa6af, 0xa6cf },
- { 0xa6b0, 0xa6d0 },
- { 0xa6b1, 0xa6d1 },
- { 0xa6b2, 0xa6d2 },
- { 0xa6b3, 0xa6d3 },
- { 0xa6b4, 0xa6d4 },
- { 0xa6b5, 0xa6d5 },
- { 0xa6b6, 0xa6d6 },
- { 0xa6b7, 0xa6d7 },
- { 0xa6b8, 0xa6d8 },
-
- /* Cyrillic */
- { 0xa7a1, 0xa7d1 },
- { 0xa7a2, 0xa7d2 },
- { 0xa7a3, 0xa7d3 },
- { 0xa7a4, 0xa7d4 },
- { 0xa7a5, 0xa7d5 },
- { 0xa7a6, 0xa7d6 },
- { 0xa7a7, 0xa7d7 },
- { 0xa7a8, 0xa7d8 },
- { 0xa7a9, 0xa7d9 },
- { 0xa7aa, 0xa7da },
- { 0xa7ab, 0xa7db },
- { 0xa7ac, 0xa7dc },
- { 0xa7ad, 0xa7dd },
- { 0xa7ae, 0xa7de },
- { 0xa7af, 0xa7df },
- { 0xa7b0, 0xa7e0 },
- { 0xa7b1, 0xa7e1 },
- { 0xa7b2, 0xa7e2 },
- { 0xa7b3, 0xa7e3 },
- { 0xa7b4, 0xa7e4 },
- { 0xa7b5, 0xa7e5 },
- { 0xa7b6, 0xa7e6 },
- { 0xa7b7, 0xa7e7 },
- { 0xa7b8, 0xa7e8 },
- { 0xa7b9, 0xa7e9 },
- { 0xa7ba, 0xa7ea },
- { 0xa7bb, 0xa7eb },
- { 0xa7bc, 0xa7ec },
- { 0xa7bd, 0xa7ed },
- { 0xa7be, 0xa7ee },
- { 0xa7bf, 0xa7ef },
- { 0xa7c0, 0xa7f0 },
- { 0xa7c1, 0xa7f1 },
-};
-
static int
mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc ARG_UNUSED)
{
@@ -229,7 +138,7 @@ mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc)
int c, i, len;
OnigCodePoint n;
- len = mbc_enc_len(p, end, enc);
+ len = enclen(enc, p, end);
n = (OnigCodePoint )*p++;
if (len == 1) return n;
@@ -245,10 +154,10 @@ static int
code_to_mbclen(OnigCodePoint code, OnigEncoding enc ARG_UNUSED)
{
if (ONIGENC_IS_CODE_ASCII(code)) return 1;
- else if (code > 0x00ffffff)
- return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
- else if ((code & 0xff808080) == 0x00808080) return 3;
- else if ((code & 0xffff8080) == 0x00008080) return 2;
+ else if (code > 0xffffff)
+ return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;
+ else if (code & 0x800000) return 3;
+ else if (code & 0x8000) return 2;
else
return ONIGERR_INVALID_CODE_POINT_VALUE;
}
@@ -282,87 +191,10 @@ code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc)
*p++ = (UChar )(code & 0xff);
#if 1
- if (mbc_enc_len(buf, p, enc) != (p - buf))
+ if (enclen(enc, buf, p) != (p - buf))
return ONIGERR_INVALID_CODE_POINT_VALUE;
#endif
- return (int )(p - buf);
-}
-
-static int
-apply_all_case_fold(OnigCaseFoldType flag,
- OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc)
-{
- return onigenc_apply_all_case_fold_with_map(
- sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0,
- flag, f, arg);
-}
-
-static OnigCodePoint
-get_lower_case(OnigCodePoint code)
-{
- if (ONIGENC_IS_IN_RANGE(code, 0xa3c1, 0xa3da)) {
- /* Fullwidth Alphabet */
- return (OnigCodePoint )(code + 0x0020);
- }
- else if (ONIGENC_IS_IN_RANGE(code, 0xa6a1, 0xa6b8)) {
- /* Greek */
- return (OnigCodePoint )(code + 0x0020);
- }
- else if (ONIGENC_IS_IN_RANGE(code, 0xa7a1, 0xa7c1)) {
- /* Cyrillic */
- return (OnigCodePoint )(code + 0x0030);
- }
- return code;
-}
-
-static OnigCodePoint
-get_upper_case(OnigCodePoint code)
-{
- if (ONIGENC_IS_IN_RANGE(code, 0xa3e1, 0xa3fa)) {
- /* Fullwidth Alphabet */
- return (OnigCodePoint )(code - 0x0020);
- }
- else if (ONIGENC_IS_IN_RANGE(code, 0xa6c1, 0xa6d8)) {
- /* Greek */
- return (OnigCodePoint )(code - 0x0020);
- }
- else if (ONIGENC_IS_IN_RANGE(code, 0xa7d1, 0xa7f1)) {
- /* Cyrillic */
- return (OnigCodePoint )(code - 0x0030);
- }
- return code;
-}
-
-static int
-get_case_fold_codes_by_str(OnigCaseFoldType flag,
- const OnigUChar* p, const OnigUChar* end,
- OnigCaseFoldCodeItem items[], OnigEncoding enc)
-{
- int len;
- OnigCodePoint code, code_lo, code_up;
-
- code = mbc_to_code(p, end, enc);
- if (ONIGENC_IS_ASCII_CODE(code))
- return onigenc_ascii_get_case_fold_codes_by_str(flag, p, end, items, enc);
-
- len = mbc_enc_len(p, end, enc);
- code_lo = get_lower_case(code);
- code_up = get_upper_case(code);
-
- if (code != code_lo) {
- items[0].byte_len = len;
- items[0].code_len = 1;
- items[0].code[0] = code_lo;
- return 1;
- }
- else if (code != code_up) {
- items[0].byte_len = len;
- items[0].code_len = 1;
- items[0].code[0] = code_up;
- return 1;
- }
-
- return 0;
+ return (int)(p - buf);
}
static int
@@ -370,6 +202,7 @@ mbc_case_fold(OnigCaseFoldType flag,
const UChar** pp, const UChar* end, UChar* lower,
OnigEncoding enc)
{
+ int len;
const UChar* p = *pp;
if (ONIGENC_IS_MBC_ASCII(p)) {
@@ -378,11 +211,12 @@ mbc_case_fold(OnigCaseFoldType flag,
return 1;
}
else {
- OnigCodePoint code;
- int len;
+ int i;
- code = get_lower_case(mbc_to_code(p, end, enc));
- len = code_to_mbc(code, lower, enc);
+ len = enclen(enc, p, end);
+ for (i = 0; i < len; i++) {
+ *lower++ = *p++;
+ }
(*pp) += len;
return len; /* return byte length of converted char to lower */
}
@@ -401,7 +235,7 @@ left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, Onig
p = s;
while (!eucjp_islead(*p) && p > start) p--;
- len = mbc_enc_len(p, end, enc);
+ len = enclen(enc, p, end);
if (p + len > s) return (UChar* )p;
p += len;
return (UChar* )(p + ((s - p) & ~1));
@@ -426,83 +260,15 @@ static hash_table_type* PropertyNameTable;
static const OnigCodePoint CR_Hiragana[] = {
1,
-#ifdef ENC_EUC_JIS_2004
- 0xa4a1, 0xa4fb
-#else
0xa4a1, 0xa4f3
-#endif
}; /* CR_Hiragana */
-#ifdef ENC_EUC_JIS_2004
-static const OnigCodePoint CR_Katakana[] = {
- 5,
- 0x8ea6, 0x8eaf, /* JIS X 0201 Katakana */
- 0x8eb1, 0x8edd, /* JIS X 0201 Katakana */
- 0xa5a1, 0xa5fe,
- 0xa6ee, 0xa6fe,
- 0xa7f2, 0xa7f5,
-}; /* CR_Katakana */
-#else
static const OnigCodePoint CR_Katakana[] = {
3,
- 0x8ea6, 0x8eaf, /* JIS X 0201 Katakana */
- 0x8eb1, 0x8edd, /* JIS X 0201 Katakana */
0xa5a1, 0xa5f6,
+ 0xaaa6, 0xaaaf,
+ 0xaab1, 0xaadd
}; /* CR_Katakana */
-#endif
-
-#ifdef ENC_EUC_JIS_2004
-static const OnigCodePoint CR_Han[] = {
- /* EUC-JIS-2004 (JIS X 0213:2004) */
- 7,
- /* plane 1 */
- 0xa1b8, 0xa1b8,
- 0xaea1, 0xfefe, /* Kanji level 1, 2 and 3 */
- /* plane 2 */
- 0x8fa1a1, 0x8fa1fe, /* row 1 */
- 0x8fa3a1, 0x8fa5fe, /* row 3 .. 5 */
- 0x8fa8a1, 0x8fa8fe, /* row 8 */
- 0x8faca1, 0x8faffe, /* row 12 .. 15 */
- 0x8feea1, 0x8ffef6, /* row 78 .. 94 */
-}; /* CR_Han */
-#else
-static const OnigCodePoint CR_Han[] = {
- /* EUC-JP (JIS X 0208 based) */
- 4,
- 0xa1b8, 0xa1b8,
- 0xb0a1, 0xcfd3, /* Kanji level 1 */
- 0xd0a1, 0xf4a6, /* Kanji level 2 */
- 0x8fb0a1, 0x8fedf3 /* JIS X 0212 Supplemental Kanji (row 16 .. 77) */
-}; /* CR_Han */
-#endif
-
-static const OnigCodePoint CR_Latin[] = {
- 4,
- 0x0041, 0x005a,
- 0x0061, 0x007a,
- 0xa3c1, 0xa3da,
- 0xa3e1, 0xa3fa,
- /* TODO: add raw 8 .. 11 to support EUC-JIS-2004 */
- /* TODO: add JIS X 0212 row 9 .. 11 */
-}; /* CR_Latin */
-
-static const OnigCodePoint CR_Greek[] = {
- 2,
- 0xa6a1, 0xa6b8,
-#ifdef ENC_EUC_JIS_2004
- 0xa6c1, 0xa6d9,
-#else
- 0xa6c1, 0xa6d8,
- /* TODO: add JIS X 0212 row 6 */
-#endif
-}; /* CR_Greek */
-
-static const OnigCodePoint CR_Cyrillic[] = {
- 2,
- 0xa7a1, 0xa7c1,
- 0xa7d1, 0xa7f1,
- /* TODO: add JIS X 0212 row 7 */
-}; /* CR_Cyrillic */
static int
init_property_list(void)
@@ -511,10 +277,6 @@ init_property_list(void)
PROPERTY_LIST_ADD_PROP("hiragana", CR_Hiragana);
PROPERTY_LIST_ADD_PROP("katakana", CR_Katakana);
- PROPERTY_LIST_ADD_PROP("han", CR_Han);
- PROPERTY_LIST_ADD_PROP("latin", CR_Latin);
- PROPERTY_LIST_ADD_PROP("greek", CR_Greek);
- PROPERTY_LIST_ADD_PROP("cyrillic", CR_Cyrillic);
PropertyInited = 1;
end:
@@ -538,7 +300,7 @@ property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end)
return onigenc_minimum_property_name_to_ctype(enc, s, e);
}
- return (int )ctype;
+ return (int)ctype;
}
static int
@@ -598,15 +360,14 @@ OnigEncodingDefine(euc_jp, EUC_JP) = {
code_to_mbclen,
code_to_mbc,
mbc_case_fold,
- apply_all_case_fold,
- get_case_fold_codes_by_str,
+ onigenc_ascii_apply_all_case_fold,
+ onigenc_ascii_get_case_fold_codes_by_str,
property_name_to_ctype,
is_code_ctype,
get_ctype_code_range,
left_adjust_char_head,
is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ 0
};
/*
* Name: EUC-JP
@@ -635,10 +396,3 @@ ENC_ALIAS("euc-jp-ms", "eucJP-ms")
* Link: http://msyk.at.webry.info/200511/article_2.html
*/
ENC_REPLICATE("CP51932", "EUC-JP")
-
-/*
- * Name: EUC-JP-2004
- * Link: http://ja.wikipedia.org/wiki/EUC-JP-2004
- */
-ENC_REPLICATE("EUC-JP-2004", "EUC-JP") /* defined at JIS X 0213:2004 */
-ENC_ALIAS("EUC-JISX0213", "EUC-JP-2004") /* defined at JIS X 0213:2000, and obsolete at JIS X 0213:2004 */
diff --git a/enc/euc_kr.c b/enc/euc_kr.c
index 55acf00168..af5f7828f0 100644
--- a/enc/euc_kr.c
+++ b/enc/euc_kr.c
@@ -187,8 +187,6 @@ OnigEncodingDefine(euc_kr, EUC_KR) = {
euckr_is_code_ctype,
onigenc_not_support_get_ctype_code_range,
euckr_left_adjust_char_head,
- euckr_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ euckr_is_allowed_reverse_match
};
ENC_ALIAS("eucKR", "EUC-KR")
diff --git a/enc/euc_tw.c b/enc/euc_tw.c
index 6d193b745e..5fed8a893d 100644
--- a/enc/euc_tw.c
+++ b/enc/euc_tw.c
@@ -220,8 +220,6 @@ OnigEncodingDefine(euc_tw, EUC_TW) = {
euctw_is_code_ctype,
onigenc_not_support_get_ctype_code_range,
euctw_left_adjust_char_head,
- euctw_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ euctw_is_allowed_reverse_match
};
ENC_ALIAS("eucTW", "EUC-TW")
diff --git a/enc/gb18030.c b/enc/gb18030.c
index d4184333f5..36e60af6b5 100644
--- a/enc/gb18030.c
+++ b/enc/gb18030.c
@@ -596,8 +596,6 @@ OnigEncodingDefine(gb18030, GB18030) = {
gb18030_is_code_ctype,
onigenc_not_support_get_ctype_code_range,
gb18030_left_adjust_char_head,
- gb18030_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ gb18030_is_allowed_reverse_match
};
diff --git a/enc/gbk.c b/enc/gbk.c
index 7be60a0de9..ace7f378af 100644
--- a/enc/gbk.c
+++ b/enc/gbk.c
@@ -210,9 +210,7 @@ OnigEncodingDefine(gbk, GBK) = {
gbk_is_code_ctype,
onigenc_not_support_get_ctype_code_range,
gbk_left_adjust_char_head,
- gbk_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ gbk_is_allowed_reverse_match
};
/*
* Name: GBK
diff --git a/enc/iso_2022_jp.h b/enc/iso_2022_jp.h
index 399c2f56a5..8cfad0be06 100644
--- a/enc/iso_2022_jp.h
+++ b/enc/iso_2022_jp.h
@@ -5,12 +5,7 @@ ENC_ALIAS("ISO2022-JP", "ISO-2022-JP");
ENC_REPLICATE("ISO-2022-JP-2", "ISO-2022-JP");
ENC_ALIAS("ISO2022-JP2", "ISO-2022-JP-2");
-/*
- * Name: CP50220
- * MIBenum: 2260
- * Link: http://www.iana.org/assignments/charset-reg/CP50220
- *
- * Windows Codepage 50220
+/* Windows Codepage 50220
* a ISO-2022-JP variant.
* This includes
* * US-ASCII
diff --git a/enc/iso_8859_1.c b/enc/iso_8859_1.c
index 92dc14f978..a10a7679b8 100644
--- a/enc/iso_8859_1.c
+++ b/enc/iso_8859_1.c
@@ -272,9 +272,7 @@ OnigEncodingDefine(iso_8859_1, ISO_8859_1) = {
is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("ISO8859-1", "ISO-8859-1")
diff --git a/enc/iso_8859_10.c b/enc/iso_8859_10.c
index ec20a15baa..1643278dfd 100644
--- a/enc/iso_8859_10.c
+++ b/enc/iso_8859_10.c
@@ -239,8 +239,6 @@ OnigEncodingDefine(iso_8859_10, ISO_8859_10) = {
is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("ISO8859-10", "ISO-8859-10")
diff --git a/enc/iso_8859_11.c b/enc/iso_8859_11.c
index ec9840e127..257d9d8919 100644
--- a/enc/iso_8859_11.c
+++ b/enc/iso_8859_11.c
@@ -92,9 +92,7 @@ OnigEncodingDefine(iso_8859_11, ISO_8859_11) = {
is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("ISO8859-11", "ISO-8859-11")
diff --git a/enc/iso_8859_13.c b/enc/iso_8859_13.c
index 4d7b328818..f29cb2e281 100644
--- a/enc/iso_8859_13.c
+++ b/enc/iso_8859_13.c
@@ -228,9 +228,7 @@ OnigEncodingDefine(iso_8859_13, ISO_8859_13) = {
is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("ISO8859-13", "ISO-8859-13")
diff --git a/enc/iso_8859_14.c b/enc/iso_8859_14.c
index 1271c8a7a6..be83f93f80 100644
--- a/enc/iso_8859_14.c
+++ b/enc/iso_8859_14.c
@@ -241,8 +241,6 @@ OnigEncodingDefine(iso_8859_14, ISO_8859_14) = {
is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("ISO8859-14", "ISO-8859-14")
diff --git a/enc/iso_8859_15.c b/enc/iso_8859_15.c
index 451033e158..2ec41b66c0 100644
--- a/enc/iso_8859_15.c
+++ b/enc/iso_8859_15.c
@@ -235,8 +235,6 @@ OnigEncodingDefine(iso_8859_15, ISO_8859_15) = {
is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("ISO8859-15", "ISO-8859-15")
diff --git a/enc/iso_8859_16.c b/enc/iso_8859_16.c
index 5234cf0e7f..3ddc1d91c6 100644
--- a/enc/iso_8859_16.c
+++ b/enc/iso_8859_16.c
@@ -237,8 +237,6 @@ OnigEncodingDefine(iso_8859_16, ISO_8859_16) = {
is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("ISO8859-16", "ISO-8859-16")
diff --git a/enc/iso_8859_2.c b/enc/iso_8859_2.c
index f4cb9100df..6c0d2d7dc1 100644
--- a/enc/iso_8859_2.c
+++ b/enc/iso_8859_2.c
@@ -237,9 +237,7 @@ OnigEncodingDefine(iso_8859_2, ISO_8859_2) = {
is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("ISO8859-2", "ISO-8859-2")
diff --git a/enc/iso_8859_3.c b/enc/iso_8859_3.c
index 85572574b8..81c0c742b6 100644
--- a/enc/iso_8859_3.c
+++ b/enc/iso_8859_3.c
@@ -235,8 +235,6 @@ OnigEncodingDefine(iso_8859_3, ISO_8859_3) = {
is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("ISO8859-3", "ISO-8859-3")
diff --git a/enc/iso_8859_4.c b/enc/iso_8859_4.c
index 771a2cf6e7..ec71c4bcbf 100644
--- a/enc/iso_8859_4.c
+++ b/enc/iso_8859_4.c
@@ -237,8 +237,6 @@ OnigEncodingDefine(iso_8859_4, ISO_8859_4) = {
is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("ISO8859-4", "ISO-8859-4")
diff --git a/enc/iso_8859_5.c b/enc/iso_8859_5.c
index 4ee27b10d8..81cc8e5b32 100644
--- a/enc/iso_8859_5.c
+++ b/enc/iso_8859_5.c
@@ -225,8 +225,6 @@ OnigEncodingDefine(iso_8859_5, ISO_8859_5) = {
is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("ISO8859-5", "ISO-8859-5")
diff --git a/enc/iso_8859_6.c b/enc/iso_8859_6.c
index 638a181dc2..7384061a1f 100644
--- a/enc/iso_8859_6.c
+++ b/enc/iso_8859_6.c
@@ -92,9 +92,7 @@ OnigEncodingDefine(iso_8859_6, ISO_8859_6) = {
is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("ISO8859-6", "ISO-8859-6")
diff --git a/enc/iso_8859_7.c b/enc/iso_8859_7.c
index aa82f880f9..2f916171db 100644
--- a/enc/iso_8859_7.c
+++ b/enc/iso_8859_7.c
@@ -222,9 +222,7 @@ OnigEncodingDefine(iso_8859_7, ISO_8859_7) = {
is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("ISO8859-7", "ISO-8859-7")
diff --git a/enc/iso_8859_8.c b/enc/iso_8859_8.c
index 87a6e7bc9b..bd0754c2b1 100644
--- a/enc/iso_8859_8.c
+++ b/enc/iso_8859_8.c
@@ -92,9 +92,7 @@ OnigEncodingDefine(iso_8859_8, ISO_8859_8) = {
is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("ISO8859-8", "ISO-8859-8")
diff --git a/enc/iso_8859_9.c b/enc/iso_8859_9.c
index 0adafa3ed4..4d46e742e2 100644
--- a/enc/iso_8859_9.c
+++ b/enc/iso_8859_9.c
@@ -228,9 +228,7 @@ OnigEncodingDefine(iso_8859_9, ISO_8859_9) = {
is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("ISO8859-9", "ISO-8859-9")
diff --git a/enc/koi8_r.c b/enc/koi8_r.c
index 8ec48747f8..f5b7d22349 100644
--- a/enc/koi8_r.c
+++ b/enc/koi8_r.c
@@ -213,9 +213,7 @@ OnigEncodingDefine(koi8_r, KOI8_R) = {
koi8_r_is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("CP878", "KOI8-R")
diff --git a/enc/koi8_u.c b/enc/koi8_u.c
index 0e51b6eb80..dfbaa9ac36 100644
--- a/enc/koi8_u.c
+++ b/enc/koi8_u.c
@@ -217,7 +217,5 @@ OnigEncodingDefine(koi8_u, KOI8_U) = {
koi8_u_is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
diff --git a/enc/make_encmake.rb b/enc/make_encmake.rb
index b917eca0bd..ed3680313f 100755
--- a/enc/make_encmake.rb
+++ b/enc/make_encmake.rb
@@ -15,7 +15,6 @@ BUILTIN_ENCS = []
BUILTIN_TRANSES = []
ENC_PATTERNS = []
NOENC_PATTERNS = []
-module_type = :dynamic
until ARGV.empty?
case ARGV[0]
@@ -31,81 +30,11 @@ until ARGV.empty?
when /\A--no-encs=/
NOENC_PATTERNS.concat $'.split
ARGV.shift
- when /\A--module$/
- ARGV.shift
- when /\A--modulestatic$/
- module_type = :static
- ARGV.shift
else
break
end
end
-ALPHANUMERIC_ORDER = proc {|e| e.scan(/(\d+)|(\D+)/).map {|n,a| a||[n.size,n.to_i]}.flatten}
-def target_encodings
- encs = Dir.open($srcdir) {|d| d.grep(/.+\.c\z/)} - BUILTIN_ENCS - ["mktable.c"]
- encs.each {|e| e.chomp!(".c")}
- encs.reject! {|e| !ENC_PATTERNS.any? {|p| File.fnmatch?(p, e)}} if !ENC_PATTERNS.empty?
- encs.reject! {|e| NOENC_PATTERNS.any? {|p| File.fnmatch?(p, e)}}
- encs = encs.sort_by(&ALPHANUMERIC_ORDER)
- deps = Hash.new {[]}
- inc_srcs = Hash.new {[]}
- default_deps = %w[regenc.h oniguruma.h config.h defines.h]
- db = encs.delete("encdb")
- encs.each do |e|
- File.foreach("#$srcdir/#{e}.c") do |l|
- if /^\s*#\s*include\s+(?:"([^\"]+)"|<(ruby\/\sw+.h)>)/ =~ l
- n = $1 || $2
- if /\.c$/ =~ n
- inc_srcs[e] <<= $`
- n = "enc/#{n}"
- end
- deps[e] <<= n unless default_deps.include?(n)
- end
- end
- end
- class << inc_srcs; self; end.class_eval do
- define_method(:expand) do |d|
- d.map {|n| deps[n] | self.expand(self[n])}.flatten
- end
- end
- inc_srcs.each do |e, d|
- deps[e].concat(inc_srcs.expand(d))
- end
- encs.unshift(db)
- return encs, deps
-end
-
-def target_transcoders
- atrans = []
- trans = Dir.open($srcdir+"/trans") {|d|
- d.select {|e|
- if e.chomp!('.trans')
- atrans << e
- true
- elsif e.chomp!('.c')
- true
- end
- }
- }
- trans -= BUILTIN_TRANSES
- atrans -= BUILTIN_TRANSES
- trans.uniq!
- atrans = atrans.sort_by(&ALPHANUMERIC_ORDER)
- trans = trans.sort_by(&ALPHANUMERIC_ORDER)
- trans.unshift(trans.delete("transdb"))
- trans.compact!
- trans |= atrans
- trans.map! {|e| "trans/#{e}"}
-
- return atrans, trans
-end
-
-# Constants that "depend" needs.
-MODULE_TYPE = module_type
-ENCS, ENC_DEPS = target_encodings
-ATRANS, TRANS = target_transcoders
-
if File.exist?(depend = File.join($srcdir, "depend"))
erb = ERB.new(File.read(depend), nil, '%')
erb.filename = depend
@@ -119,18 +48,3 @@ mkin.gsub!(/@(#{CONFIG.keys.join('|')})@/) {CONFIG[$1]}
open(ARGV[0], 'wb') {|f|
f.puts mkin, dep
}
-if MODULE_TYPE == :static
- erb = ERB.new(File.read(File.join($srcdir, "encinit.c.erb")), nil, '%-')
- erb.filename = "enc/encinit.c.cerb"
- tmp = erb.result(binding)
- begin
- Dir.mkdir 'enc'
- rescue Errno::EEXIST
- end
- File.open("enc/encinit.c", "w") {|f|
- f.puts "/* Automatically generated from enc/encinit.c.erb"
- f.puts " * Do not edit."
- f.puts " */"
- f.puts tmp
- }
-end
diff --git a/enc/mktable.c b/enc/mktable.c
deleted file mode 100644
index 49acf628d0..0000000000
--- a/enc/mktable.c
+++ /dev/null
@@ -1,1162 +0,0 @@
-/**********************************************************************
- mktable.c
-**********************************************************************/
-/*-
- * Copyright (c) 2002-2007 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 <stdlib.h>
-#include <stdio.h>
-#include <locale.h>
-
-#define __USE_ISOC99
-#include <ctype.h>
-
-#include "regenc.h"
-
-#define ASCII 0
-#define UNICODE_ISO_8859_1 1
-#define ISO_8859_1 2
-#define ISO_8859_2 3
-#define ISO_8859_3 4
-#define ISO_8859_4 5
-#define ISO_8859_5 6
-#define ISO_8859_6 7
-#define ISO_8859_7 8
-#define ISO_8859_8 9
-#define ISO_8859_9 10
-#define ISO_8859_10 11
-#define ISO_8859_11 12
-#define ISO_8859_13 13
-#define ISO_8859_14 14
-#define ISO_8859_15 15
-#define ISO_8859_16 16
-#define KOI8 17
-#define KOI8_R 18
-
-typedef struct {
- int num;
- const char* name;
-} ENC_INFO;
-
-static ENC_INFO Info[] = {
- { ASCII, "ASCII" },
- { UNICODE_ISO_8859_1, "UNICODE_ISO_8859_1" },
- { ISO_8859_1, "ISO_8859_1" },
- { ISO_8859_2, "ISO_8859_2" },
- { ISO_8859_3, "ISO_8859_3" },
- { ISO_8859_4, "ISO_8859_4" },
- { ISO_8859_5, "ISO_8859_5" },
- { ISO_8859_6, "ISO_8859_6" },
- { ISO_8859_7, "ISO_8859_7" },
- { ISO_8859_8, "ISO_8859_8" },
- { ISO_8859_9, "ISO_8859_9" },
- { ISO_8859_10, "ISO_8859_10" },
- { ISO_8859_11, "ISO_8859_11" },
- { ISO_8859_13, "ISO_8859_13" },
- { ISO_8859_14, "ISO_8859_14" },
- { ISO_8859_15, "ISO_8859_15" },
- { ISO_8859_16, "ISO_8859_16" },
- { KOI8, "KOI8" },
- { KOI8_R, "KOI8_R" }
-};
-
-
-static int IsAlpha(int enc, int c)
-{
- if (enc == ASCII)
- return isalpha(c);
-
- if (c >= 0x41 && c <= 0x5a) return 1;
- if (c >= 0x61 && c <= 0x7a) return 1;
-
- switch (enc) {
- case UNICODE_ISO_8859_1:
- case ISO_8859_1:
- case ISO_8859_9:
- if (c == 0xaa) return 1;
- if (c == 0xb5) return 1;
- if (c == 0xba) return 1;
- if (c >= 0xc0 && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xff) return 1;
- break;
-
- case ISO_8859_2:
- if (c == 0xa1 || c == 0xa3) return 1;
- if (c == 0xa5 || c == 0xa6) return 1;
- if (c >= 0xa9 && c <= 0xac) return 1;
- if (c >= 0xae && c <= 0xaf) return 1;
- if (c == 0xb1 || c == 0xb3) return 1;
- if (c == 0xb5 || c == 0xb6) return 1;
- if (c >= 0xb9 && c <= 0xbc) return 1;
- if (c >= 0xbe && c <= 0xbf) return 1;
- if (c >= 0xc0 && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xfe) return 1;
- break;
-
- case ISO_8859_3:
- if (c == 0xa1) return 1;
- if (c == 0xa6) return 1;
- if (c >= 0xa9 && c <= 0xac) return 1;
- if (c == 0xaf) return 1;
- if (c == 0xb1) return 1;
- if (c == 0xb5 || c == 0xb6) return 1;
- if (c >= 0xb9 && c <= 0xbc) return 1;
- if (c == 0xbf) return 1;
- if (c >= 0xc0 && c <= 0xc2) return 1;
- if (c >= 0xc4 && c <= 0xcf) return 1;
- if (c >= 0xd1 && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xe2) return 1;
- if (c >= 0xe4 && c <= 0xef) return 1;
- if (c >= 0xf1 && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xfe) return 1;
- break;
-
- case ISO_8859_4:
- if (c >= 0xa1 && c <= 0xa3) return 1;
- if (c == 0xa5 || c == 0xa6) return 1;
- if (c >= 0xa9 && c <= 0xac) return 1;
- if (c == 0xae) return 1;
- if (c == 0xb1 || c == 0xb3) return 1;
- if (c == 0xb5 || c == 0xb6) return 1;
- if (c >= 0xb9 && c <= 0xbf) return 1;
- if (c >= 0xc0 && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xfe) return 1;
- break;
-
- case ISO_8859_5:
- if (c >= 0xa1 && c <= 0xcf && c != 0xad) return 1;
- if (c >= 0xd0 && c <= 0xff && c != 0xf0 && c != 0xfd) return 1;
- break;
-
- case ISO_8859_6:
- if (c >= 0xc1 && c <= 0xda) return 1;
- if (c >= 0xe0 && c <= 0xf2) return 1;
- break;
-
- case ISO_8859_7:
- if (c == 0xb6) return 1;
- if (c >= 0xb8 && c <= 0xba) return 1;
- if (c == 0xbc) return 1;
- if (c >= 0xbe && c <= 0xbf) return 1;
- if (c == 0xc0) return 1;
- if (c >= 0xc1 && c <= 0xdb && c != 0xd2) return 1;
- if (c >= 0xdc && c <= 0xfe) return 1;
- break;
-
- case ISO_8859_8:
- if (c == 0xb5) return 1;
- if (c >= 0xe0 && c <= 0xfa) return 1;
- break;
-
- case ISO_8859_10:
- if (c >= 0xa1 && c <= 0xa6) return 1;
- if (c >= 0xa8 && c <= 0xac) return 1;
- if (c == 0xae || c == 0xaf) return 1;
- if (c >= 0xb1 && c <= 0xb6) return 1;
- if (c >= 0xb8 && c <= 0xbc) return 1;
- if (c >= 0xbe && c <= 0xff) return 1;
- break;
-
- case ISO_8859_11:
- if (c >= 0xa1 && c <= 0xda) return 1;
- if (c >= 0xdf && c <= 0xfb) return 1;
- break;
-
- case ISO_8859_13:
- if (c == 0xa8) return 1;
- if (c == 0xaa) return 1;
- if (c == 0xaf) return 1;
- if (c == 0xb5) return 1;
- if (c == 0xb8) return 1;
- if (c == 0xba) return 1;
- if (c >= 0xbf && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xfe) return 1;
- break;
-
- case ISO_8859_14:
- if (c == 0xa1 || c == 0xa2) return 1;
- if (c == 0xa4 || c == 0xa5) return 1;
- if (c == 0xa6 || c == 0xa8) return 1;
- if (c >= 0xaa && c <= 0xac) return 1;
- if (c >= 0xaf && c <= 0xb5) return 1;
- if (c >= 0xb7 && c <= 0xff) return 1;
- break;
-
- case ISO_8859_15:
- if (c == 0xaa) return 1;
- if (c == 0xb5) return 1;
- if (c == 0xba) return 1;
- if (c >= 0xc0 && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xff) return 1;
- if (c == 0xa6) return 1;
- if (c == 0xa8) return 1;
- if (c == 0xb4) return 1;
- if (c == 0xb8) return 1;
- if (c == 0xbc) return 1;
- if (c == 0xbd) return 1;
- if (c == 0xbe) return 1;
- break;
-
- case ISO_8859_16:
- if (c == 0xa1) return 1;
- if (c == 0xa2) return 1;
- if (c == 0xa3) return 1;
- if (c == 0xa6) return 1;
- if (c == 0xa8) return 1;
- if (c == 0xaa) return 1;
- if (c == 0xac) return 1;
- if (c == 0xae) return 1;
- if (c == 0xaf) return 1;
- if (c == 0xb2) return 1;
- if (c == 0xb3) return 1;
- if (c == 0xb4) return 1;
- if (c >= 0xb8 && c <= 0xba) return 1;
- if (c == 0xbc) return 1;
- if (c == 0xbd) return 1;
- if (c == 0xbe) return 1;
- if (c == 0xbf) return 1;
- if (c >= 0xc0 && c <= 0xde) return 1;
- if (c >= 0xdf && c <= 0xff) return 1;
- break;
-
- case KOI8_R:
- if (c == 0xa3 || c == 0xb3) return 1;
- /* fall */
- case KOI8:
- if (c >= 0xc0 && c <= 0xff) return 1;
- break;
-
- default:
- exit(-1);
- }
-
- return 0;
-}
-
-static int IsBlank(int enc, int c)
-{
- if (enc == ASCII)
- return isblank(c);
-
- if (c == 0x09 || c == 0x20) return 1;
-
- switch (enc) {
- case UNICODE_ISO_8859_1:
- case ISO_8859_1:
- case ISO_8859_2:
- case ISO_8859_3:
- case ISO_8859_4:
- case ISO_8859_5:
- case ISO_8859_6:
- case ISO_8859_7:
- case ISO_8859_8:
- case ISO_8859_9:
- case ISO_8859_10:
- case ISO_8859_11:
- case ISO_8859_13:
- case ISO_8859_14:
- case ISO_8859_15:
- case ISO_8859_16:
- case KOI8:
- if (c == 0xa0) return 1;
- break;
-
- case KOI8_R:
- if (c == 0x9a) return 1;
- break;
-
- default:
- exit(-1);
- }
-
- return 0;
-}
-
-static int IsCntrl(int enc, int c)
-{
- if (enc == ASCII)
- return iscntrl(c);
-
- if (c >= 0x00 && c <= 0x1F) return 1;
-
- switch (enc) {
- case UNICODE_ISO_8859_1:
- if (c == 0xad) return 1;
- /* fall */
- case ISO_8859_1:
- case ISO_8859_2:
- case ISO_8859_3:
- case ISO_8859_4:
- case ISO_8859_5:
- case ISO_8859_6:
- case ISO_8859_7:
- case ISO_8859_8:
- case ISO_8859_9:
- case ISO_8859_10:
- case ISO_8859_11:
- case ISO_8859_13:
- case ISO_8859_14:
- case ISO_8859_15:
- case ISO_8859_16:
- case KOI8:
- if (c >= 0x7f && c <= 0x9F) return 1;
- break;
-
-
- case KOI8_R:
- if (c == 0x7f) return 1;
- break;
-
- default:
- exit(-1);
- }
-
- return 0;
-}
-
-static int IsDigit(int enc ARG_UNUSED, int c)
-{
- if (c >= 0x30 && c <= 0x39) return 1;
- return 0;
-}
-
-static int IsGraph(int enc, int c)
-{
- if (enc == ASCII)
- return isgraph(c);
-
- if (c >= 0x21 && c <= 0x7e) return 1;
-
- switch (enc) {
- case UNICODE_ISO_8859_1:
- case ISO_8859_1:
- case ISO_8859_2:
- case ISO_8859_4:
- case ISO_8859_5:
- case ISO_8859_9:
- case ISO_8859_10:
- case ISO_8859_13:
- case ISO_8859_14:
- case ISO_8859_15:
- case ISO_8859_16:
- if (c >= 0xa1 && c <= 0xff) return 1;
- break;
-
- case ISO_8859_3:
- if (c >= 0xa1) {
- if (c == 0xa5 || c == 0xae || c == 0xbe || c == 0xc3 || c == 0xd0 ||
- c == 0xe3 || c == 0xf0)
- return 0;
- else
- return 1;
- }
- break;
-
- case ISO_8859_6:
- if (c == 0xa4 || c == 0xac || c == 0xad || c == 0xbb || c == 0xbf)
- return 1;
- if (c >= 0xc1 && c <= 0xda) return 1;
- if (c >= 0xe0 && c <= 0xf2) return 1;
- break;
-
- case ISO_8859_7:
- if (c >= 0xa1 && c <= 0xfe &&
- c != 0xa4 && c != 0xa5 && c != 0xaa &&
- c != 0xae && c != 0xd2) return 1;
- break;
-
- case ISO_8859_8:
- if (c >= 0xa2 && c <= 0xfa) {
- if (c >= 0xbf && c <= 0xde) return 0;
- return 1;
- }
- break;
-
- case ISO_8859_11:
- if (c >= 0xa1 && c <= 0xda) return 1;
- if (c >= 0xdf && c <= 0xfb) return 1;
- break;
-
- case KOI8:
- if (c >= 0xc0 && c <= 0xff) return 1;
- break;
-
- case KOI8_R:
- if (c >= 0x80 && c <= 0xff && c != 0x9a) return 1;
- break;
-
- default:
- exit(-1);
- }
-
- return 0;
-}
-
-static int IsLower(int enc, int c)
-{
- if (enc == ASCII)
- return islower(c);
-
- if (c >= 0x61 && c <= 0x7a) return 1;
-
- switch (enc) {
- case UNICODE_ISO_8859_1:
- case ISO_8859_1:
- case ISO_8859_9:
- if (c == 0xaa) return 1;
- if (c == 0xb5) return 1;
- if (c == 0xba) return 1;
- if (c >= 0xdf && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xff) return 1;
- break;
-
- case ISO_8859_2:
- if (c == 0xb1 || c == 0xb3) return 1;
- if (c == 0xb5 || c == 0xb6) return 1;
- if (c >= 0xb9 && c <= 0xbc) return 1;
- if (c >= 0xbe && c <= 0xbf) return 1;
- if (c >= 0xdf && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xfe) return 1;
- break;
-
- case ISO_8859_3:
- if (c == 0xb1) return 1;
- if (c == 0xb5 || c == 0xb6) return 1;
- if (c >= 0xb9 && c <= 0xbc) return 1;
- if (c == 0xbf) return 1;
- if (c == 0xdf) return 1;
- if (c >= 0xe0 && c <= 0xe2) return 1;
- if (c >= 0xe4 && c <= 0xef) return 1;
- if (c >= 0xf1 && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xfe) return 1;
- break;
-
- case ISO_8859_4:
- if (c == 0xa2) return 1;
- if (c == 0xb1 || c == 0xb3) return 1;
- if (c == 0xb5 || c == 0xb6) return 1;
- if (c >= 0xb9 && c <= 0xbc) return 1;
- if (c >= 0xbe && c <= 0xbf) return 1;
- if (c == 0xdf) return 1;
- if (c >= 0xe0 && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xfe) return 1;
- break;
-
- case ISO_8859_5:
- if (c >= 0xd0 && c <= 0xff && c != 0xf0 && c != 0xfd) return 1;
- break;
-
- case ISO_8859_6:
- break;
-
- case ISO_8859_7:
- if (c == 0xc0) return 1;
- if (c >= 0xdc && c <= 0xfe) return 1;
- break;
-
- case ISO_8859_8:
- if (c == 0xb5) return 1;
- break;
-
- case ISO_8859_10:
- if (c >= 0xb1 && c <= 0xb6) return 1;
- if (c >= 0xb8 && c <= 0xbc) return 1;
- if (c == 0xbe || c == 0xbf) return 1;
- if (c >= 0xdf && c <= 0xff) return 1;
- break;
-
- case ISO_8859_11:
- break;
-
- case ISO_8859_13:
- if (c == 0xb5) return 1;
- if (c == 0xb8) return 1;
- if (c == 0xba) return 1;
- if (c == 0xbf) return 1;
- if (c >= 0xdf && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xfe) return 1;
- break;
-
- case ISO_8859_14:
- if (c == 0xa2) return 1;
- if (c == 0xa5) return 1;
- if (c == 0xab) return 1;
- if (c == 0xb1 || c == 0xb3 || c == 0xb5) return 1;
- if (c >= 0xb8 && c <= 0xba) return 1;
- if (c == 0xbc) return 1;
- if (c == 0xbe || c == 0xbf) return 1;
- if (c >= 0xdf && c <= 0xff) return 1;
- break;
-
- case ISO_8859_15:
- if (c == 0xaa) return 1;
- if (c == 0xb5) return 1;
- if (c == 0xba) return 1;
- if (c >= 0xdf && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xff) return 1;
- if (c == 0xa8) return 1;
- if (c == 0xb8) return 1;
- if (c == 0xbd) return 1;
- break;
-
- case ISO_8859_16:
- if (c == 0xa2) return 1;
- if (c == 0xa8) return 1;
- if (c == 0xae) return 1;
- if (c == 0xb3) return 1;
- if (c >= 0xb8 && c <= 0xba) return 1;
- if (c == 0xbd) return 1;
- if (c == 0xbf) return 1;
- if (c >= 0xdf && c <= 0xff) return 1;
- break;
-
- case KOI8_R:
- if (c == 0xa3) return 1;
- /* fall */
- case KOI8:
- if (c >= 0xc0 && c <= 0xdf) return 1;
- break;
-
- default:
- exit(-1);
- }
-
- return 0;
-}
-
-static int IsPrint(int enc, int c)
-{
- if (enc == ASCII)
- return isprint(c);
-
- if (c >= 0x20 && c <= 0x7e) return 1;
-
- switch (enc) {
- case UNICODE_ISO_8859_1:
- /* if (c >= 0x09 && c <= 0x0d) return 1; */
- if (c == 0x85) return 1;
- /* fall */
- case ISO_8859_1:
- case ISO_8859_2:
- case ISO_8859_4:
- case ISO_8859_5:
- case ISO_8859_9:
- case ISO_8859_10:
- case ISO_8859_13:
- case ISO_8859_14:
- case ISO_8859_15:
- case ISO_8859_16:
- if (c >= 0xa0 && c <= 0xff) return 1;
- break;
-
- case ISO_8859_3:
- if (c >= 0xa0) {
- if (c == 0xa5 || c == 0xae || c == 0xbe || c == 0xc3 || c == 0xd0 ||
- c == 0xe3 || c == 0xf0)
- return 0;
- else
- return 1;
- }
- break;
-
- case ISO_8859_6:
- if (c == 0xa0) return 1;
- if (c == 0xa4 || c == 0xac || c == 0xad || c == 0xbb || c == 0xbf)
- return 1;
- if (c >= 0xc1 && c <= 0xda) return 1;
- if (c >= 0xe0 && c <= 0xf2) return 1;
- break;
-
- case ISO_8859_7:
- if (c >= 0xa0 && c <= 0xfe &&
- c != 0xa4 && c != 0xa5 && c != 0xaa &&
- c != 0xae && c != 0xd2) return 1;
- break;
-
- case ISO_8859_8:
- if (c >= 0xa0 && c <= 0xfa) {
- if (c >= 0xbf && c <= 0xde) return 0;
- if (c == 0xa1) return 0;
- return 1;
- }
- break;
-
- case ISO_8859_11:
- if (c >= 0xa0 && c <= 0xda) return 1;
- if (c >= 0xdf && c <= 0xfb) return 1;
- break;
-
- case KOI8:
- if (c == 0xa0) return 1;
- if (c >= 0xc0 && c <= 0xff) return 1;
- break;
-
- case KOI8_R:
- if (c >= 0x80 && c <= 0xff) return 1;
- break;
-
- default:
- exit(-1);
- }
-
- return 0;
-}
-
-static int IsPunct(int enc, int c)
-{
- if (enc == ASCII)
- return ispunct(c);
-
- if (enc == UNICODE_ISO_8859_1) {
- if (c == 0x24 || c == 0x2b || c == 0x5e || c == 0x60 ||
- c == 0x7c || c == 0x7e) return 1;
- if (c >= 0x3c && c <= 0x3e) return 1;
- }
-
- if (c >= 0x21 && c <= 0x2f) return 1;
- if (c >= 0x3a && c <= 0x40) return 1;
- if (c >= 0x5b && c <= 0x60) return 1;
- if (c >= 0x7b && c <= 0x7e) return 1;
-
- switch (enc) {
- case ISO_8859_1:
- case ISO_8859_9:
- case ISO_8859_15:
- if (c == 0xad) return 1;
- /* fall */
- case UNICODE_ISO_8859_1:
- if (c == 0xa1) return 1;
- if (c == 0xab) return 1;
- if (c == 0xb7) return 1;
- if (c == 0xbb) return 1;
- if (c == 0xbf) return 1;
- break;
-
- case ISO_8859_2:
- case ISO_8859_4:
- case ISO_8859_5:
- case ISO_8859_14:
- if (c == 0xad) return 1;
- break;
-
- case ISO_8859_3:
- case ISO_8859_10:
- if (c == 0xad) return 1;
- if (c == 0xb7) return 1;
- if (c == 0xbd) return 1;
- break;
-
- case ISO_8859_6:
- if (c == 0xac) return 1;
- if (c == 0xad) return 1;
- if (c == 0xbb) return 1;
- if (c == 0xbf) return 1;
- break;
-
- case ISO_8859_7:
- if (c == 0xa1 || c == 0xa2) return 1;
- if (c == 0xab) return 1;
- if (c == 0xaf) return 1;
- if (c == 0xad) return 1;
- if (c == 0xb7 || c == 0xbb) return 1;
- break;
-
- case ISO_8859_8:
- if (c == 0xab) return 1;
- if (c == 0xad) return 1;
- if (c == 0xb7) return 1;
- if (c == 0xbb) return 1;
- if (c == 0xdf) return 1;
- break;
-
- case ISO_8859_13:
- if (c == 0xa1 || c == 0xa5) return 1;
- if (c == 0xab || c == 0xad) return 1;
- if (c == 0xb4 || c == 0xb7) return 1;
- if (c == 0xbb) return 1;
- if (c == 0xff) return 1;
- break;
-
- case ISO_8859_16:
- if (c == 0xa5) return 1;
- if (c == 0xab) return 1;
- if (c == 0xad) return 1;
- if (c == 0xb5) return 1;
- if (c == 0xb7) return 1;
- if (c == 0xbb) return 1;
- break;
-
- case KOI8_R:
- if (c == 0x9e) return 1;
- break;
-
- case ISO_8859_11:
- case KOI8:
- break;
-
- default:
- exit(-1);
- }
-
- return 0;
-}
-
-static int IsSpace(int enc, int c)
-{
- if (enc == ASCII)
- return isspace(c);
-
- if (c >= 0x09 && c <= 0x0d) return 1;
- if (c == 0x20) return 1;
-
- switch (enc) {
- case UNICODE_ISO_8859_1:
- if (c == 0x85) return 1;
- /* fall */
- case ISO_8859_1:
- case ISO_8859_2:
- case ISO_8859_3:
- case ISO_8859_4:
- case ISO_8859_5:
- case ISO_8859_6:
- case ISO_8859_7:
- case ISO_8859_8:
- case ISO_8859_9:
- case ISO_8859_10:
- case ISO_8859_11:
- case ISO_8859_13:
- case ISO_8859_14:
- case ISO_8859_15:
- case ISO_8859_16:
- case KOI8:
- if (c == 0xa0) return 1;
- break;
-
- case KOI8_R:
- if (c == 0x9a) return 1;
- break;
-
- default:
- exit(-1);
- }
-
- return 0;
-}
-
-static int IsUpper(int enc, int c)
-{
- if (enc == ASCII)
- return isupper(c);
-
- if (c >= 0x41 && c <= 0x5a) return 1;
-
- switch (enc) {
- case UNICODE_ISO_8859_1:
- case ISO_8859_1:
- case ISO_8859_9:
- if (c >= 0xc0 && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xde) return 1;
- break;
-
- case ISO_8859_2:
- if (c == 0xa1 || c == 0xa3) return 1;
- if (c == 0xa5 || c == 0xa6) return 1;
- if (c >= 0xa9 && c <= 0xac) return 1;
- if (c >= 0xae && c <= 0xaf) return 1;
- if (c >= 0xc0 && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xde) return 1;
- break;
-
- case ISO_8859_3:
- if (c == 0xa1) return 1;
- if (c == 0xa6) return 1;
- if (c >= 0xa9 && c <= 0xac) return 1;
- if (c == 0xaf) return 1;
- if (c >= 0xc0 && c <= 0xc2) return 1;
- if (c >= 0xc4 && c <= 0xcf) return 1;
- if (c >= 0xd1 && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xde) return 1;
- break;
-
- case ISO_8859_4:
- if (c == 0xa1 || c == 0xa3) return 1;
- if (c == 0xa5 || c == 0xa6) return 1;
- if (c >= 0xa9 && c <= 0xac) return 1;
- if (c == 0xae) return 1;
- if (c == 0xbd) return 1;
- if (c >= 0xc0 && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xde) return 1;
- break;
-
- case ISO_8859_5:
- if (c >= 0xa1 && c <= 0xcf && c != 0xad) return 1;
- break;
-
- case ISO_8859_6:
- break;
-
- case ISO_8859_7:
- if (c == 0xb6) return 1;
- if (c >= 0xb8 && c <= 0xba) return 1;
- if (c == 0xbc) return 1;
- if (c >= 0xbe && c <= 0xbf) return 1;
- if (c >= 0xc1 && c <= 0xdb && c != 0xd2) return 1;
- break;
-
- case ISO_8859_8:
- case ISO_8859_11:
- break;
-
- case ISO_8859_10:
- if (c >= 0xa1 && c <= 0xa6) return 1;
- if (c >= 0xa8 && c <= 0xac) return 1;
- if (c == 0xae || c == 0xaf) return 1;
- if (c >= 0xc0 && c <= 0xde) return 1;
- break;
-
- case ISO_8859_13:
- if (c == 0xa8) return 1;
- if (c == 0xaa) return 1;
- if (c == 0xaf) return 1;
- if (c >= 0xc0 && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xde) return 1;
- break;
-
- case ISO_8859_14:
- if (c == 0xa1) return 1;
- if (c == 0xa4 || c == 0xa6) return 1;
- if (c == 0xa8) return 1;
- if (c == 0xaa || c == 0xac) return 1;
- if (c == 0xaf || c == 0xb0) return 1;
- if (c == 0xb2 || c == 0xb4 || c == 0xb7) return 1;
- if (c == 0xbb || c == 0xbd) return 1;
- if (c >= 0xc0 && c <= 0xde) return 1;
- break;
-
- case ISO_8859_15:
- if (c >= 0xc0 && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xde) return 1;
- if (c == 0xa6) return 1;
- if (c == 0xb4) return 1;
- if (c == 0xbc) return 1;
- if (c == 0xbe) return 1;
- break;
-
- case ISO_8859_16:
- if (c == 0xa1) return 1;
- if (c == 0xa3) return 1;
- if (c == 0xa6) return 1;
- if (c == 0xaa) return 1;
- if (c == 0xac) return 1;
- if (c == 0xaf) return 1;
- if (c == 0xb2) return 1;
- if (c == 0xb4) return 1;
- if (c == 0xbc) return 1;
- if (c == 0xbe) return 1;
- if (c >= 0xc0 && c <= 0xde) return 1;
- break;
-
- case KOI8_R:
- if (c == 0xb3) return 1;
- /* fall */
- case KOI8:
- if (c >= 0xe0 && c <= 0xff) return 1;
- break;
-
- default:
- exit(-1);
- }
-
- return 0;
-}
-
-static int IsXDigit(int enc, int c)
-{
- if (enc == ASCII)
- return isxdigit(c);
-
- if (c >= 0x30 && c <= 0x39) return 1;
- if (c >= 0x41 && c <= 0x46) return 1;
- if (c >= 0x61 && c <= 0x66) return 1;
- return 0;
-}
-
-static int IsWord(int enc, int c)
-{
- if (enc == ASCII) {
- return (isalpha(c) || isdigit(c) || c == 0x5f);
- }
-
- if (c >= 0x30 && c <= 0x39) return 1;
- if (c >= 0x41 && c <= 0x5a) return 1;
- if (c == 0x5f) return 1;
- if (c >= 0x61 && c <= 0x7a) return 1;
-
- switch (enc) {
- case UNICODE_ISO_8859_1:
- case ISO_8859_1:
- case ISO_8859_9:
- if (c == 0xaa) return 1;
- if (c >= 0xb2 && c <= 0xb3) return 1;
- if (c == 0xb5) return 1;
- if (c >= 0xb9 && c <= 0xba) return 1;
- if (c >= 0xbc && c <= 0xbe) return 1;
- if (c >= 0xc0 && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xff) return 1;
- break;
-
- case ISO_8859_2:
- if (c == 0xa1 || c == 0xa3) return 1;
- if (c == 0xa5 || c == 0xa6) return 1;
- if (c >= 0xa9 && c <= 0xac) return 1;
- if (c >= 0xae && c <= 0xaf) return 1;
- if (c == 0xb1 || c == 0xb3) return 1;
- if (c == 0xb5 || c == 0xb6) return 1;
- if (c >= 0xb9 && c <= 0xbc) return 1;
- if (c >= 0xbe && c <= 0xbf) return 1;
- if (c >= 0xc0 && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xfe) return 1;
- break;
-
- case ISO_8859_3:
- if (c == 0xa1) return 1;
- if (c == 0xa6) return 1;
- if (c >= 0xa9 && c <= 0xac) return 1;
- if (c == 0xaf) return 1;
- if (c >= 0xb1 && c <= 0xb3) return 1;
- if (c == 0xb5 || c == 0xb6) return 1;
- if (c >= 0xb9 && c <= 0xbd) return 1;
- if (c == 0xbf) return 1;
- if (c >= 0xc0 && c <= 0xc2) return 1;
- if (c >= 0xc4 && c <= 0xcf) return 1;
- if (c >= 0xd1 && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xe2) return 1;
- if (c >= 0xe4 && c <= 0xef) return 1;
- if (c >= 0xf1 && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xfe) return 1;
- break;
-
- case ISO_8859_4:
- if (c >= 0xa1 && c <= 0xa3) return 1;
- if (c == 0xa5 || c == 0xa6) return 1;
- if (c >= 0xa9 && c <= 0xac) return 1;
- if (c == 0xae) return 1;
- if (c == 0xb1 || c == 0xb3) return 1;
- if (c == 0xb5 || c == 0xb6) return 1;
- if (c >= 0xb9 && c <= 0xbf) return 1;
- if (c >= 0xc0 && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xfe) return 1;
- break;
-
- case ISO_8859_5:
- if (c >= 0xa1 && c <= 0xcf && c != 0xad) return 1;
- if (c >= 0xd0 && c <= 0xff && c != 0xf0 && c != 0xfd) return 1;
- break;
-
- case ISO_8859_6:
- if (c >= 0xc1 && c <= 0xda) return 1;
- if (c >= 0xe0 && c <= 0xea) return 1;
- if (c >= 0xeb && c <= 0xf2) return 1;
- break;
-
- case ISO_8859_7:
- if (c == 0xb2 || c == 0xb3) return 1;
- if (c == 0xb6) return 1;
- if (c >= 0xb8 && c <= 0xba) return 1;
- if (c >= 0xbc && c <= 0xbf) return 1;
- if (c == 0xc0) return 1;
- if (c >= 0xc1 && c <= 0xdb && c != 0xd2) return 1;
- if (c >= 0xdc && c <= 0xfe) return 1;
- break;
-
- case ISO_8859_8:
- if (c == 0xb2 || c == 0xb3 || c == 0xb5 || c == 0xb9) return 1;
- if (c >= 0xbc && c <= 0xbe) return 1;
- if (c >= 0xe0 && c <= 0xfa) return 1;
- break;
-
- case ISO_8859_10:
- if (c >= 0xa1 && c <= 0xff) {
- if (c != 0xa7 && c != 0xad && c != 0xb0 && c != 0xb7 && c != 0xbd)
- return 1;
- }
- break;
-
- case ISO_8859_11:
- if (c >= 0xa1 && c <= 0xda) return 1;
- if (c >= 0xdf && c <= 0xfb) return 1;
- break;
-
- case ISO_8859_13:
- if (c == 0xa8) return 1;
- if (c == 0xaa) return 1;
- if (c == 0xaf) return 1;
- if (c == 0xb2 || c == 0xb3 || c == 0xb5 || c == 0xb9) return 1;
- if (c >= 0xbc && c <= 0xbe) return 1;
- if (c == 0xb8) return 1;
- if (c == 0xba) return 1;
- if (c >= 0xbf && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xfe) return 1;
- break;
-
- case ISO_8859_14:
- if (c >= 0xa1 && c <= 0xff) {
- if (c == 0xa3 || c == 0xa7 || c == 0xa9 || c == 0xad || c == 0xae ||
- c == 0xb6) return 0;
- return 1;
- }
- break;
-
- case ISO_8859_15:
- if (c == 0xaa) return 1;
- if (c >= 0xb2 && c <= 0xb3) return 1;
- if (c == 0xb5) return 1;
- if (c >= 0xb9 && c <= 0xba) return 1;
- if (c >= 0xbc && c <= 0xbe) return 1;
- if (c >= 0xc0 && c <= 0xd6) return 1;
- if (c >= 0xd8 && c <= 0xf6) return 1;
- if (c >= 0xf8 && c <= 0xff) return 1;
- if (c == 0xa6) return 1;
- if (c == 0xa8) return 1;
- if (c == 0xb4) return 1;
- if (c == 0xb8) return 1;
- break;
-
- case ISO_8859_16:
- if (c == 0xa1) return 1;
- if (c == 0xa2) return 1;
- if (c == 0xa3) return 1;
- if (c == 0xa6) return 1;
- if (c == 0xa8) return 1;
- if (c == 0xaa) return 1;
- if (c == 0xac) return 1;
- if (c == 0xae) return 1;
- if (c == 0xaf) return 1;
- if (c == 0xb2) return 1;
- if (c == 0xb3) return 1;
- if (c == 0xb4) return 1;
- if (c >= 0xb8 && c <= 0xba) return 1;
- if (c == 0xbc) return 1;
- if (c == 0xbd) return 1;
- if (c == 0xbe) return 1;
- if (c == 0xbf) return 1;
- if (c >= 0xc0 && c <= 0xde) return 1;
- if (c >= 0xdf && c <= 0xff) return 1;
- break;
-
- case KOI8_R:
- if (c == 0x9d) return 1;
- if (c == 0xa3 || c == 0xb3) return 1;
- /* fall */
- case KOI8:
- if (c >= 0xc0 && c <= 0xff) return 1;
- break;
-
- default:
- exit(-1);
- }
-
- return 0;
-}
-
-static int IsAscii(int enc ARG_UNUSED, int c)
-{
- if (c >= 0x00 && c <= 0x7f) return 1;
- return 0;
-}
-
-static int IsNewline(int enc ARG_UNUSED, int c)
-{
- if (c == 0x0a) return 1;
- return 0;
-}
-
-static int exec(FILE* fp, ENC_INFO* einfo)
-{
-#define NCOL 8
-
- int c, val, enc;
-
- enc = einfo->num;
-
- fprintf(fp, "static const unsigned short Enc%s_CtypeTable[256] = {\n",
- einfo->name);
-
- for (c = 0; c < 256; c++) {
- val = 0;
- if (IsNewline(enc, c)) val |= BIT_CTYPE_NEWLINE;
- if (IsAlpha (enc, c)) val |= (BIT_CTYPE_ALPHA | BIT_CTYPE_ALNUM);
- if (IsBlank (enc, c)) val |= BIT_CTYPE_BLANK;
- if (IsCntrl (enc, c)) val |= BIT_CTYPE_CNTRL;
- if (IsDigit (enc, c)) val |= (BIT_CTYPE_DIGIT | BIT_CTYPE_ALNUM);
- if (IsGraph (enc, c)) val |= BIT_CTYPE_GRAPH;
- if (IsLower (enc, c)) val |= BIT_CTYPE_LOWER;
- if (IsPrint (enc, c)) val |= BIT_CTYPE_PRINT;
- if (IsPunct (enc, c)) val |= BIT_CTYPE_PUNCT;
- if (IsSpace (enc, c)) val |= BIT_CTYPE_SPACE;
- if (IsUpper (enc, c)) val |= BIT_CTYPE_UPPER;
- if (IsXDigit(enc, c)) val |= BIT_CTYPE_XDIGIT;
- if (IsWord (enc, c)) val |= BIT_CTYPE_WORD;
- if (IsAscii (enc, c)) val |= BIT_CTYPE_ASCII;
-
- if (c % NCOL == 0) fputs(" ", fp);
- fprintf(fp, "0x%04x", val);
- if (c != 255) fputs(",", fp);
- if (c != 0 && c % NCOL == (NCOL-1))
- fputs("\n", fp);
- else
- fputs(" ", fp);
- }
- fprintf(fp, "};\n");
- return 0;
-}
-
-extern int main(int argc ARG_UNUSED, char* argv[] ARG_UNUSED)
-{
- int i;
- FILE* fp = stdout;
-
- setlocale(LC_ALL, "C");
- /* setlocale(LC_ALL, "POSIX"); */
- /* setlocale(LC_ALL, "en_GB.iso88591"); */
- /* setlocale(LC_ALL, "de_BE.iso88591"); */
- /* setlocale(LC_ALL, "fr_FR.iso88591"); */
-
- for (i = 0; i < (int )(sizeof(Info)/sizeof(ENC_INFO)); i++) {
- exec(fp, &Info[i]);
- }
-
- return 0;
-}
diff --git a/enc/shift_jis.c b/enc/shift_jis.c
index 5f5a802874..9dcacb584d 100644
--- a/enc/shift_jis.c
+++ b/enc/shift_jis.c
@@ -1,9 +1,8 @@
/**********************************************************************
- sjis.c - Onigmo (Oniguruma-mod) (regular expression library)
+ sjis.c - Oniguruma (regular expression library)
**********************************************************************/
/*-
* Copyright (c) 2002-2008 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
- * Copyright (c) 2011 K.Takata <kentkt AT csc DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -68,97 +67,6 @@ static const char SJIS_CAN_BE_TRAIL_TABLE[256] = {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0
};
-static const OnigPairCaseFoldCodes CaseFoldMap[] = {
- /* Fullwidth Alphabet */
- { 0x8260, 0x8281 },
- { 0x8261, 0x8282 },
- { 0x8262, 0x8283 },
- { 0x8263, 0x8284 },
- { 0x8264, 0x8285 },
- { 0x8265, 0x8286 },
- { 0x8266, 0x8287 },
- { 0x8267, 0x8288 },
- { 0x8268, 0x8289 },
- { 0x8269, 0x828a },
- { 0x826a, 0x828b },
- { 0x826b, 0x828c },
- { 0x826c, 0x828d },
- { 0x826d, 0x828e },
- { 0x826e, 0x828f },
- { 0x826f, 0x8290 },
- { 0x8270, 0x8291 },
- { 0x8271, 0x8292 },
- { 0x8272, 0x8293 },
- { 0x8273, 0x8294 },
- { 0x8274, 0x8295 },
- { 0x8275, 0x8296 },
- { 0x8276, 0x8297 },
- { 0x8277, 0x8298 },
- { 0x8278, 0x8299 },
- { 0x8279, 0x829a },
-
- /* Greek */
- { 0x839f, 0x83bf },
- { 0x83a0, 0x83c0 },
- { 0x83a1, 0x83c1 },
- { 0x83a2, 0x83c2 },
- { 0x83a3, 0x83c3 },
- { 0x83a4, 0x83c4 },
- { 0x83a5, 0x83c5 },
- { 0x83a6, 0x83c6 },
- { 0x83a7, 0x83c7 },
- { 0x83a8, 0x83c8 },
- { 0x83a9, 0x83c9 },
- { 0x83aa, 0x83ca },
- { 0x83ab, 0x83cb },
- { 0x83ac, 0x83cc },
- { 0x83ad, 0x83cd },
- { 0x83ae, 0x83ce },
- { 0x83af, 0x83cf },
- { 0x83b0, 0x83d0 },
- { 0x83b1, 0x83d1 },
- { 0x83b2, 0x83d2 },
- { 0x83b3, 0x83d3 },
- { 0x83b4, 0x83d4 },
- { 0x83b5, 0x83d5 },
- { 0x83b6, 0x83d6 },
-
- /* Cyrillic */
- { 0x8440, 0x8470 },
- { 0x8441, 0x8471 },
- { 0x8442, 0x8472 },
- { 0x8443, 0x8473 },
- { 0x8444, 0x8474 },
- { 0x8445, 0x8475 },
- { 0x8446, 0x8476 },
- { 0x8447, 0x8477 },
- { 0x8448, 0x8478 },
- { 0x8449, 0x8479 },
- { 0x844a, 0x847a },
- { 0x844b, 0x847b },
- { 0x844c, 0x847c },
- { 0x844d, 0x847d },
- { 0x844e, 0x847e },
- { 0x844f, 0x8480 },
- { 0x8450, 0x8481 },
- { 0x8451, 0x8482 },
- { 0x8452, 0x8483 },
- { 0x8453, 0x8484 },
- { 0x8454, 0x8485 },
- { 0x8455, 0x8486 },
- { 0x8456, 0x8487 },
- { 0x8457, 0x8488 },
- { 0x8458, 0x8489 },
- { 0x8459, 0x848a },
- { 0x845a, 0x848b },
- { 0x845b, 0x848c },
- { 0x845c, 0x848d },
- { 0x845d, 0x848e },
- { 0x845e, 0x848f },
- { 0x845f, 0x8490 },
- { 0x8460, 0x8491 },
-};
-
#define SJIS_ISMB_FIRST(byte) (EncLen_SJIS[byte] > 1)
#define SJIS_ISMB_TRAIL(byte) SJIS_CAN_BE_TRAIL_TABLE[(byte)]
@@ -230,9 +138,6 @@ code_to_mbclen(OnigCodePoint code, OnigEncoding enc ARG_UNUSED)
return ONIGERR_INVALID_CODE_POINT_VALUE;
}
else if (code <= 0xffff) {
- int low = code & 0xff;
- if (! SJIS_ISMB_TRAIL(low))
- return ONIGERR_INVALID_CODE_POINT_VALUE;
return 2;
}
else
@@ -245,7 +150,7 @@ mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc)
int c, i, len;
OnigCodePoint n;
- len = mbc_enc_len(p, end, enc);
+ len = enclen(enc, p, end);
c = *p++;
n = c;
if (len == 1) return n;
@@ -267,90 +172,10 @@ code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc)
*p++ = (UChar )(code & 0xff);
#if 0
- if (mbc_enc_len(buf, p, enc) != (p - buf))
+ if (enclen(enc, buf) != (p - buf))
return REGERR_INVALID_CODE_POINT_VALUE;
#endif
- return (int )(p - buf);
-}
-
-static int
-apply_all_case_fold(OnigCaseFoldType flag,
- OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc)
-{
- return onigenc_apply_all_case_fold_with_map(
- sizeof(CaseFoldMap)/sizeof(OnigPairCaseFoldCodes), CaseFoldMap, 0,
- flag, f, arg);
-}
-
-static OnigCodePoint
-get_lower_case(OnigCodePoint code)
-{
- if (ONIGENC_IS_IN_RANGE(code, 0x8260, 0x8279)) {
- /* Fullwidth Alphabet */
- return (OnigCodePoint )(code + 0x0021);
- }
- else if (ONIGENC_IS_IN_RANGE(code, 0x839f, 0x83b6)) {
- /* Greek */
- return (OnigCodePoint )(code + 0x0020);
- }
- else if (ONIGENC_IS_IN_RANGE(code, 0x8440, 0x8460)) {
- /* Cyrillic */
- int d = (code >= 0x844f) ? 1 : 0;
- return (OnigCodePoint )(code + (0x0030 + d));
- }
- return code;
-}
-
-static OnigCodePoint
-get_upper_case(OnigCodePoint code)
-{
- if (ONIGENC_IS_IN_RANGE(code, 0x8281, 0x829a)) {
- /* Fullwidth Alphabet */
- return (OnigCodePoint )(code - 0x0021);
- }
- else if (ONIGENC_IS_IN_RANGE(code, 0x83bf, 0x83d6)) {
- /* Greek */
- return (OnigCodePoint )(code - 0x0020);
- }
- else if (ONIGENC_IS_IN_RANGE(code, 0x8470, 0x847e) ||
- ONIGENC_IS_IN_RANGE(code, 0x8480, 0x8491)) {
- /* Cyrillic */
- int d = (code >= 0x8480) ? 1 : 0;
- return (OnigCodePoint )(code - (0x0030 - d));
- }
- return code;
-}
-
-static int
-get_case_fold_codes_by_str(OnigCaseFoldType flag,
- const OnigUChar* p, const OnigUChar* end,
- OnigCaseFoldCodeItem items[], OnigEncoding enc)
-{
- int len;
- OnigCodePoint code, code_lo, code_up;
-
- code = mbc_to_code(p, end, enc);
- if (ONIGENC_IS_ASCII_CODE(code))
- return onigenc_ascii_get_case_fold_codes_by_str(flag, p, end, items, enc);
-
- len = mbc_enc_len(p, end, enc);
- code_lo = get_lower_case(code);
- code_up = get_upper_case(code);
-
- if (code != code_lo) {
- items[0].byte_len = len;
- items[0].code_len = 1;
- items[0].code[0] = code_lo;
- return 1;
- }
- else if (code != code_up) {
- items[0].byte_len = len;
- items[0].code_len = 1;
- items[0].code[0] = code_up;
- return 1;
- }
-
- return 0;
+ return (int)(p - buf);
}
static int
@@ -366,11 +191,12 @@ mbc_case_fold(OnigCaseFoldType flag,
return 1;
}
else {
- OnigCodePoint code;
- int len;
+ int i;
+ int len = enclen(enc, p, end);
- code = get_lower_case(mbc_to_code(p, end, enc));
- len = code_to_mbc(code, lower, enc);
+ for (i = 0; i < len; i++) {
+ *lower++ = *p++;
+ }
(*pp) += len;
return len; /* return byte length of converted char to lower */
}
@@ -419,7 +245,7 @@ left_adjust_char_head(const UChar* start, const UChar* s, const UChar* end, Onig
}
}
}
- len = mbc_enc_len(p, end, enc);
+ len = enclen(enc, p, end);
if (p + len > s) return (UChar* )p;
p += len;
return (UChar* )(p + ((s - p) & ~1));
@@ -452,47 +278,6 @@ static const OnigCodePoint CR_Katakana[] = {
0x8380, 0x8396,
}; /* CR_Katakana */
-#ifdef ENC_CP932
-static const OnigCodePoint CR_Han[] = {
- 6,
- 0x8157, 0x8157,
- 0x889f, 0x9872, /* Kanji level 1 */
- 0x989f, 0x9ffc, /* Kanji level 2 */
- 0xe040, 0xeaa4, /* Kanji level 2 */
- 0xed40, 0xeeec, /* NEC-selected IBM extended characters (without symbols) */
- 0xfa5c, 0xfc4b, /* IBM extended characters (without symbols) */
-}; /* CR_Han */
-#else
-static const OnigCodePoint CR_Han[] = {
- 4,
- 0x8157, 0x8157,
- 0x889f, 0x9872, /* Kanji level 1 */
- 0x989f, 0x9ffc, /* Kanji level 2 */
- 0xe040, 0xeaa4, /* Kanji level 2 */
-}; /* CR_Han */
-#endif
-
-static const OnigCodePoint CR_Latin[] = {
- 4,
- 0x0041, 0x005a,
- 0x0061, 0x007a,
- 0x8260, 0x8279,
- 0x8281, 0x829a,
-}; /* CR_Latin */
-
-static const OnigCodePoint CR_Greek[] = {
- 2,
- 0x839f, 0x83b6,
- 0x83bf, 0x83d6,
-}; /* CR_Greek */
-
-static const OnigCodePoint CR_Cyrillic[] = {
- 3,
- 0x8440, 0x8460,
- 0x8470, 0x847f,
- 0x8480, 0x8491,
-}; /* CR_Cyrillic */
-
static int
init_property_list(void)
{
@@ -500,10 +285,6 @@ init_property_list(void)
PROPERTY_LIST_ADD_PROP("hiragana", CR_Hiragana);
PROPERTY_LIST_ADD_PROP("katakana", CR_Katakana);
- PROPERTY_LIST_ADD_PROP("han", CR_Han);
- PROPERTY_LIST_ADD_PROP("latin", CR_Latin);
- PROPERTY_LIST_ADD_PROP("greek", CR_Greek);
- PROPERTY_LIST_ADD_PROP("cyrillic", CR_Cyrillic);
PropertyInited = 1;
end:
@@ -527,7 +308,7 @@ property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end)
return onigenc_minimum_property_name_to_ctype(enc, s, e);
}
- return (int )ctype;
+ return (int)ctype;
}
static int
@@ -576,7 +357,6 @@ get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out,
}
}
-#ifndef ENC_CP932
OnigEncodingDefine(shift_jis, Shift_JIS) = {
mbc_enc_len,
"Shift_JIS", /* name */
@@ -587,15 +367,14 @@ OnigEncodingDefine(shift_jis, Shift_JIS) = {
code_to_mbclen,
code_to_mbc,
mbc_case_fold,
- apply_all_case_fold,
- get_case_fold_codes_by_str,
+ onigenc_ascii_apply_all_case_fold,
+ onigenc_ascii_get_case_fold_codes_by_str,
property_name_to_ctype,
is_code_ctype,
get_ctype_code_range,
left_adjust_char_head,
is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ 0
};
/*
* Name: Shift_JIS
@@ -605,10 +384,38 @@ OnigEncodingDefine(shift_jis, Shift_JIS) = {
*/
/*
+ * Name: Windows-31J
+ * MIBenum: 2024
+ * Link: http://www.iana.org/assignments/character-sets
+ * Link: http://www.microsoft.com/globaldev/reference/dbcs/932.mspx
+ * Link: http://ja.wikipedia.org/wiki/Windows-31J
+ * Link: http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/windows-932-2000.ucm
+ *
+ * Windows Standard Character Set and its mapping to Unicode by Microsoft.
+ * Since 1.9.3, SJIS is the alias of Windows-31J because its character
+ * set is usually this one even if its mapping may differ.
+ */
+ENC_REPLICATE("Windows-31J", "Shift_JIS")
+ENC_ALIAS("CP932", "Windows-31J")
+ENC_ALIAS("csWindows31J", "Windows-31J") /* IANA. IE6 don't accept Windows-31J but csWindows31J. */
+ENC_ALIAS("SJIS", "Windows-31J")
+
+/*
+ * Name: PCK
+ * Link: http://download.oracle.com/docs/cd/E19253-01/819-0606/x-2chn0/index.html
+ * Link: http://download.oracle.com/docs/cd/E19253-01/819-0606/appb-pckwarn-1/index.html
+ *
+ * Solaris's SJIS variant. Its set is Windows Standard Character Set; it
+ * consists JIS X 0201 Latin (US-ASCII), JIS X 0201 Katakana, JIS X 0208, NEC
+ * special characters, NEC-selected IBM extended characters, and IBM extended
+ * characters. Solaris's iconv seems to use SJIS-open.
+ */
+ENC_ALIAS("PCK", "Windows-31J")
+
+/*
* Name: MacJapanese
* Link: http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/JAPANESE.TXT
* Link: http://ja.wikipedia.org/wiki/MacJapanese
*/
ENC_REPLICATE("MacJapanese", "Shift_JIS")
ENC_ALIAS("MacJapan", "MacJapanese")
-#endif
diff --git a/enc/trans/JIS/JISX0213-1%UCS@BMP.src b/enc/trans/JIS/JISX0213-1%UCS@BMP.src
deleted file mode 100644
index 09377be66b..0000000000
--- a/enc/trans/JIS/JISX0213-1%UCS@BMP.src
+++ /dev/null
@@ -1,1926 +0,0 @@
-# $NetBSD: JISX0213-1%UCS@BMP.src,v 1.1 2007/03/05 16:58:33 tnozaki Exp $
-
-TYPE ROWCOL
-NAME "JISX0213-1/UCS:BMP"
-SRC_ZONE 0x21-0x7E / 0x21-0x7E / 8
-OOB_MODE INVALID
-DST_INVALID 0xFFFE
-DST_UNIT_BITS 16
-
-BEGIN_MAP
-## JIS X 0213:2004 vs Unicode mapping table
-##
-## Date: 22 May 2006
-## License:
-## Copyright (C) 2001 earthian@tama.or.jp, All Rights Reserved.
-## Copyright (C) 2001 I'O, All Rights Reserved.
-## Copyright (C) 2006 Project X0213, All Rights Reserved.
-## You can use, modify, distribute this table freely.
-## Note:
-## 3-XXXX JIS X 0213:2004 plane 1 (GL encoding)
-## 4-XXXX JIS X 0213:2000 plane 2 (GL encoding)
-## [1983] JIS codepoint defined by JIS X 0208-1983
-## [1990] JIS codepoint defined by JIS X 0208-1990
-## [2000] JIS codepoint defined by JIS X 0213:2000
-## [2004] JIS codepoint defined by JIS X 0213:2004
-## [Unicode3.1] UCS codepoint defined by Unicode 3.1
-## [Unicode3.2] UCS codepoint defined by Unicode 3.2
-## Fullwidth UCS fullwidth form (U+Fxxx)
-## Windows Windows (CP932) mapping
-## Some 0213 character can't represent by one UCS character.
-## In this table, such characters are described as 'U+xxxx+xxxx'.
-##
-## JIS Unicode Name Note
-0x222F = 0xFF07 # 0x0027
-0x2230 = 0xFF02 # 0x0022
-0x2231 = 0xFF0D # 0x002D
-0x2232 = 0xFF5E # 0x007E
-0x2233 = 0x3033
-0x2234 = 0x3034
-0x2235 = 0x3035
-0x2236 = 0x303B
-0x2237 = 0x303C
-0x2238 = 0x30FF
-0x2239 = 0x309F
-0x2242 = 0x2284
-0x2243 = 0x2285
-0x2244 = 0x228A
-0x2245 = 0x228B
-0x2246 = 0x2209
-0x2247 = 0x2205
-0x2248 = 0x2305
-0x2249 = 0x2306
-0x2251 = 0x2295
-0x2252 = 0x2296
-0x2253 = 0x2297
-0x2254 = 0x2225
-0x2255 = 0x2226
-0x2256 = 0xFF5F
-0x2257 = 0xFF60
-0x2258 = 0x3018
-0x2259 = 0x3019
-0x225A = 0x3016
-0x225B = 0x3017
-0x226B = 0x2262
-0x226C = 0x2243
-0x226D = 0x2245
-0x226E = 0x2248
-0x226F = 0x2276
-0x2270 = 0x2277
-0x2271 = 0x2194
-0x227A = 0x266E
-0x227B = 0x266B
-0x227C = 0x266C
-0x227D = 0x2669
-0x2321 = 0x25B7
-0x2322 = 0x25B6
-0x2323 = 0x25C1
-0x2324 = 0x25C0
-0x2325 = 0x2197
-0x2326 = 0x2198
-0x2327 = 0x2196
-0x2328 = 0x2199
-0x2329 = 0x21C4
-0x232A = 0x21E8
-0x232B = 0x21E6
-0x232C = 0x21E7
-0x232D = 0x21E9
-0x232E = 0x2934
-0x232F = 0x2935
-0x233A = 0x29BF
-0x233B = 0x25C9
-0x233C = 0x303D
-0x233D = 0xFE46
-0x233E = 0xFE45
-0x233F = 0x25E6
-0x2340 = 0x2022
-0x235B = 0x2213
-0x235C = 0x2135
-0x235D = 0x210F
-0x235E = 0x33CB
-0x235F = 0x2113
-0x2360 = 0x2127
-0x237B = 0x30A0
-0x237C = 0x2013
-0x237D = 0x29FA
-0x237E = 0x29FB
-0x2474 = 0x3094
-0x2475 = 0x3095
-0x2476 = 0x3096
-#0x2477 = 0x304B + 0x309A
-#0x2478 = 0x304D + 0x309A
-#0x2479 = 0x304F + 0x309A
-#0x247A = 0x3051 + 0x309A
-#0x247B = 0x3053 + 0x309A
-#0x2577 = 0x30AB + 0x309A
-#0x2578 = 0x30AD + 0x309A
-#0x2579 = 0x30AF + 0x309A
-#0x257A = 0x30B1 + 0x309A
-#0x257B = 0x30B3 + 0x309A
-#0x257C = 0x30BB + 0x309A
-#0x257D = 0x30C4 + 0x309A
-#0x257E = 0x30C8 + 0x309A
-0x2639 = 0x2664
-0x263A = 0x2660
-0x263B = 0x2662
-0x263C = 0x2666
-0x263D = 0x2661
-0x263E = 0x2665
-0x263F = 0x2667
-0x2640 = 0x2663
-0x2659 = 0x03C2
-0x265A = 0x24F5
-0x265B = 0x24F6
-0x265C = 0x24F7
-0x265D = 0x24F8
-0x265E = 0x24F9
-0x265F = 0x24FA
-0x2660 = 0x24FB
-0x2661 = 0x24FC
-0x2662 = 0x24FD
-0x2663 = 0x24FE
-0x2664 = 0x2616
-0x2665 = 0x2617
-0x2666 = 0x3020
-0x2667 = 0x260E
-0x2668 = 0x2600
-0x2669 = 0x2601
-0x266A = 0x2602
-0x266B = 0x2603
-0x266C = 0x2668
-0x266D = 0x25B1
-0x266E = 0x31F0
-0x266F = 0x31F1
-0x2670 = 0x31F2
-0x2671 = 0x31F3
-0x2672 = 0x31F4
-0x2673 = 0x31F5
-0x2674 = 0x31F6
-0x2675 = 0x31F7
-0x2676 = 0x31F8
-0x2677 = 0x31F9
-#0x2678 = 0x31F7 + 0x309A
-0x2679 = 0x31FA
-0x267A = 0x31FB
-0x267B = 0x31FC
-0x267C = 0x31FD
-0x267D = 0x31FE
-0x267E = 0x31FF
-0x2742 = 0x23BE
-0x2743 = 0x23BF
-0x2744 = 0x23C0
-0x2745 = 0x23C1
-0x2746 = 0x23C2
-0x2747 = 0x23C3
-0x2748 = 0x23C4
-0x2749 = 0x23C5
-0x274A = 0x23C6
-0x274B = 0x23C7
-0x274C = 0x23C8
-0x274D = 0x23C9
-0x274E = 0x23CA
-0x274F = 0x23CB
-0x2750 = 0x23CC
-0x2772 = 0x30F7
-0x2773 = 0x30F8
-0x2774 = 0x30F9
-0x2775 = 0x30FA
-0x2776 = 0x22DA
-0x2777 = 0x22DB
-0x2778 = 0x2153
-0x2779 = 0x2154
-0x277A = 0x2155
-0x277B = 0x2713
-0x277C = 0x2318
-0x277D = 0x2423
-0x277E = 0x23CE
-0x2841 = 0x3251
-0x2842 = 0x3252
-0x2843 = 0x3253
-0x2844 = 0x3254
-0x2845 = 0x3255
-0x2846 = 0x3256
-0x2847 = 0x3257
-0x2848 = 0x3258
-0x2849 = 0x3259
-0x284A = 0x325A
-0x284B = 0x325B
-0x284C = 0x325C
-0x284D = 0x325D
-0x284E = 0x325E
-0x284F = 0x325F
-0x2850 = 0x32B1
-0x2851 = 0x32B2
-0x2852 = 0x32B3
-0x2853 = 0x32B4
-0x2854 = 0x32B5
-0x2855 = 0x32B6
-0x2856 = 0x32B7
-0x2857 = 0x32B8
-0x2858 = 0x32B9
-0x2859 = 0x32BA
-0x285A = 0x32BB
-0x285B = 0x32BC
-0x285C = 0x32BD
-0x285D = 0x32BE
-0x285E = 0x32BF
-0x2867 = 0x25D0
-0x2868 = 0x25D1
-0x2869 = 0x25D2
-0x286A = 0x25D3
-0x286B = 0x203C
-0x286C = 0x2047
-0x286D = 0x2048
-0x286E = 0x2049
-0x286F = 0x01CD
-0x2870 = 0x01CE
-0x2871 = 0x01D0
-0x2872 = 0x1E3E
-0x2873 = 0x1E3F
-0x2874 = 0x01F8
-0x2875 = 0x01F9
-0x2876 = 0x01D1
-0x2877 = 0x01D2
-0x2878 = 0x01D4
-0x2879 = 0x01D6
-0x287A = 0x01D8
-0x287B = 0x01DA
-0x287C = 0x01DC
-0x2921 = 0x20AC
-0x2922 = 0x00A0
-0x2923 = 0x00A1
-0x2924 = 0x00A4
-0x2925 = 0x00A6
-0x2926 = 0x00A9
-0x2927 = 0x00AA
-0x2928 = 0x00AB
-0x2929 = 0x00AD
-0x292A = 0x00AE
-0x292B = 0x00AF
-0x292C = 0x00B2
-0x292D = 0x00B3
-0x292E = 0x00B7
-0x292F = 0x00B8
-0x2930 = 0x00B9
-0x2931 = 0x00BA
-0x2932 = 0x00BB
-0x2933 = 0x00BC
-0x2934 = 0x00BD
-0x2935 = 0x00BE
-0x2936 = 0x00BF
-0x2937 = 0x00C0
-0x2938 = 0x00C1
-0x2939 = 0x00C2
-0x293A = 0x00C3
-0x293B = 0x00C4
-0x293C = 0x00C5
-0x293D = 0x00C6
-0x293E = 0x00C7
-0x293F = 0x00C8
-0x2940 = 0x00C9
-0x2941 = 0x00CA
-0x2942 = 0x00CB
-0x2943 = 0x00CC
-0x2944 = 0x00CD
-0x2945 = 0x00CE
-0x2946 = 0x00CF
-0x2947 = 0x00D0
-0x2948 = 0x00D1
-0x2949 = 0x00D2
-0x294A = 0x00D3
-0x294B = 0x00D4
-0x294C = 0x00D5
-0x294D = 0x00D6
-0x294E = 0x00D8
-0x294F = 0x00D9
-0x2950 = 0x00DA
-0x2951 = 0x00DB
-0x2952 = 0x00DC
-0x2953 = 0x00DD
-0x2954 = 0x00DE
-0x2955 = 0x00DF
-0x2956 = 0x00E0
-0x2957 = 0x00E1
-0x2958 = 0x00E2
-0x2959 = 0x00E3
-0x295A = 0x00E4
-0x295B = 0x00E5
-0x295C = 0x00E6
-0x295D = 0x00E7
-0x295E = 0x00E8
-0x295F = 0x00E9
-0x2960 = 0x00EA
-0x2961 = 0x00EB
-0x2962 = 0x00EC
-0x2963 = 0x00ED
-0x2964 = 0x00EE
-0x2965 = 0x00EF
-0x2966 = 0x00F0
-0x2967 = 0x00F1
-0x2968 = 0x00F2
-0x2969 = 0x00F3
-0x296A = 0x00F4
-0x296B = 0x00F5
-0x296C = 0x00F6
-0x296D = 0x00F8
-0x296E = 0x00F9
-0x296F = 0x00FA
-0x2970 = 0x00FB
-0x2971 = 0x00FC
-0x2972 = 0x00FD
-0x2973 = 0x00FE
-0x2974 = 0x00FF
-0x2975 = 0x0100
-0x2976 = 0x012A
-0x2977 = 0x016A
-0x2978 = 0x0112
-0x2979 = 0x014C
-0x297A = 0x0101
-0x297B = 0x012B
-0x297C = 0x016B
-0x297D = 0x0113
-0x297E = 0x014D
-0x2A21 = 0x0104
-0x2A22 = 0x02D8
-0x2A23 = 0x0141
-0x2A24 = 0x013D
-0x2A25 = 0x015A
-0x2A26 = 0x0160
-0x2A27 = 0x015E
-0x2A28 = 0x0164
-0x2A29 = 0x0179
-0x2A2A = 0x017D
-0x2A2B = 0x017B
-0x2A2C = 0x0105
-0x2A2D = 0x02DB
-0x2A2E = 0x0142
-0x2A2F = 0x013E
-0x2A30 = 0x015B
-0x2A31 = 0x02C7
-0x2A32 = 0x0161
-0x2A33 = 0x015F
-0x2A34 = 0x0165
-0x2A35 = 0x017A
-0x2A36 = 0x02DD
-0x2A37 = 0x017E
-0x2A38 = 0x017C
-0x2A39 = 0x0154
-0x2A3A = 0x0102
-0x2A3B = 0x0139
-0x2A3C = 0x0106
-0x2A3D = 0x010C
-0x2A3E = 0x0118
-0x2A3F = 0x011A
-0x2A40 = 0x010E
-0x2A41 = 0x0143
-0x2A42 = 0x0147
-0x2A43 = 0x0150
-0x2A44 = 0x0158
-0x2A45 = 0x016E
-0x2A46 = 0x0170
-0x2A47 = 0x0162
-0x2A48 = 0x0155
-0x2A49 = 0x0103
-0x2A4A = 0x013A
-0x2A4B = 0x0107
-0x2A4C = 0x010D
-0x2A4D = 0x0119
-0x2A4E = 0x011B
-0x2A4F = 0x010F
-0x2A50 = 0x0111
-0x2A51 = 0x0144
-0x2A52 = 0x0148
-0x2A53 = 0x0151
-0x2A54 = 0x0159
-0x2A55 = 0x016F
-0x2A56 = 0x0171
-0x2A57 = 0x0163
-0x2A58 = 0x02D9
-0x2A59 = 0x0108
-0x2A5A = 0x011C
-0x2A5B = 0x0124
-0x2A5C = 0x0134
-0x2A5D = 0x015C
-0x2A5E = 0x016C
-0x2A5F = 0x0109
-0x2A60 = 0x011D
-0x2A61 = 0x0125
-0x2A62 = 0x0135
-0x2A63 = 0x015D
-0x2A64 = 0x016D
-0x2A65 = 0x0271
-0x2A66 = 0x028B
-0x2A67 = 0x027E
-0x2A68 = 0x0283
-0x2A69 = 0x0292
-0x2A6A = 0x026C
-0x2A6B = 0x026E
-0x2A6C = 0x0279
-0x2A6D = 0x0288
-0x2A6E = 0x0256
-0x2A6F = 0x0273
-0x2A70 = 0x027D
-0x2A71 = 0x0282
-0x2A72 = 0x0290
-0x2A73 = 0x027B
-0x2A74 = 0x026D
-0x2A75 = 0x025F
-0x2A76 = 0x0272
-0x2A77 = 0x029D
-0x2A78 = 0x028E
-0x2A79 = 0x0261
-0x2A7A = 0x014B
-0x2A7B = 0x0270
-0x2A7C = 0x0281
-0x2A7D = 0x0127
-0x2A7E = 0x0295
-0x2B21 = 0x0294
-0x2B22 = 0x0266
-0x2B23 = 0x0298
-0x2B24 = 0x01C2
-0x2B25 = 0x0253
-0x2B26 = 0x0257
-0x2B27 = 0x0284
-0x2B28 = 0x0260
-0x2B29 = 0x0193
-0x2B2A = 0x0153
-0x2B2B = 0x0152
-0x2B2C = 0x0268
-0x2B2D = 0x0289
-0x2B2E = 0x0258
-0x2B2F = 0x0275
-0x2B30 = 0x0259
-0x2B31 = 0x025C
-0x2B32 = 0x025E
-0x2B33 = 0x0250
-0x2B34 = 0x026F
-0x2B35 = 0x028A
-0x2B36 = 0x0264
-0x2B37 = 0x028C
-0x2B38 = 0x0254
-0x2B39 = 0x0251
-0x2B3A = 0x0252
-0x2B3B = 0x028D
-0x2B3C = 0x0265
-0x2B3D = 0x02A2
-0x2B3E = 0x02A1
-0x2B3F = 0x0255
-0x2B40 = 0x0291
-0x2B41 = 0x027A
-0x2B42 = 0x0267
-0x2B43 = 0x025A
-#0x2B44 = 0x00E6 + 0x0300
-0x2B45 = 0x01FD
-0x2B46 = 0x1F70
-0x2B47 = 0x1F71
-#0x2B48 = 0x0254 + 0x0300
-#0x2B49 = 0x0254 + 0x0301
-#0x2B4A = 0x028C + 0x0300
-#0x2B4B = 0x028C + 0x0301
-#0x2B4C = 0x0259 + 0x0300
-#0x2B4D = 0x0259 + 0x0301
-#0x2B4E = 0x025A + 0x0300
-#0x2B4F = 0x025A + 0x0301
-0x2B50 = 0x1F72
-0x2B51 = 0x1F73
-0x2B52 = 0x0361
-0x2B53 = 0x02C8
-0x2B54 = 0x02CC
-0x2B55 = 0x02D0
-0x2B56 = 0x02D1
-0x2B57 = 0x0306
-0x2B58 = 0x203F
-0x2B59 = 0x030B
-0x2B5A = 0x0301
-0x2B5B = 0x0304
-0x2B5C = 0x0300
-0x2B5D = 0x030F
-0x2B5E = 0x030C
-0x2B5F = 0x0302
-0x2B60 = 0x02E5
-0x2B61 = 0x02E6
-0x2B62 = 0x02E7
-0x2B63 = 0x02E8
-0x2B64 = 0x02E9
-#0x2B65 = 0x02E9 + 0x02E5
-#0x2B66 = 0x02E5 + 0x02E9
-0x2B67 = 0x0325
-0x2B68 = 0x032C
-0x2B69 = 0x0339
-0x2B6A = 0x031C
-0x2B6B = 0x031F
-0x2B6C = 0x0320
-0x2B6D = 0x0308
-0x2B6E = 0x033D
-0x2B6F = 0x0329
-0x2B70 = 0x032F
-0x2B71 = 0x02DE
-0x2B72 = 0x0324
-0x2B73 = 0x0330
-0x2B74 = 0x033C
-0x2B75 = 0x0334
-0x2B76 = 0x031D
-0x2B77 = 0x031E
-0x2B78 = 0x0318
-0x2B79 = 0x0319
-0x2B7A = 0x032A
-0x2B7B = 0x033A
-0x2B7C = 0x033B
-0x2B7D = 0x0303
-0x2B7E = 0x031A
-0x2C21 = 0x2776
-0x2C22 = 0x2777
-0x2C23 = 0x2778
-0x2C24 = 0x2779
-0x2C25 = 0x277A
-0x2C26 = 0x277B
-0x2C27 = 0x277C
-0x2C28 = 0x277D
-0x2C29 = 0x277E
-0x2C2A = 0x277F
-0x2C2B = 0x24EB
-0x2C2C = 0x24EC
-0x2C2D = 0x24ED
-0x2C2E = 0x24EE
-0x2C2F = 0x24EF
-0x2C30 = 0x24F0
-0x2C31 = 0x24F1
-0x2C32 = 0x24F2
-0x2C33 = 0x24F3
-0x2C34 = 0x24F4
-0x2C35 = 0x2170
-0x2C36 = 0x2171
-0x2C37 = 0x2172
-0x2C38 = 0x2173
-0x2C39 = 0x2174
-0x2C3A = 0x2175
-0x2C3B = 0x2176
-0x2C3C = 0x2177
-0x2C3D = 0x2178
-0x2C3E = 0x2179
-0x2C3F = 0x217A
-0x2C40 = 0x217B
-0x2C41 = 0x24D0
-0x2C42 = 0x24D1
-0x2C43 = 0x24D2
-0x2C44 = 0x24D3
-0x2C45 = 0x24D4
-0x2C46 = 0x24D5
-0x2C47 = 0x24D6
-0x2C48 = 0x24D7
-0x2C49 = 0x24D8
-0x2C4A = 0x24D9
-0x2C4B = 0x24DA
-0x2C4C = 0x24DB
-0x2C4D = 0x24DC
-0x2C4E = 0x24DD
-0x2C4F = 0x24DE
-0x2C50 = 0x24DF
-0x2C51 = 0x24E0
-0x2C52 = 0x24E1
-0x2C53 = 0x24E2
-0x2C54 = 0x24E3
-0x2C55 = 0x24E4
-0x2C56 = 0x24E5
-0x2C57 = 0x24E6
-0x2C58 = 0x24E7
-0x2C59 = 0x24E8
-0x2C5A = 0x24E9
-0x2C5B = 0x32D0
-0x2C5C = 0x32D1
-0x2C5D = 0x32D2
-0x2C5E = 0x32D3
-0x2C5F = 0x32D4
-0x2C60 = 0x32D5
-0x2C61 = 0x32D6
-0x2C62 = 0x32D7
-0x2C63 = 0x32D8
-0x2C64 = 0x32D9
-0x2C65 = 0x32DA
-0x2C66 = 0x32DB
-0x2C67 = 0x32DC
-0x2C68 = 0x32DD
-0x2C69 = 0x32DE
-0x2C6A = 0x32DF
-0x2C6B = 0x32E0
-0x2C6C = 0x32E1
-0x2C6D = 0x32E2
-0x2C6E = 0x32E3
-0x2C6F = 0x32FA
-0x2C70 = 0x32E9
-0x2C71 = 0x32E5
-0x2C72 = 0x32ED
-0x2C73 = 0x32EC
-0x2C7D = 0x2051
-0x2C7E = 0x2042
-0x2D21 = 0x2460
-0x2D22 = 0x2461
-0x2D23 = 0x2462
-0x2D24 = 0x2463
-0x2D25 = 0x2464
-0x2D26 = 0x2465
-0x2D27 = 0x2466
-0x2D28 = 0x2467
-0x2D29 = 0x2468
-0x2D2A = 0x2469
-0x2D2B = 0x246A
-0x2D2C = 0x246B
-0x2D2D = 0x246C
-0x2D2E = 0x246D
-0x2D2F = 0x246E
-0x2D30 = 0x246F
-0x2D31 = 0x2470
-0x2D32 = 0x2471
-0x2D33 = 0x2472
-0x2D34 = 0x2473
-0x2D35 = 0x2160
-0x2D36 = 0x2161
-0x2D37 = 0x2162
-0x2D38 = 0x2163
-0x2D39 = 0x2164
-0x2D3A = 0x2165
-0x2D3B = 0x2166
-0x2D3C = 0x2167
-0x2D3D = 0x2168
-0x2D3E = 0x2169
-0x2D3F = 0x216A
-0x2D40 = 0x3349
-0x2D41 = 0x3314
-0x2D42 = 0x3322
-0x2D43 = 0x334D
-0x2D44 = 0x3318
-0x2D45 = 0x3327
-0x2D46 = 0x3303
-0x2D47 = 0x3336
-0x2D48 = 0x3351
-0x2D49 = 0x3357
-0x2D4A = 0x330D
-0x2D4B = 0x3326
-0x2D4C = 0x3323
-0x2D4D = 0x332B
-0x2D4E = 0x334A
-0x2D4F = 0x333B
-0x2D50 = 0x339C
-0x2D51 = 0x339D
-0x2D52 = 0x339E
-0x2D53 = 0x338E
-0x2D54 = 0x338F
-0x2D55 = 0x33C4
-0x2D56 = 0x33A1
-0x2D57 = 0x216B
-0x2D5F = 0x337B
-0x2D60 = 0x301D
-0x2D61 = 0x301F
-0x2D62 = 0x2116
-0x2D63 = 0x33CD
-0x2D64 = 0x2121
-0x2D65 = 0x32A4
-0x2D66 = 0x32A5
-0x2D67 = 0x32A6
-0x2D68 = 0x32A7
-0x2D69 = 0x32A8
-0x2D6A = 0x3231
-0x2D6B = 0x3232
-0x2D6C = 0x3239
-0x2D6D = 0x337E
-0x2D6E = 0x337D
-0x2D6F = 0x337C
-0x2D73 = 0x222E
-0x2D78 = 0x221F
-0x2D79 = 0x22BF
-0x2D7D = 0x2756
-0x2D7E = 0x261E
-0x2E21 = 0x4FF1
-0x2E23 = 0x3402
-0x2E24 = 0x4E28
-0x2E25 = 0x4E2F
-0x2E26 = 0x4E30
-0x2E27 = 0x4E8D
-0x2E28 = 0x4EE1
-0x2E29 = 0x4EFD
-0x2E2A = 0x4EFF
-0x2E2B = 0x4F03
-0x2E2C = 0x4F0B
-0x2E2D = 0x4F60
-0x2E2E = 0x4F48
-0x2E2F = 0x4F49
-0x2E30 = 0x4F56
-0x2E31 = 0x4F5F
-0x2E32 = 0x4F6A
-0x2E33 = 0x4F6C
-0x2E34 = 0x4F7E
-0x2E35 = 0x4F8A
-0x2E36 = 0x4F94
-0x2E37 = 0x4F97
-0x2E38 = 0xFA30
-0x2E39 = 0x4FC9
-0x2E3A = 0x4FE0
-0x2E3B = 0x5001
-0x2E3C = 0x5002
-0x2E3D = 0x500E
-0x2E3E = 0x5018
-0x2E3F = 0x5027
-0x2E40 = 0x502E
-0x2E41 = 0x5040
-0x2E42 = 0x503B
-0x2E43 = 0x5041
-0x2E44 = 0x5094
-0x2E45 = 0x50CC
-0x2E46 = 0x50F2
-0x2E47 = 0x50D0
-0x2E48 = 0x50E6
-0x2E49 = 0xFA31
-0x2E4A = 0x5106
-0x2E4B = 0x5103
-0x2E4C = 0x510B
-0x2E4D = 0x511E
-0x2E4E = 0x5135
-0x2E4F = 0x514A
-0x2E50 = 0xFA32
-0x2E51 = 0x5155
-0x2E52 = 0x5157
-0x2E53 = 0x34B5
-0x2E54 = 0x519D
-0x2E55 = 0x51C3
-0x2E56 = 0x51CA
-0x2E57 = 0x51DE
-0x2E58 = 0x51E2
-0x2E59 = 0x51EE
-0x2E5A = 0x5201
-0x2E5B = 0x34DB
-0x2E5C = 0x5213
-0x2E5D = 0x5215
-0x2E5E = 0x5249
-0x2E5F = 0x5257
-0x2E60 = 0x5261
-0x2E61 = 0x5293
-0x2E62 = 0x52C8
-0x2E63 = 0xFA33
-0x2E64 = 0x52CC
-0x2E65 = 0x52D0
-0x2E66 = 0x52D6
-0x2E67 = 0x52DB
-0x2E68 = 0xFA34
-0x2E69 = 0x52F0
-0x2E6A = 0x52FB
-0x2E6B = 0x5300
-0x2E6C = 0x5307
-0x2E6D = 0x531C
-0x2E6E = 0xFA35
-0x2E6F = 0x5361
-0x2E70 = 0x5363
-0x2E71 = 0x537D
-0x2E72 = 0x5393
-0x2E73 = 0x539D
-0x2E74 = 0x53B2
-0x2E75 = 0x5412
-0x2E76 = 0x5427
-0x2E77 = 0x544D
-0x2E78 = 0x549C
-0x2E79 = 0x546B
-0x2E7A = 0x5474
-0x2E7B = 0x547F
-0x2E7C = 0x5488
-0x2E7D = 0x5496
-0x2E7E = 0x54A1
-0x2F21 = 0x54A9
-0x2F22 = 0x54C6
-0x2F23 = 0x54FF
-0x2F24 = 0x550E
-0x2F25 = 0x552B
-0x2F26 = 0x5535
-0x2F27 = 0x5550
-0x2F28 = 0x555E
-0x2F29 = 0x5581
-0x2F2A = 0x5586
-0x2F2B = 0x558E
-0x2F2C = 0xFA36
-0x2F2D = 0x55AD
-0x2F2E = 0x55CE
-0x2F2F = 0xFA37
-0x2F30 = 0x5608
-0x2F31 = 0x560E
-0x2F32 = 0x563B
-0x2F33 = 0x5649
-0x2F34 = 0x5676
-0x2F35 = 0x5666
-0x2F36 = 0xFA38
-0x2F37 = 0x566F
-0x2F38 = 0x5671
-0x2F39 = 0x5672
-0x2F3A = 0x5699
-0x2F3B = 0x569E
-0x2F3C = 0x56A9
-0x2F3D = 0x56AC
-0x2F3E = 0x56B3
-0x2F3F = 0x56C9
-0x2F40 = 0x56CA
-0x2F41 = 0x570A
-0x2F43 = 0x5721
-0x2F44 = 0x572F
-0x2F45 = 0x5733
-0x2F46 = 0x5734
-0x2F47 = 0x5770
-0x2F48 = 0x5777
-0x2F49 = 0x577C
-0x2F4A = 0x579C
-0x2F4B = 0xFA0F
-0x2F4D = 0x57B8
-0x2F4E = 0x57C7
-0x2F4F = 0x57C8
-0x2F50 = 0x57CF
-0x2F51 = 0x57E4
-0x2F52 = 0x57ED
-0x2F53 = 0x57F5
-0x2F54 = 0x57F6
-0x2F55 = 0x57FF
-0x2F56 = 0x5809
-0x2F57 = 0xFA10
-0x2F58 = 0x5861
-0x2F59 = 0x5864
-0x2F5A = 0xFA39
-0x2F5B = 0x587C
-0x2F5C = 0x5889
-0x2F5D = 0x589E
-0x2F5E = 0xFA3A
-0x2F5F = 0x58A9
-0x2F61 = 0x58D2
-0x2F62 = 0x58CE
-0x2F63 = 0x58D4
-0x2F64 = 0x58DA
-0x2F65 = 0x58E0
-0x2F66 = 0x58E9
-0x2F67 = 0x590C
-0x2F68 = 0x8641
-0x2F69 = 0x595D
-0x2F6A = 0x596D
-0x2F6B = 0x598B
-0x2F6C = 0x5992
-0x2F6D = 0x59A4
-0x2F6E = 0x59C3
-0x2F6F = 0x59D2
-0x2F70 = 0x59DD
-0x2F71 = 0x5A13
-0x2F72 = 0x5A23
-0x2F73 = 0x5A67
-0x2F74 = 0x5A6D
-0x2F75 = 0x5A77
-0x2F76 = 0x5A7E
-0x2F77 = 0x5A84
-0x2F78 = 0x5A9E
-0x2F79 = 0x5AA7
-0x2F7A = 0x5AC4
-0x2F7C = 0x5B19
-0x2F7D = 0x5B25
-0x2F7E = 0x525D
-0x4F55 = 0x5B41
-0x4F56 = 0x5B56
-0x4F57 = 0x5B7D
-0x4F58 = 0x5B93
-0x4F59 = 0x5BD8
-0x4F5A = 0x5BEC
-0x4F5B = 0x5C12
-0x4F5C = 0x5C1E
-0x4F5D = 0x5C23
-0x4F5E = 0x5C2B
-0x4F5F = 0x378D
-0x4F60 = 0x5C62
-0x4F61 = 0xFA3B
-0x4F62 = 0xFA3C
-0x4F64 = 0x5C7A
-0x4F65 = 0x5C8F
-0x4F66 = 0x5C9F
-0x4F67 = 0x5CA3
-0x4F68 = 0x5CAA
-0x4F69 = 0x5CBA
-0x4F6A = 0x5CCB
-0x4F6B = 0x5CD0
-0x4F6C = 0x5CD2
-0x4F6D = 0x5CF4
-0x4F6F = 0x37E2
-0x4F70 = 0x5D0D
-0x4F71 = 0x5D27
-0x4F72 = 0xFA11
-0x4F73 = 0x5D46
-0x4F74 = 0x5D47
-0x4F75 = 0x5D53
-0x4F76 = 0x5D4A
-0x4F77 = 0x5D6D
-0x4F78 = 0x5D81
-0x4F79 = 0x5DA0
-0x4F7A = 0x5DA4
-0x4F7B = 0x5DA7
-0x4F7C = 0x5DB8
-0x4F7D = 0x5DCB
-0x4F7E = 0x541E
-0x7427 = 0x5653
-0x7428 = 0x5DE2
-0x7429 = 0x5E14
-0x742A = 0x5E18
-0x742B = 0x5E58
-0x742C = 0x5E5E
-0x742D = 0x5EBE
-0x742E = 0xF928
-0x742F = 0x5ECB
-0x7430 = 0x5EF9
-0x7431 = 0x5F00
-0x7432 = 0x5F02
-0x7433 = 0x5F07
-0x7434 = 0x5F1D
-0x7435 = 0x5F23
-0x7436 = 0x5F34
-0x7437 = 0x5F36
-0x7438 = 0x5F3D
-0x7439 = 0x5F40
-0x743A = 0x5F45
-0x743B = 0x5F54
-0x743C = 0x5F58
-0x743D = 0x5F64
-0x743E = 0x5F67
-0x743F = 0x5F7D
-0x7440 = 0x5F89
-0x7441 = 0x5F9C
-0x7442 = 0x5FA7
-0x7443 = 0x5FAF
-0x7444 = 0x5FB5
-0x7445 = 0x5FB7
-0x7446 = 0x5FC9
-0x7447 = 0x5FDE
-0x7448 = 0x5FE1
-0x7449 = 0x5FE9
-0x744A = 0x600D
-0x744B = 0x6014
-0x744C = 0x6018
-0x744D = 0x6033
-0x744E = 0x6035
-0x744F = 0x6047
-0x7450 = 0xFA3D
-0x7451 = 0x609D
-0x7452 = 0x609E
-0x7453 = 0x60CB
-0x7454 = 0x60D4
-0x7455 = 0x60D5
-0x7456 = 0x60DD
-0x7457 = 0x60F8
-0x7458 = 0x611C
-0x7459 = 0x612B
-0x745A = 0x6130
-0x745B = 0x6137
-0x745C = 0xFA3E
-0x745D = 0x618D
-0x745E = 0xFA3F
-0x745F = 0x61BC
-0x7460 = 0x61B9
-0x7461 = 0xFA40
-0x7462 = 0x6222
-0x7463 = 0x623E
-0x7464 = 0x6243
-0x7465 = 0x6256
-0x7466 = 0x625A
-0x7467 = 0x626F
-0x7468 = 0x6285
-0x7469 = 0x62C4
-0x746A = 0x62D6
-0x746B = 0x62FC
-0x746C = 0x630A
-0x746D = 0x6318
-0x746E = 0x6339
-0x746F = 0x6343
-0x7470 = 0x6365
-0x7471 = 0x637C
-0x7472 = 0x63E5
-0x7473 = 0x63ED
-0x7474 = 0x63F5
-0x7475 = 0x6410
-0x7476 = 0x6414
-0x7477 = 0x6422
-0x7478 = 0x6479
-0x7479 = 0x6451
-0x747A = 0x6460
-0x747B = 0x646D
-0x747C = 0x64CE
-0x747D = 0x64BE
-0x747E = 0x64BF
-0x7521 = 0x64C4
-0x7522 = 0x64CA
-0x7523 = 0x64D0
-0x7524 = 0x64F7
-0x7525 = 0x64FB
-0x7526 = 0x6522
-0x7527 = 0x6529
-0x7528 = 0xFA41
-0x7529 = 0x6567
-0x752A = 0x659D
-0x752B = 0xFA42
-0x752C = 0x6600
-0x752D = 0x6609
-0x752E = 0x6615
-0x752F = 0x661E
-0x7530 = 0x663A
-0x7531 = 0x6622
-0x7532 = 0x6624
-0x7533 = 0x662B
-0x7534 = 0x6630
-0x7535 = 0x6631
-0x7536 = 0x6633
-0x7537 = 0x66FB
-0x7538 = 0x6648
-0x7539 = 0x664C
-0x753B = 0x6659
-0x753C = 0x665A
-0x753D = 0x6661
-0x753E = 0x6665
-0x753F = 0x6673
-0x7540 = 0x6677
-0x7541 = 0x6678
-0x7542 = 0x668D
-0x7543 = 0xFA43
-0x7544 = 0x66A0
-0x7545 = 0x66B2
-0x7546 = 0x66BB
-0x7547 = 0x66C6
-0x7548 = 0x66C8
-0x7549 = 0x3B22
-0x754A = 0x66DB
-0x754B = 0x66E8
-0x754C = 0x66FA
-0x754D = 0x6713
-0x754E = 0xF929
-0x754F = 0x6733
-0x7550 = 0x6766
-0x7551 = 0x6747
-0x7552 = 0x6748
-0x7553 = 0x677B
-0x7554 = 0x6781
-0x7555 = 0x6793
-0x7556 = 0x6798
-0x7557 = 0x679B
-0x7558 = 0x67BB
-0x7559 = 0x67F9
-0x755A = 0x67C0
-0x755B = 0x67D7
-0x755C = 0x67FC
-0x755D = 0x6801
-0x755E = 0x6852
-0x755F = 0x681D
-0x7560 = 0x682C
-0x7561 = 0x6831
-0x7562 = 0x685B
-0x7563 = 0x6872
-0x7564 = 0x6875
-0x7565 = 0xFA44
-0x7566 = 0x68A3
-0x7567 = 0x68A5
-0x7568 = 0x68B2
-0x7569 = 0x68C8
-0x756A = 0x68D0
-0x756B = 0x68E8
-0x756C = 0x68ED
-0x756D = 0x68F0
-0x756E = 0x68F1
-0x756F = 0x68FC
-0x7570 = 0x690A
-0x7571 = 0x6949
-0x7573 = 0x6935
-0x7574 = 0x6942
-0x7575 = 0x6957
-0x7576 = 0x6963
-0x7577 = 0x6964
-0x7578 = 0x6968
-0x7579 = 0x6980
-0x757A = 0xFA14
-0x757B = 0x69A5
-0x757C = 0x69AD
-0x757D = 0x69CF
-0x757E = 0x3BB6
-0x7621 = 0x3BC3
-0x7622 = 0x69E2
-0x7623 = 0x69E9
-0x7624 = 0x69EA
-0x7625 = 0x69F5
-0x7626 = 0x69F6
-0x7627 = 0x6A0F
-0x7628 = 0x6A15
-0x762A = 0x6A3B
-0x762B = 0x6A3E
-0x762C = 0x6A45
-0x762D = 0x6A50
-0x762E = 0x6A56
-0x762F = 0x6A5B
-0x7630 = 0x6A6B
-0x7631 = 0x6A73
-0x7633 = 0x6A89
-0x7634 = 0x6A94
-0x7635 = 0x6A9D
-0x7636 = 0x6A9E
-0x7637 = 0x6AA5
-0x7638 = 0x6AE4
-0x7639 = 0x6AE7
-0x763A = 0x3C0F
-0x763B = 0xF91D
-0x763C = 0x6B1B
-0x763D = 0x6B1E
-0x763E = 0x6B2C
-0x763F = 0x6B35
-0x7640 = 0x6B46
-0x7641 = 0x6B56
-0x7642 = 0x6B60
-0x7643 = 0x6B65
-0x7644 = 0x6B67
-0x7645 = 0x6B77
-0x7646 = 0x6B82
-0x7647 = 0x6BA9
-0x7648 = 0x6BAD
-0x7649 = 0xF970
-0x764A = 0x6BCF
-0x764B = 0x6BD6
-0x764C = 0x6BD7
-0x764D = 0x6BFF
-0x764E = 0x6C05
-0x764F = 0x6C10
-0x7650 = 0x6C33
-0x7651 = 0x6C59
-0x7652 = 0x6C5C
-0x7653 = 0x6CAA
-0x7654 = 0x6C74
-0x7655 = 0x6C76
-0x7656 = 0x6C85
-0x7657 = 0x6C86
-0x7658 = 0x6C98
-0x7659 = 0x6C9C
-0x765A = 0x6CFB
-0x765B = 0x6CC6
-0x765C = 0x6CD4
-0x765D = 0x6CE0
-0x765E = 0x6CEB
-0x765F = 0x6CEE
-0x7661 = 0x6D04
-0x7662 = 0x6D0E
-0x7663 = 0x6D2E
-0x7664 = 0x6D31
-0x7665 = 0x6D39
-0x7666 = 0x6D3F
-0x7667 = 0x6D58
-0x7668 = 0x6D65
-0x7669 = 0xFA45
-0x766A = 0x6D82
-0x766B = 0x6D87
-0x766C = 0x6D89
-0x766D = 0x6D94
-0x766E = 0x6DAA
-0x766F = 0x6DAC
-0x7670 = 0x6DBF
-0x7671 = 0x6DC4
-0x7672 = 0x6DD6
-0x7673 = 0x6DDA
-0x7674 = 0x6DDB
-0x7675 = 0x6DDD
-0x7676 = 0x6DFC
-0x7677 = 0xFA46
-0x7678 = 0x6E34
-0x7679 = 0x6E44
-0x767A = 0x6E5C
-0x767B = 0x6E5E
-0x767C = 0x6EAB
-0x767D = 0x6EB1
-0x767E = 0x6EC1
-0x7721 = 0x6EC7
-0x7722 = 0x6ECE
-0x7723 = 0x6F10
-0x7724 = 0x6F1A
-0x7725 = 0xFA47
-0x7726 = 0x6F2A
-0x7727 = 0x6F2F
-0x7728 = 0x6F33
-0x7729 = 0x6F51
-0x772A = 0x6F59
-0x772B = 0x6F5E
-0x772C = 0x6F61
-0x772D = 0x6F62
-0x772E = 0x6F7E
-0x772F = 0x6F88
-0x7730 = 0x6F8C
-0x7731 = 0x6F8D
-0x7732 = 0x6F94
-0x7733 = 0x6FA0
-0x7734 = 0x6FA7
-0x7735 = 0x6FB6
-0x7736 = 0x6FBC
-0x7737 = 0x6FC7
-0x7738 = 0x6FCA
-0x7739 = 0x6FF9
-0x773A = 0x6FF0
-0x773B = 0x6FF5
-0x773C = 0x7005
-0x773D = 0x7006
-0x773E = 0x7028
-0x773F = 0x704A
-0x7740 = 0x705D
-0x7741 = 0x705E
-0x7742 = 0x704E
-0x7743 = 0x7064
-0x7744 = 0x7075
-0x7745 = 0x7085
-0x7746 = 0x70A4
-0x7747 = 0x70AB
-0x7748 = 0x70B7
-0x7749 = 0x70D4
-0x774A = 0x70D8
-0x774B = 0x70E4
-0x774C = 0x710F
-0x774D = 0x712B
-0x774E = 0x711E
-0x774F = 0x7120
-0x7750 = 0x712E
-0x7751 = 0x7130
-0x7752 = 0x7146
-0x7753 = 0x7147
-0x7754 = 0x7151
-0x7755 = 0xFA48
-0x7756 = 0x7152
-0x7757 = 0x715C
-0x7758 = 0x7160
-0x7759 = 0x7168
-0x775A = 0xFA15
-0x775B = 0x7185
-0x775C = 0x7187
-0x775D = 0x7192
-0x775E = 0x71C1
-0x775F = 0x71BA
-0x7760 = 0x71C4
-0x7761 = 0x71FE
-0x7762 = 0x7200
-0x7763 = 0x7215
-0x7764 = 0x7255
-0x7765 = 0x7256
-0x7766 = 0x3E3F
-0x7767 = 0x728D
-0x7768 = 0x729B
-0x7769 = 0x72BE
-0x776A = 0x72C0
-0x776B = 0x72FB
-0x776D = 0x7327
-0x776E = 0x7328
-0x776F = 0xFA16
-0x7770 = 0x7350
-0x7771 = 0x7366
-0x7772 = 0x737C
-0x7773 = 0x7395
-0x7774 = 0x739F
-0x7775 = 0x73A0
-0x7776 = 0x73A2
-0x7777 = 0x73A6
-0x7778 = 0x73AB
-0x7779 = 0x73C9
-0x777A = 0x73CF
-0x777B = 0x73D6
-0x777C = 0x73D9
-0x777D = 0x73E3
-0x777E = 0x73E9
-0x7821 = 0x7407
-0x7822 = 0x740A
-0x7823 = 0x741A
-0x7824 = 0x741B
-0x7825 = 0xFA4A
-0x7826 = 0x7426
-0x7827 = 0x7428
-0x7828 = 0x742A
-0x7829 = 0x742B
-0x782A = 0x742C
-0x782B = 0x742E
-0x782C = 0x742F
-0x782D = 0x7430
-0x782E = 0x7444
-0x782F = 0x7446
-0x7830 = 0x7447
-0x7831 = 0x744B
-0x7832 = 0x7457
-0x7833 = 0x7462
-0x7834 = 0x746B
-0x7835 = 0x746D
-0x7836 = 0x7486
-0x7837 = 0x7487
-0x7838 = 0x7489
-0x7839 = 0x7498
-0x783A = 0x749C
-0x783B = 0x749F
-0x783C = 0x74A3
-0x783D = 0x7490
-0x783E = 0x74A6
-0x783F = 0x74A8
-0x7840 = 0x74A9
-0x7841 = 0x74B5
-0x7842 = 0x74BF
-0x7843 = 0x74C8
-0x7844 = 0x74C9
-0x7845 = 0x74DA
-0x7846 = 0x74FF
-0x7847 = 0x7501
-0x7848 = 0x7517
-0x7849 = 0x752F
-0x784A = 0x756F
-0x784B = 0x7579
-0x784C = 0x7592
-0x784D = 0x3F72
-0x784E = 0x75CE
-0x784F = 0x75E4
-0x7850 = 0x7600
-0x7851 = 0x7602
-0x7852 = 0x7608
-0x7853 = 0x7615
-0x7854 = 0x7616
-0x7855 = 0x7619
-0x7856 = 0x761E
-0x7857 = 0x762D
-0x7858 = 0x7635
-0x7859 = 0x7643
-0x785A = 0x764B
-0x785B = 0x7664
-0x785C = 0x7665
-0x785D = 0x766D
-0x785E = 0x766F
-0x785F = 0x7671
-0x7860 = 0x7681
-0x7861 = 0x769B
-0x7862 = 0x769D
-0x7863 = 0x769E
-0x7864 = 0x76A6
-0x7865 = 0x76AA
-0x7866 = 0x76B6
-0x7867 = 0x76C5
-0x7868 = 0x76CC
-0x7869 = 0x76CE
-0x786A = 0x76D4
-0x786B = 0x76E6
-0x786C = 0x76F1
-0x786D = 0x76FC
-0x786E = 0x770A
-0x786F = 0x7719
-0x7870 = 0x7734
-0x7871 = 0x7736
-0x7872 = 0x7746
-0x7873 = 0x774D
-0x7874 = 0x774E
-0x7875 = 0x775C
-0x7876 = 0x775F
-0x7877 = 0x7762
-0x7878 = 0x777A
-0x7879 = 0x7780
-0x787A = 0x7794
-0x787B = 0x77AA
-0x787C = 0x77E0
-0x787D = 0x782D
-0x7921 = 0x7843
-0x7922 = 0x784E
-0x7923 = 0x784F
-0x7924 = 0x7851
-0x7925 = 0x7868
-0x7926 = 0x786E
-0x7927 = 0xFA4B
-0x7928 = 0x78B0
-0x792A = 0x78AD
-0x792B = 0x78E4
-0x792C = 0x78F2
-0x792D = 0x7900
-0x792E = 0x78F7
-0x792F = 0x791C
-0x7930 = 0x792E
-0x7931 = 0x7931
-0x7932 = 0x7934
-0x7933 = 0xFA4C
-0x7934 = 0xFA4D
-0x7935 = 0x7945
-0x7936 = 0x7946
-0x7937 = 0xFA4E
-0x7938 = 0xFA4F
-0x7939 = 0xFA50
-0x793A = 0x795C
-0x793B = 0xFA51
-0x793C = 0xFA19
-0x793D = 0xFA1A
-0x793E = 0x7979
-0x793F = 0xFA52
-0x7940 = 0xFA53
-0x7941 = 0xFA1B
-0x7942 = 0x7998
-0x7943 = 0x79B1
-0x7944 = 0x79B8
-0x7945 = 0x79C8
-0x7946 = 0x79CA
-0x7948 = 0x79D4
-0x7949 = 0x79DE
-0x794A = 0x79EB
-0x794B = 0x79ED
-0x794C = 0x7A03
-0x794D = 0xFA54
-0x794E = 0x7A39
-0x794F = 0x7A5D
-0x7950 = 0x7A6D
-0x7951 = 0xFA55
-0x7952 = 0x7A85
-0x7953 = 0x7AA0
-0x7955 = 0x7AB3
-0x7956 = 0x7ABB
-0x7957 = 0x7ACE
-0x7958 = 0x7AEB
-0x7959 = 0x7AFD
-0x795A = 0x7B12
-0x795B = 0x7B2D
-0x795C = 0x7B3B
-0x795D = 0x7B47
-0x795E = 0x7B4E
-0x795F = 0x7B60
-0x7960 = 0x7B6D
-0x7961 = 0x7B6F
-0x7962 = 0x7B72
-0x7963 = 0x7B9E
-0x7964 = 0xFA56
-0x7965 = 0x7BD7
-0x7966 = 0x7BD9
-0x7967 = 0x7C01
-0x7968 = 0x7C31
-0x7969 = 0x7C1E
-0x796A = 0x7C20
-0x796B = 0x7C33
-0x796C = 0x7C36
-0x796D = 0x4264
-0x796F = 0x7C59
-0x7970 = 0x7C6D
-0x7971 = 0x7C79
-0x7972 = 0x7C8F
-0x7973 = 0x7C94
-0x7974 = 0x7CA0
-0x7975 = 0x7CBC
-0x7976 = 0x7CD5
-0x7977 = 0x7CD9
-0x7978 = 0x7CDD
-0x7979 = 0x7D07
-0x797A = 0x7D08
-0x797B = 0x7D13
-0x797C = 0x7D1D
-0x797D = 0x7D23
-0x797E = 0x7D31
-0x7A21 = 0x7D41
-0x7A22 = 0x7D48
-0x7A23 = 0x7D53
-0x7A24 = 0x7D5C
-0x7A25 = 0x7D7A
-0x7A26 = 0x7D83
-0x7A27 = 0x7D8B
-0x7A28 = 0x7DA0
-0x7A29 = 0x7DA6
-0x7A2A = 0x7DC2
-0x7A2B = 0x7DCC
-0x7A2C = 0x7DD6
-0x7A2D = 0x7DE3
-0x7A2E = 0xFA57
-0x7A2F = 0x7E28
-0x7A30 = 0x7E08
-0x7A31 = 0x7E11
-0x7A32 = 0x7E15
-0x7A33 = 0xFA59
-0x7A34 = 0x7E47
-0x7A35 = 0x7E52
-0x7A36 = 0x7E61
-0x7A37 = 0x7E8A
-0x7A38 = 0x7E8D
-0x7A39 = 0x7F47
-0x7A3A = 0xFA5A
-0x7A3B = 0x7F91
-0x7A3C = 0x7F97
-0x7A3D = 0x7FBF
-0x7A3E = 0x7FCE
-0x7A3F = 0x7FDB
-0x7A40 = 0x7FDF
-0x7A41 = 0x7FEC
-0x7A42 = 0x7FEE
-0x7A43 = 0x7FFA
-0x7A44 = 0xFA5B
-0x7A45 = 0x8014
-0x7A46 = 0x8026
-0x7A47 = 0x8035
-0x7A48 = 0x8037
-0x7A49 = 0x803C
-0x7A4A = 0x80CA
-0x7A4B = 0x80D7
-0x7A4C = 0x80E0
-0x7A4D = 0x80F3
-0x7A4E = 0x8118
-0x7A4F = 0x814A
-0x7A50 = 0x8160
-0x7A51 = 0x8167
-0x7A52 = 0x8168
-0x7A53 = 0x816D
-0x7A54 = 0x81BB
-0x7A55 = 0x81CA
-0x7A56 = 0x81CF
-0x7A57 = 0x81D7
-0x7A58 = 0xFA5C
-0x7A59 = 0x4453
-0x7A5A = 0x445B
-0x7A5B = 0x8260
-0x7A5C = 0x8274
-0x7A5E = 0x828E
-0x7A5F = 0x82A1
-0x7A60 = 0x82A3
-0x7A61 = 0x82A4
-0x7A62 = 0x82A9
-0x7A63 = 0x82AE
-0x7A64 = 0x82B7
-0x7A65 = 0x82BE
-0x7A66 = 0x82BF
-0x7A67 = 0x82C6
-0x7A68 = 0x82D5
-0x7A69 = 0x82FD
-0x7A6A = 0x82FE
-0x7A6B = 0x8300
-0x7A6C = 0x8301
-0x7A6D = 0x8362
-0x7A6E = 0x8322
-0x7A6F = 0x832D
-0x7A70 = 0x833A
-0x7A71 = 0x8343
-0x7A72 = 0x8347
-0x7A73 = 0x8351
-0x7A74 = 0x8355
-0x7A75 = 0x837D
-0x7A76 = 0x8386
-0x7A77 = 0x8392
-0x7A78 = 0x8398
-0x7A79 = 0x83A7
-0x7A7A = 0x83A9
-0x7A7B = 0x83BF
-0x7A7C = 0x83C0
-0x7A7D = 0x83C7
-0x7A7E = 0x83CF
-0x7B21 = 0x83D1
-0x7B22 = 0x83E1
-0x7B23 = 0x83EA
-0x7B24 = 0x8401
-0x7B25 = 0x8406
-0x7B26 = 0x840A
-0x7B27 = 0xFA5F
-0x7B28 = 0x8448
-0x7B29 = 0x845F
-0x7B2A = 0x8470
-0x7B2B = 0x8473
-0x7B2C = 0x8485
-0x7B2D = 0x849E
-0x7B2E = 0x84AF
-0x7B2F = 0x84B4
-0x7B30 = 0x84BA
-0x7B31 = 0x84C0
-0x7B32 = 0x84C2
-0x7B34 = 0x8532
-0x7B35 = 0x851E
-0x7B36 = 0x8523
-0x7B37 = 0x852F
-0x7B38 = 0x8559
-0x7B39 = 0x8564
-0x7B3A = 0xFA1F
-0x7B3B = 0x85AD
-0x7B3C = 0x857A
-0x7B3D = 0x858C
-0x7B3E = 0x858F
-0x7B3F = 0x85A2
-0x7B40 = 0x85B0
-0x7B41 = 0x85CB
-0x7B42 = 0x85CE
-0x7B43 = 0x85ED
-0x7B44 = 0x8612
-0x7B45 = 0x85FF
-0x7B46 = 0x8604
-0x7B47 = 0x8605
-0x7B48 = 0x8610
-0x7B4A = 0x8618
-0x7B4B = 0x8629
-0x7B4C = 0x8638
-0x7B4D = 0x8657
-0x7B4E = 0x865B
-0x7B4F = 0xF936
-0x7B50 = 0x8662
-0x7B51 = 0x459D
-0x7B52 = 0x866C
-0x7B53 = 0x8675
-0x7B54 = 0x8698
-0x7B55 = 0x86B8
-0x7B56 = 0x86FA
-0x7B57 = 0x86FC
-0x7B58 = 0x86FD
-0x7B59 = 0x870B
-0x7B5A = 0x8771
-0x7B5B = 0x8787
-0x7B5C = 0x8788
-0x7B5D = 0x87AC
-0x7B5E = 0x87AD
-0x7B5F = 0x87B5
-0x7B60 = 0x45EA
-0x7B61 = 0x87D6
-0x7B62 = 0x87EC
-0x7B63 = 0x8806
-0x7B64 = 0x880A
-0x7B65 = 0x8810
-0x7B66 = 0x8814
-0x7B67 = 0x881F
-0x7B68 = 0x8898
-0x7B69 = 0x88AA
-0x7B6A = 0x88CA
-0x7B6B = 0x88CE
-0x7B6D = 0x88F5
-0x7B6E = 0x891C
-0x7B6F = 0xFA60
-0x7B70 = 0x8918
-0x7B71 = 0x8919
-0x7B72 = 0x891A
-0x7B73 = 0x8927
-0x7B74 = 0x8930
-0x7B75 = 0x8932
-0x7B76 = 0x8939
-0x7B77 = 0x8940
-0x7B78 = 0x8994
-0x7B79 = 0xFA61
-0x7B7A = 0x89D4
-0x7B7B = 0x89E5
-0x7B7C = 0x89F6
-0x7B7D = 0x8A12
-0x7B7E = 0x8A15
-0x7C21 = 0x8A22
-0x7C22 = 0x8A37
-0x7C23 = 0x8A47
-0x7C24 = 0x8A4E
-0x7C25 = 0x8A5D
-0x7C26 = 0x8A61
-0x7C27 = 0x8A75
-0x7C28 = 0x8A79
-0x7C29 = 0x8AA7
-0x7C2A = 0x8AD0
-0x7C2B = 0x8ADF
-0x7C2C = 0x8AF4
-0x7C2D = 0x8AF6
-0x7C2E = 0xFA22
-0x7C2F = 0xFA62
-0x7C30 = 0xFA63
-0x7C31 = 0x8B46
-0x7C32 = 0x8B54
-0x7C33 = 0x8B59
-0x7C34 = 0x8B69
-0x7C35 = 0x8B9D
-0x7C36 = 0x8C49
-0x7C37 = 0x8C68
-0x7C38 = 0xFA64
-0x7C39 = 0x8CE1
-0x7C3A = 0x8CF4
-0x7C3B = 0x8CF8
-0x7C3C = 0x8CFE
-0x7C3D = 0xFA65
-0x7C3E = 0x8D12
-0x7C3F = 0x8D1B
-0x7C40 = 0x8DAF
-0x7C41 = 0x8DCE
-0x7C42 = 0x8DD1
-0x7C43 = 0x8DD7
-0x7C44 = 0x8E20
-0x7C45 = 0x8E23
-0x7C46 = 0x8E3D
-0x7C47 = 0x8E70
-0x7C48 = 0x8E7B
-0x7C4A = 0x8EC0
-0x7C4B = 0x4844
-0x7C4C = 0x8EFA
-0x7C4D = 0x8F1E
-0x7C4E = 0x8F2D
-0x7C4F = 0x8F36
-0x7C50 = 0x8F54
-0x7C52 = 0x8FA6
-0x7C53 = 0x8FB5
-0x7C54 = 0x8FE4
-0x7C55 = 0x8FE8
-0x7C56 = 0x8FEE
-0x7C57 = 0x9008
-0x7C58 = 0x902D
-0x7C59 = 0xFA67
-0x7C5A = 0x9088
-0x7C5B = 0x9095
-0x7C5C = 0x9097
-0x7C5D = 0x9099
-0x7C5E = 0x909B
-0x7C5F = 0x90A2
-0x7C60 = 0x90B3
-0x7C61 = 0x90BE
-0x7C62 = 0x90C4
-0x7C63 = 0x90C5
-0x7C64 = 0x90C7
-0x7C65 = 0x90D7
-0x7C66 = 0x90DD
-0x7C67 = 0x90DE
-0x7C68 = 0x90EF
-0x7C69 = 0x90F4
-0x7C6A = 0xFA26
-0x7C6B = 0x9114
-0x7C6C = 0x9115
-0x7C6D = 0x9116
-0x7C6E = 0x9122
-0x7C6F = 0x9123
-0x7C70 = 0x9127
-0x7C71 = 0x912F
-0x7C72 = 0x9131
-0x7C73 = 0x9134
-0x7C74 = 0x913D
-0x7C75 = 0x9148
-0x7C76 = 0x915B
-0x7C77 = 0x9183
-0x7C78 = 0x919E
-0x7C79 = 0x91AC
-0x7C7A = 0x91B1
-0x7C7B = 0x91BC
-0x7C7C = 0x91D7
-0x7C7D = 0x91FB
-0x7C7E = 0x91E4
-0x7D21 = 0x91E5
-0x7D22 = 0x91ED
-0x7D23 = 0x91F1
-0x7D24 = 0x9207
-0x7D25 = 0x9210
-0x7D26 = 0x9238
-0x7D27 = 0x9239
-0x7D28 = 0x923A
-0x7D29 = 0x923C
-0x7D2A = 0x9240
-0x7D2B = 0x9243
-0x7D2C = 0x924F
-0x7D2D = 0x9278
-0x7D2E = 0x9288
-0x7D2F = 0x92C2
-0x7D30 = 0x92CB
-0x7D31 = 0x92CC
-0x7D32 = 0x92D3
-0x7D33 = 0x92E0
-0x7D34 = 0x92FF
-0x7D35 = 0x9304
-0x7D36 = 0x931F
-0x7D37 = 0x9321
-0x7D38 = 0x9325
-0x7D39 = 0x9348
-0x7D3A = 0x9349
-0x7D3B = 0x934A
-0x7D3C = 0x9364
-0x7D3D = 0x9365
-0x7D3E = 0x936A
-0x7D3F = 0x9370
-0x7D40 = 0x939B
-0x7D41 = 0x93A3
-0x7D42 = 0x93BA
-0x7D43 = 0x93C6
-0x7D44 = 0x93DE
-0x7D45 = 0x93DF
-0x7D46 = 0x9404
-0x7D47 = 0x93FD
-0x7D48 = 0x9433
-0x7D49 = 0x944A
-0x7D4A = 0x9463
-0x7D4B = 0x946B
-0x7D4C = 0x9471
-0x7D4D = 0x9472
-0x7D4E = 0x958E
-0x7D4F = 0x959F
-0x7D50 = 0x95A6
-0x7D51 = 0x95A9
-0x7D52 = 0x95AC
-0x7D53 = 0x95B6
-0x7D54 = 0x95BD
-0x7D55 = 0x95CB
-0x7D56 = 0x95D0
-0x7D57 = 0x95D3
-0x7D58 = 0x49B0
-0x7D59 = 0x95DA
-0x7D5A = 0x95DE
-0x7D5B = 0x9658
-0x7D5C = 0x9684
-0x7D5D = 0xF9DC
-0x7D5E = 0x969D
-0x7D5F = 0x96A4
-0x7D60 = 0x96A5
-0x7D61 = 0x96D2
-0x7D62 = 0x96DE
-0x7D63 = 0xFA68
-0x7D64 = 0x96E9
-0x7D65 = 0x96EF
-0x7D66 = 0x9733
-0x7D67 = 0x973B
-0x7D68 = 0x974D
-0x7D69 = 0x974E
-0x7D6A = 0x974F
-0x7D6B = 0x975A
-0x7D6C = 0x976E
-0x7D6D = 0x9773
-0x7D6E = 0x9795
-0x7D6F = 0x97AE
-0x7D70 = 0x97BA
-0x7D71 = 0x97C1
-0x7D72 = 0x97C9
-0x7D73 = 0x97DE
-0x7D74 = 0x97DB
-0x7D75 = 0x97F4
-0x7D76 = 0xFA69
-0x7D77 = 0x980A
-0x7D78 = 0x981E
-0x7D79 = 0x982B
-0x7D7A = 0x9830
-0x7D7B = 0xFA6A
-0x7D7C = 0x9852
-0x7D7D = 0x9853
-0x7D7E = 0x9856
-0x7E21 = 0x9857
-0x7E22 = 0x9859
-0x7E23 = 0x985A
-0x7E24 = 0xF9D0
-0x7E25 = 0x9865
-0x7E26 = 0x986C
-0x7E27 = 0x98BA
-0x7E28 = 0x98C8
-0x7E29 = 0x98E7
-0x7E2A = 0x9958
-0x7E2B = 0x999E
-0x7E2C = 0x9A02
-0x7E2D = 0x9A03
-0x7E2E = 0x9A24
-0x7E2F = 0x9A2D
-0x7E30 = 0x9A2E
-0x7E31 = 0x9A38
-0x7E32 = 0x9A4A
-0x7E33 = 0x9A4E
-0x7E34 = 0x9A52
-0x7E35 = 0x9AB6
-0x7E36 = 0x9AC1
-0x7E37 = 0x9AC3
-0x7E38 = 0x9ACE
-0x7E39 = 0x9AD6
-0x7E3A = 0x9AF9
-0x7E3B = 0x9B02
-0x7E3C = 0x9B08
-0x7E3D = 0x9B20
-0x7E3E = 0x4C17
-0x7E3F = 0x9B2D
-0x7E40 = 0x9B5E
-0x7E41 = 0x9B79
-0x7E42 = 0x9B66
-0x7E43 = 0x9B72
-0x7E44 = 0x9B75
-0x7E45 = 0x9B84
-0x7E46 = 0x9B8A
-0x7E47 = 0x9B8F
-0x7E48 = 0x9B9E
-0x7E49 = 0x9BA7
-0x7E4A = 0x9BC1
-0x7E4B = 0x9BCE
-0x7E4C = 0x9BE5
-0x7E4D = 0x9BF8
-0x7E4E = 0x9BFD
-0x7E4F = 0x9C00
-0x7E50 = 0x9C23
-0x7E51 = 0x9C41
-0x7E52 = 0x9C4F
-0x7E53 = 0x9C50
-0x7E54 = 0x9C53
-0x7E55 = 0x9C63
-0x7E56 = 0x9C65
-0x7E57 = 0x9C77
-0x7E58 = 0x9D1D
-0x7E59 = 0x9D1E
-0x7E5A = 0x9D43
-0x7E5B = 0x9D47
-0x7E5C = 0x9D52
-0x7E5D = 0x9D63
-0x7E5E = 0x9D70
-0x7E5F = 0x9D7C
-0x7E60 = 0x9D8A
-0x7E61 = 0x9D96
-0x7E62 = 0x9DC0
-0x7E63 = 0x9DAC
-0x7E64 = 0x9DBC
-0x7E65 = 0x9DD7
-0x7E67 = 0x9DE7
-0x7E68 = 0x9E07
-0x7E69 = 0x9E15
-0x7E6A = 0x9E7C
-0x7E6B = 0x9E9E
-0x7E6C = 0x9EA4
-0x7E6D = 0x9EAC
-0x7E6E = 0x9EAF
-0x7E6F = 0x9EB4
-0x7E70 = 0x9EB5
-0x7E71 = 0x9EC3
-0x7E72 = 0x9ED1
-0x7E73 = 0x9F10
-0x7E74 = 0x9F39
-0x7E75 = 0x9F57
-0x7E76 = 0x9F90
-0x7E77 = 0x9F94
-0x7E78 = 0x9F97
-0x7E79 = 0x9FA2
-0x7E7A = 0x59F8
-0x7E7B = 0x5C5B
-0x7E7C = 0x5E77
-0x7E7D = 0x7626
-0x7E7E = 0x7E6B
-END_MAP
diff --git a/enc/trans/JIS/JISX0213-1%UCS@SIP.src b/enc/trans/JIS/JISX0213-1%UCS@SIP.src
deleted file mode 100644
index da7eab62a7..0000000000
--- a/enc/trans/JIS/JISX0213-1%UCS@SIP.src
+++ /dev/null
@@ -1,60 +0,0 @@
-# $NetBSD: JISX0213-1%UCS@SIP.src,v 1.1 2007/03/05 16:58:33 tnozaki Exp $
-
-TYPE ROWCOL
-NAME "JISX0213-1/UCS:SIP"
-SRC_ZONE 0x21-0x7E / 0x21-0x7E / 8
-OOB_MODE INVALID
-DST_INVALID 0xFFFE
-DST_UNIT_BITS 16
-
-BEGIN_MAP
-## JIS X 0213:2004 vs Unicode mapping table
-##
-## Date: 22 May 2006
-## License:
-## Copyright (C) 2001 earthian@tama.or.jp, All Rights Reserved.
-## Copyright (C) 2001 I'O, All Rights Reserved.
-## Copyright (C) 2006 Project X0213, All Rights Reserved.
-## You can use, modify, distribute this table freely.
-## Note:
-## 3-XXXX JIS X 0213:2004 plane 1 (GL encoding)
-## 4-XXXX JIS X 0213:2000 plane 2 (GL encoding)
-## [1983] JIS codepoint defined by JIS X 0208-1983
-## [1990] JIS codepoint defined by JIS X 0208-1990
-## [2000] JIS codepoint defined by JIS X 0213:2000
-## [2004] JIS codepoint defined by JIS X 0213:2004
-## [Unicode3.1] UCS codepoint defined by Unicode 3.1
-## [Unicode3.2] UCS codepoint defined by Unicode 3.2
-## Fullwidth UCS fullwidth form (U+Fxxx)
-## Windows Windows (CP932) mapping
-## Some 0213 character can't represent by one UCS character.
-## In this table, such characters are described as 'U+xxxx+xxxx'.
-##
-## JIS Unicode Name Note
-0x2E22 = 0x000B
-0x2F42 = 0x123D
-0x2F4C = 0x131B
-0x2F60 = 0x146E
-0x2F7B = 0x18BD
-0x4F54 = 0x0B9F
-0x4F63 = 0x16B4
-0x4F6E = 0x1E34
-0x753A = 0x31C4
-0x7572 = 0x35C4
-0x7629 = 0x373F
-0x7632 = 0x3763
-0x7660 = 0x3CFE
-0x776C = 0x47F1
-0x787E = 0x548E
-0x7929 = 0x550E
-0x7947 = 0x5771
-0x7954 = 0x59C4
-0x796E = 0x5DA1
-0x7A5D = 0x6AFF
-0x7B33 = 0x6E40
-0x7B49 = 0x70F4
-0x7B6C = 0x7684
-0x7C49 = 0x8277
-0x7C51 = 0x83CD
-0x7E66 = 0xA190
-END_MAP
diff --git a/enc/trans/JIS/JISX0213-2%UCS@BMP.src b/enc/trans/JIS/JISX0213-2%UCS@BMP.src
deleted file mode 100644
index e22ef8aa26..0000000000
--- a/enc/trans/JIS/JISX0213-2%UCS@BMP.src
+++ /dev/null
@@ -1,2193 +0,0 @@
-# $NetBSD: JISX0213-2%UCS@BMP.src,v 1.1 2007/03/05 16:58:33 tnozaki Exp $
-
-TYPE ROWCOL
-NAME "JISX0213-2/UCS:BMP"
-SRC_ZONE 0x21-0x7E / 0x21-0x7E / 8
-OOB_MODE INVALID
-DST_INVALID 0xFFFE
-DST_UNIT_BITS 16
-
-BEGIN_MAP
-## JIS X 0213:2004 vs Unicode mapping table
-##
-## Date: 22 May 2006
-## License:
-## Copyright (C) 2001 earthian@tama.or.jp, All Rights Reserved.
-## Copyright (C) 2001 I'O, All Rights Reserved.
-## Copyright (C) 2006 Project X0213, All Rights Reserved.
-## You can use, modify, distribute this table freely.
-## Note:
-## 3-XXXX JIS X 0213:2004 plane 1 (GL encoding)
-## 4-XXXX JIS X 0213:2000 plane 2 (GL encoding)
-## [1983] JIS codepoint defined by JIS X 0208-1983
-## [1990] JIS codepoint defined by JIS X 0208-1990
-## [2000] JIS codepoint defined by JIS X 0213:2000
-## [2004] JIS codepoint defined by JIS X 0213:2004
-## [Unicode3.1] UCS codepoint defined by Unicode 3.1
-## [Unicode3.2] UCS codepoint defined by Unicode 3.2
-## Fullwidth UCS fullwidth form (U+Fxxx)
-## Windows Windows (CP932) mapping
-## Some 0213 character can't represent by one UCS character.
-## In this table, such characters are described as 'U+xxxx+xxxx'.
-##
-## JIS Unicode Name Note
-0x2122 = 0x4E02
-0x2123 = 0x4E0F
-0x2124 = 0x4E12
-0x2125 = 0x4E29
-0x2126 = 0x4E2B
-0x2127 = 0x4E2E
-0x2128 = 0x4E40
-0x2129 = 0x4E47
-0x212A = 0x4E48
-0x212C = 0x4E51
-0x212D = 0x3406
-0x212F = 0x4E5A
-0x2130 = 0x4E69
-0x2131 = 0x4E9D
-0x2132 = 0x342C
-0x2133 = 0x342E
-0x2134 = 0x4EB9
-0x2135 = 0x4EBB
-0x2137 = 0x4EBC
-0x2138 = 0x4EC3
-0x2139 = 0x4EC8
-0x213A = 0x4ED0
-0x213B = 0x4EEB
-0x213C = 0x4EDA
-0x213D = 0x4EF1
-0x213E = 0x4EF5
-0x213F = 0x4F00
-0x2140 = 0x4F16
-0x2141 = 0x4F64
-0x2142 = 0x4F37
-0x2143 = 0x4F3E
-0x2144 = 0x4F54
-0x2145 = 0x4F58
-0x2147 = 0x4F77
-0x2148 = 0x4F78
-0x2149 = 0x4F7A
-0x214A = 0x4F7D
-0x214B = 0x4F82
-0x214C = 0x4F85
-0x214D = 0x4F92
-0x214E = 0x4F9A
-0x214F = 0x4FE6
-0x2150 = 0x4FB2
-0x2151 = 0x4FBE
-0x2152 = 0x4FC5
-0x2153 = 0x4FCB
-0x2154 = 0x4FCF
-0x2155 = 0x4FD2
-0x2156 = 0x346A
-0x2157 = 0x4FF2
-0x2158 = 0x5000
-0x2159 = 0x5010
-0x215A = 0x5013
-0x215B = 0x501C
-0x215C = 0x501E
-0x215D = 0x5022
-0x215E = 0x3468
-0x215F = 0x5042
-0x2160 = 0x5046
-0x2161 = 0x504E
-0x2162 = 0x5053
-0x2163 = 0x5057
-0x2164 = 0x5063
-0x2165 = 0x5066
-0x2166 = 0x506A
-0x2167 = 0x5070
-0x2168 = 0x50A3
-0x2169 = 0x5088
-0x216A = 0x5092
-0x216B = 0x5093
-0x216C = 0x5095
-0x216D = 0x5096
-0x216E = 0x509C
-0x216F = 0x50AA
-0x2171 = 0x50B1
-0x2172 = 0x50BA
-0x2173 = 0x50BB
-0x2174 = 0x50C4
-0x2175 = 0x50C7
-0x2176 = 0x50F3
-0x2178 = 0x50CE
-0x217A = 0x50D4
-0x217B = 0x50D9
-0x217C = 0x50E1
-0x217D = 0x50E9
-0x217E = 0x3492
-0x2321 = 0x5108
-0x2323 = 0x5117
-0x2324 = 0x511B
-0x2326 = 0x5160
-0x2328 = 0x5173
-0x2329 = 0x5183
-0x232A = 0x518B
-0x232B = 0x34BC
-0x232C = 0x5198
-0x232D = 0x51A3
-0x232E = 0x51AD
-0x232F = 0x34C7
-0x2330 = 0x51BC
-0x2333 = 0x51F3
-0x2334 = 0x51F4
-0x2335 = 0x5202
-0x2336 = 0x5212
-0x2337 = 0x5216
-0x2339 = 0x5255
-0x233A = 0x525C
-0x233B = 0x526C
-0x233C = 0x5277
-0x233D = 0x5284
-0x233E = 0x5282
-0x2340 = 0x5298
-0x2342 = 0x52A4
-0x2343 = 0x52A6
-0x2344 = 0x52AF
-0x2345 = 0x52BA
-0x2346 = 0x52BB
-0x2347 = 0x52CA
-0x2348 = 0x351F
-0x2349 = 0x52D1
-0x234B = 0x52F7
-0x234C = 0x530A
-0x234D = 0x530B
-0x234E = 0x5324
-0x234F = 0x5335
-0x2350 = 0x533E
-0x2351 = 0x5342
-0x2354 = 0x5367
-0x2355 = 0x536C
-0x2356 = 0x537A
-0x2357 = 0x53A4
-0x2358 = 0x53B4
-0x235A = 0x53B7
-0x235B = 0x53C0
-0x235D = 0x355D
-0x235E = 0x355E
-0x235F = 0x53D5
-0x2360 = 0x53DA
-0x2361 = 0x3563
-0x2362 = 0x53F4
-0x2363 = 0x53F5
-0x2364 = 0x5455
-0x2365 = 0x5424
-0x2366 = 0x5428
-0x2367 = 0x356E
-0x2368 = 0x5443
-0x2369 = 0x5462
-0x236A = 0x5466
-0x236B = 0x546C
-0x236C = 0x548A
-0x236D = 0x548D
-0x236E = 0x5495
-0x236F = 0x54A0
-0x2370 = 0x54A6
-0x2371 = 0x54AD
-0x2372 = 0x54AE
-0x2373 = 0x54B7
-0x2374 = 0x54BA
-0x2375 = 0x54BF
-0x2376 = 0x54C3
-0x2378 = 0x54EC
-0x2379 = 0x54EF
-0x237A = 0x54F1
-0x237B = 0x54F3
-0x237C = 0x5500
-0x237D = 0x5501
-0x237E = 0x5509
-0x2421 = 0x553C
-0x2422 = 0x5541
-0x2423 = 0x35A6
-0x2424 = 0x5547
-0x2425 = 0x554A
-0x2426 = 0x35A8
-0x2427 = 0x5560
-0x2428 = 0x5561
-0x2429 = 0x5564
-0x242B = 0x557D
-0x242C = 0x5582
-0x242D = 0x5588
-0x242E = 0x5591
-0x242F = 0x35C5
-0x2430 = 0x55D2
-0x2433 = 0x55BF
-0x2434 = 0x55C9
-0x2435 = 0x55CC
-0x2436 = 0x55D1
-0x2437 = 0x55DD
-0x2438 = 0x35DA
-0x2439 = 0x55E2
-0x243B = 0x55E9
-0x243C = 0x5628
-0x243E = 0x5607
-0x243F = 0x5610
-0x2440 = 0x5630
-0x2441 = 0x5637
-0x2442 = 0x35F4
-0x2443 = 0x563D
-0x2444 = 0x563F
-0x2445 = 0x5640
-0x2446 = 0x5647
-0x2447 = 0x565E
-0x2448 = 0x5660
-0x2449 = 0x566D
-0x244A = 0x3605
-0x244B = 0x5688
-0x244C = 0x568C
-0x244D = 0x5695
-0x244E = 0x569A
-0x244F = 0x569D
-0x2450 = 0x56A8
-0x2451 = 0x56AD
-0x2452 = 0x56B2
-0x2453 = 0x56C5
-0x2454 = 0x56CD
-0x2455 = 0x56DF
-0x2456 = 0x56E8
-0x2457 = 0x56F6
-0x2458 = 0x56F7
-0x245A = 0x5715
-0x245B = 0x5723
-0x245D = 0x5729
-0x245F = 0x5745
-0x2460 = 0x5746
-0x2461 = 0x574C
-0x2462 = 0x574D
-0x2464 = 0x5768
-0x2465 = 0x576F
-0x2466 = 0x5773
-0x2467 = 0x5774
-0x2468 = 0x5775
-0x2469 = 0x577B
-0x246C = 0x57AC
-0x246D = 0x579A
-0x246E = 0x579D
-0x246F = 0x579E
-0x2470 = 0x57A8
-0x2471 = 0x57D7
-0x2473 = 0x57CC
-0x2476 = 0x57DE
-0x2477 = 0x57E6
-0x2478 = 0x57F0
-0x2479 = 0x364A
-0x247A = 0x57F8
-0x247B = 0x57FB
-0x247C = 0x57FD
-0x247D = 0x5804
-0x247E = 0x581E
-0x2521 = 0x5820
-0x2522 = 0x5827
-0x2523 = 0x5832
-0x2524 = 0x5839
-0x2526 = 0x5849
-0x2527 = 0x584C
-0x2528 = 0x5867
-0x2529 = 0x588A
-0x252A = 0x588B
-0x252B = 0x588D
-0x252C = 0x588F
-0x252D = 0x5890
-0x252E = 0x5894
-0x252F = 0x589D
-0x2530 = 0x58AA
-0x2531 = 0x58B1
-0x2533 = 0x58C3
-0x2534 = 0x58CD
-0x2535 = 0x58E2
-0x2536 = 0x58F3
-0x2537 = 0x58F4
-0x2538 = 0x5905
-0x2539 = 0x5906
-0x253A = 0x590B
-0x253B = 0x590D
-0x253C = 0x5914
-0x253D = 0x5924
-0x253F = 0x3691
-0x2540 = 0x593D
-0x2541 = 0x3699
-0x2542 = 0x5946
-0x2543 = 0x3696
-0x2545 = 0x595B
-0x2546 = 0x595F
-0x2548 = 0x5975
-0x2549 = 0x5976
-0x254A = 0x597C
-0x254B = 0x599F
-0x254C = 0x59AE
-0x254D = 0x59BC
-0x254E = 0x59C8
-0x254F = 0x59CD
-0x2550 = 0x59DE
-0x2551 = 0x59E3
-0x2552 = 0x59E4
-0x2553 = 0x59E7
-0x2554 = 0x59EE
-0x2557 = 0x36CF
-0x2558 = 0x5A0C
-0x2559 = 0x5A0D
-0x255A = 0x5A17
-0x255B = 0x5A27
-0x255C = 0x5A2D
-0x255D = 0x5A55
-0x255E = 0x5A65
-0x255F = 0x5A7A
-0x2560 = 0x5A8B
-0x2561 = 0x5A9C
-0x2562 = 0x5A9F
-0x2563 = 0x5AA0
-0x2564 = 0x5AA2
-0x2565 = 0x5AB1
-0x2566 = 0x5AB3
-0x2567 = 0x5AB5
-0x2568 = 0x5ABA
-0x2569 = 0x5ABF
-0x256A = 0x5ADA
-0x256B = 0x5ADC
-0x256C = 0x5AE0
-0x256D = 0x5AE5
-0x256E = 0x5AF0
-0x256F = 0x5AEE
-0x2570 = 0x5AF5
-0x2571 = 0x5B00
-0x2572 = 0x5B08
-0x2573 = 0x5B17
-0x2574 = 0x5B34
-0x2575 = 0x5B2D
-0x2576 = 0x5B4C
-0x2577 = 0x5B52
-0x2578 = 0x5B68
-0x2579 = 0x5B6F
-0x257A = 0x5B7C
-0x257B = 0x5B7F
-0x257C = 0x5B81
-0x257D = 0x5B84
-0x2821 = 0x5B96
-0x2822 = 0x5BAC
-0x2823 = 0x3761
-0x2824 = 0x5BC0
-0x2825 = 0x3762
-0x2826 = 0x5BCE
-0x2827 = 0x5BD6
-0x2828 = 0x376C
-0x2829 = 0x376B
-0x282A = 0x5BF1
-0x282B = 0x5BFD
-0x282C = 0x3775
-0x282D = 0x5C03
-0x282E = 0x5C29
-0x282F = 0x5C30
-0x2831 = 0x5C5F
-0x2832 = 0x5C63
-0x2833 = 0x5C67
-0x2834 = 0x5C68
-0x2835 = 0x5C69
-0x2836 = 0x5C70
-0x2839 = 0x5C7C
-0x283C = 0x5C88
-0x283D = 0x5C8A
-0x283E = 0x37C1
-0x2841 = 0x5CA0
-0x2842 = 0x5CA2
-0x2843 = 0x5CA6
-0x2844 = 0x5CA7
-0x2846 = 0x5CAD
-0x2847 = 0x5CB5
-0x2849 = 0x5CC9
-0x284C = 0x5D06
-0x284D = 0x5D10
-0x284E = 0x5D2B
-0x284F = 0x5D1D
-0x2850 = 0x5D20
-0x2851 = 0x5D24
-0x2852 = 0x5D26
-0x2853 = 0x5D31
-0x2854 = 0x5D39
-0x2855 = 0x5D42
-0x2856 = 0x37E8
-0x2857 = 0x5D61
-0x2858 = 0x5D6A
-0x2859 = 0x37F4
-0x285A = 0x5D70
-0x285C = 0x37FD
-0x285D = 0x5D88
-0x285E = 0x3800
-0x285F = 0x5D92
-0x2860 = 0x5D94
-0x2861 = 0x5D97
-0x2862 = 0x5D99
-0x2863 = 0x5DB0
-0x2864 = 0x5DB2
-0x2865 = 0x5DB4
-0x2867 = 0x5DB9
-0x2868 = 0x5DD1
-0x2869 = 0x5DD7
-0x286A = 0x5DD8
-0x286B = 0x5DE0
-0x286D = 0x5DE4
-0x286E = 0x5DE9
-0x286F = 0x382F
-0x2870 = 0x5E00
-0x2871 = 0x3836
-0x2872 = 0x5E12
-0x2873 = 0x5E15
-0x2874 = 0x3840
-0x2875 = 0x5E1F
-0x2876 = 0x5E2E
-0x2877 = 0x5E3E
-0x2878 = 0x5E49
-0x2879 = 0x385C
-0x287A = 0x5E56
-0x287B = 0x3861
-0x287C = 0x5E6B
-0x287D = 0x5E6C
-0x287E = 0x5E6D
-0x2C21 = 0x5E6E
-0x2C23 = 0x5EA5
-0x2C24 = 0x5EAA
-0x2C25 = 0x5EAC
-0x2C26 = 0x5EB9
-0x2C27 = 0x5EBF
-0x2C28 = 0x5EC6
-0x2C29 = 0x5ED2
-0x2C2A = 0x5ED9
-0x2C2C = 0x5EFD
-0x2C2D = 0x5F08
-0x2C2E = 0x5F0E
-0x2C2F = 0x5F1C
-0x2C31 = 0x5F1E
-0x2C32 = 0x5F47
-0x2C33 = 0x5F63
-0x2C34 = 0x5F72
-0x2C35 = 0x5F7E
-0x2C36 = 0x5F8F
-0x2C37 = 0x5FA2
-0x2C38 = 0x5FA4
-0x2C39 = 0x5FB8
-0x2C3A = 0x5FC4
-0x2C3B = 0x38FA
-0x2C3C = 0x5FC7
-0x2C3D = 0x5FCB
-0x2C3E = 0x5FD2
-0x2C3F = 0x5FD3
-0x2C40 = 0x5FD4
-0x2C41 = 0x5FE2
-0x2C42 = 0x5FEE
-0x2C43 = 0x5FEF
-0x2C44 = 0x5FF3
-0x2C45 = 0x5FFC
-0x2C46 = 0x3917
-0x2C47 = 0x6017
-0x2C48 = 0x6022
-0x2C49 = 0x6024
-0x2C4A = 0x391A
-0x2C4B = 0x604C
-0x2C4C = 0x607F
-0x2C4D = 0x608A
-0x2C4E = 0x6095
-0x2C4F = 0x60A8
-0x2C51 = 0x60B0
-0x2C52 = 0x60B1
-0x2C53 = 0x60BE
-0x2C54 = 0x60C8
-0x2C55 = 0x60D9
-0x2C56 = 0x60DB
-0x2C57 = 0x60EE
-0x2C58 = 0x60F2
-0x2C59 = 0x60F5
-0x2C5A = 0x6110
-0x2C5B = 0x6112
-0x2C5C = 0x6113
-0x2C5D = 0x6119
-0x2C5E = 0x611E
-0x2C5F = 0x613A
-0x2C60 = 0x396F
-0x2C61 = 0x6141
-0x2C62 = 0x6146
-0x2C63 = 0x6160
-0x2C64 = 0x617C
-0x2C66 = 0x6192
-0x2C67 = 0x6193
-0x2C68 = 0x6197
-0x2C69 = 0x6198
-0x2C6A = 0x61A5
-0x2C6B = 0x61A8
-0x2C6C = 0x61AD
-0x2C6E = 0x61D5
-0x2C6F = 0x61DD
-0x2C70 = 0x61DF
-0x2C71 = 0x61F5
-0x2C73 = 0x6215
-0x2C74 = 0x6223
-0x2C75 = 0x6229
-0x2C76 = 0x6246
-0x2C77 = 0x624C
-0x2C78 = 0x6251
-0x2C79 = 0x6252
-0x2C7A = 0x6261
-0x2C7B = 0x6264
-0x2C7C = 0x627B
-0x2C7D = 0x626D
-0x2C7E = 0x6273
-0x2D21 = 0x6299
-0x2D22 = 0x62A6
-0x2D23 = 0x62D5
-0x2D25 = 0x62FD
-0x2D26 = 0x6303
-0x2D27 = 0x630D
-0x2D28 = 0x6310
-0x2D2B = 0x6332
-0x2D2C = 0x6335
-0x2D2D = 0x633B
-0x2D2E = 0x633C
-0x2D2F = 0x6341
-0x2D30 = 0x6344
-0x2D31 = 0x634E
-0x2D33 = 0x6359
-0x2D36 = 0x636C
-0x2D37 = 0x6384
-0x2D38 = 0x6399
-0x2D3A = 0x6394
-0x2D3B = 0x63BD
-0x2D3C = 0x63F7
-0x2D3D = 0x63D4
-0x2D3E = 0x63D5
-0x2D3F = 0x63DC
-0x2D40 = 0x63E0
-0x2D41 = 0x63EB
-0x2D42 = 0x63EC
-0x2D43 = 0x63F2
-0x2D44 = 0x6409
-0x2D45 = 0x641E
-0x2D46 = 0x6425
-0x2D47 = 0x6429
-0x2D48 = 0x642F
-0x2D49 = 0x645A
-0x2D4A = 0x645B
-0x2D4B = 0x645D
-0x2D4C = 0x6473
-0x2D4D = 0x647D
-0x2D4E = 0x6487
-0x2D4F = 0x6491
-0x2D50 = 0x649D
-0x2D51 = 0x649F
-0x2D52 = 0x64CB
-0x2D53 = 0x64CC
-0x2D54 = 0x64D5
-0x2D55 = 0x64D7
-0x2D57 = 0x64E4
-0x2D58 = 0x64E5
-0x2D59 = 0x64FF
-0x2D5A = 0x6504
-0x2D5B = 0x3A6E
-0x2D5C = 0x650F
-0x2D5D = 0x6514
-0x2D5E = 0x6516
-0x2D5F = 0x3A73
-0x2D60 = 0x651E
-0x2D61 = 0x6532
-0x2D62 = 0x6544
-0x2D63 = 0x6554
-0x2D64 = 0x656B
-0x2D65 = 0x657A
-0x2D66 = 0x6581
-0x2D67 = 0x6584
-0x2D68 = 0x6585
-0x2D69 = 0x658A
-0x2D6A = 0x65B2
-0x2D6B = 0x65B5
-0x2D6C = 0x65B8
-0x2D6D = 0x65BF
-0x2D6E = 0x65C2
-0x2D6F = 0x65C9
-0x2D70 = 0x65D4
-0x2D71 = 0x3AD6
-0x2D72 = 0x65F2
-0x2D73 = 0x65F9
-0x2D74 = 0x65FC
-0x2D75 = 0x6604
-0x2D76 = 0x6608
-0x2D77 = 0x6621
-0x2D78 = 0x662A
-0x2D79 = 0x6645
-0x2D7A = 0x6651
-0x2D7B = 0x664E
-0x2D7C = 0x3AEA
-0x2D7E = 0x6657
-0x2E21 = 0x665B
-0x2E22 = 0x6663
-0x2E25 = 0x666A
-0x2E26 = 0x666B
-0x2E27 = 0x666C
-0x2E28 = 0x666D
-0x2E29 = 0x667B
-0x2E2A = 0x6680
-0x2E2B = 0x6690
-0x2E2C = 0x6692
-0x2E2D = 0x6699
-0x2E2E = 0x3B0E
-0x2E2F = 0x66AD
-0x2E30 = 0x66B1
-0x2E31 = 0x66B5
-0x2E32 = 0x3B1A
-0x2E33 = 0x66BF
-0x2E34 = 0x3B1C
-0x2E35 = 0x66EC
-0x2E36 = 0x3AD7
-0x2E37 = 0x6701
-0x2E38 = 0x6705
-0x2E39 = 0x6712
-0x2E3B = 0x6719
-0x2E3E = 0x674C
-0x2E3F = 0x674D
-0x2E40 = 0x6754
-0x2E41 = 0x675D
-0x2E45 = 0x6774
-0x2E46 = 0x6776
-0x2E48 = 0x6792
-0x2E4A = 0x8363
-0x2E4B = 0x6810
-0x2E4C = 0x67B0
-0x2E4D = 0x67B2
-0x2E4E = 0x67C3
-0x2E4F = 0x67C8
-0x2E50 = 0x67D2
-0x2E51 = 0x67D9
-0x2E52 = 0x67DB
-0x2E53 = 0x67F0
-0x2E54 = 0x67F7
-0x2E58 = 0x6818
-0x2E59 = 0x681F
-0x2E5A = 0x682D
-0x2E5C = 0x6833
-0x2E5D = 0x683B
-0x2E5E = 0x683E
-0x2E5F = 0x6844
-0x2E60 = 0x6845
-0x2E61 = 0x6849
-0x2E62 = 0x684C
-0x2E63 = 0x6855
-0x2E64 = 0x6857
-0x2E65 = 0x3B77
-0x2E66 = 0x686B
-0x2E67 = 0x686E
-0x2E68 = 0x687A
-0x2E69 = 0x687C
-0x2E6A = 0x6882
-0x2E6B = 0x6890
-0x2E6C = 0x6896
-0x2E6D = 0x3B6D
-0x2E6E = 0x6898
-0x2E6F = 0x6899
-0x2E70 = 0x689A
-0x2E71 = 0x689C
-0x2E72 = 0x68AA
-0x2E73 = 0x68AB
-0x2E74 = 0x68B4
-0x2E75 = 0x68BB
-0x2E76 = 0x68FB
-0x2E79 = 0xFA13
-0x2E7A = 0x68C3
-0x2E7B = 0x68C5
-0x2E7C = 0x68CC
-0x2E7D = 0x68CF
-0x2E7E = 0x68D6
-0x2F21 = 0x68D9
-0x2F22 = 0x68E4
-0x2F23 = 0x68E5
-0x2F24 = 0x68EC
-0x2F25 = 0x68F7
-0x2F26 = 0x6903
-0x2F27 = 0x6907
-0x2F28 = 0x3B87
-0x2F29 = 0x3B88
-0x2F2B = 0x693B
-0x2F2C = 0x3B8D
-0x2F2D = 0x6946
-0x2F2E = 0x6969
-0x2F2F = 0x696C
-0x2F30 = 0x6972
-0x2F31 = 0x697A
-0x2F32 = 0x697F
-0x2F33 = 0x6992
-0x2F34 = 0x3BA4
-0x2F35 = 0x6996
-0x2F36 = 0x6998
-0x2F37 = 0x69A6
-0x2F38 = 0x69B0
-0x2F39 = 0x69B7
-0x2F3A = 0x69BA
-0x2F3B = 0x69BC
-0x2F3C = 0x69C0
-0x2F3D = 0x69D1
-0x2F3E = 0x69D6
-0x2F41 = 0x6A30
-0x2F44 = 0x69E3
-0x2F45 = 0x69EE
-0x2F46 = 0x69EF
-0x2F47 = 0x69F3
-0x2F48 = 0x3BCD
-0x2F49 = 0x69F4
-0x2F4A = 0x69FE
-0x2F4B = 0x6A11
-0x2F4C = 0x6A1A
-0x2F4D = 0x6A1D
-0x2F4F = 0x6A32
-0x2F50 = 0x6A33
-0x2F51 = 0x6A34
-0x2F52 = 0x6A3F
-0x2F53 = 0x6A46
-0x2F54 = 0x6A49
-0x2F55 = 0x6A7A
-0x2F56 = 0x6A4E
-0x2F57 = 0x6A52
-0x2F58 = 0x6A64
-0x2F5A = 0x6A7E
-0x2F5B = 0x6A83
-0x2F5C = 0x6A8B
-0x2F5D = 0x3BF0
-0x2F5E = 0x6A91
-0x2F5F = 0x6A9F
-0x2F60 = 0x6AA1
-0x2F62 = 0x6AAB
-0x2F63 = 0x6ABD
-0x2F64 = 0x6AC6
-0x2F65 = 0x6AD4
-0x2F66 = 0x6AD0
-0x2F67 = 0x6ADC
-0x2F68 = 0x6ADD
-0x2F6B = 0x6AEC
-0x2F6C = 0x6AF1
-0x2F6D = 0x6AF2
-0x2F6E = 0x6AF3
-0x2F6F = 0x6AFD
-0x2F71 = 0x6B0B
-0x2F72 = 0x6B0F
-0x2F73 = 0x6B10
-0x2F74 = 0x6B11
-0x2F76 = 0x6B17
-0x2F77 = 0x3C26
-0x2F78 = 0x6B2F
-0x2F79 = 0x6B4A
-0x2F7A = 0x6B58
-0x2F7B = 0x6B6C
-0x2F7C = 0x6B75
-0x2F7D = 0x6B7A
-0x2F7E = 0x6B81
-0x6E21 = 0x6B9B
-0x6E22 = 0x6BAE
-0x6E24 = 0x6BBD
-0x6E25 = 0x6BBE
-0x6E26 = 0x6BC7
-0x6E27 = 0x6BC8
-0x6E28 = 0x6BC9
-0x6E29 = 0x6BDA
-0x6E2A = 0x6BE6
-0x6E2B = 0x6BE7
-0x6E2C = 0x6BEE
-0x6E2D = 0x6BF1
-0x6E2E = 0x6C02
-0x6E2F = 0x6C0A
-0x6E30 = 0x6C0E
-0x6E31 = 0x6C35
-0x6E32 = 0x6C36
-0x6E33 = 0x6C3A
-0x6E35 = 0x6C3F
-0x6E36 = 0x6C4D
-0x6E37 = 0x6C5B
-0x6E38 = 0x6C6D
-0x6E39 = 0x6C84
-0x6E3A = 0x6C89
-0x6E3B = 0x3CC3
-0x6E3C = 0x6C94
-0x6E3D = 0x6C95
-0x6E3E = 0x6C97
-0x6E3F = 0x6CAD
-0x6E40 = 0x6CC2
-0x6E41 = 0x6CD0
-0x6E42 = 0x3CD2
-0x6E43 = 0x6CD6
-0x6E44 = 0x6CDA
-0x6E45 = 0x6CDC
-0x6E46 = 0x6CE9
-0x6E47 = 0x6CEC
-0x6E48 = 0x6CED
-0x6E4A = 0x6D00
-0x6E4B = 0x6D0A
-0x6E4C = 0x6D24
-0x6E4D = 0x6D26
-0x6E4E = 0x6D27
-0x6E4F = 0x6C67
-0x6E50 = 0x6D2F
-0x6E51 = 0x6D3C
-0x6E52 = 0x6D5B
-0x6E53 = 0x6D5E
-0x6E54 = 0x6D60
-0x6E55 = 0x6D70
-0x6E56 = 0x6D80
-0x6E57 = 0x6D81
-0x6E58 = 0x6D8A
-0x6E59 = 0x6D8D
-0x6E5A = 0x6D91
-0x6E5B = 0x6D98
-0x6E5D = 0x6E17
-0x6E61 = 0x6DAB
-0x6E62 = 0x6DAE
-0x6E63 = 0x6DB4
-0x6E64 = 0x6DC2
-0x6E65 = 0x6D34
-0x6E66 = 0x6DC8
-0x6E67 = 0x6DCE
-0x6E68 = 0x6DCF
-0x6E69 = 0x6DD0
-0x6E6A = 0x6DDF
-0x6E6B = 0x6DE9
-0x6E6C = 0x6DF6
-0x6E6D = 0x6E36
-0x6E6E = 0x6E1E
-0x6E6F = 0x6E22
-0x6E70 = 0x6E27
-0x6E71 = 0x3D11
-0x6E72 = 0x6E32
-0x6E73 = 0x6E3C
-0x6E74 = 0x6E48
-0x6E75 = 0x6E49
-0x6E76 = 0x6E4B
-0x6E77 = 0x6E4C
-0x6E78 = 0x6E4F
-0x6E79 = 0x6E51
-0x6E7A = 0x6E53
-0x6E7B = 0x6E54
-0x6E7C = 0x6E57
-0x6E7D = 0x6E63
-0x6E7E = 0x3D1E
-0x6F21 = 0x6E93
-0x6F22 = 0x6EA7
-0x6F23 = 0x6EB4
-0x6F24 = 0x6EBF
-0x6F25 = 0x6EC3
-0x6F26 = 0x6ECA
-0x6F27 = 0x6ED9
-0x6F28 = 0x6F35
-0x6F29 = 0x6EEB
-0x6F2A = 0x6EF9
-0x6F2B = 0x6EFB
-0x6F2C = 0x6F0A
-0x6F2D = 0x6F0C
-0x6F2E = 0x6F18
-0x6F2F = 0x6F25
-0x6F30 = 0x6F36
-0x6F31 = 0x6F3C
-0x6F33 = 0x6F52
-0x6F34 = 0x6F57
-0x6F35 = 0x6F5A
-0x6F36 = 0x6F60
-0x6F37 = 0x6F68
-0x6F38 = 0x6F98
-0x6F39 = 0x6F7D
-0x6F3A = 0x6F90
-0x6F3B = 0x6F96
-0x6F3C = 0x6FBE
-0x6F3D = 0x6F9F
-0x6F3E = 0x6FA5
-0x6F3F = 0x6FAF
-0x6F40 = 0x3D64
-0x6F41 = 0x6FB5
-0x6F42 = 0x6FC8
-0x6F43 = 0x6FC9
-0x6F44 = 0x6FDA
-0x6F45 = 0x6FDE
-0x6F46 = 0x6FE9
-0x6F48 = 0x6FFC
-0x6F49 = 0x7000
-0x6F4A = 0x7007
-0x6F4B = 0x700A
-0x6F4C = 0x7023
-0x6F4E = 0x7039
-0x6F4F = 0x703A
-0x6F50 = 0x703C
-0x6F51 = 0x7043
-0x6F52 = 0x7047
-0x6F53 = 0x704B
-0x6F54 = 0x3D9A
-0x6F55 = 0x7054
-0x6F56 = 0x7065
-0x6F57 = 0x7069
-0x6F58 = 0x706C
-0x6F59 = 0x706E
-0x6F5A = 0x7076
-0x6F5B = 0x707E
-0x6F5C = 0x7081
-0x6F5D = 0x7086
-0x6F5E = 0x7095
-0x6F5F = 0x7097
-0x6F60 = 0x70BB
-0x6F62 = 0x709F
-0x6F63 = 0x70B1
-0x6F65 = 0x70EC
-0x6F66 = 0x70CA
-0x6F67 = 0x70D1
-0x6F68 = 0x70D3
-0x6F69 = 0x70DC
-0x6F6A = 0x7103
-0x6F6B = 0x7104
-0x6F6C = 0x7106
-0x6F6D = 0x7107
-0x6F6E = 0x7108
-0x6F6F = 0x710C
-0x6F70 = 0x3DC0
-0x6F71 = 0x712F
-0x6F72 = 0x7131
-0x6F73 = 0x7150
-0x6F74 = 0x714A
-0x6F75 = 0x7153
-0x6F76 = 0x715E
-0x6F77 = 0x3DD4
-0x6F78 = 0x7196
-0x6F79 = 0x7180
-0x6F7A = 0x719B
-0x6F7B = 0x71A0
-0x6F7C = 0x71A2
-0x6F7D = 0x71AE
-0x6F7E = 0x71AF
-0x7021 = 0x71B3
-0x7023 = 0x71CB
-0x7024 = 0x71D3
-0x7025 = 0x71D9
-0x7026 = 0x71DC
-0x7027 = 0x7207
-0x7028 = 0x3E05
-0x7029 = 0xFA49
-0x702A = 0x722B
-0x702B = 0x7234
-0x702C = 0x7238
-0x702D = 0x7239
-0x702E = 0x4E2C
-0x702F = 0x7242
-0x7030 = 0x7253
-0x7031 = 0x7257
-0x7032 = 0x7263
-0x7034 = 0x726E
-0x7035 = 0x726F
-0x7036 = 0x7278
-0x7037 = 0x727F
-0x7038 = 0x728E
-0x703A = 0x72AD
-0x703B = 0x72AE
-0x703C = 0x72B0
-0x703D = 0x72B1
-0x703E = 0x72C1
-0x703F = 0x3E60
-0x7040 = 0x72CC
-0x7041 = 0x3E66
-0x7042 = 0x3E68
-0x7043 = 0x72F3
-0x7044 = 0x72FA
-0x7045 = 0x7307
-0x7046 = 0x7312
-0x7047 = 0x7318
-0x7048 = 0x7319
-0x7049 = 0x3E83
-0x704A = 0x7339
-0x704B = 0x732C
-0x704C = 0x7331
-0x704D = 0x7333
-0x704E = 0x733D
-0x704F = 0x7352
-0x7050 = 0x3E94
-0x7051 = 0x736B
-0x7052 = 0x736C
-0x7054 = 0x736E
-0x7055 = 0x736F
-0x7056 = 0x7371
-0x7057 = 0x7377
-0x7058 = 0x7381
-0x7059 = 0x7385
-0x705A = 0x738A
-0x705B = 0x7394
-0x705C = 0x7398
-0x705D = 0x739C
-0x705E = 0x739E
-0x705F = 0x73A5
-0x7060 = 0x73A8
-0x7061 = 0x73B5
-0x7062 = 0x73B7
-0x7063 = 0x73B9
-0x7064 = 0x73BC
-0x7065 = 0x73BF
-0x7066 = 0x73C5
-0x7067 = 0x73CB
-0x7068 = 0x73E1
-0x7069 = 0x73E7
-0x706A = 0x73F9
-0x706B = 0x7413
-0x706C = 0x73FA
-0x706D = 0x7401
-0x706E = 0x7424
-0x706F = 0x7431
-0x7070 = 0x7439
-0x7071 = 0x7453
-0x7072 = 0x7440
-0x7073 = 0x7443
-0x7074 = 0x744D
-0x7075 = 0x7452
-0x7076 = 0x745D
-0x7077 = 0x7471
-0x7078 = 0x7481
-0x7079 = 0x7485
-0x707A = 0x7488
-0x707C = 0x7492
-0x707D = 0x7497
-0x707E = 0x7499
-0x7121 = 0x74A0
-0x7122 = 0x74A1
-0x7123 = 0x74A5
-0x7124 = 0x74AA
-0x7125 = 0x74AB
-0x7126 = 0x74B9
-0x7127 = 0x74BB
-0x7128 = 0x74BA
-0x7129 = 0x74D6
-0x712A = 0x74D8
-0x712B = 0x74DE
-0x712C = 0x74EF
-0x712D = 0x74EB
-0x712F = 0x74FA
-0x7131 = 0x7520
-0x7132 = 0x7524
-0x7133 = 0x752A
-0x7134 = 0x3F57
-0x7136 = 0x753D
-0x7137 = 0x753E
-0x7138 = 0x7540
-0x7139 = 0x7548
-0x713A = 0x754E
-0x713B = 0x7550
-0x713C = 0x7552
-0x713D = 0x756C
-0x713E = 0x7572
-0x713F = 0x7571
-0x7140 = 0x757A
-0x7141 = 0x757D
-0x7142 = 0x757E
-0x7143 = 0x7581
-0x7145 = 0x758C
-0x7146 = 0x3F75
-0x7147 = 0x75A2
-0x7148 = 0x3F77
-0x7149 = 0x75B0
-0x714A = 0x75B7
-0x714B = 0x75BF
-0x714C = 0x75C0
-0x714D = 0x75C6
-0x714E = 0x75CF
-0x714F = 0x75D3
-0x7150 = 0x75DD
-0x7151 = 0x75DF
-0x7152 = 0x75E0
-0x7153 = 0x75E7
-0x7154 = 0x75EC
-0x7155 = 0x75EE
-0x7156 = 0x75F1
-0x7157 = 0x75F9
-0x7158 = 0x7603
-0x7159 = 0x7618
-0x715A = 0x7607
-0x715B = 0x760F
-0x715C = 0x3FAE
-0x715E = 0x7613
-0x715F = 0x761B
-0x7160 = 0x761C
-0x7162 = 0x7625
-0x7163 = 0x7628
-0x7164 = 0x763C
-0x7165 = 0x7633
-0x7167 = 0x3FC9
-0x7168 = 0x7641
-0x716A = 0x7649
-0x716B = 0x7655
-0x716C = 0x3FD7
-0x716D = 0x766E
-0x716E = 0x7695
-0x716F = 0x769C
-0x7170 = 0x76A1
-0x7171 = 0x76A0
-0x7172 = 0x76A7
-0x7173 = 0x76A8
-0x7174 = 0x76AF
-0x7176 = 0x76C9
-0x7178 = 0x76E8
-0x7179 = 0x76EC
-0x717B = 0x7717
-0x717C = 0x771A
-0x717D = 0x772D
-0x717E = 0x7735
-0x7222 = 0x4039
-0x7225 = 0x7758
-0x7226 = 0x7760
-0x7227 = 0x776A
-0x7229 = 0x7772
-0x722A = 0x777C
-0x722B = 0x777D
-0x722D = 0x4058
-0x722E = 0x779A
-0x722F = 0x779F
-0x7230 = 0x77A2
-0x7231 = 0x77A4
-0x7232 = 0x77A9
-0x7233 = 0x77DE
-0x7234 = 0x77DF
-0x7235 = 0x77E4
-0x7236 = 0x77E6
-0x7237 = 0x77EA
-0x7238 = 0x77EC
-0x7239 = 0x4093
-0x723A = 0x77F0
-0x723B = 0x77F4
-0x723C = 0x77FB
-0x723E = 0x7805
-0x723F = 0x7806
-0x7240 = 0x7809
-0x7241 = 0x780D
-0x7242 = 0x7819
-0x7243 = 0x7821
-0x7244 = 0x782C
-0x7245 = 0x7847
-0x7246 = 0x7864
-0x7247 = 0x786A
-0x7249 = 0x788A
-0x724A = 0x7894
-0x724B = 0x78A4
-0x724C = 0x789D
-0x724D = 0x789E
-0x724E = 0x789F
-0x724F = 0x78BB
-0x7250 = 0x78C8
-0x7251 = 0x78CC
-0x7252 = 0x78CE
-0x7253 = 0x78D5
-0x7254 = 0x78E0
-0x7255 = 0x78E1
-0x7256 = 0x78E6
-0x7257 = 0x78F9
-0x7258 = 0x78FA
-0x7259 = 0x78FB
-0x725A = 0x78FE
-0x725C = 0x7910
-0x725D = 0x791B
-0x725E = 0x7930
-0x725F = 0x7925
-0x7260 = 0x793B
-0x7261 = 0x794A
-0x7262 = 0x7958
-0x7263 = 0x795B
-0x7264 = 0x4105
-0x7265 = 0x7967
-0x7266 = 0x7972
-0x7267 = 0x7994
-0x7268 = 0x7995
-0x7269 = 0x7996
-0x726A = 0x799B
-0x726B = 0x79A1
-0x726C = 0x79A9
-0x726D = 0x79B4
-0x726E = 0x79BB
-0x726F = 0x79C2
-0x7270 = 0x79C7
-0x7271 = 0x79CC
-0x7272 = 0x79CD
-0x7273 = 0x79D6
-0x7274 = 0x4148
-0x7277 = 0x414F
-0x7278 = 0x7A0A
-0x7279 = 0x7A11
-0x727A = 0x7A15
-0x727B = 0x7A1B
-0x727C = 0x7A1E
-0x727D = 0x4163
-0x727E = 0x7A2D
-0x7321 = 0x7A38
-0x7322 = 0x7A47
-0x7323 = 0x7A4C
-0x7324 = 0x7A56
-0x7325 = 0x7A59
-0x7326 = 0x7A5C
-0x7327 = 0x7A5F
-0x7328 = 0x7A60
-0x7329 = 0x7A67
-0x732A = 0x7A6A
-0x732B = 0x7A75
-0x732C = 0x7A78
-0x732D = 0x7A82
-0x732E = 0x7A8A
-0x732F = 0x7A90
-0x7330 = 0x7AA3
-0x7331 = 0x7AAC
-0x7333 = 0x41B4
-0x7334 = 0x7AB9
-0x7335 = 0x7ABC
-0x7336 = 0x7ABE
-0x7337 = 0x41BF
-0x7338 = 0x7ACC
-0x7339 = 0x7AD1
-0x733A = 0x7AE7
-0x733B = 0x7AE8
-0x733C = 0x7AF4
-0x733F = 0x7B07
-0x7341 = 0x7B3D
-0x7342 = 0x7B27
-0x7343 = 0x7B2A
-0x7344 = 0x7B2E
-0x7345 = 0x7B2F
-0x7346 = 0x7B31
-0x7347 = 0x41E6
-0x7348 = 0x41F3
-0x7349 = 0x7B7F
-0x734A = 0x7B41
-0x734B = 0x41EE
-0x734C = 0x7B55
-0x734D = 0x7B79
-0x734E = 0x7B64
-0x734F = 0x7B66
-0x7350 = 0x7B69
-0x7351 = 0x7B73
-0x7353 = 0x4207
-0x7354 = 0x7B90
-0x7355 = 0x7B91
-0x7356 = 0x7B9B
-0x7357 = 0x420E
-0x7358 = 0x7BAF
-0x7359 = 0x7BB5
-0x735A = 0x7BBC
-0x735B = 0x7BC5
-0x735C = 0x7BCA
-0x735F = 0x7BD4
-0x7360 = 0x7BD6
-0x7361 = 0x7BDA
-0x7362 = 0x7BEA
-0x7363 = 0x7BF0
-0x7364 = 0x7C03
-0x7365 = 0x7C0B
-0x7366 = 0x7C0E
-0x7367 = 0x7C0F
-0x7368 = 0x7C26
-0x7369 = 0x7C45
-0x736A = 0x7C4A
-0x736B = 0x7C51
-0x736C = 0x7C57
-0x736D = 0x7C5E
-0x736E = 0x7C61
-0x736F = 0x7C69
-0x7370 = 0x7C6E
-0x7371 = 0x7C6F
-0x7372 = 0x7C70
-0x7376 = 0x7CA6
-0x7378 = 0x7CB6
-0x7379 = 0x7CB7
-0x737A = 0x7CBF
-0x737C = 0x7CC4
-0x737E = 0x7CC8
-0x7421 = 0x7CCD
-0x7423 = 0x7CD7
-0x7425 = 0x7CE6
-0x7426 = 0x7CEB
-0x7428 = 0x7CF5
-0x7429 = 0x7D03
-0x742A = 0x7D09
-0x742B = 0x42C6
-0x742C = 0x7D12
-0x742D = 0x7D1E
-0x7430 = 0x7D3D
-0x7431 = 0x7D3E
-0x7432 = 0x7D40
-0x7433 = 0x7D47
-0x7436 = 0x42D6
-0x7437 = 0x7D59
-0x7438 = 0x7D5A
-0x7439 = 0x7D6A
-0x743A = 0x7D70
-0x743B = 0x42DD
-0x743C = 0x7D7F
-0x743E = 0x7D86
-0x743F = 0x7D88
-0x7440 = 0x7D8C
-0x7441 = 0x7D97
-0x7443 = 0x7D9D
-0x7444 = 0x7DA7
-0x7445 = 0x7DAA
-0x7446 = 0x7DB6
-0x7447 = 0x7DB7
-0x7448 = 0x7DC0
-0x7449 = 0x7DD7
-0x744A = 0x7DD9
-0x744B = 0x7DE6
-0x744C = 0x7DF1
-0x744D = 0x7DF9
-0x744E = 0x4302
-0x7450 = 0xFA58
-0x7451 = 0x7E10
-0x7452 = 0x7E17
-0x7453 = 0x7E1D
-0x7454 = 0x7E20
-0x7455 = 0x7E27
-0x7456 = 0x7E2C
-0x7457 = 0x7E45
-0x7458 = 0x7E73
-0x7459 = 0x7E75
-0x745A = 0x7E7E
-0x745B = 0x7E86
-0x745C = 0x7E87
-0x745D = 0x432B
-0x745E = 0x7E91
-0x745F = 0x7E98
-0x7460 = 0x7E9A
-0x7461 = 0x4343
-0x7462 = 0x7F3C
-0x7463 = 0x7F3B
-0x7464 = 0x7F3E
-0x7465 = 0x7F43
-0x7466 = 0x7F44
-0x7467 = 0x7F4F
-0x7468 = 0x34C1
-0x746A = 0x7F52
-0x746C = 0x7F61
-0x746D = 0x7F63
-0x746E = 0x7F64
-0x746F = 0x7F6D
-0x7470 = 0x7F7D
-0x7471 = 0x7F7E
-0x7473 = 0x7F90
-0x7474 = 0x517B
-0x7476 = 0x7F96
-0x7477 = 0x7F9C
-0x7478 = 0x7FAD
-0x747A = 0x7FC3
-0x747B = 0x7FCF
-0x747C = 0x7FE3
-0x747D = 0x7FE5
-0x747E = 0x7FEF
-0x7521 = 0x7FF2
-0x7522 = 0x8002
-0x7523 = 0x800A
-0x7524 = 0x8008
-0x7525 = 0x800E
-0x7526 = 0x8011
-0x7527 = 0x8016
-0x7528 = 0x8024
-0x7529 = 0x802C
-0x752A = 0x8030
-0x752B = 0x8043
-0x752C = 0x8066
-0x752D = 0x8071
-0x752E = 0x8075
-0x752F = 0x807B
-0x7530 = 0x8099
-0x7531 = 0x809C
-0x7532 = 0x80A4
-0x7533 = 0x80A7
-0x7534 = 0x80B8
-0x7536 = 0x80C5
-0x7537 = 0x80D5
-0x7538 = 0x80D8
-0x7539 = 0x80E6
-0x753B = 0x810D
-0x753C = 0x80F5
-0x753D = 0x80FB
-0x753E = 0x43EE
-0x753F = 0x8135
-0x7540 = 0x8116
-0x7541 = 0x811E
-0x7542 = 0x43F0
-0x7543 = 0x8124
-0x7544 = 0x8127
-0x7545 = 0x812C
-0x7547 = 0x813D
-0x7548 = 0x4408
-0x7549 = 0x8169
-0x754A = 0x4417
-0x754B = 0x8181
-0x754C = 0x441C
-0x754D = 0x8184
-0x754E = 0x8185
-0x754F = 0x4422
-0x7550 = 0x8198
-0x7551 = 0x81B2
-0x7552 = 0x81C1
-0x7553 = 0x81C3
-0x7554 = 0x81D6
-0x7555 = 0x81DB
-0x7557 = 0x81E4
-0x7559 = 0x81EC
-0x755B = 0x81FD
-0x755C = 0x81FF
-0x755E = 0x8204
-0x7560 = 0x8219
-0x7561 = 0x8221
-0x7562 = 0x8222
-0x7564 = 0x8232
-0x7565 = 0x8234
-0x7566 = 0x823C
-0x7567 = 0x8246
-0x7568 = 0x8249
-0x7569 = 0x8245
-0x756B = 0x824B
-0x756C = 0x4476
-0x756D = 0x824F
-0x756E = 0x447A
-0x756F = 0x8257
-0x7571 = 0x825C
-0x7572 = 0x8263
-0x7574 = 0xFA5D
-0x7575 = 0xFA5E
-0x7576 = 0x8279
-0x7577 = 0x4491
-0x7578 = 0x827D
-0x7579 = 0x827F
-0x757A = 0x8283
-0x757B = 0x828A
-0x757C = 0x8293
-0x757D = 0x82A7
-0x757E = 0x82A8
-0x7621 = 0x82B2
-0x7622 = 0x82B4
-0x7623 = 0x82BA
-0x7624 = 0x82BC
-0x7625 = 0x82E2
-0x7626 = 0x82E8
-0x7627 = 0x82F7
-0x7628 = 0x8307
-0x7629 = 0x8308
-0x762A = 0x830C
-0x762B = 0x8354
-0x762C = 0x831B
-0x762D = 0x831D
-0x762E = 0x8330
-0x762F = 0x833C
-0x7630 = 0x8344
-0x7631 = 0x8357
-0x7632 = 0x44BE
-0x7633 = 0x837F
-0x7634 = 0x44D4
-0x7635 = 0x44B3
-0x7636 = 0x838D
-0x7637 = 0x8394
-0x7638 = 0x8395
-0x7639 = 0x839B
-0x763A = 0x839D
-0x763B = 0x83C9
-0x763C = 0x83D0
-0x763D = 0x83D4
-0x763E = 0x83DD
-0x763F = 0x83E5
-0x7640 = 0x83F9
-0x7641 = 0x840F
-0x7642 = 0x8411
-0x7643 = 0x8415
-0x7645 = 0x8417
-0x7646 = 0x8439
-0x7647 = 0x844A
-0x7648 = 0x844F
-0x7649 = 0x8451
-0x764A = 0x8452
-0x764B = 0x8459
-0x764C = 0x845A
-0x764D = 0x845C
-0x764F = 0x8465
-0x7650 = 0x8476
-0x7651 = 0x8478
-0x7652 = 0x847C
-0x7653 = 0x8481
-0x7654 = 0x450D
-0x7655 = 0x84DC
-0x7656 = 0x8497
-0x7657 = 0x84A6
-0x7658 = 0x84BE
-0x7659 = 0x4508
-0x765A = 0x84CE
-0x765B = 0x84CF
-0x765C = 0x84D3
-0x765E = 0x84E7
-0x765F = 0x84EA
-0x7660 = 0x84EF
-0x7661 = 0x84F0
-0x7662 = 0x84F1
-0x7663 = 0x84FA
-0x7664 = 0x84FD
-0x7665 = 0x850C
-0x7666 = 0x851B
-0x7667 = 0x8524
-0x7668 = 0x8525
-0x7669 = 0x852B
-0x766A = 0x8534
-0x766B = 0x854F
-0x766C = 0x856F
-0x766D = 0x4525
-0x766E = 0x4543
-0x766F = 0x853E
-0x7670 = 0x8551
-0x7671 = 0x8553
-0x7672 = 0x855E
-0x7673 = 0x8561
-0x7674 = 0x8562
-0x7676 = 0x857B
-0x7677 = 0x857D
-0x7678 = 0x857F
-0x7679 = 0x8581
-0x767A = 0x8586
-0x767B = 0x8593
-0x767C = 0x859D
-0x767D = 0x859F
-0x7723 = 0x85B7
-0x7724 = 0x85BC
-0x7725 = 0x85C7
-0x7726 = 0x85CA
-0x7727 = 0x85D8
-0x7728 = 0x85D9
-0x7729 = 0x85DF
-0x772A = 0x85E1
-0x772B = 0x85E6
-0x772C = 0x85F6
-0x772D = 0x8600
-0x772E = 0x8611
-0x772F = 0x861E
-0x7730 = 0x8621
-0x7731 = 0x8624
-0x7732 = 0x8627
-0x7734 = 0x8639
-0x7735 = 0x863C
-0x7737 = 0x8640
-0x7738 = 0xFA20
-0x7739 = 0x8653
-0x773A = 0x8656
-0x773B = 0x866F
-0x773C = 0x8677
-0x773D = 0x867A
-0x773E = 0x8687
-0x773F = 0x8689
-0x7740 = 0x868D
-0x7741 = 0x8691
-0x7742 = 0x869C
-0x7743 = 0x869D
-0x7744 = 0x86A8
-0x7745 = 0xFA21
-0x7746 = 0x86B1
-0x7747 = 0x86B3
-0x7748 = 0x86C1
-0x7749 = 0x86C3
-0x774A = 0x86D1
-0x774B = 0x86D5
-0x774C = 0x86D7
-0x774D = 0x86E3
-0x774E = 0x86E6
-0x774F = 0x45B8
-0x7750 = 0x8705
-0x7751 = 0x8707
-0x7752 = 0x870E
-0x7753 = 0x8710
-0x7754 = 0x8713
-0x7755 = 0x8719
-0x7756 = 0x871F
-0x7757 = 0x8721
-0x7758 = 0x8723
-0x7759 = 0x8731
-0x775A = 0x873A
-0x775B = 0x873E
-0x775C = 0x8740
-0x775D = 0x8743
-0x775E = 0x8751
-0x775F = 0x8758
-0x7760 = 0x8764
-0x7761 = 0x8765
-0x7762 = 0x8772
-0x7763 = 0x877C
-0x7766 = 0x87A7
-0x7767 = 0x8789
-0x7768 = 0x878B
-0x7769 = 0x8793
-0x776A = 0x87A0
-0x776C = 0x45E5
-0x776D = 0x87BE
-0x776F = 0x87C1
-0x7770 = 0x87CE
-0x7771 = 0x87F5
-0x7772 = 0x87DF
-0x7774 = 0x87E3
-0x7775 = 0x87E5
-0x7776 = 0x87E6
-0x7777 = 0x87EA
-0x7778 = 0x87EB
-0x7779 = 0x87ED
-0x777A = 0x8801
-0x777B = 0x8803
-0x777C = 0x880B
-0x777D = 0x8813
-0x777E = 0x8828
-0x7821 = 0x882E
-0x7822 = 0x8832
-0x7823 = 0x883C
-0x7824 = 0x460F
-0x7825 = 0x884A
-0x7826 = 0x8858
-0x7827 = 0x885F
-0x7828 = 0x8864
-0x782B = 0x8869
-0x782D = 0x886F
-0x782E = 0x88A0
-0x782F = 0x88BC
-0x7830 = 0x88BD
-0x7831 = 0x88BE
-0x7832 = 0x88C0
-0x7833 = 0x88D2
-0x7835 = 0x88D1
-0x7836 = 0x88D3
-0x7837 = 0x88DB
-0x7838 = 0x88F0
-0x7839 = 0x88F1
-0x783A = 0x4641
-0x783B = 0x8901
-0x783D = 0x8937
-0x783F = 0x8942
-0x7840 = 0x8945
-0x7841 = 0x8949
-0x7843 = 0x4665
-0x7844 = 0x8962
-0x7845 = 0x8980
-0x7846 = 0x8989
-0x7847 = 0x8990
-0x7848 = 0x899F
-0x7849 = 0x89B0
-0x784A = 0x89B7
-0x784B = 0x89D6
-0x784C = 0x89D8
-0x784D = 0x89EB
-0x784E = 0x46A1
-0x784F = 0x89F1
-0x7850 = 0x89F3
-0x7851 = 0x89FD
-0x7852 = 0x89FF
-0x7853 = 0x46AF
-0x7854 = 0x8A11
-0x7855 = 0x8A14
-0x7857 = 0x8A21
-0x7858 = 0x8A35
-0x7859 = 0x8A3E
-0x785A = 0x8A45
-0x785B = 0x8A4D
-0x785C = 0x8A58
-0x785D = 0x8AAE
-0x785E = 0x8A90
-0x785F = 0x8AB7
-0x7860 = 0x8ABE
-0x7861 = 0x8AD7
-0x7862 = 0x8AFC
-0x7864 = 0x8B0A
-0x7865 = 0x8B05
-0x7866 = 0x8B0D
-0x7867 = 0x8B1C
-0x7868 = 0x8B1F
-0x7869 = 0x8B2D
-0x786A = 0x8B43
-0x786B = 0x470C
-0x786C = 0x8B51
-0x786D = 0x8B5E
-0x786E = 0x8B76
-0x786F = 0x8B7F
-0x7870 = 0x8B81
-0x7871 = 0x8B8B
-0x7872 = 0x8B94
-0x7873 = 0x8B95
-0x7874 = 0x8B9C
-0x7875 = 0x8B9E
-0x7876 = 0x8C39
-0x7878 = 0x8C3D
-0x787B = 0x8C45
-0x787C = 0x8C47
-0x787D = 0x8C4F
-0x787E = 0x8C54
-0x7921 = 0x8C57
-0x7922 = 0x8C69
-0x7923 = 0x8C6D
-0x7924 = 0x8C73
-0x7926 = 0x8C93
-0x7927 = 0x8C92
-0x7928 = 0x8C99
-0x7929 = 0x4764
-0x792A = 0x8C9B
-0x792B = 0x8CA4
-0x792C = 0x8CD6
-0x792D = 0x8CD5
-0x792E = 0x8CD9
-0x7930 = 0x8CF0
-0x7931 = 0x8CF1
-0x7933 = 0x8D09
-0x7934 = 0x8D0E
-0x7935 = 0x8D6C
-0x7936 = 0x8D84
-0x7937 = 0x8D95
-0x7938 = 0x8DA6
-0x793A = 0x8DC6
-0x793B = 0x8DC8
-0x793C = 0x8DD9
-0x793D = 0x8DEC
-0x793E = 0x8E0C
-0x793F = 0x47FD
-0x7940 = 0x8DFD
-0x7941 = 0x8E06
-0x7943 = 0x8E14
-0x7944 = 0x8E16
-0x7945 = 0x8E21
-0x7946 = 0x8E22
-0x7947 = 0x8E27
-0x7949 = 0x4816
-0x794A = 0x8E36
-0x794B = 0x8E39
-0x794C = 0x8E4B
-0x794D = 0x8E54
-0x794E = 0x8E62
-0x794F = 0x8E6C
-0x7950 = 0x8E6D
-0x7951 = 0x8E6F
-0x7952 = 0x8E98
-0x7953 = 0x8E9E
-0x7954 = 0x8EAE
-0x7955 = 0x8EB3
-0x7956 = 0x8EB5
-0x7957 = 0x8EB6
-0x7958 = 0x8EBB
-0x795A = 0x8ED1
-0x795B = 0x8ED4
-0x795C = 0x484E
-0x795D = 0x8EF9
-0x795F = 0x8F00
-0x7960 = 0x8F08
-0x7961 = 0x8F17
-0x7962 = 0x8F2B
-0x7963 = 0x8F40
-0x7964 = 0x8F4A
-0x7965 = 0x8F58
-0x7967 = 0x8FA4
-0x7968 = 0x8FB4
-0x7969 = 0xFA66
-0x796A = 0x8FB6
-0x796C = 0x8FC1
-0x796D = 0x8FC6
-0x796E = 0xFA24
-0x796F = 0x8FCA
-0x7970 = 0x8FCD
-0x7971 = 0x8FD3
-0x7972 = 0x8FD5
-0x7973 = 0x8FE0
-0x7974 = 0x8FF1
-0x7975 = 0x8FF5
-0x7976 = 0x8FFB
-0x7977 = 0x9002
-0x7978 = 0x900C
-0x7979 = 0x9037
-0x797B = 0x9043
-0x797C = 0x9044
-0x797D = 0x905D
-0x7A22 = 0x9085
-0x7A23 = 0x908C
-0x7A24 = 0x9090
-0x7A25 = 0x961D
-0x7A26 = 0x90A1
-0x7A27 = 0x48B5
-0x7A28 = 0x90B0
-0x7A29 = 0x90B6
-0x7A2A = 0x90C3
-0x7A2B = 0x90C8
-0x7A2D = 0x90DC
-0x7A2E = 0x90DF
-0x7A30 = 0x90F6
-0x7A31 = 0x90F2
-0x7A32 = 0x9100
-0x7A33 = 0x90EB
-0x7A34 = 0x90FE
-0x7A35 = 0x90FF
-0x7A36 = 0x9104
-0x7A37 = 0x9106
-0x7A38 = 0x9118
-0x7A39 = 0x911C
-0x7A3A = 0x911E
-0x7A3B = 0x9137
-0x7A3C = 0x9139
-0x7A3D = 0x913A
-0x7A3E = 0x9146
-0x7A3F = 0x9147
-0x7A40 = 0x9157
-0x7A41 = 0x9159
-0x7A42 = 0x9161
-0x7A43 = 0x9164
-0x7A44 = 0x9174
-0x7A45 = 0x9179
-0x7A46 = 0x9185
-0x7A47 = 0x918E
-0x7A48 = 0x91A8
-0x7A49 = 0x91AE
-0x7A4A = 0x91B3
-0x7A4B = 0x91B6
-0x7A4C = 0x91C3
-0x7A4D = 0x91C4
-0x7A4E = 0x91DA
-0x7A51 = 0x91EC
-0x7A52 = 0x91EE
-0x7A53 = 0x9201
-0x7A54 = 0x920A
-0x7A55 = 0x9216
-0x7A56 = 0x9217
-0x7A58 = 0x9233
-0x7A59 = 0x9242
-0x7A5A = 0x9247
-0x7A5B = 0x924A
-0x7A5C = 0x924E
-0x7A5D = 0x9251
-0x7A5E = 0x9256
-0x7A5F = 0x9259
-0x7A60 = 0x9260
-0x7A61 = 0x9261
-0x7A62 = 0x9265
-0x7A63 = 0x9267
-0x7A64 = 0x9268
-0x7A67 = 0x927C
-0x7A68 = 0x927D
-0x7A69 = 0x927F
-0x7A6A = 0x9289
-0x7A6B = 0x928D
-0x7A6C = 0x9297
-0x7A6D = 0x9299
-0x7A6E = 0x929F
-0x7A6F = 0x92A7
-0x7A70 = 0x92AB
-0x7A73 = 0x92B2
-0x7A74 = 0x92BF
-0x7A75 = 0x92C0
-0x7A76 = 0x92C6
-0x7A77 = 0x92CE
-0x7A78 = 0x92D0
-0x7A79 = 0x92D7
-0x7A7A = 0x92D9
-0x7A7B = 0x92E5
-0x7A7C = 0x92E7
-0x7A7D = 0x9311
-0x7B22 = 0x92F7
-0x7B23 = 0x92F9
-0x7B24 = 0x92FB
-0x7B25 = 0x9302
-0x7B26 = 0x930D
-0x7B27 = 0x9315
-0x7B28 = 0x931D
-0x7B29 = 0x931E
-0x7B2A = 0x9327
-0x7B2B = 0x9329
-0x7B2E = 0x9347
-0x7B2F = 0x9351
-0x7B30 = 0x9357
-0x7B31 = 0x935A
-0x7B32 = 0x936B
-0x7B33 = 0x9371
-0x7B34 = 0x9373
-0x7B35 = 0x93A1
-0x7B38 = 0x9388
-0x7B39 = 0x938B
-0x7B3A = 0x938F
-0x7B3B = 0x939E
-0x7B3C = 0x93F5
-0x7B3F = 0x93F1
-0x7B40 = 0x93C1
-0x7B41 = 0x93C7
-0x7B42 = 0x93DC
-0x7B43 = 0x93E2
-0x7B44 = 0x93E7
-0x7B45 = 0x9409
-0x7B46 = 0x940F
-0x7B47 = 0x9416
-0x7B48 = 0x9417
-0x7B49 = 0x93FB
-0x7B4A = 0x9432
-0x7B4B = 0x9434
-0x7B4C = 0x943B
-0x7B4D = 0x9445
-0x7B50 = 0x946D
-0x7B51 = 0x946F
-0x7B52 = 0x9578
-0x7B53 = 0x9579
-0x7B54 = 0x9586
-0x7B55 = 0x958C
-0x7B56 = 0x958D
-0x7B58 = 0x95AB
-0x7B59 = 0x95B4
-0x7B5B = 0x95C8
-0x7B5E = 0x962C
-0x7B5F = 0x9633
-0x7B60 = 0x9634
-0x7B62 = 0x963C
-0x7B63 = 0x9641
-0x7B64 = 0x9661
-0x7B66 = 0x9682
-0x7B68 = 0x969A
-0x7B6A = 0x49E7
-0x7B6B = 0x96A9
-0x7B6C = 0x96AF
-0x7B6D = 0x96B3
-0x7B6E = 0x96BA
-0x7B6F = 0x96BD
-0x7B70 = 0x49FA
-0x7B72 = 0x96D8
-0x7B73 = 0x96DA
-0x7B74 = 0x96DD
-0x7B75 = 0x4A04
-0x7B76 = 0x9714
-0x7B77 = 0x9723
-0x7B78 = 0x4A29
-0x7B79 = 0x9736
-0x7B7A = 0x9741
-0x7B7B = 0x9747
-0x7B7C = 0x9755
-0x7B7D = 0x9757
-0x7B7E = 0x975B
-0x7C21 = 0x976A
-0x7C24 = 0x9796
-0x7C25 = 0x979A
-0x7C26 = 0x979E
-0x7C27 = 0x97A2
-0x7C28 = 0x97B1
-0x7C29 = 0x97B2
-0x7C2A = 0x97BE
-0x7C2B = 0x97CC
-0x7C2C = 0x97D1
-0x7C2D = 0x97D4
-0x7C2E = 0x97D8
-0x7C2F = 0x97D9
-0x7C30 = 0x97E1
-0x7C31 = 0x97F1
-0x7C32 = 0x9804
-0x7C33 = 0x980D
-0x7C34 = 0x980E
-0x7C35 = 0x9814
-0x7C36 = 0x9816
-0x7C37 = 0x4ABC
-0x7C39 = 0x9823
-0x7C3A = 0x9832
-0x7C3B = 0x9833
-0x7C3C = 0x9825
-0x7C3D = 0x9847
-0x7C3E = 0x9866
-0x7C3F = 0x98AB
-0x7C40 = 0x98AD
-0x7C41 = 0x98B0
-0x7C43 = 0x98B7
-0x7C44 = 0x98B8
-0x7C45 = 0x98BB
-0x7C46 = 0x98BC
-0x7C47 = 0x98BF
-0x7C48 = 0x98C2
-0x7C49 = 0x98C7
-0x7C4A = 0x98CB
-0x7C4B = 0x98E0
-0x7C4D = 0x98E1
-0x7C4E = 0x98E3
-0x7C4F = 0x98E5
-0x7C50 = 0x98EA
-0x7C51 = 0x98F0
-0x7C52 = 0x98F1
-0x7C53 = 0x98F3
-0x7C54 = 0x9908
-0x7C55 = 0x4B3B
-0x7C57 = 0x9916
-0x7C58 = 0x9917
-0x7C5A = 0x991A
-0x7C5B = 0x991B
-0x7C5C = 0x991C
-0x7C5E = 0x9931
-0x7C5F = 0x9932
-0x7C60 = 0x9933
-0x7C61 = 0x993A
-0x7C62 = 0x993B
-0x7C63 = 0x993C
-0x7C64 = 0x9940
-0x7C65 = 0x9941
-0x7C66 = 0x9946
-0x7C67 = 0x994D
-0x7C68 = 0x994E
-0x7C69 = 0x995C
-0x7C6A = 0x995F
-0x7C6B = 0x9960
-0x7C6C = 0x99A3
-0x7C6D = 0x99A6
-0x7C6E = 0x99B9
-0x7C6F = 0x99BD
-0x7C70 = 0x99BF
-0x7C71 = 0x99C3
-0x7C72 = 0x99C9
-0x7C73 = 0x99D4
-0x7C74 = 0x99D9
-0x7C75 = 0x99DE
-0x7C77 = 0x99F0
-0x7C78 = 0x99F9
-0x7C79 = 0x99FC
-0x7C7A = 0x9A0A
-0x7C7B = 0x9A11
-0x7C7C = 0x9A16
-0x7C7D = 0x9A1A
-0x7C7E = 0x9A20
-0x7D21 = 0x9A31
-0x7D22 = 0x9A36
-0x7D23 = 0x9A44
-0x7D24 = 0x9A4C
-0x7D25 = 0x9A58
-0x7D26 = 0x4BC2
-0x7D27 = 0x9AAF
-0x7D28 = 0x4BCA
-0x7D29 = 0x9AB7
-0x7D2A = 0x4BD2
-0x7D2B = 0x9AB9
-0x7D2D = 0x9AC6
-0x7D2E = 0x9AD0
-0x7D2F = 0x9AD2
-0x7D30 = 0x9AD5
-0x7D31 = 0x4BE8
-0x7D32 = 0x9ADC
-0x7D33 = 0x9AE0
-0x7D34 = 0x9AE5
-0x7D35 = 0x9AE9
-0x7D36 = 0x9B03
-0x7D37 = 0x9B0C
-0x7D38 = 0x9B10
-0x7D39 = 0x9B12
-0x7D3A = 0x9B16
-0x7D3B = 0x9B1C # 0x9B1D
-0x7D3C = 0x9B2B
-0x7D3D = 0x9B33
-0x7D3E = 0x9B3D
-0x7D3F = 0x4C20
-0x7D40 = 0x9B4B
-0x7D41 = 0x9B63
-0x7D42 = 0x9B65
-0x7D43 = 0x9B6B
-0x7D44 = 0x9B6C
-0x7D45 = 0x9B73
-0x7D46 = 0x9B76
-0x7D47 = 0x9B77
-0x7D48 = 0x9BA6
-0x7D49 = 0x9BAC
-0x7D4A = 0x9BB1
-0x7D4D = 0x9BB2
-0x7D4E = 0x9BB8
-0x7D4F = 0x9BBE
-0x7D50 = 0x9BC7
-0x7D51 = 0x9BF3
-0x7D52 = 0x9BD8
-0x7D53 = 0x9BDD
-0x7D54 = 0x9BE7
-0x7D55 = 0x9BEA
-0x7D56 = 0x9BEB
-0x7D57 = 0x9BEF
-0x7D58 = 0x9BEE
-0x7D5A = 0x9BFA
-0x7D5C = 0x9BF7
-0x7D5E = 0x9C16
-0x7D5F = 0x9C18
-0x7D60 = 0x9C19
-0x7D61 = 0x9C1A
-0x7D62 = 0x9C1D
-0x7D63 = 0x9C22
-0x7D64 = 0x9C27
-0x7D65 = 0x9C29
-0x7D66 = 0x9C2A
-0x7D68 = 0x9C31
-0x7D69 = 0x9C36
-0x7D6A = 0x9C37
-0x7D6B = 0x9C45
-0x7D6C = 0x9C5C
-0x7D6E = 0x9C49
-0x7D6F = 0x9C4A
-0x7D71 = 0x9C54
-0x7D72 = 0x9C58
-0x7D73 = 0x9C5B
-0x7D74 = 0x9C5D
-0x7D75 = 0x9C5F
-0x7D76 = 0x9C69
-0x7D77 = 0x9C6A
-0x7D78 = 0x9C6B
-0x7D79 = 0x9C6D
-0x7D7A = 0x9C6E
-0x7D7B = 0x9C70
-0x7D7C = 0x9C72
-0x7D7D = 0x9C75
-0x7D7E = 0x9C7A
-0x7E21 = 0x9CE6
-0x7E22 = 0x9CF2
-0x7E23 = 0x9D0B
-0x7E24 = 0x9D02
-0x7E26 = 0x9D11
-0x7E27 = 0x9D17
-0x7E28 = 0x9D18
-0x7E2A = 0x4CC4
-0x7E2C = 0x9D32
-0x7E2D = 0x4CD1
-0x7E2E = 0x9D42
-0x7E2F = 0x9D4A
-0x7E30 = 0x9D5F
-0x7E31 = 0x9D62
-0x7E33 = 0x9D69
-0x7E34 = 0x9D6B
-0x7E36 = 0x9D73
-0x7E37 = 0x9D76
-0x7E38 = 0x9D77
-0x7E39 = 0x9D7E
-0x7E3A = 0x9D84
-0x7E3B = 0x9D8D
-0x7E3C = 0x9D99
-0x7E3D = 0x9DA1
-0x7E3E = 0x9DBF
-0x7E3F = 0x9DB5
-0x7E40 = 0x9DB9
-0x7E41 = 0x9DBD
-0x7E42 = 0x9DC3
-0x7E43 = 0x9DC7
-0x7E44 = 0x9DC9
-0x7E45 = 0x9DD6
-0x7E46 = 0x9DDA
-0x7E47 = 0x9DDF
-0x7E48 = 0x9DE0
-0x7E49 = 0x9DE3
-0x7E4A = 0x9DF4
-0x7E4B = 0x4D07
-0x7E4C = 0x9E0A
-0x7E4D = 0x9E02
-0x7E4E = 0x9E0D
-0x7E4F = 0x9E19
-0x7E50 = 0x9E1C
-0x7E51 = 0x9E1D
-0x7E52 = 0x9E7B
-0x7E54 = 0x9E80
-0x7E55 = 0x9E85
-0x7E56 = 0x9E9B
-0x7E57 = 0x9EA8
-0x7E59 = 0x9EBD
-0x7E5B = 0x9EDF
-0x7E5C = 0x9EE7
-0x7E5D = 0x9EEE
-0x7E5E = 0x9EFF
-0x7E5F = 0x9F02
-0x7E60 = 0x4D77
-0x7E61 = 0x9F03
-0x7E62 = 0x9F17
-0x7E63 = 0x9F19
-0x7E64 = 0x9F2F
-0x7E65 = 0x9F37
-0x7E66 = 0x9F3A
-0x7E67 = 0x9F3D
-0x7E68 = 0x9F41
-0x7E69 = 0x9F45
-0x7E6A = 0x9F46
-0x7E6B = 0x9F53
-0x7E6C = 0x9F55
-0x7E6D = 0x9F58
-0x7E6F = 0x9F5D
-0x7E71 = 0x9F69
-0x7E73 = 0x9F6D
-0x7E74 = 0x9F70
-0x7E75 = 0x9F75
-END_MAP
diff --git a/enc/trans/JIS/JISX0213-2%UCS@SIP.src b/enc/trans/JIS/JISX0213-2%UCS@SIP.src
deleted file mode 100644
index 15f8d317e6..0000000000
--- a/enc/trans/JIS/JISX0213-2%UCS@SIP.src
+++ /dev/null
@@ -1,311 +0,0 @@
-# $NetBSD: JISX0213-2%UCS@SIP.src,v 1.1 2007/03/05 16:58:33 tnozaki Exp $
-
-TYPE ROWCOL
-NAME "JISX0213-2/UCS:SIP"
-SRC_ZONE 0x21-0x7E / 0x21-0x7E / 8
-OOB_MODE INVALID
-DST_INVALID 0xFFFE
-DST_UNIT_BITS 16
-
-BEGIN_MAP
-## JIS X 0213:2004 vs Unicode mapping table
-##
-## Date: 22 May 2006
-## License:
-## Copyright (C) 2001 earthian@tama.or.jp, All Rights Reserved.
-## Copyright (C) 2001 I'O, All Rights Reserved.
-## Copyright (C) 2006 Project X0213, All Rights Reserved.
-## You can use, modify, distribute this table freely.
-## Note:
-## 3-XXXX JIS X 0213:2004 plane 1 (GL encoding)
-## 4-XXXX JIS X 0213:2000 plane 2 (GL encoding)
-## [1983] JIS codepoint defined by JIS X 0208-1983
-## [1990] JIS codepoint defined by JIS X 0208-1990
-## [2000] JIS codepoint defined by JIS X 0213:2000
-## [2004] JIS codepoint defined by JIS X 0213:2004
-## [Unicode3.1] UCS codepoint defined by Unicode 3.1
-## [Unicode3.2] UCS codepoint defined by Unicode 3.2
-## Fullwidth UCS fullwidth form (U+Fxxx)
-## Windows Windows (CP932) mapping
-## Some 0213 character can't represent by one UCS character.
-## In this table, such characters are described as 'U+xxxx+xxxx'.
-##
-## JIS Unicode Name Note
-0x2121 = 0x0089
-0x212B = 0x00A2
-0x212E = 0x00A4
-0x2136 = 0x01A2
-0x2146 = 0x0213
-0x2170 = 0x032B
-0x2177 = 0x0381
-0x2179 = 0x0371
-0x2322 = 0x03F9
-0x2325 = 0x044A
-0x2327 = 0x0509
-0x2331 = 0x05D6
-0x2332 = 0x0628
-0x2338 = 0x074F
-0x233F = 0x0807
-0x2341 = 0x083A
-0x234A = 0x08B9
-0x2352 = 0x097C
-0x2353 = 0x099D
-0x2359 = 0x0AD3
-0x235C = 0x0B1D
-0x2377 = 0x0D45
-0x242A = 0x0DE1
-0x2431 = 0x0E95
-0x2432 = 0x0E6D
-0x243A = 0x0E64
-0x243D = 0x0F5F
-0x2459 = 0x1201
-0x245C = 0x1255
-0x245E = 0x127B
-0x2463 = 0x1274
-0x246A = 0x12E4
-0x246B = 0x12D7
-0x2472 = 0x12FD
-0x2474 = 0x1336
-0x2475 = 0x1344
-0x2525 = 0x13C4
-0x2532 = 0x146D
-0x253E = 0x15D7
-0x2544 = 0x6C29
-0x2547 = 0x1647
-0x2555 = 0x1706
-0x2556 = 0x1742
-0x257E = 0x19C3
-0x2830 = 0x1C56
-0x2837 = 0x1D2D
-0x2838 = 0x1D45
-0x283A = 0x1D78
-0x283B = 0x1D62
-0x283F = 0x1DA1
-0x2840 = 0x1D9C
-0x2845 = 0x1D92
-0x2848 = 0x1DB7
-0x284A = 0x1DE0
-0x284B = 0x1E33
-0x285B = 0x1F1E
-0x2866 = 0x1F76
-0x286C = 0x1FFA
-0x2C22 = 0x217B
-0x2C2B = 0x231E
-0x2C30 = 0x23AD
-0x2C50 = 0x26F3
-0x2C65 = 0x285B
-0x2C6D = 0x28AB
-0x2C72 = 0x298F
-0x2D24 = 0x2AB8
-0x2D29 = 0x2B4F
-0x2D2A = 0x2B50
-0x2D32 = 0x2B46
-0x2D34 = 0x2C1D
-0x2D35 = 0x2BA6
-0x2D39 = 0x2C24
-0x2D56 = 0x2DE1
-0x2D7D = 0x31C3
-0x2E23 = 0x31F5
-0x2E24 = 0x31B6
-0x2E3A = 0x3372
-0x2E3C = 0x33D3
-0x2E3D = 0x33D2
-0x2E42 = 0x33D0
-0x2E43 = 0x33E4
-0x2E44 = 0x33D5
-0x2E47 = 0x33DA
-0x2E49 = 0x33DF
-0x2E55 = 0x344A
-0x2E56 = 0x3451
-0x2E57 = 0x344B
-0x2E5B = 0x3465
-0x2E77 = 0x34E4
-0x2E78 = 0x355A
-0x2F2A = 0x3594
-0x2F3F = 0x3639
-0x2F40 = 0x3647
-0x2F42 = 0x3638
-0x2F43 = 0x363A
-0x2F4E = 0x371C
-0x2F59 = 0x370C
-0x2F61 = 0x3764
-0x2F69 = 0x37FF
-0x2F6A = 0x37E7
-0x2F70 = 0x3824
-0x2F75 = 0x383D
-0x6E23 = 0x3A98
-0x6E34 = 0x3C7F
-0x6E49 = 0x3D00
-0x6E5C = 0x3D40
-0x6E5E = 0x3DFA
-0x6E5F = 0x3DF9
-0x6E60 = 0x3DD3
-0x6F32 = 0x3F7E
-0x6F47 = 0x4096
-0x6F4D = 0x4103
-0x6F61 = 0x41C6
-0x6F64 = 0x41FE
-0x7022 = 0x43BC
-0x7033 = 0x4629
-0x7039 = 0x46A5
-0x7053 = 0x4896
-0x707B = 0x4A4D
-0x712E = 0x4B56
-0x7130 = 0x4B6F
-0x7135 = 0x4C16
-0x7144 = 0x4D14
-0x715D = 0x4E0E
-0x7161 = 0x4E37
-0x7166 = 0x4E6A
-0x7169 = 0x4E8B
-0x7175 = 0x504A
-0x7177 = 0x5055
-0x717A = 0x5122
-0x7221 = 0x51A9
-0x7223 = 0x51E5
-0x7224 = 0x51CD
-0x7228 = 0x521E
-0x722C = 0x524C
-0x723D = 0x542E
-0x7248 = 0x54D9
-0x725B = 0x55A7
-0x7275 = 0x57A9
-0x7276 = 0x57B4
-0x7332 = 0x59D4
-0x733D = 0x5AE4
-0x733E = 0x5AE3
-0x7340 = 0x5AF1
-0x7352 = 0x5BB2
-0x735D = 0x5C4B
-0x735E = 0x5C64
-0x7373 = 0x5E2E
-0x7374 = 0x5E56
-0x7375 = 0x5E65
-0x7377 = 0x5E62
-0x737B = 0x5ED8
-0x737D = 0x5EC2
-0x7422 = 0x5EE8
-0x7424 = 0x5F23
-0x7427 = 0x5F5C
-0x742E = 0x5FE0
-0x742F = 0x5FD4
-0x7434 = 0x600C
-0x7435 = 0x5FFB
-0x743D = 0x6017
-0x7442 = 0x6060
-0x744F = 0x60ED
-0x7469 = 0x6270
-0x746B = 0x6286
-0x7472 = 0x634C
-0x7475 = 0x3D0E
-0x7479 = 0x6402
-0x7535 = 0x667E
-0x753A = 0x66B0
-0x7546 = 0x671D
-0x7556 = 0x68DD
-0x7558 = 0x68EA
-0x755A = 0x6951
-0x755D = 0x696F
-0x755F = 0x69DD
-0x7563 = 0x6A1E
-0x756A = 0x6A58
-0x7570 = 0x6A8C
-0x7573 = 0x6AB7
-0x7644 = 0x6C73
-0x764E = 0x6CDD
-0x765D = 0x6E65
-0x7675 = 0x6F94
-0x767E = 0x6FF8
-0x7721 = 0x6FF6
-0x7722 = 0x6FF7
-0x7733 = 0x710D
-0x7736 = 0x7139
-0x7764 = 0x73DB
-0x7765 = 0x73DA
-0x776B = 0x73FE
-0x776E = 0x7410
-0x7773 = 0x7449
-0x7829 = 0x7615
-0x782A = 0x7614
-0x782C = 0x7631
-0x7834 = 0x7693
-0x783C = 0x770E
-0x783E = 0x7723
-0x7842 = 0x7752
-0x7856 = 0x7985
-0x7863 = 0x7A84
-0x7877 = 0x7BB3
-0x7879 = 0x7BBE
-0x787A = 0x7BC7
-0x7925 = 0x7CB8
-0x792F = 0x7DA0
-0x7932 = 0x7E10
-0x7939 = 0x7FB7
-0x7942 = 0x808A
-0x7948 = 0x80BB
-0x7959 = 0x8282
-0x795E = 0x82F3
-0x7966 = 0x840C
-0x796B = 0x8455
-0x797A = 0x856B
-0x797E = 0x85C8
-0x7A21 = 0x85C9
-0x7A2C = 0x86D7
-0x7A2F = 0x86FA
-0x7A4F = 0x8949
-0x7A50 = 0x8946
-0x7A57 = 0x896B
-0x7A65 = 0x8987
-0x7A66 = 0x8988
-0x7A71 = 0x89BA
-0x7A72 = 0x89BB
-0x7A7E = 0x8A1E
-0x7B21 = 0x8A29
-0x7B2C = 0x8A71
-0x7B2D = 0x8A43
-0x7B36 = 0x8A99
-0x7B37 = 0x8ACD
-0x7B3D = 0x8AE4
-0x7B3E = 0x8ADD
-0x7B4E = 0x8BC1
-0x7B4F = 0x8BEF
-0x7B57 = 0x8D10
-0x7B5A = 0x8D71
-0x7B5C = 0x8DFB
-0x7B5D = 0x8E1F
-0x7B61 = 0x8E36
-0x7B65 = 0x8E89
-0x7B67 = 0x8EEB
-0x7B69 = 0x8F32
-0x7B71 = 0x8FF8
-0x7C22 = 0x92A0
-0x7C23 = 0x92B1
-0x7C38 = 0x9490
-0x7C42 = 0x95CF
-0x7C4C = 0x967F
-0x7C56 = 0x96F0
-0x7C59 = 0x9719
-0x7C5D = 0x9750
-0x7C76 = 0x98C6
-0x7D2C = 0x9A72
-0x7D4B = 0x9DDB
-0x7D4C = 0x9E3D
-0x7D59 = 0x9E15
-0x7D5B = 0x9E8A
-0x7D5D = 0x9E49
-0x7D67 = 0x9EC4
-0x7D6D = 0x9EE9
-0x7D70 = 0x9EDB
-0x7E25 = 0x9FCE
-0x7E29 = 0xA02F
-0x7E2B = 0xA01A
-0x7E32 = 0xA0F9
-0x7E35 = 0xA082
-0x7E53 = 0x2218
-0x7E58 = 0xA38C
-0x7E5A = 0xA437
-0x7E6E = 0xA5F1
-0x7E70 = 0xA602
-0x7E72 = 0xA61A
-0x7E76 = 0xA6B2
-END_MAP
diff --git a/enc/trans/JIS/UCS@BMP%JISX0213-1.src b/enc/trans/JIS/UCS@BMP%JISX0213-1.src
deleted file mode 100644
index 953e361738..0000000000
--- a/enc/trans/JIS/UCS@BMP%JISX0213-1.src
+++ /dev/null
@@ -1,1922 +0,0 @@
-# $NetBSD: UCS@BMP%JISX0213-1.src,v 1.1 2007/03/05 16:58:33 tnozaki Exp $
-
-TYPE ROWCOL
-NAME "UCS:BMP/JISX0213-1"
-SRC_ZONE 0x007E - 0xFF60
-OOB_MODE INVALID
-DST_INVALID 0xFFFF
-DST_UNIT_BITS 16
-
-BEGIN_MAP
-## Shift_JIS-2004 (JIS X 0213:2004) vs Unicode mapping table
-##
-## Date: 12 Feb 2005 10:15:00 GMT
-## License:
-## Copyright (C) 2001 earthian@tama.or.jp, All Rights Reserved.
-## Copyright (C) 2001 I'O, All Rights Reserved.
-## You can use, modify, distribute this table freely.
-## Note:
-## [1983] JIS codepoint defined by JIS X 0208-1983
-## [1990] JIS codepoint defined by JIS X 0208-1990
-## [2000] JIS codepoint defined by JIS X 0213:2000
-## [2004] JIS codepoint defined by JIS X 0213:2004
-## [Unicode3.1] UCS codepoint defined by Unicode 3.1
-## [Unicode3.2] UCS codepoint defined by Unicode 3.2
-## Fullwidth UCS fullwidth form (U+Fxxx)
-## Windows Windows (CP932) mapping
-## Some 0213 character can't represent by one UCS character.
-## In this table, such characters are described as 'U+xxxx+xxxx'.
-##
-0x00A0 = 0x2922
-0x00A1 = 0x2923
-0x00A4 = 0x2924
-0x00A6 = 0x2925
-0x00A9 = 0x2926
-0x00AA = 0x2927
-0x00AB = 0x2928
-0x00AD = 0x2929
-0x00AE = 0x292A
-0x00AF = 0x292B
-0x00B2 = 0x292C
-0x00B3 = 0x292D
-0x00B7 = 0x292E
-0x00B8 = 0x292F
-0x00B9 = 0x2930
-0x00BA = 0x2931
-0x00BB = 0x2932
-0x00BC = 0x2933
-0x00BD = 0x2934
-0x00BE = 0x2935
-0x00BF = 0x2936
-0x00C0 = 0x2937
-0x00C1 = 0x2938
-0x00C2 = 0x2939
-0x00C3 = 0x293A
-0x00C4 = 0x293B
-0x00C5 = 0x293C
-0x00C6 = 0x293D
-0x00C7 = 0x293E
-0x00C8 = 0x293F
-0x00C9 = 0x2940
-0x00CA = 0x2941
-0x00CB = 0x2942
-0x00CC = 0x2943
-0x00CD = 0x2944
-0x00CE = 0x2945
-0x00CF = 0x2946
-0x00D0 = 0x2947
-0x00D1 = 0x2948
-0x00D2 = 0x2949
-0x00D3 = 0x294A
-0x00D4 = 0x294B
-0x00D5 = 0x294C
-0x00D6 = 0x294D
-0x00D8 = 0x294E
-0x00D9 = 0x294F
-0x00DA = 0x2950
-0x00DB = 0x2951
-0x00DC = 0x2952
-0x00DD = 0x2953
-0x00DE = 0x2954
-0x00DF = 0x2955
-0x00E0 = 0x2956
-0x00E1 = 0x2957
-0x00E2 = 0x2958
-0x00E3 = 0x2959
-0x00E4 = 0x295A
-0x00E5 = 0x295B
-#0x00E6 + 0x0300 = 0x2B44
-0x00E6 = 0x295C
-0x00E7 = 0x295D
-0x00E8 = 0x295E
-0x00E9 = 0x295F
-0x00EA = 0x2960
-0x00EB = 0x2961
-0x00EC = 0x2962
-0x00ED = 0x2963
-0x00EE = 0x2964
-0x00EF = 0x2965
-0x00F0 = 0x2966
-0x00F1 = 0x2967
-0x00F2 = 0x2968
-0x00F3 = 0x2969
-0x00F4 = 0x296A
-0x00F5 = 0x296B
-0x00F6 = 0x296C
-0x00F8 = 0x296D
-0x00F9 = 0x296E
-0x00FA = 0x296F
-0x00FB = 0x2970
-0x00FC = 0x2971
-0x00FD = 0x2972
-0x00FE = 0x2973
-0x00FF = 0x2974
-0x0100 = 0x2975
-0x0101 = 0x297A
-0x0102 = 0x2A3A
-0x0103 = 0x2A49
-0x0104 = 0x2A21
-0x0105 = 0x2A2C
-0x0106 = 0x2A3C
-0x0107 = 0x2A4B
-0x0108 = 0x2A59
-0x0109 = 0x2A5F
-0x010C = 0x2A3D
-0x010D = 0x2A4C
-0x010E = 0x2A40
-0x010F = 0x2A4F
-0x0111 = 0x2A50
-0x0112 = 0x2978
-0x0113 = 0x297D
-0x0118 = 0x2A3E
-0x0119 = 0x2A4D
-0x011A = 0x2A3F
-0x011B = 0x2A4E
-0x011C = 0x2A5A
-0x011D = 0x2A60
-0x0124 = 0x2A5B
-0x0125 = 0x2A61
-0x0127 = 0x2A7D
-0x012A = 0x2976
-0x012B = 0x297B
-0x0134 = 0x2A5C
-0x0135 = 0x2A62
-0x0139 = 0x2A3B
-0x013A = 0x2A4A
-0x013D = 0x2A24
-0x013E = 0x2A2F
-0x0141 = 0x2A23
-0x0142 = 0x2A2E
-0x0143 = 0x2A41
-0x0144 = 0x2A51
-0x0147 = 0x2A42
-0x0148 = 0x2A52
-0x014B = 0x2A7A
-0x014C = 0x2979
-0x014D = 0x297E
-0x0150 = 0x2A43
-0x0151 = 0x2A53
-0x0152 = 0x2B2B
-0x0153 = 0x2B2A
-0x0154 = 0x2A39
-0x0155 = 0x2A48
-0x0158 = 0x2A44
-0x0159 = 0x2A54
-0x015A = 0x2A25
-0x015B = 0x2A30
-0x015C = 0x2A5D
-0x015D = 0x2A63
-0x015E = 0x2A27
-0x015F = 0x2A33
-0x0160 = 0x2A26
-0x0161 = 0x2A32
-0x0162 = 0x2A47
-0x0163 = 0x2A57
-0x0164 = 0x2A28
-0x0165 = 0x2A34
-0x016A = 0x2977
-0x016B = 0x297C
-0x016C = 0x2A5E
-0x016D = 0x2A64
-0x016E = 0x2A45
-0x016F = 0x2A55
-0x0170 = 0x2A46
-0x0171 = 0x2A56
-0x0179 = 0x2A29
-0x017A = 0x2A35
-0x017B = 0x2A2B
-0x017C = 0x2A38
-0x017D = 0x2A2A
-0x017E = 0x2A37
-0x0193 = 0x2B29
-0x01C2 = 0x2B24
-0x01CD = 0x286F
-0x01CE = 0x2870
-0x01D0 = 0x2871
-0x01D1 = 0x2876
-0x01D2 = 0x2877
-0x01D4 = 0x2878
-0x01D6 = 0x2879
-0x01D8 = 0x287A
-0x01DA = 0x287B
-0x01DC = 0x287C
-0x01F8 = 0x2874
-0x01F9 = 0x2875
-0x01FD = 0x2B45
-0x0250 = 0x2B33
-0x0251 = 0x2B39
-0x0252 = 0x2B3A
-0x0253 = 0x2B25
-#0x0254 + 0x0300 = 0x2B48
-#0x0254 + 0x0301 = 0x2B49
-0x0254 = 0x2B38
-0x0255 = 0x2B3F
-0x0256 = 0x2A6E
-0x0257 = 0x2B26
-0x0258 = 0x2B2E
-#0x0259 + 0x0300 = 0x2B4C
-#0x0259 + 0x0301 = 0x2B4D
-0x0259 = 0x2B30
-#0x025A + 0x0300 = 0x2B4E
-#0x025A + 0x0301 = 0x2B4F
-0x025A = 0x2B43
-0x025C = 0x2B31
-0x025E = 0x2B32
-0x025F = 0x2A75
-0x0260 = 0x2B28
-0x0261 = 0x2A79
-0x0264 = 0x2B36
-0x0265 = 0x2B3C
-0x0266 = 0x2B22
-0x0267 = 0x2B42
-0x0268 = 0x2B2C
-0x026C = 0x2A6A
-0x026D = 0x2A74
-0x026E = 0x2A6B
-0x026F = 0x2B34
-0x0270 = 0x2A7B
-0x0271 = 0x2A65
-0x0272 = 0x2A76
-0x0273 = 0x2A6F
-0x0275 = 0x2B2F
-0x0279 = 0x2A6C
-0x027A = 0x2B41
-0x027B = 0x2A73
-0x027D = 0x2A70
-0x027E = 0x2A67
-0x0281 = 0x2A7C
-0x0282 = 0x2A71
-0x0283 = 0x2A68
-0x0284 = 0x2B27
-0x0288 = 0x2A6D
-0x0289 = 0x2B2D
-0x028A = 0x2B35
-0x028B = 0x2A66
-#0x028C + 0x0300 = 0x2B4A
-#0x028C + 0x0301 = 0x2B4B
-0x028C = 0x2B37
-0x028D = 0x2B3B
-0x028E = 0x2A78
-0x0290 = 0x2A72
-0x0291 = 0x2B40
-0x0292 = 0x2A69
-0x0294 = 0x2B21
-0x0295 = 0x2A7E
-0x0298 = 0x2B23
-0x029D = 0x2A77
-0x02A1 = 0x2B3E
-0x02A2 = 0x2B3D
-0x02C7 = 0x2A31
-0x02C8 = 0x2B53
-0x02CC = 0x2B54
-0x02D0 = 0x2B55
-0x02D1 = 0x2B56
-0x02D8 = 0x2A22
-0x02D9 = 0x2A58
-0x02DB = 0x2A2D
-0x02DD = 0x2A36
-0x02DE = 0x2B71
-#0x02E5 + 0x02E9 = 0x2B66
-0x02E5 = 0x2B60
-0x02E6 = 0x2B61
-0x02E7 = 0x2B62
-0x02E8 = 0x2B63
-#0x02E9 + 0x02E5 = 0x2B65
-0x02E9 = 0x2B64
-0x0300 = 0x2B5C
-0x0301 = 0x2B5A
-0x0302 = 0x2B5F
-0x0303 = 0x2B7D
-0x0304 = 0x2B5B
-0x0306 = 0x2B57
-0x0308 = 0x2B6D
-0x030B = 0x2B59
-0x030C = 0x2B5E
-0x030F = 0x2B5D
-0x0318 = 0x2B78
-0x0319 = 0x2B79
-0x031A = 0x2B7E
-0x031C = 0x2B6A
-0x031D = 0x2B76
-0x031E = 0x2B77
-0x031F = 0x2B6B
-0x0320 = 0x2B6C
-0x0324 = 0x2B72
-0x0325 = 0x2B67
-0x0329 = 0x2B6F
-0x032A = 0x2B7A
-0x032C = 0x2B68
-0x032F = 0x2B70
-0x0330 = 0x2B73
-0x0334 = 0x2B75
-0x0339 = 0x2B69
-0x033A = 0x2B7B
-0x033B = 0x2B7C
-0x033C = 0x2B74
-0x033D = 0x2B6E
-0x0361 = 0x2B52
-0x03C2 = 0x2659
-0x1E3E = 0x2872
-0x1E3F = 0x2873
-0x1F70 = 0x2B46
-0x1F71 = 0x2B47
-0x1F72 = 0x2B50
-0x1F73 = 0x2B51
-0x2013 = 0x237C
-0x2022 = 0x2340
-0x203C = 0x286B
-0x203F = 0x2B58
-0x2042 = 0x2C7E
-0x2047 = 0x286C
-0x2048 = 0x286D
-0x2049 = 0x286E
-0x2051 = 0x2C7D
-0x20AC = 0x2921
-0x210F = 0x235D
-0x2113 = 0x235F
-0x2116 = 0x2D62
-0x2121 = 0x2D64
-0x2127 = 0x2360
-0x2135 = 0x235C
-0x2153 = 0x2778
-0x2154 = 0x2779
-0x2155 = 0x277A
-0x2160 = 0x2D35
-0x2161 = 0x2D36
-0x2162 = 0x2D37
-0x2163 = 0x2D38
-0x2164 = 0x2D39
-0x2165 = 0x2D3A
-0x2166 = 0x2D3B
-0x2167 = 0x2D3C
-0x2168 = 0x2D3D
-0x2169 = 0x2D3E
-0x216A = 0x2D3F
-0x216B = 0x2D57
-0x2170 = 0x2C35
-0x2171 = 0x2C36
-0x2172 = 0x2C37
-0x2173 = 0x2C38
-0x2174 = 0x2C39
-0x2175 = 0x2C3A
-0x2176 = 0x2C3B
-0x2177 = 0x2C3C
-0x2178 = 0x2C3D
-0x2179 = 0x2C3E
-0x217A = 0x2C3F
-0x217B = 0x2C40
-0x2194 = 0x2271
-0x2196 = 0x2327
-0x2197 = 0x2325
-0x2198 = 0x2326
-0x2199 = 0x2328
-0x21C4 = 0x2329
-0x21E6 = 0x232B
-0x21E7 = 0x232C
-0x21E8 = 0x232A
-0x21E9 = 0x232D
-0x2205 = 0x2247
-0x2209 = 0x2246
-0x2213 = 0x235B
-0x221F = 0x2D78
-0x2225 = 0x2254
-0x2226 = 0x2255
-0x222E = 0x2D73
-0x2243 = 0x226C
-0x2245 = 0x226D
-0x2248 = 0x226E
-0x2262 = 0x226B
-0x2276 = 0x226F
-0x2277 = 0x2270
-0x2284 = 0x2242
-0x2285 = 0x2243
-0x228A = 0x2244
-0x228B = 0x2245
-0x2295 = 0x2251
-0x2296 = 0x2252
-0x2297 = 0x2253
-0x22BF = 0x2D79
-0x22DA = 0x2776
-0x22DB = 0x2777
-0x2305 = 0x2248
-0x2306 = 0x2249
-0x2318 = 0x277C
-0x23BE = 0x2742
-0x23BF = 0x2743
-0x23C0 = 0x2744
-0x23C1 = 0x2745
-0x23C2 = 0x2746
-0x23C3 = 0x2747
-0x23C4 = 0x2748
-0x23C5 = 0x2749
-0x23C6 = 0x274A
-0x23C7 = 0x274B
-0x23C8 = 0x274C
-0x23C9 = 0x274D
-0x23CA = 0x274E
-0x23CB = 0x274F
-0x23CC = 0x2750
-0x23CE = 0x277E
-0x2423 = 0x277D
-0x2460 = 0x2D21
-0x2461 = 0x2D22
-0x2462 = 0x2D23
-0x2463 = 0x2D24
-0x2464 = 0x2D25
-0x2465 = 0x2D26
-0x2466 = 0x2D27
-0x2467 = 0x2D28
-0x2468 = 0x2D29
-0x2469 = 0x2D2A
-0x246A = 0x2D2B
-0x246B = 0x2D2C
-0x246C = 0x2D2D
-0x246D = 0x2D2E
-0x246E = 0x2D2F
-0x246F = 0x2D30
-0x2470 = 0x2D31
-0x2471 = 0x2D32
-0x2472 = 0x2D33
-0x2473 = 0x2D34
-0x24D0 = 0x2C41
-0x24D1 = 0x2C42
-0x24D2 = 0x2C43
-0x24D3 = 0x2C44
-0x24D4 = 0x2C45
-0x24D5 = 0x2C46
-0x24D6 = 0x2C47
-0x24D7 = 0x2C48
-0x24D8 = 0x2C49
-0x24D9 = 0x2C4A
-0x24DA = 0x2C4B
-0x24DB = 0x2C4C
-0x24DC = 0x2C4D
-0x24DD = 0x2C4E
-0x24DE = 0x2C4F
-0x24DF = 0x2C50
-0x24E0 = 0x2C51
-0x24E1 = 0x2C52
-0x24E2 = 0x2C53
-0x24E3 = 0x2C54
-0x24E4 = 0x2C55
-0x24E5 = 0x2C56
-0x24E6 = 0x2C57
-0x24E7 = 0x2C58
-0x24E8 = 0x2C59
-0x24E9 = 0x2C5A
-0x24EB = 0x2C2B
-0x24EC = 0x2C2C
-0x24ED = 0x2C2D
-0x24EE = 0x2C2E
-0x24EF = 0x2C2F
-0x24F0 = 0x2C30
-0x24F1 = 0x2C31
-0x24F2 = 0x2C32
-0x24F3 = 0x2C33
-0x24F4 = 0x2C34
-0x24F5 = 0x265A
-0x24F6 = 0x265B
-0x24F7 = 0x265C
-0x24F8 = 0x265D
-0x24F9 = 0x265E
-0x24FA = 0x265F
-0x24FB = 0x2660
-0x24FC = 0x2661
-0x24FD = 0x2662
-0x24FE = 0x2663
-0x25B1 = 0x266D
-0x25B6 = 0x2322
-0x25B7 = 0x2321
-0x25C0 = 0x2324
-0x25C1 = 0x2323
-0x25C9 = 0x233B
-0x25D0 = 0x2867
-0x25D1 = 0x2868
-0x25D2 = 0x2869
-0x25D3 = 0x286A
-0x25E6 = 0x233F
-0x2600 = 0x2668
-0x2601 = 0x2669
-0x2602 = 0x266A
-0x2603 = 0x266B
-0x260E = 0x2667
-0x2616 = 0x2664
-0x2617 = 0x2665
-0x261E = 0x2D7E
-0x2660 = 0x263A
-0x2661 = 0x263D
-0x2662 = 0x263B
-0x2663 = 0x2640
-0x2664 = 0x2639
-0x2665 = 0x263E
-0x2666 = 0x263C
-0x2667 = 0x263F
-0x2668 = 0x266C
-0x2669 = 0x227D
-0x266B = 0x227B
-0x266C = 0x227C
-0x266E = 0x227A
-0x2713 = 0x277B
-0x2756 = 0x2D7D
-0x2776 = 0x2C21
-0x2777 = 0x2C22
-0x2778 = 0x2C23
-0x2779 = 0x2C24
-0x277A = 0x2C25
-0x277B = 0x2C26
-0x277C = 0x2C27
-0x277D = 0x2C28
-0x277E = 0x2C29
-0x277F = 0x2C2A
-0x2934 = 0x232E
-0x2935 = 0x232F
-0x29BF = 0x233A
-0x29FA = 0x237D
-0x29FB = 0x237E
-0x3016 = 0x225A
-0x3017 = 0x225B
-0x3018 = 0x2258
-0x3019 = 0x2259
-0x301D = 0x2D60
-0x301F = 0x2D61
-0x3020 = 0x2666
-0x3033 = 0x2233
-0x3034 = 0x2234
-0x3035 = 0x2235
-0x303B = 0x2236
-0x303C = 0x2237
-0x303D = 0x233C
-#0x304B + 0x309A = 0x2477
-#0x304D + 0x309A = 0x2478
-#0x304F + 0x309A = 0x2479
-#0x3051 + 0x309A = 0x247A
-#0x3053 + 0x309A = 0x247B
-0x3094 = 0x2474
-0x3095 = 0x2475
-0x3096 = 0x2476
-0x309F = 0x2239
-0x30A0 = 0x237B
-#0x30AB + 0x309A = 0x2577
-#0x30AD + 0x309A = 0x2578
-#0x30AF + 0x309A = 0x2579
-#0x30B1 + 0x309A = 0x257A
-#0x30B3 + 0x309A = 0x257B
-#0x30BB + 0x309A = 0x257C
-#0x30C4 + 0x309A = 0x257D
-#0x30C8 + 0x309A = 0x257E
-0x30F7 = 0x2772
-0x30F8 = 0x2773
-0x30F9 = 0x2774
-0x30FA = 0x2775
-0x30FF = 0x2238
-0x31F0 = 0x266E
-0x31F1 = 0x266F
-0x31F2 = 0x2670
-0x31F3 = 0x2671
-0x31F4 = 0x2672
-0x31F5 = 0x2673
-0x31F6 = 0x2674
-#0x31F7 + 0x309A = 0x2678
-0x31F7 = 0x2675
-0x31F8 = 0x2676
-0x31F9 = 0x2677
-0x31FA = 0x2679
-0x31FB = 0x267A
-0x31FC = 0x267B
-0x31FD = 0x267C
-0x31FE = 0x267D
-0x31FF = 0x267E
-0x3231 = 0x2D6A
-0x3232 = 0x2D6B
-0x3239 = 0x2D6C
-0x3251 = 0x2841
-0x3252 = 0x2842
-0x3253 = 0x2843
-0x3254 = 0x2844
-0x3255 = 0x2845
-0x3256 = 0x2846
-0x3257 = 0x2847
-0x3258 = 0x2848
-0x3259 = 0x2849
-0x325A = 0x284A
-0x325B = 0x284B
-0x325C = 0x284C
-0x325D = 0x284D
-0x325E = 0x284E
-0x325F = 0x284F
-0x32A4 = 0x2D65
-0x32A5 = 0x2D66
-0x32A6 = 0x2D67
-0x32A7 = 0x2D68
-0x32A8 = 0x2D69
-0x32B1 = 0x2850
-0x32B2 = 0x2851
-0x32B3 = 0x2852
-0x32B4 = 0x2853
-0x32B5 = 0x2854
-0x32B6 = 0x2855
-0x32B7 = 0x2856
-0x32B8 = 0x2857
-0x32B9 = 0x2858
-0x32BA = 0x2859
-0x32BB = 0x285A
-0x32BC = 0x285B
-0x32BD = 0x285C
-0x32BE = 0x285D
-0x32BF = 0x285E
-0x32D0 = 0x2C5B
-0x32D1 = 0x2C5C
-0x32D2 = 0x2C5D
-0x32D3 = 0x2C5E
-0x32D4 = 0x2C5F
-0x32D5 = 0x2C60
-0x32D6 = 0x2C61
-0x32D7 = 0x2C62
-0x32D8 = 0x2C63
-0x32D9 = 0x2C64
-0x32DA = 0x2C65
-0x32DB = 0x2C66
-0x32DC = 0x2C67
-0x32DD = 0x2C68
-0x32DE = 0x2C69
-0x32DF = 0x2C6A
-0x32E0 = 0x2C6B
-0x32E1 = 0x2C6C
-0x32E2 = 0x2C6D
-0x32E3 = 0x2C6E
-0x32E5 = 0x2C71
-0x32E9 = 0x2C70
-0x32EC = 0x2C73
-0x32ED = 0x2C72
-0x32FA = 0x2C6F
-0x3303 = 0x2D46
-0x330D = 0x2D4A
-0x3314 = 0x2D41
-0x3318 = 0x2D44
-0x3322 = 0x2D42
-0x3323 = 0x2D4C
-0x3326 = 0x2D4B
-0x3327 = 0x2D45
-0x332B = 0x2D4D
-0x3336 = 0x2D47
-0x333B = 0x2D4F
-0x3349 = 0x2D40
-0x334A = 0x2D4E
-0x334D = 0x2D43
-0x3351 = 0x2D48
-0x3357 = 0x2D49
-0x337B = 0x2D5F
-0x337C = 0x2D6F
-0x337D = 0x2D6E
-0x337E = 0x2D6D
-0x338E = 0x2D53
-0x338F = 0x2D54
-0x339C = 0x2D50
-0x339D = 0x2D51
-0x339E = 0x2D52
-0x33A1 = 0x2D56
-0x33C4 = 0x2D55
-0x33CB = 0x235E
-0x33CD = 0x2D63
-0x3402 = 0x2E23
-0x34B5 = 0x2E53
-0x34DB = 0x2E5B
-0x378D = 0x4F5F
-0x37E2 = 0x4F6F
-0x3B22 = 0x7549
-0x3BB6 = 0x757E
-0x3BC3 = 0x7621
-0x3C0F = 0x763A
-0x3E3F = 0x7766
-0x3F72 = 0x784D
-0x4264 = 0x796D
-0x4453 = 0x7A59
-0x445B = 0x7A5A
-0x459D = 0x7B51
-0x45EA = 0x7B60
-0x4844 = 0x7C4B
-0x49B0 = 0x7D58
-0x4C17 = 0x7E3E
-0x4E28 = 0x2E24
-0x4E2F = 0x2E25
-0x4E30 = 0x2E26
-0x4E8D = 0x2E27
-0x4EE1 = 0x2E28
-0x4EFD = 0x2E29
-0x4EFF = 0x2E2A
-0x4F03 = 0x2E2B
-0x4F0B = 0x2E2C
-0x4F48 = 0x2E2E
-0x4F49 = 0x2E2F
-0x4F56 = 0x2E30
-0x4F5F = 0x2E31
-0x4F60 = 0x2E2D
-0x4F6A = 0x2E32
-0x4F6C = 0x2E33
-0x4F7E = 0x2E34
-0x4F8A = 0x2E35
-0x4F94 = 0x2E36
-0x4F97 = 0x2E37
-0x4FC9 = 0x2E39
-0x4FE0 = 0x2E3A
-0x4FF1 = 0x2E21
-0x5001 = 0x2E3B
-0x5002 = 0x2E3C
-0x500E = 0x2E3D
-0x5018 = 0x2E3E
-0x5027 = 0x2E3F
-0x502E = 0x2E40
-0x503B = 0x2E42
-0x5040 = 0x2E41
-0x5041 = 0x2E43
-0x5094 = 0x2E44
-0x50CC = 0x2E45
-0x50D0 = 0x2E47
-0x50E6 = 0x2E48
-0x50F2 = 0x2E46
-0x5103 = 0x2E4B
-0x5106 = 0x2E4A
-0x510B = 0x2E4C
-0x511E = 0x2E4D
-0x5135 = 0x2E4E
-0x514A = 0x2E4F
-0x5155 = 0x2E51
-0x5157 = 0x2E52
-0x519D = 0x2E54
-0x51C3 = 0x2E55
-0x51CA = 0x2E56
-0x51DE = 0x2E57
-0x51E2 = 0x2E58
-0x51EE = 0x2E59
-0x5201 = 0x2E5A
-0x5213 = 0x2E5C
-0x5215 = 0x2E5D
-0x5249 = 0x2E5E
-0x5257 = 0x2E5F
-0x525D = 0x2F7E
-0x5261 = 0x2E60
-0x5293 = 0x2E61
-0x52C8 = 0x2E62
-0x52CC = 0x2E64
-0x52D0 = 0x2E65
-0x52D6 = 0x2E66
-0x52DB = 0x2E67
-0x52F0 = 0x2E69
-0x52FB = 0x2E6A
-0x5300 = 0x2E6B
-0x5307 = 0x2E6C
-0x531C = 0x2E6D
-0x5361 = 0x2E6F
-0x5363 = 0x2E70
-0x537D = 0x2E71
-0x5393 = 0x2E72
-0x539D = 0x2E73
-0x53B2 = 0x2E74
-0x5412 = 0x2E75
-0x541E = 0x4F7E
-0x5427 = 0x2E76
-0x544D = 0x2E77
-0x546B = 0x2E79
-0x5474 = 0x2E7A
-0x547F = 0x2E7B
-0x5488 = 0x2E7C
-0x5496 = 0x2E7D
-0x549C = 0x2E78
-0x54A1 = 0x2E7E
-0x54A9 = 0x2F21
-0x54C6 = 0x2F22
-0x54FF = 0x2F23
-0x550E = 0x2F24
-0x552B = 0x2F25
-0x5535 = 0x2F26
-0x5550 = 0x2F27
-0x555E = 0x2F28
-0x5581 = 0x2F29
-0x5586 = 0x2F2A
-0x558E = 0x2F2B
-0x55AD = 0x2F2D
-0x55CE = 0x2F2E
-0x5608 = 0x2F30
-0x560E = 0x2F31
-0x563B = 0x2F32
-0x5649 = 0x2F33
-0x5653 = 0x7427
-0x5666 = 0x2F35
-0x566F = 0x2F37
-0x5671 = 0x2F38
-0x5672 = 0x2F39
-0x5676 = 0x2F34
-0x5699 = 0x2F3A
-0x569E = 0x2F3B
-0x56A9 = 0x2F3C
-0x56AC = 0x2F3D
-0x56B3 = 0x2F3E
-0x56C9 = 0x2F3F
-0x56CA = 0x2F40
-0x570A = 0x2F41
-0x5721 = 0x2F43
-0x572F = 0x2F44
-0x5733 = 0x2F45
-0x5734 = 0x2F46
-0x5770 = 0x2F47
-0x5777 = 0x2F48
-0x577C = 0x2F49
-0x579C = 0x2F4A
-0x57B8 = 0x2F4D
-0x57C7 = 0x2F4E
-0x57C8 = 0x2F4F
-0x57CF = 0x2F50
-0x57E4 = 0x2F51
-0x57ED = 0x2F52
-0x57F5 = 0x2F53
-0x57F6 = 0x2F54
-0x57FF = 0x2F55
-0x5809 = 0x2F56
-0x5861 = 0x2F58
-0x5864 = 0x2F59
-0x587C = 0x2F5B
-0x5889 = 0x2F5C
-0x589E = 0x2F5D
-0x58A9 = 0x2F5F
-0x58CE = 0x2F62
-0x58D2 = 0x2F61
-0x58D4 = 0x2F63
-0x58DA = 0x2F64
-0x58E0 = 0x2F65
-0x58E9 = 0x2F66
-0x590C = 0x2F67
-0x595D = 0x2F69
-0x596D = 0x2F6A
-0x598B = 0x2F6B
-0x5992 = 0x2F6C
-0x59A4 = 0x2F6D
-0x59C3 = 0x2F6E
-0x59D2 = 0x2F6F
-0x59DD = 0x2F70
-0x59F8 = 0x7E7A
-0x5A13 = 0x2F71
-0x5A23 = 0x2F72
-0x5A67 = 0x2F73
-0x5A6D = 0x2F74
-0x5A77 = 0x2F75
-0x5A7E = 0x2F76
-0x5A84 = 0x2F77
-0x5A9E = 0x2F78
-0x5AA7 = 0x2F79
-0x5AC4 = 0x2F7A
-0x5B19 = 0x2F7C
-0x5B25 = 0x2F7D
-0x5B41 = 0x4F55
-0x5B56 = 0x4F56
-0x5B7D = 0x4F57
-0x5B93 = 0x4F58
-0x5BD8 = 0x4F59
-0x5BEC = 0x4F5A
-0x5C12 = 0x4F5B
-0x5C1E = 0x4F5C
-0x5C23 = 0x4F5D
-0x5C2B = 0x4F5E
-0x5C5B = 0x7E7B
-0x5C62 = 0x4F60
-0x5C7A = 0x4F64
-0x5C8F = 0x4F65
-0x5C9F = 0x4F66
-0x5CA3 = 0x4F67
-0x5CAA = 0x4F68
-0x5CBA = 0x4F69
-0x5CCB = 0x4F6A
-0x5CD0 = 0x4F6B
-0x5CD2 = 0x4F6C
-0x5CF4 = 0x4F6D
-0x5D0D = 0x4F70
-0x5D27 = 0x4F71
-0x5D46 = 0x4F73
-0x5D47 = 0x4F74
-0x5D4A = 0x4F76
-0x5D53 = 0x4F75
-0x5D6D = 0x4F77
-0x5D81 = 0x4F78
-0x5DA0 = 0x4F79
-0x5DA4 = 0x4F7A
-0x5DA7 = 0x4F7B
-0x5DB8 = 0x4F7C
-0x5DCB = 0x4F7D
-0x5DE2 = 0x7428
-0x5E14 = 0x7429
-0x5E18 = 0x742A
-0x5E58 = 0x742B
-0x5E5E = 0x742C
-0x5E77 = 0x7E7C
-0x5EBE = 0x742D
-0x5ECB = 0x742F
-0x5EF9 = 0x7430
-0x5F00 = 0x7431
-0x5F02 = 0x7432
-0x5F07 = 0x7433
-0x5F1D = 0x7434
-0x5F23 = 0x7435
-0x5F34 = 0x7436
-0x5F36 = 0x7437
-0x5F3D = 0x7438
-0x5F40 = 0x7439
-0x5F45 = 0x743A
-0x5F54 = 0x743B
-0x5F58 = 0x743C
-0x5F64 = 0x743D
-0x5F67 = 0x743E
-0x5F7D = 0x743F
-0x5F89 = 0x7440
-0x5F9C = 0x7441
-0x5FA7 = 0x7442
-0x5FAF = 0x7443
-0x5FB5 = 0x7444
-0x5FB7 = 0x7445
-0x5FC9 = 0x7446
-0x5FDE = 0x7447
-0x5FE1 = 0x7448
-0x5FE9 = 0x7449
-0x600D = 0x744A
-0x6014 = 0x744B
-0x6018 = 0x744C
-0x6033 = 0x744D
-0x6035 = 0x744E
-0x6047 = 0x744F
-0x609D = 0x7451
-0x609E = 0x7452
-0x60CB = 0x7453
-0x60D4 = 0x7454
-0x60D5 = 0x7455
-0x60DD = 0x7456
-0x60F8 = 0x7457
-0x611C = 0x7458
-0x612B = 0x7459
-0x6130 = 0x745A
-0x6137 = 0x745B
-0x618D = 0x745D
-0x61B9 = 0x7460
-0x61BC = 0x745F
-0x6222 = 0x7462
-0x623E = 0x7463
-0x6243 = 0x7464
-0x6256 = 0x7465
-0x625A = 0x7466
-0x626F = 0x7467
-0x6285 = 0x7468
-0x62C4 = 0x7469
-0x62D6 = 0x746A
-0x62FC = 0x746B
-0x630A = 0x746C
-0x6318 = 0x746D
-0x6339 = 0x746E
-0x6343 = 0x746F
-0x6365 = 0x7470
-0x637C = 0x7471
-0x63E5 = 0x7472
-0x63ED = 0x7473
-0x63F5 = 0x7474
-0x6410 = 0x7475
-0x6414 = 0x7476
-0x6422 = 0x7477
-0x6451 = 0x7479
-0x6460 = 0x747A
-0x646D = 0x747B
-0x6479 = 0x7478
-0x64BE = 0x747D
-0x64BF = 0x747E
-0x64C4 = 0x7521
-0x64CA = 0x7522
-0x64CE = 0x747C
-0x64D0 = 0x7523
-0x64F7 = 0x7524
-0x64FB = 0x7525
-0x6522 = 0x7526
-0x6529 = 0x7527
-0x6567 = 0x7529
-0x659D = 0x752A
-0x6600 = 0x752C
-0x6609 = 0x752D
-0x6615 = 0x752E
-0x661E = 0x752F
-0x6622 = 0x7531
-0x6624 = 0x7532
-0x662B = 0x7533
-0x6630 = 0x7534
-0x6631 = 0x7535
-0x6633 = 0x7536
-0x663A = 0x7530
-0x6648 = 0x7538
-0x664C = 0x7539
-0x6659 = 0x753B
-0x665A = 0x753C
-0x6661 = 0x753D
-0x6665 = 0x753E
-0x6673 = 0x753F
-0x6677 = 0x7540
-0x6678 = 0x7541
-0x668D = 0x7542
-0x66A0 = 0x7544
-0x66B2 = 0x7545
-0x66BB = 0x7546
-0x66C6 = 0x7547
-0x66C8 = 0x7548
-0x66DB = 0x754A
-0x66E8 = 0x754B
-0x66FA = 0x754C
-0x66FB = 0x7537
-0x6713 = 0x754D
-0x6733 = 0x754F
-0x6747 = 0x7551
-0x6748 = 0x7552
-0x6766 = 0x7550
-0x677B = 0x7553
-0x6781 = 0x7554
-0x6793 = 0x7555
-0x6798 = 0x7556
-0x679B = 0x7557
-0x67BB = 0x7558
-0x67C0 = 0x755A
-0x67D7 = 0x755B
-0x67F9 = 0x7559
-0x67FC = 0x755C
-0x6801 = 0x755D
-0x681D = 0x755F
-0x682C = 0x7560
-0x6831 = 0x7561
-0x6852 = 0x755E
-0x685B = 0x7562
-0x6872 = 0x7563
-0x6875 = 0x7564
-0x68A3 = 0x7566
-0x68A5 = 0x7567
-0x68B2 = 0x7568
-0x68C8 = 0x7569
-0x68D0 = 0x756A
-0x68E8 = 0x756B
-0x68ED = 0x756C
-0x68F0 = 0x756D
-0x68F1 = 0x756E
-0x68FC = 0x756F
-0x690A = 0x7570
-0x6935 = 0x7573
-0x6942 = 0x7574
-0x6949 = 0x7571
-0x6957 = 0x7575
-0x6963 = 0x7576
-0x6964 = 0x7577
-0x6968 = 0x7578
-0x6980 = 0x7579
-0x69A5 = 0x757B
-0x69AD = 0x757C
-0x69CF = 0x757D
-0x69E2 = 0x7622
-0x69E9 = 0x7623
-0x69EA = 0x7624
-0x69F5 = 0x7625
-0x69F6 = 0x7626
-0x6A0F = 0x7627
-0x6A15 = 0x7628
-0x6A3B = 0x762A
-0x6A3E = 0x762B
-0x6A45 = 0x762C
-0x6A50 = 0x762D
-0x6A56 = 0x762E
-0x6A5B = 0x762F
-0x6A6B = 0x7630
-0x6A73 = 0x7631
-0x6A89 = 0x7633
-0x6A94 = 0x7634
-0x6A9D = 0x7635
-0x6A9E = 0x7636
-0x6AA5 = 0x7637
-0x6AE4 = 0x7638
-0x6AE7 = 0x7639
-0x6B1B = 0x763C
-0x6B1E = 0x763D
-0x6B2C = 0x763E
-0x6B35 = 0x763F
-0x6B46 = 0x7640
-0x6B56 = 0x7641
-0x6B60 = 0x7642
-0x6B65 = 0x7643
-0x6B67 = 0x7644
-0x6B77 = 0x7645
-0x6B82 = 0x7646
-0x6BA9 = 0x7647
-0x6BAD = 0x7648
-0x6BCF = 0x764A
-0x6BD6 = 0x764B
-0x6BD7 = 0x764C
-0x6BFF = 0x764D
-0x6C05 = 0x764E
-0x6C10 = 0x764F
-0x6C33 = 0x7650
-0x6C59 = 0x7651
-0x6C5C = 0x7652
-0x6C74 = 0x7654
-0x6C76 = 0x7655
-0x6C85 = 0x7656
-0x6C86 = 0x7657
-0x6C98 = 0x7658
-0x6C9C = 0x7659
-0x6CAA = 0x7653
-0x6CC6 = 0x765B
-0x6CD4 = 0x765C
-0x6CE0 = 0x765D
-0x6CEB = 0x765E
-0x6CEE = 0x765F
-0x6CFB = 0x765A
-0x6D04 = 0x7661
-0x6D0E = 0x7662
-0x6D2E = 0x7663
-0x6D31 = 0x7664
-0x6D39 = 0x7665
-0x6D3F = 0x7666
-0x6D58 = 0x7667
-0x6D65 = 0x7668
-0x6D82 = 0x766A
-0x6D87 = 0x766B
-0x6D89 = 0x766C
-0x6D94 = 0x766D
-0x6DAA = 0x766E
-0x6DAC = 0x766F
-0x6DBF = 0x7670
-0x6DC4 = 0x7671
-0x6DD6 = 0x7672
-0x6DDA = 0x7673
-0x6DDB = 0x7674
-0x6DDD = 0x7675
-0x6DFC = 0x7676
-0x6E34 = 0x7678
-0x6E44 = 0x7679
-0x6E5C = 0x767A
-0x6E5E = 0x767B
-0x6EAB = 0x767C
-0x6EB1 = 0x767D
-0x6EC1 = 0x767E
-0x6EC7 = 0x7721
-0x6ECE = 0x7722
-0x6F10 = 0x7723
-0x6F1A = 0x7724
-0x6F2A = 0x7726
-0x6F2F = 0x7727
-0x6F33 = 0x7728
-0x6F51 = 0x7729
-0x6F59 = 0x772A
-0x6F5E = 0x772B
-0x6F61 = 0x772C
-0x6F62 = 0x772D
-0x6F7E = 0x772E
-0x6F88 = 0x772F
-0x6F8C = 0x7730
-0x6F8D = 0x7731
-0x6F94 = 0x7732
-0x6FA0 = 0x7733
-0x6FA7 = 0x7734
-0x6FB6 = 0x7735
-0x6FBC = 0x7736
-0x6FC7 = 0x7737
-0x6FCA = 0x7738
-0x6FF0 = 0x773A
-0x6FF5 = 0x773B
-0x6FF9 = 0x7739
-0x7005 = 0x773C
-0x7006 = 0x773D
-0x7028 = 0x773E
-0x704A = 0x773F
-0x704E = 0x7742
-0x705D = 0x7740
-0x705E = 0x7741
-0x7064 = 0x7743
-0x7075 = 0x7744
-0x7085 = 0x7745
-0x70A4 = 0x7746
-0x70AB = 0x7747
-0x70B7 = 0x7748
-0x70D4 = 0x7749
-0x70D8 = 0x774A
-0x70E4 = 0x774B
-0x710F = 0x774C
-0x711E = 0x774E
-0x7120 = 0x774F
-0x712B = 0x774D
-0x712E = 0x7750
-0x7130 = 0x7751
-0x7146 = 0x7752
-0x7147 = 0x7753
-0x7151 = 0x7754
-0x7152 = 0x7756
-0x715C = 0x7757
-0x7160 = 0x7758
-0x7168 = 0x7759
-0x7185 = 0x775B
-0x7187 = 0x775C
-0x7192 = 0x775D
-0x71BA = 0x775F
-0x71C1 = 0x775E
-0x71C4 = 0x7760
-0x71FE = 0x7761
-0x7200 = 0x7762
-0x7215 = 0x7763
-0x7255 = 0x7764
-0x7256 = 0x7765
-0x728D = 0x7767
-0x729B = 0x7768
-0x72BE = 0x7769
-0x72C0 = 0x776A
-0x72FB = 0x776B
-0x7327 = 0x776D
-0x7328 = 0x776E
-0x7350 = 0x7770
-0x7366 = 0x7771
-0x737C = 0x7772
-0x7395 = 0x7773
-0x739F = 0x7774
-0x73A0 = 0x7775
-0x73A2 = 0x7776
-0x73A6 = 0x7777
-0x73AB = 0x7778
-0x73C9 = 0x7779
-0x73CF = 0x777A
-0x73D6 = 0x777B
-0x73D9 = 0x777C
-0x73E3 = 0x777D
-0x73E9 = 0x777E
-0x7407 = 0x7821
-0x740A = 0x7822
-0x741A = 0x7823
-0x741B = 0x7824
-0x7426 = 0x7826
-0x7428 = 0x7827
-0x742A = 0x7828
-0x742B = 0x7829
-0x742C = 0x782A
-0x742E = 0x782B
-0x742F = 0x782C
-0x7430 = 0x782D
-0x7444 = 0x782E
-0x7446 = 0x782F
-0x7447 = 0x7830
-0x744B = 0x7831
-0x7457 = 0x7832
-0x7462 = 0x7833
-0x746B = 0x7834
-0x746D = 0x7835
-0x7486 = 0x7836
-0x7487 = 0x7837
-0x7489 = 0x7838
-0x7490 = 0x783D
-0x7498 = 0x7839
-0x749C = 0x783A
-0x749F = 0x783B
-0x74A3 = 0x783C
-0x74A6 = 0x783E
-0x74A8 = 0x783F
-0x74A9 = 0x7840
-0x74B5 = 0x7841
-0x74BF = 0x7842
-0x74C8 = 0x7843
-0x74C9 = 0x7844
-0x74DA = 0x7845
-0x74FF = 0x7846
-0x7501 = 0x7847
-0x7517 = 0x7848
-0x752F = 0x7849
-0x756F = 0x784A
-0x7579 = 0x784B
-0x7592 = 0x784C
-0x75CE = 0x784E
-0x75E4 = 0x784F
-0x7600 = 0x7850
-0x7602 = 0x7851
-0x7608 = 0x7852
-0x7615 = 0x7853
-0x7616 = 0x7854
-0x7619 = 0x7855
-0x761E = 0x7856
-0x7626 = 0x7E7D
-0x762D = 0x7857
-0x7635 = 0x7858
-0x7643 = 0x7859
-0x764B = 0x785A
-0x7664 = 0x785B
-0x7665 = 0x785C
-0x766D = 0x785D
-0x766F = 0x785E
-0x7671 = 0x785F
-0x7681 = 0x7860
-0x769B = 0x7861
-0x769D = 0x7862
-0x769E = 0x7863
-0x76A6 = 0x7864
-0x76AA = 0x7865
-0x76B6 = 0x7866
-0x76C5 = 0x7867
-0x76CC = 0x7868
-0x76CE = 0x7869
-0x76D4 = 0x786A
-0x76E6 = 0x786B
-0x76F1 = 0x786C
-0x76FC = 0x786D
-0x770A = 0x786E
-0x7719 = 0x786F
-0x7734 = 0x7870
-0x7736 = 0x7871
-0x7746 = 0x7872
-0x774D = 0x7873
-0x774E = 0x7874
-0x775C = 0x7875
-0x775F = 0x7876
-0x7762 = 0x7877
-0x777A = 0x7878
-0x7780 = 0x7879
-0x7794 = 0x787A
-0x77AA = 0x787B
-0x77E0 = 0x787C
-0x782D = 0x787D
-0x7843 = 0x7921
-0x784E = 0x7922
-0x784F = 0x7923
-0x7851 = 0x7924
-0x7868 = 0x7925
-0x786E = 0x7926
-0x78AD = 0x792A
-0x78B0 = 0x7928
-0x78E4 = 0x792B
-0x78F2 = 0x792C
-0x78F7 = 0x792E
-0x7900 = 0x792D
-0x791C = 0x792F
-0x792E = 0x7930
-0x7931 = 0x7931
-0x7934 = 0x7932
-0x7945 = 0x7935
-0x7946 = 0x7936
-0x795C = 0x793A
-0x7979 = 0x793E
-0x7998 = 0x7942
-0x79B1 = 0x7943
-0x79B8 = 0x7944
-0x79C8 = 0x7945
-0x79CA = 0x7946
-0x79D4 = 0x7948
-0x79DE = 0x7949
-0x79EB = 0x794A
-0x79ED = 0x794B
-0x7A03 = 0x794C
-0x7A39 = 0x794E
-0x7A5D = 0x794F
-0x7A6D = 0x7950
-0x7A85 = 0x7952
-0x7AA0 = 0x7953
-0x7AB3 = 0x7955
-0x7ABB = 0x7956
-0x7ACE = 0x7957
-0x7AEB = 0x7958
-0x7AFD = 0x7959
-0x7B12 = 0x795A
-0x7B2D = 0x795B
-0x7B3B = 0x795C
-0x7B47 = 0x795D
-0x7B4E = 0x795E
-0x7B60 = 0x795F
-0x7B6D = 0x7960
-0x7B6F = 0x7961
-0x7B72 = 0x7962
-0x7B9E = 0x7963
-0x7BD7 = 0x7965
-0x7BD9 = 0x7966
-0x7C01 = 0x7967
-0x7C1E = 0x7969
-0x7C20 = 0x796A
-0x7C31 = 0x7968
-0x7C33 = 0x796B
-0x7C36 = 0x796C
-0x7C59 = 0x796F
-0x7C6D = 0x7970
-0x7C79 = 0x7971
-0x7C8F = 0x7972
-0x7C94 = 0x7973
-0x7CA0 = 0x7974
-0x7CBC = 0x7975
-0x7CD5 = 0x7976
-0x7CD9 = 0x7977
-0x7CDD = 0x7978
-0x7D07 = 0x7979
-0x7D08 = 0x797A
-0x7D13 = 0x797B
-0x7D1D = 0x797C
-0x7D23 = 0x797D
-0x7D31 = 0x797E
-0x7D41 = 0x7A21
-0x7D48 = 0x7A22
-0x7D53 = 0x7A23
-0x7D5C = 0x7A24
-0x7D7A = 0x7A25
-0x7D83 = 0x7A26
-0x7D8B = 0x7A27
-0x7DA0 = 0x7A28
-0x7DA6 = 0x7A29
-0x7DC2 = 0x7A2A
-0x7DCC = 0x7A2B
-0x7DD6 = 0x7A2C
-0x7DE3 = 0x7A2D
-0x7E08 = 0x7A30
-0x7E11 = 0x7A31
-0x7E15 = 0x7A32
-0x7E28 = 0x7A2F
-0x7E47 = 0x7A34
-0x7E52 = 0x7A35
-0x7E61 = 0x7A36
-0x7E6B = 0x7E7E
-0x7E8A = 0x7A37
-0x7E8D = 0x7A38
-0x7F47 = 0x7A39
-0x7F91 = 0x7A3B
-0x7F97 = 0x7A3C
-0x7FBF = 0x7A3D
-0x7FCE = 0x7A3E
-0x7FDB = 0x7A3F
-0x7FDF = 0x7A40
-0x7FEC = 0x7A41
-0x7FEE = 0x7A42
-0x7FFA = 0x7A43
-0x8014 = 0x7A45
-0x8026 = 0x7A46
-0x8035 = 0x7A47
-0x8037 = 0x7A48
-0x803C = 0x7A49
-0x80CA = 0x7A4A
-0x80D7 = 0x7A4B
-0x80E0 = 0x7A4C
-0x80F3 = 0x7A4D
-0x8118 = 0x7A4E
-0x814A = 0x7A4F
-0x8160 = 0x7A50
-0x8167 = 0x7A51
-0x8168 = 0x7A52
-0x816D = 0x7A53
-0x81BB = 0x7A54
-0x81CA = 0x7A55
-0x81CF = 0x7A56
-0x81D7 = 0x7A57
-0x8260 = 0x7A5B
-0x8274 = 0x7A5C
-0x828E = 0x7A5E
-0x82A1 = 0x7A5F
-0x82A3 = 0x7A60
-0x82A4 = 0x7A61
-0x82A9 = 0x7A62
-0x82AE = 0x7A63
-0x82B7 = 0x7A64
-0x82BE = 0x7A65
-0x82BF = 0x7A66
-0x82C6 = 0x7A67
-0x82D5 = 0x7A68
-0x82FD = 0x7A69
-0x82FE = 0x7A6A
-0x8300 = 0x7A6B
-0x8301 = 0x7A6C
-0x8322 = 0x7A6E
-0x832D = 0x7A6F
-0x833A = 0x7A70
-0x8343 = 0x7A71
-0x8347 = 0x7A72
-0x8351 = 0x7A73
-0x8355 = 0x7A74
-0x8362 = 0x7A6D
-0x837D = 0x7A75
-0x8386 = 0x7A76
-0x8392 = 0x7A77
-0x8398 = 0x7A78
-0x83A7 = 0x7A79
-0x83A9 = 0x7A7A
-0x83BF = 0x7A7B
-0x83C0 = 0x7A7C
-0x83C7 = 0x7A7D
-0x83CF = 0x7A7E
-0x83D1 = 0x7B21
-0x83E1 = 0x7B22
-0x83EA = 0x7B23
-0x8401 = 0x7B24
-0x8406 = 0x7B25
-0x840A = 0x7B26
-0x8448 = 0x7B28
-0x845F = 0x7B29
-0x8470 = 0x7B2A
-0x8473 = 0x7B2B
-0x8485 = 0x7B2C
-0x849E = 0x7B2D
-0x84AF = 0x7B2E
-0x84B4 = 0x7B2F
-0x84BA = 0x7B30
-0x84C0 = 0x7B31
-0x84C2 = 0x7B32
-0x851E = 0x7B35
-0x8523 = 0x7B36
-0x852F = 0x7B37
-0x8532 = 0x7B34
-0x8559 = 0x7B38
-0x8564 = 0x7B39
-0x857A = 0x7B3C
-0x858C = 0x7B3D
-0x858F = 0x7B3E
-0x85A2 = 0x7B3F
-0x85AD = 0x7B3B
-0x85B0 = 0x7B40
-0x85CB = 0x7B41
-0x85CE = 0x7B42
-0x85ED = 0x7B43
-0x85FF = 0x7B45
-0x8604 = 0x7B46
-0x8605 = 0x7B47
-0x8610 = 0x7B48
-0x8612 = 0x7B44
-0x8618 = 0x7B4A
-0x8629 = 0x7B4B
-0x8638 = 0x7B4C
-0x8641 = 0x2F68
-0x8657 = 0x7B4D
-0x865B = 0x7B4E
-0x8662 = 0x7B50
-0x866C = 0x7B52
-0x8675 = 0x7B53
-0x8698 = 0x7B54
-0x86B8 = 0x7B55
-0x86FA = 0x7B56
-0x86FC = 0x7B57
-0x86FD = 0x7B58
-0x870B = 0x7B59
-0x8771 = 0x7B5A
-0x8787 = 0x7B5B
-0x8788 = 0x7B5C
-0x87AC = 0x7B5D
-0x87AD = 0x7B5E
-0x87B5 = 0x7B5F
-0x87D6 = 0x7B61
-0x87EC = 0x7B62
-0x8806 = 0x7B63
-0x880A = 0x7B64
-0x8810 = 0x7B65
-0x8814 = 0x7B66
-0x881F = 0x7B67
-0x8898 = 0x7B68
-0x88AA = 0x7B69
-0x88CA = 0x7B6A
-0x88CE = 0x7B6B
-0x88F5 = 0x7B6D
-0x8918 = 0x7B70
-0x8919 = 0x7B71
-0x891A = 0x7B72
-0x891C = 0x7B6E
-0x8927 = 0x7B73
-0x8930 = 0x7B74
-0x8932 = 0x7B75
-0x8939 = 0x7B76
-0x8940 = 0x7B77
-0x8994 = 0x7B78
-0x89D4 = 0x7B7A
-0x89E5 = 0x7B7B
-0x89F6 = 0x7B7C
-0x8A12 = 0x7B7D
-0x8A15 = 0x7B7E
-0x8A22 = 0x7C21
-0x8A37 = 0x7C22
-0x8A47 = 0x7C23
-0x8A4E = 0x7C24
-0x8A5D = 0x7C25
-0x8A61 = 0x7C26
-0x8A75 = 0x7C27
-0x8A79 = 0x7C28
-0x8AA7 = 0x7C29
-0x8AD0 = 0x7C2A
-0x8ADF = 0x7C2B
-0x8AF4 = 0x7C2C
-0x8AF6 = 0x7C2D
-0x8B46 = 0x7C31
-0x8B54 = 0x7C32
-0x8B59 = 0x7C33
-0x8B69 = 0x7C34
-0x8B9D = 0x7C35
-0x8C49 = 0x7C36
-0x8C68 = 0x7C37
-0x8CE1 = 0x7C39
-0x8CF4 = 0x7C3A
-0x8CF8 = 0x7C3B
-0x8CFE = 0x7C3C
-0x8D12 = 0x7C3E
-0x8D1B = 0x7C3F
-0x8DAF = 0x7C40
-0x8DCE = 0x7C41
-0x8DD1 = 0x7C42
-0x8DD7 = 0x7C43
-0x8E20 = 0x7C44
-0x8E23 = 0x7C45
-0x8E3D = 0x7C46
-0x8E70 = 0x7C47
-0x8E7B = 0x7C48
-0x8EC0 = 0x7C4A
-0x8EFA = 0x7C4C
-0x8F1E = 0x7C4D
-0x8F2D = 0x7C4E
-0x8F36 = 0x7C4F
-0x8F54 = 0x7C50
-0x8FA6 = 0x7C52
-0x8FB5 = 0x7C53
-0x8FE4 = 0x7C54
-0x8FE8 = 0x7C55
-0x8FEE = 0x7C56
-0x9008 = 0x7C57
-0x902D = 0x7C58
-0x9088 = 0x7C5A
-0x9095 = 0x7C5B
-0x9097 = 0x7C5C
-0x9099 = 0x7C5D
-0x909B = 0x7C5E
-0x90A2 = 0x7C5F
-0x90B3 = 0x7C60
-0x90BE = 0x7C61
-0x90C4 = 0x7C62
-0x90C5 = 0x7C63
-0x90C7 = 0x7C64
-0x90D7 = 0x7C65
-0x90DD = 0x7C66
-0x90DE = 0x7C67
-0x90EF = 0x7C68
-0x90F4 = 0x7C69
-0x9114 = 0x7C6B
-0x9115 = 0x7C6C
-0x9116 = 0x7C6D
-0x9122 = 0x7C6E
-0x9123 = 0x7C6F
-0x9127 = 0x7C70
-0x912F = 0x7C71
-0x9131 = 0x7C72
-0x9134 = 0x7C73
-0x913D = 0x7C74
-0x9148 = 0x7C75
-0x915B = 0x7C76
-0x9183 = 0x7C77
-0x919E = 0x7C78
-0x91AC = 0x7C79
-0x91B1 = 0x7C7A
-0x91BC = 0x7C7B
-0x91D7 = 0x7C7C
-0x91E4 = 0x7C7E
-0x91E5 = 0x7D21
-0x91ED = 0x7D22
-0x91F1 = 0x7D23
-0x91FB = 0x7C7D
-0x9207 = 0x7D24
-0x9210 = 0x7D25
-0x9238 = 0x7D26
-0x9239 = 0x7D27
-0x923A = 0x7D28
-0x923C = 0x7D29
-0x9240 = 0x7D2A
-0x9243 = 0x7D2B
-0x924F = 0x7D2C
-0x9278 = 0x7D2D
-0x9288 = 0x7D2E
-0x92C2 = 0x7D2F
-0x92CB = 0x7D30
-0x92CC = 0x7D31
-0x92D3 = 0x7D32
-0x92E0 = 0x7D33
-0x92FF = 0x7D34
-0x9304 = 0x7D35
-0x931F = 0x7D36
-0x9321 = 0x7D37
-0x9325 = 0x7D38
-0x9348 = 0x7D39
-0x9349 = 0x7D3A
-0x934A = 0x7D3B
-0x9364 = 0x7D3C
-0x9365 = 0x7D3D
-0x936A = 0x7D3E
-0x9370 = 0x7D3F
-0x939B = 0x7D40
-0x93A3 = 0x7D41
-0x93BA = 0x7D42
-0x93C6 = 0x7D43
-0x93DE = 0x7D44
-0x93DF = 0x7D45
-0x93FD = 0x7D47
-0x9404 = 0x7D46
-0x9433 = 0x7D48
-0x944A = 0x7D49
-0x9463 = 0x7D4A
-0x946B = 0x7D4B
-0x9471 = 0x7D4C
-0x9472 = 0x7D4D
-0x958E = 0x7D4E
-0x959F = 0x7D4F
-0x95A6 = 0x7D50
-0x95A9 = 0x7D51
-0x95AC = 0x7D52
-0x95B6 = 0x7D53
-0x95BD = 0x7D54
-0x95CB = 0x7D55
-0x95D0 = 0x7D56
-0x95D3 = 0x7D57
-0x95DA = 0x7D59
-0x95DE = 0x7D5A
-0x9658 = 0x7D5B
-0x9684 = 0x7D5C
-0x969D = 0x7D5E
-0x96A4 = 0x7D5F
-0x96A5 = 0x7D60
-0x96D2 = 0x7D61
-0x96DE = 0x7D62
-0x96E9 = 0x7D64
-0x96EF = 0x7D65
-0x9733 = 0x7D66
-0x973B = 0x7D67
-0x974D = 0x7D68
-0x974E = 0x7D69
-0x974F = 0x7D6A
-0x975A = 0x7D6B
-0x976E = 0x7D6C
-0x9773 = 0x7D6D
-0x9795 = 0x7D6E
-0x97AE = 0x7D6F
-0x97BA = 0x7D70
-0x97C1 = 0x7D71
-0x97C9 = 0x7D72
-0x97DB = 0x7D74
-0x97DE = 0x7D73
-0x97F4 = 0x7D75
-0x980A = 0x7D77
-0x981E = 0x7D78
-0x982B = 0x7D79
-0x9830 = 0x7D7A
-0x9852 = 0x7D7C
-0x9853 = 0x7D7D
-0x9856 = 0x7D7E
-0x9857 = 0x7E21
-0x9859 = 0x7E22
-0x985A = 0x7E23
-0x9865 = 0x7E25
-0x986C = 0x7E26
-0x98BA = 0x7E27
-0x98C8 = 0x7E28
-0x98E7 = 0x7E29
-0x9958 = 0x7E2A
-0x999E = 0x7E2B
-0x9A02 = 0x7E2C
-0x9A03 = 0x7E2D
-0x9A24 = 0x7E2E
-0x9A2D = 0x7E2F
-0x9A2E = 0x7E30
-0x9A38 = 0x7E31
-0x9A4A = 0x7E32
-0x9A4E = 0x7E33
-0x9A52 = 0x7E34
-0x9AB6 = 0x7E35
-0x9AC1 = 0x7E36
-0x9AC3 = 0x7E37
-0x9ACE = 0x7E38
-0x9AD6 = 0x7E39
-0x9AF9 = 0x7E3A
-0x9B02 = 0x7E3B
-0x9B08 = 0x7E3C
-0x9B20 = 0x7E3D
-0x9B2D = 0x7E3F
-0x9B5E = 0x7E40
-0x9B66 = 0x7E42
-0x9B72 = 0x7E43
-0x9B75 = 0x7E44
-0x9B79 = 0x7E41
-0x9B84 = 0x7E45
-0x9B8A = 0x7E46
-0x9B8F = 0x7E47
-0x9B9E = 0x7E48
-0x9BA7 = 0x7E49
-0x9BC1 = 0x7E4A
-0x9BCE = 0x7E4B
-0x9BE5 = 0x7E4C
-0x9BF8 = 0x7E4D
-0x9BFD = 0x7E4E
-0x9C00 = 0x7E4F
-0x9C23 = 0x7E50
-0x9C41 = 0x7E51
-0x9C4F = 0x7E52
-0x9C50 = 0x7E53
-0x9C53 = 0x7E54
-0x9C63 = 0x7E55
-0x9C65 = 0x7E56
-0x9C77 = 0x7E57
-0x9D1D = 0x7E58
-0x9D1E = 0x7E59
-0x9D43 = 0x7E5A
-0x9D47 = 0x7E5B
-0x9D52 = 0x7E5C
-0x9D63 = 0x7E5D
-0x9D70 = 0x7E5E
-0x9D7C = 0x7E5F
-0x9D8A = 0x7E60
-0x9D96 = 0x7E61
-0x9DAC = 0x7E63
-0x9DBC = 0x7E64
-0x9DC0 = 0x7E62
-0x9DD7 = 0x7E65
-0x9DE7 = 0x7E67
-0x9E07 = 0x7E68
-0x9E15 = 0x7E69
-0x9E7C = 0x7E6A
-0x9E9E = 0x7E6B
-0x9EA4 = 0x7E6C
-0x9EAC = 0x7E6D
-0x9EAF = 0x7E6E
-0x9EB4 = 0x7E6F
-0x9EB5 = 0x7E70
-0x9EC3 = 0x7E71
-0x9ED1 = 0x7E72
-0x9F10 = 0x7E73
-0x9F39 = 0x7E74
-0x9F57 = 0x7E75
-0x9F90 = 0x7E76
-0x9F94 = 0x7E77
-0x9F97 = 0x7E78
-0x9FA2 = 0x7E79
-0xF91D = 0x763B
-0xF928 = 0x742E
-0xF929 = 0x754E
-0xF936 = 0x7B4F
-0xF970 = 0x7649
-0xF9D0 = 0x7E24
-0xF9DC = 0x7D5D
-0xFA0F = 0x2F4B
-0xFA10 = 0x2F57
-0xFA11 = 0x4F72
-0xFA14 = 0x757A
-0xFA15 = 0x775A
-0xFA16 = 0x776F
-0xFA19 = 0x793C
-0xFA1A = 0x793D
-0xFA1B = 0x7941
-0xFA1F = 0x7B3A
-0xFA22 = 0x7C2E
-0xFA26 = 0x7C6A
-0xFA30 = 0x2E38
-0xFA31 = 0x2E49
-0xFA32 = 0x2E50
-0xFA33 = 0x2E63
-0xFA34 = 0x2E68
-0xFA35 = 0x2E6E
-0xFA36 = 0x2F2C
-0xFA37 = 0x2F2F
-0xFA38 = 0x2F36
-0xFA39 = 0x2F5A
-0xFA3A = 0x2F5E
-0xFA3B = 0x4F61
-0xFA3C = 0x4F62
-0xFA3D = 0x7450
-0xFA3E = 0x745C
-0xFA3F = 0x745E
-0xFA40 = 0x7461
-0xFA41 = 0x7528
-0xFA42 = 0x752B
-0xFA43 = 0x7543
-0xFA44 = 0x7565
-0xFA45 = 0x7669
-0xFA46 = 0x7677
-0xFA47 = 0x7725
-0xFA48 = 0x7755
-0xFA4A = 0x7825
-0xFA4B = 0x7927
-0xFA4C = 0x7933
-0xFA4D = 0x7934
-0xFA4E = 0x7937
-0xFA4F = 0x7938
-0xFA50 = 0x7939
-0xFA51 = 0x793B
-0xFA52 = 0x793F
-0xFA53 = 0x7940
-0xFA54 = 0x794D
-0xFA55 = 0x7951
-0xFA56 = 0x7964
-0xFA57 = 0x7A2E
-0xFA59 = 0x7A33
-0xFA5A = 0x7A3A
-0xFA5B = 0x7A44
-0xFA5C = 0x7A58
-0xFA5F = 0x7B27
-0xFA60 = 0x7B6F
-0xFA61 = 0x7B79
-0xFA62 = 0x7C2F
-0xFA63 = 0x7C30
-0xFA64 = 0x7C38
-0xFA65 = 0x7C3D
-0xFA67 = 0x7C59
-0xFA68 = 0x7D63
-0xFA69 = 0x7D76
-0xFA6A = 0x7D7B
-0xFE45 = 0x233E
-0xFE46 = 0x233D
-0xFF02 = 0x2230 # 0x0022
-0xFF07 = 0x222F # 0x0027
-0xFF0D = 0x2231 # 0x002D
-0xFF5E = 0x2232 # 0x007E
-0xFF5F = 0x2256
-0xFF60 = 0x2257
-END_MAP
diff --git a/enc/trans/JIS/UCS@BMP%JISX0213-2.src b/enc/trans/JIS/UCS@BMP%JISX0213-2.src
deleted file mode 100644
index ba53d7d72f..0000000000
--- a/enc/trans/JIS/UCS@BMP%JISX0213-2.src
+++ /dev/null
@@ -1,2189 +0,0 @@
-# $NetBSD: UCS@BMP%JISX0213-2.src,v 1.1 2007/03/05 16:58:33 tnozaki Exp $
-
-TYPE ROWCOL
-NAME "UCS:BMP/JISX0213-2"
-SRC_ZONE 0x3406 - 0xFA66
-OOB_MODE INVALID
-DST_INVALID 0xFFFF
-DST_UNIT_BITS 16
-
-BEGIN_MAP
-## Shift_JIS-2004 (JIS X 0213:2004) vs Unicode mapping table
-##
-## Date: 12 Feb 2005 10:15:00 GMT
-## License:
-## Copyright (C) 2001 earthian@tama.or.jp, All Rights Reserved.
-## Copyright (C) 2001 I'O, All Rights Reserved.
-## You can use, modify, distribute this table freely.
-## Note:
-## [1983] JIS codepoint defined by JIS X 0208-1983
-## [1990] JIS codepoint defined by JIS X 0208-1990
-## [2000] JIS codepoint defined by JIS X 0213:2000
-## [2004] JIS codepoint defined by JIS X 0213:2004
-## [Unicode3.1] UCS codepoint defined by Unicode 3.1
-## [Unicode3.2] UCS codepoint defined by Unicode 3.2
-## Fullwidth UCS fullwidth form (U+Fxxx)
-## Windows Windows (CP932) mapping
-## Some 0213 character can't represent by one UCS character.
-## In this table, such characters are described as 'U+xxxx+xxxx'.
-##
-0x3406 = 0x212D
-0x342C = 0x2132
-0x342E = 0x2133
-0x3468 = 0x215E
-0x346A = 0x2156
-0x3492 = 0x217E
-0x34BC = 0x232B
-0x34C1 = 0x7468
-0x34C7 = 0x232F
-0x351F = 0x2348
-0x355D = 0x235D
-0x355E = 0x235E
-0x3563 = 0x2361
-0x356E = 0x2367
-0x35A6 = 0x2423
-0x35A8 = 0x2426
-0x35C5 = 0x242F
-0x35DA = 0x2438
-0x35F4 = 0x2442
-0x3605 = 0x244A
-0x364A = 0x2479
-0x3691 = 0x253F
-0x3696 = 0x2543
-0x3699 = 0x2541
-0x36CF = 0x2557
-0x3761 = 0x2823
-0x3762 = 0x2825
-0x376B = 0x2829
-0x376C = 0x2828
-0x3775 = 0x282C
-0x37C1 = 0x283E
-0x37E8 = 0x2856
-0x37F4 = 0x2859
-0x37FD = 0x285C
-0x3800 = 0x285E
-0x382F = 0x286F
-0x3836 = 0x2871
-0x3840 = 0x2874
-0x385C = 0x2879
-0x3861 = 0x287B
-0x38FA = 0x2C3B
-0x3917 = 0x2C46
-0x391A = 0x2C4A
-0x396F = 0x2C60
-0x3A6E = 0x2D5B
-0x3A73 = 0x2D5F
-0x3AD6 = 0x2D71
-0x3AD7 = 0x2E36
-0x3AEA = 0x2D7C
-0x3B0E = 0x2E2E
-0x3B1A = 0x2E32
-0x3B1C = 0x2E34
-0x3B6D = 0x2E6D
-0x3B77 = 0x2E65
-0x3B87 = 0x2F28
-0x3B88 = 0x2F29
-0x3B8D = 0x2F2C
-0x3BA4 = 0x2F34
-0x3BCD = 0x2F48
-0x3BF0 = 0x2F5D
-0x3C26 = 0x2F77
-0x3CC3 = 0x6E3B
-0x3CD2 = 0x6E42
-0x3D11 = 0x6E71
-0x3D1E = 0x6E7E
-0x3D64 = 0x6F40
-0x3D9A = 0x6F54
-0x3DC0 = 0x6F70
-0x3DD4 = 0x6F77
-0x3E05 = 0x7028
-0x3E60 = 0x703F
-0x3E66 = 0x7041
-0x3E68 = 0x7042
-0x3E83 = 0x7049
-0x3E94 = 0x7050
-0x3F57 = 0x7134
-0x3F75 = 0x7146
-0x3F77 = 0x7148
-0x3FAE = 0x715C
-0x3FC9 = 0x7167
-0x3FD7 = 0x716C
-0x4039 = 0x7222
-0x4058 = 0x722D
-0x4093 = 0x7239
-0x4105 = 0x7264
-0x4148 = 0x7274
-0x414F = 0x7277
-0x4163 = 0x727D
-0x41B4 = 0x7333
-0x41BF = 0x7337
-0x41E6 = 0x7347
-0x41EE = 0x734B
-0x41F3 = 0x7348
-0x4207 = 0x7353
-0x420E = 0x7357
-0x42C6 = 0x742B
-0x42D6 = 0x7436
-0x42DD = 0x743B
-0x4302 = 0x744E
-0x432B = 0x745D
-0x4343 = 0x7461
-0x43EE = 0x753E
-0x43F0 = 0x7542
-0x4408 = 0x7548
-0x4417 = 0x754A
-0x441C = 0x754C
-0x4422 = 0x754F
-0x4476 = 0x756C
-0x447A = 0x756E
-0x4491 = 0x7577
-0x44B3 = 0x7635
-0x44BE = 0x7632
-0x44D4 = 0x7634
-0x4508 = 0x7659
-0x450D = 0x7654
-0x4525 = 0x766D
-0x4543 = 0x766E
-0x45B8 = 0x774F
-0x45E5 = 0x776C
-0x460F = 0x7824
-0x4641 = 0x783A
-0x4665 = 0x7843
-0x46A1 = 0x784E
-0x46AF = 0x7853
-0x470C = 0x786B
-0x4764 = 0x7929
-0x47FD = 0x793F
-0x4816 = 0x7949
-0x484E = 0x795C
-0x48B5 = 0x7A27
-0x49E7 = 0x7B6A
-0x49FA = 0x7B70
-0x4A04 = 0x7B75
-0x4A29 = 0x7B78
-0x4ABC = 0x7C37
-0x4B3B = 0x7C55
-0x4BC2 = 0x7D26
-0x4BCA = 0x7D28
-0x4BD2 = 0x7D2A
-0x4BE8 = 0x7D31
-0x4C20 = 0x7D3F
-0x4CC4 = 0x7E2A
-0x4CD1 = 0x7E2D
-0x4D07 = 0x7E4B
-0x4D77 = 0x7E60
-0x4E02 = 0x2122
-0x4E0F = 0x2123
-0x4E12 = 0x2124
-0x4E29 = 0x2125
-0x4E2B = 0x2126
-0x4E2C = 0x702E
-0x4E2E = 0x2127
-0x4E40 = 0x2128
-0x4E47 = 0x2129
-0x4E48 = 0x212A
-0x4E51 = 0x212C
-0x4E5A = 0x212F
-0x4E69 = 0x2130
-0x4E9D = 0x2131
-0x4EB9 = 0x2134
-0x4EBB = 0x2135
-0x4EBC = 0x2137
-0x4EC3 = 0x2138
-0x4EC8 = 0x2139
-0x4ED0 = 0x213A
-0x4EDA = 0x213C
-0x4EEB = 0x213B
-0x4EF1 = 0x213D
-0x4EF5 = 0x213E
-0x4F00 = 0x213F
-0x4F16 = 0x2140
-0x4F37 = 0x2142
-0x4F3E = 0x2143
-0x4F54 = 0x2144
-0x4F58 = 0x2145
-0x4F64 = 0x2141
-0x4F77 = 0x2147
-0x4F78 = 0x2148
-0x4F7A = 0x2149
-0x4F7D = 0x214A
-0x4F82 = 0x214B
-0x4F85 = 0x214C
-0x4F92 = 0x214D
-0x4F9A = 0x214E
-0x4FB2 = 0x2150
-0x4FBE = 0x2151
-0x4FC5 = 0x2152
-0x4FCB = 0x2153
-0x4FCF = 0x2154
-0x4FD2 = 0x2155
-0x4FE6 = 0x214F
-0x4FF2 = 0x2157
-0x5000 = 0x2158
-0x5010 = 0x2159
-0x5013 = 0x215A
-0x501C = 0x215B
-0x501E = 0x215C
-0x5022 = 0x215D
-0x5042 = 0x215F
-0x5046 = 0x2160
-0x504E = 0x2161
-0x5053 = 0x2162
-0x5057 = 0x2163
-0x5063 = 0x2164
-0x5066 = 0x2165
-0x506A = 0x2166
-0x5070 = 0x2167
-0x5088 = 0x2169
-0x5092 = 0x216A
-0x5093 = 0x216B
-0x5095 = 0x216C
-0x5096 = 0x216D
-0x509C = 0x216E
-0x50A3 = 0x2168
-0x50AA = 0x216F
-0x50B1 = 0x2171
-0x50BA = 0x2172
-0x50BB = 0x2173
-0x50C4 = 0x2174
-0x50C7 = 0x2175
-0x50CE = 0x2178
-0x50D4 = 0x217A
-0x50D9 = 0x217B
-0x50E1 = 0x217C
-0x50E9 = 0x217D
-0x50F3 = 0x2176
-0x5108 = 0x2321
-0x5117 = 0x2323
-0x511B = 0x2324
-0x5160 = 0x2326
-0x5173 = 0x2328
-0x517B = 0x7474
-0x5183 = 0x2329
-0x518B = 0x232A
-0x5198 = 0x232C
-0x51A3 = 0x232D
-0x51AD = 0x232E
-0x51BC = 0x2330
-0x51F3 = 0x2333
-0x51F4 = 0x2334
-0x5202 = 0x2335
-0x5212 = 0x2336
-0x5216 = 0x2337
-0x5255 = 0x2339
-0x525C = 0x233A
-0x526C = 0x233B
-0x5277 = 0x233C
-0x5282 = 0x233E
-0x5284 = 0x233D
-0x5298 = 0x2340
-0x52A4 = 0x2342
-0x52A6 = 0x2343
-0x52AF = 0x2344
-0x52BA = 0x2345
-0x52BB = 0x2346
-0x52CA = 0x2347
-0x52D1 = 0x2349
-0x52F7 = 0x234B
-0x530A = 0x234C
-0x530B = 0x234D
-0x5324 = 0x234E
-0x5335 = 0x234F
-0x533E = 0x2350
-0x5342 = 0x2351
-0x5367 = 0x2354
-0x536C = 0x2355
-0x537A = 0x2356
-0x53A4 = 0x2357
-0x53B4 = 0x2358
-0x53B7 = 0x235A
-0x53C0 = 0x235B
-0x53D5 = 0x235F
-0x53DA = 0x2360
-0x53F4 = 0x2362
-0x53F5 = 0x2363
-0x5424 = 0x2365
-0x5428 = 0x2366
-0x5443 = 0x2368
-0x5455 = 0x2364
-0x5462 = 0x2369
-0x5466 = 0x236A
-0x546C = 0x236B
-0x548A = 0x236C
-0x548D = 0x236D
-0x5495 = 0x236E
-0x54A0 = 0x236F
-0x54A6 = 0x2370
-0x54AD = 0x2371
-0x54AE = 0x2372
-0x54B7 = 0x2373
-0x54BA = 0x2374
-0x54BF = 0x2375
-0x54C3 = 0x2376
-0x54EC = 0x2378
-0x54EF = 0x2379
-0x54F1 = 0x237A
-0x54F3 = 0x237B
-0x5500 = 0x237C
-0x5501 = 0x237D
-0x5509 = 0x237E
-0x553C = 0x2421
-0x5541 = 0x2422
-0x5547 = 0x2424
-0x554A = 0x2425
-0x5560 = 0x2427
-0x5561 = 0x2428
-0x5564 = 0x2429
-0x557D = 0x242B
-0x5582 = 0x242C
-0x5588 = 0x242D
-0x5591 = 0x242E
-0x55BF = 0x2433
-0x55C9 = 0x2434
-0x55CC = 0x2435
-0x55D1 = 0x2436
-0x55D2 = 0x2430
-0x55DD = 0x2437
-0x55E2 = 0x2439
-0x55E9 = 0x243B
-0x5607 = 0x243E
-0x5610 = 0x243F
-0x5628 = 0x243C
-0x5630 = 0x2440
-0x5637 = 0x2441
-0x563D = 0x2443
-0x563F = 0x2444
-0x5640 = 0x2445
-0x5647 = 0x2446
-0x565E = 0x2447
-0x5660 = 0x2448
-0x566D = 0x2449
-0x5688 = 0x244B
-0x568C = 0x244C
-0x5695 = 0x244D
-0x569A = 0x244E
-0x569D = 0x244F
-0x56A8 = 0x2450
-0x56AD = 0x2451
-0x56B2 = 0x2452
-0x56C5 = 0x2453
-0x56CD = 0x2454
-0x56DF = 0x2455
-0x56E8 = 0x2456
-0x56F6 = 0x2457
-0x56F7 = 0x2458
-0x5715 = 0x245A
-0x5723 = 0x245B
-0x5729 = 0x245D
-0x5745 = 0x245F
-0x5746 = 0x2460
-0x574C = 0x2461
-0x574D = 0x2462
-0x5768 = 0x2464
-0x576F = 0x2465
-0x5773 = 0x2466
-0x5774 = 0x2467
-0x5775 = 0x2468
-0x577B = 0x2469
-0x579A = 0x246D
-0x579D = 0x246E
-0x579E = 0x246F
-0x57A8 = 0x2470
-0x57AC = 0x246C
-0x57CC = 0x2473
-0x57D7 = 0x2471
-0x57DE = 0x2476
-0x57E6 = 0x2477
-0x57F0 = 0x2478
-0x57F8 = 0x247A
-0x57FB = 0x247B
-0x57FD = 0x247C
-0x5804 = 0x247D
-0x581E = 0x247E
-0x5820 = 0x2521
-0x5827 = 0x2522
-0x5832 = 0x2523
-0x5839 = 0x2524
-0x5849 = 0x2526
-0x584C = 0x2527
-0x5867 = 0x2528
-0x588A = 0x2529
-0x588B = 0x252A
-0x588D = 0x252B
-0x588F = 0x252C
-0x5890 = 0x252D
-0x5894 = 0x252E
-0x589D = 0x252F
-0x58AA = 0x2530
-0x58B1 = 0x2531
-0x58C3 = 0x2533
-0x58CD = 0x2534
-0x58E2 = 0x2535
-0x58F3 = 0x2536
-0x58F4 = 0x2537
-0x5905 = 0x2538
-0x5906 = 0x2539
-0x590B = 0x253A
-0x590D = 0x253B
-0x5914 = 0x253C
-0x5924 = 0x253D
-0x593D = 0x2540
-0x5946 = 0x2542
-0x595B = 0x2545
-0x595F = 0x2546
-0x5975 = 0x2548
-0x5976 = 0x2549
-0x597C = 0x254A
-0x599F = 0x254B
-0x59AE = 0x254C
-0x59BC = 0x254D
-0x59C8 = 0x254E
-0x59CD = 0x254F
-0x59DE = 0x2550
-0x59E3 = 0x2551
-0x59E4 = 0x2552
-0x59E7 = 0x2553
-0x59EE = 0x2554
-0x5A0C = 0x2558
-0x5A0D = 0x2559
-0x5A17 = 0x255A
-0x5A27 = 0x255B
-0x5A2D = 0x255C
-0x5A55 = 0x255D
-0x5A65 = 0x255E
-0x5A7A = 0x255F
-0x5A8B = 0x2560
-0x5A9C = 0x2561
-0x5A9F = 0x2562
-0x5AA0 = 0x2563
-0x5AA2 = 0x2564
-0x5AB1 = 0x2565
-0x5AB3 = 0x2566
-0x5AB5 = 0x2567
-0x5ABA = 0x2568
-0x5ABF = 0x2569
-0x5ADA = 0x256A
-0x5ADC = 0x256B
-0x5AE0 = 0x256C
-0x5AE5 = 0x256D
-0x5AEE = 0x256F
-0x5AF0 = 0x256E
-0x5AF5 = 0x2570
-0x5B00 = 0x2571
-0x5B08 = 0x2572
-0x5B17 = 0x2573
-0x5B2D = 0x2575
-0x5B34 = 0x2574
-0x5B4C = 0x2576
-0x5B52 = 0x2577
-0x5B68 = 0x2578
-0x5B6F = 0x2579
-0x5B7C = 0x257A
-0x5B7F = 0x257B
-0x5B81 = 0x257C
-0x5B84 = 0x257D
-0x5B96 = 0x2821
-0x5BAC = 0x2822
-0x5BC0 = 0x2824
-0x5BCE = 0x2826
-0x5BD6 = 0x2827
-0x5BF1 = 0x282A
-0x5BFD = 0x282B
-0x5C03 = 0x282D
-0x5C29 = 0x282E
-0x5C30 = 0x282F
-0x5C5F = 0x2831
-0x5C63 = 0x2832
-0x5C67 = 0x2833
-0x5C68 = 0x2834
-0x5C69 = 0x2835
-0x5C70 = 0x2836
-0x5C7C = 0x2839
-0x5C88 = 0x283C
-0x5C8A = 0x283D
-0x5CA0 = 0x2841
-0x5CA2 = 0x2842
-0x5CA6 = 0x2843
-0x5CA7 = 0x2844
-0x5CAD = 0x2846
-0x5CB5 = 0x2847
-0x5CC9 = 0x2849
-0x5D06 = 0x284C
-0x5D10 = 0x284D
-0x5D1D = 0x284F
-0x5D20 = 0x2850
-0x5D24 = 0x2851
-0x5D26 = 0x2852
-0x5D2B = 0x284E
-0x5D31 = 0x2853
-0x5D39 = 0x2854
-0x5D42 = 0x2855
-0x5D61 = 0x2857
-0x5D6A = 0x2858
-0x5D70 = 0x285A
-0x5D88 = 0x285D
-0x5D92 = 0x285F
-0x5D94 = 0x2860
-0x5D97 = 0x2861
-0x5D99 = 0x2862
-0x5DB0 = 0x2863
-0x5DB2 = 0x2864
-0x5DB4 = 0x2865
-0x5DB9 = 0x2867
-0x5DD1 = 0x2868
-0x5DD7 = 0x2869
-0x5DD8 = 0x286A
-0x5DE0 = 0x286B
-0x5DE4 = 0x286D
-0x5DE9 = 0x286E
-0x5E00 = 0x2870
-0x5E12 = 0x2872
-0x5E15 = 0x2873
-0x5E1F = 0x2875
-0x5E2E = 0x2876
-0x5E3E = 0x2877
-0x5E49 = 0x2878
-0x5E56 = 0x287A
-0x5E6B = 0x287C
-0x5E6C = 0x287D
-0x5E6D = 0x287E
-0x5E6E = 0x2C21
-0x5EA5 = 0x2C23
-0x5EAA = 0x2C24
-0x5EAC = 0x2C25
-0x5EB9 = 0x2C26
-0x5EBF = 0x2C27
-0x5EC6 = 0x2C28
-0x5ED2 = 0x2C29
-0x5ED9 = 0x2C2A
-0x5EFD = 0x2C2C
-0x5F08 = 0x2C2D
-0x5F0E = 0x2C2E
-0x5F1C = 0x2C2F
-0x5F1E = 0x2C31
-0x5F47 = 0x2C32
-0x5F63 = 0x2C33
-0x5F72 = 0x2C34
-0x5F7E = 0x2C35
-0x5F8F = 0x2C36
-0x5FA2 = 0x2C37
-0x5FA4 = 0x2C38
-0x5FB8 = 0x2C39
-0x5FC4 = 0x2C3A
-0x5FC7 = 0x2C3C
-0x5FCB = 0x2C3D
-0x5FD2 = 0x2C3E
-0x5FD3 = 0x2C3F
-0x5FD4 = 0x2C40
-0x5FE2 = 0x2C41
-0x5FEE = 0x2C42
-0x5FEF = 0x2C43
-0x5FF3 = 0x2C44
-0x5FFC = 0x2C45
-0x6017 = 0x2C47
-0x6022 = 0x2C48
-0x6024 = 0x2C49
-0x604C = 0x2C4B
-0x607F = 0x2C4C
-0x608A = 0x2C4D
-0x6095 = 0x2C4E
-0x60A8 = 0x2C4F
-0x60B0 = 0x2C51
-0x60B1 = 0x2C52
-0x60BE = 0x2C53
-0x60C8 = 0x2C54
-0x60D9 = 0x2C55
-0x60DB = 0x2C56
-0x60EE = 0x2C57
-0x60F2 = 0x2C58
-0x60F5 = 0x2C59
-0x6110 = 0x2C5A
-0x6112 = 0x2C5B
-0x6113 = 0x2C5C
-0x6119 = 0x2C5D
-0x611E = 0x2C5E
-0x613A = 0x2C5F
-0x6141 = 0x2C61
-0x6146 = 0x2C62
-0x6160 = 0x2C63
-0x617C = 0x2C64
-0x6192 = 0x2C66
-0x6193 = 0x2C67
-0x6197 = 0x2C68
-0x6198 = 0x2C69
-0x61A5 = 0x2C6A
-0x61A8 = 0x2C6B
-0x61AD = 0x2C6C
-0x61D5 = 0x2C6E
-0x61DD = 0x2C6F
-0x61DF = 0x2C70
-0x61F5 = 0x2C71
-0x6215 = 0x2C73
-0x6223 = 0x2C74
-0x6229 = 0x2C75
-0x6246 = 0x2C76
-0x624C = 0x2C77
-0x6251 = 0x2C78
-0x6252 = 0x2C79
-0x6261 = 0x2C7A
-0x6264 = 0x2C7B
-0x626D = 0x2C7D
-0x6273 = 0x2C7E
-0x627B = 0x2C7C
-0x6299 = 0x2D21
-0x62A6 = 0x2D22
-0x62D5 = 0x2D23
-0x62FD = 0x2D25
-0x6303 = 0x2D26
-0x630D = 0x2D27
-0x6310 = 0x2D28
-0x6332 = 0x2D2B
-0x6335 = 0x2D2C
-0x633B = 0x2D2D
-0x633C = 0x2D2E
-0x6341 = 0x2D2F
-0x6344 = 0x2D30
-0x634E = 0x2D31
-0x6359 = 0x2D33
-0x636C = 0x2D36
-0x6384 = 0x2D37
-0x6394 = 0x2D3A
-0x6399 = 0x2D38
-0x63BD = 0x2D3B
-0x63D4 = 0x2D3D
-0x63D5 = 0x2D3E
-0x63DC = 0x2D3F
-0x63E0 = 0x2D40
-0x63EB = 0x2D41
-0x63EC = 0x2D42
-0x63F2 = 0x2D43
-0x63F7 = 0x2D3C
-0x6409 = 0x2D44
-0x641E = 0x2D45
-0x6425 = 0x2D46
-0x6429 = 0x2D47
-0x642F = 0x2D48
-0x645A = 0x2D49
-0x645B = 0x2D4A
-0x645D = 0x2D4B
-0x6473 = 0x2D4C
-0x647D = 0x2D4D
-0x6487 = 0x2D4E
-0x6491 = 0x2D4F
-0x649D = 0x2D50
-0x649F = 0x2D51
-0x64CB = 0x2D52
-0x64CC = 0x2D53
-0x64D5 = 0x2D54
-0x64D7 = 0x2D55
-0x64E4 = 0x2D57
-0x64E5 = 0x2D58
-0x64FF = 0x2D59
-0x6504 = 0x2D5A
-0x650F = 0x2D5C
-0x6514 = 0x2D5D
-0x6516 = 0x2D5E
-0x651E = 0x2D60
-0x6532 = 0x2D61
-0x6544 = 0x2D62
-0x6554 = 0x2D63
-0x656B = 0x2D64
-0x657A = 0x2D65
-0x6581 = 0x2D66
-0x6584 = 0x2D67
-0x6585 = 0x2D68
-0x658A = 0x2D69
-0x65B2 = 0x2D6A
-0x65B5 = 0x2D6B
-0x65B8 = 0x2D6C
-0x65BF = 0x2D6D
-0x65C2 = 0x2D6E
-0x65C9 = 0x2D6F
-0x65D4 = 0x2D70
-0x65F2 = 0x2D72
-0x65F9 = 0x2D73
-0x65FC = 0x2D74
-0x6604 = 0x2D75
-0x6608 = 0x2D76
-0x6621 = 0x2D77
-0x662A = 0x2D78
-0x6645 = 0x2D79
-0x664E = 0x2D7B
-0x6651 = 0x2D7A
-0x6657 = 0x2D7E
-0x665B = 0x2E21
-0x6663 = 0x2E22
-0x666A = 0x2E25
-0x666B = 0x2E26
-0x666C = 0x2E27
-0x666D = 0x2E28
-0x667B = 0x2E29
-0x6680 = 0x2E2A
-0x6690 = 0x2E2B
-0x6692 = 0x2E2C
-0x6699 = 0x2E2D
-0x66AD = 0x2E2F
-0x66B1 = 0x2E30
-0x66B5 = 0x2E31
-0x66BF = 0x2E33
-0x66EC = 0x2E35
-0x6701 = 0x2E37
-0x6705 = 0x2E38
-0x6712 = 0x2E39
-0x6719 = 0x2E3B
-0x674C = 0x2E3E
-0x674D = 0x2E3F
-0x6754 = 0x2E40
-0x675D = 0x2E41
-0x6774 = 0x2E45
-0x6776 = 0x2E46
-0x6792 = 0x2E48
-0x67B0 = 0x2E4C
-0x67B2 = 0x2E4D
-0x67C3 = 0x2E4E
-0x67C8 = 0x2E4F
-0x67D2 = 0x2E50
-0x67D9 = 0x2E51
-0x67DB = 0x2E52
-0x67F0 = 0x2E53
-0x67F7 = 0x2E54
-0x6810 = 0x2E4B
-0x6818 = 0x2E58
-0x681F = 0x2E59
-0x682D = 0x2E5A
-0x6833 = 0x2E5C
-0x683B = 0x2E5D
-0x683E = 0x2E5E
-0x6844 = 0x2E5F
-0x6845 = 0x2E60
-0x6849 = 0x2E61
-0x684C = 0x2E62
-0x6855 = 0x2E63
-0x6857 = 0x2E64
-0x686B = 0x2E66
-0x686E = 0x2E67
-0x687A = 0x2E68
-0x687C = 0x2E69
-0x6882 = 0x2E6A
-0x6890 = 0x2E6B
-0x6896 = 0x2E6C
-0x6898 = 0x2E6E
-0x6899 = 0x2E6F
-0x689A = 0x2E70
-0x689C = 0x2E71
-0x68AA = 0x2E72
-0x68AB = 0x2E73
-0x68B4 = 0x2E74
-0x68BB = 0x2E75
-0x68C3 = 0x2E7A
-0x68C5 = 0x2E7B
-0x68CC = 0x2E7C
-0x68CF = 0x2E7D
-0x68D6 = 0x2E7E
-0x68D9 = 0x2F21
-0x68E4 = 0x2F22
-0x68E5 = 0x2F23
-0x68EC = 0x2F24
-0x68F7 = 0x2F25
-0x68FB = 0x2E76
-0x6903 = 0x2F26
-0x6907 = 0x2F27
-0x693B = 0x2F2B
-0x6946 = 0x2F2D
-0x6969 = 0x2F2E
-0x696C = 0x2F2F
-0x6972 = 0x2F30
-0x697A = 0x2F31
-0x697F = 0x2F32
-0x6992 = 0x2F33
-0x6996 = 0x2F35
-0x6998 = 0x2F36
-0x69A6 = 0x2F37
-0x69B0 = 0x2F38
-0x69B7 = 0x2F39
-0x69BA = 0x2F3A
-0x69BC = 0x2F3B
-0x69C0 = 0x2F3C
-0x69D1 = 0x2F3D
-0x69D6 = 0x2F3E
-0x69E3 = 0x2F44
-0x69EE = 0x2F45
-0x69EF = 0x2F46
-0x69F3 = 0x2F47
-0x69F4 = 0x2F49
-0x69FE = 0x2F4A
-0x6A11 = 0x2F4B
-0x6A1A = 0x2F4C
-0x6A1D = 0x2F4D
-0x6A30 = 0x2F41
-0x6A32 = 0x2F4F
-0x6A33 = 0x2F50
-0x6A34 = 0x2F51
-0x6A3F = 0x2F52
-0x6A46 = 0x2F53
-0x6A49 = 0x2F54
-0x6A4E = 0x2F56
-0x6A52 = 0x2F57
-0x6A64 = 0x2F58
-0x6A7A = 0x2F55
-0x6A7E = 0x2F5A
-0x6A83 = 0x2F5B
-0x6A8B = 0x2F5C
-0x6A91 = 0x2F5E
-0x6A9F = 0x2F5F
-0x6AA1 = 0x2F60
-0x6AAB = 0x2F62
-0x6ABD = 0x2F63
-0x6AC6 = 0x2F64
-0x6AD0 = 0x2F66
-0x6AD4 = 0x2F65
-0x6ADC = 0x2F67
-0x6ADD = 0x2F68
-0x6AEC = 0x2F6B
-0x6AF1 = 0x2F6C
-0x6AF2 = 0x2F6D
-0x6AF3 = 0x2F6E
-0x6AFD = 0x2F6F
-0x6B0B = 0x2F71
-0x6B0F = 0x2F72
-0x6B10 = 0x2F73
-0x6B11 = 0x2F74
-0x6B17 = 0x2F76
-0x6B2F = 0x2F78
-0x6B4A = 0x2F79
-0x6B58 = 0x2F7A
-0x6B6C = 0x2F7B
-0x6B75 = 0x2F7C
-0x6B7A = 0x2F7D
-0x6B81 = 0x2F7E
-0x6B9B = 0x6E21
-0x6BAE = 0x6E22
-0x6BBD = 0x6E24
-0x6BBE = 0x6E25
-0x6BC7 = 0x6E26
-0x6BC8 = 0x6E27
-0x6BC9 = 0x6E28
-0x6BDA = 0x6E29
-0x6BE6 = 0x6E2A
-0x6BE7 = 0x6E2B
-0x6BEE = 0x6E2C
-0x6BF1 = 0x6E2D
-0x6C02 = 0x6E2E
-0x6C0A = 0x6E2F
-0x6C0E = 0x6E30
-0x6C35 = 0x6E31
-0x6C36 = 0x6E32
-0x6C3A = 0x6E33
-0x6C3F = 0x6E35
-0x6C4D = 0x6E36
-0x6C5B = 0x6E37
-0x6C67 = 0x6E4F
-0x6C6D = 0x6E38
-0x6C84 = 0x6E39
-0x6C89 = 0x6E3A
-0x6C94 = 0x6E3C
-0x6C95 = 0x6E3D
-0x6C97 = 0x6E3E
-0x6CAD = 0x6E3F
-0x6CC2 = 0x6E40
-0x6CD0 = 0x6E41
-0x6CD6 = 0x6E43
-0x6CDA = 0x6E44
-0x6CDC = 0x6E45
-0x6CE9 = 0x6E46
-0x6CEC = 0x6E47
-0x6CED = 0x6E48
-0x6D00 = 0x6E4A
-0x6D0A = 0x6E4B
-0x6D24 = 0x6E4C
-0x6D26 = 0x6E4D
-0x6D27 = 0x6E4E
-0x6D2F = 0x6E50
-0x6D34 = 0x6E65
-0x6D3C = 0x6E51
-0x6D5B = 0x6E52
-0x6D5E = 0x6E53
-0x6D60 = 0x6E54
-0x6D70 = 0x6E55
-0x6D80 = 0x6E56
-0x6D81 = 0x6E57
-0x6D8A = 0x6E58
-0x6D8D = 0x6E59
-0x6D91 = 0x6E5A
-0x6D98 = 0x6E5B
-0x6DAB = 0x6E61
-0x6DAE = 0x6E62
-0x6DB4 = 0x6E63
-0x6DC2 = 0x6E64
-0x6DC8 = 0x6E66
-0x6DCE = 0x6E67
-0x6DCF = 0x6E68
-0x6DD0 = 0x6E69
-0x6DDF = 0x6E6A
-0x6DE9 = 0x6E6B
-0x6DF6 = 0x6E6C
-0x6E17 = 0x6E5D
-0x6E1E = 0x6E6E
-0x6E22 = 0x6E6F
-0x6E27 = 0x6E70
-0x6E32 = 0x6E72
-0x6E36 = 0x6E6D
-0x6E3C = 0x6E73
-0x6E48 = 0x6E74
-0x6E49 = 0x6E75
-0x6E4B = 0x6E76
-0x6E4C = 0x6E77
-0x6E4F = 0x6E78
-0x6E51 = 0x6E79
-0x6E53 = 0x6E7A
-0x6E54 = 0x6E7B
-0x6E57 = 0x6E7C
-0x6E63 = 0x6E7D
-0x6E93 = 0x6F21
-0x6EA7 = 0x6F22
-0x6EB4 = 0x6F23
-0x6EBF = 0x6F24
-0x6EC3 = 0x6F25
-0x6ECA = 0x6F26
-0x6ED9 = 0x6F27
-0x6EEB = 0x6F29
-0x6EF9 = 0x6F2A
-0x6EFB = 0x6F2B
-0x6F0A = 0x6F2C
-0x6F0C = 0x6F2D
-0x6F18 = 0x6F2E
-0x6F25 = 0x6F2F
-0x6F35 = 0x6F28
-0x6F36 = 0x6F30
-0x6F3C = 0x6F31
-0x6F52 = 0x6F33
-0x6F57 = 0x6F34
-0x6F5A = 0x6F35
-0x6F60 = 0x6F36
-0x6F68 = 0x6F37
-0x6F7D = 0x6F39
-0x6F90 = 0x6F3A
-0x6F96 = 0x6F3B
-0x6F98 = 0x6F38
-0x6F9F = 0x6F3D
-0x6FA5 = 0x6F3E
-0x6FAF = 0x6F3F
-0x6FB5 = 0x6F41
-0x6FBE = 0x6F3C
-0x6FC8 = 0x6F42
-0x6FC9 = 0x6F43
-0x6FDA = 0x6F44
-0x6FDE = 0x6F45
-0x6FE9 = 0x6F46
-0x6FFC = 0x6F48
-0x7000 = 0x6F49
-0x7007 = 0x6F4A
-0x700A = 0x6F4B
-0x7023 = 0x6F4C
-0x7039 = 0x6F4E
-0x703A = 0x6F4F
-0x703C = 0x6F50
-0x7043 = 0x6F51
-0x7047 = 0x6F52
-0x704B = 0x6F53
-0x7054 = 0x6F55
-0x7065 = 0x6F56
-0x7069 = 0x6F57
-0x706C = 0x6F58
-0x706E = 0x6F59
-0x7076 = 0x6F5A
-0x707E = 0x6F5B
-0x7081 = 0x6F5C
-0x7086 = 0x6F5D
-0x7095 = 0x6F5E
-0x7097 = 0x6F5F
-0x709F = 0x6F62
-0x70B1 = 0x6F63
-0x70BB = 0x6F60
-0x70CA = 0x6F66
-0x70D1 = 0x6F67
-0x70D3 = 0x6F68
-0x70DC = 0x6F69
-0x70EC = 0x6F65
-0x7103 = 0x6F6A
-0x7104 = 0x6F6B
-0x7106 = 0x6F6C
-0x7107 = 0x6F6D
-0x7108 = 0x6F6E
-0x710C = 0x6F6F
-0x712F = 0x6F71
-0x7131 = 0x6F72
-0x714A = 0x6F74
-0x7150 = 0x6F73
-0x7153 = 0x6F75
-0x715E = 0x6F76
-0x7180 = 0x6F79
-0x7196 = 0x6F78
-0x719B = 0x6F7A
-0x71A0 = 0x6F7B
-0x71A2 = 0x6F7C
-0x71AE = 0x6F7D
-0x71AF = 0x6F7E
-0x71B3 = 0x7021
-0x71CB = 0x7023
-0x71D3 = 0x7024
-0x71D9 = 0x7025
-0x71DC = 0x7026
-0x7207 = 0x7027
-0x722B = 0x702A
-0x7234 = 0x702B
-0x7238 = 0x702C
-0x7239 = 0x702D
-0x7242 = 0x702F
-0x7253 = 0x7030
-0x7257 = 0x7031
-0x7263 = 0x7032
-0x726E = 0x7034
-0x726F = 0x7035
-0x7278 = 0x7036
-0x727F = 0x7037
-0x728E = 0x7038
-0x72AD = 0x703A
-0x72AE = 0x703B
-0x72B0 = 0x703C
-0x72B1 = 0x703D
-0x72C1 = 0x703E
-0x72CC = 0x7040
-0x72F3 = 0x7043
-0x72FA = 0x7044
-0x7307 = 0x7045
-0x7312 = 0x7046
-0x7318 = 0x7047
-0x7319 = 0x7048
-0x732C = 0x704B
-0x7331 = 0x704C
-0x7333 = 0x704D
-0x7339 = 0x704A
-0x733D = 0x704E
-0x7352 = 0x704F
-0x736B = 0x7051
-0x736C = 0x7052
-0x736E = 0x7054
-0x736F = 0x7055
-0x7371 = 0x7056
-0x7377 = 0x7057
-0x7381 = 0x7058
-0x7385 = 0x7059
-0x738A = 0x705A
-0x7394 = 0x705B
-0x7398 = 0x705C
-0x739C = 0x705D
-0x739E = 0x705E
-0x73A5 = 0x705F
-0x73A8 = 0x7060
-0x73B5 = 0x7061
-0x73B7 = 0x7062
-0x73B9 = 0x7063
-0x73BC = 0x7064
-0x73BF = 0x7065
-0x73C5 = 0x7066
-0x73CB = 0x7067
-0x73E1 = 0x7068
-0x73E7 = 0x7069
-0x73F9 = 0x706A
-0x73FA = 0x706C
-0x7401 = 0x706D
-0x7413 = 0x706B
-0x7424 = 0x706E
-0x7431 = 0x706F
-0x7439 = 0x7070
-0x7440 = 0x7072
-0x7443 = 0x7073
-0x744D = 0x7074
-0x7452 = 0x7075
-0x7453 = 0x7071
-0x745D = 0x7076
-0x7471 = 0x7077
-0x7481 = 0x7078
-0x7485 = 0x7079
-0x7488 = 0x707A
-0x7492 = 0x707C
-0x7497 = 0x707D
-0x7499 = 0x707E
-0x74A0 = 0x7121
-0x74A1 = 0x7122
-0x74A5 = 0x7123
-0x74AA = 0x7124
-0x74AB = 0x7125
-0x74B9 = 0x7126
-0x74BA = 0x7128
-0x74BB = 0x7127
-0x74D6 = 0x7129
-0x74D8 = 0x712A
-0x74DE = 0x712B
-0x74EB = 0x712D
-0x74EF = 0x712C
-0x74FA = 0x712F
-0x7520 = 0x7131
-0x7524 = 0x7132
-0x752A = 0x7133
-0x753D = 0x7136
-0x753E = 0x7137
-0x7540 = 0x7138
-0x7548 = 0x7139
-0x754E = 0x713A
-0x7550 = 0x713B
-0x7552 = 0x713C
-0x756C = 0x713D
-0x7571 = 0x713F
-0x7572 = 0x713E
-0x757A = 0x7140
-0x757D = 0x7141
-0x757E = 0x7142
-0x7581 = 0x7143
-0x758C = 0x7145
-0x75A2 = 0x7147
-0x75B0 = 0x7149
-0x75B7 = 0x714A
-0x75BF = 0x714B
-0x75C0 = 0x714C
-0x75C6 = 0x714D
-0x75CF = 0x714E
-0x75D3 = 0x714F
-0x75DD = 0x7150
-0x75DF = 0x7151
-0x75E0 = 0x7152
-0x75E7 = 0x7153
-0x75EC = 0x7154
-0x75EE = 0x7155
-0x75F1 = 0x7156
-0x75F9 = 0x7157
-0x7603 = 0x7158
-0x7607 = 0x715A
-0x760F = 0x715B
-0x7613 = 0x715E
-0x7618 = 0x7159
-0x761B = 0x715F
-0x761C = 0x7160
-0x7625 = 0x7162
-0x7628 = 0x7163
-0x7633 = 0x7165
-0x763C = 0x7164
-0x7641 = 0x7168
-0x7649 = 0x716A
-0x7655 = 0x716B
-0x766E = 0x716D
-0x7695 = 0x716E
-0x769C = 0x716F
-0x76A0 = 0x7171
-0x76A1 = 0x7170
-0x76A7 = 0x7172
-0x76A8 = 0x7173
-0x76AF = 0x7174
-0x76C9 = 0x7176
-0x76E8 = 0x7178
-0x76EC = 0x7179
-0x7717 = 0x717B
-0x771A = 0x717C
-0x772D = 0x717D
-0x7735 = 0x717E
-0x7758 = 0x7225
-0x7760 = 0x7226
-0x776A = 0x7227
-0x7772 = 0x7229
-0x777C = 0x722A
-0x777D = 0x722B
-0x779A = 0x722E
-0x779F = 0x722F
-0x77A2 = 0x7230
-0x77A4 = 0x7231
-0x77A9 = 0x7232
-0x77DE = 0x7233
-0x77DF = 0x7234
-0x77E4 = 0x7235
-0x77E6 = 0x7236
-0x77EA = 0x7237
-0x77EC = 0x7238
-0x77F0 = 0x723A
-0x77F4 = 0x723B
-0x77FB = 0x723C
-0x7805 = 0x723E
-0x7806 = 0x723F
-0x7809 = 0x7240
-0x780D = 0x7241
-0x7819 = 0x7242
-0x7821 = 0x7243
-0x782C = 0x7244
-0x7847 = 0x7245
-0x7864 = 0x7246
-0x786A = 0x7247
-0x788A = 0x7249
-0x7894 = 0x724A
-0x789D = 0x724C
-0x789E = 0x724D
-0x789F = 0x724E
-0x78A4 = 0x724B
-0x78BB = 0x724F
-0x78C8 = 0x7250
-0x78CC = 0x7251
-0x78CE = 0x7252
-0x78D5 = 0x7253
-0x78E0 = 0x7254
-0x78E1 = 0x7255
-0x78E6 = 0x7256
-0x78F9 = 0x7257
-0x78FA = 0x7258
-0x78FB = 0x7259
-0x78FE = 0x725A
-0x7910 = 0x725C
-0x791B = 0x725D
-0x7925 = 0x725F
-0x7930 = 0x725E
-0x793B = 0x7260
-0x794A = 0x7261
-0x7958 = 0x7262
-0x795B = 0x7263
-0x7967 = 0x7265
-0x7972 = 0x7266
-0x7994 = 0x7267
-0x7995 = 0x7268
-0x7996 = 0x7269
-0x799B = 0x726A
-0x79A1 = 0x726B
-0x79A9 = 0x726C
-0x79B4 = 0x726D
-0x79BB = 0x726E
-0x79C2 = 0x726F
-0x79C7 = 0x7270
-0x79CC = 0x7271
-0x79CD = 0x7272
-0x79D6 = 0x7273
-0x7A0A = 0x7278
-0x7A11 = 0x7279
-0x7A15 = 0x727A
-0x7A1B = 0x727B
-0x7A1E = 0x727C
-0x7A2D = 0x727E
-0x7A38 = 0x7321
-0x7A47 = 0x7322
-0x7A4C = 0x7323
-0x7A56 = 0x7324
-0x7A59 = 0x7325
-0x7A5C = 0x7326
-0x7A5F = 0x7327
-0x7A60 = 0x7328
-0x7A67 = 0x7329
-0x7A6A = 0x732A
-0x7A75 = 0x732B
-0x7A78 = 0x732C
-0x7A82 = 0x732D
-0x7A8A = 0x732E
-0x7A90 = 0x732F
-0x7AA3 = 0x7330
-0x7AAC = 0x7331
-0x7AB9 = 0x7334
-0x7ABC = 0x7335
-0x7ABE = 0x7336
-0x7ACC = 0x7338
-0x7AD1 = 0x7339
-0x7AE7 = 0x733A
-0x7AE8 = 0x733B
-0x7AF4 = 0x733C
-0x7B07 = 0x733F
-0x7B27 = 0x7342
-0x7B2A = 0x7343
-0x7B2E = 0x7344
-0x7B2F = 0x7345
-0x7B31 = 0x7346
-0x7B3D = 0x7341
-0x7B41 = 0x734A
-0x7B55 = 0x734C
-0x7B64 = 0x734E
-0x7B66 = 0x734F
-0x7B69 = 0x7350
-0x7B73 = 0x7351
-0x7B79 = 0x734D
-0x7B7F = 0x7349
-0x7B90 = 0x7354
-0x7B91 = 0x7355
-0x7B9B = 0x7356
-0x7BAF = 0x7358
-0x7BB5 = 0x7359
-0x7BBC = 0x735A
-0x7BC5 = 0x735B
-0x7BCA = 0x735C
-0x7BD4 = 0x735F
-0x7BD6 = 0x7360
-0x7BDA = 0x7361
-0x7BEA = 0x7362
-0x7BF0 = 0x7363
-0x7C03 = 0x7364
-0x7C0B = 0x7365
-0x7C0E = 0x7366
-0x7C0F = 0x7367
-0x7C26 = 0x7368
-0x7C45 = 0x7369
-0x7C4A = 0x736A
-0x7C51 = 0x736B
-0x7C57 = 0x736C
-0x7C5E = 0x736D
-0x7C61 = 0x736E
-0x7C69 = 0x736F
-0x7C6E = 0x7370
-0x7C6F = 0x7371
-0x7C70 = 0x7372
-0x7CA6 = 0x7376
-0x7CB6 = 0x7378
-0x7CB7 = 0x7379
-0x7CBF = 0x737A
-0x7CC4 = 0x737C
-0x7CC8 = 0x737E
-0x7CCD = 0x7421
-0x7CD7 = 0x7423
-0x7CE6 = 0x7425
-0x7CEB = 0x7426
-0x7CF5 = 0x7428
-0x7D03 = 0x7429
-0x7D09 = 0x742A
-0x7D12 = 0x742C
-0x7D1E = 0x742D
-0x7D3D = 0x7430
-0x7D3E = 0x7431
-0x7D40 = 0x7432
-0x7D47 = 0x7433
-0x7D59 = 0x7437
-0x7D5A = 0x7438
-0x7D6A = 0x7439
-0x7D70 = 0x743A
-0x7D7F = 0x743C
-0x7D86 = 0x743E
-0x7D88 = 0x743F
-0x7D8C = 0x7440
-0x7D97 = 0x7441
-0x7D9D = 0x7443
-0x7DA7 = 0x7444
-0x7DAA = 0x7445
-0x7DB6 = 0x7446
-0x7DB7 = 0x7447
-0x7DC0 = 0x7448
-0x7DD7 = 0x7449
-0x7DD9 = 0x744A
-0x7DE6 = 0x744B
-0x7DF1 = 0x744C
-0x7DF9 = 0x744D
-0x7E10 = 0x7451
-0x7E17 = 0x7452
-0x7E1D = 0x7453
-0x7E20 = 0x7454
-0x7E27 = 0x7455
-0x7E2C = 0x7456
-0x7E45 = 0x7457
-0x7E73 = 0x7458
-0x7E75 = 0x7459
-0x7E7E = 0x745A
-0x7E86 = 0x745B
-0x7E87 = 0x745C
-0x7E91 = 0x745E
-0x7E98 = 0x745F
-0x7E9A = 0x7460
-0x7F3B = 0x7463
-0x7F3C = 0x7462
-0x7F3E = 0x7464
-0x7F43 = 0x7465
-0x7F44 = 0x7466
-0x7F4F = 0x7467
-0x7F52 = 0x746A
-0x7F61 = 0x746C
-0x7F63 = 0x746D
-0x7F64 = 0x746E
-0x7F6D = 0x746F
-0x7F7D = 0x7470
-0x7F7E = 0x7471
-0x7F90 = 0x7473
-0x7F96 = 0x7476
-0x7F9C = 0x7477
-0x7FAD = 0x7478
-0x7FC3 = 0x747A
-0x7FCF = 0x747B
-0x7FE3 = 0x747C
-0x7FE5 = 0x747D
-0x7FEF = 0x747E
-0x7FF2 = 0x7521
-0x8002 = 0x7522
-0x8008 = 0x7524
-0x800A = 0x7523
-0x800E = 0x7525
-0x8011 = 0x7526
-0x8016 = 0x7527
-0x8024 = 0x7528
-0x802C = 0x7529
-0x8030 = 0x752A
-0x8043 = 0x752B
-0x8066 = 0x752C
-0x8071 = 0x752D
-0x8075 = 0x752E
-0x807B = 0x752F
-0x8099 = 0x7530
-0x809C = 0x7531
-0x80A4 = 0x7532
-0x80A7 = 0x7533
-0x80B8 = 0x7534
-0x80C5 = 0x7536
-0x80D5 = 0x7537
-0x80D8 = 0x7538
-0x80E6 = 0x7539
-0x80F5 = 0x753C
-0x80FB = 0x753D
-0x810D = 0x753B
-0x8116 = 0x7540
-0x811E = 0x7541
-0x8124 = 0x7543
-0x8127 = 0x7544
-0x812C = 0x7545
-0x8135 = 0x753F
-0x813D = 0x7547
-0x8169 = 0x7549
-0x8181 = 0x754B
-0x8184 = 0x754D
-0x8185 = 0x754E
-0x8198 = 0x7550
-0x81B2 = 0x7551
-0x81C1 = 0x7552
-0x81C3 = 0x7553
-0x81D6 = 0x7554
-0x81DB = 0x7555
-0x81E4 = 0x7557
-0x81EC = 0x7559
-0x81FD = 0x755B
-0x81FF = 0x755C
-0x8204 = 0x755E
-0x8219 = 0x7560
-0x8221 = 0x7561
-0x8222 = 0x7562
-0x8232 = 0x7564
-0x8234 = 0x7565
-0x823C = 0x7566
-0x8245 = 0x7569
-0x8246 = 0x7567
-0x8249 = 0x7568
-0x824B = 0x756B
-0x824F = 0x756D
-0x8257 = 0x756F
-0x825C = 0x7571
-0x8263 = 0x7572
-0x8279 = 0x7576
-0x827D = 0x7578
-0x827F = 0x7579
-0x8283 = 0x757A
-0x828A = 0x757B
-0x8293 = 0x757C
-0x82A7 = 0x757D
-0x82A8 = 0x757E
-0x82B2 = 0x7621
-0x82B4 = 0x7622
-0x82BA = 0x7623
-0x82BC = 0x7624
-0x82E2 = 0x7625
-0x82E8 = 0x7626
-0x82F7 = 0x7627
-0x8307 = 0x7628
-0x8308 = 0x7629
-0x830C = 0x762A
-0x831B = 0x762C
-0x831D = 0x762D
-0x8330 = 0x762E
-0x833C = 0x762F
-0x8344 = 0x7630
-0x8354 = 0x762B
-0x8357 = 0x7631
-0x8363 = 0x2E4A
-0x837F = 0x7633
-0x838D = 0x7636
-0x8394 = 0x7637
-0x8395 = 0x7638
-0x839B = 0x7639
-0x839D = 0x763A
-0x83C9 = 0x763B
-0x83D0 = 0x763C
-0x83D4 = 0x763D
-0x83DD = 0x763E
-0x83E5 = 0x763F
-0x83F9 = 0x7640
-0x840F = 0x7641
-0x8411 = 0x7642
-0x8415 = 0x7643
-0x8417 = 0x7645
-0x8439 = 0x7646
-0x844A = 0x7647
-0x844F = 0x7648
-0x8451 = 0x7649
-0x8452 = 0x764A
-0x8459 = 0x764B
-0x845A = 0x764C
-0x845C = 0x764D
-0x8465 = 0x764F
-0x8476 = 0x7650
-0x8478 = 0x7651
-0x847C = 0x7652
-0x8481 = 0x7653
-0x8497 = 0x7656
-0x84A6 = 0x7657
-0x84BE = 0x7658
-0x84CE = 0x765A
-0x84CF = 0x765B
-0x84D3 = 0x765C
-0x84DC = 0x7655
-0x84E7 = 0x765E
-0x84EA = 0x765F
-0x84EF = 0x7660
-0x84F0 = 0x7661
-0x84F1 = 0x7662
-0x84FA = 0x7663
-0x84FD = 0x7664
-0x850C = 0x7665
-0x851B = 0x7666
-0x8524 = 0x7667
-0x8525 = 0x7668
-0x852B = 0x7669
-0x8534 = 0x766A
-0x853E = 0x766F
-0x854F = 0x766B
-0x8551 = 0x7670
-0x8553 = 0x7671
-0x855E = 0x7672
-0x8561 = 0x7673
-0x8562 = 0x7674
-0x856F = 0x766C
-0x857B = 0x7676
-0x857D = 0x7677
-0x857F = 0x7678
-0x8581 = 0x7679
-0x8586 = 0x767A
-0x8593 = 0x767B
-0x859D = 0x767C
-0x859F = 0x767D
-0x85B7 = 0x7723
-0x85BC = 0x7724
-0x85C7 = 0x7725
-0x85CA = 0x7726
-0x85D8 = 0x7727
-0x85D9 = 0x7728
-0x85DF = 0x7729
-0x85E1 = 0x772A
-0x85E6 = 0x772B
-0x85F6 = 0x772C
-0x8600 = 0x772D
-0x8611 = 0x772E
-0x861E = 0x772F
-0x8621 = 0x7730
-0x8624 = 0x7731
-0x8627 = 0x7732
-0x8639 = 0x7734
-0x863C = 0x7735
-0x8640 = 0x7737
-0x8653 = 0x7739
-0x8656 = 0x773A
-0x866F = 0x773B
-0x8677 = 0x773C
-0x867A = 0x773D
-0x8687 = 0x773E
-0x8689 = 0x773F
-0x868D = 0x7740
-0x8691 = 0x7741
-0x869C = 0x7742
-0x869D = 0x7743
-0x86A8 = 0x7744
-0x86B1 = 0x7746
-0x86B3 = 0x7747
-0x86C1 = 0x7748
-0x86C3 = 0x7749
-0x86D1 = 0x774A
-0x86D5 = 0x774B
-0x86D7 = 0x774C
-0x86E3 = 0x774D
-0x86E6 = 0x774E
-0x8705 = 0x7750
-0x8707 = 0x7751
-0x870E = 0x7752
-0x8710 = 0x7753
-0x8713 = 0x7754
-0x8719 = 0x7755
-0x871F = 0x7756
-0x8721 = 0x7757
-0x8723 = 0x7758
-0x8731 = 0x7759
-0x873A = 0x775A
-0x873E = 0x775B
-0x8740 = 0x775C
-0x8743 = 0x775D
-0x8751 = 0x775E
-0x8758 = 0x775F
-0x8764 = 0x7760
-0x8765 = 0x7761
-0x8772 = 0x7762
-0x877C = 0x7763
-0x8789 = 0x7767
-0x878B = 0x7768
-0x8793 = 0x7769
-0x87A0 = 0x776A
-0x87A7 = 0x7766
-0x87BE = 0x776D
-0x87C1 = 0x776F
-0x87CE = 0x7770
-0x87DF = 0x7772
-0x87E3 = 0x7774
-0x87E5 = 0x7775
-0x87E6 = 0x7776
-0x87EA = 0x7777
-0x87EB = 0x7778
-0x87ED = 0x7779
-0x87F5 = 0x7771
-0x8801 = 0x777A
-0x8803 = 0x777B
-0x880B = 0x777C
-0x8813 = 0x777D
-0x8828 = 0x777E
-0x882E = 0x7821
-0x8832 = 0x7822
-0x883C = 0x7823
-0x884A = 0x7825
-0x8858 = 0x7826
-0x885F = 0x7827
-0x8864 = 0x7828
-0x8869 = 0x782B
-0x886F = 0x782D
-0x88A0 = 0x782E
-0x88BC = 0x782F
-0x88BD = 0x7830
-0x88BE = 0x7831
-0x88C0 = 0x7832
-0x88D1 = 0x7835
-0x88D2 = 0x7833
-0x88D3 = 0x7836
-0x88DB = 0x7837
-0x88F0 = 0x7838
-0x88F1 = 0x7839
-0x8901 = 0x783B
-0x8937 = 0x783D
-0x8942 = 0x783F
-0x8945 = 0x7840
-0x8949 = 0x7841
-0x8962 = 0x7844
-0x8980 = 0x7845
-0x8989 = 0x7846
-0x8990 = 0x7847
-0x899F = 0x7848
-0x89B0 = 0x7849
-0x89B7 = 0x784A
-0x89D6 = 0x784B
-0x89D8 = 0x784C
-0x89EB = 0x784D
-0x89F1 = 0x784F
-0x89F3 = 0x7850
-0x89FD = 0x7851
-0x89FF = 0x7852
-0x8A11 = 0x7854
-0x8A14 = 0x7855
-0x8A21 = 0x7857
-0x8A35 = 0x7858
-0x8A3E = 0x7859
-0x8A45 = 0x785A
-0x8A4D = 0x785B
-0x8A58 = 0x785C
-0x8A90 = 0x785E
-0x8AAE = 0x785D
-0x8AB7 = 0x785F
-0x8ABE = 0x7860
-0x8AD7 = 0x7861
-0x8AFC = 0x7862
-0x8B05 = 0x7865
-0x8B0A = 0x7864
-0x8B0D = 0x7866
-0x8B1C = 0x7867
-0x8B1F = 0x7868
-0x8B2D = 0x7869
-0x8B43 = 0x786A
-0x8B51 = 0x786C
-0x8B5E = 0x786D
-0x8B76 = 0x786E
-0x8B7F = 0x786F
-0x8B81 = 0x7870
-0x8B8B = 0x7871
-0x8B94 = 0x7872
-0x8B95 = 0x7873
-0x8B9C = 0x7874
-0x8B9E = 0x7875
-0x8C39 = 0x7876
-0x8C3D = 0x7878
-0x8C45 = 0x787B
-0x8C47 = 0x787C
-0x8C4F = 0x787D
-0x8C54 = 0x787E
-0x8C57 = 0x7921
-0x8C69 = 0x7922
-0x8C6D = 0x7923
-0x8C73 = 0x7924
-0x8C92 = 0x7927
-0x8C93 = 0x7926
-0x8C99 = 0x7928
-0x8C9B = 0x792A
-0x8CA4 = 0x792B
-0x8CD5 = 0x792D
-0x8CD6 = 0x792C
-0x8CD9 = 0x792E
-0x8CF0 = 0x7930
-0x8CF1 = 0x7931
-0x8D09 = 0x7933
-0x8D0E = 0x7934
-0x8D6C = 0x7935
-0x8D84 = 0x7936
-0x8D95 = 0x7937
-0x8DA6 = 0x7938
-0x8DC6 = 0x793A
-0x8DC8 = 0x793B
-0x8DD9 = 0x793C
-0x8DEC = 0x793D
-0x8DFD = 0x7940
-0x8E06 = 0x7941
-0x8E0C = 0x793E
-0x8E14 = 0x7943
-0x8E16 = 0x7944
-0x8E21 = 0x7945
-0x8E22 = 0x7946
-0x8E27 = 0x7947
-0x8E36 = 0x794A
-0x8E39 = 0x794B
-0x8E4B = 0x794C
-0x8E54 = 0x794D
-0x8E62 = 0x794E
-0x8E6C = 0x794F
-0x8E6D = 0x7950
-0x8E6F = 0x7951
-0x8E98 = 0x7952
-0x8E9E = 0x7953
-0x8EAE = 0x7954
-0x8EB3 = 0x7955
-0x8EB5 = 0x7956
-0x8EB6 = 0x7957
-0x8EBB = 0x7958
-0x8ED1 = 0x795A
-0x8ED4 = 0x795B
-0x8EF9 = 0x795D
-0x8F00 = 0x795F
-0x8F08 = 0x7960
-0x8F17 = 0x7961
-0x8F2B = 0x7962
-0x8F40 = 0x7963
-0x8F4A = 0x7964
-0x8F58 = 0x7965
-0x8FA4 = 0x7967
-0x8FB4 = 0x7968
-0x8FB6 = 0x796A
-0x8FC1 = 0x796C
-0x8FC6 = 0x796D
-0x8FCA = 0x796F
-0x8FCD = 0x7970
-0x8FD3 = 0x7971
-0x8FD5 = 0x7972
-0x8FE0 = 0x7973
-0x8FF1 = 0x7974
-0x8FF5 = 0x7975
-0x8FFB = 0x7976
-0x9002 = 0x7977
-0x900C = 0x7978
-0x9037 = 0x7979
-0x9043 = 0x797B
-0x9044 = 0x797C
-0x905D = 0x797D
-0x9085 = 0x7A22
-0x908C = 0x7A23
-0x9090 = 0x7A24
-0x90A1 = 0x7A26
-0x90B0 = 0x7A28
-0x90B6 = 0x7A29
-0x90C3 = 0x7A2A
-0x90C8 = 0x7A2B
-0x90DC = 0x7A2D
-0x90DF = 0x7A2E
-0x90EB = 0x7A33
-0x90F2 = 0x7A31
-0x90F6 = 0x7A30
-0x90FE = 0x7A34
-0x90FF = 0x7A35
-0x9100 = 0x7A32
-0x9104 = 0x7A36
-0x9106 = 0x7A37
-0x9118 = 0x7A38
-0x911C = 0x7A39
-0x911E = 0x7A3A
-0x9137 = 0x7A3B
-0x9139 = 0x7A3C
-0x913A = 0x7A3D
-0x9146 = 0x7A3E
-0x9147 = 0x7A3F
-0x9157 = 0x7A40
-0x9159 = 0x7A41
-0x9161 = 0x7A42
-0x9164 = 0x7A43
-0x9174 = 0x7A44
-0x9179 = 0x7A45
-0x9185 = 0x7A46
-0x918E = 0x7A47
-0x91A8 = 0x7A48
-0x91AE = 0x7A49
-0x91B3 = 0x7A4A
-0x91B6 = 0x7A4B
-0x91C3 = 0x7A4C
-0x91C4 = 0x7A4D
-0x91DA = 0x7A4E
-0x91EC = 0x7A51
-0x91EE = 0x7A52
-0x9201 = 0x7A53
-0x920A = 0x7A54
-0x9216 = 0x7A55
-0x9217 = 0x7A56
-0x9233 = 0x7A58
-0x9242 = 0x7A59
-0x9247 = 0x7A5A
-0x924A = 0x7A5B
-0x924E = 0x7A5C
-0x9251 = 0x7A5D
-0x9256 = 0x7A5E
-0x9259 = 0x7A5F
-0x9260 = 0x7A60
-0x9261 = 0x7A61
-0x9265 = 0x7A62
-0x9267 = 0x7A63
-0x9268 = 0x7A64
-0x927C = 0x7A67
-0x927D = 0x7A68
-0x927F = 0x7A69
-0x9289 = 0x7A6A
-0x928D = 0x7A6B
-0x9297 = 0x7A6C
-0x9299 = 0x7A6D
-0x929F = 0x7A6E
-0x92A7 = 0x7A6F
-0x92AB = 0x7A70
-0x92B2 = 0x7A73
-0x92BF = 0x7A74
-0x92C0 = 0x7A75
-0x92C6 = 0x7A76
-0x92CE = 0x7A77
-0x92D0 = 0x7A78
-0x92D7 = 0x7A79
-0x92D9 = 0x7A7A
-0x92E5 = 0x7A7B
-0x92E7 = 0x7A7C
-0x92F7 = 0x7B22
-0x92F9 = 0x7B23
-0x92FB = 0x7B24
-0x9302 = 0x7B25
-0x930D = 0x7B26
-0x9311 = 0x7A7D
-0x9315 = 0x7B27
-0x931D = 0x7B28
-0x931E = 0x7B29
-0x9327 = 0x7B2A
-0x9329 = 0x7B2B
-0x9347 = 0x7B2E
-0x9351 = 0x7B2F
-0x9357 = 0x7B30
-0x935A = 0x7B31
-0x936B = 0x7B32
-0x9371 = 0x7B33
-0x9373 = 0x7B34
-0x9388 = 0x7B38
-0x938B = 0x7B39
-0x938F = 0x7B3A
-0x939E = 0x7B3B
-0x93A1 = 0x7B35
-0x93C1 = 0x7B40
-0x93C7 = 0x7B41
-0x93DC = 0x7B42
-0x93E2 = 0x7B43
-0x93E7 = 0x7B44
-0x93F1 = 0x7B3F
-0x93F5 = 0x7B3C
-0x93FB = 0x7B49
-0x9409 = 0x7B45
-0x940F = 0x7B46
-0x9416 = 0x7B47
-0x9417 = 0x7B48
-0x9432 = 0x7B4A
-0x9434 = 0x7B4B
-0x943B = 0x7B4C
-0x9445 = 0x7B4D
-0x946D = 0x7B50
-0x946F = 0x7B51
-0x9578 = 0x7B52
-0x9579 = 0x7B53
-0x9586 = 0x7B54
-0x958C = 0x7B55
-0x958D = 0x7B56
-0x95AB = 0x7B58
-0x95B4 = 0x7B59
-0x95C8 = 0x7B5B
-0x961D = 0x7A25
-0x962C = 0x7B5E
-0x9633 = 0x7B5F
-0x9634 = 0x7B60
-0x963C = 0x7B62
-0x9641 = 0x7B63
-0x9661 = 0x7B64
-0x9682 = 0x7B66
-0x969A = 0x7B68
-0x96A9 = 0x7B6B
-0x96AF = 0x7B6C
-0x96B3 = 0x7B6D
-0x96BA = 0x7B6E
-0x96BD = 0x7B6F
-0x96D8 = 0x7B72
-0x96DA = 0x7B73
-0x96DD = 0x7B74
-0x9714 = 0x7B76
-0x9723 = 0x7B77
-0x9736 = 0x7B79
-0x9741 = 0x7B7A
-0x9747 = 0x7B7B
-0x9755 = 0x7B7C
-0x9757 = 0x7B7D
-0x975B = 0x7B7E
-0x976A = 0x7C21
-0x9796 = 0x7C24
-0x979A = 0x7C25
-0x979E = 0x7C26
-0x97A2 = 0x7C27
-0x97B1 = 0x7C28
-0x97B2 = 0x7C29
-0x97BE = 0x7C2A
-0x97CC = 0x7C2B
-0x97D1 = 0x7C2C
-0x97D4 = 0x7C2D
-0x97D8 = 0x7C2E
-0x97D9 = 0x7C2F
-0x97E1 = 0x7C30
-0x97F1 = 0x7C31
-0x9804 = 0x7C32
-0x980D = 0x7C33
-0x980E = 0x7C34
-0x9814 = 0x7C35
-0x9816 = 0x7C36
-0x9823 = 0x7C39
-0x9825 = 0x7C3C
-0x9832 = 0x7C3A
-0x9833 = 0x7C3B
-0x9847 = 0x7C3D
-0x9866 = 0x7C3E
-0x98AB = 0x7C3F
-0x98AD = 0x7C40
-0x98B0 = 0x7C41
-0x98B7 = 0x7C43
-0x98B8 = 0x7C44
-0x98BB = 0x7C45
-0x98BC = 0x7C46
-0x98BF = 0x7C47
-0x98C2 = 0x7C48
-0x98C7 = 0x7C49
-0x98CB = 0x7C4A
-0x98E0 = 0x7C4B
-0x98E1 = 0x7C4D
-0x98E3 = 0x7C4E
-0x98E5 = 0x7C4F
-0x98EA = 0x7C50
-0x98F0 = 0x7C51
-0x98F1 = 0x7C52
-0x98F3 = 0x7C53
-0x9908 = 0x7C54
-0x9916 = 0x7C57
-0x9917 = 0x7C58
-0x991A = 0x7C5A
-0x991B = 0x7C5B
-0x991C = 0x7C5C
-0x9931 = 0x7C5E
-0x9932 = 0x7C5F
-0x9933 = 0x7C60
-0x993A = 0x7C61
-0x993B = 0x7C62
-0x993C = 0x7C63
-0x9940 = 0x7C64
-0x9941 = 0x7C65
-0x9946 = 0x7C66
-0x994D = 0x7C67
-0x994E = 0x7C68
-0x995C = 0x7C69
-0x995F = 0x7C6A
-0x9960 = 0x7C6B
-0x99A3 = 0x7C6C
-0x99A6 = 0x7C6D
-0x99B9 = 0x7C6E
-0x99BD = 0x7C6F
-0x99BF = 0x7C70
-0x99C3 = 0x7C71
-0x99C9 = 0x7C72
-0x99D4 = 0x7C73
-0x99D9 = 0x7C74
-0x99DE = 0x7C75
-0x99F0 = 0x7C77
-0x99F9 = 0x7C78
-0x99FC = 0x7C79
-0x9A0A = 0x7C7A
-0x9A11 = 0x7C7B
-0x9A16 = 0x7C7C
-0x9A1A = 0x7C7D
-0x9A20 = 0x7C7E
-0x9A31 = 0x7D21
-0x9A36 = 0x7D22
-0x9A44 = 0x7D23
-0x9A4C = 0x7D24
-0x9A58 = 0x7D25
-0x9AAF = 0x7D27
-0x9AB7 = 0x7D29
-0x9AB9 = 0x7D2B
-0x9AC6 = 0x7D2D
-0x9AD0 = 0x7D2E
-0x9AD2 = 0x7D2F
-0x9AD5 = 0x7D30
-0x9ADC = 0x7D32
-0x9AE0 = 0x7D33
-0x9AE5 = 0x7D34
-0x9AE9 = 0x7D35
-0x9B03 = 0x7D36
-0x9B0C = 0x7D37
-0x9B10 = 0x7D38
-0x9B12 = 0x7D39
-0x9B16 = 0x7D3A
-0x9B1C = 0x7D3B # 0x9B1D
-0x9B2B = 0x7D3C
-0x9B33 = 0x7D3D
-0x9B3D = 0x7D3E
-0x9B4B = 0x7D40
-0x9B63 = 0x7D41
-0x9B65 = 0x7D42
-0x9B6B = 0x7D43
-0x9B6C = 0x7D44
-0x9B73 = 0x7D45
-0x9B76 = 0x7D46
-0x9B77 = 0x7D47
-0x9BA6 = 0x7D48
-0x9BAC = 0x7D49
-0x9BB1 = 0x7D4A
-0x9BB2 = 0x7D4D
-0x9BB8 = 0x7D4E
-0x9BBE = 0x7D4F
-0x9BC7 = 0x7D50
-0x9BD8 = 0x7D52
-0x9BDD = 0x7D53
-0x9BE7 = 0x7D54
-0x9BEA = 0x7D55
-0x9BEB = 0x7D56
-0x9BEE = 0x7D58
-0x9BEF = 0x7D57
-0x9BF3 = 0x7D51
-0x9BF7 = 0x7D5C
-0x9BFA = 0x7D5A
-0x9C16 = 0x7D5E
-0x9C18 = 0x7D5F
-0x9C19 = 0x7D60
-0x9C1A = 0x7D61
-0x9C1D = 0x7D62
-0x9C22 = 0x7D63
-0x9C27 = 0x7D64
-0x9C29 = 0x7D65
-0x9C2A = 0x7D66
-0x9C31 = 0x7D68
-0x9C36 = 0x7D69
-0x9C37 = 0x7D6A
-0x9C45 = 0x7D6B
-0x9C49 = 0x7D6E
-0x9C4A = 0x7D6F
-0x9C54 = 0x7D71
-0x9C58 = 0x7D72
-0x9C5B = 0x7D73
-0x9C5C = 0x7D6C
-0x9C5D = 0x7D74
-0x9C5F = 0x7D75
-0x9C69 = 0x7D76
-0x9C6A = 0x7D77
-0x9C6B = 0x7D78
-0x9C6D = 0x7D79
-0x9C6E = 0x7D7A
-0x9C70 = 0x7D7B
-0x9C72 = 0x7D7C
-0x9C75 = 0x7D7D
-0x9C7A = 0x7D7E
-0x9CE6 = 0x7E21
-0x9CF2 = 0x7E22
-0x9D02 = 0x7E24
-0x9D0B = 0x7E23
-0x9D11 = 0x7E26
-0x9D17 = 0x7E27
-0x9D18 = 0x7E28
-0x9D32 = 0x7E2C
-0x9D42 = 0x7E2E
-0x9D4A = 0x7E2F
-0x9D5F = 0x7E30
-0x9D62 = 0x7E31
-0x9D69 = 0x7E33
-0x9D6B = 0x7E34
-0x9D73 = 0x7E36
-0x9D76 = 0x7E37
-0x9D77 = 0x7E38
-0x9D7E = 0x7E39
-0x9D84 = 0x7E3A
-0x9D8D = 0x7E3B
-0x9D99 = 0x7E3C
-0x9DA1 = 0x7E3D
-0x9DB5 = 0x7E3F
-0x9DB9 = 0x7E40
-0x9DBD = 0x7E41
-0x9DBF = 0x7E3E
-0x9DC3 = 0x7E42
-0x9DC7 = 0x7E43
-0x9DC9 = 0x7E44
-0x9DD6 = 0x7E45
-0x9DDA = 0x7E46
-0x9DDF = 0x7E47
-0x9DE0 = 0x7E48
-0x9DE3 = 0x7E49
-0x9DF4 = 0x7E4A
-0x9E02 = 0x7E4D
-0x9E0A = 0x7E4C
-0x9E0D = 0x7E4E
-0x9E19 = 0x7E4F
-0x9E1C = 0x7E50
-0x9E1D = 0x7E51
-0x9E7B = 0x7E52
-0x9E80 = 0x7E54
-0x9E85 = 0x7E55
-0x9E9B = 0x7E56
-0x9EA8 = 0x7E57
-0x9EBD = 0x7E59
-0x9EDF = 0x7E5B
-0x9EE7 = 0x7E5C
-0x9EEE = 0x7E5D
-0x9EFF = 0x7E5E
-0x9F02 = 0x7E5F
-0x9F03 = 0x7E61
-0x9F17 = 0x7E62
-0x9F19 = 0x7E63
-0x9F2F = 0x7E64
-0x9F37 = 0x7E65
-0x9F3A = 0x7E66
-0x9F3D = 0x7E67
-0x9F41 = 0x7E68
-0x9F45 = 0x7E69
-0x9F46 = 0x7E6A
-0x9F53 = 0x7E6B
-0x9F55 = 0x7E6C
-0x9F58 = 0x7E6D
-0x9F5D = 0x7E6F
-0x9F69 = 0x7E71
-0x9F6D = 0x7E73
-0x9F70 = 0x7E74
-0x9F75 = 0x7E75
-0xFA13 = 0x2E79
-0xFA20 = 0x7738
-0xFA21 = 0x7745
-0xFA24 = 0x796E
-0xFA49 = 0x7029
-0xFA58 = 0x7450
-0xFA5D = 0x7574
-0xFA5E = 0x7575
-0xFA66 = 0x7969
-END_MAP
diff --git a/enc/trans/JIS/UCS@SIP%JISX0213-1.src b/enc/trans/JIS/UCS@SIP%JISX0213-1.src
deleted file mode 100644
index f4469c60d7..0000000000
--- a/enc/trans/JIS/UCS@SIP%JISX0213-1.src
+++ /dev/null
@@ -1,56 +0,0 @@
-# $NetBSD: UCS@SIP%JISX0213-1.src,v 1.1 2007/03/05 16:58:34 tnozaki Exp $
-
-TYPE ROWCOL
-NAME "UCS:SIP/JISX0213-1"
-SRC_ZONE 0x000B - 0xA190
-OOB_MODE INVALID
-DST_INVALID 0xFFFF
-DST_UNIT_BITS 16
-
-BEGIN_MAP
-## Shift_JIS-2004 (JIS X 0213:2004) vs Unicode mapping table
-##
-## Date: 12 Feb 2005 10:15:00 GMT
-## License:
-## Copyright (C) 2001 earthian@tama.or.jp, All Rights Reserved.
-## Copyright (C) 2001 I'O, All Rights Reserved.
-## You can use, modify, distribute this table freely.
-## Note:
-## [1983] JIS codepoint defined by JIS X 0208-1983
-## [1990] JIS codepoint defined by JIS X 0208-1990
-## [2000] JIS codepoint defined by JIS X 0213:2000
-## [2004] JIS codepoint defined by JIS X 0213:2004
-## [Unicode3.1] UCS codepoint defined by Unicode 3.1
-## [Unicode3.2] UCS codepoint defined by Unicode 3.2
-## Fullwidth UCS fullwidth form (U+Fxxx)
-## Windows Windows (CP932) mapping
-## Some 0213 character can't represent by one UCS character.
-## In this table, such characters are described as 'U+xxxx+xxxx'.
-##
-0x000B = 0x2E22
-0x0B9F = 0x4F54
-0x123D = 0x2F42
-0x131B = 0x2F4C
-0x146E = 0x2F60
-0x16B4 = 0x4F63
-0x18BD = 0x2F7B
-0x1E34 = 0x4F6E
-0x31C4 = 0x753A
-0x35C4 = 0x7572
-0x373F = 0x7629
-0x3763 = 0x7632
-0x3CFE = 0x7660
-0x47F1 = 0x776C
-0x548E = 0x787E
-0x550E = 0x7929
-0x5771 = 0x7947
-0x59C4 = 0x7954
-0x5DA1 = 0x796E
-0x6AFF = 0x7A5D
-0x6E40 = 0x7B33
-0x70F4 = 0x7B49
-0x7684 = 0x7B6C
-0x8277 = 0x7C49
-0x83CD = 0x7C51
-0xA190 = 0x7E66
-END_MAP
diff --git a/enc/trans/JIS/UCS@SIP%JISX0213-2.src b/enc/trans/JIS/UCS@SIP%JISX0213-2.src
deleted file mode 100644
index 7a33430ee9..0000000000
--- a/enc/trans/JIS/UCS@SIP%JISX0213-2.src
+++ /dev/null
@@ -1,307 +0,0 @@
-# $NetBSD: UCS@SIP%JISX0213-2.src,v 1.1 2007/03/05 16:58:34 tnozaki Exp $
-
-TYPE ROWCOL
-NAME "UCS:SIP/JISX0213-2"
-SRC_ZONE 0x0089 - 0xA6B2
-OOB_MODE INVALID
-DST_INVALID 0xFFFF
-DST_UNIT_BITS 16
-
-BEGIN_MAP
-## Shift_JIS-2004 (JIS X 0213:2004) vs Unicode mapping table
-##
-## Date: 12 Feb 2005 10:15:00 GMT
-## License:
-## Copyright (C) 2001 earthian@tama.or.jp, All Rights Reserved.
-## Copyright (C) 2001 I'O, All Rights Reserved.
-## You can use, modify, distribute this table freely.
-## Note:
-## [1983] JIS codepoint defined by JIS X 0208-1983
-## [1990] JIS codepoint defined by JIS X 0208-1990
-## [2000] JIS codepoint defined by JIS X 0213:2000
-## [2004] JIS codepoint defined by JIS X 0213:2004
-## [Unicode3.1] UCS codepoint defined by Unicode 3.1
-## [Unicode3.2] UCS codepoint defined by Unicode 3.2
-## Fullwidth UCS fullwidth form (U+Fxxx)
-## Windows Windows (CP932) mapping
-## Some 0213 character can't represent by one UCS character.
-## In this table, such characters are described as 'U+xxxx+xxxx'.
-##
-0x0089 = 0x2121
-0x00A2 = 0x212B
-0x00A4 = 0x212E
-0x01A2 = 0x2136
-0x0213 = 0x2146
-0x032B = 0x2170
-0x0371 = 0x2179
-0x0381 = 0x2177
-0x03F9 = 0x2322
-0x044A = 0x2325
-0x0509 = 0x2327
-0x05D6 = 0x2331
-0x0628 = 0x2332
-0x074F = 0x2338
-0x0807 = 0x233F
-0x083A = 0x2341
-0x08B9 = 0x234A
-0x097C = 0x2352
-0x099D = 0x2353
-0x0AD3 = 0x2359
-0x0B1D = 0x235C
-0x0D45 = 0x2377
-0x0DE1 = 0x242A
-0x0E64 = 0x243A
-0x0E6D = 0x2432
-0x0E95 = 0x2431
-0x0F5F = 0x243D
-0x1201 = 0x2459
-0x1255 = 0x245C
-0x1274 = 0x2463
-0x127B = 0x245E
-0x12D7 = 0x246B
-0x12E4 = 0x246A
-0x12FD = 0x2472
-0x1336 = 0x2474
-0x1344 = 0x2475
-0x13C4 = 0x2525
-0x146D = 0x2532
-0x15D7 = 0x253E
-0x1647 = 0x2547
-0x1706 = 0x2555
-0x1742 = 0x2556
-0x19C3 = 0x257E
-0x1C56 = 0x2830
-0x1D2D = 0x2837
-0x1D45 = 0x2838
-0x1D62 = 0x283B
-0x1D78 = 0x283A
-0x1D92 = 0x2845
-0x1D9C = 0x2840
-0x1DA1 = 0x283F
-0x1DB7 = 0x2848
-0x1DE0 = 0x284A
-0x1E33 = 0x284B
-0x1F1E = 0x285B
-0x1F76 = 0x2866
-0x1FFA = 0x286C
-0x217B = 0x2C22
-0x2218 = 0x7E53
-0x231E = 0x2C2B
-0x23AD = 0x2C30
-0x26F3 = 0x2C50
-0x285B = 0x2C65
-0x28AB = 0x2C6D
-0x298F = 0x2C72
-0x2AB8 = 0x2D24
-0x2B46 = 0x2D32
-0x2B4F = 0x2D29
-0x2B50 = 0x2D2A
-0x2BA6 = 0x2D35
-0x2C1D = 0x2D34
-0x2C24 = 0x2D39
-0x2DE1 = 0x2D56
-0x31B6 = 0x2E24
-0x31C3 = 0x2D7D
-0x31F5 = 0x2E23
-0x3372 = 0x2E3A
-0x33D0 = 0x2E42
-0x33D2 = 0x2E3D
-0x33D3 = 0x2E3C
-0x33D5 = 0x2E44
-0x33DA = 0x2E47
-0x33DF = 0x2E49
-0x33E4 = 0x2E43
-0x344A = 0x2E55
-0x344B = 0x2E57
-0x3451 = 0x2E56
-0x3465 = 0x2E5B
-0x34E4 = 0x2E77
-0x355A = 0x2E78
-0x3594 = 0x2F2A
-0x3638 = 0x2F42
-0x3639 = 0x2F3F
-0x363A = 0x2F43
-0x3647 = 0x2F40
-0x370C = 0x2F59
-0x371C = 0x2F4E
-0x3764 = 0x2F61
-0x37E7 = 0x2F6A
-0x37FF = 0x2F69
-0x3824 = 0x2F70
-0x383D = 0x2F75
-0x3A98 = 0x6E23
-0x3C7F = 0x6E34
-0x3D00 = 0x6E49
-0x3D0E = 0x7475
-0x3D40 = 0x6E5C
-0x3DD3 = 0x6E60
-0x3DF9 = 0x6E5F
-0x3DFA = 0x6E5E
-0x3F7E = 0x6F32
-0x4096 = 0x6F47
-0x4103 = 0x6F4D
-0x41C6 = 0x6F61
-0x41FE = 0x6F64
-0x43BC = 0x7022
-0x4629 = 0x7033
-0x46A5 = 0x7039
-0x4896 = 0x7053
-0x4A4D = 0x707B
-0x4B56 = 0x712E
-0x4B6F = 0x7130
-0x4C16 = 0x7135
-0x4D14 = 0x7144
-0x4E0E = 0x715D
-0x4E37 = 0x7161
-0x4E6A = 0x7166
-0x4E8B = 0x7169
-0x504A = 0x7175
-0x5055 = 0x7177
-0x5122 = 0x717A
-0x51A9 = 0x7221
-0x51CD = 0x7224
-0x51E5 = 0x7223
-0x521E = 0x7228
-0x524C = 0x722C
-0x542E = 0x723D
-0x54D9 = 0x7248
-0x55A7 = 0x725B
-0x57A9 = 0x7275
-0x57B4 = 0x7276
-0x59D4 = 0x7332
-0x5AE3 = 0x733E
-0x5AE4 = 0x733D
-0x5AF1 = 0x7340
-0x5BB2 = 0x7352
-0x5C4B = 0x735D
-0x5C64 = 0x735E
-0x5E2E = 0x7373
-0x5E56 = 0x7374
-0x5E62 = 0x7377
-0x5E65 = 0x7375
-0x5EC2 = 0x737D
-0x5ED8 = 0x737B
-0x5EE8 = 0x7422
-0x5F23 = 0x7424
-0x5F5C = 0x7427
-0x5FD4 = 0x742F
-0x5FE0 = 0x742E
-0x5FFB = 0x7435
-0x600C = 0x7434
-0x6017 = 0x743D
-0x6060 = 0x7442
-0x60ED = 0x744F
-0x6270 = 0x7469
-0x6286 = 0x746B
-0x634C = 0x7472
-0x6402 = 0x7479
-0x667E = 0x7535
-0x66B0 = 0x753A
-0x671D = 0x7546
-0x68DD = 0x7556
-0x68EA = 0x7558
-0x6951 = 0x755A
-0x696F = 0x755D
-0x69DD = 0x755F
-0x6A1E = 0x7563
-0x6A58 = 0x756A
-0x6A8C = 0x7570
-0x6AB7 = 0x7573
-0x6C29 = 0x2544
-0x6C73 = 0x7644
-0x6CDD = 0x764E
-0x6E65 = 0x765D
-0x6F94 = 0x7675
-0x6FF6 = 0x7721
-0x6FF7 = 0x7722
-0x6FF8 = 0x767E
-0x710D = 0x7733
-0x7139 = 0x7736
-0x73DA = 0x7765
-0x73DB = 0x7764
-0x73FE = 0x776B
-0x7410 = 0x776E
-0x7449 = 0x7773
-0x7614 = 0x782A
-0x7615 = 0x7829
-0x7631 = 0x782C
-0x7693 = 0x7834
-0x770E = 0x783C
-0x7723 = 0x783E
-0x7752 = 0x7842
-0x7985 = 0x7856
-0x7A84 = 0x7863
-0x7BB3 = 0x7877
-0x7BBE = 0x7879
-0x7BC7 = 0x787A
-0x7CB8 = 0x7925
-0x7DA0 = 0x792F
-0x7E10 = 0x7932
-0x7FB7 = 0x7939
-0x808A = 0x7942
-0x80BB = 0x7948
-0x8282 = 0x7959
-0x82F3 = 0x795E
-0x840C = 0x7966
-0x8455 = 0x796B
-0x856B = 0x797A
-0x85C8 = 0x797E
-0x85C9 = 0x7A21
-0x86D7 = 0x7A2C
-0x86FA = 0x7A2F
-0x8946 = 0x7A50
-0x8949 = 0x7A4F
-0x896B = 0x7A57
-0x8987 = 0x7A65
-0x8988 = 0x7A66
-0x89BA = 0x7A71
-0x89BB = 0x7A72
-0x8A1E = 0x7A7E
-0x8A29 = 0x7B21
-0x8A43 = 0x7B2D
-0x8A71 = 0x7B2C
-0x8A99 = 0x7B36
-0x8ACD = 0x7B37
-0x8ADD = 0x7B3E
-0x8AE4 = 0x7B3D
-0x8BC1 = 0x7B4E
-0x8BEF = 0x7B4F
-0x8D10 = 0x7B57
-0x8D71 = 0x7B5A
-0x8DFB = 0x7B5C
-0x8E1F = 0x7B5D
-0x8E36 = 0x7B61
-0x8E89 = 0x7B65
-0x8EEB = 0x7B67
-0x8F32 = 0x7B69
-0x8FF8 = 0x7B71
-0x92A0 = 0x7C22
-0x92B1 = 0x7C23
-0x9490 = 0x7C38
-0x95CF = 0x7C42
-0x967F = 0x7C4C
-0x96F0 = 0x7C56
-0x9719 = 0x7C59
-0x9750 = 0x7C5D
-0x98C6 = 0x7C76
-0x9A72 = 0x7D2C
-0x9DDB = 0x7D4B
-0x9E15 = 0x7D59
-0x9E3D = 0x7D4C
-0x9E49 = 0x7D5D
-0x9E8A = 0x7D5B
-0x9EC4 = 0x7D67
-0x9EDB = 0x7D70
-0x9EE9 = 0x7D6D
-0x9FCE = 0x7E25
-0xA01A = 0x7E2B
-0xA02F = 0x7E29
-0xA082 = 0x7E35
-0xA0F9 = 0x7E32
-0xA38C = 0x7E58
-0xA437 = 0x7E5A
-0xA5F1 = 0x7E6E
-0xA602 = 0x7E70
-0xA61A = 0x7E72
-0xA6B2 = 0x7E76
-END_MAP
diff --git a/enc/trans/big5.trans b/enc/trans/big5.trans
index c85ada3731..9dacfd1f7e 100644
--- a/enc/trans/big5.trans
+++ b/enc/trans/big5.trans
@@ -26,7 +26,8 @@
<%= transcode_generated_code %>
-TRANS_INIT(big5)
+void
+Init_big5(void)
{
<%= transcode_register_code %>
}
diff --git a/enc/trans/chinese.trans b/enc/trans/chinese.trans
index 282c91aba7..0662a3bebc 100644
--- a/enc/trans/chinese.trans
+++ b/enc/trans/chinese.trans
@@ -25,7 +25,8 @@
<%= transcode_generated_code %>
-TRANS_INIT(chinese)
+void
+Init_chinese(void)
{
<%= transcode_register_code %>
}
diff --git a/enc/trans/emoji.trans b/enc/trans/emoji.trans
index 25d9fdd4d8..1cf13743a2 100644
--- a/enc/trans/emoji.trans
+++ b/enc/trans/emoji.trans
@@ -30,7 +30,8 @@
<%= transcode_generated_code %>
-TRANS_INIT(emoji)
+void
+Init_emoji(void)
{
<%= transcode_register_code %>
}
diff --git a/enc/trans/emoji_iso2022_kddi.trans b/enc/trans/emoji_iso2022_kddi.trans
index ea180c1e42..ccf3139d3c 100644
--- a/enc/trans/emoji_iso2022_kddi.trans
+++ b/enc/trans/emoji_iso2022_kddi.trans
@@ -208,7 +208,8 @@ rb_iso2022jp_kddi_encoder = {
iso2022jp_kddi_encoder_reset_sequence_size, finish_iso2022jp_kddi_encoder
};
-TRANS_INIT(emoji_iso2022_kddi)
+void
+Init_emoji_iso2022_kddi(void)
{
rb_register_transcoder(&rb_iso2022jp_kddi_decoder);
rb_register_transcoder(&rb_iso2022jp_kddi_encoder);
diff --git a/enc/trans/emoji_sjis_docomo.trans b/enc/trans/emoji_sjis_docomo.trans
index 5dd9c7a1e3..36e6e20339 100644
--- a/enc/trans/emoji_sjis_docomo.trans
+++ b/enc/trans/emoji_sjis_docomo.trans
@@ -26,7 +26,8 @@
<%= transcode_generated_code %>
-TRANS_INIT(emoji_sjis_docomo)
+void
+Init_emoji_sjis_docomo(void)
{
<%= transcode_register_code %>
}
diff --git a/enc/trans/emoji_sjis_kddi.trans b/enc/trans/emoji_sjis_kddi.trans
index 6df62f14d1..654bed134e 100644
--- a/enc/trans/emoji_sjis_kddi.trans
+++ b/enc/trans/emoji_sjis_kddi.trans
@@ -27,7 +27,8 @@
<%= transcode_generated_code %>
-TRANS_INIT(emoji_sjis_kddi)
+void
+Init_emoji_sjis_kddi(void)
{
<%= transcode_register_code %>
}
diff --git a/enc/trans/emoji_sjis_softbank.trans b/enc/trans/emoji_sjis_softbank.trans
index c520035347..c152d99c76 100644
--- a/enc/trans/emoji_sjis_softbank.trans
+++ b/enc/trans/emoji_sjis_softbank.trans
@@ -26,7 +26,8 @@
<%= transcode_generated_code %>
-TRANS_INIT(emoji_sjis_softbank)
+void
+Init_emoji_sjis_softbank(void)
{
<%= transcode_register_code %>
}
diff --git a/enc/trans/escape.trans b/enc/trans/escape.trans
index 550e4ac767..a2fbebac33 100644
--- a/enc/trans/escape.trans
+++ b/enc/trans/escape.trans
@@ -85,7 +85,8 @@ rb_escape_xml_attr_quote = {
escape_xml_attr_quote_finish
};
-TRANS_INIT(escape)
+void
+Init_escape(void)
{
<%= transcode_register_code %>
rb_register_transcoder(&rb_escape_xml_attr_quote);
diff --git a/enc/trans/euckr-tbl.rb b/enc/trans/euckr-tbl.rb
index 4ce8521a8a..773cd90122 100644
--- a/enc/trans/euckr-tbl.rb
+++ b/enc/trans/euckr-tbl.rb
@@ -162,8 +162,6 @@ EUCKR_TO_UCS_TBL = [
["A2E3",0x33C2],
["A2E4",0x33D8],
["A2E5",0x2121],
- ["A2E6",0x20AC],
- ["A2E7",0x00AE],
["A3A1",0xFF01],
["A3A2",0xFF02],
["A3A3",0xFF03],
diff --git a/enc/trans/gb18030.trans b/enc/trans/gb18030.trans
index 94c866eb39..c7da4c64b4 100644
--- a/enc/trans/gb18030.trans
+++ b/enc/trans/gb18030.trans
@@ -176,7 +176,8 @@ rb_to_GB18030 = {
};
-TRANS_INIT(gb18030)
+void
+Init_gb18030(void)
{
rb_register_transcoder(&rb_from_GB18030);
rb_register_transcoder(&rb_to_GB18030);
diff --git a/enc/trans/gbk.trans b/enc/trans/gbk.trans
index 3c2cf0c1af..0df148198e 100644
--- a/enc/trans/gbk.trans
+++ b/enc/trans/gbk.trans
@@ -9,7 +9,8 @@
<%= transcode_generated_code %>
-TRANS_INIT(gbk)
+void
+Init_gbk(void)
{
<%= transcode_register_code %>
}
diff --git a/enc/trans/iso-8859-16-tbl.rb b/enc/trans/iso-8859-16-tbl.rb
deleted file mode 100644
index 27f1e49935..0000000000
--- a/enc/trans/iso-8859-16-tbl.rb
+++ /dev/null
@@ -1,98 +0,0 @@
-ISO_8859_16_TO_UCS_TBL = [
- ["A0", 0x00A0],
- ["A1", 0x0104],
- ["A2", 0x0105],
- ["A3", 0x0141],
- ["A4", 0x20AC],
- ["A5", 0x201E],
- ["A6", 0x0160],
- ["A7", 0x00A7],
- ["A8", 0x0161],
- ["A9", 0x00A9],
- ["AA", 0x0218],
- ["AB", 0x00AB],
- ["AC", 0x0179],
- ["AD", 0x00AD],
- ["AE", 0x017A],
- ["AF", 0x017B],
- ["B0", 0x00B0],
- ["B1", 0x00B1],
- ["B2", 0x010C],
- ["B3", 0x0142],
- ["B4", 0x017D],
- ["B5", 0x201D],
- ["B6", 0x00B6],
- ["B7", 0x00B7],
- ["B8", 0x017E],
- ["B9", 0x010D],
- ["BA", 0x0219],
- ["BB", 0x00BB],
- ["BC", 0x0152],
- ["BD", 0x0153],
- ["BE", 0x0178],
- ["BF", 0x017C],
- ["C0", 0x00C0],
- ["C1", 0x00C1],
- ["C2", 0x00C2],
- ["C3", 0x0102],
- ["C4", 0x00C4],
- ["C5", 0x0106],
- ["C6", 0x00C6],
- ["C7", 0x00C7],
- ["C8", 0x00C8],
- ["C9", 0x00C9],
- ["CA", 0x00CA],
- ["CB", 0x00CB],
- ["CC", 0x00CC],
- ["CD", 0x00CD],
- ["CE", 0x00CE],
- ["CF", 0x00CF],
- ["D0", 0x0110],
- ["D1", 0x0143],
- ["D2", 0x00D2],
- ["D3", 0x00D3],
- ["D4", 0x00D4],
- ["D5", 0x0150],
- ["D6", 0x00D6],
- ["D7", 0x015A],
- ["D8", 0x0170],
- ["D9", 0x00D9],
- ["DA", 0x00DA],
- ["DB", 0x00DB],
- ["DC", 0x00DC],
- ["DD", 0x0118],
- ["DE", 0x021A],
- ["DF", 0x00DF],
- ["E0", 0x00E0],
- ["E1", 0x00E1],
- ["E2", 0x00E2],
- ["E3", 0x0103],
- ["E4", 0x00E4],
- ["E5", 0x0107],
- ["E6", 0x00E6],
- ["E7", 0x00E7],
- ["E8", 0x00E8],
- ["E9", 0x00E9],
- ["EA", 0x00EA],
- ["EB", 0x00EB],
- ["EC", 0x00EC],
- ["ED", 0x00ED],
- ["EE", 0x00EE],
- ["EF", 0x00EF],
- ["F0", 0x0111],
- ["F1", 0x0144],
- ["F2", 0x00F2],
- ["F3", 0x00F3],
- ["F4", 0x00F4],
- ["F5", 0x0151],
- ["F6", 0x00F6],
- ["F7", 0x015B],
- ["F8", 0x0171],
- ["F9", 0x00F9],
- ["FA", 0x00FA],
- ["FB", 0x00FB],
- ["FC", 0x00FC],
- ["FD", 0x0119],
- ["FE", 0x021B],
- ["FF", 0x00FF],
-]
diff --git a/enc/trans/iso2022.trans b/enc/trans/iso2022.trans
index a441f1596d..3f40cce3c8 100644
--- a/enc/trans/iso2022.trans
+++ b/enc/trans/iso2022.trans
@@ -553,7 +553,8 @@ rb_cp50220_encoder = {
iso2022jp_encoder_reset_sequence_size, finish_cp50220_encoder
};
-TRANS_INIT(iso2022)
+void
+Init_iso2022(void)
{
rb_register_transcoder(&rb_iso2022jp_decoder);
rb_register_transcoder(&rb_iso2022jp_encoder);
diff --git a/enc/trans/japanese.trans b/enc/trans/japanese.trans
index 7ff024fa8d..ce5d0bb70f 100644
--- a/enc/trans/japanese.trans
+++ b/enc/trans/japanese.trans
@@ -90,7 +90,8 @@ rb_sjis2eucjp = {
NULL, NULL, NULL, fun_so_sjis2eucjp
};
-TRANS_INIT(japanese)
+void
+Init_japanese(void)
{
rb_register_transcoder(&rb_eucjp2sjis);
rb_register_transcoder(&rb_sjis2eucjp);
diff --git a/enc/trans/japanese_euc.trans b/enc/trans/japanese_euc.trans
index 0f63272321..a976fe57d3 100644
--- a/enc/trans/japanese_euc.trans
+++ b/enc/trans/japanese_euc.trans
@@ -18,12 +18,6 @@
citrus_decode_mapsrc("euc", 0x8080, "JISX0208VDC:NEC/UCS,CP932VDC:NEC_IBM/UCS,JISX0208:MS/UCS") +
citrus_decode_mapsrc("euc", 0x0080, "JISX0201-KANA/UCS")
- transcode_tblgen "EUC-JP-2004", "UTF-8",
- [["{00-7f}", :nomap]] +
- citrus_decode_mapsrc("euc", 0x8080, "JISX0208:1990/UCS,JISX0213-1/UCS@BMP,JISX0213-1/UCS@SIP") +
- citrus_decode_mapsrc("euc", 0x0080, "JISX0201-KANA/UCS") +
- citrus_decode_mapsrc("euc", 0x8000, "JISX0213-2/UCS@BMP,JISX0213-2/UCS@SIP")
-
transcode_tblgen "UTF-8", "EUC-JP",
[["{00-7f}", :nomap]] +
@@ -41,17 +35,12 @@
[["{00-7f}", :nomap]] +
citrus_decode_mapsrc("euc", 0x8080, "UCS/JISX0208:MS,UCS/JISX0208VDC:NEC,UCS/CP932VDC:NEC_IBM") +
citrus_decode_mapsrc("euc", 0x0080, "UCS/JISX0201-KANA")
-
- transcode_tblgen "UTF-8", "EUC-JP-2004",
- [["{00-7f}", :nomap]] +
- citrus_decode_mapsrc("euc", 0x8080, "UCS/JISX0208:1990,UCS@BMP/JISX0213-1,UCS@SIP/JISX0213-1") +
- citrus_decode_mapsrc("euc", 0x0080, "UCS/JISX0201-KANA") +
- citrus_decode_mapsrc("euc", 0x8000, "UCS@BMP/JISX0213-2,UCS@SIP/JISX0213-2")
%>
<%= transcode_generated_code %>
-TRANS_INIT(japanese_euc)
+void
+Init_japanese_euc(void)
{
<%= transcode_register_code %>
}
diff --git a/enc/trans/japanese_sjis.trans b/enc/trans/japanese_sjis.trans
index 8e1e13056d..00eace27a3 100644
--- a/enc/trans/japanese_sjis.trans
+++ b/enc/trans/japanese_sjis.trans
@@ -27,7 +27,8 @@
<%= transcode_generated_code %>
-TRANS_INIT(japanese_sjis)
+void
+Init_japanese_sjis(void)
{
<%= transcode_register_code %>
}
diff --git a/enc/trans/korean.trans b/enc/trans/korean.trans
index fda1a3eeda..ef1cdfcb8e 100644
--- a/enc/trans/korean.trans
+++ b/enc/trans/korean.trans
@@ -12,7 +12,8 @@
<%= transcode_generated_code %>
-TRANS_INIT(korean)
+void
+Init_korean(void)
{
<%= transcode_register_code %>
}
diff --git a/enc/trans/single_byte.trans b/enc/trans/single_byte.trans
index 50f568cb94..1bf1001720 100644
--- a/enc/trans/single_byte.trans
+++ b/enc/trans/single_byte.trans
@@ -43,7 +43,6 @@
transcode_tblgen_singlebyte "ISO-8859-13"
transcode_tblgen_singlebyte "ISO-8859-14"
transcode_tblgen_singlebyte "ISO-8859-15"
- transcode_tblgen_singlebyte "ISO-8859-16"
transcode_tblgen_singlebyte "WINDOWS-874"
transcode_tblgen_singlebyte "WINDOWS-1250"
transcode_tblgen_singlebyte "WINDOWS-1251"
@@ -84,7 +83,8 @@
<%= transcode_generated_code %>
-TRANS_INIT(single_byte)
+void
+Init_single_byte(void)
{
<%= transcode_register_code %>
}
diff --git a/enc/trans/utf8_mac.trans b/enc/trans/utf8_mac.trans
index 11ce35e212..8ea0afd73f 100644
--- a/enc/trans/utf8_mac.trans
+++ b/enc/trans/utf8_mac.trans
@@ -233,7 +233,8 @@ rb_from_UTF8_MAC = {
from_utf8_mac_finish
};
-TRANS_INIT(utf8_mac)
+void
+Init_utf8_mac(void)
{
<%= transcode_register_code %>
rb_register_transcoder(&rb_from_UTF8_MAC);
diff --git a/enc/trans/utf_16_32.trans b/enc/trans/utf_16_32.trans
index 632c8808ef..c841df035f 100644
--- a/enc/trans/utf_16_32.trans
+++ b/enc/trans/utf_16_32.trans
@@ -539,7 +539,8 @@ rb_to_UTF_32 = {
NULL, NULL, NULL, fun_so_to_utf_32
};
-TRANS_INIT(utf_16_32)
+void
+Init_utf_16_32(void)
{
rb_register_transcoder(&rb_from_UTF_16BE);
rb_register_transcoder(&rb_to_UTF_16BE);
diff --git a/enc/unicode.c b/enc/unicode.c
index 20990c1e54..beb5fa39f0 100644
--- a/enc/unicode.c
+++ b/enc/unicode.c
@@ -38,7 +38,7 @@
static const unsigned short EncUNICODE_ISO_8859_1_CtypeTable[256] = {
0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
- 0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,
+ 0x4008, 0x428c, 0x4289, 0x4288, 0x4288, 0x4288, 0x4008, 0x4008,
0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,
0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,
@@ -103,8 +103,1937 @@ typedef struct {
CodePointList2 to;
} CaseUnfold_13_Type;
-#include "enc/unicode/casefold.h"
+static const CaseFold_11_Type CaseFold[] = {
+ { 0x0041, {1, {0x0061}}},
+ { 0x0042, {1, {0x0062}}},
+ { 0x0043, {1, {0x0063}}},
+ { 0x0044, {1, {0x0064}}},
+ { 0x0045, {1, {0x0065}}},
+ { 0x0046, {1, {0x0066}}},
+ { 0x0047, {1, {0x0067}}},
+ { 0x0048, {1, {0x0068}}},
+ { 0x004a, {1, {0x006a}}},
+ { 0x004b, {1, {0x006b}}},
+ { 0x004c, {1, {0x006c}}},
+ { 0x004d, {1, {0x006d}}},
+ { 0x004e, {1, {0x006e}}},
+ { 0x004f, {1, {0x006f}}},
+ { 0x0050, {1, {0x0070}}},
+ { 0x0051, {1, {0x0071}}},
+ { 0x0052, {1, {0x0072}}},
+ { 0x0053, {1, {0x0073}}},
+ { 0x0054, {1, {0x0074}}},
+ { 0x0055, {1, {0x0075}}},
+ { 0x0056, {1, {0x0076}}},
+ { 0x0057, {1, {0x0077}}},
+ { 0x0058, {1, {0x0078}}},
+ { 0x0059, {1, {0x0079}}},
+ { 0x005a, {1, {0x007a}}},
+ { 0x00b5, {1, {0x03bc}}},
+ { 0x00c0, {1, {0x00e0}}},
+ { 0x00c1, {1, {0x00e1}}},
+ { 0x00c2, {1, {0x00e2}}},
+ { 0x00c3, {1, {0x00e3}}},
+ { 0x00c4, {1, {0x00e4}}},
+ { 0x00c5, {1, {0x00e5}}},
+ { 0x00c6, {1, {0x00e6}}},
+ { 0x00c7, {1, {0x00e7}}},
+ { 0x00c8, {1, {0x00e8}}},
+ { 0x00c9, {1, {0x00e9}}},
+ { 0x00ca, {1, {0x00ea}}},
+ { 0x00cb, {1, {0x00eb}}},
+ { 0x00cc, {1, {0x00ec}}},
+ { 0x00cd, {1, {0x00ed}}},
+ { 0x00ce, {1, {0x00ee}}},
+ { 0x00cf, {1, {0x00ef}}},
+ { 0x00d0, {1, {0x00f0}}},
+ { 0x00d1, {1, {0x00f1}}},
+ { 0x00d2, {1, {0x00f2}}},
+ { 0x00d3, {1, {0x00f3}}},
+ { 0x00d4, {1, {0x00f4}}},
+ { 0x00d5, {1, {0x00f5}}},
+ { 0x00d6, {1, {0x00f6}}},
+ { 0x00d8, {1, {0x00f8}}},
+ { 0x00d9, {1, {0x00f9}}},
+ { 0x00da, {1, {0x00fa}}},
+ { 0x00db, {1, {0x00fb}}},
+ { 0x00dc, {1, {0x00fc}}},
+ { 0x00dd, {1, {0x00fd}}},
+ { 0x00de, {1, {0x00fe}}},
+ { 0x00df, {2, {0x0073, 0x0073}}},
+ { 0x0100, {1, {0x0101}}},
+ { 0x0102, {1, {0x0103}}},
+ { 0x0104, {1, {0x0105}}},
+ { 0x0106, {1, {0x0107}}},
+ { 0x0108, {1, {0x0109}}},
+ { 0x010a, {1, {0x010b}}},
+ { 0x010c, {1, {0x010d}}},
+ { 0x010e, {1, {0x010f}}},
+ { 0x0110, {1, {0x0111}}},
+ { 0x0112, {1, {0x0113}}},
+ { 0x0114, {1, {0x0115}}},
+ { 0x0116, {1, {0x0117}}},
+ { 0x0118, {1, {0x0119}}},
+ { 0x011a, {1, {0x011b}}},
+ { 0x011c, {1, {0x011d}}},
+ { 0x011e, {1, {0x011f}}},
+ { 0x0120, {1, {0x0121}}},
+ { 0x0122, {1, {0x0123}}},
+ { 0x0124, {1, {0x0125}}},
+ { 0x0126, {1, {0x0127}}},
+ { 0x0128, {1, {0x0129}}},
+ { 0x012a, {1, {0x012b}}},
+ { 0x012c, {1, {0x012d}}},
+ { 0x012e, {1, {0x012f}}},
+ { 0x0132, {1, {0x0133}}},
+ { 0x0134, {1, {0x0135}}},
+ { 0x0136, {1, {0x0137}}},
+ { 0x0139, {1, {0x013a}}},
+ { 0x013b, {1, {0x013c}}},
+ { 0x013d, {1, {0x013e}}},
+ { 0x013f, {1, {0x0140}}},
+ { 0x0141, {1, {0x0142}}},
+ { 0x0143, {1, {0x0144}}},
+ { 0x0145, {1, {0x0146}}},
+ { 0x0147, {1, {0x0148}}},
+ { 0x0149, {2, {0x02bc, 0x006e}}},
+ { 0x014a, {1, {0x014b}}},
+ { 0x014c, {1, {0x014d}}},
+ { 0x014e, {1, {0x014f}}},
+ { 0x0150, {1, {0x0151}}},
+ { 0x0152, {1, {0x0153}}},
+ { 0x0154, {1, {0x0155}}},
+ { 0x0156, {1, {0x0157}}},
+ { 0x0158, {1, {0x0159}}},
+ { 0x015a, {1, {0x015b}}},
+ { 0x015c, {1, {0x015d}}},
+ { 0x015e, {1, {0x015f}}},
+ { 0x0160, {1, {0x0161}}},
+ { 0x0162, {1, {0x0163}}},
+ { 0x0164, {1, {0x0165}}},
+ { 0x0166, {1, {0x0167}}},
+ { 0x0168, {1, {0x0169}}},
+ { 0x016a, {1, {0x016b}}},
+ { 0x016c, {1, {0x016d}}},
+ { 0x016e, {1, {0x016f}}},
+ { 0x0170, {1, {0x0171}}},
+ { 0x0172, {1, {0x0173}}},
+ { 0x0174, {1, {0x0175}}},
+ { 0x0176, {1, {0x0177}}},
+ { 0x0178, {1, {0x00ff}}},
+ { 0x0179, {1, {0x017a}}},
+ { 0x017b, {1, {0x017c}}},
+ { 0x017d, {1, {0x017e}}},
+ { 0x017f, {1, {0x0073}}},
+ { 0x0181, {1, {0x0253}}},
+ { 0x0182, {1, {0x0183}}},
+ { 0x0184, {1, {0x0185}}},
+ { 0x0186, {1, {0x0254}}},
+ { 0x0187, {1, {0x0188}}},
+ { 0x0189, {1, {0x0256}}},
+ { 0x018a, {1, {0x0257}}},
+ { 0x018b, {1, {0x018c}}},
+ { 0x018e, {1, {0x01dd}}},
+ { 0x018f, {1, {0x0259}}},
+ { 0x0190, {1, {0x025b}}},
+ { 0x0191, {1, {0x0192}}},
+ { 0x0193, {1, {0x0260}}},
+ { 0x0194, {1, {0x0263}}},
+ { 0x0196, {1, {0x0269}}},
+ { 0x0197, {1, {0x0268}}},
+ { 0x0198, {1, {0x0199}}},
+ { 0x019c, {1, {0x026f}}},
+ { 0x019d, {1, {0x0272}}},
+ { 0x019f, {1, {0x0275}}},
+ { 0x01a0, {1, {0x01a1}}},
+ { 0x01a2, {1, {0x01a3}}},
+ { 0x01a4, {1, {0x01a5}}},
+ { 0x01a6, {1, {0x0280}}},
+ { 0x01a7, {1, {0x01a8}}},
+ { 0x01a9, {1, {0x0283}}},
+ { 0x01ac, {1, {0x01ad}}},
+ { 0x01ae, {1, {0x0288}}},
+ { 0x01af, {1, {0x01b0}}},
+ { 0x01b1, {1, {0x028a}}},
+ { 0x01b2, {1, {0x028b}}},
+ { 0x01b3, {1, {0x01b4}}},
+ { 0x01b5, {1, {0x01b6}}},
+ { 0x01b7, {1, {0x0292}}},
+ { 0x01b8, {1, {0x01b9}}},
+ { 0x01bc, {1, {0x01bd}}},
+ { 0x01c4, {1, {0x01c6}}},
+ { 0x01c5, {1, {0x01c6}}},
+ { 0x01c7, {1, {0x01c9}}},
+ { 0x01c8, {1, {0x01c9}}},
+ { 0x01ca, {1, {0x01cc}}},
+ { 0x01cb, {1, {0x01cc}}},
+ { 0x01cd, {1, {0x01ce}}},
+ { 0x01cf, {1, {0x01d0}}},
+ { 0x01d1, {1, {0x01d2}}},
+ { 0x01d3, {1, {0x01d4}}},
+ { 0x01d5, {1, {0x01d6}}},
+ { 0x01d7, {1, {0x01d8}}},
+ { 0x01d9, {1, {0x01da}}},
+ { 0x01db, {1, {0x01dc}}},
+ { 0x01de, {1, {0x01df}}},
+ { 0x01e0, {1, {0x01e1}}},
+ { 0x01e2, {1, {0x01e3}}},
+ { 0x01e4, {1, {0x01e5}}},
+ { 0x01e6, {1, {0x01e7}}},
+ { 0x01e8, {1, {0x01e9}}},
+ { 0x01ea, {1, {0x01eb}}},
+ { 0x01ec, {1, {0x01ed}}},
+ { 0x01ee, {1, {0x01ef}}},
+ { 0x01f0, {2, {0x006a, 0x030c}}},
+ { 0x01f1, {1, {0x01f3}}},
+ { 0x01f2, {1, {0x01f3}}},
+ { 0x01f4, {1, {0x01f5}}},
+ { 0x01f6, {1, {0x0195}}},
+ { 0x01f7, {1, {0x01bf}}},
+ { 0x01f8, {1, {0x01f9}}},
+ { 0x01fa, {1, {0x01fb}}},
+ { 0x01fc, {1, {0x01fd}}},
+ { 0x01fe, {1, {0x01ff}}},
+ { 0x0200, {1, {0x0201}}},
+ { 0x0202, {1, {0x0203}}},
+ { 0x0204, {1, {0x0205}}},
+ { 0x0206, {1, {0x0207}}},
+ { 0x0208, {1, {0x0209}}},
+ { 0x020a, {1, {0x020b}}},
+ { 0x020c, {1, {0x020d}}},
+ { 0x020e, {1, {0x020f}}},
+ { 0x0210, {1, {0x0211}}},
+ { 0x0212, {1, {0x0213}}},
+ { 0x0214, {1, {0x0215}}},
+ { 0x0216, {1, {0x0217}}},
+ { 0x0218, {1, {0x0219}}},
+ { 0x021a, {1, {0x021b}}},
+ { 0x021c, {1, {0x021d}}},
+ { 0x021e, {1, {0x021f}}},
+ { 0x0220, {1, {0x019e}}},
+ { 0x0222, {1, {0x0223}}},
+ { 0x0224, {1, {0x0225}}},
+ { 0x0226, {1, {0x0227}}},
+ { 0x0228, {1, {0x0229}}},
+ { 0x022a, {1, {0x022b}}},
+ { 0x022c, {1, {0x022d}}},
+ { 0x022e, {1, {0x022f}}},
+ { 0x0230, {1, {0x0231}}},
+ { 0x0232, {1, {0x0233}}},
+ { 0x023b, {1, {0x023c}}},
+ { 0x023d, {1, {0x019a}}},
+ { 0x0241, {1, {0x0294}}},
+ { 0x0345, {1, {0x03b9}}},
+ { 0x0386, {1, {0x03ac}}},
+ { 0x0388, {1, {0x03ad}}},
+ { 0x0389, {1, {0x03ae}}},
+ { 0x038a, {1, {0x03af}}},
+ { 0x038c, {1, {0x03cc}}},
+ { 0x038e, {1, {0x03cd}}},
+ { 0x038f, {1, {0x03ce}}},
+ { 0x0390, {3, {0x03b9, 0x0308, 0x0301}}},
+ { 0x0391, {1, {0x03b1}}},
+ { 0x0392, {1, {0x03b2}}},
+ { 0x0393, {1, {0x03b3}}},
+ { 0x0394, {1, {0x03b4}}},
+ { 0x0395, {1, {0x03b5}}},
+ { 0x0396, {1, {0x03b6}}},
+ { 0x0397, {1, {0x03b7}}},
+ { 0x0398, {1, {0x03b8}}},
+ { 0x0399, {1, {0x03b9}}},
+ { 0x039a, {1, {0x03ba}}},
+ { 0x039b, {1, {0x03bb}}},
+ { 0x039c, {1, {0x03bc}}},
+ { 0x039d, {1, {0x03bd}}},
+ { 0x039e, {1, {0x03be}}},
+ { 0x039f, {1, {0x03bf}}},
+ { 0x03a0, {1, {0x03c0}}},
+ { 0x03a1, {1, {0x03c1}}},
+ { 0x03a3, {1, {0x03c3}}},
+ { 0x03a4, {1, {0x03c4}}},
+ { 0x03a5, {1, {0x03c5}}},
+ { 0x03a6, {1, {0x03c6}}},
+ { 0x03a7, {1, {0x03c7}}},
+ { 0x03a8, {1, {0x03c8}}},
+ { 0x03a9, {1, {0x03c9}}},
+ { 0x03aa, {1, {0x03ca}}},
+ { 0x03ab, {1, {0x03cb}}},
+ { 0x03b0, {3, {0x03c5, 0x0308, 0x0301}}},
+ { 0x03c2, {1, {0x03c3}}},
+ { 0x03d0, {1, {0x03b2}}},
+ { 0x03d1, {1, {0x03b8}}},
+ { 0x03d5, {1, {0x03c6}}},
+ { 0x03d6, {1, {0x03c0}}},
+ { 0x03d8, {1, {0x03d9}}},
+ { 0x03da, {1, {0x03db}}},
+ { 0x03dc, {1, {0x03dd}}},
+ { 0x03de, {1, {0x03df}}},
+ { 0x03e0, {1, {0x03e1}}},
+ { 0x03e2, {1, {0x03e3}}},
+ { 0x03e4, {1, {0x03e5}}},
+ { 0x03e6, {1, {0x03e7}}},
+ { 0x03e8, {1, {0x03e9}}},
+ { 0x03ea, {1, {0x03eb}}},
+ { 0x03ec, {1, {0x03ed}}},
+ { 0x03ee, {1, {0x03ef}}},
+ { 0x03f0, {1, {0x03ba}}},
+ { 0x03f1, {1, {0x03c1}}},
+ { 0x03f4, {1, {0x03b8}}},
+ { 0x03f5, {1, {0x03b5}}},
+ { 0x03f7, {1, {0x03f8}}},
+ { 0x03f9, {1, {0x03f2}}},
+ { 0x03fa, {1, {0x03fb}}},
+ { 0x0400, {1, {0x0450}}},
+ { 0x0401, {1, {0x0451}}},
+ { 0x0402, {1, {0x0452}}},
+ { 0x0403, {1, {0x0453}}},
+ { 0x0404, {1, {0x0454}}},
+ { 0x0405, {1, {0x0455}}},
+ { 0x0406, {1, {0x0456}}},
+ { 0x0407, {1, {0x0457}}},
+ { 0x0408, {1, {0x0458}}},
+ { 0x0409, {1, {0x0459}}},
+ { 0x040a, {1, {0x045a}}},
+ { 0x040b, {1, {0x045b}}},
+ { 0x040c, {1, {0x045c}}},
+ { 0x040d, {1, {0x045d}}},
+ { 0x040e, {1, {0x045e}}},
+ { 0x040f, {1, {0x045f}}},
+ { 0x0410, {1, {0x0430}}},
+ { 0x0411, {1, {0x0431}}},
+ { 0x0412, {1, {0x0432}}},
+ { 0x0413, {1, {0x0433}}},
+ { 0x0414, {1, {0x0434}}},
+ { 0x0415, {1, {0x0435}}},
+ { 0x0416, {1, {0x0436}}},
+ { 0x0417, {1, {0x0437}}},
+ { 0x0418, {1, {0x0438}}},
+ { 0x0419, {1, {0x0439}}},
+ { 0x041a, {1, {0x043a}}},
+ { 0x041b, {1, {0x043b}}},
+ { 0x041c, {1, {0x043c}}},
+ { 0x041d, {1, {0x043d}}},
+ { 0x041e, {1, {0x043e}}},
+ { 0x041f, {1, {0x043f}}},
+ { 0x0420, {1, {0x0440}}},
+ { 0x0421, {1, {0x0441}}},
+ { 0x0422, {1, {0x0442}}},
+ { 0x0423, {1, {0x0443}}},
+ { 0x0424, {1, {0x0444}}},
+ { 0x0425, {1, {0x0445}}},
+ { 0x0426, {1, {0x0446}}},
+ { 0x0427, {1, {0x0447}}},
+ { 0x0428, {1, {0x0448}}},
+ { 0x0429, {1, {0x0449}}},
+ { 0x042a, {1, {0x044a}}},
+ { 0x042b, {1, {0x044b}}},
+ { 0x042c, {1, {0x044c}}},
+ { 0x042d, {1, {0x044d}}},
+ { 0x042e, {1, {0x044e}}},
+ { 0x042f, {1, {0x044f}}},
+ { 0x0460, {1, {0x0461}}},
+ { 0x0462, {1, {0x0463}}},
+ { 0x0464, {1, {0x0465}}},
+ { 0x0466, {1, {0x0467}}},
+ { 0x0468, {1, {0x0469}}},
+ { 0x046a, {1, {0x046b}}},
+ { 0x046c, {1, {0x046d}}},
+ { 0x046e, {1, {0x046f}}},
+ { 0x0470, {1, {0x0471}}},
+ { 0x0472, {1, {0x0473}}},
+ { 0x0474, {1, {0x0475}}},
+ { 0x0476, {1, {0x0477}}},
+ { 0x0478, {1, {0x0479}}},
+ { 0x047a, {1, {0x047b}}},
+ { 0x047c, {1, {0x047d}}},
+ { 0x047e, {1, {0x047f}}},
+ { 0x0480, {1, {0x0481}}},
+ { 0x048a, {1, {0x048b}}},
+ { 0x048c, {1, {0x048d}}},
+ { 0x048e, {1, {0x048f}}},
+ { 0x0490, {1, {0x0491}}},
+ { 0x0492, {1, {0x0493}}},
+ { 0x0494, {1, {0x0495}}},
+ { 0x0496, {1, {0x0497}}},
+ { 0x0498, {1, {0x0499}}},
+ { 0x049a, {1, {0x049b}}},
+ { 0x049c, {1, {0x049d}}},
+ { 0x049e, {1, {0x049f}}},
+ { 0x04a0, {1, {0x04a1}}},
+ { 0x04a2, {1, {0x04a3}}},
+ { 0x04a4, {1, {0x04a5}}},
+ { 0x04a6, {1, {0x04a7}}},
+ { 0x04a8, {1, {0x04a9}}},
+ { 0x04aa, {1, {0x04ab}}},
+ { 0x04ac, {1, {0x04ad}}},
+ { 0x04ae, {1, {0x04af}}},
+ { 0x04b0, {1, {0x04b1}}},
+ { 0x04b2, {1, {0x04b3}}},
+ { 0x04b4, {1, {0x04b5}}},
+ { 0x04b6, {1, {0x04b7}}},
+ { 0x04b8, {1, {0x04b9}}},
+ { 0x04ba, {1, {0x04bb}}},
+ { 0x04bc, {1, {0x04bd}}},
+ { 0x04be, {1, {0x04bf}}},
+ { 0x04c1, {1, {0x04c2}}},
+ { 0x04c3, {1, {0x04c4}}},
+ { 0x04c5, {1, {0x04c6}}},
+ { 0x04c7, {1, {0x04c8}}},
+ { 0x04c9, {1, {0x04ca}}},
+ { 0x04cb, {1, {0x04cc}}},
+ { 0x04cd, {1, {0x04ce}}},
+ { 0x04d0, {1, {0x04d1}}},
+ { 0x04d2, {1, {0x04d3}}},
+ { 0x04d4, {1, {0x04d5}}},
+ { 0x04d6, {1, {0x04d7}}},
+ { 0x04d8, {1, {0x04d9}}},
+ { 0x04da, {1, {0x04db}}},
+ { 0x04dc, {1, {0x04dd}}},
+ { 0x04de, {1, {0x04df}}},
+ { 0x04e0, {1, {0x04e1}}},
+ { 0x04e2, {1, {0x04e3}}},
+ { 0x04e4, {1, {0x04e5}}},
+ { 0x04e6, {1, {0x04e7}}},
+ { 0x04e8, {1, {0x04e9}}},
+ { 0x04ea, {1, {0x04eb}}},
+ { 0x04ec, {1, {0x04ed}}},
+ { 0x04ee, {1, {0x04ef}}},
+ { 0x04f0, {1, {0x04f1}}},
+ { 0x04f2, {1, {0x04f3}}},
+ { 0x04f4, {1, {0x04f5}}},
+ { 0x04f6, {1, {0x04f7}}},
+ { 0x04f8, {1, {0x04f9}}},
+ { 0x0500, {1, {0x0501}}},
+ { 0x0502, {1, {0x0503}}},
+ { 0x0504, {1, {0x0505}}},
+ { 0x0506, {1, {0x0507}}},
+ { 0x0508, {1, {0x0509}}},
+ { 0x050a, {1, {0x050b}}},
+ { 0x050c, {1, {0x050d}}},
+ { 0x050e, {1, {0x050f}}},
+ { 0x0531, {1, {0x0561}}},
+ { 0x0532, {1, {0x0562}}},
+ { 0x0533, {1, {0x0563}}},
+ { 0x0534, {1, {0x0564}}},
+ { 0x0535, {1, {0x0565}}},
+ { 0x0536, {1, {0x0566}}},
+ { 0x0537, {1, {0x0567}}},
+ { 0x0538, {1, {0x0568}}},
+ { 0x0539, {1, {0x0569}}},
+ { 0x053a, {1, {0x056a}}},
+ { 0x053b, {1, {0x056b}}},
+ { 0x053c, {1, {0x056c}}},
+ { 0x053d, {1, {0x056d}}},
+ { 0x053e, {1, {0x056e}}},
+ { 0x053f, {1, {0x056f}}},
+ { 0x0540, {1, {0x0570}}},
+ { 0x0541, {1, {0x0571}}},
+ { 0x0542, {1, {0x0572}}},
+ { 0x0543, {1, {0x0573}}},
+ { 0x0544, {1, {0x0574}}},
+ { 0x0545, {1, {0x0575}}},
+ { 0x0546, {1, {0x0576}}},
+ { 0x0547, {1, {0x0577}}},
+ { 0x0548, {1, {0x0578}}},
+ { 0x0549, {1, {0x0579}}},
+ { 0x054a, {1, {0x057a}}},
+ { 0x054b, {1, {0x057b}}},
+ { 0x054c, {1, {0x057c}}},
+ { 0x054d, {1, {0x057d}}},
+ { 0x054e, {1, {0x057e}}},
+ { 0x054f, {1, {0x057f}}},
+ { 0x0550, {1, {0x0580}}},
+ { 0x0551, {1, {0x0581}}},
+ { 0x0552, {1, {0x0582}}},
+ { 0x0553, {1, {0x0583}}},
+ { 0x0554, {1, {0x0584}}},
+ { 0x0555, {1, {0x0585}}},
+ { 0x0556, {1, {0x0586}}},
+ { 0x0587, {2, {0x0565, 0x0582}}},
+ { 0x10a0, {1, {0x2d00}}},
+ { 0x10a1, {1, {0x2d01}}},
+ { 0x10a2, {1, {0x2d02}}},
+ { 0x10a3, {1, {0x2d03}}},
+ { 0x10a4, {1, {0x2d04}}},
+ { 0x10a5, {1, {0x2d05}}},
+ { 0x10a6, {1, {0x2d06}}},
+ { 0x10a7, {1, {0x2d07}}},
+ { 0x10a8, {1, {0x2d08}}},
+ { 0x10a9, {1, {0x2d09}}},
+ { 0x10aa, {1, {0x2d0a}}},
+ { 0x10ab, {1, {0x2d0b}}},
+ { 0x10ac, {1, {0x2d0c}}},
+ { 0x10ad, {1, {0x2d0d}}},
+ { 0x10ae, {1, {0x2d0e}}},
+ { 0x10af, {1, {0x2d0f}}},
+ { 0x10b0, {1, {0x2d10}}},
+ { 0x10b1, {1, {0x2d11}}},
+ { 0x10b2, {1, {0x2d12}}},
+ { 0x10b3, {1, {0x2d13}}},
+ { 0x10b4, {1, {0x2d14}}},
+ { 0x10b5, {1, {0x2d15}}},
+ { 0x10b6, {1, {0x2d16}}},
+ { 0x10b7, {1, {0x2d17}}},
+ { 0x10b8, {1, {0x2d18}}},
+ { 0x10b9, {1, {0x2d19}}},
+ { 0x10ba, {1, {0x2d1a}}},
+ { 0x10bb, {1, {0x2d1b}}},
+ { 0x10bc, {1, {0x2d1c}}},
+ { 0x10bd, {1, {0x2d1d}}},
+ { 0x10be, {1, {0x2d1e}}},
+ { 0x10bf, {1, {0x2d1f}}},
+ { 0x10c0, {1, {0x2d20}}},
+ { 0x10c1, {1, {0x2d21}}},
+ { 0x10c2, {1, {0x2d22}}},
+ { 0x10c3, {1, {0x2d23}}},
+ { 0x10c4, {1, {0x2d24}}},
+ { 0x10c5, {1, {0x2d25}}},
+ { 0x1e00, {1, {0x1e01}}},
+ { 0x1e02, {1, {0x1e03}}},
+ { 0x1e04, {1, {0x1e05}}},
+ { 0x1e06, {1, {0x1e07}}},
+ { 0x1e08, {1, {0x1e09}}},
+ { 0x1e0a, {1, {0x1e0b}}},
+ { 0x1e0c, {1, {0x1e0d}}},
+ { 0x1e0e, {1, {0x1e0f}}},
+ { 0x1e10, {1, {0x1e11}}},
+ { 0x1e12, {1, {0x1e13}}},
+ { 0x1e14, {1, {0x1e15}}},
+ { 0x1e16, {1, {0x1e17}}},
+ { 0x1e18, {1, {0x1e19}}},
+ { 0x1e1a, {1, {0x1e1b}}},
+ { 0x1e1c, {1, {0x1e1d}}},
+ { 0x1e1e, {1, {0x1e1f}}},
+ { 0x1e20, {1, {0x1e21}}},
+ { 0x1e22, {1, {0x1e23}}},
+ { 0x1e24, {1, {0x1e25}}},
+ { 0x1e26, {1, {0x1e27}}},
+ { 0x1e28, {1, {0x1e29}}},
+ { 0x1e2a, {1, {0x1e2b}}},
+ { 0x1e2c, {1, {0x1e2d}}},
+ { 0x1e2e, {1, {0x1e2f}}},
+ { 0x1e30, {1, {0x1e31}}},
+ { 0x1e32, {1, {0x1e33}}},
+ { 0x1e34, {1, {0x1e35}}},
+ { 0x1e36, {1, {0x1e37}}},
+ { 0x1e38, {1, {0x1e39}}},
+ { 0x1e3a, {1, {0x1e3b}}},
+ { 0x1e3c, {1, {0x1e3d}}},
+ { 0x1e3e, {1, {0x1e3f}}},
+ { 0x1e40, {1, {0x1e41}}},
+ { 0x1e42, {1, {0x1e43}}},
+ { 0x1e44, {1, {0x1e45}}},
+ { 0x1e46, {1, {0x1e47}}},
+ { 0x1e48, {1, {0x1e49}}},
+ { 0x1e4a, {1, {0x1e4b}}},
+ { 0x1e4c, {1, {0x1e4d}}},
+ { 0x1e4e, {1, {0x1e4f}}},
+ { 0x1e50, {1, {0x1e51}}},
+ { 0x1e52, {1, {0x1e53}}},
+ { 0x1e54, {1, {0x1e55}}},
+ { 0x1e56, {1, {0x1e57}}},
+ { 0x1e58, {1, {0x1e59}}},
+ { 0x1e5a, {1, {0x1e5b}}},
+ { 0x1e5c, {1, {0x1e5d}}},
+ { 0x1e5e, {1, {0x1e5f}}},
+ { 0x1e60, {1, {0x1e61}}},
+ { 0x1e62, {1, {0x1e63}}},
+ { 0x1e64, {1, {0x1e65}}},
+ { 0x1e66, {1, {0x1e67}}},
+ { 0x1e68, {1, {0x1e69}}},
+ { 0x1e6a, {1, {0x1e6b}}},
+ { 0x1e6c, {1, {0x1e6d}}},
+ { 0x1e6e, {1, {0x1e6f}}},
+ { 0x1e70, {1, {0x1e71}}},
+ { 0x1e72, {1, {0x1e73}}},
+ { 0x1e74, {1, {0x1e75}}},
+ { 0x1e76, {1, {0x1e77}}},
+ { 0x1e78, {1, {0x1e79}}},
+ { 0x1e7a, {1, {0x1e7b}}},
+ { 0x1e7c, {1, {0x1e7d}}},
+ { 0x1e7e, {1, {0x1e7f}}},
+ { 0x1e80, {1, {0x1e81}}},
+ { 0x1e82, {1, {0x1e83}}},
+ { 0x1e84, {1, {0x1e85}}},
+ { 0x1e86, {1, {0x1e87}}},
+ { 0x1e88, {1, {0x1e89}}},
+ { 0x1e8a, {1, {0x1e8b}}},
+ { 0x1e8c, {1, {0x1e8d}}},
+ { 0x1e8e, {1, {0x1e8f}}},
+ { 0x1e90, {1, {0x1e91}}},
+ { 0x1e92, {1, {0x1e93}}},
+ { 0x1e94, {1, {0x1e95}}},
+ { 0x1e96, {2, {0x0068, 0x0331}}},
+ { 0x1e97, {2, {0x0074, 0x0308}}},
+ { 0x1e98, {2, {0x0077, 0x030a}}},
+ { 0x1e99, {2, {0x0079, 0x030a}}},
+ { 0x1e9a, {2, {0x0061, 0x02be}}},
+ { 0x1e9b, {1, {0x1e61}}},
+ { 0x1ea0, {1, {0x1ea1}}},
+ { 0x1ea2, {1, {0x1ea3}}},
+ { 0x1ea4, {1, {0x1ea5}}},
+ { 0x1ea6, {1, {0x1ea7}}},
+ { 0x1ea8, {1, {0x1ea9}}},
+ { 0x1eaa, {1, {0x1eab}}},
+ { 0x1eac, {1, {0x1ead}}},
+ { 0x1eae, {1, {0x1eaf}}},
+ { 0x1eb0, {1, {0x1eb1}}},
+ { 0x1eb2, {1, {0x1eb3}}},
+ { 0x1eb4, {1, {0x1eb5}}},
+ { 0x1eb6, {1, {0x1eb7}}},
+ { 0x1eb8, {1, {0x1eb9}}},
+ { 0x1eba, {1, {0x1ebb}}},
+ { 0x1ebc, {1, {0x1ebd}}},
+ { 0x1ebe, {1, {0x1ebf}}},
+ { 0x1ec0, {1, {0x1ec1}}},
+ { 0x1ec2, {1, {0x1ec3}}},
+ { 0x1ec4, {1, {0x1ec5}}},
+ { 0x1ec6, {1, {0x1ec7}}},
+ { 0x1ec8, {1, {0x1ec9}}},
+ { 0x1eca, {1, {0x1ecb}}},
+ { 0x1ecc, {1, {0x1ecd}}},
+ { 0x1ece, {1, {0x1ecf}}},
+ { 0x1ed0, {1, {0x1ed1}}},
+ { 0x1ed2, {1, {0x1ed3}}},
+ { 0x1ed4, {1, {0x1ed5}}},
+ { 0x1ed6, {1, {0x1ed7}}},
+ { 0x1ed8, {1, {0x1ed9}}},
+ { 0x1eda, {1, {0x1edb}}},
+ { 0x1edc, {1, {0x1edd}}},
+ { 0x1ede, {1, {0x1edf}}},
+ { 0x1ee0, {1, {0x1ee1}}},
+ { 0x1ee2, {1, {0x1ee3}}},
+ { 0x1ee4, {1, {0x1ee5}}},
+ { 0x1ee6, {1, {0x1ee7}}},
+ { 0x1ee8, {1, {0x1ee9}}},
+ { 0x1eea, {1, {0x1eeb}}},
+ { 0x1eec, {1, {0x1eed}}},
+ { 0x1eee, {1, {0x1eef}}},
+ { 0x1ef0, {1, {0x1ef1}}},
+ { 0x1ef2, {1, {0x1ef3}}},
+ { 0x1ef4, {1, {0x1ef5}}},
+ { 0x1ef6, {1, {0x1ef7}}},
+ { 0x1ef8, {1, {0x1ef9}}},
+ { 0x1f08, {1, {0x1f00}}},
+ { 0x1f09, {1, {0x1f01}}},
+ { 0x1f0a, {1, {0x1f02}}},
+ { 0x1f0b, {1, {0x1f03}}},
+ { 0x1f0c, {1, {0x1f04}}},
+ { 0x1f0d, {1, {0x1f05}}},
+ { 0x1f0e, {1, {0x1f06}}},
+ { 0x1f0f, {1, {0x1f07}}},
+ { 0x1f18, {1, {0x1f10}}},
+ { 0x1f19, {1, {0x1f11}}},
+ { 0x1f1a, {1, {0x1f12}}},
+ { 0x1f1b, {1, {0x1f13}}},
+ { 0x1f1c, {1, {0x1f14}}},
+ { 0x1f1d, {1, {0x1f15}}},
+ { 0x1f28, {1, {0x1f20}}},
+ { 0x1f29, {1, {0x1f21}}},
+ { 0x1f2a, {1, {0x1f22}}},
+ { 0x1f2b, {1, {0x1f23}}},
+ { 0x1f2c, {1, {0x1f24}}},
+ { 0x1f2d, {1, {0x1f25}}},
+ { 0x1f2e, {1, {0x1f26}}},
+ { 0x1f2f, {1, {0x1f27}}},
+ { 0x1f38, {1, {0x1f30}}},
+ { 0x1f39, {1, {0x1f31}}},
+ { 0x1f3a, {1, {0x1f32}}},
+ { 0x1f3b, {1, {0x1f33}}},
+ { 0x1f3c, {1, {0x1f34}}},
+ { 0x1f3d, {1, {0x1f35}}},
+ { 0x1f3e, {1, {0x1f36}}},
+ { 0x1f3f, {1, {0x1f37}}},
+ { 0x1f48, {1, {0x1f40}}},
+ { 0x1f49, {1, {0x1f41}}},
+ { 0x1f4a, {1, {0x1f42}}},
+ { 0x1f4b, {1, {0x1f43}}},
+ { 0x1f4c, {1, {0x1f44}}},
+ { 0x1f4d, {1, {0x1f45}}},
+ { 0x1f50, {2, {0x03c5, 0x0313}}},
+ { 0x1f52, {3, {0x03c5, 0x0313, 0x0300}}},
+ { 0x1f54, {3, {0x03c5, 0x0313, 0x0301}}},
+ { 0x1f56, {3, {0x03c5, 0x0313, 0x0342}}},
+ { 0x1f59, {1, {0x1f51}}},
+ { 0x1f5b, {1, {0x1f53}}},
+ { 0x1f5d, {1, {0x1f55}}},
+ { 0x1f5f, {1, {0x1f57}}},
+ { 0x1f68, {1, {0x1f60}}},
+ { 0x1f69, {1, {0x1f61}}},
+ { 0x1f6a, {1, {0x1f62}}},
+ { 0x1f6b, {1, {0x1f63}}},
+ { 0x1f6c, {1, {0x1f64}}},
+ { 0x1f6d, {1, {0x1f65}}},
+ { 0x1f6e, {1, {0x1f66}}},
+ { 0x1f6f, {1, {0x1f67}}},
+ { 0x1f80, {2, {0x1f00, 0x03b9}}},
+ { 0x1f81, {2, {0x1f01, 0x03b9}}},
+ { 0x1f82, {2, {0x1f02, 0x03b9}}},
+ { 0x1f83, {2, {0x1f03, 0x03b9}}},
+ { 0x1f84, {2, {0x1f04, 0x03b9}}},
+ { 0x1f85, {2, {0x1f05, 0x03b9}}},
+ { 0x1f86, {2, {0x1f06, 0x03b9}}},
+ { 0x1f87, {2, {0x1f07, 0x03b9}}},
+ { 0x1f88, {2, {0x1f00, 0x03b9}}},
+ { 0x1f89, {2, {0x1f01, 0x03b9}}},
+ { 0x1f8a, {2, {0x1f02, 0x03b9}}},
+ { 0x1f8b, {2, {0x1f03, 0x03b9}}},
+ { 0x1f8c, {2, {0x1f04, 0x03b9}}},
+ { 0x1f8d, {2, {0x1f05, 0x03b9}}},
+ { 0x1f8e, {2, {0x1f06, 0x03b9}}},
+ { 0x1f8f, {2, {0x1f07, 0x03b9}}},
+ { 0x1f90, {2, {0x1f20, 0x03b9}}},
+ { 0x1f91, {2, {0x1f21, 0x03b9}}},
+ { 0x1f92, {2, {0x1f22, 0x03b9}}},
+ { 0x1f93, {2, {0x1f23, 0x03b9}}},
+ { 0x1f94, {2, {0x1f24, 0x03b9}}},
+ { 0x1f95, {2, {0x1f25, 0x03b9}}},
+ { 0x1f96, {2, {0x1f26, 0x03b9}}},
+ { 0x1f97, {2, {0x1f27, 0x03b9}}},
+ { 0x1f98, {2, {0x1f20, 0x03b9}}},
+ { 0x1f99, {2, {0x1f21, 0x03b9}}},
+ { 0x1f9a, {2, {0x1f22, 0x03b9}}},
+ { 0x1f9b, {2, {0x1f23, 0x03b9}}},
+ { 0x1f9c, {2, {0x1f24, 0x03b9}}},
+ { 0x1f9d, {2, {0x1f25, 0x03b9}}},
+ { 0x1f9e, {2, {0x1f26, 0x03b9}}},
+ { 0x1f9f, {2, {0x1f27, 0x03b9}}},
+ { 0x1fa0, {2, {0x1f60, 0x03b9}}},
+ { 0x1fa1, {2, {0x1f61, 0x03b9}}},
+ { 0x1fa2, {2, {0x1f62, 0x03b9}}},
+ { 0x1fa3, {2, {0x1f63, 0x03b9}}},
+ { 0x1fa4, {2, {0x1f64, 0x03b9}}},
+ { 0x1fa5, {2, {0x1f65, 0x03b9}}},
+ { 0x1fa6, {2, {0x1f66, 0x03b9}}},
+ { 0x1fa7, {2, {0x1f67, 0x03b9}}},
+ { 0x1fa8, {2, {0x1f60, 0x03b9}}},
+ { 0x1fa9, {2, {0x1f61, 0x03b9}}},
+ { 0x1faa, {2, {0x1f62, 0x03b9}}},
+ { 0x1fab, {2, {0x1f63, 0x03b9}}},
+ { 0x1fac, {2, {0x1f64, 0x03b9}}},
+ { 0x1fad, {2, {0x1f65, 0x03b9}}},
+ { 0x1fae, {2, {0x1f66, 0x03b9}}},
+ { 0x1faf, {2, {0x1f67, 0x03b9}}},
+ { 0x1fb2, {2, {0x1f70, 0x03b9}}},
+ { 0x1fb3, {2, {0x03b1, 0x03b9}}},
+ { 0x1fb4, {2, {0x03ac, 0x03b9}}},
+ { 0x1fb6, {2, {0x03b1, 0x0342}}},
+ { 0x1fb7, {3, {0x03b1, 0x0342, 0x03b9}}},
+ { 0x1fb8, {1, {0x1fb0}}},
+ { 0x1fb9, {1, {0x1fb1}}},
+ { 0x1fba, {1, {0x1f70}}},
+ { 0x1fbb, {1, {0x1f71}}},
+ { 0x1fbc, {2, {0x03b1, 0x03b9}}},
+ { 0x1fbe, {1, {0x03b9}}},
+ { 0x1fc2, {2, {0x1f74, 0x03b9}}},
+ { 0x1fc3, {2, {0x03b7, 0x03b9}}},
+ { 0x1fc4, {2, {0x03ae, 0x03b9}}},
+ { 0x1fc6, {2, {0x03b7, 0x0342}}},
+ { 0x1fc7, {3, {0x03b7, 0x0342, 0x03b9}}},
+ { 0x1fc8, {1, {0x1f72}}},
+ { 0x1fc9, {1, {0x1f73}}},
+ { 0x1fca, {1, {0x1f74}}},
+ { 0x1fcb, {1, {0x1f75}}},
+ { 0x1fcc, {2, {0x03b7, 0x03b9}}},
+ { 0x1fd2, {3, {0x03b9, 0x0308, 0x0300}}},
+ { 0x1fd3, {3, {0x03b9, 0x0308, 0x0301}}},
+ { 0x1fd6, {2, {0x03b9, 0x0342}}},
+ { 0x1fd7, {3, {0x03b9, 0x0308, 0x0342}}},
+ { 0x1fd8, {1, {0x1fd0}}},
+ { 0x1fd9, {1, {0x1fd1}}},
+ { 0x1fda, {1, {0x1f76}}},
+ { 0x1fdb, {1, {0x1f77}}},
+ { 0x1fe2, {3, {0x03c5, 0x0308, 0x0300}}},
+ { 0x1fe3, {3, {0x03c5, 0x0308, 0x0301}}},
+ { 0x1fe4, {2, {0x03c1, 0x0313}}},
+ { 0x1fe6, {2, {0x03c5, 0x0342}}},
+ { 0x1fe7, {3, {0x03c5, 0x0308, 0x0342}}},
+ { 0x1fe8, {1, {0x1fe0}}},
+ { 0x1fe9, {1, {0x1fe1}}},
+ { 0x1fea, {1, {0x1f7a}}},
+ { 0x1feb, {1, {0x1f7b}}},
+ { 0x1fec, {1, {0x1fe5}}},
+ { 0x1ff2, {2, {0x1f7c, 0x03b9}}},
+ { 0x1ff3, {2, {0x03c9, 0x03b9}}},
+ { 0x1ff4, {2, {0x03ce, 0x03b9}}},
+ { 0x1ff6, {2, {0x03c9, 0x0342}}},
+ { 0x1ff7, {3, {0x03c9, 0x0342, 0x03b9}}},
+ { 0x1ff8, {1, {0x1f78}}},
+ { 0x1ff9, {1, {0x1f79}}},
+ { 0x1ffa, {1, {0x1f7c}}},
+ { 0x1ffb, {1, {0x1f7d}}},
+ { 0x1ffc, {2, {0x03c9, 0x03b9}}},
+ { 0x2126, {1, {0x03c9}}},
+ { 0x212a, {1, {0x006b}}},
+ { 0x212b, {1, {0x00e5}}},
+ { 0x2160, {1, {0x2170}}},
+ { 0x2161, {1, {0x2171}}},
+ { 0x2162, {1, {0x2172}}},
+ { 0x2163, {1, {0x2173}}},
+ { 0x2164, {1, {0x2174}}},
+ { 0x2165, {1, {0x2175}}},
+ { 0x2166, {1, {0x2176}}},
+ { 0x2167, {1, {0x2177}}},
+ { 0x2168, {1, {0x2178}}},
+ { 0x2169, {1, {0x2179}}},
+ { 0x216a, {1, {0x217a}}},
+ { 0x216b, {1, {0x217b}}},
+ { 0x216c, {1, {0x217c}}},
+ { 0x216d, {1, {0x217d}}},
+ { 0x216e, {1, {0x217e}}},
+ { 0x216f, {1, {0x217f}}},
+ { 0x24b6, {1, {0x24d0}}},
+ { 0x24b7, {1, {0x24d1}}},
+ { 0x24b8, {1, {0x24d2}}},
+ { 0x24b9, {1, {0x24d3}}},
+ { 0x24ba, {1, {0x24d4}}},
+ { 0x24bb, {1, {0x24d5}}},
+ { 0x24bc, {1, {0x24d6}}},
+ { 0x24bd, {1, {0x24d7}}},
+ { 0x24be, {1, {0x24d8}}},
+ { 0x24bf, {1, {0x24d9}}},
+ { 0x24c0, {1, {0x24da}}},
+ { 0x24c1, {1, {0x24db}}},
+ { 0x24c2, {1, {0x24dc}}},
+ { 0x24c3, {1, {0x24dd}}},
+ { 0x24c4, {1, {0x24de}}},
+ { 0x24c5, {1, {0x24df}}},
+ { 0x24c6, {1, {0x24e0}}},
+ { 0x24c7, {1, {0x24e1}}},
+ { 0x24c8, {1, {0x24e2}}},
+ { 0x24c9, {1, {0x24e3}}},
+ { 0x24ca, {1, {0x24e4}}},
+ { 0x24cb, {1, {0x24e5}}},
+ { 0x24cc, {1, {0x24e6}}},
+ { 0x24cd, {1, {0x24e7}}},
+ { 0x24ce, {1, {0x24e8}}},
+ { 0x24cf, {1, {0x24e9}}},
+ { 0x2c00, {1, {0x2c30}}},
+ { 0x2c01, {1, {0x2c31}}},
+ { 0x2c02, {1, {0x2c32}}},
+ { 0x2c03, {1, {0x2c33}}},
+ { 0x2c04, {1, {0x2c34}}},
+ { 0x2c05, {1, {0x2c35}}},
+ { 0x2c06, {1, {0x2c36}}},
+ { 0x2c07, {1, {0x2c37}}},
+ { 0x2c08, {1, {0x2c38}}},
+ { 0x2c09, {1, {0x2c39}}},
+ { 0x2c0a, {1, {0x2c3a}}},
+ { 0x2c0b, {1, {0x2c3b}}},
+ { 0x2c0c, {1, {0x2c3c}}},
+ { 0x2c0d, {1, {0x2c3d}}},
+ { 0x2c0e, {1, {0x2c3e}}},
+ { 0x2c0f, {1, {0x2c3f}}},
+ { 0x2c10, {1, {0x2c40}}},
+ { 0x2c11, {1, {0x2c41}}},
+ { 0x2c12, {1, {0x2c42}}},
+ { 0x2c13, {1, {0x2c43}}},
+ { 0x2c14, {1, {0x2c44}}},
+ { 0x2c15, {1, {0x2c45}}},
+ { 0x2c16, {1, {0x2c46}}},
+ { 0x2c17, {1, {0x2c47}}},
+ { 0x2c18, {1, {0x2c48}}},
+ { 0x2c19, {1, {0x2c49}}},
+ { 0x2c1a, {1, {0x2c4a}}},
+ { 0x2c1b, {1, {0x2c4b}}},
+ { 0x2c1c, {1, {0x2c4c}}},
+ { 0x2c1d, {1, {0x2c4d}}},
+ { 0x2c1e, {1, {0x2c4e}}},
+ { 0x2c1f, {1, {0x2c4f}}},
+ { 0x2c20, {1, {0x2c50}}},
+ { 0x2c21, {1, {0x2c51}}},
+ { 0x2c22, {1, {0x2c52}}},
+ { 0x2c23, {1, {0x2c53}}},
+ { 0x2c24, {1, {0x2c54}}},
+ { 0x2c25, {1, {0x2c55}}},
+ { 0x2c26, {1, {0x2c56}}},
+ { 0x2c27, {1, {0x2c57}}},
+ { 0x2c28, {1, {0x2c58}}},
+ { 0x2c29, {1, {0x2c59}}},
+ { 0x2c2a, {1, {0x2c5a}}},
+ { 0x2c2b, {1, {0x2c5b}}},
+ { 0x2c2c, {1, {0x2c5c}}},
+ { 0x2c2d, {1, {0x2c5d}}},
+ { 0x2c2e, {1, {0x2c5e}}},
+ { 0x2c80, {1, {0x2c81}}},
+ { 0x2c82, {1, {0x2c83}}},
+ { 0x2c84, {1, {0x2c85}}},
+ { 0x2c86, {1, {0x2c87}}},
+ { 0x2c88, {1, {0x2c89}}},
+ { 0x2c8a, {1, {0x2c8b}}},
+ { 0x2c8c, {1, {0x2c8d}}},
+ { 0x2c8e, {1, {0x2c8f}}},
+ { 0x2c90, {1, {0x2c91}}},
+ { 0x2c92, {1, {0x2c93}}},
+ { 0x2c94, {1, {0x2c95}}},
+ { 0x2c96, {1, {0x2c97}}},
+ { 0x2c98, {1, {0x2c99}}},
+ { 0x2c9a, {1, {0x2c9b}}},
+ { 0x2c9c, {1, {0x2c9d}}},
+ { 0x2c9e, {1, {0x2c9f}}},
+ { 0x2ca0, {1, {0x2ca1}}},
+ { 0x2ca2, {1, {0x2ca3}}},
+ { 0x2ca4, {1, {0x2ca5}}},
+ { 0x2ca6, {1, {0x2ca7}}},
+ { 0x2ca8, {1, {0x2ca9}}},
+ { 0x2caa, {1, {0x2cab}}},
+ { 0x2cac, {1, {0x2cad}}},
+ { 0x2cae, {1, {0x2caf}}},
+ { 0x2cb0, {1, {0x2cb1}}},
+ { 0x2cb2, {1, {0x2cb3}}},
+ { 0x2cb4, {1, {0x2cb5}}},
+ { 0x2cb6, {1, {0x2cb7}}},
+ { 0x2cb8, {1, {0x2cb9}}},
+ { 0x2cba, {1, {0x2cbb}}},
+ { 0x2cbc, {1, {0x2cbd}}},
+ { 0x2cbe, {1, {0x2cbf}}},
+ { 0x2cc0, {1, {0x2cc1}}},
+ { 0x2cc2, {1, {0x2cc3}}},
+ { 0x2cc4, {1, {0x2cc5}}},
+ { 0x2cc6, {1, {0x2cc7}}},
+ { 0x2cc8, {1, {0x2cc9}}},
+ { 0x2cca, {1, {0x2ccb}}},
+ { 0x2ccc, {1, {0x2ccd}}},
+ { 0x2cce, {1, {0x2ccf}}},
+ { 0x2cd0, {1, {0x2cd1}}},
+ { 0x2cd2, {1, {0x2cd3}}},
+ { 0x2cd4, {1, {0x2cd5}}},
+ { 0x2cd6, {1, {0x2cd7}}},
+ { 0x2cd8, {1, {0x2cd9}}},
+ { 0x2cda, {1, {0x2cdb}}},
+ { 0x2cdc, {1, {0x2cdd}}},
+ { 0x2cde, {1, {0x2cdf}}},
+ { 0x2ce0, {1, {0x2ce1}}},
+ { 0x2ce2, {1, {0x2ce3}}},
+ { 0xfb00, {2, {0x0066, 0x0066}}},
+ { 0xfb01, {2, {0x0066, 0x0069}}},
+ { 0xfb02, {2, {0x0066, 0x006c}}},
+ { 0xfb03, {3, {0x0066, 0x0066, 0x0069}}},
+ { 0xfb04, {3, {0x0066, 0x0066, 0x006c}}},
+ { 0xfb05, {2, {0x0073, 0x0074}}},
+ { 0xfb06, {2, {0x0073, 0x0074}}},
+ { 0xfb13, {2, {0x0574, 0x0576}}},
+ { 0xfb14, {2, {0x0574, 0x0565}}},
+ { 0xfb15, {2, {0x0574, 0x056b}}},
+ { 0xfb16, {2, {0x057e, 0x0576}}},
+ { 0xfb17, {2, {0x0574, 0x056d}}},
+ { 0xff21, {1, {0xff41}}},
+ { 0xff22, {1, {0xff42}}},
+ { 0xff23, {1, {0xff43}}},
+ { 0xff24, {1, {0xff44}}},
+ { 0xff25, {1, {0xff45}}},
+ { 0xff26, {1, {0xff46}}},
+ { 0xff27, {1, {0xff47}}},
+ { 0xff28, {1, {0xff48}}},
+ { 0xff29, {1, {0xff49}}},
+ { 0xff2a, {1, {0xff4a}}},
+ { 0xff2b, {1, {0xff4b}}},
+ { 0xff2c, {1, {0xff4c}}},
+ { 0xff2d, {1, {0xff4d}}},
+ { 0xff2e, {1, {0xff4e}}},
+ { 0xff2f, {1, {0xff4f}}},
+ { 0xff30, {1, {0xff50}}},
+ { 0xff31, {1, {0xff51}}},
+ { 0xff32, {1, {0xff52}}},
+ { 0xff33, {1, {0xff53}}},
+ { 0xff34, {1, {0xff54}}},
+ { 0xff35, {1, {0xff55}}},
+ { 0xff36, {1, {0xff56}}},
+ { 0xff37, {1, {0xff57}}},
+ { 0xff38, {1, {0xff58}}},
+ { 0xff39, {1, {0xff59}}},
+ { 0xff3a, {1, {0xff5a}}},
+ { 0x10400, {1, {0x10428}}},
+ { 0x10401, {1, {0x10429}}},
+ { 0x10402, {1, {0x1042a}}},
+ { 0x10403, {1, {0x1042b}}},
+ { 0x10404, {1, {0x1042c}}},
+ { 0x10405, {1, {0x1042d}}},
+ { 0x10406, {1, {0x1042e}}},
+ { 0x10407, {1, {0x1042f}}},
+ { 0x10408, {1, {0x10430}}},
+ { 0x10409, {1, {0x10431}}},
+ { 0x1040a, {1, {0x10432}}},
+ { 0x1040b, {1, {0x10433}}},
+ { 0x1040c, {1, {0x10434}}},
+ { 0x1040d, {1, {0x10435}}},
+ { 0x1040e, {1, {0x10436}}},
+ { 0x1040f, {1, {0x10437}}},
+ { 0x10410, {1, {0x10438}}},
+ { 0x10411, {1, {0x10439}}},
+ { 0x10412, {1, {0x1043a}}},
+ { 0x10413, {1, {0x1043b}}},
+ { 0x10414, {1, {0x1043c}}},
+ { 0x10415, {1, {0x1043d}}},
+ { 0x10416, {1, {0x1043e}}},
+ { 0x10417, {1, {0x1043f}}},
+ { 0x10418, {1, {0x10440}}},
+ { 0x10419, {1, {0x10441}}},
+ { 0x1041a, {1, {0x10442}}},
+ { 0x1041b, {1, {0x10443}}},
+ { 0x1041c, {1, {0x10444}}},
+ { 0x1041d, {1, {0x10445}}},
+ { 0x1041e, {1, {0x10446}}},
+ { 0x1041f, {1, {0x10447}}},
+ { 0x10420, {1, {0x10448}}},
+ { 0x10421, {1, {0x10449}}},
+ { 0x10422, {1, {0x1044a}}},
+ { 0x10423, {1, {0x1044b}}},
+ { 0x10424, {1, {0x1044c}}},
+ { 0x10425, {1, {0x1044d}}},
+ { 0x10426, {1, {0x1044e}}},
+ { 0x10427, {1, {0x1044f}}}
+};
+
+static const CaseFold_11_Type CaseFold_Locale[] = {
+ { 0x0049, {1, {0x0069}}},
+ { 0x0130, {2, {0x0069, 0x0307}}}
+};
+
+static const CaseUnfold_11_Type CaseUnfold_11[] = {
+ { 0x0061, {1, {0x0041 }}},
+ { 0x0062, {1, {0x0042 }}},
+ { 0x0063, {1, {0x0043 }}},
+ { 0x0064, {1, {0x0044 }}},
+ { 0x0065, {1, {0x0045 }}},
+ { 0x0066, {1, {0x0046 }}},
+ { 0x0067, {1, {0x0047 }}},
+ { 0x0068, {1, {0x0048 }}},
+ { 0x006a, {1, {0x004a }}},
+ { 0x006b, {2, {0x212a, 0x004b }}},
+ { 0x006c, {1, {0x004c }}},
+ { 0x006d, {1, {0x004d }}},
+ { 0x006e, {1, {0x004e }}},
+ { 0x006f, {1, {0x004f }}},
+ { 0x0070, {1, {0x0050 }}},
+ { 0x0071, {1, {0x0051 }}},
+ { 0x0072, {1, {0x0052 }}},
+ { 0x0073, {2, {0x0053, 0x017f }}},
+ { 0x0074, {1, {0x0054 }}},
+ { 0x0075, {1, {0x0055 }}},
+ { 0x0076, {1, {0x0056 }}},
+ { 0x0077, {1, {0x0057 }}},
+ { 0x0078, {1, {0x0058 }}},
+ { 0x0079, {1, {0x0059 }}},
+ { 0x007a, {1, {0x005a }}},
+ { 0x00e0, {1, {0x00c0 }}},
+ { 0x00e1, {1, {0x00c1 }}},
+ { 0x00e2, {1, {0x00c2 }}},
+ { 0x00e3, {1, {0x00c3 }}},
+ { 0x00e4, {1, {0x00c4 }}},
+ { 0x00e5, {2, {0x212b, 0x00c5 }}},
+ { 0x00e6, {1, {0x00c6 }}},
+ { 0x00e7, {1, {0x00c7 }}},
+ { 0x00e8, {1, {0x00c8 }}},
+ { 0x00e9, {1, {0x00c9 }}},
+ { 0x00ea, {1, {0x00ca }}},
+ { 0x00eb, {1, {0x00cb }}},
+ { 0x00ec, {1, {0x00cc }}},
+ { 0x00ed, {1, {0x00cd }}},
+ { 0x00ee, {1, {0x00ce }}},
+ { 0x00ef, {1, {0x00cf }}},
+ { 0x00f0, {1, {0x00d0 }}},
+ { 0x00f1, {1, {0x00d1 }}},
+ { 0x00f2, {1, {0x00d2 }}},
+ { 0x00f3, {1, {0x00d3 }}},
+ { 0x00f4, {1, {0x00d4 }}},
+ { 0x00f5, {1, {0x00d5 }}},
+ { 0x00f6, {1, {0x00d6 }}},
+ { 0x00f8, {1, {0x00d8 }}},
+ { 0x00f9, {1, {0x00d9 }}},
+ { 0x00fa, {1, {0x00da }}},
+ { 0x00fb, {1, {0x00db }}},
+ { 0x00fc, {1, {0x00dc }}},
+ { 0x00fd, {1, {0x00dd }}},
+ { 0x00fe, {1, {0x00de }}},
+ { 0x00ff, {1, {0x0178 }}},
+ { 0x0101, {1, {0x0100 }}},
+ { 0x0103, {1, {0x0102 }}},
+ { 0x0105, {1, {0x0104 }}},
+ { 0x0107, {1, {0x0106 }}},
+ { 0x0109, {1, {0x0108 }}},
+ { 0x010b, {1, {0x010a }}},
+ { 0x010d, {1, {0x010c }}},
+ { 0x010f, {1, {0x010e }}},
+ { 0x0111, {1, {0x0110 }}},
+ { 0x0113, {1, {0x0112 }}},
+ { 0x0115, {1, {0x0114 }}},
+ { 0x0117, {1, {0x0116 }}},
+ { 0x0119, {1, {0x0118 }}},
+ { 0x011b, {1, {0x011a }}},
+ { 0x011d, {1, {0x011c }}},
+ { 0x011f, {1, {0x011e }}},
+ { 0x0121, {1, {0x0120 }}},
+ { 0x0123, {1, {0x0122 }}},
+ { 0x0125, {1, {0x0124 }}},
+ { 0x0127, {1, {0x0126 }}},
+ { 0x0129, {1, {0x0128 }}},
+ { 0x012b, {1, {0x012a }}},
+ { 0x012d, {1, {0x012c }}},
+ { 0x012f, {1, {0x012e }}},
+ { 0x0133, {1, {0x0132 }}},
+ { 0x0135, {1, {0x0134 }}},
+ { 0x0137, {1, {0x0136 }}},
+ { 0x013a, {1, {0x0139 }}},
+ { 0x013c, {1, {0x013b }}},
+ { 0x013e, {1, {0x013d }}},
+ { 0x0140, {1, {0x013f }}},
+ { 0x0142, {1, {0x0141 }}},
+ { 0x0144, {1, {0x0143 }}},
+ { 0x0146, {1, {0x0145 }}},
+ { 0x0148, {1, {0x0147 }}},
+ { 0x014b, {1, {0x014a }}},
+ { 0x014d, {1, {0x014c }}},
+ { 0x014f, {1, {0x014e }}},
+ { 0x0151, {1, {0x0150 }}},
+ { 0x0153, {1, {0x0152 }}},
+ { 0x0155, {1, {0x0154 }}},
+ { 0x0157, {1, {0x0156 }}},
+ { 0x0159, {1, {0x0158 }}},
+ { 0x015b, {1, {0x015a }}},
+ { 0x015d, {1, {0x015c }}},
+ { 0x015f, {1, {0x015e }}},
+ { 0x0161, {1, {0x0160 }}},
+ { 0x0163, {1, {0x0162 }}},
+ { 0x0165, {1, {0x0164 }}},
+ { 0x0167, {1, {0x0166 }}},
+ { 0x0169, {1, {0x0168 }}},
+ { 0x016b, {1, {0x016a }}},
+ { 0x016d, {1, {0x016c }}},
+ { 0x016f, {1, {0x016e }}},
+ { 0x0171, {1, {0x0170 }}},
+ { 0x0173, {1, {0x0172 }}},
+ { 0x0175, {1, {0x0174 }}},
+ { 0x0177, {1, {0x0176 }}},
+ { 0x017a, {1, {0x0179 }}},
+ { 0x017c, {1, {0x017b }}},
+ { 0x017e, {1, {0x017d }}},
+ { 0x0183, {1, {0x0182 }}},
+ { 0x0185, {1, {0x0184 }}},
+ { 0x0188, {1, {0x0187 }}},
+ { 0x018c, {1, {0x018b }}},
+ { 0x0192, {1, {0x0191 }}},
+ { 0x0195, {1, {0x01f6 }}},
+ { 0x0199, {1, {0x0198 }}},
+ { 0x019a, {1, {0x023d }}},
+ { 0x019e, {1, {0x0220 }}},
+ { 0x01a1, {1, {0x01a0 }}},
+ { 0x01a3, {1, {0x01a2 }}},
+ { 0x01a5, {1, {0x01a4 }}},
+ { 0x01a8, {1, {0x01a7 }}},
+ { 0x01ad, {1, {0x01ac }}},
+ { 0x01b0, {1, {0x01af }}},
+ { 0x01b4, {1, {0x01b3 }}},
+ { 0x01b6, {1, {0x01b5 }}},
+ { 0x01b9, {1, {0x01b8 }}},
+ { 0x01bd, {1, {0x01bc }}},
+ { 0x01bf, {1, {0x01f7 }}},
+ { 0x01c6, {2, {0x01c4, 0x01c5 }}},
+ { 0x01c9, {2, {0x01c7, 0x01c8 }}},
+ { 0x01cc, {2, {0x01ca, 0x01cb }}},
+ { 0x01ce, {1, {0x01cd }}},
+ { 0x01d0, {1, {0x01cf }}},
+ { 0x01d2, {1, {0x01d1 }}},
+ { 0x01d4, {1, {0x01d3 }}},
+ { 0x01d6, {1, {0x01d5 }}},
+ { 0x01d8, {1, {0x01d7 }}},
+ { 0x01da, {1, {0x01d9 }}},
+ { 0x01dc, {1, {0x01db }}},
+ { 0x01dd, {1, {0x018e }}},
+ { 0x01df, {1, {0x01de }}},
+ { 0x01e1, {1, {0x01e0 }}},
+ { 0x01e3, {1, {0x01e2 }}},
+ { 0x01e5, {1, {0x01e4 }}},
+ { 0x01e7, {1, {0x01e6 }}},
+ { 0x01e9, {1, {0x01e8 }}},
+ { 0x01eb, {1, {0x01ea }}},
+ { 0x01ed, {1, {0x01ec }}},
+ { 0x01ef, {1, {0x01ee }}},
+ { 0x01f3, {2, {0x01f1, 0x01f2 }}},
+ { 0x01f5, {1, {0x01f4 }}},
+ { 0x01f9, {1, {0x01f8 }}},
+ { 0x01fb, {1, {0x01fa }}},
+ { 0x01fd, {1, {0x01fc }}},
+ { 0x01ff, {1, {0x01fe }}},
+ { 0x0201, {1, {0x0200 }}},
+ { 0x0203, {1, {0x0202 }}},
+ { 0x0205, {1, {0x0204 }}},
+ { 0x0207, {1, {0x0206 }}},
+ { 0x0209, {1, {0x0208 }}},
+ { 0x020b, {1, {0x020a }}},
+ { 0x020d, {1, {0x020c }}},
+ { 0x020f, {1, {0x020e }}},
+ { 0x0211, {1, {0x0210 }}},
+ { 0x0213, {1, {0x0212 }}},
+ { 0x0215, {1, {0x0214 }}},
+ { 0x0217, {1, {0x0216 }}},
+ { 0x0219, {1, {0x0218 }}},
+ { 0x021b, {1, {0x021a }}},
+ { 0x021d, {1, {0x021c }}},
+ { 0x021f, {1, {0x021e }}},
+ { 0x0223, {1, {0x0222 }}},
+ { 0x0225, {1, {0x0224 }}},
+ { 0x0227, {1, {0x0226 }}},
+ { 0x0229, {1, {0x0228 }}},
+ { 0x022b, {1, {0x022a }}},
+ { 0x022d, {1, {0x022c }}},
+ { 0x022f, {1, {0x022e }}},
+ { 0x0231, {1, {0x0230 }}},
+ { 0x0233, {1, {0x0232 }}},
+ { 0x023c, {1, {0x023b }}},
+ { 0x0253, {1, {0x0181 }}},
+ { 0x0254, {1, {0x0186 }}},
+ { 0x0256, {1, {0x0189 }}},
+ { 0x0257, {1, {0x018a }}},
+ { 0x0259, {1, {0x018f }}},
+ { 0x025b, {1, {0x0190 }}},
+ { 0x0260, {1, {0x0193 }}},
+ { 0x0263, {1, {0x0194 }}},
+ { 0x0268, {1, {0x0197 }}},
+ { 0x0269, {1, {0x0196 }}},
+ { 0x026f, {1, {0x019c }}},
+ { 0x0272, {1, {0x019d }}},
+ { 0x0275, {1, {0x019f }}},
+ { 0x0280, {1, {0x01a6 }}},
+ { 0x0283, {1, {0x01a9 }}},
+ { 0x0288, {1, {0x01ae }}},
+ { 0x028a, {1, {0x01b1 }}},
+ { 0x028b, {1, {0x01b2 }}},
+ { 0x0292, {1, {0x01b7 }}},
+ { 0x0294, {1, {0x0241 }}},
+ { 0x03ac, {1, {0x0386 }}},
+ { 0x03ad, {1, {0x0388 }}},
+ { 0x03ae, {1, {0x0389 }}},
+ { 0x03af, {1, {0x038a }}},
+ { 0x03b1, {1, {0x0391 }}},
+ { 0x03b2, {2, {0x0392, 0x03d0 }}},
+ { 0x03b3, {1, {0x0393 }}},
+ { 0x03b4, {1, {0x0394 }}},
+ { 0x03b5, {2, {0x03f5, 0x0395 }}},
+ { 0x03b6, {1, {0x0396 }}},
+ { 0x03b7, {1, {0x0397 }}},
+ { 0x03b8, {3, {0x03f4, 0x0398, 0x03d1 }}},
+ { 0x03b9, {3, {0x1fbe, 0x0399, 0x0345 }}},
+ { 0x03ba, {2, {0x03f0, 0x039a }}},
+ { 0x03bb, {1, {0x039b }}},
+ { 0x03bc, {2, {0x00b5, 0x039c }}},
+ { 0x03bd, {1, {0x039d }}},
+ { 0x03be, {1, {0x039e }}},
+ { 0x03bf, {1, {0x039f }}},
+ { 0x03c0, {2, {0x03a0, 0x03d6 }}},
+ { 0x03c1, {2, {0x03f1, 0x03a1 }}},
+ { 0x03c3, {2, {0x03a3, 0x03c2 }}},
+ { 0x03c4, {1, {0x03a4 }}},
+ { 0x03c5, {1, {0x03a5 }}},
+ { 0x03c6, {2, {0x03a6, 0x03d5 }}},
+ { 0x03c7, {1, {0x03a7 }}},
+ { 0x03c8, {1, {0x03a8 }}},
+ { 0x03c9, {2, {0x03a9, 0x2126 }}},
+ { 0x03ca, {1, {0x03aa }}},
+ { 0x03cb, {1, {0x03ab }}},
+ { 0x03cc, {1, {0x038c }}},
+ { 0x03cd, {1, {0x038e }}},
+ { 0x03ce, {1, {0x038f }}},
+ { 0x03d9, {1, {0x03d8 }}},
+ { 0x03db, {1, {0x03da }}},
+ { 0x03dd, {1, {0x03dc }}},
+ { 0x03df, {1, {0x03de }}},
+ { 0x03e1, {1, {0x03e0 }}},
+ { 0x03e3, {1, {0x03e2 }}},
+ { 0x03e5, {1, {0x03e4 }}},
+ { 0x03e7, {1, {0x03e6 }}},
+ { 0x03e9, {1, {0x03e8 }}},
+ { 0x03eb, {1, {0x03ea }}},
+ { 0x03ed, {1, {0x03ec }}},
+ { 0x03ef, {1, {0x03ee }}},
+ { 0x03f2, {1, {0x03f9 }}},
+ { 0x03f8, {1, {0x03f7 }}},
+ { 0x03fb, {1, {0x03fa }}},
+ { 0x0430, {1, {0x0410 }}},
+ { 0x0431, {1, {0x0411 }}},
+ { 0x0432, {1, {0x0412 }}},
+ { 0x0433, {1, {0x0413 }}},
+ { 0x0434, {1, {0x0414 }}},
+ { 0x0435, {1, {0x0415 }}},
+ { 0x0436, {1, {0x0416 }}},
+ { 0x0437, {1, {0x0417 }}},
+ { 0x0438, {1, {0x0418 }}},
+ { 0x0439, {1, {0x0419 }}},
+ { 0x043a, {1, {0x041a }}},
+ { 0x043b, {1, {0x041b }}},
+ { 0x043c, {1, {0x041c }}},
+ { 0x043d, {1, {0x041d }}},
+ { 0x043e, {1, {0x041e }}},
+ { 0x043f, {1, {0x041f }}},
+ { 0x0440, {1, {0x0420 }}},
+ { 0x0441, {1, {0x0421 }}},
+ { 0x0442, {1, {0x0422 }}},
+ { 0x0443, {1, {0x0423 }}},
+ { 0x0444, {1, {0x0424 }}},
+ { 0x0445, {1, {0x0425 }}},
+ { 0x0446, {1, {0x0426 }}},
+ { 0x0447, {1, {0x0427 }}},
+ { 0x0448, {1, {0x0428 }}},
+ { 0x0449, {1, {0x0429 }}},
+ { 0x044a, {1, {0x042a }}},
+ { 0x044b, {1, {0x042b }}},
+ { 0x044c, {1, {0x042c }}},
+ { 0x044d, {1, {0x042d }}},
+ { 0x044e, {1, {0x042e }}},
+ { 0x044f, {1, {0x042f }}},
+ { 0x0450, {1, {0x0400 }}},
+ { 0x0451, {1, {0x0401 }}},
+ { 0x0452, {1, {0x0402 }}},
+ { 0x0453, {1, {0x0403 }}},
+ { 0x0454, {1, {0x0404 }}},
+ { 0x0455, {1, {0x0405 }}},
+ { 0x0456, {1, {0x0406 }}},
+ { 0x0457, {1, {0x0407 }}},
+ { 0x0458, {1, {0x0408 }}},
+ { 0x0459, {1, {0x0409 }}},
+ { 0x045a, {1, {0x040a }}},
+ { 0x045b, {1, {0x040b }}},
+ { 0x045c, {1, {0x040c }}},
+ { 0x045d, {1, {0x040d }}},
+ { 0x045e, {1, {0x040e }}},
+ { 0x045f, {1, {0x040f }}},
+ { 0x0461, {1, {0x0460 }}},
+ { 0x0463, {1, {0x0462 }}},
+ { 0x0465, {1, {0x0464 }}},
+ { 0x0467, {1, {0x0466 }}},
+ { 0x0469, {1, {0x0468 }}},
+ { 0x046b, {1, {0x046a }}},
+ { 0x046d, {1, {0x046c }}},
+ { 0x046f, {1, {0x046e }}},
+ { 0x0471, {1, {0x0470 }}},
+ { 0x0473, {1, {0x0472 }}},
+ { 0x0475, {1, {0x0474 }}},
+ { 0x0477, {1, {0x0476 }}},
+ { 0x0479, {1, {0x0478 }}},
+ { 0x047b, {1, {0x047a }}},
+ { 0x047d, {1, {0x047c }}},
+ { 0x047f, {1, {0x047e }}},
+ { 0x0481, {1, {0x0480 }}},
+ { 0x048b, {1, {0x048a }}},
+ { 0x048d, {1, {0x048c }}},
+ { 0x048f, {1, {0x048e }}},
+ { 0x0491, {1, {0x0490 }}},
+ { 0x0493, {1, {0x0492 }}},
+ { 0x0495, {1, {0x0494 }}},
+ { 0x0497, {1, {0x0496 }}},
+ { 0x0499, {1, {0x0498 }}},
+ { 0x049b, {1, {0x049a }}},
+ { 0x049d, {1, {0x049c }}},
+ { 0x049f, {1, {0x049e }}},
+ { 0x04a1, {1, {0x04a0 }}},
+ { 0x04a3, {1, {0x04a2 }}},
+ { 0x04a5, {1, {0x04a4 }}},
+ { 0x04a7, {1, {0x04a6 }}},
+ { 0x04a9, {1, {0x04a8 }}},
+ { 0x04ab, {1, {0x04aa }}},
+ { 0x04ad, {1, {0x04ac }}},
+ { 0x04af, {1, {0x04ae }}},
+ { 0x04b1, {1, {0x04b0 }}},
+ { 0x04b3, {1, {0x04b2 }}},
+ { 0x04b5, {1, {0x04b4 }}},
+ { 0x04b7, {1, {0x04b6 }}},
+ { 0x04b9, {1, {0x04b8 }}},
+ { 0x04bb, {1, {0x04ba }}},
+ { 0x04bd, {1, {0x04bc }}},
+ { 0x04bf, {1, {0x04be }}},
+ { 0x04c2, {1, {0x04c1 }}},
+ { 0x04c4, {1, {0x04c3 }}},
+ { 0x04c6, {1, {0x04c5 }}},
+ { 0x04c8, {1, {0x04c7 }}},
+ { 0x04ca, {1, {0x04c9 }}},
+ { 0x04cc, {1, {0x04cb }}},
+ { 0x04ce, {1, {0x04cd }}},
+ { 0x04d1, {1, {0x04d0 }}},
+ { 0x04d3, {1, {0x04d2 }}},
+ { 0x04d5, {1, {0x04d4 }}},
+ { 0x04d7, {1, {0x04d6 }}},
+ { 0x04d9, {1, {0x04d8 }}},
+ { 0x04db, {1, {0x04da }}},
+ { 0x04dd, {1, {0x04dc }}},
+ { 0x04df, {1, {0x04de }}},
+ { 0x04e1, {1, {0x04e0 }}},
+ { 0x04e3, {1, {0x04e2 }}},
+ { 0x04e5, {1, {0x04e4 }}},
+ { 0x04e7, {1, {0x04e6 }}},
+ { 0x04e9, {1, {0x04e8 }}},
+ { 0x04eb, {1, {0x04ea }}},
+ { 0x04ed, {1, {0x04ec }}},
+ { 0x04ef, {1, {0x04ee }}},
+ { 0x04f1, {1, {0x04f0 }}},
+ { 0x04f3, {1, {0x04f2 }}},
+ { 0x04f5, {1, {0x04f4 }}},
+ { 0x04f7, {1, {0x04f6 }}},
+ { 0x04f9, {1, {0x04f8 }}},
+ { 0x0501, {1, {0x0500 }}},
+ { 0x0503, {1, {0x0502 }}},
+ { 0x0505, {1, {0x0504 }}},
+ { 0x0507, {1, {0x0506 }}},
+ { 0x0509, {1, {0x0508 }}},
+ { 0x050b, {1, {0x050a }}},
+ { 0x050d, {1, {0x050c }}},
+ { 0x050f, {1, {0x050e }}},
+ { 0x0561, {1, {0x0531 }}},
+ { 0x0562, {1, {0x0532 }}},
+ { 0x0563, {1, {0x0533 }}},
+ { 0x0564, {1, {0x0534 }}},
+ { 0x0565, {1, {0x0535 }}},
+ { 0x0566, {1, {0x0536 }}},
+ { 0x0567, {1, {0x0537 }}},
+ { 0x0568, {1, {0x0538 }}},
+ { 0x0569, {1, {0x0539 }}},
+ { 0x056a, {1, {0x053a }}},
+ { 0x056b, {1, {0x053b }}},
+ { 0x056c, {1, {0x053c }}},
+ { 0x056d, {1, {0x053d }}},
+ { 0x056e, {1, {0x053e }}},
+ { 0x056f, {1, {0x053f }}},
+ { 0x0570, {1, {0x0540 }}},
+ { 0x0571, {1, {0x0541 }}},
+ { 0x0572, {1, {0x0542 }}},
+ { 0x0573, {1, {0x0543 }}},
+ { 0x0574, {1, {0x0544 }}},
+ { 0x0575, {1, {0x0545 }}},
+ { 0x0576, {1, {0x0546 }}},
+ { 0x0577, {1, {0x0547 }}},
+ { 0x0578, {1, {0x0548 }}},
+ { 0x0579, {1, {0x0549 }}},
+ { 0x057a, {1, {0x054a }}},
+ { 0x057b, {1, {0x054b }}},
+ { 0x057c, {1, {0x054c }}},
+ { 0x057d, {1, {0x054d }}},
+ { 0x057e, {1, {0x054e }}},
+ { 0x057f, {1, {0x054f }}},
+ { 0x0580, {1, {0x0550 }}},
+ { 0x0581, {1, {0x0551 }}},
+ { 0x0582, {1, {0x0552 }}},
+ { 0x0583, {1, {0x0553 }}},
+ { 0x0584, {1, {0x0554 }}},
+ { 0x0585, {1, {0x0555 }}},
+ { 0x0586, {1, {0x0556 }}},
+ { 0x1e01, {1, {0x1e00 }}},
+ { 0x1e03, {1, {0x1e02 }}},
+ { 0x1e05, {1, {0x1e04 }}},
+ { 0x1e07, {1, {0x1e06 }}},
+ { 0x1e09, {1, {0x1e08 }}},
+ { 0x1e0b, {1, {0x1e0a }}},
+ { 0x1e0d, {1, {0x1e0c }}},
+ { 0x1e0f, {1, {0x1e0e }}},
+ { 0x1e11, {1, {0x1e10 }}},
+ { 0x1e13, {1, {0x1e12 }}},
+ { 0x1e15, {1, {0x1e14 }}},
+ { 0x1e17, {1, {0x1e16 }}},
+ { 0x1e19, {1, {0x1e18 }}},
+ { 0x1e1b, {1, {0x1e1a }}},
+ { 0x1e1d, {1, {0x1e1c }}},
+ { 0x1e1f, {1, {0x1e1e }}},
+ { 0x1e21, {1, {0x1e20 }}},
+ { 0x1e23, {1, {0x1e22 }}},
+ { 0x1e25, {1, {0x1e24 }}},
+ { 0x1e27, {1, {0x1e26 }}},
+ { 0x1e29, {1, {0x1e28 }}},
+ { 0x1e2b, {1, {0x1e2a }}},
+ { 0x1e2d, {1, {0x1e2c }}},
+ { 0x1e2f, {1, {0x1e2e }}},
+ { 0x1e31, {1, {0x1e30 }}},
+ { 0x1e33, {1, {0x1e32 }}},
+ { 0x1e35, {1, {0x1e34 }}},
+ { 0x1e37, {1, {0x1e36 }}},
+ { 0x1e39, {1, {0x1e38 }}},
+ { 0x1e3b, {1, {0x1e3a }}},
+ { 0x1e3d, {1, {0x1e3c }}},
+ { 0x1e3f, {1, {0x1e3e }}},
+ { 0x1e41, {1, {0x1e40 }}},
+ { 0x1e43, {1, {0x1e42 }}},
+ { 0x1e45, {1, {0x1e44 }}},
+ { 0x1e47, {1, {0x1e46 }}},
+ { 0x1e49, {1, {0x1e48 }}},
+ { 0x1e4b, {1, {0x1e4a }}},
+ { 0x1e4d, {1, {0x1e4c }}},
+ { 0x1e4f, {1, {0x1e4e }}},
+ { 0x1e51, {1, {0x1e50 }}},
+ { 0x1e53, {1, {0x1e52 }}},
+ { 0x1e55, {1, {0x1e54 }}},
+ { 0x1e57, {1, {0x1e56 }}},
+ { 0x1e59, {1, {0x1e58 }}},
+ { 0x1e5b, {1, {0x1e5a }}},
+ { 0x1e5d, {1, {0x1e5c }}},
+ { 0x1e5f, {1, {0x1e5e }}},
+ { 0x1e61, {2, {0x1e9b, 0x1e60 }}},
+ { 0x1e63, {1, {0x1e62 }}},
+ { 0x1e65, {1, {0x1e64 }}},
+ { 0x1e67, {1, {0x1e66 }}},
+ { 0x1e69, {1, {0x1e68 }}},
+ { 0x1e6b, {1, {0x1e6a }}},
+ { 0x1e6d, {1, {0x1e6c }}},
+ { 0x1e6f, {1, {0x1e6e }}},
+ { 0x1e71, {1, {0x1e70 }}},
+ { 0x1e73, {1, {0x1e72 }}},
+ { 0x1e75, {1, {0x1e74 }}},
+ { 0x1e77, {1, {0x1e76 }}},
+ { 0x1e79, {1, {0x1e78 }}},
+ { 0x1e7b, {1, {0x1e7a }}},
+ { 0x1e7d, {1, {0x1e7c }}},
+ { 0x1e7f, {1, {0x1e7e }}},
+ { 0x1e81, {1, {0x1e80 }}},
+ { 0x1e83, {1, {0x1e82 }}},
+ { 0x1e85, {1, {0x1e84 }}},
+ { 0x1e87, {1, {0x1e86 }}},
+ { 0x1e89, {1, {0x1e88 }}},
+ { 0x1e8b, {1, {0x1e8a }}},
+ { 0x1e8d, {1, {0x1e8c }}},
+ { 0x1e8f, {1, {0x1e8e }}},
+ { 0x1e91, {1, {0x1e90 }}},
+ { 0x1e93, {1, {0x1e92 }}},
+ { 0x1e95, {1, {0x1e94 }}},
+ { 0x1ea1, {1, {0x1ea0 }}},
+ { 0x1ea3, {1, {0x1ea2 }}},
+ { 0x1ea5, {1, {0x1ea4 }}},
+ { 0x1ea7, {1, {0x1ea6 }}},
+ { 0x1ea9, {1, {0x1ea8 }}},
+ { 0x1eab, {1, {0x1eaa }}},
+ { 0x1ead, {1, {0x1eac }}},
+ { 0x1eaf, {1, {0x1eae }}},
+ { 0x1eb1, {1, {0x1eb0 }}},
+ { 0x1eb3, {1, {0x1eb2 }}},
+ { 0x1eb5, {1, {0x1eb4 }}},
+ { 0x1eb7, {1, {0x1eb6 }}},
+ { 0x1eb9, {1, {0x1eb8 }}},
+ { 0x1ebb, {1, {0x1eba }}},
+ { 0x1ebd, {1, {0x1ebc }}},
+ { 0x1ebf, {1, {0x1ebe }}},
+ { 0x1ec1, {1, {0x1ec0 }}},
+ { 0x1ec3, {1, {0x1ec2 }}},
+ { 0x1ec5, {1, {0x1ec4 }}},
+ { 0x1ec7, {1, {0x1ec6 }}},
+ { 0x1ec9, {1, {0x1ec8 }}},
+ { 0x1ecb, {1, {0x1eca }}},
+ { 0x1ecd, {1, {0x1ecc }}},
+ { 0x1ecf, {1, {0x1ece }}},
+ { 0x1ed1, {1, {0x1ed0 }}},
+ { 0x1ed3, {1, {0x1ed2 }}},
+ { 0x1ed5, {1, {0x1ed4 }}},
+ { 0x1ed7, {1, {0x1ed6 }}},
+ { 0x1ed9, {1, {0x1ed8 }}},
+ { 0x1edb, {1, {0x1eda }}},
+ { 0x1edd, {1, {0x1edc }}},
+ { 0x1edf, {1, {0x1ede }}},
+ { 0x1ee1, {1, {0x1ee0 }}},
+ { 0x1ee3, {1, {0x1ee2 }}},
+ { 0x1ee5, {1, {0x1ee4 }}},
+ { 0x1ee7, {1, {0x1ee6 }}},
+ { 0x1ee9, {1, {0x1ee8 }}},
+ { 0x1eeb, {1, {0x1eea }}},
+ { 0x1eed, {1, {0x1eec }}},
+ { 0x1eef, {1, {0x1eee }}},
+ { 0x1ef1, {1, {0x1ef0 }}},
+ { 0x1ef3, {1, {0x1ef2 }}},
+ { 0x1ef5, {1, {0x1ef4 }}},
+ { 0x1ef7, {1, {0x1ef6 }}},
+ { 0x1ef9, {1, {0x1ef8 }}},
+ { 0x1f00, {1, {0x1f08 }}},
+ { 0x1f01, {1, {0x1f09 }}},
+ { 0x1f02, {1, {0x1f0a }}},
+ { 0x1f03, {1, {0x1f0b }}},
+ { 0x1f04, {1, {0x1f0c }}},
+ { 0x1f05, {1, {0x1f0d }}},
+ { 0x1f06, {1, {0x1f0e }}},
+ { 0x1f07, {1, {0x1f0f }}},
+ { 0x1f10, {1, {0x1f18 }}},
+ { 0x1f11, {1, {0x1f19 }}},
+ { 0x1f12, {1, {0x1f1a }}},
+ { 0x1f13, {1, {0x1f1b }}},
+ { 0x1f14, {1, {0x1f1c }}},
+ { 0x1f15, {1, {0x1f1d }}},
+ { 0x1f20, {1, {0x1f28 }}},
+ { 0x1f21, {1, {0x1f29 }}},
+ { 0x1f22, {1, {0x1f2a }}},
+ { 0x1f23, {1, {0x1f2b }}},
+ { 0x1f24, {1, {0x1f2c }}},
+ { 0x1f25, {1, {0x1f2d }}},
+ { 0x1f26, {1, {0x1f2e }}},
+ { 0x1f27, {1, {0x1f2f }}},
+ { 0x1f30, {1, {0x1f38 }}},
+ { 0x1f31, {1, {0x1f39 }}},
+ { 0x1f32, {1, {0x1f3a }}},
+ { 0x1f33, {1, {0x1f3b }}},
+ { 0x1f34, {1, {0x1f3c }}},
+ { 0x1f35, {1, {0x1f3d }}},
+ { 0x1f36, {1, {0x1f3e }}},
+ { 0x1f37, {1, {0x1f3f }}},
+ { 0x1f40, {1, {0x1f48 }}},
+ { 0x1f41, {1, {0x1f49 }}},
+ { 0x1f42, {1, {0x1f4a }}},
+ { 0x1f43, {1, {0x1f4b }}},
+ { 0x1f44, {1, {0x1f4c }}},
+ { 0x1f45, {1, {0x1f4d }}},
+ { 0x1f51, {1, {0x1f59 }}},
+ { 0x1f53, {1, {0x1f5b }}},
+ { 0x1f55, {1, {0x1f5d }}},
+ { 0x1f57, {1, {0x1f5f }}},
+ { 0x1f60, {1, {0x1f68 }}},
+ { 0x1f61, {1, {0x1f69 }}},
+ { 0x1f62, {1, {0x1f6a }}},
+ { 0x1f63, {1, {0x1f6b }}},
+ { 0x1f64, {1, {0x1f6c }}},
+ { 0x1f65, {1, {0x1f6d }}},
+ { 0x1f66, {1, {0x1f6e }}},
+ { 0x1f67, {1, {0x1f6f }}},
+ { 0x1f70, {1, {0x1fba }}},
+ { 0x1f71, {1, {0x1fbb }}},
+ { 0x1f72, {1, {0x1fc8 }}},
+ { 0x1f73, {1, {0x1fc9 }}},
+ { 0x1f74, {1, {0x1fca }}},
+ { 0x1f75, {1, {0x1fcb }}},
+ { 0x1f76, {1, {0x1fda }}},
+ { 0x1f77, {1, {0x1fdb }}},
+ { 0x1f78, {1, {0x1ff8 }}},
+ { 0x1f79, {1, {0x1ff9 }}},
+ { 0x1f7a, {1, {0x1fea }}},
+ { 0x1f7b, {1, {0x1feb }}},
+ { 0x1f7c, {1, {0x1ffa }}},
+ { 0x1f7d, {1, {0x1ffb }}},
+ { 0x1fb0, {1, {0x1fb8 }}},
+ { 0x1fb1, {1, {0x1fb9 }}},
+ { 0x1fd0, {1, {0x1fd8 }}},
+ { 0x1fd1, {1, {0x1fd9 }}},
+ { 0x1fe0, {1, {0x1fe8 }}},
+ { 0x1fe1, {1, {0x1fe9 }}},
+ { 0x1fe5, {1, {0x1fec }}},
+ { 0x2170, {1, {0x2160 }}},
+ { 0x2171, {1, {0x2161 }}},
+ { 0x2172, {1, {0x2162 }}},
+ { 0x2173, {1, {0x2163 }}},
+ { 0x2174, {1, {0x2164 }}},
+ { 0x2175, {1, {0x2165 }}},
+ { 0x2176, {1, {0x2166 }}},
+ { 0x2177, {1, {0x2167 }}},
+ { 0x2178, {1, {0x2168 }}},
+ { 0x2179, {1, {0x2169 }}},
+ { 0x217a, {1, {0x216a }}},
+ { 0x217b, {1, {0x216b }}},
+ { 0x217c, {1, {0x216c }}},
+ { 0x217d, {1, {0x216d }}},
+ { 0x217e, {1, {0x216e }}},
+ { 0x217f, {1, {0x216f }}},
+ { 0x24d0, {1, {0x24b6 }}},
+ { 0x24d1, {1, {0x24b7 }}},
+ { 0x24d2, {1, {0x24b8 }}},
+ { 0x24d3, {1, {0x24b9 }}},
+ { 0x24d4, {1, {0x24ba }}},
+ { 0x24d5, {1, {0x24bb }}},
+ { 0x24d6, {1, {0x24bc }}},
+ { 0x24d7, {1, {0x24bd }}},
+ { 0x24d8, {1, {0x24be }}},
+ { 0x24d9, {1, {0x24bf }}},
+ { 0x24da, {1, {0x24c0 }}},
+ { 0x24db, {1, {0x24c1 }}},
+ { 0x24dc, {1, {0x24c2 }}},
+ { 0x24dd, {1, {0x24c3 }}},
+ { 0x24de, {1, {0x24c4 }}},
+ { 0x24df, {1, {0x24c5 }}},
+ { 0x24e0, {1, {0x24c6 }}},
+ { 0x24e1, {1, {0x24c7 }}},
+ { 0x24e2, {1, {0x24c8 }}},
+ { 0x24e3, {1, {0x24c9 }}},
+ { 0x24e4, {1, {0x24ca }}},
+ { 0x24e5, {1, {0x24cb }}},
+ { 0x24e6, {1, {0x24cc }}},
+ { 0x24e7, {1, {0x24cd }}},
+ { 0x24e8, {1, {0x24ce }}},
+ { 0x24e9, {1, {0x24cf }}},
+ { 0x2c30, {1, {0x2c00 }}},
+ { 0x2c31, {1, {0x2c01 }}},
+ { 0x2c32, {1, {0x2c02 }}},
+ { 0x2c33, {1, {0x2c03 }}},
+ { 0x2c34, {1, {0x2c04 }}},
+ { 0x2c35, {1, {0x2c05 }}},
+ { 0x2c36, {1, {0x2c06 }}},
+ { 0x2c37, {1, {0x2c07 }}},
+ { 0x2c38, {1, {0x2c08 }}},
+ { 0x2c39, {1, {0x2c09 }}},
+ { 0x2c3a, {1, {0x2c0a }}},
+ { 0x2c3b, {1, {0x2c0b }}},
+ { 0x2c3c, {1, {0x2c0c }}},
+ { 0x2c3d, {1, {0x2c0d }}},
+ { 0x2c3e, {1, {0x2c0e }}},
+ { 0x2c3f, {1, {0x2c0f }}},
+ { 0x2c40, {1, {0x2c10 }}},
+ { 0x2c41, {1, {0x2c11 }}},
+ { 0x2c42, {1, {0x2c12 }}},
+ { 0x2c43, {1, {0x2c13 }}},
+ { 0x2c44, {1, {0x2c14 }}},
+ { 0x2c45, {1, {0x2c15 }}},
+ { 0x2c46, {1, {0x2c16 }}},
+ { 0x2c47, {1, {0x2c17 }}},
+ { 0x2c48, {1, {0x2c18 }}},
+ { 0x2c49, {1, {0x2c19 }}},
+ { 0x2c4a, {1, {0x2c1a }}},
+ { 0x2c4b, {1, {0x2c1b }}},
+ { 0x2c4c, {1, {0x2c1c }}},
+ { 0x2c4d, {1, {0x2c1d }}},
+ { 0x2c4e, {1, {0x2c1e }}},
+ { 0x2c4f, {1, {0x2c1f }}},
+ { 0x2c50, {1, {0x2c20 }}},
+ { 0x2c51, {1, {0x2c21 }}},
+ { 0x2c52, {1, {0x2c22 }}},
+ { 0x2c53, {1, {0x2c23 }}},
+ { 0x2c54, {1, {0x2c24 }}},
+ { 0x2c55, {1, {0x2c25 }}},
+ { 0x2c56, {1, {0x2c26 }}},
+ { 0x2c57, {1, {0x2c27 }}},
+ { 0x2c58, {1, {0x2c28 }}},
+ { 0x2c59, {1, {0x2c29 }}},
+ { 0x2c5a, {1, {0x2c2a }}},
+ { 0x2c5b, {1, {0x2c2b }}},
+ { 0x2c5c, {1, {0x2c2c }}},
+ { 0x2c5d, {1, {0x2c2d }}},
+ { 0x2c5e, {1, {0x2c2e }}},
+ { 0x2c81, {1, {0x2c80 }}},
+ { 0x2c83, {1, {0x2c82 }}},
+ { 0x2c85, {1, {0x2c84 }}},
+ { 0x2c87, {1, {0x2c86 }}},
+ { 0x2c89, {1, {0x2c88 }}},
+ { 0x2c8b, {1, {0x2c8a }}},
+ { 0x2c8d, {1, {0x2c8c }}},
+ { 0x2c8f, {1, {0x2c8e }}},
+ { 0x2c91, {1, {0x2c90 }}},
+ { 0x2c93, {1, {0x2c92 }}},
+ { 0x2c95, {1, {0x2c94 }}},
+ { 0x2c97, {1, {0x2c96 }}},
+ { 0x2c99, {1, {0x2c98 }}},
+ { 0x2c9b, {1, {0x2c9a }}},
+ { 0x2c9d, {1, {0x2c9c }}},
+ { 0x2c9f, {1, {0x2c9e }}},
+ { 0x2ca1, {1, {0x2ca0 }}},
+ { 0x2ca3, {1, {0x2ca2 }}},
+ { 0x2ca5, {1, {0x2ca4 }}},
+ { 0x2ca7, {1, {0x2ca6 }}},
+ { 0x2ca9, {1, {0x2ca8 }}},
+ { 0x2cab, {1, {0x2caa }}},
+ { 0x2cad, {1, {0x2cac }}},
+ { 0x2caf, {1, {0x2cae }}},
+ { 0x2cb1, {1, {0x2cb0 }}},
+ { 0x2cb3, {1, {0x2cb2 }}},
+ { 0x2cb5, {1, {0x2cb4 }}},
+ { 0x2cb7, {1, {0x2cb6 }}},
+ { 0x2cb9, {1, {0x2cb8 }}},
+ { 0x2cbb, {1, {0x2cba }}},
+ { 0x2cbd, {1, {0x2cbc }}},
+ { 0x2cbf, {1, {0x2cbe }}},
+ { 0x2cc1, {1, {0x2cc0 }}},
+ { 0x2cc3, {1, {0x2cc2 }}},
+ { 0x2cc5, {1, {0x2cc4 }}},
+ { 0x2cc7, {1, {0x2cc6 }}},
+ { 0x2cc9, {1, {0x2cc8 }}},
+ { 0x2ccb, {1, {0x2cca }}},
+ { 0x2ccd, {1, {0x2ccc }}},
+ { 0x2ccf, {1, {0x2cce }}},
+ { 0x2cd1, {1, {0x2cd0 }}},
+ { 0x2cd3, {1, {0x2cd2 }}},
+ { 0x2cd5, {1, {0x2cd4 }}},
+ { 0x2cd7, {1, {0x2cd6 }}},
+ { 0x2cd9, {1, {0x2cd8 }}},
+ { 0x2cdb, {1, {0x2cda }}},
+ { 0x2cdd, {1, {0x2cdc }}},
+ { 0x2cdf, {1, {0x2cde }}},
+ { 0x2ce1, {1, {0x2ce0 }}},
+ { 0x2ce3, {1, {0x2ce2 }}},
+ { 0x2d00, {1, {0x10a0 }}},
+ { 0x2d01, {1, {0x10a1 }}},
+ { 0x2d02, {1, {0x10a2 }}},
+ { 0x2d03, {1, {0x10a3 }}},
+ { 0x2d04, {1, {0x10a4 }}},
+ { 0x2d05, {1, {0x10a5 }}},
+ { 0x2d06, {1, {0x10a6 }}},
+ { 0x2d07, {1, {0x10a7 }}},
+ { 0x2d08, {1, {0x10a8 }}},
+ { 0x2d09, {1, {0x10a9 }}},
+ { 0x2d0a, {1, {0x10aa }}},
+ { 0x2d0b, {1, {0x10ab }}},
+ { 0x2d0c, {1, {0x10ac }}},
+ { 0x2d0d, {1, {0x10ad }}},
+ { 0x2d0e, {1, {0x10ae }}},
+ { 0x2d0f, {1, {0x10af }}},
+ { 0x2d10, {1, {0x10b0 }}},
+ { 0x2d11, {1, {0x10b1 }}},
+ { 0x2d12, {1, {0x10b2 }}},
+ { 0x2d13, {1, {0x10b3 }}},
+ { 0x2d14, {1, {0x10b4 }}},
+ { 0x2d15, {1, {0x10b5 }}},
+ { 0x2d16, {1, {0x10b6 }}},
+ { 0x2d17, {1, {0x10b7 }}},
+ { 0x2d18, {1, {0x10b8 }}},
+ { 0x2d19, {1, {0x10b9 }}},
+ { 0x2d1a, {1, {0x10ba }}},
+ { 0x2d1b, {1, {0x10bb }}},
+ { 0x2d1c, {1, {0x10bc }}},
+ { 0x2d1d, {1, {0x10bd }}},
+ { 0x2d1e, {1, {0x10be }}},
+ { 0x2d1f, {1, {0x10bf }}},
+ { 0x2d20, {1, {0x10c0 }}},
+ { 0x2d21, {1, {0x10c1 }}},
+ { 0x2d22, {1, {0x10c2 }}},
+ { 0x2d23, {1, {0x10c3 }}},
+ { 0x2d24, {1, {0x10c4 }}},
+ { 0x2d25, {1, {0x10c5 }}},
+ { 0xff41, {1, {0xff21 }}},
+ { 0xff42, {1, {0xff22 }}},
+ { 0xff43, {1, {0xff23 }}},
+ { 0xff44, {1, {0xff24 }}},
+ { 0xff45, {1, {0xff25 }}},
+ { 0xff46, {1, {0xff26 }}},
+ { 0xff47, {1, {0xff27 }}},
+ { 0xff48, {1, {0xff28 }}},
+ { 0xff49, {1, {0xff29 }}},
+ { 0xff4a, {1, {0xff2a }}},
+ { 0xff4b, {1, {0xff2b }}},
+ { 0xff4c, {1, {0xff2c }}},
+ { 0xff4d, {1, {0xff2d }}},
+ { 0xff4e, {1, {0xff2e }}},
+ { 0xff4f, {1, {0xff2f }}},
+ { 0xff50, {1, {0xff30 }}},
+ { 0xff51, {1, {0xff31 }}},
+ { 0xff52, {1, {0xff32 }}},
+ { 0xff53, {1, {0xff33 }}},
+ { 0xff54, {1, {0xff34 }}},
+ { 0xff55, {1, {0xff35 }}},
+ { 0xff56, {1, {0xff36 }}},
+ { 0xff57, {1, {0xff37 }}},
+ { 0xff58, {1, {0xff38 }}},
+ { 0xff59, {1, {0xff39 }}},
+ { 0xff5a, {1, {0xff3a }}},
+ { 0x10428, {1, {0x10400 }}},
+ { 0x10429, {1, {0x10401 }}},
+ { 0x1042a, {1, {0x10402 }}},
+ { 0x1042b, {1, {0x10403 }}},
+ { 0x1042c, {1, {0x10404 }}},
+ { 0x1042d, {1, {0x10405 }}},
+ { 0x1042e, {1, {0x10406 }}},
+ { 0x1042f, {1, {0x10407 }}},
+ { 0x10430, {1, {0x10408 }}},
+ { 0x10431, {1, {0x10409 }}},
+ { 0x10432, {1, {0x1040a }}},
+ { 0x10433, {1, {0x1040b }}},
+ { 0x10434, {1, {0x1040c }}},
+ { 0x10435, {1, {0x1040d }}},
+ { 0x10436, {1, {0x1040e }}},
+ { 0x10437, {1, {0x1040f }}},
+ { 0x10438, {1, {0x10410 }}},
+ { 0x10439, {1, {0x10411 }}},
+ { 0x1043a, {1, {0x10412 }}},
+ { 0x1043b, {1, {0x10413 }}},
+ { 0x1043c, {1, {0x10414 }}},
+ { 0x1043d, {1, {0x10415 }}},
+ { 0x1043e, {1, {0x10416 }}},
+ { 0x1043f, {1, {0x10417 }}},
+ { 0x10440, {1, {0x10418 }}},
+ { 0x10441, {1, {0x10419 }}},
+ { 0x10442, {1, {0x1041a }}},
+ { 0x10443, {1, {0x1041b }}},
+ { 0x10444, {1, {0x1041c }}},
+ { 0x10445, {1, {0x1041d }}},
+ { 0x10446, {1, {0x1041e }}},
+ { 0x10447, {1, {0x1041f }}},
+ { 0x10448, {1, {0x10420 }}},
+ { 0x10449, {1, {0x10421 }}},
+ { 0x1044a, {1, {0x10422 }}},
+ { 0x1044b, {1, {0x10423 }}},
+ { 0x1044c, {1, {0x10424 }}},
+ { 0x1044d, {1, {0x10425 }}},
+ { 0x1044e, {1, {0x10426 }}},
+ { 0x1044f, {1, {0x10427 }}}
+};
+
+static const CaseUnfold_11_Type CaseUnfold_11_Locale[] = {
+ { 0x0069, {1, {0x0049 }}}
+};
+
+static const CaseUnfold_12_Type CaseUnfold_12[] = {
+ { {0x0061, 0x02be}, {1, {0x1e9a }}},
+ { {0x0066, 0x0066}, {1, {0xfb00 }}},
+ { {0x0066, 0x0069}, {1, {0xfb01 }}},
+ { {0x0066, 0x006c}, {1, {0xfb02 }}},
+ { {0x0068, 0x0331}, {1, {0x1e96 }}},
+ { {0x006a, 0x030c}, {1, {0x01f0 }}},
+ { {0x0073, 0x0073}, {1, {0x00df }}},
+ { {0x0073, 0x0074}, {2, {0xfb05, 0xfb06 }}},
+ { {0x0074, 0x0308}, {1, {0x1e97 }}},
+ { {0x0077, 0x030a}, {1, {0x1e98 }}},
+ { {0x0079, 0x030a}, {1, {0x1e99 }}},
+ { {0x02bc, 0x006e}, {1, {0x0149 }}},
+ { {0x03ac, 0x03b9}, {1, {0x1fb4 }}},
+ { {0x03ae, 0x03b9}, {1, {0x1fc4 }}},
+ { {0x03b1, 0x0342}, {1, {0x1fb6 }}},
+ { {0x03b1, 0x03b9}, {2, {0x1fb3, 0x1fbc }}},
+ { {0x03b7, 0x0342}, {1, {0x1fc6 }}},
+ { {0x03b7, 0x03b9}, {2, {0x1fc3, 0x1fcc }}},
+ { {0x03b9, 0x0342}, {1, {0x1fd6 }}},
+ { {0x03c1, 0x0313}, {1, {0x1fe4 }}},
+ { {0x03c5, 0x0313}, {1, {0x1f50 }}},
+ { {0x03c5, 0x0342}, {1, {0x1fe6 }}},
+ { {0x03c9, 0x0342}, {1, {0x1ff6 }}},
+ { {0x03c9, 0x03b9}, {2, {0x1ff3, 0x1ffc }}},
+ { {0x03ce, 0x03b9}, {1, {0x1ff4 }}},
+ { {0x0565, 0x0582}, {1, {0x0587 }}},
+ { {0x0574, 0x0565}, {1, {0xfb14 }}},
+ { {0x0574, 0x056b}, {1, {0xfb15 }}},
+ { {0x0574, 0x056d}, {1, {0xfb17 }}},
+ { {0x0574, 0x0576}, {1, {0xfb13 }}},
+ { {0x057e, 0x0576}, {1, {0xfb16 }}},
+ { {0x1f00, 0x03b9}, {2, {0x1f88, 0x1f80 }}},
+ { {0x1f01, 0x03b9}, {2, {0x1f81, 0x1f89 }}},
+ { {0x1f02, 0x03b9}, {2, {0x1f82, 0x1f8a }}},
+ { {0x1f03, 0x03b9}, {2, {0x1f83, 0x1f8b }}},
+ { {0x1f04, 0x03b9}, {2, {0x1f84, 0x1f8c }}},
+ { {0x1f05, 0x03b9}, {2, {0x1f85, 0x1f8d }}},
+ { {0x1f06, 0x03b9}, {2, {0x1f86, 0x1f8e }}},
+ { {0x1f07, 0x03b9}, {2, {0x1f87, 0x1f8f }}},
+ { {0x1f20, 0x03b9}, {2, {0x1f90, 0x1f98 }}},
+ { {0x1f21, 0x03b9}, {2, {0x1f91, 0x1f99 }}},
+ { {0x1f22, 0x03b9}, {2, {0x1f92, 0x1f9a }}},
+ { {0x1f23, 0x03b9}, {2, {0x1f93, 0x1f9b }}},
+ { {0x1f24, 0x03b9}, {2, {0x1f94, 0x1f9c }}},
+ { {0x1f25, 0x03b9}, {2, {0x1f95, 0x1f9d }}},
+ { {0x1f26, 0x03b9}, {2, {0x1f96, 0x1f9e }}},
+ { {0x1f27, 0x03b9}, {2, {0x1f97, 0x1f9f }}},
+ { {0x1f60, 0x03b9}, {2, {0x1fa0, 0x1fa8 }}},
+ { {0x1f61, 0x03b9}, {2, {0x1fa1, 0x1fa9 }}},
+ { {0x1f62, 0x03b9}, {2, {0x1fa2, 0x1faa }}},
+ { {0x1f63, 0x03b9}, {2, {0x1fa3, 0x1fab }}},
+ { {0x1f64, 0x03b9}, {2, {0x1fa4, 0x1fac }}},
+ { {0x1f65, 0x03b9}, {2, {0x1fa5, 0x1fad }}},
+ { {0x1f66, 0x03b9}, {2, {0x1fa6, 0x1fae }}},
+ { {0x1f67, 0x03b9}, {2, {0x1fa7, 0x1faf }}},
+ { {0x1f70, 0x03b9}, {1, {0x1fb2 }}},
+ { {0x1f74, 0x03b9}, {1, {0x1fc2 }}},
+ { {0x1f7c, 0x03b9}, {1, {0x1ff2 }}}
+};
+static const CaseUnfold_12_Type CaseUnfold_12_Locale[] = {
+ { {0x0069, 0x0307}, {1, {0x0130 }}}
+};
+
+static const CaseUnfold_13_Type CaseUnfold_13[] = {
+ { {0x0066, 0x0066, 0x0069}, {1, {0xfb03 }}},
+ { {0x0066, 0x0066, 0x006c}, {1, {0xfb04 }}},
+ { {0x03b1, 0x0342, 0x03b9}, {1, {0x1fb7 }}},
+ { {0x03b7, 0x0342, 0x03b9}, {1, {0x1fc7 }}},
+ { {0x03b9, 0x0308, 0x0300}, {1, {0x1fd2 }}},
+ { {0x03b9, 0x0308, 0x0301}, {2, {0x0390, 0x1fd3 }}},
+ { {0x03b9, 0x0308, 0x0342}, {1, {0x1fd7 }}},
+ { {0x03c5, 0x0308, 0x0300}, {1, {0x1fe2 }}},
+ { {0x03c5, 0x0308, 0x0301}, {2, {0x03b0, 0x1fe3 }}},
+ { {0x03c5, 0x0308, 0x0342}, {1, {0x1fe7 }}},
+ { {0x03c5, 0x0313, 0x0300}, {1, {0x1f52 }}},
+ { {0x03c5, 0x0313, 0x0301}, {1, {0x1f54 }}},
+ { {0x03c5, 0x0313, 0x0342}, {1, {0x1f56 }}},
+ { {0x03c9, 0x0342, 0x03b9}, {1, {0x1ff7 }}}
+};
#define numberof(array) (int)(sizeof(array) / sizeof((array)[0]))
#define CODE_RANGES_NUM numberof(CodeRanges)
@@ -151,7 +2080,7 @@ onigenc_utf16_32_get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out,
#include "ruby/st.h"
-#define PROPERTY_NAME_MAX_SIZE (MAX_WORD_LENGTH + 1)
+#define PROPERTY_NAME_MAX_SIZE MAX_WORD_LENGTH
extern int
onigenc_unicode_property_name_to_ctype(OnigEncoding enc, UChar* name, UChar* end)
@@ -170,7 +2099,7 @@ onigenc_unicode_property_name_to_ctype(OnigEncoding enc, UChar* name, UChar* end
if (code >= 0x80)
return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
- buf[len++] = ONIGENC_ASCII_CODE_TO_LOWER_CASE(code);
+ buf[len++] = (UChar )TOLOWER((unsigned char)code);
if (len >= PROPERTY_NAME_MAX_SIZE)
return ONIGERR_INVALID_CHAR_PROPERTY_NAME;
}
@@ -238,7 +2167,7 @@ static int init_case_fold_table(void)
THREAD_ATOMIC_START;
- FoldTable = st_init_numtable_with_size(FOLD_TABLE_SIZE);
+ FoldTable = st_init_numtable_with_size(1200);
if (ONIG_IS_NULL(FoldTable)) return ONIGERR_MEMORY;
for (i = 0; i < numberof(CaseFold); i++) {
p = &CaseFold[i];
@@ -249,7 +2178,7 @@ static int init_case_fold_table(void)
st_add_direct(FoldTable, (st_data_t )p->from, (st_data_t )&(p->to));
}
- Unfold1Table = st_init_numtable_with_size(UNFOLD1_TABLE_SIZE);
+ Unfold1Table = st_init_numtable_with_size(1000);
if (ONIG_IS_NULL(Unfold1Table)) return ONIGERR_MEMORY;
for (i = 0; i < numberof(CaseUnfold_11); i++) {
@@ -261,7 +2190,7 @@ static int init_case_fold_table(void)
st_add_direct(Unfold1Table, (st_data_t )p1->from, (st_data_t )&(p1->to));
}
- Unfold2Table = st_init_table_with_size(&type_code2_hash, UNFOLD2_TABLE_SIZE);
+ Unfold2Table = st_init_table_with_size(&type_code2_hash, 200);
if (ONIG_IS_NULL(Unfold2Table)) return ONIGERR_MEMORY;
for (i = 0; i < numberof(CaseUnfold_12); i++) {
@@ -273,7 +2202,7 @@ static int init_case_fold_table(void)
st_add_direct(Unfold2Table, (st_data_t )p2->from, (st_data_t )(&p2->to));
}
- Unfold3Table = st_init_table_with_size(&type_code3_hash, UNFOLD3_TABLE_SIZE);
+ Unfold3Table = st_init_table_with_size(&type_code3_hash, 30);
if (ONIG_IS_NULL(Unfold3Table)) return ONIGERR_MEMORY;
for (i = 0; i < numberof(CaseUnfold_13); i++) {
diff --git a/enc/unicode/casefold.h b/enc/unicode/casefold.h
deleted file mode 100644
index b9559de4a3..0000000000
--- a/enc/unicode/casefold.h
+++ /dev/null
@@ -1,2238 +0,0 @@
-/* DO NOT EDIT THIS FILE. */
-/* Generated by tool/CaseFolding.py */
-
-static const CaseFold_11_Type CaseFold[] = {
- { 0x0041, {1, {0x0061}}},
- { 0x0042, {1, {0x0062}}},
- { 0x0043, {1, {0x0063}}},
- { 0x0044, {1, {0x0064}}},
- { 0x0045, {1, {0x0065}}},
- { 0x0046, {1, {0x0066}}},
- { 0x0047, {1, {0x0067}}},
- { 0x0048, {1, {0x0068}}},
- { 0x004a, {1, {0x006a}}},
- { 0x004b, {1, {0x006b}}},
- { 0x004c, {1, {0x006c}}},
- { 0x004d, {1, {0x006d}}},
- { 0x004e, {1, {0x006e}}},
- { 0x004f, {1, {0x006f}}},
- { 0x0050, {1, {0x0070}}},
- { 0x0051, {1, {0x0071}}},
- { 0x0052, {1, {0x0072}}},
- { 0x0053, {1, {0x0073}}},
- { 0x0054, {1, {0x0074}}},
- { 0x0055, {1, {0x0075}}},
- { 0x0056, {1, {0x0076}}},
- { 0x0057, {1, {0x0077}}},
- { 0x0058, {1, {0x0078}}},
- { 0x0059, {1, {0x0079}}},
- { 0x005a, {1, {0x007a}}},
- { 0x00b5, {1, {0x03bc}}},
- { 0x00c0, {1, {0x00e0}}},
- { 0x00c1, {1, {0x00e1}}},
- { 0x00c2, {1, {0x00e2}}},
- { 0x00c3, {1, {0x00e3}}},
- { 0x00c4, {1, {0x00e4}}},
- { 0x00c5, {1, {0x00e5}}},
- { 0x00c6, {1, {0x00e6}}},
- { 0x00c7, {1, {0x00e7}}},
- { 0x00c8, {1, {0x00e8}}},
- { 0x00c9, {1, {0x00e9}}},
- { 0x00ca, {1, {0x00ea}}},
- { 0x00cb, {1, {0x00eb}}},
- { 0x00cc, {1, {0x00ec}}},
- { 0x00cd, {1, {0x00ed}}},
- { 0x00ce, {1, {0x00ee}}},
- { 0x00cf, {1, {0x00ef}}},
- { 0x00d0, {1, {0x00f0}}},
- { 0x00d1, {1, {0x00f1}}},
- { 0x00d2, {1, {0x00f2}}},
- { 0x00d3, {1, {0x00f3}}},
- { 0x00d4, {1, {0x00f4}}},
- { 0x00d5, {1, {0x00f5}}},
- { 0x00d6, {1, {0x00f6}}},
- { 0x00d8, {1, {0x00f8}}},
- { 0x00d9, {1, {0x00f9}}},
- { 0x00da, {1, {0x00fa}}},
- { 0x00db, {1, {0x00fb}}},
- { 0x00dc, {1, {0x00fc}}},
- { 0x00dd, {1, {0x00fd}}},
- { 0x00de, {1, {0x00fe}}},
- { 0x00df, {2, {0x0073, 0x0073}}},
- { 0x0100, {1, {0x0101}}},
- { 0x0102, {1, {0x0103}}},
- { 0x0104, {1, {0x0105}}},
- { 0x0106, {1, {0x0107}}},
- { 0x0108, {1, {0x0109}}},
- { 0x010a, {1, {0x010b}}},
- { 0x010c, {1, {0x010d}}},
- { 0x010e, {1, {0x010f}}},
- { 0x0110, {1, {0x0111}}},
- { 0x0112, {1, {0x0113}}},
- { 0x0114, {1, {0x0115}}},
- { 0x0116, {1, {0x0117}}},
- { 0x0118, {1, {0x0119}}},
- { 0x011a, {1, {0x011b}}},
- { 0x011c, {1, {0x011d}}},
- { 0x011e, {1, {0x011f}}},
- { 0x0120, {1, {0x0121}}},
- { 0x0122, {1, {0x0123}}},
- { 0x0124, {1, {0x0125}}},
- { 0x0126, {1, {0x0127}}},
- { 0x0128, {1, {0x0129}}},
- { 0x012a, {1, {0x012b}}},
- { 0x012c, {1, {0x012d}}},
- { 0x012e, {1, {0x012f}}},
- { 0x0132, {1, {0x0133}}},
- { 0x0134, {1, {0x0135}}},
- { 0x0136, {1, {0x0137}}},
- { 0x0139, {1, {0x013a}}},
- { 0x013b, {1, {0x013c}}},
- { 0x013d, {1, {0x013e}}},
- { 0x013f, {1, {0x0140}}},
- { 0x0141, {1, {0x0142}}},
- { 0x0143, {1, {0x0144}}},
- { 0x0145, {1, {0x0146}}},
- { 0x0147, {1, {0x0148}}},
- { 0x0149, {2, {0x02bc, 0x006e}}},
- { 0x014a, {1, {0x014b}}},
- { 0x014c, {1, {0x014d}}},
- { 0x014e, {1, {0x014f}}},
- { 0x0150, {1, {0x0151}}},
- { 0x0152, {1, {0x0153}}},
- { 0x0154, {1, {0x0155}}},
- { 0x0156, {1, {0x0157}}},
- { 0x0158, {1, {0x0159}}},
- { 0x015a, {1, {0x015b}}},
- { 0x015c, {1, {0x015d}}},
- { 0x015e, {1, {0x015f}}},
- { 0x0160, {1, {0x0161}}},
- { 0x0162, {1, {0x0163}}},
- { 0x0164, {1, {0x0165}}},
- { 0x0166, {1, {0x0167}}},
- { 0x0168, {1, {0x0169}}},
- { 0x016a, {1, {0x016b}}},
- { 0x016c, {1, {0x016d}}},
- { 0x016e, {1, {0x016f}}},
- { 0x0170, {1, {0x0171}}},
- { 0x0172, {1, {0x0173}}},
- { 0x0174, {1, {0x0175}}},
- { 0x0176, {1, {0x0177}}},
- { 0x0178, {1, {0x00ff}}},
- { 0x0179, {1, {0x017a}}},
- { 0x017b, {1, {0x017c}}},
- { 0x017d, {1, {0x017e}}},
- { 0x017f, {1, {0x0073}}},
- { 0x0181, {1, {0x0253}}},
- { 0x0182, {1, {0x0183}}},
- { 0x0184, {1, {0x0185}}},
- { 0x0186, {1, {0x0254}}},
- { 0x0187, {1, {0x0188}}},
- { 0x0189, {1, {0x0256}}},
- { 0x018a, {1, {0x0257}}},
- { 0x018b, {1, {0x018c}}},
- { 0x018e, {1, {0x01dd}}},
- { 0x018f, {1, {0x0259}}},
- { 0x0190, {1, {0x025b}}},
- { 0x0191, {1, {0x0192}}},
- { 0x0193, {1, {0x0260}}},
- { 0x0194, {1, {0x0263}}},
- { 0x0196, {1, {0x0269}}},
- { 0x0197, {1, {0x0268}}},
- { 0x0198, {1, {0x0199}}},
- { 0x019c, {1, {0x026f}}},
- { 0x019d, {1, {0x0272}}},
- { 0x019f, {1, {0x0275}}},
- { 0x01a0, {1, {0x01a1}}},
- { 0x01a2, {1, {0x01a3}}},
- { 0x01a4, {1, {0x01a5}}},
- { 0x01a6, {1, {0x0280}}},
- { 0x01a7, {1, {0x01a8}}},
- { 0x01a9, {1, {0x0283}}},
- { 0x01ac, {1, {0x01ad}}},
- { 0x01ae, {1, {0x0288}}},
- { 0x01af, {1, {0x01b0}}},
- { 0x01b1, {1, {0x028a}}},
- { 0x01b2, {1, {0x028b}}},
- { 0x01b3, {1, {0x01b4}}},
- { 0x01b5, {1, {0x01b6}}},
- { 0x01b7, {1, {0x0292}}},
- { 0x01b8, {1, {0x01b9}}},
- { 0x01bc, {1, {0x01bd}}},
- { 0x01c4, {1, {0x01c6}}},
- { 0x01c5, {1, {0x01c6}}},
- { 0x01c7, {1, {0x01c9}}},
- { 0x01c8, {1, {0x01c9}}},
- { 0x01ca, {1, {0x01cc}}},
- { 0x01cb, {1, {0x01cc}}},
- { 0x01cd, {1, {0x01ce}}},
- { 0x01cf, {1, {0x01d0}}},
- { 0x01d1, {1, {0x01d2}}},
- { 0x01d3, {1, {0x01d4}}},
- { 0x01d5, {1, {0x01d6}}},
- { 0x01d7, {1, {0x01d8}}},
- { 0x01d9, {1, {0x01da}}},
- { 0x01db, {1, {0x01dc}}},
- { 0x01de, {1, {0x01df}}},
- { 0x01e0, {1, {0x01e1}}},
- { 0x01e2, {1, {0x01e3}}},
- { 0x01e4, {1, {0x01e5}}},
- { 0x01e6, {1, {0x01e7}}},
- { 0x01e8, {1, {0x01e9}}},
- { 0x01ea, {1, {0x01eb}}},
- { 0x01ec, {1, {0x01ed}}},
- { 0x01ee, {1, {0x01ef}}},
- { 0x01f0, {2, {0x006a, 0x030c}}},
- { 0x01f1, {1, {0x01f3}}},
- { 0x01f2, {1, {0x01f3}}},
- { 0x01f4, {1, {0x01f5}}},
- { 0x01f6, {1, {0x0195}}},
- { 0x01f7, {1, {0x01bf}}},
- { 0x01f8, {1, {0x01f9}}},
- { 0x01fa, {1, {0x01fb}}},
- { 0x01fc, {1, {0x01fd}}},
- { 0x01fe, {1, {0x01ff}}},
- { 0x0200, {1, {0x0201}}},
- { 0x0202, {1, {0x0203}}},
- { 0x0204, {1, {0x0205}}},
- { 0x0206, {1, {0x0207}}},
- { 0x0208, {1, {0x0209}}},
- { 0x020a, {1, {0x020b}}},
- { 0x020c, {1, {0x020d}}},
- { 0x020e, {1, {0x020f}}},
- { 0x0210, {1, {0x0211}}},
- { 0x0212, {1, {0x0213}}},
- { 0x0214, {1, {0x0215}}},
- { 0x0216, {1, {0x0217}}},
- { 0x0218, {1, {0x0219}}},
- { 0x021a, {1, {0x021b}}},
- { 0x021c, {1, {0x021d}}},
- { 0x021e, {1, {0x021f}}},
- { 0x0220, {1, {0x019e}}},
- { 0x0222, {1, {0x0223}}},
- { 0x0224, {1, {0x0225}}},
- { 0x0226, {1, {0x0227}}},
- { 0x0228, {1, {0x0229}}},
- { 0x022a, {1, {0x022b}}},
- { 0x022c, {1, {0x022d}}},
- { 0x022e, {1, {0x022f}}},
- { 0x0230, {1, {0x0231}}},
- { 0x0232, {1, {0x0233}}},
- { 0x023a, {1, {0x2c65}}},
- { 0x023b, {1, {0x023c}}},
- { 0x023d, {1, {0x019a}}},
- { 0x023e, {1, {0x2c66}}},
- { 0x0241, {1, {0x0242}}},
- { 0x0243, {1, {0x0180}}},
- { 0x0244, {1, {0x0289}}},
- { 0x0245, {1, {0x028c}}},
- { 0x0246, {1, {0x0247}}},
- { 0x0248, {1, {0x0249}}},
- { 0x024a, {1, {0x024b}}},
- { 0x024c, {1, {0x024d}}},
- { 0x024e, {1, {0x024f}}},
- { 0x0345, {1, {0x03b9}}},
- { 0x0370, {1, {0x0371}}},
- { 0x0372, {1, {0x0373}}},
- { 0x0376, {1, {0x0377}}},
- { 0x0386, {1, {0x03ac}}},
- { 0x0388, {1, {0x03ad}}},
- { 0x0389, {1, {0x03ae}}},
- { 0x038a, {1, {0x03af}}},
- { 0x038c, {1, {0x03cc}}},
- { 0x038e, {1, {0x03cd}}},
- { 0x038f, {1, {0x03ce}}},
- { 0x0390, {3, {0x03b9, 0x0308, 0x0301}}},
- { 0x0391, {1, {0x03b1}}},
- { 0x0392, {1, {0x03b2}}},
- { 0x0393, {1, {0x03b3}}},
- { 0x0394, {1, {0x03b4}}},
- { 0x0395, {1, {0x03b5}}},
- { 0x0396, {1, {0x03b6}}},
- { 0x0397, {1, {0x03b7}}},
- { 0x0398, {1, {0x03b8}}},
- { 0x0399, {1, {0x03b9}}},
- { 0x039a, {1, {0x03ba}}},
- { 0x039b, {1, {0x03bb}}},
- { 0x039c, {1, {0x03bc}}},
- { 0x039d, {1, {0x03bd}}},
- { 0x039e, {1, {0x03be}}},
- { 0x039f, {1, {0x03bf}}},
- { 0x03a0, {1, {0x03c0}}},
- { 0x03a1, {1, {0x03c1}}},
- { 0x03a3, {1, {0x03c3}}},
- { 0x03a4, {1, {0x03c4}}},
- { 0x03a5, {1, {0x03c5}}},
- { 0x03a6, {1, {0x03c6}}},
- { 0x03a7, {1, {0x03c7}}},
- { 0x03a8, {1, {0x03c8}}},
- { 0x03a9, {1, {0x03c9}}},
- { 0x03aa, {1, {0x03ca}}},
- { 0x03ab, {1, {0x03cb}}},
- { 0x03b0, {3, {0x03c5, 0x0308, 0x0301}}},
- { 0x03c2, {1, {0x03c3}}},
- { 0x03cf, {1, {0x03d7}}},
- { 0x03d0, {1, {0x03b2}}},
- { 0x03d1, {1, {0x03b8}}},
- { 0x03d5, {1, {0x03c6}}},
- { 0x03d6, {1, {0x03c0}}},
- { 0x03d8, {1, {0x03d9}}},
- { 0x03da, {1, {0x03db}}},
- { 0x03dc, {1, {0x03dd}}},
- { 0x03de, {1, {0x03df}}},
- { 0x03e0, {1, {0x03e1}}},
- { 0x03e2, {1, {0x03e3}}},
- { 0x03e4, {1, {0x03e5}}},
- { 0x03e6, {1, {0x03e7}}},
- { 0x03e8, {1, {0x03e9}}},
- { 0x03ea, {1, {0x03eb}}},
- { 0x03ec, {1, {0x03ed}}},
- { 0x03ee, {1, {0x03ef}}},
- { 0x03f0, {1, {0x03ba}}},
- { 0x03f1, {1, {0x03c1}}},
- { 0x03f4, {1, {0x03b8}}},
- { 0x03f5, {1, {0x03b5}}},
- { 0x03f7, {1, {0x03f8}}},
- { 0x03f9, {1, {0x03f2}}},
- { 0x03fa, {1, {0x03fb}}},
- { 0x03fd, {1, {0x037b}}},
- { 0x03fe, {1, {0x037c}}},
- { 0x03ff, {1, {0x037d}}},
- { 0x0400, {1, {0x0450}}},
- { 0x0401, {1, {0x0451}}},
- { 0x0402, {1, {0x0452}}},
- { 0x0403, {1, {0x0453}}},
- { 0x0404, {1, {0x0454}}},
- { 0x0405, {1, {0x0455}}},
- { 0x0406, {1, {0x0456}}},
- { 0x0407, {1, {0x0457}}},
- { 0x0408, {1, {0x0458}}},
- { 0x0409, {1, {0x0459}}},
- { 0x040a, {1, {0x045a}}},
- { 0x040b, {1, {0x045b}}},
- { 0x040c, {1, {0x045c}}},
- { 0x040d, {1, {0x045d}}},
- { 0x040e, {1, {0x045e}}},
- { 0x040f, {1, {0x045f}}},
- { 0x0410, {1, {0x0430}}},
- { 0x0411, {1, {0x0431}}},
- { 0x0412, {1, {0x0432}}},
- { 0x0413, {1, {0x0433}}},
- { 0x0414, {1, {0x0434}}},
- { 0x0415, {1, {0x0435}}},
- { 0x0416, {1, {0x0436}}},
- { 0x0417, {1, {0x0437}}},
- { 0x0418, {1, {0x0438}}},
- { 0x0419, {1, {0x0439}}},
- { 0x041a, {1, {0x043a}}},
- { 0x041b, {1, {0x043b}}},
- { 0x041c, {1, {0x043c}}},
- { 0x041d, {1, {0x043d}}},
- { 0x041e, {1, {0x043e}}},
- { 0x041f, {1, {0x043f}}},
- { 0x0420, {1, {0x0440}}},
- { 0x0421, {1, {0x0441}}},
- { 0x0422, {1, {0x0442}}},
- { 0x0423, {1, {0x0443}}},
- { 0x0424, {1, {0x0444}}},
- { 0x0425, {1, {0x0445}}},
- { 0x0426, {1, {0x0446}}},
- { 0x0427, {1, {0x0447}}},
- { 0x0428, {1, {0x0448}}},
- { 0x0429, {1, {0x0449}}},
- { 0x042a, {1, {0x044a}}},
- { 0x042b, {1, {0x044b}}},
- { 0x042c, {1, {0x044c}}},
- { 0x042d, {1, {0x044d}}},
- { 0x042e, {1, {0x044e}}},
- { 0x042f, {1, {0x044f}}},
- { 0x0460, {1, {0x0461}}},
- { 0x0462, {1, {0x0463}}},
- { 0x0464, {1, {0x0465}}},
- { 0x0466, {1, {0x0467}}},
- { 0x0468, {1, {0x0469}}},
- { 0x046a, {1, {0x046b}}},
- { 0x046c, {1, {0x046d}}},
- { 0x046e, {1, {0x046f}}},
- { 0x0470, {1, {0x0471}}},
- { 0x0472, {1, {0x0473}}},
- { 0x0474, {1, {0x0475}}},
- { 0x0476, {1, {0x0477}}},
- { 0x0478, {1, {0x0479}}},
- { 0x047a, {1, {0x047b}}},
- { 0x047c, {1, {0x047d}}},
- { 0x047e, {1, {0x047f}}},
- { 0x0480, {1, {0x0481}}},
- { 0x048a, {1, {0x048b}}},
- { 0x048c, {1, {0x048d}}},
- { 0x048e, {1, {0x048f}}},
- { 0x0490, {1, {0x0491}}},
- { 0x0492, {1, {0x0493}}},
- { 0x0494, {1, {0x0495}}},
- { 0x0496, {1, {0x0497}}},
- { 0x0498, {1, {0x0499}}},
- { 0x049a, {1, {0x049b}}},
- { 0x049c, {1, {0x049d}}},
- { 0x049e, {1, {0x049f}}},
- { 0x04a0, {1, {0x04a1}}},
- { 0x04a2, {1, {0x04a3}}},
- { 0x04a4, {1, {0x04a5}}},
- { 0x04a6, {1, {0x04a7}}},
- { 0x04a8, {1, {0x04a9}}},
- { 0x04aa, {1, {0x04ab}}},
- { 0x04ac, {1, {0x04ad}}},
- { 0x04ae, {1, {0x04af}}},
- { 0x04b0, {1, {0x04b1}}},
- { 0x04b2, {1, {0x04b3}}},
- { 0x04b4, {1, {0x04b5}}},
- { 0x04b6, {1, {0x04b7}}},
- { 0x04b8, {1, {0x04b9}}},
- { 0x04ba, {1, {0x04bb}}},
- { 0x04bc, {1, {0x04bd}}},
- { 0x04be, {1, {0x04bf}}},
- { 0x04c0, {1, {0x04cf}}},
- { 0x04c1, {1, {0x04c2}}},
- { 0x04c3, {1, {0x04c4}}},
- { 0x04c5, {1, {0x04c6}}},
- { 0x04c7, {1, {0x04c8}}},
- { 0x04c9, {1, {0x04ca}}},
- { 0x04cb, {1, {0x04cc}}},
- { 0x04cd, {1, {0x04ce}}},
- { 0x04d0, {1, {0x04d1}}},
- { 0x04d2, {1, {0x04d3}}},
- { 0x04d4, {1, {0x04d5}}},
- { 0x04d6, {1, {0x04d7}}},
- { 0x04d8, {1, {0x04d9}}},
- { 0x04da, {1, {0x04db}}},
- { 0x04dc, {1, {0x04dd}}},
- { 0x04de, {1, {0x04df}}},
- { 0x04e0, {1, {0x04e1}}},
- { 0x04e2, {1, {0x04e3}}},
- { 0x04e4, {1, {0x04e5}}},
- { 0x04e6, {1, {0x04e7}}},
- { 0x04e8, {1, {0x04e9}}},
- { 0x04ea, {1, {0x04eb}}},
- { 0x04ec, {1, {0x04ed}}},
- { 0x04ee, {1, {0x04ef}}},
- { 0x04f0, {1, {0x04f1}}},
- { 0x04f2, {1, {0x04f3}}},
- { 0x04f4, {1, {0x04f5}}},
- { 0x04f6, {1, {0x04f7}}},
- { 0x04f8, {1, {0x04f9}}},
- { 0x04fa, {1, {0x04fb}}},
- { 0x04fc, {1, {0x04fd}}},
- { 0x04fe, {1, {0x04ff}}},
- { 0x0500, {1, {0x0501}}},
- { 0x0502, {1, {0x0503}}},
- { 0x0504, {1, {0x0505}}},
- { 0x0506, {1, {0x0507}}},
- { 0x0508, {1, {0x0509}}},
- { 0x050a, {1, {0x050b}}},
- { 0x050c, {1, {0x050d}}},
- { 0x050e, {1, {0x050f}}},
- { 0x0510, {1, {0x0511}}},
- { 0x0512, {1, {0x0513}}},
- { 0x0514, {1, {0x0515}}},
- { 0x0516, {1, {0x0517}}},
- { 0x0518, {1, {0x0519}}},
- { 0x051a, {1, {0x051b}}},
- { 0x051c, {1, {0x051d}}},
- { 0x051e, {1, {0x051f}}},
- { 0x0520, {1, {0x0521}}},
- { 0x0522, {1, {0x0523}}},
- { 0x0524, {1, {0x0525}}},
- { 0x0526, {1, {0x0527}}},
- { 0x0531, {1, {0x0561}}},
- { 0x0532, {1, {0x0562}}},
- { 0x0533, {1, {0x0563}}},
- { 0x0534, {1, {0x0564}}},
- { 0x0535, {1, {0x0565}}},
- { 0x0536, {1, {0x0566}}},
- { 0x0537, {1, {0x0567}}},
- { 0x0538, {1, {0x0568}}},
- { 0x0539, {1, {0x0569}}},
- { 0x053a, {1, {0x056a}}},
- { 0x053b, {1, {0x056b}}},
- { 0x053c, {1, {0x056c}}},
- { 0x053d, {1, {0x056d}}},
- { 0x053e, {1, {0x056e}}},
- { 0x053f, {1, {0x056f}}},
- { 0x0540, {1, {0x0570}}},
- { 0x0541, {1, {0x0571}}},
- { 0x0542, {1, {0x0572}}},
- { 0x0543, {1, {0x0573}}},
- { 0x0544, {1, {0x0574}}},
- { 0x0545, {1, {0x0575}}},
- { 0x0546, {1, {0x0576}}},
- { 0x0547, {1, {0x0577}}},
- { 0x0548, {1, {0x0578}}},
- { 0x0549, {1, {0x0579}}},
- { 0x054a, {1, {0x057a}}},
- { 0x054b, {1, {0x057b}}},
- { 0x054c, {1, {0x057c}}},
- { 0x054d, {1, {0x057d}}},
- { 0x054e, {1, {0x057e}}},
- { 0x054f, {1, {0x057f}}},
- { 0x0550, {1, {0x0580}}},
- { 0x0551, {1, {0x0581}}},
- { 0x0552, {1, {0x0582}}},
- { 0x0553, {1, {0x0583}}},
- { 0x0554, {1, {0x0584}}},
- { 0x0555, {1, {0x0585}}},
- { 0x0556, {1, {0x0586}}},
- { 0x0587, {2, {0x0565, 0x0582}}},
- { 0x10a0, {1, {0x2d00}}},
- { 0x10a1, {1, {0x2d01}}},
- { 0x10a2, {1, {0x2d02}}},
- { 0x10a3, {1, {0x2d03}}},
- { 0x10a4, {1, {0x2d04}}},
- { 0x10a5, {1, {0x2d05}}},
- { 0x10a6, {1, {0x2d06}}},
- { 0x10a7, {1, {0x2d07}}},
- { 0x10a8, {1, {0x2d08}}},
- { 0x10a9, {1, {0x2d09}}},
- { 0x10aa, {1, {0x2d0a}}},
- { 0x10ab, {1, {0x2d0b}}},
- { 0x10ac, {1, {0x2d0c}}},
- { 0x10ad, {1, {0x2d0d}}},
- { 0x10ae, {1, {0x2d0e}}},
- { 0x10af, {1, {0x2d0f}}},
- { 0x10b0, {1, {0x2d10}}},
- { 0x10b1, {1, {0x2d11}}},
- { 0x10b2, {1, {0x2d12}}},
- { 0x10b3, {1, {0x2d13}}},
- { 0x10b4, {1, {0x2d14}}},
- { 0x10b5, {1, {0x2d15}}},
- { 0x10b6, {1, {0x2d16}}},
- { 0x10b7, {1, {0x2d17}}},
- { 0x10b8, {1, {0x2d18}}},
- { 0x10b9, {1, {0x2d19}}},
- { 0x10ba, {1, {0x2d1a}}},
- { 0x10bb, {1, {0x2d1b}}},
- { 0x10bc, {1, {0x2d1c}}},
- { 0x10bd, {1, {0x2d1d}}},
- { 0x10be, {1, {0x2d1e}}},
- { 0x10bf, {1, {0x2d1f}}},
- { 0x10c0, {1, {0x2d20}}},
- { 0x10c1, {1, {0x2d21}}},
- { 0x10c2, {1, {0x2d22}}},
- { 0x10c3, {1, {0x2d23}}},
- { 0x10c4, {1, {0x2d24}}},
- { 0x10c5, {1, {0x2d25}}},
- { 0x10c7, {1, {0x2d27}}},
- { 0x10cd, {1, {0x2d2d}}},
- { 0x1e00, {1, {0x1e01}}},
- { 0x1e02, {1, {0x1e03}}},
- { 0x1e04, {1, {0x1e05}}},
- { 0x1e06, {1, {0x1e07}}},
- { 0x1e08, {1, {0x1e09}}},
- { 0x1e0a, {1, {0x1e0b}}},
- { 0x1e0c, {1, {0x1e0d}}},
- { 0x1e0e, {1, {0x1e0f}}},
- { 0x1e10, {1, {0x1e11}}},
- { 0x1e12, {1, {0x1e13}}},
- { 0x1e14, {1, {0x1e15}}},
- { 0x1e16, {1, {0x1e17}}},
- { 0x1e18, {1, {0x1e19}}},
- { 0x1e1a, {1, {0x1e1b}}},
- { 0x1e1c, {1, {0x1e1d}}},
- { 0x1e1e, {1, {0x1e1f}}},
- { 0x1e20, {1, {0x1e21}}},
- { 0x1e22, {1, {0x1e23}}},
- { 0x1e24, {1, {0x1e25}}},
- { 0x1e26, {1, {0x1e27}}},
- { 0x1e28, {1, {0x1e29}}},
- { 0x1e2a, {1, {0x1e2b}}},
- { 0x1e2c, {1, {0x1e2d}}},
- { 0x1e2e, {1, {0x1e2f}}},
- { 0x1e30, {1, {0x1e31}}},
- { 0x1e32, {1, {0x1e33}}},
- { 0x1e34, {1, {0x1e35}}},
- { 0x1e36, {1, {0x1e37}}},
- { 0x1e38, {1, {0x1e39}}},
- { 0x1e3a, {1, {0x1e3b}}},
- { 0x1e3c, {1, {0x1e3d}}},
- { 0x1e3e, {1, {0x1e3f}}},
- { 0x1e40, {1, {0x1e41}}},
- { 0x1e42, {1, {0x1e43}}},
- { 0x1e44, {1, {0x1e45}}},
- { 0x1e46, {1, {0x1e47}}},
- { 0x1e48, {1, {0x1e49}}},
- { 0x1e4a, {1, {0x1e4b}}},
- { 0x1e4c, {1, {0x1e4d}}},
- { 0x1e4e, {1, {0x1e4f}}},
- { 0x1e50, {1, {0x1e51}}},
- { 0x1e52, {1, {0x1e53}}},
- { 0x1e54, {1, {0x1e55}}},
- { 0x1e56, {1, {0x1e57}}},
- { 0x1e58, {1, {0x1e59}}},
- { 0x1e5a, {1, {0x1e5b}}},
- { 0x1e5c, {1, {0x1e5d}}},
- { 0x1e5e, {1, {0x1e5f}}},
- { 0x1e60, {1, {0x1e61}}},
- { 0x1e62, {1, {0x1e63}}},
- { 0x1e64, {1, {0x1e65}}},
- { 0x1e66, {1, {0x1e67}}},
- { 0x1e68, {1, {0x1e69}}},
- { 0x1e6a, {1, {0x1e6b}}},
- { 0x1e6c, {1, {0x1e6d}}},
- { 0x1e6e, {1, {0x1e6f}}},
- { 0x1e70, {1, {0x1e71}}},
- { 0x1e72, {1, {0x1e73}}},
- { 0x1e74, {1, {0x1e75}}},
- { 0x1e76, {1, {0x1e77}}},
- { 0x1e78, {1, {0x1e79}}},
- { 0x1e7a, {1, {0x1e7b}}},
- { 0x1e7c, {1, {0x1e7d}}},
- { 0x1e7e, {1, {0x1e7f}}},
- { 0x1e80, {1, {0x1e81}}},
- { 0x1e82, {1, {0x1e83}}},
- { 0x1e84, {1, {0x1e85}}},
- { 0x1e86, {1, {0x1e87}}},
- { 0x1e88, {1, {0x1e89}}},
- { 0x1e8a, {1, {0x1e8b}}},
- { 0x1e8c, {1, {0x1e8d}}},
- { 0x1e8e, {1, {0x1e8f}}},
- { 0x1e90, {1, {0x1e91}}},
- { 0x1e92, {1, {0x1e93}}},
- { 0x1e94, {1, {0x1e95}}},
- { 0x1e96, {2, {0x0068, 0x0331}}},
- { 0x1e97, {2, {0x0074, 0x0308}}},
- { 0x1e98, {2, {0x0077, 0x030a}}},
- { 0x1e99, {2, {0x0079, 0x030a}}},
- { 0x1e9a, {2, {0x0061, 0x02be}}},
- { 0x1e9b, {1, {0x1e61}}},
- { 0x1e9e, {2, {0x0073, 0x0073}}},
- { 0x1ea0, {1, {0x1ea1}}},
- { 0x1ea2, {1, {0x1ea3}}},
- { 0x1ea4, {1, {0x1ea5}}},
- { 0x1ea6, {1, {0x1ea7}}},
- { 0x1ea8, {1, {0x1ea9}}},
- { 0x1eaa, {1, {0x1eab}}},
- { 0x1eac, {1, {0x1ead}}},
- { 0x1eae, {1, {0x1eaf}}},
- { 0x1eb0, {1, {0x1eb1}}},
- { 0x1eb2, {1, {0x1eb3}}},
- { 0x1eb4, {1, {0x1eb5}}},
- { 0x1eb6, {1, {0x1eb7}}},
- { 0x1eb8, {1, {0x1eb9}}},
- { 0x1eba, {1, {0x1ebb}}},
- { 0x1ebc, {1, {0x1ebd}}},
- { 0x1ebe, {1, {0x1ebf}}},
- { 0x1ec0, {1, {0x1ec1}}},
- { 0x1ec2, {1, {0x1ec3}}},
- { 0x1ec4, {1, {0x1ec5}}},
- { 0x1ec6, {1, {0x1ec7}}},
- { 0x1ec8, {1, {0x1ec9}}},
- { 0x1eca, {1, {0x1ecb}}},
- { 0x1ecc, {1, {0x1ecd}}},
- { 0x1ece, {1, {0x1ecf}}},
- { 0x1ed0, {1, {0x1ed1}}},
- { 0x1ed2, {1, {0x1ed3}}},
- { 0x1ed4, {1, {0x1ed5}}},
- { 0x1ed6, {1, {0x1ed7}}},
- { 0x1ed8, {1, {0x1ed9}}},
- { 0x1eda, {1, {0x1edb}}},
- { 0x1edc, {1, {0x1edd}}},
- { 0x1ede, {1, {0x1edf}}},
- { 0x1ee0, {1, {0x1ee1}}},
- { 0x1ee2, {1, {0x1ee3}}},
- { 0x1ee4, {1, {0x1ee5}}},
- { 0x1ee6, {1, {0x1ee7}}},
- { 0x1ee8, {1, {0x1ee9}}},
- { 0x1eea, {1, {0x1eeb}}},
- { 0x1eec, {1, {0x1eed}}},
- { 0x1eee, {1, {0x1eef}}},
- { 0x1ef0, {1, {0x1ef1}}},
- { 0x1ef2, {1, {0x1ef3}}},
- { 0x1ef4, {1, {0x1ef5}}},
- { 0x1ef6, {1, {0x1ef7}}},
- { 0x1ef8, {1, {0x1ef9}}},
- { 0x1efa, {1, {0x1efb}}},
- { 0x1efc, {1, {0x1efd}}},
- { 0x1efe, {1, {0x1eff}}},
- { 0x1f08, {1, {0x1f00}}},
- { 0x1f09, {1, {0x1f01}}},
- { 0x1f0a, {1, {0x1f02}}},
- { 0x1f0b, {1, {0x1f03}}},
- { 0x1f0c, {1, {0x1f04}}},
- { 0x1f0d, {1, {0x1f05}}},
- { 0x1f0e, {1, {0x1f06}}},
- { 0x1f0f, {1, {0x1f07}}},
- { 0x1f18, {1, {0x1f10}}},
- { 0x1f19, {1, {0x1f11}}},
- { 0x1f1a, {1, {0x1f12}}},
- { 0x1f1b, {1, {0x1f13}}},
- { 0x1f1c, {1, {0x1f14}}},
- { 0x1f1d, {1, {0x1f15}}},
- { 0x1f28, {1, {0x1f20}}},
- { 0x1f29, {1, {0x1f21}}},
- { 0x1f2a, {1, {0x1f22}}},
- { 0x1f2b, {1, {0x1f23}}},
- { 0x1f2c, {1, {0x1f24}}},
- { 0x1f2d, {1, {0x1f25}}},
- { 0x1f2e, {1, {0x1f26}}},
- { 0x1f2f, {1, {0x1f27}}},
- { 0x1f38, {1, {0x1f30}}},
- { 0x1f39, {1, {0x1f31}}},
- { 0x1f3a, {1, {0x1f32}}},
- { 0x1f3b, {1, {0x1f33}}},
- { 0x1f3c, {1, {0x1f34}}},
- { 0x1f3d, {1, {0x1f35}}},
- { 0x1f3e, {1, {0x1f36}}},
- { 0x1f3f, {1, {0x1f37}}},
- { 0x1f48, {1, {0x1f40}}},
- { 0x1f49, {1, {0x1f41}}},
- { 0x1f4a, {1, {0x1f42}}},
- { 0x1f4b, {1, {0x1f43}}},
- { 0x1f4c, {1, {0x1f44}}},
- { 0x1f4d, {1, {0x1f45}}},
- { 0x1f50, {2, {0x03c5, 0x0313}}},
- { 0x1f52, {3, {0x03c5, 0x0313, 0x0300}}},
- { 0x1f54, {3, {0x03c5, 0x0313, 0x0301}}},
- { 0x1f56, {3, {0x03c5, 0x0313, 0x0342}}},
- { 0x1f59, {1, {0x1f51}}},
- { 0x1f5b, {1, {0x1f53}}},
- { 0x1f5d, {1, {0x1f55}}},
- { 0x1f5f, {1, {0x1f57}}},
- { 0x1f68, {1, {0x1f60}}},
- { 0x1f69, {1, {0x1f61}}},
- { 0x1f6a, {1, {0x1f62}}},
- { 0x1f6b, {1, {0x1f63}}},
- { 0x1f6c, {1, {0x1f64}}},
- { 0x1f6d, {1, {0x1f65}}},
- { 0x1f6e, {1, {0x1f66}}},
- { 0x1f6f, {1, {0x1f67}}},
- { 0x1f80, {2, {0x1f00, 0x03b9}}},
- { 0x1f81, {2, {0x1f01, 0x03b9}}},
- { 0x1f82, {2, {0x1f02, 0x03b9}}},
- { 0x1f83, {2, {0x1f03, 0x03b9}}},
- { 0x1f84, {2, {0x1f04, 0x03b9}}},
- { 0x1f85, {2, {0x1f05, 0x03b9}}},
- { 0x1f86, {2, {0x1f06, 0x03b9}}},
- { 0x1f87, {2, {0x1f07, 0x03b9}}},
- { 0x1f88, {2, {0x1f00, 0x03b9}}},
- { 0x1f89, {2, {0x1f01, 0x03b9}}},
- { 0x1f8a, {2, {0x1f02, 0x03b9}}},
- { 0x1f8b, {2, {0x1f03, 0x03b9}}},
- { 0x1f8c, {2, {0x1f04, 0x03b9}}},
- { 0x1f8d, {2, {0x1f05, 0x03b9}}},
- { 0x1f8e, {2, {0x1f06, 0x03b9}}},
- { 0x1f8f, {2, {0x1f07, 0x03b9}}},
- { 0x1f90, {2, {0x1f20, 0x03b9}}},
- { 0x1f91, {2, {0x1f21, 0x03b9}}},
- { 0x1f92, {2, {0x1f22, 0x03b9}}},
- { 0x1f93, {2, {0x1f23, 0x03b9}}},
- { 0x1f94, {2, {0x1f24, 0x03b9}}},
- { 0x1f95, {2, {0x1f25, 0x03b9}}},
- { 0x1f96, {2, {0x1f26, 0x03b9}}},
- { 0x1f97, {2, {0x1f27, 0x03b9}}},
- { 0x1f98, {2, {0x1f20, 0x03b9}}},
- { 0x1f99, {2, {0x1f21, 0x03b9}}},
- { 0x1f9a, {2, {0x1f22, 0x03b9}}},
- { 0x1f9b, {2, {0x1f23, 0x03b9}}},
- { 0x1f9c, {2, {0x1f24, 0x03b9}}},
- { 0x1f9d, {2, {0x1f25, 0x03b9}}},
- { 0x1f9e, {2, {0x1f26, 0x03b9}}},
- { 0x1f9f, {2, {0x1f27, 0x03b9}}},
- { 0x1fa0, {2, {0x1f60, 0x03b9}}},
- { 0x1fa1, {2, {0x1f61, 0x03b9}}},
- { 0x1fa2, {2, {0x1f62, 0x03b9}}},
- { 0x1fa3, {2, {0x1f63, 0x03b9}}},
- { 0x1fa4, {2, {0x1f64, 0x03b9}}},
- { 0x1fa5, {2, {0x1f65, 0x03b9}}},
- { 0x1fa6, {2, {0x1f66, 0x03b9}}},
- { 0x1fa7, {2, {0x1f67, 0x03b9}}},
- { 0x1fa8, {2, {0x1f60, 0x03b9}}},
- { 0x1fa9, {2, {0x1f61, 0x03b9}}},
- { 0x1faa, {2, {0x1f62, 0x03b9}}},
- { 0x1fab, {2, {0x1f63, 0x03b9}}},
- { 0x1fac, {2, {0x1f64, 0x03b9}}},
- { 0x1fad, {2, {0x1f65, 0x03b9}}},
- { 0x1fae, {2, {0x1f66, 0x03b9}}},
- { 0x1faf, {2, {0x1f67, 0x03b9}}},
- { 0x1fb2, {2, {0x1f70, 0x03b9}}},
- { 0x1fb3, {2, {0x03b1, 0x03b9}}},
- { 0x1fb4, {2, {0x03ac, 0x03b9}}},
- { 0x1fb6, {2, {0x03b1, 0x0342}}},
- { 0x1fb7, {3, {0x03b1, 0x0342, 0x03b9}}},
- { 0x1fb8, {1, {0x1fb0}}},
- { 0x1fb9, {1, {0x1fb1}}},
- { 0x1fba, {1, {0x1f70}}},
- { 0x1fbb, {1, {0x1f71}}},
- { 0x1fbc, {2, {0x03b1, 0x03b9}}},
- { 0x1fbe, {1, {0x03b9}}},
- { 0x1fc2, {2, {0x1f74, 0x03b9}}},
- { 0x1fc3, {2, {0x03b7, 0x03b9}}},
- { 0x1fc4, {2, {0x03ae, 0x03b9}}},
- { 0x1fc6, {2, {0x03b7, 0x0342}}},
- { 0x1fc7, {3, {0x03b7, 0x0342, 0x03b9}}},
- { 0x1fc8, {1, {0x1f72}}},
- { 0x1fc9, {1, {0x1f73}}},
- { 0x1fca, {1, {0x1f74}}},
- { 0x1fcb, {1, {0x1f75}}},
- { 0x1fcc, {2, {0x03b7, 0x03b9}}},
- { 0x1fd2, {3, {0x03b9, 0x0308, 0x0300}}},
- { 0x1fd3, {3, {0x03b9, 0x0308, 0x0301}}},
- { 0x1fd6, {2, {0x03b9, 0x0342}}},
- { 0x1fd7, {3, {0x03b9, 0x0308, 0x0342}}},
- { 0x1fd8, {1, {0x1fd0}}},
- { 0x1fd9, {1, {0x1fd1}}},
- { 0x1fda, {1, {0x1f76}}},
- { 0x1fdb, {1, {0x1f77}}},
- { 0x1fe2, {3, {0x03c5, 0x0308, 0x0300}}},
- { 0x1fe3, {3, {0x03c5, 0x0308, 0x0301}}},
- { 0x1fe4, {2, {0x03c1, 0x0313}}},
- { 0x1fe6, {2, {0x03c5, 0x0342}}},
- { 0x1fe7, {3, {0x03c5, 0x0308, 0x0342}}},
- { 0x1fe8, {1, {0x1fe0}}},
- { 0x1fe9, {1, {0x1fe1}}},
- { 0x1fea, {1, {0x1f7a}}},
- { 0x1feb, {1, {0x1f7b}}},
- { 0x1fec, {1, {0x1fe5}}},
- { 0x1ff2, {2, {0x1f7c, 0x03b9}}},
- { 0x1ff3, {2, {0x03c9, 0x03b9}}},
- { 0x1ff4, {2, {0x03ce, 0x03b9}}},
- { 0x1ff6, {2, {0x03c9, 0x0342}}},
- { 0x1ff7, {3, {0x03c9, 0x0342, 0x03b9}}},
- { 0x1ff8, {1, {0x1f78}}},
- { 0x1ff9, {1, {0x1f79}}},
- { 0x1ffa, {1, {0x1f7c}}},
- { 0x1ffb, {1, {0x1f7d}}},
- { 0x1ffc, {2, {0x03c9, 0x03b9}}},
- { 0x2126, {1, {0x03c9}}},
- { 0x212a, {1, {0x006b}}},
- { 0x212b, {1, {0x00e5}}},
- { 0x2132, {1, {0x214e}}},
- { 0x2160, {1, {0x2170}}},
- { 0x2161, {1, {0x2171}}},
- { 0x2162, {1, {0x2172}}},
- { 0x2163, {1, {0x2173}}},
- { 0x2164, {1, {0x2174}}},
- { 0x2165, {1, {0x2175}}},
- { 0x2166, {1, {0x2176}}},
- { 0x2167, {1, {0x2177}}},
- { 0x2168, {1, {0x2178}}},
- { 0x2169, {1, {0x2179}}},
- { 0x216a, {1, {0x217a}}},
- { 0x216b, {1, {0x217b}}},
- { 0x216c, {1, {0x217c}}},
- { 0x216d, {1, {0x217d}}},
- { 0x216e, {1, {0x217e}}},
- { 0x216f, {1, {0x217f}}},
- { 0x2183, {1, {0x2184}}},
- { 0x24b6, {1, {0x24d0}}},
- { 0x24b7, {1, {0x24d1}}},
- { 0x24b8, {1, {0x24d2}}},
- { 0x24b9, {1, {0x24d3}}},
- { 0x24ba, {1, {0x24d4}}},
- { 0x24bb, {1, {0x24d5}}},
- { 0x24bc, {1, {0x24d6}}},
- { 0x24bd, {1, {0x24d7}}},
- { 0x24be, {1, {0x24d8}}},
- { 0x24bf, {1, {0x24d9}}},
- { 0x24c0, {1, {0x24da}}},
- { 0x24c1, {1, {0x24db}}},
- { 0x24c2, {1, {0x24dc}}},
- { 0x24c3, {1, {0x24dd}}},
- { 0x24c4, {1, {0x24de}}},
- { 0x24c5, {1, {0x24df}}},
- { 0x24c6, {1, {0x24e0}}},
- { 0x24c7, {1, {0x24e1}}},
- { 0x24c8, {1, {0x24e2}}},
- { 0x24c9, {1, {0x24e3}}},
- { 0x24ca, {1, {0x24e4}}},
- { 0x24cb, {1, {0x24e5}}},
- { 0x24cc, {1, {0x24e6}}},
- { 0x24cd, {1, {0x24e7}}},
- { 0x24ce, {1, {0x24e8}}},
- { 0x24cf, {1, {0x24e9}}},
- { 0x2c00, {1, {0x2c30}}},
- { 0x2c01, {1, {0x2c31}}},
- { 0x2c02, {1, {0x2c32}}},
- { 0x2c03, {1, {0x2c33}}},
- { 0x2c04, {1, {0x2c34}}},
- { 0x2c05, {1, {0x2c35}}},
- { 0x2c06, {1, {0x2c36}}},
- { 0x2c07, {1, {0x2c37}}},
- { 0x2c08, {1, {0x2c38}}},
- { 0x2c09, {1, {0x2c39}}},
- { 0x2c0a, {1, {0x2c3a}}},
- { 0x2c0b, {1, {0x2c3b}}},
- { 0x2c0c, {1, {0x2c3c}}},
- { 0x2c0d, {1, {0x2c3d}}},
- { 0x2c0e, {1, {0x2c3e}}},
- { 0x2c0f, {1, {0x2c3f}}},
- { 0x2c10, {1, {0x2c40}}},
- { 0x2c11, {1, {0x2c41}}},
- { 0x2c12, {1, {0x2c42}}},
- { 0x2c13, {1, {0x2c43}}},
- { 0x2c14, {1, {0x2c44}}},
- { 0x2c15, {1, {0x2c45}}},
- { 0x2c16, {1, {0x2c46}}},
- { 0x2c17, {1, {0x2c47}}},
- { 0x2c18, {1, {0x2c48}}},
- { 0x2c19, {1, {0x2c49}}},
- { 0x2c1a, {1, {0x2c4a}}},
- { 0x2c1b, {1, {0x2c4b}}},
- { 0x2c1c, {1, {0x2c4c}}},
- { 0x2c1d, {1, {0x2c4d}}},
- { 0x2c1e, {1, {0x2c4e}}},
- { 0x2c1f, {1, {0x2c4f}}},
- { 0x2c20, {1, {0x2c50}}},
- { 0x2c21, {1, {0x2c51}}},
- { 0x2c22, {1, {0x2c52}}},
- { 0x2c23, {1, {0x2c53}}},
- { 0x2c24, {1, {0x2c54}}},
- { 0x2c25, {1, {0x2c55}}},
- { 0x2c26, {1, {0x2c56}}},
- { 0x2c27, {1, {0x2c57}}},
- { 0x2c28, {1, {0x2c58}}},
- { 0x2c29, {1, {0x2c59}}},
- { 0x2c2a, {1, {0x2c5a}}},
- { 0x2c2b, {1, {0x2c5b}}},
- { 0x2c2c, {1, {0x2c5c}}},
- { 0x2c2d, {1, {0x2c5d}}},
- { 0x2c2e, {1, {0x2c5e}}},
- { 0x2c60, {1, {0x2c61}}},
- { 0x2c62, {1, {0x026b}}},
- { 0x2c63, {1, {0x1d7d}}},
- { 0x2c64, {1, {0x027d}}},
- { 0x2c67, {1, {0x2c68}}},
- { 0x2c69, {1, {0x2c6a}}},
- { 0x2c6b, {1, {0x2c6c}}},
- { 0x2c6d, {1, {0x0251}}},
- { 0x2c6e, {1, {0x0271}}},
- { 0x2c6f, {1, {0x0250}}},
- { 0x2c70, {1, {0x0252}}},
- { 0x2c72, {1, {0x2c73}}},
- { 0x2c75, {1, {0x2c76}}},
- { 0x2c7e, {1, {0x023f}}},
- { 0x2c7f, {1, {0x0240}}},
- { 0x2c80, {1, {0x2c81}}},
- { 0x2c82, {1, {0x2c83}}},
- { 0x2c84, {1, {0x2c85}}},
- { 0x2c86, {1, {0x2c87}}},
- { 0x2c88, {1, {0x2c89}}},
- { 0x2c8a, {1, {0x2c8b}}},
- { 0x2c8c, {1, {0x2c8d}}},
- { 0x2c8e, {1, {0x2c8f}}},
- { 0x2c90, {1, {0x2c91}}},
- { 0x2c92, {1, {0x2c93}}},
- { 0x2c94, {1, {0x2c95}}},
- { 0x2c96, {1, {0x2c97}}},
- { 0x2c98, {1, {0x2c99}}},
- { 0x2c9a, {1, {0x2c9b}}},
- { 0x2c9c, {1, {0x2c9d}}},
- { 0x2c9e, {1, {0x2c9f}}},
- { 0x2ca0, {1, {0x2ca1}}},
- { 0x2ca2, {1, {0x2ca3}}},
- { 0x2ca4, {1, {0x2ca5}}},
- { 0x2ca6, {1, {0x2ca7}}},
- { 0x2ca8, {1, {0x2ca9}}},
- { 0x2caa, {1, {0x2cab}}},
- { 0x2cac, {1, {0x2cad}}},
- { 0x2cae, {1, {0x2caf}}},
- { 0x2cb0, {1, {0x2cb1}}},
- { 0x2cb2, {1, {0x2cb3}}},
- { 0x2cb4, {1, {0x2cb5}}},
- { 0x2cb6, {1, {0x2cb7}}},
- { 0x2cb8, {1, {0x2cb9}}},
- { 0x2cba, {1, {0x2cbb}}},
- { 0x2cbc, {1, {0x2cbd}}},
- { 0x2cbe, {1, {0x2cbf}}},
- { 0x2cc0, {1, {0x2cc1}}},
- { 0x2cc2, {1, {0x2cc3}}},
- { 0x2cc4, {1, {0x2cc5}}},
- { 0x2cc6, {1, {0x2cc7}}},
- { 0x2cc8, {1, {0x2cc9}}},
- { 0x2cca, {1, {0x2ccb}}},
- { 0x2ccc, {1, {0x2ccd}}},
- { 0x2cce, {1, {0x2ccf}}},
- { 0x2cd0, {1, {0x2cd1}}},
- { 0x2cd2, {1, {0x2cd3}}},
- { 0x2cd4, {1, {0x2cd5}}},
- { 0x2cd6, {1, {0x2cd7}}},
- { 0x2cd8, {1, {0x2cd9}}},
- { 0x2cda, {1, {0x2cdb}}},
- { 0x2cdc, {1, {0x2cdd}}},
- { 0x2cde, {1, {0x2cdf}}},
- { 0x2ce0, {1, {0x2ce1}}},
- { 0x2ce2, {1, {0x2ce3}}},
- { 0x2ceb, {1, {0x2cec}}},
- { 0x2ced, {1, {0x2cee}}},
- { 0x2cf2, {1, {0x2cf3}}},
- { 0xa640, {1, {0xa641}}},
- { 0xa642, {1, {0xa643}}},
- { 0xa644, {1, {0xa645}}},
- { 0xa646, {1, {0xa647}}},
- { 0xa648, {1, {0xa649}}},
- { 0xa64a, {1, {0xa64b}}},
- { 0xa64c, {1, {0xa64d}}},
- { 0xa64e, {1, {0xa64f}}},
- { 0xa650, {1, {0xa651}}},
- { 0xa652, {1, {0xa653}}},
- { 0xa654, {1, {0xa655}}},
- { 0xa656, {1, {0xa657}}},
- { 0xa658, {1, {0xa659}}},
- { 0xa65a, {1, {0xa65b}}},
- { 0xa65c, {1, {0xa65d}}},
- { 0xa65e, {1, {0xa65f}}},
- { 0xa660, {1, {0xa661}}},
- { 0xa662, {1, {0xa663}}},
- { 0xa664, {1, {0xa665}}},
- { 0xa666, {1, {0xa667}}},
- { 0xa668, {1, {0xa669}}},
- { 0xa66a, {1, {0xa66b}}},
- { 0xa66c, {1, {0xa66d}}},
- { 0xa680, {1, {0xa681}}},
- { 0xa682, {1, {0xa683}}},
- { 0xa684, {1, {0xa685}}},
- { 0xa686, {1, {0xa687}}},
- { 0xa688, {1, {0xa689}}},
- { 0xa68a, {1, {0xa68b}}},
- { 0xa68c, {1, {0xa68d}}},
- { 0xa68e, {1, {0xa68f}}},
- { 0xa690, {1, {0xa691}}},
- { 0xa692, {1, {0xa693}}},
- { 0xa694, {1, {0xa695}}},
- { 0xa696, {1, {0xa697}}},
- { 0xa722, {1, {0xa723}}},
- { 0xa724, {1, {0xa725}}},
- { 0xa726, {1, {0xa727}}},
- { 0xa728, {1, {0xa729}}},
- { 0xa72a, {1, {0xa72b}}},
- { 0xa72c, {1, {0xa72d}}},
- { 0xa72e, {1, {0xa72f}}},
- { 0xa732, {1, {0xa733}}},
- { 0xa734, {1, {0xa735}}},
- { 0xa736, {1, {0xa737}}},
- { 0xa738, {1, {0xa739}}},
- { 0xa73a, {1, {0xa73b}}},
- { 0xa73c, {1, {0xa73d}}},
- { 0xa73e, {1, {0xa73f}}},
- { 0xa740, {1, {0xa741}}},
- { 0xa742, {1, {0xa743}}},
- { 0xa744, {1, {0xa745}}},
- { 0xa746, {1, {0xa747}}},
- { 0xa748, {1, {0xa749}}},
- { 0xa74a, {1, {0xa74b}}},
- { 0xa74c, {1, {0xa74d}}},
- { 0xa74e, {1, {0xa74f}}},
- { 0xa750, {1, {0xa751}}},
- { 0xa752, {1, {0xa753}}},
- { 0xa754, {1, {0xa755}}},
- { 0xa756, {1, {0xa757}}},
- { 0xa758, {1, {0xa759}}},
- { 0xa75a, {1, {0xa75b}}},
- { 0xa75c, {1, {0xa75d}}},
- { 0xa75e, {1, {0xa75f}}},
- { 0xa760, {1, {0xa761}}},
- { 0xa762, {1, {0xa763}}},
- { 0xa764, {1, {0xa765}}},
- { 0xa766, {1, {0xa767}}},
- { 0xa768, {1, {0xa769}}},
- { 0xa76a, {1, {0xa76b}}},
- { 0xa76c, {1, {0xa76d}}},
- { 0xa76e, {1, {0xa76f}}},
- { 0xa779, {1, {0xa77a}}},
- { 0xa77b, {1, {0xa77c}}},
- { 0xa77d, {1, {0x1d79}}},
- { 0xa77e, {1, {0xa77f}}},
- { 0xa780, {1, {0xa781}}},
- { 0xa782, {1, {0xa783}}},
- { 0xa784, {1, {0xa785}}},
- { 0xa786, {1, {0xa787}}},
- { 0xa78b, {1, {0xa78c}}},
- { 0xa78d, {1, {0x0265}}},
- { 0xa790, {1, {0xa791}}},
- { 0xa792, {1, {0xa793}}},
- { 0xa7a0, {1, {0xa7a1}}},
- { 0xa7a2, {1, {0xa7a3}}},
- { 0xa7a4, {1, {0xa7a5}}},
- { 0xa7a6, {1, {0xa7a7}}},
- { 0xa7a8, {1, {0xa7a9}}},
- { 0xa7aa, {1, {0x0266}}},
- { 0xfb00, {2, {0x0066, 0x0066}}},
- { 0xfb01, {2, {0x0066, 0x0069}}},
- { 0xfb02, {2, {0x0066, 0x006c}}},
- { 0xfb03, {3, {0x0066, 0x0066, 0x0069}}},
- { 0xfb04, {3, {0x0066, 0x0066, 0x006c}}},
- { 0xfb05, {2, {0x0073, 0x0074}}},
- { 0xfb06, {2, {0x0073, 0x0074}}},
- { 0xfb13, {2, {0x0574, 0x0576}}},
- { 0xfb14, {2, {0x0574, 0x0565}}},
- { 0xfb15, {2, {0x0574, 0x056b}}},
- { 0xfb16, {2, {0x057e, 0x0576}}},
- { 0xfb17, {2, {0x0574, 0x056d}}},
- { 0xff21, {1, {0xff41}}},
- { 0xff22, {1, {0xff42}}},
- { 0xff23, {1, {0xff43}}},
- { 0xff24, {1, {0xff44}}},
- { 0xff25, {1, {0xff45}}},
- { 0xff26, {1, {0xff46}}},
- { 0xff27, {1, {0xff47}}},
- { 0xff28, {1, {0xff48}}},
- { 0xff29, {1, {0xff49}}},
- { 0xff2a, {1, {0xff4a}}},
- { 0xff2b, {1, {0xff4b}}},
- { 0xff2c, {1, {0xff4c}}},
- { 0xff2d, {1, {0xff4d}}},
- { 0xff2e, {1, {0xff4e}}},
- { 0xff2f, {1, {0xff4f}}},
- { 0xff30, {1, {0xff50}}},
- { 0xff31, {1, {0xff51}}},
- { 0xff32, {1, {0xff52}}},
- { 0xff33, {1, {0xff53}}},
- { 0xff34, {1, {0xff54}}},
- { 0xff35, {1, {0xff55}}},
- { 0xff36, {1, {0xff56}}},
- { 0xff37, {1, {0xff57}}},
- { 0xff38, {1, {0xff58}}},
- { 0xff39, {1, {0xff59}}},
- { 0xff3a, {1, {0xff5a}}},
- { 0x10400, {1, {0x10428}}},
- { 0x10401, {1, {0x10429}}},
- { 0x10402, {1, {0x1042a}}},
- { 0x10403, {1, {0x1042b}}},
- { 0x10404, {1, {0x1042c}}},
- { 0x10405, {1, {0x1042d}}},
- { 0x10406, {1, {0x1042e}}},
- { 0x10407, {1, {0x1042f}}},
- { 0x10408, {1, {0x10430}}},
- { 0x10409, {1, {0x10431}}},
- { 0x1040a, {1, {0x10432}}},
- { 0x1040b, {1, {0x10433}}},
- { 0x1040c, {1, {0x10434}}},
- { 0x1040d, {1, {0x10435}}},
- { 0x1040e, {1, {0x10436}}},
- { 0x1040f, {1, {0x10437}}},
- { 0x10410, {1, {0x10438}}},
- { 0x10411, {1, {0x10439}}},
- { 0x10412, {1, {0x1043a}}},
- { 0x10413, {1, {0x1043b}}},
- { 0x10414, {1, {0x1043c}}},
- { 0x10415, {1, {0x1043d}}},
- { 0x10416, {1, {0x1043e}}},
- { 0x10417, {1, {0x1043f}}},
- { 0x10418, {1, {0x10440}}},
- { 0x10419, {1, {0x10441}}},
- { 0x1041a, {1, {0x10442}}},
- { 0x1041b, {1, {0x10443}}},
- { 0x1041c, {1, {0x10444}}},
- { 0x1041d, {1, {0x10445}}},
- { 0x1041e, {1, {0x10446}}},
- { 0x1041f, {1, {0x10447}}},
- { 0x10420, {1, {0x10448}}},
- { 0x10421, {1, {0x10449}}},
- { 0x10422, {1, {0x1044a}}},
- { 0x10423, {1, {0x1044b}}},
- { 0x10424, {1, {0x1044c}}},
- { 0x10425, {1, {0x1044d}}},
- { 0x10426, {1, {0x1044e}}},
- { 0x10427, {1, {0x1044f}}},
-};
-
-static const CaseFold_11_Type CaseFold_Locale[] = {
- { 0x0049, {1, {0x0069}}},
- { 0x0130, {2, {0x0069, 0x0307}}},
-};
-
-static const CaseUnfold_11_Type CaseUnfold_11[] = {
- { 0x0061, {1, {0x0041 }}},
- { 0x0062, {1, {0x0042 }}},
- { 0x0063, {1, {0x0043 }}},
- { 0x0064, {1, {0x0044 }}},
- { 0x0065, {1, {0x0045 }}},
- { 0x0066, {1, {0x0046 }}},
- { 0x0067, {1, {0x0047 }}},
- { 0x0068, {1, {0x0048 }}},
- { 0x006a, {1, {0x004a }}},
- { 0x006b, {2, {0x004b, 0x212a }}},
- { 0x006c, {1, {0x004c }}},
- { 0x006d, {1, {0x004d }}},
- { 0x006e, {1, {0x004e }}},
- { 0x006f, {1, {0x004f }}},
- { 0x0070, {1, {0x0050 }}},
- { 0x0071, {1, {0x0051 }}},
- { 0x0072, {1, {0x0052 }}},
- { 0x0073, {2, {0x0053, 0x017f }}},
- { 0x0074, {1, {0x0054 }}},
- { 0x0075, {1, {0x0055 }}},
- { 0x0076, {1, {0x0056 }}},
- { 0x0077, {1, {0x0057 }}},
- { 0x0078, {1, {0x0058 }}},
- { 0x0079, {1, {0x0059 }}},
- { 0x007a, {1, {0x005a }}},
- { 0x00e0, {1, {0x00c0 }}},
- { 0x00e1, {1, {0x00c1 }}},
- { 0x00e2, {1, {0x00c2 }}},
- { 0x00e3, {1, {0x00c3 }}},
- { 0x00e4, {1, {0x00c4 }}},
- { 0x00e5, {2, {0x00c5, 0x212b }}},
- { 0x00e6, {1, {0x00c6 }}},
- { 0x00e7, {1, {0x00c7 }}},
- { 0x00e8, {1, {0x00c8 }}},
- { 0x00e9, {1, {0x00c9 }}},
- { 0x00ea, {1, {0x00ca }}},
- { 0x00eb, {1, {0x00cb }}},
- { 0x00ec, {1, {0x00cc }}},
- { 0x00ed, {1, {0x00cd }}},
- { 0x00ee, {1, {0x00ce }}},
- { 0x00ef, {1, {0x00cf }}},
- { 0x00f0, {1, {0x00d0 }}},
- { 0x00f1, {1, {0x00d1 }}},
- { 0x00f2, {1, {0x00d2 }}},
- { 0x00f3, {1, {0x00d3 }}},
- { 0x00f4, {1, {0x00d4 }}},
- { 0x00f5, {1, {0x00d5 }}},
- { 0x00f6, {1, {0x00d6 }}},
- { 0x00f8, {1, {0x00d8 }}},
- { 0x00f9, {1, {0x00d9 }}},
- { 0x00fa, {1, {0x00da }}},
- { 0x00fb, {1, {0x00db }}},
- { 0x00fc, {1, {0x00dc }}},
- { 0x00fd, {1, {0x00dd }}},
- { 0x00fe, {1, {0x00de }}},
- { 0x00ff, {1, {0x0178 }}},
- { 0x0101, {1, {0x0100 }}},
- { 0x0103, {1, {0x0102 }}},
- { 0x0105, {1, {0x0104 }}},
- { 0x0107, {1, {0x0106 }}},
- { 0x0109, {1, {0x0108 }}},
- { 0x010b, {1, {0x010a }}},
- { 0x010d, {1, {0x010c }}},
- { 0x010f, {1, {0x010e }}},
- { 0x0111, {1, {0x0110 }}},
- { 0x0113, {1, {0x0112 }}},
- { 0x0115, {1, {0x0114 }}},
- { 0x0117, {1, {0x0116 }}},
- { 0x0119, {1, {0x0118 }}},
- { 0x011b, {1, {0x011a }}},
- { 0x011d, {1, {0x011c }}},
- { 0x011f, {1, {0x011e }}},
- { 0x0121, {1, {0x0120 }}},
- { 0x0123, {1, {0x0122 }}},
- { 0x0125, {1, {0x0124 }}},
- { 0x0127, {1, {0x0126 }}},
- { 0x0129, {1, {0x0128 }}},
- { 0x012b, {1, {0x012a }}},
- { 0x012d, {1, {0x012c }}},
- { 0x012f, {1, {0x012e }}},
- { 0x0133, {1, {0x0132 }}},
- { 0x0135, {1, {0x0134 }}},
- { 0x0137, {1, {0x0136 }}},
- { 0x013a, {1, {0x0139 }}},
- { 0x013c, {1, {0x013b }}},
- { 0x013e, {1, {0x013d }}},
- { 0x0140, {1, {0x013f }}},
- { 0x0142, {1, {0x0141 }}},
- { 0x0144, {1, {0x0143 }}},
- { 0x0146, {1, {0x0145 }}},
- { 0x0148, {1, {0x0147 }}},
- { 0x014b, {1, {0x014a }}},
- { 0x014d, {1, {0x014c }}},
- { 0x014f, {1, {0x014e }}},
- { 0x0151, {1, {0x0150 }}},
- { 0x0153, {1, {0x0152 }}},
- { 0x0155, {1, {0x0154 }}},
- { 0x0157, {1, {0x0156 }}},
- { 0x0159, {1, {0x0158 }}},
- { 0x015b, {1, {0x015a }}},
- { 0x015d, {1, {0x015c }}},
- { 0x015f, {1, {0x015e }}},
- { 0x0161, {1, {0x0160 }}},
- { 0x0163, {1, {0x0162 }}},
- { 0x0165, {1, {0x0164 }}},
- { 0x0167, {1, {0x0166 }}},
- { 0x0169, {1, {0x0168 }}},
- { 0x016b, {1, {0x016a }}},
- { 0x016d, {1, {0x016c }}},
- { 0x016f, {1, {0x016e }}},
- { 0x0171, {1, {0x0170 }}},
- { 0x0173, {1, {0x0172 }}},
- { 0x0175, {1, {0x0174 }}},
- { 0x0177, {1, {0x0176 }}},
- { 0x017a, {1, {0x0179 }}},
- { 0x017c, {1, {0x017b }}},
- { 0x017e, {1, {0x017d }}},
- { 0x0180, {1, {0x0243 }}},
- { 0x0183, {1, {0x0182 }}},
- { 0x0185, {1, {0x0184 }}},
- { 0x0188, {1, {0x0187 }}},
- { 0x018c, {1, {0x018b }}},
- { 0x0192, {1, {0x0191 }}},
- { 0x0195, {1, {0x01f6 }}},
- { 0x0199, {1, {0x0198 }}},
- { 0x019a, {1, {0x023d }}},
- { 0x019e, {1, {0x0220 }}},
- { 0x01a1, {1, {0x01a0 }}},
- { 0x01a3, {1, {0x01a2 }}},
- { 0x01a5, {1, {0x01a4 }}},
- { 0x01a8, {1, {0x01a7 }}},
- { 0x01ad, {1, {0x01ac }}},
- { 0x01b0, {1, {0x01af }}},
- { 0x01b4, {1, {0x01b3 }}},
- { 0x01b6, {1, {0x01b5 }}},
- { 0x01b9, {1, {0x01b8 }}},
- { 0x01bd, {1, {0x01bc }}},
- { 0x01bf, {1, {0x01f7 }}},
- { 0x01c6, {2, {0x01c4, 0x01c5 }}},
- { 0x01c9, {2, {0x01c7, 0x01c8 }}},
- { 0x01cc, {2, {0x01ca, 0x01cb }}},
- { 0x01ce, {1, {0x01cd }}},
- { 0x01d0, {1, {0x01cf }}},
- { 0x01d2, {1, {0x01d1 }}},
- { 0x01d4, {1, {0x01d3 }}},
- { 0x01d6, {1, {0x01d5 }}},
- { 0x01d8, {1, {0x01d7 }}},
- { 0x01da, {1, {0x01d9 }}},
- { 0x01dc, {1, {0x01db }}},
- { 0x01dd, {1, {0x018e }}},
- { 0x01df, {1, {0x01de }}},
- { 0x01e1, {1, {0x01e0 }}},
- { 0x01e3, {1, {0x01e2 }}},
- { 0x01e5, {1, {0x01e4 }}},
- { 0x01e7, {1, {0x01e6 }}},
- { 0x01e9, {1, {0x01e8 }}},
- { 0x01eb, {1, {0x01ea }}},
- { 0x01ed, {1, {0x01ec }}},
- { 0x01ef, {1, {0x01ee }}},
- { 0x01f3, {2, {0x01f1, 0x01f2 }}},
- { 0x01f5, {1, {0x01f4 }}},
- { 0x01f9, {1, {0x01f8 }}},
- { 0x01fb, {1, {0x01fa }}},
- { 0x01fd, {1, {0x01fc }}},
- { 0x01ff, {1, {0x01fe }}},
- { 0x0201, {1, {0x0200 }}},
- { 0x0203, {1, {0x0202 }}},
- { 0x0205, {1, {0x0204 }}},
- { 0x0207, {1, {0x0206 }}},
- { 0x0209, {1, {0x0208 }}},
- { 0x020b, {1, {0x020a }}},
- { 0x020d, {1, {0x020c }}},
- { 0x020f, {1, {0x020e }}},
- { 0x0211, {1, {0x0210 }}},
- { 0x0213, {1, {0x0212 }}},
- { 0x0215, {1, {0x0214 }}},
- { 0x0217, {1, {0x0216 }}},
- { 0x0219, {1, {0x0218 }}},
- { 0x021b, {1, {0x021a }}},
- { 0x021d, {1, {0x021c }}},
- { 0x021f, {1, {0x021e }}},
- { 0x0223, {1, {0x0222 }}},
- { 0x0225, {1, {0x0224 }}},
- { 0x0227, {1, {0x0226 }}},
- { 0x0229, {1, {0x0228 }}},
- { 0x022b, {1, {0x022a }}},
- { 0x022d, {1, {0x022c }}},
- { 0x022f, {1, {0x022e }}},
- { 0x0231, {1, {0x0230 }}},
- { 0x0233, {1, {0x0232 }}},
- { 0x023c, {1, {0x023b }}},
- { 0x023f, {1, {0x2c7e }}},
- { 0x0240, {1, {0x2c7f }}},
- { 0x0242, {1, {0x0241 }}},
- { 0x0247, {1, {0x0246 }}},
- { 0x0249, {1, {0x0248 }}},
- { 0x024b, {1, {0x024a }}},
- { 0x024d, {1, {0x024c }}},
- { 0x024f, {1, {0x024e }}},
- { 0x0250, {1, {0x2c6f }}},
- { 0x0251, {1, {0x2c6d }}},
- { 0x0252, {1, {0x2c70 }}},
- { 0x0253, {1, {0x0181 }}},
- { 0x0254, {1, {0x0186 }}},
- { 0x0256, {1, {0x0189 }}},
- { 0x0257, {1, {0x018a }}},
- { 0x0259, {1, {0x018f }}},
- { 0x025b, {1, {0x0190 }}},
- { 0x0260, {1, {0x0193 }}},
- { 0x0263, {1, {0x0194 }}},
- { 0x0265, {1, {0xa78d }}},
- { 0x0266, {1, {0xa7aa }}},
- { 0x0268, {1, {0x0197 }}},
- { 0x0269, {1, {0x0196 }}},
- { 0x026b, {1, {0x2c62 }}},
- { 0x026f, {1, {0x019c }}},
- { 0x0271, {1, {0x2c6e }}},
- { 0x0272, {1, {0x019d }}},
- { 0x0275, {1, {0x019f }}},
- { 0x027d, {1, {0x2c64 }}},
- { 0x0280, {1, {0x01a6 }}},
- { 0x0283, {1, {0x01a9 }}},
- { 0x0288, {1, {0x01ae }}},
- { 0x0289, {1, {0x0244 }}},
- { 0x028a, {1, {0x01b1 }}},
- { 0x028b, {1, {0x01b2 }}},
- { 0x028c, {1, {0x0245 }}},
- { 0x0292, {1, {0x01b7 }}},
- { 0x0371, {1, {0x0370 }}},
- { 0x0373, {1, {0x0372 }}},
- { 0x0377, {1, {0x0376 }}},
- { 0x037b, {1, {0x03fd }}},
- { 0x037c, {1, {0x03fe }}},
- { 0x037d, {1, {0x03ff }}},
- { 0x03ac, {1, {0x0386 }}},
- { 0x03ad, {1, {0x0388 }}},
- { 0x03ae, {1, {0x0389 }}},
- { 0x03af, {1, {0x038a }}},
- { 0x03b1, {1, {0x0391 }}},
- { 0x03b2, {2, {0x0392, 0x03d0 }}},
- { 0x03b3, {1, {0x0393 }}},
- { 0x03b4, {1, {0x0394 }}},
- { 0x03b5, {2, {0x0395, 0x03f5 }}},
- { 0x03b6, {1, {0x0396 }}},
- { 0x03b7, {1, {0x0397 }}},
- { 0x03b8, {3, {0x0398, 0x03d1, 0x03f4 }}},
- { 0x03b9, {3, {0x0345, 0x0399, 0x1fbe }}},
- { 0x03ba, {2, {0x039a, 0x03f0 }}},
- { 0x03bb, {1, {0x039b }}},
- { 0x03bc, {2, {0x00b5, 0x039c }}},
- { 0x03bd, {1, {0x039d }}},
- { 0x03be, {1, {0x039e }}},
- { 0x03bf, {1, {0x039f }}},
- { 0x03c0, {2, {0x03a0, 0x03d6 }}},
- { 0x03c1, {2, {0x03a1, 0x03f1 }}},
- { 0x03c3, {2, {0x03a3, 0x03c2 }}},
- { 0x03c4, {1, {0x03a4 }}},
- { 0x03c5, {1, {0x03a5 }}},
- { 0x03c6, {2, {0x03a6, 0x03d5 }}},
- { 0x03c7, {1, {0x03a7 }}},
- { 0x03c8, {1, {0x03a8 }}},
- { 0x03c9, {2, {0x03a9, 0x2126 }}},
- { 0x03ca, {1, {0x03aa }}},
- { 0x03cb, {1, {0x03ab }}},
- { 0x03cc, {1, {0x038c }}},
- { 0x03cd, {1, {0x038e }}},
- { 0x03ce, {1, {0x038f }}},
- { 0x03d7, {1, {0x03cf }}},
- { 0x03d9, {1, {0x03d8 }}},
- { 0x03db, {1, {0x03da }}},
- { 0x03dd, {1, {0x03dc }}},
- { 0x03df, {1, {0x03de }}},
- { 0x03e1, {1, {0x03e0 }}},
- { 0x03e3, {1, {0x03e2 }}},
- { 0x03e5, {1, {0x03e4 }}},
- { 0x03e7, {1, {0x03e6 }}},
- { 0x03e9, {1, {0x03e8 }}},
- { 0x03eb, {1, {0x03ea }}},
- { 0x03ed, {1, {0x03ec }}},
- { 0x03ef, {1, {0x03ee }}},
- { 0x03f2, {1, {0x03f9 }}},
- { 0x03f8, {1, {0x03f7 }}},
- { 0x03fb, {1, {0x03fa }}},
- { 0x0430, {1, {0x0410 }}},
- { 0x0431, {1, {0x0411 }}},
- { 0x0432, {1, {0x0412 }}},
- { 0x0433, {1, {0x0413 }}},
- { 0x0434, {1, {0x0414 }}},
- { 0x0435, {1, {0x0415 }}},
- { 0x0436, {1, {0x0416 }}},
- { 0x0437, {1, {0x0417 }}},
- { 0x0438, {1, {0x0418 }}},
- { 0x0439, {1, {0x0419 }}},
- { 0x043a, {1, {0x041a }}},
- { 0x043b, {1, {0x041b }}},
- { 0x043c, {1, {0x041c }}},
- { 0x043d, {1, {0x041d }}},
- { 0x043e, {1, {0x041e }}},
- { 0x043f, {1, {0x041f }}},
- { 0x0440, {1, {0x0420 }}},
- { 0x0441, {1, {0x0421 }}},
- { 0x0442, {1, {0x0422 }}},
- { 0x0443, {1, {0x0423 }}},
- { 0x0444, {1, {0x0424 }}},
- { 0x0445, {1, {0x0425 }}},
- { 0x0446, {1, {0x0426 }}},
- { 0x0447, {1, {0x0427 }}},
- { 0x0448, {1, {0x0428 }}},
- { 0x0449, {1, {0x0429 }}},
- { 0x044a, {1, {0x042a }}},
- { 0x044b, {1, {0x042b }}},
- { 0x044c, {1, {0x042c }}},
- { 0x044d, {1, {0x042d }}},
- { 0x044e, {1, {0x042e }}},
- { 0x044f, {1, {0x042f }}},
- { 0x0450, {1, {0x0400 }}},
- { 0x0451, {1, {0x0401 }}},
- { 0x0452, {1, {0x0402 }}},
- { 0x0453, {1, {0x0403 }}},
- { 0x0454, {1, {0x0404 }}},
- { 0x0455, {1, {0x0405 }}},
- { 0x0456, {1, {0x0406 }}},
- { 0x0457, {1, {0x0407 }}},
- { 0x0458, {1, {0x0408 }}},
- { 0x0459, {1, {0x0409 }}},
- { 0x045a, {1, {0x040a }}},
- { 0x045b, {1, {0x040b }}},
- { 0x045c, {1, {0x040c }}},
- { 0x045d, {1, {0x040d }}},
- { 0x045e, {1, {0x040e }}},
- { 0x045f, {1, {0x040f }}},
- { 0x0461, {1, {0x0460 }}},
- { 0x0463, {1, {0x0462 }}},
- { 0x0465, {1, {0x0464 }}},
- { 0x0467, {1, {0x0466 }}},
- { 0x0469, {1, {0x0468 }}},
- { 0x046b, {1, {0x046a }}},
- { 0x046d, {1, {0x046c }}},
- { 0x046f, {1, {0x046e }}},
- { 0x0471, {1, {0x0470 }}},
- { 0x0473, {1, {0x0472 }}},
- { 0x0475, {1, {0x0474 }}},
- { 0x0477, {1, {0x0476 }}},
- { 0x0479, {1, {0x0478 }}},
- { 0x047b, {1, {0x047a }}},
- { 0x047d, {1, {0x047c }}},
- { 0x047f, {1, {0x047e }}},
- { 0x0481, {1, {0x0480 }}},
- { 0x048b, {1, {0x048a }}},
- { 0x048d, {1, {0x048c }}},
- { 0x048f, {1, {0x048e }}},
- { 0x0491, {1, {0x0490 }}},
- { 0x0493, {1, {0x0492 }}},
- { 0x0495, {1, {0x0494 }}},
- { 0x0497, {1, {0x0496 }}},
- { 0x0499, {1, {0x0498 }}},
- { 0x049b, {1, {0x049a }}},
- { 0x049d, {1, {0x049c }}},
- { 0x049f, {1, {0x049e }}},
- { 0x04a1, {1, {0x04a0 }}},
- { 0x04a3, {1, {0x04a2 }}},
- { 0x04a5, {1, {0x04a4 }}},
- { 0x04a7, {1, {0x04a6 }}},
- { 0x04a9, {1, {0x04a8 }}},
- { 0x04ab, {1, {0x04aa }}},
- { 0x04ad, {1, {0x04ac }}},
- { 0x04af, {1, {0x04ae }}},
- { 0x04b1, {1, {0x04b0 }}},
- { 0x04b3, {1, {0x04b2 }}},
- { 0x04b5, {1, {0x04b4 }}},
- { 0x04b7, {1, {0x04b6 }}},
- { 0x04b9, {1, {0x04b8 }}},
- { 0x04bb, {1, {0x04ba }}},
- { 0x04bd, {1, {0x04bc }}},
- { 0x04bf, {1, {0x04be }}},
- { 0x04c2, {1, {0x04c1 }}},
- { 0x04c4, {1, {0x04c3 }}},
- { 0x04c6, {1, {0x04c5 }}},
- { 0x04c8, {1, {0x04c7 }}},
- { 0x04ca, {1, {0x04c9 }}},
- { 0x04cc, {1, {0x04cb }}},
- { 0x04ce, {1, {0x04cd }}},
- { 0x04cf, {1, {0x04c0 }}},
- { 0x04d1, {1, {0x04d0 }}},
- { 0x04d3, {1, {0x04d2 }}},
- { 0x04d5, {1, {0x04d4 }}},
- { 0x04d7, {1, {0x04d6 }}},
- { 0x04d9, {1, {0x04d8 }}},
- { 0x04db, {1, {0x04da }}},
- { 0x04dd, {1, {0x04dc }}},
- { 0x04df, {1, {0x04de }}},
- { 0x04e1, {1, {0x04e0 }}},
- { 0x04e3, {1, {0x04e2 }}},
- { 0x04e5, {1, {0x04e4 }}},
- { 0x04e7, {1, {0x04e6 }}},
- { 0x04e9, {1, {0x04e8 }}},
- { 0x04eb, {1, {0x04ea }}},
- { 0x04ed, {1, {0x04ec }}},
- { 0x04ef, {1, {0x04ee }}},
- { 0x04f1, {1, {0x04f0 }}},
- { 0x04f3, {1, {0x04f2 }}},
- { 0x04f5, {1, {0x04f4 }}},
- { 0x04f7, {1, {0x04f6 }}},
- { 0x04f9, {1, {0x04f8 }}},
- { 0x04fb, {1, {0x04fa }}},
- { 0x04fd, {1, {0x04fc }}},
- { 0x04ff, {1, {0x04fe }}},
- { 0x0501, {1, {0x0500 }}},
- { 0x0503, {1, {0x0502 }}},
- { 0x0505, {1, {0x0504 }}},
- { 0x0507, {1, {0x0506 }}},
- { 0x0509, {1, {0x0508 }}},
- { 0x050b, {1, {0x050a }}},
- { 0x050d, {1, {0x050c }}},
- { 0x050f, {1, {0x050e }}},
- { 0x0511, {1, {0x0510 }}},
- { 0x0513, {1, {0x0512 }}},
- { 0x0515, {1, {0x0514 }}},
- { 0x0517, {1, {0x0516 }}},
- { 0x0519, {1, {0x0518 }}},
- { 0x051b, {1, {0x051a }}},
- { 0x051d, {1, {0x051c }}},
- { 0x051f, {1, {0x051e }}},
- { 0x0521, {1, {0x0520 }}},
- { 0x0523, {1, {0x0522 }}},
- { 0x0525, {1, {0x0524 }}},
- { 0x0527, {1, {0x0526 }}},
- { 0x0561, {1, {0x0531 }}},
- { 0x0562, {1, {0x0532 }}},
- { 0x0563, {1, {0x0533 }}},
- { 0x0564, {1, {0x0534 }}},
- { 0x0565, {1, {0x0535 }}},
- { 0x0566, {1, {0x0536 }}},
- { 0x0567, {1, {0x0537 }}},
- { 0x0568, {1, {0x0538 }}},
- { 0x0569, {1, {0x0539 }}},
- { 0x056a, {1, {0x053a }}},
- { 0x056b, {1, {0x053b }}},
- { 0x056c, {1, {0x053c }}},
- { 0x056d, {1, {0x053d }}},
- { 0x056e, {1, {0x053e }}},
- { 0x056f, {1, {0x053f }}},
- { 0x0570, {1, {0x0540 }}},
- { 0x0571, {1, {0x0541 }}},
- { 0x0572, {1, {0x0542 }}},
- { 0x0573, {1, {0x0543 }}},
- { 0x0574, {1, {0x0544 }}},
- { 0x0575, {1, {0x0545 }}},
- { 0x0576, {1, {0x0546 }}},
- { 0x0577, {1, {0x0547 }}},
- { 0x0578, {1, {0x0548 }}},
- { 0x0579, {1, {0x0549 }}},
- { 0x057a, {1, {0x054a }}},
- { 0x057b, {1, {0x054b }}},
- { 0x057c, {1, {0x054c }}},
- { 0x057d, {1, {0x054d }}},
- { 0x057e, {1, {0x054e }}},
- { 0x057f, {1, {0x054f }}},
- { 0x0580, {1, {0x0550 }}},
- { 0x0581, {1, {0x0551 }}},
- { 0x0582, {1, {0x0552 }}},
- { 0x0583, {1, {0x0553 }}},
- { 0x0584, {1, {0x0554 }}},
- { 0x0585, {1, {0x0555 }}},
- { 0x0586, {1, {0x0556 }}},
- { 0x1d79, {1, {0xa77d }}},
- { 0x1d7d, {1, {0x2c63 }}},
- { 0x1e01, {1, {0x1e00 }}},
- { 0x1e03, {1, {0x1e02 }}},
- { 0x1e05, {1, {0x1e04 }}},
- { 0x1e07, {1, {0x1e06 }}},
- { 0x1e09, {1, {0x1e08 }}},
- { 0x1e0b, {1, {0x1e0a }}},
- { 0x1e0d, {1, {0x1e0c }}},
- { 0x1e0f, {1, {0x1e0e }}},
- { 0x1e11, {1, {0x1e10 }}},
- { 0x1e13, {1, {0x1e12 }}},
- { 0x1e15, {1, {0x1e14 }}},
- { 0x1e17, {1, {0x1e16 }}},
- { 0x1e19, {1, {0x1e18 }}},
- { 0x1e1b, {1, {0x1e1a }}},
- { 0x1e1d, {1, {0x1e1c }}},
- { 0x1e1f, {1, {0x1e1e }}},
- { 0x1e21, {1, {0x1e20 }}},
- { 0x1e23, {1, {0x1e22 }}},
- { 0x1e25, {1, {0x1e24 }}},
- { 0x1e27, {1, {0x1e26 }}},
- { 0x1e29, {1, {0x1e28 }}},
- { 0x1e2b, {1, {0x1e2a }}},
- { 0x1e2d, {1, {0x1e2c }}},
- { 0x1e2f, {1, {0x1e2e }}},
- { 0x1e31, {1, {0x1e30 }}},
- { 0x1e33, {1, {0x1e32 }}},
- { 0x1e35, {1, {0x1e34 }}},
- { 0x1e37, {1, {0x1e36 }}},
- { 0x1e39, {1, {0x1e38 }}},
- { 0x1e3b, {1, {0x1e3a }}},
- { 0x1e3d, {1, {0x1e3c }}},
- { 0x1e3f, {1, {0x1e3e }}},
- { 0x1e41, {1, {0x1e40 }}},
- { 0x1e43, {1, {0x1e42 }}},
- { 0x1e45, {1, {0x1e44 }}},
- { 0x1e47, {1, {0x1e46 }}},
- { 0x1e49, {1, {0x1e48 }}},
- { 0x1e4b, {1, {0x1e4a }}},
- { 0x1e4d, {1, {0x1e4c }}},
- { 0x1e4f, {1, {0x1e4e }}},
- { 0x1e51, {1, {0x1e50 }}},
- { 0x1e53, {1, {0x1e52 }}},
- { 0x1e55, {1, {0x1e54 }}},
- { 0x1e57, {1, {0x1e56 }}},
- { 0x1e59, {1, {0x1e58 }}},
- { 0x1e5b, {1, {0x1e5a }}},
- { 0x1e5d, {1, {0x1e5c }}},
- { 0x1e5f, {1, {0x1e5e }}},
- { 0x1e61, {2, {0x1e60, 0x1e9b }}},
- { 0x1e63, {1, {0x1e62 }}},
- { 0x1e65, {1, {0x1e64 }}},
- { 0x1e67, {1, {0x1e66 }}},
- { 0x1e69, {1, {0x1e68 }}},
- { 0x1e6b, {1, {0x1e6a }}},
- { 0x1e6d, {1, {0x1e6c }}},
- { 0x1e6f, {1, {0x1e6e }}},
- { 0x1e71, {1, {0x1e70 }}},
- { 0x1e73, {1, {0x1e72 }}},
- { 0x1e75, {1, {0x1e74 }}},
- { 0x1e77, {1, {0x1e76 }}},
- { 0x1e79, {1, {0x1e78 }}},
- { 0x1e7b, {1, {0x1e7a }}},
- { 0x1e7d, {1, {0x1e7c }}},
- { 0x1e7f, {1, {0x1e7e }}},
- { 0x1e81, {1, {0x1e80 }}},
- { 0x1e83, {1, {0x1e82 }}},
- { 0x1e85, {1, {0x1e84 }}},
- { 0x1e87, {1, {0x1e86 }}},
- { 0x1e89, {1, {0x1e88 }}},
- { 0x1e8b, {1, {0x1e8a }}},
- { 0x1e8d, {1, {0x1e8c }}},
- { 0x1e8f, {1, {0x1e8e }}},
- { 0x1e91, {1, {0x1e90 }}},
- { 0x1e93, {1, {0x1e92 }}},
- { 0x1e95, {1, {0x1e94 }}},
- { 0x1ea1, {1, {0x1ea0 }}},
- { 0x1ea3, {1, {0x1ea2 }}},
- { 0x1ea5, {1, {0x1ea4 }}},
- { 0x1ea7, {1, {0x1ea6 }}},
- { 0x1ea9, {1, {0x1ea8 }}},
- { 0x1eab, {1, {0x1eaa }}},
- { 0x1ead, {1, {0x1eac }}},
- { 0x1eaf, {1, {0x1eae }}},
- { 0x1eb1, {1, {0x1eb0 }}},
- { 0x1eb3, {1, {0x1eb2 }}},
- { 0x1eb5, {1, {0x1eb4 }}},
- { 0x1eb7, {1, {0x1eb6 }}},
- { 0x1eb9, {1, {0x1eb8 }}},
- { 0x1ebb, {1, {0x1eba }}},
- { 0x1ebd, {1, {0x1ebc }}},
- { 0x1ebf, {1, {0x1ebe }}},
- { 0x1ec1, {1, {0x1ec0 }}},
- { 0x1ec3, {1, {0x1ec2 }}},
- { 0x1ec5, {1, {0x1ec4 }}},
- { 0x1ec7, {1, {0x1ec6 }}},
- { 0x1ec9, {1, {0x1ec8 }}},
- { 0x1ecb, {1, {0x1eca }}},
- { 0x1ecd, {1, {0x1ecc }}},
- { 0x1ecf, {1, {0x1ece }}},
- { 0x1ed1, {1, {0x1ed0 }}},
- { 0x1ed3, {1, {0x1ed2 }}},
- { 0x1ed5, {1, {0x1ed4 }}},
- { 0x1ed7, {1, {0x1ed6 }}},
- { 0x1ed9, {1, {0x1ed8 }}},
- { 0x1edb, {1, {0x1eda }}},
- { 0x1edd, {1, {0x1edc }}},
- { 0x1edf, {1, {0x1ede }}},
- { 0x1ee1, {1, {0x1ee0 }}},
- { 0x1ee3, {1, {0x1ee2 }}},
- { 0x1ee5, {1, {0x1ee4 }}},
- { 0x1ee7, {1, {0x1ee6 }}},
- { 0x1ee9, {1, {0x1ee8 }}},
- { 0x1eeb, {1, {0x1eea }}},
- { 0x1eed, {1, {0x1eec }}},
- { 0x1eef, {1, {0x1eee }}},
- { 0x1ef1, {1, {0x1ef0 }}},
- { 0x1ef3, {1, {0x1ef2 }}},
- { 0x1ef5, {1, {0x1ef4 }}},
- { 0x1ef7, {1, {0x1ef6 }}},
- { 0x1ef9, {1, {0x1ef8 }}},
- { 0x1efb, {1, {0x1efa }}},
- { 0x1efd, {1, {0x1efc }}},
- { 0x1eff, {1, {0x1efe }}},
- { 0x1f00, {1, {0x1f08 }}},
- { 0x1f01, {1, {0x1f09 }}},
- { 0x1f02, {1, {0x1f0a }}},
- { 0x1f03, {1, {0x1f0b }}},
- { 0x1f04, {1, {0x1f0c }}},
- { 0x1f05, {1, {0x1f0d }}},
- { 0x1f06, {1, {0x1f0e }}},
- { 0x1f07, {1, {0x1f0f }}},
- { 0x1f10, {1, {0x1f18 }}},
- { 0x1f11, {1, {0x1f19 }}},
- { 0x1f12, {1, {0x1f1a }}},
- { 0x1f13, {1, {0x1f1b }}},
- { 0x1f14, {1, {0x1f1c }}},
- { 0x1f15, {1, {0x1f1d }}},
- { 0x1f20, {1, {0x1f28 }}},
- { 0x1f21, {1, {0x1f29 }}},
- { 0x1f22, {1, {0x1f2a }}},
- { 0x1f23, {1, {0x1f2b }}},
- { 0x1f24, {1, {0x1f2c }}},
- { 0x1f25, {1, {0x1f2d }}},
- { 0x1f26, {1, {0x1f2e }}},
- { 0x1f27, {1, {0x1f2f }}},
- { 0x1f30, {1, {0x1f38 }}},
- { 0x1f31, {1, {0x1f39 }}},
- { 0x1f32, {1, {0x1f3a }}},
- { 0x1f33, {1, {0x1f3b }}},
- { 0x1f34, {1, {0x1f3c }}},
- { 0x1f35, {1, {0x1f3d }}},
- { 0x1f36, {1, {0x1f3e }}},
- { 0x1f37, {1, {0x1f3f }}},
- { 0x1f40, {1, {0x1f48 }}},
- { 0x1f41, {1, {0x1f49 }}},
- { 0x1f42, {1, {0x1f4a }}},
- { 0x1f43, {1, {0x1f4b }}},
- { 0x1f44, {1, {0x1f4c }}},
- { 0x1f45, {1, {0x1f4d }}},
- { 0x1f51, {1, {0x1f59 }}},
- { 0x1f53, {1, {0x1f5b }}},
- { 0x1f55, {1, {0x1f5d }}},
- { 0x1f57, {1, {0x1f5f }}},
- { 0x1f60, {1, {0x1f68 }}},
- { 0x1f61, {1, {0x1f69 }}},
- { 0x1f62, {1, {0x1f6a }}},
- { 0x1f63, {1, {0x1f6b }}},
- { 0x1f64, {1, {0x1f6c }}},
- { 0x1f65, {1, {0x1f6d }}},
- { 0x1f66, {1, {0x1f6e }}},
- { 0x1f67, {1, {0x1f6f }}},
- { 0x1f70, {1, {0x1fba }}},
- { 0x1f71, {1, {0x1fbb }}},
- { 0x1f72, {1, {0x1fc8 }}},
- { 0x1f73, {1, {0x1fc9 }}},
- { 0x1f74, {1, {0x1fca }}},
- { 0x1f75, {1, {0x1fcb }}},
- { 0x1f76, {1, {0x1fda }}},
- { 0x1f77, {1, {0x1fdb }}},
- { 0x1f78, {1, {0x1ff8 }}},
- { 0x1f79, {1, {0x1ff9 }}},
- { 0x1f7a, {1, {0x1fea }}},
- { 0x1f7b, {1, {0x1feb }}},
- { 0x1f7c, {1, {0x1ffa }}},
- { 0x1f7d, {1, {0x1ffb }}},
- { 0x1fb0, {1, {0x1fb8 }}},
- { 0x1fb1, {1, {0x1fb9 }}},
- { 0x1fd0, {1, {0x1fd8 }}},
- { 0x1fd1, {1, {0x1fd9 }}},
- { 0x1fe0, {1, {0x1fe8 }}},
- { 0x1fe1, {1, {0x1fe9 }}},
- { 0x1fe5, {1, {0x1fec }}},
- { 0x214e, {1, {0x2132 }}},
- { 0x2170, {1, {0x2160 }}},
- { 0x2171, {1, {0x2161 }}},
- { 0x2172, {1, {0x2162 }}},
- { 0x2173, {1, {0x2163 }}},
- { 0x2174, {1, {0x2164 }}},
- { 0x2175, {1, {0x2165 }}},
- { 0x2176, {1, {0x2166 }}},
- { 0x2177, {1, {0x2167 }}},
- { 0x2178, {1, {0x2168 }}},
- { 0x2179, {1, {0x2169 }}},
- { 0x217a, {1, {0x216a }}},
- { 0x217b, {1, {0x216b }}},
- { 0x217c, {1, {0x216c }}},
- { 0x217d, {1, {0x216d }}},
- { 0x217e, {1, {0x216e }}},
- { 0x217f, {1, {0x216f }}},
- { 0x2184, {1, {0x2183 }}},
- { 0x24d0, {1, {0x24b6 }}},
- { 0x24d1, {1, {0x24b7 }}},
- { 0x24d2, {1, {0x24b8 }}},
- { 0x24d3, {1, {0x24b9 }}},
- { 0x24d4, {1, {0x24ba }}},
- { 0x24d5, {1, {0x24bb }}},
- { 0x24d6, {1, {0x24bc }}},
- { 0x24d7, {1, {0x24bd }}},
- { 0x24d8, {1, {0x24be }}},
- { 0x24d9, {1, {0x24bf }}},
- { 0x24da, {1, {0x24c0 }}},
- { 0x24db, {1, {0x24c1 }}},
- { 0x24dc, {1, {0x24c2 }}},
- { 0x24dd, {1, {0x24c3 }}},
- { 0x24de, {1, {0x24c4 }}},
- { 0x24df, {1, {0x24c5 }}},
- { 0x24e0, {1, {0x24c6 }}},
- { 0x24e1, {1, {0x24c7 }}},
- { 0x24e2, {1, {0x24c8 }}},
- { 0x24e3, {1, {0x24c9 }}},
- { 0x24e4, {1, {0x24ca }}},
- { 0x24e5, {1, {0x24cb }}},
- { 0x24e6, {1, {0x24cc }}},
- { 0x24e7, {1, {0x24cd }}},
- { 0x24e8, {1, {0x24ce }}},
- { 0x24e9, {1, {0x24cf }}},
- { 0x2c30, {1, {0x2c00 }}},
- { 0x2c31, {1, {0x2c01 }}},
- { 0x2c32, {1, {0x2c02 }}},
- { 0x2c33, {1, {0x2c03 }}},
- { 0x2c34, {1, {0x2c04 }}},
- { 0x2c35, {1, {0x2c05 }}},
- { 0x2c36, {1, {0x2c06 }}},
- { 0x2c37, {1, {0x2c07 }}},
- { 0x2c38, {1, {0x2c08 }}},
- { 0x2c39, {1, {0x2c09 }}},
- { 0x2c3a, {1, {0x2c0a }}},
- { 0x2c3b, {1, {0x2c0b }}},
- { 0x2c3c, {1, {0x2c0c }}},
- { 0x2c3d, {1, {0x2c0d }}},
- { 0x2c3e, {1, {0x2c0e }}},
- { 0x2c3f, {1, {0x2c0f }}},
- { 0x2c40, {1, {0x2c10 }}},
- { 0x2c41, {1, {0x2c11 }}},
- { 0x2c42, {1, {0x2c12 }}},
- { 0x2c43, {1, {0x2c13 }}},
- { 0x2c44, {1, {0x2c14 }}},
- { 0x2c45, {1, {0x2c15 }}},
- { 0x2c46, {1, {0x2c16 }}},
- { 0x2c47, {1, {0x2c17 }}},
- { 0x2c48, {1, {0x2c18 }}},
- { 0x2c49, {1, {0x2c19 }}},
- { 0x2c4a, {1, {0x2c1a }}},
- { 0x2c4b, {1, {0x2c1b }}},
- { 0x2c4c, {1, {0x2c1c }}},
- { 0x2c4d, {1, {0x2c1d }}},
- { 0x2c4e, {1, {0x2c1e }}},
- { 0x2c4f, {1, {0x2c1f }}},
- { 0x2c50, {1, {0x2c20 }}},
- { 0x2c51, {1, {0x2c21 }}},
- { 0x2c52, {1, {0x2c22 }}},
- { 0x2c53, {1, {0x2c23 }}},
- { 0x2c54, {1, {0x2c24 }}},
- { 0x2c55, {1, {0x2c25 }}},
- { 0x2c56, {1, {0x2c26 }}},
- { 0x2c57, {1, {0x2c27 }}},
- { 0x2c58, {1, {0x2c28 }}},
- { 0x2c59, {1, {0x2c29 }}},
- { 0x2c5a, {1, {0x2c2a }}},
- { 0x2c5b, {1, {0x2c2b }}},
- { 0x2c5c, {1, {0x2c2c }}},
- { 0x2c5d, {1, {0x2c2d }}},
- { 0x2c5e, {1, {0x2c2e }}},
- { 0x2c61, {1, {0x2c60 }}},
- { 0x2c65, {1, {0x023a }}},
- { 0x2c66, {1, {0x023e }}},
- { 0x2c68, {1, {0x2c67 }}},
- { 0x2c6a, {1, {0x2c69 }}},
- { 0x2c6c, {1, {0x2c6b }}},
- { 0x2c73, {1, {0x2c72 }}},
- { 0x2c76, {1, {0x2c75 }}},
- { 0x2c81, {1, {0x2c80 }}},
- { 0x2c83, {1, {0x2c82 }}},
- { 0x2c85, {1, {0x2c84 }}},
- { 0x2c87, {1, {0x2c86 }}},
- { 0x2c89, {1, {0x2c88 }}},
- { 0x2c8b, {1, {0x2c8a }}},
- { 0x2c8d, {1, {0x2c8c }}},
- { 0x2c8f, {1, {0x2c8e }}},
- { 0x2c91, {1, {0x2c90 }}},
- { 0x2c93, {1, {0x2c92 }}},
- { 0x2c95, {1, {0x2c94 }}},
- { 0x2c97, {1, {0x2c96 }}},
- { 0x2c99, {1, {0x2c98 }}},
- { 0x2c9b, {1, {0x2c9a }}},
- { 0x2c9d, {1, {0x2c9c }}},
- { 0x2c9f, {1, {0x2c9e }}},
- { 0x2ca1, {1, {0x2ca0 }}},
- { 0x2ca3, {1, {0x2ca2 }}},
- { 0x2ca5, {1, {0x2ca4 }}},
- { 0x2ca7, {1, {0x2ca6 }}},
- { 0x2ca9, {1, {0x2ca8 }}},
- { 0x2cab, {1, {0x2caa }}},
- { 0x2cad, {1, {0x2cac }}},
- { 0x2caf, {1, {0x2cae }}},
- { 0x2cb1, {1, {0x2cb0 }}},
- { 0x2cb3, {1, {0x2cb2 }}},
- { 0x2cb5, {1, {0x2cb4 }}},
- { 0x2cb7, {1, {0x2cb6 }}},
- { 0x2cb9, {1, {0x2cb8 }}},
- { 0x2cbb, {1, {0x2cba }}},
- { 0x2cbd, {1, {0x2cbc }}},
- { 0x2cbf, {1, {0x2cbe }}},
- { 0x2cc1, {1, {0x2cc0 }}},
- { 0x2cc3, {1, {0x2cc2 }}},
- { 0x2cc5, {1, {0x2cc4 }}},
- { 0x2cc7, {1, {0x2cc6 }}},
- { 0x2cc9, {1, {0x2cc8 }}},
- { 0x2ccb, {1, {0x2cca }}},
- { 0x2ccd, {1, {0x2ccc }}},
- { 0x2ccf, {1, {0x2cce }}},
- { 0x2cd1, {1, {0x2cd0 }}},
- { 0x2cd3, {1, {0x2cd2 }}},
- { 0x2cd5, {1, {0x2cd4 }}},
- { 0x2cd7, {1, {0x2cd6 }}},
- { 0x2cd9, {1, {0x2cd8 }}},
- { 0x2cdb, {1, {0x2cda }}},
- { 0x2cdd, {1, {0x2cdc }}},
- { 0x2cdf, {1, {0x2cde }}},
- { 0x2ce1, {1, {0x2ce0 }}},
- { 0x2ce3, {1, {0x2ce2 }}},
- { 0x2cec, {1, {0x2ceb }}},
- { 0x2cee, {1, {0x2ced }}},
- { 0x2cf3, {1, {0x2cf2 }}},
- { 0x2d00, {1, {0x10a0 }}},
- { 0x2d01, {1, {0x10a1 }}},
- { 0x2d02, {1, {0x10a2 }}},
- { 0x2d03, {1, {0x10a3 }}},
- { 0x2d04, {1, {0x10a4 }}},
- { 0x2d05, {1, {0x10a5 }}},
- { 0x2d06, {1, {0x10a6 }}},
- { 0x2d07, {1, {0x10a7 }}},
- { 0x2d08, {1, {0x10a8 }}},
- { 0x2d09, {1, {0x10a9 }}},
- { 0x2d0a, {1, {0x10aa }}},
- { 0x2d0b, {1, {0x10ab }}},
- { 0x2d0c, {1, {0x10ac }}},
- { 0x2d0d, {1, {0x10ad }}},
- { 0x2d0e, {1, {0x10ae }}},
- { 0x2d0f, {1, {0x10af }}},
- { 0x2d10, {1, {0x10b0 }}},
- { 0x2d11, {1, {0x10b1 }}},
- { 0x2d12, {1, {0x10b2 }}},
- { 0x2d13, {1, {0x10b3 }}},
- { 0x2d14, {1, {0x10b4 }}},
- { 0x2d15, {1, {0x10b5 }}},
- { 0x2d16, {1, {0x10b6 }}},
- { 0x2d17, {1, {0x10b7 }}},
- { 0x2d18, {1, {0x10b8 }}},
- { 0x2d19, {1, {0x10b9 }}},
- { 0x2d1a, {1, {0x10ba }}},
- { 0x2d1b, {1, {0x10bb }}},
- { 0x2d1c, {1, {0x10bc }}},
- { 0x2d1d, {1, {0x10bd }}},
- { 0x2d1e, {1, {0x10be }}},
- { 0x2d1f, {1, {0x10bf }}},
- { 0x2d20, {1, {0x10c0 }}},
- { 0x2d21, {1, {0x10c1 }}},
- { 0x2d22, {1, {0x10c2 }}},
- { 0x2d23, {1, {0x10c3 }}},
- { 0x2d24, {1, {0x10c4 }}},
- { 0x2d25, {1, {0x10c5 }}},
- { 0x2d27, {1, {0x10c7 }}},
- { 0x2d2d, {1, {0x10cd }}},
- { 0xa641, {1, {0xa640 }}},
- { 0xa643, {1, {0xa642 }}},
- { 0xa645, {1, {0xa644 }}},
- { 0xa647, {1, {0xa646 }}},
- { 0xa649, {1, {0xa648 }}},
- { 0xa64b, {1, {0xa64a }}},
- { 0xa64d, {1, {0xa64c }}},
- { 0xa64f, {1, {0xa64e }}},
- { 0xa651, {1, {0xa650 }}},
- { 0xa653, {1, {0xa652 }}},
- { 0xa655, {1, {0xa654 }}},
- { 0xa657, {1, {0xa656 }}},
- { 0xa659, {1, {0xa658 }}},
- { 0xa65b, {1, {0xa65a }}},
- { 0xa65d, {1, {0xa65c }}},
- { 0xa65f, {1, {0xa65e }}},
- { 0xa661, {1, {0xa660 }}},
- { 0xa663, {1, {0xa662 }}},
- { 0xa665, {1, {0xa664 }}},
- { 0xa667, {1, {0xa666 }}},
- { 0xa669, {1, {0xa668 }}},
- { 0xa66b, {1, {0xa66a }}},
- { 0xa66d, {1, {0xa66c }}},
- { 0xa681, {1, {0xa680 }}},
- { 0xa683, {1, {0xa682 }}},
- { 0xa685, {1, {0xa684 }}},
- { 0xa687, {1, {0xa686 }}},
- { 0xa689, {1, {0xa688 }}},
- { 0xa68b, {1, {0xa68a }}},
- { 0xa68d, {1, {0xa68c }}},
- { 0xa68f, {1, {0xa68e }}},
- { 0xa691, {1, {0xa690 }}},
- { 0xa693, {1, {0xa692 }}},
- { 0xa695, {1, {0xa694 }}},
- { 0xa697, {1, {0xa696 }}},
- { 0xa723, {1, {0xa722 }}},
- { 0xa725, {1, {0xa724 }}},
- { 0xa727, {1, {0xa726 }}},
- { 0xa729, {1, {0xa728 }}},
- { 0xa72b, {1, {0xa72a }}},
- { 0xa72d, {1, {0xa72c }}},
- { 0xa72f, {1, {0xa72e }}},
- { 0xa733, {1, {0xa732 }}},
- { 0xa735, {1, {0xa734 }}},
- { 0xa737, {1, {0xa736 }}},
- { 0xa739, {1, {0xa738 }}},
- { 0xa73b, {1, {0xa73a }}},
- { 0xa73d, {1, {0xa73c }}},
- { 0xa73f, {1, {0xa73e }}},
- { 0xa741, {1, {0xa740 }}},
- { 0xa743, {1, {0xa742 }}},
- { 0xa745, {1, {0xa744 }}},
- { 0xa747, {1, {0xa746 }}},
- { 0xa749, {1, {0xa748 }}},
- { 0xa74b, {1, {0xa74a }}},
- { 0xa74d, {1, {0xa74c }}},
- { 0xa74f, {1, {0xa74e }}},
- { 0xa751, {1, {0xa750 }}},
- { 0xa753, {1, {0xa752 }}},
- { 0xa755, {1, {0xa754 }}},
- { 0xa757, {1, {0xa756 }}},
- { 0xa759, {1, {0xa758 }}},
- { 0xa75b, {1, {0xa75a }}},
- { 0xa75d, {1, {0xa75c }}},
- { 0xa75f, {1, {0xa75e }}},
- { 0xa761, {1, {0xa760 }}},
- { 0xa763, {1, {0xa762 }}},
- { 0xa765, {1, {0xa764 }}},
- { 0xa767, {1, {0xa766 }}},
- { 0xa769, {1, {0xa768 }}},
- { 0xa76b, {1, {0xa76a }}},
- { 0xa76d, {1, {0xa76c }}},
- { 0xa76f, {1, {0xa76e }}},
- { 0xa77a, {1, {0xa779 }}},
- { 0xa77c, {1, {0xa77b }}},
- { 0xa77f, {1, {0xa77e }}},
- { 0xa781, {1, {0xa780 }}},
- { 0xa783, {1, {0xa782 }}},
- { 0xa785, {1, {0xa784 }}},
- { 0xa787, {1, {0xa786 }}},
- { 0xa78c, {1, {0xa78b }}},
- { 0xa791, {1, {0xa790 }}},
- { 0xa793, {1, {0xa792 }}},
- { 0xa7a1, {1, {0xa7a0 }}},
- { 0xa7a3, {1, {0xa7a2 }}},
- { 0xa7a5, {1, {0xa7a4 }}},
- { 0xa7a7, {1, {0xa7a6 }}},
- { 0xa7a9, {1, {0xa7a8 }}},
- { 0xff41, {1, {0xff21 }}},
- { 0xff42, {1, {0xff22 }}},
- { 0xff43, {1, {0xff23 }}},
- { 0xff44, {1, {0xff24 }}},
- { 0xff45, {1, {0xff25 }}},
- { 0xff46, {1, {0xff26 }}},
- { 0xff47, {1, {0xff27 }}},
- { 0xff48, {1, {0xff28 }}},
- { 0xff49, {1, {0xff29 }}},
- { 0xff4a, {1, {0xff2a }}},
- { 0xff4b, {1, {0xff2b }}},
- { 0xff4c, {1, {0xff2c }}},
- { 0xff4d, {1, {0xff2d }}},
- { 0xff4e, {1, {0xff2e }}},
- { 0xff4f, {1, {0xff2f }}},
- { 0xff50, {1, {0xff30 }}},
- { 0xff51, {1, {0xff31 }}},
- { 0xff52, {1, {0xff32 }}},
- { 0xff53, {1, {0xff33 }}},
- { 0xff54, {1, {0xff34 }}},
- { 0xff55, {1, {0xff35 }}},
- { 0xff56, {1, {0xff36 }}},
- { 0xff57, {1, {0xff37 }}},
- { 0xff58, {1, {0xff38 }}},
- { 0xff59, {1, {0xff39 }}},
- { 0xff5a, {1, {0xff3a }}},
- { 0x10428, {1, {0x10400 }}},
- { 0x10429, {1, {0x10401 }}},
- { 0x1042a, {1, {0x10402 }}},
- { 0x1042b, {1, {0x10403 }}},
- { 0x1042c, {1, {0x10404 }}},
- { 0x1042d, {1, {0x10405 }}},
- { 0x1042e, {1, {0x10406 }}},
- { 0x1042f, {1, {0x10407 }}},
- { 0x10430, {1, {0x10408 }}},
- { 0x10431, {1, {0x10409 }}},
- { 0x10432, {1, {0x1040a }}},
- { 0x10433, {1, {0x1040b }}},
- { 0x10434, {1, {0x1040c }}},
- { 0x10435, {1, {0x1040d }}},
- { 0x10436, {1, {0x1040e }}},
- { 0x10437, {1, {0x1040f }}},
- { 0x10438, {1, {0x10410 }}},
- { 0x10439, {1, {0x10411 }}},
- { 0x1043a, {1, {0x10412 }}},
- { 0x1043b, {1, {0x10413 }}},
- { 0x1043c, {1, {0x10414 }}},
- { 0x1043d, {1, {0x10415 }}},
- { 0x1043e, {1, {0x10416 }}},
- { 0x1043f, {1, {0x10417 }}},
- { 0x10440, {1, {0x10418 }}},
- { 0x10441, {1, {0x10419 }}},
- { 0x10442, {1, {0x1041a }}},
- { 0x10443, {1, {0x1041b }}},
- { 0x10444, {1, {0x1041c }}},
- { 0x10445, {1, {0x1041d }}},
- { 0x10446, {1, {0x1041e }}},
- { 0x10447, {1, {0x1041f }}},
- { 0x10448, {1, {0x10420 }}},
- { 0x10449, {1, {0x10421 }}},
- { 0x1044a, {1, {0x10422 }}},
- { 0x1044b, {1, {0x10423 }}},
- { 0x1044c, {1, {0x10424 }}},
- { 0x1044d, {1, {0x10425 }}},
- { 0x1044e, {1, {0x10426 }}},
- { 0x1044f, {1, {0x10427 }}},
-};
-
-static const CaseUnfold_11_Type CaseUnfold_11_Locale[] = {
- { 0x0069, {1, {0x0049 }}},
-};
-
-static const CaseUnfold_12_Type CaseUnfold_12[] = {
- { {0x0061, 0x02be}, {1, {0x1e9a }}},
- { {0x0066, 0x0066}, {1, {0xfb00 }}},
- { {0x0066, 0x0069}, {1, {0xfb01 }}},
- { {0x0066, 0x006c}, {1, {0xfb02 }}},
- { {0x0068, 0x0331}, {1, {0x1e96 }}},
- { {0x006a, 0x030c}, {1, {0x01f0 }}},
- { {0x0073, 0x0073}, {2, {0x00df, 0x1e9e }}},
- { {0x0073, 0x0074}, {2, {0xfb05, 0xfb06 }}},
- { {0x0074, 0x0308}, {1, {0x1e97 }}},
- { {0x0077, 0x030a}, {1, {0x1e98 }}},
- { {0x0079, 0x030a}, {1, {0x1e99 }}},
- { {0x02bc, 0x006e}, {1, {0x0149 }}},
- { {0x03ac, 0x03b9}, {1, {0x1fb4 }}},
- { {0x03ae, 0x03b9}, {1, {0x1fc4 }}},
- { {0x03b1, 0x0342}, {1, {0x1fb6 }}},
- { {0x03b1, 0x03b9}, {2, {0x1fb3, 0x1fbc }}},
- { {0x03b7, 0x0342}, {1, {0x1fc6 }}},
- { {0x03b7, 0x03b9}, {2, {0x1fc3, 0x1fcc }}},
- { {0x03b9, 0x0342}, {1, {0x1fd6 }}},
- { {0x03c1, 0x0313}, {1, {0x1fe4 }}},
- { {0x03c5, 0x0313}, {1, {0x1f50 }}},
- { {0x03c5, 0x0342}, {1, {0x1fe6 }}},
- { {0x03c9, 0x0342}, {1, {0x1ff6 }}},
- { {0x03c9, 0x03b9}, {2, {0x1ff3, 0x1ffc }}},
- { {0x03ce, 0x03b9}, {1, {0x1ff4 }}},
- { {0x0565, 0x0582}, {1, {0x0587 }}},
- { {0x0574, 0x0565}, {1, {0xfb14 }}},
- { {0x0574, 0x056b}, {1, {0xfb15 }}},
- { {0x0574, 0x056d}, {1, {0xfb17 }}},
- { {0x0574, 0x0576}, {1, {0xfb13 }}},
- { {0x057e, 0x0576}, {1, {0xfb16 }}},
- { {0x1f00, 0x03b9}, {2, {0x1f80, 0x1f88 }}},
- { {0x1f01, 0x03b9}, {2, {0x1f81, 0x1f89 }}},
- { {0x1f02, 0x03b9}, {2, {0x1f82, 0x1f8a }}},
- { {0x1f03, 0x03b9}, {2, {0x1f83, 0x1f8b }}},
- { {0x1f04, 0x03b9}, {2, {0x1f84, 0x1f8c }}},
- { {0x1f05, 0x03b9}, {2, {0x1f85, 0x1f8d }}},
- { {0x1f06, 0x03b9}, {2, {0x1f86, 0x1f8e }}},
- { {0x1f07, 0x03b9}, {2, {0x1f87, 0x1f8f }}},
- { {0x1f20, 0x03b9}, {2, {0x1f90, 0x1f98 }}},
- { {0x1f21, 0x03b9}, {2, {0x1f91, 0x1f99 }}},
- { {0x1f22, 0x03b9}, {2, {0x1f92, 0x1f9a }}},
- { {0x1f23, 0x03b9}, {2, {0x1f93, 0x1f9b }}},
- { {0x1f24, 0x03b9}, {2, {0x1f94, 0x1f9c }}},
- { {0x1f25, 0x03b9}, {2, {0x1f95, 0x1f9d }}},
- { {0x1f26, 0x03b9}, {2, {0x1f96, 0x1f9e }}},
- { {0x1f27, 0x03b9}, {2, {0x1f97, 0x1f9f }}},
- { {0x1f60, 0x03b9}, {2, {0x1fa0, 0x1fa8 }}},
- { {0x1f61, 0x03b9}, {2, {0x1fa1, 0x1fa9 }}},
- { {0x1f62, 0x03b9}, {2, {0x1fa2, 0x1faa }}},
- { {0x1f63, 0x03b9}, {2, {0x1fa3, 0x1fab }}},
- { {0x1f64, 0x03b9}, {2, {0x1fa4, 0x1fac }}},
- { {0x1f65, 0x03b9}, {2, {0x1fa5, 0x1fad }}},
- { {0x1f66, 0x03b9}, {2, {0x1fa6, 0x1fae }}},
- { {0x1f67, 0x03b9}, {2, {0x1fa7, 0x1faf }}},
- { {0x1f70, 0x03b9}, {1, {0x1fb2 }}},
- { {0x1f74, 0x03b9}, {1, {0x1fc2 }}},
- { {0x1f7c, 0x03b9}, {1, {0x1ff2 }}},
-};
-
-static const CaseUnfold_12_Type CaseUnfold_12_Locale[] = {
- { {0x0069, 0x0307}, {1, {0x0130 }}},
-};
-
-static const CaseUnfold_13_Type CaseUnfold_13[] = {
- { {0x0066, 0x0066, 0x0069}, {1, {0xfb03 }}},
- { {0x0066, 0x0066, 0x006c}, {1, {0xfb04 }}},
- { {0x03b1, 0x0342, 0x03b9}, {1, {0x1fb7 }}},
- { {0x03b7, 0x0342, 0x03b9}, {1, {0x1fc7 }}},
- { {0x03b9, 0x0308, 0x0300}, {1, {0x1fd2 }}},
- { {0x03b9, 0x0308, 0x0301}, {2, {0x0390, 0x1fd3 }}},
- { {0x03b9, 0x0308, 0x0342}, {1, {0x1fd7 }}},
- { {0x03c5, 0x0308, 0x0300}, {1, {0x1fe2 }}},
- { {0x03c5, 0x0308, 0x0301}, {2, {0x03b0, 0x1fe3 }}},
- { {0x03c5, 0x0308, 0x0342}, {1, {0x1fe7 }}},
- { {0x03c5, 0x0313, 0x0300}, {1, {0x1f52 }}},
- { {0x03c5, 0x0313, 0x0301}, {1, {0x1f54 }}},
- { {0x03c5, 0x0313, 0x0342}, {1, {0x1f56 }}},
- { {0x03c9, 0x0342, 0x03b9}, {1, {0x1ff7 }}},
-};
-
-#define FOLD_TABLE_SIZE 1357
-#define UNFOLD1_TABLE_SIZE 1207
-#define UNFOLD2_TABLE_SIZE 88
-#define UNFOLD3_TABLE_SIZE 23
diff --git a/enc/unicode/name2ctype.h b/enc/unicode/name2ctype.h
index 2e80edf525..a45ea59a4b 100644
--- a/enc/unicode/name2ctype.h
+++ b/enc/unicode/name2ctype.h
@@ -36,4273 +36,7 @@ error "gperf generated tables don't work with this execution character set. Plea
#define long size_t
-/* 'NEWLINE': [[:NEWLINE:]] */
-static const OnigCodePoint CR_NEWLINE[] = {
- 1,
- 0x000a, 0x000a,
-}; /* CR_NEWLINE */
-
-/* 'Alpha': [[:Alpha:]] */
-static const OnigCodePoint CR_Alpha[] = {
- 540,
- 0x0041, 0x005a,
- 0x0061, 0x007a,
- 0x00aa, 0x00aa,
- 0x00b5, 0x00b5,
- 0x00ba, 0x00ba,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00f6,
- 0x00f8, 0x02c1,
- 0x02c6, 0x02d1,
- 0x02e0, 0x02e4,
- 0x02ec, 0x02ec,
- 0x02ee, 0x02ee,
- 0x0345, 0x0345,
- 0x0370, 0x0374,
- 0x0376, 0x0377,
- 0x037a, 0x037d,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x03f5,
- 0x03f7, 0x0481,
- 0x048a, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x0559,
- 0x0561, 0x0587,
- 0x05b0, 0x05bd,
- 0x05bf, 0x05bf,
- 0x05c1, 0x05c2,
- 0x05c4, 0x05c5,
- 0x05c7, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f2,
- 0x0610, 0x061a,
- 0x0620, 0x0657,
- 0x0659, 0x065f,
- 0x066e, 0x06d3,
- 0x06d5, 0x06dc,
- 0x06e1, 0x06e8,
- 0x06ed, 0x06ef,
- 0x06fa, 0x06fc,
- 0x06ff, 0x06ff,
- 0x0710, 0x073f,
- 0x074d, 0x07b1,
- 0x07ca, 0x07ea,
- 0x07f4, 0x07f5,
- 0x07fa, 0x07fa,
- 0x0800, 0x0817,
- 0x081a, 0x082c,
- 0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08e9,
- 0x08f0, 0x08fe,
- 0x0900, 0x093b,
- 0x093d, 0x094c,
- 0x094e, 0x0950,
- 0x0955, 0x0963,
- 0x0971, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bd, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09cc,
- 0x09ce, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09f0, 0x09f1,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4c,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a70, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abd, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acc,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3d, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4c,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b71, 0x0b71,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcc,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4c,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbd, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccc,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4c,
- 0x0d4e, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d7a, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df3,
- 0x0e01, 0x0e3a,
- 0x0e40, 0x0e46,
- 0x0e4d, 0x0e4d,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ecd, 0x0ecd,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f00,
- 0x0f40, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f81,
- 0x0f88, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x1000, 0x1036,
- 0x1038, 0x1038,
- 0x103b, 0x103f,
- 0x1050, 0x1062,
- 0x1065, 0x1068,
- 0x106e, 0x1086,
- 0x108e, 0x108e,
- 0x109c, 0x109d,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x10fa,
- 0x10fc, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135f, 0x135f,
- 0x1380, 0x138f,
- 0x13a0, 0x13f4,
- 0x1401, 0x166c,
- 0x166f, 0x167f,
- 0x1681, 0x169a,
- 0x16a0, 0x16ea,
- 0x16ee, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1713,
- 0x1720, 0x1733,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17b3,
- 0x17b6, 0x17c8,
- 0x17d7, 0x17d7,
- 0x17dc, 0x17dc,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x1938,
- 0x1950, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x1a00, 0x1a1b,
- 0x1a20, 0x1a5e,
- 0x1a61, 0x1a74,
- 0x1aa7, 0x1aa7,
- 0x1b00, 0x1b33,
- 0x1b35, 0x1b43,
- 0x1b45, 0x1b4b,
- 0x1b80, 0x1ba9,
- 0x1bac, 0x1baf,
- 0x1bba, 0x1be5,
- 0x1be7, 0x1bf1,
- 0x1c00, 0x1c35,
- 0x1c4d, 0x1c4f,
- 0x1c5a, 0x1c7d,
- 0x1ce9, 0x1cec,
- 0x1cee, 0x1cf3,
- 0x1cf5, 0x1cf6,
- 0x1d00, 0x1dbf,
- 0x1e00, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fbc,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fcc,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fe0, 0x1fec,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffc,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210a, 0x2113,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x212f, 0x2139,
- 0x213c, 0x213f,
- 0x2145, 0x2149,
- 0x214e, 0x214e,
- 0x2160, 0x2188,
- 0x24b6, 0x24e9,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2ce4,
- 0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d6f,
- 0x2d80, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2dff,
- 0x2e2f, 0x2e2f,
- 0x3005, 0x3007,
- 0x3021, 0x3029,
- 0x3031, 0x3035,
- 0x3038, 0x303c,
- 0x3041, 0x3096,
- 0x309d, 0x309f,
- 0x30a1, 0x30fa,
- 0x30fc, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x31a0, 0x31ba,
- 0x31f0, 0x31ff,
- 0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa4d0, 0xa4fd,
- 0xa500, 0xa60c,
- 0xa610, 0xa61f,
- 0xa62a, 0xa62b,
- 0xa640, 0xa66e,
- 0xa674, 0xa67b,
- 0xa67f, 0xa697,
- 0xa69f, 0xa6ef,
- 0xa717, 0xa71f,
- 0xa722, 0xa788,
- 0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
- 0xa803, 0xa805,
- 0xa807, 0xa80a,
- 0xa80c, 0xa827,
- 0xa840, 0xa873,
- 0xa880, 0xa8c3,
- 0xa8f2, 0xa8f7,
- 0xa8fb, 0xa8fb,
- 0xa90a, 0xa92a,
- 0xa930, 0xa952,
- 0xa960, 0xa97c,
- 0xa980, 0xa9b2,
- 0xa9b4, 0xa9bf,
- 0xa9cf, 0xa9cf,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa60, 0xaa76,
- 0xaa7a, 0xaa7a,
- 0xaa80, 0xaabe,
- 0xaac0, 0xaac0,
- 0xaac2, 0xaac2,
- 0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf5,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabea,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb28,
- 0xfb2a, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbb1,
- 0xfbd3, 0xfd3d,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfb,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xff21, 0xff3a,
- 0xff41, 0xff5a,
- 0xff66, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10140, 0x10174,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x103a0, 0x103c3,
- 0x103c8, 0x103cf,
- 0x103d1, 0x103d5,
- 0x10400, 0x1049d,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10900, 0x10915,
- 0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a60, 0x10a7c,
- 0x10b00, 0x10b35,
- 0x10b40, 0x10b55,
- 0x10b60, 0x10b72,
- 0x10c00, 0x10c48,
- 0x11000, 0x11045,
- 0x11082, 0x110b8,
- 0x110d0, 0x110e8,
- 0x11100, 0x11132,
- 0x11180, 0x111bf,
- 0x111c1, 0x111c4,
- 0x11680, 0x116b5,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f93, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d6c0,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6fa,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d734,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d76e,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d7a8,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7cb,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
-}; /* CR_Alpha */
-
-/* 'Blank': [[:Blank:]] */
-static const OnigCodePoint CR_Blank[] = {
- 9,
- 0x0009, 0x0009,
- 0x0020, 0x0020,
- 0x00a0, 0x00a0,
- 0x1680, 0x1680,
- 0x180e, 0x180e,
- 0x2000, 0x200a,
- 0x202f, 0x202f,
- 0x205f, 0x205f,
- 0x3000, 0x3000,
-}; /* CR_Blank */
-
-/* 'Cntrl': [[:Cntrl:]] */
-static const OnigCodePoint CR_Cntrl[] = {
- 2,
- 0x0000, 0x001f,
- 0x007f, 0x009f,
-}; /* CR_Cntrl */
-
-/* 'Digit': [[:Digit:]] */
-static const OnigCodePoint CR_Digit[] = {
- 42,
- 0x0030, 0x0039,
- 0x0660, 0x0669,
- 0x06f0, 0x06f9,
- 0x07c0, 0x07c9,
- 0x0966, 0x096f,
- 0x09e6, 0x09ef,
- 0x0a66, 0x0a6f,
- 0x0ae6, 0x0aef,
- 0x0b66, 0x0b6f,
- 0x0be6, 0x0bef,
- 0x0c66, 0x0c6f,
- 0x0ce6, 0x0cef,
- 0x0d66, 0x0d6f,
- 0x0e50, 0x0e59,
- 0x0ed0, 0x0ed9,
- 0x0f20, 0x0f29,
- 0x1040, 0x1049,
- 0x1090, 0x1099,
- 0x17e0, 0x17e9,
- 0x1810, 0x1819,
- 0x1946, 0x194f,
- 0x19d0, 0x19d9,
- 0x1a80, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1b50, 0x1b59,
- 0x1bb0, 0x1bb9,
- 0x1c40, 0x1c49,
- 0x1c50, 0x1c59,
- 0xa620, 0xa629,
- 0xa8d0, 0xa8d9,
- 0xa900, 0xa909,
- 0xa9d0, 0xa9d9,
- 0xaa50, 0xaa59,
- 0xabf0, 0xabf9,
- 0xff10, 0xff19,
- 0x104a0, 0x104a9,
- 0x11066, 0x1106f,
- 0x110f0, 0x110f9,
- 0x11136, 0x1113f,
- 0x111d0, 0x111d9,
- 0x116c0, 0x116c9,
- 0x1d7ce, 0x1d7ff,
-}; /* CR_Digit */
-
-/* 'Graph': [[:Graph:]] */
-static const OnigCodePoint CR_Graph[] = {
- 544,
- 0x0021, 0x007e,
- 0x00a1, 0x0377,
- 0x037a, 0x037e,
- 0x0384, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x055f,
- 0x0561, 0x0587,
- 0x0589, 0x058a,
- 0x058f, 0x058f,
- 0x0591, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f4,
- 0x0600, 0x0604,
- 0x0606, 0x061b,
- 0x061e, 0x070d,
- 0x070f, 0x074a,
- 0x074d, 0x07b1,
- 0x07c0, 0x07fa,
- 0x0800, 0x082d,
- 0x0830, 0x083e,
- 0x0840, 0x085b,
- 0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
- 0x0900, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bc, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09e6, 0x09fb,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3c, 0x0a3c,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4d,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a66, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abc, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acd,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3c, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4d,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b66, 0x0b77,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcd,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0be6, 0x0bfa,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4d,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c66, 0x0c6f,
- 0x0c78, 0x0c7f,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbc, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccd,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0ce6, 0x0cef,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d66, 0x0d75,
- 0x0d79, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dca, 0x0dca,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df4,
- 0x0e01, 0x0e3a,
- 0x0e3f, 0x0e5b,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ec8, 0x0ecd,
- 0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x0fbe, 0x0fcc,
- 0x0fce, 0x0fda,
- 0x1000, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135d, 0x137c,
- 0x1380, 0x1399,
- 0x13a0, 0x13f4,
- 0x1400, 0x167f,
- 0x1681, 0x169c,
- 0x16a0, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1714,
- 0x1720, 0x1736,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17dd,
- 0x17e0, 0x17e9,
- 0x17f0, 0x17f9,
- 0x1800, 0x180d,
- 0x1810, 0x1819,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x193b,
- 0x1940, 0x1940,
- 0x1944, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x19d0, 0x19da,
- 0x19de, 0x1a1b,
- 0x1a1e, 0x1a5e,
- 0x1a60, 0x1a7c,
- 0x1a7f, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1aa0, 0x1aad,
- 0x1b00, 0x1b4b,
- 0x1b50, 0x1b7c,
- 0x1b80, 0x1bf3,
- 0x1bfc, 0x1c37,
- 0x1c3b, 0x1c49,
- 0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd0, 0x1cf6,
- 0x1d00, 0x1de6,
- 0x1dfc, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fc4,
- 0x1fc6, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fdd, 0x1fef,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffe,
- 0x200b, 0x2027,
- 0x202a, 0x202e,
- 0x2030, 0x205e,
- 0x2060, 0x2064,
- 0x206a, 0x2071,
- 0x2074, 0x208e,
- 0x2090, 0x209c,
- 0x20a0, 0x20b9,
- 0x20d0, 0x20f0,
- 0x2100, 0x2189,
- 0x2190, 0x23f3,
- 0x2400, 0x2426,
- 0x2440, 0x244a,
- 0x2460, 0x26ff,
- 0x2701, 0x2b4c,
- 0x2b50, 0x2b59,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2cf3,
- 0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d70,
- 0x2d7f, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2e3b,
- 0x2e80, 0x2e99,
- 0x2e9b, 0x2ef3,
- 0x2f00, 0x2fd5,
- 0x2ff0, 0x2ffb,
- 0x3001, 0x303f,
- 0x3041, 0x3096,
- 0x3099, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x3190, 0x31ba,
- 0x31c0, 0x31e3,
- 0x31f0, 0x321e,
- 0x3220, 0x32fe,
- 0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa490, 0xa4c6,
- 0xa4d0, 0xa62b,
- 0xa640, 0xa697,
- 0xa69f, 0xa6f7,
- 0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa82b,
- 0xa830, 0xa839,
- 0xa840, 0xa877,
- 0xa880, 0xa8c4,
- 0xa8ce, 0xa8d9,
- 0xa8e0, 0xa8fb,
- 0xa900, 0xa953,
- 0xa95f, 0xa97c,
- 0xa980, 0xa9cd,
- 0xa9cf, 0xa9d9,
- 0xa9de, 0xa9df,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa50, 0xaa59,
- 0xaa5c, 0xaa7b,
- 0xaa80, 0xaac2,
- 0xaadb, 0xaaf6,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabed,
- 0xabf0, 0xabf9,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xe000, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbc1,
- 0xfbd3, 0xfd3f,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfd,
- 0xfe00, 0xfe19,
- 0xfe20, 0xfe26,
- 0xfe30, 0xfe52,
- 0xfe54, 0xfe66,
- 0xfe68, 0xfe6b,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xfeff, 0xfeff,
- 0xff01, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0xffe0, 0xffe6,
- 0xffe8, 0xffee,
- 0xfff9, 0xfffd,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10100, 0x10102,
- 0x10107, 0x10133,
- 0x10137, 0x1018a,
- 0x10190, 0x1019b,
- 0x101d0, 0x101fd,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10320, 0x10323,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x1039f, 0x103c3,
- 0x103c8, 0x103d5,
- 0x10400, 0x1049d,
- 0x104a0, 0x104a9,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10857, 0x1085f,
- 0x10900, 0x1091b,
- 0x1091f, 0x10939,
- 0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a38, 0x10a3a,
- 0x10a3f, 0x10a47,
- 0x10a50, 0x10a58,
- 0x10a60, 0x10a7f,
- 0x10b00, 0x10b35,
- 0x10b39, 0x10b55,
- 0x10b58, 0x10b72,
- 0x10b78, 0x10b7f,
- 0x10c00, 0x10c48,
- 0x10e60, 0x10e7e,
- 0x11000, 0x1104d,
- 0x11052, 0x1106f,
- 0x11080, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x12470, 0x12473,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d000, 0x1d0f5,
- 0x1d100, 0x1d126,
- 0x1d129, 0x1d1dd,
- 0x1d200, 0x1d245,
- 0x1d300, 0x1d356,
- 0x1d360, 0x1d371,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d7cb,
- 0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
- 0x1f000, 0x1f02b,
- 0x1f030, 0x1f093,
- 0x1f0a0, 0x1f0ae,
- 0x1f0b1, 0x1f0be,
- 0x1f0c1, 0x1f0cf,
- 0x1f0d1, 0x1f0df,
- 0x1f100, 0x1f10a,
- 0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
- 0x1f170, 0x1f19a,
- 0x1f1e6, 0x1f202,
- 0x1f210, 0x1f23a,
- 0x1f240, 0x1f248,
- 0x1f250, 0x1f251,
- 0x1f300, 0x1f320,
- 0x1f330, 0x1f335,
- 0x1f337, 0x1f37c,
- 0x1f380, 0x1f393,
- 0x1f3a0, 0x1f3c4,
- 0x1f3c6, 0x1f3ca,
- 0x1f3e0, 0x1f3f0,
- 0x1f400, 0x1f43e,
- 0x1f440, 0x1f440,
- 0x1f442, 0x1f4f7,
- 0x1f4f9, 0x1f4fc,
- 0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
- 0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
- 0x1f645, 0x1f64f,
- 0x1f680, 0x1f6c5,
- 0x1f700, 0x1f773,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
- 0xe0001, 0xe0001,
- 0xe0020, 0xe007f,
- 0xe0100, 0xe01ef,
- 0xf0000, 0xffffd,
- 0x100000, 0x10fffd,
-}; /* CR_Graph */
-
-/* 'Lower': [[:Lower:]] */
-static const OnigCodePoint CR_Lower[] = {
- 618,
- 0x0061, 0x007a,
- 0x00aa, 0x00aa,
- 0x00b5, 0x00b5,
- 0x00ba, 0x00ba,
- 0x00df, 0x00f6,
- 0x00f8, 0x00ff,
- 0x0101, 0x0101,
- 0x0103, 0x0103,
- 0x0105, 0x0105,
- 0x0107, 0x0107,
- 0x0109, 0x0109,
- 0x010b, 0x010b,
- 0x010d, 0x010d,
- 0x010f, 0x010f,
- 0x0111, 0x0111,
- 0x0113, 0x0113,
- 0x0115, 0x0115,
- 0x0117, 0x0117,
- 0x0119, 0x0119,
- 0x011b, 0x011b,
- 0x011d, 0x011d,
- 0x011f, 0x011f,
- 0x0121, 0x0121,
- 0x0123, 0x0123,
- 0x0125, 0x0125,
- 0x0127, 0x0127,
- 0x0129, 0x0129,
- 0x012b, 0x012b,
- 0x012d, 0x012d,
- 0x012f, 0x012f,
- 0x0131, 0x0131,
- 0x0133, 0x0133,
- 0x0135, 0x0135,
- 0x0137, 0x0138,
- 0x013a, 0x013a,
- 0x013c, 0x013c,
- 0x013e, 0x013e,
- 0x0140, 0x0140,
- 0x0142, 0x0142,
- 0x0144, 0x0144,
- 0x0146, 0x0146,
- 0x0148, 0x0149,
- 0x014b, 0x014b,
- 0x014d, 0x014d,
- 0x014f, 0x014f,
- 0x0151, 0x0151,
- 0x0153, 0x0153,
- 0x0155, 0x0155,
- 0x0157, 0x0157,
- 0x0159, 0x0159,
- 0x015b, 0x015b,
- 0x015d, 0x015d,
- 0x015f, 0x015f,
- 0x0161, 0x0161,
- 0x0163, 0x0163,
- 0x0165, 0x0165,
- 0x0167, 0x0167,
- 0x0169, 0x0169,
- 0x016b, 0x016b,
- 0x016d, 0x016d,
- 0x016f, 0x016f,
- 0x0171, 0x0171,
- 0x0173, 0x0173,
- 0x0175, 0x0175,
- 0x0177, 0x0177,
- 0x017a, 0x017a,
- 0x017c, 0x017c,
- 0x017e, 0x0180,
- 0x0183, 0x0183,
- 0x0185, 0x0185,
- 0x0188, 0x0188,
- 0x018c, 0x018d,
- 0x0192, 0x0192,
- 0x0195, 0x0195,
- 0x0199, 0x019b,
- 0x019e, 0x019e,
- 0x01a1, 0x01a1,
- 0x01a3, 0x01a3,
- 0x01a5, 0x01a5,
- 0x01a8, 0x01a8,
- 0x01aa, 0x01ab,
- 0x01ad, 0x01ad,
- 0x01b0, 0x01b0,
- 0x01b4, 0x01b4,
- 0x01b6, 0x01b6,
- 0x01b9, 0x01ba,
- 0x01bd, 0x01bf,
- 0x01c6, 0x01c6,
- 0x01c9, 0x01c9,
- 0x01cc, 0x01cc,
- 0x01ce, 0x01ce,
- 0x01d0, 0x01d0,
- 0x01d2, 0x01d2,
- 0x01d4, 0x01d4,
- 0x01d6, 0x01d6,
- 0x01d8, 0x01d8,
- 0x01da, 0x01da,
- 0x01dc, 0x01dd,
- 0x01df, 0x01df,
- 0x01e1, 0x01e1,
- 0x01e3, 0x01e3,
- 0x01e5, 0x01e5,
- 0x01e7, 0x01e7,
- 0x01e9, 0x01e9,
- 0x01eb, 0x01eb,
- 0x01ed, 0x01ed,
- 0x01ef, 0x01f0,
- 0x01f3, 0x01f3,
- 0x01f5, 0x01f5,
- 0x01f9, 0x01f9,
- 0x01fb, 0x01fb,
- 0x01fd, 0x01fd,
- 0x01ff, 0x01ff,
- 0x0201, 0x0201,
- 0x0203, 0x0203,
- 0x0205, 0x0205,
- 0x0207, 0x0207,
- 0x0209, 0x0209,
- 0x020b, 0x020b,
- 0x020d, 0x020d,
- 0x020f, 0x020f,
- 0x0211, 0x0211,
- 0x0213, 0x0213,
- 0x0215, 0x0215,
- 0x0217, 0x0217,
- 0x0219, 0x0219,
- 0x021b, 0x021b,
- 0x021d, 0x021d,
- 0x021f, 0x021f,
- 0x0221, 0x0221,
- 0x0223, 0x0223,
- 0x0225, 0x0225,
- 0x0227, 0x0227,
- 0x0229, 0x0229,
- 0x022b, 0x022b,
- 0x022d, 0x022d,
- 0x022f, 0x022f,
- 0x0231, 0x0231,
- 0x0233, 0x0239,
- 0x023c, 0x023c,
- 0x023f, 0x0240,
- 0x0242, 0x0242,
- 0x0247, 0x0247,
- 0x0249, 0x0249,
- 0x024b, 0x024b,
- 0x024d, 0x024d,
- 0x024f, 0x0293,
- 0x0295, 0x02b8,
- 0x02c0, 0x02c1,
- 0x02e0, 0x02e4,
- 0x0345, 0x0345,
- 0x0371, 0x0371,
- 0x0373, 0x0373,
- 0x0377, 0x0377,
- 0x037a, 0x037d,
- 0x0390, 0x0390,
- 0x03ac, 0x03ce,
- 0x03d0, 0x03d1,
- 0x03d5, 0x03d7,
- 0x03d9, 0x03d9,
- 0x03db, 0x03db,
- 0x03dd, 0x03dd,
- 0x03df, 0x03df,
- 0x03e1, 0x03e1,
- 0x03e3, 0x03e3,
- 0x03e5, 0x03e5,
- 0x03e7, 0x03e7,
- 0x03e9, 0x03e9,
- 0x03eb, 0x03eb,
- 0x03ed, 0x03ed,
- 0x03ef, 0x03f3,
- 0x03f5, 0x03f5,
- 0x03f8, 0x03f8,
- 0x03fb, 0x03fc,
- 0x0430, 0x045f,
- 0x0461, 0x0461,
- 0x0463, 0x0463,
- 0x0465, 0x0465,
- 0x0467, 0x0467,
- 0x0469, 0x0469,
- 0x046b, 0x046b,
- 0x046d, 0x046d,
- 0x046f, 0x046f,
- 0x0471, 0x0471,
- 0x0473, 0x0473,
- 0x0475, 0x0475,
- 0x0477, 0x0477,
- 0x0479, 0x0479,
- 0x047b, 0x047b,
- 0x047d, 0x047d,
- 0x047f, 0x047f,
- 0x0481, 0x0481,
- 0x048b, 0x048b,
- 0x048d, 0x048d,
- 0x048f, 0x048f,
- 0x0491, 0x0491,
- 0x0493, 0x0493,
- 0x0495, 0x0495,
- 0x0497, 0x0497,
- 0x0499, 0x0499,
- 0x049b, 0x049b,
- 0x049d, 0x049d,
- 0x049f, 0x049f,
- 0x04a1, 0x04a1,
- 0x04a3, 0x04a3,
- 0x04a5, 0x04a5,
- 0x04a7, 0x04a7,
- 0x04a9, 0x04a9,
- 0x04ab, 0x04ab,
- 0x04ad, 0x04ad,
- 0x04af, 0x04af,
- 0x04b1, 0x04b1,
- 0x04b3, 0x04b3,
- 0x04b5, 0x04b5,
- 0x04b7, 0x04b7,
- 0x04b9, 0x04b9,
- 0x04bb, 0x04bb,
- 0x04bd, 0x04bd,
- 0x04bf, 0x04bf,
- 0x04c2, 0x04c2,
- 0x04c4, 0x04c4,
- 0x04c6, 0x04c6,
- 0x04c8, 0x04c8,
- 0x04ca, 0x04ca,
- 0x04cc, 0x04cc,
- 0x04ce, 0x04cf,
- 0x04d1, 0x04d1,
- 0x04d3, 0x04d3,
- 0x04d5, 0x04d5,
- 0x04d7, 0x04d7,
- 0x04d9, 0x04d9,
- 0x04db, 0x04db,
- 0x04dd, 0x04dd,
- 0x04df, 0x04df,
- 0x04e1, 0x04e1,
- 0x04e3, 0x04e3,
- 0x04e5, 0x04e5,
- 0x04e7, 0x04e7,
- 0x04e9, 0x04e9,
- 0x04eb, 0x04eb,
- 0x04ed, 0x04ed,
- 0x04ef, 0x04ef,
- 0x04f1, 0x04f1,
- 0x04f3, 0x04f3,
- 0x04f5, 0x04f5,
- 0x04f7, 0x04f7,
- 0x04f9, 0x04f9,
- 0x04fb, 0x04fb,
- 0x04fd, 0x04fd,
- 0x04ff, 0x04ff,
- 0x0501, 0x0501,
- 0x0503, 0x0503,
- 0x0505, 0x0505,
- 0x0507, 0x0507,
- 0x0509, 0x0509,
- 0x050b, 0x050b,
- 0x050d, 0x050d,
- 0x050f, 0x050f,
- 0x0511, 0x0511,
- 0x0513, 0x0513,
- 0x0515, 0x0515,
- 0x0517, 0x0517,
- 0x0519, 0x0519,
- 0x051b, 0x051b,
- 0x051d, 0x051d,
- 0x051f, 0x051f,
- 0x0521, 0x0521,
- 0x0523, 0x0523,
- 0x0525, 0x0525,
- 0x0527, 0x0527,
- 0x0561, 0x0587,
- 0x1d00, 0x1dbf,
- 0x1e01, 0x1e01,
- 0x1e03, 0x1e03,
- 0x1e05, 0x1e05,
- 0x1e07, 0x1e07,
- 0x1e09, 0x1e09,
- 0x1e0b, 0x1e0b,
- 0x1e0d, 0x1e0d,
- 0x1e0f, 0x1e0f,
- 0x1e11, 0x1e11,
- 0x1e13, 0x1e13,
- 0x1e15, 0x1e15,
- 0x1e17, 0x1e17,
- 0x1e19, 0x1e19,
- 0x1e1b, 0x1e1b,
- 0x1e1d, 0x1e1d,
- 0x1e1f, 0x1e1f,
- 0x1e21, 0x1e21,
- 0x1e23, 0x1e23,
- 0x1e25, 0x1e25,
- 0x1e27, 0x1e27,
- 0x1e29, 0x1e29,
- 0x1e2b, 0x1e2b,
- 0x1e2d, 0x1e2d,
- 0x1e2f, 0x1e2f,
- 0x1e31, 0x1e31,
- 0x1e33, 0x1e33,
- 0x1e35, 0x1e35,
- 0x1e37, 0x1e37,
- 0x1e39, 0x1e39,
- 0x1e3b, 0x1e3b,
- 0x1e3d, 0x1e3d,
- 0x1e3f, 0x1e3f,
- 0x1e41, 0x1e41,
- 0x1e43, 0x1e43,
- 0x1e45, 0x1e45,
- 0x1e47, 0x1e47,
- 0x1e49, 0x1e49,
- 0x1e4b, 0x1e4b,
- 0x1e4d, 0x1e4d,
- 0x1e4f, 0x1e4f,
- 0x1e51, 0x1e51,
- 0x1e53, 0x1e53,
- 0x1e55, 0x1e55,
- 0x1e57, 0x1e57,
- 0x1e59, 0x1e59,
- 0x1e5b, 0x1e5b,
- 0x1e5d, 0x1e5d,
- 0x1e5f, 0x1e5f,
- 0x1e61, 0x1e61,
- 0x1e63, 0x1e63,
- 0x1e65, 0x1e65,
- 0x1e67, 0x1e67,
- 0x1e69, 0x1e69,
- 0x1e6b, 0x1e6b,
- 0x1e6d, 0x1e6d,
- 0x1e6f, 0x1e6f,
- 0x1e71, 0x1e71,
- 0x1e73, 0x1e73,
- 0x1e75, 0x1e75,
- 0x1e77, 0x1e77,
- 0x1e79, 0x1e79,
- 0x1e7b, 0x1e7b,
- 0x1e7d, 0x1e7d,
- 0x1e7f, 0x1e7f,
- 0x1e81, 0x1e81,
- 0x1e83, 0x1e83,
- 0x1e85, 0x1e85,
- 0x1e87, 0x1e87,
- 0x1e89, 0x1e89,
- 0x1e8b, 0x1e8b,
- 0x1e8d, 0x1e8d,
- 0x1e8f, 0x1e8f,
- 0x1e91, 0x1e91,
- 0x1e93, 0x1e93,
- 0x1e95, 0x1e9d,
- 0x1e9f, 0x1e9f,
- 0x1ea1, 0x1ea1,
- 0x1ea3, 0x1ea3,
- 0x1ea5, 0x1ea5,
- 0x1ea7, 0x1ea7,
- 0x1ea9, 0x1ea9,
- 0x1eab, 0x1eab,
- 0x1ead, 0x1ead,
- 0x1eaf, 0x1eaf,
- 0x1eb1, 0x1eb1,
- 0x1eb3, 0x1eb3,
- 0x1eb5, 0x1eb5,
- 0x1eb7, 0x1eb7,
- 0x1eb9, 0x1eb9,
- 0x1ebb, 0x1ebb,
- 0x1ebd, 0x1ebd,
- 0x1ebf, 0x1ebf,
- 0x1ec1, 0x1ec1,
- 0x1ec3, 0x1ec3,
- 0x1ec5, 0x1ec5,
- 0x1ec7, 0x1ec7,
- 0x1ec9, 0x1ec9,
- 0x1ecb, 0x1ecb,
- 0x1ecd, 0x1ecd,
- 0x1ecf, 0x1ecf,
- 0x1ed1, 0x1ed1,
- 0x1ed3, 0x1ed3,
- 0x1ed5, 0x1ed5,
- 0x1ed7, 0x1ed7,
- 0x1ed9, 0x1ed9,
- 0x1edb, 0x1edb,
- 0x1edd, 0x1edd,
- 0x1edf, 0x1edf,
- 0x1ee1, 0x1ee1,
- 0x1ee3, 0x1ee3,
- 0x1ee5, 0x1ee5,
- 0x1ee7, 0x1ee7,
- 0x1ee9, 0x1ee9,
- 0x1eeb, 0x1eeb,
- 0x1eed, 0x1eed,
- 0x1eef, 0x1eef,
- 0x1ef1, 0x1ef1,
- 0x1ef3, 0x1ef3,
- 0x1ef5, 0x1ef5,
- 0x1ef7, 0x1ef7,
- 0x1ef9, 0x1ef9,
- 0x1efb, 0x1efb,
- 0x1efd, 0x1efd,
- 0x1eff, 0x1f07,
- 0x1f10, 0x1f15,
- 0x1f20, 0x1f27,
- 0x1f30, 0x1f37,
- 0x1f40, 0x1f45,
- 0x1f50, 0x1f57,
- 0x1f60, 0x1f67,
- 0x1f70, 0x1f7d,
- 0x1f80, 0x1f87,
- 0x1f90, 0x1f97,
- 0x1fa0, 0x1fa7,
- 0x1fb0, 0x1fb4,
- 0x1fb6, 0x1fb7,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fc7,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fd7,
- 0x1fe0, 0x1fe7,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ff7,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
- 0x210a, 0x210a,
- 0x210e, 0x210f,
- 0x2113, 0x2113,
- 0x212f, 0x212f,
- 0x2134, 0x2134,
- 0x2139, 0x2139,
- 0x213c, 0x213d,
- 0x2146, 0x2149,
- 0x214e, 0x214e,
- 0x2170, 0x217f,
- 0x2184, 0x2184,
- 0x24d0, 0x24e9,
- 0x2c30, 0x2c5e,
- 0x2c61, 0x2c61,
- 0x2c65, 0x2c66,
- 0x2c68, 0x2c68,
- 0x2c6a, 0x2c6a,
- 0x2c6c, 0x2c6c,
- 0x2c71, 0x2c71,
- 0x2c73, 0x2c74,
- 0x2c76, 0x2c7d,
- 0x2c81, 0x2c81,
- 0x2c83, 0x2c83,
- 0x2c85, 0x2c85,
- 0x2c87, 0x2c87,
- 0x2c89, 0x2c89,
- 0x2c8b, 0x2c8b,
- 0x2c8d, 0x2c8d,
- 0x2c8f, 0x2c8f,
- 0x2c91, 0x2c91,
- 0x2c93, 0x2c93,
- 0x2c95, 0x2c95,
- 0x2c97, 0x2c97,
- 0x2c99, 0x2c99,
- 0x2c9b, 0x2c9b,
- 0x2c9d, 0x2c9d,
- 0x2c9f, 0x2c9f,
- 0x2ca1, 0x2ca1,
- 0x2ca3, 0x2ca3,
- 0x2ca5, 0x2ca5,
- 0x2ca7, 0x2ca7,
- 0x2ca9, 0x2ca9,
- 0x2cab, 0x2cab,
- 0x2cad, 0x2cad,
- 0x2caf, 0x2caf,
- 0x2cb1, 0x2cb1,
- 0x2cb3, 0x2cb3,
- 0x2cb5, 0x2cb5,
- 0x2cb7, 0x2cb7,
- 0x2cb9, 0x2cb9,
- 0x2cbb, 0x2cbb,
- 0x2cbd, 0x2cbd,
- 0x2cbf, 0x2cbf,
- 0x2cc1, 0x2cc1,
- 0x2cc3, 0x2cc3,
- 0x2cc5, 0x2cc5,
- 0x2cc7, 0x2cc7,
- 0x2cc9, 0x2cc9,
- 0x2ccb, 0x2ccb,
- 0x2ccd, 0x2ccd,
- 0x2ccf, 0x2ccf,
- 0x2cd1, 0x2cd1,
- 0x2cd3, 0x2cd3,
- 0x2cd5, 0x2cd5,
- 0x2cd7, 0x2cd7,
- 0x2cd9, 0x2cd9,
- 0x2cdb, 0x2cdb,
- 0x2cdd, 0x2cdd,
- 0x2cdf, 0x2cdf,
- 0x2ce1, 0x2ce1,
- 0x2ce3, 0x2ce4,
- 0x2cec, 0x2cec,
- 0x2cee, 0x2cee,
- 0x2cf3, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0xa641, 0xa641,
- 0xa643, 0xa643,
- 0xa645, 0xa645,
- 0xa647, 0xa647,
- 0xa649, 0xa649,
- 0xa64b, 0xa64b,
- 0xa64d, 0xa64d,
- 0xa64f, 0xa64f,
- 0xa651, 0xa651,
- 0xa653, 0xa653,
- 0xa655, 0xa655,
- 0xa657, 0xa657,
- 0xa659, 0xa659,
- 0xa65b, 0xa65b,
- 0xa65d, 0xa65d,
- 0xa65f, 0xa65f,
- 0xa661, 0xa661,
- 0xa663, 0xa663,
- 0xa665, 0xa665,
- 0xa667, 0xa667,
- 0xa669, 0xa669,
- 0xa66b, 0xa66b,
- 0xa66d, 0xa66d,
- 0xa681, 0xa681,
- 0xa683, 0xa683,
- 0xa685, 0xa685,
- 0xa687, 0xa687,
- 0xa689, 0xa689,
- 0xa68b, 0xa68b,
- 0xa68d, 0xa68d,
- 0xa68f, 0xa68f,
- 0xa691, 0xa691,
- 0xa693, 0xa693,
- 0xa695, 0xa695,
- 0xa697, 0xa697,
- 0xa723, 0xa723,
- 0xa725, 0xa725,
- 0xa727, 0xa727,
- 0xa729, 0xa729,
- 0xa72b, 0xa72b,
- 0xa72d, 0xa72d,
- 0xa72f, 0xa731,
- 0xa733, 0xa733,
- 0xa735, 0xa735,
- 0xa737, 0xa737,
- 0xa739, 0xa739,
- 0xa73b, 0xa73b,
- 0xa73d, 0xa73d,
- 0xa73f, 0xa73f,
- 0xa741, 0xa741,
- 0xa743, 0xa743,
- 0xa745, 0xa745,
- 0xa747, 0xa747,
- 0xa749, 0xa749,
- 0xa74b, 0xa74b,
- 0xa74d, 0xa74d,
- 0xa74f, 0xa74f,
- 0xa751, 0xa751,
- 0xa753, 0xa753,
- 0xa755, 0xa755,
- 0xa757, 0xa757,
- 0xa759, 0xa759,
- 0xa75b, 0xa75b,
- 0xa75d, 0xa75d,
- 0xa75f, 0xa75f,
- 0xa761, 0xa761,
- 0xa763, 0xa763,
- 0xa765, 0xa765,
- 0xa767, 0xa767,
- 0xa769, 0xa769,
- 0xa76b, 0xa76b,
- 0xa76d, 0xa76d,
- 0xa76f, 0xa778,
- 0xa77a, 0xa77a,
- 0xa77c, 0xa77c,
- 0xa77f, 0xa77f,
- 0xa781, 0xa781,
- 0xa783, 0xa783,
- 0xa785, 0xa785,
- 0xa787, 0xa787,
- 0xa78c, 0xa78c,
- 0xa78e, 0xa78e,
- 0xa791, 0xa791,
- 0xa793, 0xa793,
- 0xa7a1, 0xa7a1,
- 0xa7a3, 0xa7a3,
- 0xa7a5, 0xa7a5,
- 0xa7a7, 0xa7a7,
- 0xa7a9, 0xa7a9,
- 0xa7f8, 0xa7fa,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xff41, 0xff5a,
- 0x10428, 0x1044f,
- 0x1d41a, 0x1d433,
- 0x1d44e, 0x1d454,
- 0x1d456, 0x1d467,
- 0x1d482, 0x1d49b,
- 0x1d4b6, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d4cf,
- 0x1d4ea, 0x1d503,
- 0x1d51e, 0x1d537,
- 0x1d552, 0x1d56b,
- 0x1d586, 0x1d59f,
- 0x1d5ba, 0x1d5d3,
- 0x1d5ee, 0x1d607,
- 0x1d622, 0x1d63b,
- 0x1d656, 0x1d66f,
- 0x1d68a, 0x1d6a5,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6e1,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d71b,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d755,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d78f,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7c9,
- 0x1d7cb, 0x1d7cb,
-}; /* CR_Lower */
-
-/* 'Print': [[:Print:]] */
-static const OnigCodePoint CR_Print[] = {
- 541,
- 0x0020, 0x007e,
- 0x00a0, 0x0377,
- 0x037a, 0x037e,
- 0x0384, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x055f,
- 0x0561, 0x0587,
- 0x0589, 0x058a,
- 0x058f, 0x058f,
- 0x0591, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f4,
- 0x0600, 0x0604,
- 0x0606, 0x061b,
- 0x061e, 0x070d,
- 0x070f, 0x074a,
- 0x074d, 0x07b1,
- 0x07c0, 0x07fa,
- 0x0800, 0x082d,
- 0x0830, 0x083e,
- 0x0840, 0x085b,
- 0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
- 0x0900, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bc, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09e6, 0x09fb,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3c, 0x0a3c,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4d,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a66, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abc, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acd,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3c, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4d,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b66, 0x0b77,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcd,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0be6, 0x0bfa,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4d,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c66, 0x0c6f,
- 0x0c78, 0x0c7f,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbc, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccd,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0ce6, 0x0cef,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d66, 0x0d75,
- 0x0d79, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dca, 0x0dca,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df4,
- 0x0e01, 0x0e3a,
- 0x0e3f, 0x0e5b,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ec8, 0x0ecd,
- 0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x0fbe, 0x0fcc,
- 0x0fce, 0x0fda,
- 0x1000, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135d, 0x137c,
- 0x1380, 0x1399,
- 0x13a0, 0x13f4,
- 0x1400, 0x169c,
- 0x16a0, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1714,
- 0x1720, 0x1736,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17dd,
- 0x17e0, 0x17e9,
- 0x17f0, 0x17f9,
- 0x1800, 0x180e,
- 0x1810, 0x1819,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x193b,
- 0x1940, 0x1940,
- 0x1944, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x19d0, 0x19da,
- 0x19de, 0x1a1b,
- 0x1a1e, 0x1a5e,
- 0x1a60, 0x1a7c,
- 0x1a7f, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1aa0, 0x1aad,
- 0x1b00, 0x1b4b,
- 0x1b50, 0x1b7c,
- 0x1b80, 0x1bf3,
- 0x1bfc, 0x1c37,
- 0x1c3b, 0x1c49,
- 0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd0, 0x1cf6,
- 0x1d00, 0x1de6,
- 0x1dfc, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fc4,
- 0x1fc6, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fdd, 0x1fef,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffe,
- 0x2000, 0x2027,
- 0x202a, 0x2064,
- 0x206a, 0x2071,
- 0x2074, 0x208e,
- 0x2090, 0x209c,
- 0x20a0, 0x20b9,
- 0x20d0, 0x20f0,
- 0x2100, 0x2189,
- 0x2190, 0x23f3,
- 0x2400, 0x2426,
- 0x2440, 0x244a,
- 0x2460, 0x26ff,
- 0x2701, 0x2b4c,
- 0x2b50, 0x2b59,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2cf3,
- 0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d70,
- 0x2d7f, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2e3b,
- 0x2e80, 0x2e99,
- 0x2e9b, 0x2ef3,
- 0x2f00, 0x2fd5,
- 0x2ff0, 0x2ffb,
- 0x3000, 0x303f,
- 0x3041, 0x3096,
- 0x3099, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x3190, 0x31ba,
- 0x31c0, 0x31e3,
- 0x31f0, 0x321e,
- 0x3220, 0x32fe,
- 0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa490, 0xa4c6,
- 0xa4d0, 0xa62b,
- 0xa640, 0xa697,
- 0xa69f, 0xa6f7,
- 0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa82b,
- 0xa830, 0xa839,
- 0xa840, 0xa877,
- 0xa880, 0xa8c4,
- 0xa8ce, 0xa8d9,
- 0xa8e0, 0xa8fb,
- 0xa900, 0xa953,
- 0xa95f, 0xa97c,
- 0xa980, 0xa9cd,
- 0xa9cf, 0xa9d9,
- 0xa9de, 0xa9df,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa50, 0xaa59,
- 0xaa5c, 0xaa7b,
- 0xaa80, 0xaac2,
- 0xaadb, 0xaaf6,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabed,
- 0xabf0, 0xabf9,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xe000, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbc1,
- 0xfbd3, 0xfd3f,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfd,
- 0xfe00, 0xfe19,
- 0xfe20, 0xfe26,
- 0xfe30, 0xfe52,
- 0xfe54, 0xfe66,
- 0xfe68, 0xfe6b,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xfeff, 0xfeff,
- 0xff01, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0xffe0, 0xffe6,
- 0xffe8, 0xffee,
- 0xfff9, 0xfffd,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10100, 0x10102,
- 0x10107, 0x10133,
- 0x10137, 0x1018a,
- 0x10190, 0x1019b,
- 0x101d0, 0x101fd,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10320, 0x10323,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x1039f, 0x103c3,
- 0x103c8, 0x103d5,
- 0x10400, 0x1049d,
- 0x104a0, 0x104a9,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10857, 0x1085f,
- 0x10900, 0x1091b,
- 0x1091f, 0x10939,
- 0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a38, 0x10a3a,
- 0x10a3f, 0x10a47,
- 0x10a50, 0x10a58,
- 0x10a60, 0x10a7f,
- 0x10b00, 0x10b35,
- 0x10b39, 0x10b55,
- 0x10b58, 0x10b72,
- 0x10b78, 0x10b7f,
- 0x10c00, 0x10c48,
- 0x10e60, 0x10e7e,
- 0x11000, 0x1104d,
- 0x11052, 0x1106f,
- 0x11080, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x12470, 0x12473,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d000, 0x1d0f5,
- 0x1d100, 0x1d126,
- 0x1d129, 0x1d1dd,
- 0x1d200, 0x1d245,
- 0x1d300, 0x1d356,
- 0x1d360, 0x1d371,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d7cb,
- 0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
- 0x1f000, 0x1f02b,
- 0x1f030, 0x1f093,
- 0x1f0a0, 0x1f0ae,
- 0x1f0b1, 0x1f0be,
- 0x1f0c1, 0x1f0cf,
- 0x1f0d1, 0x1f0df,
- 0x1f100, 0x1f10a,
- 0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
- 0x1f170, 0x1f19a,
- 0x1f1e6, 0x1f202,
- 0x1f210, 0x1f23a,
- 0x1f240, 0x1f248,
- 0x1f250, 0x1f251,
- 0x1f300, 0x1f320,
- 0x1f330, 0x1f335,
- 0x1f337, 0x1f37c,
- 0x1f380, 0x1f393,
- 0x1f3a0, 0x1f3c4,
- 0x1f3c6, 0x1f3ca,
- 0x1f3e0, 0x1f3f0,
- 0x1f400, 0x1f43e,
- 0x1f440, 0x1f440,
- 0x1f442, 0x1f4f7,
- 0x1f4f9, 0x1f4fc,
- 0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
- 0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
- 0x1f645, 0x1f64f,
- 0x1f680, 0x1f6c5,
- 0x1f700, 0x1f773,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
- 0xe0001, 0xe0001,
- 0xe0020, 0xe007f,
- 0xe0100, 0xe01ef,
- 0xf0000, 0xffffd,
- 0x100000, 0x10fffd,
-}; /* CR_Print */
-
-/* 'Punct': [[:Punct:]] */
-static const OnigCodePoint CR_Punct[] = {
- 140,
- 0x0021, 0x0023,
- 0x0025, 0x002a,
- 0x002c, 0x002f,
- 0x003a, 0x003b,
- 0x003f, 0x0040,
- 0x005b, 0x005d,
- 0x005f, 0x005f,
- 0x007b, 0x007b,
- 0x007d, 0x007d,
- 0x00a1, 0x00a1,
- 0x00a7, 0x00a7,
- 0x00ab, 0x00ab,
- 0x00b6, 0x00b7,
- 0x00bb, 0x00bb,
- 0x00bf, 0x00bf,
- 0x037e, 0x037e,
- 0x0387, 0x0387,
- 0x055a, 0x055f,
- 0x0589, 0x058a,
- 0x05be, 0x05be,
- 0x05c0, 0x05c0,
- 0x05c3, 0x05c3,
- 0x05c6, 0x05c6,
- 0x05f3, 0x05f4,
- 0x0609, 0x060a,
- 0x060c, 0x060d,
- 0x061b, 0x061b,
- 0x061e, 0x061f,
- 0x066a, 0x066d,
- 0x06d4, 0x06d4,
- 0x0700, 0x070d,
- 0x07f7, 0x07f9,
- 0x0830, 0x083e,
- 0x085e, 0x085e,
- 0x0964, 0x0965,
- 0x0970, 0x0970,
- 0x0af0, 0x0af0,
- 0x0df4, 0x0df4,
- 0x0e4f, 0x0e4f,
- 0x0e5a, 0x0e5b,
- 0x0f04, 0x0f12,
- 0x0f14, 0x0f14,
- 0x0f3a, 0x0f3d,
- 0x0f85, 0x0f85,
- 0x0fd0, 0x0fd4,
- 0x0fd9, 0x0fda,
- 0x104a, 0x104f,
- 0x10fb, 0x10fb,
- 0x1360, 0x1368,
- 0x1400, 0x1400,
- 0x166d, 0x166e,
- 0x169b, 0x169c,
- 0x16eb, 0x16ed,
- 0x1735, 0x1736,
- 0x17d4, 0x17d6,
- 0x17d8, 0x17da,
- 0x1800, 0x180a,
- 0x1944, 0x1945,
- 0x1a1e, 0x1a1f,
- 0x1aa0, 0x1aa6,
- 0x1aa8, 0x1aad,
- 0x1b5a, 0x1b60,
- 0x1bfc, 0x1bff,
- 0x1c3b, 0x1c3f,
- 0x1c7e, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd3, 0x1cd3,
- 0x2010, 0x2027,
- 0x2030, 0x2043,
- 0x2045, 0x2051,
- 0x2053, 0x205e,
- 0x207d, 0x207e,
- 0x208d, 0x208e,
- 0x2329, 0x232a,
- 0x2768, 0x2775,
- 0x27c5, 0x27c6,
- 0x27e6, 0x27ef,
- 0x2983, 0x2998,
- 0x29d8, 0x29db,
- 0x29fc, 0x29fd,
- 0x2cf9, 0x2cfc,
- 0x2cfe, 0x2cff,
- 0x2d70, 0x2d70,
- 0x2e00, 0x2e2e,
- 0x2e30, 0x2e3b,
- 0x3001, 0x3003,
- 0x3008, 0x3011,
- 0x3014, 0x301f,
- 0x3030, 0x3030,
- 0x303d, 0x303d,
- 0x30a0, 0x30a0,
- 0x30fb, 0x30fb,
- 0xa4fe, 0xa4ff,
- 0xa60d, 0xa60f,
- 0xa673, 0xa673,
- 0xa67e, 0xa67e,
- 0xa6f2, 0xa6f7,
- 0xa874, 0xa877,
- 0xa8ce, 0xa8cf,
- 0xa8f8, 0xa8fa,
- 0xa92e, 0xa92f,
- 0xa95f, 0xa95f,
- 0xa9c1, 0xa9cd,
- 0xa9de, 0xa9df,
- 0xaa5c, 0xaa5f,
- 0xaade, 0xaadf,
- 0xaaf0, 0xaaf1,
- 0xabeb, 0xabeb,
- 0xfd3e, 0xfd3f,
- 0xfe10, 0xfe19,
- 0xfe30, 0xfe52,
- 0xfe54, 0xfe61,
- 0xfe63, 0xfe63,
- 0xfe68, 0xfe68,
- 0xfe6a, 0xfe6b,
- 0xff01, 0xff03,
- 0xff05, 0xff0a,
- 0xff0c, 0xff0f,
- 0xff1a, 0xff1b,
- 0xff1f, 0xff20,
- 0xff3b, 0xff3d,
- 0xff3f, 0xff3f,
- 0xff5b, 0xff5b,
- 0xff5d, 0xff5d,
- 0xff5f, 0xff65,
- 0x10100, 0x10102,
- 0x1039f, 0x1039f,
- 0x103d0, 0x103d0,
- 0x10857, 0x10857,
- 0x1091f, 0x1091f,
- 0x1093f, 0x1093f,
- 0x10a50, 0x10a58,
- 0x10a7f, 0x10a7f,
- 0x10b39, 0x10b3f,
- 0x11047, 0x1104d,
- 0x110bb, 0x110bc,
- 0x110be, 0x110c1,
- 0x11140, 0x11143,
- 0x111c5, 0x111c8,
- 0x12470, 0x12473,
-}; /* CR_Punct */
-
-/* 'Space': [[:Space:]] */
-static const OnigCodePoint CR_Space[] = {
- 11,
- 0x0009, 0x000d,
- 0x0020, 0x0020,
- 0x0085, 0x0085,
- 0x00a0, 0x00a0,
- 0x1680, 0x1680,
- 0x180e, 0x180e,
- 0x2000, 0x200a,
- 0x2028, 0x2029,
- 0x202f, 0x202f,
- 0x205f, 0x205f,
- 0x3000, 0x3000,
-}; /* CR_Space */
-
-/* 'Upper': [[:Upper:]] */
-static const OnigCodePoint CR_Upper[] = {
- 610,
- 0x0041, 0x005a,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00de,
- 0x0100, 0x0100,
- 0x0102, 0x0102,
- 0x0104, 0x0104,
- 0x0106, 0x0106,
- 0x0108, 0x0108,
- 0x010a, 0x010a,
- 0x010c, 0x010c,
- 0x010e, 0x010e,
- 0x0110, 0x0110,
- 0x0112, 0x0112,
- 0x0114, 0x0114,
- 0x0116, 0x0116,
- 0x0118, 0x0118,
- 0x011a, 0x011a,
- 0x011c, 0x011c,
- 0x011e, 0x011e,
- 0x0120, 0x0120,
- 0x0122, 0x0122,
- 0x0124, 0x0124,
- 0x0126, 0x0126,
- 0x0128, 0x0128,
- 0x012a, 0x012a,
- 0x012c, 0x012c,
- 0x012e, 0x012e,
- 0x0130, 0x0130,
- 0x0132, 0x0132,
- 0x0134, 0x0134,
- 0x0136, 0x0136,
- 0x0139, 0x0139,
- 0x013b, 0x013b,
- 0x013d, 0x013d,
- 0x013f, 0x013f,
- 0x0141, 0x0141,
- 0x0143, 0x0143,
- 0x0145, 0x0145,
- 0x0147, 0x0147,
- 0x014a, 0x014a,
- 0x014c, 0x014c,
- 0x014e, 0x014e,
- 0x0150, 0x0150,
- 0x0152, 0x0152,
- 0x0154, 0x0154,
- 0x0156, 0x0156,
- 0x0158, 0x0158,
- 0x015a, 0x015a,
- 0x015c, 0x015c,
- 0x015e, 0x015e,
- 0x0160, 0x0160,
- 0x0162, 0x0162,
- 0x0164, 0x0164,
- 0x0166, 0x0166,
- 0x0168, 0x0168,
- 0x016a, 0x016a,
- 0x016c, 0x016c,
- 0x016e, 0x016e,
- 0x0170, 0x0170,
- 0x0172, 0x0172,
- 0x0174, 0x0174,
- 0x0176, 0x0176,
- 0x0178, 0x0179,
- 0x017b, 0x017b,
- 0x017d, 0x017d,
- 0x0181, 0x0182,
- 0x0184, 0x0184,
- 0x0186, 0x0187,
- 0x0189, 0x018b,
- 0x018e, 0x0191,
- 0x0193, 0x0194,
- 0x0196, 0x0198,
- 0x019c, 0x019d,
- 0x019f, 0x01a0,
- 0x01a2, 0x01a2,
- 0x01a4, 0x01a4,
- 0x01a6, 0x01a7,
- 0x01a9, 0x01a9,
- 0x01ac, 0x01ac,
- 0x01ae, 0x01af,
- 0x01b1, 0x01b3,
- 0x01b5, 0x01b5,
- 0x01b7, 0x01b8,
- 0x01bc, 0x01bc,
- 0x01c4, 0x01c4,
- 0x01c7, 0x01c7,
- 0x01ca, 0x01ca,
- 0x01cd, 0x01cd,
- 0x01cf, 0x01cf,
- 0x01d1, 0x01d1,
- 0x01d3, 0x01d3,
- 0x01d5, 0x01d5,
- 0x01d7, 0x01d7,
- 0x01d9, 0x01d9,
- 0x01db, 0x01db,
- 0x01de, 0x01de,
- 0x01e0, 0x01e0,
- 0x01e2, 0x01e2,
- 0x01e4, 0x01e4,
- 0x01e6, 0x01e6,
- 0x01e8, 0x01e8,
- 0x01ea, 0x01ea,
- 0x01ec, 0x01ec,
- 0x01ee, 0x01ee,
- 0x01f1, 0x01f1,
- 0x01f4, 0x01f4,
- 0x01f6, 0x01f8,
- 0x01fa, 0x01fa,
- 0x01fc, 0x01fc,
- 0x01fe, 0x01fe,
- 0x0200, 0x0200,
- 0x0202, 0x0202,
- 0x0204, 0x0204,
- 0x0206, 0x0206,
- 0x0208, 0x0208,
- 0x020a, 0x020a,
- 0x020c, 0x020c,
- 0x020e, 0x020e,
- 0x0210, 0x0210,
- 0x0212, 0x0212,
- 0x0214, 0x0214,
- 0x0216, 0x0216,
- 0x0218, 0x0218,
- 0x021a, 0x021a,
- 0x021c, 0x021c,
- 0x021e, 0x021e,
- 0x0220, 0x0220,
- 0x0222, 0x0222,
- 0x0224, 0x0224,
- 0x0226, 0x0226,
- 0x0228, 0x0228,
- 0x022a, 0x022a,
- 0x022c, 0x022c,
- 0x022e, 0x022e,
- 0x0230, 0x0230,
- 0x0232, 0x0232,
- 0x023a, 0x023b,
- 0x023d, 0x023e,
- 0x0241, 0x0241,
- 0x0243, 0x0246,
- 0x0248, 0x0248,
- 0x024a, 0x024a,
- 0x024c, 0x024c,
- 0x024e, 0x024e,
- 0x0370, 0x0370,
- 0x0372, 0x0372,
- 0x0376, 0x0376,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x038f,
- 0x0391, 0x03a1,
- 0x03a3, 0x03ab,
- 0x03cf, 0x03cf,
- 0x03d2, 0x03d4,
- 0x03d8, 0x03d8,
- 0x03da, 0x03da,
- 0x03dc, 0x03dc,
- 0x03de, 0x03de,
- 0x03e0, 0x03e0,
- 0x03e2, 0x03e2,
- 0x03e4, 0x03e4,
- 0x03e6, 0x03e6,
- 0x03e8, 0x03e8,
- 0x03ea, 0x03ea,
- 0x03ec, 0x03ec,
- 0x03ee, 0x03ee,
- 0x03f4, 0x03f4,
- 0x03f7, 0x03f7,
- 0x03f9, 0x03fa,
- 0x03fd, 0x042f,
- 0x0460, 0x0460,
- 0x0462, 0x0462,
- 0x0464, 0x0464,
- 0x0466, 0x0466,
- 0x0468, 0x0468,
- 0x046a, 0x046a,
- 0x046c, 0x046c,
- 0x046e, 0x046e,
- 0x0470, 0x0470,
- 0x0472, 0x0472,
- 0x0474, 0x0474,
- 0x0476, 0x0476,
- 0x0478, 0x0478,
- 0x047a, 0x047a,
- 0x047c, 0x047c,
- 0x047e, 0x047e,
- 0x0480, 0x0480,
- 0x048a, 0x048a,
- 0x048c, 0x048c,
- 0x048e, 0x048e,
- 0x0490, 0x0490,
- 0x0492, 0x0492,
- 0x0494, 0x0494,
- 0x0496, 0x0496,
- 0x0498, 0x0498,
- 0x049a, 0x049a,
- 0x049c, 0x049c,
- 0x049e, 0x049e,
- 0x04a0, 0x04a0,
- 0x04a2, 0x04a2,
- 0x04a4, 0x04a4,
- 0x04a6, 0x04a6,
- 0x04a8, 0x04a8,
- 0x04aa, 0x04aa,
- 0x04ac, 0x04ac,
- 0x04ae, 0x04ae,
- 0x04b0, 0x04b0,
- 0x04b2, 0x04b2,
- 0x04b4, 0x04b4,
- 0x04b6, 0x04b6,
- 0x04b8, 0x04b8,
- 0x04ba, 0x04ba,
- 0x04bc, 0x04bc,
- 0x04be, 0x04be,
- 0x04c0, 0x04c1,
- 0x04c3, 0x04c3,
- 0x04c5, 0x04c5,
- 0x04c7, 0x04c7,
- 0x04c9, 0x04c9,
- 0x04cb, 0x04cb,
- 0x04cd, 0x04cd,
- 0x04d0, 0x04d0,
- 0x04d2, 0x04d2,
- 0x04d4, 0x04d4,
- 0x04d6, 0x04d6,
- 0x04d8, 0x04d8,
- 0x04da, 0x04da,
- 0x04dc, 0x04dc,
- 0x04de, 0x04de,
- 0x04e0, 0x04e0,
- 0x04e2, 0x04e2,
- 0x04e4, 0x04e4,
- 0x04e6, 0x04e6,
- 0x04e8, 0x04e8,
- 0x04ea, 0x04ea,
- 0x04ec, 0x04ec,
- 0x04ee, 0x04ee,
- 0x04f0, 0x04f0,
- 0x04f2, 0x04f2,
- 0x04f4, 0x04f4,
- 0x04f6, 0x04f6,
- 0x04f8, 0x04f8,
- 0x04fa, 0x04fa,
- 0x04fc, 0x04fc,
- 0x04fe, 0x04fe,
- 0x0500, 0x0500,
- 0x0502, 0x0502,
- 0x0504, 0x0504,
- 0x0506, 0x0506,
- 0x0508, 0x0508,
- 0x050a, 0x050a,
- 0x050c, 0x050c,
- 0x050e, 0x050e,
- 0x0510, 0x0510,
- 0x0512, 0x0512,
- 0x0514, 0x0514,
- 0x0516, 0x0516,
- 0x0518, 0x0518,
- 0x051a, 0x051a,
- 0x051c, 0x051c,
- 0x051e, 0x051e,
- 0x0520, 0x0520,
- 0x0522, 0x0522,
- 0x0524, 0x0524,
- 0x0526, 0x0526,
- 0x0531, 0x0556,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x1e00, 0x1e00,
- 0x1e02, 0x1e02,
- 0x1e04, 0x1e04,
- 0x1e06, 0x1e06,
- 0x1e08, 0x1e08,
- 0x1e0a, 0x1e0a,
- 0x1e0c, 0x1e0c,
- 0x1e0e, 0x1e0e,
- 0x1e10, 0x1e10,
- 0x1e12, 0x1e12,
- 0x1e14, 0x1e14,
- 0x1e16, 0x1e16,
- 0x1e18, 0x1e18,
- 0x1e1a, 0x1e1a,
- 0x1e1c, 0x1e1c,
- 0x1e1e, 0x1e1e,
- 0x1e20, 0x1e20,
- 0x1e22, 0x1e22,
- 0x1e24, 0x1e24,
- 0x1e26, 0x1e26,
- 0x1e28, 0x1e28,
- 0x1e2a, 0x1e2a,
- 0x1e2c, 0x1e2c,
- 0x1e2e, 0x1e2e,
- 0x1e30, 0x1e30,
- 0x1e32, 0x1e32,
- 0x1e34, 0x1e34,
- 0x1e36, 0x1e36,
- 0x1e38, 0x1e38,
- 0x1e3a, 0x1e3a,
- 0x1e3c, 0x1e3c,
- 0x1e3e, 0x1e3e,
- 0x1e40, 0x1e40,
- 0x1e42, 0x1e42,
- 0x1e44, 0x1e44,
- 0x1e46, 0x1e46,
- 0x1e48, 0x1e48,
- 0x1e4a, 0x1e4a,
- 0x1e4c, 0x1e4c,
- 0x1e4e, 0x1e4e,
- 0x1e50, 0x1e50,
- 0x1e52, 0x1e52,
- 0x1e54, 0x1e54,
- 0x1e56, 0x1e56,
- 0x1e58, 0x1e58,
- 0x1e5a, 0x1e5a,
- 0x1e5c, 0x1e5c,
- 0x1e5e, 0x1e5e,
- 0x1e60, 0x1e60,
- 0x1e62, 0x1e62,
- 0x1e64, 0x1e64,
- 0x1e66, 0x1e66,
- 0x1e68, 0x1e68,
- 0x1e6a, 0x1e6a,
- 0x1e6c, 0x1e6c,
- 0x1e6e, 0x1e6e,
- 0x1e70, 0x1e70,
- 0x1e72, 0x1e72,
- 0x1e74, 0x1e74,
- 0x1e76, 0x1e76,
- 0x1e78, 0x1e78,
- 0x1e7a, 0x1e7a,
- 0x1e7c, 0x1e7c,
- 0x1e7e, 0x1e7e,
- 0x1e80, 0x1e80,
- 0x1e82, 0x1e82,
- 0x1e84, 0x1e84,
- 0x1e86, 0x1e86,
- 0x1e88, 0x1e88,
- 0x1e8a, 0x1e8a,
- 0x1e8c, 0x1e8c,
- 0x1e8e, 0x1e8e,
- 0x1e90, 0x1e90,
- 0x1e92, 0x1e92,
- 0x1e94, 0x1e94,
- 0x1e9e, 0x1e9e,
- 0x1ea0, 0x1ea0,
- 0x1ea2, 0x1ea2,
- 0x1ea4, 0x1ea4,
- 0x1ea6, 0x1ea6,
- 0x1ea8, 0x1ea8,
- 0x1eaa, 0x1eaa,
- 0x1eac, 0x1eac,
- 0x1eae, 0x1eae,
- 0x1eb0, 0x1eb0,
- 0x1eb2, 0x1eb2,
- 0x1eb4, 0x1eb4,
- 0x1eb6, 0x1eb6,
- 0x1eb8, 0x1eb8,
- 0x1eba, 0x1eba,
- 0x1ebc, 0x1ebc,
- 0x1ebe, 0x1ebe,
- 0x1ec0, 0x1ec0,
- 0x1ec2, 0x1ec2,
- 0x1ec4, 0x1ec4,
- 0x1ec6, 0x1ec6,
- 0x1ec8, 0x1ec8,
- 0x1eca, 0x1eca,
- 0x1ecc, 0x1ecc,
- 0x1ece, 0x1ece,
- 0x1ed0, 0x1ed0,
- 0x1ed2, 0x1ed2,
- 0x1ed4, 0x1ed4,
- 0x1ed6, 0x1ed6,
- 0x1ed8, 0x1ed8,
- 0x1eda, 0x1eda,
- 0x1edc, 0x1edc,
- 0x1ede, 0x1ede,
- 0x1ee0, 0x1ee0,
- 0x1ee2, 0x1ee2,
- 0x1ee4, 0x1ee4,
- 0x1ee6, 0x1ee6,
- 0x1ee8, 0x1ee8,
- 0x1eea, 0x1eea,
- 0x1eec, 0x1eec,
- 0x1eee, 0x1eee,
- 0x1ef0, 0x1ef0,
- 0x1ef2, 0x1ef2,
- 0x1ef4, 0x1ef4,
- 0x1ef6, 0x1ef6,
- 0x1ef8, 0x1ef8,
- 0x1efa, 0x1efa,
- 0x1efc, 0x1efc,
- 0x1efe, 0x1efe,
- 0x1f08, 0x1f0f,
- 0x1f18, 0x1f1d,
- 0x1f28, 0x1f2f,
- 0x1f38, 0x1f3f,
- 0x1f48, 0x1f4d,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f5f,
- 0x1f68, 0x1f6f,
- 0x1fb8, 0x1fbb,
- 0x1fc8, 0x1fcb,
- 0x1fd8, 0x1fdb,
- 0x1fe8, 0x1fec,
- 0x1ff8, 0x1ffb,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210b, 0x210d,
- 0x2110, 0x2112,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x2130, 0x2133,
- 0x213e, 0x213f,
- 0x2145, 0x2145,
- 0x2160, 0x216f,
- 0x2183, 0x2183,
- 0x24b6, 0x24cf,
- 0x2c00, 0x2c2e,
- 0x2c60, 0x2c60,
- 0x2c62, 0x2c64,
- 0x2c67, 0x2c67,
- 0x2c69, 0x2c69,
- 0x2c6b, 0x2c6b,
- 0x2c6d, 0x2c70,
- 0x2c72, 0x2c72,
- 0x2c75, 0x2c75,
- 0x2c7e, 0x2c80,
- 0x2c82, 0x2c82,
- 0x2c84, 0x2c84,
- 0x2c86, 0x2c86,
- 0x2c88, 0x2c88,
- 0x2c8a, 0x2c8a,
- 0x2c8c, 0x2c8c,
- 0x2c8e, 0x2c8e,
- 0x2c90, 0x2c90,
- 0x2c92, 0x2c92,
- 0x2c94, 0x2c94,
- 0x2c96, 0x2c96,
- 0x2c98, 0x2c98,
- 0x2c9a, 0x2c9a,
- 0x2c9c, 0x2c9c,
- 0x2c9e, 0x2c9e,
- 0x2ca0, 0x2ca0,
- 0x2ca2, 0x2ca2,
- 0x2ca4, 0x2ca4,
- 0x2ca6, 0x2ca6,
- 0x2ca8, 0x2ca8,
- 0x2caa, 0x2caa,
- 0x2cac, 0x2cac,
- 0x2cae, 0x2cae,
- 0x2cb0, 0x2cb0,
- 0x2cb2, 0x2cb2,
- 0x2cb4, 0x2cb4,
- 0x2cb6, 0x2cb6,
- 0x2cb8, 0x2cb8,
- 0x2cba, 0x2cba,
- 0x2cbc, 0x2cbc,
- 0x2cbe, 0x2cbe,
- 0x2cc0, 0x2cc0,
- 0x2cc2, 0x2cc2,
- 0x2cc4, 0x2cc4,
- 0x2cc6, 0x2cc6,
- 0x2cc8, 0x2cc8,
- 0x2cca, 0x2cca,
- 0x2ccc, 0x2ccc,
- 0x2cce, 0x2cce,
- 0x2cd0, 0x2cd0,
- 0x2cd2, 0x2cd2,
- 0x2cd4, 0x2cd4,
- 0x2cd6, 0x2cd6,
- 0x2cd8, 0x2cd8,
- 0x2cda, 0x2cda,
- 0x2cdc, 0x2cdc,
- 0x2cde, 0x2cde,
- 0x2ce0, 0x2ce0,
- 0x2ce2, 0x2ce2,
- 0x2ceb, 0x2ceb,
- 0x2ced, 0x2ced,
- 0x2cf2, 0x2cf2,
- 0xa640, 0xa640,
- 0xa642, 0xa642,
- 0xa644, 0xa644,
- 0xa646, 0xa646,
- 0xa648, 0xa648,
- 0xa64a, 0xa64a,
- 0xa64c, 0xa64c,
- 0xa64e, 0xa64e,
- 0xa650, 0xa650,
- 0xa652, 0xa652,
- 0xa654, 0xa654,
- 0xa656, 0xa656,
- 0xa658, 0xa658,
- 0xa65a, 0xa65a,
- 0xa65c, 0xa65c,
- 0xa65e, 0xa65e,
- 0xa660, 0xa660,
- 0xa662, 0xa662,
- 0xa664, 0xa664,
- 0xa666, 0xa666,
- 0xa668, 0xa668,
- 0xa66a, 0xa66a,
- 0xa66c, 0xa66c,
- 0xa680, 0xa680,
- 0xa682, 0xa682,
- 0xa684, 0xa684,
- 0xa686, 0xa686,
- 0xa688, 0xa688,
- 0xa68a, 0xa68a,
- 0xa68c, 0xa68c,
- 0xa68e, 0xa68e,
- 0xa690, 0xa690,
- 0xa692, 0xa692,
- 0xa694, 0xa694,
- 0xa696, 0xa696,
- 0xa722, 0xa722,
- 0xa724, 0xa724,
- 0xa726, 0xa726,
- 0xa728, 0xa728,
- 0xa72a, 0xa72a,
- 0xa72c, 0xa72c,
- 0xa72e, 0xa72e,
- 0xa732, 0xa732,
- 0xa734, 0xa734,
- 0xa736, 0xa736,
- 0xa738, 0xa738,
- 0xa73a, 0xa73a,
- 0xa73c, 0xa73c,
- 0xa73e, 0xa73e,
- 0xa740, 0xa740,
- 0xa742, 0xa742,
- 0xa744, 0xa744,
- 0xa746, 0xa746,
- 0xa748, 0xa748,
- 0xa74a, 0xa74a,
- 0xa74c, 0xa74c,
- 0xa74e, 0xa74e,
- 0xa750, 0xa750,
- 0xa752, 0xa752,
- 0xa754, 0xa754,
- 0xa756, 0xa756,
- 0xa758, 0xa758,
- 0xa75a, 0xa75a,
- 0xa75c, 0xa75c,
- 0xa75e, 0xa75e,
- 0xa760, 0xa760,
- 0xa762, 0xa762,
- 0xa764, 0xa764,
- 0xa766, 0xa766,
- 0xa768, 0xa768,
- 0xa76a, 0xa76a,
- 0xa76c, 0xa76c,
- 0xa76e, 0xa76e,
- 0xa779, 0xa779,
- 0xa77b, 0xa77b,
- 0xa77d, 0xa77e,
- 0xa780, 0xa780,
- 0xa782, 0xa782,
- 0xa784, 0xa784,
- 0xa786, 0xa786,
- 0xa78b, 0xa78b,
- 0xa78d, 0xa78d,
- 0xa790, 0xa790,
- 0xa792, 0xa792,
- 0xa7a0, 0xa7a0,
- 0xa7a2, 0xa7a2,
- 0xa7a4, 0xa7a4,
- 0xa7a6, 0xa7a6,
- 0xa7a8, 0xa7a8,
- 0xa7aa, 0xa7aa,
- 0xff21, 0xff3a,
- 0x10400, 0x10427,
- 0x1d400, 0x1d419,
- 0x1d434, 0x1d44d,
- 0x1d468, 0x1d481,
- 0x1d49c, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b5,
- 0x1d4d0, 0x1d4e9,
- 0x1d504, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d538, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d56c, 0x1d585,
- 0x1d5a0, 0x1d5b9,
- 0x1d5d4, 0x1d5ed,
- 0x1d608, 0x1d621,
- 0x1d63c, 0x1d655,
- 0x1d670, 0x1d689,
- 0x1d6a8, 0x1d6c0,
- 0x1d6e2, 0x1d6fa,
- 0x1d71c, 0x1d734,
- 0x1d756, 0x1d76e,
- 0x1d790, 0x1d7a8,
- 0x1d7ca, 0x1d7ca,
-}; /* CR_Upper */
-
-/* 'XDigit': [[:XDigit:]] */
-static const OnigCodePoint CR_XDigit[] = {
- 3,
- 0x0030, 0x0039,
- 0x0041, 0x0046,
- 0x0061, 0x0066,
-}; /* CR_XDigit */
-
-/* 'Word': [[:Word:]] */
-static const OnigCodePoint CR_Word[] = {
- 564,
- 0x0030, 0x0039,
- 0x0041, 0x005a,
- 0x005f, 0x005f,
- 0x0061, 0x007a,
- 0x00aa, 0x00aa,
- 0x00b5, 0x00b5,
- 0x00ba, 0x00ba,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00f6,
- 0x00f8, 0x02c1,
- 0x02c6, 0x02d1,
- 0x02e0, 0x02e4,
- 0x02ec, 0x02ec,
- 0x02ee, 0x02ee,
- 0x0300, 0x0374,
- 0x0376, 0x0377,
- 0x037a, 0x037d,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x03f5,
- 0x03f7, 0x0481,
- 0x0483, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x0559,
- 0x0561, 0x0587,
- 0x0591, 0x05bd,
- 0x05bf, 0x05bf,
- 0x05c1, 0x05c2,
- 0x05c4, 0x05c5,
- 0x05c7, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f2,
- 0x0610, 0x061a,
- 0x0620, 0x0669,
- 0x066e, 0x06d3,
- 0x06d5, 0x06dc,
- 0x06df, 0x06e8,
- 0x06ea, 0x06fc,
- 0x06ff, 0x06ff,
- 0x0710, 0x074a,
- 0x074d, 0x07b1,
- 0x07c0, 0x07f5,
- 0x07fa, 0x07fa,
- 0x0800, 0x082d,
- 0x0840, 0x085b,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
- 0x0900, 0x0963,
- 0x0966, 0x096f,
- 0x0971, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bc, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09e6, 0x09f1,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3c, 0x0a3c,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4d,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a66, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abc, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acd,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0ae6, 0x0aef,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3c, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4d,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b66, 0x0b6f,
- 0x0b71, 0x0b71,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcd,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0be6, 0x0bef,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4d,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c66, 0x0c6f,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbc, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccd,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0ce6, 0x0cef,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d66, 0x0d6f,
- 0x0d7a, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dca, 0x0dca,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df3,
- 0x0e01, 0x0e3a,
- 0x0e40, 0x0e4e,
- 0x0e50, 0x0e59,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ec8, 0x0ecd,
- 0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f00,
- 0x0f18, 0x0f19,
- 0x0f20, 0x0f29,
- 0x0f35, 0x0f35,
- 0x0f37, 0x0f37,
- 0x0f39, 0x0f39,
- 0x0f3e, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f84,
- 0x0f86, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x0fc6, 0x0fc6,
- 0x1000, 0x1049,
- 0x1050, 0x109d,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x10fa,
- 0x10fc, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135d, 0x135f,
- 0x1380, 0x138f,
- 0x13a0, 0x13f4,
- 0x1401, 0x166c,
- 0x166f, 0x167f,
- 0x1681, 0x169a,
- 0x16a0, 0x16ea,
- 0x16ee, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1714,
- 0x1720, 0x1734,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17d3,
- 0x17d7, 0x17d7,
- 0x17dc, 0x17dd,
- 0x17e0, 0x17e9,
- 0x180b, 0x180d,
- 0x1810, 0x1819,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x193b,
- 0x1946, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x19d0, 0x19d9,
- 0x1a00, 0x1a1b,
- 0x1a20, 0x1a5e,
- 0x1a60, 0x1a7c,
- 0x1a7f, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1aa7, 0x1aa7,
- 0x1b00, 0x1b4b,
- 0x1b50, 0x1b59,
- 0x1b6b, 0x1b73,
- 0x1b80, 0x1bf3,
- 0x1c00, 0x1c37,
- 0x1c40, 0x1c49,
- 0x1c4d, 0x1c7d,
- 0x1cd0, 0x1cd2,
- 0x1cd4, 0x1cf6,
- 0x1d00, 0x1de6,
- 0x1dfc, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fbc,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fcc,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fe0, 0x1fec,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffc,
- 0x203f, 0x2040,
- 0x2054, 0x2054,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
- 0x20d0, 0x20f0,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210a, 0x2113,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x212f, 0x2139,
- 0x213c, 0x213f,
- 0x2145, 0x2149,
- 0x214e, 0x214e,
- 0x2160, 0x2188,
- 0x24b6, 0x24e9,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2ce4,
- 0x2ceb, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d6f,
- 0x2d7f, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2dff,
- 0x2e2f, 0x2e2f,
- 0x3005, 0x3007,
- 0x3021, 0x302f,
- 0x3031, 0x3035,
- 0x3038, 0x303c,
- 0x3041, 0x3096,
- 0x3099, 0x309a,
- 0x309d, 0x309f,
- 0x30a1, 0x30fa,
- 0x30fc, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x31a0, 0x31ba,
- 0x31f0, 0x31ff,
- 0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa4d0, 0xa4fd,
- 0xa500, 0xa60c,
- 0xa610, 0xa62b,
- 0xa640, 0xa672,
- 0xa674, 0xa67d,
- 0xa67f, 0xa697,
- 0xa69f, 0xa6f1,
- 0xa717, 0xa71f,
- 0xa722, 0xa788,
- 0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa827,
- 0xa840, 0xa873,
- 0xa880, 0xa8c4,
- 0xa8d0, 0xa8d9,
- 0xa8e0, 0xa8f7,
- 0xa8fb, 0xa8fb,
- 0xa900, 0xa92d,
- 0xa930, 0xa953,
- 0xa960, 0xa97c,
- 0xa980, 0xa9c0,
- 0xa9cf, 0xa9d9,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa50, 0xaa59,
- 0xaa60, 0xaa76,
- 0xaa7a, 0xaa7b,
- 0xaa80, 0xaac2,
- 0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf6,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabea,
- 0xabec, 0xabed,
- 0xabf0, 0xabf9,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb28,
- 0xfb2a, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbb1,
- 0xfbd3, 0xfd3d,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfb,
- 0xfe00, 0xfe0f,
- 0xfe20, 0xfe26,
- 0xfe33, 0xfe34,
- 0xfe4d, 0xfe4f,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xff10, 0xff19,
- 0xff21, 0xff3a,
- 0xff3f, 0xff3f,
- 0xff41, 0xff5a,
- 0xff66, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10140, 0x10174,
- 0x101fd, 0x101fd,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x103a0, 0x103c3,
- 0x103c8, 0x103cf,
- 0x103d1, 0x103d5,
- 0x10400, 0x1049d,
- 0x104a0, 0x104a9,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10900, 0x10915,
- 0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a38, 0x10a3a,
- 0x10a3f, 0x10a3f,
- 0x10a60, 0x10a7c,
- 0x10b00, 0x10b35,
- 0x10b40, 0x10b55,
- 0x10b60, 0x10b72,
- 0x10c00, 0x10c48,
- 0x11000, 0x11046,
- 0x11066, 0x1106f,
- 0x11080, 0x110ba,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x1113f,
- 0x11180, 0x111c4,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d165, 0x1d169,
- 0x1d16d, 0x1d172,
- 0x1d17b, 0x1d182,
- 0x1d185, 0x1d18b,
- 0x1d1aa, 0x1d1ad,
- 0x1d242, 0x1d244,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d6c0,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6fa,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d734,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d76e,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d7a8,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7cb,
- 0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
- 0xe0100, 0xe01ef,
-}; /* CR_Word */
-
-/* 'Alnum': [[:Alnum:]] */
-static const OnigCodePoint CR_Alnum[] = {
- 566,
- 0x0030, 0x0039,
- 0x0041, 0x005a,
- 0x0061, 0x007a,
- 0x00aa, 0x00aa,
- 0x00b5, 0x00b5,
- 0x00ba, 0x00ba,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00f6,
- 0x00f8, 0x02c1,
- 0x02c6, 0x02d1,
- 0x02e0, 0x02e4,
- 0x02ec, 0x02ec,
- 0x02ee, 0x02ee,
- 0x0345, 0x0345,
- 0x0370, 0x0374,
- 0x0376, 0x0377,
- 0x037a, 0x037d,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x03f5,
- 0x03f7, 0x0481,
- 0x048a, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x0559,
- 0x0561, 0x0587,
- 0x05b0, 0x05bd,
- 0x05bf, 0x05bf,
- 0x05c1, 0x05c2,
- 0x05c4, 0x05c5,
- 0x05c7, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f2,
- 0x0610, 0x061a,
- 0x0620, 0x0657,
- 0x0659, 0x0669,
- 0x066e, 0x06d3,
- 0x06d5, 0x06dc,
- 0x06e1, 0x06e8,
- 0x06ed, 0x06fc,
- 0x06ff, 0x06ff,
- 0x0710, 0x073f,
- 0x074d, 0x07b1,
- 0x07c0, 0x07ea,
- 0x07f4, 0x07f5,
- 0x07fa, 0x07fa,
- 0x0800, 0x0817,
- 0x081a, 0x082c,
- 0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08e9,
- 0x08f0, 0x08fe,
- 0x0900, 0x093b,
- 0x093d, 0x094c,
- 0x094e, 0x0950,
- 0x0955, 0x0963,
- 0x0966, 0x096f,
- 0x0971, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bd, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09cc,
- 0x09ce, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09e6, 0x09f1,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4c,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a66, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abd, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acc,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0ae6, 0x0aef,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3d, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4c,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b66, 0x0b6f,
- 0x0b71, 0x0b71,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcc,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0be6, 0x0bef,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4c,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c66, 0x0c6f,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbd, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccc,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0ce6, 0x0cef,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4c,
- 0x0d4e, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d66, 0x0d6f,
- 0x0d7a, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df3,
- 0x0e01, 0x0e3a,
- 0x0e40, 0x0e46,
- 0x0e4d, 0x0e4d,
- 0x0e50, 0x0e59,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ecd, 0x0ecd,
- 0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f00,
- 0x0f20, 0x0f29,
- 0x0f40, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f81,
- 0x0f88, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x1000, 0x1036,
- 0x1038, 0x1038,
- 0x103b, 0x1049,
- 0x1050, 0x1062,
- 0x1065, 0x1068,
- 0x106e, 0x1086,
- 0x108e, 0x108e,
- 0x1090, 0x1099,
- 0x109c, 0x109d,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x10fa,
- 0x10fc, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135f, 0x135f,
- 0x1380, 0x138f,
- 0x13a0, 0x13f4,
- 0x1401, 0x166c,
- 0x166f, 0x167f,
- 0x1681, 0x169a,
- 0x16a0, 0x16ea,
- 0x16ee, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1713,
- 0x1720, 0x1733,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17b3,
- 0x17b6, 0x17c8,
- 0x17d7, 0x17d7,
- 0x17dc, 0x17dc,
- 0x17e0, 0x17e9,
- 0x1810, 0x1819,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x1938,
- 0x1946, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x19d0, 0x19d9,
- 0x1a00, 0x1a1b,
- 0x1a20, 0x1a5e,
- 0x1a61, 0x1a74,
- 0x1a80, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1aa7, 0x1aa7,
- 0x1b00, 0x1b33,
- 0x1b35, 0x1b43,
- 0x1b45, 0x1b4b,
- 0x1b50, 0x1b59,
- 0x1b80, 0x1ba9,
- 0x1bac, 0x1be5,
- 0x1be7, 0x1bf1,
- 0x1c00, 0x1c35,
- 0x1c40, 0x1c49,
- 0x1c4d, 0x1c7d,
- 0x1ce9, 0x1cec,
- 0x1cee, 0x1cf3,
- 0x1cf5, 0x1cf6,
- 0x1d00, 0x1dbf,
- 0x1e00, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fbc,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fcc,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fe0, 0x1fec,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffc,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210a, 0x2113,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x212f, 0x2139,
- 0x213c, 0x213f,
- 0x2145, 0x2149,
- 0x214e, 0x214e,
- 0x2160, 0x2188,
- 0x24b6, 0x24e9,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2ce4,
- 0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d6f,
- 0x2d80, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2dff,
- 0x2e2f, 0x2e2f,
- 0x3005, 0x3007,
- 0x3021, 0x3029,
- 0x3031, 0x3035,
- 0x3038, 0x303c,
- 0x3041, 0x3096,
- 0x309d, 0x309f,
- 0x30a1, 0x30fa,
- 0x30fc, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x31a0, 0x31ba,
- 0x31f0, 0x31ff,
- 0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa4d0, 0xa4fd,
- 0xa500, 0xa60c,
- 0xa610, 0xa62b,
- 0xa640, 0xa66e,
- 0xa674, 0xa67b,
- 0xa67f, 0xa697,
- 0xa69f, 0xa6ef,
- 0xa717, 0xa71f,
- 0xa722, 0xa788,
- 0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
- 0xa803, 0xa805,
- 0xa807, 0xa80a,
- 0xa80c, 0xa827,
- 0xa840, 0xa873,
- 0xa880, 0xa8c3,
- 0xa8d0, 0xa8d9,
- 0xa8f2, 0xa8f7,
- 0xa8fb, 0xa8fb,
- 0xa900, 0xa92a,
- 0xa930, 0xa952,
- 0xa960, 0xa97c,
- 0xa980, 0xa9b2,
- 0xa9b4, 0xa9bf,
- 0xa9cf, 0xa9d9,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa50, 0xaa59,
- 0xaa60, 0xaa76,
- 0xaa7a, 0xaa7a,
- 0xaa80, 0xaabe,
- 0xaac0, 0xaac0,
- 0xaac2, 0xaac2,
- 0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf5,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabea,
- 0xabf0, 0xabf9,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb28,
- 0xfb2a, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbb1,
- 0xfbd3, 0xfd3d,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfb,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xff10, 0xff19,
- 0xff21, 0xff3a,
- 0xff41, 0xff5a,
- 0xff66, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10140, 0x10174,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x103a0, 0x103c3,
- 0x103c8, 0x103cf,
- 0x103d1, 0x103d5,
- 0x10400, 0x1049d,
- 0x104a0, 0x104a9,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10900, 0x10915,
- 0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a60, 0x10a7c,
- 0x10b00, 0x10b35,
- 0x10b40, 0x10b55,
- 0x10b60, 0x10b72,
- 0x10c00, 0x10c48,
- 0x11000, 0x11045,
- 0x11066, 0x1106f,
- 0x11082, 0x110b8,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11132,
- 0x11136, 0x1113f,
- 0x11180, 0x111bf,
- 0x111c1, 0x111c4,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b5,
- 0x116c0, 0x116c9,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f93, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d6c0,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6fa,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d734,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d76e,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d7a8,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7cb,
- 0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
-}; /* CR_Alnum */
-
-/* 'ASCII': [[:ASCII:]] */
-static const OnigCodePoint CR_ASCII[] = {
- 1,
- 0x0000, 0x007f,
-}; /* CR_ASCII */
-
+#ifdef USE_UNICODE_PROPERTIES
#ifdef USE_UNICODE_PROPERTIES
/* 'Any': - */
static const OnigCodePoint CR_Any[] = {
@@ -4312,7 +46,7 @@ static const OnigCodePoint CR_Any[] = {
/* 'Assigned': - */
static const OnigCodePoint CR_Assigned[] = {
- 539,
+ 501,
0x0000, 0x0377,
0x037a, 0x037e,
0x0384, 0x038a,
@@ -4323,11 +57,10 @@ static const OnigCodePoint CR_Assigned[] = {
0x0559, 0x055f,
0x0561, 0x0587,
0x0589, 0x058a,
- 0x058f, 0x058f,
0x0591, 0x05c7,
0x05d0, 0x05ea,
0x05f0, 0x05f4,
- 0x0600, 0x0604,
+ 0x0600, 0x0603,
0x0606, 0x061b,
0x061e, 0x070d,
0x070f, 0x074a,
@@ -4337,9 +70,6 @@ static const OnigCodePoint CR_Assigned[] = {
0x0830, 0x083e,
0x0840, 0x085b,
0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0x0900, 0x0977,
0x0979, 0x097f,
0x0981, 0x0983,
@@ -4384,7 +114,8 @@ static const OnigCodePoint CR_Assigned[] = {
0x0acb, 0x0acd,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -4484,7 +215,7 @@ static const OnigCodePoint CR_Assigned[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f47,
0x0f49, 0x0f6c,
0x0f71, 0x0f97,
@@ -4492,9 +223,8 @@ static const OnigCodePoint CR_Assigned[] = {
0x0fbe, 0x0fcc,
0x0fce, 0x0fda,
0x1000, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
+ 0x10d0, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -4547,12 +277,13 @@ static const OnigCodePoint CR_Assigned[] = {
0x1aa0, 0x1aad,
0x1b00, 0x1b4b,
0x1b50, 0x1b7c,
- 0x1b80, 0x1bf3,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
0x1bfc, 0x1c37,
0x1c3b, 0x1c49,
0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd0, 0x1cf6,
+ 0x1cd0, 0x1cf2,
0x1d00, 0x1de6,
0x1dfc, 0x1f15,
0x1f18, 0x1f1d,
@@ -4581,15 +312,15 @@ static const OnigCodePoint CR_Assigned[] = {
0x2400, 0x2426,
0x2440, 0x244a,
0x2460, 0x26ff,
- 0x2701, 0x2b4c,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x2b4c,
0x2b50, 0x2b59,
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
- 0x2c60, 0x2cf3,
+ 0x2c60, 0x2cf1,
0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d70,
0x2d7f, 0x2d96,
0x2da0, 0x2da6,
@@ -4600,7 +331,7 @@ static const OnigCodePoint CR_Assigned[] = {
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
- 0x2de0, 0x2e3b,
+ 0x2de0, 0x2e31,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -4615,16 +346,17 @@ static const OnigCodePoint CR_Assigned[] = {
0x31f0, 0x321e,
0x3220, 0x32fe,
0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
+ 0x4dc0, 0x9fcb,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
- 0xa640, 0xa697,
- 0xa69f, 0xa6f7,
+ 0xa640, 0xa673,
+ 0xa67c, 0xa697,
+ 0xa6a0, 0xa6f7,
0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa82b,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
0xa880, 0xa8c4,
@@ -4640,7 +372,7 @@ static const OnigCodePoint CR_Assigned[] = {
0xaa50, 0xaa59,
0xaa5c, 0xaa7b,
0xaa80, 0xaac2,
- 0xaadb, 0xaaf6,
+ 0xaadb, 0xaadf,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -4651,7 +383,8 @@ static const OnigCodePoint CR_Assigned[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xd800, 0xfa6d,
+ 0xd800, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -4713,8 +446,6 @@ static const OnigCodePoint CR_Assigned[] = {
0x10900, 0x1091b,
0x1091f, 0x10939,
0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a03,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
@@ -4733,22 +464,11 @@ static const OnigCodePoint CR_Assigned[] = {
0x11000, 0x1104d,
0x11052, 0x1106f,
0x11080, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x12470, 0x12473,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
0x1b000, 0x1b001,
0x1d000, 0x1d0f5,
0x1d100, 0x1d126,
@@ -4777,40 +497,6 @@ static const OnigCodePoint CR_Assigned[] = {
0x1d552, 0x1d6a5,
0x1d6a8, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
@@ -4819,7 +505,7 @@ static const OnigCodePoint CR_Assigned[] = {
0x1f0d1, 0x1f0df,
0x1f100, 0x1f10a,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -4837,9 +523,19 @@ static const OnigCodePoint CR_Assigned[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -4856,560 +552,44 @@ static const OnigCodePoint CR_Assigned[] = {
/* 'C': Major Category */
static const OnigCodePoint CR_C[] = {
- 541,
+ 20,
0x0000, 0x001f,
0x007f, 0x009f,
0x00ad, 0x00ad,
- 0x0378, 0x0379,
- 0x037f, 0x0383,
- 0x038b, 0x038b,
- 0x038d, 0x038d,
- 0x03a2, 0x03a2,
- 0x0528, 0x0530,
- 0x0557, 0x0558,
- 0x0560, 0x0560,
- 0x0588, 0x0588,
- 0x058b, 0x058e,
- 0x0590, 0x0590,
- 0x05c8, 0x05cf,
- 0x05eb, 0x05ef,
- 0x05f5, 0x0605,
- 0x061c, 0x061d,
+ 0x0600, 0x0603,
0x06dd, 0x06dd,
- 0x070e, 0x070f,
- 0x074b, 0x074c,
- 0x07b2, 0x07bf,
- 0x07fb, 0x07ff,
- 0x082e, 0x082f,
- 0x083f, 0x083f,
- 0x085c, 0x085d,
- 0x085f, 0x089f,
- 0x08a1, 0x08a1,
- 0x08ad, 0x08e3,
- 0x08ff, 0x08ff,
- 0x0978, 0x0978,
- 0x0980, 0x0980,
- 0x0984, 0x0984,
- 0x098d, 0x098e,
- 0x0991, 0x0992,
- 0x09a9, 0x09a9,
- 0x09b1, 0x09b1,
- 0x09b3, 0x09b5,
- 0x09ba, 0x09bb,
- 0x09c5, 0x09c6,
- 0x09c9, 0x09ca,
- 0x09cf, 0x09d6,
- 0x09d8, 0x09db,
- 0x09de, 0x09de,
- 0x09e4, 0x09e5,
- 0x09fc, 0x0a00,
- 0x0a04, 0x0a04,
- 0x0a0b, 0x0a0e,
- 0x0a11, 0x0a12,
- 0x0a29, 0x0a29,
- 0x0a31, 0x0a31,
- 0x0a34, 0x0a34,
- 0x0a37, 0x0a37,
- 0x0a3a, 0x0a3b,
- 0x0a3d, 0x0a3d,
- 0x0a43, 0x0a46,
- 0x0a49, 0x0a4a,
- 0x0a4e, 0x0a50,
- 0x0a52, 0x0a58,
- 0x0a5d, 0x0a5d,
- 0x0a5f, 0x0a65,
- 0x0a76, 0x0a80,
- 0x0a84, 0x0a84,
- 0x0a8e, 0x0a8e,
- 0x0a92, 0x0a92,
- 0x0aa9, 0x0aa9,
- 0x0ab1, 0x0ab1,
- 0x0ab4, 0x0ab4,
- 0x0aba, 0x0abb,
- 0x0ac6, 0x0ac6,
- 0x0aca, 0x0aca,
- 0x0ace, 0x0acf,
- 0x0ad1, 0x0adf,
- 0x0ae4, 0x0ae5,
- 0x0af2, 0x0b00,
- 0x0b04, 0x0b04,
- 0x0b0d, 0x0b0e,
- 0x0b11, 0x0b12,
- 0x0b29, 0x0b29,
- 0x0b31, 0x0b31,
- 0x0b34, 0x0b34,
- 0x0b3a, 0x0b3b,
- 0x0b45, 0x0b46,
- 0x0b49, 0x0b4a,
- 0x0b4e, 0x0b55,
- 0x0b58, 0x0b5b,
- 0x0b5e, 0x0b5e,
- 0x0b64, 0x0b65,
- 0x0b78, 0x0b81,
- 0x0b84, 0x0b84,
- 0x0b8b, 0x0b8d,
- 0x0b91, 0x0b91,
- 0x0b96, 0x0b98,
- 0x0b9b, 0x0b9b,
- 0x0b9d, 0x0b9d,
- 0x0ba0, 0x0ba2,
- 0x0ba5, 0x0ba7,
- 0x0bab, 0x0bad,
- 0x0bba, 0x0bbd,
- 0x0bc3, 0x0bc5,
- 0x0bc9, 0x0bc9,
- 0x0bce, 0x0bcf,
- 0x0bd1, 0x0bd6,
- 0x0bd8, 0x0be5,
- 0x0bfb, 0x0c00,
- 0x0c04, 0x0c04,
- 0x0c0d, 0x0c0d,
- 0x0c11, 0x0c11,
- 0x0c29, 0x0c29,
- 0x0c34, 0x0c34,
- 0x0c3a, 0x0c3c,
- 0x0c45, 0x0c45,
- 0x0c49, 0x0c49,
- 0x0c4e, 0x0c54,
- 0x0c57, 0x0c57,
- 0x0c5a, 0x0c5f,
- 0x0c64, 0x0c65,
- 0x0c70, 0x0c77,
- 0x0c80, 0x0c81,
- 0x0c84, 0x0c84,
- 0x0c8d, 0x0c8d,
- 0x0c91, 0x0c91,
- 0x0ca9, 0x0ca9,
- 0x0cb4, 0x0cb4,
- 0x0cba, 0x0cbb,
- 0x0cc5, 0x0cc5,
- 0x0cc9, 0x0cc9,
- 0x0cce, 0x0cd4,
- 0x0cd7, 0x0cdd,
- 0x0cdf, 0x0cdf,
- 0x0ce4, 0x0ce5,
- 0x0cf0, 0x0cf0,
- 0x0cf3, 0x0d01,
- 0x0d04, 0x0d04,
- 0x0d0d, 0x0d0d,
- 0x0d11, 0x0d11,
- 0x0d3b, 0x0d3c,
- 0x0d45, 0x0d45,
- 0x0d49, 0x0d49,
- 0x0d4f, 0x0d56,
- 0x0d58, 0x0d5f,
- 0x0d64, 0x0d65,
- 0x0d76, 0x0d78,
- 0x0d80, 0x0d81,
- 0x0d84, 0x0d84,
- 0x0d97, 0x0d99,
- 0x0db2, 0x0db2,
- 0x0dbc, 0x0dbc,
- 0x0dbe, 0x0dbf,
- 0x0dc7, 0x0dc9,
- 0x0dcb, 0x0dce,
- 0x0dd5, 0x0dd5,
- 0x0dd7, 0x0dd7,
- 0x0de0, 0x0df1,
- 0x0df5, 0x0e00,
- 0x0e3b, 0x0e3e,
- 0x0e5c, 0x0e80,
- 0x0e83, 0x0e83,
- 0x0e85, 0x0e86,
- 0x0e89, 0x0e89,
- 0x0e8b, 0x0e8c,
- 0x0e8e, 0x0e93,
- 0x0e98, 0x0e98,
- 0x0ea0, 0x0ea0,
- 0x0ea4, 0x0ea4,
- 0x0ea6, 0x0ea6,
- 0x0ea8, 0x0ea9,
- 0x0eac, 0x0eac,
- 0x0eba, 0x0eba,
- 0x0ebe, 0x0ebf,
- 0x0ec5, 0x0ec5,
- 0x0ec7, 0x0ec7,
- 0x0ece, 0x0ecf,
- 0x0eda, 0x0edb,
- 0x0ee0, 0x0eff,
- 0x0f48, 0x0f48,
- 0x0f6d, 0x0f70,
- 0x0f98, 0x0f98,
- 0x0fbd, 0x0fbd,
- 0x0fcd, 0x0fcd,
- 0x0fdb, 0x0fff,
- 0x10c6, 0x10c6,
- 0x10c8, 0x10cc,
- 0x10ce, 0x10cf,
- 0x1249, 0x1249,
- 0x124e, 0x124f,
- 0x1257, 0x1257,
- 0x1259, 0x1259,
- 0x125e, 0x125f,
- 0x1289, 0x1289,
- 0x128e, 0x128f,
- 0x12b1, 0x12b1,
- 0x12b6, 0x12b7,
- 0x12bf, 0x12bf,
- 0x12c1, 0x12c1,
- 0x12c6, 0x12c7,
- 0x12d7, 0x12d7,
- 0x1311, 0x1311,
- 0x1316, 0x1317,
- 0x135b, 0x135c,
- 0x137d, 0x137f,
- 0x139a, 0x139f,
- 0x13f5, 0x13ff,
- 0x169d, 0x169f,
- 0x16f1, 0x16ff,
- 0x170d, 0x170d,
- 0x1715, 0x171f,
- 0x1737, 0x173f,
- 0x1754, 0x175f,
- 0x176d, 0x176d,
- 0x1771, 0x1771,
- 0x1774, 0x177f,
- 0x17de, 0x17df,
- 0x17ea, 0x17ef,
- 0x17fa, 0x17ff,
- 0x180f, 0x180f,
- 0x181a, 0x181f,
- 0x1878, 0x187f,
- 0x18ab, 0x18af,
- 0x18f6, 0x18ff,
- 0x191d, 0x191f,
- 0x192c, 0x192f,
- 0x193c, 0x193f,
- 0x1941, 0x1943,
- 0x196e, 0x196f,
- 0x1975, 0x197f,
- 0x19ac, 0x19af,
- 0x19ca, 0x19cf,
- 0x19db, 0x19dd,
- 0x1a1c, 0x1a1d,
- 0x1a5f, 0x1a5f,
- 0x1a7d, 0x1a7e,
- 0x1a8a, 0x1a8f,
- 0x1a9a, 0x1a9f,
- 0x1aae, 0x1aff,
- 0x1b4c, 0x1b4f,
- 0x1b7d, 0x1b7f,
- 0x1bf4, 0x1bfb,
- 0x1c38, 0x1c3a,
- 0x1c4a, 0x1c4c,
- 0x1c80, 0x1cbf,
- 0x1cc8, 0x1ccf,
- 0x1cf7, 0x1cff,
- 0x1de7, 0x1dfb,
- 0x1f16, 0x1f17,
- 0x1f1e, 0x1f1f,
- 0x1f46, 0x1f47,
- 0x1f4e, 0x1f4f,
- 0x1f58, 0x1f58,
- 0x1f5a, 0x1f5a,
- 0x1f5c, 0x1f5c,
- 0x1f5e, 0x1f5e,
- 0x1f7e, 0x1f7f,
- 0x1fb5, 0x1fb5,
- 0x1fc5, 0x1fc5,
- 0x1fd4, 0x1fd5,
- 0x1fdc, 0x1fdc,
- 0x1ff0, 0x1ff1,
- 0x1ff5, 0x1ff5,
- 0x1fff, 0x1fff,
+ 0x070f, 0x070f,
+ 0x17b4, 0x17b5,
0x200b, 0x200f,
0x202a, 0x202e,
- 0x2060, 0x206f,
- 0x2072, 0x2073,
- 0x208f, 0x208f,
- 0x209d, 0x209f,
- 0x20ba, 0x20cf,
- 0x20f1, 0x20ff,
- 0x218a, 0x218f,
- 0x23f4, 0x23ff,
- 0x2427, 0x243f,
- 0x244b, 0x245f,
- 0x2700, 0x2700,
- 0x2b4d, 0x2b4f,
- 0x2b5a, 0x2bff,
- 0x2c2f, 0x2c2f,
- 0x2c5f, 0x2c5f,
- 0x2cf4, 0x2cf8,
- 0x2d26, 0x2d26,
- 0x2d28, 0x2d2c,
- 0x2d2e, 0x2d2f,
- 0x2d68, 0x2d6e,
- 0x2d71, 0x2d7e,
- 0x2d97, 0x2d9f,
- 0x2da7, 0x2da7,
- 0x2daf, 0x2daf,
- 0x2db7, 0x2db7,
- 0x2dbf, 0x2dbf,
- 0x2dc7, 0x2dc7,
- 0x2dcf, 0x2dcf,
- 0x2dd7, 0x2dd7,
- 0x2ddf, 0x2ddf,
- 0x2e3c, 0x2e7f,
- 0x2e9a, 0x2e9a,
- 0x2ef4, 0x2eff,
- 0x2fd6, 0x2fef,
- 0x2ffc, 0x2fff,
- 0x3040, 0x3040,
- 0x3097, 0x3098,
- 0x3100, 0x3104,
- 0x312e, 0x3130,
- 0x318f, 0x318f,
- 0x31bb, 0x31bf,
- 0x31e4, 0x31ef,
- 0x321f, 0x321f,
- 0x32ff, 0x32ff,
- 0x4db6, 0x4dbf,
- 0x9fcd, 0x9fff,
- 0xa48d, 0xa48f,
- 0xa4c7, 0xa4cf,
- 0xa62c, 0xa63f,
- 0xa698, 0xa69e,
- 0xa6f8, 0xa6ff,
- 0xa78f, 0xa78f,
- 0xa794, 0xa79f,
- 0xa7ab, 0xa7f7,
- 0xa82c, 0xa82f,
- 0xa83a, 0xa83f,
- 0xa878, 0xa87f,
- 0xa8c5, 0xa8cd,
- 0xa8da, 0xa8df,
- 0xa8fc, 0xa8ff,
- 0xa954, 0xa95e,
- 0xa97d, 0xa97f,
- 0xa9ce, 0xa9ce,
- 0xa9da, 0xa9dd,
- 0xa9e0, 0xa9ff,
- 0xaa37, 0xaa3f,
- 0xaa4e, 0xaa4f,
- 0xaa5a, 0xaa5b,
- 0xaa7c, 0xaa7f,
- 0xaac3, 0xaada,
- 0xaaf7, 0xab00,
- 0xab07, 0xab08,
- 0xab0f, 0xab10,
- 0xab17, 0xab1f,
- 0xab27, 0xab27,
- 0xab2f, 0xabbf,
- 0xabee, 0xabef,
- 0xabfa, 0xabff,
- 0xd7a4, 0xd7af,
- 0xd7c7, 0xd7ca,
- 0xd7fc, 0xf8ff,
- 0xfa6e, 0xfa6f,
- 0xfada, 0xfaff,
- 0xfb07, 0xfb12,
- 0xfb18, 0xfb1c,
- 0xfb37, 0xfb37,
- 0xfb3d, 0xfb3d,
- 0xfb3f, 0xfb3f,
- 0xfb42, 0xfb42,
- 0xfb45, 0xfb45,
- 0xfbc2, 0xfbd2,
- 0xfd40, 0xfd4f,
- 0xfd90, 0xfd91,
- 0xfdc8, 0xfdef,
- 0xfdfe, 0xfdff,
- 0xfe1a, 0xfe1f,
- 0xfe27, 0xfe2f,
- 0xfe53, 0xfe53,
- 0xfe67, 0xfe67,
- 0xfe6c, 0xfe6f,
- 0xfe75, 0xfe75,
- 0xfefd, 0xff00,
- 0xffbf, 0xffc1,
- 0xffc8, 0xffc9,
- 0xffd0, 0xffd1,
- 0xffd8, 0xffd9,
- 0xffdd, 0xffdf,
- 0xffe7, 0xffe7,
- 0xffef, 0xfffb,
- 0xfffe, 0xffff,
- 0x1000c, 0x1000c,
- 0x10027, 0x10027,
- 0x1003b, 0x1003b,
- 0x1003e, 0x1003e,
- 0x1004e, 0x1004f,
- 0x1005e, 0x1007f,
- 0x100fb, 0x100ff,
- 0x10103, 0x10106,
- 0x10134, 0x10136,
- 0x1018b, 0x1018f,
- 0x1019c, 0x101cf,
- 0x101fe, 0x1027f,
- 0x1029d, 0x1029f,
- 0x102d1, 0x102ff,
- 0x1031f, 0x1031f,
- 0x10324, 0x1032f,
- 0x1034b, 0x1037f,
- 0x1039e, 0x1039e,
- 0x103c4, 0x103c7,
- 0x103d6, 0x103ff,
- 0x1049e, 0x1049f,
- 0x104aa, 0x107ff,
- 0x10806, 0x10807,
- 0x10809, 0x10809,
- 0x10836, 0x10836,
- 0x10839, 0x1083b,
- 0x1083d, 0x1083e,
- 0x10856, 0x10856,
- 0x10860, 0x108ff,
- 0x1091c, 0x1091e,
- 0x1093a, 0x1093e,
- 0x10940, 0x1097f,
- 0x109b8, 0x109bd,
- 0x109c0, 0x109ff,
- 0x10a04, 0x10a04,
- 0x10a07, 0x10a0b,
- 0x10a14, 0x10a14,
- 0x10a18, 0x10a18,
- 0x10a34, 0x10a37,
- 0x10a3b, 0x10a3e,
- 0x10a48, 0x10a4f,
- 0x10a59, 0x10a5f,
- 0x10a80, 0x10aff,
- 0x10b36, 0x10b38,
- 0x10b56, 0x10b57,
- 0x10b73, 0x10b77,
- 0x10b80, 0x10bff,
- 0x10c49, 0x10e5f,
- 0x10e7f, 0x10fff,
- 0x1104e, 0x11051,
- 0x11070, 0x1107f,
+ 0x2060, 0x2064,
+ 0x206a, 0x206f,
+ 0xd800, 0xf8ff,
+ 0xfeff, 0xfeff,
+ 0xfff9, 0xfffb,
0x110bd, 0x110bd,
- 0x110c2, 0x110cf,
- 0x110e9, 0x110ef,
- 0x110fa, 0x110ff,
- 0x11135, 0x11135,
- 0x11144, 0x1117f,
- 0x111c9, 0x111cf,
- 0x111da, 0x1167f,
- 0x116b8, 0x116bf,
- 0x116ca, 0x11fff,
- 0x1236f, 0x123ff,
- 0x12463, 0x1246f,
- 0x12474, 0x12fff,
- 0x1342f, 0x167ff,
- 0x16a39, 0x16eff,
- 0x16f45, 0x16f4f,
- 0x16f7f, 0x16f8e,
- 0x16fa0, 0x1afff,
- 0x1b002, 0x1cfff,
- 0x1d0f6, 0x1d0ff,
- 0x1d127, 0x1d128,
0x1d173, 0x1d17a,
- 0x1d1de, 0x1d1ff,
- 0x1d246, 0x1d2ff,
- 0x1d357, 0x1d35f,
- 0x1d372, 0x1d3ff,
- 0x1d455, 0x1d455,
- 0x1d49d, 0x1d49d,
- 0x1d4a0, 0x1d4a1,
- 0x1d4a3, 0x1d4a4,
- 0x1d4a7, 0x1d4a8,
- 0x1d4ad, 0x1d4ad,
- 0x1d4ba, 0x1d4ba,
- 0x1d4bc, 0x1d4bc,
- 0x1d4c4, 0x1d4c4,
- 0x1d506, 0x1d506,
- 0x1d50b, 0x1d50c,
- 0x1d515, 0x1d515,
- 0x1d51d, 0x1d51d,
- 0x1d53a, 0x1d53a,
- 0x1d53f, 0x1d53f,
- 0x1d545, 0x1d545,
- 0x1d547, 0x1d549,
- 0x1d551, 0x1d551,
- 0x1d6a6, 0x1d6a7,
- 0x1d7cc, 0x1d7cd,
- 0x1d800, 0x1edff,
- 0x1ee04, 0x1ee04,
- 0x1ee20, 0x1ee20,
- 0x1ee23, 0x1ee23,
- 0x1ee25, 0x1ee26,
- 0x1ee28, 0x1ee28,
- 0x1ee33, 0x1ee33,
- 0x1ee38, 0x1ee38,
- 0x1ee3a, 0x1ee3a,
- 0x1ee3c, 0x1ee41,
- 0x1ee43, 0x1ee46,
- 0x1ee48, 0x1ee48,
- 0x1ee4a, 0x1ee4a,
- 0x1ee4c, 0x1ee4c,
- 0x1ee50, 0x1ee50,
- 0x1ee53, 0x1ee53,
- 0x1ee55, 0x1ee56,
- 0x1ee58, 0x1ee58,
- 0x1ee5a, 0x1ee5a,
- 0x1ee5c, 0x1ee5c,
- 0x1ee5e, 0x1ee5e,
- 0x1ee60, 0x1ee60,
- 0x1ee63, 0x1ee63,
- 0x1ee65, 0x1ee66,
- 0x1ee6b, 0x1ee6b,
- 0x1ee73, 0x1ee73,
- 0x1ee78, 0x1ee78,
- 0x1ee7d, 0x1ee7d,
- 0x1ee7f, 0x1ee7f,
- 0x1ee8a, 0x1ee8a,
- 0x1ee9c, 0x1eea0,
- 0x1eea4, 0x1eea4,
- 0x1eeaa, 0x1eeaa,
- 0x1eebc, 0x1eeef,
- 0x1eef2, 0x1efff,
- 0x1f02c, 0x1f02f,
- 0x1f094, 0x1f09f,
- 0x1f0af, 0x1f0b0,
- 0x1f0bf, 0x1f0c0,
- 0x1f0d0, 0x1f0d0,
- 0x1f0e0, 0x1f0ff,
- 0x1f10b, 0x1f10f,
- 0x1f12f, 0x1f12f,
- 0x1f16c, 0x1f16f,
- 0x1f19b, 0x1f1e5,
- 0x1f203, 0x1f20f,
- 0x1f23b, 0x1f23f,
- 0x1f249, 0x1f24f,
- 0x1f252, 0x1f2ff,
- 0x1f321, 0x1f32f,
- 0x1f336, 0x1f336,
- 0x1f37d, 0x1f37f,
- 0x1f394, 0x1f39f,
- 0x1f3c5, 0x1f3c5,
- 0x1f3cb, 0x1f3df,
- 0x1f3f1, 0x1f3ff,
- 0x1f43f, 0x1f43f,
- 0x1f441, 0x1f441,
- 0x1f4f8, 0x1f4f8,
- 0x1f4fd, 0x1f4ff,
- 0x1f53e, 0x1f53f,
- 0x1f544, 0x1f54f,
- 0x1f568, 0x1f5fa,
- 0x1f641, 0x1f644,
- 0x1f650, 0x1f67f,
- 0x1f6c6, 0x1f6ff,
- 0x1f774, 0x1ffff,
- 0x2a6d7, 0x2a6ff,
- 0x2b735, 0x2b73f,
- 0x2b81e, 0x2f7ff,
- 0x2fa1e, 0xe00ff,
- 0xe01f0, 0x10ffff,
+ 0xe0001, 0xe0001,
+ 0xe0020, 0xe007f,
+ 0xf0000, 0xffffd,
+ 0x100000, 0x10ffff,
}; /* CR_C */
/* 'Cc': General Category */
-#define CR_Cc CR_Cntrl
+static const OnigCodePoint CR_Cc[] = {
+ 2,
+ 0x0000, 0x001f,
+ 0x007f, 0x009f,
+}; /* CR_Cc */
/* 'Cf': General Category */
static const OnigCodePoint CR_Cf[] = {
- 14,
+ 15,
0x00ad, 0x00ad,
- 0x0600, 0x0604,
+ 0x0600, 0x0603,
0x06dd, 0x06dd,
0x070f, 0x070f,
+ 0x17b4, 0x17b5,
0x200b, 0x200f,
0x202a, 0x202e,
0x2060, 0x2064,
@@ -5424,7 +604,7 @@ static const OnigCodePoint CR_Cf[] = {
/* 'Cn': General Category */
static const OnigCodePoint CR_Cn[] = {
- 539,
+ 501,
0x0378, 0x0379,
0x037f, 0x0383,
0x038b, 0x038b,
@@ -5434,12 +614,11 @@ static const OnigCodePoint CR_Cn[] = {
0x0557, 0x0558,
0x0560, 0x0560,
0x0588, 0x0588,
- 0x058b, 0x058e,
- 0x0590, 0x0590,
+ 0x058b, 0x0590,
0x05c8, 0x05cf,
0x05eb, 0x05ef,
0x05f5, 0x05ff,
- 0x0605, 0x0605,
+ 0x0604, 0x0605,
0x061c, 0x061d,
0x070e, 0x070e,
0x074b, 0x074c,
@@ -5448,10 +627,7 @@ static const OnigCodePoint CR_Cn[] = {
0x082e, 0x082f,
0x083f, 0x083f,
0x085c, 0x085d,
- 0x085f, 0x089f,
- 0x08a1, 0x08a1,
- 0x08ad, 0x08e3,
- 0x08ff, 0x08ff,
+ 0x085f, 0x08ff,
0x0978, 0x0978,
0x0980, 0x0980,
0x0984, 0x0984,
@@ -5496,6 +672,7 @@ static const OnigCodePoint CR_Cn[] = {
0x0ace, 0x0acf,
0x0ad1, 0x0adf,
0x0ae4, 0x0ae5,
+ 0x0af0, 0x0af0,
0x0af2, 0x0b00,
0x0b04, 0x0b04,
0x0b0d, 0x0b0e,
@@ -5596,16 +773,15 @@ static const OnigCodePoint CR_Cn[] = {
0x0ec7, 0x0ec7,
0x0ece, 0x0ecf,
0x0eda, 0x0edb,
- 0x0ee0, 0x0eff,
+ 0x0ede, 0x0eff,
0x0f48, 0x0f48,
0x0f6d, 0x0f70,
0x0f98, 0x0f98,
0x0fbd, 0x0fbd,
0x0fcd, 0x0fcd,
0x0fdb, 0x0fff,
- 0x10c6, 0x10c6,
- 0x10c8, 0x10cc,
- 0x10ce, 0x10cf,
+ 0x10c6, 0x10cf,
+ 0x10fd, 0x10ff,
0x1249, 0x1249,
0x124e, 0x124f,
0x1257, 0x1257,
@@ -5659,12 +835,13 @@ static const OnigCodePoint CR_Cn[] = {
0x1aae, 0x1aff,
0x1b4c, 0x1b4f,
0x1b7d, 0x1b7f,
+ 0x1bab, 0x1bad,
+ 0x1bba, 0x1bbf,
0x1bf4, 0x1bfb,
0x1c38, 0x1c3a,
0x1c4a, 0x1c4c,
- 0x1c80, 0x1cbf,
- 0x1cc8, 0x1ccf,
- 0x1cf7, 0x1cff,
+ 0x1c80, 0x1ccf,
+ 0x1cf3, 0x1cff,
0x1de7, 0x1dfb,
0x1f16, 0x1f17,
0x1f1e, 0x1f1f,
@@ -5693,15 +870,15 @@ static const OnigCodePoint CR_Cn[] = {
0x2427, 0x243f,
0x244b, 0x245f,
0x2700, 0x2700,
+ 0x27cb, 0x27cb,
+ 0x27cd, 0x27cd,
0x2b4d, 0x2b4f,
0x2b5a, 0x2bff,
0x2c2f, 0x2c2f,
0x2c5f, 0x2c5f,
- 0x2cf4, 0x2cf8,
- 0x2d26, 0x2d26,
- 0x2d28, 0x2d2c,
- 0x2d2e, 0x2d2f,
- 0x2d68, 0x2d6e,
+ 0x2cf2, 0x2cf8,
+ 0x2d26, 0x2d2f,
+ 0x2d66, 0x2d6e,
0x2d71, 0x2d7e,
0x2d97, 0x2d9f,
0x2da7, 0x2da7,
@@ -5712,7 +889,7 @@ static const OnigCodePoint CR_Cn[] = {
0x2dcf, 0x2dcf,
0x2dd7, 0x2dd7,
0x2ddf, 0x2ddf,
- 0x2e3c, 0x2e7f,
+ 0x2e32, 0x2e7f,
0x2e9a, 0x2e9a,
0x2ef4, 0x2eff,
0x2fd6, 0x2fef,
@@ -5727,15 +904,16 @@ static const OnigCodePoint CR_Cn[] = {
0x321f, 0x321f,
0x32ff, 0x32ff,
0x4db6, 0x4dbf,
- 0x9fcd, 0x9fff,
+ 0x9fcc, 0x9fff,
0xa48d, 0xa48f,
0xa4c7, 0xa4cf,
0xa62c, 0xa63f,
- 0xa698, 0xa69e,
+ 0xa674, 0xa67b,
+ 0xa698, 0xa69f,
0xa6f8, 0xa6ff,
0xa78f, 0xa78f,
- 0xa794, 0xa79f,
- 0xa7ab, 0xa7f7,
+ 0xa792, 0xa79f,
+ 0xa7aa, 0xa7f9,
0xa82c, 0xa82f,
0xa83a, 0xa83f,
0xa878, 0xa87f,
@@ -5752,7 +930,7 @@ static const OnigCodePoint CR_Cn[] = {
0xaa5a, 0xaa5b,
0xaa7c, 0xaa7f,
0xaac3, 0xaada,
- 0xaaf7, 0xab00,
+ 0xaae0, 0xab00,
0xab07, 0xab08,
0xab0f, 0xab10,
0xab17, 0xab1f,
@@ -5763,6 +941,7 @@ static const OnigCodePoint CR_Cn[] = {
0xd7a4, 0xd7af,
0xd7c7, 0xd7ca,
0xd7fc, 0xd7ff,
+ 0xfa2e, 0xfa2f,
0xfa6e, 0xfa6f,
0xfada, 0xfaff,
0xfb07, 0xfb12,
@@ -5824,9 +1003,7 @@ static const OnigCodePoint CR_Cn[] = {
0x10860, 0x108ff,
0x1091c, 0x1091e,
0x1093a, 0x1093e,
- 0x10940, 0x1097f,
- 0x109b8, 0x109bd,
- 0x109c0, 0x109ff,
+ 0x10940, 0x109ff,
0x10a04, 0x10a04,
0x10a07, 0x10a0b,
0x10a14, 0x10a14,
@@ -5844,23 +1021,12 @@ static const OnigCodePoint CR_Cn[] = {
0x10e7f, 0x10fff,
0x1104e, 0x11051,
0x11070, 0x1107f,
- 0x110c2, 0x110cf,
- 0x110e9, 0x110ef,
- 0x110fa, 0x110ff,
- 0x11135, 0x11135,
- 0x11144, 0x1117f,
- 0x111c9, 0x111cf,
- 0x111da, 0x1167f,
- 0x116b8, 0x116bf,
- 0x116ca, 0x11fff,
+ 0x110c2, 0x11fff,
0x1236f, 0x123ff,
0x12463, 0x1246f,
0x12474, 0x12fff,
0x1342f, 0x167ff,
- 0x16a39, 0x16eff,
- 0x16f45, 0x16f4f,
- 0x16f7f, 0x16f8e,
- 0x16fa0, 0x1afff,
+ 0x16a39, 0x1afff,
0x1b002, 0x1cfff,
0x1d0f6, 0x1d0ff,
0x1d127, 0x1d128,
@@ -5888,41 +1054,7 @@ static const OnigCodePoint CR_Cn[] = {
0x1d551, 0x1d551,
0x1d6a6, 0x1d6a7,
0x1d7cc, 0x1d7cd,
- 0x1d800, 0x1edff,
- 0x1ee04, 0x1ee04,
- 0x1ee20, 0x1ee20,
- 0x1ee23, 0x1ee23,
- 0x1ee25, 0x1ee26,
- 0x1ee28, 0x1ee28,
- 0x1ee33, 0x1ee33,
- 0x1ee38, 0x1ee38,
- 0x1ee3a, 0x1ee3a,
- 0x1ee3c, 0x1ee41,
- 0x1ee43, 0x1ee46,
- 0x1ee48, 0x1ee48,
- 0x1ee4a, 0x1ee4a,
- 0x1ee4c, 0x1ee4c,
- 0x1ee50, 0x1ee50,
- 0x1ee53, 0x1ee53,
- 0x1ee55, 0x1ee56,
- 0x1ee58, 0x1ee58,
- 0x1ee5a, 0x1ee5a,
- 0x1ee5c, 0x1ee5c,
- 0x1ee5e, 0x1ee5e,
- 0x1ee60, 0x1ee60,
- 0x1ee63, 0x1ee63,
- 0x1ee65, 0x1ee66,
- 0x1ee6b, 0x1ee6b,
- 0x1ee73, 0x1ee73,
- 0x1ee78, 0x1ee78,
- 0x1ee7d, 0x1ee7d,
- 0x1ee7f, 0x1ee7f,
- 0x1ee8a, 0x1ee8a,
- 0x1ee9c, 0x1eea0,
- 0x1eea4, 0x1eea4,
- 0x1eeaa, 0x1eeaa,
- 0x1eebc, 0x1eeef,
- 0x1eef2, 0x1efff,
+ 0x1d800, 0x1efff,
0x1f02c, 0x1f02f,
0x1f094, 0x1f09f,
0x1f0af, 0x1f0b0,
@@ -5931,7 +1063,7 @@ static const OnigCodePoint CR_Cn[] = {
0x1f0e0, 0x1f0ff,
0x1f10b, 0x1f10f,
0x1f12f, 0x1f12f,
- 0x1f16c, 0x1f16f,
+ 0x1f16a, 0x1f16f,
0x1f19b, 0x1f1e5,
0x1f203, 0x1f20f,
0x1f23b, 0x1f23f,
@@ -5948,9 +1080,19 @@ static const OnigCodePoint CR_Cn[] = {
0x1f441, 0x1f441,
0x1f4f8, 0x1f4f8,
0x1f4fd, 0x1f4ff,
- 0x1f53e, 0x1f53f,
- 0x1f544, 0x1f54f,
+ 0x1f53e, 0x1f54f,
0x1f568, 0x1f5fa,
+ 0x1f600, 0x1f600,
+ 0x1f611, 0x1f611,
+ 0x1f615, 0x1f615,
+ 0x1f617, 0x1f617,
+ 0x1f619, 0x1f619,
+ 0x1f61b, 0x1f61b,
+ 0x1f61f, 0x1f61f,
+ 0x1f626, 0x1f627,
+ 0x1f62c, 0x1f62c,
+ 0x1f62e, 0x1f62f,
+ 0x1f634, 0x1f634,
0x1f641, 0x1f644,
0x1f650, 0x1f67f,
0x1f6c6, 0x1f6ff,
@@ -5982,7 +1124,7 @@ static const OnigCodePoint CR_Cs[] = {
/* 'L': Major Category */
static const OnigCodePoint CR_L[] = {
- 486,
+ 435,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -6030,8 +1172,6 @@ static const OnigCodePoint CR_L[] = {
0x0824, 0x0824,
0x0828, 0x0828,
0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -6137,7 +1277,7 @@ static const OnigCodePoint CR_L[] = {
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f40, 0x0f47,
0x0f49, 0x0f6c,
@@ -6152,10 +1292,9 @@ static const OnigCodePoint CR_L[] = {
0x1075, 0x1081,
0x108e, 0x108e,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -6202,13 +1341,12 @@ static const OnigCodePoint CR_L[] = {
0x1b45, 0x1b4b,
0x1b83, 0x1ba0,
0x1bae, 0x1baf,
- 0x1bba, 0x1be5,
+ 0x1bc0, 0x1be5,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
- 0x1cf5, 0x1cf6,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -6250,11 +1388,8 @@ static const OnigCodePoint CR_L[] = {
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
@@ -6278,7 +1413,7 @@ static const OnigCodePoint CR_L[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -6290,9 +1425,9 @@ static const OnigCodePoint CR_L[] = {
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa822,
@@ -6317,8 +1452,6 @@ static const OnigCodePoint CR_L[] = {
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaea,
- 0xaaf2, 0xaaf4,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -6328,7 +1461,8 @@ static const OnigCodePoint CR_L[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -6377,8 +1511,6 @@ static const OnigCodePoint CR_L[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -6390,17 +1522,9 @@ static const OnigCodePoint CR_L[] = {
0x10c00, 0x10c48,
0x11003, 0x11037,
0x11083, 0x110af,
- 0x110d0, 0x110e8,
- 0x11103, 0x11126,
- 0x11183, 0x111b2,
- 0x111c1, 0x111c4,
- 0x11680, 0x116aa,
0x12000, 0x1236e,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f50,
- 0x16f93, 0x16f9f,
0x1b000, 0x1b001,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
@@ -6432,168 +1556,19 @@ static const OnigCodePoint CR_L[] = {
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2f800, 0x2fa1d,
}; /* CR_L */
-/* 'LC': General Category */
-static const OnigCodePoint CR_LC[] = {
- 113,
- 0x0041, 0x005a,
- 0x0061, 0x007a,
- 0x00b5, 0x00b5,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00f6,
- 0x00f8, 0x01ba,
- 0x01bc, 0x01bf,
- 0x01c4, 0x0293,
- 0x0295, 0x02af,
- 0x0370, 0x0373,
- 0x0376, 0x0377,
- 0x037b, 0x037d,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x03f5,
- 0x03f7, 0x0481,
- 0x048a, 0x0527,
- 0x0531, 0x0556,
- 0x0561, 0x0587,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x1d00, 0x1d2b,
- 0x1d6b, 0x1d77,
- 0x1d79, 0x1d9a,
- 0x1e00, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fbc,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fcc,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fe0, 0x1fec,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffc,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210a, 0x2113,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x212f, 0x2134,
- 0x2139, 0x2139,
- 0x213c, 0x213f,
- 0x2145, 0x2149,
- 0x214e, 0x214e,
- 0x2183, 0x2184,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2c7b,
- 0x2c7e, 0x2ce4,
- 0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0xa640, 0xa66d,
- 0xa680, 0xa697,
- 0xa722, 0xa76f,
- 0xa771, 0xa787,
- 0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7fa, 0xa7fa,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xff21, 0xff3a,
- 0xff41, 0xff5a,
- 0x10400, 0x1044f,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d6c0,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6fa,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d734,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d76e,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d7a8,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7cb,
-}; /* CR_LC */
-
/* 'Ll': General Category */
static const OnigCodePoint CR_Ll[] = {
- 611,
+ 609,
0x0061, 0x007a,
+ 0x00aa, 0x00aa,
0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
0x00df, 0x00f6,
0x00f8, 0x00ff,
0x0101, 0x0101,
@@ -6859,7 +1834,7 @@ static const OnigCodePoint CR_Ll[] = {
0x0527, 0x0527,
0x0561, 0x0587,
0x1d00, 0x1d2b,
- 0x1d6b, 0x1d77,
+ 0x1d62, 0x1d77,
0x1d79, 0x1d9a,
0x1e01, 0x1e01,
0x1e03, 0x1e03,
@@ -7023,7 +1998,7 @@ static const OnigCodePoint CR_Ll[] = {
0x2c6c, 0x2c6c,
0x2c71, 0x2c71,
0x2c73, 0x2c74,
- 0x2c76, 0x2c7b,
+ 0x2c76, 0x2c7c,
0x2c81, 0x2c81,
0x2c83, 0x2c83,
0x2c85, 0x2c85,
@@ -7076,10 +2051,7 @@ static const OnigCodePoint CR_Ll[] = {
0x2ce3, 0x2ce4,
0x2cec, 0x2cec,
0x2cee, 0x2cee,
- 0x2cf3, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa641, 0xa641,
0xa643, 0xa643,
0xa645, 0xa645,
@@ -7164,7 +2136,6 @@ static const OnigCodePoint CR_Ll[] = {
0xa78c, 0xa78c,
0xa78e, 0xa78e,
0xa791, 0xa791,
- 0xa793, 0xa793,
0xa7a1, 0xa7a1,
0xa7a3, 0xa7a3,
0xa7a5, 0xa7a5,
@@ -7207,7 +2178,7 @@ static const OnigCodePoint CR_Ll[] = {
/* 'Lm': General Category */
static const OnigCodePoint CR_Lm[] = {
- 52,
+ 49,
0x02b0, 0x02c1,
0x02c6, 0x02d1,
0x02e0, 0x02e4,
@@ -7231,13 +2202,13 @@ static const OnigCodePoint CR_Lm[] = {
0x1843, 0x1843,
0x1aa7, 0x1aa7,
0x1c78, 0x1c7d,
- 0x1d2c, 0x1d6a,
+ 0x1d2c, 0x1d61,
0x1d78, 0x1d78,
0x1d9b, 0x1dbf,
0x2071, 0x2071,
0x207f, 0x207f,
0x2090, 0x209c,
- 0x2c7c, 0x2c7d,
+ 0x2c7d, 0x2c7d,
0x2d6f, 0x2d6f,
0x2e2f, 0x2e2f,
0x3005, 0x3005,
@@ -7252,21 +2223,16 @@ static const OnigCodePoint CR_Lm[] = {
0xa717, 0xa71f,
0xa770, 0xa770,
0xa788, 0xa788,
- 0xa7f8, 0xa7f9,
0xa9cf, 0xa9cf,
0xaa70, 0xaa70,
0xaadd, 0xaadd,
- 0xaaf3, 0xaaf4,
0xff70, 0xff70,
0xff9e, 0xff9f,
- 0x16f93, 0x16f9f,
}; /* CR_Lm */
/* 'Lo': General Category */
static const OnigCodePoint CR_Lo[] = {
- 371,
- 0x00aa, 0x00aa,
- 0x00ba, 0x00ba,
+ 323,
0x01bb, 0x01bb,
0x01c0, 0x01c3,
0x0294, 0x0294,
@@ -7287,8 +2253,6 @@ static const OnigCodePoint CR_Lo[] = {
0x07ca, 0x07ea,
0x0800, 0x0815,
0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -7393,7 +2357,7 @@ static const OnigCodePoint CR_Lo[] = {
0x0eb2, 0x0eb3,
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f40, 0x0f47,
0x0f49, 0x0f6c,
@@ -7408,7 +2372,7 @@ static const OnigCodePoint CR_Lo[] = {
0x1075, 0x1081,
0x108e, 0x108e,
0x10d0, 0x10fa,
- 0x10fd, 0x1248,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -7454,15 +2418,14 @@ static const OnigCodePoint CR_Lo[] = {
0x1b45, 0x1b4b,
0x1b83, 0x1ba0,
0x1bae, 0x1baf,
- 0x1bba, 0x1be5,
+ 0x1bc0, 0x1be5,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c77,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
- 0x1cf5, 0x1cf6,
0x2135, 0x2138,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
0x2da8, 0x2dae,
@@ -7483,7 +2446,7 @@ static const OnigCodePoint CR_Lo[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa014,
0xa016, 0xa48c,
0xa4d0, 0xa4f7,
@@ -7517,8 +2480,6 @@ static const OnigCodePoint CR_Lo[] = {
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadc,
- 0xaae0, 0xaaea,
- 0xaaf2, 0xaaf2,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -7528,7 +2489,8 @@ static const OnigCodePoint CR_Lo[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb1d, 0xfb1d,
0xfb1f, 0xfb28,
@@ -7575,8 +2537,6 @@ static const OnigCodePoint CR_Lo[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -7588,50 +2548,10 @@ static const OnigCodePoint CR_Lo[] = {
0x10c00, 0x10c48,
0x11003, 0x11037,
0x11083, 0x110af,
- 0x110d0, 0x110e8,
- 0x11103, 0x11126,
- 0x11183, 0x111b2,
- 0x111c1, 0x111c4,
- 0x11680, 0x116aa,
0x12000, 0x1236e,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f50,
0x1b000, 0x1b001,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -7655,7 +2575,7 @@ static const OnigCodePoint CR_Lt[] = {
/* 'Lu': General Category */
static const OnigCodePoint CR_Lu[] = {
- 608,
+ 603,
0x0041, 0x005a,
0x00c0, 0x00d6,
0x00d8, 0x00de,
@@ -7924,8 +2844,6 @@ static const OnigCodePoint CR_Lu[] = {
0x0526, 0x0526,
0x0531, 0x0556,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1e00, 0x1e00,
0x1e02, 0x1e02,
0x1e04, 0x1e04,
@@ -8140,7 +3058,6 @@ static const OnigCodePoint CR_Lu[] = {
0x2ce2, 0x2ce2,
0x2ceb, 0x2ceb,
0x2ced, 0x2ced,
- 0x2cf2, 0x2cf2,
0xa640, 0xa640,
0xa642, 0xa642,
0xa644, 0xa644,
@@ -8224,13 +3141,11 @@ static const OnigCodePoint CR_Lu[] = {
0xa78b, 0xa78b,
0xa78d, 0xa78d,
0xa790, 0xa790,
- 0xa792, 0xa792,
0xa7a0, 0xa7a0,
0xa7a2, 0xa7a2,
0xa7a4, 0xa7a4,
0xa7a6, 0xa7a6,
0xa7a8, 0xa7a8,
- 0xa7aa, 0xa7aa,
0xff21, 0xff3a,
0x10400, 0x10427,
0x1d400, 0x1d419,
@@ -8268,7 +3183,7 @@ static const OnigCodePoint CR_Lu[] = {
/* 'M': Major Category */
static const OnigCodePoint CR_M[] = {
- 204,
+ 193,
0x0300, 0x036f,
0x0483, 0x0489,
0x0591, 0x05bd,
@@ -8292,7 +3207,6 @@ static const OnigCodePoint CR_M[] = {
0x0825, 0x0827,
0x0829, 0x082d,
0x0859, 0x085b,
- 0x08e4, 0x08fe,
0x0900, 0x0903,
0x093a, 0x093c,
0x093e, 0x094f,
@@ -8387,7 +3301,7 @@ static const OnigCodePoint CR_M[] = {
0x1732, 0x1734,
0x1752, 0x1753,
0x1772, 0x1773,
- 0x17b4, 0x17d3,
+ 0x17b6, 0x17d3,
0x17dd, 0x17dd,
0x180b, 0x180d,
0x18a9, 0x18a9,
@@ -8403,13 +3317,13 @@ static const OnigCodePoint CR_M[] = {
0x1b34, 0x1b44,
0x1b6b, 0x1b73,
0x1b80, 0x1b82,
- 0x1ba1, 0x1bad,
+ 0x1ba1, 0x1baa,
0x1be6, 0x1bf3,
0x1c24, 0x1c37,
0x1cd0, 0x1cd2,
0x1cd4, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf2, 0x1cf4,
+ 0x1cf2, 0x1cf2,
0x1dc0, 0x1de6,
0x1dfc, 0x1dff,
0x20d0, 0x20f0,
@@ -8419,8 +3333,7 @@ static const OnigCodePoint CR_M[] = {
0x302a, 0x302f,
0x3099, 0x309a,
0xa66f, 0xa672,
- 0xa674, 0xa67d,
- 0xa69f, 0xa69f,
+ 0xa67c, 0xa67d,
0xa6f0, 0xa6f1,
0xa802, 0xa802,
0xa806, 0xa806,
@@ -8442,8 +3355,6 @@ static const OnigCodePoint CR_M[] = {
0xaab7, 0xaab8,
0xaabe, 0xaabf,
0xaac1, 0xaac1,
- 0xaaeb, 0xaaef,
- 0xaaf5, 0xaaf6,
0xabe3, 0xabea,
0xabec, 0xabed,
0xfb1e, 0xfb1e,
@@ -8459,13 +3370,6 @@ static const OnigCodePoint CR_M[] = {
0x11038, 0x11046,
0x11080, 0x11082,
0x110b0, 0x110ba,
- 0x11100, 0x11102,
- 0x11127, 0x11134,
- 0x11180, 0x11182,
- 0x111b3, 0x111c0,
- 0x116ab, 0x116b7,
- 0x16f51, 0x16f7e,
- 0x16f8f, 0x16f92,
0x1d165, 0x1d169,
0x1d16d, 0x1d172,
0x1d17b, 0x1d182,
@@ -8477,7 +3381,7 @@ static const OnigCodePoint CR_M[] = {
/* 'Mc': General Category */
static const OnigCodePoint CR_Mc[] = {
- 126,
+ 113,
0x0903, 0x0903,
0x093b, 0x093b,
0x093e, 0x0940,
@@ -8559,7 +3463,6 @@ static const OnigCodePoint CR_Mc[] = {
0x1ba1, 0x1ba1,
0x1ba6, 0x1ba7,
0x1baa, 0x1baa,
- 0x1bac, 0x1bad,
0x1be7, 0x1be7,
0x1bea, 0x1bec,
0x1bee, 0x1bee,
@@ -8567,8 +3470,7 @@ static const OnigCodePoint CR_Mc[] = {
0x1c24, 0x1c2b,
0x1c34, 0x1c35,
0x1ce1, 0x1ce1,
- 0x1cf2, 0x1cf3,
- 0x302e, 0x302f,
+ 0x1cf2, 0x1cf2,
0xa823, 0xa824,
0xa827, 0xa827,
0xa880, 0xa881,
@@ -8582,9 +3484,6 @@ static const OnigCodePoint CR_Mc[] = {
0xaa33, 0xaa34,
0xaa4d, 0xaa4d,
0xaa7b, 0xaa7b,
- 0xaaeb, 0xaaeb,
- 0xaaee, 0xaaef,
- 0xaaf5, 0xaaf5,
0xabe3, 0xabe4,
0xabe6, 0xabe7,
0xabe9, 0xabea,
@@ -8594,14 +3493,6 @@ static const OnigCodePoint CR_Mc[] = {
0x11082, 0x11082,
0x110b0, 0x110b2,
0x110b7, 0x110b8,
- 0x1112c, 0x1112c,
- 0x11182, 0x11182,
- 0x111b3, 0x111b5,
- 0x111bf, 0x111c0,
- 0x116ac, 0x116ac,
- 0x116ae, 0x116af,
- 0x116b6, 0x116b6,
- 0x16f51, 0x16f7e,
0x1d165, 0x1d166,
0x1d16d, 0x1d172,
}; /* CR_Mc */
@@ -8617,7 +3508,7 @@ static const OnigCodePoint CR_Me[] = {
/* 'Mn': General Category */
static const OnigCodePoint CR_Mn[] = {
- 220,
+ 203,
0x0300, 0x036f,
0x0483, 0x0487,
0x0591, 0x05bd,
@@ -8641,7 +3532,6 @@ static const OnigCodePoint CR_Mn[] = {
0x0825, 0x0827,
0x0829, 0x082d,
0x0859, 0x085b,
- 0x08e4, 0x08fe,
0x0900, 0x0902,
0x093a, 0x093a,
0x093c, 0x093c,
@@ -8727,7 +3617,6 @@ static const OnigCodePoint CR_Mn[] = {
0x1732, 0x1734,
0x1752, 0x1753,
0x1772, 0x1773,
- 0x17b4, 0x17b5,
0x17b7, 0x17bd,
0x17c6, 0x17c6,
0x17c9, 0x17d3,
@@ -8755,7 +3644,6 @@ static const OnigCodePoint CR_Mn[] = {
0x1b80, 0x1b81,
0x1ba2, 0x1ba5,
0x1ba8, 0x1ba9,
- 0x1bab, 0x1bab,
0x1be6, 0x1be6,
0x1be8, 0x1be9,
0x1bed, 0x1bed,
@@ -8766,7 +3654,6 @@ static const OnigCodePoint CR_Mn[] = {
0x1cd4, 0x1ce0,
0x1ce2, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
0x1dc0, 0x1de6,
0x1dfc, 0x1dff,
0x20d0, 0x20dc,
@@ -8775,11 +3662,10 @@ static const OnigCodePoint CR_Mn[] = {
0x2cef, 0x2cf1,
0x2d7f, 0x2d7f,
0x2de0, 0x2dff,
- 0x302a, 0x302d,
+ 0x302a, 0x302f,
0x3099, 0x309a,
0xa66f, 0xa66f,
- 0xa674, 0xa67d,
- 0xa69f, 0xa69f,
+ 0xa67c, 0xa67d,
0xa6f0, 0xa6f1,
0xa802, 0xa802,
0xa806, 0xa806,
@@ -8803,8 +3689,6 @@ static const OnigCodePoint CR_Mn[] = {
0xaab7, 0xaab8,
0xaabe, 0xaabf,
0xaac1, 0xaac1,
- 0xaaec, 0xaaed,
- 0xaaf6, 0xaaf6,
0xabe5, 0xabe5,
0xabe8, 0xabe8,
0xabed, 0xabed,
@@ -8822,16 +3706,6 @@ static const OnigCodePoint CR_Mn[] = {
0x11080, 0x11081,
0x110b3, 0x110b6,
0x110b9, 0x110ba,
- 0x11100, 0x11102,
- 0x11127, 0x1112b,
- 0x1112d, 0x11134,
- 0x11180, 0x11181,
- 0x111b6, 0x111be,
- 0x116ab, 0x116ab,
- 0x116ad, 0x116ad,
- 0x116b0, 0x116b5,
- 0x116b7, 0x116b7,
- 0x16f8f, 0x16f92,
0x1d167, 0x1d169,
0x1d17b, 0x1d182,
0x1d185, 0x1d18b,
@@ -8842,7 +3716,7 @@ static const OnigCodePoint CR_Mn[] = {
/* 'N': Major Category */
static const OnigCodePoint CR_N[] = {
- 88,
+ 83,
0x0030, 0x0039,
0x00b2, 0x00b3,
0x00b9, 0x00b9,
@@ -8894,7 +3768,6 @@ static const OnigCodePoint CR_N[] = {
0x3038, 0x303a,
0x3192, 0x3195,
0x3220, 0x3229,
- 0x3248, 0x324f,
0x3251, 0x325f,
0x3280, 0x3289,
0x32b1, 0x32bf,
@@ -8923,10 +3796,6 @@ static const OnigCodePoint CR_N[] = {
0x10b78, 0x10b7f,
0x10e60, 0x10e7e,
0x11052, 0x1106f,
- 0x110f0, 0x110f9,
- 0x11136, 0x1113f,
- 0x111d0, 0x111d9,
- 0x116c0, 0x116c9,
0x12400, 0x12462,
0x1d360, 0x1d371,
0x1d7ce, 0x1d7ff,
@@ -8934,7 +3803,47 @@ static const OnigCodePoint CR_N[] = {
}; /* CR_N */
/* 'Nd': General Category */
-#define CR_Nd CR_Digit
+static const OnigCodePoint CR_Nd[] = {
+ 38,
+ 0x0030, 0x0039,
+ 0x0660, 0x0669,
+ 0x06f0, 0x06f9,
+ 0x07c0, 0x07c9,
+ 0x0966, 0x096f,
+ 0x09e6, 0x09ef,
+ 0x0a66, 0x0a6f,
+ 0x0ae6, 0x0aef,
+ 0x0b66, 0x0b6f,
+ 0x0be6, 0x0bef,
+ 0x0c66, 0x0c6f,
+ 0x0ce6, 0x0cef,
+ 0x0d66, 0x0d6f,
+ 0x0e50, 0x0e59,
+ 0x0ed0, 0x0ed9,
+ 0x0f20, 0x0f29,
+ 0x1040, 0x1049,
+ 0x1090, 0x1099,
+ 0x17e0, 0x17e9,
+ 0x1810, 0x1819,
+ 0x1946, 0x194f,
+ 0x19d0, 0x19d9,
+ 0x1a80, 0x1a89,
+ 0x1a90, 0x1a99,
+ 0x1b50, 0x1b59,
+ 0x1bb0, 0x1bb9,
+ 0x1c40, 0x1c49,
+ 0x1c50, 0x1c59,
+ 0xa620, 0xa629,
+ 0xa8d0, 0xa8d9,
+ 0xa900, 0xa909,
+ 0xa9d0, 0xa9d9,
+ 0xaa50, 0xaa59,
+ 0xabf0, 0xabf9,
+ 0xff10, 0xff19,
+ 0x104a0, 0x104a9,
+ 0x11066, 0x1106f,
+ 0x1d7ce, 0x1d7ff,
+}; /* CR_Nd */
/* 'Nl': General Category */
static const OnigCodePoint CR_Nl[] = {
@@ -8955,7 +3864,7 @@ static const OnigCodePoint CR_Nl[] = {
/* 'No': General Category */
static const OnigCodePoint CR_No[] = {
- 42,
+ 41,
0x00b2, 0x00b3,
0x00b9, 0x00b9,
0x00bc, 0x00be,
@@ -8979,7 +3888,6 @@ static const OnigCodePoint CR_No[] = {
0x2cfd, 0x2cfd,
0x3192, 0x3195,
0x3220, 0x3229,
- 0x3248, 0x324f,
0x3251, 0x325f,
0x3280, 0x3289,
0x32b1, 0x32bf,
@@ -9001,7 +3909,142 @@ static const OnigCodePoint CR_No[] = {
}; /* CR_No */
/* 'P': Major Category */
-#define CR_P CR_Punct
+static const OnigCodePoint CR_P[] = {
+ 133,
+ 0x0021, 0x0023,
+ 0x0025, 0x002a,
+ 0x002c, 0x002f,
+ 0x003a, 0x003b,
+ 0x003f, 0x0040,
+ 0x005b, 0x005d,
+ 0x005f, 0x005f,
+ 0x007b, 0x007b,
+ 0x007d, 0x007d,
+ 0x00a1, 0x00a1,
+ 0x00ab, 0x00ab,
+ 0x00b7, 0x00b7,
+ 0x00bb, 0x00bb,
+ 0x00bf, 0x00bf,
+ 0x037e, 0x037e,
+ 0x0387, 0x0387,
+ 0x055a, 0x055f,
+ 0x0589, 0x058a,
+ 0x05be, 0x05be,
+ 0x05c0, 0x05c0,
+ 0x05c3, 0x05c3,
+ 0x05c6, 0x05c6,
+ 0x05f3, 0x05f4,
+ 0x0609, 0x060a,
+ 0x060c, 0x060d,
+ 0x061b, 0x061b,
+ 0x061e, 0x061f,
+ 0x066a, 0x066d,
+ 0x06d4, 0x06d4,
+ 0x0700, 0x070d,
+ 0x07f7, 0x07f9,
+ 0x0830, 0x083e,
+ 0x085e, 0x085e,
+ 0x0964, 0x0965,
+ 0x0970, 0x0970,
+ 0x0df4, 0x0df4,
+ 0x0e4f, 0x0e4f,
+ 0x0e5a, 0x0e5b,
+ 0x0f04, 0x0f12,
+ 0x0f3a, 0x0f3d,
+ 0x0f85, 0x0f85,
+ 0x0fd0, 0x0fd4,
+ 0x0fd9, 0x0fda,
+ 0x104a, 0x104f,
+ 0x10fb, 0x10fb,
+ 0x1361, 0x1368,
+ 0x1400, 0x1400,
+ 0x166d, 0x166e,
+ 0x169b, 0x169c,
+ 0x16eb, 0x16ed,
+ 0x1735, 0x1736,
+ 0x17d4, 0x17d6,
+ 0x17d8, 0x17da,
+ 0x1800, 0x180a,
+ 0x1944, 0x1945,
+ 0x1a1e, 0x1a1f,
+ 0x1aa0, 0x1aa6,
+ 0x1aa8, 0x1aad,
+ 0x1b5a, 0x1b60,
+ 0x1bfc, 0x1bff,
+ 0x1c3b, 0x1c3f,
+ 0x1c7e, 0x1c7f,
+ 0x1cd3, 0x1cd3,
+ 0x2010, 0x2027,
+ 0x2030, 0x2043,
+ 0x2045, 0x2051,
+ 0x2053, 0x205e,
+ 0x207d, 0x207e,
+ 0x208d, 0x208e,
+ 0x2329, 0x232a,
+ 0x2768, 0x2775,
+ 0x27c5, 0x27c6,
+ 0x27e6, 0x27ef,
+ 0x2983, 0x2998,
+ 0x29d8, 0x29db,
+ 0x29fc, 0x29fd,
+ 0x2cf9, 0x2cfc,
+ 0x2cfe, 0x2cff,
+ 0x2d70, 0x2d70,
+ 0x2e00, 0x2e2e,
+ 0x2e30, 0x2e31,
+ 0x3001, 0x3003,
+ 0x3008, 0x3011,
+ 0x3014, 0x301f,
+ 0x3030, 0x3030,
+ 0x303d, 0x303d,
+ 0x30a0, 0x30a0,
+ 0x30fb, 0x30fb,
+ 0xa4fe, 0xa4ff,
+ 0xa60d, 0xa60f,
+ 0xa673, 0xa673,
+ 0xa67e, 0xa67e,
+ 0xa6f2, 0xa6f7,
+ 0xa874, 0xa877,
+ 0xa8ce, 0xa8cf,
+ 0xa8f8, 0xa8fa,
+ 0xa92e, 0xa92f,
+ 0xa95f, 0xa95f,
+ 0xa9c1, 0xa9cd,
+ 0xa9de, 0xa9df,
+ 0xaa5c, 0xaa5f,
+ 0xaade, 0xaadf,
+ 0xabeb, 0xabeb,
+ 0xfd3e, 0xfd3f,
+ 0xfe10, 0xfe19,
+ 0xfe30, 0xfe52,
+ 0xfe54, 0xfe61,
+ 0xfe63, 0xfe63,
+ 0xfe68, 0xfe68,
+ 0xfe6a, 0xfe6b,
+ 0xff01, 0xff03,
+ 0xff05, 0xff0a,
+ 0xff0c, 0xff0f,
+ 0xff1a, 0xff1b,
+ 0xff1f, 0xff20,
+ 0xff3b, 0xff3d,
+ 0xff3f, 0xff3f,
+ 0xff5b, 0xff5b,
+ 0xff5d, 0xff5d,
+ 0xff5f, 0xff65,
+ 0x10100, 0x10101,
+ 0x1039f, 0x1039f,
+ 0x103d0, 0x103d0,
+ 0x10857, 0x10857,
+ 0x1091f, 0x1091f,
+ 0x1093f, 0x1093f,
+ 0x10a50, 0x10a58,
+ 0x10a7f, 0x10a7f,
+ 0x10b39, 0x10b3f,
+ 0x11047, 0x1104d,
+ 0x110bb, 0x110bc,
+ 0x110be, 0x110c1,
+ 0x12470, 0x12473,
+}; /* CR_P */
/* 'Pc': General Category */
static const OnigCodePoint CR_Pc[] = {
@@ -9016,7 +4059,7 @@ static const OnigCodePoint CR_Pc[] = {
/* 'Pd': General Category */
static const OnigCodePoint CR_Pd[] = {
- 16,
+ 15,
0x002d, 0x002d,
0x058a, 0x058a,
0x05be, 0x05be,
@@ -9025,7 +4068,6 @@ static const OnigCodePoint CR_Pd[] = {
0x2010, 0x2015,
0x2e17, 0x2e17,
0x2e1a, 0x2e1a,
- 0x2e3a, 0x2e3b,
0x301c, 0x301c,
0x3030, 0x3030,
0x30a0, 0x30a0,
@@ -9143,7 +4185,7 @@ static const OnigCodePoint CR_Pi[] = {
/* 'Po': General Category */
static const OnigCodePoint CR_Po[] = {
- 135,
+ 128,
0x0021, 0x0023,
0x0025, 0x0027,
0x002a, 0x002a,
@@ -9153,8 +4195,7 @@ static const OnigCodePoint CR_Po[] = {
0x003f, 0x0040,
0x005c, 0x005c,
0x00a1, 0x00a1,
- 0x00a7, 0x00a7,
- 0x00b6, 0x00b7,
+ 0x00b7, 0x00b7,
0x00bf, 0x00bf,
0x037e, 0x037e,
0x0387, 0x0387,
@@ -9176,18 +4217,16 @@ static const OnigCodePoint CR_Po[] = {
0x085e, 0x085e,
0x0964, 0x0965,
0x0970, 0x0970,
- 0x0af0, 0x0af0,
0x0df4, 0x0df4,
0x0e4f, 0x0e4f,
0x0e5a, 0x0e5b,
0x0f04, 0x0f12,
- 0x0f14, 0x0f14,
0x0f85, 0x0f85,
0x0fd0, 0x0fd4,
0x0fd9, 0x0fda,
0x104a, 0x104f,
0x10fb, 0x10fb,
- 0x1360, 0x1368,
+ 0x1361, 0x1368,
0x166d, 0x166e,
0x16eb, 0x16ed,
0x1735, 0x1736,
@@ -9203,7 +4242,6 @@ static const OnigCodePoint CR_Po[] = {
0x1bfc, 0x1bff,
0x1c3b, 0x1c3f,
0x1c7e, 0x1c7f,
- 0x1cc0, 0x1cc7,
0x1cd3, 0x1cd3,
0x2016, 0x2017,
0x2020, 0x2027,
@@ -9224,7 +4262,7 @@ static const OnigCodePoint CR_Po[] = {
0x2e1b, 0x2e1b,
0x2e1e, 0x2e1f,
0x2e2a, 0x2e2e,
- 0x2e30, 0x2e39,
+ 0x2e30, 0x2e31,
0x3001, 0x3003,
0x303d, 0x303d,
0x30fb, 0x30fb,
@@ -9242,7 +4280,6 @@ static const OnigCodePoint CR_Po[] = {
0xa9de, 0xa9df,
0xaa5c, 0xaa5f,
0xaade, 0xaadf,
- 0xaaf0, 0xaaf1,
0xabeb, 0xabeb,
0xfe10, 0xfe16,
0xfe19, 0xfe19,
@@ -9264,7 +4301,7 @@ static const OnigCodePoint CR_Po[] = {
0xff3c, 0xff3c,
0xff61, 0xff61,
0xff64, 0xff65,
- 0x10100, 0x10102,
+ 0x10100, 0x10101,
0x1039f, 0x1039f,
0x103d0, 0x103d0,
0x10857, 0x10857,
@@ -9276,8 +4313,6 @@ static const OnigCodePoint CR_Po[] = {
0x11047, 0x1104d,
0x110bb, 0x110bc,
0x110be, 0x110c1,
- 0x11140, 0x11143,
- 0x111c5, 0x111c8,
0x12470, 0x12473,
}; /* CR_Po */
@@ -9360,7 +4395,7 @@ static const OnigCodePoint CR_Ps[] = {
/* 'S': Major Category */
static const OnigCodePoint CR_S[] = {
- 198,
+ 208,
0x0024, 0x0024,
0x002b, 0x002b,
0x003c, 0x003e,
@@ -9368,11 +4403,11 @@ static const OnigCodePoint CR_S[] = {
0x0060, 0x0060,
0x007c, 0x007c,
0x007e, 0x007e,
- 0x00a2, 0x00a6,
- 0x00a8, 0x00a9,
+ 0x00a2, 0x00a9,
0x00ac, 0x00ac,
0x00ae, 0x00b1,
0x00b4, 0x00b4,
+ 0x00b6, 0x00b6,
0x00b8, 0x00b8,
0x00d7, 0x00d7,
0x00f7, 0x00f7,
@@ -9385,7 +4420,6 @@ static const OnigCodePoint CR_S[] = {
0x0384, 0x0385,
0x03f6, 0x03f6,
0x0482, 0x0482,
- 0x058f, 0x058f,
0x0606, 0x0608,
0x060b, 0x060b,
0x060e, 0x060f,
@@ -9402,8 +4436,7 @@ static const OnigCodePoint CR_S[] = {
0x0d79, 0x0d79,
0x0e3f, 0x0e3f,
0x0f01, 0x0f03,
- 0x0f13, 0x0f13,
- 0x0f15, 0x0f17,
+ 0x0f13, 0x0f17,
0x0f1a, 0x0f1f,
0x0f34, 0x0f34,
0x0f36, 0x0f36,
@@ -9413,6 +4446,7 @@ static const OnigCodePoint CR_S[] = {
0x0fce, 0x0fcf,
0x0fd5, 0x0fd8,
0x109e, 0x109f,
+ 0x1360, 0x1360,
0x1390, 0x1399,
0x17db, 0x17db,
0x1940, 0x1940,
@@ -9452,7 +4486,9 @@ static const OnigCodePoint CR_S[] = {
0x2500, 0x26ff,
0x2701, 0x2767,
0x2794, 0x27c4,
- 0x27c7, 0x27e5,
+ 0x27c7, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x27e5,
0x27f0, 0x2982,
0x2999, 0x29d7,
0x29dc, 0x29fb,
@@ -9473,8 +4509,7 @@ static const OnigCodePoint CR_S[] = {
0x3196, 0x319f,
0x31c0, 0x31e3,
0x3200, 0x321e,
- 0x322a, 0x3247,
- 0x3250, 0x3250,
+ 0x322a, 0x3250,
0x3260, 0x327f,
0x328a, 0x32b0,
0x32c0, 0x32fe,
@@ -9503,6 +4538,7 @@ static const OnigCodePoint CR_S[] = {
0xffe0, 0xffe6,
0xffe8, 0xffee,
0xfffc, 0xfffd,
+ 0x10102, 0x10102,
0x10137, 0x1013f,
0x10179, 0x10189,
0x10190, 0x1019b,
@@ -9527,7 +4563,6 @@ static const OnigCodePoint CR_S[] = {
0x1d789, 0x1d789,
0x1d7a9, 0x1d7a9,
0x1d7c3, 0x1d7c3,
- 0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
@@ -9535,7 +4570,7 @@ static const OnigCodePoint CR_S[] = {
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0df,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -9553,9 +4588,19 @@ static const OnigCodePoint CR_S[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -9563,10 +4608,9 @@ static const OnigCodePoint CR_S[] = {
/* 'Sc': General Category */
static const OnigCodePoint CR_Sc[] = {
- 17,
+ 16,
0x0024, 0x0024,
0x00a2, 0x00a5,
- 0x058f, 0x058f,
0x060b, 0x060b,
0x09f2, 0x09f3,
0x09fb, 0x09fb,
@@ -9617,7 +4661,7 @@ static const OnigCodePoint CR_Sk[] = {
/* 'Sm': General Category */
static const OnigCodePoint CR_Sm[] = {
- 65,
+ 66,
0x002b, 0x002b,
0x003c, 0x003e,
0x007c, 0x007c,
@@ -9655,7 +4699,9 @@ static const OnigCodePoint CR_Sm[] = {
0x25f8, 0x25ff,
0x266f, 0x266f,
0x27c0, 0x27c4,
- 0x27c7, 0x27e5,
+ 0x27c7, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x27e5,
0x27f0, 0x27ff,
0x2900, 0x2982,
0x2999, 0x29d7,
@@ -9682,16 +4728,16 @@ static const OnigCodePoint CR_Sm[] = {
0x1d789, 0x1d789,
0x1d7a9, 0x1d7a9,
0x1d7c3, 0x1d7c3,
- 0x1eef0, 0x1eef1,
}; /* CR_Sm */
/* 'So': General Category */
static const OnigCodePoint CR_So[] = {
- 153,
- 0x00a6, 0x00a6,
+ 164,
+ 0x00a6, 0x00a7,
0x00a9, 0x00a9,
0x00ae, 0x00ae,
0x00b0, 0x00b0,
+ 0x00b6, 0x00b6,
0x0482, 0x0482,
0x060e, 0x060f,
0x06de, 0x06de,
@@ -9705,8 +4751,7 @@ static const OnigCodePoint CR_So[] = {
0x0c7f, 0x0c7f,
0x0d79, 0x0d79,
0x0f01, 0x0f03,
- 0x0f13, 0x0f13,
- 0x0f15, 0x0f17,
+ 0x0f13, 0x0f17,
0x0f1a, 0x0f1f,
0x0f34, 0x0f34,
0x0f36, 0x0f36,
@@ -9716,6 +4761,7 @@ static const OnigCodePoint CR_So[] = {
0x0fce, 0x0fcf,
0x0fd5, 0x0fd8,
0x109e, 0x109f,
+ 0x1360, 0x1360,
0x1390, 0x1399,
0x1940, 0x1940,
0x19de, 0x19ff,
@@ -9779,8 +4825,7 @@ static const OnigCodePoint CR_So[] = {
0x3196, 0x319f,
0x31c0, 0x31e3,
0x3200, 0x321e,
- 0x322a, 0x3247,
- 0x3250, 0x3250,
+ 0x322a, 0x3250,
0x3260, 0x327f,
0x328a, 0x32b0,
0x32c0, 0x32fe,
@@ -9796,6 +4841,7 @@ static const OnigCodePoint CR_So[] = {
0xffe8, 0xffe8,
0xffed, 0xffee,
0xfffc, 0xfffd,
+ 0x10102, 0x10102,
0x10137, 0x1013f,
0x10179, 0x10189,
0x10190, 0x1019b,
@@ -9817,7 +4863,7 @@ static const OnigCodePoint CR_So[] = {
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0df,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -9835,9 +4881,19 @@ static const OnigCodePoint CR_So[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -9884,7 +4940,7 @@ static const OnigCodePoint CR_Zs[] = {
/* 'Math': Derived Property */
static const OnigCodePoint CR_Math[] = {
- 138,
+ 106,
0x002b, 0x002b,
0x003c, 0x003e,
0x005e, 0x005e,
@@ -9953,7 +5009,9 @@ static const OnigCodePoint CR_Math[] = {
0x2642, 0x2642,
0x2660, 0x2663,
0x266d, 0x266f,
- 0x27c0, 0x27ff,
+ 0x27c0, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x27ff,
0x2900, 0x2aff,
0x2b30, 0x2b44,
0x2b47, 0x2b4c,
@@ -9989,54 +5047,1729 @@ static const OnigCodePoint CR_Math[] = {
0x1d552, 0x1d6a5,
0x1d6a8, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
}; /* CR_Math */
/* 'Alphabetic': Derived Property */
-#define CR_Alphabetic CR_Alpha
+static const OnigCodePoint CR_Alphabetic[] = {
+ 486,
+ 0x0041, 0x005a,
+ 0x0061, 0x007a,
+ 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
+ 0x00c0, 0x00d6,
+ 0x00d8, 0x00f6,
+ 0x00f8, 0x02c1,
+ 0x02c6, 0x02d1,
+ 0x02e0, 0x02e4,
+ 0x02ec, 0x02ec,
+ 0x02ee, 0x02ee,
+ 0x0345, 0x0345,
+ 0x0370, 0x0374,
+ 0x0376, 0x0377,
+ 0x037a, 0x037d,
+ 0x0386, 0x0386,
+ 0x0388, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x03a1,
+ 0x03a3, 0x03f5,
+ 0x03f7, 0x0481,
+ 0x048a, 0x0527,
+ 0x0531, 0x0556,
+ 0x0559, 0x0559,
+ 0x0561, 0x0587,
+ 0x05b0, 0x05bd,
+ 0x05bf, 0x05bf,
+ 0x05c1, 0x05c2,
+ 0x05c4, 0x05c5,
+ 0x05c7, 0x05c7,
+ 0x05d0, 0x05ea,
+ 0x05f0, 0x05f2,
+ 0x0610, 0x061a,
+ 0x0620, 0x0657,
+ 0x0659, 0x065f,
+ 0x066e, 0x06d3,
+ 0x06d5, 0x06dc,
+ 0x06e1, 0x06e8,
+ 0x06ed, 0x06ef,
+ 0x06fa, 0x06fc,
+ 0x06ff, 0x06ff,
+ 0x0710, 0x073f,
+ 0x074d, 0x07b1,
+ 0x07ca, 0x07ea,
+ 0x07f4, 0x07f5,
+ 0x07fa, 0x07fa,
+ 0x0800, 0x0817,
+ 0x081a, 0x082c,
+ 0x0840, 0x0858,
+ 0x0900, 0x093b,
+ 0x093d, 0x094c,
+ 0x094e, 0x0950,
+ 0x0955, 0x0963,
+ 0x0971, 0x0977,
+ 0x0979, 0x097f,
+ 0x0981, 0x0983,
+ 0x0985, 0x098c,
+ 0x098f, 0x0990,
+ 0x0993, 0x09a8,
+ 0x09aa, 0x09b0,
+ 0x09b2, 0x09b2,
+ 0x09b6, 0x09b9,
+ 0x09bd, 0x09c4,
+ 0x09c7, 0x09c8,
+ 0x09cb, 0x09cc,
+ 0x09ce, 0x09ce,
+ 0x09d7, 0x09d7,
+ 0x09dc, 0x09dd,
+ 0x09df, 0x09e3,
+ 0x09f0, 0x09f1,
+ 0x0a01, 0x0a03,
+ 0x0a05, 0x0a0a,
+ 0x0a0f, 0x0a10,
+ 0x0a13, 0x0a28,
+ 0x0a2a, 0x0a30,
+ 0x0a32, 0x0a33,
+ 0x0a35, 0x0a36,
+ 0x0a38, 0x0a39,
+ 0x0a3e, 0x0a42,
+ 0x0a47, 0x0a48,
+ 0x0a4b, 0x0a4c,
+ 0x0a51, 0x0a51,
+ 0x0a59, 0x0a5c,
+ 0x0a5e, 0x0a5e,
+ 0x0a70, 0x0a75,
+ 0x0a81, 0x0a83,
+ 0x0a85, 0x0a8d,
+ 0x0a8f, 0x0a91,
+ 0x0a93, 0x0aa8,
+ 0x0aaa, 0x0ab0,
+ 0x0ab2, 0x0ab3,
+ 0x0ab5, 0x0ab9,
+ 0x0abd, 0x0ac5,
+ 0x0ac7, 0x0ac9,
+ 0x0acb, 0x0acc,
+ 0x0ad0, 0x0ad0,
+ 0x0ae0, 0x0ae3,
+ 0x0b01, 0x0b03,
+ 0x0b05, 0x0b0c,
+ 0x0b0f, 0x0b10,
+ 0x0b13, 0x0b28,
+ 0x0b2a, 0x0b30,
+ 0x0b32, 0x0b33,
+ 0x0b35, 0x0b39,
+ 0x0b3d, 0x0b44,
+ 0x0b47, 0x0b48,
+ 0x0b4b, 0x0b4c,
+ 0x0b56, 0x0b57,
+ 0x0b5c, 0x0b5d,
+ 0x0b5f, 0x0b63,
+ 0x0b71, 0x0b71,
+ 0x0b82, 0x0b83,
+ 0x0b85, 0x0b8a,
+ 0x0b8e, 0x0b90,
+ 0x0b92, 0x0b95,
+ 0x0b99, 0x0b9a,
+ 0x0b9c, 0x0b9c,
+ 0x0b9e, 0x0b9f,
+ 0x0ba3, 0x0ba4,
+ 0x0ba8, 0x0baa,
+ 0x0bae, 0x0bb9,
+ 0x0bbe, 0x0bc2,
+ 0x0bc6, 0x0bc8,
+ 0x0bca, 0x0bcc,
+ 0x0bd0, 0x0bd0,
+ 0x0bd7, 0x0bd7,
+ 0x0c01, 0x0c03,
+ 0x0c05, 0x0c0c,
+ 0x0c0e, 0x0c10,
+ 0x0c12, 0x0c28,
+ 0x0c2a, 0x0c33,
+ 0x0c35, 0x0c39,
+ 0x0c3d, 0x0c44,
+ 0x0c46, 0x0c48,
+ 0x0c4a, 0x0c4c,
+ 0x0c55, 0x0c56,
+ 0x0c58, 0x0c59,
+ 0x0c60, 0x0c63,
+ 0x0c82, 0x0c83,
+ 0x0c85, 0x0c8c,
+ 0x0c8e, 0x0c90,
+ 0x0c92, 0x0ca8,
+ 0x0caa, 0x0cb3,
+ 0x0cb5, 0x0cb9,
+ 0x0cbd, 0x0cc4,
+ 0x0cc6, 0x0cc8,
+ 0x0cca, 0x0ccc,
+ 0x0cd5, 0x0cd6,
+ 0x0cde, 0x0cde,
+ 0x0ce0, 0x0ce3,
+ 0x0cf1, 0x0cf2,
+ 0x0d02, 0x0d03,
+ 0x0d05, 0x0d0c,
+ 0x0d0e, 0x0d10,
+ 0x0d12, 0x0d3a,
+ 0x0d3d, 0x0d44,
+ 0x0d46, 0x0d48,
+ 0x0d4a, 0x0d4c,
+ 0x0d4e, 0x0d4e,
+ 0x0d57, 0x0d57,
+ 0x0d60, 0x0d63,
+ 0x0d7a, 0x0d7f,
+ 0x0d82, 0x0d83,
+ 0x0d85, 0x0d96,
+ 0x0d9a, 0x0db1,
+ 0x0db3, 0x0dbb,
+ 0x0dbd, 0x0dbd,
+ 0x0dc0, 0x0dc6,
+ 0x0dcf, 0x0dd4,
+ 0x0dd6, 0x0dd6,
+ 0x0dd8, 0x0ddf,
+ 0x0df2, 0x0df3,
+ 0x0e01, 0x0e3a,
+ 0x0e40, 0x0e46,
+ 0x0e4d, 0x0e4d,
+ 0x0e81, 0x0e82,
+ 0x0e84, 0x0e84,
+ 0x0e87, 0x0e88,
+ 0x0e8a, 0x0e8a,
+ 0x0e8d, 0x0e8d,
+ 0x0e94, 0x0e97,
+ 0x0e99, 0x0e9f,
+ 0x0ea1, 0x0ea3,
+ 0x0ea5, 0x0ea5,
+ 0x0ea7, 0x0ea7,
+ 0x0eaa, 0x0eab,
+ 0x0ead, 0x0eb9,
+ 0x0ebb, 0x0ebd,
+ 0x0ec0, 0x0ec4,
+ 0x0ec6, 0x0ec6,
+ 0x0ecd, 0x0ecd,
+ 0x0edc, 0x0edd,
+ 0x0f00, 0x0f00,
+ 0x0f40, 0x0f47,
+ 0x0f49, 0x0f6c,
+ 0x0f71, 0x0f81,
+ 0x0f88, 0x0f97,
+ 0x0f99, 0x0fbc,
+ 0x1000, 0x1036,
+ 0x1038, 0x1038,
+ 0x103b, 0x103f,
+ 0x1050, 0x1062,
+ 0x1065, 0x1068,
+ 0x106e, 0x1086,
+ 0x108e, 0x108e,
+ 0x109c, 0x109d,
+ 0x10a0, 0x10c5,
+ 0x10d0, 0x10fa,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
+ 0x124a, 0x124d,
+ 0x1250, 0x1256,
+ 0x1258, 0x1258,
+ 0x125a, 0x125d,
+ 0x1260, 0x1288,
+ 0x128a, 0x128d,
+ 0x1290, 0x12b0,
+ 0x12b2, 0x12b5,
+ 0x12b8, 0x12be,
+ 0x12c0, 0x12c0,
+ 0x12c2, 0x12c5,
+ 0x12c8, 0x12d6,
+ 0x12d8, 0x1310,
+ 0x1312, 0x1315,
+ 0x1318, 0x135a,
+ 0x135f, 0x135f,
+ 0x1380, 0x138f,
+ 0x13a0, 0x13f4,
+ 0x1401, 0x166c,
+ 0x166f, 0x167f,
+ 0x1681, 0x169a,
+ 0x16a0, 0x16ea,
+ 0x16ee, 0x16f0,
+ 0x1700, 0x170c,
+ 0x170e, 0x1713,
+ 0x1720, 0x1733,
+ 0x1740, 0x1753,
+ 0x1760, 0x176c,
+ 0x176e, 0x1770,
+ 0x1772, 0x1773,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17c8,
+ 0x17d7, 0x17d7,
+ 0x17dc, 0x17dc,
+ 0x1820, 0x1877,
+ 0x1880, 0x18aa,
+ 0x18b0, 0x18f5,
+ 0x1900, 0x191c,
+ 0x1920, 0x192b,
+ 0x1930, 0x1938,
+ 0x1950, 0x196d,
+ 0x1970, 0x1974,
+ 0x1980, 0x19ab,
+ 0x19b0, 0x19c9,
+ 0x1a00, 0x1a1b,
+ 0x1a20, 0x1a5e,
+ 0x1a61, 0x1a74,
+ 0x1aa7, 0x1aa7,
+ 0x1b00, 0x1b33,
+ 0x1b35, 0x1b43,
+ 0x1b45, 0x1b4b,
+ 0x1b80, 0x1ba9,
+ 0x1bae, 0x1baf,
+ 0x1bc0, 0x1be5,
+ 0x1be7, 0x1bf1,
+ 0x1c00, 0x1c35,
+ 0x1c4d, 0x1c4f,
+ 0x1c5a, 0x1c7d,
+ 0x1ce9, 0x1cec,
+ 0x1cee, 0x1cf2,
+ 0x1d00, 0x1dbf,
+ 0x1e00, 0x1f15,
+ 0x1f18, 0x1f1d,
+ 0x1f20, 0x1f45,
+ 0x1f48, 0x1f4d,
+ 0x1f50, 0x1f57,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f7d,
+ 0x1f80, 0x1fb4,
+ 0x1fb6, 0x1fbc,
+ 0x1fbe, 0x1fbe,
+ 0x1fc2, 0x1fc4,
+ 0x1fc6, 0x1fcc,
+ 0x1fd0, 0x1fd3,
+ 0x1fd6, 0x1fdb,
+ 0x1fe0, 0x1fec,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ffc,
+ 0x2071, 0x2071,
+ 0x207f, 0x207f,
+ 0x2090, 0x209c,
+ 0x2102, 0x2102,
+ 0x2107, 0x2107,
+ 0x210a, 0x2113,
+ 0x2115, 0x2115,
+ 0x2119, 0x211d,
+ 0x2124, 0x2124,
+ 0x2126, 0x2126,
+ 0x2128, 0x2128,
+ 0x212a, 0x212d,
+ 0x212f, 0x2139,
+ 0x213c, 0x213f,
+ 0x2145, 0x2149,
+ 0x214e, 0x214e,
+ 0x2160, 0x2188,
+ 0x24b6, 0x24e9,
+ 0x2c00, 0x2c2e,
+ 0x2c30, 0x2c5e,
+ 0x2c60, 0x2ce4,
+ 0x2ceb, 0x2cee,
+ 0x2d00, 0x2d25,
+ 0x2d30, 0x2d65,
+ 0x2d6f, 0x2d6f,
+ 0x2d80, 0x2d96,
+ 0x2da0, 0x2da6,
+ 0x2da8, 0x2dae,
+ 0x2db0, 0x2db6,
+ 0x2db8, 0x2dbe,
+ 0x2dc0, 0x2dc6,
+ 0x2dc8, 0x2dce,
+ 0x2dd0, 0x2dd6,
+ 0x2dd8, 0x2dde,
+ 0x2de0, 0x2dff,
+ 0x2e2f, 0x2e2f,
+ 0x3005, 0x3007,
+ 0x3021, 0x3029,
+ 0x3031, 0x3035,
+ 0x3038, 0x303c,
+ 0x3041, 0x3096,
+ 0x309d, 0x309f,
+ 0x30a1, 0x30fa,
+ 0x30fc, 0x30ff,
+ 0x3105, 0x312d,
+ 0x3131, 0x318e,
+ 0x31a0, 0x31ba,
+ 0x31f0, 0x31ff,
+ 0x3400, 0x4db5,
+ 0x4e00, 0x9fcb,
+ 0xa000, 0xa48c,
+ 0xa4d0, 0xa4fd,
+ 0xa500, 0xa60c,
+ 0xa610, 0xa61f,
+ 0xa62a, 0xa62b,
+ 0xa640, 0xa66e,
+ 0xa67f, 0xa697,
+ 0xa6a0, 0xa6ef,
+ 0xa717, 0xa71f,
+ 0xa722, 0xa788,
+ 0xa78b, 0xa78e,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
+ 0xa803, 0xa805,
+ 0xa807, 0xa80a,
+ 0xa80c, 0xa827,
+ 0xa840, 0xa873,
+ 0xa880, 0xa8c3,
+ 0xa8f2, 0xa8f7,
+ 0xa8fb, 0xa8fb,
+ 0xa90a, 0xa92a,
+ 0xa930, 0xa952,
+ 0xa960, 0xa97c,
+ 0xa980, 0xa9b2,
+ 0xa9b4, 0xa9bf,
+ 0xa9cf, 0xa9cf,
+ 0xaa00, 0xaa36,
+ 0xaa40, 0xaa4d,
+ 0xaa60, 0xaa76,
+ 0xaa7a, 0xaa7a,
+ 0xaa80, 0xaabe,
+ 0xaac0, 0xaac0,
+ 0xaac2, 0xaac2,
+ 0xaadb, 0xaadd,
+ 0xab01, 0xab06,
+ 0xab09, 0xab0e,
+ 0xab11, 0xab16,
+ 0xab20, 0xab26,
+ 0xab28, 0xab2e,
+ 0xabc0, 0xabea,
+ 0xac00, 0xd7a3,
+ 0xd7b0, 0xd7c6,
+ 0xd7cb, 0xd7fb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
+ 0xfa70, 0xfad9,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xfb1d, 0xfb28,
+ 0xfb2a, 0xfb36,
+ 0xfb38, 0xfb3c,
+ 0xfb3e, 0xfb3e,
+ 0xfb40, 0xfb41,
+ 0xfb43, 0xfb44,
+ 0xfb46, 0xfbb1,
+ 0xfbd3, 0xfd3d,
+ 0xfd50, 0xfd8f,
+ 0xfd92, 0xfdc7,
+ 0xfdf0, 0xfdfb,
+ 0xfe70, 0xfe74,
+ 0xfe76, 0xfefc,
+ 0xff21, 0xff3a,
+ 0xff41, 0xff5a,
+ 0xff66, 0xffbe,
+ 0xffc2, 0xffc7,
+ 0xffca, 0xffcf,
+ 0xffd2, 0xffd7,
+ 0xffda, 0xffdc,
+ 0x10000, 0x1000b,
+ 0x1000d, 0x10026,
+ 0x10028, 0x1003a,
+ 0x1003c, 0x1003d,
+ 0x1003f, 0x1004d,
+ 0x10050, 0x1005d,
+ 0x10080, 0x100fa,
+ 0x10140, 0x10174,
+ 0x10280, 0x1029c,
+ 0x102a0, 0x102d0,
+ 0x10300, 0x1031e,
+ 0x10330, 0x1034a,
+ 0x10380, 0x1039d,
+ 0x103a0, 0x103c3,
+ 0x103c8, 0x103cf,
+ 0x103d1, 0x103d5,
+ 0x10400, 0x1049d,
+ 0x10800, 0x10805,
+ 0x10808, 0x10808,
+ 0x1080a, 0x10835,
+ 0x10837, 0x10838,
+ 0x1083c, 0x1083c,
+ 0x1083f, 0x10855,
+ 0x10900, 0x10915,
+ 0x10920, 0x10939,
+ 0x10a00, 0x10a03,
+ 0x10a05, 0x10a06,
+ 0x10a0c, 0x10a13,
+ 0x10a15, 0x10a17,
+ 0x10a19, 0x10a33,
+ 0x10a60, 0x10a7c,
+ 0x10b00, 0x10b35,
+ 0x10b40, 0x10b55,
+ 0x10b60, 0x10b72,
+ 0x10c00, 0x10c48,
+ 0x11000, 0x11045,
+ 0x11082, 0x110b8,
+ 0x12000, 0x1236e,
+ 0x12400, 0x12462,
+ 0x13000, 0x1342e,
+ 0x16800, 0x16a38,
+ 0x1b000, 0x1b001,
+ 0x1d400, 0x1d454,
+ 0x1d456, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d51e, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d552, 0x1d6a5,
+ 0x1d6a8, 0x1d6c0,
+ 0x1d6c2, 0x1d6da,
+ 0x1d6dc, 0x1d6fa,
+ 0x1d6fc, 0x1d714,
+ 0x1d716, 0x1d734,
+ 0x1d736, 0x1d74e,
+ 0x1d750, 0x1d76e,
+ 0x1d770, 0x1d788,
+ 0x1d78a, 0x1d7a8,
+ 0x1d7aa, 0x1d7c2,
+ 0x1d7c4, 0x1d7cb,
+ 0x20000, 0x2a6d6,
+ 0x2a700, 0x2b734,
+ 0x2b740, 0x2b81d,
+ 0x2f800, 0x2fa1d,
+}; /* CR_Alphabetic */
/* 'Lowercase': Derived Property */
-#define CR_Lowercase CR_Lower
+static const OnigCodePoint CR_Lowercase[] = {
+ 612,
+ 0x0061, 0x007a,
+ 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
+ 0x00df, 0x00f6,
+ 0x00f8, 0x00ff,
+ 0x0101, 0x0101,
+ 0x0103, 0x0103,
+ 0x0105, 0x0105,
+ 0x0107, 0x0107,
+ 0x0109, 0x0109,
+ 0x010b, 0x010b,
+ 0x010d, 0x010d,
+ 0x010f, 0x010f,
+ 0x0111, 0x0111,
+ 0x0113, 0x0113,
+ 0x0115, 0x0115,
+ 0x0117, 0x0117,
+ 0x0119, 0x0119,
+ 0x011b, 0x011b,
+ 0x011d, 0x011d,
+ 0x011f, 0x011f,
+ 0x0121, 0x0121,
+ 0x0123, 0x0123,
+ 0x0125, 0x0125,
+ 0x0127, 0x0127,
+ 0x0129, 0x0129,
+ 0x012b, 0x012b,
+ 0x012d, 0x012d,
+ 0x012f, 0x012f,
+ 0x0131, 0x0131,
+ 0x0133, 0x0133,
+ 0x0135, 0x0135,
+ 0x0137, 0x0138,
+ 0x013a, 0x013a,
+ 0x013c, 0x013c,
+ 0x013e, 0x013e,
+ 0x0140, 0x0140,
+ 0x0142, 0x0142,
+ 0x0144, 0x0144,
+ 0x0146, 0x0146,
+ 0x0148, 0x0149,
+ 0x014b, 0x014b,
+ 0x014d, 0x014d,
+ 0x014f, 0x014f,
+ 0x0151, 0x0151,
+ 0x0153, 0x0153,
+ 0x0155, 0x0155,
+ 0x0157, 0x0157,
+ 0x0159, 0x0159,
+ 0x015b, 0x015b,
+ 0x015d, 0x015d,
+ 0x015f, 0x015f,
+ 0x0161, 0x0161,
+ 0x0163, 0x0163,
+ 0x0165, 0x0165,
+ 0x0167, 0x0167,
+ 0x0169, 0x0169,
+ 0x016b, 0x016b,
+ 0x016d, 0x016d,
+ 0x016f, 0x016f,
+ 0x0171, 0x0171,
+ 0x0173, 0x0173,
+ 0x0175, 0x0175,
+ 0x0177, 0x0177,
+ 0x017a, 0x017a,
+ 0x017c, 0x017c,
+ 0x017e, 0x0180,
+ 0x0183, 0x0183,
+ 0x0185, 0x0185,
+ 0x0188, 0x0188,
+ 0x018c, 0x018d,
+ 0x0192, 0x0192,
+ 0x0195, 0x0195,
+ 0x0199, 0x019b,
+ 0x019e, 0x019e,
+ 0x01a1, 0x01a1,
+ 0x01a3, 0x01a3,
+ 0x01a5, 0x01a5,
+ 0x01a8, 0x01a8,
+ 0x01aa, 0x01ab,
+ 0x01ad, 0x01ad,
+ 0x01b0, 0x01b0,
+ 0x01b4, 0x01b4,
+ 0x01b6, 0x01b6,
+ 0x01b9, 0x01ba,
+ 0x01bd, 0x01bf,
+ 0x01c6, 0x01c6,
+ 0x01c9, 0x01c9,
+ 0x01cc, 0x01cc,
+ 0x01ce, 0x01ce,
+ 0x01d0, 0x01d0,
+ 0x01d2, 0x01d2,
+ 0x01d4, 0x01d4,
+ 0x01d6, 0x01d6,
+ 0x01d8, 0x01d8,
+ 0x01da, 0x01da,
+ 0x01dc, 0x01dd,
+ 0x01df, 0x01df,
+ 0x01e1, 0x01e1,
+ 0x01e3, 0x01e3,
+ 0x01e5, 0x01e5,
+ 0x01e7, 0x01e7,
+ 0x01e9, 0x01e9,
+ 0x01eb, 0x01eb,
+ 0x01ed, 0x01ed,
+ 0x01ef, 0x01f0,
+ 0x01f3, 0x01f3,
+ 0x01f5, 0x01f5,
+ 0x01f9, 0x01f9,
+ 0x01fb, 0x01fb,
+ 0x01fd, 0x01fd,
+ 0x01ff, 0x01ff,
+ 0x0201, 0x0201,
+ 0x0203, 0x0203,
+ 0x0205, 0x0205,
+ 0x0207, 0x0207,
+ 0x0209, 0x0209,
+ 0x020b, 0x020b,
+ 0x020d, 0x020d,
+ 0x020f, 0x020f,
+ 0x0211, 0x0211,
+ 0x0213, 0x0213,
+ 0x0215, 0x0215,
+ 0x0217, 0x0217,
+ 0x0219, 0x0219,
+ 0x021b, 0x021b,
+ 0x021d, 0x021d,
+ 0x021f, 0x021f,
+ 0x0221, 0x0221,
+ 0x0223, 0x0223,
+ 0x0225, 0x0225,
+ 0x0227, 0x0227,
+ 0x0229, 0x0229,
+ 0x022b, 0x022b,
+ 0x022d, 0x022d,
+ 0x022f, 0x022f,
+ 0x0231, 0x0231,
+ 0x0233, 0x0239,
+ 0x023c, 0x023c,
+ 0x023f, 0x0240,
+ 0x0242, 0x0242,
+ 0x0247, 0x0247,
+ 0x0249, 0x0249,
+ 0x024b, 0x024b,
+ 0x024d, 0x024d,
+ 0x024f, 0x0293,
+ 0x0295, 0x02b8,
+ 0x02c0, 0x02c1,
+ 0x02e0, 0x02e4,
+ 0x0345, 0x0345,
+ 0x0371, 0x0371,
+ 0x0373, 0x0373,
+ 0x0377, 0x0377,
+ 0x037a, 0x037d,
+ 0x0390, 0x0390,
+ 0x03ac, 0x03ce,
+ 0x03d0, 0x03d1,
+ 0x03d5, 0x03d7,
+ 0x03d9, 0x03d9,
+ 0x03db, 0x03db,
+ 0x03dd, 0x03dd,
+ 0x03df, 0x03df,
+ 0x03e1, 0x03e1,
+ 0x03e3, 0x03e3,
+ 0x03e5, 0x03e5,
+ 0x03e7, 0x03e7,
+ 0x03e9, 0x03e9,
+ 0x03eb, 0x03eb,
+ 0x03ed, 0x03ed,
+ 0x03ef, 0x03f3,
+ 0x03f5, 0x03f5,
+ 0x03f8, 0x03f8,
+ 0x03fb, 0x03fc,
+ 0x0430, 0x045f,
+ 0x0461, 0x0461,
+ 0x0463, 0x0463,
+ 0x0465, 0x0465,
+ 0x0467, 0x0467,
+ 0x0469, 0x0469,
+ 0x046b, 0x046b,
+ 0x046d, 0x046d,
+ 0x046f, 0x046f,
+ 0x0471, 0x0471,
+ 0x0473, 0x0473,
+ 0x0475, 0x0475,
+ 0x0477, 0x0477,
+ 0x0479, 0x0479,
+ 0x047b, 0x047b,
+ 0x047d, 0x047d,
+ 0x047f, 0x047f,
+ 0x0481, 0x0481,
+ 0x048b, 0x048b,
+ 0x048d, 0x048d,
+ 0x048f, 0x048f,
+ 0x0491, 0x0491,
+ 0x0493, 0x0493,
+ 0x0495, 0x0495,
+ 0x0497, 0x0497,
+ 0x0499, 0x0499,
+ 0x049b, 0x049b,
+ 0x049d, 0x049d,
+ 0x049f, 0x049f,
+ 0x04a1, 0x04a1,
+ 0x04a3, 0x04a3,
+ 0x04a5, 0x04a5,
+ 0x04a7, 0x04a7,
+ 0x04a9, 0x04a9,
+ 0x04ab, 0x04ab,
+ 0x04ad, 0x04ad,
+ 0x04af, 0x04af,
+ 0x04b1, 0x04b1,
+ 0x04b3, 0x04b3,
+ 0x04b5, 0x04b5,
+ 0x04b7, 0x04b7,
+ 0x04b9, 0x04b9,
+ 0x04bb, 0x04bb,
+ 0x04bd, 0x04bd,
+ 0x04bf, 0x04bf,
+ 0x04c2, 0x04c2,
+ 0x04c4, 0x04c4,
+ 0x04c6, 0x04c6,
+ 0x04c8, 0x04c8,
+ 0x04ca, 0x04ca,
+ 0x04cc, 0x04cc,
+ 0x04ce, 0x04cf,
+ 0x04d1, 0x04d1,
+ 0x04d3, 0x04d3,
+ 0x04d5, 0x04d5,
+ 0x04d7, 0x04d7,
+ 0x04d9, 0x04d9,
+ 0x04db, 0x04db,
+ 0x04dd, 0x04dd,
+ 0x04df, 0x04df,
+ 0x04e1, 0x04e1,
+ 0x04e3, 0x04e3,
+ 0x04e5, 0x04e5,
+ 0x04e7, 0x04e7,
+ 0x04e9, 0x04e9,
+ 0x04eb, 0x04eb,
+ 0x04ed, 0x04ed,
+ 0x04ef, 0x04ef,
+ 0x04f1, 0x04f1,
+ 0x04f3, 0x04f3,
+ 0x04f5, 0x04f5,
+ 0x04f7, 0x04f7,
+ 0x04f9, 0x04f9,
+ 0x04fb, 0x04fb,
+ 0x04fd, 0x04fd,
+ 0x04ff, 0x04ff,
+ 0x0501, 0x0501,
+ 0x0503, 0x0503,
+ 0x0505, 0x0505,
+ 0x0507, 0x0507,
+ 0x0509, 0x0509,
+ 0x050b, 0x050b,
+ 0x050d, 0x050d,
+ 0x050f, 0x050f,
+ 0x0511, 0x0511,
+ 0x0513, 0x0513,
+ 0x0515, 0x0515,
+ 0x0517, 0x0517,
+ 0x0519, 0x0519,
+ 0x051b, 0x051b,
+ 0x051d, 0x051d,
+ 0x051f, 0x051f,
+ 0x0521, 0x0521,
+ 0x0523, 0x0523,
+ 0x0525, 0x0525,
+ 0x0527, 0x0527,
+ 0x0561, 0x0587,
+ 0x1d00, 0x1dbf,
+ 0x1e01, 0x1e01,
+ 0x1e03, 0x1e03,
+ 0x1e05, 0x1e05,
+ 0x1e07, 0x1e07,
+ 0x1e09, 0x1e09,
+ 0x1e0b, 0x1e0b,
+ 0x1e0d, 0x1e0d,
+ 0x1e0f, 0x1e0f,
+ 0x1e11, 0x1e11,
+ 0x1e13, 0x1e13,
+ 0x1e15, 0x1e15,
+ 0x1e17, 0x1e17,
+ 0x1e19, 0x1e19,
+ 0x1e1b, 0x1e1b,
+ 0x1e1d, 0x1e1d,
+ 0x1e1f, 0x1e1f,
+ 0x1e21, 0x1e21,
+ 0x1e23, 0x1e23,
+ 0x1e25, 0x1e25,
+ 0x1e27, 0x1e27,
+ 0x1e29, 0x1e29,
+ 0x1e2b, 0x1e2b,
+ 0x1e2d, 0x1e2d,
+ 0x1e2f, 0x1e2f,
+ 0x1e31, 0x1e31,
+ 0x1e33, 0x1e33,
+ 0x1e35, 0x1e35,
+ 0x1e37, 0x1e37,
+ 0x1e39, 0x1e39,
+ 0x1e3b, 0x1e3b,
+ 0x1e3d, 0x1e3d,
+ 0x1e3f, 0x1e3f,
+ 0x1e41, 0x1e41,
+ 0x1e43, 0x1e43,
+ 0x1e45, 0x1e45,
+ 0x1e47, 0x1e47,
+ 0x1e49, 0x1e49,
+ 0x1e4b, 0x1e4b,
+ 0x1e4d, 0x1e4d,
+ 0x1e4f, 0x1e4f,
+ 0x1e51, 0x1e51,
+ 0x1e53, 0x1e53,
+ 0x1e55, 0x1e55,
+ 0x1e57, 0x1e57,
+ 0x1e59, 0x1e59,
+ 0x1e5b, 0x1e5b,
+ 0x1e5d, 0x1e5d,
+ 0x1e5f, 0x1e5f,
+ 0x1e61, 0x1e61,
+ 0x1e63, 0x1e63,
+ 0x1e65, 0x1e65,
+ 0x1e67, 0x1e67,
+ 0x1e69, 0x1e69,
+ 0x1e6b, 0x1e6b,
+ 0x1e6d, 0x1e6d,
+ 0x1e6f, 0x1e6f,
+ 0x1e71, 0x1e71,
+ 0x1e73, 0x1e73,
+ 0x1e75, 0x1e75,
+ 0x1e77, 0x1e77,
+ 0x1e79, 0x1e79,
+ 0x1e7b, 0x1e7b,
+ 0x1e7d, 0x1e7d,
+ 0x1e7f, 0x1e7f,
+ 0x1e81, 0x1e81,
+ 0x1e83, 0x1e83,
+ 0x1e85, 0x1e85,
+ 0x1e87, 0x1e87,
+ 0x1e89, 0x1e89,
+ 0x1e8b, 0x1e8b,
+ 0x1e8d, 0x1e8d,
+ 0x1e8f, 0x1e8f,
+ 0x1e91, 0x1e91,
+ 0x1e93, 0x1e93,
+ 0x1e95, 0x1e9d,
+ 0x1e9f, 0x1e9f,
+ 0x1ea1, 0x1ea1,
+ 0x1ea3, 0x1ea3,
+ 0x1ea5, 0x1ea5,
+ 0x1ea7, 0x1ea7,
+ 0x1ea9, 0x1ea9,
+ 0x1eab, 0x1eab,
+ 0x1ead, 0x1ead,
+ 0x1eaf, 0x1eaf,
+ 0x1eb1, 0x1eb1,
+ 0x1eb3, 0x1eb3,
+ 0x1eb5, 0x1eb5,
+ 0x1eb7, 0x1eb7,
+ 0x1eb9, 0x1eb9,
+ 0x1ebb, 0x1ebb,
+ 0x1ebd, 0x1ebd,
+ 0x1ebf, 0x1ebf,
+ 0x1ec1, 0x1ec1,
+ 0x1ec3, 0x1ec3,
+ 0x1ec5, 0x1ec5,
+ 0x1ec7, 0x1ec7,
+ 0x1ec9, 0x1ec9,
+ 0x1ecb, 0x1ecb,
+ 0x1ecd, 0x1ecd,
+ 0x1ecf, 0x1ecf,
+ 0x1ed1, 0x1ed1,
+ 0x1ed3, 0x1ed3,
+ 0x1ed5, 0x1ed5,
+ 0x1ed7, 0x1ed7,
+ 0x1ed9, 0x1ed9,
+ 0x1edb, 0x1edb,
+ 0x1edd, 0x1edd,
+ 0x1edf, 0x1edf,
+ 0x1ee1, 0x1ee1,
+ 0x1ee3, 0x1ee3,
+ 0x1ee5, 0x1ee5,
+ 0x1ee7, 0x1ee7,
+ 0x1ee9, 0x1ee9,
+ 0x1eeb, 0x1eeb,
+ 0x1eed, 0x1eed,
+ 0x1eef, 0x1eef,
+ 0x1ef1, 0x1ef1,
+ 0x1ef3, 0x1ef3,
+ 0x1ef5, 0x1ef5,
+ 0x1ef7, 0x1ef7,
+ 0x1ef9, 0x1ef9,
+ 0x1efb, 0x1efb,
+ 0x1efd, 0x1efd,
+ 0x1eff, 0x1f07,
+ 0x1f10, 0x1f15,
+ 0x1f20, 0x1f27,
+ 0x1f30, 0x1f37,
+ 0x1f40, 0x1f45,
+ 0x1f50, 0x1f57,
+ 0x1f60, 0x1f67,
+ 0x1f70, 0x1f7d,
+ 0x1f80, 0x1f87,
+ 0x1f90, 0x1f97,
+ 0x1fa0, 0x1fa7,
+ 0x1fb0, 0x1fb4,
+ 0x1fb6, 0x1fb7,
+ 0x1fbe, 0x1fbe,
+ 0x1fc2, 0x1fc4,
+ 0x1fc6, 0x1fc7,
+ 0x1fd0, 0x1fd3,
+ 0x1fd6, 0x1fd7,
+ 0x1fe0, 0x1fe7,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ff7,
+ 0x2090, 0x2094,
+ 0x210a, 0x210a,
+ 0x210e, 0x210f,
+ 0x2113, 0x2113,
+ 0x212f, 0x212f,
+ 0x2134, 0x2134,
+ 0x2139, 0x2139,
+ 0x213c, 0x213d,
+ 0x2146, 0x2149,
+ 0x214e, 0x214e,
+ 0x2170, 0x217f,
+ 0x2184, 0x2184,
+ 0x24d0, 0x24e9,
+ 0x2c30, 0x2c5e,
+ 0x2c61, 0x2c61,
+ 0x2c65, 0x2c66,
+ 0x2c68, 0x2c68,
+ 0x2c6a, 0x2c6a,
+ 0x2c6c, 0x2c6c,
+ 0x2c71, 0x2c71,
+ 0x2c73, 0x2c74,
+ 0x2c76, 0x2c7d,
+ 0x2c81, 0x2c81,
+ 0x2c83, 0x2c83,
+ 0x2c85, 0x2c85,
+ 0x2c87, 0x2c87,
+ 0x2c89, 0x2c89,
+ 0x2c8b, 0x2c8b,
+ 0x2c8d, 0x2c8d,
+ 0x2c8f, 0x2c8f,
+ 0x2c91, 0x2c91,
+ 0x2c93, 0x2c93,
+ 0x2c95, 0x2c95,
+ 0x2c97, 0x2c97,
+ 0x2c99, 0x2c99,
+ 0x2c9b, 0x2c9b,
+ 0x2c9d, 0x2c9d,
+ 0x2c9f, 0x2c9f,
+ 0x2ca1, 0x2ca1,
+ 0x2ca3, 0x2ca3,
+ 0x2ca5, 0x2ca5,
+ 0x2ca7, 0x2ca7,
+ 0x2ca9, 0x2ca9,
+ 0x2cab, 0x2cab,
+ 0x2cad, 0x2cad,
+ 0x2caf, 0x2caf,
+ 0x2cb1, 0x2cb1,
+ 0x2cb3, 0x2cb3,
+ 0x2cb5, 0x2cb5,
+ 0x2cb7, 0x2cb7,
+ 0x2cb9, 0x2cb9,
+ 0x2cbb, 0x2cbb,
+ 0x2cbd, 0x2cbd,
+ 0x2cbf, 0x2cbf,
+ 0x2cc1, 0x2cc1,
+ 0x2cc3, 0x2cc3,
+ 0x2cc5, 0x2cc5,
+ 0x2cc7, 0x2cc7,
+ 0x2cc9, 0x2cc9,
+ 0x2ccb, 0x2ccb,
+ 0x2ccd, 0x2ccd,
+ 0x2ccf, 0x2ccf,
+ 0x2cd1, 0x2cd1,
+ 0x2cd3, 0x2cd3,
+ 0x2cd5, 0x2cd5,
+ 0x2cd7, 0x2cd7,
+ 0x2cd9, 0x2cd9,
+ 0x2cdb, 0x2cdb,
+ 0x2cdd, 0x2cdd,
+ 0x2cdf, 0x2cdf,
+ 0x2ce1, 0x2ce1,
+ 0x2ce3, 0x2ce4,
+ 0x2cec, 0x2cec,
+ 0x2cee, 0x2cee,
+ 0x2d00, 0x2d25,
+ 0xa641, 0xa641,
+ 0xa643, 0xa643,
+ 0xa645, 0xa645,
+ 0xa647, 0xa647,
+ 0xa649, 0xa649,
+ 0xa64b, 0xa64b,
+ 0xa64d, 0xa64d,
+ 0xa64f, 0xa64f,
+ 0xa651, 0xa651,
+ 0xa653, 0xa653,
+ 0xa655, 0xa655,
+ 0xa657, 0xa657,
+ 0xa659, 0xa659,
+ 0xa65b, 0xa65b,
+ 0xa65d, 0xa65d,
+ 0xa65f, 0xa65f,
+ 0xa661, 0xa661,
+ 0xa663, 0xa663,
+ 0xa665, 0xa665,
+ 0xa667, 0xa667,
+ 0xa669, 0xa669,
+ 0xa66b, 0xa66b,
+ 0xa66d, 0xa66d,
+ 0xa681, 0xa681,
+ 0xa683, 0xa683,
+ 0xa685, 0xa685,
+ 0xa687, 0xa687,
+ 0xa689, 0xa689,
+ 0xa68b, 0xa68b,
+ 0xa68d, 0xa68d,
+ 0xa68f, 0xa68f,
+ 0xa691, 0xa691,
+ 0xa693, 0xa693,
+ 0xa695, 0xa695,
+ 0xa697, 0xa697,
+ 0xa723, 0xa723,
+ 0xa725, 0xa725,
+ 0xa727, 0xa727,
+ 0xa729, 0xa729,
+ 0xa72b, 0xa72b,
+ 0xa72d, 0xa72d,
+ 0xa72f, 0xa731,
+ 0xa733, 0xa733,
+ 0xa735, 0xa735,
+ 0xa737, 0xa737,
+ 0xa739, 0xa739,
+ 0xa73b, 0xa73b,
+ 0xa73d, 0xa73d,
+ 0xa73f, 0xa73f,
+ 0xa741, 0xa741,
+ 0xa743, 0xa743,
+ 0xa745, 0xa745,
+ 0xa747, 0xa747,
+ 0xa749, 0xa749,
+ 0xa74b, 0xa74b,
+ 0xa74d, 0xa74d,
+ 0xa74f, 0xa74f,
+ 0xa751, 0xa751,
+ 0xa753, 0xa753,
+ 0xa755, 0xa755,
+ 0xa757, 0xa757,
+ 0xa759, 0xa759,
+ 0xa75b, 0xa75b,
+ 0xa75d, 0xa75d,
+ 0xa75f, 0xa75f,
+ 0xa761, 0xa761,
+ 0xa763, 0xa763,
+ 0xa765, 0xa765,
+ 0xa767, 0xa767,
+ 0xa769, 0xa769,
+ 0xa76b, 0xa76b,
+ 0xa76d, 0xa76d,
+ 0xa76f, 0xa778,
+ 0xa77a, 0xa77a,
+ 0xa77c, 0xa77c,
+ 0xa77f, 0xa77f,
+ 0xa781, 0xa781,
+ 0xa783, 0xa783,
+ 0xa785, 0xa785,
+ 0xa787, 0xa787,
+ 0xa78c, 0xa78c,
+ 0xa78e, 0xa78e,
+ 0xa791, 0xa791,
+ 0xa7a1, 0xa7a1,
+ 0xa7a3, 0xa7a3,
+ 0xa7a5, 0xa7a5,
+ 0xa7a7, 0xa7a7,
+ 0xa7a9, 0xa7a9,
+ 0xa7fa, 0xa7fa,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xff41, 0xff5a,
+ 0x10428, 0x1044f,
+ 0x1d41a, 0x1d433,
+ 0x1d44e, 0x1d454,
+ 0x1d456, 0x1d467,
+ 0x1d482, 0x1d49b,
+ 0x1d4b6, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d4cf,
+ 0x1d4ea, 0x1d503,
+ 0x1d51e, 0x1d537,
+ 0x1d552, 0x1d56b,
+ 0x1d586, 0x1d59f,
+ 0x1d5ba, 0x1d5d3,
+ 0x1d5ee, 0x1d607,
+ 0x1d622, 0x1d63b,
+ 0x1d656, 0x1d66f,
+ 0x1d68a, 0x1d6a5,
+ 0x1d6c2, 0x1d6da,
+ 0x1d6dc, 0x1d6e1,
+ 0x1d6fc, 0x1d714,
+ 0x1d716, 0x1d71b,
+ 0x1d736, 0x1d74e,
+ 0x1d750, 0x1d755,
+ 0x1d770, 0x1d788,
+ 0x1d78a, 0x1d78f,
+ 0x1d7aa, 0x1d7c2,
+ 0x1d7c4, 0x1d7c9,
+ 0x1d7cb, 0x1d7cb,
+}; /* CR_Lowercase */
/* 'Uppercase': Derived Property */
-#define CR_Uppercase CR_Upper
+static const OnigCodePoint CR_Uppercase[] = {
+ 605,
+ 0x0041, 0x005a,
+ 0x00c0, 0x00d6,
+ 0x00d8, 0x00de,
+ 0x0100, 0x0100,
+ 0x0102, 0x0102,
+ 0x0104, 0x0104,
+ 0x0106, 0x0106,
+ 0x0108, 0x0108,
+ 0x010a, 0x010a,
+ 0x010c, 0x010c,
+ 0x010e, 0x010e,
+ 0x0110, 0x0110,
+ 0x0112, 0x0112,
+ 0x0114, 0x0114,
+ 0x0116, 0x0116,
+ 0x0118, 0x0118,
+ 0x011a, 0x011a,
+ 0x011c, 0x011c,
+ 0x011e, 0x011e,
+ 0x0120, 0x0120,
+ 0x0122, 0x0122,
+ 0x0124, 0x0124,
+ 0x0126, 0x0126,
+ 0x0128, 0x0128,
+ 0x012a, 0x012a,
+ 0x012c, 0x012c,
+ 0x012e, 0x012e,
+ 0x0130, 0x0130,
+ 0x0132, 0x0132,
+ 0x0134, 0x0134,
+ 0x0136, 0x0136,
+ 0x0139, 0x0139,
+ 0x013b, 0x013b,
+ 0x013d, 0x013d,
+ 0x013f, 0x013f,
+ 0x0141, 0x0141,
+ 0x0143, 0x0143,
+ 0x0145, 0x0145,
+ 0x0147, 0x0147,
+ 0x014a, 0x014a,
+ 0x014c, 0x014c,
+ 0x014e, 0x014e,
+ 0x0150, 0x0150,
+ 0x0152, 0x0152,
+ 0x0154, 0x0154,
+ 0x0156, 0x0156,
+ 0x0158, 0x0158,
+ 0x015a, 0x015a,
+ 0x015c, 0x015c,
+ 0x015e, 0x015e,
+ 0x0160, 0x0160,
+ 0x0162, 0x0162,
+ 0x0164, 0x0164,
+ 0x0166, 0x0166,
+ 0x0168, 0x0168,
+ 0x016a, 0x016a,
+ 0x016c, 0x016c,
+ 0x016e, 0x016e,
+ 0x0170, 0x0170,
+ 0x0172, 0x0172,
+ 0x0174, 0x0174,
+ 0x0176, 0x0176,
+ 0x0178, 0x0179,
+ 0x017b, 0x017b,
+ 0x017d, 0x017d,
+ 0x0181, 0x0182,
+ 0x0184, 0x0184,
+ 0x0186, 0x0187,
+ 0x0189, 0x018b,
+ 0x018e, 0x0191,
+ 0x0193, 0x0194,
+ 0x0196, 0x0198,
+ 0x019c, 0x019d,
+ 0x019f, 0x01a0,
+ 0x01a2, 0x01a2,
+ 0x01a4, 0x01a4,
+ 0x01a6, 0x01a7,
+ 0x01a9, 0x01a9,
+ 0x01ac, 0x01ac,
+ 0x01ae, 0x01af,
+ 0x01b1, 0x01b3,
+ 0x01b5, 0x01b5,
+ 0x01b7, 0x01b8,
+ 0x01bc, 0x01bc,
+ 0x01c4, 0x01c4,
+ 0x01c7, 0x01c7,
+ 0x01ca, 0x01ca,
+ 0x01cd, 0x01cd,
+ 0x01cf, 0x01cf,
+ 0x01d1, 0x01d1,
+ 0x01d3, 0x01d3,
+ 0x01d5, 0x01d5,
+ 0x01d7, 0x01d7,
+ 0x01d9, 0x01d9,
+ 0x01db, 0x01db,
+ 0x01de, 0x01de,
+ 0x01e0, 0x01e0,
+ 0x01e2, 0x01e2,
+ 0x01e4, 0x01e4,
+ 0x01e6, 0x01e6,
+ 0x01e8, 0x01e8,
+ 0x01ea, 0x01ea,
+ 0x01ec, 0x01ec,
+ 0x01ee, 0x01ee,
+ 0x01f1, 0x01f1,
+ 0x01f4, 0x01f4,
+ 0x01f6, 0x01f8,
+ 0x01fa, 0x01fa,
+ 0x01fc, 0x01fc,
+ 0x01fe, 0x01fe,
+ 0x0200, 0x0200,
+ 0x0202, 0x0202,
+ 0x0204, 0x0204,
+ 0x0206, 0x0206,
+ 0x0208, 0x0208,
+ 0x020a, 0x020a,
+ 0x020c, 0x020c,
+ 0x020e, 0x020e,
+ 0x0210, 0x0210,
+ 0x0212, 0x0212,
+ 0x0214, 0x0214,
+ 0x0216, 0x0216,
+ 0x0218, 0x0218,
+ 0x021a, 0x021a,
+ 0x021c, 0x021c,
+ 0x021e, 0x021e,
+ 0x0220, 0x0220,
+ 0x0222, 0x0222,
+ 0x0224, 0x0224,
+ 0x0226, 0x0226,
+ 0x0228, 0x0228,
+ 0x022a, 0x022a,
+ 0x022c, 0x022c,
+ 0x022e, 0x022e,
+ 0x0230, 0x0230,
+ 0x0232, 0x0232,
+ 0x023a, 0x023b,
+ 0x023d, 0x023e,
+ 0x0241, 0x0241,
+ 0x0243, 0x0246,
+ 0x0248, 0x0248,
+ 0x024a, 0x024a,
+ 0x024c, 0x024c,
+ 0x024e, 0x024e,
+ 0x0370, 0x0370,
+ 0x0372, 0x0372,
+ 0x0376, 0x0376,
+ 0x0386, 0x0386,
+ 0x0388, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x038f,
+ 0x0391, 0x03a1,
+ 0x03a3, 0x03ab,
+ 0x03cf, 0x03cf,
+ 0x03d2, 0x03d4,
+ 0x03d8, 0x03d8,
+ 0x03da, 0x03da,
+ 0x03dc, 0x03dc,
+ 0x03de, 0x03de,
+ 0x03e0, 0x03e0,
+ 0x03e2, 0x03e2,
+ 0x03e4, 0x03e4,
+ 0x03e6, 0x03e6,
+ 0x03e8, 0x03e8,
+ 0x03ea, 0x03ea,
+ 0x03ec, 0x03ec,
+ 0x03ee, 0x03ee,
+ 0x03f4, 0x03f4,
+ 0x03f7, 0x03f7,
+ 0x03f9, 0x03fa,
+ 0x03fd, 0x042f,
+ 0x0460, 0x0460,
+ 0x0462, 0x0462,
+ 0x0464, 0x0464,
+ 0x0466, 0x0466,
+ 0x0468, 0x0468,
+ 0x046a, 0x046a,
+ 0x046c, 0x046c,
+ 0x046e, 0x046e,
+ 0x0470, 0x0470,
+ 0x0472, 0x0472,
+ 0x0474, 0x0474,
+ 0x0476, 0x0476,
+ 0x0478, 0x0478,
+ 0x047a, 0x047a,
+ 0x047c, 0x047c,
+ 0x047e, 0x047e,
+ 0x0480, 0x0480,
+ 0x048a, 0x048a,
+ 0x048c, 0x048c,
+ 0x048e, 0x048e,
+ 0x0490, 0x0490,
+ 0x0492, 0x0492,
+ 0x0494, 0x0494,
+ 0x0496, 0x0496,
+ 0x0498, 0x0498,
+ 0x049a, 0x049a,
+ 0x049c, 0x049c,
+ 0x049e, 0x049e,
+ 0x04a0, 0x04a0,
+ 0x04a2, 0x04a2,
+ 0x04a4, 0x04a4,
+ 0x04a6, 0x04a6,
+ 0x04a8, 0x04a8,
+ 0x04aa, 0x04aa,
+ 0x04ac, 0x04ac,
+ 0x04ae, 0x04ae,
+ 0x04b0, 0x04b0,
+ 0x04b2, 0x04b2,
+ 0x04b4, 0x04b4,
+ 0x04b6, 0x04b6,
+ 0x04b8, 0x04b8,
+ 0x04ba, 0x04ba,
+ 0x04bc, 0x04bc,
+ 0x04be, 0x04be,
+ 0x04c0, 0x04c1,
+ 0x04c3, 0x04c3,
+ 0x04c5, 0x04c5,
+ 0x04c7, 0x04c7,
+ 0x04c9, 0x04c9,
+ 0x04cb, 0x04cb,
+ 0x04cd, 0x04cd,
+ 0x04d0, 0x04d0,
+ 0x04d2, 0x04d2,
+ 0x04d4, 0x04d4,
+ 0x04d6, 0x04d6,
+ 0x04d8, 0x04d8,
+ 0x04da, 0x04da,
+ 0x04dc, 0x04dc,
+ 0x04de, 0x04de,
+ 0x04e0, 0x04e0,
+ 0x04e2, 0x04e2,
+ 0x04e4, 0x04e4,
+ 0x04e6, 0x04e6,
+ 0x04e8, 0x04e8,
+ 0x04ea, 0x04ea,
+ 0x04ec, 0x04ec,
+ 0x04ee, 0x04ee,
+ 0x04f0, 0x04f0,
+ 0x04f2, 0x04f2,
+ 0x04f4, 0x04f4,
+ 0x04f6, 0x04f6,
+ 0x04f8, 0x04f8,
+ 0x04fa, 0x04fa,
+ 0x04fc, 0x04fc,
+ 0x04fe, 0x04fe,
+ 0x0500, 0x0500,
+ 0x0502, 0x0502,
+ 0x0504, 0x0504,
+ 0x0506, 0x0506,
+ 0x0508, 0x0508,
+ 0x050a, 0x050a,
+ 0x050c, 0x050c,
+ 0x050e, 0x050e,
+ 0x0510, 0x0510,
+ 0x0512, 0x0512,
+ 0x0514, 0x0514,
+ 0x0516, 0x0516,
+ 0x0518, 0x0518,
+ 0x051a, 0x051a,
+ 0x051c, 0x051c,
+ 0x051e, 0x051e,
+ 0x0520, 0x0520,
+ 0x0522, 0x0522,
+ 0x0524, 0x0524,
+ 0x0526, 0x0526,
+ 0x0531, 0x0556,
+ 0x10a0, 0x10c5,
+ 0x1e00, 0x1e00,
+ 0x1e02, 0x1e02,
+ 0x1e04, 0x1e04,
+ 0x1e06, 0x1e06,
+ 0x1e08, 0x1e08,
+ 0x1e0a, 0x1e0a,
+ 0x1e0c, 0x1e0c,
+ 0x1e0e, 0x1e0e,
+ 0x1e10, 0x1e10,
+ 0x1e12, 0x1e12,
+ 0x1e14, 0x1e14,
+ 0x1e16, 0x1e16,
+ 0x1e18, 0x1e18,
+ 0x1e1a, 0x1e1a,
+ 0x1e1c, 0x1e1c,
+ 0x1e1e, 0x1e1e,
+ 0x1e20, 0x1e20,
+ 0x1e22, 0x1e22,
+ 0x1e24, 0x1e24,
+ 0x1e26, 0x1e26,
+ 0x1e28, 0x1e28,
+ 0x1e2a, 0x1e2a,
+ 0x1e2c, 0x1e2c,
+ 0x1e2e, 0x1e2e,
+ 0x1e30, 0x1e30,
+ 0x1e32, 0x1e32,
+ 0x1e34, 0x1e34,
+ 0x1e36, 0x1e36,
+ 0x1e38, 0x1e38,
+ 0x1e3a, 0x1e3a,
+ 0x1e3c, 0x1e3c,
+ 0x1e3e, 0x1e3e,
+ 0x1e40, 0x1e40,
+ 0x1e42, 0x1e42,
+ 0x1e44, 0x1e44,
+ 0x1e46, 0x1e46,
+ 0x1e48, 0x1e48,
+ 0x1e4a, 0x1e4a,
+ 0x1e4c, 0x1e4c,
+ 0x1e4e, 0x1e4e,
+ 0x1e50, 0x1e50,
+ 0x1e52, 0x1e52,
+ 0x1e54, 0x1e54,
+ 0x1e56, 0x1e56,
+ 0x1e58, 0x1e58,
+ 0x1e5a, 0x1e5a,
+ 0x1e5c, 0x1e5c,
+ 0x1e5e, 0x1e5e,
+ 0x1e60, 0x1e60,
+ 0x1e62, 0x1e62,
+ 0x1e64, 0x1e64,
+ 0x1e66, 0x1e66,
+ 0x1e68, 0x1e68,
+ 0x1e6a, 0x1e6a,
+ 0x1e6c, 0x1e6c,
+ 0x1e6e, 0x1e6e,
+ 0x1e70, 0x1e70,
+ 0x1e72, 0x1e72,
+ 0x1e74, 0x1e74,
+ 0x1e76, 0x1e76,
+ 0x1e78, 0x1e78,
+ 0x1e7a, 0x1e7a,
+ 0x1e7c, 0x1e7c,
+ 0x1e7e, 0x1e7e,
+ 0x1e80, 0x1e80,
+ 0x1e82, 0x1e82,
+ 0x1e84, 0x1e84,
+ 0x1e86, 0x1e86,
+ 0x1e88, 0x1e88,
+ 0x1e8a, 0x1e8a,
+ 0x1e8c, 0x1e8c,
+ 0x1e8e, 0x1e8e,
+ 0x1e90, 0x1e90,
+ 0x1e92, 0x1e92,
+ 0x1e94, 0x1e94,
+ 0x1e9e, 0x1e9e,
+ 0x1ea0, 0x1ea0,
+ 0x1ea2, 0x1ea2,
+ 0x1ea4, 0x1ea4,
+ 0x1ea6, 0x1ea6,
+ 0x1ea8, 0x1ea8,
+ 0x1eaa, 0x1eaa,
+ 0x1eac, 0x1eac,
+ 0x1eae, 0x1eae,
+ 0x1eb0, 0x1eb0,
+ 0x1eb2, 0x1eb2,
+ 0x1eb4, 0x1eb4,
+ 0x1eb6, 0x1eb6,
+ 0x1eb8, 0x1eb8,
+ 0x1eba, 0x1eba,
+ 0x1ebc, 0x1ebc,
+ 0x1ebe, 0x1ebe,
+ 0x1ec0, 0x1ec0,
+ 0x1ec2, 0x1ec2,
+ 0x1ec4, 0x1ec4,
+ 0x1ec6, 0x1ec6,
+ 0x1ec8, 0x1ec8,
+ 0x1eca, 0x1eca,
+ 0x1ecc, 0x1ecc,
+ 0x1ece, 0x1ece,
+ 0x1ed0, 0x1ed0,
+ 0x1ed2, 0x1ed2,
+ 0x1ed4, 0x1ed4,
+ 0x1ed6, 0x1ed6,
+ 0x1ed8, 0x1ed8,
+ 0x1eda, 0x1eda,
+ 0x1edc, 0x1edc,
+ 0x1ede, 0x1ede,
+ 0x1ee0, 0x1ee0,
+ 0x1ee2, 0x1ee2,
+ 0x1ee4, 0x1ee4,
+ 0x1ee6, 0x1ee6,
+ 0x1ee8, 0x1ee8,
+ 0x1eea, 0x1eea,
+ 0x1eec, 0x1eec,
+ 0x1eee, 0x1eee,
+ 0x1ef0, 0x1ef0,
+ 0x1ef2, 0x1ef2,
+ 0x1ef4, 0x1ef4,
+ 0x1ef6, 0x1ef6,
+ 0x1ef8, 0x1ef8,
+ 0x1efa, 0x1efa,
+ 0x1efc, 0x1efc,
+ 0x1efe, 0x1efe,
+ 0x1f08, 0x1f0f,
+ 0x1f18, 0x1f1d,
+ 0x1f28, 0x1f2f,
+ 0x1f38, 0x1f3f,
+ 0x1f48, 0x1f4d,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f5f,
+ 0x1f68, 0x1f6f,
+ 0x1fb8, 0x1fbb,
+ 0x1fc8, 0x1fcb,
+ 0x1fd8, 0x1fdb,
+ 0x1fe8, 0x1fec,
+ 0x1ff8, 0x1ffb,
+ 0x2102, 0x2102,
+ 0x2107, 0x2107,
+ 0x210b, 0x210d,
+ 0x2110, 0x2112,
+ 0x2115, 0x2115,
+ 0x2119, 0x211d,
+ 0x2124, 0x2124,
+ 0x2126, 0x2126,
+ 0x2128, 0x2128,
+ 0x212a, 0x212d,
+ 0x2130, 0x2133,
+ 0x213e, 0x213f,
+ 0x2145, 0x2145,
+ 0x2160, 0x216f,
+ 0x2183, 0x2183,
+ 0x24b6, 0x24cf,
+ 0x2c00, 0x2c2e,
+ 0x2c60, 0x2c60,
+ 0x2c62, 0x2c64,
+ 0x2c67, 0x2c67,
+ 0x2c69, 0x2c69,
+ 0x2c6b, 0x2c6b,
+ 0x2c6d, 0x2c70,
+ 0x2c72, 0x2c72,
+ 0x2c75, 0x2c75,
+ 0x2c7e, 0x2c80,
+ 0x2c82, 0x2c82,
+ 0x2c84, 0x2c84,
+ 0x2c86, 0x2c86,
+ 0x2c88, 0x2c88,
+ 0x2c8a, 0x2c8a,
+ 0x2c8c, 0x2c8c,
+ 0x2c8e, 0x2c8e,
+ 0x2c90, 0x2c90,
+ 0x2c92, 0x2c92,
+ 0x2c94, 0x2c94,
+ 0x2c96, 0x2c96,
+ 0x2c98, 0x2c98,
+ 0x2c9a, 0x2c9a,
+ 0x2c9c, 0x2c9c,
+ 0x2c9e, 0x2c9e,
+ 0x2ca0, 0x2ca0,
+ 0x2ca2, 0x2ca2,
+ 0x2ca4, 0x2ca4,
+ 0x2ca6, 0x2ca6,
+ 0x2ca8, 0x2ca8,
+ 0x2caa, 0x2caa,
+ 0x2cac, 0x2cac,
+ 0x2cae, 0x2cae,
+ 0x2cb0, 0x2cb0,
+ 0x2cb2, 0x2cb2,
+ 0x2cb4, 0x2cb4,
+ 0x2cb6, 0x2cb6,
+ 0x2cb8, 0x2cb8,
+ 0x2cba, 0x2cba,
+ 0x2cbc, 0x2cbc,
+ 0x2cbe, 0x2cbe,
+ 0x2cc0, 0x2cc0,
+ 0x2cc2, 0x2cc2,
+ 0x2cc4, 0x2cc4,
+ 0x2cc6, 0x2cc6,
+ 0x2cc8, 0x2cc8,
+ 0x2cca, 0x2cca,
+ 0x2ccc, 0x2ccc,
+ 0x2cce, 0x2cce,
+ 0x2cd0, 0x2cd0,
+ 0x2cd2, 0x2cd2,
+ 0x2cd4, 0x2cd4,
+ 0x2cd6, 0x2cd6,
+ 0x2cd8, 0x2cd8,
+ 0x2cda, 0x2cda,
+ 0x2cdc, 0x2cdc,
+ 0x2cde, 0x2cde,
+ 0x2ce0, 0x2ce0,
+ 0x2ce2, 0x2ce2,
+ 0x2ceb, 0x2ceb,
+ 0x2ced, 0x2ced,
+ 0xa640, 0xa640,
+ 0xa642, 0xa642,
+ 0xa644, 0xa644,
+ 0xa646, 0xa646,
+ 0xa648, 0xa648,
+ 0xa64a, 0xa64a,
+ 0xa64c, 0xa64c,
+ 0xa64e, 0xa64e,
+ 0xa650, 0xa650,
+ 0xa652, 0xa652,
+ 0xa654, 0xa654,
+ 0xa656, 0xa656,
+ 0xa658, 0xa658,
+ 0xa65a, 0xa65a,
+ 0xa65c, 0xa65c,
+ 0xa65e, 0xa65e,
+ 0xa660, 0xa660,
+ 0xa662, 0xa662,
+ 0xa664, 0xa664,
+ 0xa666, 0xa666,
+ 0xa668, 0xa668,
+ 0xa66a, 0xa66a,
+ 0xa66c, 0xa66c,
+ 0xa680, 0xa680,
+ 0xa682, 0xa682,
+ 0xa684, 0xa684,
+ 0xa686, 0xa686,
+ 0xa688, 0xa688,
+ 0xa68a, 0xa68a,
+ 0xa68c, 0xa68c,
+ 0xa68e, 0xa68e,
+ 0xa690, 0xa690,
+ 0xa692, 0xa692,
+ 0xa694, 0xa694,
+ 0xa696, 0xa696,
+ 0xa722, 0xa722,
+ 0xa724, 0xa724,
+ 0xa726, 0xa726,
+ 0xa728, 0xa728,
+ 0xa72a, 0xa72a,
+ 0xa72c, 0xa72c,
+ 0xa72e, 0xa72e,
+ 0xa732, 0xa732,
+ 0xa734, 0xa734,
+ 0xa736, 0xa736,
+ 0xa738, 0xa738,
+ 0xa73a, 0xa73a,
+ 0xa73c, 0xa73c,
+ 0xa73e, 0xa73e,
+ 0xa740, 0xa740,
+ 0xa742, 0xa742,
+ 0xa744, 0xa744,
+ 0xa746, 0xa746,
+ 0xa748, 0xa748,
+ 0xa74a, 0xa74a,
+ 0xa74c, 0xa74c,
+ 0xa74e, 0xa74e,
+ 0xa750, 0xa750,
+ 0xa752, 0xa752,
+ 0xa754, 0xa754,
+ 0xa756, 0xa756,
+ 0xa758, 0xa758,
+ 0xa75a, 0xa75a,
+ 0xa75c, 0xa75c,
+ 0xa75e, 0xa75e,
+ 0xa760, 0xa760,
+ 0xa762, 0xa762,
+ 0xa764, 0xa764,
+ 0xa766, 0xa766,
+ 0xa768, 0xa768,
+ 0xa76a, 0xa76a,
+ 0xa76c, 0xa76c,
+ 0xa76e, 0xa76e,
+ 0xa779, 0xa779,
+ 0xa77b, 0xa77b,
+ 0xa77d, 0xa77e,
+ 0xa780, 0xa780,
+ 0xa782, 0xa782,
+ 0xa784, 0xa784,
+ 0xa786, 0xa786,
+ 0xa78b, 0xa78b,
+ 0xa78d, 0xa78d,
+ 0xa790, 0xa790,
+ 0xa7a0, 0xa7a0,
+ 0xa7a2, 0xa7a2,
+ 0xa7a4, 0xa7a4,
+ 0xa7a6, 0xa7a6,
+ 0xa7a8, 0xa7a8,
+ 0xff21, 0xff3a,
+ 0x10400, 0x10427,
+ 0x1d400, 0x1d419,
+ 0x1d434, 0x1d44d,
+ 0x1d468, 0x1d481,
+ 0x1d49c, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b5,
+ 0x1d4d0, 0x1d4e9,
+ 0x1d504, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d538, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d56c, 0x1d585,
+ 0x1d5a0, 0x1d5b9,
+ 0x1d5d4, 0x1d5ed,
+ 0x1d608, 0x1d621,
+ 0x1d63c, 0x1d655,
+ 0x1d670, 0x1d689,
+ 0x1d6a8, 0x1d6c0,
+ 0x1d6e2, 0x1d6fa,
+ 0x1d71c, 0x1d734,
+ 0x1d756, 0x1d76e,
+ 0x1d790, 0x1d7a8,
+ 0x1d7ca, 0x1d7ca,
+}; /* CR_Uppercase */
/* 'Cased': Derived Property */
static const OnigCodePoint CR_Cased[] = {
- 119,
+ 112,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -10064,8 +6797,6 @@ static const OnigCodePoint CR_Cased[] = {
0x0531, 0x0556,
0x0561, 0x0587,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -10086,9 +6817,7 @@ static const OnigCodePoint CR_Cased[] = {
0x1fe0, 0x1fec,
0x1ff2, 0x1ff4,
0x1ff6, 0x1ffc,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
+ 0x2090, 0x2094,
0x2102, 0x2102,
0x2107, 0x2107,
0x210a, 0x2113,
@@ -10110,17 +6839,14 @@ static const OnigCodePoint CR_Cased[] = {
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa640, 0xa66d,
0xa680, 0xa697,
0xa722, 0xa787,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa7fa,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa7fa,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
0xff21, 0xff3a,
@@ -10160,7 +6886,7 @@ static const OnigCodePoint CR_Cased[] = {
/* 'Case_Ignorable': Derived Property */
static const OnigCodePoint CR_Case_Ignorable[] = {
- 295,
+ 277,
0x0027, 0x0027,
0x002e, 0x002e,
0x003a, 0x003a,
@@ -10184,7 +6910,7 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x05c4, 0x05c5,
0x05c7, 0x05c7,
0x05f4, 0x05f4,
- 0x0600, 0x0604,
+ 0x0600, 0x0603,
0x0610, 0x061a,
0x0640, 0x0640,
0x064b, 0x065f,
@@ -10200,7 +6926,6 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x07fa, 0x07fa,
0x0816, 0x082d,
0x0859, 0x085b,
- 0x08e4, 0x08fe,
0x0900, 0x0902,
0x093a, 0x093a,
0x093c, 0x093c,
@@ -10320,7 +7045,6 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x1b80, 0x1b81,
0x1ba2, 0x1ba5,
0x1ba8, 0x1ba9,
- 0x1bab, 0x1bab,
0x1be6, 0x1be6,
0x1be8, 0x1be9,
0x1bed, 0x1bed,
@@ -10332,8 +7056,7 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x1cd4, 0x1ce0,
0x1ce2, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
- 0x1d2c, 0x1d6a,
+ 0x1d2c, 0x1d61,
0x1d78, 0x1d78,
0x1d9b, 0x1de6,
0x1dfc, 0x1dff,
@@ -10354,14 +7077,14 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x207f, 0x207f,
0x2090, 0x209c,
0x20d0, 0x20f0,
- 0x2c7c, 0x2c7d,
+ 0x2c7d, 0x2c7d,
0x2cef, 0x2cf1,
0x2d6f, 0x2d6f,
0x2d7f, 0x2d7f,
0x2de0, 0x2dff,
0x2e2f, 0x2e2f,
0x3005, 0x3005,
- 0x302a, 0x302d,
+ 0x302a, 0x302f,
0x3031, 0x3035,
0x303b, 0x303b,
0x3099, 0x309e,
@@ -10370,14 +7093,12 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0xa4f8, 0xa4fd,
0xa60c, 0xa60c,
0xa66f, 0xa672,
- 0xa674, 0xa67d,
+ 0xa67c, 0xa67d,
0xa67f, 0xa67f,
- 0xa69f, 0xa69f,
0xa6f0, 0xa6f1,
0xa700, 0xa721,
0xa770, 0xa770,
0xa788, 0xa78a,
- 0xa7f8, 0xa7f9,
0xa802, 0xa802,
0xa806, 0xa806,
0xa80b, 0xa80b,
@@ -10403,9 +7124,6 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0xaabe, 0xaabf,
0xaac1, 0xaac1,
0xaadd, 0xaadd,
- 0xaaec, 0xaaed,
- 0xaaf3, 0xaaf4,
- 0xaaf6, 0xaaf6,
0xabe5, 0xabe5,
0xabe8, 0xabe8,
0xabed, 0xabed,
@@ -10438,16 +7156,6 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x110b3, 0x110b6,
0x110b9, 0x110ba,
0x110bd, 0x110bd,
- 0x11100, 0x11102,
- 0x11127, 0x1112b,
- 0x1112d, 0x11134,
- 0x11180, 0x11181,
- 0x111b6, 0x111be,
- 0x116ab, 0x116ab,
- 0x116ad, 0x116ad,
- 0x116b0, 0x116b5,
- 0x116b7, 0x116b7,
- 0x16f8f, 0x16f9f,
0x1d167, 0x1d169,
0x1d173, 0x1d182,
0x1d185, 0x1d18b,
@@ -10460,7 +7168,7 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
/* 'Changes_When_Lowercased': Derived Property */
static const OnigCodePoint CR_Changes_When_Lowercased[] = {
- 571,
+ 566,
0x0041, 0x005a,
0x00c0, 0x00d6,
0x00d8, 0x00de,
@@ -10728,8 +7436,6 @@ static const OnigCodePoint CR_Changes_When_Lowercased[] = {
0x0526, 0x0526,
0x0531, 0x0556,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1e00, 0x1e00,
0x1e02, 0x1e02,
0x1e04, 0x1e04,
@@ -10939,7 +7645,6 @@ static const OnigCodePoint CR_Changes_When_Lowercased[] = {
0x2ce2, 0x2ce2,
0x2ceb, 0x2ceb,
0x2ced, 0x2ced,
- 0x2cf2, 0x2cf2,
0xa640, 0xa640,
0xa642, 0xa642,
0xa644, 0xa644,
@@ -11023,20 +7728,18 @@ static const OnigCodePoint CR_Changes_When_Lowercased[] = {
0xa78b, 0xa78b,
0xa78d, 0xa78d,
0xa790, 0xa790,
- 0xa792, 0xa792,
0xa7a0, 0xa7a0,
0xa7a2, 0xa7a2,
0xa7a4, 0xa7a4,
0xa7a6, 0xa7a6,
0xa7a8, 0xa7a8,
- 0xa7aa, 0xa7aa,
0xff21, 0xff3a,
0x10400, 0x10427,
}; /* CR_Changes_When_Lowercased */
/* 'Changes_When_Uppercased': Derived Property */
static const OnigCodePoint CR_Changes_When_Uppercased[] = {
- 586,
+ 582,
0x0061, 0x007a,
0x00b5, 0x00b5,
0x00df, 0x00f6,
@@ -11186,7 +7889,7 @@ static const OnigCodePoint CR_Changes_When_Uppercased[] = {
0x025b, 0x025b,
0x0260, 0x0260,
0x0263, 0x0263,
- 0x0265, 0x0266,
+ 0x0265, 0x0265,
0x0268, 0x0269,
0x026b, 0x026b,
0x026f, 0x026f,
@@ -11527,10 +8230,7 @@ static const OnigCodePoint CR_Changes_When_Uppercased[] = {
0x2ce3, 0x2ce3,
0x2cec, 0x2cec,
0x2cee, 0x2cee,
- 0x2cf3, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa641, 0xa641,
0xa643, 0xa643,
0xa645, 0xa645,
@@ -11613,7 +8313,6 @@ static const OnigCodePoint CR_Changes_When_Uppercased[] = {
0xa787, 0xa787,
0xa78c, 0xa78c,
0xa791, 0xa791,
- 0xa793, 0xa793,
0xa7a1, 0xa7a1,
0xa7a3, 0xa7a3,
0xa7a5, 0xa7a5,
@@ -11627,7 +8326,7 @@ static const OnigCodePoint CR_Changes_When_Uppercased[] = {
/* 'Changes_When_Titlecased': Derived Property */
static const OnigCodePoint CR_Changes_When_Titlecased[] = {
- 587,
+ 583,
0x0061, 0x007a,
0x00b5, 0x00b5,
0x00df, 0x00f6,
@@ -11778,7 +8477,7 @@ static const OnigCodePoint CR_Changes_When_Titlecased[] = {
0x025b, 0x025b,
0x0260, 0x0260,
0x0263, 0x0263,
- 0x0265, 0x0266,
+ 0x0265, 0x0265,
0x0268, 0x0269,
0x026b, 0x026b,
0x026f, 0x026f,
@@ -12119,10 +8818,7 @@ static const OnigCodePoint CR_Changes_When_Titlecased[] = {
0x2ce3, 0x2ce3,
0x2cec, 0x2cec,
0x2cee, 0x2cee,
- 0x2cf3, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa641, 0xa641,
0xa643, 0xa643,
0xa645, 0xa645,
@@ -12205,7 +8901,6 @@ static const OnigCodePoint CR_Changes_When_Titlecased[] = {
0xa787, 0xa787,
0xa78c, 0xa78c,
0xa791, 0xa791,
- 0xa793, 0xa793,
0xa7a1, 0xa7a1,
0xa7a3, 0xa7a3,
0xa7a5, 0xa7a5,
@@ -12219,7 +8914,7 @@ static const OnigCodePoint CR_Changes_When_Titlecased[] = {
/* 'Changes_When_Casefolded': Derived Property */
static const OnigCodePoint CR_Changes_When_Casefolded[] = {
- 582,
+ 577,
0x0041, 0x005a,
0x00b5, 0x00b5,
0x00c0, 0x00d6,
@@ -12494,8 +9189,6 @@ static const OnigCodePoint CR_Changes_When_Casefolded[] = {
0x0531, 0x0556,
0x0587, 0x0587,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1e00, 0x1e00,
0x1e02, 0x1e02,
0x1e04, 0x1e04,
@@ -12707,7 +9400,6 @@ static const OnigCodePoint CR_Changes_When_Casefolded[] = {
0x2ce2, 0x2ce2,
0x2ceb, 0x2ceb,
0x2ced, 0x2ced,
- 0x2cf2, 0x2cf2,
0xa640, 0xa640,
0xa642, 0xa642,
0xa644, 0xa644,
@@ -12791,13 +9483,11 @@ static const OnigCodePoint CR_Changes_When_Casefolded[] = {
0xa78b, 0xa78b,
0xa78d, 0xa78d,
0xa790, 0xa790,
- 0xa792, 0xa792,
0xa7a0, 0xa7a0,
0xa7a2, 0xa7a2,
0xa7a4, 0xa7a4,
0xa7a6, 0xa7a6,
0xa7a8, 0xa7a8,
- 0xa7aa, 0xa7aa,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
0xff21, 0xff3a,
@@ -12806,7 +9496,7 @@ static const OnigCodePoint CR_Changes_When_Casefolded[] = {
/* 'Changes_When_Casemapped': Derived Property */
static const OnigCodePoint CR_Changes_When_Casemapped[] = {
- 104,
+ 99,
0x0041, 0x005a,
0x0061, 0x007a,
0x00b5, 0x00b5,
@@ -12827,7 +9517,7 @@ static const OnigCodePoint CR_Changes_When_Casemapped[] = {
0x025b, 0x025b,
0x0260, 0x0260,
0x0263, 0x0263,
- 0x0265, 0x0266,
+ 0x0265, 0x0265,
0x0268, 0x0269,
0x026b, 0x026b,
0x026f, 0x026f,
@@ -12855,8 +9545,6 @@ static const OnigCodePoint CR_Changes_When_Casemapped[] = {
0x0531, 0x0556,
0x0561, 0x0587,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1d79, 0x1d79,
0x1d7d, 0x1d7d,
0x1e00, 0x1e9b,
@@ -12894,18 +9582,15 @@ static const OnigCodePoint CR_Changes_When_Casemapped[] = {
0x2c75, 0x2c76,
0x2c7e, 0x2ce3,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa640, 0xa66d,
0xa680, 0xa697,
0xa722, 0xa72f,
0xa732, 0xa76f,
0xa779, 0xa787,
0xa78b, 0xa78d,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
0xff21, 0xff3a,
@@ -12915,7 +9600,7 @@ static const OnigCodePoint CR_Changes_When_Casemapped[] = {
/* 'ID_Start': Derived Property */
static const OnigCodePoint CR_ID_Start[] = {
- 488,
+ 437,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -12963,8 +9648,6 @@ static const OnigCodePoint CR_ID_Start[] = {
0x0824, 0x0824,
0x0828, 0x0828,
0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -13070,7 +9753,7 @@ static const OnigCodePoint CR_ID_Start[] = {
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f40, 0x0f47,
0x0f49, 0x0f6c,
@@ -13085,10 +9768,9 @@ static const OnigCodePoint CR_ID_Start[] = {
0x1075, 0x1081,
0x108e, 0x108e,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -13136,13 +9818,12 @@ static const OnigCodePoint CR_ID_Start[] = {
0x1b45, 0x1b4b,
0x1b83, 0x1ba0,
0x1bae, 0x1baf,
- 0x1bba, 0x1be5,
+ 0x1bc0, 0x1be5,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
- 0x1cf5, 0x1cf6,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -13183,11 +9864,8 @@ static const OnigCodePoint CR_ID_Start[] = {
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
@@ -13211,7 +9889,7 @@ static const OnigCodePoint CR_ID_Start[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -13223,9 +9901,9 @@ static const OnigCodePoint CR_ID_Start[] = {
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa822,
@@ -13250,8 +9928,6 @@ static const OnigCodePoint CR_ID_Start[] = {
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaea,
- 0xaaf2, 0xaaf4,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -13261,7 +9937,8 @@ static const OnigCodePoint CR_ID_Start[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -13311,8 +9988,6 @@ static const OnigCodePoint CR_ID_Start[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -13324,18 +9999,10 @@ static const OnigCodePoint CR_ID_Start[] = {
0x10c00, 0x10c48,
0x11003, 0x11037,
0x11083, 0x110af,
- 0x110d0, 0x110e8,
- 0x11103, 0x11126,
- 0x11183, 0x111b2,
- 0x111c1, 0x111c4,
- 0x11680, 0x116aa,
0x12000, 0x1236e,
0x12400, 0x12462,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f50,
- 0x16f93, 0x16f9f,
0x1b000, 0x1b001,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
@@ -13367,39 +10034,6 @@ static const OnigCodePoint CR_ID_Start[] = {
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -13408,7 +10042,7 @@ static const OnigCodePoint CR_ID_Start[] = {
/* 'ID_Continue': Derived Property */
static const OnigCodePoint CR_ID_Continue[] = {
- 564,
+ 514,
0x0030, 0x0039,
0x0041, 0x005a,
0x005f, 0x005f,
@@ -13457,9 +10091,6 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x07fa, 0x07fa,
0x0800, 0x082d,
0x0840, 0x085b,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0x0900, 0x0963,
0x0966, 0x096f,
0x0971, 0x0977,
@@ -13607,7 +10238,7 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f18, 0x0f19,
0x0f20, 0x0f29,
@@ -13623,10 +10254,9 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1000, 0x1049,
0x1050, 0x109d,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -13658,7 +10288,8 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1760, 0x176c,
0x176e, 0x1770,
0x1772, 0x1773,
- 0x1780, 0x17d3,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17d3,
0x17d7, 0x17d7,
0x17dc, 0x17dd,
0x17e0, 0x17e9,
@@ -13684,12 +10315,14 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1b00, 0x1b4b,
0x1b50, 0x1b59,
0x1b6b, 0x1b73,
- 0x1b80, 0x1bf3,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
0x1c00, 0x1c37,
0x1c40, 0x1c49,
0x1c4d, 0x1c7d,
0x1cd0, 0x1cd2,
- 0x1cd4, 0x1cf6,
+ 0x1cd4, 0x1cf2,
0x1d00, 0x1de6,
0x1dfc, 0x1f15,
0x1f18, 0x1f1d,
@@ -13734,11 +10367,9 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
- 0x2ceb, 0x2cf3,
+ 0x2ceb, 0x2cf1,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d7f, 0x2d96,
0x2da0, 0x2da6,
@@ -13763,21 +10394,21 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
0xa610, 0xa62b,
0xa640, 0xa66f,
- 0xa674, 0xa67d,
+ 0xa67c, 0xa67d,
0xa67f, 0xa697,
- 0xa69f, 0xa6f1,
+ 0xa6a0, 0xa6f1,
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa827,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c4,
0xa8d0, 0xa8d9,
@@ -13795,8 +10426,6 @@ static const OnigCodePoint CR_ID_Continue[] = {
0xaa7a, 0xaa7b,
0xaa80, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf6,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -13808,7 +10437,8 @@ static const OnigCodePoint CR_ID_Continue[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -13865,8 +10495,6 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a03,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
@@ -13882,21 +10510,10 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x11000, 0x11046,
0x11066, 0x1106f,
0x11080, 0x110ba,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x1113f,
- 0x11180, 0x111c4,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
0x1b000, 0x1b001,
0x1d165, 0x1d169,
0x1d16d, 0x1d172,
@@ -13935,39 +10552,6 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -13977,7 +10561,7 @@ static const OnigCodePoint CR_ID_Continue[] = {
/* 'XID_Start': Derived Property */
static const OnigCodePoint CR_XID_Start[] = {
- 495,
+ 444,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -14025,8 +10609,6 @@ static const OnigCodePoint CR_XID_Start[] = {
0x0824, 0x0824,
0x0828, 0x0828,
0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -14132,7 +10714,7 @@ static const OnigCodePoint CR_XID_Start[] = {
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f40, 0x0f47,
0x0f49, 0x0f6c,
@@ -14147,10 +10729,9 @@ static const OnigCodePoint CR_XID_Start[] = {
0x1075, 0x1081,
0x108e, 0x108e,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -14198,13 +10779,12 @@ static const OnigCodePoint CR_XID_Start[] = {
0x1b45, 0x1b4b,
0x1b83, 0x1ba0,
0x1bae, 0x1baf,
- 0x1bba, 0x1be5,
+ 0x1bc0, 0x1be5,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
- 0x1cf5, 0x1cf6,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -14245,11 +10825,8 @@ static const OnigCodePoint CR_XID_Start[] = {
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
@@ -14273,7 +10850,7 @@ static const OnigCodePoint CR_XID_Start[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -14285,9 +10862,9 @@ static const OnigCodePoint CR_XID_Start[] = {
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa822,
@@ -14312,8 +10889,6 @@ static const OnigCodePoint CR_XID_Start[] = {
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaea,
- 0xaaf2, 0xaaf4,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -14323,7 +10898,8 @@ static const OnigCodePoint CR_XID_Start[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -14380,8 +10956,6 @@ static const OnigCodePoint CR_XID_Start[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -14393,18 +10967,10 @@ static const OnigCodePoint CR_XID_Start[] = {
0x10c00, 0x10c48,
0x11003, 0x11037,
0x11083, 0x110af,
- 0x110d0, 0x110e8,
- 0x11103, 0x11126,
- 0x11183, 0x111b2,
- 0x111c1, 0x111c4,
- 0x11680, 0x116aa,
0x12000, 0x1236e,
0x12400, 0x12462,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f50,
- 0x16f93, 0x16f9f,
0x1b000, 0x1b001,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
@@ -14436,39 +11002,6 @@ static const OnigCodePoint CR_XID_Start[] = {
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -14477,7 +11010,7 @@ static const OnigCodePoint CR_XID_Start[] = {
/* 'XID_Continue': Derived Property */
static const OnigCodePoint CR_XID_Continue[] = {
- 571,
+ 521,
0x0030, 0x0039,
0x0041, 0x005a,
0x005f, 0x005f,
@@ -14526,9 +11059,6 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x07fa, 0x07fa,
0x0800, 0x082d,
0x0840, 0x085b,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0x0900, 0x0963,
0x0966, 0x096f,
0x0971, 0x0977,
@@ -14676,7 +11206,7 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f18, 0x0f19,
0x0f20, 0x0f29,
@@ -14692,10 +11222,9 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1000, 0x1049,
0x1050, 0x109d,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -14727,7 +11256,8 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1760, 0x176c,
0x176e, 0x1770,
0x1772, 0x1773,
- 0x1780, 0x17d3,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17d3,
0x17d7, 0x17d7,
0x17dc, 0x17dd,
0x17e0, 0x17e9,
@@ -14753,12 +11283,14 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1b00, 0x1b4b,
0x1b50, 0x1b59,
0x1b6b, 0x1b73,
- 0x1b80, 0x1bf3,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
0x1c00, 0x1c37,
0x1c40, 0x1c49,
0x1c4d, 0x1c7d,
0x1cd0, 0x1cd2,
- 0x1cd4, 0x1cf6,
+ 0x1cd4, 0x1cf2,
0x1d00, 0x1de6,
0x1dfc, 0x1f15,
0x1f18, 0x1f1d,
@@ -14803,11 +11335,9 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
- 0x2ceb, 0x2cf3,
+ 0x2ceb, 0x2cf1,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d7f, 0x2d96,
0x2da0, 0x2da6,
@@ -14833,21 +11363,21 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
0xa610, 0xa62b,
0xa640, 0xa66f,
- 0xa674, 0xa67d,
+ 0xa67c, 0xa67d,
0xa67f, 0xa697,
- 0xa69f, 0xa6f1,
+ 0xa6a0, 0xa6f1,
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa827,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c4,
0xa8d0, 0xa8d9,
@@ -14865,8 +11395,6 @@ static const OnigCodePoint CR_XID_Continue[] = {
0xaa7a, 0xaa7b,
0xaa80, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf6,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -14878,7 +11406,8 @@ static const OnigCodePoint CR_XID_Continue[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -14941,8 +11470,6 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a03,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
@@ -14958,21 +11485,10 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x11000, 0x11046,
0x11066, 0x1106f,
0x11080, 0x110ba,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x1113f,
- 0x11180, 0x111c4,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
0x1b000, 0x1b001,
0x1d165, 0x1d169,
0x1d16d, 0x1d172,
@@ -15011,39 +11527,6 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -15073,7 +11556,7 @@ static const OnigCodePoint CR_Default_Ignorable_Code_Point[] = {
/* 'Grapheme_Extend': Derived Property */
static const OnigCodePoint CR_Grapheme_Extend[] = {
- 232,
+ 215,
0x0300, 0x036f,
0x0483, 0x0489,
0x0591, 0x05bd,
@@ -15097,7 +11580,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x0825, 0x0827,
0x0829, 0x082d,
0x0859, 0x085b,
- 0x08e4, 0x08fe,
0x0900, 0x0902,
0x093a, 0x093a,
0x093c, 0x093c,
@@ -15193,7 +11675,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x1732, 0x1734,
0x1752, 0x1753,
0x1772, 0x1773,
- 0x17b4, 0x17b5,
0x17b7, 0x17bd,
0x17c6, 0x17c6,
0x17c9, 0x17d3,
@@ -15221,7 +11702,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x1b80, 0x1b81,
0x1ba2, 0x1ba5,
0x1ba8, 0x1ba9,
- 0x1bab, 0x1bab,
0x1be6, 0x1be6,
0x1be8, 0x1be9,
0x1bed, 0x1bed,
@@ -15232,7 +11712,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x1cd4, 0x1ce0,
0x1ce2, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
0x1dc0, 0x1de6,
0x1dfc, 0x1dff,
0x200c, 0x200d,
@@ -15243,8 +11722,7 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x302a, 0x302f,
0x3099, 0x309a,
0xa66f, 0xa672,
- 0xa674, 0xa67d,
- 0xa69f, 0xa69f,
+ 0xa67c, 0xa67d,
0xa6f0, 0xa6f1,
0xa802, 0xa802,
0xa806, 0xa806,
@@ -15268,8 +11746,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0xaab7, 0xaab8,
0xaabe, 0xaabf,
0xaac1, 0xaac1,
- 0xaaec, 0xaaed,
- 0xaaf6, 0xaaf6,
0xabe5, 0xabe5,
0xabe8, 0xabe8,
0xabed, 0xabed,
@@ -15288,16 +11764,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x11080, 0x11081,
0x110b3, 0x110b6,
0x110b9, 0x110ba,
- 0x11100, 0x11102,
- 0x11127, 0x1112b,
- 0x1112d, 0x11134,
- 0x11180, 0x11181,
- 0x111b6, 0x111be,
- 0x116ab, 0x116ab,
- 0x116ad, 0x116ad,
- 0x116b0, 0x116b5,
- 0x116b7, 0x116b7,
- 0x16f8f, 0x16f92,
0x1d165, 0x1d165,
0x1d167, 0x1d169,
0x1d16e, 0x1d172,
@@ -15310,7 +11776,7 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
/* 'Grapheme_Base': Derived Property */
static const OnigCodePoint CR_Grapheme_Base[] = {
- 643,
+ 596,
0x0020, 0x007e,
0x00a0, 0x00ac,
0x00ae, 0x02ff,
@@ -15325,7 +11791,6 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x0559, 0x055f,
0x0561, 0x0587,
0x0589, 0x058a,
- 0x058f, 0x058f,
0x05be, 0x05be,
0x05c0, 0x05c0,
0x05c3, 0x05c3,
@@ -15354,8 +11819,6 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x0830, 0x083e,
0x0840, 0x0858,
0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0903, 0x0939,
0x093b, 0x093b,
0x093d, 0x0940,
@@ -15404,7 +11867,8 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x0acb, 0x0acc,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae1,
- 0x0ae6, 0x0af1,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
0x0b02, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -15504,7 +11968,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f17,
0x0f1a, 0x0f34,
0x0f36, 0x0f36,
@@ -15529,9 +11993,8 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1087, 0x108c,
0x108e, 0x109c,
0x109e, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
+ 0x10d0, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -15604,7 +12067,8 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1b82, 0x1ba1,
0x1ba6, 0x1ba7,
0x1baa, 0x1baa,
- 0x1bac, 0x1be5,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1be5,
0x1be7, 0x1be7,
0x1bea, 0x1bec,
0x1bee, 0x1bee,
@@ -15613,12 +12077,10 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1c34, 0x1c35,
0x1c3b, 0x1c49,
0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
0x1cd3, 0x1cd3,
0x1ce1, 0x1ce1,
0x1ce9, 0x1cec,
- 0x1cee, 0x1cf3,
- 0x1cf5, 0x1cf6,
+ 0x1cee, 0x1cf2,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -15648,16 +12110,15 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x2400, 0x2426,
0x2440, 0x244a,
0x2460, 0x26ff,
- 0x2701, 0x2b4c,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x2b4c,
0x2b50, 0x2b59,
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d70,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
@@ -15668,7 +12129,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
- 0x2e00, 0x2e3b,
+ 0x2e00, 0x2e31,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -15684,7 +12145,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x31f0, 0x321e,
0x3220, 0x32fe,
0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
+ 0x4dc0, 0x9fcb,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
@@ -15694,9 +12155,9 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0xa6a0, 0xa6ef,
0xa6f2, 0xa6f7,
0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa824,
@@ -15730,8 +12191,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0xaab9, 0xaabd,
0xaac0, 0xaac0,
0xaac2, 0xaac2,
- 0xaadb, 0xaaeb,
- 0xaaee, 0xaaf5,
+ 0xaadb, 0xaadf,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -15744,7 +12204,8 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -15806,8 +12267,6 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x10900, 0x1091b,
0x1091f, 0x10939,
0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -15829,27 +12288,11 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x110b7, 0x110b8,
0x110bb, 0x110bc,
0x110be, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11103, 0x11126,
- 0x1112c, 0x1112c,
- 0x11136, 0x11143,
- 0x11182, 0x111b5,
- 0x111bf, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116aa,
- 0x116ac, 0x116ac,
- 0x116ae, 0x116af,
- 0x116b6, 0x116b6,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x12470, 0x12473,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f93, 0x16f9f,
0x1b000, 0x1b001,
0x1d000, 0x1d0f5,
0x1d100, 0x1d126,
@@ -15884,40 +12327,6 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1d552, 0x1d6a5,
0x1d6a8, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
@@ -15926,7 +12335,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1f0d1, 0x1f0df,
0x1f100, 0x1f10a,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -15944,9 +12353,19 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -15958,7 +12377,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
/* 'Grapheme_Link': Derived Property */
static const OnigCodePoint CR_Grapheme_Link[] = {
- 33,
+ 29,
0x094d, 0x094d,
0x09cd, 0x09cd,
0x0a4d, 0x0a4d,
@@ -15977,26 +12396,22 @@ static const OnigCodePoint CR_Grapheme_Link[] = {
0x17d2, 0x17d2,
0x1a60, 0x1a60,
0x1b44, 0x1b44,
- 0x1baa, 0x1bab,
+ 0x1baa, 0x1baa,
0x1bf2, 0x1bf3,
0x2d7f, 0x2d7f,
0xa806, 0xa806,
0xa8c4, 0xa8c4,
0xa953, 0xa953,
0xa9c0, 0xa9c0,
- 0xaaf6, 0xaaf6,
0xabed, 0xabed,
0x10a3f, 0x10a3f,
0x11046, 0x11046,
0x110b9, 0x110b9,
- 0x11133, 0x11134,
- 0x111c0, 0x111c0,
- 0x116b6, 0x116b6,
}; /* CR_Grapheme_Link */
/* 'Common': Script */
static const OnigCodePoint CR_Common[] = {
- 157,
+ 169,
0x0000, 0x0040,
0x005b, 0x0060,
0x007b, 0x00a9,
@@ -16019,6 +12434,7 @@ static const OnigCodePoint CR_Common[] = {
0x0660, 0x0669,
0x06dd, 0x06dd,
0x0964, 0x0965,
+ 0x0970, 0x0970,
0x0e3f, 0x0e3f,
0x0fd5, 0x0fd8,
0x10fb, 0x10fb,
@@ -16029,8 +12445,7 @@ static const OnigCodePoint CR_Common[] = {
0x1cd3, 0x1cd3,
0x1ce1, 0x1ce1,
0x1ce9, 0x1cec,
- 0x1cee, 0x1cf3,
- 0x1cf5, 0x1cf6,
+ 0x1cee, 0x1cf2,
0x2000, 0x200b,
0x200e, 0x2064,
0x206a, 0x2070,
@@ -16047,10 +12462,12 @@ static const OnigCodePoint CR_Common[] = {
0x2400, 0x2426,
0x2440, 0x244a,
0x2460, 0x26ff,
- 0x2701, 0x27ff,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x27ff,
0x2900, 0x2b4c,
0x2b50, 0x2b59,
- 0x2e00, 0x2e3b,
+ 0x2e00, 0x2e31,
0x2ff0, 0x2ffb,
0x3000, 0x3004,
0x3006, 0x3006,
@@ -16127,7 +12544,7 @@ static const OnigCodePoint CR_Common[] = {
0x1f0d1, 0x1f0df,
0x1f100, 0x1f10a,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f1ff,
0x1f201, 0x1f202,
@@ -16146,9 +12563,19 @@ static const OnigCodePoint CR_Common[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -16183,9 +12610,9 @@ static const OnigCodePoint CR_Latin[] = {
0x2c60, 0x2c7f,
0xa722, 0xa787,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa7ff,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa7ff,
0xfb00, 0xfb06,
0xff21, 0xff3a,
0xff41, 0xff5a,
@@ -16237,18 +12664,17 @@ static const OnigCodePoint CR_Cyrillic[] = {
0x1d2b, 0x1d2b,
0x1d78, 0x1d78,
0x2de0, 0x2dff,
- 0xa640, 0xa697,
- 0xa69f, 0xa69f,
+ 0xa640, 0xa673,
+ 0xa67c, 0xa697,
}; /* CR_Cyrillic */
/* 'Armenian': Script */
static const OnigCodePoint CR_Armenian[] = {
- 6,
+ 5,
0x0531, 0x0556,
0x0559, 0x055f,
0x0561, 0x0587,
0x058a, 0x058a,
- 0x058f, 0x058f,
0xfb13, 0xfb17,
}; /* CR_Armenian */
@@ -16268,8 +12694,8 @@ static const OnigCodePoint CR_Hebrew[] = {
/* 'Arabic': Script */
static const OnigCodePoint CR_Arabic[] = {
- 56,
- 0x0600, 0x0604,
+ 19,
+ 0x0600, 0x0603,
0x0606, 0x060b,
0x060d, 0x061a,
0x061e, 0x061e,
@@ -16280,9 +12706,6 @@ static const OnigCodePoint CR_Arabic[] = {
0x0671, 0x06dc,
0x06de, 0x06ff,
0x0750, 0x077f,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0xfb50, 0xfbc1,
0xfbd3, 0xfd3d,
0xfd50, 0xfd8f,
@@ -16291,40 +12714,6 @@ static const OnigCodePoint CR_Arabic[] = {
0xfe70, 0xfe74,
0xfe76, 0xfefc,
0x10e60, 0x10e7e,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
}; /* CR_Arabic */
/* 'Syriac': Script */
@@ -16343,10 +12732,11 @@ static const OnigCodePoint CR_Thaana[] = {
/* 'Devanagari': Script */
static const OnigCodePoint CR_Devanagari[] = {
- 5,
+ 6,
0x0900, 0x0950,
0x0953, 0x0963,
- 0x0966, 0x0977,
+ 0x0966, 0x096f,
+ 0x0971, 0x0977,
0x0979, 0x097f,
0xa8e0, 0xa8fb,
}; /* CR_Devanagari */
@@ -16393,7 +12783,7 @@ static const OnigCodePoint CR_Gurmukhi[] = {
/* 'Gujarati': Script */
static const OnigCodePoint CR_Gujarati[] = {
- 13,
+ 14,
0x0a81, 0x0a83,
0x0a85, 0x0a8d,
0x0a8f, 0x0a91,
@@ -16406,7 +12796,8 @@ static const OnigCodePoint CR_Gujarati[] = {
0x0acb, 0x0acd,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
}; /* CR_Gujarati */
/* 'Oriya': Script */
@@ -16546,7 +12937,7 @@ static const OnigCodePoint CR_Lao[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
}; /* CR_Lao */
/* 'Tibetan': Script */
@@ -16570,15 +12961,11 @@ static const OnigCodePoint CR_Myanmar[] = {
/* 'Georgian': Script */
static const OnigCodePoint CR_Georgian[] = {
- 8,
+ 4,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x10ff,
+ 0x10fc, 0x10fc,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
}; /* CR_Georgian */
/* 'Hangul': Script */
@@ -16715,7 +13102,7 @@ static const OnigCodePoint CR_Bopomofo[] = {
/* 'Han': Script */
static const OnigCodePoint CR_Han[] = {
- 15,
+ 16,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -16724,8 +13111,9 @@ static const OnigCodePoint CR_Han[] = {
0x3021, 0x3029,
0x3038, 0x303b,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xf900, 0xfa6d,
+ 0x4e00, 0x9fcb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
@@ -16761,7 +13149,7 @@ static const OnigCodePoint CR_Deseret[] = {
/* 'Inherited': Script */
static const OnigCodePoint CR_Inherited[] = {
- 25,
+ 24,
0x0300, 0x036f,
0x0485, 0x0486,
0x064b, 0x0655,
@@ -16772,7 +13160,6 @@ static const OnigCodePoint CR_Inherited[] = {
0x1cd4, 0x1ce0,
0x1ce2, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
0x1dc0, 0x1de6,
0x1dfc, 0x1dff,
0x200c, 0x200d,
@@ -16893,7 +13280,7 @@ static const OnigCodePoint CR_Buginese[] = {
static const OnigCodePoint CR_Coptic[] = {
3,
0x03e2, 0x03ef,
- 0x2c80, 0x2cf3,
+ 0x2c80, 0x2cf1,
0x2cf9, 0x2cff,
}; /* CR_Coptic */
@@ -16916,7 +13303,7 @@ static const OnigCodePoint CR_Glagolitic[] = {
/* 'Tifinagh': Script */
static const OnigCodePoint CR_Tifinagh[] = {
3,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d70,
0x2d7f, 0x2d7f,
}; /* CR_Tifinagh */
@@ -16984,8 +13371,8 @@ static const OnigCodePoint CR_Nko[] = {
/* 'Sundanese': Script */
static const OnigCodePoint CR_Sundanese[] = {
2,
- 0x1b80, 0x1bbf,
- 0x1cc0, 0x1cc7,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
}; /* CR_Sundanese */
/* 'Lepcha': Script */
@@ -17116,8 +13503,7 @@ static const OnigCodePoint CR_Javanese[] = {
/* 'Meetei_Mayek': Script */
static const OnigCodePoint CR_Meetei_Mayek[] = {
- 3,
- 0xaae0, 0xaaf6,
+ 2,
0xabc0, 0xabed,
0xabf0, 0xabf9,
}; /* CR_Meetei_Mayek */
@@ -17182,57 +13568,21 @@ static const OnigCodePoint CR_Mandaic[] = {
0x085e, 0x085e,
}; /* CR_Mandaic */
-/* 'Chakma': Script */
-static const OnigCodePoint CR_Chakma[] = {
- 2,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
-}; /* CR_Chakma */
-
-/* 'Meroitic_Cursive': Script */
-static const OnigCodePoint CR_Meroitic_Cursive[] = {
- 2,
- 0x109a0, 0x109b7,
- 0x109be, 0x109bf,
-}; /* CR_Meroitic_Cursive */
-
-/* 'Meroitic_Hieroglyphs': Script */
-static const OnigCodePoint CR_Meroitic_Hieroglyphs[] = {
- 1,
- 0x10980, 0x1099f,
-}; /* CR_Meroitic_Hieroglyphs */
-
-/* 'Miao': Script */
-static const OnigCodePoint CR_Miao[] = {
- 3,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
-}; /* CR_Miao */
-
-/* 'Sharada': Script */
-static const OnigCodePoint CR_Sharada[] = {
- 2,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
-}; /* CR_Sharada */
-
-/* 'Sora_Sompeng': Script */
-static const OnigCodePoint CR_Sora_Sompeng[] = {
- 2,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
-}; /* CR_Sora_Sompeng */
-
-/* 'Takri': Script */
-static const OnigCodePoint CR_Takri[] = {
- 2,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
-}; /* CR_Takri */
-
/* 'White_Space': Binary Property */
-#define CR_White_Space CR_Space
+static const OnigCodePoint CR_White_Space[] = {
+ 11,
+ 0x0009, 0x000d,
+ 0x0020, 0x0020,
+ 0x0085, 0x0085,
+ 0x00a0, 0x00a0,
+ 0x1680, 0x1680,
+ 0x180e, 0x180e,
+ 0x2000, 0x200a,
+ 0x2028, 0x2029,
+ 0x202f, 0x202f,
+ 0x205f, 0x205f,
+ 0x3000, 0x3000,
+}; /* CR_White_Space */
/* 'Bidi_Control': Binary Property */
static const OnigCodePoint CR_Bidi_Control[] = {
@@ -17249,7 +13599,7 @@ static const OnigCodePoint CR_Join_Control[] = {
/* 'Dash': Binary Property */
static const OnigCodePoint CR_Dash[] = {
- 20,
+ 19,
0x002d, 0x002d,
0x058a, 0x058a,
0x05be, 0x05be,
@@ -17262,7 +13612,6 @@ static const OnigCodePoint CR_Dash[] = {
0x2212, 0x2212,
0x2e17, 0x2e17,
0x2e1a, 0x2e1a,
- 0x2e3a, 0x2e3b,
0x301c, 0x301c,
0x3030, 0x3030,
0x30a0, 0x30a0,
@@ -17306,7 +13655,7 @@ static const OnigCodePoint CR_Quotation_Mark[] = {
/* 'Terminal_Punctuation': Binary Property */
static const OnigCodePoint CR_Terminal_Punctuation[] = {
- 70,
+ 67,
0x0021, 0x0021,
0x002c, 0x002c,
0x002e, 0x002e,
@@ -17356,7 +13705,6 @@ static const OnigCodePoint CR_Terminal_Punctuation[] = {
0xa9c7, 0xa9c9,
0xaa5d, 0xaa5f,
0xaadf, 0xaadf,
- 0xaaf0, 0xaaf1,
0xabeb, 0xabeb,
0xfe50, 0xfe52,
0xfe54, 0xfe57,
@@ -17374,14 +13722,12 @@ static const OnigCodePoint CR_Terminal_Punctuation[] = {
0x10b3a, 0x10b3f,
0x11047, 0x1104d,
0x110be, 0x110c1,
- 0x11141, 0x11143,
- 0x111c5, 0x111c6,
0x12470, 0x12473,
}; /* CR_Terminal_Punctuation */
/* 'Other_Math': Binary Property */
static const OnigCodePoint CR_Other_Math[] = {
- 133,
+ 100,
0x005e, 0x005e,
0x03d0, 0x03d2,
0x03d5, 0x03d5,
@@ -17482,39 +13828,6 @@ static const OnigCodePoint CR_Other_Math[] = {
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
}; /* CR_Other_Math */
/* 'Hex_Digit': Binary Property */
@@ -17529,11 +13842,16 @@ static const OnigCodePoint CR_Hex_Digit[] = {
}; /* CR_Hex_Digit */
/* 'ASCII_Hex_Digit': Binary Property */
-#define CR_ASCII_Hex_Digit CR_XDigit
+static const OnigCodePoint CR_ASCII_Hex_Digit[] = {
+ 3,
+ 0x0030, 0x0039,
+ 0x0041, 0x0046,
+ 0x0061, 0x0066,
+}; /* CR_ASCII_Hex_Digit */
/* 'Other_Alphabetic': Binary Property */
static const OnigCodePoint CR_Other_Alphabetic[] = {
- 158,
+ 145,
0x0345, 0x0345,
0x05b0, 0x05bd,
0x05bf, 0x05bf,
@@ -17555,8 +13873,6 @@ static const OnigCodePoint CR_Other_Alphabetic[] = {
0x081b, 0x0823,
0x0825, 0x0827,
0x0829, 0x082c,
- 0x08e4, 0x08e9,
- 0x08f0, 0x08fe,
0x0900, 0x0903,
0x093a, 0x093b,
0x093e, 0x094c,
@@ -17653,14 +13969,11 @@ static const OnigCodePoint CR_Other_Alphabetic[] = {
0x1b35, 0x1b43,
0x1b80, 0x1b82,
0x1ba1, 0x1ba9,
- 0x1bac, 0x1bad,
0x1be7, 0x1bf1,
0x1c24, 0x1c35,
- 0x1cf2, 0x1cf3,
+ 0x1cf2, 0x1cf2,
0x24b6, 0x24e9,
0x2de0, 0x2dff,
- 0xa674, 0xa67b,
- 0xa69f, 0xa69f,
0xa823, 0xa827,
0xa880, 0xa881,
0xa8b4, 0xa8c3,
@@ -17675,8 +13988,6 @@ static const OnigCodePoint CR_Other_Alphabetic[] = {
0xaab2, 0xaab4,
0xaab7, 0xaab8,
0xaabe, 0xaabe,
- 0xaaeb, 0xaaef,
- 0xaaf5, 0xaaf5,
0xabe3, 0xabea,
0xfb1e, 0xfb1e,
0x10a01, 0x10a03,
@@ -17686,23 +13997,18 @@ static const OnigCodePoint CR_Other_Alphabetic[] = {
0x11038, 0x11045,
0x11082, 0x11082,
0x110b0, 0x110b8,
- 0x11100, 0x11102,
- 0x11127, 0x11132,
- 0x11180, 0x11182,
- 0x111b3, 0x111bf,
- 0x116ab, 0x116b5,
- 0x16f51, 0x16f7e,
}; /* CR_Other_Alphabetic */
/* 'Ideographic': Binary Property */
static const OnigCodePoint CR_Ideographic[] = {
- 11,
+ 12,
0x3006, 0x3007,
0x3021, 0x3029,
0x3038, 0x303a,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xf900, 0xfa6d,
+ 0x4e00, 0x9fcb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
@@ -17712,7 +14018,7 @@ static const OnigCodePoint CR_Ideographic[] = {
/* 'Diacritic': Binary Property */
static const OnigCodePoint CR_Diacritic[] = {
- 125,
+ 117,
0x005e, 0x005e,
0x0060, 0x0060,
0x00a8, 0x00a8,
@@ -17741,7 +14047,6 @@ static const OnigCodePoint CR_Diacritic[] = {
0x07a6, 0x07b0,
0x07eb, 0x07f5,
0x0818, 0x0819,
- 0x08e4, 0x08fe,
0x093c, 0x093c,
0x094d, 0x094d,
0x0951, 0x0954,
@@ -17784,12 +14089,11 @@ static const OnigCodePoint CR_Diacritic[] = {
0x1b34, 0x1b34,
0x1b44, 0x1b44,
0x1b6b, 0x1b73,
- 0x1baa, 0x1bab,
+ 0x1baa, 0x1baa,
0x1c36, 0x1c37,
0x1c78, 0x1c7d,
0x1cd0, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
0x1d2c, 0x1d6a,
0x1dc4, 0x1dcf,
0x1dfd, 0x1dff,
@@ -17810,7 +14114,6 @@ static const OnigCodePoint CR_Diacritic[] = {
0xa6f0, 0xa6f1,
0xa717, 0xa721,
0xa788, 0xa788,
- 0xa7f8, 0xa7f9,
0xa8c4, 0xa8c4,
0xa8e0, 0xa8f1,
0xa92b, 0xa92e,
@@ -17819,7 +14122,6 @@ static const OnigCodePoint CR_Diacritic[] = {
0xa9c0, 0xa9c0,
0xaa7b, 0xaa7b,
0xaabf, 0xaac2,
- 0xaaf6, 0xaaf6,
0xabec, 0xabed,
0xfb1e, 0xfb1e,
0xfe20, 0xfe26,
@@ -17829,10 +14131,6 @@ static const OnigCodePoint CR_Diacritic[] = {
0xff9e, 0xff9f,
0xffe3, 0xffe3,
0x110b9, 0x110ba,
- 0x11133, 0x11134,
- 0x111c0, 0x111c0,
- 0x116b6, 0x116b7,
- 0x16f8f, 0x16f9f,
0x1d167, 0x1d169,
0x1d16d, 0x1d172,
0x1d17b, 0x1d182,
@@ -17842,14 +14140,13 @@ static const OnigCodePoint CR_Diacritic[] = {
/* 'Extender': Binary Property */
static const OnigCodePoint CR_Extender[] = {
- 22,
+ 20,
0x00b7, 0x00b7,
0x02d0, 0x02d1,
0x0640, 0x0640,
0x07fa, 0x07fa,
0x0e46, 0x0e46,
0x0ec6, 0x0ec6,
- 0x180a, 0x180a,
0x1843, 0x1843,
0x1aa7, 0x1aa7,
0x1c36, 0x1c36,
@@ -17863,31 +14160,25 @@ static const OnigCodePoint CR_Extender[] = {
0xa9cf, 0xa9cf,
0xaa70, 0xaa70,
0xaadd, 0xaadd,
- 0xaaf3, 0xaaf4,
0xff70, 0xff70,
}; /* CR_Extender */
/* 'Other_Lowercase': Binary Property */
static const OnigCodePoint CR_Other_Lowercase[] = {
- 18,
- 0x00aa, 0x00aa,
- 0x00ba, 0x00ba,
+ 13,
0x02b0, 0x02b8,
0x02c0, 0x02c1,
0x02e0, 0x02e4,
0x0345, 0x0345,
0x037a, 0x037a,
- 0x1d2c, 0x1d6a,
+ 0x1d2c, 0x1d61,
0x1d78, 0x1d78,
0x1d9b, 0x1dbf,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
+ 0x2090, 0x2094,
0x2170, 0x217f,
0x24d0, 0x24e9,
- 0x2c7c, 0x2c7d,
+ 0x2c7d, 0x2c7d,
0xa770, 0xa770,
- 0xa7f8, 0xa7f9,
}; /* CR_Other_Lowercase */
/* 'Other_Uppercase': Binary Property */
@@ -17922,7 +14213,7 @@ static const OnigCodePoint CR_Noncharacter_Code_Point[] = {
/* 'Other_Grapheme_Extend': Binary Property */
static const OnigCodePoint CR_Other_Grapheme_Extend[] = {
- 17,
+ 16,
0x09be, 0x09be,
0x09d7, 0x09d7,
0x0b3e, 0x0b3e,
@@ -17936,7 +14227,6 @@ static const OnigCodePoint CR_Other_Grapheme_Extend[] = {
0x0dcf, 0x0dcf,
0x0ddf, 0x0ddf,
0x200c, 0x200d,
- 0x302e, 0x302f,
0xff9e, 0xff9f,
0x1d165, 0x1d165,
0x1d16e, 0x1d172,
@@ -17967,7 +14257,7 @@ static const OnigCodePoint CR_Radical[] = {
static const OnigCodePoint CR_Unified_Ideograph[] = {
12,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xfa0e, 0xfa0f,
0xfa11, 0xfa11,
0xfa13, 0xfa14,
@@ -17982,10 +14272,9 @@ static const OnigCodePoint CR_Unified_Ideograph[] = {
/* 'Other_Default_Ignorable_Code_Point': Binary Property */
static const OnigCodePoint CR_Other_Default_Ignorable_Code_Point[] = {
- 11,
+ 10,
0x034f, 0x034f,
0x115f, 0x1160,
- 0x17b4, 0x17b5,
0x2065, 0x2069,
0x3164, 0x3164,
0xffa0, 0xffa0,
@@ -18075,7 +14364,7 @@ static const OnigCodePoint CR_Other_ID_Continue[] = {
/* 'STerm': Binary Property */
static const OnigCodePoint CR_STerm[] = {
- 50,
+ 47,
0x0021, 0x0021,
0x002e, 0x002e,
0x003f, 0x003f,
@@ -18113,7 +14402,6 @@ static const OnigCodePoint CR_STerm[] = {
0xa92f, 0xa92f,
0xa9c8, 0xa9c9,
0xaa5d, 0xaa5f,
- 0xaaf0, 0xaaf1,
0xabeb, 0xabeb,
0xfe52, 0xfe52,
0xfe56, 0xfe57,
@@ -18124,8 +14412,6 @@ static const OnigCodePoint CR_STerm[] = {
0x10a56, 0x10a57,
0x11047, 0x11048,
0x110be, 0x110c1,
- 0x11141, 0x11143,
- 0x111c5, 0x111c6,
}; /* CR_STerm */
/* 'Variation_Selector': Binary Property */
@@ -18181,7 +14467,7 @@ static const OnigCodePoint CR_Pattern_Syntax[] = {
/* 'Unknown': Script */
static const OnigCodePoint CR_Unknown[] = {
- 537,
+ 499,
0x0378, 0x0379,
0x037f, 0x0383,
0x038b, 0x038b,
@@ -18191,12 +14477,11 @@ static const OnigCodePoint CR_Unknown[] = {
0x0557, 0x0558,
0x0560, 0x0560,
0x0588, 0x0588,
- 0x058b, 0x058e,
- 0x0590, 0x0590,
+ 0x058b, 0x0590,
0x05c8, 0x05cf,
0x05eb, 0x05ef,
0x05f5, 0x05ff,
- 0x0605, 0x0605,
+ 0x0604, 0x0605,
0x061c, 0x061d,
0x070e, 0x070e,
0x074b, 0x074c,
@@ -18205,10 +14490,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x082e, 0x082f,
0x083f, 0x083f,
0x085c, 0x085d,
- 0x085f, 0x089f,
- 0x08a1, 0x08a1,
- 0x08ad, 0x08e3,
- 0x08ff, 0x08ff,
+ 0x085f, 0x08ff,
0x0978, 0x0978,
0x0980, 0x0980,
0x0984, 0x0984,
@@ -18253,6 +14535,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x0ace, 0x0acf,
0x0ad1, 0x0adf,
0x0ae4, 0x0ae5,
+ 0x0af0, 0x0af0,
0x0af2, 0x0b00,
0x0b04, 0x0b04,
0x0b0d, 0x0b0e,
@@ -18353,16 +14636,15 @@ static const OnigCodePoint CR_Unknown[] = {
0x0ec7, 0x0ec7,
0x0ece, 0x0ecf,
0x0eda, 0x0edb,
- 0x0ee0, 0x0eff,
+ 0x0ede, 0x0eff,
0x0f48, 0x0f48,
0x0f6d, 0x0f70,
0x0f98, 0x0f98,
0x0fbd, 0x0fbd,
0x0fcd, 0x0fcd,
0x0fdb, 0x0fff,
- 0x10c6, 0x10c6,
- 0x10c8, 0x10cc,
- 0x10ce, 0x10cf,
+ 0x10c6, 0x10cf,
+ 0x10fd, 0x10ff,
0x1249, 0x1249,
0x124e, 0x124f,
0x1257, 0x1257,
@@ -18416,12 +14698,13 @@ static const OnigCodePoint CR_Unknown[] = {
0x1aae, 0x1aff,
0x1b4c, 0x1b4f,
0x1b7d, 0x1b7f,
+ 0x1bab, 0x1bad,
+ 0x1bba, 0x1bbf,
0x1bf4, 0x1bfb,
0x1c38, 0x1c3a,
0x1c4a, 0x1c4c,
- 0x1c80, 0x1cbf,
- 0x1cc8, 0x1ccf,
- 0x1cf7, 0x1cff,
+ 0x1c80, 0x1ccf,
+ 0x1cf3, 0x1cff,
0x1de7, 0x1dfb,
0x1f16, 0x1f17,
0x1f1e, 0x1f1f,
@@ -18450,15 +14733,15 @@ static const OnigCodePoint CR_Unknown[] = {
0x2427, 0x243f,
0x244b, 0x245f,
0x2700, 0x2700,
+ 0x27cb, 0x27cb,
+ 0x27cd, 0x27cd,
0x2b4d, 0x2b4f,
0x2b5a, 0x2bff,
0x2c2f, 0x2c2f,
0x2c5f, 0x2c5f,
- 0x2cf4, 0x2cf8,
- 0x2d26, 0x2d26,
- 0x2d28, 0x2d2c,
- 0x2d2e, 0x2d2f,
- 0x2d68, 0x2d6e,
+ 0x2cf2, 0x2cf8,
+ 0x2d26, 0x2d2f,
+ 0x2d66, 0x2d6e,
0x2d71, 0x2d7e,
0x2d97, 0x2d9f,
0x2da7, 0x2da7,
@@ -18469,7 +14752,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x2dcf, 0x2dcf,
0x2dd7, 0x2dd7,
0x2ddf, 0x2ddf,
- 0x2e3c, 0x2e7f,
+ 0x2e32, 0x2e7f,
0x2e9a, 0x2e9a,
0x2ef4, 0x2eff,
0x2fd6, 0x2fef,
@@ -18484,15 +14767,16 @@ static const OnigCodePoint CR_Unknown[] = {
0x321f, 0x321f,
0x32ff, 0x32ff,
0x4db6, 0x4dbf,
- 0x9fcd, 0x9fff,
+ 0x9fcc, 0x9fff,
0xa48d, 0xa48f,
0xa4c7, 0xa4cf,
0xa62c, 0xa63f,
- 0xa698, 0xa69e,
+ 0xa674, 0xa67b,
+ 0xa698, 0xa69f,
0xa6f8, 0xa6ff,
0xa78f, 0xa78f,
- 0xa794, 0xa79f,
- 0xa7ab, 0xa7f7,
+ 0xa792, 0xa79f,
+ 0xa7aa, 0xa7f9,
0xa82c, 0xa82f,
0xa83a, 0xa83f,
0xa878, 0xa87f,
@@ -18509,7 +14793,7 @@ static const OnigCodePoint CR_Unknown[] = {
0xaa5a, 0xaa5b,
0xaa7c, 0xaa7f,
0xaac3, 0xaada,
- 0xaaf7, 0xab00,
+ 0xaae0, 0xab00,
0xab07, 0xab08,
0xab0f, 0xab10,
0xab17, 0xab1f,
@@ -18520,6 +14804,7 @@ static const OnigCodePoint CR_Unknown[] = {
0xd7a4, 0xd7af,
0xd7c7, 0xd7ca,
0xd7fc, 0xf8ff,
+ 0xfa2e, 0xfa2f,
0xfa6e, 0xfa6f,
0xfada, 0xfaff,
0xfb07, 0xfb12,
@@ -18581,9 +14866,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x10860, 0x108ff,
0x1091c, 0x1091e,
0x1093a, 0x1093e,
- 0x10940, 0x1097f,
- 0x109b8, 0x109bd,
- 0x109c0, 0x109ff,
+ 0x10940, 0x109ff,
0x10a04, 0x10a04,
0x10a07, 0x10a0b,
0x10a14, 0x10a14,
@@ -18601,23 +14884,12 @@ static const OnigCodePoint CR_Unknown[] = {
0x10e7f, 0x10fff,
0x1104e, 0x11051,
0x11070, 0x1107f,
- 0x110c2, 0x110cf,
- 0x110e9, 0x110ef,
- 0x110fa, 0x110ff,
- 0x11135, 0x11135,
- 0x11144, 0x1117f,
- 0x111c9, 0x111cf,
- 0x111da, 0x1167f,
- 0x116b8, 0x116bf,
- 0x116ca, 0x11fff,
+ 0x110c2, 0x11fff,
0x1236f, 0x123ff,
0x12463, 0x1246f,
0x12474, 0x12fff,
0x1342f, 0x167ff,
- 0x16a39, 0x16eff,
- 0x16f45, 0x16f4f,
- 0x16f7f, 0x16f8e,
- 0x16fa0, 0x1afff,
+ 0x16a39, 0x1afff,
0x1b002, 0x1cfff,
0x1d0f6, 0x1d0ff,
0x1d127, 0x1d128,
@@ -18645,41 +14917,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x1d551, 0x1d551,
0x1d6a6, 0x1d6a7,
0x1d7cc, 0x1d7cd,
- 0x1d800, 0x1edff,
- 0x1ee04, 0x1ee04,
- 0x1ee20, 0x1ee20,
- 0x1ee23, 0x1ee23,
- 0x1ee25, 0x1ee26,
- 0x1ee28, 0x1ee28,
- 0x1ee33, 0x1ee33,
- 0x1ee38, 0x1ee38,
- 0x1ee3a, 0x1ee3a,
- 0x1ee3c, 0x1ee41,
- 0x1ee43, 0x1ee46,
- 0x1ee48, 0x1ee48,
- 0x1ee4a, 0x1ee4a,
- 0x1ee4c, 0x1ee4c,
- 0x1ee50, 0x1ee50,
- 0x1ee53, 0x1ee53,
- 0x1ee55, 0x1ee56,
- 0x1ee58, 0x1ee58,
- 0x1ee5a, 0x1ee5a,
- 0x1ee5c, 0x1ee5c,
- 0x1ee5e, 0x1ee5e,
- 0x1ee60, 0x1ee60,
- 0x1ee63, 0x1ee63,
- 0x1ee65, 0x1ee66,
- 0x1ee6b, 0x1ee6b,
- 0x1ee73, 0x1ee73,
- 0x1ee78, 0x1ee78,
- 0x1ee7d, 0x1ee7d,
- 0x1ee7f, 0x1ee7f,
- 0x1ee8a, 0x1ee8a,
- 0x1ee9c, 0x1eea0,
- 0x1eea4, 0x1eea4,
- 0x1eeaa, 0x1eeaa,
- 0x1eebc, 0x1eeef,
- 0x1eef2, 0x1efff,
+ 0x1d800, 0x1efff,
0x1f02c, 0x1f02f,
0x1f094, 0x1f09f,
0x1f0af, 0x1f0b0,
@@ -18688,7 +14926,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x1f0e0, 0x1f0ff,
0x1f10b, 0x1f10f,
0x1f12f, 0x1f12f,
- 0x1f16c, 0x1f16f,
+ 0x1f16a, 0x1f16f,
0x1f19b, 0x1f1e5,
0x1f203, 0x1f20f,
0x1f23b, 0x1f23f,
@@ -18705,9 +14943,19 @@ static const OnigCodePoint CR_Unknown[] = {
0x1f441, 0x1f441,
0x1f4f8, 0x1f4f8,
0x1f4fd, 0x1f4ff,
- 0x1f53e, 0x1f53f,
- 0x1f544, 0x1f54f,
+ 0x1f53e, 0x1f54f,
0x1f568, 0x1f5fa,
+ 0x1f600, 0x1f600,
+ 0x1f611, 0x1f611,
+ 0x1f615, 0x1f615,
+ 0x1f617, 0x1f617,
+ 0x1f619, 0x1f619,
+ 0x1f61b, 0x1f61b,
+ 0x1f61f, 0x1f61f,
+ 0x1f626, 0x1f627,
+ 0x1f62c, 0x1f62c,
+ 0x1f62e, 0x1f62f,
+ 0x1f634, 0x1f634,
0x1f641, 0x1f644,
0x1f650, 0x1f67f,
0x1f6c6, 0x1f6ff,
@@ -18720,6 +14968,8 @@ static const OnigCodePoint CR_Unknown[] = {
0xe0080, 0xe00ff,
0xe01f0, 0x10ffff,
}; /* CR_Unknown */
+#endif /* USE_UNICODE_PROPERTIES */
+#endif /* USE_UNICODE_PROPERTIES */
/* 'Age_1_1': Derived Age 1.1 */
static const OnigCodePoint CR_Age_1_1[] = {
@@ -23604,10 +19854,554 @@ static const OnigCodePoint CR_Age_6_0[] = {
0xefffe, 0x10ffff,
}; /* CR_Age_6_0 */
-/* 'Age_6_1': Derived Age 6.1 */
-static const OnigCodePoint CR_Age_6_1[] = {
- 549,
- 0x0000, 0x0377,
+/* 'NEWLINE': [[:NEWLINE:]] */
+static const OnigCodePoint CR_NEWLINE[] = {
+ 1,
+ 0x000a, 0x000a,
+}; /* CR_NEWLINE */
+
+/* 'Alpha': [[:Alpha:]] */
+#define CR_Alpha CR_Alphabetic
+
+/* 'Blank': [[:Blank:]] */
+static const OnigCodePoint CR_Blank[] = {
+ 9,
+ 0x0009, 0x0009,
+ 0x0020, 0x0020,
+ 0x00a0, 0x00a0,
+ 0x1680, 0x1680,
+ 0x180e, 0x180e,
+ 0x2000, 0x200a,
+ 0x202f, 0x202f,
+ 0x205f, 0x205f,
+ 0x3000, 0x3000,
+}; /* CR_Blank */
+
+/* 'Cntrl': [[:Cntrl:]] */
+#define CR_Cntrl CR_Cc
+
+/* 'Digit': [[:Digit:]] */
+#define CR_Digit CR_Nd
+
+/* 'Graph': [[:Graph:]] */
+static const OnigCodePoint CR_Graph[] = {
+ 506,
+ 0x0021, 0x007e,
+ 0x00a1, 0x0377,
+ 0x037a, 0x037e,
+ 0x0384, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x03a1,
+ 0x03a3, 0x0527,
+ 0x0531, 0x0556,
+ 0x0559, 0x055f,
+ 0x0561, 0x0587,
+ 0x0589, 0x058a,
+ 0x0591, 0x05c7,
+ 0x05d0, 0x05ea,
+ 0x05f0, 0x05f4,
+ 0x0600, 0x0603,
+ 0x0606, 0x061b,
+ 0x061e, 0x070d,
+ 0x070f, 0x074a,
+ 0x074d, 0x07b1,
+ 0x07c0, 0x07fa,
+ 0x0800, 0x082d,
+ 0x0830, 0x083e,
+ 0x0840, 0x085b,
+ 0x085e, 0x085e,
+ 0x0900, 0x0977,
+ 0x0979, 0x097f,
+ 0x0981, 0x0983,
+ 0x0985, 0x098c,
+ 0x098f, 0x0990,
+ 0x0993, 0x09a8,
+ 0x09aa, 0x09b0,
+ 0x09b2, 0x09b2,
+ 0x09b6, 0x09b9,
+ 0x09bc, 0x09c4,
+ 0x09c7, 0x09c8,
+ 0x09cb, 0x09ce,
+ 0x09d7, 0x09d7,
+ 0x09dc, 0x09dd,
+ 0x09df, 0x09e3,
+ 0x09e6, 0x09fb,
+ 0x0a01, 0x0a03,
+ 0x0a05, 0x0a0a,
+ 0x0a0f, 0x0a10,
+ 0x0a13, 0x0a28,
+ 0x0a2a, 0x0a30,
+ 0x0a32, 0x0a33,
+ 0x0a35, 0x0a36,
+ 0x0a38, 0x0a39,
+ 0x0a3c, 0x0a3c,
+ 0x0a3e, 0x0a42,
+ 0x0a47, 0x0a48,
+ 0x0a4b, 0x0a4d,
+ 0x0a51, 0x0a51,
+ 0x0a59, 0x0a5c,
+ 0x0a5e, 0x0a5e,
+ 0x0a66, 0x0a75,
+ 0x0a81, 0x0a83,
+ 0x0a85, 0x0a8d,
+ 0x0a8f, 0x0a91,
+ 0x0a93, 0x0aa8,
+ 0x0aaa, 0x0ab0,
+ 0x0ab2, 0x0ab3,
+ 0x0ab5, 0x0ab9,
+ 0x0abc, 0x0ac5,
+ 0x0ac7, 0x0ac9,
+ 0x0acb, 0x0acd,
+ 0x0ad0, 0x0ad0,
+ 0x0ae0, 0x0ae3,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
+ 0x0b01, 0x0b03,
+ 0x0b05, 0x0b0c,
+ 0x0b0f, 0x0b10,
+ 0x0b13, 0x0b28,
+ 0x0b2a, 0x0b30,
+ 0x0b32, 0x0b33,
+ 0x0b35, 0x0b39,
+ 0x0b3c, 0x0b44,
+ 0x0b47, 0x0b48,
+ 0x0b4b, 0x0b4d,
+ 0x0b56, 0x0b57,
+ 0x0b5c, 0x0b5d,
+ 0x0b5f, 0x0b63,
+ 0x0b66, 0x0b77,
+ 0x0b82, 0x0b83,
+ 0x0b85, 0x0b8a,
+ 0x0b8e, 0x0b90,
+ 0x0b92, 0x0b95,
+ 0x0b99, 0x0b9a,
+ 0x0b9c, 0x0b9c,
+ 0x0b9e, 0x0b9f,
+ 0x0ba3, 0x0ba4,
+ 0x0ba8, 0x0baa,
+ 0x0bae, 0x0bb9,
+ 0x0bbe, 0x0bc2,
+ 0x0bc6, 0x0bc8,
+ 0x0bca, 0x0bcd,
+ 0x0bd0, 0x0bd0,
+ 0x0bd7, 0x0bd7,
+ 0x0be6, 0x0bfa,
+ 0x0c01, 0x0c03,
+ 0x0c05, 0x0c0c,
+ 0x0c0e, 0x0c10,
+ 0x0c12, 0x0c28,
+ 0x0c2a, 0x0c33,
+ 0x0c35, 0x0c39,
+ 0x0c3d, 0x0c44,
+ 0x0c46, 0x0c48,
+ 0x0c4a, 0x0c4d,
+ 0x0c55, 0x0c56,
+ 0x0c58, 0x0c59,
+ 0x0c60, 0x0c63,
+ 0x0c66, 0x0c6f,
+ 0x0c78, 0x0c7f,
+ 0x0c82, 0x0c83,
+ 0x0c85, 0x0c8c,
+ 0x0c8e, 0x0c90,
+ 0x0c92, 0x0ca8,
+ 0x0caa, 0x0cb3,
+ 0x0cb5, 0x0cb9,
+ 0x0cbc, 0x0cc4,
+ 0x0cc6, 0x0cc8,
+ 0x0cca, 0x0ccd,
+ 0x0cd5, 0x0cd6,
+ 0x0cde, 0x0cde,
+ 0x0ce0, 0x0ce3,
+ 0x0ce6, 0x0cef,
+ 0x0cf1, 0x0cf2,
+ 0x0d02, 0x0d03,
+ 0x0d05, 0x0d0c,
+ 0x0d0e, 0x0d10,
+ 0x0d12, 0x0d3a,
+ 0x0d3d, 0x0d44,
+ 0x0d46, 0x0d48,
+ 0x0d4a, 0x0d4e,
+ 0x0d57, 0x0d57,
+ 0x0d60, 0x0d63,
+ 0x0d66, 0x0d75,
+ 0x0d79, 0x0d7f,
+ 0x0d82, 0x0d83,
+ 0x0d85, 0x0d96,
+ 0x0d9a, 0x0db1,
+ 0x0db3, 0x0dbb,
+ 0x0dbd, 0x0dbd,
+ 0x0dc0, 0x0dc6,
+ 0x0dca, 0x0dca,
+ 0x0dcf, 0x0dd4,
+ 0x0dd6, 0x0dd6,
+ 0x0dd8, 0x0ddf,
+ 0x0df2, 0x0df4,
+ 0x0e01, 0x0e3a,
+ 0x0e3f, 0x0e5b,
+ 0x0e81, 0x0e82,
+ 0x0e84, 0x0e84,
+ 0x0e87, 0x0e88,
+ 0x0e8a, 0x0e8a,
+ 0x0e8d, 0x0e8d,
+ 0x0e94, 0x0e97,
+ 0x0e99, 0x0e9f,
+ 0x0ea1, 0x0ea3,
+ 0x0ea5, 0x0ea5,
+ 0x0ea7, 0x0ea7,
+ 0x0eaa, 0x0eab,
+ 0x0ead, 0x0eb9,
+ 0x0ebb, 0x0ebd,
+ 0x0ec0, 0x0ec4,
+ 0x0ec6, 0x0ec6,
+ 0x0ec8, 0x0ecd,
+ 0x0ed0, 0x0ed9,
+ 0x0edc, 0x0edd,
+ 0x0f00, 0x0f47,
+ 0x0f49, 0x0f6c,
+ 0x0f71, 0x0f97,
+ 0x0f99, 0x0fbc,
+ 0x0fbe, 0x0fcc,
+ 0x0fce, 0x0fda,
+ 0x1000, 0x10c5,
+ 0x10d0, 0x10fc,
+ 0x1100, 0x1248,
+ 0x124a, 0x124d,
+ 0x1250, 0x1256,
+ 0x1258, 0x1258,
+ 0x125a, 0x125d,
+ 0x1260, 0x1288,
+ 0x128a, 0x128d,
+ 0x1290, 0x12b0,
+ 0x12b2, 0x12b5,
+ 0x12b8, 0x12be,
+ 0x12c0, 0x12c0,
+ 0x12c2, 0x12c5,
+ 0x12c8, 0x12d6,
+ 0x12d8, 0x1310,
+ 0x1312, 0x1315,
+ 0x1318, 0x135a,
+ 0x135d, 0x137c,
+ 0x1380, 0x1399,
+ 0x13a0, 0x13f4,
+ 0x1400, 0x167f,
+ 0x1681, 0x169c,
+ 0x16a0, 0x16f0,
+ 0x1700, 0x170c,
+ 0x170e, 0x1714,
+ 0x1720, 0x1736,
+ 0x1740, 0x1753,
+ 0x1760, 0x176c,
+ 0x176e, 0x1770,
+ 0x1772, 0x1773,
+ 0x1780, 0x17dd,
+ 0x17e0, 0x17e9,
+ 0x17f0, 0x17f9,
+ 0x1800, 0x180d,
+ 0x1810, 0x1819,
+ 0x1820, 0x1877,
+ 0x1880, 0x18aa,
+ 0x18b0, 0x18f5,
+ 0x1900, 0x191c,
+ 0x1920, 0x192b,
+ 0x1930, 0x193b,
+ 0x1940, 0x1940,
+ 0x1944, 0x196d,
+ 0x1970, 0x1974,
+ 0x1980, 0x19ab,
+ 0x19b0, 0x19c9,
+ 0x19d0, 0x19da,
+ 0x19de, 0x1a1b,
+ 0x1a1e, 0x1a5e,
+ 0x1a60, 0x1a7c,
+ 0x1a7f, 0x1a89,
+ 0x1a90, 0x1a99,
+ 0x1aa0, 0x1aad,
+ 0x1b00, 0x1b4b,
+ 0x1b50, 0x1b7c,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
+ 0x1bfc, 0x1c37,
+ 0x1c3b, 0x1c49,
+ 0x1c4d, 0x1c7f,
+ 0x1cd0, 0x1cf2,
+ 0x1d00, 0x1de6,
+ 0x1dfc, 0x1f15,
+ 0x1f18, 0x1f1d,
+ 0x1f20, 0x1f45,
+ 0x1f48, 0x1f4d,
+ 0x1f50, 0x1f57,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f7d,
+ 0x1f80, 0x1fb4,
+ 0x1fb6, 0x1fc4,
+ 0x1fc6, 0x1fd3,
+ 0x1fd6, 0x1fdb,
+ 0x1fdd, 0x1fef,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ffe,
+ 0x200b, 0x2027,
+ 0x202a, 0x202e,
+ 0x2030, 0x205e,
+ 0x2060, 0x2064,
+ 0x206a, 0x2071,
+ 0x2074, 0x208e,
+ 0x2090, 0x209c,
+ 0x20a0, 0x20b9,
+ 0x20d0, 0x20f0,
+ 0x2100, 0x2189,
+ 0x2190, 0x23f3,
+ 0x2400, 0x2426,
+ 0x2440, 0x244a,
+ 0x2460, 0x26ff,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x2b4c,
+ 0x2b50, 0x2b59,
+ 0x2c00, 0x2c2e,
+ 0x2c30, 0x2c5e,
+ 0x2c60, 0x2cf1,
+ 0x2cf9, 0x2d25,
+ 0x2d30, 0x2d65,
+ 0x2d6f, 0x2d70,
+ 0x2d7f, 0x2d96,
+ 0x2da0, 0x2da6,
+ 0x2da8, 0x2dae,
+ 0x2db0, 0x2db6,
+ 0x2db8, 0x2dbe,
+ 0x2dc0, 0x2dc6,
+ 0x2dc8, 0x2dce,
+ 0x2dd0, 0x2dd6,
+ 0x2dd8, 0x2dde,
+ 0x2de0, 0x2e31,
+ 0x2e80, 0x2e99,
+ 0x2e9b, 0x2ef3,
+ 0x2f00, 0x2fd5,
+ 0x2ff0, 0x2ffb,
+ 0x3001, 0x303f,
+ 0x3041, 0x3096,
+ 0x3099, 0x30ff,
+ 0x3105, 0x312d,
+ 0x3131, 0x318e,
+ 0x3190, 0x31ba,
+ 0x31c0, 0x31e3,
+ 0x31f0, 0x321e,
+ 0x3220, 0x32fe,
+ 0x3300, 0x4db5,
+ 0x4dc0, 0x9fcb,
+ 0xa000, 0xa48c,
+ 0xa490, 0xa4c6,
+ 0xa4d0, 0xa62b,
+ 0xa640, 0xa673,
+ 0xa67c, 0xa697,
+ 0xa6a0, 0xa6f7,
+ 0xa700, 0xa78e,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa82b,
+ 0xa830, 0xa839,
+ 0xa840, 0xa877,
+ 0xa880, 0xa8c4,
+ 0xa8ce, 0xa8d9,
+ 0xa8e0, 0xa8fb,
+ 0xa900, 0xa953,
+ 0xa95f, 0xa97c,
+ 0xa980, 0xa9cd,
+ 0xa9cf, 0xa9d9,
+ 0xa9de, 0xa9df,
+ 0xaa00, 0xaa36,
+ 0xaa40, 0xaa4d,
+ 0xaa50, 0xaa59,
+ 0xaa5c, 0xaa7b,
+ 0xaa80, 0xaac2,
+ 0xaadb, 0xaadf,
+ 0xab01, 0xab06,
+ 0xab09, 0xab0e,
+ 0xab11, 0xab16,
+ 0xab20, 0xab26,
+ 0xab28, 0xab2e,
+ 0xabc0, 0xabed,
+ 0xabf0, 0xabf9,
+ 0xac00, 0xd7a3,
+ 0xd7b0, 0xd7c6,
+ 0xd7cb, 0xd7fb,
+ 0xe000, 0xfa2d,
+ 0xfa30, 0xfa6d,
+ 0xfa70, 0xfad9,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xfb1d, 0xfb36,
+ 0xfb38, 0xfb3c,
+ 0xfb3e, 0xfb3e,
+ 0xfb40, 0xfb41,
+ 0xfb43, 0xfb44,
+ 0xfb46, 0xfbc1,
+ 0xfbd3, 0xfd3f,
+ 0xfd50, 0xfd8f,
+ 0xfd92, 0xfdc7,
+ 0xfdf0, 0xfdfd,
+ 0xfe00, 0xfe19,
+ 0xfe20, 0xfe26,
+ 0xfe30, 0xfe52,
+ 0xfe54, 0xfe66,
+ 0xfe68, 0xfe6b,
+ 0xfe70, 0xfe74,
+ 0xfe76, 0xfefc,
+ 0xfeff, 0xfeff,
+ 0xff01, 0xffbe,
+ 0xffc2, 0xffc7,
+ 0xffca, 0xffcf,
+ 0xffd2, 0xffd7,
+ 0xffda, 0xffdc,
+ 0xffe0, 0xffe6,
+ 0xffe8, 0xffee,
+ 0xfff9, 0xfffd,
+ 0x10000, 0x1000b,
+ 0x1000d, 0x10026,
+ 0x10028, 0x1003a,
+ 0x1003c, 0x1003d,
+ 0x1003f, 0x1004d,
+ 0x10050, 0x1005d,
+ 0x10080, 0x100fa,
+ 0x10100, 0x10102,
+ 0x10107, 0x10133,
+ 0x10137, 0x1018a,
+ 0x10190, 0x1019b,
+ 0x101d0, 0x101fd,
+ 0x10280, 0x1029c,
+ 0x102a0, 0x102d0,
+ 0x10300, 0x1031e,
+ 0x10320, 0x10323,
+ 0x10330, 0x1034a,
+ 0x10380, 0x1039d,
+ 0x1039f, 0x103c3,
+ 0x103c8, 0x103d5,
+ 0x10400, 0x1049d,
+ 0x104a0, 0x104a9,
+ 0x10800, 0x10805,
+ 0x10808, 0x10808,
+ 0x1080a, 0x10835,
+ 0x10837, 0x10838,
+ 0x1083c, 0x1083c,
+ 0x1083f, 0x10855,
+ 0x10857, 0x1085f,
+ 0x10900, 0x1091b,
+ 0x1091f, 0x10939,
+ 0x1093f, 0x1093f,
+ 0x10a00, 0x10a03,
+ 0x10a05, 0x10a06,
+ 0x10a0c, 0x10a13,
+ 0x10a15, 0x10a17,
+ 0x10a19, 0x10a33,
+ 0x10a38, 0x10a3a,
+ 0x10a3f, 0x10a47,
+ 0x10a50, 0x10a58,
+ 0x10a60, 0x10a7f,
+ 0x10b00, 0x10b35,
+ 0x10b39, 0x10b55,
+ 0x10b58, 0x10b72,
+ 0x10b78, 0x10b7f,
+ 0x10c00, 0x10c48,
+ 0x10e60, 0x10e7e,
+ 0x11000, 0x1104d,
+ 0x11052, 0x1106f,
+ 0x11080, 0x110c1,
+ 0x12000, 0x1236e,
+ 0x12400, 0x12462,
+ 0x12470, 0x12473,
+ 0x13000, 0x1342e,
+ 0x16800, 0x16a38,
+ 0x1b000, 0x1b001,
+ 0x1d000, 0x1d0f5,
+ 0x1d100, 0x1d126,
+ 0x1d129, 0x1d1dd,
+ 0x1d200, 0x1d245,
+ 0x1d300, 0x1d356,
+ 0x1d360, 0x1d371,
+ 0x1d400, 0x1d454,
+ 0x1d456, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d51e, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d552, 0x1d6a5,
+ 0x1d6a8, 0x1d7cb,
+ 0x1d7ce, 0x1d7ff,
+ 0x1f000, 0x1f02b,
+ 0x1f030, 0x1f093,
+ 0x1f0a0, 0x1f0ae,
+ 0x1f0b1, 0x1f0be,
+ 0x1f0c1, 0x1f0cf,
+ 0x1f0d1, 0x1f0df,
+ 0x1f100, 0x1f10a,
+ 0x1f110, 0x1f12e,
+ 0x1f130, 0x1f169,
+ 0x1f170, 0x1f19a,
+ 0x1f1e6, 0x1f202,
+ 0x1f210, 0x1f23a,
+ 0x1f240, 0x1f248,
+ 0x1f250, 0x1f251,
+ 0x1f300, 0x1f320,
+ 0x1f330, 0x1f335,
+ 0x1f337, 0x1f37c,
+ 0x1f380, 0x1f393,
+ 0x1f3a0, 0x1f3c4,
+ 0x1f3c6, 0x1f3ca,
+ 0x1f3e0, 0x1f3f0,
+ 0x1f400, 0x1f43e,
+ 0x1f440, 0x1f440,
+ 0x1f442, 0x1f4f7,
+ 0x1f4f9, 0x1f4fc,
+ 0x1f500, 0x1f53d,
+ 0x1f550, 0x1f567,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
+ 0x1f645, 0x1f64f,
+ 0x1f680, 0x1f6c5,
+ 0x1f700, 0x1f773,
+ 0x20000, 0x2a6d6,
+ 0x2a700, 0x2b734,
+ 0x2b740, 0x2b81d,
+ 0x2f800, 0x2fa1d,
+ 0xe0001, 0xe0001,
+ 0xe0020, 0xe007f,
+ 0xe0100, 0xe01ef,
+ 0xf0000, 0xffffd,
+ 0x100000, 0x10fffd,
+}; /* CR_Graph */
+
+/* 'Lower': [[:Lower:]] */
+#define CR_Lower CR_Lowercase
+
+/* 'Print': [[:Print:]] */
+static const OnigCodePoint CR_Print[] = {
+ 503,
+ 0x0020, 0x007e,
+ 0x00a0, 0x0377,
0x037a, 0x037e,
0x0384, 0x038a,
0x038c, 0x038c,
@@ -23617,11 +20411,10 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0559, 0x055f,
0x0561, 0x0587,
0x0589, 0x058a,
- 0x058f, 0x058f,
0x0591, 0x05c7,
0x05d0, 0x05ea,
0x05f0, 0x05f4,
- 0x0600, 0x0604,
+ 0x0600, 0x0603,
0x0606, 0x061b,
0x061e, 0x070d,
0x070f, 0x074a,
@@ -23631,9 +20424,6 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0830, 0x083e,
0x0840, 0x085b,
0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0x0900, 0x0977,
0x0979, 0x097f,
0x0981, 0x0983,
@@ -23678,7 +20468,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0acb, 0x0acd,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -23778,7 +20569,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f47,
0x0f49, 0x0f6c,
0x0f71, 0x0f97,
@@ -23786,9 +20577,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0fbe, 0x0fcc,
0x0fce, 0x0fda,
0x1000, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
+ 0x10d0, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -23841,12 +20631,13 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1aa0, 0x1aad,
0x1b00, 0x1b4b,
0x1b50, 0x1b7c,
- 0x1b80, 0x1bf3,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
0x1bfc, 0x1c37,
0x1c3b, 0x1c49,
0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd0, 0x1cf6,
+ 0x1cd0, 0x1cf2,
0x1d00, 0x1de6,
0x1dfc, 0x1f15,
0x1f18, 0x1f1d,
@@ -23864,7 +20655,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1fdd, 0x1fef,
0x1ff2, 0x1ff4,
0x1ff6, 0x1ffe,
- 0x2000, 0x2064,
+ 0x2000, 0x2027,
+ 0x202a, 0x2064,
0x206a, 0x2071,
0x2074, 0x208e,
0x2090, 0x209c,
@@ -23875,15 +20667,15 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x2400, 0x2426,
0x2440, 0x244a,
0x2460, 0x26ff,
- 0x2701, 0x2b4c,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x2b4c,
0x2b50, 0x2b59,
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
- 0x2c60, 0x2cf3,
+ 0x2c60, 0x2cf1,
0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d70,
0x2d7f, 0x2d96,
0x2da0, 0x2da6,
@@ -23894,7 +20686,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
- 0x2de0, 0x2e3b,
+ 0x2de0, 0x2e31,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -23909,16 +20701,17 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x31f0, 0x321e,
0x3220, 0x32fe,
0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
+ 0x4dc0, 0x9fcb,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
- 0xa640, 0xa697,
- 0xa69f, 0xa6f7,
+ 0xa640, 0xa673,
+ 0xa67c, 0xa697,
+ 0xa6a0, 0xa6f7,
0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa82b,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
0xa880, 0xa8c4,
@@ -23934,7 +20727,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0xaa50, 0xaa59,
0xaa5c, 0xaa7b,
0xaa80, 0xaac2,
- 0xaadb, 0xaaf6,
+ 0xaadb, 0xaadf,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -23945,7 +20738,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xd800, 0xfa6d,
+ 0xe000, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -23958,7 +20752,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0xfbd3, 0xfd3f,
0xfd50, 0xfd8f,
0xfd92, 0xfdc7,
- 0xfdd0, 0xfdfd,
+ 0xfdf0, 0xfdfd,
0xfe00, 0xfe19,
0xfe20, 0xfe26,
0xfe30, 0xfe52,
@@ -23974,7 +20768,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0xffda, 0xffdc,
0xffe0, 0xffe6,
0xffe8, 0xffee,
- 0xfff9, 0x1000b,
+ 0xfff9, 0xfffd,
+ 0x10000, 0x1000b,
0x1000d, 0x10026,
0x10028, 0x1003a,
0x1003c, 0x1003d,
@@ -24006,8 +20801,6 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x10900, 0x1091b,
0x1091f, 0x10939,
0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a03,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
@@ -24026,22 +20819,11 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x11000, 0x1104d,
0x11052, 0x1106f,
0x11080, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x12470, 0x12473,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
0x1b000, 0x1b001,
0x1d000, 0x1d0f5,
0x1d100, 0x1d126,
@@ -24070,40 +20852,6 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1d552, 0x1d6a5,
0x1d6a8, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
@@ -24112,7 +20860,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1f0d1, 0x1f0df,
0x1f100, 0x1f10a,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -24130,1368 +20878,1083 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
- 0x1fffe, 0x2a6d6,
+ 0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2f800, 0x2fa1d,
- 0x2fffe, 0x2ffff,
- 0x3fffe, 0x3ffff,
- 0x4fffe, 0x4ffff,
- 0x5fffe, 0x5ffff,
- 0x6fffe, 0x6ffff,
- 0x7fffe, 0x7ffff,
- 0x8fffe, 0x8ffff,
- 0x9fffe, 0x9ffff,
- 0xafffe, 0xaffff,
- 0xbfffe, 0xbffff,
- 0xcfffe, 0xcffff,
- 0xdfffe, 0xdffff,
0xe0001, 0xe0001,
0xe0020, 0xe007f,
0xe0100, 0xe01ef,
- 0xefffe, 0x10ffff,
-}; /* CR_Age_6_1 */
-
-/* 'In_Basic_Latin': Block */
-#define CR_In_Basic_Latin CR_ASCII
-
-/* 'In_Latin_1_Supplement': Block */
-static const OnigCodePoint CR_In_Latin_1_Supplement[] = {
- 1,
- 0x0080, 0x00ff,
-}; /* CR_In_Latin_1_Supplement */
-
-/* 'In_Latin_Extended_A': Block */
-static const OnigCodePoint CR_In_Latin_Extended_A[] = {
- 1,
- 0x0100, 0x017f,
-}; /* CR_In_Latin_Extended_A */
-
-/* 'In_Latin_Extended_B': Block */
-static const OnigCodePoint CR_In_Latin_Extended_B[] = {
- 1,
- 0x0180, 0x024f,
-}; /* CR_In_Latin_Extended_B */
-
-/* 'In_IPA_Extensions': Block */
-static const OnigCodePoint CR_In_IPA_Extensions[] = {
- 1,
- 0x0250, 0x02af,
-}; /* CR_In_IPA_Extensions */
-
-/* 'In_Spacing_Modifier_Letters': Block */
-static const OnigCodePoint CR_In_Spacing_Modifier_Letters[] = {
- 1,
- 0x02b0, 0x02ff,
-}; /* CR_In_Spacing_Modifier_Letters */
-
-/* 'In_Combining_Diacritical_Marks': Block */
-static const OnigCodePoint CR_In_Combining_Diacritical_Marks[] = {
- 1,
- 0x0300, 0x036f,
-}; /* CR_In_Combining_Diacritical_Marks */
-
-/* 'In_Greek_and_Coptic': Block */
-static const OnigCodePoint CR_In_Greek_and_Coptic[] = {
- 1,
- 0x0370, 0x03ff,
-}; /* CR_In_Greek_and_Coptic */
-
-/* 'In_Cyrillic': Block */
-static const OnigCodePoint CR_In_Cyrillic[] = {
- 1,
- 0x0400, 0x04ff,
-}; /* CR_In_Cyrillic */
-
-/* 'In_Cyrillic_Supplement': Block */
-static const OnigCodePoint CR_In_Cyrillic_Supplement[] = {
- 1,
- 0x0500, 0x052f,
-}; /* CR_In_Cyrillic_Supplement */
-
-/* 'In_Armenian': Block */
-static const OnigCodePoint CR_In_Armenian[] = {
- 1,
- 0x0530, 0x058f,
-}; /* CR_In_Armenian */
-
-/* 'In_Hebrew': Block */
-static const OnigCodePoint CR_In_Hebrew[] = {
- 1,
- 0x0590, 0x05ff,
-}; /* CR_In_Hebrew */
-
-/* 'In_Arabic': Block */
-static const OnigCodePoint CR_In_Arabic[] = {
- 1,
- 0x0600, 0x06ff,
-}; /* CR_In_Arabic */
-
-/* 'In_Syriac': Block */
-static const OnigCodePoint CR_In_Syriac[] = {
- 1,
- 0x0700, 0x074f,
-}; /* CR_In_Syriac */
-
-/* 'In_Arabic_Supplement': Block */
-static const OnigCodePoint CR_In_Arabic_Supplement[] = {
- 1,
- 0x0750, 0x077f,
-}; /* CR_In_Arabic_Supplement */
-
-/* 'In_Thaana': Block */
-static const OnigCodePoint CR_In_Thaana[] = {
- 1,
- 0x0780, 0x07bf,
-}; /* CR_In_Thaana */
-
-/* 'In_NKo': Block */
-static const OnigCodePoint CR_In_NKo[] = {
- 1,
- 0x07c0, 0x07ff,
-}; /* CR_In_NKo */
-
-/* 'In_Samaritan': Block */
-static const OnigCodePoint CR_In_Samaritan[] = {
- 1,
- 0x0800, 0x083f,
-}; /* CR_In_Samaritan */
-
-/* 'In_Mandaic': Block */
-static const OnigCodePoint CR_In_Mandaic[] = {
- 1,
- 0x0840, 0x085f,
-}; /* CR_In_Mandaic */
-
-/* 'In_Arabic_Extended_A': Block */
-static const OnigCodePoint CR_In_Arabic_Extended_A[] = {
- 1,
- 0x08a0, 0x08ff,
-}; /* CR_In_Arabic_Extended_A */
-
-/* 'In_Devanagari': Block */
-static const OnigCodePoint CR_In_Devanagari[] = {
- 1,
- 0x0900, 0x097f,
-}; /* CR_In_Devanagari */
-
-/* 'In_Bengali': Block */
-static const OnigCodePoint CR_In_Bengali[] = {
- 1,
- 0x0980, 0x09ff,
-}; /* CR_In_Bengali */
-
-/* 'In_Gurmukhi': Block */
-static const OnigCodePoint CR_In_Gurmukhi[] = {
- 1,
- 0x0a00, 0x0a7f,
-}; /* CR_In_Gurmukhi */
-
-/* 'In_Gujarati': Block */
-static const OnigCodePoint CR_In_Gujarati[] = {
- 1,
- 0x0a80, 0x0aff,
-}; /* CR_In_Gujarati */
-
-/* 'In_Oriya': Block */
-static const OnigCodePoint CR_In_Oriya[] = {
- 1,
- 0x0b00, 0x0b7f,
-}; /* CR_In_Oriya */
-
-/* 'In_Tamil': Block */
-static const OnigCodePoint CR_In_Tamil[] = {
- 1,
- 0x0b80, 0x0bff,
-}; /* CR_In_Tamil */
-
-/* 'In_Telugu': Block */
-static const OnigCodePoint CR_In_Telugu[] = {
- 1,
- 0x0c00, 0x0c7f,
-}; /* CR_In_Telugu */
-
-/* 'In_Kannada': Block */
-static const OnigCodePoint CR_In_Kannada[] = {
- 1,
- 0x0c80, 0x0cff,
-}; /* CR_In_Kannada */
-
-/* 'In_Malayalam': Block */
-static const OnigCodePoint CR_In_Malayalam[] = {
- 1,
- 0x0d00, 0x0d7f,
-}; /* CR_In_Malayalam */
-
-/* 'In_Sinhala': Block */
-static const OnigCodePoint CR_In_Sinhala[] = {
- 1,
- 0x0d80, 0x0dff,
-}; /* CR_In_Sinhala */
-
-/* 'In_Thai': Block */
-static const OnigCodePoint CR_In_Thai[] = {
- 1,
- 0x0e00, 0x0e7f,
-}; /* CR_In_Thai */
-
-/* 'In_Lao': Block */
-static const OnigCodePoint CR_In_Lao[] = {
- 1,
- 0x0e80, 0x0eff,
-}; /* CR_In_Lao */
-
-/* 'In_Tibetan': Block */
-static const OnigCodePoint CR_In_Tibetan[] = {
- 1,
- 0x0f00, 0x0fff,
-}; /* CR_In_Tibetan */
-
-/* 'In_Myanmar': Block */
-static const OnigCodePoint CR_In_Myanmar[] = {
- 1,
- 0x1000, 0x109f,
-}; /* CR_In_Myanmar */
-
-/* 'In_Georgian': Block */
-static const OnigCodePoint CR_In_Georgian[] = {
- 1,
- 0x10a0, 0x10ff,
-}; /* CR_In_Georgian */
-
-/* 'In_Hangul_Jamo': Block */
-static const OnigCodePoint CR_In_Hangul_Jamo[] = {
- 1,
- 0x1100, 0x11ff,
-}; /* CR_In_Hangul_Jamo */
-
-/* 'In_Ethiopic': Block */
-static const OnigCodePoint CR_In_Ethiopic[] = {
- 1,
- 0x1200, 0x137f,
-}; /* CR_In_Ethiopic */
-
-/* 'In_Ethiopic_Supplement': Block */
-static const OnigCodePoint CR_In_Ethiopic_Supplement[] = {
- 1,
- 0x1380, 0x139f,
-}; /* CR_In_Ethiopic_Supplement */
-
-/* 'In_Cherokee': Block */
-static const OnigCodePoint CR_In_Cherokee[] = {
- 1,
- 0x13a0, 0x13ff,
-}; /* CR_In_Cherokee */
-
-/* 'In_Unified_Canadian_Aboriginal_Syllabics': Block */
-static const OnigCodePoint CR_In_Unified_Canadian_Aboriginal_Syllabics[] = {
- 1,
- 0x1400, 0x167f,
-}; /* CR_In_Unified_Canadian_Aboriginal_Syllabics */
-
-/* 'In_Ogham': Block */
-static const OnigCodePoint CR_In_Ogham[] = {
- 1,
- 0x1680, 0x169f,
-}; /* CR_In_Ogham */
-
-/* 'In_Runic': Block */
-static const OnigCodePoint CR_In_Runic[] = {
- 1,
- 0x16a0, 0x16ff,
-}; /* CR_In_Runic */
-
-/* 'In_Tagalog': Block */
-static const OnigCodePoint CR_In_Tagalog[] = {
- 1,
- 0x1700, 0x171f,
-}; /* CR_In_Tagalog */
-
-/* 'In_Hanunoo': Block */
-static const OnigCodePoint CR_In_Hanunoo[] = {
- 1,
- 0x1720, 0x173f,
-}; /* CR_In_Hanunoo */
-
-/* 'In_Buhid': Block */
-static const OnigCodePoint CR_In_Buhid[] = {
- 1,
- 0x1740, 0x175f,
-}; /* CR_In_Buhid */
-
-/* 'In_Tagbanwa': Block */
-static const OnigCodePoint CR_In_Tagbanwa[] = {
- 1,
- 0x1760, 0x177f,
-}; /* CR_In_Tagbanwa */
-
-/* 'In_Khmer': Block */
-static const OnigCodePoint CR_In_Khmer[] = {
- 1,
- 0x1780, 0x17ff,
-}; /* CR_In_Khmer */
-
-/* 'In_Mongolian': Block */
-static const OnigCodePoint CR_In_Mongolian[] = {
- 1,
- 0x1800, 0x18af,
-}; /* CR_In_Mongolian */
-
-/* 'In_Unified_Canadian_Aboriginal_Syllabics_Extended': Block */
-static const OnigCodePoint CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended[] = {
- 1,
- 0x18b0, 0x18ff,
-}; /* CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended */
-
-/* 'In_Limbu': Block */
-static const OnigCodePoint CR_In_Limbu[] = {
- 1,
- 0x1900, 0x194f,
-}; /* CR_In_Limbu */
-
-/* 'In_Tai_Le': Block */
-static const OnigCodePoint CR_In_Tai_Le[] = {
- 1,
- 0x1950, 0x197f,
-}; /* CR_In_Tai_Le */
-
-/* 'In_New_Tai_Lue': Block */
-static const OnigCodePoint CR_In_New_Tai_Lue[] = {
- 1,
- 0x1980, 0x19df,
-}; /* CR_In_New_Tai_Lue */
-
-/* 'In_Khmer_Symbols': Block */
-static const OnigCodePoint CR_In_Khmer_Symbols[] = {
- 1,
- 0x19e0, 0x19ff,
-}; /* CR_In_Khmer_Symbols */
-
-/* 'In_Buginese': Block */
-static const OnigCodePoint CR_In_Buginese[] = {
- 1,
- 0x1a00, 0x1a1f,
-}; /* CR_In_Buginese */
-
-/* 'In_Tai_Tham': Block */
-static const OnigCodePoint CR_In_Tai_Tham[] = {
- 1,
- 0x1a20, 0x1aaf,
-}; /* CR_In_Tai_Tham */
-
-/* 'In_Balinese': Block */
-static const OnigCodePoint CR_In_Balinese[] = {
- 1,
- 0x1b00, 0x1b7f,
-}; /* CR_In_Balinese */
-
-/* 'In_Sundanese': Block */
-static const OnigCodePoint CR_In_Sundanese[] = {
- 1,
- 0x1b80, 0x1bbf,
-}; /* CR_In_Sundanese */
-
-/* 'In_Batak': Block */
-static const OnigCodePoint CR_In_Batak[] = {
- 1,
- 0x1bc0, 0x1bff,
-}; /* CR_In_Batak */
-
-/* 'In_Lepcha': Block */
-static const OnigCodePoint CR_In_Lepcha[] = {
- 1,
- 0x1c00, 0x1c4f,
-}; /* CR_In_Lepcha */
-
-/* 'In_Ol_Chiki': Block */
-#define CR_In_Ol_Chiki CR_Ol_Chiki
-
-/* 'In_Sundanese_Supplement': Block */
-static const OnigCodePoint CR_In_Sundanese_Supplement[] = {
- 1,
- 0x1cc0, 0x1ccf,
-}; /* CR_In_Sundanese_Supplement */
-
-/* 'In_Vedic_Extensions': Block */
-static const OnigCodePoint CR_In_Vedic_Extensions[] = {
- 1,
- 0x1cd0, 0x1cff,
-}; /* CR_In_Vedic_Extensions */
-
-/* 'In_Phonetic_Extensions': Block */
-static const OnigCodePoint CR_In_Phonetic_Extensions[] = {
- 1,
- 0x1d00, 0x1d7f,
-}; /* CR_In_Phonetic_Extensions */
-
-/* 'In_Phonetic_Extensions_Supplement': Block */
-static const OnigCodePoint CR_In_Phonetic_Extensions_Supplement[] = {
- 1,
- 0x1d80, 0x1dbf,
-}; /* CR_In_Phonetic_Extensions_Supplement */
-
-/* 'In_Combining_Diacritical_Marks_Supplement': Block */
-static const OnigCodePoint CR_In_Combining_Diacritical_Marks_Supplement[] = {
- 1,
- 0x1dc0, 0x1dff,
-}; /* CR_In_Combining_Diacritical_Marks_Supplement */
-
-/* 'In_Latin_Extended_Additional': Block */
-static const OnigCodePoint CR_In_Latin_Extended_Additional[] = {
- 1,
- 0x1e00, 0x1eff,
-}; /* CR_In_Latin_Extended_Additional */
-
-/* 'In_Greek_Extended': Block */
-static const OnigCodePoint CR_In_Greek_Extended[] = {
- 1,
- 0x1f00, 0x1fff,
-}; /* CR_In_Greek_Extended */
-
-/* 'In_General_Punctuation': Block */
-static const OnigCodePoint CR_In_General_Punctuation[] = {
- 1,
- 0x2000, 0x206f,
-}; /* CR_In_General_Punctuation */
-
-/* 'In_Superscripts_and_Subscripts': Block */
-static const OnigCodePoint CR_In_Superscripts_and_Subscripts[] = {
- 1,
- 0x2070, 0x209f,
-}; /* CR_In_Superscripts_and_Subscripts */
-
-/* 'In_Currency_Symbols': Block */
-static const OnigCodePoint CR_In_Currency_Symbols[] = {
- 1,
- 0x20a0, 0x20cf,
-}; /* CR_In_Currency_Symbols */
-
-/* 'In_Combining_Diacritical_Marks_for_Symbols': Block */
-static const OnigCodePoint CR_In_Combining_Diacritical_Marks_for_Symbols[] = {
- 1,
- 0x20d0, 0x20ff,
-}; /* CR_In_Combining_Diacritical_Marks_for_Symbols */
-
-/* 'In_Letterlike_Symbols': Block */
-static const OnigCodePoint CR_In_Letterlike_Symbols[] = {
- 1,
- 0x2100, 0x214f,
-}; /* CR_In_Letterlike_Symbols */
-
-/* 'In_Number_Forms': Block */
-static const OnigCodePoint CR_In_Number_Forms[] = {
- 1,
- 0x2150, 0x218f,
-}; /* CR_In_Number_Forms */
-
-/* 'In_Arrows': Block */
-static const OnigCodePoint CR_In_Arrows[] = {
- 1,
- 0x2190, 0x21ff,
-}; /* CR_In_Arrows */
-
-/* 'In_Mathematical_Operators': Block */
-static const OnigCodePoint CR_In_Mathematical_Operators[] = {
- 1,
- 0x2200, 0x22ff,
-}; /* CR_In_Mathematical_Operators */
-
-/* 'In_Miscellaneous_Technical': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Technical[] = {
- 1,
- 0x2300, 0x23ff,
-}; /* CR_In_Miscellaneous_Technical */
-
-/* 'In_Control_Pictures': Block */
-static const OnigCodePoint CR_In_Control_Pictures[] = {
- 1,
- 0x2400, 0x243f,
-}; /* CR_In_Control_Pictures */
-
-/* 'In_Optical_Character_Recognition': Block */
-static const OnigCodePoint CR_In_Optical_Character_Recognition[] = {
- 1,
- 0x2440, 0x245f,
-}; /* CR_In_Optical_Character_Recognition */
-
-/* 'In_Enclosed_Alphanumerics': Block */
-static const OnigCodePoint CR_In_Enclosed_Alphanumerics[] = {
- 1,
- 0x2460, 0x24ff,
-}; /* CR_In_Enclosed_Alphanumerics */
-
-/* 'In_Box_Drawing': Block */
-static const OnigCodePoint CR_In_Box_Drawing[] = {
- 1,
- 0x2500, 0x257f,
-}; /* CR_In_Box_Drawing */
-
-/* 'In_Block_Elements': Block */
-static const OnigCodePoint CR_In_Block_Elements[] = {
- 1,
- 0x2580, 0x259f,
-}; /* CR_In_Block_Elements */
-
-/* 'In_Geometric_Shapes': Block */
-static const OnigCodePoint CR_In_Geometric_Shapes[] = {
- 1,
- 0x25a0, 0x25ff,
-}; /* CR_In_Geometric_Shapes */
-
-/* 'In_Miscellaneous_Symbols': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Symbols[] = {
- 1,
- 0x2600, 0x26ff,
-}; /* CR_In_Miscellaneous_Symbols */
-
-/* 'In_Dingbats': Block */
-static const OnigCodePoint CR_In_Dingbats[] = {
- 1,
- 0x2700, 0x27bf,
-}; /* CR_In_Dingbats */
-
-/* 'In_Miscellaneous_Mathematical_Symbols_A': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Mathematical_Symbols_A[] = {
- 1,
- 0x27c0, 0x27ef,
-}; /* CR_In_Miscellaneous_Mathematical_Symbols_A */
-
-/* 'In_Supplemental_Arrows_A': Block */
-static const OnigCodePoint CR_In_Supplemental_Arrows_A[] = {
- 1,
- 0x27f0, 0x27ff,
-}; /* CR_In_Supplemental_Arrows_A */
-
-/* 'In_Braille_Patterns': Block */
-#define CR_In_Braille_Patterns CR_Braille
-
-/* 'In_Supplemental_Arrows_B': Block */
-static const OnigCodePoint CR_In_Supplemental_Arrows_B[] = {
- 1,
- 0x2900, 0x297f,
-}; /* CR_In_Supplemental_Arrows_B */
-
-/* 'In_Miscellaneous_Mathematical_Symbols_B': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Mathematical_Symbols_B[] = {
- 1,
- 0x2980, 0x29ff,
-}; /* CR_In_Miscellaneous_Mathematical_Symbols_B */
-
-/* 'In_Supplemental_Mathematical_Operators': Block */
-static const OnigCodePoint CR_In_Supplemental_Mathematical_Operators[] = {
- 1,
- 0x2a00, 0x2aff,
-}; /* CR_In_Supplemental_Mathematical_Operators */
-
-/* 'In_Miscellaneous_Symbols_and_Arrows': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Symbols_and_Arrows[] = {
- 1,
- 0x2b00, 0x2bff,
-}; /* CR_In_Miscellaneous_Symbols_and_Arrows */
-
-/* 'In_Glagolitic': Block */
-static const OnigCodePoint CR_In_Glagolitic[] = {
- 1,
- 0x2c00, 0x2c5f,
-}; /* CR_In_Glagolitic */
-
-/* 'In_Latin_Extended_C': Block */
-static const OnigCodePoint CR_In_Latin_Extended_C[] = {
- 1,
- 0x2c60, 0x2c7f,
-}; /* CR_In_Latin_Extended_C */
+ 0xf0000, 0xffffd,
+ 0x100000, 0x10fffd,
+}; /* CR_Print */
-/* 'In_Coptic': Block */
-static const OnigCodePoint CR_In_Coptic[] = {
- 1,
- 0x2c80, 0x2cff,
-}; /* CR_In_Coptic */
+/* 'Punct': [[:Punct:]] */
+#define CR_Punct CR_P
-/* 'In_Georgian_Supplement': Block */
-static const OnigCodePoint CR_In_Georgian_Supplement[] = {
- 1,
- 0x2d00, 0x2d2f,
-}; /* CR_In_Georgian_Supplement */
+/* 'Space': [[:Space:]] */
+#define CR_Space CR_White_Space
-/* 'In_Tifinagh': Block */
-static const OnigCodePoint CR_In_Tifinagh[] = {
- 1,
- 0x2d30, 0x2d7f,
-}; /* CR_In_Tifinagh */
+/* 'Upper': [[:Upper:]] */
+#define CR_Upper CR_Uppercase
-/* 'In_Ethiopic_Extended': Block */
-static const OnigCodePoint CR_In_Ethiopic_Extended[] = {
- 1,
- 0x2d80, 0x2ddf,
-}; /* CR_In_Ethiopic_Extended */
+/* 'XDigit': [[:XDigit:]] */
+#define CR_XDigit CR_ASCII_Hex_Digit
-/* 'In_Cyrillic_Extended_A': Block */
-static const OnigCodePoint CR_In_Cyrillic_Extended_A[] = {
- 1,
+/* 'Word': [[:Word:]] */
+static const OnigCodePoint CR_Word[] = {
+ 514,
+ 0x0030, 0x0039,
+ 0x0041, 0x005a,
+ 0x005f, 0x005f,
+ 0x0061, 0x007a,
+ 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
+ 0x00c0, 0x00d6,
+ 0x00d8, 0x00f6,
+ 0x00f8, 0x02c1,
+ 0x02c6, 0x02d1,
+ 0x02e0, 0x02e4,
+ 0x02ec, 0x02ec,
+ 0x02ee, 0x02ee,
+ 0x0300, 0x0374,
+ 0x0376, 0x0377,
+ 0x037a, 0x037d,
+ 0x0386, 0x0386,
+ 0x0388, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x03a1,
+ 0x03a3, 0x03f5,
+ 0x03f7, 0x0481,
+ 0x0483, 0x0527,
+ 0x0531, 0x0556,
+ 0x0559, 0x0559,
+ 0x0561, 0x0587,
+ 0x0591, 0x05bd,
+ 0x05bf, 0x05bf,
+ 0x05c1, 0x05c2,
+ 0x05c4, 0x05c5,
+ 0x05c7, 0x05c7,
+ 0x05d0, 0x05ea,
+ 0x05f0, 0x05f2,
+ 0x0610, 0x061a,
+ 0x0620, 0x0669,
+ 0x066e, 0x06d3,
+ 0x06d5, 0x06dc,
+ 0x06df, 0x06e8,
+ 0x06ea, 0x06fc,
+ 0x06ff, 0x06ff,
+ 0x0710, 0x074a,
+ 0x074d, 0x07b1,
+ 0x07c0, 0x07f5,
+ 0x07fa, 0x07fa,
+ 0x0800, 0x082d,
+ 0x0840, 0x085b,
+ 0x0900, 0x0963,
+ 0x0966, 0x096f,
+ 0x0971, 0x0977,
+ 0x0979, 0x097f,
+ 0x0981, 0x0983,
+ 0x0985, 0x098c,
+ 0x098f, 0x0990,
+ 0x0993, 0x09a8,
+ 0x09aa, 0x09b0,
+ 0x09b2, 0x09b2,
+ 0x09b6, 0x09b9,
+ 0x09bc, 0x09c4,
+ 0x09c7, 0x09c8,
+ 0x09cb, 0x09ce,
+ 0x09d7, 0x09d7,
+ 0x09dc, 0x09dd,
+ 0x09df, 0x09e3,
+ 0x09e6, 0x09f1,
+ 0x0a01, 0x0a03,
+ 0x0a05, 0x0a0a,
+ 0x0a0f, 0x0a10,
+ 0x0a13, 0x0a28,
+ 0x0a2a, 0x0a30,
+ 0x0a32, 0x0a33,
+ 0x0a35, 0x0a36,
+ 0x0a38, 0x0a39,
+ 0x0a3c, 0x0a3c,
+ 0x0a3e, 0x0a42,
+ 0x0a47, 0x0a48,
+ 0x0a4b, 0x0a4d,
+ 0x0a51, 0x0a51,
+ 0x0a59, 0x0a5c,
+ 0x0a5e, 0x0a5e,
+ 0x0a66, 0x0a75,
+ 0x0a81, 0x0a83,
+ 0x0a85, 0x0a8d,
+ 0x0a8f, 0x0a91,
+ 0x0a93, 0x0aa8,
+ 0x0aaa, 0x0ab0,
+ 0x0ab2, 0x0ab3,
+ 0x0ab5, 0x0ab9,
+ 0x0abc, 0x0ac5,
+ 0x0ac7, 0x0ac9,
+ 0x0acb, 0x0acd,
+ 0x0ad0, 0x0ad0,
+ 0x0ae0, 0x0ae3,
+ 0x0ae6, 0x0aef,
+ 0x0b01, 0x0b03,
+ 0x0b05, 0x0b0c,
+ 0x0b0f, 0x0b10,
+ 0x0b13, 0x0b28,
+ 0x0b2a, 0x0b30,
+ 0x0b32, 0x0b33,
+ 0x0b35, 0x0b39,
+ 0x0b3c, 0x0b44,
+ 0x0b47, 0x0b48,
+ 0x0b4b, 0x0b4d,
+ 0x0b56, 0x0b57,
+ 0x0b5c, 0x0b5d,
+ 0x0b5f, 0x0b63,
+ 0x0b66, 0x0b6f,
+ 0x0b71, 0x0b71,
+ 0x0b82, 0x0b83,
+ 0x0b85, 0x0b8a,
+ 0x0b8e, 0x0b90,
+ 0x0b92, 0x0b95,
+ 0x0b99, 0x0b9a,
+ 0x0b9c, 0x0b9c,
+ 0x0b9e, 0x0b9f,
+ 0x0ba3, 0x0ba4,
+ 0x0ba8, 0x0baa,
+ 0x0bae, 0x0bb9,
+ 0x0bbe, 0x0bc2,
+ 0x0bc6, 0x0bc8,
+ 0x0bca, 0x0bcd,
+ 0x0bd0, 0x0bd0,
+ 0x0bd7, 0x0bd7,
+ 0x0be6, 0x0bef,
+ 0x0c01, 0x0c03,
+ 0x0c05, 0x0c0c,
+ 0x0c0e, 0x0c10,
+ 0x0c12, 0x0c28,
+ 0x0c2a, 0x0c33,
+ 0x0c35, 0x0c39,
+ 0x0c3d, 0x0c44,
+ 0x0c46, 0x0c48,
+ 0x0c4a, 0x0c4d,
+ 0x0c55, 0x0c56,
+ 0x0c58, 0x0c59,
+ 0x0c60, 0x0c63,
+ 0x0c66, 0x0c6f,
+ 0x0c82, 0x0c83,
+ 0x0c85, 0x0c8c,
+ 0x0c8e, 0x0c90,
+ 0x0c92, 0x0ca8,
+ 0x0caa, 0x0cb3,
+ 0x0cb5, 0x0cb9,
+ 0x0cbc, 0x0cc4,
+ 0x0cc6, 0x0cc8,
+ 0x0cca, 0x0ccd,
+ 0x0cd5, 0x0cd6,
+ 0x0cde, 0x0cde,
+ 0x0ce0, 0x0ce3,
+ 0x0ce6, 0x0cef,
+ 0x0cf1, 0x0cf2,
+ 0x0d02, 0x0d03,
+ 0x0d05, 0x0d0c,
+ 0x0d0e, 0x0d10,
+ 0x0d12, 0x0d3a,
+ 0x0d3d, 0x0d44,
+ 0x0d46, 0x0d48,
+ 0x0d4a, 0x0d4e,
+ 0x0d57, 0x0d57,
+ 0x0d60, 0x0d63,
+ 0x0d66, 0x0d6f,
+ 0x0d7a, 0x0d7f,
+ 0x0d82, 0x0d83,
+ 0x0d85, 0x0d96,
+ 0x0d9a, 0x0db1,
+ 0x0db3, 0x0dbb,
+ 0x0dbd, 0x0dbd,
+ 0x0dc0, 0x0dc6,
+ 0x0dca, 0x0dca,
+ 0x0dcf, 0x0dd4,
+ 0x0dd6, 0x0dd6,
+ 0x0dd8, 0x0ddf,
+ 0x0df2, 0x0df3,
+ 0x0e01, 0x0e3a,
+ 0x0e40, 0x0e4e,
+ 0x0e50, 0x0e59,
+ 0x0e81, 0x0e82,
+ 0x0e84, 0x0e84,
+ 0x0e87, 0x0e88,
+ 0x0e8a, 0x0e8a,
+ 0x0e8d, 0x0e8d,
+ 0x0e94, 0x0e97,
+ 0x0e99, 0x0e9f,
+ 0x0ea1, 0x0ea3,
+ 0x0ea5, 0x0ea5,
+ 0x0ea7, 0x0ea7,
+ 0x0eaa, 0x0eab,
+ 0x0ead, 0x0eb9,
+ 0x0ebb, 0x0ebd,
+ 0x0ec0, 0x0ec4,
+ 0x0ec6, 0x0ec6,
+ 0x0ec8, 0x0ecd,
+ 0x0ed0, 0x0ed9,
+ 0x0edc, 0x0edd,
+ 0x0f00, 0x0f00,
+ 0x0f18, 0x0f19,
+ 0x0f20, 0x0f29,
+ 0x0f35, 0x0f35,
+ 0x0f37, 0x0f37,
+ 0x0f39, 0x0f39,
+ 0x0f3e, 0x0f47,
+ 0x0f49, 0x0f6c,
+ 0x0f71, 0x0f84,
+ 0x0f86, 0x0f97,
+ 0x0f99, 0x0fbc,
+ 0x0fc6, 0x0fc6,
+ 0x1000, 0x1049,
+ 0x1050, 0x109d,
+ 0x10a0, 0x10c5,
+ 0x10d0, 0x10fa,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
+ 0x124a, 0x124d,
+ 0x1250, 0x1256,
+ 0x1258, 0x1258,
+ 0x125a, 0x125d,
+ 0x1260, 0x1288,
+ 0x128a, 0x128d,
+ 0x1290, 0x12b0,
+ 0x12b2, 0x12b5,
+ 0x12b8, 0x12be,
+ 0x12c0, 0x12c0,
+ 0x12c2, 0x12c5,
+ 0x12c8, 0x12d6,
+ 0x12d8, 0x1310,
+ 0x1312, 0x1315,
+ 0x1318, 0x135a,
+ 0x135d, 0x135f,
+ 0x1380, 0x138f,
+ 0x13a0, 0x13f4,
+ 0x1401, 0x166c,
+ 0x166f, 0x167f,
+ 0x1681, 0x169a,
+ 0x16a0, 0x16ea,
+ 0x16ee, 0x16f0,
+ 0x1700, 0x170c,
+ 0x170e, 0x1714,
+ 0x1720, 0x1734,
+ 0x1740, 0x1753,
+ 0x1760, 0x176c,
+ 0x176e, 0x1770,
+ 0x1772, 0x1773,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17d3,
+ 0x17d7, 0x17d7,
+ 0x17dc, 0x17dd,
+ 0x17e0, 0x17e9,
+ 0x180b, 0x180d,
+ 0x1810, 0x1819,
+ 0x1820, 0x1877,
+ 0x1880, 0x18aa,
+ 0x18b0, 0x18f5,
+ 0x1900, 0x191c,
+ 0x1920, 0x192b,
+ 0x1930, 0x193b,
+ 0x1946, 0x196d,
+ 0x1970, 0x1974,
+ 0x1980, 0x19ab,
+ 0x19b0, 0x19c9,
+ 0x19d0, 0x19d9,
+ 0x1a00, 0x1a1b,
+ 0x1a20, 0x1a5e,
+ 0x1a60, 0x1a7c,
+ 0x1a7f, 0x1a89,
+ 0x1a90, 0x1a99,
+ 0x1aa7, 0x1aa7,
+ 0x1b00, 0x1b4b,
+ 0x1b50, 0x1b59,
+ 0x1b6b, 0x1b73,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
+ 0x1c00, 0x1c37,
+ 0x1c40, 0x1c49,
+ 0x1c4d, 0x1c7d,
+ 0x1cd0, 0x1cd2,
+ 0x1cd4, 0x1cf2,
+ 0x1d00, 0x1de6,
+ 0x1dfc, 0x1f15,
+ 0x1f18, 0x1f1d,
+ 0x1f20, 0x1f45,
+ 0x1f48, 0x1f4d,
+ 0x1f50, 0x1f57,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f7d,
+ 0x1f80, 0x1fb4,
+ 0x1fb6, 0x1fbc,
+ 0x1fbe, 0x1fbe,
+ 0x1fc2, 0x1fc4,
+ 0x1fc6, 0x1fcc,
+ 0x1fd0, 0x1fd3,
+ 0x1fd6, 0x1fdb,
+ 0x1fe0, 0x1fec,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ffc,
+ 0x203f, 0x2040,
+ 0x2054, 0x2054,
+ 0x2071, 0x2071,
+ 0x207f, 0x207f,
+ 0x2090, 0x209c,
+ 0x20d0, 0x20f0,
+ 0x2102, 0x2102,
+ 0x2107, 0x2107,
+ 0x210a, 0x2113,
+ 0x2115, 0x2115,
+ 0x2119, 0x211d,
+ 0x2124, 0x2124,
+ 0x2126, 0x2126,
+ 0x2128, 0x2128,
+ 0x212a, 0x212d,
+ 0x212f, 0x2139,
+ 0x213c, 0x213f,
+ 0x2145, 0x2149,
+ 0x214e, 0x214e,
+ 0x2160, 0x2188,
+ 0x24b6, 0x24e9,
+ 0x2c00, 0x2c2e,
+ 0x2c30, 0x2c5e,
+ 0x2c60, 0x2ce4,
+ 0x2ceb, 0x2cf1,
+ 0x2d00, 0x2d25,
+ 0x2d30, 0x2d65,
+ 0x2d6f, 0x2d6f,
+ 0x2d7f, 0x2d96,
+ 0x2da0, 0x2da6,
+ 0x2da8, 0x2dae,
+ 0x2db0, 0x2db6,
+ 0x2db8, 0x2dbe,
+ 0x2dc0, 0x2dc6,
+ 0x2dc8, 0x2dce,
+ 0x2dd0, 0x2dd6,
+ 0x2dd8, 0x2dde,
0x2de0, 0x2dff,
-}; /* CR_In_Cyrillic_Extended_A */
-
-/* 'In_Supplemental_Punctuation': Block */
-static const OnigCodePoint CR_In_Supplemental_Punctuation[] = {
- 1,
- 0x2e00, 0x2e7f,
-}; /* CR_In_Supplemental_Punctuation */
-
-/* 'In_CJK_Radicals_Supplement': Block */
-static const OnigCodePoint CR_In_CJK_Radicals_Supplement[] = {
- 1,
- 0x2e80, 0x2eff,
-}; /* CR_In_CJK_Radicals_Supplement */
-
-/* 'In_Kangxi_Radicals': Block */
-static const OnigCodePoint CR_In_Kangxi_Radicals[] = {
- 1,
- 0x2f00, 0x2fdf,
-}; /* CR_In_Kangxi_Radicals */
-
-/* 'In_Ideographic_Description_Characters': Block */
-static const OnigCodePoint CR_In_Ideographic_Description_Characters[] = {
- 1,
- 0x2ff0, 0x2fff,
-}; /* CR_In_Ideographic_Description_Characters */
-
-/* 'In_CJK_Symbols_and_Punctuation': Block */
-static const OnigCodePoint CR_In_CJK_Symbols_and_Punctuation[] = {
- 1,
- 0x3000, 0x303f,
-}; /* CR_In_CJK_Symbols_and_Punctuation */
-
-/* 'In_Hiragana': Block */
-static const OnigCodePoint CR_In_Hiragana[] = {
- 1,
- 0x3040, 0x309f,
-}; /* CR_In_Hiragana */
-
-/* 'In_Katakana': Block */
-static const OnigCodePoint CR_In_Katakana[] = {
- 1,
- 0x30a0, 0x30ff,
-}; /* CR_In_Katakana */
-
-/* 'In_Bopomofo': Block */
-static const OnigCodePoint CR_In_Bopomofo[] = {
- 1,
- 0x3100, 0x312f,
-}; /* CR_In_Bopomofo */
-
-/* 'In_Hangul_Compatibility_Jamo': Block */
-static const OnigCodePoint CR_In_Hangul_Compatibility_Jamo[] = {
- 1,
- 0x3130, 0x318f,
-}; /* CR_In_Hangul_Compatibility_Jamo */
-
-/* 'In_Kanbun': Block */
-static const OnigCodePoint CR_In_Kanbun[] = {
- 1,
- 0x3190, 0x319f,
-}; /* CR_In_Kanbun */
-
-/* 'In_Bopomofo_Extended': Block */
-static const OnigCodePoint CR_In_Bopomofo_Extended[] = {
- 1,
- 0x31a0, 0x31bf,
-}; /* CR_In_Bopomofo_Extended */
-
-/* 'In_CJK_Strokes': Block */
-static const OnigCodePoint CR_In_CJK_Strokes[] = {
- 1,
- 0x31c0, 0x31ef,
-}; /* CR_In_CJK_Strokes */
-
-/* 'In_Katakana_Phonetic_Extensions': Block */
-static const OnigCodePoint CR_In_Katakana_Phonetic_Extensions[] = {
- 1,
+ 0x2e2f, 0x2e2f,
+ 0x3005, 0x3007,
+ 0x3021, 0x302f,
+ 0x3031, 0x3035,
+ 0x3038, 0x303c,
+ 0x3041, 0x3096,
+ 0x3099, 0x309a,
+ 0x309d, 0x309f,
+ 0x30a1, 0x30fa,
+ 0x30fc, 0x30ff,
+ 0x3105, 0x312d,
+ 0x3131, 0x318e,
+ 0x31a0, 0x31ba,
0x31f0, 0x31ff,
-}; /* CR_In_Katakana_Phonetic_Extensions */
-
-/* 'In_Enclosed_CJK_Letters_and_Months': Block */
-static const OnigCodePoint CR_In_Enclosed_CJK_Letters_and_Months[] = {
- 1,
- 0x3200, 0x32ff,
-}; /* CR_In_Enclosed_CJK_Letters_and_Months */
-
-/* 'In_CJK_Compatibility': Block */
-static const OnigCodePoint CR_In_CJK_Compatibility[] = {
- 1,
- 0x3300, 0x33ff,
-}; /* CR_In_CJK_Compatibility */
-
-/* 'In_CJK_Unified_Ideographs_Extension_A': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_A[] = {
- 1,
- 0x3400, 0x4dbf,
-}; /* CR_In_CJK_Unified_Ideographs_Extension_A */
-
-/* 'In_Yijing_Hexagram_Symbols': Block */
-static const OnigCodePoint CR_In_Yijing_Hexagram_Symbols[] = {
- 1,
- 0x4dc0, 0x4dff,
-}; /* CR_In_Yijing_Hexagram_Symbols */
-
-/* 'In_CJK_Unified_Ideographs': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs[] = {
- 1,
- 0x4e00, 0x9fff,
-}; /* CR_In_CJK_Unified_Ideographs */
-
-/* 'In_Yi_Syllables': Block */
-static const OnigCodePoint CR_In_Yi_Syllables[] = {
- 1,
- 0xa000, 0xa48f,
-}; /* CR_In_Yi_Syllables */
-
-/* 'In_Yi_Radicals': Block */
-static const OnigCodePoint CR_In_Yi_Radicals[] = {
- 1,
- 0xa490, 0xa4cf,
-}; /* CR_In_Yi_Radicals */
-
-/* 'In_Lisu': Block */
-#define CR_In_Lisu CR_Lisu
-
-/* 'In_Vai': Block */
-static const OnigCodePoint CR_In_Vai[] = {
- 1,
- 0xa500, 0xa63f,
-}; /* CR_In_Vai */
-
-/* 'In_Cyrillic_Extended_B': Block */
-static const OnigCodePoint CR_In_Cyrillic_Extended_B[] = {
- 1,
- 0xa640, 0xa69f,
-}; /* CR_In_Cyrillic_Extended_B */
-
-/* 'In_Bamum': Block */
-static const OnigCodePoint CR_In_Bamum[] = {
- 1,
- 0xa6a0, 0xa6ff,
-}; /* CR_In_Bamum */
-
-/* 'In_Modifier_Tone_Letters': Block */
-static const OnigCodePoint CR_In_Modifier_Tone_Letters[] = {
- 1,
- 0xa700, 0xa71f,
-}; /* CR_In_Modifier_Tone_Letters */
-
-/* 'In_Latin_Extended_D': Block */
-static const OnigCodePoint CR_In_Latin_Extended_D[] = {
- 1,
- 0xa720, 0xa7ff,
-}; /* CR_In_Latin_Extended_D */
-
-/* 'In_Syloti_Nagri': Block */
-static const OnigCodePoint CR_In_Syloti_Nagri[] = {
- 1,
- 0xa800, 0xa82f,
-}; /* CR_In_Syloti_Nagri */
-
-/* 'In_Common_Indic_Number_Forms': Block */
-static const OnigCodePoint CR_In_Common_Indic_Number_Forms[] = {
- 1,
- 0xa830, 0xa83f,
-}; /* CR_In_Common_Indic_Number_Forms */
-
-/* 'In_Phags_pa': Block */
-static const OnigCodePoint CR_In_Phags_pa[] = {
- 1,
- 0xa840, 0xa87f,
-}; /* CR_In_Phags_pa */
-
-/* 'In_Saurashtra': Block */
-static const OnigCodePoint CR_In_Saurashtra[] = {
- 1,
- 0xa880, 0xa8df,
-}; /* CR_In_Saurashtra */
-
-/* 'In_Devanagari_Extended': Block */
-static const OnigCodePoint CR_In_Devanagari_Extended[] = {
- 1,
- 0xa8e0, 0xa8ff,
-}; /* CR_In_Devanagari_Extended */
-
-/* 'In_Kayah_Li': Block */
-#define CR_In_Kayah_Li CR_Kayah_Li
-
-/* 'In_Rejang': Block */
-static const OnigCodePoint CR_In_Rejang[] = {
- 1,
- 0xa930, 0xa95f,
-}; /* CR_In_Rejang */
-
-/* 'In_Hangul_Jamo_Extended_A': Block */
-static const OnigCodePoint CR_In_Hangul_Jamo_Extended_A[] = {
- 1,
- 0xa960, 0xa97f,
-}; /* CR_In_Hangul_Jamo_Extended_A */
-
-/* 'In_Javanese': Block */
-static const OnigCodePoint CR_In_Javanese[] = {
- 1,
- 0xa980, 0xa9df,
-}; /* CR_In_Javanese */
-
-/* 'In_Cham': Block */
-static const OnigCodePoint CR_In_Cham[] = {
- 1,
- 0xaa00, 0xaa5f,
-}; /* CR_In_Cham */
-
-/* 'In_Myanmar_Extended_A': Block */
-static const OnigCodePoint CR_In_Myanmar_Extended_A[] = {
- 1,
- 0xaa60, 0xaa7f,
-}; /* CR_In_Myanmar_Extended_A */
-
-/* 'In_Tai_Viet': Block */
-static const OnigCodePoint CR_In_Tai_Viet[] = {
- 1,
- 0xaa80, 0xaadf,
-}; /* CR_In_Tai_Viet */
-
-/* 'In_Meetei_Mayek_Extensions': Block */
-static const OnigCodePoint CR_In_Meetei_Mayek_Extensions[] = {
- 1,
- 0xaae0, 0xaaff,
-}; /* CR_In_Meetei_Mayek_Extensions */
-
-/* 'In_Ethiopic_Extended_A': Block */
-static const OnigCodePoint CR_In_Ethiopic_Extended_A[] = {
- 1,
- 0xab00, 0xab2f,
-}; /* CR_In_Ethiopic_Extended_A */
-
-/* 'In_Meetei_Mayek': Block */
-static const OnigCodePoint CR_In_Meetei_Mayek[] = {
- 1,
- 0xabc0, 0xabff,
-}; /* CR_In_Meetei_Mayek */
-
-/* 'In_Hangul_Syllables': Block */
-static const OnigCodePoint CR_In_Hangul_Syllables[] = {
- 1,
- 0xac00, 0xd7af,
-}; /* CR_In_Hangul_Syllables */
-
-/* 'In_Hangul_Jamo_Extended_B': Block */
-static const OnigCodePoint CR_In_Hangul_Jamo_Extended_B[] = {
- 1,
- 0xd7b0, 0xd7ff,
-}; /* CR_In_Hangul_Jamo_Extended_B */
-
-/* 'In_High_Surrogates': Block */
-static const OnigCodePoint CR_In_High_Surrogates[] = {
- 1,
- 0xd800, 0xdb7f,
-}; /* CR_In_High_Surrogates */
-
-/* 'In_High_Private_Use_Surrogates': Block */
-static const OnigCodePoint CR_In_High_Private_Use_Surrogates[] = {
- 1,
- 0xdb80, 0xdbff,
-}; /* CR_In_High_Private_Use_Surrogates */
-
-/* 'In_Low_Surrogates': Block */
-static const OnigCodePoint CR_In_Low_Surrogates[] = {
- 1,
- 0xdc00, 0xdfff,
-}; /* CR_In_Low_Surrogates */
-
-/* 'In_Private_Use_Area': Block */
-static const OnigCodePoint CR_In_Private_Use_Area[] = {
- 1,
- 0xe000, 0xf8ff,
-}; /* CR_In_Private_Use_Area */
-
-/* 'In_CJK_Compatibility_Ideographs': Block */
-static const OnigCodePoint CR_In_CJK_Compatibility_Ideographs[] = {
- 1,
- 0xf900, 0xfaff,
-}; /* CR_In_CJK_Compatibility_Ideographs */
-
-/* 'In_Alphabetic_Presentation_Forms': Block */
-static const OnigCodePoint CR_In_Alphabetic_Presentation_Forms[] = {
- 1,
- 0xfb00, 0xfb4f,
-}; /* CR_In_Alphabetic_Presentation_Forms */
-
-/* 'In_Arabic_Presentation_Forms_A': Block */
-static const OnigCodePoint CR_In_Arabic_Presentation_Forms_A[] = {
- 1,
- 0xfb50, 0xfdff,
-}; /* CR_In_Arabic_Presentation_Forms_A */
-
-/* 'In_Variation_Selectors': Block */
-static const OnigCodePoint CR_In_Variation_Selectors[] = {
- 1,
+ 0x3400, 0x4db5,
+ 0x4e00, 0x9fcb,
+ 0xa000, 0xa48c,
+ 0xa4d0, 0xa4fd,
+ 0xa500, 0xa60c,
+ 0xa610, 0xa62b,
+ 0xa640, 0xa672,
+ 0xa67c, 0xa67d,
+ 0xa67f, 0xa697,
+ 0xa6a0, 0xa6f1,
+ 0xa717, 0xa71f,
+ 0xa722, 0xa788,
+ 0xa78b, 0xa78e,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa827,
+ 0xa840, 0xa873,
+ 0xa880, 0xa8c4,
+ 0xa8d0, 0xa8d9,
+ 0xa8e0, 0xa8f7,
+ 0xa8fb, 0xa8fb,
+ 0xa900, 0xa92d,
+ 0xa930, 0xa953,
+ 0xa960, 0xa97c,
+ 0xa980, 0xa9c0,
+ 0xa9cf, 0xa9d9,
+ 0xaa00, 0xaa36,
+ 0xaa40, 0xaa4d,
+ 0xaa50, 0xaa59,
+ 0xaa60, 0xaa76,
+ 0xaa7a, 0xaa7b,
+ 0xaa80, 0xaac2,
+ 0xaadb, 0xaadd,
+ 0xab01, 0xab06,
+ 0xab09, 0xab0e,
+ 0xab11, 0xab16,
+ 0xab20, 0xab26,
+ 0xab28, 0xab2e,
+ 0xabc0, 0xabea,
+ 0xabec, 0xabed,
+ 0xabf0, 0xabf9,
+ 0xac00, 0xd7a3,
+ 0xd7b0, 0xd7c6,
+ 0xd7cb, 0xd7fb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
+ 0xfa70, 0xfad9,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xfb1d, 0xfb28,
+ 0xfb2a, 0xfb36,
+ 0xfb38, 0xfb3c,
+ 0xfb3e, 0xfb3e,
+ 0xfb40, 0xfb41,
+ 0xfb43, 0xfb44,
+ 0xfb46, 0xfbb1,
+ 0xfbd3, 0xfd3d,
+ 0xfd50, 0xfd8f,
+ 0xfd92, 0xfdc7,
+ 0xfdf0, 0xfdfb,
0xfe00, 0xfe0f,
-}; /* CR_In_Variation_Selectors */
-
-/* 'In_Vertical_Forms': Block */
-static const OnigCodePoint CR_In_Vertical_Forms[] = {
- 1,
- 0xfe10, 0xfe1f,
-}; /* CR_In_Vertical_Forms */
-
-/* 'In_Combining_Half_Marks': Block */
-static const OnigCodePoint CR_In_Combining_Half_Marks[] = {
- 1,
- 0xfe20, 0xfe2f,
-}; /* CR_In_Combining_Half_Marks */
-
-/* 'In_CJK_Compatibility_Forms': Block */
-static const OnigCodePoint CR_In_CJK_Compatibility_Forms[] = {
- 1,
- 0xfe30, 0xfe4f,
-}; /* CR_In_CJK_Compatibility_Forms */
-
-/* 'In_Small_Form_Variants': Block */
-static const OnigCodePoint CR_In_Small_Form_Variants[] = {
- 1,
- 0xfe50, 0xfe6f,
-}; /* CR_In_Small_Form_Variants */
-
-/* 'In_Arabic_Presentation_Forms_B': Block */
-static const OnigCodePoint CR_In_Arabic_Presentation_Forms_B[] = {
- 1,
- 0xfe70, 0xfeff,
-}; /* CR_In_Arabic_Presentation_Forms_B */
-
-/* 'In_Halfwidth_and_Fullwidth_Forms': Block */
-static const OnigCodePoint CR_In_Halfwidth_and_Fullwidth_Forms[] = {
- 1,
- 0xff00, 0xffef,
-}; /* CR_In_Halfwidth_and_Fullwidth_Forms */
-
-/* 'In_Specials': Block */
-static const OnigCodePoint CR_In_Specials[] = {
- 1,
- 0xfff0, 0xffff,
-}; /* CR_In_Specials */
-
-/* 'In_Linear_B_Syllabary': Block */
-static const OnigCodePoint CR_In_Linear_B_Syllabary[] = {
- 1,
- 0x10000, 0x1007f,
-}; /* CR_In_Linear_B_Syllabary */
-
-/* 'In_Linear_B_Ideograms': Block */
-static const OnigCodePoint CR_In_Linear_B_Ideograms[] = {
- 1,
- 0x10080, 0x100ff,
-}; /* CR_In_Linear_B_Ideograms */
-
-/* 'In_Aegean_Numbers': Block */
-static const OnigCodePoint CR_In_Aegean_Numbers[] = {
- 1,
- 0x10100, 0x1013f,
-}; /* CR_In_Aegean_Numbers */
-
-/* 'In_Ancient_Greek_Numbers': Block */
-static const OnigCodePoint CR_In_Ancient_Greek_Numbers[] = {
- 1,
- 0x10140, 0x1018f,
-}; /* CR_In_Ancient_Greek_Numbers */
-
-/* 'In_Ancient_Symbols': Block */
-static const OnigCodePoint CR_In_Ancient_Symbols[] = {
- 1,
- 0x10190, 0x101cf,
-}; /* CR_In_Ancient_Symbols */
-
-/* 'In_Phaistos_Disc': Block */
-static const OnigCodePoint CR_In_Phaistos_Disc[] = {
- 1,
- 0x101d0, 0x101ff,
-}; /* CR_In_Phaistos_Disc */
-
-/* 'In_Lycian': Block */
-static const OnigCodePoint CR_In_Lycian[] = {
- 1,
- 0x10280, 0x1029f,
-}; /* CR_In_Lycian */
-
-/* 'In_Carian': Block */
-static const OnigCodePoint CR_In_Carian[] = {
- 1,
- 0x102a0, 0x102df,
-}; /* CR_In_Carian */
-
-/* 'In_Old_Italic': Block */
-static const OnigCodePoint CR_In_Old_Italic[] = {
- 1,
- 0x10300, 0x1032f,
-}; /* CR_In_Old_Italic */
-
-/* 'In_Gothic': Block */
-static const OnigCodePoint CR_In_Gothic[] = {
- 1,
- 0x10330, 0x1034f,
-}; /* CR_In_Gothic */
-
-/* 'In_Ugaritic': Block */
-static const OnigCodePoint CR_In_Ugaritic[] = {
- 1,
- 0x10380, 0x1039f,
-}; /* CR_In_Ugaritic */
-
-/* 'In_Old_Persian': Block */
-static const OnigCodePoint CR_In_Old_Persian[] = {
- 1,
- 0x103a0, 0x103df,
-}; /* CR_In_Old_Persian */
-
-/* 'In_Deseret': Block */
-#define CR_In_Deseret CR_Deseret
-
-/* 'In_Shavian': Block */
-#define CR_In_Shavian CR_Shavian
-
-/* 'In_Osmanya': Block */
-static const OnigCodePoint CR_In_Osmanya[] = {
- 1,
- 0x10480, 0x104af,
-}; /* CR_In_Osmanya */
-
-/* 'In_Cypriot_Syllabary': Block */
-static const OnigCodePoint CR_In_Cypriot_Syllabary[] = {
- 1,
- 0x10800, 0x1083f,
-}; /* CR_In_Cypriot_Syllabary */
-
-/* 'In_Imperial_Aramaic': Block */
-static const OnigCodePoint CR_In_Imperial_Aramaic[] = {
- 1,
- 0x10840, 0x1085f,
-}; /* CR_In_Imperial_Aramaic */
-
-/* 'In_Phoenician': Block */
-static const OnigCodePoint CR_In_Phoenician[] = {
- 1,
- 0x10900, 0x1091f,
-}; /* CR_In_Phoenician */
-
-/* 'In_Lydian': Block */
-static const OnigCodePoint CR_In_Lydian[] = {
- 1,
- 0x10920, 0x1093f,
-}; /* CR_In_Lydian */
-
-/* 'In_Meroitic_Hieroglyphs': Block */
-#define CR_In_Meroitic_Hieroglyphs CR_Meroitic_Hieroglyphs
-
-/* 'In_Meroitic_Cursive': Block */
-static const OnigCodePoint CR_In_Meroitic_Cursive[] = {
- 1,
- 0x109a0, 0x109ff,
-}; /* CR_In_Meroitic_Cursive */
-
-/* 'In_Kharoshthi': Block */
-static const OnigCodePoint CR_In_Kharoshthi[] = {
- 1,
- 0x10a00, 0x10a5f,
-}; /* CR_In_Kharoshthi */
-
-/* 'In_Old_South_Arabian': Block */
-#define CR_In_Old_South_Arabian CR_Old_South_Arabian
-
-/* 'In_Avestan': Block */
-static const OnigCodePoint CR_In_Avestan[] = {
- 1,
- 0x10b00, 0x10b3f,
-}; /* CR_In_Avestan */
-
-/* 'In_Inscriptional_Parthian': Block */
-static const OnigCodePoint CR_In_Inscriptional_Parthian[] = {
- 1,
- 0x10b40, 0x10b5f,
-}; /* CR_In_Inscriptional_Parthian */
-
-/* 'In_Inscriptional_Pahlavi': Block */
-static const OnigCodePoint CR_In_Inscriptional_Pahlavi[] = {
- 1,
- 0x10b60, 0x10b7f,
-}; /* CR_In_Inscriptional_Pahlavi */
-
-/* 'In_Old_Turkic': Block */
-static const OnigCodePoint CR_In_Old_Turkic[] = {
- 1,
- 0x10c00, 0x10c4f,
-}; /* CR_In_Old_Turkic */
-
-/* 'In_Rumi_Numeral_Symbols': Block */
-static const OnigCodePoint CR_In_Rumi_Numeral_Symbols[] = {
- 1,
- 0x10e60, 0x10e7f,
-}; /* CR_In_Rumi_Numeral_Symbols */
-
-/* 'In_Brahmi': Block */
-static const OnigCodePoint CR_In_Brahmi[] = {
- 1,
- 0x11000, 0x1107f,
-}; /* CR_In_Brahmi */
-
-/* 'In_Kaithi': Block */
-static const OnigCodePoint CR_In_Kaithi[] = {
- 1,
- 0x11080, 0x110cf,
-}; /* CR_In_Kaithi */
-
-/* 'In_Sora_Sompeng': Block */
-static const OnigCodePoint CR_In_Sora_Sompeng[] = {
- 1,
- 0x110d0, 0x110ff,
-}; /* CR_In_Sora_Sompeng */
-
-/* 'In_Chakma': Block */
-static const OnigCodePoint CR_In_Chakma[] = {
- 1,
- 0x11100, 0x1114f,
-}; /* CR_In_Chakma */
-
-/* 'In_Sharada': Block */
-static const OnigCodePoint CR_In_Sharada[] = {
- 1,
- 0x11180, 0x111df,
-}; /* CR_In_Sharada */
-
-/* 'In_Takri': Block */
-static const OnigCodePoint CR_In_Takri[] = {
- 1,
- 0x11680, 0x116cf,
-}; /* CR_In_Takri */
-
-/* 'In_Cuneiform': Block */
-static const OnigCodePoint CR_In_Cuneiform[] = {
- 1,
- 0x12000, 0x123ff,
-}; /* CR_In_Cuneiform */
-
-/* 'In_Cuneiform_Numbers_and_Punctuation': Block */
-static const OnigCodePoint CR_In_Cuneiform_Numbers_and_Punctuation[] = {
- 1,
- 0x12400, 0x1247f,
-}; /* CR_In_Cuneiform_Numbers_and_Punctuation */
-
-/* 'In_Egyptian_Hieroglyphs': Block */
-static const OnigCodePoint CR_In_Egyptian_Hieroglyphs[] = {
- 1,
- 0x13000, 0x1342f,
-}; /* CR_In_Egyptian_Hieroglyphs */
-
-/* 'In_Bamum_Supplement': Block */
-static const OnigCodePoint CR_In_Bamum_Supplement[] = {
- 1,
- 0x16800, 0x16a3f,
-}; /* CR_In_Bamum_Supplement */
-
-/* 'In_Miao': Block */
-static const OnigCodePoint CR_In_Miao[] = {
- 1,
- 0x16f00, 0x16f9f,
-}; /* CR_In_Miao */
-
-/* 'In_Kana_Supplement': Block */
-static const OnigCodePoint CR_In_Kana_Supplement[] = {
- 1,
- 0x1b000, 0x1b0ff,
-}; /* CR_In_Kana_Supplement */
-
-/* 'In_Byzantine_Musical_Symbols': Block */
-static const OnigCodePoint CR_In_Byzantine_Musical_Symbols[] = {
- 1,
- 0x1d000, 0x1d0ff,
-}; /* CR_In_Byzantine_Musical_Symbols */
-
-/* 'In_Musical_Symbols': Block */
-static const OnigCodePoint CR_In_Musical_Symbols[] = {
- 1,
- 0x1d100, 0x1d1ff,
-}; /* CR_In_Musical_Symbols */
-
-/* 'In_Ancient_Greek_Musical_Notation': Block */
-static const OnigCodePoint CR_In_Ancient_Greek_Musical_Notation[] = {
- 1,
- 0x1d200, 0x1d24f,
-}; /* CR_In_Ancient_Greek_Musical_Notation */
-
-/* 'In_Tai_Xuan_Jing_Symbols': Block */
-static const OnigCodePoint CR_In_Tai_Xuan_Jing_Symbols[] = {
- 1,
- 0x1d300, 0x1d35f,
-}; /* CR_In_Tai_Xuan_Jing_Symbols */
-
-/* 'In_Counting_Rod_Numerals': Block */
-static const OnigCodePoint CR_In_Counting_Rod_Numerals[] = {
- 1,
- 0x1d360, 0x1d37f,
-}; /* CR_In_Counting_Rod_Numerals */
-
-/* 'In_Mathematical_Alphanumeric_Symbols': Block */
-static const OnigCodePoint CR_In_Mathematical_Alphanumeric_Symbols[] = {
- 1,
- 0x1d400, 0x1d7ff,
-}; /* CR_In_Mathematical_Alphanumeric_Symbols */
-
-/* 'In_Arabic_Mathematical_Alphabetic_Symbols': Block */
-static const OnigCodePoint CR_In_Arabic_Mathematical_Alphabetic_Symbols[] = {
- 1,
- 0x1ee00, 0x1eeff,
-}; /* CR_In_Arabic_Mathematical_Alphabetic_Symbols */
-
-/* 'In_Mahjong_Tiles': Block */
-static const OnigCodePoint CR_In_Mahjong_Tiles[] = {
- 1,
- 0x1f000, 0x1f02f,
-}; /* CR_In_Mahjong_Tiles */
-
-/* 'In_Domino_Tiles': Block */
-static const OnigCodePoint CR_In_Domino_Tiles[] = {
- 1,
- 0x1f030, 0x1f09f,
-}; /* CR_In_Domino_Tiles */
-
-/* 'In_Playing_Cards': Block */
-static const OnigCodePoint CR_In_Playing_Cards[] = {
- 1,
- 0x1f0a0, 0x1f0ff,
-}; /* CR_In_Playing_Cards */
-
-/* 'In_Enclosed_Alphanumeric_Supplement': Block */
-static const OnigCodePoint CR_In_Enclosed_Alphanumeric_Supplement[] = {
- 1,
- 0x1f100, 0x1f1ff,
-}; /* CR_In_Enclosed_Alphanumeric_Supplement */
-
-/* 'In_Enclosed_Ideographic_Supplement': Block */
-static const OnigCodePoint CR_In_Enclosed_Ideographic_Supplement[] = {
- 1,
- 0x1f200, 0x1f2ff,
-}; /* CR_In_Enclosed_Ideographic_Supplement */
-
-/* 'In_Miscellaneous_Symbols_And_Pictographs': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Symbols_And_Pictographs[] = {
- 1,
- 0x1f300, 0x1f5ff,
-}; /* CR_In_Miscellaneous_Symbols_And_Pictographs */
-
-/* 'In_Emoticons': Block */
-static const OnigCodePoint CR_In_Emoticons[] = {
- 1,
- 0x1f600, 0x1f64f,
-}; /* CR_In_Emoticons */
-
-/* 'In_Transport_And_Map_Symbols': Block */
-static const OnigCodePoint CR_In_Transport_And_Map_Symbols[] = {
- 1,
- 0x1f680, 0x1f6ff,
-}; /* CR_In_Transport_And_Map_Symbols */
-
-/* 'In_Alchemical_Symbols': Block */
-static const OnigCodePoint CR_In_Alchemical_Symbols[] = {
- 1,
- 0x1f700, 0x1f77f,
-}; /* CR_In_Alchemical_Symbols */
-
-/* 'In_CJK_Unified_Ideographs_Extension_B': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_B[] = {
- 1,
- 0x20000, 0x2a6df,
-}; /* CR_In_CJK_Unified_Ideographs_Extension_B */
-
-/* 'In_CJK_Unified_Ideographs_Extension_C': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_C[] = {
- 1,
- 0x2a700, 0x2b73f,
-}; /* CR_In_CJK_Unified_Ideographs_Extension_C */
-
-/* 'In_CJK_Unified_Ideographs_Extension_D': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_D[] = {
- 1,
- 0x2b740, 0x2b81f,
-}; /* CR_In_CJK_Unified_Ideographs_Extension_D */
-
-/* 'In_CJK_Compatibility_Ideographs_Supplement': Block */
-static const OnigCodePoint CR_In_CJK_Compatibility_Ideographs_Supplement[] = {
- 1,
- 0x2f800, 0x2fa1f,
-}; /* CR_In_CJK_Compatibility_Ideographs_Supplement */
-
-/* 'In_Tags': Block */
-static const OnigCodePoint CR_In_Tags[] = {
- 1,
- 0xe0000, 0xe007f,
-}; /* CR_In_Tags */
-
-/* 'In_Variation_Selectors_Supplement': Block */
-static const OnigCodePoint CR_In_Variation_Selectors_Supplement[] = {
- 1,
+ 0xfe20, 0xfe26,
+ 0xfe33, 0xfe34,
+ 0xfe4d, 0xfe4f,
+ 0xfe70, 0xfe74,
+ 0xfe76, 0xfefc,
+ 0xff10, 0xff19,
+ 0xff21, 0xff3a,
+ 0xff3f, 0xff3f,
+ 0xff41, 0xff5a,
+ 0xff66, 0xffbe,
+ 0xffc2, 0xffc7,
+ 0xffca, 0xffcf,
+ 0xffd2, 0xffd7,
+ 0xffda, 0xffdc,
+ 0x10000, 0x1000b,
+ 0x1000d, 0x10026,
+ 0x10028, 0x1003a,
+ 0x1003c, 0x1003d,
+ 0x1003f, 0x1004d,
+ 0x10050, 0x1005d,
+ 0x10080, 0x100fa,
+ 0x10140, 0x10174,
+ 0x101fd, 0x101fd,
+ 0x10280, 0x1029c,
+ 0x102a0, 0x102d0,
+ 0x10300, 0x1031e,
+ 0x10330, 0x1034a,
+ 0x10380, 0x1039d,
+ 0x103a0, 0x103c3,
+ 0x103c8, 0x103cf,
+ 0x103d1, 0x103d5,
+ 0x10400, 0x1049d,
+ 0x104a0, 0x104a9,
+ 0x10800, 0x10805,
+ 0x10808, 0x10808,
+ 0x1080a, 0x10835,
+ 0x10837, 0x10838,
+ 0x1083c, 0x1083c,
+ 0x1083f, 0x10855,
+ 0x10900, 0x10915,
+ 0x10920, 0x10939,
+ 0x10a00, 0x10a03,
+ 0x10a05, 0x10a06,
+ 0x10a0c, 0x10a13,
+ 0x10a15, 0x10a17,
+ 0x10a19, 0x10a33,
+ 0x10a38, 0x10a3a,
+ 0x10a3f, 0x10a3f,
+ 0x10a60, 0x10a7c,
+ 0x10b00, 0x10b35,
+ 0x10b40, 0x10b55,
+ 0x10b60, 0x10b72,
+ 0x10c00, 0x10c48,
+ 0x11000, 0x11046,
+ 0x11066, 0x1106f,
+ 0x11080, 0x110ba,
+ 0x12000, 0x1236e,
+ 0x12400, 0x12462,
+ 0x13000, 0x1342e,
+ 0x16800, 0x16a38,
+ 0x1b000, 0x1b001,
+ 0x1d165, 0x1d169,
+ 0x1d16d, 0x1d172,
+ 0x1d17b, 0x1d182,
+ 0x1d185, 0x1d18b,
+ 0x1d1aa, 0x1d1ad,
+ 0x1d242, 0x1d244,
+ 0x1d400, 0x1d454,
+ 0x1d456, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d51e, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d552, 0x1d6a5,
+ 0x1d6a8, 0x1d6c0,
+ 0x1d6c2, 0x1d6da,
+ 0x1d6dc, 0x1d6fa,
+ 0x1d6fc, 0x1d714,
+ 0x1d716, 0x1d734,
+ 0x1d736, 0x1d74e,
+ 0x1d750, 0x1d76e,
+ 0x1d770, 0x1d788,
+ 0x1d78a, 0x1d7a8,
+ 0x1d7aa, 0x1d7c2,
+ 0x1d7c4, 0x1d7cb,
+ 0x1d7ce, 0x1d7ff,
+ 0x20000, 0x2a6d6,
+ 0x2a700, 0x2b734,
+ 0x2b740, 0x2b81d,
+ 0x2f800, 0x2fa1d,
0xe0100, 0xe01ef,
-}; /* CR_In_Variation_Selectors_Supplement */
+}; /* CR_Word */
-/* 'In_Supplementary_Private_Use_Area_A': Block */
-static const OnigCodePoint CR_In_Supplementary_Private_Use_Area_A[] = {
- 1,
- 0xf0000, 0xfffff,
-}; /* CR_In_Supplementary_Private_Use_Area_A */
+/* 'Alnum': [[:Alnum:]] */
+static const OnigCodePoint CR_Alnum[] = {
+ 509,
+ 0x0030, 0x0039,
+ 0x0041, 0x005a,
+ 0x0061, 0x007a,
+ 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
+ 0x00c0, 0x00d6,
+ 0x00d8, 0x00f6,
+ 0x00f8, 0x02c1,
+ 0x02c6, 0x02d1,
+ 0x02e0, 0x02e4,
+ 0x02ec, 0x02ec,
+ 0x02ee, 0x02ee,
+ 0x0345, 0x0345,
+ 0x0370, 0x0374,
+ 0x0376, 0x0377,
+ 0x037a, 0x037d,
+ 0x0386, 0x0386,
+ 0x0388, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x03a1,
+ 0x03a3, 0x03f5,
+ 0x03f7, 0x0481,
+ 0x048a, 0x0527,
+ 0x0531, 0x0556,
+ 0x0559, 0x0559,
+ 0x0561, 0x0587,
+ 0x05b0, 0x05bd,
+ 0x05bf, 0x05bf,
+ 0x05c1, 0x05c2,
+ 0x05c4, 0x05c5,
+ 0x05c7, 0x05c7,
+ 0x05d0, 0x05ea,
+ 0x05f0, 0x05f2,
+ 0x0610, 0x061a,
+ 0x0620, 0x0657,
+ 0x0659, 0x0669,
+ 0x066e, 0x06d3,
+ 0x06d5, 0x06dc,
+ 0x06e1, 0x06e8,
+ 0x06ed, 0x06fc,
+ 0x06ff, 0x06ff,
+ 0x0710, 0x073f,
+ 0x074d, 0x07b1,
+ 0x07c0, 0x07ea,
+ 0x07f4, 0x07f5,
+ 0x07fa, 0x07fa,
+ 0x0800, 0x0817,
+ 0x081a, 0x082c,
+ 0x0840, 0x0858,
+ 0x0900, 0x093b,
+ 0x093d, 0x094c,
+ 0x094e, 0x0950,
+ 0x0955, 0x0963,
+ 0x0966, 0x096f,
+ 0x0971, 0x0977,
+ 0x0979, 0x097f,
+ 0x0981, 0x0983,
+ 0x0985, 0x098c,
+ 0x098f, 0x0990,
+ 0x0993, 0x09a8,
+ 0x09aa, 0x09b0,
+ 0x09b2, 0x09b2,
+ 0x09b6, 0x09b9,
+ 0x09bd, 0x09c4,
+ 0x09c7, 0x09c8,
+ 0x09cb, 0x09cc,
+ 0x09ce, 0x09ce,
+ 0x09d7, 0x09d7,
+ 0x09dc, 0x09dd,
+ 0x09df, 0x09e3,
+ 0x09e6, 0x09f1,
+ 0x0a01, 0x0a03,
+ 0x0a05, 0x0a0a,
+ 0x0a0f, 0x0a10,
+ 0x0a13, 0x0a28,
+ 0x0a2a, 0x0a30,
+ 0x0a32, 0x0a33,
+ 0x0a35, 0x0a36,
+ 0x0a38, 0x0a39,
+ 0x0a3e, 0x0a42,
+ 0x0a47, 0x0a48,
+ 0x0a4b, 0x0a4c,
+ 0x0a51, 0x0a51,
+ 0x0a59, 0x0a5c,
+ 0x0a5e, 0x0a5e,
+ 0x0a66, 0x0a75,
+ 0x0a81, 0x0a83,
+ 0x0a85, 0x0a8d,
+ 0x0a8f, 0x0a91,
+ 0x0a93, 0x0aa8,
+ 0x0aaa, 0x0ab0,
+ 0x0ab2, 0x0ab3,
+ 0x0ab5, 0x0ab9,
+ 0x0abd, 0x0ac5,
+ 0x0ac7, 0x0ac9,
+ 0x0acb, 0x0acc,
+ 0x0ad0, 0x0ad0,
+ 0x0ae0, 0x0ae3,
+ 0x0ae6, 0x0aef,
+ 0x0b01, 0x0b03,
+ 0x0b05, 0x0b0c,
+ 0x0b0f, 0x0b10,
+ 0x0b13, 0x0b28,
+ 0x0b2a, 0x0b30,
+ 0x0b32, 0x0b33,
+ 0x0b35, 0x0b39,
+ 0x0b3d, 0x0b44,
+ 0x0b47, 0x0b48,
+ 0x0b4b, 0x0b4c,
+ 0x0b56, 0x0b57,
+ 0x0b5c, 0x0b5d,
+ 0x0b5f, 0x0b63,
+ 0x0b66, 0x0b6f,
+ 0x0b71, 0x0b71,
+ 0x0b82, 0x0b83,
+ 0x0b85, 0x0b8a,
+ 0x0b8e, 0x0b90,
+ 0x0b92, 0x0b95,
+ 0x0b99, 0x0b9a,
+ 0x0b9c, 0x0b9c,
+ 0x0b9e, 0x0b9f,
+ 0x0ba3, 0x0ba4,
+ 0x0ba8, 0x0baa,
+ 0x0bae, 0x0bb9,
+ 0x0bbe, 0x0bc2,
+ 0x0bc6, 0x0bc8,
+ 0x0bca, 0x0bcc,
+ 0x0bd0, 0x0bd0,
+ 0x0bd7, 0x0bd7,
+ 0x0be6, 0x0bef,
+ 0x0c01, 0x0c03,
+ 0x0c05, 0x0c0c,
+ 0x0c0e, 0x0c10,
+ 0x0c12, 0x0c28,
+ 0x0c2a, 0x0c33,
+ 0x0c35, 0x0c39,
+ 0x0c3d, 0x0c44,
+ 0x0c46, 0x0c48,
+ 0x0c4a, 0x0c4c,
+ 0x0c55, 0x0c56,
+ 0x0c58, 0x0c59,
+ 0x0c60, 0x0c63,
+ 0x0c66, 0x0c6f,
+ 0x0c82, 0x0c83,
+ 0x0c85, 0x0c8c,
+ 0x0c8e, 0x0c90,
+ 0x0c92, 0x0ca8,
+ 0x0caa, 0x0cb3,
+ 0x0cb5, 0x0cb9,
+ 0x0cbd, 0x0cc4,
+ 0x0cc6, 0x0cc8,
+ 0x0cca, 0x0ccc,
+ 0x0cd5, 0x0cd6,
+ 0x0cde, 0x0cde,
+ 0x0ce0, 0x0ce3,
+ 0x0ce6, 0x0cef,
+ 0x0cf1, 0x0cf2,
+ 0x0d02, 0x0d03,
+ 0x0d05, 0x0d0c,
+ 0x0d0e, 0x0d10,
+ 0x0d12, 0x0d3a,
+ 0x0d3d, 0x0d44,
+ 0x0d46, 0x0d48,
+ 0x0d4a, 0x0d4c,
+ 0x0d4e, 0x0d4e,
+ 0x0d57, 0x0d57,
+ 0x0d60, 0x0d63,
+ 0x0d66, 0x0d6f,
+ 0x0d7a, 0x0d7f,
+ 0x0d82, 0x0d83,
+ 0x0d85, 0x0d96,
+ 0x0d9a, 0x0db1,
+ 0x0db3, 0x0dbb,
+ 0x0dbd, 0x0dbd,
+ 0x0dc0, 0x0dc6,
+ 0x0dcf, 0x0dd4,
+ 0x0dd6, 0x0dd6,
+ 0x0dd8, 0x0ddf,
+ 0x0df2, 0x0df3,
+ 0x0e01, 0x0e3a,
+ 0x0e40, 0x0e46,
+ 0x0e4d, 0x0e4d,
+ 0x0e50, 0x0e59,
+ 0x0e81, 0x0e82,
+ 0x0e84, 0x0e84,
+ 0x0e87, 0x0e88,
+ 0x0e8a, 0x0e8a,
+ 0x0e8d, 0x0e8d,
+ 0x0e94, 0x0e97,
+ 0x0e99, 0x0e9f,
+ 0x0ea1, 0x0ea3,
+ 0x0ea5, 0x0ea5,
+ 0x0ea7, 0x0ea7,
+ 0x0eaa, 0x0eab,
+ 0x0ead, 0x0eb9,
+ 0x0ebb, 0x0ebd,
+ 0x0ec0, 0x0ec4,
+ 0x0ec6, 0x0ec6,
+ 0x0ecd, 0x0ecd,
+ 0x0ed0, 0x0ed9,
+ 0x0edc, 0x0edd,
+ 0x0f00, 0x0f00,
+ 0x0f20, 0x0f29,
+ 0x0f40, 0x0f47,
+ 0x0f49, 0x0f6c,
+ 0x0f71, 0x0f81,
+ 0x0f88, 0x0f97,
+ 0x0f99, 0x0fbc,
+ 0x1000, 0x1036,
+ 0x1038, 0x1038,
+ 0x103b, 0x1049,
+ 0x1050, 0x1062,
+ 0x1065, 0x1068,
+ 0x106e, 0x1086,
+ 0x108e, 0x108e,
+ 0x1090, 0x1099,
+ 0x109c, 0x109d,
+ 0x10a0, 0x10c5,
+ 0x10d0, 0x10fa,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
+ 0x124a, 0x124d,
+ 0x1250, 0x1256,
+ 0x1258, 0x1258,
+ 0x125a, 0x125d,
+ 0x1260, 0x1288,
+ 0x128a, 0x128d,
+ 0x1290, 0x12b0,
+ 0x12b2, 0x12b5,
+ 0x12b8, 0x12be,
+ 0x12c0, 0x12c0,
+ 0x12c2, 0x12c5,
+ 0x12c8, 0x12d6,
+ 0x12d8, 0x1310,
+ 0x1312, 0x1315,
+ 0x1318, 0x135a,
+ 0x135f, 0x135f,
+ 0x1380, 0x138f,
+ 0x13a0, 0x13f4,
+ 0x1401, 0x166c,
+ 0x166f, 0x167f,
+ 0x1681, 0x169a,
+ 0x16a0, 0x16ea,
+ 0x16ee, 0x16f0,
+ 0x1700, 0x170c,
+ 0x170e, 0x1713,
+ 0x1720, 0x1733,
+ 0x1740, 0x1753,
+ 0x1760, 0x176c,
+ 0x176e, 0x1770,
+ 0x1772, 0x1773,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17c8,
+ 0x17d7, 0x17d7,
+ 0x17dc, 0x17dc,
+ 0x17e0, 0x17e9,
+ 0x1810, 0x1819,
+ 0x1820, 0x1877,
+ 0x1880, 0x18aa,
+ 0x18b0, 0x18f5,
+ 0x1900, 0x191c,
+ 0x1920, 0x192b,
+ 0x1930, 0x1938,
+ 0x1946, 0x196d,
+ 0x1970, 0x1974,
+ 0x1980, 0x19ab,
+ 0x19b0, 0x19c9,
+ 0x19d0, 0x19d9,
+ 0x1a00, 0x1a1b,
+ 0x1a20, 0x1a5e,
+ 0x1a61, 0x1a74,
+ 0x1a80, 0x1a89,
+ 0x1a90, 0x1a99,
+ 0x1aa7, 0x1aa7,
+ 0x1b00, 0x1b33,
+ 0x1b35, 0x1b43,
+ 0x1b45, 0x1b4b,
+ 0x1b50, 0x1b59,
+ 0x1b80, 0x1ba9,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1be5,
+ 0x1be7, 0x1bf1,
+ 0x1c00, 0x1c35,
+ 0x1c40, 0x1c49,
+ 0x1c4d, 0x1c7d,
+ 0x1ce9, 0x1cec,
+ 0x1cee, 0x1cf2,
+ 0x1d00, 0x1dbf,
+ 0x1e00, 0x1f15,
+ 0x1f18, 0x1f1d,
+ 0x1f20, 0x1f45,
+ 0x1f48, 0x1f4d,
+ 0x1f50, 0x1f57,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f7d,
+ 0x1f80, 0x1fb4,
+ 0x1fb6, 0x1fbc,
+ 0x1fbe, 0x1fbe,
+ 0x1fc2, 0x1fc4,
+ 0x1fc6, 0x1fcc,
+ 0x1fd0, 0x1fd3,
+ 0x1fd6, 0x1fdb,
+ 0x1fe0, 0x1fec,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ffc,
+ 0x2071, 0x2071,
+ 0x207f, 0x207f,
+ 0x2090, 0x209c,
+ 0x2102, 0x2102,
+ 0x2107, 0x2107,
+ 0x210a, 0x2113,
+ 0x2115, 0x2115,
+ 0x2119, 0x211d,
+ 0x2124, 0x2124,
+ 0x2126, 0x2126,
+ 0x2128, 0x2128,
+ 0x212a, 0x212d,
+ 0x212f, 0x2139,
+ 0x213c, 0x213f,
+ 0x2145, 0x2149,
+ 0x214e, 0x214e,
+ 0x2160, 0x2188,
+ 0x24b6, 0x24e9,
+ 0x2c00, 0x2c2e,
+ 0x2c30, 0x2c5e,
+ 0x2c60, 0x2ce4,
+ 0x2ceb, 0x2cee,
+ 0x2d00, 0x2d25,
+ 0x2d30, 0x2d65,
+ 0x2d6f, 0x2d6f,
+ 0x2d80, 0x2d96,
+ 0x2da0, 0x2da6,
+ 0x2da8, 0x2dae,
+ 0x2db0, 0x2db6,
+ 0x2db8, 0x2dbe,
+ 0x2dc0, 0x2dc6,
+ 0x2dc8, 0x2dce,
+ 0x2dd0, 0x2dd6,
+ 0x2dd8, 0x2dde,
+ 0x2de0, 0x2dff,
+ 0x2e2f, 0x2e2f,
+ 0x3005, 0x3007,
+ 0x3021, 0x3029,
+ 0x3031, 0x3035,
+ 0x3038, 0x303c,
+ 0x3041, 0x3096,
+ 0x309d, 0x309f,
+ 0x30a1, 0x30fa,
+ 0x30fc, 0x30ff,
+ 0x3105, 0x312d,
+ 0x3131, 0x318e,
+ 0x31a0, 0x31ba,
+ 0x31f0, 0x31ff,
+ 0x3400, 0x4db5,
+ 0x4e00, 0x9fcb,
+ 0xa000, 0xa48c,
+ 0xa4d0, 0xa4fd,
+ 0xa500, 0xa60c,
+ 0xa610, 0xa62b,
+ 0xa640, 0xa66e,
+ 0xa67f, 0xa697,
+ 0xa6a0, 0xa6ef,
+ 0xa717, 0xa71f,
+ 0xa722, 0xa788,
+ 0xa78b, 0xa78e,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
+ 0xa803, 0xa805,
+ 0xa807, 0xa80a,
+ 0xa80c, 0xa827,
+ 0xa840, 0xa873,
+ 0xa880, 0xa8c3,
+ 0xa8d0, 0xa8d9,
+ 0xa8f2, 0xa8f7,
+ 0xa8fb, 0xa8fb,
+ 0xa900, 0xa92a,
+ 0xa930, 0xa952,
+ 0xa960, 0xa97c,
+ 0xa980, 0xa9b2,
+ 0xa9b4, 0xa9bf,
+ 0xa9cf, 0xa9d9,
+ 0xaa00, 0xaa36,
+ 0xaa40, 0xaa4d,
+ 0xaa50, 0xaa59,
+ 0xaa60, 0xaa76,
+ 0xaa7a, 0xaa7a,
+ 0xaa80, 0xaabe,
+ 0xaac0, 0xaac0,
+ 0xaac2, 0xaac2,
+ 0xaadb, 0xaadd,
+ 0xab01, 0xab06,
+ 0xab09, 0xab0e,
+ 0xab11, 0xab16,
+ 0xab20, 0xab26,
+ 0xab28, 0xab2e,
+ 0xabc0, 0xabea,
+ 0xabf0, 0xabf9,
+ 0xac00, 0xd7a3,
+ 0xd7b0, 0xd7c6,
+ 0xd7cb, 0xd7fb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
+ 0xfa70, 0xfad9,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xfb1d, 0xfb28,
+ 0xfb2a, 0xfb36,
+ 0xfb38, 0xfb3c,
+ 0xfb3e, 0xfb3e,
+ 0xfb40, 0xfb41,
+ 0xfb43, 0xfb44,
+ 0xfb46, 0xfbb1,
+ 0xfbd3, 0xfd3d,
+ 0xfd50, 0xfd8f,
+ 0xfd92, 0xfdc7,
+ 0xfdf0, 0xfdfb,
+ 0xfe70, 0xfe74,
+ 0xfe76, 0xfefc,
+ 0xff10, 0xff19,
+ 0xff21, 0xff3a,
+ 0xff41, 0xff5a,
+ 0xff66, 0xffbe,
+ 0xffc2, 0xffc7,
+ 0xffca, 0xffcf,
+ 0xffd2, 0xffd7,
+ 0xffda, 0xffdc,
+ 0x10000, 0x1000b,
+ 0x1000d, 0x10026,
+ 0x10028, 0x1003a,
+ 0x1003c, 0x1003d,
+ 0x1003f, 0x1004d,
+ 0x10050, 0x1005d,
+ 0x10080, 0x100fa,
+ 0x10140, 0x10174,
+ 0x10280, 0x1029c,
+ 0x102a0, 0x102d0,
+ 0x10300, 0x1031e,
+ 0x10330, 0x1034a,
+ 0x10380, 0x1039d,
+ 0x103a0, 0x103c3,
+ 0x103c8, 0x103cf,
+ 0x103d1, 0x103d5,
+ 0x10400, 0x1049d,
+ 0x104a0, 0x104a9,
+ 0x10800, 0x10805,
+ 0x10808, 0x10808,
+ 0x1080a, 0x10835,
+ 0x10837, 0x10838,
+ 0x1083c, 0x1083c,
+ 0x1083f, 0x10855,
+ 0x10900, 0x10915,
+ 0x10920, 0x10939,
+ 0x10a00, 0x10a03,
+ 0x10a05, 0x10a06,
+ 0x10a0c, 0x10a13,
+ 0x10a15, 0x10a17,
+ 0x10a19, 0x10a33,
+ 0x10a60, 0x10a7c,
+ 0x10b00, 0x10b35,
+ 0x10b40, 0x10b55,
+ 0x10b60, 0x10b72,
+ 0x10c00, 0x10c48,
+ 0x11000, 0x11045,
+ 0x11066, 0x1106f,
+ 0x11082, 0x110b8,
+ 0x12000, 0x1236e,
+ 0x12400, 0x12462,
+ 0x13000, 0x1342e,
+ 0x16800, 0x16a38,
+ 0x1b000, 0x1b001,
+ 0x1d400, 0x1d454,
+ 0x1d456, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d51e, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d552, 0x1d6a5,
+ 0x1d6a8, 0x1d6c0,
+ 0x1d6c2, 0x1d6da,
+ 0x1d6dc, 0x1d6fa,
+ 0x1d6fc, 0x1d714,
+ 0x1d716, 0x1d734,
+ 0x1d736, 0x1d74e,
+ 0x1d750, 0x1d76e,
+ 0x1d770, 0x1d788,
+ 0x1d78a, 0x1d7a8,
+ 0x1d7aa, 0x1d7c2,
+ 0x1d7c4, 0x1d7cb,
+ 0x1d7ce, 0x1d7ff,
+ 0x20000, 0x2a6d6,
+ 0x2a700, 0x2b734,
+ 0x2b740, 0x2b81d,
+ 0x2f800, 0x2fa1d,
+}; /* CR_Alnum */
-/* 'In_Supplementary_Private_Use_Area_B': Block */
-static const OnigCodePoint CR_In_Supplementary_Private_Use_Area_B[] = {
+/* 'ASCII': [[:ASCII:]] */
+static const OnigCodePoint CR_ASCII[] = {
1,
- 0x100000, 0x10ffff,
-}; /* CR_In_Supplementary_Private_Use_Area_B */
-
-/* 'In_No_Block': Block */
-static const OnigCodePoint CR_In_No_Block[] = {
- 36,
- 0x0860, 0x089f,
- 0x1ab0, 0x1aff,
- 0x1c80, 0x1cbf,
- 0x2fe0, 0x2fef,
- 0xa9e0, 0xa9ff,
- 0xab30, 0xabbf,
- 0x10200, 0x1027f,
- 0x102e0, 0x102ff,
- 0x10350, 0x1037f,
- 0x103e0, 0x103ff,
- 0x104b0, 0x107ff,
- 0x10860, 0x108ff,
- 0x10940, 0x1097f,
- 0x10a80, 0x10aff,
- 0x10b80, 0x10bff,
- 0x10c50, 0x10e5f,
- 0x10e80, 0x10fff,
- 0x11150, 0x1117f,
- 0x111e0, 0x1167f,
- 0x116d0, 0x11fff,
- 0x12480, 0x12fff,
- 0x13430, 0x167ff,
- 0x16a40, 0x16eff,
- 0x16fa0, 0x1afff,
- 0x1b100, 0x1cfff,
- 0x1d250, 0x1d2ff,
- 0x1d380, 0x1d3ff,
- 0x1d800, 0x1edff,
- 0x1ef00, 0x1efff,
- 0x1f650, 0x1f67f,
- 0x1f780, 0x1ffff,
- 0x2a6e0, 0x2a6ff,
- 0x2b820, 0x2f7ff,
- 0x2fa20, 0xdffff,
- 0xe0080, 0xe00ff,
- 0xe01f0, 0xeffff,
-}; /* CR_In_No_Block */
-#endif /* USE_UNICODE_PROPERTIES */
+ 0x0000, 0x007f,
+}; /* CR_ASCII */
static const OnigCodePoint* const CodeRanges[] = {
CR_NEWLINE,
@@ -25510,6 +21973,7 @@ static const OnigCodePoint* const CodeRanges[] = {
CR_Alnum,
CR_ASCII,
#ifdef USE_UNICODE_PROPERTIES
+#ifdef USE_UNICODE_PROPERTIES
CR_Any,
CR_Assigned,
CR_C,
@@ -25519,7 +21983,6 @@ static const OnigCodePoint* const CodeRanges[] = {
CR_Co,
CR_Cs,
CR_L,
- CR_LC,
CR_Ll,
CR_Lm,
CR_Lo,
@@ -25664,13 +22127,6 @@ static const OnigCodePoint* const CodeRanges[] = {
CR_Batak,
CR_Brahmi,
CR_Mandaic,
- CR_Chakma,
- CR_Meroitic_Cursive,
- CR_Meroitic_Hieroglyphs,
- CR_Miao,
- CR_Sharada,
- CR_Sora_Sompeng,
- CR_Takri,
CR_White_Space,
CR_Bidi_Control,
CR_Join_Control,
@@ -25716,228 +22172,7 @@ static const OnigCodePoint* const CodeRanges[] = {
CR_Age_5_1,
CR_Age_5_2,
CR_Age_6_0,
- CR_Age_6_1,
- CR_In_Basic_Latin,
- CR_In_Latin_1_Supplement,
- CR_In_Latin_Extended_A,
- CR_In_Latin_Extended_B,
- CR_In_IPA_Extensions,
- CR_In_Spacing_Modifier_Letters,
- CR_In_Combining_Diacritical_Marks,
- CR_In_Greek_and_Coptic,
- CR_In_Cyrillic,
- CR_In_Cyrillic_Supplement,
- CR_In_Armenian,
- CR_In_Hebrew,
- CR_In_Arabic,
- CR_In_Syriac,
- CR_In_Arabic_Supplement,
- CR_In_Thaana,
- CR_In_NKo,
- CR_In_Samaritan,
- CR_In_Mandaic,
- CR_In_Arabic_Extended_A,
- CR_In_Devanagari,
- CR_In_Bengali,
- CR_In_Gurmukhi,
- CR_In_Gujarati,
- CR_In_Oriya,
- CR_In_Tamil,
- CR_In_Telugu,
- CR_In_Kannada,
- CR_In_Malayalam,
- CR_In_Sinhala,
- CR_In_Thai,
- CR_In_Lao,
- CR_In_Tibetan,
- CR_In_Myanmar,
- CR_In_Georgian,
- CR_In_Hangul_Jamo,
- CR_In_Ethiopic,
- CR_In_Ethiopic_Supplement,
- CR_In_Cherokee,
- CR_In_Unified_Canadian_Aboriginal_Syllabics,
- CR_In_Ogham,
- CR_In_Runic,
- CR_In_Tagalog,
- CR_In_Hanunoo,
- CR_In_Buhid,
- CR_In_Tagbanwa,
- CR_In_Khmer,
- CR_In_Mongolian,
- CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended,
- CR_In_Limbu,
- CR_In_Tai_Le,
- CR_In_New_Tai_Lue,
- CR_In_Khmer_Symbols,
- CR_In_Buginese,
- CR_In_Tai_Tham,
- CR_In_Balinese,
- CR_In_Sundanese,
- CR_In_Batak,
- CR_In_Lepcha,
- CR_In_Ol_Chiki,
- CR_In_Sundanese_Supplement,
- CR_In_Vedic_Extensions,
- CR_In_Phonetic_Extensions,
- CR_In_Phonetic_Extensions_Supplement,
- CR_In_Combining_Diacritical_Marks_Supplement,
- CR_In_Latin_Extended_Additional,
- CR_In_Greek_Extended,
- CR_In_General_Punctuation,
- CR_In_Superscripts_and_Subscripts,
- CR_In_Currency_Symbols,
- CR_In_Combining_Diacritical_Marks_for_Symbols,
- CR_In_Letterlike_Symbols,
- CR_In_Number_Forms,
- CR_In_Arrows,
- CR_In_Mathematical_Operators,
- CR_In_Miscellaneous_Technical,
- CR_In_Control_Pictures,
- CR_In_Optical_Character_Recognition,
- CR_In_Enclosed_Alphanumerics,
- CR_In_Box_Drawing,
- CR_In_Block_Elements,
- CR_In_Geometric_Shapes,
- CR_In_Miscellaneous_Symbols,
- CR_In_Dingbats,
- CR_In_Miscellaneous_Mathematical_Symbols_A,
- CR_In_Supplemental_Arrows_A,
- CR_In_Braille_Patterns,
- CR_In_Supplemental_Arrows_B,
- CR_In_Miscellaneous_Mathematical_Symbols_B,
- CR_In_Supplemental_Mathematical_Operators,
- CR_In_Miscellaneous_Symbols_and_Arrows,
- CR_In_Glagolitic,
- CR_In_Latin_Extended_C,
- CR_In_Coptic,
- CR_In_Georgian_Supplement,
- CR_In_Tifinagh,
- CR_In_Ethiopic_Extended,
- CR_In_Cyrillic_Extended_A,
- CR_In_Supplemental_Punctuation,
- CR_In_CJK_Radicals_Supplement,
- CR_In_Kangxi_Radicals,
- CR_In_Ideographic_Description_Characters,
- CR_In_CJK_Symbols_and_Punctuation,
- CR_In_Hiragana,
- CR_In_Katakana,
- CR_In_Bopomofo,
- CR_In_Hangul_Compatibility_Jamo,
- CR_In_Kanbun,
- CR_In_Bopomofo_Extended,
- CR_In_CJK_Strokes,
- CR_In_Katakana_Phonetic_Extensions,
- CR_In_Enclosed_CJK_Letters_and_Months,
- CR_In_CJK_Compatibility,
- CR_In_CJK_Unified_Ideographs_Extension_A,
- CR_In_Yijing_Hexagram_Symbols,
- CR_In_CJK_Unified_Ideographs,
- CR_In_Yi_Syllables,
- CR_In_Yi_Radicals,
- CR_In_Lisu,
- CR_In_Vai,
- CR_In_Cyrillic_Extended_B,
- CR_In_Bamum,
- CR_In_Modifier_Tone_Letters,
- CR_In_Latin_Extended_D,
- CR_In_Syloti_Nagri,
- CR_In_Common_Indic_Number_Forms,
- CR_In_Phags_pa,
- CR_In_Saurashtra,
- CR_In_Devanagari_Extended,
- CR_In_Kayah_Li,
- CR_In_Rejang,
- CR_In_Hangul_Jamo_Extended_A,
- CR_In_Javanese,
- CR_In_Cham,
- CR_In_Myanmar_Extended_A,
- CR_In_Tai_Viet,
- CR_In_Meetei_Mayek_Extensions,
- CR_In_Ethiopic_Extended_A,
- CR_In_Meetei_Mayek,
- CR_In_Hangul_Syllables,
- CR_In_Hangul_Jamo_Extended_B,
- CR_In_High_Surrogates,
- CR_In_High_Private_Use_Surrogates,
- CR_In_Low_Surrogates,
- CR_In_Private_Use_Area,
- CR_In_CJK_Compatibility_Ideographs,
- CR_In_Alphabetic_Presentation_Forms,
- CR_In_Arabic_Presentation_Forms_A,
- CR_In_Variation_Selectors,
- CR_In_Vertical_Forms,
- CR_In_Combining_Half_Marks,
- CR_In_CJK_Compatibility_Forms,
- CR_In_Small_Form_Variants,
- CR_In_Arabic_Presentation_Forms_B,
- CR_In_Halfwidth_and_Fullwidth_Forms,
- CR_In_Specials,
- CR_In_Linear_B_Syllabary,
- CR_In_Linear_B_Ideograms,
- CR_In_Aegean_Numbers,
- CR_In_Ancient_Greek_Numbers,
- CR_In_Ancient_Symbols,
- CR_In_Phaistos_Disc,
- CR_In_Lycian,
- CR_In_Carian,
- CR_In_Old_Italic,
- CR_In_Gothic,
- CR_In_Ugaritic,
- CR_In_Old_Persian,
- CR_In_Deseret,
- CR_In_Shavian,
- CR_In_Osmanya,
- CR_In_Cypriot_Syllabary,
- CR_In_Imperial_Aramaic,
- CR_In_Phoenician,
- CR_In_Lydian,
- CR_In_Meroitic_Hieroglyphs,
- CR_In_Meroitic_Cursive,
- CR_In_Kharoshthi,
- CR_In_Old_South_Arabian,
- CR_In_Avestan,
- CR_In_Inscriptional_Parthian,
- CR_In_Inscriptional_Pahlavi,
- CR_In_Old_Turkic,
- CR_In_Rumi_Numeral_Symbols,
- CR_In_Brahmi,
- CR_In_Kaithi,
- CR_In_Sora_Sompeng,
- CR_In_Chakma,
- CR_In_Sharada,
- CR_In_Takri,
- CR_In_Cuneiform,
- CR_In_Cuneiform_Numbers_and_Punctuation,
- CR_In_Egyptian_Hieroglyphs,
- CR_In_Bamum_Supplement,
- CR_In_Miao,
- CR_In_Kana_Supplement,
- CR_In_Byzantine_Musical_Symbols,
- CR_In_Musical_Symbols,
- CR_In_Ancient_Greek_Musical_Notation,
- CR_In_Tai_Xuan_Jing_Symbols,
- CR_In_Counting_Rod_Numerals,
- CR_In_Mathematical_Alphanumeric_Symbols,
- CR_In_Arabic_Mathematical_Alphabetic_Symbols,
- CR_In_Mahjong_Tiles,
- CR_In_Domino_Tiles,
- CR_In_Playing_Cards,
- CR_In_Enclosed_Alphanumeric_Supplement,
- CR_In_Enclosed_Ideographic_Supplement,
- CR_In_Miscellaneous_Symbols_And_Pictographs,
- CR_In_Emoticons,
- CR_In_Transport_And_Map_Symbols,
- CR_In_Alchemical_Symbols,
- CR_In_CJK_Unified_Ideographs_Extension_B,
- CR_In_CJK_Unified_Ideographs_Extension_C,
- CR_In_CJK_Unified_Ideographs_Extension_D,
- CR_In_CJK_Compatibility_Ideographs_Supplement,
- CR_In_Tags,
- CR_In_Variation_Selectors_Supplement,
- CR_In_Supplementary_Private_Use_Area_A,
- CR_In_Supplementary_Private_Use_Area_B,
- CR_In_No_Block,
+#endif /* USE_UNICODE_PROPERTIES */
#endif /* USE_UNICODE_PROPERTIES */
};
struct uniname2ctype_struct {
@@ -25947,19 +22182,19 @@ struct uniname2ctype_struct {
static const struct uniname2ctype_struct *uniname2ctype_p(const char *, unsigned int);
#ifndef USE_UNICODE_PROPERTIES
-#define TOTAL_KEYWORDS 14
+#define TOTAL_KEYWORDS 15
#define MIN_WORD_LENGTH 4
-#define MAX_WORD_LENGTH 6
-#define MIN_HASH_VALUE 6
-#define MAX_HASH_VALUE 19
-/* maximum key range = 14, duplicates = 0 */
+#define MAX_WORD_LENGTH 7
+#define MIN_HASH_VALUE 7
+#define MAX_HASH_VALUE 21
+/* maximum key range = 15, duplicates = 0 */
#else /* USE_UNICODE_PROPERTIES */
-#define TOTAL_KEYWORDS 625
+#define TOTAL_KEYWORDS 387
#define MIN_WORD_LENGTH 1
-#define MAX_WORD_LENGTH 44
+#define MAX_WORD_LENGTH 30
#define MIN_HASH_VALUE 3
-#define MAX_HASH_VALUE 4167
-/* maximum key range = 4165, duplicates = 0 */
+#define MAX_HASH_VALUE 1741
+/* maximum key range = 1739, duplicates = 0 */
#endif /* USE_UNICODE_PROPERTIES */
#ifdef __GNUC__
@@ -25981,33 +22216,33 @@ uniname2ctype_hash (str, len)
#endif /* USE_UNICODE_PROPERTIES */
{
#ifndef USE_UNICODE_PROPERTIES
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 3, 11, 5,
- 4, 20, 20, 9, 20, 1, 20, 20, 10, 20,
- 2, 20, 1, 20, 1, 7, 4, 6, 20, 1,
- 4, 20, 20, 20, 20, 20, 20, 20
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 3, 13, 6,
+ 4, 22, 22, 11, 22, 1, 22, 22, 10, 22,
+ 2, 22, 1, 22, 10, 8, 4, 7, 22, 3,
+ 4, 22, 22, 22, 22, 22, 22, 22
#else /* USE_UNICODE_PROPERTIES */
- 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168,
- 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168,
- 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168,
- 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168,
- 4168, 4168, 4168, 4168, 4168, 4168, 1, 4168, 13, 1,
- 3, 28, 31, 10, 27, 4168, 4168, 4168, 4168, 4168,
- 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168,
- 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168,
- 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168,
- 4168, 4168, 4168, 4168, 4168, 4168, 4168, 13, 854, 14,
- 443, 19, 7, 570, 335, 4, 66, 1159, 102, 34,
- 1, 178, 474, 1, 192, 2, 64, 1117, 491, 264,
- 256, 1305, 3, 4168, 4168, 4168, 4168, 4168
+ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
+ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
+ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
+ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
+ 1742, 1742, 1742, 1742, 1742, 1742, 2, 1742, 9, 1,
+ 2, 18, 5, 3, 4, 1742, 1742, 1742, 1742, 1742,
+ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
+ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
+ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
+ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 8, 280, 6,
+ 96, 67, 362, 294, 38, 9, 63, 517, 2, 213,
+ 1, 4, 192, 3, 10, 57, 31, 316, 1, 549,
+ 330, 567, 36, 1742, 1742, 1742, 1742, 1742
#endif /* USE_UNICODE_PROPERTIES */
};
#ifndef USE_UNICODE_PROPERTIES
@@ -26055,1298 +22290,823 @@ uniname2ctype_hash (str, len)
struct uniname2ctype_pool_t
{
#ifndef USE_UNICODE_PROPERTIES
- char uniname2ctype_pool_str6[sizeof("word")];
char uniname2ctype_pool_str7[sizeof("print")];
char uniname2ctype_pool_str8[sizeof("punct")];
char uniname2ctype_pool_str9[sizeof("alpha")];
char uniname2ctype_pool_str10[sizeof("alnum")];
char uniname2ctype_pool_str11[sizeof("xdigit")];
- char uniname2ctype_pool_str12[sizeof("upper")];
- char uniname2ctype_pool_str13[sizeof("ascii")];
- char uniname2ctype_pool_str14[sizeof("cntrl")];
- char uniname2ctype_pool_str15[sizeof("space")];
- char uniname2ctype_pool_str16[sizeof("lower")];
- char uniname2ctype_pool_str17[sizeof("graph")];
- char uniname2ctype_pool_str18[sizeof("digit")];
- char uniname2ctype_pool_str19[sizeof("blank")];
+ char uniname2ctype_pool_str12[sizeof("newline")];
+ char uniname2ctype_pool_str13[sizeof("upper")];
+ char uniname2ctype_pool_str14[sizeof("ascii")];
+ char uniname2ctype_pool_str15[sizeof("cntrl")];
+ char uniname2ctype_pool_str16[sizeof("space")];
+ char uniname2ctype_pool_str17[sizeof("word")];
+ char uniname2ctype_pool_str18[sizeof("lower")];
+ char uniname2ctype_pool_str19[sizeof("graph")];
+ char uniname2ctype_pool_str20[sizeof("digit")];
+ char uniname2ctype_pool_str21[sizeof("blank")];
#else /* USE_UNICODE_PROPERTIES */
char uniname2ctype_pool_str3[sizeof("n")];
- char uniname2ctype_pool_str5[sizeof("s")];
- char uniname2ctype_pool_str7[sizeof("z")];
- char uniname2ctype_pool_str9[sizeof("zs")];
- char uniname2ctype_pool_str16[sizeof("zzzz")];
- char uniname2ctype_pool_str18[sizeof("cn")];
- char uniname2ctype_pool_str20[sizeof("cs")];
- char uniname2ctype_pool_str24[sizeof("ci")];
- char uniname2ctype_pool_str29[sizeof("c")];
- char uniname2ctype_pool_str30[sizeof("cf")];
- char uniname2ctype_pool_str32[sizeof("sc")];
- char uniname2ctype_pool_str34[sizeof("cans")];
- char uniname2ctype_pool_str35[sizeof("qaai")];
- char uniname2ctype_pool_str38[sizeof("mn")];
- char uniname2ctype_pool_str42[sizeof("ascii")];
- char uniname2ctype_pool_str44[sizeof("cc")];
- char uniname2ctype_pool_str45[sizeof("qaac")];
- char uniname2ctype_pool_str49[sizeof("inavestan")];
- char uniname2ctype_pool_str52[sizeof("inspecials")];
- char uniname2ctype_pool_str62[sizeof("inipaextensions")];
- char uniname2ctype_pool_str64[sizeof("mc")];
- char uniname2ctype_pool_str66[sizeof("insamaritan")];
- char uniname2ctype_pool_str69[sizeof("m")];
- char uniname2ctype_pool_str72[sizeof("sm")];
- char uniname2ctype_pool_str74[sizeof("me")];
- char uniname2ctype_pool_str82[sizeof("inarmenian")];
- char uniname2ctype_pool_str84[sizeof("incuneiform")];
- char uniname2ctype_pool_str86[sizeof("mandaic")];
- char uniname2ctype_pool_str90[sizeof("inancientsymbols")];
- char uniname2ctype_pool_str92[sizeof("incuneiformnumbersandpunctuation")];
- char uniname2ctype_pool_str96[sizeof("inthai")];
- char uniname2ctype_pool_str99[sizeof("inmusicalsymbols")];
- char uniname2ctype_pool_str100[sizeof("inmiscellaneoussymbols")];
- char uniname2ctype_pool_str106[sizeof("incham")];
- char uniname2ctype_pool_str109[sizeof("inmiscellaneoussymbolsandarrows")];
- char uniname2ctype_pool_str113[sizeof("initialpunctuation")];
- char uniname2ctype_pool_str114[sizeof("inmiscellaneoussymbolsandpictographs")];
- char uniname2ctype_pool_str116[sizeof("inthaana")];
- char uniname2ctype_pool_str124[sizeof("taile")];
- char uniname2ctype_pool_str125[sizeof("mtei")];
- char uniname2ctype_pool_str132[sizeof("lc")];
- char uniname2ctype_pool_str133[sizeof("lana")];
- char uniname2ctype_pool_str134[sizeof("inlycian")];
- char uniname2ctype_pool_str135[sizeof("intransportandmapsymbols")];
- char uniname2ctype_pool_str136[sizeof("incontrolpictures")];
- char uniname2ctype_pool_str142[sizeof("sinhala")];
- char uniname2ctype_pool_str151[sizeof("incommonindicnumberforms")];
- char uniname2ctype_pool_str156[sizeof("inmiscellaneousmathematicalsymbolsa")];
- char uniname2ctype_pool_str158[sizeof("sterm")];
- char uniname2ctype_pool_str167[sizeof("inmyanmarextendeda")];
- char uniname2ctype_pool_str172[sizeof("lm")];
- char uniname2ctype_pool_str175[sizeof("taiviet")];
- char uniname2ctype_pool_str179[sizeof("inlinearbideograms")];
- char uniname2ctype_pool_str180[sizeof("intaitham")];
- char uniname2ctype_pool_str184[sizeof("latn")];
- char uniname2ctype_pool_str186[sizeof("latin")];
- char uniname2ctype_pool_str187[sizeof("ital")];
- char uniname2ctype_pool_str189[sizeof("alnum")];
- char uniname2ctype_pool_str199[sizeof("inmalayalam")];
- char uniname2ctype_pool_str201[sizeof("intaile")];
- char uniname2ctype_pool_str202[sizeof("tale")];
- char uniname2ctype_pool_str205[sizeof("l")];
- char uniname2ctype_pool_str207[sizeof("nl")];
- char uniname2ctype_pool_str209[sizeof("zl")];
- char uniname2ctype_pool_str216[sizeof("intamil")];
- char uniname2ctype_pool_str217[sizeof("taml")];
- char uniname2ctype_pool_str218[sizeof("inlatinextendeda")];
- char uniname2ctype_pool_str220[sizeof("inlatinextendedc")];
- char uniname2ctype_pool_str223[sizeof("inrunic")];
- char uniname2ctype_pool_str224[sizeof("incarian")];
- char uniname2ctype_pool_str225[sizeof("insyriac")];
- char uniname2ctype_pool_str227[sizeof("cari")];
- char uniname2ctype_pool_str230[sizeof("inmeeteimayekextensions")];
- char uniname2ctype_pool_str231[sizeof("osma")];
- char uniname2ctype_pool_str232[sizeof("lt")];
- char uniname2ctype_pool_str233[sizeof("miao")];
- char uniname2ctype_pool_str234[sizeof("insharada")];
- char uniname2ctype_pool_str239[sizeof("incyrillic")];
- char uniname2ctype_pool_str240[sizeof("carian")];
- char uniname2ctype_pool_str244[sizeof("armn")];
- char uniname2ctype_pool_str245[sizeof("samr")];
- char uniname2ctype_pool_str247[sizeof("armi")];
- char uniname2ctype_pool_str248[sizeof("inideographicdescriptioncharacters")];
- char uniname2ctype_pool_str252[sizeof("inosmanya")];
- char uniname2ctype_pool_str253[sizeof("armenian")];
- char uniname2ctype_pool_str254[sizeof("inmyanmar")];
- char uniname2ctype_pool_str255[sizeof("samaritan")];
- char uniname2ctype_pool_str256[sizeof("arabic")];
- char uniname2ctype_pool_str259[sizeof("incherokee")];
- char uniname2ctype_pool_str261[sizeof("connectorpunctuation")];
- char uniname2ctype_pool_str263[sizeof("merc")];
- char uniname2ctype_pool_str264[sizeof("inmiscellaneoustechnical")];
- char uniname2ctype_pool_str268[sizeof("inenclosedalphanumerics")];
- char uniname2ctype_pool_str279[sizeof("inemoticons")];
- char uniname2ctype_pool_str281[sizeof("joinc")];
- char uniname2ctype_pool_str288[sizeof("cntrl")];
- char uniname2ctype_pool_str301[sizeof("inenclosedcjklettersandmonths")];
- char uniname2ctype_pool_str303[sizeof("cwcf")];
- char uniname2ctype_pool_str304[sizeof("inruminumeralsymbols")];
- char uniname2ctype_pool_str308[sizeof("ll")];
- char uniname2ctype_pool_str313[sizeof("term")];
- char uniname2ctype_pool_str316[sizeof("inlatinextendedadditional")];
- char uniname2ctype_pool_str320[sizeof("tamil")];
- char uniname2ctype_pool_str321[sizeof("loe")];
- char uniname2ctype_pool_str329[sizeof("newtailue")];
- char uniname2ctype_pool_str330[sizeof("cwcm")];
- char uniname2ctype_pool_str339[sizeof("inenclosedalphanumericsupplement")];
- char uniname2ctype_pool_str346[sizeof("sinh")];
- char uniname2ctype_pool_str347[sizeof("zinh")];
- char uniname2ctype_pool_str349[sizeof("meroiticcursive")];
- char uniname2ctype_pool_str353[sizeof("han")];
- char uniname2ctype_pool_str357[sizeof("hani")];
- char uniname2ctype_pool_str358[sizeof("inopticalcharacterrecognition")];
- char uniname2ctype_pool_str359[sizeof("no")];
- char uniname2ctype_pool_str360[sizeof("so")];
- char uniname2ctype_pool_str364[sizeof("innewtailue")];
- char uniname2ctype_pool_str365[sizeof("insinhala")];
- char uniname2ctype_pool_str367[sizeof("innko")];
- char uniname2ctype_pool_str372[sizeof("co")];
- char uniname2ctype_pool_str375[sizeof("shavian")];
- char uniname2ctype_pool_str378[sizeof("terminalpunctuation")];
- char uniname2ctype_pool_str386[sizeof("intaixuanjingsymbols")];
- char uniname2ctype_pool_str387[sizeof("inethiopic")];
- char uniname2ctype_pool_str389[sizeof("sora")];
- char uniname2ctype_pool_str398[sizeof("inarrows")];
- char uniname2ctype_pool_str400[sizeof("cham")];
- char uniname2ctype_pool_str403[sizeof("inlowsurrogates")];
- char uniname2ctype_pool_str405[sizeof("oriya")];
- char uniname2ctype_pool_str406[sizeof("ext")];
- char uniname2ctype_pool_str409[sizeof("cwt")];
- char uniname2ctype_pool_str412[sizeof("common")];
- char uniname2ctype_pool_str414[sizeof("inmiao")];
- char uniname2ctype_pool_str420[sizeof("thai")];
- char uniname2ctype_pool_str425[sizeof("intifinagh")];
- char uniname2ctype_pool_str426[sizeof("ethi")];
- char uniname2ctype_pool_str427[sizeof("mero")];
- char uniname2ctype_pool_str428[sizeof("chakma")];
- char uniname2ctype_pool_str429[sizeof("thaa")];
- char uniname2ctype_pool_str430[sizeof("inscriptionalparthian")];
- char uniname2ctype_pool_str432[sizeof("tifinagh")];
- char uniname2ctype_pool_str436[sizeof("titlecaseletter")];
- char uniname2ctype_pool_str445[sizeof("thaana")];
- char uniname2ctype_pool_str449[sizeof("asciihexdigit")];
- char uniname2ctype_pool_str450[sizeof("math")];
- char uniname2ctype_pool_str453[sizeof("di")];
- char uniname2ctype_pool_str454[sizeof("ids")];
- char uniname2ctype_pool_str460[sizeof("lo")];
- char uniname2ctype_pool_str468[sizeof("inlao")];
- char uniname2ctype_pool_str470[sizeof("taitham")];
- char uniname2ctype_pool_str474[sizeof("lao")];
- char uniname2ctype_pool_str475[sizeof("laoo")];
- char uniname2ctype_pool_str476[sizeof("dia")];
- char uniname2ctype_pool_str478[sizeof("idc")];
- char uniname2ctype_pool_str480[sizeof("ps")];
- char uniname2ctype_pool_str481[sizeof("insundanese")];
- char uniname2ctype_pool_str484[sizeof("pi")];
- char uniname2ctype_pool_str485[sizeof("cwl")];
- char uniname2ctype_pool_str490[sizeof("pf")];
- char uniname2ctype_pool_str495[sizeof("mand")];
- char uniname2ctype_pool_str496[sizeof("insylotinagri")];
- char uniname2ctype_pool_str497[sizeof("vs")];
- char uniname2ctype_pool_str503[sizeof("mongolian")];
- char uniname2ctype_pool_str504[sizeof("pc")];
- char uniname2ctype_pool_str506[sizeof("inmandaic")];
- char uniname2ctype_pool_str509[sizeof("invai")];
- char uniname2ctype_pool_str511[sizeof("lineseparator")];
- char uniname2ctype_pool_str514[sizeof("pe")];
- char uniname2ctype_pool_str515[sizeof("vai")];
- char uniname2ctype_pool_str516[sizeof("vaii")];
- char uniname2ctype_pool_str517[sizeof("idst")];
- char uniname2ctype_pool_str520[sizeof("indominotiles")];
- char uniname2ctype_pool_str521[sizeof("inshavian")];
- char uniname2ctype_pool_str522[sizeof("inspacingmodifierletters")];
- char uniname2ctype_pool_str524[sizeof("format")];
- char uniname2ctype_pool_str528[sizeof("inphaistosdisc")];
- char uniname2ctype_pool_str531[sizeof("hano")];
- char uniname2ctype_pool_str532[sizeof("space")];
- char uniname2ctype_pool_str542[sizeof("indeseret")];
- char uniname2ctype_pool_str545[sizeof("inolchiki")];
- char uniname2ctype_pool_str548[sizeof("hira")];
- char uniname2ctype_pool_str553[sizeof("joincontrol")];
- char uniname2ctype_pool_str555[sizeof("idcontinue")];
- char uniname2ctype_pool_str558[sizeof("inmahjongtiles")];
- char uniname2ctype_pool_str560[sizeof("patws")];
- char uniname2ctype_pool_str563[sizeof("inlydian")];
- char uniname2ctype_pool_str564[sizeof("cher")];
- char uniname2ctype_pool_str568[sizeof("inhiragana")];
- char uniname2ctype_pool_str572[sizeof("inogham")];
- char uniname2ctype_pool_str574[sizeof("avst")];
- char uniname2ctype_pool_str575[sizeof("inscriptionalpahlavi")];
- char uniname2ctype_pool_str579[sizeof("incoptic")];
- char uniname2ctype_pool_str587[sizeof("java")];
- char uniname2ctype_pool_str589[sizeof("inmathematicalalphanumericsymbols")];
- char uniname2ctype_pool_str594[sizeof("letter")];
- char uniname2ctype_pool_str604[sizeof("injavanese")];
- char uniname2ctype_pool_str608[sizeof("avestan")];
- char uniname2ctype_pool_str612[sizeof("age=1.1")];
- char uniname2ctype_pool_str613[sizeof("lepc")];
- char uniname2ctype_pool_str614[sizeof("age=2.1")];
- char uniname2ctype_pool_str616[sizeof("inlepcha")];
- char uniname2ctype_pool_str617[sizeof("javanese")];
- char uniname2ctype_pool_str618[sizeof("shaw")];
- char uniname2ctype_pool_str619[sizeof("finalpunctuation")];
- char uniname2ctype_pool_str620[sizeof("alpha")];
- char uniname2ctype_pool_str621[sizeof("age=5.1")];
- char uniname2ctype_pool_str622[sizeof("inmongolian")];
- char uniname2ctype_pool_str623[sizeof("age=5.2")];
- char uniname2ctype_pool_str626[sizeof("age=2.0")];
- char uniname2ctype_pool_str627[sizeof("ahex")];
- char uniname2ctype_pool_str630[sizeof("ingeneralpunctuation")];
- char uniname2ctype_pool_str631[sizeof("oids")];
- char uniname2ctype_pool_str632[sizeof("odi")];
- char uniname2ctype_pool_str633[sizeof("age=5.0")];
- char uniname2ctype_pool_str636[sizeof("tavt")];
- char uniname2ctype_pool_str637[sizeof("intaiviet")];
- char uniname2ctype_pool_str638[sizeof("age=6.1")];
- char uniname2ctype_pool_str639[sizeof("age=3.1")];
- char uniname2ctype_pool_str640[sizeof("insundanesesupplement")];
- char uniname2ctype_pool_str641[sizeof("age=3.2")];
- char uniname2ctype_pool_str642[sizeof("age=4.1")];
- char uniname2ctype_pool_str643[sizeof("oidc")];
- char uniname2ctype_pool_str646[sizeof("tfng")];
- char uniname2ctype_pool_str647[sizeof("insmallformvariants")];
- char uniname2ctype_pool_str648[sizeof("ideo")];
- char uniname2ctype_pool_str649[sizeof("intags")];
- char uniname2ctype_pool_str650[sizeof("age=6.0")];
- char uniname2ctype_pool_str651[sizeof("age=3.0")];
- char uniname2ctype_pool_str653[sizeof("whitespace")];
- char uniname2ctype_pool_str654[sizeof("age=4.0")];
- char uniname2ctype_pool_str655[sizeof("inolditalic")];
- char uniname2ctype_pool_str660[sizeof("oalpha")];
- char uniname2ctype_pool_str668[sizeof("ingujarati")];
- char uniname2ctype_pool_str672[sizeof("control")];
- char uniname2ctype_pool_str679[sizeof("diacritic")];
- char uniname2ctype_pool_str682[sizeof("tagbanwa")];
- char uniname2ctype_pool_str690[sizeof("inphoenician")];
- char uniname2ctype_pool_str701[sizeof("ininscriptionalparthian")];
- char uniname2ctype_pool_str703[sizeof("ininscriptionalpahlavi")];
- char uniname2ctype_pool_str704[sizeof("coptic")];
- char uniname2ctype_pool_str705[sizeof("dsrt")];
- char uniname2ctype_pool_str706[sizeof("inmodifiertoneletters")];
- char uniname2ctype_pool_str709[sizeof("xids")];
- char uniname2ctype_pool_str713[sizeof("hanunoo")];
- char uniname2ctype_pool_str715[sizeof("inoldturkic")];
- char uniname2ctype_pool_str721[sizeof("xidc")];
- char uniname2ctype_pool_str725[sizeof("idstart")];
- char uniname2ctype_pool_str729[sizeof("inimperialaramaic")];
- char uniname2ctype_pool_str730[sizeof("invariationselectors")];
- char uniname2ctype_pool_str734[sizeof("copt")];
- char uniname2ctype_pool_str737[sizeof("caseignorable")];
- char uniname2ctype_pool_str738[sizeof("prti")];
- char uniname2ctype_pool_str739[sizeof("nchar")];
- char uniname2ctype_pool_str746[sizeof("deseret")];
- char uniname2ctype_pool_str747[sizeof("decimalnumber")];
- char uniname2ctype_pool_str748[sizeof("cprt")];
- char uniname2ctype_pool_str750[sizeof("inlatin1supplement")];
- char uniname2ctype_pool_str771[sizeof("imperialaramaic")];
- char uniname2ctype_pool_str776[sizeof("privateuse")];
- char uniname2ctype_pool_str777[sizeof("casedletter")];
- char uniname2ctype_pool_str778[sizeof("lowercase")];
- char uniname2ctype_pool_str780[sizeof("spaceseparator")];
- char uniname2ctype_pool_str784[sizeof("radical")];
- char uniname2ctype_pool_str787[sizeof("mong")];
- char uniname2ctype_pool_str788[sizeof("canadianaboriginal")];
- char uniname2ctype_pool_str792[sizeof("letternumber")];
- char uniname2ctype_pool_str796[sizeof("insorasompeng")];
- char uniname2ctype_pool_str797[sizeof("dash")];
- char uniname2ctype_pool_str798[sizeof("wspace")];
- char uniname2ctype_pool_str799[sizeof("ogam")];
- char uniname2ctype_pool_str802[sizeof("invariationselectorssupplement")];
- char uniname2ctype_pool_str803[sizeof("print")];
- char uniname2ctype_pool_str811[sizeof("otheridcontinue")];
- char uniname2ctype_pool_str815[sizeof("ingurmukhi")];
- char uniname2ctype_pool_str818[sizeof("closepunctuation")];
- char uniname2ctype_pool_str823[sizeof("olditalic")];
- char uniname2ctype_pool_str824[sizeof("noncharactercodepoint")];
- char uniname2ctype_pool_str826[sizeof("sharada")];
- char uniname2ctype_pool_str827[sizeof("ingeometricshapes")];
- char uniname2ctype_pool_str830[sizeof("otheralphabetic")];
- char uniname2ctype_pool_str831[sizeof("patternwhitespace")];
- char uniname2ctype_pool_str832[sizeof("po")];
- char uniname2ctype_pool_str833[sizeof("rjng")];
- char uniname2ctype_pool_str835[sizeof("ingreekandcoptic")];
- char uniname2ctype_pool_str841[sizeof("xdigit")];
- char uniname2ctype_pool_str850[sizeof("gothic")];
- char uniname2ctype_pool_str851[sizeof("inoldsoutharabian")];
- char uniname2ctype_pool_str852[sizeof("xidstart")];
- char uniname2ctype_pool_str854[sizeof("inrejang")];
- char uniname2ctype_pool_str860[sizeof("idsbinaryoperator")];
- char uniname2ctype_pool_str867[sizeof("olower")];
- char uniname2ctype_pool_str869[sizeof("hex")];
- char uniname2ctype_pool_str870[sizeof("inenclosedideographicsupplement")];
- char uniname2ctype_pool_str874[sizeof("inalphabeticpresentationforms")];
- char uniname2ctype_pool_str879[sizeof("inbasiclatin")];
- char uniname2ctype_pool_str884[sizeof("othersymbol")];
- char uniname2ctype_pool_str889[sizeof("nd")];
- char uniname2ctype_pool_str890[sizeof("sd")];
- char uniname2ctype_pool_str900[sizeof("omath")];
- char uniname2ctype_pool_str901[sizeof("separator")];
- char uniname2ctype_pool_str907[sizeof("inarabic")];
- char uniname2ctype_pool_str912[sizeof("xidcontinue")];
- char uniname2ctype_pool_str913[sizeof("otheridstart")];
- char uniname2ctype_pool_str914[sizeof("grext")];
- char uniname2ctype_pool_str917[sizeof("otherlowercase")];
- char uniname2ctype_pool_str919[sizeof("phli")];
- char uniname2ctype_pool_str920[sizeof("cased")];
- char uniname2ctype_pool_str923[sizeof("hang")];
- char uniname2ctype_pool_str931[sizeof("xpeo")];
- char uniname2ctype_pool_str933[sizeof("lower")];
- char uniname2ctype_pool_str936[sizeof("modifierletter")];
- char uniname2ctype_pool_str938[sizeof("inphoneticextensions")];
- char uniname2ctype_pool_str939[sizeof("inarabicpresentationformsa")];
- char uniname2ctype_pool_str943[sizeof("innumberforms")];
- char uniname2ctype_pool_str945[sizeof("oldpersian")];
- char uniname2ctype_pool_str946[sizeof("incyrillicextendeda")];
- char uniname2ctype_pool_str947[sizeof("inverticalforms")];
- char uniname2ctype_pool_str949[sizeof("p")];
- char uniname2ctype_pool_str950[sizeof("inbyzantinemusicalsymbols")];
- char uniname2ctype_pool_str951[sizeof("inmathematicaloperators")];
- char uniname2ctype_pool_str952[sizeof("intibetan")];
- char uniname2ctype_pool_str953[sizeof("zp")];
- char uniname2ctype_pool_str956[sizeof("ingeorgian")];
- char uniname2ctype_pool_str960[sizeof("inbraillepatterns")];
- char uniname2ctype_pool_str962[sizeof("lepcha")];
- char uniname2ctype_pool_str963[sizeof("geor")];
- char uniname2ctype_pool_str964[sizeof("invedicextensions")];
- char uniname2ctype_pool_str965[sizeof("linb")];
- char uniname2ctype_pool_str966[sizeof("other")];
- char uniname2ctype_pool_str970[sizeof("deva")];
- char uniname2ctype_pool_str972[sizeof("indevanagari")];
- char uniname2ctype_pool_str973[sizeof("othernumber")];
- char uniname2ctype_pool_str974[sizeof("bamum")];
- char uniname2ctype_pool_str976[sizeof("shrd")];
- char uniname2ctype_pool_str977[sizeof("bali")];
- char uniname2ctype_pool_str981[sizeof("devanagari")];
- char uniname2ctype_pool_str983[sizeof("extender")];
- char uniname2ctype_pool_str988[sizeof("inherited")];
- char uniname2ctype_pool_str989[sizeof("glagolitic")];
- char uniname2ctype_pool_str990[sizeof("tibt")];
- char uniname2ctype_pool_str994[sizeof("inbalinese")];
- char uniname2ctype_pool_str996[sizeof("ingothic")];
- char uniname2ctype_pool_str997[sizeof("inmiscellaneousmathematicalsymbolsb")];
- char uniname2ctype_pool_str998[sizeof("limb")];
- char uniname2ctype_pool_str1000[sizeof("bengali")];
- char uniname2ctype_pool_str1003[sizeof("phoenician")];
- char uniname2ctype_pool_str1004[sizeof("insuperscriptsandsubscripts")];
- char uniname2ctype_pool_str1006[sizeof("inmeroitichieroglyphs")];
- char uniname2ctype_pool_str1007[sizeof("tibetan")];
- char uniname2ctype_pool_str1010[sizeof("inphoneticextensionssupplement")];
- char uniname2ctype_pool_str1016[sizeof("balinese")];
- char uniname2ctype_pool_str1021[sizeof("lowercaseletter")];
- char uniname2ctype_pool_str1031[sizeof("indingbats")];
- char uniname2ctype_pool_str1035[sizeof("inprivateusearea")];
- char uniname2ctype_pool_str1039[sizeof("assigned")];
- char uniname2ctype_pool_str1044[sizeof("patternsyntax")];
- char uniname2ctype_pool_str1051[sizeof("inhangulsyllables")];
- char uniname2ctype_pool_str1065[sizeof("sarb")];
- char uniname2ctype_pool_str1067[sizeof("brai")];
- char uniname2ctype_pool_str1069[sizeof("insupplementalmathematicaloperators")];
- char uniname2ctype_pool_str1070[sizeof("phnx")];
- char uniname2ctype_pool_str1072[sizeof("ingreekextended")];
- char uniname2ctype_pool_str1074[sizeof("otherletter")];
- char uniname2ctype_pool_str1076[sizeof("arab")];
- char uniname2ctype_pool_str1078[sizeof("inlatinextendedd")];
- char uniname2ctype_pool_str1081[sizeof("word")];
- char uniname2ctype_pool_str1084[sizeof("inphagspa")];
- char uniname2ctype_pool_str1087[sizeof("inblockelements")];
- char uniname2ctype_pool_str1092[sizeof("ethiopic")];
- char uniname2ctype_pool_str1094[sizeof("inethiopicextendeda")];
- char uniname2ctype_pool_str1107[sizeof("brahmi")];
- char uniname2ctype_pool_str1110[sizeof("logicalorderexception")];
- char uniname2ctype_pool_str1114[sizeof("inoldpersian")];
- char uniname2ctype_pool_str1129[sizeof("inletterlikesymbols")];
- char uniname2ctype_pool_str1133[sizeof("sorasompeng")];
- char uniname2ctype_pool_str1135[sizeof("hiragana")];
- char uniname2ctype_pool_str1142[sizeof("inhanguljamoextendeda")];
- char uniname2ctype_pool_str1147[sizeof("othermath")];
- char uniname2ctype_pool_str1150[sizeof("digit")];
- char uniname2ctype_pool_str1151[sizeof("goth")];
- char uniname2ctype_pool_str1156[sizeof("ogham")];
- char uniname2ctype_pool_str1162[sizeof("sundanese")];
- char uniname2ctype_pool_str1170[sizeof("saurashtra")];
- char uniname2ctype_pool_str1173[sizeof("linearb")];
- char uniname2ctype_pool_str1179[sizeof("graphemebase")];
- char uniname2ctype_pool_str1185[sizeof("inunifiedcanadianaboriginalsyllabics")];
- char uniname2ctype_pool_str1186[sizeof("cuneiform")];
- char uniname2ctype_pool_str1188[sizeof("inkannada")];
- char uniname2ctype_pool_str1190[sizeof("kana")];
- char uniname2ctype_pool_str1195[sizeof("inancientgreeknumbers")];
- char uniname2ctype_pool_str1196[sizeof("incjkstrokes")];
- char uniname2ctype_pool_str1198[sizeof("inglagolitic")];
- char uniname2ctype_pool_str1202[sizeof("inancientgreekmusicalnotation")];
- char uniname2ctype_pool_str1212[sizeof("inchakma")];
- char uniname2ctype_pool_str1215[sizeof("plrd")];
- char uniname2ctype_pool_str1219[sizeof("inbrahmi")];
- char uniname2ctype_pool_str1224[sizeof("cakm")];
- char uniname2ctype_pool_str1225[sizeof("incjkcompatibilityforms")];
- char uniname2ctype_pool_str1229[sizeof("lisu")];
- char uniname2ctype_pool_str1230[sizeof("incjkcompatibilityideographs")];
- char uniname2ctype_pool_str1231[sizeof("intagalog")];
- char uniname2ctype_pool_str1244[sizeof("inkaithi")];
- char uniname2ctype_pool_str1245[sizeof("insupplementalarrowsa")];
- char uniname2ctype_pool_str1249[sizeof("takri")];
- char uniname2ctype_pool_str1253[sizeof("ideographic")];
- char uniname2ctype_pool_str1256[sizeof("hexdigit")];
- char uniname2ctype_pool_str1259[sizeof("glag")];
- char uniname2ctype_pool_str1261[sizeof("softdotted")];
- char uniname2ctype_pool_str1262[sizeof("variationselector")];
- char uniname2ctype_pool_str1264[sizeof("inkatakana")];
- char uniname2ctype_pool_str1265[sizeof("meeteimayek")];
- char uniname2ctype_pool_str1274[sizeof("otherpunctuation")];
- char uniname2ctype_pool_str1279[sizeof("inhanguljamo")];
- char uniname2ctype_pool_str1282[sizeof("kali")];
- char uniname2ctype_pool_str1289[sizeof("braille")];
- char uniname2ctype_pool_str1298[sizeof("incombininghalfmarks")];
- char uniname2ctype_pool_str1300[sizeof("talu")];
- char uniname2ctype_pool_str1302[sizeof("incjkcompatibilityideographssupplement")];
- char uniname2ctype_pool_str1306[sizeof("telu")];
- char uniname2ctype_pool_str1307[sizeof("idsb")];
- char uniname2ctype_pool_str1310[sizeof("tglg")];
- char uniname2ctype_pool_str1313[sizeof("inmeeteimayek")];
- char uniname2ctype_pool_str1315[sizeof("yi")];
- char uniname2ctype_pool_str1318[sizeof("phagspa")];
- char uniname2ctype_pool_str1321[sizeof("yiii")];
- char uniname2ctype_pool_str1323[sizeof("inarabicmathematicalalphabeticsymbols")];
- char uniname2ctype_pool_str1328[sizeof("saur")];
- char uniname2ctype_pool_str1330[sizeof("ogrext")];
- char uniname2ctype_pool_str1334[sizeof("bidic")];
- char uniname2ctype_pool_str1341[sizeof("inkanasupplement")];
- char uniname2ctype_pool_str1343[sizeof("runic")];
- char uniname2ctype_pool_str1344[sizeof("inalchemicalsymbols")];
- char uniname2ctype_pool_str1350[sizeof("georgian")];
- char uniname2ctype_pool_str1351[sizeof("inugaritic")];
- char uniname2ctype_pool_str1354[sizeof("insaurashtra")];
- char uniname2ctype_pool_str1356[sizeof("inhighprivateusesurrogates")];
- char uniname2ctype_pool_str1362[sizeof("pd")];
- char uniname2ctype_pool_str1372[sizeof("incountingrodnumerals")];
- char uniname2ctype_pool_str1377[sizeof("inarabicextendeda")];
- char uniname2ctype_pool_str1389[sizeof("inkharoshthi")];
- char uniname2ctype_pool_str1393[sizeof("idstrinaryoperator")];
- char uniname2ctype_pool_str1396[sizeof("phag")];
- char uniname2ctype_pool_str1398[sizeof("brah")];
- char uniname2ctype_pool_str1402[sizeof("mark")];
- char uniname2ctype_pool_str1404[sizeof("hebr")];
- char uniname2ctype_pool_str1411[sizeof("inkhmersymbols")];
- char uniname2ctype_pool_str1413[sizeof("dep")];
- char uniname2ctype_pool_str1416[sizeof("inkhmer")];
- char uniname2ctype_pool_str1422[sizeof("deprecated")];
- char uniname2ctype_pool_str1424[sizeof("rejang")];
- char uniname2ctype_pool_str1429[sizeof("lyci")];
- char uniname2ctype_pool_str1431[sizeof("intakri")];
- char uniname2ctype_pool_str1432[sizeof("takr")];
- char uniname2ctype_pool_str1435[sizeof("incyrillicsupplement")];
- char uniname2ctype_pool_str1436[sizeof("changeswhencasefolded")];
- char uniname2ctype_pool_str1438[sizeof("indevanagariextended")];
- char uniname2ctype_pool_str1442[sizeof("lycian")];
- char uniname2ctype_pool_str1443[sizeof("inbengali")];
- char uniname2ctype_pool_str1448[sizeof("beng")];
- char uniname2ctype_pool_str1450[sizeof("graph")];
- char uniname2ctype_pool_str1452[sizeof("inyijinghexagramsymbols")];
- char uniname2ctype_pool_str1457[sizeof("olck")];
- char uniname2ctype_pool_str1460[sizeof("inarabicsupplement")];
- char uniname2ctype_pool_str1462[sizeof("inbuginese")];
- char uniname2ctype_pool_str1463[sizeof("changeswhencasemapped")];
- char uniname2ctype_pool_str1468[sizeof("olchiki")];
- char uniname2ctype_pool_str1478[sizeof("inaegeannumbers")];
- char uniname2ctype_pool_str1479[sizeof("mlym")];
- char uniname2ctype_pool_str1480[sizeof("alphabetic")];
- char uniname2ctype_pool_str1492[sizeof("sylotinagri")];
- char uniname2ctype_pool_str1498[sizeof("changeswhentitlecased")];
- char uniname2ctype_pool_str1504[sizeof("tagalog")];
- char uniname2ctype_pool_str1505[sizeof("tagb")];
- char uniname2ctype_pool_str1506[sizeof("runr")];
- char uniname2ctype_pool_str1510[sizeof("malayalam")];
- char uniname2ctype_pool_str1512[sizeof("inoriya")];
- char uniname2ctype_pool_str1516[sizeof("intagbanwa")];
- char uniname2ctype_pool_str1517[sizeof("syrc")];
- char uniname2ctype_pool_str1519[sizeof("nko")];
- char uniname2ctype_pool_str1520[sizeof("nkoo")];
- char uniname2ctype_pool_str1523[sizeof("inethiopicextended")];
- char uniname2ctype_pool_str1525[sizeof("kaithi")];
- char uniname2ctype_pool_str1530[sizeof("mathsymbol")];
- char uniname2ctype_pool_str1531[sizeof("inyiradicals")];
- char uniname2ctype_pool_str1536[sizeof("insupplementaryprivateuseareaa")];
- char uniname2ctype_pool_str1540[sizeof("osmanya")];
- char uniname2ctype_pool_str1546[sizeof("syriac")];
- char uniname2ctype_pool_str1548[sizeof("otherdefaultignorablecodepoint")];
- char uniname2ctype_pool_str1561[sizeof("number")];
- char uniname2ctype_pool_str1565[sizeof("inlinearbsyllabary")];
- char uniname2ctype_pool_str1566[sizeof("kthi")];
- char uniname2ctype_pool_str1567[sizeof("sund")];
- char uniname2ctype_pool_str1569[sizeof("mymr")];
- char uniname2ctype_pool_str1571[sizeof("incombiningdiacriticalmarks")];
- char uniname2ctype_pool_str1578[sizeof("enclosingmark")];
- char uniname2ctype_pool_str1581[sizeof("incombiningdiacriticalmarksforsymbols")];
- char uniname2ctype_pool_str1583[sizeof("inethiopicsupplement")];
- char uniname2ctype_pool_str1590[sizeof("unassigned")];
- char uniname2ctype_pool_str1591[sizeof("sylo")];
- char uniname2ctype_pool_str1595[sizeof("combiningmark")];
- char uniname2ctype_pool_str1598[sizeof("myanmar")];
- char uniname2ctype_pool_str1605[sizeof("graphemeextend")];
- char uniname2ctype_pool_str1606[sizeof("bidicontrol")];
- char uniname2ctype_pool_str1609[sizeof("inhalfwidthandfullwidthforms")];
- char uniname2ctype_pool_str1617[sizeof("cyrl")];
- char uniname2ctype_pool_str1620[sizeof("knda")];
- char uniname2ctype_pool_str1634[sizeof("inunifiedcanadianaboriginalsyllabicsextended")];
- char uniname2ctype_pool_str1635[sizeof("xsux")];
- char uniname2ctype_pool_str1636[sizeof("modifiersymbol")];
- char uniname2ctype_pool_str1643[sizeof("incombiningdiacriticalmarkssupplement")];
- char uniname2ctype_pool_str1645[sizeof("inhanunoo")];
- char uniname2ctype_pool_str1648[sizeof("inbuhid")];
- char uniname2ctype_pool_str1649[sizeof("kannada")];
- char uniname2ctype_pool_str1658[sizeof("inhebrew")];
- char uniname2ctype_pool_str1662[sizeof("grbase")];
- char uniname2ctype_pool_str1664[sizeof("spacingmark")];
- char uniname2ctype_pool_str1670[sizeof("inkatakanaphoneticextensions")];
- char uniname2ctype_pool_str1676[sizeof("hangul")];
- char uniname2ctype_pool_str1683[sizeof("incjksymbolsandpunctuation")];
- char uniname2ctype_pool_str1688[sizeof("bopo")];
- char uniname2ctype_pool_str1692[sizeof("orya")];
- char uniname2ctype_pool_str1699[sizeof("inbopomofo")];
- char uniname2ctype_pool_str1701[sizeof("kharoshthi")];
- char uniname2ctype_pool_str1703[sizeof("khar")];
- char uniname2ctype_pool_str1709[sizeof("changeswhenlowercased")];
- char uniname2ctype_pool_str1724[sizeof("khmr")];
- char uniname2ctype_pool_str1725[sizeof("punct")];
- char uniname2ctype_pool_str1729[sizeof("symbol")];
- char uniname2ctype_pool_str1732[sizeof("cherokee")];
- char uniname2ctype_pool_str1737[sizeof("cyrillic")];
- char uniname2ctype_pool_str1759[sizeof("inkangxiradicals")];
- char uniname2ctype_pool_str1761[sizeof("hebrew")];
- char uniname2ctype_pool_str1780[sizeof("inarabicpresentationformsb")];
- char uniname2ctype_pool_str1787[sizeof("incyrillicextendedb")];
- char uniname2ctype_pool_str1790[sizeof("ugaritic")];
- char uniname2ctype_pool_str1829[sizeof("incurrencysymbols")];
- char uniname2ctype_pool_str1831[sizeof("meroitichieroglyphs")];
- char uniname2ctype_pool_str1835[sizeof("inhighsurrogates")];
- char uniname2ctype_pool_str1853[sizeof("nonspacingmark")];
- char uniname2ctype_pool_str1858[sizeof("lydi")];
- char uniname2ctype_pool_str1864[sizeof("patsyn")];
- char uniname2ctype_pool_str1868[sizeof("orkh")];
- char uniname2ctype_pool_str1871[sizeof("lydian")];
- char uniname2ctype_pool_str1896[sizeof("ugar")];
- char uniname2ctype_pool_str1899[sizeof("othergraphemeextend")];
- char uniname2ctype_pool_str1900[sizeof("inlatinextendedb")];
- char uniname2ctype_pool_str1904[sizeof("bopomofo")];
- char uniname2ctype_pool_str1917[sizeof("khmer")];
- char uniname2ctype_pool_str1925[sizeof("uideo")];
- char uniname2ctype_pool_str1932[sizeof("otheruppercase")];
- char uniname2ctype_pool_str1944[sizeof("grek")];
- char uniname2ctype_pool_str1949[sizeof("gujr")];
- char uniname2ctype_pool_str1970[sizeof("gujarati")];
- char uniname2ctype_pool_str1983[sizeof("inhanguljamoextendedb")];
- char uniname2ctype_pool_str1988[sizeof("defaultignorablecodepoint")];
- char uniname2ctype_pool_str2005[sizeof("inplayingcards")];
- char uniname2ctype_pool_str2022[sizeof("bamu")];
- char uniname2ctype_pool_str2028[sizeof("inkanbun")];
- char uniname2ctype_pool_str2033[sizeof("incjkradicalssupplement")];
- char uniname2ctype_pool_str2046[sizeof("cypriot")];
- char uniname2ctype_pool_str2051[sizeof("inbamum")];
- char uniname2ctype_pool_str2053[sizeof("inmeroiticcursive")];
- char uniname2ctype_pool_str2055[sizeof("oldturkic")];
- char uniname2ctype_pool_str2086[sizeof("insupplementalarrowsb")];
- char uniname2ctype_pool_str2087[sizeof("surrogate")];
- char uniname2ctype_pool_str2094[sizeof("batk")];
- char uniname2ctype_pool_str2102[sizeof("inbatak")];
- char uniname2ctype_pool_str2119[sizeof("inlimbu")];
- char uniname2ctype_pool_str2123[sizeof("incypriotsyllabary")];
- char uniname2ctype_pool_str2129[sizeof("dashpunctuation")];
- char uniname2ctype_pool_str2130[sizeof("innoblock")];
- char uniname2ctype_pool_str2141[sizeof("hyphen")];
- char uniname2ctype_pool_str2162[sizeof("insupplementalpunctuation")];
- char uniname2ctype_pool_str2165[sizeof("ingeorgiansupplement")];
- char uniname2ctype_pool_str2178[sizeof("oupper")];
- char uniname2ctype_pool_str2189[sizeof("paragraphseparator")];
- char uniname2ctype_pool_str2194[sizeof("inbamumsupplement")];
- char uniname2ctype_pool_str2299[sizeof("uppercase")];
- char uniname2ctype_pool_str2313[sizeof("currencysymbol")];
- char uniname2ctype_pool_str2322[sizeof("sk")];
- char uniname2ctype_pool_str2338[sizeof("lu")];
- char uniname2ctype_pool_str2342[sizeof("openpunctuation")];
- char uniname2ctype_pool_str2349[sizeof("inlisu")];
- char uniname2ctype_pool_str2371[sizeof("qmark")];
- char uniname2ctype_pool_str2372[sizeof("egyp")];
- char uniname2ctype_pool_str2377[sizeof("insupplementaryprivateuseareab")];
- char uniname2ctype_pool_str2379[sizeof("limbu")];
- char uniname2ctype_pool_str2400[sizeof("inegyptianhieroglyphs")];
- char uniname2ctype_pool_str2401[sizeof("unifiedideograph")];
- char uniname2ctype_pool_str2413[sizeof("intelugu")];
- char uniname2ctype_pool_str2429[sizeof("katakana")];
- char uniname2ctype_pool_str2442[sizeof("inhangulcompatibilityjamo")];
- char uniname2ctype_pool_str2454[sizeof("upper")];
- char uniname2ctype_pool_str2495[sizeof("inkayahli")];
- char uniname2ctype_pool_str2515[sizeof("cwu")];
- char uniname2ctype_pool_str2523[sizeof("incjkcompatibility")];
- char uniname2ctype_pool_str2542[sizeof("uppercaseletter")];
- char uniname2ctype_pool_str2549[sizeof("bugi")];
- char uniname2ctype_pool_str2588[sizeof("buginese")];
- char uniname2ctype_pool_str2627[sizeof("any")];
- char uniname2ctype_pool_str2651[sizeof("inyisyllables")];
- char uniname2ctype_pool_str2671[sizeof("inbopomofoextended")];
- char uniname2ctype_pool_str2710[sizeof("inboxdrawing")];
- char uniname2ctype_pool_str2724[sizeof("changeswhenuppercased")];
- char uniname2ctype_pool_str2727[sizeof("unknown")];
- char uniname2ctype_pool_str2737[sizeof("quotationmark")];
- char uniname2ctype_pool_str2753[sizeof("buhd")];
- char uniname2ctype_pool_str2785[sizeof("punctuation")];
- char uniname2ctype_pool_str2888[sizeof("oldsoutharabian")];
- char uniname2ctype_pool_str2925[sizeof("kayahli")];
- char uniname2ctype_pool_str2940[sizeof("incjkunifiedideographs")];
- char uniname2ctype_pool_str2961[sizeof("incjkunifiedideographsextensiona")];
- char uniname2ctype_pool_str2962[sizeof("incjkunifiedideographsextensionc")];
- char uniname2ctype_pool_str2995[sizeof("telugu")];
- char uniname2ctype_pool_str3000[sizeof("guru")];
- char uniname2ctype_pool_str3104[sizeof("greek")];
- char uniname2ctype_pool_str3189[sizeof("grlink")];
- char uniname2ctype_pool_str3197[sizeof("buhid")];
- char uniname2ctype_pool_str3254[sizeof("batak")];
- char uniname2ctype_pool_str3292[sizeof("blank")];
- char uniname2ctype_pool_str3391[sizeof("incjkunifiedideographsextensiond")];
- char uniname2ctype_pool_str3459[sizeof("graphemelink")];
- char uniname2ctype_pool_str3480[sizeof("egyptianhieroglyphs")];
- char uniname2ctype_pool_str3802[sizeof("incjkunifiedideographsextensionb")];
- char uniname2ctype_pool_str3922[sizeof("zyyy")];
- char uniname2ctype_pool_str4167[sizeof("gurmukhi")];
+ char uniname2ctype_pool_str5[sizeof("l")];
+ char uniname2ctype_pool_str7[sizeof("nl")];
+ char uniname2ctype_pool_str8[sizeof("ll")];
+ char uniname2ctype_pool_str10[sizeof("cn")];
+ char uniname2ctype_pool_str11[sizeof("no")];
+ char uniname2ctype_pool_str12[sizeof("lo")];
+ char uniname2ctype_pool_str13[sizeof("c")];
+ char uniname2ctype_pool_str16[sizeof("co")];
+ char uniname2ctype_pool_str20[sizeof("cc")];
+ char uniname2ctype_pool_str21[sizeof("lao")];
+ char uniname2ctype_pool_str22[sizeof("laoo")];
+ char uniname2ctype_pool_str23[sizeof("lana")];
+ char uniname2ctype_pool_str26[sizeof("ci")];
+ char uniname2ctype_pool_str29[sizeof("qaac")];
+ char uniname2ctype_pool_str30[sizeof("vai")];
+ char uniname2ctype_pool_str31[sizeof("vaii")];
+ char uniname2ctype_pool_str32[sizeof("qaai")];
+ char uniname2ctype_pool_str34[sizeof("control")];
+ char uniname2ctype_pool_str37[sizeof("cari")];
+ char uniname2ctype_pool_str40[sizeof("carian")];
+ char uniname2ctype_pool_str42[sizeof("zl")];
+ char uniname2ctype_pool_str44[sizeof("oriya")];
+ char uniname2ctype_pool_str46[sizeof("latn")];
+ char uniname2ctype_pool_str47[sizeof("cntrl")];
+ char uniname2ctype_pool_str48[sizeof("latin")];
+ char uniname2ctype_pool_str51[sizeof("han")];
+ char uniname2ctype_pool_str53[sizeof("arabic")];
+ char uniname2ctype_pool_str54[sizeof("ital")];
+ char uniname2ctype_pool_str55[sizeof("hano")];
+ char uniname2ctype_pool_str60[sizeof("hani")];
+ char uniname2ctype_pool_str63[sizeof("hanunoo")];
+ char uniname2ctype_pool_str66[sizeof("lt")];
+ char uniname2ctype_pool_str67[sizeof("so")];
+ char uniname2ctype_pool_str69[sizeof("hira")];
+ char uniname2ctype_pool_str70[sizeof("nchar")];
+ char uniname2ctype_pool_str71[sizeof("sc")];
+ char uniname2ctype_pool_str73[sizeof("z")];
+ char uniname2ctype_pool_str74[sizeof("oalpha")];
+ char uniname2ctype_pool_str75[sizeof("tavt")];
+ char uniname2ctype_pool_str76[sizeof("cans")];
+ char uniname2ctype_pool_str84[sizeof("java")];
+ char uniname2ctype_pool_str88[sizeof("zinh")];
+ char uniname2ctype_pool_str89[sizeof("thaa")];
+ char uniname2ctype_pool_str90[sizeof("thai")];
+ char uniname2ctype_pool_str91[sizeof("variationselector")];
+ char uniname2ctype_pool_str92[sizeof("sinhala")];
+ char uniname2ctype_pool_str93[sizeof("joinc")];
+ char uniname2ctype_pool_str94[sizeof("ascii")];
+ char uniname2ctype_pool_str95[sizeof("initialpunctuation")];
+ char uniname2ctype_pool_str98[sizeof("other")];
+ char uniname2ctype_pool_str99[sizeof("joincontrol")];
+ char uniname2ctype_pool_str100[sizeof("thaana")];
+ char uniname2ctype_pool_str101[sizeof("avst")];
+ char uniname2ctype_pool_str103[sizeof("olower")];
+ char uniname2ctype_pool_str105[sizeof("othernumber")];
+ char uniname2ctype_pool_str106[sizeof("otherletter")];
+ char uniname2ctype_pool_str109[sizeof("sinh")];
+ char uniname2ctype_pool_str112[sizeof("tale")];
+ char uniname2ctype_pool_str114[sizeof("connectorpunctuation")];
+ char uniname2ctype_pool_str115[sizeof("s")];
+ char uniname2ctype_pool_str116[sizeof("di")];
+ char uniname2ctype_pool_str117[sizeof("vs")];
+ char uniname2ctype_pool_str119[sizeof("oidc")];
+ char uniname2ctype_pool_str120[sizeof("idc")];
+ char uniname2ctype_pool_str121[sizeof("odi")];
+ char uniname2ctype_pool_str122[sizeof("cs")];
+ char uniname2ctype_pool_str123[sizeof("avestan")];
+ char uniname2ctype_pool_str124[sizeof("dia")];
+ char uniname2ctype_pool_str125[sizeof("cher")];
+ char uniname2ctype_pool_str126[sizeof("inscriptionalparthian")];
+ char uniname2ctype_pool_str128[sizeof("shavian")];
+ char uniname2ctype_pool_str137[sizeof("radical")];
+ char uniname2ctype_pool_str143[sizeof("loe")];
+ char uniname2ctype_pool_str147[sizeof("diacritic")];
+ char uniname2ctype_pool_str148[sizeof("zzzz")];
+ char uniname2ctype_pool_str149[sizeof("ethi")];
+ char uniname2ctype_pool_str151[sizeof("canadianaboriginal")];
+ char uniname2ctype_pool_str152[sizeof("zs")];
+ char uniname2ctype_pool_str153[sizeof("othersymbol")];
+ char uniname2ctype_pool_str156[sizeof("olditalic")];
+ char uniname2ctype_pool_str161[sizeof("inscriptionalpahlavi")];
+ char uniname2ctype_pool_str162[sizeof("taiviet")];
+ char uniname2ctype_pool_str163[sizeof("lineseparator")];
+ char uniname2ctype_pool_str166[sizeof("otheridstart")];
+ char uniname2ctype_pool_str170[sizeof("oids")];
+ char uniname2ctype_pool_str171[sizeof("asciihexdigit")];
+ char uniname2ctype_pool_str172[sizeof("inherited")];
+ char uniname2ctype_pool_str174[sizeof("otherlowercase")];
+ char uniname2ctype_pool_str175[sizeof("terminalpunctuation")];
+ char uniname2ctype_pool_str176[sizeof("deva")];
+ char uniname2ctype_pool_str179[sizeof("otheralphabetic")];
+ char uniname2ctype_pool_str180[sizeof("ideo")];
+ char uniname2ctype_pool_str181[sizeof("noncharactercodepoint")];
+ char uniname2ctype_pool_str183[sizeof("otheridcontinue")];
+ char uniname2ctype_pool_str187[sizeof("taile")];
+ char uniname2ctype_pool_str190[sizeof("oldpersian")];
+ char uniname2ctype_pool_str192[sizeof("devanagari")];
+ char uniname2ctype_pool_str193[sizeof("letter")];
+ char uniname2ctype_pool_str195[sizeof("nd")];
+ char uniname2ctype_pool_str197[sizeof("idst")];
+ char uniname2ctype_pool_str198[sizeof("dsrt")];
+ char uniname2ctype_pool_str200[sizeof("titlecaseletter")];
+ char uniname2ctype_pool_str202[sizeof("po")];
+ char uniname2ctype_pool_str203[sizeof("dash")];
+ char uniname2ctype_pool_str206[sizeof("pc")];
+ char uniname2ctype_pool_str209[sizeof("letternumber")];
+ char uniname2ctype_pool_str212[sizeof("pi")];
+ char uniname2ctype_pool_str215[sizeof("javanese")];
+ char uniname2ctype_pool_str217[sizeof("mn")];
+ char uniname2ctype_pool_str218[sizeof("idstart")];
+ char uniname2ctype_pool_str220[sizeof("idcontinue")];
+ char uniname2ctype_pool_str222[sizeof("ids")];
+ char uniname2ctype_pool_str223[sizeof("alpha")];
+ char uniname2ctype_pool_str227[sizeof("mc")];
+ char uniname2ctype_pool_str229[sizeof("coptic")];
+ char uniname2ctype_pool_str234[sizeof("mongolian")];
+ char uniname2ctype_pool_str235[sizeof("common")];
+ char uniname2ctype_pool_str236[sizeof("armn")];
+ char uniname2ctype_pool_str237[sizeof("copt")];
+ char uniname2ctype_pool_str243[sizeof("cprt")];
+ char uniname2ctype_pool_str244[sizeof("armi")];
+ char uniname2ctype_pool_str245[sizeof("phli")];
+ char uniname2ctype_pool_str246[sizeof("prti")];
+ char uniname2ctype_pool_str250[sizeof("armenian")];
+ char uniname2ctype_pool_str251[sizeof("sd")];
+ char uniname2ctype_pool_str252[sizeof("mandaic")];
+ char uniname2ctype_pool_str255[sizeof("phoenician")];
+ char uniname2ctype_pool_str258[sizeof("taml")];
+ char uniname2ctype_pool_str261[sizeof("tamil")];
+ char uniname2ctype_pool_str268[sizeof("cased")];
+ char uniname2ctype_pool_str269[sizeof("cham")];
+ char uniname2ctype_pool_str270[sizeof("idsbinaryoperator")];
+ char uniname2ctype_pool_str271[sizeof("lepc")];
+ char uniname2ctype_pool_str275[sizeof("otherdefaultignorablecodepoint")];
+ char uniname2ctype_pool_str278[sizeof("print")];
+ char uniname2ctype_pool_str286[sizeof("osma")];
+ char uniname2ctype_pool_str292[sizeof("samr")];
+ char uniname2ctype_pool_str294[sizeof("math")];
+ char uniname2ctype_pool_str296[sizeof("linb")];
+ char uniname2ctype_pool_str297[sizeof("closepunctuation")];
+ char uniname2ctype_pool_str301[sizeof("otherpunctuation")];
+ char uniname2ctype_pool_str303[sizeof("bali")];
+ char uniname2ctype_pool_str306[sizeof("omath")];
+ char uniname2ctype_pool_str307[sizeof("samaritan")];
+ char uniname2ctype_pool_str308[sizeof("ps")];
+ char uniname2ctype_pool_str310[sizeof("arab")];
+ char uniname2ctype_pool_str311[sizeof("brai")];
+ char uniname2ctype_pool_str314[sizeof("taitham")];
+ char uniname2ctype_pool_str317[sizeof("linearb")];
+ char uniname2ctype_pool_str321[sizeof("lepcha")];
+ char uniname2ctype_pool_str322[sizeof("mand")];
+ char uniname2ctype_pool_str324[sizeof("mtei")];
+ char uniname2ctype_pool_str325[sizeof("term")];
+ char uniname2ctype_pool_str326[sizeof("glagolitic")];
+ char uniname2ctype_pool_str327[sizeof("privateuse")];
+ char uniname2ctype_pool_str328[sizeof("pe")];
+ char uniname2ctype_pool_str335[sizeof("deseret")];
+ char uniname2ctype_pool_str340[sizeof("brah")];
+ char uniname2ctype_pool_str341[sizeof("runr")];
+ char uniname2ctype_pool_str343[sizeof("othermath")];
+ char uniname2ctype_pool_str344[sizeof("runic")];
+ char uniname2ctype_pool_str345[sizeof("hang")];
+ char uniname2ctype_pool_str346[sizeof("ethiopic")];
+ char uniname2ctype_pool_str349[sizeof("me")];
+ char uniname2ctype_pool_str350[sizeof("patws")];
+ char uniname2ctype_pool_str353[sizeof("separator")];
+ char uniname2ctype_pool_str355[sizeof("tibt")];
+ char uniname2ctype_pool_str356[sizeof("gothic")];
+ char uniname2ctype_pool_str358[sizeof("tagbanwa")];
+ char uniname2ctype_pool_str359[sizeof("sarb")];
+ char uniname2ctype_pool_str361[sizeof("talu")];
+ char uniname2ctype_pool_str367[sizeof("tibetan")];
+ char uniname2ctype_pool_str371[sizeof("goth")];
+ char uniname2ctype_pool_str372[sizeof("rjng")];
+ char uniname2ctype_pool_str373[sizeof("hangul")];
+ char uniname2ctype_pool_str374[sizeof("bengali")];
+ char uniname2ctype_pool_str375[sizeof("hiragana")];
+ char uniname2ctype_pool_str376[sizeof("braille")];
+ char uniname2ctype_pool_str379[sizeof("geor")];
+ char uniname2ctype_pool_str380[sizeof("age=1.1")];
+ char uniname2ctype_pool_str381[sizeof("age=2.1")];
+ char uniname2ctype_pool_str382[sizeof("age=5.1")];
+ char uniname2ctype_pool_str383[sizeof("age=5.2")];
+ char uniname2ctype_pool_str384[sizeof("age=4.1")];
+ char uniname2ctype_pool_str385[sizeof("p")];
+ char uniname2ctype_pool_str386[sizeof("pd")];
+ char uniname2ctype_pool_str388[sizeof("lisu")];
+ char uniname2ctype_pool_str389[sizeof("age=2.0")];
+ char uniname2ctype_pool_str390[sizeof("age=5.0")];
+ char uniname2ctype_pool_str391[sizeof("age=6.0")];
+ char uniname2ctype_pool_str392[sizeof("age=4.0")];
+ char uniname2ctype_pool_str393[sizeof("graph")];
+ char uniname2ctype_pool_str395[sizeof("saur")];
+ char uniname2ctype_pool_str396[sizeof("space")];
+ char uniname2ctype_pool_str397[sizeof("age=3.1")];
+ char uniname2ctype_pool_str398[sizeof("age=3.2")];
+ char uniname2ctype_pool_str399[sizeof("hebr")];
+ char uniname2ctype_pool_str402[sizeof("bidic")];
+ char uniname2ctype_pool_str405[sizeof("age=3.0")];
+ char uniname2ctype_pool_str408[sizeof("bidicontrol")];
+ char uniname2ctype_pool_str413[sizeof("logicalorderexception")];
+ char uniname2ctype_pool_str420[sizeof("telu")];
+ char uniname2ctype_pool_str422[sizeof("zp")];
+ char uniname2ctype_pool_str427[sizeof("m")];
+ char uniname2ctype_pool_str430[sizeof("lm")];
+ char uniname2ctype_pool_str432[sizeof("idstrinaryoperator")];
+ char uniname2ctype_pool_str433[sizeof("balinese")];
+ char uniname2ctype_pool_str434[sizeof("uideo")];
+ char uniname2ctype_pool_str436[sizeof("spaceseparator")];
+ char uniname2ctype_pool_str438[sizeof("grext")];
+ char uniname2ctype_pool_str442[sizeof("alnum")];
+ char uniname2ctype_pool_str443[sizeof("oldturkic")];
+ char uniname2ctype_pool_str445[sizeof("xidc")];
+ char uniname2ctype_pool_str446[sizeof("idsb")];
+ char uniname2ctype_pool_str447[sizeof("ahex")];
+ char uniname2ctype_pool_str452[sizeof("format")];
+ char uniname2ctype_pool_str456[sizeof("caseignorable")];
+ char uniname2ctype_pool_str457[sizeof("tifinagh")];
+ char uniname2ctype_pool_str459[sizeof("sundanese")];
+ char uniname2ctype_pool_str462[sizeof("ext")];
+ char uniname2ctype_pool_str464[sizeof("saurashtra")];
+ char uniname2ctype_pool_str465[sizeof("patternwhitespace")];
+ char uniname2ctype_pool_str466[sizeof("digit")];
+ char uniname2ctype_pool_str474[sizeof("sund")];
+ char uniname2ctype_pool_str480[sizeof("decimalnumber")];
+ char uniname2ctype_pool_str484[sizeof("bopo")];
+ char uniname2ctype_pool_str485[sizeof("sm")];
+ char uniname2ctype_pool_str488[sizeof("otheruppercase")];
+ char uniname2ctype_pool_str493[sizeof("ideographic")];
+ char uniname2ctype_pool_str496[sizeof("xids")];
+ char uniname2ctype_pool_str497[sizeof("unassigned")];
+ char uniname2ctype_pool_str502[sizeof("phagspa")];
+ char uniname2ctype_pool_str506[sizeof("alphabetic")];
+ char uniname2ctype_pool_str508[sizeof("limb")];
+ char uniname2ctype_pool_str512[sizeof("xdigit")];
+ char uniname2ctype_pool_str513[sizeof("xidstart")];
+ char uniname2ctype_pool_str516[sizeof("mong")];
+ char uniname2ctype_pool_str518[sizeof("xidcontinue")];
+ char uniname2ctype_pool_str521[sizeof("assigned")];
+ char uniname2ctype_pool_str523[sizeof("ogam")];
+ char uniname2ctype_pool_str529[sizeof("nko")];
+ char uniname2ctype_pool_str530[sizeof("nkoo")];
+ char uniname2ctype_pool_str533[sizeof("olck")];
+ char uniname2ctype_pool_str534[sizeof("deprecated")];
+ char uniname2ctype_pool_str535[sizeof("brahmi")];
+ char uniname2ctype_pool_str536[sizeof("phag")];
+ char uniname2ctype_pool_str538[sizeof("kana")];
+ char uniname2ctype_pool_str540[sizeof("kali")];
+ char uniname2ctype_pool_str542[sizeof("changeswhenlowercased")];
+ char uniname2ctype_pool_str543[sizeof("extender")];
+ char uniname2ctype_pool_str550[sizeof("dep")];
+ char uniname2ctype_pool_str554[sizeof("olchiki")];
+ char uniname2ctype_pool_str562[sizeof("cwl")];
+ char uniname2ctype_pool_str563[sizeof("graphemebase")];
+ char uniname2ctype_pool_str565[sizeof("phnx")];
+ char uniname2ctype_pool_str573[sizeof("orkh")];
+ char uniname2ctype_pool_str576[sizeof("punct")];
+ char uniname2ctype_pool_str577[sizeof("khar")];
+ char uniname2ctype_pool_str580[sizeof("lower")];
+ char uniname2ctype_pool_str586[sizeof("sterm")];
+ char uniname2ctype_pool_str587[sizeof("yi")];
+ char uniname2ctype_pool_str588[sizeof("lyci")];
+ char uniname2ctype_pool_str589[sizeof("cyrl")];
+ char uniname2ctype_pool_str591[sizeof("lycian")];
+ char uniname2ctype_pool_str592[sizeof("finalpunctuation")];
+ char uniname2ctype_pool_str593[sizeof("orya")];
+ char uniname2ctype_pool_str594[sizeof("graphemeextend")];
+ char uniname2ctype_pool_str596[sizeof("kaithi")];
+ char uniname2ctype_pool_str597[sizeof("xpeo")];
+ char uniname2ctype_pool_str598[sizeof("yiii")];
+ char uniname2ctype_pool_str599[sizeof("kthi")];
+ char uniname2ctype_pool_str601[sizeof("cyrillic")];
+ char uniname2ctype_pool_str602[sizeof("glag")];
+ char uniname2ctype_pool_str605[sizeof("oupper")];
+ char uniname2ctype_pool_str617[sizeof("tagb")];
+ char uniname2ctype_pool_str620[sizeof("cwt")];
+ char uniname2ctype_pool_str623[sizeof("number")];
+ char uniname2ctype_pool_str625[sizeof("tglg")];
+ char uniname2ctype_pool_str626[sizeof("knda")];
+ char uniname2ctype_pool_str627[sizeof("lowercaseletter")];
+ char uniname2ctype_pool_str628[sizeof("changeswhentitlecased")];
+ char uniname2ctype_pool_str629[sizeof("softdotted")];
+ char uniname2ctype_pool_str632[sizeof("ugar")];
+ char uniname2ctype_pool_str634[sizeof("sylo")];
+ char uniname2ctype_pool_str636[sizeof("lu")];
+ char uniname2ctype_pool_str640[sizeof("tagalog")];
+ char uniname2ctype_pool_str643[sizeof("kharoshthi")];
+ char uniname2ctype_pool_str644[sizeof("syrc")];
+ char uniname2ctype_pool_str645[sizeof("kannada")];
+ char uniname2ctype_pool_str646[sizeof("beng")];
+ char uniname2ctype_pool_str647[sizeof("lowercase")];
+ char uniname2ctype_pool_str656[sizeof("shaw")];
+ char uniname2ctype_pool_str659[sizeof("patternsyntax")];
+ char uniname2ctype_pool_str660[sizeof("syriac")];
+ char uniname2ctype_pool_str663[sizeof("word")];
+ char uniname2ctype_pool_str667[sizeof("imperialaramaic")];
+ char uniname2ctype_pool_str672[sizeof("ugaritic")];
+ char uniname2ctype_pool_str675[sizeof("enclosingmark")];
+ char uniname2ctype_pool_str677[sizeof("georgian")];
+ char uniname2ctype_pool_str678[sizeof("lydi")];
+ char uniname2ctype_pool_str681[sizeof("lydian")];
+ char uniname2ctype_pool_str686[sizeof("sylotinagri")];
+ char uniname2ctype_pool_str687[sizeof("gujr")];
+ char uniname2ctype_pool_str692[sizeof("tfng")];
+ char uniname2ctype_pool_str696[sizeof("currencysymbol")];
+ char uniname2ctype_pool_str701[sizeof("newline")];
+ char uniname2ctype_pool_str705[sizeof("bopomofo")];
+ char uniname2ctype_pool_str706[sizeof("ogrext")];
+ char uniname2ctype_pool_str707[sizeof("cherokee")];
+ char uniname2ctype_pool_str708[sizeof("gujarati")];
+ char uniname2ctype_pool_str710[sizeof("newtailue")];
+ char uniname2ctype_pool_str716[sizeof("dashpunctuation")];
+ char uniname2ctype_pool_str718[sizeof("oldsoutharabian")];
+ char uniname2ctype_pool_str725[sizeof("upper")];
+ char uniname2ctype_pool_str732[sizeof("cf")];
+ char uniname2ctype_pool_str734[sizeof("buhd")];
+ char uniname2ctype_pool_str735[sizeof("rejang")];
+ char uniname2ctype_pool_str736[sizeof("othergraphemeextend")];
+ char uniname2ctype_pool_str739[sizeof("modifierletter")];
+ char uniname2ctype_pool_str745[sizeof("nonspacingmark")];
+ char uniname2ctype_pool_str749[sizeof("changeswhencasemapped")];
+ char uniname2ctype_pool_str752[sizeof("mark")];
+ char uniname2ctype_pool_str757[sizeof("surrogate")];
+ char uniname2ctype_pool_str765[sizeof("paragraphseparator")];
+ char uniname2ctype_pool_str767[sizeof("ogham")];
+ char uniname2ctype_pool_str768[sizeof("hex")];
+ char uniname2ctype_pool_str772[sizeof("uppercaseletter")];
+ char uniname2ctype_pool_str777[sizeof("hexdigit")];
+ char uniname2ctype_pool_str778[sizeof("cwcm")];
+ char uniname2ctype_pool_str781[sizeof("grbase")];
+ char uniname2ctype_pool_str782[sizeof("khmr")];
+ char uniname2ctype_pool_str788[sizeof("unifiedideograph")];
+ char uniname2ctype_pool_str792[sizeof("uppercase")];
+ char uniname2ctype_pool_str793[sizeof("khmer")];
+ char uniname2ctype_pool_str795[sizeof("spacingmark")];
+ char uniname2ctype_pool_str797[sizeof("whitespace")];
+ char uniname2ctype_pool_str806[sizeof("patsyn")];
+ char uniname2ctype_pool_str816[sizeof("cypriot")];
+ char uniname2ctype_pool_str818[sizeof("openpunctuation")];
+ char uniname2ctype_pool_str821[sizeof("bamu")];
+ char uniname2ctype_pool_str831[sizeof("buhid")];
+ char uniname2ctype_pool_str840[sizeof("batk")];
+ char uniname2ctype_pool_str851[sizeof("symbol")];
+ char uniname2ctype_pool_str856[sizeof("changeswhenuppercased")];
+ char uniname2ctype_pool_str857[sizeof("osmanya")];
+ char uniname2ctype_pool_str861[sizeof("limbu")];
+ char uniname2ctype_pool_str868[sizeof("punctuation")];
+ char uniname2ctype_pool_str872[sizeof("hyphen")];
+ char uniname2ctype_pool_str888[sizeof("mathsymbol")];
+ char uniname2ctype_pool_str892[sizeof("grek")];
+ char uniname2ctype_pool_str898[sizeof("changeswhencasefolded")];
+ char uniname2ctype_pool_str902[sizeof("quotationmark")];
+ char uniname2ctype_pool_str903[sizeof("bugi")];
+ char uniname2ctype_pool_str916[sizeof("cuneiform")];
+ char uniname2ctype_pool_str918[sizeof("pf")];
+ char uniname2ctype_pool_str927[sizeof("cwcf")];
+ char uniname2ctype_pool_str932[sizeof("bamum")];
+ char uniname2ctype_pool_str940[sizeof("guru")];
+ char uniname2ctype_pool_str944[sizeof("wspace")];
+ char uniname2ctype_pool_str951[sizeof("meeteimayek")];
+ char uniname2ctype_pool_str976[sizeof("defaultignorablecodepoint")];
+ char uniname2ctype_pool_str980[sizeof("modifiersymbol")];
+ char uniname2ctype_pool_str999[sizeof("mlym")];
+ char uniname2ctype_pool_str1007[sizeof("mymr")];
+ char uniname2ctype_pool_str1020[sizeof("malayalam")];
+ char uniname2ctype_pool_str1026[sizeof("myanmar")];
+ char uniname2ctype_pool_str1032[sizeof("telugu")];
+ char uniname2ctype_pool_str1033[sizeof("buginese")];
+ char uniname2ctype_pool_str1037[sizeof("xsux")];
+ char uniname2ctype_pool_str1093[sizeof("sk")];
+ char uniname2ctype_pool_str1097[sizeof("katakana")];
+ char uniname2ctype_pool_str1124[sizeof("egyp")];
+ char uniname2ctype_pool_str1146[sizeof("any")];
+ char uniname2ctype_pool_str1148[sizeof("kayahli")];
+ char uniname2ctype_pool_str1190[sizeof("cwu")];
+ char uniname2ctype_pool_str1263[sizeof("qmark")];
+ char uniname2ctype_pool_str1329[sizeof("blank")];
+ char uniname2ctype_pool_str1347[sizeof("grlink")];
+ char uniname2ctype_pool_str1358[sizeof("batak")];
+ char uniname2ctype_pool_str1395[sizeof("unknown")];
+ char uniname2ctype_pool_str1410[sizeof("greek")];
+ char uniname2ctype_pool_str1463[sizeof("graphemelink")];
+ char uniname2ctype_pool_str1470[sizeof("gurmukhi")];
+ char uniname2ctype_pool_str1556[sizeof("hebrew")];
+ char uniname2ctype_pool_str1621[sizeof("egyptianhieroglyphs")];
+ char uniname2ctype_pool_str1741[sizeof("zyyy")];
#endif /* USE_UNICODE_PROPERTIES */
};
static const struct uniname2ctype_pool_t uniname2ctype_pool_contents =
{
#ifndef USE_UNICODE_PROPERTIES
- "word",
"print",
"punct",
- "alpha",
- "alnum",
- "xdigit",
- "upper",
#else /* USE_UNICODE_PROPERTIES */
"n",
- "s",
- "z",
- "zs",
- "zzzz",
+ "l",
+ "nl",
+ "ll",
"cn",
- "cs",
- "ci",
+ "no",
+ "lo",
"c",
- "cf",
- "sc",
- "cans",
- "qaai",
- "mn",
-#endif /* USE_UNICODE_PROPERTIES */
- "ascii",
-#ifdef USE_UNICODE_PROPERTIES
+ "co",
"cc",
- "qaac",
- "inavestan",
- "inspecials",
- "inipaextensions",
- "mc",
- "insamaritan",
- "m",
- "sm",
- "me",
- "inarmenian",
- "incuneiform",
- "mandaic",
- "inancientsymbols",
- "incuneiformnumbersandpunctuation",
- "inthai",
- "inmusicalsymbols",
- "inmiscellaneoussymbols",
- "incham",
- "inmiscellaneoussymbolsandarrows",
- "initialpunctuation",
- "inmiscellaneoussymbolsandpictographs",
- "inthaana",
- "taile",
- "mtei",
- "lc",
+ "lao",
+ "laoo",
"lana",
- "inlycian",
- "intransportandmapsymbols",
- "incontrolpictures",
- "sinhala",
- "incommonindicnumberforms",
- "inmiscellaneousmathematicalsymbolsa",
- "sterm",
- "inmyanmarextendeda",
- "lm",
- "taiviet",
- "inlinearbideograms",
- "intaitham",
- "latn",
- "latin",
- "ital",
- "alnum",
- "inmalayalam",
- "intaile",
- "tale",
- "l",
- "nl",
- "zl",
- "intamil",
- "taml",
- "inlatinextendeda",
- "inlatinextendedc",
- "inrunic",
- "incarian",
- "insyriac",
+ "ci",
+ "qaac",
+ "vai",
+ "vaii",
+ "qaai",
+ "control",
"cari",
- "inmeeteimayekextensions",
- "osma",
- "lt",
- "miao",
- "insharada",
- "incyrillic",
"carian",
- "armn",
- "samr",
- "armi",
- "inideographicdescriptioncharacters",
- "inosmanya",
- "armenian",
- "inmyanmar",
- "samaritan",
- "arabic",
- "incherokee",
- "connectorpunctuation",
- "merc",
- "inmiscellaneoustechnical",
- "inenclosedalphanumerics",
- "inemoticons",
- "joinc",
-#endif /* USE_UNICODE_PROPERTIES */
+ "zl",
+ "oriya",
+ "latn",
"cntrl",
-#ifdef USE_UNICODE_PROPERTIES
- "inenclosedcjklettersandmonths",
- "cwcf",
- "inruminumeralsymbols",
- "ll",
- "term",
- "inlatinextendedadditional",
- "tamil",
- "loe",
- "newtailue",
- "cwcm",
- "inenclosedalphanumericsupplement",
- "sinh",
- "zinh",
- "meroiticcursive",
+ "latin",
"han",
+ "arabic",
+ "ital",
+ "hano",
"hani",
- "inopticalcharacterrecognition",
- "no",
+ "hanunoo",
+ "lt",
"so",
- "innewtailue",
- "insinhala",
- "innko",
- "co",
- "shavian",
- "terminalpunctuation",
- "intaixuanjingsymbols",
- "inethiopic",
- "sora",
- "inarrows",
- "cham",
- "inlowsurrogates",
- "oriya",
- "ext",
- "cwt",
- "common",
- "inmiao",
- "thai",
- "intifinagh",
- "ethi",
- "mero",
- "chakma",
+ "hira",
+ "nchar",
+ "sc",
+ "z",
+ "oalpha",
+ "tavt",
+ "cans",
+ "java",
+ "zinh",
"thaa",
- "inscriptionalparthian",
- "tifinagh",
- "titlecaseletter",
+ "thai",
+ "variationselector",
+ "sinhala",
+ "joinc",
+ "ascii",
+ "initialpunctuation",
+ "other",
+ "joincontrol",
"thaana",
- "asciihexdigit",
- "math",
+ "avst",
+ "olower",
+ "othernumber",
+ "otherletter",
+ "sinh",
+ "tale",
+ "connectorpunctuation",
+ "s",
"di",
- "ids",
- "lo",
- "inlao",
- "taitham",
- "lao",
- "laoo",
- "dia",
- "idc",
- "ps",
- "insundanese",
- "pi",
- "cwl",
- "pf",
- "mand",
- "insylotinagri",
"vs",
- "mongolian",
- "pc",
- "inmandaic",
- "invai",
+ "oidc",
+ "idc",
+ "odi",
+ "cs",
+ "avestan",
+ "dia",
+ "cher",
+ "inscriptionalparthian",
+ "shavian",
+ "radical",
+ "loe",
+ "diacritic",
+ "zzzz",
+ "ethi",
+ "canadianaboriginal",
+ "zs",
+ "othersymbol",
+ "olditalic",
+ "inscriptionalpahlavi",
+ "taiviet",
"lineseparator",
- "pe",
- "vai",
- "vaii",
+ "otheridstart",
+ "oids",
+ "asciihexdigit",
+ "inherited",
+ "otherlowercase",
+ "terminalpunctuation",
+ "deva",
+ "otheralphabetic",
+ "ideo",
+ "noncharactercodepoint",
+ "otheridcontinue",
+ "taile",
+ "oldpersian",
+ "devanagari",
+ "letter",
+ "nd",
"idst",
- "indominotiles",
- "inshavian",
- "inspacingmodifierletters",
- "format",
- "inphaistosdisc",
- "hano",
+ "dsrt",
+ "titlecaseletter",
+ "po",
+ "dash",
+ "pc",
+ "letternumber",
+ "pi",
+ "javanese",
+ "mn",
+ "idstart",
+ "idcontinue",
+ "ids",
#endif /* USE_UNICODE_PROPERTIES */
- "space",
+ "alpha",
#ifdef USE_UNICODE_PROPERTIES
- "indeseret",
- "inolchiki",
- "hira",
- "joincontrol",
- "idcontinue",
- "inmahjongtiles",
+ "mc",
+ "coptic",
+ "mongolian",
+ "common",
+ "armn",
+ "copt",
+ "cprt",
+ "armi",
+ "phli",
+ "prti",
+ "armenian",
+ "sd",
+ "mandaic",
+ "phoenician",
+ "taml",
+ "tamil",
+ "cased",
+ "cham",
+ "idsbinaryoperator",
+ "lepc",
+ "otherdefaultignorablecodepoint",
+ "print",
+ "osma",
+ "samr",
+ "math",
+ "linb",
+ "closepunctuation",
+ "otherpunctuation",
+ "bali",
+ "omath",
+ "samaritan",
+ "ps",
+ "arab",
+ "brai",
+ "taitham",
+ "linearb",
+ "lepcha",
+ "mand",
+ "mtei",
+ "term",
+ "glagolitic",
+ "privateuse",
+ "pe",
+ "deseret",
+ "brah",
+ "runr",
+ "othermath",
+ "runic",
+ "hang",
+ "ethiopic",
+ "me",
"patws",
- "inlydian",
- "cher",
- "inhiragana",
- "inogham",
- "avst",
- "inscriptionalpahlavi",
- "incoptic",
- "java",
- "inmathematicalalphanumericsymbols",
- "letter",
- "injavanese",
- "avestan",
+ "separator",
+ "tibt",
+ "gothic",
+ "tagbanwa",
+ "sarb",
+ "talu",
+ "tibetan",
+ "goth",
+ "rjng",
+ "hangul",
+ "bengali",
+ "hiragana",
+ "braille",
+ "geor",
"age=1.1",
- "lepc",
"age=2.1",
- "inlepcha",
- "javanese",
- "shaw",
- "finalpunctuation",
- "alpha",
"age=5.1",
- "inmongolian",
"age=5.2",
+ "age=4.1",
+ "p",
+ "pd",
+ "lisu",
"age=2.0",
- "ahex",
- "ingeneralpunctuation",
- "oids",
- "odi",
"age=5.0",
- "tavt",
- "intaiviet",
- "age=6.1",
+ "age=6.0",
+ "age=4.0",
+ "graph",
+ "saur",
+ "space",
"age=3.1",
- "insundanesesupplement",
"age=3.2",
- "age=4.1",
- "oidc",
- "tfng",
- "insmallformvariants",
- "ideo",
- "intags",
- "age=6.0",
+ "hebr",
+ "bidic",
"age=3.0",
- "whitespace",
- "age=4.0",
- "inolditalic",
- "oalpha",
- "ingujarati",
- "control",
- "diacritic",
- "tagbanwa",
- "inphoenician",
- "ininscriptionalparthian",
- "ininscriptionalpahlavi",
- "coptic",
- "dsrt",
- "inmodifiertoneletters",
- "xids",
- "hanunoo",
- "inoldturkic",
+ "bidicontrol",
+ "logicalorderexception",
+ "telu",
+ "zp",
+ "m",
+ "lm",
+ "idstrinaryoperator",
+ "balinese",
+ "uideo",
+ "spaceseparator",
+ "grext",
+#endif /* USE_UNICODE_PROPERTIES */
+ "alnum",
+#ifdef USE_UNICODE_PROPERTIES
+ "oldturkic",
"xidc",
- "idstart",
- "inimperialaramaic",
- "invariationselectors",
- "copt",
+ "idsb",
+ "ahex",
+ "format",
"caseignorable",
- "prti",
- "nchar",
- "deseret",
- "decimalnumber",
- "cprt",
- "inlatin1supplement",
- "imperialaramaic",
- "privateuse",
- "casedletter",
- "lowercase",
- "spaceseparator",
- "radical",
- "mong",
- "canadianaboriginal",
- "letternumber",
- "insorasompeng",
- "dash",
- "wspace",
- "ogam",
- "invariationselectorssupplement",
- "print",
- "otheridcontinue",
- "ingurmukhi",
- "closepunctuation",
- "olditalic",
- "noncharactercodepoint",
- "sharada",
- "ingeometricshapes",
- "otheralphabetic",
+ "tifinagh",
+ "sundanese",
+ "ext",
+ "saurashtra",
"patternwhitespace",
- "po",
- "rjng",
- "ingreekandcoptic",
+ "digit",
+ "sund",
+ "decimalnumber",
+ "bopo",
+ "sm",
+ "otheruppercase",
+ "ideographic",
+ "xids",
+ "unassigned",
+ "phagspa",
+ "alphabetic",
+ "limb",
+#endif /* USE_UNICODE_PROPERTIES */
"xdigit",
- "gothic",
- "inoldsoutharabian",
+#ifdef USE_UNICODE_PROPERTIES
"xidstart",
- "inrejang",
- "idsbinaryoperator",
- "olower",
- "hex",
- "inenclosedideographicsupplement",
- "inalphabeticpresentationforms",
- "inbasiclatin",
- "othersymbol",
- "nd",
- "sd",
- "omath",
- "separator",
- "inarabic",
+ "mong",
"xidcontinue",
- "otheridstart",
- "grext",
- "otherlowercase",
- "phli",
- "cased",
- "hang",
- "xpeo",
-#endif /* USE_UNICODE_PROPERTIES */
- "lower",
-#ifndef USE_UNICODE_PROPERTIES
- "graph",
-#else /* USE_UNICODE_PROPERTIES */
- "modifierletter",
- "inphoneticextensions",
- "inarabicpresentationformsa",
- "innumberforms",
- "oldpersian",
- "incyrillicextendeda",
- "inverticalforms",
- "p",
- "inbyzantinemusicalsymbols",
- "inmathematicaloperators",
- "intibetan",
- "zp",
- "ingeorgian",
- "inbraillepatterns",
- "lepcha",
- "geor",
- "invedicextensions",
- "linb",
- "other",
- "deva",
- "indevanagari",
- "othernumber",
- "bamum",
- "shrd",
- "bali",
- "devanagari",
- "extender",
- "inherited",
- "glagolitic",
- "tibt",
- "inbalinese",
- "ingothic",
- "inmiscellaneousmathematicalsymbolsb",
- "limb",
- "bengali",
- "phoenician",
- "insuperscriptsandsubscripts",
- "inmeroitichieroglyphs",
- "tibetan",
- "inphoneticextensionssupplement",
- "balinese",
- "lowercaseletter",
- "indingbats",
- "inprivateusearea",
"assigned",
- "patternsyntax",
- "inhangulsyllables",
- "sarb",
- "brai",
- "insupplementalmathematicaloperators",
- "phnx",
- "ingreekextended",
- "otherletter",
- "arab",
- "inlatinextendedd",
- "word",
- "inphagspa",
- "inblockelements",
- "ethiopic",
- "inethiopicextendeda",
+ "ogam",
+ "nko",
+ "nkoo",
+ "olck",
+ "deprecated",
"brahmi",
- "logicalorderexception",
- "inoldpersian",
- "inletterlikesymbols",
- "sorasompeng",
- "hiragana",
- "inhanguljamoextendeda",
- "othermath",
-#endif /* USE_UNICODE_PROPERTIES */
- "digit",
-#ifndef USE_UNICODE_PROPERTIES
- "blank"
-#else /* USE_UNICODE_PROPERTIES */
- "goth",
- "ogham",
- "sundanese",
- "saurashtra",
- "linearb",
- "graphemebase",
- "inunifiedcanadianaboriginalsyllabics",
- "cuneiform",
- "inkannada",
+ "phag",
"kana",
- "inancientgreeknumbers",
- "incjkstrokes",
- "inglagolitic",
- "inancientgreekmusicalnotation",
- "inchakma",
- "plrd",
- "inbrahmi",
- "cakm",
- "incjkcompatibilityforms",
- "lisu",
- "incjkcompatibilityideographs",
- "intagalog",
- "inkaithi",
- "insupplementalarrowsa",
- "takri",
- "ideographic",
- "hexdigit",
- "glag",
- "softdotted",
- "variationselector",
- "inkatakana",
- "meeteimayek",
- "otherpunctuation",
- "inhanguljamo",
"kali",
- "braille",
- "incombininghalfmarks",
- "talu",
- "incjkcompatibilityideographssupplement",
- "telu",
- "idsb",
- "tglg",
- "inmeeteimayek",
- "yi",
- "phagspa",
- "yiii",
- "inarabicmathematicalalphabeticsymbols",
- "saur",
- "ogrext",
- "bidic",
- "inkanasupplement",
- "runic",
- "inalchemicalsymbols",
- "georgian",
- "inugaritic",
- "insaurashtra",
- "inhighprivateusesurrogates",
- "pd",
- "incountingrodnumerals",
- "inarabicextendeda",
- "inkharoshthi",
- "idstrinaryoperator",
- "phag",
- "brah",
- "mark",
- "hebr",
- "inkhmersymbols",
+ "changeswhenlowercased",
+ "extender",
"dep",
- "inkhmer",
- "deprecated",
- "rejang",
+ "olchiki",
+ "cwl",
+ "graphemebase",
+ "phnx",
+ "orkh",
+ "punct",
+ "khar",
+ "lower",
+ "sterm",
+ "yi",
"lyci",
- "intakri",
- "takr",
- "incyrillicsupplement",
- "changeswhencasefolded",
- "indevanagariextended",
+ "cyrl",
"lycian",
- "inbengali",
- "beng",
- "graph",
- "inyijinghexagramsymbols",
- "olck",
- "inarabicsupplement",
- "inbuginese",
- "changeswhencasemapped",
- "olchiki",
- "inaegeannumbers",
- "mlym",
- "alphabetic",
- "sylotinagri",
- "changeswhentitlecased",
- "tagalog",
- "tagb",
- "runr",
- "malayalam",
- "inoriya",
- "intagbanwa",
- "syrc",
- "nko",
- "nkoo",
- "inethiopicextended",
+ "finalpunctuation",
+ "orya",
+ "graphemeextend",
"kaithi",
- "mathsymbol",
- "inyiradicals",
- "insupplementaryprivateuseareaa",
- "osmanya",
- "syriac",
- "otherdefaultignorablecodepoint",
- "number",
- "inlinearbsyllabary",
+ "xpeo",
+ "yiii",
"kthi",
- "sund",
- "mymr",
- "incombiningdiacriticalmarks",
- "enclosingmark",
- "incombiningdiacriticalmarksforsymbols",
- "inethiopicsupplement",
- "unassigned",
- "sylo",
- "combiningmark",
- "myanmar",
- "graphemeextend",
- "bidicontrol",
- "inhalfwidthandfullwidthforms",
- "cyrl",
+ "cyrillic",
+ "glag",
+ "oupper",
+ "tagb",
+ "cwt",
+ "number",
+ "tglg",
"knda",
- "inunifiedcanadianaboriginalsyllabicsextended",
- "xsux",
- "modifiersymbol",
- "incombiningdiacriticalmarkssupplement",
- "inhanunoo",
- "inbuhid",
- "kannada",
- "inhebrew",
- "grbase",
- "spacingmark",
- "inkatakanaphoneticextensions",
- "hangul",
- "incjksymbolsandpunctuation",
- "bopo",
- "orya",
- "inbopomofo",
+ "lowercaseletter",
+ "changeswhentitlecased",
+ "softdotted",
+ "ugar",
+ "sylo",
+ "lu",
+ "tagalog",
"kharoshthi",
- "khar",
- "changeswhenlowercased",
- "khmr",
- "punct",
- "symbol",
- "cherokee",
- "cyrillic",
- "inkangxiradicals",
- "hebrew",
- "inarabicpresentationformsb",
- "incyrillicextendedb",
+ "syrc",
+ "kannada",
+ "beng",
+ "lowercase",
+ "shaw",
+ "patternsyntax",
+ "syriac",
+ "word",
+ "imperialaramaic",
"ugaritic",
- "incurrencysymbols",
- "meroitichieroglyphs",
- "inhighsurrogates",
- "nonspacingmark",
+ "enclosingmark",
+ "georgian",
"lydi",
- "patsyn",
- "orkh",
"lydian",
- "ugar",
- "othergraphemeextend",
- "inlatinextendedb",
- "bopomofo",
- "khmer",
- "uideo",
- "otheruppercase",
- "grek",
+ "sylotinagri",
"gujr",
+ "tfng",
+ "currencysymbol",
+#endif /* USE_UNICODE_PROPERTIES */
+ "newline",
+#ifdef USE_UNICODE_PROPERTIES
+ "bopomofo",
+ "ogrext",
+ "cherokee",
"gujarati",
- "inhanguljamoextendedb",
- "defaultignorablecodepoint",
- "inplayingcards",
- "bamu",
- "inkanbun",
- "incjkradicalssupplement",
- "cypriot",
- "inbamum",
- "inmeroiticcursive",
- "oldturkic",
- "insupplementalarrowsb",
- "surrogate",
- "batk",
- "inbatak",
- "inlimbu",
- "incypriotsyllabary",
+ "newtailue",
"dashpunctuation",
- "innoblock",
- "hyphen",
- "insupplementalpunctuation",
- "ingeorgiansupplement",
- "oupper",
+ "oldsoutharabian",
+#endif /* USE_UNICODE_PROPERTIES */
+ "upper",
+#ifndef USE_UNICODE_PROPERTIES
+ "ascii",
+ "cntrl",
+ "space",
+ "word",
+ "lower",
+ "graph",
+ "digit",
+ "blank"
+#else /* USE_UNICODE_PROPERTIES */
+ "cf",
+ "buhd",
+ "rejang",
+ "othergraphemeextend",
+ "modifierletter",
+ "nonspacingmark",
+ "changeswhencasemapped",
+ "mark",
+ "surrogate",
"paragraphseparator",
- "inbamumsupplement",
+ "ogham",
+ "hex",
+ "uppercaseletter",
+ "hexdigit",
+ "cwcm",
+ "grbase",
+ "khmr",
+ "unifiedideograph",
"uppercase",
- "currencysymbol",
- "sk",
- "lu",
+ "khmer",
+ "spacingmark",
+ "whitespace",
+ "patsyn",
+ "cypriot",
"openpunctuation",
- "inlisu",
- "qmark",
- "egyp",
- "insupplementaryprivateuseareab",
+ "bamu",
+ "buhid",
+ "batk",
+ "symbol",
+ "changeswhenuppercased",
+ "osmanya",
"limbu",
- "inegyptianhieroglyphs",
- "unifiedideograph",
- "intelugu",
- "katakana",
- "inhangulcompatibilityjamo",
- "upper",
- "inkayahli",
- "cwu",
- "incjkcompatibility",
- "uppercaseletter",
+ "punctuation",
+ "hyphen",
+ "mathsymbol",
+ "grek",
+ "changeswhencasefolded",
+ "quotationmark",
"bugi",
+ "cuneiform",
+ "pf",
+ "cwcf",
+ "bamum",
+ "guru",
+ "wspace",
+ "meeteimayek",
+ "defaultignorablecodepoint",
+ "modifiersymbol",
+ "mlym",
+ "mymr",
+ "malayalam",
+ "myanmar",
+ "telugu",
"buginese",
+ "xsux",
+ "sk",
+ "katakana",
+ "egyp",
"any",
- "inyisyllables",
- "inbopomofoextended",
- "inboxdrawing",
- "changeswhenuppercased",
- "unknown",
- "quotationmark",
- "buhd",
- "punctuation",
- "oldsoutharabian",
"kayahli",
- "incjkunifiedideographs",
- "incjkunifiedideographsextensiona",
- "incjkunifiedideographsextensionc",
- "telugu",
- "guru",
- "greek",
+ "cwu",
+ "qmark",
+ "blank",
"grlink",
- "buhid",
"batak",
- "blank",
- "incjkunifiedideographsextensiond",
+ "unknown",
+ "greek",
"graphemelink",
+ "gurmukhi",
+ "hebrew",
"egyptianhieroglyphs",
- "incjkunifiedideographsextensionb",
- "zyyy",
- "gurmukhi"
+ "zyyy"
#endif /* USE_UNICODE_PROPERTIES */
};
#define uniname2ctype_pool ((const char *) &uniname2ctype_pool_contents)
@@ -27365,1242 +23125,622 @@ uniname2ctype_p (str, len)
{
#ifdef USE_UNICODE_PROPERTIES
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3, 34},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str5, 46},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str7, 51},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str9, 54},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str16, 208},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str18, 20},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str20, 22},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str24, 60},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str29, 17},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str30, 19},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str32, 47},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str34, 101},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str35, 114},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str38, 33},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str42, 14},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3, 33},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str44, 18},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str45, 128},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str49, 401},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str52, 377},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str62, 226},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str5, 23},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str64, 31},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str7, 35},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str8, 24},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str66, 239},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str69, 30},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str10, 20},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str11, 36},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str12, 26},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str13, 17},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str72, 49},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str74, 32},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str82, 232},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str84, 412},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str86, 168},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str16, 21},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str90, 382},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str92, 413},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str96, 252},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str20, 18},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str21, 93},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str22, 93},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str23, 150},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str99, 419},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str100, 304},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str106, 355},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str26, 59},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str109, 312},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str113, 43},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str114, 430},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str116, 237},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str124, 120},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str125, 159},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str132, 24},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str133, 151},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str134, 384},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str135, 432},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str136, 298},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str142, 92},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str151, 347},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str156, 306},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str29, 127},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str30, 142},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str31, 142},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str32, 113},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str158, 204},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str167, 356},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str172, 26},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str34, 18},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str175, 152},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str179, 379},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str180, 276},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str184, 75},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str186, 75},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str187, 111},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str189, 13},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str199, 250},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str201, 272},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str202, 120},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str37, 147},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str205, 23},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str40, 147},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str207, 36},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str42, 51},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str209, 52},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str216, 247},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str217, 88},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str218, 224},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str44, 86},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str220, 314},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str46, 74},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str47, 3},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str48, 74},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str223, 263},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str224, 385},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str225, 235},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str51, 108},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str227, 148},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str230, 358},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str231, 124},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str232, 28},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str233, 172},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str234, 410},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str53, 79},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str54, 110},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str55, 115},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str239, 230},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str240, 148},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str244, 78},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str245, 155},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str247, 160},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str248, 323},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str252, 392},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str253, 78},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str254, 255},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str255, 155},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str256, 80},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str60, 108},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str259, 260},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str261, 39},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str263, 170},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str264, 297},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str268, 300},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str63, 115},
+ {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str66, 27},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str67, 49},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str279, 431},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str69, 105},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str70, 184},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str71, 46},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str281, 178},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str288, 3},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str301, 333},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str303, 64},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str304, 405},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str308, 25},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str313, 182},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str316, 287},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str320, 88},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str321, 201},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str73, 50},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str74, 178},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str75, 151},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str76, 100},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str329, 129},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str330, 65},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str339, 428},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str346, 92},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str347, 114},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str349, 170},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str353, 109},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str84, 157},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str357, 109},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str358, 299},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str359, 37},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str360, 50},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str364, 273},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str365, 251},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str367, 238},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str372, 21},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str88, 113},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str89, 81},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str90, 92},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str91, 197},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str92, 91},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str93, 170},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str94, 14},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str95, 42},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str375, 123},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str378, 182},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str386, 421},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str387, 258},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str98, 17},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str99, 170},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str100, 81},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str101, 152},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str389, 174},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str398, 295},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str400, 150},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str403, 365},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str103, 182},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str405, 87},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str406, 189},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str105, 36},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str106, 26},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str409, 63},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str109, 91},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str412, 74},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str112, 119},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str414, 416},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str420, 93},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str425, 317},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str426, 99},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str427, 171},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str428, 169},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str429, 82},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str430, 162},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str114, 38},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str115, 45},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str116, 69},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str117, 197},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str432, 131},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str436, 28},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str119, 195},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str120, 66},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str121, 190},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str122, 22},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str123, 152},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str124, 180},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str125, 99},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str126, 161},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str128, 122},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str445, 82},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str449, 185},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str450, 55},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str453, 70},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str454, 66},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str137, 188},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str460, 27},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str468, 253},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str470, 151},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str143, 193},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str474, 94},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str475, 94},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str476, 188},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str478, 67},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str147, 180},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str148, 200},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str149, 98},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str480, 45},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str481, 278},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str151, 100},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str152, 53},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str153, 49},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str484, 43},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str485, 61},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str156, 110},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str490, 42},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str495, 168},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str496, 346},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str497, 205},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str503, 105},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str504, 39},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str506, 240},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str161, 162},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str162, 151},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str163, 51},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str509, 341},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str166, 194},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str170, 194},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str171, 177},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str172, 113},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str511, 52},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str514, 41},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str515, 143},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str516, 143},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str517, 195},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str174, 182},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str175, 174},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str176, 82},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str520, 426},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str521, 391},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str522, 227},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str179, 178},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str180, 179},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str181, 184},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str524, 19},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str183, 195},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str528, 383},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str531, 116},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str532, 9},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str542, 390},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str187, 119},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str545, 281},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str548, 106},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str553, 178},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str190, 132},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str555, 67},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str558, 425},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str192, 82},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str193, 23},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str560, 206},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str563, 396},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str564, 100},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str568, 325},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str572, 262},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str195, 34},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str574, 153},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str575, 163},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str579, 315},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str587, 158},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str197, 187},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str198, 112},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str589, 423},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str594, 23},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str604, 354},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str608, 153},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str612, 209},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str613, 141},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str614, 211},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str200, 27},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str616, 280},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str617, 158},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str618, 123},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str619, 42},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str620, 1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str621, 218},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str622, 269},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str623, 219},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str202, 43},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str203, 171},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str626, 210},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str627, 185},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str206, 38},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str630, 289},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str631, 202},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str632, 198},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str633, 217},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str209, 35},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str636, 152},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str637, 357},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str638, 221},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str639, 213},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str640, 282},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str641, 214},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str642, 216},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str643, 203},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str212, 42},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str646, 131},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str647, 374},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str648, 187},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str649, 438},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str650, 220},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str651, 212},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str215, 157},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str653, 176},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str654, 215},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str655, 386},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str660, 186},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str668, 245},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str672, 18},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str679, 188},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str682, 118},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str690, 395},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str217, 32},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str218, 65},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str701, 402},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str220, 66},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str703, 403},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str704, 128},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str705, 113},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str706, 344},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str709, 68},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str222, 65},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str223, 1},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str713, 116},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str227, 30},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str715, 404},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str229, 127},
+ {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str234, 104},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str235, 73},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str236, 77},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str237, 127},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str721, 69},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str725, 66},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str729, 394},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str730, 370},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str243, 124},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str244, 159},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str245, 162},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str246, 161},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str734, 128},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str250, 77},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str251, 192},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str252, 167},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str737, 60},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str738, 162},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str739, 192},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str746, 113},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str747, 35},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str748, 125},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str750, 223},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str255, 136},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str771, 160},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str776, 21},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str777, 24},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str778, 57},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str780, 54},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str784, 196},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str258, 87},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str787, 105},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str788, 101},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str792, 36},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str261, 87},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str268, 58},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str269, 149},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str270, 186},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str271, 140},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str796, 408},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str797, 179},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str798, 176},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str799, 102},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str275, 190},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str802, 439},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str803, 7},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str278, 7},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str811, 203},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str815, 244},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str818, 41},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str823, 111},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str824, 192},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str826, 173},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str827, 303},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str830, 186},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str831, 206},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str832, 44},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str833, 146},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str835, 229},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str286, 123},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str841, 11},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str850, 112},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str851, 400},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str852, 68},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str292, 154},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str854, 352},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str860, 194},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str867, 190},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str294, 54},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str869, 184},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str870, 429},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str296, 120},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str297, 40},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str874, 368},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str879, 222},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str884, 50},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str889, 35},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str890, 200},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str900, 183},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str901, 51},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str907, 234},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str912, 69},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str913, 202},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str914, 71},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str917, 190},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str301, 43},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str919, 163},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str920, 59},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str303, 134},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str923, 98},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str931, 133},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str306, 175},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str307, 154},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str308, 44},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str933, 6},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str310, 79},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str311, 125},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str936, 26},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str938, 284},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str939, 369},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str943, 294},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str945, 133},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str946, 319},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str947, 371},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str949, 38},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str950, 418},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str951, 296},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str952, 254},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str953, 53},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str314, 150},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str956, 256},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str317, 120},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str960, 308},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str321, 140},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str322, 167},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str962, 141},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str963, 97},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str964, 283},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str965, 121},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str966, 17},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str970, 83},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str972, 242},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str973, 37},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str974, 157},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str976, 173},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str977, 135},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str981, 83},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str983, 189},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str324, 158},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str325, 174},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str326, 129},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str327, 21},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str328, 40},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str335, 112},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str988, 114},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str989, 130},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str990, 95},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str994, 277},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str340, 166},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str341, 102},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str996, 387},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str997, 310},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str998, 119},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1000, 84},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str343, 175},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str344, 102},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str345, 97},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str346, 98},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1003, 137},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1004, 290},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1006, 397},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1007, 95},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str349, 31},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str350, 198},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1010, 285},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1016, 135},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1021, 25},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1031, 305},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1035, 366},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1039, 16},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1044, 207},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1051, 361},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1065, 161},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1067, 126},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str353, 50},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1069, 311},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1070, 137},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str355, 94},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str356, 111},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1072, 288},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str358, 117},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str359, 160},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1074, 27},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str361, 128},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str367, 94},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str371, 111},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str372, 145},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str373, 97},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str374, 83},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str375, 105},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str376, 125},
+ {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str379, 96},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str380, 201},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str381, 203},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str382, 210},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str383, 211},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str384, 208},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str385, 37},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str386, 39},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1076, 80},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str388, 155},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str389, 202},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str390, 209},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str391, 212},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str392, 207},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str393, 5},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1078, 345},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str395, 143},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str396, 9},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str397, 205},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str398, 206},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str399, 78},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1081, 12},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str402, 169},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1084, 348},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str405, 204},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1087, 302},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str408, 169},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1092, 99},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1094, 359},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1107, 167},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1110, 201},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1114, 389},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1129, 293},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1133, 174},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1135, 106},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str413, 193},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1142, 353},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1147, 183},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1150, 4},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1151, 112},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str420, 88},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str422, 52},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1156, 102},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1162, 140},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1170, 144},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str427, 29},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1173, 121},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1179, 72},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1185, 261},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1186, 136},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str430, 25},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1188, 249},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str432, 187},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str433, 134},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str434, 189},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1190, 107},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1195, 381},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1196, 331},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str436, 53},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1198, 313},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str438, 70},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1202, 420},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1212, 409},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1215, 172},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1219, 406},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str442, 13},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str443, 163},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str445, 68},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str446, 186},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str447, 177},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1224, 169},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1225, 373},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1229, 156},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1230, 367},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1231, 264},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1244, 407},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1245, 307},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1249, 175},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str452, 19},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1253, 187},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1256, 184},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1259, 130},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1261, 200},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1262, 205},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str456, 59},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str457, 130},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1264, 326},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1265, 159},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1274, 44},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1279, 257},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str459, 139},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1282, 145},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1289, 126},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1298, 372},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1300, 129},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str462, 181},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1302, 437},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str464, 143},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str465, 198},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str466, 4},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str474, 139},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str480, 34},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1306, 89},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1307, 194},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str484, 107},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str485, 48},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1310, 115},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1313, 360},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1315, 110},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1318, 138},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str488, 183},
+ {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str493, 179},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1321, 110},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1323, 424},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str496, 67},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str497, 20},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1328, 144},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str502, 137},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str506, 55},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1330, 193},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str508, 118},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1334, 177},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1341, 417},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str512, 11},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str513, 67},
+ {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str516, 104},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1343, 103},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1344, 433},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1350, 97},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1351, 388},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str518, 68},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1354, 349},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str521, 16},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1356, 364},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str523, 101},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1362, 40},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1372, 422},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1377, 241},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str529, 138},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str530, 138},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1389, 399},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1393, 195},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1396, 138},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str533, 141},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str534, 191},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str535, 166},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str536, 137},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1398, 167},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1402, 30},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str538, 106},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1404, 79},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str540, 144},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str542, 60},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str543, 181},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1411, 274},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str550, 191},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str554, 141},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str562, 60},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str563, 71},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1413, 199},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str565, 136},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str573, 163},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1416, 268},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1422, 199},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1424, 146},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1429, 147},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1431, 411},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1432, 175},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str576, 8},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str577, 133},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1435, 231},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1436, 64},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str580, 6},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str586, 196},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str587, 109},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str588, 146},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str589, 76},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1438, 350},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1442, 147},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1443, 243},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1448, 84},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str591, 146},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str592, 41},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str593, 86},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str594, 70},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1450, 5},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str596, 164},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str597, 132},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str598, 109},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str599, 164},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1452, 336},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1457, 142},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str601, 76},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str602, 129},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1460, 236},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1462, 275},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1463, 65},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1468, 142},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1478, 380},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1479, 91},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1480, 56},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str605, 183},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1492, 132},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1498, 63},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1504, 115},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1505, 118},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1506, 103},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1510, 91},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1512, 246},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1516, 267},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1517, 81},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1519, 139},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1520, 139},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str617, 117},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1523, 318},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1525, 165},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1530, 49},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1531, 339},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1536, 440},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1540, 124},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1546, 81},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1548, 198},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1561, 34},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1565, 378},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1566, 165},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1567, 140},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1569, 96},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str620, 62},
+ {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str623, 33},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1571, 228},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1578, 32},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str625, 114},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str626, 89},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str627, 24},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str628, 62},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str629, 192},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1581, 292},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str632, 121},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1583, 259},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1590, 20},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1591, 132},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str634, 131},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str636, 28},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1595, 30},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str640, 114},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1598, 96},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1605, 71},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1606, 177},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str643, 133},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str644, 80},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str645, 89},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str646, 83},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str647, 56},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str656, 122},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1609, 376},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1617, 77},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str659, 199},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str660, 80},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1620, 90},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str663, 12},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str667, 159},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1634, 270},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1635, 136},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1636, 48},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1643, 286},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str672, 121},
+ {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str675, 31},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1645, 265},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str677, 96},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str678, 148},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1648, 266},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1649, 90},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1658, 233},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str681, 148},
+ {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str686, 131},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str687, 85},
+ {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str692, 130},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1662, 72},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1664, 31},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1670, 332},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1676, 98},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1683, 324},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str696, 46},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1688, 108},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str701, 0},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1692, 87},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1699, 327},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str705, 107},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str706, 185},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str707, 99},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str708, 85},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1701, 134},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1703, 134},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1709, 61},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str710, 128},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1724, 104},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1725, 8},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1729, 46},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1732, 100},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1737, 77},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1759, 322},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str716, 39},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1761, 79},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1780, 375},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str718, 160},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1787, 342},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1790, 122},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1829, 291},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1831, 171},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1835, 363},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1853, 33},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1858, 149},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1864, 207},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1868, 164},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1871, 149},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str725, 10},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1896, 122},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str732, 19},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str734, 116},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str735, 145},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str736, 185},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1899, 193},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1900, 225},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1904, 108},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str739, 25},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str745, 32},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1917, 104},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1925, 197},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1932, 191},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str749, 64},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1944, 76},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str752, 29},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1949, 86},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1970, 86},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str757, 22},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str765, 52},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str767, 101},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str768, 176},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1983, 362},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str772, 28},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1988, 70},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2005, 427},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2022, 157},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str777, 176},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str778, 64},
+ {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str781, 71},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str782, 103},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2028, 329},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2033, 321},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str788, 189},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2046, 125},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2051, 343},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str792, 57},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str793, 103},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2053, 398},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str795, 30},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2055, 164},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2086, 309},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2087, 22},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2094, 166},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2102, 279},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2119, 271},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2123, 393},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2129, 40},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2130, 442},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str797, 168},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str806, 199},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str816, 124},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2141, 180},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2162, 320},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str818, 44},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2165, 316},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str821, 156},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2178, 191},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str831, 116},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str840, 165},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2189, 53},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str851, 45},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2194, 415},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2299, 58},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2313, 47},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2322, 48},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2338, 29},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str856, 61},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str857, 123},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2342, 45},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str861, 118},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2349, 340},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str868, 37},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2371, 181},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2372, 154},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2377, 441},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2379, 119},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2400, 414},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2401, 197},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2413, 248},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str872, 172},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2429, 107},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str888, 48},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2442, 328},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2454, 10},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2495, 351},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2515, 62},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2523, 334},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2542, 29},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2549, 127},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2588, 127},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2627, 15},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str892, 75},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2651, 338},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str898, 63},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str902, 173},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str903, 126},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str916, 135},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2671, 330},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2710, 301},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str918, 41},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str927, 63},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2724, 62},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2727, 208},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2737, 181},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str932, 156},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str940, 84},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str944, 168},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2753, 117},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2785, 38},
- {-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str951, 158},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str976, 69},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2888, 161},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str980, 47},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str999, 90},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1007, 95},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2925, 145},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1020, 90},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2940, 337},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2961, 335},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2962, 435},
- {-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1026, 95},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2995, 89},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3000, 85},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3104, 76},
- {-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1032, 88},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1033, 126},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3189, 73},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3197, 117},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1037, 135},
{-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3254, 166},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3292, 2},
- {-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1093, 47},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1097, 106},
{-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3391, 436},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3459, 73},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3480, 154},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1124, 153},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1146, 15},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1148, 144},
{-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1190, 61},
{-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},
@@ -28609,6 +23749,7 @@ uniname2ctype_p (str, len)
{-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1263, 173},
{-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},
@@ -28616,52 +23757,51 @@ uniname2ctype_p (str, len)
{-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1329, 2},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1347, 72},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1358, 165},
{-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1395, 200},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1410, 75},
{-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},
#endif /* USE_UNICODE_PROPERTIES */
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
#ifndef USE_UNICODE_PROPERTIES
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str6, 12},
{(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str7, 7},
{(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str8, 8},
{(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str9, 1},
{(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str10, 13},
{(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str11, 11},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str12, 10},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str13, 14},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str14, 3},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str15, 9},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str16, 6},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str17, 5},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str18, 4},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str19, 2}
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str12, 0},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str13, 10},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str14, 14},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str15, 3},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str16, 9},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str17, 12},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str18, 6},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str19, 5},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str20, 4},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str21, 2}
#else /* USE_UNICODE_PROPERTIES */
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3802, 434},
- {-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1463, 72},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1470, 84},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3922, 74},
{-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},
@@ -28669,6 +23809,8 @@ uniname2ctype_p (str, len)
{-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1556, 78},
{-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},
@@ -28676,6 +23818,8 @@ uniname2ctype_p (str, len)
{-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1621, 153},
{-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},
@@ -28689,8 +23833,8 @@ uniname2ctype_p (str, len)
{-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str4167, 85}
+ {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1741, 73}
#endif /* USE_UNICODE_PROPERTIES */
};
diff --git a/enc/unicode/name2ctype.h.blt b/enc/unicode/name2ctype.h.blt
index 2e80edf525..a45ea59a4b 100644
--- a/enc/unicode/name2ctype.h.blt
+++ b/enc/unicode/name2ctype.h.blt
@@ -36,4273 +36,7 @@ error "gperf generated tables don't work with this execution character set. Plea
#define long size_t
-/* 'NEWLINE': [[:NEWLINE:]] */
-static const OnigCodePoint CR_NEWLINE[] = {
- 1,
- 0x000a, 0x000a,
-}; /* CR_NEWLINE */
-
-/* 'Alpha': [[:Alpha:]] */
-static const OnigCodePoint CR_Alpha[] = {
- 540,
- 0x0041, 0x005a,
- 0x0061, 0x007a,
- 0x00aa, 0x00aa,
- 0x00b5, 0x00b5,
- 0x00ba, 0x00ba,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00f6,
- 0x00f8, 0x02c1,
- 0x02c6, 0x02d1,
- 0x02e0, 0x02e4,
- 0x02ec, 0x02ec,
- 0x02ee, 0x02ee,
- 0x0345, 0x0345,
- 0x0370, 0x0374,
- 0x0376, 0x0377,
- 0x037a, 0x037d,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x03f5,
- 0x03f7, 0x0481,
- 0x048a, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x0559,
- 0x0561, 0x0587,
- 0x05b0, 0x05bd,
- 0x05bf, 0x05bf,
- 0x05c1, 0x05c2,
- 0x05c4, 0x05c5,
- 0x05c7, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f2,
- 0x0610, 0x061a,
- 0x0620, 0x0657,
- 0x0659, 0x065f,
- 0x066e, 0x06d3,
- 0x06d5, 0x06dc,
- 0x06e1, 0x06e8,
- 0x06ed, 0x06ef,
- 0x06fa, 0x06fc,
- 0x06ff, 0x06ff,
- 0x0710, 0x073f,
- 0x074d, 0x07b1,
- 0x07ca, 0x07ea,
- 0x07f4, 0x07f5,
- 0x07fa, 0x07fa,
- 0x0800, 0x0817,
- 0x081a, 0x082c,
- 0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08e9,
- 0x08f0, 0x08fe,
- 0x0900, 0x093b,
- 0x093d, 0x094c,
- 0x094e, 0x0950,
- 0x0955, 0x0963,
- 0x0971, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bd, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09cc,
- 0x09ce, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09f0, 0x09f1,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4c,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a70, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abd, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acc,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3d, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4c,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b71, 0x0b71,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcc,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4c,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbd, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccc,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4c,
- 0x0d4e, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d7a, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df3,
- 0x0e01, 0x0e3a,
- 0x0e40, 0x0e46,
- 0x0e4d, 0x0e4d,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ecd, 0x0ecd,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f00,
- 0x0f40, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f81,
- 0x0f88, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x1000, 0x1036,
- 0x1038, 0x1038,
- 0x103b, 0x103f,
- 0x1050, 0x1062,
- 0x1065, 0x1068,
- 0x106e, 0x1086,
- 0x108e, 0x108e,
- 0x109c, 0x109d,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x10fa,
- 0x10fc, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135f, 0x135f,
- 0x1380, 0x138f,
- 0x13a0, 0x13f4,
- 0x1401, 0x166c,
- 0x166f, 0x167f,
- 0x1681, 0x169a,
- 0x16a0, 0x16ea,
- 0x16ee, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1713,
- 0x1720, 0x1733,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17b3,
- 0x17b6, 0x17c8,
- 0x17d7, 0x17d7,
- 0x17dc, 0x17dc,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x1938,
- 0x1950, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x1a00, 0x1a1b,
- 0x1a20, 0x1a5e,
- 0x1a61, 0x1a74,
- 0x1aa7, 0x1aa7,
- 0x1b00, 0x1b33,
- 0x1b35, 0x1b43,
- 0x1b45, 0x1b4b,
- 0x1b80, 0x1ba9,
- 0x1bac, 0x1baf,
- 0x1bba, 0x1be5,
- 0x1be7, 0x1bf1,
- 0x1c00, 0x1c35,
- 0x1c4d, 0x1c4f,
- 0x1c5a, 0x1c7d,
- 0x1ce9, 0x1cec,
- 0x1cee, 0x1cf3,
- 0x1cf5, 0x1cf6,
- 0x1d00, 0x1dbf,
- 0x1e00, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fbc,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fcc,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fe0, 0x1fec,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffc,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210a, 0x2113,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x212f, 0x2139,
- 0x213c, 0x213f,
- 0x2145, 0x2149,
- 0x214e, 0x214e,
- 0x2160, 0x2188,
- 0x24b6, 0x24e9,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2ce4,
- 0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d6f,
- 0x2d80, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2dff,
- 0x2e2f, 0x2e2f,
- 0x3005, 0x3007,
- 0x3021, 0x3029,
- 0x3031, 0x3035,
- 0x3038, 0x303c,
- 0x3041, 0x3096,
- 0x309d, 0x309f,
- 0x30a1, 0x30fa,
- 0x30fc, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x31a0, 0x31ba,
- 0x31f0, 0x31ff,
- 0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa4d0, 0xa4fd,
- 0xa500, 0xa60c,
- 0xa610, 0xa61f,
- 0xa62a, 0xa62b,
- 0xa640, 0xa66e,
- 0xa674, 0xa67b,
- 0xa67f, 0xa697,
- 0xa69f, 0xa6ef,
- 0xa717, 0xa71f,
- 0xa722, 0xa788,
- 0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
- 0xa803, 0xa805,
- 0xa807, 0xa80a,
- 0xa80c, 0xa827,
- 0xa840, 0xa873,
- 0xa880, 0xa8c3,
- 0xa8f2, 0xa8f7,
- 0xa8fb, 0xa8fb,
- 0xa90a, 0xa92a,
- 0xa930, 0xa952,
- 0xa960, 0xa97c,
- 0xa980, 0xa9b2,
- 0xa9b4, 0xa9bf,
- 0xa9cf, 0xa9cf,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa60, 0xaa76,
- 0xaa7a, 0xaa7a,
- 0xaa80, 0xaabe,
- 0xaac0, 0xaac0,
- 0xaac2, 0xaac2,
- 0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf5,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabea,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb28,
- 0xfb2a, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbb1,
- 0xfbd3, 0xfd3d,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfb,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xff21, 0xff3a,
- 0xff41, 0xff5a,
- 0xff66, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10140, 0x10174,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x103a0, 0x103c3,
- 0x103c8, 0x103cf,
- 0x103d1, 0x103d5,
- 0x10400, 0x1049d,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10900, 0x10915,
- 0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a60, 0x10a7c,
- 0x10b00, 0x10b35,
- 0x10b40, 0x10b55,
- 0x10b60, 0x10b72,
- 0x10c00, 0x10c48,
- 0x11000, 0x11045,
- 0x11082, 0x110b8,
- 0x110d0, 0x110e8,
- 0x11100, 0x11132,
- 0x11180, 0x111bf,
- 0x111c1, 0x111c4,
- 0x11680, 0x116b5,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f93, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d6c0,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6fa,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d734,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d76e,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d7a8,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7cb,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
-}; /* CR_Alpha */
-
-/* 'Blank': [[:Blank:]] */
-static const OnigCodePoint CR_Blank[] = {
- 9,
- 0x0009, 0x0009,
- 0x0020, 0x0020,
- 0x00a0, 0x00a0,
- 0x1680, 0x1680,
- 0x180e, 0x180e,
- 0x2000, 0x200a,
- 0x202f, 0x202f,
- 0x205f, 0x205f,
- 0x3000, 0x3000,
-}; /* CR_Blank */
-
-/* 'Cntrl': [[:Cntrl:]] */
-static const OnigCodePoint CR_Cntrl[] = {
- 2,
- 0x0000, 0x001f,
- 0x007f, 0x009f,
-}; /* CR_Cntrl */
-
-/* 'Digit': [[:Digit:]] */
-static const OnigCodePoint CR_Digit[] = {
- 42,
- 0x0030, 0x0039,
- 0x0660, 0x0669,
- 0x06f0, 0x06f9,
- 0x07c0, 0x07c9,
- 0x0966, 0x096f,
- 0x09e6, 0x09ef,
- 0x0a66, 0x0a6f,
- 0x0ae6, 0x0aef,
- 0x0b66, 0x0b6f,
- 0x0be6, 0x0bef,
- 0x0c66, 0x0c6f,
- 0x0ce6, 0x0cef,
- 0x0d66, 0x0d6f,
- 0x0e50, 0x0e59,
- 0x0ed0, 0x0ed9,
- 0x0f20, 0x0f29,
- 0x1040, 0x1049,
- 0x1090, 0x1099,
- 0x17e0, 0x17e9,
- 0x1810, 0x1819,
- 0x1946, 0x194f,
- 0x19d0, 0x19d9,
- 0x1a80, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1b50, 0x1b59,
- 0x1bb0, 0x1bb9,
- 0x1c40, 0x1c49,
- 0x1c50, 0x1c59,
- 0xa620, 0xa629,
- 0xa8d0, 0xa8d9,
- 0xa900, 0xa909,
- 0xa9d0, 0xa9d9,
- 0xaa50, 0xaa59,
- 0xabf0, 0xabf9,
- 0xff10, 0xff19,
- 0x104a0, 0x104a9,
- 0x11066, 0x1106f,
- 0x110f0, 0x110f9,
- 0x11136, 0x1113f,
- 0x111d0, 0x111d9,
- 0x116c0, 0x116c9,
- 0x1d7ce, 0x1d7ff,
-}; /* CR_Digit */
-
-/* 'Graph': [[:Graph:]] */
-static const OnigCodePoint CR_Graph[] = {
- 544,
- 0x0021, 0x007e,
- 0x00a1, 0x0377,
- 0x037a, 0x037e,
- 0x0384, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x055f,
- 0x0561, 0x0587,
- 0x0589, 0x058a,
- 0x058f, 0x058f,
- 0x0591, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f4,
- 0x0600, 0x0604,
- 0x0606, 0x061b,
- 0x061e, 0x070d,
- 0x070f, 0x074a,
- 0x074d, 0x07b1,
- 0x07c0, 0x07fa,
- 0x0800, 0x082d,
- 0x0830, 0x083e,
- 0x0840, 0x085b,
- 0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
- 0x0900, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bc, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09e6, 0x09fb,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3c, 0x0a3c,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4d,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a66, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abc, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acd,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3c, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4d,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b66, 0x0b77,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcd,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0be6, 0x0bfa,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4d,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c66, 0x0c6f,
- 0x0c78, 0x0c7f,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbc, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccd,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0ce6, 0x0cef,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d66, 0x0d75,
- 0x0d79, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dca, 0x0dca,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df4,
- 0x0e01, 0x0e3a,
- 0x0e3f, 0x0e5b,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ec8, 0x0ecd,
- 0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x0fbe, 0x0fcc,
- 0x0fce, 0x0fda,
- 0x1000, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135d, 0x137c,
- 0x1380, 0x1399,
- 0x13a0, 0x13f4,
- 0x1400, 0x167f,
- 0x1681, 0x169c,
- 0x16a0, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1714,
- 0x1720, 0x1736,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17dd,
- 0x17e0, 0x17e9,
- 0x17f0, 0x17f9,
- 0x1800, 0x180d,
- 0x1810, 0x1819,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x193b,
- 0x1940, 0x1940,
- 0x1944, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x19d0, 0x19da,
- 0x19de, 0x1a1b,
- 0x1a1e, 0x1a5e,
- 0x1a60, 0x1a7c,
- 0x1a7f, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1aa0, 0x1aad,
- 0x1b00, 0x1b4b,
- 0x1b50, 0x1b7c,
- 0x1b80, 0x1bf3,
- 0x1bfc, 0x1c37,
- 0x1c3b, 0x1c49,
- 0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd0, 0x1cf6,
- 0x1d00, 0x1de6,
- 0x1dfc, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fc4,
- 0x1fc6, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fdd, 0x1fef,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffe,
- 0x200b, 0x2027,
- 0x202a, 0x202e,
- 0x2030, 0x205e,
- 0x2060, 0x2064,
- 0x206a, 0x2071,
- 0x2074, 0x208e,
- 0x2090, 0x209c,
- 0x20a0, 0x20b9,
- 0x20d0, 0x20f0,
- 0x2100, 0x2189,
- 0x2190, 0x23f3,
- 0x2400, 0x2426,
- 0x2440, 0x244a,
- 0x2460, 0x26ff,
- 0x2701, 0x2b4c,
- 0x2b50, 0x2b59,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2cf3,
- 0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d70,
- 0x2d7f, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2e3b,
- 0x2e80, 0x2e99,
- 0x2e9b, 0x2ef3,
- 0x2f00, 0x2fd5,
- 0x2ff0, 0x2ffb,
- 0x3001, 0x303f,
- 0x3041, 0x3096,
- 0x3099, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x3190, 0x31ba,
- 0x31c0, 0x31e3,
- 0x31f0, 0x321e,
- 0x3220, 0x32fe,
- 0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa490, 0xa4c6,
- 0xa4d0, 0xa62b,
- 0xa640, 0xa697,
- 0xa69f, 0xa6f7,
- 0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa82b,
- 0xa830, 0xa839,
- 0xa840, 0xa877,
- 0xa880, 0xa8c4,
- 0xa8ce, 0xa8d9,
- 0xa8e0, 0xa8fb,
- 0xa900, 0xa953,
- 0xa95f, 0xa97c,
- 0xa980, 0xa9cd,
- 0xa9cf, 0xa9d9,
- 0xa9de, 0xa9df,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa50, 0xaa59,
- 0xaa5c, 0xaa7b,
- 0xaa80, 0xaac2,
- 0xaadb, 0xaaf6,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabed,
- 0xabf0, 0xabf9,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xe000, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbc1,
- 0xfbd3, 0xfd3f,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfd,
- 0xfe00, 0xfe19,
- 0xfe20, 0xfe26,
- 0xfe30, 0xfe52,
- 0xfe54, 0xfe66,
- 0xfe68, 0xfe6b,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xfeff, 0xfeff,
- 0xff01, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0xffe0, 0xffe6,
- 0xffe8, 0xffee,
- 0xfff9, 0xfffd,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10100, 0x10102,
- 0x10107, 0x10133,
- 0x10137, 0x1018a,
- 0x10190, 0x1019b,
- 0x101d0, 0x101fd,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10320, 0x10323,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x1039f, 0x103c3,
- 0x103c8, 0x103d5,
- 0x10400, 0x1049d,
- 0x104a0, 0x104a9,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10857, 0x1085f,
- 0x10900, 0x1091b,
- 0x1091f, 0x10939,
- 0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a38, 0x10a3a,
- 0x10a3f, 0x10a47,
- 0x10a50, 0x10a58,
- 0x10a60, 0x10a7f,
- 0x10b00, 0x10b35,
- 0x10b39, 0x10b55,
- 0x10b58, 0x10b72,
- 0x10b78, 0x10b7f,
- 0x10c00, 0x10c48,
- 0x10e60, 0x10e7e,
- 0x11000, 0x1104d,
- 0x11052, 0x1106f,
- 0x11080, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x12470, 0x12473,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d000, 0x1d0f5,
- 0x1d100, 0x1d126,
- 0x1d129, 0x1d1dd,
- 0x1d200, 0x1d245,
- 0x1d300, 0x1d356,
- 0x1d360, 0x1d371,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d7cb,
- 0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
- 0x1f000, 0x1f02b,
- 0x1f030, 0x1f093,
- 0x1f0a0, 0x1f0ae,
- 0x1f0b1, 0x1f0be,
- 0x1f0c1, 0x1f0cf,
- 0x1f0d1, 0x1f0df,
- 0x1f100, 0x1f10a,
- 0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
- 0x1f170, 0x1f19a,
- 0x1f1e6, 0x1f202,
- 0x1f210, 0x1f23a,
- 0x1f240, 0x1f248,
- 0x1f250, 0x1f251,
- 0x1f300, 0x1f320,
- 0x1f330, 0x1f335,
- 0x1f337, 0x1f37c,
- 0x1f380, 0x1f393,
- 0x1f3a0, 0x1f3c4,
- 0x1f3c6, 0x1f3ca,
- 0x1f3e0, 0x1f3f0,
- 0x1f400, 0x1f43e,
- 0x1f440, 0x1f440,
- 0x1f442, 0x1f4f7,
- 0x1f4f9, 0x1f4fc,
- 0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
- 0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
- 0x1f645, 0x1f64f,
- 0x1f680, 0x1f6c5,
- 0x1f700, 0x1f773,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
- 0xe0001, 0xe0001,
- 0xe0020, 0xe007f,
- 0xe0100, 0xe01ef,
- 0xf0000, 0xffffd,
- 0x100000, 0x10fffd,
-}; /* CR_Graph */
-
-/* 'Lower': [[:Lower:]] */
-static const OnigCodePoint CR_Lower[] = {
- 618,
- 0x0061, 0x007a,
- 0x00aa, 0x00aa,
- 0x00b5, 0x00b5,
- 0x00ba, 0x00ba,
- 0x00df, 0x00f6,
- 0x00f8, 0x00ff,
- 0x0101, 0x0101,
- 0x0103, 0x0103,
- 0x0105, 0x0105,
- 0x0107, 0x0107,
- 0x0109, 0x0109,
- 0x010b, 0x010b,
- 0x010d, 0x010d,
- 0x010f, 0x010f,
- 0x0111, 0x0111,
- 0x0113, 0x0113,
- 0x0115, 0x0115,
- 0x0117, 0x0117,
- 0x0119, 0x0119,
- 0x011b, 0x011b,
- 0x011d, 0x011d,
- 0x011f, 0x011f,
- 0x0121, 0x0121,
- 0x0123, 0x0123,
- 0x0125, 0x0125,
- 0x0127, 0x0127,
- 0x0129, 0x0129,
- 0x012b, 0x012b,
- 0x012d, 0x012d,
- 0x012f, 0x012f,
- 0x0131, 0x0131,
- 0x0133, 0x0133,
- 0x0135, 0x0135,
- 0x0137, 0x0138,
- 0x013a, 0x013a,
- 0x013c, 0x013c,
- 0x013e, 0x013e,
- 0x0140, 0x0140,
- 0x0142, 0x0142,
- 0x0144, 0x0144,
- 0x0146, 0x0146,
- 0x0148, 0x0149,
- 0x014b, 0x014b,
- 0x014d, 0x014d,
- 0x014f, 0x014f,
- 0x0151, 0x0151,
- 0x0153, 0x0153,
- 0x0155, 0x0155,
- 0x0157, 0x0157,
- 0x0159, 0x0159,
- 0x015b, 0x015b,
- 0x015d, 0x015d,
- 0x015f, 0x015f,
- 0x0161, 0x0161,
- 0x0163, 0x0163,
- 0x0165, 0x0165,
- 0x0167, 0x0167,
- 0x0169, 0x0169,
- 0x016b, 0x016b,
- 0x016d, 0x016d,
- 0x016f, 0x016f,
- 0x0171, 0x0171,
- 0x0173, 0x0173,
- 0x0175, 0x0175,
- 0x0177, 0x0177,
- 0x017a, 0x017a,
- 0x017c, 0x017c,
- 0x017e, 0x0180,
- 0x0183, 0x0183,
- 0x0185, 0x0185,
- 0x0188, 0x0188,
- 0x018c, 0x018d,
- 0x0192, 0x0192,
- 0x0195, 0x0195,
- 0x0199, 0x019b,
- 0x019e, 0x019e,
- 0x01a1, 0x01a1,
- 0x01a3, 0x01a3,
- 0x01a5, 0x01a5,
- 0x01a8, 0x01a8,
- 0x01aa, 0x01ab,
- 0x01ad, 0x01ad,
- 0x01b0, 0x01b0,
- 0x01b4, 0x01b4,
- 0x01b6, 0x01b6,
- 0x01b9, 0x01ba,
- 0x01bd, 0x01bf,
- 0x01c6, 0x01c6,
- 0x01c9, 0x01c9,
- 0x01cc, 0x01cc,
- 0x01ce, 0x01ce,
- 0x01d0, 0x01d0,
- 0x01d2, 0x01d2,
- 0x01d4, 0x01d4,
- 0x01d6, 0x01d6,
- 0x01d8, 0x01d8,
- 0x01da, 0x01da,
- 0x01dc, 0x01dd,
- 0x01df, 0x01df,
- 0x01e1, 0x01e1,
- 0x01e3, 0x01e3,
- 0x01e5, 0x01e5,
- 0x01e7, 0x01e7,
- 0x01e9, 0x01e9,
- 0x01eb, 0x01eb,
- 0x01ed, 0x01ed,
- 0x01ef, 0x01f0,
- 0x01f3, 0x01f3,
- 0x01f5, 0x01f5,
- 0x01f9, 0x01f9,
- 0x01fb, 0x01fb,
- 0x01fd, 0x01fd,
- 0x01ff, 0x01ff,
- 0x0201, 0x0201,
- 0x0203, 0x0203,
- 0x0205, 0x0205,
- 0x0207, 0x0207,
- 0x0209, 0x0209,
- 0x020b, 0x020b,
- 0x020d, 0x020d,
- 0x020f, 0x020f,
- 0x0211, 0x0211,
- 0x0213, 0x0213,
- 0x0215, 0x0215,
- 0x0217, 0x0217,
- 0x0219, 0x0219,
- 0x021b, 0x021b,
- 0x021d, 0x021d,
- 0x021f, 0x021f,
- 0x0221, 0x0221,
- 0x0223, 0x0223,
- 0x0225, 0x0225,
- 0x0227, 0x0227,
- 0x0229, 0x0229,
- 0x022b, 0x022b,
- 0x022d, 0x022d,
- 0x022f, 0x022f,
- 0x0231, 0x0231,
- 0x0233, 0x0239,
- 0x023c, 0x023c,
- 0x023f, 0x0240,
- 0x0242, 0x0242,
- 0x0247, 0x0247,
- 0x0249, 0x0249,
- 0x024b, 0x024b,
- 0x024d, 0x024d,
- 0x024f, 0x0293,
- 0x0295, 0x02b8,
- 0x02c0, 0x02c1,
- 0x02e0, 0x02e4,
- 0x0345, 0x0345,
- 0x0371, 0x0371,
- 0x0373, 0x0373,
- 0x0377, 0x0377,
- 0x037a, 0x037d,
- 0x0390, 0x0390,
- 0x03ac, 0x03ce,
- 0x03d0, 0x03d1,
- 0x03d5, 0x03d7,
- 0x03d9, 0x03d9,
- 0x03db, 0x03db,
- 0x03dd, 0x03dd,
- 0x03df, 0x03df,
- 0x03e1, 0x03e1,
- 0x03e3, 0x03e3,
- 0x03e5, 0x03e5,
- 0x03e7, 0x03e7,
- 0x03e9, 0x03e9,
- 0x03eb, 0x03eb,
- 0x03ed, 0x03ed,
- 0x03ef, 0x03f3,
- 0x03f5, 0x03f5,
- 0x03f8, 0x03f8,
- 0x03fb, 0x03fc,
- 0x0430, 0x045f,
- 0x0461, 0x0461,
- 0x0463, 0x0463,
- 0x0465, 0x0465,
- 0x0467, 0x0467,
- 0x0469, 0x0469,
- 0x046b, 0x046b,
- 0x046d, 0x046d,
- 0x046f, 0x046f,
- 0x0471, 0x0471,
- 0x0473, 0x0473,
- 0x0475, 0x0475,
- 0x0477, 0x0477,
- 0x0479, 0x0479,
- 0x047b, 0x047b,
- 0x047d, 0x047d,
- 0x047f, 0x047f,
- 0x0481, 0x0481,
- 0x048b, 0x048b,
- 0x048d, 0x048d,
- 0x048f, 0x048f,
- 0x0491, 0x0491,
- 0x0493, 0x0493,
- 0x0495, 0x0495,
- 0x0497, 0x0497,
- 0x0499, 0x0499,
- 0x049b, 0x049b,
- 0x049d, 0x049d,
- 0x049f, 0x049f,
- 0x04a1, 0x04a1,
- 0x04a3, 0x04a3,
- 0x04a5, 0x04a5,
- 0x04a7, 0x04a7,
- 0x04a9, 0x04a9,
- 0x04ab, 0x04ab,
- 0x04ad, 0x04ad,
- 0x04af, 0x04af,
- 0x04b1, 0x04b1,
- 0x04b3, 0x04b3,
- 0x04b5, 0x04b5,
- 0x04b7, 0x04b7,
- 0x04b9, 0x04b9,
- 0x04bb, 0x04bb,
- 0x04bd, 0x04bd,
- 0x04bf, 0x04bf,
- 0x04c2, 0x04c2,
- 0x04c4, 0x04c4,
- 0x04c6, 0x04c6,
- 0x04c8, 0x04c8,
- 0x04ca, 0x04ca,
- 0x04cc, 0x04cc,
- 0x04ce, 0x04cf,
- 0x04d1, 0x04d1,
- 0x04d3, 0x04d3,
- 0x04d5, 0x04d5,
- 0x04d7, 0x04d7,
- 0x04d9, 0x04d9,
- 0x04db, 0x04db,
- 0x04dd, 0x04dd,
- 0x04df, 0x04df,
- 0x04e1, 0x04e1,
- 0x04e3, 0x04e3,
- 0x04e5, 0x04e5,
- 0x04e7, 0x04e7,
- 0x04e9, 0x04e9,
- 0x04eb, 0x04eb,
- 0x04ed, 0x04ed,
- 0x04ef, 0x04ef,
- 0x04f1, 0x04f1,
- 0x04f3, 0x04f3,
- 0x04f5, 0x04f5,
- 0x04f7, 0x04f7,
- 0x04f9, 0x04f9,
- 0x04fb, 0x04fb,
- 0x04fd, 0x04fd,
- 0x04ff, 0x04ff,
- 0x0501, 0x0501,
- 0x0503, 0x0503,
- 0x0505, 0x0505,
- 0x0507, 0x0507,
- 0x0509, 0x0509,
- 0x050b, 0x050b,
- 0x050d, 0x050d,
- 0x050f, 0x050f,
- 0x0511, 0x0511,
- 0x0513, 0x0513,
- 0x0515, 0x0515,
- 0x0517, 0x0517,
- 0x0519, 0x0519,
- 0x051b, 0x051b,
- 0x051d, 0x051d,
- 0x051f, 0x051f,
- 0x0521, 0x0521,
- 0x0523, 0x0523,
- 0x0525, 0x0525,
- 0x0527, 0x0527,
- 0x0561, 0x0587,
- 0x1d00, 0x1dbf,
- 0x1e01, 0x1e01,
- 0x1e03, 0x1e03,
- 0x1e05, 0x1e05,
- 0x1e07, 0x1e07,
- 0x1e09, 0x1e09,
- 0x1e0b, 0x1e0b,
- 0x1e0d, 0x1e0d,
- 0x1e0f, 0x1e0f,
- 0x1e11, 0x1e11,
- 0x1e13, 0x1e13,
- 0x1e15, 0x1e15,
- 0x1e17, 0x1e17,
- 0x1e19, 0x1e19,
- 0x1e1b, 0x1e1b,
- 0x1e1d, 0x1e1d,
- 0x1e1f, 0x1e1f,
- 0x1e21, 0x1e21,
- 0x1e23, 0x1e23,
- 0x1e25, 0x1e25,
- 0x1e27, 0x1e27,
- 0x1e29, 0x1e29,
- 0x1e2b, 0x1e2b,
- 0x1e2d, 0x1e2d,
- 0x1e2f, 0x1e2f,
- 0x1e31, 0x1e31,
- 0x1e33, 0x1e33,
- 0x1e35, 0x1e35,
- 0x1e37, 0x1e37,
- 0x1e39, 0x1e39,
- 0x1e3b, 0x1e3b,
- 0x1e3d, 0x1e3d,
- 0x1e3f, 0x1e3f,
- 0x1e41, 0x1e41,
- 0x1e43, 0x1e43,
- 0x1e45, 0x1e45,
- 0x1e47, 0x1e47,
- 0x1e49, 0x1e49,
- 0x1e4b, 0x1e4b,
- 0x1e4d, 0x1e4d,
- 0x1e4f, 0x1e4f,
- 0x1e51, 0x1e51,
- 0x1e53, 0x1e53,
- 0x1e55, 0x1e55,
- 0x1e57, 0x1e57,
- 0x1e59, 0x1e59,
- 0x1e5b, 0x1e5b,
- 0x1e5d, 0x1e5d,
- 0x1e5f, 0x1e5f,
- 0x1e61, 0x1e61,
- 0x1e63, 0x1e63,
- 0x1e65, 0x1e65,
- 0x1e67, 0x1e67,
- 0x1e69, 0x1e69,
- 0x1e6b, 0x1e6b,
- 0x1e6d, 0x1e6d,
- 0x1e6f, 0x1e6f,
- 0x1e71, 0x1e71,
- 0x1e73, 0x1e73,
- 0x1e75, 0x1e75,
- 0x1e77, 0x1e77,
- 0x1e79, 0x1e79,
- 0x1e7b, 0x1e7b,
- 0x1e7d, 0x1e7d,
- 0x1e7f, 0x1e7f,
- 0x1e81, 0x1e81,
- 0x1e83, 0x1e83,
- 0x1e85, 0x1e85,
- 0x1e87, 0x1e87,
- 0x1e89, 0x1e89,
- 0x1e8b, 0x1e8b,
- 0x1e8d, 0x1e8d,
- 0x1e8f, 0x1e8f,
- 0x1e91, 0x1e91,
- 0x1e93, 0x1e93,
- 0x1e95, 0x1e9d,
- 0x1e9f, 0x1e9f,
- 0x1ea1, 0x1ea1,
- 0x1ea3, 0x1ea3,
- 0x1ea5, 0x1ea5,
- 0x1ea7, 0x1ea7,
- 0x1ea9, 0x1ea9,
- 0x1eab, 0x1eab,
- 0x1ead, 0x1ead,
- 0x1eaf, 0x1eaf,
- 0x1eb1, 0x1eb1,
- 0x1eb3, 0x1eb3,
- 0x1eb5, 0x1eb5,
- 0x1eb7, 0x1eb7,
- 0x1eb9, 0x1eb9,
- 0x1ebb, 0x1ebb,
- 0x1ebd, 0x1ebd,
- 0x1ebf, 0x1ebf,
- 0x1ec1, 0x1ec1,
- 0x1ec3, 0x1ec3,
- 0x1ec5, 0x1ec5,
- 0x1ec7, 0x1ec7,
- 0x1ec9, 0x1ec9,
- 0x1ecb, 0x1ecb,
- 0x1ecd, 0x1ecd,
- 0x1ecf, 0x1ecf,
- 0x1ed1, 0x1ed1,
- 0x1ed3, 0x1ed3,
- 0x1ed5, 0x1ed5,
- 0x1ed7, 0x1ed7,
- 0x1ed9, 0x1ed9,
- 0x1edb, 0x1edb,
- 0x1edd, 0x1edd,
- 0x1edf, 0x1edf,
- 0x1ee1, 0x1ee1,
- 0x1ee3, 0x1ee3,
- 0x1ee5, 0x1ee5,
- 0x1ee7, 0x1ee7,
- 0x1ee9, 0x1ee9,
- 0x1eeb, 0x1eeb,
- 0x1eed, 0x1eed,
- 0x1eef, 0x1eef,
- 0x1ef1, 0x1ef1,
- 0x1ef3, 0x1ef3,
- 0x1ef5, 0x1ef5,
- 0x1ef7, 0x1ef7,
- 0x1ef9, 0x1ef9,
- 0x1efb, 0x1efb,
- 0x1efd, 0x1efd,
- 0x1eff, 0x1f07,
- 0x1f10, 0x1f15,
- 0x1f20, 0x1f27,
- 0x1f30, 0x1f37,
- 0x1f40, 0x1f45,
- 0x1f50, 0x1f57,
- 0x1f60, 0x1f67,
- 0x1f70, 0x1f7d,
- 0x1f80, 0x1f87,
- 0x1f90, 0x1f97,
- 0x1fa0, 0x1fa7,
- 0x1fb0, 0x1fb4,
- 0x1fb6, 0x1fb7,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fc7,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fd7,
- 0x1fe0, 0x1fe7,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ff7,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
- 0x210a, 0x210a,
- 0x210e, 0x210f,
- 0x2113, 0x2113,
- 0x212f, 0x212f,
- 0x2134, 0x2134,
- 0x2139, 0x2139,
- 0x213c, 0x213d,
- 0x2146, 0x2149,
- 0x214e, 0x214e,
- 0x2170, 0x217f,
- 0x2184, 0x2184,
- 0x24d0, 0x24e9,
- 0x2c30, 0x2c5e,
- 0x2c61, 0x2c61,
- 0x2c65, 0x2c66,
- 0x2c68, 0x2c68,
- 0x2c6a, 0x2c6a,
- 0x2c6c, 0x2c6c,
- 0x2c71, 0x2c71,
- 0x2c73, 0x2c74,
- 0x2c76, 0x2c7d,
- 0x2c81, 0x2c81,
- 0x2c83, 0x2c83,
- 0x2c85, 0x2c85,
- 0x2c87, 0x2c87,
- 0x2c89, 0x2c89,
- 0x2c8b, 0x2c8b,
- 0x2c8d, 0x2c8d,
- 0x2c8f, 0x2c8f,
- 0x2c91, 0x2c91,
- 0x2c93, 0x2c93,
- 0x2c95, 0x2c95,
- 0x2c97, 0x2c97,
- 0x2c99, 0x2c99,
- 0x2c9b, 0x2c9b,
- 0x2c9d, 0x2c9d,
- 0x2c9f, 0x2c9f,
- 0x2ca1, 0x2ca1,
- 0x2ca3, 0x2ca3,
- 0x2ca5, 0x2ca5,
- 0x2ca7, 0x2ca7,
- 0x2ca9, 0x2ca9,
- 0x2cab, 0x2cab,
- 0x2cad, 0x2cad,
- 0x2caf, 0x2caf,
- 0x2cb1, 0x2cb1,
- 0x2cb3, 0x2cb3,
- 0x2cb5, 0x2cb5,
- 0x2cb7, 0x2cb7,
- 0x2cb9, 0x2cb9,
- 0x2cbb, 0x2cbb,
- 0x2cbd, 0x2cbd,
- 0x2cbf, 0x2cbf,
- 0x2cc1, 0x2cc1,
- 0x2cc3, 0x2cc3,
- 0x2cc5, 0x2cc5,
- 0x2cc7, 0x2cc7,
- 0x2cc9, 0x2cc9,
- 0x2ccb, 0x2ccb,
- 0x2ccd, 0x2ccd,
- 0x2ccf, 0x2ccf,
- 0x2cd1, 0x2cd1,
- 0x2cd3, 0x2cd3,
- 0x2cd5, 0x2cd5,
- 0x2cd7, 0x2cd7,
- 0x2cd9, 0x2cd9,
- 0x2cdb, 0x2cdb,
- 0x2cdd, 0x2cdd,
- 0x2cdf, 0x2cdf,
- 0x2ce1, 0x2ce1,
- 0x2ce3, 0x2ce4,
- 0x2cec, 0x2cec,
- 0x2cee, 0x2cee,
- 0x2cf3, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0xa641, 0xa641,
- 0xa643, 0xa643,
- 0xa645, 0xa645,
- 0xa647, 0xa647,
- 0xa649, 0xa649,
- 0xa64b, 0xa64b,
- 0xa64d, 0xa64d,
- 0xa64f, 0xa64f,
- 0xa651, 0xa651,
- 0xa653, 0xa653,
- 0xa655, 0xa655,
- 0xa657, 0xa657,
- 0xa659, 0xa659,
- 0xa65b, 0xa65b,
- 0xa65d, 0xa65d,
- 0xa65f, 0xa65f,
- 0xa661, 0xa661,
- 0xa663, 0xa663,
- 0xa665, 0xa665,
- 0xa667, 0xa667,
- 0xa669, 0xa669,
- 0xa66b, 0xa66b,
- 0xa66d, 0xa66d,
- 0xa681, 0xa681,
- 0xa683, 0xa683,
- 0xa685, 0xa685,
- 0xa687, 0xa687,
- 0xa689, 0xa689,
- 0xa68b, 0xa68b,
- 0xa68d, 0xa68d,
- 0xa68f, 0xa68f,
- 0xa691, 0xa691,
- 0xa693, 0xa693,
- 0xa695, 0xa695,
- 0xa697, 0xa697,
- 0xa723, 0xa723,
- 0xa725, 0xa725,
- 0xa727, 0xa727,
- 0xa729, 0xa729,
- 0xa72b, 0xa72b,
- 0xa72d, 0xa72d,
- 0xa72f, 0xa731,
- 0xa733, 0xa733,
- 0xa735, 0xa735,
- 0xa737, 0xa737,
- 0xa739, 0xa739,
- 0xa73b, 0xa73b,
- 0xa73d, 0xa73d,
- 0xa73f, 0xa73f,
- 0xa741, 0xa741,
- 0xa743, 0xa743,
- 0xa745, 0xa745,
- 0xa747, 0xa747,
- 0xa749, 0xa749,
- 0xa74b, 0xa74b,
- 0xa74d, 0xa74d,
- 0xa74f, 0xa74f,
- 0xa751, 0xa751,
- 0xa753, 0xa753,
- 0xa755, 0xa755,
- 0xa757, 0xa757,
- 0xa759, 0xa759,
- 0xa75b, 0xa75b,
- 0xa75d, 0xa75d,
- 0xa75f, 0xa75f,
- 0xa761, 0xa761,
- 0xa763, 0xa763,
- 0xa765, 0xa765,
- 0xa767, 0xa767,
- 0xa769, 0xa769,
- 0xa76b, 0xa76b,
- 0xa76d, 0xa76d,
- 0xa76f, 0xa778,
- 0xa77a, 0xa77a,
- 0xa77c, 0xa77c,
- 0xa77f, 0xa77f,
- 0xa781, 0xa781,
- 0xa783, 0xa783,
- 0xa785, 0xa785,
- 0xa787, 0xa787,
- 0xa78c, 0xa78c,
- 0xa78e, 0xa78e,
- 0xa791, 0xa791,
- 0xa793, 0xa793,
- 0xa7a1, 0xa7a1,
- 0xa7a3, 0xa7a3,
- 0xa7a5, 0xa7a5,
- 0xa7a7, 0xa7a7,
- 0xa7a9, 0xa7a9,
- 0xa7f8, 0xa7fa,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xff41, 0xff5a,
- 0x10428, 0x1044f,
- 0x1d41a, 0x1d433,
- 0x1d44e, 0x1d454,
- 0x1d456, 0x1d467,
- 0x1d482, 0x1d49b,
- 0x1d4b6, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d4cf,
- 0x1d4ea, 0x1d503,
- 0x1d51e, 0x1d537,
- 0x1d552, 0x1d56b,
- 0x1d586, 0x1d59f,
- 0x1d5ba, 0x1d5d3,
- 0x1d5ee, 0x1d607,
- 0x1d622, 0x1d63b,
- 0x1d656, 0x1d66f,
- 0x1d68a, 0x1d6a5,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6e1,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d71b,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d755,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d78f,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7c9,
- 0x1d7cb, 0x1d7cb,
-}; /* CR_Lower */
-
-/* 'Print': [[:Print:]] */
-static const OnigCodePoint CR_Print[] = {
- 541,
- 0x0020, 0x007e,
- 0x00a0, 0x0377,
- 0x037a, 0x037e,
- 0x0384, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x055f,
- 0x0561, 0x0587,
- 0x0589, 0x058a,
- 0x058f, 0x058f,
- 0x0591, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f4,
- 0x0600, 0x0604,
- 0x0606, 0x061b,
- 0x061e, 0x070d,
- 0x070f, 0x074a,
- 0x074d, 0x07b1,
- 0x07c0, 0x07fa,
- 0x0800, 0x082d,
- 0x0830, 0x083e,
- 0x0840, 0x085b,
- 0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
- 0x0900, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bc, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09e6, 0x09fb,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3c, 0x0a3c,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4d,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a66, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abc, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acd,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3c, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4d,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b66, 0x0b77,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcd,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0be6, 0x0bfa,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4d,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c66, 0x0c6f,
- 0x0c78, 0x0c7f,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbc, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccd,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0ce6, 0x0cef,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d66, 0x0d75,
- 0x0d79, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dca, 0x0dca,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df4,
- 0x0e01, 0x0e3a,
- 0x0e3f, 0x0e5b,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ec8, 0x0ecd,
- 0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x0fbe, 0x0fcc,
- 0x0fce, 0x0fda,
- 0x1000, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135d, 0x137c,
- 0x1380, 0x1399,
- 0x13a0, 0x13f4,
- 0x1400, 0x169c,
- 0x16a0, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1714,
- 0x1720, 0x1736,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17dd,
- 0x17e0, 0x17e9,
- 0x17f0, 0x17f9,
- 0x1800, 0x180e,
- 0x1810, 0x1819,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x193b,
- 0x1940, 0x1940,
- 0x1944, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x19d0, 0x19da,
- 0x19de, 0x1a1b,
- 0x1a1e, 0x1a5e,
- 0x1a60, 0x1a7c,
- 0x1a7f, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1aa0, 0x1aad,
- 0x1b00, 0x1b4b,
- 0x1b50, 0x1b7c,
- 0x1b80, 0x1bf3,
- 0x1bfc, 0x1c37,
- 0x1c3b, 0x1c49,
- 0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd0, 0x1cf6,
- 0x1d00, 0x1de6,
- 0x1dfc, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fc4,
- 0x1fc6, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fdd, 0x1fef,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffe,
- 0x2000, 0x2027,
- 0x202a, 0x2064,
- 0x206a, 0x2071,
- 0x2074, 0x208e,
- 0x2090, 0x209c,
- 0x20a0, 0x20b9,
- 0x20d0, 0x20f0,
- 0x2100, 0x2189,
- 0x2190, 0x23f3,
- 0x2400, 0x2426,
- 0x2440, 0x244a,
- 0x2460, 0x26ff,
- 0x2701, 0x2b4c,
- 0x2b50, 0x2b59,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2cf3,
- 0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d70,
- 0x2d7f, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2e3b,
- 0x2e80, 0x2e99,
- 0x2e9b, 0x2ef3,
- 0x2f00, 0x2fd5,
- 0x2ff0, 0x2ffb,
- 0x3000, 0x303f,
- 0x3041, 0x3096,
- 0x3099, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x3190, 0x31ba,
- 0x31c0, 0x31e3,
- 0x31f0, 0x321e,
- 0x3220, 0x32fe,
- 0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa490, 0xa4c6,
- 0xa4d0, 0xa62b,
- 0xa640, 0xa697,
- 0xa69f, 0xa6f7,
- 0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa82b,
- 0xa830, 0xa839,
- 0xa840, 0xa877,
- 0xa880, 0xa8c4,
- 0xa8ce, 0xa8d9,
- 0xa8e0, 0xa8fb,
- 0xa900, 0xa953,
- 0xa95f, 0xa97c,
- 0xa980, 0xa9cd,
- 0xa9cf, 0xa9d9,
- 0xa9de, 0xa9df,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa50, 0xaa59,
- 0xaa5c, 0xaa7b,
- 0xaa80, 0xaac2,
- 0xaadb, 0xaaf6,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabed,
- 0xabf0, 0xabf9,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xe000, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbc1,
- 0xfbd3, 0xfd3f,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfd,
- 0xfe00, 0xfe19,
- 0xfe20, 0xfe26,
- 0xfe30, 0xfe52,
- 0xfe54, 0xfe66,
- 0xfe68, 0xfe6b,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xfeff, 0xfeff,
- 0xff01, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0xffe0, 0xffe6,
- 0xffe8, 0xffee,
- 0xfff9, 0xfffd,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10100, 0x10102,
- 0x10107, 0x10133,
- 0x10137, 0x1018a,
- 0x10190, 0x1019b,
- 0x101d0, 0x101fd,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10320, 0x10323,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x1039f, 0x103c3,
- 0x103c8, 0x103d5,
- 0x10400, 0x1049d,
- 0x104a0, 0x104a9,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10857, 0x1085f,
- 0x10900, 0x1091b,
- 0x1091f, 0x10939,
- 0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a38, 0x10a3a,
- 0x10a3f, 0x10a47,
- 0x10a50, 0x10a58,
- 0x10a60, 0x10a7f,
- 0x10b00, 0x10b35,
- 0x10b39, 0x10b55,
- 0x10b58, 0x10b72,
- 0x10b78, 0x10b7f,
- 0x10c00, 0x10c48,
- 0x10e60, 0x10e7e,
- 0x11000, 0x1104d,
- 0x11052, 0x1106f,
- 0x11080, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x12470, 0x12473,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d000, 0x1d0f5,
- 0x1d100, 0x1d126,
- 0x1d129, 0x1d1dd,
- 0x1d200, 0x1d245,
- 0x1d300, 0x1d356,
- 0x1d360, 0x1d371,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d7cb,
- 0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
- 0x1f000, 0x1f02b,
- 0x1f030, 0x1f093,
- 0x1f0a0, 0x1f0ae,
- 0x1f0b1, 0x1f0be,
- 0x1f0c1, 0x1f0cf,
- 0x1f0d1, 0x1f0df,
- 0x1f100, 0x1f10a,
- 0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
- 0x1f170, 0x1f19a,
- 0x1f1e6, 0x1f202,
- 0x1f210, 0x1f23a,
- 0x1f240, 0x1f248,
- 0x1f250, 0x1f251,
- 0x1f300, 0x1f320,
- 0x1f330, 0x1f335,
- 0x1f337, 0x1f37c,
- 0x1f380, 0x1f393,
- 0x1f3a0, 0x1f3c4,
- 0x1f3c6, 0x1f3ca,
- 0x1f3e0, 0x1f3f0,
- 0x1f400, 0x1f43e,
- 0x1f440, 0x1f440,
- 0x1f442, 0x1f4f7,
- 0x1f4f9, 0x1f4fc,
- 0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
- 0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
- 0x1f645, 0x1f64f,
- 0x1f680, 0x1f6c5,
- 0x1f700, 0x1f773,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
- 0xe0001, 0xe0001,
- 0xe0020, 0xe007f,
- 0xe0100, 0xe01ef,
- 0xf0000, 0xffffd,
- 0x100000, 0x10fffd,
-}; /* CR_Print */
-
-/* 'Punct': [[:Punct:]] */
-static const OnigCodePoint CR_Punct[] = {
- 140,
- 0x0021, 0x0023,
- 0x0025, 0x002a,
- 0x002c, 0x002f,
- 0x003a, 0x003b,
- 0x003f, 0x0040,
- 0x005b, 0x005d,
- 0x005f, 0x005f,
- 0x007b, 0x007b,
- 0x007d, 0x007d,
- 0x00a1, 0x00a1,
- 0x00a7, 0x00a7,
- 0x00ab, 0x00ab,
- 0x00b6, 0x00b7,
- 0x00bb, 0x00bb,
- 0x00bf, 0x00bf,
- 0x037e, 0x037e,
- 0x0387, 0x0387,
- 0x055a, 0x055f,
- 0x0589, 0x058a,
- 0x05be, 0x05be,
- 0x05c0, 0x05c0,
- 0x05c3, 0x05c3,
- 0x05c6, 0x05c6,
- 0x05f3, 0x05f4,
- 0x0609, 0x060a,
- 0x060c, 0x060d,
- 0x061b, 0x061b,
- 0x061e, 0x061f,
- 0x066a, 0x066d,
- 0x06d4, 0x06d4,
- 0x0700, 0x070d,
- 0x07f7, 0x07f9,
- 0x0830, 0x083e,
- 0x085e, 0x085e,
- 0x0964, 0x0965,
- 0x0970, 0x0970,
- 0x0af0, 0x0af0,
- 0x0df4, 0x0df4,
- 0x0e4f, 0x0e4f,
- 0x0e5a, 0x0e5b,
- 0x0f04, 0x0f12,
- 0x0f14, 0x0f14,
- 0x0f3a, 0x0f3d,
- 0x0f85, 0x0f85,
- 0x0fd0, 0x0fd4,
- 0x0fd9, 0x0fda,
- 0x104a, 0x104f,
- 0x10fb, 0x10fb,
- 0x1360, 0x1368,
- 0x1400, 0x1400,
- 0x166d, 0x166e,
- 0x169b, 0x169c,
- 0x16eb, 0x16ed,
- 0x1735, 0x1736,
- 0x17d4, 0x17d6,
- 0x17d8, 0x17da,
- 0x1800, 0x180a,
- 0x1944, 0x1945,
- 0x1a1e, 0x1a1f,
- 0x1aa0, 0x1aa6,
- 0x1aa8, 0x1aad,
- 0x1b5a, 0x1b60,
- 0x1bfc, 0x1bff,
- 0x1c3b, 0x1c3f,
- 0x1c7e, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd3, 0x1cd3,
- 0x2010, 0x2027,
- 0x2030, 0x2043,
- 0x2045, 0x2051,
- 0x2053, 0x205e,
- 0x207d, 0x207e,
- 0x208d, 0x208e,
- 0x2329, 0x232a,
- 0x2768, 0x2775,
- 0x27c5, 0x27c6,
- 0x27e6, 0x27ef,
- 0x2983, 0x2998,
- 0x29d8, 0x29db,
- 0x29fc, 0x29fd,
- 0x2cf9, 0x2cfc,
- 0x2cfe, 0x2cff,
- 0x2d70, 0x2d70,
- 0x2e00, 0x2e2e,
- 0x2e30, 0x2e3b,
- 0x3001, 0x3003,
- 0x3008, 0x3011,
- 0x3014, 0x301f,
- 0x3030, 0x3030,
- 0x303d, 0x303d,
- 0x30a0, 0x30a0,
- 0x30fb, 0x30fb,
- 0xa4fe, 0xa4ff,
- 0xa60d, 0xa60f,
- 0xa673, 0xa673,
- 0xa67e, 0xa67e,
- 0xa6f2, 0xa6f7,
- 0xa874, 0xa877,
- 0xa8ce, 0xa8cf,
- 0xa8f8, 0xa8fa,
- 0xa92e, 0xa92f,
- 0xa95f, 0xa95f,
- 0xa9c1, 0xa9cd,
- 0xa9de, 0xa9df,
- 0xaa5c, 0xaa5f,
- 0xaade, 0xaadf,
- 0xaaf0, 0xaaf1,
- 0xabeb, 0xabeb,
- 0xfd3e, 0xfd3f,
- 0xfe10, 0xfe19,
- 0xfe30, 0xfe52,
- 0xfe54, 0xfe61,
- 0xfe63, 0xfe63,
- 0xfe68, 0xfe68,
- 0xfe6a, 0xfe6b,
- 0xff01, 0xff03,
- 0xff05, 0xff0a,
- 0xff0c, 0xff0f,
- 0xff1a, 0xff1b,
- 0xff1f, 0xff20,
- 0xff3b, 0xff3d,
- 0xff3f, 0xff3f,
- 0xff5b, 0xff5b,
- 0xff5d, 0xff5d,
- 0xff5f, 0xff65,
- 0x10100, 0x10102,
- 0x1039f, 0x1039f,
- 0x103d0, 0x103d0,
- 0x10857, 0x10857,
- 0x1091f, 0x1091f,
- 0x1093f, 0x1093f,
- 0x10a50, 0x10a58,
- 0x10a7f, 0x10a7f,
- 0x10b39, 0x10b3f,
- 0x11047, 0x1104d,
- 0x110bb, 0x110bc,
- 0x110be, 0x110c1,
- 0x11140, 0x11143,
- 0x111c5, 0x111c8,
- 0x12470, 0x12473,
-}; /* CR_Punct */
-
-/* 'Space': [[:Space:]] */
-static const OnigCodePoint CR_Space[] = {
- 11,
- 0x0009, 0x000d,
- 0x0020, 0x0020,
- 0x0085, 0x0085,
- 0x00a0, 0x00a0,
- 0x1680, 0x1680,
- 0x180e, 0x180e,
- 0x2000, 0x200a,
- 0x2028, 0x2029,
- 0x202f, 0x202f,
- 0x205f, 0x205f,
- 0x3000, 0x3000,
-}; /* CR_Space */
-
-/* 'Upper': [[:Upper:]] */
-static const OnigCodePoint CR_Upper[] = {
- 610,
- 0x0041, 0x005a,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00de,
- 0x0100, 0x0100,
- 0x0102, 0x0102,
- 0x0104, 0x0104,
- 0x0106, 0x0106,
- 0x0108, 0x0108,
- 0x010a, 0x010a,
- 0x010c, 0x010c,
- 0x010e, 0x010e,
- 0x0110, 0x0110,
- 0x0112, 0x0112,
- 0x0114, 0x0114,
- 0x0116, 0x0116,
- 0x0118, 0x0118,
- 0x011a, 0x011a,
- 0x011c, 0x011c,
- 0x011e, 0x011e,
- 0x0120, 0x0120,
- 0x0122, 0x0122,
- 0x0124, 0x0124,
- 0x0126, 0x0126,
- 0x0128, 0x0128,
- 0x012a, 0x012a,
- 0x012c, 0x012c,
- 0x012e, 0x012e,
- 0x0130, 0x0130,
- 0x0132, 0x0132,
- 0x0134, 0x0134,
- 0x0136, 0x0136,
- 0x0139, 0x0139,
- 0x013b, 0x013b,
- 0x013d, 0x013d,
- 0x013f, 0x013f,
- 0x0141, 0x0141,
- 0x0143, 0x0143,
- 0x0145, 0x0145,
- 0x0147, 0x0147,
- 0x014a, 0x014a,
- 0x014c, 0x014c,
- 0x014e, 0x014e,
- 0x0150, 0x0150,
- 0x0152, 0x0152,
- 0x0154, 0x0154,
- 0x0156, 0x0156,
- 0x0158, 0x0158,
- 0x015a, 0x015a,
- 0x015c, 0x015c,
- 0x015e, 0x015e,
- 0x0160, 0x0160,
- 0x0162, 0x0162,
- 0x0164, 0x0164,
- 0x0166, 0x0166,
- 0x0168, 0x0168,
- 0x016a, 0x016a,
- 0x016c, 0x016c,
- 0x016e, 0x016e,
- 0x0170, 0x0170,
- 0x0172, 0x0172,
- 0x0174, 0x0174,
- 0x0176, 0x0176,
- 0x0178, 0x0179,
- 0x017b, 0x017b,
- 0x017d, 0x017d,
- 0x0181, 0x0182,
- 0x0184, 0x0184,
- 0x0186, 0x0187,
- 0x0189, 0x018b,
- 0x018e, 0x0191,
- 0x0193, 0x0194,
- 0x0196, 0x0198,
- 0x019c, 0x019d,
- 0x019f, 0x01a0,
- 0x01a2, 0x01a2,
- 0x01a4, 0x01a4,
- 0x01a6, 0x01a7,
- 0x01a9, 0x01a9,
- 0x01ac, 0x01ac,
- 0x01ae, 0x01af,
- 0x01b1, 0x01b3,
- 0x01b5, 0x01b5,
- 0x01b7, 0x01b8,
- 0x01bc, 0x01bc,
- 0x01c4, 0x01c4,
- 0x01c7, 0x01c7,
- 0x01ca, 0x01ca,
- 0x01cd, 0x01cd,
- 0x01cf, 0x01cf,
- 0x01d1, 0x01d1,
- 0x01d3, 0x01d3,
- 0x01d5, 0x01d5,
- 0x01d7, 0x01d7,
- 0x01d9, 0x01d9,
- 0x01db, 0x01db,
- 0x01de, 0x01de,
- 0x01e0, 0x01e0,
- 0x01e2, 0x01e2,
- 0x01e4, 0x01e4,
- 0x01e6, 0x01e6,
- 0x01e8, 0x01e8,
- 0x01ea, 0x01ea,
- 0x01ec, 0x01ec,
- 0x01ee, 0x01ee,
- 0x01f1, 0x01f1,
- 0x01f4, 0x01f4,
- 0x01f6, 0x01f8,
- 0x01fa, 0x01fa,
- 0x01fc, 0x01fc,
- 0x01fe, 0x01fe,
- 0x0200, 0x0200,
- 0x0202, 0x0202,
- 0x0204, 0x0204,
- 0x0206, 0x0206,
- 0x0208, 0x0208,
- 0x020a, 0x020a,
- 0x020c, 0x020c,
- 0x020e, 0x020e,
- 0x0210, 0x0210,
- 0x0212, 0x0212,
- 0x0214, 0x0214,
- 0x0216, 0x0216,
- 0x0218, 0x0218,
- 0x021a, 0x021a,
- 0x021c, 0x021c,
- 0x021e, 0x021e,
- 0x0220, 0x0220,
- 0x0222, 0x0222,
- 0x0224, 0x0224,
- 0x0226, 0x0226,
- 0x0228, 0x0228,
- 0x022a, 0x022a,
- 0x022c, 0x022c,
- 0x022e, 0x022e,
- 0x0230, 0x0230,
- 0x0232, 0x0232,
- 0x023a, 0x023b,
- 0x023d, 0x023e,
- 0x0241, 0x0241,
- 0x0243, 0x0246,
- 0x0248, 0x0248,
- 0x024a, 0x024a,
- 0x024c, 0x024c,
- 0x024e, 0x024e,
- 0x0370, 0x0370,
- 0x0372, 0x0372,
- 0x0376, 0x0376,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x038f,
- 0x0391, 0x03a1,
- 0x03a3, 0x03ab,
- 0x03cf, 0x03cf,
- 0x03d2, 0x03d4,
- 0x03d8, 0x03d8,
- 0x03da, 0x03da,
- 0x03dc, 0x03dc,
- 0x03de, 0x03de,
- 0x03e0, 0x03e0,
- 0x03e2, 0x03e2,
- 0x03e4, 0x03e4,
- 0x03e6, 0x03e6,
- 0x03e8, 0x03e8,
- 0x03ea, 0x03ea,
- 0x03ec, 0x03ec,
- 0x03ee, 0x03ee,
- 0x03f4, 0x03f4,
- 0x03f7, 0x03f7,
- 0x03f9, 0x03fa,
- 0x03fd, 0x042f,
- 0x0460, 0x0460,
- 0x0462, 0x0462,
- 0x0464, 0x0464,
- 0x0466, 0x0466,
- 0x0468, 0x0468,
- 0x046a, 0x046a,
- 0x046c, 0x046c,
- 0x046e, 0x046e,
- 0x0470, 0x0470,
- 0x0472, 0x0472,
- 0x0474, 0x0474,
- 0x0476, 0x0476,
- 0x0478, 0x0478,
- 0x047a, 0x047a,
- 0x047c, 0x047c,
- 0x047e, 0x047e,
- 0x0480, 0x0480,
- 0x048a, 0x048a,
- 0x048c, 0x048c,
- 0x048e, 0x048e,
- 0x0490, 0x0490,
- 0x0492, 0x0492,
- 0x0494, 0x0494,
- 0x0496, 0x0496,
- 0x0498, 0x0498,
- 0x049a, 0x049a,
- 0x049c, 0x049c,
- 0x049e, 0x049e,
- 0x04a0, 0x04a0,
- 0x04a2, 0x04a2,
- 0x04a4, 0x04a4,
- 0x04a6, 0x04a6,
- 0x04a8, 0x04a8,
- 0x04aa, 0x04aa,
- 0x04ac, 0x04ac,
- 0x04ae, 0x04ae,
- 0x04b0, 0x04b0,
- 0x04b2, 0x04b2,
- 0x04b4, 0x04b4,
- 0x04b6, 0x04b6,
- 0x04b8, 0x04b8,
- 0x04ba, 0x04ba,
- 0x04bc, 0x04bc,
- 0x04be, 0x04be,
- 0x04c0, 0x04c1,
- 0x04c3, 0x04c3,
- 0x04c5, 0x04c5,
- 0x04c7, 0x04c7,
- 0x04c9, 0x04c9,
- 0x04cb, 0x04cb,
- 0x04cd, 0x04cd,
- 0x04d0, 0x04d0,
- 0x04d2, 0x04d2,
- 0x04d4, 0x04d4,
- 0x04d6, 0x04d6,
- 0x04d8, 0x04d8,
- 0x04da, 0x04da,
- 0x04dc, 0x04dc,
- 0x04de, 0x04de,
- 0x04e0, 0x04e0,
- 0x04e2, 0x04e2,
- 0x04e4, 0x04e4,
- 0x04e6, 0x04e6,
- 0x04e8, 0x04e8,
- 0x04ea, 0x04ea,
- 0x04ec, 0x04ec,
- 0x04ee, 0x04ee,
- 0x04f0, 0x04f0,
- 0x04f2, 0x04f2,
- 0x04f4, 0x04f4,
- 0x04f6, 0x04f6,
- 0x04f8, 0x04f8,
- 0x04fa, 0x04fa,
- 0x04fc, 0x04fc,
- 0x04fe, 0x04fe,
- 0x0500, 0x0500,
- 0x0502, 0x0502,
- 0x0504, 0x0504,
- 0x0506, 0x0506,
- 0x0508, 0x0508,
- 0x050a, 0x050a,
- 0x050c, 0x050c,
- 0x050e, 0x050e,
- 0x0510, 0x0510,
- 0x0512, 0x0512,
- 0x0514, 0x0514,
- 0x0516, 0x0516,
- 0x0518, 0x0518,
- 0x051a, 0x051a,
- 0x051c, 0x051c,
- 0x051e, 0x051e,
- 0x0520, 0x0520,
- 0x0522, 0x0522,
- 0x0524, 0x0524,
- 0x0526, 0x0526,
- 0x0531, 0x0556,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x1e00, 0x1e00,
- 0x1e02, 0x1e02,
- 0x1e04, 0x1e04,
- 0x1e06, 0x1e06,
- 0x1e08, 0x1e08,
- 0x1e0a, 0x1e0a,
- 0x1e0c, 0x1e0c,
- 0x1e0e, 0x1e0e,
- 0x1e10, 0x1e10,
- 0x1e12, 0x1e12,
- 0x1e14, 0x1e14,
- 0x1e16, 0x1e16,
- 0x1e18, 0x1e18,
- 0x1e1a, 0x1e1a,
- 0x1e1c, 0x1e1c,
- 0x1e1e, 0x1e1e,
- 0x1e20, 0x1e20,
- 0x1e22, 0x1e22,
- 0x1e24, 0x1e24,
- 0x1e26, 0x1e26,
- 0x1e28, 0x1e28,
- 0x1e2a, 0x1e2a,
- 0x1e2c, 0x1e2c,
- 0x1e2e, 0x1e2e,
- 0x1e30, 0x1e30,
- 0x1e32, 0x1e32,
- 0x1e34, 0x1e34,
- 0x1e36, 0x1e36,
- 0x1e38, 0x1e38,
- 0x1e3a, 0x1e3a,
- 0x1e3c, 0x1e3c,
- 0x1e3e, 0x1e3e,
- 0x1e40, 0x1e40,
- 0x1e42, 0x1e42,
- 0x1e44, 0x1e44,
- 0x1e46, 0x1e46,
- 0x1e48, 0x1e48,
- 0x1e4a, 0x1e4a,
- 0x1e4c, 0x1e4c,
- 0x1e4e, 0x1e4e,
- 0x1e50, 0x1e50,
- 0x1e52, 0x1e52,
- 0x1e54, 0x1e54,
- 0x1e56, 0x1e56,
- 0x1e58, 0x1e58,
- 0x1e5a, 0x1e5a,
- 0x1e5c, 0x1e5c,
- 0x1e5e, 0x1e5e,
- 0x1e60, 0x1e60,
- 0x1e62, 0x1e62,
- 0x1e64, 0x1e64,
- 0x1e66, 0x1e66,
- 0x1e68, 0x1e68,
- 0x1e6a, 0x1e6a,
- 0x1e6c, 0x1e6c,
- 0x1e6e, 0x1e6e,
- 0x1e70, 0x1e70,
- 0x1e72, 0x1e72,
- 0x1e74, 0x1e74,
- 0x1e76, 0x1e76,
- 0x1e78, 0x1e78,
- 0x1e7a, 0x1e7a,
- 0x1e7c, 0x1e7c,
- 0x1e7e, 0x1e7e,
- 0x1e80, 0x1e80,
- 0x1e82, 0x1e82,
- 0x1e84, 0x1e84,
- 0x1e86, 0x1e86,
- 0x1e88, 0x1e88,
- 0x1e8a, 0x1e8a,
- 0x1e8c, 0x1e8c,
- 0x1e8e, 0x1e8e,
- 0x1e90, 0x1e90,
- 0x1e92, 0x1e92,
- 0x1e94, 0x1e94,
- 0x1e9e, 0x1e9e,
- 0x1ea0, 0x1ea0,
- 0x1ea2, 0x1ea2,
- 0x1ea4, 0x1ea4,
- 0x1ea6, 0x1ea6,
- 0x1ea8, 0x1ea8,
- 0x1eaa, 0x1eaa,
- 0x1eac, 0x1eac,
- 0x1eae, 0x1eae,
- 0x1eb0, 0x1eb0,
- 0x1eb2, 0x1eb2,
- 0x1eb4, 0x1eb4,
- 0x1eb6, 0x1eb6,
- 0x1eb8, 0x1eb8,
- 0x1eba, 0x1eba,
- 0x1ebc, 0x1ebc,
- 0x1ebe, 0x1ebe,
- 0x1ec0, 0x1ec0,
- 0x1ec2, 0x1ec2,
- 0x1ec4, 0x1ec4,
- 0x1ec6, 0x1ec6,
- 0x1ec8, 0x1ec8,
- 0x1eca, 0x1eca,
- 0x1ecc, 0x1ecc,
- 0x1ece, 0x1ece,
- 0x1ed0, 0x1ed0,
- 0x1ed2, 0x1ed2,
- 0x1ed4, 0x1ed4,
- 0x1ed6, 0x1ed6,
- 0x1ed8, 0x1ed8,
- 0x1eda, 0x1eda,
- 0x1edc, 0x1edc,
- 0x1ede, 0x1ede,
- 0x1ee0, 0x1ee0,
- 0x1ee2, 0x1ee2,
- 0x1ee4, 0x1ee4,
- 0x1ee6, 0x1ee6,
- 0x1ee8, 0x1ee8,
- 0x1eea, 0x1eea,
- 0x1eec, 0x1eec,
- 0x1eee, 0x1eee,
- 0x1ef0, 0x1ef0,
- 0x1ef2, 0x1ef2,
- 0x1ef4, 0x1ef4,
- 0x1ef6, 0x1ef6,
- 0x1ef8, 0x1ef8,
- 0x1efa, 0x1efa,
- 0x1efc, 0x1efc,
- 0x1efe, 0x1efe,
- 0x1f08, 0x1f0f,
- 0x1f18, 0x1f1d,
- 0x1f28, 0x1f2f,
- 0x1f38, 0x1f3f,
- 0x1f48, 0x1f4d,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f5f,
- 0x1f68, 0x1f6f,
- 0x1fb8, 0x1fbb,
- 0x1fc8, 0x1fcb,
- 0x1fd8, 0x1fdb,
- 0x1fe8, 0x1fec,
- 0x1ff8, 0x1ffb,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210b, 0x210d,
- 0x2110, 0x2112,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x2130, 0x2133,
- 0x213e, 0x213f,
- 0x2145, 0x2145,
- 0x2160, 0x216f,
- 0x2183, 0x2183,
- 0x24b6, 0x24cf,
- 0x2c00, 0x2c2e,
- 0x2c60, 0x2c60,
- 0x2c62, 0x2c64,
- 0x2c67, 0x2c67,
- 0x2c69, 0x2c69,
- 0x2c6b, 0x2c6b,
- 0x2c6d, 0x2c70,
- 0x2c72, 0x2c72,
- 0x2c75, 0x2c75,
- 0x2c7e, 0x2c80,
- 0x2c82, 0x2c82,
- 0x2c84, 0x2c84,
- 0x2c86, 0x2c86,
- 0x2c88, 0x2c88,
- 0x2c8a, 0x2c8a,
- 0x2c8c, 0x2c8c,
- 0x2c8e, 0x2c8e,
- 0x2c90, 0x2c90,
- 0x2c92, 0x2c92,
- 0x2c94, 0x2c94,
- 0x2c96, 0x2c96,
- 0x2c98, 0x2c98,
- 0x2c9a, 0x2c9a,
- 0x2c9c, 0x2c9c,
- 0x2c9e, 0x2c9e,
- 0x2ca0, 0x2ca0,
- 0x2ca2, 0x2ca2,
- 0x2ca4, 0x2ca4,
- 0x2ca6, 0x2ca6,
- 0x2ca8, 0x2ca8,
- 0x2caa, 0x2caa,
- 0x2cac, 0x2cac,
- 0x2cae, 0x2cae,
- 0x2cb0, 0x2cb0,
- 0x2cb2, 0x2cb2,
- 0x2cb4, 0x2cb4,
- 0x2cb6, 0x2cb6,
- 0x2cb8, 0x2cb8,
- 0x2cba, 0x2cba,
- 0x2cbc, 0x2cbc,
- 0x2cbe, 0x2cbe,
- 0x2cc0, 0x2cc0,
- 0x2cc2, 0x2cc2,
- 0x2cc4, 0x2cc4,
- 0x2cc6, 0x2cc6,
- 0x2cc8, 0x2cc8,
- 0x2cca, 0x2cca,
- 0x2ccc, 0x2ccc,
- 0x2cce, 0x2cce,
- 0x2cd0, 0x2cd0,
- 0x2cd2, 0x2cd2,
- 0x2cd4, 0x2cd4,
- 0x2cd6, 0x2cd6,
- 0x2cd8, 0x2cd8,
- 0x2cda, 0x2cda,
- 0x2cdc, 0x2cdc,
- 0x2cde, 0x2cde,
- 0x2ce0, 0x2ce0,
- 0x2ce2, 0x2ce2,
- 0x2ceb, 0x2ceb,
- 0x2ced, 0x2ced,
- 0x2cf2, 0x2cf2,
- 0xa640, 0xa640,
- 0xa642, 0xa642,
- 0xa644, 0xa644,
- 0xa646, 0xa646,
- 0xa648, 0xa648,
- 0xa64a, 0xa64a,
- 0xa64c, 0xa64c,
- 0xa64e, 0xa64e,
- 0xa650, 0xa650,
- 0xa652, 0xa652,
- 0xa654, 0xa654,
- 0xa656, 0xa656,
- 0xa658, 0xa658,
- 0xa65a, 0xa65a,
- 0xa65c, 0xa65c,
- 0xa65e, 0xa65e,
- 0xa660, 0xa660,
- 0xa662, 0xa662,
- 0xa664, 0xa664,
- 0xa666, 0xa666,
- 0xa668, 0xa668,
- 0xa66a, 0xa66a,
- 0xa66c, 0xa66c,
- 0xa680, 0xa680,
- 0xa682, 0xa682,
- 0xa684, 0xa684,
- 0xa686, 0xa686,
- 0xa688, 0xa688,
- 0xa68a, 0xa68a,
- 0xa68c, 0xa68c,
- 0xa68e, 0xa68e,
- 0xa690, 0xa690,
- 0xa692, 0xa692,
- 0xa694, 0xa694,
- 0xa696, 0xa696,
- 0xa722, 0xa722,
- 0xa724, 0xa724,
- 0xa726, 0xa726,
- 0xa728, 0xa728,
- 0xa72a, 0xa72a,
- 0xa72c, 0xa72c,
- 0xa72e, 0xa72e,
- 0xa732, 0xa732,
- 0xa734, 0xa734,
- 0xa736, 0xa736,
- 0xa738, 0xa738,
- 0xa73a, 0xa73a,
- 0xa73c, 0xa73c,
- 0xa73e, 0xa73e,
- 0xa740, 0xa740,
- 0xa742, 0xa742,
- 0xa744, 0xa744,
- 0xa746, 0xa746,
- 0xa748, 0xa748,
- 0xa74a, 0xa74a,
- 0xa74c, 0xa74c,
- 0xa74e, 0xa74e,
- 0xa750, 0xa750,
- 0xa752, 0xa752,
- 0xa754, 0xa754,
- 0xa756, 0xa756,
- 0xa758, 0xa758,
- 0xa75a, 0xa75a,
- 0xa75c, 0xa75c,
- 0xa75e, 0xa75e,
- 0xa760, 0xa760,
- 0xa762, 0xa762,
- 0xa764, 0xa764,
- 0xa766, 0xa766,
- 0xa768, 0xa768,
- 0xa76a, 0xa76a,
- 0xa76c, 0xa76c,
- 0xa76e, 0xa76e,
- 0xa779, 0xa779,
- 0xa77b, 0xa77b,
- 0xa77d, 0xa77e,
- 0xa780, 0xa780,
- 0xa782, 0xa782,
- 0xa784, 0xa784,
- 0xa786, 0xa786,
- 0xa78b, 0xa78b,
- 0xa78d, 0xa78d,
- 0xa790, 0xa790,
- 0xa792, 0xa792,
- 0xa7a0, 0xa7a0,
- 0xa7a2, 0xa7a2,
- 0xa7a4, 0xa7a4,
- 0xa7a6, 0xa7a6,
- 0xa7a8, 0xa7a8,
- 0xa7aa, 0xa7aa,
- 0xff21, 0xff3a,
- 0x10400, 0x10427,
- 0x1d400, 0x1d419,
- 0x1d434, 0x1d44d,
- 0x1d468, 0x1d481,
- 0x1d49c, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b5,
- 0x1d4d0, 0x1d4e9,
- 0x1d504, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d538, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d56c, 0x1d585,
- 0x1d5a0, 0x1d5b9,
- 0x1d5d4, 0x1d5ed,
- 0x1d608, 0x1d621,
- 0x1d63c, 0x1d655,
- 0x1d670, 0x1d689,
- 0x1d6a8, 0x1d6c0,
- 0x1d6e2, 0x1d6fa,
- 0x1d71c, 0x1d734,
- 0x1d756, 0x1d76e,
- 0x1d790, 0x1d7a8,
- 0x1d7ca, 0x1d7ca,
-}; /* CR_Upper */
-
-/* 'XDigit': [[:XDigit:]] */
-static const OnigCodePoint CR_XDigit[] = {
- 3,
- 0x0030, 0x0039,
- 0x0041, 0x0046,
- 0x0061, 0x0066,
-}; /* CR_XDigit */
-
-/* 'Word': [[:Word:]] */
-static const OnigCodePoint CR_Word[] = {
- 564,
- 0x0030, 0x0039,
- 0x0041, 0x005a,
- 0x005f, 0x005f,
- 0x0061, 0x007a,
- 0x00aa, 0x00aa,
- 0x00b5, 0x00b5,
- 0x00ba, 0x00ba,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00f6,
- 0x00f8, 0x02c1,
- 0x02c6, 0x02d1,
- 0x02e0, 0x02e4,
- 0x02ec, 0x02ec,
- 0x02ee, 0x02ee,
- 0x0300, 0x0374,
- 0x0376, 0x0377,
- 0x037a, 0x037d,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x03f5,
- 0x03f7, 0x0481,
- 0x0483, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x0559,
- 0x0561, 0x0587,
- 0x0591, 0x05bd,
- 0x05bf, 0x05bf,
- 0x05c1, 0x05c2,
- 0x05c4, 0x05c5,
- 0x05c7, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f2,
- 0x0610, 0x061a,
- 0x0620, 0x0669,
- 0x066e, 0x06d3,
- 0x06d5, 0x06dc,
- 0x06df, 0x06e8,
- 0x06ea, 0x06fc,
- 0x06ff, 0x06ff,
- 0x0710, 0x074a,
- 0x074d, 0x07b1,
- 0x07c0, 0x07f5,
- 0x07fa, 0x07fa,
- 0x0800, 0x082d,
- 0x0840, 0x085b,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
- 0x0900, 0x0963,
- 0x0966, 0x096f,
- 0x0971, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bc, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09e6, 0x09f1,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3c, 0x0a3c,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4d,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a66, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abc, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acd,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0ae6, 0x0aef,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3c, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4d,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b66, 0x0b6f,
- 0x0b71, 0x0b71,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcd,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0be6, 0x0bef,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4d,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c66, 0x0c6f,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbc, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccd,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0ce6, 0x0cef,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d66, 0x0d6f,
- 0x0d7a, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dca, 0x0dca,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df3,
- 0x0e01, 0x0e3a,
- 0x0e40, 0x0e4e,
- 0x0e50, 0x0e59,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ec8, 0x0ecd,
- 0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f00,
- 0x0f18, 0x0f19,
- 0x0f20, 0x0f29,
- 0x0f35, 0x0f35,
- 0x0f37, 0x0f37,
- 0x0f39, 0x0f39,
- 0x0f3e, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f84,
- 0x0f86, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x0fc6, 0x0fc6,
- 0x1000, 0x1049,
- 0x1050, 0x109d,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x10fa,
- 0x10fc, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135d, 0x135f,
- 0x1380, 0x138f,
- 0x13a0, 0x13f4,
- 0x1401, 0x166c,
- 0x166f, 0x167f,
- 0x1681, 0x169a,
- 0x16a0, 0x16ea,
- 0x16ee, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1714,
- 0x1720, 0x1734,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17d3,
- 0x17d7, 0x17d7,
- 0x17dc, 0x17dd,
- 0x17e0, 0x17e9,
- 0x180b, 0x180d,
- 0x1810, 0x1819,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x193b,
- 0x1946, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x19d0, 0x19d9,
- 0x1a00, 0x1a1b,
- 0x1a20, 0x1a5e,
- 0x1a60, 0x1a7c,
- 0x1a7f, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1aa7, 0x1aa7,
- 0x1b00, 0x1b4b,
- 0x1b50, 0x1b59,
- 0x1b6b, 0x1b73,
- 0x1b80, 0x1bf3,
- 0x1c00, 0x1c37,
- 0x1c40, 0x1c49,
- 0x1c4d, 0x1c7d,
- 0x1cd0, 0x1cd2,
- 0x1cd4, 0x1cf6,
- 0x1d00, 0x1de6,
- 0x1dfc, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fbc,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fcc,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fe0, 0x1fec,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffc,
- 0x203f, 0x2040,
- 0x2054, 0x2054,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
- 0x20d0, 0x20f0,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210a, 0x2113,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x212f, 0x2139,
- 0x213c, 0x213f,
- 0x2145, 0x2149,
- 0x214e, 0x214e,
- 0x2160, 0x2188,
- 0x24b6, 0x24e9,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2ce4,
- 0x2ceb, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d6f,
- 0x2d7f, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2dff,
- 0x2e2f, 0x2e2f,
- 0x3005, 0x3007,
- 0x3021, 0x302f,
- 0x3031, 0x3035,
- 0x3038, 0x303c,
- 0x3041, 0x3096,
- 0x3099, 0x309a,
- 0x309d, 0x309f,
- 0x30a1, 0x30fa,
- 0x30fc, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x31a0, 0x31ba,
- 0x31f0, 0x31ff,
- 0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa4d0, 0xa4fd,
- 0xa500, 0xa60c,
- 0xa610, 0xa62b,
- 0xa640, 0xa672,
- 0xa674, 0xa67d,
- 0xa67f, 0xa697,
- 0xa69f, 0xa6f1,
- 0xa717, 0xa71f,
- 0xa722, 0xa788,
- 0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa827,
- 0xa840, 0xa873,
- 0xa880, 0xa8c4,
- 0xa8d0, 0xa8d9,
- 0xa8e0, 0xa8f7,
- 0xa8fb, 0xa8fb,
- 0xa900, 0xa92d,
- 0xa930, 0xa953,
- 0xa960, 0xa97c,
- 0xa980, 0xa9c0,
- 0xa9cf, 0xa9d9,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa50, 0xaa59,
- 0xaa60, 0xaa76,
- 0xaa7a, 0xaa7b,
- 0xaa80, 0xaac2,
- 0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf6,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabea,
- 0xabec, 0xabed,
- 0xabf0, 0xabf9,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb28,
- 0xfb2a, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbb1,
- 0xfbd3, 0xfd3d,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfb,
- 0xfe00, 0xfe0f,
- 0xfe20, 0xfe26,
- 0xfe33, 0xfe34,
- 0xfe4d, 0xfe4f,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xff10, 0xff19,
- 0xff21, 0xff3a,
- 0xff3f, 0xff3f,
- 0xff41, 0xff5a,
- 0xff66, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10140, 0x10174,
- 0x101fd, 0x101fd,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x103a0, 0x103c3,
- 0x103c8, 0x103cf,
- 0x103d1, 0x103d5,
- 0x10400, 0x1049d,
- 0x104a0, 0x104a9,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10900, 0x10915,
- 0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a38, 0x10a3a,
- 0x10a3f, 0x10a3f,
- 0x10a60, 0x10a7c,
- 0x10b00, 0x10b35,
- 0x10b40, 0x10b55,
- 0x10b60, 0x10b72,
- 0x10c00, 0x10c48,
- 0x11000, 0x11046,
- 0x11066, 0x1106f,
- 0x11080, 0x110ba,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x1113f,
- 0x11180, 0x111c4,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d165, 0x1d169,
- 0x1d16d, 0x1d172,
- 0x1d17b, 0x1d182,
- 0x1d185, 0x1d18b,
- 0x1d1aa, 0x1d1ad,
- 0x1d242, 0x1d244,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d6c0,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6fa,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d734,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d76e,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d7a8,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7cb,
- 0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
- 0xe0100, 0xe01ef,
-}; /* CR_Word */
-
-/* 'Alnum': [[:Alnum:]] */
-static const OnigCodePoint CR_Alnum[] = {
- 566,
- 0x0030, 0x0039,
- 0x0041, 0x005a,
- 0x0061, 0x007a,
- 0x00aa, 0x00aa,
- 0x00b5, 0x00b5,
- 0x00ba, 0x00ba,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00f6,
- 0x00f8, 0x02c1,
- 0x02c6, 0x02d1,
- 0x02e0, 0x02e4,
- 0x02ec, 0x02ec,
- 0x02ee, 0x02ee,
- 0x0345, 0x0345,
- 0x0370, 0x0374,
- 0x0376, 0x0377,
- 0x037a, 0x037d,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x03f5,
- 0x03f7, 0x0481,
- 0x048a, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x0559,
- 0x0561, 0x0587,
- 0x05b0, 0x05bd,
- 0x05bf, 0x05bf,
- 0x05c1, 0x05c2,
- 0x05c4, 0x05c5,
- 0x05c7, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f2,
- 0x0610, 0x061a,
- 0x0620, 0x0657,
- 0x0659, 0x0669,
- 0x066e, 0x06d3,
- 0x06d5, 0x06dc,
- 0x06e1, 0x06e8,
- 0x06ed, 0x06fc,
- 0x06ff, 0x06ff,
- 0x0710, 0x073f,
- 0x074d, 0x07b1,
- 0x07c0, 0x07ea,
- 0x07f4, 0x07f5,
- 0x07fa, 0x07fa,
- 0x0800, 0x0817,
- 0x081a, 0x082c,
- 0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08e9,
- 0x08f0, 0x08fe,
- 0x0900, 0x093b,
- 0x093d, 0x094c,
- 0x094e, 0x0950,
- 0x0955, 0x0963,
- 0x0966, 0x096f,
- 0x0971, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bd, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09cc,
- 0x09ce, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09e6, 0x09f1,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4c,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a66, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abd, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acc,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0ae6, 0x0aef,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3d, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4c,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b66, 0x0b6f,
- 0x0b71, 0x0b71,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcc,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0be6, 0x0bef,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4c,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c66, 0x0c6f,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbd, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccc,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0ce6, 0x0cef,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4c,
- 0x0d4e, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d66, 0x0d6f,
- 0x0d7a, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df3,
- 0x0e01, 0x0e3a,
- 0x0e40, 0x0e46,
- 0x0e4d, 0x0e4d,
- 0x0e50, 0x0e59,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ecd, 0x0ecd,
- 0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f00,
- 0x0f20, 0x0f29,
- 0x0f40, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f81,
- 0x0f88, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x1000, 0x1036,
- 0x1038, 0x1038,
- 0x103b, 0x1049,
- 0x1050, 0x1062,
- 0x1065, 0x1068,
- 0x106e, 0x1086,
- 0x108e, 0x108e,
- 0x1090, 0x1099,
- 0x109c, 0x109d,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x10fa,
- 0x10fc, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135f, 0x135f,
- 0x1380, 0x138f,
- 0x13a0, 0x13f4,
- 0x1401, 0x166c,
- 0x166f, 0x167f,
- 0x1681, 0x169a,
- 0x16a0, 0x16ea,
- 0x16ee, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1713,
- 0x1720, 0x1733,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17b3,
- 0x17b6, 0x17c8,
- 0x17d7, 0x17d7,
- 0x17dc, 0x17dc,
- 0x17e0, 0x17e9,
- 0x1810, 0x1819,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x1938,
- 0x1946, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x19d0, 0x19d9,
- 0x1a00, 0x1a1b,
- 0x1a20, 0x1a5e,
- 0x1a61, 0x1a74,
- 0x1a80, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1aa7, 0x1aa7,
- 0x1b00, 0x1b33,
- 0x1b35, 0x1b43,
- 0x1b45, 0x1b4b,
- 0x1b50, 0x1b59,
- 0x1b80, 0x1ba9,
- 0x1bac, 0x1be5,
- 0x1be7, 0x1bf1,
- 0x1c00, 0x1c35,
- 0x1c40, 0x1c49,
- 0x1c4d, 0x1c7d,
- 0x1ce9, 0x1cec,
- 0x1cee, 0x1cf3,
- 0x1cf5, 0x1cf6,
- 0x1d00, 0x1dbf,
- 0x1e00, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fbc,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fcc,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fe0, 0x1fec,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffc,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210a, 0x2113,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x212f, 0x2139,
- 0x213c, 0x213f,
- 0x2145, 0x2149,
- 0x214e, 0x214e,
- 0x2160, 0x2188,
- 0x24b6, 0x24e9,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2ce4,
- 0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d6f,
- 0x2d80, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2dff,
- 0x2e2f, 0x2e2f,
- 0x3005, 0x3007,
- 0x3021, 0x3029,
- 0x3031, 0x3035,
- 0x3038, 0x303c,
- 0x3041, 0x3096,
- 0x309d, 0x309f,
- 0x30a1, 0x30fa,
- 0x30fc, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x31a0, 0x31ba,
- 0x31f0, 0x31ff,
- 0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa4d0, 0xa4fd,
- 0xa500, 0xa60c,
- 0xa610, 0xa62b,
- 0xa640, 0xa66e,
- 0xa674, 0xa67b,
- 0xa67f, 0xa697,
- 0xa69f, 0xa6ef,
- 0xa717, 0xa71f,
- 0xa722, 0xa788,
- 0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
- 0xa803, 0xa805,
- 0xa807, 0xa80a,
- 0xa80c, 0xa827,
- 0xa840, 0xa873,
- 0xa880, 0xa8c3,
- 0xa8d0, 0xa8d9,
- 0xa8f2, 0xa8f7,
- 0xa8fb, 0xa8fb,
- 0xa900, 0xa92a,
- 0xa930, 0xa952,
- 0xa960, 0xa97c,
- 0xa980, 0xa9b2,
- 0xa9b4, 0xa9bf,
- 0xa9cf, 0xa9d9,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa50, 0xaa59,
- 0xaa60, 0xaa76,
- 0xaa7a, 0xaa7a,
- 0xaa80, 0xaabe,
- 0xaac0, 0xaac0,
- 0xaac2, 0xaac2,
- 0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf5,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabea,
- 0xabf0, 0xabf9,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb28,
- 0xfb2a, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbb1,
- 0xfbd3, 0xfd3d,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfb,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xff10, 0xff19,
- 0xff21, 0xff3a,
- 0xff41, 0xff5a,
- 0xff66, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10140, 0x10174,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x103a0, 0x103c3,
- 0x103c8, 0x103cf,
- 0x103d1, 0x103d5,
- 0x10400, 0x1049d,
- 0x104a0, 0x104a9,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10900, 0x10915,
- 0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a60, 0x10a7c,
- 0x10b00, 0x10b35,
- 0x10b40, 0x10b55,
- 0x10b60, 0x10b72,
- 0x10c00, 0x10c48,
- 0x11000, 0x11045,
- 0x11066, 0x1106f,
- 0x11082, 0x110b8,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11132,
- 0x11136, 0x1113f,
- 0x11180, 0x111bf,
- 0x111c1, 0x111c4,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b5,
- 0x116c0, 0x116c9,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f93, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d6c0,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6fa,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d734,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d76e,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d7a8,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7cb,
- 0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
-}; /* CR_Alnum */
-
-/* 'ASCII': [[:ASCII:]] */
-static const OnigCodePoint CR_ASCII[] = {
- 1,
- 0x0000, 0x007f,
-}; /* CR_ASCII */
-
+#ifdef USE_UNICODE_PROPERTIES
#ifdef USE_UNICODE_PROPERTIES
/* 'Any': - */
static const OnigCodePoint CR_Any[] = {
@@ -4312,7 +46,7 @@ static const OnigCodePoint CR_Any[] = {
/* 'Assigned': - */
static const OnigCodePoint CR_Assigned[] = {
- 539,
+ 501,
0x0000, 0x0377,
0x037a, 0x037e,
0x0384, 0x038a,
@@ -4323,11 +57,10 @@ static const OnigCodePoint CR_Assigned[] = {
0x0559, 0x055f,
0x0561, 0x0587,
0x0589, 0x058a,
- 0x058f, 0x058f,
0x0591, 0x05c7,
0x05d0, 0x05ea,
0x05f0, 0x05f4,
- 0x0600, 0x0604,
+ 0x0600, 0x0603,
0x0606, 0x061b,
0x061e, 0x070d,
0x070f, 0x074a,
@@ -4337,9 +70,6 @@ static const OnigCodePoint CR_Assigned[] = {
0x0830, 0x083e,
0x0840, 0x085b,
0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0x0900, 0x0977,
0x0979, 0x097f,
0x0981, 0x0983,
@@ -4384,7 +114,8 @@ static const OnigCodePoint CR_Assigned[] = {
0x0acb, 0x0acd,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -4484,7 +215,7 @@ static const OnigCodePoint CR_Assigned[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f47,
0x0f49, 0x0f6c,
0x0f71, 0x0f97,
@@ -4492,9 +223,8 @@ static const OnigCodePoint CR_Assigned[] = {
0x0fbe, 0x0fcc,
0x0fce, 0x0fda,
0x1000, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
+ 0x10d0, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -4547,12 +277,13 @@ static const OnigCodePoint CR_Assigned[] = {
0x1aa0, 0x1aad,
0x1b00, 0x1b4b,
0x1b50, 0x1b7c,
- 0x1b80, 0x1bf3,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
0x1bfc, 0x1c37,
0x1c3b, 0x1c49,
0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd0, 0x1cf6,
+ 0x1cd0, 0x1cf2,
0x1d00, 0x1de6,
0x1dfc, 0x1f15,
0x1f18, 0x1f1d,
@@ -4581,15 +312,15 @@ static const OnigCodePoint CR_Assigned[] = {
0x2400, 0x2426,
0x2440, 0x244a,
0x2460, 0x26ff,
- 0x2701, 0x2b4c,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x2b4c,
0x2b50, 0x2b59,
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
- 0x2c60, 0x2cf3,
+ 0x2c60, 0x2cf1,
0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d70,
0x2d7f, 0x2d96,
0x2da0, 0x2da6,
@@ -4600,7 +331,7 @@ static const OnigCodePoint CR_Assigned[] = {
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
- 0x2de0, 0x2e3b,
+ 0x2de0, 0x2e31,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -4615,16 +346,17 @@ static const OnigCodePoint CR_Assigned[] = {
0x31f0, 0x321e,
0x3220, 0x32fe,
0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
+ 0x4dc0, 0x9fcb,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
- 0xa640, 0xa697,
- 0xa69f, 0xa6f7,
+ 0xa640, 0xa673,
+ 0xa67c, 0xa697,
+ 0xa6a0, 0xa6f7,
0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa82b,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
0xa880, 0xa8c4,
@@ -4640,7 +372,7 @@ static const OnigCodePoint CR_Assigned[] = {
0xaa50, 0xaa59,
0xaa5c, 0xaa7b,
0xaa80, 0xaac2,
- 0xaadb, 0xaaf6,
+ 0xaadb, 0xaadf,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -4651,7 +383,8 @@ static const OnigCodePoint CR_Assigned[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xd800, 0xfa6d,
+ 0xd800, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -4713,8 +446,6 @@ static const OnigCodePoint CR_Assigned[] = {
0x10900, 0x1091b,
0x1091f, 0x10939,
0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a03,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
@@ -4733,22 +464,11 @@ static const OnigCodePoint CR_Assigned[] = {
0x11000, 0x1104d,
0x11052, 0x1106f,
0x11080, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x12470, 0x12473,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
0x1b000, 0x1b001,
0x1d000, 0x1d0f5,
0x1d100, 0x1d126,
@@ -4777,40 +497,6 @@ static const OnigCodePoint CR_Assigned[] = {
0x1d552, 0x1d6a5,
0x1d6a8, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
@@ -4819,7 +505,7 @@ static const OnigCodePoint CR_Assigned[] = {
0x1f0d1, 0x1f0df,
0x1f100, 0x1f10a,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -4837,9 +523,19 @@ static const OnigCodePoint CR_Assigned[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -4856,560 +552,44 @@ static const OnigCodePoint CR_Assigned[] = {
/* 'C': Major Category */
static const OnigCodePoint CR_C[] = {
- 541,
+ 20,
0x0000, 0x001f,
0x007f, 0x009f,
0x00ad, 0x00ad,
- 0x0378, 0x0379,
- 0x037f, 0x0383,
- 0x038b, 0x038b,
- 0x038d, 0x038d,
- 0x03a2, 0x03a2,
- 0x0528, 0x0530,
- 0x0557, 0x0558,
- 0x0560, 0x0560,
- 0x0588, 0x0588,
- 0x058b, 0x058e,
- 0x0590, 0x0590,
- 0x05c8, 0x05cf,
- 0x05eb, 0x05ef,
- 0x05f5, 0x0605,
- 0x061c, 0x061d,
+ 0x0600, 0x0603,
0x06dd, 0x06dd,
- 0x070e, 0x070f,
- 0x074b, 0x074c,
- 0x07b2, 0x07bf,
- 0x07fb, 0x07ff,
- 0x082e, 0x082f,
- 0x083f, 0x083f,
- 0x085c, 0x085d,
- 0x085f, 0x089f,
- 0x08a1, 0x08a1,
- 0x08ad, 0x08e3,
- 0x08ff, 0x08ff,
- 0x0978, 0x0978,
- 0x0980, 0x0980,
- 0x0984, 0x0984,
- 0x098d, 0x098e,
- 0x0991, 0x0992,
- 0x09a9, 0x09a9,
- 0x09b1, 0x09b1,
- 0x09b3, 0x09b5,
- 0x09ba, 0x09bb,
- 0x09c5, 0x09c6,
- 0x09c9, 0x09ca,
- 0x09cf, 0x09d6,
- 0x09d8, 0x09db,
- 0x09de, 0x09de,
- 0x09e4, 0x09e5,
- 0x09fc, 0x0a00,
- 0x0a04, 0x0a04,
- 0x0a0b, 0x0a0e,
- 0x0a11, 0x0a12,
- 0x0a29, 0x0a29,
- 0x0a31, 0x0a31,
- 0x0a34, 0x0a34,
- 0x0a37, 0x0a37,
- 0x0a3a, 0x0a3b,
- 0x0a3d, 0x0a3d,
- 0x0a43, 0x0a46,
- 0x0a49, 0x0a4a,
- 0x0a4e, 0x0a50,
- 0x0a52, 0x0a58,
- 0x0a5d, 0x0a5d,
- 0x0a5f, 0x0a65,
- 0x0a76, 0x0a80,
- 0x0a84, 0x0a84,
- 0x0a8e, 0x0a8e,
- 0x0a92, 0x0a92,
- 0x0aa9, 0x0aa9,
- 0x0ab1, 0x0ab1,
- 0x0ab4, 0x0ab4,
- 0x0aba, 0x0abb,
- 0x0ac6, 0x0ac6,
- 0x0aca, 0x0aca,
- 0x0ace, 0x0acf,
- 0x0ad1, 0x0adf,
- 0x0ae4, 0x0ae5,
- 0x0af2, 0x0b00,
- 0x0b04, 0x0b04,
- 0x0b0d, 0x0b0e,
- 0x0b11, 0x0b12,
- 0x0b29, 0x0b29,
- 0x0b31, 0x0b31,
- 0x0b34, 0x0b34,
- 0x0b3a, 0x0b3b,
- 0x0b45, 0x0b46,
- 0x0b49, 0x0b4a,
- 0x0b4e, 0x0b55,
- 0x0b58, 0x0b5b,
- 0x0b5e, 0x0b5e,
- 0x0b64, 0x0b65,
- 0x0b78, 0x0b81,
- 0x0b84, 0x0b84,
- 0x0b8b, 0x0b8d,
- 0x0b91, 0x0b91,
- 0x0b96, 0x0b98,
- 0x0b9b, 0x0b9b,
- 0x0b9d, 0x0b9d,
- 0x0ba0, 0x0ba2,
- 0x0ba5, 0x0ba7,
- 0x0bab, 0x0bad,
- 0x0bba, 0x0bbd,
- 0x0bc3, 0x0bc5,
- 0x0bc9, 0x0bc9,
- 0x0bce, 0x0bcf,
- 0x0bd1, 0x0bd6,
- 0x0bd8, 0x0be5,
- 0x0bfb, 0x0c00,
- 0x0c04, 0x0c04,
- 0x0c0d, 0x0c0d,
- 0x0c11, 0x0c11,
- 0x0c29, 0x0c29,
- 0x0c34, 0x0c34,
- 0x0c3a, 0x0c3c,
- 0x0c45, 0x0c45,
- 0x0c49, 0x0c49,
- 0x0c4e, 0x0c54,
- 0x0c57, 0x0c57,
- 0x0c5a, 0x0c5f,
- 0x0c64, 0x0c65,
- 0x0c70, 0x0c77,
- 0x0c80, 0x0c81,
- 0x0c84, 0x0c84,
- 0x0c8d, 0x0c8d,
- 0x0c91, 0x0c91,
- 0x0ca9, 0x0ca9,
- 0x0cb4, 0x0cb4,
- 0x0cba, 0x0cbb,
- 0x0cc5, 0x0cc5,
- 0x0cc9, 0x0cc9,
- 0x0cce, 0x0cd4,
- 0x0cd7, 0x0cdd,
- 0x0cdf, 0x0cdf,
- 0x0ce4, 0x0ce5,
- 0x0cf0, 0x0cf0,
- 0x0cf3, 0x0d01,
- 0x0d04, 0x0d04,
- 0x0d0d, 0x0d0d,
- 0x0d11, 0x0d11,
- 0x0d3b, 0x0d3c,
- 0x0d45, 0x0d45,
- 0x0d49, 0x0d49,
- 0x0d4f, 0x0d56,
- 0x0d58, 0x0d5f,
- 0x0d64, 0x0d65,
- 0x0d76, 0x0d78,
- 0x0d80, 0x0d81,
- 0x0d84, 0x0d84,
- 0x0d97, 0x0d99,
- 0x0db2, 0x0db2,
- 0x0dbc, 0x0dbc,
- 0x0dbe, 0x0dbf,
- 0x0dc7, 0x0dc9,
- 0x0dcb, 0x0dce,
- 0x0dd5, 0x0dd5,
- 0x0dd7, 0x0dd7,
- 0x0de0, 0x0df1,
- 0x0df5, 0x0e00,
- 0x0e3b, 0x0e3e,
- 0x0e5c, 0x0e80,
- 0x0e83, 0x0e83,
- 0x0e85, 0x0e86,
- 0x0e89, 0x0e89,
- 0x0e8b, 0x0e8c,
- 0x0e8e, 0x0e93,
- 0x0e98, 0x0e98,
- 0x0ea0, 0x0ea0,
- 0x0ea4, 0x0ea4,
- 0x0ea6, 0x0ea6,
- 0x0ea8, 0x0ea9,
- 0x0eac, 0x0eac,
- 0x0eba, 0x0eba,
- 0x0ebe, 0x0ebf,
- 0x0ec5, 0x0ec5,
- 0x0ec7, 0x0ec7,
- 0x0ece, 0x0ecf,
- 0x0eda, 0x0edb,
- 0x0ee0, 0x0eff,
- 0x0f48, 0x0f48,
- 0x0f6d, 0x0f70,
- 0x0f98, 0x0f98,
- 0x0fbd, 0x0fbd,
- 0x0fcd, 0x0fcd,
- 0x0fdb, 0x0fff,
- 0x10c6, 0x10c6,
- 0x10c8, 0x10cc,
- 0x10ce, 0x10cf,
- 0x1249, 0x1249,
- 0x124e, 0x124f,
- 0x1257, 0x1257,
- 0x1259, 0x1259,
- 0x125e, 0x125f,
- 0x1289, 0x1289,
- 0x128e, 0x128f,
- 0x12b1, 0x12b1,
- 0x12b6, 0x12b7,
- 0x12bf, 0x12bf,
- 0x12c1, 0x12c1,
- 0x12c6, 0x12c7,
- 0x12d7, 0x12d7,
- 0x1311, 0x1311,
- 0x1316, 0x1317,
- 0x135b, 0x135c,
- 0x137d, 0x137f,
- 0x139a, 0x139f,
- 0x13f5, 0x13ff,
- 0x169d, 0x169f,
- 0x16f1, 0x16ff,
- 0x170d, 0x170d,
- 0x1715, 0x171f,
- 0x1737, 0x173f,
- 0x1754, 0x175f,
- 0x176d, 0x176d,
- 0x1771, 0x1771,
- 0x1774, 0x177f,
- 0x17de, 0x17df,
- 0x17ea, 0x17ef,
- 0x17fa, 0x17ff,
- 0x180f, 0x180f,
- 0x181a, 0x181f,
- 0x1878, 0x187f,
- 0x18ab, 0x18af,
- 0x18f6, 0x18ff,
- 0x191d, 0x191f,
- 0x192c, 0x192f,
- 0x193c, 0x193f,
- 0x1941, 0x1943,
- 0x196e, 0x196f,
- 0x1975, 0x197f,
- 0x19ac, 0x19af,
- 0x19ca, 0x19cf,
- 0x19db, 0x19dd,
- 0x1a1c, 0x1a1d,
- 0x1a5f, 0x1a5f,
- 0x1a7d, 0x1a7e,
- 0x1a8a, 0x1a8f,
- 0x1a9a, 0x1a9f,
- 0x1aae, 0x1aff,
- 0x1b4c, 0x1b4f,
- 0x1b7d, 0x1b7f,
- 0x1bf4, 0x1bfb,
- 0x1c38, 0x1c3a,
- 0x1c4a, 0x1c4c,
- 0x1c80, 0x1cbf,
- 0x1cc8, 0x1ccf,
- 0x1cf7, 0x1cff,
- 0x1de7, 0x1dfb,
- 0x1f16, 0x1f17,
- 0x1f1e, 0x1f1f,
- 0x1f46, 0x1f47,
- 0x1f4e, 0x1f4f,
- 0x1f58, 0x1f58,
- 0x1f5a, 0x1f5a,
- 0x1f5c, 0x1f5c,
- 0x1f5e, 0x1f5e,
- 0x1f7e, 0x1f7f,
- 0x1fb5, 0x1fb5,
- 0x1fc5, 0x1fc5,
- 0x1fd4, 0x1fd5,
- 0x1fdc, 0x1fdc,
- 0x1ff0, 0x1ff1,
- 0x1ff5, 0x1ff5,
- 0x1fff, 0x1fff,
+ 0x070f, 0x070f,
+ 0x17b4, 0x17b5,
0x200b, 0x200f,
0x202a, 0x202e,
- 0x2060, 0x206f,
- 0x2072, 0x2073,
- 0x208f, 0x208f,
- 0x209d, 0x209f,
- 0x20ba, 0x20cf,
- 0x20f1, 0x20ff,
- 0x218a, 0x218f,
- 0x23f4, 0x23ff,
- 0x2427, 0x243f,
- 0x244b, 0x245f,
- 0x2700, 0x2700,
- 0x2b4d, 0x2b4f,
- 0x2b5a, 0x2bff,
- 0x2c2f, 0x2c2f,
- 0x2c5f, 0x2c5f,
- 0x2cf4, 0x2cf8,
- 0x2d26, 0x2d26,
- 0x2d28, 0x2d2c,
- 0x2d2e, 0x2d2f,
- 0x2d68, 0x2d6e,
- 0x2d71, 0x2d7e,
- 0x2d97, 0x2d9f,
- 0x2da7, 0x2da7,
- 0x2daf, 0x2daf,
- 0x2db7, 0x2db7,
- 0x2dbf, 0x2dbf,
- 0x2dc7, 0x2dc7,
- 0x2dcf, 0x2dcf,
- 0x2dd7, 0x2dd7,
- 0x2ddf, 0x2ddf,
- 0x2e3c, 0x2e7f,
- 0x2e9a, 0x2e9a,
- 0x2ef4, 0x2eff,
- 0x2fd6, 0x2fef,
- 0x2ffc, 0x2fff,
- 0x3040, 0x3040,
- 0x3097, 0x3098,
- 0x3100, 0x3104,
- 0x312e, 0x3130,
- 0x318f, 0x318f,
- 0x31bb, 0x31bf,
- 0x31e4, 0x31ef,
- 0x321f, 0x321f,
- 0x32ff, 0x32ff,
- 0x4db6, 0x4dbf,
- 0x9fcd, 0x9fff,
- 0xa48d, 0xa48f,
- 0xa4c7, 0xa4cf,
- 0xa62c, 0xa63f,
- 0xa698, 0xa69e,
- 0xa6f8, 0xa6ff,
- 0xa78f, 0xa78f,
- 0xa794, 0xa79f,
- 0xa7ab, 0xa7f7,
- 0xa82c, 0xa82f,
- 0xa83a, 0xa83f,
- 0xa878, 0xa87f,
- 0xa8c5, 0xa8cd,
- 0xa8da, 0xa8df,
- 0xa8fc, 0xa8ff,
- 0xa954, 0xa95e,
- 0xa97d, 0xa97f,
- 0xa9ce, 0xa9ce,
- 0xa9da, 0xa9dd,
- 0xa9e0, 0xa9ff,
- 0xaa37, 0xaa3f,
- 0xaa4e, 0xaa4f,
- 0xaa5a, 0xaa5b,
- 0xaa7c, 0xaa7f,
- 0xaac3, 0xaada,
- 0xaaf7, 0xab00,
- 0xab07, 0xab08,
- 0xab0f, 0xab10,
- 0xab17, 0xab1f,
- 0xab27, 0xab27,
- 0xab2f, 0xabbf,
- 0xabee, 0xabef,
- 0xabfa, 0xabff,
- 0xd7a4, 0xd7af,
- 0xd7c7, 0xd7ca,
- 0xd7fc, 0xf8ff,
- 0xfa6e, 0xfa6f,
- 0xfada, 0xfaff,
- 0xfb07, 0xfb12,
- 0xfb18, 0xfb1c,
- 0xfb37, 0xfb37,
- 0xfb3d, 0xfb3d,
- 0xfb3f, 0xfb3f,
- 0xfb42, 0xfb42,
- 0xfb45, 0xfb45,
- 0xfbc2, 0xfbd2,
- 0xfd40, 0xfd4f,
- 0xfd90, 0xfd91,
- 0xfdc8, 0xfdef,
- 0xfdfe, 0xfdff,
- 0xfe1a, 0xfe1f,
- 0xfe27, 0xfe2f,
- 0xfe53, 0xfe53,
- 0xfe67, 0xfe67,
- 0xfe6c, 0xfe6f,
- 0xfe75, 0xfe75,
- 0xfefd, 0xff00,
- 0xffbf, 0xffc1,
- 0xffc8, 0xffc9,
- 0xffd0, 0xffd1,
- 0xffd8, 0xffd9,
- 0xffdd, 0xffdf,
- 0xffe7, 0xffe7,
- 0xffef, 0xfffb,
- 0xfffe, 0xffff,
- 0x1000c, 0x1000c,
- 0x10027, 0x10027,
- 0x1003b, 0x1003b,
- 0x1003e, 0x1003e,
- 0x1004e, 0x1004f,
- 0x1005e, 0x1007f,
- 0x100fb, 0x100ff,
- 0x10103, 0x10106,
- 0x10134, 0x10136,
- 0x1018b, 0x1018f,
- 0x1019c, 0x101cf,
- 0x101fe, 0x1027f,
- 0x1029d, 0x1029f,
- 0x102d1, 0x102ff,
- 0x1031f, 0x1031f,
- 0x10324, 0x1032f,
- 0x1034b, 0x1037f,
- 0x1039e, 0x1039e,
- 0x103c4, 0x103c7,
- 0x103d6, 0x103ff,
- 0x1049e, 0x1049f,
- 0x104aa, 0x107ff,
- 0x10806, 0x10807,
- 0x10809, 0x10809,
- 0x10836, 0x10836,
- 0x10839, 0x1083b,
- 0x1083d, 0x1083e,
- 0x10856, 0x10856,
- 0x10860, 0x108ff,
- 0x1091c, 0x1091e,
- 0x1093a, 0x1093e,
- 0x10940, 0x1097f,
- 0x109b8, 0x109bd,
- 0x109c0, 0x109ff,
- 0x10a04, 0x10a04,
- 0x10a07, 0x10a0b,
- 0x10a14, 0x10a14,
- 0x10a18, 0x10a18,
- 0x10a34, 0x10a37,
- 0x10a3b, 0x10a3e,
- 0x10a48, 0x10a4f,
- 0x10a59, 0x10a5f,
- 0x10a80, 0x10aff,
- 0x10b36, 0x10b38,
- 0x10b56, 0x10b57,
- 0x10b73, 0x10b77,
- 0x10b80, 0x10bff,
- 0x10c49, 0x10e5f,
- 0x10e7f, 0x10fff,
- 0x1104e, 0x11051,
- 0x11070, 0x1107f,
+ 0x2060, 0x2064,
+ 0x206a, 0x206f,
+ 0xd800, 0xf8ff,
+ 0xfeff, 0xfeff,
+ 0xfff9, 0xfffb,
0x110bd, 0x110bd,
- 0x110c2, 0x110cf,
- 0x110e9, 0x110ef,
- 0x110fa, 0x110ff,
- 0x11135, 0x11135,
- 0x11144, 0x1117f,
- 0x111c9, 0x111cf,
- 0x111da, 0x1167f,
- 0x116b8, 0x116bf,
- 0x116ca, 0x11fff,
- 0x1236f, 0x123ff,
- 0x12463, 0x1246f,
- 0x12474, 0x12fff,
- 0x1342f, 0x167ff,
- 0x16a39, 0x16eff,
- 0x16f45, 0x16f4f,
- 0x16f7f, 0x16f8e,
- 0x16fa0, 0x1afff,
- 0x1b002, 0x1cfff,
- 0x1d0f6, 0x1d0ff,
- 0x1d127, 0x1d128,
0x1d173, 0x1d17a,
- 0x1d1de, 0x1d1ff,
- 0x1d246, 0x1d2ff,
- 0x1d357, 0x1d35f,
- 0x1d372, 0x1d3ff,
- 0x1d455, 0x1d455,
- 0x1d49d, 0x1d49d,
- 0x1d4a0, 0x1d4a1,
- 0x1d4a3, 0x1d4a4,
- 0x1d4a7, 0x1d4a8,
- 0x1d4ad, 0x1d4ad,
- 0x1d4ba, 0x1d4ba,
- 0x1d4bc, 0x1d4bc,
- 0x1d4c4, 0x1d4c4,
- 0x1d506, 0x1d506,
- 0x1d50b, 0x1d50c,
- 0x1d515, 0x1d515,
- 0x1d51d, 0x1d51d,
- 0x1d53a, 0x1d53a,
- 0x1d53f, 0x1d53f,
- 0x1d545, 0x1d545,
- 0x1d547, 0x1d549,
- 0x1d551, 0x1d551,
- 0x1d6a6, 0x1d6a7,
- 0x1d7cc, 0x1d7cd,
- 0x1d800, 0x1edff,
- 0x1ee04, 0x1ee04,
- 0x1ee20, 0x1ee20,
- 0x1ee23, 0x1ee23,
- 0x1ee25, 0x1ee26,
- 0x1ee28, 0x1ee28,
- 0x1ee33, 0x1ee33,
- 0x1ee38, 0x1ee38,
- 0x1ee3a, 0x1ee3a,
- 0x1ee3c, 0x1ee41,
- 0x1ee43, 0x1ee46,
- 0x1ee48, 0x1ee48,
- 0x1ee4a, 0x1ee4a,
- 0x1ee4c, 0x1ee4c,
- 0x1ee50, 0x1ee50,
- 0x1ee53, 0x1ee53,
- 0x1ee55, 0x1ee56,
- 0x1ee58, 0x1ee58,
- 0x1ee5a, 0x1ee5a,
- 0x1ee5c, 0x1ee5c,
- 0x1ee5e, 0x1ee5e,
- 0x1ee60, 0x1ee60,
- 0x1ee63, 0x1ee63,
- 0x1ee65, 0x1ee66,
- 0x1ee6b, 0x1ee6b,
- 0x1ee73, 0x1ee73,
- 0x1ee78, 0x1ee78,
- 0x1ee7d, 0x1ee7d,
- 0x1ee7f, 0x1ee7f,
- 0x1ee8a, 0x1ee8a,
- 0x1ee9c, 0x1eea0,
- 0x1eea4, 0x1eea4,
- 0x1eeaa, 0x1eeaa,
- 0x1eebc, 0x1eeef,
- 0x1eef2, 0x1efff,
- 0x1f02c, 0x1f02f,
- 0x1f094, 0x1f09f,
- 0x1f0af, 0x1f0b0,
- 0x1f0bf, 0x1f0c0,
- 0x1f0d0, 0x1f0d0,
- 0x1f0e0, 0x1f0ff,
- 0x1f10b, 0x1f10f,
- 0x1f12f, 0x1f12f,
- 0x1f16c, 0x1f16f,
- 0x1f19b, 0x1f1e5,
- 0x1f203, 0x1f20f,
- 0x1f23b, 0x1f23f,
- 0x1f249, 0x1f24f,
- 0x1f252, 0x1f2ff,
- 0x1f321, 0x1f32f,
- 0x1f336, 0x1f336,
- 0x1f37d, 0x1f37f,
- 0x1f394, 0x1f39f,
- 0x1f3c5, 0x1f3c5,
- 0x1f3cb, 0x1f3df,
- 0x1f3f1, 0x1f3ff,
- 0x1f43f, 0x1f43f,
- 0x1f441, 0x1f441,
- 0x1f4f8, 0x1f4f8,
- 0x1f4fd, 0x1f4ff,
- 0x1f53e, 0x1f53f,
- 0x1f544, 0x1f54f,
- 0x1f568, 0x1f5fa,
- 0x1f641, 0x1f644,
- 0x1f650, 0x1f67f,
- 0x1f6c6, 0x1f6ff,
- 0x1f774, 0x1ffff,
- 0x2a6d7, 0x2a6ff,
- 0x2b735, 0x2b73f,
- 0x2b81e, 0x2f7ff,
- 0x2fa1e, 0xe00ff,
- 0xe01f0, 0x10ffff,
+ 0xe0001, 0xe0001,
+ 0xe0020, 0xe007f,
+ 0xf0000, 0xffffd,
+ 0x100000, 0x10ffff,
}; /* CR_C */
/* 'Cc': General Category */
-#define CR_Cc CR_Cntrl
+static const OnigCodePoint CR_Cc[] = {
+ 2,
+ 0x0000, 0x001f,
+ 0x007f, 0x009f,
+}; /* CR_Cc */
/* 'Cf': General Category */
static const OnigCodePoint CR_Cf[] = {
- 14,
+ 15,
0x00ad, 0x00ad,
- 0x0600, 0x0604,
+ 0x0600, 0x0603,
0x06dd, 0x06dd,
0x070f, 0x070f,
+ 0x17b4, 0x17b5,
0x200b, 0x200f,
0x202a, 0x202e,
0x2060, 0x2064,
@@ -5424,7 +604,7 @@ static const OnigCodePoint CR_Cf[] = {
/* 'Cn': General Category */
static const OnigCodePoint CR_Cn[] = {
- 539,
+ 501,
0x0378, 0x0379,
0x037f, 0x0383,
0x038b, 0x038b,
@@ -5434,12 +614,11 @@ static const OnigCodePoint CR_Cn[] = {
0x0557, 0x0558,
0x0560, 0x0560,
0x0588, 0x0588,
- 0x058b, 0x058e,
- 0x0590, 0x0590,
+ 0x058b, 0x0590,
0x05c8, 0x05cf,
0x05eb, 0x05ef,
0x05f5, 0x05ff,
- 0x0605, 0x0605,
+ 0x0604, 0x0605,
0x061c, 0x061d,
0x070e, 0x070e,
0x074b, 0x074c,
@@ -5448,10 +627,7 @@ static const OnigCodePoint CR_Cn[] = {
0x082e, 0x082f,
0x083f, 0x083f,
0x085c, 0x085d,
- 0x085f, 0x089f,
- 0x08a1, 0x08a1,
- 0x08ad, 0x08e3,
- 0x08ff, 0x08ff,
+ 0x085f, 0x08ff,
0x0978, 0x0978,
0x0980, 0x0980,
0x0984, 0x0984,
@@ -5496,6 +672,7 @@ static const OnigCodePoint CR_Cn[] = {
0x0ace, 0x0acf,
0x0ad1, 0x0adf,
0x0ae4, 0x0ae5,
+ 0x0af0, 0x0af0,
0x0af2, 0x0b00,
0x0b04, 0x0b04,
0x0b0d, 0x0b0e,
@@ -5596,16 +773,15 @@ static const OnigCodePoint CR_Cn[] = {
0x0ec7, 0x0ec7,
0x0ece, 0x0ecf,
0x0eda, 0x0edb,
- 0x0ee0, 0x0eff,
+ 0x0ede, 0x0eff,
0x0f48, 0x0f48,
0x0f6d, 0x0f70,
0x0f98, 0x0f98,
0x0fbd, 0x0fbd,
0x0fcd, 0x0fcd,
0x0fdb, 0x0fff,
- 0x10c6, 0x10c6,
- 0x10c8, 0x10cc,
- 0x10ce, 0x10cf,
+ 0x10c6, 0x10cf,
+ 0x10fd, 0x10ff,
0x1249, 0x1249,
0x124e, 0x124f,
0x1257, 0x1257,
@@ -5659,12 +835,13 @@ static const OnigCodePoint CR_Cn[] = {
0x1aae, 0x1aff,
0x1b4c, 0x1b4f,
0x1b7d, 0x1b7f,
+ 0x1bab, 0x1bad,
+ 0x1bba, 0x1bbf,
0x1bf4, 0x1bfb,
0x1c38, 0x1c3a,
0x1c4a, 0x1c4c,
- 0x1c80, 0x1cbf,
- 0x1cc8, 0x1ccf,
- 0x1cf7, 0x1cff,
+ 0x1c80, 0x1ccf,
+ 0x1cf3, 0x1cff,
0x1de7, 0x1dfb,
0x1f16, 0x1f17,
0x1f1e, 0x1f1f,
@@ -5693,15 +870,15 @@ static const OnigCodePoint CR_Cn[] = {
0x2427, 0x243f,
0x244b, 0x245f,
0x2700, 0x2700,
+ 0x27cb, 0x27cb,
+ 0x27cd, 0x27cd,
0x2b4d, 0x2b4f,
0x2b5a, 0x2bff,
0x2c2f, 0x2c2f,
0x2c5f, 0x2c5f,
- 0x2cf4, 0x2cf8,
- 0x2d26, 0x2d26,
- 0x2d28, 0x2d2c,
- 0x2d2e, 0x2d2f,
- 0x2d68, 0x2d6e,
+ 0x2cf2, 0x2cf8,
+ 0x2d26, 0x2d2f,
+ 0x2d66, 0x2d6e,
0x2d71, 0x2d7e,
0x2d97, 0x2d9f,
0x2da7, 0x2da7,
@@ -5712,7 +889,7 @@ static const OnigCodePoint CR_Cn[] = {
0x2dcf, 0x2dcf,
0x2dd7, 0x2dd7,
0x2ddf, 0x2ddf,
- 0x2e3c, 0x2e7f,
+ 0x2e32, 0x2e7f,
0x2e9a, 0x2e9a,
0x2ef4, 0x2eff,
0x2fd6, 0x2fef,
@@ -5727,15 +904,16 @@ static const OnigCodePoint CR_Cn[] = {
0x321f, 0x321f,
0x32ff, 0x32ff,
0x4db6, 0x4dbf,
- 0x9fcd, 0x9fff,
+ 0x9fcc, 0x9fff,
0xa48d, 0xa48f,
0xa4c7, 0xa4cf,
0xa62c, 0xa63f,
- 0xa698, 0xa69e,
+ 0xa674, 0xa67b,
+ 0xa698, 0xa69f,
0xa6f8, 0xa6ff,
0xa78f, 0xa78f,
- 0xa794, 0xa79f,
- 0xa7ab, 0xa7f7,
+ 0xa792, 0xa79f,
+ 0xa7aa, 0xa7f9,
0xa82c, 0xa82f,
0xa83a, 0xa83f,
0xa878, 0xa87f,
@@ -5752,7 +930,7 @@ static const OnigCodePoint CR_Cn[] = {
0xaa5a, 0xaa5b,
0xaa7c, 0xaa7f,
0xaac3, 0xaada,
- 0xaaf7, 0xab00,
+ 0xaae0, 0xab00,
0xab07, 0xab08,
0xab0f, 0xab10,
0xab17, 0xab1f,
@@ -5763,6 +941,7 @@ static const OnigCodePoint CR_Cn[] = {
0xd7a4, 0xd7af,
0xd7c7, 0xd7ca,
0xd7fc, 0xd7ff,
+ 0xfa2e, 0xfa2f,
0xfa6e, 0xfa6f,
0xfada, 0xfaff,
0xfb07, 0xfb12,
@@ -5824,9 +1003,7 @@ static const OnigCodePoint CR_Cn[] = {
0x10860, 0x108ff,
0x1091c, 0x1091e,
0x1093a, 0x1093e,
- 0x10940, 0x1097f,
- 0x109b8, 0x109bd,
- 0x109c0, 0x109ff,
+ 0x10940, 0x109ff,
0x10a04, 0x10a04,
0x10a07, 0x10a0b,
0x10a14, 0x10a14,
@@ -5844,23 +1021,12 @@ static const OnigCodePoint CR_Cn[] = {
0x10e7f, 0x10fff,
0x1104e, 0x11051,
0x11070, 0x1107f,
- 0x110c2, 0x110cf,
- 0x110e9, 0x110ef,
- 0x110fa, 0x110ff,
- 0x11135, 0x11135,
- 0x11144, 0x1117f,
- 0x111c9, 0x111cf,
- 0x111da, 0x1167f,
- 0x116b8, 0x116bf,
- 0x116ca, 0x11fff,
+ 0x110c2, 0x11fff,
0x1236f, 0x123ff,
0x12463, 0x1246f,
0x12474, 0x12fff,
0x1342f, 0x167ff,
- 0x16a39, 0x16eff,
- 0x16f45, 0x16f4f,
- 0x16f7f, 0x16f8e,
- 0x16fa0, 0x1afff,
+ 0x16a39, 0x1afff,
0x1b002, 0x1cfff,
0x1d0f6, 0x1d0ff,
0x1d127, 0x1d128,
@@ -5888,41 +1054,7 @@ static const OnigCodePoint CR_Cn[] = {
0x1d551, 0x1d551,
0x1d6a6, 0x1d6a7,
0x1d7cc, 0x1d7cd,
- 0x1d800, 0x1edff,
- 0x1ee04, 0x1ee04,
- 0x1ee20, 0x1ee20,
- 0x1ee23, 0x1ee23,
- 0x1ee25, 0x1ee26,
- 0x1ee28, 0x1ee28,
- 0x1ee33, 0x1ee33,
- 0x1ee38, 0x1ee38,
- 0x1ee3a, 0x1ee3a,
- 0x1ee3c, 0x1ee41,
- 0x1ee43, 0x1ee46,
- 0x1ee48, 0x1ee48,
- 0x1ee4a, 0x1ee4a,
- 0x1ee4c, 0x1ee4c,
- 0x1ee50, 0x1ee50,
- 0x1ee53, 0x1ee53,
- 0x1ee55, 0x1ee56,
- 0x1ee58, 0x1ee58,
- 0x1ee5a, 0x1ee5a,
- 0x1ee5c, 0x1ee5c,
- 0x1ee5e, 0x1ee5e,
- 0x1ee60, 0x1ee60,
- 0x1ee63, 0x1ee63,
- 0x1ee65, 0x1ee66,
- 0x1ee6b, 0x1ee6b,
- 0x1ee73, 0x1ee73,
- 0x1ee78, 0x1ee78,
- 0x1ee7d, 0x1ee7d,
- 0x1ee7f, 0x1ee7f,
- 0x1ee8a, 0x1ee8a,
- 0x1ee9c, 0x1eea0,
- 0x1eea4, 0x1eea4,
- 0x1eeaa, 0x1eeaa,
- 0x1eebc, 0x1eeef,
- 0x1eef2, 0x1efff,
+ 0x1d800, 0x1efff,
0x1f02c, 0x1f02f,
0x1f094, 0x1f09f,
0x1f0af, 0x1f0b0,
@@ -5931,7 +1063,7 @@ static const OnigCodePoint CR_Cn[] = {
0x1f0e0, 0x1f0ff,
0x1f10b, 0x1f10f,
0x1f12f, 0x1f12f,
- 0x1f16c, 0x1f16f,
+ 0x1f16a, 0x1f16f,
0x1f19b, 0x1f1e5,
0x1f203, 0x1f20f,
0x1f23b, 0x1f23f,
@@ -5948,9 +1080,19 @@ static const OnigCodePoint CR_Cn[] = {
0x1f441, 0x1f441,
0x1f4f8, 0x1f4f8,
0x1f4fd, 0x1f4ff,
- 0x1f53e, 0x1f53f,
- 0x1f544, 0x1f54f,
+ 0x1f53e, 0x1f54f,
0x1f568, 0x1f5fa,
+ 0x1f600, 0x1f600,
+ 0x1f611, 0x1f611,
+ 0x1f615, 0x1f615,
+ 0x1f617, 0x1f617,
+ 0x1f619, 0x1f619,
+ 0x1f61b, 0x1f61b,
+ 0x1f61f, 0x1f61f,
+ 0x1f626, 0x1f627,
+ 0x1f62c, 0x1f62c,
+ 0x1f62e, 0x1f62f,
+ 0x1f634, 0x1f634,
0x1f641, 0x1f644,
0x1f650, 0x1f67f,
0x1f6c6, 0x1f6ff,
@@ -5982,7 +1124,7 @@ static const OnigCodePoint CR_Cs[] = {
/* 'L': Major Category */
static const OnigCodePoint CR_L[] = {
- 486,
+ 435,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -6030,8 +1172,6 @@ static const OnigCodePoint CR_L[] = {
0x0824, 0x0824,
0x0828, 0x0828,
0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -6137,7 +1277,7 @@ static const OnigCodePoint CR_L[] = {
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f40, 0x0f47,
0x0f49, 0x0f6c,
@@ -6152,10 +1292,9 @@ static const OnigCodePoint CR_L[] = {
0x1075, 0x1081,
0x108e, 0x108e,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -6202,13 +1341,12 @@ static const OnigCodePoint CR_L[] = {
0x1b45, 0x1b4b,
0x1b83, 0x1ba0,
0x1bae, 0x1baf,
- 0x1bba, 0x1be5,
+ 0x1bc0, 0x1be5,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
- 0x1cf5, 0x1cf6,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -6250,11 +1388,8 @@ static const OnigCodePoint CR_L[] = {
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
@@ -6278,7 +1413,7 @@ static const OnigCodePoint CR_L[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -6290,9 +1425,9 @@ static const OnigCodePoint CR_L[] = {
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa822,
@@ -6317,8 +1452,6 @@ static const OnigCodePoint CR_L[] = {
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaea,
- 0xaaf2, 0xaaf4,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -6328,7 +1461,8 @@ static const OnigCodePoint CR_L[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -6377,8 +1511,6 @@ static const OnigCodePoint CR_L[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -6390,17 +1522,9 @@ static const OnigCodePoint CR_L[] = {
0x10c00, 0x10c48,
0x11003, 0x11037,
0x11083, 0x110af,
- 0x110d0, 0x110e8,
- 0x11103, 0x11126,
- 0x11183, 0x111b2,
- 0x111c1, 0x111c4,
- 0x11680, 0x116aa,
0x12000, 0x1236e,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f50,
- 0x16f93, 0x16f9f,
0x1b000, 0x1b001,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
@@ -6432,168 +1556,19 @@ static const OnigCodePoint CR_L[] = {
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2f800, 0x2fa1d,
}; /* CR_L */
-/* 'LC': General Category */
-static const OnigCodePoint CR_LC[] = {
- 113,
- 0x0041, 0x005a,
- 0x0061, 0x007a,
- 0x00b5, 0x00b5,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00f6,
- 0x00f8, 0x01ba,
- 0x01bc, 0x01bf,
- 0x01c4, 0x0293,
- 0x0295, 0x02af,
- 0x0370, 0x0373,
- 0x0376, 0x0377,
- 0x037b, 0x037d,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x03f5,
- 0x03f7, 0x0481,
- 0x048a, 0x0527,
- 0x0531, 0x0556,
- 0x0561, 0x0587,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x1d00, 0x1d2b,
- 0x1d6b, 0x1d77,
- 0x1d79, 0x1d9a,
- 0x1e00, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fbc,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fcc,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fe0, 0x1fec,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffc,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210a, 0x2113,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x212f, 0x2134,
- 0x2139, 0x2139,
- 0x213c, 0x213f,
- 0x2145, 0x2149,
- 0x214e, 0x214e,
- 0x2183, 0x2184,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2c7b,
- 0x2c7e, 0x2ce4,
- 0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0xa640, 0xa66d,
- 0xa680, 0xa697,
- 0xa722, 0xa76f,
- 0xa771, 0xa787,
- 0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7fa, 0xa7fa,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xff21, 0xff3a,
- 0xff41, 0xff5a,
- 0x10400, 0x1044f,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d6c0,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6fa,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d734,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d76e,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d7a8,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7cb,
-}; /* CR_LC */
-
/* 'Ll': General Category */
static const OnigCodePoint CR_Ll[] = {
- 611,
+ 609,
0x0061, 0x007a,
+ 0x00aa, 0x00aa,
0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
0x00df, 0x00f6,
0x00f8, 0x00ff,
0x0101, 0x0101,
@@ -6859,7 +1834,7 @@ static const OnigCodePoint CR_Ll[] = {
0x0527, 0x0527,
0x0561, 0x0587,
0x1d00, 0x1d2b,
- 0x1d6b, 0x1d77,
+ 0x1d62, 0x1d77,
0x1d79, 0x1d9a,
0x1e01, 0x1e01,
0x1e03, 0x1e03,
@@ -7023,7 +1998,7 @@ static const OnigCodePoint CR_Ll[] = {
0x2c6c, 0x2c6c,
0x2c71, 0x2c71,
0x2c73, 0x2c74,
- 0x2c76, 0x2c7b,
+ 0x2c76, 0x2c7c,
0x2c81, 0x2c81,
0x2c83, 0x2c83,
0x2c85, 0x2c85,
@@ -7076,10 +2051,7 @@ static const OnigCodePoint CR_Ll[] = {
0x2ce3, 0x2ce4,
0x2cec, 0x2cec,
0x2cee, 0x2cee,
- 0x2cf3, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa641, 0xa641,
0xa643, 0xa643,
0xa645, 0xa645,
@@ -7164,7 +2136,6 @@ static const OnigCodePoint CR_Ll[] = {
0xa78c, 0xa78c,
0xa78e, 0xa78e,
0xa791, 0xa791,
- 0xa793, 0xa793,
0xa7a1, 0xa7a1,
0xa7a3, 0xa7a3,
0xa7a5, 0xa7a5,
@@ -7207,7 +2178,7 @@ static const OnigCodePoint CR_Ll[] = {
/* 'Lm': General Category */
static const OnigCodePoint CR_Lm[] = {
- 52,
+ 49,
0x02b0, 0x02c1,
0x02c6, 0x02d1,
0x02e0, 0x02e4,
@@ -7231,13 +2202,13 @@ static const OnigCodePoint CR_Lm[] = {
0x1843, 0x1843,
0x1aa7, 0x1aa7,
0x1c78, 0x1c7d,
- 0x1d2c, 0x1d6a,
+ 0x1d2c, 0x1d61,
0x1d78, 0x1d78,
0x1d9b, 0x1dbf,
0x2071, 0x2071,
0x207f, 0x207f,
0x2090, 0x209c,
- 0x2c7c, 0x2c7d,
+ 0x2c7d, 0x2c7d,
0x2d6f, 0x2d6f,
0x2e2f, 0x2e2f,
0x3005, 0x3005,
@@ -7252,21 +2223,16 @@ static const OnigCodePoint CR_Lm[] = {
0xa717, 0xa71f,
0xa770, 0xa770,
0xa788, 0xa788,
- 0xa7f8, 0xa7f9,
0xa9cf, 0xa9cf,
0xaa70, 0xaa70,
0xaadd, 0xaadd,
- 0xaaf3, 0xaaf4,
0xff70, 0xff70,
0xff9e, 0xff9f,
- 0x16f93, 0x16f9f,
}; /* CR_Lm */
/* 'Lo': General Category */
static const OnigCodePoint CR_Lo[] = {
- 371,
- 0x00aa, 0x00aa,
- 0x00ba, 0x00ba,
+ 323,
0x01bb, 0x01bb,
0x01c0, 0x01c3,
0x0294, 0x0294,
@@ -7287,8 +2253,6 @@ static const OnigCodePoint CR_Lo[] = {
0x07ca, 0x07ea,
0x0800, 0x0815,
0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -7393,7 +2357,7 @@ static const OnigCodePoint CR_Lo[] = {
0x0eb2, 0x0eb3,
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f40, 0x0f47,
0x0f49, 0x0f6c,
@@ -7408,7 +2372,7 @@ static const OnigCodePoint CR_Lo[] = {
0x1075, 0x1081,
0x108e, 0x108e,
0x10d0, 0x10fa,
- 0x10fd, 0x1248,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -7454,15 +2418,14 @@ static const OnigCodePoint CR_Lo[] = {
0x1b45, 0x1b4b,
0x1b83, 0x1ba0,
0x1bae, 0x1baf,
- 0x1bba, 0x1be5,
+ 0x1bc0, 0x1be5,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c77,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
- 0x1cf5, 0x1cf6,
0x2135, 0x2138,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
0x2da8, 0x2dae,
@@ -7483,7 +2446,7 @@ static const OnigCodePoint CR_Lo[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa014,
0xa016, 0xa48c,
0xa4d0, 0xa4f7,
@@ -7517,8 +2480,6 @@ static const OnigCodePoint CR_Lo[] = {
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadc,
- 0xaae0, 0xaaea,
- 0xaaf2, 0xaaf2,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -7528,7 +2489,8 @@ static const OnigCodePoint CR_Lo[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb1d, 0xfb1d,
0xfb1f, 0xfb28,
@@ -7575,8 +2537,6 @@ static const OnigCodePoint CR_Lo[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -7588,50 +2548,10 @@ static const OnigCodePoint CR_Lo[] = {
0x10c00, 0x10c48,
0x11003, 0x11037,
0x11083, 0x110af,
- 0x110d0, 0x110e8,
- 0x11103, 0x11126,
- 0x11183, 0x111b2,
- 0x111c1, 0x111c4,
- 0x11680, 0x116aa,
0x12000, 0x1236e,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f50,
0x1b000, 0x1b001,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -7655,7 +2575,7 @@ static const OnigCodePoint CR_Lt[] = {
/* 'Lu': General Category */
static const OnigCodePoint CR_Lu[] = {
- 608,
+ 603,
0x0041, 0x005a,
0x00c0, 0x00d6,
0x00d8, 0x00de,
@@ -7924,8 +2844,6 @@ static const OnigCodePoint CR_Lu[] = {
0x0526, 0x0526,
0x0531, 0x0556,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1e00, 0x1e00,
0x1e02, 0x1e02,
0x1e04, 0x1e04,
@@ -8140,7 +3058,6 @@ static const OnigCodePoint CR_Lu[] = {
0x2ce2, 0x2ce2,
0x2ceb, 0x2ceb,
0x2ced, 0x2ced,
- 0x2cf2, 0x2cf2,
0xa640, 0xa640,
0xa642, 0xa642,
0xa644, 0xa644,
@@ -8224,13 +3141,11 @@ static const OnigCodePoint CR_Lu[] = {
0xa78b, 0xa78b,
0xa78d, 0xa78d,
0xa790, 0xa790,
- 0xa792, 0xa792,
0xa7a0, 0xa7a0,
0xa7a2, 0xa7a2,
0xa7a4, 0xa7a4,
0xa7a6, 0xa7a6,
0xa7a8, 0xa7a8,
- 0xa7aa, 0xa7aa,
0xff21, 0xff3a,
0x10400, 0x10427,
0x1d400, 0x1d419,
@@ -8268,7 +3183,7 @@ static const OnigCodePoint CR_Lu[] = {
/* 'M': Major Category */
static const OnigCodePoint CR_M[] = {
- 204,
+ 193,
0x0300, 0x036f,
0x0483, 0x0489,
0x0591, 0x05bd,
@@ -8292,7 +3207,6 @@ static const OnigCodePoint CR_M[] = {
0x0825, 0x0827,
0x0829, 0x082d,
0x0859, 0x085b,
- 0x08e4, 0x08fe,
0x0900, 0x0903,
0x093a, 0x093c,
0x093e, 0x094f,
@@ -8387,7 +3301,7 @@ static const OnigCodePoint CR_M[] = {
0x1732, 0x1734,
0x1752, 0x1753,
0x1772, 0x1773,
- 0x17b4, 0x17d3,
+ 0x17b6, 0x17d3,
0x17dd, 0x17dd,
0x180b, 0x180d,
0x18a9, 0x18a9,
@@ -8403,13 +3317,13 @@ static const OnigCodePoint CR_M[] = {
0x1b34, 0x1b44,
0x1b6b, 0x1b73,
0x1b80, 0x1b82,
- 0x1ba1, 0x1bad,
+ 0x1ba1, 0x1baa,
0x1be6, 0x1bf3,
0x1c24, 0x1c37,
0x1cd0, 0x1cd2,
0x1cd4, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf2, 0x1cf4,
+ 0x1cf2, 0x1cf2,
0x1dc0, 0x1de6,
0x1dfc, 0x1dff,
0x20d0, 0x20f0,
@@ -8419,8 +3333,7 @@ static const OnigCodePoint CR_M[] = {
0x302a, 0x302f,
0x3099, 0x309a,
0xa66f, 0xa672,
- 0xa674, 0xa67d,
- 0xa69f, 0xa69f,
+ 0xa67c, 0xa67d,
0xa6f0, 0xa6f1,
0xa802, 0xa802,
0xa806, 0xa806,
@@ -8442,8 +3355,6 @@ static const OnigCodePoint CR_M[] = {
0xaab7, 0xaab8,
0xaabe, 0xaabf,
0xaac1, 0xaac1,
- 0xaaeb, 0xaaef,
- 0xaaf5, 0xaaf6,
0xabe3, 0xabea,
0xabec, 0xabed,
0xfb1e, 0xfb1e,
@@ -8459,13 +3370,6 @@ static const OnigCodePoint CR_M[] = {
0x11038, 0x11046,
0x11080, 0x11082,
0x110b0, 0x110ba,
- 0x11100, 0x11102,
- 0x11127, 0x11134,
- 0x11180, 0x11182,
- 0x111b3, 0x111c0,
- 0x116ab, 0x116b7,
- 0x16f51, 0x16f7e,
- 0x16f8f, 0x16f92,
0x1d165, 0x1d169,
0x1d16d, 0x1d172,
0x1d17b, 0x1d182,
@@ -8477,7 +3381,7 @@ static const OnigCodePoint CR_M[] = {
/* 'Mc': General Category */
static const OnigCodePoint CR_Mc[] = {
- 126,
+ 113,
0x0903, 0x0903,
0x093b, 0x093b,
0x093e, 0x0940,
@@ -8559,7 +3463,6 @@ static const OnigCodePoint CR_Mc[] = {
0x1ba1, 0x1ba1,
0x1ba6, 0x1ba7,
0x1baa, 0x1baa,
- 0x1bac, 0x1bad,
0x1be7, 0x1be7,
0x1bea, 0x1bec,
0x1bee, 0x1bee,
@@ -8567,8 +3470,7 @@ static const OnigCodePoint CR_Mc[] = {
0x1c24, 0x1c2b,
0x1c34, 0x1c35,
0x1ce1, 0x1ce1,
- 0x1cf2, 0x1cf3,
- 0x302e, 0x302f,
+ 0x1cf2, 0x1cf2,
0xa823, 0xa824,
0xa827, 0xa827,
0xa880, 0xa881,
@@ -8582,9 +3484,6 @@ static const OnigCodePoint CR_Mc[] = {
0xaa33, 0xaa34,
0xaa4d, 0xaa4d,
0xaa7b, 0xaa7b,
- 0xaaeb, 0xaaeb,
- 0xaaee, 0xaaef,
- 0xaaf5, 0xaaf5,
0xabe3, 0xabe4,
0xabe6, 0xabe7,
0xabe9, 0xabea,
@@ -8594,14 +3493,6 @@ static const OnigCodePoint CR_Mc[] = {
0x11082, 0x11082,
0x110b0, 0x110b2,
0x110b7, 0x110b8,
- 0x1112c, 0x1112c,
- 0x11182, 0x11182,
- 0x111b3, 0x111b5,
- 0x111bf, 0x111c0,
- 0x116ac, 0x116ac,
- 0x116ae, 0x116af,
- 0x116b6, 0x116b6,
- 0x16f51, 0x16f7e,
0x1d165, 0x1d166,
0x1d16d, 0x1d172,
}; /* CR_Mc */
@@ -8617,7 +3508,7 @@ static const OnigCodePoint CR_Me[] = {
/* 'Mn': General Category */
static const OnigCodePoint CR_Mn[] = {
- 220,
+ 203,
0x0300, 0x036f,
0x0483, 0x0487,
0x0591, 0x05bd,
@@ -8641,7 +3532,6 @@ static const OnigCodePoint CR_Mn[] = {
0x0825, 0x0827,
0x0829, 0x082d,
0x0859, 0x085b,
- 0x08e4, 0x08fe,
0x0900, 0x0902,
0x093a, 0x093a,
0x093c, 0x093c,
@@ -8727,7 +3617,6 @@ static const OnigCodePoint CR_Mn[] = {
0x1732, 0x1734,
0x1752, 0x1753,
0x1772, 0x1773,
- 0x17b4, 0x17b5,
0x17b7, 0x17bd,
0x17c6, 0x17c6,
0x17c9, 0x17d3,
@@ -8755,7 +3644,6 @@ static const OnigCodePoint CR_Mn[] = {
0x1b80, 0x1b81,
0x1ba2, 0x1ba5,
0x1ba8, 0x1ba9,
- 0x1bab, 0x1bab,
0x1be6, 0x1be6,
0x1be8, 0x1be9,
0x1bed, 0x1bed,
@@ -8766,7 +3654,6 @@ static const OnigCodePoint CR_Mn[] = {
0x1cd4, 0x1ce0,
0x1ce2, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
0x1dc0, 0x1de6,
0x1dfc, 0x1dff,
0x20d0, 0x20dc,
@@ -8775,11 +3662,10 @@ static const OnigCodePoint CR_Mn[] = {
0x2cef, 0x2cf1,
0x2d7f, 0x2d7f,
0x2de0, 0x2dff,
- 0x302a, 0x302d,
+ 0x302a, 0x302f,
0x3099, 0x309a,
0xa66f, 0xa66f,
- 0xa674, 0xa67d,
- 0xa69f, 0xa69f,
+ 0xa67c, 0xa67d,
0xa6f0, 0xa6f1,
0xa802, 0xa802,
0xa806, 0xa806,
@@ -8803,8 +3689,6 @@ static const OnigCodePoint CR_Mn[] = {
0xaab7, 0xaab8,
0xaabe, 0xaabf,
0xaac1, 0xaac1,
- 0xaaec, 0xaaed,
- 0xaaf6, 0xaaf6,
0xabe5, 0xabe5,
0xabe8, 0xabe8,
0xabed, 0xabed,
@@ -8822,16 +3706,6 @@ static const OnigCodePoint CR_Mn[] = {
0x11080, 0x11081,
0x110b3, 0x110b6,
0x110b9, 0x110ba,
- 0x11100, 0x11102,
- 0x11127, 0x1112b,
- 0x1112d, 0x11134,
- 0x11180, 0x11181,
- 0x111b6, 0x111be,
- 0x116ab, 0x116ab,
- 0x116ad, 0x116ad,
- 0x116b0, 0x116b5,
- 0x116b7, 0x116b7,
- 0x16f8f, 0x16f92,
0x1d167, 0x1d169,
0x1d17b, 0x1d182,
0x1d185, 0x1d18b,
@@ -8842,7 +3716,7 @@ static const OnigCodePoint CR_Mn[] = {
/* 'N': Major Category */
static const OnigCodePoint CR_N[] = {
- 88,
+ 83,
0x0030, 0x0039,
0x00b2, 0x00b3,
0x00b9, 0x00b9,
@@ -8894,7 +3768,6 @@ static const OnigCodePoint CR_N[] = {
0x3038, 0x303a,
0x3192, 0x3195,
0x3220, 0x3229,
- 0x3248, 0x324f,
0x3251, 0x325f,
0x3280, 0x3289,
0x32b1, 0x32bf,
@@ -8923,10 +3796,6 @@ static const OnigCodePoint CR_N[] = {
0x10b78, 0x10b7f,
0x10e60, 0x10e7e,
0x11052, 0x1106f,
- 0x110f0, 0x110f9,
- 0x11136, 0x1113f,
- 0x111d0, 0x111d9,
- 0x116c0, 0x116c9,
0x12400, 0x12462,
0x1d360, 0x1d371,
0x1d7ce, 0x1d7ff,
@@ -8934,7 +3803,47 @@ static const OnigCodePoint CR_N[] = {
}; /* CR_N */
/* 'Nd': General Category */
-#define CR_Nd CR_Digit
+static const OnigCodePoint CR_Nd[] = {
+ 38,
+ 0x0030, 0x0039,
+ 0x0660, 0x0669,
+ 0x06f0, 0x06f9,
+ 0x07c0, 0x07c9,
+ 0x0966, 0x096f,
+ 0x09e6, 0x09ef,
+ 0x0a66, 0x0a6f,
+ 0x0ae6, 0x0aef,
+ 0x0b66, 0x0b6f,
+ 0x0be6, 0x0bef,
+ 0x0c66, 0x0c6f,
+ 0x0ce6, 0x0cef,
+ 0x0d66, 0x0d6f,
+ 0x0e50, 0x0e59,
+ 0x0ed0, 0x0ed9,
+ 0x0f20, 0x0f29,
+ 0x1040, 0x1049,
+ 0x1090, 0x1099,
+ 0x17e0, 0x17e9,
+ 0x1810, 0x1819,
+ 0x1946, 0x194f,
+ 0x19d0, 0x19d9,
+ 0x1a80, 0x1a89,
+ 0x1a90, 0x1a99,
+ 0x1b50, 0x1b59,
+ 0x1bb0, 0x1bb9,
+ 0x1c40, 0x1c49,
+ 0x1c50, 0x1c59,
+ 0xa620, 0xa629,
+ 0xa8d0, 0xa8d9,
+ 0xa900, 0xa909,
+ 0xa9d0, 0xa9d9,
+ 0xaa50, 0xaa59,
+ 0xabf0, 0xabf9,
+ 0xff10, 0xff19,
+ 0x104a0, 0x104a9,
+ 0x11066, 0x1106f,
+ 0x1d7ce, 0x1d7ff,
+}; /* CR_Nd */
/* 'Nl': General Category */
static const OnigCodePoint CR_Nl[] = {
@@ -8955,7 +3864,7 @@ static const OnigCodePoint CR_Nl[] = {
/* 'No': General Category */
static const OnigCodePoint CR_No[] = {
- 42,
+ 41,
0x00b2, 0x00b3,
0x00b9, 0x00b9,
0x00bc, 0x00be,
@@ -8979,7 +3888,6 @@ static const OnigCodePoint CR_No[] = {
0x2cfd, 0x2cfd,
0x3192, 0x3195,
0x3220, 0x3229,
- 0x3248, 0x324f,
0x3251, 0x325f,
0x3280, 0x3289,
0x32b1, 0x32bf,
@@ -9001,7 +3909,142 @@ static const OnigCodePoint CR_No[] = {
}; /* CR_No */
/* 'P': Major Category */
-#define CR_P CR_Punct
+static const OnigCodePoint CR_P[] = {
+ 133,
+ 0x0021, 0x0023,
+ 0x0025, 0x002a,
+ 0x002c, 0x002f,
+ 0x003a, 0x003b,
+ 0x003f, 0x0040,
+ 0x005b, 0x005d,
+ 0x005f, 0x005f,
+ 0x007b, 0x007b,
+ 0x007d, 0x007d,
+ 0x00a1, 0x00a1,
+ 0x00ab, 0x00ab,
+ 0x00b7, 0x00b7,
+ 0x00bb, 0x00bb,
+ 0x00bf, 0x00bf,
+ 0x037e, 0x037e,
+ 0x0387, 0x0387,
+ 0x055a, 0x055f,
+ 0x0589, 0x058a,
+ 0x05be, 0x05be,
+ 0x05c0, 0x05c0,
+ 0x05c3, 0x05c3,
+ 0x05c6, 0x05c6,
+ 0x05f3, 0x05f4,
+ 0x0609, 0x060a,
+ 0x060c, 0x060d,
+ 0x061b, 0x061b,
+ 0x061e, 0x061f,
+ 0x066a, 0x066d,
+ 0x06d4, 0x06d4,
+ 0x0700, 0x070d,
+ 0x07f7, 0x07f9,
+ 0x0830, 0x083e,
+ 0x085e, 0x085e,
+ 0x0964, 0x0965,
+ 0x0970, 0x0970,
+ 0x0df4, 0x0df4,
+ 0x0e4f, 0x0e4f,
+ 0x0e5a, 0x0e5b,
+ 0x0f04, 0x0f12,
+ 0x0f3a, 0x0f3d,
+ 0x0f85, 0x0f85,
+ 0x0fd0, 0x0fd4,
+ 0x0fd9, 0x0fda,
+ 0x104a, 0x104f,
+ 0x10fb, 0x10fb,
+ 0x1361, 0x1368,
+ 0x1400, 0x1400,
+ 0x166d, 0x166e,
+ 0x169b, 0x169c,
+ 0x16eb, 0x16ed,
+ 0x1735, 0x1736,
+ 0x17d4, 0x17d6,
+ 0x17d8, 0x17da,
+ 0x1800, 0x180a,
+ 0x1944, 0x1945,
+ 0x1a1e, 0x1a1f,
+ 0x1aa0, 0x1aa6,
+ 0x1aa8, 0x1aad,
+ 0x1b5a, 0x1b60,
+ 0x1bfc, 0x1bff,
+ 0x1c3b, 0x1c3f,
+ 0x1c7e, 0x1c7f,
+ 0x1cd3, 0x1cd3,
+ 0x2010, 0x2027,
+ 0x2030, 0x2043,
+ 0x2045, 0x2051,
+ 0x2053, 0x205e,
+ 0x207d, 0x207e,
+ 0x208d, 0x208e,
+ 0x2329, 0x232a,
+ 0x2768, 0x2775,
+ 0x27c5, 0x27c6,
+ 0x27e6, 0x27ef,
+ 0x2983, 0x2998,
+ 0x29d8, 0x29db,
+ 0x29fc, 0x29fd,
+ 0x2cf9, 0x2cfc,
+ 0x2cfe, 0x2cff,
+ 0x2d70, 0x2d70,
+ 0x2e00, 0x2e2e,
+ 0x2e30, 0x2e31,
+ 0x3001, 0x3003,
+ 0x3008, 0x3011,
+ 0x3014, 0x301f,
+ 0x3030, 0x3030,
+ 0x303d, 0x303d,
+ 0x30a0, 0x30a0,
+ 0x30fb, 0x30fb,
+ 0xa4fe, 0xa4ff,
+ 0xa60d, 0xa60f,
+ 0xa673, 0xa673,
+ 0xa67e, 0xa67e,
+ 0xa6f2, 0xa6f7,
+ 0xa874, 0xa877,
+ 0xa8ce, 0xa8cf,
+ 0xa8f8, 0xa8fa,
+ 0xa92e, 0xa92f,
+ 0xa95f, 0xa95f,
+ 0xa9c1, 0xa9cd,
+ 0xa9de, 0xa9df,
+ 0xaa5c, 0xaa5f,
+ 0xaade, 0xaadf,
+ 0xabeb, 0xabeb,
+ 0xfd3e, 0xfd3f,
+ 0xfe10, 0xfe19,
+ 0xfe30, 0xfe52,
+ 0xfe54, 0xfe61,
+ 0xfe63, 0xfe63,
+ 0xfe68, 0xfe68,
+ 0xfe6a, 0xfe6b,
+ 0xff01, 0xff03,
+ 0xff05, 0xff0a,
+ 0xff0c, 0xff0f,
+ 0xff1a, 0xff1b,
+ 0xff1f, 0xff20,
+ 0xff3b, 0xff3d,
+ 0xff3f, 0xff3f,
+ 0xff5b, 0xff5b,
+ 0xff5d, 0xff5d,
+ 0xff5f, 0xff65,
+ 0x10100, 0x10101,
+ 0x1039f, 0x1039f,
+ 0x103d0, 0x103d0,
+ 0x10857, 0x10857,
+ 0x1091f, 0x1091f,
+ 0x1093f, 0x1093f,
+ 0x10a50, 0x10a58,
+ 0x10a7f, 0x10a7f,
+ 0x10b39, 0x10b3f,
+ 0x11047, 0x1104d,
+ 0x110bb, 0x110bc,
+ 0x110be, 0x110c1,
+ 0x12470, 0x12473,
+}; /* CR_P */
/* 'Pc': General Category */
static const OnigCodePoint CR_Pc[] = {
@@ -9016,7 +4059,7 @@ static const OnigCodePoint CR_Pc[] = {
/* 'Pd': General Category */
static const OnigCodePoint CR_Pd[] = {
- 16,
+ 15,
0x002d, 0x002d,
0x058a, 0x058a,
0x05be, 0x05be,
@@ -9025,7 +4068,6 @@ static const OnigCodePoint CR_Pd[] = {
0x2010, 0x2015,
0x2e17, 0x2e17,
0x2e1a, 0x2e1a,
- 0x2e3a, 0x2e3b,
0x301c, 0x301c,
0x3030, 0x3030,
0x30a0, 0x30a0,
@@ -9143,7 +4185,7 @@ static const OnigCodePoint CR_Pi[] = {
/* 'Po': General Category */
static const OnigCodePoint CR_Po[] = {
- 135,
+ 128,
0x0021, 0x0023,
0x0025, 0x0027,
0x002a, 0x002a,
@@ -9153,8 +4195,7 @@ static const OnigCodePoint CR_Po[] = {
0x003f, 0x0040,
0x005c, 0x005c,
0x00a1, 0x00a1,
- 0x00a7, 0x00a7,
- 0x00b6, 0x00b7,
+ 0x00b7, 0x00b7,
0x00bf, 0x00bf,
0x037e, 0x037e,
0x0387, 0x0387,
@@ -9176,18 +4217,16 @@ static const OnigCodePoint CR_Po[] = {
0x085e, 0x085e,
0x0964, 0x0965,
0x0970, 0x0970,
- 0x0af0, 0x0af0,
0x0df4, 0x0df4,
0x0e4f, 0x0e4f,
0x0e5a, 0x0e5b,
0x0f04, 0x0f12,
- 0x0f14, 0x0f14,
0x0f85, 0x0f85,
0x0fd0, 0x0fd4,
0x0fd9, 0x0fda,
0x104a, 0x104f,
0x10fb, 0x10fb,
- 0x1360, 0x1368,
+ 0x1361, 0x1368,
0x166d, 0x166e,
0x16eb, 0x16ed,
0x1735, 0x1736,
@@ -9203,7 +4242,6 @@ static const OnigCodePoint CR_Po[] = {
0x1bfc, 0x1bff,
0x1c3b, 0x1c3f,
0x1c7e, 0x1c7f,
- 0x1cc0, 0x1cc7,
0x1cd3, 0x1cd3,
0x2016, 0x2017,
0x2020, 0x2027,
@@ -9224,7 +4262,7 @@ static const OnigCodePoint CR_Po[] = {
0x2e1b, 0x2e1b,
0x2e1e, 0x2e1f,
0x2e2a, 0x2e2e,
- 0x2e30, 0x2e39,
+ 0x2e30, 0x2e31,
0x3001, 0x3003,
0x303d, 0x303d,
0x30fb, 0x30fb,
@@ -9242,7 +4280,6 @@ static const OnigCodePoint CR_Po[] = {
0xa9de, 0xa9df,
0xaa5c, 0xaa5f,
0xaade, 0xaadf,
- 0xaaf0, 0xaaf1,
0xabeb, 0xabeb,
0xfe10, 0xfe16,
0xfe19, 0xfe19,
@@ -9264,7 +4301,7 @@ static const OnigCodePoint CR_Po[] = {
0xff3c, 0xff3c,
0xff61, 0xff61,
0xff64, 0xff65,
- 0x10100, 0x10102,
+ 0x10100, 0x10101,
0x1039f, 0x1039f,
0x103d0, 0x103d0,
0x10857, 0x10857,
@@ -9276,8 +4313,6 @@ static const OnigCodePoint CR_Po[] = {
0x11047, 0x1104d,
0x110bb, 0x110bc,
0x110be, 0x110c1,
- 0x11140, 0x11143,
- 0x111c5, 0x111c8,
0x12470, 0x12473,
}; /* CR_Po */
@@ -9360,7 +4395,7 @@ static const OnigCodePoint CR_Ps[] = {
/* 'S': Major Category */
static const OnigCodePoint CR_S[] = {
- 198,
+ 208,
0x0024, 0x0024,
0x002b, 0x002b,
0x003c, 0x003e,
@@ -9368,11 +4403,11 @@ static const OnigCodePoint CR_S[] = {
0x0060, 0x0060,
0x007c, 0x007c,
0x007e, 0x007e,
- 0x00a2, 0x00a6,
- 0x00a8, 0x00a9,
+ 0x00a2, 0x00a9,
0x00ac, 0x00ac,
0x00ae, 0x00b1,
0x00b4, 0x00b4,
+ 0x00b6, 0x00b6,
0x00b8, 0x00b8,
0x00d7, 0x00d7,
0x00f7, 0x00f7,
@@ -9385,7 +4420,6 @@ static const OnigCodePoint CR_S[] = {
0x0384, 0x0385,
0x03f6, 0x03f6,
0x0482, 0x0482,
- 0x058f, 0x058f,
0x0606, 0x0608,
0x060b, 0x060b,
0x060e, 0x060f,
@@ -9402,8 +4436,7 @@ static const OnigCodePoint CR_S[] = {
0x0d79, 0x0d79,
0x0e3f, 0x0e3f,
0x0f01, 0x0f03,
- 0x0f13, 0x0f13,
- 0x0f15, 0x0f17,
+ 0x0f13, 0x0f17,
0x0f1a, 0x0f1f,
0x0f34, 0x0f34,
0x0f36, 0x0f36,
@@ -9413,6 +4446,7 @@ static const OnigCodePoint CR_S[] = {
0x0fce, 0x0fcf,
0x0fd5, 0x0fd8,
0x109e, 0x109f,
+ 0x1360, 0x1360,
0x1390, 0x1399,
0x17db, 0x17db,
0x1940, 0x1940,
@@ -9452,7 +4486,9 @@ static const OnigCodePoint CR_S[] = {
0x2500, 0x26ff,
0x2701, 0x2767,
0x2794, 0x27c4,
- 0x27c7, 0x27e5,
+ 0x27c7, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x27e5,
0x27f0, 0x2982,
0x2999, 0x29d7,
0x29dc, 0x29fb,
@@ -9473,8 +4509,7 @@ static const OnigCodePoint CR_S[] = {
0x3196, 0x319f,
0x31c0, 0x31e3,
0x3200, 0x321e,
- 0x322a, 0x3247,
- 0x3250, 0x3250,
+ 0x322a, 0x3250,
0x3260, 0x327f,
0x328a, 0x32b0,
0x32c0, 0x32fe,
@@ -9503,6 +4538,7 @@ static const OnigCodePoint CR_S[] = {
0xffe0, 0xffe6,
0xffe8, 0xffee,
0xfffc, 0xfffd,
+ 0x10102, 0x10102,
0x10137, 0x1013f,
0x10179, 0x10189,
0x10190, 0x1019b,
@@ -9527,7 +4563,6 @@ static const OnigCodePoint CR_S[] = {
0x1d789, 0x1d789,
0x1d7a9, 0x1d7a9,
0x1d7c3, 0x1d7c3,
- 0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
@@ -9535,7 +4570,7 @@ static const OnigCodePoint CR_S[] = {
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0df,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -9553,9 +4588,19 @@ static const OnigCodePoint CR_S[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -9563,10 +4608,9 @@ static const OnigCodePoint CR_S[] = {
/* 'Sc': General Category */
static const OnigCodePoint CR_Sc[] = {
- 17,
+ 16,
0x0024, 0x0024,
0x00a2, 0x00a5,
- 0x058f, 0x058f,
0x060b, 0x060b,
0x09f2, 0x09f3,
0x09fb, 0x09fb,
@@ -9617,7 +4661,7 @@ static const OnigCodePoint CR_Sk[] = {
/* 'Sm': General Category */
static const OnigCodePoint CR_Sm[] = {
- 65,
+ 66,
0x002b, 0x002b,
0x003c, 0x003e,
0x007c, 0x007c,
@@ -9655,7 +4699,9 @@ static const OnigCodePoint CR_Sm[] = {
0x25f8, 0x25ff,
0x266f, 0x266f,
0x27c0, 0x27c4,
- 0x27c7, 0x27e5,
+ 0x27c7, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x27e5,
0x27f0, 0x27ff,
0x2900, 0x2982,
0x2999, 0x29d7,
@@ -9682,16 +4728,16 @@ static const OnigCodePoint CR_Sm[] = {
0x1d789, 0x1d789,
0x1d7a9, 0x1d7a9,
0x1d7c3, 0x1d7c3,
- 0x1eef0, 0x1eef1,
}; /* CR_Sm */
/* 'So': General Category */
static const OnigCodePoint CR_So[] = {
- 153,
- 0x00a6, 0x00a6,
+ 164,
+ 0x00a6, 0x00a7,
0x00a9, 0x00a9,
0x00ae, 0x00ae,
0x00b0, 0x00b0,
+ 0x00b6, 0x00b6,
0x0482, 0x0482,
0x060e, 0x060f,
0x06de, 0x06de,
@@ -9705,8 +4751,7 @@ static const OnigCodePoint CR_So[] = {
0x0c7f, 0x0c7f,
0x0d79, 0x0d79,
0x0f01, 0x0f03,
- 0x0f13, 0x0f13,
- 0x0f15, 0x0f17,
+ 0x0f13, 0x0f17,
0x0f1a, 0x0f1f,
0x0f34, 0x0f34,
0x0f36, 0x0f36,
@@ -9716,6 +4761,7 @@ static const OnigCodePoint CR_So[] = {
0x0fce, 0x0fcf,
0x0fd5, 0x0fd8,
0x109e, 0x109f,
+ 0x1360, 0x1360,
0x1390, 0x1399,
0x1940, 0x1940,
0x19de, 0x19ff,
@@ -9779,8 +4825,7 @@ static const OnigCodePoint CR_So[] = {
0x3196, 0x319f,
0x31c0, 0x31e3,
0x3200, 0x321e,
- 0x322a, 0x3247,
- 0x3250, 0x3250,
+ 0x322a, 0x3250,
0x3260, 0x327f,
0x328a, 0x32b0,
0x32c0, 0x32fe,
@@ -9796,6 +4841,7 @@ static const OnigCodePoint CR_So[] = {
0xffe8, 0xffe8,
0xffed, 0xffee,
0xfffc, 0xfffd,
+ 0x10102, 0x10102,
0x10137, 0x1013f,
0x10179, 0x10189,
0x10190, 0x1019b,
@@ -9817,7 +4863,7 @@ static const OnigCodePoint CR_So[] = {
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0df,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -9835,9 +4881,19 @@ static const OnigCodePoint CR_So[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -9884,7 +4940,7 @@ static const OnigCodePoint CR_Zs[] = {
/* 'Math': Derived Property */
static const OnigCodePoint CR_Math[] = {
- 138,
+ 106,
0x002b, 0x002b,
0x003c, 0x003e,
0x005e, 0x005e,
@@ -9953,7 +5009,9 @@ static const OnigCodePoint CR_Math[] = {
0x2642, 0x2642,
0x2660, 0x2663,
0x266d, 0x266f,
- 0x27c0, 0x27ff,
+ 0x27c0, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x27ff,
0x2900, 0x2aff,
0x2b30, 0x2b44,
0x2b47, 0x2b4c,
@@ -9989,54 +5047,1729 @@ static const OnigCodePoint CR_Math[] = {
0x1d552, 0x1d6a5,
0x1d6a8, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
}; /* CR_Math */
/* 'Alphabetic': Derived Property */
-#define CR_Alphabetic CR_Alpha
+static const OnigCodePoint CR_Alphabetic[] = {
+ 486,
+ 0x0041, 0x005a,
+ 0x0061, 0x007a,
+ 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
+ 0x00c0, 0x00d6,
+ 0x00d8, 0x00f6,
+ 0x00f8, 0x02c1,
+ 0x02c6, 0x02d1,
+ 0x02e0, 0x02e4,
+ 0x02ec, 0x02ec,
+ 0x02ee, 0x02ee,
+ 0x0345, 0x0345,
+ 0x0370, 0x0374,
+ 0x0376, 0x0377,
+ 0x037a, 0x037d,
+ 0x0386, 0x0386,
+ 0x0388, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x03a1,
+ 0x03a3, 0x03f5,
+ 0x03f7, 0x0481,
+ 0x048a, 0x0527,
+ 0x0531, 0x0556,
+ 0x0559, 0x0559,
+ 0x0561, 0x0587,
+ 0x05b0, 0x05bd,
+ 0x05bf, 0x05bf,
+ 0x05c1, 0x05c2,
+ 0x05c4, 0x05c5,
+ 0x05c7, 0x05c7,
+ 0x05d0, 0x05ea,
+ 0x05f0, 0x05f2,
+ 0x0610, 0x061a,
+ 0x0620, 0x0657,
+ 0x0659, 0x065f,
+ 0x066e, 0x06d3,
+ 0x06d5, 0x06dc,
+ 0x06e1, 0x06e8,
+ 0x06ed, 0x06ef,
+ 0x06fa, 0x06fc,
+ 0x06ff, 0x06ff,
+ 0x0710, 0x073f,
+ 0x074d, 0x07b1,
+ 0x07ca, 0x07ea,
+ 0x07f4, 0x07f5,
+ 0x07fa, 0x07fa,
+ 0x0800, 0x0817,
+ 0x081a, 0x082c,
+ 0x0840, 0x0858,
+ 0x0900, 0x093b,
+ 0x093d, 0x094c,
+ 0x094e, 0x0950,
+ 0x0955, 0x0963,
+ 0x0971, 0x0977,
+ 0x0979, 0x097f,
+ 0x0981, 0x0983,
+ 0x0985, 0x098c,
+ 0x098f, 0x0990,
+ 0x0993, 0x09a8,
+ 0x09aa, 0x09b0,
+ 0x09b2, 0x09b2,
+ 0x09b6, 0x09b9,
+ 0x09bd, 0x09c4,
+ 0x09c7, 0x09c8,
+ 0x09cb, 0x09cc,
+ 0x09ce, 0x09ce,
+ 0x09d7, 0x09d7,
+ 0x09dc, 0x09dd,
+ 0x09df, 0x09e3,
+ 0x09f0, 0x09f1,
+ 0x0a01, 0x0a03,
+ 0x0a05, 0x0a0a,
+ 0x0a0f, 0x0a10,
+ 0x0a13, 0x0a28,
+ 0x0a2a, 0x0a30,
+ 0x0a32, 0x0a33,
+ 0x0a35, 0x0a36,
+ 0x0a38, 0x0a39,
+ 0x0a3e, 0x0a42,
+ 0x0a47, 0x0a48,
+ 0x0a4b, 0x0a4c,
+ 0x0a51, 0x0a51,
+ 0x0a59, 0x0a5c,
+ 0x0a5e, 0x0a5e,
+ 0x0a70, 0x0a75,
+ 0x0a81, 0x0a83,
+ 0x0a85, 0x0a8d,
+ 0x0a8f, 0x0a91,
+ 0x0a93, 0x0aa8,
+ 0x0aaa, 0x0ab0,
+ 0x0ab2, 0x0ab3,
+ 0x0ab5, 0x0ab9,
+ 0x0abd, 0x0ac5,
+ 0x0ac7, 0x0ac9,
+ 0x0acb, 0x0acc,
+ 0x0ad0, 0x0ad0,
+ 0x0ae0, 0x0ae3,
+ 0x0b01, 0x0b03,
+ 0x0b05, 0x0b0c,
+ 0x0b0f, 0x0b10,
+ 0x0b13, 0x0b28,
+ 0x0b2a, 0x0b30,
+ 0x0b32, 0x0b33,
+ 0x0b35, 0x0b39,
+ 0x0b3d, 0x0b44,
+ 0x0b47, 0x0b48,
+ 0x0b4b, 0x0b4c,
+ 0x0b56, 0x0b57,
+ 0x0b5c, 0x0b5d,
+ 0x0b5f, 0x0b63,
+ 0x0b71, 0x0b71,
+ 0x0b82, 0x0b83,
+ 0x0b85, 0x0b8a,
+ 0x0b8e, 0x0b90,
+ 0x0b92, 0x0b95,
+ 0x0b99, 0x0b9a,
+ 0x0b9c, 0x0b9c,
+ 0x0b9e, 0x0b9f,
+ 0x0ba3, 0x0ba4,
+ 0x0ba8, 0x0baa,
+ 0x0bae, 0x0bb9,
+ 0x0bbe, 0x0bc2,
+ 0x0bc6, 0x0bc8,
+ 0x0bca, 0x0bcc,
+ 0x0bd0, 0x0bd0,
+ 0x0bd7, 0x0bd7,
+ 0x0c01, 0x0c03,
+ 0x0c05, 0x0c0c,
+ 0x0c0e, 0x0c10,
+ 0x0c12, 0x0c28,
+ 0x0c2a, 0x0c33,
+ 0x0c35, 0x0c39,
+ 0x0c3d, 0x0c44,
+ 0x0c46, 0x0c48,
+ 0x0c4a, 0x0c4c,
+ 0x0c55, 0x0c56,
+ 0x0c58, 0x0c59,
+ 0x0c60, 0x0c63,
+ 0x0c82, 0x0c83,
+ 0x0c85, 0x0c8c,
+ 0x0c8e, 0x0c90,
+ 0x0c92, 0x0ca8,
+ 0x0caa, 0x0cb3,
+ 0x0cb5, 0x0cb9,
+ 0x0cbd, 0x0cc4,
+ 0x0cc6, 0x0cc8,
+ 0x0cca, 0x0ccc,
+ 0x0cd5, 0x0cd6,
+ 0x0cde, 0x0cde,
+ 0x0ce0, 0x0ce3,
+ 0x0cf1, 0x0cf2,
+ 0x0d02, 0x0d03,
+ 0x0d05, 0x0d0c,
+ 0x0d0e, 0x0d10,
+ 0x0d12, 0x0d3a,
+ 0x0d3d, 0x0d44,
+ 0x0d46, 0x0d48,
+ 0x0d4a, 0x0d4c,
+ 0x0d4e, 0x0d4e,
+ 0x0d57, 0x0d57,
+ 0x0d60, 0x0d63,
+ 0x0d7a, 0x0d7f,
+ 0x0d82, 0x0d83,
+ 0x0d85, 0x0d96,
+ 0x0d9a, 0x0db1,
+ 0x0db3, 0x0dbb,
+ 0x0dbd, 0x0dbd,
+ 0x0dc0, 0x0dc6,
+ 0x0dcf, 0x0dd4,
+ 0x0dd6, 0x0dd6,
+ 0x0dd8, 0x0ddf,
+ 0x0df2, 0x0df3,
+ 0x0e01, 0x0e3a,
+ 0x0e40, 0x0e46,
+ 0x0e4d, 0x0e4d,
+ 0x0e81, 0x0e82,
+ 0x0e84, 0x0e84,
+ 0x0e87, 0x0e88,
+ 0x0e8a, 0x0e8a,
+ 0x0e8d, 0x0e8d,
+ 0x0e94, 0x0e97,
+ 0x0e99, 0x0e9f,
+ 0x0ea1, 0x0ea3,
+ 0x0ea5, 0x0ea5,
+ 0x0ea7, 0x0ea7,
+ 0x0eaa, 0x0eab,
+ 0x0ead, 0x0eb9,
+ 0x0ebb, 0x0ebd,
+ 0x0ec0, 0x0ec4,
+ 0x0ec6, 0x0ec6,
+ 0x0ecd, 0x0ecd,
+ 0x0edc, 0x0edd,
+ 0x0f00, 0x0f00,
+ 0x0f40, 0x0f47,
+ 0x0f49, 0x0f6c,
+ 0x0f71, 0x0f81,
+ 0x0f88, 0x0f97,
+ 0x0f99, 0x0fbc,
+ 0x1000, 0x1036,
+ 0x1038, 0x1038,
+ 0x103b, 0x103f,
+ 0x1050, 0x1062,
+ 0x1065, 0x1068,
+ 0x106e, 0x1086,
+ 0x108e, 0x108e,
+ 0x109c, 0x109d,
+ 0x10a0, 0x10c5,
+ 0x10d0, 0x10fa,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
+ 0x124a, 0x124d,
+ 0x1250, 0x1256,
+ 0x1258, 0x1258,
+ 0x125a, 0x125d,
+ 0x1260, 0x1288,
+ 0x128a, 0x128d,
+ 0x1290, 0x12b0,
+ 0x12b2, 0x12b5,
+ 0x12b8, 0x12be,
+ 0x12c0, 0x12c0,
+ 0x12c2, 0x12c5,
+ 0x12c8, 0x12d6,
+ 0x12d8, 0x1310,
+ 0x1312, 0x1315,
+ 0x1318, 0x135a,
+ 0x135f, 0x135f,
+ 0x1380, 0x138f,
+ 0x13a0, 0x13f4,
+ 0x1401, 0x166c,
+ 0x166f, 0x167f,
+ 0x1681, 0x169a,
+ 0x16a0, 0x16ea,
+ 0x16ee, 0x16f0,
+ 0x1700, 0x170c,
+ 0x170e, 0x1713,
+ 0x1720, 0x1733,
+ 0x1740, 0x1753,
+ 0x1760, 0x176c,
+ 0x176e, 0x1770,
+ 0x1772, 0x1773,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17c8,
+ 0x17d7, 0x17d7,
+ 0x17dc, 0x17dc,
+ 0x1820, 0x1877,
+ 0x1880, 0x18aa,
+ 0x18b0, 0x18f5,
+ 0x1900, 0x191c,
+ 0x1920, 0x192b,
+ 0x1930, 0x1938,
+ 0x1950, 0x196d,
+ 0x1970, 0x1974,
+ 0x1980, 0x19ab,
+ 0x19b0, 0x19c9,
+ 0x1a00, 0x1a1b,
+ 0x1a20, 0x1a5e,
+ 0x1a61, 0x1a74,
+ 0x1aa7, 0x1aa7,
+ 0x1b00, 0x1b33,
+ 0x1b35, 0x1b43,
+ 0x1b45, 0x1b4b,
+ 0x1b80, 0x1ba9,
+ 0x1bae, 0x1baf,
+ 0x1bc0, 0x1be5,
+ 0x1be7, 0x1bf1,
+ 0x1c00, 0x1c35,
+ 0x1c4d, 0x1c4f,
+ 0x1c5a, 0x1c7d,
+ 0x1ce9, 0x1cec,
+ 0x1cee, 0x1cf2,
+ 0x1d00, 0x1dbf,
+ 0x1e00, 0x1f15,
+ 0x1f18, 0x1f1d,
+ 0x1f20, 0x1f45,
+ 0x1f48, 0x1f4d,
+ 0x1f50, 0x1f57,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f7d,
+ 0x1f80, 0x1fb4,
+ 0x1fb6, 0x1fbc,
+ 0x1fbe, 0x1fbe,
+ 0x1fc2, 0x1fc4,
+ 0x1fc6, 0x1fcc,
+ 0x1fd0, 0x1fd3,
+ 0x1fd6, 0x1fdb,
+ 0x1fe0, 0x1fec,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ffc,
+ 0x2071, 0x2071,
+ 0x207f, 0x207f,
+ 0x2090, 0x209c,
+ 0x2102, 0x2102,
+ 0x2107, 0x2107,
+ 0x210a, 0x2113,
+ 0x2115, 0x2115,
+ 0x2119, 0x211d,
+ 0x2124, 0x2124,
+ 0x2126, 0x2126,
+ 0x2128, 0x2128,
+ 0x212a, 0x212d,
+ 0x212f, 0x2139,
+ 0x213c, 0x213f,
+ 0x2145, 0x2149,
+ 0x214e, 0x214e,
+ 0x2160, 0x2188,
+ 0x24b6, 0x24e9,
+ 0x2c00, 0x2c2e,
+ 0x2c30, 0x2c5e,
+ 0x2c60, 0x2ce4,
+ 0x2ceb, 0x2cee,
+ 0x2d00, 0x2d25,
+ 0x2d30, 0x2d65,
+ 0x2d6f, 0x2d6f,
+ 0x2d80, 0x2d96,
+ 0x2da0, 0x2da6,
+ 0x2da8, 0x2dae,
+ 0x2db0, 0x2db6,
+ 0x2db8, 0x2dbe,
+ 0x2dc0, 0x2dc6,
+ 0x2dc8, 0x2dce,
+ 0x2dd0, 0x2dd6,
+ 0x2dd8, 0x2dde,
+ 0x2de0, 0x2dff,
+ 0x2e2f, 0x2e2f,
+ 0x3005, 0x3007,
+ 0x3021, 0x3029,
+ 0x3031, 0x3035,
+ 0x3038, 0x303c,
+ 0x3041, 0x3096,
+ 0x309d, 0x309f,
+ 0x30a1, 0x30fa,
+ 0x30fc, 0x30ff,
+ 0x3105, 0x312d,
+ 0x3131, 0x318e,
+ 0x31a0, 0x31ba,
+ 0x31f0, 0x31ff,
+ 0x3400, 0x4db5,
+ 0x4e00, 0x9fcb,
+ 0xa000, 0xa48c,
+ 0xa4d0, 0xa4fd,
+ 0xa500, 0xa60c,
+ 0xa610, 0xa61f,
+ 0xa62a, 0xa62b,
+ 0xa640, 0xa66e,
+ 0xa67f, 0xa697,
+ 0xa6a0, 0xa6ef,
+ 0xa717, 0xa71f,
+ 0xa722, 0xa788,
+ 0xa78b, 0xa78e,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
+ 0xa803, 0xa805,
+ 0xa807, 0xa80a,
+ 0xa80c, 0xa827,
+ 0xa840, 0xa873,
+ 0xa880, 0xa8c3,
+ 0xa8f2, 0xa8f7,
+ 0xa8fb, 0xa8fb,
+ 0xa90a, 0xa92a,
+ 0xa930, 0xa952,
+ 0xa960, 0xa97c,
+ 0xa980, 0xa9b2,
+ 0xa9b4, 0xa9bf,
+ 0xa9cf, 0xa9cf,
+ 0xaa00, 0xaa36,
+ 0xaa40, 0xaa4d,
+ 0xaa60, 0xaa76,
+ 0xaa7a, 0xaa7a,
+ 0xaa80, 0xaabe,
+ 0xaac0, 0xaac0,
+ 0xaac2, 0xaac2,
+ 0xaadb, 0xaadd,
+ 0xab01, 0xab06,
+ 0xab09, 0xab0e,
+ 0xab11, 0xab16,
+ 0xab20, 0xab26,
+ 0xab28, 0xab2e,
+ 0xabc0, 0xabea,
+ 0xac00, 0xd7a3,
+ 0xd7b0, 0xd7c6,
+ 0xd7cb, 0xd7fb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
+ 0xfa70, 0xfad9,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xfb1d, 0xfb28,
+ 0xfb2a, 0xfb36,
+ 0xfb38, 0xfb3c,
+ 0xfb3e, 0xfb3e,
+ 0xfb40, 0xfb41,
+ 0xfb43, 0xfb44,
+ 0xfb46, 0xfbb1,
+ 0xfbd3, 0xfd3d,
+ 0xfd50, 0xfd8f,
+ 0xfd92, 0xfdc7,
+ 0xfdf0, 0xfdfb,
+ 0xfe70, 0xfe74,
+ 0xfe76, 0xfefc,
+ 0xff21, 0xff3a,
+ 0xff41, 0xff5a,
+ 0xff66, 0xffbe,
+ 0xffc2, 0xffc7,
+ 0xffca, 0xffcf,
+ 0xffd2, 0xffd7,
+ 0xffda, 0xffdc,
+ 0x10000, 0x1000b,
+ 0x1000d, 0x10026,
+ 0x10028, 0x1003a,
+ 0x1003c, 0x1003d,
+ 0x1003f, 0x1004d,
+ 0x10050, 0x1005d,
+ 0x10080, 0x100fa,
+ 0x10140, 0x10174,
+ 0x10280, 0x1029c,
+ 0x102a0, 0x102d0,
+ 0x10300, 0x1031e,
+ 0x10330, 0x1034a,
+ 0x10380, 0x1039d,
+ 0x103a0, 0x103c3,
+ 0x103c8, 0x103cf,
+ 0x103d1, 0x103d5,
+ 0x10400, 0x1049d,
+ 0x10800, 0x10805,
+ 0x10808, 0x10808,
+ 0x1080a, 0x10835,
+ 0x10837, 0x10838,
+ 0x1083c, 0x1083c,
+ 0x1083f, 0x10855,
+ 0x10900, 0x10915,
+ 0x10920, 0x10939,
+ 0x10a00, 0x10a03,
+ 0x10a05, 0x10a06,
+ 0x10a0c, 0x10a13,
+ 0x10a15, 0x10a17,
+ 0x10a19, 0x10a33,
+ 0x10a60, 0x10a7c,
+ 0x10b00, 0x10b35,
+ 0x10b40, 0x10b55,
+ 0x10b60, 0x10b72,
+ 0x10c00, 0x10c48,
+ 0x11000, 0x11045,
+ 0x11082, 0x110b8,
+ 0x12000, 0x1236e,
+ 0x12400, 0x12462,
+ 0x13000, 0x1342e,
+ 0x16800, 0x16a38,
+ 0x1b000, 0x1b001,
+ 0x1d400, 0x1d454,
+ 0x1d456, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d51e, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d552, 0x1d6a5,
+ 0x1d6a8, 0x1d6c0,
+ 0x1d6c2, 0x1d6da,
+ 0x1d6dc, 0x1d6fa,
+ 0x1d6fc, 0x1d714,
+ 0x1d716, 0x1d734,
+ 0x1d736, 0x1d74e,
+ 0x1d750, 0x1d76e,
+ 0x1d770, 0x1d788,
+ 0x1d78a, 0x1d7a8,
+ 0x1d7aa, 0x1d7c2,
+ 0x1d7c4, 0x1d7cb,
+ 0x20000, 0x2a6d6,
+ 0x2a700, 0x2b734,
+ 0x2b740, 0x2b81d,
+ 0x2f800, 0x2fa1d,
+}; /* CR_Alphabetic */
/* 'Lowercase': Derived Property */
-#define CR_Lowercase CR_Lower
+static const OnigCodePoint CR_Lowercase[] = {
+ 612,
+ 0x0061, 0x007a,
+ 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
+ 0x00df, 0x00f6,
+ 0x00f8, 0x00ff,
+ 0x0101, 0x0101,
+ 0x0103, 0x0103,
+ 0x0105, 0x0105,
+ 0x0107, 0x0107,
+ 0x0109, 0x0109,
+ 0x010b, 0x010b,
+ 0x010d, 0x010d,
+ 0x010f, 0x010f,
+ 0x0111, 0x0111,
+ 0x0113, 0x0113,
+ 0x0115, 0x0115,
+ 0x0117, 0x0117,
+ 0x0119, 0x0119,
+ 0x011b, 0x011b,
+ 0x011d, 0x011d,
+ 0x011f, 0x011f,
+ 0x0121, 0x0121,
+ 0x0123, 0x0123,
+ 0x0125, 0x0125,
+ 0x0127, 0x0127,
+ 0x0129, 0x0129,
+ 0x012b, 0x012b,
+ 0x012d, 0x012d,
+ 0x012f, 0x012f,
+ 0x0131, 0x0131,
+ 0x0133, 0x0133,
+ 0x0135, 0x0135,
+ 0x0137, 0x0138,
+ 0x013a, 0x013a,
+ 0x013c, 0x013c,
+ 0x013e, 0x013e,
+ 0x0140, 0x0140,
+ 0x0142, 0x0142,
+ 0x0144, 0x0144,
+ 0x0146, 0x0146,
+ 0x0148, 0x0149,
+ 0x014b, 0x014b,
+ 0x014d, 0x014d,
+ 0x014f, 0x014f,
+ 0x0151, 0x0151,
+ 0x0153, 0x0153,
+ 0x0155, 0x0155,
+ 0x0157, 0x0157,
+ 0x0159, 0x0159,
+ 0x015b, 0x015b,
+ 0x015d, 0x015d,
+ 0x015f, 0x015f,
+ 0x0161, 0x0161,
+ 0x0163, 0x0163,
+ 0x0165, 0x0165,
+ 0x0167, 0x0167,
+ 0x0169, 0x0169,
+ 0x016b, 0x016b,
+ 0x016d, 0x016d,
+ 0x016f, 0x016f,
+ 0x0171, 0x0171,
+ 0x0173, 0x0173,
+ 0x0175, 0x0175,
+ 0x0177, 0x0177,
+ 0x017a, 0x017a,
+ 0x017c, 0x017c,
+ 0x017e, 0x0180,
+ 0x0183, 0x0183,
+ 0x0185, 0x0185,
+ 0x0188, 0x0188,
+ 0x018c, 0x018d,
+ 0x0192, 0x0192,
+ 0x0195, 0x0195,
+ 0x0199, 0x019b,
+ 0x019e, 0x019e,
+ 0x01a1, 0x01a1,
+ 0x01a3, 0x01a3,
+ 0x01a5, 0x01a5,
+ 0x01a8, 0x01a8,
+ 0x01aa, 0x01ab,
+ 0x01ad, 0x01ad,
+ 0x01b0, 0x01b0,
+ 0x01b4, 0x01b4,
+ 0x01b6, 0x01b6,
+ 0x01b9, 0x01ba,
+ 0x01bd, 0x01bf,
+ 0x01c6, 0x01c6,
+ 0x01c9, 0x01c9,
+ 0x01cc, 0x01cc,
+ 0x01ce, 0x01ce,
+ 0x01d0, 0x01d0,
+ 0x01d2, 0x01d2,
+ 0x01d4, 0x01d4,
+ 0x01d6, 0x01d6,
+ 0x01d8, 0x01d8,
+ 0x01da, 0x01da,
+ 0x01dc, 0x01dd,
+ 0x01df, 0x01df,
+ 0x01e1, 0x01e1,
+ 0x01e3, 0x01e3,
+ 0x01e5, 0x01e5,
+ 0x01e7, 0x01e7,
+ 0x01e9, 0x01e9,
+ 0x01eb, 0x01eb,
+ 0x01ed, 0x01ed,
+ 0x01ef, 0x01f0,
+ 0x01f3, 0x01f3,
+ 0x01f5, 0x01f5,
+ 0x01f9, 0x01f9,
+ 0x01fb, 0x01fb,
+ 0x01fd, 0x01fd,
+ 0x01ff, 0x01ff,
+ 0x0201, 0x0201,
+ 0x0203, 0x0203,
+ 0x0205, 0x0205,
+ 0x0207, 0x0207,
+ 0x0209, 0x0209,
+ 0x020b, 0x020b,
+ 0x020d, 0x020d,
+ 0x020f, 0x020f,
+ 0x0211, 0x0211,
+ 0x0213, 0x0213,
+ 0x0215, 0x0215,
+ 0x0217, 0x0217,
+ 0x0219, 0x0219,
+ 0x021b, 0x021b,
+ 0x021d, 0x021d,
+ 0x021f, 0x021f,
+ 0x0221, 0x0221,
+ 0x0223, 0x0223,
+ 0x0225, 0x0225,
+ 0x0227, 0x0227,
+ 0x0229, 0x0229,
+ 0x022b, 0x022b,
+ 0x022d, 0x022d,
+ 0x022f, 0x022f,
+ 0x0231, 0x0231,
+ 0x0233, 0x0239,
+ 0x023c, 0x023c,
+ 0x023f, 0x0240,
+ 0x0242, 0x0242,
+ 0x0247, 0x0247,
+ 0x0249, 0x0249,
+ 0x024b, 0x024b,
+ 0x024d, 0x024d,
+ 0x024f, 0x0293,
+ 0x0295, 0x02b8,
+ 0x02c0, 0x02c1,
+ 0x02e0, 0x02e4,
+ 0x0345, 0x0345,
+ 0x0371, 0x0371,
+ 0x0373, 0x0373,
+ 0x0377, 0x0377,
+ 0x037a, 0x037d,
+ 0x0390, 0x0390,
+ 0x03ac, 0x03ce,
+ 0x03d0, 0x03d1,
+ 0x03d5, 0x03d7,
+ 0x03d9, 0x03d9,
+ 0x03db, 0x03db,
+ 0x03dd, 0x03dd,
+ 0x03df, 0x03df,
+ 0x03e1, 0x03e1,
+ 0x03e3, 0x03e3,
+ 0x03e5, 0x03e5,
+ 0x03e7, 0x03e7,
+ 0x03e9, 0x03e9,
+ 0x03eb, 0x03eb,
+ 0x03ed, 0x03ed,
+ 0x03ef, 0x03f3,
+ 0x03f5, 0x03f5,
+ 0x03f8, 0x03f8,
+ 0x03fb, 0x03fc,
+ 0x0430, 0x045f,
+ 0x0461, 0x0461,
+ 0x0463, 0x0463,
+ 0x0465, 0x0465,
+ 0x0467, 0x0467,
+ 0x0469, 0x0469,
+ 0x046b, 0x046b,
+ 0x046d, 0x046d,
+ 0x046f, 0x046f,
+ 0x0471, 0x0471,
+ 0x0473, 0x0473,
+ 0x0475, 0x0475,
+ 0x0477, 0x0477,
+ 0x0479, 0x0479,
+ 0x047b, 0x047b,
+ 0x047d, 0x047d,
+ 0x047f, 0x047f,
+ 0x0481, 0x0481,
+ 0x048b, 0x048b,
+ 0x048d, 0x048d,
+ 0x048f, 0x048f,
+ 0x0491, 0x0491,
+ 0x0493, 0x0493,
+ 0x0495, 0x0495,
+ 0x0497, 0x0497,
+ 0x0499, 0x0499,
+ 0x049b, 0x049b,
+ 0x049d, 0x049d,
+ 0x049f, 0x049f,
+ 0x04a1, 0x04a1,
+ 0x04a3, 0x04a3,
+ 0x04a5, 0x04a5,
+ 0x04a7, 0x04a7,
+ 0x04a9, 0x04a9,
+ 0x04ab, 0x04ab,
+ 0x04ad, 0x04ad,
+ 0x04af, 0x04af,
+ 0x04b1, 0x04b1,
+ 0x04b3, 0x04b3,
+ 0x04b5, 0x04b5,
+ 0x04b7, 0x04b7,
+ 0x04b9, 0x04b9,
+ 0x04bb, 0x04bb,
+ 0x04bd, 0x04bd,
+ 0x04bf, 0x04bf,
+ 0x04c2, 0x04c2,
+ 0x04c4, 0x04c4,
+ 0x04c6, 0x04c6,
+ 0x04c8, 0x04c8,
+ 0x04ca, 0x04ca,
+ 0x04cc, 0x04cc,
+ 0x04ce, 0x04cf,
+ 0x04d1, 0x04d1,
+ 0x04d3, 0x04d3,
+ 0x04d5, 0x04d5,
+ 0x04d7, 0x04d7,
+ 0x04d9, 0x04d9,
+ 0x04db, 0x04db,
+ 0x04dd, 0x04dd,
+ 0x04df, 0x04df,
+ 0x04e1, 0x04e1,
+ 0x04e3, 0x04e3,
+ 0x04e5, 0x04e5,
+ 0x04e7, 0x04e7,
+ 0x04e9, 0x04e9,
+ 0x04eb, 0x04eb,
+ 0x04ed, 0x04ed,
+ 0x04ef, 0x04ef,
+ 0x04f1, 0x04f1,
+ 0x04f3, 0x04f3,
+ 0x04f5, 0x04f5,
+ 0x04f7, 0x04f7,
+ 0x04f9, 0x04f9,
+ 0x04fb, 0x04fb,
+ 0x04fd, 0x04fd,
+ 0x04ff, 0x04ff,
+ 0x0501, 0x0501,
+ 0x0503, 0x0503,
+ 0x0505, 0x0505,
+ 0x0507, 0x0507,
+ 0x0509, 0x0509,
+ 0x050b, 0x050b,
+ 0x050d, 0x050d,
+ 0x050f, 0x050f,
+ 0x0511, 0x0511,
+ 0x0513, 0x0513,
+ 0x0515, 0x0515,
+ 0x0517, 0x0517,
+ 0x0519, 0x0519,
+ 0x051b, 0x051b,
+ 0x051d, 0x051d,
+ 0x051f, 0x051f,
+ 0x0521, 0x0521,
+ 0x0523, 0x0523,
+ 0x0525, 0x0525,
+ 0x0527, 0x0527,
+ 0x0561, 0x0587,
+ 0x1d00, 0x1dbf,
+ 0x1e01, 0x1e01,
+ 0x1e03, 0x1e03,
+ 0x1e05, 0x1e05,
+ 0x1e07, 0x1e07,
+ 0x1e09, 0x1e09,
+ 0x1e0b, 0x1e0b,
+ 0x1e0d, 0x1e0d,
+ 0x1e0f, 0x1e0f,
+ 0x1e11, 0x1e11,
+ 0x1e13, 0x1e13,
+ 0x1e15, 0x1e15,
+ 0x1e17, 0x1e17,
+ 0x1e19, 0x1e19,
+ 0x1e1b, 0x1e1b,
+ 0x1e1d, 0x1e1d,
+ 0x1e1f, 0x1e1f,
+ 0x1e21, 0x1e21,
+ 0x1e23, 0x1e23,
+ 0x1e25, 0x1e25,
+ 0x1e27, 0x1e27,
+ 0x1e29, 0x1e29,
+ 0x1e2b, 0x1e2b,
+ 0x1e2d, 0x1e2d,
+ 0x1e2f, 0x1e2f,
+ 0x1e31, 0x1e31,
+ 0x1e33, 0x1e33,
+ 0x1e35, 0x1e35,
+ 0x1e37, 0x1e37,
+ 0x1e39, 0x1e39,
+ 0x1e3b, 0x1e3b,
+ 0x1e3d, 0x1e3d,
+ 0x1e3f, 0x1e3f,
+ 0x1e41, 0x1e41,
+ 0x1e43, 0x1e43,
+ 0x1e45, 0x1e45,
+ 0x1e47, 0x1e47,
+ 0x1e49, 0x1e49,
+ 0x1e4b, 0x1e4b,
+ 0x1e4d, 0x1e4d,
+ 0x1e4f, 0x1e4f,
+ 0x1e51, 0x1e51,
+ 0x1e53, 0x1e53,
+ 0x1e55, 0x1e55,
+ 0x1e57, 0x1e57,
+ 0x1e59, 0x1e59,
+ 0x1e5b, 0x1e5b,
+ 0x1e5d, 0x1e5d,
+ 0x1e5f, 0x1e5f,
+ 0x1e61, 0x1e61,
+ 0x1e63, 0x1e63,
+ 0x1e65, 0x1e65,
+ 0x1e67, 0x1e67,
+ 0x1e69, 0x1e69,
+ 0x1e6b, 0x1e6b,
+ 0x1e6d, 0x1e6d,
+ 0x1e6f, 0x1e6f,
+ 0x1e71, 0x1e71,
+ 0x1e73, 0x1e73,
+ 0x1e75, 0x1e75,
+ 0x1e77, 0x1e77,
+ 0x1e79, 0x1e79,
+ 0x1e7b, 0x1e7b,
+ 0x1e7d, 0x1e7d,
+ 0x1e7f, 0x1e7f,
+ 0x1e81, 0x1e81,
+ 0x1e83, 0x1e83,
+ 0x1e85, 0x1e85,
+ 0x1e87, 0x1e87,
+ 0x1e89, 0x1e89,
+ 0x1e8b, 0x1e8b,
+ 0x1e8d, 0x1e8d,
+ 0x1e8f, 0x1e8f,
+ 0x1e91, 0x1e91,
+ 0x1e93, 0x1e93,
+ 0x1e95, 0x1e9d,
+ 0x1e9f, 0x1e9f,
+ 0x1ea1, 0x1ea1,
+ 0x1ea3, 0x1ea3,
+ 0x1ea5, 0x1ea5,
+ 0x1ea7, 0x1ea7,
+ 0x1ea9, 0x1ea9,
+ 0x1eab, 0x1eab,
+ 0x1ead, 0x1ead,
+ 0x1eaf, 0x1eaf,
+ 0x1eb1, 0x1eb1,
+ 0x1eb3, 0x1eb3,
+ 0x1eb5, 0x1eb5,
+ 0x1eb7, 0x1eb7,
+ 0x1eb9, 0x1eb9,
+ 0x1ebb, 0x1ebb,
+ 0x1ebd, 0x1ebd,
+ 0x1ebf, 0x1ebf,
+ 0x1ec1, 0x1ec1,
+ 0x1ec3, 0x1ec3,
+ 0x1ec5, 0x1ec5,
+ 0x1ec7, 0x1ec7,
+ 0x1ec9, 0x1ec9,
+ 0x1ecb, 0x1ecb,
+ 0x1ecd, 0x1ecd,
+ 0x1ecf, 0x1ecf,
+ 0x1ed1, 0x1ed1,
+ 0x1ed3, 0x1ed3,
+ 0x1ed5, 0x1ed5,
+ 0x1ed7, 0x1ed7,
+ 0x1ed9, 0x1ed9,
+ 0x1edb, 0x1edb,
+ 0x1edd, 0x1edd,
+ 0x1edf, 0x1edf,
+ 0x1ee1, 0x1ee1,
+ 0x1ee3, 0x1ee3,
+ 0x1ee5, 0x1ee5,
+ 0x1ee7, 0x1ee7,
+ 0x1ee9, 0x1ee9,
+ 0x1eeb, 0x1eeb,
+ 0x1eed, 0x1eed,
+ 0x1eef, 0x1eef,
+ 0x1ef1, 0x1ef1,
+ 0x1ef3, 0x1ef3,
+ 0x1ef5, 0x1ef5,
+ 0x1ef7, 0x1ef7,
+ 0x1ef9, 0x1ef9,
+ 0x1efb, 0x1efb,
+ 0x1efd, 0x1efd,
+ 0x1eff, 0x1f07,
+ 0x1f10, 0x1f15,
+ 0x1f20, 0x1f27,
+ 0x1f30, 0x1f37,
+ 0x1f40, 0x1f45,
+ 0x1f50, 0x1f57,
+ 0x1f60, 0x1f67,
+ 0x1f70, 0x1f7d,
+ 0x1f80, 0x1f87,
+ 0x1f90, 0x1f97,
+ 0x1fa0, 0x1fa7,
+ 0x1fb0, 0x1fb4,
+ 0x1fb6, 0x1fb7,
+ 0x1fbe, 0x1fbe,
+ 0x1fc2, 0x1fc4,
+ 0x1fc6, 0x1fc7,
+ 0x1fd0, 0x1fd3,
+ 0x1fd6, 0x1fd7,
+ 0x1fe0, 0x1fe7,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ff7,
+ 0x2090, 0x2094,
+ 0x210a, 0x210a,
+ 0x210e, 0x210f,
+ 0x2113, 0x2113,
+ 0x212f, 0x212f,
+ 0x2134, 0x2134,
+ 0x2139, 0x2139,
+ 0x213c, 0x213d,
+ 0x2146, 0x2149,
+ 0x214e, 0x214e,
+ 0x2170, 0x217f,
+ 0x2184, 0x2184,
+ 0x24d0, 0x24e9,
+ 0x2c30, 0x2c5e,
+ 0x2c61, 0x2c61,
+ 0x2c65, 0x2c66,
+ 0x2c68, 0x2c68,
+ 0x2c6a, 0x2c6a,
+ 0x2c6c, 0x2c6c,
+ 0x2c71, 0x2c71,
+ 0x2c73, 0x2c74,
+ 0x2c76, 0x2c7d,
+ 0x2c81, 0x2c81,
+ 0x2c83, 0x2c83,
+ 0x2c85, 0x2c85,
+ 0x2c87, 0x2c87,
+ 0x2c89, 0x2c89,
+ 0x2c8b, 0x2c8b,
+ 0x2c8d, 0x2c8d,
+ 0x2c8f, 0x2c8f,
+ 0x2c91, 0x2c91,
+ 0x2c93, 0x2c93,
+ 0x2c95, 0x2c95,
+ 0x2c97, 0x2c97,
+ 0x2c99, 0x2c99,
+ 0x2c9b, 0x2c9b,
+ 0x2c9d, 0x2c9d,
+ 0x2c9f, 0x2c9f,
+ 0x2ca1, 0x2ca1,
+ 0x2ca3, 0x2ca3,
+ 0x2ca5, 0x2ca5,
+ 0x2ca7, 0x2ca7,
+ 0x2ca9, 0x2ca9,
+ 0x2cab, 0x2cab,
+ 0x2cad, 0x2cad,
+ 0x2caf, 0x2caf,
+ 0x2cb1, 0x2cb1,
+ 0x2cb3, 0x2cb3,
+ 0x2cb5, 0x2cb5,
+ 0x2cb7, 0x2cb7,
+ 0x2cb9, 0x2cb9,
+ 0x2cbb, 0x2cbb,
+ 0x2cbd, 0x2cbd,
+ 0x2cbf, 0x2cbf,
+ 0x2cc1, 0x2cc1,
+ 0x2cc3, 0x2cc3,
+ 0x2cc5, 0x2cc5,
+ 0x2cc7, 0x2cc7,
+ 0x2cc9, 0x2cc9,
+ 0x2ccb, 0x2ccb,
+ 0x2ccd, 0x2ccd,
+ 0x2ccf, 0x2ccf,
+ 0x2cd1, 0x2cd1,
+ 0x2cd3, 0x2cd3,
+ 0x2cd5, 0x2cd5,
+ 0x2cd7, 0x2cd7,
+ 0x2cd9, 0x2cd9,
+ 0x2cdb, 0x2cdb,
+ 0x2cdd, 0x2cdd,
+ 0x2cdf, 0x2cdf,
+ 0x2ce1, 0x2ce1,
+ 0x2ce3, 0x2ce4,
+ 0x2cec, 0x2cec,
+ 0x2cee, 0x2cee,
+ 0x2d00, 0x2d25,
+ 0xa641, 0xa641,
+ 0xa643, 0xa643,
+ 0xa645, 0xa645,
+ 0xa647, 0xa647,
+ 0xa649, 0xa649,
+ 0xa64b, 0xa64b,
+ 0xa64d, 0xa64d,
+ 0xa64f, 0xa64f,
+ 0xa651, 0xa651,
+ 0xa653, 0xa653,
+ 0xa655, 0xa655,
+ 0xa657, 0xa657,
+ 0xa659, 0xa659,
+ 0xa65b, 0xa65b,
+ 0xa65d, 0xa65d,
+ 0xa65f, 0xa65f,
+ 0xa661, 0xa661,
+ 0xa663, 0xa663,
+ 0xa665, 0xa665,
+ 0xa667, 0xa667,
+ 0xa669, 0xa669,
+ 0xa66b, 0xa66b,
+ 0xa66d, 0xa66d,
+ 0xa681, 0xa681,
+ 0xa683, 0xa683,
+ 0xa685, 0xa685,
+ 0xa687, 0xa687,
+ 0xa689, 0xa689,
+ 0xa68b, 0xa68b,
+ 0xa68d, 0xa68d,
+ 0xa68f, 0xa68f,
+ 0xa691, 0xa691,
+ 0xa693, 0xa693,
+ 0xa695, 0xa695,
+ 0xa697, 0xa697,
+ 0xa723, 0xa723,
+ 0xa725, 0xa725,
+ 0xa727, 0xa727,
+ 0xa729, 0xa729,
+ 0xa72b, 0xa72b,
+ 0xa72d, 0xa72d,
+ 0xa72f, 0xa731,
+ 0xa733, 0xa733,
+ 0xa735, 0xa735,
+ 0xa737, 0xa737,
+ 0xa739, 0xa739,
+ 0xa73b, 0xa73b,
+ 0xa73d, 0xa73d,
+ 0xa73f, 0xa73f,
+ 0xa741, 0xa741,
+ 0xa743, 0xa743,
+ 0xa745, 0xa745,
+ 0xa747, 0xa747,
+ 0xa749, 0xa749,
+ 0xa74b, 0xa74b,
+ 0xa74d, 0xa74d,
+ 0xa74f, 0xa74f,
+ 0xa751, 0xa751,
+ 0xa753, 0xa753,
+ 0xa755, 0xa755,
+ 0xa757, 0xa757,
+ 0xa759, 0xa759,
+ 0xa75b, 0xa75b,
+ 0xa75d, 0xa75d,
+ 0xa75f, 0xa75f,
+ 0xa761, 0xa761,
+ 0xa763, 0xa763,
+ 0xa765, 0xa765,
+ 0xa767, 0xa767,
+ 0xa769, 0xa769,
+ 0xa76b, 0xa76b,
+ 0xa76d, 0xa76d,
+ 0xa76f, 0xa778,
+ 0xa77a, 0xa77a,
+ 0xa77c, 0xa77c,
+ 0xa77f, 0xa77f,
+ 0xa781, 0xa781,
+ 0xa783, 0xa783,
+ 0xa785, 0xa785,
+ 0xa787, 0xa787,
+ 0xa78c, 0xa78c,
+ 0xa78e, 0xa78e,
+ 0xa791, 0xa791,
+ 0xa7a1, 0xa7a1,
+ 0xa7a3, 0xa7a3,
+ 0xa7a5, 0xa7a5,
+ 0xa7a7, 0xa7a7,
+ 0xa7a9, 0xa7a9,
+ 0xa7fa, 0xa7fa,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xff41, 0xff5a,
+ 0x10428, 0x1044f,
+ 0x1d41a, 0x1d433,
+ 0x1d44e, 0x1d454,
+ 0x1d456, 0x1d467,
+ 0x1d482, 0x1d49b,
+ 0x1d4b6, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d4cf,
+ 0x1d4ea, 0x1d503,
+ 0x1d51e, 0x1d537,
+ 0x1d552, 0x1d56b,
+ 0x1d586, 0x1d59f,
+ 0x1d5ba, 0x1d5d3,
+ 0x1d5ee, 0x1d607,
+ 0x1d622, 0x1d63b,
+ 0x1d656, 0x1d66f,
+ 0x1d68a, 0x1d6a5,
+ 0x1d6c2, 0x1d6da,
+ 0x1d6dc, 0x1d6e1,
+ 0x1d6fc, 0x1d714,
+ 0x1d716, 0x1d71b,
+ 0x1d736, 0x1d74e,
+ 0x1d750, 0x1d755,
+ 0x1d770, 0x1d788,
+ 0x1d78a, 0x1d78f,
+ 0x1d7aa, 0x1d7c2,
+ 0x1d7c4, 0x1d7c9,
+ 0x1d7cb, 0x1d7cb,
+}; /* CR_Lowercase */
/* 'Uppercase': Derived Property */
-#define CR_Uppercase CR_Upper
+static const OnigCodePoint CR_Uppercase[] = {
+ 605,
+ 0x0041, 0x005a,
+ 0x00c0, 0x00d6,
+ 0x00d8, 0x00de,
+ 0x0100, 0x0100,
+ 0x0102, 0x0102,
+ 0x0104, 0x0104,
+ 0x0106, 0x0106,
+ 0x0108, 0x0108,
+ 0x010a, 0x010a,
+ 0x010c, 0x010c,
+ 0x010e, 0x010e,
+ 0x0110, 0x0110,
+ 0x0112, 0x0112,
+ 0x0114, 0x0114,
+ 0x0116, 0x0116,
+ 0x0118, 0x0118,
+ 0x011a, 0x011a,
+ 0x011c, 0x011c,
+ 0x011e, 0x011e,
+ 0x0120, 0x0120,
+ 0x0122, 0x0122,
+ 0x0124, 0x0124,
+ 0x0126, 0x0126,
+ 0x0128, 0x0128,
+ 0x012a, 0x012a,
+ 0x012c, 0x012c,
+ 0x012e, 0x012e,
+ 0x0130, 0x0130,
+ 0x0132, 0x0132,
+ 0x0134, 0x0134,
+ 0x0136, 0x0136,
+ 0x0139, 0x0139,
+ 0x013b, 0x013b,
+ 0x013d, 0x013d,
+ 0x013f, 0x013f,
+ 0x0141, 0x0141,
+ 0x0143, 0x0143,
+ 0x0145, 0x0145,
+ 0x0147, 0x0147,
+ 0x014a, 0x014a,
+ 0x014c, 0x014c,
+ 0x014e, 0x014e,
+ 0x0150, 0x0150,
+ 0x0152, 0x0152,
+ 0x0154, 0x0154,
+ 0x0156, 0x0156,
+ 0x0158, 0x0158,
+ 0x015a, 0x015a,
+ 0x015c, 0x015c,
+ 0x015e, 0x015e,
+ 0x0160, 0x0160,
+ 0x0162, 0x0162,
+ 0x0164, 0x0164,
+ 0x0166, 0x0166,
+ 0x0168, 0x0168,
+ 0x016a, 0x016a,
+ 0x016c, 0x016c,
+ 0x016e, 0x016e,
+ 0x0170, 0x0170,
+ 0x0172, 0x0172,
+ 0x0174, 0x0174,
+ 0x0176, 0x0176,
+ 0x0178, 0x0179,
+ 0x017b, 0x017b,
+ 0x017d, 0x017d,
+ 0x0181, 0x0182,
+ 0x0184, 0x0184,
+ 0x0186, 0x0187,
+ 0x0189, 0x018b,
+ 0x018e, 0x0191,
+ 0x0193, 0x0194,
+ 0x0196, 0x0198,
+ 0x019c, 0x019d,
+ 0x019f, 0x01a0,
+ 0x01a2, 0x01a2,
+ 0x01a4, 0x01a4,
+ 0x01a6, 0x01a7,
+ 0x01a9, 0x01a9,
+ 0x01ac, 0x01ac,
+ 0x01ae, 0x01af,
+ 0x01b1, 0x01b3,
+ 0x01b5, 0x01b5,
+ 0x01b7, 0x01b8,
+ 0x01bc, 0x01bc,
+ 0x01c4, 0x01c4,
+ 0x01c7, 0x01c7,
+ 0x01ca, 0x01ca,
+ 0x01cd, 0x01cd,
+ 0x01cf, 0x01cf,
+ 0x01d1, 0x01d1,
+ 0x01d3, 0x01d3,
+ 0x01d5, 0x01d5,
+ 0x01d7, 0x01d7,
+ 0x01d9, 0x01d9,
+ 0x01db, 0x01db,
+ 0x01de, 0x01de,
+ 0x01e0, 0x01e0,
+ 0x01e2, 0x01e2,
+ 0x01e4, 0x01e4,
+ 0x01e6, 0x01e6,
+ 0x01e8, 0x01e8,
+ 0x01ea, 0x01ea,
+ 0x01ec, 0x01ec,
+ 0x01ee, 0x01ee,
+ 0x01f1, 0x01f1,
+ 0x01f4, 0x01f4,
+ 0x01f6, 0x01f8,
+ 0x01fa, 0x01fa,
+ 0x01fc, 0x01fc,
+ 0x01fe, 0x01fe,
+ 0x0200, 0x0200,
+ 0x0202, 0x0202,
+ 0x0204, 0x0204,
+ 0x0206, 0x0206,
+ 0x0208, 0x0208,
+ 0x020a, 0x020a,
+ 0x020c, 0x020c,
+ 0x020e, 0x020e,
+ 0x0210, 0x0210,
+ 0x0212, 0x0212,
+ 0x0214, 0x0214,
+ 0x0216, 0x0216,
+ 0x0218, 0x0218,
+ 0x021a, 0x021a,
+ 0x021c, 0x021c,
+ 0x021e, 0x021e,
+ 0x0220, 0x0220,
+ 0x0222, 0x0222,
+ 0x0224, 0x0224,
+ 0x0226, 0x0226,
+ 0x0228, 0x0228,
+ 0x022a, 0x022a,
+ 0x022c, 0x022c,
+ 0x022e, 0x022e,
+ 0x0230, 0x0230,
+ 0x0232, 0x0232,
+ 0x023a, 0x023b,
+ 0x023d, 0x023e,
+ 0x0241, 0x0241,
+ 0x0243, 0x0246,
+ 0x0248, 0x0248,
+ 0x024a, 0x024a,
+ 0x024c, 0x024c,
+ 0x024e, 0x024e,
+ 0x0370, 0x0370,
+ 0x0372, 0x0372,
+ 0x0376, 0x0376,
+ 0x0386, 0x0386,
+ 0x0388, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x038f,
+ 0x0391, 0x03a1,
+ 0x03a3, 0x03ab,
+ 0x03cf, 0x03cf,
+ 0x03d2, 0x03d4,
+ 0x03d8, 0x03d8,
+ 0x03da, 0x03da,
+ 0x03dc, 0x03dc,
+ 0x03de, 0x03de,
+ 0x03e0, 0x03e0,
+ 0x03e2, 0x03e2,
+ 0x03e4, 0x03e4,
+ 0x03e6, 0x03e6,
+ 0x03e8, 0x03e8,
+ 0x03ea, 0x03ea,
+ 0x03ec, 0x03ec,
+ 0x03ee, 0x03ee,
+ 0x03f4, 0x03f4,
+ 0x03f7, 0x03f7,
+ 0x03f9, 0x03fa,
+ 0x03fd, 0x042f,
+ 0x0460, 0x0460,
+ 0x0462, 0x0462,
+ 0x0464, 0x0464,
+ 0x0466, 0x0466,
+ 0x0468, 0x0468,
+ 0x046a, 0x046a,
+ 0x046c, 0x046c,
+ 0x046e, 0x046e,
+ 0x0470, 0x0470,
+ 0x0472, 0x0472,
+ 0x0474, 0x0474,
+ 0x0476, 0x0476,
+ 0x0478, 0x0478,
+ 0x047a, 0x047a,
+ 0x047c, 0x047c,
+ 0x047e, 0x047e,
+ 0x0480, 0x0480,
+ 0x048a, 0x048a,
+ 0x048c, 0x048c,
+ 0x048e, 0x048e,
+ 0x0490, 0x0490,
+ 0x0492, 0x0492,
+ 0x0494, 0x0494,
+ 0x0496, 0x0496,
+ 0x0498, 0x0498,
+ 0x049a, 0x049a,
+ 0x049c, 0x049c,
+ 0x049e, 0x049e,
+ 0x04a0, 0x04a0,
+ 0x04a2, 0x04a2,
+ 0x04a4, 0x04a4,
+ 0x04a6, 0x04a6,
+ 0x04a8, 0x04a8,
+ 0x04aa, 0x04aa,
+ 0x04ac, 0x04ac,
+ 0x04ae, 0x04ae,
+ 0x04b0, 0x04b0,
+ 0x04b2, 0x04b2,
+ 0x04b4, 0x04b4,
+ 0x04b6, 0x04b6,
+ 0x04b8, 0x04b8,
+ 0x04ba, 0x04ba,
+ 0x04bc, 0x04bc,
+ 0x04be, 0x04be,
+ 0x04c0, 0x04c1,
+ 0x04c3, 0x04c3,
+ 0x04c5, 0x04c5,
+ 0x04c7, 0x04c7,
+ 0x04c9, 0x04c9,
+ 0x04cb, 0x04cb,
+ 0x04cd, 0x04cd,
+ 0x04d0, 0x04d0,
+ 0x04d2, 0x04d2,
+ 0x04d4, 0x04d4,
+ 0x04d6, 0x04d6,
+ 0x04d8, 0x04d8,
+ 0x04da, 0x04da,
+ 0x04dc, 0x04dc,
+ 0x04de, 0x04de,
+ 0x04e0, 0x04e0,
+ 0x04e2, 0x04e2,
+ 0x04e4, 0x04e4,
+ 0x04e6, 0x04e6,
+ 0x04e8, 0x04e8,
+ 0x04ea, 0x04ea,
+ 0x04ec, 0x04ec,
+ 0x04ee, 0x04ee,
+ 0x04f0, 0x04f0,
+ 0x04f2, 0x04f2,
+ 0x04f4, 0x04f4,
+ 0x04f6, 0x04f6,
+ 0x04f8, 0x04f8,
+ 0x04fa, 0x04fa,
+ 0x04fc, 0x04fc,
+ 0x04fe, 0x04fe,
+ 0x0500, 0x0500,
+ 0x0502, 0x0502,
+ 0x0504, 0x0504,
+ 0x0506, 0x0506,
+ 0x0508, 0x0508,
+ 0x050a, 0x050a,
+ 0x050c, 0x050c,
+ 0x050e, 0x050e,
+ 0x0510, 0x0510,
+ 0x0512, 0x0512,
+ 0x0514, 0x0514,
+ 0x0516, 0x0516,
+ 0x0518, 0x0518,
+ 0x051a, 0x051a,
+ 0x051c, 0x051c,
+ 0x051e, 0x051e,
+ 0x0520, 0x0520,
+ 0x0522, 0x0522,
+ 0x0524, 0x0524,
+ 0x0526, 0x0526,
+ 0x0531, 0x0556,
+ 0x10a0, 0x10c5,
+ 0x1e00, 0x1e00,
+ 0x1e02, 0x1e02,
+ 0x1e04, 0x1e04,
+ 0x1e06, 0x1e06,
+ 0x1e08, 0x1e08,
+ 0x1e0a, 0x1e0a,
+ 0x1e0c, 0x1e0c,
+ 0x1e0e, 0x1e0e,
+ 0x1e10, 0x1e10,
+ 0x1e12, 0x1e12,
+ 0x1e14, 0x1e14,
+ 0x1e16, 0x1e16,
+ 0x1e18, 0x1e18,
+ 0x1e1a, 0x1e1a,
+ 0x1e1c, 0x1e1c,
+ 0x1e1e, 0x1e1e,
+ 0x1e20, 0x1e20,
+ 0x1e22, 0x1e22,
+ 0x1e24, 0x1e24,
+ 0x1e26, 0x1e26,
+ 0x1e28, 0x1e28,
+ 0x1e2a, 0x1e2a,
+ 0x1e2c, 0x1e2c,
+ 0x1e2e, 0x1e2e,
+ 0x1e30, 0x1e30,
+ 0x1e32, 0x1e32,
+ 0x1e34, 0x1e34,
+ 0x1e36, 0x1e36,
+ 0x1e38, 0x1e38,
+ 0x1e3a, 0x1e3a,
+ 0x1e3c, 0x1e3c,
+ 0x1e3e, 0x1e3e,
+ 0x1e40, 0x1e40,
+ 0x1e42, 0x1e42,
+ 0x1e44, 0x1e44,
+ 0x1e46, 0x1e46,
+ 0x1e48, 0x1e48,
+ 0x1e4a, 0x1e4a,
+ 0x1e4c, 0x1e4c,
+ 0x1e4e, 0x1e4e,
+ 0x1e50, 0x1e50,
+ 0x1e52, 0x1e52,
+ 0x1e54, 0x1e54,
+ 0x1e56, 0x1e56,
+ 0x1e58, 0x1e58,
+ 0x1e5a, 0x1e5a,
+ 0x1e5c, 0x1e5c,
+ 0x1e5e, 0x1e5e,
+ 0x1e60, 0x1e60,
+ 0x1e62, 0x1e62,
+ 0x1e64, 0x1e64,
+ 0x1e66, 0x1e66,
+ 0x1e68, 0x1e68,
+ 0x1e6a, 0x1e6a,
+ 0x1e6c, 0x1e6c,
+ 0x1e6e, 0x1e6e,
+ 0x1e70, 0x1e70,
+ 0x1e72, 0x1e72,
+ 0x1e74, 0x1e74,
+ 0x1e76, 0x1e76,
+ 0x1e78, 0x1e78,
+ 0x1e7a, 0x1e7a,
+ 0x1e7c, 0x1e7c,
+ 0x1e7e, 0x1e7e,
+ 0x1e80, 0x1e80,
+ 0x1e82, 0x1e82,
+ 0x1e84, 0x1e84,
+ 0x1e86, 0x1e86,
+ 0x1e88, 0x1e88,
+ 0x1e8a, 0x1e8a,
+ 0x1e8c, 0x1e8c,
+ 0x1e8e, 0x1e8e,
+ 0x1e90, 0x1e90,
+ 0x1e92, 0x1e92,
+ 0x1e94, 0x1e94,
+ 0x1e9e, 0x1e9e,
+ 0x1ea0, 0x1ea0,
+ 0x1ea2, 0x1ea2,
+ 0x1ea4, 0x1ea4,
+ 0x1ea6, 0x1ea6,
+ 0x1ea8, 0x1ea8,
+ 0x1eaa, 0x1eaa,
+ 0x1eac, 0x1eac,
+ 0x1eae, 0x1eae,
+ 0x1eb0, 0x1eb0,
+ 0x1eb2, 0x1eb2,
+ 0x1eb4, 0x1eb4,
+ 0x1eb6, 0x1eb6,
+ 0x1eb8, 0x1eb8,
+ 0x1eba, 0x1eba,
+ 0x1ebc, 0x1ebc,
+ 0x1ebe, 0x1ebe,
+ 0x1ec0, 0x1ec0,
+ 0x1ec2, 0x1ec2,
+ 0x1ec4, 0x1ec4,
+ 0x1ec6, 0x1ec6,
+ 0x1ec8, 0x1ec8,
+ 0x1eca, 0x1eca,
+ 0x1ecc, 0x1ecc,
+ 0x1ece, 0x1ece,
+ 0x1ed0, 0x1ed0,
+ 0x1ed2, 0x1ed2,
+ 0x1ed4, 0x1ed4,
+ 0x1ed6, 0x1ed6,
+ 0x1ed8, 0x1ed8,
+ 0x1eda, 0x1eda,
+ 0x1edc, 0x1edc,
+ 0x1ede, 0x1ede,
+ 0x1ee0, 0x1ee0,
+ 0x1ee2, 0x1ee2,
+ 0x1ee4, 0x1ee4,
+ 0x1ee6, 0x1ee6,
+ 0x1ee8, 0x1ee8,
+ 0x1eea, 0x1eea,
+ 0x1eec, 0x1eec,
+ 0x1eee, 0x1eee,
+ 0x1ef0, 0x1ef0,
+ 0x1ef2, 0x1ef2,
+ 0x1ef4, 0x1ef4,
+ 0x1ef6, 0x1ef6,
+ 0x1ef8, 0x1ef8,
+ 0x1efa, 0x1efa,
+ 0x1efc, 0x1efc,
+ 0x1efe, 0x1efe,
+ 0x1f08, 0x1f0f,
+ 0x1f18, 0x1f1d,
+ 0x1f28, 0x1f2f,
+ 0x1f38, 0x1f3f,
+ 0x1f48, 0x1f4d,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f5f,
+ 0x1f68, 0x1f6f,
+ 0x1fb8, 0x1fbb,
+ 0x1fc8, 0x1fcb,
+ 0x1fd8, 0x1fdb,
+ 0x1fe8, 0x1fec,
+ 0x1ff8, 0x1ffb,
+ 0x2102, 0x2102,
+ 0x2107, 0x2107,
+ 0x210b, 0x210d,
+ 0x2110, 0x2112,
+ 0x2115, 0x2115,
+ 0x2119, 0x211d,
+ 0x2124, 0x2124,
+ 0x2126, 0x2126,
+ 0x2128, 0x2128,
+ 0x212a, 0x212d,
+ 0x2130, 0x2133,
+ 0x213e, 0x213f,
+ 0x2145, 0x2145,
+ 0x2160, 0x216f,
+ 0x2183, 0x2183,
+ 0x24b6, 0x24cf,
+ 0x2c00, 0x2c2e,
+ 0x2c60, 0x2c60,
+ 0x2c62, 0x2c64,
+ 0x2c67, 0x2c67,
+ 0x2c69, 0x2c69,
+ 0x2c6b, 0x2c6b,
+ 0x2c6d, 0x2c70,
+ 0x2c72, 0x2c72,
+ 0x2c75, 0x2c75,
+ 0x2c7e, 0x2c80,
+ 0x2c82, 0x2c82,
+ 0x2c84, 0x2c84,
+ 0x2c86, 0x2c86,
+ 0x2c88, 0x2c88,
+ 0x2c8a, 0x2c8a,
+ 0x2c8c, 0x2c8c,
+ 0x2c8e, 0x2c8e,
+ 0x2c90, 0x2c90,
+ 0x2c92, 0x2c92,
+ 0x2c94, 0x2c94,
+ 0x2c96, 0x2c96,
+ 0x2c98, 0x2c98,
+ 0x2c9a, 0x2c9a,
+ 0x2c9c, 0x2c9c,
+ 0x2c9e, 0x2c9e,
+ 0x2ca0, 0x2ca0,
+ 0x2ca2, 0x2ca2,
+ 0x2ca4, 0x2ca4,
+ 0x2ca6, 0x2ca6,
+ 0x2ca8, 0x2ca8,
+ 0x2caa, 0x2caa,
+ 0x2cac, 0x2cac,
+ 0x2cae, 0x2cae,
+ 0x2cb0, 0x2cb0,
+ 0x2cb2, 0x2cb2,
+ 0x2cb4, 0x2cb4,
+ 0x2cb6, 0x2cb6,
+ 0x2cb8, 0x2cb8,
+ 0x2cba, 0x2cba,
+ 0x2cbc, 0x2cbc,
+ 0x2cbe, 0x2cbe,
+ 0x2cc0, 0x2cc0,
+ 0x2cc2, 0x2cc2,
+ 0x2cc4, 0x2cc4,
+ 0x2cc6, 0x2cc6,
+ 0x2cc8, 0x2cc8,
+ 0x2cca, 0x2cca,
+ 0x2ccc, 0x2ccc,
+ 0x2cce, 0x2cce,
+ 0x2cd0, 0x2cd0,
+ 0x2cd2, 0x2cd2,
+ 0x2cd4, 0x2cd4,
+ 0x2cd6, 0x2cd6,
+ 0x2cd8, 0x2cd8,
+ 0x2cda, 0x2cda,
+ 0x2cdc, 0x2cdc,
+ 0x2cde, 0x2cde,
+ 0x2ce0, 0x2ce0,
+ 0x2ce2, 0x2ce2,
+ 0x2ceb, 0x2ceb,
+ 0x2ced, 0x2ced,
+ 0xa640, 0xa640,
+ 0xa642, 0xa642,
+ 0xa644, 0xa644,
+ 0xa646, 0xa646,
+ 0xa648, 0xa648,
+ 0xa64a, 0xa64a,
+ 0xa64c, 0xa64c,
+ 0xa64e, 0xa64e,
+ 0xa650, 0xa650,
+ 0xa652, 0xa652,
+ 0xa654, 0xa654,
+ 0xa656, 0xa656,
+ 0xa658, 0xa658,
+ 0xa65a, 0xa65a,
+ 0xa65c, 0xa65c,
+ 0xa65e, 0xa65e,
+ 0xa660, 0xa660,
+ 0xa662, 0xa662,
+ 0xa664, 0xa664,
+ 0xa666, 0xa666,
+ 0xa668, 0xa668,
+ 0xa66a, 0xa66a,
+ 0xa66c, 0xa66c,
+ 0xa680, 0xa680,
+ 0xa682, 0xa682,
+ 0xa684, 0xa684,
+ 0xa686, 0xa686,
+ 0xa688, 0xa688,
+ 0xa68a, 0xa68a,
+ 0xa68c, 0xa68c,
+ 0xa68e, 0xa68e,
+ 0xa690, 0xa690,
+ 0xa692, 0xa692,
+ 0xa694, 0xa694,
+ 0xa696, 0xa696,
+ 0xa722, 0xa722,
+ 0xa724, 0xa724,
+ 0xa726, 0xa726,
+ 0xa728, 0xa728,
+ 0xa72a, 0xa72a,
+ 0xa72c, 0xa72c,
+ 0xa72e, 0xa72e,
+ 0xa732, 0xa732,
+ 0xa734, 0xa734,
+ 0xa736, 0xa736,
+ 0xa738, 0xa738,
+ 0xa73a, 0xa73a,
+ 0xa73c, 0xa73c,
+ 0xa73e, 0xa73e,
+ 0xa740, 0xa740,
+ 0xa742, 0xa742,
+ 0xa744, 0xa744,
+ 0xa746, 0xa746,
+ 0xa748, 0xa748,
+ 0xa74a, 0xa74a,
+ 0xa74c, 0xa74c,
+ 0xa74e, 0xa74e,
+ 0xa750, 0xa750,
+ 0xa752, 0xa752,
+ 0xa754, 0xa754,
+ 0xa756, 0xa756,
+ 0xa758, 0xa758,
+ 0xa75a, 0xa75a,
+ 0xa75c, 0xa75c,
+ 0xa75e, 0xa75e,
+ 0xa760, 0xa760,
+ 0xa762, 0xa762,
+ 0xa764, 0xa764,
+ 0xa766, 0xa766,
+ 0xa768, 0xa768,
+ 0xa76a, 0xa76a,
+ 0xa76c, 0xa76c,
+ 0xa76e, 0xa76e,
+ 0xa779, 0xa779,
+ 0xa77b, 0xa77b,
+ 0xa77d, 0xa77e,
+ 0xa780, 0xa780,
+ 0xa782, 0xa782,
+ 0xa784, 0xa784,
+ 0xa786, 0xa786,
+ 0xa78b, 0xa78b,
+ 0xa78d, 0xa78d,
+ 0xa790, 0xa790,
+ 0xa7a0, 0xa7a0,
+ 0xa7a2, 0xa7a2,
+ 0xa7a4, 0xa7a4,
+ 0xa7a6, 0xa7a6,
+ 0xa7a8, 0xa7a8,
+ 0xff21, 0xff3a,
+ 0x10400, 0x10427,
+ 0x1d400, 0x1d419,
+ 0x1d434, 0x1d44d,
+ 0x1d468, 0x1d481,
+ 0x1d49c, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b5,
+ 0x1d4d0, 0x1d4e9,
+ 0x1d504, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d538, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d56c, 0x1d585,
+ 0x1d5a0, 0x1d5b9,
+ 0x1d5d4, 0x1d5ed,
+ 0x1d608, 0x1d621,
+ 0x1d63c, 0x1d655,
+ 0x1d670, 0x1d689,
+ 0x1d6a8, 0x1d6c0,
+ 0x1d6e2, 0x1d6fa,
+ 0x1d71c, 0x1d734,
+ 0x1d756, 0x1d76e,
+ 0x1d790, 0x1d7a8,
+ 0x1d7ca, 0x1d7ca,
+}; /* CR_Uppercase */
/* 'Cased': Derived Property */
static const OnigCodePoint CR_Cased[] = {
- 119,
+ 112,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -10064,8 +6797,6 @@ static const OnigCodePoint CR_Cased[] = {
0x0531, 0x0556,
0x0561, 0x0587,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -10086,9 +6817,7 @@ static const OnigCodePoint CR_Cased[] = {
0x1fe0, 0x1fec,
0x1ff2, 0x1ff4,
0x1ff6, 0x1ffc,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
+ 0x2090, 0x2094,
0x2102, 0x2102,
0x2107, 0x2107,
0x210a, 0x2113,
@@ -10110,17 +6839,14 @@ static const OnigCodePoint CR_Cased[] = {
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa640, 0xa66d,
0xa680, 0xa697,
0xa722, 0xa787,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa7fa,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa7fa,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
0xff21, 0xff3a,
@@ -10160,7 +6886,7 @@ static const OnigCodePoint CR_Cased[] = {
/* 'Case_Ignorable': Derived Property */
static const OnigCodePoint CR_Case_Ignorable[] = {
- 295,
+ 277,
0x0027, 0x0027,
0x002e, 0x002e,
0x003a, 0x003a,
@@ -10184,7 +6910,7 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x05c4, 0x05c5,
0x05c7, 0x05c7,
0x05f4, 0x05f4,
- 0x0600, 0x0604,
+ 0x0600, 0x0603,
0x0610, 0x061a,
0x0640, 0x0640,
0x064b, 0x065f,
@@ -10200,7 +6926,6 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x07fa, 0x07fa,
0x0816, 0x082d,
0x0859, 0x085b,
- 0x08e4, 0x08fe,
0x0900, 0x0902,
0x093a, 0x093a,
0x093c, 0x093c,
@@ -10320,7 +7045,6 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x1b80, 0x1b81,
0x1ba2, 0x1ba5,
0x1ba8, 0x1ba9,
- 0x1bab, 0x1bab,
0x1be6, 0x1be6,
0x1be8, 0x1be9,
0x1bed, 0x1bed,
@@ -10332,8 +7056,7 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x1cd4, 0x1ce0,
0x1ce2, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
- 0x1d2c, 0x1d6a,
+ 0x1d2c, 0x1d61,
0x1d78, 0x1d78,
0x1d9b, 0x1de6,
0x1dfc, 0x1dff,
@@ -10354,14 +7077,14 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x207f, 0x207f,
0x2090, 0x209c,
0x20d0, 0x20f0,
- 0x2c7c, 0x2c7d,
+ 0x2c7d, 0x2c7d,
0x2cef, 0x2cf1,
0x2d6f, 0x2d6f,
0x2d7f, 0x2d7f,
0x2de0, 0x2dff,
0x2e2f, 0x2e2f,
0x3005, 0x3005,
- 0x302a, 0x302d,
+ 0x302a, 0x302f,
0x3031, 0x3035,
0x303b, 0x303b,
0x3099, 0x309e,
@@ -10370,14 +7093,12 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0xa4f8, 0xa4fd,
0xa60c, 0xa60c,
0xa66f, 0xa672,
- 0xa674, 0xa67d,
+ 0xa67c, 0xa67d,
0xa67f, 0xa67f,
- 0xa69f, 0xa69f,
0xa6f0, 0xa6f1,
0xa700, 0xa721,
0xa770, 0xa770,
0xa788, 0xa78a,
- 0xa7f8, 0xa7f9,
0xa802, 0xa802,
0xa806, 0xa806,
0xa80b, 0xa80b,
@@ -10403,9 +7124,6 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0xaabe, 0xaabf,
0xaac1, 0xaac1,
0xaadd, 0xaadd,
- 0xaaec, 0xaaed,
- 0xaaf3, 0xaaf4,
- 0xaaf6, 0xaaf6,
0xabe5, 0xabe5,
0xabe8, 0xabe8,
0xabed, 0xabed,
@@ -10438,16 +7156,6 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x110b3, 0x110b6,
0x110b9, 0x110ba,
0x110bd, 0x110bd,
- 0x11100, 0x11102,
- 0x11127, 0x1112b,
- 0x1112d, 0x11134,
- 0x11180, 0x11181,
- 0x111b6, 0x111be,
- 0x116ab, 0x116ab,
- 0x116ad, 0x116ad,
- 0x116b0, 0x116b5,
- 0x116b7, 0x116b7,
- 0x16f8f, 0x16f9f,
0x1d167, 0x1d169,
0x1d173, 0x1d182,
0x1d185, 0x1d18b,
@@ -10460,7 +7168,7 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
/* 'Changes_When_Lowercased': Derived Property */
static const OnigCodePoint CR_Changes_When_Lowercased[] = {
- 571,
+ 566,
0x0041, 0x005a,
0x00c0, 0x00d6,
0x00d8, 0x00de,
@@ -10728,8 +7436,6 @@ static const OnigCodePoint CR_Changes_When_Lowercased[] = {
0x0526, 0x0526,
0x0531, 0x0556,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1e00, 0x1e00,
0x1e02, 0x1e02,
0x1e04, 0x1e04,
@@ -10939,7 +7645,6 @@ static const OnigCodePoint CR_Changes_When_Lowercased[] = {
0x2ce2, 0x2ce2,
0x2ceb, 0x2ceb,
0x2ced, 0x2ced,
- 0x2cf2, 0x2cf2,
0xa640, 0xa640,
0xa642, 0xa642,
0xa644, 0xa644,
@@ -11023,20 +7728,18 @@ static const OnigCodePoint CR_Changes_When_Lowercased[] = {
0xa78b, 0xa78b,
0xa78d, 0xa78d,
0xa790, 0xa790,
- 0xa792, 0xa792,
0xa7a0, 0xa7a0,
0xa7a2, 0xa7a2,
0xa7a4, 0xa7a4,
0xa7a6, 0xa7a6,
0xa7a8, 0xa7a8,
- 0xa7aa, 0xa7aa,
0xff21, 0xff3a,
0x10400, 0x10427,
}; /* CR_Changes_When_Lowercased */
/* 'Changes_When_Uppercased': Derived Property */
static const OnigCodePoint CR_Changes_When_Uppercased[] = {
- 586,
+ 582,
0x0061, 0x007a,
0x00b5, 0x00b5,
0x00df, 0x00f6,
@@ -11186,7 +7889,7 @@ static const OnigCodePoint CR_Changes_When_Uppercased[] = {
0x025b, 0x025b,
0x0260, 0x0260,
0x0263, 0x0263,
- 0x0265, 0x0266,
+ 0x0265, 0x0265,
0x0268, 0x0269,
0x026b, 0x026b,
0x026f, 0x026f,
@@ -11527,10 +8230,7 @@ static const OnigCodePoint CR_Changes_When_Uppercased[] = {
0x2ce3, 0x2ce3,
0x2cec, 0x2cec,
0x2cee, 0x2cee,
- 0x2cf3, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa641, 0xa641,
0xa643, 0xa643,
0xa645, 0xa645,
@@ -11613,7 +8313,6 @@ static const OnigCodePoint CR_Changes_When_Uppercased[] = {
0xa787, 0xa787,
0xa78c, 0xa78c,
0xa791, 0xa791,
- 0xa793, 0xa793,
0xa7a1, 0xa7a1,
0xa7a3, 0xa7a3,
0xa7a5, 0xa7a5,
@@ -11627,7 +8326,7 @@ static const OnigCodePoint CR_Changes_When_Uppercased[] = {
/* 'Changes_When_Titlecased': Derived Property */
static const OnigCodePoint CR_Changes_When_Titlecased[] = {
- 587,
+ 583,
0x0061, 0x007a,
0x00b5, 0x00b5,
0x00df, 0x00f6,
@@ -11778,7 +8477,7 @@ static const OnigCodePoint CR_Changes_When_Titlecased[] = {
0x025b, 0x025b,
0x0260, 0x0260,
0x0263, 0x0263,
- 0x0265, 0x0266,
+ 0x0265, 0x0265,
0x0268, 0x0269,
0x026b, 0x026b,
0x026f, 0x026f,
@@ -12119,10 +8818,7 @@ static const OnigCodePoint CR_Changes_When_Titlecased[] = {
0x2ce3, 0x2ce3,
0x2cec, 0x2cec,
0x2cee, 0x2cee,
- 0x2cf3, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa641, 0xa641,
0xa643, 0xa643,
0xa645, 0xa645,
@@ -12205,7 +8901,6 @@ static const OnigCodePoint CR_Changes_When_Titlecased[] = {
0xa787, 0xa787,
0xa78c, 0xa78c,
0xa791, 0xa791,
- 0xa793, 0xa793,
0xa7a1, 0xa7a1,
0xa7a3, 0xa7a3,
0xa7a5, 0xa7a5,
@@ -12219,7 +8914,7 @@ static const OnigCodePoint CR_Changes_When_Titlecased[] = {
/* 'Changes_When_Casefolded': Derived Property */
static const OnigCodePoint CR_Changes_When_Casefolded[] = {
- 582,
+ 577,
0x0041, 0x005a,
0x00b5, 0x00b5,
0x00c0, 0x00d6,
@@ -12494,8 +9189,6 @@ static const OnigCodePoint CR_Changes_When_Casefolded[] = {
0x0531, 0x0556,
0x0587, 0x0587,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1e00, 0x1e00,
0x1e02, 0x1e02,
0x1e04, 0x1e04,
@@ -12707,7 +9400,6 @@ static const OnigCodePoint CR_Changes_When_Casefolded[] = {
0x2ce2, 0x2ce2,
0x2ceb, 0x2ceb,
0x2ced, 0x2ced,
- 0x2cf2, 0x2cf2,
0xa640, 0xa640,
0xa642, 0xa642,
0xa644, 0xa644,
@@ -12791,13 +9483,11 @@ static const OnigCodePoint CR_Changes_When_Casefolded[] = {
0xa78b, 0xa78b,
0xa78d, 0xa78d,
0xa790, 0xa790,
- 0xa792, 0xa792,
0xa7a0, 0xa7a0,
0xa7a2, 0xa7a2,
0xa7a4, 0xa7a4,
0xa7a6, 0xa7a6,
0xa7a8, 0xa7a8,
- 0xa7aa, 0xa7aa,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
0xff21, 0xff3a,
@@ -12806,7 +9496,7 @@ static const OnigCodePoint CR_Changes_When_Casefolded[] = {
/* 'Changes_When_Casemapped': Derived Property */
static const OnigCodePoint CR_Changes_When_Casemapped[] = {
- 104,
+ 99,
0x0041, 0x005a,
0x0061, 0x007a,
0x00b5, 0x00b5,
@@ -12827,7 +9517,7 @@ static const OnigCodePoint CR_Changes_When_Casemapped[] = {
0x025b, 0x025b,
0x0260, 0x0260,
0x0263, 0x0263,
- 0x0265, 0x0266,
+ 0x0265, 0x0265,
0x0268, 0x0269,
0x026b, 0x026b,
0x026f, 0x026f,
@@ -12855,8 +9545,6 @@ static const OnigCodePoint CR_Changes_When_Casemapped[] = {
0x0531, 0x0556,
0x0561, 0x0587,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1d79, 0x1d79,
0x1d7d, 0x1d7d,
0x1e00, 0x1e9b,
@@ -12894,18 +9582,15 @@ static const OnigCodePoint CR_Changes_When_Casemapped[] = {
0x2c75, 0x2c76,
0x2c7e, 0x2ce3,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa640, 0xa66d,
0xa680, 0xa697,
0xa722, 0xa72f,
0xa732, 0xa76f,
0xa779, 0xa787,
0xa78b, 0xa78d,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
0xff21, 0xff3a,
@@ -12915,7 +9600,7 @@ static const OnigCodePoint CR_Changes_When_Casemapped[] = {
/* 'ID_Start': Derived Property */
static const OnigCodePoint CR_ID_Start[] = {
- 488,
+ 437,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -12963,8 +9648,6 @@ static const OnigCodePoint CR_ID_Start[] = {
0x0824, 0x0824,
0x0828, 0x0828,
0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -13070,7 +9753,7 @@ static const OnigCodePoint CR_ID_Start[] = {
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f40, 0x0f47,
0x0f49, 0x0f6c,
@@ -13085,10 +9768,9 @@ static const OnigCodePoint CR_ID_Start[] = {
0x1075, 0x1081,
0x108e, 0x108e,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -13136,13 +9818,12 @@ static const OnigCodePoint CR_ID_Start[] = {
0x1b45, 0x1b4b,
0x1b83, 0x1ba0,
0x1bae, 0x1baf,
- 0x1bba, 0x1be5,
+ 0x1bc0, 0x1be5,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
- 0x1cf5, 0x1cf6,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -13183,11 +9864,8 @@ static const OnigCodePoint CR_ID_Start[] = {
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
@@ -13211,7 +9889,7 @@ static const OnigCodePoint CR_ID_Start[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -13223,9 +9901,9 @@ static const OnigCodePoint CR_ID_Start[] = {
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa822,
@@ -13250,8 +9928,6 @@ static const OnigCodePoint CR_ID_Start[] = {
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaea,
- 0xaaf2, 0xaaf4,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -13261,7 +9937,8 @@ static const OnigCodePoint CR_ID_Start[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -13311,8 +9988,6 @@ static const OnigCodePoint CR_ID_Start[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -13324,18 +9999,10 @@ static const OnigCodePoint CR_ID_Start[] = {
0x10c00, 0x10c48,
0x11003, 0x11037,
0x11083, 0x110af,
- 0x110d0, 0x110e8,
- 0x11103, 0x11126,
- 0x11183, 0x111b2,
- 0x111c1, 0x111c4,
- 0x11680, 0x116aa,
0x12000, 0x1236e,
0x12400, 0x12462,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f50,
- 0x16f93, 0x16f9f,
0x1b000, 0x1b001,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
@@ -13367,39 +10034,6 @@ static const OnigCodePoint CR_ID_Start[] = {
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -13408,7 +10042,7 @@ static const OnigCodePoint CR_ID_Start[] = {
/* 'ID_Continue': Derived Property */
static const OnigCodePoint CR_ID_Continue[] = {
- 564,
+ 514,
0x0030, 0x0039,
0x0041, 0x005a,
0x005f, 0x005f,
@@ -13457,9 +10091,6 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x07fa, 0x07fa,
0x0800, 0x082d,
0x0840, 0x085b,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0x0900, 0x0963,
0x0966, 0x096f,
0x0971, 0x0977,
@@ -13607,7 +10238,7 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f18, 0x0f19,
0x0f20, 0x0f29,
@@ -13623,10 +10254,9 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1000, 0x1049,
0x1050, 0x109d,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -13658,7 +10288,8 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1760, 0x176c,
0x176e, 0x1770,
0x1772, 0x1773,
- 0x1780, 0x17d3,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17d3,
0x17d7, 0x17d7,
0x17dc, 0x17dd,
0x17e0, 0x17e9,
@@ -13684,12 +10315,14 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1b00, 0x1b4b,
0x1b50, 0x1b59,
0x1b6b, 0x1b73,
- 0x1b80, 0x1bf3,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
0x1c00, 0x1c37,
0x1c40, 0x1c49,
0x1c4d, 0x1c7d,
0x1cd0, 0x1cd2,
- 0x1cd4, 0x1cf6,
+ 0x1cd4, 0x1cf2,
0x1d00, 0x1de6,
0x1dfc, 0x1f15,
0x1f18, 0x1f1d,
@@ -13734,11 +10367,9 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
- 0x2ceb, 0x2cf3,
+ 0x2ceb, 0x2cf1,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d7f, 0x2d96,
0x2da0, 0x2da6,
@@ -13763,21 +10394,21 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
0xa610, 0xa62b,
0xa640, 0xa66f,
- 0xa674, 0xa67d,
+ 0xa67c, 0xa67d,
0xa67f, 0xa697,
- 0xa69f, 0xa6f1,
+ 0xa6a0, 0xa6f1,
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa827,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c4,
0xa8d0, 0xa8d9,
@@ -13795,8 +10426,6 @@ static const OnigCodePoint CR_ID_Continue[] = {
0xaa7a, 0xaa7b,
0xaa80, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf6,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -13808,7 +10437,8 @@ static const OnigCodePoint CR_ID_Continue[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -13865,8 +10495,6 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a03,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
@@ -13882,21 +10510,10 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x11000, 0x11046,
0x11066, 0x1106f,
0x11080, 0x110ba,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x1113f,
- 0x11180, 0x111c4,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
0x1b000, 0x1b001,
0x1d165, 0x1d169,
0x1d16d, 0x1d172,
@@ -13935,39 +10552,6 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -13977,7 +10561,7 @@ static const OnigCodePoint CR_ID_Continue[] = {
/* 'XID_Start': Derived Property */
static const OnigCodePoint CR_XID_Start[] = {
- 495,
+ 444,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -14025,8 +10609,6 @@ static const OnigCodePoint CR_XID_Start[] = {
0x0824, 0x0824,
0x0828, 0x0828,
0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -14132,7 +10714,7 @@ static const OnigCodePoint CR_XID_Start[] = {
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f40, 0x0f47,
0x0f49, 0x0f6c,
@@ -14147,10 +10729,9 @@ static const OnigCodePoint CR_XID_Start[] = {
0x1075, 0x1081,
0x108e, 0x108e,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -14198,13 +10779,12 @@ static const OnigCodePoint CR_XID_Start[] = {
0x1b45, 0x1b4b,
0x1b83, 0x1ba0,
0x1bae, 0x1baf,
- 0x1bba, 0x1be5,
+ 0x1bc0, 0x1be5,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
- 0x1cf5, 0x1cf6,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -14245,11 +10825,8 @@ static const OnigCodePoint CR_XID_Start[] = {
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
@@ -14273,7 +10850,7 @@ static const OnigCodePoint CR_XID_Start[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -14285,9 +10862,9 @@ static const OnigCodePoint CR_XID_Start[] = {
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa822,
@@ -14312,8 +10889,6 @@ static const OnigCodePoint CR_XID_Start[] = {
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaea,
- 0xaaf2, 0xaaf4,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -14323,7 +10898,8 @@ static const OnigCodePoint CR_XID_Start[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -14380,8 +10956,6 @@ static const OnigCodePoint CR_XID_Start[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -14393,18 +10967,10 @@ static const OnigCodePoint CR_XID_Start[] = {
0x10c00, 0x10c48,
0x11003, 0x11037,
0x11083, 0x110af,
- 0x110d0, 0x110e8,
- 0x11103, 0x11126,
- 0x11183, 0x111b2,
- 0x111c1, 0x111c4,
- 0x11680, 0x116aa,
0x12000, 0x1236e,
0x12400, 0x12462,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f50,
- 0x16f93, 0x16f9f,
0x1b000, 0x1b001,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
@@ -14436,39 +11002,6 @@ static const OnigCodePoint CR_XID_Start[] = {
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -14477,7 +11010,7 @@ static const OnigCodePoint CR_XID_Start[] = {
/* 'XID_Continue': Derived Property */
static const OnigCodePoint CR_XID_Continue[] = {
- 571,
+ 521,
0x0030, 0x0039,
0x0041, 0x005a,
0x005f, 0x005f,
@@ -14526,9 +11059,6 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x07fa, 0x07fa,
0x0800, 0x082d,
0x0840, 0x085b,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0x0900, 0x0963,
0x0966, 0x096f,
0x0971, 0x0977,
@@ -14676,7 +11206,7 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f18, 0x0f19,
0x0f20, 0x0f29,
@@ -14692,10 +11222,9 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1000, 0x1049,
0x1050, 0x109d,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -14727,7 +11256,8 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1760, 0x176c,
0x176e, 0x1770,
0x1772, 0x1773,
- 0x1780, 0x17d3,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17d3,
0x17d7, 0x17d7,
0x17dc, 0x17dd,
0x17e0, 0x17e9,
@@ -14753,12 +11283,14 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1b00, 0x1b4b,
0x1b50, 0x1b59,
0x1b6b, 0x1b73,
- 0x1b80, 0x1bf3,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
0x1c00, 0x1c37,
0x1c40, 0x1c49,
0x1c4d, 0x1c7d,
0x1cd0, 0x1cd2,
- 0x1cd4, 0x1cf6,
+ 0x1cd4, 0x1cf2,
0x1d00, 0x1de6,
0x1dfc, 0x1f15,
0x1f18, 0x1f1d,
@@ -14803,11 +11335,9 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
- 0x2ceb, 0x2cf3,
+ 0x2ceb, 0x2cf1,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d7f, 0x2d96,
0x2da0, 0x2da6,
@@ -14833,21 +11363,21 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
0xa610, 0xa62b,
0xa640, 0xa66f,
- 0xa674, 0xa67d,
+ 0xa67c, 0xa67d,
0xa67f, 0xa697,
- 0xa69f, 0xa6f1,
+ 0xa6a0, 0xa6f1,
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa827,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c4,
0xa8d0, 0xa8d9,
@@ -14865,8 +11395,6 @@ static const OnigCodePoint CR_XID_Continue[] = {
0xaa7a, 0xaa7b,
0xaa80, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf6,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -14878,7 +11406,8 @@ static const OnigCodePoint CR_XID_Continue[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -14941,8 +11470,6 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a03,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
@@ -14958,21 +11485,10 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x11000, 0x11046,
0x11066, 0x1106f,
0x11080, 0x110ba,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x1113f,
- 0x11180, 0x111c4,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
0x1b000, 0x1b001,
0x1d165, 0x1d169,
0x1d16d, 0x1d172,
@@ -15011,39 +11527,6 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -15073,7 +11556,7 @@ static const OnigCodePoint CR_Default_Ignorable_Code_Point[] = {
/* 'Grapheme_Extend': Derived Property */
static const OnigCodePoint CR_Grapheme_Extend[] = {
- 232,
+ 215,
0x0300, 0x036f,
0x0483, 0x0489,
0x0591, 0x05bd,
@@ -15097,7 +11580,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x0825, 0x0827,
0x0829, 0x082d,
0x0859, 0x085b,
- 0x08e4, 0x08fe,
0x0900, 0x0902,
0x093a, 0x093a,
0x093c, 0x093c,
@@ -15193,7 +11675,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x1732, 0x1734,
0x1752, 0x1753,
0x1772, 0x1773,
- 0x17b4, 0x17b5,
0x17b7, 0x17bd,
0x17c6, 0x17c6,
0x17c9, 0x17d3,
@@ -15221,7 +11702,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x1b80, 0x1b81,
0x1ba2, 0x1ba5,
0x1ba8, 0x1ba9,
- 0x1bab, 0x1bab,
0x1be6, 0x1be6,
0x1be8, 0x1be9,
0x1bed, 0x1bed,
@@ -15232,7 +11712,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x1cd4, 0x1ce0,
0x1ce2, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
0x1dc0, 0x1de6,
0x1dfc, 0x1dff,
0x200c, 0x200d,
@@ -15243,8 +11722,7 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x302a, 0x302f,
0x3099, 0x309a,
0xa66f, 0xa672,
- 0xa674, 0xa67d,
- 0xa69f, 0xa69f,
+ 0xa67c, 0xa67d,
0xa6f0, 0xa6f1,
0xa802, 0xa802,
0xa806, 0xa806,
@@ -15268,8 +11746,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0xaab7, 0xaab8,
0xaabe, 0xaabf,
0xaac1, 0xaac1,
- 0xaaec, 0xaaed,
- 0xaaf6, 0xaaf6,
0xabe5, 0xabe5,
0xabe8, 0xabe8,
0xabed, 0xabed,
@@ -15288,16 +11764,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x11080, 0x11081,
0x110b3, 0x110b6,
0x110b9, 0x110ba,
- 0x11100, 0x11102,
- 0x11127, 0x1112b,
- 0x1112d, 0x11134,
- 0x11180, 0x11181,
- 0x111b6, 0x111be,
- 0x116ab, 0x116ab,
- 0x116ad, 0x116ad,
- 0x116b0, 0x116b5,
- 0x116b7, 0x116b7,
- 0x16f8f, 0x16f92,
0x1d165, 0x1d165,
0x1d167, 0x1d169,
0x1d16e, 0x1d172,
@@ -15310,7 +11776,7 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
/* 'Grapheme_Base': Derived Property */
static const OnigCodePoint CR_Grapheme_Base[] = {
- 643,
+ 596,
0x0020, 0x007e,
0x00a0, 0x00ac,
0x00ae, 0x02ff,
@@ -15325,7 +11791,6 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x0559, 0x055f,
0x0561, 0x0587,
0x0589, 0x058a,
- 0x058f, 0x058f,
0x05be, 0x05be,
0x05c0, 0x05c0,
0x05c3, 0x05c3,
@@ -15354,8 +11819,6 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x0830, 0x083e,
0x0840, 0x0858,
0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0903, 0x0939,
0x093b, 0x093b,
0x093d, 0x0940,
@@ -15404,7 +11867,8 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x0acb, 0x0acc,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae1,
- 0x0ae6, 0x0af1,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
0x0b02, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -15504,7 +11968,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f17,
0x0f1a, 0x0f34,
0x0f36, 0x0f36,
@@ -15529,9 +11993,8 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1087, 0x108c,
0x108e, 0x109c,
0x109e, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
+ 0x10d0, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -15604,7 +12067,8 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1b82, 0x1ba1,
0x1ba6, 0x1ba7,
0x1baa, 0x1baa,
- 0x1bac, 0x1be5,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1be5,
0x1be7, 0x1be7,
0x1bea, 0x1bec,
0x1bee, 0x1bee,
@@ -15613,12 +12077,10 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1c34, 0x1c35,
0x1c3b, 0x1c49,
0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
0x1cd3, 0x1cd3,
0x1ce1, 0x1ce1,
0x1ce9, 0x1cec,
- 0x1cee, 0x1cf3,
- 0x1cf5, 0x1cf6,
+ 0x1cee, 0x1cf2,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -15648,16 +12110,15 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x2400, 0x2426,
0x2440, 0x244a,
0x2460, 0x26ff,
- 0x2701, 0x2b4c,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x2b4c,
0x2b50, 0x2b59,
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d70,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
@@ -15668,7 +12129,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
- 0x2e00, 0x2e3b,
+ 0x2e00, 0x2e31,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -15684,7 +12145,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x31f0, 0x321e,
0x3220, 0x32fe,
0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
+ 0x4dc0, 0x9fcb,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
@@ -15694,9 +12155,9 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0xa6a0, 0xa6ef,
0xa6f2, 0xa6f7,
0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa824,
@@ -15730,8 +12191,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0xaab9, 0xaabd,
0xaac0, 0xaac0,
0xaac2, 0xaac2,
- 0xaadb, 0xaaeb,
- 0xaaee, 0xaaf5,
+ 0xaadb, 0xaadf,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -15744,7 +12204,8 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -15806,8 +12267,6 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x10900, 0x1091b,
0x1091f, 0x10939,
0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -15829,27 +12288,11 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x110b7, 0x110b8,
0x110bb, 0x110bc,
0x110be, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11103, 0x11126,
- 0x1112c, 0x1112c,
- 0x11136, 0x11143,
- 0x11182, 0x111b5,
- 0x111bf, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116aa,
- 0x116ac, 0x116ac,
- 0x116ae, 0x116af,
- 0x116b6, 0x116b6,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x12470, 0x12473,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f93, 0x16f9f,
0x1b000, 0x1b001,
0x1d000, 0x1d0f5,
0x1d100, 0x1d126,
@@ -15884,40 +12327,6 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1d552, 0x1d6a5,
0x1d6a8, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
@@ -15926,7 +12335,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1f0d1, 0x1f0df,
0x1f100, 0x1f10a,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -15944,9 +12353,19 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -15958,7 +12377,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
/* 'Grapheme_Link': Derived Property */
static const OnigCodePoint CR_Grapheme_Link[] = {
- 33,
+ 29,
0x094d, 0x094d,
0x09cd, 0x09cd,
0x0a4d, 0x0a4d,
@@ -15977,26 +12396,22 @@ static const OnigCodePoint CR_Grapheme_Link[] = {
0x17d2, 0x17d2,
0x1a60, 0x1a60,
0x1b44, 0x1b44,
- 0x1baa, 0x1bab,
+ 0x1baa, 0x1baa,
0x1bf2, 0x1bf3,
0x2d7f, 0x2d7f,
0xa806, 0xa806,
0xa8c4, 0xa8c4,
0xa953, 0xa953,
0xa9c0, 0xa9c0,
- 0xaaf6, 0xaaf6,
0xabed, 0xabed,
0x10a3f, 0x10a3f,
0x11046, 0x11046,
0x110b9, 0x110b9,
- 0x11133, 0x11134,
- 0x111c0, 0x111c0,
- 0x116b6, 0x116b6,
}; /* CR_Grapheme_Link */
/* 'Common': Script */
static const OnigCodePoint CR_Common[] = {
- 157,
+ 169,
0x0000, 0x0040,
0x005b, 0x0060,
0x007b, 0x00a9,
@@ -16019,6 +12434,7 @@ static const OnigCodePoint CR_Common[] = {
0x0660, 0x0669,
0x06dd, 0x06dd,
0x0964, 0x0965,
+ 0x0970, 0x0970,
0x0e3f, 0x0e3f,
0x0fd5, 0x0fd8,
0x10fb, 0x10fb,
@@ -16029,8 +12445,7 @@ static const OnigCodePoint CR_Common[] = {
0x1cd3, 0x1cd3,
0x1ce1, 0x1ce1,
0x1ce9, 0x1cec,
- 0x1cee, 0x1cf3,
- 0x1cf5, 0x1cf6,
+ 0x1cee, 0x1cf2,
0x2000, 0x200b,
0x200e, 0x2064,
0x206a, 0x2070,
@@ -16047,10 +12462,12 @@ static const OnigCodePoint CR_Common[] = {
0x2400, 0x2426,
0x2440, 0x244a,
0x2460, 0x26ff,
- 0x2701, 0x27ff,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x27ff,
0x2900, 0x2b4c,
0x2b50, 0x2b59,
- 0x2e00, 0x2e3b,
+ 0x2e00, 0x2e31,
0x2ff0, 0x2ffb,
0x3000, 0x3004,
0x3006, 0x3006,
@@ -16127,7 +12544,7 @@ static const OnigCodePoint CR_Common[] = {
0x1f0d1, 0x1f0df,
0x1f100, 0x1f10a,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f1ff,
0x1f201, 0x1f202,
@@ -16146,9 +12563,19 @@ static const OnigCodePoint CR_Common[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -16183,9 +12610,9 @@ static const OnigCodePoint CR_Latin[] = {
0x2c60, 0x2c7f,
0xa722, 0xa787,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa7ff,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa7ff,
0xfb00, 0xfb06,
0xff21, 0xff3a,
0xff41, 0xff5a,
@@ -16237,18 +12664,17 @@ static const OnigCodePoint CR_Cyrillic[] = {
0x1d2b, 0x1d2b,
0x1d78, 0x1d78,
0x2de0, 0x2dff,
- 0xa640, 0xa697,
- 0xa69f, 0xa69f,
+ 0xa640, 0xa673,
+ 0xa67c, 0xa697,
}; /* CR_Cyrillic */
/* 'Armenian': Script */
static const OnigCodePoint CR_Armenian[] = {
- 6,
+ 5,
0x0531, 0x0556,
0x0559, 0x055f,
0x0561, 0x0587,
0x058a, 0x058a,
- 0x058f, 0x058f,
0xfb13, 0xfb17,
}; /* CR_Armenian */
@@ -16268,8 +12694,8 @@ static const OnigCodePoint CR_Hebrew[] = {
/* 'Arabic': Script */
static const OnigCodePoint CR_Arabic[] = {
- 56,
- 0x0600, 0x0604,
+ 19,
+ 0x0600, 0x0603,
0x0606, 0x060b,
0x060d, 0x061a,
0x061e, 0x061e,
@@ -16280,9 +12706,6 @@ static const OnigCodePoint CR_Arabic[] = {
0x0671, 0x06dc,
0x06de, 0x06ff,
0x0750, 0x077f,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0xfb50, 0xfbc1,
0xfbd3, 0xfd3d,
0xfd50, 0xfd8f,
@@ -16291,40 +12714,6 @@ static const OnigCodePoint CR_Arabic[] = {
0xfe70, 0xfe74,
0xfe76, 0xfefc,
0x10e60, 0x10e7e,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
}; /* CR_Arabic */
/* 'Syriac': Script */
@@ -16343,10 +12732,11 @@ static const OnigCodePoint CR_Thaana[] = {
/* 'Devanagari': Script */
static const OnigCodePoint CR_Devanagari[] = {
- 5,
+ 6,
0x0900, 0x0950,
0x0953, 0x0963,
- 0x0966, 0x0977,
+ 0x0966, 0x096f,
+ 0x0971, 0x0977,
0x0979, 0x097f,
0xa8e0, 0xa8fb,
}; /* CR_Devanagari */
@@ -16393,7 +12783,7 @@ static const OnigCodePoint CR_Gurmukhi[] = {
/* 'Gujarati': Script */
static const OnigCodePoint CR_Gujarati[] = {
- 13,
+ 14,
0x0a81, 0x0a83,
0x0a85, 0x0a8d,
0x0a8f, 0x0a91,
@@ -16406,7 +12796,8 @@ static const OnigCodePoint CR_Gujarati[] = {
0x0acb, 0x0acd,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
}; /* CR_Gujarati */
/* 'Oriya': Script */
@@ -16546,7 +12937,7 @@ static const OnigCodePoint CR_Lao[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
}; /* CR_Lao */
/* 'Tibetan': Script */
@@ -16570,15 +12961,11 @@ static const OnigCodePoint CR_Myanmar[] = {
/* 'Georgian': Script */
static const OnigCodePoint CR_Georgian[] = {
- 8,
+ 4,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x10ff,
+ 0x10fc, 0x10fc,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
}; /* CR_Georgian */
/* 'Hangul': Script */
@@ -16715,7 +13102,7 @@ static const OnigCodePoint CR_Bopomofo[] = {
/* 'Han': Script */
static const OnigCodePoint CR_Han[] = {
- 15,
+ 16,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -16724,8 +13111,9 @@ static const OnigCodePoint CR_Han[] = {
0x3021, 0x3029,
0x3038, 0x303b,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xf900, 0xfa6d,
+ 0x4e00, 0x9fcb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
@@ -16761,7 +13149,7 @@ static const OnigCodePoint CR_Deseret[] = {
/* 'Inherited': Script */
static const OnigCodePoint CR_Inherited[] = {
- 25,
+ 24,
0x0300, 0x036f,
0x0485, 0x0486,
0x064b, 0x0655,
@@ -16772,7 +13160,6 @@ static const OnigCodePoint CR_Inherited[] = {
0x1cd4, 0x1ce0,
0x1ce2, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
0x1dc0, 0x1de6,
0x1dfc, 0x1dff,
0x200c, 0x200d,
@@ -16893,7 +13280,7 @@ static const OnigCodePoint CR_Buginese[] = {
static const OnigCodePoint CR_Coptic[] = {
3,
0x03e2, 0x03ef,
- 0x2c80, 0x2cf3,
+ 0x2c80, 0x2cf1,
0x2cf9, 0x2cff,
}; /* CR_Coptic */
@@ -16916,7 +13303,7 @@ static const OnigCodePoint CR_Glagolitic[] = {
/* 'Tifinagh': Script */
static const OnigCodePoint CR_Tifinagh[] = {
3,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d70,
0x2d7f, 0x2d7f,
}; /* CR_Tifinagh */
@@ -16984,8 +13371,8 @@ static const OnigCodePoint CR_Nko[] = {
/* 'Sundanese': Script */
static const OnigCodePoint CR_Sundanese[] = {
2,
- 0x1b80, 0x1bbf,
- 0x1cc0, 0x1cc7,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
}; /* CR_Sundanese */
/* 'Lepcha': Script */
@@ -17116,8 +13503,7 @@ static const OnigCodePoint CR_Javanese[] = {
/* 'Meetei_Mayek': Script */
static const OnigCodePoint CR_Meetei_Mayek[] = {
- 3,
- 0xaae0, 0xaaf6,
+ 2,
0xabc0, 0xabed,
0xabf0, 0xabf9,
}; /* CR_Meetei_Mayek */
@@ -17182,57 +13568,21 @@ static const OnigCodePoint CR_Mandaic[] = {
0x085e, 0x085e,
}; /* CR_Mandaic */
-/* 'Chakma': Script */
-static const OnigCodePoint CR_Chakma[] = {
- 2,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
-}; /* CR_Chakma */
-
-/* 'Meroitic_Cursive': Script */
-static const OnigCodePoint CR_Meroitic_Cursive[] = {
- 2,
- 0x109a0, 0x109b7,
- 0x109be, 0x109bf,
-}; /* CR_Meroitic_Cursive */
-
-/* 'Meroitic_Hieroglyphs': Script */
-static const OnigCodePoint CR_Meroitic_Hieroglyphs[] = {
- 1,
- 0x10980, 0x1099f,
-}; /* CR_Meroitic_Hieroglyphs */
-
-/* 'Miao': Script */
-static const OnigCodePoint CR_Miao[] = {
- 3,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
-}; /* CR_Miao */
-
-/* 'Sharada': Script */
-static const OnigCodePoint CR_Sharada[] = {
- 2,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
-}; /* CR_Sharada */
-
-/* 'Sora_Sompeng': Script */
-static const OnigCodePoint CR_Sora_Sompeng[] = {
- 2,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
-}; /* CR_Sora_Sompeng */
-
-/* 'Takri': Script */
-static const OnigCodePoint CR_Takri[] = {
- 2,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
-}; /* CR_Takri */
-
/* 'White_Space': Binary Property */
-#define CR_White_Space CR_Space
+static const OnigCodePoint CR_White_Space[] = {
+ 11,
+ 0x0009, 0x000d,
+ 0x0020, 0x0020,
+ 0x0085, 0x0085,
+ 0x00a0, 0x00a0,
+ 0x1680, 0x1680,
+ 0x180e, 0x180e,
+ 0x2000, 0x200a,
+ 0x2028, 0x2029,
+ 0x202f, 0x202f,
+ 0x205f, 0x205f,
+ 0x3000, 0x3000,
+}; /* CR_White_Space */
/* 'Bidi_Control': Binary Property */
static const OnigCodePoint CR_Bidi_Control[] = {
@@ -17249,7 +13599,7 @@ static const OnigCodePoint CR_Join_Control[] = {
/* 'Dash': Binary Property */
static const OnigCodePoint CR_Dash[] = {
- 20,
+ 19,
0x002d, 0x002d,
0x058a, 0x058a,
0x05be, 0x05be,
@@ -17262,7 +13612,6 @@ static const OnigCodePoint CR_Dash[] = {
0x2212, 0x2212,
0x2e17, 0x2e17,
0x2e1a, 0x2e1a,
- 0x2e3a, 0x2e3b,
0x301c, 0x301c,
0x3030, 0x3030,
0x30a0, 0x30a0,
@@ -17306,7 +13655,7 @@ static const OnigCodePoint CR_Quotation_Mark[] = {
/* 'Terminal_Punctuation': Binary Property */
static const OnigCodePoint CR_Terminal_Punctuation[] = {
- 70,
+ 67,
0x0021, 0x0021,
0x002c, 0x002c,
0x002e, 0x002e,
@@ -17356,7 +13705,6 @@ static const OnigCodePoint CR_Terminal_Punctuation[] = {
0xa9c7, 0xa9c9,
0xaa5d, 0xaa5f,
0xaadf, 0xaadf,
- 0xaaf0, 0xaaf1,
0xabeb, 0xabeb,
0xfe50, 0xfe52,
0xfe54, 0xfe57,
@@ -17374,14 +13722,12 @@ static const OnigCodePoint CR_Terminal_Punctuation[] = {
0x10b3a, 0x10b3f,
0x11047, 0x1104d,
0x110be, 0x110c1,
- 0x11141, 0x11143,
- 0x111c5, 0x111c6,
0x12470, 0x12473,
}; /* CR_Terminal_Punctuation */
/* 'Other_Math': Binary Property */
static const OnigCodePoint CR_Other_Math[] = {
- 133,
+ 100,
0x005e, 0x005e,
0x03d0, 0x03d2,
0x03d5, 0x03d5,
@@ -17482,39 +13828,6 @@ static const OnigCodePoint CR_Other_Math[] = {
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
}; /* CR_Other_Math */
/* 'Hex_Digit': Binary Property */
@@ -17529,11 +13842,16 @@ static const OnigCodePoint CR_Hex_Digit[] = {
}; /* CR_Hex_Digit */
/* 'ASCII_Hex_Digit': Binary Property */
-#define CR_ASCII_Hex_Digit CR_XDigit
+static const OnigCodePoint CR_ASCII_Hex_Digit[] = {
+ 3,
+ 0x0030, 0x0039,
+ 0x0041, 0x0046,
+ 0x0061, 0x0066,
+}; /* CR_ASCII_Hex_Digit */
/* 'Other_Alphabetic': Binary Property */
static const OnigCodePoint CR_Other_Alphabetic[] = {
- 158,
+ 145,
0x0345, 0x0345,
0x05b0, 0x05bd,
0x05bf, 0x05bf,
@@ -17555,8 +13873,6 @@ static const OnigCodePoint CR_Other_Alphabetic[] = {
0x081b, 0x0823,
0x0825, 0x0827,
0x0829, 0x082c,
- 0x08e4, 0x08e9,
- 0x08f0, 0x08fe,
0x0900, 0x0903,
0x093a, 0x093b,
0x093e, 0x094c,
@@ -17653,14 +13969,11 @@ static const OnigCodePoint CR_Other_Alphabetic[] = {
0x1b35, 0x1b43,
0x1b80, 0x1b82,
0x1ba1, 0x1ba9,
- 0x1bac, 0x1bad,
0x1be7, 0x1bf1,
0x1c24, 0x1c35,
- 0x1cf2, 0x1cf3,
+ 0x1cf2, 0x1cf2,
0x24b6, 0x24e9,
0x2de0, 0x2dff,
- 0xa674, 0xa67b,
- 0xa69f, 0xa69f,
0xa823, 0xa827,
0xa880, 0xa881,
0xa8b4, 0xa8c3,
@@ -17675,8 +13988,6 @@ static const OnigCodePoint CR_Other_Alphabetic[] = {
0xaab2, 0xaab4,
0xaab7, 0xaab8,
0xaabe, 0xaabe,
- 0xaaeb, 0xaaef,
- 0xaaf5, 0xaaf5,
0xabe3, 0xabea,
0xfb1e, 0xfb1e,
0x10a01, 0x10a03,
@@ -17686,23 +13997,18 @@ static const OnigCodePoint CR_Other_Alphabetic[] = {
0x11038, 0x11045,
0x11082, 0x11082,
0x110b0, 0x110b8,
- 0x11100, 0x11102,
- 0x11127, 0x11132,
- 0x11180, 0x11182,
- 0x111b3, 0x111bf,
- 0x116ab, 0x116b5,
- 0x16f51, 0x16f7e,
}; /* CR_Other_Alphabetic */
/* 'Ideographic': Binary Property */
static const OnigCodePoint CR_Ideographic[] = {
- 11,
+ 12,
0x3006, 0x3007,
0x3021, 0x3029,
0x3038, 0x303a,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xf900, 0xfa6d,
+ 0x4e00, 0x9fcb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
@@ -17712,7 +14018,7 @@ static const OnigCodePoint CR_Ideographic[] = {
/* 'Diacritic': Binary Property */
static const OnigCodePoint CR_Diacritic[] = {
- 125,
+ 117,
0x005e, 0x005e,
0x0060, 0x0060,
0x00a8, 0x00a8,
@@ -17741,7 +14047,6 @@ static const OnigCodePoint CR_Diacritic[] = {
0x07a6, 0x07b0,
0x07eb, 0x07f5,
0x0818, 0x0819,
- 0x08e4, 0x08fe,
0x093c, 0x093c,
0x094d, 0x094d,
0x0951, 0x0954,
@@ -17784,12 +14089,11 @@ static const OnigCodePoint CR_Diacritic[] = {
0x1b34, 0x1b34,
0x1b44, 0x1b44,
0x1b6b, 0x1b73,
- 0x1baa, 0x1bab,
+ 0x1baa, 0x1baa,
0x1c36, 0x1c37,
0x1c78, 0x1c7d,
0x1cd0, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
0x1d2c, 0x1d6a,
0x1dc4, 0x1dcf,
0x1dfd, 0x1dff,
@@ -17810,7 +14114,6 @@ static const OnigCodePoint CR_Diacritic[] = {
0xa6f0, 0xa6f1,
0xa717, 0xa721,
0xa788, 0xa788,
- 0xa7f8, 0xa7f9,
0xa8c4, 0xa8c4,
0xa8e0, 0xa8f1,
0xa92b, 0xa92e,
@@ -17819,7 +14122,6 @@ static const OnigCodePoint CR_Diacritic[] = {
0xa9c0, 0xa9c0,
0xaa7b, 0xaa7b,
0xaabf, 0xaac2,
- 0xaaf6, 0xaaf6,
0xabec, 0xabed,
0xfb1e, 0xfb1e,
0xfe20, 0xfe26,
@@ -17829,10 +14131,6 @@ static const OnigCodePoint CR_Diacritic[] = {
0xff9e, 0xff9f,
0xffe3, 0xffe3,
0x110b9, 0x110ba,
- 0x11133, 0x11134,
- 0x111c0, 0x111c0,
- 0x116b6, 0x116b7,
- 0x16f8f, 0x16f9f,
0x1d167, 0x1d169,
0x1d16d, 0x1d172,
0x1d17b, 0x1d182,
@@ -17842,14 +14140,13 @@ static const OnigCodePoint CR_Diacritic[] = {
/* 'Extender': Binary Property */
static const OnigCodePoint CR_Extender[] = {
- 22,
+ 20,
0x00b7, 0x00b7,
0x02d0, 0x02d1,
0x0640, 0x0640,
0x07fa, 0x07fa,
0x0e46, 0x0e46,
0x0ec6, 0x0ec6,
- 0x180a, 0x180a,
0x1843, 0x1843,
0x1aa7, 0x1aa7,
0x1c36, 0x1c36,
@@ -17863,31 +14160,25 @@ static const OnigCodePoint CR_Extender[] = {
0xa9cf, 0xa9cf,
0xaa70, 0xaa70,
0xaadd, 0xaadd,
- 0xaaf3, 0xaaf4,
0xff70, 0xff70,
}; /* CR_Extender */
/* 'Other_Lowercase': Binary Property */
static const OnigCodePoint CR_Other_Lowercase[] = {
- 18,
- 0x00aa, 0x00aa,
- 0x00ba, 0x00ba,
+ 13,
0x02b0, 0x02b8,
0x02c0, 0x02c1,
0x02e0, 0x02e4,
0x0345, 0x0345,
0x037a, 0x037a,
- 0x1d2c, 0x1d6a,
+ 0x1d2c, 0x1d61,
0x1d78, 0x1d78,
0x1d9b, 0x1dbf,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
+ 0x2090, 0x2094,
0x2170, 0x217f,
0x24d0, 0x24e9,
- 0x2c7c, 0x2c7d,
+ 0x2c7d, 0x2c7d,
0xa770, 0xa770,
- 0xa7f8, 0xa7f9,
}; /* CR_Other_Lowercase */
/* 'Other_Uppercase': Binary Property */
@@ -17922,7 +14213,7 @@ static const OnigCodePoint CR_Noncharacter_Code_Point[] = {
/* 'Other_Grapheme_Extend': Binary Property */
static const OnigCodePoint CR_Other_Grapheme_Extend[] = {
- 17,
+ 16,
0x09be, 0x09be,
0x09d7, 0x09d7,
0x0b3e, 0x0b3e,
@@ -17936,7 +14227,6 @@ static const OnigCodePoint CR_Other_Grapheme_Extend[] = {
0x0dcf, 0x0dcf,
0x0ddf, 0x0ddf,
0x200c, 0x200d,
- 0x302e, 0x302f,
0xff9e, 0xff9f,
0x1d165, 0x1d165,
0x1d16e, 0x1d172,
@@ -17967,7 +14257,7 @@ static const OnigCodePoint CR_Radical[] = {
static const OnigCodePoint CR_Unified_Ideograph[] = {
12,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xfa0e, 0xfa0f,
0xfa11, 0xfa11,
0xfa13, 0xfa14,
@@ -17982,10 +14272,9 @@ static const OnigCodePoint CR_Unified_Ideograph[] = {
/* 'Other_Default_Ignorable_Code_Point': Binary Property */
static const OnigCodePoint CR_Other_Default_Ignorable_Code_Point[] = {
- 11,
+ 10,
0x034f, 0x034f,
0x115f, 0x1160,
- 0x17b4, 0x17b5,
0x2065, 0x2069,
0x3164, 0x3164,
0xffa0, 0xffa0,
@@ -18075,7 +14364,7 @@ static const OnigCodePoint CR_Other_ID_Continue[] = {
/* 'STerm': Binary Property */
static const OnigCodePoint CR_STerm[] = {
- 50,
+ 47,
0x0021, 0x0021,
0x002e, 0x002e,
0x003f, 0x003f,
@@ -18113,7 +14402,6 @@ static const OnigCodePoint CR_STerm[] = {
0xa92f, 0xa92f,
0xa9c8, 0xa9c9,
0xaa5d, 0xaa5f,
- 0xaaf0, 0xaaf1,
0xabeb, 0xabeb,
0xfe52, 0xfe52,
0xfe56, 0xfe57,
@@ -18124,8 +14412,6 @@ static const OnigCodePoint CR_STerm[] = {
0x10a56, 0x10a57,
0x11047, 0x11048,
0x110be, 0x110c1,
- 0x11141, 0x11143,
- 0x111c5, 0x111c6,
}; /* CR_STerm */
/* 'Variation_Selector': Binary Property */
@@ -18181,7 +14467,7 @@ static const OnigCodePoint CR_Pattern_Syntax[] = {
/* 'Unknown': Script */
static const OnigCodePoint CR_Unknown[] = {
- 537,
+ 499,
0x0378, 0x0379,
0x037f, 0x0383,
0x038b, 0x038b,
@@ -18191,12 +14477,11 @@ static const OnigCodePoint CR_Unknown[] = {
0x0557, 0x0558,
0x0560, 0x0560,
0x0588, 0x0588,
- 0x058b, 0x058e,
- 0x0590, 0x0590,
+ 0x058b, 0x0590,
0x05c8, 0x05cf,
0x05eb, 0x05ef,
0x05f5, 0x05ff,
- 0x0605, 0x0605,
+ 0x0604, 0x0605,
0x061c, 0x061d,
0x070e, 0x070e,
0x074b, 0x074c,
@@ -18205,10 +14490,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x082e, 0x082f,
0x083f, 0x083f,
0x085c, 0x085d,
- 0x085f, 0x089f,
- 0x08a1, 0x08a1,
- 0x08ad, 0x08e3,
- 0x08ff, 0x08ff,
+ 0x085f, 0x08ff,
0x0978, 0x0978,
0x0980, 0x0980,
0x0984, 0x0984,
@@ -18253,6 +14535,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x0ace, 0x0acf,
0x0ad1, 0x0adf,
0x0ae4, 0x0ae5,
+ 0x0af0, 0x0af0,
0x0af2, 0x0b00,
0x0b04, 0x0b04,
0x0b0d, 0x0b0e,
@@ -18353,16 +14636,15 @@ static const OnigCodePoint CR_Unknown[] = {
0x0ec7, 0x0ec7,
0x0ece, 0x0ecf,
0x0eda, 0x0edb,
- 0x0ee0, 0x0eff,
+ 0x0ede, 0x0eff,
0x0f48, 0x0f48,
0x0f6d, 0x0f70,
0x0f98, 0x0f98,
0x0fbd, 0x0fbd,
0x0fcd, 0x0fcd,
0x0fdb, 0x0fff,
- 0x10c6, 0x10c6,
- 0x10c8, 0x10cc,
- 0x10ce, 0x10cf,
+ 0x10c6, 0x10cf,
+ 0x10fd, 0x10ff,
0x1249, 0x1249,
0x124e, 0x124f,
0x1257, 0x1257,
@@ -18416,12 +14698,13 @@ static const OnigCodePoint CR_Unknown[] = {
0x1aae, 0x1aff,
0x1b4c, 0x1b4f,
0x1b7d, 0x1b7f,
+ 0x1bab, 0x1bad,
+ 0x1bba, 0x1bbf,
0x1bf4, 0x1bfb,
0x1c38, 0x1c3a,
0x1c4a, 0x1c4c,
- 0x1c80, 0x1cbf,
- 0x1cc8, 0x1ccf,
- 0x1cf7, 0x1cff,
+ 0x1c80, 0x1ccf,
+ 0x1cf3, 0x1cff,
0x1de7, 0x1dfb,
0x1f16, 0x1f17,
0x1f1e, 0x1f1f,
@@ -18450,15 +14733,15 @@ static const OnigCodePoint CR_Unknown[] = {
0x2427, 0x243f,
0x244b, 0x245f,
0x2700, 0x2700,
+ 0x27cb, 0x27cb,
+ 0x27cd, 0x27cd,
0x2b4d, 0x2b4f,
0x2b5a, 0x2bff,
0x2c2f, 0x2c2f,
0x2c5f, 0x2c5f,
- 0x2cf4, 0x2cf8,
- 0x2d26, 0x2d26,
- 0x2d28, 0x2d2c,
- 0x2d2e, 0x2d2f,
- 0x2d68, 0x2d6e,
+ 0x2cf2, 0x2cf8,
+ 0x2d26, 0x2d2f,
+ 0x2d66, 0x2d6e,
0x2d71, 0x2d7e,
0x2d97, 0x2d9f,
0x2da7, 0x2da7,
@@ -18469,7 +14752,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x2dcf, 0x2dcf,
0x2dd7, 0x2dd7,
0x2ddf, 0x2ddf,
- 0x2e3c, 0x2e7f,
+ 0x2e32, 0x2e7f,
0x2e9a, 0x2e9a,
0x2ef4, 0x2eff,
0x2fd6, 0x2fef,
@@ -18484,15 +14767,16 @@ static const OnigCodePoint CR_Unknown[] = {
0x321f, 0x321f,
0x32ff, 0x32ff,
0x4db6, 0x4dbf,
- 0x9fcd, 0x9fff,
+ 0x9fcc, 0x9fff,
0xa48d, 0xa48f,
0xa4c7, 0xa4cf,
0xa62c, 0xa63f,
- 0xa698, 0xa69e,
+ 0xa674, 0xa67b,
+ 0xa698, 0xa69f,
0xa6f8, 0xa6ff,
0xa78f, 0xa78f,
- 0xa794, 0xa79f,
- 0xa7ab, 0xa7f7,
+ 0xa792, 0xa79f,
+ 0xa7aa, 0xa7f9,
0xa82c, 0xa82f,
0xa83a, 0xa83f,
0xa878, 0xa87f,
@@ -18509,7 +14793,7 @@ static const OnigCodePoint CR_Unknown[] = {
0xaa5a, 0xaa5b,
0xaa7c, 0xaa7f,
0xaac3, 0xaada,
- 0xaaf7, 0xab00,
+ 0xaae0, 0xab00,
0xab07, 0xab08,
0xab0f, 0xab10,
0xab17, 0xab1f,
@@ -18520,6 +14804,7 @@ static const OnigCodePoint CR_Unknown[] = {
0xd7a4, 0xd7af,
0xd7c7, 0xd7ca,
0xd7fc, 0xf8ff,
+ 0xfa2e, 0xfa2f,
0xfa6e, 0xfa6f,
0xfada, 0xfaff,
0xfb07, 0xfb12,
@@ -18581,9 +14866,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x10860, 0x108ff,
0x1091c, 0x1091e,
0x1093a, 0x1093e,
- 0x10940, 0x1097f,
- 0x109b8, 0x109bd,
- 0x109c0, 0x109ff,
+ 0x10940, 0x109ff,
0x10a04, 0x10a04,
0x10a07, 0x10a0b,
0x10a14, 0x10a14,
@@ -18601,23 +14884,12 @@ static const OnigCodePoint CR_Unknown[] = {
0x10e7f, 0x10fff,
0x1104e, 0x11051,
0x11070, 0x1107f,
- 0x110c2, 0x110cf,
- 0x110e9, 0x110ef,
- 0x110fa, 0x110ff,
- 0x11135, 0x11135,
- 0x11144, 0x1117f,
- 0x111c9, 0x111cf,
- 0x111da, 0x1167f,
- 0x116b8, 0x116bf,
- 0x116ca, 0x11fff,
+ 0x110c2, 0x11fff,
0x1236f, 0x123ff,
0x12463, 0x1246f,
0x12474, 0x12fff,
0x1342f, 0x167ff,
- 0x16a39, 0x16eff,
- 0x16f45, 0x16f4f,
- 0x16f7f, 0x16f8e,
- 0x16fa0, 0x1afff,
+ 0x16a39, 0x1afff,
0x1b002, 0x1cfff,
0x1d0f6, 0x1d0ff,
0x1d127, 0x1d128,
@@ -18645,41 +14917,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x1d551, 0x1d551,
0x1d6a6, 0x1d6a7,
0x1d7cc, 0x1d7cd,
- 0x1d800, 0x1edff,
- 0x1ee04, 0x1ee04,
- 0x1ee20, 0x1ee20,
- 0x1ee23, 0x1ee23,
- 0x1ee25, 0x1ee26,
- 0x1ee28, 0x1ee28,
- 0x1ee33, 0x1ee33,
- 0x1ee38, 0x1ee38,
- 0x1ee3a, 0x1ee3a,
- 0x1ee3c, 0x1ee41,
- 0x1ee43, 0x1ee46,
- 0x1ee48, 0x1ee48,
- 0x1ee4a, 0x1ee4a,
- 0x1ee4c, 0x1ee4c,
- 0x1ee50, 0x1ee50,
- 0x1ee53, 0x1ee53,
- 0x1ee55, 0x1ee56,
- 0x1ee58, 0x1ee58,
- 0x1ee5a, 0x1ee5a,
- 0x1ee5c, 0x1ee5c,
- 0x1ee5e, 0x1ee5e,
- 0x1ee60, 0x1ee60,
- 0x1ee63, 0x1ee63,
- 0x1ee65, 0x1ee66,
- 0x1ee6b, 0x1ee6b,
- 0x1ee73, 0x1ee73,
- 0x1ee78, 0x1ee78,
- 0x1ee7d, 0x1ee7d,
- 0x1ee7f, 0x1ee7f,
- 0x1ee8a, 0x1ee8a,
- 0x1ee9c, 0x1eea0,
- 0x1eea4, 0x1eea4,
- 0x1eeaa, 0x1eeaa,
- 0x1eebc, 0x1eeef,
- 0x1eef2, 0x1efff,
+ 0x1d800, 0x1efff,
0x1f02c, 0x1f02f,
0x1f094, 0x1f09f,
0x1f0af, 0x1f0b0,
@@ -18688,7 +14926,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x1f0e0, 0x1f0ff,
0x1f10b, 0x1f10f,
0x1f12f, 0x1f12f,
- 0x1f16c, 0x1f16f,
+ 0x1f16a, 0x1f16f,
0x1f19b, 0x1f1e5,
0x1f203, 0x1f20f,
0x1f23b, 0x1f23f,
@@ -18705,9 +14943,19 @@ static const OnigCodePoint CR_Unknown[] = {
0x1f441, 0x1f441,
0x1f4f8, 0x1f4f8,
0x1f4fd, 0x1f4ff,
- 0x1f53e, 0x1f53f,
- 0x1f544, 0x1f54f,
+ 0x1f53e, 0x1f54f,
0x1f568, 0x1f5fa,
+ 0x1f600, 0x1f600,
+ 0x1f611, 0x1f611,
+ 0x1f615, 0x1f615,
+ 0x1f617, 0x1f617,
+ 0x1f619, 0x1f619,
+ 0x1f61b, 0x1f61b,
+ 0x1f61f, 0x1f61f,
+ 0x1f626, 0x1f627,
+ 0x1f62c, 0x1f62c,
+ 0x1f62e, 0x1f62f,
+ 0x1f634, 0x1f634,
0x1f641, 0x1f644,
0x1f650, 0x1f67f,
0x1f6c6, 0x1f6ff,
@@ -18720,6 +14968,8 @@ static const OnigCodePoint CR_Unknown[] = {
0xe0080, 0xe00ff,
0xe01f0, 0x10ffff,
}; /* CR_Unknown */
+#endif /* USE_UNICODE_PROPERTIES */
+#endif /* USE_UNICODE_PROPERTIES */
/* 'Age_1_1': Derived Age 1.1 */
static const OnigCodePoint CR_Age_1_1[] = {
@@ -23604,10 +19854,554 @@ static const OnigCodePoint CR_Age_6_0[] = {
0xefffe, 0x10ffff,
}; /* CR_Age_6_0 */
-/* 'Age_6_1': Derived Age 6.1 */
-static const OnigCodePoint CR_Age_6_1[] = {
- 549,
- 0x0000, 0x0377,
+/* 'NEWLINE': [[:NEWLINE:]] */
+static const OnigCodePoint CR_NEWLINE[] = {
+ 1,
+ 0x000a, 0x000a,
+}; /* CR_NEWLINE */
+
+/* 'Alpha': [[:Alpha:]] */
+#define CR_Alpha CR_Alphabetic
+
+/* 'Blank': [[:Blank:]] */
+static const OnigCodePoint CR_Blank[] = {
+ 9,
+ 0x0009, 0x0009,
+ 0x0020, 0x0020,
+ 0x00a0, 0x00a0,
+ 0x1680, 0x1680,
+ 0x180e, 0x180e,
+ 0x2000, 0x200a,
+ 0x202f, 0x202f,
+ 0x205f, 0x205f,
+ 0x3000, 0x3000,
+}; /* CR_Blank */
+
+/* 'Cntrl': [[:Cntrl:]] */
+#define CR_Cntrl CR_Cc
+
+/* 'Digit': [[:Digit:]] */
+#define CR_Digit CR_Nd
+
+/* 'Graph': [[:Graph:]] */
+static const OnigCodePoint CR_Graph[] = {
+ 506,
+ 0x0021, 0x007e,
+ 0x00a1, 0x0377,
+ 0x037a, 0x037e,
+ 0x0384, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x03a1,
+ 0x03a3, 0x0527,
+ 0x0531, 0x0556,
+ 0x0559, 0x055f,
+ 0x0561, 0x0587,
+ 0x0589, 0x058a,
+ 0x0591, 0x05c7,
+ 0x05d0, 0x05ea,
+ 0x05f0, 0x05f4,
+ 0x0600, 0x0603,
+ 0x0606, 0x061b,
+ 0x061e, 0x070d,
+ 0x070f, 0x074a,
+ 0x074d, 0x07b1,
+ 0x07c0, 0x07fa,
+ 0x0800, 0x082d,
+ 0x0830, 0x083e,
+ 0x0840, 0x085b,
+ 0x085e, 0x085e,
+ 0x0900, 0x0977,
+ 0x0979, 0x097f,
+ 0x0981, 0x0983,
+ 0x0985, 0x098c,
+ 0x098f, 0x0990,
+ 0x0993, 0x09a8,
+ 0x09aa, 0x09b0,
+ 0x09b2, 0x09b2,
+ 0x09b6, 0x09b9,
+ 0x09bc, 0x09c4,
+ 0x09c7, 0x09c8,
+ 0x09cb, 0x09ce,
+ 0x09d7, 0x09d7,
+ 0x09dc, 0x09dd,
+ 0x09df, 0x09e3,
+ 0x09e6, 0x09fb,
+ 0x0a01, 0x0a03,
+ 0x0a05, 0x0a0a,
+ 0x0a0f, 0x0a10,
+ 0x0a13, 0x0a28,
+ 0x0a2a, 0x0a30,
+ 0x0a32, 0x0a33,
+ 0x0a35, 0x0a36,
+ 0x0a38, 0x0a39,
+ 0x0a3c, 0x0a3c,
+ 0x0a3e, 0x0a42,
+ 0x0a47, 0x0a48,
+ 0x0a4b, 0x0a4d,
+ 0x0a51, 0x0a51,
+ 0x0a59, 0x0a5c,
+ 0x0a5e, 0x0a5e,
+ 0x0a66, 0x0a75,
+ 0x0a81, 0x0a83,
+ 0x0a85, 0x0a8d,
+ 0x0a8f, 0x0a91,
+ 0x0a93, 0x0aa8,
+ 0x0aaa, 0x0ab0,
+ 0x0ab2, 0x0ab3,
+ 0x0ab5, 0x0ab9,
+ 0x0abc, 0x0ac5,
+ 0x0ac7, 0x0ac9,
+ 0x0acb, 0x0acd,
+ 0x0ad0, 0x0ad0,
+ 0x0ae0, 0x0ae3,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
+ 0x0b01, 0x0b03,
+ 0x0b05, 0x0b0c,
+ 0x0b0f, 0x0b10,
+ 0x0b13, 0x0b28,
+ 0x0b2a, 0x0b30,
+ 0x0b32, 0x0b33,
+ 0x0b35, 0x0b39,
+ 0x0b3c, 0x0b44,
+ 0x0b47, 0x0b48,
+ 0x0b4b, 0x0b4d,
+ 0x0b56, 0x0b57,
+ 0x0b5c, 0x0b5d,
+ 0x0b5f, 0x0b63,
+ 0x0b66, 0x0b77,
+ 0x0b82, 0x0b83,
+ 0x0b85, 0x0b8a,
+ 0x0b8e, 0x0b90,
+ 0x0b92, 0x0b95,
+ 0x0b99, 0x0b9a,
+ 0x0b9c, 0x0b9c,
+ 0x0b9e, 0x0b9f,
+ 0x0ba3, 0x0ba4,
+ 0x0ba8, 0x0baa,
+ 0x0bae, 0x0bb9,
+ 0x0bbe, 0x0bc2,
+ 0x0bc6, 0x0bc8,
+ 0x0bca, 0x0bcd,
+ 0x0bd0, 0x0bd0,
+ 0x0bd7, 0x0bd7,
+ 0x0be6, 0x0bfa,
+ 0x0c01, 0x0c03,
+ 0x0c05, 0x0c0c,
+ 0x0c0e, 0x0c10,
+ 0x0c12, 0x0c28,
+ 0x0c2a, 0x0c33,
+ 0x0c35, 0x0c39,
+ 0x0c3d, 0x0c44,
+ 0x0c46, 0x0c48,
+ 0x0c4a, 0x0c4d,
+ 0x0c55, 0x0c56,
+ 0x0c58, 0x0c59,
+ 0x0c60, 0x0c63,
+ 0x0c66, 0x0c6f,
+ 0x0c78, 0x0c7f,
+ 0x0c82, 0x0c83,
+ 0x0c85, 0x0c8c,
+ 0x0c8e, 0x0c90,
+ 0x0c92, 0x0ca8,
+ 0x0caa, 0x0cb3,
+ 0x0cb5, 0x0cb9,
+ 0x0cbc, 0x0cc4,
+ 0x0cc6, 0x0cc8,
+ 0x0cca, 0x0ccd,
+ 0x0cd5, 0x0cd6,
+ 0x0cde, 0x0cde,
+ 0x0ce0, 0x0ce3,
+ 0x0ce6, 0x0cef,
+ 0x0cf1, 0x0cf2,
+ 0x0d02, 0x0d03,
+ 0x0d05, 0x0d0c,
+ 0x0d0e, 0x0d10,
+ 0x0d12, 0x0d3a,
+ 0x0d3d, 0x0d44,
+ 0x0d46, 0x0d48,
+ 0x0d4a, 0x0d4e,
+ 0x0d57, 0x0d57,
+ 0x0d60, 0x0d63,
+ 0x0d66, 0x0d75,
+ 0x0d79, 0x0d7f,
+ 0x0d82, 0x0d83,
+ 0x0d85, 0x0d96,
+ 0x0d9a, 0x0db1,
+ 0x0db3, 0x0dbb,
+ 0x0dbd, 0x0dbd,
+ 0x0dc0, 0x0dc6,
+ 0x0dca, 0x0dca,
+ 0x0dcf, 0x0dd4,
+ 0x0dd6, 0x0dd6,
+ 0x0dd8, 0x0ddf,
+ 0x0df2, 0x0df4,
+ 0x0e01, 0x0e3a,
+ 0x0e3f, 0x0e5b,
+ 0x0e81, 0x0e82,
+ 0x0e84, 0x0e84,
+ 0x0e87, 0x0e88,
+ 0x0e8a, 0x0e8a,
+ 0x0e8d, 0x0e8d,
+ 0x0e94, 0x0e97,
+ 0x0e99, 0x0e9f,
+ 0x0ea1, 0x0ea3,
+ 0x0ea5, 0x0ea5,
+ 0x0ea7, 0x0ea7,
+ 0x0eaa, 0x0eab,
+ 0x0ead, 0x0eb9,
+ 0x0ebb, 0x0ebd,
+ 0x0ec0, 0x0ec4,
+ 0x0ec6, 0x0ec6,
+ 0x0ec8, 0x0ecd,
+ 0x0ed0, 0x0ed9,
+ 0x0edc, 0x0edd,
+ 0x0f00, 0x0f47,
+ 0x0f49, 0x0f6c,
+ 0x0f71, 0x0f97,
+ 0x0f99, 0x0fbc,
+ 0x0fbe, 0x0fcc,
+ 0x0fce, 0x0fda,
+ 0x1000, 0x10c5,
+ 0x10d0, 0x10fc,
+ 0x1100, 0x1248,
+ 0x124a, 0x124d,
+ 0x1250, 0x1256,
+ 0x1258, 0x1258,
+ 0x125a, 0x125d,
+ 0x1260, 0x1288,
+ 0x128a, 0x128d,
+ 0x1290, 0x12b0,
+ 0x12b2, 0x12b5,
+ 0x12b8, 0x12be,
+ 0x12c0, 0x12c0,
+ 0x12c2, 0x12c5,
+ 0x12c8, 0x12d6,
+ 0x12d8, 0x1310,
+ 0x1312, 0x1315,
+ 0x1318, 0x135a,
+ 0x135d, 0x137c,
+ 0x1380, 0x1399,
+ 0x13a0, 0x13f4,
+ 0x1400, 0x167f,
+ 0x1681, 0x169c,
+ 0x16a0, 0x16f0,
+ 0x1700, 0x170c,
+ 0x170e, 0x1714,
+ 0x1720, 0x1736,
+ 0x1740, 0x1753,
+ 0x1760, 0x176c,
+ 0x176e, 0x1770,
+ 0x1772, 0x1773,
+ 0x1780, 0x17dd,
+ 0x17e0, 0x17e9,
+ 0x17f0, 0x17f9,
+ 0x1800, 0x180d,
+ 0x1810, 0x1819,
+ 0x1820, 0x1877,
+ 0x1880, 0x18aa,
+ 0x18b0, 0x18f5,
+ 0x1900, 0x191c,
+ 0x1920, 0x192b,
+ 0x1930, 0x193b,
+ 0x1940, 0x1940,
+ 0x1944, 0x196d,
+ 0x1970, 0x1974,
+ 0x1980, 0x19ab,
+ 0x19b0, 0x19c9,
+ 0x19d0, 0x19da,
+ 0x19de, 0x1a1b,
+ 0x1a1e, 0x1a5e,
+ 0x1a60, 0x1a7c,
+ 0x1a7f, 0x1a89,
+ 0x1a90, 0x1a99,
+ 0x1aa0, 0x1aad,
+ 0x1b00, 0x1b4b,
+ 0x1b50, 0x1b7c,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
+ 0x1bfc, 0x1c37,
+ 0x1c3b, 0x1c49,
+ 0x1c4d, 0x1c7f,
+ 0x1cd0, 0x1cf2,
+ 0x1d00, 0x1de6,
+ 0x1dfc, 0x1f15,
+ 0x1f18, 0x1f1d,
+ 0x1f20, 0x1f45,
+ 0x1f48, 0x1f4d,
+ 0x1f50, 0x1f57,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f7d,
+ 0x1f80, 0x1fb4,
+ 0x1fb6, 0x1fc4,
+ 0x1fc6, 0x1fd3,
+ 0x1fd6, 0x1fdb,
+ 0x1fdd, 0x1fef,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ffe,
+ 0x200b, 0x2027,
+ 0x202a, 0x202e,
+ 0x2030, 0x205e,
+ 0x2060, 0x2064,
+ 0x206a, 0x2071,
+ 0x2074, 0x208e,
+ 0x2090, 0x209c,
+ 0x20a0, 0x20b9,
+ 0x20d0, 0x20f0,
+ 0x2100, 0x2189,
+ 0x2190, 0x23f3,
+ 0x2400, 0x2426,
+ 0x2440, 0x244a,
+ 0x2460, 0x26ff,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x2b4c,
+ 0x2b50, 0x2b59,
+ 0x2c00, 0x2c2e,
+ 0x2c30, 0x2c5e,
+ 0x2c60, 0x2cf1,
+ 0x2cf9, 0x2d25,
+ 0x2d30, 0x2d65,
+ 0x2d6f, 0x2d70,
+ 0x2d7f, 0x2d96,
+ 0x2da0, 0x2da6,
+ 0x2da8, 0x2dae,
+ 0x2db0, 0x2db6,
+ 0x2db8, 0x2dbe,
+ 0x2dc0, 0x2dc6,
+ 0x2dc8, 0x2dce,
+ 0x2dd0, 0x2dd6,
+ 0x2dd8, 0x2dde,
+ 0x2de0, 0x2e31,
+ 0x2e80, 0x2e99,
+ 0x2e9b, 0x2ef3,
+ 0x2f00, 0x2fd5,
+ 0x2ff0, 0x2ffb,
+ 0x3001, 0x303f,
+ 0x3041, 0x3096,
+ 0x3099, 0x30ff,
+ 0x3105, 0x312d,
+ 0x3131, 0x318e,
+ 0x3190, 0x31ba,
+ 0x31c0, 0x31e3,
+ 0x31f0, 0x321e,
+ 0x3220, 0x32fe,
+ 0x3300, 0x4db5,
+ 0x4dc0, 0x9fcb,
+ 0xa000, 0xa48c,
+ 0xa490, 0xa4c6,
+ 0xa4d0, 0xa62b,
+ 0xa640, 0xa673,
+ 0xa67c, 0xa697,
+ 0xa6a0, 0xa6f7,
+ 0xa700, 0xa78e,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa82b,
+ 0xa830, 0xa839,
+ 0xa840, 0xa877,
+ 0xa880, 0xa8c4,
+ 0xa8ce, 0xa8d9,
+ 0xa8e0, 0xa8fb,
+ 0xa900, 0xa953,
+ 0xa95f, 0xa97c,
+ 0xa980, 0xa9cd,
+ 0xa9cf, 0xa9d9,
+ 0xa9de, 0xa9df,
+ 0xaa00, 0xaa36,
+ 0xaa40, 0xaa4d,
+ 0xaa50, 0xaa59,
+ 0xaa5c, 0xaa7b,
+ 0xaa80, 0xaac2,
+ 0xaadb, 0xaadf,
+ 0xab01, 0xab06,
+ 0xab09, 0xab0e,
+ 0xab11, 0xab16,
+ 0xab20, 0xab26,
+ 0xab28, 0xab2e,
+ 0xabc0, 0xabed,
+ 0xabf0, 0xabf9,
+ 0xac00, 0xd7a3,
+ 0xd7b0, 0xd7c6,
+ 0xd7cb, 0xd7fb,
+ 0xe000, 0xfa2d,
+ 0xfa30, 0xfa6d,
+ 0xfa70, 0xfad9,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xfb1d, 0xfb36,
+ 0xfb38, 0xfb3c,
+ 0xfb3e, 0xfb3e,
+ 0xfb40, 0xfb41,
+ 0xfb43, 0xfb44,
+ 0xfb46, 0xfbc1,
+ 0xfbd3, 0xfd3f,
+ 0xfd50, 0xfd8f,
+ 0xfd92, 0xfdc7,
+ 0xfdf0, 0xfdfd,
+ 0xfe00, 0xfe19,
+ 0xfe20, 0xfe26,
+ 0xfe30, 0xfe52,
+ 0xfe54, 0xfe66,
+ 0xfe68, 0xfe6b,
+ 0xfe70, 0xfe74,
+ 0xfe76, 0xfefc,
+ 0xfeff, 0xfeff,
+ 0xff01, 0xffbe,
+ 0xffc2, 0xffc7,
+ 0xffca, 0xffcf,
+ 0xffd2, 0xffd7,
+ 0xffda, 0xffdc,
+ 0xffe0, 0xffe6,
+ 0xffe8, 0xffee,
+ 0xfff9, 0xfffd,
+ 0x10000, 0x1000b,
+ 0x1000d, 0x10026,
+ 0x10028, 0x1003a,
+ 0x1003c, 0x1003d,
+ 0x1003f, 0x1004d,
+ 0x10050, 0x1005d,
+ 0x10080, 0x100fa,
+ 0x10100, 0x10102,
+ 0x10107, 0x10133,
+ 0x10137, 0x1018a,
+ 0x10190, 0x1019b,
+ 0x101d0, 0x101fd,
+ 0x10280, 0x1029c,
+ 0x102a0, 0x102d0,
+ 0x10300, 0x1031e,
+ 0x10320, 0x10323,
+ 0x10330, 0x1034a,
+ 0x10380, 0x1039d,
+ 0x1039f, 0x103c3,
+ 0x103c8, 0x103d5,
+ 0x10400, 0x1049d,
+ 0x104a0, 0x104a9,
+ 0x10800, 0x10805,
+ 0x10808, 0x10808,
+ 0x1080a, 0x10835,
+ 0x10837, 0x10838,
+ 0x1083c, 0x1083c,
+ 0x1083f, 0x10855,
+ 0x10857, 0x1085f,
+ 0x10900, 0x1091b,
+ 0x1091f, 0x10939,
+ 0x1093f, 0x1093f,
+ 0x10a00, 0x10a03,
+ 0x10a05, 0x10a06,
+ 0x10a0c, 0x10a13,
+ 0x10a15, 0x10a17,
+ 0x10a19, 0x10a33,
+ 0x10a38, 0x10a3a,
+ 0x10a3f, 0x10a47,
+ 0x10a50, 0x10a58,
+ 0x10a60, 0x10a7f,
+ 0x10b00, 0x10b35,
+ 0x10b39, 0x10b55,
+ 0x10b58, 0x10b72,
+ 0x10b78, 0x10b7f,
+ 0x10c00, 0x10c48,
+ 0x10e60, 0x10e7e,
+ 0x11000, 0x1104d,
+ 0x11052, 0x1106f,
+ 0x11080, 0x110c1,
+ 0x12000, 0x1236e,
+ 0x12400, 0x12462,
+ 0x12470, 0x12473,
+ 0x13000, 0x1342e,
+ 0x16800, 0x16a38,
+ 0x1b000, 0x1b001,
+ 0x1d000, 0x1d0f5,
+ 0x1d100, 0x1d126,
+ 0x1d129, 0x1d1dd,
+ 0x1d200, 0x1d245,
+ 0x1d300, 0x1d356,
+ 0x1d360, 0x1d371,
+ 0x1d400, 0x1d454,
+ 0x1d456, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d51e, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d552, 0x1d6a5,
+ 0x1d6a8, 0x1d7cb,
+ 0x1d7ce, 0x1d7ff,
+ 0x1f000, 0x1f02b,
+ 0x1f030, 0x1f093,
+ 0x1f0a0, 0x1f0ae,
+ 0x1f0b1, 0x1f0be,
+ 0x1f0c1, 0x1f0cf,
+ 0x1f0d1, 0x1f0df,
+ 0x1f100, 0x1f10a,
+ 0x1f110, 0x1f12e,
+ 0x1f130, 0x1f169,
+ 0x1f170, 0x1f19a,
+ 0x1f1e6, 0x1f202,
+ 0x1f210, 0x1f23a,
+ 0x1f240, 0x1f248,
+ 0x1f250, 0x1f251,
+ 0x1f300, 0x1f320,
+ 0x1f330, 0x1f335,
+ 0x1f337, 0x1f37c,
+ 0x1f380, 0x1f393,
+ 0x1f3a0, 0x1f3c4,
+ 0x1f3c6, 0x1f3ca,
+ 0x1f3e0, 0x1f3f0,
+ 0x1f400, 0x1f43e,
+ 0x1f440, 0x1f440,
+ 0x1f442, 0x1f4f7,
+ 0x1f4f9, 0x1f4fc,
+ 0x1f500, 0x1f53d,
+ 0x1f550, 0x1f567,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
+ 0x1f645, 0x1f64f,
+ 0x1f680, 0x1f6c5,
+ 0x1f700, 0x1f773,
+ 0x20000, 0x2a6d6,
+ 0x2a700, 0x2b734,
+ 0x2b740, 0x2b81d,
+ 0x2f800, 0x2fa1d,
+ 0xe0001, 0xe0001,
+ 0xe0020, 0xe007f,
+ 0xe0100, 0xe01ef,
+ 0xf0000, 0xffffd,
+ 0x100000, 0x10fffd,
+}; /* CR_Graph */
+
+/* 'Lower': [[:Lower:]] */
+#define CR_Lower CR_Lowercase
+
+/* 'Print': [[:Print:]] */
+static const OnigCodePoint CR_Print[] = {
+ 503,
+ 0x0020, 0x007e,
+ 0x00a0, 0x0377,
0x037a, 0x037e,
0x0384, 0x038a,
0x038c, 0x038c,
@@ -23617,11 +20411,10 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0559, 0x055f,
0x0561, 0x0587,
0x0589, 0x058a,
- 0x058f, 0x058f,
0x0591, 0x05c7,
0x05d0, 0x05ea,
0x05f0, 0x05f4,
- 0x0600, 0x0604,
+ 0x0600, 0x0603,
0x0606, 0x061b,
0x061e, 0x070d,
0x070f, 0x074a,
@@ -23631,9 +20424,6 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0830, 0x083e,
0x0840, 0x085b,
0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0x0900, 0x0977,
0x0979, 0x097f,
0x0981, 0x0983,
@@ -23678,7 +20468,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0acb, 0x0acd,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -23778,7 +20569,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f47,
0x0f49, 0x0f6c,
0x0f71, 0x0f97,
@@ -23786,9 +20577,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0fbe, 0x0fcc,
0x0fce, 0x0fda,
0x1000, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
+ 0x10d0, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -23841,12 +20631,13 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1aa0, 0x1aad,
0x1b00, 0x1b4b,
0x1b50, 0x1b7c,
- 0x1b80, 0x1bf3,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
0x1bfc, 0x1c37,
0x1c3b, 0x1c49,
0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd0, 0x1cf6,
+ 0x1cd0, 0x1cf2,
0x1d00, 0x1de6,
0x1dfc, 0x1f15,
0x1f18, 0x1f1d,
@@ -23864,7 +20655,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1fdd, 0x1fef,
0x1ff2, 0x1ff4,
0x1ff6, 0x1ffe,
- 0x2000, 0x2064,
+ 0x2000, 0x2027,
+ 0x202a, 0x2064,
0x206a, 0x2071,
0x2074, 0x208e,
0x2090, 0x209c,
@@ -23875,15 +20667,15 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x2400, 0x2426,
0x2440, 0x244a,
0x2460, 0x26ff,
- 0x2701, 0x2b4c,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x2b4c,
0x2b50, 0x2b59,
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
- 0x2c60, 0x2cf3,
+ 0x2c60, 0x2cf1,
0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d70,
0x2d7f, 0x2d96,
0x2da0, 0x2da6,
@@ -23894,7 +20686,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
- 0x2de0, 0x2e3b,
+ 0x2de0, 0x2e31,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -23909,16 +20701,17 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x31f0, 0x321e,
0x3220, 0x32fe,
0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
+ 0x4dc0, 0x9fcb,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
- 0xa640, 0xa697,
- 0xa69f, 0xa6f7,
+ 0xa640, 0xa673,
+ 0xa67c, 0xa697,
+ 0xa6a0, 0xa6f7,
0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa82b,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
0xa880, 0xa8c4,
@@ -23934,7 +20727,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0xaa50, 0xaa59,
0xaa5c, 0xaa7b,
0xaa80, 0xaac2,
- 0xaadb, 0xaaf6,
+ 0xaadb, 0xaadf,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -23945,7 +20738,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xd800, 0xfa6d,
+ 0xe000, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -23958,7 +20752,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0xfbd3, 0xfd3f,
0xfd50, 0xfd8f,
0xfd92, 0xfdc7,
- 0xfdd0, 0xfdfd,
+ 0xfdf0, 0xfdfd,
0xfe00, 0xfe19,
0xfe20, 0xfe26,
0xfe30, 0xfe52,
@@ -23974,7 +20768,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0xffda, 0xffdc,
0xffe0, 0xffe6,
0xffe8, 0xffee,
- 0xfff9, 0x1000b,
+ 0xfff9, 0xfffd,
+ 0x10000, 0x1000b,
0x1000d, 0x10026,
0x10028, 0x1003a,
0x1003c, 0x1003d,
@@ -24006,8 +20801,6 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x10900, 0x1091b,
0x1091f, 0x10939,
0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a03,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
@@ -24026,22 +20819,11 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x11000, 0x1104d,
0x11052, 0x1106f,
0x11080, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x12470, 0x12473,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
0x1b000, 0x1b001,
0x1d000, 0x1d0f5,
0x1d100, 0x1d126,
@@ -24070,40 +20852,6 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1d552, 0x1d6a5,
0x1d6a8, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
@@ -24112,7 +20860,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1f0d1, 0x1f0df,
0x1f100, 0x1f10a,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -24130,1368 +20878,1083 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
- 0x1fffe, 0x2a6d6,
+ 0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2f800, 0x2fa1d,
- 0x2fffe, 0x2ffff,
- 0x3fffe, 0x3ffff,
- 0x4fffe, 0x4ffff,
- 0x5fffe, 0x5ffff,
- 0x6fffe, 0x6ffff,
- 0x7fffe, 0x7ffff,
- 0x8fffe, 0x8ffff,
- 0x9fffe, 0x9ffff,
- 0xafffe, 0xaffff,
- 0xbfffe, 0xbffff,
- 0xcfffe, 0xcffff,
- 0xdfffe, 0xdffff,
0xe0001, 0xe0001,
0xe0020, 0xe007f,
0xe0100, 0xe01ef,
- 0xefffe, 0x10ffff,
-}; /* CR_Age_6_1 */
-
-/* 'In_Basic_Latin': Block */
-#define CR_In_Basic_Latin CR_ASCII
-
-/* 'In_Latin_1_Supplement': Block */
-static const OnigCodePoint CR_In_Latin_1_Supplement[] = {
- 1,
- 0x0080, 0x00ff,
-}; /* CR_In_Latin_1_Supplement */
-
-/* 'In_Latin_Extended_A': Block */
-static const OnigCodePoint CR_In_Latin_Extended_A[] = {
- 1,
- 0x0100, 0x017f,
-}; /* CR_In_Latin_Extended_A */
-
-/* 'In_Latin_Extended_B': Block */
-static const OnigCodePoint CR_In_Latin_Extended_B[] = {
- 1,
- 0x0180, 0x024f,
-}; /* CR_In_Latin_Extended_B */
-
-/* 'In_IPA_Extensions': Block */
-static const OnigCodePoint CR_In_IPA_Extensions[] = {
- 1,
- 0x0250, 0x02af,
-}; /* CR_In_IPA_Extensions */
-
-/* 'In_Spacing_Modifier_Letters': Block */
-static const OnigCodePoint CR_In_Spacing_Modifier_Letters[] = {
- 1,
- 0x02b0, 0x02ff,
-}; /* CR_In_Spacing_Modifier_Letters */
-
-/* 'In_Combining_Diacritical_Marks': Block */
-static const OnigCodePoint CR_In_Combining_Diacritical_Marks[] = {
- 1,
- 0x0300, 0x036f,
-}; /* CR_In_Combining_Diacritical_Marks */
-
-/* 'In_Greek_and_Coptic': Block */
-static const OnigCodePoint CR_In_Greek_and_Coptic[] = {
- 1,
- 0x0370, 0x03ff,
-}; /* CR_In_Greek_and_Coptic */
-
-/* 'In_Cyrillic': Block */
-static const OnigCodePoint CR_In_Cyrillic[] = {
- 1,
- 0x0400, 0x04ff,
-}; /* CR_In_Cyrillic */
-
-/* 'In_Cyrillic_Supplement': Block */
-static const OnigCodePoint CR_In_Cyrillic_Supplement[] = {
- 1,
- 0x0500, 0x052f,
-}; /* CR_In_Cyrillic_Supplement */
-
-/* 'In_Armenian': Block */
-static const OnigCodePoint CR_In_Armenian[] = {
- 1,
- 0x0530, 0x058f,
-}; /* CR_In_Armenian */
-
-/* 'In_Hebrew': Block */
-static const OnigCodePoint CR_In_Hebrew[] = {
- 1,
- 0x0590, 0x05ff,
-}; /* CR_In_Hebrew */
-
-/* 'In_Arabic': Block */
-static const OnigCodePoint CR_In_Arabic[] = {
- 1,
- 0x0600, 0x06ff,
-}; /* CR_In_Arabic */
-
-/* 'In_Syriac': Block */
-static const OnigCodePoint CR_In_Syriac[] = {
- 1,
- 0x0700, 0x074f,
-}; /* CR_In_Syriac */
-
-/* 'In_Arabic_Supplement': Block */
-static const OnigCodePoint CR_In_Arabic_Supplement[] = {
- 1,
- 0x0750, 0x077f,
-}; /* CR_In_Arabic_Supplement */
-
-/* 'In_Thaana': Block */
-static const OnigCodePoint CR_In_Thaana[] = {
- 1,
- 0x0780, 0x07bf,
-}; /* CR_In_Thaana */
-
-/* 'In_NKo': Block */
-static const OnigCodePoint CR_In_NKo[] = {
- 1,
- 0x07c0, 0x07ff,
-}; /* CR_In_NKo */
-
-/* 'In_Samaritan': Block */
-static const OnigCodePoint CR_In_Samaritan[] = {
- 1,
- 0x0800, 0x083f,
-}; /* CR_In_Samaritan */
-
-/* 'In_Mandaic': Block */
-static const OnigCodePoint CR_In_Mandaic[] = {
- 1,
- 0x0840, 0x085f,
-}; /* CR_In_Mandaic */
-
-/* 'In_Arabic_Extended_A': Block */
-static const OnigCodePoint CR_In_Arabic_Extended_A[] = {
- 1,
- 0x08a0, 0x08ff,
-}; /* CR_In_Arabic_Extended_A */
-
-/* 'In_Devanagari': Block */
-static const OnigCodePoint CR_In_Devanagari[] = {
- 1,
- 0x0900, 0x097f,
-}; /* CR_In_Devanagari */
-
-/* 'In_Bengali': Block */
-static const OnigCodePoint CR_In_Bengali[] = {
- 1,
- 0x0980, 0x09ff,
-}; /* CR_In_Bengali */
-
-/* 'In_Gurmukhi': Block */
-static const OnigCodePoint CR_In_Gurmukhi[] = {
- 1,
- 0x0a00, 0x0a7f,
-}; /* CR_In_Gurmukhi */
-
-/* 'In_Gujarati': Block */
-static const OnigCodePoint CR_In_Gujarati[] = {
- 1,
- 0x0a80, 0x0aff,
-}; /* CR_In_Gujarati */
-
-/* 'In_Oriya': Block */
-static const OnigCodePoint CR_In_Oriya[] = {
- 1,
- 0x0b00, 0x0b7f,
-}; /* CR_In_Oriya */
-
-/* 'In_Tamil': Block */
-static const OnigCodePoint CR_In_Tamil[] = {
- 1,
- 0x0b80, 0x0bff,
-}; /* CR_In_Tamil */
-
-/* 'In_Telugu': Block */
-static const OnigCodePoint CR_In_Telugu[] = {
- 1,
- 0x0c00, 0x0c7f,
-}; /* CR_In_Telugu */
-
-/* 'In_Kannada': Block */
-static const OnigCodePoint CR_In_Kannada[] = {
- 1,
- 0x0c80, 0x0cff,
-}; /* CR_In_Kannada */
-
-/* 'In_Malayalam': Block */
-static const OnigCodePoint CR_In_Malayalam[] = {
- 1,
- 0x0d00, 0x0d7f,
-}; /* CR_In_Malayalam */
-
-/* 'In_Sinhala': Block */
-static const OnigCodePoint CR_In_Sinhala[] = {
- 1,
- 0x0d80, 0x0dff,
-}; /* CR_In_Sinhala */
-
-/* 'In_Thai': Block */
-static const OnigCodePoint CR_In_Thai[] = {
- 1,
- 0x0e00, 0x0e7f,
-}; /* CR_In_Thai */
-
-/* 'In_Lao': Block */
-static const OnigCodePoint CR_In_Lao[] = {
- 1,
- 0x0e80, 0x0eff,
-}; /* CR_In_Lao */
-
-/* 'In_Tibetan': Block */
-static const OnigCodePoint CR_In_Tibetan[] = {
- 1,
- 0x0f00, 0x0fff,
-}; /* CR_In_Tibetan */
-
-/* 'In_Myanmar': Block */
-static const OnigCodePoint CR_In_Myanmar[] = {
- 1,
- 0x1000, 0x109f,
-}; /* CR_In_Myanmar */
-
-/* 'In_Georgian': Block */
-static const OnigCodePoint CR_In_Georgian[] = {
- 1,
- 0x10a0, 0x10ff,
-}; /* CR_In_Georgian */
-
-/* 'In_Hangul_Jamo': Block */
-static const OnigCodePoint CR_In_Hangul_Jamo[] = {
- 1,
- 0x1100, 0x11ff,
-}; /* CR_In_Hangul_Jamo */
-
-/* 'In_Ethiopic': Block */
-static const OnigCodePoint CR_In_Ethiopic[] = {
- 1,
- 0x1200, 0x137f,
-}; /* CR_In_Ethiopic */
-
-/* 'In_Ethiopic_Supplement': Block */
-static const OnigCodePoint CR_In_Ethiopic_Supplement[] = {
- 1,
- 0x1380, 0x139f,
-}; /* CR_In_Ethiopic_Supplement */
-
-/* 'In_Cherokee': Block */
-static const OnigCodePoint CR_In_Cherokee[] = {
- 1,
- 0x13a0, 0x13ff,
-}; /* CR_In_Cherokee */
-
-/* 'In_Unified_Canadian_Aboriginal_Syllabics': Block */
-static const OnigCodePoint CR_In_Unified_Canadian_Aboriginal_Syllabics[] = {
- 1,
- 0x1400, 0x167f,
-}; /* CR_In_Unified_Canadian_Aboriginal_Syllabics */
-
-/* 'In_Ogham': Block */
-static const OnigCodePoint CR_In_Ogham[] = {
- 1,
- 0x1680, 0x169f,
-}; /* CR_In_Ogham */
-
-/* 'In_Runic': Block */
-static const OnigCodePoint CR_In_Runic[] = {
- 1,
- 0x16a0, 0x16ff,
-}; /* CR_In_Runic */
-
-/* 'In_Tagalog': Block */
-static const OnigCodePoint CR_In_Tagalog[] = {
- 1,
- 0x1700, 0x171f,
-}; /* CR_In_Tagalog */
-
-/* 'In_Hanunoo': Block */
-static const OnigCodePoint CR_In_Hanunoo[] = {
- 1,
- 0x1720, 0x173f,
-}; /* CR_In_Hanunoo */
-
-/* 'In_Buhid': Block */
-static const OnigCodePoint CR_In_Buhid[] = {
- 1,
- 0x1740, 0x175f,
-}; /* CR_In_Buhid */
-
-/* 'In_Tagbanwa': Block */
-static const OnigCodePoint CR_In_Tagbanwa[] = {
- 1,
- 0x1760, 0x177f,
-}; /* CR_In_Tagbanwa */
-
-/* 'In_Khmer': Block */
-static const OnigCodePoint CR_In_Khmer[] = {
- 1,
- 0x1780, 0x17ff,
-}; /* CR_In_Khmer */
-
-/* 'In_Mongolian': Block */
-static const OnigCodePoint CR_In_Mongolian[] = {
- 1,
- 0x1800, 0x18af,
-}; /* CR_In_Mongolian */
-
-/* 'In_Unified_Canadian_Aboriginal_Syllabics_Extended': Block */
-static const OnigCodePoint CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended[] = {
- 1,
- 0x18b0, 0x18ff,
-}; /* CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended */
-
-/* 'In_Limbu': Block */
-static const OnigCodePoint CR_In_Limbu[] = {
- 1,
- 0x1900, 0x194f,
-}; /* CR_In_Limbu */
-
-/* 'In_Tai_Le': Block */
-static const OnigCodePoint CR_In_Tai_Le[] = {
- 1,
- 0x1950, 0x197f,
-}; /* CR_In_Tai_Le */
-
-/* 'In_New_Tai_Lue': Block */
-static const OnigCodePoint CR_In_New_Tai_Lue[] = {
- 1,
- 0x1980, 0x19df,
-}; /* CR_In_New_Tai_Lue */
-
-/* 'In_Khmer_Symbols': Block */
-static const OnigCodePoint CR_In_Khmer_Symbols[] = {
- 1,
- 0x19e0, 0x19ff,
-}; /* CR_In_Khmer_Symbols */
-
-/* 'In_Buginese': Block */
-static const OnigCodePoint CR_In_Buginese[] = {
- 1,
- 0x1a00, 0x1a1f,
-}; /* CR_In_Buginese */
-
-/* 'In_Tai_Tham': Block */
-static const OnigCodePoint CR_In_Tai_Tham[] = {
- 1,
- 0x1a20, 0x1aaf,
-}; /* CR_In_Tai_Tham */
-
-/* 'In_Balinese': Block */
-static const OnigCodePoint CR_In_Balinese[] = {
- 1,
- 0x1b00, 0x1b7f,
-}; /* CR_In_Balinese */
-
-/* 'In_Sundanese': Block */
-static const OnigCodePoint CR_In_Sundanese[] = {
- 1,
- 0x1b80, 0x1bbf,
-}; /* CR_In_Sundanese */
-
-/* 'In_Batak': Block */
-static const OnigCodePoint CR_In_Batak[] = {
- 1,
- 0x1bc0, 0x1bff,
-}; /* CR_In_Batak */
-
-/* 'In_Lepcha': Block */
-static const OnigCodePoint CR_In_Lepcha[] = {
- 1,
- 0x1c00, 0x1c4f,
-}; /* CR_In_Lepcha */
-
-/* 'In_Ol_Chiki': Block */
-#define CR_In_Ol_Chiki CR_Ol_Chiki
-
-/* 'In_Sundanese_Supplement': Block */
-static const OnigCodePoint CR_In_Sundanese_Supplement[] = {
- 1,
- 0x1cc0, 0x1ccf,
-}; /* CR_In_Sundanese_Supplement */
-
-/* 'In_Vedic_Extensions': Block */
-static const OnigCodePoint CR_In_Vedic_Extensions[] = {
- 1,
- 0x1cd0, 0x1cff,
-}; /* CR_In_Vedic_Extensions */
-
-/* 'In_Phonetic_Extensions': Block */
-static const OnigCodePoint CR_In_Phonetic_Extensions[] = {
- 1,
- 0x1d00, 0x1d7f,
-}; /* CR_In_Phonetic_Extensions */
-
-/* 'In_Phonetic_Extensions_Supplement': Block */
-static const OnigCodePoint CR_In_Phonetic_Extensions_Supplement[] = {
- 1,
- 0x1d80, 0x1dbf,
-}; /* CR_In_Phonetic_Extensions_Supplement */
-
-/* 'In_Combining_Diacritical_Marks_Supplement': Block */
-static const OnigCodePoint CR_In_Combining_Diacritical_Marks_Supplement[] = {
- 1,
- 0x1dc0, 0x1dff,
-}; /* CR_In_Combining_Diacritical_Marks_Supplement */
-
-/* 'In_Latin_Extended_Additional': Block */
-static const OnigCodePoint CR_In_Latin_Extended_Additional[] = {
- 1,
- 0x1e00, 0x1eff,
-}; /* CR_In_Latin_Extended_Additional */
-
-/* 'In_Greek_Extended': Block */
-static const OnigCodePoint CR_In_Greek_Extended[] = {
- 1,
- 0x1f00, 0x1fff,
-}; /* CR_In_Greek_Extended */
-
-/* 'In_General_Punctuation': Block */
-static const OnigCodePoint CR_In_General_Punctuation[] = {
- 1,
- 0x2000, 0x206f,
-}; /* CR_In_General_Punctuation */
-
-/* 'In_Superscripts_and_Subscripts': Block */
-static const OnigCodePoint CR_In_Superscripts_and_Subscripts[] = {
- 1,
- 0x2070, 0x209f,
-}; /* CR_In_Superscripts_and_Subscripts */
-
-/* 'In_Currency_Symbols': Block */
-static const OnigCodePoint CR_In_Currency_Symbols[] = {
- 1,
- 0x20a0, 0x20cf,
-}; /* CR_In_Currency_Symbols */
-
-/* 'In_Combining_Diacritical_Marks_for_Symbols': Block */
-static const OnigCodePoint CR_In_Combining_Diacritical_Marks_for_Symbols[] = {
- 1,
- 0x20d0, 0x20ff,
-}; /* CR_In_Combining_Diacritical_Marks_for_Symbols */
-
-/* 'In_Letterlike_Symbols': Block */
-static const OnigCodePoint CR_In_Letterlike_Symbols[] = {
- 1,
- 0x2100, 0x214f,
-}; /* CR_In_Letterlike_Symbols */
-
-/* 'In_Number_Forms': Block */
-static const OnigCodePoint CR_In_Number_Forms[] = {
- 1,
- 0x2150, 0x218f,
-}; /* CR_In_Number_Forms */
-
-/* 'In_Arrows': Block */
-static const OnigCodePoint CR_In_Arrows[] = {
- 1,
- 0x2190, 0x21ff,
-}; /* CR_In_Arrows */
-
-/* 'In_Mathematical_Operators': Block */
-static const OnigCodePoint CR_In_Mathematical_Operators[] = {
- 1,
- 0x2200, 0x22ff,
-}; /* CR_In_Mathematical_Operators */
-
-/* 'In_Miscellaneous_Technical': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Technical[] = {
- 1,
- 0x2300, 0x23ff,
-}; /* CR_In_Miscellaneous_Technical */
-
-/* 'In_Control_Pictures': Block */
-static const OnigCodePoint CR_In_Control_Pictures[] = {
- 1,
- 0x2400, 0x243f,
-}; /* CR_In_Control_Pictures */
-
-/* 'In_Optical_Character_Recognition': Block */
-static const OnigCodePoint CR_In_Optical_Character_Recognition[] = {
- 1,
- 0x2440, 0x245f,
-}; /* CR_In_Optical_Character_Recognition */
-
-/* 'In_Enclosed_Alphanumerics': Block */
-static const OnigCodePoint CR_In_Enclosed_Alphanumerics[] = {
- 1,
- 0x2460, 0x24ff,
-}; /* CR_In_Enclosed_Alphanumerics */
-
-/* 'In_Box_Drawing': Block */
-static const OnigCodePoint CR_In_Box_Drawing[] = {
- 1,
- 0x2500, 0x257f,
-}; /* CR_In_Box_Drawing */
-
-/* 'In_Block_Elements': Block */
-static const OnigCodePoint CR_In_Block_Elements[] = {
- 1,
- 0x2580, 0x259f,
-}; /* CR_In_Block_Elements */
-
-/* 'In_Geometric_Shapes': Block */
-static const OnigCodePoint CR_In_Geometric_Shapes[] = {
- 1,
- 0x25a0, 0x25ff,
-}; /* CR_In_Geometric_Shapes */
-
-/* 'In_Miscellaneous_Symbols': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Symbols[] = {
- 1,
- 0x2600, 0x26ff,
-}; /* CR_In_Miscellaneous_Symbols */
-
-/* 'In_Dingbats': Block */
-static const OnigCodePoint CR_In_Dingbats[] = {
- 1,
- 0x2700, 0x27bf,
-}; /* CR_In_Dingbats */
-
-/* 'In_Miscellaneous_Mathematical_Symbols_A': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Mathematical_Symbols_A[] = {
- 1,
- 0x27c0, 0x27ef,
-}; /* CR_In_Miscellaneous_Mathematical_Symbols_A */
-
-/* 'In_Supplemental_Arrows_A': Block */
-static const OnigCodePoint CR_In_Supplemental_Arrows_A[] = {
- 1,
- 0x27f0, 0x27ff,
-}; /* CR_In_Supplemental_Arrows_A */
-
-/* 'In_Braille_Patterns': Block */
-#define CR_In_Braille_Patterns CR_Braille
-
-/* 'In_Supplemental_Arrows_B': Block */
-static const OnigCodePoint CR_In_Supplemental_Arrows_B[] = {
- 1,
- 0x2900, 0x297f,
-}; /* CR_In_Supplemental_Arrows_B */
-
-/* 'In_Miscellaneous_Mathematical_Symbols_B': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Mathematical_Symbols_B[] = {
- 1,
- 0x2980, 0x29ff,
-}; /* CR_In_Miscellaneous_Mathematical_Symbols_B */
-
-/* 'In_Supplemental_Mathematical_Operators': Block */
-static const OnigCodePoint CR_In_Supplemental_Mathematical_Operators[] = {
- 1,
- 0x2a00, 0x2aff,
-}; /* CR_In_Supplemental_Mathematical_Operators */
-
-/* 'In_Miscellaneous_Symbols_and_Arrows': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Symbols_and_Arrows[] = {
- 1,
- 0x2b00, 0x2bff,
-}; /* CR_In_Miscellaneous_Symbols_and_Arrows */
-
-/* 'In_Glagolitic': Block */
-static const OnigCodePoint CR_In_Glagolitic[] = {
- 1,
- 0x2c00, 0x2c5f,
-}; /* CR_In_Glagolitic */
-
-/* 'In_Latin_Extended_C': Block */
-static const OnigCodePoint CR_In_Latin_Extended_C[] = {
- 1,
- 0x2c60, 0x2c7f,
-}; /* CR_In_Latin_Extended_C */
+ 0xf0000, 0xffffd,
+ 0x100000, 0x10fffd,
+}; /* CR_Print */
-/* 'In_Coptic': Block */
-static const OnigCodePoint CR_In_Coptic[] = {
- 1,
- 0x2c80, 0x2cff,
-}; /* CR_In_Coptic */
+/* 'Punct': [[:Punct:]] */
+#define CR_Punct CR_P
-/* 'In_Georgian_Supplement': Block */
-static const OnigCodePoint CR_In_Georgian_Supplement[] = {
- 1,
- 0x2d00, 0x2d2f,
-}; /* CR_In_Georgian_Supplement */
+/* 'Space': [[:Space:]] */
+#define CR_Space CR_White_Space
-/* 'In_Tifinagh': Block */
-static const OnigCodePoint CR_In_Tifinagh[] = {
- 1,
- 0x2d30, 0x2d7f,
-}; /* CR_In_Tifinagh */
+/* 'Upper': [[:Upper:]] */
+#define CR_Upper CR_Uppercase
-/* 'In_Ethiopic_Extended': Block */
-static const OnigCodePoint CR_In_Ethiopic_Extended[] = {
- 1,
- 0x2d80, 0x2ddf,
-}; /* CR_In_Ethiopic_Extended */
+/* 'XDigit': [[:XDigit:]] */
+#define CR_XDigit CR_ASCII_Hex_Digit
-/* 'In_Cyrillic_Extended_A': Block */
-static const OnigCodePoint CR_In_Cyrillic_Extended_A[] = {
- 1,
+/* 'Word': [[:Word:]] */
+static const OnigCodePoint CR_Word[] = {
+ 514,
+ 0x0030, 0x0039,
+ 0x0041, 0x005a,
+ 0x005f, 0x005f,
+ 0x0061, 0x007a,
+ 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
+ 0x00c0, 0x00d6,
+ 0x00d8, 0x00f6,
+ 0x00f8, 0x02c1,
+ 0x02c6, 0x02d1,
+ 0x02e0, 0x02e4,
+ 0x02ec, 0x02ec,
+ 0x02ee, 0x02ee,
+ 0x0300, 0x0374,
+ 0x0376, 0x0377,
+ 0x037a, 0x037d,
+ 0x0386, 0x0386,
+ 0x0388, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x03a1,
+ 0x03a3, 0x03f5,
+ 0x03f7, 0x0481,
+ 0x0483, 0x0527,
+ 0x0531, 0x0556,
+ 0x0559, 0x0559,
+ 0x0561, 0x0587,
+ 0x0591, 0x05bd,
+ 0x05bf, 0x05bf,
+ 0x05c1, 0x05c2,
+ 0x05c4, 0x05c5,
+ 0x05c7, 0x05c7,
+ 0x05d0, 0x05ea,
+ 0x05f0, 0x05f2,
+ 0x0610, 0x061a,
+ 0x0620, 0x0669,
+ 0x066e, 0x06d3,
+ 0x06d5, 0x06dc,
+ 0x06df, 0x06e8,
+ 0x06ea, 0x06fc,
+ 0x06ff, 0x06ff,
+ 0x0710, 0x074a,
+ 0x074d, 0x07b1,
+ 0x07c0, 0x07f5,
+ 0x07fa, 0x07fa,
+ 0x0800, 0x082d,
+ 0x0840, 0x085b,
+ 0x0900, 0x0963,
+ 0x0966, 0x096f,
+ 0x0971, 0x0977,
+ 0x0979, 0x097f,
+ 0x0981, 0x0983,
+ 0x0985, 0x098c,
+ 0x098f, 0x0990,
+ 0x0993, 0x09a8,
+ 0x09aa, 0x09b0,
+ 0x09b2, 0x09b2,
+ 0x09b6, 0x09b9,
+ 0x09bc, 0x09c4,
+ 0x09c7, 0x09c8,
+ 0x09cb, 0x09ce,
+ 0x09d7, 0x09d7,
+ 0x09dc, 0x09dd,
+ 0x09df, 0x09e3,
+ 0x09e6, 0x09f1,
+ 0x0a01, 0x0a03,
+ 0x0a05, 0x0a0a,
+ 0x0a0f, 0x0a10,
+ 0x0a13, 0x0a28,
+ 0x0a2a, 0x0a30,
+ 0x0a32, 0x0a33,
+ 0x0a35, 0x0a36,
+ 0x0a38, 0x0a39,
+ 0x0a3c, 0x0a3c,
+ 0x0a3e, 0x0a42,
+ 0x0a47, 0x0a48,
+ 0x0a4b, 0x0a4d,
+ 0x0a51, 0x0a51,
+ 0x0a59, 0x0a5c,
+ 0x0a5e, 0x0a5e,
+ 0x0a66, 0x0a75,
+ 0x0a81, 0x0a83,
+ 0x0a85, 0x0a8d,
+ 0x0a8f, 0x0a91,
+ 0x0a93, 0x0aa8,
+ 0x0aaa, 0x0ab0,
+ 0x0ab2, 0x0ab3,
+ 0x0ab5, 0x0ab9,
+ 0x0abc, 0x0ac5,
+ 0x0ac7, 0x0ac9,
+ 0x0acb, 0x0acd,
+ 0x0ad0, 0x0ad0,
+ 0x0ae0, 0x0ae3,
+ 0x0ae6, 0x0aef,
+ 0x0b01, 0x0b03,
+ 0x0b05, 0x0b0c,
+ 0x0b0f, 0x0b10,
+ 0x0b13, 0x0b28,
+ 0x0b2a, 0x0b30,
+ 0x0b32, 0x0b33,
+ 0x0b35, 0x0b39,
+ 0x0b3c, 0x0b44,
+ 0x0b47, 0x0b48,
+ 0x0b4b, 0x0b4d,
+ 0x0b56, 0x0b57,
+ 0x0b5c, 0x0b5d,
+ 0x0b5f, 0x0b63,
+ 0x0b66, 0x0b6f,
+ 0x0b71, 0x0b71,
+ 0x0b82, 0x0b83,
+ 0x0b85, 0x0b8a,
+ 0x0b8e, 0x0b90,
+ 0x0b92, 0x0b95,
+ 0x0b99, 0x0b9a,
+ 0x0b9c, 0x0b9c,
+ 0x0b9e, 0x0b9f,
+ 0x0ba3, 0x0ba4,
+ 0x0ba8, 0x0baa,
+ 0x0bae, 0x0bb9,
+ 0x0bbe, 0x0bc2,
+ 0x0bc6, 0x0bc8,
+ 0x0bca, 0x0bcd,
+ 0x0bd0, 0x0bd0,
+ 0x0bd7, 0x0bd7,
+ 0x0be6, 0x0bef,
+ 0x0c01, 0x0c03,
+ 0x0c05, 0x0c0c,
+ 0x0c0e, 0x0c10,
+ 0x0c12, 0x0c28,
+ 0x0c2a, 0x0c33,
+ 0x0c35, 0x0c39,
+ 0x0c3d, 0x0c44,
+ 0x0c46, 0x0c48,
+ 0x0c4a, 0x0c4d,
+ 0x0c55, 0x0c56,
+ 0x0c58, 0x0c59,
+ 0x0c60, 0x0c63,
+ 0x0c66, 0x0c6f,
+ 0x0c82, 0x0c83,
+ 0x0c85, 0x0c8c,
+ 0x0c8e, 0x0c90,
+ 0x0c92, 0x0ca8,
+ 0x0caa, 0x0cb3,
+ 0x0cb5, 0x0cb9,
+ 0x0cbc, 0x0cc4,
+ 0x0cc6, 0x0cc8,
+ 0x0cca, 0x0ccd,
+ 0x0cd5, 0x0cd6,
+ 0x0cde, 0x0cde,
+ 0x0ce0, 0x0ce3,
+ 0x0ce6, 0x0cef,
+ 0x0cf1, 0x0cf2,
+ 0x0d02, 0x0d03,
+ 0x0d05, 0x0d0c,
+ 0x0d0e, 0x0d10,
+ 0x0d12, 0x0d3a,
+ 0x0d3d, 0x0d44,
+ 0x0d46, 0x0d48,
+ 0x0d4a, 0x0d4e,
+ 0x0d57, 0x0d57,
+ 0x0d60, 0x0d63,
+ 0x0d66, 0x0d6f,
+ 0x0d7a, 0x0d7f,
+ 0x0d82, 0x0d83,
+ 0x0d85, 0x0d96,
+ 0x0d9a, 0x0db1,
+ 0x0db3, 0x0dbb,
+ 0x0dbd, 0x0dbd,
+ 0x0dc0, 0x0dc6,
+ 0x0dca, 0x0dca,
+ 0x0dcf, 0x0dd4,
+ 0x0dd6, 0x0dd6,
+ 0x0dd8, 0x0ddf,
+ 0x0df2, 0x0df3,
+ 0x0e01, 0x0e3a,
+ 0x0e40, 0x0e4e,
+ 0x0e50, 0x0e59,
+ 0x0e81, 0x0e82,
+ 0x0e84, 0x0e84,
+ 0x0e87, 0x0e88,
+ 0x0e8a, 0x0e8a,
+ 0x0e8d, 0x0e8d,
+ 0x0e94, 0x0e97,
+ 0x0e99, 0x0e9f,
+ 0x0ea1, 0x0ea3,
+ 0x0ea5, 0x0ea5,
+ 0x0ea7, 0x0ea7,
+ 0x0eaa, 0x0eab,
+ 0x0ead, 0x0eb9,
+ 0x0ebb, 0x0ebd,
+ 0x0ec0, 0x0ec4,
+ 0x0ec6, 0x0ec6,
+ 0x0ec8, 0x0ecd,
+ 0x0ed0, 0x0ed9,
+ 0x0edc, 0x0edd,
+ 0x0f00, 0x0f00,
+ 0x0f18, 0x0f19,
+ 0x0f20, 0x0f29,
+ 0x0f35, 0x0f35,
+ 0x0f37, 0x0f37,
+ 0x0f39, 0x0f39,
+ 0x0f3e, 0x0f47,
+ 0x0f49, 0x0f6c,
+ 0x0f71, 0x0f84,
+ 0x0f86, 0x0f97,
+ 0x0f99, 0x0fbc,
+ 0x0fc6, 0x0fc6,
+ 0x1000, 0x1049,
+ 0x1050, 0x109d,
+ 0x10a0, 0x10c5,
+ 0x10d0, 0x10fa,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
+ 0x124a, 0x124d,
+ 0x1250, 0x1256,
+ 0x1258, 0x1258,
+ 0x125a, 0x125d,
+ 0x1260, 0x1288,
+ 0x128a, 0x128d,
+ 0x1290, 0x12b0,
+ 0x12b2, 0x12b5,
+ 0x12b8, 0x12be,
+ 0x12c0, 0x12c0,
+ 0x12c2, 0x12c5,
+ 0x12c8, 0x12d6,
+ 0x12d8, 0x1310,
+ 0x1312, 0x1315,
+ 0x1318, 0x135a,
+ 0x135d, 0x135f,
+ 0x1380, 0x138f,
+ 0x13a0, 0x13f4,
+ 0x1401, 0x166c,
+ 0x166f, 0x167f,
+ 0x1681, 0x169a,
+ 0x16a0, 0x16ea,
+ 0x16ee, 0x16f0,
+ 0x1700, 0x170c,
+ 0x170e, 0x1714,
+ 0x1720, 0x1734,
+ 0x1740, 0x1753,
+ 0x1760, 0x176c,
+ 0x176e, 0x1770,
+ 0x1772, 0x1773,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17d3,
+ 0x17d7, 0x17d7,
+ 0x17dc, 0x17dd,
+ 0x17e0, 0x17e9,
+ 0x180b, 0x180d,
+ 0x1810, 0x1819,
+ 0x1820, 0x1877,
+ 0x1880, 0x18aa,
+ 0x18b0, 0x18f5,
+ 0x1900, 0x191c,
+ 0x1920, 0x192b,
+ 0x1930, 0x193b,
+ 0x1946, 0x196d,
+ 0x1970, 0x1974,
+ 0x1980, 0x19ab,
+ 0x19b0, 0x19c9,
+ 0x19d0, 0x19d9,
+ 0x1a00, 0x1a1b,
+ 0x1a20, 0x1a5e,
+ 0x1a60, 0x1a7c,
+ 0x1a7f, 0x1a89,
+ 0x1a90, 0x1a99,
+ 0x1aa7, 0x1aa7,
+ 0x1b00, 0x1b4b,
+ 0x1b50, 0x1b59,
+ 0x1b6b, 0x1b73,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
+ 0x1c00, 0x1c37,
+ 0x1c40, 0x1c49,
+ 0x1c4d, 0x1c7d,
+ 0x1cd0, 0x1cd2,
+ 0x1cd4, 0x1cf2,
+ 0x1d00, 0x1de6,
+ 0x1dfc, 0x1f15,
+ 0x1f18, 0x1f1d,
+ 0x1f20, 0x1f45,
+ 0x1f48, 0x1f4d,
+ 0x1f50, 0x1f57,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f7d,
+ 0x1f80, 0x1fb4,
+ 0x1fb6, 0x1fbc,
+ 0x1fbe, 0x1fbe,
+ 0x1fc2, 0x1fc4,
+ 0x1fc6, 0x1fcc,
+ 0x1fd0, 0x1fd3,
+ 0x1fd6, 0x1fdb,
+ 0x1fe0, 0x1fec,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ffc,
+ 0x203f, 0x2040,
+ 0x2054, 0x2054,
+ 0x2071, 0x2071,
+ 0x207f, 0x207f,
+ 0x2090, 0x209c,
+ 0x20d0, 0x20f0,
+ 0x2102, 0x2102,
+ 0x2107, 0x2107,
+ 0x210a, 0x2113,
+ 0x2115, 0x2115,
+ 0x2119, 0x211d,
+ 0x2124, 0x2124,
+ 0x2126, 0x2126,
+ 0x2128, 0x2128,
+ 0x212a, 0x212d,
+ 0x212f, 0x2139,
+ 0x213c, 0x213f,
+ 0x2145, 0x2149,
+ 0x214e, 0x214e,
+ 0x2160, 0x2188,
+ 0x24b6, 0x24e9,
+ 0x2c00, 0x2c2e,
+ 0x2c30, 0x2c5e,
+ 0x2c60, 0x2ce4,
+ 0x2ceb, 0x2cf1,
+ 0x2d00, 0x2d25,
+ 0x2d30, 0x2d65,
+ 0x2d6f, 0x2d6f,
+ 0x2d7f, 0x2d96,
+ 0x2da0, 0x2da6,
+ 0x2da8, 0x2dae,
+ 0x2db0, 0x2db6,
+ 0x2db8, 0x2dbe,
+ 0x2dc0, 0x2dc6,
+ 0x2dc8, 0x2dce,
+ 0x2dd0, 0x2dd6,
+ 0x2dd8, 0x2dde,
0x2de0, 0x2dff,
-}; /* CR_In_Cyrillic_Extended_A */
-
-/* 'In_Supplemental_Punctuation': Block */
-static const OnigCodePoint CR_In_Supplemental_Punctuation[] = {
- 1,
- 0x2e00, 0x2e7f,
-}; /* CR_In_Supplemental_Punctuation */
-
-/* 'In_CJK_Radicals_Supplement': Block */
-static const OnigCodePoint CR_In_CJK_Radicals_Supplement[] = {
- 1,
- 0x2e80, 0x2eff,
-}; /* CR_In_CJK_Radicals_Supplement */
-
-/* 'In_Kangxi_Radicals': Block */
-static const OnigCodePoint CR_In_Kangxi_Radicals[] = {
- 1,
- 0x2f00, 0x2fdf,
-}; /* CR_In_Kangxi_Radicals */
-
-/* 'In_Ideographic_Description_Characters': Block */
-static const OnigCodePoint CR_In_Ideographic_Description_Characters[] = {
- 1,
- 0x2ff0, 0x2fff,
-}; /* CR_In_Ideographic_Description_Characters */
-
-/* 'In_CJK_Symbols_and_Punctuation': Block */
-static const OnigCodePoint CR_In_CJK_Symbols_and_Punctuation[] = {
- 1,
- 0x3000, 0x303f,
-}; /* CR_In_CJK_Symbols_and_Punctuation */
-
-/* 'In_Hiragana': Block */
-static const OnigCodePoint CR_In_Hiragana[] = {
- 1,
- 0x3040, 0x309f,
-}; /* CR_In_Hiragana */
-
-/* 'In_Katakana': Block */
-static const OnigCodePoint CR_In_Katakana[] = {
- 1,
- 0x30a0, 0x30ff,
-}; /* CR_In_Katakana */
-
-/* 'In_Bopomofo': Block */
-static const OnigCodePoint CR_In_Bopomofo[] = {
- 1,
- 0x3100, 0x312f,
-}; /* CR_In_Bopomofo */
-
-/* 'In_Hangul_Compatibility_Jamo': Block */
-static const OnigCodePoint CR_In_Hangul_Compatibility_Jamo[] = {
- 1,
- 0x3130, 0x318f,
-}; /* CR_In_Hangul_Compatibility_Jamo */
-
-/* 'In_Kanbun': Block */
-static const OnigCodePoint CR_In_Kanbun[] = {
- 1,
- 0x3190, 0x319f,
-}; /* CR_In_Kanbun */
-
-/* 'In_Bopomofo_Extended': Block */
-static const OnigCodePoint CR_In_Bopomofo_Extended[] = {
- 1,
- 0x31a0, 0x31bf,
-}; /* CR_In_Bopomofo_Extended */
-
-/* 'In_CJK_Strokes': Block */
-static const OnigCodePoint CR_In_CJK_Strokes[] = {
- 1,
- 0x31c0, 0x31ef,
-}; /* CR_In_CJK_Strokes */
-
-/* 'In_Katakana_Phonetic_Extensions': Block */
-static const OnigCodePoint CR_In_Katakana_Phonetic_Extensions[] = {
- 1,
+ 0x2e2f, 0x2e2f,
+ 0x3005, 0x3007,
+ 0x3021, 0x302f,
+ 0x3031, 0x3035,
+ 0x3038, 0x303c,
+ 0x3041, 0x3096,
+ 0x3099, 0x309a,
+ 0x309d, 0x309f,
+ 0x30a1, 0x30fa,
+ 0x30fc, 0x30ff,
+ 0x3105, 0x312d,
+ 0x3131, 0x318e,
+ 0x31a0, 0x31ba,
0x31f0, 0x31ff,
-}; /* CR_In_Katakana_Phonetic_Extensions */
-
-/* 'In_Enclosed_CJK_Letters_and_Months': Block */
-static const OnigCodePoint CR_In_Enclosed_CJK_Letters_and_Months[] = {
- 1,
- 0x3200, 0x32ff,
-}; /* CR_In_Enclosed_CJK_Letters_and_Months */
-
-/* 'In_CJK_Compatibility': Block */
-static const OnigCodePoint CR_In_CJK_Compatibility[] = {
- 1,
- 0x3300, 0x33ff,
-}; /* CR_In_CJK_Compatibility */
-
-/* 'In_CJK_Unified_Ideographs_Extension_A': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_A[] = {
- 1,
- 0x3400, 0x4dbf,
-}; /* CR_In_CJK_Unified_Ideographs_Extension_A */
-
-/* 'In_Yijing_Hexagram_Symbols': Block */
-static const OnigCodePoint CR_In_Yijing_Hexagram_Symbols[] = {
- 1,
- 0x4dc0, 0x4dff,
-}; /* CR_In_Yijing_Hexagram_Symbols */
-
-/* 'In_CJK_Unified_Ideographs': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs[] = {
- 1,
- 0x4e00, 0x9fff,
-}; /* CR_In_CJK_Unified_Ideographs */
-
-/* 'In_Yi_Syllables': Block */
-static const OnigCodePoint CR_In_Yi_Syllables[] = {
- 1,
- 0xa000, 0xa48f,
-}; /* CR_In_Yi_Syllables */
-
-/* 'In_Yi_Radicals': Block */
-static const OnigCodePoint CR_In_Yi_Radicals[] = {
- 1,
- 0xa490, 0xa4cf,
-}; /* CR_In_Yi_Radicals */
-
-/* 'In_Lisu': Block */
-#define CR_In_Lisu CR_Lisu
-
-/* 'In_Vai': Block */
-static const OnigCodePoint CR_In_Vai[] = {
- 1,
- 0xa500, 0xa63f,
-}; /* CR_In_Vai */
-
-/* 'In_Cyrillic_Extended_B': Block */
-static const OnigCodePoint CR_In_Cyrillic_Extended_B[] = {
- 1,
- 0xa640, 0xa69f,
-}; /* CR_In_Cyrillic_Extended_B */
-
-/* 'In_Bamum': Block */
-static const OnigCodePoint CR_In_Bamum[] = {
- 1,
- 0xa6a0, 0xa6ff,
-}; /* CR_In_Bamum */
-
-/* 'In_Modifier_Tone_Letters': Block */
-static const OnigCodePoint CR_In_Modifier_Tone_Letters[] = {
- 1,
- 0xa700, 0xa71f,
-}; /* CR_In_Modifier_Tone_Letters */
-
-/* 'In_Latin_Extended_D': Block */
-static const OnigCodePoint CR_In_Latin_Extended_D[] = {
- 1,
- 0xa720, 0xa7ff,
-}; /* CR_In_Latin_Extended_D */
-
-/* 'In_Syloti_Nagri': Block */
-static const OnigCodePoint CR_In_Syloti_Nagri[] = {
- 1,
- 0xa800, 0xa82f,
-}; /* CR_In_Syloti_Nagri */
-
-/* 'In_Common_Indic_Number_Forms': Block */
-static const OnigCodePoint CR_In_Common_Indic_Number_Forms[] = {
- 1,
- 0xa830, 0xa83f,
-}; /* CR_In_Common_Indic_Number_Forms */
-
-/* 'In_Phags_pa': Block */
-static const OnigCodePoint CR_In_Phags_pa[] = {
- 1,
- 0xa840, 0xa87f,
-}; /* CR_In_Phags_pa */
-
-/* 'In_Saurashtra': Block */
-static const OnigCodePoint CR_In_Saurashtra[] = {
- 1,
- 0xa880, 0xa8df,
-}; /* CR_In_Saurashtra */
-
-/* 'In_Devanagari_Extended': Block */
-static const OnigCodePoint CR_In_Devanagari_Extended[] = {
- 1,
- 0xa8e0, 0xa8ff,
-}; /* CR_In_Devanagari_Extended */
-
-/* 'In_Kayah_Li': Block */
-#define CR_In_Kayah_Li CR_Kayah_Li
-
-/* 'In_Rejang': Block */
-static const OnigCodePoint CR_In_Rejang[] = {
- 1,
- 0xa930, 0xa95f,
-}; /* CR_In_Rejang */
-
-/* 'In_Hangul_Jamo_Extended_A': Block */
-static const OnigCodePoint CR_In_Hangul_Jamo_Extended_A[] = {
- 1,
- 0xa960, 0xa97f,
-}; /* CR_In_Hangul_Jamo_Extended_A */
-
-/* 'In_Javanese': Block */
-static const OnigCodePoint CR_In_Javanese[] = {
- 1,
- 0xa980, 0xa9df,
-}; /* CR_In_Javanese */
-
-/* 'In_Cham': Block */
-static const OnigCodePoint CR_In_Cham[] = {
- 1,
- 0xaa00, 0xaa5f,
-}; /* CR_In_Cham */
-
-/* 'In_Myanmar_Extended_A': Block */
-static const OnigCodePoint CR_In_Myanmar_Extended_A[] = {
- 1,
- 0xaa60, 0xaa7f,
-}; /* CR_In_Myanmar_Extended_A */
-
-/* 'In_Tai_Viet': Block */
-static const OnigCodePoint CR_In_Tai_Viet[] = {
- 1,
- 0xaa80, 0xaadf,
-}; /* CR_In_Tai_Viet */
-
-/* 'In_Meetei_Mayek_Extensions': Block */
-static const OnigCodePoint CR_In_Meetei_Mayek_Extensions[] = {
- 1,
- 0xaae0, 0xaaff,
-}; /* CR_In_Meetei_Mayek_Extensions */
-
-/* 'In_Ethiopic_Extended_A': Block */
-static const OnigCodePoint CR_In_Ethiopic_Extended_A[] = {
- 1,
- 0xab00, 0xab2f,
-}; /* CR_In_Ethiopic_Extended_A */
-
-/* 'In_Meetei_Mayek': Block */
-static const OnigCodePoint CR_In_Meetei_Mayek[] = {
- 1,
- 0xabc0, 0xabff,
-}; /* CR_In_Meetei_Mayek */
-
-/* 'In_Hangul_Syllables': Block */
-static const OnigCodePoint CR_In_Hangul_Syllables[] = {
- 1,
- 0xac00, 0xd7af,
-}; /* CR_In_Hangul_Syllables */
-
-/* 'In_Hangul_Jamo_Extended_B': Block */
-static const OnigCodePoint CR_In_Hangul_Jamo_Extended_B[] = {
- 1,
- 0xd7b0, 0xd7ff,
-}; /* CR_In_Hangul_Jamo_Extended_B */
-
-/* 'In_High_Surrogates': Block */
-static const OnigCodePoint CR_In_High_Surrogates[] = {
- 1,
- 0xd800, 0xdb7f,
-}; /* CR_In_High_Surrogates */
-
-/* 'In_High_Private_Use_Surrogates': Block */
-static const OnigCodePoint CR_In_High_Private_Use_Surrogates[] = {
- 1,
- 0xdb80, 0xdbff,
-}; /* CR_In_High_Private_Use_Surrogates */
-
-/* 'In_Low_Surrogates': Block */
-static const OnigCodePoint CR_In_Low_Surrogates[] = {
- 1,
- 0xdc00, 0xdfff,
-}; /* CR_In_Low_Surrogates */
-
-/* 'In_Private_Use_Area': Block */
-static const OnigCodePoint CR_In_Private_Use_Area[] = {
- 1,
- 0xe000, 0xf8ff,
-}; /* CR_In_Private_Use_Area */
-
-/* 'In_CJK_Compatibility_Ideographs': Block */
-static const OnigCodePoint CR_In_CJK_Compatibility_Ideographs[] = {
- 1,
- 0xf900, 0xfaff,
-}; /* CR_In_CJK_Compatibility_Ideographs */
-
-/* 'In_Alphabetic_Presentation_Forms': Block */
-static const OnigCodePoint CR_In_Alphabetic_Presentation_Forms[] = {
- 1,
- 0xfb00, 0xfb4f,
-}; /* CR_In_Alphabetic_Presentation_Forms */
-
-/* 'In_Arabic_Presentation_Forms_A': Block */
-static const OnigCodePoint CR_In_Arabic_Presentation_Forms_A[] = {
- 1,
- 0xfb50, 0xfdff,
-}; /* CR_In_Arabic_Presentation_Forms_A */
-
-/* 'In_Variation_Selectors': Block */
-static const OnigCodePoint CR_In_Variation_Selectors[] = {
- 1,
+ 0x3400, 0x4db5,
+ 0x4e00, 0x9fcb,
+ 0xa000, 0xa48c,
+ 0xa4d0, 0xa4fd,
+ 0xa500, 0xa60c,
+ 0xa610, 0xa62b,
+ 0xa640, 0xa672,
+ 0xa67c, 0xa67d,
+ 0xa67f, 0xa697,
+ 0xa6a0, 0xa6f1,
+ 0xa717, 0xa71f,
+ 0xa722, 0xa788,
+ 0xa78b, 0xa78e,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa827,
+ 0xa840, 0xa873,
+ 0xa880, 0xa8c4,
+ 0xa8d0, 0xa8d9,
+ 0xa8e0, 0xa8f7,
+ 0xa8fb, 0xa8fb,
+ 0xa900, 0xa92d,
+ 0xa930, 0xa953,
+ 0xa960, 0xa97c,
+ 0xa980, 0xa9c0,
+ 0xa9cf, 0xa9d9,
+ 0xaa00, 0xaa36,
+ 0xaa40, 0xaa4d,
+ 0xaa50, 0xaa59,
+ 0xaa60, 0xaa76,
+ 0xaa7a, 0xaa7b,
+ 0xaa80, 0xaac2,
+ 0xaadb, 0xaadd,
+ 0xab01, 0xab06,
+ 0xab09, 0xab0e,
+ 0xab11, 0xab16,
+ 0xab20, 0xab26,
+ 0xab28, 0xab2e,
+ 0xabc0, 0xabea,
+ 0xabec, 0xabed,
+ 0xabf0, 0xabf9,
+ 0xac00, 0xd7a3,
+ 0xd7b0, 0xd7c6,
+ 0xd7cb, 0xd7fb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
+ 0xfa70, 0xfad9,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xfb1d, 0xfb28,
+ 0xfb2a, 0xfb36,
+ 0xfb38, 0xfb3c,
+ 0xfb3e, 0xfb3e,
+ 0xfb40, 0xfb41,
+ 0xfb43, 0xfb44,
+ 0xfb46, 0xfbb1,
+ 0xfbd3, 0xfd3d,
+ 0xfd50, 0xfd8f,
+ 0xfd92, 0xfdc7,
+ 0xfdf0, 0xfdfb,
0xfe00, 0xfe0f,
-}; /* CR_In_Variation_Selectors */
-
-/* 'In_Vertical_Forms': Block */
-static const OnigCodePoint CR_In_Vertical_Forms[] = {
- 1,
- 0xfe10, 0xfe1f,
-}; /* CR_In_Vertical_Forms */
-
-/* 'In_Combining_Half_Marks': Block */
-static const OnigCodePoint CR_In_Combining_Half_Marks[] = {
- 1,
- 0xfe20, 0xfe2f,
-}; /* CR_In_Combining_Half_Marks */
-
-/* 'In_CJK_Compatibility_Forms': Block */
-static const OnigCodePoint CR_In_CJK_Compatibility_Forms[] = {
- 1,
- 0xfe30, 0xfe4f,
-}; /* CR_In_CJK_Compatibility_Forms */
-
-/* 'In_Small_Form_Variants': Block */
-static const OnigCodePoint CR_In_Small_Form_Variants[] = {
- 1,
- 0xfe50, 0xfe6f,
-}; /* CR_In_Small_Form_Variants */
-
-/* 'In_Arabic_Presentation_Forms_B': Block */
-static const OnigCodePoint CR_In_Arabic_Presentation_Forms_B[] = {
- 1,
- 0xfe70, 0xfeff,
-}; /* CR_In_Arabic_Presentation_Forms_B */
-
-/* 'In_Halfwidth_and_Fullwidth_Forms': Block */
-static const OnigCodePoint CR_In_Halfwidth_and_Fullwidth_Forms[] = {
- 1,
- 0xff00, 0xffef,
-}; /* CR_In_Halfwidth_and_Fullwidth_Forms */
-
-/* 'In_Specials': Block */
-static const OnigCodePoint CR_In_Specials[] = {
- 1,
- 0xfff0, 0xffff,
-}; /* CR_In_Specials */
-
-/* 'In_Linear_B_Syllabary': Block */
-static const OnigCodePoint CR_In_Linear_B_Syllabary[] = {
- 1,
- 0x10000, 0x1007f,
-}; /* CR_In_Linear_B_Syllabary */
-
-/* 'In_Linear_B_Ideograms': Block */
-static const OnigCodePoint CR_In_Linear_B_Ideograms[] = {
- 1,
- 0x10080, 0x100ff,
-}; /* CR_In_Linear_B_Ideograms */
-
-/* 'In_Aegean_Numbers': Block */
-static const OnigCodePoint CR_In_Aegean_Numbers[] = {
- 1,
- 0x10100, 0x1013f,
-}; /* CR_In_Aegean_Numbers */
-
-/* 'In_Ancient_Greek_Numbers': Block */
-static const OnigCodePoint CR_In_Ancient_Greek_Numbers[] = {
- 1,
- 0x10140, 0x1018f,
-}; /* CR_In_Ancient_Greek_Numbers */
-
-/* 'In_Ancient_Symbols': Block */
-static const OnigCodePoint CR_In_Ancient_Symbols[] = {
- 1,
- 0x10190, 0x101cf,
-}; /* CR_In_Ancient_Symbols */
-
-/* 'In_Phaistos_Disc': Block */
-static const OnigCodePoint CR_In_Phaistos_Disc[] = {
- 1,
- 0x101d0, 0x101ff,
-}; /* CR_In_Phaistos_Disc */
-
-/* 'In_Lycian': Block */
-static const OnigCodePoint CR_In_Lycian[] = {
- 1,
- 0x10280, 0x1029f,
-}; /* CR_In_Lycian */
-
-/* 'In_Carian': Block */
-static const OnigCodePoint CR_In_Carian[] = {
- 1,
- 0x102a0, 0x102df,
-}; /* CR_In_Carian */
-
-/* 'In_Old_Italic': Block */
-static const OnigCodePoint CR_In_Old_Italic[] = {
- 1,
- 0x10300, 0x1032f,
-}; /* CR_In_Old_Italic */
-
-/* 'In_Gothic': Block */
-static const OnigCodePoint CR_In_Gothic[] = {
- 1,
- 0x10330, 0x1034f,
-}; /* CR_In_Gothic */
-
-/* 'In_Ugaritic': Block */
-static const OnigCodePoint CR_In_Ugaritic[] = {
- 1,
- 0x10380, 0x1039f,
-}; /* CR_In_Ugaritic */
-
-/* 'In_Old_Persian': Block */
-static const OnigCodePoint CR_In_Old_Persian[] = {
- 1,
- 0x103a0, 0x103df,
-}; /* CR_In_Old_Persian */
-
-/* 'In_Deseret': Block */
-#define CR_In_Deseret CR_Deseret
-
-/* 'In_Shavian': Block */
-#define CR_In_Shavian CR_Shavian
-
-/* 'In_Osmanya': Block */
-static const OnigCodePoint CR_In_Osmanya[] = {
- 1,
- 0x10480, 0x104af,
-}; /* CR_In_Osmanya */
-
-/* 'In_Cypriot_Syllabary': Block */
-static const OnigCodePoint CR_In_Cypriot_Syllabary[] = {
- 1,
- 0x10800, 0x1083f,
-}; /* CR_In_Cypriot_Syllabary */
-
-/* 'In_Imperial_Aramaic': Block */
-static const OnigCodePoint CR_In_Imperial_Aramaic[] = {
- 1,
- 0x10840, 0x1085f,
-}; /* CR_In_Imperial_Aramaic */
-
-/* 'In_Phoenician': Block */
-static const OnigCodePoint CR_In_Phoenician[] = {
- 1,
- 0x10900, 0x1091f,
-}; /* CR_In_Phoenician */
-
-/* 'In_Lydian': Block */
-static const OnigCodePoint CR_In_Lydian[] = {
- 1,
- 0x10920, 0x1093f,
-}; /* CR_In_Lydian */
-
-/* 'In_Meroitic_Hieroglyphs': Block */
-#define CR_In_Meroitic_Hieroglyphs CR_Meroitic_Hieroglyphs
-
-/* 'In_Meroitic_Cursive': Block */
-static const OnigCodePoint CR_In_Meroitic_Cursive[] = {
- 1,
- 0x109a0, 0x109ff,
-}; /* CR_In_Meroitic_Cursive */
-
-/* 'In_Kharoshthi': Block */
-static const OnigCodePoint CR_In_Kharoshthi[] = {
- 1,
- 0x10a00, 0x10a5f,
-}; /* CR_In_Kharoshthi */
-
-/* 'In_Old_South_Arabian': Block */
-#define CR_In_Old_South_Arabian CR_Old_South_Arabian
-
-/* 'In_Avestan': Block */
-static const OnigCodePoint CR_In_Avestan[] = {
- 1,
- 0x10b00, 0x10b3f,
-}; /* CR_In_Avestan */
-
-/* 'In_Inscriptional_Parthian': Block */
-static const OnigCodePoint CR_In_Inscriptional_Parthian[] = {
- 1,
- 0x10b40, 0x10b5f,
-}; /* CR_In_Inscriptional_Parthian */
-
-/* 'In_Inscriptional_Pahlavi': Block */
-static const OnigCodePoint CR_In_Inscriptional_Pahlavi[] = {
- 1,
- 0x10b60, 0x10b7f,
-}; /* CR_In_Inscriptional_Pahlavi */
-
-/* 'In_Old_Turkic': Block */
-static const OnigCodePoint CR_In_Old_Turkic[] = {
- 1,
- 0x10c00, 0x10c4f,
-}; /* CR_In_Old_Turkic */
-
-/* 'In_Rumi_Numeral_Symbols': Block */
-static const OnigCodePoint CR_In_Rumi_Numeral_Symbols[] = {
- 1,
- 0x10e60, 0x10e7f,
-}; /* CR_In_Rumi_Numeral_Symbols */
-
-/* 'In_Brahmi': Block */
-static const OnigCodePoint CR_In_Brahmi[] = {
- 1,
- 0x11000, 0x1107f,
-}; /* CR_In_Brahmi */
-
-/* 'In_Kaithi': Block */
-static const OnigCodePoint CR_In_Kaithi[] = {
- 1,
- 0x11080, 0x110cf,
-}; /* CR_In_Kaithi */
-
-/* 'In_Sora_Sompeng': Block */
-static const OnigCodePoint CR_In_Sora_Sompeng[] = {
- 1,
- 0x110d0, 0x110ff,
-}; /* CR_In_Sora_Sompeng */
-
-/* 'In_Chakma': Block */
-static const OnigCodePoint CR_In_Chakma[] = {
- 1,
- 0x11100, 0x1114f,
-}; /* CR_In_Chakma */
-
-/* 'In_Sharada': Block */
-static const OnigCodePoint CR_In_Sharada[] = {
- 1,
- 0x11180, 0x111df,
-}; /* CR_In_Sharada */
-
-/* 'In_Takri': Block */
-static const OnigCodePoint CR_In_Takri[] = {
- 1,
- 0x11680, 0x116cf,
-}; /* CR_In_Takri */
-
-/* 'In_Cuneiform': Block */
-static const OnigCodePoint CR_In_Cuneiform[] = {
- 1,
- 0x12000, 0x123ff,
-}; /* CR_In_Cuneiform */
-
-/* 'In_Cuneiform_Numbers_and_Punctuation': Block */
-static const OnigCodePoint CR_In_Cuneiform_Numbers_and_Punctuation[] = {
- 1,
- 0x12400, 0x1247f,
-}; /* CR_In_Cuneiform_Numbers_and_Punctuation */
-
-/* 'In_Egyptian_Hieroglyphs': Block */
-static const OnigCodePoint CR_In_Egyptian_Hieroglyphs[] = {
- 1,
- 0x13000, 0x1342f,
-}; /* CR_In_Egyptian_Hieroglyphs */
-
-/* 'In_Bamum_Supplement': Block */
-static const OnigCodePoint CR_In_Bamum_Supplement[] = {
- 1,
- 0x16800, 0x16a3f,
-}; /* CR_In_Bamum_Supplement */
-
-/* 'In_Miao': Block */
-static const OnigCodePoint CR_In_Miao[] = {
- 1,
- 0x16f00, 0x16f9f,
-}; /* CR_In_Miao */
-
-/* 'In_Kana_Supplement': Block */
-static const OnigCodePoint CR_In_Kana_Supplement[] = {
- 1,
- 0x1b000, 0x1b0ff,
-}; /* CR_In_Kana_Supplement */
-
-/* 'In_Byzantine_Musical_Symbols': Block */
-static const OnigCodePoint CR_In_Byzantine_Musical_Symbols[] = {
- 1,
- 0x1d000, 0x1d0ff,
-}; /* CR_In_Byzantine_Musical_Symbols */
-
-/* 'In_Musical_Symbols': Block */
-static const OnigCodePoint CR_In_Musical_Symbols[] = {
- 1,
- 0x1d100, 0x1d1ff,
-}; /* CR_In_Musical_Symbols */
-
-/* 'In_Ancient_Greek_Musical_Notation': Block */
-static const OnigCodePoint CR_In_Ancient_Greek_Musical_Notation[] = {
- 1,
- 0x1d200, 0x1d24f,
-}; /* CR_In_Ancient_Greek_Musical_Notation */
-
-/* 'In_Tai_Xuan_Jing_Symbols': Block */
-static const OnigCodePoint CR_In_Tai_Xuan_Jing_Symbols[] = {
- 1,
- 0x1d300, 0x1d35f,
-}; /* CR_In_Tai_Xuan_Jing_Symbols */
-
-/* 'In_Counting_Rod_Numerals': Block */
-static const OnigCodePoint CR_In_Counting_Rod_Numerals[] = {
- 1,
- 0x1d360, 0x1d37f,
-}; /* CR_In_Counting_Rod_Numerals */
-
-/* 'In_Mathematical_Alphanumeric_Symbols': Block */
-static const OnigCodePoint CR_In_Mathematical_Alphanumeric_Symbols[] = {
- 1,
- 0x1d400, 0x1d7ff,
-}; /* CR_In_Mathematical_Alphanumeric_Symbols */
-
-/* 'In_Arabic_Mathematical_Alphabetic_Symbols': Block */
-static const OnigCodePoint CR_In_Arabic_Mathematical_Alphabetic_Symbols[] = {
- 1,
- 0x1ee00, 0x1eeff,
-}; /* CR_In_Arabic_Mathematical_Alphabetic_Symbols */
-
-/* 'In_Mahjong_Tiles': Block */
-static const OnigCodePoint CR_In_Mahjong_Tiles[] = {
- 1,
- 0x1f000, 0x1f02f,
-}; /* CR_In_Mahjong_Tiles */
-
-/* 'In_Domino_Tiles': Block */
-static const OnigCodePoint CR_In_Domino_Tiles[] = {
- 1,
- 0x1f030, 0x1f09f,
-}; /* CR_In_Domino_Tiles */
-
-/* 'In_Playing_Cards': Block */
-static const OnigCodePoint CR_In_Playing_Cards[] = {
- 1,
- 0x1f0a0, 0x1f0ff,
-}; /* CR_In_Playing_Cards */
-
-/* 'In_Enclosed_Alphanumeric_Supplement': Block */
-static const OnigCodePoint CR_In_Enclosed_Alphanumeric_Supplement[] = {
- 1,
- 0x1f100, 0x1f1ff,
-}; /* CR_In_Enclosed_Alphanumeric_Supplement */
-
-/* 'In_Enclosed_Ideographic_Supplement': Block */
-static const OnigCodePoint CR_In_Enclosed_Ideographic_Supplement[] = {
- 1,
- 0x1f200, 0x1f2ff,
-}; /* CR_In_Enclosed_Ideographic_Supplement */
-
-/* 'In_Miscellaneous_Symbols_And_Pictographs': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Symbols_And_Pictographs[] = {
- 1,
- 0x1f300, 0x1f5ff,
-}; /* CR_In_Miscellaneous_Symbols_And_Pictographs */
-
-/* 'In_Emoticons': Block */
-static const OnigCodePoint CR_In_Emoticons[] = {
- 1,
- 0x1f600, 0x1f64f,
-}; /* CR_In_Emoticons */
-
-/* 'In_Transport_And_Map_Symbols': Block */
-static const OnigCodePoint CR_In_Transport_And_Map_Symbols[] = {
- 1,
- 0x1f680, 0x1f6ff,
-}; /* CR_In_Transport_And_Map_Symbols */
-
-/* 'In_Alchemical_Symbols': Block */
-static const OnigCodePoint CR_In_Alchemical_Symbols[] = {
- 1,
- 0x1f700, 0x1f77f,
-}; /* CR_In_Alchemical_Symbols */
-
-/* 'In_CJK_Unified_Ideographs_Extension_B': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_B[] = {
- 1,
- 0x20000, 0x2a6df,
-}; /* CR_In_CJK_Unified_Ideographs_Extension_B */
-
-/* 'In_CJK_Unified_Ideographs_Extension_C': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_C[] = {
- 1,
- 0x2a700, 0x2b73f,
-}; /* CR_In_CJK_Unified_Ideographs_Extension_C */
-
-/* 'In_CJK_Unified_Ideographs_Extension_D': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_D[] = {
- 1,
- 0x2b740, 0x2b81f,
-}; /* CR_In_CJK_Unified_Ideographs_Extension_D */
-
-/* 'In_CJK_Compatibility_Ideographs_Supplement': Block */
-static const OnigCodePoint CR_In_CJK_Compatibility_Ideographs_Supplement[] = {
- 1,
- 0x2f800, 0x2fa1f,
-}; /* CR_In_CJK_Compatibility_Ideographs_Supplement */
-
-/* 'In_Tags': Block */
-static const OnigCodePoint CR_In_Tags[] = {
- 1,
- 0xe0000, 0xe007f,
-}; /* CR_In_Tags */
-
-/* 'In_Variation_Selectors_Supplement': Block */
-static const OnigCodePoint CR_In_Variation_Selectors_Supplement[] = {
- 1,
+ 0xfe20, 0xfe26,
+ 0xfe33, 0xfe34,
+ 0xfe4d, 0xfe4f,
+ 0xfe70, 0xfe74,
+ 0xfe76, 0xfefc,
+ 0xff10, 0xff19,
+ 0xff21, 0xff3a,
+ 0xff3f, 0xff3f,
+ 0xff41, 0xff5a,
+ 0xff66, 0xffbe,
+ 0xffc2, 0xffc7,
+ 0xffca, 0xffcf,
+ 0xffd2, 0xffd7,
+ 0xffda, 0xffdc,
+ 0x10000, 0x1000b,
+ 0x1000d, 0x10026,
+ 0x10028, 0x1003a,
+ 0x1003c, 0x1003d,
+ 0x1003f, 0x1004d,
+ 0x10050, 0x1005d,
+ 0x10080, 0x100fa,
+ 0x10140, 0x10174,
+ 0x101fd, 0x101fd,
+ 0x10280, 0x1029c,
+ 0x102a0, 0x102d0,
+ 0x10300, 0x1031e,
+ 0x10330, 0x1034a,
+ 0x10380, 0x1039d,
+ 0x103a0, 0x103c3,
+ 0x103c8, 0x103cf,
+ 0x103d1, 0x103d5,
+ 0x10400, 0x1049d,
+ 0x104a0, 0x104a9,
+ 0x10800, 0x10805,
+ 0x10808, 0x10808,
+ 0x1080a, 0x10835,
+ 0x10837, 0x10838,
+ 0x1083c, 0x1083c,
+ 0x1083f, 0x10855,
+ 0x10900, 0x10915,
+ 0x10920, 0x10939,
+ 0x10a00, 0x10a03,
+ 0x10a05, 0x10a06,
+ 0x10a0c, 0x10a13,
+ 0x10a15, 0x10a17,
+ 0x10a19, 0x10a33,
+ 0x10a38, 0x10a3a,
+ 0x10a3f, 0x10a3f,
+ 0x10a60, 0x10a7c,
+ 0x10b00, 0x10b35,
+ 0x10b40, 0x10b55,
+ 0x10b60, 0x10b72,
+ 0x10c00, 0x10c48,
+ 0x11000, 0x11046,
+ 0x11066, 0x1106f,
+ 0x11080, 0x110ba,
+ 0x12000, 0x1236e,
+ 0x12400, 0x12462,
+ 0x13000, 0x1342e,
+ 0x16800, 0x16a38,
+ 0x1b000, 0x1b001,
+ 0x1d165, 0x1d169,
+ 0x1d16d, 0x1d172,
+ 0x1d17b, 0x1d182,
+ 0x1d185, 0x1d18b,
+ 0x1d1aa, 0x1d1ad,
+ 0x1d242, 0x1d244,
+ 0x1d400, 0x1d454,
+ 0x1d456, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d51e, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d552, 0x1d6a5,
+ 0x1d6a8, 0x1d6c0,
+ 0x1d6c2, 0x1d6da,
+ 0x1d6dc, 0x1d6fa,
+ 0x1d6fc, 0x1d714,
+ 0x1d716, 0x1d734,
+ 0x1d736, 0x1d74e,
+ 0x1d750, 0x1d76e,
+ 0x1d770, 0x1d788,
+ 0x1d78a, 0x1d7a8,
+ 0x1d7aa, 0x1d7c2,
+ 0x1d7c4, 0x1d7cb,
+ 0x1d7ce, 0x1d7ff,
+ 0x20000, 0x2a6d6,
+ 0x2a700, 0x2b734,
+ 0x2b740, 0x2b81d,
+ 0x2f800, 0x2fa1d,
0xe0100, 0xe01ef,
-}; /* CR_In_Variation_Selectors_Supplement */
+}; /* CR_Word */
-/* 'In_Supplementary_Private_Use_Area_A': Block */
-static const OnigCodePoint CR_In_Supplementary_Private_Use_Area_A[] = {
- 1,
- 0xf0000, 0xfffff,
-}; /* CR_In_Supplementary_Private_Use_Area_A */
+/* 'Alnum': [[:Alnum:]] */
+static const OnigCodePoint CR_Alnum[] = {
+ 509,
+ 0x0030, 0x0039,
+ 0x0041, 0x005a,
+ 0x0061, 0x007a,
+ 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
+ 0x00c0, 0x00d6,
+ 0x00d8, 0x00f6,
+ 0x00f8, 0x02c1,
+ 0x02c6, 0x02d1,
+ 0x02e0, 0x02e4,
+ 0x02ec, 0x02ec,
+ 0x02ee, 0x02ee,
+ 0x0345, 0x0345,
+ 0x0370, 0x0374,
+ 0x0376, 0x0377,
+ 0x037a, 0x037d,
+ 0x0386, 0x0386,
+ 0x0388, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x03a1,
+ 0x03a3, 0x03f5,
+ 0x03f7, 0x0481,
+ 0x048a, 0x0527,
+ 0x0531, 0x0556,
+ 0x0559, 0x0559,
+ 0x0561, 0x0587,
+ 0x05b0, 0x05bd,
+ 0x05bf, 0x05bf,
+ 0x05c1, 0x05c2,
+ 0x05c4, 0x05c5,
+ 0x05c7, 0x05c7,
+ 0x05d0, 0x05ea,
+ 0x05f0, 0x05f2,
+ 0x0610, 0x061a,
+ 0x0620, 0x0657,
+ 0x0659, 0x0669,
+ 0x066e, 0x06d3,
+ 0x06d5, 0x06dc,
+ 0x06e1, 0x06e8,
+ 0x06ed, 0x06fc,
+ 0x06ff, 0x06ff,
+ 0x0710, 0x073f,
+ 0x074d, 0x07b1,
+ 0x07c0, 0x07ea,
+ 0x07f4, 0x07f5,
+ 0x07fa, 0x07fa,
+ 0x0800, 0x0817,
+ 0x081a, 0x082c,
+ 0x0840, 0x0858,
+ 0x0900, 0x093b,
+ 0x093d, 0x094c,
+ 0x094e, 0x0950,
+ 0x0955, 0x0963,
+ 0x0966, 0x096f,
+ 0x0971, 0x0977,
+ 0x0979, 0x097f,
+ 0x0981, 0x0983,
+ 0x0985, 0x098c,
+ 0x098f, 0x0990,
+ 0x0993, 0x09a8,
+ 0x09aa, 0x09b0,
+ 0x09b2, 0x09b2,
+ 0x09b6, 0x09b9,
+ 0x09bd, 0x09c4,
+ 0x09c7, 0x09c8,
+ 0x09cb, 0x09cc,
+ 0x09ce, 0x09ce,
+ 0x09d7, 0x09d7,
+ 0x09dc, 0x09dd,
+ 0x09df, 0x09e3,
+ 0x09e6, 0x09f1,
+ 0x0a01, 0x0a03,
+ 0x0a05, 0x0a0a,
+ 0x0a0f, 0x0a10,
+ 0x0a13, 0x0a28,
+ 0x0a2a, 0x0a30,
+ 0x0a32, 0x0a33,
+ 0x0a35, 0x0a36,
+ 0x0a38, 0x0a39,
+ 0x0a3e, 0x0a42,
+ 0x0a47, 0x0a48,
+ 0x0a4b, 0x0a4c,
+ 0x0a51, 0x0a51,
+ 0x0a59, 0x0a5c,
+ 0x0a5e, 0x0a5e,
+ 0x0a66, 0x0a75,
+ 0x0a81, 0x0a83,
+ 0x0a85, 0x0a8d,
+ 0x0a8f, 0x0a91,
+ 0x0a93, 0x0aa8,
+ 0x0aaa, 0x0ab0,
+ 0x0ab2, 0x0ab3,
+ 0x0ab5, 0x0ab9,
+ 0x0abd, 0x0ac5,
+ 0x0ac7, 0x0ac9,
+ 0x0acb, 0x0acc,
+ 0x0ad0, 0x0ad0,
+ 0x0ae0, 0x0ae3,
+ 0x0ae6, 0x0aef,
+ 0x0b01, 0x0b03,
+ 0x0b05, 0x0b0c,
+ 0x0b0f, 0x0b10,
+ 0x0b13, 0x0b28,
+ 0x0b2a, 0x0b30,
+ 0x0b32, 0x0b33,
+ 0x0b35, 0x0b39,
+ 0x0b3d, 0x0b44,
+ 0x0b47, 0x0b48,
+ 0x0b4b, 0x0b4c,
+ 0x0b56, 0x0b57,
+ 0x0b5c, 0x0b5d,
+ 0x0b5f, 0x0b63,
+ 0x0b66, 0x0b6f,
+ 0x0b71, 0x0b71,
+ 0x0b82, 0x0b83,
+ 0x0b85, 0x0b8a,
+ 0x0b8e, 0x0b90,
+ 0x0b92, 0x0b95,
+ 0x0b99, 0x0b9a,
+ 0x0b9c, 0x0b9c,
+ 0x0b9e, 0x0b9f,
+ 0x0ba3, 0x0ba4,
+ 0x0ba8, 0x0baa,
+ 0x0bae, 0x0bb9,
+ 0x0bbe, 0x0bc2,
+ 0x0bc6, 0x0bc8,
+ 0x0bca, 0x0bcc,
+ 0x0bd0, 0x0bd0,
+ 0x0bd7, 0x0bd7,
+ 0x0be6, 0x0bef,
+ 0x0c01, 0x0c03,
+ 0x0c05, 0x0c0c,
+ 0x0c0e, 0x0c10,
+ 0x0c12, 0x0c28,
+ 0x0c2a, 0x0c33,
+ 0x0c35, 0x0c39,
+ 0x0c3d, 0x0c44,
+ 0x0c46, 0x0c48,
+ 0x0c4a, 0x0c4c,
+ 0x0c55, 0x0c56,
+ 0x0c58, 0x0c59,
+ 0x0c60, 0x0c63,
+ 0x0c66, 0x0c6f,
+ 0x0c82, 0x0c83,
+ 0x0c85, 0x0c8c,
+ 0x0c8e, 0x0c90,
+ 0x0c92, 0x0ca8,
+ 0x0caa, 0x0cb3,
+ 0x0cb5, 0x0cb9,
+ 0x0cbd, 0x0cc4,
+ 0x0cc6, 0x0cc8,
+ 0x0cca, 0x0ccc,
+ 0x0cd5, 0x0cd6,
+ 0x0cde, 0x0cde,
+ 0x0ce0, 0x0ce3,
+ 0x0ce6, 0x0cef,
+ 0x0cf1, 0x0cf2,
+ 0x0d02, 0x0d03,
+ 0x0d05, 0x0d0c,
+ 0x0d0e, 0x0d10,
+ 0x0d12, 0x0d3a,
+ 0x0d3d, 0x0d44,
+ 0x0d46, 0x0d48,
+ 0x0d4a, 0x0d4c,
+ 0x0d4e, 0x0d4e,
+ 0x0d57, 0x0d57,
+ 0x0d60, 0x0d63,
+ 0x0d66, 0x0d6f,
+ 0x0d7a, 0x0d7f,
+ 0x0d82, 0x0d83,
+ 0x0d85, 0x0d96,
+ 0x0d9a, 0x0db1,
+ 0x0db3, 0x0dbb,
+ 0x0dbd, 0x0dbd,
+ 0x0dc0, 0x0dc6,
+ 0x0dcf, 0x0dd4,
+ 0x0dd6, 0x0dd6,
+ 0x0dd8, 0x0ddf,
+ 0x0df2, 0x0df3,
+ 0x0e01, 0x0e3a,
+ 0x0e40, 0x0e46,
+ 0x0e4d, 0x0e4d,
+ 0x0e50, 0x0e59,
+ 0x0e81, 0x0e82,
+ 0x0e84, 0x0e84,
+ 0x0e87, 0x0e88,
+ 0x0e8a, 0x0e8a,
+ 0x0e8d, 0x0e8d,
+ 0x0e94, 0x0e97,
+ 0x0e99, 0x0e9f,
+ 0x0ea1, 0x0ea3,
+ 0x0ea5, 0x0ea5,
+ 0x0ea7, 0x0ea7,
+ 0x0eaa, 0x0eab,
+ 0x0ead, 0x0eb9,
+ 0x0ebb, 0x0ebd,
+ 0x0ec0, 0x0ec4,
+ 0x0ec6, 0x0ec6,
+ 0x0ecd, 0x0ecd,
+ 0x0ed0, 0x0ed9,
+ 0x0edc, 0x0edd,
+ 0x0f00, 0x0f00,
+ 0x0f20, 0x0f29,
+ 0x0f40, 0x0f47,
+ 0x0f49, 0x0f6c,
+ 0x0f71, 0x0f81,
+ 0x0f88, 0x0f97,
+ 0x0f99, 0x0fbc,
+ 0x1000, 0x1036,
+ 0x1038, 0x1038,
+ 0x103b, 0x1049,
+ 0x1050, 0x1062,
+ 0x1065, 0x1068,
+ 0x106e, 0x1086,
+ 0x108e, 0x108e,
+ 0x1090, 0x1099,
+ 0x109c, 0x109d,
+ 0x10a0, 0x10c5,
+ 0x10d0, 0x10fa,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
+ 0x124a, 0x124d,
+ 0x1250, 0x1256,
+ 0x1258, 0x1258,
+ 0x125a, 0x125d,
+ 0x1260, 0x1288,
+ 0x128a, 0x128d,
+ 0x1290, 0x12b0,
+ 0x12b2, 0x12b5,
+ 0x12b8, 0x12be,
+ 0x12c0, 0x12c0,
+ 0x12c2, 0x12c5,
+ 0x12c8, 0x12d6,
+ 0x12d8, 0x1310,
+ 0x1312, 0x1315,
+ 0x1318, 0x135a,
+ 0x135f, 0x135f,
+ 0x1380, 0x138f,
+ 0x13a0, 0x13f4,
+ 0x1401, 0x166c,
+ 0x166f, 0x167f,
+ 0x1681, 0x169a,
+ 0x16a0, 0x16ea,
+ 0x16ee, 0x16f0,
+ 0x1700, 0x170c,
+ 0x170e, 0x1713,
+ 0x1720, 0x1733,
+ 0x1740, 0x1753,
+ 0x1760, 0x176c,
+ 0x176e, 0x1770,
+ 0x1772, 0x1773,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17c8,
+ 0x17d7, 0x17d7,
+ 0x17dc, 0x17dc,
+ 0x17e0, 0x17e9,
+ 0x1810, 0x1819,
+ 0x1820, 0x1877,
+ 0x1880, 0x18aa,
+ 0x18b0, 0x18f5,
+ 0x1900, 0x191c,
+ 0x1920, 0x192b,
+ 0x1930, 0x1938,
+ 0x1946, 0x196d,
+ 0x1970, 0x1974,
+ 0x1980, 0x19ab,
+ 0x19b0, 0x19c9,
+ 0x19d0, 0x19d9,
+ 0x1a00, 0x1a1b,
+ 0x1a20, 0x1a5e,
+ 0x1a61, 0x1a74,
+ 0x1a80, 0x1a89,
+ 0x1a90, 0x1a99,
+ 0x1aa7, 0x1aa7,
+ 0x1b00, 0x1b33,
+ 0x1b35, 0x1b43,
+ 0x1b45, 0x1b4b,
+ 0x1b50, 0x1b59,
+ 0x1b80, 0x1ba9,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1be5,
+ 0x1be7, 0x1bf1,
+ 0x1c00, 0x1c35,
+ 0x1c40, 0x1c49,
+ 0x1c4d, 0x1c7d,
+ 0x1ce9, 0x1cec,
+ 0x1cee, 0x1cf2,
+ 0x1d00, 0x1dbf,
+ 0x1e00, 0x1f15,
+ 0x1f18, 0x1f1d,
+ 0x1f20, 0x1f45,
+ 0x1f48, 0x1f4d,
+ 0x1f50, 0x1f57,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f7d,
+ 0x1f80, 0x1fb4,
+ 0x1fb6, 0x1fbc,
+ 0x1fbe, 0x1fbe,
+ 0x1fc2, 0x1fc4,
+ 0x1fc6, 0x1fcc,
+ 0x1fd0, 0x1fd3,
+ 0x1fd6, 0x1fdb,
+ 0x1fe0, 0x1fec,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ffc,
+ 0x2071, 0x2071,
+ 0x207f, 0x207f,
+ 0x2090, 0x209c,
+ 0x2102, 0x2102,
+ 0x2107, 0x2107,
+ 0x210a, 0x2113,
+ 0x2115, 0x2115,
+ 0x2119, 0x211d,
+ 0x2124, 0x2124,
+ 0x2126, 0x2126,
+ 0x2128, 0x2128,
+ 0x212a, 0x212d,
+ 0x212f, 0x2139,
+ 0x213c, 0x213f,
+ 0x2145, 0x2149,
+ 0x214e, 0x214e,
+ 0x2160, 0x2188,
+ 0x24b6, 0x24e9,
+ 0x2c00, 0x2c2e,
+ 0x2c30, 0x2c5e,
+ 0x2c60, 0x2ce4,
+ 0x2ceb, 0x2cee,
+ 0x2d00, 0x2d25,
+ 0x2d30, 0x2d65,
+ 0x2d6f, 0x2d6f,
+ 0x2d80, 0x2d96,
+ 0x2da0, 0x2da6,
+ 0x2da8, 0x2dae,
+ 0x2db0, 0x2db6,
+ 0x2db8, 0x2dbe,
+ 0x2dc0, 0x2dc6,
+ 0x2dc8, 0x2dce,
+ 0x2dd0, 0x2dd6,
+ 0x2dd8, 0x2dde,
+ 0x2de0, 0x2dff,
+ 0x2e2f, 0x2e2f,
+ 0x3005, 0x3007,
+ 0x3021, 0x3029,
+ 0x3031, 0x3035,
+ 0x3038, 0x303c,
+ 0x3041, 0x3096,
+ 0x309d, 0x309f,
+ 0x30a1, 0x30fa,
+ 0x30fc, 0x30ff,
+ 0x3105, 0x312d,
+ 0x3131, 0x318e,
+ 0x31a0, 0x31ba,
+ 0x31f0, 0x31ff,
+ 0x3400, 0x4db5,
+ 0x4e00, 0x9fcb,
+ 0xa000, 0xa48c,
+ 0xa4d0, 0xa4fd,
+ 0xa500, 0xa60c,
+ 0xa610, 0xa62b,
+ 0xa640, 0xa66e,
+ 0xa67f, 0xa697,
+ 0xa6a0, 0xa6ef,
+ 0xa717, 0xa71f,
+ 0xa722, 0xa788,
+ 0xa78b, 0xa78e,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
+ 0xa803, 0xa805,
+ 0xa807, 0xa80a,
+ 0xa80c, 0xa827,
+ 0xa840, 0xa873,
+ 0xa880, 0xa8c3,
+ 0xa8d0, 0xa8d9,
+ 0xa8f2, 0xa8f7,
+ 0xa8fb, 0xa8fb,
+ 0xa900, 0xa92a,
+ 0xa930, 0xa952,
+ 0xa960, 0xa97c,
+ 0xa980, 0xa9b2,
+ 0xa9b4, 0xa9bf,
+ 0xa9cf, 0xa9d9,
+ 0xaa00, 0xaa36,
+ 0xaa40, 0xaa4d,
+ 0xaa50, 0xaa59,
+ 0xaa60, 0xaa76,
+ 0xaa7a, 0xaa7a,
+ 0xaa80, 0xaabe,
+ 0xaac0, 0xaac0,
+ 0xaac2, 0xaac2,
+ 0xaadb, 0xaadd,
+ 0xab01, 0xab06,
+ 0xab09, 0xab0e,
+ 0xab11, 0xab16,
+ 0xab20, 0xab26,
+ 0xab28, 0xab2e,
+ 0xabc0, 0xabea,
+ 0xabf0, 0xabf9,
+ 0xac00, 0xd7a3,
+ 0xd7b0, 0xd7c6,
+ 0xd7cb, 0xd7fb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
+ 0xfa70, 0xfad9,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xfb1d, 0xfb28,
+ 0xfb2a, 0xfb36,
+ 0xfb38, 0xfb3c,
+ 0xfb3e, 0xfb3e,
+ 0xfb40, 0xfb41,
+ 0xfb43, 0xfb44,
+ 0xfb46, 0xfbb1,
+ 0xfbd3, 0xfd3d,
+ 0xfd50, 0xfd8f,
+ 0xfd92, 0xfdc7,
+ 0xfdf0, 0xfdfb,
+ 0xfe70, 0xfe74,
+ 0xfe76, 0xfefc,
+ 0xff10, 0xff19,
+ 0xff21, 0xff3a,
+ 0xff41, 0xff5a,
+ 0xff66, 0xffbe,
+ 0xffc2, 0xffc7,
+ 0xffca, 0xffcf,
+ 0xffd2, 0xffd7,
+ 0xffda, 0xffdc,
+ 0x10000, 0x1000b,
+ 0x1000d, 0x10026,
+ 0x10028, 0x1003a,
+ 0x1003c, 0x1003d,
+ 0x1003f, 0x1004d,
+ 0x10050, 0x1005d,
+ 0x10080, 0x100fa,
+ 0x10140, 0x10174,
+ 0x10280, 0x1029c,
+ 0x102a0, 0x102d0,
+ 0x10300, 0x1031e,
+ 0x10330, 0x1034a,
+ 0x10380, 0x1039d,
+ 0x103a0, 0x103c3,
+ 0x103c8, 0x103cf,
+ 0x103d1, 0x103d5,
+ 0x10400, 0x1049d,
+ 0x104a0, 0x104a9,
+ 0x10800, 0x10805,
+ 0x10808, 0x10808,
+ 0x1080a, 0x10835,
+ 0x10837, 0x10838,
+ 0x1083c, 0x1083c,
+ 0x1083f, 0x10855,
+ 0x10900, 0x10915,
+ 0x10920, 0x10939,
+ 0x10a00, 0x10a03,
+ 0x10a05, 0x10a06,
+ 0x10a0c, 0x10a13,
+ 0x10a15, 0x10a17,
+ 0x10a19, 0x10a33,
+ 0x10a60, 0x10a7c,
+ 0x10b00, 0x10b35,
+ 0x10b40, 0x10b55,
+ 0x10b60, 0x10b72,
+ 0x10c00, 0x10c48,
+ 0x11000, 0x11045,
+ 0x11066, 0x1106f,
+ 0x11082, 0x110b8,
+ 0x12000, 0x1236e,
+ 0x12400, 0x12462,
+ 0x13000, 0x1342e,
+ 0x16800, 0x16a38,
+ 0x1b000, 0x1b001,
+ 0x1d400, 0x1d454,
+ 0x1d456, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d51e, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d552, 0x1d6a5,
+ 0x1d6a8, 0x1d6c0,
+ 0x1d6c2, 0x1d6da,
+ 0x1d6dc, 0x1d6fa,
+ 0x1d6fc, 0x1d714,
+ 0x1d716, 0x1d734,
+ 0x1d736, 0x1d74e,
+ 0x1d750, 0x1d76e,
+ 0x1d770, 0x1d788,
+ 0x1d78a, 0x1d7a8,
+ 0x1d7aa, 0x1d7c2,
+ 0x1d7c4, 0x1d7cb,
+ 0x1d7ce, 0x1d7ff,
+ 0x20000, 0x2a6d6,
+ 0x2a700, 0x2b734,
+ 0x2b740, 0x2b81d,
+ 0x2f800, 0x2fa1d,
+}; /* CR_Alnum */
-/* 'In_Supplementary_Private_Use_Area_B': Block */
-static const OnigCodePoint CR_In_Supplementary_Private_Use_Area_B[] = {
+/* 'ASCII': [[:ASCII:]] */
+static const OnigCodePoint CR_ASCII[] = {
1,
- 0x100000, 0x10ffff,
-}; /* CR_In_Supplementary_Private_Use_Area_B */
-
-/* 'In_No_Block': Block */
-static const OnigCodePoint CR_In_No_Block[] = {
- 36,
- 0x0860, 0x089f,
- 0x1ab0, 0x1aff,
- 0x1c80, 0x1cbf,
- 0x2fe0, 0x2fef,
- 0xa9e0, 0xa9ff,
- 0xab30, 0xabbf,
- 0x10200, 0x1027f,
- 0x102e0, 0x102ff,
- 0x10350, 0x1037f,
- 0x103e0, 0x103ff,
- 0x104b0, 0x107ff,
- 0x10860, 0x108ff,
- 0x10940, 0x1097f,
- 0x10a80, 0x10aff,
- 0x10b80, 0x10bff,
- 0x10c50, 0x10e5f,
- 0x10e80, 0x10fff,
- 0x11150, 0x1117f,
- 0x111e0, 0x1167f,
- 0x116d0, 0x11fff,
- 0x12480, 0x12fff,
- 0x13430, 0x167ff,
- 0x16a40, 0x16eff,
- 0x16fa0, 0x1afff,
- 0x1b100, 0x1cfff,
- 0x1d250, 0x1d2ff,
- 0x1d380, 0x1d3ff,
- 0x1d800, 0x1edff,
- 0x1ef00, 0x1efff,
- 0x1f650, 0x1f67f,
- 0x1f780, 0x1ffff,
- 0x2a6e0, 0x2a6ff,
- 0x2b820, 0x2f7ff,
- 0x2fa20, 0xdffff,
- 0xe0080, 0xe00ff,
- 0xe01f0, 0xeffff,
-}; /* CR_In_No_Block */
-#endif /* USE_UNICODE_PROPERTIES */
+ 0x0000, 0x007f,
+}; /* CR_ASCII */
static const OnigCodePoint* const CodeRanges[] = {
CR_NEWLINE,
@@ -25510,6 +21973,7 @@ static const OnigCodePoint* const CodeRanges[] = {
CR_Alnum,
CR_ASCII,
#ifdef USE_UNICODE_PROPERTIES
+#ifdef USE_UNICODE_PROPERTIES
CR_Any,
CR_Assigned,
CR_C,
@@ -25519,7 +21983,6 @@ static const OnigCodePoint* const CodeRanges[] = {
CR_Co,
CR_Cs,
CR_L,
- CR_LC,
CR_Ll,
CR_Lm,
CR_Lo,
@@ -25664,13 +22127,6 @@ static const OnigCodePoint* const CodeRanges[] = {
CR_Batak,
CR_Brahmi,
CR_Mandaic,
- CR_Chakma,
- CR_Meroitic_Cursive,
- CR_Meroitic_Hieroglyphs,
- CR_Miao,
- CR_Sharada,
- CR_Sora_Sompeng,
- CR_Takri,
CR_White_Space,
CR_Bidi_Control,
CR_Join_Control,
@@ -25716,228 +22172,7 @@ static const OnigCodePoint* const CodeRanges[] = {
CR_Age_5_1,
CR_Age_5_2,
CR_Age_6_0,
- CR_Age_6_1,
- CR_In_Basic_Latin,
- CR_In_Latin_1_Supplement,
- CR_In_Latin_Extended_A,
- CR_In_Latin_Extended_B,
- CR_In_IPA_Extensions,
- CR_In_Spacing_Modifier_Letters,
- CR_In_Combining_Diacritical_Marks,
- CR_In_Greek_and_Coptic,
- CR_In_Cyrillic,
- CR_In_Cyrillic_Supplement,
- CR_In_Armenian,
- CR_In_Hebrew,
- CR_In_Arabic,
- CR_In_Syriac,
- CR_In_Arabic_Supplement,
- CR_In_Thaana,
- CR_In_NKo,
- CR_In_Samaritan,
- CR_In_Mandaic,
- CR_In_Arabic_Extended_A,
- CR_In_Devanagari,
- CR_In_Bengali,
- CR_In_Gurmukhi,
- CR_In_Gujarati,
- CR_In_Oriya,
- CR_In_Tamil,
- CR_In_Telugu,
- CR_In_Kannada,
- CR_In_Malayalam,
- CR_In_Sinhala,
- CR_In_Thai,
- CR_In_Lao,
- CR_In_Tibetan,
- CR_In_Myanmar,
- CR_In_Georgian,
- CR_In_Hangul_Jamo,
- CR_In_Ethiopic,
- CR_In_Ethiopic_Supplement,
- CR_In_Cherokee,
- CR_In_Unified_Canadian_Aboriginal_Syllabics,
- CR_In_Ogham,
- CR_In_Runic,
- CR_In_Tagalog,
- CR_In_Hanunoo,
- CR_In_Buhid,
- CR_In_Tagbanwa,
- CR_In_Khmer,
- CR_In_Mongolian,
- CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended,
- CR_In_Limbu,
- CR_In_Tai_Le,
- CR_In_New_Tai_Lue,
- CR_In_Khmer_Symbols,
- CR_In_Buginese,
- CR_In_Tai_Tham,
- CR_In_Balinese,
- CR_In_Sundanese,
- CR_In_Batak,
- CR_In_Lepcha,
- CR_In_Ol_Chiki,
- CR_In_Sundanese_Supplement,
- CR_In_Vedic_Extensions,
- CR_In_Phonetic_Extensions,
- CR_In_Phonetic_Extensions_Supplement,
- CR_In_Combining_Diacritical_Marks_Supplement,
- CR_In_Latin_Extended_Additional,
- CR_In_Greek_Extended,
- CR_In_General_Punctuation,
- CR_In_Superscripts_and_Subscripts,
- CR_In_Currency_Symbols,
- CR_In_Combining_Diacritical_Marks_for_Symbols,
- CR_In_Letterlike_Symbols,
- CR_In_Number_Forms,
- CR_In_Arrows,
- CR_In_Mathematical_Operators,
- CR_In_Miscellaneous_Technical,
- CR_In_Control_Pictures,
- CR_In_Optical_Character_Recognition,
- CR_In_Enclosed_Alphanumerics,
- CR_In_Box_Drawing,
- CR_In_Block_Elements,
- CR_In_Geometric_Shapes,
- CR_In_Miscellaneous_Symbols,
- CR_In_Dingbats,
- CR_In_Miscellaneous_Mathematical_Symbols_A,
- CR_In_Supplemental_Arrows_A,
- CR_In_Braille_Patterns,
- CR_In_Supplemental_Arrows_B,
- CR_In_Miscellaneous_Mathematical_Symbols_B,
- CR_In_Supplemental_Mathematical_Operators,
- CR_In_Miscellaneous_Symbols_and_Arrows,
- CR_In_Glagolitic,
- CR_In_Latin_Extended_C,
- CR_In_Coptic,
- CR_In_Georgian_Supplement,
- CR_In_Tifinagh,
- CR_In_Ethiopic_Extended,
- CR_In_Cyrillic_Extended_A,
- CR_In_Supplemental_Punctuation,
- CR_In_CJK_Radicals_Supplement,
- CR_In_Kangxi_Radicals,
- CR_In_Ideographic_Description_Characters,
- CR_In_CJK_Symbols_and_Punctuation,
- CR_In_Hiragana,
- CR_In_Katakana,
- CR_In_Bopomofo,
- CR_In_Hangul_Compatibility_Jamo,
- CR_In_Kanbun,
- CR_In_Bopomofo_Extended,
- CR_In_CJK_Strokes,
- CR_In_Katakana_Phonetic_Extensions,
- CR_In_Enclosed_CJK_Letters_and_Months,
- CR_In_CJK_Compatibility,
- CR_In_CJK_Unified_Ideographs_Extension_A,
- CR_In_Yijing_Hexagram_Symbols,
- CR_In_CJK_Unified_Ideographs,
- CR_In_Yi_Syllables,
- CR_In_Yi_Radicals,
- CR_In_Lisu,
- CR_In_Vai,
- CR_In_Cyrillic_Extended_B,
- CR_In_Bamum,
- CR_In_Modifier_Tone_Letters,
- CR_In_Latin_Extended_D,
- CR_In_Syloti_Nagri,
- CR_In_Common_Indic_Number_Forms,
- CR_In_Phags_pa,
- CR_In_Saurashtra,
- CR_In_Devanagari_Extended,
- CR_In_Kayah_Li,
- CR_In_Rejang,
- CR_In_Hangul_Jamo_Extended_A,
- CR_In_Javanese,
- CR_In_Cham,
- CR_In_Myanmar_Extended_A,
- CR_In_Tai_Viet,
- CR_In_Meetei_Mayek_Extensions,
- CR_In_Ethiopic_Extended_A,
- CR_In_Meetei_Mayek,
- CR_In_Hangul_Syllables,
- CR_In_Hangul_Jamo_Extended_B,
- CR_In_High_Surrogates,
- CR_In_High_Private_Use_Surrogates,
- CR_In_Low_Surrogates,
- CR_In_Private_Use_Area,
- CR_In_CJK_Compatibility_Ideographs,
- CR_In_Alphabetic_Presentation_Forms,
- CR_In_Arabic_Presentation_Forms_A,
- CR_In_Variation_Selectors,
- CR_In_Vertical_Forms,
- CR_In_Combining_Half_Marks,
- CR_In_CJK_Compatibility_Forms,
- CR_In_Small_Form_Variants,
- CR_In_Arabic_Presentation_Forms_B,
- CR_In_Halfwidth_and_Fullwidth_Forms,
- CR_In_Specials,
- CR_In_Linear_B_Syllabary,
- CR_In_Linear_B_Ideograms,
- CR_In_Aegean_Numbers,
- CR_In_Ancient_Greek_Numbers,
- CR_In_Ancient_Symbols,
- CR_In_Phaistos_Disc,
- CR_In_Lycian,
- CR_In_Carian,
- CR_In_Old_Italic,
- CR_In_Gothic,
- CR_In_Ugaritic,
- CR_In_Old_Persian,
- CR_In_Deseret,
- CR_In_Shavian,
- CR_In_Osmanya,
- CR_In_Cypriot_Syllabary,
- CR_In_Imperial_Aramaic,
- CR_In_Phoenician,
- CR_In_Lydian,
- CR_In_Meroitic_Hieroglyphs,
- CR_In_Meroitic_Cursive,
- CR_In_Kharoshthi,
- CR_In_Old_South_Arabian,
- CR_In_Avestan,
- CR_In_Inscriptional_Parthian,
- CR_In_Inscriptional_Pahlavi,
- CR_In_Old_Turkic,
- CR_In_Rumi_Numeral_Symbols,
- CR_In_Brahmi,
- CR_In_Kaithi,
- CR_In_Sora_Sompeng,
- CR_In_Chakma,
- CR_In_Sharada,
- CR_In_Takri,
- CR_In_Cuneiform,
- CR_In_Cuneiform_Numbers_and_Punctuation,
- CR_In_Egyptian_Hieroglyphs,
- CR_In_Bamum_Supplement,
- CR_In_Miao,
- CR_In_Kana_Supplement,
- CR_In_Byzantine_Musical_Symbols,
- CR_In_Musical_Symbols,
- CR_In_Ancient_Greek_Musical_Notation,
- CR_In_Tai_Xuan_Jing_Symbols,
- CR_In_Counting_Rod_Numerals,
- CR_In_Mathematical_Alphanumeric_Symbols,
- CR_In_Arabic_Mathematical_Alphabetic_Symbols,
- CR_In_Mahjong_Tiles,
- CR_In_Domino_Tiles,
- CR_In_Playing_Cards,
- CR_In_Enclosed_Alphanumeric_Supplement,
- CR_In_Enclosed_Ideographic_Supplement,
- CR_In_Miscellaneous_Symbols_And_Pictographs,
- CR_In_Emoticons,
- CR_In_Transport_And_Map_Symbols,
- CR_In_Alchemical_Symbols,
- CR_In_CJK_Unified_Ideographs_Extension_B,
- CR_In_CJK_Unified_Ideographs_Extension_C,
- CR_In_CJK_Unified_Ideographs_Extension_D,
- CR_In_CJK_Compatibility_Ideographs_Supplement,
- CR_In_Tags,
- CR_In_Variation_Selectors_Supplement,
- CR_In_Supplementary_Private_Use_Area_A,
- CR_In_Supplementary_Private_Use_Area_B,
- CR_In_No_Block,
+#endif /* USE_UNICODE_PROPERTIES */
#endif /* USE_UNICODE_PROPERTIES */
};
struct uniname2ctype_struct {
@@ -25947,19 +22182,19 @@ struct uniname2ctype_struct {
static const struct uniname2ctype_struct *uniname2ctype_p(const char *, unsigned int);
#ifndef USE_UNICODE_PROPERTIES
-#define TOTAL_KEYWORDS 14
+#define TOTAL_KEYWORDS 15
#define MIN_WORD_LENGTH 4
-#define MAX_WORD_LENGTH 6
-#define MIN_HASH_VALUE 6
-#define MAX_HASH_VALUE 19
-/* maximum key range = 14, duplicates = 0 */
+#define MAX_WORD_LENGTH 7
+#define MIN_HASH_VALUE 7
+#define MAX_HASH_VALUE 21
+/* maximum key range = 15, duplicates = 0 */
#else /* USE_UNICODE_PROPERTIES */
-#define TOTAL_KEYWORDS 625
+#define TOTAL_KEYWORDS 387
#define MIN_WORD_LENGTH 1
-#define MAX_WORD_LENGTH 44
+#define MAX_WORD_LENGTH 30
#define MIN_HASH_VALUE 3
-#define MAX_HASH_VALUE 4167
-/* maximum key range = 4165, duplicates = 0 */
+#define MAX_HASH_VALUE 1741
+/* maximum key range = 1739, duplicates = 0 */
#endif /* USE_UNICODE_PROPERTIES */
#ifdef __GNUC__
@@ -25981,33 +22216,33 @@ uniname2ctype_hash (str, len)
#endif /* USE_UNICODE_PROPERTIES */
{
#ifndef USE_UNICODE_PROPERTIES
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
- 20, 20, 20, 20, 20, 20, 20, 3, 11, 5,
- 4, 20, 20, 9, 20, 1, 20, 20, 10, 20,
- 2, 20, 1, 20, 1, 7, 4, 6, 20, 1,
- 4, 20, 20, 20, 20, 20, 20, 20
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
+ 22, 22, 22, 22, 22, 22, 22, 3, 13, 6,
+ 4, 22, 22, 11, 22, 1, 22, 22, 10, 22,
+ 2, 22, 1, 22, 10, 8, 4, 7, 22, 3,
+ 4, 22, 22, 22, 22, 22, 22, 22
#else /* USE_UNICODE_PROPERTIES */
- 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168,
- 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168,
- 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168,
- 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168,
- 4168, 4168, 4168, 4168, 4168, 4168, 1, 4168, 13, 1,
- 3, 28, 31, 10, 27, 4168, 4168, 4168, 4168, 4168,
- 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168,
- 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168,
- 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168,
- 4168, 4168, 4168, 4168, 4168, 4168, 4168, 13, 854, 14,
- 443, 19, 7, 570, 335, 4, 66, 1159, 102, 34,
- 1, 178, 474, 1, 192, 2, 64, 1117, 491, 264,
- 256, 1305, 3, 4168, 4168, 4168, 4168, 4168
+ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
+ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
+ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
+ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
+ 1742, 1742, 1742, 1742, 1742, 1742, 2, 1742, 9, 1,
+ 2, 18, 5, 3, 4, 1742, 1742, 1742, 1742, 1742,
+ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
+ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
+ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742, 1742,
+ 1742, 1742, 1742, 1742, 1742, 1742, 1742, 8, 280, 6,
+ 96, 67, 362, 294, 38, 9, 63, 517, 2, 213,
+ 1, 4, 192, 3, 10, 57, 31, 316, 1, 549,
+ 330, 567, 36, 1742, 1742, 1742, 1742, 1742
#endif /* USE_UNICODE_PROPERTIES */
};
#ifndef USE_UNICODE_PROPERTIES
@@ -26055,1298 +22290,823 @@ uniname2ctype_hash (str, len)
struct uniname2ctype_pool_t
{
#ifndef USE_UNICODE_PROPERTIES
- char uniname2ctype_pool_str6[sizeof("word")];
char uniname2ctype_pool_str7[sizeof("print")];
char uniname2ctype_pool_str8[sizeof("punct")];
char uniname2ctype_pool_str9[sizeof("alpha")];
char uniname2ctype_pool_str10[sizeof("alnum")];
char uniname2ctype_pool_str11[sizeof("xdigit")];
- char uniname2ctype_pool_str12[sizeof("upper")];
- char uniname2ctype_pool_str13[sizeof("ascii")];
- char uniname2ctype_pool_str14[sizeof("cntrl")];
- char uniname2ctype_pool_str15[sizeof("space")];
- char uniname2ctype_pool_str16[sizeof("lower")];
- char uniname2ctype_pool_str17[sizeof("graph")];
- char uniname2ctype_pool_str18[sizeof("digit")];
- char uniname2ctype_pool_str19[sizeof("blank")];
+ char uniname2ctype_pool_str12[sizeof("newline")];
+ char uniname2ctype_pool_str13[sizeof("upper")];
+ char uniname2ctype_pool_str14[sizeof("ascii")];
+ char uniname2ctype_pool_str15[sizeof("cntrl")];
+ char uniname2ctype_pool_str16[sizeof("space")];
+ char uniname2ctype_pool_str17[sizeof("word")];
+ char uniname2ctype_pool_str18[sizeof("lower")];
+ char uniname2ctype_pool_str19[sizeof("graph")];
+ char uniname2ctype_pool_str20[sizeof("digit")];
+ char uniname2ctype_pool_str21[sizeof("blank")];
#else /* USE_UNICODE_PROPERTIES */
char uniname2ctype_pool_str3[sizeof("n")];
- char uniname2ctype_pool_str5[sizeof("s")];
- char uniname2ctype_pool_str7[sizeof("z")];
- char uniname2ctype_pool_str9[sizeof("zs")];
- char uniname2ctype_pool_str16[sizeof("zzzz")];
- char uniname2ctype_pool_str18[sizeof("cn")];
- char uniname2ctype_pool_str20[sizeof("cs")];
- char uniname2ctype_pool_str24[sizeof("ci")];
- char uniname2ctype_pool_str29[sizeof("c")];
- char uniname2ctype_pool_str30[sizeof("cf")];
- char uniname2ctype_pool_str32[sizeof("sc")];
- char uniname2ctype_pool_str34[sizeof("cans")];
- char uniname2ctype_pool_str35[sizeof("qaai")];
- char uniname2ctype_pool_str38[sizeof("mn")];
- char uniname2ctype_pool_str42[sizeof("ascii")];
- char uniname2ctype_pool_str44[sizeof("cc")];
- char uniname2ctype_pool_str45[sizeof("qaac")];
- char uniname2ctype_pool_str49[sizeof("inavestan")];
- char uniname2ctype_pool_str52[sizeof("inspecials")];
- char uniname2ctype_pool_str62[sizeof("inipaextensions")];
- char uniname2ctype_pool_str64[sizeof("mc")];
- char uniname2ctype_pool_str66[sizeof("insamaritan")];
- char uniname2ctype_pool_str69[sizeof("m")];
- char uniname2ctype_pool_str72[sizeof("sm")];
- char uniname2ctype_pool_str74[sizeof("me")];
- char uniname2ctype_pool_str82[sizeof("inarmenian")];
- char uniname2ctype_pool_str84[sizeof("incuneiform")];
- char uniname2ctype_pool_str86[sizeof("mandaic")];
- char uniname2ctype_pool_str90[sizeof("inancientsymbols")];
- char uniname2ctype_pool_str92[sizeof("incuneiformnumbersandpunctuation")];
- char uniname2ctype_pool_str96[sizeof("inthai")];
- char uniname2ctype_pool_str99[sizeof("inmusicalsymbols")];
- char uniname2ctype_pool_str100[sizeof("inmiscellaneoussymbols")];
- char uniname2ctype_pool_str106[sizeof("incham")];
- char uniname2ctype_pool_str109[sizeof("inmiscellaneoussymbolsandarrows")];
- char uniname2ctype_pool_str113[sizeof("initialpunctuation")];
- char uniname2ctype_pool_str114[sizeof("inmiscellaneoussymbolsandpictographs")];
- char uniname2ctype_pool_str116[sizeof("inthaana")];
- char uniname2ctype_pool_str124[sizeof("taile")];
- char uniname2ctype_pool_str125[sizeof("mtei")];
- char uniname2ctype_pool_str132[sizeof("lc")];
- char uniname2ctype_pool_str133[sizeof("lana")];
- char uniname2ctype_pool_str134[sizeof("inlycian")];
- char uniname2ctype_pool_str135[sizeof("intransportandmapsymbols")];
- char uniname2ctype_pool_str136[sizeof("incontrolpictures")];
- char uniname2ctype_pool_str142[sizeof("sinhala")];
- char uniname2ctype_pool_str151[sizeof("incommonindicnumberforms")];
- char uniname2ctype_pool_str156[sizeof("inmiscellaneousmathematicalsymbolsa")];
- char uniname2ctype_pool_str158[sizeof("sterm")];
- char uniname2ctype_pool_str167[sizeof("inmyanmarextendeda")];
- char uniname2ctype_pool_str172[sizeof("lm")];
- char uniname2ctype_pool_str175[sizeof("taiviet")];
- char uniname2ctype_pool_str179[sizeof("inlinearbideograms")];
- char uniname2ctype_pool_str180[sizeof("intaitham")];
- char uniname2ctype_pool_str184[sizeof("latn")];
- char uniname2ctype_pool_str186[sizeof("latin")];
- char uniname2ctype_pool_str187[sizeof("ital")];
- char uniname2ctype_pool_str189[sizeof("alnum")];
- char uniname2ctype_pool_str199[sizeof("inmalayalam")];
- char uniname2ctype_pool_str201[sizeof("intaile")];
- char uniname2ctype_pool_str202[sizeof("tale")];
- char uniname2ctype_pool_str205[sizeof("l")];
- char uniname2ctype_pool_str207[sizeof("nl")];
- char uniname2ctype_pool_str209[sizeof("zl")];
- char uniname2ctype_pool_str216[sizeof("intamil")];
- char uniname2ctype_pool_str217[sizeof("taml")];
- char uniname2ctype_pool_str218[sizeof("inlatinextendeda")];
- char uniname2ctype_pool_str220[sizeof("inlatinextendedc")];
- char uniname2ctype_pool_str223[sizeof("inrunic")];
- char uniname2ctype_pool_str224[sizeof("incarian")];
- char uniname2ctype_pool_str225[sizeof("insyriac")];
- char uniname2ctype_pool_str227[sizeof("cari")];
- char uniname2ctype_pool_str230[sizeof("inmeeteimayekextensions")];
- char uniname2ctype_pool_str231[sizeof("osma")];
- char uniname2ctype_pool_str232[sizeof("lt")];
- char uniname2ctype_pool_str233[sizeof("miao")];
- char uniname2ctype_pool_str234[sizeof("insharada")];
- char uniname2ctype_pool_str239[sizeof("incyrillic")];
- char uniname2ctype_pool_str240[sizeof("carian")];
- char uniname2ctype_pool_str244[sizeof("armn")];
- char uniname2ctype_pool_str245[sizeof("samr")];
- char uniname2ctype_pool_str247[sizeof("armi")];
- char uniname2ctype_pool_str248[sizeof("inideographicdescriptioncharacters")];
- char uniname2ctype_pool_str252[sizeof("inosmanya")];
- char uniname2ctype_pool_str253[sizeof("armenian")];
- char uniname2ctype_pool_str254[sizeof("inmyanmar")];
- char uniname2ctype_pool_str255[sizeof("samaritan")];
- char uniname2ctype_pool_str256[sizeof("arabic")];
- char uniname2ctype_pool_str259[sizeof("incherokee")];
- char uniname2ctype_pool_str261[sizeof("connectorpunctuation")];
- char uniname2ctype_pool_str263[sizeof("merc")];
- char uniname2ctype_pool_str264[sizeof("inmiscellaneoustechnical")];
- char uniname2ctype_pool_str268[sizeof("inenclosedalphanumerics")];
- char uniname2ctype_pool_str279[sizeof("inemoticons")];
- char uniname2ctype_pool_str281[sizeof("joinc")];
- char uniname2ctype_pool_str288[sizeof("cntrl")];
- char uniname2ctype_pool_str301[sizeof("inenclosedcjklettersandmonths")];
- char uniname2ctype_pool_str303[sizeof("cwcf")];
- char uniname2ctype_pool_str304[sizeof("inruminumeralsymbols")];
- char uniname2ctype_pool_str308[sizeof("ll")];
- char uniname2ctype_pool_str313[sizeof("term")];
- char uniname2ctype_pool_str316[sizeof("inlatinextendedadditional")];
- char uniname2ctype_pool_str320[sizeof("tamil")];
- char uniname2ctype_pool_str321[sizeof("loe")];
- char uniname2ctype_pool_str329[sizeof("newtailue")];
- char uniname2ctype_pool_str330[sizeof("cwcm")];
- char uniname2ctype_pool_str339[sizeof("inenclosedalphanumericsupplement")];
- char uniname2ctype_pool_str346[sizeof("sinh")];
- char uniname2ctype_pool_str347[sizeof("zinh")];
- char uniname2ctype_pool_str349[sizeof("meroiticcursive")];
- char uniname2ctype_pool_str353[sizeof("han")];
- char uniname2ctype_pool_str357[sizeof("hani")];
- char uniname2ctype_pool_str358[sizeof("inopticalcharacterrecognition")];
- char uniname2ctype_pool_str359[sizeof("no")];
- char uniname2ctype_pool_str360[sizeof("so")];
- char uniname2ctype_pool_str364[sizeof("innewtailue")];
- char uniname2ctype_pool_str365[sizeof("insinhala")];
- char uniname2ctype_pool_str367[sizeof("innko")];
- char uniname2ctype_pool_str372[sizeof("co")];
- char uniname2ctype_pool_str375[sizeof("shavian")];
- char uniname2ctype_pool_str378[sizeof("terminalpunctuation")];
- char uniname2ctype_pool_str386[sizeof("intaixuanjingsymbols")];
- char uniname2ctype_pool_str387[sizeof("inethiopic")];
- char uniname2ctype_pool_str389[sizeof("sora")];
- char uniname2ctype_pool_str398[sizeof("inarrows")];
- char uniname2ctype_pool_str400[sizeof("cham")];
- char uniname2ctype_pool_str403[sizeof("inlowsurrogates")];
- char uniname2ctype_pool_str405[sizeof("oriya")];
- char uniname2ctype_pool_str406[sizeof("ext")];
- char uniname2ctype_pool_str409[sizeof("cwt")];
- char uniname2ctype_pool_str412[sizeof("common")];
- char uniname2ctype_pool_str414[sizeof("inmiao")];
- char uniname2ctype_pool_str420[sizeof("thai")];
- char uniname2ctype_pool_str425[sizeof("intifinagh")];
- char uniname2ctype_pool_str426[sizeof("ethi")];
- char uniname2ctype_pool_str427[sizeof("mero")];
- char uniname2ctype_pool_str428[sizeof("chakma")];
- char uniname2ctype_pool_str429[sizeof("thaa")];
- char uniname2ctype_pool_str430[sizeof("inscriptionalparthian")];
- char uniname2ctype_pool_str432[sizeof("tifinagh")];
- char uniname2ctype_pool_str436[sizeof("titlecaseletter")];
- char uniname2ctype_pool_str445[sizeof("thaana")];
- char uniname2ctype_pool_str449[sizeof("asciihexdigit")];
- char uniname2ctype_pool_str450[sizeof("math")];
- char uniname2ctype_pool_str453[sizeof("di")];
- char uniname2ctype_pool_str454[sizeof("ids")];
- char uniname2ctype_pool_str460[sizeof("lo")];
- char uniname2ctype_pool_str468[sizeof("inlao")];
- char uniname2ctype_pool_str470[sizeof("taitham")];
- char uniname2ctype_pool_str474[sizeof("lao")];
- char uniname2ctype_pool_str475[sizeof("laoo")];
- char uniname2ctype_pool_str476[sizeof("dia")];
- char uniname2ctype_pool_str478[sizeof("idc")];
- char uniname2ctype_pool_str480[sizeof("ps")];
- char uniname2ctype_pool_str481[sizeof("insundanese")];
- char uniname2ctype_pool_str484[sizeof("pi")];
- char uniname2ctype_pool_str485[sizeof("cwl")];
- char uniname2ctype_pool_str490[sizeof("pf")];
- char uniname2ctype_pool_str495[sizeof("mand")];
- char uniname2ctype_pool_str496[sizeof("insylotinagri")];
- char uniname2ctype_pool_str497[sizeof("vs")];
- char uniname2ctype_pool_str503[sizeof("mongolian")];
- char uniname2ctype_pool_str504[sizeof("pc")];
- char uniname2ctype_pool_str506[sizeof("inmandaic")];
- char uniname2ctype_pool_str509[sizeof("invai")];
- char uniname2ctype_pool_str511[sizeof("lineseparator")];
- char uniname2ctype_pool_str514[sizeof("pe")];
- char uniname2ctype_pool_str515[sizeof("vai")];
- char uniname2ctype_pool_str516[sizeof("vaii")];
- char uniname2ctype_pool_str517[sizeof("idst")];
- char uniname2ctype_pool_str520[sizeof("indominotiles")];
- char uniname2ctype_pool_str521[sizeof("inshavian")];
- char uniname2ctype_pool_str522[sizeof("inspacingmodifierletters")];
- char uniname2ctype_pool_str524[sizeof("format")];
- char uniname2ctype_pool_str528[sizeof("inphaistosdisc")];
- char uniname2ctype_pool_str531[sizeof("hano")];
- char uniname2ctype_pool_str532[sizeof("space")];
- char uniname2ctype_pool_str542[sizeof("indeseret")];
- char uniname2ctype_pool_str545[sizeof("inolchiki")];
- char uniname2ctype_pool_str548[sizeof("hira")];
- char uniname2ctype_pool_str553[sizeof("joincontrol")];
- char uniname2ctype_pool_str555[sizeof("idcontinue")];
- char uniname2ctype_pool_str558[sizeof("inmahjongtiles")];
- char uniname2ctype_pool_str560[sizeof("patws")];
- char uniname2ctype_pool_str563[sizeof("inlydian")];
- char uniname2ctype_pool_str564[sizeof("cher")];
- char uniname2ctype_pool_str568[sizeof("inhiragana")];
- char uniname2ctype_pool_str572[sizeof("inogham")];
- char uniname2ctype_pool_str574[sizeof("avst")];
- char uniname2ctype_pool_str575[sizeof("inscriptionalpahlavi")];
- char uniname2ctype_pool_str579[sizeof("incoptic")];
- char uniname2ctype_pool_str587[sizeof("java")];
- char uniname2ctype_pool_str589[sizeof("inmathematicalalphanumericsymbols")];
- char uniname2ctype_pool_str594[sizeof("letter")];
- char uniname2ctype_pool_str604[sizeof("injavanese")];
- char uniname2ctype_pool_str608[sizeof("avestan")];
- char uniname2ctype_pool_str612[sizeof("age=1.1")];
- char uniname2ctype_pool_str613[sizeof("lepc")];
- char uniname2ctype_pool_str614[sizeof("age=2.1")];
- char uniname2ctype_pool_str616[sizeof("inlepcha")];
- char uniname2ctype_pool_str617[sizeof("javanese")];
- char uniname2ctype_pool_str618[sizeof("shaw")];
- char uniname2ctype_pool_str619[sizeof("finalpunctuation")];
- char uniname2ctype_pool_str620[sizeof("alpha")];
- char uniname2ctype_pool_str621[sizeof("age=5.1")];
- char uniname2ctype_pool_str622[sizeof("inmongolian")];
- char uniname2ctype_pool_str623[sizeof("age=5.2")];
- char uniname2ctype_pool_str626[sizeof("age=2.0")];
- char uniname2ctype_pool_str627[sizeof("ahex")];
- char uniname2ctype_pool_str630[sizeof("ingeneralpunctuation")];
- char uniname2ctype_pool_str631[sizeof("oids")];
- char uniname2ctype_pool_str632[sizeof("odi")];
- char uniname2ctype_pool_str633[sizeof("age=5.0")];
- char uniname2ctype_pool_str636[sizeof("tavt")];
- char uniname2ctype_pool_str637[sizeof("intaiviet")];
- char uniname2ctype_pool_str638[sizeof("age=6.1")];
- char uniname2ctype_pool_str639[sizeof("age=3.1")];
- char uniname2ctype_pool_str640[sizeof("insundanesesupplement")];
- char uniname2ctype_pool_str641[sizeof("age=3.2")];
- char uniname2ctype_pool_str642[sizeof("age=4.1")];
- char uniname2ctype_pool_str643[sizeof("oidc")];
- char uniname2ctype_pool_str646[sizeof("tfng")];
- char uniname2ctype_pool_str647[sizeof("insmallformvariants")];
- char uniname2ctype_pool_str648[sizeof("ideo")];
- char uniname2ctype_pool_str649[sizeof("intags")];
- char uniname2ctype_pool_str650[sizeof("age=6.0")];
- char uniname2ctype_pool_str651[sizeof("age=3.0")];
- char uniname2ctype_pool_str653[sizeof("whitespace")];
- char uniname2ctype_pool_str654[sizeof("age=4.0")];
- char uniname2ctype_pool_str655[sizeof("inolditalic")];
- char uniname2ctype_pool_str660[sizeof("oalpha")];
- char uniname2ctype_pool_str668[sizeof("ingujarati")];
- char uniname2ctype_pool_str672[sizeof("control")];
- char uniname2ctype_pool_str679[sizeof("diacritic")];
- char uniname2ctype_pool_str682[sizeof("tagbanwa")];
- char uniname2ctype_pool_str690[sizeof("inphoenician")];
- char uniname2ctype_pool_str701[sizeof("ininscriptionalparthian")];
- char uniname2ctype_pool_str703[sizeof("ininscriptionalpahlavi")];
- char uniname2ctype_pool_str704[sizeof("coptic")];
- char uniname2ctype_pool_str705[sizeof("dsrt")];
- char uniname2ctype_pool_str706[sizeof("inmodifiertoneletters")];
- char uniname2ctype_pool_str709[sizeof("xids")];
- char uniname2ctype_pool_str713[sizeof("hanunoo")];
- char uniname2ctype_pool_str715[sizeof("inoldturkic")];
- char uniname2ctype_pool_str721[sizeof("xidc")];
- char uniname2ctype_pool_str725[sizeof("idstart")];
- char uniname2ctype_pool_str729[sizeof("inimperialaramaic")];
- char uniname2ctype_pool_str730[sizeof("invariationselectors")];
- char uniname2ctype_pool_str734[sizeof("copt")];
- char uniname2ctype_pool_str737[sizeof("caseignorable")];
- char uniname2ctype_pool_str738[sizeof("prti")];
- char uniname2ctype_pool_str739[sizeof("nchar")];
- char uniname2ctype_pool_str746[sizeof("deseret")];
- char uniname2ctype_pool_str747[sizeof("decimalnumber")];
- char uniname2ctype_pool_str748[sizeof("cprt")];
- char uniname2ctype_pool_str750[sizeof("inlatin1supplement")];
- char uniname2ctype_pool_str771[sizeof("imperialaramaic")];
- char uniname2ctype_pool_str776[sizeof("privateuse")];
- char uniname2ctype_pool_str777[sizeof("casedletter")];
- char uniname2ctype_pool_str778[sizeof("lowercase")];
- char uniname2ctype_pool_str780[sizeof("spaceseparator")];
- char uniname2ctype_pool_str784[sizeof("radical")];
- char uniname2ctype_pool_str787[sizeof("mong")];
- char uniname2ctype_pool_str788[sizeof("canadianaboriginal")];
- char uniname2ctype_pool_str792[sizeof("letternumber")];
- char uniname2ctype_pool_str796[sizeof("insorasompeng")];
- char uniname2ctype_pool_str797[sizeof("dash")];
- char uniname2ctype_pool_str798[sizeof("wspace")];
- char uniname2ctype_pool_str799[sizeof("ogam")];
- char uniname2ctype_pool_str802[sizeof("invariationselectorssupplement")];
- char uniname2ctype_pool_str803[sizeof("print")];
- char uniname2ctype_pool_str811[sizeof("otheridcontinue")];
- char uniname2ctype_pool_str815[sizeof("ingurmukhi")];
- char uniname2ctype_pool_str818[sizeof("closepunctuation")];
- char uniname2ctype_pool_str823[sizeof("olditalic")];
- char uniname2ctype_pool_str824[sizeof("noncharactercodepoint")];
- char uniname2ctype_pool_str826[sizeof("sharada")];
- char uniname2ctype_pool_str827[sizeof("ingeometricshapes")];
- char uniname2ctype_pool_str830[sizeof("otheralphabetic")];
- char uniname2ctype_pool_str831[sizeof("patternwhitespace")];
- char uniname2ctype_pool_str832[sizeof("po")];
- char uniname2ctype_pool_str833[sizeof("rjng")];
- char uniname2ctype_pool_str835[sizeof("ingreekandcoptic")];
- char uniname2ctype_pool_str841[sizeof("xdigit")];
- char uniname2ctype_pool_str850[sizeof("gothic")];
- char uniname2ctype_pool_str851[sizeof("inoldsoutharabian")];
- char uniname2ctype_pool_str852[sizeof("xidstart")];
- char uniname2ctype_pool_str854[sizeof("inrejang")];
- char uniname2ctype_pool_str860[sizeof("idsbinaryoperator")];
- char uniname2ctype_pool_str867[sizeof("olower")];
- char uniname2ctype_pool_str869[sizeof("hex")];
- char uniname2ctype_pool_str870[sizeof("inenclosedideographicsupplement")];
- char uniname2ctype_pool_str874[sizeof("inalphabeticpresentationforms")];
- char uniname2ctype_pool_str879[sizeof("inbasiclatin")];
- char uniname2ctype_pool_str884[sizeof("othersymbol")];
- char uniname2ctype_pool_str889[sizeof("nd")];
- char uniname2ctype_pool_str890[sizeof("sd")];
- char uniname2ctype_pool_str900[sizeof("omath")];
- char uniname2ctype_pool_str901[sizeof("separator")];
- char uniname2ctype_pool_str907[sizeof("inarabic")];
- char uniname2ctype_pool_str912[sizeof("xidcontinue")];
- char uniname2ctype_pool_str913[sizeof("otheridstart")];
- char uniname2ctype_pool_str914[sizeof("grext")];
- char uniname2ctype_pool_str917[sizeof("otherlowercase")];
- char uniname2ctype_pool_str919[sizeof("phli")];
- char uniname2ctype_pool_str920[sizeof("cased")];
- char uniname2ctype_pool_str923[sizeof("hang")];
- char uniname2ctype_pool_str931[sizeof("xpeo")];
- char uniname2ctype_pool_str933[sizeof("lower")];
- char uniname2ctype_pool_str936[sizeof("modifierletter")];
- char uniname2ctype_pool_str938[sizeof("inphoneticextensions")];
- char uniname2ctype_pool_str939[sizeof("inarabicpresentationformsa")];
- char uniname2ctype_pool_str943[sizeof("innumberforms")];
- char uniname2ctype_pool_str945[sizeof("oldpersian")];
- char uniname2ctype_pool_str946[sizeof("incyrillicextendeda")];
- char uniname2ctype_pool_str947[sizeof("inverticalforms")];
- char uniname2ctype_pool_str949[sizeof("p")];
- char uniname2ctype_pool_str950[sizeof("inbyzantinemusicalsymbols")];
- char uniname2ctype_pool_str951[sizeof("inmathematicaloperators")];
- char uniname2ctype_pool_str952[sizeof("intibetan")];
- char uniname2ctype_pool_str953[sizeof("zp")];
- char uniname2ctype_pool_str956[sizeof("ingeorgian")];
- char uniname2ctype_pool_str960[sizeof("inbraillepatterns")];
- char uniname2ctype_pool_str962[sizeof("lepcha")];
- char uniname2ctype_pool_str963[sizeof("geor")];
- char uniname2ctype_pool_str964[sizeof("invedicextensions")];
- char uniname2ctype_pool_str965[sizeof("linb")];
- char uniname2ctype_pool_str966[sizeof("other")];
- char uniname2ctype_pool_str970[sizeof("deva")];
- char uniname2ctype_pool_str972[sizeof("indevanagari")];
- char uniname2ctype_pool_str973[sizeof("othernumber")];
- char uniname2ctype_pool_str974[sizeof("bamum")];
- char uniname2ctype_pool_str976[sizeof("shrd")];
- char uniname2ctype_pool_str977[sizeof("bali")];
- char uniname2ctype_pool_str981[sizeof("devanagari")];
- char uniname2ctype_pool_str983[sizeof("extender")];
- char uniname2ctype_pool_str988[sizeof("inherited")];
- char uniname2ctype_pool_str989[sizeof("glagolitic")];
- char uniname2ctype_pool_str990[sizeof("tibt")];
- char uniname2ctype_pool_str994[sizeof("inbalinese")];
- char uniname2ctype_pool_str996[sizeof("ingothic")];
- char uniname2ctype_pool_str997[sizeof("inmiscellaneousmathematicalsymbolsb")];
- char uniname2ctype_pool_str998[sizeof("limb")];
- char uniname2ctype_pool_str1000[sizeof("bengali")];
- char uniname2ctype_pool_str1003[sizeof("phoenician")];
- char uniname2ctype_pool_str1004[sizeof("insuperscriptsandsubscripts")];
- char uniname2ctype_pool_str1006[sizeof("inmeroitichieroglyphs")];
- char uniname2ctype_pool_str1007[sizeof("tibetan")];
- char uniname2ctype_pool_str1010[sizeof("inphoneticextensionssupplement")];
- char uniname2ctype_pool_str1016[sizeof("balinese")];
- char uniname2ctype_pool_str1021[sizeof("lowercaseletter")];
- char uniname2ctype_pool_str1031[sizeof("indingbats")];
- char uniname2ctype_pool_str1035[sizeof("inprivateusearea")];
- char uniname2ctype_pool_str1039[sizeof("assigned")];
- char uniname2ctype_pool_str1044[sizeof("patternsyntax")];
- char uniname2ctype_pool_str1051[sizeof("inhangulsyllables")];
- char uniname2ctype_pool_str1065[sizeof("sarb")];
- char uniname2ctype_pool_str1067[sizeof("brai")];
- char uniname2ctype_pool_str1069[sizeof("insupplementalmathematicaloperators")];
- char uniname2ctype_pool_str1070[sizeof("phnx")];
- char uniname2ctype_pool_str1072[sizeof("ingreekextended")];
- char uniname2ctype_pool_str1074[sizeof("otherletter")];
- char uniname2ctype_pool_str1076[sizeof("arab")];
- char uniname2ctype_pool_str1078[sizeof("inlatinextendedd")];
- char uniname2ctype_pool_str1081[sizeof("word")];
- char uniname2ctype_pool_str1084[sizeof("inphagspa")];
- char uniname2ctype_pool_str1087[sizeof("inblockelements")];
- char uniname2ctype_pool_str1092[sizeof("ethiopic")];
- char uniname2ctype_pool_str1094[sizeof("inethiopicextendeda")];
- char uniname2ctype_pool_str1107[sizeof("brahmi")];
- char uniname2ctype_pool_str1110[sizeof("logicalorderexception")];
- char uniname2ctype_pool_str1114[sizeof("inoldpersian")];
- char uniname2ctype_pool_str1129[sizeof("inletterlikesymbols")];
- char uniname2ctype_pool_str1133[sizeof("sorasompeng")];
- char uniname2ctype_pool_str1135[sizeof("hiragana")];
- char uniname2ctype_pool_str1142[sizeof("inhanguljamoextendeda")];
- char uniname2ctype_pool_str1147[sizeof("othermath")];
- char uniname2ctype_pool_str1150[sizeof("digit")];
- char uniname2ctype_pool_str1151[sizeof("goth")];
- char uniname2ctype_pool_str1156[sizeof("ogham")];
- char uniname2ctype_pool_str1162[sizeof("sundanese")];
- char uniname2ctype_pool_str1170[sizeof("saurashtra")];
- char uniname2ctype_pool_str1173[sizeof("linearb")];
- char uniname2ctype_pool_str1179[sizeof("graphemebase")];
- char uniname2ctype_pool_str1185[sizeof("inunifiedcanadianaboriginalsyllabics")];
- char uniname2ctype_pool_str1186[sizeof("cuneiform")];
- char uniname2ctype_pool_str1188[sizeof("inkannada")];
- char uniname2ctype_pool_str1190[sizeof("kana")];
- char uniname2ctype_pool_str1195[sizeof("inancientgreeknumbers")];
- char uniname2ctype_pool_str1196[sizeof("incjkstrokes")];
- char uniname2ctype_pool_str1198[sizeof("inglagolitic")];
- char uniname2ctype_pool_str1202[sizeof("inancientgreekmusicalnotation")];
- char uniname2ctype_pool_str1212[sizeof("inchakma")];
- char uniname2ctype_pool_str1215[sizeof("plrd")];
- char uniname2ctype_pool_str1219[sizeof("inbrahmi")];
- char uniname2ctype_pool_str1224[sizeof("cakm")];
- char uniname2ctype_pool_str1225[sizeof("incjkcompatibilityforms")];
- char uniname2ctype_pool_str1229[sizeof("lisu")];
- char uniname2ctype_pool_str1230[sizeof("incjkcompatibilityideographs")];
- char uniname2ctype_pool_str1231[sizeof("intagalog")];
- char uniname2ctype_pool_str1244[sizeof("inkaithi")];
- char uniname2ctype_pool_str1245[sizeof("insupplementalarrowsa")];
- char uniname2ctype_pool_str1249[sizeof("takri")];
- char uniname2ctype_pool_str1253[sizeof("ideographic")];
- char uniname2ctype_pool_str1256[sizeof("hexdigit")];
- char uniname2ctype_pool_str1259[sizeof("glag")];
- char uniname2ctype_pool_str1261[sizeof("softdotted")];
- char uniname2ctype_pool_str1262[sizeof("variationselector")];
- char uniname2ctype_pool_str1264[sizeof("inkatakana")];
- char uniname2ctype_pool_str1265[sizeof("meeteimayek")];
- char uniname2ctype_pool_str1274[sizeof("otherpunctuation")];
- char uniname2ctype_pool_str1279[sizeof("inhanguljamo")];
- char uniname2ctype_pool_str1282[sizeof("kali")];
- char uniname2ctype_pool_str1289[sizeof("braille")];
- char uniname2ctype_pool_str1298[sizeof("incombininghalfmarks")];
- char uniname2ctype_pool_str1300[sizeof("talu")];
- char uniname2ctype_pool_str1302[sizeof("incjkcompatibilityideographssupplement")];
- char uniname2ctype_pool_str1306[sizeof("telu")];
- char uniname2ctype_pool_str1307[sizeof("idsb")];
- char uniname2ctype_pool_str1310[sizeof("tglg")];
- char uniname2ctype_pool_str1313[sizeof("inmeeteimayek")];
- char uniname2ctype_pool_str1315[sizeof("yi")];
- char uniname2ctype_pool_str1318[sizeof("phagspa")];
- char uniname2ctype_pool_str1321[sizeof("yiii")];
- char uniname2ctype_pool_str1323[sizeof("inarabicmathematicalalphabeticsymbols")];
- char uniname2ctype_pool_str1328[sizeof("saur")];
- char uniname2ctype_pool_str1330[sizeof("ogrext")];
- char uniname2ctype_pool_str1334[sizeof("bidic")];
- char uniname2ctype_pool_str1341[sizeof("inkanasupplement")];
- char uniname2ctype_pool_str1343[sizeof("runic")];
- char uniname2ctype_pool_str1344[sizeof("inalchemicalsymbols")];
- char uniname2ctype_pool_str1350[sizeof("georgian")];
- char uniname2ctype_pool_str1351[sizeof("inugaritic")];
- char uniname2ctype_pool_str1354[sizeof("insaurashtra")];
- char uniname2ctype_pool_str1356[sizeof("inhighprivateusesurrogates")];
- char uniname2ctype_pool_str1362[sizeof("pd")];
- char uniname2ctype_pool_str1372[sizeof("incountingrodnumerals")];
- char uniname2ctype_pool_str1377[sizeof("inarabicextendeda")];
- char uniname2ctype_pool_str1389[sizeof("inkharoshthi")];
- char uniname2ctype_pool_str1393[sizeof("idstrinaryoperator")];
- char uniname2ctype_pool_str1396[sizeof("phag")];
- char uniname2ctype_pool_str1398[sizeof("brah")];
- char uniname2ctype_pool_str1402[sizeof("mark")];
- char uniname2ctype_pool_str1404[sizeof("hebr")];
- char uniname2ctype_pool_str1411[sizeof("inkhmersymbols")];
- char uniname2ctype_pool_str1413[sizeof("dep")];
- char uniname2ctype_pool_str1416[sizeof("inkhmer")];
- char uniname2ctype_pool_str1422[sizeof("deprecated")];
- char uniname2ctype_pool_str1424[sizeof("rejang")];
- char uniname2ctype_pool_str1429[sizeof("lyci")];
- char uniname2ctype_pool_str1431[sizeof("intakri")];
- char uniname2ctype_pool_str1432[sizeof("takr")];
- char uniname2ctype_pool_str1435[sizeof("incyrillicsupplement")];
- char uniname2ctype_pool_str1436[sizeof("changeswhencasefolded")];
- char uniname2ctype_pool_str1438[sizeof("indevanagariextended")];
- char uniname2ctype_pool_str1442[sizeof("lycian")];
- char uniname2ctype_pool_str1443[sizeof("inbengali")];
- char uniname2ctype_pool_str1448[sizeof("beng")];
- char uniname2ctype_pool_str1450[sizeof("graph")];
- char uniname2ctype_pool_str1452[sizeof("inyijinghexagramsymbols")];
- char uniname2ctype_pool_str1457[sizeof("olck")];
- char uniname2ctype_pool_str1460[sizeof("inarabicsupplement")];
- char uniname2ctype_pool_str1462[sizeof("inbuginese")];
- char uniname2ctype_pool_str1463[sizeof("changeswhencasemapped")];
- char uniname2ctype_pool_str1468[sizeof("olchiki")];
- char uniname2ctype_pool_str1478[sizeof("inaegeannumbers")];
- char uniname2ctype_pool_str1479[sizeof("mlym")];
- char uniname2ctype_pool_str1480[sizeof("alphabetic")];
- char uniname2ctype_pool_str1492[sizeof("sylotinagri")];
- char uniname2ctype_pool_str1498[sizeof("changeswhentitlecased")];
- char uniname2ctype_pool_str1504[sizeof("tagalog")];
- char uniname2ctype_pool_str1505[sizeof("tagb")];
- char uniname2ctype_pool_str1506[sizeof("runr")];
- char uniname2ctype_pool_str1510[sizeof("malayalam")];
- char uniname2ctype_pool_str1512[sizeof("inoriya")];
- char uniname2ctype_pool_str1516[sizeof("intagbanwa")];
- char uniname2ctype_pool_str1517[sizeof("syrc")];
- char uniname2ctype_pool_str1519[sizeof("nko")];
- char uniname2ctype_pool_str1520[sizeof("nkoo")];
- char uniname2ctype_pool_str1523[sizeof("inethiopicextended")];
- char uniname2ctype_pool_str1525[sizeof("kaithi")];
- char uniname2ctype_pool_str1530[sizeof("mathsymbol")];
- char uniname2ctype_pool_str1531[sizeof("inyiradicals")];
- char uniname2ctype_pool_str1536[sizeof("insupplementaryprivateuseareaa")];
- char uniname2ctype_pool_str1540[sizeof("osmanya")];
- char uniname2ctype_pool_str1546[sizeof("syriac")];
- char uniname2ctype_pool_str1548[sizeof("otherdefaultignorablecodepoint")];
- char uniname2ctype_pool_str1561[sizeof("number")];
- char uniname2ctype_pool_str1565[sizeof("inlinearbsyllabary")];
- char uniname2ctype_pool_str1566[sizeof("kthi")];
- char uniname2ctype_pool_str1567[sizeof("sund")];
- char uniname2ctype_pool_str1569[sizeof("mymr")];
- char uniname2ctype_pool_str1571[sizeof("incombiningdiacriticalmarks")];
- char uniname2ctype_pool_str1578[sizeof("enclosingmark")];
- char uniname2ctype_pool_str1581[sizeof("incombiningdiacriticalmarksforsymbols")];
- char uniname2ctype_pool_str1583[sizeof("inethiopicsupplement")];
- char uniname2ctype_pool_str1590[sizeof("unassigned")];
- char uniname2ctype_pool_str1591[sizeof("sylo")];
- char uniname2ctype_pool_str1595[sizeof("combiningmark")];
- char uniname2ctype_pool_str1598[sizeof("myanmar")];
- char uniname2ctype_pool_str1605[sizeof("graphemeextend")];
- char uniname2ctype_pool_str1606[sizeof("bidicontrol")];
- char uniname2ctype_pool_str1609[sizeof("inhalfwidthandfullwidthforms")];
- char uniname2ctype_pool_str1617[sizeof("cyrl")];
- char uniname2ctype_pool_str1620[sizeof("knda")];
- char uniname2ctype_pool_str1634[sizeof("inunifiedcanadianaboriginalsyllabicsextended")];
- char uniname2ctype_pool_str1635[sizeof("xsux")];
- char uniname2ctype_pool_str1636[sizeof("modifiersymbol")];
- char uniname2ctype_pool_str1643[sizeof("incombiningdiacriticalmarkssupplement")];
- char uniname2ctype_pool_str1645[sizeof("inhanunoo")];
- char uniname2ctype_pool_str1648[sizeof("inbuhid")];
- char uniname2ctype_pool_str1649[sizeof("kannada")];
- char uniname2ctype_pool_str1658[sizeof("inhebrew")];
- char uniname2ctype_pool_str1662[sizeof("grbase")];
- char uniname2ctype_pool_str1664[sizeof("spacingmark")];
- char uniname2ctype_pool_str1670[sizeof("inkatakanaphoneticextensions")];
- char uniname2ctype_pool_str1676[sizeof("hangul")];
- char uniname2ctype_pool_str1683[sizeof("incjksymbolsandpunctuation")];
- char uniname2ctype_pool_str1688[sizeof("bopo")];
- char uniname2ctype_pool_str1692[sizeof("orya")];
- char uniname2ctype_pool_str1699[sizeof("inbopomofo")];
- char uniname2ctype_pool_str1701[sizeof("kharoshthi")];
- char uniname2ctype_pool_str1703[sizeof("khar")];
- char uniname2ctype_pool_str1709[sizeof("changeswhenlowercased")];
- char uniname2ctype_pool_str1724[sizeof("khmr")];
- char uniname2ctype_pool_str1725[sizeof("punct")];
- char uniname2ctype_pool_str1729[sizeof("symbol")];
- char uniname2ctype_pool_str1732[sizeof("cherokee")];
- char uniname2ctype_pool_str1737[sizeof("cyrillic")];
- char uniname2ctype_pool_str1759[sizeof("inkangxiradicals")];
- char uniname2ctype_pool_str1761[sizeof("hebrew")];
- char uniname2ctype_pool_str1780[sizeof("inarabicpresentationformsb")];
- char uniname2ctype_pool_str1787[sizeof("incyrillicextendedb")];
- char uniname2ctype_pool_str1790[sizeof("ugaritic")];
- char uniname2ctype_pool_str1829[sizeof("incurrencysymbols")];
- char uniname2ctype_pool_str1831[sizeof("meroitichieroglyphs")];
- char uniname2ctype_pool_str1835[sizeof("inhighsurrogates")];
- char uniname2ctype_pool_str1853[sizeof("nonspacingmark")];
- char uniname2ctype_pool_str1858[sizeof("lydi")];
- char uniname2ctype_pool_str1864[sizeof("patsyn")];
- char uniname2ctype_pool_str1868[sizeof("orkh")];
- char uniname2ctype_pool_str1871[sizeof("lydian")];
- char uniname2ctype_pool_str1896[sizeof("ugar")];
- char uniname2ctype_pool_str1899[sizeof("othergraphemeextend")];
- char uniname2ctype_pool_str1900[sizeof("inlatinextendedb")];
- char uniname2ctype_pool_str1904[sizeof("bopomofo")];
- char uniname2ctype_pool_str1917[sizeof("khmer")];
- char uniname2ctype_pool_str1925[sizeof("uideo")];
- char uniname2ctype_pool_str1932[sizeof("otheruppercase")];
- char uniname2ctype_pool_str1944[sizeof("grek")];
- char uniname2ctype_pool_str1949[sizeof("gujr")];
- char uniname2ctype_pool_str1970[sizeof("gujarati")];
- char uniname2ctype_pool_str1983[sizeof("inhanguljamoextendedb")];
- char uniname2ctype_pool_str1988[sizeof("defaultignorablecodepoint")];
- char uniname2ctype_pool_str2005[sizeof("inplayingcards")];
- char uniname2ctype_pool_str2022[sizeof("bamu")];
- char uniname2ctype_pool_str2028[sizeof("inkanbun")];
- char uniname2ctype_pool_str2033[sizeof("incjkradicalssupplement")];
- char uniname2ctype_pool_str2046[sizeof("cypriot")];
- char uniname2ctype_pool_str2051[sizeof("inbamum")];
- char uniname2ctype_pool_str2053[sizeof("inmeroiticcursive")];
- char uniname2ctype_pool_str2055[sizeof("oldturkic")];
- char uniname2ctype_pool_str2086[sizeof("insupplementalarrowsb")];
- char uniname2ctype_pool_str2087[sizeof("surrogate")];
- char uniname2ctype_pool_str2094[sizeof("batk")];
- char uniname2ctype_pool_str2102[sizeof("inbatak")];
- char uniname2ctype_pool_str2119[sizeof("inlimbu")];
- char uniname2ctype_pool_str2123[sizeof("incypriotsyllabary")];
- char uniname2ctype_pool_str2129[sizeof("dashpunctuation")];
- char uniname2ctype_pool_str2130[sizeof("innoblock")];
- char uniname2ctype_pool_str2141[sizeof("hyphen")];
- char uniname2ctype_pool_str2162[sizeof("insupplementalpunctuation")];
- char uniname2ctype_pool_str2165[sizeof("ingeorgiansupplement")];
- char uniname2ctype_pool_str2178[sizeof("oupper")];
- char uniname2ctype_pool_str2189[sizeof("paragraphseparator")];
- char uniname2ctype_pool_str2194[sizeof("inbamumsupplement")];
- char uniname2ctype_pool_str2299[sizeof("uppercase")];
- char uniname2ctype_pool_str2313[sizeof("currencysymbol")];
- char uniname2ctype_pool_str2322[sizeof("sk")];
- char uniname2ctype_pool_str2338[sizeof("lu")];
- char uniname2ctype_pool_str2342[sizeof("openpunctuation")];
- char uniname2ctype_pool_str2349[sizeof("inlisu")];
- char uniname2ctype_pool_str2371[sizeof("qmark")];
- char uniname2ctype_pool_str2372[sizeof("egyp")];
- char uniname2ctype_pool_str2377[sizeof("insupplementaryprivateuseareab")];
- char uniname2ctype_pool_str2379[sizeof("limbu")];
- char uniname2ctype_pool_str2400[sizeof("inegyptianhieroglyphs")];
- char uniname2ctype_pool_str2401[sizeof("unifiedideograph")];
- char uniname2ctype_pool_str2413[sizeof("intelugu")];
- char uniname2ctype_pool_str2429[sizeof("katakana")];
- char uniname2ctype_pool_str2442[sizeof("inhangulcompatibilityjamo")];
- char uniname2ctype_pool_str2454[sizeof("upper")];
- char uniname2ctype_pool_str2495[sizeof("inkayahli")];
- char uniname2ctype_pool_str2515[sizeof("cwu")];
- char uniname2ctype_pool_str2523[sizeof("incjkcompatibility")];
- char uniname2ctype_pool_str2542[sizeof("uppercaseletter")];
- char uniname2ctype_pool_str2549[sizeof("bugi")];
- char uniname2ctype_pool_str2588[sizeof("buginese")];
- char uniname2ctype_pool_str2627[sizeof("any")];
- char uniname2ctype_pool_str2651[sizeof("inyisyllables")];
- char uniname2ctype_pool_str2671[sizeof("inbopomofoextended")];
- char uniname2ctype_pool_str2710[sizeof("inboxdrawing")];
- char uniname2ctype_pool_str2724[sizeof("changeswhenuppercased")];
- char uniname2ctype_pool_str2727[sizeof("unknown")];
- char uniname2ctype_pool_str2737[sizeof("quotationmark")];
- char uniname2ctype_pool_str2753[sizeof("buhd")];
- char uniname2ctype_pool_str2785[sizeof("punctuation")];
- char uniname2ctype_pool_str2888[sizeof("oldsoutharabian")];
- char uniname2ctype_pool_str2925[sizeof("kayahli")];
- char uniname2ctype_pool_str2940[sizeof("incjkunifiedideographs")];
- char uniname2ctype_pool_str2961[sizeof("incjkunifiedideographsextensiona")];
- char uniname2ctype_pool_str2962[sizeof("incjkunifiedideographsextensionc")];
- char uniname2ctype_pool_str2995[sizeof("telugu")];
- char uniname2ctype_pool_str3000[sizeof("guru")];
- char uniname2ctype_pool_str3104[sizeof("greek")];
- char uniname2ctype_pool_str3189[sizeof("grlink")];
- char uniname2ctype_pool_str3197[sizeof("buhid")];
- char uniname2ctype_pool_str3254[sizeof("batak")];
- char uniname2ctype_pool_str3292[sizeof("blank")];
- char uniname2ctype_pool_str3391[sizeof("incjkunifiedideographsextensiond")];
- char uniname2ctype_pool_str3459[sizeof("graphemelink")];
- char uniname2ctype_pool_str3480[sizeof("egyptianhieroglyphs")];
- char uniname2ctype_pool_str3802[sizeof("incjkunifiedideographsextensionb")];
- char uniname2ctype_pool_str3922[sizeof("zyyy")];
- char uniname2ctype_pool_str4167[sizeof("gurmukhi")];
+ char uniname2ctype_pool_str5[sizeof("l")];
+ char uniname2ctype_pool_str7[sizeof("nl")];
+ char uniname2ctype_pool_str8[sizeof("ll")];
+ char uniname2ctype_pool_str10[sizeof("cn")];
+ char uniname2ctype_pool_str11[sizeof("no")];
+ char uniname2ctype_pool_str12[sizeof("lo")];
+ char uniname2ctype_pool_str13[sizeof("c")];
+ char uniname2ctype_pool_str16[sizeof("co")];
+ char uniname2ctype_pool_str20[sizeof("cc")];
+ char uniname2ctype_pool_str21[sizeof("lao")];
+ char uniname2ctype_pool_str22[sizeof("laoo")];
+ char uniname2ctype_pool_str23[sizeof("lana")];
+ char uniname2ctype_pool_str26[sizeof("ci")];
+ char uniname2ctype_pool_str29[sizeof("qaac")];
+ char uniname2ctype_pool_str30[sizeof("vai")];
+ char uniname2ctype_pool_str31[sizeof("vaii")];
+ char uniname2ctype_pool_str32[sizeof("qaai")];
+ char uniname2ctype_pool_str34[sizeof("control")];
+ char uniname2ctype_pool_str37[sizeof("cari")];
+ char uniname2ctype_pool_str40[sizeof("carian")];
+ char uniname2ctype_pool_str42[sizeof("zl")];
+ char uniname2ctype_pool_str44[sizeof("oriya")];
+ char uniname2ctype_pool_str46[sizeof("latn")];
+ char uniname2ctype_pool_str47[sizeof("cntrl")];
+ char uniname2ctype_pool_str48[sizeof("latin")];
+ char uniname2ctype_pool_str51[sizeof("han")];
+ char uniname2ctype_pool_str53[sizeof("arabic")];
+ char uniname2ctype_pool_str54[sizeof("ital")];
+ char uniname2ctype_pool_str55[sizeof("hano")];
+ char uniname2ctype_pool_str60[sizeof("hani")];
+ char uniname2ctype_pool_str63[sizeof("hanunoo")];
+ char uniname2ctype_pool_str66[sizeof("lt")];
+ char uniname2ctype_pool_str67[sizeof("so")];
+ char uniname2ctype_pool_str69[sizeof("hira")];
+ char uniname2ctype_pool_str70[sizeof("nchar")];
+ char uniname2ctype_pool_str71[sizeof("sc")];
+ char uniname2ctype_pool_str73[sizeof("z")];
+ char uniname2ctype_pool_str74[sizeof("oalpha")];
+ char uniname2ctype_pool_str75[sizeof("tavt")];
+ char uniname2ctype_pool_str76[sizeof("cans")];
+ char uniname2ctype_pool_str84[sizeof("java")];
+ char uniname2ctype_pool_str88[sizeof("zinh")];
+ char uniname2ctype_pool_str89[sizeof("thaa")];
+ char uniname2ctype_pool_str90[sizeof("thai")];
+ char uniname2ctype_pool_str91[sizeof("variationselector")];
+ char uniname2ctype_pool_str92[sizeof("sinhala")];
+ char uniname2ctype_pool_str93[sizeof("joinc")];
+ char uniname2ctype_pool_str94[sizeof("ascii")];
+ char uniname2ctype_pool_str95[sizeof("initialpunctuation")];
+ char uniname2ctype_pool_str98[sizeof("other")];
+ char uniname2ctype_pool_str99[sizeof("joincontrol")];
+ char uniname2ctype_pool_str100[sizeof("thaana")];
+ char uniname2ctype_pool_str101[sizeof("avst")];
+ char uniname2ctype_pool_str103[sizeof("olower")];
+ char uniname2ctype_pool_str105[sizeof("othernumber")];
+ char uniname2ctype_pool_str106[sizeof("otherletter")];
+ char uniname2ctype_pool_str109[sizeof("sinh")];
+ char uniname2ctype_pool_str112[sizeof("tale")];
+ char uniname2ctype_pool_str114[sizeof("connectorpunctuation")];
+ char uniname2ctype_pool_str115[sizeof("s")];
+ char uniname2ctype_pool_str116[sizeof("di")];
+ char uniname2ctype_pool_str117[sizeof("vs")];
+ char uniname2ctype_pool_str119[sizeof("oidc")];
+ char uniname2ctype_pool_str120[sizeof("idc")];
+ char uniname2ctype_pool_str121[sizeof("odi")];
+ char uniname2ctype_pool_str122[sizeof("cs")];
+ char uniname2ctype_pool_str123[sizeof("avestan")];
+ char uniname2ctype_pool_str124[sizeof("dia")];
+ char uniname2ctype_pool_str125[sizeof("cher")];
+ char uniname2ctype_pool_str126[sizeof("inscriptionalparthian")];
+ char uniname2ctype_pool_str128[sizeof("shavian")];
+ char uniname2ctype_pool_str137[sizeof("radical")];
+ char uniname2ctype_pool_str143[sizeof("loe")];
+ char uniname2ctype_pool_str147[sizeof("diacritic")];
+ char uniname2ctype_pool_str148[sizeof("zzzz")];
+ char uniname2ctype_pool_str149[sizeof("ethi")];
+ char uniname2ctype_pool_str151[sizeof("canadianaboriginal")];
+ char uniname2ctype_pool_str152[sizeof("zs")];
+ char uniname2ctype_pool_str153[sizeof("othersymbol")];
+ char uniname2ctype_pool_str156[sizeof("olditalic")];
+ char uniname2ctype_pool_str161[sizeof("inscriptionalpahlavi")];
+ char uniname2ctype_pool_str162[sizeof("taiviet")];
+ char uniname2ctype_pool_str163[sizeof("lineseparator")];
+ char uniname2ctype_pool_str166[sizeof("otheridstart")];
+ char uniname2ctype_pool_str170[sizeof("oids")];
+ char uniname2ctype_pool_str171[sizeof("asciihexdigit")];
+ char uniname2ctype_pool_str172[sizeof("inherited")];
+ char uniname2ctype_pool_str174[sizeof("otherlowercase")];
+ char uniname2ctype_pool_str175[sizeof("terminalpunctuation")];
+ char uniname2ctype_pool_str176[sizeof("deva")];
+ char uniname2ctype_pool_str179[sizeof("otheralphabetic")];
+ char uniname2ctype_pool_str180[sizeof("ideo")];
+ char uniname2ctype_pool_str181[sizeof("noncharactercodepoint")];
+ char uniname2ctype_pool_str183[sizeof("otheridcontinue")];
+ char uniname2ctype_pool_str187[sizeof("taile")];
+ char uniname2ctype_pool_str190[sizeof("oldpersian")];
+ char uniname2ctype_pool_str192[sizeof("devanagari")];
+ char uniname2ctype_pool_str193[sizeof("letter")];
+ char uniname2ctype_pool_str195[sizeof("nd")];
+ char uniname2ctype_pool_str197[sizeof("idst")];
+ char uniname2ctype_pool_str198[sizeof("dsrt")];
+ char uniname2ctype_pool_str200[sizeof("titlecaseletter")];
+ char uniname2ctype_pool_str202[sizeof("po")];
+ char uniname2ctype_pool_str203[sizeof("dash")];
+ char uniname2ctype_pool_str206[sizeof("pc")];
+ char uniname2ctype_pool_str209[sizeof("letternumber")];
+ char uniname2ctype_pool_str212[sizeof("pi")];
+ char uniname2ctype_pool_str215[sizeof("javanese")];
+ char uniname2ctype_pool_str217[sizeof("mn")];
+ char uniname2ctype_pool_str218[sizeof("idstart")];
+ char uniname2ctype_pool_str220[sizeof("idcontinue")];
+ char uniname2ctype_pool_str222[sizeof("ids")];
+ char uniname2ctype_pool_str223[sizeof("alpha")];
+ char uniname2ctype_pool_str227[sizeof("mc")];
+ char uniname2ctype_pool_str229[sizeof("coptic")];
+ char uniname2ctype_pool_str234[sizeof("mongolian")];
+ char uniname2ctype_pool_str235[sizeof("common")];
+ char uniname2ctype_pool_str236[sizeof("armn")];
+ char uniname2ctype_pool_str237[sizeof("copt")];
+ char uniname2ctype_pool_str243[sizeof("cprt")];
+ char uniname2ctype_pool_str244[sizeof("armi")];
+ char uniname2ctype_pool_str245[sizeof("phli")];
+ char uniname2ctype_pool_str246[sizeof("prti")];
+ char uniname2ctype_pool_str250[sizeof("armenian")];
+ char uniname2ctype_pool_str251[sizeof("sd")];
+ char uniname2ctype_pool_str252[sizeof("mandaic")];
+ char uniname2ctype_pool_str255[sizeof("phoenician")];
+ char uniname2ctype_pool_str258[sizeof("taml")];
+ char uniname2ctype_pool_str261[sizeof("tamil")];
+ char uniname2ctype_pool_str268[sizeof("cased")];
+ char uniname2ctype_pool_str269[sizeof("cham")];
+ char uniname2ctype_pool_str270[sizeof("idsbinaryoperator")];
+ char uniname2ctype_pool_str271[sizeof("lepc")];
+ char uniname2ctype_pool_str275[sizeof("otherdefaultignorablecodepoint")];
+ char uniname2ctype_pool_str278[sizeof("print")];
+ char uniname2ctype_pool_str286[sizeof("osma")];
+ char uniname2ctype_pool_str292[sizeof("samr")];
+ char uniname2ctype_pool_str294[sizeof("math")];
+ char uniname2ctype_pool_str296[sizeof("linb")];
+ char uniname2ctype_pool_str297[sizeof("closepunctuation")];
+ char uniname2ctype_pool_str301[sizeof("otherpunctuation")];
+ char uniname2ctype_pool_str303[sizeof("bali")];
+ char uniname2ctype_pool_str306[sizeof("omath")];
+ char uniname2ctype_pool_str307[sizeof("samaritan")];
+ char uniname2ctype_pool_str308[sizeof("ps")];
+ char uniname2ctype_pool_str310[sizeof("arab")];
+ char uniname2ctype_pool_str311[sizeof("brai")];
+ char uniname2ctype_pool_str314[sizeof("taitham")];
+ char uniname2ctype_pool_str317[sizeof("linearb")];
+ char uniname2ctype_pool_str321[sizeof("lepcha")];
+ char uniname2ctype_pool_str322[sizeof("mand")];
+ char uniname2ctype_pool_str324[sizeof("mtei")];
+ char uniname2ctype_pool_str325[sizeof("term")];
+ char uniname2ctype_pool_str326[sizeof("glagolitic")];
+ char uniname2ctype_pool_str327[sizeof("privateuse")];
+ char uniname2ctype_pool_str328[sizeof("pe")];
+ char uniname2ctype_pool_str335[sizeof("deseret")];
+ char uniname2ctype_pool_str340[sizeof("brah")];
+ char uniname2ctype_pool_str341[sizeof("runr")];
+ char uniname2ctype_pool_str343[sizeof("othermath")];
+ char uniname2ctype_pool_str344[sizeof("runic")];
+ char uniname2ctype_pool_str345[sizeof("hang")];
+ char uniname2ctype_pool_str346[sizeof("ethiopic")];
+ char uniname2ctype_pool_str349[sizeof("me")];
+ char uniname2ctype_pool_str350[sizeof("patws")];
+ char uniname2ctype_pool_str353[sizeof("separator")];
+ char uniname2ctype_pool_str355[sizeof("tibt")];
+ char uniname2ctype_pool_str356[sizeof("gothic")];
+ char uniname2ctype_pool_str358[sizeof("tagbanwa")];
+ char uniname2ctype_pool_str359[sizeof("sarb")];
+ char uniname2ctype_pool_str361[sizeof("talu")];
+ char uniname2ctype_pool_str367[sizeof("tibetan")];
+ char uniname2ctype_pool_str371[sizeof("goth")];
+ char uniname2ctype_pool_str372[sizeof("rjng")];
+ char uniname2ctype_pool_str373[sizeof("hangul")];
+ char uniname2ctype_pool_str374[sizeof("bengali")];
+ char uniname2ctype_pool_str375[sizeof("hiragana")];
+ char uniname2ctype_pool_str376[sizeof("braille")];
+ char uniname2ctype_pool_str379[sizeof("geor")];
+ char uniname2ctype_pool_str380[sizeof("age=1.1")];
+ char uniname2ctype_pool_str381[sizeof("age=2.1")];
+ char uniname2ctype_pool_str382[sizeof("age=5.1")];
+ char uniname2ctype_pool_str383[sizeof("age=5.2")];
+ char uniname2ctype_pool_str384[sizeof("age=4.1")];
+ char uniname2ctype_pool_str385[sizeof("p")];
+ char uniname2ctype_pool_str386[sizeof("pd")];
+ char uniname2ctype_pool_str388[sizeof("lisu")];
+ char uniname2ctype_pool_str389[sizeof("age=2.0")];
+ char uniname2ctype_pool_str390[sizeof("age=5.0")];
+ char uniname2ctype_pool_str391[sizeof("age=6.0")];
+ char uniname2ctype_pool_str392[sizeof("age=4.0")];
+ char uniname2ctype_pool_str393[sizeof("graph")];
+ char uniname2ctype_pool_str395[sizeof("saur")];
+ char uniname2ctype_pool_str396[sizeof("space")];
+ char uniname2ctype_pool_str397[sizeof("age=3.1")];
+ char uniname2ctype_pool_str398[sizeof("age=3.2")];
+ char uniname2ctype_pool_str399[sizeof("hebr")];
+ char uniname2ctype_pool_str402[sizeof("bidic")];
+ char uniname2ctype_pool_str405[sizeof("age=3.0")];
+ char uniname2ctype_pool_str408[sizeof("bidicontrol")];
+ char uniname2ctype_pool_str413[sizeof("logicalorderexception")];
+ char uniname2ctype_pool_str420[sizeof("telu")];
+ char uniname2ctype_pool_str422[sizeof("zp")];
+ char uniname2ctype_pool_str427[sizeof("m")];
+ char uniname2ctype_pool_str430[sizeof("lm")];
+ char uniname2ctype_pool_str432[sizeof("idstrinaryoperator")];
+ char uniname2ctype_pool_str433[sizeof("balinese")];
+ char uniname2ctype_pool_str434[sizeof("uideo")];
+ char uniname2ctype_pool_str436[sizeof("spaceseparator")];
+ char uniname2ctype_pool_str438[sizeof("grext")];
+ char uniname2ctype_pool_str442[sizeof("alnum")];
+ char uniname2ctype_pool_str443[sizeof("oldturkic")];
+ char uniname2ctype_pool_str445[sizeof("xidc")];
+ char uniname2ctype_pool_str446[sizeof("idsb")];
+ char uniname2ctype_pool_str447[sizeof("ahex")];
+ char uniname2ctype_pool_str452[sizeof("format")];
+ char uniname2ctype_pool_str456[sizeof("caseignorable")];
+ char uniname2ctype_pool_str457[sizeof("tifinagh")];
+ char uniname2ctype_pool_str459[sizeof("sundanese")];
+ char uniname2ctype_pool_str462[sizeof("ext")];
+ char uniname2ctype_pool_str464[sizeof("saurashtra")];
+ char uniname2ctype_pool_str465[sizeof("patternwhitespace")];
+ char uniname2ctype_pool_str466[sizeof("digit")];
+ char uniname2ctype_pool_str474[sizeof("sund")];
+ char uniname2ctype_pool_str480[sizeof("decimalnumber")];
+ char uniname2ctype_pool_str484[sizeof("bopo")];
+ char uniname2ctype_pool_str485[sizeof("sm")];
+ char uniname2ctype_pool_str488[sizeof("otheruppercase")];
+ char uniname2ctype_pool_str493[sizeof("ideographic")];
+ char uniname2ctype_pool_str496[sizeof("xids")];
+ char uniname2ctype_pool_str497[sizeof("unassigned")];
+ char uniname2ctype_pool_str502[sizeof("phagspa")];
+ char uniname2ctype_pool_str506[sizeof("alphabetic")];
+ char uniname2ctype_pool_str508[sizeof("limb")];
+ char uniname2ctype_pool_str512[sizeof("xdigit")];
+ char uniname2ctype_pool_str513[sizeof("xidstart")];
+ char uniname2ctype_pool_str516[sizeof("mong")];
+ char uniname2ctype_pool_str518[sizeof("xidcontinue")];
+ char uniname2ctype_pool_str521[sizeof("assigned")];
+ char uniname2ctype_pool_str523[sizeof("ogam")];
+ char uniname2ctype_pool_str529[sizeof("nko")];
+ char uniname2ctype_pool_str530[sizeof("nkoo")];
+ char uniname2ctype_pool_str533[sizeof("olck")];
+ char uniname2ctype_pool_str534[sizeof("deprecated")];
+ char uniname2ctype_pool_str535[sizeof("brahmi")];
+ char uniname2ctype_pool_str536[sizeof("phag")];
+ char uniname2ctype_pool_str538[sizeof("kana")];
+ char uniname2ctype_pool_str540[sizeof("kali")];
+ char uniname2ctype_pool_str542[sizeof("changeswhenlowercased")];
+ char uniname2ctype_pool_str543[sizeof("extender")];
+ char uniname2ctype_pool_str550[sizeof("dep")];
+ char uniname2ctype_pool_str554[sizeof("olchiki")];
+ char uniname2ctype_pool_str562[sizeof("cwl")];
+ char uniname2ctype_pool_str563[sizeof("graphemebase")];
+ char uniname2ctype_pool_str565[sizeof("phnx")];
+ char uniname2ctype_pool_str573[sizeof("orkh")];
+ char uniname2ctype_pool_str576[sizeof("punct")];
+ char uniname2ctype_pool_str577[sizeof("khar")];
+ char uniname2ctype_pool_str580[sizeof("lower")];
+ char uniname2ctype_pool_str586[sizeof("sterm")];
+ char uniname2ctype_pool_str587[sizeof("yi")];
+ char uniname2ctype_pool_str588[sizeof("lyci")];
+ char uniname2ctype_pool_str589[sizeof("cyrl")];
+ char uniname2ctype_pool_str591[sizeof("lycian")];
+ char uniname2ctype_pool_str592[sizeof("finalpunctuation")];
+ char uniname2ctype_pool_str593[sizeof("orya")];
+ char uniname2ctype_pool_str594[sizeof("graphemeextend")];
+ char uniname2ctype_pool_str596[sizeof("kaithi")];
+ char uniname2ctype_pool_str597[sizeof("xpeo")];
+ char uniname2ctype_pool_str598[sizeof("yiii")];
+ char uniname2ctype_pool_str599[sizeof("kthi")];
+ char uniname2ctype_pool_str601[sizeof("cyrillic")];
+ char uniname2ctype_pool_str602[sizeof("glag")];
+ char uniname2ctype_pool_str605[sizeof("oupper")];
+ char uniname2ctype_pool_str617[sizeof("tagb")];
+ char uniname2ctype_pool_str620[sizeof("cwt")];
+ char uniname2ctype_pool_str623[sizeof("number")];
+ char uniname2ctype_pool_str625[sizeof("tglg")];
+ char uniname2ctype_pool_str626[sizeof("knda")];
+ char uniname2ctype_pool_str627[sizeof("lowercaseletter")];
+ char uniname2ctype_pool_str628[sizeof("changeswhentitlecased")];
+ char uniname2ctype_pool_str629[sizeof("softdotted")];
+ char uniname2ctype_pool_str632[sizeof("ugar")];
+ char uniname2ctype_pool_str634[sizeof("sylo")];
+ char uniname2ctype_pool_str636[sizeof("lu")];
+ char uniname2ctype_pool_str640[sizeof("tagalog")];
+ char uniname2ctype_pool_str643[sizeof("kharoshthi")];
+ char uniname2ctype_pool_str644[sizeof("syrc")];
+ char uniname2ctype_pool_str645[sizeof("kannada")];
+ char uniname2ctype_pool_str646[sizeof("beng")];
+ char uniname2ctype_pool_str647[sizeof("lowercase")];
+ char uniname2ctype_pool_str656[sizeof("shaw")];
+ char uniname2ctype_pool_str659[sizeof("patternsyntax")];
+ char uniname2ctype_pool_str660[sizeof("syriac")];
+ char uniname2ctype_pool_str663[sizeof("word")];
+ char uniname2ctype_pool_str667[sizeof("imperialaramaic")];
+ char uniname2ctype_pool_str672[sizeof("ugaritic")];
+ char uniname2ctype_pool_str675[sizeof("enclosingmark")];
+ char uniname2ctype_pool_str677[sizeof("georgian")];
+ char uniname2ctype_pool_str678[sizeof("lydi")];
+ char uniname2ctype_pool_str681[sizeof("lydian")];
+ char uniname2ctype_pool_str686[sizeof("sylotinagri")];
+ char uniname2ctype_pool_str687[sizeof("gujr")];
+ char uniname2ctype_pool_str692[sizeof("tfng")];
+ char uniname2ctype_pool_str696[sizeof("currencysymbol")];
+ char uniname2ctype_pool_str701[sizeof("newline")];
+ char uniname2ctype_pool_str705[sizeof("bopomofo")];
+ char uniname2ctype_pool_str706[sizeof("ogrext")];
+ char uniname2ctype_pool_str707[sizeof("cherokee")];
+ char uniname2ctype_pool_str708[sizeof("gujarati")];
+ char uniname2ctype_pool_str710[sizeof("newtailue")];
+ char uniname2ctype_pool_str716[sizeof("dashpunctuation")];
+ char uniname2ctype_pool_str718[sizeof("oldsoutharabian")];
+ char uniname2ctype_pool_str725[sizeof("upper")];
+ char uniname2ctype_pool_str732[sizeof("cf")];
+ char uniname2ctype_pool_str734[sizeof("buhd")];
+ char uniname2ctype_pool_str735[sizeof("rejang")];
+ char uniname2ctype_pool_str736[sizeof("othergraphemeextend")];
+ char uniname2ctype_pool_str739[sizeof("modifierletter")];
+ char uniname2ctype_pool_str745[sizeof("nonspacingmark")];
+ char uniname2ctype_pool_str749[sizeof("changeswhencasemapped")];
+ char uniname2ctype_pool_str752[sizeof("mark")];
+ char uniname2ctype_pool_str757[sizeof("surrogate")];
+ char uniname2ctype_pool_str765[sizeof("paragraphseparator")];
+ char uniname2ctype_pool_str767[sizeof("ogham")];
+ char uniname2ctype_pool_str768[sizeof("hex")];
+ char uniname2ctype_pool_str772[sizeof("uppercaseletter")];
+ char uniname2ctype_pool_str777[sizeof("hexdigit")];
+ char uniname2ctype_pool_str778[sizeof("cwcm")];
+ char uniname2ctype_pool_str781[sizeof("grbase")];
+ char uniname2ctype_pool_str782[sizeof("khmr")];
+ char uniname2ctype_pool_str788[sizeof("unifiedideograph")];
+ char uniname2ctype_pool_str792[sizeof("uppercase")];
+ char uniname2ctype_pool_str793[sizeof("khmer")];
+ char uniname2ctype_pool_str795[sizeof("spacingmark")];
+ char uniname2ctype_pool_str797[sizeof("whitespace")];
+ char uniname2ctype_pool_str806[sizeof("patsyn")];
+ char uniname2ctype_pool_str816[sizeof("cypriot")];
+ char uniname2ctype_pool_str818[sizeof("openpunctuation")];
+ char uniname2ctype_pool_str821[sizeof("bamu")];
+ char uniname2ctype_pool_str831[sizeof("buhid")];
+ char uniname2ctype_pool_str840[sizeof("batk")];
+ char uniname2ctype_pool_str851[sizeof("symbol")];
+ char uniname2ctype_pool_str856[sizeof("changeswhenuppercased")];
+ char uniname2ctype_pool_str857[sizeof("osmanya")];
+ char uniname2ctype_pool_str861[sizeof("limbu")];
+ char uniname2ctype_pool_str868[sizeof("punctuation")];
+ char uniname2ctype_pool_str872[sizeof("hyphen")];
+ char uniname2ctype_pool_str888[sizeof("mathsymbol")];
+ char uniname2ctype_pool_str892[sizeof("grek")];
+ char uniname2ctype_pool_str898[sizeof("changeswhencasefolded")];
+ char uniname2ctype_pool_str902[sizeof("quotationmark")];
+ char uniname2ctype_pool_str903[sizeof("bugi")];
+ char uniname2ctype_pool_str916[sizeof("cuneiform")];
+ char uniname2ctype_pool_str918[sizeof("pf")];
+ char uniname2ctype_pool_str927[sizeof("cwcf")];
+ char uniname2ctype_pool_str932[sizeof("bamum")];
+ char uniname2ctype_pool_str940[sizeof("guru")];
+ char uniname2ctype_pool_str944[sizeof("wspace")];
+ char uniname2ctype_pool_str951[sizeof("meeteimayek")];
+ char uniname2ctype_pool_str976[sizeof("defaultignorablecodepoint")];
+ char uniname2ctype_pool_str980[sizeof("modifiersymbol")];
+ char uniname2ctype_pool_str999[sizeof("mlym")];
+ char uniname2ctype_pool_str1007[sizeof("mymr")];
+ char uniname2ctype_pool_str1020[sizeof("malayalam")];
+ char uniname2ctype_pool_str1026[sizeof("myanmar")];
+ char uniname2ctype_pool_str1032[sizeof("telugu")];
+ char uniname2ctype_pool_str1033[sizeof("buginese")];
+ char uniname2ctype_pool_str1037[sizeof("xsux")];
+ char uniname2ctype_pool_str1093[sizeof("sk")];
+ char uniname2ctype_pool_str1097[sizeof("katakana")];
+ char uniname2ctype_pool_str1124[sizeof("egyp")];
+ char uniname2ctype_pool_str1146[sizeof("any")];
+ char uniname2ctype_pool_str1148[sizeof("kayahli")];
+ char uniname2ctype_pool_str1190[sizeof("cwu")];
+ char uniname2ctype_pool_str1263[sizeof("qmark")];
+ char uniname2ctype_pool_str1329[sizeof("blank")];
+ char uniname2ctype_pool_str1347[sizeof("grlink")];
+ char uniname2ctype_pool_str1358[sizeof("batak")];
+ char uniname2ctype_pool_str1395[sizeof("unknown")];
+ char uniname2ctype_pool_str1410[sizeof("greek")];
+ char uniname2ctype_pool_str1463[sizeof("graphemelink")];
+ char uniname2ctype_pool_str1470[sizeof("gurmukhi")];
+ char uniname2ctype_pool_str1556[sizeof("hebrew")];
+ char uniname2ctype_pool_str1621[sizeof("egyptianhieroglyphs")];
+ char uniname2ctype_pool_str1741[sizeof("zyyy")];
#endif /* USE_UNICODE_PROPERTIES */
};
static const struct uniname2ctype_pool_t uniname2ctype_pool_contents =
{
#ifndef USE_UNICODE_PROPERTIES
- "word",
"print",
"punct",
- "alpha",
- "alnum",
- "xdigit",
- "upper",
#else /* USE_UNICODE_PROPERTIES */
"n",
- "s",
- "z",
- "zs",
- "zzzz",
+ "l",
+ "nl",
+ "ll",
"cn",
- "cs",
- "ci",
+ "no",
+ "lo",
"c",
- "cf",
- "sc",
- "cans",
- "qaai",
- "mn",
-#endif /* USE_UNICODE_PROPERTIES */
- "ascii",
-#ifdef USE_UNICODE_PROPERTIES
+ "co",
"cc",
- "qaac",
- "inavestan",
- "inspecials",
- "inipaextensions",
- "mc",
- "insamaritan",
- "m",
- "sm",
- "me",
- "inarmenian",
- "incuneiform",
- "mandaic",
- "inancientsymbols",
- "incuneiformnumbersandpunctuation",
- "inthai",
- "inmusicalsymbols",
- "inmiscellaneoussymbols",
- "incham",
- "inmiscellaneoussymbolsandarrows",
- "initialpunctuation",
- "inmiscellaneoussymbolsandpictographs",
- "inthaana",
- "taile",
- "mtei",
- "lc",
+ "lao",
+ "laoo",
"lana",
- "inlycian",
- "intransportandmapsymbols",
- "incontrolpictures",
- "sinhala",
- "incommonindicnumberforms",
- "inmiscellaneousmathematicalsymbolsa",
- "sterm",
- "inmyanmarextendeda",
- "lm",
- "taiviet",
- "inlinearbideograms",
- "intaitham",
- "latn",
- "latin",
- "ital",
- "alnum",
- "inmalayalam",
- "intaile",
- "tale",
- "l",
- "nl",
- "zl",
- "intamil",
- "taml",
- "inlatinextendeda",
- "inlatinextendedc",
- "inrunic",
- "incarian",
- "insyriac",
+ "ci",
+ "qaac",
+ "vai",
+ "vaii",
+ "qaai",
+ "control",
"cari",
- "inmeeteimayekextensions",
- "osma",
- "lt",
- "miao",
- "insharada",
- "incyrillic",
"carian",
- "armn",
- "samr",
- "armi",
- "inideographicdescriptioncharacters",
- "inosmanya",
- "armenian",
- "inmyanmar",
- "samaritan",
- "arabic",
- "incherokee",
- "connectorpunctuation",
- "merc",
- "inmiscellaneoustechnical",
- "inenclosedalphanumerics",
- "inemoticons",
- "joinc",
-#endif /* USE_UNICODE_PROPERTIES */
+ "zl",
+ "oriya",
+ "latn",
"cntrl",
-#ifdef USE_UNICODE_PROPERTIES
- "inenclosedcjklettersandmonths",
- "cwcf",
- "inruminumeralsymbols",
- "ll",
- "term",
- "inlatinextendedadditional",
- "tamil",
- "loe",
- "newtailue",
- "cwcm",
- "inenclosedalphanumericsupplement",
- "sinh",
- "zinh",
- "meroiticcursive",
+ "latin",
"han",
+ "arabic",
+ "ital",
+ "hano",
"hani",
- "inopticalcharacterrecognition",
- "no",
+ "hanunoo",
+ "lt",
"so",
- "innewtailue",
- "insinhala",
- "innko",
- "co",
- "shavian",
- "terminalpunctuation",
- "intaixuanjingsymbols",
- "inethiopic",
- "sora",
- "inarrows",
- "cham",
- "inlowsurrogates",
- "oriya",
- "ext",
- "cwt",
- "common",
- "inmiao",
- "thai",
- "intifinagh",
- "ethi",
- "mero",
- "chakma",
+ "hira",
+ "nchar",
+ "sc",
+ "z",
+ "oalpha",
+ "tavt",
+ "cans",
+ "java",
+ "zinh",
"thaa",
- "inscriptionalparthian",
- "tifinagh",
- "titlecaseletter",
+ "thai",
+ "variationselector",
+ "sinhala",
+ "joinc",
+ "ascii",
+ "initialpunctuation",
+ "other",
+ "joincontrol",
"thaana",
- "asciihexdigit",
- "math",
+ "avst",
+ "olower",
+ "othernumber",
+ "otherletter",
+ "sinh",
+ "tale",
+ "connectorpunctuation",
+ "s",
"di",
- "ids",
- "lo",
- "inlao",
- "taitham",
- "lao",
- "laoo",
- "dia",
- "idc",
- "ps",
- "insundanese",
- "pi",
- "cwl",
- "pf",
- "mand",
- "insylotinagri",
"vs",
- "mongolian",
- "pc",
- "inmandaic",
- "invai",
+ "oidc",
+ "idc",
+ "odi",
+ "cs",
+ "avestan",
+ "dia",
+ "cher",
+ "inscriptionalparthian",
+ "shavian",
+ "radical",
+ "loe",
+ "diacritic",
+ "zzzz",
+ "ethi",
+ "canadianaboriginal",
+ "zs",
+ "othersymbol",
+ "olditalic",
+ "inscriptionalpahlavi",
+ "taiviet",
"lineseparator",
- "pe",
- "vai",
- "vaii",
+ "otheridstart",
+ "oids",
+ "asciihexdigit",
+ "inherited",
+ "otherlowercase",
+ "terminalpunctuation",
+ "deva",
+ "otheralphabetic",
+ "ideo",
+ "noncharactercodepoint",
+ "otheridcontinue",
+ "taile",
+ "oldpersian",
+ "devanagari",
+ "letter",
+ "nd",
"idst",
- "indominotiles",
- "inshavian",
- "inspacingmodifierletters",
- "format",
- "inphaistosdisc",
- "hano",
+ "dsrt",
+ "titlecaseletter",
+ "po",
+ "dash",
+ "pc",
+ "letternumber",
+ "pi",
+ "javanese",
+ "mn",
+ "idstart",
+ "idcontinue",
+ "ids",
#endif /* USE_UNICODE_PROPERTIES */
- "space",
+ "alpha",
#ifdef USE_UNICODE_PROPERTIES
- "indeseret",
- "inolchiki",
- "hira",
- "joincontrol",
- "idcontinue",
- "inmahjongtiles",
+ "mc",
+ "coptic",
+ "mongolian",
+ "common",
+ "armn",
+ "copt",
+ "cprt",
+ "armi",
+ "phli",
+ "prti",
+ "armenian",
+ "sd",
+ "mandaic",
+ "phoenician",
+ "taml",
+ "tamil",
+ "cased",
+ "cham",
+ "idsbinaryoperator",
+ "lepc",
+ "otherdefaultignorablecodepoint",
+ "print",
+ "osma",
+ "samr",
+ "math",
+ "linb",
+ "closepunctuation",
+ "otherpunctuation",
+ "bali",
+ "omath",
+ "samaritan",
+ "ps",
+ "arab",
+ "brai",
+ "taitham",
+ "linearb",
+ "lepcha",
+ "mand",
+ "mtei",
+ "term",
+ "glagolitic",
+ "privateuse",
+ "pe",
+ "deseret",
+ "brah",
+ "runr",
+ "othermath",
+ "runic",
+ "hang",
+ "ethiopic",
+ "me",
"patws",
- "inlydian",
- "cher",
- "inhiragana",
- "inogham",
- "avst",
- "inscriptionalpahlavi",
- "incoptic",
- "java",
- "inmathematicalalphanumericsymbols",
- "letter",
- "injavanese",
- "avestan",
+ "separator",
+ "tibt",
+ "gothic",
+ "tagbanwa",
+ "sarb",
+ "talu",
+ "tibetan",
+ "goth",
+ "rjng",
+ "hangul",
+ "bengali",
+ "hiragana",
+ "braille",
+ "geor",
"age=1.1",
- "lepc",
"age=2.1",
- "inlepcha",
- "javanese",
- "shaw",
- "finalpunctuation",
- "alpha",
"age=5.1",
- "inmongolian",
"age=5.2",
+ "age=4.1",
+ "p",
+ "pd",
+ "lisu",
"age=2.0",
- "ahex",
- "ingeneralpunctuation",
- "oids",
- "odi",
"age=5.0",
- "tavt",
- "intaiviet",
- "age=6.1",
+ "age=6.0",
+ "age=4.0",
+ "graph",
+ "saur",
+ "space",
"age=3.1",
- "insundanesesupplement",
"age=3.2",
- "age=4.1",
- "oidc",
- "tfng",
- "insmallformvariants",
- "ideo",
- "intags",
- "age=6.0",
+ "hebr",
+ "bidic",
"age=3.0",
- "whitespace",
- "age=4.0",
- "inolditalic",
- "oalpha",
- "ingujarati",
- "control",
- "diacritic",
- "tagbanwa",
- "inphoenician",
- "ininscriptionalparthian",
- "ininscriptionalpahlavi",
- "coptic",
- "dsrt",
- "inmodifiertoneletters",
- "xids",
- "hanunoo",
- "inoldturkic",
+ "bidicontrol",
+ "logicalorderexception",
+ "telu",
+ "zp",
+ "m",
+ "lm",
+ "idstrinaryoperator",
+ "balinese",
+ "uideo",
+ "spaceseparator",
+ "grext",
+#endif /* USE_UNICODE_PROPERTIES */
+ "alnum",
+#ifdef USE_UNICODE_PROPERTIES
+ "oldturkic",
"xidc",
- "idstart",
- "inimperialaramaic",
- "invariationselectors",
- "copt",
+ "idsb",
+ "ahex",
+ "format",
"caseignorable",
- "prti",
- "nchar",
- "deseret",
- "decimalnumber",
- "cprt",
- "inlatin1supplement",
- "imperialaramaic",
- "privateuse",
- "casedletter",
- "lowercase",
- "spaceseparator",
- "radical",
- "mong",
- "canadianaboriginal",
- "letternumber",
- "insorasompeng",
- "dash",
- "wspace",
- "ogam",
- "invariationselectorssupplement",
- "print",
- "otheridcontinue",
- "ingurmukhi",
- "closepunctuation",
- "olditalic",
- "noncharactercodepoint",
- "sharada",
- "ingeometricshapes",
- "otheralphabetic",
+ "tifinagh",
+ "sundanese",
+ "ext",
+ "saurashtra",
"patternwhitespace",
- "po",
- "rjng",
- "ingreekandcoptic",
+ "digit",
+ "sund",
+ "decimalnumber",
+ "bopo",
+ "sm",
+ "otheruppercase",
+ "ideographic",
+ "xids",
+ "unassigned",
+ "phagspa",
+ "alphabetic",
+ "limb",
+#endif /* USE_UNICODE_PROPERTIES */
"xdigit",
- "gothic",
- "inoldsoutharabian",
+#ifdef USE_UNICODE_PROPERTIES
"xidstart",
- "inrejang",
- "idsbinaryoperator",
- "olower",
- "hex",
- "inenclosedideographicsupplement",
- "inalphabeticpresentationforms",
- "inbasiclatin",
- "othersymbol",
- "nd",
- "sd",
- "omath",
- "separator",
- "inarabic",
+ "mong",
"xidcontinue",
- "otheridstart",
- "grext",
- "otherlowercase",
- "phli",
- "cased",
- "hang",
- "xpeo",
-#endif /* USE_UNICODE_PROPERTIES */
- "lower",
-#ifndef USE_UNICODE_PROPERTIES
- "graph",
-#else /* USE_UNICODE_PROPERTIES */
- "modifierletter",
- "inphoneticextensions",
- "inarabicpresentationformsa",
- "innumberforms",
- "oldpersian",
- "incyrillicextendeda",
- "inverticalforms",
- "p",
- "inbyzantinemusicalsymbols",
- "inmathematicaloperators",
- "intibetan",
- "zp",
- "ingeorgian",
- "inbraillepatterns",
- "lepcha",
- "geor",
- "invedicextensions",
- "linb",
- "other",
- "deva",
- "indevanagari",
- "othernumber",
- "bamum",
- "shrd",
- "bali",
- "devanagari",
- "extender",
- "inherited",
- "glagolitic",
- "tibt",
- "inbalinese",
- "ingothic",
- "inmiscellaneousmathematicalsymbolsb",
- "limb",
- "bengali",
- "phoenician",
- "insuperscriptsandsubscripts",
- "inmeroitichieroglyphs",
- "tibetan",
- "inphoneticextensionssupplement",
- "balinese",
- "lowercaseletter",
- "indingbats",
- "inprivateusearea",
"assigned",
- "patternsyntax",
- "inhangulsyllables",
- "sarb",
- "brai",
- "insupplementalmathematicaloperators",
- "phnx",
- "ingreekextended",
- "otherletter",
- "arab",
- "inlatinextendedd",
- "word",
- "inphagspa",
- "inblockelements",
- "ethiopic",
- "inethiopicextendeda",
+ "ogam",
+ "nko",
+ "nkoo",
+ "olck",
+ "deprecated",
"brahmi",
- "logicalorderexception",
- "inoldpersian",
- "inletterlikesymbols",
- "sorasompeng",
- "hiragana",
- "inhanguljamoextendeda",
- "othermath",
-#endif /* USE_UNICODE_PROPERTIES */
- "digit",
-#ifndef USE_UNICODE_PROPERTIES
- "blank"
-#else /* USE_UNICODE_PROPERTIES */
- "goth",
- "ogham",
- "sundanese",
- "saurashtra",
- "linearb",
- "graphemebase",
- "inunifiedcanadianaboriginalsyllabics",
- "cuneiform",
- "inkannada",
+ "phag",
"kana",
- "inancientgreeknumbers",
- "incjkstrokes",
- "inglagolitic",
- "inancientgreekmusicalnotation",
- "inchakma",
- "plrd",
- "inbrahmi",
- "cakm",
- "incjkcompatibilityforms",
- "lisu",
- "incjkcompatibilityideographs",
- "intagalog",
- "inkaithi",
- "insupplementalarrowsa",
- "takri",
- "ideographic",
- "hexdigit",
- "glag",
- "softdotted",
- "variationselector",
- "inkatakana",
- "meeteimayek",
- "otherpunctuation",
- "inhanguljamo",
"kali",
- "braille",
- "incombininghalfmarks",
- "talu",
- "incjkcompatibilityideographssupplement",
- "telu",
- "idsb",
- "tglg",
- "inmeeteimayek",
- "yi",
- "phagspa",
- "yiii",
- "inarabicmathematicalalphabeticsymbols",
- "saur",
- "ogrext",
- "bidic",
- "inkanasupplement",
- "runic",
- "inalchemicalsymbols",
- "georgian",
- "inugaritic",
- "insaurashtra",
- "inhighprivateusesurrogates",
- "pd",
- "incountingrodnumerals",
- "inarabicextendeda",
- "inkharoshthi",
- "idstrinaryoperator",
- "phag",
- "brah",
- "mark",
- "hebr",
- "inkhmersymbols",
+ "changeswhenlowercased",
+ "extender",
"dep",
- "inkhmer",
- "deprecated",
- "rejang",
+ "olchiki",
+ "cwl",
+ "graphemebase",
+ "phnx",
+ "orkh",
+ "punct",
+ "khar",
+ "lower",
+ "sterm",
+ "yi",
"lyci",
- "intakri",
- "takr",
- "incyrillicsupplement",
- "changeswhencasefolded",
- "indevanagariextended",
+ "cyrl",
"lycian",
- "inbengali",
- "beng",
- "graph",
- "inyijinghexagramsymbols",
- "olck",
- "inarabicsupplement",
- "inbuginese",
- "changeswhencasemapped",
- "olchiki",
- "inaegeannumbers",
- "mlym",
- "alphabetic",
- "sylotinagri",
- "changeswhentitlecased",
- "tagalog",
- "tagb",
- "runr",
- "malayalam",
- "inoriya",
- "intagbanwa",
- "syrc",
- "nko",
- "nkoo",
- "inethiopicextended",
+ "finalpunctuation",
+ "orya",
+ "graphemeextend",
"kaithi",
- "mathsymbol",
- "inyiradicals",
- "insupplementaryprivateuseareaa",
- "osmanya",
- "syriac",
- "otherdefaultignorablecodepoint",
- "number",
- "inlinearbsyllabary",
+ "xpeo",
+ "yiii",
"kthi",
- "sund",
- "mymr",
- "incombiningdiacriticalmarks",
- "enclosingmark",
- "incombiningdiacriticalmarksforsymbols",
- "inethiopicsupplement",
- "unassigned",
- "sylo",
- "combiningmark",
- "myanmar",
- "graphemeextend",
- "bidicontrol",
- "inhalfwidthandfullwidthforms",
- "cyrl",
+ "cyrillic",
+ "glag",
+ "oupper",
+ "tagb",
+ "cwt",
+ "number",
+ "tglg",
"knda",
- "inunifiedcanadianaboriginalsyllabicsextended",
- "xsux",
- "modifiersymbol",
- "incombiningdiacriticalmarkssupplement",
- "inhanunoo",
- "inbuhid",
- "kannada",
- "inhebrew",
- "grbase",
- "spacingmark",
- "inkatakanaphoneticextensions",
- "hangul",
- "incjksymbolsandpunctuation",
- "bopo",
- "orya",
- "inbopomofo",
+ "lowercaseletter",
+ "changeswhentitlecased",
+ "softdotted",
+ "ugar",
+ "sylo",
+ "lu",
+ "tagalog",
"kharoshthi",
- "khar",
- "changeswhenlowercased",
- "khmr",
- "punct",
- "symbol",
- "cherokee",
- "cyrillic",
- "inkangxiradicals",
- "hebrew",
- "inarabicpresentationformsb",
- "incyrillicextendedb",
+ "syrc",
+ "kannada",
+ "beng",
+ "lowercase",
+ "shaw",
+ "patternsyntax",
+ "syriac",
+ "word",
+ "imperialaramaic",
"ugaritic",
- "incurrencysymbols",
- "meroitichieroglyphs",
- "inhighsurrogates",
- "nonspacingmark",
+ "enclosingmark",
+ "georgian",
"lydi",
- "patsyn",
- "orkh",
"lydian",
- "ugar",
- "othergraphemeextend",
- "inlatinextendedb",
- "bopomofo",
- "khmer",
- "uideo",
- "otheruppercase",
- "grek",
+ "sylotinagri",
"gujr",
+ "tfng",
+ "currencysymbol",
+#endif /* USE_UNICODE_PROPERTIES */
+ "newline",
+#ifdef USE_UNICODE_PROPERTIES
+ "bopomofo",
+ "ogrext",
+ "cherokee",
"gujarati",
- "inhanguljamoextendedb",
- "defaultignorablecodepoint",
- "inplayingcards",
- "bamu",
- "inkanbun",
- "incjkradicalssupplement",
- "cypriot",
- "inbamum",
- "inmeroiticcursive",
- "oldturkic",
- "insupplementalarrowsb",
- "surrogate",
- "batk",
- "inbatak",
- "inlimbu",
- "incypriotsyllabary",
+ "newtailue",
"dashpunctuation",
- "innoblock",
- "hyphen",
- "insupplementalpunctuation",
- "ingeorgiansupplement",
- "oupper",
+ "oldsoutharabian",
+#endif /* USE_UNICODE_PROPERTIES */
+ "upper",
+#ifndef USE_UNICODE_PROPERTIES
+ "ascii",
+ "cntrl",
+ "space",
+ "word",
+ "lower",
+ "graph",
+ "digit",
+ "blank"
+#else /* USE_UNICODE_PROPERTIES */
+ "cf",
+ "buhd",
+ "rejang",
+ "othergraphemeextend",
+ "modifierletter",
+ "nonspacingmark",
+ "changeswhencasemapped",
+ "mark",
+ "surrogate",
"paragraphseparator",
- "inbamumsupplement",
+ "ogham",
+ "hex",
+ "uppercaseletter",
+ "hexdigit",
+ "cwcm",
+ "grbase",
+ "khmr",
+ "unifiedideograph",
"uppercase",
- "currencysymbol",
- "sk",
- "lu",
+ "khmer",
+ "spacingmark",
+ "whitespace",
+ "patsyn",
+ "cypriot",
"openpunctuation",
- "inlisu",
- "qmark",
- "egyp",
- "insupplementaryprivateuseareab",
+ "bamu",
+ "buhid",
+ "batk",
+ "symbol",
+ "changeswhenuppercased",
+ "osmanya",
"limbu",
- "inegyptianhieroglyphs",
- "unifiedideograph",
- "intelugu",
- "katakana",
- "inhangulcompatibilityjamo",
- "upper",
- "inkayahli",
- "cwu",
- "incjkcompatibility",
- "uppercaseletter",
+ "punctuation",
+ "hyphen",
+ "mathsymbol",
+ "grek",
+ "changeswhencasefolded",
+ "quotationmark",
"bugi",
+ "cuneiform",
+ "pf",
+ "cwcf",
+ "bamum",
+ "guru",
+ "wspace",
+ "meeteimayek",
+ "defaultignorablecodepoint",
+ "modifiersymbol",
+ "mlym",
+ "mymr",
+ "malayalam",
+ "myanmar",
+ "telugu",
"buginese",
+ "xsux",
+ "sk",
+ "katakana",
+ "egyp",
"any",
- "inyisyllables",
- "inbopomofoextended",
- "inboxdrawing",
- "changeswhenuppercased",
- "unknown",
- "quotationmark",
- "buhd",
- "punctuation",
- "oldsoutharabian",
"kayahli",
- "incjkunifiedideographs",
- "incjkunifiedideographsextensiona",
- "incjkunifiedideographsextensionc",
- "telugu",
- "guru",
- "greek",
+ "cwu",
+ "qmark",
+ "blank",
"grlink",
- "buhid",
"batak",
- "blank",
- "incjkunifiedideographsextensiond",
+ "unknown",
+ "greek",
"graphemelink",
+ "gurmukhi",
+ "hebrew",
"egyptianhieroglyphs",
- "incjkunifiedideographsextensionb",
- "zyyy",
- "gurmukhi"
+ "zyyy"
#endif /* USE_UNICODE_PROPERTIES */
};
#define uniname2ctype_pool ((const char *) &uniname2ctype_pool_contents)
@@ -27365,1242 +23125,622 @@ uniname2ctype_p (str, len)
{
#ifdef USE_UNICODE_PROPERTIES
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3, 34},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str5, 46},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str7, 51},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str9, 54},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str16, 208},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str18, 20},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str20, 22},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str24, 60},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str29, 17},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str30, 19},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str32, 47},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str34, 101},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str35, 114},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str38, 33},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str42, 14},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3, 33},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str44, 18},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str45, 128},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str49, 401},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str52, 377},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str62, 226},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str5, 23},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str64, 31},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str7, 35},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str8, 24},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str66, 239},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str69, 30},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str10, 20},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str11, 36},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str12, 26},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str13, 17},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str72, 49},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str74, 32},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str82, 232},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str84, 412},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str86, 168},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str16, 21},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str90, 382},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str92, 413},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str96, 252},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str20, 18},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str21, 93},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str22, 93},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str23, 150},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str99, 419},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str100, 304},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str106, 355},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str26, 59},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str109, 312},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str113, 43},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str114, 430},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str116, 237},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str124, 120},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str125, 159},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str132, 24},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str133, 151},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str134, 384},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str135, 432},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str136, 298},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str142, 92},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str151, 347},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str156, 306},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str29, 127},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str30, 142},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str31, 142},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str32, 113},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str158, 204},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str167, 356},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str172, 26},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str34, 18},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str175, 152},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str179, 379},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str180, 276},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str184, 75},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str186, 75},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str187, 111},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str189, 13},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str199, 250},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str201, 272},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str202, 120},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str37, 147},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str205, 23},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str40, 147},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str207, 36},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str42, 51},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str209, 52},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str216, 247},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str217, 88},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str218, 224},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str44, 86},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str220, 314},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str46, 74},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str47, 3},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str48, 74},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str223, 263},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str224, 385},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str225, 235},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str51, 108},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str227, 148},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str230, 358},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str231, 124},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str232, 28},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str233, 172},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str234, 410},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str53, 79},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str54, 110},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str55, 115},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str239, 230},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str240, 148},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str244, 78},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str245, 155},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str247, 160},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str248, 323},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str252, 392},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str253, 78},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str254, 255},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str255, 155},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str256, 80},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str60, 108},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str259, 260},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str261, 39},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str263, 170},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str264, 297},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str268, 300},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str63, 115},
+ {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str66, 27},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str67, 49},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str279, 431},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str69, 105},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str70, 184},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str71, 46},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str281, 178},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str288, 3},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str301, 333},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str303, 64},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str304, 405},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str308, 25},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str313, 182},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str316, 287},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str320, 88},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str321, 201},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str73, 50},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str74, 178},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str75, 151},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str76, 100},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str329, 129},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str330, 65},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str339, 428},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str346, 92},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str347, 114},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str349, 170},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str353, 109},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str84, 157},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str357, 109},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str358, 299},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str359, 37},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str360, 50},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str364, 273},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str365, 251},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str367, 238},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str372, 21},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str88, 113},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str89, 81},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str90, 92},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str91, 197},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str92, 91},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str93, 170},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str94, 14},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str95, 42},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str375, 123},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str378, 182},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str386, 421},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str387, 258},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str98, 17},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str99, 170},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str100, 81},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str101, 152},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str389, 174},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str398, 295},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str400, 150},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str403, 365},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str103, 182},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str405, 87},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str406, 189},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str105, 36},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str106, 26},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str409, 63},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str109, 91},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str412, 74},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str112, 119},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str414, 416},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str420, 93},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str425, 317},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str426, 99},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str427, 171},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str428, 169},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str429, 82},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str430, 162},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str114, 38},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str115, 45},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str116, 69},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str117, 197},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str432, 131},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str436, 28},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str119, 195},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str120, 66},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str121, 190},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str122, 22},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str123, 152},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str124, 180},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str125, 99},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str126, 161},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str128, 122},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str445, 82},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str449, 185},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str450, 55},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str453, 70},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str454, 66},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str137, 188},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str460, 27},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str468, 253},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str470, 151},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str143, 193},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str474, 94},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str475, 94},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str476, 188},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str478, 67},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str147, 180},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str148, 200},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str149, 98},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str480, 45},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str481, 278},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str151, 100},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str152, 53},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str153, 49},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str484, 43},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str485, 61},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str156, 110},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str490, 42},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str495, 168},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str496, 346},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str497, 205},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str503, 105},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str504, 39},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str506, 240},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str161, 162},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str162, 151},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str163, 51},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str509, 341},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str166, 194},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str170, 194},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str171, 177},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str172, 113},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str511, 52},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str514, 41},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str515, 143},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str516, 143},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str517, 195},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str174, 182},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str175, 174},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str176, 82},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str520, 426},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str521, 391},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str522, 227},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str179, 178},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str180, 179},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str181, 184},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str524, 19},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str183, 195},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str528, 383},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str531, 116},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str532, 9},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str542, 390},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str187, 119},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str545, 281},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str548, 106},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str553, 178},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str190, 132},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str555, 67},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str558, 425},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str192, 82},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str193, 23},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str560, 206},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str563, 396},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str564, 100},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str568, 325},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str572, 262},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str195, 34},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str574, 153},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str575, 163},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str579, 315},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str587, 158},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str197, 187},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str198, 112},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str589, 423},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str594, 23},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str604, 354},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str608, 153},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str612, 209},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str613, 141},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str614, 211},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str200, 27},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str616, 280},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str617, 158},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str618, 123},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str619, 42},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str620, 1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str621, 218},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str622, 269},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str623, 219},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str202, 43},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str203, 171},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str626, 210},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str627, 185},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str206, 38},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str630, 289},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str631, 202},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str632, 198},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str633, 217},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str209, 35},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str636, 152},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str637, 357},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str638, 221},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str639, 213},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str640, 282},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str641, 214},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str642, 216},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str643, 203},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str212, 42},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str646, 131},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str647, 374},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str648, 187},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str649, 438},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str650, 220},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str651, 212},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str215, 157},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str653, 176},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str654, 215},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str655, 386},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str660, 186},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str668, 245},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str672, 18},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str679, 188},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str682, 118},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str690, 395},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str217, 32},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str218, 65},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str701, 402},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str220, 66},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str703, 403},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str704, 128},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str705, 113},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str706, 344},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str709, 68},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str222, 65},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str223, 1},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str713, 116},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str227, 30},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str715, 404},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str229, 127},
+ {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str234, 104},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str235, 73},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str236, 77},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str237, 127},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str721, 69},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str725, 66},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str729, 394},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str730, 370},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str243, 124},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str244, 159},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str245, 162},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str246, 161},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str734, 128},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str250, 77},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str251, 192},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str252, 167},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str737, 60},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str738, 162},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str739, 192},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str746, 113},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str747, 35},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str748, 125},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str750, 223},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str255, 136},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str771, 160},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str776, 21},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str777, 24},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str778, 57},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str780, 54},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str784, 196},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str258, 87},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str787, 105},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str788, 101},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str792, 36},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str261, 87},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str268, 58},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str269, 149},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str270, 186},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str271, 140},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str796, 408},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str797, 179},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str798, 176},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str799, 102},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str275, 190},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str802, 439},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str803, 7},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str278, 7},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str811, 203},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str815, 244},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str818, 41},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str823, 111},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str824, 192},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str826, 173},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str827, 303},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str830, 186},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str831, 206},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str832, 44},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str833, 146},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str835, 229},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str286, 123},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str841, 11},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str850, 112},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str851, 400},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str852, 68},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str292, 154},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str854, 352},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str860, 194},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str867, 190},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str294, 54},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str869, 184},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str870, 429},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str296, 120},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str297, 40},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str874, 368},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str879, 222},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str884, 50},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str889, 35},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str890, 200},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str900, 183},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str901, 51},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str907, 234},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str912, 69},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str913, 202},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str914, 71},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str917, 190},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str301, 43},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str919, 163},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str920, 59},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str303, 134},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str923, 98},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str931, 133},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str306, 175},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str307, 154},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str308, 44},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str933, 6},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str310, 79},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str311, 125},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str936, 26},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str938, 284},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str939, 369},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str943, 294},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str945, 133},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str946, 319},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str947, 371},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str949, 38},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str950, 418},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str951, 296},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str952, 254},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str953, 53},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str314, 150},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str956, 256},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str317, 120},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str960, 308},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str321, 140},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str322, 167},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str962, 141},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str963, 97},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str964, 283},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str965, 121},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str966, 17},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str970, 83},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str972, 242},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str973, 37},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str974, 157},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str976, 173},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str977, 135},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str981, 83},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str983, 189},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str324, 158},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str325, 174},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str326, 129},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str327, 21},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str328, 40},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str335, 112},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str988, 114},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str989, 130},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str990, 95},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str994, 277},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str340, 166},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str341, 102},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str996, 387},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str997, 310},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str998, 119},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1000, 84},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str343, 175},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str344, 102},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str345, 97},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str346, 98},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1003, 137},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1004, 290},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1006, 397},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1007, 95},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str349, 31},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str350, 198},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1010, 285},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1016, 135},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1021, 25},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1031, 305},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1035, 366},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1039, 16},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1044, 207},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1051, 361},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1065, 161},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1067, 126},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str353, 50},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1069, 311},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1070, 137},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str355, 94},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str356, 111},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1072, 288},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str358, 117},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str359, 160},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1074, 27},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str361, 128},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str367, 94},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str371, 111},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str372, 145},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str373, 97},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str374, 83},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str375, 105},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str376, 125},
+ {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str379, 96},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str380, 201},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str381, 203},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str382, 210},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str383, 211},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str384, 208},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str385, 37},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str386, 39},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1076, 80},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str388, 155},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str389, 202},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str390, 209},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str391, 212},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str392, 207},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str393, 5},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1078, 345},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str395, 143},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str396, 9},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str397, 205},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str398, 206},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str399, 78},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1081, 12},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str402, 169},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1084, 348},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str405, 204},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1087, 302},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str408, 169},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1092, 99},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1094, 359},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1107, 167},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1110, 201},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1114, 389},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1129, 293},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1133, 174},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1135, 106},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str413, 193},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1142, 353},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1147, 183},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1150, 4},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1151, 112},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str420, 88},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str422, 52},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1156, 102},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1162, 140},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1170, 144},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str427, 29},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1173, 121},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1179, 72},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1185, 261},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1186, 136},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str430, 25},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1188, 249},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str432, 187},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str433, 134},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str434, 189},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1190, 107},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1195, 381},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1196, 331},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str436, 53},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1198, 313},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str438, 70},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1202, 420},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1212, 409},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1215, 172},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1219, 406},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str442, 13},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str443, 163},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str445, 68},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str446, 186},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str447, 177},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1224, 169},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1225, 373},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1229, 156},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1230, 367},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1231, 264},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1244, 407},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1245, 307},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1249, 175},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str452, 19},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1253, 187},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1256, 184},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1259, 130},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1261, 200},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1262, 205},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str456, 59},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str457, 130},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1264, 326},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1265, 159},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1274, 44},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1279, 257},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str459, 139},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1282, 145},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1289, 126},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1298, 372},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1300, 129},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str462, 181},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1302, 437},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str464, 143},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str465, 198},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str466, 4},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str474, 139},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str480, 34},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1306, 89},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1307, 194},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str484, 107},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str485, 48},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1310, 115},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1313, 360},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1315, 110},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1318, 138},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str488, 183},
+ {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str493, 179},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1321, 110},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1323, 424},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str496, 67},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str497, 20},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1328, 144},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str502, 137},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str506, 55},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1330, 193},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str508, 118},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1334, 177},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1341, 417},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str512, 11},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str513, 67},
+ {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str516, 104},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1343, 103},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1344, 433},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1350, 97},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1351, 388},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str518, 68},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1354, 349},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str521, 16},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1356, 364},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str523, 101},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1362, 40},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1372, 422},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1377, 241},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str529, 138},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str530, 138},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1389, 399},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1393, 195},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1396, 138},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str533, 141},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str534, 191},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str535, 166},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str536, 137},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1398, 167},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1402, 30},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str538, 106},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1404, 79},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str540, 144},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str542, 60},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str543, 181},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1411, 274},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str550, 191},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str554, 141},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str562, 60},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str563, 71},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1413, 199},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str565, 136},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str573, 163},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1416, 268},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1422, 199},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1424, 146},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1429, 147},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1431, 411},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1432, 175},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str576, 8},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str577, 133},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1435, 231},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1436, 64},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str580, 6},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str586, 196},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str587, 109},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str588, 146},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str589, 76},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1438, 350},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1442, 147},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1443, 243},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1448, 84},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str591, 146},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str592, 41},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str593, 86},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str594, 70},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1450, 5},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str596, 164},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str597, 132},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str598, 109},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str599, 164},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1452, 336},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1457, 142},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str601, 76},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str602, 129},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1460, 236},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1462, 275},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1463, 65},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1468, 142},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1478, 380},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1479, 91},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1480, 56},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str605, 183},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1492, 132},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1498, 63},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1504, 115},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1505, 118},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1506, 103},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1510, 91},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1512, 246},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1516, 267},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1517, 81},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1519, 139},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1520, 139},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str617, 117},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1523, 318},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1525, 165},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1530, 49},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1531, 339},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1536, 440},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1540, 124},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1546, 81},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1548, 198},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1561, 34},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1565, 378},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1566, 165},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1567, 140},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1569, 96},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str620, 62},
+ {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str623, 33},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1571, 228},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1578, 32},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str625, 114},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str626, 89},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str627, 24},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str628, 62},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str629, 192},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1581, 292},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str632, 121},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1583, 259},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1590, 20},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1591, 132},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str634, 131},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str636, 28},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1595, 30},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str640, 114},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1598, 96},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1605, 71},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1606, 177},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str643, 133},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str644, 80},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str645, 89},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str646, 83},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str647, 56},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str656, 122},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1609, 376},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1617, 77},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str659, 199},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str660, 80},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1620, 90},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str663, 12},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str667, 159},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1634, 270},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1635, 136},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1636, 48},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1643, 286},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str672, 121},
+ {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str675, 31},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1645, 265},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str677, 96},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str678, 148},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1648, 266},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1649, 90},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1658, 233},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str681, 148},
+ {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str686, 131},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str687, 85},
+ {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str692, 130},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1662, 72},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1664, 31},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1670, 332},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1676, 98},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1683, 324},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str696, 46},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1688, 108},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str701, 0},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1692, 87},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1699, 327},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str705, 107},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str706, 185},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str707, 99},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str708, 85},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1701, 134},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1703, 134},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1709, 61},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str710, 128},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1724, 104},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1725, 8},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1729, 46},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1732, 100},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1737, 77},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1759, 322},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str716, 39},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1761, 79},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1780, 375},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str718, 160},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1787, 342},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1790, 122},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1829, 291},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1831, 171},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1835, 363},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1853, 33},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1858, 149},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1864, 207},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1868, 164},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1871, 149},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str725, 10},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1896, 122},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str732, 19},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str734, 116},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str735, 145},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str736, 185},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1899, 193},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1900, 225},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1904, 108},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str739, 25},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str745, 32},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1917, 104},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1925, 197},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1932, 191},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str749, 64},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1944, 76},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str752, 29},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1949, 86},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1970, 86},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str757, 22},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str765, 52},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str767, 101},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str768, 176},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1983, 362},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str772, 28},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1988, 70},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2005, 427},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2022, 157},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str777, 176},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str778, 64},
+ {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str781, 71},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str782, 103},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2028, 329},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2033, 321},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str788, 189},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2046, 125},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2051, 343},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str792, 57},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str793, 103},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2053, 398},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str795, 30},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2055, 164},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2086, 309},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2087, 22},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2094, 166},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2102, 279},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2119, 271},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2123, 393},
- {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2129, 40},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2130, 442},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str797, 168},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str806, 199},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str816, 124},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2141, 180},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2162, 320},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str818, 44},
{-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2165, 316},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str821, 156},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2178, 191},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str831, 116},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str840, 165},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2189, 53},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str851, 45},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2194, 415},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2299, 58},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2313, 47},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2322, 48},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2338, 29},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str856, 61},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str857, 123},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2342, 45},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str861, 118},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2349, 340},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str868, 37},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2371, 181},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2372, 154},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2377, 441},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2379, 119},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2400, 414},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2401, 197},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2413, 248},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str872, 172},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2429, 107},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str888, 48},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2442, 328},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2454, 10},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2495, 351},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2515, 62},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2523, 334},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2542, 29},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2549, 127},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2588, 127},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2627, 15},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str892, 75},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2651, 338},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str898, 63},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str902, 173},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str903, 126},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str916, 135},
{-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2671, 330},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2710, 301},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str918, 41},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str927, 63},
{-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2724, 62},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2727, 208},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2737, 181},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str932, 156},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str940, 84},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str944, 168},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2753, 117},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2785, 38},
- {-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str951, 158},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str976, 69},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2888, 161},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str980, 47},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str999, 90},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1007, 95},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2925, 145},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1020, 90},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2940, 337},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2961, 335},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2962, 435},
- {-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1026, 95},
{-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str2995, 89},
- {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3000, 85},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3104, 76},
- {-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1032, 88},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1033, 126},
{-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3189, 73},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3197, 117},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1037, 135},
{-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3254, 166},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3292, 2},
- {-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1093, 47},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1097, 106},
{-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3391, 436},
- {-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3459, 73},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3480, 154},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1124, 153},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1146, 15},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1148, 144},
{-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1190, 61},
{-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},
@@ -28609,6 +23749,7 @@ uniname2ctype_p (str, len)
{-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1263, 173},
{-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},
@@ -28616,52 +23757,51 @@ uniname2ctype_p (str, len)
{-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1329, 2},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1347, 72},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1358, 165},
{-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1395, 200},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1410, 75},
{-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},
#endif /* USE_UNICODE_PROPERTIES */
- {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
#ifndef USE_UNICODE_PROPERTIES
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str6, 12},
{(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str7, 7},
{(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str8, 8},
{(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str9, 1},
{(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str10, 13},
{(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str11, 11},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str12, 10},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str13, 14},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str14, 3},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str15, 9},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str16, 6},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str17, 5},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str18, 4},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str19, 2}
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str12, 0},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str13, 10},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str14, 14},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str15, 3},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str16, 9},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str17, 12},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str18, 6},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str19, 5},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str20, 4},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str21, 2}
#else /* USE_UNICODE_PROPERTIES */
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3802, 434},
- {-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1463, 72},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1470, 84},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
{-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
- {-1}, {-1},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str3922, 74},
{-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},
@@ -28669,6 +23809,8 @@ uniname2ctype_p (str, len)
{-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1556, 78},
{-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},
@@ -28676,6 +23818,8 @@ uniname2ctype_p (str, len)
{-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},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1621, 153},
{-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},
@@ -28689,8 +23833,8 @@ uniname2ctype_p (str, len)
{-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},
- {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str4167, 85}
+ {-1}, {-1},
+ {(int)(long)&((struct uniname2ctype_pool_t *)0)->uniname2ctype_pool_str1741, 73}
#endif /* USE_UNICODE_PROPERTIES */
};
diff --git a/enc/unicode/name2ctype.kwd b/enc/unicode/name2ctype.kwd
index ff94d68b3b..2e27f3f7de 100644
--- a/enc/unicode/name2ctype.kwd
+++ b/enc/unicode/name2ctype.kwd
@@ -1,4273 +1,6 @@
%{
#define long size_t
-/* 'NEWLINE': [[:NEWLINE:]] */
-static const OnigCodePoint CR_NEWLINE[] = {
- 1,
- 0x000a, 0x000a,
-}; /* CR_NEWLINE */
-
-/* 'Alpha': [[:Alpha:]] */
-static const OnigCodePoint CR_Alpha[] = {
- 540,
- 0x0041, 0x005a,
- 0x0061, 0x007a,
- 0x00aa, 0x00aa,
- 0x00b5, 0x00b5,
- 0x00ba, 0x00ba,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00f6,
- 0x00f8, 0x02c1,
- 0x02c6, 0x02d1,
- 0x02e0, 0x02e4,
- 0x02ec, 0x02ec,
- 0x02ee, 0x02ee,
- 0x0345, 0x0345,
- 0x0370, 0x0374,
- 0x0376, 0x0377,
- 0x037a, 0x037d,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x03f5,
- 0x03f7, 0x0481,
- 0x048a, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x0559,
- 0x0561, 0x0587,
- 0x05b0, 0x05bd,
- 0x05bf, 0x05bf,
- 0x05c1, 0x05c2,
- 0x05c4, 0x05c5,
- 0x05c7, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f2,
- 0x0610, 0x061a,
- 0x0620, 0x0657,
- 0x0659, 0x065f,
- 0x066e, 0x06d3,
- 0x06d5, 0x06dc,
- 0x06e1, 0x06e8,
- 0x06ed, 0x06ef,
- 0x06fa, 0x06fc,
- 0x06ff, 0x06ff,
- 0x0710, 0x073f,
- 0x074d, 0x07b1,
- 0x07ca, 0x07ea,
- 0x07f4, 0x07f5,
- 0x07fa, 0x07fa,
- 0x0800, 0x0817,
- 0x081a, 0x082c,
- 0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08e9,
- 0x08f0, 0x08fe,
- 0x0900, 0x093b,
- 0x093d, 0x094c,
- 0x094e, 0x0950,
- 0x0955, 0x0963,
- 0x0971, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bd, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09cc,
- 0x09ce, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09f0, 0x09f1,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4c,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a70, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abd, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acc,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3d, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4c,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b71, 0x0b71,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcc,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4c,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbd, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccc,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4c,
- 0x0d4e, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d7a, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df3,
- 0x0e01, 0x0e3a,
- 0x0e40, 0x0e46,
- 0x0e4d, 0x0e4d,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ecd, 0x0ecd,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f00,
- 0x0f40, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f81,
- 0x0f88, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x1000, 0x1036,
- 0x1038, 0x1038,
- 0x103b, 0x103f,
- 0x1050, 0x1062,
- 0x1065, 0x1068,
- 0x106e, 0x1086,
- 0x108e, 0x108e,
- 0x109c, 0x109d,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x10fa,
- 0x10fc, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135f, 0x135f,
- 0x1380, 0x138f,
- 0x13a0, 0x13f4,
- 0x1401, 0x166c,
- 0x166f, 0x167f,
- 0x1681, 0x169a,
- 0x16a0, 0x16ea,
- 0x16ee, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1713,
- 0x1720, 0x1733,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17b3,
- 0x17b6, 0x17c8,
- 0x17d7, 0x17d7,
- 0x17dc, 0x17dc,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x1938,
- 0x1950, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x1a00, 0x1a1b,
- 0x1a20, 0x1a5e,
- 0x1a61, 0x1a74,
- 0x1aa7, 0x1aa7,
- 0x1b00, 0x1b33,
- 0x1b35, 0x1b43,
- 0x1b45, 0x1b4b,
- 0x1b80, 0x1ba9,
- 0x1bac, 0x1baf,
- 0x1bba, 0x1be5,
- 0x1be7, 0x1bf1,
- 0x1c00, 0x1c35,
- 0x1c4d, 0x1c4f,
- 0x1c5a, 0x1c7d,
- 0x1ce9, 0x1cec,
- 0x1cee, 0x1cf3,
- 0x1cf5, 0x1cf6,
- 0x1d00, 0x1dbf,
- 0x1e00, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fbc,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fcc,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fe0, 0x1fec,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffc,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210a, 0x2113,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x212f, 0x2139,
- 0x213c, 0x213f,
- 0x2145, 0x2149,
- 0x214e, 0x214e,
- 0x2160, 0x2188,
- 0x24b6, 0x24e9,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2ce4,
- 0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d6f,
- 0x2d80, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2dff,
- 0x2e2f, 0x2e2f,
- 0x3005, 0x3007,
- 0x3021, 0x3029,
- 0x3031, 0x3035,
- 0x3038, 0x303c,
- 0x3041, 0x3096,
- 0x309d, 0x309f,
- 0x30a1, 0x30fa,
- 0x30fc, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x31a0, 0x31ba,
- 0x31f0, 0x31ff,
- 0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa4d0, 0xa4fd,
- 0xa500, 0xa60c,
- 0xa610, 0xa61f,
- 0xa62a, 0xa62b,
- 0xa640, 0xa66e,
- 0xa674, 0xa67b,
- 0xa67f, 0xa697,
- 0xa69f, 0xa6ef,
- 0xa717, 0xa71f,
- 0xa722, 0xa788,
- 0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
- 0xa803, 0xa805,
- 0xa807, 0xa80a,
- 0xa80c, 0xa827,
- 0xa840, 0xa873,
- 0xa880, 0xa8c3,
- 0xa8f2, 0xa8f7,
- 0xa8fb, 0xa8fb,
- 0xa90a, 0xa92a,
- 0xa930, 0xa952,
- 0xa960, 0xa97c,
- 0xa980, 0xa9b2,
- 0xa9b4, 0xa9bf,
- 0xa9cf, 0xa9cf,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa60, 0xaa76,
- 0xaa7a, 0xaa7a,
- 0xaa80, 0xaabe,
- 0xaac0, 0xaac0,
- 0xaac2, 0xaac2,
- 0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf5,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabea,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb28,
- 0xfb2a, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbb1,
- 0xfbd3, 0xfd3d,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfb,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xff21, 0xff3a,
- 0xff41, 0xff5a,
- 0xff66, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10140, 0x10174,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x103a0, 0x103c3,
- 0x103c8, 0x103cf,
- 0x103d1, 0x103d5,
- 0x10400, 0x1049d,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10900, 0x10915,
- 0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a60, 0x10a7c,
- 0x10b00, 0x10b35,
- 0x10b40, 0x10b55,
- 0x10b60, 0x10b72,
- 0x10c00, 0x10c48,
- 0x11000, 0x11045,
- 0x11082, 0x110b8,
- 0x110d0, 0x110e8,
- 0x11100, 0x11132,
- 0x11180, 0x111bf,
- 0x111c1, 0x111c4,
- 0x11680, 0x116b5,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f93, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d6c0,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6fa,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d734,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d76e,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d7a8,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7cb,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
-}; /* CR_Alpha */
-
-/* 'Blank': [[:Blank:]] */
-static const OnigCodePoint CR_Blank[] = {
- 9,
- 0x0009, 0x0009,
- 0x0020, 0x0020,
- 0x00a0, 0x00a0,
- 0x1680, 0x1680,
- 0x180e, 0x180e,
- 0x2000, 0x200a,
- 0x202f, 0x202f,
- 0x205f, 0x205f,
- 0x3000, 0x3000,
-}; /* CR_Blank */
-
-/* 'Cntrl': [[:Cntrl:]] */
-static const OnigCodePoint CR_Cntrl[] = {
- 2,
- 0x0000, 0x001f,
- 0x007f, 0x009f,
-}; /* CR_Cntrl */
-
-/* 'Digit': [[:Digit:]] */
-static const OnigCodePoint CR_Digit[] = {
- 42,
- 0x0030, 0x0039,
- 0x0660, 0x0669,
- 0x06f0, 0x06f9,
- 0x07c0, 0x07c9,
- 0x0966, 0x096f,
- 0x09e6, 0x09ef,
- 0x0a66, 0x0a6f,
- 0x0ae6, 0x0aef,
- 0x0b66, 0x0b6f,
- 0x0be6, 0x0bef,
- 0x0c66, 0x0c6f,
- 0x0ce6, 0x0cef,
- 0x0d66, 0x0d6f,
- 0x0e50, 0x0e59,
- 0x0ed0, 0x0ed9,
- 0x0f20, 0x0f29,
- 0x1040, 0x1049,
- 0x1090, 0x1099,
- 0x17e0, 0x17e9,
- 0x1810, 0x1819,
- 0x1946, 0x194f,
- 0x19d0, 0x19d9,
- 0x1a80, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1b50, 0x1b59,
- 0x1bb0, 0x1bb9,
- 0x1c40, 0x1c49,
- 0x1c50, 0x1c59,
- 0xa620, 0xa629,
- 0xa8d0, 0xa8d9,
- 0xa900, 0xa909,
- 0xa9d0, 0xa9d9,
- 0xaa50, 0xaa59,
- 0xabf0, 0xabf9,
- 0xff10, 0xff19,
- 0x104a0, 0x104a9,
- 0x11066, 0x1106f,
- 0x110f0, 0x110f9,
- 0x11136, 0x1113f,
- 0x111d0, 0x111d9,
- 0x116c0, 0x116c9,
- 0x1d7ce, 0x1d7ff,
-}; /* CR_Digit */
-
-/* 'Graph': [[:Graph:]] */
-static const OnigCodePoint CR_Graph[] = {
- 544,
- 0x0021, 0x007e,
- 0x00a1, 0x0377,
- 0x037a, 0x037e,
- 0x0384, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x055f,
- 0x0561, 0x0587,
- 0x0589, 0x058a,
- 0x058f, 0x058f,
- 0x0591, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f4,
- 0x0600, 0x0604,
- 0x0606, 0x061b,
- 0x061e, 0x070d,
- 0x070f, 0x074a,
- 0x074d, 0x07b1,
- 0x07c0, 0x07fa,
- 0x0800, 0x082d,
- 0x0830, 0x083e,
- 0x0840, 0x085b,
- 0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
- 0x0900, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bc, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09e6, 0x09fb,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3c, 0x0a3c,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4d,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a66, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abc, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acd,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3c, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4d,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b66, 0x0b77,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcd,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0be6, 0x0bfa,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4d,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c66, 0x0c6f,
- 0x0c78, 0x0c7f,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbc, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccd,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0ce6, 0x0cef,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d66, 0x0d75,
- 0x0d79, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dca, 0x0dca,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df4,
- 0x0e01, 0x0e3a,
- 0x0e3f, 0x0e5b,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ec8, 0x0ecd,
- 0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x0fbe, 0x0fcc,
- 0x0fce, 0x0fda,
- 0x1000, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135d, 0x137c,
- 0x1380, 0x1399,
- 0x13a0, 0x13f4,
- 0x1400, 0x167f,
- 0x1681, 0x169c,
- 0x16a0, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1714,
- 0x1720, 0x1736,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17dd,
- 0x17e0, 0x17e9,
- 0x17f0, 0x17f9,
- 0x1800, 0x180d,
- 0x1810, 0x1819,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x193b,
- 0x1940, 0x1940,
- 0x1944, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x19d0, 0x19da,
- 0x19de, 0x1a1b,
- 0x1a1e, 0x1a5e,
- 0x1a60, 0x1a7c,
- 0x1a7f, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1aa0, 0x1aad,
- 0x1b00, 0x1b4b,
- 0x1b50, 0x1b7c,
- 0x1b80, 0x1bf3,
- 0x1bfc, 0x1c37,
- 0x1c3b, 0x1c49,
- 0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd0, 0x1cf6,
- 0x1d00, 0x1de6,
- 0x1dfc, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fc4,
- 0x1fc6, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fdd, 0x1fef,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffe,
- 0x200b, 0x2027,
- 0x202a, 0x202e,
- 0x2030, 0x205e,
- 0x2060, 0x2064,
- 0x206a, 0x2071,
- 0x2074, 0x208e,
- 0x2090, 0x209c,
- 0x20a0, 0x20b9,
- 0x20d0, 0x20f0,
- 0x2100, 0x2189,
- 0x2190, 0x23f3,
- 0x2400, 0x2426,
- 0x2440, 0x244a,
- 0x2460, 0x26ff,
- 0x2701, 0x2b4c,
- 0x2b50, 0x2b59,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2cf3,
- 0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d70,
- 0x2d7f, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2e3b,
- 0x2e80, 0x2e99,
- 0x2e9b, 0x2ef3,
- 0x2f00, 0x2fd5,
- 0x2ff0, 0x2ffb,
- 0x3001, 0x303f,
- 0x3041, 0x3096,
- 0x3099, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x3190, 0x31ba,
- 0x31c0, 0x31e3,
- 0x31f0, 0x321e,
- 0x3220, 0x32fe,
- 0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa490, 0xa4c6,
- 0xa4d0, 0xa62b,
- 0xa640, 0xa697,
- 0xa69f, 0xa6f7,
- 0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa82b,
- 0xa830, 0xa839,
- 0xa840, 0xa877,
- 0xa880, 0xa8c4,
- 0xa8ce, 0xa8d9,
- 0xa8e0, 0xa8fb,
- 0xa900, 0xa953,
- 0xa95f, 0xa97c,
- 0xa980, 0xa9cd,
- 0xa9cf, 0xa9d9,
- 0xa9de, 0xa9df,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa50, 0xaa59,
- 0xaa5c, 0xaa7b,
- 0xaa80, 0xaac2,
- 0xaadb, 0xaaf6,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabed,
- 0xabf0, 0xabf9,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xe000, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbc1,
- 0xfbd3, 0xfd3f,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfd,
- 0xfe00, 0xfe19,
- 0xfe20, 0xfe26,
- 0xfe30, 0xfe52,
- 0xfe54, 0xfe66,
- 0xfe68, 0xfe6b,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xfeff, 0xfeff,
- 0xff01, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0xffe0, 0xffe6,
- 0xffe8, 0xffee,
- 0xfff9, 0xfffd,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10100, 0x10102,
- 0x10107, 0x10133,
- 0x10137, 0x1018a,
- 0x10190, 0x1019b,
- 0x101d0, 0x101fd,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10320, 0x10323,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x1039f, 0x103c3,
- 0x103c8, 0x103d5,
- 0x10400, 0x1049d,
- 0x104a0, 0x104a9,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10857, 0x1085f,
- 0x10900, 0x1091b,
- 0x1091f, 0x10939,
- 0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a38, 0x10a3a,
- 0x10a3f, 0x10a47,
- 0x10a50, 0x10a58,
- 0x10a60, 0x10a7f,
- 0x10b00, 0x10b35,
- 0x10b39, 0x10b55,
- 0x10b58, 0x10b72,
- 0x10b78, 0x10b7f,
- 0x10c00, 0x10c48,
- 0x10e60, 0x10e7e,
- 0x11000, 0x1104d,
- 0x11052, 0x1106f,
- 0x11080, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x12470, 0x12473,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d000, 0x1d0f5,
- 0x1d100, 0x1d126,
- 0x1d129, 0x1d1dd,
- 0x1d200, 0x1d245,
- 0x1d300, 0x1d356,
- 0x1d360, 0x1d371,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d7cb,
- 0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
- 0x1f000, 0x1f02b,
- 0x1f030, 0x1f093,
- 0x1f0a0, 0x1f0ae,
- 0x1f0b1, 0x1f0be,
- 0x1f0c1, 0x1f0cf,
- 0x1f0d1, 0x1f0df,
- 0x1f100, 0x1f10a,
- 0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
- 0x1f170, 0x1f19a,
- 0x1f1e6, 0x1f202,
- 0x1f210, 0x1f23a,
- 0x1f240, 0x1f248,
- 0x1f250, 0x1f251,
- 0x1f300, 0x1f320,
- 0x1f330, 0x1f335,
- 0x1f337, 0x1f37c,
- 0x1f380, 0x1f393,
- 0x1f3a0, 0x1f3c4,
- 0x1f3c6, 0x1f3ca,
- 0x1f3e0, 0x1f3f0,
- 0x1f400, 0x1f43e,
- 0x1f440, 0x1f440,
- 0x1f442, 0x1f4f7,
- 0x1f4f9, 0x1f4fc,
- 0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
- 0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
- 0x1f645, 0x1f64f,
- 0x1f680, 0x1f6c5,
- 0x1f700, 0x1f773,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
- 0xe0001, 0xe0001,
- 0xe0020, 0xe007f,
- 0xe0100, 0xe01ef,
- 0xf0000, 0xffffd,
- 0x100000, 0x10fffd,
-}; /* CR_Graph */
-
-/* 'Lower': [[:Lower:]] */
-static const OnigCodePoint CR_Lower[] = {
- 618,
- 0x0061, 0x007a,
- 0x00aa, 0x00aa,
- 0x00b5, 0x00b5,
- 0x00ba, 0x00ba,
- 0x00df, 0x00f6,
- 0x00f8, 0x00ff,
- 0x0101, 0x0101,
- 0x0103, 0x0103,
- 0x0105, 0x0105,
- 0x0107, 0x0107,
- 0x0109, 0x0109,
- 0x010b, 0x010b,
- 0x010d, 0x010d,
- 0x010f, 0x010f,
- 0x0111, 0x0111,
- 0x0113, 0x0113,
- 0x0115, 0x0115,
- 0x0117, 0x0117,
- 0x0119, 0x0119,
- 0x011b, 0x011b,
- 0x011d, 0x011d,
- 0x011f, 0x011f,
- 0x0121, 0x0121,
- 0x0123, 0x0123,
- 0x0125, 0x0125,
- 0x0127, 0x0127,
- 0x0129, 0x0129,
- 0x012b, 0x012b,
- 0x012d, 0x012d,
- 0x012f, 0x012f,
- 0x0131, 0x0131,
- 0x0133, 0x0133,
- 0x0135, 0x0135,
- 0x0137, 0x0138,
- 0x013a, 0x013a,
- 0x013c, 0x013c,
- 0x013e, 0x013e,
- 0x0140, 0x0140,
- 0x0142, 0x0142,
- 0x0144, 0x0144,
- 0x0146, 0x0146,
- 0x0148, 0x0149,
- 0x014b, 0x014b,
- 0x014d, 0x014d,
- 0x014f, 0x014f,
- 0x0151, 0x0151,
- 0x0153, 0x0153,
- 0x0155, 0x0155,
- 0x0157, 0x0157,
- 0x0159, 0x0159,
- 0x015b, 0x015b,
- 0x015d, 0x015d,
- 0x015f, 0x015f,
- 0x0161, 0x0161,
- 0x0163, 0x0163,
- 0x0165, 0x0165,
- 0x0167, 0x0167,
- 0x0169, 0x0169,
- 0x016b, 0x016b,
- 0x016d, 0x016d,
- 0x016f, 0x016f,
- 0x0171, 0x0171,
- 0x0173, 0x0173,
- 0x0175, 0x0175,
- 0x0177, 0x0177,
- 0x017a, 0x017a,
- 0x017c, 0x017c,
- 0x017e, 0x0180,
- 0x0183, 0x0183,
- 0x0185, 0x0185,
- 0x0188, 0x0188,
- 0x018c, 0x018d,
- 0x0192, 0x0192,
- 0x0195, 0x0195,
- 0x0199, 0x019b,
- 0x019e, 0x019e,
- 0x01a1, 0x01a1,
- 0x01a3, 0x01a3,
- 0x01a5, 0x01a5,
- 0x01a8, 0x01a8,
- 0x01aa, 0x01ab,
- 0x01ad, 0x01ad,
- 0x01b0, 0x01b0,
- 0x01b4, 0x01b4,
- 0x01b6, 0x01b6,
- 0x01b9, 0x01ba,
- 0x01bd, 0x01bf,
- 0x01c6, 0x01c6,
- 0x01c9, 0x01c9,
- 0x01cc, 0x01cc,
- 0x01ce, 0x01ce,
- 0x01d0, 0x01d0,
- 0x01d2, 0x01d2,
- 0x01d4, 0x01d4,
- 0x01d6, 0x01d6,
- 0x01d8, 0x01d8,
- 0x01da, 0x01da,
- 0x01dc, 0x01dd,
- 0x01df, 0x01df,
- 0x01e1, 0x01e1,
- 0x01e3, 0x01e3,
- 0x01e5, 0x01e5,
- 0x01e7, 0x01e7,
- 0x01e9, 0x01e9,
- 0x01eb, 0x01eb,
- 0x01ed, 0x01ed,
- 0x01ef, 0x01f0,
- 0x01f3, 0x01f3,
- 0x01f5, 0x01f5,
- 0x01f9, 0x01f9,
- 0x01fb, 0x01fb,
- 0x01fd, 0x01fd,
- 0x01ff, 0x01ff,
- 0x0201, 0x0201,
- 0x0203, 0x0203,
- 0x0205, 0x0205,
- 0x0207, 0x0207,
- 0x0209, 0x0209,
- 0x020b, 0x020b,
- 0x020d, 0x020d,
- 0x020f, 0x020f,
- 0x0211, 0x0211,
- 0x0213, 0x0213,
- 0x0215, 0x0215,
- 0x0217, 0x0217,
- 0x0219, 0x0219,
- 0x021b, 0x021b,
- 0x021d, 0x021d,
- 0x021f, 0x021f,
- 0x0221, 0x0221,
- 0x0223, 0x0223,
- 0x0225, 0x0225,
- 0x0227, 0x0227,
- 0x0229, 0x0229,
- 0x022b, 0x022b,
- 0x022d, 0x022d,
- 0x022f, 0x022f,
- 0x0231, 0x0231,
- 0x0233, 0x0239,
- 0x023c, 0x023c,
- 0x023f, 0x0240,
- 0x0242, 0x0242,
- 0x0247, 0x0247,
- 0x0249, 0x0249,
- 0x024b, 0x024b,
- 0x024d, 0x024d,
- 0x024f, 0x0293,
- 0x0295, 0x02b8,
- 0x02c0, 0x02c1,
- 0x02e0, 0x02e4,
- 0x0345, 0x0345,
- 0x0371, 0x0371,
- 0x0373, 0x0373,
- 0x0377, 0x0377,
- 0x037a, 0x037d,
- 0x0390, 0x0390,
- 0x03ac, 0x03ce,
- 0x03d0, 0x03d1,
- 0x03d5, 0x03d7,
- 0x03d9, 0x03d9,
- 0x03db, 0x03db,
- 0x03dd, 0x03dd,
- 0x03df, 0x03df,
- 0x03e1, 0x03e1,
- 0x03e3, 0x03e3,
- 0x03e5, 0x03e5,
- 0x03e7, 0x03e7,
- 0x03e9, 0x03e9,
- 0x03eb, 0x03eb,
- 0x03ed, 0x03ed,
- 0x03ef, 0x03f3,
- 0x03f5, 0x03f5,
- 0x03f8, 0x03f8,
- 0x03fb, 0x03fc,
- 0x0430, 0x045f,
- 0x0461, 0x0461,
- 0x0463, 0x0463,
- 0x0465, 0x0465,
- 0x0467, 0x0467,
- 0x0469, 0x0469,
- 0x046b, 0x046b,
- 0x046d, 0x046d,
- 0x046f, 0x046f,
- 0x0471, 0x0471,
- 0x0473, 0x0473,
- 0x0475, 0x0475,
- 0x0477, 0x0477,
- 0x0479, 0x0479,
- 0x047b, 0x047b,
- 0x047d, 0x047d,
- 0x047f, 0x047f,
- 0x0481, 0x0481,
- 0x048b, 0x048b,
- 0x048d, 0x048d,
- 0x048f, 0x048f,
- 0x0491, 0x0491,
- 0x0493, 0x0493,
- 0x0495, 0x0495,
- 0x0497, 0x0497,
- 0x0499, 0x0499,
- 0x049b, 0x049b,
- 0x049d, 0x049d,
- 0x049f, 0x049f,
- 0x04a1, 0x04a1,
- 0x04a3, 0x04a3,
- 0x04a5, 0x04a5,
- 0x04a7, 0x04a7,
- 0x04a9, 0x04a9,
- 0x04ab, 0x04ab,
- 0x04ad, 0x04ad,
- 0x04af, 0x04af,
- 0x04b1, 0x04b1,
- 0x04b3, 0x04b3,
- 0x04b5, 0x04b5,
- 0x04b7, 0x04b7,
- 0x04b9, 0x04b9,
- 0x04bb, 0x04bb,
- 0x04bd, 0x04bd,
- 0x04bf, 0x04bf,
- 0x04c2, 0x04c2,
- 0x04c4, 0x04c4,
- 0x04c6, 0x04c6,
- 0x04c8, 0x04c8,
- 0x04ca, 0x04ca,
- 0x04cc, 0x04cc,
- 0x04ce, 0x04cf,
- 0x04d1, 0x04d1,
- 0x04d3, 0x04d3,
- 0x04d5, 0x04d5,
- 0x04d7, 0x04d7,
- 0x04d9, 0x04d9,
- 0x04db, 0x04db,
- 0x04dd, 0x04dd,
- 0x04df, 0x04df,
- 0x04e1, 0x04e1,
- 0x04e3, 0x04e3,
- 0x04e5, 0x04e5,
- 0x04e7, 0x04e7,
- 0x04e9, 0x04e9,
- 0x04eb, 0x04eb,
- 0x04ed, 0x04ed,
- 0x04ef, 0x04ef,
- 0x04f1, 0x04f1,
- 0x04f3, 0x04f3,
- 0x04f5, 0x04f5,
- 0x04f7, 0x04f7,
- 0x04f9, 0x04f9,
- 0x04fb, 0x04fb,
- 0x04fd, 0x04fd,
- 0x04ff, 0x04ff,
- 0x0501, 0x0501,
- 0x0503, 0x0503,
- 0x0505, 0x0505,
- 0x0507, 0x0507,
- 0x0509, 0x0509,
- 0x050b, 0x050b,
- 0x050d, 0x050d,
- 0x050f, 0x050f,
- 0x0511, 0x0511,
- 0x0513, 0x0513,
- 0x0515, 0x0515,
- 0x0517, 0x0517,
- 0x0519, 0x0519,
- 0x051b, 0x051b,
- 0x051d, 0x051d,
- 0x051f, 0x051f,
- 0x0521, 0x0521,
- 0x0523, 0x0523,
- 0x0525, 0x0525,
- 0x0527, 0x0527,
- 0x0561, 0x0587,
- 0x1d00, 0x1dbf,
- 0x1e01, 0x1e01,
- 0x1e03, 0x1e03,
- 0x1e05, 0x1e05,
- 0x1e07, 0x1e07,
- 0x1e09, 0x1e09,
- 0x1e0b, 0x1e0b,
- 0x1e0d, 0x1e0d,
- 0x1e0f, 0x1e0f,
- 0x1e11, 0x1e11,
- 0x1e13, 0x1e13,
- 0x1e15, 0x1e15,
- 0x1e17, 0x1e17,
- 0x1e19, 0x1e19,
- 0x1e1b, 0x1e1b,
- 0x1e1d, 0x1e1d,
- 0x1e1f, 0x1e1f,
- 0x1e21, 0x1e21,
- 0x1e23, 0x1e23,
- 0x1e25, 0x1e25,
- 0x1e27, 0x1e27,
- 0x1e29, 0x1e29,
- 0x1e2b, 0x1e2b,
- 0x1e2d, 0x1e2d,
- 0x1e2f, 0x1e2f,
- 0x1e31, 0x1e31,
- 0x1e33, 0x1e33,
- 0x1e35, 0x1e35,
- 0x1e37, 0x1e37,
- 0x1e39, 0x1e39,
- 0x1e3b, 0x1e3b,
- 0x1e3d, 0x1e3d,
- 0x1e3f, 0x1e3f,
- 0x1e41, 0x1e41,
- 0x1e43, 0x1e43,
- 0x1e45, 0x1e45,
- 0x1e47, 0x1e47,
- 0x1e49, 0x1e49,
- 0x1e4b, 0x1e4b,
- 0x1e4d, 0x1e4d,
- 0x1e4f, 0x1e4f,
- 0x1e51, 0x1e51,
- 0x1e53, 0x1e53,
- 0x1e55, 0x1e55,
- 0x1e57, 0x1e57,
- 0x1e59, 0x1e59,
- 0x1e5b, 0x1e5b,
- 0x1e5d, 0x1e5d,
- 0x1e5f, 0x1e5f,
- 0x1e61, 0x1e61,
- 0x1e63, 0x1e63,
- 0x1e65, 0x1e65,
- 0x1e67, 0x1e67,
- 0x1e69, 0x1e69,
- 0x1e6b, 0x1e6b,
- 0x1e6d, 0x1e6d,
- 0x1e6f, 0x1e6f,
- 0x1e71, 0x1e71,
- 0x1e73, 0x1e73,
- 0x1e75, 0x1e75,
- 0x1e77, 0x1e77,
- 0x1e79, 0x1e79,
- 0x1e7b, 0x1e7b,
- 0x1e7d, 0x1e7d,
- 0x1e7f, 0x1e7f,
- 0x1e81, 0x1e81,
- 0x1e83, 0x1e83,
- 0x1e85, 0x1e85,
- 0x1e87, 0x1e87,
- 0x1e89, 0x1e89,
- 0x1e8b, 0x1e8b,
- 0x1e8d, 0x1e8d,
- 0x1e8f, 0x1e8f,
- 0x1e91, 0x1e91,
- 0x1e93, 0x1e93,
- 0x1e95, 0x1e9d,
- 0x1e9f, 0x1e9f,
- 0x1ea1, 0x1ea1,
- 0x1ea3, 0x1ea3,
- 0x1ea5, 0x1ea5,
- 0x1ea7, 0x1ea7,
- 0x1ea9, 0x1ea9,
- 0x1eab, 0x1eab,
- 0x1ead, 0x1ead,
- 0x1eaf, 0x1eaf,
- 0x1eb1, 0x1eb1,
- 0x1eb3, 0x1eb3,
- 0x1eb5, 0x1eb5,
- 0x1eb7, 0x1eb7,
- 0x1eb9, 0x1eb9,
- 0x1ebb, 0x1ebb,
- 0x1ebd, 0x1ebd,
- 0x1ebf, 0x1ebf,
- 0x1ec1, 0x1ec1,
- 0x1ec3, 0x1ec3,
- 0x1ec5, 0x1ec5,
- 0x1ec7, 0x1ec7,
- 0x1ec9, 0x1ec9,
- 0x1ecb, 0x1ecb,
- 0x1ecd, 0x1ecd,
- 0x1ecf, 0x1ecf,
- 0x1ed1, 0x1ed1,
- 0x1ed3, 0x1ed3,
- 0x1ed5, 0x1ed5,
- 0x1ed7, 0x1ed7,
- 0x1ed9, 0x1ed9,
- 0x1edb, 0x1edb,
- 0x1edd, 0x1edd,
- 0x1edf, 0x1edf,
- 0x1ee1, 0x1ee1,
- 0x1ee3, 0x1ee3,
- 0x1ee5, 0x1ee5,
- 0x1ee7, 0x1ee7,
- 0x1ee9, 0x1ee9,
- 0x1eeb, 0x1eeb,
- 0x1eed, 0x1eed,
- 0x1eef, 0x1eef,
- 0x1ef1, 0x1ef1,
- 0x1ef3, 0x1ef3,
- 0x1ef5, 0x1ef5,
- 0x1ef7, 0x1ef7,
- 0x1ef9, 0x1ef9,
- 0x1efb, 0x1efb,
- 0x1efd, 0x1efd,
- 0x1eff, 0x1f07,
- 0x1f10, 0x1f15,
- 0x1f20, 0x1f27,
- 0x1f30, 0x1f37,
- 0x1f40, 0x1f45,
- 0x1f50, 0x1f57,
- 0x1f60, 0x1f67,
- 0x1f70, 0x1f7d,
- 0x1f80, 0x1f87,
- 0x1f90, 0x1f97,
- 0x1fa0, 0x1fa7,
- 0x1fb0, 0x1fb4,
- 0x1fb6, 0x1fb7,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fc7,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fd7,
- 0x1fe0, 0x1fe7,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ff7,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
- 0x210a, 0x210a,
- 0x210e, 0x210f,
- 0x2113, 0x2113,
- 0x212f, 0x212f,
- 0x2134, 0x2134,
- 0x2139, 0x2139,
- 0x213c, 0x213d,
- 0x2146, 0x2149,
- 0x214e, 0x214e,
- 0x2170, 0x217f,
- 0x2184, 0x2184,
- 0x24d0, 0x24e9,
- 0x2c30, 0x2c5e,
- 0x2c61, 0x2c61,
- 0x2c65, 0x2c66,
- 0x2c68, 0x2c68,
- 0x2c6a, 0x2c6a,
- 0x2c6c, 0x2c6c,
- 0x2c71, 0x2c71,
- 0x2c73, 0x2c74,
- 0x2c76, 0x2c7d,
- 0x2c81, 0x2c81,
- 0x2c83, 0x2c83,
- 0x2c85, 0x2c85,
- 0x2c87, 0x2c87,
- 0x2c89, 0x2c89,
- 0x2c8b, 0x2c8b,
- 0x2c8d, 0x2c8d,
- 0x2c8f, 0x2c8f,
- 0x2c91, 0x2c91,
- 0x2c93, 0x2c93,
- 0x2c95, 0x2c95,
- 0x2c97, 0x2c97,
- 0x2c99, 0x2c99,
- 0x2c9b, 0x2c9b,
- 0x2c9d, 0x2c9d,
- 0x2c9f, 0x2c9f,
- 0x2ca1, 0x2ca1,
- 0x2ca3, 0x2ca3,
- 0x2ca5, 0x2ca5,
- 0x2ca7, 0x2ca7,
- 0x2ca9, 0x2ca9,
- 0x2cab, 0x2cab,
- 0x2cad, 0x2cad,
- 0x2caf, 0x2caf,
- 0x2cb1, 0x2cb1,
- 0x2cb3, 0x2cb3,
- 0x2cb5, 0x2cb5,
- 0x2cb7, 0x2cb7,
- 0x2cb9, 0x2cb9,
- 0x2cbb, 0x2cbb,
- 0x2cbd, 0x2cbd,
- 0x2cbf, 0x2cbf,
- 0x2cc1, 0x2cc1,
- 0x2cc3, 0x2cc3,
- 0x2cc5, 0x2cc5,
- 0x2cc7, 0x2cc7,
- 0x2cc9, 0x2cc9,
- 0x2ccb, 0x2ccb,
- 0x2ccd, 0x2ccd,
- 0x2ccf, 0x2ccf,
- 0x2cd1, 0x2cd1,
- 0x2cd3, 0x2cd3,
- 0x2cd5, 0x2cd5,
- 0x2cd7, 0x2cd7,
- 0x2cd9, 0x2cd9,
- 0x2cdb, 0x2cdb,
- 0x2cdd, 0x2cdd,
- 0x2cdf, 0x2cdf,
- 0x2ce1, 0x2ce1,
- 0x2ce3, 0x2ce4,
- 0x2cec, 0x2cec,
- 0x2cee, 0x2cee,
- 0x2cf3, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0xa641, 0xa641,
- 0xa643, 0xa643,
- 0xa645, 0xa645,
- 0xa647, 0xa647,
- 0xa649, 0xa649,
- 0xa64b, 0xa64b,
- 0xa64d, 0xa64d,
- 0xa64f, 0xa64f,
- 0xa651, 0xa651,
- 0xa653, 0xa653,
- 0xa655, 0xa655,
- 0xa657, 0xa657,
- 0xa659, 0xa659,
- 0xa65b, 0xa65b,
- 0xa65d, 0xa65d,
- 0xa65f, 0xa65f,
- 0xa661, 0xa661,
- 0xa663, 0xa663,
- 0xa665, 0xa665,
- 0xa667, 0xa667,
- 0xa669, 0xa669,
- 0xa66b, 0xa66b,
- 0xa66d, 0xa66d,
- 0xa681, 0xa681,
- 0xa683, 0xa683,
- 0xa685, 0xa685,
- 0xa687, 0xa687,
- 0xa689, 0xa689,
- 0xa68b, 0xa68b,
- 0xa68d, 0xa68d,
- 0xa68f, 0xa68f,
- 0xa691, 0xa691,
- 0xa693, 0xa693,
- 0xa695, 0xa695,
- 0xa697, 0xa697,
- 0xa723, 0xa723,
- 0xa725, 0xa725,
- 0xa727, 0xa727,
- 0xa729, 0xa729,
- 0xa72b, 0xa72b,
- 0xa72d, 0xa72d,
- 0xa72f, 0xa731,
- 0xa733, 0xa733,
- 0xa735, 0xa735,
- 0xa737, 0xa737,
- 0xa739, 0xa739,
- 0xa73b, 0xa73b,
- 0xa73d, 0xa73d,
- 0xa73f, 0xa73f,
- 0xa741, 0xa741,
- 0xa743, 0xa743,
- 0xa745, 0xa745,
- 0xa747, 0xa747,
- 0xa749, 0xa749,
- 0xa74b, 0xa74b,
- 0xa74d, 0xa74d,
- 0xa74f, 0xa74f,
- 0xa751, 0xa751,
- 0xa753, 0xa753,
- 0xa755, 0xa755,
- 0xa757, 0xa757,
- 0xa759, 0xa759,
- 0xa75b, 0xa75b,
- 0xa75d, 0xa75d,
- 0xa75f, 0xa75f,
- 0xa761, 0xa761,
- 0xa763, 0xa763,
- 0xa765, 0xa765,
- 0xa767, 0xa767,
- 0xa769, 0xa769,
- 0xa76b, 0xa76b,
- 0xa76d, 0xa76d,
- 0xa76f, 0xa778,
- 0xa77a, 0xa77a,
- 0xa77c, 0xa77c,
- 0xa77f, 0xa77f,
- 0xa781, 0xa781,
- 0xa783, 0xa783,
- 0xa785, 0xa785,
- 0xa787, 0xa787,
- 0xa78c, 0xa78c,
- 0xa78e, 0xa78e,
- 0xa791, 0xa791,
- 0xa793, 0xa793,
- 0xa7a1, 0xa7a1,
- 0xa7a3, 0xa7a3,
- 0xa7a5, 0xa7a5,
- 0xa7a7, 0xa7a7,
- 0xa7a9, 0xa7a9,
- 0xa7f8, 0xa7fa,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xff41, 0xff5a,
- 0x10428, 0x1044f,
- 0x1d41a, 0x1d433,
- 0x1d44e, 0x1d454,
- 0x1d456, 0x1d467,
- 0x1d482, 0x1d49b,
- 0x1d4b6, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d4cf,
- 0x1d4ea, 0x1d503,
- 0x1d51e, 0x1d537,
- 0x1d552, 0x1d56b,
- 0x1d586, 0x1d59f,
- 0x1d5ba, 0x1d5d3,
- 0x1d5ee, 0x1d607,
- 0x1d622, 0x1d63b,
- 0x1d656, 0x1d66f,
- 0x1d68a, 0x1d6a5,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6e1,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d71b,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d755,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d78f,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7c9,
- 0x1d7cb, 0x1d7cb,
-}; /* CR_Lower */
-
-/* 'Print': [[:Print:]] */
-static const OnigCodePoint CR_Print[] = {
- 541,
- 0x0020, 0x007e,
- 0x00a0, 0x0377,
- 0x037a, 0x037e,
- 0x0384, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x055f,
- 0x0561, 0x0587,
- 0x0589, 0x058a,
- 0x058f, 0x058f,
- 0x0591, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f4,
- 0x0600, 0x0604,
- 0x0606, 0x061b,
- 0x061e, 0x070d,
- 0x070f, 0x074a,
- 0x074d, 0x07b1,
- 0x07c0, 0x07fa,
- 0x0800, 0x082d,
- 0x0830, 0x083e,
- 0x0840, 0x085b,
- 0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
- 0x0900, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bc, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09e6, 0x09fb,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3c, 0x0a3c,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4d,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a66, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abc, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acd,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3c, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4d,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b66, 0x0b77,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcd,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0be6, 0x0bfa,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4d,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c66, 0x0c6f,
- 0x0c78, 0x0c7f,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbc, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccd,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0ce6, 0x0cef,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d66, 0x0d75,
- 0x0d79, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dca, 0x0dca,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df4,
- 0x0e01, 0x0e3a,
- 0x0e3f, 0x0e5b,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ec8, 0x0ecd,
- 0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x0fbe, 0x0fcc,
- 0x0fce, 0x0fda,
- 0x1000, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135d, 0x137c,
- 0x1380, 0x1399,
- 0x13a0, 0x13f4,
- 0x1400, 0x169c,
- 0x16a0, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1714,
- 0x1720, 0x1736,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17dd,
- 0x17e0, 0x17e9,
- 0x17f0, 0x17f9,
- 0x1800, 0x180e,
- 0x1810, 0x1819,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x193b,
- 0x1940, 0x1940,
- 0x1944, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x19d0, 0x19da,
- 0x19de, 0x1a1b,
- 0x1a1e, 0x1a5e,
- 0x1a60, 0x1a7c,
- 0x1a7f, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1aa0, 0x1aad,
- 0x1b00, 0x1b4b,
- 0x1b50, 0x1b7c,
- 0x1b80, 0x1bf3,
- 0x1bfc, 0x1c37,
- 0x1c3b, 0x1c49,
- 0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd0, 0x1cf6,
- 0x1d00, 0x1de6,
- 0x1dfc, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fc4,
- 0x1fc6, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fdd, 0x1fef,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffe,
- 0x2000, 0x2027,
- 0x202a, 0x2064,
- 0x206a, 0x2071,
- 0x2074, 0x208e,
- 0x2090, 0x209c,
- 0x20a0, 0x20b9,
- 0x20d0, 0x20f0,
- 0x2100, 0x2189,
- 0x2190, 0x23f3,
- 0x2400, 0x2426,
- 0x2440, 0x244a,
- 0x2460, 0x26ff,
- 0x2701, 0x2b4c,
- 0x2b50, 0x2b59,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2cf3,
- 0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d70,
- 0x2d7f, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2e3b,
- 0x2e80, 0x2e99,
- 0x2e9b, 0x2ef3,
- 0x2f00, 0x2fd5,
- 0x2ff0, 0x2ffb,
- 0x3000, 0x303f,
- 0x3041, 0x3096,
- 0x3099, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x3190, 0x31ba,
- 0x31c0, 0x31e3,
- 0x31f0, 0x321e,
- 0x3220, 0x32fe,
- 0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa490, 0xa4c6,
- 0xa4d0, 0xa62b,
- 0xa640, 0xa697,
- 0xa69f, 0xa6f7,
- 0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa82b,
- 0xa830, 0xa839,
- 0xa840, 0xa877,
- 0xa880, 0xa8c4,
- 0xa8ce, 0xa8d9,
- 0xa8e0, 0xa8fb,
- 0xa900, 0xa953,
- 0xa95f, 0xa97c,
- 0xa980, 0xa9cd,
- 0xa9cf, 0xa9d9,
- 0xa9de, 0xa9df,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa50, 0xaa59,
- 0xaa5c, 0xaa7b,
- 0xaa80, 0xaac2,
- 0xaadb, 0xaaf6,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabed,
- 0xabf0, 0xabf9,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xe000, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbc1,
- 0xfbd3, 0xfd3f,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfd,
- 0xfe00, 0xfe19,
- 0xfe20, 0xfe26,
- 0xfe30, 0xfe52,
- 0xfe54, 0xfe66,
- 0xfe68, 0xfe6b,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xfeff, 0xfeff,
- 0xff01, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0xffe0, 0xffe6,
- 0xffe8, 0xffee,
- 0xfff9, 0xfffd,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10100, 0x10102,
- 0x10107, 0x10133,
- 0x10137, 0x1018a,
- 0x10190, 0x1019b,
- 0x101d0, 0x101fd,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10320, 0x10323,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x1039f, 0x103c3,
- 0x103c8, 0x103d5,
- 0x10400, 0x1049d,
- 0x104a0, 0x104a9,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10857, 0x1085f,
- 0x10900, 0x1091b,
- 0x1091f, 0x10939,
- 0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a38, 0x10a3a,
- 0x10a3f, 0x10a47,
- 0x10a50, 0x10a58,
- 0x10a60, 0x10a7f,
- 0x10b00, 0x10b35,
- 0x10b39, 0x10b55,
- 0x10b58, 0x10b72,
- 0x10b78, 0x10b7f,
- 0x10c00, 0x10c48,
- 0x10e60, 0x10e7e,
- 0x11000, 0x1104d,
- 0x11052, 0x1106f,
- 0x11080, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x12470, 0x12473,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d000, 0x1d0f5,
- 0x1d100, 0x1d126,
- 0x1d129, 0x1d1dd,
- 0x1d200, 0x1d245,
- 0x1d300, 0x1d356,
- 0x1d360, 0x1d371,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d7cb,
- 0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
- 0x1f000, 0x1f02b,
- 0x1f030, 0x1f093,
- 0x1f0a0, 0x1f0ae,
- 0x1f0b1, 0x1f0be,
- 0x1f0c1, 0x1f0cf,
- 0x1f0d1, 0x1f0df,
- 0x1f100, 0x1f10a,
- 0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
- 0x1f170, 0x1f19a,
- 0x1f1e6, 0x1f202,
- 0x1f210, 0x1f23a,
- 0x1f240, 0x1f248,
- 0x1f250, 0x1f251,
- 0x1f300, 0x1f320,
- 0x1f330, 0x1f335,
- 0x1f337, 0x1f37c,
- 0x1f380, 0x1f393,
- 0x1f3a0, 0x1f3c4,
- 0x1f3c6, 0x1f3ca,
- 0x1f3e0, 0x1f3f0,
- 0x1f400, 0x1f43e,
- 0x1f440, 0x1f440,
- 0x1f442, 0x1f4f7,
- 0x1f4f9, 0x1f4fc,
- 0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
- 0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
- 0x1f645, 0x1f64f,
- 0x1f680, 0x1f6c5,
- 0x1f700, 0x1f773,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
- 0xe0001, 0xe0001,
- 0xe0020, 0xe007f,
- 0xe0100, 0xe01ef,
- 0xf0000, 0xffffd,
- 0x100000, 0x10fffd,
-}; /* CR_Print */
-
-/* 'Punct': [[:Punct:]] */
-static const OnigCodePoint CR_Punct[] = {
- 140,
- 0x0021, 0x0023,
- 0x0025, 0x002a,
- 0x002c, 0x002f,
- 0x003a, 0x003b,
- 0x003f, 0x0040,
- 0x005b, 0x005d,
- 0x005f, 0x005f,
- 0x007b, 0x007b,
- 0x007d, 0x007d,
- 0x00a1, 0x00a1,
- 0x00a7, 0x00a7,
- 0x00ab, 0x00ab,
- 0x00b6, 0x00b7,
- 0x00bb, 0x00bb,
- 0x00bf, 0x00bf,
- 0x037e, 0x037e,
- 0x0387, 0x0387,
- 0x055a, 0x055f,
- 0x0589, 0x058a,
- 0x05be, 0x05be,
- 0x05c0, 0x05c0,
- 0x05c3, 0x05c3,
- 0x05c6, 0x05c6,
- 0x05f3, 0x05f4,
- 0x0609, 0x060a,
- 0x060c, 0x060d,
- 0x061b, 0x061b,
- 0x061e, 0x061f,
- 0x066a, 0x066d,
- 0x06d4, 0x06d4,
- 0x0700, 0x070d,
- 0x07f7, 0x07f9,
- 0x0830, 0x083e,
- 0x085e, 0x085e,
- 0x0964, 0x0965,
- 0x0970, 0x0970,
- 0x0af0, 0x0af0,
- 0x0df4, 0x0df4,
- 0x0e4f, 0x0e4f,
- 0x0e5a, 0x0e5b,
- 0x0f04, 0x0f12,
- 0x0f14, 0x0f14,
- 0x0f3a, 0x0f3d,
- 0x0f85, 0x0f85,
- 0x0fd0, 0x0fd4,
- 0x0fd9, 0x0fda,
- 0x104a, 0x104f,
- 0x10fb, 0x10fb,
- 0x1360, 0x1368,
- 0x1400, 0x1400,
- 0x166d, 0x166e,
- 0x169b, 0x169c,
- 0x16eb, 0x16ed,
- 0x1735, 0x1736,
- 0x17d4, 0x17d6,
- 0x17d8, 0x17da,
- 0x1800, 0x180a,
- 0x1944, 0x1945,
- 0x1a1e, 0x1a1f,
- 0x1aa0, 0x1aa6,
- 0x1aa8, 0x1aad,
- 0x1b5a, 0x1b60,
- 0x1bfc, 0x1bff,
- 0x1c3b, 0x1c3f,
- 0x1c7e, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd3, 0x1cd3,
- 0x2010, 0x2027,
- 0x2030, 0x2043,
- 0x2045, 0x2051,
- 0x2053, 0x205e,
- 0x207d, 0x207e,
- 0x208d, 0x208e,
- 0x2329, 0x232a,
- 0x2768, 0x2775,
- 0x27c5, 0x27c6,
- 0x27e6, 0x27ef,
- 0x2983, 0x2998,
- 0x29d8, 0x29db,
- 0x29fc, 0x29fd,
- 0x2cf9, 0x2cfc,
- 0x2cfe, 0x2cff,
- 0x2d70, 0x2d70,
- 0x2e00, 0x2e2e,
- 0x2e30, 0x2e3b,
- 0x3001, 0x3003,
- 0x3008, 0x3011,
- 0x3014, 0x301f,
- 0x3030, 0x3030,
- 0x303d, 0x303d,
- 0x30a0, 0x30a0,
- 0x30fb, 0x30fb,
- 0xa4fe, 0xa4ff,
- 0xa60d, 0xa60f,
- 0xa673, 0xa673,
- 0xa67e, 0xa67e,
- 0xa6f2, 0xa6f7,
- 0xa874, 0xa877,
- 0xa8ce, 0xa8cf,
- 0xa8f8, 0xa8fa,
- 0xa92e, 0xa92f,
- 0xa95f, 0xa95f,
- 0xa9c1, 0xa9cd,
- 0xa9de, 0xa9df,
- 0xaa5c, 0xaa5f,
- 0xaade, 0xaadf,
- 0xaaf0, 0xaaf1,
- 0xabeb, 0xabeb,
- 0xfd3e, 0xfd3f,
- 0xfe10, 0xfe19,
- 0xfe30, 0xfe52,
- 0xfe54, 0xfe61,
- 0xfe63, 0xfe63,
- 0xfe68, 0xfe68,
- 0xfe6a, 0xfe6b,
- 0xff01, 0xff03,
- 0xff05, 0xff0a,
- 0xff0c, 0xff0f,
- 0xff1a, 0xff1b,
- 0xff1f, 0xff20,
- 0xff3b, 0xff3d,
- 0xff3f, 0xff3f,
- 0xff5b, 0xff5b,
- 0xff5d, 0xff5d,
- 0xff5f, 0xff65,
- 0x10100, 0x10102,
- 0x1039f, 0x1039f,
- 0x103d0, 0x103d0,
- 0x10857, 0x10857,
- 0x1091f, 0x1091f,
- 0x1093f, 0x1093f,
- 0x10a50, 0x10a58,
- 0x10a7f, 0x10a7f,
- 0x10b39, 0x10b3f,
- 0x11047, 0x1104d,
- 0x110bb, 0x110bc,
- 0x110be, 0x110c1,
- 0x11140, 0x11143,
- 0x111c5, 0x111c8,
- 0x12470, 0x12473,
-}; /* CR_Punct */
-
-/* 'Space': [[:Space:]] */
-static const OnigCodePoint CR_Space[] = {
- 11,
- 0x0009, 0x000d,
- 0x0020, 0x0020,
- 0x0085, 0x0085,
- 0x00a0, 0x00a0,
- 0x1680, 0x1680,
- 0x180e, 0x180e,
- 0x2000, 0x200a,
- 0x2028, 0x2029,
- 0x202f, 0x202f,
- 0x205f, 0x205f,
- 0x3000, 0x3000,
-}; /* CR_Space */
-
-/* 'Upper': [[:Upper:]] */
-static const OnigCodePoint CR_Upper[] = {
- 610,
- 0x0041, 0x005a,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00de,
- 0x0100, 0x0100,
- 0x0102, 0x0102,
- 0x0104, 0x0104,
- 0x0106, 0x0106,
- 0x0108, 0x0108,
- 0x010a, 0x010a,
- 0x010c, 0x010c,
- 0x010e, 0x010e,
- 0x0110, 0x0110,
- 0x0112, 0x0112,
- 0x0114, 0x0114,
- 0x0116, 0x0116,
- 0x0118, 0x0118,
- 0x011a, 0x011a,
- 0x011c, 0x011c,
- 0x011e, 0x011e,
- 0x0120, 0x0120,
- 0x0122, 0x0122,
- 0x0124, 0x0124,
- 0x0126, 0x0126,
- 0x0128, 0x0128,
- 0x012a, 0x012a,
- 0x012c, 0x012c,
- 0x012e, 0x012e,
- 0x0130, 0x0130,
- 0x0132, 0x0132,
- 0x0134, 0x0134,
- 0x0136, 0x0136,
- 0x0139, 0x0139,
- 0x013b, 0x013b,
- 0x013d, 0x013d,
- 0x013f, 0x013f,
- 0x0141, 0x0141,
- 0x0143, 0x0143,
- 0x0145, 0x0145,
- 0x0147, 0x0147,
- 0x014a, 0x014a,
- 0x014c, 0x014c,
- 0x014e, 0x014e,
- 0x0150, 0x0150,
- 0x0152, 0x0152,
- 0x0154, 0x0154,
- 0x0156, 0x0156,
- 0x0158, 0x0158,
- 0x015a, 0x015a,
- 0x015c, 0x015c,
- 0x015e, 0x015e,
- 0x0160, 0x0160,
- 0x0162, 0x0162,
- 0x0164, 0x0164,
- 0x0166, 0x0166,
- 0x0168, 0x0168,
- 0x016a, 0x016a,
- 0x016c, 0x016c,
- 0x016e, 0x016e,
- 0x0170, 0x0170,
- 0x0172, 0x0172,
- 0x0174, 0x0174,
- 0x0176, 0x0176,
- 0x0178, 0x0179,
- 0x017b, 0x017b,
- 0x017d, 0x017d,
- 0x0181, 0x0182,
- 0x0184, 0x0184,
- 0x0186, 0x0187,
- 0x0189, 0x018b,
- 0x018e, 0x0191,
- 0x0193, 0x0194,
- 0x0196, 0x0198,
- 0x019c, 0x019d,
- 0x019f, 0x01a0,
- 0x01a2, 0x01a2,
- 0x01a4, 0x01a4,
- 0x01a6, 0x01a7,
- 0x01a9, 0x01a9,
- 0x01ac, 0x01ac,
- 0x01ae, 0x01af,
- 0x01b1, 0x01b3,
- 0x01b5, 0x01b5,
- 0x01b7, 0x01b8,
- 0x01bc, 0x01bc,
- 0x01c4, 0x01c4,
- 0x01c7, 0x01c7,
- 0x01ca, 0x01ca,
- 0x01cd, 0x01cd,
- 0x01cf, 0x01cf,
- 0x01d1, 0x01d1,
- 0x01d3, 0x01d3,
- 0x01d5, 0x01d5,
- 0x01d7, 0x01d7,
- 0x01d9, 0x01d9,
- 0x01db, 0x01db,
- 0x01de, 0x01de,
- 0x01e0, 0x01e0,
- 0x01e2, 0x01e2,
- 0x01e4, 0x01e4,
- 0x01e6, 0x01e6,
- 0x01e8, 0x01e8,
- 0x01ea, 0x01ea,
- 0x01ec, 0x01ec,
- 0x01ee, 0x01ee,
- 0x01f1, 0x01f1,
- 0x01f4, 0x01f4,
- 0x01f6, 0x01f8,
- 0x01fa, 0x01fa,
- 0x01fc, 0x01fc,
- 0x01fe, 0x01fe,
- 0x0200, 0x0200,
- 0x0202, 0x0202,
- 0x0204, 0x0204,
- 0x0206, 0x0206,
- 0x0208, 0x0208,
- 0x020a, 0x020a,
- 0x020c, 0x020c,
- 0x020e, 0x020e,
- 0x0210, 0x0210,
- 0x0212, 0x0212,
- 0x0214, 0x0214,
- 0x0216, 0x0216,
- 0x0218, 0x0218,
- 0x021a, 0x021a,
- 0x021c, 0x021c,
- 0x021e, 0x021e,
- 0x0220, 0x0220,
- 0x0222, 0x0222,
- 0x0224, 0x0224,
- 0x0226, 0x0226,
- 0x0228, 0x0228,
- 0x022a, 0x022a,
- 0x022c, 0x022c,
- 0x022e, 0x022e,
- 0x0230, 0x0230,
- 0x0232, 0x0232,
- 0x023a, 0x023b,
- 0x023d, 0x023e,
- 0x0241, 0x0241,
- 0x0243, 0x0246,
- 0x0248, 0x0248,
- 0x024a, 0x024a,
- 0x024c, 0x024c,
- 0x024e, 0x024e,
- 0x0370, 0x0370,
- 0x0372, 0x0372,
- 0x0376, 0x0376,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x038f,
- 0x0391, 0x03a1,
- 0x03a3, 0x03ab,
- 0x03cf, 0x03cf,
- 0x03d2, 0x03d4,
- 0x03d8, 0x03d8,
- 0x03da, 0x03da,
- 0x03dc, 0x03dc,
- 0x03de, 0x03de,
- 0x03e0, 0x03e0,
- 0x03e2, 0x03e2,
- 0x03e4, 0x03e4,
- 0x03e6, 0x03e6,
- 0x03e8, 0x03e8,
- 0x03ea, 0x03ea,
- 0x03ec, 0x03ec,
- 0x03ee, 0x03ee,
- 0x03f4, 0x03f4,
- 0x03f7, 0x03f7,
- 0x03f9, 0x03fa,
- 0x03fd, 0x042f,
- 0x0460, 0x0460,
- 0x0462, 0x0462,
- 0x0464, 0x0464,
- 0x0466, 0x0466,
- 0x0468, 0x0468,
- 0x046a, 0x046a,
- 0x046c, 0x046c,
- 0x046e, 0x046e,
- 0x0470, 0x0470,
- 0x0472, 0x0472,
- 0x0474, 0x0474,
- 0x0476, 0x0476,
- 0x0478, 0x0478,
- 0x047a, 0x047a,
- 0x047c, 0x047c,
- 0x047e, 0x047e,
- 0x0480, 0x0480,
- 0x048a, 0x048a,
- 0x048c, 0x048c,
- 0x048e, 0x048e,
- 0x0490, 0x0490,
- 0x0492, 0x0492,
- 0x0494, 0x0494,
- 0x0496, 0x0496,
- 0x0498, 0x0498,
- 0x049a, 0x049a,
- 0x049c, 0x049c,
- 0x049e, 0x049e,
- 0x04a0, 0x04a0,
- 0x04a2, 0x04a2,
- 0x04a4, 0x04a4,
- 0x04a6, 0x04a6,
- 0x04a8, 0x04a8,
- 0x04aa, 0x04aa,
- 0x04ac, 0x04ac,
- 0x04ae, 0x04ae,
- 0x04b0, 0x04b0,
- 0x04b2, 0x04b2,
- 0x04b4, 0x04b4,
- 0x04b6, 0x04b6,
- 0x04b8, 0x04b8,
- 0x04ba, 0x04ba,
- 0x04bc, 0x04bc,
- 0x04be, 0x04be,
- 0x04c0, 0x04c1,
- 0x04c3, 0x04c3,
- 0x04c5, 0x04c5,
- 0x04c7, 0x04c7,
- 0x04c9, 0x04c9,
- 0x04cb, 0x04cb,
- 0x04cd, 0x04cd,
- 0x04d0, 0x04d0,
- 0x04d2, 0x04d2,
- 0x04d4, 0x04d4,
- 0x04d6, 0x04d6,
- 0x04d8, 0x04d8,
- 0x04da, 0x04da,
- 0x04dc, 0x04dc,
- 0x04de, 0x04de,
- 0x04e0, 0x04e0,
- 0x04e2, 0x04e2,
- 0x04e4, 0x04e4,
- 0x04e6, 0x04e6,
- 0x04e8, 0x04e8,
- 0x04ea, 0x04ea,
- 0x04ec, 0x04ec,
- 0x04ee, 0x04ee,
- 0x04f0, 0x04f0,
- 0x04f2, 0x04f2,
- 0x04f4, 0x04f4,
- 0x04f6, 0x04f6,
- 0x04f8, 0x04f8,
- 0x04fa, 0x04fa,
- 0x04fc, 0x04fc,
- 0x04fe, 0x04fe,
- 0x0500, 0x0500,
- 0x0502, 0x0502,
- 0x0504, 0x0504,
- 0x0506, 0x0506,
- 0x0508, 0x0508,
- 0x050a, 0x050a,
- 0x050c, 0x050c,
- 0x050e, 0x050e,
- 0x0510, 0x0510,
- 0x0512, 0x0512,
- 0x0514, 0x0514,
- 0x0516, 0x0516,
- 0x0518, 0x0518,
- 0x051a, 0x051a,
- 0x051c, 0x051c,
- 0x051e, 0x051e,
- 0x0520, 0x0520,
- 0x0522, 0x0522,
- 0x0524, 0x0524,
- 0x0526, 0x0526,
- 0x0531, 0x0556,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x1e00, 0x1e00,
- 0x1e02, 0x1e02,
- 0x1e04, 0x1e04,
- 0x1e06, 0x1e06,
- 0x1e08, 0x1e08,
- 0x1e0a, 0x1e0a,
- 0x1e0c, 0x1e0c,
- 0x1e0e, 0x1e0e,
- 0x1e10, 0x1e10,
- 0x1e12, 0x1e12,
- 0x1e14, 0x1e14,
- 0x1e16, 0x1e16,
- 0x1e18, 0x1e18,
- 0x1e1a, 0x1e1a,
- 0x1e1c, 0x1e1c,
- 0x1e1e, 0x1e1e,
- 0x1e20, 0x1e20,
- 0x1e22, 0x1e22,
- 0x1e24, 0x1e24,
- 0x1e26, 0x1e26,
- 0x1e28, 0x1e28,
- 0x1e2a, 0x1e2a,
- 0x1e2c, 0x1e2c,
- 0x1e2e, 0x1e2e,
- 0x1e30, 0x1e30,
- 0x1e32, 0x1e32,
- 0x1e34, 0x1e34,
- 0x1e36, 0x1e36,
- 0x1e38, 0x1e38,
- 0x1e3a, 0x1e3a,
- 0x1e3c, 0x1e3c,
- 0x1e3e, 0x1e3e,
- 0x1e40, 0x1e40,
- 0x1e42, 0x1e42,
- 0x1e44, 0x1e44,
- 0x1e46, 0x1e46,
- 0x1e48, 0x1e48,
- 0x1e4a, 0x1e4a,
- 0x1e4c, 0x1e4c,
- 0x1e4e, 0x1e4e,
- 0x1e50, 0x1e50,
- 0x1e52, 0x1e52,
- 0x1e54, 0x1e54,
- 0x1e56, 0x1e56,
- 0x1e58, 0x1e58,
- 0x1e5a, 0x1e5a,
- 0x1e5c, 0x1e5c,
- 0x1e5e, 0x1e5e,
- 0x1e60, 0x1e60,
- 0x1e62, 0x1e62,
- 0x1e64, 0x1e64,
- 0x1e66, 0x1e66,
- 0x1e68, 0x1e68,
- 0x1e6a, 0x1e6a,
- 0x1e6c, 0x1e6c,
- 0x1e6e, 0x1e6e,
- 0x1e70, 0x1e70,
- 0x1e72, 0x1e72,
- 0x1e74, 0x1e74,
- 0x1e76, 0x1e76,
- 0x1e78, 0x1e78,
- 0x1e7a, 0x1e7a,
- 0x1e7c, 0x1e7c,
- 0x1e7e, 0x1e7e,
- 0x1e80, 0x1e80,
- 0x1e82, 0x1e82,
- 0x1e84, 0x1e84,
- 0x1e86, 0x1e86,
- 0x1e88, 0x1e88,
- 0x1e8a, 0x1e8a,
- 0x1e8c, 0x1e8c,
- 0x1e8e, 0x1e8e,
- 0x1e90, 0x1e90,
- 0x1e92, 0x1e92,
- 0x1e94, 0x1e94,
- 0x1e9e, 0x1e9e,
- 0x1ea0, 0x1ea0,
- 0x1ea2, 0x1ea2,
- 0x1ea4, 0x1ea4,
- 0x1ea6, 0x1ea6,
- 0x1ea8, 0x1ea8,
- 0x1eaa, 0x1eaa,
- 0x1eac, 0x1eac,
- 0x1eae, 0x1eae,
- 0x1eb0, 0x1eb0,
- 0x1eb2, 0x1eb2,
- 0x1eb4, 0x1eb4,
- 0x1eb6, 0x1eb6,
- 0x1eb8, 0x1eb8,
- 0x1eba, 0x1eba,
- 0x1ebc, 0x1ebc,
- 0x1ebe, 0x1ebe,
- 0x1ec0, 0x1ec0,
- 0x1ec2, 0x1ec2,
- 0x1ec4, 0x1ec4,
- 0x1ec6, 0x1ec6,
- 0x1ec8, 0x1ec8,
- 0x1eca, 0x1eca,
- 0x1ecc, 0x1ecc,
- 0x1ece, 0x1ece,
- 0x1ed0, 0x1ed0,
- 0x1ed2, 0x1ed2,
- 0x1ed4, 0x1ed4,
- 0x1ed6, 0x1ed6,
- 0x1ed8, 0x1ed8,
- 0x1eda, 0x1eda,
- 0x1edc, 0x1edc,
- 0x1ede, 0x1ede,
- 0x1ee0, 0x1ee0,
- 0x1ee2, 0x1ee2,
- 0x1ee4, 0x1ee4,
- 0x1ee6, 0x1ee6,
- 0x1ee8, 0x1ee8,
- 0x1eea, 0x1eea,
- 0x1eec, 0x1eec,
- 0x1eee, 0x1eee,
- 0x1ef0, 0x1ef0,
- 0x1ef2, 0x1ef2,
- 0x1ef4, 0x1ef4,
- 0x1ef6, 0x1ef6,
- 0x1ef8, 0x1ef8,
- 0x1efa, 0x1efa,
- 0x1efc, 0x1efc,
- 0x1efe, 0x1efe,
- 0x1f08, 0x1f0f,
- 0x1f18, 0x1f1d,
- 0x1f28, 0x1f2f,
- 0x1f38, 0x1f3f,
- 0x1f48, 0x1f4d,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f5f,
- 0x1f68, 0x1f6f,
- 0x1fb8, 0x1fbb,
- 0x1fc8, 0x1fcb,
- 0x1fd8, 0x1fdb,
- 0x1fe8, 0x1fec,
- 0x1ff8, 0x1ffb,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210b, 0x210d,
- 0x2110, 0x2112,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x2130, 0x2133,
- 0x213e, 0x213f,
- 0x2145, 0x2145,
- 0x2160, 0x216f,
- 0x2183, 0x2183,
- 0x24b6, 0x24cf,
- 0x2c00, 0x2c2e,
- 0x2c60, 0x2c60,
- 0x2c62, 0x2c64,
- 0x2c67, 0x2c67,
- 0x2c69, 0x2c69,
- 0x2c6b, 0x2c6b,
- 0x2c6d, 0x2c70,
- 0x2c72, 0x2c72,
- 0x2c75, 0x2c75,
- 0x2c7e, 0x2c80,
- 0x2c82, 0x2c82,
- 0x2c84, 0x2c84,
- 0x2c86, 0x2c86,
- 0x2c88, 0x2c88,
- 0x2c8a, 0x2c8a,
- 0x2c8c, 0x2c8c,
- 0x2c8e, 0x2c8e,
- 0x2c90, 0x2c90,
- 0x2c92, 0x2c92,
- 0x2c94, 0x2c94,
- 0x2c96, 0x2c96,
- 0x2c98, 0x2c98,
- 0x2c9a, 0x2c9a,
- 0x2c9c, 0x2c9c,
- 0x2c9e, 0x2c9e,
- 0x2ca0, 0x2ca0,
- 0x2ca2, 0x2ca2,
- 0x2ca4, 0x2ca4,
- 0x2ca6, 0x2ca6,
- 0x2ca8, 0x2ca8,
- 0x2caa, 0x2caa,
- 0x2cac, 0x2cac,
- 0x2cae, 0x2cae,
- 0x2cb0, 0x2cb0,
- 0x2cb2, 0x2cb2,
- 0x2cb4, 0x2cb4,
- 0x2cb6, 0x2cb6,
- 0x2cb8, 0x2cb8,
- 0x2cba, 0x2cba,
- 0x2cbc, 0x2cbc,
- 0x2cbe, 0x2cbe,
- 0x2cc0, 0x2cc0,
- 0x2cc2, 0x2cc2,
- 0x2cc4, 0x2cc4,
- 0x2cc6, 0x2cc6,
- 0x2cc8, 0x2cc8,
- 0x2cca, 0x2cca,
- 0x2ccc, 0x2ccc,
- 0x2cce, 0x2cce,
- 0x2cd0, 0x2cd0,
- 0x2cd2, 0x2cd2,
- 0x2cd4, 0x2cd4,
- 0x2cd6, 0x2cd6,
- 0x2cd8, 0x2cd8,
- 0x2cda, 0x2cda,
- 0x2cdc, 0x2cdc,
- 0x2cde, 0x2cde,
- 0x2ce0, 0x2ce0,
- 0x2ce2, 0x2ce2,
- 0x2ceb, 0x2ceb,
- 0x2ced, 0x2ced,
- 0x2cf2, 0x2cf2,
- 0xa640, 0xa640,
- 0xa642, 0xa642,
- 0xa644, 0xa644,
- 0xa646, 0xa646,
- 0xa648, 0xa648,
- 0xa64a, 0xa64a,
- 0xa64c, 0xa64c,
- 0xa64e, 0xa64e,
- 0xa650, 0xa650,
- 0xa652, 0xa652,
- 0xa654, 0xa654,
- 0xa656, 0xa656,
- 0xa658, 0xa658,
- 0xa65a, 0xa65a,
- 0xa65c, 0xa65c,
- 0xa65e, 0xa65e,
- 0xa660, 0xa660,
- 0xa662, 0xa662,
- 0xa664, 0xa664,
- 0xa666, 0xa666,
- 0xa668, 0xa668,
- 0xa66a, 0xa66a,
- 0xa66c, 0xa66c,
- 0xa680, 0xa680,
- 0xa682, 0xa682,
- 0xa684, 0xa684,
- 0xa686, 0xa686,
- 0xa688, 0xa688,
- 0xa68a, 0xa68a,
- 0xa68c, 0xa68c,
- 0xa68e, 0xa68e,
- 0xa690, 0xa690,
- 0xa692, 0xa692,
- 0xa694, 0xa694,
- 0xa696, 0xa696,
- 0xa722, 0xa722,
- 0xa724, 0xa724,
- 0xa726, 0xa726,
- 0xa728, 0xa728,
- 0xa72a, 0xa72a,
- 0xa72c, 0xa72c,
- 0xa72e, 0xa72e,
- 0xa732, 0xa732,
- 0xa734, 0xa734,
- 0xa736, 0xa736,
- 0xa738, 0xa738,
- 0xa73a, 0xa73a,
- 0xa73c, 0xa73c,
- 0xa73e, 0xa73e,
- 0xa740, 0xa740,
- 0xa742, 0xa742,
- 0xa744, 0xa744,
- 0xa746, 0xa746,
- 0xa748, 0xa748,
- 0xa74a, 0xa74a,
- 0xa74c, 0xa74c,
- 0xa74e, 0xa74e,
- 0xa750, 0xa750,
- 0xa752, 0xa752,
- 0xa754, 0xa754,
- 0xa756, 0xa756,
- 0xa758, 0xa758,
- 0xa75a, 0xa75a,
- 0xa75c, 0xa75c,
- 0xa75e, 0xa75e,
- 0xa760, 0xa760,
- 0xa762, 0xa762,
- 0xa764, 0xa764,
- 0xa766, 0xa766,
- 0xa768, 0xa768,
- 0xa76a, 0xa76a,
- 0xa76c, 0xa76c,
- 0xa76e, 0xa76e,
- 0xa779, 0xa779,
- 0xa77b, 0xa77b,
- 0xa77d, 0xa77e,
- 0xa780, 0xa780,
- 0xa782, 0xa782,
- 0xa784, 0xa784,
- 0xa786, 0xa786,
- 0xa78b, 0xa78b,
- 0xa78d, 0xa78d,
- 0xa790, 0xa790,
- 0xa792, 0xa792,
- 0xa7a0, 0xa7a0,
- 0xa7a2, 0xa7a2,
- 0xa7a4, 0xa7a4,
- 0xa7a6, 0xa7a6,
- 0xa7a8, 0xa7a8,
- 0xa7aa, 0xa7aa,
- 0xff21, 0xff3a,
- 0x10400, 0x10427,
- 0x1d400, 0x1d419,
- 0x1d434, 0x1d44d,
- 0x1d468, 0x1d481,
- 0x1d49c, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b5,
- 0x1d4d0, 0x1d4e9,
- 0x1d504, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d538, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d56c, 0x1d585,
- 0x1d5a0, 0x1d5b9,
- 0x1d5d4, 0x1d5ed,
- 0x1d608, 0x1d621,
- 0x1d63c, 0x1d655,
- 0x1d670, 0x1d689,
- 0x1d6a8, 0x1d6c0,
- 0x1d6e2, 0x1d6fa,
- 0x1d71c, 0x1d734,
- 0x1d756, 0x1d76e,
- 0x1d790, 0x1d7a8,
- 0x1d7ca, 0x1d7ca,
-}; /* CR_Upper */
-
-/* 'XDigit': [[:XDigit:]] */
-static const OnigCodePoint CR_XDigit[] = {
- 3,
- 0x0030, 0x0039,
- 0x0041, 0x0046,
- 0x0061, 0x0066,
-}; /* CR_XDigit */
-
-/* 'Word': [[:Word:]] */
-static const OnigCodePoint CR_Word[] = {
- 564,
- 0x0030, 0x0039,
- 0x0041, 0x005a,
- 0x005f, 0x005f,
- 0x0061, 0x007a,
- 0x00aa, 0x00aa,
- 0x00b5, 0x00b5,
- 0x00ba, 0x00ba,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00f6,
- 0x00f8, 0x02c1,
- 0x02c6, 0x02d1,
- 0x02e0, 0x02e4,
- 0x02ec, 0x02ec,
- 0x02ee, 0x02ee,
- 0x0300, 0x0374,
- 0x0376, 0x0377,
- 0x037a, 0x037d,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x03f5,
- 0x03f7, 0x0481,
- 0x0483, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x0559,
- 0x0561, 0x0587,
- 0x0591, 0x05bd,
- 0x05bf, 0x05bf,
- 0x05c1, 0x05c2,
- 0x05c4, 0x05c5,
- 0x05c7, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f2,
- 0x0610, 0x061a,
- 0x0620, 0x0669,
- 0x066e, 0x06d3,
- 0x06d5, 0x06dc,
- 0x06df, 0x06e8,
- 0x06ea, 0x06fc,
- 0x06ff, 0x06ff,
- 0x0710, 0x074a,
- 0x074d, 0x07b1,
- 0x07c0, 0x07f5,
- 0x07fa, 0x07fa,
- 0x0800, 0x082d,
- 0x0840, 0x085b,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
- 0x0900, 0x0963,
- 0x0966, 0x096f,
- 0x0971, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bc, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09e6, 0x09f1,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3c, 0x0a3c,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4d,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a66, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abc, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acd,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0ae6, 0x0aef,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3c, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4d,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b66, 0x0b6f,
- 0x0b71, 0x0b71,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcd,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0be6, 0x0bef,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4d,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c66, 0x0c6f,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbc, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccd,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0ce6, 0x0cef,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d66, 0x0d6f,
- 0x0d7a, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dca, 0x0dca,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df3,
- 0x0e01, 0x0e3a,
- 0x0e40, 0x0e4e,
- 0x0e50, 0x0e59,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ec8, 0x0ecd,
- 0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f00,
- 0x0f18, 0x0f19,
- 0x0f20, 0x0f29,
- 0x0f35, 0x0f35,
- 0x0f37, 0x0f37,
- 0x0f39, 0x0f39,
- 0x0f3e, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f84,
- 0x0f86, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x0fc6, 0x0fc6,
- 0x1000, 0x1049,
- 0x1050, 0x109d,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x10fa,
- 0x10fc, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135d, 0x135f,
- 0x1380, 0x138f,
- 0x13a0, 0x13f4,
- 0x1401, 0x166c,
- 0x166f, 0x167f,
- 0x1681, 0x169a,
- 0x16a0, 0x16ea,
- 0x16ee, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1714,
- 0x1720, 0x1734,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17d3,
- 0x17d7, 0x17d7,
- 0x17dc, 0x17dd,
- 0x17e0, 0x17e9,
- 0x180b, 0x180d,
- 0x1810, 0x1819,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x193b,
- 0x1946, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x19d0, 0x19d9,
- 0x1a00, 0x1a1b,
- 0x1a20, 0x1a5e,
- 0x1a60, 0x1a7c,
- 0x1a7f, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1aa7, 0x1aa7,
- 0x1b00, 0x1b4b,
- 0x1b50, 0x1b59,
- 0x1b6b, 0x1b73,
- 0x1b80, 0x1bf3,
- 0x1c00, 0x1c37,
- 0x1c40, 0x1c49,
- 0x1c4d, 0x1c7d,
- 0x1cd0, 0x1cd2,
- 0x1cd4, 0x1cf6,
- 0x1d00, 0x1de6,
- 0x1dfc, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fbc,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fcc,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fe0, 0x1fec,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffc,
- 0x203f, 0x2040,
- 0x2054, 0x2054,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
- 0x20d0, 0x20f0,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210a, 0x2113,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x212f, 0x2139,
- 0x213c, 0x213f,
- 0x2145, 0x2149,
- 0x214e, 0x214e,
- 0x2160, 0x2188,
- 0x24b6, 0x24e9,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2ce4,
- 0x2ceb, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d6f,
- 0x2d7f, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2dff,
- 0x2e2f, 0x2e2f,
- 0x3005, 0x3007,
- 0x3021, 0x302f,
- 0x3031, 0x3035,
- 0x3038, 0x303c,
- 0x3041, 0x3096,
- 0x3099, 0x309a,
- 0x309d, 0x309f,
- 0x30a1, 0x30fa,
- 0x30fc, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x31a0, 0x31ba,
- 0x31f0, 0x31ff,
- 0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa4d0, 0xa4fd,
- 0xa500, 0xa60c,
- 0xa610, 0xa62b,
- 0xa640, 0xa672,
- 0xa674, 0xa67d,
- 0xa67f, 0xa697,
- 0xa69f, 0xa6f1,
- 0xa717, 0xa71f,
- 0xa722, 0xa788,
- 0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa827,
- 0xa840, 0xa873,
- 0xa880, 0xa8c4,
- 0xa8d0, 0xa8d9,
- 0xa8e0, 0xa8f7,
- 0xa8fb, 0xa8fb,
- 0xa900, 0xa92d,
- 0xa930, 0xa953,
- 0xa960, 0xa97c,
- 0xa980, 0xa9c0,
- 0xa9cf, 0xa9d9,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa50, 0xaa59,
- 0xaa60, 0xaa76,
- 0xaa7a, 0xaa7b,
- 0xaa80, 0xaac2,
- 0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf6,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabea,
- 0xabec, 0xabed,
- 0xabf0, 0xabf9,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb28,
- 0xfb2a, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbb1,
- 0xfbd3, 0xfd3d,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfb,
- 0xfe00, 0xfe0f,
- 0xfe20, 0xfe26,
- 0xfe33, 0xfe34,
- 0xfe4d, 0xfe4f,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xff10, 0xff19,
- 0xff21, 0xff3a,
- 0xff3f, 0xff3f,
- 0xff41, 0xff5a,
- 0xff66, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10140, 0x10174,
- 0x101fd, 0x101fd,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x103a0, 0x103c3,
- 0x103c8, 0x103cf,
- 0x103d1, 0x103d5,
- 0x10400, 0x1049d,
- 0x104a0, 0x104a9,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10900, 0x10915,
- 0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a38, 0x10a3a,
- 0x10a3f, 0x10a3f,
- 0x10a60, 0x10a7c,
- 0x10b00, 0x10b35,
- 0x10b40, 0x10b55,
- 0x10b60, 0x10b72,
- 0x10c00, 0x10c48,
- 0x11000, 0x11046,
- 0x11066, 0x1106f,
- 0x11080, 0x110ba,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x1113f,
- 0x11180, 0x111c4,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d165, 0x1d169,
- 0x1d16d, 0x1d172,
- 0x1d17b, 0x1d182,
- 0x1d185, 0x1d18b,
- 0x1d1aa, 0x1d1ad,
- 0x1d242, 0x1d244,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d6c0,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6fa,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d734,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d76e,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d7a8,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7cb,
- 0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
- 0xe0100, 0xe01ef,
-}; /* CR_Word */
-
-/* 'Alnum': [[:Alnum:]] */
-static const OnigCodePoint CR_Alnum[] = {
- 566,
- 0x0030, 0x0039,
- 0x0041, 0x005a,
- 0x0061, 0x007a,
- 0x00aa, 0x00aa,
- 0x00b5, 0x00b5,
- 0x00ba, 0x00ba,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00f6,
- 0x00f8, 0x02c1,
- 0x02c6, 0x02d1,
- 0x02e0, 0x02e4,
- 0x02ec, 0x02ec,
- 0x02ee, 0x02ee,
- 0x0345, 0x0345,
- 0x0370, 0x0374,
- 0x0376, 0x0377,
- 0x037a, 0x037d,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x03f5,
- 0x03f7, 0x0481,
- 0x048a, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x0559,
- 0x0561, 0x0587,
- 0x05b0, 0x05bd,
- 0x05bf, 0x05bf,
- 0x05c1, 0x05c2,
- 0x05c4, 0x05c5,
- 0x05c7, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f2,
- 0x0610, 0x061a,
- 0x0620, 0x0657,
- 0x0659, 0x0669,
- 0x066e, 0x06d3,
- 0x06d5, 0x06dc,
- 0x06e1, 0x06e8,
- 0x06ed, 0x06fc,
- 0x06ff, 0x06ff,
- 0x0710, 0x073f,
- 0x074d, 0x07b1,
- 0x07c0, 0x07ea,
- 0x07f4, 0x07f5,
- 0x07fa, 0x07fa,
- 0x0800, 0x0817,
- 0x081a, 0x082c,
- 0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08e9,
- 0x08f0, 0x08fe,
- 0x0900, 0x093b,
- 0x093d, 0x094c,
- 0x094e, 0x0950,
- 0x0955, 0x0963,
- 0x0966, 0x096f,
- 0x0971, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bd, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09cc,
- 0x09ce, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09e6, 0x09f1,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4c,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a66, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abd, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acc,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0ae6, 0x0aef,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3d, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4c,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b66, 0x0b6f,
- 0x0b71, 0x0b71,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcc,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0be6, 0x0bef,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4c,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c66, 0x0c6f,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbd, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccc,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0ce6, 0x0cef,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4c,
- 0x0d4e, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d66, 0x0d6f,
- 0x0d7a, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df3,
- 0x0e01, 0x0e3a,
- 0x0e40, 0x0e46,
- 0x0e4d, 0x0e4d,
- 0x0e50, 0x0e59,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ecd, 0x0ecd,
- 0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f00,
- 0x0f20, 0x0f29,
- 0x0f40, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f81,
- 0x0f88, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x1000, 0x1036,
- 0x1038, 0x1038,
- 0x103b, 0x1049,
- 0x1050, 0x1062,
- 0x1065, 0x1068,
- 0x106e, 0x1086,
- 0x108e, 0x108e,
- 0x1090, 0x1099,
- 0x109c, 0x109d,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x10fa,
- 0x10fc, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135f, 0x135f,
- 0x1380, 0x138f,
- 0x13a0, 0x13f4,
- 0x1401, 0x166c,
- 0x166f, 0x167f,
- 0x1681, 0x169a,
- 0x16a0, 0x16ea,
- 0x16ee, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1713,
- 0x1720, 0x1733,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17b3,
- 0x17b6, 0x17c8,
- 0x17d7, 0x17d7,
- 0x17dc, 0x17dc,
- 0x17e0, 0x17e9,
- 0x1810, 0x1819,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x1938,
- 0x1946, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x19d0, 0x19d9,
- 0x1a00, 0x1a1b,
- 0x1a20, 0x1a5e,
- 0x1a61, 0x1a74,
- 0x1a80, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1aa7, 0x1aa7,
- 0x1b00, 0x1b33,
- 0x1b35, 0x1b43,
- 0x1b45, 0x1b4b,
- 0x1b50, 0x1b59,
- 0x1b80, 0x1ba9,
- 0x1bac, 0x1be5,
- 0x1be7, 0x1bf1,
- 0x1c00, 0x1c35,
- 0x1c40, 0x1c49,
- 0x1c4d, 0x1c7d,
- 0x1ce9, 0x1cec,
- 0x1cee, 0x1cf3,
- 0x1cf5, 0x1cf6,
- 0x1d00, 0x1dbf,
- 0x1e00, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fbc,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fcc,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fe0, 0x1fec,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffc,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210a, 0x2113,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x212f, 0x2139,
- 0x213c, 0x213f,
- 0x2145, 0x2149,
- 0x214e, 0x214e,
- 0x2160, 0x2188,
- 0x24b6, 0x24e9,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2ce4,
- 0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d6f,
- 0x2d80, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2dff,
- 0x2e2f, 0x2e2f,
- 0x3005, 0x3007,
- 0x3021, 0x3029,
- 0x3031, 0x3035,
- 0x3038, 0x303c,
- 0x3041, 0x3096,
- 0x309d, 0x309f,
- 0x30a1, 0x30fa,
- 0x30fc, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x31a0, 0x31ba,
- 0x31f0, 0x31ff,
- 0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa4d0, 0xa4fd,
- 0xa500, 0xa60c,
- 0xa610, 0xa62b,
- 0xa640, 0xa66e,
- 0xa674, 0xa67b,
- 0xa67f, 0xa697,
- 0xa69f, 0xa6ef,
- 0xa717, 0xa71f,
- 0xa722, 0xa788,
- 0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
- 0xa803, 0xa805,
- 0xa807, 0xa80a,
- 0xa80c, 0xa827,
- 0xa840, 0xa873,
- 0xa880, 0xa8c3,
- 0xa8d0, 0xa8d9,
- 0xa8f2, 0xa8f7,
- 0xa8fb, 0xa8fb,
- 0xa900, 0xa92a,
- 0xa930, 0xa952,
- 0xa960, 0xa97c,
- 0xa980, 0xa9b2,
- 0xa9b4, 0xa9bf,
- 0xa9cf, 0xa9d9,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa50, 0xaa59,
- 0xaa60, 0xaa76,
- 0xaa7a, 0xaa7a,
- 0xaa80, 0xaabe,
- 0xaac0, 0xaac0,
- 0xaac2, 0xaac2,
- 0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf5,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabea,
- 0xabf0, 0xabf9,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb28,
- 0xfb2a, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbb1,
- 0xfbd3, 0xfd3d,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfb,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xff10, 0xff19,
- 0xff21, 0xff3a,
- 0xff41, 0xff5a,
- 0xff66, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10140, 0x10174,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x103a0, 0x103c3,
- 0x103c8, 0x103cf,
- 0x103d1, 0x103d5,
- 0x10400, 0x1049d,
- 0x104a0, 0x104a9,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10900, 0x10915,
- 0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a60, 0x10a7c,
- 0x10b00, 0x10b35,
- 0x10b40, 0x10b55,
- 0x10b60, 0x10b72,
- 0x10c00, 0x10c48,
- 0x11000, 0x11045,
- 0x11066, 0x1106f,
- 0x11082, 0x110b8,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11132,
- 0x11136, 0x1113f,
- 0x11180, 0x111bf,
- 0x111c1, 0x111c4,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b5,
- 0x116c0, 0x116c9,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f93, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d6c0,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6fa,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d734,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d76e,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d7a8,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7cb,
- 0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
-}; /* CR_Alnum */
-
-/* 'ASCII': [[:ASCII:]] */
-static const OnigCodePoint CR_ASCII[] = {
- 1,
- 0x0000, 0x007f,
-}; /* CR_ASCII */
-
#ifdef USE_UNICODE_PROPERTIES
/* 'Any': - */
static const OnigCodePoint CR_Any[] = {
@@ -4277,7 +10,7 @@ static const OnigCodePoint CR_Any[] = {
/* 'Assigned': - */
static const OnigCodePoint CR_Assigned[] = {
- 539,
+ 501,
0x0000, 0x0377,
0x037a, 0x037e,
0x0384, 0x038a,
@@ -4288,11 +21,10 @@ static const OnigCodePoint CR_Assigned[] = {
0x0559, 0x055f,
0x0561, 0x0587,
0x0589, 0x058a,
- 0x058f, 0x058f,
0x0591, 0x05c7,
0x05d0, 0x05ea,
0x05f0, 0x05f4,
- 0x0600, 0x0604,
+ 0x0600, 0x0603,
0x0606, 0x061b,
0x061e, 0x070d,
0x070f, 0x074a,
@@ -4302,9 +34,6 @@ static const OnigCodePoint CR_Assigned[] = {
0x0830, 0x083e,
0x0840, 0x085b,
0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0x0900, 0x0977,
0x0979, 0x097f,
0x0981, 0x0983,
@@ -4349,7 +78,8 @@ static const OnigCodePoint CR_Assigned[] = {
0x0acb, 0x0acd,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -4449,7 +179,7 @@ static const OnigCodePoint CR_Assigned[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f47,
0x0f49, 0x0f6c,
0x0f71, 0x0f97,
@@ -4457,9 +187,8 @@ static const OnigCodePoint CR_Assigned[] = {
0x0fbe, 0x0fcc,
0x0fce, 0x0fda,
0x1000, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
+ 0x10d0, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -4512,12 +241,13 @@ static const OnigCodePoint CR_Assigned[] = {
0x1aa0, 0x1aad,
0x1b00, 0x1b4b,
0x1b50, 0x1b7c,
- 0x1b80, 0x1bf3,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
0x1bfc, 0x1c37,
0x1c3b, 0x1c49,
0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd0, 0x1cf6,
+ 0x1cd0, 0x1cf2,
0x1d00, 0x1de6,
0x1dfc, 0x1f15,
0x1f18, 0x1f1d,
@@ -4546,15 +276,15 @@ static const OnigCodePoint CR_Assigned[] = {
0x2400, 0x2426,
0x2440, 0x244a,
0x2460, 0x26ff,
- 0x2701, 0x2b4c,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x2b4c,
0x2b50, 0x2b59,
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
- 0x2c60, 0x2cf3,
+ 0x2c60, 0x2cf1,
0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d70,
0x2d7f, 0x2d96,
0x2da0, 0x2da6,
@@ -4565,7 +295,7 @@ static const OnigCodePoint CR_Assigned[] = {
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
- 0x2de0, 0x2e3b,
+ 0x2de0, 0x2e31,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -4580,16 +310,17 @@ static const OnigCodePoint CR_Assigned[] = {
0x31f0, 0x321e,
0x3220, 0x32fe,
0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
+ 0x4dc0, 0x9fcb,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
- 0xa640, 0xa697,
- 0xa69f, 0xa6f7,
+ 0xa640, 0xa673,
+ 0xa67c, 0xa697,
+ 0xa6a0, 0xa6f7,
0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa82b,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
0xa880, 0xa8c4,
@@ -4605,7 +336,7 @@ static const OnigCodePoint CR_Assigned[] = {
0xaa50, 0xaa59,
0xaa5c, 0xaa7b,
0xaa80, 0xaac2,
- 0xaadb, 0xaaf6,
+ 0xaadb, 0xaadf,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -4616,7 +347,8 @@ static const OnigCodePoint CR_Assigned[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xd800, 0xfa6d,
+ 0xd800, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -4678,8 +410,6 @@ static const OnigCodePoint CR_Assigned[] = {
0x10900, 0x1091b,
0x1091f, 0x10939,
0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a03,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
@@ -4698,22 +428,11 @@ static const OnigCodePoint CR_Assigned[] = {
0x11000, 0x1104d,
0x11052, 0x1106f,
0x11080, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x12470, 0x12473,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
0x1b000, 0x1b001,
0x1d000, 0x1d0f5,
0x1d100, 0x1d126,
@@ -4742,40 +461,6 @@ static const OnigCodePoint CR_Assigned[] = {
0x1d552, 0x1d6a5,
0x1d6a8, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
@@ -4784,7 +469,7 @@ static const OnigCodePoint CR_Assigned[] = {
0x1f0d1, 0x1f0df,
0x1f100, 0x1f10a,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -4802,9 +487,19 @@ static const OnigCodePoint CR_Assigned[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -4821,560 +516,44 @@ static const OnigCodePoint CR_Assigned[] = {
/* 'C': Major Category */
static const OnigCodePoint CR_C[] = {
- 541,
+ 20,
0x0000, 0x001f,
0x007f, 0x009f,
0x00ad, 0x00ad,
- 0x0378, 0x0379,
- 0x037f, 0x0383,
- 0x038b, 0x038b,
- 0x038d, 0x038d,
- 0x03a2, 0x03a2,
- 0x0528, 0x0530,
- 0x0557, 0x0558,
- 0x0560, 0x0560,
- 0x0588, 0x0588,
- 0x058b, 0x058e,
- 0x0590, 0x0590,
- 0x05c8, 0x05cf,
- 0x05eb, 0x05ef,
- 0x05f5, 0x0605,
- 0x061c, 0x061d,
+ 0x0600, 0x0603,
0x06dd, 0x06dd,
- 0x070e, 0x070f,
- 0x074b, 0x074c,
- 0x07b2, 0x07bf,
- 0x07fb, 0x07ff,
- 0x082e, 0x082f,
- 0x083f, 0x083f,
- 0x085c, 0x085d,
- 0x085f, 0x089f,
- 0x08a1, 0x08a1,
- 0x08ad, 0x08e3,
- 0x08ff, 0x08ff,
- 0x0978, 0x0978,
- 0x0980, 0x0980,
- 0x0984, 0x0984,
- 0x098d, 0x098e,
- 0x0991, 0x0992,
- 0x09a9, 0x09a9,
- 0x09b1, 0x09b1,
- 0x09b3, 0x09b5,
- 0x09ba, 0x09bb,
- 0x09c5, 0x09c6,
- 0x09c9, 0x09ca,
- 0x09cf, 0x09d6,
- 0x09d8, 0x09db,
- 0x09de, 0x09de,
- 0x09e4, 0x09e5,
- 0x09fc, 0x0a00,
- 0x0a04, 0x0a04,
- 0x0a0b, 0x0a0e,
- 0x0a11, 0x0a12,
- 0x0a29, 0x0a29,
- 0x0a31, 0x0a31,
- 0x0a34, 0x0a34,
- 0x0a37, 0x0a37,
- 0x0a3a, 0x0a3b,
- 0x0a3d, 0x0a3d,
- 0x0a43, 0x0a46,
- 0x0a49, 0x0a4a,
- 0x0a4e, 0x0a50,
- 0x0a52, 0x0a58,
- 0x0a5d, 0x0a5d,
- 0x0a5f, 0x0a65,
- 0x0a76, 0x0a80,
- 0x0a84, 0x0a84,
- 0x0a8e, 0x0a8e,
- 0x0a92, 0x0a92,
- 0x0aa9, 0x0aa9,
- 0x0ab1, 0x0ab1,
- 0x0ab4, 0x0ab4,
- 0x0aba, 0x0abb,
- 0x0ac6, 0x0ac6,
- 0x0aca, 0x0aca,
- 0x0ace, 0x0acf,
- 0x0ad1, 0x0adf,
- 0x0ae4, 0x0ae5,
- 0x0af2, 0x0b00,
- 0x0b04, 0x0b04,
- 0x0b0d, 0x0b0e,
- 0x0b11, 0x0b12,
- 0x0b29, 0x0b29,
- 0x0b31, 0x0b31,
- 0x0b34, 0x0b34,
- 0x0b3a, 0x0b3b,
- 0x0b45, 0x0b46,
- 0x0b49, 0x0b4a,
- 0x0b4e, 0x0b55,
- 0x0b58, 0x0b5b,
- 0x0b5e, 0x0b5e,
- 0x0b64, 0x0b65,
- 0x0b78, 0x0b81,
- 0x0b84, 0x0b84,
- 0x0b8b, 0x0b8d,
- 0x0b91, 0x0b91,
- 0x0b96, 0x0b98,
- 0x0b9b, 0x0b9b,
- 0x0b9d, 0x0b9d,
- 0x0ba0, 0x0ba2,
- 0x0ba5, 0x0ba7,
- 0x0bab, 0x0bad,
- 0x0bba, 0x0bbd,
- 0x0bc3, 0x0bc5,
- 0x0bc9, 0x0bc9,
- 0x0bce, 0x0bcf,
- 0x0bd1, 0x0bd6,
- 0x0bd8, 0x0be5,
- 0x0bfb, 0x0c00,
- 0x0c04, 0x0c04,
- 0x0c0d, 0x0c0d,
- 0x0c11, 0x0c11,
- 0x0c29, 0x0c29,
- 0x0c34, 0x0c34,
- 0x0c3a, 0x0c3c,
- 0x0c45, 0x0c45,
- 0x0c49, 0x0c49,
- 0x0c4e, 0x0c54,
- 0x0c57, 0x0c57,
- 0x0c5a, 0x0c5f,
- 0x0c64, 0x0c65,
- 0x0c70, 0x0c77,
- 0x0c80, 0x0c81,
- 0x0c84, 0x0c84,
- 0x0c8d, 0x0c8d,
- 0x0c91, 0x0c91,
- 0x0ca9, 0x0ca9,
- 0x0cb4, 0x0cb4,
- 0x0cba, 0x0cbb,
- 0x0cc5, 0x0cc5,
- 0x0cc9, 0x0cc9,
- 0x0cce, 0x0cd4,
- 0x0cd7, 0x0cdd,
- 0x0cdf, 0x0cdf,
- 0x0ce4, 0x0ce5,
- 0x0cf0, 0x0cf0,
- 0x0cf3, 0x0d01,
- 0x0d04, 0x0d04,
- 0x0d0d, 0x0d0d,
- 0x0d11, 0x0d11,
- 0x0d3b, 0x0d3c,
- 0x0d45, 0x0d45,
- 0x0d49, 0x0d49,
- 0x0d4f, 0x0d56,
- 0x0d58, 0x0d5f,
- 0x0d64, 0x0d65,
- 0x0d76, 0x0d78,
- 0x0d80, 0x0d81,
- 0x0d84, 0x0d84,
- 0x0d97, 0x0d99,
- 0x0db2, 0x0db2,
- 0x0dbc, 0x0dbc,
- 0x0dbe, 0x0dbf,
- 0x0dc7, 0x0dc9,
- 0x0dcb, 0x0dce,
- 0x0dd5, 0x0dd5,
- 0x0dd7, 0x0dd7,
- 0x0de0, 0x0df1,
- 0x0df5, 0x0e00,
- 0x0e3b, 0x0e3e,
- 0x0e5c, 0x0e80,
- 0x0e83, 0x0e83,
- 0x0e85, 0x0e86,
- 0x0e89, 0x0e89,
- 0x0e8b, 0x0e8c,
- 0x0e8e, 0x0e93,
- 0x0e98, 0x0e98,
- 0x0ea0, 0x0ea0,
- 0x0ea4, 0x0ea4,
- 0x0ea6, 0x0ea6,
- 0x0ea8, 0x0ea9,
- 0x0eac, 0x0eac,
- 0x0eba, 0x0eba,
- 0x0ebe, 0x0ebf,
- 0x0ec5, 0x0ec5,
- 0x0ec7, 0x0ec7,
- 0x0ece, 0x0ecf,
- 0x0eda, 0x0edb,
- 0x0ee0, 0x0eff,
- 0x0f48, 0x0f48,
- 0x0f6d, 0x0f70,
- 0x0f98, 0x0f98,
- 0x0fbd, 0x0fbd,
- 0x0fcd, 0x0fcd,
- 0x0fdb, 0x0fff,
- 0x10c6, 0x10c6,
- 0x10c8, 0x10cc,
- 0x10ce, 0x10cf,
- 0x1249, 0x1249,
- 0x124e, 0x124f,
- 0x1257, 0x1257,
- 0x1259, 0x1259,
- 0x125e, 0x125f,
- 0x1289, 0x1289,
- 0x128e, 0x128f,
- 0x12b1, 0x12b1,
- 0x12b6, 0x12b7,
- 0x12bf, 0x12bf,
- 0x12c1, 0x12c1,
- 0x12c6, 0x12c7,
- 0x12d7, 0x12d7,
- 0x1311, 0x1311,
- 0x1316, 0x1317,
- 0x135b, 0x135c,
- 0x137d, 0x137f,
- 0x139a, 0x139f,
- 0x13f5, 0x13ff,
- 0x169d, 0x169f,
- 0x16f1, 0x16ff,
- 0x170d, 0x170d,
- 0x1715, 0x171f,
- 0x1737, 0x173f,
- 0x1754, 0x175f,
- 0x176d, 0x176d,
- 0x1771, 0x1771,
- 0x1774, 0x177f,
- 0x17de, 0x17df,
- 0x17ea, 0x17ef,
- 0x17fa, 0x17ff,
- 0x180f, 0x180f,
- 0x181a, 0x181f,
- 0x1878, 0x187f,
- 0x18ab, 0x18af,
- 0x18f6, 0x18ff,
- 0x191d, 0x191f,
- 0x192c, 0x192f,
- 0x193c, 0x193f,
- 0x1941, 0x1943,
- 0x196e, 0x196f,
- 0x1975, 0x197f,
- 0x19ac, 0x19af,
- 0x19ca, 0x19cf,
- 0x19db, 0x19dd,
- 0x1a1c, 0x1a1d,
- 0x1a5f, 0x1a5f,
- 0x1a7d, 0x1a7e,
- 0x1a8a, 0x1a8f,
- 0x1a9a, 0x1a9f,
- 0x1aae, 0x1aff,
- 0x1b4c, 0x1b4f,
- 0x1b7d, 0x1b7f,
- 0x1bf4, 0x1bfb,
- 0x1c38, 0x1c3a,
- 0x1c4a, 0x1c4c,
- 0x1c80, 0x1cbf,
- 0x1cc8, 0x1ccf,
- 0x1cf7, 0x1cff,
- 0x1de7, 0x1dfb,
- 0x1f16, 0x1f17,
- 0x1f1e, 0x1f1f,
- 0x1f46, 0x1f47,
- 0x1f4e, 0x1f4f,
- 0x1f58, 0x1f58,
- 0x1f5a, 0x1f5a,
- 0x1f5c, 0x1f5c,
- 0x1f5e, 0x1f5e,
- 0x1f7e, 0x1f7f,
- 0x1fb5, 0x1fb5,
- 0x1fc5, 0x1fc5,
- 0x1fd4, 0x1fd5,
- 0x1fdc, 0x1fdc,
- 0x1ff0, 0x1ff1,
- 0x1ff5, 0x1ff5,
- 0x1fff, 0x1fff,
+ 0x070f, 0x070f,
+ 0x17b4, 0x17b5,
0x200b, 0x200f,
0x202a, 0x202e,
- 0x2060, 0x206f,
- 0x2072, 0x2073,
- 0x208f, 0x208f,
- 0x209d, 0x209f,
- 0x20ba, 0x20cf,
- 0x20f1, 0x20ff,
- 0x218a, 0x218f,
- 0x23f4, 0x23ff,
- 0x2427, 0x243f,
- 0x244b, 0x245f,
- 0x2700, 0x2700,
- 0x2b4d, 0x2b4f,
- 0x2b5a, 0x2bff,
- 0x2c2f, 0x2c2f,
- 0x2c5f, 0x2c5f,
- 0x2cf4, 0x2cf8,
- 0x2d26, 0x2d26,
- 0x2d28, 0x2d2c,
- 0x2d2e, 0x2d2f,
- 0x2d68, 0x2d6e,
- 0x2d71, 0x2d7e,
- 0x2d97, 0x2d9f,
- 0x2da7, 0x2da7,
- 0x2daf, 0x2daf,
- 0x2db7, 0x2db7,
- 0x2dbf, 0x2dbf,
- 0x2dc7, 0x2dc7,
- 0x2dcf, 0x2dcf,
- 0x2dd7, 0x2dd7,
- 0x2ddf, 0x2ddf,
- 0x2e3c, 0x2e7f,
- 0x2e9a, 0x2e9a,
- 0x2ef4, 0x2eff,
- 0x2fd6, 0x2fef,
- 0x2ffc, 0x2fff,
- 0x3040, 0x3040,
- 0x3097, 0x3098,
- 0x3100, 0x3104,
- 0x312e, 0x3130,
- 0x318f, 0x318f,
- 0x31bb, 0x31bf,
- 0x31e4, 0x31ef,
- 0x321f, 0x321f,
- 0x32ff, 0x32ff,
- 0x4db6, 0x4dbf,
- 0x9fcd, 0x9fff,
- 0xa48d, 0xa48f,
- 0xa4c7, 0xa4cf,
- 0xa62c, 0xa63f,
- 0xa698, 0xa69e,
- 0xa6f8, 0xa6ff,
- 0xa78f, 0xa78f,
- 0xa794, 0xa79f,
- 0xa7ab, 0xa7f7,
- 0xa82c, 0xa82f,
- 0xa83a, 0xa83f,
- 0xa878, 0xa87f,
- 0xa8c5, 0xa8cd,
- 0xa8da, 0xa8df,
- 0xa8fc, 0xa8ff,
- 0xa954, 0xa95e,
- 0xa97d, 0xa97f,
- 0xa9ce, 0xa9ce,
- 0xa9da, 0xa9dd,
- 0xa9e0, 0xa9ff,
- 0xaa37, 0xaa3f,
- 0xaa4e, 0xaa4f,
- 0xaa5a, 0xaa5b,
- 0xaa7c, 0xaa7f,
- 0xaac3, 0xaada,
- 0xaaf7, 0xab00,
- 0xab07, 0xab08,
- 0xab0f, 0xab10,
- 0xab17, 0xab1f,
- 0xab27, 0xab27,
- 0xab2f, 0xabbf,
- 0xabee, 0xabef,
- 0xabfa, 0xabff,
- 0xd7a4, 0xd7af,
- 0xd7c7, 0xd7ca,
- 0xd7fc, 0xf8ff,
- 0xfa6e, 0xfa6f,
- 0xfada, 0xfaff,
- 0xfb07, 0xfb12,
- 0xfb18, 0xfb1c,
- 0xfb37, 0xfb37,
- 0xfb3d, 0xfb3d,
- 0xfb3f, 0xfb3f,
- 0xfb42, 0xfb42,
- 0xfb45, 0xfb45,
- 0xfbc2, 0xfbd2,
- 0xfd40, 0xfd4f,
- 0xfd90, 0xfd91,
- 0xfdc8, 0xfdef,
- 0xfdfe, 0xfdff,
- 0xfe1a, 0xfe1f,
- 0xfe27, 0xfe2f,
- 0xfe53, 0xfe53,
- 0xfe67, 0xfe67,
- 0xfe6c, 0xfe6f,
- 0xfe75, 0xfe75,
- 0xfefd, 0xff00,
- 0xffbf, 0xffc1,
- 0xffc8, 0xffc9,
- 0xffd0, 0xffd1,
- 0xffd8, 0xffd9,
- 0xffdd, 0xffdf,
- 0xffe7, 0xffe7,
- 0xffef, 0xfffb,
- 0xfffe, 0xffff,
- 0x1000c, 0x1000c,
- 0x10027, 0x10027,
- 0x1003b, 0x1003b,
- 0x1003e, 0x1003e,
- 0x1004e, 0x1004f,
- 0x1005e, 0x1007f,
- 0x100fb, 0x100ff,
- 0x10103, 0x10106,
- 0x10134, 0x10136,
- 0x1018b, 0x1018f,
- 0x1019c, 0x101cf,
- 0x101fe, 0x1027f,
- 0x1029d, 0x1029f,
- 0x102d1, 0x102ff,
- 0x1031f, 0x1031f,
- 0x10324, 0x1032f,
- 0x1034b, 0x1037f,
- 0x1039e, 0x1039e,
- 0x103c4, 0x103c7,
- 0x103d6, 0x103ff,
- 0x1049e, 0x1049f,
- 0x104aa, 0x107ff,
- 0x10806, 0x10807,
- 0x10809, 0x10809,
- 0x10836, 0x10836,
- 0x10839, 0x1083b,
- 0x1083d, 0x1083e,
- 0x10856, 0x10856,
- 0x10860, 0x108ff,
- 0x1091c, 0x1091e,
- 0x1093a, 0x1093e,
- 0x10940, 0x1097f,
- 0x109b8, 0x109bd,
- 0x109c0, 0x109ff,
- 0x10a04, 0x10a04,
- 0x10a07, 0x10a0b,
- 0x10a14, 0x10a14,
- 0x10a18, 0x10a18,
- 0x10a34, 0x10a37,
- 0x10a3b, 0x10a3e,
- 0x10a48, 0x10a4f,
- 0x10a59, 0x10a5f,
- 0x10a80, 0x10aff,
- 0x10b36, 0x10b38,
- 0x10b56, 0x10b57,
- 0x10b73, 0x10b77,
- 0x10b80, 0x10bff,
- 0x10c49, 0x10e5f,
- 0x10e7f, 0x10fff,
- 0x1104e, 0x11051,
- 0x11070, 0x1107f,
+ 0x2060, 0x2064,
+ 0x206a, 0x206f,
+ 0xd800, 0xf8ff,
+ 0xfeff, 0xfeff,
+ 0xfff9, 0xfffb,
0x110bd, 0x110bd,
- 0x110c2, 0x110cf,
- 0x110e9, 0x110ef,
- 0x110fa, 0x110ff,
- 0x11135, 0x11135,
- 0x11144, 0x1117f,
- 0x111c9, 0x111cf,
- 0x111da, 0x1167f,
- 0x116b8, 0x116bf,
- 0x116ca, 0x11fff,
- 0x1236f, 0x123ff,
- 0x12463, 0x1246f,
- 0x12474, 0x12fff,
- 0x1342f, 0x167ff,
- 0x16a39, 0x16eff,
- 0x16f45, 0x16f4f,
- 0x16f7f, 0x16f8e,
- 0x16fa0, 0x1afff,
- 0x1b002, 0x1cfff,
- 0x1d0f6, 0x1d0ff,
- 0x1d127, 0x1d128,
0x1d173, 0x1d17a,
- 0x1d1de, 0x1d1ff,
- 0x1d246, 0x1d2ff,
- 0x1d357, 0x1d35f,
- 0x1d372, 0x1d3ff,
- 0x1d455, 0x1d455,
- 0x1d49d, 0x1d49d,
- 0x1d4a0, 0x1d4a1,
- 0x1d4a3, 0x1d4a4,
- 0x1d4a7, 0x1d4a8,
- 0x1d4ad, 0x1d4ad,
- 0x1d4ba, 0x1d4ba,
- 0x1d4bc, 0x1d4bc,
- 0x1d4c4, 0x1d4c4,
- 0x1d506, 0x1d506,
- 0x1d50b, 0x1d50c,
- 0x1d515, 0x1d515,
- 0x1d51d, 0x1d51d,
- 0x1d53a, 0x1d53a,
- 0x1d53f, 0x1d53f,
- 0x1d545, 0x1d545,
- 0x1d547, 0x1d549,
- 0x1d551, 0x1d551,
- 0x1d6a6, 0x1d6a7,
- 0x1d7cc, 0x1d7cd,
- 0x1d800, 0x1edff,
- 0x1ee04, 0x1ee04,
- 0x1ee20, 0x1ee20,
- 0x1ee23, 0x1ee23,
- 0x1ee25, 0x1ee26,
- 0x1ee28, 0x1ee28,
- 0x1ee33, 0x1ee33,
- 0x1ee38, 0x1ee38,
- 0x1ee3a, 0x1ee3a,
- 0x1ee3c, 0x1ee41,
- 0x1ee43, 0x1ee46,
- 0x1ee48, 0x1ee48,
- 0x1ee4a, 0x1ee4a,
- 0x1ee4c, 0x1ee4c,
- 0x1ee50, 0x1ee50,
- 0x1ee53, 0x1ee53,
- 0x1ee55, 0x1ee56,
- 0x1ee58, 0x1ee58,
- 0x1ee5a, 0x1ee5a,
- 0x1ee5c, 0x1ee5c,
- 0x1ee5e, 0x1ee5e,
- 0x1ee60, 0x1ee60,
- 0x1ee63, 0x1ee63,
- 0x1ee65, 0x1ee66,
- 0x1ee6b, 0x1ee6b,
- 0x1ee73, 0x1ee73,
- 0x1ee78, 0x1ee78,
- 0x1ee7d, 0x1ee7d,
- 0x1ee7f, 0x1ee7f,
- 0x1ee8a, 0x1ee8a,
- 0x1ee9c, 0x1eea0,
- 0x1eea4, 0x1eea4,
- 0x1eeaa, 0x1eeaa,
- 0x1eebc, 0x1eeef,
- 0x1eef2, 0x1efff,
- 0x1f02c, 0x1f02f,
- 0x1f094, 0x1f09f,
- 0x1f0af, 0x1f0b0,
- 0x1f0bf, 0x1f0c0,
- 0x1f0d0, 0x1f0d0,
- 0x1f0e0, 0x1f0ff,
- 0x1f10b, 0x1f10f,
- 0x1f12f, 0x1f12f,
- 0x1f16c, 0x1f16f,
- 0x1f19b, 0x1f1e5,
- 0x1f203, 0x1f20f,
- 0x1f23b, 0x1f23f,
- 0x1f249, 0x1f24f,
- 0x1f252, 0x1f2ff,
- 0x1f321, 0x1f32f,
- 0x1f336, 0x1f336,
- 0x1f37d, 0x1f37f,
- 0x1f394, 0x1f39f,
- 0x1f3c5, 0x1f3c5,
- 0x1f3cb, 0x1f3df,
- 0x1f3f1, 0x1f3ff,
- 0x1f43f, 0x1f43f,
- 0x1f441, 0x1f441,
- 0x1f4f8, 0x1f4f8,
- 0x1f4fd, 0x1f4ff,
- 0x1f53e, 0x1f53f,
- 0x1f544, 0x1f54f,
- 0x1f568, 0x1f5fa,
- 0x1f641, 0x1f644,
- 0x1f650, 0x1f67f,
- 0x1f6c6, 0x1f6ff,
- 0x1f774, 0x1ffff,
- 0x2a6d7, 0x2a6ff,
- 0x2b735, 0x2b73f,
- 0x2b81e, 0x2f7ff,
- 0x2fa1e, 0xe00ff,
- 0xe01f0, 0x10ffff,
+ 0xe0001, 0xe0001,
+ 0xe0020, 0xe007f,
+ 0xf0000, 0xffffd,
+ 0x100000, 0x10ffff,
}; /* CR_C */
/* 'Cc': General Category */
-#define CR_Cc CR_Cntrl
+static const OnigCodePoint CR_Cc[] = {
+ 2,
+ 0x0000, 0x001f,
+ 0x007f, 0x009f,
+}; /* CR_Cc */
/* 'Cf': General Category */
static const OnigCodePoint CR_Cf[] = {
- 14,
+ 15,
0x00ad, 0x00ad,
- 0x0600, 0x0604,
+ 0x0600, 0x0603,
0x06dd, 0x06dd,
0x070f, 0x070f,
+ 0x17b4, 0x17b5,
0x200b, 0x200f,
0x202a, 0x202e,
0x2060, 0x2064,
@@ -5389,7 +568,7 @@ static const OnigCodePoint CR_Cf[] = {
/* 'Cn': General Category */
static const OnigCodePoint CR_Cn[] = {
- 539,
+ 501,
0x0378, 0x0379,
0x037f, 0x0383,
0x038b, 0x038b,
@@ -5399,12 +578,11 @@ static const OnigCodePoint CR_Cn[] = {
0x0557, 0x0558,
0x0560, 0x0560,
0x0588, 0x0588,
- 0x058b, 0x058e,
- 0x0590, 0x0590,
+ 0x058b, 0x0590,
0x05c8, 0x05cf,
0x05eb, 0x05ef,
0x05f5, 0x05ff,
- 0x0605, 0x0605,
+ 0x0604, 0x0605,
0x061c, 0x061d,
0x070e, 0x070e,
0x074b, 0x074c,
@@ -5413,10 +591,7 @@ static const OnigCodePoint CR_Cn[] = {
0x082e, 0x082f,
0x083f, 0x083f,
0x085c, 0x085d,
- 0x085f, 0x089f,
- 0x08a1, 0x08a1,
- 0x08ad, 0x08e3,
- 0x08ff, 0x08ff,
+ 0x085f, 0x08ff,
0x0978, 0x0978,
0x0980, 0x0980,
0x0984, 0x0984,
@@ -5461,6 +636,7 @@ static const OnigCodePoint CR_Cn[] = {
0x0ace, 0x0acf,
0x0ad1, 0x0adf,
0x0ae4, 0x0ae5,
+ 0x0af0, 0x0af0,
0x0af2, 0x0b00,
0x0b04, 0x0b04,
0x0b0d, 0x0b0e,
@@ -5561,16 +737,15 @@ static const OnigCodePoint CR_Cn[] = {
0x0ec7, 0x0ec7,
0x0ece, 0x0ecf,
0x0eda, 0x0edb,
- 0x0ee0, 0x0eff,
+ 0x0ede, 0x0eff,
0x0f48, 0x0f48,
0x0f6d, 0x0f70,
0x0f98, 0x0f98,
0x0fbd, 0x0fbd,
0x0fcd, 0x0fcd,
0x0fdb, 0x0fff,
- 0x10c6, 0x10c6,
- 0x10c8, 0x10cc,
- 0x10ce, 0x10cf,
+ 0x10c6, 0x10cf,
+ 0x10fd, 0x10ff,
0x1249, 0x1249,
0x124e, 0x124f,
0x1257, 0x1257,
@@ -5624,12 +799,13 @@ static const OnigCodePoint CR_Cn[] = {
0x1aae, 0x1aff,
0x1b4c, 0x1b4f,
0x1b7d, 0x1b7f,
+ 0x1bab, 0x1bad,
+ 0x1bba, 0x1bbf,
0x1bf4, 0x1bfb,
0x1c38, 0x1c3a,
0x1c4a, 0x1c4c,
- 0x1c80, 0x1cbf,
- 0x1cc8, 0x1ccf,
- 0x1cf7, 0x1cff,
+ 0x1c80, 0x1ccf,
+ 0x1cf3, 0x1cff,
0x1de7, 0x1dfb,
0x1f16, 0x1f17,
0x1f1e, 0x1f1f,
@@ -5658,15 +834,15 @@ static const OnigCodePoint CR_Cn[] = {
0x2427, 0x243f,
0x244b, 0x245f,
0x2700, 0x2700,
+ 0x27cb, 0x27cb,
+ 0x27cd, 0x27cd,
0x2b4d, 0x2b4f,
0x2b5a, 0x2bff,
0x2c2f, 0x2c2f,
0x2c5f, 0x2c5f,
- 0x2cf4, 0x2cf8,
- 0x2d26, 0x2d26,
- 0x2d28, 0x2d2c,
- 0x2d2e, 0x2d2f,
- 0x2d68, 0x2d6e,
+ 0x2cf2, 0x2cf8,
+ 0x2d26, 0x2d2f,
+ 0x2d66, 0x2d6e,
0x2d71, 0x2d7e,
0x2d97, 0x2d9f,
0x2da7, 0x2da7,
@@ -5677,7 +853,7 @@ static const OnigCodePoint CR_Cn[] = {
0x2dcf, 0x2dcf,
0x2dd7, 0x2dd7,
0x2ddf, 0x2ddf,
- 0x2e3c, 0x2e7f,
+ 0x2e32, 0x2e7f,
0x2e9a, 0x2e9a,
0x2ef4, 0x2eff,
0x2fd6, 0x2fef,
@@ -5692,15 +868,16 @@ static const OnigCodePoint CR_Cn[] = {
0x321f, 0x321f,
0x32ff, 0x32ff,
0x4db6, 0x4dbf,
- 0x9fcd, 0x9fff,
+ 0x9fcc, 0x9fff,
0xa48d, 0xa48f,
0xa4c7, 0xa4cf,
0xa62c, 0xa63f,
- 0xa698, 0xa69e,
+ 0xa674, 0xa67b,
+ 0xa698, 0xa69f,
0xa6f8, 0xa6ff,
0xa78f, 0xa78f,
- 0xa794, 0xa79f,
- 0xa7ab, 0xa7f7,
+ 0xa792, 0xa79f,
+ 0xa7aa, 0xa7f9,
0xa82c, 0xa82f,
0xa83a, 0xa83f,
0xa878, 0xa87f,
@@ -5717,7 +894,7 @@ static const OnigCodePoint CR_Cn[] = {
0xaa5a, 0xaa5b,
0xaa7c, 0xaa7f,
0xaac3, 0xaada,
- 0xaaf7, 0xab00,
+ 0xaae0, 0xab00,
0xab07, 0xab08,
0xab0f, 0xab10,
0xab17, 0xab1f,
@@ -5728,6 +905,7 @@ static const OnigCodePoint CR_Cn[] = {
0xd7a4, 0xd7af,
0xd7c7, 0xd7ca,
0xd7fc, 0xd7ff,
+ 0xfa2e, 0xfa2f,
0xfa6e, 0xfa6f,
0xfada, 0xfaff,
0xfb07, 0xfb12,
@@ -5789,9 +967,7 @@ static const OnigCodePoint CR_Cn[] = {
0x10860, 0x108ff,
0x1091c, 0x1091e,
0x1093a, 0x1093e,
- 0x10940, 0x1097f,
- 0x109b8, 0x109bd,
- 0x109c0, 0x109ff,
+ 0x10940, 0x109ff,
0x10a04, 0x10a04,
0x10a07, 0x10a0b,
0x10a14, 0x10a14,
@@ -5809,23 +985,12 @@ static const OnigCodePoint CR_Cn[] = {
0x10e7f, 0x10fff,
0x1104e, 0x11051,
0x11070, 0x1107f,
- 0x110c2, 0x110cf,
- 0x110e9, 0x110ef,
- 0x110fa, 0x110ff,
- 0x11135, 0x11135,
- 0x11144, 0x1117f,
- 0x111c9, 0x111cf,
- 0x111da, 0x1167f,
- 0x116b8, 0x116bf,
- 0x116ca, 0x11fff,
+ 0x110c2, 0x11fff,
0x1236f, 0x123ff,
0x12463, 0x1246f,
0x12474, 0x12fff,
0x1342f, 0x167ff,
- 0x16a39, 0x16eff,
- 0x16f45, 0x16f4f,
- 0x16f7f, 0x16f8e,
- 0x16fa0, 0x1afff,
+ 0x16a39, 0x1afff,
0x1b002, 0x1cfff,
0x1d0f6, 0x1d0ff,
0x1d127, 0x1d128,
@@ -5853,41 +1018,7 @@ static const OnigCodePoint CR_Cn[] = {
0x1d551, 0x1d551,
0x1d6a6, 0x1d6a7,
0x1d7cc, 0x1d7cd,
- 0x1d800, 0x1edff,
- 0x1ee04, 0x1ee04,
- 0x1ee20, 0x1ee20,
- 0x1ee23, 0x1ee23,
- 0x1ee25, 0x1ee26,
- 0x1ee28, 0x1ee28,
- 0x1ee33, 0x1ee33,
- 0x1ee38, 0x1ee38,
- 0x1ee3a, 0x1ee3a,
- 0x1ee3c, 0x1ee41,
- 0x1ee43, 0x1ee46,
- 0x1ee48, 0x1ee48,
- 0x1ee4a, 0x1ee4a,
- 0x1ee4c, 0x1ee4c,
- 0x1ee50, 0x1ee50,
- 0x1ee53, 0x1ee53,
- 0x1ee55, 0x1ee56,
- 0x1ee58, 0x1ee58,
- 0x1ee5a, 0x1ee5a,
- 0x1ee5c, 0x1ee5c,
- 0x1ee5e, 0x1ee5e,
- 0x1ee60, 0x1ee60,
- 0x1ee63, 0x1ee63,
- 0x1ee65, 0x1ee66,
- 0x1ee6b, 0x1ee6b,
- 0x1ee73, 0x1ee73,
- 0x1ee78, 0x1ee78,
- 0x1ee7d, 0x1ee7d,
- 0x1ee7f, 0x1ee7f,
- 0x1ee8a, 0x1ee8a,
- 0x1ee9c, 0x1eea0,
- 0x1eea4, 0x1eea4,
- 0x1eeaa, 0x1eeaa,
- 0x1eebc, 0x1eeef,
- 0x1eef2, 0x1efff,
+ 0x1d800, 0x1efff,
0x1f02c, 0x1f02f,
0x1f094, 0x1f09f,
0x1f0af, 0x1f0b0,
@@ -5896,7 +1027,7 @@ static const OnigCodePoint CR_Cn[] = {
0x1f0e0, 0x1f0ff,
0x1f10b, 0x1f10f,
0x1f12f, 0x1f12f,
- 0x1f16c, 0x1f16f,
+ 0x1f16a, 0x1f16f,
0x1f19b, 0x1f1e5,
0x1f203, 0x1f20f,
0x1f23b, 0x1f23f,
@@ -5913,9 +1044,19 @@ static const OnigCodePoint CR_Cn[] = {
0x1f441, 0x1f441,
0x1f4f8, 0x1f4f8,
0x1f4fd, 0x1f4ff,
- 0x1f53e, 0x1f53f,
- 0x1f544, 0x1f54f,
+ 0x1f53e, 0x1f54f,
0x1f568, 0x1f5fa,
+ 0x1f600, 0x1f600,
+ 0x1f611, 0x1f611,
+ 0x1f615, 0x1f615,
+ 0x1f617, 0x1f617,
+ 0x1f619, 0x1f619,
+ 0x1f61b, 0x1f61b,
+ 0x1f61f, 0x1f61f,
+ 0x1f626, 0x1f627,
+ 0x1f62c, 0x1f62c,
+ 0x1f62e, 0x1f62f,
+ 0x1f634, 0x1f634,
0x1f641, 0x1f644,
0x1f650, 0x1f67f,
0x1f6c6, 0x1f6ff,
@@ -5947,7 +1088,7 @@ static const OnigCodePoint CR_Cs[] = {
/* 'L': Major Category */
static const OnigCodePoint CR_L[] = {
- 486,
+ 435,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -5995,8 +1136,6 @@ static const OnigCodePoint CR_L[] = {
0x0824, 0x0824,
0x0828, 0x0828,
0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -6102,7 +1241,7 @@ static const OnigCodePoint CR_L[] = {
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f40, 0x0f47,
0x0f49, 0x0f6c,
@@ -6117,10 +1256,9 @@ static const OnigCodePoint CR_L[] = {
0x1075, 0x1081,
0x108e, 0x108e,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -6167,13 +1305,12 @@ static const OnigCodePoint CR_L[] = {
0x1b45, 0x1b4b,
0x1b83, 0x1ba0,
0x1bae, 0x1baf,
- 0x1bba, 0x1be5,
+ 0x1bc0, 0x1be5,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
- 0x1cf5, 0x1cf6,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -6215,11 +1352,8 @@ static const OnigCodePoint CR_L[] = {
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
@@ -6243,7 +1377,7 @@ static const OnigCodePoint CR_L[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -6255,9 +1389,9 @@ static const OnigCodePoint CR_L[] = {
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa822,
@@ -6282,8 +1416,6 @@ static const OnigCodePoint CR_L[] = {
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaea,
- 0xaaf2, 0xaaf4,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -6293,7 +1425,8 @@ static const OnigCodePoint CR_L[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -6342,8 +1475,6 @@ static const OnigCodePoint CR_L[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -6355,17 +1486,9 @@ static const OnigCodePoint CR_L[] = {
0x10c00, 0x10c48,
0x11003, 0x11037,
0x11083, 0x110af,
- 0x110d0, 0x110e8,
- 0x11103, 0x11126,
- 0x11183, 0x111b2,
- 0x111c1, 0x111c4,
- 0x11680, 0x116aa,
0x12000, 0x1236e,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f50,
- 0x16f93, 0x16f9f,
0x1b000, 0x1b001,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
@@ -6397,168 +1520,19 @@ static const OnigCodePoint CR_L[] = {
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2f800, 0x2fa1d,
}; /* CR_L */
-/* 'LC': General Category */
-static const OnigCodePoint CR_LC[] = {
- 113,
- 0x0041, 0x005a,
- 0x0061, 0x007a,
- 0x00b5, 0x00b5,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00f6,
- 0x00f8, 0x01ba,
- 0x01bc, 0x01bf,
- 0x01c4, 0x0293,
- 0x0295, 0x02af,
- 0x0370, 0x0373,
- 0x0376, 0x0377,
- 0x037b, 0x037d,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x03f5,
- 0x03f7, 0x0481,
- 0x048a, 0x0527,
- 0x0531, 0x0556,
- 0x0561, 0x0587,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x1d00, 0x1d2b,
- 0x1d6b, 0x1d77,
- 0x1d79, 0x1d9a,
- 0x1e00, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fbc,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fcc,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fe0, 0x1fec,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffc,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210a, 0x2113,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x212f, 0x2134,
- 0x2139, 0x2139,
- 0x213c, 0x213f,
- 0x2145, 0x2149,
- 0x214e, 0x214e,
- 0x2183, 0x2184,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2c7b,
- 0x2c7e, 0x2ce4,
- 0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0xa640, 0xa66d,
- 0xa680, 0xa697,
- 0xa722, 0xa76f,
- 0xa771, 0xa787,
- 0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7fa, 0xa7fa,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xff21, 0xff3a,
- 0xff41, 0xff5a,
- 0x10400, 0x1044f,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d6c0,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6fa,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d734,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d76e,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d7a8,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7cb,
-}; /* CR_LC */
-
/* 'Ll': General Category */
static const OnigCodePoint CR_Ll[] = {
- 611,
+ 609,
0x0061, 0x007a,
+ 0x00aa, 0x00aa,
0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
0x00df, 0x00f6,
0x00f8, 0x00ff,
0x0101, 0x0101,
@@ -6824,7 +1798,7 @@ static const OnigCodePoint CR_Ll[] = {
0x0527, 0x0527,
0x0561, 0x0587,
0x1d00, 0x1d2b,
- 0x1d6b, 0x1d77,
+ 0x1d62, 0x1d77,
0x1d79, 0x1d9a,
0x1e01, 0x1e01,
0x1e03, 0x1e03,
@@ -6988,7 +1962,7 @@ static const OnigCodePoint CR_Ll[] = {
0x2c6c, 0x2c6c,
0x2c71, 0x2c71,
0x2c73, 0x2c74,
- 0x2c76, 0x2c7b,
+ 0x2c76, 0x2c7c,
0x2c81, 0x2c81,
0x2c83, 0x2c83,
0x2c85, 0x2c85,
@@ -7041,10 +2015,7 @@ static const OnigCodePoint CR_Ll[] = {
0x2ce3, 0x2ce4,
0x2cec, 0x2cec,
0x2cee, 0x2cee,
- 0x2cf3, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa641, 0xa641,
0xa643, 0xa643,
0xa645, 0xa645,
@@ -7129,7 +2100,6 @@ static const OnigCodePoint CR_Ll[] = {
0xa78c, 0xa78c,
0xa78e, 0xa78e,
0xa791, 0xa791,
- 0xa793, 0xa793,
0xa7a1, 0xa7a1,
0xa7a3, 0xa7a3,
0xa7a5, 0xa7a5,
@@ -7172,7 +2142,7 @@ static const OnigCodePoint CR_Ll[] = {
/* 'Lm': General Category */
static const OnigCodePoint CR_Lm[] = {
- 52,
+ 49,
0x02b0, 0x02c1,
0x02c6, 0x02d1,
0x02e0, 0x02e4,
@@ -7196,13 +2166,13 @@ static const OnigCodePoint CR_Lm[] = {
0x1843, 0x1843,
0x1aa7, 0x1aa7,
0x1c78, 0x1c7d,
- 0x1d2c, 0x1d6a,
+ 0x1d2c, 0x1d61,
0x1d78, 0x1d78,
0x1d9b, 0x1dbf,
0x2071, 0x2071,
0x207f, 0x207f,
0x2090, 0x209c,
- 0x2c7c, 0x2c7d,
+ 0x2c7d, 0x2c7d,
0x2d6f, 0x2d6f,
0x2e2f, 0x2e2f,
0x3005, 0x3005,
@@ -7217,21 +2187,16 @@ static const OnigCodePoint CR_Lm[] = {
0xa717, 0xa71f,
0xa770, 0xa770,
0xa788, 0xa788,
- 0xa7f8, 0xa7f9,
0xa9cf, 0xa9cf,
0xaa70, 0xaa70,
0xaadd, 0xaadd,
- 0xaaf3, 0xaaf4,
0xff70, 0xff70,
0xff9e, 0xff9f,
- 0x16f93, 0x16f9f,
}; /* CR_Lm */
/* 'Lo': General Category */
static const OnigCodePoint CR_Lo[] = {
- 371,
- 0x00aa, 0x00aa,
- 0x00ba, 0x00ba,
+ 323,
0x01bb, 0x01bb,
0x01c0, 0x01c3,
0x0294, 0x0294,
@@ -7252,8 +2217,6 @@ static const OnigCodePoint CR_Lo[] = {
0x07ca, 0x07ea,
0x0800, 0x0815,
0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -7358,7 +2321,7 @@ static const OnigCodePoint CR_Lo[] = {
0x0eb2, 0x0eb3,
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f40, 0x0f47,
0x0f49, 0x0f6c,
@@ -7373,7 +2336,7 @@ static const OnigCodePoint CR_Lo[] = {
0x1075, 0x1081,
0x108e, 0x108e,
0x10d0, 0x10fa,
- 0x10fd, 0x1248,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -7419,15 +2382,14 @@ static const OnigCodePoint CR_Lo[] = {
0x1b45, 0x1b4b,
0x1b83, 0x1ba0,
0x1bae, 0x1baf,
- 0x1bba, 0x1be5,
+ 0x1bc0, 0x1be5,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c77,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
- 0x1cf5, 0x1cf6,
0x2135, 0x2138,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
0x2da8, 0x2dae,
@@ -7448,7 +2410,7 @@ static const OnigCodePoint CR_Lo[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa014,
0xa016, 0xa48c,
0xa4d0, 0xa4f7,
@@ -7482,8 +2444,6 @@ static const OnigCodePoint CR_Lo[] = {
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadc,
- 0xaae0, 0xaaea,
- 0xaaf2, 0xaaf2,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -7493,7 +2453,8 @@ static const OnigCodePoint CR_Lo[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb1d, 0xfb1d,
0xfb1f, 0xfb28,
@@ -7540,8 +2501,6 @@ static const OnigCodePoint CR_Lo[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -7553,50 +2512,10 @@ static const OnigCodePoint CR_Lo[] = {
0x10c00, 0x10c48,
0x11003, 0x11037,
0x11083, 0x110af,
- 0x110d0, 0x110e8,
- 0x11103, 0x11126,
- 0x11183, 0x111b2,
- 0x111c1, 0x111c4,
- 0x11680, 0x116aa,
0x12000, 0x1236e,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f50,
0x1b000, 0x1b001,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -7620,7 +2539,7 @@ static const OnigCodePoint CR_Lt[] = {
/* 'Lu': General Category */
static const OnigCodePoint CR_Lu[] = {
- 608,
+ 603,
0x0041, 0x005a,
0x00c0, 0x00d6,
0x00d8, 0x00de,
@@ -7889,8 +2808,6 @@ static const OnigCodePoint CR_Lu[] = {
0x0526, 0x0526,
0x0531, 0x0556,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1e00, 0x1e00,
0x1e02, 0x1e02,
0x1e04, 0x1e04,
@@ -8105,7 +3022,6 @@ static const OnigCodePoint CR_Lu[] = {
0x2ce2, 0x2ce2,
0x2ceb, 0x2ceb,
0x2ced, 0x2ced,
- 0x2cf2, 0x2cf2,
0xa640, 0xa640,
0xa642, 0xa642,
0xa644, 0xa644,
@@ -8189,13 +3105,11 @@ static const OnigCodePoint CR_Lu[] = {
0xa78b, 0xa78b,
0xa78d, 0xa78d,
0xa790, 0xa790,
- 0xa792, 0xa792,
0xa7a0, 0xa7a0,
0xa7a2, 0xa7a2,
0xa7a4, 0xa7a4,
0xa7a6, 0xa7a6,
0xa7a8, 0xa7a8,
- 0xa7aa, 0xa7aa,
0xff21, 0xff3a,
0x10400, 0x10427,
0x1d400, 0x1d419,
@@ -8233,7 +3147,7 @@ static const OnigCodePoint CR_Lu[] = {
/* 'M': Major Category */
static const OnigCodePoint CR_M[] = {
- 204,
+ 193,
0x0300, 0x036f,
0x0483, 0x0489,
0x0591, 0x05bd,
@@ -8257,7 +3171,6 @@ static const OnigCodePoint CR_M[] = {
0x0825, 0x0827,
0x0829, 0x082d,
0x0859, 0x085b,
- 0x08e4, 0x08fe,
0x0900, 0x0903,
0x093a, 0x093c,
0x093e, 0x094f,
@@ -8352,7 +3265,7 @@ static const OnigCodePoint CR_M[] = {
0x1732, 0x1734,
0x1752, 0x1753,
0x1772, 0x1773,
- 0x17b4, 0x17d3,
+ 0x17b6, 0x17d3,
0x17dd, 0x17dd,
0x180b, 0x180d,
0x18a9, 0x18a9,
@@ -8368,13 +3281,13 @@ static const OnigCodePoint CR_M[] = {
0x1b34, 0x1b44,
0x1b6b, 0x1b73,
0x1b80, 0x1b82,
- 0x1ba1, 0x1bad,
+ 0x1ba1, 0x1baa,
0x1be6, 0x1bf3,
0x1c24, 0x1c37,
0x1cd0, 0x1cd2,
0x1cd4, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf2, 0x1cf4,
+ 0x1cf2, 0x1cf2,
0x1dc0, 0x1de6,
0x1dfc, 0x1dff,
0x20d0, 0x20f0,
@@ -8384,8 +3297,7 @@ static const OnigCodePoint CR_M[] = {
0x302a, 0x302f,
0x3099, 0x309a,
0xa66f, 0xa672,
- 0xa674, 0xa67d,
- 0xa69f, 0xa69f,
+ 0xa67c, 0xa67d,
0xa6f0, 0xa6f1,
0xa802, 0xa802,
0xa806, 0xa806,
@@ -8407,8 +3319,6 @@ static const OnigCodePoint CR_M[] = {
0xaab7, 0xaab8,
0xaabe, 0xaabf,
0xaac1, 0xaac1,
- 0xaaeb, 0xaaef,
- 0xaaf5, 0xaaf6,
0xabe3, 0xabea,
0xabec, 0xabed,
0xfb1e, 0xfb1e,
@@ -8424,13 +3334,6 @@ static const OnigCodePoint CR_M[] = {
0x11038, 0x11046,
0x11080, 0x11082,
0x110b0, 0x110ba,
- 0x11100, 0x11102,
- 0x11127, 0x11134,
- 0x11180, 0x11182,
- 0x111b3, 0x111c0,
- 0x116ab, 0x116b7,
- 0x16f51, 0x16f7e,
- 0x16f8f, 0x16f92,
0x1d165, 0x1d169,
0x1d16d, 0x1d172,
0x1d17b, 0x1d182,
@@ -8442,7 +3345,7 @@ static const OnigCodePoint CR_M[] = {
/* 'Mc': General Category */
static const OnigCodePoint CR_Mc[] = {
- 126,
+ 113,
0x0903, 0x0903,
0x093b, 0x093b,
0x093e, 0x0940,
@@ -8524,7 +3427,6 @@ static const OnigCodePoint CR_Mc[] = {
0x1ba1, 0x1ba1,
0x1ba6, 0x1ba7,
0x1baa, 0x1baa,
- 0x1bac, 0x1bad,
0x1be7, 0x1be7,
0x1bea, 0x1bec,
0x1bee, 0x1bee,
@@ -8532,8 +3434,7 @@ static const OnigCodePoint CR_Mc[] = {
0x1c24, 0x1c2b,
0x1c34, 0x1c35,
0x1ce1, 0x1ce1,
- 0x1cf2, 0x1cf3,
- 0x302e, 0x302f,
+ 0x1cf2, 0x1cf2,
0xa823, 0xa824,
0xa827, 0xa827,
0xa880, 0xa881,
@@ -8547,9 +3448,6 @@ static const OnigCodePoint CR_Mc[] = {
0xaa33, 0xaa34,
0xaa4d, 0xaa4d,
0xaa7b, 0xaa7b,
- 0xaaeb, 0xaaeb,
- 0xaaee, 0xaaef,
- 0xaaf5, 0xaaf5,
0xabe3, 0xabe4,
0xabe6, 0xabe7,
0xabe9, 0xabea,
@@ -8559,14 +3457,6 @@ static const OnigCodePoint CR_Mc[] = {
0x11082, 0x11082,
0x110b0, 0x110b2,
0x110b7, 0x110b8,
- 0x1112c, 0x1112c,
- 0x11182, 0x11182,
- 0x111b3, 0x111b5,
- 0x111bf, 0x111c0,
- 0x116ac, 0x116ac,
- 0x116ae, 0x116af,
- 0x116b6, 0x116b6,
- 0x16f51, 0x16f7e,
0x1d165, 0x1d166,
0x1d16d, 0x1d172,
}; /* CR_Mc */
@@ -8582,7 +3472,7 @@ static const OnigCodePoint CR_Me[] = {
/* 'Mn': General Category */
static const OnigCodePoint CR_Mn[] = {
- 220,
+ 203,
0x0300, 0x036f,
0x0483, 0x0487,
0x0591, 0x05bd,
@@ -8606,7 +3496,6 @@ static const OnigCodePoint CR_Mn[] = {
0x0825, 0x0827,
0x0829, 0x082d,
0x0859, 0x085b,
- 0x08e4, 0x08fe,
0x0900, 0x0902,
0x093a, 0x093a,
0x093c, 0x093c,
@@ -8692,7 +3581,6 @@ static const OnigCodePoint CR_Mn[] = {
0x1732, 0x1734,
0x1752, 0x1753,
0x1772, 0x1773,
- 0x17b4, 0x17b5,
0x17b7, 0x17bd,
0x17c6, 0x17c6,
0x17c9, 0x17d3,
@@ -8720,7 +3608,6 @@ static const OnigCodePoint CR_Mn[] = {
0x1b80, 0x1b81,
0x1ba2, 0x1ba5,
0x1ba8, 0x1ba9,
- 0x1bab, 0x1bab,
0x1be6, 0x1be6,
0x1be8, 0x1be9,
0x1bed, 0x1bed,
@@ -8731,7 +3618,6 @@ static const OnigCodePoint CR_Mn[] = {
0x1cd4, 0x1ce0,
0x1ce2, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
0x1dc0, 0x1de6,
0x1dfc, 0x1dff,
0x20d0, 0x20dc,
@@ -8740,11 +3626,10 @@ static const OnigCodePoint CR_Mn[] = {
0x2cef, 0x2cf1,
0x2d7f, 0x2d7f,
0x2de0, 0x2dff,
- 0x302a, 0x302d,
+ 0x302a, 0x302f,
0x3099, 0x309a,
0xa66f, 0xa66f,
- 0xa674, 0xa67d,
- 0xa69f, 0xa69f,
+ 0xa67c, 0xa67d,
0xa6f0, 0xa6f1,
0xa802, 0xa802,
0xa806, 0xa806,
@@ -8768,8 +3653,6 @@ static const OnigCodePoint CR_Mn[] = {
0xaab7, 0xaab8,
0xaabe, 0xaabf,
0xaac1, 0xaac1,
- 0xaaec, 0xaaed,
- 0xaaf6, 0xaaf6,
0xabe5, 0xabe5,
0xabe8, 0xabe8,
0xabed, 0xabed,
@@ -8787,16 +3670,6 @@ static const OnigCodePoint CR_Mn[] = {
0x11080, 0x11081,
0x110b3, 0x110b6,
0x110b9, 0x110ba,
- 0x11100, 0x11102,
- 0x11127, 0x1112b,
- 0x1112d, 0x11134,
- 0x11180, 0x11181,
- 0x111b6, 0x111be,
- 0x116ab, 0x116ab,
- 0x116ad, 0x116ad,
- 0x116b0, 0x116b5,
- 0x116b7, 0x116b7,
- 0x16f8f, 0x16f92,
0x1d167, 0x1d169,
0x1d17b, 0x1d182,
0x1d185, 0x1d18b,
@@ -8807,7 +3680,7 @@ static const OnigCodePoint CR_Mn[] = {
/* 'N': Major Category */
static const OnigCodePoint CR_N[] = {
- 88,
+ 83,
0x0030, 0x0039,
0x00b2, 0x00b3,
0x00b9, 0x00b9,
@@ -8859,7 +3732,6 @@ static const OnigCodePoint CR_N[] = {
0x3038, 0x303a,
0x3192, 0x3195,
0x3220, 0x3229,
- 0x3248, 0x324f,
0x3251, 0x325f,
0x3280, 0x3289,
0x32b1, 0x32bf,
@@ -8888,10 +3760,6 @@ static const OnigCodePoint CR_N[] = {
0x10b78, 0x10b7f,
0x10e60, 0x10e7e,
0x11052, 0x1106f,
- 0x110f0, 0x110f9,
- 0x11136, 0x1113f,
- 0x111d0, 0x111d9,
- 0x116c0, 0x116c9,
0x12400, 0x12462,
0x1d360, 0x1d371,
0x1d7ce, 0x1d7ff,
@@ -8899,7 +3767,47 @@ static const OnigCodePoint CR_N[] = {
}; /* CR_N */
/* 'Nd': General Category */
-#define CR_Nd CR_Digit
+static const OnigCodePoint CR_Nd[] = {
+ 38,
+ 0x0030, 0x0039,
+ 0x0660, 0x0669,
+ 0x06f0, 0x06f9,
+ 0x07c0, 0x07c9,
+ 0x0966, 0x096f,
+ 0x09e6, 0x09ef,
+ 0x0a66, 0x0a6f,
+ 0x0ae6, 0x0aef,
+ 0x0b66, 0x0b6f,
+ 0x0be6, 0x0bef,
+ 0x0c66, 0x0c6f,
+ 0x0ce6, 0x0cef,
+ 0x0d66, 0x0d6f,
+ 0x0e50, 0x0e59,
+ 0x0ed0, 0x0ed9,
+ 0x0f20, 0x0f29,
+ 0x1040, 0x1049,
+ 0x1090, 0x1099,
+ 0x17e0, 0x17e9,
+ 0x1810, 0x1819,
+ 0x1946, 0x194f,
+ 0x19d0, 0x19d9,
+ 0x1a80, 0x1a89,
+ 0x1a90, 0x1a99,
+ 0x1b50, 0x1b59,
+ 0x1bb0, 0x1bb9,
+ 0x1c40, 0x1c49,
+ 0x1c50, 0x1c59,
+ 0xa620, 0xa629,
+ 0xa8d0, 0xa8d9,
+ 0xa900, 0xa909,
+ 0xa9d0, 0xa9d9,
+ 0xaa50, 0xaa59,
+ 0xabf0, 0xabf9,
+ 0xff10, 0xff19,
+ 0x104a0, 0x104a9,
+ 0x11066, 0x1106f,
+ 0x1d7ce, 0x1d7ff,
+}; /* CR_Nd */
/* 'Nl': General Category */
static const OnigCodePoint CR_Nl[] = {
@@ -8920,7 +3828,7 @@ static const OnigCodePoint CR_Nl[] = {
/* 'No': General Category */
static const OnigCodePoint CR_No[] = {
- 42,
+ 41,
0x00b2, 0x00b3,
0x00b9, 0x00b9,
0x00bc, 0x00be,
@@ -8944,7 +3852,6 @@ static const OnigCodePoint CR_No[] = {
0x2cfd, 0x2cfd,
0x3192, 0x3195,
0x3220, 0x3229,
- 0x3248, 0x324f,
0x3251, 0x325f,
0x3280, 0x3289,
0x32b1, 0x32bf,
@@ -8966,7 +3873,142 @@ static const OnigCodePoint CR_No[] = {
}; /* CR_No */
/* 'P': Major Category */
-#define CR_P CR_Punct
+static const OnigCodePoint CR_P[] = {
+ 133,
+ 0x0021, 0x0023,
+ 0x0025, 0x002a,
+ 0x002c, 0x002f,
+ 0x003a, 0x003b,
+ 0x003f, 0x0040,
+ 0x005b, 0x005d,
+ 0x005f, 0x005f,
+ 0x007b, 0x007b,
+ 0x007d, 0x007d,
+ 0x00a1, 0x00a1,
+ 0x00ab, 0x00ab,
+ 0x00b7, 0x00b7,
+ 0x00bb, 0x00bb,
+ 0x00bf, 0x00bf,
+ 0x037e, 0x037e,
+ 0x0387, 0x0387,
+ 0x055a, 0x055f,
+ 0x0589, 0x058a,
+ 0x05be, 0x05be,
+ 0x05c0, 0x05c0,
+ 0x05c3, 0x05c3,
+ 0x05c6, 0x05c6,
+ 0x05f3, 0x05f4,
+ 0x0609, 0x060a,
+ 0x060c, 0x060d,
+ 0x061b, 0x061b,
+ 0x061e, 0x061f,
+ 0x066a, 0x066d,
+ 0x06d4, 0x06d4,
+ 0x0700, 0x070d,
+ 0x07f7, 0x07f9,
+ 0x0830, 0x083e,
+ 0x085e, 0x085e,
+ 0x0964, 0x0965,
+ 0x0970, 0x0970,
+ 0x0df4, 0x0df4,
+ 0x0e4f, 0x0e4f,
+ 0x0e5a, 0x0e5b,
+ 0x0f04, 0x0f12,
+ 0x0f3a, 0x0f3d,
+ 0x0f85, 0x0f85,
+ 0x0fd0, 0x0fd4,
+ 0x0fd9, 0x0fda,
+ 0x104a, 0x104f,
+ 0x10fb, 0x10fb,
+ 0x1361, 0x1368,
+ 0x1400, 0x1400,
+ 0x166d, 0x166e,
+ 0x169b, 0x169c,
+ 0x16eb, 0x16ed,
+ 0x1735, 0x1736,
+ 0x17d4, 0x17d6,
+ 0x17d8, 0x17da,
+ 0x1800, 0x180a,
+ 0x1944, 0x1945,
+ 0x1a1e, 0x1a1f,
+ 0x1aa0, 0x1aa6,
+ 0x1aa8, 0x1aad,
+ 0x1b5a, 0x1b60,
+ 0x1bfc, 0x1bff,
+ 0x1c3b, 0x1c3f,
+ 0x1c7e, 0x1c7f,
+ 0x1cd3, 0x1cd3,
+ 0x2010, 0x2027,
+ 0x2030, 0x2043,
+ 0x2045, 0x2051,
+ 0x2053, 0x205e,
+ 0x207d, 0x207e,
+ 0x208d, 0x208e,
+ 0x2329, 0x232a,
+ 0x2768, 0x2775,
+ 0x27c5, 0x27c6,
+ 0x27e6, 0x27ef,
+ 0x2983, 0x2998,
+ 0x29d8, 0x29db,
+ 0x29fc, 0x29fd,
+ 0x2cf9, 0x2cfc,
+ 0x2cfe, 0x2cff,
+ 0x2d70, 0x2d70,
+ 0x2e00, 0x2e2e,
+ 0x2e30, 0x2e31,
+ 0x3001, 0x3003,
+ 0x3008, 0x3011,
+ 0x3014, 0x301f,
+ 0x3030, 0x3030,
+ 0x303d, 0x303d,
+ 0x30a0, 0x30a0,
+ 0x30fb, 0x30fb,
+ 0xa4fe, 0xa4ff,
+ 0xa60d, 0xa60f,
+ 0xa673, 0xa673,
+ 0xa67e, 0xa67e,
+ 0xa6f2, 0xa6f7,
+ 0xa874, 0xa877,
+ 0xa8ce, 0xa8cf,
+ 0xa8f8, 0xa8fa,
+ 0xa92e, 0xa92f,
+ 0xa95f, 0xa95f,
+ 0xa9c1, 0xa9cd,
+ 0xa9de, 0xa9df,
+ 0xaa5c, 0xaa5f,
+ 0xaade, 0xaadf,
+ 0xabeb, 0xabeb,
+ 0xfd3e, 0xfd3f,
+ 0xfe10, 0xfe19,
+ 0xfe30, 0xfe52,
+ 0xfe54, 0xfe61,
+ 0xfe63, 0xfe63,
+ 0xfe68, 0xfe68,
+ 0xfe6a, 0xfe6b,
+ 0xff01, 0xff03,
+ 0xff05, 0xff0a,
+ 0xff0c, 0xff0f,
+ 0xff1a, 0xff1b,
+ 0xff1f, 0xff20,
+ 0xff3b, 0xff3d,
+ 0xff3f, 0xff3f,
+ 0xff5b, 0xff5b,
+ 0xff5d, 0xff5d,
+ 0xff5f, 0xff65,
+ 0x10100, 0x10101,
+ 0x1039f, 0x1039f,
+ 0x103d0, 0x103d0,
+ 0x10857, 0x10857,
+ 0x1091f, 0x1091f,
+ 0x1093f, 0x1093f,
+ 0x10a50, 0x10a58,
+ 0x10a7f, 0x10a7f,
+ 0x10b39, 0x10b3f,
+ 0x11047, 0x1104d,
+ 0x110bb, 0x110bc,
+ 0x110be, 0x110c1,
+ 0x12470, 0x12473,
+}; /* CR_P */
/* 'Pc': General Category */
static const OnigCodePoint CR_Pc[] = {
@@ -8981,7 +4023,7 @@ static const OnigCodePoint CR_Pc[] = {
/* 'Pd': General Category */
static const OnigCodePoint CR_Pd[] = {
- 16,
+ 15,
0x002d, 0x002d,
0x058a, 0x058a,
0x05be, 0x05be,
@@ -8990,7 +4032,6 @@ static const OnigCodePoint CR_Pd[] = {
0x2010, 0x2015,
0x2e17, 0x2e17,
0x2e1a, 0x2e1a,
- 0x2e3a, 0x2e3b,
0x301c, 0x301c,
0x3030, 0x3030,
0x30a0, 0x30a0,
@@ -9108,7 +4149,7 @@ static const OnigCodePoint CR_Pi[] = {
/* 'Po': General Category */
static const OnigCodePoint CR_Po[] = {
- 135,
+ 128,
0x0021, 0x0023,
0x0025, 0x0027,
0x002a, 0x002a,
@@ -9118,8 +4159,7 @@ static const OnigCodePoint CR_Po[] = {
0x003f, 0x0040,
0x005c, 0x005c,
0x00a1, 0x00a1,
- 0x00a7, 0x00a7,
- 0x00b6, 0x00b7,
+ 0x00b7, 0x00b7,
0x00bf, 0x00bf,
0x037e, 0x037e,
0x0387, 0x0387,
@@ -9141,18 +4181,16 @@ static const OnigCodePoint CR_Po[] = {
0x085e, 0x085e,
0x0964, 0x0965,
0x0970, 0x0970,
- 0x0af0, 0x0af0,
0x0df4, 0x0df4,
0x0e4f, 0x0e4f,
0x0e5a, 0x0e5b,
0x0f04, 0x0f12,
- 0x0f14, 0x0f14,
0x0f85, 0x0f85,
0x0fd0, 0x0fd4,
0x0fd9, 0x0fda,
0x104a, 0x104f,
0x10fb, 0x10fb,
- 0x1360, 0x1368,
+ 0x1361, 0x1368,
0x166d, 0x166e,
0x16eb, 0x16ed,
0x1735, 0x1736,
@@ -9168,7 +4206,6 @@ static const OnigCodePoint CR_Po[] = {
0x1bfc, 0x1bff,
0x1c3b, 0x1c3f,
0x1c7e, 0x1c7f,
- 0x1cc0, 0x1cc7,
0x1cd3, 0x1cd3,
0x2016, 0x2017,
0x2020, 0x2027,
@@ -9189,7 +4226,7 @@ static const OnigCodePoint CR_Po[] = {
0x2e1b, 0x2e1b,
0x2e1e, 0x2e1f,
0x2e2a, 0x2e2e,
- 0x2e30, 0x2e39,
+ 0x2e30, 0x2e31,
0x3001, 0x3003,
0x303d, 0x303d,
0x30fb, 0x30fb,
@@ -9207,7 +4244,6 @@ static const OnigCodePoint CR_Po[] = {
0xa9de, 0xa9df,
0xaa5c, 0xaa5f,
0xaade, 0xaadf,
- 0xaaf0, 0xaaf1,
0xabeb, 0xabeb,
0xfe10, 0xfe16,
0xfe19, 0xfe19,
@@ -9229,7 +4265,7 @@ static const OnigCodePoint CR_Po[] = {
0xff3c, 0xff3c,
0xff61, 0xff61,
0xff64, 0xff65,
- 0x10100, 0x10102,
+ 0x10100, 0x10101,
0x1039f, 0x1039f,
0x103d0, 0x103d0,
0x10857, 0x10857,
@@ -9241,8 +4277,6 @@ static const OnigCodePoint CR_Po[] = {
0x11047, 0x1104d,
0x110bb, 0x110bc,
0x110be, 0x110c1,
- 0x11140, 0x11143,
- 0x111c5, 0x111c8,
0x12470, 0x12473,
}; /* CR_Po */
@@ -9325,7 +4359,7 @@ static const OnigCodePoint CR_Ps[] = {
/* 'S': Major Category */
static const OnigCodePoint CR_S[] = {
- 198,
+ 208,
0x0024, 0x0024,
0x002b, 0x002b,
0x003c, 0x003e,
@@ -9333,11 +4367,11 @@ static const OnigCodePoint CR_S[] = {
0x0060, 0x0060,
0x007c, 0x007c,
0x007e, 0x007e,
- 0x00a2, 0x00a6,
- 0x00a8, 0x00a9,
+ 0x00a2, 0x00a9,
0x00ac, 0x00ac,
0x00ae, 0x00b1,
0x00b4, 0x00b4,
+ 0x00b6, 0x00b6,
0x00b8, 0x00b8,
0x00d7, 0x00d7,
0x00f7, 0x00f7,
@@ -9350,7 +4384,6 @@ static const OnigCodePoint CR_S[] = {
0x0384, 0x0385,
0x03f6, 0x03f6,
0x0482, 0x0482,
- 0x058f, 0x058f,
0x0606, 0x0608,
0x060b, 0x060b,
0x060e, 0x060f,
@@ -9367,8 +4400,7 @@ static const OnigCodePoint CR_S[] = {
0x0d79, 0x0d79,
0x0e3f, 0x0e3f,
0x0f01, 0x0f03,
- 0x0f13, 0x0f13,
- 0x0f15, 0x0f17,
+ 0x0f13, 0x0f17,
0x0f1a, 0x0f1f,
0x0f34, 0x0f34,
0x0f36, 0x0f36,
@@ -9378,6 +4410,7 @@ static const OnigCodePoint CR_S[] = {
0x0fce, 0x0fcf,
0x0fd5, 0x0fd8,
0x109e, 0x109f,
+ 0x1360, 0x1360,
0x1390, 0x1399,
0x17db, 0x17db,
0x1940, 0x1940,
@@ -9417,7 +4450,9 @@ static const OnigCodePoint CR_S[] = {
0x2500, 0x26ff,
0x2701, 0x2767,
0x2794, 0x27c4,
- 0x27c7, 0x27e5,
+ 0x27c7, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x27e5,
0x27f0, 0x2982,
0x2999, 0x29d7,
0x29dc, 0x29fb,
@@ -9438,8 +4473,7 @@ static const OnigCodePoint CR_S[] = {
0x3196, 0x319f,
0x31c0, 0x31e3,
0x3200, 0x321e,
- 0x322a, 0x3247,
- 0x3250, 0x3250,
+ 0x322a, 0x3250,
0x3260, 0x327f,
0x328a, 0x32b0,
0x32c0, 0x32fe,
@@ -9468,6 +4502,7 @@ static const OnigCodePoint CR_S[] = {
0xffe0, 0xffe6,
0xffe8, 0xffee,
0xfffc, 0xfffd,
+ 0x10102, 0x10102,
0x10137, 0x1013f,
0x10179, 0x10189,
0x10190, 0x1019b,
@@ -9492,7 +4527,6 @@ static const OnigCodePoint CR_S[] = {
0x1d789, 0x1d789,
0x1d7a9, 0x1d7a9,
0x1d7c3, 0x1d7c3,
- 0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
@@ -9500,7 +4534,7 @@ static const OnigCodePoint CR_S[] = {
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0df,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -9518,9 +4552,19 @@ static const OnigCodePoint CR_S[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -9528,10 +4572,9 @@ static const OnigCodePoint CR_S[] = {
/* 'Sc': General Category */
static const OnigCodePoint CR_Sc[] = {
- 17,
+ 16,
0x0024, 0x0024,
0x00a2, 0x00a5,
- 0x058f, 0x058f,
0x060b, 0x060b,
0x09f2, 0x09f3,
0x09fb, 0x09fb,
@@ -9582,7 +4625,7 @@ static const OnigCodePoint CR_Sk[] = {
/* 'Sm': General Category */
static const OnigCodePoint CR_Sm[] = {
- 65,
+ 66,
0x002b, 0x002b,
0x003c, 0x003e,
0x007c, 0x007c,
@@ -9620,7 +4663,9 @@ static const OnigCodePoint CR_Sm[] = {
0x25f8, 0x25ff,
0x266f, 0x266f,
0x27c0, 0x27c4,
- 0x27c7, 0x27e5,
+ 0x27c7, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x27e5,
0x27f0, 0x27ff,
0x2900, 0x2982,
0x2999, 0x29d7,
@@ -9647,16 +4692,16 @@ static const OnigCodePoint CR_Sm[] = {
0x1d789, 0x1d789,
0x1d7a9, 0x1d7a9,
0x1d7c3, 0x1d7c3,
- 0x1eef0, 0x1eef1,
}; /* CR_Sm */
/* 'So': General Category */
static const OnigCodePoint CR_So[] = {
- 153,
- 0x00a6, 0x00a6,
+ 164,
+ 0x00a6, 0x00a7,
0x00a9, 0x00a9,
0x00ae, 0x00ae,
0x00b0, 0x00b0,
+ 0x00b6, 0x00b6,
0x0482, 0x0482,
0x060e, 0x060f,
0x06de, 0x06de,
@@ -9670,8 +4715,7 @@ static const OnigCodePoint CR_So[] = {
0x0c7f, 0x0c7f,
0x0d79, 0x0d79,
0x0f01, 0x0f03,
- 0x0f13, 0x0f13,
- 0x0f15, 0x0f17,
+ 0x0f13, 0x0f17,
0x0f1a, 0x0f1f,
0x0f34, 0x0f34,
0x0f36, 0x0f36,
@@ -9681,6 +4725,7 @@ static const OnigCodePoint CR_So[] = {
0x0fce, 0x0fcf,
0x0fd5, 0x0fd8,
0x109e, 0x109f,
+ 0x1360, 0x1360,
0x1390, 0x1399,
0x1940, 0x1940,
0x19de, 0x19ff,
@@ -9744,8 +4789,7 @@ static const OnigCodePoint CR_So[] = {
0x3196, 0x319f,
0x31c0, 0x31e3,
0x3200, 0x321e,
- 0x322a, 0x3247,
- 0x3250, 0x3250,
+ 0x322a, 0x3250,
0x3260, 0x327f,
0x328a, 0x32b0,
0x32c0, 0x32fe,
@@ -9761,6 +4805,7 @@ static const OnigCodePoint CR_So[] = {
0xffe8, 0xffe8,
0xffed, 0xffee,
0xfffc, 0xfffd,
+ 0x10102, 0x10102,
0x10137, 0x1013f,
0x10179, 0x10189,
0x10190, 0x1019b,
@@ -9782,7 +4827,7 @@ static const OnigCodePoint CR_So[] = {
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0df,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -9800,9 +4845,19 @@ static const OnigCodePoint CR_So[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -9849,7 +4904,7 @@ static const OnigCodePoint CR_Zs[] = {
/* 'Math': Derived Property */
static const OnigCodePoint CR_Math[] = {
- 138,
+ 106,
0x002b, 0x002b,
0x003c, 0x003e,
0x005e, 0x005e,
@@ -9918,7 +4973,9 @@ static const OnigCodePoint CR_Math[] = {
0x2642, 0x2642,
0x2660, 0x2663,
0x266d, 0x266f,
- 0x27c0, 0x27ff,
+ 0x27c0, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x27ff,
0x2900, 0x2aff,
0x2b30, 0x2b44,
0x2b47, 0x2b4c,
@@ -9954,54 +5011,1729 @@ static const OnigCodePoint CR_Math[] = {
0x1d552, 0x1d6a5,
0x1d6a8, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
}; /* CR_Math */
/* 'Alphabetic': Derived Property */
-#define CR_Alphabetic CR_Alpha
+static const OnigCodePoint CR_Alphabetic[] = {
+ 486,
+ 0x0041, 0x005a,
+ 0x0061, 0x007a,
+ 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
+ 0x00c0, 0x00d6,
+ 0x00d8, 0x00f6,
+ 0x00f8, 0x02c1,
+ 0x02c6, 0x02d1,
+ 0x02e0, 0x02e4,
+ 0x02ec, 0x02ec,
+ 0x02ee, 0x02ee,
+ 0x0345, 0x0345,
+ 0x0370, 0x0374,
+ 0x0376, 0x0377,
+ 0x037a, 0x037d,
+ 0x0386, 0x0386,
+ 0x0388, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x03a1,
+ 0x03a3, 0x03f5,
+ 0x03f7, 0x0481,
+ 0x048a, 0x0527,
+ 0x0531, 0x0556,
+ 0x0559, 0x0559,
+ 0x0561, 0x0587,
+ 0x05b0, 0x05bd,
+ 0x05bf, 0x05bf,
+ 0x05c1, 0x05c2,
+ 0x05c4, 0x05c5,
+ 0x05c7, 0x05c7,
+ 0x05d0, 0x05ea,
+ 0x05f0, 0x05f2,
+ 0x0610, 0x061a,
+ 0x0620, 0x0657,
+ 0x0659, 0x065f,
+ 0x066e, 0x06d3,
+ 0x06d5, 0x06dc,
+ 0x06e1, 0x06e8,
+ 0x06ed, 0x06ef,
+ 0x06fa, 0x06fc,
+ 0x06ff, 0x06ff,
+ 0x0710, 0x073f,
+ 0x074d, 0x07b1,
+ 0x07ca, 0x07ea,
+ 0x07f4, 0x07f5,
+ 0x07fa, 0x07fa,
+ 0x0800, 0x0817,
+ 0x081a, 0x082c,
+ 0x0840, 0x0858,
+ 0x0900, 0x093b,
+ 0x093d, 0x094c,
+ 0x094e, 0x0950,
+ 0x0955, 0x0963,
+ 0x0971, 0x0977,
+ 0x0979, 0x097f,
+ 0x0981, 0x0983,
+ 0x0985, 0x098c,
+ 0x098f, 0x0990,
+ 0x0993, 0x09a8,
+ 0x09aa, 0x09b0,
+ 0x09b2, 0x09b2,
+ 0x09b6, 0x09b9,
+ 0x09bd, 0x09c4,
+ 0x09c7, 0x09c8,
+ 0x09cb, 0x09cc,
+ 0x09ce, 0x09ce,
+ 0x09d7, 0x09d7,
+ 0x09dc, 0x09dd,
+ 0x09df, 0x09e3,
+ 0x09f0, 0x09f1,
+ 0x0a01, 0x0a03,
+ 0x0a05, 0x0a0a,
+ 0x0a0f, 0x0a10,
+ 0x0a13, 0x0a28,
+ 0x0a2a, 0x0a30,
+ 0x0a32, 0x0a33,
+ 0x0a35, 0x0a36,
+ 0x0a38, 0x0a39,
+ 0x0a3e, 0x0a42,
+ 0x0a47, 0x0a48,
+ 0x0a4b, 0x0a4c,
+ 0x0a51, 0x0a51,
+ 0x0a59, 0x0a5c,
+ 0x0a5e, 0x0a5e,
+ 0x0a70, 0x0a75,
+ 0x0a81, 0x0a83,
+ 0x0a85, 0x0a8d,
+ 0x0a8f, 0x0a91,
+ 0x0a93, 0x0aa8,
+ 0x0aaa, 0x0ab0,
+ 0x0ab2, 0x0ab3,
+ 0x0ab5, 0x0ab9,
+ 0x0abd, 0x0ac5,
+ 0x0ac7, 0x0ac9,
+ 0x0acb, 0x0acc,
+ 0x0ad0, 0x0ad0,
+ 0x0ae0, 0x0ae3,
+ 0x0b01, 0x0b03,
+ 0x0b05, 0x0b0c,
+ 0x0b0f, 0x0b10,
+ 0x0b13, 0x0b28,
+ 0x0b2a, 0x0b30,
+ 0x0b32, 0x0b33,
+ 0x0b35, 0x0b39,
+ 0x0b3d, 0x0b44,
+ 0x0b47, 0x0b48,
+ 0x0b4b, 0x0b4c,
+ 0x0b56, 0x0b57,
+ 0x0b5c, 0x0b5d,
+ 0x0b5f, 0x0b63,
+ 0x0b71, 0x0b71,
+ 0x0b82, 0x0b83,
+ 0x0b85, 0x0b8a,
+ 0x0b8e, 0x0b90,
+ 0x0b92, 0x0b95,
+ 0x0b99, 0x0b9a,
+ 0x0b9c, 0x0b9c,
+ 0x0b9e, 0x0b9f,
+ 0x0ba3, 0x0ba4,
+ 0x0ba8, 0x0baa,
+ 0x0bae, 0x0bb9,
+ 0x0bbe, 0x0bc2,
+ 0x0bc6, 0x0bc8,
+ 0x0bca, 0x0bcc,
+ 0x0bd0, 0x0bd0,
+ 0x0bd7, 0x0bd7,
+ 0x0c01, 0x0c03,
+ 0x0c05, 0x0c0c,
+ 0x0c0e, 0x0c10,
+ 0x0c12, 0x0c28,
+ 0x0c2a, 0x0c33,
+ 0x0c35, 0x0c39,
+ 0x0c3d, 0x0c44,
+ 0x0c46, 0x0c48,
+ 0x0c4a, 0x0c4c,
+ 0x0c55, 0x0c56,
+ 0x0c58, 0x0c59,
+ 0x0c60, 0x0c63,
+ 0x0c82, 0x0c83,
+ 0x0c85, 0x0c8c,
+ 0x0c8e, 0x0c90,
+ 0x0c92, 0x0ca8,
+ 0x0caa, 0x0cb3,
+ 0x0cb5, 0x0cb9,
+ 0x0cbd, 0x0cc4,
+ 0x0cc6, 0x0cc8,
+ 0x0cca, 0x0ccc,
+ 0x0cd5, 0x0cd6,
+ 0x0cde, 0x0cde,
+ 0x0ce0, 0x0ce3,
+ 0x0cf1, 0x0cf2,
+ 0x0d02, 0x0d03,
+ 0x0d05, 0x0d0c,
+ 0x0d0e, 0x0d10,
+ 0x0d12, 0x0d3a,
+ 0x0d3d, 0x0d44,
+ 0x0d46, 0x0d48,
+ 0x0d4a, 0x0d4c,
+ 0x0d4e, 0x0d4e,
+ 0x0d57, 0x0d57,
+ 0x0d60, 0x0d63,
+ 0x0d7a, 0x0d7f,
+ 0x0d82, 0x0d83,
+ 0x0d85, 0x0d96,
+ 0x0d9a, 0x0db1,
+ 0x0db3, 0x0dbb,
+ 0x0dbd, 0x0dbd,
+ 0x0dc0, 0x0dc6,
+ 0x0dcf, 0x0dd4,
+ 0x0dd6, 0x0dd6,
+ 0x0dd8, 0x0ddf,
+ 0x0df2, 0x0df3,
+ 0x0e01, 0x0e3a,
+ 0x0e40, 0x0e46,
+ 0x0e4d, 0x0e4d,
+ 0x0e81, 0x0e82,
+ 0x0e84, 0x0e84,
+ 0x0e87, 0x0e88,
+ 0x0e8a, 0x0e8a,
+ 0x0e8d, 0x0e8d,
+ 0x0e94, 0x0e97,
+ 0x0e99, 0x0e9f,
+ 0x0ea1, 0x0ea3,
+ 0x0ea5, 0x0ea5,
+ 0x0ea7, 0x0ea7,
+ 0x0eaa, 0x0eab,
+ 0x0ead, 0x0eb9,
+ 0x0ebb, 0x0ebd,
+ 0x0ec0, 0x0ec4,
+ 0x0ec6, 0x0ec6,
+ 0x0ecd, 0x0ecd,
+ 0x0edc, 0x0edd,
+ 0x0f00, 0x0f00,
+ 0x0f40, 0x0f47,
+ 0x0f49, 0x0f6c,
+ 0x0f71, 0x0f81,
+ 0x0f88, 0x0f97,
+ 0x0f99, 0x0fbc,
+ 0x1000, 0x1036,
+ 0x1038, 0x1038,
+ 0x103b, 0x103f,
+ 0x1050, 0x1062,
+ 0x1065, 0x1068,
+ 0x106e, 0x1086,
+ 0x108e, 0x108e,
+ 0x109c, 0x109d,
+ 0x10a0, 0x10c5,
+ 0x10d0, 0x10fa,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
+ 0x124a, 0x124d,
+ 0x1250, 0x1256,
+ 0x1258, 0x1258,
+ 0x125a, 0x125d,
+ 0x1260, 0x1288,
+ 0x128a, 0x128d,
+ 0x1290, 0x12b0,
+ 0x12b2, 0x12b5,
+ 0x12b8, 0x12be,
+ 0x12c0, 0x12c0,
+ 0x12c2, 0x12c5,
+ 0x12c8, 0x12d6,
+ 0x12d8, 0x1310,
+ 0x1312, 0x1315,
+ 0x1318, 0x135a,
+ 0x135f, 0x135f,
+ 0x1380, 0x138f,
+ 0x13a0, 0x13f4,
+ 0x1401, 0x166c,
+ 0x166f, 0x167f,
+ 0x1681, 0x169a,
+ 0x16a0, 0x16ea,
+ 0x16ee, 0x16f0,
+ 0x1700, 0x170c,
+ 0x170e, 0x1713,
+ 0x1720, 0x1733,
+ 0x1740, 0x1753,
+ 0x1760, 0x176c,
+ 0x176e, 0x1770,
+ 0x1772, 0x1773,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17c8,
+ 0x17d7, 0x17d7,
+ 0x17dc, 0x17dc,
+ 0x1820, 0x1877,
+ 0x1880, 0x18aa,
+ 0x18b0, 0x18f5,
+ 0x1900, 0x191c,
+ 0x1920, 0x192b,
+ 0x1930, 0x1938,
+ 0x1950, 0x196d,
+ 0x1970, 0x1974,
+ 0x1980, 0x19ab,
+ 0x19b0, 0x19c9,
+ 0x1a00, 0x1a1b,
+ 0x1a20, 0x1a5e,
+ 0x1a61, 0x1a74,
+ 0x1aa7, 0x1aa7,
+ 0x1b00, 0x1b33,
+ 0x1b35, 0x1b43,
+ 0x1b45, 0x1b4b,
+ 0x1b80, 0x1ba9,
+ 0x1bae, 0x1baf,
+ 0x1bc0, 0x1be5,
+ 0x1be7, 0x1bf1,
+ 0x1c00, 0x1c35,
+ 0x1c4d, 0x1c4f,
+ 0x1c5a, 0x1c7d,
+ 0x1ce9, 0x1cec,
+ 0x1cee, 0x1cf2,
+ 0x1d00, 0x1dbf,
+ 0x1e00, 0x1f15,
+ 0x1f18, 0x1f1d,
+ 0x1f20, 0x1f45,
+ 0x1f48, 0x1f4d,
+ 0x1f50, 0x1f57,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f7d,
+ 0x1f80, 0x1fb4,
+ 0x1fb6, 0x1fbc,
+ 0x1fbe, 0x1fbe,
+ 0x1fc2, 0x1fc4,
+ 0x1fc6, 0x1fcc,
+ 0x1fd0, 0x1fd3,
+ 0x1fd6, 0x1fdb,
+ 0x1fe0, 0x1fec,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ffc,
+ 0x2071, 0x2071,
+ 0x207f, 0x207f,
+ 0x2090, 0x209c,
+ 0x2102, 0x2102,
+ 0x2107, 0x2107,
+ 0x210a, 0x2113,
+ 0x2115, 0x2115,
+ 0x2119, 0x211d,
+ 0x2124, 0x2124,
+ 0x2126, 0x2126,
+ 0x2128, 0x2128,
+ 0x212a, 0x212d,
+ 0x212f, 0x2139,
+ 0x213c, 0x213f,
+ 0x2145, 0x2149,
+ 0x214e, 0x214e,
+ 0x2160, 0x2188,
+ 0x24b6, 0x24e9,
+ 0x2c00, 0x2c2e,
+ 0x2c30, 0x2c5e,
+ 0x2c60, 0x2ce4,
+ 0x2ceb, 0x2cee,
+ 0x2d00, 0x2d25,
+ 0x2d30, 0x2d65,
+ 0x2d6f, 0x2d6f,
+ 0x2d80, 0x2d96,
+ 0x2da0, 0x2da6,
+ 0x2da8, 0x2dae,
+ 0x2db0, 0x2db6,
+ 0x2db8, 0x2dbe,
+ 0x2dc0, 0x2dc6,
+ 0x2dc8, 0x2dce,
+ 0x2dd0, 0x2dd6,
+ 0x2dd8, 0x2dde,
+ 0x2de0, 0x2dff,
+ 0x2e2f, 0x2e2f,
+ 0x3005, 0x3007,
+ 0x3021, 0x3029,
+ 0x3031, 0x3035,
+ 0x3038, 0x303c,
+ 0x3041, 0x3096,
+ 0x309d, 0x309f,
+ 0x30a1, 0x30fa,
+ 0x30fc, 0x30ff,
+ 0x3105, 0x312d,
+ 0x3131, 0x318e,
+ 0x31a0, 0x31ba,
+ 0x31f0, 0x31ff,
+ 0x3400, 0x4db5,
+ 0x4e00, 0x9fcb,
+ 0xa000, 0xa48c,
+ 0xa4d0, 0xa4fd,
+ 0xa500, 0xa60c,
+ 0xa610, 0xa61f,
+ 0xa62a, 0xa62b,
+ 0xa640, 0xa66e,
+ 0xa67f, 0xa697,
+ 0xa6a0, 0xa6ef,
+ 0xa717, 0xa71f,
+ 0xa722, 0xa788,
+ 0xa78b, 0xa78e,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
+ 0xa803, 0xa805,
+ 0xa807, 0xa80a,
+ 0xa80c, 0xa827,
+ 0xa840, 0xa873,
+ 0xa880, 0xa8c3,
+ 0xa8f2, 0xa8f7,
+ 0xa8fb, 0xa8fb,
+ 0xa90a, 0xa92a,
+ 0xa930, 0xa952,
+ 0xa960, 0xa97c,
+ 0xa980, 0xa9b2,
+ 0xa9b4, 0xa9bf,
+ 0xa9cf, 0xa9cf,
+ 0xaa00, 0xaa36,
+ 0xaa40, 0xaa4d,
+ 0xaa60, 0xaa76,
+ 0xaa7a, 0xaa7a,
+ 0xaa80, 0xaabe,
+ 0xaac0, 0xaac0,
+ 0xaac2, 0xaac2,
+ 0xaadb, 0xaadd,
+ 0xab01, 0xab06,
+ 0xab09, 0xab0e,
+ 0xab11, 0xab16,
+ 0xab20, 0xab26,
+ 0xab28, 0xab2e,
+ 0xabc0, 0xabea,
+ 0xac00, 0xd7a3,
+ 0xd7b0, 0xd7c6,
+ 0xd7cb, 0xd7fb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
+ 0xfa70, 0xfad9,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xfb1d, 0xfb28,
+ 0xfb2a, 0xfb36,
+ 0xfb38, 0xfb3c,
+ 0xfb3e, 0xfb3e,
+ 0xfb40, 0xfb41,
+ 0xfb43, 0xfb44,
+ 0xfb46, 0xfbb1,
+ 0xfbd3, 0xfd3d,
+ 0xfd50, 0xfd8f,
+ 0xfd92, 0xfdc7,
+ 0xfdf0, 0xfdfb,
+ 0xfe70, 0xfe74,
+ 0xfe76, 0xfefc,
+ 0xff21, 0xff3a,
+ 0xff41, 0xff5a,
+ 0xff66, 0xffbe,
+ 0xffc2, 0xffc7,
+ 0xffca, 0xffcf,
+ 0xffd2, 0xffd7,
+ 0xffda, 0xffdc,
+ 0x10000, 0x1000b,
+ 0x1000d, 0x10026,
+ 0x10028, 0x1003a,
+ 0x1003c, 0x1003d,
+ 0x1003f, 0x1004d,
+ 0x10050, 0x1005d,
+ 0x10080, 0x100fa,
+ 0x10140, 0x10174,
+ 0x10280, 0x1029c,
+ 0x102a0, 0x102d0,
+ 0x10300, 0x1031e,
+ 0x10330, 0x1034a,
+ 0x10380, 0x1039d,
+ 0x103a0, 0x103c3,
+ 0x103c8, 0x103cf,
+ 0x103d1, 0x103d5,
+ 0x10400, 0x1049d,
+ 0x10800, 0x10805,
+ 0x10808, 0x10808,
+ 0x1080a, 0x10835,
+ 0x10837, 0x10838,
+ 0x1083c, 0x1083c,
+ 0x1083f, 0x10855,
+ 0x10900, 0x10915,
+ 0x10920, 0x10939,
+ 0x10a00, 0x10a03,
+ 0x10a05, 0x10a06,
+ 0x10a0c, 0x10a13,
+ 0x10a15, 0x10a17,
+ 0x10a19, 0x10a33,
+ 0x10a60, 0x10a7c,
+ 0x10b00, 0x10b35,
+ 0x10b40, 0x10b55,
+ 0x10b60, 0x10b72,
+ 0x10c00, 0x10c48,
+ 0x11000, 0x11045,
+ 0x11082, 0x110b8,
+ 0x12000, 0x1236e,
+ 0x12400, 0x12462,
+ 0x13000, 0x1342e,
+ 0x16800, 0x16a38,
+ 0x1b000, 0x1b001,
+ 0x1d400, 0x1d454,
+ 0x1d456, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d51e, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d552, 0x1d6a5,
+ 0x1d6a8, 0x1d6c0,
+ 0x1d6c2, 0x1d6da,
+ 0x1d6dc, 0x1d6fa,
+ 0x1d6fc, 0x1d714,
+ 0x1d716, 0x1d734,
+ 0x1d736, 0x1d74e,
+ 0x1d750, 0x1d76e,
+ 0x1d770, 0x1d788,
+ 0x1d78a, 0x1d7a8,
+ 0x1d7aa, 0x1d7c2,
+ 0x1d7c4, 0x1d7cb,
+ 0x20000, 0x2a6d6,
+ 0x2a700, 0x2b734,
+ 0x2b740, 0x2b81d,
+ 0x2f800, 0x2fa1d,
+}; /* CR_Alphabetic */
/* 'Lowercase': Derived Property */
-#define CR_Lowercase CR_Lower
+static const OnigCodePoint CR_Lowercase[] = {
+ 612,
+ 0x0061, 0x007a,
+ 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
+ 0x00df, 0x00f6,
+ 0x00f8, 0x00ff,
+ 0x0101, 0x0101,
+ 0x0103, 0x0103,
+ 0x0105, 0x0105,
+ 0x0107, 0x0107,
+ 0x0109, 0x0109,
+ 0x010b, 0x010b,
+ 0x010d, 0x010d,
+ 0x010f, 0x010f,
+ 0x0111, 0x0111,
+ 0x0113, 0x0113,
+ 0x0115, 0x0115,
+ 0x0117, 0x0117,
+ 0x0119, 0x0119,
+ 0x011b, 0x011b,
+ 0x011d, 0x011d,
+ 0x011f, 0x011f,
+ 0x0121, 0x0121,
+ 0x0123, 0x0123,
+ 0x0125, 0x0125,
+ 0x0127, 0x0127,
+ 0x0129, 0x0129,
+ 0x012b, 0x012b,
+ 0x012d, 0x012d,
+ 0x012f, 0x012f,
+ 0x0131, 0x0131,
+ 0x0133, 0x0133,
+ 0x0135, 0x0135,
+ 0x0137, 0x0138,
+ 0x013a, 0x013a,
+ 0x013c, 0x013c,
+ 0x013e, 0x013e,
+ 0x0140, 0x0140,
+ 0x0142, 0x0142,
+ 0x0144, 0x0144,
+ 0x0146, 0x0146,
+ 0x0148, 0x0149,
+ 0x014b, 0x014b,
+ 0x014d, 0x014d,
+ 0x014f, 0x014f,
+ 0x0151, 0x0151,
+ 0x0153, 0x0153,
+ 0x0155, 0x0155,
+ 0x0157, 0x0157,
+ 0x0159, 0x0159,
+ 0x015b, 0x015b,
+ 0x015d, 0x015d,
+ 0x015f, 0x015f,
+ 0x0161, 0x0161,
+ 0x0163, 0x0163,
+ 0x0165, 0x0165,
+ 0x0167, 0x0167,
+ 0x0169, 0x0169,
+ 0x016b, 0x016b,
+ 0x016d, 0x016d,
+ 0x016f, 0x016f,
+ 0x0171, 0x0171,
+ 0x0173, 0x0173,
+ 0x0175, 0x0175,
+ 0x0177, 0x0177,
+ 0x017a, 0x017a,
+ 0x017c, 0x017c,
+ 0x017e, 0x0180,
+ 0x0183, 0x0183,
+ 0x0185, 0x0185,
+ 0x0188, 0x0188,
+ 0x018c, 0x018d,
+ 0x0192, 0x0192,
+ 0x0195, 0x0195,
+ 0x0199, 0x019b,
+ 0x019e, 0x019e,
+ 0x01a1, 0x01a1,
+ 0x01a3, 0x01a3,
+ 0x01a5, 0x01a5,
+ 0x01a8, 0x01a8,
+ 0x01aa, 0x01ab,
+ 0x01ad, 0x01ad,
+ 0x01b0, 0x01b0,
+ 0x01b4, 0x01b4,
+ 0x01b6, 0x01b6,
+ 0x01b9, 0x01ba,
+ 0x01bd, 0x01bf,
+ 0x01c6, 0x01c6,
+ 0x01c9, 0x01c9,
+ 0x01cc, 0x01cc,
+ 0x01ce, 0x01ce,
+ 0x01d0, 0x01d0,
+ 0x01d2, 0x01d2,
+ 0x01d4, 0x01d4,
+ 0x01d6, 0x01d6,
+ 0x01d8, 0x01d8,
+ 0x01da, 0x01da,
+ 0x01dc, 0x01dd,
+ 0x01df, 0x01df,
+ 0x01e1, 0x01e1,
+ 0x01e3, 0x01e3,
+ 0x01e5, 0x01e5,
+ 0x01e7, 0x01e7,
+ 0x01e9, 0x01e9,
+ 0x01eb, 0x01eb,
+ 0x01ed, 0x01ed,
+ 0x01ef, 0x01f0,
+ 0x01f3, 0x01f3,
+ 0x01f5, 0x01f5,
+ 0x01f9, 0x01f9,
+ 0x01fb, 0x01fb,
+ 0x01fd, 0x01fd,
+ 0x01ff, 0x01ff,
+ 0x0201, 0x0201,
+ 0x0203, 0x0203,
+ 0x0205, 0x0205,
+ 0x0207, 0x0207,
+ 0x0209, 0x0209,
+ 0x020b, 0x020b,
+ 0x020d, 0x020d,
+ 0x020f, 0x020f,
+ 0x0211, 0x0211,
+ 0x0213, 0x0213,
+ 0x0215, 0x0215,
+ 0x0217, 0x0217,
+ 0x0219, 0x0219,
+ 0x021b, 0x021b,
+ 0x021d, 0x021d,
+ 0x021f, 0x021f,
+ 0x0221, 0x0221,
+ 0x0223, 0x0223,
+ 0x0225, 0x0225,
+ 0x0227, 0x0227,
+ 0x0229, 0x0229,
+ 0x022b, 0x022b,
+ 0x022d, 0x022d,
+ 0x022f, 0x022f,
+ 0x0231, 0x0231,
+ 0x0233, 0x0239,
+ 0x023c, 0x023c,
+ 0x023f, 0x0240,
+ 0x0242, 0x0242,
+ 0x0247, 0x0247,
+ 0x0249, 0x0249,
+ 0x024b, 0x024b,
+ 0x024d, 0x024d,
+ 0x024f, 0x0293,
+ 0x0295, 0x02b8,
+ 0x02c0, 0x02c1,
+ 0x02e0, 0x02e4,
+ 0x0345, 0x0345,
+ 0x0371, 0x0371,
+ 0x0373, 0x0373,
+ 0x0377, 0x0377,
+ 0x037a, 0x037d,
+ 0x0390, 0x0390,
+ 0x03ac, 0x03ce,
+ 0x03d0, 0x03d1,
+ 0x03d5, 0x03d7,
+ 0x03d9, 0x03d9,
+ 0x03db, 0x03db,
+ 0x03dd, 0x03dd,
+ 0x03df, 0x03df,
+ 0x03e1, 0x03e1,
+ 0x03e3, 0x03e3,
+ 0x03e5, 0x03e5,
+ 0x03e7, 0x03e7,
+ 0x03e9, 0x03e9,
+ 0x03eb, 0x03eb,
+ 0x03ed, 0x03ed,
+ 0x03ef, 0x03f3,
+ 0x03f5, 0x03f5,
+ 0x03f8, 0x03f8,
+ 0x03fb, 0x03fc,
+ 0x0430, 0x045f,
+ 0x0461, 0x0461,
+ 0x0463, 0x0463,
+ 0x0465, 0x0465,
+ 0x0467, 0x0467,
+ 0x0469, 0x0469,
+ 0x046b, 0x046b,
+ 0x046d, 0x046d,
+ 0x046f, 0x046f,
+ 0x0471, 0x0471,
+ 0x0473, 0x0473,
+ 0x0475, 0x0475,
+ 0x0477, 0x0477,
+ 0x0479, 0x0479,
+ 0x047b, 0x047b,
+ 0x047d, 0x047d,
+ 0x047f, 0x047f,
+ 0x0481, 0x0481,
+ 0x048b, 0x048b,
+ 0x048d, 0x048d,
+ 0x048f, 0x048f,
+ 0x0491, 0x0491,
+ 0x0493, 0x0493,
+ 0x0495, 0x0495,
+ 0x0497, 0x0497,
+ 0x0499, 0x0499,
+ 0x049b, 0x049b,
+ 0x049d, 0x049d,
+ 0x049f, 0x049f,
+ 0x04a1, 0x04a1,
+ 0x04a3, 0x04a3,
+ 0x04a5, 0x04a5,
+ 0x04a7, 0x04a7,
+ 0x04a9, 0x04a9,
+ 0x04ab, 0x04ab,
+ 0x04ad, 0x04ad,
+ 0x04af, 0x04af,
+ 0x04b1, 0x04b1,
+ 0x04b3, 0x04b3,
+ 0x04b5, 0x04b5,
+ 0x04b7, 0x04b7,
+ 0x04b9, 0x04b9,
+ 0x04bb, 0x04bb,
+ 0x04bd, 0x04bd,
+ 0x04bf, 0x04bf,
+ 0x04c2, 0x04c2,
+ 0x04c4, 0x04c4,
+ 0x04c6, 0x04c6,
+ 0x04c8, 0x04c8,
+ 0x04ca, 0x04ca,
+ 0x04cc, 0x04cc,
+ 0x04ce, 0x04cf,
+ 0x04d1, 0x04d1,
+ 0x04d3, 0x04d3,
+ 0x04d5, 0x04d5,
+ 0x04d7, 0x04d7,
+ 0x04d9, 0x04d9,
+ 0x04db, 0x04db,
+ 0x04dd, 0x04dd,
+ 0x04df, 0x04df,
+ 0x04e1, 0x04e1,
+ 0x04e3, 0x04e3,
+ 0x04e5, 0x04e5,
+ 0x04e7, 0x04e7,
+ 0x04e9, 0x04e9,
+ 0x04eb, 0x04eb,
+ 0x04ed, 0x04ed,
+ 0x04ef, 0x04ef,
+ 0x04f1, 0x04f1,
+ 0x04f3, 0x04f3,
+ 0x04f5, 0x04f5,
+ 0x04f7, 0x04f7,
+ 0x04f9, 0x04f9,
+ 0x04fb, 0x04fb,
+ 0x04fd, 0x04fd,
+ 0x04ff, 0x04ff,
+ 0x0501, 0x0501,
+ 0x0503, 0x0503,
+ 0x0505, 0x0505,
+ 0x0507, 0x0507,
+ 0x0509, 0x0509,
+ 0x050b, 0x050b,
+ 0x050d, 0x050d,
+ 0x050f, 0x050f,
+ 0x0511, 0x0511,
+ 0x0513, 0x0513,
+ 0x0515, 0x0515,
+ 0x0517, 0x0517,
+ 0x0519, 0x0519,
+ 0x051b, 0x051b,
+ 0x051d, 0x051d,
+ 0x051f, 0x051f,
+ 0x0521, 0x0521,
+ 0x0523, 0x0523,
+ 0x0525, 0x0525,
+ 0x0527, 0x0527,
+ 0x0561, 0x0587,
+ 0x1d00, 0x1dbf,
+ 0x1e01, 0x1e01,
+ 0x1e03, 0x1e03,
+ 0x1e05, 0x1e05,
+ 0x1e07, 0x1e07,
+ 0x1e09, 0x1e09,
+ 0x1e0b, 0x1e0b,
+ 0x1e0d, 0x1e0d,
+ 0x1e0f, 0x1e0f,
+ 0x1e11, 0x1e11,
+ 0x1e13, 0x1e13,
+ 0x1e15, 0x1e15,
+ 0x1e17, 0x1e17,
+ 0x1e19, 0x1e19,
+ 0x1e1b, 0x1e1b,
+ 0x1e1d, 0x1e1d,
+ 0x1e1f, 0x1e1f,
+ 0x1e21, 0x1e21,
+ 0x1e23, 0x1e23,
+ 0x1e25, 0x1e25,
+ 0x1e27, 0x1e27,
+ 0x1e29, 0x1e29,
+ 0x1e2b, 0x1e2b,
+ 0x1e2d, 0x1e2d,
+ 0x1e2f, 0x1e2f,
+ 0x1e31, 0x1e31,
+ 0x1e33, 0x1e33,
+ 0x1e35, 0x1e35,
+ 0x1e37, 0x1e37,
+ 0x1e39, 0x1e39,
+ 0x1e3b, 0x1e3b,
+ 0x1e3d, 0x1e3d,
+ 0x1e3f, 0x1e3f,
+ 0x1e41, 0x1e41,
+ 0x1e43, 0x1e43,
+ 0x1e45, 0x1e45,
+ 0x1e47, 0x1e47,
+ 0x1e49, 0x1e49,
+ 0x1e4b, 0x1e4b,
+ 0x1e4d, 0x1e4d,
+ 0x1e4f, 0x1e4f,
+ 0x1e51, 0x1e51,
+ 0x1e53, 0x1e53,
+ 0x1e55, 0x1e55,
+ 0x1e57, 0x1e57,
+ 0x1e59, 0x1e59,
+ 0x1e5b, 0x1e5b,
+ 0x1e5d, 0x1e5d,
+ 0x1e5f, 0x1e5f,
+ 0x1e61, 0x1e61,
+ 0x1e63, 0x1e63,
+ 0x1e65, 0x1e65,
+ 0x1e67, 0x1e67,
+ 0x1e69, 0x1e69,
+ 0x1e6b, 0x1e6b,
+ 0x1e6d, 0x1e6d,
+ 0x1e6f, 0x1e6f,
+ 0x1e71, 0x1e71,
+ 0x1e73, 0x1e73,
+ 0x1e75, 0x1e75,
+ 0x1e77, 0x1e77,
+ 0x1e79, 0x1e79,
+ 0x1e7b, 0x1e7b,
+ 0x1e7d, 0x1e7d,
+ 0x1e7f, 0x1e7f,
+ 0x1e81, 0x1e81,
+ 0x1e83, 0x1e83,
+ 0x1e85, 0x1e85,
+ 0x1e87, 0x1e87,
+ 0x1e89, 0x1e89,
+ 0x1e8b, 0x1e8b,
+ 0x1e8d, 0x1e8d,
+ 0x1e8f, 0x1e8f,
+ 0x1e91, 0x1e91,
+ 0x1e93, 0x1e93,
+ 0x1e95, 0x1e9d,
+ 0x1e9f, 0x1e9f,
+ 0x1ea1, 0x1ea1,
+ 0x1ea3, 0x1ea3,
+ 0x1ea5, 0x1ea5,
+ 0x1ea7, 0x1ea7,
+ 0x1ea9, 0x1ea9,
+ 0x1eab, 0x1eab,
+ 0x1ead, 0x1ead,
+ 0x1eaf, 0x1eaf,
+ 0x1eb1, 0x1eb1,
+ 0x1eb3, 0x1eb3,
+ 0x1eb5, 0x1eb5,
+ 0x1eb7, 0x1eb7,
+ 0x1eb9, 0x1eb9,
+ 0x1ebb, 0x1ebb,
+ 0x1ebd, 0x1ebd,
+ 0x1ebf, 0x1ebf,
+ 0x1ec1, 0x1ec1,
+ 0x1ec3, 0x1ec3,
+ 0x1ec5, 0x1ec5,
+ 0x1ec7, 0x1ec7,
+ 0x1ec9, 0x1ec9,
+ 0x1ecb, 0x1ecb,
+ 0x1ecd, 0x1ecd,
+ 0x1ecf, 0x1ecf,
+ 0x1ed1, 0x1ed1,
+ 0x1ed3, 0x1ed3,
+ 0x1ed5, 0x1ed5,
+ 0x1ed7, 0x1ed7,
+ 0x1ed9, 0x1ed9,
+ 0x1edb, 0x1edb,
+ 0x1edd, 0x1edd,
+ 0x1edf, 0x1edf,
+ 0x1ee1, 0x1ee1,
+ 0x1ee3, 0x1ee3,
+ 0x1ee5, 0x1ee5,
+ 0x1ee7, 0x1ee7,
+ 0x1ee9, 0x1ee9,
+ 0x1eeb, 0x1eeb,
+ 0x1eed, 0x1eed,
+ 0x1eef, 0x1eef,
+ 0x1ef1, 0x1ef1,
+ 0x1ef3, 0x1ef3,
+ 0x1ef5, 0x1ef5,
+ 0x1ef7, 0x1ef7,
+ 0x1ef9, 0x1ef9,
+ 0x1efb, 0x1efb,
+ 0x1efd, 0x1efd,
+ 0x1eff, 0x1f07,
+ 0x1f10, 0x1f15,
+ 0x1f20, 0x1f27,
+ 0x1f30, 0x1f37,
+ 0x1f40, 0x1f45,
+ 0x1f50, 0x1f57,
+ 0x1f60, 0x1f67,
+ 0x1f70, 0x1f7d,
+ 0x1f80, 0x1f87,
+ 0x1f90, 0x1f97,
+ 0x1fa0, 0x1fa7,
+ 0x1fb0, 0x1fb4,
+ 0x1fb6, 0x1fb7,
+ 0x1fbe, 0x1fbe,
+ 0x1fc2, 0x1fc4,
+ 0x1fc6, 0x1fc7,
+ 0x1fd0, 0x1fd3,
+ 0x1fd6, 0x1fd7,
+ 0x1fe0, 0x1fe7,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ff7,
+ 0x2090, 0x2094,
+ 0x210a, 0x210a,
+ 0x210e, 0x210f,
+ 0x2113, 0x2113,
+ 0x212f, 0x212f,
+ 0x2134, 0x2134,
+ 0x2139, 0x2139,
+ 0x213c, 0x213d,
+ 0x2146, 0x2149,
+ 0x214e, 0x214e,
+ 0x2170, 0x217f,
+ 0x2184, 0x2184,
+ 0x24d0, 0x24e9,
+ 0x2c30, 0x2c5e,
+ 0x2c61, 0x2c61,
+ 0x2c65, 0x2c66,
+ 0x2c68, 0x2c68,
+ 0x2c6a, 0x2c6a,
+ 0x2c6c, 0x2c6c,
+ 0x2c71, 0x2c71,
+ 0x2c73, 0x2c74,
+ 0x2c76, 0x2c7d,
+ 0x2c81, 0x2c81,
+ 0x2c83, 0x2c83,
+ 0x2c85, 0x2c85,
+ 0x2c87, 0x2c87,
+ 0x2c89, 0x2c89,
+ 0x2c8b, 0x2c8b,
+ 0x2c8d, 0x2c8d,
+ 0x2c8f, 0x2c8f,
+ 0x2c91, 0x2c91,
+ 0x2c93, 0x2c93,
+ 0x2c95, 0x2c95,
+ 0x2c97, 0x2c97,
+ 0x2c99, 0x2c99,
+ 0x2c9b, 0x2c9b,
+ 0x2c9d, 0x2c9d,
+ 0x2c9f, 0x2c9f,
+ 0x2ca1, 0x2ca1,
+ 0x2ca3, 0x2ca3,
+ 0x2ca5, 0x2ca5,
+ 0x2ca7, 0x2ca7,
+ 0x2ca9, 0x2ca9,
+ 0x2cab, 0x2cab,
+ 0x2cad, 0x2cad,
+ 0x2caf, 0x2caf,
+ 0x2cb1, 0x2cb1,
+ 0x2cb3, 0x2cb3,
+ 0x2cb5, 0x2cb5,
+ 0x2cb7, 0x2cb7,
+ 0x2cb9, 0x2cb9,
+ 0x2cbb, 0x2cbb,
+ 0x2cbd, 0x2cbd,
+ 0x2cbf, 0x2cbf,
+ 0x2cc1, 0x2cc1,
+ 0x2cc3, 0x2cc3,
+ 0x2cc5, 0x2cc5,
+ 0x2cc7, 0x2cc7,
+ 0x2cc9, 0x2cc9,
+ 0x2ccb, 0x2ccb,
+ 0x2ccd, 0x2ccd,
+ 0x2ccf, 0x2ccf,
+ 0x2cd1, 0x2cd1,
+ 0x2cd3, 0x2cd3,
+ 0x2cd5, 0x2cd5,
+ 0x2cd7, 0x2cd7,
+ 0x2cd9, 0x2cd9,
+ 0x2cdb, 0x2cdb,
+ 0x2cdd, 0x2cdd,
+ 0x2cdf, 0x2cdf,
+ 0x2ce1, 0x2ce1,
+ 0x2ce3, 0x2ce4,
+ 0x2cec, 0x2cec,
+ 0x2cee, 0x2cee,
+ 0x2d00, 0x2d25,
+ 0xa641, 0xa641,
+ 0xa643, 0xa643,
+ 0xa645, 0xa645,
+ 0xa647, 0xa647,
+ 0xa649, 0xa649,
+ 0xa64b, 0xa64b,
+ 0xa64d, 0xa64d,
+ 0xa64f, 0xa64f,
+ 0xa651, 0xa651,
+ 0xa653, 0xa653,
+ 0xa655, 0xa655,
+ 0xa657, 0xa657,
+ 0xa659, 0xa659,
+ 0xa65b, 0xa65b,
+ 0xa65d, 0xa65d,
+ 0xa65f, 0xa65f,
+ 0xa661, 0xa661,
+ 0xa663, 0xa663,
+ 0xa665, 0xa665,
+ 0xa667, 0xa667,
+ 0xa669, 0xa669,
+ 0xa66b, 0xa66b,
+ 0xa66d, 0xa66d,
+ 0xa681, 0xa681,
+ 0xa683, 0xa683,
+ 0xa685, 0xa685,
+ 0xa687, 0xa687,
+ 0xa689, 0xa689,
+ 0xa68b, 0xa68b,
+ 0xa68d, 0xa68d,
+ 0xa68f, 0xa68f,
+ 0xa691, 0xa691,
+ 0xa693, 0xa693,
+ 0xa695, 0xa695,
+ 0xa697, 0xa697,
+ 0xa723, 0xa723,
+ 0xa725, 0xa725,
+ 0xa727, 0xa727,
+ 0xa729, 0xa729,
+ 0xa72b, 0xa72b,
+ 0xa72d, 0xa72d,
+ 0xa72f, 0xa731,
+ 0xa733, 0xa733,
+ 0xa735, 0xa735,
+ 0xa737, 0xa737,
+ 0xa739, 0xa739,
+ 0xa73b, 0xa73b,
+ 0xa73d, 0xa73d,
+ 0xa73f, 0xa73f,
+ 0xa741, 0xa741,
+ 0xa743, 0xa743,
+ 0xa745, 0xa745,
+ 0xa747, 0xa747,
+ 0xa749, 0xa749,
+ 0xa74b, 0xa74b,
+ 0xa74d, 0xa74d,
+ 0xa74f, 0xa74f,
+ 0xa751, 0xa751,
+ 0xa753, 0xa753,
+ 0xa755, 0xa755,
+ 0xa757, 0xa757,
+ 0xa759, 0xa759,
+ 0xa75b, 0xa75b,
+ 0xa75d, 0xa75d,
+ 0xa75f, 0xa75f,
+ 0xa761, 0xa761,
+ 0xa763, 0xa763,
+ 0xa765, 0xa765,
+ 0xa767, 0xa767,
+ 0xa769, 0xa769,
+ 0xa76b, 0xa76b,
+ 0xa76d, 0xa76d,
+ 0xa76f, 0xa778,
+ 0xa77a, 0xa77a,
+ 0xa77c, 0xa77c,
+ 0xa77f, 0xa77f,
+ 0xa781, 0xa781,
+ 0xa783, 0xa783,
+ 0xa785, 0xa785,
+ 0xa787, 0xa787,
+ 0xa78c, 0xa78c,
+ 0xa78e, 0xa78e,
+ 0xa791, 0xa791,
+ 0xa7a1, 0xa7a1,
+ 0xa7a3, 0xa7a3,
+ 0xa7a5, 0xa7a5,
+ 0xa7a7, 0xa7a7,
+ 0xa7a9, 0xa7a9,
+ 0xa7fa, 0xa7fa,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xff41, 0xff5a,
+ 0x10428, 0x1044f,
+ 0x1d41a, 0x1d433,
+ 0x1d44e, 0x1d454,
+ 0x1d456, 0x1d467,
+ 0x1d482, 0x1d49b,
+ 0x1d4b6, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d4cf,
+ 0x1d4ea, 0x1d503,
+ 0x1d51e, 0x1d537,
+ 0x1d552, 0x1d56b,
+ 0x1d586, 0x1d59f,
+ 0x1d5ba, 0x1d5d3,
+ 0x1d5ee, 0x1d607,
+ 0x1d622, 0x1d63b,
+ 0x1d656, 0x1d66f,
+ 0x1d68a, 0x1d6a5,
+ 0x1d6c2, 0x1d6da,
+ 0x1d6dc, 0x1d6e1,
+ 0x1d6fc, 0x1d714,
+ 0x1d716, 0x1d71b,
+ 0x1d736, 0x1d74e,
+ 0x1d750, 0x1d755,
+ 0x1d770, 0x1d788,
+ 0x1d78a, 0x1d78f,
+ 0x1d7aa, 0x1d7c2,
+ 0x1d7c4, 0x1d7c9,
+ 0x1d7cb, 0x1d7cb,
+}; /* CR_Lowercase */
/* 'Uppercase': Derived Property */
-#define CR_Uppercase CR_Upper
+static const OnigCodePoint CR_Uppercase[] = {
+ 605,
+ 0x0041, 0x005a,
+ 0x00c0, 0x00d6,
+ 0x00d8, 0x00de,
+ 0x0100, 0x0100,
+ 0x0102, 0x0102,
+ 0x0104, 0x0104,
+ 0x0106, 0x0106,
+ 0x0108, 0x0108,
+ 0x010a, 0x010a,
+ 0x010c, 0x010c,
+ 0x010e, 0x010e,
+ 0x0110, 0x0110,
+ 0x0112, 0x0112,
+ 0x0114, 0x0114,
+ 0x0116, 0x0116,
+ 0x0118, 0x0118,
+ 0x011a, 0x011a,
+ 0x011c, 0x011c,
+ 0x011e, 0x011e,
+ 0x0120, 0x0120,
+ 0x0122, 0x0122,
+ 0x0124, 0x0124,
+ 0x0126, 0x0126,
+ 0x0128, 0x0128,
+ 0x012a, 0x012a,
+ 0x012c, 0x012c,
+ 0x012e, 0x012e,
+ 0x0130, 0x0130,
+ 0x0132, 0x0132,
+ 0x0134, 0x0134,
+ 0x0136, 0x0136,
+ 0x0139, 0x0139,
+ 0x013b, 0x013b,
+ 0x013d, 0x013d,
+ 0x013f, 0x013f,
+ 0x0141, 0x0141,
+ 0x0143, 0x0143,
+ 0x0145, 0x0145,
+ 0x0147, 0x0147,
+ 0x014a, 0x014a,
+ 0x014c, 0x014c,
+ 0x014e, 0x014e,
+ 0x0150, 0x0150,
+ 0x0152, 0x0152,
+ 0x0154, 0x0154,
+ 0x0156, 0x0156,
+ 0x0158, 0x0158,
+ 0x015a, 0x015a,
+ 0x015c, 0x015c,
+ 0x015e, 0x015e,
+ 0x0160, 0x0160,
+ 0x0162, 0x0162,
+ 0x0164, 0x0164,
+ 0x0166, 0x0166,
+ 0x0168, 0x0168,
+ 0x016a, 0x016a,
+ 0x016c, 0x016c,
+ 0x016e, 0x016e,
+ 0x0170, 0x0170,
+ 0x0172, 0x0172,
+ 0x0174, 0x0174,
+ 0x0176, 0x0176,
+ 0x0178, 0x0179,
+ 0x017b, 0x017b,
+ 0x017d, 0x017d,
+ 0x0181, 0x0182,
+ 0x0184, 0x0184,
+ 0x0186, 0x0187,
+ 0x0189, 0x018b,
+ 0x018e, 0x0191,
+ 0x0193, 0x0194,
+ 0x0196, 0x0198,
+ 0x019c, 0x019d,
+ 0x019f, 0x01a0,
+ 0x01a2, 0x01a2,
+ 0x01a4, 0x01a4,
+ 0x01a6, 0x01a7,
+ 0x01a9, 0x01a9,
+ 0x01ac, 0x01ac,
+ 0x01ae, 0x01af,
+ 0x01b1, 0x01b3,
+ 0x01b5, 0x01b5,
+ 0x01b7, 0x01b8,
+ 0x01bc, 0x01bc,
+ 0x01c4, 0x01c4,
+ 0x01c7, 0x01c7,
+ 0x01ca, 0x01ca,
+ 0x01cd, 0x01cd,
+ 0x01cf, 0x01cf,
+ 0x01d1, 0x01d1,
+ 0x01d3, 0x01d3,
+ 0x01d5, 0x01d5,
+ 0x01d7, 0x01d7,
+ 0x01d9, 0x01d9,
+ 0x01db, 0x01db,
+ 0x01de, 0x01de,
+ 0x01e0, 0x01e0,
+ 0x01e2, 0x01e2,
+ 0x01e4, 0x01e4,
+ 0x01e6, 0x01e6,
+ 0x01e8, 0x01e8,
+ 0x01ea, 0x01ea,
+ 0x01ec, 0x01ec,
+ 0x01ee, 0x01ee,
+ 0x01f1, 0x01f1,
+ 0x01f4, 0x01f4,
+ 0x01f6, 0x01f8,
+ 0x01fa, 0x01fa,
+ 0x01fc, 0x01fc,
+ 0x01fe, 0x01fe,
+ 0x0200, 0x0200,
+ 0x0202, 0x0202,
+ 0x0204, 0x0204,
+ 0x0206, 0x0206,
+ 0x0208, 0x0208,
+ 0x020a, 0x020a,
+ 0x020c, 0x020c,
+ 0x020e, 0x020e,
+ 0x0210, 0x0210,
+ 0x0212, 0x0212,
+ 0x0214, 0x0214,
+ 0x0216, 0x0216,
+ 0x0218, 0x0218,
+ 0x021a, 0x021a,
+ 0x021c, 0x021c,
+ 0x021e, 0x021e,
+ 0x0220, 0x0220,
+ 0x0222, 0x0222,
+ 0x0224, 0x0224,
+ 0x0226, 0x0226,
+ 0x0228, 0x0228,
+ 0x022a, 0x022a,
+ 0x022c, 0x022c,
+ 0x022e, 0x022e,
+ 0x0230, 0x0230,
+ 0x0232, 0x0232,
+ 0x023a, 0x023b,
+ 0x023d, 0x023e,
+ 0x0241, 0x0241,
+ 0x0243, 0x0246,
+ 0x0248, 0x0248,
+ 0x024a, 0x024a,
+ 0x024c, 0x024c,
+ 0x024e, 0x024e,
+ 0x0370, 0x0370,
+ 0x0372, 0x0372,
+ 0x0376, 0x0376,
+ 0x0386, 0x0386,
+ 0x0388, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x038f,
+ 0x0391, 0x03a1,
+ 0x03a3, 0x03ab,
+ 0x03cf, 0x03cf,
+ 0x03d2, 0x03d4,
+ 0x03d8, 0x03d8,
+ 0x03da, 0x03da,
+ 0x03dc, 0x03dc,
+ 0x03de, 0x03de,
+ 0x03e0, 0x03e0,
+ 0x03e2, 0x03e2,
+ 0x03e4, 0x03e4,
+ 0x03e6, 0x03e6,
+ 0x03e8, 0x03e8,
+ 0x03ea, 0x03ea,
+ 0x03ec, 0x03ec,
+ 0x03ee, 0x03ee,
+ 0x03f4, 0x03f4,
+ 0x03f7, 0x03f7,
+ 0x03f9, 0x03fa,
+ 0x03fd, 0x042f,
+ 0x0460, 0x0460,
+ 0x0462, 0x0462,
+ 0x0464, 0x0464,
+ 0x0466, 0x0466,
+ 0x0468, 0x0468,
+ 0x046a, 0x046a,
+ 0x046c, 0x046c,
+ 0x046e, 0x046e,
+ 0x0470, 0x0470,
+ 0x0472, 0x0472,
+ 0x0474, 0x0474,
+ 0x0476, 0x0476,
+ 0x0478, 0x0478,
+ 0x047a, 0x047a,
+ 0x047c, 0x047c,
+ 0x047e, 0x047e,
+ 0x0480, 0x0480,
+ 0x048a, 0x048a,
+ 0x048c, 0x048c,
+ 0x048e, 0x048e,
+ 0x0490, 0x0490,
+ 0x0492, 0x0492,
+ 0x0494, 0x0494,
+ 0x0496, 0x0496,
+ 0x0498, 0x0498,
+ 0x049a, 0x049a,
+ 0x049c, 0x049c,
+ 0x049e, 0x049e,
+ 0x04a0, 0x04a0,
+ 0x04a2, 0x04a2,
+ 0x04a4, 0x04a4,
+ 0x04a6, 0x04a6,
+ 0x04a8, 0x04a8,
+ 0x04aa, 0x04aa,
+ 0x04ac, 0x04ac,
+ 0x04ae, 0x04ae,
+ 0x04b0, 0x04b0,
+ 0x04b2, 0x04b2,
+ 0x04b4, 0x04b4,
+ 0x04b6, 0x04b6,
+ 0x04b8, 0x04b8,
+ 0x04ba, 0x04ba,
+ 0x04bc, 0x04bc,
+ 0x04be, 0x04be,
+ 0x04c0, 0x04c1,
+ 0x04c3, 0x04c3,
+ 0x04c5, 0x04c5,
+ 0x04c7, 0x04c7,
+ 0x04c9, 0x04c9,
+ 0x04cb, 0x04cb,
+ 0x04cd, 0x04cd,
+ 0x04d0, 0x04d0,
+ 0x04d2, 0x04d2,
+ 0x04d4, 0x04d4,
+ 0x04d6, 0x04d6,
+ 0x04d8, 0x04d8,
+ 0x04da, 0x04da,
+ 0x04dc, 0x04dc,
+ 0x04de, 0x04de,
+ 0x04e0, 0x04e0,
+ 0x04e2, 0x04e2,
+ 0x04e4, 0x04e4,
+ 0x04e6, 0x04e6,
+ 0x04e8, 0x04e8,
+ 0x04ea, 0x04ea,
+ 0x04ec, 0x04ec,
+ 0x04ee, 0x04ee,
+ 0x04f0, 0x04f0,
+ 0x04f2, 0x04f2,
+ 0x04f4, 0x04f4,
+ 0x04f6, 0x04f6,
+ 0x04f8, 0x04f8,
+ 0x04fa, 0x04fa,
+ 0x04fc, 0x04fc,
+ 0x04fe, 0x04fe,
+ 0x0500, 0x0500,
+ 0x0502, 0x0502,
+ 0x0504, 0x0504,
+ 0x0506, 0x0506,
+ 0x0508, 0x0508,
+ 0x050a, 0x050a,
+ 0x050c, 0x050c,
+ 0x050e, 0x050e,
+ 0x0510, 0x0510,
+ 0x0512, 0x0512,
+ 0x0514, 0x0514,
+ 0x0516, 0x0516,
+ 0x0518, 0x0518,
+ 0x051a, 0x051a,
+ 0x051c, 0x051c,
+ 0x051e, 0x051e,
+ 0x0520, 0x0520,
+ 0x0522, 0x0522,
+ 0x0524, 0x0524,
+ 0x0526, 0x0526,
+ 0x0531, 0x0556,
+ 0x10a0, 0x10c5,
+ 0x1e00, 0x1e00,
+ 0x1e02, 0x1e02,
+ 0x1e04, 0x1e04,
+ 0x1e06, 0x1e06,
+ 0x1e08, 0x1e08,
+ 0x1e0a, 0x1e0a,
+ 0x1e0c, 0x1e0c,
+ 0x1e0e, 0x1e0e,
+ 0x1e10, 0x1e10,
+ 0x1e12, 0x1e12,
+ 0x1e14, 0x1e14,
+ 0x1e16, 0x1e16,
+ 0x1e18, 0x1e18,
+ 0x1e1a, 0x1e1a,
+ 0x1e1c, 0x1e1c,
+ 0x1e1e, 0x1e1e,
+ 0x1e20, 0x1e20,
+ 0x1e22, 0x1e22,
+ 0x1e24, 0x1e24,
+ 0x1e26, 0x1e26,
+ 0x1e28, 0x1e28,
+ 0x1e2a, 0x1e2a,
+ 0x1e2c, 0x1e2c,
+ 0x1e2e, 0x1e2e,
+ 0x1e30, 0x1e30,
+ 0x1e32, 0x1e32,
+ 0x1e34, 0x1e34,
+ 0x1e36, 0x1e36,
+ 0x1e38, 0x1e38,
+ 0x1e3a, 0x1e3a,
+ 0x1e3c, 0x1e3c,
+ 0x1e3e, 0x1e3e,
+ 0x1e40, 0x1e40,
+ 0x1e42, 0x1e42,
+ 0x1e44, 0x1e44,
+ 0x1e46, 0x1e46,
+ 0x1e48, 0x1e48,
+ 0x1e4a, 0x1e4a,
+ 0x1e4c, 0x1e4c,
+ 0x1e4e, 0x1e4e,
+ 0x1e50, 0x1e50,
+ 0x1e52, 0x1e52,
+ 0x1e54, 0x1e54,
+ 0x1e56, 0x1e56,
+ 0x1e58, 0x1e58,
+ 0x1e5a, 0x1e5a,
+ 0x1e5c, 0x1e5c,
+ 0x1e5e, 0x1e5e,
+ 0x1e60, 0x1e60,
+ 0x1e62, 0x1e62,
+ 0x1e64, 0x1e64,
+ 0x1e66, 0x1e66,
+ 0x1e68, 0x1e68,
+ 0x1e6a, 0x1e6a,
+ 0x1e6c, 0x1e6c,
+ 0x1e6e, 0x1e6e,
+ 0x1e70, 0x1e70,
+ 0x1e72, 0x1e72,
+ 0x1e74, 0x1e74,
+ 0x1e76, 0x1e76,
+ 0x1e78, 0x1e78,
+ 0x1e7a, 0x1e7a,
+ 0x1e7c, 0x1e7c,
+ 0x1e7e, 0x1e7e,
+ 0x1e80, 0x1e80,
+ 0x1e82, 0x1e82,
+ 0x1e84, 0x1e84,
+ 0x1e86, 0x1e86,
+ 0x1e88, 0x1e88,
+ 0x1e8a, 0x1e8a,
+ 0x1e8c, 0x1e8c,
+ 0x1e8e, 0x1e8e,
+ 0x1e90, 0x1e90,
+ 0x1e92, 0x1e92,
+ 0x1e94, 0x1e94,
+ 0x1e9e, 0x1e9e,
+ 0x1ea0, 0x1ea0,
+ 0x1ea2, 0x1ea2,
+ 0x1ea4, 0x1ea4,
+ 0x1ea6, 0x1ea6,
+ 0x1ea8, 0x1ea8,
+ 0x1eaa, 0x1eaa,
+ 0x1eac, 0x1eac,
+ 0x1eae, 0x1eae,
+ 0x1eb0, 0x1eb0,
+ 0x1eb2, 0x1eb2,
+ 0x1eb4, 0x1eb4,
+ 0x1eb6, 0x1eb6,
+ 0x1eb8, 0x1eb8,
+ 0x1eba, 0x1eba,
+ 0x1ebc, 0x1ebc,
+ 0x1ebe, 0x1ebe,
+ 0x1ec0, 0x1ec0,
+ 0x1ec2, 0x1ec2,
+ 0x1ec4, 0x1ec4,
+ 0x1ec6, 0x1ec6,
+ 0x1ec8, 0x1ec8,
+ 0x1eca, 0x1eca,
+ 0x1ecc, 0x1ecc,
+ 0x1ece, 0x1ece,
+ 0x1ed0, 0x1ed0,
+ 0x1ed2, 0x1ed2,
+ 0x1ed4, 0x1ed4,
+ 0x1ed6, 0x1ed6,
+ 0x1ed8, 0x1ed8,
+ 0x1eda, 0x1eda,
+ 0x1edc, 0x1edc,
+ 0x1ede, 0x1ede,
+ 0x1ee0, 0x1ee0,
+ 0x1ee2, 0x1ee2,
+ 0x1ee4, 0x1ee4,
+ 0x1ee6, 0x1ee6,
+ 0x1ee8, 0x1ee8,
+ 0x1eea, 0x1eea,
+ 0x1eec, 0x1eec,
+ 0x1eee, 0x1eee,
+ 0x1ef0, 0x1ef0,
+ 0x1ef2, 0x1ef2,
+ 0x1ef4, 0x1ef4,
+ 0x1ef6, 0x1ef6,
+ 0x1ef8, 0x1ef8,
+ 0x1efa, 0x1efa,
+ 0x1efc, 0x1efc,
+ 0x1efe, 0x1efe,
+ 0x1f08, 0x1f0f,
+ 0x1f18, 0x1f1d,
+ 0x1f28, 0x1f2f,
+ 0x1f38, 0x1f3f,
+ 0x1f48, 0x1f4d,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f5f,
+ 0x1f68, 0x1f6f,
+ 0x1fb8, 0x1fbb,
+ 0x1fc8, 0x1fcb,
+ 0x1fd8, 0x1fdb,
+ 0x1fe8, 0x1fec,
+ 0x1ff8, 0x1ffb,
+ 0x2102, 0x2102,
+ 0x2107, 0x2107,
+ 0x210b, 0x210d,
+ 0x2110, 0x2112,
+ 0x2115, 0x2115,
+ 0x2119, 0x211d,
+ 0x2124, 0x2124,
+ 0x2126, 0x2126,
+ 0x2128, 0x2128,
+ 0x212a, 0x212d,
+ 0x2130, 0x2133,
+ 0x213e, 0x213f,
+ 0x2145, 0x2145,
+ 0x2160, 0x216f,
+ 0x2183, 0x2183,
+ 0x24b6, 0x24cf,
+ 0x2c00, 0x2c2e,
+ 0x2c60, 0x2c60,
+ 0x2c62, 0x2c64,
+ 0x2c67, 0x2c67,
+ 0x2c69, 0x2c69,
+ 0x2c6b, 0x2c6b,
+ 0x2c6d, 0x2c70,
+ 0x2c72, 0x2c72,
+ 0x2c75, 0x2c75,
+ 0x2c7e, 0x2c80,
+ 0x2c82, 0x2c82,
+ 0x2c84, 0x2c84,
+ 0x2c86, 0x2c86,
+ 0x2c88, 0x2c88,
+ 0x2c8a, 0x2c8a,
+ 0x2c8c, 0x2c8c,
+ 0x2c8e, 0x2c8e,
+ 0x2c90, 0x2c90,
+ 0x2c92, 0x2c92,
+ 0x2c94, 0x2c94,
+ 0x2c96, 0x2c96,
+ 0x2c98, 0x2c98,
+ 0x2c9a, 0x2c9a,
+ 0x2c9c, 0x2c9c,
+ 0x2c9e, 0x2c9e,
+ 0x2ca0, 0x2ca0,
+ 0x2ca2, 0x2ca2,
+ 0x2ca4, 0x2ca4,
+ 0x2ca6, 0x2ca6,
+ 0x2ca8, 0x2ca8,
+ 0x2caa, 0x2caa,
+ 0x2cac, 0x2cac,
+ 0x2cae, 0x2cae,
+ 0x2cb0, 0x2cb0,
+ 0x2cb2, 0x2cb2,
+ 0x2cb4, 0x2cb4,
+ 0x2cb6, 0x2cb6,
+ 0x2cb8, 0x2cb8,
+ 0x2cba, 0x2cba,
+ 0x2cbc, 0x2cbc,
+ 0x2cbe, 0x2cbe,
+ 0x2cc0, 0x2cc0,
+ 0x2cc2, 0x2cc2,
+ 0x2cc4, 0x2cc4,
+ 0x2cc6, 0x2cc6,
+ 0x2cc8, 0x2cc8,
+ 0x2cca, 0x2cca,
+ 0x2ccc, 0x2ccc,
+ 0x2cce, 0x2cce,
+ 0x2cd0, 0x2cd0,
+ 0x2cd2, 0x2cd2,
+ 0x2cd4, 0x2cd4,
+ 0x2cd6, 0x2cd6,
+ 0x2cd8, 0x2cd8,
+ 0x2cda, 0x2cda,
+ 0x2cdc, 0x2cdc,
+ 0x2cde, 0x2cde,
+ 0x2ce0, 0x2ce0,
+ 0x2ce2, 0x2ce2,
+ 0x2ceb, 0x2ceb,
+ 0x2ced, 0x2ced,
+ 0xa640, 0xa640,
+ 0xa642, 0xa642,
+ 0xa644, 0xa644,
+ 0xa646, 0xa646,
+ 0xa648, 0xa648,
+ 0xa64a, 0xa64a,
+ 0xa64c, 0xa64c,
+ 0xa64e, 0xa64e,
+ 0xa650, 0xa650,
+ 0xa652, 0xa652,
+ 0xa654, 0xa654,
+ 0xa656, 0xa656,
+ 0xa658, 0xa658,
+ 0xa65a, 0xa65a,
+ 0xa65c, 0xa65c,
+ 0xa65e, 0xa65e,
+ 0xa660, 0xa660,
+ 0xa662, 0xa662,
+ 0xa664, 0xa664,
+ 0xa666, 0xa666,
+ 0xa668, 0xa668,
+ 0xa66a, 0xa66a,
+ 0xa66c, 0xa66c,
+ 0xa680, 0xa680,
+ 0xa682, 0xa682,
+ 0xa684, 0xa684,
+ 0xa686, 0xa686,
+ 0xa688, 0xa688,
+ 0xa68a, 0xa68a,
+ 0xa68c, 0xa68c,
+ 0xa68e, 0xa68e,
+ 0xa690, 0xa690,
+ 0xa692, 0xa692,
+ 0xa694, 0xa694,
+ 0xa696, 0xa696,
+ 0xa722, 0xa722,
+ 0xa724, 0xa724,
+ 0xa726, 0xa726,
+ 0xa728, 0xa728,
+ 0xa72a, 0xa72a,
+ 0xa72c, 0xa72c,
+ 0xa72e, 0xa72e,
+ 0xa732, 0xa732,
+ 0xa734, 0xa734,
+ 0xa736, 0xa736,
+ 0xa738, 0xa738,
+ 0xa73a, 0xa73a,
+ 0xa73c, 0xa73c,
+ 0xa73e, 0xa73e,
+ 0xa740, 0xa740,
+ 0xa742, 0xa742,
+ 0xa744, 0xa744,
+ 0xa746, 0xa746,
+ 0xa748, 0xa748,
+ 0xa74a, 0xa74a,
+ 0xa74c, 0xa74c,
+ 0xa74e, 0xa74e,
+ 0xa750, 0xa750,
+ 0xa752, 0xa752,
+ 0xa754, 0xa754,
+ 0xa756, 0xa756,
+ 0xa758, 0xa758,
+ 0xa75a, 0xa75a,
+ 0xa75c, 0xa75c,
+ 0xa75e, 0xa75e,
+ 0xa760, 0xa760,
+ 0xa762, 0xa762,
+ 0xa764, 0xa764,
+ 0xa766, 0xa766,
+ 0xa768, 0xa768,
+ 0xa76a, 0xa76a,
+ 0xa76c, 0xa76c,
+ 0xa76e, 0xa76e,
+ 0xa779, 0xa779,
+ 0xa77b, 0xa77b,
+ 0xa77d, 0xa77e,
+ 0xa780, 0xa780,
+ 0xa782, 0xa782,
+ 0xa784, 0xa784,
+ 0xa786, 0xa786,
+ 0xa78b, 0xa78b,
+ 0xa78d, 0xa78d,
+ 0xa790, 0xa790,
+ 0xa7a0, 0xa7a0,
+ 0xa7a2, 0xa7a2,
+ 0xa7a4, 0xa7a4,
+ 0xa7a6, 0xa7a6,
+ 0xa7a8, 0xa7a8,
+ 0xff21, 0xff3a,
+ 0x10400, 0x10427,
+ 0x1d400, 0x1d419,
+ 0x1d434, 0x1d44d,
+ 0x1d468, 0x1d481,
+ 0x1d49c, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b5,
+ 0x1d4d0, 0x1d4e9,
+ 0x1d504, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d538, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d56c, 0x1d585,
+ 0x1d5a0, 0x1d5b9,
+ 0x1d5d4, 0x1d5ed,
+ 0x1d608, 0x1d621,
+ 0x1d63c, 0x1d655,
+ 0x1d670, 0x1d689,
+ 0x1d6a8, 0x1d6c0,
+ 0x1d6e2, 0x1d6fa,
+ 0x1d71c, 0x1d734,
+ 0x1d756, 0x1d76e,
+ 0x1d790, 0x1d7a8,
+ 0x1d7ca, 0x1d7ca,
+}; /* CR_Uppercase */
/* 'Cased': Derived Property */
static const OnigCodePoint CR_Cased[] = {
- 119,
+ 112,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -10029,8 +6761,6 @@ static const OnigCodePoint CR_Cased[] = {
0x0531, 0x0556,
0x0561, 0x0587,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -10051,9 +6781,7 @@ static const OnigCodePoint CR_Cased[] = {
0x1fe0, 0x1fec,
0x1ff2, 0x1ff4,
0x1ff6, 0x1ffc,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
+ 0x2090, 0x2094,
0x2102, 0x2102,
0x2107, 0x2107,
0x210a, 0x2113,
@@ -10075,17 +6803,14 @@ static const OnigCodePoint CR_Cased[] = {
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa640, 0xa66d,
0xa680, 0xa697,
0xa722, 0xa787,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa7fa,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa7fa,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
0xff21, 0xff3a,
@@ -10125,7 +6850,7 @@ static const OnigCodePoint CR_Cased[] = {
/* 'Case_Ignorable': Derived Property */
static const OnigCodePoint CR_Case_Ignorable[] = {
- 295,
+ 277,
0x0027, 0x0027,
0x002e, 0x002e,
0x003a, 0x003a,
@@ -10149,7 +6874,7 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x05c4, 0x05c5,
0x05c7, 0x05c7,
0x05f4, 0x05f4,
- 0x0600, 0x0604,
+ 0x0600, 0x0603,
0x0610, 0x061a,
0x0640, 0x0640,
0x064b, 0x065f,
@@ -10165,7 +6890,6 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x07fa, 0x07fa,
0x0816, 0x082d,
0x0859, 0x085b,
- 0x08e4, 0x08fe,
0x0900, 0x0902,
0x093a, 0x093a,
0x093c, 0x093c,
@@ -10285,7 +7009,6 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x1b80, 0x1b81,
0x1ba2, 0x1ba5,
0x1ba8, 0x1ba9,
- 0x1bab, 0x1bab,
0x1be6, 0x1be6,
0x1be8, 0x1be9,
0x1bed, 0x1bed,
@@ -10297,8 +7020,7 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x1cd4, 0x1ce0,
0x1ce2, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
- 0x1d2c, 0x1d6a,
+ 0x1d2c, 0x1d61,
0x1d78, 0x1d78,
0x1d9b, 0x1de6,
0x1dfc, 0x1dff,
@@ -10319,14 +7041,14 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x207f, 0x207f,
0x2090, 0x209c,
0x20d0, 0x20f0,
- 0x2c7c, 0x2c7d,
+ 0x2c7d, 0x2c7d,
0x2cef, 0x2cf1,
0x2d6f, 0x2d6f,
0x2d7f, 0x2d7f,
0x2de0, 0x2dff,
0x2e2f, 0x2e2f,
0x3005, 0x3005,
- 0x302a, 0x302d,
+ 0x302a, 0x302f,
0x3031, 0x3035,
0x303b, 0x303b,
0x3099, 0x309e,
@@ -10335,14 +7057,12 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0xa4f8, 0xa4fd,
0xa60c, 0xa60c,
0xa66f, 0xa672,
- 0xa674, 0xa67d,
+ 0xa67c, 0xa67d,
0xa67f, 0xa67f,
- 0xa69f, 0xa69f,
0xa6f0, 0xa6f1,
0xa700, 0xa721,
0xa770, 0xa770,
0xa788, 0xa78a,
- 0xa7f8, 0xa7f9,
0xa802, 0xa802,
0xa806, 0xa806,
0xa80b, 0xa80b,
@@ -10368,9 +7088,6 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0xaabe, 0xaabf,
0xaac1, 0xaac1,
0xaadd, 0xaadd,
- 0xaaec, 0xaaed,
- 0xaaf3, 0xaaf4,
- 0xaaf6, 0xaaf6,
0xabe5, 0xabe5,
0xabe8, 0xabe8,
0xabed, 0xabed,
@@ -10403,16 +7120,6 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x110b3, 0x110b6,
0x110b9, 0x110ba,
0x110bd, 0x110bd,
- 0x11100, 0x11102,
- 0x11127, 0x1112b,
- 0x1112d, 0x11134,
- 0x11180, 0x11181,
- 0x111b6, 0x111be,
- 0x116ab, 0x116ab,
- 0x116ad, 0x116ad,
- 0x116b0, 0x116b5,
- 0x116b7, 0x116b7,
- 0x16f8f, 0x16f9f,
0x1d167, 0x1d169,
0x1d173, 0x1d182,
0x1d185, 0x1d18b,
@@ -10425,7 +7132,7 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
/* 'Changes_When_Lowercased': Derived Property */
static const OnigCodePoint CR_Changes_When_Lowercased[] = {
- 571,
+ 566,
0x0041, 0x005a,
0x00c0, 0x00d6,
0x00d8, 0x00de,
@@ -10693,8 +7400,6 @@ static const OnigCodePoint CR_Changes_When_Lowercased[] = {
0x0526, 0x0526,
0x0531, 0x0556,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1e00, 0x1e00,
0x1e02, 0x1e02,
0x1e04, 0x1e04,
@@ -10904,7 +7609,6 @@ static const OnigCodePoint CR_Changes_When_Lowercased[] = {
0x2ce2, 0x2ce2,
0x2ceb, 0x2ceb,
0x2ced, 0x2ced,
- 0x2cf2, 0x2cf2,
0xa640, 0xa640,
0xa642, 0xa642,
0xa644, 0xa644,
@@ -10988,20 +7692,18 @@ static const OnigCodePoint CR_Changes_When_Lowercased[] = {
0xa78b, 0xa78b,
0xa78d, 0xa78d,
0xa790, 0xa790,
- 0xa792, 0xa792,
0xa7a0, 0xa7a0,
0xa7a2, 0xa7a2,
0xa7a4, 0xa7a4,
0xa7a6, 0xa7a6,
0xa7a8, 0xa7a8,
- 0xa7aa, 0xa7aa,
0xff21, 0xff3a,
0x10400, 0x10427,
}; /* CR_Changes_When_Lowercased */
/* 'Changes_When_Uppercased': Derived Property */
static const OnigCodePoint CR_Changes_When_Uppercased[] = {
- 586,
+ 582,
0x0061, 0x007a,
0x00b5, 0x00b5,
0x00df, 0x00f6,
@@ -11151,7 +7853,7 @@ static const OnigCodePoint CR_Changes_When_Uppercased[] = {
0x025b, 0x025b,
0x0260, 0x0260,
0x0263, 0x0263,
- 0x0265, 0x0266,
+ 0x0265, 0x0265,
0x0268, 0x0269,
0x026b, 0x026b,
0x026f, 0x026f,
@@ -11492,10 +8194,7 @@ static const OnigCodePoint CR_Changes_When_Uppercased[] = {
0x2ce3, 0x2ce3,
0x2cec, 0x2cec,
0x2cee, 0x2cee,
- 0x2cf3, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa641, 0xa641,
0xa643, 0xa643,
0xa645, 0xa645,
@@ -11578,7 +8277,6 @@ static const OnigCodePoint CR_Changes_When_Uppercased[] = {
0xa787, 0xa787,
0xa78c, 0xa78c,
0xa791, 0xa791,
- 0xa793, 0xa793,
0xa7a1, 0xa7a1,
0xa7a3, 0xa7a3,
0xa7a5, 0xa7a5,
@@ -11592,7 +8290,7 @@ static const OnigCodePoint CR_Changes_When_Uppercased[] = {
/* 'Changes_When_Titlecased': Derived Property */
static const OnigCodePoint CR_Changes_When_Titlecased[] = {
- 587,
+ 583,
0x0061, 0x007a,
0x00b5, 0x00b5,
0x00df, 0x00f6,
@@ -11743,7 +8441,7 @@ static const OnigCodePoint CR_Changes_When_Titlecased[] = {
0x025b, 0x025b,
0x0260, 0x0260,
0x0263, 0x0263,
- 0x0265, 0x0266,
+ 0x0265, 0x0265,
0x0268, 0x0269,
0x026b, 0x026b,
0x026f, 0x026f,
@@ -12084,10 +8782,7 @@ static const OnigCodePoint CR_Changes_When_Titlecased[] = {
0x2ce3, 0x2ce3,
0x2cec, 0x2cec,
0x2cee, 0x2cee,
- 0x2cf3, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa641, 0xa641,
0xa643, 0xa643,
0xa645, 0xa645,
@@ -12170,7 +8865,6 @@ static const OnigCodePoint CR_Changes_When_Titlecased[] = {
0xa787, 0xa787,
0xa78c, 0xa78c,
0xa791, 0xa791,
- 0xa793, 0xa793,
0xa7a1, 0xa7a1,
0xa7a3, 0xa7a3,
0xa7a5, 0xa7a5,
@@ -12184,7 +8878,7 @@ static const OnigCodePoint CR_Changes_When_Titlecased[] = {
/* 'Changes_When_Casefolded': Derived Property */
static const OnigCodePoint CR_Changes_When_Casefolded[] = {
- 582,
+ 577,
0x0041, 0x005a,
0x00b5, 0x00b5,
0x00c0, 0x00d6,
@@ -12459,8 +9153,6 @@ static const OnigCodePoint CR_Changes_When_Casefolded[] = {
0x0531, 0x0556,
0x0587, 0x0587,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1e00, 0x1e00,
0x1e02, 0x1e02,
0x1e04, 0x1e04,
@@ -12672,7 +9364,6 @@ static const OnigCodePoint CR_Changes_When_Casefolded[] = {
0x2ce2, 0x2ce2,
0x2ceb, 0x2ceb,
0x2ced, 0x2ced,
- 0x2cf2, 0x2cf2,
0xa640, 0xa640,
0xa642, 0xa642,
0xa644, 0xa644,
@@ -12756,13 +9447,11 @@ static const OnigCodePoint CR_Changes_When_Casefolded[] = {
0xa78b, 0xa78b,
0xa78d, 0xa78d,
0xa790, 0xa790,
- 0xa792, 0xa792,
0xa7a0, 0xa7a0,
0xa7a2, 0xa7a2,
0xa7a4, 0xa7a4,
0xa7a6, 0xa7a6,
0xa7a8, 0xa7a8,
- 0xa7aa, 0xa7aa,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
0xff21, 0xff3a,
@@ -12771,7 +9460,7 @@ static const OnigCodePoint CR_Changes_When_Casefolded[] = {
/* 'Changes_When_Casemapped': Derived Property */
static const OnigCodePoint CR_Changes_When_Casemapped[] = {
- 104,
+ 99,
0x0041, 0x005a,
0x0061, 0x007a,
0x00b5, 0x00b5,
@@ -12792,7 +9481,7 @@ static const OnigCodePoint CR_Changes_When_Casemapped[] = {
0x025b, 0x025b,
0x0260, 0x0260,
0x0263, 0x0263,
- 0x0265, 0x0266,
+ 0x0265, 0x0265,
0x0268, 0x0269,
0x026b, 0x026b,
0x026f, 0x026f,
@@ -12820,8 +9509,6 @@ static const OnigCodePoint CR_Changes_When_Casemapped[] = {
0x0531, 0x0556,
0x0561, 0x0587,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1d79, 0x1d79,
0x1d7d, 0x1d7d,
0x1e00, 0x1e9b,
@@ -12859,18 +9546,15 @@ static const OnigCodePoint CR_Changes_When_Casemapped[] = {
0x2c75, 0x2c76,
0x2c7e, 0x2ce3,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa640, 0xa66d,
0xa680, 0xa697,
0xa722, 0xa72f,
0xa732, 0xa76f,
0xa779, 0xa787,
0xa78b, 0xa78d,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
0xff21, 0xff3a,
@@ -12880,7 +9564,7 @@ static const OnigCodePoint CR_Changes_When_Casemapped[] = {
/* 'ID_Start': Derived Property */
static const OnigCodePoint CR_ID_Start[] = {
- 488,
+ 437,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -12928,8 +9612,6 @@ static const OnigCodePoint CR_ID_Start[] = {
0x0824, 0x0824,
0x0828, 0x0828,
0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -13035,7 +9717,7 @@ static const OnigCodePoint CR_ID_Start[] = {
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f40, 0x0f47,
0x0f49, 0x0f6c,
@@ -13050,10 +9732,9 @@ static const OnigCodePoint CR_ID_Start[] = {
0x1075, 0x1081,
0x108e, 0x108e,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -13101,13 +9782,12 @@ static const OnigCodePoint CR_ID_Start[] = {
0x1b45, 0x1b4b,
0x1b83, 0x1ba0,
0x1bae, 0x1baf,
- 0x1bba, 0x1be5,
+ 0x1bc0, 0x1be5,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
- 0x1cf5, 0x1cf6,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -13148,11 +9828,8 @@ static const OnigCodePoint CR_ID_Start[] = {
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
@@ -13176,7 +9853,7 @@ static const OnigCodePoint CR_ID_Start[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -13188,9 +9865,9 @@ static const OnigCodePoint CR_ID_Start[] = {
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa822,
@@ -13215,8 +9892,6 @@ static const OnigCodePoint CR_ID_Start[] = {
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaea,
- 0xaaf2, 0xaaf4,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -13226,7 +9901,8 @@ static const OnigCodePoint CR_ID_Start[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -13276,8 +9952,6 @@ static const OnigCodePoint CR_ID_Start[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -13289,18 +9963,10 @@ static const OnigCodePoint CR_ID_Start[] = {
0x10c00, 0x10c48,
0x11003, 0x11037,
0x11083, 0x110af,
- 0x110d0, 0x110e8,
- 0x11103, 0x11126,
- 0x11183, 0x111b2,
- 0x111c1, 0x111c4,
- 0x11680, 0x116aa,
0x12000, 0x1236e,
0x12400, 0x12462,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f50,
- 0x16f93, 0x16f9f,
0x1b000, 0x1b001,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
@@ -13332,39 +9998,6 @@ static const OnigCodePoint CR_ID_Start[] = {
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -13373,7 +10006,7 @@ static const OnigCodePoint CR_ID_Start[] = {
/* 'ID_Continue': Derived Property */
static const OnigCodePoint CR_ID_Continue[] = {
- 564,
+ 514,
0x0030, 0x0039,
0x0041, 0x005a,
0x005f, 0x005f,
@@ -13422,9 +10055,6 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x07fa, 0x07fa,
0x0800, 0x082d,
0x0840, 0x085b,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0x0900, 0x0963,
0x0966, 0x096f,
0x0971, 0x0977,
@@ -13572,7 +10202,7 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f18, 0x0f19,
0x0f20, 0x0f29,
@@ -13588,10 +10218,9 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1000, 0x1049,
0x1050, 0x109d,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -13623,7 +10252,8 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1760, 0x176c,
0x176e, 0x1770,
0x1772, 0x1773,
- 0x1780, 0x17d3,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17d3,
0x17d7, 0x17d7,
0x17dc, 0x17dd,
0x17e0, 0x17e9,
@@ -13649,12 +10279,14 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1b00, 0x1b4b,
0x1b50, 0x1b59,
0x1b6b, 0x1b73,
- 0x1b80, 0x1bf3,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
0x1c00, 0x1c37,
0x1c40, 0x1c49,
0x1c4d, 0x1c7d,
0x1cd0, 0x1cd2,
- 0x1cd4, 0x1cf6,
+ 0x1cd4, 0x1cf2,
0x1d00, 0x1de6,
0x1dfc, 0x1f15,
0x1f18, 0x1f1d,
@@ -13699,11 +10331,9 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
- 0x2ceb, 0x2cf3,
+ 0x2ceb, 0x2cf1,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d7f, 0x2d96,
0x2da0, 0x2da6,
@@ -13728,21 +10358,21 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
0xa610, 0xa62b,
0xa640, 0xa66f,
- 0xa674, 0xa67d,
+ 0xa67c, 0xa67d,
0xa67f, 0xa697,
- 0xa69f, 0xa6f1,
+ 0xa6a0, 0xa6f1,
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa827,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c4,
0xa8d0, 0xa8d9,
@@ -13760,8 +10390,6 @@ static const OnigCodePoint CR_ID_Continue[] = {
0xaa7a, 0xaa7b,
0xaa80, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf6,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -13773,7 +10401,8 @@ static const OnigCodePoint CR_ID_Continue[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -13830,8 +10459,6 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a03,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
@@ -13847,21 +10474,10 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x11000, 0x11046,
0x11066, 0x1106f,
0x11080, 0x110ba,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x1113f,
- 0x11180, 0x111c4,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
0x1b000, 0x1b001,
0x1d165, 0x1d169,
0x1d16d, 0x1d172,
@@ -13900,39 +10516,6 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -13942,7 +10525,7 @@ static const OnigCodePoint CR_ID_Continue[] = {
/* 'XID_Start': Derived Property */
static const OnigCodePoint CR_XID_Start[] = {
- 495,
+ 444,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -13990,8 +10573,6 @@ static const OnigCodePoint CR_XID_Start[] = {
0x0824, 0x0824,
0x0828, 0x0828,
0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -14097,7 +10678,7 @@ static const OnigCodePoint CR_XID_Start[] = {
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f40, 0x0f47,
0x0f49, 0x0f6c,
@@ -14112,10 +10693,9 @@ static const OnigCodePoint CR_XID_Start[] = {
0x1075, 0x1081,
0x108e, 0x108e,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -14163,13 +10743,12 @@ static const OnigCodePoint CR_XID_Start[] = {
0x1b45, 0x1b4b,
0x1b83, 0x1ba0,
0x1bae, 0x1baf,
- 0x1bba, 0x1be5,
+ 0x1bc0, 0x1be5,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
- 0x1cf5, 0x1cf6,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -14210,11 +10789,8 @@ static const OnigCodePoint CR_XID_Start[] = {
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
@@ -14238,7 +10814,7 @@ static const OnigCodePoint CR_XID_Start[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -14250,9 +10826,9 @@ static const OnigCodePoint CR_XID_Start[] = {
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa822,
@@ -14277,8 +10853,6 @@ static const OnigCodePoint CR_XID_Start[] = {
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaea,
- 0xaaf2, 0xaaf4,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -14288,7 +10862,8 @@ static const OnigCodePoint CR_XID_Start[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -14345,8 +10920,6 @@ static const OnigCodePoint CR_XID_Start[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -14358,18 +10931,10 @@ static const OnigCodePoint CR_XID_Start[] = {
0x10c00, 0x10c48,
0x11003, 0x11037,
0x11083, 0x110af,
- 0x110d0, 0x110e8,
- 0x11103, 0x11126,
- 0x11183, 0x111b2,
- 0x111c1, 0x111c4,
- 0x11680, 0x116aa,
0x12000, 0x1236e,
0x12400, 0x12462,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f50,
- 0x16f93, 0x16f9f,
0x1b000, 0x1b001,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
@@ -14401,39 +10966,6 @@ static const OnigCodePoint CR_XID_Start[] = {
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -14442,7 +10974,7 @@ static const OnigCodePoint CR_XID_Start[] = {
/* 'XID_Continue': Derived Property */
static const OnigCodePoint CR_XID_Continue[] = {
- 571,
+ 521,
0x0030, 0x0039,
0x0041, 0x005a,
0x005f, 0x005f,
@@ -14491,9 +11023,6 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x07fa, 0x07fa,
0x0800, 0x082d,
0x0840, 0x085b,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0x0900, 0x0963,
0x0966, 0x096f,
0x0971, 0x0977,
@@ -14641,7 +11170,7 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f18, 0x0f19,
0x0f20, 0x0f29,
@@ -14657,10 +11186,9 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1000, 0x1049,
0x1050, 0x109d,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -14692,7 +11220,8 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1760, 0x176c,
0x176e, 0x1770,
0x1772, 0x1773,
- 0x1780, 0x17d3,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17d3,
0x17d7, 0x17d7,
0x17dc, 0x17dd,
0x17e0, 0x17e9,
@@ -14718,12 +11247,14 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1b00, 0x1b4b,
0x1b50, 0x1b59,
0x1b6b, 0x1b73,
- 0x1b80, 0x1bf3,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
0x1c00, 0x1c37,
0x1c40, 0x1c49,
0x1c4d, 0x1c7d,
0x1cd0, 0x1cd2,
- 0x1cd4, 0x1cf6,
+ 0x1cd4, 0x1cf2,
0x1d00, 0x1de6,
0x1dfc, 0x1f15,
0x1f18, 0x1f1d,
@@ -14768,11 +11299,9 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
- 0x2ceb, 0x2cf3,
+ 0x2ceb, 0x2cf1,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d7f, 0x2d96,
0x2da0, 0x2da6,
@@ -14798,21 +11327,21 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
0xa610, 0xa62b,
0xa640, 0xa66f,
- 0xa674, 0xa67d,
+ 0xa67c, 0xa67d,
0xa67f, 0xa697,
- 0xa69f, 0xa6f1,
+ 0xa6a0, 0xa6f1,
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa827,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c4,
0xa8d0, 0xa8d9,
@@ -14830,8 +11359,6 @@ static const OnigCodePoint CR_XID_Continue[] = {
0xaa7a, 0xaa7b,
0xaa80, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf6,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -14843,7 +11370,8 @@ static const OnigCodePoint CR_XID_Continue[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -14906,8 +11434,6 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a03,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
@@ -14923,21 +11449,10 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x11000, 0x11046,
0x11066, 0x1106f,
0x11080, 0x110ba,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x1113f,
- 0x11180, 0x111c4,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
0x1b000, 0x1b001,
0x1d165, 0x1d169,
0x1d16d, 0x1d172,
@@ -14976,39 +11491,6 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -15038,7 +11520,7 @@ static const OnigCodePoint CR_Default_Ignorable_Code_Point[] = {
/* 'Grapheme_Extend': Derived Property */
static const OnigCodePoint CR_Grapheme_Extend[] = {
- 232,
+ 215,
0x0300, 0x036f,
0x0483, 0x0489,
0x0591, 0x05bd,
@@ -15062,7 +11544,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x0825, 0x0827,
0x0829, 0x082d,
0x0859, 0x085b,
- 0x08e4, 0x08fe,
0x0900, 0x0902,
0x093a, 0x093a,
0x093c, 0x093c,
@@ -15158,7 +11639,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x1732, 0x1734,
0x1752, 0x1753,
0x1772, 0x1773,
- 0x17b4, 0x17b5,
0x17b7, 0x17bd,
0x17c6, 0x17c6,
0x17c9, 0x17d3,
@@ -15186,7 +11666,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x1b80, 0x1b81,
0x1ba2, 0x1ba5,
0x1ba8, 0x1ba9,
- 0x1bab, 0x1bab,
0x1be6, 0x1be6,
0x1be8, 0x1be9,
0x1bed, 0x1bed,
@@ -15197,7 +11676,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x1cd4, 0x1ce0,
0x1ce2, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
0x1dc0, 0x1de6,
0x1dfc, 0x1dff,
0x200c, 0x200d,
@@ -15208,8 +11686,7 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x302a, 0x302f,
0x3099, 0x309a,
0xa66f, 0xa672,
- 0xa674, 0xa67d,
- 0xa69f, 0xa69f,
+ 0xa67c, 0xa67d,
0xa6f0, 0xa6f1,
0xa802, 0xa802,
0xa806, 0xa806,
@@ -15233,8 +11710,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0xaab7, 0xaab8,
0xaabe, 0xaabf,
0xaac1, 0xaac1,
- 0xaaec, 0xaaed,
- 0xaaf6, 0xaaf6,
0xabe5, 0xabe5,
0xabe8, 0xabe8,
0xabed, 0xabed,
@@ -15253,16 +11728,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x11080, 0x11081,
0x110b3, 0x110b6,
0x110b9, 0x110ba,
- 0x11100, 0x11102,
- 0x11127, 0x1112b,
- 0x1112d, 0x11134,
- 0x11180, 0x11181,
- 0x111b6, 0x111be,
- 0x116ab, 0x116ab,
- 0x116ad, 0x116ad,
- 0x116b0, 0x116b5,
- 0x116b7, 0x116b7,
- 0x16f8f, 0x16f92,
0x1d165, 0x1d165,
0x1d167, 0x1d169,
0x1d16e, 0x1d172,
@@ -15275,7 +11740,7 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
/* 'Grapheme_Base': Derived Property */
static const OnigCodePoint CR_Grapheme_Base[] = {
- 643,
+ 596,
0x0020, 0x007e,
0x00a0, 0x00ac,
0x00ae, 0x02ff,
@@ -15290,7 +11755,6 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x0559, 0x055f,
0x0561, 0x0587,
0x0589, 0x058a,
- 0x058f, 0x058f,
0x05be, 0x05be,
0x05c0, 0x05c0,
0x05c3, 0x05c3,
@@ -15319,8 +11783,6 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x0830, 0x083e,
0x0840, 0x0858,
0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0903, 0x0939,
0x093b, 0x093b,
0x093d, 0x0940,
@@ -15369,7 +11831,8 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x0acb, 0x0acc,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae1,
- 0x0ae6, 0x0af1,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
0x0b02, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -15469,7 +11932,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f17,
0x0f1a, 0x0f34,
0x0f36, 0x0f36,
@@ -15494,9 +11957,8 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1087, 0x108c,
0x108e, 0x109c,
0x109e, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
+ 0x10d0, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -15569,7 +12031,8 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1b82, 0x1ba1,
0x1ba6, 0x1ba7,
0x1baa, 0x1baa,
- 0x1bac, 0x1be5,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1be5,
0x1be7, 0x1be7,
0x1bea, 0x1bec,
0x1bee, 0x1bee,
@@ -15578,12 +12041,10 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1c34, 0x1c35,
0x1c3b, 0x1c49,
0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
0x1cd3, 0x1cd3,
0x1ce1, 0x1ce1,
0x1ce9, 0x1cec,
- 0x1cee, 0x1cf3,
- 0x1cf5, 0x1cf6,
+ 0x1cee, 0x1cf2,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -15613,16 +12074,15 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x2400, 0x2426,
0x2440, 0x244a,
0x2460, 0x26ff,
- 0x2701, 0x2b4c,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x2b4c,
0x2b50, 0x2b59,
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d70,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
@@ -15633,7 +12093,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
- 0x2e00, 0x2e3b,
+ 0x2e00, 0x2e31,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -15649,7 +12109,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x31f0, 0x321e,
0x3220, 0x32fe,
0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
+ 0x4dc0, 0x9fcb,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
@@ -15659,9 +12119,9 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0xa6a0, 0xa6ef,
0xa6f2, 0xa6f7,
0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa824,
@@ -15695,8 +12155,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0xaab9, 0xaabd,
0xaac0, 0xaac0,
0xaac2, 0xaac2,
- 0xaadb, 0xaaeb,
- 0xaaee, 0xaaf5,
+ 0xaadb, 0xaadf,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -15709,7 +12168,8 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -15771,8 +12231,6 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x10900, 0x1091b,
0x1091f, 0x10939,
0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -15794,27 +12252,11 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x110b7, 0x110b8,
0x110bb, 0x110bc,
0x110be, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11103, 0x11126,
- 0x1112c, 0x1112c,
- 0x11136, 0x11143,
- 0x11182, 0x111b5,
- 0x111bf, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116aa,
- 0x116ac, 0x116ac,
- 0x116ae, 0x116af,
- 0x116b6, 0x116b6,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x12470, 0x12473,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f93, 0x16f9f,
0x1b000, 0x1b001,
0x1d000, 0x1d0f5,
0x1d100, 0x1d126,
@@ -15849,40 +12291,6 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1d552, 0x1d6a5,
0x1d6a8, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
@@ -15891,7 +12299,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1f0d1, 0x1f0df,
0x1f100, 0x1f10a,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -15909,9 +12317,19 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -15923,7 +12341,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
/* 'Grapheme_Link': Derived Property */
static const OnigCodePoint CR_Grapheme_Link[] = {
- 33,
+ 29,
0x094d, 0x094d,
0x09cd, 0x09cd,
0x0a4d, 0x0a4d,
@@ -15942,26 +12360,22 @@ static const OnigCodePoint CR_Grapheme_Link[] = {
0x17d2, 0x17d2,
0x1a60, 0x1a60,
0x1b44, 0x1b44,
- 0x1baa, 0x1bab,
+ 0x1baa, 0x1baa,
0x1bf2, 0x1bf3,
0x2d7f, 0x2d7f,
0xa806, 0xa806,
0xa8c4, 0xa8c4,
0xa953, 0xa953,
0xa9c0, 0xa9c0,
- 0xaaf6, 0xaaf6,
0xabed, 0xabed,
0x10a3f, 0x10a3f,
0x11046, 0x11046,
0x110b9, 0x110b9,
- 0x11133, 0x11134,
- 0x111c0, 0x111c0,
- 0x116b6, 0x116b6,
}; /* CR_Grapheme_Link */
/* 'Common': Script */
static const OnigCodePoint CR_Common[] = {
- 157,
+ 169,
0x0000, 0x0040,
0x005b, 0x0060,
0x007b, 0x00a9,
@@ -15984,6 +12398,7 @@ static const OnigCodePoint CR_Common[] = {
0x0660, 0x0669,
0x06dd, 0x06dd,
0x0964, 0x0965,
+ 0x0970, 0x0970,
0x0e3f, 0x0e3f,
0x0fd5, 0x0fd8,
0x10fb, 0x10fb,
@@ -15994,8 +12409,7 @@ static const OnigCodePoint CR_Common[] = {
0x1cd3, 0x1cd3,
0x1ce1, 0x1ce1,
0x1ce9, 0x1cec,
- 0x1cee, 0x1cf3,
- 0x1cf5, 0x1cf6,
+ 0x1cee, 0x1cf2,
0x2000, 0x200b,
0x200e, 0x2064,
0x206a, 0x2070,
@@ -16012,10 +12426,12 @@ static const OnigCodePoint CR_Common[] = {
0x2400, 0x2426,
0x2440, 0x244a,
0x2460, 0x26ff,
- 0x2701, 0x27ff,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x27ff,
0x2900, 0x2b4c,
0x2b50, 0x2b59,
- 0x2e00, 0x2e3b,
+ 0x2e00, 0x2e31,
0x2ff0, 0x2ffb,
0x3000, 0x3004,
0x3006, 0x3006,
@@ -16092,7 +12508,7 @@ static const OnigCodePoint CR_Common[] = {
0x1f0d1, 0x1f0df,
0x1f100, 0x1f10a,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f1ff,
0x1f201, 0x1f202,
@@ -16111,9 +12527,19 @@ static const OnigCodePoint CR_Common[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -16148,9 +12574,9 @@ static const OnigCodePoint CR_Latin[] = {
0x2c60, 0x2c7f,
0xa722, 0xa787,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa7ff,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa7ff,
0xfb00, 0xfb06,
0xff21, 0xff3a,
0xff41, 0xff5a,
@@ -16202,18 +12628,17 @@ static const OnigCodePoint CR_Cyrillic[] = {
0x1d2b, 0x1d2b,
0x1d78, 0x1d78,
0x2de0, 0x2dff,
- 0xa640, 0xa697,
- 0xa69f, 0xa69f,
+ 0xa640, 0xa673,
+ 0xa67c, 0xa697,
}; /* CR_Cyrillic */
/* 'Armenian': Script */
static const OnigCodePoint CR_Armenian[] = {
- 6,
+ 5,
0x0531, 0x0556,
0x0559, 0x055f,
0x0561, 0x0587,
0x058a, 0x058a,
- 0x058f, 0x058f,
0xfb13, 0xfb17,
}; /* CR_Armenian */
@@ -16233,8 +12658,8 @@ static const OnigCodePoint CR_Hebrew[] = {
/* 'Arabic': Script */
static const OnigCodePoint CR_Arabic[] = {
- 56,
- 0x0600, 0x0604,
+ 19,
+ 0x0600, 0x0603,
0x0606, 0x060b,
0x060d, 0x061a,
0x061e, 0x061e,
@@ -16245,9 +12670,6 @@ static const OnigCodePoint CR_Arabic[] = {
0x0671, 0x06dc,
0x06de, 0x06ff,
0x0750, 0x077f,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0xfb50, 0xfbc1,
0xfbd3, 0xfd3d,
0xfd50, 0xfd8f,
@@ -16256,40 +12678,6 @@ static const OnigCodePoint CR_Arabic[] = {
0xfe70, 0xfe74,
0xfe76, 0xfefc,
0x10e60, 0x10e7e,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
}; /* CR_Arabic */
/* 'Syriac': Script */
@@ -16308,10 +12696,11 @@ static const OnigCodePoint CR_Thaana[] = {
/* 'Devanagari': Script */
static const OnigCodePoint CR_Devanagari[] = {
- 5,
+ 6,
0x0900, 0x0950,
0x0953, 0x0963,
- 0x0966, 0x0977,
+ 0x0966, 0x096f,
+ 0x0971, 0x0977,
0x0979, 0x097f,
0xa8e0, 0xa8fb,
}; /* CR_Devanagari */
@@ -16358,7 +12747,7 @@ static const OnigCodePoint CR_Gurmukhi[] = {
/* 'Gujarati': Script */
static const OnigCodePoint CR_Gujarati[] = {
- 13,
+ 14,
0x0a81, 0x0a83,
0x0a85, 0x0a8d,
0x0a8f, 0x0a91,
@@ -16371,7 +12760,8 @@ static const OnigCodePoint CR_Gujarati[] = {
0x0acb, 0x0acd,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
}; /* CR_Gujarati */
/* 'Oriya': Script */
@@ -16511,7 +12901,7 @@ static const OnigCodePoint CR_Lao[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
}; /* CR_Lao */
/* 'Tibetan': Script */
@@ -16535,15 +12925,11 @@ static const OnigCodePoint CR_Myanmar[] = {
/* 'Georgian': Script */
static const OnigCodePoint CR_Georgian[] = {
- 8,
+ 4,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x10ff,
+ 0x10fc, 0x10fc,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
}; /* CR_Georgian */
/* 'Hangul': Script */
@@ -16680,7 +13066,7 @@ static const OnigCodePoint CR_Bopomofo[] = {
/* 'Han': Script */
static const OnigCodePoint CR_Han[] = {
- 15,
+ 16,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -16689,8 +13075,9 @@ static const OnigCodePoint CR_Han[] = {
0x3021, 0x3029,
0x3038, 0x303b,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xf900, 0xfa6d,
+ 0x4e00, 0x9fcb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
@@ -16726,7 +13113,7 @@ static const OnigCodePoint CR_Deseret[] = {
/* 'Inherited': Script */
static const OnigCodePoint CR_Inherited[] = {
- 25,
+ 24,
0x0300, 0x036f,
0x0485, 0x0486,
0x064b, 0x0655,
@@ -16737,7 +13124,6 @@ static const OnigCodePoint CR_Inherited[] = {
0x1cd4, 0x1ce0,
0x1ce2, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
0x1dc0, 0x1de6,
0x1dfc, 0x1dff,
0x200c, 0x200d,
@@ -16858,7 +13244,7 @@ static const OnigCodePoint CR_Buginese[] = {
static const OnigCodePoint CR_Coptic[] = {
3,
0x03e2, 0x03ef,
- 0x2c80, 0x2cf3,
+ 0x2c80, 0x2cf1,
0x2cf9, 0x2cff,
}; /* CR_Coptic */
@@ -16881,7 +13267,7 @@ static const OnigCodePoint CR_Glagolitic[] = {
/* 'Tifinagh': Script */
static const OnigCodePoint CR_Tifinagh[] = {
3,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d70,
0x2d7f, 0x2d7f,
}; /* CR_Tifinagh */
@@ -16949,8 +13335,8 @@ static const OnigCodePoint CR_Nko[] = {
/* 'Sundanese': Script */
static const OnigCodePoint CR_Sundanese[] = {
2,
- 0x1b80, 0x1bbf,
- 0x1cc0, 0x1cc7,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
}; /* CR_Sundanese */
/* 'Lepcha': Script */
@@ -17081,8 +13467,7 @@ static const OnigCodePoint CR_Javanese[] = {
/* 'Meetei_Mayek': Script */
static const OnigCodePoint CR_Meetei_Mayek[] = {
- 3,
- 0xaae0, 0xaaf6,
+ 2,
0xabc0, 0xabed,
0xabf0, 0xabf9,
}; /* CR_Meetei_Mayek */
@@ -17147,57 +13532,21 @@ static const OnigCodePoint CR_Mandaic[] = {
0x085e, 0x085e,
}; /* CR_Mandaic */
-/* 'Chakma': Script */
-static const OnigCodePoint CR_Chakma[] = {
- 2,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
-}; /* CR_Chakma */
-
-/* 'Meroitic_Cursive': Script */
-static const OnigCodePoint CR_Meroitic_Cursive[] = {
- 2,
- 0x109a0, 0x109b7,
- 0x109be, 0x109bf,
-}; /* CR_Meroitic_Cursive */
-
-/* 'Meroitic_Hieroglyphs': Script */
-static const OnigCodePoint CR_Meroitic_Hieroglyphs[] = {
- 1,
- 0x10980, 0x1099f,
-}; /* CR_Meroitic_Hieroglyphs */
-
-/* 'Miao': Script */
-static const OnigCodePoint CR_Miao[] = {
- 3,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
-}; /* CR_Miao */
-
-/* 'Sharada': Script */
-static const OnigCodePoint CR_Sharada[] = {
- 2,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
-}; /* CR_Sharada */
-
-/* 'Sora_Sompeng': Script */
-static const OnigCodePoint CR_Sora_Sompeng[] = {
- 2,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
-}; /* CR_Sora_Sompeng */
-
-/* 'Takri': Script */
-static const OnigCodePoint CR_Takri[] = {
- 2,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
-}; /* CR_Takri */
-
/* 'White_Space': Binary Property */
-#define CR_White_Space CR_Space
+static const OnigCodePoint CR_White_Space[] = {
+ 11,
+ 0x0009, 0x000d,
+ 0x0020, 0x0020,
+ 0x0085, 0x0085,
+ 0x00a0, 0x00a0,
+ 0x1680, 0x1680,
+ 0x180e, 0x180e,
+ 0x2000, 0x200a,
+ 0x2028, 0x2029,
+ 0x202f, 0x202f,
+ 0x205f, 0x205f,
+ 0x3000, 0x3000,
+}; /* CR_White_Space */
/* 'Bidi_Control': Binary Property */
static const OnigCodePoint CR_Bidi_Control[] = {
@@ -17214,7 +13563,7 @@ static const OnigCodePoint CR_Join_Control[] = {
/* 'Dash': Binary Property */
static const OnigCodePoint CR_Dash[] = {
- 20,
+ 19,
0x002d, 0x002d,
0x058a, 0x058a,
0x05be, 0x05be,
@@ -17227,7 +13576,6 @@ static const OnigCodePoint CR_Dash[] = {
0x2212, 0x2212,
0x2e17, 0x2e17,
0x2e1a, 0x2e1a,
- 0x2e3a, 0x2e3b,
0x301c, 0x301c,
0x3030, 0x3030,
0x30a0, 0x30a0,
@@ -17271,7 +13619,7 @@ static const OnigCodePoint CR_Quotation_Mark[] = {
/* 'Terminal_Punctuation': Binary Property */
static const OnigCodePoint CR_Terminal_Punctuation[] = {
- 70,
+ 67,
0x0021, 0x0021,
0x002c, 0x002c,
0x002e, 0x002e,
@@ -17321,7 +13669,6 @@ static const OnigCodePoint CR_Terminal_Punctuation[] = {
0xa9c7, 0xa9c9,
0xaa5d, 0xaa5f,
0xaadf, 0xaadf,
- 0xaaf0, 0xaaf1,
0xabeb, 0xabeb,
0xfe50, 0xfe52,
0xfe54, 0xfe57,
@@ -17339,14 +13686,12 @@ static const OnigCodePoint CR_Terminal_Punctuation[] = {
0x10b3a, 0x10b3f,
0x11047, 0x1104d,
0x110be, 0x110c1,
- 0x11141, 0x11143,
- 0x111c5, 0x111c6,
0x12470, 0x12473,
}; /* CR_Terminal_Punctuation */
/* 'Other_Math': Binary Property */
static const OnigCodePoint CR_Other_Math[] = {
- 133,
+ 100,
0x005e, 0x005e,
0x03d0, 0x03d2,
0x03d5, 0x03d5,
@@ -17447,39 +13792,6 @@ static const OnigCodePoint CR_Other_Math[] = {
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
}; /* CR_Other_Math */
/* 'Hex_Digit': Binary Property */
@@ -17494,11 +13806,16 @@ static const OnigCodePoint CR_Hex_Digit[] = {
}; /* CR_Hex_Digit */
/* 'ASCII_Hex_Digit': Binary Property */
-#define CR_ASCII_Hex_Digit CR_XDigit
+static const OnigCodePoint CR_ASCII_Hex_Digit[] = {
+ 3,
+ 0x0030, 0x0039,
+ 0x0041, 0x0046,
+ 0x0061, 0x0066,
+}; /* CR_ASCII_Hex_Digit */
/* 'Other_Alphabetic': Binary Property */
static const OnigCodePoint CR_Other_Alphabetic[] = {
- 158,
+ 145,
0x0345, 0x0345,
0x05b0, 0x05bd,
0x05bf, 0x05bf,
@@ -17520,8 +13837,6 @@ static const OnigCodePoint CR_Other_Alphabetic[] = {
0x081b, 0x0823,
0x0825, 0x0827,
0x0829, 0x082c,
- 0x08e4, 0x08e9,
- 0x08f0, 0x08fe,
0x0900, 0x0903,
0x093a, 0x093b,
0x093e, 0x094c,
@@ -17618,14 +13933,11 @@ static const OnigCodePoint CR_Other_Alphabetic[] = {
0x1b35, 0x1b43,
0x1b80, 0x1b82,
0x1ba1, 0x1ba9,
- 0x1bac, 0x1bad,
0x1be7, 0x1bf1,
0x1c24, 0x1c35,
- 0x1cf2, 0x1cf3,
+ 0x1cf2, 0x1cf2,
0x24b6, 0x24e9,
0x2de0, 0x2dff,
- 0xa674, 0xa67b,
- 0xa69f, 0xa69f,
0xa823, 0xa827,
0xa880, 0xa881,
0xa8b4, 0xa8c3,
@@ -17640,8 +13952,6 @@ static const OnigCodePoint CR_Other_Alphabetic[] = {
0xaab2, 0xaab4,
0xaab7, 0xaab8,
0xaabe, 0xaabe,
- 0xaaeb, 0xaaef,
- 0xaaf5, 0xaaf5,
0xabe3, 0xabea,
0xfb1e, 0xfb1e,
0x10a01, 0x10a03,
@@ -17651,23 +13961,18 @@ static const OnigCodePoint CR_Other_Alphabetic[] = {
0x11038, 0x11045,
0x11082, 0x11082,
0x110b0, 0x110b8,
- 0x11100, 0x11102,
- 0x11127, 0x11132,
- 0x11180, 0x11182,
- 0x111b3, 0x111bf,
- 0x116ab, 0x116b5,
- 0x16f51, 0x16f7e,
}; /* CR_Other_Alphabetic */
/* 'Ideographic': Binary Property */
static const OnigCodePoint CR_Ideographic[] = {
- 11,
+ 12,
0x3006, 0x3007,
0x3021, 0x3029,
0x3038, 0x303a,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xf900, 0xfa6d,
+ 0x4e00, 0x9fcb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
@@ -17677,7 +13982,7 @@ static const OnigCodePoint CR_Ideographic[] = {
/* 'Diacritic': Binary Property */
static const OnigCodePoint CR_Diacritic[] = {
- 125,
+ 117,
0x005e, 0x005e,
0x0060, 0x0060,
0x00a8, 0x00a8,
@@ -17706,7 +14011,6 @@ static const OnigCodePoint CR_Diacritic[] = {
0x07a6, 0x07b0,
0x07eb, 0x07f5,
0x0818, 0x0819,
- 0x08e4, 0x08fe,
0x093c, 0x093c,
0x094d, 0x094d,
0x0951, 0x0954,
@@ -17749,12 +14053,11 @@ static const OnigCodePoint CR_Diacritic[] = {
0x1b34, 0x1b34,
0x1b44, 0x1b44,
0x1b6b, 0x1b73,
- 0x1baa, 0x1bab,
+ 0x1baa, 0x1baa,
0x1c36, 0x1c37,
0x1c78, 0x1c7d,
0x1cd0, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
0x1d2c, 0x1d6a,
0x1dc4, 0x1dcf,
0x1dfd, 0x1dff,
@@ -17775,7 +14078,6 @@ static const OnigCodePoint CR_Diacritic[] = {
0xa6f0, 0xa6f1,
0xa717, 0xa721,
0xa788, 0xa788,
- 0xa7f8, 0xa7f9,
0xa8c4, 0xa8c4,
0xa8e0, 0xa8f1,
0xa92b, 0xa92e,
@@ -17784,7 +14086,6 @@ static const OnigCodePoint CR_Diacritic[] = {
0xa9c0, 0xa9c0,
0xaa7b, 0xaa7b,
0xaabf, 0xaac2,
- 0xaaf6, 0xaaf6,
0xabec, 0xabed,
0xfb1e, 0xfb1e,
0xfe20, 0xfe26,
@@ -17794,10 +14095,6 @@ static const OnigCodePoint CR_Diacritic[] = {
0xff9e, 0xff9f,
0xffe3, 0xffe3,
0x110b9, 0x110ba,
- 0x11133, 0x11134,
- 0x111c0, 0x111c0,
- 0x116b6, 0x116b7,
- 0x16f8f, 0x16f9f,
0x1d167, 0x1d169,
0x1d16d, 0x1d172,
0x1d17b, 0x1d182,
@@ -17807,14 +14104,13 @@ static const OnigCodePoint CR_Diacritic[] = {
/* 'Extender': Binary Property */
static const OnigCodePoint CR_Extender[] = {
- 22,
+ 20,
0x00b7, 0x00b7,
0x02d0, 0x02d1,
0x0640, 0x0640,
0x07fa, 0x07fa,
0x0e46, 0x0e46,
0x0ec6, 0x0ec6,
- 0x180a, 0x180a,
0x1843, 0x1843,
0x1aa7, 0x1aa7,
0x1c36, 0x1c36,
@@ -17828,31 +14124,25 @@ static const OnigCodePoint CR_Extender[] = {
0xa9cf, 0xa9cf,
0xaa70, 0xaa70,
0xaadd, 0xaadd,
- 0xaaf3, 0xaaf4,
0xff70, 0xff70,
}; /* CR_Extender */
/* 'Other_Lowercase': Binary Property */
static const OnigCodePoint CR_Other_Lowercase[] = {
- 18,
- 0x00aa, 0x00aa,
- 0x00ba, 0x00ba,
+ 13,
0x02b0, 0x02b8,
0x02c0, 0x02c1,
0x02e0, 0x02e4,
0x0345, 0x0345,
0x037a, 0x037a,
- 0x1d2c, 0x1d6a,
+ 0x1d2c, 0x1d61,
0x1d78, 0x1d78,
0x1d9b, 0x1dbf,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
+ 0x2090, 0x2094,
0x2170, 0x217f,
0x24d0, 0x24e9,
- 0x2c7c, 0x2c7d,
+ 0x2c7d, 0x2c7d,
0xa770, 0xa770,
- 0xa7f8, 0xa7f9,
}; /* CR_Other_Lowercase */
/* 'Other_Uppercase': Binary Property */
@@ -17887,7 +14177,7 @@ static const OnigCodePoint CR_Noncharacter_Code_Point[] = {
/* 'Other_Grapheme_Extend': Binary Property */
static const OnigCodePoint CR_Other_Grapheme_Extend[] = {
- 17,
+ 16,
0x09be, 0x09be,
0x09d7, 0x09d7,
0x0b3e, 0x0b3e,
@@ -17901,7 +14191,6 @@ static const OnigCodePoint CR_Other_Grapheme_Extend[] = {
0x0dcf, 0x0dcf,
0x0ddf, 0x0ddf,
0x200c, 0x200d,
- 0x302e, 0x302f,
0xff9e, 0xff9f,
0x1d165, 0x1d165,
0x1d16e, 0x1d172,
@@ -17932,7 +14221,7 @@ static const OnigCodePoint CR_Radical[] = {
static const OnigCodePoint CR_Unified_Ideograph[] = {
12,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xfa0e, 0xfa0f,
0xfa11, 0xfa11,
0xfa13, 0xfa14,
@@ -17947,10 +14236,9 @@ static const OnigCodePoint CR_Unified_Ideograph[] = {
/* 'Other_Default_Ignorable_Code_Point': Binary Property */
static const OnigCodePoint CR_Other_Default_Ignorable_Code_Point[] = {
- 11,
+ 10,
0x034f, 0x034f,
0x115f, 0x1160,
- 0x17b4, 0x17b5,
0x2065, 0x2069,
0x3164, 0x3164,
0xffa0, 0xffa0,
@@ -18040,7 +14328,7 @@ static const OnigCodePoint CR_Other_ID_Continue[] = {
/* 'STerm': Binary Property */
static const OnigCodePoint CR_STerm[] = {
- 50,
+ 47,
0x0021, 0x0021,
0x002e, 0x002e,
0x003f, 0x003f,
@@ -18078,7 +14366,6 @@ static const OnigCodePoint CR_STerm[] = {
0xa92f, 0xa92f,
0xa9c8, 0xa9c9,
0xaa5d, 0xaa5f,
- 0xaaf0, 0xaaf1,
0xabeb, 0xabeb,
0xfe52, 0xfe52,
0xfe56, 0xfe57,
@@ -18089,8 +14376,6 @@ static const OnigCodePoint CR_STerm[] = {
0x10a56, 0x10a57,
0x11047, 0x11048,
0x110be, 0x110c1,
- 0x11141, 0x11143,
- 0x111c5, 0x111c6,
}; /* CR_STerm */
/* 'Variation_Selector': Binary Property */
@@ -18146,7 +14431,7 @@ static const OnigCodePoint CR_Pattern_Syntax[] = {
/* 'Unknown': Script */
static const OnigCodePoint CR_Unknown[] = {
- 537,
+ 499,
0x0378, 0x0379,
0x037f, 0x0383,
0x038b, 0x038b,
@@ -18156,12 +14441,11 @@ static const OnigCodePoint CR_Unknown[] = {
0x0557, 0x0558,
0x0560, 0x0560,
0x0588, 0x0588,
- 0x058b, 0x058e,
- 0x0590, 0x0590,
+ 0x058b, 0x0590,
0x05c8, 0x05cf,
0x05eb, 0x05ef,
0x05f5, 0x05ff,
- 0x0605, 0x0605,
+ 0x0604, 0x0605,
0x061c, 0x061d,
0x070e, 0x070e,
0x074b, 0x074c,
@@ -18170,10 +14454,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x082e, 0x082f,
0x083f, 0x083f,
0x085c, 0x085d,
- 0x085f, 0x089f,
- 0x08a1, 0x08a1,
- 0x08ad, 0x08e3,
- 0x08ff, 0x08ff,
+ 0x085f, 0x08ff,
0x0978, 0x0978,
0x0980, 0x0980,
0x0984, 0x0984,
@@ -18218,6 +14499,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x0ace, 0x0acf,
0x0ad1, 0x0adf,
0x0ae4, 0x0ae5,
+ 0x0af0, 0x0af0,
0x0af2, 0x0b00,
0x0b04, 0x0b04,
0x0b0d, 0x0b0e,
@@ -18318,16 +14600,15 @@ static const OnigCodePoint CR_Unknown[] = {
0x0ec7, 0x0ec7,
0x0ece, 0x0ecf,
0x0eda, 0x0edb,
- 0x0ee0, 0x0eff,
+ 0x0ede, 0x0eff,
0x0f48, 0x0f48,
0x0f6d, 0x0f70,
0x0f98, 0x0f98,
0x0fbd, 0x0fbd,
0x0fcd, 0x0fcd,
0x0fdb, 0x0fff,
- 0x10c6, 0x10c6,
- 0x10c8, 0x10cc,
- 0x10ce, 0x10cf,
+ 0x10c6, 0x10cf,
+ 0x10fd, 0x10ff,
0x1249, 0x1249,
0x124e, 0x124f,
0x1257, 0x1257,
@@ -18381,12 +14662,13 @@ static const OnigCodePoint CR_Unknown[] = {
0x1aae, 0x1aff,
0x1b4c, 0x1b4f,
0x1b7d, 0x1b7f,
+ 0x1bab, 0x1bad,
+ 0x1bba, 0x1bbf,
0x1bf4, 0x1bfb,
0x1c38, 0x1c3a,
0x1c4a, 0x1c4c,
- 0x1c80, 0x1cbf,
- 0x1cc8, 0x1ccf,
- 0x1cf7, 0x1cff,
+ 0x1c80, 0x1ccf,
+ 0x1cf3, 0x1cff,
0x1de7, 0x1dfb,
0x1f16, 0x1f17,
0x1f1e, 0x1f1f,
@@ -18415,15 +14697,15 @@ static const OnigCodePoint CR_Unknown[] = {
0x2427, 0x243f,
0x244b, 0x245f,
0x2700, 0x2700,
+ 0x27cb, 0x27cb,
+ 0x27cd, 0x27cd,
0x2b4d, 0x2b4f,
0x2b5a, 0x2bff,
0x2c2f, 0x2c2f,
0x2c5f, 0x2c5f,
- 0x2cf4, 0x2cf8,
- 0x2d26, 0x2d26,
- 0x2d28, 0x2d2c,
- 0x2d2e, 0x2d2f,
- 0x2d68, 0x2d6e,
+ 0x2cf2, 0x2cf8,
+ 0x2d26, 0x2d2f,
+ 0x2d66, 0x2d6e,
0x2d71, 0x2d7e,
0x2d97, 0x2d9f,
0x2da7, 0x2da7,
@@ -18434,7 +14716,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x2dcf, 0x2dcf,
0x2dd7, 0x2dd7,
0x2ddf, 0x2ddf,
- 0x2e3c, 0x2e7f,
+ 0x2e32, 0x2e7f,
0x2e9a, 0x2e9a,
0x2ef4, 0x2eff,
0x2fd6, 0x2fef,
@@ -18449,15 +14731,16 @@ static const OnigCodePoint CR_Unknown[] = {
0x321f, 0x321f,
0x32ff, 0x32ff,
0x4db6, 0x4dbf,
- 0x9fcd, 0x9fff,
+ 0x9fcc, 0x9fff,
0xa48d, 0xa48f,
0xa4c7, 0xa4cf,
0xa62c, 0xa63f,
- 0xa698, 0xa69e,
+ 0xa674, 0xa67b,
+ 0xa698, 0xa69f,
0xa6f8, 0xa6ff,
0xa78f, 0xa78f,
- 0xa794, 0xa79f,
- 0xa7ab, 0xa7f7,
+ 0xa792, 0xa79f,
+ 0xa7aa, 0xa7f9,
0xa82c, 0xa82f,
0xa83a, 0xa83f,
0xa878, 0xa87f,
@@ -18474,7 +14757,7 @@ static const OnigCodePoint CR_Unknown[] = {
0xaa5a, 0xaa5b,
0xaa7c, 0xaa7f,
0xaac3, 0xaada,
- 0xaaf7, 0xab00,
+ 0xaae0, 0xab00,
0xab07, 0xab08,
0xab0f, 0xab10,
0xab17, 0xab1f,
@@ -18485,6 +14768,7 @@ static const OnigCodePoint CR_Unknown[] = {
0xd7a4, 0xd7af,
0xd7c7, 0xd7ca,
0xd7fc, 0xf8ff,
+ 0xfa2e, 0xfa2f,
0xfa6e, 0xfa6f,
0xfada, 0xfaff,
0xfb07, 0xfb12,
@@ -18546,9 +14830,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x10860, 0x108ff,
0x1091c, 0x1091e,
0x1093a, 0x1093e,
- 0x10940, 0x1097f,
- 0x109b8, 0x109bd,
- 0x109c0, 0x109ff,
+ 0x10940, 0x109ff,
0x10a04, 0x10a04,
0x10a07, 0x10a0b,
0x10a14, 0x10a14,
@@ -18566,23 +14848,12 @@ static const OnigCodePoint CR_Unknown[] = {
0x10e7f, 0x10fff,
0x1104e, 0x11051,
0x11070, 0x1107f,
- 0x110c2, 0x110cf,
- 0x110e9, 0x110ef,
- 0x110fa, 0x110ff,
- 0x11135, 0x11135,
- 0x11144, 0x1117f,
- 0x111c9, 0x111cf,
- 0x111da, 0x1167f,
- 0x116b8, 0x116bf,
- 0x116ca, 0x11fff,
+ 0x110c2, 0x11fff,
0x1236f, 0x123ff,
0x12463, 0x1246f,
0x12474, 0x12fff,
0x1342f, 0x167ff,
- 0x16a39, 0x16eff,
- 0x16f45, 0x16f4f,
- 0x16f7f, 0x16f8e,
- 0x16fa0, 0x1afff,
+ 0x16a39, 0x1afff,
0x1b002, 0x1cfff,
0x1d0f6, 0x1d0ff,
0x1d127, 0x1d128,
@@ -18610,41 +14881,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x1d551, 0x1d551,
0x1d6a6, 0x1d6a7,
0x1d7cc, 0x1d7cd,
- 0x1d800, 0x1edff,
- 0x1ee04, 0x1ee04,
- 0x1ee20, 0x1ee20,
- 0x1ee23, 0x1ee23,
- 0x1ee25, 0x1ee26,
- 0x1ee28, 0x1ee28,
- 0x1ee33, 0x1ee33,
- 0x1ee38, 0x1ee38,
- 0x1ee3a, 0x1ee3a,
- 0x1ee3c, 0x1ee41,
- 0x1ee43, 0x1ee46,
- 0x1ee48, 0x1ee48,
- 0x1ee4a, 0x1ee4a,
- 0x1ee4c, 0x1ee4c,
- 0x1ee50, 0x1ee50,
- 0x1ee53, 0x1ee53,
- 0x1ee55, 0x1ee56,
- 0x1ee58, 0x1ee58,
- 0x1ee5a, 0x1ee5a,
- 0x1ee5c, 0x1ee5c,
- 0x1ee5e, 0x1ee5e,
- 0x1ee60, 0x1ee60,
- 0x1ee63, 0x1ee63,
- 0x1ee65, 0x1ee66,
- 0x1ee6b, 0x1ee6b,
- 0x1ee73, 0x1ee73,
- 0x1ee78, 0x1ee78,
- 0x1ee7d, 0x1ee7d,
- 0x1ee7f, 0x1ee7f,
- 0x1ee8a, 0x1ee8a,
- 0x1ee9c, 0x1eea0,
- 0x1eea4, 0x1eea4,
- 0x1eeaa, 0x1eeaa,
- 0x1eebc, 0x1eeef,
- 0x1eef2, 0x1efff,
+ 0x1d800, 0x1efff,
0x1f02c, 0x1f02f,
0x1f094, 0x1f09f,
0x1f0af, 0x1f0b0,
@@ -18653,7 +14890,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x1f0e0, 0x1f0ff,
0x1f10b, 0x1f10f,
0x1f12f, 0x1f12f,
- 0x1f16c, 0x1f16f,
+ 0x1f16a, 0x1f16f,
0x1f19b, 0x1f1e5,
0x1f203, 0x1f20f,
0x1f23b, 0x1f23f,
@@ -18670,9 +14907,19 @@ static const OnigCodePoint CR_Unknown[] = {
0x1f441, 0x1f441,
0x1f4f8, 0x1f4f8,
0x1f4fd, 0x1f4ff,
- 0x1f53e, 0x1f53f,
- 0x1f544, 0x1f54f,
+ 0x1f53e, 0x1f54f,
0x1f568, 0x1f5fa,
+ 0x1f600, 0x1f600,
+ 0x1f611, 0x1f611,
+ 0x1f615, 0x1f615,
+ 0x1f617, 0x1f617,
+ 0x1f619, 0x1f619,
+ 0x1f61b, 0x1f61b,
+ 0x1f61f, 0x1f61f,
+ 0x1f626, 0x1f627,
+ 0x1f62c, 0x1f62c,
+ 0x1f62e, 0x1f62f,
+ 0x1f634, 0x1f634,
0x1f641, 0x1f644,
0x1f650, 0x1f67f,
0x1f6c6, 0x1f6ff,
@@ -18685,6 +14932,7 @@ static const OnigCodePoint CR_Unknown[] = {
0xe0080, 0xe00ff,
0xe01f0, 0x10ffff,
}; /* CR_Unknown */
+#endif /* USE_UNICODE_PROPERTIES */
/* 'Age_1_1': Derived Age 1.1 */
static const OnigCodePoint CR_Age_1_1[] = {
@@ -23569,10 +19817,554 @@ static const OnigCodePoint CR_Age_6_0[] = {
0xefffe, 0x10ffff,
}; /* CR_Age_6_0 */
-/* 'Age_6_1': Derived Age 6.1 */
-static const OnigCodePoint CR_Age_6_1[] = {
- 549,
- 0x0000, 0x0377,
+/* 'NEWLINE': [[:NEWLINE:]] */
+static const OnigCodePoint CR_NEWLINE[] = {
+ 1,
+ 0x000a, 0x000a,
+}; /* CR_NEWLINE */
+
+/* 'Alpha': [[:Alpha:]] */
+#define CR_Alpha CR_Alphabetic
+
+/* 'Blank': [[:Blank:]] */
+static const OnigCodePoint CR_Blank[] = {
+ 9,
+ 0x0009, 0x0009,
+ 0x0020, 0x0020,
+ 0x00a0, 0x00a0,
+ 0x1680, 0x1680,
+ 0x180e, 0x180e,
+ 0x2000, 0x200a,
+ 0x202f, 0x202f,
+ 0x205f, 0x205f,
+ 0x3000, 0x3000,
+}; /* CR_Blank */
+
+/* 'Cntrl': [[:Cntrl:]] */
+#define CR_Cntrl CR_Cc
+
+/* 'Digit': [[:Digit:]] */
+#define CR_Digit CR_Nd
+
+/* 'Graph': [[:Graph:]] */
+static const OnigCodePoint CR_Graph[] = {
+ 506,
+ 0x0021, 0x007e,
+ 0x00a1, 0x0377,
+ 0x037a, 0x037e,
+ 0x0384, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x03a1,
+ 0x03a3, 0x0527,
+ 0x0531, 0x0556,
+ 0x0559, 0x055f,
+ 0x0561, 0x0587,
+ 0x0589, 0x058a,
+ 0x0591, 0x05c7,
+ 0x05d0, 0x05ea,
+ 0x05f0, 0x05f4,
+ 0x0600, 0x0603,
+ 0x0606, 0x061b,
+ 0x061e, 0x070d,
+ 0x070f, 0x074a,
+ 0x074d, 0x07b1,
+ 0x07c0, 0x07fa,
+ 0x0800, 0x082d,
+ 0x0830, 0x083e,
+ 0x0840, 0x085b,
+ 0x085e, 0x085e,
+ 0x0900, 0x0977,
+ 0x0979, 0x097f,
+ 0x0981, 0x0983,
+ 0x0985, 0x098c,
+ 0x098f, 0x0990,
+ 0x0993, 0x09a8,
+ 0x09aa, 0x09b0,
+ 0x09b2, 0x09b2,
+ 0x09b6, 0x09b9,
+ 0x09bc, 0x09c4,
+ 0x09c7, 0x09c8,
+ 0x09cb, 0x09ce,
+ 0x09d7, 0x09d7,
+ 0x09dc, 0x09dd,
+ 0x09df, 0x09e3,
+ 0x09e6, 0x09fb,
+ 0x0a01, 0x0a03,
+ 0x0a05, 0x0a0a,
+ 0x0a0f, 0x0a10,
+ 0x0a13, 0x0a28,
+ 0x0a2a, 0x0a30,
+ 0x0a32, 0x0a33,
+ 0x0a35, 0x0a36,
+ 0x0a38, 0x0a39,
+ 0x0a3c, 0x0a3c,
+ 0x0a3e, 0x0a42,
+ 0x0a47, 0x0a48,
+ 0x0a4b, 0x0a4d,
+ 0x0a51, 0x0a51,
+ 0x0a59, 0x0a5c,
+ 0x0a5e, 0x0a5e,
+ 0x0a66, 0x0a75,
+ 0x0a81, 0x0a83,
+ 0x0a85, 0x0a8d,
+ 0x0a8f, 0x0a91,
+ 0x0a93, 0x0aa8,
+ 0x0aaa, 0x0ab0,
+ 0x0ab2, 0x0ab3,
+ 0x0ab5, 0x0ab9,
+ 0x0abc, 0x0ac5,
+ 0x0ac7, 0x0ac9,
+ 0x0acb, 0x0acd,
+ 0x0ad0, 0x0ad0,
+ 0x0ae0, 0x0ae3,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
+ 0x0b01, 0x0b03,
+ 0x0b05, 0x0b0c,
+ 0x0b0f, 0x0b10,
+ 0x0b13, 0x0b28,
+ 0x0b2a, 0x0b30,
+ 0x0b32, 0x0b33,
+ 0x0b35, 0x0b39,
+ 0x0b3c, 0x0b44,
+ 0x0b47, 0x0b48,
+ 0x0b4b, 0x0b4d,
+ 0x0b56, 0x0b57,
+ 0x0b5c, 0x0b5d,
+ 0x0b5f, 0x0b63,
+ 0x0b66, 0x0b77,
+ 0x0b82, 0x0b83,
+ 0x0b85, 0x0b8a,
+ 0x0b8e, 0x0b90,
+ 0x0b92, 0x0b95,
+ 0x0b99, 0x0b9a,
+ 0x0b9c, 0x0b9c,
+ 0x0b9e, 0x0b9f,
+ 0x0ba3, 0x0ba4,
+ 0x0ba8, 0x0baa,
+ 0x0bae, 0x0bb9,
+ 0x0bbe, 0x0bc2,
+ 0x0bc6, 0x0bc8,
+ 0x0bca, 0x0bcd,
+ 0x0bd0, 0x0bd0,
+ 0x0bd7, 0x0bd7,
+ 0x0be6, 0x0bfa,
+ 0x0c01, 0x0c03,
+ 0x0c05, 0x0c0c,
+ 0x0c0e, 0x0c10,
+ 0x0c12, 0x0c28,
+ 0x0c2a, 0x0c33,
+ 0x0c35, 0x0c39,
+ 0x0c3d, 0x0c44,
+ 0x0c46, 0x0c48,
+ 0x0c4a, 0x0c4d,
+ 0x0c55, 0x0c56,
+ 0x0c58, 0x0c59,
+ 0x0c60, 0x0c63,
+ 0x0c66, 0x0c6f,
+ 0x0c78, 0x0c7f,
+ 0x0c82, 0x0c83,
+ 0x0c85, 0x0c8c,
+ 0x0c8e, 0x0c90,
+ 0x0c92, 0x0ca8,
+ 0x0caa, 0x0cb3,
+ 0x0cb5, 0x0cb9,
+ 0x0cbc, 0x0cc4,
+ 0x0cc6, 0x0cc8,
+ 0x0cca, 0x0ccd,
+ 0x0cd5, 0x0cd6,
+ 0x0cde, 0x0cde,
+ 0x0ce0, 0x0ce3,
+ 0x0ce6, 0x0cef,
+ 0x0cf1, 0x0cf2,
+ 0x0d02, 0x0d03,
+ 0x0d05, 0x0d0c,
+ 0x0d0e, 0x0d10,
+ 0x0d12, 0x0d3a,
+ 0x0d3d, 0x0d44,
+ 0x0d46, 0x0d48,
+ 0x0d4a, 0x0d4e,
+ 0x0d57, 0x0d57,
+ 0x0d60, 0x0d63,
+ 0x0d66, 0x0d75,
+ 0x0d79, 0x0d7f,
+ 0x0d82, 0x0d83,
+ 0x0d85, 0x0d96,
+ 0x0d9a, 0x0db1,
+ 0x0db3, 0x0dbb,
+ 0x0dbd, 0x0dbd,
+ 0x0dc0, 0x0dc6,
+ 0x0dca, 0x0dca,
+ 0x0dcf, 0x0dd4,
+ 0x0dd6, 0x0dd6,
+ 0x0dd8, 0x0ddf,
+ 0x0df2, 0x0df4,
+ 0x0e01, 0x0e3a,
+ 0x0e3f, 0x0e5b,
+ 0x0e81, 0x0e82,
+ 0x0e84, 0x0e84,
+ 0x0e87, 0x0e88,
+ 0x0e8a, 0x0e8a,
+ 0x0e8d, 0x0e8d,
+ 0x0e94, 0x0e97,
+ 0x0e99, 0x0e9f,
+ 0x0ea1, 0x0ea3,
+ 0x0ea5, 0x0ea5,
+ 0x0ea7, 0x0ea7,
+ 0x0eaa, 0x0eab,
+ 0x0ead, 0x0eb9,
+ 0x0ebb, 0x0ebd,
+ 0x0ec0, 0x0ec4,
+ 0x0ec6, 0x0ec6,
+ 0x0ec8, 0x0ecd,
+ 0x0ed0, 0x0ed9,
+ 0x0edc, 0x0edd,
+ 0x0f00, 0x0f47,
+ 0x0f49, 0x0f6c,
+ 0x0f71, 0x0f97,
+ 0x0f99, 0x0fbc,
+ 0x0fbe, 0x0fcc,
+ 0x0fce, 0x0fda,
+ 0x1000, 0x10c5,
+ 0x10d0, 0x10fc,
+ 0x1100, 0x1248,
+ 0x124a, 0x124d,
+ 0x1250, 0x1256,
+ 0x1258, 0x1258,
+ 0x125a, 0x125d,
+ 0x1260, 0x1288,
+ 0x128a, 0x128d,
+ 0x1290, 0x12b0,
+ 0x12b2, 0x12b5,
+ 0x12b8, 0x12be,
+ 0x12c0, 0x12c0,
+ 0x12c2, 0x12c5,
+ 0x12c8, 0x12d6,
+ 0x12d8, 0x1310,
+ 0x1312, 0x1315,
+ 0x1318, 0x135a,
+ 0x135d, 0x137c,
+ 0x1380, 0x1399,
+ 0x13a0, 0x13f4,
+ 0x1400, 0x167f,
+ 0x1681, 0x169c,
+ 0x16a0, 0x16f0,
+ 0x1700, 0x170c,
+ 0x170e, 0x1714,
+ 0x1720, 0x1736,
+ 0x1740, 0x1753,
+ 0x1760, 0x176c,
+ 0x176e, 0x1770,
+ 0x1772, 0x1773,
+ 0x1780, 0x17dd,
+ 0x17e0, 0x17e9,
+ 0x17f0, 0x17f9,
+ 0x1800, 0x180d,
+ 0x1810, 0x1819,
+ 0x1820, 0x1877,
+ 0x1880, 0x18aa,
+ 0x18b0, 0x18f5,
+ 0x1900, 0x191c,
+ 0x1920, 0x192b,
+ 0x1930, 0x193b,
+ 0x1940, 0x1940,
+ 0x1944, 0x196d,
+ 0x1970, 0x1974,
+ 0x1980, 0x19ab,
+ 0x19b0, 0x19c9,
+ 0x19d0, 0x19da,
+ 0x19de, 0x1a1b,
+ 0x1a1e, 0x1a5e,
+ 0x1a60, 0x1a7c,
+ 0x1a7f, 0x1a89,
+ 0x1a90, 0x1a99,
+ 0x1aa0, 0x1aad,
+ 0x1b00, 0x1b4b,
+ 0x1b50, 0x1b7c,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
+ 0x1bfc, 0x1c37,
+ 0x1c3b, 0x1c49,
+ 0x1c4d, 0x1c7f,
+ 0x1cd0, 0x1cf2,
+ 0x1d00, 0x1de6,
+ 0x1dfc, 0x1f15,
+ 0x1f18, 0x1f1d,
+ 0x1f20, 0x1f45,
+ 0x1f48, 0x1f4d,
+ 0x1f50, 0x1f57,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f7d,
+ 0x1f80, 0x1fb4,
+ 0x1fb6, 0x1fc4,
+ 0x1fc6, 0x1fd3,
+ 0x1fd6, 0x1fdb,
+ 0x1fdd, 0x1fef,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ffe,
+ 0x200b, 0x2027,
+ 0x202a, 0x202e,
+ 0x2030, 0x205e,
+ 0x2060, 0x2064,
+ 0x206a, 0x2071,
+ 0x2074, 0x208e,
+ 0x2090, 0x209c,
+ 0x20a0, 0x20b9,
+ 0x20d0, 0x20f0,
+ 0x2100, 0x2189,
+ 0x2190, 0x23f3,
+ 0x2400, 0x2426,
+ 0x2440, 0x244a,
+ 0x2460, 0x26ff,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x2b4c,
+ 0x2b50, 0x2b59,
+ 0x2c00, 0x2c2e,
+ 0x2c30, 0x2c5e,
+ 0x2c60, 0x2cf1,
+ 0x2cf9, 0x2d25,
+ 0x2d30, 0x2d65,
+ 0x2d6f, 0x2d70,
+ 0x2d7f, 0x2d96,
+ 0x2da0, 0x2da6,
+ 0x2da8, 0x2dae,
+ 0x2db0, 0x2db6,
+ 0x2db8, 0x2dbe,
+ 0x2dc0, 0x2dc6,
+ 0x2dc8, 0x2dce,
+ 0x2dd0, 0x2dd6,
+ 0x2dd8, 0x2dde,
+ 0x2de0, 0x2e31,
+ 0x2e80, 0x2e99,
+ 0x2e9b, 0x2ef3,
+ 0x2f00, 0x2fd5,
+ 0x2ff0, 0x2ffb,
+ 0x3001, 0x303f,
+ 0x3041, 0x3096,
+ 0x3099, 0x30ff,
+ 0x3105, 0x312d,
+ 0x3131, 0x318e,
+ 0x3190, 0x31ba,
+ 0x31c0, 0x31e3,
+ 0x31f0, 0x321e,
+ 0x3220, 0x32fe,
+ 0x3300, 0x4db5,
+ 0x4dc0, 0x9fcb,
+ 0xa000, 0xa48c,
+ 0xa490, 0xa4c6,
+ 0xa4d0, 0xa62b,
+ 0xa640, 0xa673,
+ 0xa67c, 0xa697,
+ 0xa6a0, 0xa6f7,
+ 0xa700, 0xa78e,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa82b,
+ 0xa830, 0xa839,
+ 0xa840, 0xa877,
+ 0xa880, 0xa8c4,
+ 0xa8ce, 0xa8d9,
+ 0xa8e0, 0xa8fb,
+ 0xa900, 0xa953,
+ 0xa95f, 0xa97c,
+ 0xa980, 0xa9cd,
+ 0xa9cf, 0xa9d9,
+ 0xa9de, 0xa9df,
+ 0xaa00, 0xaa36,
+ 0xaa40, 0xaa4d,
+ 0xaa50, 0xaa59,
+ 0xaa5c, 0xaa7b,
+ 0xaa80, 0xaac2,
+ 0xaadb, 0xaadf,
+ 0xab01, 0xab06,
+ 0xab09, 0xab0e,
+ 0xab11, 0xab16,
+ 0xab20, 0xab26,
+ 0xab28, 0xab2e,
+ 0xabc0, 0xabed,
+ 0xabf0, 0xabf9,
+ 0xac00, 0xd7a3,
+ 0xd7b0, 0xd7c6,
+ 0xd7cb, 0xd7fb,
+ 0xe000, 0xfa2d,
+ 0xfa30, 0xfa6d,
+ 0xfa70, 0xfad9,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xfb1d, 0xfb36,
+ 0xfb38, 0xfb3c,
+ 0xfb3e, 0xfb3e,
+ 0xfb40, 0xfb41,
+ 0xfb43, 0xfb44,
+ 0xfb46, 0xfbc1,
+ 0xfbd3, 0xfd3f,
+ 0xfd50, 0xfd8f,
+ 0xfd92, 0xfdc7,
+ 0xfdf0, 0xfdfd,
+ 0xfe00, 0xfe19,
+ 0xfe20, 0xfe26,
+ 0xfe30, 0xfe52,
+ 0xfe54, 0xfe66,
+ 0xfe68, 0xfe6b,
+ 0xfe70, 0xfe74,
+ 0xfe76, 0xfefc,
+ 0xfeff, 0xfeff,
+ 0xff01, 0xffbe,
+ 0xffc2, 0xffc7,
+ 0xffca, 0xffcf,
+ 0xffd2, 0xffd7,
+ 0xffda, 0xffdc,
+ 0xffe0, 0xffe6,
+ 0xffe8, 0xffee,
+ 0xfff9, 0xfffd,
+ 0x10000, 0x1000b,
+ 0x1000d, 0x10026,
+ 0x10028, 0x1003a,
+ 0x1003c, 0x1003d,
+ 0x1003f, 0x1004d,
+ 0x10050, 0x1005d,
+ 0x10080, 0x100fa,
+ 0x10100, 0x10102,
+ 0x10107, 0x10133,
+ 0x10137, 0x1018a,
+ 0x10190, 0x1019b,
+ 0x101d0, 0x101fd,
+ 0x10280, 0x1029c,
+ 0x102a0, 0x102d0,
+ 0x10300, 0x1031e,
+ 0x10320, 0x10323,
+ 0x10330, 0x1034a,
+ 0x10380, 0x1039d,
+ 0x1039f, 0x103c3,
+ 0x103c8, 0x103d5,
+ 0x10400, 0x1049d,
+ 0x104a0, 0x104a9,
+ 0x10800, 0x10805,
+ 0x10808, 0x10808,
+ 0x1080a, 0x10835,
+ 0x10837, 0x10838,
+ 0x1083c, 0x1083c,
+ 0x1083f, 0x10855,
+ 0x10857, 0x1085f,
+ 0x10900, 0x1091b,
+ 0x1091f, 0x10939,
+ 0x1093f, 0x1093f,
+ 0x10a00, 0x10a03,
+ 0x10a05, 0x10a06,
+ 0x10a0c, 0x10a13,
+ 0x10a15, 0x10a17,
+ 0x10a19, 0x10a33,
+ 0x10a38, 0x10a3a,
+ 0x10a3f, 0x10a47,
+ 0x10a50, 0x10a58,
+ 0x10a60, 0x10a7f,
+ 0x10b00, 0x10b35,
+ 0x10b39, 0x10b55,
+ 0x10b58, 0x10b72,
+ 0x10b78, 0x10b7f,
+ 0x10c00, 0x10c48,
+ 0x10e60, 0x10e7e,
+ 0x11000, 0x1104d,
+ 0x11052, 0x1106f,
+ 0x11080, 0x110c1,
+ 0x12000, 0x1236e,
+ 0x12400, 0x12462,
+ 0x12470, 0x12473,
+ 0x13000, 0x1342e,
+ 0x16800, 0x16a38,
+ 0x1b000, 0x1b001,
+ 0x1d000, 0x1d0f5,
+ 0x1d100, 0x1d126,
+ 0x1d129, 0x1d1dd,
+ 0x1d200, 0x1d245,
+ 0x1d300, 0x1d356,
+ 0x1d360, 0x1d371,
+ 0x1d400, 0x1d454,
+ 0x1d456, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d51e, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d552, 0x1d6a5,
+ 0x1d6a8, 0x1d7cb,
+ 0x1d7ce, 0x1d7ff,
+ 0x1f000, 0x1f02b,
+ 0x1f030, 0x1f093,
+ 0x1f0a0, 0x1f0ae,
+ 0x1f0b1, 0x1f0be,
+ 0x1f0c1, 0x1f0cf,
+ 0x1f0d1, 0x1f0df,
+ 0x1f100, 0x1f10a,
+ 0x1f110, 0x1f12e,
+ 0x1f130, 0x1f169,
+ 0x1f170, 0x1f19a,
+ 0x1f1e6, 0x1f202,
+ 0x1f210, 0x1f23a,
+ 0x1f240, 0x1f248,
+ 0x1f250, 0x1f251,
+ 0x1f300, 0x1f320,
+ 0x1f330, 0x1f335,
+ 0x1f337, 0x1f37c,
+ 0x1f380, 0x1f393,
+ 0x1f3a0, 0x1f3c4,
+ 0x1f3c6, 0x1f3ca,
+ 0x1f3e0, 0x1f3f0,
+ 0x1f400, 0x1f43e,
+ 0x1f440, 0x1f440,
+ 0x1f442, 0x1f4f7,
+ 0x1f4f9, 0x1f4fc,
+ 0x1f500, 0x1f53d,
+ 0x1f550, 0x1f567,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
+ 0x1f645, 0x1f64f,
+ 0x1f680, 0x1f6c5,
+ 0x1f700, 0x1f773,
+ 0x20000, 0x2a6d6,
+ 0x2a700, 0x2b734,
+ 0x2b740, 0x2b81d,
+ 0x2f800, 0x2fa1d,
+ 0xe0001, 0xe0001,
+ 0xe0020, 0xe007f,
+ 0xe0100, 0xe01ef,
+ 0xf0000, 0xffffd,
+ 0x100000, 0x10fffd,
+}; /* CR_Graph */
+
+/* 'Lower': [[:Lower:]] */
+#define CR_Lower CR_Lowercase
+
+/* 'Print': [[:Print:]] */
+static const OnigCodePoint CR_Print[] = {
+ 503,
+ 0x0020, 0x007e,
+ 0x00a0, 0x0377,
0x037a, 0x037e,
0x0384, 0x038a,
0x038c, 0x038c,
@@ -23582,11 +20374,10 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0559, 0x055f,
0x0561, 0x0587,
0x0589, 0x058a,
- 0x058f, 0x058f,
0x0591, 0x05c7,
0x05d0, 0x05ea,
0x05f0, 0x05f4,
- 0x0600, 0x0604,
+ 0x0600, 0x0603,
0x0606, 0x061b,
0x061e, 0x070d,
0x070f, 0x074a,
@@ -23596,9 +20387,6 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0830, 0x083e,
0x0840, 0x085b,
0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0x0900, 0x0977,
0x0979, 0x097f,
0x0981, 0x0983,
@@ -23643,7 +20431,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0acb, 0x0acd,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -23743,7 +20532,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f47,
0x0f49, 0x0f6c,
0x0f71, 0x0f97,
@@ -23751,9 +20540,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0fbe, 0x0fcc,
0x0fce, 0x0fda,
0x1000, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
+ 0x10d0, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -23806,12 +20594,13 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1aa0, 0x1aad,
0x1b00, 0x1b4b,
0x1b50, 0x1b7c,
- 0x1b80, 0x1bf3,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
0x1bfc, 0x1c37,
0x1c3b, 0x1c49,
0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd0, 0x1cf6,
+ 0x1cd0, 0x1cf2,
0x1d00, 0x1de6,
0x1dfc, 0x1f15,
0x1f18, 0x1f1d,
@@ -23829,7 +20618,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1fdd, 0x1fef,
0x1ff2, 0x1ff4,
0x1ff6, 0x1ffe,
- 0x2000, 0x2064,
+ 0x2000, 0x2027,
+ 0x202a, 0x2064,
0x206a, 0x2071,
0x2074, 0x208e,
0x2090, 0x209c,
@@ -23840,15 +20630,15 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x2400, 0x2426,
0x2440, 0x244a,
0x2460, 0x26ff,
- 0x2701, 0x2b4c,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x2b4c,
0x2b50, 0x2b59,
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
- 0x2c60, 0x2cf3,
+ 0x2c60, 0x2cf1,
0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d70,
0x2d7f, 0x2d96,
0x2da0, 0x2da6,
@@ -23859,7 +20649,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
- 0x2de0, 0x2e3b,
+ 0x2de0, 0x2e31,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -23874,16 +20664,17 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x31f0, 0x321e,
0x3220, 0x32fe,
0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
+ 0x4dc0, 0x9fcb,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
- 0xa640, 0xa697,
- 0xa69f, 0xa6f7,
+ 0xa640, 0xa673,
+ 0xa67c, 0xa697,
+ 0xa6a0, 0xa6f7,
0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa82b,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
0xa880, 0xa8c4,
@@ -23899,7 +20690,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0xaa50, 0xaa59,
0xaa5c, 0xaa7b,
0xaa80, 0xaac2,
- 0xaadb, 0xaaf6,
+ 0xaadb, 0xaadf,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -23910,7 +20701,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xd800, 0xfa6d,
+ 0xe000, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -23923,7 +20715,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0xfbd3, 0xfd3f,
0xfd50, 0xfd8f,
0xfd92, 0xfdc7,
- 0xfdd0, 0xfdfd,
+ 0xfdf0, 0xfdfd,
0xfe00, 0xfe19,
0xfe20, 0xfe26,
0xfe30, 0xfe52,
@@ -23939,7 +20731,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0xffda, 0xffdc,
0xffe0, 0xffe6,
0xffe8, 0xffee,
- 0xfff9, 0x1000b,
+ 0xfff9, 0xfffd,
+ 0x10000, 0x1000b,
0x1000d, 0x10026,
0x10028, 0x1003a,
0x1003c, 0x1003d,
@@ -23971,8 +20764,6 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x10900, 0x1091b,
0x1091f, 0x10939,
0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a03,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
@@ -23991,22 +20782,11 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x11000, 0x1104d,
0x11052, 0x1106f,
0x11080, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x12470, 0x12473,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
0x1b000, 0x1b001,
0x1d000, 0x1d0f5,
0x1d100, 0x1d126,
@@ -24035,40 +20815,6 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1d552, 0x1d6a5,
0x1d6a8, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
@@ -24077,7 +20823,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1f0d1, 0x1f0df,
0x1f100, 0x1f10a,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -24095,1368 +20841,1083 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
- 0x1fffe, 0x2a6d6,
+ 0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2f800, 0x2fa1d,
- 0x2fffe, 0x2ffff,
- 0x3fffe, 0x3ffff,
- 0x4fffe, 0x4ffff,
- 0x5fffe, 0x5ffff,
- 0x6fffe, 0x6ffff,
- 0x7fffe, 0x7ffff,
- 0x8fffe, 0x8ffff,
- 0x9fffe, 0x9ffff,
- 0xafffe, 0xaffff,
- 0xbfffe, 0xbffff,
- 0xcfffe, 0xcffff,
- 0xdfffe, 0xdffff,
0xe0001, 0xe0001,
0xe0020, 0xe007f,
0xe0100, 0xe01ef,
- 0xefffe, 0x10ffff,
-}; /* CR_Age_6_1 */
-
-/* 'In_Basic_Latin': Block */
-#define CR_In_Basic_Latin CR_ASCII
-
-/* 'In_Latin_1_Supplement': Block */
-static const OnigCodePoint CR_In_Latin_1_Supplement[] = {
- 1,
- 0x0080, 0x00ff,
-}; /* CR_In_Latin_1_Supplement */
-
-/* 'In_Latin_Extended_A': Block */
-static const OnigCodePoint CR_In_Latin_Extended_A[] = {
- 1,
- 0x0100, 0x017f,
-}; /* CR_In_Latin_Extended_A */
-
-/* 'In_Latin_Extended_B': Block */
-static const OnigCodePoint CR_In_Latin_Extended_B[] = {
- 1,
- 0x0180, 0x024f,
-}; /* CR_In_Latin_Extended_B */
-
-/* 'In_IPA_Extensions': Block */
-static const OnigCodePoint CR_In_IPA_Extensions[] = {
- 1,
- 0x0250, 0x02af,
-}; /* CR_In_IPA_Extensions */
-
-/* 'In_Spacing_Modifier_Letters': Block */
-static const OnigCodePoint CR_In_Spacing_Modifier_Letters[] = {
- 1,
- 0x02b0, 0x02ff,
-}; /* CR_In_Spacing_Modifier_Letters */
-
-/* 'In_Combining_Diacritical_Marks': Block */
-static const OnigCodePoint CR_In_Combining_Diacritical_Marks[] = {
- 1,
- 0x0300, 0x036f,
-}; /* CR_In_Combining_Diacritical_Marks */
-
-/* 'In_Greek_and_Coptic': Block */
-static const OnigCodePoint CR_In_Greek_and_Coptic[] = {
- 1,
- 0x0370, 0x03ff,
-}; /* CR_In_Greek_and_Coptic */
-
-/* 'In_Cyrillic': Block */
-static const OnigCodePoint CR_In_Cyrillic[] = {
- 1,
- 0x0400, 0x04ff,
-}; /* CR_In_Cyrillic */
-
-/* 'In_Cyrillic_Supplement': Block */
-static const OnigCodePoint CR_In_Cyrillic_Supplement[] = {
- 1,
- 0x0500, 0x052f,
-}; /* CR_In_Cyrillic_Supplement */
-
-/* 'In_Armenian': Block */
-static const OnigCodePoint CR_In_Armenian[] = {
- 1,
- 0x0530, 0x058f,
-}; /* CR_In_Armenian */
-
-/* 'In_Hebrew': Block */
-static const OnigCodePoint CR_In_Hebrew[] = {
- 1,
- 0x0590, 0x05ff,
-}; /* CR_In_Hebrew */
-
-/* 'In_Arabic': Block */
-static const OnigCodePoint CR_In_Arabic[] = {
- 1,
- 0x0600, 0x06ff,
-}; /* CR_In_Arabic */
-
-/* 'In_Syriac': Block */
-static const OnigCodePoint CR_In_Syriac[] = {
- 1,
- 0x0700, 0x074f,
-}; /* CR_In_Syriac */
-
-/* 'In_Arabic_Supplement': Block */
-static const OnigCodePoint CR_In_Arabic_Supplement[] = {
- 1,
- 0x0750, 0x077f,
-}; /* CR_In_Arabic_Supplement */
-
-/* 'In_Thaana': Block */
-static const OnigCodePoint CR_In_Thaana[] = {
- 1,
- 0x0780, 0x07bf,
-}; /* CR_In_Thaana */
-
-/* 'In_NKo': Block */
-static const OnigCodePoint CR_In_NKo[] = {
- 1,
- 0x07c0, 0x07ff,
-}; /* CR_In_NKo */
-
-/* 'In_Samaritan': Block */
-static const OnigCodePoint CR_In_Samaritan[] = {
- 1,
- 0x0800, 0x083f,
-}; /* CR_In_Samaritan */
-
-/* 'In_Mandaic': Block */
-static const OnigCodePoint CR_In_Mandaic[] = {
- 1,
- 0x0840, 0x085f,
-}; /* CR_In_Mandaic */
-
-/* 'In_Arabic_Extended_A': Block */
-static const OnigCodePoint CR_In_Arabic_Extended_A[] = {
- 1,
- 0x08a0, 0x08ff,
-}; /* CR_In_Arabic_Extended_A */
-
-/* 'In_Devanagari': Block */
-static const OnigCodePoint CR_In_Devanagari[] = {
- 1,
- 0x0900, 0x097f,
-}; /* CR_In_Devanagari */
-
-/* 'In_Bengali': Block */
-static const OnigCodePoint CR_In_Bengali[] = {
- 1,
- 0x0980, 0x09ff,
-}; /* CR_In_Bengali */
-
-/* 'In_Gurmukhi': Block */
-static const OnigCodePoint CR_In_Gurmukhi[] = {
- 1,
- 0x0a00, 0x0a7f,
-}; /* CR_In_Gurmukhi */
-
-/* 'In_Gujarati': Block */
-static const OnigCodePoint CR_In_Gujarati[] = {
- 1,
- 0x0a80, 0x0aff,
-}; /* CR_In_Gujarati */
-
-/* 'In_Oriya': Block */
-static const OnigCodePoint CR_In_Oriya[] = {
- 1,
- 0x0b00, 0x0b7f,
-}; /* CR_In_Oriya */
-
-/* 'In_Tamil': Block */
-static const OnigCodePoint CR_In_Tamil[] = {
- 1,
- 0x0b80, 0x0bff,
-}; /* CR_In_Tamil */
-
-/* 'In_Telugu': Block */
-static const OnigCodePoint CR_In_Telugu[] = {
- 1,
- 0x0c00, 0x0c7f,
-}; /* CR_In_Telugu */
-
-/* 'In_Kannada': Block */
-static const OnigCodePoint CR_In_Kannada[] = {
- 1,
- 0x0c80, 0x0cff,
-}; /* CR_In_Kannada */
-
-/* 'In_Malayalam': Block */
-static const OnigCodePoint CR_In_Malayalam[] = {
- 1,
- 0x0d00, 0x0d7f,
-}; /* CR_In_Malayalam */
-
-/* 'In_Sinhala': Block */
-static const OnigCodePoint CR_In_Sinhala[] = {
- 1,
- 0x0d80, 0x0dff,
-}; /* CR_In_Sinhala */
-
-/* 'In_Thai': Block */
-static const OnigCodePoint CR_In_Thai[] = {
- 1,
- 0x0e00, 0x0e7f,
-}; /* CR_In_Thai */
-
-/* 'In_Lao': Block */
-static const OnigCodePoint CR_In_Lao[] = {
- 1,
- 0x0e80, 0x0eff,
-}; /* CR_In_Lao */
-
-/* 'In_Tibetan': Block */
-static const OnigCodePoint CR_In_Tibetan[] = {
- 1,
- 0x0f00, 0x0fff,
-}; /* CR_In_Tibetan */
-
-/* 'In_Myanmar': Block */
-static const OnigCodePoint CR_In_Myanmar[] = {
- 1,
- 0x1000, 0x109f,
-}; /* CR_In_Myanmar */
-
-/* 'In_Georgian': Block */
-static const OnigCodePoint CR_In_Georgian[] = {
- 1,
- 0x10a0, 0x10ff,
-}; /* CR_In_Georgian */
-
-/* 'In_Hangul_Jamo': Block */
-static const OnigCodePoint CR_In_Hangul_Jamo[] = {
- 1,
- 0x1100, 0x11ff,
-}; /* CR_In_Hangul_Jamo */
-
-/* 'In_Ethiopic': Block */
-static const OnigCodePoint CR_In_Ethiopic[] = {
- 1,
- 0x1200, 0x137f,
-}; /* CR_In_Ethiopic */
-
-/* 'In_Ethiopic_Supplement': Block */
-static const OnigCodePoint CR_In_Ethiopic_Supplement[] = {
- 1,
- 0x1380, 0x139f,
-}; /* CR_In_Ethiopic_Supplement */
-
-/* 'In_Cherokee': Block */
-static const OnigCodePoint CR_In_Cherokee[] = {
- 1,
- 0x13a0, 0x13ff,
-}; /* CR_In_Cherokee */
-
-/* 'In_Unified_Canadian_Aboriginal_Syllabics': Block */
-static const OnigCodePoint CR_In_Unified_Canadian_Aboriginal_Syllabics[] = {
- 1,
- 0x1400, 0x167f,
-}; /* CR_In_Unified_Canadian_Aboriginal_Syllabics */
-
-/* 'In_Ogham': Block */
-static const OnigCodePoint CR_In_Ogham[] = {
- 1,
- 0x1680, 0x169f,
-}; /* CR_In_Ogham */
-
-/* 'In_Runic': Block */
-static const OnigCodePoint CR_In_Runic[] = {
- 1,
- 0x16a0, 0x16ff,
-}; /* CR_In_Runic */
-
-/* 'In_Tagalog': Block */
-static const OnigCodePoint CR_In_Tagalog[] = {
- 1,
- 0x1700, 0x171f,
-}; /* CR_In_Tagalog */
-
-/* 'In_Hanunoo': Block */
-static const OnigCodePoint CR_In_Hanunoo[] = {
- 1,
- 0x1720, 0x173f,
-}; /* CR_In_Hanunoo */
-
-/* 'In_Buhid': Block */
-static const OnigCodePoint CR_In_Buhid[] = {
- 1,
- 0x1740, 0x175f,
-}; /* CR_In_Buhid */
-
-/* 'In_Tagbanwa': Block */
-static const OnigCodePoint CR_In_Tagbanwa[] = {
- 1,
- 0x1760, 0x177f,
-}; /* CR_In_Tagbanwa */
-
-/* 'In_Khmer': Block */
-static const OnigCodePoint CR_In_Khmer[] = {
- 1,
- 0x1780, 0x17ff,
-}; /* CR_In_Khmer */
-
-/* 'In_Mongolian': Block */
-static const OnigCodePoint CR_In_Mongolian[] = {
- 1,
- 0x1800, 0x18af,
-}; /* CR_In_Mongolian */
-
-/* 'In_Unified_Canadian_Aboriginal_Syllabics_Extended': Block */
-static const OnigCodePoint CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended[] = {
- 1,
- 0x18b0, 0x18ff,
-}; /* CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended */
-
-/* 'In_Limbu': Block */
-static const OnigCodePoint CR_In_Limbu[] = {
- 1,
- 0x1900, 0x194f,
-}; /* CR_In_Limbu */
-
-/* 'In_Tai_Le': Block */
-static const OnigCodePoint CR_In_Tai_Le[] = {
- 1,
- 0x1950, 0x197f,
-}; /* CR_In_Tai_Le */
-
-/* 'In_New_Tai_Lue': Block */
-static const OnigCodePoint CR_In_New_Tai_Lue[] = {
- 1,
- 0x1980, 0x19df,
-}; /* CR_In_New_Tai_Lue */
-
-/* 'In_Khmer_Symbols': Block */
-static const OnigCodePoint CR_In_Khmer_Symbols[] = {
- 1,
- 0x19e0, 0x19ff,
-}; /* CR_In_Khmer_Symbols */
-
-/* 'In_Buginese': Block */
-static const OnigCodePoint CR_In_Buginese[] = {
- 1,
- 0x1a00, 0x1a1f,
-}; /* CR_In_Buginese */
-
-/* 'In_Tai_Tham': Block */
-static const OnigCodePoint CR_In_Tai_Tham[] = {
- 1,
- 0x1a20, 0x1aaf,
-}; /* CR_In_Tai_Tham */
-
-/* 'In_Balinese': Block */
-static const OnigCodePoint CR_In_Balinese[] = {
- 1,
- 0x1b00, 0x1b7f,
-}; /* CR_In_Balinese */
-
-/* 'In_Sundanese': Block */
-static const OnigCodePoint CR_In_Sundanese[] = {
- 1,
- 0x1b80, 0x1bbf,
-}; /* CR_In_Sundanese */
-
-/* 'In_Batak': Block */
-static const OnigCodePoint CR_In_Batak[] = {
- 1,
- 0x1bc0, 0x1bff,
-}; /* CR_In_Batak */
-
-/* 'In_Lepcha': Block */
-static const OnigCodePoint CR_In_Lepcha[] = {
- 1,
- 0x1c00, 0x1c4f,
-}; /* CR_In_Lepcha */
-
-/* 'In_Ol_Chiki': Block */
-#define CR_In_Ol_Chiki CR_Ol_Chiki
-
-/* 'In_Sundanese_Supplement': Block */
-static const OnigCodePoint CR_In_Sundanese_Supplement[] = {
- 1,
- 0x1cc0, 0x1ccf,
-}; /* CR_In_Sundanese_Supplement */
-
-/* 'In_Vedic_Extensions': Block */
-static const OnigCodePoint CR_In_Vedic_Extensions[] = {
- 1,
- 0x1cd0, 0x1cff,
-}; /* CR_In_Vedic_Extensions */
-
-/* 'In_Phonetic_Extensions': Block */
-static const OnigCodePoint CR_In_Phonetic_Extensions[] = {
- 1,
- 0x1d00, 0x1d7f,
-}; /* CR_In_Phonetic_Extensions */
-
-/* 'In_Phonetic_Extensions_Supplement': Block */
-static const OnigCodePoint CR_In_Phonetic_Extensions_Supplement[] = {
- 1,
- 0x1d80, 0x1dbf,
-}; /* CR_In_Phonetic_Extensions_Supplement */
-
-/* 'In_Combining_Diacritical_Marks_Supplement': Block */
-static const OnigCodePoint CR_In_Combining_Diacritical_Marks_Supplement[] = {
- 1,
- 0x1dc0, 0x1dff,
-}; /* CR_In_Combining_Diacritical_Marks_Supplement */
-
-/* 'In_Latin_Extended_Additional': Block */
-static const OnigCodePoint CR_In_Latin_Extended_Additional[] = {
- 1,
- 0x1e00, 0x1eff,
-}; /* CR_In_Latin_Extended_Additional */
-
-/* 'In_Greek_Extended': Block */
-static const OnigCodePoint CR_In_Greek_Extended[] = {
- 1,
- 0x1f00, 0x1fff,
-}; /* CR_In_Greek_Extended */
-
-/* 'In_General_Punctuation': Block */
-static const OnigCodePoint CR_In_General_Punctuation[] = {
- 1,
- 0x2000, 0x206f,
-}; /* CR_In_General_Punctuation */
-
-/* 'In_Superscripts_and_Subscripts': Block */
-static const OnigCodePoint CR_In_Superscripts_and_Subscripts[] = {
- 1,
- 0x2070, 0x209f,
-}; /* CR_In_Superscripts_and_Subscripts */
-
-/* 'In_Currency_Symbols': Block */
-static const OnigCodePoint CR_In_Currency_Symbols[] = {
- 1,
- 0x20a0, 0x20cf,
-}; /* CR_In_Currency_Symbols */
-
-/* 'In_Combining_Diacritical_Marks_for_Symbols': Block */
-static const OnigCodePoint CR_In_Combining_Diacritical_Marks_for_Symbols[] = {
- 1,
- 0x20d0, 0x20ff,
-}; /* CR_In_Combining_Diacritical_Marks_for_Symbols */
-
-/* 'In_Letterlike_Symbols': Block */
-static const OnigCodePoint CR_In_Letterlike_Symbols[] = {
- 1,
- 0x2100, 0x214f,
-}; /* CR_In_Letterlike_Symbols */
-
-/* 'In_Number_Forms': Block */
-static const OnigCodePoint CR_In_Number_Forms[] = {
- 1,
- 0x2150, 0x218f,
-}; /* CR_In_Number_Forms */
-
-/* 'In_Arrows': Block */
-static const OnigCodePoint CR_In_Arrows[] = {
- 1,
- 0x2190, 0x21ff,
-}; /* CR_In_Arrows */
-
-/* 'In_Mathematical_Operators': Block */
-static const OnigCodePoint CR_In_Mathematical_Operators[] = {
- 1,
- 0x2200, 0x22ff,
-}; /* CR_In_Mathematical_Operators */
-
-/* 'In_Miscellaneous_Technical': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Technical[] = {
- 1,
- 0x2300, 0x23ff,
-}; /* CR_In_Miscellaneous_Technical */
-
-/* 'In_Control_Pictures': Block */
-static const OnigCodePoint CR_In_Control_Pictures[] = {
- 1,
- 0x2400, 0x243f,
-}; /* CR_In_Control_Pictures */
-
-/* 'In_Optical_Character_Recognition': Block */
-static const OnigCodePoint CR_In_Optical_Character_Recognition[] = {
- 1,
- 0x2440, 0x245f,
-}; /* CR_In_Optical_Character_Recognition */
-
-/* 'In_Enclosed_Alphanumerics': Block */
-static const OnigCodePoint CR_In_Enclosed_Alphanumerics[] = {
- 1,
- 0x2460, 0x24ff,
-}; /* CR_In_Enclosed_Alphanumerics */
-
-/* 'In_Box_Drawing': Block */
-static const OnigCodePoint CR_In_Box_Drawing[] = {
- 1,
- 0x2500, 0x257f,
-}; /* CR_In_Box_Drawing */
-
-/* 'In_Block_Elements': Block */
-static const OnigCodePoint CR_In_Block_Elements[] = {
- 1,
- 0x2580, 0x259f,
-}; /* CR_In_Block_Elements */
-
-/* 'In_Geometric_Shapes': Block */
-static const OnigCodePoint CR_In_Geometric_Shapes[] = {
- 1,
- 0x25a0, 0x25ff,
-}; /* CR_In_Geometric_Shapes */
-
-/* 'In_Miscellaneous_Symbols': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Symbols[] = {
- 1,
- 0x2600, 0x26ff,
-}; /* CR_In_Miscellaneous_Symbols */
-
-/* 'In_Dingbats': Block */
-static const OnigCodePoint CR_In_Dingbats[] = {
- 1,
- 0x2700, 0x27bf,
-}; /* CR_In_Dingbats */
-
-/* 'In_Miscellaneous_Mathematical_Symbols_A': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Mathematical_Symbols_A[] = {
- 1,
- 0x27c0, 0x27ef,
-}; /* CR_In_Miscellaneous_Mathematical_Symbols_A */
-
-/* 'In_Supplemental_Arrows_A': Block */
-static const OnigCodePoint CR_In_Supplemental_Arrows_A[] = {
- 1,
- 0x27f0, 0x27ff,
-}; /* CR_In_Supplemental_Arrows_A */
-
-/* 'In_Braille_Patterns': Block */
-#define CR_In_Braille_Patterns CR_Braille
-
-/* 'In_Supplemental_Arrows_B': Block */
-static const OnigCodePoint CR_In_Supplemental_Arrows_B[] = {
- 1,
- 0x2900, 0x297f,
-}; /* CR_In_Supplemental_Arrows_B */
-
-/* 'In_Miscellaneous_Mathematical_Symbols_B': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Mathematical_Symbols_B[] = {
- 1,
- 0x2980, 0x29ff,
-}; /* CR_In_Miscellaneous_Mathematical_Symbols_B */
-
-/* 'In_Supplemental_Mathematical_Operators': Block */
-static const OnigCodePoint CR_In_Supplemental_Mathematical_Operators[] = {
- 1,
- 0x2a00, 0x2aff,
-}; /* CR_In_Supplemental_Mathematical_Operators */
-
-/* 'In_Miscellaneous_Symbols_and_Arrows': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Symbols_and_Arrows[] = {
- 1,
- 0x2b00, 0x2bff,
-}; /* CR_In_Miscellaneous_Symbols_and_Arrows */
-
-/* 'In_Glagolitic': Block */
-static const OnigCodePoint CR_In_Glagolitic[] = {
- 1,
- 0x2c00, 0x2c5f,
-}; /* CR_In_Glagolitic */
-
-/* 'In_Latin_Extended_C': Block */
-static const OnigCodePoint CR_In_Latin_Extended_C[] = {
- 1,
- 0x2c60, 0x2c7f,
-}; /* CR_In_Latin_Extended_C */
+ 0xf0000, 0xffffd,
+ 0x100000, 0x10fffd,
+}; /* CR_Print */
-/* 'In_Coptic': Block */
-static const OnigCodePoint CR_In_Coptic[] = {
- 1,
- 0x2c80, 0x2cff,
-}; /* CR_In_Coptic */
+/* 'Punct': [[:Punct:]] */
+#define CR_Punct CR_P
-/* 'In_Georgian_Supplement': Block */
-static const OnigCodePoint CR_In_Georgian_Supplement[] = {
- 1,
- 0x2d00, 0x2d2f,
-}; /* CR_In_Georgian_Supplement */
+/* 'Space': [[:Space:]] */
+#define CR_Space CR_White_Space
-/* 'In_Tifinagh': Block */
-static const OnigCodePoint CR_In_Tifinagh[] = {
- 1,
- 0x2d30, 0x2d7f,
-}; /* CR_In_Tifinagh */
+/* 'Upper': [[:Upper:]] */
+#define CR_Upper CR_Uppercase
-/* 'In_Ethiopic_Extended': Block */
-static const OnigCodePoint CR_In_Ethiopic_Extended[] = {
- 1,
- 0x2d80, 0x2ddf,
-}; /* CR_In_Ethiopic_Extended */
+/* 'XDigit': [[:XDigit:]] */
+#define CR_XDigit CR_ASCII_Hex_Digit
-/* 'In_Cyrillic_Extended_A': Block */
-static const OnigCodePoint CR_In_Cyrillic_Extended_A[] = {
- 1,
+/* 'Word': [[:Word:]] */
+static const OnigCodePoint CR_Word[] = {
+ 514,
+ 0x0030, 0x0039,
+ 0x0041, 0x005a,
+ 0x005f, 0x005f,
+ 0x0061, 0x007a,
+ 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
+ 0x00c0, 0x00d6,
+ 0x00d8, 0x00f6,
+ 0x00f8, 0x02c1,
+ 0x02c6, 0x02d1,
+ 0x02e0, 0x02e4,
+ 0x02ec, 0x02ec,
+ 0x02ee, 0x02ee,
+ 0x0300, 0x0374,
+ 0x0376, 0x0377,
+ 0x037a, 0x037d,
+ 0x0386, 0x0386,
+ 0x0388, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x03a1,
+ 0x03a3, 0x03f5,
+ 0x03f7, 0x0481,
+ 0x0483, 0x0527,
+ 0x0531, 0x0556,
+ 0x0559, 0x0559,
+ 0x0561, 0x0587,
+ 0x0591, 0x05bd,
+ 0x05bf, 0x05bf,
+ 0x05c1, 0x05c2,
+ 0x05c4, 0x05c5,
+ 0x05c7, 0x05c7,
+ 0x05d0, 0x05ea,
+ 0x05f0, 0x05f2,
+ 0x0610, 0x061a,
+ 0x0620, 0x0669,
+ 0x066e, 0x06d3,
+ 0x06d5, 0x06dc,
+ 0x06df, 0x06e8,
+ 0x06ea, 0x06fc,
+ 0x06ff, 0x06ff,
+ 0x0710, 0x074a,
+ 0x074d, 0x07b1,
+ 0x07c0, 0x07f5,
+ 0x07fa, 0x07fa,
+ 0x0800, 0x082d,
+ 0x0840, 0x085b,
+ 0x0900, 0x0963,
+ 0x0966, 0x096f,
+ 0x0971, 0x0977,
+ 0x0979, 0x097f,
+ 0x0981, 0x0983,
+ 0x0985, 0x098c,
+ 0x098f, 0x0990,
+ 0x0993, 0x09a8,
+ 0x09aa, 0x09b0,
+ 0x09b2, 0x09b2,
+ 0x09b6, 0x09b9,
+ 0x09bc, 0x09c4,
+ 0x09c7, 0x09c8,
+ 0x09cb, 0x09ce,
+ 0x09d7, 0x09d7,
+ 0x09dc, 0x09dd,
+ 0x09df, 0x09e3,
+ 0x09e6, 0x09f1,
+ 0x0a01, 0x0a03,
+ 0x0a05, 0x0a0a,
+ 0x0a0f, 0x0a10,
+ 0x0a13, 0x0a28,
+ 0x0a2a, 0x0a30,
+ 0x0a32, 0x0a33,
+ 0x0a35, 0x0a36,
+ 0x0a38, 0x0a39,
+ 0x0a3c, 0x0a3c,
+ 0x0a3e, 0x0a42,
+ 0x0a47, 0x0a48,
+ 0x0a4b, 0x0a4d,
+ 0x0a51, 0x0a51,
+ 0x0a59, 0x0a5c,
+ 0x0a5e, 0x0a5e,
+ 0x0a66, 0x0a75,
+ 0x0a81, 0x0a83,
+ 0x0a85, 0x0a8d,
+ 0x0a8f, 0x0a91,
+ 0x0a93, 0x0aa8,
+ 0x0aaa, 0x0ab0,
+ 0x0ab2, 0x0ab3,
+ 0x0ab5, 0x0ab9,
+ 0x0abc, 0x0ac5,
+ 0x0ac7, 0x0ac9,
+ 0x0acb, 0x0acd,
+ 0x0ad0, 0x0ad0,
+ 0x0ae0, 0x0ae3,
+ 0x0ae6, 0x0aef,
+ 0x0b01, 0x0b03,
+ 0x0b05, 0x0b0c,
+ 0x0b0f, 0x0b10,
+ 0x0b13, 0x0b28,
+ 0x0b2a, 0x0b30,
+ 0x0b32, 0x0b33,
+ 0x0b35, 0x0b39,
+ 0x0b3c, 0x0b44,
+ 0x0b47, 0x0b48,
+ 0x0b4b, 0x0b4d,
+ 0x0b56, 0x0b57,
+ 0x0b5c, 0x0b5d,
+ 0x0b5f, 0x0b63,
+ 0x0b66, 0x0b6f,
+ 0x0b71, 0x0b71,
+ 0x0b82, 0x0b83,
+ 0x0b85, 0x0b8a,
+ 0x0b8e, 0x0b90,
+ 0x0b92, 0x0b95,
+ 0x0b99, 0x0b9a,
+ 0x0b9c, 0x0b9c,
+ 0x0b9e, 0x0b9f,
+ 0x0ba3, 0x0ba4,
+ 0x0ba8, 0x0baa,
+ 0x0bae, 0x0bb9,
+ 0x0bbe, 0x0bc2,
+ 0x0bc6, 0x0bc8,
+ 0x0bca, 0x0bcd,
+ 0x0bd0, 0x0bd0,
+ 0x0bd7, 0x0bd7,
+ 0x0be6, 0x0bef,
+ 0x0c01, 0x0c03,
+ 0x0c05, 0x0c0c,
+ 0x0c0e, 0x0c10,
+ 0x0c12, 0x0c28,
+ 0x0c2a, 0x0c33,
+ 0x0c35, 0x0c39,
+ 0x0c3d, 0x0c44,
+ 0x0c46, 0x0c48,
+ 0x0c4a, 0x0c4d,
+ 0x0c55, 0x0c56,
+ 0x0c58, 0x0c59,
+ 0x0c60, 0x0c63,
+ 0x0c66, 0x0c6f,
+ 0x0c82, 0x0c83,
+ 0x0c85, 0x0c8c,
+ 0x0c8e, 0x0c90,
+ 0x0c92, 0x0ca8,
+ 0x0caa, 0x0cb3,
+ 0x0cb5, 0x0cb9,
+ 0x0cbc, 0x0cc4,
+ 0x0cc6, 0x0cc8,
+ 0x0cca, 0x0ccd,
+ 0x0cd5, 0x0cd6,
+ 0x0cde, 0x0cde,
+ 0x0ce0, 0x0ce3,
+ 0x0ce6, 0x0cef,
+ 0x0cf1, 0x0cf2,
+ 0x0d02, 0x0d03,
+ 0x0d05, 0x0d0c,
+ 0x0d0e, 0x0d10,
+ 0x0d12, 0x0d3a,
+ 0x0d3d, 0x0d44,
+ 0x0d46, 0x0d48,
+ 0x0d4a, 0x0d4e,
+ 0x0d57, 0x0d57,
+ 0x0d60, 0x0d63,
+ 0x0d66, 0x0d6f,
+ 0x0d7a, 0x0d7f,
+ 0x0d82, 0x0d83,
+ 0x0d85, 0x0d96,
+ 0x0d9a, 0x0db1,
+ 0x0db3, 0x0dbb,
+ 0x0dbd, 0x0dbd,
+ 0x0dc0, 0x0dc6,
+ 0x0dca, 0x0dca,
+ 0x0dcf, 0x0dd4,
+ 0x0dd6, 0x0dd6,
+ 0x0dd8, 0x0ddf,
+ 0x0df2, 0x0df3,
+ 0x0e01, 0x0e3a,
+ 0x0e40, 0x0e4e,
+ 0x0e50, 0x0e59,
+ 0x0e81, 0x0e82,
+ 0x0e84, 0x0e84,
+ 0x0e87, 0x0e88,
+ 0x0e8a, 0x0e8a,
+ 0x0e8d, 0x0e8d,
+ 0x0e94, 0x0e97,
+ 0x0e99, 0x0e9f,
+ 0x0ea1, 0x0ea3,
+ 0x0ea5, 0x0ea5,
+ 0x0ea7, 0x0ea7,
+ 0x0eaa, 0x0eab,
+ 0x0ead, 0x0eb9,
+ 0x0ebb, 0x0ebd,
+ 0x0ec0, 0x0ec4,
+ 0x0ec6, 0x0ec6,
+ 0x0ec8, 0x0ecd,
+ 0x0ed0, 0x0ed9,
+ 0x0edc, 0x0edd,
+ 0x0f00, 0x0f00,
+ 0x0f18, 0x0f19,
+ 0x0f20, 0x0f29,
+ 0x0f35, 0x0f35,
+ 0x0f37, 0x0f37,
+ 0x0f39, 0x0f39,
+ 0x0f3e, 0x0f47,
+ 0x0f49, 0x0f6c,
+ 0x0f71, 0x0f84,
+ 0x0f86, 0x0f97,
+ 0x0f99, 0x0fbc,
+ 0x0fc6, 0x0fc6,
+ 0x1000, 0x1049,
+ 0x1050, 0x109d,
+ 0x10a0, 0x10c5,
+ 0x10d0, 0x10fa,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
+ 0x124a, 0x124d,
+ 0x1250, 0x1256,
+ 0x1258, 0x1258,
+ 0x125a, 0x125d,
+ 0x1260, 0x1288,
+ 0x128a, 0x128d,
+ 0x1290, 0x12b0,
+ 0x12b2, 0x12b5,
+ 0x12b8, 0x12be,
+ 0x12c0, 0x12c0,
+ 0x12c2, 0x12c5,
+ 0x12c8, 0x12d6,
+ 0x12d8, 0x1310,
+ 0x1312, 0x1315,
+ 0x1318, 0x135a,
+ 0x135d, 0x135f,
+ 0x1380, 0x138f,
+ 0x13a0, 0x13f4,
+ 0x1401, 0x166c,
+ 0x166f, 0x167f,
+ 0x1681, 0x169a,
+ 0x16a0, 0x16ea,
+ 0x16ee, 0x16f0,
+ 0x1700, 0x170c,
+ 0x170e, 0x1714,
+ 0x1720, 0x1734,
+ 0x1740, 0x1753,
+ 0x1760, 0x176c,
+ 0x176e, 0x1770,
+ 0x1772, 0x1773,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17d3,
+ 0x17d7, 0x17d7,
+ 0x17dc, 0x17dd,
+ 0x17e0, 0x17e9,
+ 0x180b, 0x180d,
+ 0x1810, 0x1819,
+ 0x1820, 0x1877,
+ 0x1880, 0x18aa,
+ 0x18b0, 0x18f5,
+ 0x1900, 0x191c,
+ 0x1920, 0x192b,
+ 0x1930, 0x193b,
+ 0x1946, 0x196d,
+ 0x1970, 0x1974,
+ 0x1980, 0x19ab,
+ 0x19b0, 0x19c9,
+ 0x19d0, 0x19d9,
+ 0x1a00, 0x1a1b,
+ 0x1a20, 0x1a5e,
+ 0x1a60, 0x1a7c,
+ 0x1a7f, 0x1a89,
+ 0x1a90, 0x1a99,
+ 0x1aa7, 0x1aa7,
+ 0x1b00, 0x1b4b,
+ 0x1b50, 0x1b59,
+ 0x1b6b, 0x1b73,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
+ 0x1c00, 0x1c37,
+ 0x1c40, 0x1c49,
+ 0x1c4d, 0x1c7d,
+ 0x1cd0, 0x1cd2,
+ 0x1cd4, 0x1cf2,
+ 0x1d00, 0x1de6,
+ 0x1dfc, 0x1f15,
+ 0x1f18, 0x1f1d,
+ 0x1f20, 0x1f45,
+ 0x1f48, 0x1f4d,
+ 0x1f50, 0x1f57,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f7d,
+ 0x1f80, 0x1fb4,
+ 0x1fb6, 0x1fbc,
+ 0x1fbe, 0x1fbe,
+ 0x1fc2, 0x1fc4,
+ 0x1fc6, 0x1fcc,
+ 0x1fd0, 0x1fd3,
+ 0x1fd6, 0x1fdb,
+ 0x1fe0, 0x1fec,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ffc,
+ 0x203f, 0x2040,
+ 0x2054, 0x2054,
+ 0x2071, 0x2071,
+ 0x207f, 0x207f,
+ 0x2090, 0x209c,
+ 0x20d0, 0x20f0,
+ 0x2102, 0x2102,
+ 0x2107, 0x2107,
+ 0x210a, 0x2113,
+ 0x2115, 0x2115,
+ 0x2119, 0x211d,
+ 0x2124, 0x2124,
+ 0x2126, 0x2126,
+ 0x2128, 0x2128,
+ 0x212a, 0x212d,
+ 0x212f, 0x2139,
+ 0x213c, 0x213f,
+ 0x2145, 0x2149,
+ 0x214e, 0x214e,
+ 0x2160, 0x2188,
+ 0x24b6, 0x24e9,
+ 0x2c00, 0x2c2e,
+ 0x2c30, 0x2c5e,
+ 0x2c60, 0x2ce4,
+ 0x2ceb, 0x2cf1,
+ 0x2d00, 0x2d25,
+ 0x2d30, 0x2d65,
+ 0x2d6f, 0x2d6f,
+ 0x2d7f, 0x2d96,
+ 0x2da0, 0x2da6,
+ 0x2da8, 0x2dae,
+ 0x2db0, 0x2db6,
+ 0x2db8, 0x2dbe,
+ 0x2dc0, 0x2dc6,
+ 0x2dc8, 0x2dce,
+ 0x2dd0, 0x2dd6,
+ 0x2dd8, 0x2dde,
0x2de0, 0x2dff,
-}; /* CR_In_Cyrillic_Extended_A */
-
-/* 'In_Supplemental_Punctuation': Block */
-static const OnigCodePoint CR_In_Supplemental_Punctuation[] = {
- 1,
- 0x2e00, 0x2e7f,
-}; /* CR_In_Supplemental_Punctuation */
-
-/* 'In_CJK_Radicals_Supplement': Block */
-static const OnigCodePoint CR_In_CJK_Radicals_Supplement[] = {
- 1,
- 0x2e80, 0x2eff,
-}; /* CR_In_CJK_Radicals_Supplement */
-
-/* 'In_Kangxi_Radicals': Block */
-static const OnigCodePoint CR_In_Kangxi_Radicals[] = {
- 1,
- 0x2f00, 0x2fdf,
-}; /* CR_In_Kangxi_Radicals */
-
-/* 'In_Ideographic_Description_Characters': Block */
-static const OnigCodePoint CR_In_Ideographic_Description_Characters[] = {
- 1,
- 0x2ff0, 0x2fff,
-}; /* CR_In_Ideographic_Description_Characters */
-
-/* 'In_CJK_Symbols_and_Punctuation': Block */
-static const OnigCodePoint CR_In_CJK_Symbols_and_Punctuation[] = {
- 1,
- 0x3000, 0x303f,
-}; /* CR_In_CJK_Symbols_and_Punctuation */
-
-/* 'In_Hiragana': Block */
-static const OnigCodePoint CR_In_Hiragana[] = {
- 1,
- 0x3040, 0x309f,
-}; /* CR_In_Hiragana */
-
-/* 'In_Katakana': Block */
-static const OnigCodePoint CR_In_Katakana[] = {
- 1,
- 0x30a0, 0x30ff,
-}; /* CR_In_Katakana */
-
-/* 'In_Bopomofo': Block */
-static const OnigCodePoint CR_In_Bopomofo[] = {
- 1,
- 0x3100, 0x312f,
-}; /* CR_In_Bopomofo */
-
-/* 'In_Hangul_Compatibility_Jamo': Block */
-static const OnigCodePoint CR_In_Hangul_Compatibility_Jamo[] = {
- 1,
- 0x3130, 0x318f,
-}; /* CR_In_Hangul_Compatibility_Jamo */
-
-/* 'In_Kanbun': Block */
-static const OnigCodePoint CR_In_Kanbun[] = {
- 1,
- 0x3190, 0x319f,
-}; /* CR_In_Kanbun */
-
-/* 'In_Bopomofo_Extended': Block */
-static const OnigCodePoint CR_In_Bopomofo_Extended[] = {
- 1,
- 0x31a0, 0x31bf,
-}; /* CR_In_Bopomofo_Extended */
-
-/* 'In_CJK_Strokes': Block */
-static const OnigCodePoint CR_In_CJK_Strokes[] = {
- 1,
- 0x31c0, 0x31ef,
-}; /* CR_In_CJK_Strokes */
-
-/* 'In_Katakana_Phonetic_Extensions': Block */
-static const OnigCodePoint CR_In_Katakana_Phonetic_Extensions[] = {
- 1,
+ 0x2e2f, 0x2e2f,
+ 0x3005, 0x3007,
+ 0x3021, 0x302f,
+ 0x3031, 0x3035,
+ 0x3038, 0x303c,
+ 0x3041, 0x3096,
+ 0x3099, 0x309a,
+ 0x309d, 0x309f,
+ 0x30a1, 0x30fa,
+ 0x30fc, 0x30ff,
+ 0x3105, 0x312d,
+ 0x3131, 0x318e,
+ 0x31a0, 0x31ba,
0x31f0, 0x31ff,
-}; /* CR_In_Katakana_Phonetic_Extensions */
-
-/* 'In_Enclosed_CJK_Letters_and_Months': Block */
-static const OnigCodePoint CR_In_Enclosed_CJK_Letters_and_Months[] = {
- 1,
- 0x3200, 0x32ff,
-}; /* CR_In_Enclosed_CJK_Letters_and_Months */
-
-/* 'In_CJK_Compatibility': Block */
-static const OnigCodePoint CR_In_CJK_Compatibility[] = {
- 1,
- 0x3300, 0x33ff,
-}; /* CR_In_CJK_Compatibility */
-
-/* 'In_CJK_Unified_Ideographs_Extension_A': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_A[] = {
- 1,
- 0x3400, 0x4dbf,
-}; /* CR_In_CJK_Unified_Ideographs_Extension_A */
-
-/* 'In_Yijing_Hexagram_Symbols': Block */
-static const OnigCodePoint CR_In_Yijing_Hexagram_Symbols[] = {
- 1,
- 0x4dc0, 0x4dff,
-}; /* CR_In_Yijing_Hexagram_Symbols */
-
-/* 'In_CJK_Unified_Ideographs': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs[] = {
- 1,
- 0x4e00, 0x9fff,
-}; /* CR_In_CJK_Unified_Ideographs */
-
-/* 'In_Yi_Syllables': Block */
-static const OnigCodePoint CR_In_Yi_Syllables[] = {
- 1,
- 0xa000, 0xa48f,
-}; /* CR_In_Yi_Syllables */
-
-/* 'In_Yi_Radicals': Block */
-static const OnigCodePoint CR_In_Yi_Radicals[] = {
- 1,
- 0xa490, 0xa4cf,
-}; /* CR_In_Yi_Radicals */
-
-/* 'In_Lisu': Block */
-#define CR_In_Lisu CR_Lisu
-
-/* 'In_Vai': Block */
-static const OnigCodePoint CR_In_Vai[] = {
- 1,
- 0xa500, 0xa63f,
-}; /* CR_In_Vai */
-
-/* 'In_Cyrillic_Extended_B': Block */
-static const OnigCodePoint CR_In_Cyrillic_Extended_B[] = {
- 1,
- 0xa640, 0xa69f,
-}; /* CR_In_Cyrillic_Extended_B */
-
-/* 'In_Bamum': Block */
-static const OnigCodePoint CR_In_Bamum[] = {
- 1,
- 0xa6a0, 0xa6ff,
-}; /* CR_In_Bamum */
-
-/* 'In_Modifier_Tone_Letters': Block */
-static const OnigCodePoint CR_In_Modifier_Tone_Letters[] = {
- 1,
- 0xa700, 0xa71f,
-}; /* CR_In_Modifier_Tone_Letters */
-
-/* 'In_Latin_Extended_D': Block */
-static const OnigCodePoint CR_In_Latin_Extended_D[] = {
- 1,
- 0xa720, 0xa7ff,
-}; /* CR_In_Latin_Extended_D */
-
-/* 'In_Syloti_Nagri': Block */
-static const OnigCodePoint CR_In_Syloti_Nagri[] = {
- 1,
- 0xa800, 0xa82f,
-}; /* CR_In_Syloti_Nagri */
-
-/* 'In_Common_Indic_Number_Forms': Block */
-static const OnigCodePoint CR_In_Common_Indic_Number_Forms[] = {
- 1,
- 0xa830, 0xa83f,
-}; /* CR_In_Common_Indic_Number_Forms */
-
-/* 'In_Phags_pa': Block */
-static const OnigCodePoint CR_In_Phags_pa[] = {
- 1,
- 0xa840, 0xa87f,
-}; /* CR_In_Phags_pa */
-
-/* 'In_Saurashtra': Block */
-static const OnigCodePoint CR_In_Saurashtra[] = {
- 1,
- 0xa880, 0xa8df,
-}; /* CR_In_Saurashtra */
-
-/* 'In_Devanagari_Extended': Block */
-static const OnigCodePoint CR_In_Devanagari_Extended[] = {
- 1,
- 0xa8e0, 0xa8ff,
-}; /* CR_In_Devanagari_Extended */
-
-/* 'In_Kayah_Li': Block */
-#define CR_In_Kayah_Li CR_Kayah_Li
-
-/* 'In_Rejang': Block */
-static const OnigCodePoint CR_In_Rejang[] = {
- 1,
- 0xa930, 0xa95f,
-}; /* CR_In_Rejang */
-
-/* 'In_Hangul_Jamo_Extended_A': Block */
-static const OnigCodePoint CR_In_Hangul_Jamo_Extended_A[] = {
- 1,
- 0xa960, 0xa97f,
-}; /* CR_In_Hangul_Jamo_Extended_A */
-
-/* 'In_Javanese': Block */
-static const OnigCodePoint CR_In_Javanese[] = {
- 1,
- 0xa980, 0xa9df,
-}; /* CR_In_Javanese */
-
-/* 'In_Cham': Block */
-static const OnigCodePoint CR_In_Cham[] = {
- 1,
- 0xaa00, 0xaa5f,
-}; /* CR_In_Cham */
-
-/* 'In_Myanmar_Extended_A': Block */
-static const OnigCodePoint CR_In_Myanmar_Extended_A[] = {
- 1,
- 0xaa60, 0xaa7f,
-}; /* CR_In_Myanmar_Extended_A */
-
-/* 'In_Tai_Viet': Block */
-static const OnigCodePoint CR_In_Tai_Viet[] = {
- 1,
- 0xaa80, 0xaadf,
-}; /* CR_In_Tai_Viet */
-
-/* 'In_Meetei_Mayek_Extensions': Block */
-static const OnigCodePoint CR_In_Meetei_Mayek_Extensions[] = {
- 1,
- 0xaae0, 0xaaff,
-}; /* CR_In_Meetei_Mayek_Extensions */
-
-/* 'In_Ethiopic_Extended_A': Block */
-static const OnigCodePoint CR_In_Ethiopic_Extended_A[] = {
- 1,
- 0xab00, 0xab2f,
-}; /* CR_In_Ethiopic_Extended_A */
-
-/* 'In_Meetei_Mayek': Block */
-static const OnigCodePoint CR_In_Meetei_Mayek[] = {
- 1,
- 0xabc0, 0xabff,
-}; /* CR_In_Meetei_Mayek */
-
-/* 'In_Hangul_Syllables': Block */
-static const OnigCodePoint CR_In_Hangul_Syllables[] = {
- 1,
- 0xac00, 0xd7af,
-}; /* CR_In_Hangul_Syllables */
-
-/* 'In_Hangul_Jamo_Extended_B': Block */
-static const OnigCodePoint CR_In_Hangul_Jamo_Extended_B[] = {
- 1,
- 0xd7b0, 0xd7ff,
-}; /* CR_In_Hangul_Jamo_Extended_B */
-
-/* 'In_High_Surrogates': Block */
-static const OnigCodePoint CR_In_High_Surrogates[] = {
- 1,
- 0xd800, 0xdb7f,
-}; /* CR_In_High_Surrogates */
-
-/* 'In_High_Private_Use_Surrogates': Block */
-static const OnigCodePoint CR_In_High_Private_Use_Surrogates[] = {
- 1,
- 0xdb80, 0xdbff,
-}; /* CR_In_High_Private_Use_Surrogates */
-
-/* 'In_Low_Surrogates': Block */
-static const OnigCodePoint CR_In_Low_Surrogates[] = {
- 1,
- 0xdc00, 0xdfff,
-}; /* CR_In_Low_Surrogates */
-
-/* 'In_Private_Use_Area': Block */
-static const OnigCodePoint CR_In_Private_Use_Area[] = {
- 1,
- 0xe000, 0xf8ff,
-}; /* CR_In_Private_Use_Area */
-
-/* 'In_CJK_Compatibility_Ideographs': Block */
-static const OnigCodePoint CR_In_CJK_Compatibility_Ideographs[] = {
- 1,
- 0xf900, 0xfaff,
-}; /* CR_In_CJK_Compatibility_Ideographs */
-
-/* 'In_Alphabetic_Presentation_Forms': Block */
-static const OnigCodePoint CR_In_Alphabetic_Presentation_Forms[] = {
- 1,
- 0xfb00, 0xfb4f,
-}; /* CR_In_Alphabetic_Presentation_Forms */
-
-/* 'In_Arabic_Presentation_Forms_A': Block */
-static const OnigCodePoint CR_In_Arabic_Presentation_Forms_A[] = {
- 1,
- 0xfb50, 0xfdff,
-}; /* CR_In_Arabic_Presentation_Forms_A */
-
-/* 'In_Variation_Selectors': Block */
-static const OnigCodePoint CR_In_Variation_Selectors[] = {
- 1,
+ 0x3400, 0x4db5,
+ 0x4e00, 0x9fcb,
+ 0xa000, 0xa48c,
+ 0xa4d0, 0xa4fd,
+ 0xa500, 0xa60c,
+ 0xa610, 0xa62b,
+ 0xa640, 0xa672,
+ 0xa67c, 0xa67d,
+ 0xa67f, 0xa697,
+ 0xa6a0, 0xa6f1,
+ 0xa717, 0xa71f,
+ 0xa722, 0xa788,
+ 0xa78b, 0xa78e,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa827,
+ 0xa840, 0xa873,
+ 0xa880, 0xa8c4,
+ 0xa8d0, 0xa8d9,
+ 0xa8e0, 0xa8f7,
+ 0xa8fb, 0xa8fb,
+ 0xa900, 0xa92d,
+ 0xa930, 0xa953,
+ 0xa960, 0xa97c,
+ 0xa980, 0xa9c0,
+ 0xa9cf, 0xa9d9,
+ 0xaa00, 0xaa36,
+ 0xaa40, 0xaa4d,
+ 0xaa50, 0xaa59,
+ 0xaa60, 0xaa76,
+ 0xaa7a, 0xaa7b,
+ 0xaa80, 0xaac2,
+ 0xaadb, 0xaadd,
+ 0xab01, 0xab06,
+ 0xab09, 0xab0e,
+ 0xab11, 0xab16,
+ 0xab20, 0xab26,
+ 0xab28, 0xab2e,
+ 0xabc0, 0xabea,
+ 0xabec, 0xabed,
+ 0xabf0, 0xabf9,
+ 0xac00, 0xd7a3,
+ 0xd7b0, 0xd7c6,
+ 0xd7cb, 0xd7fb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
+ 0xfa70, 0xfad9,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xfb1d, 0xfb28,
+ 0xfb2a, 0xfb36,
+ 0xfb38, 0xfb3c,
+ 0xfb3e, 0xfb3e,
+ 0xfb40, 0xfb41,
+ 0xfb43, 0xfb44,
+ 0xfb46, 0xfbb1,
+ 0xfbd3, 0xfd3d,
+ 0xfd50, 0xfd8f,
+ 0xfd92, 0xfdc7,
+ 0xfdf0, 0xfdfb,
0xfe00, 0xfe0f,
-}; /* CR_In_Variation_Selectors */
-
-/* 'In_Vertical_Forms': Block */
-static const OnigCodePoint CR_In_Vertical_Forms[] = {
- 1,
- 0xfe10, 0xfe1f,
-}; /* CR_In_Vertical_Forms */
-
-/* 'In_Combining_Half_Marks': Block */
-static const OnigCodePoint CR_In_Combining_Half_Marks[] = {
- 1,
- 0xfe20, 0xfe2f,
-}; /* CR_In_Combining_Half_Marks */
-
-/* 'In_CJK_Compatibility_Forms': Block */
-static const OnigCodePoint CR_In_CJK_Compatibility_Forms[] = {
- 1,
- 0xfe30, 0xfe4f,
-}; /* CR_In_CJK_Compatibility_Forms */
-
-/* 'In_Small_Form_Variants': Block */
-static const OnigCodePoint CR_In_Small_Form_Variants[] = {
- 1,
- 0xfe50, 0xfe6f,
-}; /* CR_In_Small_Form_Variants */
-
-/* 'In_Arabic_Presentation_Forms_B': Block */
-static const OnigCodePoint CR_In_Arabic_Presentation_Forms_B[] = {
- 1,
- 0xfe70, 0xfeff,
-}; /* CR_In_Arabic_Presentation_Forms_B */
-
-/* 'In_Halfwidth_and_Fullwidth_Forms': Block */
-static const OnigCodePoint CR_In_Halfwidth_and_Fullwidth_Forms[] = {
- 1,
- 0xff00, 0xffef,
-}; /* CR_In_Halfwidth_and_Fullwidth_Forms */
-
-/* 'In_Specials': Block */
-static const OnigCodePoint CR_In_Specials[] = {
- 1,
- 0xfff0, 0xffff,
-}; /* CR_In_Specials */
-
-/* 'In_Linear_B_Syllabary': Block */
-static const OnigCodePoint CR_In_Linear_B_Syllabary[] = {
- 1,
- 0x10000, 0x1007f,
-}; /* CR_In_Linear_B_Syllabary */
-
-/* 'In_Linear_B_Ideograms': Block */
-static const OnigCodePoint CR_In_Linear_B_Ideograms[] = {
- 1,
- 0x10080, 0x100ff,
-}; /* CR_In_Linear_B_Ideograms */
-
-/* 'In_Aegean_Numbers': Block */
-static const OnigCodePoint CR_In_Aegean_Numbers[] = {
- 1,
- 0x10100, 0x1013f,
-}; /* CR_In_Aegean_Numbers */
-
-/* 'In_Ancient_Greek_Numbers': Block */
-static const OnigCodePoint CR_In_Ancient_Greek_Numbers[] = {
- 1,
- 0x10140, 0x1018f,
-}; /* CR_In_Ancient_Greek_Numbers */
-
-/* 'In_Ancient_Symbols': Block */
-static const OnigCodePoint CR_In_Ancient_Symbols[] = {
- 1,
- 0x10190, 0x101cf,
-}; /* CR_In_Ancient_Symbols */
-
-/* 'In_Phaistos_Disc': Block */
-static const OnigCodePoint CR_In_Phaistos_Disc[] = {
- 1,
- 0x101d0, 0x101ff,
-}; /* CR_In_Phaistos_Disc */
-
-/* 'In_Lycian': Block */
-static const OnigCodePoint CR_In_Lycian[] = {
- 1,
- 0x10280, 0x1029f,
-}; /* CR_In_Lycian */
-
-/* 'In_Carian': Block */
-static const OnigCodePoint CR_In_Carian[] = {
- 1,
- 0x102a0, 0x102df,
-}; /* CR_In_Carian */
-
-/* 'In_Old_Italic': Block */
-static const OnigCodePoint CR_In_Old_Italic[] = {
- 1,
- 0x10300, 0x1032f,
-}; /* CR_In_Old_Italic */
-
-/* 'In_Gothic': Block */
-static const OnigCodePoint CR_In_Gothic[] = {
- 1,
- 0x10330, 0x1034f,
-}; /* CR_In_Gothic */
-
-/* 'In_Ugaritic': Block */
-static const OnigCodePoint CR_In_Ugaritic[] = {
- 1,
- 0x10380, 0x1039f,
-}; /* CR_In_Ugaritic */
-
-/* 'In_Old_Persian': Block */
-static const OnigCodePoint CR_In_Old_Persian[] = {
- 1,
- 0x103a0, 0x103df,
-}; /* CR_In_Old_Persian */
-
-/* 'In_Deseret': Block */
-#define CR_In_Deseret CR_Deseret
-
-/* 'In_Shavian': Block */
-#define CR_In_Shavian CR_Shavian
-
-/* 'In_Osmanya': Block */
-static const OnigCodePoint CR_In_Osmanya[] = {
- 1,
- 0x10480, 0x104af,
-}; /* CR_In_Osmanya */
-
-/* 'In_Cypriot_Syllabary': Block */
-static const OnigCodePoint CR_In_Cypriot_Syllabary[] = {
- 1,
- 0x10800, 0x1083f,
-}; /* CR_In_Cypriot_Syllabary */
-
-/* 'In_Imperial_Aramaic': Block */
-static const OnigCodePoint CR_In_Imperial_Aramaic[] = {
- 1,
- 0x10840, 0x1085f,
-}; /* CR_In_Imperial_Aramaic */
-
-/* 'In_Phoenician': Block */
-static const OnigCodePoint CR_In_Phoenician[] = {
- 1,
- 0x10900, 0x1091f,
-}; /* CR_In_Phoenician */
-
-/* 'In_Lydian': Block */
-static const OnigCodePoint CR_In_Lydian[] = {
- 1,
- 0x10920, 0x1093f,
-}; /* CR_In_Lydian */
-
-/* 'In_Meroitic_Hieroglyphs': Block */
-#define CR_In_Meroitic_Hieroglyphs CR_Meroitic_Hieroglyphs
-
-/* 'In_Meroitic_Cursive': Block */
-static const OnigCodePoint CR_In_Meroitic_Cursive[] = {
- 1,
- 0x109a0, 0x109ff,
-}; /* CR_In_Meroitic_Cursive */
-
-/* 'In_Kharoshthi': Block */
-static const OnigCodePoint CR_In_Kharoshthi[] = {
- 1,
- 0x10a00, 0x10a5f,
-}; /* CR_In_Kharoshthi */
-
-/* 'In_Old_South_Arabian': Block */
-#define CR_In_Old_South_Arabian CR_Old_South_Arabian
-
-/* 'In_Avestan': Block */
-static const OnigCodePoint CR_In_Avestan[] = {
- 1,
- 0x10b00, 0x10b3f,
-}; /* CR_In_Avestan */
-
-/* 'In_Inscriptional_Parthian': Block */
-static const OnigCodePoint CR_In_Inscriptional_Parthian[] = {
- 1,
- 0x10b40, 0x10b5f,
-}; /* CR_In_Inscriptional_Parthian */
-
-/* 'In_Inscriptional_Pahlavi': Block */
-static const OnigCodePoint CR_In_Inscriptional_Pahlavi[] = {
- 1,
- 0x10b60, 0x10b7f,
-}; /* CR_In_Inscriptional_Pahlavi */
-
-/* 'In_Old_Turkic': Block */
-static const OnigCodePoint CR_In_Old_Turkic[] = {
- 1,
- 0x10c00, 0x10c4f,
-}; /* CR_In_Old_Turkic */
-
-/* 'In_Rumi_Numeral_Symbols': Block */
-static const OnigCodePoint CR_In_Rumi_Numeral_Symbols[] = {
- 1,
- 0x10e60, 0x10e7f,
-}; /* CR_In_Rumi_Numeral_Symbols */
-
-/* 'In_Brahmi': Block */
-static const OnigCodePoint CR_In_Brahmi[] = {
- 1,
- 0x11000, 0x1107f,
-}; /* CR_In_Brahmi */
-
-/* 'In_Kaithi': Block */
-static const OnigCodePoint CR_In_Kaithi[] = {
- 1,
- 0x11080, 0x110cf,
-}; /* CR_In_Kaithi */
-
-/* 'In_Sora_Sompeng': Block */
-static const OnigCodePoint CR_In_Sora_Sompeng[] = {
- 1,
- 0x110d0, 0x110ff,
-}; /* CR_In_Sora_Sompeng */
-
-/* 'In_Chakma': Block */
-static const OnigCodePoint CR_In_Chakma[] = {
- 1,
- 0x11100, 0x1114f,
-}; /* CR_In_Chakma */
-
-/* 'In_Sharada': Block */
-static const OnigCodePoint CR_In_Sharada[] = {
- 1,
- 0x11180, 0x111df,
-}; /* CR_In_Sharada */
-
-/* 'In_Takri': Block */
-static const OnigCodePoint CR_In_Takri[] = {
- 1,
- 0x11680, 0x116cf,
-}; /* CR_In_Takri */
-
-/* 'In_Cuneiform': Block */
-static const OnigCodePoint CR_In_Cuneiform[] = {
- 1,
- 0x12000, 0x123ff,
-}; /* CR_In_Cuneiform */
-
-/* 'In_Cuneiform_Numbers_and_Punctuation': Block */
-static const OnigCodePoint CR_In_Cuneiform_Numbers_and_Punctuation[] = {
- 1,
- 0x12400, 0x1247f,
-}; /* CR_In_Cuneiform_Numbers_and_Punctuation */
-
-/* 'In_Egyptian_Hieroglyphs': Block */
-static const OnigCodePoint CR_In_Egyptian_Hieroglyphs[] = {
- 1,
- 0x13000, 0x1342f,
-}; /* CR_In_Egyptian_Hieroglyphs */
-
-/* 'In_Bamum_Supplement': Block */
-static const OnigCodePoint CR_In_Bamum_Supplement[] = {
- 1,
- 0x16800, 0x16a3f,
-}; /* CR_In_Bamum_Supplement */
-
-/* 'In_Miao': Block */
-static const OnigCodePoint CR_In_Miao[] = {
- 1,
- 0x16f00, 0x16f9f,
-}; /* CR_In_Miao */
-
-/* 'In_Kana_Supplement': Block */
-static const OnigCodePoint CR_In_Kana_Supplement[] = {
- 1,
- 0x1b000, 0x1b0ff,
-}; /* CR_In_Kana_Supplement */
-
-/* 'In_Byzantine_Musical_Symbols': Block */
-static const OnigCodePoint CR_In_Byzantine_Musical_Symbols[] = {
- 1,
- 0x1d000, 0x1d0ff,
-}; /* CR_In_Byzantine_Musical_Symbols */
-
-/* 'In_Musical_Symbols': Block */
-static const OnigCodePoint CR_In_Musical_Symbols[] = {
- 1,
- 0x1d100, 0x1d1ff,
-}; /* CR_In_Musical_Symbols */
-
-/* 'In_Ancient_Greek_Musical_Notation': Block */
-static const OnigCodePoint CR_In_Ancient_Greek_Musical_Notation[] = {
- 1,
- 0x1d200, 0x1d24f,
-}; /* CR_In_Ancient_Greek_Musical_Notation */
-
-/* 'In_Tai_Xuan_Jing_Symbols': Block */
-static const OnigCodePoint CR_In_Tai_Xuan_Jing_Symbols[] = {
- 1,
- 0x1d300, 0x1d35f,
-}; /* CR_In_Tai_Xuan_Jing_Symbols */
-
-/* 'In_Counting_Rod_Numerals': Block */
-static const OnigCodePoint CR_In_Counting_Rod_Numerals[] = {
- 1,
- 0x1d360, 0x1d37f,
-}; /* CR_In_Counting_Rod_Numerals */
-
-/* 'In_Mathematical_Alphanumeric_Symbols': Block */
-static const OnigCodePoint CR_In_Mathematical_Alphanumeric_Symbols[] = {
- 1,
- 0x1d400, 0x1d7ff,
-}; /* CR_In_Mathematical_Alphanumeric_Symbols */
-
-/* 'In_Arabic_Mathematical_Alphabetic_Symbols': Block */
-static const OnigCodePoint CR_In_Arabic_Mathematical_Alphabetic_Symbols[] = {
- 1,
- 0x1ee00, 0x1eeff,
-}; /* CR_In_Arabic_Mathematical_Alphabetic_Symbols */
-
-/* 'In_Mahjong_Tiles': Block */
-static const OnigCodePoint CR_In_Mahjong_Tiles[] = {
- 1,
- 0x1f000, 0x1f02f,
-}; /* CR_In_Mahjong_Tiles */
-
-/* 'In_Domino_Tiles': Block */
-static const OnigCodePoint CR_In_Domino_Tiles[] = {
- 1,
- 0x1f030, 0x1f09f,
-}; /* CR_In_Domino_Tiles */
-
-/* 'In_Playing_Cards': Block */
-static const OnigCodePoint CR_In_Playing_Cards[] = {
- 1,
- 0x1f0a0, 0x1f0ff,
-}; /* CR_In_Playing_Cards */
-
-/* 'In_Enclosed_Alphanumeric_Supplement': Block */
-static const OnigCodePoint CR_In_Enclosed_Alphanumeric_Supplement[] = {
- 1,
- 0x1f100, 0x1f1ff,
-}; /* CR_In_Enclosed_Alphanumeric_Supplement */
-
-/* 'In_Enclosed_Ideographic_Supplement': Block */
-static const OnigCodePoint CR_In_Enclosed_Ideographic_Supplement[] = {
- 1,
- 0x1f200, 0x1f2ff,
-}; /* CR_In_Enclosed_Ideographic_Supplement */
-
-/* 'In_Miscellaneous_Symbols_And_Pictographs': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Symbols_And_Pictographs[] = {
- 1,
- 0x1f300, 0x1f5ff,
-}; /* CR_In_Miscellaneous_Symbols_And_Pictographs */
-
-/* 'In_Emoticons': Block */
-static const OnigCodePoint CR_In_Emoticons[] = {
- 1,
- 0x1f600, 0x1f64f,
-}; /* CR_In_Emoticons */
-
-/* 'In_Transport_And_Map_Symbols': Block */
-static const OnigCodePoint CR_In_Transport_And_Map_Symbols[] = {
- 1,
- 0x1f680, 0x1f6ff,
-}; /* CR_In_Transport_And_Map_Symbols */
-
-/* 'In_Alchemical_Symbols': Block */
-static const OnigCodePoint CR_In_Alchemical_Symbols[] = {
- 1,
- 0x1f700, 0x1f77f,
-}; /* CR_In_Alchemical_Symbols */
-
-/* 'In_CJK_Unified_Ideographs_Extension_B': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_B[] = {
- 1,
- 0x20000, 0x2a6df,
-}; /* CR_In_CJK_Unified_Ideographs_Extension_B */
-
-/* 'In_CJK_Unified_Ideographs_Extension_C': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_C[] = {
- 1,
- 0x2a700, 0x2b73f,
-}; /* CR_In_CJK_Unified_Ideographs_Extension_C */
-
-/* 'In_CJK_Unified_Ideographs_Extension_D': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_D[] = {
- 1,
- 0x2b740, 0x2b81f,
-}; /* CR_In_CJK_Unified_Ideographs_Extension_D */
-
-/* 'In_CJK_Compatibility_Ideographs_Supplement': Block */
-static const OnigCodePoint CR_In_CJK_Compatibility_Ideographs_Supplement[] = {
- 1,
- 0x2f800, 0x2fa1f,
-}; /* CR_In_CJK_Compatibility_Ideographs_Supplement */
-
-/* 'In_Tags': Block */
-static const OnigCodePoint CR_In_Tags[] = {
- 1,
- 0xe0000, 0xe007f,
-}; /* CR_In_Tags */
-
-/* 'In_Variation_Selectors_Supplement': Block */
-static const OnigCodePoint CR_In_Variation_Selectors_Supplement[] = {
- 1,
+ 0xfe20, 0xfe26,
+ 0xfe33, 0xfe34,
+ 0xfe4d, 0xfe4f,
+ 0xfe70, 0xfe74,
+ 0xfe76, 0xfefc,
+ 0xff10, 0xff19,
+ 0xff21, 0xff3a,
+ 0xff3f, 0xff3f,
+ 0xff41, 0xff5a,
+ 0xff66, 0xffbe,
+ 0xffc2, 0xffc7,
+ 0xffca, 0xffcf,
+ 0xffd2, 0xffd7,
+ 0xffda, 0xffdc,
+ 0x10000, 0x1000b,
+ 0x1000d, 0x10026,
+ 0x10028, 0x1003a,
+ 0x1003c, 0x1003d,
+ 0x1003f, 0x1004d,
+ 0x10050, 0x1005d,
+ 0x10080, 0x100fa,
+ 0x10140, 0x10174,
+ 0x101fd, 0x101fd,
+ 0x10280, 0x1029c,
+ 0x102a0, 0x102d0,
+ 0x10300, 0x1031e,
+ 0x10330, 0x1034a,
+ 0x10380, 0x1039d,
+ 0x103a0, 0x103c3,
+ 0x103c8, 0x103cf,
+ 0x103d1, 0x103d5,
+ 0x10400, 0x1049d,
+ 0x104a0, 0x104a9,
+ 0x10800, 0x10805,
+ 0x10808, 0x10808,
+ 0x1080a, 0x10835,
+ 0x10837, 0x10838,
+ 0x1083c, 0x1083c,
+ 0x1083f, 0x10855,
+ 0x10900, 0x10915,
+ 0x10920, 0x10939,
+ 0x10a00, 0x10a03,
+ 0x10a05, 0x10a06,
+ 0x10a0c, 0x10a13,
+ 0x10a15, 0x10a17,
+ 0x10a19, 0x10a33,
+ 0x10a38, 0x10a3a,
+ 0x10a3f, 0x10a3f,
+ 0x10a60, 0x10a7c,
+ 0x10b00, 0x10b35,
+ 0x10b40, 0x10b55,
+ 0x10b60, 0x10b72,
+ 0x10c00, 0x10c48,
+ 0x11000, 0x11046,
+ 0x11066, 0x1106f,
+ 0x11080, 0x110ba,
+ 0x12000, 0x1236e,
+ 0x12400, 0x12462,
+ 0x13000, 0x1342e,
+ 0x16800, 0x16a38,
+ 0x1b000, 0x1b001,
+ 0x1d165, 0x1d169,
+ 0x1d16d, 0x1d172,
+ 0x1d17b, 0x1d182,
+ 0x1d185, 0x1d18b,
+ 0x1d1aa, 0x1d1ad,
+ 0x1d242, 0x1d244,
+ 0x1d400, 0x1d454,
+ 0x1d456, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d51e, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d552, 0x1d6a5,
+ 0x1d6a8, 0x1d6c0,
+ 0x1d6c2, 0x1d6da,
+ 0x1d6dc, 0x1d6fa,
+ 0x1d6fc, 0x1d714,
+ 0x1d716, 0x1d734,
+ 0x1d736, 0x1d74e,
+ 0x1d750, 0x1d76e,
+ 0x1d770, 0x1d788,
+ 0x1d78a, 0x1d7a8,
+ 0x1d7aa, 0x1d7c2,
+ 0x1d7c4, 0x1d7cb,
+ 0x1d7ce, 0x1d7ff,
+ 0x20000, 0x2a6d6,
+ 0x2a700, 0x2b734,
+ 0x2b740, 0x2b81d,
+ 0x2f800, 0x2fa1d,
0xe0100, 0xe01ef,
-}; /* CR_In_Variation_Selectors_Supplement */
+}; /* CR_Word */
-/* 'In_Supplementary_Private_Use_Area_A': Block */
-static const OnigCodePoint CR_In_Supplementary_Private_Use_Area_A[] = {
- 1,
- 0xf0000, 0xfffff,
-}; /* CR_In_Supplementary_Private_Use_Area_A */
+/* 'Alnum': [[:Alnum:]] */
+static const OnigCodePoint CR_Alnum[] = {
+ 509,
+ 0x0030, 0x0039,
+ 0x0041, 0x005a,
+ 0x0061, 0x007a,
+ 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
+ 0x00c0, 0x00d6,
+ 0x00d8, 0x00f6,
+ 0x00f8, 0x02c1,
+ 0x02c6, 0x02d1,
+ 0x02e0, 0x02e4,
+ 0x02ec, 0x02ec,
+ 0x02ee, 0x02ee,
+ 0x0345, 0x0345,
+ 0x0370, 0x0374,
+ 0x0376, 0x0377,
+ 0x037a, 0x037d,
+ 0x0386, 0x0386,
+ 0x0388, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x03a1,
+ 0x03a3, 0x03f5,
+ 0x03f7, 0x0481,
+ 0x048a, 0x0527,
+ 0x0531, 0x0556,
+ 0x0559, 0x0559,
+ 0x0561, 0x0587,
+ 0x05b0, 0x05bd,
+ 0x05bf, 0x05bf,
+ 0x05c1, 0x05c2,
+ 0x05c4, 0x05c5,
+ 0x05c7, 0x05c7,
+ 0x05d0, 0x05ea,
+ 0x05f0, 0x05f2,
+ 0x0610, 0x061a,
+ 0x0620, 0x0657,
+ 0x0659, 0x0669,
+ 0x066e, 0x06d3,
+ 0x06d5, 0x06dc,
+ 0x06e1, 0x06e8,
+ 0x06ed, 0x06fc,
+ 0x06ff, 0x06ff,
+ 0x0710, 0x073f,
+ 0x074d, 0x07b1,
+ 0x07c0, 0x07ea,
+ 0x07f4, 0x07f5,
+ 0x07fa, 0x07fa,
+ 0x0800, 0x0817,
+ 0x081a, 0x082c,
+ 0x0840, 0x0858,
+ 0x0900, 0x093b,
+ 0x093d, 0x094c,
+ 0x094e, 0x0950,
+ 0x0955, 0x0963,
+ 0x0966, 0x096f,
+ 0x0971, 0x0977,
+ 0x0979, 0x097f,
+ 0x0981, 0x0983,
+ 0x0985, 0x098c,
+ 0x098f, 0x0990,
+ 0x0993, 0x09a8,
+ 0x09aa, 0x09b0,
+ 0x09b2, 0x09b2,
+ 0x09b6, 0x09b9,
+ 0x09bd, 0x09c4,
+ 0x09c7, 0x09c8,
+ 0x09cb, 0x09cc,
+ 0x09ce, 0x09ce,
+ 0x09d7, 0x09d7,
+ 0x09dc, 0x09dd,
+ 0x09df, 0x09e3,
+ 0x09e6, 0x09f1,
+ 0x0a01, 0x0a03,
+ 0x0a05, 0x0a0a,
+ 0x0a0f, 0x0a10,
+ 0x0a13, 0x0a28,
+ 0x0a2a, 0x0a30,
+ 0x0a32, 0x0a33,
+ 0x0a35, 0x0a36,
+ 0x0a38, 0x0a39,
+ 0x0a3e, 0x0a42,
+ 0x0a47, 0x0a48,
+ 0x0a4b, 0x0a4c,
+ 0x0a51, 0x0a51,
+ 0x0a59, 0x0a5c,
+ 0x0a5e, 0x0a5e,
+ 0x0a66, 0x0a75,
+ 0x0a81, 0x0a83,
+ 0x0a85, 0x0a8d,
+ 0x0a8f, 0x0a91,
+ 0x0a93, 0x0aa8,
+ 0x0aaa, 0x0ab0,
+ 0x0ab2, 0x0ab3,
+ 0x0ab5, 0x0ab9,
+ 0x0abd, 0x0ac5,
+ 0x0ac7, 0x0ac9,
+ 0x0acb, 0x0acc,
+ 0x0ad0, 0x0ad0,
+ 0x0ae0, 0x0ae3,
+ 0x0ae6, 0x0aef,
+ 0x0b01, 0x0b03,
+ 0x0b05, 0x0b0c,
+ 0x0b0f, 0x0b10,
+ 0x0b13, 0x0b28,
+ 0x0b2a, 0x0b30,
+ 0x0b32, 0x0b33,
+ 0x0b35, 0x0b39,
+ 0x0b3d, 0x0b44,
+ 0x0b47, 0x0b48,
+ 0x0b4b, 0x0b4c,
+ 0x0b56, 0x0b57,
+ 0x0b5c, 0x0b5d,
+ 0x0b5f, 0x0b63,
+ 0x0b66, 0x0b6f,
+ 0x0b71, 0x0b71,
+ 0x0b82, 0x0b83,
+ 0x0b85, 0x0b8a,
+ 0x0b8e, 0x0b90,
+ 0x0b92, 0x0b95,
+ 0x0b99, 0x0b9a,
+ 0x0b9c, 0x0b9c,
+ 0x0b9e, 0x0b9f,
+ 0x0ba3, 0x0ba4,
+ 0x0ba8, 0x0baa,
+ 0x0bae, 0x0bb9,
+ 0x0bbe, 0x0bc2,
+ 0x0bc6, 0x0bc8,
+ 0x0bca, 0x0bcc,
+ 0x0bd0, 0x0bd0,
+ 0x0bd7, 0x0bd7,
+ 0x0be6, 0x0bef,
+ 0x0c01, 0x0c03,
+ 0x0c05, 0x0c0c,
+ 0x0c0e, 0x0c10,
+ 0x0c12, 0x0c28,
+ 0x0c2a, 0x0c33,
+ 0x0c35, 0x0c39,
+ 0x0c3d, 0x0c44,
+ 0x0c46, 0x0c48,
+ 0x0c4a, 0x0c4c,
+ 0x0c55, 0x0c56,
+ 0x0c58, 0x0c59,
+ 0x0c60, 0x0c63,
+ 0x0c66, 0x0c6f,
+ 0x0c82, 0x0c83,
+ 0x0c85, 0x0c8c,
+ 0x0c8e, 0x0c90,
+ 0x0c92, 0x0ca8,
+ 0x0caa, 0x0cb3,
+ 0x0cb5, 0x0cb9,
+ 0x0cbd, 0x0cc4,
+ 0x0cc6, 0x0cc8,
+ 0x0cca, 0x0ccc,
+ 0x0cd5, 0x0cd6,
+ 0x0cde, 0x0cde,
+ 0x0ce0, 0x0ce3,
+ 0x0ce6, 0x0cef,
+ 0x0cf1, 0x0cf2,
+ 0x0d02, 0x0d03,
+ 0x0d05, 0x0d0c,
+ 0x0d0e, 0x0d10,
+ 0x0d12, 0x0d3a,
+ 0x0d3d, 0x0d44,
+ 0x0d46, 0x0d48,
+ 0x0d4a, 0x0d4c,
+ 0x0d4e, 0x0d4e,
+ 0x0d57, 0x0d57,
+ 0x0d60, 0x0d63,
+ 0x0d66, 0x0d6f,
+ 0x0d7a, 0x0d7f,
+ 0x0d82, 0x0d83,
+ 0x0d85, 0x0d96,
+ 0x0d9a, 0x0db1,
+ 0x0db3, 0x0dbb,
+ 0x0dbd, 0x0dbd,
+ 0x0dc0, 0x0dc6,
+ 0x0dcf, 0x0dd4,
+ 0x0dd6, 0x0dd6,
+ 0x0dd8, 0x0ddf,
+ 0x0df2, 0x0df3,
+ 0x0e01, 0x0e3a,
+ 0x0e40, 0x0e46,
+ 0x0e4d, 0x0e4d,
+ 0x0e50, 0x0e59,
+ 0x0e81, 0x0e82,
+ 0x0e84, 0x0e84,
+ 0x0e87, 0x0e88,
+ 0x0e8a, 0x0e8a,
+ 0x0e8d, 0x0e8d,
+ 0x0e94, 0x0e97,
+ 0x0e99, 0x0e9f,
+ 0x0ea1, 0x0ea3,
+ 0x0ea5, 0x0ea5,
+ 0x0ea7, 0x0ea7,
+ 0x0eaa, 0x0eab,
+ 0x0ead, 0x0eb9,
+ 0x0ebb, 0x0ebd,
+ 0x0ec0, 0x0ec4,
+ 0x0ec6, 0x0ec6,
+ 0x0ecd, 0x0ecd,
+ 0x0ed0, 0x0ed9,
+ 0x0edc, 0x0edd,
+ 0x0f00, 0x0f00,
+ 0x0f20, 0x0f29,
+ 0x0f40, 0x0f47,
+ 0x0f49, 0x0f6c,
+ 0x0f71, 0x0f81,
+ 0x0f88, 0x0f97,
+ 0x0f99, 0x0fbc,
+ 0x1000, 0x1036,
+ 0x1038, 0x1038,
+ 0x103b, 0x1049,
+ 0x1050, 0x1062,
+ 0x1065, 0x1068,
+ 0x106e, 0x1086,
+ 0x108e, 0x108e,
+ 0x1090, 0x1099,
+ 0x109c, 0x109d,
+ 0x10a0, 0x10c5,
+ 0x10d0, 0x10fa,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
+ 0x124a, 0x124d,
+ 0x1250, 0x1256,
+ 0x1258, 0x1258,
+ 0x125a, 0x125d,
+ 0x1260, 0x1288,
+ 0x128a, 0x128d,
+ 0x1290, 0x12b0,
+ 0x12b2, 0x12b5,
+ 0x12b8, 0x12be,
+ 0x12c0, 0x12c0,
+ 0x12c2, 0x12c5,
+ 0x12c8, 0x12d6,
+ 0x12d8, 0x1310,
+ 0x1312, 0x1315,
+ 0x1318, 0x135a,
+ 0x135f, 0x135f,
+ 0x1380, 0x138f,
+ 0x13a0, 0x13f4,
+ 0x1401, 0x166c,
+ 0x166f, 0x167f,
+ 0x1681, 0x169a,
+ 0x16a0, 0x16ea,
+ 0x16ee, 0x16f0,
+ 0x1700, 0x170c,
+ 0x170e, 0x1713,
+ 0x1720, 0x1733,
+ 0x1740, 0x1753,
+ 0x1760, 0x176c,
+ 0x176e, 0x1770,
+ 0x1772, 0x1773,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17c8,
+ 0x17d7, 0x17d7,
+ 0x17dc, 0x17dc,
+ 0x17e0, 0x17e9,
+ 0x1810, 0x1819,
+ 0x1820, 0x1877,
+ 0x1880, 0x18aa,
+ 0x18b0, 0x18f5,
+ 0x1900, 0x191c,
+ 0x1920, 0x192b,
+ 0x1930, 0x1938,
+ 0x1946, 0x196d,
+ 0x1970, 0x1974,
+ 0x1980, 0x19ab,
+ 0x19b0, 0x19c9,
+ 0x19d0, 0x19d9,
+ 0x1a00, 0x1a1b,
+ 0x1a20, 0x1a5e,
+ 0x1a61, 0x1a74,
+ 0x1a80, 0x1a89,
+ 0x1a90, 0x1a99,
+ 0x1aa7, 0x1aa7,
+ 0x1b00, 0x1b33,
+ 0x1b35, 0x1b43,
+ 0x1b45, 0x1b4b,
+ 0x1b50, 0x1b59,
+ 0x1b80, 0x1ba9,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1be5,
+ 0x1be7, 0x1bf1,
+ 0x1c00, 0x1c35,
+ 0x1c40, 0x1c49,
+ 0x1c4d, 0x1c7d,
+ 0x1ce9, 0x1cec,
+ 0x1cee, 0x1cf2,
+ 0x1d00, 0x1dbf,
+ 0x1e00, 0x1f15,
+ 0x1f18, 0x1f1d,
+ 0x1f20, 0x1f45,
+ 0x1f48, 0x1f4d,
+ 0x1f50, 0x1f57,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f7d,
+ 0x1f80, 0x1fb4,
+ 0x1fb6, 0x1fbc,
+ 0x1fbe, 0x1fbe,
+ 0x1fc2, 0x1fc4,
+ 0x1fc6, 0x1fcc,
+ 0x1fd0, 0x1fd3,
+ 0x1fd6, 0x1fdb,
+ 0x1fe0, 0x1fec,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ffc,
+ 0x2071, 0x2071,
+ 0x207f, 0x207f,
+ 0x2090, 0x209c,
+ 0x2102, 0x2102,
+ 0x2107, 0x2107,
+ 0x210a, 0x2113,
+ 0x2115, 0x2115,
+ 0x2119, 0x211d,
+ 0x2124, 0x2124,
+ 0x2126, 0x2126,
+ 0x2128, 0x2128,
+ 0x212a, 0x212d,
+ 0x212f, 0x2139,
+ 0x213c, 0x213f,
+ 0x2145, 0x2149,
+ 0x214e, 0x214e,
+ 0x2160, 0x2188,
+ 0x24b6, 0x24e9,
+ 0x2c00, 0x2c2e,
+ 0x2c30, 0x2c5e,
+ 0x2c60, 0x2ce4,
+ 0x2ceb, 0x2cee,
+ 0x2d00, 0x2d25,
+ 0x2d30, 0x2d65,
+ 0x2d6f, 0x2d6f,
+ 0x2d80, 0x2d96,
+ 0x2da0, 0x2da6,
+ 0x2da8, 0x2dae,
+ 0x2db0, 0x2db6,
+ 0x2db8, 0x2dbe,
+ 0x2dc0, 0x2dc6,
+ 0x2dc8, 0x2dce,
+ 0x2dd0, 0x2dd6,
+ 0x2dd8, 0x2dde,
+ 0x2de0, 0x2dff,
+ 0x2e2f, 0x2e2f,
+ 0x3005, 0x3007,
+ 0x3021, 0x3029,
+ 0x3031, 0x3035,
+ 0x3038, 0x303c,
+ 0x3041, 0x3096,
+ 0x309d, 0x309f,
+ 0x30a1, 0x30fa,
+ 0x30fc, 0x30ff,
+ 0x3105, 0x312d,
+ 0x3131, 0x318e,
+ 0x31a0, 0x31ba,
+ 0x31f0, 0x31ff,
+ 0x3400, 0x4db5,
+ 0x4e00, 0x9fcb,
+ 0xa000, 0xa48c,
+ 0xa4d0, 0xa4fd,
+ 0xa500, 0xa60c,
+ 0xa610, 0xa62b,
+ 0xa640, 0xa66e,
+ 0xa67f, 0xa697,
+ 0xa6a0, 0xa6ef,
+ 0xa717, 0xa71f,
+ 0xa722, 0xa788,
+ 0xa78b, 0xa78e,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
+ 0xa803, 0xa805,
+ 0xa807, 0xa80a,
+ 0xa80c, 0xa827,
+ 0xa840, 0xa873,
+ 0xa880, 0xa8c3,
+ 0xa8d0, 0xa8d9,
+ 0xa8f2, 0xa8f7,
+ 0xa8fb, 0xa8fb,
+ 0xa900, 0xa92a,
+ 0xa930, 0xa952,
+ 0xa960, 0xa97c,
+ 0xa980, 0xa9b2,
+ 0xa9b4, 0xa9bf,
+ 0xa9cf, 0xa9d9,
+ 0xaa00, 0xaa36,
+ 0xaa40, 0xaa4d,
+ 0xaa50, 0xaa59,
+ 0xaa60, 0xaa76,
+ 0xaa7a, 0xaa7a,
+ 0xaa80, 0xaabe,
+ 0xaac0, 0xaac0,
+ 0xaac2, 0xaac2,
+ 0xaadb, 0xaadd,
+ 0xab01, 0xab06,
+ 0xab09, 0xab0e,
+ 0xab11, 0xab16,
+ 0xab20, 0xab26,
+ 0xab28, 0xab2e,
+ 0xabc0, 0xabea,
+ 0xabf0, 0xabf9,
+ 0xac00, 0xd7a3,
+ 0xd7b0, 0xd7c6,
+ 0xd7cb, 0xd7fb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
+ 0xfa70, 0xfad9,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xfb1d, 0xfb28,
+ 0xfb2a, 0xfb36,
+ 0xfb38, 0xfb3c,
+ 0xfb3e, 0xfb3e,
+ 0xfb40, 0xfb41,
+ 0xfb43, 0xfb44,
+ 0xfb46, 0xfbb1,
+ 0xfbd3, 0xfd3d,
+ 0xfd50, 0xfd8f,
+ 0xfd92, 0xfdc7,
+ 0xfdf0, 0xfdfb,
+ 0xfe70, 0xfe74,
+ 0xfe76, 0xfefc,
+ 0xff10, 0xff19,
+ 0xff21, 0xff3a,
+ 0xff41, 0xff5a,
+ 0xff66, 0xffbe,
+ 0xffc2, 0xffc7,
+ 0xffca, 0xffcf,
+ 0xffd2, 0xffd7,
+ 0xffda, 0xffdc,
+ 0x10000, 0x1000b,
+ 0x1000d, 0x10026,
+ 0x10028, 0x1003a,
+ 0x1003c, 0x1003d,
+ 0x1003f, 0x1004d,
+ 0x10050, 0x1005d,
+ 0x10080, 0x100fa,
+ 0x10140, 0x10174,
+ 0x10280, 0x1029c,
+ 0x102a0, 0x102d0,
+ 0x10300, 0x1031e,
+ 0x10330, 0x1034a,
+ 0x10380, 0x1039d,
+ 0x103a0, 0x103c3,
+ 0x103c8, 0x103cf,
+ 0x103d1, 0x103d5,
+ 0x10400, 0x1049d,
+ 0x104a0, 0x104a9,
+ 0x10800, 0x10805,
+ 0x10808, 0x10808,
+ 0x1080a, 0x10835,
+ 0x10837, 0x10838,
+ 0x1083c, 0x1083c,
+ 0x1083f, 0x10855,
+ 0x10900, 0x10915,
+ 0x10920, 0x10939,
+ 0x10a00, 0x10a03,
+ 0x10a05, 0x10a06,
+ 0x10a0c, 0x10a13,
+ 0x10a15, 0x10a17,
+ 0x10a19, 0x10a33,
+ 0x10a60, 0x10a7c,
+ 0x10b00, 0x10b35,
+ 0x10b40, 0x10b55,
+ 0x10b60, 0x10b72,
+ 0x10c00, 0x10c48,
+ 0x11000, 0x11045,
+ 0x11066, 0x1106f,
+ 0x11082, 0x110b8,
+ 0x12000, 0x1236e,
+ 0x12400, 0x12462,
+ 0x13000, 0x1342e,
+ 0x16800, 0x16a38,
+ 0x1b000, 0x1b001,
+ 0x1d400, 0x1d454,
+ 0x1d456, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d51e, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d552, 0x1d6a5,
+ 0x1d6a8, 0x1d6c0,
+ 0x1d6c2, 0x1d6da,
+ 0x1d6dc, 0x1d6fa,
+ 0x1d6fc, 0x1d714,
+ 0x1d716, 0x1d734,
+ 0x1d736, 0x1d74e,
+ 0x1d750, 0x1d76e,
+ 0x1d770, 0x1d788,
+ 0x1d78a, 0x1d7a8,
+ 0x1d7aa, 0x1d7c2,
+ 0x1d7c4, 0x1d7cb,
+ 0x1d7ce, 0x1d7ff,
+ 0x20000, 0x2a6d6,
+ 0x2a700, 0x2b734,
+ 0x2b740, 0x2b81d,
+ 0x2f800, 0x2fa1d,
+}; /* CR_Alnum */
-/* 'In_Supplementary_Private_Use_Area_B': Block */
-static const OnigCodePoint CR_In_Supplementary_Private_Use_Area_B[] = {
+/* 'ASCII': [[:ASCII:]] */
+static const OnigCodePoint CR_ASCII[] = {
1,
- 0x100000, 0x10ffff,
-}; /* CR_In_Supplementary_Private_Use_Area_B */
-
-/* 'In_No_Block': Block */
-static const OnigCodePoint CR_In_No_Block[] = {
- 36,
- 0x0860, 0x089f,
- 0x1ab0, 0x1aff,
- 0x1c80, 0x1cbf,
- 0x2fe0, 0x2fef,
- 0xa9e0, 0xa9ff,
- 0xab30, 0xabbf,
- 0x10200, 0x1027f,
- 0x102e0, 0x102ff,
- 0x10350, 0x1037f,
- 0x103e0, 0x103ff,
- 0x104b0, 0x107ff,
- 0x10860, 0x108ff,
- 0x10940, 0x1097f,
- 0x10a80, 0x10aff,
- 0x10b80, 0x10bff,
- 0x10c50, 0x10e5f,
- 0x10e80, 0x10fff,
- 0x11150, 0x1117f,
- 0x111e0, 0x1167f,
- 0x116d0, 0x11fff,
- 0x12480, 0x12fff,
- 0x13430, 0x167ff,
- 0x16a40, 0x16eff,
- 0x16fa0, 0x1afff,
- 0x1b100, 0x1cfff,
- 0x1d250, 0x1d2ff,
- 0x1d380, 0x1d3ff,
- 0x1d800, 0x1edff,
- 0x1ef00, 0x1efff,
- 0x1f650, 0x1f67f,
- 0x1f780, 0x1ffff,
- 0x2a6e0, 0x2a6ff,
- 0x2b820, 0x2f7ff,
- 0x2fa20, 0xdffff,
- 0xe0080, 0xe00ff,
- 0xe01f0, 0xeffff,
-}; /* CR_In_No_Block */
-#endif /* USE_UNICODE_PROPERTIES */
+ 0x0000, 0x007f,
+}; /* CR_ASCII */
static const OnigCodePoint* const CodeRanges[] = {
CR_NEWLINE,
@@ -25484,7 +21945,6 @@ static const OnigCodePoint* const CodeRanges[] = {
CR_Co,
CR_Cs,
CR_L,
- CR_LC,
CR_Ll,
CR_Lm,
CR_Lo,
@@ -25629,13 +22089,6 @@ static const OnigCodePoint* const CodeRanges[] = {
CR_Batak,
CR_Brahmi,
CR_Mandaic,
- CR_Chakma,
- CR_Meroitic_Cursive,
- CR_Meroitic_Hieroglyphs,
- CR_Miao,
- CR_Sharada,
- CR_Sora_Sompeng,
- CR_Takri,
CR_White_Space,
CR_Bidi_Control,
CR_Join_Control,
@@ -25681,228 +22134,6 @@ static const OnigCodePoint* const CodeRanges[] = {
CR_Age_5_1,
CR_Age_5_2,
CR_Age_6_0,
- CR_Age_6_1,
- CR_In_Basic_Latin,
- CR_In_Latin_1_Supplement,
- CR_In_Latin_Extended_A,
- CR_In_Latin_Extended_B,
- CR_In_IPA_Extensions,
- CR_In_Spacing_Modifier_Letters,
- CR_In_Combining_Diacritical_Marks,
- CR_In_Greek_and_Coptic,
- CR_In_Cyrillic,
- CR_In_Cyrillic_Supplement,
- CR_In_Armenian,
- CR_In_Hebrew,
- CR_In_Arabic,
- CR_In_Syriac,
- CR_In_Arabic_Supplement,
- CR_In_Thaana,
- CR_In_NKo,
- CR_In_Samaritan,
- CR_In_Mandaic,
- CR_In_Arabic_Extended_A,
- CR_In_Devanagari,
- CR_In_Bengali,
- CR_In_Gurmukhi,
- CR_In_Gujarati,
- CR_In_Oriya,
- CR_In_Tamil,
- CR_In_Telugu,
- CR_In_Kannada,
- CR_In_Malayalam,
- CR_In_Sinhala,
- CR_In_Thai,
- CR_In_Lao,
- CR_In_Tibetan,
- CR_In_Myanmar,
- CR_In_Georgian,
- CR_In_Hangul_Jamo,
- CR_In_Ethiopic,
- CR_In_Ethiopic_Supplement,
- CR_In_Cherokee,
- CR_In_Unified_Canadian_Aboriginal_Syllabics,
- CR_In_Ogham,
- CR_In_Runic,
- CR_In_Tagalog,
- CR_In_Hanunoo,
- CR_In_Buhid,
- CR_In_Tagbanwa,
- CR_In_Khmer,
- CR_In_Mongolian,
- CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended,
- CR_In_Limbu,
- CR_In_Tai_Le,
- CR_In_New_Tai_Lue,
- CR_In_Khmer_Symbols,
- CR_In_Buginese,
- CR_In_Tai_Tham,
- CR_In_Balinese,
- CR_In_Sundanese,
- CR_In_Batak,
- CR_In_Lepcha,
- CR_In_Ol_Chiki,
- CR_In_Sundanese_Supplement,
- CR_In_Vedic_Extensions,
- CR_In_Phonetic_Extensions,
- CR_In_Phonetic_Extensions_Supplement,
- CR_In_Combining_Diacritical_Marks_Supplement,
- CR_In_Latin_Extended_Additional,
- CR_In_Greek_Extended,
- CR_In_General_Punctuation,
- CR_In_Superscripts_and_Subscripts,
- CR_In_Currency_Symbols,
- CR_In_Combining_Diacritical_Marks_for_Symbols,
- CR_In_Letterlike_Symbols,
- CR_In_Number_Forms,
- CR_In_Arrows,
- CR_In_Mathematical_Operators,
- CR_In_Miscellaneous_Technical,
- CR_In_Control_Pictures,
- CR_In_Optical_Character_Recognition,
- CR_In_Enclosed_Alphanumerics,
- CR_In_Box_Drawing,
- CR_In_Block_Elements,
- CR_In_Geometric_Shapes,
- CR_In_Miscellaneous_Symbols,
- CR_In_Dingbats,
- CR_In_Miscellaneous_Mathematical_Symbols_A,
- CR_In_Supplemental_Arrows_A,
- CR_In_Braille_Patterns,
- CR_In_Supplemental_Arrows_B,
- CR_In_Miscellaneous_Mathematical_Symbols_B,
- CR_In_Supplemental_Mathematical_Operators,
- CR_In_Miscellaneous_Symbols_and_Arrows,
- CR_In_Glagolitic,
- CR_In_Latin_Extended_C,
- CR_In_Coptic,
- CR_In_Georgian_Supplement,
- CR_In_Tifinagh,
- CR_In_Ethiopic_Extended,
- CR_In_Cyrillic_Extended_A,
- CR_In_Supplemental_Punctuation,
- CR_In_CJK_Radicals_Supplement,
- CR_In_Kangxi_Radicals,
- CR_In_Ideographic_Description_Characters,
- CR_In_CJK_Symbols_and_Punctuation,
- CR_In_Hiragana,
- CR_In_Katakana,
- CR_In_Bopomofo,
- CR_In_Hangul_Compatibility_Jamo,
- CR_In_Kanbun,
- CR_In_Bopomofo_Extended,
- CR_In_CJK_Strokes,
- CR_In_Katakana_Phonetic_Extensions,
- CR_In_Enclosed_CJK_Letters_and_Months,
- CR_In_CJK_Compatibility,
- CR_In_CJK_Unified_Ideographs_Extension_A,
- CR_In_Yijing_Hexagram_Symbols,
- CR_In_CJK_Unified_Ideographs,
- CR_In_Yi_Syllables,
- CR_In_Yi_Radicals,
- CR_In_Lisu,
- CR_In_Vai,
- CR_In_Cyrillic_Extended_B,
- CR_In_Bamum,
- CR_In_Modifier_Tone_Letters,
- CR_In_Latin_Extended_D,
- CR_In_Syloti_Nagri,
- CR_In_Common_Indic_Number_Forms,
- CR_In_Phags_pa,
- CR_In_Saurashtra,
- CR_In_Devanagari_Extended,
- CR_In_Kayah_Li,
- CR_In_Rejang,
- CR_In_Hangul_Jamo_Extended_A,
- CR_In_Javanese,
- CR_In_Cham,
- CR_In_Myanmar_Extended_A,
- CR_In_Tai_Viet,
- CR_In_Meetei_Mayek_Extensions,
- CR_In_Ethiopic_Extended_A,
- CR_In_Meetei_Mayek,
- CR_In_Hangul_Syllables,
- CR_In_Hangul_Jamo_Extended_B,
- CR_In_High_Surrogates,
- CR_In_High_Private_Use_Surrogates,
- CR_In_Low_Surrogates,
- CR_In_Private_Use_Area,
- CR_In_CJK_Compatibility_Ideographs,
- CR_In_Alphabetic_Presentation_Forms,
- CR_In_Arabic_Presentation_Forms_A,
- CR_In_Variation_Selectors,
- CR_In_Vertical_Forms,
- CR_In_Combining_Half_Marks,
- CR_In_CJK_Compatibility_Forms,
- CR_In_Small_Form_Variants,
- CR_In_Arabic_Presentation_Forms_B,
- CR_In_Halfwidth_and_Fullwidth_Forms,
- CR_In_Specials,
- CR_In_Linear_B_Syllabary,
- CR_In_Linear_B_Ideograms,
- CR_In_Aegean_Numbers,
- CR_In_Ancient_Greek_Numbers,
- CR_In_Ancient_Symbols,
- CR_In_Phaistos_Disc,
- CR_In_Lycian,
- CR_In_Carian,
- CR_In_Old_Italic,
- CR_In_Gothic,
- CR_In_Ugaritic,
- CR_In_Old_Persian,
- CR_In_Deseret,
- CR_In_Shavian,
- CR_In_Osmanya,
- CR_In_Cypriot_Syllabary,
- CR_In_Imperial_Aramaic,
- CR_In_Phoenician,
- CR_In_Lydian,
- CR_In_Meroitic_Hieroglyphs,
- CR_In_Meroitic_Cursive,
- CR_In_Kharoshthi,
- CR_In_Old_South_Arabian,
- CR_In_Avestan,
- CR_In_Inscriptional_Parthian,
- CR_In_Inscriptional_Pahlavi,
- CR_In_Old_Turkic,
- CR_In_Rumi_Numeral_Symbols,
- CR_In_Brahmi,
- CR_In_Kaithi,
- CR_In_Sora_Sompeng,
- CR_In_Chakma,
- CR_In_Sharada,
- CR_In_Takri,
- CR_In_Cuneiform,
- CR_In_Cuneiform_Numbers_and_Punctuation,
- CR_In_Egyptian_Hieroglyphs,
- CR_In_Bamum_Supplement,
- CR_In_Miao,
- CR_In_Kana_Supplement,
- CR_In_Byzantine_Musical_Symbols,
- CR_In_Musical_Symbols,
- CR_In_Ancient_Greek_Musical_Notation,
- CR_In_Tai_Xuan_Jing_Symbols,
- CR_In_Counting_Rod_Numerals,
- CR_In_Mathematical_Alphanumeric_Symbols,
- CR_In_Arabic_Mathematical_Alphabetic_Symbols,
- CR_In_Mahjong_Tiles,
- CR_In_Domino_Tiles,
- CR_In_Playing_Cards,
- CR_In_Enclosed_Alphanumeric_Supplement,
- CR_In_Enclosed_Ideographic_Supplement,
- CR_In_Miscellaneous_Symbols_And_Pictographs,
- CR_In_Emoticons,
- CR_In_Transport_And_Map_Symbols,
- CR_In_Alchemical_Symbols,
- CR_In_CJK_Unified_Ideographs_Extension_B,
- CR_In_CJK_Unified_Ideographs_Extension_C,
- CR_In_CJK_Unified_Ideographs_Extension_D,
- CR_In_CJK_Compatibility_Ideographs_Supplement,
- CR_In_Tags,
- CR_In_Variation_Selectors_Supplement,
- CR_In_Supplementary_Private_Use_Area_A,
- CR_In_Supplementary_Private_Use_Area_B,
- CR_In_No_Block,
#endif /* USE_UNICODE_PROPERTIES */
};
struct uniname2ctype_struct {
@@ -25913,6 +22144,7 @@ static const struct uniname2ctype_struct *uniname2ctype_p(const char *, unsigned
%}
struct uniname2ctype_struct;
%%
+newline, 0
alpha, 1
blank, 2
cntrl, 3
@@ -25937,233 +22169,225 @@ cn, 20
co, 21
cs, 22
l, 23
-lc, 24
-ll, 25
-lm, 26
-lo, 27
-lt, 28
-lu, 29
-m, 30
-mc, 31
-me, 32
-mn, 33
-n, 34
-nd, 35
-nl, 36
-no, 37
-p, 38
-pc, 39
-pd, 40
-pe, 41
-pf, 42
-pi, 43
-po, 44
-ps, 45
-s, 46
-sc, 47
-sk, 48
-sm, 49
-so, 50
-z, 51
-zl, 52
-zp, 53
-zs, 54
-math, 55
-alphabetic, 56
-lowercase, 57
-uppercase, 58
-cased, 59
-caseignorable, 60
-changeswhenlowercased, 61
-changeswhenuppercased, 62
-changeswhentitlecased, 63
-changeswhencasefolded, 64
-changeswhencasemapped, 65
-idstart, 66
-idcontinue, 67
-xidstart, 68
-xidcontinue, 69
-defaultignorablecodepoint, 70
-graphemeextend, 71
-graphemebase, 72
-graphemelink, 73
-common, 74
-latin, 75
-greek, 76
-cyrillic, 77
-armenian, 78
-hebrew, 79
-arabic, 80
-syriac, 81
-thaana, 82
-devanagari, 83
-bengali, 84
-gurmukhi, 85
-gujarati, 86
-oriya, 87
-tamil, 88
-telugu, 89
-kannada, 90
-malayalam, 91
-sinhala, 92
-thai, 93
-lao, 94
-tibetan, 95
-myanmar, 96
-georgian, 97
-hangul, 98
-ethiopic, 99
-cherokee, 100
-canadianaboriginal, 101
-ogham, 102
-runic, 103
-khmer, 104
-mongolian, 105
-hiragana, 106
-katakana, 107
-bopomofo, 108
-han, 109
-yi, 110
-olditalic, 111
-gothic, 112
-deseret, 113
-inherited, 114
-tagalog, 115
-hanunoo, 116
-buhid, 117
-tagbanwa, 118
-limbu, 119
-taile, 120
-linearb, 121
-ugaritic, 122
-shavian, 123
-osmanya, 124
-cypriot, 125
-braille, 126
-buginese, 127
-coptic, 128
-newtailue, 129
-glagolitic, 130
-tifinagh, 131
-sylotinagri, 132
-oldpersian, 133
-kharoshthi, 134
-balinese, 135
-cuneiform, 136
-phoenician, 137
-phagspa, 138
-nko, 139
-sundanese, 140
-lepcha, 141
-olchiki, 142
-vai, 143
-saurashtra, 144
-kayahli, 145
-rejang, 146
-lycian, 147
-carian, 148
-lydian, 149
-cham, 150
-taitham, 151
-taiviet, 152
-avestan, 153
-egyptianhieroglyphs, 154
-samaritan, 155
-lisu, 156
-bamum, 157
-javanese, 158
-meeteimayek, 159
-imperialaramaic, 160
-oldsoutharabian, 161
-inscriptionalparthian, 162
-inscriptionalpahlavi, 163
-oldturkic, 164
-kaithi, 165
-batak, 166
-brahmi, 167
-mandaic, 168
-chakma, 169
-meroiticcursive, 170
-meroitichieroglyphs, 171
-miao, 172
-sharada, 173
-sorasompeng, 174
-takri, 175
-whitespace, 176
-bidicontrol, 177
-joincontrol, 178
-dash, 179
-hyphen, 180
-quotationmark, 181
-terminalpunctuation, 182
-othermath, 183
-hexdigit, 184
-asciihexdigit, 185
-otheralphabetic, 186
-ideographic, 187
-diacritic, 188
-extender, 189
-otherlowercase, 190
-otheruppercase, 191
-noncharactercodepoint, 192
-othergraphemeextend, 193
-idsbinaryoperator, 194
-idstrinaryoperator, 195
-radical, 196
-unifiedideograph, 197
-otherdefaultignorablecodepoint, 198
-deprecated, 199
-softdotted, 200
-logicalorderexception, 201
-otheridstart, 202
-otheridcontinue, 203
-sterm, 204
-variationselector, 205
-patternwhitespace, 206
-patternsyntax, 207
-unknown, 208
-ahex, 185
-bidic, 177
-ci, 60
-cwcf, 64
-cwcm, 65
-cwl, 61
-cwt, 63
-cwu, 62
-dep, 199
-di, 70
-dia, 188
-ext, 189
-grbase, 72
-grext, 71
-grlink, 73
-hex, 184
-idc, 67
-ideo, 187
-ids, 66
-idsb, 194
-idst, 195
-joinc, 178
-loe, 201
-nchar, 192
-oalpha, 186
-odi, 198
-ogrext, 193
-oidc, 203
-oids, 202
-olower, 190
-omath, 183
-oupper, 191
-patsyn, 207
-patws, 206
-qmark, 181
-sd, 200
-term, 182
-uideo, 197
-vs, 205
-wspace, 176
-xidc, 69
-xids, 68
+ll, 24
+lm, 25
+lo, 26
+lt, 27
+lu, 28
+m, 29
+mc, 30
+me, 31
+mn, 32
+n, 33
+nd, 34
+nl, 35
+no, 36
+p, 37
+pc, 38
+pd, 39
+pe, 40
+pf, 41
+pi, 42
+po, 43
+ps, 44
+s, 45
+sc, 46
+sk, 47
+sm, 48
+so, 49
+z, 50
+zl, 51
+zp, 52
+zs, 53
+math, 54
+alphabetic, 55
+lowercase, 56
+uppercase, 57
+cased, 58
+caseignorable, 59
+changeswhenlowercased, 60
+changeswhenuppercased, 61
+changeswhentitlecased, 62
+changeswhencasefolded, 63
+changeswhencasemapped, 64
+idstart, 65
+idcontinue, 66
+xidstart, 67
+xidcontinue, 68
+defaultignorablecodepoint, 69
+graphemeextend, 70
+graphemebase, 71
+graphemelink, 72
+common, 73
+latin, 74
+greek, 75
+cyrillic, 76
+armenian, 77
+hebrew, 78
+arabic, 79
+syriac, 80
+thaana, 81
+devanagari, 82
+bengali, 83
+gurmukhi, 84
+gujarati, 85
+oriya, 86
+tamil, 87
+telugu, 88
+kannada, 89
+malayalam, 90
+sinhala, 91
+thai, 92
+lao, 93
+tibetan, 94
+myanmar, 95
+georgian, 96
+hangul, 97
+ethiopic, 98
+cherokee, 99
+canadianaboriginal, 100
+ogham, 101
+runic, 102
+khmer, 103
+mongolian, 104
+hiragana, 105
+katakana, 106
+bopomofo, 107
+han, 108
+yi, 109
+olditalic, 110
+gothic, 111
+deseret, 112
+inherited, 113
+tagalog, 114
+hanunoo, 115
+buhid, 116
+tagbanwa, 117
+limbu, 118
+taile, 119
+linearb, 120
+ugaritic, 121
+shavian, 122
+osmanya, 123
+cypriot, 124
+braille, 125
+buginese, 126
+coptic, 127
+newtailue, 128
+glagolitic, 129
+tifinagh, 130
+sylotinagri, 131
+oldpersian, 132
+kharoshthi, 133
+balinese, 134
+cuneiform, 135
+phoenician, 136
+phagspa, 137
+nko, 138
+sundanese, 139
+lepcha, 140
+olchiki, 141
+vai, 142
+saurashtra, 143
+kayahli, 144
+rejang, 145
+lycian, 146
+carian, 147
+lydian, 148
+cham, 149
+taitham, 150
+taiviet, 151
+avestan, 152
+egyptianhieroglyphs, 153
+samaritan, 154
+lisu, 155
+bamum, 156
+javanese, 157
+meeteimayek, 158
+imperialaramaic, 159
+oldsoutharabian, 160
+inscriptionalparthian, 161
+inscriptionalpahlavi, 162
+oldturkic, 163
+kaithi, 164
+batak, 165
+brahmi, 166
+mandaic, 167
+whitespace, 168
+bidicontrol, 169
+joincontrol, 170
+dash, 171
+hyphen, 172
+quotationmark, 173
+terminalpunctuation, 174
+othermath, 175
+hexdigit, 176
+asciihexdigit, 177
+otheralphabetic, 178
+ideographic, 179
+diacritic, 180
+extender, 181
+otherlowercase, 182
+otheruppercase, 183
+noncharactercodepoint, 184
+othergraphemeextend, 185
+idsbinaryoperator, 186
+idstrinaryoperator, 187
+radical, 188
+unifiedideograph, 189
+otherdefaultignorablecodepoint, 190
+deprecated, 191
+softdotted, 192
+logicalorderexception, 193
+otheridstart, 194
+otheridcontinue, 195
+sterm, 196
+variationselector, 197
+patternwhitespace, 198
+patternsyntax, 199
+unknown, 200
+ahex, 177
+bidic, 169
+ci, 59
+cwcf, 63
+cwcm, 64
+cwl, 60
+cwt, 62
+cwu, 61
+dep, 191
+di, 69
+dia, 180
+ext, 181
+grbase, 71
+grext, 70
+grlink, 72
+hex, 176
+idc, 66
+ideo, 179
+ids, 65
+idsb, 186
+idst, 187
+joinc, 170
+loe, 193
+nchar, 184
+oalpha, 178
+odi, 190
+ogrext, 185
+oidc, 195
+oids, 194
+olower, 182
+omath, 175
+oupper, 183
+patsyn, 199
+patws, 198
+qmark, 173
+sd, 192
+term, 174
+uideo, 189
+vs, 197
+wspace, 168
+xidc, 68
+xids, 67
other, 17
control, 18
format, 19
@@ -26171,374 +22395,143 @@ unassigned, 20
privateuse, 21
surrogate, 22
letter, 23
-casedletter, 24
-lowercaseletter, 25
-modifierletter, 26
-otherletter, 27
-titlecaseletter, 28
-uppercaseletter, 29
-mark, 30
-combiningmark, 30
-spacingmark, 31
-enclosingmark, 32
-nonspacingmark, 33
-number, 34
-decimalnumber, 35
-letternumber, 36
-othernumber, 37
-punctuation, 38
-connectorpunctuation, 39
-dashpunctuation, 40
-closepunctuation, 41
-finalpunctuation, 42
-initialpunctuation, 43
-otherpunctuation, 44
-openpunctuation, 45
-symbol, 46
-currencysymbol, 47
-modifiersymbol, 48
-mathsymbol, 49
-othersymbol, 50
-separator, 51
-lineseparator, 52
-paragraphseparator, 53
-spaceseparator, 54
-arab, 80
-armi, 160
-armn, 78
-avst, 153
-bali, 135
-bamu, 157
-batk, 166
-beng, 84
-bopo, 108
-brah, 167
-brai, 126
-bugi, 127
-buhd, 117
-cakm, 169
-cans, 101
-cari, 148
-cher, 100
-copt, 128
-qaac, 128
-cprt, 125
-cyrl, 77
-deva, 83
-dsrt, 113
-egyp, 154
-ethi, 99
-geor, 97
-glag, 130
-goth, 112
-grek, 76
-gujr, 86
-guru, 85
-hang, 98
-hani, 109
-hano, 116
-hebr, 79
-hira, 106
-ital, 111
-java, 158
-kali, 145
-kana, 107
-khar, 134
-khmr, 104
-knda, 90
-kthi, 165
-lana, 151
-laoo, 94
-latn, 75
-lepc, 141
-limb, 119
-linb, 121
-lyci, 147
-lydi, 149
-mand, 168
-merc, 170
-mero, 171
-mlym, 91
-mong, 105
-mtei, 159
-mymr, 96
-nkoo, 139
-ogam, 102
-olck, 142
-orkh, 164
-orya, 87
-osma, 124
-phag, 138
-phli, 163
-phnx, 137
-plrd, 172
-prti, 162
-rjng, 146
-runr, 103
-samr, 155
-sarb, 161
-saur, 144
-shaw, 123
-shrd, 173
-sinh, 92
-sora, 174
-sund, 140
-sylo, 132
-syrc, 81
-tagb, 118
-takr, 175
-tale, 120
-talu, 129
-taml, 88
-tavt, 152
-telu, 89
-tfng, 131
-tglg, 115
-thaa, 82
-tibt, 95
-ugar, 122
-vaii, 143
-xpeo, 133
-xsux, 136
-yiii, 110
-zinh, 114
-qaai, 114
-zyyy, 74
-zzzz, 208
-age=1.1, 209
-age=2.0, 210
-age=2.1, 211
-age=3.0, 212
-age=3.1, 213
-age=3.2, 214
-age=4.0, 215
-age=4.1, 216
-age=5.0, 217
-age=5.1, 218
-age=5.2, 219
-age=6.0, 220
-age=6.1, 221
-inbasiclatin, 222
-inlatin1supplement, 223
-inlatinextendeda, 224
-inlatinextendedb, 225
-inipaextensions, 226
-inspacingmodifierletters, 227
-incombiningdiacriticalmarks, 228
-ingreekandcoptic, 229
-incyrillic, 230
-incyrillicsupplement, 231
-inarmenian, 232
-inhebrew, 233
-inarabic, 234
-insyriac, 235
-inarabicsupplement, 236
-inthaana, 237
-innko, 238
-insamaritan, 239
-inmandaic, 240
-inarabicextendeda, 241
-indevanagari, 242
-inbengali, 243
-ingurmukhi, 244
-ingujarati, 245
-inoriya, 246
-intamil, 247
-intelugu, 248
-inkannada, 249
-inmalayalam, 250
-insinhala, 251
-inthai, 252
-inlao, 253
-intibetan, 254
-inmyanmar, 255
-ingeorgian, 256
-inhanguljamo, 257
-inethiopic, 258
-inethiopicsupplement, 259
-incherokee, 260
-inunifiedcanadianaboriginalsyllabics, 261
-inogham, 262
-inrunic, 263
-intagalog, 264
-inhanunoo, 265
-inbuhid, 266
-intagbanwa, 267
-inkhmer, 268
-inmongolian, 269
-inunifiedcanadianaboriginalsyllabicsextended, 270
-inlimbu, 271
-intaile, 272
-innewtailue, 273
-inkhmersymbols, 274
-inbuginese, 275
-intaitham, 276
-inbalinese, 277
-insundanese, 278
-inbatak, 279
-inlepcha, 280
-inolchiki, 281
-insundanesesupplement, 282
-invedicextensions, 283
-inphoneticextensions, 284
-inphoneticextensionssupplement, 285
-incombiningdiacriticalmarkssupplement, 286
-inlatinextendedadditional, 287
-ingreekextended, 288
-ingeneralpunctuation, 289
-insuperscriptsandsubscripts, 290
-incurrencysymbols, 291
-incombiningdiacriticalmarksforsymbols, 292
-inletterlikesymbols, 293
-innumberforms, 294
-inarrows, 295
-inmathematicaloperators, 296
-inmiscellaneoustechnical, 297
-incontrolpictures, 298
-inopticalcharacterrecognition, 299
-inenclosedalphanumerics, 300
-inboxdrawing, 301
-inblockelements, 302
-ingeometricshapes, 303
-inmiscellaneoussymbols, 304
-indingbats, 305
-inmiscellaneousmathematicalsymbolsa, 306
-insupplementalarrowsa, 307
-inbraillepatterns, 308
-insupplementalarrowsb, 309
-inmiscellaneousmathematicalsymbolsb, 310
-insupplementalmathematicaloperators, 311
-inmiscellaneoussymbolsandarrows, 312
-inglagolitic, 313
-inlatinextendedc, 314
-incoptic, 315
-ingeorgiansupplement, 316
-intifinagh, 317
-inethiopicextended, 318
-incyrillicextendeda, 319
-insupplementalpunctuation, 320
-incjkradicalssupplement, 321
-inkangxiradicals, 322
-inideographicdescriptioncharacters, 323
-incjksymbolsandpunctuation, 324
-inhiragana, 325
-inkatakana, 326
-inbopomofo, 327
-inhangulcompatibilityjamo, 328
-inkanbun, 329
-inbopomofoextended, 330
-incjkstrokes, 331
-inkatakanaphoneticextensions, 332
-inenclosedcjklettersandmonths, 333
-incjkcompatibility, 334
-incjkunifiedideographsextensiona, 335
-inyijinghexagramsymbols, 336
-incjkunifiedideographs, 337
-inyisyllables, 338
-inyiradicals, 339
-inlisu, 340
-invai, 341
-incyrillicextendedb, 342
-inbamum, 343
-inmodifiertoneletters, 344
-inlatinextendedd, 345
-insylotinagri, 346
-incommonindicnumberforms, 347
-inphagspa, 348
-insaurashtra, 349
-indevanagariextended, 350
-inkayahli, 351
-inrejang, 352
-inhanguljamoextendeda, 353
-injavanese, 354
-incham, 355
-inmyanmarextendeda, 356
-intaiviet, 357
-inmeeteimayekextensions, 358
-inethiopicextendeda, 359
-inmeeteimayek, 360
-inhangulsyllables, 361
-inhanguljamoextendedb, 362
-inhighsurrogates, 363
-inhighprivateusesurrogates, 364
-inlowsurrogates, 365
-inprivateusearea, 366
-incjkcompatibilityideographs, 367
-inalphabeticpresentationforms, 368
-inarabicpresentationformsa, 369
-invariationselectors, 370
-inverticalforms, 371
-incombininghalfmarks, 372
-incjkcompatibilityforms, 373
-insmallformvariants, 374
-inarabicpresentationformsb, 375
-inhalfwidthandfullwidthforms, 376
-inspecials, 377
-inlinearbsyllabary, 378
-inlinearbideograms, 379
-inaegeannumbers, 380
-inancientgreeknumbers, 381
-inancientsymbols, 382
-inphaistosdisc, 383
-inlycian, 384
-incarian, 385
-inolditalic, 386
-ingothic, 387
-inugaritic, 388
-inoldpersian, 389
-indeseret, 390
-inshavian, 391
-inosmanya, 392
-incypriotsyllabary, 393
-inimperialaramaic, 394
-inphoenician, 395
-inlydian, 396
-inmeroitichieroglyphs, 397
-inmeroiticcursive, 398
-inkharoshthi, 399
-inoldsoutharabian, 400
-inavestan, 401
-ininscriptionalparthian, 402
-ininscriptionalpahlavi, 403
-inoldturkic, 404
-inruminumeralsymbols, 405
-inbrahmi, 406
-inkaithi, 407
-insorasompeng, 408
-inchakma, 409
-insharada, 410
-intakri, 411
-incuneiform, 412
-incuneiformnumbersandpunctuation, 413
-inegyptianhieroglyphs, 414
-inbamumsupplement, 415
-inmiao, 416
-inkanasupplement, 417
-inbyzantinemusicalsymbols, 418
-inmusicalsymbols, 419
-inancientgreekmusicalnotation, 420
-intaixuanjingsymbols, 421
-incountingrodnumerals, 422
-inmathematicalalphanumericsymbols, 423
-inarabicmathematicalalphabeticsymbols, 424
-inmahjongtiles, 425
-indominotiles, 426
-inplayingcards, 427
-inenclosedalphanumericsupplement, 428
-inenclosedideographicsupplement, 429
-inmiscellaneoussymbolsandpictographs, 430
-inemoticons, 431
-intransportandmapsymbols, 432
-inalchemicalsymbols, 433
-incjkunifiedideographsextensionb, 434
-incjkunifiedideographsextensionc, 435
-incjkunifiedideographsextensiond, 436
-incjkcompatibilityideographssupplement, 437
-intags, 438
-invariationselectorssupplement, 439
-insupplementaryprivateuseareaa, 440
-insupplementaryprivateuseareab, 441
-innoblock, 442
+lowercaseletter, 24
+modifierletter, 25
+otherletter, 26
+titlecaseletter, 27
+uppercaseletter, 28
+mark, 29
+spacingmark, 30
+enclosingmark, 31
+nonspacingmark, 32
+number, 33
+decimalnumber, 34
+letternumber, 35
+othernumber, 36
+punctuation, 37
+connectorpunctuation, 38
+dashpunctuation, 39
+closepunctuation, 40
+finalpunctuation, 41
+initialpunctuation, 42
+otherpunctuation, 43
+openpunctuation, 44
+symbol, 45
+currencysymbol, 46
+modifiersymbol, 47
+mathsymbol, 48
+othersymbol, 49
+separator, 50
+lineseparator, 51
+paragraphseparator, 52
+spaceseparator, 53
+arab, 79
+armi, 159
+armn, 77
+avst, 152
+bali, 134
+bamu, 156
+batk, 165
+beng, 83
+bopo, 107
+brah, 166
+brai, 125
+bugi, 126
+buhd, 116
+cans, 100
+cari, 147
+cher, 99
+copt, 127
+qaac, 127
+cprt, 124
+cyrl, 76
+deva, 82
+dsrt, 112
+egyp, 153
+ethi, 98
+geor, 96
+glag, 129
+goth, 111
+grek, 75
+gujr, 85
+guru, 84
+hang, 97
+hani, 108
+hano, 115
+hebr, 78
+hira, 105
+ital, 110
+java, 157
+kali, 144
+kana, 106
+khar, 133
+khmr, 103
+knda, 89
+kthi, 164
+lana, 150
+laoo, 93
+latn, 74
+lepc, 140
+limb, 118
+linb, 120
+lyci, 146
+lydi, 148
+mand, 167
+mlym, 90
+mong, 104
+mtei, 158
+mymr, 95
+nkoo, 138
+ogam, 101
+olck, 141
+orkh, 163
+orya, 86
+osma, 123
+phag, 137
+phli, 162
+phnx, 136
+prti, 161
+rjng, 145
+runr, 102
+samr, 154
+sarb, 160
+saur, 143
+shaw, 122
+sinh, 91
+sund, 139
+sylo, 131
+syrc, 80
+tagb, 117
+tale, 119
+talu, 128
+taml, 87
+tavt, 151
+telu, 88
+tfng, 130
+tglg, 114
+thaa, 81
+tibt, 94
+ugar, 121
+vaii, 142
+xpeo, 132
+xsux, 135
+yiii, 109
+zinh, 113
+qaai, 113
+zyyy, 73
+zzzz, 200
+age=1.1, 201
+age=2.0, 202
+age=2.1, 203
+age=3.0, 204
+age=3.1, 205
+age=3.2, 206
+age=4.0, 207
+age=4.1, 208
+age=5.0, 209
+age=5.1, 210
+age=5.2, 211
+age=6.0, 212
#endif /* USE_UNICODE_PROPERTIES */
%%
static int
diff --git a/enc/unicode/name2ctype.src b/enc/unicode/name2ctype.src
index ff94d68b3b..2e27f3f7de 100644
--- a/enc/unicode/name2ctype.src
+++ b/enc/unicode/name2ctype.src
@@ -1,4273 +1,6 @@
%{
#define long size_t
-/* 'NEWLINE': [[:NEWLINE:]] */
-static const OnigCodePoint CR_NEWLINE[] = {
- 1,
- 0x000a, 0x000a,
-}; /* CR_NEWLINE */
-
-/* 'Alpha': [[:Alpha:]] */
-static const OnigCodePoint CR_Alpha[] = {
- 540,
- 0x0041, 0x005a,
- 0x0061, 0x007a,
- 0x00aa, 0x00aa,
- 0x00b5, 0x00b5,
- 0x00ba, 0x00ba,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00f6,
- 0x00f8, 0x02c1,
- 0x02c6, 0x02d1,
- 0x02e0, 0x02e4,
- 0x02ec, 0x02ec,
- 0x02ee, 0x02ee,
- 0x0345, 0x0345,
- 0x0370, 0x0374,
- 0x0376, 0x0377,
- 0x037a, 0x037d,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x03f5,
- 0x03f7, 0x0481,
- 0x048a, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x0559,
- 0x0561, 0x0587,
- 0x05b0, 0x05bd,
- 0x05bf, 0x05bf,
- 0x05c1, 0x05c2,
- 0x05c4, 0x05c5,
- 0x05c7, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f2,
- 0x0610, 0x061a,
- 0x0620, 0x0657,
- 0x0659, 0x065f,
- 0x066e, 0x06d3,
- 0x06d5, 0x06dc,
- 0x06e1, 0x06e8,
- 0x06ed, 0x06ef,
- 0x06fa, 0x06fc,
- 0x06ff, 0x06ff,
- 0x0710, 0x073f,
- 0x074d, 0x07b1,
- 0x07ca, 0x07ea,
- 0x07f4, 0x07f5,
- 0x07fa, 0x07fa,
- 0x0800, 0x0817,
- 0x081a, 0x082c,
- 0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08e9,
- 0x08f0, 0x08fe,
- 0x0900, 0x093b,
- 0x093d, 0x094c,
- 0x094e, 0x0950,
- 0x0955, 0x0963,
- 0x0971, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bd, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09cc,
- 0x09ce, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09f0, 0x09f1,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4c,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a70, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abd, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acc,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3d, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4c,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b71, 0x0b71,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcc,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4c,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbd, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccc,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4c,
- 0x0d4e, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d7a, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df3,
- 0x0e01, 0x0e3a,
- 0x0e40, 0x0e46,
- 0x0e4d, 0x0e4d,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ecd, 0x0ecd,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f00,
- 0x0f40, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f81,
- 0x0f88, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x1000, 0x1036,
- 0x1038, 0x1038,
- 0x103b, 0x103f,
- 0x1050, 0x1062,
- 0x1065, 0x1068,
- 0x106e, 0x1086,
- 0x108e, 0x108e,
- 0x109c, 0x109d,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x10fa,
- 0x10fc, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135f, 0x135f,
- 0x1380, 0x138f,
- 0x13a0, 0x13f4,
- 0x1401, 0x166c,
- 0x166f, 0x167f,
- 0x1681, 0x169a,
- 0x16a0, 0x16ea,
- 0x16ee, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1713,
- 0x1720, 0x1733,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17b3,
- 0x17b6, 0x17c8,
- 0x17d7, 0x17d7,
- 0x17dc, 0x17dc,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x1938,
- 0x1950, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x1a00, 0x1a1b,
- 0x1a20, 0x1a5e,
- 0x1a61, 0x1a74,
- 0x1aa7, 0x1aa7,
- 0x1b00, 0x1b33,
- 0x1b35, 0x1b43,
- 0x1b45, 0x1b4b,
- 0x1b80, 0x1ba9,
- 0x1bac, 0x1baf,
- 0x1bba, 0x1be5,
- 0x1be7, 0x1bf1,
- 0x1c00, 0x1c35,
- 0x1c4d, 0x1c4f,
- 0x1c5a, 0x1c7d,
- 0x1ce9, 0x1cec,
- 0x1cee, 0x1cf3,
- 0x1cf5, 0x1cf6,
- 0x1d00, 0x1dbf,
- 0x1e00, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fbc,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fcc,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fe0, 0x1fec,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffc,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210a, 0x2113,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x212f, 0x2139,
- 0x213c, 0x213f,
- 0x2145, 0x2149,
- 0x214e, 0x214e,
- 0x2160, 0x2188,
- 0x24b6, 0x24e9,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2ce4,
- 0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d6f,
- 0x2d80, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2dff,
- 0x2e2f, 0x2e2f,
- 0x3005, 0x3007,
- 0x3021, 0x3029,
- 0x3031, 0x3035,
- 0x3038, 0x303c,
- 0x3041, 0x3096,
- 0x309d, 0x309f,
- 0x30a1, 0x30fa,
- 0x30fc, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x31a0, 0x31ba,
- 0x31f0, 0x31ff,
- 0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa4d0, 0xa4fd,
- 0xa500, 0xa60c,
- 0xa610, 0xa61f,
- 0xa62a, 0xa62b,
- 0xa640, 0xa66e,
- 0xa674, 0xa67b,
- 0xa67f, 0xa697,
- 0xa69f, 0xa6ef,
- 0xa717, 0xa71f,
- 0xa722, 0xa788,
- 0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
- 0xa803, 0xa805,
- 0xa807, 0xa80a,
- 0xa80c, 0xa827,
- 0xa840, 0xa873,
- 0xa880, 0xa8c3,
- 0xa8f2, 0xa8f7,
- 0xa8fb, 0xa8fb,
- 0xa90a, 0xa92a,
- 0xa930, 0xa952,
- 0xa960, 0xa97c,
- 0xa980, 0xa9b2,
- 0xa9b4, 0xa9bf,
- 0xa9cf, 0xa9cf,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa60, 0xaa76,
- 0xaa7a, 0xaa7a,
- 0xaa80, 0xaabe,
- 0xaac0, 0xaac0,
- 0xaac2, 0xaac2,
- 0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf5,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabea,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb28,
- 0xfb2a, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbb1,
- 0xfbd3, 0xfd3d,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfb,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xff21, 0xff3a,
- 0xff41, 0xff5a,
- 0xff66, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10140, 0x10174,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x103a0, 0x103c3,
- 0x103c8, 0x103cf,
- 0x103d1, 0x103d5,
- 0x10400, 0x1049d,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10900, 0x10915,
- 0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a60, 0x10a7c,
- 0x10b00, 0x10b35,
- 0x10b40, 0x10b55,
- 0x10b60, 0x10b72,
- 0x10c00, 0x10c48,
- 0x11000, 0x11045,
- 0x11082, 0x110b8,
- 0x110d0, 0x110e8,
- 0x11100, 0x11132,
- 0x11180, 0x111bf,
- 0x111c1, 0x111c4,
- 0x11680, 0x116b5,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f93, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d6c0,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6fa,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d734,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d76e,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d7a8,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7cb,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
-}; /* CR_Alpha */
-
-/* 'Blank': [[:Blank:]] */
-static const OnigCodePoint CR_Blank[] = {
- 9,
- 0x0009, 0x0009,
- 0x0020, 0x0020,
- 0x00a0, 0x00a0,
- 0x1680, 0x1680,
- 0x180e, 0x180e,
- 0x2000, 0x200a,
- 0x202f, 0x202f,
- 0x205f, 0x205f,
- 0x3000, 0x3000,
-}; /* CR_Blank */
-
-/* 'Cntrl': [[:Cntrl:]] */
-static const OnigCodePoint CR_Cntrl[] = {
- 2,
- 0x0000, 0x001f,
- 0x007f, 0x009f,
-}; /* CR_Cntrl */
-
-/* 'Digit': [[:Digit:]] */
-static const OnigCodePoint CR_Digit[] = {
- 42,
- 0x0030, 0x0039,
- 0x0660, 0x0669,
- 0x06f0, 0x06f9,
- 0x07c0, 0x07c9,
- 0x0966, 0x096f,
- 0x09e6, 0x09ef,
- 0x0a66, 0x0a6f,
- 0x0ae6, 0x0aef,
- 0x0b66, 0x0b6f,
- 0x0be6, 0x0bef,
- 0x0c66, 0x0c6f,
- 0x0ce6, 0x0cef,
- 0x0d66, 0x0d6f,
- 0x0e50, 0x0e59,
- 0x0ed0, 0x0ed9,
- 0x0f20, 0x0f29,
- 0x1040, 0x1049,
- 0x1090, 0x1099,
- 0x17e0, 0x17e9,
- 0x1810, 0x1819,
- 0x1946, 0x194f,
- 0x19d0, 0x19d9,
- 0x1a80, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1b50, 0x1b59,
- 0x1bb0, 0x1bb9,
- 0x1c40, 0x1c49,
- 0x1c50, 0x1c59,
- 0xa620, 0xa629,
- 0xa8d0, 0xa8d9,
- 0xa900, 0xa909,
- 0xa9d0, 0xa9d9,
- 0xaa50, 0xaa59,
- 0xabf0, 0xabf9,
- 0xff10, 0xff19,
- 0x104a0, 0x104a9,
- 0x11066, 0x1106f,
- 0x110f0, 0x110f9,
- 0x11136, 0x1113f,
- 0x111d0, 0x111d9,
- 0x116c0, 0x116c9,
- 0x1d7ce, 0x1d7ff,
-}; /* CR_Digit */
-
-/* 'Graph': [[:Graph:]] */
-static const OnigCodePoint CR_Graph[] = {
- 544,
- 0x0021, 0x007e,
- 0x00a1, 0x0377,
- 0x037a, 0x037e,
- 0x0384, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x055f,
- 0x0561, 0x0587,
- 0x0589, 0x058a,
- 0x058f, 0x058f,
- 0x0591, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f4,
- 0x0600, 0x0604,
- 0x0606, 0x061b,
- 0x061e, 0x070d,
- 0x070f, 0x074a,
- 0x074d, 0x07b1,
- 0x07c0, 0x07fa,
- 0x0800, 0x082d,
- 0x0830, 0x083e,
- 0x0840, 0x085b,
- 0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
- 0x0900, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bc, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09e6, 0x09fb,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3c, 0x0a3c,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4d,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a66, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abc, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acd,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3c, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4d,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b66, 0x0b77,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcd,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0be6, 0x0bfa,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4d,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c66, 0x0c6f,
- 0x0c78, 0x0c7f,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbc, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccd,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0ce6, 0x0cef,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d66, 0x0d75,
- 0x0d79, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dca, 0x0dca,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df4,
- 0x0e01, 0x0e3a,
- 0x0e3f, 0x0e5b,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ec8, 0x0ecd,
- 0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x0fbe, 0x0fcc,
- 0x0fce, 0x0fda,
- 0x1000, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135d, 0x137c,
- 0x1380, 0x1399,
- 0x13a0, 0x13f4,
- 0x1400, 0x167f,
- 0x1681, 0x169c,
- 0x16a0, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1714,
- 0x1720, 0x1736,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17dd,
- 0x17e0, 0x17e9,
- 0x17f0, 0x17f9,
- 0x1800, 0x180d,
- 0x1810, 0x1819,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x193b,
- 0x1940, 0x1940,
- 0x1944, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x19d0, 0x19da,
- 0x19de, 0x1a1b,
- 0x1a1e, 0x1a5e,
- 0x1a60, 0x1a7c,
- 0x1a7f, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1aa0, 0x1aad,
- 0x1b00, 0x1b4b,
- 0x1b50, 0x1b7c,
- 0x1b80, 0x1bf3,
- 0x1bfc, 0x1c37,
- 0x1c3b, 0x1c49,
- 0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd0, 0x1cf6,
- 0x1d00, 0x1de6,
- 0x1dfc, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fc4,
- 0x1fc6, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fdd, 0x1fef,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffe,
- 0x200b, 0x2027,
- 0x202a, 0x202e,
- 0x2030, 0x205e,
- 0x2060, 0x2064,
- 0x206a, 0x2071,
- 0x2074, 0x208e,
- 0x2090, 0x209c,
- 0x20a0, 0x20b9,
- 0x20d0, 0x20f0,
- 0x2100, 0x2189,
- 0x2190, 0x23f3,
- 0x2400, 0x2426,
- 0x2440, 0x244a,
- 0x2460, 0x26ff,
- 0x2701, 0x2b4c,
- 0x2b50, 0x2b59,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2cf3,
- 0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d70,
- 0x2d7f, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2e3b,
- 0x2e80, 0x2e99,
- 0x2e9b, 0x2ef3,
- 0x2f00, 0x2fd5,
- 0x2ff0, 0x2ffb,
- 0x3001, 0x303f,
- 0x3041, 0x3096,
- 0x3099, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x3190, 0x31ba,
- 0x31c0, 0x31e3,
- 0x31f0, 0x321e,
- 0x3220, 0x32fe,
- 0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa490, 0xa4c6,
- 0xa4d0, 0xa62b,
- 0xa640, 0xa697,
- 0xa69f, 0xa6f7,
- 0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa82b,
- 0xa830, 0xa839,
- 0xa840, 0xa877,
- 0xa880, 0xa8c4,
- 0xa8ce, 0xa8d9,
- 0xa8e0, 0xa8fb,
- 0xa900, 0xa953,
- 0xa95f, 0xa97c,
- 0xa980, 0xa9cd,
- 0xa9cf, 0xa9d9,
- 0xa9de, 0xa9df,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa50, 0xaa59,
- 0xaa5c, 0xaa7b,
- 0xaa80, 0xaac2,
- 0xaadb, 0xaaf6,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabed,
- 0xabf0, 0xabf9,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xe000, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbc1,
- 0xfbd3, 0xfd3f,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfd,
- 0xfe00, 0xfe19,
- 0xfe20, 0xfe26,
- 0xfe30, 0xfe52,
- 0xfe54, 0xfe66,
- 0xfe68, 0xfe6b,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xfeff, 0xfeff,
- 0xff01, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0xffe0, 0xffe6,
- 0xffe8, 0xffee,
- 0xfff9, 0xfffd,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10100, 0x10102,
- 0x10107, 0x10133,
- 0x10137, 0x1018a,
- 0x10190, 0x1019b,
- 0x101d0, 0x101fd,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10320, 0x10323,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x1039f, 0x103c3,
- 0x103c8, 0x103d5,
- 0x10400, 0x1049d,
- 0x104a0, 0x104a9,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10857, 0x1085f,
- 0x10900, 0x1091b,
- 0x1091f, 0x10939,
- 0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a38, 0x10a3a,
- 0x10a3f, 0x10a47,
- 0x10a50, 0x10a58,
- 0x10a60, 0x10a7f,
- 0x10b00, 0x10b35,
- 0x10b39, 0x10b55,
- 0x10b58, 0x10b72,
- 0x10b78, 0x10b7f,
- 0x10c00, 0x10c48,
- 0x10e60, 0x10e7e,
- 0x11000, 0x1104d,
- 0x11052, 0x1106f,
- 0x11080, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x12470, 0x12473,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d000, 0x1d0f5,
- 0x1d100, 0x1d126,
- 0x1d129, 0x1d1dd,
- 0x1d200, 0x1d245,
- 0x1d300, 0x1d356,
- 0x1d360, 0x1d371,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d7cb,
- 0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
- 0x1f000, 0x1f02b,
- 0x1f030, 0x1f093,
- 0x1f0a0, 0x1f0ae,
- 0x1f0b1, 0x1f0be,
- 0x1f0c1, 0x1f0cf,
- 0x1f0d1, 0x1f0df,
- 0x1f100, 0x1f10a,
- 0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
- 0x1f170, 0x1f19a,
- 0x1f1e6, 0x1f202,
- 0x1f210, 0x1f23a,
- 0x1f240, 0x1f248,
- 0x1f250, 0x1f251,
- 0x1f300, 0x1f320,
- 0x1f330, 0x1f335,
- 0x1f337, 0x1f37c,
- 0x1f380, 0x1f393,
- 0x1f3a0, 0x1f3c4,
- 0x1f3c6, 0x1f3ca,
- 0x1f3e0, 0x1f3f0,
- 0x1f400, 0x1f43e,
- 0x1f440, 0x1f440,
- 0x1f442, 0x1f4f7,
- 0x1f4f9, 0x1f4fc,
- 0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
- 0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
- 0x1f645, 0x1f64f,
- 0x1f680, 0x1f6c5,
- 0x1f700, 0x1f773,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
- 0xe0001, 0xe0001,
- 0xe0020, 0xe007f,
- 0xe0100, 0xe01ef,
- 0xf0000, 0xffffd,
- 0x100000, 0x10fffd,
-}; /* CR_Graph */
-
-/* 'Lower': [[:Lower:]] */
-static const OnigCodePoint CR_Lower[] = {
- 618,
- 0x0061, 0x007a,
- 0x00aa, 0x00aa,
- 0x00b5, 0x00b5,
- 0x00ba, 0x00ba,
- 0x00df, 0x00f6,
- 0x00f8, 0x00ff,
- 0x0101, 0x0101,
- 0x0103, 0x0103,
- 0x0105, 0x0105,
- 0x0107, 0x0107,
- 0x0109, 0x0109,
- 0x010b, 0x010b,
- 0x010d, 0x010d,
- 0x010f, 0x010f,
- 0x0111, 0x0111,
- 0x0113, 0x0113,
- 0x0115, 0x0115,
- 0x0117, 0x0117,
- 0x0119, 0x0119,
- 0x011b, 0x011b,
- 0x011d, 0x011d,
- 0x011f, 0x011f,
- 0x0121, 0x0121,
- 0x0123, 0x0123,
- 0x0125, 0x0125,
- 0x0127, 0x0127,
- 0x0129, 0x0129,
- 0x012b, 0x012b,
- 0x012d, 0x012d,
- 0x012f, 0x012f,
- 0x0131, 0x0131,
- 0x0133, 0x0133,
- 0x0135, 0x0135,
- 0x0137, 0x0138,
- 0x013a, 0x013a,
- 0x013c, 0x013c,
- 0x013e, 0x013e,
- 0x0140, 0x0140,
- 0x0142, 0x0142,
- 0x0144, 0x0144,
- 0x0146, 0x0146,
- 0x0148, 0x0149,
- 0x014b, 0x014b,
- 0x014d, 0x014d,
- 0x014f, 0x014f,
- 0x0151, 0x0151,
- 0x0153, 0x0153,
- 0x0155, 0x0155,
- 0x0157, 0x0157,
- 0x0159, 0x0159,
- 0x015b, 0x015b,
- 0x015d, 0x015d,
- 0x015f, 0x015f,
- 0x0161, 0x0161,
- 0x0163, 0x0163,
- 0x0165, 0x0165,
- 0x0167, 0x0167,
- 0x0169, 0x0169,
- 0x016b, 0x016b,
- 0x016d, 0x016d,
- 0x016f, 0x016f,
- 0x0171, 0x0171,
- 0x0173, 0x0173,
- 0x0175, 0x0175,
- 0x0177, 0x0177,
- 0x017a, 0x017a,
- 0x017c, 0x017c,
- 0x017e, 0x0180,
- 0x0183, 0x0183,
- 0x0185, 0x0185,
- 0x0188, 0x0188,
- 0x018c, 0x018d,
- 0x0192, 0x0192,
- 0x0195, 0x0195,
- 0x0199, 0x019b,
- 0x019e, 0x019e,
- 0x01a1, 0x01a1,
- 0x01a3, 0x01a3,
- 0x01a5, 0x01a5,
- 0x01a8, 0x01a8,
- 0x01aa, 0x01ab,
- 0x01ad, 0x01ad,
- 0x01b0, 0x01b0,
- 0x01b4, 0x01b4,
- 0x01b6, 0x01b6,
- 0x01b9, 0x01ba,
- 0x01bd, 0x01bf,
- 0x01c6, 0x01c6,
- 0x01c9, 0x01c9,
- 0x01cc, 0x01cc,
- 0x01ce, 0x01ce,
- 0x01d0, 0x01d0,
- 0x01d2, 0x01d2,
- 0x01d4, 0x01d4,
- 0x01d6, 0x01d6,
- 0x01d8, 0x01d8,
- 0x01da, 0x01da,
- 0x01dc, 0x01dd,
- 0x01df, 0x01df,
- 0x01e1, 0x01e1,
- 0x01e3, 0x01e3,
- 0x01e5, 0x01e5,
- 0x01e7, 0x01e7,
- 0x01e9, 0x01e9,
- 0x01eb, 0x01eb,
- 0x01ed, 0x01ed,
- 0x01ef, 0x01f0,
- 0x01f3, 0x01f3,
- 0x01f5, 0x01f5,
- 0x01f9, 0x01f9,
- 0x01fb, 0x01fb,
- 0x01fd, 0x01fd,
- 0x01ff, 0x01ff,
- 0x0201, 0x0201,
- 0x0203, 0x0203,
- 0x0205, 0x0205,
- 0x0207, 0x0207,
- 0x0209, 0x0209,
- 0x020b, 0x020b,
- 0x020d, 0x020d,
- 0x020f, 0x020f,
- 0x0211, 0x0211,
- 0x0213, 0x0213,
- 0x0215, 0x0215,
- 0x0217, 0x0217,
- 0x0219, 0x0219,
- 0x021b, 0x021b,
- 0x021d, 0x021d,
- 0x021f, 0x021f,
- 0x0221, 0x0221,
- 0x0223, 0x0223,
- 0x0225, 0x0225,
- 0x0227, 0x0227,
- 0x0229, 0x0229,
- 0x022b, 0x022b,
- 0x022d, 0x022d,
- 0x022f, 0x022f,
- 0x0231, 0x0231,
- 0x0233, 0x0239,
- 0x023c, 0x023c,
- 0x023f, 0x0240,
- 0x0242, 0x0242,
- 0x0247, 0x0247,
- 0x0249, 0x0249,
- 0x024b, 0x024b,
- 0x024d, 0x024d,
- 0x024f, 0x0293,
- 0x0295, 0x02b8,
- 0x02c0, 0x02c1,
- 0x02e0, 0x02e4,
- 0x0345, 0x0345,
- 0x0371, 0x0371,
- 0x0373, 0x0373,
- 0x0377, 0x0377,
- 0x037a, 0x037d,
- 0x0390, 0x0390,
- 0x03ac, 0x03ce,
- 0x03d0, 0x03d1,
- 0x03d5, 0x03d7,
- 0x03d9, 0x03d9,
- 0x03db, 0x03db,
- 0x03dd, 0x03dd,
- 0x03df, 0x03df,
- 0x03e1, 0x03e1,
- 0x03e3, 0x03e3,
- 0x03e5, 0x03e5,
- 0x03e7, 0x03e7,
- 0x03e9, 0x03e9,
- 0x03eb, 0x03eb,
- 0x03ed, 0x03ed,
- 0x03ef, 0x03f3,
- 0x03f5, 0x03f5,
- 0x03f8, 0x03f8,
- 0x03fb, 0x03fc,
- 0x0430, 0x045f,
- 0x0461, 0x0461,
- 0x0463, 0x0463,
- 0x0465, 0x0465,
- 0x0467, 0x0467,
- 0x0469, 0x0469,
- 0x046b, 0x046b,
- 0x046d, 0x046d,
- 0x046f, 0x046f,
- 0x0471, 0x0471,
- 0x0473, 0x0473,
- 0x0475, 0x0475,
- 0x0477, 0x0477,
- 0x0479, 0x0479,
- 0x047b, 0x047b,
- 0x047d, 0x047d,
- 0x047f, 0x047f,
- 0x0481, 0x0481,
- 0x048b, 0x048b,
- 0x048d, 0x048d,
- 0x048f, 0x048f,
- 0x0491, 0x0491,
- 0x0493, 0x0493,
- 0x0495, 0x0495,
- 0x0497, 0x0497,
- 0x0499, 0x0499,
- 0x049b, 0x049b,
- 0x049d, 0x049d,
- 0x049f, 0x049f,
- 0x04a1, 0x04a1,
- 0x04a3, 0x04a3,
- 0x04a5, 0x04a5,
- 0x04a7, 0x04a7,
- 0x04a9, 0x04a9,
- 0x04ab, 0x04ab,
- 0x04ad, 0x04ad,
- 0x04af, 0x04af,
- 0x04b1, 0x04b1,
- 0x04b3, 0x04b3,
- 0x04b5, 0x04b5,
- 0x04b7, 0x04b7,
- 0x04b9, 0x04b9,
- 0x04bb, 0x04bb,
- 0x04bd, 0x04bd,
- 0x04bf, 0x04bf,
- 0x04c2, 0x04c2,
- 0x04c4, 0x04c4,
- 0x04c6, 0x04c6,
- 0x04c8, 0x04c8,
- 0x04ca, 0x04ca,
- 0x04cc, 0x04cc,
- 0x04ce, 0x04cf,
- 0x04d1, 0x04d1,
- 0x04d3, 0x04d3,
- 0x04d5, 0x04d5,
- 0x04d7, 0x04d7,
- 0x04d9, 0x04d9,
- 0x04db, 0x04db,
- 0x04dd, 0x04dd,
- 0x04df, 0x04df,
- 0x04e1, 0x04e1,
- 0x04e3, 0x04e3,
- 0x04e5, 0x04e5,
- 0x04e7, 0x04e7,
- 0x04e9, 0x04e9,
- 0x04eb, 0x04eb,
- 0x04ed, 0x04ed,
- 0x04ef, 0x04ef,
- 0x04f1, 0x04f1,
- 0x04f3, 0x04f3,
- 0x04f5, 0x04f5,
- 0x04f7, 0x04f7,
- 0x04f9, 0x04f9,
- 0x04fb, 0x04fb,
- 0x04fd, 0x04fd,
- 0x04ff, 0x04ff,
- 0x0501, 0x0501,
- 0x0503, 0x0503,
- 0x0505, 0x0505,
- 0x0507, 0x0507,
- 0x0509, 0x0509,
- 0x050b, 0x050b,
- 0x050d, 0x050d,
- 0x050f, 0x050f,
- 0x0511, 0x0511,
- 0x0513, 0x0513,
- 0x0515, 0x0515,
- 0x0517, 0x0517,
- 0x0519, 0x0519,
- 0x051b, 0x051b,
- 0x051d, 0x051d,
- 0x051f, 0x051f,
- 0x0521, 0x0521,
- 0x0523, 0x0523,
- 0x0525, 0x0525,
- 0x0527, 0x0527,
- 0x0561, 0x0587,
- 0x1d00, 0x1dbf,
- 0x1e01, 0x1e01,
- 0x1e03, 0x1e03,
- 0x1e05, 0x1e05,
- 0x1e07, 0x1e07,
- 0x1e09, 0x1e09,
- 0x1e0b, 0x1e0b,
- 0x1e0d, 0x1e0d,
- 0x1e0f, 0x1e0f,
- 0x1e11, 0x1e11,
- 0x1e13, 0x1e13,
- 0x1e15, 0x1e15,
- 0x1e17, 0x1e17,
- 0x1e19, 0x1e19,
- 0x1e1b, 0x1e1b,
- 0x1e1d, 0x1e1d,
- 0x1e1f, 0x1e1f,
- 0x1e21, 0x1e21,
- 0x1e23, 0x1e23,
- 0x1e25, 0x1e25,
- 0x1e27, 0x1e27,
- 0x1e29, 0x1e29,
- 0x1e2b, 0x1e2b,
- 0x1e2d, 0x1e2d,
- 0x1e2f, 0x1e2f,
- 0x1e31, 0x1e31,
- 0x1e33, 0x1e33,
- 0x1e35, 0x1e35,
- 0x1e37, 0x1e37,
- 0x1e39, 0x1e39,
- 0x1e3b, 0x1e3b,
- 0x1e3d, 0x1e3d,
- 0x1e3f, 0x1e3f,
- 0x1e41, 0x1e41,
- 0x1e43, 0x1e43,
- 0x1e45, 0x1e45,
- 0x1e47, 0x1e47,
- 0x1e49, 0x1e49,
- 0x1e4b, 0x1e4b,
- 0x1e4d, 0x1e4d,
- 0x1e4f, 0x1e4f,
- 0x1e51, 0x1e51,
- 0x1e53, 0x1e53,
- 0x1e55, 0x1e55,
- 0x1e57, 0x1e57,
- 0x1e59, 0x1e59,
- 0x1e5b, 0x1e5b,
- 0x1e5d, 0x1e5d,
- 0x1e5f, 0x1e5f,
- 0x1e61, 0x1e61,
- 0x1e63, 0x1e63,
- 0x1e65, 0x1e65,
- 0x1e67, 0x1e67,
- 0x1e69, 0x1e69,
- 0x1e6b, 0x1e6b,
- 0x1e6d, 0x1e6d,
- 0x1e6f, 0x1e6f,
- 0x1e71, 0x1e71,
- 0x1e73, 0x1e73,
- 0x1e75, 0x1e75,
- 0x1e77, 0x1e77,
- 0x1e79, 0x1e79,
- 0x1e7b, 0x1e7b,
- 0x1e7d, 0x1e7d,
- 0x1e7f, 0x1e7f,
- 0x1e81, 0x1e81,
- 0x1e83, 0x1e83,
- 0x1e85, 0x1e85,
- 0x1e87, 0x1e87,
- 0x1e89, 0x1e89,
- 0x1e8b, 0x1e8b,
- 0x1e8d, 0x1e8d,
- 0x1e8f, 0x1e8f,
- 0x1e91, 0x1e91,
- 0x1e93, 0x1e93,
- 0x1e95, 0x1e9d,
- 0x1e9f, 0x1e9f,
- 0x1ea1, 0x1ea1,
- 0x1ea3, 0x1ea3,
- 0x1ea5, 0x1ea5,
- 0x1ea7, 0x1ea7,
- 0x1ea9, 0x1ea9,
- 0x1eab, 0x1eab,
- 0x1ead, 0x1ead,
- 0x1eaf, 0x1eaf,
- 0x1eb1, 0x1eb1,
- 0x1eb3, 0x1eb3,
- 0x1eb5, 0x1eb5,
- 0x1eb7, 0x1eb7,
- 0x1eb9, 0x1eb9,
- 0x1ebb, 0x1ebb,
- 0x1ebd, 0x1ebd,
- 0x1ebf, 0x1ebf,
- 0x1ec1, 0x1ec1,
- 0x1ec3, 0x1ec3,
- 0x1ec5, 0x1ec5,
- 0x1ec7, 0x1ec7,
- 0x1ec9, 0x1ec9,
- 0x1ecb, 0x1ecb,
- 0x1ecd, 0x1ecd,
- 0x1ecf, 0x1ecf,
- 0x1ed1, 0x1ed1,
- 0x1ed3, 0x1ed3,
- 0x1ed5, 0x1ed5,
- 0x1ed7, 0x1ed7,
- 0x1ed9, 0x1ed9,
- 0x1edb, 0x1edb,
- 0x1edd, 0x1edd,
- 0x1edf, 0x1edf,
- 0x1ee1, 0x1ee1,
- 0x1ee3, 0x1ee3,
- 0x1ee5, 0x1ee5,
- 0x1ee7, 0x1ee7,
- 0x1ee9, 0x1ee9,
- 0x1eeb, 0x1eeb,
- 0x1eed, 0x1eed,
- 0x1eef, 0x1eef,
- 0x1ef1, 0x1ef1,
- 0x1ef3, 0x1ef3,
- 0x1ef5, 0x1ef5,
- 0x1ef7, 0x1ef7,
- 0x1ef9, 0x1ef9,
- 0x1efb, 0x1efb,
- 0x1efd, 0x1efd,
- 0x1eff, 0x1f07,
- 0x1f10, 0x1f15,
- 0x1f20, 0x1f27,
- 0x1f30, 0x1f37,
- 0x1f40, 0x1f45,
- 0x1f50, 0x1f57,
- 0x1f60, 0x1f67,
- 0x1f70, 0x1f7d,
- 0x1f80, 0x1f87,
- 0x1f90, 0x1f97,
- 0x1fa0, 0x1fa7,
- 0x1fb0, 0x1fb4,
- 0x1fb6, 0x1fb7,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fc7,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fd7,
- 0x1fe0, 0x1fe7,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ff7,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
- 0x210a, 0x210a,
- 0x210e, 0x210f,
- 0x2113, 0x2113,
- 0x212f, 0x212f,
- 0x2134, 0x2134,
- 0x2139, 0x2139,
- 0x213c, 0x213d,
- 0x2146, 0x2149,
- 0x214e, 0x214e,
- 0x2170, 0x217f,
- 0x2184, 0x2184,
- 0x24d0, 0x24e9,
- 0x2c30, 0x2c5e,
- 0x2c61, 0x2c61,
- 0x2c65, 0x2c66,
- 0x2c68, 0x2c68,
- 0x2c6a, 0x2c6a,
- 0x2c6c, 0x2c6c,
- 0x2c71, 0x2c71,
- 0x2c73, 0x2c74,
- 0x2c76, 0x2c7d,
- 0x2c81, 0x2c81,
- 0x2c83, 0x2c83,
- 0x2c85, 0x2c85,
- 0x2c87, 0x2c87,
- 0x2c89, 0x2c89,
- 0x2c8b, 0x2c8b,
- 0x2c8d, 0x2c8d,
- 0x2c8f, 0x2c8f,
- 0x2c91, 0x2c91,
- 0x2c93, 0x2c93,
- 0x2c95, 0x2c95,
- 0x2c97, 0x2c97,
- 0x2c99, 0x2c99,
- 0x2c9b, 0x2c9b,
- 0x2c9d, 0x2c9d,
- 0x2c9f, 0x2c9f,
- 0x2ca1, 0x2ca1,
- 0x2ca3, 0x2ca3,
- 0x2ca5, 0x2ca5,
- 0x2ca7, 0x2ca7,
- 0x2ca9, 0x2ca9,
- 0x2cab, 0x2cab,
- 0x2cad, 0x2cad,
- 0x2caf, 0x2caf,
- 0x2cb1, 0x2cb1,
- 0x2cb3, 0x2cb3,
- 0x2cb5, 0x2cb5,
- 0x2cb7, 0x2cb7,
- 0x2cb9, 0x2cb9,
- 0x2cbb, 0x2cbb,
- 0x2cbd, 0x2cbd,
- 0x2cbf, 0x2cbf,
- 0x2cc1, 0x2cc1,
- 0x2cc3, 0x2cc3,
- 0x2cc5, 0x2cc5,
- 0x2cc7, 0x2cc7,
- 0x2cc9, 0x2cc9,
- 0x2ccb, 0x2ccb,
- 0x2ccd, 0x2ccd,
- 0x2ccf, 0x2ccf,
- 0x2cd1, 0x2cd1,
- 0x2cd3, 0x2cd3,
- 0x2cd5, 0x2cd5,
- 0x2cd7, 0x2cd7,
- 0x2cd9, 0x2cd9,
- 0x2cdb, 0x2cdb,
- 0x2cdd, 0x2cdd,
- 0x2cdf, 0x2cdf,
- 0x2ce1, 0x2ce1,
- 0x2ce3, 0x2ce4,
- 0x2cec, 0x2cec,
- 0x2cee, 0x2cee,
- 0x2cf3, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0xa641, 0xa641,
- 0xa643, 0xa643,
- 0xa645, 0xa645,
- 0xa647, 0xa647,
- 0xa649, 0xa649,
- 0xa64b, 0xa64b,
- 0xa64d, 0xa64d,
- 0xa64f, 0xa64f,
- 0xa651, 0xa651,
- 0xa653, 0xa653,
- 0xa655, 0xa655,
- 0xa657, 0xa657,
- 0xa659, 0xa659,
- 0xa65b, 0xa65b,
- 0xa65d, 0xa65d,
- 0xa65f, 0xa65f,
- 0xa661, 0xa661,
- 0xa663, 0xa663,
- 0xa665, 0xa665,
- 0xa667, 0xa667,
- 0xa669, 0xa669,
- 0xa66b, 0xa66b,
- 0xa66d, 0xa66d,
- 0xa681, 0xa681,
- 0xa683, 0xa683,
- 0xa685, 0xa685,
- 0xa687, 0xa687,
- 0xa689, 0xa689,
- 0xa68b, 0xa68b,
- 0xa68d, 0xa68d,
- 0xa68f, 0xa68f,
- 0xa691, 0xa691,
- 0xa693, 0xa693,
- 0xa695, 0xa695,
- 0xa697, 0xa697,
- 0xa723, 0xa723,
- 0xa725, 0xa725,
- 0xa727, 0xa727,
- 0xa729, 0xa729,
- 0xa72b, 0xa72b,
- 0xa72d, 0xa72d,
- 0xa72f, 0xa731,
- 0xa733, 0xa733,
- 0xa735, 0xa735,
- 0xa737, 0xa737,
- 0xa739, 0xa739,
- 0xa73b, 0xa73b,
- 0xa73d, 0xa73d,
- 0xa73f, 0xa73f,
- 0xa741, 0xa741,
- 0xa743, 0xa743,
- 0xa745, 0xa745,
- 0xa747, 0xa747,
- 0xa749, 0xa749,
- 0xa74b, 0xa74b,
- 0xa74d, 0xa74d,
- 0xa74f, 0xa74f,
- 0xa751, 0xa751,
- 0xa753, 0xa753,
- 0xa755, 0xa755,
- 0xa757, 0xa757,
- 0xa759, 0xa759,
- 0xa75b, 0xa75b,
- 0xa75d, 0xa75d,
- 0xa75f, 0xa75f,
- 0xa761, 0xa761,
- 0xa763, 0xa763,
- 0xa765, 0xa765,
- 0xa767, 0xa767,
- 0xa769, 0xa769,
- 0xa76b, 0xa76b,
- 0xa76d, 0xa76d,
- 0xa76f, 0xa778,
- 0xa77a, 0xa77a,
- 0xa77c, 0xa77c,
- 0xa77f, 0xa77f,
- 0xa781, 0xa781,
- 0xa783, 0xa783,
- 0xa785, 0xa785,
- 0xa787, 0xa787,
- 0xa78c, 0xa78c,
- 0xa78e, 0xa78e,
- 0xa791, 0xa791,
- 0xa793, 0xa793,
- 0xa7a1, 0xa7a1,
- 0xa7a3, 0xa7a3,
- 0xa7a5, 0xa7a5,
- 0xa7a7, 0xa7a7,
- 0xa7a9, 0xa7a9,
- 0xa7f8, 0xa7fa,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xff41, 0xff5a,
- 0x10428, 0x1044f,
- 0x1d41a, 0x1d433,
- 0x1d44e, 0x1d454,
- 0x1d456, 0x1d467,
- 0x1d482, 0x1d49b,
- 0x1d4b6, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d4cf,
- 0x1d4ea, 0x1d503,
- 0x1d51e, 0x1d537,
- 0x1d552, 0x1d56b,
- 0x1d586, 0x1d59f,
- 0x1d5ba, 0x1d5d3,
- 0x1d5ee, 0x1d607,
- 0x1d622, 0x1d63b,
- 0x1d656, 0x1d66f,
- 0x1d68a, 0x1d6a5,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6e1,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d71b,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d755,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d78f,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7c9,
- 0x1d7cb, 0x1d7cb,
-}; /* CR_Lower */
-
-/* 'Print': [[:Print:]] */
-static const OnigCodePoint CR_Print[] = {
- 541,
- 0x0020, 0x007e,
- 0x00a0, 0x0377,
- 0x037a, 0x037e,
- 0x0384, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x055f,
- 0x0561, 0x0587,
- 0x0589, 0x058a,
- 0x058f, 0x058f,
- 0x0591, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f4,
- 0x0600, 0x0604,
- 0x0606, 0x061b,
- 0x061e, 0x070d,
- 0x070f, 0x074a,
- 0x074d, 0x07b1,
- 0x07c0, 0x07fa,
- 0x0800, 0x082d,
- 0x0830, 0x083e,
- 0x0840, 0x085b,
- 0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
- 0x0900, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bc, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09e6, 0x09fb,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3c, 0x0a3c,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4d,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a66, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abc, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acd,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3c, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4d,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b66, 0x0b77,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcd,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0be6, 0x0bfa,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4d,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c66, 0x0c6f,
- 0x0c78, 0x0c7f,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbc, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccd,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0ce6, 0x0cef,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d66, 0x0d75,
- 0x0d79, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dca, 0x0dca,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df4,
- 0x0e01, 0x0e3a,
- 0x0e3f, 0x0e5b,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ec8, 0x0ecd,
- 0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x0fbe, 0x0fcc,
- 0x0fce, 0x0fda,
- 0x1000, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135d, 0x137c,
- 0x1380, 0x1399,
- 0x13a0, 0x13f4,
- 0x1400, 0x169c,
- 0x16a0, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1714,
- 0x1720, 0x1736,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17dd,
- 0x17e0, 0x17e9,
- 0x17f0, 0x17f9,
- 0x1800, 0x180e,
- 0x1810, 0x1819,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x193b,
- 0x1940, 0x1940,
- 0x1944, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x19d0, 0x19da,
- 0x19de, 0x1a1b,
- 0x1a1e, 0x1a5e,
- 0x1a60, 0x1a7c,
- 0x1a7f, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1aa0, 0x1aad,
- 0x1b00, 0x1b4b,
- 0x1b50, 0x1b7c,
- 0x1b80, 0x1bf3,
- 0x1bfc, 0x1c37,
- 0x1c3b, 0x1c49,
- 0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd0, 0x1cf6,
- 0x1d00, 0x1de6,
- 0x1dfc, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fc4,
- 0x1fc6, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fdd, 0x1fef,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffe,
- 0x2000, 0x2027,
- 0x202a, 0x2064,
- 0x206a, 0x2071,
- 0x2074, 0x208e,
- 0x2090, 0x209c,
- 0x20a0, 0x20b9,
- 0x20d0, 0x20f0,
- 0x2100, 0x2189,
- 0x2190, 0x23f3,
- 0x2400, 0x2426,
- 0x2440, 0x244a,
- 0x2460, 0x26ff,
- 0x2701, 0x2b4c,
- 0x2b50, 0x2b59,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2cf3,
- 0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d70,
- 0x2d7f, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2e3b,
- 0x2e80, 0x2e99,
- 0x2e9b, 0x2ef3,
- 0x2f00, 0x2fd5,
- 0x2ff0, 0x2ffb,
- 0x3000, 0x303f,
- 0x3041, 0x3096,
- 0x3099, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x3190, 0x31ba,
- 0x31c0, 0x31e3,
- 0x31f0, 0x321e,
- 0x3220, 0x32fe,
- 0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa490, 0xa4c6,
- 0xa4d0, 0xa62b,
- 0xa640, 0xa697,
- 0xa69f, 0xa6f7,
- 0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa82b,
- 0xa830, 0xa839,
- 0xa840, 0xa877,
- 0xa880, 0xa8c4,
- 0xa8ce, 0xa8d9,
- 0xa8e0, 0xa8fb,
- 0xa900, 0xa953,
- 0xa95f, 0xa97c,
- 0xa980, 0xa9cd,
- 0xa9cf, 0xa9d9,
- 0xa9de, 0xa9df,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa50, 0xaa59,
- 0xaa5c, 0xaa7b,
- 0xaa80, 0xaac2,
- 0xaadb, 0xaaf6,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabed,
- 0xabf0, 0xabf9,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xe000, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbc1,
- 0xfbd3, 0xfd3f,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfd,
- 0xfe00, 0xfe19,
- 0xfe20, 0xfe26,
- 0xfe30, 0xfe52,
- 0xfe54, 0xfe66,
- 0xfe68, 0xfe6b,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xfeff, 0xfeff,
- 0xff01, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0xffe0, 0xffe6,
- 0xffe8, 0xffee,
- 0xfff9, 0xfffd,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10100, 0x10102,
- 0x10107, 0x10133,
- 0x10137, 0x1018a,
- 0x10190, 0x1019b,
- 0x101d0, 0x101fd,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10320, 0x10323,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x1039f, 0x103c3,
- 0x103c8, 0x103d5,
- 0x10400, 0x1049d,
- 0x104a0, 0x104a9,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10857, 0x1085f,
- 0x10900, 0x1091b,
- 0x1091f, 0x10939,
- 0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a38, 0x10a3a,
- 0x10a3f, 0x10a47,
- 0x10a50, 0x10a58,
- 0x10a60, 0x10a7f,
- 0x10b00, 0x10b35,
- 0x10b39, 0x10b55,
- 0x10b58, 0x10b72,
- 0x10b78, 0x10b7f,
- 0x10c00, 0x10c48,
- 0x10e60, 0x10e7e,
- 0x11000, 0x1104d,
- 0x11052, 0x1106f,
- 0x11080, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x12470, 0x12473,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d000, 0x1d0f5,
- 0x1d100, 0x1d126,
- 0x1d129, 0x1d1dd,
- 0x1d200, 0x1d245,
- 0x1d300, 0x1d356,
- 0x1d360, 0x1d371,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d7cb,
- 0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
- 0x1f000, 0x1f02b,
- 0x1f030, 0x1f093,
- 0x1f0a0, 0x1f0ae,
- 0x1f0b1, 0x1f0be,
- 0x1f0c1, 0x1f0cf,
- 0x1f0d1, 0x1f0df,
- 0x1f100, 0x1f10a,
- 0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
- 0x1f170, 0x1f19a,
- 0x1f1e6, 0x1f202,
- 0x1f210, 0x1f23a,
- 0x1f240, 0x1f248,
- 0x1f250, 0x1f251,
- 0x1f300, 0x1f320,
- 0x1f330, 0x1f335,
- 0x1f337, 0x1f37c,
- 0x1f380, 0x1f393,
- 0x1f3a0, 0x1f3c4,
- 0x1f3c6, 0x1f3ca,
- 0x1f3e0, 0x1f3f0,
- 0x1f400, 0x1f43e,
- 0x1f440, 0x1f440,
- 0x1f442, 0x1f4f7,
- 0x1f4f9, 0x1f4fc,
- 0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
- 0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
- 0x1f645, 0x1f64f,
- 0x1f680, 0x1f6c5,
- 0x1f700, 0x1f773,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
- 0xe0001, 0xe0001,
- 0xe0020, 0xe007f,
- 0xe0100, 0xe01ef,
- 0xf0000, 0xffffd,
- 0x100000, 0x10fffd,
-}; /* CR_Print */
-
-/* 'Punct': [[:Punct:]] */
-static const OnigCodePoint CR_Punct[] = {
- 140,
- 0x0021, 0x0023,
- 0x0025, 0x002a,
- 0x002c, 0x002f,
- 0x003a, 0x003b,
- 0x003f, 0x0040,
- 0x005b, 0x005d,
- 0x005f, 0x005f,
- 0x007b, 0x007b,
- 0x007d, 0x007d,
- 0x00a1, 0x00a1,
- 0x00a7, 0x00a7,
- 0x00ab, 0x00ab,
- 0x00b6, 0x00b7,
- 0x00bb, 0x00bb,
- 0x00bf, 0x00bf,
- 0x037e, 0x037e,
- 0x0387, 0x0387,
- 0x055a, 0x055f,
- 0x0589, 0x058a,
- 0x05be, 0x05be,
- 0x05c0, 0x05c0,
- 0x05c3, 0x05c3,
- 0x05c6, 0x05c6,
- 0x05f3, 0x05f4,
- 0x0609, 0x060a,
- 0x060c, 0x060d,
- 0x061b, 0x061b,
- 0x061e, 0x061f,
- 0x066a, 0x066d,
- 0x06d4, 0x06d4,
- 0x0700, 0x070d,
- 0x07f7, 0x07f9,
- 0x0830, 0x083e,
- 0x085e, 0x085e,
- 0x0964, 0x0965,
- 0x0970, 0x0970,
- 0x0af0, 0x0af0,
- 0x0df4, 0x0df4,
- 0x0e4f, 0x0e4f,
- 0x0e5a, 0x0e5b,
- 0x0f04, 0x0f12,
- 0x0f14, 0x0f14,
- 0x0f3a, 0x0f3d,
- 0x0f85, 0x0f85,
- 0x0fd0, 0x0fd4,
- 0x0fd9, 0x0fda,
- 0x104a, 0x104f,
- 0x10fb, 0x10fb,
- 0x1360, 0x1368,
- 0x1400, 0x1400,
- 0x166d, 0x166e,
- 0x169b, 0x169c,
- 0x16eb, 0x16ed,
- 0x1735, 0x1736,
- 0x17d4, 0x17d6,
- 0x17d8, 0x17da,
- 0x1800, 0x180a,
- 0x1944, 0x1945,
- 0x1a1e, 0x1a1f,
- 0x1aa0, 0x1aa6,
- 0x1aa8, 0x1aad,
- 0x1b5a, 0x1b60,
- 0x1bfc, 0x1bff,
- 0x1c3b, 0x1c3f,
- 0x1c7e, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd3, 0x1cd3,
- 0x2010, 0x2027,
- 0x2030, 0x2043,
- 0x2045, 0x2051,
- 0x2053, 0x205e,
- 0x207d, 0x207e,
- 0x208d, 0x208e,
- 0x2329, 0x232a,
- 0x2768, 0x2775,
- 0x27c5, 0x27c6,
- 0x27e6, 0x27ef,
- 0x2983, 0x2998,
- 0x29d8, 0x29db,
- 0x29fc, 0x29fd,
- 0x2cf9, 0x2cfc,
- 0x2cfe, 0x2cff,
- 0x2d70, 0x2d70,
- 0x2e00, 0x2e2e,
- 0x2e30, 0x2e3b,
- 0x3001, 0x3003,
- 0x3008, 0x3011,
- 0x3014, 0x301f,
- 0x3030, 0x3030,
- 0x303d, 0x303d,
- 0x30a0, 0x30a0,
- 0x30fb, 0x30fb,
- 0xa4fe, 0xa4ff,
- 0xa60d, 0xa60f,
- 0xa673, 0xa673,
- 0xa67e, 0xa67e,
- 0xa6f2, 0xa6f7,
- 0xa874, 0xa877,
- 0xa8ce, 0xa8cf,
- 0xa8f8, 0xa8fa,
- 0xa92e, 0xa92f,
- 0xa95f, 0xa95f,
- 0xa9c1, 0xa9cd,
- 0xa9de, 0xa9df,
- 0xaa5c, 0xaa5f,
- 0xaade, 0xaadf,
- 0xaaf0, 0xaaf1,
- 0xabeb, 0xabeb,
- 0xfd3e, 0xfd3f,
- 0xfe10, 0xfe19,
- 0xfe30, 0xfe52,
- 0xfe54, 0xfe61,
- 0xfe63, 0xfe63,
- 0xfe68, 0xfe68,
- 0xfe6a, 0xfe6b,
- 0xff01, 0xff03,
- 0xff05, 0xff0a,
- 0xff0c, 0xff0f,
- 0xff1a, 0xff1b,
- 0xff1f, 0xff20,
- 0xff3b, 0xff3d,
- 0xff3f, 0xff3f,
- 0xff5b, 0xff5b,
- 0xff5d, 0xff5d,
- 0xff5f, 0xff65,
- 0x10100, 0x10102,
- 0x1039f, 0x1039f,
- 0x103d0, 0x103d0,
- 0x10857, 0x10857,
- 0x1091f, 0x1091f,
- 0x1093f, 0x1093f,
- 0x10a50, 0x10a58,
- 0x10a7f, 0x10a7f,
- 0x10b39, 0x10b3f,
- 0x11047, 0x1104d,
- 0x110bb, 0x110bc,
- 0x110be, 0x110c1,
- 0x11140, 0x11143,
- 0x111c5, 0x111c8,
- 0x12470, 0x12473,
-}; /* CR_Punct */
-
-/* 'Space': [[:Space:]] */
-static const OnigCodePoint CR_Space[] = {
- 11,
- 0x0009, 0x000d,
- 0x0020, 0x0020,
- 0x0085, 0x0085,
- 0x00a0, 0x00a0,
- 0x1680, 0x1680,
- 0x180e, 0x180e,
- 0x2000, 0x200a,
- 0x2028, 0x2029,
- 0x202f, 0x202f,
- 0x205f, 0x205f,
- 0x3000, 0x3000,
-}; /* CR_Space */
-
-/* 'Upper': [[:Upper:]] */
-static const OnigCodePoint CR_Upper[] = {
- 610,
- 0x0041, 0x005a,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00de,
- 0x0100, 0x0100,
- 0x0102, 0x0102,
- 0x0104, 0x0104,
- 0x0106, 0x0106,
- 0x0108, 0x0108,
- 0x010a, 0x010a,
- 0x010c, 0x010c,
- 0x010e, 0x010e,
- 0x0110, 0x0110,
- 0x0112, 0x0112,
- 0x0114, 0x0114,
- 0x0116, 0x0116,
- 0x0118, 0x0118,
- 0x011a, 0x011a,
- 0x011c, 0x011c,
- 0x011e, 0x011e,
- 0x0120, 0x0120,
- 0x0122, 0x0122,
- 0x0124, 0x0124,
- 0x0126, 0x0126,
- 0x0128, 0x0128,
- 0x012a, 0x012a,
- 0x012c, 0x012c,
- 0x012e, 0x012e,
- 0x0130, 0x0130,
- 0x0132, 0x0132,
- 0x0134, 0x0134,
- 0x0136, 0x0136,
- 0x0139, 0x0139,
- 0x013b, 0x013b,
- 0x013d, 0x013d,
- 0x013f, 0x013f,
- 0x0141, 0x0141,
- 0x0143, 0x0143,
- 0x0145, 0x0145,
- 0x0147, 0x0147,
- 0x014a, 0x014a,
- 0x014c, 0x014c,
- 0x014e, 0x014e,
- 0x0150, 0x0150,
- 0x0152, 0x0152,
- 0x0154, 0x0154,
- 0x0156, 0x0156,
- 0x0158, 0x0158,
- 0x015a, 0x015a,
- 0x015c, 0x015c,
- 0x015e, 0x015e,
- 0x0160, 0x0160,
- 0x0162, 0x0162,
- 0x0164, 0x0164,
- 0x0166, 0x0166,
- 0x0168, 0x0168,
- 0x016a, 0x016a,
- 0x016c, 0x016c,
- 0x016e, 0x016e,
- 0x0170, 0x0170,
- 0x0172, 0x0172,
- 0x0174, 0x0174,
- 0x0176, 0x0176,
- 0x0178, 0x0179,
- 0x017b, 0x017b,
- 0x017d, 0x017d,
- 0x0181, 0x0182,
- 0x0184, 0x0184,
- 0x0186, 0x0187,
- 0x0189, 0x018b,
- 0x018e, 0x0191,
- 0x0193, 0x0194,
- 0x0196, 0x0198,
- 0x019c, 0x019d,
- 0x019f, 0x01a0,
- 0x01a2, 0x01a2,
- 0x01a4, 0x01a4,
- 0x01a6, 0x01a7,
- 0x01a9, 0x01a9,
- 0x01ac, 0x01ac,
- 0x01ae, 0x01af,
- 0x01b1, 0x01b3,
- 0x01b5, 0x01b5,
- 0x01b7, 0x01b8,
- 0x01bc, 0x01bc,
- 0x01c4, 0x01c4,
- 0x01c7, 0x01c7,
- 0x01ca, 0x01ca,
- 0x01cd, 0x01cd,
- 0x01cf, 0x01cf,
- 0x01d1, 0x01d1,
- 0x01d3, 0x01d3,
- 0x01d5, 0x01d5,
- 0x01d7, 0x01d7,
- 0x01d9, 0x01d9,
- 0x01db, 0x01db,
- 0x01de, 0x01de,
- 0x01e0, 0x01e0,
- 0x01e2, 0x01e2,
- 0x01e4, 0x01e4,
- 0x01e6, 0x01e6,
- 0x01e8, 0x01e8,
- 0x01ea, 0x01ea,
- 0x01ec, 0x01ec,
- 0x01ee, 0x01ee,
- 0x01f1, 0x01f1,
- 0x01f4, 0x01f4,
- 0x01f6, 0x01f8,
- 0x01fa, 0x01fa,
- 0x01fc, 0x01fc,
- 0x01fe, 0x01fe,
- 0x0200, 0x0200,
- 0x0202, 0x0202,
- 0x0204, 0x0204,
- 0x0206, 0x0206,
- 0x0208, 0x0208,
- 0x020a, 0x020a,
- 0x020c, 0x020c,
- 0x020e, 0x020e,
- 0x0210, 0x0210,
- 0x0212, 0x0212,
- 0x0214, 0x0214,
- 0x0216, 0x0216,
- 0x0218, 0x0218,
- 0x021a, 0x021a,
- 0x021c, 0x021c,
- 0x021e, 0x021e,
- 0x0220, 0x0220,
- 0x0222, 0x0222,
- 0x0224, 0x0224,
- 0x0226, 0x0226,
- 0x0228, 0x0228,
- 0x022a, 0x022a,
- 0x022c, 0x022c,
- 0x022e, 0x022e,
- 0x0230, 0x0230,
- 0x0232, 0x0232,
- 0x023a, 0x023b,
- 0x023d, 0x023e,
- 0x0241, 0x0241,
- 0x0243, 0x0246,
- 0x0248, 0x0248,
- 0x024a, 0x024a,
- 0x024c, 0x024c,
- 0x024e, 0x024e,
- 0x0370, 0x0370,
- 0x0372, 0x0372,
- 0x0376, 0x0376,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x038f,
- 0x0391, 0x03a1,
- 0x03a3, 0x03ab,
- 0x03cf, 0x03cf,
- 0x03d2, 0x03d4,
- 0x03d8, 0x03d8,
- 0x03da, 0x03da,
- 0x03dc, 0x03dc,
- 0x03de, 0x03de,
- 0x03e0, 0x03e0,
- 0x03e2, 0x03e2,
- 0x03e4, 0x03e4,
- 0x03e6, 0x03e6,
- 0x03e8, 0x03e8,
- 0x03ea, 0x03ea,
- 0x03ec, 0x03ec,
- 0x03ee, 0x03ee,
- 0x03f4, 0x03f4,
- 0x03f7, 0x03f7,
- 0x03f9, 0x03fa,
- 0x03fd, 0x042f,
- 0x0460, 0x0460,
- 0x0462, 0x0462,
- 0x0464, 0x0464,
- 0x0466, 0x0466,
- 0x0468, 0x0468,
- 0x046a, 0x046a,
- 0x046c, 0x046c,
- 0x046e, 0x046e,
- 0x0470, 0x0470,
- 0x0472, 0x0472,
- 0x0474, 0x0474,
- 0x0476, 0x0476,
- 0x0478, 0x0478,
- 0x047a, 0x047a,
- 0x047c, 0x047c,
- 0x047e, 0x047e,
- 0x0480, 0x0480,
- 0x048a, 0x048a,
- 0x048c, 0x048c,
- 0x048e, 0x048e,
- 0x0490, 0x0490,
- 0x0492, 0x0492,
- 0x0494, 0x0494,
- 0x0496, 0x0496,
- 0x0498, 0x0498,
- 0x049a, 0x049a,
- 0x049c, 0x049c,
- 0x049e, 0x049e,
- 0x04a0, 0x04a0,
- 0x04a2, 0x04a2,
- 0x04a4, 0x04a4,
- 0x04a6, 0x04a6,
- 0x04a8, 0x04a8,
- 0x04aa, 0x04aa,
- 0x04ac, 0x04ac,
- 0x04ae, 0x04ae,
- 0x04b0, 0x04b0,
- 0x04b2, 0x04b2,
- 0x04b4, 0x04b4,
- 0x04b6, 0x04b6,
- 0x04b8, 0x04b8,
- 0x04ba, 0x04ba,
- 0x04bc, 0x04bc,
- 0x04be, 0x04be,
- 0x04c0, 0x04c1,
- 0x04c3, 0x04c3,
- 0x04c5, 0x04c5,
- 0x04c7, 0x04c7,
- 0x04c9, 0x04c9,
- 0x04cb, 0x04cb,
- 0x04cd, 0x04cd,
- 0x04d0, 0x04d0,
- 0x04d2, 0x04d2,
- 0x04d4, 0x04d4,
- 0x04d6, 0x04d6,
- 0x04d8, 0x04d8,
- 0x04da, 0x04da,
- 0x04dc, 0x04dc,
- 0x04de, 0x04de,
- 0x04e0, 0x04e0,
- 0x04e2, 0x04e2,
- 0x04e4, 0x04e4,
- 0x04e6, 0x04e6,
- 0x04e8, 0x04e8,
- 0x04ea, 0x04ea,
- 0x04ec, 0x04ec,
- 0x04ee, 0x04ee,
- 0x04f0, 0x04f0,
- 0x04f2, 0x04f2,
- 0x04f4, 0x04f4,
- 0x04f6, 0x04f6,
- 0x04f8, 0x04f8,
- 0x04fa, 0x04fa,
- 0x04fc, 0x04fc,
- 0x04fe, 0x04fe,
- 0x0500, 0x0500,
- 0x0502, 0x0502,
- 0x0504, 0x0504,
- 0x0506, 0x0506,
- 0x0508, 0x0508,
- 0x050a, 0x050a,
- 0x050c, 0x050c,
- 0x050e, 0x050e,
- 0x0510, 0x0510,
- 0x0512, 0x0512,
- 0x0514, 0x0514,
- 0x0516, 0x0516,
- 0x0518, 0x0518,
- 0x051a, 0x051a,
- 0x051c, 0x051c,
- 0x051e, 0x051e,
- 0x0520, 0x0520,
- 0x0522, 0x0522,
- 0x0524, 0x0524,
- 0x0526, 0x0526,
- 0x0531, 0x0556,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x1e00, 0x1e00,
- 0x1e02, 0x1e02,
- 0x1e04, 0x1e04,
- 0x1e06, 0x1e06,
- 0x1e08, 0x1e08,
- 0x1e0a, 0x1e0a,
- 0x1e0c, 0x1e0c,
- 0x1e0e, 0x1e0e,
- 0x1e10, 0x1e10,
- 0x1e12, 0x1e12,
- 0x1e14, 0x1e14,
- 0x1e16, 0x1e16,
- 0x1e18, 0x1e18,
- 0x1e1a, 0x1e1a,
- 0x1e1c, 0x1e1c,
- 0x1e1e, 0x1e1e,
- 0x1e20, 0x1e20,
- 0x1e22, 0x1e22,
- 0x1e24, 0x1e24,
- 0x1e26, 0x1e26,
- 0x1e28, 0x1e28,
- 0x1e2a, 0x1e2a,
- 0x1e2c, 0x1e2c,
- 0x1e2e, 0x1e2e,
- 0x1e30, 0x1e30,
- 0x1e32, 0x1e32,
- 0x1e34, 0x1e34,
- 0x1e36, 0x1e36,
- 0x1e38, 0x1e38,
- 0x1e3a, 0x1e3a,
- 0x1e3c, 0x1e3c,
- 0x1e3e, 0x1e3e,
- 0x1e40, 0x1e40,
- 0x1e42, 0x1e42,
- 0x1e44, 0x1e44,
- 0x1e46, 0x1e46,
- 0x1e48, 0x1e48,
- 0x1e4a, 0x1e4a,
- 0x1e4c, 0x1e4c,
- 0x1e4e, 0x1e4e,
- 0x1e50, 0x1e50,
- 0x1e52, 0x1e52,
- 0x1e54, 0x1e54,
- 0x1e56, 0x1e56,
- 0x1e58, 0x1e58,
- 0x1e5a, 0x1e5a,
- 0x1e5c, 0x1e5c,
- 0x1e5e, 0x1e5e,
- 0x1e60, 0x1e60,
- 0x1e62, 0x1e62,
- 0x1e64, 0x1e64,
- 0x1e66, 0x1e66,
- 0x1e68, 0x1e68,
- 0x1e6a, 0x1e6a,
- 0x1e6c, 0x1e6c,
- 0x1e6e, 0x1e6e,
- 0x1e70, 0x1e70,
- 0x1e72, 0x1e72,
- 0x1e74, 0x1e74,
- 0x1e76, 0x1e76,
- 0x1e78, 0x1e78,
- 0x1e7a, 0x1e7a,
- 0x1e7c, 0x1e7c,
- 0x1e7e, 0x1e7e,
- 0x1e80, 0x1e80,
- 0x1e82, 0x1e82,
- 0x1e84, 0x1e84,
- 0x1e86, 0x1e86,
- 0x1e88, 0x1e88,
- 0x1e8a, 0x1e8a,
- 0x1e8c, 0x1e8c,
- 0x1e8e, 0x1e8e,
- 0x1e90, 0x1e90,
- 0x1e92, 0x1e92,
- 0x1e94, 0x1e94,
- 0x1e9e, 0x1e9e,
- 0x1ea0, 0x1ea0,
- 0x1ea2, 0x1ea2,
- 0x1ea4, 0x1ea4,
- 0x1ea6, 0x1ea6,
- 0x1ea8, 0x1ea8,
- 0x1eaa, 0x1eaa,
- 0x1eac, 0x1eac,
- 0x1eae, 0x1eae,
- 0x1eb0, 0x1eb0,
- 0x1eb2, 0x1eb2,
- 0x1eb4, 0x1eb4,
- 0x1eb6, 0x1eb6,
- 0x1eb8, 0x1eb8,
- 0x1eba, 0x1eba,
- 0x1ebc, 0x1ebc,
- 0x1ebe, 0x1ebe,
- 0x1ec0, 0x1ec0,
- 0x1ec2, 0x1ec2,
- 0x1ec4, 0x1ec4,
- 0x1ec6, 0x1ec6,
- 0x1ec8, 0x1ec8,
- 0x1eca, 0x1eca,
- 0x1ecc, 0x1ecc,
- 0x1ece, 0x1ece,
- 0x1ed0, 0x1ed0,
- 0x1ed2, 0x1ed2,
- 0x1ed4, 0x1ed4,
- 0x1ed6, 0x1ed6,
- 0x1ed8, 0x1ed8,
- 0x1eda, 0x1eda,
- 0x1edc, 0x1edc,
- 0x1ede, 0x1ede,
- 0x1ee0, 0x1ee0,
- 0x1ee2, 0x1ee2,
- 0x1ee4, 0x1ee4,
- 0x1ee6, 0x1ee6,
- 0x1ee8, 0x1ee8,
- 0x1eea, 0x1eea,
- 0x1eec, 0x1eec,
- 0x1eee, 0x1eee,
- 0x1ef0, 0x1ef0,
- 0x1ef2, 0x1ef2,
- 0x1ef4, 0x1ef4,
- 0x1ef6, 0x1ef6,
- 0x1ef8, 0x1ef8,
- 0x1efa, 0x1efa,
- 0x1efc, 0x1efc,
- 0x1efe, 0x1efe,
- 0x1f08, 0x1f0f,
- 0x1f18, 0x1f1d,
- 0x1f28, 0x1f2f,
- 0x1f38, 0x1f3f,
- 0x1f48, 0x1f4d,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f5f,
- 0x1f68, 0x1f6f,
- 0x1fb8, 0x1fbb,
- 0x1fc8, 0x1fcb,
- 0x1fd8, 0x1fdb,
- 0x1fe8, 0x1fec,
- 0x1ff8, 0x1ffb,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210b, 0x210d,
- 0x2110, 0x2112,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x2130, 0x2133,
- 0x213e, 0x213f,
- 0x2145, 0x2145,
- 0x2160, 0x216f,
- 0x2183, 0x2183,
- 0x24b6, 0x24cf,
- 0x2c00, 0x2c2e,
- 0x2c60, 0x2c60,
- 0x2c62, 0x2c64,
- 0x2c67, 0x2c67,
- 0x2c69, 0x2c69,
- 0x2c6b, 0x2c6b,
- 0x2c6d, 0x2c70,
- 0x2c72, 0x2c72,
- 0x2c75, 0x2c75,
- 0x2c7e, 0x2c80,
- 0x2c82, 0x2c82,
- 0x2c84, 0x2c84,
- 0x2c86, 0x2c86,
- 0x2c88, 0x2c88,
- 0x2c8a, 0x2c8a,
- 0x2c8c, 0x2c8c,
- 0x2c8e, 0x2c8e,
- 0x2c90, 0x2c90,
- 0x2c92, 0x2c92,
- 0x2c94, 0x2c94,
- 0x2c96, 0x2c96,
- 0x2c98, 0x2c98,
- 0x2c9a, 0x2c9a,
- 0x2c9c, 0x2c9c,
- 0x2c9e, 0x2c9e,
- 0x2ca0, 0x2ca0,
- 0x2ca2, 0x2ca2,
- 0x2ca4, 0x2ca4,
- 0x2ca6, 0x2ca6,
- 0x2ca8, 0x2ca8,
- 0x2caa, 0x2caa,
- 0x2cac, 0x2cac,
- 0x2cae, 0x2cae,
- 0x2cb0, 0x2cb0,
- 0x2cb2, 0x2cb2,
- 0x2cb4, 0x2cb4,
- 0x2cb6, 0x2cb6,
- 0x2cb8, 0x2cb8,
- 0x2cba, 0x2cba,
- 0x2cbc, 0x2cbc,
- 0x2cbe, 0x2cbe,
- 0x2cc0, 0x2cc0,
- 0x2cc2, 0x2cc2,
- 0x2cc4, 0x2cc4,
- 0x2cc6, 0x2cc6,
- 0x2cc8, 0x2cc8,
- 0x2cca, 0x2cca,
- 0x2ccc, 0x2ccc,
- 0x2cce, 0x2cce,
- 0x2cd0, 0x2cd0,
- 0x2cd2, 0x2cd2,
- 0x2cd4, 0x2cd4,
- 0x2cd6, 0x2cd6,
- 0x2cd8, 0x2cd8,
- 0x2cda, 0x2cda,
- 0x2cdc, 0x2cdc,
- 0x2cde, 0x2cde,
- 0x2ce0, 0x2ce0,
- 0x2ce2, 0x2ce2,
- 0x2ceb, 0x2ceb,
- 0x2ced, 0x2ced,
- 0x2cf2, 0x2cf2,
- 0xa640, 0xa640,
- 0xa642, 0xa642,
- 0xa644, 0xa644,
- 0xa646, 0xa646,
- 0xa648, 0xa648,
- 0xa64a, 0xa64a,
- 0xa64c, 0xa64c,
- 0xa64e, 0xa64e,
- 0xa650, 0xa650,
- 0xa652, 0xa652,
- 0xa654, 0xa654,
- 0xa656, 0xa656,
- 0xa658, 0xa658,
- 0xa65a, 0xa65a,
- 0xa65c, 0xa65c,
- 0xa65e, 0xa65e,
- 0xa660, 0xa660,
- 0xa662, 0xa662,
- 0xa664, 0xa664,
- 0xa666, 0xa666,
- 0xa668, 0xa668,
- 0xa66a, 0xa66a,
- 0xa66c, 0xa66c,
- 0xa680, 0xa680,
- 0xa682, 0xa682,
- 0xa684, 0xa684,
- 0xa686, 0xa686,
- 0xa688, 0xa688,
- 0xa68a, 0xa68a,
- 0xa68c, 0xa68c,
- 0xa68e, 0xa68e,
- 0xa690, 0xa690,
- 0xa692, 0xa692,
- 0xa694, 0xa694,
- 0xa696, 0xa696,
- 0xa722, 0xa722,
- 0xa724, 0xa724,
- 0xa726, 0xa726,
- 0xa728, 0xa728,
- 0xa72a, 0xa72a,
- 0xa72c, 0xa72c,
- 0xa72e, 0xa72e,
- 0xa732, 0xa732,
- 0xa734, 0xa734,
- 0xa736, 0xa736,
- 0xa738, 0xa738,
- 0xa73a, 0xa73a,
- 0xa73c, 0xa73c,
- 0xa73e, 0xa73e,
- 0xa740, 0xa740,
- 0xa742, 0xa742,
- 0xa744, 0xa744,
- 0xa746, 0xa746,
- 0xa748, 0xa748,
- 0xa74a, 0xa74a,
- 0xa74c, 0xa74c,
- 0xa74e, 0xa74e,
- 0xa750, 0xa750,
- 0xa752, 0xa752,
- 0xa754, 0xa754,
- 0xa756, 0xa756,
- 0xa758, 0xa758,
- 0xa75a, 0xa75a,
- 0xa75c, 0xa75c,
- 0xa75e, 0xa75e,
- 0xa760, 0xa760,
- 0xa762, 0xa762,
- 0xa764, 0xa764,
- 0xa766, 0xa766,
- 0xa768, 0xa768,
- 0xa76a, 0xa76a,
- 0xa76c, 0xa76c,
- 0xa76e, 0xa76e,
- 0xa779, 0xa779,
- 0xa77b, 0xa77b,
- 0xa77d, 0xa77e,
- 0xa780, 0xa780,
- 0xa782, 0xa782,
- 0xa784, 0xa784,
- 0xa786, 0xa786,
- 0xa78b, 0xa78b,
- 0xa78d, 0xa78d,
- 0xa790, 0xa790,
- 0xa792, 0xa792,
- 0xa7a0, 0xa7a0,
- 0xa7a2, 0xa7a2,
- 0xa7a4, 0xa7a4,
- 0xa7a6, 0xa7a6,
- 0xa7a8, 0xa7a8,
- 0xa7aa, 0xa7aa,
- 0xff21, 0xff3a,
- 0x10400, 0x10427,
- 0x1d400, 0x1d419,
- 0x1d434, 0x1d44d,
- 0x1d468, 0x1d481,
- 0x1d49c, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b5,
- 0x1d4d0, 0x1d4e9,
- 0x1d504, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d538, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d56c, 0x1d585,
- 0x1d5a0, 0x1d5b9,
- 0x1d5d4, 0x1d5ed,
- 0x1d608, 0x1d621,
- 0x1d63c, 0x1d655,
- 0x1d670, 0x1d689,
- 0x1d6a8, 0x1d6c0,
- 0x1d6e2, 0x1d6fa,
- 0x1d71c, 0x1d734,
- 0x1d756, 0x1d76e,
- 0x1d790, 0x1d7a8,
- 0x1d7ca, 0x1d7ca,
-}; /* CR_Upper */
-
-/* 'XDigit': [[:XDigit:]] */
-static const OnigCodePoint CR_XDigit[] = {
- 3,
- 0x0030, 0x0039,
- 0x0041, 0x0046,
- 0x0061, 0x0066,
-}; /* CR_XDigit */
-
-/* 'Word': [[:Word:]] */
-static const OnigCodePoint CR_Word[] = {
- 564,
- 0x0030, 0x0039,
- 0x0041, 0x005a,
- 0x005f, 0x005f,
- 0x0061, 0x007a,
- 0x00aa, 0x00aa,
- 0x00b5, 0x00b5,
- 0x00ba, 0x00ba,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00f6,
- 0x00f8, 0x02c1,
- 0x02c6, 0x02d1,
- 0x02e0, 0x02e4,
- 0x02ec, 0x02ec,
- 0x02ee, 0x02ee,
- 0x0300, 0x0374,
- 0x0376, 0x0377,
- 0x037a, 0x037d,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x03f5,
- 0x03f7, 0x0481,
- 0x0483, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x0559,
- 0x0561, 0x0587,
- 0x0591, 0x05bd,
- 0x05bf, 0x05bf,
- 0x05c1, 0x05c2,
- 0x05c4, 0x05c5,
- 0x05c7, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f2,
- 0x0610, 0x061a,
- 0x0620, 0x0669,
- 0x066e, 0x06d3,
- 0x06d5, 0x06dc,
- 0x06df, 0x06e8,
- 0x06ea, 0x06fc,
- 0x06ff, 0x06ff,
- 0x0710, 0x074a,
- 0x074d, 0x07b1,
- 0x07c0, 0x07f5,
- 0x07fa, 0x07fa,
- 0x0800, 0x082d,
- 0x0840, 0x085b,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
- 0x0900, 0x0963,
- 0x0966, 0x096f,
- 0x0971, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bc, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09e6, 0x09f1,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3c, 0x0a3c,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4d,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a66, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abc, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acd,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0ae6, 0x0aef,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3c, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4d,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b66, 0x0b6f,
- 0x0b71, 0x0b71,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcd,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0be6, 0x0bef,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4d,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c66, 0x0c6f,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbc, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccd,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0ce6, 0x0cef,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d66, 0x0d6f,
- 0x0d7a, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dca, 0x0dca,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df3,
- 0x0e01, 0x0e3a,
- 0x0e40, 0x0e4e,
- 0x0e50, 0x0e59,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ec8, 0x0ecd,
- 0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f00,
- 0x0f18, 0x0f19,
- 0x0f20, 0x0f29,
- 0x0f35, 0x0f35,
- 0x0f37, 0x0f37,
- 0x0f39, 0x0f39,
- 0x0f3e, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f84,
- 0x0f86, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x0fc6, 0x0fc6,
- 0x1000, 0x1049,
- 0x1050, 0x109d,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x10fa,
- 0x10fc, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135d, 0x135f,
- 0x1380, 0x138f,
- 0x13a0, 0x13f4,
- 0x1401, 0x166c,
- 0x166f, 0x167f,
- 0x1681, 0x169a,
- 0x16a0, 0x16ea,
- 0x16ee, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1714,
- 0x1720, 0x1734,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17d3,
- 0x17d7, 0x17d7,
- 0x17dc, 0x17dd,
- 0x17e0, 0x17e9,
- 0x180b, 0x180d,
- 0x1810, 0x1819,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x193b,
- 0x1946, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x19d0, 0x19d9,
- 0x1a00, 0x1a1b,
- 0x1a20, 0x1a5e,
- 0x1a60, 0x1a7c,
- 0x1a7f, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1aa7, 0x1aa7,
- 0x1b00, 0x1b4b,
- 0x1b50, 0x1b59,
- 0x1b6b, 0x1b73,
- 0x1b80, 0x1bf3,
- 0x1c00, 0x1c37,
- 0x1c40, 0x1c49,
- 0x1c4d, 0x1c7d,
- 0x1cd0, 0x1cd2,
- 0x1cd4, 0x1cf6,
- 0x1d00, 0x1de6,
- 0x1dfc, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fbc,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fcc,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fe0, 0x1fec,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffc,
- 0x203f, 0x2040,
- 0x2054, 0x2054,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
- 0x20d0, 0x20f0,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210a, 0x2113,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x212f, 0x2139,
- 0x213c, 0x213f,
- 0x2145, 0x2149,
- 0x214e, 0x214e,
- 0x2160, 0x2188,
- 0x24b6, 0x24e9,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2ce4,
- 0x2ceb, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d6f,
- 0x2d7f, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2dff,
- 0x2e2f, 0x2e2f,
- 0x3005, 0x3007,
- 0x3021, 0x302f,
- 0x3031, 0x3035,
- 0x3038, 0x303c,
- 0x3041, 0x3096,
- 0x3099, 0x309a,
- 0x309d, 0x309f,
- 0x30a1, 0x30fa,
- 0x30fc, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x31a0, 0x31ba,
- 0x31f0, 0x31ff,
- 0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa4d0, 0xa4fd,
- 0xa500, 0xa60c,
- 0xa610, 0xa62b,
- 0xa640, 0xa672,
- 0xa674, 0xa67d,
- 0xa67f, 0xa697,
- 0xa69f, 0xa6f1,
- 0xa717, 0xa71f,
- 0xa722, 0xa788,
- 0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa827,
- 0xa840, 0xa873,
- 0xa880, 0xa8c4,
- 0xa8d0, 0xa8d9,
- 0xa8e0, 0xa8f7,
- 0xa8fb, 0xa8fb,
- 0xa900, 0xa92d,
- 0xa930, 0xa953,
- 0xa960, 0xa97c,
- 0xa980, 0xa9c0,
- 0xa9cf, 0xa9d9,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa50, 0xaa59,
- 0xaa60, 0xaa76,
- 0xaa7a, 0xaa7b,
- 0xaa80, 0xaac2,
- 0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf6,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabea,
- 0xabec, 0xabed,
- 0xabf0, 0xabf9,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb28,
- 0xfb2a, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbb1,
- 0xfbd3, 0xfd3d,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfb,
- 0xfe00, 0xfe0f,
- 0xfe20, 0xfe26,
- 0xfe33, 0xfe34,
- 0xfe4d, 0xfe4f,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xff10, 0xff19,
- 0xff21, 0xff3a,
- 0xff3f, 0xff3f,
- 0xff41, 0xff5a,
- 0xff66, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10140, 0x10174,
- 0x101fd, 0x101fd,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x103a0, 0x103c3,
- 0x103c8, 0x103cf,
- 0x103d1, 0x103d5,
- 0x10400, 0x1049d,
- 0x104a0, 0x104a9,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10900, 0x10915,
- 0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a38, 0x10a3a,
- 0x10a3f, 0x10a3f,
- 0x10a60, 0x10a7c,
- 0x10b00, 0x10b35,
- 0x10b40, 0x10b55,
- 0x10b60, 0x10b72,
- 0x10c00, 0x10c48,
- 0x11000, 0x11046,
- 0x11066, 0x1106f,
- 0x11080, 0x110ba,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x1113f,
- 0x11180, 0x111c4,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d165, 0x1d169,
- 0x1d16d, 0x1d172,
- 0x1d17b, 0x1d182,
- 0x1d185, 0x1d18b,
- 0x1d1aa, 0x1d1ad,
- 0x1d242, 0x1d244,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d6c0,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6fa,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d734,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d76e,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d7a8,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7cb,
- 0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
- 0xe0100, 0xe01ef,
-}; /* CR_Word */
-
-/* 'Alnum': [[:Alnum:]] */
-static const OnigCodePoint CR_Alnum[] = {
- 566,
- 0x0030, 0x0039,
- 0x0041, 0x005a,
- 0x0061, 0x007a,
- 0x00aa, 0x00aa,
- 0x00b5, 0x00b5,
- 0x00ba, 0x00ba,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00f6,
- 0x00f8, 0x02c1,
- 0x02c6, 0x02d1,
- 0x02e0, 0x02e4,
- 0x02ec, 0x02ec,
- 0x02ee, 0x02ee,
- 0x0345, 0x0345,
- 0x0370, 0x0374,
- 0x0376, 0x0377,
- 0x037a, 0x037d,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x03f5,
- 0x03f7, 0x0481,
- 0x048a, 0x0527,
- 0x0531, 0x0556,
- 0x0559, 0x0559,
- 0x0561, 0x0587,
- 0x05b0, 0x05bd,
- 0x05bf, 0x05bf,
- 0x05c1, 0x05c2,
- 0x05c4, 0x05c5,
- 0x05c7, 0x05c7,
- 0x05d0, 0x05ea,
- 0x05f0, 0x05f2,
- 0x0610, 0x061a,
- 0x0620, 0x0657,
- 0x0659, 0x0669,
- 0x066e, 0x06d3,
- 0x06d5, 0x06dc,
- 0x06e1, 0x06e8,
- 0x06ed, 0x06fc,
- 0x06ff, 0x06ff,
- 0x0710, 0x073f,
- 0x074d, 0x07b1,
- 0x07c0, 0x07ea,
- 0x07f4, 0x07f5,
- 0x07fa, 0x07fa,
- 0x0800, 0x0817,
- 0x081a, 0x082c,
- 0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08e9,
- 0x08f0, 0x08fe,
- 0x0900, 0x093b,
- 0x093d, 0x094c,
- 0x094e, 0x0950,
- 0x0955, 0x0963,
- 0x0966, 0x096f,
- 0x0971, 0x0977,
- 0x0979, 0x097f,
- 0x0981, 0x0983,
- 0x0985, 0x098c,
- 0x098f, 0x0990,
- 0x0993, 0x09a8,
- 0x09aa, 0x09b0,
- 0x09b2, 0x09b2,
- 0x09b6, 0x09b9,
- 0x09bd, 0x09c4,
- 0x09c7, 0x09c8,
- 0x09cb, 0x09cc,
- 0x09ce, 0x09ce,
- 0x09d7, 0x09d7,
- 0x09dc, 0x09dd,
- 0x09df, 0x09e3,
- 0x09e6, 0x09f1,
- 0x0a01, 0x0a03,
- 0x0a05, 0x0a0a,
- 0x0a0f, 0x0a10,
- 0x0a13, 0x0a28,
- 0x0a2a, 0x0a30,
- 0x0a32, 0x0a33,
- 0x0a35, 0x0a36,
- 0x0a38, 0x0a39,
- 0x0a3e, 0x0a42,
- 0x0a47, 0x0a48,
- 0x0a4b, 0x0a4c,
- 0x0a51, 0x0a51,
- 0x0a59, 0x0a5c,
- 0x0a5e, 0x0a5e,
- 0x0a66, 0x0a75,
- 0x0a81, 0x0a83,
- 0x0a85, 0x0a8d,
- 0x0a8f, 0x0a91,
- 0x0a93, 0x0aa8,
- 0x0aaa, 0x0ab0,
- 0x0ab2, 0x0ab3,
- 0x0ab5, 0x0ab9,
- 0x0abd, 0x0ac5,
- 0x0ac7, 0x0ac9,
- 0x0acb, 0x0acc,
- 0x0ad0, 0x0ad0,
- 0x0ae0, 0x0ae3,
- 0x0ae6, 0x0aef,
- 0x0b01, 0x0b03,
- 0x0b05, 0x0b0c,
- 0x0b0f, 0x0b10,
- 0x0b13, 0x0b28,
- 0x0b2a, 0x0b30,
- 0x0b32, 0x0b33,
- 0x0b35, 0x0b39,
- 0x0b3d, 0x0b44,
- 0x0b47, 0x0b48,
- 0x0b4b, 0x0b4c,
- 0x0b56, 0x0b57,
- 0x0b5c, 0x0b5d,
- 0x0b5f, 0x0b63,
- 0x0b66, 0x0b6f,
- 0x0b71, 0x0b71,
- 0x0b82, 0x0b83,
- 0x0b85, 0x0b8a,
- 0x0b8e, 0x0b90,
- 0x0b92, 0x0b95,
- 0x0b99, 0x0b9a,
- 0x0b9c, 0x0b9c,
- 0x0b9e, 0x0b9f,
- 0x0ba3, 0x0ba4,
- 0x0ba8, 0x0baa,
- 0x0bae, 0x0bb9,
- 0x0bbe, 0x0bc2,
- 0x0bc6, 0x0bc8,
- 0x0bca, 0x0bcc,
- 0x0bd0, 0x0bd0,
- 0x0bd7, 0x0bd7,
- 0x0be6, 0x0bef,
- 0x0c01, 0x0c03,
- 0x0c05, 0x0c0c,
- 0x0c0e, 0x0c10,
- 0x0c12, 0x0c28,
- 0x0c2a, 0x0c33,
- 0x0c35, 0x0c39,
- 0x0c3d, 0x0c44,
- 0x0c46, 0x0c48,
- 0x0c4a, 0x0c4c,
- 0x0c55, 0x0c56,
- 0x0c58, 0x0c59,
- 0x0c60, 0x0c63,
- 0x0c66, 0x0c6f,
- 0x0c82, 0x0c83,
- 0x0c85, 0x0c8c,
- 0x0c8e, 0x0c90,
- 0x0c92, 0x0ca8,
- 0x0caa, 0x0cb3,
- 0x0cb5, 0x0cb9,
- 0x0cbd, 0x0cc4,
- 0x0cc6, 0x0cc8,
- 0x0cca, 0x0ccc,
- 0x0cd5, 0x0cd6,
- 0x0cde, 0x0cde,
- 0x0ce0, 0x0ce3,
- 0x0ce6, 0x0cef,
- 0x0cf1, 0x0cf2,
- 0x0d02, 0x0d03,
- 0x0d05, 0x0d0c,
- 0x0d0e, 0x0d10,
- 0x0d12, 0x0d3a,
- 0x0d3d, 0x0d44,
- 0x0d46, 0x0d48,
- 0x0d4a, 0x0d4c,
- 0x0d4e, 0x0d4e,
- 0x0d57, 0x0d57,
- 0x0d60, 0x0d63,
- 0x0d66, 0x0d6f,
- 0x0d7a, 0x0d7f,
- 0x0d82, 0x0d83,
- 0x0d85, 0x0d96,
- 0x0d9a, 0x0db1,
- 0x0db3, 0x0dbb,
- 0x0dbd, 0x0dbd,
- 0x0dc0, 0x0dc6,
- 0x0dcf, 0x0dd4,
- 0x0dd6, 0x0dd6,
- 0x0dd8, 0x0ddf,
- 0x0df2, 0x0df3,
- 0x0e01, 0x0e3a,
- 0x0e40, 0x0e46,
- 0x0e4d, 0x0e4d,
- 0x0e50, 0x0e59,
- 0x0e81, 0x0e82,
- 0x0e84, 0x0e84,
- 0x0e87, 0x0e88,
- 0x0e8a, 0x0e8a,
- 0x0e8d, 0x0e8d,
- 0x0e94, 0x0e97,
- 0x0e99, 0x0e9f,
- 0x0ea1, 0x0ea3,
- 0x0ea5, 0x0ea5,
- 0x0ea7, 0x0ea7,
- 0x0eaa, 0x0eab,
- 0x0ead, 0x0eb9,
- 0x0ebb, 0x0ebd,
- 0x0ec0, 0x0ec4,
- 0x0ec6, 0x0ec6,
- 0x0ecd, 0x0ecd,
- 0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
- 0x0f00, 0x0f00,
- 0x0f20, 0x0f29,
- 0x0f40, 0x0f47,
- 0x0f49, 0x0f6c,
- 0x0f71, 0x0f81,
- 0x0f88, 0x0f97,
- 0x0f99, 0x0fbc,
- 0x1000, 0x1036,
- 0x1038, 0x1038,
- 0x103b, 0x1049,
- 0x1050, 0x1062,
- 0x1065, 0x1068,
- 0x106e, 0x1086,
- 0x108e, 0x108e,
- 0x1090, 0x1099,
- 0x109c, 0x109d,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x10fa,
- 0x10fc, 0x1248,
- 0x124a, 0x124d,
- 0x1250, 0x1256,
- 0x1258, 0x1258,
- 0x125a, 0x125d,
- 0x1260, 0x1288,
- 0x128a, 0x128d,
- 0x1290, 0x12b0,
- 0x12b2, 0x12b5,
- 0x12b8, 0x12be,
- 0x12c0, 0x12c0,
- 0x12c2, 0x12c5,
- 0x12c8, 0x12d6,
- 0x12d8, 0x1310,
- 0x1312, 0x1315,
- 0x1318, 0x135a,
- 0x135f, 0x135f,
- 0x1380, 0x138f,
- 0x13a0, 0x13f4,
- 0x1401, 0x166c,
- 0x166f, 0x167f,
- 0x1681, 0x169a,
- 0x16a0, 0x16ea,
- 0x16ee, 0x16f0,
- 0x1700, 0x170c,
- 0x170e, 0x1713,
- 0x1720, 0x1733,
- 0x1740, 0x1753,
- 0x1760, 0x176c,
- 0x176e, 0x1770,
- 0x1772, 0x1773,
- 0x1780, 0x17b3,
- 0x17b6, 0x17c8,
- 0x17d7, 0x17d7,
- 0x17dc, 0x17dc,
- 0x17e0, 0x17e9,
- 0x1810, 0x1819,
- 0x1820, 0x1877,
- 0x1880, 0x18aa,
- 0x18b0, 0x18f5,
- 0x1900, 0x191c,
- 0x1920, 0x192b,
- 0x1930, 0x1938,
- 0x1946, 0x196d,
- 0x1970, 0x1974,
- 0x1980, 0x19ab,
- 0x19b0, 0x19c9,
- 0x19d0, 0x19d9,
- 0x1a00, 0x1a1b,
- 0x1a20, 0x1a5e,
- 0x1a61, 0x1a74,
- 0x1a80, 0x1a89,
- 0x1a90, 0x1a99,
- 0x1aa7, 0x1aa7,
- 0x1b00, 0x1b33,
- 0x1b35, 0x1b43,
- 0x1b45, 0x1b4b,
- 0x1b50, 0x1b59,
- 0x1b80, 0x1ba9,
- 0x1bac, 0x1be5,
- 0x1be7, 0x1bf1,
- 0x1c00, 0x1c35,
- 0x1c40, 0x1c49,
- 0x1c4d, 0x1c7d,
- 0x1ce9, 0x1cec,
- 0x1cee, 0x1cf3,
- 0x1cf5, 0x1cf6,
- 0x1d00, 0x1dbf,
- 0x1e00, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fbc,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fcc,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fe0, 0x1fec,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffc,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210a, 0x2113,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x212f, 0x2139,
- 0x213c, 0x213f,
- 0x2145, 0x2149,
- 0x214e, 0x214e,
- 0x2160, 0x2188,
- 0x24b6, 0x24e9,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2ce4,
- 0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
- 0x2d6f, 0x2d6f,
- 0x2d80, 0x2d96,
- 0x2da0, 0x2da6,
- 0x2da8, 0x2dae,
- 0x2db0, 0x2db6,
- 0x2db8, 0x2dbe,
- 0x2dc0, 0x2dc6,
- 0x2dc8, 0x2dce,
- 0x2dd0, 0x2dd6,
- 0x2dd8, 0x2dde,
- 0x2de0, 0x2dff,
- 0x2e2f, 0x2e2f,
- 0x3005, 0x3007,
- 0x3021, 0x3029,
- 0x3031, 0x3035,
- 0x3038, 0x303c,
- 0x3041, 0x3096,
- 0x309d, 0x309f,
- 0x30a1, 0x30fa,
- 0x30fc, 0x30ff,
- 0x3105, 0x312d,
- 0x3131, 0x318e,
- 0x31a0, 0x31ba,
- 0x31f0, 0x31ff,
- 0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xa000, 0xa48c,
- 0xa4d0, 0xa4fd,
- 0xa500, 0xa60c,
- 0xa610, 0xa62b,
- 0xa640, 0xa66e,
- 0xa674, 0xa67b,
- 0xa67f, 0xa697,
- 0xa69f, 0xa6ef,
- 0xa717, 0xa71f,
- 0xa722, 0xa788,
- 0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
- 0xa803, 0xa805,
- 0xa807, 0xa80a,
- 0xa80c, 0xa827,
- 0xa840, 0xa873,
- 0xa880, 0xa8c3,
- 0xa8d0, 0xa8d9,
- 0xa8f2, 0xa8f7,
- 0xa8fb, 0xa8fb,
- 0xa900, 0xa92a,
- 0xa930, 0xa952,
- 0xa960, 0xa97c,
- 0xa980, 0xa9b2,
- 0xa9b4, 0xa9bf,
- 0xa9cf, 0xa9d9,
- 0xaa00, 0xaa36,
- 0xaa40, 0xaa4d,
- 0xaa50, 0xaa59,
- 0xaa60, 0xaa76,
- 0xaa7a, 0xaa7a,
- 0xaa80, 0xaabe,
- 0xaac0, 0xaac0,
- 0xaac2, 0xaac2,
- 0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf5,
- 0xab01, 0xab06,
- 0xab09, 0xab0e,
- 0xab11, 0xab16,
- 0xab20, 0xab26,
- 0xab28, 0xab2e,
- 0xabc0, 0xabea,
- 0xabf0, 0xabf9,
- 0xac00, 0xd7a3,
- 0xd7b0, 0xd7c6,
- 0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
- 0xfa70, 0xfad9,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xfb1d, 0xfb28,
- 0xfb2a, 0xfb36,
- 0xfb38, 0xfb3c,
- 0xfb3e, 0xfb3e,
- 0xfb40, 0xfb41,
- 0xfb43, 0xfb44,
- 0xfb46, 0xfbb1,
- 0xfbd3, 0xfd3d,
- 0xfd50, 0xfd8f,
- 0xfd92, 0xfdc7,
- 0xfdf0, 0xfdfb,
- 0xfe70, 0xfe74,
- 0xfe76, 0xfefc,
- 0xff10, 0xff19,
- 0xff21, 0xff3a,
- 0xff41, 0xff5a,
- 0xff66, 0xffbe,
- 0xffc2, 0xffc7,
- 0xffca, 0xffcf,
- 0xffd2, 0xffd7,
- 0xffda, 0xffdc,
- 0x10000, 0x1000b,
- 0x1000d, 0x10026,
- 0x10028, 0x1003a,
- 0x1003c, 0x1003d,
- 0x1003f, 0x1004d,
- 0x10050, 0x1005d,
- 0x10080, 0x100fa,
- 0x10140, 0x10174,
- 0x10280, 0x1029c,
- 0x102a0, 0x102d0,
- 0x10300, 0x1031e,
- 0x10330, 0x1034a,
- 0x10380, 0x1039d,
- 0x103a0, 0x103c3,
- 0x103c8, 0x103cf,
- 0x103d1, 0x103d5,
- 0x10400, 0x1049d,
- 0x104a0, 0x104a9,
- 0x10800, 0x10805,
- 0x10808, 0x10808,
- 0x1080a, 0x10835,
- 0x10837, 0x10838,
- 0x1083c, 0x1083c,
- 0x1083f, 0x10855,
- 0x10900, 0x10915,
- 0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
- 0x10a00, 0x10a03,
- 0x10a05, 0x10a06,
- 0x10a0c, 0x10a13,
- 0x10a15, 0x10a17,
- 0x10a19, 0x10a33,
- 0x10a60, 0x10a7c,
- 0x10b00, 0x10b35,
- 0x10b40, 0x10b55,
- 0x10b60, 0x10b72,
- 0x10c00, 0x10c48,
- 0x11000, 0x11045,
- 0x11066, 0x1106f,
- 0x11082, 0x110b8,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11132,
- 0x11136, 0x1113f,
- 0x11180, 0x111bf,
- 0x111c1, 0x111c4,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b5,
- 0x116c0, 0x116c9,
- 0x12000, 0x1236e,
- 0x12400, 0x12462,
- 0x13000, 0x1342e,
- 0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f93, 0x16f9f,
- 0x1b000, 0x1b001,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d6c0,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6fa,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d734,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d76e,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d7a8,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7cb,
- 0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x20000, 0x2a6d6,
- 0x2a700, 0x2b734,
- 0x2b740, 0x2b81d,
- 0x2f800, 0x2fa1d,
-}; /* CR_Alnum */
-
-/* 'ASCII': [[:ASCII:]] */
-static const OnigCodePoint CR_ASCII[] = {
- 1,
- 0x0000, 0x007f,
-}; /* CR_ASCII */
-
#ifdef USE_UNICODE_PROPERTIES
/* 'Any': - */
static const OnigCodePoint CR_Any[] = {
@@ -4277,7 +10,7 @@ static const OnigCodePoint CR_Any[] = {
/* 'Assigned': - */
static const OnigCodePoint CR_Assigned[] = {
- 539,
+ 501,
0x0000, 0x0377,
0x037a, 0x037e,
0x0384, 0x038a,
@@ -4288,11 +21,10 @@ static const OnigCodePoint CR_Assigned[] = {
0x0559, 0x055f,
0x0561, 0x0587,
0x0589, 0x058a,
- 0x058f, 0x058f,
0x0591, 0x05c7,
0x05d0, 0x05ea,
0x05f0, 0x05f4,
- 0x0600, 0x0604,
+ 0x0600, 0x0603,
0x0606, 0x061b,
0x061e, 0x070d,
0x070f, 0x074a,
@@ -4302,9 +34,6 @@ static const OnigCodePoint CR_Assigned[] = {
0x0830, 0x083e,
0x0840, 0x085b,
0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0x0900, 0x0977,
0x0979, 0x097f,
0x0981, 0x0983,
@@ -4349,7 +78,8 @@ static const OnigCodePoint CR_Assigned[] = {
0x0acb, 0x0acd,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -4449,7 +179,7 @@ static const OnigCodePoint CR_Assigned[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f47,
0x0f49, 0x0f6c,
0x0f71, 0x0f97,
@@ -4457,9 +187,8 @@ static const OnigCodePoint CR_Assigned[] = {
0x0fbe, 0x0fcc,
0x0fce, 0x0fda,
0x1000, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
+ 0x10d0, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -4512,12 +241,13 @@ static const OnigCodePoint CR_Assigned[] = {
0x1aa0, 0x1aad,
0x1b00, 0x1b4b,
0x1b50, 0x1b7c,
- 0x1b80, 0x1bf3,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
0x1bfc, 0x1c37,
0x1c3b, 0x1c49,
0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd0, 0x1cf6,
+ 0x1cd0, 0x1cf2,
0x1d00, 0x1de6,
0x1dfc, 0x1f15,
0x1f18, 0x1f1d,
@@ -4546,15 +276,15 @@ static const OnigCodePoint CR_Assigned[] = {
0x2400, 0x2426,
0x2440, 0x244a,
0x2460, 0x26ff,
- 0x2701, 0x2b4c,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x2b4c,
0x2b50, 0x2b59,
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
- 0x2c60, 0x2cf3,
+ 0x2c60, 0x2cf1,
0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d70,
0x2d7f, 0x2d96,
0x2da0, 0x2da6,
@@ -4565,7 +295,7 @@ static const OnigCodePoint CR_Assigned[] = {
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
- 0x2de0, 0x2e3b,
+ 0x2de0, 0x2e31,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -4580,16 +310,17 @@ static const OnigCodePoint CR_Assigned[] = {
0x31f0, 0x321e,
0x3220, 0x32fe,
0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
+ 0x4dc0, 0x9fcb,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
- 0xa640, 0xa697,
- 0xa69f, 0xa6f7,
+ 0xa640, 0xa673,
+ 0xa67c, 0xa697,
+ 0xa6a0, 0xa6f7,
0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa82b,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
0xa880, 0xa8c4,
@@ -4605,7 +336,7 @@ static const OnigCodePoint CR_Assigned[] = {
0xaa50, 0xaa59,
0xaa5c, 0xaa7b,
0xaa80, 0xaac2,
- 0xaadb, 0xaaf6,
+ 0xaadb, 0xaadf,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -4616,7 +347,8 @@ static const OnigCodePoint CR_Assigned[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xd800, 0xfa6d,
+ 0xd800, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -4678,8 +410,6 @@ static const OnigCodePoint CR_Assigned[] = {
0x10900, 0x1091b,
0x1091f, 0x10939,
0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a03,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
@@ -4698,22 +428,11 @@ static const OnigCodePoint CR_Assigned[] = {
0x11000, 0x1104d,
0x11052, 0x1106f,
0x11080, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x12470, 0x12473,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
0x1b000, 0x1b001,
0x1d000, 0x1d0f5,
0x1d100, 0x1d126,
@@ -4742,40 +461,6 @@ static const OnigCodePoint CR_Assigned[] = {
0x1d552, 0x1d6a5,
0x1d6a8, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
@@ -4784,7 +469,7 @@ static const OnigCodePoint CR_Assigned[] = {
0x1f0d1, 0x1f0df,
0x1f100, 0x1f10a,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -4802,9 +487,19 @@ static const OnigCodePoint CR_Assigned[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -4821,560 +516,44 @@ static const OnigCodePoint CR_Assigned[] = {
/* 'C': Major Category */
static const OnigCodePoint CR_C[] = {
- 541,
+ 20,
0x0000, 0x001f,
0x007f, 0x009f,
0x00ad, 0x00ad,
- 0x0378, 0x0379,
- 0x037f, 0x0383,
- 0x038b, 0x038b,
- 0x038d, 0x038d,
- 0x03a2, 0x03a2,
- 0x0528, 0x0530,
- 0x0557, 0x0558,
- 0x0560, 0x0560,
- 0x0588, 0x0588,
- 0x058b, 0x058e,
- 0x0590, 0x0590,
- 0x05c8, 0x05cf,
- 0x05eb, 0x05ef,
- 0x05f5, 0x0605,
- 0x061c, 0x061d,
+ 0x0600, 0x0603,
0x06dd, 0x06dd,
- 0x070e, 0x070f,
- 0x074b, 0x074c,
- 0x07b2, 0x07bf,
- 0x07fb, 0x07ff,
- 0x082e, 0x082f,
- 0x083f, 0x083f,
- 0x085c, 0x085d,
- 0x085f, 0x089f,
- 0x08a1, 0x08a1,
- 0x08ad, 0x08e3,
- 0x08ff, 0x08ff,
- 0x0978, 0x0978,
- 0x0980, 0x0980,
- 0x0984, 0x0984,
- 0x098d, 0x098e,
- 0x0991, 0x0992,
- 0x09a9, 0x09a9,
- 0x09b1, 0x09b1,
- 0x09b3, 0x09b5,
- 0x09ba, 0x09bb,
- 0x09c5, 0x09c6,
- 0x09c9, 0x09ca,
- 0x09cf, 0x09d6,
- 0x09d8, 0x09db,
- 0x09de, 0x09de,
- 0x09e4, 0x09e5,
- 0x09fc, 0x0a00,
- 0x0a04, 0x0a04,
- 0x0a0b, 0x0a0e,
- 0x0a11, 0x0a12,
- 0x0a29, 0x0a29,
- 0x0a31, 0x0a31,
- 0x0a34, 0x0a34,
- 0x0a37, 0x0a37,
- 0x0a3a, 0x0a3b,
- 0x0a3d, 0x0a3d,
- 0x0a43, 0x0a46,
- 0x0a49, 0x0a4a,
- 0x0a4e, 0x0a50,
- 0x0a52, 0x0a58,
- 0x0a5d, 0x0a5d,
- 0x0a5f, 0x0a65,
- 0x0a76, 0x0a80,
- 0x0a84, 0x0a84,
- 0x0a8e, 0x0a8e,
- 0x0a92, 0x0a92,
- 0x0aa9, 0x0aa9,
- 0x0ab1, 0x0ab1,
- 0x0ab4, 0x0ab4,
- 0x0aba, 0x0abb,
- 0x0ac6, 0x0ac6,
- 0x0aca, 0x0aca,
- 0x0ace, 0x0acf,
- 0x0ad1, 0x0adf,
- 0x0ae4, 0x0ae5,
- 0x0af2, 0x0b00,
- 0x0b04, 0x0b04,
- 0x0b0d, 0x0b0e,
- 0x0b11, 0x0b12,
- 0x0b29, 0x0b29,
- 0x0b31, 0x0b31,
- 0x0b34, 0x0b34,
- 0x0b3a, 0x0b3b,
- 0x0b45, 0x0b46,
- 0x0b49, 0x0b4a,
- 0x0b4e, 0x0b55,
- 0x0b58, 0x0b5b,
- 0x0b5e, 0x0b5e,
- 0x0b64, 0x0b65,
- 0x0b78, 0x0b81,
- 0x0b84, 0x0b84,
- 0x0b8b, 0x0b8d,
- 0x0b91, 0x0b91,
- 0x0b96, 0x0b98,
- 0x0b9b, 0x0b9b,
- 0x0b9d, 0x0b9d,
- 0x0ba0, 0x0ba2,
- 0x0ba5, 0x0ba7,
- 0x0bab, 0x0bad,
- 0x0bba, 0x0bbd,
- 0x0bc3, 0x0bc5,
- 0x0bc9, 0x0bc9,
- 0x0bce, 0x0bcf,
- 0x0bd1, 0x0bd6,
- 0x0bd8, 0x0be5,
- 0x0bfb, 0x0c00,
- 0x0c04, 0x0c04,
- 0x0c0d, 0x0c0d,
- 0x0c11, 0x0c11,
- 0x0c29, 0x0c29,
- 0x0c34, 0x0c34,
- 0x0c3a, 0x0c3c,
- 0x0c45, 0x0c45,
- 0x0c49, 0x0c49,
- 0x0c4e, 0x0c54,
- 0x0c57, 0x0c57,
- 0x0c5a, 0x0c5f,
- 0x0c64, 0x0c65,
- 0x0c70, 0x0c77,
- 0x0c80, 0x0c81,
- 0x0c84, 0x0c84,
- 0x0c8d, 0x0c8d,
- 0x0c91, 0x0c91,
- 0x0ca9, 0x0ca9,
- 0x0cb4, 0x0cb4,
- 0x0cba, 0x0cbb,
- 0x0cc5, 0x0cc5,
- 0x0cc9, 0x0cc9,
- 0x0cce, 0x0cd4,
- 0x0cd7, 0x0cdd,
- 0x0cdf, 0x0cdf,
- 0x0ce4, 0x0ce5,
- 0x0cf0, 0x0cf0,
- 0x0cf3, 0x0d01,
- 0x0d04, 0x0d04,
- 0x0d0d, 0x0d0d,
- 0x0d11, 0x0d11,
- 0x0d3b, 0x0d3c,
- 0x0d45, 0x0d45,
- 0x0d49, 0x0d49,
- 0x0d4f, 0x0d56,
- 0x0d58, 0x0d5f,
- 0x0d64, 0x0d65,
- 0x0d76, 0x0d78,
- 0x0d80, 0x0d81,
- 0x0d84, 0x0d84,
- 0x0d97, 0x0d99,
- 0x0db2, 0x0db2,
- 0x0dbc, 0x0dbc,
- 0x0dbe, 0x0dbf,
- 0x0dc7, 0x0dc9,
- 0x0dcb, 0x0dce,
- 0x0dd5, 0x0dd5,
- 0x0dd7, 0x0dd7,
- 0x0de0, 0x0df1,
- 0x0df5, 0x0e00,
- 0x0e3b, 0x0e3e,
- 0x0e5c, 0x0e80,
- 0x0e83, 0x0e83,
- 0x0e85, 0x0e86,
- 0x0e89, 0x0e89,
- 0x0e8b, 0x0e8c,
- 0x0e8e, 0x0e93,
- 0x0e98, 0x0e98,
- 0x0ea0, 0x0ea0,
- 0x0ea4, 0x0ea4,
- 0x0ea6, 0x0ea6,
- 0x0ea8, 0x0ea9,
- 0x0eac, 0x0eac,
- 0x0eba, 0x0eba,
- 0x0ebe, 0x0ebf,
- 0x0ec5, 0x0ec5,
- 0x0ec7, 0x0ec7,
- 0x0ece, 0x0ecf,
- 0x0eda, 0x0edb,
- 0x0ee0, 0x0eff,
- 0x0f48, 0x0f48,
- 0x0f6d, 0x0f70,
- 0x0f98, 0x0f98,
- 0x0fbd, 0x0fbd,
- 0x0fcd, 0x0fcd,
- 0x0fdb, 0x0fff,
- 0x10c6, 0x10c6,
- 0x10c8, 0x10cc,
- 0x10ce, 0x10cf,
- 0x1249, 0x1249,
- 0x124e, 0x124f,
- 0x1257, 0x1257,
- 0x1259, 0x1259,
- 0x125e, 0x125f,
- 0x1289, 0x1289,
- 0x128e, 0x128f,
- 0x12b1, 0x12b1,
- 0x12b6, 0x12b7,
- 0x12bf, 0x12bf,
- 0x12c1, 0x12c1,
- 0x12c6, 0x12c7,
- 0x12d7, 0x12d7,
- 0x1311, 0x1311,
- 0x1316, 0x1317,
- 0x135b, 0x135c,
- 0x137d, 0x137f,
- 0x139a, 0x139f,
- 0x13f5, 0x13ff,
- 0x169d, 0x169f,
- 0x16f1, 0x16ff,
- 0x170d, 0x170d,
- 0x1715, 0x171f,
- 0x1737, 0x173f,
- 0x1754, 0x175f,
- 0x176d, 0x176d,
- 0x1771, 0x1771,
- 0x1774, 0x177f,
- 0x17de, 0x17df,
- 0x17ea, 0x17ef,
- 0x17fa, 0x17ff,
- 0x180f, 0x180f,
- 0x181a, 0x181f,
- 0x1878, 0x187f,
- 0x18ab, 0x18af,
- 0x18f6, 0x18ff,
- 0x191d, 0x191f,
- 0x192c, 0x192f,
- 0x193c, 0x193f,
- 0x1941, 0x1943,
- 0x196e, 0x196f,
- 0x1975, 0x197f,
- 0x19ac, 0x19af,
- 0x19ca, 0x19cf,
- 0x19db, 0x19dd,
- 0x1a1c, 0x1a1d,
- 0x1a5f, 0x1a5f,
- 0x1a7d, 0x1a7e,
- 0x1a8a, 0x1a8f,
- 0x1a9a, 0x1a9f,
- 0x1aae, 0x1aff,
- 0x1b4c, 0x1b4f,
- 0x1b7d, 0x1b7f,
- 0x1bf4, 0x1bfb,
- 0x1c38, 0x1c3a,
- 0x1c4a, 0x1c4c,
- 0x1c80, 0x1cbf,
- 0x1cc8, 0x1ccf,
- 0x1cf7, 0x1cff,
- 0x1de7, 0x1dfb,
- 0x1f16, 0x1f17,
- 0x1f1e, 0x1f1f,
- 0x1f46, 0x1f47,
- 0x1f4e, 0x1f4f,
- 0x1f58, 0x1f58,
- 0x1f5a, 0x1f5a,
- 0x1f5c, 0x1f5c,
- 0x1f5e, 0x1f5e,
- 0x1f7e, 0x1f7f,
- 0x1fb5, 0x1fb5,
- 0x1fc5, 0x1fc5,
- 0x1fd4, 0x1fd5,
- 0x1fdc, 0x1fdc,
- 0x1ff0, 0x1ff1,
- 0x1ff5, 0x1ff5,
- 0x1fff, 0x1fff,
+ 0x070f, 0x070f,
+ 0x17b4, 0x17b5,
0x200b, 0x200f,
0x202a, 0x202e,
- 0x2060, 0x206f,
- 0x2072, 0x2073,
- 0x208f, 0x208f,
- 0x209d, 0x209f,
- 0x20ba, 0x20cf,
- 0x20f1, 0x20ff,
- 0x218a, 0x218f,
- 0x23f4, 0x23ff,
- 0x2427, 0x243f,
- 0x244b, 0x245f,
- 0x2700, 0x2700,
- 0x2b4d, 0x2b4f,
- 0x2b5a, 0x2bff,
- 0x2c2f, 0x2c2f,
- 0x2c5f, 0x2c5f,
- 0x2cf4, 0x2cf8,
- 0x2d26, 0x2d26,
- 0x2d28, 0x2d2c,
- 0x2d2e, 0x2d2f,
- 0x2d68, 0x2d6e,
- 0x2d71, 0x2d7e,
- 0x2d97, 0x2d9f,
- 0x2da7, 0x2da7,
- 0x2daf, 0x2daf,
- 0x2db7, 0x2db7,
- 0x2dbf, 0x2dbf,
- 0x2dc7, 0x2dc7,
- 0x2dcf, 0x2dcf,
- 0x2dd7, 0x2dd7,
- 0x2ddf, 0x2ddf,
- 0x2e3c, 0x2e7f,
- 0x2e9a, 0x2e9a,
- 0x2ef4, 0x2eff,
- 0x2fd6, 0x2fef,
- 0x2ffc, 0x2fff,
- 0x3040, 0x3040,
- 0x3097, 0x3098,
- 0x3100, 0x3104,
- 0x312e, 0x3130,
- 0x318f, 0x318f,
- 0x31bb, 0x31bf,
- 0x31e4, 0x31ef,
- 0x321f, 0x321f,
- 0x32ff, 0x32ff,
- 0x4db6, 0x4dbf,
- 0x9fcd, 0x9fff,
- 0xa48d, 0xa48f,
- 0xa4c7, 0xa4cf,
- 0xa62c, 0xa63f,
- 0xa698, 0xa69e,
- 0xa6f8, 0xa6ff,
- 0xa78f, 0xa78f,
- 0xa794, 0xa79f,
- 0xa7ab, 0xa7f7,
- 0xa82c, 0xa82f,
- 0xa83a, 0xa83f,
- 0xa878, 0xa87f,
- 0xa8c5, 0xa8cd,
- 0xa8da, 0xa8df,
- 0xa8fc, 0xa8ff,
- 0xa954, 0xa95e,
- 0xa97d, 0xa97f,
- 0xa9ce, 0xa9ce,
- 0xa9da, 0xa9dd,
- 0xa9e0, 0xa9ff,
- 0xaa37, 0xaa3f,
- 0xaa4e, 0xaa4f,
- 0xaa5a, 0xaa5b,
- 0xaa7c, 0xaa7f,
- 0xaac3, 0xaada,
- 0xaaf7, 0xab00,
- 0xab07, 0xab08,
- 0xab0f, 0xab10,
- 0xab17, 0xab1f,
- 0xab27, 0xab27,
- 0xab2f, 0xabbf,
- 0xabee, 0xabef,
- 0xabfa, 0xabff,
- 0xd7a4, 0xd7af,
- 0xd7c7, 0xd7ca,
- 0xd7fc, 0xf8ff,
- 0xfa6e, 0xfa6f,
- 0xfada, 0xfaff,
- 0xfb07, 0xfb12,
- 0xfb18, 0xfb1c,
- 0xfb37, 0xfb37,
- 0xfb3d, 0xfb3d,
- 0xfb3f, 0xfb3f,
- 0xfb42, 0xfb42,
- 0xfb45, 0xfb45,
- 0xfbc2, 0xfbd2,
- 0xfd40, 0xfd4f,
- 0xfd90, 0xfd91,
- 0xfdc8, 0xfdef,
- 0xfdfe, 0xfdff,
- 0xfe1a, 0xfe1f,
- 0xfe27, 0xfe2f,
- 0xfe53, 0xfe53,
- 0xfe67, 0xfe67,
- 0xfe6c, 0xfe6f,
- 0xfe75, 0xfe75,
- 0xfefd, 0xff00,
- 0xffbf, 0xffc1,
- 0xffc8, 0xffc9,
- 0xffd0, 0xffd1,
- 0xffd8, 0xffd9,
- 0xffdd, 0xffdf,
- 0xffe7, 0xffe7,
- 0xffef, 0xfffb,
- 0xfffe, 0xffff,
- 0x1000c, 0x1000c,
- 0x10027, 0x10027,
- 0x1003b, 0x1003b,
- 0x1003e, 0x1003e,
- 0x1004e, 0x1004f,
- 0x1005e, 0x1007f,
- 0x100fb, 0x100ff,
- 0x10103, 0x10106,
- 0x10134, 0x10136,
- 0x1018b, 0x1018f,
- 0x1019c, 0x101cf,
- 0x101fe, 0x1027f,
- 0x1029d, 0x1029f,
- 0x102d1, 0x102ff,
- 0x1031f, 0x1031f,
- 0x10324, 0x1032f,
- 0x1034b, 0x1037f,
- 0x1039e, 0x1039e,
- 0x103c4, 0x103c7,
- 0x103d6, 0x103ff,
- 0x1049e, 0x1049f,
- 0x104aa, 0x107ff,
- 0x10806, 0x10807,
- 0x10809, 0x10809,
- 0x10836, 0x10836,
- 0x10839, 0x1083b,
- 0x1083d, 0x1083e,
- 0x10856, 0x10856,
- 0x10860, 0x108ff,
- 0x1091c, 0x1091e,
- 0x1093a, 0x1093e,
- 0x10940, 0x1097f,
- 0x109b8, 0x109bd,
- 0x109c0, 0x109ff,
- 0x10a04, 0x10a04,
- 0x10a07, 0x10a0b,
- 0x10a14, 0x10a14,
- 0x10a18, 0x10a18,
- 0x10a34, 0x10a37,
- 0x10a3b, 0x10a3e,
- 0x10a48, 0x10a4f,
- 0x10a59, 0x10a5f,
- 0x10a80, 0x10aff,
- 0x10b36, 0x10b38,
- 0x10b56, 0x10b57,
- 0x10b73, 0x10b77,
- 0x10b80, 0x10bff,
- 0x10c49, 0x10e5f,
- 0x10e7f, 0x10fff,
- 0x1104e, 0x11051,
- 0x11070, 0x1107f,
+ 0x2060, 0x2064,
+ 0x206a, 0x206f,
+ 0xd800, 0xf8ff,
+ 0xfeff, 0xfeff,
+ 0xfff9, 0xfffb,
0x110bd, 0x110bd,
- 0x110c2, 0x110cf,
- 0x110e9, 0x110ef,
- 0x110fa, 0x110ff,
- 0x11135, 0x11135,
- 0x11144, 0x1117f,
- 0x111c9, 0x111cf,
- 0x111da, 0x1167f,
- 0x116b8, 0x116bf,
- 0x116ca, 0x11fff,
- 0x1236f, 0x123ff,
- 0x12463, 0x1246f,
- 0x12474, 0x12fff,
- 0x1342f, 0x167ff,
- 0x16a39, 0x16eff,
- 0x16f45, 0x16f4f,
- 0x16f7f, 0x16f8e,
- 0x16fa0, 0x1afff,
- 0x1b002, 0x1cfff,
- 0x1d0f6, 0x1d0ff,
- 0x1d127, 0x1d128,
0x1d173, 0x1d17a,
- 0x1d1de, 0x1d1ff,
- 0x1d246, 0x1d2ff,
- 0x1d357, 0x1d35f,
- 0x1d372, 0x1d3ff,
- 0x1d455, 0x1d455,
- 0x1d49d, 0x1d49d,
- 0x1d4a0, 0x1d4a1,
- 0x1d4a3, 0x1d4a4,
- 0x1d4a7, 0x1d4a8,
- 0x1d4ad, 0x1d4ad,
- 0x1d4ba, 0x1d4ba,
- 0x1d4bc, 0x1d4bc,
- 0x1d4c4, 0x1d4c4,
- 0x1d506, 0x1d506,
- 0x1d50b, 0x1d50c,
- 0x1d515, 0x1d515,
- 0x1d51d, 0x1d51d,
- 0x1d53a, 0x1d53a,
- 0x1d53f, 0x1d53f,
- 0x1d545, 0x1d545,
- 0x1d547, 0x1d549,
- 0x1d551, 0x1d551,
- 0x1d6a6, 0x1d6a7,
- 0x1d7cc, 0x1d7cd,
- 0x1d800, 0x1edff,
- 0x1ee04, 0x1ee04,
- 0x1ee20, 0x1ee20,
- 0x1ee23, 0x1ee23,
- 0x1ee25, 0x1ee26,
- 0x1ee28, 0x1ee28,
- 0x1ee33, 0x1ee33,
- 0x1ee38, 0x1ee38,
- 0x1ee3a, 0x1ee3a,
- 0x1ee3c, 0x1ee41,
- 0x1ee43, 0x1ee46,
- 0x1ee48, 0x1ee48,
- 0x1ee4a, 0x1ee4a,
- 0x1ee4c, 0x1ee4c,
- 0x1ee50, 0x1ee50,
- 0x1ee53, 0x1ee53,
- 0x1ee55, 0x1ee56,
- 0x1ee58, 0x1ee58,
- 0x1ee5a, 0x1ee5a,
- 0x1ee5c, 0x1ee5c,
- 0x1ee5e, 0x1ee5e,
- 0x1ee60, 0x1ee60,
- 0x1ee63, 0x1ee63,
- 0x1ee65, 0x1ee66,
- 0x1ee6b, 0x1ee6b,
- 0x1ee73, 0x1ee73,
- 0x1ee78, 0x1ee78,
- 0x1ee7d, 0x1ee7d,
- 0x1ee7f, 0x1ee7f,
- 0x1ee8a, 0x1ee8a,
- 0x1ee9c, 0x1eea0,
- 0x1eea4, 0x1eea4,
- 0x1eeaa, 0x1eeaa,
- 0x1eebc, 0x1eeef,
- 0x1eef2, 0x1efff,
- 0x1f02c, 0x1f02f,
- 0x1f094, 0x1f09f,
- 0x1f0af, 0x1f0b0,
- 0x1f0bf, 0x1f0c0,
- 0x1f0d0, 0x1f0d0,
- 0x1f0e0, 0x1f0ff,
- 0x1f10b, 0x1f10f,
- 0x1f12f, 0x1f12f,
- 0x1f16c, 0x1f16f,
- 0x1f19b, 0x1f1e5,
- 0x1f203, 0x1f20f,
- 0x1f23b, 0x1f23f,
- 0x1f249, 0x1f24f,
- 0x1f252, 0x1f2ff,
- 0x1f321, 0x1f32f,
- 0x1f336, 0x1f336,
- 0x1f37d, 0x1f37f,
- 0x1f394, 0x1f39f,
- 0x1f3c5, 0x1f3c5,
- 0x1f3cb, 0x1f3df,
- 0x1f3f1, 0x1f3ff,
- 0x1f43f, 0x1f43f,
- 0x1f441, 0x1f441,
- 0x1f4f8, 0x1f4f8,
- 0x1f4fd, 0x1f4ff,
- 0x1f53e, 0x1f53f,
- 0x1f544, 0x1f54f,
- 0x1f568, 0x1f5fa,
- 0x1f641, 0x1f644,
- 0x1f650, 0x1f67f,
- 0x1f6c6, 0x1f6ff,
- 0x1f774, 0x1ffff,
- 0x2a6d7, 0x2a6ff,
- 0x2b735, 0x2b73f,
- 0x2b81e, 0x2f7ff,
- 0x2fa1e, 0xe00ff,
- 0xe01f0, 0x10ffff,
+ 0xe0001, 0xe0001,
+ 0xe0020, 0xe007f,
+ 0xf0000, 0xffffd,
+ 0x100000, 0x10ffff,
}; /* CR_C */
/* 'Cc': General Category */
-#define CR_Cc CR_Cntrl
+static const OnigCodePoint CR_Cc[] = {
+ 2,
+ 0x0000, 0x001f,
+ 0x007f, 0x009f,
+}; /* CR_Cc */
/* 'Cf': General Category */
static const OnigCodePoint CR_Cf[] = {
- 14,
+ 15,
0x00ad, 0x00ad,
- 0x0600, 0x0604,
+ 0x0600, 0x0603,
0x06dd, 0x06dd,
0x070f, 0x070f,
+ 0x17b4, 0x17b5,
0x200b, 0x200f,
0x202a, 0x202e,
0x2060, 0x2064,
@@ -5389,7 +568,7 @@ static const OnigCodePoint CR_Cf[] = {
/* 'Cn': General Category */
static const OnigCodePoint CR_Cn[] = {
- 539,
+ 501,
0x0378, 0x0379,
0x037f, 0x0383,
0x038b, 0x038b,
@@ -5399,12 +578,11 @@ static const OnigCodePoint CR_Cn[] = {
0x0557, 0x0558,
0x0560, 0x0560,
0x0588, 0x0588,
- 0x058b, 0x058e,
- 0x0590, 0x0590,
+ 0x058b, 0x0590,
0x05c8, 0x05cf,
0x05eb, 0x05ef,
0x05f5, 0x05ff,
- 0x0605, 0x0605,
+ 0x0604, 0x0605,
0x061c, 0x061d,
0x070e, 0x070e,
0x074b, 0x074c,
@@ -5413,10 +591,7 @@ static const OnigCodePoint CR_Cn[] = {
0x082e, 0x082f,
0x083f, 0x083f,
0x085c, 0x085d,
- 0x085f, 0x089f,
- 0x08a1, 0x08a1,
- 0x08ad, 0x08e3,
- 0x08ff, 0x08ff,
+ 0x085f, 0x08ff,
0x0978, 0x0978,
0x0980, 0x0980,
0x0984, 0x0984,
@@ -5461,6 +636,7 @@ static const OnigCodePoint CR_Cn[] = {
0x0ace, 0x0acf,
0x0ad1, 0x0adf,
0x0ae4, 0x0ae5,
+ 0x0af0, 0x0af0,
0x0af2, 0x0b00,
0x0b04, 0x0b04,
0x0b0d, 0x0b0e,
@@ -5561,16 +737,15 @@ static const OnigCodePoint CR_Cn[] = {
0x0ec7, 0x0ec7,
0x0ece, 0x0ecf,
0x0eda, 0x0edb,
- 0x0ee0, 0x0eff,
+ 0x0ede, 0x0eff,
0x0f48, 0x0f48,
0x0f6d, 0x0f70,
0x0f98, 0x0f98,
0x0fbd, 0x0fbd,
0x0fcd, 0x0fcd,
0x0fdb, 0x0fff,
- 0x10c6, 0x10c6,
- 0x10c8, 0x10cc,
- 0x10ce, 0x10cf,
+ 0x10c6, 0x10cf,
+ 0x10fd, 0x10ff,
0x1249, 0x1249,
0x124e, 0x124f,
0x1257, 0x1257,
@@ -5624,12 +799,13 @@ static const OnigCodePoint CR_Cn[] = {
0x1aae, 0x1aff,
0x1b4c, 0x1b4f,
0x1b7d, 0x1b7f,
+ 0x1bab, 0x1bad,
+ 0x1bba, 0x1bbf,
0x1bf4, 0x1bfb,
0x1c38, 0x1c3a,
0x1c4a, 0x1c4c,
- 0x1c80, 0x1cbf,
- 0x1cc8, 0x1ccf,
- 0x1cf7, 0x1cff,
+ 0x1c80, 0x1ccf,
+ 0x1cf3, 0x1cff,
0x1de7, 0x1dfb,
0x1f16, 0x1f17,
0x1f1e, 0x1f1f,
@@ -5658,15 +834,15 @@ static const OnigCodePoint CR_Cn[] = {
0x2427, 0x243f,
0x244b, 0x245f,
0x2700, 0x2700,
+ 0x27cb, 0x27cb,
+ 0x27cd, 0x27cd,
0x2b4d, 0x2b4f,
0x2b5a, 0x2bff,
0x2c2f, 0x2c2f,
0x2c5f, 0x2c5f,
- 0x2cf4, 0x2cf8,
- 0x2d26, 0x2d26,
- 0x2d28, 0x2d2c,
- 0x2d2e, 0x2d2f,
- 0x2d68, 0x2d6e,
+ 0x2cf2, 0x2cf8,
+ 0x2d26, 0x2d2f,
+ 0x2d66, 0x2d6e,
0x2d71, 0x2d7e,
0x2d97, 0x2d9f,
0x2da7, 0x2da7,
@@ -5677,7 +853,7 @@ static const OnigCodePoint CR_Cn[] = {
0x2dcf, 0x2dcf,
0x2dd7, 0x2dd7,
0x2ddf, 0x2ddf,
- 0x2e3c, 0x2e7f,
+ 0x2e32, 0x2e7f,
0x2e9a, 0x2e9a,
0x2ef4, 0x2eff,
0x2fd6, 0x2fef,
@@ -5692,15 +868,16 @@ static const OnigCodePoint CR_Cn[] = {
0x321f, 0x321f,
0x32ff, 0x32ff,
0x4db6, 0x4dbf,
- 0x9fcd, 0x9fff,
+ 0x9fcc, 0x9fff,
0xa48d, 0xa48f,
0xa4c7, 0xa4cf,
0xa62c, 0xa63f,
- 0xa698, 0xa69e,
+ 0xa674, 0xa67b,
+ 0xa698, 0xa69f,
0xa6f8, 0xa6ff,
0xa78f, 0xa78f,
- 0xa794, 0xa79f,
- 0xa7ab, 0xa7f7,
+ 0xa792, 0xa79f,
+ 0xa7aa, 0xa7f9,
0xa82c, 0xa82f,
0xa83a, 0xa83f,
0xa878, 0xa87f,
@@ -5717,7 +894,7 @@ static const OnigCodePoint CR_Cn[] = {
0xaa5a, 0xaa5b,
0xaa7c, 0xaa7f,
0xaac3, 0xaada,
- 0xaaf7, 0xab00,
+ 0xaae0, 0xab00,
0xab07, 0xab08,
0xab0f, 0xab10,
0xab17, 0xab1f,
@@ -5728,6 +905,7 @@ static const OnigCodePoint CR_Cn[] = {
0xd7a4, 0xd7af,
0xd7c7, 0xd7ca,
0xd7fc, 0xd7ff,
+ 0xfa2e, 0xfa2f,
0xfa6e, 0xfa6f,
0xfada, 0xfaff,
0xfb07, 0xfb12,
@@ -5789,9 +967,7 @@ static const OnigCodePoint CR_Cn[] = {
0x10860, 0x108ff,
0x1091c, 0x1091e,
0x1093a, 0x1093e,
- 0x10940, 0x1097f,
- 0x109b8, 0x109bd,
- 0x109c0, 0x109ff,
+ 0x10940, 0x109ff,
0x10a04, 0x10a04,
0x10a07, 0x10a0b,
0x10a14, 0x10a14,
@@ -5809,23 +985,12 @@ static const OnigCodePoint CR_Cn[] = {
0x10e7f, 0x10fff,
0x1104e, 0x11051,
0x11070, 0x1107f,
- 0x110c2, 0x110cf,
- 0x110e9, 0x110ef,
- 0x110fa, 0x110ff,
- 0x11135, 0x11135,
- 0x11144, 0x1117f,
- 0x111c9, 0x111cf,
- 0x111da, 0x1167f,
- 0x116b8, 0x116bf,
- 0x116ca, 0x11fff,
+ 0x110c2, 0x11fff,
0x1236f, 0x123ff,
0x12463, 0x1246f,
0x12474, 0x12fff,
0x1342f, 0x167ff,
- 0x16a39, 0x16eff,
- 0x16f45, 0x16f4f,
- 0x16f7f, 0x16f8e,
- 0x16fa0, 0x1afff,
+ 0x16a39, 0x1afff,
0x1b002, 0x1cfff,
0x1d0f6, 0x1d0ff,
0x1d127, 0x1d128,
@@ -5853,41 +1018,7 @@ static const OnigCodePoint CR_Cn[] = {
0x1d551, 0x1d551,
0x1d6a6, 0x1d6a7,
0x1d7cc, 0x1d7cd,
- 0x1d800, 0x1edff,
- 0x1ee04, 0x1ee04,
- 0x1ee20, 0x1ee20,
- 0x1ee23, 0x1ee23,
- 0x1ee25, 0x1ee26,
- 0x1ee28, 0x1ee28,
- 0x1ee33, 0x1ee33,
- 0x1ee38, 0x1ee38,
- 0x1ee3a, 0x1ee3a,
- 0x1ee3c, 0x1ee41,
- 0x1ee43, 0x1ee46,
- 0x1ee48, 0x1ee48,
- 0x1ee4a, 0x1ee4a,
- 0x1ee4c, 0x1ee4c,
- 0x1ee50, 0x1ee50,
- 0x1ee53, 0x1ee53,
- 0x1ee55, 0x1ee56,
- 0x1ee58, 0x1ee58,
- 0x1ee5a, 0x1ee5a,
- 0x1ee5c, 0x1ee5c,
- 0x1ee5e, 0x1ee5e,
- 0x1ee60, 0x1ee60,
- 0x1ee63, 0x1ee63,
- 0x1ee65, 0x1ee66,
- 0x1ee6b, 0x1ee6b,
- 0x1ee73, 0x1ee73,
- 0x1ee78, 0x1ee78,
- 0x1ee7d, 0x1ee7d,
- 0x1ee7f, 0x1ee7f,
- 0x1ee8a, 0x1ee8a,
- 0x1ee9c, 0x1eea0,
- 0x1eea4, 0x1eea4,
- 0x1eeaa, 0x1eeaa,
- 0x1eebc, 0x1eeef,
- 0x1eef2, 0x1efff,
+ 0x1d800, 0x1efff,
0x1f02c, 0x1f02f,
0x1f094, 0x1f09f,
0x1f0af, 0x1f0b0,
@@ -5896,7 +1027,7 @@ static const OnigCodePoint CR_Cn[] = {
0x1f0e0, 0x1f0ff,
0x1f10b, 0x1f10f,
0x1f12f, 0x1f12f,
- 0x1f16c, 0x1f16f,
+ 0x1f16a, 0x1f16f,
0x1f19b, 0x1f1e5,
0x1f203, 0x1f20f,
0x1f23b, 0x1f23f,
@@ -5913,9 +1044,19 @@ static const OnigCodePoint CR_Cn[] = {
0x1f441, 0x1f441,
0x1f4f8, 0x1f4f8,
0x1f4fd, 0x1f4ff,
- 0x1f53e, 0x1f53f,
- 0x1f544, 0x1f54f,
+ 0x1f53e, 0x1f54f,
0x1f568, 0x1f5fa,
+ 0x1f600, 0x1f600,
+ 0x1f611, 0x1f611,
+ 0x1f615, 0x1f615,
+ 0x1f617, 0x1f617,
+ 0x1f619, 0x1f619,
+ 0x1f61b, 0x1f61b,
+ 0x1f61f, 0x1f61f,
+ 0x1f626, 0x1f627,
+ 0x1f62c, 0x1f62c,
+ 0x1f62e, 0x1f62f,
+ 0x1f634, 0x1f634,
0x1f641, 0x1f644,
0x1f650, 0x1f67f,
0x1f6c6, 0x1f6ff,
@@ -5947,7 +1088,7 @@ static const OnigCodePoint CR_Cs[] = {
/* 'L': Major Category */
static const OnigCodePoint CR_L[] = {
- 486,
+ 435,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -5995,8 +1136,6 @@ static const OnigCodePoint CR_L[] = {
0x0824, 0x0824,
0x0828, 0x0828,
0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -6102,7 +1241,7 @@ static const OnigCodePoint CR_L[] = {
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f40, 0x0f47,
0x0f49, 0x0f6c,
@@ -6117,10 +1256,9 @@ static const OnigCodePoint CR_L[] = {
0x1075, 0x1081,
0x108e, 0x108e,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -6167,13 +1305,12 @@ static const OnigCodePoint CR_L[] = {
0x1b45, 0x1b4b,
0x1b83, 0x1ba0,
0x1bae, 0x1baf,
- 0x1bba, 0x1be5,
+ 0x1bc0, 0x1be5,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
- 0x1cf5, 0x1cf6,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -6215,11 +1352,8 @@ static const OnigCodePoint CR_L[] = {
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
@@ -6243,7 +1377,7 @@ static const OnigCodePoint CR_L[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -6255,9 +1389,9 @@ static const OnigCodePoint CR_L[] = {
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa822,
@@ -6282,8 +1416,6 @@ static const OnigCodePoint CR_L[] = {
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaea,
- 0xaaf2, 0xaaf4,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -6293,7 +1425,8 @@ static const OnigCodePoint CR_L[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -6342,8 +1475,6 @@ static const OnigCodePoint CR_L[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -6355,17 +1486,9 @@ static const OnigCodePoint CR_L[] = {
0x10c00, 0x10c48,
0x11003, 0x11037,
0x11083, 0x110af,
- 0x110d0, 0x110e8,
- 0x11103, 0x11126,
- 0x11183, 0x111b2,
- 0x111c1, 0x111c4,
- 0x11680, 0x116aa,
0x12000, 0x1236e,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f50,
- 0x16f93, 0x16f9f,
0x1b000, 0x1b001,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
@@ -6397,168 +1520,19 @@ static const OnigCodePoint CR_L[] = {
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2f800, 0x2fa1d,
}; /* CR_L */
-/* 'LC': General Category */
-static const OnigCodePoint CR_LC[] = {
- 113,
- 0x0041, 0x005a,
- 0x0061, 0x007a,
- 0x00b5, 0x00b5,
- 0x00c0, 0x00d6,
- 0x00d8, 0x00f6,
- 0x00f8, 0x01ba,
- 0x01bc, 0x01bf,
- 0x01c4, 0x0293,
- 0x0295, 0x02af,
- 0x0370, 0x0373,
- 0x0376, 0x0377,
- 0x037b, 0x037d,
- 0x0386, 0x0386,
- 0x0388, 0x038a,
- 0x038c, 0x038c,
- 0x038e, 0x03a1,
- 0x03a3, 0x03f5,
- 0x03f7, 0x0481,
- 0x048a, 0x0527,
- 0x0531, 0x0556,
- 0x0561, 0x0587,
- 0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x1d00, 0x1d2b,
- 0x1d6b, 0x1d77,
- 0x1d79, 0x1d9a,
- 0x1e00, 0x1f15,
- 0x1f18, 0x1f1d,
- 0x1f20, 0x1f45,
- 0x1f48, 0x1f4d,
- 0x1f50, 0x1f57,
- 0x1f59, 0x1f59,
- 0x1f5b, 0x1f5b,
- 0x1f5d, 0x1f5d,
- 0x1f5f, 0x1f7d,
- 0x1f80, 0x1fb4,
- 0x1fb6, 0x1fbc,
- 0x1fbe, 0x1fbe,
- 0x1fc2, 0x1fc4,
- 0x1fc6, 0x1fcc,
- 0x1fd0, 0x1fd3,
- 0x1fd6, 0x1fdb,
- 0x1fe0, 0x1fec,
- 0x1ff2, 0x1ff4,
- 0x1ff6, 0x1ffc,
- 0x2102, 0x2102,
- 0x2107, 0x2107,
- 0x210a, 0x2113,
- 0x2115, 0x2115,
- 0x2119, 0x211d,
- 0x2124, 0x2124,
- 0x2126, 0x2126,
- 0x2128, 0x2128,
- 0x212a, 0x212d,
- 0x212f, 0x2134,
- 0x2139, 0x2139,
- 0x213c, 0x213f,
- 0x2145, 0x2149,
- 0x214e, 0x214e,
- 0x2183, 0x2184,
- 0x2c00, 0x2c2e,
- 0x2c30, 0x2c5e,
- 0x2c60, 0x2c7b,
- 0x2c7e, 0x2ce4,
- 0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
- 0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0xa640, 0xa66d,
- 0xa680, 0xa697,
- 0xa722, 0xa76f,
- 0xa771, 0xa787,
- 0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7fa, 0xa7fa,
- 0xfb00, 0xfb06,
- 0xfb13, 0xfb17,
- 0xff21, 0xff3a,
- 0xff41, 0xff5a,
- 0x10400, 0x1044f,
- 0x1d400, 0x1d454,
- 0x1d456, 0x1d49c,
- 0x1d49e, 0x1d49f,
- 0x1d4a2, 0x1d4a2,
- 0x1d4a5, 0x1d4a6,
- 0x1d4a9, 0x1d4ac,
- 0x1d4ae, 0x1d4b9,
- 0x1d4bb, 0x1d4bb,
- 0x1d4bd, 0x1d4c3,
- 0x1d4c5, 0x1d505,
- 0x1d507, 0x1d50a,
- 0x1d50d, 0x1d514,
- 0x1d516, 0x1d51c,
- 0x1d51e, 0x1d539,
- 0x1d53b, 0x1d53e,
- 0x1d540, 0x1d544,
- 0x1d546, 0x1d546,
- 0x1d54a, 0x1d550,
- 0x1d552, 0x1d6a5,
- 0x1d6a8, 0x1d6c0,
- 0x1d6c2, 0x1d6da,
- 0x1d6dc, 0x1d6fa,
- 0x1d6fc, 0x1d714,
- 0x1d716, 0x1d734,
- 0x1d736, 0x1d74e,
- 0x1d750, 0x1d76e,
- 0x1d770, 0x1d788,
- 0x1d78a, 0x1d7a8,
- 0x1d7aa, 0x1d7c2,
- 0x1d7c4, 0x1d7cb,
-}; /* CR_LC */
-
/* 'Ll': General Category */
static const OnigCodePoint CR_Ll[] = {
- 611,
+ 609,
0x0061, 0x007a,
+ 0x00aa, 0x00aa,
0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
0x00df, 0x00f6,
0x00f8, 0x00ff,
0x0101, 0x0101,
@@ -6824,7 +1798,7 @@ static const OnigCodePoint CR_Ll[] = {
0x0527, 0x0527,
0x0561, 0x0587,
0x1d00, 0x1d2b,
- 0x1d6b, 0x1d77,
+ 0x1d62, 0x1d77,
0x1d79, 0x1d9a,
0x1e01, 0x1e01,
0x1e03, 0x1e03,
@@ -6988,7 +1962,7 @@ static const OnigCodePoint CR_Ll[] = {
0x2c6c, 0x2c6c,
0x2c71, 0x2c71,
0x2c73, 0x2c74,
- 0x2c76, 0x2c7b,
+ 0x2c76, 0x2c7c,
0x2c81, 0x2c81,
0x2c83, 0x2c83,
0x2c85, 0x2c85,
@@ -7041,10 +2015,7 @@ static const OnigCodePoint CR_Ll[] = {
0x2ce3, 0x2ce4,
0x2cec, 0x2cec,
0x2cee, 0x2cee,
- 0x2cf3, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa641, 0xa641,
0xa643, 0xa643,
0xa645, 0xa645,
@@ -7129,7 +2100,6 @@ static const OnigCodePoint CR_Ll[] = {
0xa78c, 0xa78c,
0xa78e, 0xa78e,
0xa791, 0xa791,
- 0xa793, 0xa793,
0xa7a1, 0xa7a1,
0xa7a3, 0xa7a3,
0xa7a5, 0xa7a5,
@@ -7172,7 +2142,7 @@ static const OnigCodePoint CR_Ll[] = {
/* 'Lm': General Category */
static const OnigCodePoint CR_Lm[] = {
- 52,
+ 49,
0x02b0, 0x02c1,
0x02c6, 0x02d1,
0x02e0, 0x02e4,
@@ -7196,13 +2166,13 @@ static const OnigCodePoint CR_Lm[] = {
0x1843, 0x1843,
0x1aa7, 0x1aa7,
0x1c78, 0x1c7d,
- 0x1d2c, 0x1d6a,
+ 0x1d2c, 0x1d61,
0x1d78, 0x1d78,
0x1d9b, 0x1dbf,
0x2071, 0x2071,
0x207f, 0x207f,
0x2090, 0x209c,
- 0x2c7c, 0x2c7d,
+ 0x2c7d, 0x2c7d,
0x2d6f, 0x2d6f,
0x2e2f, 0x2e2f,
0x3005, 0x3005,
@@ -7217,21 +2187,16 @@ static const OnigCodePoint CR_Lm[] = {
0xa717, 0xa71f,
0xa770, 0xa770,
0xa788, 0xa788,
- 0xa7f8, 0xa7f9,
0xa9cf, 0xa9cf,
0xaa70, 0xaa70,
0xaadd, 0xaadd,
- 0xaaf3, 0xaaf4,
0xff70, 0xff70,
0xff9e, 0xff9f,
- 0x16f93, 0x16f9f,
}; /* CR_Lm */
/* 'Lo': General Category */
static const OnigCodePoint CR_Lo[] = {
- 371,
- 0x00aa, 0x00aa,
- 0x00ba, 0x00ba,
+ 323,
0x01bb, 0x01bb,
0x01c0, 0x01c3,
0x0294, 0x0294,
@@ -7252,8 +2217,6 @@ static const OnigCodePoint CR_Lo[] = {
0x07ca, 0x07ea,
0x0800, 0x0815,
0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -7358,7 +2321,7 @@ static const OnigCodePoint CR_Lo[] = {
0x0eb2, 0x0eb3,
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f40, 0x0f47,
0x0f49, 0x0f6c,
@@ -7373,7 +2336,7 @@ static const OnigCodePoint CR_Lo[] = {
0x1075, 0x1081,
0x108e, 0x108e,
0x10d0, 0x10fa,
- 0x10fd, 0x1248,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -7419,15 +2382,14 @@ static const OnigCodePoint CR_Lo[] = {
0x1b45, 0x1b4b,
0x1b83, 0x1ba0,
0x1bae, 0x1baf,
- 0x1bba, 0x1be5,
+ 0x1bc0, 0x1be5,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c77,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
- 0x1cf5, 0x1cf6,
0x2135, 0x2138,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
0x2da8, 0x2dae,
@@ -7448,7 +2410,7 @@ static const OnigCodePoint CR_Lo[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa014,
0xa016, 0xa48c,
0xa4d0, 0xa4f7,
@@ -7482,8 +2444,6 @@ static const OnigCodePoint CR_Lo[] = {
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadc,
- 0xaae0, 0xaaea,
- 0xaaf2, 0xaaf2,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -7493,7 +2453,8 @@ static const OnigCodePoint CR_Lo[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb1d, 0xfb1d,
0xfb1f, 0xfb28,
@@ -7540,8 +2501,6 @@ static const OnigCodePoint CR_Lo[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -7553,50 +2512,10 @@ static const OnigCodePoint CR_Lo[] = {
0x10c00, 0x10c48,
0x11003, 0x11037,
0x11083, 0x110af,
- 0x110d0, 0x110e8,
- 0x11103, 0x11126,
- 0x11183, 0x111b2,
- 0x111c1, 0x111c4,
- 0x11680, 0x116aa,
0x12000, 0x1236e,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f50,
0x1b000, 0x1b001,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -7620,7 +2539,7 @@ static const OnigCodePoint CR_Lt[] = {
/* 'Lu': General Category */
static const OnigCodePoint CR_Lu[] = {
- 608,
+ 603,
0x0041, 0x005a,
0x00c0, 0x00d6,
0x00d8, 0x00de,
@@ -7889,8 +2808,6 @@ static const OnigCodePoint CR_Lu[] = {
0x0526, 0x0526,
0x0531, 0x0556,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1e00, 0x1e00,
0x1e02, 0x1e02,
0x1e04, 0x1e04,
@@ -8105,7 +3022,6 @@ static const OnigCodePoint CR_Lu[] = {
0x2ce2, 0x2ce2,
0x2ceb, 0x2ceb,
0x2ced, 0x2ced,
- 0x2cf2, 0x2cf2,
0xa640, 0xa640,
0xa642, 0xa642,
0xa644, 0xa644,
@@ -8189,13 +3105,11 @@ static const OnigCodePoint CR_Lu[] = {
0xa78b, 0xa78b,
0xa78d, 0xa78d,
0xa790, 0xa790,
- 0xa792, 0xa792,
0xa7a0, 0xa7a0,
0xa7a2, 0xa7a2,
0xa7a4, 0xa7a4,
0xa7a6, 0xa7a6,
0xa7a8, 0xa7a8,
- 0xa7aa, 0xa7aa,
0xff21, 0xff3a,
0x10400, 0x10427,
0x1d400, 0x1d419,
@@ -8233,7 +3147,7 @@ static const OnigCodePoint CR_Lu[] = {
/* 'M': Major Category */
static const OnigCodePoint CR_M[] = {
- 204,
+ 193,
0x0300, 0x036f,
0x0483, 0x0489,
0x0591, 0x05bd,
@@ -8257,7 +3171,6 @@ static const OnigCodePoint CR_M[] = {
0x0825, 0x0827,
0x0829, 0x082d,
0x0859, 0x085b,
- 0x08e4, 0x08fe,
0x0900, 0x0903,
0x093a, 0x093c,
0x093e, 0x094f,
@@ -8352,7 +3265,7 @@ static const OnigCodePoint CR_M[] = {
0x1732, 0x1734,
0x1752, 0x1753,
0x1772, 0x1773,
- 0x17b4, 0x17d3,
+ 0x17b6, 0x17d3,
0x17dd, 0x17dd,
0x180b, 0x180d,
0x18a9, 0x18a9,
@@ -8368,13 +3281,13 @@ static const OnigCodePoint CR_M[] = {
0x1b34, 0x1b44,
0x1b6b, 0x1b73,
0x1b80, 0x1b82,
- 0x1ba1, 0x1bad,
+ 0x1ba1, 0x1baa,
0x1be6, 0x1bf3,
0x1c24, 0x1c37,
0x1cd0, 0x1cd2,
0x1cd4, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf2, 0x1cf4,
+ 0x1cf2, 0x1cf2,
0x1dc0, 0x1de6,
0x1dfc, 0x1dff,
0x20d0, 0x20f0,
@@ -8384,8 +3297,7 @@ static const OnigCodePoint CR_M[] = {
0x302a, 0x302f,
0x3099, 0x309a,
0xa66f, 0xa672,
- 0xa674, 0xa67d,
- 0xa69f, 0xa69f,
+ 0xa67c, 0xa67d,
0xa6f0, 0xa6f1,
0xa802, 0xa802,
0xa806, 0xa806,
@@ -8407,8 +3319,6 @@ static const OnigCodePoint CR_M[] = {
0xaab7, 0xaab8,
0xaabe, 0xaabf,
0xaac1, 0xaac1,
- 0xaaeb, 0xaaef,
- 0xaaf5, 0xaaf6,
0xabe3, 0xabea,
0xabec, 0xabed,
0xfb1e, 0xfb1e,
@@ -8424,13 +3334,6 @@ static const OnigCodePoint CR_M[] = {
0x11038, 0x11046,
0x11080, 0x11082,
0x110b0, 0x110ba,
- 0x11100, 0x11102,
- 0x11127, 0x11134,
- 0x11180, 0x11182,
- 0x111b3, 0x111c0,
- 0x116ab, 0x116b7,
- 0x16f51, 0x16f7e,
- 0x16f8f, 0x16f92,
0x1d165, 0x1d169,
0x1d16d, 0x1d172,
0x1d17b, 0x1d182,
@@ -8442,7 +3345,7 @@ static const OnigCodePoint CR_M[] = {
/* 'Mc': General Category */
static const OnigCodePoint CR_Mc[] = {
- 126,
+ 113,
0x0903, 0x0903,
0x093b, 0x093b,
0x093e, 0x0940,
@@ -8524,7 +3427,6 @@ static const OnigCodePoint CR_Mc[] = {
0x1ba1, 0x1ba1,
0x1ba6, 0x1ba7,
0x1baa, 0x1baa,
- 0x1bac, 0x1bad,
0x1be7, 0x1be7,
0x1bea, 0x1bec,
0x1bee, 0x1bee,
@@ -8532,8 +3434,7 @@ static const OnigCodePoint CR_Mc[] = {
0x1c24, 0x1c2b,
0x1c34, 0x1c35,
0x1ce1, 0x1ce1,
- 0x1cf2, 0x1cf3,
- 0x302e, 0x302f,
+ 0x1cf2, 0x1cf2,
0xa823, 0xa824,
0xa827, 0xa827,
0xa880, 0xa881,
@@ -8547,9 +3448,6 @@ static const OnigCodePoint CR_Mc[] = {
0xaa33, 0xaa34,
0xaa4d, 0xaa4d,
0xaa7b, 0xaa7b,
- 0xaaeb, 0xaaeb,
- 0xaaee, 0xaaef,
- 0xaaf5, 0xaaf5,
0xabe3, 0xabe4,
0xabe6, 0xabe7,
0xabe9, 0xabea,
@@ -8559,14 +3457,6 @@ static const OnigCodePoint CR_Mc[] = {
0x11082, 0x11082,
0x110b0, 0x110b2,
0x110b7, 0x110b8,
- 0x1112c, 0x1112c,
- 0x11182, 0x11182,
- 0x111b3, 0x111b5,
- 0x111bf, 0x111c0,
- 0x116ac, 0x116ac,
- 0x116ae, 0x116af,
- 0x116b6, 0x116b6,
- 0x16f51, 0x16f7e,
0x1d165, 0x1d166,
0x1d16d, 0x1d172,
}; /* CR_Mc */
@@ -8582,7 +3472,7 @@ static const OnigCodePoint CR_Me[] = {
/* 'Mn': General Category */
static const OnigCodePoint CR_Mn[] = {
- 220,
+ 203,
0x0300, 0x036f,
0x0483, 0x0487,
0x0591, 0x05bd,
@@ -8606,7 +3496,6 @@ static const OnigCodePoint CR_Mn[] = {
0x0825, 0x0827,
0x0829, 0x082d,
0x0859, 0x085b,
- 0x08e4, 0x08fe,
0x0900, 0x0902,
0x093a, 0x093a,
0x093c, 0x093c,
@@ -8692,7 +3581,6 @@ static const OnigCodePoint CR_Mn[] = {
0x1732, 0x1734,
0x1752, 0x1753,
0x1772, 0x1773,
- 0x17b4, 0x17b5,
0x17b7, 0x17bd,
0x17c6, 0x17c6,
0x17c9, 0x17d3,
@@ -8720,7 +3608,6 @@ static const OnigCodePoint CR_Mn[] = {
0x1b80, 0x1b81,
0x1ba2, 0x1ba5,
0x1ba8, 0x1ba9,
- 0x1bab, 0x1bab,
0x1be6, 0x1be6,
0x1be8, 0x1be9,
0x1bed, 0x1bed,
@@ -8731,7 +3618,6 @@ static const OnigCodePoint CR_Mn[] = {
0x1cd4, 0x1ce0,
0x1ce2, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
0x1dc0, 0x1de6,
0x1dfc, 0x1dff,
0x20d0, 0x20dc,
@@ -8740,11 +3626,10 @@ static const OnigCodePoint CR_Mn[] = {
0x2cef, 0x2cf1,
0x2d7f, 0x2d7f,
0x2de0, 0x2dff,
- 0x302a, 0x302d,
+ 0x302a, 0x302f,
0x3099, 0x309a,
0xa66f, 0xa66f,
- 0xa674, 0xa67d,
- 0xa69f, 0xa69f,
+ 0xa67c, 0xa67d,
0xa6f0, 0xa6f1,
0xa802, 0xa802,
0xa806, 0xa806,
@@ -8768,8 +3653,6 @@ static const OnigCodePoint CR_Mn[] = {
0xaab7, 0xaab8,
0xaabe, 0xaabf,
0xaac1, 0xaac1,
- 0xaaec, 0xaaed,
- 0xaaf6, 0xaaf6,
0xabe5, 0xabe5,
0xabe8, 0xabe8,
0xabed, 0xabed,
@@ -8787,16 +3670,6 @@ static const OnigCodePoint CR_Mn[] = {
0x11080, 0x11081,
0x110b3, 0x110b6,
0x110b9, 0x110ba,
- 0x11100, 0x11102,
- 0x11127, 0x1112b,
- 0x1112d, 0x11134,
- 0x11180, 0x11181,
- 0x111b6, 0x111be,
- 0x116ab, 0x116ab,
- 0x116ad, 0x116ad,
- 0x116b0, 0x116b5,
- 0x116b7, 0x116b7,
- 0x16f8f, 0x16f92,
0x1d167, 0x1d169,
0x1d17b, 0x1d182,
0x1d185, 0x1d18b,
@@ -8807,7 +3680,7 @@ static const OnigCodePoint CR_Mn[] = {
/* 'N': Major Category */
static const OnigCodePoint CR_N[] = {
- 88,
+ 83,
0x0030, 0x0039,
0x00b2, 0x00b3,
0x00b9, 0x00b9,
@@ -8859,7 +3732,6 @@ static const OnigCodePoint CR_N[] = {
0x3038, 0x303a,
0x3192, 0x3195,
0x3220, 0x3229,
- 0x3248, 0x324f,
0x3251, 0x325f,
0x3280, 0x3289,
0x32b1, 0x32bf,
@@ -8888,10 +3760,6 @@ static const OnigCodePoint CR_N[] = {
0x10b78, 0x10b7f,
0x10e60, 0x10e7e,
0x11052, 0x1106f,
- 0x110f0, 0x110f9,
- 0x11136, 0x1113f,
- 0x111d0, 0x111d9,
- 0x116c0, 0x116c9,
0x12400, 0x12462,
0x1d360, 0x1d371,
0x1d7ce, 0x1d7ff,
@@ -8899,7 +3767,47 @@ static const OnigCodePoint CR_N[] = {
}; /* CR_N */
/* 'Nd': General Category */
-#define CR_Nd CR_Digit
+static const OnigCodePoint CR_Nd[] = {
+ 38,
+ 0x0030, 0x0039,
+ 0x0660, 0x0669,
+ 0x06f0, 0x06f9,
+ 0x07c0, 0x07c9,
+ 0x0966, 0x096f,
+ 0x09e6, 0x09ef,
+ 0x0a66, 0x0a6f,
+ 0x0ae6, 0x0aef,
+ 0x0b66, 0x0b6f,
+ 0x0be6, 0x0bef,
+ 0x0c66, 0x0c6f,
+ 0x0ce6, 0x0cef,
+ 0x0d66, 0x0d6f,
+ 0x0e50, 0x0e59,
+ 0x0ed0, 0x0ed9,
+ 0x0f20, 0x0f29,
+ 0x1040, 0x1049,
+ 0x1090, 0x1099,
+ 0x17e0, 0x17e9,
+ 0x1810, 0x1819,
+ 0x1946, 0x194f,
+ 0x19d0, 0x19d9,
+ 0x1a80, 0x1a89,
+ 0x1a90, 0x1a99,
+ 0x1b50, 0x1b59,
+ 0x1bb0, 0x1bb9,
+ 0x1c40, 0x1c49,
+ 0x1c50, 0x1c59,
+ 0xa620, 0xa629,
+ 0xa8d0, 0xa8d9,
+ 0xa900, 0xa909,
+ 0xa9d0, 0xa9d9,
+ 0xaa50, 0xaa59,
+ 0xabf0, 0xabf9,
+ 0xff10, 0xff19,
+ 0x104a0, 0x104a9,
+ 0x11066, 0x1106f,
+ 0x1d7ce, 0x1d7ff,
+}; /* CR_Nd */
/* 'Nl': General Category */
static const OnigCodePoint CR_Nl[] = {
@@ -8920,7 +3828,7 @@ static const OnigCodePoint CR_Nl[] = {
/* 'No': General Category */
static const OnigCodePoint CR_No[] = {
- 42,
+ 41,
0x00b2, 0x00b3,
0x00b9, 0x00b9,
0x00bc, 0x00be,
@@ -8944,7 +3852,6 @@ static const OnigCodePoint CR_No[] = {
0x2cfd, 0x2cfd,
0x3192, 0x3195,
0x3220, 0x3229,
- 0x3248, 0x324f,
0x3251, 0x325f,
0x3280, 0x3289,
0x32b1, 0x32bf,
@@ -8966,7 +3873,142 @@ static const OnigCodePoint CR_No[] = {
}; /* CR_No */
/* 'P': Major Category */
-#define CR_P CR_Punct
+static const OnigCodePoint CR_P[] = {
+ 133,
+ 0x0021, 0x0023,
+ 0x0025, 0x002a,
+ 0x002c, 0x002f,
+ 0x003a, 0x003b,
+ 0x003f, 0x0040,
+ 0x005b, 0x005d,
+ 0x005f, 0x005f,
+ 0x007b, 0x007b,
+ 0x007d, 0x007d,
+ 0x00a1, 0x00a1,
+ 0x00ab, 0x00ab,
+ 0x00b7, 0x00b7,
+ 0x00bb, 0x00bb,
+ 0x00bf, 0x00bf,
+ 0x037e, 0x037e,
+ 0x0387, 0x0387,
+ 0x055a, 0x055f,
+ 0x0589, 0x058a,
+ 0x05be, 0x05be,
+ 0x05c0, 0x05c0,
+ 0x05c3, 0x05c3,
+ 0x05c6, 0x05c6,
+ 0x05f3, 0x05f4,
+ 0x0609, 0x060a,
+ 0x060c, 0x060d,
+ 0x061b, 0x061b,
+ 0x061e, 0x061f,
+ 0x066a, 0x066d,
+ 0x06d4, 0x06d4,
+ 0x0700, 0x070d,
+ 0x07f7, 0x07f9,
+ 0x0830, 0x083e,
+ 0x085e, 0x085e,
+ 0x0964, 0x0965,
+ 0x0970, 0x0970,
+ 0x0df4, 0x0df4,
+ 0x0e4f, 0x0e4f,
+ 0x0e5a, 0x0e5b,
+ 0x0f04, 0x0f12,
+ 0x0f3a, 0x0f3d,
+ 0x0f85, 0x0f85,
+ 0x0fd0, 0x0fd4,
+ 0x0fd9, 0x0fda,
+ 0x104a, 0x104f,
+ 0x10fb, 0x10fb,
+ 0x1361, 0x1368,
+ 0x1400, 0x1400,
+ 0x166d, 0x166e,
+ 0x169b, 0x169c,
+ 0x16eb, 0x16ed,
+ 0x1735, 0x1736,
+ 0x17d4, 0x17d6,
+ 0x17d8, 0x17da,
+ 0x1800, 0x180a,
+ 0x1944, 0x1945,
+ 0x1a1e, 0x1a1f,
+ 0x1aa0, 0x1aa6,
+ 0x1aa8, 0x1aad,
+ 0x1b5a, 0x1b60,
+ 0x1bfc, 0x1bff,
+ 0x1c3b, 0x1c3f,
+ 0x1c7e, 0x1c7f,
+ 0x1cd3, 0x1cd3,
+ 0x2010, 0x2027,
+ 0x2030, 0x2043,
+ 0x2045, 0x2051,
+ 0x2053, 0x205e,
+ 0x207d, 0x207e,
+ 0x208d, 0x208e,
+ 0x2329, 0x232a,
+ 0x2768, 0x2775,
+ 0x27c5, 0x27c6,
+ 0x27e6, 0x27ef,
+ 0x2983, 0x2998,
+ 0x29d8, 0x29db,
+ 0x29fc, 0x29fd,
+ 0x2cf9, 0x2cfc,
+ 0x2cfe, 0x2cff,
+ 0x2d70, 0x2d70,
+ 0x2e00, 0x2e2e,
+ 0x2e30, 0x2e31,
+ 0x3001, 0x3003,
+ 0x3008, 0x3011,
+ 0x3014, 0x301f,
+ 0x3030, 0x3030,
+ 0x303d, 0x303d,
+ 0x30a0, 0x30a0,
+ 0x30fb, 0x30fb,
+ 0xa4fe, 0xa4ff,
+ 0xa60d, 0xa60f,
+ 0xa673, 0xa673,
+ 0xa67e, 0xa67e,
+ 0xa6f2, 0xa6f7,
+ 0xa874, 0xa877,
+ 0xa8ce, 0xa8cf,
+ 0xa8f8, 0xa8fa,
+ 0xa92e, 0xa92f,
+ 0xa95f, 0xa95f,
+ 0xa9c1, 0xa9cd,
+ 0xa9de, 0xa9df,
+ 0xaa5c, 0xaa5f,
+ 0xaade, 0xaadf,
+ 0xabeb, 0xabeb,
+ 0xfd3e, 0xfd3f,
+ 0xfe10, 0xfe19,
+ 0xfe30, 0xfe52,
+ 0xfe54, 0xfe61,
+ 0xfe63, 0xfe63,
+ 0xfe68, 0xfe68,
+ 0xfe6a, 0xfe6b,
+ 0xff01, 0xff03,
+ 0xff05, 0xff0a,
+ 0xff0c, 0xff0f,
+ 0xff1a, 0xff1b,
+ 0xff1f, 0xff20,
+ 0xff3b, 0xff3d,
+ 0xff3f, 0xff3f,
+ 0xff5b, 0xff5b,
+ 0xff5d, 0xff5d,
+ 0xff5f, 0xff65,
+ 0x10100, 0x10101,
+ 0x1039f, 0x1039f,
+ 0x103d0, 0x103d0,
+ 0x10857, 0x10857,
+ 0x1091f, 0x1091f,
+ 0x1093f, 0x1093f,
+ 0x10a50, 0x10a58,
+ 0x10a7f, 0x10a7f,
+ 0x10b39, 0x10b3f,
+ 0x11047, 0x1104d,
+ 0x110bb, 0x110bc,
+ 0x110be, 0x110c1,
+ 0x12470, 0x12473,
+}; /* CR_P */
/* 'Pc': General Category */
static const OnigCodePoint CR_Pc[] = {
@@ -8981,7 +4023,7 @@ static const OnigCodePoint CR_Pc[] = {
/* 'Pd': General Category */
static const OnigCodePoint CR_Pd[] = {
- 16,
+ 15,
0x002d, 0x002d,
0x058a, 0x058a,
0x05be, 0x05be,
@@ -8990,7 +4032,6 @@ static const OnigCodePoint CR_Pd[] = {
0x2010, 0x2015,
0x2e17, 0x2e17,
0x2e1a, 0x2e1a,
- 0x2e3a, 0x2e3b,
0x301c, 0x301c,
0x3030, 0x3030,
0x30a0, 0x30a0,
@@ -9108,7 +4149,7 @@ static const OnigCodePoint CR_Pi[] = {
/* 'Po': General Category */
static const OnigCodePoint CR_Po[] = {
- 135,
+ 128,
0x0021, 0x0023,
0x0025, 0x0027,
0x002a, 0x002a,
@@ -9118,8 +4159,7 @@ static const OnigCodePoint CR_Po[] = {
0x003f, 0x0040,
0x005c, 0x005c,
0x00a1, 0x00a1,
- 0x00a7, 0x00a7,
- 0x00b6, 0x00b7,
+ 0x00b7, 0x00b7,
0x00bf, 0x00bf,
0x037e, 0x037e,
0x0387, 0x0387,
@@ -9141,18 +4181,16 @@ static const OnigCodePoint CR_Po[] = {
0x085e, 0x085e,
0x0964, 0x0965,
0x0970, 0x0970,
- 0x0af0, 0x0af0,
0x0df4, 0x0df4,
0x0e4f, 0x0e4f,
0x0e5a, 0x0e5b,
0x0f04, 0x0f12,
- 0x0f14, 0x0f14,
0x0f85, 0x0f85,
0x0fd0, 0x0fd4,
0x0fd9, 0x0fda,
0x104a, 0x104f,
0x10fb, 0x10fb,
- 0x1360, 0x1368,
+ 0x1361, 0x1368,
0x166d, 0x166e,
0x16eb, 0x16ed,
0x1735, 0x1736,
@@ -9168,7 +4206,6 @@ static const OnigCodePoint CR_Po[] = {
0x1bfc, 0x1bff,
0x1c3b, 0x1c3f,
0x1c7e, 0x1c7f,
- 0x1cc0, 0x1cc7,
0x1cd3, 0x1cd3,
0x2016, 0x2017,
0x2020, 0x2027,
@@ -9189,7 +4226,7 @@ static const OnigCodePoint CR_Po[] = {
0x2e1b, 0x2e1b,
0x2e1e, 0x2e1f,
0x2e2a, 0x2e2e,
- 0x2e30, 0x2e39,
+ 0x2e30, 0x2e31,
0x3001, 0x3003,
0x303d, 0x303d,
0x30fb, 0x30fb,
@@ -9207,7 +4244,6 @@ static const OnigCodePoint CR_Po[] = {
0xa9de, 0xa9df,
0xaa5c, 0xaa5f,
0xaade, 0xaadf,
- 0xaaf0, 0xaaf1,
0xabeb, 0xabeb,
0xfe10, 0xfe16,
0xfe19, 0xfe19,
@@ -9229,7 +4265,7 @@ static const OnigCodePoint CR_Po[] = {
0xff3c, 0xff3c,
0xff61, 0xff61,
0xff64, 0xff65,
- 0x10100, 0x10102,
+ 0x10100, 0x10101,
0x1039f, 0x1039f,
0x103d0, 0x103d0,
0x10857, 0x10857,
@@ -9241,8 +4277,6 @@ static const OnigCodePoint CR_Po[] = {
0x11047, 0x1104d,
0x110bb, 0x110bc,
0x110be, 0x110c1,
- 0x11140, 0x11143,
- 0x111c5, 0x111c8,
0x12470, 0x12473,
}; /* CR_Po */
@@ -9325,7 +4359,7 @@ static const OnigCodePoint CR_Ps[] = {
/* 'S': Major Category */
static const OnigCodePoint CR_S[] = {
- 198,
+ 208,
0x0024, 0x0024,
0x002b, 0x002b,
0x003c, 0x003e,
@@ -9333,11 +4367,11 @@ static const OnigCodePoint CR_S[] = {
0x0060, 0x0060,
0x007c, 0x007c,
0x007e, 0x007e,
- 0x00a2, 0x00a6,
- 0x00a8, 0x00a9,
+ 0x00a2, 0x00a9,
0x00ac, 0x00ac,
0x00ae, 0x00b1,
0x00b4, 0x00b4,
+ 0x00b6, 0x00b6,
0x00b8, 0x00b8,
0x00d7, 0x00d7,
0x00f7, 0x00f7,
@@ -9350,7 +4384,6 @@ static const OnigCodePoint CR_S[] = {
0x0384, 0x0385,
0x03f6, 0x03f6,
0x0482, 0x0482,
- 0x058f, 0x058f,
0x0606, 0x0608,
0x060b, 0x060b,
0x060e, 0x060f,
@@ -9367,8 +4400,7 @@ static const OnigCodePoint CR_S[] = {
0x0d79, 0x0d79,
0x0e3f, 0x0e3f,
0x0f01, 0x0f03,
- 0x0f13, 0x0f13,
- 0x0f15, 0x0f17,
+ 0x0f13, 0x0f17,
0x0f1a, 0x0f1f,
0x0f34, 0x0f34,
0x0f36, 0x0f36,
@@ -9378,6 +4410,7 @@ static const OnigCodePoint CR_S[] = {
0x0fce, 0x0fcf,
0x0fd5, 0x0fd8,
0x109e, 0x109f,
+ 0x1360, 0x1360,
0x1390, 0x1399,
0x17db, 0x17db,
0x1940, 0x1940,
@@ -9417,7 +4450,9 @@ static const OnigCodePoint CR_S[] = {
0x2500, 0x26ff,
0x2701, 0x2767,
0x2794, 0x27c4,
- 0x27c7, 0x27e5,
+ 0x27c7, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x27e5,
0x27f0, 0x2982,
0x2999, 0x29d7,
0x29dc, 0x29fb,
@@ -9438,8 +4473,7 @@ static const OnigCodePoint CR_S[] = {
0x3196, 0x319f,
0x31c0, 0x31e3,
0x3200, 0x321e,
- 0x322a, 0x3247,
- 0x3250, 0x3250,
+ 0x322a, 0x3250,
0x3260, 0x327f,
0x328a, 0x32b0,
0x32c0, 0x32fe,
@@ -9468,6 +4502,7 @@ static const OnigCodePoint CR_S[] = {
0xffe0, 0xffe6,
0xffe8, 0xffee,
0xfffc, 0xfffd,
+ 0x10102, 0x10102,
0x10137, 0x1013f,
0x10179, 0x10189,
0x10190, 0x1019b,
@@ -9492,7 +4527,6 @@ static const OnigCodePoint CR_S[] = {
0x1d789, 0x1d789,
0x1d7a9, 0x1d7a9,
0x1d7c3, 0x1d7c3,
- 0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
@@ -9500,7 +4534,7 @@ static const OnigCodePoint CR_S[] = {
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0df,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -9518,9 +4552,19 @@ static const OnigCodePoint CR_S[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -9528,10 +4572,9 @@ static const OnigCodePoint CR_S[] = {
/* 'Sc': General Category */
static const OnigCodePoint CR_Sc[] = {
- 17,
+ 16,
0x0024, 0x0024,
0x00a2, 0x00a5,
- 0x058f, 0x058f,
0x060b, 0x060b,
0x09f2, 0x09f3,
0x09fb, 0x09fb,
@@ -9582,7 +4625,7 @@ static const OnigCodePoint CR_Sk[] = {
/* 'Sm': General Category */
static const OnigCodePoint CR_Sm[] = {
- 65,
+ 66,
0x002b, 0x002b,
0x003c, 0x003e,
0x007c, 0x007c,
@@ -9620,7 +4663,9 @@ static const OnigCodePoint CR_Sm[] = {
0x25f8, 0x25ff,
0x266f, 0x266f,
0x27c0, 0x27c4,
- 0x27c7, 0x27e5,
+ 0x27c7, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x27e5,
0x27f0, 0x27ff,
0x2900, 0x2982,
0x2999, 0x29d7,
@@ -9647,16 +4692,16 @@ static const OnigCodePoint CR_Sm[] = {
0x1d789, 0x1d789,
0x1d7a9, 0x1d7a9,
0x1d7c3, 0x1d7c3,
- 0x1eef0, 0x1eef1,
}; /* CR_Sm */
/* 'So': General Category */
static const OnigCodePoint CR_So[] = {
- 153,
- 0x00a6, 0x00a6,
+ 164,
+ 0x00a6, 0x00a7,
0x00a9, 0x00a9,
0x00ae, 0x00ae,
0x00b0, 0x00b0,
+ 0x00b6, 0x00b6,
0x0482, 0x0482,
0x060e, 0x060f,
0x06de, 0x06de,
@@ -9670,8 +4715,7 @@ static const OnigCodePoint CR_So[] = {
0x0c7f, 0x0c7f,
0x0d79, 0x0d79,
0x0f01, 0x0f03,
- 0x0f13, 0x0f13,
- 0x0f15, 0x0f17,
+ 0x0f13, 0x0f17,
0x0f1a, 0x0f1f,
0x0f34, 0x0f34,
0x0f36, 0x0f36,
@@ -9681,6 +4725,7 @@ static const OnigCodePoint CR_So[] = {
0x0fce, 0x0fcf,
0x0fd5, 0x0fd8,
0x109e, 0x109f,
+ 0x1360, 0x1360,
0x1390, 0x1399,
0x1940, 0x1940,
0x19de, 0x19ff,
@@ -9744,8 +4789,7 @@ static const OnigCodePoint CR_So[] = {
0x3196, 0x319f,
0x31c0, 0x31e3,
0x3200, 0x321e,
- 0x322a, 0x3247,
- 0x3250, 0x3250,
+ 0x322a, 0x3250,
0x3260, 0x327f,
0x328a, 0x32b0,
0x32c0, 0x32fe,
@@ -9761,6 +4805,7 @@ static const OnigCodePoint CR_So[] = {
0xffe8, 0xffe8,
0xffed, 0xffee,
0xfffc, 0xfffd,
+ 0x10102, 0x10102,
0x10137, 0x1013f,
0x10179, 0x10189,
0x10190, 0x1019b,
@@ -9782,7 +4827,7 @@ static const OnigCodePoint CR_So[] = {
0x1f0c1, 0x1f0cf,
0x1f0d1, 0x1f0df,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -9800,9 +4845,19 @@ static const OnigCodePoint CR_So[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -9849,7 +4904,7 @@ static const OnigCodePoint CR_Zs[] = {
/* 'Math': Derived Property */
static const OnigCodePoint CR_Math[] = {
- 138,
+ 106,
0x002b, 0x002b,
0x003c, 0x003e,
0x005e, 0x005e,
@@ -9918,7 +4973,9 @@ static const OnigCodePoint CR_Math[] = {
0x2642, 0x2642,
0x2660, 0x2663,
0x266d, 0x266f,
- 0x27c0, 0x27ff,
+ 0x27c0, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x27ff,
0x2900, 0x2aff,
0x2b30, 0x2b44,
0x2b47, 0x2b4c,
@@ -9954,54 +5011,1729 @@ static const OnigCodePoint CR_Math[] = {
0x1d552, 0x1d6a5,
0x1d6a8, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
}; /* CR_Math */
/* 'Alphabetic': Derived Property */
-#define CR_Alphabetic CR_Alpha
+static const OnigCodePoint CR_Alphabetic[] = {
+ 486,
+ 0x0041, 0x005a,
+ 0x0061, 0x007a,
+ 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
+ 0x00c0, 0x00d6,
+ 0x00d8, 0x00f6,
+ 0x00f8, 0x02c1,
+ 0x02c6, 0x02d1,
+ 0x02e0, 0x02e4,
+ 0x02ec, 0x02ec,
+ 0x02ee, 0x02ee,
+ 0x0345, 0x0345,
+ 0x0370, 0x0374,
+ 0x0376, 0x0377,
+ 0x037a, 0x037d,
+ 0x0386, 0x0386,
+ 0x0388, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x03a1,
+ 0x03a3, 0x03f5,
+ 0x03f7, 0x0481,
+ 0x048a, 0x0527,
+ 0x0531, 0x0556,
+ 0x0559, 0x0559,
+ 0x0561, 0x0587,
+ 0x05b0, 0x05bd,
+ 0x05bf, 0x05bf,
+ 0x05c1, 0x05c2,
+ 0x05c4, 0x05c5,
+ 0x05c7, 0x05c7,
+ 0x05d0, 0x05ea,
+ 0x05f0, 0x05f2,
+ 0x0610, 0x061a,
+ 0x0620, 0x0657,
+ 0x0659, 0x065f,
+ 0x066e, 0x06d3,
+ 0x06d5, 0x06dc,
+ 0x06e1, 0x06e8,
+ 0x06ed, 0x06ef,
+ 0x06fa, 0x06fc,
+ 0x06ff, 0x06ff,
+ 0x0710, 0x073f,
+ 0x074d, 0x07b1,
+ 0x07ca, 0x07ea,
+ 0x07f4, 0x07f5,
+ 0x07fa, 0x07fa,
+ 0x0800, 0x0817,
+ 0x081a, 0x082c,
+ 0x0840, 0x0858,
+ 0x0900, 0x093b,
+ 0x093d, 0x094c,
+ 0x094e, 0x0950,
+ 0x0955, 0x0963,
+ 0x0971, 0x0977,
+ 0x0979, 0x097f,
+ 0x0981, 0x0983,
+ 0x0985, 0x098c,
+ 0x098f, 0x0990,
+ 0x0993, 0x09a8,
+ 0x09aa, 0x09b0,
+ 0x09b2, 0x09b2,
+ 0x09b6, 0x09b9,
+ 0x09bd, 0x09c4,
+ 0x09c7, 0x09c8,
+ 0x09cb, 0x09cc,
+ 0x09ce, 0x09ce,
+ 0x09d7, 0x09d7,
+ 0x09dc, 0x09dd,
+ 0x09df, 0x09e3,
+ 0x09f0, 0x09f1,
+ 0x0a01, 0x0a03,
+ 0x0a05, 0x0a0a,
+ 0x0a0f, 0x0a10,
+ 0x0a13, 0x0a28,
+ 0x0a2a, 0x0a30,
+ 0x0a32, 0x0a33,
+ 0x0a35, 0x0a36,
+ 0x0a38, 0x0a39,
+ 0x0a3e, 0x0a42,
+ 0x0a47, 0x0a48,
+ 0x0a4b, 0x0a4c,
+ 0x0a51, 0x0a51,
+ 0x0a59, 0x0a5c,
+ 0x0a5e, 0x0a5e,
+ 0x0a70, 0x0a75,
+ 0x0a81, 0x0a83,
+ 0x0a85, 0x0a8d,
+ 0x0a8f, 0x0a91,
+ 0x0a93, 0x0aa8,
+ 0x0aaa, 0x0ab0,
+ 0x0ab2, 0x0ab3,
+ 0x0ab5, 0x0ab9,
+ 0x0abd, 0x0ac5,
+ 0x0ac7, 0x0ac9,
+ 0x0acb, 0x0acc,
+ 0x0ad0, 0x0ad0,
+ 0x0ae0, 0x0ae3,
+ 0x0b01, 0x0b03,
+ 0x0b05, 0x0b0c,
+ 0x0b0f, 0x0b10,
+ 0x0b13, 0x0b28,
+ 0x0b2a, 0x0b30,
+ 0x0b32, 0x0b33,
+ 0x0b35, 0x0b39,
+ 0x0b3d, 0x0b44,
+ 0x0b47, 0x0b48,
+ 0x0b4b, 0x0b4c,
+ 0x0b56, 0x0b57,
+ 0x0b5c, 0x0b5d,
+ 0x0b5f, 0x0b63,
+ 0x0b71, 0x0b71,
+ 0x0b82, 0x0b83,
+ 0x0b85, 0x0b8a,
+ 0x0b8e, 0x0b90,
+ 0x0b92, 0x0b95,
+ 0x0b99, 0x0b9a,
+ 0x0b9c, 0x0b9c,
+ 0x0b9e, 0x0b9f,
+ 0x0ba3, 0x0ba4,
+ 0x0ba8, 0x0baa,
+ 0x0bae, 0x0bb9,
+ 0x0bbe, 0x0bc2,
+ 0x0bc6, 0x0bc8,
+ 0x0bca, 0x0bcc,
+ 0x0bd0, 0x0bd0,
+ 0x0bd7, 0x0bd7,
+ 0x0c01, 0x0c03,
+ 0x0c05, 0x0c0c,
+ 0x0c0e, 0x0c10,
+ 0x0c12, 0x0c28,
+ 0x0c2a, 0x0c33,
+ 0x0c35, 0x0c39,
+ 0x0c3d, 0x0c44,
+ 0x0c46, 0x0c48,
+ 0x0c4a, 0x0c4c,
+ 0x0c55, 0x0c56,
+ 0x0c58, 0x0c59,
+ 0x0c60, 0x0c63,
+ 0x0c82, 0x0c83,
+ 0x0c85, 0x0c8c,
+ 0x0c8e, 0x0c90,
+ 0x0c92, 0x0ca8,
+ 0x0caa, 0x0cb3,
+ 0x0cb5, 0x0cb9,
+ 0x0cbd, 0x0cc4,
+ 0x0cc6, 0x0cc8,
+ 0x0cca, 0x0ccc,
+ 0x0cd5, 0x0cd6,
+ 0x0cde, 0x0cde,
+ 0x0ce0, 0x0ce3,
+ 0x0cf1, 0x0cf2,
+ 0x0d02, 0x0d03,
+ 0x0d05, 0x0d0c,
+ 0x0d0e, 0x0d10,
+ 0x0d12, 0x0d3a,
+ 0x0d3d, 0x0d44,
+ 0x0d46, 0x0d48,
+ 0x0d4a, 0x0d4c,
+ 0x0d4e, 0x0d4e,
+ 0x0d57, 0x0d57,
+ 0x0d60, 0x0d63,
+ 0x0d7a, 0x0d7f,
+ 0x0d82, 0x0d83,
+ 0x0d85, 0x0d96,
+ 0x0d9a, 0x0db1,
+ 0x0db3, 0x0dbb,
+ 0x0dbd, 0x0dbd,
+ 0x0dc0, 0x0dc6,
+ 0x0dcf, 0x0dd4,
+ 0x0dd6, 0x0dd6,
+ 0x0dd8, 0x0ddf,
+ 0x0df2, 0x0df3,
+ 0x0e01, 0x0e3a,
+ 0x0e40, 0x0e46,
+ 0x0e4d, 0x0e4d,
+ 0x0e81, 0x0e82,
+ 0x0e84, 0x0e84,
+ 0x0e87, 0x0e88,
+ 0x0e8a, 0x0e8a,
+ 0x0e8d, 0x0e8d,
+ 0x0e94, 0x0e97,
+ 0x0e99, 0x0e9f,
+ 0x0ea1, 0x0ea3,
+ 0x0ea5, 0x0ea5,
+ 0x0ea7, 0x0ea7,
+ 0x0eaa, 0x0eab,
+ 0x0ead, 0x0eb9,
+ 0x0ebb, 0x0ebd,
+ 0x0ec0, 0x0ec4,
+ 0x0ec6, 0x0ec6,
+ 0x0ecd, 0x0ecd,
+ 0x0edc, 0x0edd,
+ 0x0f00, 0x0f00,
+ 0x0f40, 0x0f47,
+ 0x0f49, 0x0f6c,
+ 0x0f71, 0x0f81,
+ 0x0f88, 0x0f97,
+ 0x0f99, 0x0fbc,
+ 0x1000, 0x1036,
+ 0x1038, 0x1038,
+ 0x103b, 0x103f,
+ 0x1050, 0x1062,
+ 0x1065, 0x1068,
+ 0x106e, 0x1086,
+ 0x108e, 0x108e,
+ 0x109c, 0x109d,
+ 0x10a0, 0x10c5,
+ 0x10d0, 0x10fa,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
+ 0x124a, 0x124d,
+ 0x1250, 0x1256,
+ 0x1258, 0x1258,
+ 0x125a, 0x125d,
+ 0x1260, 0x1288,
+ 0x128a, 0x128d,
+ 0x1290, 0x12b0,
+ 0x12b2, 0x12b5,
+ 0x12b8, 0x12be,
+ 0x12c0, 0x12c0,
+ 0x12c2, 0x12c5,
+ 0x12c8, 0x12d6,
+ 0x12d8, 0x1310,
+ 0x1312, 0x1315,
+ 0x1318, 0x135a,
+ 0x135f, 0x135f,
+ 0x1380, 0x138f,
+ 0x13a0, 0x13f4,
+ 0x1401, 0x166c,
+ 0x166f, 0x167f,
+ 0x1681, 0x169a,
+ 0x16a0, 0x16ea,
+ 0x16ee, 0x16f0,
+ 0x1700, 0x170c,
+ 0x170e, 0x1713,
+ 0x1720, 0x1733,
+ 0x1740, 0x1753,
+ 0x1760, 0x176c,
+ 0x176e, 0x1770,
+ 0x1772, 0x1773,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17c8,
+ 0x17d7, 0x17d7,
+ 0x17dc, 0x17dc,
+ 0x1820, 0x1877,
+ 0x1880, 0x18aa,
+ 0x18b0, 0x18f5,
+ 0x1900, 0x191c,
+ 0x1920, 0x192b,
+ 0x1930, 0x1938,
+ 0x1950, 0x196d,
+ 0x1970, 0x1974,
+ 0x1980, 0x19ab,
+ 0x19b0, 0x19c9,
+ 0x1a00, 0x1a1b,
+ 0x1a20, 0x1a5e,
+ 0x1a61, 0x1a74,
+ 0x1aa7, 0x1aa7,
+ 0x1b00, 0x1b33,
+ 0x1b35, 0x1b43,
+ 0x1b45, 0x1b4b,
+ 0x1b80, 0x1ba9,
+ 0x1bae, 0x1baf,
+ 0x1bc0, 0x1be5,
+ 0x1be7, 0x1bf1,
+ 0x1c00, 0x1c35,
+ 0x1c4d, 0x1c4f,
+ 0x1c5a, 0x1c7d,
+ 0x1ce9, 0x1cec,
+ 0x1cee, 0x1cf2,
+ 0x1d00, 0x1dbf,
+ 0x1e00, 0x1f15,
+ 0x1f18, 0x1f1d,
+ 0x1f20, 0x1f45,
+ 0x1f48, 0x1f4d,
+ 0x1f50, 0x1f57,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f7d,
+ 0x1f80, 0x1fb4,
+ 0x1fb6, 0x1fbc,
+ 0x1fbe, 0x1fbe,
+ 0x1fc2, 0x1fc4,
+ 0x1fc6, 0x1fcc,
+ 0x1fd0, 0x1fd3,
+ 0x1fd6, 0x1fdb,
+ 0x1fe0, 0x1fec,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ffc,
+ 0x2071, 0x2071,
+ 0x207f, 0x207f,
+ 0x2090, 0x209c,
+ 0x2102, 0x2102,
+ 0x2107, 0x2107,
+ 0x210a, 0x2113,
+ 0x2115, 0x2115,
+ 0x2119, 0x211d,
+ 0x2124, 0x2124,
+ 0x2126, 0x2126,
+ 0x2128, 0x2128,
+ 0x212a, 0x212d,
+ 0x212f, 0x2139,
+ 0x213c, 0x213f,
+ 0x2145, 0x2149,
+ 0x214e, 0x214e,
+ 0x2160, 0x2188,
+ 0x24b6, 0x24e9,
+ 0x2c00, 0x2c2e,
+ 0x2c30, 0x2c5e,
+ 0x2c60, 0x2ce4,
+ 0x2ceb, 0x2cee,
+ 0x2d00, 0x2d25,
+ 0x2d30, 0x2d65,
+ 0x2d6f, 0x2d6f,
+ 0x2d80, 0x2d96,
+ 0x2da0, 0x2da6,
+ 0x2da8, 0x2dae,
+ 0x2db0, 0x2db6,
+ 0x2db8, 0x2dbe,
+ 0x2dc0, 0x2dc6,
+ 0x2dc8, 0x2dce,
+ 0x2dd0, 0x2dd6,
+ 0x2dd8, 0x2dde,
+ 0x2de0, 0x2dff,
+ 0x2e2f, 0x2e2f,
+ 0x3005, 0x3007,
+ 0x3021, 0x3029,
+ 0x3031, 0x3035,
+ 0x3038, 0x303c,
+ 0x3041, 0x3096,
+ 0x309d, 0x309f,
+ 0x30a1, 0x30fa,
+ 0x30fc, 0x30ff,
+ 0x3105, 0x312d,
+ 0x3131, 0x318e,
+ 0x31a0, 0x31ba,
+ 0x31f0, 0x31ff,
+ 0x3400, 0x4db5,
+ 0x4e00, 0x9fcb,
+ 0xa000, 0xa48c,
+ 0xa4d0, 0xa4fd,
+ 0xa500, 0xa60c,
+ 0xa610, 0xa61f,
+ 0xa62a, 0xa62b,
+ 0xa640, 0xa66e,
+ 0xa67f, 0xa697,
+ 0xa6a0, 0xa6ef,
+ 0xa717, 0xa71f,
+ 0xa722, 0xa788,
+ 0xa78b, 0xa78e,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
+ 0xa803, 0xa805,
+ 0xa807, 0xa80a,
+ 0xa80c, 0xa827,
+ 0xa840, 0xa873,
+ 0xa880, 0xa8c3,
+ 0xa8f2, 0xa8f7,
+ 0xa8fb, 0xa8fb,
+ 0xa90a, 0xa92a,
+ 0xa930, 0xa952,
+ 0xa960, 0xa97c,
+ 0xa980, 0xa9b2,
+ 0xa9b4, 0xa9bf,
+ 0xa9cf, 0xa9cf,
+ 0xaa00, 0xaa36,
+ 0xaa40, 0xaa4d,
+ 0xaa60, 0xaa76,
+ 0xaa7a, 0xaa7a,
+ 0xaa80, 0xaabe,
+ 0xaac0, 0xaac0,
+ 0xaac2, 0xaac2,
+ 0xaadb, 0xaadd,
+ 0xab01, 0xab06,
+ 0xab09, 0xab0e,
+ 0xab11, 0xab16,
+ 0xab20, 0xab26,
+ 0xab28, 0xab2e,
+ 0xabc0, 0xabea,
+ 0xac00, 0xd7a3,
+ 0xd7b0, 0xd7c6,
+ 0xd7cb, 0xd7fb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
+ 0xfa70, 0xfad9,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xfb1d, 0xfb28,
+ 0xfb2a, 0xfb36,
+ 0xfb38, 0xfb3c,
+ 0xfb3e, 0xfb3e,
+ 0xfb40, 0xfb41,
+ 0xfb43, 0xfb44,
+ 0xfb46, 0xfbb1,
+ 0xfbd3, 0xfd3d,
+ 0xfd50, 0xfd8f,
+ 0xfd92, 0xfdc7,
+ 0xfdf0, 0xfdfb,
+ 0xfe70, 0xfe74,
+ 0xfe76, 0xfefc,
+ 0xff21, 0xff3a,
+ 0xff41, 0xff5a,
+ 0xff66, 0xffbe,
+ 0xffc2, 0xffc7,
+ 0xffca, 0xffcf,
+ 0xffd2, 0xffd7,
+ 0xffda, 0xffdc,
+ 0x10000, 0x1000b,
+ 0x1000d, 0x10026,
+ 0x10028, 0x1003a,
+ 0x1003c, 0x1003d,
+ 0x1003f, 0x1004d,
+ 0x10050, 0x1005d,
+ 0x10080, 0x100fa,
+ 0x10140, 0x10174,
+ 0x10280, 0x1029c,
+ 0x102a0, 0x102d0,
+ 0x10300, 0x1031e,
+ 0x10330, 0x1034a,
+ 0x10380, 0x1039d,
+ 0x103a0, 0x103c3,
+ 0x103c8, 0x103cf,
+ 0x103d1, 0x103d5,
+ 0x10400, 0x1049d,
+ 0x10800, 0x10805,
+ 0x10808, 0x10808,
+ 0x1080a, 0x10835,
+ 0x10837, 0x10838,
+ 0x1083c, 0x1083c,
+ 0x1083f, 0x10855,
+ 0x10900, 0x10915,
+ 0x10920, 0x10939,
+ 0x10a00, 0x10a03,
+ 0x10a05, 0x10a06,
+ 0x10a0c, 0x10a13,
+ 0x10a15, 0x10a17,
+ 0x10a19, 0x10a33,
+ 0x10a60, 0x10a7c,
+ 0x10b00, 0x10b35,
+ 0x10b40, 0x10b55,
+ 0x10b60, 0x10b72,
+ 0x10c00, 0x10c48,
+ 0x11000, 0x11045,
+ 0x11082, 0x110b8,
+ 0x12000, 0x1236e,
+ 0x12400, 0x12462,
+ 0x13000, 0x1342e,
+ 0x16800, 0x16a38,
+ 0x1b000, 0x1b001,
+ 0x1d400, 0x1d454,
+ 0x1d456, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d51e, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d552, 0x1d6a5,
+ 0x1d6a8, 0x1d6c0,
+ 0x1d6c2, 0x1d6da,
+ 0x1d6dc, 0x1d6fa,
+ 0x1d6fc, 0x1d714,
+ 0x1d716, 0x1d734,
+ 0x1d736, 0x1d74e,
+ 0x1d750, 0x1d76e,
+ 0x1d770, 0x1d788,
+ 0x1d78a, 0x1d7a8,
+ 0x1d7aa, 0x1d7c2,
+ 0x1d7c4, 0x1d7cb,
+ 0x20000, 0x2a6d6,
+ 0x2a700, 0x2b734,
+ 0x2b740, 0x2b81d,
+ 0x2f800, 0x2fa1d,
+}; /* CR_Alphabetic */
/* 'Lowercase': Derived Property */
-#define CR_Lowercase CR_Lower
+static const OnigCodePoint CR_Lowercase[] = {
+ 612,
+ 0x0061, 0x007a,
+ 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
+ 0x00df, 0x00f6,
+ 0x00f8, 0x00ff,
+ 0x0101, 0x0101,
+ 0x0103, 0x0103,
+ 0x0105, 0x0105,
+ 0x0107, 0x0107,
+ 0x0109, 0x0109,
+ 0x010b, 0x010b,
+ 0x010d, 0x010d,
+ 0x010f, 0x010f,
+ 0x0111, 0x0111,
+ 0x0113, 0x0113,
+ 0x0115, 0x0115,
+ 0x0117, 0x0117,
+ 0x0119, 0x0119,
+ 0x011b, 0x011b,
+ 0x011d, 0x011d,
+ 0x011f, 0x011f,
+ 0x0121, 0x0121,
+ 0x0123, 0x0123,
+ 0x0125, 0x0125,
+ 0x0127, 0x0127,
+ 0x0129, 0x0129,
+ 0x012b, 0x012b,
+ 0x012d, 0x012d,
+ 0x012f, 0x012f,
+ 0x0131, 0x0131,
+ 0x0133, 0x0133,
+ 0x0135, 0x0135,
+ 0x0137, 0x0138,
+ 0x013a, 0x013a,
+ 0x013c, 0x013c,
+ 0x013e, 0x013e,
+ 0x0140, 0x0140,
+ 0x0142, 0x0142,
+ 0x0144, 0x0144,
+ 0x0146, 0x0146,
+ 0x0148, 0x0149,
+ 0x014b, 0x014b,
+ 0x014d, 0x014d,
+ 0x014f, 0x014f,
+ 0x0151, 0x0151,
+ 0x0153, 0x0153,
+ 0x0155, 0x0155,
+ 0x0157, 0x0157,
+ 0x0159, 0x0159,
+ 0x015b, 0x015b,
+ 0x015d, 0x015d,
+ 0x015f, 0x015f,
+ 0x0161, 0x0161,
+ 0x0163, 0x0163,
+ 0x0165, 0x0165,
+ 0x0167, 0x0167,
+ 0x0169, 0x0169,
+ 0x016b, 0x016b,
+ 0x016d, 0x016d,
+ 0x016f, 0x016f,
+ 0x0171, 0x0171,
+ 0x0173, 0x0173,
+ 0x0175, 0x0175,
+ 0x0177, 0x0177,
+ 0x017a, 0x017a,
+ 0x017c, 0x017c,
+ 0x017e, 0x0180,
+ 0x0183, 0x0183,
+ 0x0185, 0x0185,
+ 0x0188, 0x0188,
+ 0x018c, 0x018d,
+ 0x0192, 0x0192,
+ 0x0195, 0x0195,
+ 0x0199, 0x019b,
+ 0x019e, 0x019e,
+ 0x01a1, 0x01a1,
+ 0x01a3, 0x01a3,
+ 0x01a5, 0x01a5,
+ 0x01a8, 0x01a8,
+ 0x01aa, 0x01ab,
+ 0x01ad, 0x01ad,
+ 0x01b0, 0x01b0,
+ 0x01b4, 0x01b4,
+ 0x01b6, 0x01b6,
+ 0x01b9, 0x01ba,
+ 0x01bd, 0x01bf,
+ 0x01c6, 0x01c6,
+ 0x01c9, 0x01c9,
+ 0x01cc, 0x01cc,
+ 0x01ce, 0x01ce,
+ 0x01d0, 0x01d0,
+ 0x01d2, 0x01d2,
+ 0x01d4, 0x01d4,
+ 0x01d6, 0x01d6,
+ 0x01d8, 0x01d8,
+ 0x01da, 0x01da,
+ 0x01dc, 0x01dd,
+ 0x01df, 0x01df,
+ 0x01e1, 0x01e1,
+ 0x01e3, 0x01e3,
+ 0x01e5, 0x01e5,
+ 0x01e7, 0x01e7,
+ 0x01e9, 0x01e9,
+ 0x01eb, 0x01eb,
+ 0x01ed, 0x01ed,
+ 0x01ef, 0x01f0,
+ 0x01f3, 0x01f3,
+ 0x01f5, 0x01f5,
+ 0x01f9, 0x01f9,
+ 0x01fb, 0x01fb,
+ 0x01fd, 0x01fd,
+ 0x01ff, 0x01ff,
+ 0x0201, 0x0201,
+ 0x0203, 0x0203,
+ 0x0205, 0x0205,
+ 0x0207, 0x0207,
+ 0x0209, 0x0209,
+ 0x020b, 0x020b,
+ 0x020d, 0x020d,
+ 0x020f, 0x020f,
+ 0x0211, 0x0211,
+ 0x0213, 0x0213,
+ 0x0215, 0x0215,
+ 0x0217, 0x0217,
+ 0x0219, 0x0219,
+ 0x021b, 0x021b,
+ 0x021d, 0x021d,
+ 0x021f, 0x021f,
+ 0x0221, 0x0221,
+ 0x0223, 0x0223,
+ 0x0225, 0x0225,
+ 0x0227, 0x0227,
+ 0x0229, 0x0229,
+ 0x022b, 0x022b,
+ 0x022d, 0x022d,
+ 0x022f, 0x022f,
+ 0x0231, 0x0231,
+ 0x0233, 0x0239,
+ 0x023c, 0x023c,
+ 0x023f, 0x0240,
+ 0x0242, 0x0242,
+ 0x0247, 0x0247,
+ 0x0249, 0x0249,
+ 0x024b, 0x024b,
+ 0x024d, 0x024d,
+ 0x024f, 0x0293,
+ 0x0295, 0x02b8,
+ 0x02c0, 0x02c1,
+ 0x02e0, 0x02e4,
+ 0x0345, 0x0345,
+ 0x0371, 0x0371,
+ 0x0373, 0x0373,
+ 0x0377, 0x0377,
+ 0x037a, 0x037d,
+ 0x0390, 0x0390,
+ 0x03ac, 0x03ce,
+ 0x03d0, 0x03d1,
+ 0x03d5, 0x03d7,
+ 0x03d9, 0x03d9,
+ 0x03db, 0x03db,
+ 0x03dd, 0x03dd,
+ 0x03df, 0x03df,
+ 0x03e1, 0x03e1,
+ 0x03e3, 0x03e3,
+ 0x03e5, 0x03e5,
+ 0x03e7, 0x03e7,
+ 0x03e9, 0x03e9,
+ 0x03eb, 0x03eb,
+ 0x03ed, 0x03ed,
+ 0x03ef, 0x03f3,
+ 0x03f5, 0x03f5,
+ 0x03f8, 0x03f8,
+ 0x03fb, 0x03fc,
+ 0x0430, 0x045f,
+ 0x0461, 0x0461,
+ 0x0463, 0x0463,
+ 0x0465, 0x0465,
+ 0x0467, 0x0467,
+ 0x0469, 0x0469,
+ 0x046b, 0x046b,
+ 0x046d, 0x046d,
+ 0x046f, 0x046f,
+ 0x0471, 0x0471,
+ 0x0473, 0x0473,
+ 0x0475, 0x0475,
+ 0x0477, 0x0477,
+ 0x0479, 0x0479,
+ 0x047b, 0x047b,
+ 0x047d, 0x047d,
+ 0x047f, 0x047f,
+ 0x0481, 0x0481,
+ 0x048b, 0x048b,
+ 0x048d, 0x048d,
+ 0x048f, 0x048f,
+ 0x0491, 0x0491,
+ 0x0493, 0x0493,
+ 0x0495, 0x0495,
+ 0x0497, 0x0497,
+ 0x0499, 0x0499,
+ 0x049b, 0x049b,
+ 0x049d, 0x049d,
+ 0x049f, 0x049f,
+ 0x04a1, 0x04a1,
+ 0x04a3, 0x04a3,
+ 0x04a5, 0x04a5,
+ 0x04a7, 0x04a7,
+ 0x04a9, 0x04a9,
+ 0x04ab, 0x04ab,
+ 0x04ad, 0x04ad,
+ 0x04af, 0x04af,
+ 0x04b1, 0x04b1,
+ 0x04b3, 0x04b3,
+ 0x04b5, 0x04b5,
+ 0x04b7, 0x04b7,
+ 0x04b9, 0x04b9,
+ 0x04bb, 0x04bb,
+ 0x04bd, 0x04bd,
+ 0x04bf, 0x04bf,
+ 0x04c2, 0x04c2,
+ 0x04c4, 0x04c4,
+ 0x04c6, 0x04c6,
+ 0x04c8, 0x04c8,
+ 0x04ca, 0x04ca,
+ 0x04cc, 0x04cc,
+ 0x04ce, 0x04cf,
+ 0x04d1, 0x04d1,
+ 0x04d3, 0x04d3,
+ 0x04d5, 0x04d5,
+ 0x04d7, 0x04d7,
+ 0x04d9, 0x04d9,
+ 0x04db, 0x04db,
+ 0x04dd, 0x04dd,
+ 0x04df, 0x04df,
+ 0x04e1, 0x04e1,
+ 0x04e3, 0x04e3,
+ 0x04e5, 0x04e5,
+ 0x04e7, 0x04e7,
+ 0x04e9, 0x04e9,
+ 0x04eb, 0x04eb,
+ 0x04ed, 0x04ed,
+ 0x04ef, 0x04ef,
+ 0x04f1, 0x04f1,
+ 0x04f3, 0x04f3,
+ 0x04f5, 0x04f5,
+ 0x04f7, 0x04f7,
+ 0x04f9, 0x04f9,
+ 0x04fb, 0x04fb,
+ 0x04fd, 0x04fd,
+ 0x04ff, 0x04ff,
+ 0x0501, 0x0501,
+ 0x0503, 0x0503,
+ 0x0505, 0x0505,
+ 0x0507, 0x0507,
+ 0x0509, 0x0509,
+ 0x050b, 0x050b,
+ 0x050d, 0x050d,
+ 0x050f, 0x050f,
+ 0x0511, 0x0511,
+ 0x0513, 0x0513,
+ 0x0515, 0x0515,
+ 0x0517, 0x0517,
+ 0x0519, 0x0519,
+ 0x051b, 0x051b,
+ 0x051d, 0x051d,
+ 0x051f, 0x051f,
+ 0x0521, 0x0521,
+ 0x0523, 0x0523,
+ 0x0525, 0x0525,
+ 0x0527, 0x0527,
+ 0x0561, 0x0587,
+ 0x1d00, 0x1dbf,
+ 0x1e01, 0x1e01,
+ 0x1e03, 0x1e03,
+ 0x1e05, 0x1e05,
+ 0x1e07, 0x1e07,
+ 0x1e09, 0x1e09,
+ 0x1e0b, 0x1e0b,
+ 0x1e0d, 0x1e0d,
+ 0x1e0f, 0x1e0f,
+ 0x1e11, 0x1e11,
+ 0x1e13, 0x1e13,
+ 0x1e15, 0x1e15,
+ 0x1e17, 0x1e17,
+ 0x1e19, 0x1e19,
+ 0x1e1b, 0x1e1b,
+ 0x1e1d, 0x1e1d,
+ 0x1e1f, 0x1e1f,
+ 0x1e21, 0x1e21,
+ 0x1e23, 0x1e23,
+ 0x1e25, 0x1e25,
+ 0x1e27, 0x1e27,
+ 0x1e29, 0x1e29,
+ 0x1e2b, 0x1e2b,
+ 0x1e2d, 0x1e2d,
+ 0x1e2f, 0x1e2f,
+ 0x1e31, 0x1e31,
+ 0x1e33, 0x1e33,
+ 0x1e35, 0x1e35,
+ 0x1e37, 0x1e37,
+ 0x1e39, 0x1e39,
+ 0x1e3b, 0x1e3b,
+ 0x1e3d, 0x1e3d,
+ 0x1e3f, 0x1e3f,
+ 0x1e41, 0x1e41,
+ 0x1e43, 0x1e43,
+ 0x1e45, 0x1e45,
+ 0x1e47, 0x1e47,
+ 0x1e49, 0x1e49,
+ 0x1e4b, 0x1e4b,
+ 0x1e4d, 0x1e4d,
+ 0x1e4f, 0x1e4f,
+ 0x1e51, 0x1e51,
+ 0x1e53, 0x1e53,
+ 0x1e55, 0x1e55,
+ 0x1e57, 0x1e57,
+ 0x1e59, 0x1e59,
+ 0x1e5b, 0x1e5b,
+ 0x1e5d, 0x1e5d,
+ 0x1e5f, 0x1e5f,
+ 0x1e61, 0x1e61,
+ 0x1e63, 0x1e63,
+ 0x1e65, 0x1e65,
+ 0x1e67, 0x1e67,
+ 0x1e69, 0x1e69,
+ 0x1e6b, 0x1e6b,
+ 0x1e6d, 0x1e6d,
+ 0x1e6f, 0x1e6f,
+ 0x1e71, 0x1e71,
+ 0x1e73, 0x1e73,
+ 0x1e75, 0x1e75,
+ 0x1e77, 0x1e77,
+ 0x1e79, 0x1e79,
+ 0x1e7b, 0x1e7b,
+ 0x1e7d, 0x1e7d,
+ 0x1e7f, 0x1e7f,
+ 0x1e81, 0x1e81,
+ 0x1e83, 0x1e83,
+ 0x1e85, 0x1e85,
+ 0x1e87, 0x1e87,
+ 0x1e89, 0x1e89,
+ 0x1e8b, 0x1e8b,
+ 0x1e8d, 0x1e8d,
+ 0x1e8f, 0x1e8f,
+ 0x1e91, 0x1e91,
+ 0x1e93, 0x1e93,
+ 0x1e95, 0x1e9d,
+ 0x1e9f, 0x1e9f,
+ 0x1ea1, 0x1ea1,
+ 0x1ea3, 0x1ea3,
+ 0x1ea5, 0x1ea5,
+ 0x1ea7, 0x1ea7,
+ 0x1ea9, 0x1ea9,
+ 0x1eab, 0x1eab,
+ 0x1ead, 0x1ead,
+ 0x1eaf, 0x1eaf,
+ 0x1eb1, 0x1eb1,
+ 0x1eb3, 0x1eb3,
+ 0x1eb5, 0x1eb5,
+ 0x1eb7, 0x1eb7,
+ 0x1eb9, 0x1eb9,
+ 0x1ebb, 0x1ebb,
+ 0x1ebd, 0x1ebd,
+ 0x1ebf, 0x1ebf,
+ 0x1ec1, 0x1ec1,
+ 0x1ec3, 0x1ec3,
+ 0x1ec5, 0x1ec5,
+ 0x1ec7, 0x1ec7,
+ 0x1ec9, 0x1ec9,
+ 0x1ecb, 0x1ecb,
+ 0x1ecd, 0x1ecd,
+ 0x1ecf, 0x1ecf,
+ 0x1ed1, 0x1ed1,
+ 0x1ed3, 0x1ed3,
+ 0x1ed5, 0x1ed5,
+ 0x1ed7, 0x1ed7,
+ 0x1ed9, 0x1ed9,
+ 0x1edb, 0x1edb,
+ 0x1edd, 0x1edd,
+ 0x1edf, 0x1edf,
+ 0x1ee1, 0x1ee1,
+ 0x1ee3, 0x1ee3,
+ 0x1ee5, 0x1ee5,
+ 0x1ee7, 0x1ee7,
+ 0x1ee9, 0x1ee9,
+ 0x1eeb, 0x1eeb,
+ 0x1eed, 0x1eed,
+ 0x1eef, 0x1eef,
+ 0x1ef1, 0x1ef1,
+ 0x1ef3, 0x1ef3,
+ 0x1ef5, 0x1ef5,
+ 0x1ef7, 0x1ef7,
+ 0x1ef9, 0x1ef9,
+ 0x1efb, 0x1efb,
+ 0x1efd, 0x1efd,
+ 0x1eff, 0x1f07,
+ 0x1f10, 0x1f15,
+ 0x1f20, 0x1f27,
+ 0x1f30, 0x1f37,
+ 0x1f40, 0x1f45,
+ 0x1f50, 0x1f57,
+ 0x1f60, 0x1f67,
+ 0x1f70, 0x1f7d,
+ 0x1f80, 0x1f87,
+ 0x1f90, 0x1f97,
+ 0x1fa0, 0x1fa7,
+ 0x1fb0, 0x1fb4,
+ 0x1fb6, 0x1fb7,
+ 0x1fbe, 0x1fbe,
+ 0x1fc2, 0x1fc4,
+ 0x1fc6, 0x1fc7,
+ 0x1fd0, 0x1fd3,
+ 0x1fd6, 0x1fd7,
+ 0x1fe0, 0x1fe7,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ff7,
+ 0x2090, 0x2094,
+ 0x210a, 0x210a,
+ 0x210e, 0x210f,
+ 0x2113, 0x2113,
+ 0x212f, 0x212f,
+ 0x2134, 0x2134,
+ 0x2139, 0x2139,
+ 0x213c, 0x213d,
+ 0x2146, 0x2149,
+ 0x214e, 0x214e,
+ 0x2170, 0x217f,
+ 0x2184, 0x2184,
+ 0x24d0, 0x24e9,
+ 0x2c30, 0x2c5e,
+ 0x2c61, 0x2c61,
+ 0x2c65, 0x2c66,
+ 0x2c68, 0x2c68,
+ 0x2c6a, 0x2c6a,
+ 0x2c6c, 0x2c6c,
+ 0x2c71, 0x2c71,
+ 0x2c73, 0x2c74,
+ 0x2c76, 0x2c7d,
+ 0x2c81, 0x2c81,
+ 0x2c83, 0x2c83,
+ 0x2c85, 0x2c85,
+ 0x2c87, 0x2c87,
+ 0x2c89, 0x2c89,
+ 0x2c8b, 0x2c8b,
+ 0x2c8d, 0x2c8d,
+ 0x2c8f, 0x2c8f,
+ 0x2c91, 0x2c91,
+ 0x2c93, 0x2c93,
+ 0x2c95, 0x2c95,
+ 0x2c97, 0x2c97,
+ 0x2c99, 0x2c99,
+ 0x2c9b, 0x2c9b,
+ 0x2c9d, 0x2c9d,
+ 0x2c9f, 0x2c9f,
+ 0x2ca1, 0x2ca1,
+ 0x2ca3, 0x2ca3,
+ 0x2ca5, 0x2ca5,
+ 0x2ca7, 0x2ca7,
+ 0x2ca9, 0x2ca9,
+ 0x2cab, 0x2cab,
+ 0x2cad, 0x2cad,
+ 0x2caf, 0x2caf,
+ 0x2cb1, 0x2cb1,
+ 0x2cb3, 0x2cb3,
+ 0x2cb5, 0x2cb5,
+ 0x2cb7, 0x2cb7,
+ 0x2cb9, 0x2cb9,
+ 0x2cbb, 0x2cbb,
+ 0x2cbd, 0x2cbd,
+ 0x2cbf, 0x2cbf,
+ 0x2cc1, 0x2cc1,
+ 0x2cc3, 0x2cc3,
+ 0x2cc5, 0x2cc5,
+ 0x2cc7, 0x2cc7,
+ 0x2cc9, 0x2cc9,
+ 0x2ccb, 0x2ccb,
+ 0x2ccd, 0x2ccd,
+ 0x2ccf, 0x2ccf,
+ 0x2cd1, 0x2cd1,
+ 0x2cd3, 0x2cd3,
+ 0x2cd5, 0x2cd5,
+ 0x2cd7, 0x2cd7,
+ 0x2cd9, 0x2cd9,
+ 0x2cdb, 0x2cdb,
+ 0x2cdd, 0x2cdd,
+ 0x2cdf, 0x2cdf,
+ 0x2ce1, 0x2ce1,
+ 0x2ce3, 0x2ce4,
+ 0x2cec, 0x2cec,
+ 0x2cee, 0x2cee,
+ 0x2d00, 0x2d25,
+ 0xa641, 0xa641,
+ 0xa643, 0xa643,
+ 0xa645, 0xa645,
+ 0xa647, 0xa647,
+ 0xa649, 0xa649,
+ 0xa64b, 0xa64b,
+ 0xa64d, 0xa64d,
+ 0xa64f, 0xa64f,
+ 0xa651, 0xa651,
+ 0xa653, 0xa653,
+ 0xa655, 0xa655,
+ 0xa657, 0xa657,
+ 0xa659, 0xa659,
+ 0xa65b, 0xa65b,
+ 0xa65d, 0xa65d,
+ 0xa65f, 0xa65f,
+ 0xa661, 0xa661,
+ 0xa663, 0xa663,
+ 0xa665, 0xa665,
+ 0xa667, 0xa667,
+ 0xa669, 0xa669,
+ 0xa66b, 0xa66b,
+ 0xa66d, 0xa66d,
+ 0xa681, 0xa681,
+ 0xa683, 0xa683,
+ 0xa685, 0xa685,
+ 0xa687, 0xa687,
+ 0xa689, 0xa689,
+ 0xa68b, 0xa68b,
+ 0xa68d, 0xa68d,
+ 0xa68f, 0xa68f,
+ 0xa691, 0xa691,
+ 0xa693, 0xa693,
+ 0xa695, 0xa695,
+ 0xa697, 0xa697,
+ 0xa723, 0xa723,
+ 0xa725, 0xa725,
+ 0xa727, 0xa727,
+ 0xa729, 0xa729,
+ 0xa72b, 0xa72b,
+ 0xa72d, 0xa72d,
+ 0xa72f, 0xa731,
+ 0xa733, 0xa733,
+ 0xa735, 0xa735,
+ 0xa737, 0xa737,
+ 0xa739, 0xa739,
+ 0xa73b, 0xa73b,
+ 0xa73d, 0xa73d,
+ 0xa73f, 0xa73f,
+ 0xa741, 0xa741,
+ 0xa743, 0xa743,
+ 0xa745, 0xa745,
+ 0xa747, 0xa747,
+ 0xa749, 0xa749,
+ 0xa74b, 0xa74b,
+ 0xa74d, 0xa74d,
+ 0xa74f, 0xa74f,
+ 0xa751, 0xa751,
+ 0xa753, 0xa753,
+ 0xa755, 0xa755,
+ 0xa757, 0xa757,
+ 0xa759, 0xa759,
+ 0xa75b, 0xa75b,
+ 0xa75d, 0xa75d,
+ 0xa75f, 0xa75f,
+ 0xa761, 0xa761,
+ 0xa763, 0xa763,
+ 0xa765, 0xa765,
+ 0xa767, 0xa767,
+ 0xa769, 0xa769,
+ 0xa76b, 0xa76b,
+ 0xa76d, 0xa76d,
+ 0xa76f, 0xa778,
+ 0xa77a, 0xa77a,
+ 0xa77c, 0xa77c,
+ 0xa77f, 0xa77f,
+ 0xa781, 0xa781,
+ 0xa783, 0xa783,
+ 0xa785, 0xa785,
+ 0xa787, 0xa787,
+ 0xa78c, 0xa78c,
+ 0xa78e, 0xa78e,
+ 0xa791, 0xa791,
+ 0xa7a1, 0xa7a1,
+ 0xa7a3, 0xa7a3,
+ 0xa7a5, 0xa7a5,
+ 0xa7a7, 0xa7a7,
+ 0xa7a9, 0xa7a9,
+ 0xa7fa, 0xa7fa,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xff41, 0xff5a,
+ 0x10428, 0x1044f,
+ 0x1d41a, 0x1d433,
+ 0x1d44e, 0x1d454,
+ 0x1d456, 0x1d467,
+ 0x1d482, 0x1d49b,
+ 0x1d4b6, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d4cf,
+ 0x1d4ea, 0x1d503,
+ 0x1d51e, 0x1d537,
+ 0x1d552, 0x1d56b,
+ 0x1d586, 0x1d59f,
+ 0x1d5ba, 0x1d5d3,
+ 0x1d5ee, 0x1d607,
+ 0x1d622, 0x1d63b,
+ 0x1d656, 0x1d66f,
+ 0x1d68a, 0x1d6a5,
+ 0x1d6c2, 0x1d6da,
+ 0x1d6dc, 0x1d6e1,
+ 0x1d6fc, 0x1d714,
+ 0x1d716, 0x1d71b,
+ 0x1d736, 0x1d74e,
+ 0x1d750, 0x1d755,
+ 0x1d770, 0x1d788,
+ 0x1d78a, 0x1d78f,
+ 0x1d7aa, 0x1d7c2,
+ 0x1d7c4, 0x1d7c9,
+ 0x1d7cb, 0x1d7cb,
+}; /* CR_Lowercase */
/* 'Uppercase': Derived Property */
-#define CR_Uppercase CR_Upper
+static const OnigCodePoint CR_Uppercase[] = {
+ 605,
+ 0x0041, 0x005a,
+ 0x00c0, 0x00d6,
+ 0x00d8, 0x00de,
+ 0x0100, 0x0100,
+ 0x0102, 0x0102,
+ 0x0104, 0x0104,
+ 0x0106, 0x0106,
+ 0x0108, 0x0108,
+ 0x010a, 0x010a,
+ 0x010c, 0x010c,
+ 0x010e, 0x010e,
+ 0x0110, 0x0110,
+ 0x0112, 0x0112,
+ 0x0114, 0x0114,
+ 0x0116, 0x0116,
+ 0x0118, 0x0118,
+ 0x011a, 0x011a,
+ 0x011c, 0x011c,
+ 0x011e, 0x011e,
+ 0x0120, 0x0120,
+ 0x0122, 0x0122,
+ 0x0124, 0x0124,
+ 0x0126, 0x0126,
+ 0x0128, 0x0128,
+ 0x012a, 0x012a,
+ 0x012c, 0x012c,
+ 0x012e, 0x012e,
+ 0x0130, 0x0130,
+ 0x0132, 0x0132,
+ 0x0134, 0x0134,
+ 0x0136, 0x0136,
+ 0x0139, 0x0139,
+ 0x013b, 0x013b,
+ 0x013d, 0x013d,
+ 0x013f, 0x013f,
+ 0x0141, 0x0141,
+ 0x0143, 0x0143,
+ 0x0145, 0x0145,
+ 0x0147, 0x0147,
+ 0x014a, 0x014a,
+ 0x014c, 0x014c,
+ 0x014e, 0x014e,
+ 0x0150, 0x0150,
+ 0x0152, 0x0152,
+ 0x0154, 0x0154,
+ 0x0156, 0x0156,
+ 0x0158, 0x0158,
+ 0x015a, 0x015a,
+ 0x015c, 0x015c,
+ 0x015e, 0x015e,
+ 0x0160, 0x0160,
+ 0x0162, 0x0162,
+ 0x0164, 0x0164,
+ 0x0166, 0x0166,
+ 0x0168, 0x0168,
+ 0x016a, 0x016a,
+ 0x016c, 0x016c,
+ 0x016e, 0x016e,
+ 0x0170, 0x0170,
+ 0x0172, 0x0172,
+ 0x0174, 0x0174,
+ 0x0176, 0x0176,
+ 0x0178, 0x0179,
+ 0x017b, 0x017b,
+ 0x017d, 0x017d,
+ 0x0181, 0x0182,
+ 0x0184, 0x0184,
+ 0x0186, 0x0187,
+ 0x0189, 0x018b,
+ 0x018e, 0x0191,
+ 0x0193, 0x0194,
+ 0x0196, 0x0198,
+ 0x019c, 0x019d,
+ 0x019f, 0x01a0,
+ 0x01a2, 0x01a2,
+ 0x01a4, 0x01a4,
+ 0x01a6, 0x01a7,
+ 0x01a9, 0x01a9,
+ 0x01ac, 0x01ac,
+ 0x01ae, 0x01af,
+ 0x01b1, 0x01b3,
+ 0x01b5, 0x01b5,
+ 0x01b7, 0x01b8,
+ 0x01bc, 0x01bc,
+ 0x01c4, 0x01c4,
+ 0x01c7, 0x01c7,
+ 0x01ca, 0x01ca,
+ 0x01cd, 0x01cd,
+ 0x01cf, 0x01cf,
+ 0x01d1, 0x01d1,
+ 0x01d3, 0x01d3,
+ 0x01d5, 0x01d5,
+ 0x01d7, 0x01d7,
+ 0x01d9, 0x01d9,
+ 0x01db, 0x01db,
+ 0x01de, 0x01de,
+ 0x01e0, 0x01e0,
+ 0x01e2, 0x01e2,
+ 0x01e4, 0x01e4,
+ 0x01e6, 0x01e6,
+ 0x01e8, 0x01e8,
+ 0x01ea, 0x01ea,
+ 0x01ec, 0x01ec,
+ 0x01ee, 0x01ee,
+ 0x01f1, 0x01f1,
+ 0x01f4, 0x01f4,
+ 0x01f6, 0x01f8,
+ 0x01fa, 0x01fa,
+ 0x01fc, 0x01fc,
+ 0x01fe, 0x01fe,
+ 0x0200, 0x0200,
+ 0x0202, 0x0202,
+ 0x0204, 0x0204,
+ 0x0206, 0x0206,
+ 0x0208, 0x0208,
+ 0x020a, 0x020a,
+ 0x020c, 0x020c,
+ 0x020e, 0x020e,
+ 0x0210, 0x0210,
+ 0x0212, 0x0212,
+ 0x0214, 0x0214,
+ 0x0216, 0x0216,
+ 0x0218, 0x0218,
+ 0x021a, 0x021a,
+ 0x021c, 0x021c,
+ 0x021e, 0x021e,
+ 0x0220, 0x0220,
+ 0x0222, 0x0222,
+ 0x0224, 0x0224,
+ 0x0226, 0x0226,
+ 0x0228, 0x0228,
+ 0x022a, 0x022a,
+ 0x022c, 0x022c,
+ 0x022e, 0x022e,
+ 0x0230, 0x0230,
+ 0x0232, 0x0232,
+ 0x023a, 0x023b,
+ 0x023d, 0x023e,
+ 0x0241, 0x0241,
+ 0x0243, 0x0246,
+ 0x0248, 0x0248,
+ 0x024a, 0x024a,
+ 0x024c, 0x024c,
+ 0x024e, 0x024e,
+ 0x0370, 0x0370,
+ 0x0372, 0x0372,
+ 0x0376, 0x0376,
+ 0x0386, 0x0386,
+ 0x0388, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x038f,
+ 0x0391, 0x03a1,
+ 0x03a3, 0x03ab,
+ 0x03cf, 0x03cf,
+ 0x03d2, 0x03d4,
+ 0x03d8, 0x03d8,
+ 0x03da, 0x03da,
+ 0x03dc, 0x03dc,
+ 0x03de, 0x03de,
+ 0x03e0, 0x03e0,
+ 0x03e2, 0x03e2,
+ 0x03e4, 0x03e4,
+ 0x03e6, 0x03e6,
+ 0x03e8, 0x03e8,
+ 0x03ea, 0x03ea,
+ 0x03ec, 0x03ec,
+ 0x03ee, 0x03ee,
+ 0x03f4, 0x03f4,
+ 0x03f7, 0x03f7,
+ 0x03f9, 0x03fa,
+ 0x03fd, 0x042f,
+ 0x0460, 0x0460,
+ 0x0462, 0x0462,
+ 0x0464, 0x0464,
+ 0x0466, 0x0466,
+ 0x0468, 0x0468,
+ 0x046a, 0x046a,
+ 0x046c, 0x046c,
+ 0x046e, 0x046e,
+ 0x0470, 0x0470,
+ 0x0472, 0x0472,
+ 0x0474, 0x0474,
+ 0x0476, 0x0476,
+ 0x0478, 0x0478,
+ 0x047a, 0x047a,
+ 0x047c, 0x047c,
+ 0x047e, 0x047e,
+ 0x0480, 0x0480,
+ 0x048a, 0x048a,
+ 0x048c, 0x048c,
+ 0x048e, 0x048e,
+ 0x0490, 0x0490,
+ 0x0492, 0x0492,
+ 0x0494, 0x0494,
+ 0x0496, 0x0496,
+ 0x0498, 0x0498,
+ 0x049a, 0x049a,
+ 0x049c, 0x049c,
+ 0x049e, 0x049e,
+ 0x04a0, 0x04a0,
+ 0x04a2, 0x04a2,
+ 0x04a4, 0x04a4,
+ 0x04a6, 0x04a6,
+ 0x04a8, 0x04a8,
+ 0x04aa, 0x04aa,
+ 0x04ac, 0x04ac,
+ 0x04ae, 0x04ae,
+ 0x04b0, 0x04b0,
+ 0x04b2, 0x04b2,
+ 0x04b4, 0x04b4,
+ 0x04b6, 0x04b6,
+ 0x04b8, 0x04b8,
+ 0x04ba, 0x04ba,
+ 0x04bc, 0x04bc,
+ 0x04be, 0x04be,
+ 0x04c0, 0x04c1,
+ 0x04c3, 0x04c3,
+ 0x04c5, 0x04c5,
+ 0x04c7, 0x04c7,
+ 0x04c9, 0x04c9,
+ 0x04cb, 0x04cb,
+ 0x04cd, 0x04cd,
+ 0x04d0, 0x04d0,
+ 0x04d2, 0x04d2,
+ 0x04d4, 0x04d4,
+ 0x04d6, 0x04d6,
+ 0x04d8, 0x04d8,
+ 0x04da, 0x04da,
+ 0x04dc, 0x04dc,
+ 0x04de, 0x04de,
+ 0x04e0, 0x04e0,
+ 0x04e2, 0x04e2,
+ 0x04e4, 0x04e4,
+ 0x04e6, 0x04e6,
+ 0x04e8, 0x04e8,
+ 0x04ea, 0x04ea,
+ 0x04ec, 0x04ec,
+ 0x04ee, 0x04ee,
+ 0x04f0, 0x04f0,
+ 0x04f2, 0x04f2,
+ 0x04f4, 0x04f4,
+ 0x04f6, 0x04f6,
+ 0x04f8, 0x04f8,
+ 0x04fa, 0x04fa,
+ 0x04fc, 0x04fc,
+ 0x04fe, 0x04fe,
+ 0x0500, 0x0500,
+ 0x0502, 0x0502,
+ 0x0504, 0x0504,
+ 0x0506, 0x0506,
+ 0x0508, 0x0508,
+ 0x050a, 0x050a,
+ 0x050c, 0x050c,
+ 0x050e, 0x050e,
+ 0x0510, 0x0510,
+ 0x0512, 0x0512,
+ 0x0514, 0x0514,
+ 0x0516, 0x0516,
+ 0x0518, 0x0518,
+ 0x051a, 0x051a,
+ 0x051c, 0x051c,
+ 0x051e, 0x051e,
+ 0x0520, 0x0520,
+ 0x0522, 0x0522,
+ 0x0524, 0x0524,
+ 0x0526, 0x0526,
+ 0x0531, 0x0556,
+ 0x10a0, 0x10c5,
+ 0x1e00, 0x1e00,
+ 0x1e02, 0x1e02,
+ 0x1e04, 0x1e04,
+ 0x1e06, 0x1e06,
+ 0x1e08, 0x1e08,
+ 0x1e0a, 0x1e0a,
+ 0x1e0c, 0x1e0c,
+ 0x1e0e, 0x1e0e,
+ 0x1e10, 0x1e10,
+ 0x1e12, 0x1e12,
+ 0x1e14, 0x1e14,
+ 0x1e16, 0x1e16,
+ 0x1e18, 0x1e18,
+ 0x1e1a, 0x1e1a,
+ 0x1e1c, 0x1e1c,
+ 0x1e1e, 0x1e1e,
+ 0x1e20, 0x1e20,
+ 0x1e22, 0x1e22,
+ 0x1e24, 0x1e24,
+ 0x1e26, 0x1e26,
+ 0x1e28, 0x1e28,
+ 0x1e2a, 0x1e2a,
+ 0x1e2c, 0x1e2c,
+ 0x1e2e, 0x1e2e,
+ 0x1e30, 0x1e30,
+ 0x1e32, 0x1e32,
+ 0x1e34, 0x1e34,
+ 0x1e36, 0x1e36,
+ 0x1e38, 0x1e38,
+ 0x1e3a, 0x1e3a,
+ 0x1e3c, 0x1e3c,
+ 0x1e3e, 0x1e3e,
+ 0x1e40, 0x1e40,
+ 0x1e42, 0x1e42,
+ 0x1e44, 0x1e44,
+ 0x1e46, 0x1e46,
+ 0x1e48, 0x1e48,
+ 0x1e4a, 0x1e4a,
+ 0x1e4c, 0x1e4c,
+ 0x1e4e, 0x1e4e,
+ 0x1e50, 0x1e50,
+ 0x1e52, 0x1e52,
+ 0x1e54, 0x1e54,
+ 0x1e56, 0x1e56,
+ 0x1e58, 0x1e58,
+ 0x1e5a, 0x1e5a,
+ 0x1e5c, 0x1e5c,
+ 0x1e5e, 0x1e5e,
+ 0x1e60, 0x1e60,
+ 0x1e62, 0x1e62,
+ 0x1e64, 0x1e64,
+ 0x1e66, 0x1e66,
+ 0x1e68, 0x1e68,
+ 0x1e6a, 0x1e6a,
+ 0x1e6c, 0x1e6c,
+ 0x1e6e, 0x1e6e,
+ 0x1e70, 0x1e70,
+ 0x1e72, 0x1e72,
+ 0x1e74, 0x1e74,
+ 0x1e76, 0x1e76,
+ 0x1e78, 0x1e78,
+ 0x1e7a, 0x1e7a,
+ 0x1e7c, 0x1e7c,
+ 0x1e7e, 0x1e7e,
+ 0x1e80, 0x1e80,
+ 0x1e82, 0x1e82,
+ 0x1e84, 0x1e84,
+ 0x1e86, 0x1e86,
+ 0x1e88, 0x1e88,
+ 0x1e8a, 0x1e8a,
+ 0x1e8c, 0x1e8c,
+ 0x1e8e, 0x1e8e,
+ 0x1e90, 0x1e90,
+ 0x1e92, 0x1e92,
+ 0x1e94, 0x1e94,
+ 0x1e9e, 0x1e9e,
+ 0x1ea0, 0x1ea0,
+ 0x1ea2, 0x1ea2,
+ 0x1ea4, 0x1ea4,
+ 0x1ea6, 0x1ea6,
+ 0x1ea8, 0x1ea8,
+ 0x1eaa, 0x1eaa,
+ 0x1eac, 0x1eac,
+ 0x1eae, 0x1eae,
+ 0x1eb0, 0x1eb0,
+ 0x1eb2, 0x1eb2,
+ 0x1eb4, 0x1eb4,
+ 0x1eb6, 0x1eb6,
+ 0x1eb8, 0x1eb8,
+ 0x1eba, 0x1eba,
+ 0x1ebc, 0x1ebc,
+ 0x1ebe, 0x1ebe,
+ 0x1ec0, 0x1ec0,
+ 0x1ec2, 0x1ec2,
+ 0x1ec4, 0x1ec4,
+ 0x1ec6, 0x1ec6,
+ 0x1ec8, 0x1ec8,
+ 0x1eca, 0x1eca,
+ 0x1ecc, 0x1ecc,
+ 0x1ece, 0x1ece,
+ 0x1ed0, 0x1ed0,
+ 0x1ed2, 0x1ed2,
+ 0x1ed4, 0x1ed4,
+ 0x1ed6, 0x1ed6,
+ 0x1ed8, 0x1ed8,
+ 0x1eda, 0x1eda,
+ 0x1edc, 0x1edc,
+ 0x1ede, 0x1ede,
+ 0x1ee0, 0x1ee0,
+ 0x1ee2, 0x1ee2,
+ 0x1ee4, 0x1ee4,
+ 0x1ee6, 0x1ee6,
+ 0x1ee8, 0x1ee8,
+ 0x1eea, 0x1eea,
+ 0x1eec, 0x1eec,
+ 0x1eee, 0x1eee,
+ 0x1ef0, 0x1ef0,
+ 0x1ef2, 0x1ef2,
+ 0x1ef4, 0x1ef4,
+ 0x1ef6, 0x1ef6,
+ 0x1ef8, 0x1ef8,
+ 0x1efa, 0x1efa,
+ 0x1efc, 0x1efc,
+ 0x1efe, 0x1efe,
+ 0x1f08, 0x1f0f,
+ 0x1f18, 0x1f1d,
+ 0x1f28, 0x1f2f,
+ 0x1f38, 0x1f3f,
+ 0x1f48, 0x1f4d,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f5f,
+ 0x1f68, 0x1f6f,
+ 0x1fb8, 0x1fbb,
+ 0x1fc8, 0x1fcb,
+ 0x1fd8, 0x1fdb,
+ 0x1fe8, 0x1fec,
+ 0x1ff8, 0x1ffb,
+ 0x2102, 0x2102,
+ 0x2107, 0x2107,
+ 0x210b, 0x210d,
+ 0x2110, 0x2112,
+ 0x2115, 0x2115,
+ 0x2119, 0x211d,
+ 0x2124, 0x2124,
+ 0x2126, 0x2126,
+ 0x2128, 0x2128,
+ 0x212a, 0x212d,
+ 0x2130, 0x2133,
+ 0x213e, 0x213f,
+ 0x2145, 0x2145,
+ 0x2160, 0x216f,
+ 0x2183, 0x2183,
+ 0x24b6, 0x24cf,
+ 0x2c00, 0x2c2e,
+ 0x2c60, 0x2c60,
+ 0x2c62, 0x2c64,
+ 0x2c67, 0x2c67,
+ 0x2c69, 0x2c69,
+ 0x2c6b, 0x2c6b,
+ 0x2c6d, 0x2c70,
+ 0x2c72, 0x2c72,
+ 0x2c75, 0x2c75,
+ 0x2c7e, 0x2c80,
+ 0x2c82, 0x2c82,
+ 0x2c84, 0x2c84,
+ 0x2c86, 0x2c86,
+ 0x2c88, 0x2c88,
+ 0x2c8a, 0x2c8a,
+ 0x2c8c, 0x2c8c,
+ 0x2c8e, 0x2c8e,
+ 0x2c90, 0x2c90,
+ 0x2c92, 0x2c92,
+ 0x2c94, 0x2c94,
+ 0x2c96, 0x2c96,
+ 0x2c98, 0x2c98,
+ 0x2c9a, 0x2c9a,
+ 0x2c9c, 0x2c9c,
+ 0x2c9e, 0x2c9e,
+ 0x2ca0, 0x2ca0,
+ 0x2ca2, 0x2ca2,
+ 0x2ca4, 0x2ca4,
+ 0x2ca6, 0x2ca6,
+ 0x2ca8, 0x2ca8,
+ 0x2caa, 0x2caa,
+ 0x2cac, 0x2cac,
+ 0x2cae, 0x2cae,
+ 0x2cb0, 0x2cb0,
+ 0x2cb2, 0x2cb2,
+ 0x2cb4, 0x2cb4,
+ 0x2cb6, 0x2cb6,
+ 0x2cb8, 0x2cb8,
+ 0x2cba, 0x2cba,
+ 0x2cbc, 0x2cbc,
+ 0x2cbe, 0x2cbe,
+ 0x2cc0, 0x2cc0,
+ 0x2cc2, 0x2cc2,
+ 0x2cc4, 0x2cc4,
+ 0x2cc6, 0x2cc6,
+ 0x2cc8, 0x2cc8,
+ 0x2cca, 0x2cca,
+ 0x2ccc, 0x2ccc,
+ 0x2cce, 0x2cce,
+ 0x2cd0, 0x2cd0,
+ 0x2cd2, 0x2cd2,
+ 0x2cd4, 0x2cd4,
+ 0x2cd6, 0x2cd6,
+ 0x2cd8, 0x2cd8,
+ 0x2cda, 0x2cda,
+ 0x2cdc, 0x2cdc,
+ 0x2cde, 0x2cde,
+ 0x2ce0, 0x2ce0,
+ 0x2ce2, 0x2ce2,
+ 0x2ceb, 0x2ceb,
+ 0x2ced, 0x2ced,
+ 0xa640, 0xa640,
+ 0xa642, 0xa642,
+ 0xa644, 0xa644,
+ 0xa646, 0xa646,
+ 0xa648, 0xa648,
+ 0xa64a, 0xa64a,
+ 0xa64c, 0xa64c,
+ 0xa64e, 0xa64e,
+ 0xa650, 0xa650,
+ 0xa652, 0xa652,
+ 0xa654, 0xa654,
+ 0xa656, 0xa656,
+ 0xa658, 0xa658,
+ 0xa65a, 0xa65a,
+ 0xa65c, 0xa65c,
+ 0xa65e, 0xa65e,
+ 0xa660, 0xa660,
+ 0xa662, 0xa662,
+ 0xa664, 0xa664,
+ 0xa666, 0xa666,
+ 0xa668, 0xa668,
+ 0xa66a, 0xa66a,
+ 0xa66c, 0xa66c,
+ 0xa680, 0xa680,
+ 0xa682, 0xa682,
+ 0xa684, 0xa684,
+ 0xa686, 0xa686,
+ 0xa688, 0xa688,
+ 0xa68a, 0xa68a,
+ 0xa68c, 0xa68c,
+ 0xa68e, 0xa68e,
+ 0xa690, 0xa690,
+ 0xa692, 0xa692,
+ 0xa694, 0xa694,
+ 0xa696, 0xa696,
+ 0xa722, 0xa722,
+ 0xa724, 0xa724,
+ 0xa726, 0xa726,
+ 0xa728, 0xa728,
+ 0xa72a, 0xa72a,
+ 0xa72c, 0xa72c,
+ 0xa72e, 0xa72e,
+ 0xa732, 0xa732,
+ 0xa734, 0xa734,
+ 0xa736, 0xa736,
+ 0xa738, 0xa738,
+ 0xa73a, 0xa73a,
+ 0xa73c, 0xa73c,
+ 0xa73e, 0xa73e,
+ 0xa740, 0xa740,
+ 0xa742, 0xa742,
+ 0xa744, 0xa744,
+ 0xa746, 0xa746,
+ 0xa748, 0xa748,
+ 0xa74a, 0xa74a,
+ 0xa74c, 0xa74c,
+ 0xa74e, 0xa74e,
+ 0xa750, 0xa750,
+ 0xa752, 0xa752,
+ 0xa754, 0xa754,
+ 0xa756, 0xa756,
+ 0xa758, 0xa758,
+ 0xa75a, 0xa75a,
+ 0xa75c, 0xa75c,
+ 0xa75e, 0xa75e,
+ 0xa760, 0xa760,
+ 0xa762, 0xa762,
+ 0xa764, 0xa764,
+ 0xa766, 0xa766,
+ 0xa768, 0xa768,
+ 0xa76a, 0xa76a,
+ 0xa76c, 0xa76c,
+ 0xa76e, 0xa76e,
+ 0xa779, 0xa779,
+ 0xa77b, 0xa77b,
+ 0xa77d, 0xa77e,
+ 0xa780, 0xa780,
+ 0xa782, 0xa782,
+ 0xa784, 0xa784,
+ 0xa786, 0xa786,
+ 0xa78b, 0xa78b,
+ 0xa78d, 0xa78d,
+ 0xa790, 0xa790,
+ 0xa7a0, 0xa7a0,
+ 0xa7a2, 0xa7a2,
+ 0xa7a4, 0xa7a4,
+ 0xa7a6, 0xa7a6,
+ 0xa7a8, 0xa7a8,
+ 0xff21, 0xff3a,
+ 0x10400, 0x10427,
+ 0x1d400, 0x1d419,
+ 0x1d434, 0x1d44d,
+ 0x1d468, 0x1d481,
+ 0x1d49c, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b5,
+ 0x1d4d0, 0x1d4e9,
+ 0x1d504, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d538, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d56c, 0x1d585,
+ 0x1d5a0, 0x1d5b9,
+ 0x1d5d4, 0x1d5ed,
+ 0x1d608, 0x1d621,
+ 0x1d63c, 0x1d655,
+ 0x1d670, 0x1d689,
+ 0x1d6a8, 0x1d6c0,
+ 0x1d6e2, 0x1d6fa,
+ 0x1d71c, 0x1d734,
+ 0x1d756, 0x1d76e,
+ 0x1d790, 0x1d7a8,
+ 0x1d7ca, 0x1d7ca,
+}; /* CR_Uppercase */
/* 'Cased': Derived Property */
static const OnigCodePoint CR_Cased[] = {
- 119,
+ 112,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -10029,8 +6761,6 @@ static const OnigCodePoint CR_Cased[] = {
0x0531, 0x0556,
0x0561, 0x0587,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -10051,9 +6781,7 @@ static const OnigCodePoint CR_Cased[] = {
0x1fe0, 0x1fec,
0x1ff2, 0x1ff4,
0x1ff6, 0x1ffc,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
+ 0x2090, 0x2094,
0x2102, 0x2102,
0x2107, 0x2107,
0x210a, 0x2113,
@@ -10075,17 +6803,14 @@ static const OnigCodePoint CR_Cased[] = {
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa640, 0xa66d,
0xa680, 0xa697,
0xa722, 0xa787,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa7fa,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa7fa,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
0xff21, 0xff3a,
@@ -10125,7 +6850,7 @@ static const OnigCodePoint CR_Cased[] = {
/* 'Case_Ignorable': Derived Property */
static const OnigCodePoint CR_Case_Ignorable[] = {
- 295,
+ 277,
0x0027, 0x0027,
0x002e, 0x002e,
0x003a, 0x003a,
@@ -10149,7 +6874,7 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x05c4, 0x05c5,
0x05c7, 0x05c7,
0x05f4, 0x05f4,
- 0x0600, 0x0604,
+ 0x0600, 0x0603,
0x0610, 0x061a,
0x0640, 0x0640,
0x064b, 0x065f,
@@ -10165,7 +6890,6 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x07fa, 0x07fa,
0x0816, 0x082d,
0x0859, 0x085b,
- 0x08e4, 0x08fe,
0x0900, 0x0902,
0x093a, 0x093a,
0x093c, 0x093c,
@@ -10285,7 +7009,6 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x1b80, 0x1b81,
0x1ba2, 0x1ba5,
0x1ba8, 0x1ba9,
- 0x1bab, 0x1bab,
0x1be6, 0x1be6,
0x1be8, 0x1be9,
0x1bed, 0x1bed,
@@ -10297,8 +7020,7 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x1cd4, 0x1ce0,
0x1ce2, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
- 0x1d2c, 0x1d6a,
+ 0x1d2c, 0x1d61,
0x1d78, 0x1d78,
0x1d9b, 0x1de6,
0x1dfc, 0x1dff,
@@ -10319,14 +7041,14 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x207f, 0x207f,
0x2090, 0x209c,
0x20d0, 0x20f0,
- 0x2c7c, 0x2c7d,
+ 0x2c7d, 0x2c7d,
0x2cef, 0x2cf1,
0x2d6f, 0x2d6f,
0x2d7f, 0x2d7f,
0x2de0, 0x2dff,
0x2e2f, 0x2e2f,
0x3005, 0x3005,
- 0x302a, 0x302d,
+ 0x302a, 0x302f,
0x3031, 0x3035,
0x303b, 0x303b,
0x3099, 0x309e,
@@ -10335,14 +7057,12 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0xa4f8, 0xa4fd,
0xa60c, 0xa60c,
0xa66f, 0xa672,
- 0xa674, 0xa67d,
+ 0xa67c, 0xa67d,
0xa67f, 0xa67f,
- 0xa69f, 0xa69f,
0xa6f0, 0xa6f1,
0xa700, 0xa721,
0xa770, 0xa770,
0xa788, 0xa78a,
- 0xa7f8, 0xa7f9,
0xa802, 0xa802,
0xa806, 0xa806,
0xa80b, 0xa80b,
@@ -10368,9 +7088,6 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0xaabe, 0xaabf,
0xaac1, 0xaac1,
0xaadd, 0xaadd,
- 0xaaec, 0xaaed,
- 0xaaf3, 0xaaf4,
- 0xaaf6, 0xaaf6,
0xabe5, 0xabe5,
0xabe8, 0xabe8,
0xabed, 0xabed,
@@ -10403,16 +7120,6 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
0x110b3, 0x110b6,
0x110b9, 0x110ba,
0x110bd, 0x110bd,
- 0x11100, 0x11102,
- 0x11127, 0x1112b,
- 0x1112d, 0x11134,
- 0x11180, 0x11181,
- 0x111b6, 0x111be,
- 0x116ab, 0x116ab,
- 0x116ad, 0x116ad,
- 0x116b0, 0x116b5,
- 0x116b7, 0x116b7,
- 0x16f8f, 0x16f9f,
0x1d167, 0x1d169,
0x1d173, 0x1d182,
0x1d185, 0x1d18b,
@@ -10425,7 +7132,7 @@ static const OnigCodePoint CR_Case_Ignorable[] = {
/* 'Changes_When_Lowercased': Derived Property */
static const OnigCodePoint CR_Changes_When_Lowercased[] = {
- 571,
+ 566,
0x0041, 0x005a,
0x00c0, 0x00d6,
0x00d8, 0x00de,
@@ -10693,8 +7400,6 @@ static const OnigCodePoint CR_Changes_When_Lowercased[] = {
0x0526, 0x0526,
0x0531, 0x0556,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1e00, 0x1e00,
0x1e02, 0x1e02,
0x1e04, 0x1e04,
@@ -10904,7 +7609,6 @@ static const OnigCodePoint CR_Changes_When_Lowercased[] = {
0x2ce2, 0x2ce2,
0x2ceb, 0x2ceb,
0x2ced, 0x2ced,
- 0x2cf2, 0x2cf2,
0xa640, 0xa640,
0xa642, 0xa642,
0xa644, 0xa644,
@@ -10988,20 +7692,18 @@ static const OnigCodePoint CR_Changes_When_Lowercased[] = {
0xa78b, 0xa78b,
0xa78d, 0xa78d,
0xa790, 0xa790,
- 0xa792, 0xa792,
0xa7a0, 0xa7a0,
0xa7a2, 0xa7a2,
0xa7a4, 0xa7a4,
0xa7a6, 0xa7a6,
0xa7a8, 0xa7a8,
- 0xa7aa, 0xa7aa,
0xff21, 0xff3a,
0x10400, 0x10427,
}; /* CR_Changes_When_Lowercased */
/* 'Changes_When_Uppercased': Derived Property */
static const OnigCodePoint CR_Changes_When_Uppercased[] = {
- 586,
+ 582,
0x0061, 0x007a,
0x00b5, 0x00b5,
0x00df, 0x00f6,
@@ -11151,7 +7853,7 @@ static const OnigCodePoint CR_Changes_When_Uppercased[] = {
0x025b, 0x025b,
0x0260, 0x0260,
0x0263, 0x0263,
- 0x0265, 0x0266,
+ 0x0265, 0x0265,
0x0268, 0x0269,
0x026b, 0x026b,
0x026f, 0x026f,
@@ -11492,10 +8194,7 @@ static const OnigCodePoint CR_Changes_When_Uppercased[] = {
0x2ce3, 0x2ce3,
0x2cec, 0x2cec,
0x2cee, 0x2cee,
- 0x2cf3, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa641, 0xa641,
0xa643, 0xa643,
0xa645, 0xa645,
@@ -11578,7 +8277,6 @@ static const OnigCodePoint CR_Changes_When_Uppercased[] = {
0xa787, 0xa787,
0xa78c, 0xa78c,
0xa791, 0xa791,
- 0xa793, 0xa793,
0xa7a1, 0xa7a1,
0xa7a3, 0xa7a3,
0xa7a5, 0xa7a5,
@@ -11592,7 +8290,7 @@ static const OnigCodePoint CR_Changes_When_Uppercased[] = {
/* 'Changes_When_Titlecased': Derived Property */
static const OnigCodePoint CR_Changes_When_Titlecased[] = {
- 587,
+ 583,
0x0061, 0x007a,
0x00b5, 0x00b5,
0x00df, 0x00f6,
@@ -11743,7 +8441,7 @@ static const OnigCodePoint CR_Changes_When_Titlecased[] = {
0x025b, 0x025b,
0x0260, 0x0260,
0x0263, 0x0263,
- 0x0265, 0x0266,
+ 0x0265, 0x0265,
0x0268, 0x0269,
0x026b, 0x026b,
0x026f, 0x026f,
@@ -12084,10 +8782,7 @@ static const OnigCodePoint CR_Changes_When_Titlecased[] = {
0x2ce3, 0x2ce3,
0x2cec, 0x2cec,
0x2cee, 0x2cee,
- 0x2cf3, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa641, 0xa641,
0xa643, 0xa643,
0xa645, 0xa645,
@@ -12170,7 +8865,6 @@ static const OnigCodePoint CR_Changes_When_Titlecased[] = {
0xa787, 0xa787,
0xa78c, 0xa78c,
0xa791, 0xa791,
- 0xa793, 0xa793,
0xa7a1, 0xa7a1,
0xa7a3, 0xa7a3,
0xa7a5, 0xa7a5,
@@ -12184,7 +8878,7 @@ static const OnigCodePoint CR_Changes_When_Titlecased[] = {
/* 'Changes_When_Casefolded': Derived Property */
static const OnigCodePoint CR_Changes_When_Casefolded[] = {
- 582,
+ 577,
0x0041, 0x005a,
0x00b5, 0x00b5,
0x00c0, 0x00d6,
@@ -12459,8 +9153,6 @@ static const OnigCodePoint CR_Changes_When_Casefolded[] = {
0x0531, 0x0556,
0x0587, 0x0587,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1e00, 0x1e00,
0x1e02, 0x1e02,
0x1e04, 0x1e04,
@@ -12672,7 +9364,6 @@ static const OnigCodePoint CR_Changes_When_Casefolded[] = {
0x2ce2, 0x2ce2,
0x2ceb, 0x2ceb,
0x2ced, 0x2ced,
- 0x2cf2, 0x2cf2,
0xa640, 0xa640,
0xa642, 0xa642,
0xa644, 0xa644,
@@ -12756,13 +9447,11 @@ static const OnigCodePoint CR_Changes_When_Casefolded[] = {
0xa78b, 0xa78b,
0xa78d, 0xa78d,
0xa790, 0xa790,
- 0xa792, 0xa792,
0xa7a0, 0xa7a0,
0xa7a2, 0xa7a2,
0xa7a4, 0xa7a4,
0xa7a6, 0xa7a6,
0xa7a8, 0xa7a8,
- 0xa7aa, 0xa7aa,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
0xff21, 0xff3a,
@@ -12771,7 +9460,7 @@ static const OnigCodePoint CR_Changes_When_Casefolded[] = {
/* 'Changes_When_Casemapped': Derived Property */
static const OnigCodePoint CR_Changes_When_Casemapped[] = {
- 104,
+ 99,
0x0041, 0x005a,
0x0061, 0x007a,
0x00b5, 0x00b5,
@@ -12792,7 +9481,7 @@ static const OnigCodePoint CR_Changes_When_Casemapped[] = {
0x025b, 0x025b,
0x0260, 0x0260,
0x0263, 0x0263,
- 0x0265, 0x0266,
+ 0x0265, 0x0265,
0x0268, 0x0269,
0x026b, 0x026b,
0x026f, 0x026f,
@@ -12820,8 +9509,6 @@ static const OnigCodePoint CR_Changes_When_Casemapped[] = {
0x0531, 0x0556,
0x0561, 0x0587,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x1d79, 0x1d79,
0x1d7d, 0x1d7d,
0x1e00, 0x1e9b,
@@ -12859,18 +9546,15 @@ static const OnigCodePoint CR_Changes_When_Casemapped[] = {
0x2c75, 0x2c76,
0x2c7e, 0x2ce3,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
0xa640, 0xa66d,
0xa680, 0xa697,
0xa722, 0xa72f,
0xa732, 0xa76f,
0xa779, 0xa787,
0xa78b, 0xa78d,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
0xff21, 0xff3a,
@@ -12880,7 +9564,7 @@ static const OnigCodePoint CR_Changes_When_Casemapped[] = {
/* 'ID_Start': Derived Property */
static const OnigCodePoint CR_ID_Start[] = {
- 488,
+ 437,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -12928,8 +9612,6 @@ static const OnigCodePoint CR_ID_Start[] = {
0x0824, 0x0824,
0x0828, 0x0828,
0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -13035,7 +9717,7 @@ static const OnigCodePoint CR_ID_Start[] = {
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f40, 0x0f47,
0x0f49, 0x0f6c,
@@ -13050,10 +9732,9 @@ static const OnigCodePoint CR_ID_Start[] = {
0x1075, 0x1081,
0x108e, 0x108e,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -13101,13 +9782,12 @@ static const OnigCodePoint CR_ID_Start[] = {
0x1b45, 0x1b4b,
0x1b83, 0x1ba0,
0x1bae, 0x1baf,
- 0x1bba, 0x1be5,
+ 0x1bc0, 0x1be5,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
- 0x1cf5, 0x1cf6,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -13148,11 +9828,8 @@ static const OnigCodePoint CR_ID_Start[] = {
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
@@ -13176,7 +9853,7 @@ static const OnigCodePoint CR_ID_Start[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -13188,9 +9865,9 @@ static const OnigCodePoint CR_ID_Start[] = {
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa822,
@@ -13215,8 +9892,6 @@ static const OnigCodePoint CR_ID_Start[] = {
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaea,
- 0xaaf2, 0xaaf4,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -13226,7 +9901,8 @@ static const OnigCodePoint CR_ID_Start[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -13276,8 +9952,6 @@ static const OnigCodePoint CR_ID_Start[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -13289,18 +9963,10 @@ static const OnigCodePoint CR_ID_Start[] = {
0x10c00, 0x10c48,
0x11003, 0x11037,
0x11083, 0x110af,
- 0x110d0, 0x110e8,
- 0x11103, 0x11126,
- 0x11183, 0x111b2,
- 0x111c1, 0x111c4,
- 0x11680, 0x116aa,
0x12000, 0x1236e,
0x12400, 0x12462,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f50,
- 0x16f93, 0x16f9f,
0x1b000, 0x1b001,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
@@ -13332,39 +9998,6 @@ static const OnigCodePoint CR_ID_Start[] = {
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -13373,7 +10006,7 @@ static const OnigCodePoint CR_ID_Start[] = {
/* 'ID_Continue': Derived Property */
static const OnigCodePoint CR_ID_Continue[] = {
- 564,
+ 514,
0x0030, 0x0039,
0x0041, 0x005a,
0x005f, 0x005f,
@@ -13422,9 +10055,6 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x07fa, 0x07fa,
0x0800, 0x082d,
0x0840, 0x085b,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0x0900, 0x0963,
0x0966, 0x096f,
0x0971, 0x0977,
@@ -13572,7 +10202,7 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f18, 0x0f19,
0x0f20, 0x0f29,
@@ -13588,10 +10218,9 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1000, 0x1049,
0x1050, 0x109d,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -13623,7 +10252,8 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1760, 0x176c,
0x176e, 0x1770,
0x1772, 0x1773,
- 0x1780, 0x17d3,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17d3,
0x17d7, 0x17d7,
0x17dc, 0x17dd,
0x17e0, 0x17e9,
@@ -13649,12 +10279,14 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1b00, 0x1b4b,
0x1b50, 0x1b59,
0x1b6b, 0x1b73,
- 0x1b80, 0x1bf3,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
0x1c00, 0x1c37,
0x1c40, 0x1c49,
0x1c4d, 0x1c7d,
0x1cd0, 0x1cd2,
- 0x1cd4, 0x1cf6,
+ 0x1cd4, 0x1cf2,
0x1d00, 0x1de6,
0x1dfc, 0x1f15,
0x1f18, 0x1f1d,
@@ -13699,11 +10331,9 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
- 0x2ceb, 0x2cf3,
+ 0x2ceb, 0x2cf1,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d7f, 0x2d96,
0x2da0, 0x2da6,
@@ -13728,21 +10358,21 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
0xa610, 0xa62b,
0xa640, 0xa66f,
- 0xa674, 0xa67d,
+ 0xa67c, 0xa67d,
0xa67f, 0xa697,
- 0xa69f, 0xa6f1,
+ 0xa6a0, 0xa6f1,
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa827,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c4,
0xa8d0, 0xa8d9,
@@ -13760,8 +10390,6 @@ static const OnigCodePoint CR_ID_Continue[] = {
0xaa7a, 0xaa7b,
0xaa80, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf6,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -13773,7 +10401,8 @@ static const OnigCodePoint CR_ID_Continue[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -13830,8 +10459,6 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a03,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
@@ -13847,21 +10474,10 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x11000, 0x11046,
0x11066, 0x1106f,
0x11080, 0x110ba,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x1113f,
- 0x11180, 0x111c4,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
0x1b000, 0x1b001,
0x1d165, 0x1d169,
0x1d16d, 0x1d172,
@@ -13900,39 +10516,6 @@ static const OnigCodePoint CR_ID_Continue[] = {
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -13942,7 +10525,7 @@ static const OnigCodePoint CR_ID_Continue[] = {
/* 'XID_Start': Derived Property */
static const OnigCodePoint CR_XID_Start[] = {
- 495,
+ 444,
0x0041, 0x005a,
0x0061, 0x007a,
0x00aa, 0x00aa,
@@ -13990,8 +10573,6 @@ static const OnigCodePoint CR_XID_Start[] = {
0x0824, 0x0824,
0x0828, 0x0828,
0x0840, 0x0858,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0904, 0x0939,
0x093d, 0x093d,
0x0950, 0x0950,
@@ -14097,7 +10678,7 @@ static const OnigCodePoint CR_XID_Start[] = {
0x0ebd, 0x0ebd,
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f40, 0x0f47,
0x0f49, 0x0f6c,
@@ -14112,10 +10693,9 @@ static const OnigCodePoint CR_XID_Start[] = {
0x1075, 0x1081,
0x108e, 0x108e,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -14163,13 +10743,12 @@ static const OnigCodePoint CR_XID_Start[] = {
0x1b45, 0x1b4b,
0x1b83, 0x1ba0,
0x1bae, 0x1baf,
- 0x1bba, 0x1be5,
+ 0x1bc0, 0x1be5,
0x1c00, 0x1c23,
0x1c4d, 0x1c4f,
0x1c5a, 0x1c7d,
0x1ce9, 0x1cec,
0x1cee, 0x1cf1,
- 0x1cf5, 0x1cf6,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -14210,11 +10789,8 @@ static const OnigCodePoint CR_XID_Start[] = {
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
0x2ceb, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
@@ -14238,7 +10814,7 @@ static const OnigCodePoint CR_XID_Start[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
@@ -14250,9 +10826,9 @@ static const OnigCodePoint CR_XID_Start[] = {
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa822,
@@ -14277,8 +10853,6 @@ static const OnigCodePoint CR_XID_Start[] = {
0xaac0, 0xaac0,
0xaac2, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaea,
- 0xaaf2, 0xaaf4,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -14288,7 +10862,8 @@ static const OnigCodePoint CR_XID_Start[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -14345,8 +10920,6 @@ static const OnigCodePoint CR_XID_Start[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -14358,18 +10931,10 @@ static const OnigCodePoint CR_XID_Start[] = {
0x10c00, 0x10c48,
0x11003, 0x11037,
0x11083, 0x110af,
- 0x110d0, 0x110e8,
- 0x11103, 0x11126,
- 0x11183, 0x111b2,
- 0x111c1, 0x111c4,
- 0x11680, 0x116aa,
0x12000, 0x1236e,
0x12400, 0x12462,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f50,
- 0x16f93, 0x16f9f,
0x1b000, 0x1b001,
0x1d400, 0x1d454,
0x1d456, 0x1d49c,
@@ -14401,39 +10966,6 @@ static const OnigCodePoint CR_XID_Start[] = {
0x1d78a, 0x1d7a8,
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -14442,7 +10974,7 @@ static const OnigCodePoint CR_XID_Start[] = {
/* 'XID_Continue': Derived Property */
static const OnigCodePoint CR_XID_Continue[] = {
- 571,
+ 521,
0x0030, 0x0039,
0x0041, 0x005a,
0x005f, 0x005f,
@@ -14491,9 +11023,6 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x07fa, 0x07fa,
0x0800, 0x082d,
0x0840, 0x085b,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0x0900, 0x0963,
0x0966, 0x096f,
0x0971, 0x0977,
@@ -14641,7 +11170,7 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f00,
0x0f18, 0x0f19,
0x0f20, 0x0f29,
@@ -14657,10 +11186,9 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1000, 0x1049,
0x1050, 0x109d,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x1248,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -14692,7 +11220,8 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1760, 0x176c,
0x176e, 0x1770,
0x1772, 0x1773,
- 0x1780, 0x17d3,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17d3,
0x17d7, 0x17d7,
0x17dc, 0x17dd,
0x17e0, 0x17e9,
@@ -14718,12 +11247,14 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1b00, 0x1b4b,
0x1b50, 0x1b59,
0x1b6b, 0x1b73,
- 0x1b80, 0x1bf3,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
0x1c00, 0x1c37,
0x1c40, 0x1c49,
0x1c4d, 0x1c7d,
0x1cd0, 0x1cd2,
- 0x1cd4, 0x1cf6,
+ 0x1cd4, 0x1cf2,
0x1d00, 0x1de6,
0x1dfc, 0x1f15,
0x1f18, 0x1f1d,
@@ -14768,11 +11299,9 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2ce4,
- 0x2ceb, 0x2cf3,
+ 0x2ceb, 0x2cf1,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d6f,
0x2d7f, 0x2d96,
0x2da0, 0x2da6,
@@ -14798,21 +11327,21 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x31a0, 0x31ba,
0x31f0, 0x31ff,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xa000, 0xa48c,
0xa4d0, 0xa4fd,
0xa500, 0xa60c,
0xa610, 0xa62b,
0xa640, 0xa66f,
- 0xa674, 0xa67d,
+ 0xa67c, 0xa67d,
0xa67f, 0xa697,
- 0xa69f, 0xa6f1,
+ 0xa6a0, 0xa6f1,
0xa717, 0xa71f,
0xa722, 0xa788,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa827,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa827,
0xa840, 0xa873,
0xa880, 0xa8c4,
0xa8d0, 0xa8d9,
@@ -14830,8 +11359,6 @@ static const OnigCodePoint CR_XID_Continue[] = {
0xaa7a, 0xaa7b,
0xaa80, 0xaac2,
0xaadb, 0xaadd,
- 0xaae0, 0xaaef,
- 0xaaf2, 0xaaf6,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -14843,7 +11370,8 @@ static const OnigCodePoint CR_XID_Continue[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -14906,8 +11434,6 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1083f, 0x10855,
0x10900, 0x10915,
0x10920, 0x10939,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a03,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
@@ -14923,21 +11449,10 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x11000, 0x11046,
0x11066, 0x1106f,
0x11080, 0x110ba,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x1113f,
- 0x11180, 0x111c4,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
0x1b000, 0x1b001,
0x1d165, 0x1d169,
0x1d16d, 0x1d172,
@@ -14976,39 +11491,6 @@ static const OnigCodePoint CR_XID_Continue[] = {
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
@@ -15038,7 +11520,7 @@ static const OnigCodePoint CR_Default_Ignorable_Code_Point[] = {
/* 'Grapheme_Extend': Derived Property */
static const OnigCodePoint CR_Grapheme_Extend[] = {
- 232,
+ 215,
0x0300, 0x036f,
0x0483, 0x0489,
0x0591, 0x05bd,
@@ -15062,7 +11544,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x0825, 0x0827,
0x0829, 0x082d,
0x0859, 0x085b,
- 0x08e4, 0x08fe,
0x0900, 0x0902,
0x093a, 0x093a,
0x093c, 0x093c,
@@ -15158,7 +11639,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x1732, 0x1734,
0x1752, 0x1753,
0x1772, 0x1773,
- 0x17b4, 0x17b5,
0x17b7, 0x17bd,
0x17c6, 0x17c6,
0x17c9, 0x17d3,
@@ -15186,7 +11666,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x1b80, 0x1b81,
0x1ba2, 0x1ba5,
0x1ba8, 0x1ba9,
- 0x1bab, 0x1bab,
0x1be6, 0x1be6,
0x1be8, 0x1be9,
0x1bed, 0x1bed,
@@ -15197,7 +11676,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x1cd4, 0x1ce0,
0x1ce2, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
0x1dc0, 0x1de6,
0x1dfc, 0x1dff,
0x200c, 0x200d,
@@ -15208,8 +11686,7 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x302a, 0x302f,
0x3099, 0x309a,
0xa66f, 0xa672,
- 0xa674, 0xa67d,
- 0xa69f, 0xa69f,
+ 0xa67c, 0xa67d,
0xa6f0, 0xa6f1,
0xa802, 0xa802,
0xa806, 0xa806,
@@ -15233,8 +11710,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0xaab7, 0xaab8,
0xaabe, 0xaabf,
0xaac1, 0xaac1,
- 0xaaec, 0xaaed,
- 0xaaf6, 0xaaf6,
0xabe5, 0xabe5,
0xabe8, 0xabe8,
0xabed, 0xabed,
@@ -15253,16 +11728,6 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
0x11080, 0x11081,
0x110b3, 0x110b6,
0x110b9, 0x110ba,
- 0x11100, 0x11102,
- 0x11127, 0x1112b,
- 0x1112d, 0x11134,
- 0x11180, 0x11181,
- 0x111b6, 0x111be,
- 0x116ab, 0x116ab,
- 0x116ad, 0x116ad,
- 0x116b0, 0x116b5,
- 0x116b7, 0x116b7,
- 0x16f8f, 0x16f92,
0x1d165, 0x1d165,
0x1d167, 0x1d169,
0x1d16e, 0x1d172,
@@ -15275,7 +11740,7 @@ static const OnigCodePoint CR_Grapheme_Extend[] = {
/* 'Grapheme_Base': Derived Property */
static const OnigCodePoint CR_Grapheme_Base[] = {
- 643,
+ 596,
0x0020, 0x007e,
0x00a0, 0x00ac,
0x00ae, 0x02ff,
@@ -15290,7 +11755,6 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x0559, 0x055f,
0x0561, 0x0587,
0x0589, 0x058a,
- 0x058f, 0x058f,
0x05be, 0x05be,
0x05c0, 0x05c0,
0x05c3, 0x05c3,
@@ -15319,8 +11783,6 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x0830, 0x083e,
0x0840, 0x0858,
0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
0x0903, 0x0939,
0x093b, 0x093b,
0x093d, 0x0940,
@@ -15369,7 +11831,8 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x0acb, 0x0acc,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae1,
- 0x0ae6, 0x0af1,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
0x0b02, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -15469,7 +11932,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x0ec0, 0x0ec4,
0x0ec6, 0x0ec6,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f17,
0x0f1a, 0x0f34,
0x0f36, 0x0f36,
@@ -15494,9 +11957,8 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1087, 0x108c,
0x108e, 0x109c,
0x109e, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
+ 0x10d0, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -15569,7 +12031,8 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1b82, 0x1ba1,
0x1ba6, 0x1ba7,
0x1baa, 0x1baa,
- 0x1bac, 0x1be5,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1be5,
0x1be7, 0x1be7,
0x1bea, 0x1bec,
0x1bee, 0x1bee,
@@ -15578,12 +12041,10 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1c34, 0x1c35,
0x1c3b, 0x1c49,
0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
0x1cd3, 0x1cd3,
0x1ce1, 0x1ce1,
0x1ce9, 0x1cec,
- 0x1cee, 0x1cf3,
- 0x1cf5, 0x1cf6,
+ 0x1cee, 0x1cf2,
0x1d00, 0x1dbf,
0x1e00, 0x1f15,
0x1f18, 0x1f1d,
@@ -15613,16 +12074,15 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x2400, 0x2426,
0x2440, 0x244a,
0x2460, 0x26ff,
- 0x2701, 0x2b4c,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x2b4c,
0x2b50, 0x2b59,
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
0x2c60, 0x2cee,
- 0x2cf2, 0x2cf3,
0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d70,
0x2d80, 0x2d96,
0x2da0, 0x2da6,
@@ -15633,7 +12093,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
- 0x2e00, 0x2e3b,
+ 0x2e00, 0x2e31,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -15649,7 +12109,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x31f0, 0x321e,
0x3220, 0x32fe,
0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
+ 0x4dc0, 0x9fcb,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
@@ -15659,9 +12119,9 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0xa6a0, 0xa6ef,
0xa6f2, 0xa6f7,
0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa801,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
0xa803, 0xa805,
0xa807, 0xa80a,
0xa80c, 0xa824,
@@ -15695,8 +12155,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0xaab9, 0xaabd,
0xaac0, 0xaac0,
0xaac2, 0xaac2,
- 0xaadb, 0xaaeb,
- 0xaaee, 0xaaf5,
+ 0xaadb, 0xaadf,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -15709,7 +12168,8 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xf900, 0xfa6d,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -15771,8 +12231,6 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x10900, 0x1091b,
0x1091f, 0x10939,
0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a00,
0x10a10, 0x10a13,
0x10a15, 0x10a17,
@@ -15794,27 +12252,11 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x110b7, 0x110b8,
0x110bb, 0x110bc,
0x110be, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11103, 0x11126,
- 0x1112c, 0x1112c,
- 0x11136, 0x11143,
- 0x11182, 0x111b5,
- 0x111bf, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116aa,
- 0x116ac, 0x116ac,
- 0x116ae, 0x116af,
- 0x116b6, 0x116b6,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x12470, 0x12473,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f93, 0x16f9f,
0x1b000, 0x1b001,
0x1d000, 0x1d0f5,
0x1d100, 0x1d126,
@@ -15849,40 +12291,6 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1d552, 0x1d6a5,
0x1d6a8, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
@@ -15891,7 +12299,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1f0d1, 0x1f0df,
0x1f100, 0x1f10a,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -15909,9 +12317,19 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -15923,7 +12341,7 @@ static const OnigCodePoint CR_Grapheme_Base[] = {
/* 'Grapheme_Link': Derived Property */
static const OnigCodePoint CR_Grapheme_Link[] = {
- 33,
+ 29,
0x094d, 0x094d,
0x09cd, 0x09cd,
0x0a4d, 0x0a4d,
@@ -15942,26 +12360,22 @@ static const OnigCodePoint CR_Grapheme_Link[] = {
0x17d2, 0x17d2,
0x1a60, 0x1a60,
0x1b44, 0x1b44,
- 0x1baa, 0x1bab,
+ 0x1baa, 0x1baa,
0x1bf2, 0x1bf3,
0x2d7f, 0x2d7f,
0xa806, 0xa806,
0xa8c4, 0xa8c4,
0xa953, 0xa953,
0xa9c0, 0xa9c0,
- 0xaaf6, 0xaaf6,
0xabed, 0xabed,
0x10a3f, 0x10a3f,
0x11046, 0x11046,
0x110b9, 0x110b9,
- 0x11133, 0x11134,
- 0x111c0, 0x111c0,
- 0x116b6, 0x116b6,
}; /* CR_Grapheme_Link */
/* 'Common': Script */
static const OnigCodePoint CR_Common[] = {
- 157,
+ 169,
0x0000, 0x0040,
0x005b, 0x0060,
0x007b, 0x00a9,
@@ -15984,6 +12398,7 @@ static const OnigCodePoint CR_Common[] = {
0x0660, 0x0669,
0x06dd, 0x06dd,
0x0964, 0x0965,
+ 0x0970, 0x0970,
0x0e3f, 0x0e3f,
0x0fd5, 0x0fd8,
0x10fb, 0x10fb,
@@ -15994,8 +12409,7 @@ static const OnigCodePoint CR_Common[] = {
0x1cd3, 0x1cd3,
0x1ce1, 0x1ce1,
0x1ce9, 0x1cec,
- 0x1cee, 0x1cf3,
- 0x1cf5, 0x1cf6,
+ 0x1cee, 0x1cf2,
0x2000, 0x200b,
0x200e, 0x2064,
0x206a, 0x2070,
@@ -16012,10 +12426,12 @@ static const OnigCodePoint CR_Common[] = {
0x2400, 0x2426,
0x2440, 0x244a,
0x2460, 0x26ff,
- 0x2701, 0x27ff,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x27ff,
0x2900, 0x2b4c,
0x2b50, 0x2b59,
- 0x2e00, 0x2e3b,
+ 0x2e00, 0x2e31,
0x2ff0, 0x2ffb,
0x3000, 0x3004,
0x3006, 0x3006,
@@ -16092,7 +12508,7 @@ static const OnigCodePoint CR_Common[] = {
0x1f0d1, 0x1f0df,
0x1f100, 0x1f10a,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f1ff,
0x1f201, 0x1f202,
@@ -16111,9 +12527,19 @@ static const OnigCodePoint CR_Common[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
@@ -16148,9 +12574,9 @@ static const OnigCodePoint CR_Latin[] = {
0x2c60, 0x2c7f,
0xa722, 0xa787,
0xa78b, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa7ff,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa7ff,
0xfb00, 0xfb06,
0xff21, 0xff3a,
0xff41, 0xff5a,
@@ -16202,18 +12628,17 @@ static const OnigCodePoint CR_Cyrillic[] = {
0x1d2b, 0x1d2b,
0x1d78, 0x1d78,
0x2de0, 0x2dff,
- 0xa640, 0xa697,
- 0xa69f, 0xa69f,
+ 0xa640, 0xa673,
+ 0xa67c, 0xa697,
}; /* CR_Cyrillic */
/* 'Armenian': Script */
static const OnigCodePoint CR_Armenian[] = {
- 6,
+ 5,
0x0531, 0x0556,
0x0559, 0x055f,
0x0561, 0x0587,
0x058a, 0x058a,
- 0x058f, 0x058f,
0xfb13, 0xfb17,
}; /* CR_Armenian */
@@ -16233,8 +12658,8 @@ static const OnigCodePoint CR_Hebrew[] = {
/* 'Arabic': Script */
static const OnigCodePoint CR_Arabic[] = {
- 56,
- 0x0600, 0x0604,
+ 19,
+ 0x0600, 0x0603,
0x0606, 0x060b,
0x060d, 0x061a,
0x061e, 0x061e,
@@ -16245,9 +12670,6 @@ static const OnigCodePoint CR_Arabic[] = {
0x0671, 0x06dc,
0x06de, 0x06ff,
0x0750, 0x077f,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0xfb50, 0xfbc1,
0xfbd3, 0xfd3d,
0xfd50, 0xfd8f,
@@ -16256,40 +12678,6 @@ static const OnigCodePoint CR_Arabic[] = {
0xfe70, 0xfe74,
0xfe76, 0xfefc,
0x10e60, 0x10e7e,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
}; /* CR_Arabic */
/* 'Syriac': Script */
@@ -16308,10 +12696,11 @@ static const OnigCodePoint CR_Thaana[] = {
/* 'Devanagari': Script */
static const OnigCodePoint CR_Devanagari[] = {
- 5,
+ 6,
0x0900, 0x0950,
0x0953, 0x0963,
- 0x0966, 0x0977,
+ 0x0966, 0x096f,
+ 0x0971, 0x0977,
0x0979, 0x097f,
0xa8e0, 0xa8fb,
}; /* CR_Devanagari */
@@ -16358,7 +12747,7 @@ static const OnigCodePoint CR_Gurmukhi[] = {
/* 'Gujarati': Script */
static const OnigCodePoint CR_Gujarati[] = {
- 13,
+ 14,
0x0a81, 0x0a83,
0x0a85, 0x0a8d,
0x0a8f, 0x0a91,
@@ -16371,7 +12760,8 @@ static const OnigCodePoint CR_Gujarati[] = {
0x0acb, 0x0acd,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
}; /* CR_Gujarati */
/* 'Oriya': Script */
@@ -16511,7 +12901,7 @@ static const OnigCodePoint CR_Lao[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
}; /* CR_Lao */
/* 'Tibetan': Script */
@@ -16535,15 +12925,11 @@ static const OnigCodePoint CR_Myanmar[] = {
/* 'Georgian': Script */
static const OnigCodePoint CR_Georgian[] = {
- 8,
+ 4,
0x10a0, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
0x10d0, 0x10fa,
- 0x10fc, 0x10ff,
+ 0x10fc, 0x10fc,
0x2d00, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
}; /* CR_Georgian */
/* 'Hangul': Script */
@@ -16680,7 +13066,7 @@ static const OnigCodePoint CR_Bopomofo[] = {
/* 'Han': Script */
static const OnigCodePoint CR_Han[] = {
- 15,
+ 16,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -16689,8 +13075,9 @@ static const OnigCodePoint CR_Han[] = {
0x3021, 0x3029,
0x3038, 0x303b,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xf900, 0xfa6d,
+ 0x4e00, 0x9fcb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
@@ -16726,7 +13113,7 @@ static const OnigCodePoint CR_Deseret[] = {
/* 'Inherited': Script */
static const OnigCodePoint CR_Inherited[] = {
- 25,
+ 24,
0x0300, 0x036f,
0x0485, 0x0486,
0x064b, 0x0655,
@@ -16737,7 +13124,6 @@ static const OnigCodePoint CR_Inherited[] = {
0x1cd4, 0x1ce0,
0x1ce2, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
0x1dc0, 0x1de6,
0x1dfc, 0x1dff,
0x200c, 0x200d,
@@ -16858,7 +13244,7 @@ static const OnigCodePoint CR_Buginese[] = {
static const OnigCodePoint CR_Coptic[] = {
3,
0x03e2, 0x03ef,
- 0x2c80, 0x2cf3,
+ 0x2c80, 0x2cf1,
0x2cf9, 0x2cff,
}; /* CR_Coptic */
@@ -16881,7 +13267,7 @@ static const OnigCodePoint CR_Glagolitic[] = {
/* 'Tifinagh': Script */
static const OnigCodePoint CR_Tifinagh[] = {
3,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d70,
0x2d7f, 0x2d7f,
}; /* CR_Tifinagh */
@@ -16949,8 +13335,8 @@ static const OnigCodePoint CR_Nko[] = {
/* 'Sundanese': Script */
static const OnigCodePoint CR_Sundanese[] = {
2,
- 0x1b80, 0x1bbf,
- 0x1cc0, 0x1cc7,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
}; /* CR_Sundanese */
/* 'Lepcha': Script */
@@ -17081,8 +13467,7 @@ static const OnigCodePoint CR_Javanese[] = {
/* 'Meetei_Mayek': Script */
static const OnigCodePoint CR_Meetei_Mayek[] = {
- 3,
- 0xaae0, 0xaaf6,
+ 2,
0xabc0, 0xabed,
0xabf0, 0xabf9,
}; /* CR_Meetei_Mayek */
@@ -17147,57 +13532,21 @@ static const OnigCodePoint CR_Mandaic[] = {
0x085e, 0x085e,
}; /* CR_Mandaic */
-/* 'Chakma': Script */
-static const OnigCodePoint CR_Chakma[] = {
- 2,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
-}; /* CR_Chakma */
-
-/* 'Meroitic_Cursive': Script */
-static const OnigCodePoint CR_Meroitic_Cursive[] = {
- 2,
- 0x109a0, 0x109b7,
- 0x109be, 0x109bf,
-}; /* CR_Meroitic_Cursive */
-
-/* 'Meroitic_Hieroglyphs': Script */
-static const OnigCodePoint CR_Meroitic_Hieroglyphs[] = {
- 1,
- 0x10980, 0x1099f,
-}; /* CR_Meroitic_Hieroglyphs */
-
-/* 'Miao': Script */
-static const OnigCodePoint CR_Miao[] = {
- 3,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
-}; /* CR_Miao */
-
-/* 'Sharada': Script */
-static const OnigCodePoint CR_Sharada[] = {
- 2,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
-}; /* CR_Sharada */
-
-/* 'Sora_Sompeng': Script */
-static const OnigCodePoint CR_Sora_Sompeng[] = {
- 2,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
-}; /* CR_Sora_Sompeng */
-
-/* 'Takri': Script */
-static const OnigCodePoint CR_Takri[] = {
- 2,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
-}; /* CR_Takri */
-
/* 'White_Space': Binary Property */
-#define CR_White_Space CR_Space
+static const OnigCodePoint CR_White_Space[] = {
+ 11,
+ 0x0009, 0x000d,
+ 0x0020, 0x0020,
+ 0x0085, 0x0085,
+ 0x00a0, 0x00a0,
+ 0x1680, 0x1680,
+ 0x180e, 0x180e,
+ 0x2000, 0x200a,
+ 0x2028, 0x2029,
+ 0x202f, 0x202f,
+ 0x205f, 0x205f,
+ 0x3000, 0x3000,
+}; /* CR_White_Space */
/* 'Bidi_Control': Binary Property */
static const OnigCodePoint CR_Bidi_Control[] = {
@@ -17214,7 +13563,7 @@ static const OnigCodePoint CR_Join_Control[] = {
/* 'Dash': Binary Property */
static const OnigCodePoint CR_Dash[] = {
- 20,
+ 19,
0x002d, 0x002d,
0x058a, 0x058a,
0x05be, 0x05be,
@@ -17227,7 +13576,6 @@ static const OnigCodePoint CR_Dash[] = {
0x2212, 0x2212,
0x2e17, 0x2e17,
0x2e1a, 0x2e1a,
- 0x2e3a, 0x2e3b,
0x301c, 0x301c,
0x3030, 0x3030,
0x30a0, 0x30a0,
@@ -17271,7 +13619,7 @@ static const OnigCodePoint CR_Quotation_Mark[] = {
/* 'Terminal_Punctuation': Binary Property */
static const OnigCodePoint CR_Terminal_Punctuation[] = {
- 70,
+ 67,
0x0021, 0x0021,
0x002c, 0x002c,
0x002e, 0x002e,
@@ -17321,7 +13669,6 @@ static const OnigCodePoint CR_Terminal_Punctuation[] = {
0xa9c7, 0xa9c9,
0xaa5d, 0xaa5f,
0xaadf, 0xaadf,
- 0xaaf0, 0xaaf1,
0xabeb, 0xabeb,
0xfe50, 0xfe52,
0xfe54, 0xfe57,
@@ -17339,14 +13686,12 @@ static const OnigCodePoint CR_Terminal_Punctuation[] = {
0x10b3a, 0x10b3f,
0x11047, 0x1104d,
0x110be, 0x110c1,
- 0x11141, 0x11143,
- 0x111c5, 0x111c6,
0x12470, 0x12473,
}; /* CR_Terminal_Punctuation */
/* 'Other_Math': Binary Property */
static const OnigCodePoint CR_Other_Math[] = {
- 133,
+ 100,
0x005e, 0x005e,
0x03d0, 0x03d2,
0x03d5, 0x03d5,
@@ -17447,39 +13792,6 @@ static const OnigCodePoint CR_Other_Math[] = {
0x1d7aa, 0x1d7c2,
0x1d7c4, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
}; /* CR_Other_Math */
/* 'Hex_Digit': Binary Property */
@@ -17494,11 +13806,16 @@ static const OnigCodePoint CR_Hex_Digit[] = {
}; /* CR_Hex_Digit */
/* 'ASCII_Hex_Digit': Binary Property */
-#define CR_ASCII_Hex_Digit CR_XDigit
+static const OnigCodePoint CR_ASCII_Hex_Digit[] = {
+ 3,
+ 0x0030, 0x0039,
+ 0x0041, 0x0046,
+ 0x0061, 0x0066,
+}; /* CR_ASCII_Hex_Digit */
/* 'Other_Alphabetic': Binary Property */
static const OnigCodePoint CR_Other_Alphabetic[] = {
- 158,
+ 145,
0x0345, 0x0345,
0x05b0, 0x05bd,
0x05bf, 0x05bf,
@@ -17520,8 +13837,6 @@ static const OnigCodePoint CR_Other_Alphabetic[] = {
0x081b, 0x0823,
0x0825, 0x0827,
0x0829, 0x082c,
- 0x08e4, 0x08e9,
- 0x08f0, 0x08fe,
0x0900, 0x0903,
0x093a, 0x093b,
0x093e, 0x094c,
@@ -17618,14 +13933,11 @@ static const OnigCodePoint CR_Other_Alphabetic[] = {
0x1b35, 0x1b43,
0x1b80, 0x1b82,
0x1ba1, 0x1ba9,
- 0x1bac, 0x1bad,
0x1be7, 0x1bf1,
0x1c24, 0x1c35,
- 0x1cf2, 0x1cf3,
+ 0x1cf2, 0x1cf2,
0x24b6, 0x24e9,
0x2de0, 0x2dff,
- 0xa674, 0xa67b,
- 0xa69f, 0xa69f,
0xa823, 0xa827,
0xa880, 0xa881,
0xa8b4, 0xa8c3,
@@ -17640,8 +13952,6 @@ static const OnigCodePoint CR_Other_Alphabetic[] = {
0xaab2, 0xaab4,
0xaab7, 0xaab8,
0xaabe, 0xaabe,
- 0xaaeb, 0xaaef,
- 0xaaf5, 0xaaf5,
0xabe3, 0xabea,
0xfb1e, 0xfb1e,
0x10a01, 0x10a03,
@@ -17651,23 +13961,18 @@ static const OnigCodePoint CR_Other_Alphabetic[] = {
0x11038, 0x11045,
0x11082, 0x11082,
0x110b0, 0x110b8,
- 0x11100, 0x11102,
- 0x11127, 0x11132,
- 0x11180, 0x11182,
- 0x111b3, 0x111bf,
- 0x116ab, 0x116b5,
- 0x16f51, 0x16f7e,
}; /* CR_Other_Alphabetic */
/* 'Ideographic': Binary Property */
static const OnigCodePoint CR_Ideographic[] = {
- 11,
+ 12,
0x3006, 0x3007,
0x3021, 0x3029,
0x3038, 0x303a,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
- 0xf900, 0xfa6d,
+ 0x4e00, 0x9fcb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0x20000, 0x2a6d6,
0x2a700, 0x2b734,
@@ -17677,7 +13982,7 @@ static const OnigCodePoint CR_Ideographic[] = {
/* 'Diacritic': Binary Property */
static const OnigCodePoint CR_Diacritic[] = {
- 125,
+ 117,
0x005e, 0x005e,
0x0060, 0x0060,
0x00a8, 0x00a8,
@@ -17706,7 +14011,6 @@ static const OnigCodePoint CR_Diacritic[] = {
0x07a6, 0x07b0,
0x07eb, 0x07f5,
0x0818, 0x0819,
- 0x08e4, 0x08fe,
0x093c, 0x093c,
0x094d, 0x094d,
0x0951, 0x0954,
@@ -17749,12 +14053,11 @@ static const OnigCodePoint CR_Diacritic[] = {
0x1b34, 0x1b34,
0x1b44, 0x1b44,
0x1b6b, 0x1b73,
- 0x1baa, 0x1bab,
+ 0x1baa, 0x1baa,
0x1c36, 0x1c37,
0x1c78, 0x1c7d,
0x1cd0, 0x1ce8,
0x1ced, 0x1ced,
- 0x1cf4, 0x1cf4,
0x1d2c, 0x1d6a,
0x1dc4, 0x1dcf,
0x1dfd, 0x1dff,
@@ -17775,7 +14078,6 @@ static const OnigCodePoint CR_Diacritic[] = {
0xa6f0, 0xa6f1,
0xa717, 0xa721,
0xa788, 0xa788,
- 0xa7f8, 0xa7f9,
0xa8c4, 0xa8c4,
0xa8e0, 0xa8f1,
0xa92b, 0xa92e,
@@ -17784,7 +14086,6 @@ static const OnigCodePoint CR_Diacritic[] = {
0xa9c0, 0xa9c0,
0xaa7b, 0xaa7b,
0xaabf, 0xaac2,
- 0xaaf6, 0xaaf6,
0xabec, 0xabed,
0xfb1e, 0xfb1e,
0xfe20, 0xfe26,
@@ -17794,10 +14095,6 @@ static const OnigCodePoint CR_Diacritic[] = {
0xff9e, 0xff9f,
0xffe3, 0xffe3,
0x110b9, 0x110ba,
- 0x11133, 0x11134,
- 0x111c0, 0x111c0,
- 0x116b6, 0x116b7,
- 0x16f8f, 0x16f9f,
0x1d167, 0x1d169,
0x1d16d, 0x1d172,
0x1d17b, 0x1d182,
@@ -17807,14 +14104,13 @@ static const OnigCodePoint CR_Diacritic[] = {
/* 'Extender': Binary Property */
static const OnigCodePoint CR_Extender[] = {
- 22,
+ 20,
0x00b7, 0x00b7,
0x02d0, 0x02d1,
0x0640, 0x0640,
0x07fa, 0x07fa,
0x0e46, 0x0e46,
0x0ec6, 0x0ec6,
- 0x180a, 0x180a,
0x1843, 0x1843,
0x1aa7, 0x1aa7,
0x1c36, 0x1c36,
@@ -17828,31 +14124,25 @@ static const OnigCodePoint CR_Extender[] = {
0xa9cf, 0xa9cf,
0xaa70, 0xaa70,
0xaadd, 0xaadd,
- 0xaaf3, 0xaaf4,
0xff70, 0xff70,
}; /* CR_Extender */
/* 'Other_Lowercase': Binary Property */
static const OnigCodePoint CR_Other_Lowercase[] = {
- 18,
- 0x00aa, 0x00aa,
- 0x00ba, 0x00ba,
+ 13,
0x02b0, 0x02b8,
0x02c0, 0x02c1,
0x02e0, 0x02e4,
0x0345, 0x0345,
0x037a, 0x037a,
- 0x1d2c, 0x1d6a,
+ 0x1d2c, 0x1d61,
0x1d78, 0x1d78,
0x1d9b, 0x1dbf,
- 0x2071, 0x2071,
- 0x207f, 0x207f,
- 0x2090, 0x209c,
+ 0x2090, 0x2094,
0x2170, 0x217f,
0x24d0, 0x24e9,
- 0x2c7c, 0x2c7d,
+ 0x2c7d, 0x2c7d,
0xa770, 0xa770,
- 0xa7f8, 0xa7f9,
}; /* CR_Other_Lowercase */
/* 'Other_Uppercase': Binary Property */
@@ -17887,7 +14177,7 @@ static const OnigCodePoint CR_Noncharacter_Code_Point[] = {
/* 'Other_Grapheme_Extend': Binary Property */
static const OnigCodePoint CR_Other_Grapheme_Extend[] = {
- 17,
+ 16,
0x09be, 0x09be,
0x09d7, 0x09d7,
0x0b3e, 0x0b3e,
@@ -17901,7 +14191,6 @@ static const OnigCodePoint CR_Other_Grapheme_Extend[] = {
0x0dcf, 0x0dcf,
0x0ddf, 0x0ddf,
0x200c, 0x200d,
- 0x302e, 0x302f,
0xff9e, 0xff9f,
0x1d165, 0x1d165,
0x1d16e, 0x1d172,
@@ -17932,7 +14221,7 @@ static const OnigCodePoint CR_Radical[] = {
static const OnigCodePoint CR_Unified_Ideograph[] = {
12,
0x3400, 0x4db5,
- 0x4e00, 0x9fcc,
+ 0x4e00, 0x9fcb,
0xfa0e, 0xfa0f,
0xfa11, 0xfa11,
0xfa13, 0xfa14,
@@ -17947,10 +14236,9 @@ static const OnigCodePoint CR_Unified_Ideograph[] = {
/* 'Other_Default_Ignorable_Code_Point': Binary Property */
static const OnigCodePoint CR_Other_Default_Ignorable_Code_Point[] = {
- 11,
+ 10,
0x034f, 0x034f,
0x115f, 0x1160,
- 0x17b4, 0x17b5,
0x2065, 0x2069,
0x3164, 0x3164,
0xffa0, 0xffa0,
@@ -18040,7 +14328,7 @@ static const OnigCodePoint CR_Other_ID_Continue[] = {
/* 'STerm': Binary Property */
static const OnigCodePoint CR_STerm[] = {
- 50,
+ 47,
0x0021, 0x0021,
0x002e, 0x002e,
0x003f, 0x003f,
@@ -18078,7 +14366,6 @@ static const OnigCodePoint CR_STerm[] = {
0xa92f, 0xa92f,
0xa9c8, 0xa9c9,
0xaa5d, 0xaa5f,
- 0xaaf0, 0xaaf1,
0xabeb, 0xabeb,
0xfe52, 0xfe52,
0xfe56, 0xfe57,
@@ -18089,8 +14376,6 @@ static const OnigCodePoint CR_STerm[] = {
0x10a56, 0x10a57,
0x11047, 0x11048,
0x110be, 0x110c1,
- 0x11141, 0x11143,
- 0x111c5, 0x111c6,
}; /* CR_STerm */
/* 'Variation_Selector': Binary Property */
@@ -18146,7 +14431,7 @@ static const OnigCodePoint CR_Pattern_Syntax[] = {
/* 'Unknown': Script */
static const OnigCodePoint CR_Unknown[] = {
- 537,
+ 499,
0x0378, 0x0379,
0x037f, 0x0383,
0x038b, 0x038b,
@@ -18156,12 +14441,11 @@ static const OnigCodePoint CR_Unknown[] = {
0x0557, 0x0558,
0x0560, 0x0560,
0x0588, 0x0588,
- 0x058b, 0x058e,
- 0x0590, 0x0590,
+ 0x058b, 0x0590,
0x05c8, 0x05cf,
0x05eb, 0x05ef,
0x05f5, 0x05ff,
- 0x0605, 0x0605,
+ 0x0604, 0x0605,
0x061c, 0x061d,
0x070e, 0x070e,
0x074b, 0x074c,
@@ -18170,10 +14454,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x082e, 0x082f,
0x083f, 0x083f,
0x085c, 0x085d,
- 0x085f, 0x089f,
- 0x08a1, 0x08a1,
- 0x08ad, 0x08e3,
- 0x08ff, 0x08ff,
+ 0x085f, 0x08ff,
0x0978, 0x0978,
0x0980, 0x0980,
0x0984, 0x0984,
@@ -18218,6 +14499,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x0ace, 0x0acf,
0x0ad1, 0x0adf,
0x0ae4, 0x0ae5,
+ 0x0af0, 0x0af0,
0x0af2, 0x0b00,
0x0b04, 0x0b04,
0x0b0d, 0x0b0e,
@@ -18318,16 +14600,15 @@ static const OnigCodePoint CR_Unknown[] = {
0x0ec7, 0x0ec7,
0x0ece, 0x0ecf,
0x0eda, 0x0edb,
- 0x0ee0, 0x0eff,
+ 0x0ede, 0x0eff,
0x0f48, 0x0f48,
0x0f6d, 0x0f70,
0x0f98, 0x0f98,
0x0fbd, 0x0fbd,
0x0fcd, 0x0fcd,
0x0fdb, 0x0fff,
- 0x10c6, 0x10c6,
- 0x10c8, 0x10cc,
- 0x10ce, 0x10cf,
+ 0x10c6, 0x10cf,
+ 0x10fd, 0x10ff,
0x1249, 0x1249,
0x124e, 0x124f,
0x1257, 0x1257,
@@ -18381,12 +14662,13 @@ static const OnigCodePoint CR_Unknown[] = {
0x1aae, 0x1aff,
0x1b4c, 0x1b4f,
0x1b7d, 0x1b7f,
+ 0x1bab, 0x1bad,
+ 0x1bba, 0x1bbf,
0x1bf4, 0x1bfb,
0x1c38, 0x1c3a,
0x1c4a, 0x1c4c,
- 0x1c80, 0x1cbf,
- 0x1cc8, 0x1ccf,
- 0x1cf7, 0x1cff,
+ 0x1c80, 0x1ccf,
+ 0x1cf3, 0x1cff,
0x1de7, 0x1dfb,
0x1f16, 0x1f17,
0x1f1e, 0x1f1f,
@@ -18415,15 +14697,15 @@ static const OnigCodePoint CR_Unknown[] = {
0x2427, 0x243f,
0x244b, 0x245f,
0x2700, 0x2700,
+ 0x27cb, 0x27cb,
+ 0x27cd, 0x27cd,
0x2b4d, 0x2b4f,
0x2b5a, 0x2bff,
0x2c2f, 0x2c2f,
0x2c5f, 0x2c5f,
- 0x2cf4, 0x2cf8,
- 0x2d26, 0x2d26,
- 0x2d28, 0x2d2c,
- 0x2d2e, 0x2d2f,
- 0x2d68, 0x2d6e,
+ 0x2cf2, 0x2cf8,
+ 0x2d26, 0x2d2f,
+ 0x2d66, 0x2d6e,
0x2d71, 0x2d7e,
0x2d97, 0x2d9f,
0x2da7, 0x2da7,
@@ -18434,7 +14716,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x2dcf, 0x2dcf,
0x2dd7, 0x2dd7,
0x2ddf, 0x2ddf,
- 0x2e3c, 0x2e7f,
+ 0x2e32, 0x2e7f,
0x2e9a, 0x2e9a,
0x2ef4, 0x2eff,
0x2fd6, 0x2fef,
@@ -18449,15 +14731,16 @@ static const OnigCodePoint CR_Unknown[] = {
0x321f, 0x321f,
0x32ff, 0x32ff,
0x4db6, 0x4dbf,
- 0x9fcd, 0x9fff,
+ 0x9fcc, 0x9fff,
0xa48d, 0xa48f,
0xa4c7, 0xa4cf,
0xa62c, 0xa63f,
- 0xa698, 0xa69e,
+ 0xa674, 0xa67b,
+ 0xa698, 0xa69f,
0xa6f8, 0xa6ff,
0xa78f, 0xa78f,
- 0xa794, 0xa79f,
- 0xa7ab, 0xa7f7,
+ 0xa792, 0xa79f,
+ 0xa7aa, 0xa7f9,
0xa82c, 0xa82f,
0xa83a, 0xa83f,
0xa878, 0xa87f,
@@ -18474,7 +14757,7 @@ static const OnigCodePoint CR_Unknown[] = {
0xaa5a, 0xaa5b,
0xaa7c, 0xaa7f,
0xaac3, 0xaada,
- 0xaaf7, 0xab00,
+ 0xaae0, 0xab00,
0xab07, 0xab08,
0xab0f, 0xab10,
0xab17, 0xab1f,
@@ -18485,6 +14768,7 @@ static const OnigCodePoint CR_Unknown[] = {
0xd7a4, 0xd7af,
0xd7c7, 0xd7ca,
0xd7fc, 0xf8ff,
+ 0xfa2e, 0xfa2f,
0xfa6e, 0xfa6f,
0xfada, 0xfaff,
0xfb07, 0xfb12,
@@ -18546,9 +14830,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x10860, 0x108ff,
0x1091c, 0x1091e,
0x1093a, 0x1093e,
- 0x10940, 0x1097f,
- 0x109b8, 0x109bd,
- 0x109c0, 0x109ff,
+ 0x10940, 0x109ff,
0x10a04, 0x10a04,
0x10a07, 0x10a0b,
0x10a14, 0x10a14,
@@ -18566,23 +14848,12 @@ static const OnigCodePoint CR_Unknown[] = {
0x10e7f, 0x10fff,
0x1104e, 0x11051,
0x11070, 0x1107f,
- 0x110c2, 0x110cf,
- 0x110e9, 0x110ef,
- 0x110fa, 0x110ff,
- 0x11135, 0x11135,
- 0x11144, 0x1117f,
- 0x111c9, 0x111cf,
- 0x111da, 0x1167f,
- 0x116b8, 0x116bf,
- 0x116ca, 0x11fff,
+ 0x110c2, 0x11fff,
0x1236f, 0x123ff,
0x12463, 0x1246f,
0x12474, 0x12fff,
0x1342f, 0x167ff,
- 0x16a39, 0x16eff,
- 0x16f45, 0x16f4f,
- 0x16f7f, 0x16f8e,
- 0x16fa0, 0x1afff,
+ 0x16a39, 0x1afff,
0x1b002, 0x1cfff,
0x1d0f6, 0x1d0ff,
0x1d127, 0x1d128,
@@ -18610,41 +14881,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x1d551, 0x1d551,
0x1d6a6, 0x1d6a7,
0x1d7cc, 0x1d7cd,
- 0x1d800, 0x1edff,
- 0x1ee04, 0x1ee04,
- 0x1ee20, 0x1ee20,
- 0x1ee23, 0x1ee23,
- 0x1ee25, 0x1ee26,
- 0x1ee28, 0x1ee28,
- 0x1ee33, 0x1ee33,
- 0x1ee38, 0x1ee38,
- 0x1ee3a, 0x1ee3a,
- 0x1ee3c, 0x1ee41,
- 0x1ee43, 0x1ee46,
- 0x1ee48, 0x1ee48,
- 0x1ee4a, 0x1ee4a,
- 0x1ee4c, 0x1ee4c,
- 0x1ee50, 0x1ee50,
- 0x1ee53, 0x1ee53,
- 0x1ee55, 0x1ee56,
- 0x1ee58, 0x1ee58,
- 0x1ee5a, 0x1ee5a,
- 0x1ee5c, 0x1ee5c,
- 0x1ee5e, 0x1ee5e,
- 0x1ee60, 0x1ee60,
- 0x1ee63, 0x1ee63,
- 0x1ee65, 0x1ee66,
- 0x1ee6b, 0x1ee6b,
- 0x1ee73, 0x1ee73,
- 0x1ee78, 0x1ee78,
- 0x1ee7d, 0x1ee7d,
- 0x1ee7f, 0x1ee7f,
- 0x1ee8a, 0x1ee8a,
- 0x1ee9c, 0x1eea0,
- 0x1eea4, 0x1eea4,
- 0x1eeaa, 0x1eeaa,
- 0x1eebc, 0x1eeef,
- 0x1eef2, 0x1efff,
+ 0x1d800, 0x1efff,
0x1f02c, 0x1f02f,
0x1f094, 0x1f09f,
0x1f0af, 0x1f0b0,
@@ -18653,7 +14890,7 @@ static const OnigCodePoint CR_Unknown[] = {
0x1f0e0, 0x1f0ff,
0x1f10b, 0x1f10f,
0x1f12f, 0x1f12f,
- 0x1f16c, 0x1f16f,
+ 0x1f16a, 0x1f16f,
0x1f19b, 0x1f1e5,
0x1f203, 0x1f20f,
0x1f23b, 0x1f23f,
@@ -18670,9 +14907,19 @@ static const OnigCodePoint CR_Unknown[] = {
0x1f441, 0x1f441,
0x1f4f8, 0x1f4f8,
0x1f4fd, 0x1f4ff,
- 0x1f53e, 0x1f53f,
- 0x1f544, 0x1f54f,
+ 0x1f53e, 0x1f54f,
0x1f568, 0x1f5fa,
+ 0x1f600, 0x1f600,
+ 0x1f611, 0x1f611,
+ 0x1f615, 0x1f615,
+ 0x1f617, 0x1f617,
+ 0x1f619, 0x1f619,
+ 0x1f61b, 0x1f61b,
+ 0x1f61f, 0x1f61f,
+ 0x1f626, 0x1f627,
+ 0x1f62c, 0x1f62c,
+ 0x1f62e, 0x1f62f,
+ 0x1f634, 0x1f634,
0x1f641, 0x1f644,
0x1f650, 0x1f67f,
0x1f6c6, 0x1f6ff,
@@ -18685,6 +14932,7 @@ static const OnigCodePoint CR_Unknown[] = {
0xe0080, 0xe00ff,
0xe01f0, 0x10ffff,
}; /* CR_Unknown */
+#endif /* USE_UNICODE_PROPERTIES */
/* 'Age_1_1': Derived Age 1.1 */
static const OnigCodePoint CR_Age_1_1[] = {
@@ -23569,10 +19817,554 @@ static const OnigCodePoint CR_Age_6_0[] = {
0xefffe, 0x10ffff,
}; /* CR_Age_6_0 */
-/* 'Age_6_1': Derived Age 6.1 */
-static const OnigCodePoint CR_Age_6_1[] = {
- 549,
- 0x0000, 0x0377,
+/* 'NEWLINE': [[:NEWLINE:]] */
+static const OnigCodePoint CR_NEWLINE[] = {
+ 1,
+ 0x000a, 0x000a,
+}; /* CR_NEWLINE */
+
+/* 'Alpha': [[:Alpha:]] */
+#define CR_Alpha CR_Alphabetic
+
+/* 'Blank': [[:Blank:]] */
+static const OnigCodePoint CR_Blank[] = {
+ 9,
+ 0x0009, 0x0009,
+ 0x0020, 0x0020,
+ 0x00a0, 0x00a0,
+ 0x1680, 0x1680,
+ 0x180e, 0x180e,
+ 0x2000, 0x200a,
+ 0x202f, 0x202f,
+ 0x205f, 0x205f,
+ 0x3000, 0x3000,
+}; /* CR_Blank */
+
+/* 'Cntrl': [[:Cntrl:]] */
+#define CR_Cntrl CR_Cc
+
+/* 'Digit': [[:Digit:]] */
+#define CR_Digit CR_Nd
+
+/* 'Graph': [[:Graph:]] */
+static const OnigCodePoint CR_Graph[] = {
+ 506,
+ 0x0021, 0x007e,
+ 0x00a1, 0x0377,
+ 0x037a, 0x037e,
+ 0x0384, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x03a1,
+ 0x03a3, 0x0527,
+ 0x0531, 0x0556,
+ 0x0559, 0x055f,
+ 0x0561, 0x0587,
+ 0x0589, 0x058a,
+ 0x0591, 0x05c7,
+ 0x05d0, 0x05ea,
+ 0x05f0, 0x05f4,
+ 0x0600, 0x0603,
+ 0x0606, 0x061b,
+ 0x061e, 0x070d,
+ 0x070f, 0x074a,
+ 0x074d, 0x07b1,
+ 0x07c0, 0x07fa,
+ 0x0800, 0x082d,
+ 0x0830, 0x083e,
+ 0x0840, 0x085b,
+ 0x085e, 0x085e,
+ 0x0900, 0x0977,
+ 0x0979, 0x097f,
+ 0x0981, 0x0983,
+ 0x0985, 0x098c,
+ 0x098f, 0x0990,
+ 0x0993, 0x09a8,
+ 0x09aa, 0x09b0,
+ 0x09b2, 0x09b2,
+ 0x09b6, 0x09b9,
+ 0x09bc, 0x09c4,
+ 0x09c7, 0x09c8,
+ 0x09cb, 0x09ce,
+ 0x09d7, 0x09d7,
+ 0x09dc, 0x09dd,
+ 0x09df, 0x09e3,
+ 0x09e6, 0x09fb,
+ 0x0a01, 0x0a03,
+ 0x0a05, 0x0a0a,
+ 0x0a0f, 0x0a10,
+ 0x0a13, 0x0a28,
+ 0x0a2a, 0x0a30,
+ 0x0a32, 0x0a33,
+ 0x0a35, 0x0a36,
+ 0x0a38, 0x0a39,
+ 0x0a3c, 0x0a3c,
+ 0x0a3e, 0x0a42,
+ 0x0a47, 0x0a48,
+ 0x0a4b, 0x0a4d,
+ 0x0a51, 0x0a51,
+ 0x0a59, 0x0a5c,
+ 0x0a5e, 0x0a5e,
+ 0x0a66, 0x0a75,
+ 0x0a81, 0x0a83,
+ 0x0a85, 0x0a8d,
+ 0x0a8f, 0x0a91,
+ 0x0a93, 0x0aa8,
+ 0x0aaa, 0x0ab0,
+ 0x0ab2, 0x0ab3,
+ 0x0ab5, 0x0ab9,
+ 0x0abc, 0x0ac5,
+ 0x0ac7, 0x0ac9,
+ 0x0acb, 0x0acd,
+ 0x0ad0, 0x0ad0,
+ 0x0ae0, 0x0ae3,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
+ 0x0b01, 0x0b03,
+ 0x0b05, 0x0b0c,
+ 0x0b0f, 0x0b10,
+ 0x0b13, 0x0b28,
+ 0x0b2a, 0x0b30,
+ 0x0b32, 0x0b33,
+ 0x0b35, 0x0b39,
+ 0x0b3c, 0x0b44,
+ 0x0b47, 0x0b48,
+ 0x0b4b, 0x0b4d,
+ 0x0b56, 0x0b57,
+ 0x0b5c, 0x0b5d,
+ 0x0b5f, 0x0b63,
+ 0x0b66, 0x0b77,
+ 0x0b82, 0x0b83,
+ 0x0b85, 0x0b8a,
+ 0x0b8e, 0x0b90,
+ 0x0b92, 0x0b95,
+ 0x0b99, 0x0b9a,
+ 0x0b9c, 0x0b9c,
+ 0x0b9e, 0x0b9f,
+ 0x0ba3, 0x0ba4,
+ 0x0ba8, 0x0baa,
+ 0x0bae, 0x0bb9,
+ 0x0bbe, 0x0bc2,
+ 0x0bc6, 0x0bc8,
+ 0x0bca, 0x0bcd,
+ 0x0bd0, 0x0bd0,
+ 0x0bd7, 0x0bd7,
+ 0x0be6, 0x0bfa,
+ 0x0c01, 0x0c03,
+ 0x0c05, 0x0c0c,
+ 0x0c0e, 0x0c10,
+ 0x0c12, 0x0c28,
+ 0x0c2a, 0x0c33,
+ 0x0c35, 0x0c39,
+ 0x0c3d, 0x0c44,
+ 0x0c46, 0x0c48,
+ 0x0c4a, 0x0c4d,
+ 0x0c55, 0x0c56,
+ 0x0c58, 0x0c59,
+ 0x0c60, 0x0c63,
+ 0x0c66, 0x0c6f,
+ 0x0c78, 0x0c7f,
+ 0x0c82, 0x0c83,
+ 0x0c85, 0x0c8c,
+ 0x0c8e, 0x0c90,
+ 0x0c92, 0x0ca8,
+ 0x0caa, 0x0cb3,
+ 0x0cb5, 0x0cb9,
+ 0x0cbc, 0x0cc4,
+ 0x0cc6, 0x0cc8,
+ 0x0cca, 0x0ccd,
+ 0x0cd5, 0x0cd6,
+ 0x0cde, 0x0cde,
+ 0x0ce0, 0x0ce3,
+ 0x0ce6, 0x0cef,
+ 0x0cf1, 0x0cf2,
+ 0x0d02, 0x0d03,
+ 0x0d05, 0x0d0c,
+ 0x0d0e, 0x0d10,
+ 0x0d12, 0x0d3a,
+ 0x0d3d, 0x0d44,
+ 0x0d46, 0x0d48,
+ 0x0d4a, 0x0d4e,
+ 0x0d57, 0x0d57,
+ 0x0d60, 0x0d63,
+ 0x0d66, 0x0d75,
+ 0x0d79, 0x0d7f,
+ 0x0d82, 0x0d83,
+ 0x0d85, 0x0d96,
+ 0x0d9a, 0x0db1,
+ 0x0db3, 0x0dbb,
+ 0x0dbd, 0x0dbd,
+ 0x0dc0, 0x0dc6,
+ 0x0dca, 0x0dca,
+ 0x0dcf, 0x0dd4,
+ 0x0dd6, 0x0dd6,
+ 0x0dd8, 0x0ddf,
+ 0x0df2, 0x0df4,
+ 0x0e01, 0x0e3a,
+ 0x0e3f, 0x0e5b,
+ 0x0e81, 0x0e82,
+ 0x0e84, 0x0e84,
+ 0x0e87, 0x0e88,
+ 0x0e8a, 0x0e8a,
+ 0x0e8d, 0x0e8d,
+ 0x0e94, 0x0e97,
+ 0x0e99, 0x0e9f,
+ 0x0ea1, 0x0ea3,
+ 0x0ea5, 0x0ea5,
+ 0x0ea7, 0x0ea7,
+ 0x0eaa, 0x0eab,
+ 0x0ead, 0x0eb9,
+ 0x0ebb, 0x0ebd,
+ 0x0ec0, 0x0ec4,
+ 0x0ec6, 0x0ec6,
+ 0x0ec8, 0x0ecd,
+ 0x0ed0, 0x0ed9,
+ 0x0edc, 0x0edd,
+ 0x0f00, 0x0f47,
+ 0x0f49, 0x0f6c,
+ 0x0f71, 0x0f97,
+ 0x0f99, 0x0fbc,
+ 0x0fbe, 0x0fcc,
+ 0x0fce, 0x0fda,
+ 0x1000, 0x10c5,
+ 0x10d0, 0x10fc,
+ 0x1100, 0x1248,
+ 0x124a, 0x124d,
+ 0x1250, 0x1256,
+ 0x1258, 0x1258,
+ 0x125a, 0x125d,
+ 0x1260, 0x1288,
+ 0x128a, 0x128d,
+ 0x1290, 0x12b0,
+ 0x12b2, 0x12b5,
+ 0x12b8, 0x12be,
+ 0x12c0, 0x12c0,
+ 0x12c2, 0x12c5,
+ 0x12c8, 0x12d6,
+ 0x12d8, 0x1310,
+ 0x1312, 0x1315,
+ 0x1318, 0x135a,
+ 0x135d, 0x137c,
+ 0x1380, 0x1399,
+ 0x13a0, 0x13f4,
+ 0x1400, 0x167f,
+ 0x1681, 0x169c,
+ 0x16a0, 0x16f0,
+ 0x1700, 0x170c,
+ 0x170e, 0x1714,
+ 0x1720, 0x1736,
+ 0x1740, 0x1753,
+ 0x1760, 0x176c,
+ 0x176e, 0x1770,
+ 0x1772, 0x1773,
+ 0x1780, 0x17dd,
+ 0x17e0, 0x17e9,
+ 0x17f0, 0x17f9,
+ 0x1800, 0x180d,
+ 0x1810, 0x1819,
+ 0x1820, 0x1877,
+ 0x1880, 0x18aa,
+ 0x18b0, 0x18f5,
+ 0x1900, 0x191c,
+ 0x1920, 0x192b,
+ 0x1930, 0x193b,
+ 0x1940, 0x1940,
+ 0x1944, 0x196d,
+ 0x1970, 0x1974,
+ 0x1980, 0x19ab,
+ 0x19b0, 0x19c9,
+ 0x19d0, 0x19da,
+ 0x19de, 0x1a1b,
+ 0x1a1e, 0x1a5e,
+ 0x1a60, 0x1a7c,
+ 0x1a7f, 0x1a89,
+ 0x1a90, 0x1a99,
+ 0x1aa0, 0x1aad,
+ 0x1b00, 0x1b4b,
+ 0x1b50, 0x1b7c,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
+ 0x1bfc, 0x1c37,
+ 0x1c3b, 0x1c49,
+ 0x1c4d, 0x1c7f,
+ 0x1cd0, 0x1cf2,
+ 0x1d00, 0x1de6,
+ 0x1dfc, 0x1f15,
+ 0x1f18, 0x1f1d,
+ 0x1f20, 0x1f45,
+ 0x1f48, 0x1f4d,
+ 0x1f50, 0x1f57,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f7d,
+ 0x1f80, 0x1fb4,
+ 0x1fb6, 0x1fc4,
+ 0x1fc6, 0x1fd3,
+ 0x1fd6, 0x1fdb,
+ 0x1fdd, 0x1fef,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ffe,
+ 0x200b, 0x2027,
+ 0x202a, 0x202e,
+ 0x2030, 0x205e,
+ 0x2060, 0x2064,
+ 0x206a, 0x2071,
+ 0x2074, 0x208e,
+ 0x2090, 0x209c,
+ 0x20a0, 0x20b9,
+ 0x20d0, 0x20f0,
+ 0x2100, 0x2189,
+ 0x2190, 0x23f3,
+ 0x2400, 0x2426,
+ 0x2440, 0x244a,
+ 0x2460, 0x26ff,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x2b4c,
+ 0x2b50, 0x2b59,
+ 0x2c00, 0x2c2e,
+ 0x2c30, 0x2c5e,
+ 0x2c60, 0x2cf1,
+ 0x2cf9, 0x2d25,
+ 0x2d30, 0x2d65,
+ 0x2d6f, 0x2d70,
+ 0x2d7f, 0x2d96,
+ 0x2da0, 0x2da6,
+ 0x2da8, 0x2dae,
+ 0x2db0, 0x2db6,
+ 0x2db8, 0x2dbe,
+ 0x2dc0, 0x2dc6,
+ 0x2dc8, 0x2dce,
+ 0x2dd0, 0x2dd6,
+ 0x2dd8, 0x2dde,
+ 0x2de0, 0x2e31,
+ 0x2e80, 0x2e99,
+ 0x2e9b, 0x2ef3,
+ 0x2f00, 0x2fd5,
+ 0x2ff0, 0x2ffb,
+ 0x3001, 0x303f,
+ 0x3041, 0x3096,
+ 0x3099, 0x30ff,
+ 0x3105, 0x312d,
+ 0x3131, 0x318e,
+ 0x3190, 0x31ba,
+ 0x31c0, 0x31e3,
+ 0x31f0, 0x321e,
+ 0x3220, 0x32fe,
+ 0x3300, 0x4db5,
+ 0x4dc0, 0x9fcb,
+ 0xa000, 0xa48c,
+ 0xa490, 0xa4c6,
+ 0xa4d0, 0xa62b,
+ 0xa640, 0xa673,
+ 0xa67c, 0xa697,
+ 0xa6a0, 0xa6f7,
+ 0xa700, 0xa78e,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa82b,
+ 0xa830, 0xa839,
+ 0xa840, 0xa877,
+ 0xa880, 0xa8c4,
+ 0xa8ce, 0xa8d9,
+ 0xa8e0, 0xa8fb,
+ 0xa900, 0xa953,
+ 0xa95f, 0xa97c,
+ 0xa980, 0xa9cd,
+ 0xa9cf, 0xa9d9,
+ 0xa9de, 0xa9df,
+ 0xaa00, 0xaa36,
+ 0xaa40, 0xaa4d,
+ 0xaa50, 0xaa59,
+ 0xaa5c, 0xaa7b,
+ 0xaa80, 0xaac2,
+ 0xaadb, 0xaadf,
+ 0xab01, 0xab06,
+ 0xab09, 0xab0e,
+ 0xab11, 0xab16,
+ 0xab20, 0xab26,
+ 0xab28, 0xab2e,
+ 0xabc0, 0xabed,
+ 0xabf0, 0xabf9,
+ 0xac00, 0xd7a3,
+ 0xd7b0, 0xd7c6,
+ 0xd7cb, 0xd7fb,
+ 0xe000, 0xfa2d,
+ 0xfa30, 0xfa6d,
+ 0xfa70, 0xfad9,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xfb1d, 0xfb36,
+ 0xfb38, 0xfb3c,
+ 0xfb3e, 0xfb3e,
+ 0xfb40, 0xfb41,
+ 0xfb43, 0xfb44,
+ 0xfb46, 0xfbc1,
+ 0xfbd3, 0xfd3f,
+ 0xfd50, 0xfd8f,
+ 0xfd92, 0xfdc7,
+ 0xfdf0, 0xfdfd,
+ 0xfe00, 0xfe19,
+ 0xfe20, 0xfe26,
+ 0xfe30, 0xfe52,
+ 0xfe54, 0xfe66,
+ 0xfe68, 0xfe6b,
+ 0xfe70, 0xfe74,
+ 0xfe76, 0xfefc,
+ 0xfeff, 0xfeff,
+ 0xff01, 0xffbe,
+ 0xffc2, 0xffc7,
+ 0xffca, 0xffcf,
+ 0xffd2, 0xffd7,
+ 0xffda, 0xffdc,
+ 0xffe0, 0xffe6,
+ 0xffe8, 0xffee,
+ 0xfff9, 0xfffd,
+ 0x10000, 0x1000b,
+ 0x1000d, 0x10026,
+ 0x10028, 0x1003a,
+ 0x1003c, 0x1003d,
+ 0x1003f, 0x1004d,
+ 0x10050, 0x1005d,
+ 0x10080, 0x100fa,
+ 0x10100, 0x10102,
+ 0x10107, 0x10133,
+ 0x10137, 0x1018a,
+ 0x10190, 0x1019b,
+ 0x101d0, 0x101fd,
+ 0x10280, 0x1029c,
+ 0x102a0, 0x102d0,
+ 0x10300, 0x1031e,
+ 0x10320, 0x10323,
+ 0x10330, 0x1034a,
+ 0x10380, 0x1039d,
+ 0x1039f, 0x103c3,
+ 0x103c8, 0x103d5,
+ 0x10400, 0x1049d,
+ 0x104a0, 0x104a9,
+ 0x10800, 0x10805,
+ 0x10808, 0x10808,
+ 0x1080a, 0x10835,
+ 0x10837, 0x10838,
+ 0x1083c, 0x1083c,
+ 0x1083f, 0x10855,
+ 0x10857, 0x1085f,
+ 0x10900, 0x1091b,
+ 0x1091f, 0x10939,
+ 0x1093f, 0x1093f,
+ 0x10a00, 0x10a03,
+ 0x10a05, 0x10a06,
+ 0x10a0c, 0x10a13,
+ 0x10a15, 0x10a17,
+ 0x10a19, 0x10a33,
+ 0x10a38, 0x10a3a,
+ 0x10a3f, 0x10a47,
+ 0x10a50, 0x10a58,
+ 0x10a60, 0x10a7f,
+ 0x10b00, 0x10b35,
+ 0x10b39, 0x10b55,
+ 0x10b58, 0x10b72,
+ 0x10b78, 0x10b7f,
+ 0x10c00, 0x10c48,
+ 0x10e60, 0x10e7e,
+ 0x11000, 0x1104d,
+ 0x11052, 0x1106f,
+ 0x11080, 0x110c1,
+ 0x12000, 0x1236e,
+ 0x12400, 0x12462,
+ 0x12470, 0x12473,
+ 0x13000, 0x1342e,
+ 0x16800, 0x16a38,
+ 0x1b000, 0x1b001,
+ 0x1d000, 0x1d0f5,
+ 0x1d100, 0x1d126,
+ 0x1d129, 0x1d1dd,
+ 0x1d200, 0x1d245,
+ 0x1d300, 0x1d356,
+ 0x1d360, 0x1d371,
+ 0x1d400, 0x1d454,
+ 0x1d456, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d51e, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d552, 0x1d6a5,
+ 0x1d6a8, 0x1d7cb,
+ 0x1d7ce, 0x1d7ff,
+ 0x1f000, 0x1f02b,
+ 0x1f030, 0x1f093,
+ 0x1f0a0, 0x1f0ae,
+ 0x1f0b1, 0x1f0be,
+ 0x1f0c1, 0x1f0cf,
+ 0x1f0d1, 0x1f0df,
+ 0x1f100, 0x1f10a,
+ 0x1f110, 0x1f12e,
+ 0x1f130, 0x1f169,
+ 0x1f170, 0x1f19a,
+ 0x1f1e6, 0x1f202,
+ 0x1f210, 0x1f23a,
+ 0x1f240, 0x1f248,
+ 0x1f250, 0x1f251,
+ 0x1f300, 0x1f320,
+ 0x1f330, 0x1f335,
+ 0x1f337, 0x1f37c,
+ 0x1f380, 0x1f393,
+ 0x1f3a0, 0x1f3c4,
+ 0x1f3c6, 0x1f3ca,
+ 0x1f3e0, 0x1f3f0,
+ 0x1f400, 0x1f43e,
+ 0x1f440, 0x1f440,
+ 0x1f442, 0x1f4f7,
+ 0x1f4f9, 0x1f4fc,
+ 0x1f500, 0x1f53d,
+ 0x1f550, 0x1f567,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
+ 0x1f645, 0x1f64f,
+ 0x1f680, 0x1f6c5,
+ 0x1f700, 0x1f773,
+ 0x20000, 0x2a6d6,
+ 0x2a700, 0x2b734,
+ 0x2b740, 0x2b81d,
+ 0x2f800, 0x2fa1d,
+ 0xe0001, 0xe0001,
+ 0xe0020, 0xe007f,
+ 0xe0100, 0xe01ef,
+ 0xf0000, 0xffffd,
+ 0x100000, 0x10fffd,
+}; /* CR_Graph */
+
+/* 'Lower': [[:Lower:]] */
+#define CR_Lower CR_Lowercase
+
+/* 'Print': [[:Print:]] */
+static const OnigCodePoint CR_Print[] = {
+ 503,
+ 0x0020, 0x007e,
+ 0x00a0, 0x0377,
0x037a, 0x037e,
0x0384, 0x038a,
0x038c, 0x038c,
@@ -23582,11 +20374,10 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0559, 0x055f,
0x0561, 0x0587,
0x0589, 0x058a,
- 0x058f, 0x058f,
0x0591, 0x05c7,
0x05d0, 0x05ea,
0x05f0, 0x05f4,
- 0x0600, 0x0604,
+ 0x0600, 0x0603,
0x0606, 0x061b,
0x061e, 0x070d,
0x070f, 0x074a,
@@ -23596,9 +20387,6 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0830, 0x083e,
0x0840, 0x085b,
0x085e, 0x085e,
- 0x08a0, 0x08a0,
- 0x08a2, 0x08ac,
- 0x08e4, 0x08fe,
0x0900, 0x0977,
0x0979, 0x097f,
0x0981, 0x0983,
@@ -23643,7 +20431,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0acb, 0x0acd,
0x0ad0, 0x0ad0,
0x0ae0, 0x0ae3,
- 0x0ae6, 0x0af1,
+ 0x0ae6, 0x0aef,
+ 0x0af1, 0x0af1,
0x0b01, 0x0b03,
0x0b05, 0x0b0c,
0x0b0f, 0x0b10,
@@ -23743,7 +20532,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0ec6, 0x0ec6,
0x0ec8, 0x0ecd,
0x0ed0, 0x0ed9,
- 0x0edc, 0x0edf,
+ 0x0edc, 0x0edd,
0x0f00, 0x0f47,
0x0f49, 0x0f6c,
0x0f71, 0x0f97,
@@ -23751,9 +20540,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x0fbe, 0x0fcc,
0x0fce, 0x0fda,
0x1000, 0x10c5,
- 0x10c7, 0x10c7,
- 0x10cd, 0x10cd,
- 0x10d0, 0x1248,
+ 0x10d0, 0x10fc,
+ 0x1100, 0x1248,
0x124a, 0x124d,
0x1250, 0x1256,
0x1258, 0x1258,
@@ -23806,12 +20594,13 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1aa0, 0x1aad,
0x1b00, 0x1b4b,
0x1b50, 0x1b7c,
- 0x1b80, 0x1bf3,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
0x1bfc, 0x1c37,
0x1c3b, 0x1c49,
0x1c4d, 0x1c7f,
- 0x1cc0, 0x1cc7,
- 0x1cd0, 0x1cf6,
+ 0x1cd0, 0x1cf2,
0x1d00, 0x1de6,
0x1dfc, 0x1f15,
0x1f18, 0x1f1d,
@@ -23829,7 +20618,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1fdd, 0x1fef,
0x1ff2, 0x1ff4,
0x1ff6, 0x1ffe,
- 0x2000, 0x2064,
+ 0x2000, 0x2027,
+ 0x202a, 0x2064,
0x206a, 0x2071,
0x2074, 0x208e,
0x2090, 0x209c,
@@ -23840,15 +20630,15 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x2400, 0x2426,
0x2440, 0x244a,
0x2460, 0x26ff,
- 0x2701, 0x2b4c,
+ 0x2701, 0x27ca,
+ 0x27cc, 0x27cc,
+ 0x27ce, 0x2b4c,
0x2b50, 0x2b59,
0x2c00, 0x2c2e,
0x2c30, 0x2c5e,
- 0x2c60, 0x2cf3,
+ 0x2c60, 0x2cf1,
0x2cf9, 0x2d25,
- 0x2d27, 0x2d27,
- 0x2d2d, 0x2d2d,
- 0x2d30, 0x2d67,
+ 0x2d30, 0x2d65,
0x2d6f, 0x2d70,
0x2d7f, 0x2d96,
0x2da0, 0x2da6,
@@ -23859,7 +20649,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x2dc8, 0x2dce,
0x2dd0, 0x2dd6,
0x2dd8, 0x2dde,
- 0x2de0, 0x2e3b,
+ 0x2de0, 0x2e31,
0x2e80, 0x2e99,
0x2e9b, 0x2ef3,
0x2f00, 0x2fd5,
@@ -23874,16 +20664,17 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x31f0, 0x321e,
0x3220, 0x32fe,
0x3300, 0x4db5,
- 0x4dc0, 0x9fcc,
+ 0x4dc0, 0x9fcb,
0xa000, 0xa48c,
0xa490, 0xa4c6,
0xa4d0, 0xa62b,
- 0xa640, 0xa697,
- 0xa69f, 0xa6f7,
+ 0xa640, 0xa673,
+ 0xa67c, 0xa697,
+ 0xa6a0, 0xa6f7,
0xa700, 0xa78e,
- 0xa790, 0xa793,
- 0xa7a0, 0xa7aa,
- 0xa7f8, 0xa82b,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa82b,
0xa830, 0xa839,
0xa840, 0xa877,
0xa880, 0xa8c4,
@@ -23899,7 +20690,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0xaa50, 0xaa59,
0xaa5c, 0xaa7b,
0xaa80, 0xaac2,
- 0xaadb, 0xaaf6,
+ 0xaadb, 0xaadf,
0xab01, 0xab06,
0xab09, 0xab0e,
0xab11, 0xab16,
@@ -23910,7 +20701,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0xac00, 0xd7a3,
0xd7b0, 0xd7c6,
0xd7cb, 0xd7fb,
- 0xd800, 0xfa6d,
+ 0xe000, 0xfa2d,
+ 0xfa30, 0xfa6d,
0xfa70, 0xfad9,
0xfb00, 0xfb06,
0xfb13, 0xfb17,
@@ -23923,7 +20715,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0xfbd3, 0xfd3f,
0xfd50, 0xfd8f,
0xfd92, 0xfdc7,
- 0xfdd0, 0xfdfd,
+ 0xfdf0, 0xfdfd,
0xfe00, 0xfe19,
0xfe20, 0xfe26,
0xfe30, 0xfe52,
@@ -23939,7 +20731,8 @@ static const OnigCodePoint CR_Age_6_1[] = {
0xffda, 0xffdc,
0xffe0, 0xffe6,
0xffe8, 0xffee,
- 0xfff9, 0x1000b,
+ 0xfff9, 0xfffd,
+ 0x10000, 0x1000b,
0x1000d, 0x10026,
0x10028, 0x1003a,
0x1003c, 0x1003d,
@@ -23971,8 +20764,6 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x10900, 0x1091b,
0x1091f, 0x10939,
0x1093f, 0x1093f,
- 0x10980, 0x109b7,
- 0x109be, 0x109bf,
0x10a00, 0x10a03,
0x10a05, 0x10a06,
0x10a0c, 0x10a13,
@@ -23991,22 +20782,11 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x11000, 0x1104d,
0x11052, 0x1106f,
0x11080, 0x110c1,
- 0x110d0, 0x110e8,
- 0x110f0, 0x110f9,
- 0x11100, 0x11134,
- 0x11136, 0x11143,
- 0x11180, 0x111c8,
- 0x111d0, 0x111d9,
- 0x11680, 0x116b7,
- 0x116c0, 0x116c9,
0x12000, 0x1236e,
0x12400, 0x12462,
0x12470, 0x12473,
0x13000, 0x1342e,
0x16800, 0x16a38,
- 0x16f00, 0x16f44,
- 0x16f50, 0x16f7e,
- 0x16f8f, 0x16f9f,
0x1b000, 0x1b001,
0x1d000, 0x1d0f5,
0x1d100, 0x1d126,
@@ -24035,40 +20815,6 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1d552, 0x1d6a5,
0x1d6a8, 0x1d7cb,
0x1d7ce, 0x1d7ff,
- 0x1ee00, 0x1ee03,
- 0x1ee05, 0x1ee1f,
- 0x1ee21, 0x1ee22,
- 0x1ee24, 0x1ee24,
- 0x1ee27, 0x1ee27,
- 0x1ee29, 0x1ee32,
- 0x1ee34, 0x1ee37,
- 0x1ee39, 0x1ee39,
- 0x1ee3b, 0x1ee3b,
- 0x1ee42, 0x1ee42,
- 0x1ee47, 0x1ee47,
- 0x1ee49, 0x1ee49,
- 0x1ee4b, 0x1ee4b,
- 0x1ee4d, 0x1ee4f,
- 0x1ee51, 0x1ee52,
- 0x1ee54, 0x1ee54,
- 0x1ee57, 0x1ee57,
- 0x1ee59, 0x1ee59,
- 0x1ee5b, 0x1ee5b,
- 0x1ee5d, 0x1ee5d,
- 0x1ee5f, 0x1ee5f,
- 0x1ee61, 0x1ee62,
- 0x1ee64, 0x1ee64,
- 0x1ee67, 0x1ee6a,
- 0x1ee6c, 0x1ee72,
- 0x1ee74, 0x1ee77,
- 0x1ee79, 0x1ee7c,
- 0x1ee7e, 0x1ee7e,
- 0x1ee80, 0x1ee89,
- 0x1ee8b, 0x1ee9b,
- 0x1eea1, 0x1eea3,
- 0x1eea5, 0x1eea9,
- 0x1eeab, 0x1eebb,
- 0x1eef0, 0x1eef1,
0x1f000, 0x1f02b,
0x1f030, 0x1f093,
0x1f0a0, 0x1f0ae,
@@ -24077,7 +20823,7 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1f0d1, 0x1f0df,
0x1f100, 0x1f10a,
0x1f110, 0x1f12e,
- 0x1f130, 0x1f16b,
+ 0x1f130, 0x1f169,
0x1f170, 0x1f19a,
0x1f1e6, 0x1f202,
0x1f210, 0x1f23a,
@@ -24095,1368 +20841,1083 @@ static const OnigCodePoint CR_Age_6_1[] = {
0x1f442, 0x1f4f7,
0x1f4f9, 0x1f4fc,
0x1f500, 0x1f53d,
- 0x1f540, 0x1f543,
0x1f550, 0x1f567,
- 0x1f5fb, 0x1f640,
+ 0x1f5fb, 0x1f5ff,
+ 0x1f601, 0x1f610,
+ 0x1f612, 0x1f614,
+ 0x1f616, 0x1f616,
+ 0x1f618, 0x1f618,
+ 0x1f61a, 0x1f61a,
+ 0x1f61c, 0x1f61e,
+ 0x1f620, 0x1f625,
+ 0x1f628, 0x1f62b,
+ 0x1f62d, 0x1f62d,
+ 0x1f630, 0x1f633,
+ 0x1f635, 0x1f640,
0x1f645, 0x1f64f,
0x1f680, 0x1f6c5,
0x1f700, 0x1f773,
- 0x1fffe, 0x2a6d6,
+ 0x20000, 0x2a6d6,
0x2a700, 0x2b734,
0x2b740, 0x2b81d,
0x2f800, 0x2fa1d,
- 0x2fffe, 0x2ffff,
- 0x3fffe, 0x3ffff,
- 0x4fffe, 0x4ffff,
- 0x5fffe, 0x5ffff,
- 0x6fffe, 0x6ffff,
- 0x7fffe, 0x7ffff,
- 0x8fffe, 0x8ffff,
- 0x9fffe, 0x9ffff,
- 0xafffe, 0xaffff,
- 0xbfffe, 0xbffff,
- 0xcfffe, 0xcffff,
- 0xdfffe, 0xdffff,
0xe0001, 0xe0001,
0xe0020, 0xe007f,
0xe0100, 0xe01ef,
- 0xefffe, 0x10ffff,
-}; /* CR_Age_6_1 */
-
-/* 'In_Basic_Latin': Block */
-#define CR_In_Basic_Latin CR_ASCII
-
-/* 'In_Latin_1_Supplement': Block */
-static const OnigCodePoint CR_In_Latin_1_Supplement[] = {
- 1,
- 0x0080, 0x00ff,
-}; /* CR_In_Latin_1_Supplement */
-
-/* 'In_Latin_Extended_A': Block */
-static const OnigCodePoint CR_In_Latin_Extended_A[] = {
- 1,
- 0x0100, 0x017f,
-}; /* CR_In_Latin_Extended_A */
-
-/* 'In_Latin_Extended_B': Block */
-static const OnigCodePoint CR_In_Latin_Extended_B[] = {
- 1,
- 0x0180, 0x024f,
-}; /* CR_In_Latin_Extended_B */
-
-/* 'In_IPA_Extensions': Block */
-static const OnigCodePoint CR_In_IPA_Extensions[] = {
- 1,
- 0x0250, 0x02af,
-}; /* CR_In_IPA_Extensions */
-
-/* 'In_Spacing_Modifier_Letters': Block */
-static const OnigCodePoint CR_In_Spacing_Modifier_Letters[] = {
- 1,
- 0x02b0, 0x02ff,
-}; /* CR_In_Spacing_Modifier_Letters */
-
-/* 'In_Combining_Diacritical_Marks': Block */
-static const OnigCodePoint CR_In_Combining_Diacritical_Marks[] = {
- 1,
- 0x0300, 0x036f,
-}; /* CR_In_Combining_Diacritical_Marks */
-
-/* 'In_Greek_and_Coptic': Block */
-static const OnigCodePoint CR_In_Greek_and_Coptic[] = {
- 1,
- 0x0370, 0x03ff,
-}; /* CR_In_Greek_and_Coptic */
-
-/* 'In_Cyrillic': Block */
-static const OnigCodePoint CR_In_Cyrillic[] = {
- 1,
- 0x0400, 0x04ff,
-}; /* CR_In_Cyrillic */
-
-/* 'In_Cyrillic_Supplement': Block */
-static const OnigCodePoint CR_In_Cyrillic_Supplement[] = {
- 1,
- 0x0500, 0x052f,
-}; /* CR_In_Cyrillic_Supplement */
-
-/* 'In_Armenian': Block */
-static const OnigCodePoint CR_In_Armenian[] = {
- 1,
- 0x0530, 0x058f,
-}; /* CR_In_Armenian */
-
-/* 'In_Hebrew': Block */
-static const OnigCodePoint CR_In_Hebrew[] = {
- 1,
- 0x0590, 0x05ff,
-}; /* CR_In_Hebrew */
-
-/* 'In_Arabic': Block */
-static const OnigCodePoint CR_In_Arabic[] = {
- 1,
- 0x0600, 0x06ff,
-}; /* CR_In_Arabic */
-
-/* 'In_Syriac': Block */
-static const OnigCodePoint CR_In_Syriac[] = {
- 1,
- 0x0700, 0x074f,
-}; /* CR_In_Syriac */
-
-/* 'In_Arabic_Supplement': Block */
-static const OnigCodePoint CR_In_Arabic_Supplement[] = {
- 1,
- 0x0750, 0x077f,
-}; /* CR_In_Arabic_Supplement */
-
-/* 'In_Thaana': Block */
-static const OnigCodePoint CR_In_Thaana[] = {
- 1,
- 0x0780, 0x07bf,
-}; /* CR_In_Thaana */
-
-/* 'In_NKo': Block */
-static const OnigCodePoint CR_In_NKo[] = {
- 1,
- 0x07c0, 0x07ff,
-}; /* CR_In_NKo */
-
-/* 'In_Samaritan': Block */
-static const OnigCodePoint CR_In_Samaritan[] = {
- 1,
- 0x0800, 0x083f,
-}; /* CR_In_Samaritan */
-
-/* 'In_Mandaic': Block */
-static const OnigCodePoint CR_In_Mandaic[] = {
- 1,
- 0x0840, 0x085f,
-}; /* CR_In_Mandaic */
-
-/* 'In_Arabic_Extended_A': Block */
-static const OnigCodePoint CR_In_Arabic_Extended_A[] = {
- 1,
- 0x08a0, 0x08ff,
-}; /* CR_In_Arabic_Extended_A */
-
-/* 'In_Devanagari': Block */
-static const OnigCodePoint CR_In_Devanagari[] = {
- 1,
- 0x0900, 0x097f,
-}; /* CR_In_Devanagari */
-
-/* 'In_Bengali': Block */
-static const OnigCodePoint CR_In_Bengali[] = {
- 1,
- 0x0980, 0x09ff,
-}; /* CR_In_Bengali */
-
-/* 'In_Gurmukhi': Block */
-static const OnigCodePoint CR_In_Gurmukhi[] = {
- 1,
- 0x0a00, 0x0a7f,
-}; /* CR_In_Gurmukhi */
-
-/* 'In_Gujarati': Block */
-static const OnigCodePoint CR_In_Gujarati[] = {
- 1,
- 0x0a80, 0x0aff,
-}; /* CR_In_Gujarati */
-
-/* 'In_Oriya': Block */
-static const OnigCodePoint CR_In_Oriya[] = {
- 1,
- 0x0b00, 0x0b7f,
-}; /* CR_In_Oriya */
-
-/* 'In_Tamil': Block */
-static const OnigCodePoint CR_In_Tamil[] = {
- 1,
- 0x0b80, 0x0bff,
-}; /* CR_In_Tamil */
-
-/* 'In_Telugu': Block */
-static const OnigCodePoint CR_In_Telugu[] = {
- 1,
- 0x0c00, 0x0c7f,
-}; /* CR_In_Telugu */
-
-/* 'In_Kannada': Block */
-static const OnigCodePoint CR_In_Kannada[] = {
- 1,
- 0x0c80, 0x0cff,
-}; /* CR_In_Kannada */
-
-/* 'In_Malayalam': Block */
-static const OnigCodePoint CR_In_Malayalam[] = {
- 1,
- 0x0d00, 0x0d7f,
-}; /* CR_In_Malayalam */
-
-/* 'In_Sinhala': Block */
-static const OnigCodePoint CR_In_Sinhala[] = {
- 1,
- 0x0d80, 0x0dff,
-}; /* CR_In_Sinhala */
-
-/* 'In_Thai': Block */
-static const OnigCodePoint CR_In_Thai[] = {
- 1,
- 0x0e00, 0x0e7f,
-}; /* CR_In_Thai */
-
-/* 'In_Lao': Block */
-static const OnigCodePoint CR_In_Lao[] = {
- 1,
- 0x0e80, 0x0eff,
-}; /* CR_In_Lao */
-
-/* 'In_Tibetan': Block */
-static const OnigCodePoint CR_In_Tibetan[] = {
- 1,
- 0x0f00, 0x0fff,
-}; /* CR_In_Tibetan */
-
-/* 'In_Myanmar': Block */
-static const OnigCodePoint CR_In_Myanmar[] = {
- 1,
- 0x1000, 0x109f,
-}; /* CR_In_Myanmar */
-
-/* 'In_Georgian': Block */
-static const OnigCodePoint CR_In_Georgian[] = {
- 1,
- 0x10a0, 0x10ff,
-}; /* CR_In_Georgian */
-
-/* 'In_Hangul_Jamo': Block */
-static const OnigCodePoint CR_In_Hangul_Jamo[] = {
- 1,
- 0x1100, 0x11ff,
-}; /* CR_In_Hangul_Jamo */
-
-/* 'In_Ethiopic': Block */
-static const OnigCodePoint CR_In_Ethiopic[] = {
- 1,
- 0x1200, 0x137f,
-}; /* CR_In_Ethiopic */
-
-/* 'In_Ethiopic_Supplement': Block */
-static const OnigCodePoint CR_In_Ethiopic_Supplement[] = {
- 1,
- 0x1380, 0x139f,
-}; /* CR_In_Ethiopic_Supplement */
-
-/* 'In_Cherokee': Block */
-static const OnigCodePoint CR_In_Cherokee[] = {
- 1,
- 0x13a0, 0x13ff,
-}; /* CR_In_Cherokee */
-
-/* 'In_Unified_Canadian_Aboriginal_Syllabics': Block */
-static const OnigCodePoint CR_In_Unified_Canadian_Aboriginal_Syllabics[] = {
- 1,
- 0x1400, 0x167f,
-}; /* CR_In_Unified_Canadian_Aboriginal_Syllabics */
-
-/* 'In_Ogham': Block */
-static const OnigCodePoint CR_In_Ogham[] = {
- 1,
- 0x1680, 0x169f,
-}; /* CR_In_Ogham */
-
-/* 'In_Runic': Block */
-static const OnigCodePoint CR_In_Runic[] = {
- 1,
- 0x16a0, 0x16ff,
-}; /* CR_In_Runic */
-
-/* 'In_Tagalog': Block */
-static const OnigCodePoint CR_In_Tagalog[] = {
- 1,
- 0x1700, 0x171f,
-}; /* CR_In_Tagalog */
-
-/* 'In_Hanunoo': Block */
-static const OnigCodePoint CR_In_Hanunoo[] = {
- 1,
- 0x1720, 0x173f,
-}; /* CR_In_Hanunoo */
-
-/* 'In_Buhid': Block */
-static const OnigCodePoint CR_In_Buhid[] = {
- 1,
- 0x1740, 0x175f,
-}; /* CR_In_Buhid */
-
-/* 'In_Tagbanwa': Block */
-static const OnigCodePoint CR_In_Tagbanwa[] = {
- 1,
- 0x1760, 0x177f,
-}; /* CR_In_Tagbanwa */
-
-/* 'In_Khmer': Block */
-static const OnigCodePoint CR_In_Khmer[] = {
- 1,
- 0x1780, 0x17ff,
-}; /* CR_In_Khmer */
-
-/* 'In_Mongolian': Block */
-static const OnigCodePoint CR_In_Mongolian[] = {
- 1,
- 0x1800, 0x18af,
-}; /* CR_In_Mongolian */
-
-/* 'In_Unified_Canadian_Aboriginal_Syllabics_Extended': Block */
-static const OnigCodePoint CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended[] = {
- 1,
- 0x18b0, 0x18ff,
-}; /* CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended */
-
-/* 'In_Limbu': Block */
-static const OnigCodePoint CR_In_Limbu[] = {
- 1,
- 0x1900, 0x194f,
-}; /* CR_In_Limbu */
-
-/* 'In_Tai_Le': Block */
-static const OnigCodePoint CR_In_Tai_Le[] = {
- 1,
- 0x1950, 0x197f,
-}; /* CR_In_Tai_Le */
-
-/* 'In_New_Tai_Lue': Block */
-static const OnigCodePoint CR_In_New_Tai_Lue[] = {
- 1,
- 0x1980, 0x19df,
-}; /* CR_In_New_Tai_Lue */
-
-/* 'In_Khmer_Symbols': Block */
-static const OnigCodePoint CR_In_Khmer_Symbols[] = {
- 1,
- 0x19e0, 0x19ff,
-}; /* CR_In_Khmer_Symbols */
-
-/* 'In_Buginese': Block */
-static const OnigCodePoint CR_In_Buginese[] = {
- 1,
- 0x1a00, 0x1a1f,
-}; /* CR_In_Buginese */
-
-/* 'In_Tai_Tham': Block */
-static const OnigCodePoint CR_In_Tai_Tham[] = {
- 1,
- 0x1a20, 0x1aaf,
-}; /* CR_In_Tai_Tham */
-
-/* 'In_Balinese': Block */
-static const OnigCodePoint CR_In_Balinese[] = {
- 1,
- 0x1b00, 0x1b7f,
-}; /* CR_In_Balinese */
-
-/* 'In_Sundanese': Block */
-static const OnigCodePoint CR_In_Sundanese[] = {
- 1,
- 0x1b80, 0x1bbf,
-}; /* CR_In_Sundanese */
-
-/* 'In_Batak': Block */
-static const OnigCodePoint CR_In_Batak[] = {
- 1,
- 0x1bc0, 0x1bff,
-}; /* CR_In_Batak */
-
-/* 'In_Lepcha': Block */
-static const OnigCodePoint CR_In_Lepcha[] = {
- 1,
- 0x1c00, 0x1c4f,
-}; /* CR_In_Lepcha */
-
-/* 'In_Ol_Chiki': Block */
-#define CR_In_Ol_Chiki CR_Ol_Chiki
-
-/* 'In_Sundanese_Supplement': Block */
-static const OnigCodePoint CR_In_Sundanese_Supplement[] = {
- 1,
- 0x1cc0, 0x1ccf,
-}; /* CR_In_Sundanese_Supplement */
-
-/* 'In_Vedic_Extensions': Block */
-static const OnigCodePoint CR_In_Vedic_Extensions[] = {
- 1,
- 0x1cd0, 0x1cff,
-}; /* CR_In_Vedic_Extensions */
-
-/* 'In_Phonetic_Extensions': Block */
-static const OnigCodePoint CR_In_Phonetic_Extensions[] = {
- 1,
- 0x1d00, 0x1d7f,
-}; /* CR_In_Phonetic_Extensions */
-
-/* 'In_Phonetic_Extensions_Supplement': Block */
-static const OnigCodePoint CR_In_Phonetic_Extensions_Supplement[] = {
- 1,
- 0x1d80, 0x1dbf,
-}; /* CR_In_Phonetic_Extensions_Supplement */
-
-/* 'In_Combining_Diacritical_Marks_Supplement': Block */
-static const OnigCodePoint CR_In_Combining_Diacritical_Marks_Supplement[] = {
- 1,
- 0x1dc0, 0x1dff,
-}; /* CR_In_Combining_Diacritical_Marks_Supplement */
-
-/* 'In_Latin_Extended_Additional': Block */
-static const OnigCodePoint CR_In_Latin_Extended_Additional[] = {
- 1,
- 0x1e00, 0x1eff,
-}; /* CR_In_Latin_Extended_Additional */
-
-/* 'In_Greek_Extended': Block */
-static const OnigCodePoint CR_In_Greek_Extended[] = {
- 1,
- 0x1f00, 0x1fff,
-}; /* CR_In_Greek_Extended */
-
-/* 'In_General_Punctuation': Block */
-static const OnigCodePoint CR_In_General_Punctuation[] = {
- 1,
- 0x2000, 0x206f,
-}; /* CR_In_General_Punctuation */
-
-/* 'In_Superscripts_and_Subscripts': Block */
-static const OnigCodePoint CR_In_Superscripts_and_Subscripts[] = {
- 1,
- 0x2070, 0x209f,
-}; /* CR_In_Superscripts_and_Subscripts */
-
-/* 'In_Currency_Symbols': Block */
-static const OnigCodePoint CR_In_Currency_Symbols[] = {
- 1,
- 0x20a0, 0x20cf,
-}; /* CR_In_Currency_Symbols */
-
-/* 'In_Combining_Diacritical_Marks_for_Symbols': Block */
-static const OnigCodePoint CR_In_Combining_Diacritical_Marks_for_Symbols[] = {
- 1,
- 0x20d0, 0x20ff,
-}; /* CR_In_Combining_Diacritical_Marks_for_Symbols */
-
-/* 'In_Letterlike_Symbols': Block */
-static const OnigCodePoint CR_In_Letterlike_Symbols[] = {
- 1,
- 0x2100, 0x214f,
-}; /* CR_In_Letterlike_Symbols */
-
-/* 'In_Number_Forms': Block */
-static const OnigCodePoint CR_In_Number_Forms[] = {
- 1,
- 0x2150, 0x218f,
-}; /* CR_In_Number_Forms */
-
-/* 'In_Arrows': Block */
-static const OnigCodePoint CR_In_Arrows[] = {
- 1,
- 0x2190, 0x21ff,
-}; /* CR_In_Arrows */
-
-/* 'In_Mathematical_Operators': Block */
-static const OnigCodePoint CR_In_Mathematical_Operators[] = {
- 1,
- 0x2200, 0x22ff,
-}; /* CR_In_Mathematical_Operators */
-
-/* 'In_Miscellaneous_Technical': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Technical[] = {
- 1,
- 0x2300, 0x23ff,
-}; /* CR_In_Miscellaneous_Technical */
-
-/* 'In_Control_Pictures': Block */
-static const OnigCodePoint CR_In_Control_Pictures[] = {
- 1,
- 0x2400, 0x243f,
-}; /* CR_In_Control_Pictures */
-
-/* 'In_Optical_Character_Recognition': Block */
-static const OnigCodePoint CR_In_Optical_Character_Recognition[] = {
- 1,
- 0x2440, 0x245f,
-}; /* CR_In_Optical_Character_Recognition */
-
-/* 'In_Enclosed_Alphanumerics': Block */
-static const OnigCodePoint CR_In_Enclosed_Alphanumerics[] = {
- 1,
- 0x2460, 0x24ff,
-}; /* CR_In_Enclosed_Alphanumerics */
-
-/* 'In_Box_Drawing': Block */
-static const OnigCodePoint CR_In_Box_Drawing[] = {
- 1,
- 0x2500, 0x257f,
-}; /* CR_In_Box_Drawing */
-
-/* 'In_Block_Elements': Block */
-static const OnigCodePoint CR_In_Block_Elements[] = {
- 1,
- 0x2580, 0x259f,
-}; /* CR_In_Block_Elements */
-
-/* 'In_Geometric_Shapes': Block */
-static const OnigCodePoint CR_In_Geometric_Shapes[] = {
- 1,
- 0x25a0, 0x25ff,
-}; /* CR_In_Geometric_Shapes */
-
-/* 'In_Miscellaneous_Symbols': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Symbols[] = {
- 1,
- 0x2600, 0x26ff,
-}; /* CR_In_Miscellaneous_Symbols */
-
-/* 'In_Dingbats': Block */
-static const OnigCodePoint CR_In_Dingbats[] = {
- 1,
- 0x2700, 0x27bf,
-}; /* CR_In_Dingbats */
-
-/* 'In_Miscellaneous_Mathematical_Symbols_A': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Mathematical_Symbols_A[] = {
- 1,
- 0x27c0, 0x27ef,
-}; /* CR_In_Miscellaneous_Mathematical_Symbols_A */
-
-/* 'In_Supplemental_Arrows_A': Block */
-static const OnigCodePoint CR_In_Supplemental_Arrows_A[] = {
- 1,
- 0x27f0, 0x27ff,
-}; /* CR_In_Supplemental_Arrows_A */
-
-/* 'In_Braille_Patterns': Block */
-#define CR_In_Braille_Patterns CR_Braille
-
-/* 'In_Supplemental_Arrows_B': Block */
-static const OnigCodePoint CR_In_Supplemental_Arrows_B[] = {
- 1,
- 0x2900, 0x297f,
-}; /* CR_In_Supplemental_Arrows_B */
-
-/* 'In_Miscellaneous_Mathematical_Symbols_B': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Mathematical_Symbols_B[] = {
- 1,
- 0x2980, 0x29ff,
-}; /* CR_In_Miscellaneous_Mathematical_Symbols_B */
-
-/* 'In_Supplemental_Mathematical_Operators': Block */
-static const OnigCodePoint CR_In_Supplemental_Mathematical_Operators[] = {
- 1,
- 0x2a00, 0x2aff,
-}; /* CR_In_Supplemental_Mathematical_Operators */
-
-/* 'In_Miscellaneous_Symbols_and_Arrows': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Symbols_and_Arrows[] = {
- 1,
- 0x2b00, 0x2bff,
-}; /* CR_In_Miscellaneous_Symbols_and_Arrows */
-
-/* 'In_Glagolitic': Block */
-static const OnigCodePoint CR_In_Glagolitic[] = {
- 1,
- 0x2c00, 0x2c5f,
-}; /* CR_In_Glagolitic */
-
-/* 'In_Latin_Extended_C': Block */
-static const OnigCodePoint CR_In_Latin_Extended_C[] = {
- 1,
- 0x2c60, 0x2c7f,
-}; /* CR_In_Latin_Extended_C */
+ 0xf0000, 0xffffd,
+ 0x100000, 0x10fffd,
+}; /* CR_Print */
-/* 'In_Coptic': Block */
-static const OnigCodePoint CR_In_Coptic[] = {
- 1,
- 0x2c80, 0x2cff,
-}; /* CR_In_Coptic */
+/* 'Punct': [[:Punct:]] */
+#define CR_Punct CR_P
-/* 'In_Georgian_Supplement': Block */
-static const OnigCodePoint CR_In_Georgian_Supplement[] = {
- 1,
- 0x2d00, 0x2d2f,
-}; /* CR_In_Georgian_Supplement */
+/* 'Space': [[:Space:]] */
+#define CR_Space CR_White_Space
-/* 'In_Tifinagh': Block */
-static const OnigCodePoint CR_In_Tifinagh[] = {
- 1,
- 0x2d30, 0x2d7f,
-}; /* CR_In_Tifinagh */
+/* 'Upper': [[:Upper:]] */
+#define CR_Upper CR_Uppercase
-/* 'In_Ethiopic_Extended': Block */
-static const OnigCodePoint CR_In_Ethiopic_Extended[] = {
- 1,
- 0x2d80, 0x2ddf,
-}; /* CR_In_Ethiopic_Extended */
+/* 'XDigit': [[:XDigit:]] */
+#define CR_XDigit CR_ASCII_Hex_Digit
-/* 'In_Cyrillic_Extended_A': Block */
-static const OnigCodePoint CR_In_Cyrillic_Extended_A[] = {
- 1,
+/* 'Word': [[:Word:]] */
+static const OnigCodePoint CR_Word[] = {
+ 514,
+ 0x0030, 0x0039,
+ 0x0041, 0x005a,
+ 0x005f, 0x005f,
+ 0x0061, 0x007a,
+ 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
+ 0x00c0, 0x00d6,
+ 0x00d8, 0x00f6,
+ 0x00f8, 0x02c1,
+ 0x02c6, 0x02d1,
+ 0x02e0, 0x02e4,
+ 0x02ec, 0x02ec,
+ 0x02ee, 0x02ee,
+ 0x0300, 0x0374,
+ 0x0376, 0x0377,
+ 0x037a, 0x037d,
+ 0x0386, 0x0386,
+ 0x0388, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x03a1,
+ 0x03a3, 0x03f5,
+ 0x03f7, 0x0481,
+ 0x0483, 0x0527,
+ 0x0531, 0x0556,
+ 0x0559, 0x0559,
+ 0x0561, 0x0587,
+ 0x0591, 0x05bd,
+ 0x05bf, 0x05bf,
+ 0x05c1, 0x05c2,
+ 0x05c4, 0x05c5,
+ 0x05c7, 0x05c7,
+ 0x05d0, 0x05ea,
+ 0x05f0, 0x05f2,
+ 0x0610, 0x061a,
+ 0x0620, 0x0669,
+ 0x066e, 0x06d3,
+ 0x06d5, 0x06dc,
+ 0x06df, 0x06e8,
+ 0x06ea, 0x06fc,
+ 0x06ff, 0x06ff,
+ 0x0710, 0x074a,
+ 0x074d, 0x07b1,
+ 0x07c0, 0x07f5,
+ 0x07fa, 0x07fa,
+ 0x0800, 0x082d,
+ 0x0840, 0x085b,
+ 0x0900, 0x0963,
+ 0x0966, 0x096f,
+ 0x0971, 0x0977,
+ 0x0979, 0x097f,
+ 0x0981, 0x0983,
+ 0x0985, 0x098c,
+ 0x098f, 0x0990,
+ 0x0993, 0x09a8,
+ 0x09aa, 0x09b0,
+ 0x09b2, 0x09b2,
+ 0x09b6, 0x09b9,
+ 0x09bc, 0x09c4,
+ 0x09c7, 0x09c8,
+ 0x09cb, 0x09ce,
+ 0x09d7, 0x09d7,
+ 0x09dc, 0x09dd,
+ 0x09df, 0x09e3,
+ 0x09e6, 0x09f1,
+ 0x0a01, 0x0a03,
+ 0x0a05, 0x0a0a,
+ 0x0a0f, 0x0a10,
+ 0x0a13, 0x0a28,
+ 0x0a2a, 0x0a30,
+ 0x0a32, 0x0a33,
+ 0x0a35, 0x0a36,
+ 0x0a38, 0x0a39,
+ 0x0a3c, 0x0a3c,
+ 0x0a3e, 0x0a42,
+ 0x0a47, 0x0a48,
+ 0x0a4b, 0x0a4d,
+ 0x0a51, 0x0a51,
+ 0x0a59, 0x0a5c,
+ 0x0a5e, 0x0a5e,
+ 0x0a66, 0x0a75,
+ 0x0a81, 0x0a83,
+ 0x0a85, 0x0a8d,
+ 0x0a8f, 0x0a91,
+ 0x0a93, 0x0aa8,
+ 0x0aaa, 0x0ab0,
+ 0x0ab2, 0x0ab3,
+ 0x0ab5, 0x0ab9,
+ 0x0abc, 0x0ac5,
+ 0x0ac7, 0x0ac9,
+ 0x0acb, 0x0acd,
+ 0x0ad0, 0x0ad0,
+ 0x0ae0, 0x0ae3,
+ 0x0ae6, 0x0aef,
+ 0x0b01, 0x0b03,
+ 0x0b05, 0x0b0c,
+ 0x0b0f, 0x0b10,
+ 0x0b13, 0x0b28,
+ 0x0b2a, 0x0b30,
+ 0x0b32, 0x0b33,
+ 0x0b35, 0x0b39,
+ 0x0b3c, 0x0b44,
+ 0x0b47, 0x0b48,
+ 0x0b4b, 0x0b4d,
+ 0x0b56, 0x0b57,
+ 0x0b5c, 0x0b5d,
+ 0x0b5f, 0x0b63,
+ 0x0b66, 0x0b6f,
+ 0x0b71, 0x0b71,
+ 0x0b82, 0x0b83,
+ 0x0b85, 0x0b8a,
+ 0x0b8e, 0x0b90,
+ 0x0b92, 0x0b95,
+ 0x0b99, 0x0b9a,
+ 0x0b9c, 0x0b9c,
+ 0x0b9e, 0x0b9f,
+ 0x0ba3, 0x0ba4,
+ 0x0ba8, 0x0baa,
+ 0x0bae, 0x0bb9,
+ 0x0bbe, 0x0bc2,
+ 0x0bc6, 0x0bc8,
+ 0x0bca, 0x0bcd,
+ 0x0bd0, 0x0bd0,
+ 0x0bd7, 0x0bd7,
+ 0x0be6, 0x0bef,
+ 0x0c01, 0x0c03,
+ 0x0c05, 0x0c0c,
+ 0x0c0e, 0x0c10,
+ 0x0c12, 0x0c28,
+ 0x0c2a, 0x0c33,
+ 0x0c35, 0x0c39,
+ 0x0c3d, 0x0c44,
+ 0x0c46, 0x0c48,
+ 0x0c4a, 0x0c4d,
+ 0x0c55, 0x0c56,
+ 0x0c58, 0x0c59,
+ 0x0c60, 0x0c63,
+ 0x0c66, 0x0c6f,
+ 0x0c82, 0x0c83,
+ 0x0c85, 0x0c8c,
+ 0x0c8e, 0x0c90,
+ 0x0c92, 0x0ca8,
+ 0x0caa, 0x0cb3,
+ 0x0cb5, 0x0cb9,
+ 0x0cbc, 0x0cc4,
+ 0x0cc6, 0x0cc8,
+ 0x0cca, 0x0ccd,
+ 0x0cd5, 0x0cd6,
+ 0x0cde, 0x0cde,
+ 0x0ce0, 0x0ce3,
+ 0x0ce6, 0x0cef,
+ 0x0cf1, 0x0cf2,
+ 0x0d02, 0x0d03,
+ 0x0d05, 0x0d0c,
+ 0x0d0e, 0x0d10,
+ 0x0d12, 0x0d3a,
+ 0x0d3d, 0x0d44,
+ 0x0d46, 0x0d48,
+ 0x0d4a, 0x0d4e,
+ 0x0d57, 0x0d57,
+ 0x0d60, 0x0d63,
+ 0x0d66, 0x0d6f,
+ 0x0d7a, 0x0d7f,
+ 0x0d82, 0x0d83,
+ 0x0d85, 0x0d96,
+ 0x0d9a, 0x0db1,
+ 0x0db3, 0x0dbb,
+ 0x0dbd, 0x0dbd,
+ 0x0dc0, 0x0dc6,
+ 0x0dca, 0x0dca,
+ 0x0dcf, 0x0dd4,
+ 0x0dd6, 0x0dd6,
+ 0x0dd8, 0x0ddf,
+ 0x0df2, 0x0df3,
+ 0x0e01, 0x0e3a,
+ 0x0e40, 0x0e4e,
+ 0x0e50, 0x0e59,
+ 0x0e81, 0x0e82,
+ 0x0e84, 0x0e84,
+ 0x0e87, 0x0e88,
+ 0x0e8a, 0x0e8a,
+ 0x0e8d, 0x0e8d,
+ 0x0e94, 0x0e97,
+ 0x0e99, 0x0e9f,
+ 0x0ea1, 0x0ea3,
+ 0x0ea5, 0x0ea5,
+ 0x0ea7, 0x0ea7,
+ 0x0eaa, 0x0eab,
+ 0x0ead, 0x0eb9,
+ 0x0ebb, 0x0ebd,
+ 0x0ec0, 0x0ec4,
+ 0x0ec6, 0x0ec6,
+ 0x0ec8, 0x0ecd,
+ 0x0ed0, 0x0ed9,
+ 0x0edc, 0x0edd,
+ 0x0f00, 0x0f00,
+ 0x0f18, 0x0f19,
+ 0x0f20, 0x0f29,
+ 0x0f35, 0x0f35,
+ 0x0f37, 0x0f37,
+ 0x0f39, 0x0f39,
+ 0x0f3e, 0x0f47,
+ 0x0f49, 0x0f6c,
+ 0x0f71, 0x0f84,
+ 0x0f86, 0x0f97,
+ 0x0f99, 0x0fbc,
+ 0x0fc6, 0x0fc6,
+ 0x1000, 0x1049,
+ 0x1050, 0x109d,
+ 0x10a0, 0x10c5,
+ 0x10d0, 0x10fa,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
+ 0x124a, 0x124d,
+ 0x1250, 0x1256,
+ 0x1258, 0x1258,
+ 0x125a, 0x125d,
+ 0x1260, 0x1288,
+ 0x128a, 0x128d,
+ 0x1290, 0x12b0,
+ 0x12b2, 0x12b5,
+ 0x12b8, 0x12be,
+ 0x12c0, 0x12c0,
+ 0x12c2, 0x12c5,
+ 0x12c8, 0x12d6,
+ 0x12d8, 0x1310,
+ 0x1312, 0x1315,
+ 0x1318, 0x135a,
+ 0x135d, 0x135f,
+ 0x1380, 0x138f,
+ 0x13a0, 0x13f4,
+ 0x1401, 0x166c,
+ 0x166f, 0x167f,
+ 0x1681, 0x169a,
+ 0x16a0, 0x16ea,
+ 0x16ee, 0x16f0,
+ 0x1700, 0x170c,
+ 0x170e, 0x1714,
+ 0x1720, 0x1734,
+ 0x1740, 0x1753,
+ 0x1760, 0x176c,
+ 0x176e, 0x1770,
+ 0x1772, 0x1773,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17d3,
+ 0x17d7, 0x17d7,
+ 0x17dc, 0x17dd,
+ 0x17e0, 0x17e9,
+ 0x180b, 0x180d,
+ 0x1810, 0x1819,
+ 0x1820, 0x1877,
+ 0x1880, 0x18aa,
+ 0x18b0, 0x18f5,
+ 0x1900, 0x191c,
+ 0x1920, 0x192b,
+ 0x1930, 0x193b,
+ 0x1946, 0x196d,
+ 0x1970, 0x1974,
+ 0x1980, 0x19ab,
+ 0x19b0, 0x19c9,
+ 0x19d0, 0x19d9,
+ 0x1a00, 0x1a1b,
+ 0x1a20, 0x1a5e,
+ 0x1a60, 0x1a7c,
+ 0x1a7f, 0x1a89,
+ 0x1a90, 0x1a99,
+ 0x1aa7, 0x1aa7,
+ 0x1b00, 0x1b4b,
+ 0x1b50, 0x1b59,
+ 0x1b6b, 0x1b73,
+ 0x1b80, 0x1baa,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1bf3,
+ 0x1c00, 0x1c37,
+ 0x1c40, 0x1c49,
+ 0x1c4d, 0x1c7d,
+ 0x1cd0, 0x1cd2,
+ 0x1cd4, 0x1cf2,
+ 0x1d00, 0x1de6,
+ 0x1dfc, 0x1f15,
+ 0x1f18, 0x1f1d,
+ 0x1f20, 0x1f45,
+ 0x1f48, 0x1f4d,
+ 0x1f50, 0x1f57,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f7d,
+ 0x1f80, 0x1fb4,
+ 0x1fb6, 0x1fbc,
+ 0x1fbe, 0x1fbe,
+ 0x1fc2, 0x1fc4,
+ 0x1fc6, 0x1fcc,
+ 0x1fd0, 0x1fd3,
+ 0x1fd6, 0x1fdb,
+ 0x1fe0, 0x1fec,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ffc,
+ 0x203f, 0x2040,
+ 0x2054, 0x2054,
+ 0x2071, 0x2071,
+ 0x207f, 0x207f,
+ 0x2090, 0x209c,
+ 0x20d0, 0x20f0,
+ 0x2102, 0x2102,
+ 0x2107, 0x2107,
+ 0x210a, 0x2113,
+ 0x2115, 0x2115,
+ 0x2119, 0x211d,
+ 0x2124, 0x2124,
+ 0x2126, 0x2126,
+ 0x2128, 0x2128,
+ 0x212a, 0x212d,
+ 0x212f, 0x2139,
+ 0x213c, 0x213f,
+ 0x2145, 0x2149,
+ 0x214e, 0x214e,
+ 0x2160, 0x2188,
+ 0x24b6, 0x24e9,
+ 0x2c00, 0x2c2e,
+ 0x2c30, 0x2c5e,
+ 0x2c60, 0x2ce4,
+ 0x2ceb, 0x2cf1,
+ 0x2d00, 0x2d25,
+ 0x2d30, 0x2d65,
+ 0x2d6f, 0x2d6f,
+ 0x2d7f, 0x2d96,
+ 0x2da0, 0x2da6,
+ 0x2da8, 0x2dae,
+ 0x2db0, 0x2db6,
+ 0x2db8, 0x2dbe,
+ 0x2dc0, 0x2dc6,
+ 0x2dc8, 0x2dce,
+ 0x2dd0, 0x2dd6,
+ 0x2dd8, 0x2dde,
0x2de0, 0x2dff,
-}; /* CR_In_Cyrillic_Extended_A */
-
-/* 'In_Supplemental_Punctuation': Block */
-static const OnigCodePoint CR_In_Supplemental_Punctuation[] = {
- 1,
- 0x2e00, 0x2e7f,
-}; /* CR_In_Supplemental_Punctuation */
-
-/* 'In_CJK_Radicals_Supplement': Block */
-static const OnigCodePoint CR_In_CJK_Radicals_Supplement[] = {
- 1,
- 0x2e80, 0x2eff,
-}; /* CR_In_CJK_Radicals_Supplement */
-
-/* 'In_Kangxi_Radicals': Block */
-static const OnigCodePoint CR_In_Kangxi_Radicals[] = {
- 1,
- 0x2f00, 0x2fdf,
-}; /* CR_In_Kangxi_Radicals */
-
-/* 'In_Ideographic_Description_Characters': Block */
-static const OnigCodePoint CR_In_Ideographic_Description_Characters[] = {
- 1,
- 0x2ff0, 0x2fff,
-}; /* CR_In_Ideographic_Description_Characters */
-
-/* 'In_CJK_Symbols_and_Punctuation': Block */
-static const OnigCodePoint CR_In_CJK_Symbols_and_Punctuation[] = {
- 1,
- 0x3000, 0x303f,
-}; /* CR_In_CJK_Symbols_and_Punctuation */
-
-/* 'In_Hiragana': Block */
-static const OnigCodePoint CR_In_Hiragana[] = {
- 1,
- 0x3040, 0x309f,
-}; /* CR_In_Hiragana */
-
-/* 'In_Katakana': Block */
-static const OnigCodePoint CR_In_Katakana[] = {
- 1,
- 0x30a0, 0x30ff,
-}; /* CR_In_Katakana */
-
-/* 'In_Bopomofo': Block */
-static const OnigCodePoint CR_In_Bopomofo[] = {
- 1,
- 0x3100, 0x312f,
-}; /* CR_In_Bopomofo */
-
-/* 'In_Hangul_Compatibility_Jamo': Block */
-static const OnigCodePoint CR_In_Hangul_Compatibility_Jamo[] = {
- 1,
- 0x3130, 0x318f,
-}; /* CR_In_Hangul_Compatibility_Jamo */
-
-/* 'In_Kanbun': Block */
-static const OnigCodePoint CR_In_Kanbun[] = {
- 1,
- 0x3190, 0x319f,
-}; /* CR_In_Kanbun */
-
-/* 'In_Bopomofo_Extended': Block */
-static const OnigCodePoint CR_In_Bopomofo_Extended[] = {
- 1,
- 0x31a0, 0x31bf,
-}; /* CR_In_Bopomofo_Extended */
-
-/* 'In_CJK_Strokes': Block */
-static const OnigCodePoint CR_In_CJK_Strokes[] = {
- 1,
- 0x31c0, 0x31ef,
-}; /* CR_In_CJK_Strokes */
-
-/* 'In_Katakana_Phonetic_Extensions': Block */
-static const OnigCodePoint CR_In_Katakana_Phonetic_Extensions[] = {
- 1,
+ 0x2e2f, 0x2e2f,
+ 0x3005, 0x3007,
+ 0x3021, 0x302f,
+ 0x3031, 0x3035,
+ 0x3038, 0x303c,
+ 0x3041, 0x3096,
+ 0x3099, 0x309a,
+ 0x309d, 0x309f,
+ 0x30a1, 0x30fa,
+ 0x30fc, 0x30ff,
+ 0x3105, 0x312d,
+ 0x3131, 0x318e,
+ 0x31a0, 0x31ba,
0x31f0, 0x31ff,
-}; /* CR_In_Katakana_Phonetic_Extensions */
-
-/* 'In_Enclosed_CJK_Letters_and_Months': Block */
-static const OnigCodePoint CR_In_Enclosed_CJK_Letters_and_Months[] = {
- 1,
- 0x3200, 0x32ff,
-}; /* CR_In_Enclosed_CJK_Letters_and_Months */
-
-/* 'In_CJK_Compatibility': Block */
-static const OnigCodePoint CR_In_CJK_Compatibility[] = {
- 1,
- 0x3300, 0x33ff,
-}; /* CR_In_CJK_Compatibility */
-
-/* 'In_CJK_Unified_Ideographs_Extension_A': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_A[] = {
- 1,
- 0x3400, 0x4dbf,
-}; /* CR_In_CJK_Unified_Ideographs_Extension_A */
-
-/* 'In_Yijing_Hexagram_Symbols': Block */
-static const OnigCodePoint CR_In_Yijing_Hexagram_Symbols[] = {
- 1,
- 0x4dc0, 0x4dff,
-}; /* CR_In_Yijing_Hexagram_Symbols */
-
-/* 'In_CJK_Unified_Ideographs': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs[] = {
- 1,
- 0x4e00, 0x9fff,
-}; /* CR_In_CJK_Unified_Ideographs */
-
-/* 'In_Yi_Syllables': Block */
-static const OnigCodePoint CR_In_Yi_Syllables[] = {
- 1,
- 0xa000, 0xa48f,
-}; /* CR_In_Yi_Syllables */
-
-/* 'In_Yi_Radicals': Block */
-static const OnigCodePoint CR_In_Yi_Radicals[] = {
- 1,
- 0xa490, 0xa4cf,
-}; /* CR_In_Yi_Radicals */
-
-/* 'In_Lisu': Block */
-#define CR_In_Lisu CR_Lisu
-
-/* 'In_Vai': Block */
-static const OnigCodePoint CR_In_Vai[] = {
- 1,
- 0xa500, 0xa63f,
-}; /* CR_In_Vai */
-
-/* 'In_Cyrillic_Extended_B': Block */
-static const OnigCodePoint CR_In_Cyrillic_Extended_B[] = {
- 1,
- 0xa640, 0xa69f,
-}; /* CR_In_Cyrillic_Extended_B */
-
-/* 'In_Bamum': Block */
-static const OnigCodePoint CR_In_Bamum[] = {
- 1,
- 0xa6a0, 0xa6ff,
-}; /* CR_In_Bamum */
-
-/* 'In_Modifier_Tone_Letters': Block */
-static const OnigCodePoint CR_In_Modifier_Tone_Letters[] = {
- 1,
- 0xa700, 0xa71f,
-}; /* CR_In_Modifier_Tone_Letters */
-
-/* 'In_Latin_Extended_D': Block */
-static const OnigCodePoint CR_In_Latin_Extended_D[] = {
- 1,
- 0xa720, 0xa7ff,
-}; /* CR_In_Latin_Extended_D */
-
-/* 'In_Syloti_Nagri': Block */
-static const OnigCodePoint CR_In_Syloti_Nagri[] = {
- 1,
- 0xa800, 0xa82f,
-}; /* CR_In_Syloti_Nagri */
-
-/* 'In_Common_Indic_Number_Forms': Block */
-static const OnigCodePoint CR_In_Common_Indic_Number_Forms[] = {
- 1,
- 0xa830, 0xa83f,
-}; /* CR_In_Common_Indic_Number_Forms */
-
-/* 'In_Phags_pa': Block */
-static const OnigCodePoint CR_In_Phags_pa[] = {
- 1,
- 0xa840, 0xa87f,
-}; /* CR_In_Phags_pa */
-
-/* 'In_Saurashtra': Block */
-static const OnigCodePoint CR_In_Saurashtra[] = {
- 1,
- 0xa880, 0xa8df,
-}; /* CR_In_Saurashtra */
-
-/* 'In_Devanagari_Extended': Block */
-static const OnigCodePoint CR_In_Devanagari_Extended[] = {
- 1,
- 0xa8e0, 0xa8ff,
-}; /* CR_In_Devanagari_Extended */
-
-/* 'In_Kayah_Li': Block */
-#define CR_In_Kayah_Li CR_Kayah_Li
-
-/* 'In_Rejang': Block */
-static const OnigCodePoint CR_In_Rejang[] = {
- 1,
- 0xa930, 0xa95f,
-}; /* CR_In_Rejang */
-
-/* 'In_Hangul_Jamo_Extended_A': Block */
-static const OnigCodePoint CR_In_Hangul_Jamo_Extended_A[] = {
- 1,
- 0xa960, 0xa97f,
-}; /* CR_In_Hangul_Jamo_Extended_A */
-
-/* 'In_Javanese': Block */
-static const OnigCodePoint CR_In_Javanese[] = {
- 1,
- 0xa980, 0xa9df,
-}; /* CR_In_Javanese */
-
-/* 'In_Cham': Block */
-static const OnigCodePoint CR_In_Cham[] = {
- 1,
- 0xaa00, 0xaa5f,
-}; /* CR_In_Cham */
-
-/* 'In_Myanmar_Extended_A': Block */
-static const OnigCodePoint CR_In_Myanmar_Extended_A[] = {
- 1,
- 0xaa60, 0xaa7f,
-}; /* CR_In_Myanmar_Extended_A */
-
-/* 'In_Tai_Viet': Block */
-static const OnigCodePoint CR_In_Tai_Viet[] = {
- 1,
- 0xaa80, 0xaadf,
-}; /* CR_In_Tai_Viet */
-
-/* 'In_Meetei_Mayek_Extensions': Block */
-static const OnigCodePoint CR_In_Meetei_Mayek_Extensions[] = {
- 1,
- 0xaae0, 0xaaff,
-}; /* CR_In_Meetei_Mayek_Extensions */
-
-/* 'In_Ethiopic_Extended_A': Block */
-static const OnigCodePoint CR_In_Ethiopic_Extended_A[] = {
- 1,
- 0xab00, 0xab2f,
-}; /* CR_In_Ethiopic_Extended_A */
-
-/* 'In_Meetei_Mayek': Block */
-static const OnigCodePoint CR_In_Meetei_Mayek[] = {
- 1,
- 0xabc0, 0xabff,
-}; /* CR_In_Meetei_Mayek */
-
-/* 'In_Hangul_Syllables': Block */
-static const OnigCodePoint CR_In_Hangul_Syllables[] = {
- 1,
- 0xac00, 0xd7af,
-}; /* CR_In_Hangul_Syllables */
-
-/* 'In_Hangul_Jamo_Extended_B': Block */
-static const OnigCodePoint CR_In_Hangul_Jamo_Extended_B[] = {
- 1,
- 0xd7b0, 0xd7ff,
-}; /* CR_In_Hangul_Jamo_Extended_B */
-
-/* 'In_High_Surrogates': Block */
-static const OnigCodePoint CR_In_High_Surrogates[] = {
- 1,
- 0xd800, 0xdb7f,
-}; /* CR_In_High_Surrogates */
-
-/* 'In_High_Private_Use_Surrogates': Block */
-static const OnigCodePoint CR_In_High_Private_Use_Surrogates[] = {
- 1,
- 0xdb80, 0xdbff,
-}; /* CR_In_High_Private_Use_Surrogates */
-
-/* 'In_Low_Surrogates': Block */
-static const OnigCodePoint CR_In_Low_Surrogates[] = {
- 1,
- 0xdc00, 0xdfff,
-}; /* CR_In_Low_Surrogates */
-
-/* 'In_Private_Use_Area': Block */
-static const OnigCodePoint CR_In_Private_Use_Area[] = {
- 1,
- 0xe000, 0xf8ff,
-}; /* CR_In_Private_Use_Area */
-
-/* 'In_CJK_Compatibility_Ideographs': Block */
-static const OnigCodePoint CR_In_CJK_Compatibility_Ideographs[] = {
- 1,
- 0xf900, 0xfaff,
-}; /* CR_In_CJK_Compatibility_Ideographs */
-
-/* 'In_Alphabetic_Presentation_Forms': Block */
-static const OnigCodePoint CR_In_Alphabetic_Presentation_Forms[] = {
- 1,
- 0xfb00, 0xfb4f,
-}; /* CR_In_Alphabetic_Presentation_Forms */
-
-/* 'In_Arabic_Presentation_Forms_A': Block */
-static const OnigCodePoint CR_In_Arabic_Presentation_Forms_A[] = {
- 1,
- 0xfb50, 0xfdff,
-}; /* CR_In_Arabic_Presentation_Forms_A */
-
-/* 'In_Variation_Selectors': Block */
-static const OnigCodePoint CR_In_Variation_Selectors[] = {
- 1,
+ 0x3400, 0x4db5,
+ 0x4e00, 0x9fcb,
+ 0xa000, 0xa48c,
+ 0xa4d0, 0xa4fd,
+ 0xa500, 0xa60c,
+ 0xa610, 0xa62b,
+ 0xa640, 0xa672,
+ 0xa67c, 0xa67d,
+ 0xa67f, 0xa697,
+ 0xa6a0, 0xa6f1,
+ 0xa717, 0xa71f,
+ 0xa722, 0xa788,
+ 0xa78b, 0xa78e,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa827,
+ 0xa840, 0xa873,
+ 0xa880, 0xa8c4,
+ 0xa8d0, 0xa8d9,
+ 0xa8e0, 0xa8f7,
+ 0xa8fb, 0xa8fb,
+ 0xa900, 0xa92d,
+ 0xa930, 0xa953,
+ 0xa960, 0xa97c,
+ 0xa980, 0xa9c0,
+ 0xa9cf, 0xa9d9,
+ 0xaa00, 0xaa36,
+ 0xaa40, 0xaa4d,
+ 0xaa50, 0xaa59,
+ 0xaa60, 0xaa76,
+ 0xaa7a, 0xaa7b,
+ 0xaa80, 0xaac2,
+ 0xaadb, 0xaadd,
+ 0xab01, 0xab06,
+ 0xab09, 0xab0e,
+ 0xab11, 0xab16,
+ 0xab20, 0xab26,
+ 0xab28, 0xab2e,
+ 0xabc0, 0xabea,
+ 0xabec, 0xabed,
+ 0xabf0, 0xabf9,
+ 0xac00, 0xd7a3,
+ 0xd7b0, 0xd7c6,
+ 0xd7cb, 0xd7fb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
+ 0xfa70, 0xfad9,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xfb1d, 0xfb28,
+ 0xfb2a, 0xfb36,
+ 0xfb38, 0xfb3c,
+ 0xfb3e, 0xfb3e,
+ 0xfb40, 0xfb41,
+ 0xfb43, 0xfb44,
+ 0xfb46, 0xfbb1,
+ 0xfbd3, 0xfd3d,
+ 0xfd50, 0xfd8f,
+ 0xfd92, 0xfdc7,
+ 0xfdf0, 0xfdfb,
0xfe00, 0xfe0f,
-}; /* CR_In_Variation_Selectors */
-
-/* 'In_Vertical_Forms': Block */
-static const OnigCodePoint CR_In_Vertical_Forms[] = {
- 1,
- 0xfe10, 0xfe1f,
-}; /* CR_In_Vertical_Forms */
-
-/* 'In_Combining_Half_Marks': Block */
-static const OnigCodePoint CR_In_Combining_Half_Marks[] = {
- 1,
- 0xfe20, 0xfe2f,
-}; /* CR_In_Combining_Half_Marks */
-
-/* 'In_CJK_Compatibility_Forms': Block */
-static const OnigCodePoint CR_In_CJK_Compatibility_Forms[] = {
- 1,
- 0xfe30, 0xfe4f,
-}; /* CR_In_CJK_Compatibility_Forms */
-
-/* 'In_Small_Form_Variants': Block */
-static const OnigCodePoint CR_In_Small_Form_Variants[] = {
- 1,
- 0xfe50, 0xfe6f,
-}; /* CR_In_Small_Form_Variants */
-
-/* 'In_Arabic_Presentation_Forms_B': Block */
-static const OnigCodePoint CR_In_Arabic_Presentation_Forms_B[] = {
- 1,
- 0xfe70, 0xfeff,
-}; /* CR_In_Arabic_Presentation_Forms_B */
-
-/* 'In_Halfwidth_and_Fullwidth_Forms': Block */
-static const OnigCodePoint CR_In_Halfwidth_and_Fullwidth_Forms[] = {
- 1,
- 0xff00, 0xffef,
-}; /* CR_In_Halfwidth_and_Fullwidth_Forms */
-
-/* 'In_Specials': Block */
-static const OnigCodePoint CR_In_Specials[] = {
- 1,
- 0xfff0, 0xffff,
-}; /* CR_In_Specials */
-
-/* 'In_Linear_B_Syllabary': Block */
-static const OnigCodePoint CR_In_Linear_B_Syllabary[] = {
- 1,
- 0x10000, 0x1007f,
-}; /* CR_In_Linear_B_Syllabary */
-
-/* 'In_Linear_B_Ideograms': Block */
-static const OnigCodePoint CR_In_Linear_B_Ideograms[] = {
- 1,
- 0x10080, 0x100ff,
-}; /* CR_In_Linear_B_Ideograms */
-
-/* 'In_Aegean_Numbers': Block */
-static const OnigCodePoint CR_In_Aegean_Numbers[] = {
- 1,
- 0x10100, 0x1013f,
-}; /* CR_In_Aegean_Numbers */
-
-/* 'In_Ancient_Greek_Numbers': Block */
-static const OnigCodePoint CR_In_Ancient_Greek_Numbers[] = {
- 1,
- 0x10140, 0x1018f,
-}; /* CR_In_Ancient_Greek_Numbers */
-
-/* 'In_Ancient_Symbols': Block */
-static const OnigCodePoint CR_In_Ancient_Symbols[] = {
- 1,
- 0x10190, 0x101cf,
-}; /* CR_In_Ancient_Symbols */
-
-/* 'In_Phaistos_Disc': Block */
-static const OnigCodePoint CR_In_Phaistos_Disc[] = {
- 1,
- 0x101d0, 0x101ff,
-}; /* CR_In_Phaistos_Disc */
-
-/* 'In_Lycian': Block */
-static const OnigCodePoint CR_In_Lycian[] = {
- 1,
- 0x10280, 0x1029f,
-}; /* CR_In_Lycian */
-
-/* 'In_Carian': Block */
-static const OnigCodePoint CR_In_Carian[] = {
- 1,
- 0x102a0, 0x102df,
-}; /* CR_In_Carian */
-
-/* 'In_Old_Italic': Block */
-static const OnigCodePoint CR_In_Old_Italic[] = {
- 1,
- 0x10300, 0x1032f,
-}; /* CR_In_Old_Italic */
-
-/* 'In_Gothic': Block */
-static const OnigCodePoint CR_In_Gothic[] = {
- 1,
- 0x10330, 0x1034f,
-}; /* CR_In_Gothic */
-
-/* 'In_Ugaritic': Block */
-static const OnigCodePoint CR_In_Ugaritic[] = {
- 1,
- 0x10380, 0x1039f,
-}; /* CR_In_Ugaritic */
-
-/* 'In_Old_Persian': Block */
-static const OnigCodePoint CR_In_Old_Persian[] = {
- 1,
- 0x103a0, 0x103df,
-}; /* CR_In_Old_Persian */
-
-/* 'In_Deseret': Block */
-#define CR_In_Deseret CR_Deseret
-
-/* 'In_Shavian': Block */
-#define CR_In_Shavian CR_Shavian
-
-/* 'In_Osmanya': Block */
-static const OnigCodePoint CR_In_Osmanya[] = {
- 1,
- 0x10480, 0x104af,
-}; /* CR_In_Osmanya */
-
-/* 'In_Cypriot_Syllabary': Block */
-static const OnigCodePoint CR_In_Cypriot_Syllabary[] = {
- 1,
- 0x10800, 0x1083f,
-}; /* CR_In_Cypriot_Syllabary */
-
-/* 'In_Imperial_Aramaic': Block */
-static const OnigCodePoint CR_In_Imperial_Aramaic[] = {
- 1,
- 0x10840, 0x1085f,
-}; /* CR_In_Imperial_Aramaic */
-
-/* 'In_Phoenician': Block */
-static const OnigCodePoint CR_In_Phoenician[] = {
- 1,
- 0x10900, 0x1091f,
-}; /* CR_In_Phoenician */
-
-/* 'In_Lydian': Block */
-static const OnigCodePoint CR_In_Lydian[] = {
- 1,
- 0x10920, 0x1093f,
-}; /* CR_In_Lydian */
-
-/* 'In_Meroitic_Hieroglyphs': Block */
-#define CR_In_Meroitic_Hieroglyphs CR_Meroitic_Hieroglyphs
-
-/* 'In_Meroitic_Cursive': Block */
-static const OnigCodePoint CR_In_Meroitic_Cursive[] = {
- 1,
- 0x109a0, 0x109ff,
-}; /* CR_In_Meroitic_Cursive */
-
-/* 'In_Kharoshthi': Block */
-static const OnigCodePoint CR_In_Kharoshthi[] = {
- 1,
- 0x10a00, 0x10a5f,
-}; /* CR_In_Kharoshthi */
-
-/* 'In_Old_South_Arabian': Block */
-#define CR_In_Old_South_Arabian CR_Old_South_Arabian
-
-/* 'In_Avestan': Block */
-static const OnigCodePoint CR_In_Avestan[] = {
- 1,
- 0x10b00, 0x10b3f,
-}; /* CR_In_Avestan */
-
-/* 'In_Inscriptional_Parthian': Block */
-static const OnigCodePoint CR_In_Inscriptional_Parthian[] = {
- 1,
- 0x10b40, 0x10b5f,
-}; /* CR_In_Inscriptional_Parthian */
-
-/* 'In_Inscriptional_Pahlavi': Block */
-static const OnigCodePoint CR_In_Inscriptional_Pahlavi[] = {
- 1,
- 0x10b60, 0x10b7f,
-}; /* CR_In_Inscriptional_Pahlavi */
-
-/* 'In_Old_Turkic': Block */
-static const OnigCodePoint CR_In_Old_Turkic[] = {
- 1,
- 0x10c00, 0x10c4f,
-}; /* CR_In_Old_Turkic */
-
-/* 'In_Rumi_Numeral_Symbols': Block */
-static const OnigCodePoint CR_In_Rumi_Numeral_Symbols[] = {
- 1,
- 0x10e60, 0x10e7f,
-}; /* CR_In_Rumi_Numeral_Symbols */
-
-/* 'In_Brahmi': Block */
-static const OnigCodePoint CR_In_Brahmi[] = {
- 1,
- 0x11000, 0x1107f,
-}; /* CR_In_Brahmi */
-
-/* 'In_Kaithi': Block */
-static const OnigCodePoint CR_In_Kaithi[] = {
- 1,
- 0x11080, 0x110cf,
-}; /* CR_In_Kaithi */
-
-/* 'In_Sora_Sompeng': Block */
-static const OnigCodePoint CR_In_Sora_Sompeng[] = {
- 1,
- 0x110d0, 0x110ff,
-}; /* CR_In_Sora_Sompeng */
-
-/* 'In_Chakma': Block */
-static const OnigCodePoint CR_In_Chakma[] = {
- 1,
- 0x11100, 0x1114f,
-}; /* CR_In_Chakma */
-
-/* 'In_Sharada': Block */
-static const OnigCodePoint CR_In_Sharada[] = {
- 1,
- 0x11180, 0x111df,
-}; /* CR_In_Sharada */
-
-/* 'In_Takri': Block */
-static const OnigCodePoint CR_In_Takri[] = {
- 1,
- 0x11680, 0x116cf,
-}; /* CR_In_Takri */
-
-/* 'In_Cuneiform': Block */
-static const OnigCodePoint CR_In_Cuneiform[] = {
- 1,
- 0x12000, 0x123ff,
-}; /* CR_In_Cuneiform */
-
-/* 'In_Cuneiform_Numbers_and_Punctuation': Block */
-static const OnigCodePoint CR_In_Cuneiform_Numbers_and_Punctuation[] = {
- 1,
- 0x12400, 0x1247f,
-}; /* CR_In_Cuneiform_Numbers_and_Punctuation */
-
-/* 'In_Egyptian_Hieroglyphs': Block */
-static const OnigCodePoint CR_In_Egyptian_Hieroglyphs[] = {
- 1,
- 0x13000, 0x1342f,
-}; /* CR_In_Egyptian_Hieroglyphs */
-
-/* 'In_Bamum_Supplement': Block */
-static const OnigCodePoint CR_In_Bamum_Supplement[] = {
- 1,
- 0x16800, 0x16a3f,
-}; /* CR_In_Bamum_Supplement */
-
-/* 'In_Miao': Block */
-static const OnigCodePoint CR_In_Miao[] = {
- 1,
- 0x16f00, 0x16f9f,
-}; /* CR_In_Miao */
-
-/* 'In_Kana_Supplement': Block */
-static const OnigCodePoint CR_In_Kana_Supplement[] = {
- 1,
- 0x1b000, 0x1b0ff,
-}; /* CR_In_Kana_Supplement */
-
-/* 'In_Byzantine_Musical_Symbols': Block */
-static const OnigCodePoint CR_In_Byzantine_Musical_Symbols[] = {
- 1,
- 0x1d000, 0x1d0ff,
-}; /* CR_In_Byzantine_Musical_Symbols */
-
-/* 'In_Musical_Symbols': Block */
-static const OnigCodePoint CR_In_Musical_Symbols[] = {
- 1,
- 0x1d100, 0x1d1ff,
-}; /* CR_In_Musical_Symbols */
-
-/* 'In_Ancient_Greek_Musical_Notation': Block */
-static const OnigCodePoint CR_In_Ancient_Greek_Musical_Notation[] = {
- 1,
- 0x1d200, 0x1d24f,
-}; /* CR_In_Ancient_Greek_Musical_Notation */
-
-/* 'In_Tai_Xuan_Jing_Symbols': Block */
-static const OnigCodePoint CR_In_Tai_Xuan_Jing_Symbols[] = {
- 1,
- 0x1d300, 0x1d35f,
-}; /* CR_In_Tai_Xuan_Jing_Symbols */
-
-/* 'In_Counting_Rod_Numerals': Block */
-static const OnigCodePoint CR_In_Counting_Rod_Numerals[] = {
- 1,
- 0x1d360, 0x1d37f,
-}; /* CR_In_Counting_Rod_Numerals */
-
-/* 'In_Mathematical_Alphanumeric_Symbols': Block */
-static const OnigCodePoint CR_In_Mathematical_Alphanumeric_Symbols[] = {
- 1,
- 0x1d400, 0x1d7ff,
-}; /* CR_In_Mathematical_Alphanumeric_Symbols */
-
-/* 'In_Arabic_Mathematical_Alphabetic_Symbols': Block */
-static const OnigCodePoint CR_In_Arabic_Mathematical_Alphabetic_Symbols[] = {
- 1,
- 0x1ee00, 0x1eeff,
-}; /* CR_In_Arabic_Mathematical_Alphabetic_Symbols */
-
-/* 'In_Mahjong_Tiles': Block */
-static const OnigCodePoint CR_In_Mahjong_Tiles[] = {
- 1,
- 0x1f000, 0x1f02f,
-}; /* CR_In_Mahjong_Tiles */
-
-/* 'In_Domino_Tiles': Block */
-static const OnigCodePoint CR_In_Domino_Tiles[] = {
- 1,
- 0x1f030, 0x1f09f,
-}; /* CR_In_Domino_Tiles */
-
-/* 'In_Playing_Cards': Block */
-static const OnigCodePoint CR_In_Playing_Cards[] = {
- 1,
- 0x1f0a0, 0x1f0ff,
-}; /* CR_In_Playing_Cards */
-
-/* 'In_Enclosed_Alphanumeric_Supplement': Block */
-static const OnigCodePoint CR_In_Enclosed_Alphanumeric_Supplement[] = {
- 1,
- 0x1f100, 0x1f1ff,
-}; /* CR_In_Enclosed_Alphanumeric_Supplement */
-
-/* 'In_Enclosed_Ideographic_Supplement': Block */
-static const OnigCodePoint CR_In_Enclosed_Ideographic_Supplement[] = {
- 1,
- 0x1f200, 0x1f2ff,
-}; /* CR_In_Enclosed_Ideographic_Supplement */
-
-/* 'In_Miscellaneous_Symbols_And_Pictographs': Block */
-static const OnigCodePoint CR_In_Miscellaneous_Symbols_And_Pictographs[] = {
- 1,
- 0x1f300, 0x1f5ff,
-}; /* CR_In_Miscellaneous_Symbols_And_Pictographs */
-
-/* 'In_Emoticons': Block */
-static const OnigCodePoint CR_In_Emoticons[] = {
- 1,
- 0x1f600, 0x1f64f,
-}; /* CR_In_Emoticons */
-
-/* 'In_Transport_And_Map_Symbols': Block */
-static const OnigCodePoint CR_In_Transport_And_Map_Symbols[] = {
- 1,
- 0x1f680, 0x1f6ff,
-}; /* CR_In_Transport_And_Map_Symbols */
-
-/* 'In_Alchemical_Symbols': Block */
-static const OnigCodePoint CR_In_Alchemical_Symbols[] = {
- 1,
- 0x1f700, 0x1f77f,
-}; /* CR_In_Alchemical_Symbols */
-
-/* 'In_CJK_Unified_Ideographs_Extension_B': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_B[] = {
- 1,
- 0x20000, 0x2a6df,
-}; /* CR_In_CJK_Unified_Ideographs_Extension_B */
-
-/* 'In_CJK_Unified_Ideographs_Extension_C': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_C[] = {
- 1,
- 0x2a700, 0x2b73f,
-}; /* CR_In_CJK_Unified_Ideographs_Extension_C */
-
-/* 'In_CJK_Unified_Ideographs_Extension_D': Block */
-static const OnigCodePoint CR_In_CJK_Unified_Ideographs_Extension_D[] = {
- 1,
- 0x2b740, 0x2b81f,
-}; /* CR_In_CJK_Unified_Ideographs_Extension_D */
-
-/* 'In_CJK_Compatibility_Ideographs_Supplement': Block */
-static const OnigCodePoint CR_In_CJK_Compatibility_Ideographs_Supplement[] = {
- 1,
- 0x2f800, 0x2fa1f,
-}; /* CR_In_CJK_Compatibility_Ideographs_Supplement */
-
-/* 'In_Tags': Block */
-static const OnigCodePoint CR_In_Tags[] = {
- 1,
- 0xe0000, 0xe007f,
-}; /* CR_In_Tags */
-
-/* 'In_Variation_Selectors_Supplement': Block */
-static const OnigCodePoint CR_In_Variation_Selectors_Supplement[] = {
- 1,
+ 0xfe20, 0xfe26,
+ 0xfe33, 0xfe34,
+ 0xfe4d, 0xfe4f,
+ 0xfe70, 0xfe74,
+ 0xfe76, 0xfefc,
+ 0xff10, 0xff19,
+ 0xff21, 0xff3a,
+ 0xff3f, 0xff3f,
+ 0xff41, 0xff5a,
+ 0xff66, 0xffbe,
+ 0xffc2, 0xffc7,
+ 0xffca, 0xffcf,
+ 0xffd2, 0xffd7,
+ 0xffda, 0xffdc,
+ 0x10000, 0x1000b,
+ 0x1000d, 0x10026,
+ 0x10028, 0x1003a,
+ 0x1003c, 0x1003d,
+ 0x1003f, 0x1004d,
+ 0x10050, 0x1005d,
+ 0x10080, 0x100fa,
+ 0x10140, 0x10174,
+ 0x101fd, 0x101fd,
+ 0x10280, 0x1029c,
+ 0x102a0, 0x102d0,
+ 0x10300, 0x1031e,
+ 0x10330, 0x1034a,
+ 0x10380, 0x1039d,
+ 0x103a0, 0x103c3,
+ 0x103c8, 0x103cf,
+ 0x103d1, 0x103d5,
+ 0x10400, 0x1049d,
+ 0x104a0, 0x104a9,
+ 0x10800, 0x10805,
+ 0x10808, 0x10808,
+ 0x1080a, 0x10835,
+ 0x10837, 0x10838,
+ 0x1083c, 0x1083c,
+ 0x1083f, 0x10855,
+ 0x10900, 0x10915,
+ 0x10920, 0x10939,
+ 0x10a00, 0x10a03,
+ 0x10a05, 0x10a06,
+ 0x10a0c, 0x10a13,
+ 0x10a15, 0x10a17,
+ 0x10a19, 0x10a33,
+ 0x10a38, 0x10a3a,
+ 0x10a3f, 0x10a3f,
+ 0x10a60, 0x10a7c,
+ 0x10b00, 0x10b35,
+ 0x10b40, 0x10b55,
+ 0x10b60, 0x10b72,
+ 0x10c00, 0x10c48,
+ 0x11000, 0x11046,
+ 0x11066, 0x1106f,
+ 0x11080, 0x110ba,
+ 0x12000, 0x1236e,
+ 0x12400, 0x12462,
+ 0x13000, 0x1342e,
+ 0x16800, 0x16a38,
+ 0x1b000, 0x1b001,
+ 0x1d165, 0x1d169,
+ 0x1d16d, 0x1d172,
+ 0x1d17b, 0x1d182,
+ 0x1d185, 0x1d18b,
+ 0x1d1aa, 0x1d1ad,
+ 0x1d242, 0x1d244,
+ 0x1d400, 0x1d454,
+ 0x1d456, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d51e, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d552, 0x1d6a5,
+ 0x1d6a8, 0x1d6c0,
+ 0x1d6c2, 0x1d6da,
+ 0x1d6dc, 0x1d6fa,
+ 0x1d6fc, 0x1d714,
+ 0x1d716, 0x1d734,
+ 0x1d736, 0x1d74e,
+ 0x1d750, 0x1d76e,
+ 0x1d770, 0x1d788,
+ 0x1d78a, 0x1d7a8,
+ 0x1d7aa, 0x1d7c2,
+ 0x1d7c4, 0x1d7cb,
+ 0x1d7ce, 0x1d7ff,
+ 0x20000, 0x2a6d6,
+ 0x2a700, 0x2b734,
+ 0x2b740, 0x2b81d,
+ 0x2f800, 0x2fa1d,
0xe0100, 0xe01ef,
-}; /* CR_In_Variation_Selectors_Supplement */
+}; /* CR_Word */
-/* 'In_Supplementary_Private_Use_Area_A': Block */
-static const OnigCodePoint CR_In_Supplementary_Private_Use_Area_A[] = {
- 1,
- 0xf0000, 0xfffff,
-}; /* CR_In_Supplementary_Private_Use_Area_A */
+/* 'Alnum': [[:Alnum:]] */
+static const OnigCodePoint CR_Alnum[] = {
+ 509,
+ 0x0030, 0x0039,
+ 0x0041, 0x005a,
+ 0x0061, 0x007a,
+ 0x00aa, 0x00aa,
+ 0x00b5, 0x00b5,
+ 0x00ba, 0x00ba,
+ 0x00c0, 0x00d6,
+ 0x00d8, 0x00f6,
+ 0x00f8, 0x02c1,
+ 0x02c6, 0x02d1,
+ 0x02e0, 0x02e4,
+ 0x02ec, 0x02ec,
+ 0x02ee, 0x02ee,
+ 0x0345, 0x0345,
+ 0x0370, 0x0374,
+ 0x0376, 0x0377,
+ 0x037a, 0x037d,
+ 0x0386, 0x0386,
+ 0x0388, 0x038a,
+ 0x038c, 0x038c,
+ 0x038e, 0x03a1,
+ 0x03a3, 0x03f5,
+ 0x03f7, 0x0481,
+ 0x048a, 0x0527,
+ 0x0531, 0x0556,
+ 0x0559, 0x0559,
+ 0x0561, 0x0587,
+ 0x05b0, 0x05bd,
+ 0x05bf, 0x05bf,
+ 0x05c1, 0x05c2,
+ 0x05c4, 0x05c5,
+ 0x05c7, 0x05c7,
+ 0x05d0, 0x05ea,
+ 0x05f0, 0x05f2,
+ 0x0610, 0x061a,
+ 0x0620, 0x0657,
+ 0x0659, 0x0669,
+ 0x066e, 0x06d3,
+ 0x06d5, 0x06dc,
+ 0x06e1, 0x06e8,
+ 0x06ed, 0x06fc,
+ 0x06ff, 0x06ff,
+ 0x0710, 0x073f,
+ 0x074d, 0x07b1,
+ 0x07c0, 0x07ea,
+ 0x07f4, 0x07f5,
+ 0x07fa, 0x07fa,
+ 0x0800, 0x0817,
+ 0x081a, 0x082c,
+ 0x0840, 0x0858,
+ 0x0900, 0x093b,
+ 0x093d, 0x094c,
+ 0x094e, 0x0950,
+ 0x0955, 0x0963,
+ 0x0966, 0x096f,
+ 0x0971, 0x0977,
+ 0x0979, 0x097f,
+ 0x0981, 0x0983,
+ 0x0985, 0x098c,
+ 0x098f, 0x0990,
+ 0x0993, 0x09a8,
+ 0x09aa, 0x09b0,
+ 0x09b2, 0x09b2,
+ 0x09b6, 0x09b9,
+ 0x09bd, 0x09c4,
+ 0x09c7, 0x09c8,
+ 0x09cb, 0x09cc,
+ 0x09ce, 0x09ce,
+ 0x09d7, 0x09d7,
+ 0x09dc, 0x09dd,
+ 0x09df, 0x09e3,
+ 0x09e6, 0x09f1,
+ 0x0a01, 0x0a03,
+ 0x0a05, 0x0a0a,
+ 0x0a0f, 0x0a10,
+ 0x0a13, 0x0a28,
+ 0x0a2a, 0x0a30,
+ 0x0a32, 0x0a33,
+ 0x0a35, 0x0a36,
+ 0x0a38, 0x0a39,
+ 0x0a3e, 0x0a42,
+ 0x0a47, 0x0a48,
+ 0x0a4b, 0x0a4c,
+ 0x0a51, 0x0a51,
+ 0x0a59, 0x0a5c,
+ 0x0a5e, 0x0a5e,
+ 0x0a66, 0x0a75,
+ 0x0a81, 0x0a83,
+ 0x0a85, 0x0a8d,
+ 0x0a8f, 0x0a91,
+ 0x0a93, 0x0aa8,
+ 0x0aaa, 0x0ab0,
+ 0x0ab2, 0x0ab3,
+ 0x0ab5, 0x0ab9,
+ 0x0abd, 0x0ac5,
+ 0x0ac7, 0x0ac9,
+ 0x0acb, 0x0acc,
+ 0x0ad0, 0x0ad0,
+ 0x0ae0, 0x0ae3,
+ 0x0ae6, 0x0aef,
+ 0x0b01, 0x0b03,
+ 0x0b05, 0x0b0c,
+ 0x0b0f, 0x0b10,
+ 0x0b13, 0x0b28,
+ 0x0b2a, 0x0b30,
+ 0x0b32, 0x0b33,
+ 0x0b35, 0x0b39,
+ 0x0b3d, 0x0b44,
+ 0x0b47, 0x0b48,
+ 0x0b4b, 0x0b4c,
+ 0x0b56, 0x0b57,
+ 0x0b5c, 0x0b5d,
+ 0x0b5f, 0x0b63,
+ 0x0b66, 0x0b6f,
+ 0x0b71, 0x0b71,
+ 0x0b82, 0x0b83,
+ 0x0b85, 0x0b8a,
+ 0x0b8e, 0x0b90,
+ 0x0b92, 0x0b95,
+ 0x0b99, 0x0b9a,
+ 0x0b9c, 0x0b9c,
+ 0x0b9e, 0x0b9f,
+ 0x0ba3, 0x0ba4,
+ 0x0ba8, 0x0baa,
+ 0x0bae, 0x0bb9,
+ 0x0bbe, 0x0bc2,
+ 0x0bc6, 0x0bc8,
+ 0x0bca, 0x0bcc,
+ 0x0bd0, 0x0bd0,
+ 0x0bd7, 0x0bd7,
+ 0x0be6, 0x0bef,
+ 0x0c01, 0x0c03,
+ 0x0c05, 0x0c0c,
+ 0x0c0e, 0x0c10,
+ 0x0c12, 0x0c28,
+ 0x0c2a, 0x0c33,
+ 0x0c35, 0x0c39,
+ 0x0c3d, 0x0c44,
+ 0x0c46, 0x0c48,
+ 0x0c4a, 0x0c4c,
+ 0x0c55, 0x0c56,
+ 0x0c58, 0x0c59,
+ 0x0c60, 0x0c63,
+ 0x0c66, 0x0c6f,
+ 0x0c82, 0x0c83,
+ 0x0c85, 0x0c8c,
+ 0x0c8e, 0x0c90,
+ 0x0c92, 0x0ca8,
+ 0x0caa, 0x0cb3,
+ 0x0cb5, 0x0cb9,
+ 0x0cbd, 0x0cc4,
+ 0x0cc6, 0x0cc8,
+ 0x0cca, 0x0ccc,
+ 0x0cd5, 0x0cd6,
+ 0x0cde, 0x0cde,
+ 0x0ce0, 0x0ce3,
+ 0x0ce6, 0x0cef,
+ 0x0cf1, 0x0cf2,
+ 0x0d02, 0x0d03,
+ 0x0d05, 0x0d0c,
+ 0x0d0e, 0x0d10,
+ 0x0d12, 0x0d3a,
+ 0x0d3d, 0x0d44,
+ 0x0d46, 0x0d48,
+ 0x0d4a, 0x0d4c,
+ 0x0d4e, 0x0d4e,
+ 0x0d57, 0x0d57,
+ 0x0d60, 0x0d63,
+ 0x0d66, 0x0d6f,
+ 0x0d7a, 0x0d7f,
+ 0x0d82, 0x0d83,
+ 0x0d85, 0x0d96,
+ 0x0d9a, 0x0db1,
+ 0x0db3, 0x0dbb,
+ 0x0dbd, 0x0dbd,
+ 0x0dc0, 0x0dc6,
+ 0x0dcf, 0x0dd4,
+ 0x0dd6, 0x0dd6,
+ 0x0dd8, 0x0ddf,
+ 0x0df2, 0x0df3,
+ 0x0e01, 0x0e3a,
+ 0x0e40, 0x0e46,
+ 0x0e4d, 0x0e4d,
+ 0x0e50, 0x0e59,
+ 0x0e81, 0x0e82,
+ 0x0e84, 0x0e84,
+ 0x0e87, 0x0e88,
+ 0x0e8a, 0x0e8a,
+ 0x0e8d, 0x0e8d,
+ 0x0e94, 0x0e97,
+ 0x0e99, 0x0e9f,
+ 0x0ea1, 0x0ea3,
+ 0x0ea5, 0x0ea5,
+ 0x0ea7, 0x0ea7,
+ 0x0eaa, 0x0eab,
+ 0x0ead, 0x0eb9,
+ 0x0ebb, 0x0ebd,
+ 0x0ec0, 0x0ec4,
+ 0x0ec6, 0x0ec6,
+ 0x0ecd, 0x0ecd,
+ 0x0ed0, 0x0ed9,
+ 0x0edc, 0x0edd,
+ 0x0f00, 0x0f00,
+ 0x0f20, 0x0f29,
+ 0x0f40, 0x0f47,
+ 0x0f49, 0x0f6c,
+ 0x0f71, 0x0f81,
+ 0x0f88, 0x0f97,
+ 0x0f99, 0x0fbc,
+ 0x1000, 0x1036,
+ 0x1038, 0x1038,
+ 0x103b, 0x1049,
+ 0x1050, 0x1062,
+ 0x1065, 0x1068,
+ 0x106e, 0x1086,
+ 0x108e, 0x108e,
+ 0x1090, 0x1099,
+ 0x109c, 0x109d,
+ 0x10a0, 0x10c5,
+ 0x10d0, 0x10fa,
+ 0x10fc, 0x10fc,
+ 0x1100, 0x1248,
+ 0x124a, 0x124d,
+ 0x1250, 0x1256,
+ 0x1258, 0x1258,
+ 0x125a, 0x125d,
+ 0x1260, 0x1288,
+ 0x128a, 0x128d,
+ 0x1290, 0x12b0,
+ 0x12b2, 0x12b5,
+ 0x12b8, 0x12be,
+ 0x12c0, 0x12c0,
+ 0x12c2, 0x12c5,
+ 0x12c8, 0x12d6,
+ 0x12d8, 0x1310,
+ 0x1312, 0x1315,
+ 0x1318, 0x135a,
+ 0x135f, 0x135f,
+ 0x1380, 0x138f,
+ 0x13a0, 0x13f4,
+ 0x1401, 0x166c,
+ 0x166f, 0x167f,
+ 0x1681, 0x169a,
+ 0x16a0, 0x16ea,
+ 0x16ee, 0x16f0,
+ 0x1700, 0x170c,
+ 0x170e, 0x1713,
+ 0x1720, 0x1733,
+ 0x1740, 0x1753,
+ 0x1760, 0x176c,
+ 0x176e, 0x1770,
+ 0x1772, 0x1773,
+ 0x1780, 0x17b3,
+ 0x17b6, 0x17c8,
+ 0x17d7, 0x17d7,
+ 0x17dc, 0x17dc,
+ 0x17e0, 0x17e9,
+ 0x1810, 0x1819,
+ 0x1820, 0x1877,
+ 0x1880, 0x18aa,
+ 0x18b0, 0x18f5,
+ 0x1900, 0x191c,
+ 0x1920, 0x192b,
+ 0x1930, 0x1938,
+ 0x1946, 0x196d,
+ 0x1970, 0x1974,
+ 0x1980, 0x19ab,
+ 0x19b0, 0x19c9,
+ 0x19d0, 0x19d9,
+ 0x1a00, 0x1a1b,
+ 0x1a20, 0x1a5e,
+ 0x1a61, 0x1a74,
+ 0x1a80, 0x1a89,
+ 0x1a90, 0x1a99,
+ 0x1aa7, 0x1aa7,
+ 0x1b00, 0x1b33,
+ 0x1b35, 0x1b43,
+ 0x1b45, 0x1b4b,
+ 0x1b50, 0x1b59,
+ 0x1b80, 0x1ba9,
+ 0x1bae, 0x1bb9,
+ 0x1bc0, 0x1be5,
+ 0x1be7, 0x1bf1,
+ 0x1c00, 0x1c35,
+ 0x1c40, 0x1c49,
+ 0x1c4d, 0x1c7d,
+ 0x1ce9, 0x1cec,
+ 0x1cee, 0x1cf2,
+ 0x1d00, 0x1dbf,
+ 0x1e00, 0x1f15,
+ 0x1f18, 0x1f1d,
+ 0x1f20, 0x1f45,
+ 0x1f48, 0x1f4d,
+ 0x1f50, 0x1f57,
+ 0x1f59, 0x1f59,
+ 0x1f5b, 0x1f5b,
+ 0x1f5d, 0x1f5d,
+ 0x1f5f, 0x1f7d,
+ 0x1f80, 0x1fb4,
+ 0x1fb6, 0x1fbc,
+ 0x1fbe, 0x1fbe,
+ 0x1fc2, 0x1fc4,
+ 0x1fc6, 0x1fcc,
+ 0x1fd0, 0x1fd3,
+ 0x1fd6, 0x1fdb,
+ 0x1fe0, 0x1fec,
+ 0x1ff2, 0x1ff4,
+ 0x1ff6, 0x1ffc,
+ 0x2071, 0x2071,
+ 0x207f, 0x207f,
+ 0x2090, 0x209c,
+ 0x2102, 0x2102,
+ 0x2107, 0x2107,
+ 0x210a, 0x2113,
+ 0x2115, 0x2115,
+ 0x2119, 0x211d,
+ 0x2124, 0x2124,
+ 0x2126, 0x2126,
+ 0x2128, 0x2128,
+ 0x212a, 0x212d,
+ 0x212f, 0x2139,
+ 0x213c, 0x213f,
+ 0x2145, 0x2149,
+ 0x214e, 0x214e,
+ 0x2160, 0x2188,
+ 0x24b6, 0x24e9,
+ 0x2c00, 0x2c2e,
+ 0x2c30, 0x2c5e,
+ 0x2c60, 0x2ce4,
+ 0x2ceb, 0x2cee,
+ 0x2d00, 0x2d25,
+ 0x2d30, 0x2d65,
+ 0x2d6f, 0x2d6f,
+ 0x2d80, 0x2d96,
+ 0x2da0, 0x2da6,
+ 0x2da8, 0x2dae,
+ 0x2db0, 0x2db6,
+ 0x2db8, 0x2dbe,
+ 0x2dc0, 0x2dc6,
+ 0x2dc8, 0x2dce,
+ 0x2dd0, 0x2dd6,
+ 0x2dd8, 0x2dde,
+ 0x2de0, 0x2dff,
+ 0x2e2f, 0x2e2f,
+ 0x3005, 0x3007,
+ 0x3021, 0x3029,
+ 0x3031, 0x3035,
+ 0x3038, 0x303c,
+ 0x3041, 0x3096,
+ 0x309d, 0x309f,
+ 0x30a1, 0x30fa,
+ 0x30fc, 0x30ff,
+ 0x3105, 0x312d,
+ 0x3131, 0x318e,
+ 0x31a0, 0x31ba,
+ 0x31f0, 0x31ff,
+ 0x3400, 0x4db5,
+ 0x4e00, 0x9fcb,
+ 0xa000, 0xa48c,
+ 0xa4d0, 0xa4fd,
+ 0xa500, 0xa60c,
+ 0xa610, 0xa62b,
+ 0xa640, 0xa66e,
+ 0xa67f, 0xa697,
+ 0xa6a0, 0xa6ef,
+ 0xa717, 0xa71f,
+ 0xa722, 0xa788,
+ 0xa78b, 0xa78e,
+ 0xa790, 0xa791,
+ 0xa7a0, 0xa7a9,
+ 0xa7fa, 0xa801,
+ 0xa803, 0xa805,
+ 0xa807, 0xa80a,
+ 0xa80c, 0xa827,
+ 0xa840, 0xa873,
+ 0xa880, 0xa8c3,
+ 0xa8d0, 0xa8d9,
+ 0xa8f2, 0xa8f7,
+ 0xa8fb, 0xa8fb,
+ 0xa900, 0xa92a,
+ 0xa930, 0xa952,
+ 0xa960, 0xa97c,
+ 0xa980, 0xa9b2,
+ 0xa9b4, 0xa9bf,
+ 0xa9cf, 0xa9d9,
+ 0xaa00, 0xaa36,
+ 0xaa40, 0xaa4d,
+ 0xaa50, 0xaa59,
+ 0xaa60, 0xaa76,
+ 0xaa7a, 0xaa7a,
+ 0xaa80, 0xaabe,
+ 0xaac0, 0xaac0,
+ 0xaac2, 0xaac2,
+ 0xaadb, 0xaadd,
+ 0xab01, 0xab06,
+ 0xab09, 0xab0e,
+ 0xab11, 0xab16,
+ 0xab20, 0xab26,
+ 0xab28, 0xab2e,
+ 0xabc0, 0xabea,
+ 0xabf0, 0xabf9,
+ 0xac00, 0xd7a3,
+ 0xd7b0, 0xd7c6,
+ 0xd7cb, 0xd7fb,
+ 0xf900, 0xfa2d,
+ 0xfa30, 0xfa6d,
+ 0xfa70, 0xfad9,
+ 0xfb00, 0xfb06,
+ 0xfb13, 0xfb17,
+ 0xfb1d, 0xfb28,
+ 0xfb2a, 0xfb36,
+ 0xfb38, 0xfb3c,
+ 0xfb3e, 0xfb3e,
+ 0xfb40, 0xfb41,
+ 0xfb43, 0xfb44,
+ 0xfb46, 0xfbb1,
+ 0xfbd3, 0xfd3d,
+ 0xfd50, 0xfd8f,
+ 0xfd92, 0xfdc7,
+ 0xfdf0, 0xfdfb,
+ 0xfe70, 0xfe74,
+ 0xfe76, 0xfefc,
+ 0xff10, 0xff19,
+ 0xff21, 0xff3a,
+ 0xff41, 0xff5a,
+ 0xff66, 0xffbe,
+ 0xffc2, 0xffc7,
+ 0xffca, 0xffcf,
+ 0xffd2, 0xffd7,
+ 0xffda, 0xffdc,
+ 0x10000, 0x1000b,
+ 0x1000d, 0x10026,
+ 0x10028, 0x1003a,
+ 0x1003c, 0x1003d,
+ 0x1003f, 0x1004d,
+ 0x10050, 0x1005d,
+ 0x10080, 0x100fa,
+ 0x10140, 0x10174,
+ 0x10280, 0x1029c,
+ 0x102a0, 0x102d0,
+ 0x10300, 0x1031e,
+ 0x10330, 0x1034a,
+ 0x10380, 0x1039d,
+ 0x103a0, 0x103c3,
+ 0x103c8, 0x103cf,
+ 0x103d1, 0x103d5,
+ 0x10400, 0x1049d,
+ 0x104a0, 0x104a9,
+ 0x10800, 0x10805,
+ 0x10808, 0x10808,
+ 0x1080a, 0x10835,
+ 0x10837, 0x10838,
+ 0x1083c, 0x1083c,
+ 0x1083f, 0x10855,
+ 0x10900, 0x10915,
+ 0x10920, 0x10939,
+ 0x10a00, 0x10a03,
+ 0x10a05, 0x10a06,
+ 0x10a0c, 0x10a13,
+ 0x10a15, 0x10a17,
+ 0x10a19, 0x10a33,
+ 0x10a60, 0x10a7c,
+ 0x10b00, 0x10b35,
+ 0x10b40, 0x10b55,
+ 0x10b60, 0x10b72,
+ 0x10c00, 0x10c48,
+ 0x11000, 0x11045,
+ 0x11066, 0x1106f,
+ 0x11082, 0x110b8,
+ 0x12000, 0x1236e,
+ 0x12400, 0x12462,
+ 0x13000, 0x1342e,
+ 0x16800, 0x16a38,
+ 0x1b000, 0x1b001,
+ 0x1d400, 0x1d454,
+ 0x1d456, 0x1d49c,
+ 0x1d49e, 0x1d49f,
+ 0x1d4a2, 0x1d4a2,
+ 0x1d4a5, 0x1d4a6,
+ 0x1d4a9, 0x1d4ac,
+ 0x1d4ae, 0x1d4b9,
+ 0x1d4bb, 0x1d4bb,
+ 0x1d4bd, 0x1d4c3,
+ 0x1d4c5, 0x1d505,
+ 0x1d507, 0x1d50a,
+ 0x1d50d, 0x1d514,
+ 0x1d516, 0x1d51c,
+ 0x1d51e, 0x1d539,
+ 0x1d53b, 0x1d53e,
+ 0x1d540, 0x1d544,
+ 0x1d546, 0x1d546,
+ 0x1d54a, 0x1d550,
+ 0x1d552, 0x1d6a5,
+ 0x1d6a8, 0x1d6c0,
+ 0x1d6c2, 0x1d6da,
+ 0x1d6dc, 0x1d6fa,
+ 0x1d6fc, 0x1d714,
+ 0x1d716, 0x1d734,
+ 0x1d736, 0x1d74e,
+ 0x1d750, 0x1d76e,
+ 0x1d770, 0x1d788,
+ 0x1d78a, 0x1d7a8,
+ 0x1d7aa, 0x1d7c2,
+ 0x1d7c4, 0x1d7cb,
+ 0x1d7ce, 0x1d7ff,
+ 0x20000, 0x2a6d6,
+ 0x2a700, 0x2b734,
+ 0x2b740, 0x2b81d,
+ 0x2f800, 0x2fa1d,
+}; /* CR_Alnum */
-/* 'In_Supplementary_Private_Use_Area_B': Block */
-static const OnigCodePoint CR_In_Supplementary_Private_Use_Area_B[] = {
+/* 'ASCII': [[:ASCII:]] */
+static const OnigCodePoint CR_ASCII[] = {
1,
- 0x100000, 0x10ffff,
-}; /* CR_In_Supplementary_Private_Use_Area_B */
-
-/* 'In_No_Block': Block */
-static const OnigCodePoint CR_In_No_Block[] = {
- 36,
- 0x0860, 0x089f,
- 0x1ab0, 0x1aff,
- 0x1c80, 0x1cbf,
- 0x2fe0, 0x2fef,
- 0xa9e0, 0xa9ff,
- 0xab30, 0xabbf,
- 0x10200, 0x1027f,
- 0x102e0, 0x102ff,
- 0x10350, 0x1037f,
- 0x103e0, 0x103ff,
- 0x104b0, 0x107ff,
- 0x10860, 0x108ff,
- 0x10940, 0x1097f,
- 0x10a80, 0x10aff,
- 0x10b80, 0x10bff,
- 0x10c50, 0x10e5f,
- 0x10e80, 0x10fff,
- 0x11150, 0x1117f,
- 0x111e0, 0x1167f,
- 0x116d0, 0x11fff,
- 0x12480, 0x12fff,
- 0x13430, 0x167ff,
- 0x16a40, 0x16eff,
- 0x16fa0, 0x1afff,
- 0x1b100, 0x1cfff,
- 0x1d250, 0x1d2ff,
- 0x1d380, 0x1d3ff,
- 0x1d800, 0x1edff,
- 0x1ef00, 0x1efff,
- 0x1f650, 0x1f67f,
- 0x1f780, 0x1ffff,
- 0x2a6e0, 0x2a6ff,
- 0x2b820, 0x2f7ff,
- 0x2fa20, 0xdffff,
- 0xe0080, 0xe00ff,
- 0xe01f0, 0xeffff,
-}; /* CR_In_No_Block */
-#endif /* USE_UNICODE_PROPERTIES */
+ 0x0000, 0x007f,
+}; /* CR_ASCII */
static const OnigCodePoint* const CodeRanges[] = {
CR_NEWLINE,
@@ -25484,7 +21945,6 @@ static const OnigCodePoint* const CodeRanges[] = {
CR_Co,
CR_Cs,
CR_L,
- CR_LC,
CR_Ll,
CR_Lm,
CR_Lo,
@@ -25629,13 +22089,6 @@ static const OnigCodePoint* const CodeRanges[] = {
CR_Batak,
CR_Brahmi,
CR_Mandaic,
- CR_Chakma,
- CR_Meroitic_Cursive,
- CR_Meroitic_Hieroglyphs,
- CR_Miao,
- CR_Sharada,
- CR_Sora_Sompeng,
- CR_Takri,
CR_White_Space,
CR_Bidi_Control,
CR_Join_Control,
@@ -25681,228 +22134,6 @@ static const OnigCodePoint* const CodeRanges[] = {
CR_Age_5_1,
CR_Age_5_2,
CR_Age_6_0,
- CR_Age_6_1,
- CR_In_Basic_Latin,
- CR_In_Latin_1_Supplement,
- CR_In_Latin_Extended_A,
- CR_In_Latin_Extended_B,
- CR_In_IPA_Extensions,
- CR_In_Spacing_Modifier_Letters,
- CR_In_Combining_Diacritical_Marks,
- CR_In_Greek_and_Coptic,
- CR_In_Cyrillic,
- CR_In_Cyrillic_Supplement,
- CR_In_Armenian,
- CR_In_Hebrew,
- CR_In_Arabic,
- CR_In_Syriac,
- CR_In_Arabic_Supplement,
- CR_In_Thaana,
- CR_In_NKo,
- CR_In_Samaritan,
- CR_In_Mandaic,
- CR_In_Arabic_Extended_A,
- CR_In_Devanagari,
- CR_In_Bengali,
- CR_In_Gurmukhi,
- CR_In_Gujarati,
- CR_In_Oriya,
- CR_In_Tamil,
- CR_In_Telugu,
- CR_In_Kannada,
- CR_In_Malayalam,
- CR_In_Sinhala,
- CR_In_Thai,
- CR_In_Lao,
- CR_In_Tibetan,
- CR_In_Myanmar,
- CR_In_Georgian,
- CR_In_Hangul_Jamo,
- CR_In_Ethiopic,
- CR_In_Ethiopic_Supplement,
- CR_In_Cherokee,
- CR_In_Unified_Canadian_Aboriginal_Syllabics,
- CR_In_Ogham,
- CR_In_Runic,
- CR_In_Tagalog,
- CR_In_Hanunoo,
- CR_In_Buhid,
- CR_In_Tagbanwa,
- CR_In_Khmer,
- CR_In_Mongolian,
- CR_In_Unified_Canadian_Aboriginal_Syllabics_Extended,
- CR_In_Limbu,
- CR_In_Tai_Le,
- CR_In_New_Tai_Lue,
- CR_In_Khmer_Symbols,
- CR_In_Buginese,
- CR_In_Tai_Tham,
- CR_In_Balinese,
- CR_In_Sundanese,
- CR_In_Batak,
- CR_In_Lepcha,
- CR_In_Ol_Chiki,
- CR_In_Sundanese_Supplement,
- CR_In_Vedic_Extensions,
- CR_In_Phonetic_Extensions,
- CR_In_Phonetic_Extensions_Supplement,
- CR_In_Combining_Diacritical_Marks_Supplement,
- CR_In_Latin_Extended_Additional,
- CR_In_Greek_Extended,
- CR_In_General_Punctuation,
- CR_In_Superscripts_and_Subscripts,
- CR_In_Currency_Symbols,
- CR_In_Combining_Diacritical_Marks_for_Symbols,
- CR_In_Letterlike_Symbols,
- CR_In_Number_Forms,
- CR_In_Arrows,
- CR_In_Mathematical_Operators,
- CR_In_Miscellaneous_Technical,
- CR_In_Control_Pictures,
- CR_In_Optical_Character_Recognition,
- CR_In_Enclosed_Alphanumerics,
- CR_In_Box_Drawing,
- CR_In_Block_Elements,
- CR_In_Geometric_Shapes,
- CR_In_Miscellaneous_Symbols,
- CR_In_Dingbats,
- CR_In_Miscellaneous_Mathematical_Symbols_A,
- CR_In_Supplemental_Arrows_A,
- CR_In_Braille_Patterns,
- CR_In_Supplemental_Arrows_B,
- CR_In_Miscellaneous_Mathematical_Symbols_B,
- CR_In_Supplemental_Mathematical_Operators,
- CR_In_Miscellaneous_Symbols_and_Arrows,
- CR_In_Glagolitic,
- CR_In_Latin_Extended_C,
- CR_In_Coptic,
- CR_In_Georgian_Supplement,
- CR_In_Tifinagh,
- CR_In_Ethiopic_Extended,
- CR_In_Cyrillic_Extended_A,
- CR_In_Supplemental_Punctuation,
- CR_In_CJK_Radicals_Supplement,
- CR_In_Kangxi_Radicals,
- CR_In_Ideographic_Description_Characters,
- CR_In_CJK_Symbols_and_Punctuation,
- CR_In_Hiragana,
- CR_In_Katakana,
- CR_In_Bopomofo,
- CR_In_Hangul_Compatibility_Jamo,
- CR_In_Kanbun,
- CR_In_Bopomofo_Extended,
- CR_In_CJK_Strokes,
- CR_In_Katakana_Phonetic_Extensions,
- CR_In_Enclosed_CJK_Letters_and_Months,
- CR_In_CJK_Compatibility,
- CR_In_CJK_Unified_Ideographs_Extension_A,
- CR_In_Yijing_Hexagram_Symbols,
- CR_In_CJK_Unified_Ideographs,
- CR_In_Yi_Syllables,
- CR_In_Yi_Radicals,
- CR_In_Lisu,
- CR_In_Vai,
- CR_In_Cyrillic_Extended_B,
- CR_In_Bamum,
- CR_In_Modifier_Tone_Letters,
- CR_In_Latin_Extended_D,
- CR_In_Syloti_Nagri,
- CR_In_Common_Indic_Number_Forms,
- CR_In_Phags_pa,
- CR_In_Saurashtra,
- CR_In_Devanagari_Extended,
- CR_In_Kayah_Li,
- CR_In_Rejang,
- CR_In_Hangul_Jamo_Extended_A,
- CR_In_Javanese,
- CR_In_Cham,
- CR_In_Myanmar_Extended_A,
- CR_In_Tai_Viet,
- CR_In_Meetei_Mayek_Extensions,
- CR_In_Ethiopic_Extended_A,
- CR_In_Meetei_Mayek,
- CR_In_Hangul_Syllables,
- CR_In_Hangul_Jamo_Extended_B,
- CR_In_High_Surrogates,
- CR_In_High_Private_Use_Surrogates,
- CR_In_Low_Surrogates,
- CR_In_Private_Use_Area,
- CR_In_CJK_Compatibility_Ideographs,
- CR_In_Alphabetic_Presentation_Forms,
- CR_In_Arabic_Presentation_Forms_A,
- CR_In_Variation_Selectors,
- CR_In_Vertical_Forms,
- CR_In_Combining_Half_Marks,
- CR_In_CJK_Compatibility_Forms,
- CR_In_Small_Form_Variants,
- CR_In_Arabic_Presentation_Forms_B,
- CR_In_Halfwidth_and_Fullwidth_Forms,
- CR_In_Specials,
- CR_In_Linear_B_Syllabary,
- CR_In_Linear_B_Ideograms,
- CR_In_Aegean_Numbers,
- CR_In_Ancient_Greek_Numbers,
- CR_In_Ancient_Symbols,
- CR_In_Phaistos_Disc,
- CR_In_Lycian,
- CR_In_Carian,
- CR_In_Old_Italic,
- CR_In_Gothic,
- CR_In_Ugaritic,
- CR_In_Old_Persian,
- CR_In_Deseret,
- CR_In_Shavian,
- CR_In_Osmanya,
- CR_In_Cypriot_Syllabary,
- CR_In_Imperial_Aramaic,
- CR_In_Phoenician,
- CR_In_Lydian,
- CR_In_Meroitic_Hieroglyphs,
- CR_In_Meroitic_Cursive,
- CR_In_Kharoshthi,
- CR_In_Old_South_Arabian,
- CR_In_Avestan,
- CR_In_Inscriptional_Parthian,
- CR_In_Inscriptional_Pahlavi,
- CR_In_Old_Turkic,
- CR_In_Rumi_Numeral_Symbols,
- CR_In_Brahmi,
- CR_In_Kaithi,
- CR_In_Sora_Sompeng,
- CR_In_Chakma,
- CR_In_Sharada,
- CR_In_Takri,
- CR_In_Cuneiform,
- CR_In_Cuneiform_Numbers_and_Punctuation,
- CR_In_Egyptian_Hieroglyphs,
- CR_In_Bamum_Supplement,
- CR_In_Miao,
- CR_In_Kana_Supplement,
- CR_In_Byzantine_Musical_Symbols,
- CR_In_Musical_Symbols,
- CR_In_Ancient_Greek_Musical_Notation,
- CR_In_Tai_Xuan_Jing_Symbols,
- CR_In_Counting_Rod_Numerals,
- CR_In_Mathematical_Alphanumeric_Symbols,
- CR_In_Arabic_Mathematical_Alphabetic_Symbols,
- CR_In_Mahjong_Tiles,
- CR_In_Domino_Tiles,
- CR_In_Playing_Cards,
- CR_In_Enclosed_Alphanumeric_Supplement,
- CR_In_Enclosed_Ideographic_Supplement,
- CR_In_Miscellaneous_Symbols_And_Pictographs,
- CR_In_Emoticons,
- CR_In_Transport_And_Map_Symbols,
- CR_In_Alchemical_Symbols,
- CR_In_CJK_Unified_Ideographs_Extension_B,
- CR_In_CJK_Unified_Ideographs_Extension_C,
- CR_In_CJK_Unified_Ideographs_Extension_D,
- CR_In_CJK_Compatibility_Ideographs_Supplement,
- CR_In_Tags,
- CR_In_Variation_Selectors_Supplement,
- CR_In_Supplementary_Private_Use_Area_A,
- CR_In_Supplementary_Private_Use_Area_B,
- CR_In_No_Block,
#endif /* USE_UNICODE_PROPERTIES */
};
struct uniname2ctype_struct {
@@ -25913,6 +22144,7 @@ static const struct uniname2ctype_struct *uniname2ctype_p(const char *, unsigned
%}
struct uniname2ctype_struct;
%%
+newline, 0
alpha, 1
blank, 2
cntrl, 3
@@ -25937,233 +22169,225 @@ cn, 20
co, 21
cs, 22
l, 23
-lc, 24
-ll, 25
-lm, 26
-lo, 27
-lt, 28
-lu, 29
-m, 30
-mc, 31
-me, 32
-mn, 33
-n, 34
-nd, 35
-nl, 36
-no, 37
-p, 38
-pc, 39
-pd, 40
-pe, 41
-pf, 42
-pi, 43
-po, 44
-ps, 45
-s, 46
-sc, 47
-sk, 48
-sm, 49
-so, 50
-z, 51
-zl, 52
-zp, 53
-zs, 54
-math, 55
-alphabetic, 56
-lowercase, 57
-uppercase, 58
-cased, 59
-caseignorable, 60
-changeswhenlowercased, 61
-changeswhenuppercased, 62
-changeswhentitlecased, 63
-changeswhencasefolded, 64
-changeswhencasemapped, 65
-idstart, 66
-idcontinue, 67
-xidstart, 68
-xidcontinue, 69
-defaultignorablecodepoint, 70
-graphemeextend, 71
-graphemebase, 72
-graphemelink, 73
-common, 74
-latin, 75
-greek, 76
-cyrillic, 77
-armenian, 78
-hebrew, 79
-arabic, 80
-syriac, 81
-thaana, 82
-devanagari, 83
-bengali, 84
-gurmukhi, 85
-gujarati, 86
-oriya, 87
-tamil, 88
-telugu, 89
-kannada, 90
-malayalam, 91
-sinhala, 92
-thai, 93
-lao, 94
-tibetan, 95
-myanmar, 96
-georgian, 97
-hangul, 98
-ethiopic, 99
-cherokee, 100
-canadianaboriginal, 101
-ogham, 102
-runic, 103
-khmer, 104
-mongolian, 105
-hiragana, 106
-katakana, 107
-bopomofo, 108
-han, 109
-yi, 110
-olditalic, 111
-gothic, 112
-deseret, 113
-inherited, 114
-tagalog, 115
-hanunoo, 116
-buhid, 117
-tagbanwa, 118
-limbu, 119
-taile, 120
-linearb, 121
-ugaritic, 122
-shavian, 123
-osmanya, 124
-cypriot, 125
-braille, 126
-buginese, 127
-coptic, 128
-newtailue, 129
-glagolitic, 130
-tifinagh, 131
-sylotinagri, 132
-oldpersian, 133
-kharoshthi, 134
-balinese, 135
-cuneiform, 136
-phoenician, 137
-phagspa, 138
-nko, 139
-sundanese, 140
-lepcha, 141
-olchiki, 142
-vai, 143
-saurashtra, 144
-kayahli, 145
-rejang, 146
-lycian, 147
-carian, 148
-lydian, 149
-cham, 150
-taitham, 151
-taiviet, 152
-avestan, 153
-egyptianhieroglyphs, 154
-samaritan, 155
-lisu, 156
-bamum, 157
-javanese, 158
-meeteimayek, 159
-imperialaramaic, 160
-oldsoutharabian, 161
-inscriptionalparthian, 162
-inscriptionalpahlavi, 163
-oldturkic, 164
-kaithi, 165
-batak, 166
-brahmi, 167
-mandaic, 168
-chakma, 169
-meroiticcursive, 170
-meroitichieroglyphs, 171
-miao, 172
-sharada, 173
-sorasompeng, 174
-takri, 175
-whitespace, 176
-bidicontrol, 177
-joincontrol, 178
-dash, 179
-hyphen, 180
-quotationmark, 181
-terminalpunctuation, 182
-othermath, 183
-hexdigit, 184
-asciihexdigit, 185
-otheralphabetic, 186
-ideographic, 187
-diacritic, 188
-extender, 189
-otherlowercase, 190
-otheruppercase, 191
-noncharactercodepoint, 192
-othergraphemeextend, 193
-idsbinaryoperator, 194
-idstrinaryoperator, 195
-radical, 196
-unifiedideograph, 197
-otherdefaultignorablecodepoint, 198
-deprecated, 199
-softdotted, 200
-logicalorderexception, 201
-otheridstart, 202
-otheridcontinue, 203
-sterm, 204
-variationselector, 205
-patternwhitespace, 206
-patternsyntax, 207
-unknown, 208
-ahex, 185
-bidic, 177
-ci, 60
-cwcf, 64
-cwcm, 65
-cwl, 61
-cwt, 63
-cwu, 62
-dep, 199
-di, 70
-dia, 188
-ext, 189
-grbase, 72
-grext, 71
-grlink, 73
-hex, 184
-idc, 67
-ideo, 187
-ids, 66
-idsb, 194
-idst, 195
-joinc, 178
-loe, 201
-nchar, 192
-oalpha, 186
-odi, 198
-ogrext, 193
-oidc, 203
-oids, 202
-olower, 190
-omath, 183
-oupper, 191
-patsyn, 207
-patws, 206
-qmark, 181
-sd, 200
-term, 182
-uideo, 197
-vs, 205
-wspace, 176
-xidc, 69
-xids, 68
+ll, 24
+lm, 25
+lo, 26
+lt, 27
+lu, 28
+m, 29
+mc, 30
+me, 31
+mn, 32
+n, 33
+nd, 34
+nl, 35
+no, 36
+p, 37
+pc, 38
+pd, 39
+pe, 40
+pf, 41
+pi, 42
+po, 43
+ps, 44
+s, 45
+sc, 46
+sk, 47
+sm, 48
+so, 49
+z, 50
+zl, 51
+zp, 52
+zs, 53
+math, 54
+alphabetic, 55
+lowercase, 56
+uppercase, 57
+cased, 58
+caseignorable, 59
+changeswhenlowercased, 60
+changeswhenuppercased, 61
+changeswhentitlecased, 62
+changeswhencasefolded, 63
+changeswhencasemapped, 64
+idstart, 65
+idcontinue, 66
+xidstart, 67
+xidcontinue, 68
+defaultignorablecodepoint, 69
+graphemeextend, 70
+graphemebase, 71
+graphemelink, 72
+common, 73
+latin, 74
+greek, 75
+cyrillic, 76
+armenian, 77
+hebrew, 78
+arabic, 79
+syriac, 80
+thaana, 81
+devanagari, 82
+bengali, 83
+gurmukhi, 84
+gujarati, 85
+oriya, 86
+tamil, 87
+telugu, 88
+kannada, 89
+malayalam, 90
+sinhala, 91
+thai, 92
+lao, 93
+tibetan, 94
+myanmar, 95
+georgian, 96
+hangul, 97
+ethiopic, 98
+cherokee, 99
+canadianaboriginal, 100
+ogham, 101
+runic, 102
+khmer, 103
+mongolian, 104
+hiragana, 105
+katakana, 106
+bopomofo, 107
+han, 108
+yi, 109
+olditalic, 110
+gothic, 111
+deseret, 112
+inherited, 113
+tagalog, 114
+hanunoo, 115
+buhid, 116
+tagbanwa, 117
+limbu, 118
+taile, 119
+linearb, 120
+ugaritic, 121
+shavian, 122
+osmanya, 123
+cypriot, 124
+braille, 125
+buginese, 126
+coptic, 127
+newtailue, 128
+glagolitic, 129
+tifinagh, 130
+sylotinagri, 131
+oldpersian, 132
+kharoshthi, 133
+balinese, 134
+cuneiform, 135
+phoenician, 136
+phagspa, 137
+nko, 138
+sundanese, 139
+lepcha, 140
+olchiki, 141
+vai, 142
+saurashtra, 143
+kayahli, 144
+rejang, 145
+lycian, 146
+carian, 147
+lydian, 148
+cham, 149
+taitham, 150
+taiviet, 151
+avestan, 152
+egyptianhieroglyphs, 153
+samaritan, 154
+lisu, 155
+bamum, 156
+javanese, 157
+meeteimayek, 158
+imperialaramaic, 159
+oldsoutharabian, 160
+inscriptionalparthian, 161
+inscriptionalpahlavi, 162
+oldturkic, 163
+kaithi, 164
+batak, 165
+brahmi, 166
+mandaic, 167
+whitespace, 168
+bidicontrol, 169
+joincontrol, 170
+dash, 171
+hyphen, 172
+quotationmark, 173
+terminalpunctuation, 174
+othermath, 175
+hexdigit, 176
+asciihexdigit, 177
+otheralphabetic, 178
+ideographic, 179
+diacritic, 180
+extender, 181
+otherlowercase, 182
+otheruppercase, 183
+noncharactercodepoint, 184
+othergraphemeextend, 185
+idsbinaryoperator, 186
+idstrinaryoperator, 187
+radical, 188
+unifiedideograph, 189
+otherdefaultignorablecodepoint, 190
+deprecated, 191
+softdotted, 192
+logicalorderexception, 193
+otheridstart, 194
+otheridcontinue, 195
+sterm, 196
+variationselector, 197
+patternwhitespace, 198
+patternsyntax, 199
+unknown, 200
+ahex, 177
+bidic, 169
+ci, 59
+cwcf, 63
+cwcm, 64
+cwl, 60
+cwt, 62
+cwu, 61
+dep, 191
+di, 69
+dia, 180
+ext, 181
+grbase, 71
+grext, 70
+grlink, 72
+hex, 176
+idc, 66
+ideo, 179
+ids, 65
+idsb, 186
+idst, 187
+joinc, 170
+loe, 193
+nchar, 184
+oalpha, 178
+odi, 190
+ogrext, 185
+oidc, 195
+oids, 194
+olower, 182
+omath, 175
+oupper, 183
+patsyn, 199
+patws, 198
+qmark, 173
+sd, 192
+term, 174
+uideo, 189
+vs, 197
+wspace, 168
+xidc, 68
+xids, 67
other, 17
control, 18
format, 19
@@ -26171,374 +22395,143 @@ unassigned, 20
privateuse, 21
surrogate, 22
letter, 23
-casedletter, 24
-lowercaseletter, 25
-modifierletter, 26
-otherletter, 27
-titlecaseletter, 28
-uppercaseletter, 29
-mark, 30
-combiningmark, 30
-spacingmark, 31
-enclosingmark, 32
-nonspacingmark, 33
-number, 34
-decimalnumber, 35
-letternumber, 36
-othernumber, 37
-punctuation, 38
-connectorpunctuation, 39
-dashpunctuation, 40
-closepunctuation, 41
-finalpunctuation, 42
-initialpunctuation, 43
-otherpunctuation, 44
-openpunctuation, 45
-symbol, 46
-currencysymbol, 47
-modifiersymbol, 48
-mathsymbol, 49
-othersymbol, 50
-separator, 51
-lineseparator, 52
-paragraphseparator, 53
-spaceseparator, 54
-arab, 80
-armi, 160
-armn, 78
-avst, 153
-bali, 135
-bamu, 157
-batk, 166
-beng, 84
-bopo, 108
-brah, 167
-brai, 126
-bugi, 127
-buhd, 117
-cakm, 169
-cans, 101
-cari, 148
-cher, 100
-copt, 128
-qaac, 128
-cprt, 125
-cyrl, 77
-deva, 83
-dsrt, 113
-egyp, 154
-ethi, 99
-geor, 97
-glag, 130
-goth, 112
-grek, 76
-gujr, 86
-guru, 85
-hang, 98
-hani, 109
-hano, 116
-hebr, 79
-hira, 106
-ital, 111
-java, 158
-kali, 145
-kana, 107
-khar, 134
-khmr, 104
-knda, 90
-kthi, 165
-lana, 151
-laoo, 94
-latn, 75
-lepc, 141
-limb, 119
-linb, 121
-lyci, 147
-lydi, 149
-mand, 168
-merc, 170
-mero, 171
-mlym, 91
-mong, 105
-mtei, 159
-mymr, 96
-nkoo, 139
-ogam, 102
-olck, 142
-orkh, 164
-orya, 87
-osma, 124
-phag, 138
-phli, 163
-phnx, 137
-plrd, 172
-prti, 162
-rjng, 146
-runr, 103
-samr, 155
-sarb, 161
-saur, 144
-shaw, 123
-shrd, 173
-sinh, 92
-sora, 174
-sund, 140
-sylo, 132
-syrc, 81
-tagb, 118
-takr, 175
-tale, 120
-talu, 129
-taml, 88
-tavt, 152
-telu, 89
-tfng, 131
-tglg, 115
-thaa, 82
-tibt, 95
-ugar, 122
-vaii, 143
-xpeo, 133
-xsux, 136
-yiii, 110
-zinh, 114
-qaai, 114
-zyyy, 74
-zzzz, 208
-age=1.1, 209
-age=2.0, 210
-age=2.1, 211
-age=3.0, 212
-age=3.1, 213
-age=3.2, 214
-age=4.0, 215
-age=4.1, 216
-age=5.0, 217
-age=5.1, 218
-age=5.2, 219
-age=6.0, 220
-age=6.1, 221
-inbasiclatin, 222
-inlatin1supplement, 223
-inlatinextendeda, 224
-inlatinextendedb, 225
-inipaextensions, 226
-inspacingmodifierletters, 227
-incombiningdiacriticalmarks, 228
-ingreekandcoptic, 229
-incyrillic, 230
-incyrillicsupplement, 231
-inarmenian, 232
-inhebrew, 233
-inarabic, 234
-insyriac, 235
-inarabicsupplement, 236
-inthaana, 237
-innko, 238
-insamaritan, 239
-inmandaic, 240
-inarabicextendeda, 241
-indevanagari, 242
-inbengali, 243
-ingurmukhi, 244
-ingujarati, 245
-inoriya, 246
-intamil, 247
-intelugu, 248
-inkannada, 249
-inmalayalam, 250
-insinhala, 251
-inthai, 252
-inlao, 253
-intibetan, 254
-inmyanmar, 255
-ingeorgian, 256
-inhanguljamo, 257
-inethiopic, 258
-inethiopicsupplement, 259
-incherokee, 260
-inunifiedcanadianaboriginalsyllabics, 261
-inogham, 262
-inrunic, 263
-intagalog, 264
-inhanunoo, 265
-inbuhid, 266
-intagbanwa, 267
-inkhmer, 268
-inmongolian, 269
-inunifiedcanadianaboriginalsyllabicsextended, 270
-inlimbu, 271
-intaile, 272
-innewtailue, 273
-inkhmersymbols, 274
-inbuginese, 275
-intaitham, 276
-inbalinese, 277
-insundanese, 278
-inbatak, 279
-inlepcha, 280
-inolchiki, 281
-insundanesesupplement, 282
-invedicextensions, 283
-inphoneticextensions, 284
-inphoneticextensionssupplement, 285
-incombiningdiacriticalmarkssupplement, 286
-inlatinextendedadditional, 287
-ingreekextended, 288
-ingeneralpunctuation, 289
-insuperscriptsandsubscripts, 290
-incurrencysymbols, 291
-incombiningdiacriticalmarksforsymbols, 292
-inletterlikesymbols, 293
-innumberforms, 294
-inarrows, 295
-inmathematicaloperators, 296
-inmiscellaneoustechnical, 297
-incontrolpictures, 298
-inopticalcharacterrecognition, 299
-inenclosedalphanumerics, 300
-inboxdrawing, 301
-inblockelements, 302
-ingeometricshapes, 303
-inmiscellaneoussymbols, 304
-indingbats, 305
-inmiscellaneousmathematicalsymbolsa, 306
-insupplementalarrowsa, 307
-inbraillepatterns, 308
-insupplementalarrowsb, 309
-inmiscellaneousmathematicalsymbolsb, 310
-insupplementalmathematicaloperators, 311
-inmiscellaneoussymbolsandarrows, 312
-inglagolitic, 313
-inlatinextendedc, 314
-incoptic, 315
-ingeorgiansupplement, 316
-intifinagh, 317
-inethiopicextended, 318
-incyrillicextendeda, 319
-insupplementalpunctuation, 320
-incjkradicalssupplement, 321
-inkangxiradicals, 322
-inideographicdescriptioncharacters, 323
-incjksymbolsandpunctuation, 324
-inhiragana, 325
-inkatakana, 326
-inbopomofo, 327
-inhangulcompatibilityjamo, 328
-inkanbun, 329
-inbopomofoextended, 330
-incjkstrokes, 331
-inkatakanaphoneticextensions, 332
-inenclosedcjklettersandmonths, 333
-incjkcompatibility, 334
-incjkunifiedideographsextensiona, 335
-inyijinghexagramsymbols, 336
-incjkunifiedideographs, 337
-inyisyllables, 338
-inyiradicals, 339
-inlisu, 340
-invai, 341
-incyrillicextendedb, 342
-inbamum, 343
-inmodifiertoneletters, 344
-inlatinextendedd, 345
-insylotinagri, 346
-incommonindicnumberforms, 347
-inphagspa, 348
-insaurashtra, 349
-indevanagariextended, 350
-inkayahli, 351
-inrejang, 352
-inhanguljamoextendeda, 353
-injavanese, 354
-incham, 355
-inmyanmarextendeda, 356
-intaiviet, 357
-inmeeteimayekextensions, 358
-inethiopicextendeda, 359
-inmeeteimayek, 360
-inhangulsyllables, 361
-inhanguljamoextendedb, 362
-inhighsurrogates, 363
-inhighprivateusesurrogates, 364
-inlowsurrogates, 365
-inprivateusearea, 366
-incjkcompatibilityideographs, 367
-inalphabeticpresentationforms, 368
-inarabicpresentationformsa, 369
-invariationselectors, 370
-inverticalforms, 371
-incombininghalfmarks, 372
-incjkcompatibilityforms, 373
-insmallformvariants, 374
-inarabicpresentationformsb, 375
-inhalfwidthandfullwidthforms, 376
-inspecials, 377
-inlinearbsyllabary, 378
-inlinearbideograms, 379
-inaegeannumbers, 380
-inancientgreeknumbers, 381
-inancientsymbols, 382
-inphaistosdisc, 383
-inlycian, 384
-incarian, 385
-inolditalic, 386
-ingothic, 387
-inugaritic, 388
-inoldpersian, 389
-indeseret, 390
-inshavian, 391
-inosmanya, 392
-incypriotsyllabary, 393
-inimperialaramaic, 394
-inphoenician, 395
-inlydian, 396
-inmeroitichieroglyphs, 397
-inmeroiticcursive, 398
-inkharoshthi, 399
-inoldsoutharabian, 400
-inavestan, 401
-ininscriptionalparthian, 402
-ininscriptionalpahlavi, 403
-inoldturkic, 404
-inruminumeralsymbols, 405
-inbrahmi, 406
-inkaithi, 407
-insorasompeng, 408
-inchakma, 409
-insharada, 410
-intakri, 411
-incuneiform, 412
-incuneiformnumbersandpunctuation, 413
-inegyptianhieroglyphs, 414
-inbamumsupplement, 415
-inmiao, 416
-inkanasupplement, 417
-inbyzantinemusicalsymbols, 418
-inmusicalsymbols, 419
-inancientgreekmusicalnotation, 420
-intaixuanjingsymbols, 421
-incountingrodnumerals, 422
-inmathematicalalphanumericsymbols, 423
-inarabicmathematicalalphabeticsymbols, 424
-inmahjongtiles, 425
-indominotiles, 426
-inplayingcards, 427
-inenclosedalphanumericsupplement, 428
-inenclosedideographicsupplement, 429
-inmiscellaneoussymbolsandpictographs, 430
-inemoticons, 431
-intransportandmapsymbols, 432
-inalchemicalsymbols, 433
-incjkunifiedideographsextensionb, 434
-incjkunifiedideographsextensionc, 435
-incjkunifiedideographsextensiond, 436
-incjkcompatibilityideographssupplement, 437
-intags, 438
-invariationselectorssupplement, 439
-insupplementaryprivateuseareaa, 440
-insupplementaryprivateuseareab, 441
-innoblock, 442
+lowercaseletter, 24
+modifierletter, 25
+otherletter, 26
+titlecaseletter, 27
+uppercaseletter, 28
+mark, 29
+spacingmark, 30
+enclosingmark, 31
+nonspacingmark, 32
+number, 33
+decimalnumber, 34
+letternumber, 35
+othernumber, 36
+punctuation, 37
+connectorpunctuation, 38
+dashpunctuation, 39
+closepunctuation, 40
+finalpunctuation, 41
+initialpunctuation, 42
+otherpunctuation, 43
+openpunctuation, 44
+symbol, 45
+currencysymbol, 46
+modifiersymbol, 47
+mathsymbol, 48
+othersymbol, 49
+separator, 50
+lineseparator, 51
+paragraphseparator, 52
+spaceseparator, 53
+arab, 79
+armi, 159
+armn, 77
+avst, 152
+bali, 134
+bamu, 156
+batk, 165
+beng, 83
+bopo, 107
+brah, 166
+brai, 125
+bugi, 126
+buhd, 116
+cans, 100
+cari, 147
+cher, 99
+copt, 127
+qaac, 127
+cprt, 124
+cyrl, 76
+deva, 82
+dsrt, 112
+egyp, 153
+ethi, 98
+geor, 96
+glag, 129
+goth, 111
+grek, 75
+gujr, 85
+guru, 84
+hang, 97
+hani, 108
+hano, 115
+hebr, 78
+hira, 105
+ital, 110
+java, 157
+kali, 144
+kana, 106
+khar, 133
+khmr, 103
+knda, 89
+kthi, 164
+lana, 150
+laoo, 93
+latn, 74
+lepc, 140
+limb, 118
+linb, 120
+lyci, 146
+lydi, 148
+mand, 167
+mlym, 90
+mong, 104
+mtei, 158
+mymr, 95
+nkoo, 138
+ogam, 101
+olck, 141
+orkh, 163
+orya, 86
+osma, 123
+phag, 137
+phli, 162
+phnx, 136
+prti, 161
+rjng, 145
+runr, 102
+samr, 154
+sarb, 160
+saur, 143
+shaw, 122
+sinh, 91
+sund, 139
+sylo, 131
+syrc, 80
+tagb, 117
+tale, 119
+talu, 128
+taml, 87
+tavt, 151
+telu, 88
+tfng, 130
+tglg, 114
+thaa, 81
+tibt, 94
+ugar, 121
+vaii, 142
+xpeo, 132
+xsux, 135
+yiii, 109
+zinh, 113
+qaai, 113
+zyyy, 73
+zzzz, 200
+age=1.1, 201
+age=2.0, 202
+age=2.1, 203
+age=3.0, 204
+age=3.1, 205
+age=3.2, 206
+age=4.0, 207
+age=4.1, 208
+age=5.0, 209
+age=5.1, 210
+age=5.2, 211
+age=6.0, 212
#endif /* USE_UNICODE_PROPERTIES */
%%
static int
diff --git a/enc/us_ascii.c b/enc/us_ascii.c
index 1b47778391..2e96dd3846 100644
--- a/enc/us_ascii.c
+++ b/enc/us_ascii.c
@@ -24,9 +24,7 @@ OnigEncodingDefine(us_ascii, US_ASCII) = {
onigenc_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,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("ASCII", "US-ASCII")
ENC_ALIAS("ANSI_X3.4-1968", "US-ASCII")
diff --git a/enc/utf_16_32.h b/enc/utf_16_32.h
index b232767ee3..b028a1a12e 100644
--- a/enc/utf_16_32.h
+++ b/enc/utf_16_32.h
@@ -1,5 +1,4 @@
#include "regenc.h"
/* dummy for unsupported, statefull encoding */
-#define ENC_DUMMY_UNICODE(name) ENC_DUMMY(name)
-ENC_DUMMY_UNICODE("UTF-16");
-ENC_DUMMY_UNICODE("UTF-32");
+ENC_DUMMY("UTF-16");
+ENC_DUMMY("UTF-32");
diff --git a/enc/utf_16be.c b/enc/utf_16be.c
index 8b25d473a7..1e33c2ec7d 100644
--- a/enc/utf_16be.c
+++ b/enc/utf_16be.c
@@ -88,8 +88,11 @@ utf16be_is_mbc_newline(const UChar* p, const UChar* end,
if (*(p+1) == 0x0a && *p == 0x00)
return 1;
#ifdef USE_UNICODE_ALL_LINE_TERMINATORS
- if ((*(p+1) == 0x0b || *(p+1) == 0x0c || *(p+1) == 0x0d || *(p+1) == 0x85)
- && *p == 0x00)
+ if ((
+#ifndef USE_CRNL_AS_LINE_TERMINATOR
+ *(p+1) == 0x0d ||
+#endif
+ *(p+1) == 0x85) && *p == 0x00)
return 1;
if (*p == 0x20 && (*(p+1) == 0x29 || *(p+1) == 0x28))
return 1;
@@ -249,8 +252,6 @@ OnigEncodingDefine(utf_16be, UTF_16BE) = {
onigenc_unicode_is_code_ctype,
onigenc_utf16_32_get_ctype_code_range,
utf16be_left_adjust_char_head,
- onigenc_always_false_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_UNICODE,
+ onigenc_always_false_is_allowed_reverse_match
};
ENC_ALIAS("UCS-2BE", "UTF-16BE")
diff --git a/enc/utf_16le.c b/enc/utf_16le.c
index 8feb7ad769..e972cb95f0 100644
--- a/enc/utf_16le.c
+++ b/enc/utf_16le.c
@@ -81,8 +81,11 @@ utf16le_is_mbc_newline(const UChar* p, const UChar* end,
if (*p == 0x0a && *(p+1) == 0x00)
return 1;
#ifdef USE_UNICODE_ALL_LINE_TERMINATORS
- if ((*p == 0x0b || *p == 0x0c || *p == 0x0d || *p == 0x85)
- && *(p+1) == 0x00)
+ if ((
+#ifndef USE_CRNL_AS_LINE_TERMINATOR
+ *p == 0x0d ||
+#endif
+ *p == 0x85) && *(p+1) == 0x00)
return 1;
if (*(p+1) == 0x20 && (*p == 0x29 || *p == 0x28))
return 1;
@@ -242,7 +245,5 @@ OnigEncodingDefine(utf_16le, UTF_16LE) = {
onigenc_unicode_is_code_ctype,
onigenc_utf16_32_get_ctype_code_range,
utf16le_left_adjust_char_head,
- onigenc_always_false_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_UNICODE,
+ onigenc_always_false_is_allowed_reverse_match
};
diff --git a/enc/utf_32be.c b/enc/utf_32be.c
index 43c07e2e8f..2671448d44 100644
--- a/enc/utf_32be.c
+++ b/enc/utf_32be.c
@@ -44,7 +44,11 @@ utf32be_is_mbc_newline(const UChar* p, const UChar* end,
if (*(p+3) == 0x0a && *(p+2) == 0 && *(p+1) == 0 && *p == 0)
return 1;
#ifdef USE_UNICODE_ALL_LINE_TERMINATORS
- if ((*(p+3) == 0x0b || *(p+3) == 0x0c || *(p+3) == 0x0d || *(p+3) == 0x85)
+ if ((
+#ifndef USE_CRNL_AS_LINE_TERMINATOR
+ *(p+3) == 0x0d ||
+#endif
+ *(p+3) == 0x85)
&& *(p+2) == 0 && *(p+1) == 0 && *p == 0x00)
return 1;
if (*(p+2) == 0x20 && (*(p+3) == 0x29 || *(p+3) == 0x28)
@@ -155,7 +159,7 @@ utf32be_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e
if (s <= start) return (UChar* )s;
- rem = (int )((s - start) % 4);
+ rem = (s - start) % 4;
return (UChar* )(s - rem);
}
@@ -185,9 +189,7 @@ OnigEncodingDefine(utf_32be, UTF_32BE) = {
onigenc_unicode_is_code_ctype,
onigenc_utf16_32_get_ctype_code_range,
utf32be_left_adjust_char_head,
- onigenc_always_false_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_UNICODE,
+ onigenc_always_false_is_allowed_reverse_match
};
ENC_ALIAS("UCS-4BE", "UTF-32BE")
diff --git a/enc/utf_32le.c b/enc/utf_32le.c
index 31693eed05..aa448200c6 100644
--- a/enc/utf_32le.c
+++ b/enc/utf_32le.c
@@ -44,7 +44,11 @@ utf32le_is_mbc_newline(const UChar* p, const UChar* end,
if (*p == 0x0a && *(p+1) == 0 && *(p+2) == 0 && *(p+3) == 0)
return 1;
#ifdef USE_UNICODE_ALL_LINE_TERMINATORS
- if ((*p == 0x0b ||*p == 0x0c ||*p == 0x0d || *p == 0x85)
+ if ((
+#ifndef USE_CRNL_AS_LINE_TERMINATOR
+ *p == 0x0d ||
+#endif
+ *p == 0x85)
&& *(p+1) == 0x00 && (p+2) == 0x00 && *(p+3) == 0x00)
return 1;
if (*(p+1) == 0x20 && (*p == 0x29 || *p == 0x28)
@@ -155,7 +159,7 @@ utf32le_left_adjust_char_head(const UChar* start, const UChar* s, const UChar* e
if (s <= start) return (UChar* )s;
- rem = (int )((s - start) % 4);
+ rem = (s - start) % 4;
return (UChar* )(s - rem);
}
@@ -185,8 +189,6 @@ OnigEncodingDefine(utf_32le, UTF_32LE) = {
onigenc_unicode_is_code_ctype,
onigenc_utf16_32_get_ctype_code_range,
utf32le_left_adjust_char_head,
- onigenc_always_false_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_UNICODE,
+ onigenc_always_false_is_allowed_reverse_match
};
ENC_ALIAS("UCS-4LE", "UTF-32LE")
diff --git a/enc/utf_8.c b/enc/utf_8.c
index dae1f3a1bc..83f8701205 100644
--- a/enc/utf_8.c
+++ b/enc/utf_8.c
@@ -248,7 +248,9 @@ is_mbc_newline(const UChar* p, const UChar* end, OnigEncoding enc)
if (*p == 0x0a) return 1;
#ifdef USE_UNICODE_ALL_LINE_TERMINATORS
- if (*p == 0x0b || *p == 0x0c || *p == 0x0d) return 1;
+#ifndef USE_CRNL_AS_LINE_TERMINATOR
+ if (*p == 0x0d) return 1;
+#endif
if (p + 1 < end) {
if (*(p+1) == 0x85 && *p == 0xc2) /* U+0085 */
return 1;
@@ -270,7 +272,7 @@ mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc)
int c, len;
OnigCodePoint n;
- len = mbc_enc_len(p, end, enc);
+ len = enclen(enc, p, end);
c = *p++;
if (len > 1) {
len--;
@@ -361,7 +363,7 @@ code_to_mbc(OnigCodePoint code, UChar *buf, OnigEncoding enc ARG_UNUSED)
}
*p++ = UTF8_TRAIL0(code);
- return (int )(p - buf);
+ return (int)(p - buf);
}
}
@@ -438,9 +440,7 @@ OnigEncodingDefine(utf_8, UTF_8) = {
onigenc_unicode_is_code_ctype,
get_ctype_code_range,
left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_UNICODE,
+ onigenc_always_true_is_allowed_reverse_match
};
ENC_ALIAS("CP65001", "UTF-8")
diff --git a/enc/windows_1251.c b/enc/windows_1251.c
index 73060962c3..1cb4da4960 100644
--- a/enc/windows_1251.c
+++ b/enc/windows_1251.c
@@ -196,9 +196,7 @@ OnigEncodingDefine(windows_1251, Windows_1251) = {
cp1251_is_code_ctype,
onigenc_not_support_get_ctype_code_range,
onigenc_single_byte_left_adjust_char_head,
- onigenc_always_true_is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
+ onigenc_always_true_is_allowed_reverse_match
};
/*
* Name: windows-1251
diff --git a/enc/windows_31j.c b/enc/windows_31j.c
deleted file mode 100644
index c4193819d4..0000000000
--- a/enc/windows_31j.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/**********************************************************************
- cp932.c - Onigmo (Oniguruma-mod) (regular expression library)
-**********************************************************************/
-/*-
- * Copyright (c) 2002-2009 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
- * Copyright (c) 2011 K.Takata <kentkt AT csc 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.
- */
-
-#define ENC_CP932
-#include "shift_jis.c"
-
-OnigEncodingDefine(windows_31j, Windows_31J) = {
- mbc_enc_len,
- "Windows-31J", /* name */
- 2, /* max byte length */
- 1, /* min byte length */
- onigenc_is_mbc_newline_0x0a,
- mbc_to_code,
- code_to_mbclen,
- code_to_mbc,
- mbc_case_fold,
- apply_all_case_fold,
- get_case_fold_codes_by_str,
- property_name_to_ctype,
- is_code_ctype,
- get_ctype_code_range,
- left_adjust_char_head,
- is_allowed_reverse_match,
- 0,
- ONIGENC_FLAG_NONE,
-};
-/*
- * Name: Windows-31J
- * MIBenum: 2024
- * Link: http://www.iana.org/assignments/character-sets
- * Link: http://www.microsoft.com/globaldev/reference/dbcs/932.mspx
- * Link: http://ja.wikipedia.org/wiki/Windows-31J
- * Link: http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/windows-932-2000.ucm
- *
- * Windows Standard Character Set and its mapping to Unicode by Microsoft.
- * Since 1.9.3, SJIS is the alias of Windows-31J because its character
- * set is usually this one even if its mapping may differ.
- */
-ENC_ALIAS("CP932", "Windows-31J")
-ENC_ALIAS("csWindows31J", "Windows-31J") /* IANA. IE6 don't accept Windows-31J but csWindows31J. */
-ENC_ALIAS("SJIS", "Windows-31J")
-
-/*
- * Name: PCK
- * Link: http://download.oracle.com/docs/cd/E19253-01/819-0606/x-2chn0/index.html
- * Link: http://download.oracle.com/docs/cd/E19253-01/819-0606/appb-pckwarn-1/index.html
- *
- * Solaris's SJIS variant. Its set is Windows Standard Character Set; it
- * consists JIS X 0201 Latin (US-ASCII), JIS X 0201 Katakana, JIS X 0208, NEC
- * special characters, NEC-selected IBM extended characters, and IBM extended
- * characters. Solaris's iconv seems to use SJIS-open.
- */
-ENC_ALIAS("PCK", "Windows-31J")
diff --git a/encoding.c b/encoding.c
index 788e9837c5..b8c5f6d357 100644
--- a/encoding.c
+++ b/encoding.c
@@ -32,7 +32,6 @@ void rb_encdb_declare(const char *name);
int rb_encdb_replicate(const char *name, const char *orig);
int rb_encdb_dummy(const char *name);
int rb_encdb_alias(const char *alias, const char *orig);
-void rb_encdb_set_unicode(int index);
#pragma GCC visibility pop
#endif
@@ -160,9 +159,8 @@ rb_to_encoding_index(VALUE enc)
return rb_enc_find_index(StringValueCStr(enc));
}
-/* Returns encoding index or UNSPECIFIED_ENCODING */
-static int
-str_find_encindex(VALUE enc)
+static rb_encoding *
+to_encoding(VALUE enc)
{
int idx;
@@ -171,40 +169,17 @@ str_find_encindex(VALUE enc)
rb_raise(rb_eArgError, "invalid name encoding (non ASCII)");
}
idx = rb_enc_find_index(StringValueCStr(enc));
- return idx;
-}
-
-static int
-str_to_encindex(VALUE enc)
-{
- int idx = str_find_encindex(enc);
if (idx < 0) {
rb_raise(rb_eArgError, "unknown encoding name - %s", RSTRING_PTR(enc));
}
- return idx;
-}
-
-static rb_encoding *
-str_to_encoding(VALUE enc)
-{
- return rb_enc_from_index(str_to_encindex(enc));
+ return rb_enc_from_index(idx);
}
rb_encoding *
rb_to_encoding(VALUE enc)
{
if (enc_check_encoding(enc) >= 0) return RDATA(enc)->data;
- return str_to_encoding(enc);
-}
-
-rb_encoding *
-rb_find_encoding(VALUE enc)
-{
- int idx;
- if (enc_check_encoding(enc) >= 0) return RDATA(enc)->data;
- idx = str_find_encindex(enc);
- if (idx < 0) return NULL;
- return rb_enc_from_index(idx);
+ return to_encoding(enc);
}
void
@@ -458,13 +433,8 @@ enc_ascii_compatible_p(VALUE enc)
int
rb_enc_unicode_p(rb_encoding *enc)
{
- return ONIGENC_IS_UNICODE(enc);
-}
-
-static st_data_t
-enc_dup_name(st_data_t name)
-{
- return (st_data_t)strdup((const char *)name);
+ const char *name = rb_enc_name(enc);
+ return name[0] == 'U' && name[1] == 'T' && name[2] == 'F' && name[4] != '7';
}
/*
@@ -475,7 +445,7 @@ static int
enc_alias_internal(const char *alias, int idx)
{
return st_insert2(enc_table.names, (st_data_t)alias, (st_data_t)idx,
- enc_dup_name);
+ (st_data_t(*)(st_data_t))strdup);
}
static int
@@ -513,12 +483,6 @@ rb_encdb_alias(const char *alias, const char *orig)
return enc_alias(alias, idx);
}
-void
-rb_encdb_set_unicode(int index)
-{
- rb_enc_from_index(index)->flags |= ONIGENC_FLAG_UNICODE;
-}
-
enum {
ENCINDEX_ASCII,
ENCINDEX_UTF_8,
@@ -582,25 +546,23 @@ load_encoding(const char *name)
VALUE enclib = rb_sprintf("enc/%s.so", name);
VALUE verbose = ruby_verbose;
VALUE debug = ruby_debug;
- VALUE errinfo;
VALUE loaded;
char *s = RSTRING_PTR(enclib) + 4, *e = RSTRING_END(enclib) - 3;
int idx;
while (s < e) {
if (!ISALNUM(*s)) *s = '_';
- else if (ISUPPER(*s)) *s = (char)TOLOWER(*s);
+ else if (ISUPPER(*s)) *s = TOLOWER(*s);
++s;
}
FL_UNSET(enclib, FL_TAINT|FL_UNTRUSTED);
OBJ_FREEZE(enclib);
ruby_verbose = Qfalse;
ruby_debug = Qfalse;
- errinfo = rb_errinfo();
loaded = rb_protect(require_enc, enclib, 0);
ruby_verbose = verbose;
ruby_debug = debug;
- rb_set_errinfo(errinfo);
+ rb_set_errinfo(Qnil);
if (NIL_P(loaded)) return -1;
if ((idx = rb_enc_registered(name)) < 0) return -1;
if (enc_autoload_p(enc_table.list[idx].enc)) return -1;
@@ -630,7 +592,6 @@ enc_autoload(rb_encoding *enc)
return i;
}
-/* Return encoding index or UNSPECIFIED_ENCODING from encoding name */
int
rb_enc_find_index(const char *name)
{
@@ -869,11 +830,11 @@ rb_enc_copy(VALUE obj1, VALUE obj2)
VALUE
rb_obj_encoding(VALUE obj)
{
- int idx = rb_enc_get_index(obj);
- if (idx < 0) {
+ rb_encoding *enc = rb_enc_get(obj);
+ if (!enc) {
rb_raise(rb_eTypeError, "unknown encoding");
}
- return rb_enc_from_encoding_index(idx);
+ return rb_enc_from_encoding(enc);
}
int
@@ -936,11 +897,12 @@ rb_enc_codepoint_len(const char *p, const char *e, int *len_p, rb_encoding *enc)
if (e <= p)
rb_raise(rb_eArgError, "empty string");
r = rb_enc_precise_mbclen(p, e, enc);
- if (!MBCLEN_CHARFOUND_P(r)) {
- rb_raise(rb_eArgError, "invalid byte sequence in %s", rb_enc_name(enc));
+ if (MBCLEN_CHARFOUND_P(r)) {
+ if (len_p) *len_p = MBCLEN_CHARFOUND_LEN(r);
+ return rb_enc_mbc_to_codepoint(p, e, enc);
}
- if (len_p) *len_p = MBCLEN_CHARFOUND_LEN(r);
- return rb_enc_mbc_to_codepoint(p, e, enc);
+ else
+ rb_raise(rb_eArgError, "invalid byte sequence in %s", rb_enc_name(enc));
}
#undef rb_enc_codepoint
@@ -1066,11 +1028,13 @@ enc_list(VALUE klass)
/*
* call-seq:
* Encoding.find(string) -> enc
+ * Encoding.find(symbol) -> enc
*
* Search the encoding with specified <i>name</i>.
- * <i>name</i> should be a string.
+ * <i>name</i> should be a string or symbol.
*
* Encoding.find("US-ASCII") #=> #<Encoding:US-ASCII>
+ * Encoding.find(:Shift_JIS) #=> #<Encoding:Shift_JIS>
*
* Names which this method accept are encoding names and aliases
* including following special aliases
@@ -1088,12 +1052,7 @@ enc_list(VALUE klass)
static VALUE
enc_find(VALUE klass, VALUE enc)
{
- int idx;
- if (RB_TYPE_P(enc, T_DATA) && is_data_encoding(enc))
- return enc;
- idx = str_to_encindex(enc);
- if (idx == UNSPECIFIED_ENCODING) return Qnil;
- return rb_enc_from_encoding_index(idx);
+ return rb_enc_from_encoding(rb_to_encoding(enc));
}
/*
@@ -1350,7 +1309,7 @@ rb_enc_set_default_external(VALUE encoding)
*
* Sets default external encoding. You should not set
* Encoding::default_external in ruby code as strings created before changing
- * the value may have a different encoding from strings created after the value
+ * the value may have a different encoding from strings created after thevalue
* was changed., instead you should use <tt>ruby -E</tt> to invoke ruby with
* the correct default_external.
*
@@ -1479,15 +1438,12 @@ rb_locale_charmap(VALUE klass)
#if defined NO_LOCALE_CHARMAP
return rb_usascii_str_new2("ASCII-8BIT");
#elif defined _WIN32 || defined __CYGWIN__
- const char *codeset = 0;
- char cp[sizeof(int) * 3 + 4];
-# ifdef __CYGWIN__
const char *nl_langinfo_codeset(void);
- codeset = nl_langinfo_codeset();
-# endif
+ const char *codeset = nl_langinfo_codeset();
+ char cp[sizeof(int) * 3 + 4];
if (!codeset) {
UINT codepage = GetConsoleCP();
- if (!codepage) codepage = GetACP();
+ if(!codepage) codepage = GetACP();
snprintf(cp, sizeof(cp), "CP%d", codepage);
codeset = cp;
}
@@ -1631,206 +1587,6 @@ rb_enc_aliases(VALUE klass)
return aliases[0];
}
-/*
- * An Encoding instance represents a character encoding usable in Ruby. It is
- * defined as a constant under the Encoding namespace. It has a name and
- * optionally, aliases:
- *
- * Encoding::ISO_8859_1.name
- * #=> #<Encoding:ISO-8859-1>
- *
- * Encoding::ISO_8859_1.names
- * #=> ["ISO-8859-1", "ISO8859-1"]
- *
- * Ruby methods dealing with encodings return or accept Encoding instances as
- * arguments (when a method accepts an Encoding instance as an argument, it
- * can be passed an Encoding name or alias instead).
- *
- * "some string".encoding
- * #=> #<Encoding:UTF-8>
- *
- * string = "some string".encode(Encoding::ISO_8859_1)
- * #=> "some string"
- * string.encoding
- * #=> #<Encoding:ISO-8859-1>
- *
- * "some string".encode "ISO-8859-1"
- * #=> "some string"
- *
- * <code>Encoding::ASCII_8BIT</code> is a special encoding that is usually
- * used for a byte string, not a character string. But as the name insists,
- * its characters in the range of ASCII are considered as ASCII characters.
- * This is useful when you use ASCII-8BIT characters with other ASCII
- * compatible characters.
- *
- * == Changing an encoding
- *
- * The associated Encoding of a String can be changed in two different ways.
- *
- * First, it is possible to set the Encoding of a string to a new Encoding
- * without changing the internal byte representation of the string, with
- * String#force_encoding. This is how you can tell Ruby the correct encoding
- * of a string.
- *
- * string
- * #=> "R\xC3\xA9sum\xC3\xA9"
- * string.encoding
- * #=> #<Encoding:ISO-8859-1>
- * string.force_encoding(Encoding::UTF-8)
- * #=> "R\u00E9sum\u00E9"
- *
- * Second, it is possible to transcode a string, i.e. translate its internal
- * byte representation to another encoding. Its associated encoding is also
- * set to the other encoding. See String#encode for the various forms of
- * transcoding, and the Encoding::Converter class for additional control over
- * the transcoding process.
- *
- * string
- * #=> "R\u00E9sum\u00E9"
- * string.encoding
- * #=> #<Encoding:UTF-8>
- * string = string.encode!(Encoding::ISO_8859_1)
- * #=> "R\xE9sum\xE9"
- * string.encoding
- * #=> #<Encoding::ISO-8859-1>
- *
- * == Script encoding
- *
- * All Ruby script code has an associated Encoding which any String literal
- * created in the source code will be associated to.
- *
- * The default script encoding is <code>Encoding::US-ASCII</code>, but it can
- * be changed by a magic comment on the first line of the source code file (or
- * second line, if there is a shebang line on the first). The comment must
- * contain the word <code>coding</code> or <code>encoding</code>, followed
- * by a colon, space and the Encoding name or alias:
- *
- * # encoding: UTF-8
- *
- * "some string".encoding
- * #=> #<Encoding:UTF-8>
- *
- * The <code>__ENCODING__</code> keyword returns the script encoding of the file
- * which the keyword is written:
- *
- * # encoding: ISO-8859-1
- *
- * __ENCODING__
- * #=> #<Encoding:ISO-8859-1>
- *
- * <code>ruby -K</code> will change the default locale encoding, but this is
- * not recommended. Ruby source files should declare its script encoding by a
- * magic comment even when they only depend on US-ASCII strings or regular
- * expressions.
- *
- * == Locale encoding
- *
- * The default encoding of the environment. Usually derived from locale.
- *
- * see Encoding.locale_charmap, Encoding.find('locale')
- *
- * == Filesystem encoding
- *
- * The default encoding of strings from the filesystem of the environment.
- * This is used for strings of file names or paths.
- *
- * see Encoding.find('filesystem')
- *
- * == External encoding
- *
- * Each IO object has an external encoding which indicates the encoding that
- * Ruby will use to read its data. By default Ruby sets the external encoding
- * of an IO object to the default external encoding. The default external
- * encoding is set by locale encoding or the interpreter <code>-E</code> option.
- * Encoding.default_external returns the current value of the external
- * encoding.
- *
- * ENV["LANG"]
- * #=> "UTF-8"
- * Encoding.default_external
- * #=> #<Encoding:UTF-8>
- *
- * $ ruby -E ISO-8859-1 -e "p Encoding.default_external"
- * #<Encoding:ISO-8859-1>
- *
- * $ LANG=C ruby -e 'p Encoding.default_external'
- * #<Encoding:US-ASCII>
- *
- * The default external encoding may also be set through
- * Encoding.default_external=, but you should not do this as strings created
- * before and after the change will have inconsistent encodings. Instead use
- * <code>ruby -E</code> to invoke ruby with the correct external encoding.
- *
- * When you know that the actual encoding of the data of an IO object is not
- * the default external encoding, you can reset its external encoding with
- * IO#set_encoding or set it at IO object creation (see IO.new options).
- *
- * == Internal encoding
- *
- * To process the data of an IO object which has an encoding different
- * from its external encoding, you can set its internal encoding. Ruby will use
- * this internal encoding to transcode the data when it is read from the IO
- * object.
- *
- * Conversely, when data is written to the IO object it is transcoded from the
- * internal encoding to the external encoding of the IO object.
- *
- * The internal encoding of an IO object can be set with
- * IO#set_encoding or at IO object creation (see IO.new options).
- *
- * The internal encoding is optional and when not set, the Ruby default
- * internal encoding is used. If not explicitly set this default internal
- * encoding is +nil+ meaning that by default, no transcoding occurs.
- *
- * The default internal encoding can be set with the interpreter option
- * <code>-E</code>. Encoding.default_internal returns the current internal
- * encoding.
- *
- * $ ruby -e 'p Encoding.default_internal'
- * nil
- *
- * $ ruby -E ISO-8859-1:UTF-8 -e "p [Encoding.default_external, \
- * Encoding.default_internal]"
- * [#<Encoding:ISO-8859-1>, #<Encoding:UTF-8>]
- *
- * The default internal encoding may also be set through
- * Encoding.default_internal=, but you should not do this as strings created
- * before and after the change will have inconsistent encodings. Instead use
- * <code>ruby -E</code> to invoke ruby with the correct internal encoding.
- *
- * == IO encoding example
- *
- * In the following example a UTF-8 encoded string "R\u00E9sum\u00E9" is transcoded for
- * output to ISO-8859-1 encoding, then read back in and transcoded to UTF-8:
- *
- * string = "R\u00E9sum\u00E9"
- *
- * open("transcoded.txt", "w:ISO-8859-1") do |io|
- * io.write(string)
- * end
- *
- * puts "raw text:"
- * p File.binread("transcoded.txt")
- * puts
- *
- * open("transcoded.txt", "r:ISO-8859-1:UTF-8") do |io|
- * puts "transcoded text:"
- * p io.read
- * end
- *
- * While writing the file, the internal encoding is not specified as it is
- * only necessary for reading. While reading the file both the internal and
- * external encoding must be specified to obtain the correct result.
- *
- * $ ruby t.rb
- * raw text:
- * "R\xE9sum\xE9"
- *
- * transcoded text:
- * "R\u00E9sum\u00E9"
- *
- */
-
void
Init_Encoding(void)
{
diff --git a/enum.c b/enum.c
index 40bea4fe3c..de954c938f 100644
--- a/enum.c
+++ b/enum.c
@@ -13,24 +13,15 @@
#include "ruby/util.h"
#include "node.h"
#include "id.h"
-#include "internal.h"
-
-#define STATIC_ASSERT(name, expr) typedef int static_assert_##name##_check[1 - 2*!(expr)]
VALUE rb_mEnumerable;
-
static ID id_next;
-static ID id_div;
-static ID id_call;
-static ID id_size;
-
#define id_each idEach
#define id_eqq idEqq
#define id_cmp idCmp
-#define id_lshift idLTLT
-VALUE
-rb_enum_values_pack(int argc, VALUE *argv)
+static VALUE
+enum_values_pack(int argc, VALUE *argv)
{
if (argc == 0) return Qnil;
if (argc == 1) return argv[0];
@@ -38,7 +29,7 @@ rb_enum_values_pack(int argc, VALUE *argv)
}
#define ENUM_WANT_SVALUE() do { \
- i = rb_enum_values_pack(argc, argv); \
+ i = enum_values_pack(argc, argv); \
} while (0)
#define enum_yield rb_yield_values2
@@ -46,11 +37,11 @@ rb_enum_values_pack(int argc, VALUE *argv)
static VALUE
grep_i(VALUE i, VALUE args, int argc, VALUE *argv)
{
- NODE *memo = RNODE(args);
+ VALUE *arg = (VALUE *)args;
ENUM_WANT_SVALUE();
- if (RTEST(rb_funcall(memo->u1.value, id_eqq, 1, i))) {
- rb_ary_push(memo->u2.value, i);
+ if (RTEST(rb_funcall(arg[0], id_eqq, 1, i))) {
+ rb_ary_push(arg[1], i);
}
return Qnil;
}
@@ -58,19 +49,19 @@ grep_i(VALUE i, VALUE args, int argc, VALUE *argv)
static VALUE
grep_iter_i(VALUE i, VALUE args, int argc, VALUE *argv)
{
- NODE *memo = RNODE(args);
+ VALUE *arg = (VALUE *)args;
ENUM_WANT_SVALUE();
- if (RTEST(rb_funcall(memo->u1.value, id_eqq, 1, i))) {
- rb_ary_push(memo->u2.value, rb_yield(i));
+ if (RTEST(rb_funcall(arg[0], id_eqq, 1, i))) {
+ rb_ary_push(arg[1], rb_yield(i));
}
return Qnil;
}
/*
* call-seq:
- * enum.grep(pattern) -> array
- * enum.grep(pattern) { |obj| block } -> array
+ * enum.grep(pattern) -> array
+ * enum.grep(pattern) {| obj | block } -> array
*
* Returns an array of every element in <i>enum</i> for which
* <code>Pattern === element</code>. If the optional <em>block</em> is
@@ -80,7 +71,7 @@ grep_iter_i(VALUE i, VALUE args, int argc, VALUE *argv)
* (1..100).grep 38..44 #=> [38, 39, 40, 41, 42, 43, 44]
* c = IO.constants
* c.grep(/SEEK/) #=> [:SEEK_SET, :SEEK_CUR, :SEEK_END]
- * res = c.grep(/SEEK/) { |v| IO.const_get(v) }
+ * res = c.grep(/SEEK/) {|v| IO.const_get(v) }
* res #=> [0, 1, 2]
*
*/
@@ -89,9 +80,12 @@ static VALUE
enum_grep(VALUE obj, VALUE pat)
{
VALUE ary = rb_ary_new();
- NODE *memo = NEW_MEMO(pat, ary, 0);
+ VALUE arg[2];
- rb_block_call(obj, id_each, 0, 0, rb_block_given_p() ? grep_iter_i : grep_i, (VALUE)memo);
+ 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);
return ary;
}
@@ -99,12 +93,12 @@ enum_grep(VALUE obj, VALUE pat)
static VALUE
count_i(VALUE i, VALUE memop, int argc, VALUE *argv)
{
- NODE *memo = RNODE(memop);
+ VALUE *memo = (VALUE*)memop;
ENUM_WANT_SVALUE();
- if (rb_equal(i, memo->u1.value)) {
- memo->u3.cnt++;
+ if (rb_equal(i, memo[1])) {
+ memo[0]++;
}
return Qnil;
}
@@ -112,10 +106,10 @@ count_i(VALUE i, VALUE memop, int argc, VALUE *argv)
static VALUE
count_iter_i(VALUE i, VALUE memop, int argc, VALUE *argv)
{
- NODE *memo = RNODE(memop);
+ VALUE *memo = (VALUE*)memop;
if (RTEST(enum_yield(argc, argv))) {
- memo->u3.cnt++;
+ memo[0]++;
}
return Qnil;
}
@@ -123,35 +117,35 @@ count_iter_i(VALUE i, VALUE memop, int argc, VALUE *argv)
static VALUE
count_all_i(VALUE i, VALUE memop, int argc, VALUE *argv)
{
- NODE *memo = RNODE(memop);
+ VALUE *memo = (VALUE*)memop;
- memo->u3.cnt++;
+ memo[0]++;
return Qnil;
}
/*
* call-seq:
- * enum.count -> int
- * enum.count(item) -> int
- * enum.count { |obj| block } -> int
+ * enum.count -> int
+ * enum.count(item) -> int
+ * enum.count {| obj | block } -> int
*
- * Returns the number of items in +enum+ through enumeration.
- * If an argument is given, the number of items in +enum+ that
- * are equal to +item+ are counted. If a block is given, it
- * counts the number of elements yielding a true value.
+ * Returns the number of items in <i>enum</i>, where #size is called
+ * if it responds to it, otherwise the items are counted through
+ * enumeration. If an argument is given, counts 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 #=> 4
- * ary.count(2) #=> 2
- * ary.count{ |x| x%2==0 } #=> 3
+ * ary.count #=> 4
+ * ary.count(2) #=> 2
+ * ary.count{|x|x%2==0} #=> 3
*
*/
static VALUE
enum_count(int argc, VALUE *argv, VALUE obj)
{
- VALUE item = Qnil;
- NODE *memo;
+ VALUE memo[2]; /* [count, condition value] */
rb_block_call_func *func;
if (argc == 0) {
@@ -163,27 +157,25 @@ enum_count(int argc, VALUE *argv, VALUE obj)
}
}
else {
- rb_scan_args(argc, argv, "1", &item);
+ rb_scan_args(argc, argv, "1", &memo[1]);
if (rb_block_given_p()) {
rb_warn("given block not used");
}
func = count_i;
}
- memo = NEW_MEMO(item, 0, 0);
- rb_block_call(obj, id_each, 0, 0, func, (VALUE)memo);
- return INT2NUM(memo->u3.cnt);
+ memo[0] = 0;
+ rb_block_call(obj, id_each, 0, 0, func, (VALUE)&memo);
+ return INT2NUM(memo[0]);
}
static VALUE
-find_i(VALUE i, VALUE memop, int argc, VALUE *argv)
+find_i(VALUE i, VALUE *memo, int argc, VALUE *argv)
{
ENUM_WANT_SVALUE();
if (RTEST(rb_yield(i))) {
- NODE *memo = RNODE(memop);
- memo->u1.value = i;
- memo->u3.cnt = 1;
+ *memo = i;
rb_iter_break();
}
return Qnil;
@@ -191,10 +183,10 @@ find_i(VALUE i, VALUE memop, int argc, VALUE *argv)
/*
* call-seq:
- * enum.detect(ifnone = nil) { |obj| block } -> obj or nil
- * enum.find(ifnone = nil) { |obj| block } -> obj or nil
- * enum.detect(ifnone = nil) -> an_enumerator
- * enum.find(ifnone = nil) -> an_enumerator
+ * enum.detect(ifnone = nil) {| obj | block } -> obj or nil
+ * enum.find(ifnone = nil) {| obj | block } -> obj or nil
+ * enum.detect(ifnone = nil) -> an_enumerator
+ * enum.find(ifnone = nil) -> an_enumerator
*
* Passes each entry in <i>enum</i> to <em>block</em>. Returns the
* first for which <em>block</em> is not false. If no
@@ -203,26 +195,25 @@ find_i(VALUE i, VALUE memop, int argc, VALUE *argv)
*
* If no block is given, an enumerator is returned instead.
*
- * (1..10).detect { |i| i % 5 == 0 and i % 7 == 0 } #=> nil
- * (1..100).find { |i| i % 5 == 0 and i % 7 == 0 } #=> 35
+ * (1..10).detect {|i| i % 5 == 0 and i % 7 == 0 } #=> nil
+ * (1..100).detect {|i| i % 5 == 0 and i % 7 == 0 } #=> 35
*
*/
static VALUE
enum_find(int argc, VALUE *argv, VALUE obj)
{
- NODE *memo;
+ VALUE memo = Qundef;
VALUE if_none;
rb_scan_args(argc, argv, "01", &if_none);
RETURN_ENUMERATOR(obj, argc, argv);
- memo = NEW_MEMO(Qundef, 0, 0);
- rb_block_call(obj, id_each, 0, 0, find_i, (VALUE)memo);
- if (memo->u3.cnt) {
- return memo->u1.value;
+ rb_block_call(obj, id_each, 0, 0, find_i, (VALUE)&memo);
+ if (memo != Qundef) {
+ return memo;
}
if (!NIL_P(if_none)) {
- return rb_funcall(if_none, id_call, 0, 0);
+ return rb_funcall(if_none, rb_intern("call"), 0, 0);
}
return Qnil;
}
@@ -230,36 +221,36 @@ enum_find(int argc, VALUE *argv, VALUE obj)
static VALUE
find_index_i(VALUE i, VALUE memop, int argc, VALUE *argv)
{
- NODE *memo = RNODE(memop);
+ VALUE *memo = (VALUE*)memop;
ENUM_WANT_SVALUE();
- if (rb_equal(i, memo->u2.value)) {
- memo->u1.value = UINT2NUM(memo->u3.cnt);
+ if (rb_equal(i, memo[2])) {
+ memo[0] = UINT2NUM(memo[1]);
rb_iter_break();
}
- memo->u3.cnt++;
+ memo[1]++;
return Qnil;
}
static VALUE
find_index_iter_i(VALUE i, VALUE memop, int argc, VALUE *argv)
{
- NODE *memo = RNODE(memop);
+ VALUE *memo = (VALUE*)memop;
if (RTEST(enum_yield(argc, argv))) {
- memo->u1.value = UINT2NUM(memo->u3.cnt);
+ memo[0] = UINT2NUM(memo[1]);
rb_iter_break();
}
- memo->u3.cnt++;
+ memo[1]++;
return Qnil;
}
/*
* call-seq:
- * enum.find_index(value) -> int or nil
- * enum.find_index { |obj| block } -> int or nil
- * enum.find_index -> an_enumerator
+ * enum.find_index(value) -> int or nil
+ * enum.find_index {| obj | block } -> int or nil
+ * enum.find_index -> an_enumerator
*
* Compares each entry in <i>enum</i> with <em>value</em> or passes
* to <em>block</em>. Returns the index for the first for which the
@@ -268,8 +259,8 @@ find_index_iter_i(VALUE i, VALUE memop, int argc, VALUE *argv)
*
* If neither block nor argument is given, an enumerator is returned instead.
*
- * (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 } #=> 34
+ * (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 } #=> 34
* (1..100).find_index(50) #=> 49
*
*/
@@ -277,8 +268,7 @@ find_index_iter_i(VALUE i, VALUE memop, int argc, VALUE *argv)
static VALUE
enum_find_index(int argc, VALUE *argv, VALUE obj)
{
- NODE *memo; /* [return value, current index, ] */
- VALUE condition_value = Qnil;
+ VALUE memo[3]; /* [return value, current index, condition value] */
rb_block_call_func *func;
if (argc == 0) {
@@ -286,16 +276,17 @@ enum_find_index(int argc, VALUE *argv, VALUE obj)
func = find_index_iter_i;
}
else {
- rb_scan_args(argc, argv, "1", &condition_value);
+ rb_scan_args(argc, argv, "1", &memo[2]);
if (rb_block_given_p()) {
rb_warn("given block not used");
}
func = find_index_i;
}
- memo = NEW_MEMO(Qnil, condition_value, 0);
+ memo[0] = Qnil;
+ memo[1] = 0;
rb_block_call(obj, id_each, 0, 0, func, (VALUE)memo);
- return memo->u1.value;
+ return memo[0];
}
static VALUE
@@ -309,32 +300,22 @@ find_all_i(VALUE i, VALUE ary, int argc, VALUE *argv)
return Qnil;
}
-static VALUE
-enum_size(VALUE self, VALUE args)
-{
- VALUE r;
- r = rb_check_funcall(self, id_size, 0, 0);
- return (r == Qundef) ? Qnil : r;
-}
-
/*
* call-seq:
- * enum.find_all { |obj| block } -> array
- * enum.select { |obj| block } -> array
- * enum.find_all -> an_enumerator
- * enum.select -> an_enumerator
- *
- * Returns an array containing all elements of +enum+
- * for which the given +block+ returns a true value.
+ * enum.find_all {| obj | block } -> array
+ * enum.select {| obj | block } -> array
+ * enum.find_all -> an_enumerator
+ * enum.select -> an_enumerator
*
- * If no block is given, an Enumerator is returned instead.
+ * Returns an array containing all elements of <i>enum</i> for which
+ * <em>block</em> is not <code>false</code> (see also
+ * <code>Enumerable#reject</code>).
*
+ * If no block is given, an enumerator is returned instead.
*
- * (1..10).find_all { |i| i % 3 == 0 } #=> [3, 6, 9]
*
- * [1,2,3,4,5].select { |num| num.even? } #=> [2, 4]
+ * (1..10).find_all {|i| i % 3 == 0 } #=> [3, 6, 9]
*
- * See also Enumerable#reject.
*/
static VALUE
@@ -342,7 +323,7 @@ enum_find_all(VALUE obj)
{
VALUE ary;
- RETURN_SIZED_ENUMERATOR(obj, 0, 0, enum_size);
+ RETURN_ENUMERATOR(obj, 0, 0);
ary = rb_ary_new();
rb_block_call(obj, id_each, 0, 0, find_all_i, ary);
@@ -363,19 +344,16 @@ reject_i(VALUE i, VALUE ary, int argc, VALUE *argv)
/*
* call-seq:
- * enum.reject { |obj| block } -> array
- * enum.reject -> an_enumerator
- *
- * Returns an array for all elements of +enum+ for which the given
- * +block+ returns false.
+ * enum.reject {| obj | block } -> array
+ * enum.reject -> an_enumerator
*
- * If no block is given, an Enumerator is returned instead.
+ * Returns an array for all elements of <i>enum</i> for which
+ * <em>block</em> is false (see also <code>Enumerable#find_all</code>).
*
- * (1..10).reject { |i| i % 3 == 0 } #=> [1, 2, 4, 5, 7, 8, 10]
+ * If no block is given, an enumerator is returned instead.
*
- * [1, 2, 3, 4, 5].reject { |num| num.even? } #=> [1, 3, 5]
+ * (1..10).reject {|i| i % 3 == 0 } #=> [1, 2, 4, 5, 7, 8, 10]
*
- * See also Enumerable#find_all.
*/
static VALUE
@@ -383,7 +361,7 @@ enum_reject(VALUE obj)
{
VALUE ary;
- RETURN_SIZED_ENUMERATOR(obj, 0, 0, enum_size);
+ RETURN_ENUMERATOR(obj, 0, 0);
ary = rb_ary_new();
rb_block_call(obj, id_each, 0, 0, reject_i, ary);
@@ -403,24 +381,24 @@ static VALUE
collect_all(VALUE i, VALUE ary, int argc, VALUE *argv)
{
rb_thread_check_ints();
- rb_ary_push(ary, rb_enum_values_pack(argc, argv));
+ rb_ary_push(ary, enum_values_pack(argc, argv));
return Qnil;
}
/*
* call-seq:
- * enum.collect { |obj| block } -> array
- * enum.map { |obj| block } -> array
- * enum.collect -> an_enumerator
- * enum.map -> an_enumerator
+ * enum.collect {| obj | block } -> array
+ * enum.map {| obj | block } -> array
+ * enum.collect -> an_enumerator
+ * enum.map -> an_enumerator
*
* Returns a new array with the results of running <em>block</em> once
* for every element in <i>enum</i>.
*
* If no block is given, an enumerator is returned instead.
*
- * (1..4).collect { |i| i*i } #=> [1, 4, 9, 16]
+ * (1..4).collect {|i| i*i } #=> [1, 4, 9, 16]
* (1..4).collect { "cat" } #=> ["cat", "cat", "cat", "cat"]
*
*/
@@ -430,7 +408,7 @@ enum_collect(VALUE obj)
{
VALUE ary;
- RETURN_SIZED_ENUMERATOR(obj, 0, 0, enum_size);
+ RETURN_ENUMERATOR(obj, 0, 0);
ary = rb_ary_new();
rb_block_call(obj, id_each, 0, 0, collect_i, ary);
@@ -457,18 +435,17 @@ flat_map_i(VALUE i, VALUE ary, int argc, VALUE *argv)
/*
* call-seq:
- * enum.flat_map { |obj| block } -> array
- * enum.collect_concat { |obj| block } -> array
- * enum.flat_map -> an_enumerator
- * enum.collect_concat -> an_enumerator
+ * enum.flat_map {| obj | block } -> array
+ * enum.collect_concat {| obj | block } -> array
+ * enum.flat_map -> an_enumerator
+ * enum.collect_concat -> an_enumerator
*
* Returns a new array with the concatenated results of running
* <em>block</em> once for every element in <i>enum</i>.
*
* If no block is given, an enumerator is returned instead.
*
- * [1, 2, 3, 4].flat_map { |e| [e, -e] } #=> [1, -1, 2, -2, 3, -3, 4, -4]
- * [[1, 2], [3, 4]].flat_map { |e| e + [100] } #=> [1, 2, 100, 3, 4, 100]
+ * [[1,2],[3,4]].flat_map {|i| i } #=> [1, 2, 3, 4]
*
*/
@@ -477,7 +454,7 @@ enum_flat_map(VALUE obj)
{
VALUE ary;
- RETURN_SIZED_ENUMERATOR(obj, 0, 0, enum_size);
+ RETURN_ENUMERATOR(obj, 0, 0);
ary = rb_ary_new();
rb_block_call(obj, id_each, 0, 0, flat_map_i, ary);
@@ -487,8 +464,8 @@ enum_flat_map(VALUE obj)
/*
* call-seq:
- * enum.to_a -> array
- * enum.entries -> array
+ * enum.to_a -> array
+ * enum.entries -> array
*
* Returns an array containing the items in <i>enum</i>.
*
@@ -509,16 +486,15 @@ enum_to_a(int argc, VALUE *argv, VALUE obj)
static VALUE
inject_i(VALUE i, VALUE p, int argc, VALUE *argv)
{
- NODE *memo = RNODE(p);
+ VALUE *memo = (VALUE *)p;
ENUM_WANT_SVALUE();
- if (memo->u2.argc == 0) {
- memo->u2.argc = 1;
- memo->u1.value = i;
+ if (memo[0] == Qundef) {
+ memo[0] = i;
}
else {
- memo->u1.value = rb_yield_values(2, memo->u1.value, i);
+ memo[0] = rb_yield_values(2, memo[0], i);
}
return Qnil;
}
@@ -526,16 +502,15 @@ inject_i(VALUE i, VALUE p, int argc, VALUE *argv)
static VALUE
inject_op_i(VALUE i, VALUE p, int argc, VALUE *argv)
{
- NODE *memo = RNODE(p);
+ VALUE *memo = (VALUE *)p;
ENUM_WANT_SVALUE();
- if (memo->u2.argc == 0) {
- memo->u2.argc = 1;
- memo->u1.value = i;
+ if (memo[0] == Qundef) {
+ memo[0] = i;
}
else {
- memo->u1.value = rb_funcall(memo->u1.value, memo->u3.id, 1, i);
+ memo[0] = rb_funcall(memo[0], (ID)memo[1], 1, i);
}
return Qnil;
}
@@ -544,12 +519,12 @@ inject_op_i(VALUE i, VALUE p, int argc, VALUE *argv)
* call-seq:
* enum.inject(initial, sym) -> obj
* enum.inject(sym) -> obj
- * enum.inject(initial) { |memo, obj| block } -> obj
- * enum.inject { |memo, obj| block } -> obj
+ * enum.inject(initial) {| memo, obj | block } -> obj
+ * enum.inject {| memo, obj | block } -> obj
* enum.reduce(initial, sym) -> obj
* enum.reduce(sym) -> obj
- * enum.reduce(initial) { |memo, obj| block } -> obj
- * enum.reduce { |memo, obj| block } -> obj
+ * enum.reduce(initial) {| memo, obj | block } -> obj
+ * enum.reduce {| memo, obj | block } -> obj
*
* Combines all elements of <i>enum</i> by applying a binary
* operation, specified by a block or a symbol that names a
@@ -564,78 +539,75 @@ inject_op_i(VALUE i, VALUE p, int argc, VALUE *argv)
* return value for the method.
*
* If you do not explicitly specify an <i>initial</i> value for <i>memo</i>,
- * then the first element of collection is used as the initial value
+ * then uses the first element of collection is used as the initial value
* of <i>memo</i>.
*
+ * Examples:
*
* # Sum some numbers
- * (5..10).reduce(:+) #=> 45
+ * (5..10).reduce(:+) #=> 45
* # Same using a block and inject
- * (5..10).inject { |sum, n| sum + n } #=> 45
+ * (5..10).inject {|sum, n| sum + n } #=> 45
* # Multiply some numbers
- * (5..10).reduce(1, :*) #=> 151200
+ * (5..10).reduce(1, :*) #=> 151200
* # Same using a block
- * (5..10).inject(1) { |product, n| product * n } #=> 151200
+ * (5..10).inject(1) {|product, n| product * n } #=> 151200
* # find the longest word
- * longest = %w{ cat sheep bear }.inject do |memo, word|
+ * longest = %w{ cat sheep bear }.inject do |memo,word|
* memo.length > word.length ? memo : word
* end
- * longest #=> "sheep"
+ * longest #=> "sheep"
*
*/
static VALUE
enum_inject(int argc, VALUE *argv, VALUE obj)
{
- NODE *memo;
- VALUE init, op;
+ VALUE memo[2];
VALUE (*iter)(VALUE, VALUE, int, VALUE*) = inject_i;
- switch (rb_scan_args(argc, argv, "02", &init, &op)) {
+ switch (rb_scan_args(argc, argv, "02", &memo[0], &memo[1])) {
case 0:
+ memo[0] = Qundef;
break;
case 1:
if (rb_block_given_p()) {
break;
}
- op = (VALUE)rb_to_id(init);
- argc = 0;
- init = Qnil;
+ memo[1] = (VALUE)rb_to_id(memo[0]);
+ memo[0] = Qundef;
iter = inject_op_i;
break;
case 2:
if (rb_block_given_p()) {
rb_warning("given block not used");
}
- op = (VALUE)rb_to_id(op);
+ memo[1] = (VALUE)rb_to_id(memo[1]);
iter = inject_op_i;
break;
}
- memo = NEW_MEMO(init, argc, op);
rb_block_call(obj, id_each, 0, 0, iter, (VALUE)memo);
- return memo->u1.value;
+ if (memo[0] == Qundef) return Qnil;
+ return memo[0];
}
static VALUE
-partition_i(VALUE i, VALUE arys, int argc, VALUE *argv)
+partition_i(VALUE i, VALUE *ary, int argc, VALUE *argv)
{
- NODE *memo = RNODE(arys);
- VALUE ary;
ENUM_WANT_SVALUE();
if (RTEST(rb_yield(i))) {
- ary = memo->u1.value;
+ rb_ary_push(ary[0], i);
}
else {
- ary = memo->u2.value;
+ rb_ary_push(ary[1], i);
}
- rb_ary_push(ary, i);
return Qnil;
}
/*
* call-seq:
- * enum.partition { |obj| block } -> [ true_array, false_array ]
- * enum.partition -> an_enumerator
+ * enum.partition {| obj | block } -> [ true_array, false_array ]
+ * enum.partition -> an_enumerator
*
* Returns two arrays, the first containing the elements of
* <i>enum</i> for which the block evaluates to true, the second
@@ -643,21 +615,22 @@ partition_i(VALUE i, VALUE arys, int argc, VALUE *argv)
*
* If no block is given, an enumerator is returned instead.
*
- * (1..6).partition { |v| v.even? } #=> [[2, 4, 6], [1, 3, 5]]
+ * (1..6).partition {|v| v.even? } #=> [[2, 4, 6], [1, 3, 5]]
*
*/
static VALUE
enum_partition(VALUE obj)
{
- NODE *memo;
+ VALUE ary[2];
- RETURN_SIZED_ENUMERATOR(obj, 0, 0, enum_size);
+ RETURN_ENUMERATOR(obj, 0, 0);
- memo = NEW_MEMO(rb_ary_new(), rb_ary_new(), 0);
- rb_block_call(obj, id_each, 0, 0, partition_i, (VALUE)memo);
+ ary[0] = rb_ary_new();
+ ary[1] = rb_ary_new();
+ rb_block_call(obj, id_each, 0, 0, partition_i, (VALUE)ary);
- return rb_assoc_new(memo->u1.value, memo->u2.value);
+ return rb_assoc_new(ary[0], ary[1]);
}
static VALUE
@@ -670,7 +643,7 @@ group_by_i(VALUE i, VALUE hash, int argc, VALUE *argv)
group = rb_yield(i);
values = rb_hash_aref(hash, group);
- if (!RB_TYPE_P(values, T_ARRAY)) {
+ if (NIL_P(values)) {
values = rb_ary_new3(1, i);
rb_hash_aset(hash, group, values);
}
@@ -682,16 +655,16 @@ group_by_i(VALUE i, VALUE hash, int argc, VALUE *argv)
/*
* call-seq:
- * enum.group_by { |obj| block } -> a_hash
- * enum.group_by -> an_enumerator
+ * enum.group_by {| obj | block } -> a_hash
+ * enum.group_by -> an_enumerator
*
- * Groups the collection by result of the block. Returns a hash where the
- * keys are the evaluated result from the block and the values are
- * arrays of elements in the collection that correspond to the key.
+ * 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.
*
- * If no block is given an enumerator is returned.
+ * If no block is given, an enumerator is returned instead.
*
- * (1..6).group_by { |i| i%3 } #=> {0=>[3, 6], 1=>[1, 4], 2=>[2, 5]}
+ * (1..6).group_by {|i| i%3} #=> {0=>[3, 6], 1=>[1, 4], 2=>[2, 5]}
*
*/
@@ -700,7 +673,7 @@ enum_group_by(VALUE obj)
{
VALUE hash;
- RETURN_SIZED_ENUMERATOR(obj, 0, 0, enum_size);
+ RETURN_ENUMERATOR(obj, 0, 0);
hash = rb_hash_new();
rb_block_call(obj, id_each, 0, 0, group_by_i, hash);
@@ -710,19 +683,27 @@ enum_group_by(VALUE obj)
}
static VALUE
-first_i(VALUE i, VALUE params, int argc, VALUE *argv)
+first_i(VALUE i, VALUE *params, int argc, VALUE *argv)
{
- NODE *memo = RNODE(params);
ENUM_WANT_SVALUE();
- memo->u1.value = i;
- rb_iter_break();
+ if (NIL_P(params[1])) {
+ params[1] = i;
+ rb_iter_break();
+ }
+ else {
+ long n = params[0];
- UNREACHABLE;
+ rb_ary_push(params[1], i);
+ n--;
+ if (n <= 0) {
+ rb_iter_break();
+ }
+ params[0] = n;
+ }
+ return Qnil;
}
-static VALUE enum_take(VALUE obj, VALUE n);
-
/*
* call-seq:
* enum.first -> obj or nil
@@ -742,23 +723,33 @@ static VALUE enum_take(VALUE obj, VALUE n);
static VALUE
enum_first(int argc, VALUE *argv, VALUE obj)
{
- NODE *memo;
- rb_check_arity(argc, 0, 1);
- if (argc > 0) {
- return enum_take(obj, argv[0]);
+ VALUE n, params[2];
+
+ if (argc == 0) {
+ params[0] = params[1] = Qnil;
}
else {
- memo = NEW_MEMO(Qnil, 0, 0);
- rb_block_call(obj, id_each, 0, 0, first_i, (VALUE)memo);
- return memo->u1.value;
+ long len;
+
+ rb_scan_args(argc, argv, "01", &n);
+ len = NUM2LONG(n);
+ if (len == 0) return rb_ary_new2(0);
+ if (len < 0) {
+ rb_raise(rb_eArgError, "negative length");
+ }
+ params[0] = len;
+ params[1] = rb_ary_new2(len);
}
+ rb_block_call(obj, id_each, 0, 0, first_i, (VALUE)params);
+
+ return params[1];
}
/*
* call-seq:
- * enum.sort -> array
- * enum.sort { |a, b| block } -> array
+ * enum.sort -> array
+ * enum.sort {| a, b | block } -> array
*
* Returns an array containing the items in <i>enum</i> sorted,
* either according to their own <code><=></code> method, or by using
@@ -768,8 +759,8 @@ enum_first(int argc, VALUE *argv, VALUE obj)
* built-in Schwartzian Transform, useful when key computation or
* comparison is expensive.
*
- * %w(rhea kea flea).sort #=> ["flea", "kea", "rhea"]
- * (1..10).sort { |a, b| b <=> a } #=> [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
+ * %w(rhea kea flea).sort #=> ["flea", "kea", "rhea"]
+ * (1..10).sort {|a,b| b <=> a} #=> [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
*/
static VALUE
@@ -782,13 +773,13 @@ enum_sort(VALUE obj)
struct sort_by_data {
VALUE ary;
VALUE buf;
- long n;
+ int n;
};
static VALUE
sort_by_i(VALUE i, VALUE _data, int argc, VALUE *argv)
{
- struct sort_by_data *data = (struct sort_by_data *)&RNODE(_data)->u1;
+ struct sort_by_data *data = (struct sort_by_data *)_data;
VALUE ary = data->ary;
VALUE v;
@@ -832,29 +823,29 @@ sort_by_cmp(const void *ap, const void *bp, void *data)
/*
* call-seq:
- * enum.sort_by { |obj| block } -> array
- * enum.sort_by -> an_enumerator
+ * enum.sort_by {| obj | block } -> array
+ * enum.sort_by -> an_enumerator
*
* Sorts <i>enum</i> using a set of keys generated by mapping the
* values in <i>enum</i> through the given block.
*
* If no block is given, an enumerator is returned instead.
*
- * %w{apple pear fig}.sort_by { |word| word.length}
+ * %w{ apple pear fig }.sort_by {|word| word.length}
* #=> ["fig", "pear", "apple"]
*
* The current implementation of <code>sort_by</code> generates an
* array of tuples containing the original collection element and the
* mapped value. This makes <code>sort_by</code> fairly expensive when
- * the keysets are simple.
+ * the keysets are simple
*
* require 'benchmark'
*
- * a = (1..100000).map { rand(100000) }
+ * a = (1..100000).map {rand(100000)}
*
* Benchmark.bm(10) do |b|
* b.report("Sort") { a.sort }
- * b.report("Sort by") { a.sort_by { |a| a } }
+ * b.report("Sort by") { a.sort_by {|a| a} }
* end
*
* <em>produces:</em>
@@ -868,7 +859,7 @@ sort_by_cmp(const void *ap, const void *bp, void *data)
* using the basic <code>sort</code> method.
*
* files = Dir["*"]
- * sorted = files.sort { |a, b| File.new(a).mtime <=> File.new(b).mtime }
+ * sorted = files.sort {|a,b| File.new(a).mtime <=> File.new(b).mtime}
* sorted #=> ["mon", "tues", "wed", "thurs"]
*
* This sort is inefficient: it generates two new <code>File</code>
@@ -877,7 +868,7 @@ sort_by_cmp(const void *ap, const void *bp, void *data)
* times directly.
*
* files = Dir["*"]
- * sorted = files.sort { |a, b|
+ * sorted = files.sort { |a,b|
* test(?M, a) <=> test(?M, b)
* }
* sorted #=> ["mon", "tues", "wed", "thurs"]
@@ -897,41 +888,34 @@ sort_by_cmp(const void *ap, const void *bp, void *data)
*
* This is exactly what <code>sort_by</code> does internally.
*
- * sorted = Dir["*"].sort_by { |f| test(?M, f) }
+ * sorted = Dir["*"].sort_by {|f| test(?M, f)}
* sorted #=> ["mon", "tues", "wed", "thurs"]
*/
static VALUE
enum_sort_by(VALUE obj)
{
- VALUE ary, buf;
- NODE *memo;
+ VALUE ary;
long i;
- struct sort_by_data *data;
+ struct sort_by_data data;
- RETURN_SIZED_ENUMERATOR(obj, 0, 0, enum_size);
+ RETURN_ENUMERATOR(obj, 0, 0);
- if (RB_TYPE_P(obj, T_ARRAY) && RARRAY_LEN(obj) <= LONG_MAX/2) {
+ if (TYPE(obj) == T_ARRAY && RARRAY_LEN(obj) <= LONG_MAX/2) {
ary = rb_ary_new2(RARRAY_LEN(obj)*2);
}
else {
ary = rb_ary_new();
}
RBASIC(ary)->klass = 0;
- buf = rb_ary_tmp_new(SORT_BY_BUFSIZE*2);
- rb_ary_store(buf, SORT_BY_BUFSIZE*2-1, Qnil);
- memo = NEW_MEMO(0, 0, 0);
- OBJ_INFECT(memo, obj);
- data = (struct sort_by_data *)&memo->u1;
- data->ary = ary;
- data->buf = buf;
- data->n = 0;
- rb_block_call(obj, id_each, 0, 0, sort_by_i, (VALUE)memo);
- ary = data->ary;
- buf = data->buf;
- if (data->n) {
- rb_ary_resize(buf, data->n*2);
- rb_ary_concat(ary, buf);
+ data.ary = ary;
+ data.buf = rb_ary_tmp_new(SORT_BY_BUFSIZE*2);
+ data.n = 0;
+ rb_ary_store(data.buf, SORT_BY_BUFSIZE*2-1, Qnil);
+ rb_block_call(obj, id_each, 0, 0, sort_by_i, (VALUE)&data);
+ if (data.n) {
+ rb_ary_resize(data.buf, data.n*2);
+ rb_ary_concat(ary, data.buf);
}
if (RARRAY_LEN(ary) > 2) {
ruby_qsort(RARRAY_PTR(ary), RARRAY_LEN(ary)/2, 2*sizeof(VALUE),
@@ -945,7 +929,7 @@ enum_sort_by(VALUE obj)
}
rb_ary_resize(ary, RARRAY_LEN(ary)/2);
RBASIC(ary)->klass = rb_cArray;
- OBJ_INFECT(ary, memo);
+ OBJ_INFECT(ary, obj);
return ary;
}
@@ -953,27 +937,27 @@ enum_sort_by(VALUE obj)
#define ENUMFUNC(name) rb_block_given_p() ? name##_iter_i : name##_i
#define DEFINE_ENUMFUNCS(name) \
-static VALUE enum_##name##_func(VALUE result, NODE *memo); \
+static VALUE enum_##name##_func(VALUE result, VALUE *memo); \
\
static VALUE \
-name##_i(VALUE i, VALUE memo, int argc, VALUE *argv) \
+name##_i(VALUE i, VALUE *memo, int argc, VALUE *argv) \
{ \
- return enum_##name##_func(rb_enum_values_pack(argc, argv), RNODE(memo)); \
+ return enum_##name##_func(enum_values_pack(argc, argv), memo); \
} \
\
static VALUE \
-name##_iter_i(VALUE i, VALUE memo, int argc, VALUE *argv) \
+name##_iter_i(VALUE i, VALUE *memo, int argc, VALUE *argv) \
{ \
- return enum_##name##_func(enum_yield(argc, argv), RNODE(memo)); \
+ return enum_##name##_func(enum_yield(argc, argv), memo); \
} \
\
static VALUE \
-enum_##name##_func(VALUE result, NODE *memo)
+enum_##name##_func(VALUE result, VALUE *memo)
DEFINE_ENUMFUNCS(all)
{
if (!RTEST(result)) {
- memo->u1.value = Qfalse;
+ *memo = Qfalse;
rb_iter_break();
}
return Qnil;
@@ -981,33 +965,34 @@ DEFINE_ENUMFUNCS(all)
/*
* call-seq:
- * enum.all? [{ |obj| block } ] -> true or false
+ * enum.all? [{|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>false</code> or <code>nil</code>. If the block is not given,
- * Ruby adds an implicit block of <code>{ |obj| obj }</code> which will
- * cause #all? to return +true+ when none of the collection members are
- * +false+ or +nil+.
+ * Ruby adds an implicit block of <code>{|obj| obj}</code> (that is
+ * <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)
{
- NODE *memo = NEW_MEMO(Qtrue, 0, 0);
- rb_block_call(obj, id_each, 0, 0, ENUMFUNC(all), (VALUE)memo);
- return memo->u1.value;
+ VALUE result = Qtrue;
+
+ rb_block_call(obj, id_each, 0, 0, ENUMFUNC(all), (VALUE)&result);
+ return result;
}
DEFINE_ENUMFUNCS(any)
{
if (RTEST(result)) {
- memo->u1.value = Qtrue;
+ *memo = Qtrue;
rb_iter_break();
}
return Qnil;
@@ -1015,37 +1000,39 @@ DEFINE_ENUMFUNCS(any)
/*
* call-seq:
- * enum.any? [{ |obj| block }] -> true or false
+ * enum.any? [{|obj| block } ] -> true or false
*
* Passes each element of the collection to the given block. The method
* returns <code>true</code> if the block ever returns a value other
* than <code>false</code> or <code>nil</code>. If the block is not
- * given, Ruby adds an implicit block of <code>{ |obj| obj }</code> that
- * will cause #any? to return +true+ if at least one of the collection
- * members is not +false+ or +nil+.
+ * given, Ruby adds an implicit block of <code>{|obj| obj}</code> (that
+ * is <code>any?</code> will return <code>true</code> if at least one
+ * 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)
{
- NODE *memo = NEW_MEMO(Qfalse, 0, 0);
- rb_block_call(obj, id_each, 0, 0, ENUMFUNC(any), (VALUE)memo);
- return memo->u1.value;
+ VALUE result = Qfalse;
+
+ rb_block_call(obj, id_each, 0, 0, ENUMFUNC(any), (VALUE)&result);
+ return result;
}
DEFINE_ENUMFUNCS(one)
{
if (RTEST(result)) {
- if (memo->u1.value == Qundef) {
- memo->u1.value = Qtrue;
+ if (*memo == Qundef) {
+ *memo = Qtrue;
}
- else if (memo->u1.value == Qtrue) {
- memo->u1.value = Qfalse;
+ else if (*memo == Qtrue) {
+ *memo = Qfalse;
rb_iter_break();
}
}
@@ -1054,7 +1041,7 @@ DEFINE_ENUMFUNCS(one)
/*
* call-seq:
- * enum.one? [{ |obj| block }] -> true or false
+ * 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>
@@ -1062,22 +1049,20 @@ DEFINE_ENUMFUNCS(one)
* <code>true</code> only if exactly one 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
- * %w{ant bear cat}.one? { |word| word.length < 4 } #=> false
- * [ nil, true, 99 ].one? #=> false
- * [ nil, true, false ].one? #=> true
+ * %w{ant bear cat}.one? {|word| word.length == 4} #=> true
+ * %w{ant bear cat}.one? {|word| word.length > 4} #=> false
+ * %w{ant bear cat}.one? {|word| word.length < 4} #=> false
+ * [ nil, true, 99 ].one? #=> false
+ * [ nil, true, false ].one? #=> true
*
*/
static VALUE
enum_one(VALUE obj)
{
- NODE *memo = NEW_MEMO(Qundef, 0, 0);
- VALUE result;
+ VALUE result = Qundef;
- rb_block_call(obj, id_each, 0, 0, ENUMFUNC(one), (VALUE)memo);
- result = memo->u1.value;
+ rb_block_call(obj, id_each, 0, 0, ENUMFUNC(one), (VALUE)&result);
if (result == Qundef) return Qfalse;
return result;
}
@@ -1085,7 +1070,7 @@ enum_one(VALUE obj)
DEFINE_ENUMFUNCS(none)
{
if (RTEST(result)) {
- memo->u1.value = Qfalse;
+ *memo = Qfalse;
rb_iter_break();
}
return Qnil;
@@ -1093,62 +1078,61 @@ DEFINE_ENUMFUNCS(none)
/*
* call-seq:
- * enum.none? [{ |obj| block }] -> true or false
+ * 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>none?</code> will return
* <code>true</code> only if none of the collection members is true.
*
- * %w{ant bear cat}.none? { |word| word.length == 5 } #=> true
- * %w{ant bear cat}.none? { |word| word.length >= 4 } #=> false
- * [].none? #=> true
- * [nil].none? #=> true
- * [nil, false].none? #=> true
+ * %w{ant bear cat}.none? {|word| word.length == 5} #=> true
+ * %w{ant bear cat}.none? {|word| word.length >= 4} #=> false
+ * [].none? #=> true
+ * [nil].none? #=> true
+ * [nil,false].none? #=> true
*/
static VALUE
enum_none(VALUE obj)
{
- NODE *memo = NEW_MEMO(Qtrue, 0, 0);
- rb_block_call(obj, id_each, 0, 0, ENUMFUNC(none), (VALUE)memo);
- return memo->u1.value;
+ VALUE result = Qtrue;
+
+ rb_block_call(obj, id_each, 0, 0, ENUMFUNC(none), (VALUE)&result);
+ return result;
}
static VALUE
-min_i(VALUE i, VALUE args, int argc, VALUE *argv)
+min_i(VALUE i, VALUE *memo, int argc, VALUE *argv)
{
VALUE cmp;
- NODE *memo = RNODE(args);
ENUM_WANT_SVALUE();
- if (memo->u1.value == Qundef) {
- memo->u1.value = i;
+ if (*memo == Qundef) {
+ *memo = i;
}
else {
- cmp = rb_funcall(i, id_cmp, 1, memo->u1.value);
- if (rb_cmpint(cmp, i, memo->u1.value) < 0) {
- memo->u1.value = i;
+ cmp = rb_funcall(i, id_cmp, 1, *memo);
+ if (rb_cmpint(cmp, i, *memo) < 0) {
+ *memo = i;
}
}
return Qnil;
}
static VALUE
-min_ii(VALUE i, VALUE args, int argc, VALUE *argv)
+min_ii(VALUE i, VALUE *memo, int argc, VALUE *argv)
{
VALUE cmp;
- NODE *memo = RNODE(args);
ENUM_WANT_SVALUE();
- if (memo->u1.value == Qundef) {
- memo->u1.value = i;
+ if (*memo == Qundef) {
+ *memo = i;
}
else {
- cmp = rb_yield_values(2, i, memo->u1.value);
- if (rb_cmpint(cmp, i, memo->u1.value) < 0) {
- memo->u1.value = i;
+ cmp = rb_yield_values(2, i, *memo);
+ if (rb_cmpint(cmp, i, *memo) < 0) {
+ *memo = i;
}
}
return Qnil;
@@ -1157,70 +1141,66 @@ min_ii(VALUE i, VALUE args, int argc, VALUE *argv)
/*
* call-seq:
- * enum.min -> obj
- * enum.min { |a, b| block } -> obj
+ * enum.min -> obj
+ * enum.min {| a,b | block } -> obj
*
* Returns the object in <i>enum</i> with the minimum 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.min #=> "albatross"
- * a.min { |a, b| a.length <=> b.length } #=> "dog"
+ * a.min #=> "albatross"
+ * a.min {|a,b| a.length <=> b.length } #=> "dog"
*/
static VALUE
enum_min(VALUE obj)
{
- NODE *memo = NEW_MEMO(Qundef, 0, 0);
- VALUE result;
+ VALUE result = Qundef;
if (rb_block_given_p()) {
- rb_block_call(obj, id_each, 0, 0, min_ii, (VALUE)memo);
+ rb_block_call(obj, id_each, 0, 0, min_ii, (VALUE)&result);
}
else {
- rb_block_call(obj, id_each, 0, 0, min_i, (VALUE)memo);
+ rb_block_call(obj, id_each, 0, 0, min_i, (VALUE)&result);
}
- result = memo->u1.value;
if (result == Qundef) return Qnil;
return result;
}
static VALUE
-max_i(VALUE i, VALUE args, int argc, VALUE *argv)
+max_i(VALUE i, VALUE *memo, int argc, VALUE *argv)
{
- NODE *memo = RNODE(args);
VALUE cmp;
ENUM_WANT_SVALUE();
- if (memo->u1.value == Qundef) {
- memo->u1.value = i;
+ if (*memo == Qundef) {
+ *memo = i;
}
else {
- cmp = rb_funcall(i, id_cmp, 1, memo->u1.value);
- if (rb_cmpint(cmp, i, memo->u1.value) > 0) {
- memo->u1.value = i;
+ cmp = rb_funcall(i, id_cmp, 1, *memo);
+ if (rb_cmpint(cmp, i, *memo) > 0) {
+ *memo = i;
}
}
return Qnil;
}
static VALUE
-max_ii(VALUE i, VALUE args, int argc, VALUE *argv)
+max_ii(VALUE i, VALUE *memo, int argc, VALUE *argv)
{
- NODE *memo = RNODE(args);
VALUE cmp;
ENUM_WANT_SVALUE();
- if (memo->u1.value == Qundef) {
- memo->u1.value = i;
+ if (*memo == Qundef) {
+ *memo = i;
}
else {
- cmp = rb_yield_values(2, i, memo->u1.value);
- if (rb_cmpint(cmp, i, memo->u1.value) > 0) {
- memo->u1.value = i;
+ cmp = rb_yield_values(2, i, *memo);
+ if (rb_cmpint(cmp, i, *memo) > 0) {
+ *memo = i;
}
}
return Qnil;
@@ -1228,31 +1208,29 @@ max_ii(VALUE i, VALUE args, int argc, VALUE *argv)
/*
* call-seq:
- * enum.max -> obj
- * enum.max { |a, b| block } -> obj
+ * enum.max -> obj
+ * enum.max {|a,b| block } -> obj
*
* Returns the object in _enum_ 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"
+ * a.max #=> "horse"
+ * a.max {|a,b| a.length <=> b.length } #=> "albatross"
*/
static VALUE
enum_max(VALUE obj)
{
- NODE *memo = NEW_MEMO(Qundef, 0, 0);
- VALUE result;
+ VALUE result = Qundef;
if (rb_block_given_p()) {
- rb_block_call(obj, id_each, 0, 0, max_ii, (VALUE)memo);
+ rb_block_call(obj, id_each, 0, 0, max_ii, (VALUE)&result);
}
else {
- rb_block_call(obj, id_each, 0, 0, max_i, (VALUE)memo);
+ rb_block_call(obj, id_each, 0, 0, max_i, (VALUE)&result);
}
- result = memo->u1.value;
if (result == Qundef) return Qnil;
return result;
}
@@ -1263,8 +1241,6 @@ struct minmax_t {
VALUE last;
};
-STATIC_ASSERT(minmax_t, sizeof(struct minmax_t) <= sizeof(NODE) - offsetof(NODE, u1));
-
static void
minmax_i_update(VALUE i, VALUE j, struct minmax_t *memo)
{
@@ -1289,7 +1265,7 @@ minmax_i_update(VALUE i, VALUE j, struct minmax_t *memo)
static VALUE
minmax_i(VALUE i, VALUE _memo, int argc, VALUE *argv)
{
- struct minmax_t *memo = (struct minmax_t *)&RNODE(_memo)->u1.value;
+ struct minmax_t *memo = (struct minmax_t *)_memo;
int n;
VALUE j;
@@ -1341,7 +1317,7 @@ minmax_ii_update(VALUE i, VALUE j, struct minmax_t *memo)
static VALUE
minmax_ii(VALUE i, VALUE _memo, int argc, VALUE *argv)
{
- struct minmax_t *memo = (struct minmax_t *)&RNODE(_memo)->u1.value;
+ struct minmax_t *memo = (struct minmax_t *)_memo;
int n;
VALUE j;
@@ -1371,8 +1347,8 @@ minmax_ii(VALUE i, VALUE _memo, int argc, VALUE *argv)
/*
* call-seq:
- * enum.minmax -> [min, max]
- * enum.minmax { |a, b| block } -> [min, max]
+ * enum.minmax -> [min,max]
+ * enum.minmax {|a,b| block } -> [min,max]
*
* Returns two elements array which contains the minimum and the
* maximum value in the enumerable. The first form assumes all
@@ -1381,59 +1357,57 @@ minmax_ii(VALUE i, VALUE _memo, int argc, VALUE *argv)
*
* a = %w(albatross dog horse)
* a.minmax #=> ["albatross", "horse"]
- * a.minmax { |a, b| a.length <=> b.length } #=> ["dog", "albatross"]
+ * a.minmax {|a,b| a.length <=> b.length } #=> ["dog", "albatross"]
*/
static VALUE
enum_minmax(VALUE obj)
{
- NODE *memo = NEW_MEMO(Qundef, Qundef, Qundef);
- struct minmax_t *m = (struct minmax_t *)&memo->u1.value;
+ struct minmax_t memo;
VALUE ary = rb_ary_new3(2, Qnil, Qnil);
- m->min = Qundef;
- m->last = Qundef;
+ memo.min = Qundef;
+ memo.last = Qundef;
if (rb_block_given_p()) {
- rb_block_call(obj, id_each, 0, 0, minmax_ii, (VALUE)memo);
- if (m->last != Qundef)
- minmax_ii_update(m->last, m->last, m);
+ rb_block_call(obj, id_each, 0, 0, minmax_ii, (VALUE)&memo);
+ if (memo.last != Qundef)
+ minmax_ii_update(memo.last, memo.last, &memo);
}
else {
- rb_block_call(obj, id_each, 0, 0, minmax_i, (VALUE)memo);
- if (m->last != Qundef)
- minmax_i_update(m->last, m->last, m);
+ rb_block_call(obj, id_each, 0, 0, minmax_i, (VALUE)&memo);
+ if (memo.last != Qundef)
+ minmax_i_update(memo.last, memo.last, &memo);
}
- if (m->min != Qundef) {
- rb_ary_store(ary, 0, m->min);
- rb_ary_store(ary, 1, m->max);
+ if (memo.min != Qundef) {
+ rb_ary_store(ary, 0, memo.min);
+ rb_ary_store(ary, 1, memo.max);
}
return ary;
}
static VALUE
-min_by_i(VALUE i, VALUE args, int argc, VALUE *argv)
+min_by_i(VALUE i, VALUE *memo, int argc, VALUE *argv)
{
- NODE *memo = RNODE(args);
VALUE v;
ENUM_WANT_SVALUE();
v = rb_yield(i);
- if (memo->u1.value == Qundef) {
- memo->u1.value = v;
- memo->u2.value = i;
+ if (memo[0] == Qundef) {
+ memo[0] = v;
+ memo[1] = i;
}
- else if (rb_cmpint(rb_funcall(v, id_cmp, 1, memo->u1.value), v, memo->u1.value) < 0) {
- memo->u1.value = v;
- memo->u2.value = 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
- * enum.min_by -> an_enumerator
+ * enum.min_by {|obj| block } -> obj
+ * enum.min_by -> an_enumerator
*
* Returns the object in <i>enum</i> that gives the minimum
* value from the given block.
@@ -1441,45 +1415,45 @@ min_by_i(VALUE i, VALUE args, int argc, VALUE *argv)
* If no block is given, an enumerator is returned instead.
*
* a = %w(albatross dog horse)
- * a.min_by { |x| x.length } #=> "dog"
+ * a.min_by {|x| x.length } #=> "dog"
*/
static VALUE
enum_min_by(VALUE obj)
{
- NODE *memo;
+ VALUE memo[2];
- RETURN_SIZED_ENUMERATOR(obj, 0, 0, enum_size);
+ RETURN_ENUMERATOR(obj, 0, 0);
- memo = NEW_MEMO(Qundef, Qnil, 0);
+ memo[0] = Qundef;
+ memo[1] = Qnil;
rb_block_call(obj, id_each, 0, 0, min_by_i, (VALUE)memo);
- return memo->u2.value;
+ return memo[1];
}
static VALUE
-max_by_i(VALUE i, VALUE args, int argc, VALUE *argv)
+max_by_i(VALUE i, VALUE *memo, int argc, VALUE *argv)
{
- NODE *memo = RNODE(args);
VALUE v;
ENUM_WANT_SVALUE();
v = rb_yield(i);
- if (memo->u1.value == Qundef) {
- memo->u1.value = v;
- memo->u2.value = i;
+ if (memo[0] == Qundef) {
+ memo[0] = v;
+ memo[1] = i;
}
- else if (rb_cmpint(rb_funcall(v, id_cmp, 1, memo->u1.value), v, memo->u1.value) > 0) {
- memo->u1.value = v;
- memo->u2.value = 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
- * enum.max_by -> an_enumerator
+ * enum.max_by {|obj| block } -> obj
+ * enum.max_by -> an_enumerator
*
* Returns the object in <i>enum</i> that gives the maximum
* value from the given block.
@@ -1487,19 +1461,20 @@ max_by_i(VALUE i, VALUE args, int argc, VALUE *argv)
* If no block is given, an enumerator is returned instead.
*
* a = %w(albatross dog horse)
- * a.max_by { |x| x.length } #=> "albatross"
+ * a.max_by {|x| x.length } #=> "albatross"
*/
static VALUE
enum_max_by(VALUE obj)
{
- NODE *memo;
+ VALUE memo[2];
- RETURN_SIZED_ENUMERATOR(obj, 0, 0, enum_size);
+ RETURN_ENUMERATOR(obj, 0, 0);
- memo = NEW_MEMO(Qundef, Qnil, 0);
+ memo[0] = Qundef;
+ memo[1] = Qnil;
rb_block_call(obj, id_each, 0, 0, max_by_i, (VALUE)memo);
- return memo->u2.value;
+ return memo[1];
}
struct minmax_by_t {
@@ -1535,7 +1510,7 @@ minmax_by_i_update(VALUE v1, VALUE v2, VALUE i1, VALUE i2, struct minmax_by_t *m
static VALUE
minmax_by_i(VALUE i, VALUE _memo, int argc, VALUE *argv)
{
- struct minmax_by_t *memo = MEMO_FOR(struct minmax_by_t, _memo);
+ struct minmax_by_t *memo = (struct minmax_by_t *)_memo;
VALUE vi, vj, j;
int n;
@@ -1574,47 +1549,43 @@ minmax_by_i(VALUE i, VALUE _memo, int argc, VALUE *argv)
/*
* call-seq:
- * enum.minmax_by { |obj| block } -> [min, max]
- * enum.minmax_by -> an_enumerator
+ * enum.minmax_by {|obj| block } -> [min, max]
+ * enum.minmax_by -> an_enumerator
*
- * Returns a two element array containing the objects in
- * <i>enum</i> that correspond to the minimum and maximum values respectively
+ * Returns two elements array array containing the objects in
+ * <i>enum</i> that gives the minimum and maximum values respectively
* from the given block.
*
* If no block is given, an enumerator is returned instead.
*
* a = %w(albatross dog horse)
- * a.minmax_by { |x| x.length } #=> ["dog", "albatross"]
+ * a.minmax_by {|x| x.length } #=> ["dog", "albatross"]
*/
static VALUE
enum_minmax_by(VALUE obj)
{
- VALUE memo;
- struct minmax_by_t *m = NEW_MEMO_FOR(struct minmax_by_t, memo);
+ struct minmax_by_t memo;
- RETURN_SIZED_ENUMERATOR(obj, 0, 0, enum_size);
+ RETURN_ENUMERATOR(obj, 0, 0);
- m->min_bv = Qundef;
- m->max_bv = Qundef;
- m->min = Qnil;
- m->max = Qnil;
- m->last_bv = Qundef;
- m->last = Qundef;
- rb_block_call(obj, id_each, 0, 0, minmax_by_i, memo);
- if (m->last_bv != Qundef)
- minmax_by_i_update(m->last_bv, m->last_bv, m->last, m->last, m);
- m = MEMO_FOR(struct minmax_by_t, memo);
- return rb_assoc_new(m->min, m->max);
+ memo.min_bv = Qundef;
+ memo.max_bv = Qundef;
+ memo.min = Qnil;
+ memo.max = Qnil;
+ memo.last_bv = Qundef;
+ memo.last = Qundef;
+ rb_block_call(obj, id_each, 0, 0, minmax_by_i, (VALUE)&memo);
+ if (memo.last_bv != Qundef)
+ minmax_by_i_update(memo.last_bv, memo.last_bv, memo.last, memo.last, &memo);
+ return rb_assoc_new(memo.min, memo.max);
}
static VALUE
-member_i(VALUE iter, VALUE args, int argc, VALUE *argv)
+member_i(VALUE iter, VALUE *memo, int argc, VALUE *argv)
{
- NODE *memo = RNODE(args);
-
- if (rb_equal(rb_enum_values_pack(argc, argv), memo->u1.value)) {
- memo->u2.value = Qtrue;
+ if (rb_equal(enum_values_pack(argc, argv), memo[0])) {
+ memo[1] = Qtrue;
rb_iter_break();
}
return Qnil;
@@ -1636,24 +1607,26 @@ member_i(VALUE iter, VALUE args, int argc, VALUE *argv)
static VALUE
enum_member(VALUE obj, VALUE val)
{
- NODE *memo = NEW_MEMO(val, Qfalse, 0);
+ VALUE memo[2];
+ memo[0] = val;
+ memo[1] = Qfalse;
rb_block_call(obj, id_each, 0, 0, member_i, (VALUE)memo);
- return memo->u2.value;
+ return memo[1];
}
static VALUE
each_with_index_i(VALUE i, VALUE memo, int argc, VALUE *argv)
{
- long n = RNODE(memo)->u3.cnt++;
+ long n = (*(VALUE *)memo)++;
- return rb_yield_values(2, rb_enum_values_pack(argc, argv), INT2NUM(n));
+ return rb_yield_values(2, enum_values_pack(argc, argv), INT2NUM(n));
}
/*
* call-seq:
- * enum.each_with_index(*args) { |obj, i| block } -> enum
- * enum.each_with_index(*args) -> an_enumerator
+ * enum.each_with_index(*args) {|obj, i| block } -> enum
+ * enum.each_with_index(*args) -> an_enumerator
*
* Calls <em>block</em> with two arguments, the item and its index,
* for each item in <i>enum</i>. Given arguments are passed through
@@ -1662,7 +1635,7 @@ each_with_index_i(VALUE i, VALUE memo, int argc, VALUE *argv)
* If no block is given, an enumerator is returned instead.
*
* hash = Hash.new
- * %w(cat dog wombat).each_with_index { |item, index|
+ * %w(cat dog wombat).each_with_index {|item, index|
* hash[item] = index
* }
* hash #=> {"cat"=>0, "dog"=>1, "wombat"=>2}
@@ -1672,26 +1645,26 @@ each_with_index_i(VALUE i, VALUE memo, int argc, VALUE *argv)
static VALUE
enum_each_with_index(int argc, VALUE *argv, VALUE obj)
{
- NODE *memo;
+ long memo;
- RETURN_SIZED_ENUMERATOR(obj, argc, argv, enum_size);
+ RETURN_ENUMERATOR(obj, argc, argv);
- memo = NEW_MEMO(0, 0, 0);
- rb_block_call(obj, id_each, argc, argv, each_with_index_i, (VALUE)memo);
+ memo = 0;
+ rb_block_call(obj, id_each, argc, argv, each_with_index_i, (VALUE)&memo);
return obj;
}
/*
* call-seq:
- * enum.reverse_each(*args) { |item| block } -> enum
- * enum.reverse_each(*args) -> an_enumerator
+ * enum.reverse_each(*args) {|item| block } -> enum
+ * enum.reverse_each(*args) -> an_enumerator
*
* Builds a temporary array and traverses that array in reverse order.
*
* If no block is given, an enumerator is returned instead.
*
- * (1..3).reverse_each { |v| p v }
+ * (1..3).reverse_each {|v| p v }
*
* produces:
*
@@ -1706,7 +1679,7 @@ enum_reverse_each(int argc, VALUE *argv, VALUE obj)
VALUE ary;
long i;
- RETURN_SIZED_ENUMERATOR(obj, argc, argv, enum_size);
+ RETURN_ENUMERATOR(obj, argc, argv);
ary = enum_to_a(argc, argv, obj);
@@ -1728,8 +1701,8 @@ each_val_i(VALUE i, VALUE p, int argc, VALUE *argv)
/*
* call-seq:
- * enum.each_entry { |obj| block } -> enum
- * enum.each_entry -> an_enumerator
+ * enum.each_entry {|obj| block} -> enum
+ * enum.each_entry -> an_enumerator
*
* Calls <i>block</i> once for each element in +self+, passing that
* element as a parameter, converting multiple values from yield to an
@@ -1741,11 +1714,11 @@ each_val_i(VALUE i, VALUE p, int argc, VALUE *argv)
* include Enumerable
* def each
* yield 1
- * yield 1, 2
+ * yield 1,2
* yield
* end
* end
- * Foo.new.each_entry{ |o| p o }
+ * Foo.new.each_entry{|o| p o }
*
* produces:
*
@@ -1758,53 +1731,39 @@ each_val_i(VALUE i, VALUE p, int argc, VALUE *argv)
static VALUE
enum_each_entry(int argc, VALUE *argv, VALUE obj)
{
- RETURN_SIZED_ENUMERATOR(obj, argc, argv, enum_size);
+ RETURN_ENUMERATOR(obj, argc, argv);
rb_block_call(obj, id_each, argc, argv, each_val_i, 0);
return obj;
}
static VALUE
-each_slice_i(VALUE i, VALUE m, int argc, VALUE *argv)
+each_slice_i(VALUE i, VALUE *memo, int argc, VALUE *argv)
{
- NODE *memo = RNODE(m);
- VALUE ary = memo->u1.value;
+ VALUE ary = memo[0];
VALUE v = Qnil;
- long size = memo->u3.cnt;
+ long size = (long)memo[1];
ENUM_WANT_SVALUE();
rb_ary_push(ary, i);
if (RARRAY_LEN(ary) == size) {
v = rb_yield(ary);
- memo->u1.value = rb_ary_new2(size);
+ memo[0] = rb_ary_new2(size);
}
return v;
}
-static VALUE
-enum_each_slice_size(VALUE obj, VALUE args)
-{
- VALUE n, size;
- long slice_size = NUM2LONG(RARRAY_PTR(args)[0]);
- if (slice_size <= 0) rb_raise(rb_eArgError, "invalid slice size");
-
- size = enum_size(obj, 0);
- if (size == Qnil) return Qnil;
-
- n = rb_funcall(size, '+', 1, LONG2NUM(slice_size-1));
- return rb_funcall(n, id_div, 1, LONG2FIX(slice_size));
-}
-
/*
* call-seq:
- * enum.each_slice(n) { ... } -> nil
- * enum.each_slice(n) -> an_enumerator
+ * enum.each_slice(n) {...} -> nil
+ * enum.each_slice(n) -> an_enumerator
*
* Iterates the given block for each slice of <n> elements. If no
* block is given, returns an enumerator.
*
- * (1..10).each_slice(3) { |a| p a }
+ * e.g.:
+ * (1..10).each_slice(3) {|a| p a}
* # outputs below
* [1, 2, 3]
* [4, 5, 6]
@@ -1816,27 +1775,27 @@ static VALUE
enum_each_slice(VALUE obj, VALUE n)
{
long size = NUM2LONG(n);
- VALUE ary;
- NODE *memo;
+ VALUE args[2], ary;
if (size <= 0) rb_raise(rb_eArgError, "invalid slice size");
- RETURN_SIZED_ENUMERATOR(obj, 1, &n, enum_each_slice_size);
- ary = rb_ary_new2(size);
- memo = NEW_MEMO(ary, 0, size);
- rb_block_call(obj, id_each, 0, 0, each_slice_i, (VALUE)memo);
- ary = memo->u1.value;
+ RETURN_ENUMERATOR(obj, 1, &n);
+ args[0] = rb_ary_new2(size);
+ args[1] = (VALUE)size;
+
+ rb_block_call(obj, id_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 i, VALUE args, int argc, VALUE *argv)
+each_cons_i(VALUE i, VALUE *memo, int argc, VALUE *argv)
{
- NODE *memo = RNODE(args);
- VALUE ary = memo->u1.value;
+ VALUE ary = memo[0];
VALUE v = Qnil;
- long size = memo->u3.cnt;
+ long size = (long)memo[1];
ENUM_WANT_SVALUE();
if (RARRAY_LEN(ary) == size) {
@@ -1849,30 +1808,16 @@ each_cons_i(VALUE i, VALUE args, int argc, VALUE *argv)
return v;
}
-static VALUE
-enum_each_cons_size(VALUE obj, VALUE args)
-{
- VALUE n, size;
- long cons_size = NUM2LONG(RARRAY_PTR(args)[0]);
- if (cons_size <= 0) rb_raise(rb_eArgError, "invalid size");
-
- size = enum_size(obj, 0);
- if (size == Qnil) return Qnil;
-
- n = rb_funcall(size, '+', 1, LONG2NUM(1 - cons_size));
- return (rb_cmpint(rb_funcall(n, id_cmp, 1, LONG2FIX(0)), n, LONG2FIX(0)) == -1) ? LONG2FIX(0) : n;
-}
-
/*
* call-seq:
- * enum.each_cons(n) { ... } -> nil
+ * enum.each_cons(n) {...} -> nil
* enum.each_cons(n) -> an_enumerator
*
* Iterates the given block for each array of consecutive <n>
* elements. If no block is given, returns an enumerator.
*
* e.g.:
- * (1..10).each_cons(3) { |a| p a }
+ * (1..10).each_cons(3) {|a| p a}
* # outputs below
* [1, 2, 3]
* [2, 3, 4]
@@ -1888,12 +1833,14 @@ static VALUE
enum_each_cons(VALUE obj, VALUE n)
{
long size = NUM2LONG(n);
- NODE *memo;
+ VALUE args[2];
if (size <= 0) rb_raise(rb_eArgError, "invalid size");
- RETURN_SIZED_ENUMERATOR(obj, 1, &n, enum_each_cons_size);
- memo = NEW_MEMO(rb_ary_new2(size), 0, size);
- rb_block_call(obj, id_each, 0, 0, each_cons_i, (VALUE)memo);
+ RETURN_ENUMERATOR(obj, 1, &n);
+ args[0] = rb_ary_new2(size);
+ args[1] = (VALUE)size;
+
+ rb_block_call(obj, id_each, 0, 0, each_cons_i, (VALUE)args);
return Qnil;
}
@@ -1907,22 +1854,23 @@ each_with_object_i(VALUE i, VALUE memo, int argc, VALUE *argv)
/*
* call-seq:
- * enum.each_with_object(obj) { |(*args), memo_obj| ... } -> obj
- * enum.each_with_object(obj) -> an_enumerator
+ * enum.each_with_object(obj) {|(*args), memo_obj| ... } -> obj
+ * enum.each_with_object(obj) -> an_enumerator
*
* Iterates the given block for each element with an arbitrary
* object given, and returns the initially given object.
*
* If no block is given, returns an enumerator.
*
- * evens = (1..10).each_with_object([]) { |i, a| a << i*2 }
+ * e.g.:
+ * evens = (1..10).each_with_object([]) {|i, a| a << i*2 }
* #=> [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
*
*/
static VALUE
enum_each_with_object(VALUE obj, VALUE memo)
{
- RETURN_SIZED_ENUMERATOR(obj, 1, &memo, enum_size);
+ RETURN_ENUMERATOR(obj, 1, &memo);
rb_block_call(obj, id_each, 0, 0, each_with_object_i, memo);
@@ -1939,7 +1887,7 @@ zip_ary(VALUE val, NODE *memo, int argc, VALUE *argv)
int i;
tmp = rb_ary_new2(RARRAY_LEN(args) + 1);
- rb_ary_store(tmp, 0, rb_enum_values_pack(argc, argv));
+ rb_ary_store(tmp, 0, enum_values_pack(argc, argv));
for (i=0; i<RARRAY_LEN(args); i++) {
VALUE e = RARRAY_PTR(args)[i];
@@ -1980,7 +1928,7 @@ zip_i(VALUE val, NODE *memo, int argc, VALUE *argv)
int i;
tmp = rb_ary_new2(RARRAY_LEN(args) + 1);
- rb_ary_store(tmp, 0, rb_enum_values_pack(argc, argv));
+ rb_ary_store(tmp, 0, enum_values_pack(argc, argv));
for (i=0; i<RARRAY_LEN(args); i++) {
if (NIL_P(RARRAY_PTR(args)[i])) {
rb_ary_push(tmp, Qnil);
@@ -1989,7 +1937,7 @@ zip_i(VALUE val, NODE *memo, int argc, VALUE *argv)
VALUE v[2];
v[1] = RARRAY_PTR(args)[i];
- rb_rescue2(call_next, (VALUE)v, call_stop, (VALUE)v, rb_eStopIteration, (VALUE)0);
+ rb_rescue2(call_next, (VALUE)v, call_stop, (VALUE)v, rb_eStopIteration, 0);
if (v[0] == Qundef) {
RARRAY_PTR(args)[i] = Qnil;
v[0] = Qnil;
@@ -2008,8 +1956,8 @@ zip_i(VALUE val, NODE *memo, int argc, VALUE *argv)
/*
* call-seq:
- * enum.zip(arg, ...) -> an_array_of_array
- * enum.zip(arg, ...) { |arr| block } -> nil
+ * enum.zip(arg, ...) -> an_array_of_array
+ * enum.zip(arg, ...) {|arr| block } -> nil
*
* Takes one element from <i>enum</i> and merges corresponding
* elements from each <i>args</i>. This generates a sequence of
@@ -2023,9 +1971,9 @@ zip_i(VALUE val, NODE *memo, int argc, VALUE *argv)
* a = [ 4, 5, 6 ]
* b = [ 7, 8, 9 ]
*
- * [1, 2, 3].zip(a, b) #=> [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
- * [1, 2].zip(a, b) #=> [[1, 4, 7], [2, 5, 8]]
- * a.zip([1, 2], [8]) #=> [[4, 1, 8], [5, 2, nil], [6, nil, nil]]
+ * [1,2,3].zip(a, b) #=> [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
+ * [1,2].zip(a,b) #=> [[1, 4, 7], [2, 5, 8]]
+ * a.zip([1,2],[8]) #=> [[4, 1, 8], [5, 2, nil], [6, nil, nil]]
*
*/
@@ -2051,10 +1999,6 @@ enum_zip(int argc, VALUE *argv, VALUE obj)
if (!allary) {
CONST_ID(conv, "to_enum");
for (i=0; i<argc; i++) {
- if (!rb_respond_to(argv[i], id_each)) {
- rb_raise(rb_eTypeError, "wrong argument type %s (must respond to :each)",
- rb_obj_classname(argv[i]));
- }
argv[i] = rb_funcall(argv[i], conv, 1, ID2SYM(id_each));
}
}
@@ -2069,11 +2013,10 @@ enum_zip(int argc, VALUE *argv, VALUE obj)
}
static VALUE
-take_i(VALUE i, VALUE args, int argc, VALUE *argv)
+take_i(VALUE i, VALUE *arg, int argc, VALUE *argv)
{
- NODE *memo = RNODE(args);
- rb_ary_push(memo->u1.value, rb_enum_values_pack(argc, argv));
- if (--memo->u3.cnt == 0) rb_iter_break();
+ rb_ary_push(arg[0], enum_values_pack(argc, argv));
+ if (--arg[1] == 0) rb_iter_break();
return Qnil;
}
@@ -2091,8 +2034,7 @@ take_i(VALUE i, VALUE args, int argc, VALUE *argv)
static VALUE
enum_take(VALUE obj, VALUE n)
{
- NODE *memo;
- VALUE result;
+ VALUE args[2];
long len = NUM2LONG(n);
if (len < 0) {
@@ -2100,25 +2042,25 @@ enum_take(VALUE obj, VALUE n)
}
if (len == 0) return rb_ary_new2(0);
- result = rb_ary_new2(len);
- memo = NEW_MEMO(result, 0, len);
- rb_block_call(obj, id_each, 0, 0, take_i, (VALUE)memo);
- return result;
+ args[0] = rb_ary_new();
+ args[1] = len;
+ rb_block_call(obj, id_each, 0, 0, take_i, (VALUE)args);
+ return args[0];
}
static VALUE
-take_while_i(VALUE i, VALUE ary, int argc, VALUE *argv)
+take_while_i(VALUE i, VALUE *ary, int argc, VALUE *argv)
{
if (!RTEST(enum_yield(argc, argv))) rb_iter_break();
- rb_ary_push(ary, rb_enum_values_pack(argc, argv));
+ rb_ary_push(*ary, enum_values_pack(argc, argv));
return Qnil;
}
/*
* call-seq:
- * enum.take_while { |arr| block } -> array
- * enum.take_while -> an_enumerator
+ * enum.take_while {|arr| block } -> array
+ * enum.take_while -> an_enumerator
*
* Passes elements to the block until the block returns +nil+ or +false+,
* then stops iterating and returns an array of all prior elements.
@@ -2126,7 +2068,7 @@ take_while_i(VALUE i, VALUE ary, int argc, VALUE *argv)
* If no block is given, an enumerator is returned instead.
*
* a = [1, 2, 3, 4, 5, 0]
- * a.take_while { |i| i < 3 } #=> [1, 2]
+ * a.take_while {|i| i < 3 } #=> [1, 2]
*
*/
@@ -2137,19 +2079,18 @@ enum_take_while(VALUE obj)
RETURN_ENUMERATOR(obj, 0, 0);
ary = rb_ary_new();
- rb_block_call(obj, id_each, 0, 0, take_while_i, ary);
+ rb_block_call(obj, id_each, 0, 0, take_while_i, (VALUE)&ary);
return ary;
}
static VALUE
-drop_i(VALUE i, VALUE args, int argc, VALUE *argv)
+drop_i(VALUE i, VALUE *arg, int argc, VALUE *argv)
{
- NODE *memo = RNODE(args);
- if (memo->u3.cnt == 0) {
- rb_ary_push(memo->u1.value, rb_enum_values_pack(argc, argv));
+ if (arg[1] == 0) {
+ rb_ary_push(arg[0], enum_values_pack(argc, argv));
}
else {
- memo->u3.cnt--;
+ arg[1]--;
}
return Qnil;
}
@@ -2169,39 +2110,37 @@ drop_i(VALUE i, VALUE args, int argc, VALUE *argv)
static VALUE
enum_drop(VALUE obj, VALUE n)
{
- VALUE result;
- NODE *memo;
+ VALUE args[2];
long len = NUM2LONG(n);
if (len < 0) {
rb_raise(rb_eArgError, "attempt to drop negative size");
}
- result = rb_ary_new();
- memo = NEW_MEMO(result, 0, len);
- rb_block_call(obj, id_each, 0, 0, drop_i, (VALUE)memo);
- return result;
+ args[1] = len;
+ args[0] = rb_ary_new();
+ rb_block_call(obj, id_each, 0, 0, drop_i, (VALUE)args);
+ return args[0];
}
static VALUE
-drop_while_i(VALUE i, VALUE args, int argc, VALUE *argv)
+drop_while_i(VALUE i, VALUE *args, int argc, VALUE *argv)
{
- NODE *memo = RNODE(args);
ENUM_WANT_SVALUE();
- if (!memo->u3.state && !RTEST(rb_yield(i))) {
- memo->u3.state = TRUE;
+ if (!args[1] && !RTEST(rb_yield(i))) {
+ args[1] = Qtrue;
}
- if (memo->u3.state) {
- rb_ary_push(memo->u1.value, i);
+ if (args[1]) {
+ rb_ary_push(args[0], i);
}
return Qnil;
}
/*
* call-seq:
- * enum.drop_while { |arr| block } -> array
+ * enum.drop_while {|arr| block } -> array
* enum.drop_while -> an_enumerator
*
* Drops elements up to, but not including, the first element for
@@ -2211,21 +2150,20 @@ drop_while_i(VALUE i, VALUE args, int argc, VALUE *argv)
* If no block is given, an enumerator is returned instead.
*
* a = [1, 2, 3, 4, 5, 0]
- * a.drop_while { |i| i < 3 } #=> [3, 4, 5, 0]
+ * a.drop_while {|i| i < 3 } #=> [3, 4, 5, 0]
*
*/
static VALUE
enum_drop_while(VALUE obj)
{
- VALUE result;
- NODE *memo;
+ VALUE args[2];
RETURN_ENUMERATOR(obj, 0, 0);
- result = rb_ary_new();
- memo = NEW_MEMO(result, 0, FALSE);
- rb_block_call(obj, id_each, 0, 0, drop_while_i, (VALUE)memo);
- return result;
+ args[0] = rb_ary_new();
+ args[1] = Qfalse;
+ rb_block_call(obj, id_each, 0, 0, drop_while_i, (VALUE)args);
+ return args[0];
}
static VALUE
@@ -2238,27 +2176,9 @@ cycle_i(VALUE i, VALUE ary, int argc, VALUE *argv)
return Qnil;
}
-static VALUE
-enum_cycle_size(VALUE self, VALUE args)
-{
- long mul;
- VALUE n = Qnil;
- VALUE size = enum_size(self, args);
-
- if (size == Qnil) return Qnil;
-
- if (args && (RARRAY_LEN(args) > 0)) {
- n = RARRAY_PTR(args)[0];
- }
- if (n == Qnil) return DBL2NUM(INFINITY);
- mul = NUM2LONG(n);
- if (mul <= 0) return INT2FIX(0);
- return rb_funcall(size, '*', 1, LONG2FIX(mul));
-}
-
/*
* call-seq:
- * enum.cycle(n=nil) { |obj| block } -> nil
+ * enum.cycle(n=nil) {|obj| block } -> nil
* enum.cycle(n=nil) -> an_enumerator
*
* Calls <i>block</i> for each element of <i>enum</i> repeatedly _n_
@@ -2272,8 +2192,8 @@ enum_cycle_size(VALUE self, VALUE args)
* If no block is given, an enumerator is returned instead.
*
* a = ["a", "b", "c"]
- * a.cycle { |x| puts x } # print, a, b, c, a, b, c,.. forever.
- * a.cycle(2) { |x| puts x } # print, a, b, c, a, b, c.
+ * a.cycle {|x| puts x } # print, a, b, c, a, b, c,.. forever.
+ * a.cycle(2) {|x| puts x } # print, a, b, c, a, b, c.
*
*/
@@ -2286,7 +2206,7 @@ enum_cycle(int argc, VALUE *argv, VALUE obj)
rb_scan_args(argc, argv, "01", &nv);
- RETURN_SIZED_ENUMERATOR(obj, argc, argv, enum_cycle_size);
+ RETURN_ENUMERATOR(obj, argc, argv);
if (NIL_P(nv)) {
n = -1;
}
@@ -2318,7 +2238,7 @@ struct chunk_arg {
static VALUE
chunk_ii(VALUE i, VALUE _argp, int argc, VALUE *argv)
{
- struct chunk_arg *argp = MEMO_FOR(struct chunk_arg, _argp);
+ struct chunk_arg *argp = (struct chunk_arg *)_argp;
VALUE v;
VALUE alone = ID2SYM(rb_intern("_alone"));
VALUE separator = ID2SYM(rb_intern("_separator"));
@@ -2326,20 +2246,20 @@ chunk_ii(VALUE i, VALUE _argp, int argc, VALUE *argv)
ENUM_WANT_SVALUE();
if (NIL_P(argp->state))
- v = rb_funcall(argp->categorize, id_call, 1, i);
+ v = rb_funcall(argp->categorize, rb_intern("call"), 1, i);
else
- v = rb_funcall(argp->categorize, id_call, 2, i, argp->state);
+ v = rb_funcall(argp->categorize, rb_intern("call"), 2, i, argp->state);
if (v == alone) {
if (!NIL_P(argp->prev_value)) {
- rb_funcall(argp->yielder, id_lshift, 1, rb_assoc_new(argp->prev_value, argp->prev_elts));
+ rb_funcall(argp->yielder, rb_intern("<<"), 1, rb_assoc_new(argp->prev_value, argp->prev_elts));
argp->prev_value = argp->prev_elts = Qnil;
}
- rb_funcall(argp->yielder, id_lshift, 1, rb_assoc_new(v, rb_ary_new3(1, i)));
+ rb_funcall(argp->yielder, rb_intern("<<"), 1, rb_assoc_new(v, rb_ary_new3(1, i)));
}
else if (NIL_P(v) || v == separator) {
if (!NIL_P(argp->prev_value)) {
- rb_funcall(argp->yielder, id_lshift, 1, rb_assoc_new(argp->prev_value, argp->prev_elts));
+ rb_funcall(argp->yielder, rb_intern("<<"), 1, rb_assoc_new(argp->prev_value, argp->prev_elts));
argp->prev_value = argp->prev_elts = Qnil;
}
}
@@ -2356,7 +2276,7 @@ chunk_ii(VALUE i, VALUE _argp, int argc, VALUE *argv)
rb_ary_push(argp->prev_elts, i);
}
else {
- rb_funcall(argp->yielder, id_lshift, 1, rb_assoc_new(argp->prev_value, argp->prev_elts));
+ rb_funcall(argp->yielder, rb_intern("<<"), 1, rb_assoc_new(argp->prev_value, argp->prev_elts));
argp->prev_value = v;
argp->prev_elts = rb_ary_new3(1, i);
}
@@ -2369,42 +2289,44 @@ static VALUE
chunk_i(VALUE yielder, VALUE enumerator, int argc, VALUE *argv)
{
VALUE enumerable;
- VALUE arg;
- struct chunk_arg *memo = NEW_MEMO_FOR(struct chunk_arg, arg);
+ struct chunk_arg arg;
enumerable = rb_ivar_get(enumerator, rb_intern("chunk_enumerable"));
- memo->categorize = rb_ivar_get(enumerator, rb_intern("chunk_categorize"));
- memo->state = rb_ivar_get(enumerator, rb_intern("chunk_initial_state"));
- memo->prev_value = Qnil;
- memo->prev_elts = Qnil;
- memo->yielder = yielder;
-
- if (!NIL_P(memo->state))
- memo->state = rb_obj_dup(memo->state);
-
- rb_block_call(enumerable, id_each, 0, 0, chunk_ii, arg);
- memo = MEMO_FOR(struct chunk_arg, arg);
- if (!NIL_P(memo->prev_elts))
- rb_funcall(memo->yielder, id_lshift, 1, rb_assoc_new(memo->prev_value, memo->prev_elts));
+ arg.categorize = rb_ivar_get(enumerator, rb_intern("chunk_categorize"));
+ arg.state = rb_ivar_get(enumerator, rb_intern("chunk_initial_state"));
+ arg.prev_value = Qnil;
+ arg.prev_elts = Qnil;
+ arg.yielder = yielder;
+
+ if (!NIL_P(arg.state))
+ arg.state = rb_obj_dup(arg.state);
+
+ rb_block_call(enumerable, id_each, 0, 0, chunk_ii, (VALUE)&arg);
+ if (!NIL_P(arg.prev_elts))
+ rb_funcall(arg.yielder, rb_intern("<<"), 1, rb_assoc_new(arg.prev_value, arg.prev_elts));
return Qnil;
}
/*
* call-seq:
- * enum.chunk { |elt| ... } -> an_enumerator
- * enum.chunk(initial_state) { |elt, state| ... } -> an_enumerator
+ * enum.chunk {|elt| ... } -> an_enumerator
+ * enum.chunk(initial_state) {|elt, state| ... } -> an_enumerator
*
- * Enumerates over the items, chunking them together based on the return
- * value of the block.
+ * Creates an enumerator for each chunked elements.
+ * The consecutive elements which have same block value are chunked.
+ *
+ * The result enumerator yields the block value and an array of chunked elements.
+ * So "each" method can be called as follows.
*
- * Consecutive elements which return the same block value are chunked together.
+ * enum.chunk {|elt| key }.each {|key, ary| ... }
+ * enum.chunk(initial_state) {|elt, state| key }.each {|key, ary| ... }
*
* For example, consecutive even numbers and odd numbers can be
- * chunked as follows.
+ * splitted as follows.
*
- * [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5].chunk { |n|
+ * [3,1,4,1,5,9,2,6,5,3,5].chunk {|n|
* n.even?
- * }.each { |even, ary|
+ * }.each {|even, ary|
* p [even, ary]
* }
* #=> [false, [3, 1]]
@@ -2416,8 +2338,8 @@ chunk_i(VALUE yielder, VALUE enumerator, int argc, VALUE *argv)
* This method is especially useful for sorted series of elements.
* The following example counts words for each initial letter.
*
- * open("/usr/share/dict/words", "r:iso-8859-1") { |f|
- * f.chunk { |line| line.ord }.each { |ch, lines| p [ch.chr, lines.length] }
+ * open("/usr/share/dict/words", "r:iso-8859-1") {|f|
+ * f.chunk {|line| line.ord }.each {|ch, lines| p [ch.chr, lines.length] }
* }
* #=> ["\n", 1]
* # ["A", 1327]
@@ -2426,24 +2348,19 @@ chunk_i(VALUE yielder, VALUE enumerator, int argc, VALUE *argv)
* # ["D", 791]
* # ...
*
- * The following key values have special meaning:
- * - +nil+ and +:_separator+ specifies that the elements should be dropped.
- * - +:_alone+ specifies that the element should be chunked by itself.
- *
- * Any other symbols that begin with an underscore will raise an error:
- *
- * items.chunk { |item| :_underscore }
- * #=> RuntimeError: symbol begins with an underscore is reserved
+ * The following key values has special meaning:
+ * - nil and :_separator specifies that the elements are dropped.
+ * - :_alone specifies that the element should be chunked as a singleton.
+ * Other symbols which begins an underscore are reserved.
*
- * +nil+ and +:_separator+ can be used to ignore some elements.
- *
- * For example, the sequence of hyphens in svn log can be eliminated as follows:
+ * nil and :_separator can be used to ignore some elements.
+ * For example, the sequence of hyphens in svn log can be eliminated as follows.
*
* sep = "-"*72 + "\n"
- * IO.popen("svn log README") { |f|
- * f.chunk { |line|
+ * IO.popen("svn log README") {|f|
+ * f.chunk {|line|
* line != sep || nil
- * }.each { |_, lines|
+ * }.each {|_, lines|
* pp lines
* }
* }
@@ -2457,30 +2374,34 @@ chunk_i(VALUE yielder, VALUE enumerator, int argc, VALUE *argv)
* # "\n"]
* # ...
*
- * Paragraphs separated by empty lines can be parsed as follows:
+ * paragraphs separated by empty lines can be parsed as follows.
*
- * File.foreach("README").chunk { |line|
+ * File.foreach("README").chunk {|line|
* /\A\s*\z/ !~ line || nil
- * }.each { |_, lines|
+ * }.each {|_, lines|
* pp lines
* }
*
- * +:_alone+ can be used to force items into their own chunk.
- * For example, you can put lines that contain a URL by themselves,
- * and chunk the rest of the lines together, like this:
+ * :_alone can be used to pass through bunch of elements.
+ * For example, sort consecutive lines formed as Foo#bar and
+ * pass other lines, chunk can be used as follows.
*
- * pattern = /http/
- * open(filename) { |f|
- * f.chunk { |line| line =~ pattern ? :_alone : true }.each { |key, lines|
- * pp lines
+ * pat = /\A[A-Z][A-Za-z0-9_]+\#/
+ * open(filename) {|f|
+ * f.chunk {|line| pat =~ line ? $& : :_alone }.each {|key, lines|
+ * if key != :_alone
+ * print lines.sort.join('')
+ * else
+ * print lines.join('')
+ * end
* }
* }
*
* If the block needs to maintain state over multiple elements,
- * an +initial_state+ argument can be used.
- * If a non-nil value is given,
- * a reference to it is passed as the 2nd argument of the block for the
- * +chunk+ method, so state-changes to it persist across block calls.
+ * _initial_state_ argument can be used.
+ * If non-nil value is given,
+ * it is duplicated for each "each" method invocation of the enumerator.
+ * The duplicated object is passed to 2nd argument of the block for "chunk" method.
*
*/
static VALUE
@@ -2489,7 +2410,7 @@ enum_chunk(int argc, VALUE *argv, VALUE enumerable)
VALUE initial_state;
VALUE enumerator;
- if (!rb_block_given_p())
+ if(!rb_block_given_p())
rb_raise(rb_eArgError, "no block given");
rb_scan_args(argc, argv, "01", &initial_state);
@@ -2497,7 +2418,7 @@ enum_chunk(int argc, VALUE *argv, VALUE enumerable)
rb_ivar_set(enumerator, rb_intern("chunk_enumerable"), enumerable);
rb_ivar_set(enumerator, rb_intern("chunk_categorize"), rb_block_proc());
rb_ivar_set(enumerator, rb_intern("chunk_initial_state"), initial_state);
- rb_block_call(enumerator, idInitialize, 0, 0, chunk_i, enumerator);
+ rb_block_call(enumerator, rb_intern("initialize"), 0, 0, chunk_i, enumerator);
return enumerator;
}
@@ -2513,7 +2434,7 @@ struct slicebefore_arg {
static VALUE
slicebefore_ii(VALUE i, VALUE _argp, int argc, VALUE *argv)
{
- struct slicebefore_arg *argp = MEMO_FOR(struct slicebefore_arg, _argp);
+ struct slicebefore_arg *argp = (struct slicebefore_arg *)_argp;
VALUE header_p;
ENUM_WANT_SVALUE();
@@ -2521,12 +2442,12 @@ slicebefore_ii(VALUE i, VALUE _argp, int argc, VALUE *argv)
if (!NIL_P(argp->sep_pat))
header_p = rb_funcall(argp->sep_pat, id_eqq, 1, i);
else if (NIL_P(argp->state))
- header_p = rb_funcall(argp->sep_pred, id_call, 1, i);
+ header_p = rb_funcall(argp->sep_pred, rb_intern("call"), 1, i);
else
- header_p = rb_funcall(argp->sep_pred, id_call, 2, i, argp->state);
+ header_p = rb_funcall(argp->sep_pred, rb_intern("call"), 2, i, argp->state);
if (RTEST(header_p)) {
if (!NIL_P(argp->prev_elts))
- rb_funcall(argp->yielder, id_lshift, 1, argp->prev_elts);
+ rb_funcall(argp->yielder, rb_intern("<<"), 1, argp->prev_elts);
argp->prev_elts = rb_ary_new3(1, i);
}
else {
@@ -2543,71 +2464,69 @@ static VALUE
slicebefore_i(VALUE yielder, VALUE enumerator, int argc, VALUE *argv)
{
VALUE enumerable;
- VALUE arg;
- struct slicebefore_arg *memo = NEW_MEMO_FOR(struct slicebefore_arg, arg);
+ struct slicebefore_arg arg;
enumerable = rb_ivar_get(enumerator, rb_intern("slicebefore_enumerable"));
- memo->sep_pred = rb_attr_get(enumerator, rb_intern("slicebefore_sep_pred"));
- memo->sep_pat = NIL_P(memo->sep_pred) ? rb_ivar_get(enumerator, rb_intern("slicebefore_sep_pat")) : Qnil;
- memo->state = rb_attr_get(enumerator, rb_intern("slicebefore_initial_state"));
- memo->prev_elts = Qnil;
- memo->yielder = yielder;
-
- if (!NIL_P(memo->state))
- memo->state = rb_obj_dup(memo->state);
-
- rb_block_call(enumerable, id_each, 0, 0, slicebefore_ii, arg);
- memo = MEMO_FOR(struct slicebefore_arg, arg);
- if (!NIL_P(memo->prev_elts))
- rb_funcall(memo->yielder, id_lshift, 1, memo->prev_elts);
+ arg.sep_pred = rb_attr_get(enumerator, rb_intern("slicebefore_sep_pred"));
+ arg.sep_pat = NIL_P(arg.sep_pred) ? rb_ivar_get(enumerator, rb_intern("slicebefore_sep_pat")) : Qnil;
+ arg.state = rb_ivar_get(enumerator, rb_intern("slicebefore_initial_state"));
+ arg.prev_elts = Qnil;
+ arg.yielder = yielder;
+
+ if (!NIL_P(arg.state))
+ arg.state = rb_obj_dup(arg.state);
+
+ rb_block_call(enumerable, id_each, 0, 0, slicebefore_ii, (VALUE)&arg);
+ if (!NIL_P(arg.prev_elts))
+ rb_funcall(arg.yielder, rb_intern("<<"), 1, arg.prev_elts);
return Qnil;
}
/*
* call-seq:
- * enum.slice_before(pattern) -> an_enumerator
- * enum.slice_before { |elt| bool } -> an_enumerator
- * enum.slice_before(initial_state) { |elt, state| bool } -> an_enumerator
+ * enum.slice_before(pattern) -> an_enumerator
+ * enum.slice_before {|elt| bool } -> an_enumerator
+ * enum.slice_before(initial_state) {|elt, state| bool } -> an_enumerator
*
* Creates an enumerator for each chunked elements.
* The beginnings of chunks are defined by _pattern_ and the block.
-
- * If <code>_pattern_ === _elt_</code> returns <code>true</code> or the block
- * returns <code>true</code> for the element, the element is beginning of a
- * chunk.
-
- * The <code>===</code> and _block_ is called from the first element to the last
- * element of _enum_. The result for the first element is ignored.
-
- * The result enumerator yields the chunked elements as an array.
- * So +each+ method can be called as follows:
+ * If _pattern_ === _elt_ returns true or
+ * the block returns true for the element,
+ * the element is beginning of a chunk.
*
- * enum.slice_before(pattern).each { |ary| ... }
- * enum.slice_before { |elt| bool }.each { |ary| ... }
- * enum.slice_before(initial_state) { |elt, state| bool }.each { |ary| ... }
+ * The === and block is called from the first element to the last element
+ * of _enum_.
+ * The result for the first element is ignored.
*
- * Other methods of the Enumerator class and Enumerable module,
+ * The result enumerator yields the chunked elements as an array for +each+
+ * method.
+ * +each+ method can be called as follows.
+ *
+ * enum.slice_before(pattern).each {|ary| ... }
+ * enum.slice_before {|elt| bool }.each {|ary| ... }
+ * enum.slice_before(initial_state) {|elt, state| bool }.each {|ary| ... }
+ *
+ * Other methods of Enumerator class and Enumerable module,
* such as map, etc., are also usable.
*
* For example, iteration over ChangeLog entries can be implemented as
- * follows:
+ * follows.
*
* # iterate over ChangeLog entries.
- * open("ChangeLog") { |f|
- * f.slice_before(/\A\S/).each { |e| pp e }
+ * open("ChangeLog") {|f|
+ * f.slice_before(/\A\S/).each {|e| pp e}
* }
*
* # same as above. block is used instead of pattern argument.
- * open("ChangeLog") { |f|
- * f.slice_before { |line| /\A\S/ === line }.each { |e| pp e }
+ * open("ChangeLog") {|f|
+ * f.slice_before {|line| /\A\S/ === line }.each {|e| pp e}
* }
*
+ * "svn proplist -R" produces multiline output for each file.
+ * They can be chunked as follows:
*
- * "svn proplist -R" produces multiline output for each file.
- * They can be chunked as follows:
- *
- * IO.popen([{"LC_ALL"=>"C"}, "svn", "proplist", "-R"]) { |f|
- * f.lines.slice_before(/\AProp/).each { |lines| p lines }
+ * IO.popen([{"LC_ALL"=>"C"}, "svn", "proplist", "-R"]) {|f|
+ * f.lines.slice_before(/\AProp/).each {|lines| p lines }
* }
* #=> ["Properties on '.':\n", " svn:ignore\n", " svk:merge\n"]
* # ["Properties on 'goruby.c':\n", " svn:eol-style\n"]
@@ -2620,29 +2539,30 @@ slicebefore_i(VALUE yielder, VALUE enumerator, int argc, VALUE *argv)
* For example, three or more consecutive increasing numbers can be squashed
* as follows:
*
- * a = [0, 2, 3, 4, 6, 7, 9]
+ * a = [0,2,3,4,6,7,9]
* prev = a[0]
- * p a.slice_before { |e|
+ * p a.slice_before {|e|
* prev, prev2 = e, prev
* prev2 + 1 != e
- * }.map { |es|
+ * }.map {|es|
* es.length <= 2 ? es.join(",") : "#{es.first}-#{es.last}"
* }.join(",")
* #=> "0,2-4,6,7,9"
*
* However local variables are not appropriate to maintain state
* if the result enumerator is used twice or more.
- * In such a case, the last state of the 1st +each+ is used in the 2nd +each+.
- * The _initial_state_ argument can be used to avoid this problem.
+ * In such case, the last state of the 1st +each+ is used in 2nd +each+.
+ * _initial_state_ argument can be used to avoid this problem.
* If non-nil value is given as _initial_state_,
- * it is duplicated for each +each+ method invocation of the enumerator.
+ * it is duplicated for each "each" method invocation of the enumerator.
* The duplicated object is passed to 2nd argument of the block for
* +slice_before+ method.
*
- * # Word wrapping. This assumes all characters have same width.
+ * # word wrapping.
+ * # this assumes all characters have same width.
* def wordwrap(words, maxwidth)
* # if cols is a local variable, 2nd "each" may start with non-zero cols.
- * words.slice_before(cols: 0) { |w, h|
+ * words.slice_before(cols: 0) {|w, h|
* h[:cols] += 1 if h[:cols] != 0
* h[:cols] += w.length
* if maxwidth < h[:cols]
@@ -2656,7 +2576,7 @@ slicebefore_i(VALUE yielder, VALUE enumerator, int argc, VALUE *argv)
* text = (1..20).to_a.join(" ")
* enum = wordwrap(text.split(/\s+/), 10)
* puts "-"*10
- * enum.each { |ws| puts ws.join(" ") }
+ * enum.each {|ws| puts ws.join(" ") }
* puts "-"*10
* #=> ----------
* # 1 2 3 4 5
@@ -2667,20 +2587,20 @@ slicebefore_i(VALUE yielder, VALUE enumerator, int argc, VALUE *argv)
* # 20
* # ----------
*
- * mbox contains series of mails which start with Unix From line.
- * So each mail can be extracted by slice before Unix From line.
+ * mbox contains series of mails which start with Unix From line.
+ * So each mail can be extracted by slice before Unix From line.
*
* # parse mbox
- * open("mbox") { |f|
- * f.slice_before { |line|
+ * open("mbox") {|f|
+ * f.slice_before {|line|
* line.start_with? "From "
- * }.each { |mail|
+ * }.each {|mail|
* unix_from = mail.shift
* i = mail.index("\n")
* header = mail[0...i]
* body = mail[(i+1)..-1]
* body.pop if body.last == "\n"
- * fields = header.slice_before { |line| !" \t".include?(line[0]) }.to_a
+ * fields = header.slice_before {|line| !" \t".include?(line[0]) }.to_a
* p unix_from
* pp fields
* pp body
@@ -2688,12 +2608,12 @@ slicebefore_i(VALUE yielder, VALUE enumerator, int argc, VALUE *argv)
* }
*
* # split mails in mbox (slice before Unix From line after an empty line)
- * open("mbox") { |f|
- * f.slice_before(emp: true) { |line, h|
+ * open("mbox") {|f|
+ * f.slice_before(emp: true) {|line,h|
* prevemp = h[:emp]
* h[:emp] = line == "\n"
* prevemp && line.start_with?("From ")
- * }.each { |mail|
+ * }.each {|mail|
* mail.pop if mail.last == "\n"
* pp mail
* }
@@ -2719,7 +2639,7 @@ enum_slice_before(int argc, VALUE *argv, VALUE enumerable)
rb_ivar_set(enumerator, rb_intern("slicebefore_sep_pat"), sep_pat);
}
rb_ivar_set(enumerator, rb_intern("slicebefore_enumerable"), enumerable);
- rb_block_call(enumerator, idInitialize, 0, 0, slicebefore_i, enumerator);
+ rb_block_call(enumerator, rb_intern("initialize"), 0, 0, slicebefore_i, enumerator);
return enumerator;
}
@@ -2792,7 +2712,4 @@ Init_Enumerable(void)
rb_define_method(rb_mEnumerable, "slice_before", enum_slice_before, -1);
id_next = rb_intern("next");
- id_call = rb_intern("call");
- id_size = rb_intern("size");
- id_div = rb_intern("div");
}
diff --git a/enumerator.c b/enumerator.c
index 23590fbf43..09ef298396 100644
--- a/enumerator.c
+++ b/enumerator.c
@@ -13,8 +13,6 @@
************************************************/
#include "ruby/ruby.h"
-#include "node.h"
-#include "internal.h"
/*
* Document-class: Enumerator
@@ -32,22 +30,17 @@
*
* enumerator = %w(one two three).each
* puts enumerator.class # => Enumerator
- *
- * enumerator.each_with_object("foo") do |item, obj|
+ * enumerator.each_with_object("foo") do |item,obj|
* puts "#{obj}: #{item}"
* end
- *
* # foo: one
* # foo: two
* # foo: three
- *
* enum_with_obj = enumerator.each_with_object("foo")
* puts enum_with_obj.class # => Enumerator
- *
- * enum_with_obj.each do |item, obj|
- * puts "#{obj}: #{item}"
+ * enum_with_obj.each do |item,obj|
+ * puts "#{obj: #{item}"
* end
- *
* # foo: one
* # foo: two
* # foo: three
@@ -56,7 +49,7 @@
* can map a list's elements to strings containing the index
* and the element as a string via:
*
- * puts %w[foo bar baz].map.with_index { |w, i| "#{i}:#{w}" }
+ * puts %w[foo bar baz].map.with_index {|w,i| "#{i}:#{w}" }
* # => ["0:foo", "1:bar", "2:baz"]
*
* An Enumerator can also be used as an external iterator.
@@ -103,10 +96,8 @@
*
*/
VALUE rb_cEnumerator;
-VALUE rb_cLazy;
-static ID id_rewind, id_each, id_new, id_initialize, id_yield, id_call, id_size, id_to_enum;
-static ID id_eqq, id_next, id_result, id_lazy, id_receiver, id_arguments, id_memo, id_method, id_force;
-static VALUE sym_each, sym_cycle;
+static ID id_rewind, id_each;
+static VALUE sym_each;
VALUE rb_eStopIteration;
@@ -119,8 +110,6 @@ struct enumerator {
VALUE lookahead;
VALUE feedvalue;
VALUE stop_exc;
- VALUE size;
- VALUE (*size_fn)(ANYARGS);
};
static VALUE rb_cGenerator, rb_cYielder;
@@ -150,7 +139,6 @@ enumerator_mark(void *p)
rb_gc_mark(ptr->lookahead);
rb_gc_mark(ptr->feedvalue);
rb_gc_mark(ptr->stop_exc);
- rb_gc_mark(ptr->size);
}
#define enumerator_free RUBY_TYPED_DEFAULT_FREE
@@ -184,18 +172,18 @@ enumerator_ptr(VALUE obj)
/*
* call-seq:
- * obj.to_enum(method = :each, *args) -> enum
- * obj.enum_for(method = :each, *args) -> enum
- * obj.to_enum(method = :each, *args) {|*args| block} -> enum
- * obj.enum_for(method = :each, *args){|*args| block} -> enum
+ * obj.to_enum(method = :each, *args)
+ * obj.enum_for(method = :each, *args)
*
- * Creates a new Enumerator which will enumerate by calling +method+ on
- * +obj+, passing +args+ if any.
+ * Creates a new Enumerator which will enumerate by on calling +method+ on
+ * +obj+.
*
- * If a block is given, it will be used to calculate the size of
- * the enumerator without the need to iterate it (see Enumerator#size).
+ * +method+:: the method to call on +obj+ to generate the enumeration
+ * +args+:: arguments that will be passed in +method+ <i>in addition</i>
+ * to the item itself. Note that the number of args
+ * must not exceed the number expected by +method+
*
- * === Examples
+ * === Example
*
* str = "xyz"
*
@@ -209,48 +197,17 @@ enumerator_ptr(VALUE obj)
* a = [1, 2, 3]
* some_method(a.to_enum)
*
- * It is typical to call to_enum when defining methods for
- * a generic Enumerable, in case no block is passed.
- *
- * Here is such an example, with parameter passing and a sizing block:
- *
- * module Enumerable
- * # a generic method to repeat the values of any enumerable
- * def repeat(n)
- * raise ArgumentError, "#{n} is negative!" if n < 0
- * unless block_given?
- * return to_enum(__method__, n) do # __method__ is :repeat here
- * sz = size # Call size and multiply by n...
- * sz * n if sz # but return nil if size itself is nil
- * end
- * end
- * each do |*val|
- * n.times { yield *val }
- * end
- * end
- * end
- *
- * %i[hello world].repeat(2) { |w| puts w }
- * # => Prints 'hello', 'hello', 'world', 'world'
- * enum = (1..14).repeat(3)
- * # => returns an Enumerator when called without a block
- * enum.first(4) # => [1, 1, 1, 2]
- * enum.size # => 42
*/
static VALUE
obj_to_enum(int argc, VALUE *argv, VALUE obj)
{
- VALUE enumerator, meth = sym_each;
+ VALUE meth = sym_each;
if (argc > 0) {
--argc;
meth = *argv++;
}
- enumerator = rb_enumeratorize_with_size(obj, meth, argc, argv, 0);
- if (rb_block_given_p()) {
- enumerator_ptr(enumerator)->size = rb_block_proc();
- }
- return enumerator;
+ return rb_enumeratorize(obj, meth, argc, argv);
}
static VALUE
@@ -266,7 +223,7 @@ enumerator_allocate(VALUE klass)
}
static VALUE
-enumerator_init(VALUE enum_obj, VALUE obj, VALUE meth, int argc, VALUE *argv, VALUE (*size_fn)(ANYARGS), VALUE size)
+enumerator_init(VALUE enum_obj, VALUE obj, VALUE meth, int argc, VALUE *argv)
{
struct enumerator *ptr;
@@ -284,15 +241,13 @@ enumerator_init(VALUE enum_obj, VALUE obj, VALUE meth, int argc, VALUE *argv, VA
ptr->lookahead = Qundef;
ptr->feedvalue = Qundef;
ptr->stop_exc = Qfalse;
- ptr->size = size;
- ptr->size_fn = size_fn;
return enum_obj;
}
/*
* call-seq:
- * Enumerator.new(size = nil) { |yielder| ... }
+ * Enumerator.new { |yielder| ... }
* Enumerator.new(obj, method = :each, *args)
*
* Creates a new Enumerator object, which can be used as an
@@ -312,10 +267,6 @@ enumerator_init(VALUE enum_obj, VALUE obj, VALUE meth, int argc, VALUE *argv, VA
*
* p fib.take(10) # => [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
*
- * The optional parameter can be used to specify how to calculate the size
- * in a lazy fashion (see Enumerator#size). It can either be a value or
- * a callable object.
- *
* In the second, deprecated, form, a generated Enumerator iterates over the
* given object using the given method with the given arguments passed.
*
@@ -332,24 +283,14 @@ static VALUE
enumerator_initialize(int argc, VALUE *argv, VALUE obj)
{
VALUE recv, meth = sym_each;
- VALUE size = Qnil;
- if (rb_block_given_p()) {
- rb_check_arity(argc, 0, 1);
+ if (argc == 0) {
+ if (!rb_block_given_p())
+ rb_raise(rb_eArgError, "wrong number of argument (0 for 1+)");
+
recv = generator_init(generator_allocate(rb_cGenerator), rb_block_proc());
- if (argc) {
- if (NIL_P(argv[0]) || rb_obj_is_proc(argv[0]) ||
- (RB_TYPE_P(argv[0], T_FLOAT) && RFLOAT_VALUE(argv[0]) == INFINITY)) {
- size = argv[0];
- } else {
- size = rb_to_int(argv[0]);
- }
- argc = 0;
- }
}
else {
- rb_check_arity(argc, 1, UNLIMITED_ARGUMENTS);
- rb_warn("Enumerator.new without a block is deprecated; use Object#to_enum");
recv = *argv++;
if (--argc) {
meth = *argv++;
@@ -357,7 +298,7 @@ enumerator_initialize(int argc, VALUE *argv, VALUE obj)
}
}
- return enumerator_init(obj, recv, meth, argc, argv, 0, size);
+ return enumerator_init(obj, recv, meth, argc, argv);
}
/* :nodoc: */
@@ -366,7 +307,6 @@ enumerator_init_copy(VALUE obj, VALUE orig)
{
struct enumerator *ptr0, *ptr1;
- if (!OBJ_INIT_COPY(obj, orig)) return obj;
ptr0 = enumerator_ptr(orig);
if (ptr0->fib) {
/* Fibers cannot be copied */
@@ -385,34 +325,14 @@ enumerator_init_copy(VALUE obj, VALUE orig)
ptr1->fib = 0;
ptr1->lookahead = Qundef;
ptr1->feedvalue = Qundef;
- ptr1->size = ptr0->size;
- ptr1->size_fn = ptr0->size_fn;
return obj;
}
-/*
- * For backwards compatibility; use rb_enumeratorize_with_size
- */
VALUE
rb_enumeratorize(VALUE obj, VALUE meth, int argc, VALUE *argv)
{
- return rb_enumeratorize_with_size(obj, meth, argc, argv, 0);
-}
-
-static VALUE
-lazy_to_enum_i(VALUE self, VALUE meth, int argc, VALUE *argv, VALUE (*size_fn)(ANYARGS));
-
-VALUE
-rb_enumeratorize_with_size(VALUE obj, VALUE meth, int argc, VALUE *argv, VALUE (*size_fn)(ANYARGS))
-{
- /* Similar effect as calling obj.to_enum, i.e. dispatching to either
- Kernel#to_enum vs Lazy#to_enum */
- if (RTEST(rb_obj_is_kind_of(obj, rb_cLazy)))
- return lazy_to_enum_i(obj, meth, argc, argv, size_fn);
- else
- return enumerator_init(enumerator_allocate(rb_cEnumerator),
- obj, meth, argc, argv, size_fn, Qnil);
+ return enumerator_init(enumerator_allocate(rb_cEnumerator), obj, meth, argc, argv);
}
static VALUE
@@ -439,20 +359,8 @@ enumerator_block_call(VALUE obj, rb_block_call_func *func, VALUE arg)
*
*/
static VALUE
-enumerator_each(int argc, VALUE *argv, VALUE obj)
+enumerator_each(VALUE obj)
{
- if (argc > 0) {
- struct enumerator *e = enumerator_ptr(obj = rb_obj_dup(obj));
- VALUE args = e->args;
- if (args) {
- args = rb_ary_dup(args);
- rb_ary_cat(args, argv, argc);
- }
- else {
- args = rb_ary_new4(argc, argv);
- }
- e->args = args;
- }
if (!rb_block_given_p()) return obj;
return enumerator_block_call(obj, 0, obj);
}
@@ -460,9 +368,11 @@ enumerator_each(int argc, VALUE *argv, VALUE obj)
static VALUE
enumerator_with_index_i(VALUE val, VALUE m, int argc, VALUE *argv)
{
- NODE *memo = (NODE *)m;
- VALUE idx = memo->u1.value;
- memo->u1.value = rb_int_succ(idx);
+ VALUE idx;
+ VALUE *memo = (VALUE *)m;
+
+ idx = INT2FIX(*memo);
+ ++*memo;
if (argc <= 1)
return rb_yield_values(2, val, idx);
@@ -470,9 +380,6 @@ enumerator_with_index_i(VALUE val, VALUE m, int argc, VALUE *argv)
return rb_yield_values(2, rb_ary_new4(argc, argv), idx);
}
-static VALUE
-enumerator_size(VALUE obj);
-
/*
* call-seq:
* e.with_index(offset = 0) {|(*args), idx| ... }
@@ -491,12 +398,9 @@ enumerator_with_index(int argc, VALUE *argv, VALUE obj)
VALUE memo;
rb_scan_args(argc, argv, "01", &memo);
- RETURN_SIZED_ENUMERATOR(obj, argc, argv, enumerator_size);
- if (NIL_P(memo))
- memo = INT2FIX(0);
- else
- memo = rb_to_int(memo);
- return enumerator_block_call(obj, enumerator_with_index_i, (VALUE)NEW_MEMO(memo, 0, 0));
+ RETURN_ENUMERATOR(obj, argc, argv);
+ memo = NIL_P(memo) ? 0 : (VALUE)NUM2LONG(memo);
+ return enumerator_block_call(obj, enumerator_with_index_i, (VALUE)&memo);
}
/*
@@ -554,7 +458,7 @@ enumerator_with_object_i(VALUE val, VALUE memo, int argc, VALUE *argv)
static VALUE
enumerator_with_object(VALUE obj, VALUE memo)
{
- RETURN_SIZED_ENUMERATOR(obj, 1, &memo, enumerator_size);
+ RETURN_ENUMERATOR(obj, 1, &memo);
enumerator_block_call(obj, enumerator_with_object_i, memo);
return memo;
@@ -583,7 +487,7 @@ next_i(VALUE curr, VALUE obj)
result = rb_block_call(obj, id_each, 0, 0, next_ii, obj);
e->stop_exc = rb_exc_new2(rb_eStopIteration, "iteration reached an end");
- rb_ivar_set(e->stop_exc, id_result, result);
+ rb_ivar_set(e->stop_exc, rb_intern("result"), result);
return rb_fiber_yield(1, &nil);
}
@@ -686,7 +590,7 @@ enumerator_next_values(VALUE obj)
static VALUE
ary2sv(VALUE args, int dup)
{
- if (!RB_TYPE_P(args, T_ARRAY))
+ if (TYPE(args) != T_ARRAY)
return args;
switch (RARRAY_LEN(args)) {
@@ -795,7 +699,7 @@ enumerator_peek_values_m(VALUE obj)
* p e.peek #=> 2
* p e.next #=> 2
* p e.next #=> 3
- * p e.peek #raises StopIteration
+ * p e.next #raises StopIteration
*
*/
@@ -876,7 +780,7 @@ inspect_enumerator(VALUE obj, VALUE dummy, int recur)
{
struct enumerator *e;
const char *cname;
- VALUE eobj, eargs, str, method;
+ VALUE eobj, str;
int tainted, untrusted;
TypedData_Get_Struct(obj, struct enumerator, &enumerator_data_type, e);
@@ -893,10 +797,7 @@ inspect_enumerator(VALUE obj, VALUE dummy, int recur)
return str;
}
- eobj = rb_attr_get(obj, id_receiver);
- if (NIL_P(eobj)) {
- eobj = e->obj;
- }
+ eobj = e->obj;
tainted = OBJ_TAINTED(eobj);
untrusted = OBJ_UNTRUSTED(eobj);
@@ -904,37 +805,23 @@ inspect_enumerator(VALUE obj, VALUE dummy, int recur)
/* (1..100).each_cons(2) => "#<Enumerator: 1..100:each_cons(2)>" */
str = rb_sprintf("#<%s: ", cname);
rb_str_concat(str, rb_inspect(eobj));
- method = rb_attr_get(obj, id_method);
- if (NIL_P(method)) {
- rb_str_buf_cat2(str, ":");
- rb_str_buf_cat2(str, rb_id2name(e->meth));
- }
- else if (method != Qfalse) {
- Check_Type(method, T_SYMBOL);
- rb_str_buf_cat2(str, ":");
- rb_str_buf_cat2(str, rb_id2name(SYM2ID(method)));
- }
+ rb_str_buf_cat2(str, ":");
+ rb_str_buf_cat2(str, rb_id2name(e->meth));
- eargs = rb_attr_get(obj, id_arguments);
- if (NIL_P(eargs)) {
- eargs = e->args;
- }
- if (eargs != Qfalse) {
- long argc = RARRAY_LEN(eargs);
- VALUE *argv = RARRAY_PTR(eargs);
+ if (e->args) {
+ long argc = RARRAY_LEN(e->args);
+ VALUE *argv = RARRAY_PTR(e->args);
- if (argc > 0) {
- rb_str_buf_cat2(str, "(");
+ rb_str_buf_cat2(str, "(");
- while (argc--) {
- VALUE arg = *argv++;
+ while (argc--) {
+ VALUE arg = *argv++;
- rb_str_concat(str, rb_inspect(arg));
- rb_str_buf_cat2(str, argc > 0 ? ", " : ")");
+ rb_str_concat(str, rb_inspect(arg));
+ rb_str_buf_cat2(str, argc > 0 ? ", " : ")");
- if (OBJ_TAINTED(arg)) tainted = TRUE;
- if (OBJ_UNTRUSTED(arg)) untrusted = TRUE;
- }
+ if (OBJ_TAINTED(arg)) tainted = TRUE;
+ if (OBJ_UNTRUSTED(arg)) untrusted = TRUE;
}
}
@@ -959,34 +846,6 @@ enumerator_inspect(VALUE obj)
}
/*
- * call-seq:
- * e.size -> int, Float::INFINITY or nil
- *
- * Returns the size of the enumerator, or +nil+ if it can't be calculated lazily.
- *
- * (1..100).to_a.permutation(4).size # => 94109400
- * loop.size # => Float::INFINITY
- * (1..100).drop_while.size # => nil
- */
-
-static VALUE
-enumerator_size(VALUE obj)
-{
- struct enumerator *e = enumerator_ptr(obj);
-
- if (e->size_fn) {
- return (*e->size_fn)(e->obj, e->args, obj);
- }
- if (rb_obj_is_proc(e->size)) {
- if (e->args)
- return rb_proc_call(e->size, e->args);
- else
- return rb_proc_call_with_block(e->size, 0, 0, Qnil);
- }
- return e->size;
-}
-
-/*
* Yielder
*/
static void
@@ -1169,8 +1028,7 @@ generator_initialize(int argc, VALUE *argv, VALUE obj)
rb_need_block();
proc = rb_block_proc();
- }
- else {
+ } else {
rb_scan_args(argc, argv, "1", &proc);
if (!rb_obj_is_proc(proc))
@@ -1192,8 +1050,6 @@ generator_init_copy(VALUE obj, VALUE orig)
{
struct generator *ptr0, *ptr1;
- if (!OBJ_INIT_COPY(obj, orig)) return obj;
-
ptr0 = generator_ptr(orig);
TypedData_Get_Struct(obj, struct generator, &generator_data_type, ptr1);
@@ -1209,654 +1065,14 @@ generator_init_copy(VALUE obj, VALUE orig)
/* :nodoc: */
static VALUE
-generator_each(int argc, VALUE *argv, VALUE obj)
+generator_each(VALUE obj)
{
struct generator *ptr = generator_ptr(obj);
- VALUE args = rb_ary_new2(argc + 1);
-
- rb_ary_push(args, yielder_new());
- if (argc > 0) {
- rb_ary_cat(args, argv, argc);
- }
-
- return rb_proc_call(ptr->proc, args);
-}
-
-/* Lazy Enumerator methods */
-static VALUE
-enum_size(VALUE self)
-{
- VALUE r = rb_check_funcall(self, id_size, 0, 0);
- return (r == Qundef) ? Qnil : r;
-}
-
-static VALUE
-lazy_size(VALUE self)
-{
- return enum_size(rb_ivar_get(self, id_receiver));
-}
-
-static VALUE
-lazy_receiver_size(VALUE generator, VALUE args, VALUE lazy)
-{
- return lazy_size(lazy);
-}
-
-static VALUE
-lazy_init_iterator(VALUE val, VALUE m, int argc, VALUE *argv)
-{
- VALUE result;
- if (argc == 1) {
- VALUE args[2];
- args[0] = m;
- args[1] = val;
- result = rb_yield_values2(2, args);
- }
- else {
- VALUE args;
- int len = rb_long2int((long)argc + 1);
-
- args = rb_ary_tmp_new(len);
- rb_ary_push(args, m);
- if (argc > 0) {
- rb_ary_cat(args, argv, argc);
- }
- result = rb_yield_values2(len, RARRAY_PTR(args));
- RB_GC_GUARD(args);
- }
- if (result == Qundef) rb_iter_break();
- return Qnil;
-}
-
-static VALUE
-lazy_init_block_i(VALUE val, VALUE m, int argc, VALUE *argv)
-{
- rb_block_call(m, id_each, argc-1, argv+1, lazy_init_iterator, val);
- return Qnil;
-}
-
-/*
- * call-seq:
- * Lazy.new(obj, size=nil) { |yielder, *values| ... }
- *
- * Creates a new Lazy enumerator. When the enumerator is actually enumerated
- * (e.g. by calling #force), +obj+ will be enumerated and each value passed
- * to the given block. The block can yield values back using +yielder+.
- * For example, to create a method +filter_map+ in both lazy and
- * non-lazy fashions:
- *
- * module Enumerable
- * def filter_map(&block)
- * map(&block).compact
- * end
- * end
- *
- * class Enumerator::Lazy
- * def filter_map
- * Lazy.new(self) do |yielder, *values|
- * result = yield *values
- * yielder << result if result
- * end
- * end
- * end
- *
- * (1..Float::INFINITY).lazy.filter_map{|i| i*i if i.even?}.first(5)
- * # => [4, 16, 36, 64, 100]
- */
-static VALUE
-lazy_initialize(int argc, VALUE *argv, VALUE self)
-{
- VALUE obj, size = Qnil;
- VALUE generator;
-
- rb_check_arity(argc, 1, 2);
- if (!rb_block_given_p()) {
- rb_raise(rb_eArgError, "tried to call lazy new without a block");
- }
- obj = argv[0];
- if (argc > 1) {
- size = argv[1];
- }
- generator = generator_allocate(rb_cGenerator);
- rb_block_call(generator, id_initialize, 0, 0, lazy_init_block_i, obj);
- enumerator_init(self, generator, sym_each, 0, 0, 0, size);
- rb_ivar_set(self, id_receiver, obj);
-
- return self;
-}
-
-static VALUE
-lazy_set_method(VALUE lazy, VALUE args, VALUE (*size_fn)(ANYARGS))
-{
- ID id = rb_frame_this_func();
- struct enumerator *e = enumerator_ptr(lazy);
- rb_ivar_set(lazy, id_method, ID2SYM(id));
- if (NIL_P(args)) {
- /* Qfalse indicates that the arguments are empty */
- rb_ivar_set(lazy, id_arguments, Qfalse);
- }
- else {
- rb_ivar_set(lazy, id_arguments, args);
- }
- e->size_fn = size_fn;
- return lazy;
-}
-
-/*
- * call-seq:
- * e.lazy -> lazy_enumerator
- *
- * Returns a lazy enumerator, whose methods map/collect,
- * flat_map/collect_concat, select/find_all, reject, grep, zip, take,
- * take_while, drop, and drop_while enumerate values only on an
- * as-needed basis. However, if a block is given to zip, values
- * are enumerated immediately.
- *
- * === Example
- *
- * The following program finds pythagorean triples:
- *
- * def pythagorean_triples
- * (1..Float::INFINITY).lazy.flat_map {|z|
- * (1..z).flat_map {|x|
- * (x..z).select {|y|
- * x**2 + y**2 == z**2
- * }.map {|y|
- * [x, y, z]
- * }
- * }
- * }
- * end
- * # show first ten pythagorean triples
- * p pythagorean_triples.take(10).force # take is lazy, so force is needed
- * p pythagorean_triples.first(10) # first is eager
- * # show pythagorean triples less than 100
- * p pythagorean_triples.take_while { |*, z| z < 100 }.force
- */
-static VALUE
-enumerable_lazy(VALUE obj)
-{
- VALUE result = lazy_to_enum_i(obj, sym_each, 0, 0, enum_size);
- /* Qfalse indicates that the Enumerator::Lazy has no method name */
- rb_ivar_set(result, id_method, Qfalse);
- return result;
-}
-
-static VALUE
-lazy_to_enum_i(VALUE obj, VALUE meth, int argc, VALUE *argv, VALUE (*size_fn)(ANYARGS))
-{
- return enumerator_init(enumerator_allocate(rb_cLazy),
- obj, meth, argc, argv, size_fn, Qnil);
-}
-
-/*
- * call-seq:
- * lzy.to_enum(method = :each, *args) -> lazy_enum
- * lzy.enum_for(method = :each, *args) -> lazy_enum
- * lzy.to_enum(method = :each, *args) {|*args| block} -> lazy_enum
- * lzy.enum_for(method = :each, *args){|*args| block} -> lazy_enum
- *
- * Similar to Kernel#to_enum, except it returns a lazy enumerator.
- * This makes it easy to define Enumerable methods that will
- * naturally remain lazy if called from a lazy enumerator.
- *
- * For example, continuing from the example in Kernel#to_enum:
- *
- * # See Kernel#to_enum for the definition of repeat
- * r = 1..Float::INFINITY
- * r.repeat(2).first(5) # => [1, 1, 2, 2, 3]
- * r.repeat(2).class # => Enumerator
- * r.repeat(2).map{|n| n ** 2}.first(5) # => endless loop!
- * # works naturally on lazy enumerator:
- * r.lazy.repeat(2).class # => Enumerator::Lazy
- * r.lazy.repeat(2).map{|n| n ** 2}.first(5) # => [1, 1, 4, 4, 9]
- */
-
-static VALUE
-lazy_to_enum(int argc, VALUE *argv, VALUE self)
-{
- VALUE lazy, meth = sym_each;
-
- if (argc > 0) {
- --argc;
- meth = *argv++;
- }
- lazy = lazy_to_enum_i(self, meth, argc, argv, 0);
- if (rb_block_given_p()) {
- enumerator_ptr(lazy)->size = rb_block_proc();
- }
- return lazy;
-}
-
-static VALUE
-lazy_map_func(VALUE val, VALUE m, int argc, VALUE *argv)
-{
- VALUE result = rb_yield_values2(argc - 1, &argv[1]);
-
- rb_funcall(argv[0], id_yield, 1, result);
- return Qnil;
-}
-
-static VALUE
-lazy_map(VALUE obj)
-{
- if (!rb_block_given_p()) {
- rb_raise(rb_eArgError, "tried to call lazy map without a block");
- }
-
- return lazy_set_method(rb_block_call(rb_cLazy, id_new, 1, &obj,
- lazy_map_func, 0),
- Qnil, lazy_receiver_size);
-}
-
-static VALUE
-lazy_flat_map_i(VALUE i, VALUE yielder, int argc, VALUE *argv)
-{
- return rb_funcall2(yielder, id_yield, argc, argv);
-}
-
-static VALUE
-lazy_flat_map_each(VALUE obj, VALUE yielder)
-{
- rb_block_call(obj, id_each, 0, 0, lazy_flat_map_i, yielder);
- return Qnil;
-}
-
-static VALUE
-lazy_flat_map_to_ary(VALUE obj, VALUE yielder)
-{
- VALUE ary = rb_check_array_type(obj);
- if (NIL_P(ary)) {
- rb_funcall(yielder, id_yield, 1, obj);
- }
- else {
- long i;
- for (i = 0; i < RARRAY_LEN(ary); i++) {
- rb_funcall(yielder, id_yield, 1, RARRAY_PTR(ary)[i]);
- }
- }
- return Qnil;
-}
-
-static VALUE
-lazy_flat_map_func(VALUE val, VALUE m, int argc, VALUE *argv)
-{
- VALUE result = rb_yield_values2(argc - 1, &argv[1]);
- if (RB_TYPE_P(result, T_ARRAY)) {
- long i;
- for (i = 0; i < RARRAY_LEN(result); i++) {
- rb_funcall(argv[0], id_yield, 1, RARRAY_PTR(result)[i]);
- }
- }
- else {
- if (rb_respond_to(result, id_force) && rb_respond_to(result, id_each)) {
- lazy_flat_map_each(result, argv[0]);
- }
- else {
- lazy_flat_map_to_ary(result, argv[0]);
- }
- }
- return Qnil;
-}
-
-/*
- * call-seq:
- * lazy.flat_map { |obj| block } -> a_lazy_enumerator
- *
- * Returns a new lazy enumerator with the concatenated results of running
- * <i>block</i> once for every element in <i>lazy</i>.
- *
- * ["foo", "bar"].lazy.flat_map {|i| i.each_char.lazy}.force
- * #=> ["f", "o", "o", "b", "a", "r"]
- *
- * A value <i>x</i> returned by <i>block</i> is decomposed if either of
- * the following conditions is true:
- *
- * a) <i>x</i> responds to both each and force, which means that
- * <i>x</i> is a lazy enumerator.
- * b) <i>x</i> is an array or responds to to_ary.
- *
- * Otherwise, <i>x</i> is contained as-is in the return value.
- *
- * [{a:1}, {b:2}].lazy.flat_map {|i| i}.force
- * #=> [{:a=>1}, {:b=>2}]
- */
-static VALUE
-lazy_flat_map(VALUE obj)
-{
- if (!rb_block_given_p()) {
- rb_raise(rb_eArgError, "tried to call lazy flat_map without a block");
- }
-
- return lazy_set_method(rb_block_call(rb_cLazy, id_new, 1, &obj,
- lazy_flat_map_func, 0),
- Qnil, 0);
-}
-
-static VALUE
-lazy_select_func(VALUE val, VALUE m, int argc, VALUE *argv)
-{
- VALUE element = rb_enum_values_pack(argc - 1, argv + 1);
-
- if (RTEST(rb_yield(element))) {
- return rb_funcall(argv[0], id_yield, 1, element);
- }
- return Qnil;
-}
+ VALUE yielder;
-static VALUE
-lazy_select(VALUE obj)
-{
- if (!rb_block_given_p()) {
- rb_raise(rb_eArgError, "tried to call lazy select without a block");
- }
+ yielder = yielder_new();
- return lazy_set_method(rb_block_call(rb_cLazy, id_new, 1, &obj,
- lazy_select_func, 0),
- Qnil, 0);
-}
-
-static VALUE
-lazy_reject_func(VALUE val, VALUE m, int argc, VALUE *argv)
-{
- VALUE element = rb_enum_values_pack(argc - 1, argv + 1);
-
- if (!RTEST(rb_yield(element))) {
- return rb_funcall(argv[0], id_yield, 1, element);
- }
- return Qnil;
-}
-
-static VALUE
-lazy_reject(VALUE obj)
-{
- if (!rb_block_given_p()) {
- rb_raise(rb_eArgError, "tried to call lazy reject without a block");
- }
-
- return lazy_set_method(rb_block_call(rb_cLazy, id_new, 1, &obj,
- lazy_reject_func, 0),
- Qnil, 0);
-}
-
-static VALUE
-lazy_grep_func(VALUE val, VALUE m, int argc, VALUE *argv)
-{
- VALUE i = rb_enum_values_pack(argc - 1, argv + 1);
- VALUE result = rb_funcall(m, id_eqq, 1, i);
-
- if (RTEST(result)) {
- rb_funcall(argv[0], id_yield, 1, i);
- }
- return Qnil;
-}
-
-static VALUE
-lazy_grep_iter(VALUE val, VALUE m, int argc, VALUE *argv)
-{
- VALUE i = rb_enum_values_pack(argc - 1, argv + 1);
- VALUE result = rb_funcall(m, id_eqq, 1, i);
-
- if (RTEST(result)) {
- rb_funcall(argv[0], id_yield, 1, rb_yield(i));
- }
- return Qnil;
-}
-
-static VALUE
-lazy_grep(VALUE obj, VALUE pattern)
-{
- return lazy_set_method(rb_block_call(rb_cLazy, id_new, 1, &obj,
- rb_block_given_p() ?
- lazy_grep_iter : lazy_grep_func,
- pattern),
- rb_ary_new3(1, pattern), 0);
-}
-
-static VALUE
-call_next(VALUE obj)
-{
- return rb_funcall(obj, id_next, 0);
-}
-
-static VALUE
-next_stopped(VALUE obj)
-{
- return Qnil;
-}
-
-static VALUE
-lazy_zip_arrays_func(VALUE val, VALUE arrays, int argc, VALUE *argv)
-{
- VALUE yielder, ary, memo;
- long i, count;
-
- yielder = argv[0];
- memo = rb_attr_get(yielder, id_memo);
- count = NIL_P(memo) ? 0 : NUM2LONG(memo);
-
- ary = rb_ary_new2(RARRAY_LEN(arrays) + 1);
- rb_ary_push(ary, argv[1]);
- for (i = 0; i < RARRAY_LEN(arrays); i++) {
- rb_ary_push(ary, rb_ary_entry(RARRAY_PTR(arrays)[i], count));
- }
- rb_funcall(yielder, id_yield, 1, ary);
- rb_ivar_set(yielder, id_memo, LONG2NUM(++count));
- return Qnil;
-}
-
-static VALUE
-lazy_zip_func(VALUE val, VALUE zip_args, int argc, VALUE *argv)
-{
- VALUE yielder, ary, arg, v;
- long i;
-
- yielder = argv[0];
- arg = rb_attr_get(yielder, id_memo);
- if (NIL_P(arg)) {
- arg = rb_ary_new2(RARRAY_LEN(zip_args));
- for (i = 0; i < RARRAY_LEN(zip_args); i++) {
- rb_ary_push(arg, rb_funcall(RARRAY_PTR(zip_args)[i], id_to_enum, 0));
- }
- rb_ivar_set(yielder, id_memo, arg);
- }
-
- ary = rb_ary_new2(RARRAY_LEN(arg) + 1);
- v = Qnil;
- if (--argc > 0) {
- ++argv;
- v = argc > 1 ? rb_ary_new4(argc, argv) : *argv;
- }
- rb_ary_push(ary, v);
- for (i = 0; i < RARRAY_LEN(arg); i++) {
- v = rb_rescue2(call_next, RARRAY_PTR(arg)[i], next_stopped, 0,
- rb_eStopIteration, (VALUE)0);
- rb_ary_push(ary, v);
- }
- rb_funcall(yielder, id_yield, 1, ary);
- return Qnil;
-}
-
-static VALUE
-lazy_zip(int argc, VALUE *argv, VALUE obj)
-{
- VALUE ary, v;
- long i;
- rb_block_call_func *func = lazy_zip_arrays_func;
-
- if (rb_block_given_p()) {
- return rb_call_super(argc, argv);
- }
-
- ary = rb_ary_new2(argc);
- for (i = 0; i < argc; i++) {
- v = rb_check_array_type(argv[i]);
- if (NIL_P(v)) {
- for (; i < argc; i++) {
- if (!rb_respond_to(argv[i], id_each)) {
- rb_raise(rb_eTypeError, "wrong argument type %s (must respond to :each)",
- rb_obj_classname(argv[i]));
- }
- }
- ary = rb_ary_new4(argc, argv);
- func = lazy_zip_func;
- break;
- }
- rb_ary_push(ary, v);
- }
-
- return lazy_set_method(rb_block_call(rb_cLazy, id_new, 1, &obj,
- func, ary),
- ary, lazy_receiver_size);
-}
-
-static VALUE
-lazy_take_func(VALUE val, VALUE args, int argc, VALUE *argv)
-{
- long remain;
- VALUE memo = rb_attr_get(argv[0], id_memo);
- if (NIL_P(memo)) {
- memo = args;
- }
-
- rb_funcall2(argv[0], id_yield, argc - 1, argv + 1);
- if ((remain = NUM2LONG(memo)-1) == 0) {
- return Qundef;
- }
- else {
- rb_ivar_set(argv[0], id_memo, LONG2NUM(remain));
- return Qnil;
- }
-}
-
-static VALUE
-lazy_take_size(VALUE generator, VALUE args, VALUE lazy)
-{
- VALUE receiver = lazy_size(lazy);
- long len = NUM2LONG(RARRAY_PTR(rb_ivar_get(lazy, id_arguments))[0]);
- if (NIL_P(receiver) || (FIXNUM_P(receiver) && FIX2LONG(receiver) < len))
- return receiver;
- return LONG2NUM(len);
-}
-
-static VALUE
-lazy_take(VALUE obj, VALUE n)
-{
- long len = NUM2LONG(n);
- VALUE lazy;
-
- if (len < 0) {
- rb_raise(rb_eArgError, "attempt to take negative size");
- }
- if (len == 0) {
- VALUE len = INT2NUM(0);
- lazy = lazy_to_enum_i(obj, sym_cycle, 1, &len, 0);
- }
- else {
- lazy = rb_block_call(rb_cLazy, id_new, 1, &obj,
- lazy_take_func, n);
- }
- return lazy_set_method(lazy, rb_ary_new3(1, n), lazy_take_size);
-}
-
-static VALUE
-lazy_take_while_func(VALUE val, VALUE args, int argc, VALUE *argv)
-{
- VALUE result = rb_yield_values2(argc - 1, &argv[1]);
- if (!RTEST(result)) return Qundef;
- rb_funcall2(argv[0], id_yield, argc - 1, argv + 1);
- return Qnil;
-}
-
-static VALUE
-lazy_take_while(VALUE obj)
-{
- if (!rb_block_given_p()) {
- rb_raise(rb_eArgError, "tried to call lazy take_while without a block");
- }
- return lazy_set_method(rb_block_call(rb_cLazy, id_new, 1, &obj,
- lazy_take_while_func, 0),
- Qnil, 0);
-}
-
-static VALUE
-lazy_drop_size(VALUE generator, VALUE args, VALUE lazy)
-{
- long len = NUM2LONG(RARRAY_PTR(rb_ivar_get(lazy, id_arguments))[0]);
- VALUE receiver = lazy_size(lazy);
- if (NIL_P(receiver))
- return receiver;
- if (FIXNUM_P(receiver)) {
- len = FIX2LONG(receiver) - len;
- return LONG2FIX(len < 0 ? 0 : len);
- }
- return rb_funcall(receiver, '-', 1, LONG2NUM(len));
-}
-
-static VALUE
-lazy_drop_func(VALUE val, VALUE args, int argc, VALUE *argv)
-{
- long remain;
- VALUE memo = rb_attr_get(argv[0], id_memo);
- if (NIL_P(memo)) {
- memo = args;
- }
- if ((remain = NUM2LONG(memo)) == 0) {
- rb_funcall2(argv[0], id_yield, argc - 1, argv + 1);
- }
- else {
- rb_ivar_set(argv[0], id_memo, LONG2NUM(--remain));
- }
- return Qnil;
-}
-
-static VALUE
-lazy_drop(VALUE obj, VALUE n)
-{
- long len = NUM2LONG(n);
-
- if (len < 0) {
- rb_raise(rb_eArgError, "attempt to drop negative size");
- }
- return lazy_set_method(rb_block_call(rb_cLazy, id_new, 1, &obj,
- lazy_drop_func, n),
- rb_ary_new3(1, n), lazy_drop_size);
-}
-
-static VALUE
-lazy_drop_while_func(VALUE val, VALUE args, int argc, VALUE *argv)
-{
- VALUE memo = rb_attr_get(argv[0], id_memo);
- if (NIL_P(memo) && !RTEST(rb_yield_values2(argc - 1, &argv[1]))) {
- rb_ivar_set(argv[0], id_memo, memo = Qtrue);
- }
- if (memo == Qtrue) {
- rb_funcall2(argv[0], id_yield, argc - 1, argv + 1);
- }
- return Qnil;
-}
-
-static VALUE
-lazy_drop_while(VALUE obj)
-{
- if (!rb_block_given_p()) {
- rb_raise(rb_eArgError, "tried to call lazy drop_while without a block");
- }
- return lazy_set_method(rb_block_call(rb_cLazy, id_new, 1, &obj,
- lazy_drop_while_func, 0),
- Qnil, 0);
-}
-
-static VALUE
-lazy_super(int argc, VALUE *argv, VALUE lazy)
-{
- return enumerable_lazy(rb_call_super(argc, argv));
-}
-
-static VALUE
-lazy_lazy(VALUE obj)
-{
- return obj;
+ return rb_proc_call(ptr->proc, rb_ary_new3(1, yielder));
}
/*
@@ -1905,15 +1121,14 @@ lazy_lazy(VALUE obj)
* end
*
*/
-
static VALUE
stop_result(VALUE self)
{
- return rb_attr_get(self, id_result);
+ return rb_attr_get(self, rb_intern("result"));
}
void
-InitVM_Enumerator(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);
@@ -1924,7 +1139,7 @@ InitVM_Enumerator(void)
rb_define_alloc_func(rb_cEnumerator, enumerator_allocate);
rb_define_method(rb_cEnumerator, "initialize", enumerator_initialize, -1);
rb_define_method(rb_cEnumerator, "initialize_copy", enumerator_init_copy, 1);
- rb_define_method(rb_cEnumerator, "each", enumerator_each, -1);
+ rb_define_method(rb_cEnumerator, "each", enumerator_each, 0);
rb_define_method(rb_cEnumerator, "each_with_index", enumerator_each_with_index, 0);
rb_define_method(rb_cEnumerator, "each_with_object", enumerator_with_object, 1);
rb_define_method(rb_cEnumerator, "with_index", enumerator_with_index, -1);
@@ -1936,32 +1151,6 @@ InitVM_Enumerator(void)
rb_define_method(rb_cEnumerator, "feed", enumerator_feed, 1);
rb_define_method(rb_cEnumerator, "rewind", enumerator_rewind, 0);
rb_define_method(rb_cEnumerator, "inspect", enumerator_inspect, 0);
- rb_define_method(rb_cEnumerator, "size", enumerator_size, 0);
-
- /* Lazy */
- rb_cLazy = rb_define_class_under(rb_cEnumerator, "Lazy", rb_cEnumerator);
- rb_define_method(rb_mEnumerable, "lazy", enumerable_lazy, 0);
- rb_define_method(rb_cLazy, "initialize", lazy_initialize, -1);
- rb_define_method(rb_cLazy, "to_enum", lazy_to_enum, -1);
- rb_define_method(rb_cLazy, "enum_for", lazy_to_enum, -1);
- rb_define_method(rb_cLazy, "map", lazy_map, 0);
- rb_define_method(rb_cLazy, "collect", lazy_map, 0);
- rb_define_method(rb_cLazy, "flat_map", lazy_flat_map, 0);
- rb_define_method(rb_cLazy, "collect_concat", lazy_flat_map, 0);
- rb_define_method(rb_cLazy, "select", lazy_select, 0);
- rb_define_method(rb_cLazy, "find_all", lazy_select, 0);
- rb_define_method(rb_cLazy, "reject", lazy_reject, 0);
- rb_define_method(rb_cLazy, "grep", lazy_grep, 1);
- rb_define_method(rb_cLazy, "zip", lazy_zip, -1);
- rb_define_method(rb_cLazy, "take", lazy_take, 1);
- rb_define_method(rb_cLazy, "take_while", lazy_take_while, 0);
- rb_define_method(rb_cLazy, "drop", lazy_drop, 1);
- rb_define_method(rb_cLazy, "drop_while", lazy_drop_while, 0);
- rb_define_method(rb_cLazy, "lazy", lazy_lazy, 0);
- rb_define_method(rb_cLazy, "chunk", lazy_super, -1);
- rb_define_method(rb_cLazy, "slice_before", lazy_super, -1);
-
- rb_define_alias(rb_cLazy, "force", "to_a");
rb_eStopIteration = rb_define_class("StopIteration", rb_eIndexError);
rb_define_method(rb_eStopIteration, "result", stop_result, 0);
@@ -1972,7 +1161,7 @@ InitVM_Enumerator(void)
rb_define_alloc_func(rb_cGenerator, generator_allocate);
rb_define_method(rb_cGenerator, "initialize", generator_initialize, -1);
rb_define_method(rb_cGenerator, "initialize_copy", generator_init_copy, 1);
- rb_define_method(rb_cGenerator, "each", generator_each, -1);
+ rb_define_method(rb_cGenerator, "each", generator_each, 0);
/* Yielder */
rb_cYielder = rb_define_class_under(rb_cEnumerator, "Yielder", rb_cObject);
@@ -1981,31 +1170,9 @@ InitVM_Enumerator(void)
rb_define_method(rb_cYielder, "yield", yielder_yield, -2);
rb_define_method(rb_cYielder, "<<", yielder_yield_push, -2);
- rb_provide("enumerator.so"); /* for backward compatibility */
-}
-
-void
-Init_Enumerator(void)
-{
id_rewind = rb_intern("rewind");
id_each = rb_intern("each");
- id_call = rb_intern("call");
- id_size = rb_intern("size");
- id_yield = rb_intern("yield");
- id_new = rb_intern("new");
- id_initialize = rb_intern("initialize");
- id_next = rb_intern("next");
- id_result = rb_intern("result");
- id_lazy = rb_intern("lazy");
- id_eqq = rb_intern("===");
- id_receiver = rb_intern("receiver");
- id_arguments = rb_intern("arguments");
- id_memo = rb_intern("memo");
- id_method = rb_intern("method");
- id_force = rb_intern("force");
- id_to_enum = rb_intern("to_enum");
sym_each = ID2SYM(id_each);
- sym_cycle = ID2SYM(rb_intern("cycle"));
- InitVM(Enumerator);
+ rb_provide("enumerator.so"); /* for backward compatibility */
}
diff --git a/error.c b/error.c
index 3988e5645e..2d71ededad 100644
--- a/error.c
+++ b/error.c
@@ -25,8 +25,6 @@
#include <unistd.h>
#endif
-#define numberof(array) (int)(sizeof(array) / sizeof((array)[0]))
-
#ifndef EXIT_SUCCESS
#define EXIT_SUCCESS 0
#endif
@@ -41,17 +39,12 @@
extern const char ruby_description[];
-static const char REPORTBUG_MSG[] =
+#define REPORTBUG_MSG \
"[NOTE]\n" \
"You may have encountered a bug in the Ruby interpreter" \
" or extension libraries.\n" \
"Bug reports are welcome.\n" \
- ""
-#if defined __APPLE__
- "Don't forget to include the above Crash Report log file.\n"
-#endif
"For details: http://www.ruby-lang.org/bugreport.html\n\n" \
- ;
static const char *
rb_strerrno(int err)
@@ -78,110 +71,96 @@ err_position_0(char *buf, long len, const char *file, int line)
}
}
-static VALUE
-compile_snprintf(rb_encoding *enc, const char *pre, const char *file, int line, const char *fmt, va_list args)
+static int
+err_position(char *buf, long len)
+{
+ return err_position_0(buf, len, rb_sourcefile(), rb_sourceline());
+}
+
+static void
+err_snprintf(char *buf, long len, const char *fmt, va_list args)
{
- VALUE str = rb_enc_str_new(0, 0, enc);
+ long n;
- if (file) {
- rb_str_cat2(str, file);
- if (line) rb_str_catf(str, ":%d", line);
- rb_str_cat2(str, ": ");
+ n = err_position(buf, len);
+ if (len > n) {
+ vsnprintf((char*)buf+n, len-n, fmt, args);
}
- if (pre) rb_str_cat2(str, pre);
- rb_str_vcatf(str, fmt, args);
- return str;
}
static void
-compile_err_append(VALUE mesg)
+compile_snprintf(char *buf, long len, const char *file, int line, const char *fmt, va_list args)
{
- rb_thread_t *th = GET_THREAD();
- VALUE err = th->errinfo;
- rb_block_t *prev_base_block = th->base_block;
- th->base_block = 0;
- /* base_block should be zero while normal Ruby execution */
- /* after this line, any Ruby code *can* run */
+ long n;
- if (th->mild_compile_error) {
- if (RTEST(err)) {
- VALUE str = rb_obj_as_string(err);
-
- rb_str_cat2(str, "\n");
- rb_str_append(str, mesg);
- mesg = str;
- }
- err = rb_exc_new3(rb_eSyntaxError, mesg);
- th->errinfo = err;
+ n = err_position_0(buf, len, file, line);
+ if (len > n) {
+ vsnprintf((char*)buf+n, len-n, fmt, args);
}
- else {
- if (!RTEST(err)) {
- err = rb_exc_new2(rb_eSyntaxError, "compile error");
- th->errinfo = err;
- }
- rb_str_cat2(mesg, "\n");
- rb_write_error_str(mesg);
- }
-
- /* returned to the parser world */
- th->base_block = prev_base_block;
}
+static void err_append(const char*, rb_encoding *);
+
void
rb_compile_error_with_enc(const char *file, int line, void *enc, const char *fmt, ...)
{
va_list args;
- VALUE str;
+ char buf[BUFSIZ];
va_start(args, fmt);
- str = compile_snprintf(enc, NULL, file, line, fmt, args);
+ compile_snprintf(buf, BUFSIZ, file, line, fmt, args);
va_end(args);
- compile_err_append(str);
+ err_append(buf, (rb_encoding *)enc);
}
void
rb_compile_error(const char *file, int line, const char *fmt, ...)
{
va_list args;
- VALUE str;
+ char buf[BUFSIZ];
va_start(args, fmt);
- str = compile_snprintf(NULL, NULL, file, line, fmt, args);
+ compile_snprintf(buf, BUFSIZ, file, line, fmt, args);
va_end(args);
- compile_err_append(str);
+ err_append(buf, NULL);
}
void
rb_compile_error_append(const char *fmt, ...)
{
va_list args;
- VALUE str;
+ char buf[BUFSIZ];
va_start(args, fmt);
- str = rb_vsprintf(fmt, args);
+ vsnprintf(buf, BUFSIZ, fmt, args);
va_end(args);
- compile_err_append(str);
+ err_append(buf, NULL);
}
static void
compile_warn_print(const char *file, int line, const char *fmt, va_list args)
{
- VALUE str;
+ char buf[BUFSIZ];
+ int len;
- str = compile_snprintf(NULL, "warning: ", file, line, fmt, args);
- rb_str_cat2(str, "\n");
- rb_write_error_str(str);
+ compile_snprintf(buf, BUFSIZ, file, line, fmt, args);
+ len = (int)strlen(buf);
+ buf[len++] = '\n';
+ rb_write_error2(buf, len);
}
void
rb_compile_warn(const char *file, int line, const char *fmt, ...)
{
+ char buf[BUFSIZ];
va_list args;
if (NIL_P(ruby_verbose)) return;
+ snprintf(buf, BUFSIZ, "warning: %s", fmt);
+
va_start(args, fmt);
- compile_warn_print(file, line, fmt, args);
+ compile_warn_print(file, line, buf, args);
va_end(args);
}
@@ -189,43 +168,42 @@ rb_compile_warn(const char *file, int line, const char *fmt, ...)
void
rb_compile_warning(const char *file, int line, const char *fmt, ...)
{
+ char buf[BUFSIZ];
va_list args;
if (!RTEST(ruby_verbose)) return;
+ snprintf(buf, BUFSIZ, "warning: %s", fmt);
+
va_start(args, fmt);
- compile_warn_print(file, line, fmt, args);
+ compile_warn_print(file, line, buf, args);
va_end(args);
}
static void
warn_print(const char *fmt, va_list args)
{
- VALUE str = rb_str_new(0, 0);
- VALUE file = rb_sourcefilename();
-
- if (!NIL_P(file)) {
- int line = rb_sourceline();
- str = rb_str_append(str, file);
- if (line) rb_str_catf(str, ":%d", line);
- rb_str_cat2(str, ": ");
- }
+ char buf[BUFSIZ];
+ int len;
- rb_str_cat2(str, "warning: ");
- rb_str_vcatf(str, fmt, args);
- rb_str_cat2(str, "\n");
- rb_write_error_str(str);
+ err_snprintf(buf, BUFSIZ, fmt, args);
+ len = (int)strlen(buf);
+ buf[len++] = '\n';
+ rb_write_error2(buf, len);
}
void
rb_warn(const char *fmt, ...)
{
+ char buf[BUFSIZ];
va_list args;
if (NIL_P(ruby_verbose)) return;
+ snprintf(buf, BUFSIZ, "warning: %s", fmt);
+
va_start(args, fmt);
- warn_print(fmt, args);
+ warn_print(buf, args);
va_end(args);
}
@@ -233,36 +211,32 @@ rb_warn(const char *fmt, ...)
void
rb_warning(const char *fmt, ...)
{
+ char buf[BUFSIZ];
va_list args;
if (!RTEST(ruby_verbose)) return;
+ snprintf(buf, BUFSIZ, "warning: %s", fmt);
+
va_start(args, fmt);
- warn_print(fmt, args);
+ warn_print(buf, args);
va_end(args);
}
/*
* call-seq:
- * warn(msg, ...) -> nil
- *
- * Displays each of the given messages followed by a record separator on
- * STDERR unless warnings have been disabled (for example with the
- * <code>-W0</code> flag).
+ * warn(msg) -> nil
*
- * warn("warning 1", "warning 2")
- *
- * <em>produces:</em>
- *
- * warning 1
- * warning 2
+ * Display the given message (followed by a newline) on STDERR unless
+ * warnings are disabled (for example with the <code>-W0</code> flag).
*/
static VALUE
-rb_warn_m(int argc, VALUE *argv, VALUE exc)
+rb_warn_m(VALUE self, VALUE mesg)
{
- if (!NIL_P(ruby_verbose) && argc > 0) {
- rb_io_puts(argc, argv, rb_stderr);
+ if (!NIL_P(ruby_verbose)) {
+ rb_io_write(rb_stderr, mesg);
+ rb_io_write(rb_stderr, rb_default_rs);
}
return Qnil;
}
@@ -270,20 +244,16 @@ rb_warn_m(int argc, VALUE *argv, VALUE exc)
static void
report_bug(const char *file, int line, const char *fmt, va_list args)
{
- /* SIGSEGV handler might have a very small stack. Thus we need to use it carefully. */
- char buf[256];
+ char buf[BUFSIZ];
FILE *out = stderr;
- int len = err_position_0(buf, 256, file, line);
+ int len = err_position_0(buf, BUFSIZ, file, line);
if ((ssize_t)fwrite(buf, 1, len, out) == (ssize_t)len ||
(ssize_t)fwrite(buf, 1, len, (out = stdout)) == (ssize_t)len) {
fputs("[BUG] ", out);
- vsnprintf(buf, 256, fmt, args);
- fputs(buf, out);
- snprintf(buf, 256, "\n%s\n\n", ruby_description);
- fputs(buf, out);
-
+ vfprintf(out, fmt, args);
+ fprintf(out, "\n%s\n\n", ruby_description);
rb_vm_bugreport();
@@ -307,7 +277,7 @@ rb_bug(const char *fmt, ...)
report_bug(file, line, fmt, args);
va_end(args);
-#if defined(_WIN32) && defined(RUBY_MSVCRT_VERSION) && RUBY_MSVCRT_VERSION >= 80
+#if defined(_WIN32) && defined(RT_VER) && RT_VER >= 80
_set_abort_behavior( 0, _CALL_REPORTFAULT);
#endif
@@ -371,79 +341,41 @@ rb_compile_bug(const char *file, int line, const char *fmt, ...)
abort();
}
-static const char builtin_types[][10] = {
- "", /* 0x00, */
- "Object",
- "Class",
- "Module",
- "Float",
- "String",
- "Regexp",
- "Array",
- "Hash",
- "Struct",
- "Bignum",
- "File",
- "Data", /* internal use: wrapped C pointers */
- "MatchData", /* data of $~ */
- "Complex",
- "Rational",
- "", /* 0x10 */
- "nil",
- "true",
- "false",
- "Symbol", /* :symbol */
- "Fixnum",
- "", /* 0x16 */
- "", /* 0x17 */
- "", /* 0x18 */
- "", /* 0x19 */
- "", /* 0x1a */
- "undef", /* internal use: #undef; should not happen */
- "Node", /* internal use: syntax tree node */
- "iClass", /* internal use: mixed-in module holder */
-};
-
-const char *
-rb_builtin_type_name(int t)
-{
+static const struct types {
+ int type;
const char *name;
- if ((unsigned int)t >= numberof(builtin_types)) return 0;
- name = builtin_types[t];
- if (*name) return name;
- return 0;
-}
-
-#define builtin_class_name rb_builtin_class_name
-const char *
-rb_builtin_class_name(VALUE x)
-{
- const char *etype;
-
- if (NIL_P(x)) {
- etype = "nil";
- }
- else if (FIXNUM_P(x)) {
- etype = "Fixnum";
- }
- else if (SYMBOL_P(x)) {
- etype = "Symbol";
- }
- else if (RB_TYPE_P(x, T_TRUE)) {
- etype = "true";
- }
- else if (RB_TYPE_P(x, T_FALSE)) {
- etype = "false";
- }
- else {
- etype = rb_obj_classname(x);
- }
- return etype;
-}
+} builtin_types[] = {
+ {T_NIL, "nil"},
+ {T_OBJECT, "Object"},
+ {T_CLASS, "Class"},
+ {T_ICLASS, "iClass"}, /* internal use: mixed-in module holder */
+ {T_MODULE, "Module"},
+ {T_FLOAT, "Float"},
+ {T_STRING, "String"},
+ {T_REGEXP, "Regexp"},
+ {T_ARRAY, "Array"},
+ {T_FIXNUM, "Fixnum"},
+ {T_HASH, "Hash"},
+ {T_STRUCT, "Struct"},
+ {T_BIGNUM, "Bignum"},
+ {T_FILE, "File"},
+ {T_RATIONAL,"Rational"},
+ {T_COMPLEX, "Complex"},
+ {T_TRUE, "true"},
+ {T_FALSE, "false"},
+ {T_SYMBOL, "Symbol"}, /* :symbol */
+ {T_DATA, "Data"}, /* internal use: wrapped C pointers */
+ {T_MATCH, "MatchData"}, /* data of $~ */
+ {T_NODE, "Node"}, /* internal use: syntax tree node */
+ {T_UNDEF, "undef"}, /* internal use: #undef; should not happen */
+};
void
rb_check_type(VALUE x, int t)
{
+ const struct types *type = builtin_types;
+ const struct types *const typeend = builtin_types +
+ sizeof(builtin_types) / sizeof(builtin_types[0]);
int xt;
if (x == Qundef) {
@@ -452,10 +384,30 @@ rb_check_type(VALUE x, int t)
xt = TYPE(x);
if (xt != t || (xt == T_DATA && RTYPEDDATA_P(x))) {
- const char *tname = rb_builtin_type_name(t);
- if (tname) {
- rb_raise(rb_eTypeError, "wrong argument type %s (expected %s)",
- builtin_class_name(x), tname);
+ while (type < typeend) {
+ if (type->type == t) {
+ const char *etype;
+
+ if (NIL_P(x)) {
+ etype = "nil";
+ }
+ else if (FIXNUM_P(x)) {
+ etype = "Fixnum";
+ }
+ else if (SYMBOL_P(x)) {
+ etype = "Symbol";
+ }
+ else if (rb_special_const_p(x)) {
+ x = rb_obj_as_string(x);
+ etype = StringValuePtr(x);
+ }
+ else {
+ etype = rb_obj_classname(x);
+ }
+ rb_raise(rb_eTypeError, "wrong argument type %s (expected %s)",
+ etype, type->name);
+ }
+ type++;
}
if (xt > T_MASK && xt <= 0x3f) {
rb_fatal("unknown type 0x%x (0x%x given, probably comes from extension library for ruby 1.8)", t, xt);
@@ -477,7 +429,7 @@ rb_typeddata_inherited_p(const rb_data_type_t *child, const rb_data_type_t *pare
int
rb_typeddata_is_kind_of(VALUE obj, const rb_data_type_t *data_type)
{
- if (!RB_TYPE_P(obj, T_DATA) ||
+ if (SPECIAL_CONST_P(obj) || BUILTIN_TYPE(obj) != T_DATA ||
!RTYPEDDATA_P(obj) || !rb_typeddata_inherited_p(RTYPEDDATA_TYPE(obj), data_type)) {
return 0;
}
@@ -490,9 +442,8 @@ rb_check_typeddata(VALUE obj, const rb_data_type_t *data_type)
const char *etype;
static const char mesg[] = "wrong argument type %s (expected %s)";
- if (!RB_TYPE_P(obj, T_DATA)) {
- etype = builtin_class_name(obj);
- rb_raise(rb_eTypeError, mesg, etype, data_type->wrap_struct_name);
+ if (SPECIAL_CONST_P(obj) || BUILTIN_TYPE(obj) != T_DATA) {
+ Check_Type(obj, T_DATA);
}
if (!RTYPEDDATA_P(obj)) {
etype = rb_obj_classname(obj);
@@ -641,7 +592,7 @@ exc_message(VALUE exc)
* call-seq:
* exception.inspect -> string
*
- * Return this exception's class name and message
+ * Return this exception's class name an message
*/
static VALUE
@@ -698,17 +649,9 @@ static VALUE
exc_backtrace(VALUE exc)
{
ID bt;
- VALUE obj;
CONST_ID(bt, "bt");
- obj = rb_attr_get(exc, bt);
-
- if (rb_backtrace_p(obj)) {
- obj = rb_backtrace_to_str_ary(obj);
- /* rb_iv_set(exc, "bt", obj); */
- }
-
- return obj;
+ return rb_attr_get(exc, bt);
}
VALUE
@@ -718,13 +661,14 @@ rb_check_backtrace(VALUE bt)
static const char err[] = "backtrace must be Array of String";
if (!NIL_P(bt)) {
- if (RB_TYPE_P(bt, T_STRING)) return rb_ary_new3(1, bt);
- if (rb_backtrace_p(bt)) return bt;
- if (!RB_TYPE_P(bt, T_ARRAY)) {
+ int t = TYPE(bt);
+
+ if (t == T_STRING) return rb_ary_new3(1, bt);
+ if (t != T_ARRAY) {
rb_raise(rb_eTypeError, err);
}
for (i=0;i<RARRAY_LEN(bt);i++) {
- if (!RB_TYPE_P(RARRAY_PTR(bt)[i], T_STRING)) {
+ if (TYPE(RARRAY_PTR(bt)[i]) != T_STRING) {
rb_raise(rb_eTypeError, err);
}
}
@@ -734,11 +678,11 @@ rb_check_backtrace(VALUE bt)
/*
* call-seq:
- * exc.set_backtrace(backtrace) -> array
+ * exc.set_backtrace(array) -> array
*
- * Sets the backtrace information associated with +exc+. The +backtrace+ must
- * be an array of String objects or a single String in the format described
- * in Exception#backtrace.
+ * Sets the backtrace information associated with <i>exc</i>. The
+ * argument must be an array of <code>String</code> objects in the
+ * format described in <code>Exception#backtrace</code>.
*
*/
@@ -748,20 +692,6 @@ exc_set_backtrace(VALUE exc, VALUE bt)
return rb_iv_set(exc, "bt", rb_check_backtrace(bt));
}
-VALUE
-rb_exc_set_backtrace(VALUE exc, VALUE bt)
-{
- return exc_set_backtrace(exc, bt);
-}
-
-static VALUE
-try_convert_to_exception(VALUE obj)
-{
- ID id_exception;
- CONST_ID(id_exception, "exception");
- return rb_check_funcall(obj, id_exception, 0, 0);
-}
-
/*
* call-seq:
* exc == obj -> true or false
@@ -781,17 +711,10 @@ exc_equal(VALUE exc, VALUE obj)
CONST_ID(id_mesg, "mesg");
if (rb_obj_class(exc) != rb_obj_class(obj)) {
- int status = 0;
ID id_message, id_backtrace;
CONST_ID(id_message, "message");
CONST_ID(id_backtrace, "backtrace");
- obj = rb_protect(try_convert_to_exception, obj, &status);
- if (status || obj == Qundef) {
- rb_set_errinfo(Qnil);
- return Qfalse;
- }
- if (rb_obj_class(exc) != rb_obj_class(obj)) return Qfalse;
mesg = rb_check_funcall(obj, id_message, 0, 0);
if (mesg == Qundef) return Qfalse;
backtrace = rb_check_funcall(obj, id_backtrace, 0, 0);
@@ -811,52 +734,18 @@ exc_equal(VALUE exc, VALUE obj)
/*
* call-seq:
- * SystemExit.new -> system_exit
- * SystemExit.new(status) -> system_exit
- * SystemExit.new(status, msg) -> system_exit
- * SystemExit.new(msg) -> system_exit
- *
- * Create a new +SystemExit+ exception with the given status and message.
- * Status is true, false, or an integer.
- * If status is not given, true is used.
+ * SystemExit.new(status=0) -> system_exit
+ *
+ * Create a new +SystemExit+ exception with the given status.
*/
static VALUE
exit_initialize(int argc, VALUE *argv, VALUE exc)
{
- VALUE status;
- if (argc > 0) {
- status = *argv;
-
- switch (status) {
- case Qtrue:
- status = INT2FIX(EXIT_SUCCESS);
- ++argv;
- --argc;
- break;
- case Qfalse:
- status = INT2FIX(EXIT_FAILURE);
- ++argv;
- --argc;
- break;
- default:
- status = rb_check_to_int(status);
- if (NIL_P(status)) {
- status = INT2FIX(EXIT_SUCCESS);
- }
- else {
-#if EXIT_SUCCESS != 0
- if (status == INT2FIX(0))
- status = INT2FIX(EXIT_SUCCESS);
-#endif
- ++argv;
- --argc;
- }
- break;
- }
- }
- else {
- status = INT2FIX(EXIT_SUCCESS);
+ VALUE status = INT2FIX(EXIT_SUCCESS);
+ if (argc > 0 && FIXNUM_P(argv[0])) {
+ status = *argv++;
+ --argc;
}
rb_call_super(argc, argv);
rb_iv_set(exc, "status", status);
@@ -915,21 +804,6 @@ rb_name_error(ID id, const char *fmt, ...)
rb_exc_raise(exc);
}
-void
-rb_name_error_str(VALUE str, const char *fmt, ...)
-{
- VALUE exc, argv[2];
- va_list args;
-
- va_start(args, fmt);
- argv[0] = rb_vsprintf(fmt, args);
- va_end(args);
-
- argv[1] = str;
- exc = rb_class_new_instance(2, argv, rb_eNameError);
- rb_exc_raise(exc);
-}
-
/*
* call-seq:
* NameError.new(msg [, name]) -> name_error
@@ -1079,14 +953,14 @@ name_err_mesg_to_str(VALUE obj)
int state = 0;
obj = ptr[1];
- switch (obj) {
- case Qnil:
+ switch (TYPE(obj)) {
+ case T_NIL:
desc = "nil";
break;
- case Qtrue:
+ case T_TRUE:
desc = "true";
break;
- case Qfalse:
+ case T_FALSE:
desc = "false";
break;
default:
@@ -1102,7 +976,7 @@ name_err_mesg_to_str(VALUE obj)
if (desc && desc[0] != '#') {
d = d ? rb_str_dup(d) : rb_str_new2(desc);
rb_str_cat2(d, ":");
- rb_str_append(d, rb_class_name(CLASS_OF(obj)));
+ rb_str_cat2(d, rb_obj_classname(obj));
}
args[0] = mesg;
args[1] = ptr[2];
@@ -1114,13 +988,6 @@ name_err_mesg_to_str(VALUE obj)
/* :nodoc: */
static VALUE
-name_err_mesg_dump(VALUE obj, VALUE limit)
-{
- return name_err_mesg_to_str(obj);
-}
-
-/* :nodoc: */
-static VALUE
name_err_mesg_load(VALUE klass, VALUE str)
{
return str;
@@ -1143,9 +1010,9 @@ nometh_err_args(VALUE self)
void
rb_invalid_str(const char *str, const char *type)
{
- VALUE s = rb_str_new2(str);
+ volatile VALUE s = rb_str_inspect(rb_str_new2(str));
- rb_raise(rb_eArgError, "invalid value for %s: %+"PRIsVALUE, type, s);
+ rb_raise(rb_eArgError, "invalid value for %s: %s", type, RSTRING_PTR(s));
}
/*
@@ -1241,7 +1108,7 @@ syserr_initialize(int argc, VALUE *argv, VALUE self)
if (!NIL_P(error) && st_lookup(syserr_tbl, NUM2LONG(error), &data)) {
klass = (VALUE)data;
/* change class */
- if (!RB_TYPE_P(self, T_OBJECT)) { /* insurance to avoid type crash */
+ if (TYPE(self) != T_OBJECT) { /* insurance to avoid type crash */
rb_raise(rb_eTypeError, "invalid instance type");
}
RBASIC(self)->klass = klass;
@@ -1258,7 +1125,8 @@ syserr_initialize(int argc, VALUE *argv, VALUE self)
VALUE str = StringValue(mesg);
rb_encoding *me = rb_enc_get(mesg);
- mesg = rb_sprintf("%s - %"PRIsVALUE, err, mesg);
+ mesg = rb_sprintf("%s - %.*s", err,
+ (int)RSTRING_LEN(str), RSTRING_PTR(str));
if (le != me && rb_enc_asciicompat(me)) {
le = me;
}/* else assume err is non ASCII string. */
@@ -1354,7 +1222,6 @@ syserr_eqq(VALUE self, VALUE exc)
*
* begin
* Process.kill('HUP',Process.pid)
- * sleep # wait for receiver to handle signal sent by Process.kill
* rescue SignalException => e
* puts "received Exception #{e}"
* end
@@ -1396,7 +1263,7 @@ syserr_eqq(VALUE self, VALUE exc)
*
* <em>raises the exception:</em>
*
- * TypeError: no implicit conversion of String into Integer
+ * TypeError: can't convert String into Integer
*
*/
@@ -1627,79 +1494,14 @@ syserr_eqq(VALUE self, VALUE exc)
*/
/*
- * Descendants of class Exception are used to communicate between
- * Kernel#raise and +rescue+ statements in <code>begin ... end</code> blocks.
- * Exception objects carry information about the exception -- its type (the
- * exception's class name), an optional descriptive string, and optional
- * traceback information. Exception subclasses may add additional
- * information like NameError#name.
- *
- * Programs may make subclasses of Exception, typically of StandardError or
- * RuntimeError, to provide custom classes and add additional information.
- * See the subclass list below for defaults for +raise+ and +rescue+.
- *
- * When an exception has been raised but not yet handled (in +rescue+,
- * +ensure+, +at_exit+ and +END+ blocks) the global variable <code>$!</code>
- * will contain the current exception and <code>$@</code> contains the
- * current exception's backtrace.
- *
- * It is recommended that a library should have one subclass of StandardError
- * or RuntimeError and have specific exception types inherit from it. This
- * allows the user to rescue a generic exception type to catch all exceptions
- * the library may raise even if future versions of the library add new
- * exception subclasses.
- *
- * For example:
- *
- * class MyLibrary
- * class Error < RuntimeError
- * end
- *
- * class WidgetError < Error
- * end
- *
- * class FrobError < Error
- * end
- *
- * end
- *
- * To handle both WidgetError and FrobError the library user can rescue
- * MyLibrary::Error.
- *
- * The built-in subclasses of Exception are:
- *
- * * NoMemoryError
- * * ScriptError
- * * LoadError
- * * NotImplementedError
- * * SyntaxError
- * * SecurityError
- * * SignalException
- * * Interrupt
- * * StandardError -- default for +rescue+
- * * ArgumentError
- * * EncodingError
- * * FiberError
- * * IOError
- * * EOFError
- * * IndexError
- * * KeyError
- * * StopIteration
- * * LocalJumpError
- * * NameError
- * * NoMethodError
- * * RangeError
- * * FloatDomainError
- * * RegexpError
- * * RuntimeError -- default for +raise+
- * * SystemCallError
- * * Errno::*
- * * ThreadError
- * * TypeError
- * * ZeroDivisionError
- * * SystemExit
- * * SystemStackError
- * * fatal -- impossible to rescue
+ * Descendants 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>
+ * objects carry information about the exception---its type (the
+ * exception's class name), an optional descriptive string, and
+ * optional traceback information. Programs may subclass
+ * <code>Exception</code>, or more typically <code>StandardError</code>
+ * to provide custom classes and add additional information.
*/
void
@@ -1734,10 +1536,7 @@ Init_Exception(void)
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_attr(rb_eLoadError, rb_intern("path"), 1, 0, Qfalse);
-
rb_eNotImpError = rb_define_class("NotImplementedError", rb_eScriptError);
rb_eNameError = rb_define_class("NameError", rb_eStandardError);
@@ -1748,7 +1547,7 @@ Init_Exception(void)
rb_define_singleton_method(rb_cNameErrorMesg, "!", rb_name_err_mesg_new, NAME_ERR_MESG_COUNT);
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_dump, 1);
+ rb_define_method(rb_cNameErrorMesg, "_dump", name_err_mesg_to_str, 1);
rb_define_singleton_method(rb_cNameErrorMesg, "_load", name_err_mesg_load, 1);
rb_eNoMethodError = rb_define_class("NoMethodError", rb_eNameError);
rb_define_method(rb_eNoMethodError, "initialize", nometh_err_initialize, -1);
@@ -1768,20 +1567,7 @@ Init_Exception(void)
rb_mErrno = rb_define_module("Errno");
- rb_define_global_function("warn", rb_warn_m, -1);
-}
-
-void
-rb_enc_raise(rb_encoding *enc, VALUE exc, const char *fmt, ...)
-{
- va_list args;
- VALUE mesg;
-
- va_start(args, fmt);
- mesg = rb_enc_vsprintf(enc, fmt, args);
- va_end(args);
-
- rb_exc_raise(rb_exc_new3(exc, mesg));
+ rb_define_global_function("warn", rb_warn_m, 1);
}
void
@@ -1796,16 +1582,6 @@ rb_raise(VALUE exc, const char *fmt, ...)
rb_exc_raise(rb_exc_new3(exc, mesg));
}
-NORETURN(static void raise_loaderror(VALUE path, VALUE mesg));
-
-static void
-raise_loaderror(VALUE path, VALUE mesg)
-{
- VALUE err = rb_exc_new3(rb_eLoadError, mesg);
- rb_ivar_set(err, rb_intern("@path"), path);
- rb_exc_raise(err);
-}
-
void
rb_loaderror(const char *fmt, ...)
{
@@ -1815,19 +1591,7 @@ rb_loaderror(const char *fmt, ...)
va_start(args, fmt);
mesg = rb_enc_vsprintf(rb_locale_encoding(), fmt, args);
va_end(args);
- raise_loaderror(Qnil, mesg);
-}
-
-void
-rb_loaderror_with_path(VALUE path, const char *fmt, ...)
-{
- va_list args;
- VALUE mesg;
-
- va_start(args, fmt);
- mesg = rb_enc_vsprintf(rb_locale_encoding(), fmt, args);
- va_end(args);
- raise_loaderror(path, mesg);
+ rb_exc_raise(rb_exc_new3(rb_eLoadError, mesg));
}
void
@@ -1968,12 +1732,9 @@ rb_sys_warning(const char *fmt, ...)
}
void
-rb_load_fail(VALUE path, const char *err)
+rb_load_fail(const char *path)
{
- VALUE mesg = rb_str_buf_new_cstr(err);
- rb_str_cat2(mesg, " -- ");
- rb_str_append(mesg, path); /* should be ASCII compatible */
- raise_loaderror(path, mesg);
+ rb_loaderror("%s -- %s", strerror(errno), path);
}
void
@@ -1990,37 +1751,6 @@ rb_check_frozen(VALUE obj)
}
void
-rb_error_untrusted(VALUE obj)
-{
- if (rb_safe_level() >= 4) {
- rb_raise(rb_eSecurityError, "Insecure: can't modify %s",
- rb_obj_classname(obj));
- }
-}
-
-#undef rb_check_trusted
-void
-rb_check_trusted(VALUE obj)
-{
- rb_check_trusted_internal(obj);
-}
-
-void
-rb_check_copyable(VALUE obj, VALUE orig)
-{
- if (!FL_ABLE(obj)) return;
- rb_check_frozen_internal(obj);
- rb_check_trusted_internal(obj);
- if (!FL_ABLE(orig)) return;
- if ((~RBASIC(obj)->flags & RBASIC(orig)->flags) & (FL_UNTRUSTED|FL_TAINT)) {
- if (rb_safe_level() > 0) {
- rb_raise(rb_eSecurityError, "Insecure: can't modify %"PRIsVALUE,
- RBASIC(obj)->klass);
- }
- }
-}
-
-void
Init_syserr(void)
{
rb_eNOERROR = set_syserr(0, "NOERROR");
@@ -2030,3 +1760,33 @@ Init_syserr(void)
#undef defined_error
#undef undefined_error
}
+
+static void
+err_append(const char *s, rb_encoding *enc)
+{
+ rb_thread_t *th = GET_THREAD();
+ VALUE err = th->errinfo;
+
+ if (th->mild_compile_error) {
+ if (!RTEST(err)) {
+ err = rb_exc_new3(rb_eSyntaxError,
+ rb_enc_str_new(s, strlen(s), enc));
+ th->errinfo = err;
+ }
+ else {
+ VALUE str = rb_obj_as_string(err);
+
+ rb_str_cat2(str, "\n");
+ rb_str_cat2(str, s);
+ th->errinfo = rb_exc_new3(rb_eSyntaxError, str);
+ }
+ }
+ else {
+ if (!RTEST(err)) {
+ err = rb_exc_new2(rb_eSyntaxError, "compile error");
+ th->errinfo = err;
+ }
+ rb_write_error(s);
+ rb_write_error("\n");
+ }
+}
diff --git a/eval.c b/eval.c
index 453795d7b8..9ceb833d37 100644
--- a/eval.c
+++ b/eval.c
@@ -18,14 +18,11 @@
#include "ruby/encoding.h"
#include "internal.h"
#include "vm_core.h"
-#include "probes_helper.h"
#define numberof(array) (int)(sizeof(array) / sizeof((array)[0]))
NORETURN(void rb_raise_jump(VALUE));
-NODE *rb_vm_get_cref(const rb_iseq_t *, const VALUE *);
-
VALUE rb_eLocalJumpError;
VALUE rb_eSysStackError;
@@ -34,18 +31,16 @@ VALUE rb_eSysStackError;
#include "eval_error.c"
#include "eval_jump.c"
-/* Initializes the Ruby VM and builtin libraries.
- * @retval 0 if succeeded.
- * @retval non-zero an error occured.
- */
-int
-ruby_setup(void)
+/* initialize ruby */
+
+void
+ruby_init(void)
{
static int initialized = 0;
int state;
if (initialized)
- return 0;
+ return;
initialized = 1;
ruby_init_stack((void *)&state);
@@ -56,37 +51,16 @@ ruby_setup(void)
if ((state = EXEC_TAG()) == 0) {
rb_call_inits();
ruby_prog_init();
- GET_VM()->running = 1;
}
POP_TAG();
- return state;
-}
-
-/* Calls ruby_setup() and check error.
- *
- * Prints errors and calls exit(3) if an error occured.
- */
-void
-ruby_init(void)
-{
- int state = ruby_setup();
if (state) {
error_print();
exit(EXIT_FAILURE);
}
+ GET_VM()->running = 1;
}
-/*! Processes command line arguments and compiles the Ruby source to execute.
- *
- * This function does:
- * \li Processses the given command line flags and arguments for ruby(1)
- * \li compiles the source code from the given argument, -e or stdin, and
- * \li returns the compiled source as an opaque pointer to an internal data structure
- *
- * @return an opaque pointer to the compiled source or an internal special value.
- * @sa ruby_executable_node().
- */
void *
ruby_options(int argc, char **argv)
{
@@ -127,13 +101,6 @@ ruby_finalize_1(void)
rb_gc_call_finalizer_at_exit();
}
-/** Runs the VM finalization processes.
- *
- * <code>END{}</code> and procs registered by <code>Kernel.#at_exit</code> are
- * executed here. See the Ruby language spec for more details.
- *
- * @note This function is allowed to raise an exception if an error occurred.
- */
void
ruby_finalize(void)
{
@@ -141,16 +108,6 @@ ruby_finalize(void)
ruby_finalize_1();
}
-/** Destructs the VM.
- *
- * Runs the VM finalization processes as well as ruby_finalize(), and frees
- * resources used by the VM.
- *
- * @param ex Default value to the return value.
- * @return If an error occured returns a non-zero. If otherwise, returns the
- * given ex.
- * @note This function does not raise any exception.
- */
int
ruby_cleanup(volatile int ex)
{
@@ -163,7 +120,7 @@ ruby_cleanup(volatile int ex)
rb_threadptr_check_signal(th);
PUSH_TAG();
if ((state = EXEC_TAG()) == 0) {
- SAVE_ROOT_JMPBUF(th, { RUBY_VM_CHECK_INTS(th); });
+ SAVE_ROOT_JMPBUF(th, { RUBY_VM_CHECK_INTS(); });
}
POP_TAG();
@@ -177,9 +134,6 @@ ruby_cleanup(volatile int ex)
}
POP_TAG();
- /* protect from Thread#raise */
- th->status = THREAD_KILLED;
-
errs[0] = th->errinfo;
PUSH_TAG();
if ((state = EXEC_TAG()) == 0) {
@@ -215,7 +169,7 @@ ruby_cleanup(volatile int ex)
if (!RTEST(err)) continue;
/* th->errinfo contains a NODE while break'ing */
- if (RB_TYPE_P(err, T_NODE)) continue;
+ if (TYPE(err) == T_NODE) continue;
if (rb_obj_is_kind_of(err, rb_eSystemExit)) {
ex = sysexit_status(err);
@@ -256,25 +210,12 @@ ruby_exec_internal(void *n)
return state;
}
-/*! Calls ruby_cleanup() and exits the process */
void
ruby_stop(int ex)
{
exit(ruby_cleanup(ex));
}
-/*! Checks the return value of ruby_options().
- * @param n return value of ruby_options().
- * @param status pointer to the exit status of this process.
- *
- * ruby_options() sometimes returns a special value to indicate this process
- * should immediately exit. This function checks if the case. Also stores the
- * exit status that the caller have to pass to exit(3) into
- * <code>*status</code>.
- *
- * @retval non-zero if the given opaque pointer is actually a compiled source.
- * @retval 0 if the given value is such a special value.
- */
int
ruby_executable_node(void *n, int *status)
{
@@ -292,10 +233,6 @@ ruby_executable_node(void *n, int *status)
return FALSE;
}
-/*! Runs the given compiled source and exits this process.
- * @retval 0 if successfully run thhe source
- * @retval non-zero if an error occurred.
-*/
int
ruby_run_node(void *n)
{
@@ -307,7 +244,6 @@ ruby_run_node(void *n)
return ruby_cleanup(ruby_exec_node(n));
}
-/*! Runs the given compiled source */
int
ruby_exec_node(void *n)
{
@@ -377,8 +313,8 @@ rb_mod_s_constants(int argc, VALUE *argv, VALUE mod)
VALUE cbase = 0;
void *data = 0;
- if (argc > 0 || mod != rb_cModule) {
- return rb_mod_constants(argc, argv, mod);
+ if (argc > 0) {
+ return rb_mod_constants(argc, argv, rb_cModule);
}
while (cref) {
@@ -451,7 +387,7 @@ setup_exception(rb_thread_t *th, int tag, volatile VALUE mesg)
else {
at = get_backtrace(mesg);
if (NIL_P(at)) {
- at = rb_vm_backtrace_object();
+ at = rb_make_backtrace();
if (OBJ_FROZEN(mesg)) {
mesg = rb_obj_dup(mesg);
}
@@ -467,23 +403,23 @@ setup_exception(rb_thread_t *th, int tag, volatile VALUE mesg)
!rb_obj_is_kind_of(e, rb_eSystemExit)) {
int status;
- mesg = e;
PUSH_TAG();
if ((status = EXEC_TAG()) == 0) {
- th->errinfo = Qnil;
- e = rb_obj_as_string(mesg);
- th->errinfo = mesg;
+ RB_GC_GUARD(e) = rb_obj_as_string(e);
if (file && line) {
- warn_printf("Exception `%"PRIsVALUE"' at %s:%d - %"PRIsVALUE"\n",
- rb_obj_class(mesg), file, line, e);
+ warn_printf("Exception `%s' at %s:%d - %s\n",
+ rb_obj_classname(th->errinfo),
+ file, line, RSTRING_PTR(e));
}
else if (file) {
- warn_printf("Exception `%"PRIsVALUE"' at %s - %"PRIsVALUE"\n",
- rb_obj_class(mesg), file, e);
+ warn_printf("Exception `%s' at %s - %s\n",
+ rb_obj_classname(th->errinfo),
+ file, RSTRING_PTR(e));
}
else {
- warn_printf("Exception `%"PRIsVALUE"' - %"PRIsVALUE"\n",
- rb_obj_class(mesg), e);
+ warn_printf("Exception `%s' - %s\n",
+ rb_obj_classname(th->errinfo),
+ RSTRING_PTR(e));
}
}
POP_TAG();
@@ -502,13 +438,10 @@ setup_exception(rb_thread_t *th, int tag, volatile VALUE mesg)
JUMP_TAG(TAG_FATAL);
}
+ rb_trap_restore_mask();
+
if (tag != TAG_FATAL) {
- if (RUBY_DTRACE_RAISE_ENABLED()) {
- RUBY_DTRACE_RAISE(rb_obj_classname(th->errinfo),
- rb_sourcefile(),
- rb_sourceline());
- }
- EXEC_EVENT_HOOK(th, RUBY_EVENT_RAISE, th->cfp->self, 0, 0, mesg);
+ EXEC_EVENT_HOOK(th, RUBY_EVENT_RAISE, th->cfp->self, 0, 0);
}
}
@@ -585,8 +518,7 @@ rb_f_raise(int argc, VALUE *argv)
}
}
rb_raise_jump(rb_make_exception(argc, argv));
-
- UNREACHABLE;
+ return Qnil; /* not reached */
}
static VALUE
@@ -625,7 +557,7 @@ make_exception(int argc, VALUE *argv, int isstr)
}
break;
default:
- rb_check_arity(argc, 0, 3);
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 0..3)", argc);
break;
}
if (argc > 0) {
@@ -657,7 +589,7 @@ rb_raise_jump(VALUE mesg)
setup_exception(th, TAG_RAISE, mesg);
- EXEC_EVENT_HOOK(th, RUBY_EVENT_C_RETURN, self, mid, klass, Qnil);
+ EXEC_EVENT_HOOK(th, RUBY_EVENT_C_RETURN, self, mid, klass);
rb_thread_raised_clear(th);
JUMP_TAG(TAG_RAISE);
}
@@ -673,7 +605,8 @@ rb_block_given_p(void)
{
rb_thread_t *th = GET_THREAD();
- if (rb_vm_control_frame_block_ptr(th->cfp)) {
+ if ((th->cfp->lfp[0] & 0x02) == 0 &&
+ GC_GUARDED_PTR_REF(th->cfp->lfp[0])) {
return TRUE;
}
else {
@@ -708,13 +641,13 @@ rb_rescue2(VALUE (* b_proc) (ANYARGS), VALUE data1,
volatile VALUE e_info = th->errinfo;
va_list args;
- TH_PUSH_TAG(th);
- if ((state = TH_EXEC_TAG()) == 0) {
+ PUSH_TAG();
+ if ((state = EXEC_TAG()) == 0) {
retry_entry:
result = (*b_proc) (data1);
}
else {
- rb_vm_rewind_cfp(th, cfp);
+ th->cfp = cfp; /* restore */
if (state == TAG_RAISE) {
int handle = FALSE;
@@ -752,7 +685,7 @@ rb_rescue2(VALUE (* b_proc) (ANYARGS), VALUE data1,
}
}
}
- TH_POP_TAG();
+ POP_TAG();
if (state)
JUMP_TAG(state);
@@ -779,21 +712,21 @@ rb_protect(VALUE (* proc) (VALUE), VALUE data, int * state)
protect_tag.prev = th->protect_tag;
- TH_PUSH_TAG(th);
+ PUSH_TAG();
th->protect_tag = &protect_tag;
MEMCPY(&org_jmpbuf, &(th)->root_jmpbuf, rb_jmpbuf_t, 1);
- if ((status = TH_EXEC_TAG()) == 0) {
+ if ((status = EXEC_TAG()) == 0) {
SAVE_ROOT_JMPBUF(th, result = (*proc) (data));
}
MEMCPY(&(th)->root_jmpbuf, &org_jmpbuf, rb_jmpbuf_t, 1);
th->protect_tag = protect_tag.prev;
- TH_POP_TAG();
+ POP_TAG();
if (state) {
*state = status;
}
if (status != 0) {
- rb_vm_rewind_cfp(th, cfp);
+ th->cfp = cfp;
return Qnil;
}
@@ -805,8 +738,6 @@ rb_ensure(VALUE (*b_proc)(ANYARGS), VALUE data1, VALUE (*e_proc)(ANYARGS), VALUE
{
int state;
volatile VALUE result = Qnil;
- volatile VALUE errinfo;
- rb_thread_t *const th = GET_THREAD();
PUSH_TAG();
if ((state = EXEC_TAG()) == 0) {
@@ -815,9 +746,7 @@ rb_ensure(VALUE (*b_proc)(ANYARGS), VALUE data1, VALUE (*e_proc)(ANYARGS), VALUE
POP_TAG();
/* TODO: fix me */
/* retval = prot_tag ? prot_tag->retval : Qnil; */ /* save retval */
- errinfo = th->errinfo;
(*e_proc) (data2);
- th->errinfo = errinfo;
if (state)
JUMP_TAG(state);
return result;
@@ -868,80 +797,35 @@ frame_func_id(rb_control_frame_t *cfp)
return 0;
}
-static ID
-frame_called_id(rb_control_frame_t *cfp)
-{
- const rb_method_entry_t *me_local;
- rb_iseq_t *iseq = cfp->iseq;
- if (cfp->me) {
- return cfp->me->called_id;
- }
- while (iseq) {
- if (RUBY_VM_IFUNC_P(iseq)) {
- NODE *ifunc = (NODE *)iseq;
- if (ifunc->nd_aid) return ifunc->nd_aid;
- return rb_intern("<ifunc>");
- }
- me_local = method_entry_of_iseq(cfp, iseq);
- if (me_local) {
- cfp->me = me_local;
- return me_local->called_id;
- }
- if (iseq->defined_method_id) {
- return iseq->defined_method_id;
- }
- if (iseq->local_iseq == iseq) {
- break;
- }
- iseq = iseq->parent_iseq;
- }
- return 0;
-}
-
ID
rb_frame_this_func(void)
{
return frame_func_id(GET_THREAD()->cfp);
}
-static rb_control_frame_t *
-previous_frame(rb_thread_t *th)
-{
- rb_control_frame_t *prev_cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(th->cfp);
- /* check if prev_cfp can be accessible */
- if ((void *)(th->stack + th->stack_size) == (void *)(prev_cfp)) {
- return 0;
- }
- return prev_cfp;
-}
-
ID
rb_frame_callee(void)
{
- rb_control_frame_t *prev_cfp = previous_frame(GET_THREAD());
- if (!prev_cfp) return 0;
- return frame_called_id(prev_cfp);
+ return frame_func_id(GET_THREAD()->cfp);
}
static ID
rb_frame_caller(void)
{
- rb_control_frame_t *prev_cfp = previous_frame(GET_THREAD());
- if (!prev_cfp) return 0;
+ rb_thread_t *th = GET_THREAD();
+ rb_control_frame_t *prev_cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(th->cfp);
+ /* check if prev_cfp can be accessible */
+ if ((void *)(th->stack + th->stack_size) == (void *)(prev_cfp)) {
+ return 0;
+ }
return frame_func_id(prev_cfp);
}
-ID
-rb_frame_last_func(void)
+void
+rb_frame_pop(void)
{
rb_thread_t *th = GET_THREAD();
- rb_control_frame_t *cfp = th->cfp;
- ID mid;
-
- while (!(mid = frame_func_id(cfp)) &&
- (cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp),
- !RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(th, cfp)));
- return mid;
+ th->cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(th->cfp);
}
/*
@@ -983,252 +867,16 @@ static VALUE
rb_mod_include(int argc, VALUE *argv, VALUE module)
{
int i;
- ID id_append_features, id_included;
-
- CONST_ID(id_append_features, "append_features");
- CONST_ID(id_included, "included");
-
- for (i = 0; i < argc; i++)
- Check_Type(argv[i], T_MODULE);
- while (argc--) {
- rb_funcall(argv[argc], id_append_features, 1, module);
- rb_funcall(argv[argc], id_included, 1, module);
- }
- return module;
-}
-
-/*
- * call-seq:
- * prepend_features(mod) -> mod
- *
- * When this module is prepended in another, Ruby calls
- * <code>prepend_features</code> in this module, passing it the
- * receiving module in _mod_. Ruby's default implementation is
- * to overlay the constants, methods, and module variables of this module
- * to _mod_ if this module has not already been added to
- * _mod_ or one of its ancestors. See also <code>Module#prepend</code>.
- */
-
-static VALUE
-rb_mod_prepend_features(VALUE module, VALUE prepend)
-{
- switch (TYPE(prepend)) {
- case T_CLASS:
- case T_MODULE:
- break;
- default:
- Check_Type(prepend, T_CLASS);
- break;
- }
- rb_prepend_module(prepend, module);
-
- return module;
-}
-
-/*
- * call-seq:
- * prepend(module, ...) -> self
- *
- * Invokes <code>Module.prepend_features</code> on each parameter in reverse order.
- */
-
-static VALUE
-rb_mod_prepend(int argc, VALUE *argv, VALUE module)
-{
- int i;
- ID id_prepend_features, id_prepended;
- CONST_ID(id_prepend_features, "prepend_features");
- CONST_ID(id_prepended, "prepended");
for (i = 0; i < argc; i++)
Check_Type(argv[i], T_MODULE);
while (argc--) {
- rb_funcall(argv[argc], id_prepend_features, 1, module);
- rb_funcall(argv[argc], id_prepended, 1, module);
+ rb_funcall(argv[argc], rb_intern("append_features"), 1, module);
+ rb_funcall(argv[argc], rb_intern("included"), 1, module);
}
return module;
}
-static void
-warn_refinements_once()
-{
- static int warned = 0;
-
- if (warned)
- return;
- rb_warn("Refinements are experimental, and the behavior may change in future versions of Ruby!");
- warned = 1;
-}
-
-static VALUE
-hidden_identity_hash_new()
-{
- VALUE hash = rb_hash_new();
-
- rb_funcall(hash, rb_intern("compare_by_identity"), 0);
- RBASIC(hash)->klass = 0; /* hide from ObjectSpace */
- return hash;
-}
-
-void
-rb_using_refinement(NODE *cref, VALUE klass, VALUE module)
-{
- VALUE iclass, c, superclass = klass;
-
- Check_Type(klass, T_CLASS);
- Check_Type(module, T_MODULE);
- if (NIL_P(cref->nd_refinements)) {
- cref->nd_refinements = hidden_identity_hash_new();
- }
- else {
- if (cref->flags & NODE_FL_CREF_OMOD_SHARED) {
- cref->nd_refinements = rb_hash_dup(cref->nd_refinements);
- cref->flags &= ~NODE_FL_CREF_OMOD_SHARED;
- }
- if (!NIL_P(c = rb_hash_lookup(cref->nd_refinements, klass))) {
- superclass = c;
- while (c && RB_TYPE_P(c, T_ICLASS)) {
- if (RBASIC(c)->klass == module) {
- /* already used refinement */
- return;
- }
- c = RCLASS_SUPER(c);
- }
- }
- }
- FL_SET(module, RMODULE_IS_OVERLAID);
- c = iclass = rb_include_class_new(module, superclass);
- RCLASS_REFINED_CLASS(c) = klass;
- RCLASS_M_TBL(c) = RCLASS_M_TBL(module);
- module = RCLASS_SUPER(module);
- while (module && module != klass) {
- FL_SET(module, RMODULE_IS_OVERLAID);
- c = RCLASS_SUPER(c) = rb_include_class_new(module, RCLASS_SUPER(c));
- RCLASS_REFINED_CLASS(c) = klass;
- module = RCLASS_SUPER(module);
- }
- rb_hash_aset(cref->nd_refinements, klass, iclass);
-}
-
-static int
-using_refinement(VALUE klass, VALUE module, VALUE arg)
-{
- NODE *cref = (NODE *) arg;
-
- rb_using_refinement(cref, klass, module);
- return ST_CONTINUE;
-}
-
-void
-rb_using_module(NODE *cref, VALUE module)
-{
- ID id_refinements;
- VALUE refinements;
-
- Check_Type(module, T_MODULE);
- CONST_ID(id_refinements, "__refinements__");
- refinements = rb_attr_get(module, id_refinements);
- if (NIL_P(refinements)) return;
- rb_hash_foreach(refinements, using_refinement, (VALUE) cref);
-}
-
-VALUE rb_refinement_module_get_refined_class(VALUE module)
-{
- ID id_refined_class;
-
- CONST_ID(id_refined_class, "__refined_class__");
- return rb_attr_get(module, id_refined_class);
-}
-
-static void
-add_activated_refinement(VALUE activated_refinements,
- VALUE klass, VALUE refinement)
-{
- VALUE iclass, c, superclass = klass;
-
- if (!NIL_P(c = rb_hash_lookup(activated_refinements, klass))) {
- superclass = c;
- while (c && RB_TYPE_P(c, T_ICLASS)) {
- if (RBASIC(c)->klass == refinement) {
- /* already used refinement */
- return;
- }
- c = RCLASS_SUPER(c);
- }
- }
- FL_SET(refinement, RMODULE_IS_OVERLAID);
- c = iclass = rb_include_class_new(refinement, superclass);
- RCLASS_REFINED_CLASS(c) = klass;
- refinement = RCLASS_SUPER(refinement);
- while (refinement) {
- FL_SET(refinement, RMODULE_IS_OVERLAID);
- c = RCLASS_SUPER(c) =
- rb_include_class_new(refinement, RCLASS_SUPER(c));
- RCLASS_REFINED_CLASS(c) = klass;
- refinement = RCLASS_SUPER(refinement);
- }
- rb_hash_aset(activated_refinements, klass, iclass);
-}
-
-VALUE rb_yield_refine_block(VALUE refinement, VALUE refinements);
-
-/*
- * call-seq:
- * refine(klass) { block } -> module
- *
- * Refine <i>klass</i> in the receiver.
- *
- * Returns an overlaid module.
- */
-
-static VALUE
-rb_mod_refine(VALUE module, VALUE klass)
-{
- VALUE refinement;
- ID id_refinements, id_activated_refinements,
- id_refined_class, id_defined_at;
- VALUE refinements, activated_refinements;
- rb_thread_t *th = GET_THREAD();
- rb_block_t *block = rb_vm_control_frame_block_ptr(th->cfp);
-
- warn_refinements_once();
- if (!block) {
- rb_raise(rb_eArgError, "no block given");
- }
- if (block->proc) {
- rb_raise(rb_eArgError,
- "can't pass a Proc as a block to Module#refine");
- }
- Check_Type(klass, T_CLASS);
- CONST_ID(id_refinements, "__refinements__");
- refinements = rb_attr_get(module, id_refinements);
- if (NIL_P(refinements)) {
- refinements = hidden_identity_hash_new();
- rb_ivar_set(module, id_refinements, refinements);
- }
- CONST_ID(id_activated_refinements, "__activated_refinements__");
- activated_refinements = rb_attr_get(module, id_activated_refinements);
- if (NIL_P(activated_refinements)) {
- activated_refinements = hidden_identity_hash_new();
- rb_ivar_set(module, id_activated_refinements,
- activated_refinements);
- }
- refinement = rb_hash_lookup(refinements, klass);
- if (NIL_P(refinement)) {
- refinement = rb_module_new();
- RCLASS_SUPER(refinement) = klass;
- FL_SET(refinement, RMODULE_IS_REFINEMENT);
- CONST_ID(id_refined_class, "__refined_class__");
- rb_ivar_set(refinement, id_refined_class, klass);
- CONST_ID(id_defined_at, "__defined_at__");
- rb_ivar_set(refinement, id_defined_at, module);
- rb_hash_aset(refinements, klass, refinement);
- add_activated_refinement(activated_refinements, klass, refinement);
- }
- rb_yield_refine_block(refinement, activated_refinements);
- return refinement;
-}
-
void
rb_obj_call_init(VALUE obj, int argc, VALUE *argv)
{
@@ -1305,17 +953,15 @@ static VALUE
rb_obj_extend(int argc, VALUE *argv, VALUE obj)
{
int i;
- ID id_extend_object, id_extended;
-
- CONST_ID(id_extend_object, "extend_object");
- CONST_ID(id_extended, "extended");
- rb_check_arity(argc, 1, UNLIMITED_ARGUMENTS);
+ if (argc == 0) {
+ rb_raise(rb_eArgError, "wrong number of arguments (at least 1)");
+ }
for (i = 0; i < argc; i++)
Check_Type(argv[i], T_MODULE);
while (argc--) {
- rb_funcall(argv[argc], id_extend_object, 1, obj);
- rb_funcall(argv[argc], id_extended, 1, obj);
+ rb_funcall(argv[argc], rb_intern("extend_object"), 1, obj);
+ rb_funcall(argv[argc], rb_intern("extended"), 1, obj);
}
return obj;
}
@@ -1336,36 +982,13 @@ top_include(int argc, VALUE *argv, VALUE self)
rb_secure(4);
if (th->top_wrapper) {
- rb_warning("main.include in the wrapped load is effective only in wrapper module");
+ rb_warning
+ ("main#include in the wrapped load is effective only in wrapper module");
return rb_mod_include(argc, argv, th->top_wrapper);
}
return rb_mod_include(argc, argv, rb_cObject);
}
-/*
- * call-seq:
- * using(module) -> self
- *
- * Import class refinements from <i>module</i> into the scope where
- * <code>using</code> is called.
- */
-
-static VALUE
-top_using(VALUE self, VALUE module)
-{
- NODE *cref = rb_vm_cref();
- rb_control_frame_t *prev_cfp = previous_frame(GET_THREAD());
-
- warn_refinements_once();
- if (cref->nd_next || (prev_cfp && prev_cfp->me)) {
- rb_raise(rb_eRuntimeError, "using is permitted only at toplevel");
- }
- Check_Type(module, T_MODULE);
- rb_using_module(cref, module);
- rb_clear_cache();
- return self;
-}
-
static VALUE *
errinfo_place(rb_thread_t *th)
{
@@ -1375,12 +998,12 @@ errinfo_place(rb_thread_t *th)
while (RUBY_VM_VALID_CONTROL_FRAME_P(cfp, end_cfp)) {
if (RUBY_VM_NORMAL_ISEQ_P(cfp->iseq)) {
if (cfp->iseq->type == ISEQ_TYPE_RESCUE) {
- return &cfp->ep[-2];
+ return &cfp->dfp[-2];
}
else if (cfp->iseq->type == ISEQ_TYPE_ENSURE &&
- !RB_TYPE_P(cfp->ep[-2], T_NODE) &&
- !FIXNUM_P(cfp->ep[-2])) {
- return &cfp->ep[-2];
+ TYPE(cfp->dfp[-2]) != T_NODE &&
+ !FIXNUM_P(cfp->dfp[-2])) {
+ return &cfp->dfp[-2];
}
}
cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
@@ -1498,40 +1121,6 @@ rb_f_method_name(void)
}
}
-static VALUE
-rb_f_callee_name(void)
-{
- ID fname = rb_frame_callee(); /* need *callee* ID */
-
- if (fname) {
- return ID2SYM(fname);
- }
- else {
- return Qnil;
- }
-}
-
-/*
- * call-seq:
- * __dir__ -> string
- *
- * Returns the canonicalized absolute path of the directory of the file from
- * which this method is called. It means symlinks in the path is resolved.
- * If <code>__FILE__</code> is <code>nil</code>, it returns <code>nil</code>.
- * The return value equals to <code>File.dirname(File.realpath(__FILE__))</code>.
- *
- */
-static VALUE
-f_current_dirname(void)
-{
- VALUE base = rb_current_realfilepath();
- if (NIL_P(base)) {
- return Qnil;
- }
- base = rb_file_dirname(base);
- return base;
-}
-
void
Init_eval(void)
{
@@ -1544,16 +1133,11 @@ Init_eval(void)
rb_define_global_function("global_variables", rb_f_global_variables, 0); /* in variable.c */
rb_define_global_function("__method__", rb_f_method_name, 0);
- rb_define_global_function("__callee__", rb_f_callee_name, 0);
- rb_define_global_function("__dir__", f_current_dirname, 0);
+ rb_define_global_function("__callee__", rb_f_method_name, 0);
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);
rb_define_private_method(rb_cModule, "include", rb_mod_include, -1);
- rb_define_private_method(rb_cModule, "prepend_features", rb_mod_prepend_features, 1);
- rb_define_private_method(rb_cModule, "prepend", rb_mod_prepend, -1);
- rb_define_private_method(rb_cModule, "refine", rb_mod_refine, 1);
- rb_undef_method(rb_cClass, "refine");
rb_undef_method(rb_cClass, "module_function");
@@ -1563,10 +1147,7 @@ Init_eval(void)
rb_define_singleton_method(rb_cModule, "nesting", rb_mod_nesting, 0);
rb_define_singleton_method(rb_cModule, "constants", rb_mod_s_constants, -1);
- rb_define_private_method(rb_singleton_class(rb_vm_top_self()),
- "include", top_include, -1);
- rb_define_private_method(rb_singleton_class(rb_vm_top_self()),
- "using", top_using, 1);
+ rb_define_singleton_method(rb_vm_top_self(), "include", top_include, -1);
rb_define_method(rb_mKernel, "extend", rb_obj_extend, -1);
diff --git a/eval_error.c b/eval_error.c
index 54d6db9fb8..fd06adf92d 100644
--- a/eval_error.c
+++ b/eval_error.c
@@ -6,18 +6,17 @@
static void
warn_printf(const char *fmt, ...)
{
- VALUE str;
+ char buf[BUFSIZ];
va_list args;
va_init_list(args, fmt);
- str = rb_vsprintf(fmt, args);
+ vsnprintf(buf, BUFSIZ, fmt, args);
va_end(args);
- rb_write_error_str(str);
+ rb_write_error(buf);
}
#define warn_print(x) rb_write_error(x)
#define warn_print2(x,l) rb_write_error2((x),(l))
-#define warn_print_str(x) rb_write_error_str(x)
static void
error_pos(void)
@@ -56,22 +55,9 @@ rb_get_backtrace(VALUE info)
return get_backtrace(info);
}
-VALUE rb_exc_set_backtrace(VALUE exc, VALUE bt);
-
static void
set_backtrace(VALUE info, VALUE bt)
{
- ID set_backtrace = rb_intern("set_backtrace");
-
- if (rb_backtrace_p(bt)) {
- if (rb_method_basic_definition_p(CLASS_OF(info), set_backtrace)) {
- rb_exc_set_backtrace(info, bt);
- return;
- }
- else {
- bt = rb_backtrace_to_str_ary(bt);
- }
- }
rb_funcall(info, rb_intern("set_backtrace"), 1, bt);
}
@@ -90,14 +76,14 @@ error_print(void)
return;
rb_thread_raised_clear(th);
- TH_PUSH_TAG(th);
- if (TH_EXEC_TAG() == 0) {
+ PUSH_TAG();
+ if (EXEC_TAG() == 0) {
errat = get_backtrace(errinfo);
}
else {
errat = Qnil;
}
- if (TH_EXEC_TAG())
+ if (EXEC_TAG())
goto error;
if (NIL_P(errat)) {
const char *file = rb_sourcefile();
@@ -118,12 +104,12 @@ error_print(void)
if (NIL_P(mesg))
error_pos();
else {
- warn_print_str(mesg);
+ warn_print2(RSTRING_PTR(mesg), RSTRING_LEN(mesg));
}
}
eclass = CLASS_OF(errinfo);
- if (TH_EXEC_TAG() == 0) {
+ if (EXEC_TAG() == 0) {
e = rb_funcall(errinfo, rb_intern("message"), 0, 0);
StringValue(e);
einfo = RSTRING_PTR(e);
@@ -133,7 +119,7 @@ error_print(void)
einfo = "";
elen = 0;
}
- if (TH_EXEC_TAG())
+ if (EXEC_TAG())
goto error;
if (eclass == rb_eRuntimeError && elen == 0) {
warn_print(": unhandled exception\n");
@@ -144,7 +130,7 @@ error_print(void)
epath = rb_class_name(eclass);
if (elen == 0) {
warn_print(": ");
- warn_print_str(epath);
+ warn_print2(RSTRING_PTR(epath), RSTRING_LEN(epath));
warn_print("\n");
}
else {
@@ -161,7 +147,7 @@ error_print(void)
warn_print2(einfo, len);
if (epath) {
warn_print(" (");
- warn_print_str(epath);
+ warn_print2(RSTRING_PTR(epath), RSTRING_LEN(epath));
warn_print(")\n");
}
if (tail) {
@@ -182,8 +168,8 @@ error_print(void)
#define TRACE_TAIL 5
for (i = 1; i < len; i++) {
- if (RB_TYPE_P(ptr[i], T_STRING)) {
- warn_printf("\tfrom %"PRIsVALUE"\n", ptr[i]);
+ if (TYPE(ptr[i]) == T_STRING) {
+ warn_printf("\tfrom %s\n", RSTRING_PTR(ptr[i]));
}
if (skip && i == TRACE_HEAD && len > TRACE_MAX) {
warn_printf("\t ... %ld levels...\n",
@@ -193,7 +179,7 @@ error_print(void)
}
}
error:
- TH_POP_TAG();
+ POP_TAG();
rb_thread_raised_set(th, raised_flag);
}
@@ -214,19 +200,10 @@ rb_print_undef(VALUE klass, ID id, int scope)
case NOEX_PRIVATE: v = " private"; break;
case NOEX_PROTECTED: v = " protected"; break;
}
- rb_name_error(id, "undefined%s method `%"PRIsVALUE"' for %s `%"PRIsVALUE"'", v,
- QUOTE_ID(id),
- (RB_TYPE_P(klass, T_MODULE)) ? "module" : "class",
- rb_class_name(klass));
-}
-
-void
-rb_print_undef_str(VALUE klass, VALUE name)
-{
- rb_name_error_str(name, "undefined method `%"PRIsVALUE"' for %s `%"PRIsVALUE"'",
- QUOTE(name),
- (RB_TYPE_P(klass, T_MODULE)) ? "module" : "class",
- rb_class_name(klass));
+ rb_name_error(id, "undefined%s method `%s' for %s `%s'", v,
+ rb_id2name(id),
+ (TYPE(klass) == T_MODULE) ? "module" : "class",
+ rb_class2name(klass));
}
static int
diff --git a/eval_intern.h b/eval_intern.h
index a47480a953..483e711c34 100644
--- a/eval_intern.h
+++ b/eval_intern.h
@@ -5,7 +5,7 @@
#include "vm_core.h"
#define PASS_PASSED_BLOCK_TH(th) do { \
- (th)->passed_block = rb_vm_control_frame_block_ptr(th->cfp); \
+ (th)->passed_block = GC_GUARDED_PTR_REF((rb_block_t *)(th)->cfp->lfp[0]); \
(th)->cfp->flag |= VM_FRAME_FLAG_PASSED; \
} while (0)
@@ -28,13 +28,30 @@
#include <setjmp.h>
#ifdef __APPLE__
-# ifdef HAVE_CRT_EXTERNS_H
-# include <crt_externs.h>
-# else
-# include "missing/crt_externs.h"
-# endif
+#include <crt_externs.h>
#endif
+/* Make alloca work the best possible way. */
+#ifdef __GNUC__
+# ifndef atarist
+# ifndef alloca
+# define alloca __builtin_alloca
+# endif
+# endif /* atarist */
+#else
+# ifdef HAVE_ALLOCA_H
+# include <alloca.h>
+# else
+# ifdef _AIX
+#pragma alloca
+# else
+# ifndef alloca /* predefined by HP cc +Olibcalls */
+void *alloca();
+# endif
+# endif /* AIX */
+# endif /* HAVE_ALLOCA_H */
+#endif /* __GNUC__ */
+
#ifndef HAVE_STRING_H
char *strrchr(const char *, const char);
#endif
@@ -83,37 +100,9 @@ extern int select_large_fdset(int, fd_set *, fd_set *, fd_set *, struct timeval
#include <sys/stat.h>
-#ifdef _MSC_VER
-#define SAVE_ROOT_JMPBUF_BEFORE_STMT \
- __try {
-#define SAVE_ROOT_JMPBUF_AFTER_STMT \
- } \
- __except (GetExceptionCode() == EXCEPTION_STACK_OVERFLOW ? \
- (rb_thread_raised_set(GET_THREAD(), RAISED_STACKOVERFLOW), \
- raise(SIGSEGV), \
- EXCEPTION_EXECUTE_HANDLER) : \
- EXCEPTION_CONTINUE_SEARCH) { \
- /* never reaches here */ \
- }
-#elif defined(__MINGW32__)
-LONG WINAPI rb_w32_stack_overflow_handler(struct _EXCEPTION_POINTERS *);
-#define SAVE_ROOT_JMPBUF_BEFORE_STMT \
- do { \
- PVOID _handler = AddVectoredExceptionHandler(1, rb_w32_stack_overflow_handler);
-
-#define SAVE_ROOT_JMPBUF_AFTER_STMT \
- RemoveVectoredExceptionHandler(_handler); \
- } while (0);
-#else
-#define SAVE_ROOT_JMPBUF_BEFORE_STMT
-#define SAVE_ROOT_JMPBUF_AFTER_STMT
-#endif
-
#define SAVE_ROOT_JMPBUF(th, stmt) do \
if (ruby_setjmp((th)->root_jmpbuf) == 0) { \
- SAVE_ROOT_JMPBUF_BEFORE_STMT \
stmt; \
- SAVE_ROOT_JMPBUF_AFTER_STMT \
} \
else { \
rb_fiber_start(); \
@@ -185,6 +174,12 @@ enum ruby_tag_type {
#define SCOPE_CHECK(f) (rb_vm_cref()->nd_visi == (f))
#define SCOPE_SET(f) (rb_vm_cref()->nd_visi = (f))
+#define CHECK_STACK_OVERFLOW(cfp, margin) do \
+ if ((VALUE *)((char *)(((VALUE *)(cfp)->sp) + (margin)) + sizeof(rb_control_frame_t)) >= ((VALUE *)(cfp))) { \
+ rb_exc_raise(sysstack_error); \
+ } \
+while (0)
+
void rb_thread_cleanup(void);
void rb_thread_wait_other_threads(void);
@@ -203,14 +198,11 @@ int rb_threadptr_reset_raised(rb_thread_t *th);
VALUE rb_f_eval(int argc, VALUE *argv, VALUE self);
VALUE rb_make_exception(int argc, VALUE *argv);
-NORETURN(void rb_method_name_error(VALUE, VALUE));
-
NORETURN(void rb_fiber_start(void));
NORETURN(void rb_print_undef(VALUE, ID, int));
-NORETURN(void rb_print_undef_str(VALUE, VALUE));
NORETURN(void rb_vm_localjump_error(const char *,VALUE, int));
-NORETURN(void rb_vm_jump_tag_but_local_jump(int));
+NORETURN(void rb_vm_jump_tag_but_local_jump(int, VALUE));
NORETURN(void rb_raise_method_missing(rb_thread_t *th, int argc, VALUE *argv,
VALUE obj, int call_status));
@@ -221,6 +213,7 @@ void rb_vm_set_progname(VALUE filename);
void rb_thread_terminate_all(void);
VALUE rb_vm_top_self();
VALUE rb_vm_cbase(void);
+void rb_trap_restore_mask(void);
#ifndef CharNext /* defined as CharNext[AW] on Windows. */
#define CharNext(p) ((p) + mblen((p), RUBY_MBCHAR_MAXSIZE))
diff --git a/eval_jump.c b/eval_jump.c
index 24bf2a2286..a8f04808ca 100644
--- a/eval_jump.c
+++ b/eval_jump.c
@@ -96,19 +96,13 @@ rb_mark_end_proc(void)
void
rb_exec_end_proc(void)
{
- struct end_proc_data volatile endproc;
- struct end_proc_data volatile *link;
+ struct end_proc_data *volatile link;
int status;
volatile int safe = rb_safe_level();
- rb_thread_t *th = GET_THREAD();
- volatile VALUE errinfo = th->errinfo;
while (ephemeral_end_procs) {
link = ephemeral_end_procs;
ephemeral_end_procs = link->next;
- endproc = *link;
- xfree((void *)link);
- link = &endproc;
PUSH_TAG();
if ((status = EXEC_TAG()) == 0) {
@@ -118,16 +112,13 @@ rb_exec_end_proc(void)
POP_TAG();
if (status) {
error_handle(status);
- if (!NIL_P(th->errinfo)) errinfo = th->errinfo;
}
+ xfree(link);
}
while (end_procs) {
link = end_procs;
end_procs = link->next;
- endproc = *link;
- xfree((void *)link);
- link = &endproc;
PUSH_TAG();
if ((status = EXEC_TAG()) == 0) {
@@ -137,12 +128,10 @@ rb_exec_end_proc(void)
POP_TAG();
if (status) {
error_handle(status);
- if (!NIL_P(th->errinfo)) errinfo = th->errinfo;
}
+ xfree(link);
}
-
rb_set_safe_level_force(safe);
- th->errinfo = errinfo;
}
void
diff --git a/ext/-test-/bug-5832/bug.c b/ext/-test-/bug-5832/bug.c
deleted file mode 100644
index 67be5844b6..0000000000
--- a/ext/-test-/bug-5832/bug.c
+++ /dev/null
@@ -1,14 +0,0 @@
-#include <ruby.h>
-
-static VALUE
-bug_funcall_callback(VALUE self, VALUE obj)
-{
- return rb_funcall(obj, rb_intern("callback"), 0);
-}
-
-void
-Init_bug(void)
-{
- VALUE mBug = rb_define_module("Bug");
- rb_define_module_function(mBug, "funcall_callback", bug_funcall_callback, 1);
-}
diff --git a/ext/-test-/bug-5832/extconf.rb b/ext/-test-/bug-5832/extconf.rb
deleted file mode 100644
index 55a4b7d93f..0000000000
--- a/ext/-test-/bug-5832/extconf.rb
+++ /dev/null
@@ -1 +0,0 @@
-create_makefile("-test-/bug-5832/bug")
diff --git a/ext/-test-/debug/extconf.rb b/ext/-test-/debug/extconf.rb
deleted file mode 100644
index 8f7922e1a6..0000000000
--- a/ext/-test-/debug/extconf.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-$srcs = Dir[File.join($srcdir, "*.{#{SRC_EXT.join(%q{,})}}")]
-inits = $srcs.map {|s| File.basename(s, ".*")}
-inits.delete("init")
-inits.map! {|s|"X(#{s})"}
-$defs << "-DTEST_INIT_FUNCS(X)=\"#{inits.join(' ')}\""
-create_makefile("-test-/debug")
diff --git a/ext/-test-/debug/init.c b/ext/-test-/debug/init.c
deleted file mode 100644
index fe3979cbc5..0000000000
--- a/ext/-test-/debug/init.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "ruby.h"
-
-#define init(n) {void Init_##n(VALUE klass); Init_##n(klass);}
-
-void
-Init_debug(void)
-{
- VALUE mBug = rb_define_module("Bug");
- VALUE klass = rb_define_module_under(mBug, "Debug");
- TEST_INIT_FUNCS(init);
-}
diff --git a/ext/-test-/debug/inspector.c b/ext/-test-/debug/inspector.c
deleted file mode 100644
index f0c58e59f9..0000000000
--- a/ext/-test-/debug/inspector.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "ruby/ruby.h"
-#include "ruby/debug.h"
-
-static VALUE
-callback(const rb_debug_inspector_t *dbg_context, void *data)
-{
- VALUE locs = rb_debug_inspector_backtrace_locations(dbg_context);
- long i, len = RARRAY_LEN(locs);
- VALUE binds = rb_ary_new();
- for (i = 0; i < len; ++i) {
- VALUE entry = rb_ary_new();
- rb_ary_push(binds, entry);
- rb_ary_push(entry, rb_debug_inspector_frame_self_get(dbg_context, i));
- rb_ary_push(entry, rb_debug_inspector_frame_binding_get(dbg_context, i));
- rb_ary_push(entry, rb_debug_inspector_frame_class_get(dbg_context, i));
- rb_ary_push(entry, rb_debug_inspector_frame_iseq_get(dbg_context, i));
- rb_ary_push(entry, rb_ary_entry(locs, i));
- }
- return binds;
-}
-
-static VALUE
-debug_inspector(VALUE self)
-{
- return rb_debug_inspector_open(callback, NULL);
-}
-
-void
-Init_inspector(VALUE klass)
-{
- rb_define_module_function(klass, "inspector", debug_inspector, 0);
-}
diff --git a/ext/-test-/exception/enc_raise.c b/ext/-test-/exception/enc_raise.c
deleted file mode 100644
index dc8a42cf3f..0000000000
--- a/ext/-test-/exception/enc_raise.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#include <ruby.h>
-#include <ruby/encoding.h>
-
-static VALUE
-enc_raise(VALUE exc, VALUE encoding, VALUE mesg)
-{
- rb_enc_raise(rb_to_encoding(encoding), exc, "%s", StringValueCStr(mesg));
- UNREACHABLE;
-}
-
-void
-Init_enc_raise(VALUE klass)
-{
- rb_define_module_function(klass, "enc_raise", enc_raise, 2);
-}
diff --git a/ext/-test-/exception/ensured.c b/ext/-test-/exception/ensured.c
deleted file mode 100644
index 365e1f4f79..0000000000
--- a/ext/-test-/exception/ensured.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <ruby.h>
-
-static VALUE
-begin(VALUE object)
-{
- return rb_funcall(object, rb_intern("try_method"), 0);
-}
-
-static VALUE
-ensure(VALUE object)
-{
- return rb_funcall(object, rb_intern("ensured_method"), 0);
-}
-
-static VALUE
-ensured(VALUE module, VALUE object)
-{
- return rb_ensure(begin, object, ensure, object);
-}
-
-void
-Init_ensured(VALUE klass)
-{
- rb_define_module_function(klass, "ensured", ensured, 1);
-}
diff --git a/ext/-test-/exception/extconf.rb b/ext/-test-/exception/extconf.rb
deleted file mode 100644
index 0faf6d53ed..0000000000
--- a/ext/-test-/exception/extconf.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-$srcs = Dir[File.join($srcdir, "*.{#{SRC_EXT.join(%q{,})}}")]
-inits = $srcs.map {|s| File.basename(s, ".*")}
-inits.delete("init")
-inits.map! {|s|"X(#{s})"}
-$defs << "-DTEST_INIT_FUNCS(X)=\"#{inits.join(' ')}\""
-create_makefile("-test-/exception")
diff --git a/ext/-test-/exception/init.c b/ext/-test-/exception/init.c
deleted file mode 100644
index 853bb68f79..0000000000
--- a/ext/-test-/exception/init.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "ruby.h"
-
-#define init(n) {void Init_##n(VALUE klass); Init_##n(klass);}
-
-void
-Init_exception(void)
-{
- VALUE mBug = rb_define_module("Bug");
- VALUE klass = rb_define_class_under(mBug, "Exception", rb_eStandardError);
- TEST_INIT_FUNCS(init);
-}
diff --git a/ext/-test-/fatal/extconf.rb b/ext/-test-/fatal/extconf.rb
deleted file mode 100644
index e0cfeb2095..0000000000
--- a/ext/-test-/fatal/extconf.rb
+++ /dev/null
@@ -1 +0,0 @@
-create_makefile("-test-/fatal/rb_fatal")
diff --git a/ext/-test-/fatal/rb_fatal.c b/ext/-test-/fatal/rb_fatal.c
deleted file mode 100644
index 71aef4658a..0000000000
--- a/ext/-test-/fatal/rb_fatal.c
+++ /dev/null
@@ -1,19 +0,0 @@
-#include <ruby.h>
-
-static VALUE
-ruby_fatal(VALUE obj, VALUE msg)
-{
- const char *cmsg = NULL;
-
- (void)obj;
-
- cmsg = RSTRING_PTR(msg);
- rb_fatal("%s", cmsg);
- return 0; /* never reached */
-}
-
-void
-Init_rb_fatal(void)
-{
- rb_define_method(rb_mKernel, "rb_fatal", ruby_fatal, 1);
-}
diff --git a/ext/-test-/iter/break.c b/ext/-test-/iter/break.c
deleted file mode 100644
index 56ba7e7ffd..0000000000
--- a/ext/-test-/iter/break.c
+++ /dev/null
@@ -1,25 +0,0 @@
-#include <ruby.h>
-
-static VALUE
-iter_break(VALUE self)
-{
- rb_iter_break();
-
- UNREACHABLE;
-}
-
-static VALUE
-iter_break_value(VALUE self, VALUE val)
-{
- rb_iter_break_value(val);
-
- UNREACHABLE;
-}
-
-void
-Init_break(void)
-{
- VALUE breakable = rb_define_module_under(rb_define_module("Bug"), "Breakable");
- rb_define_module_function(breakable, "iter_break", iter_break, 0);
- rb_define_module_function(breakable, "iter_break_value", iter_break_value, 1);
-}
diff --git a/ext/-test-/iter/extconf.rb b/ext/-test-/iter/extconf.rb
deleted file mode 100644
index 695b5e9f6d..0000000000
--- a/ext/-test-/iter/extconf.rb
+++ /dev/null
@@ -1 +0,0 @@
-create_makefile("-test-/iter/break")
diff --git a/ext/-test-/marshal/compat/extconf.rb b/ext/-test-/marshal/compat/extconf.rb
deleted file mode 100644
index bb11ebfb8c..0000000000
--- a/ext/-test-/marshal/compat/extconf.rb
+++ /dev/null
@@ -1 +0,0 @@
-create_makefile("-test-/marshal/compat")
diff --git a/ext/-test-/marshal/compat/usrcompat.c b/ext/-test-/marshal/compat/usrcompat.c
deleted file mode 100644
index f812df5631..0000000000
--- a/ext/-test-/marshal/compat/usrcompat.c
+++ /dev/null
@@ -1,32 +0,0 @@
-#include <ruby.h>
-
-static VALUE
-usr_dumper(VALUE self)
-{
- return self;
-}
-
-static VALUE
-usr_loader(VALUE self, VALUE m)
-{
- VALUE val = rb_ivar_get(m, rb_intern("@value"));
- *(int *)DATA_PTR(self) = NUM2INT(val);
- return self;
-}
-
-static VALUE
-compat_mload(VALUE self, VALUE data)
-{
- rb_ivar_set(self, rb_intern("@value"), data);
- return self;
-}
-
-void
-Init_compat(void)
-{
- VALUE newclass = rb_path2class("Bug::Marshal::UsrMarshal");
- VALUE oldclass = rb_define_class_under(newclass, "compat", rb_cObject);
-
- rb_define_method(oldclass, "marshal_load", compat_mload, 1);
- rb_marshal_define_compat(newclass, oldclass, usr_dumper, usr_loader);
-}
diff --git a/ext/-test-/marshal/usr/extconf.rb b/ext/-test-/marshal/usr/extconf.rb
deleted file mode 100644
index c662b23dd5..0000000000
--- a/ext/-test-/marshal/usr/extconf.rb
+++ /dev/null
@@ -1 +0,0 @@
-create_makefile("-test-/marshal/usr")
diff --git a/ext/-test-/marshal/usr/usrmarshal.c b/ext/-test-/marshal/usr/usrmarshal.c
deleted file mode 100644
index b30bd52c13..0000000000
--- a/ext/-test-/marshal/usr/usrmarshal.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include <ruby.h>
-
-static VALUE
-usr_alloc(VALUE klass)
-{
- int *p;
- return Data_Make_Struct(klass, int, 0, RUBY_DEFAULT_FREE, p);
-}
-
-static VALUE
-usr_init(VALUE self, VALUE val)
-{
- *(int *)DATA_PTR(self) = NUM2INT(val);
- return self;
-}
-
-static VALUE
-usr_value(VALUE self)
-{
- int val = *(int *)DATA_PTR(self);
- return INT2NUM(val);
-}
-
-void
-Init_usr(void)
-{
- VALUE mMarshal = rb_define_module_under(rb_define_module("Bug"), "Marshal");
- VALUE newclass = rb_define_class_under(mMarshal, "UsrMarshal", rb_cObject);
-
- rb_define_alloc_func(newclass, usr_alloc);
- rb_define_method(newclass, "initialize", usr_init, 1);
- rb_define_method(newclass, "value", usr_value, 0);
- rb_define_method(newclass, "marshal_load", usr_init, 1);
- rb_define_method(newclass, "marshal_dump", usr_value, 0);
-}
diff --git a/ext/-test-/method/arity.c b/ext/-test-/method/arity.c
deleted file mode 100644
index 239b9f7f10..0000000000
--- a/ext/-test-/method/arity.c
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "ruby.h"
-
-static VALUE
-obj_method_arity(VALUE self, VALUE obj, VALUE mid)
-{
- int arity = rb_obj_method_arity(obj, rb_check_id(&mid));
- return INT2FIX(arity);
-}
-
-static VALUE
-mod_method_arity(VALUE self, VALUE mod, VALUE mid)
-{
- int arity = rb_mod_method_arity(mod, rb_check_id(&mid));
- return INT2FIX(arity);
-}
-
-void
-Init_arity(VALUE mod)
-{
- rb_define_module_function(mod, "obj_method_arity", obj_method_arity, 2);
- rb_define_module_function(mod, "mod_method_arity", mod_method_arity, 2);
-}
diff --git a/ext/-test-/method/extconf.rb b/ext/-test-/method/extconf.rb
deleted file mode 100644
index 658b7af1f1..0000000000
--- a/ext/-test-/method/extconf.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-$srcs = Dir[File.join($srcdir, "*.{#{SRC_EXT.join(%q{,})}}")]
-inits = $srcs.map {|s| File.basename(s, ".*")}
-inits.delete("init")
-inits.map! {|s|"X(#{s})"}
-$defs << "-DTEST_INIT_FUNCS(X)=\"#{inits.join(' ')}\""
-create_makefile("-test-/method")
diff --git a/ext/-test-/method/init.c b/ext/-test-/method/init.c
deleted file mode 100644
index cea2346240..0000000000
--- a/ext/-test-/method/init.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "ruby.h"
-
-#define init(n) {void Init_##n(VALUE klass); Init_##n(klass);}
-
-void
-Init_method(void)
-{
- VALUE mBug = rb_define_module("Bug");
- VALUE klass = rb_define_module_under(mBug, "Method");
- TEST_INIT_FUNCS(init);
-}
diff --git a/ext/-test-/num2int/depend b/ext/-test-/num2int/depend
deleted file mode 100644
index 7a85cdb6c0..0000000000
--- a/ext/-test-/num2int/depend
+++ /dev/null
@@ -1 +0,0 @@
-num2int.o: $(top_srcdir)/numeric.c $(hdrdir)/ruby/ruby.h
diff --git a/ext/-test-/num2int/extconf.rb b/ext/-test-/num2int/extconf.rb
deleted file mode 100644
index 2bc820e480..0000000000
--- a/ext/-test-/num2int/extconf.rb
+++ /dev/null
@@ -1 +0,0 @@
-create_makefile("-test-/num2int/num2int")
diff --git a/ext/-test-/num2int/num2int.c b/ext/-test-/num2int/num2int.c
deleted file mode 100644
index fb1ea9678d..0000000000
--- a/ext/-test-/num2int/num2int.c
+++ /dev/null
@@ -1,120 +0,0 @@
-#include <ruby.h>
-
-static VALUE
-print_num2short(VALUE obj, VALUE num)
-{
- char buf[128];
- VALUE str;
-
- sprintf(buf, "%d", NUM2SHORT(num));
- str = rb_str_new_cstr(buf);
- rb_io_write(rb_stdout, str);
- return Qnil;
-}
-
-static VALUE
-print_num2ushort(VALUE obj, VALUE num)
-{
- char buf[128];
- VALUE str;
-
- sprintf(buf, "%u", NUM2USHORT(num));
- str = rb_str_new_cstr(buf);
- rb_io_write(rb_stdout, str);
- return Qnil;
-}
-
-static VALUE
-print_num2int(VALUE obj, VALUE num)
-{
- char buf[128];
- VALUE str;
-
- sprintf(buf, "%d", NUM2INT(num));
- str = rb_str_new_cstr(buf);
- rb_io_write(rb_stdout, str);
- return Qnil;
-}
-
-static VALUE
-print_num2uint(VALUE obj, VALUE num)
-{
- char buf[128];
- VALUE str;
-
- sprintf(buf, "%u", NUM2UINT(num));
- str = rb_str_new_cstr(buf);
- rb_io_write(rb_stdout, str);
- return Qnil;
-}
-
-static VALUE
-print_num2long(VALUE obj, VALUE num)
-{
- char buf[128];
- VALUE str;
-
- sprintf(buf, "%ld", NUM2LONG(num));
- str = rb_str_new_cstr(buf);
- rb_io_write(rb_stdout, str);
- return Qnil;
-}
-
-static VALUE
-print_num2ulong(VALUE obj, VALUE num)
-{
- char buf[128];
- VALUE str;
-
- sprintf(buf, "%lu", NUM2ULONG(num));
- str = rb_str_new_cstr(buf);
- rb_io_write(rb_stdout, str);
- return Qnil;
-}
-
-#ifdef HAVE_LONG_LONG
-static VALUE
-print_num2ll(VALUE obj, VALUE num)
-{
- char buf[128];
- VALUE str;
-
- sprintf(buf, "%"PRI_LL_PREFIX"d", NUM2LL(num));
- str = rb_str_new_cstr(buf);
- rb_io_write(rb_stdout, str);
- return Qnil;
-}
-
-static VALUE
-print_num2ull(VALUE obj, VALUE num)
-{
- char buf[128];
- VALUE str;
-
- sprintf(buf, "%"PRI_LL_PREFIX"u", NUM2ULL(num));
- str = rb_str_new_cstr(buf);
- rb_io_write(rb_stdout, str);
- return Qnil;
-}
-#endif
-
-void
-Init_num2int(void)
-{
- VALUE cNum2int = rb_path2class("TestNum2int::Num2int");
-
- rb_define_singleton_method(cNum2int, "print_num2short", print_num2short, 1);
- rb_define_singleton_method(cNum2int, "print_num2ushort", print_num2ushort, 1);
-
- rb_define_singleton_method(cNum2int, "print_num2int", print_num2int, 1);
- rb_define_singleton_method(cNum2int, "print_num2uint", print_num2uint, 1);
-
- rb_define_singleton_method(cNum2int, "print_num2long", print_num2long, 1);
- rb_define_singleton_method(cNum2int, "print_num2ulong", print_num2ulong, 1);
-
-#ifdef HAVE_LONG_LONG
- rb_define_singleton_method(cNum2int, "print_num2ll", print_num2ll, 1);
- rb_define_singleton_method(cNum2int, "print_num2ull", print_num2ull, 1);
-#endif
-}
-
diff --git a/ext/-test-/old_thread_select/extconf.rb b/ext/-test-/old_thread_select/extconf.rb
index 730d9ec901..8b410218fa 100644
--- a/ext/-test-/old_thread_select/extconf.rb
+++ b/ext/-test-/old_thread_select/extconf.rb
@@ -1,4 +1 @@
-$warnflags = "-Wno-deprecated-declarations"
-$warnflags = "" unless try_compile("", $warnflags)
-
create_makefile("-test-/old_thread_select/old_thread_select")
diff --git a/ext/-test-/path_to_class/extconf.rb b/ext/-test-/path_to_class/extconf.rb
deleted file mode 100644
index e1072b1443..0000000000
--- a/ext/-test-/path_to_class/extconf.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-$srcs = Dir[File.join($srcdir, "*.{#{SRC_EXT.join(%q{,})}}")]
-inits = $srcs.map {|s| File.basename(s, ".*")}
-inits.delete("init")
-inits.map! {|s|"X(#{s})"}
-$defs << "-DTEST_INIT_FUNCS(X)=\"#{inits.join(' ')}\""
-create_makefile("-test-/path_to_class/path_to_class")
diff --git a/ext/-test-/path_to_class/path_to_class.c b/ext/-test-/path_to_class/path_to_class.c
deleted file mode 100644
index c8c2831b09..0000000000
--- a/ext/-test-/path_to_class/path_to_class.c
+++ /dev/null
@@ -1,15 +0,0 @@
-#include "ruby.h"
-
-static VALUE
-path_to_class(VALUE klass, VALUE path)
-{
- return rb_path_to_class(path);
-}
-
-void
-Init_path_to_class(void)
-{
- VALUE klass = rb_path2class("Test_PathToClass");
-
- rb_define_singleton_method(klass, "path_to_class", path_to_class, 1);
-}
diff --git a/ext/-test-/printf/extconf.rb b/ext/-test-/printf/extconf.rb
deleted file mode 100644
index 7b96da0c85..0000000000
--- a/ext/-test-/printf/extconf.rb
+++ /dev/null
@@ -1 +0,0 @@
-create_makefile("-test-/printf")
diff --git a/ext/-test-/printf/printf.c b/ext/-test-/printf/printf.c
deleted file mode 100644
index 1eb93566bb..0000000000
--- a/ext/-test-/printf/printf.c
+++ /dev/null
@@ -1,110 +0,0 @@
-#include <ruby.h>
-#include <ruby/encoding.h>
-
-static VALUE
-printf_test_i(VALUE self, VALUE obj)
-{
- char buf[256];
- snprintf(buf, sizeof(buf), "<%"PRIsVALUE">", obj);
- return rb_usascii_str_new2(buf);
-}
-
-static VALUE
-printf_test_s(VALUE self, VALUE obj)
-{
- return rb_enc_sprintf(rb_usascii_encoding(), "<%"PRIsVALUE">", obj);
-}
-
-static VALUE
-printf_test_v(VALUE self, VALUE obj)
-{
- return rb_enc_sprintf(rb_usascii_encoding(), "{%+"PRIsVALUE"}", obj);
-}
-
-static VALUE
-printf_test_q(VALUE self, VALUE obj)
-{
- return rb_enc_sprintf(rb_usascii_encoding(), "[% "PRIsVALUE"]", obj);
-}
-
-static char *
-utoa(char *p, char *e, unsigned int x)
-{
- char *e0 = e;
- if (e <= p) return p;
- do {
- *--e = x % 10 + '0';
- } while ((x /= 10) != 0 && e > p);
- memmove(p, e, e0 - e);
- return p + (e0 - e);
-}
-
-static VALUE
-printf_test_call(int argc, VALUE *argv, VALUE self)
-{
- VALUE opt, type, num, result;
- char format[sizeof(int) * 6 + 8], *p = format, cnv;
- int n;
- const char *s;
-
- rb_scan_args(argc, argv, "2:", &type, &num, &opt);
- Check_Type(type, T_STRING);
- if (RSTRING_LEN(type) != 1) rb_raise(rb_eArgError, "wrong length(%ld)", RSTRING_LEN(type));
- switch (cnv = RSTRING_PTR(type)[0]) {
- case 'd': case 'x': case 'o': case 'X':
- n = NUM2INT(num);
- break;
- case 's':
- s = StringValueCStr(num);
- break;
- default: rb_raise(rb_eArgError, "wrong conversion(%c)", cnv);
- }
- *p++ = '%';
- if (!NIL_P(opt)) {
- VALUE v;
- Check_Type(opt, T_HASH);
- if (RTEST(rb_hash_aref(opt, ID2SYM(rb_intern("space"))))) {
- *p++ = ' ';
- }
- if (RTEST(rb_hash_aref(opt, ID2SYM(rb_intern("hash"))))) {
- *p++ = '#';
- }
- if (RTEST(rb_hash_aref(opt, ID2SYM(rb_intern("plus"))))) {
- *p++ = '+';
- }
- if (RTEST(rb_hash_aref(opt, ID2SYM(rb_intern("minus"))))) {
- *p++ = '-';
- }
- if (RTEST(rb_hash_aref(opt, ID2SYM(rb_intern("zero"))))) {
- *p++ = '0';
- }
- if (!NIL_P(v = rb_hash_aref(opt, ID2SYM(rb_intern("width"))))) {
- p = utoa(p, format + sizeof(format), NUM2UINT(v));
- }
- if (!NIL_P(v = rb_hash_aref(opt, ID2SYM(rb_intern("prec"))))) {
- *p++ = '.';
- if (FIXNUM_P(v))
- p = utoa(p, format + sizeof(format), NUM2UINT(v));
- }
- }
- *p++ = cnv;
- *p++ = '\0';
- if (cnv == 's') {
- result = rb_enc_sprintf(rb_usascii_encoding(), format, s);
- }
- else {
- result = rb_enc_sprintf(rb_usascii_encoding(), format, n);
- }
- return rb_assoc_new(result, rb_usascii_str_new_cstr(format));
-}
-
-void
-Init_printf(void)
-{
- VALUE m = rb_define_module_under(rb_define_module("Bug"), "Printf");
- rb_define_singleton_method(m, "i", printf_test_i, 1);
- rb_define_singleton_method(m, "s", printf_test_s, 1);
- rb_define_singleton_method(m, "v", printf_test_v, 1);
- rb_define_singleton_method(m, "call", printf_test_call, -1);
- rb_define_singleton_method(m, "q", printf_test_q, 1);
-}
diff --git a/ext/-test-/st/numhash/numhash.c b/ext/-test-/st/numhash/numhash.c
index d4dbd1a0ce..e186cd43d9 100644
--- a/ext/-test-/st/numhash/numhash.c
+++ b/ext/-test-/st/numhash/numhash.c
@@ -42,9 +42,10 @@ numhash_aset(VALUE self, VALUE key, VALUE data)
}
static int
-numhash_i(st_data_t key, st_data_t value, st_data_t arg)
+numhash_i(st_data_t key, st_data_t value, st_data_t arg, int error)
{
VALUE ret;
+ if (key == 0 && value == 0 && error == 1) rb_raise(rb_eRuntimeError, "numhash modified");
ret = rb_yield_values(3, (VALUE)key, (VALUE)value, (VALUE)arg);
if (ret == Qtrue) return ST_CHECK;
return ST_CONTINUE;
@@ -53,55 +54,7 @@ numhash_i(st_data_t key, st_data_t value, st_data_t arg)
static VALUE
numhash_each(VALUE self)
{
- st_table *table = DATA_PTR(self);
- st_data_t data = (st_data_t)self;
- return st_foreach_check(table, numhash_i, data, data) ? Qtrue : Qfalse;
-}
-
-static int
-update_func(st_data_t *key, st_data_t *value, st_data_t arg, int existing)
-{
- VALUE ret = rb_yield_values(existing ? 2 : 1, (VALUE)*key, (VALUE)*value);
- switch (ret) {
- case Qfalse:
- return ST_STOP;
- case Qnil:
- return ST_DELETE;
- default:
- *value = ret;
- return ST_CONTINUE;
- }
-}
-
-static VALUE
-numhash_update(VALUE self, VALUE key)
-{
- if (st_update((st_table *)DATA_PTR(self), (st_data_t)key, update_func, 0))
- return Qtrue;
- else
- return Qfalse;
-}
-
-#if SIZEOF_LONG == SIZEOF_VOIDP
-# define ST2NUM(x) ULONG2NUM(x)
-#elif SIZEOF_LONG_LONG == SIZEOF_VOIDP
-# define ST2NUM(x) ULL2NUM(x)
-#endif
-
-static VALUE
-numhash_size(VALUE self)
-{
- return ST2NUM(((st_table *)DATA_PTR(self))->num_entries);
-}
-
-static VALUE
-numhash_delete_safe(VALUE self, VALUE key)
-{
- st_data_t val, k = (st_data_t)key;
- if (st_delete_safe((st_table *)DATA_PTR(self), &k, &val, (st_data_t)self)) {
- return val;
- }
- return Qnil;
+ return st_foreach((st_table *)DATA_PTR(self), numhash_i, self) ? Qtrue : Qfalse;
}
void
@@ -113,8 +66,4 @@ Init_numhash(void)
rb_define_method(st, "[]", numhash_aref, 1);
rb_define_method(st, "[]=", numhash_aset, 2);
rb_define_method(st, "each", numhash_each, 0);
- rb_define_method(st, "update", numhash_update, 1);
- rb_define_method(st, "size", numhash_size, 0);
- rb_define_method(st, "delete_safe", numhash_delete_safe, 1);
}
-
diff --git a/ext/-test-/st/update/extconf.rb b/ext/-test-/st/update/extconf.rb
deleted file mode 100644
index 96dbae43ab..0000000000
--- a/ext/-test-/st/update/extconf.rb
+++ /dev/null
@@ -1 +0,0 @@
-create_makefile("-test-/st/update")
diff --git a/ext/-test-/st/update/update.c b/ext/-test-/st/update/update.c
deleted file mode 100644
index 979ad3e334..0000000000
--- a/ext/-test-/st/update/update.c
+++ /dev/null
@@ -1,34 +0,0 @@
-#include <ruby.h>
-#include <ruby/st.h>
-
-static int
-update_func(st_data_t *key, st_data_t *value, st_data_t arg, int existing)
-{
- VALUE ret = rb_yield_values(existing ? 2 : 1, (VALUE)*key, (VALUE)*value);
- switch (ret) {
- case Qfalse:
- return ST_STOP;
- case Qnil:
- return ST_DELETE;
- default:
- *value = ret;
- return ST_CONTINUE;
- }
-}
-
-static VALUE
-test_st_update(VALUE self, VALUE key)
-{
- if (st_update(RHASH_TBL(self), (st_data_t)key, update_func, 0))
- return Qtrue;
- else
- return Qfalse;
-}
-
-void
-Init_update(void)
-{
- VALUE st = rb_define_class_under(rb_define_module("Bug"), "StTable", rb_cHash);
- rb_define_method(st, "st_update", test_st_update, 1);
-}
-
diff --git a/ext/-test-/string/coderange.c b/ext/-test-/string/coderange.c
deleted file mode 100644
index 2f1e6a06a8..0000000000
--- a/ext/-test-/string/coderange.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "ruby/ruby.h"
-#include "ruby/encoding.h"
-
-static VALUE sym_7bit, sym_valid, sym_unknown, sym_broken;
-static VALUE
-str_coderange(VALUE str)
-{
- switch (ENC_CODERANGE(str)) {
- case ENC_CODERANGE_7BIT:
- return sym_7bit;
- case ENC_CODERANGE_VALID:
- return sym_valid;
- case ENC_CODERANGE_UNKNOWN:
- return sym_unknown;
- case ENC_CODERANGE_BROKEN:
- return sym_broken;
- }
- rb_bug("wrong condition of coderange");
- UNREACHABLE;
-}
-
-void
-Init_coderange(VALUE klass)
-{
- sym_7bit = ID2SYM(rb_intern("7bit"));
- sym_valid = ID2SYM(rb_intern("valid"));
- sym_unknown = ID2SYM(rb_intern("unknown"));
- sym_broken = ID2SYM(rb_intern("broken"));
- rb_define_method(klass, "coderange", str_coderange, 0);
-}
diff --git a/ext/-test-/string/enc_str_buf_cat.c b/ext/-test-/string/enc_str_buf_cat.c
deleted file mode 100644
index 5d583c65dc..0000000000
--- a/ext/-test-/string/enc_str_buf_cat.c
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "ruby/ruby.h"
-#include "ruby/encoding.h"
-
-static VALUE
-enc_str_buf_cat(VALUE str, VALUE str2)
-{
- return rb_enc_str_buf_cat(str, RSTRING_PTR(str2), RSTRING_LEN(str2), rb_enc_get(str2));
-}
-
-void
-Init_enc_str_buf_cat(VALUE klass)
-{
- rb_define_method(klass, "enc_str_buf_cat", enc_str_buf_cat, 1);
-}
diff --git a/ext/-test-/string/qsort.c b/ext/-test-/string/qsort.c
deleted file mode 100644
index 0b34936d38..0000000000
--- a/ext/-test-/string/qsort.c
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "ruby.h"
-#include "ruby/util.h"
-#include "ruby/encoding.h"
-
-struct sort_data {
- rb_encoding *enc;
- long elsize;
-};
-
-static int
-cmp_1(const void *ap, const void *bp, void *dummy)
-{
- struct sort_data *d = dummy;
- VALUE a = rb_enc_str_new(ap, d->elsize, d->enc);
- VALUE b = rb_enc_str_new(bp, d->elsize, d->enc);
- VALUE retval = rb_yield_values(2, a, b);
- return rb_cmpint(retval, a, b);
-}
-
-static int
-cmp_2(const void *ap, const void *bp, void *dummy)
-{
- int a = *(const unsigned char *)ap;
- int b = *(const unsigned char *)bp;
- return a - b;
-}
-
-static VALUE
-bug_str_qsort_bang(int argc, VALUE *argv, VALUE str)
-{
- VALUE beg, len, size;
- long l, b = 0, n, s = 1;
- struct sort_data d;
-
- rb_scan_args(argc, argv, "03", &beg, &len, &size);
- l = RSTRING_LEN(str);
- if (!NIL_P(beg) && (b = NUM2INT(beg)) < 0 && (b += l) < 0) {
- rb_raise(rb_eArgError, "out of bounds");
- }
- if (!NIL_P(size) && (s = NUM2INT(size)) < 0) {
- rb_raise(rb_eArgError, "negative size");
- }
- if (NIL_P(len) ||
- (((n = NUM2INT(len)) < 0) ?
- (rb_raise(rb_eArgError, "negative length"), 0) :
- (b + n * s > l))) {
- n = (l - b) / s;
- }
- rb_str_modify(str);
- d.enc = rb_enc_get(str);
- d.elsize = s;
- ruby_qsort(RSTRING_PTR(str) + b, n, s,
- rb_block_given_p() ? cmp_1 : cmp_2, &d);
- return str;
-}
-
-void
-Init_qsort(VALUE klass)
-{
- rb_define_method(klass, "qsort!", bug_str_qsort_bang, -1);
-}
diff --git a/ext/-test-/struct/extconf.rb b/ext/-test-/struct/extconf.rb
deleted file mode 100644
index 0e4f9551f2..0000000000
--- a/ext/-test-/struct/extconf.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-$INCFLAGS << " -I$(topdir) -I$(top_srcdir)"
-$srcs = Dir[File.join($srcdir, "*.{#{SRC_EXT.join(%q{,})}}")]
-inits = $srcs.map {|s| File.basename(s, ".*")}
-inits.delete("init")
-inits.map! {|s|"X(#{s})"}
-$defs << "-DTEST_INIT_FUNCS(X)=\"#{inits.join(' ')}\""
-create_makefile("-test-/struct")
diff --git a/ext/-test-/struct/init.c b/ext/-test-/struct/init.c
deleted file mode 100644
index 459a939e79..0000000000
--- a/ext/-test-/struct/init.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "ruby.h"
-
-#define init(n) {void Init_##n(VALUE klass); Init_##n(klass);}
-
-void
-Init_struct(void)
-{
- VALUE mBug = rb_define_module("Bug");
- VALUE klass = rb_define_class_under(mBug, "Struct", rb_cStruct);
- TEST_INIT_FUNCS(init);
-}
diff --git a/ext/-test-/struct/member.c b/ext/-test-/struct/member.c
deleted file mode 100644
index 1d404039b4..0000000000
--- a/ext/-test-/struct/member.c
+++ /dev/null
@@ -1,18 +0,0 @@
-#include "ruby.h"
-
-static VALUE
-bug_struct_get(VALUE obj, VALUE name)
-{
- ID id = rb_check_id(&name);
-
- if (!id) {
- rb_name_error_str(name, "`%"PRIsVALUE"' is not a struct member", name);
- }
- return rb_struct_getmember(obj, id);
-}
-
-void
-Init_member(VALUE klass)
-{
- rb_define_method(klass, "get", bug_struct_get, 1);
-}
diff --git a/ext/-test-/symbol/extconf.rb b/ext/-test-/symbol/extconf.rb
deleted file mode 100644
index d093ff682a..0000000000
--- a/ext/-test-/symbol/extconf.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-$srcs = Dir[File.join($srcdir, "*.{#{SRC_EXT.join(%q{,})}}")]
-inits = $srcs.map {|s| File.basename(s, ".*")}
-inits.delete("init")
-inits.map! {|s|"X(#{s})"}
-$defs << "-DTEST_INIT_FUNCS(X)=\"#{inits.join(' ')}\""
-create_makefile("-test-/symbol/symbol")
diff --git a/ext/-test-/symbol/init.c b/ext/-test-/symbol/init.c
deleted file mode 100644
index e740345f2a..0000000000
--- a/ext/-test-/symbol/init.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "ruby.h"
-
-#define init(n) {void Init_##n(VALUE klass); Init_##n(klass);}
-
-void
-Init_symbol(void)
-{
- VALUE mBug = rb_define_module("Bug");
- VALUE klass = rb_define_class_under(mBug, "Symbol", rb_cSymbol);
- TEST_INIT_FUNCS(init);
-}
diff --git a/ext/-test-/symbol/intern.c b/ext/-test-/symbol/intern.c
deleted file mode 100644
index 6ae86a6104..0000000000
--- a/ext/-test-/symbol/intern.c
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "ruby.h"
-
-static VALUE
-bug_sym_interned_p(VALUE self, VALUE name)
-{
- ID id = rb_check_id(&name);
- return id ? Qtrue : Qfalse;
-}
-
-void
-Init_intern(VALUE klass)
-{
- rb_define_singleton_method(klass, "interned?", bug_sym_interned_p, 1);
-}
diff --git a/ext/-test-/symbol/type.c b/ext/-test-/symbol/type.c
deleted file mode 100644
index e0b2fff2f9..0000000000
--- a/ext/-test-/symbol/type.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "ruby.h"
-
-#ifdef HAVE_RB_IS_CONST_NAME
-# define get_symbol_type(type, t, name) do { \
- ID id = rb_check_id(&name); \
- t = (id ? rb_is_##type##_id(id) : rb_is_##type##_name(name)); \
- } while (0)
-#else
-# define get_symbol_type(type, t, name) do { \
- t = rb_is_##type##_id(rb_to_id(name)); \
- } while (0)
-#endif
-
-#define define_symbol_type_p(type) \
-static VALUE \
-bug_sym_##type##_p(VALUE self, VALUE name) \
-{ \
- int t; \
- get_symbol_type(type, t, name); \
- return (t ? Qtrue : Qfalse); \
-}
-
-#define declare_symbol_type_p(type) \
- rb_define_singleton_method(klass, #type"?", bug_sym_##type##_p, 1);
-
-#define FOREACH_ID_TYPES(x) x(const) x(class) x(global) x(instance) x(attrset) x(local) x(junk)
-
-FOREACH_ID_TYPES(define_symbol_type_p)
-
-static VALUE
-bug_sym_attrset(VALUE self, VALUE name)
-{
- ID id = rb_to_id(name);
- id = rb_id_attrset(id);
- return ID2SYM(id);
-}
-
-void
-Init_type(VALUE klass)
-{
- FOREACH_ID_TYPES(declare_symbol_type_p);
- rb_define_singleton_method(klass, "attrset", bug_sym_attrset, 1);
-}
diff --git a/ext/-test-/typeddata/extconf.rb b/ext/-test-/typeddata/extconf.rb
deleted file mode 100644
index 02e3e41c8b..0000000000
--- a/ext/-test-/typeddata/extconf.rb
+++ /dev/null
@@ -1 +0,0 @@
-create_makefile("-test-/typeddata/typeddata")
diff --git a/ext/-test-/typeddata/typeddata.c b/ext/-test-/typeddata/typeddata.c
deleted file mode 100644
index 1c5d677713..0000000000
--- a/ext/-test-/typeddata/typeddata.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include <ruby.h>
-
-static const rb_data_type_t test_data = {
- "typed_data",
-};
-
-static VALUE
-test_check(VALUE self, VALUE obj)
-{
- rb_check_typeddata(obj, &test_data);
- return obj;
-}
-
-void
-Init_typeddata(void)
-{
- VALUE mBug = rb_define_module("Bug");
- VALUE klass = rb_define_class_under(mBug, "TypedData", rb_cData);
- rb_define_singleton_method(klass, "check", test_check, 1);
-}
diff --git a/ext/.document b/ext/.document
index d7f7ff0683..c51b8a7b63 100644
--- a/ext/.document
+++ b/ext/.document
@@ -2,7 +2,6 @@
bigdecimal/bigdecimal.c
bigdecimal/lib
-continuation/continuation.c
coverage/coverage.c
curses/curses.c
date/date_core.c
@@ -22,16 +21,13 @@ dl/lib
dl/win32/lib
etc/etc.c
fcntl/fcntl.c
-fiber/fiber.c
fiddle/closure.c
fiddle/conversions.c
fiddle/fiddle.c
fiddle/function.c
-fiddle/pointer.c
-fiddle/handle.c
fiddle/lib
-fiddle/win32/lib
gdbm/gdbm.c
+iconv/iconv.c
io/console/console.c
io/nonblock/nonblock.c
io/wait/lib
@@ -39,15 +35,12 @@ io/wait/wait.c
json/ext/generator/generator.c
json/ext/parser/parser.c
json/lib
-mathn/complex/complex.c
-mathn/rational/rational.c
nkf/lib
nkf/nkf.c
objspace/objspace.c
openssl/lib
openssl/ossl.c
openssl/ossl_asn1.c
-openssl/ossl_bio.c
openssl/ossl_bn.c
openssl/ossl_cipher.c
openssl/ossl_config.c
@@ -86,7 +79,6 @@ psych/to_ruby.c
psych/yaml_tree.c
pty/lib
pty/pty.c
-racc/cparse/cparse.c
readline/readline.c
ripper/lib
ripper/ripper.c
@@ -95,7 +87,6 @@ socket
stringio/stringio.c
strscan/strscan.c
syslog/syslog.c
-syslog/lib
win32ole/lib
win32ole/win32ole.c
zlib/zlib.c
diff --git a/ext/Setup b/ext/Setup
index 6870035e45..b0f29b9f7b 100644
--- a/ext/Setup
+++ b/ext/Setup
@@ -13,6 +13,7 @@
#etc
#fcntl
#gdbm
+#iconv
#io/wait
#nkf
#openssl
@@ -24,6 +25,7 @@
#socket
#stringio
#strscan
+#syck
#syslog
#tk
#win32ole
diff --git a/ext/Setup.atheos b/ext/Setup.atheos
index c4028ef1f2..6e0b8ae5a6 100644
--- a/ext/Setup.atheos
+++ b/ext/Setup.atheos
@@ -14,6 +14,7 @@ enumerator
etc
fcntl
gdbm
+iconv
io/wait
nkf
#openssl
@@ -25,6 +26,7 @@ sdbm
socket
stringio
strscan
+syck
syslog
#tk
#win32ole
diff --git a/ext/Setup.emx b/ext/Setup.emx
index bf9e2e32f9..fade917e92 100644
--- a/ext/Setup.emx
+++ b/ext/Setup.emx
@@ -14,6 +14,7 @@ enumerator
etc
fcntl
#gdbm
+#iconv
#io/wait
nkf
#openssl
@@ -25,6 +26,7 @@ racc/cparse
socket
stringio
strscan
+#syck
#syslog
#tk
#win32ole
diff --git a/ext/Setup.nacl b/ext/Setup.nacl
deleted file mode 100644
index 3e7f469f92..0000000000
--- a/ext/Setup.nacl
+++ /dev/null
@@ -1,49 +0,0 @@
-# #option nodynamic
-#
-# #Win32API
-# bigdecimal
-# continuation
-# coverage
-# #curses
-# date
-# #dbm
-# digest/bubblebabble
-# digest
-# digest/md5
-# digest/rmd160
-# digest/sha1
-# digest/sha2
-# dl
-# dl/callback
-# #dl/win32
-# etc
-# fcntl
-# fiber
-# #fiddle
-# #gdbm
-# #iconv
-# io/console
-# io/nonblock
-# io/wait
-# #json
-# json/generator
-# json/parser
-# mathn/complex
-# mathn/rational
-# nkf
-# objspace
-# #openssl
-# pathname
-# #psych
-# #pty
-# racc/cparse
-# #readline
-# ripper
-# #sdbm
-# #socket
-# stringio
-# strscan
-# #syslog
-# #tk
-# #tk/tkutil
-# #zlib
diff --git a/ext/Setup.nt b/ext/Setup.nt
index 8aec238152..c8574ba70a 100644
--- a/ext/Setup.nt
+++ b/ext/Setup.nt
@@ -14,6 +14,7 @@ enumerator
etc
fcntl
#gdbm
+#iconv
#io/wait
nkf
#openssl
@@ -25,6 +26,7 @@ sdbm
socket
stringio
strscan
+syck
#syslog
#tk
win32ole
diff --git a/ext/bigdecimal/README b/ext/bigdecimal/README
index 7a4362826c..ae65b014cf 100644
--- a/ext/bigdecimal/README
+++ b/ext/bigdecimal/README
@@ -51,10 +51,10 @@ You can redistribute it and/or modify it under either the terms of the GPL
* The Author
-Feel free to send comments and bug reports to the ruby-core team.
+Feel free to send comments and bug reports to the author. Here is the
+author's latest mail address:
- http://bugs.ruby-lang.org
+ shigeo@tinyforest.gr.jp
-------------------------------------------------------
created at: Thu Dec 22 1999
-updated at: Wed Sep 28 2011
diff --git a/ext/bigdecimal/bigdecimal.c b/ext/bigdecimal/bigdecimal.c
index 2b70e1eace..b344153bfd 100644
--- a/ext/bigdecimal/bigdecimal.c
+++ b/ext/bigdecimal/bigdecimal.c
@@ -60,7 +60,7 @@ static ID id_to_r;
static ID id_eq;
/* MACRO's to guard objects from GC by keeping them in stack */
-#define ENTER(n) volatile VALUE RB_UNUSED_VAR(vStack[n]);int iStack=0
+#define ENTER(n) volatile VALUE vStack[n];int iStack=0
#define PUSH(x) vStack[iStack++] = (VALUE)(x);
#define SAVE(p) PUSH(p->obj);
#define GUARD_OBJ(p,y) {p=y;SAVE(p);}
@@ -102,20 +102,6 @@ bigzero_p(VALUE x)
# define RRATIONAL_NEGATIVE_P(x) RTEST(rb_funcall((x), '<', 1, INT2FIX(0)))
#endif
-#ifndef DECIMAL_SIZE_OF_BITS
-#define DECIMAL_SIZE_OF_BITS(n) (((n) * 3010 + 9998) / 9999)
-/* an approximation of ceil(n * log10(2)), upto 65536 at least */
-#endif
-
-#ifdef PRIsVALUE
-# define RB_OBJ_CLASSNAME(obj) rb_obj_class(obj)
-# define RB_OBJ_STRING(obj) (obj)
-#else
-# define PRIsVALUE "s"
-# define RB_OBJ_CLASSNAME(obj) rb_obj_classname(obj)
-# define RB_OBJ_STRING(obj) StringValueCStr(obj)
-#endif
-
/*
* ================== Ruby Interface part ==========================
*/
@@ -123,6 +109,9 @@ bigzero_p(VALUE x)
/*
* Returns the BigDecimal version number.
+ *
+ * Ruby 1.8.0 returns 1.0.0.
+ * Ruby 1.8.1 thru 1.8.3 return 1.0.1.
*/
static VALUE
BigDecimal_version(VALUE self)
@@ -142,7 +131,7 @@ static unsigned short VpGetException(void);
static void VpSetException(unsigned short f);
static void VpInternalRound(Real *c, size_t ixDigit, BDIGIT vPrev, BDIGIT v);
static int VpLimitRound(Real *c, size_t ixDigit);
-static Real *VpCopy(Real *pv, Real const* const x);
+static Real *VpDup(Real const* const x);
/*
* **** BigDecimal part ****
@@ -193,13 +182,14 @@ cannot_be_coerced_into_BigDecimal(VALUE exc_class, VALUE v)
VALUE str;
if (rb_special_const_p(v)) {
- str = rb_inspect(v);
+ str = rb_str_cat2(rb_str_dup(rb_inspect(v)),
+ " can't be coerced into BigDecimal");
}
else {
- str = rb_class_name(rb_obj_class(v));
+ str = rb_str_cat2(rb_str_dup(rb_class_name(rb_obj_class(v))),
+ " can't be coerced into BigDecimal");
}
- str = rb_str_cat2(rb_str_dup(str), " can't be coerced into BigDecimal");
rb_exc_raise(rb_exc_new3(exc_class, str));
}
@@ -276,8 +266,8 @@ SomeOneMayDoIt:
unable_to_coerce_without_prec:
if (must) {
rb_raise(rb_eArgError,
- "%"PRIsVALUE" can't be coerced into BigDecimal without a precision",
- RB_OBJ_CLASSNAME(v));
+ "%s can't be coerced into BigDecimal without a precision",
+ rb_obj_classname(v));
}
return NULL;
}
@@ -323,14 +313,6 @@ BigDecimal_prec(VALUE self)
return obj;
}
-/*
- * call-seq: hash
- *
- * Creates a hash for this BigDecimal.
- *
- * Two BigDecimals with equal sign,
- * fractional part and exponent have the same hash.
- */
static VALUE
BigDecimal_hash(VALUE self)
{
@@ -348,18 +330,6 @@ BigDecimal_hash(VALUE self)
return INT2FIX(hash);
}
-/*
- * call-seq: _dump
- *
- * Method used to provide marshalling support.
- *
- * inf = BigDecimal.new('Infinity')
- * => #<BigDecimal:1e16fa8,'Infinity',9(9)>
- * BigDecimal._load(inf._dump)
- * => #<BigDecimal:1df8dc8,'Infinity',9(9)>
- *
- * See the Marshal module.
- */
static VALUE
BigDecimal_dump(int argc, VALUE *argv, VALUE self)
{
@@ -585,15 +555,14 @@ VpCreateRbObject(size_t mx, const char *str)
return pv;
}
-#define VpAllocReal(prec) (Real *)VpMemAlloc(offsetof(Real, frac) + (prec) * sizeof(BDIGIT))
-#define VpReallocReal(ptr, prec) (Real *)VpMemRealloc((ptr), offsetof(Real, frac) + (prec) * sizeof(BDIGIT))
-
static Real *
-VpCopy(Real *pv, Real const* const x)
+VpDup(Real const* const x)
{
+ Real *pv;
+
assert(x != NULL);
- pv = VpReallocReal(pv, x->MaxPrec);
+ pv = VpMemAlloc(sizeof(Real) + x->MaxPrec * sizeof(BDIGIT));
pv->MaxPrec = x->MaxPrec;
pv->Prec = x->Prec;
pv->exponent = x->exponent;
@@ -601,6 +570,9 @@ VpCopy(Real *pv, Real const* const x)
pv->flag = x->flag;
MEMCPY(pv->frac, x->frac, BDIGIT, pv->MaxPrec);
+ pv->obj = TypedData_Wrap_Struct(
+ rb_obj_class(x->obj), &BigDecimal_data_type, pv);
+
return pv;
}
@@ -688,7 +660,7 @@ BigDecimal_to_i(VALUE self)
ret = rb_funcall(numerator, '*', 1,
rb_funcall(INT2FIX(10), rb_intern("**"), 1,
INT2FIX(dpower)));
- if (RB_TYPE_P(ret, T_FLOAT))
+ if (TYPE(ret) == T_FLOAT)
rb_raise(rb_eFloatDomainError, "Infinity");
return ret;
}
@@ -721,22 +693,20 @@ BigDecimal_to_f(VALUE self)
VpToString(p, buf, 0, 0);
errno = 0;
d = strtod(buf, 0);
- if (errno == ERANGE) {
- if (d == 0.0) goto underflow;
- if (fabs(d) >= HUGE_VAL) goto overflow;
- }
+ if (errno == ERANGE)
+ goto overflow;
return rb_float_new(d);
overflow:
VpException(VP_EXCEPTION_OVERFLOW, "BigDecimal to Float conversion", 0);
- if (p->sign >= 0)
+ if (d > 0.0)
return rb_float_new(VpGetDoublePosInf());
else
return rb_float_new(VpGetDoubleNegInf());
underflow:
VpException(VP_EXCEPTION_UNDERFLOW, "BigDecimal to Float conversion", 0);
- if (p->sign >= 0)
+ if (d > 0.0)
return rb_float_new(0.0);
else
return rb_float_new(-0.0);
@@ -798,11 +768,11 @@ BigDecimal_coerce(VALUE self, VALUE other)
VALUE obj;
Real *b;
- if (RB_TYPE_P(other, T_FLOAT)) {
+ if (TYPE(other) == T_FLOAT) {
obj = rb_assoc_new(other, BigDecimal_to_f(self));
}
else {
- if (RB_TYPE_P(other, T_RATIONAL)) {
+ if (TYPE(other) == T_RATIONAL) {
Real* pv = DATA_PTR(self);
GUARD_OBJ(b, GetVpValueWithPrec(other, pv->Prec*VpBaseFig(), 1));
}
@@ -815,25 +785,13 @@ BigDecimal_coerce(VALUE self, VALUE other)
return obj;
}
-/*
- * call-seq: +@
- *
- * Return self.
- *
- * e.g.
- * b = +a # b == a
- */
static VALUE
BigDecimal_uplus(VALUE self)
{
return self;
}
- /*
- * Document-method: BigDecimal#add
- * Document-method: BigDecimal#+
- *
- * call-seq:
+ /* call-seq:
* add(value, digits)
*
* Add the specified value.
@@ -842,9 +800,7 @@ BigDecimal_uplus(VALUE self)
* c = a.add(b,n)
* c = a + b
*
- * digits:: If specified and less than the number of significant digits of the
- * result, the result is rounded to that number of digits, according to
- * BigDecimal.mode.
+ * digits:: If specified and less than the number of significant digits of the result, the result is rounded to that number of digits, according to BigDecimal.mode.
*/
static VALUE
BigDecimal_add(VALUE self, VALUE r)
@@ -854,10 +810,10 @@ BigDecimal_add(VALUE self, VALUE r)
size_t mx;
GUARD_OBJ(a, GetVpValue(self, 1));
- if (RB_TYPE_P(r, T_FLOAT)) {
+ if (TYPE(r) == T_FLOAT) {
b = GetVpValueWithPrec(r, DBL_DIG+1, 1);
}
- else if (RB_TYPE_P(r, T_RATIONAL)) {
+ else if (TYPE(r) == T_RATIONAL) {
b = GetVpValueWithPrec(r, a->Prec*VpBaseFig(), 1);
}
else {
@@ -896,9 +852,7 @@ BigDecimal_add(VALUE self, VALUE r)
* c = a.sub(b,n)
* c = a - b
*
- * digits:: If specified and less than the number of significant digits of the
- * result, the result is rounded to that number of digits, according to
- * BigDecimal.mode.
+ * digits:: If specified and less than the number of significant digits of the result, the result is rounded to that number of digits, according to BigDecimal.mode.
*/
static VALUE
BigDecimal_sub(VALUE self, VALUE r)
@@ -908,16 +862,7 @@ BigDecimal_sub(VALUE self, VALUE r)
size_t mx;
GUARD_OBJ(a,GetVpValue(self,1));
- if (RB_TYPE_P(r, T_FLOAT)) {
- b = GetVpValueWithPrec(r, DBL_DIG+1, 1);
- }
- else if (RB_TYPE_P(r, T_RATIONAL)) {
- b = GetVpValueWithPrec(r, a->Prec*VpBaseFig(), 1);
- }
- else {
- b = GetVpValue(r,0);
- }
-
+ b = GetVpValue(r,0);
if(!b) return DoSomeOne(self,r,'-');
SAVE(b);
@@ -1029,8 +974,6 @@ BigDecimalCmp(VALUE self, VALUE r,char op)
}
rb_bug("Undefined operation in BigDecimalCmp()");
-
- UNREACHABLE;
}
/* Returns True if the value is zero. */
@@ -1077,9 +1020,8 @@ BigDecimal_eq(VALUE self, VALUE r)
/* call-seq:
* a < b
*
- * Returns true if a is less than b.
- *
- * Values may be coerced to perform the comparison (see ==, BigDecimal#coerce).
+ * Returns true if a is less than b. Values may be coerced to perform the
+ * comparison (see ==, coerce).
*/
static VALUE
BigDecimal_lt(VALUE self, VALUE r)
@@ -1090,9 +1032,8 @@ BigDecimal_lt(VALUE self, VALUE r)
/* call-seq:
* a <= b
*
- * Returns true if a is less than or equal to b.
- *
- * Values may be coerced to perform the comparison (see ==, BigDecimal#coerce).
+ * Returns true if a is less than or equal to b. Values may be coerced to
+ * perform the comparison (see ==, coerce).
*/
static VALUE
BigDecimal_le(VALUE self, VALUE r)
@@ -1103,9 +1044,8 @@ BigDecimal_le(VALUE self, VALUE r)
/* call-seq:
* a > b
*
- * Returns true if a is greater than b.
- *
- * Values may be coerced to perform the comparison (see ==, BigDecimal#coerce).
+ * Returns true if a is greater than b. Values may be coerced to
+ * perform the comparison (see ==, coerce).
*/
static VALUE
BigDecimal_gt(VALUE self, VALUE r)
@@ -1116,9 +1056,8 @@ BigDecimal_gt(VALUE self, VALUE r)
/* call-seq:
* a >= b
*
- * Returns true if a is greater than or equal to b.
- *
- * Values may be coerced to perform the comparison (see ==, BigDecimal#coerce)
+ * Returns true if a is greater than or equal to b. Values may be coerced to
+ * perform the comparison (see ==, coerce)
*/
static VALUE
BigDecimal_ge(VALUE self, VALUE r)
@@ -1126,15 +1065,6 @@ BigDecimal_ge(VALUE self, VALUE r)
return BigDecimalCmp(self, r, 'G');
}
-/*
- * call-seq: -@
- *
- * Return the negation of self.
- *
- * e.g.
- * b = -a
- * b == a * -1
- */
static VALUE
BigDecimal_neg(VALUE self)
{
@@ -1146,10 +1076,8 @@ BigDecimal_neg(VALUE self)
return ToValue(c);
}
- /*
- * Document-method: BigDecimal#mult
- *
- * call-seq: mult(value, digits)
+ /* call-seq:
+ * mult(value, digits)
*
* Multiply by the specified value.
*
@@ -1157,9 +1085,7 @@ BigDecimal_neg(VALUE self)
* c = a.mult(b,n)
* c = a * b
*
- * digits:: If specified and less than the number of significant digits of the
- * result, the result is rounded to that number of digits, according to
- * BigDecimal.mode.
+ * digits:: If specified and less than the number of significant digits of the result, the result is rounded to that number of digits, according to BigDecimal.mode.
*/
static VALUE
BigDecimal_mult(VALUE self, VALUE r)
@@ -1169,16 +1095,7 @@ BigDecimal_mult(VALUE self, VALUE r)
size_t mx;
GUARD_OBJ(a,GetVpValue(self,1));
- if (RB_TYPE_P(r, T_FLOAT)) {
- b = GetVpValueWithPrec(r, DBL_DIG+1, 1);
- }
- else if (RB_TYPE_P(r, T_RATIONAL)) {
- b = GetVpValueWithPrec(r, a->Prec*VpBaseFig(), 1);
- }
- else {
- b = GetVpValue(r,0);
- }
-
+ b = GetVpValue(r,0);
if(!b) return DoSomeOne(self,r,'*');
SAVE(b);
@@ -1197,19 +1114,9 @@ BigDecimal_divide(Real **c, Real **res, Real **div, VALUE self, VALUE r)
size_t mx;
GUARD_OBJ(a,GetVpValue(self,1));
- if (RB_TYPE_P(r, T_FLOAT)) {
- b = GetVpValueWithPrec(r, DBL_DIG+1, 1);
- }
- else if (RB_TYPE_P(r, T_RATIONAL)) {
- b = GetVpValueWithPrec(r, a->Prec*VpBaseFig(), 1);
- }
- else {
- b = GetVpValue(r,0);
- }
-
+ b = GetVpValue(r,0);
if(!b) return DoSomeOne(self,r,'/');
SAVE(b);
-
*div = b;
mx = a->Prec + vabs(a->exponent);
if(mx<b->Prec + vabs(b->exponent)) mx = b->Prec + vabs(b->exponent);
@@ -1229,15 +1136,13 @@ BigDecimal_divide(Real **c, Real **res, Real **div, VALUE self, VALUE r)
* e.g.
* c = a.div(b,n)
*
- * digits:: If specified and less than the number of significant digits of the
- * result, the result is rounded to that number of digits, according to
- * BigDecimal.mode.
+ * digits:: If specified and less than the number of significant digits of the result, the result is rounded to that number of digits, according to BigDecimal.mode.
*
* If digits is 0, the result is the same as the / operator. If not, the
* result is an integer BigDecimal, by analogy with Float#div.
*
- * The alias quo is provided since <code>div(value, 0)</code> is the same as
- * computing the quotient; see BigDecimal#divmod.
+ * The alias quo is provided since div(value, 0) is the same as computing
+ * the quotient; see divmod.
*/
static VALUE
BigDecimal_div(VALUE self, VALUE r)
@@ -1272,16 +1177,7 @@ BigDecimal_DoDivmod(VALUE self, VALUE r, Real **div, Real **mod)
size_t mx;
GUARD_OBJ(a,GetVpValue(self,1));
- if (RB_TYPE_P(r, T_FLOAT)) {
- b = GetVpValueWithPrec(r, DBL_DIG+1, 1);
- }
- else if (RB_TYPE_P(r, T_RATIONAL)) {
- b = GetVpValueWithPrec(r, a->Prec*VpBaseFig(), 1);
- }
- else {
- b = GetVpValue(r,0);
- }
-
+ b = GetVpValue(r,0);
if(!b) return Qfalse;
SAVE(b);
@@ -1347,9 +1243,7 @@ NaN:
* a % b
* a.modulo(b)
*
- * Returns the modulus from dividing by b.
- *
- * See BigDecimal#divmod.
+ * Returns the modulus from dividing by b. See divmod.
*/
static VALUE
BigDecimal_mod(VALUE self, VALUE r) /* %: a%b = a - (a.to_f/b).floor * b */
@@ -1373,16 +1267,7 @@ BigDecimal_divremain(VALUE self, VALUE r, Real **dv, Real **rv)
Real *f=NULL;
GUARD_OBJ(a,GetVpValue(self,1));
- if (RB_TYPE_P(r, T_FLOAT)) {
- b = GetVpValueWithPrec(r, DBL_DIG+1, 1);
- }
- else if (RB_TYPE_P(r, T_RATIONAL)) {
- b = GetVpValueWithPrec(r, a->Prec*VpBaseFig(), 1);
- }
- else {
- b = GetVpValue(r,0);
- }
-
+ b = GetVpValue(r,0);
if(!b) return DoSomeOne(self,r,rb_intern("remainder"));
SAVE(b);
@@ -1456,9 +1341,6 @@ BigDecimal_divmod(VALUE self, VALUE r)
return DoSomeOne(self,r,rb_intern("divmod"));
}
-/*
- * See BigDecimal#quo
- */
static VALUE
BigDecimal_div2(int argc, VALUE *argv, VALUE self)
{
@@ -1572,7 +1454,7 @@ BigDecimal_abs(VALUE self)
*
* Returns the square root of the value.
*
- * Result has at least n significant digits.
+ * If n is specified, returns at least that many significant digits.
*/
static VALUE
BigDecimal_sqrt(VALUE self, VALUE nFig)
@@ -1612,8 +1494,9 @@ BigDecimal_fix(VALUE self)
*
* Round to the nearest 1 (by default), returning the result as a BigDecimal.
*
- * BigDecimal('3.14159').round #=> 3
- * BigDecimal('8.7').round #=> 9
+ * BigDecimal('3.14159').round -> 3
+ *
+ * BigDecimal('8.7').round -> 9
*
* If n is specified and positive, the fractional part of the result has no
* more than that many digits.
@@ -1621,8 +1504,9 @@ BigDecimal_fix(VALUE self)
* If n is specified and negative, at least that many digits to the left of the
* decimal point will be 0 in the result.
*
- * BigDecimal('3.14159').round(3) #=> 3.142
- * BigDecimal('13345.234').round(-2) #=> 13300.0
+ * BigDecimal('3.14159').round(3) -> 3.142
+ *
+ * BigDecimal('13345.234').round(-2) -> 13300.0
*
* The value of the optional mode argument can be used to determine how
* rounding is performed; see BigDecimal.mode.
@@ -1671,8 +1555,9 @@ BigDecimal_round(int argc, VALUE *argv, VALUE self)
*
* Truncate to the nearest 1, returning the result as a BigDecimal.
*
- * BigDecimal('3.14159').truncate #=> 3
- * BigDecimal('8.7').truncate #=> 8
+ * BigDecimal('3.14159').truncate -> 3
+ *
+ * BigDecimal('8.7').truncate -> 8
*
* If n is specified and positive, the fractional part of the result has no
* more than that many digits.
@@ -1680,8 +1565,9 @@ BigDecimal_round(int argc, VALUE *argv, VALUE self)
* If n is specified and negative, at least that many digits to the left of the
* decimal point will be 0 in the result.
*
- * BigDecimal('3.14159').truncate(3) #=> 3.141
- * BigDecimal('13345.234').truncate(-2) #=> 13300.0
+ * BigDecimal('3.14159').truncate(3) -> 3.141
+ *
+ * BigDecimal('13345.234').truncate(-2) -> 13300.0
*/
static VALUE
BigDecimal_truncate(int argc, VALUE *argv, VALUE self)
@@ -1731,8 +1617,9 @@ BigDecimal_frac(VALUE self)
*
* Return the largest integer less than or equal to the value, as a BigDecimal.
*
- * BigDecimal('3.14159').floor #=> 3
- * BigDecimal('-9.1').floor #=> -10
+ * BigDecimal('3.14159').floor -> 3
+ *
+ * BigDecimal('-9.1').floor -> -10
*
* If n is specified and positive, the fractional part of the result has no
* more than that many digits.
@@ -1740,8 +1627,9 @@ BigDecimal_frac(VALUE self)
* If n is specified and negative, at least that
* many digits to the left of the decimal point will be 0 in the result.
*
- * BigDecimal('3.14159').floor(3) #=> 3.141
- * BigDecimal('13345.234').floor(-2) #=> 13300.0
+ * BigDecimal('3.14159').floor(3) -> 3.141
+ *
+ * BigDecimal('13345.234').floor(-2) -> 13300.0
*/
static VALUE
BigDecimal_floor(int argc, VALUE *argv, VALUE self)
@@ -1778,8 +1666,9 @@ BigDecimal_floor(int argc, VALUE *argv, VALUE self)
*
* Return the smallest integer greater than or equal to the value, as a BigDecimal.
*
- * BigDecimal('3.14159').ceil #=> 4
- * BigDecimal('-9.1').ceil #=> -9
+ * BigDecimal('3.14159').ceil -> 4
+ *
+ * BigDecimal('-9.1').ceil -> -9
*
* If n is specified and positive, the fractional part of the result has no
* more than that many digits.
@@ -1787,8 +1676,9 @@ BigDecimal_floor(int argc, VALUE *argv, VALUE self)
* If n is specified and negative, at least that
* many digits to the left of the decimal point will be 0 in the result.
*
- * BigDecimal('3.14159').ceil(3) #=> 3.142
- * BigDecimal('13345.234').ceil(-2) #=> 13400.0
+ * BigDecimal('3.14159').ceil(3) -> 3.142
+ *
+ * BigDecimal('13345.234').ceil(-2) -> 13400.0
*/
static VALUE
BigDecimal_ceil(int argc, VALUE *argv, VALUE self)
@@ -1841,21 +1731,18 @@ BigDecimal_ceil(int argc, VALUE *argv, VALUE self)
*
* Examples:
*
- * BigDecimal.new('-123.45678901234567890').to_s('5F')
- * #=> '-123.45678 90123 45678 9'
+ * BigDecimal.new('-123.45678901234567890').to_s('5F') -> '-123.45678 90123 45678 9'
*
- * BigDecimal.new('123.45678901234567890').to_s('+8F')
- * #=> '+123.45678901 23456789'
+ * BigDecimal.new('123.45678901234567890').to_s('+8F') -> '+123.45678901 23456789'
*
- * BigDecimal.new('123.45678901234567890').to_s(' F')
- * #=> ' 123.4567890123456789'
+ * BigDecimal.new('123.45678901234567890').to_s(' F') -> ' 123.4567890123456789'
*/
static VALUE
BigDecimal_to_s(int argc, VALUE *argv, VALUE self)
{
ENTER(5);
- int fmt = 0; /* 0:E format */
- int fPlus = 0; /* =0:default,=1: set ' ' before digits ,set '+' before digits. */
+ int fmt=0; /* 0:E format */
+ int fPlus=0; /* =0:default,=1: set ' ' before digits ,set '+' before digits. */
Real *vp;
volatile VALUE str;
char *psz;
@@ -1865,53 +1752,42 @@ BigDecimal_to_s(int argc, VALUE *argv, VALUE self)
GUARD_OBJ(vp,GetVpValue(self,1));
- if (rb_scan_args(argc,argv,"01",&f)==1) {
- if (RB_TYPE_P(f, T_STRING)) {
- SafeStringValue(f);
- psz = RSTRING_PTR(f);
- if (*psz == ' ') {
- fPlus = 1;
- psz++;
- }
- else if (*psz == '+') {
- fPlus = 2;
- psz++;
- }
- while ((ch = *psz++) != 0) {
- if (ISSPACE(ch)) {
- continue;
- }
- if (!ISDIGIT(ch)) {
- if (ch == 'F' || ch == 'f') {
- fmt = 1; /* F format */
- }
- break;
- }
- mc = mc * 10 + ch - '0';
- }
- }
+ if(rb_scan_args(argc,argv,"01",&f)==1) {
+ if(TYPE(f)==T_STRING) {
+ SafeStringValue(f);
+ psz = RSTRING_PTR(f);
+ if(*psz==' ') {
+ fPlus = 1; psz++;
+ } else if(*psz=='+') {
+ fPlus = 2; psz++;
+ }
+ while((ch=*psz++)!=0) {
+ if(ISSPACE(ch)) continue;
+ if(!ISDIGIT(ch)) {
+ if(ch=='F' || ch=='f') fmt = 1; /* F format */
+ break;
+ }
+ mc = mc * 10 + ch - '0';
+ }
+ }
else {
- mc = (size_t)GetPositiveInt(f);
- }
- }
- if (fmt) {
- nc = VpNumOfChars(vp, "F");
- }
- else {
- nc = VpNumOfChars(vp, "E");
+ mc = (size_t)GetPositiveInt(f);
+ }
}
- if (mc > 0) {
- nc += (nc + mc - 1) / mc + 1;
+ if(fmt) {
+ nc = VpNumOfChars(vp,"F");
+ } else {
+ nc = VpNumOfChars(vp,"E");
}
+ if(mc>0) nc += (nc + mc - 1) / mc + 1;
str = rb_str_new(0, nc);
psz = RSTRING_PTR(str);
- if (fmt) {
- VpToFString(vp, psz, mc, fPlus);
- }
- else {
- VpToString (vp, psz, mc, fPlus);
+ if(fmt) {
+ VpToFString(vp, psz, mc, fPlus);
+ } else {
+ VpToString (vp, psz, mc, fPlus);
}
rb_str_resize(str, strlen(psz));
return str;
@@ -2028,7 +1904,7 @@ static VALUE BigMath_s_log(VALUE, VALUE, VALUE);
inline static int
is_integer(VALUE x)
{
- return (RB_TYPE_P(x, T_FIXNUM) || RB_TYPE_P(x, T_BIGNUM));
+ return (TYPE(x) == T_FIXNUM || TYPE(x) == T_BIGNUM);
}
inline static int
@@ -2037,10 +1913,10 @@ is_negative(VALUE x)
if (FIXNUM_P(x)) {
return FIX2LONG(x) < 0;
}
- else if (RB_TYPE_P(x, T_BIGNUM)) {
+ else if (TYPE(x) == T_BIGNUM) {
return RBIGNUM_NEGATIVE_P(x);
}
- else if (RB_TYPE_P(x, T_FLOAT)) {
+ else if (TYPE(x) == T_FLOAT) {
return RFLOAT_VALUE(x) < 0.0;
}
return RTEST(rb_funcall(x, '<', 1, INT2FIX(0)));
@@ -2117,7 +1993,6 @@ static VALUE
rmpd_power_by_big_decimal(Real const* x, Real const* exp, ssize_t const n)
{
VALUE log_x, multiplied, y;
- volatile VALUE obj = exp->obj;
if (VpIsZero(exp)) {
return ToValue(VpCreateRbObject(n, "1"));
@@ -2126,7 +2001,6 @@ rmpd_power_by_big_decimal(Real const* x, Real const* exp, ssize_t const n)
log_x = BigMath_log(x->obj, SSIZET2NUM(n+1));
multiplied = BigDecimal_mult2(exp->obj, log_x, SSIZET2NUM(n+1));
y = BigMath_exp(multiplied, SSIZET2NUM(n));
- RB_GC_GUARD(obj);
return y;
}
@@ -2135,9 +2009,7 @@ rmpd_power_by_big_decimal(Real const* x, Real const* exp, ssize_t const n)
* power(n)
* power(n, prec)
*
- * Returns the value raised to the power of n.
- *
- * Note that n must be an Integer.
+ * Returns the value raised to the power of n. Note that n must be an Integer.
*
* Also available as the operator **
*/
@@ -2209,8 +2081,8 @@ retry:
/* fall through */
default:
rb_raise(rb_eTypeError,
- "wrong argument type %"PRIsVALUE" (expected scalar Numeric)",
- RB_OBJ_CLASSNAME(vexp));
+ "wrong argument type %s (expected scalar Numeric)",
+ rb_obj_classname(vexp));
}
if (VpIsZero(x)) {
@@ -2303,7 +2175,7 @@ retry:
if (exp != NULL) {
return rmpd_power_by_big_decimal(x, exp, n);
}
- else if (RB_TYPE_P(vexp, T_BIGNUM)) {
+ else if (TYPE(vexp) == T_BIGNUM) {
VALUE abs_value = BigDecimal_abs(self);
if (is_one(abs_value)) {
return ToValue(VpCreateRbObject(n, "1"));
@@ -2365,7 +2237,7 @@ retry:
/* call-seq:
* big_decimal ** exp -> big_decimal
*
- * It is a synonym of BigDecimal#power(exp).
+ * It is a synonym of big_decimal.power(exp).
*/
static VALUE
BigDecimal_power_op(VALUE self, VALUE exp)
@@ -2373,14 +2245,6 @@ BigDecimal_power_op(VALUE self, VALUE exp)
return BigDecimal_power(1, &exp, self);
}
-static VALUE
-BigDecimal_s_allocate(VALUE klass)
-{
- return VpNewRbClass(0, NULL, klass)->obj;
-}
-
-static Real *BigDecimal_new(int argc, VALUE *argv);
-
/* call-seq:
* new(initial, digits)
*
@@ -2388,7 +2252,6 @@ static Real *BigDecimal_new(int argc, VALUE *argv);
*
* initial:: The initial value, as an Integer, a Float, a Rational,
* a BigDecimal, or a String.
- *
* If it is a String, spaces are ignored and unrecognized characters
* terminate the value.
*
@@ -2400,44 +2263,10 @@ static Real *BigDecimal_new(int argc, VALUE *argv);
* larger than the specified number.
*/
static VALUE
-BigDecimal_initialize(int argc, VALUE *argv, VALUE self)
-{
- ENTER(1);
- Real *pv = rb_check_typeddata(self, &BigDecimal_data_type);
- Real *x;
-
- GUARD_OBJ(x, BigDecimal_new(argc, argv));
- if (ToValue(x)) {
- pv = VpCopy(pv, x);
- }
- else {
- VpFree(pv);
- pv = x;
- }
- DATA_PTR(self) = pv;
- pv->obj = self;
- return self;
-}
-
-/* :nodoc:
- *
- * private method to dup and clone the provided BigDecimal +other+
- */
-static VALUE
-BigDecimal_initialize_copy(VALUE self, VALUE other)
-{
- Real *pv = rb_check_typeddata(self, &BigDecimal_data_type);
- Real *x = rb_check_typeddata(other, &BigDecimal_data_type);
-
- if (self != other) {
- DATA_PTR(self) = VpCopy(pv, x);
- }
- return self;
-}
-
-static Real *
-BigDecimal_new(int argc, VALUE *argv)
+BigDecimal_new(int argc, VALUE *argv, VALUE self)
{
+ ENTER(5);
+ Real *pv;
size_t mf;
VALUE nFig;
VALUE iniValue;
@@ -2452,14 +2281,15 @@ BigDecimal_new(int argc, VALUE *argv)
switch (TYPE(iniValue)) {
case T_DATA:
if (is_kind_of_BigDecimal(iniValue)) {
- return DATA_PTR(iniValue);
+ pv = VpDup(DATA_PTR(iniValue));
+ return ToValue(pv);
}
break;
case T_FIXNUM:
/* fall through */
case T_BIGNUM:
- return GetVpValue(iniValue, 1);
+ return ToValue(GetVpValue(iniValue, 1));
case T_FLOAT:
if (mf > DBL_DIG+1) {
@@ -2468,31 +2298,25 @@ BigDecimal_new(int argc, VALUE *argv)
/* fall through */
case T_RATIONAL:
if (NIL_P(nFig)) {
- rb_raise(rb_eArgError,
- "can't omit precision for a %"PRIsVALUE".",
- RB_OBJ_CLASSNAME(iniValue));
+ rb_raise(rb_eArgError, "can't omit precision for a Rational.");
}
- return GetVpValueWithPrec(iniValue, mf, 1);
+ return ToValue(GetVpValueWithPrec(iniValue, mf, 1));
case T_STRING:
/* fall through */
default:
break;
}
- StringValueCStr(iniValue);
- return VpAlloc(mf, RSTRING_PTR(iniValue));
+ SafeStringValue(iniValue);
+ GUARD_OBJ(pv, VpNewRbClass(mf, RSTRING_PTR(iniValue),self));
+
+ return ToValue(pv);
}
static VALUE
BigDecimal_global_new(int argc, VALUE *argv, VALUE self)
{
- ENTER(1);
- Real *pv;
-
- GUARD_OBJ(pv, BigDecimal_new(argc, argv));
- if (ToValue(pv)) pv = VpCopy(NULL, pv);
- pv->obj = TypedData_Wrap_Struct(rb_cBigDecimal, &BigDecimal_data_type, pv);
- return pv->obj;
+ return BigDecimal_new(argc, argv, rb_cBigDecimal);
}
/* call-seq:
@@ -2549,23 +2373,8 @@ BigDecimal_sign(VALUE self)
return INT2FIX(s);
}
-/*
- * call-seq: BigDecimal.save_exception_mode { ... }
- *
- * Excecute the provided block, but preserve the exception mode
- *
- * BigDecimal.save_exception_mode do
- * BigDecimal.mode(BigDecimal::EXCEPTION_OVERFLOW, false)
- * BigDecimal.mode(BigDecimal::EXCEPTION_NaN, false)
- *
- * BigDecimal.new(BigDecimal('Infinity'))
- * BigDecimal.new(BigDecimal('-Infinity'))
- * BigDecimal(BigDecimal.new('NaN'))
- * end
- *
- * For use with the BigDecimal::EXCEPTION_*
- *
- * See BigDecimal.mode
+/* call-seq:
+ * BigDecimal.save_exception_mode { ... }
*/
static VALUE
BigDecimal_save_exception_mode(VALUE self)
@@ -2578,19 +2387,8 @@ BigDecimal_save_exception_mode(VALUE self)
return ret;
}
-/*
- * call-seq: BigDecimal.save_rounding_mode { ... }
- *
- * Excecute the provided block, but preserve the rounding mode
- *
- * BigDecimal.save_exception_mode do
- * BigDecimal.mode(BigDecimal::ROUND_MODE, :up)
- * puts BigDecimal.mode(BigDecimal::ROUND_MODE)
- * end
- *
- * For use with the BigDecimal::ROUND_*
- *
- * See BigDecimal.mode
+/* call-seq:
+ * BigDecimal.save_rounding_mode { ... }
*/
static VALUE
BigDecimal_save_rounding_mode(VALUE self)
@@ -2603,19 +2401,8 @@ BigDecimal_save_rounding_mode(VALUE self)
return ret;
}
-/*
- * call-seq: BigDecimal.save_limit { ... }
- *
- * Excecute the provided block, but preserve the precision limit
- *
- * BigDecimal.limit(100)
- * puts BigDecimal.limit
- * BigDecimal.save_limit do
- * BigDecimal.limit(200)
- * puts BigDecimal.limit
- * end
- * puts BigDecimal.limit
- *
+/* call-seq:
+ * BigDecimal.save_limit { ... }
*/
static VALUE
BigDecimal_save_limit(VALUE self)
@@ -2634,7 +2421,7 @@ BigDecimal_save_limit(VALUE self)
* Computes the value of e (the base of natural logarithms) raised to the
* power of x, to the specified number of digits of precision.
*
- * If x is infinity, returns Infinity.
+ * If x is infinite, returns Infinity.
*
* If x is NaN, returns NaN.
*/
@@ -2710,7 +2497,7 @@ BigMath_s_exp(VALUE klass, VALUE x, VALUE vprec)
else if (vx == NULL) {
cannot_be_coerced_into_BigDecimal(rb_eArgError, x);
}
- x = RB_GC_GUARD(vx->obj);
+ RB_GC_GUARD(vx->obj);
n = prec + rmpd_double_figures();
negative = VpGetSign(vx) < 0;
@@ -2766,7 +2553,7 @@ BigMath_s_exp(VALUE klass, VALUE x, VALUE vprec)
*
* If x is zero or negative, raises Math::DomainError.
*
- * If x is positive infinity, returns Infinity.
+ * If x is positive infinite, returns Infinity.
*
* If x is NaN, returns NaN.
*/
@@ -2784,7 +2571,7 @@ BigMath_s_log(VALUE klass, VALUE x, VALUE vprec)
double flo;
long fix;
- if (!is_integer(vprec)) {
+ if (TYPE(vprec) != T_FIXNUM && TYPE(vprec) != T_BIGNUM) {
rb_raise(rb_eArgError, "precision must be an Integer");
}
@@ -2875,7 +2662,7 @@ get_vp_value:
expo = VpExponent10(vx);
if (expo < 0 || expo >= 3) {
char buf[16];
- snprintf(buf, 16, "1E%"PRIdVALUE, -expo);
+ snprintf(buf, 16, "1E%ld", -expo);
x = BigDecimal_mult2(x, ToValue(VpCreateRbObject(1, buf)), vn);
}
else {
@@ -2924,7 +2711,6 @@ get_vp_value:
* BigDecimal provides arbitrary-precision floating point decimal arithmetic.
*
* Copyright (C) 2002 by Shigeo Kobayashi <shigeo@tinyforest.gr.jp>.
- *
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file
* of the BigDecimal distribution.
@@ -2934,10 +2720,9 @@ get_vp_value:
* = Introduction
*
* Ruby provides built-in support for arbitrary precision integer arithmetic.
- *
* For example:
*
- * 42**13 #=> 1265437718438866624512
+ * 42**13 -> 1265437718438866624512
*
* BigDecimal provides similar support for very large or very accurate floating
* point numbers.
@@ -2945,15 +2730,13 @@ get_vp_value:
* Decimal arithmetic is also useful for general calculation, because it
* provides the correct answers people expect--whereas normal binary floating
* point arithmetic often introduces subtle errors because of the conversion
- * between base 10 and base 2.
- *
- * For example, try:
+ * between base 10 and base 2. For example, try:
*
* sum = 0
* for i in (1..10000)
* sum = sum + 0.0001
* end
- * print sum #=> 0.9999999999999062
+ * print sum
*
* and contrast with the output from:
*
@@ -2963,13 +2746,13 @@ get_vp_value:
* for i in (1..10000)
* sum = sum + BigDecimal.new("0.0001")
* end
- * print sum #=> 0.1E1
+ * print sum
*
* Similarly:
*
- * (BigDecimal.new("1.2") - BigDecimal("1.0")) == BigDecimal("0.2") #=> true
+ * (BigDecimal.new("1.2") - BigDecimal("1.0")) == BigDecimal("0.2") -> true
*
- * (1.2 - 1.0) == 0.2 #=> false
+ * (1.2 - 1.0) == 0.2 -> false
*
* = Special features of accurate decimal arithmetic
*
@@ -2981,29 +2764,30 @@ get_vp_value:
* BigDecimal sometimes needs to return infinity, for example if you divide
* a value by zero.
*
- * BigDecimal.new("1.0") / BigDecimal.new("0.0") #=> infinity
- * BigDecimal.new("-1.0") / BigDecimal.new("0.0") #=> -infinity
+ * BigDecimal.new("1.0") / BigDecimal.new("0.0") -> infinity
+ *
+ * BigDecimal.new("-1.0") / BigDecimal.new("0.0") -> -infinity
*
* You can represent infinite numbers to BigDecimal using the strings
- * <code>'Infinity'</code>, <code>'+Infinity'</code> and
- * <code>'-Infinity'</code> (case-sensitive)
+ * 'Infinity', '+Infinity' and '-Infinity' (case-sensitive)
*
* == Not a Number
*
- * When a computation results in an undefined value, the special value +NaN+
+ * When a computation results in an undefined value, the special value NaN
* (for 'not a number') is returned.
*
* Example:
*
- * BigDecimal.new("0.0") / BigDecimal.new("0.0") #=> NaN
+ * BigDecimal.new("0.0") / BigDecimal.new("0.0") -> NaN
+ *
+ * You can also create undefined values. NaN is never considered to be the
+ * same as any other value, even NaN itself:
*
- * You can also create undefined values.
+ * n = BigDecimal.new('NaN')
*
- * NaN is never considered to be the same as any other value, even NaN itself:
+ * n == 0.0 -> nil
*
- * n = BigDecimal.new('NaN')
- * n == 0.0 #=> nil
- * n == n #=> nil
+ * n == n -> nil
*
* == Positive and negative zero
*
@@ -3012,17 +2796,16 @@ get_vp_value:
* be returned.
*
* If the value which is too small to be represented is negative, a BigDecimal
- * value of negative zero is returned.
- *
- * BigDecimal.new("1.0") / BigDecimal.new("-Infinity") #=> -0.0
+ * value of negative zero is returned. If the value is positive, a value of
+ * positive zero is returned.
*
- * If the value is positive, a value of positive zero is returned.
+ * BigDecimal.new("1.0") / BigDecimal.new("-Infinity") -> -0.0
*
- * BigDecimal.new("1.0") / BigDecimal.new("Infinity") #=> 0.0
+ * BigDecimal.new("1.0") / BigDecimal.new("Infinity") -> 0.0
*
* (See BigDecimal.mode for how to specify limits of precision.)
*
- * Note that +-0.0+ and +0.0+ are considered to be the same for the purposes of
+ * Note that -0.0 and 0.0 are considered to be the same for the purposes of
* comparison.
*
* Note also that in mathematics, there is no particular concept of negative
@@ -3042,12 +2825,12 @@ Init_bigdecimal(void)
/* Class and method registration */
rb_cBigDecimal = rb_define_class("BigDecimal",rb_cNumeric);
- rb_define_alloc_func(rb_cBigDecimal, BigDecimal_s_allocate);
/* Global function */
rb_define_global_function("BigDecimal", BigDecimal_global_new, -1);
/* Class methods */
+ rb_define_singleton_method(rb_cBigDecimal, "new", BigDecimal_new, -1);
rb_define_singleton_method(rb_cBigDecimal, "mode", BigDecimal_mode, -1);
rb_define_singleton_method(rb_cBigDecimal, "limit", BigDecimal_limit, -1);
rb_define_singleton_method(rb_cBigDecimal, "double_fig", BigDecimal_double_fig, 0);
@@ -3163,16 +2946,12 @@ Init_bigdecimal(void)
rb_define_const(rb_cBigDecimal, "SIGN_NEGATIVE_INFINITE",INT2FIX(VP_SIGN_NEGATIVE_INFINITE));
arg = rb_str_new2("+Infinity");
- /* Positive infinity value. */
rb_define_const(rb_cBigDecimal, "INFINITY", BigDecimal_global_new(1, &arg, rb_cBigDecimal));
arg = rb_str_new2("NaN");
- /* 'Not a Number' value. */
rb_define_const(rb_cBigDecimal, "NAN", BigDecimal_global_new(1, &arg, rb_cBigDecimal));
/* instance methods */
- rb_define_method(rb_cBigDecimal, "initialize", BigDecimal_initialize, -1);
- rb_define_method(rb_cBigDecimal, "initialize_copy", BigDecimal_initialize_copy, 1);
rb_define_method(rb_cBigDecimal, "precs", BigDecimal_prec, 0);
rb_define_method(rb_cBigDecimal, "add", BigDecimal_add2, 2);
@@ -3299,16 +3078,6 @@ VpMemAlloc(size_t mb)
return p;
}
-VP_EXPORT void *
-VpMemRealloc(void *ptr, size_t mb)
-{
- void *p = xrealloc(ptr, mb);
- if (!p) {
- VpException(VP_EXCEPTION_MEMORY, "failed to allocate memory", 1);
- }
- return p;
-}
-
VP_EXPORT void
VpFree(Real *pv)
{
@@ -3822,7 +3591,7 @@ VpAlloc(size_t mx, const char *szVal)
/* necessary to be able to store */
/* at least mx digits. */
/* szVal==NULL ==> allocate zero value. */
- vp = VpAllocReal(mx);
+ vp = (Real *) VpMemAlloc(sizeof(Real) + mx * sizeof(BDIGIT));
/* xmalloc() alway returns(or throw interruption) */
vp->MaxPrec = mx; /* set max precision */
VpSetZero(vp,1); /* initialize vp to zero. */
@@ -3855,19 +3624,19 @@ VpAlloc(size_t mx, const char *szVal)
/* Check on Inf & NaN */
if (StrCmp(szVal, SZ_PINF) == 0 ||
StrCmp(szVal, SZ_INF) == 0 ) {
- vp = VpAllocReal(1);
+ vp = (Real *) VpMemAlloc(sizeof(Real) + sizeof(BDIGIT));
vp->MaxPrec = 1; /* set max precision */
VpSetPosInf(vp);
return vp;
}
if (StrCmp(szVal, SZ_NINF) == 0) {
- vp = VpAllocReal(1);
+ vp = (Real *) VpMemAlloc(sizeof(Real) + sizeof(BDIGIT));
vp->MaxPrec = 1; /* set max precision */
VpSetNegInf(vp);
return vp;
}
if (StrCmp(szVal, SZ_NaN) == 0) {
- vp = VpAllocReal(1);
+ vp = (Real *) VpMemAlloc(sizeof(Real) + sizeof(BDIGIT));
vp->MaxPrec = 1; /* set max precision */
VpSetNaN(vp);
return vp;
@@ -3925,7 +3694,7 @@ VpAlloc(size_t mx, const char *szVal)
if (mx <= 0) mx = 1;
nalloc = Max(nalloc, mx);
mx = nalloc;
- vp = VpAllocReal(mx);
+ vp = (Real *) VpMemAlloc(sizeof(Real) + mx * sizeof(BDIGIT));
/* xmalloc() alway returns(or throw interruption) */
vp->MaxPrec = mx; /* set max precision */
VpSetZero(vp, sign);
@@ -4419,7 +4188,7 @@ VpMult(Real *c, Real *a, Real *b)
{
size_t MxIndA, MxIndB, MxIndAB, MxIndC;
size_t ind_c, i, ii, nc;
- size_t ind_as, ind_ae, ind_bs;
+ size_t ind_as, ind_ae, ind_bs, ind_be;
BDIGIT carry;
BDIGIT_DBL s;
Real *w;
@@ -4482,14 +4251,17 @@ VpMult(Real *c, Real *a, Real *b)
ind_as = MxIndA - nc;
ind_ae = MxIndA;
ind_bs = MxIndB;
+ ind_be = MxIndB - nc;
} else if(nc <= MxIndA) { /* The middle rectangular of the Fig. */
ind_as = MxIndA - nc;
ind_ae = MxIndA -(nc - MxIndB);
ind_bs = MxIndB;
+ ind_be = 0;
} else if(nc > MxIndA) { /* The right triangle of the Fig. */
ind_as = 0;
ind_ae = MxIndAB - nc - 1;
ind_bs = MxIndB -(nc - MxIndA);
+ ind_be = 0;
}
for(i = ind_as; i <= ind_ae; ++i) {
@@ -5213,6 +4985,7 @@ VP_EXPORT int
VpCtoV(Real *a, const char *int_chr, size_t ni, const char *frac, size_t nf, const char *exp_chr, size_t ne)
{
size_t i, j, ind_a, ma, mi, me;
+ size_t loc;
SIGNED_VALUE e, es, eb, ef;
int sign, signe, exponent_overflow;
@@ -5309,6 +5082,7 @@ VpCtoV(Real *a, const char *int_chr, size_t ni, const char *frac, size_t nf, con
j = 0;
}
}
+ loc = 1;
/* get fraction part */
@@ -5557,7 +5331,7 @@ VpSqrt(Real *y, Real *x)
{
Real *f = NULL;
Real *r = NULL;
- size_t y_prec;
+ size_t y_prec, f_prec;
SIGNED_VALUE n, e;
SIGNED_VALUE prec;
ssize_t nr;
@@ -5594,6 +5368,7 @@ VpSqrt(Real *y, Real *x)
nr = 0;
y_prec = y->MaxPrec;
+ f_prec = f->MaxPrec;
prec = x->exponent - (ssize_t)y_prec;
if (x->exponent > 0)
diff --git a/ext/bigdecimal/bigdecimal.gemspec b/ext/bigdecimal/bigdecimal.gemspec
index 4240f827e4..c8bd0aef18 100644
--- a/ext/bigdecimal/bigdecimal.gemspec
+++ b/ext/bigdecimal/bigdecimal.gemspec
@@ -1,12 +1,11 @@
# -*- ruby -*-
-_VERSION = "1.2.0"
+_VERSION = "1.1.0"
Gem::Specification.new do |s|
s.name = "bigdecimal"
s.version = _VERSION
- s.date = "2012-02-19"
+ s.date = "2011-07-30"
s.summary = "Arbitrary-precision decimal floating-point number library."
- s.homepage = "http://www.ruby-lang.org"
s.email = "mrkn@mrkn.jp"
s.description = "This library provides arbitrary-precision decimal floating-point number class."
s.authors = ["Kenta Murata", "Shigeo Kobayashi"]
@@ -18,10 +17,11 @@ Gem::Specification.new do |s|
README
depend extconf.rb
lib/bigdecimal/jacobian.rb
- lib/bigdecimal/ludcmp.rb
+ lib/bigdecimal/lcdcmp.rb
lib/bigdecimal/math.rb
lib/bigdecimal/newton.rb
lib/bigdecimal/util.rb
+ lib/bigdecimal/version.rb
sample/linear.rb
sample/nlsolve.rb
sample/pi.rb
diff --git a/ext/bigdecimal/bigdecimal.h b/ext/bigdecimal/bigdecimal.h
index a04d1bbfea..d6a3f337c6 100644
--- a/ext/bigdecimal/bigdecimal.h
+++ b/ext/bigdecimal/bigdecimal.h
@@ -21,9 +21,6 @@
#if defined(__cplusplus)
extern "C" {
-#if 0
-} /* satisfy cc-mode */
-#endif
#endif
#ifndef HAVE_LABS
@@ -123,12 +120,6 @@ extern VALUE rb_cBigDecimal;
#define VP_SIGN_POSITIVE_INFINITE 3 /* Positive infinite number */
#define VP_SIGN_NEGATIVE_INFINITE -3 /* Negative infinite number */
-#ifdef __GNUC__
-#define FLEXIBLE_ARRAY_SIZE 0
-#else
-#define FLEXIBLE_ARRAY_SIZE 1
-#endif
-
/*
* VP representation
* r = 0.xxxxxxxxx *BASE**exponent
@@ -153,7 +144,7 @@ typedef struct {
* -3 : Negative infinite number
*/
short flag; /* Not used in vp_routines,space for user. */
- BDIGIT frac[FLEXIBLE_ARRAY_SIZE]; /* Array of fraction part. */
+ BDIGIT frac[1]; /* Pointer to array of fraction part. */
} Real;
/*
@@ -200,7 +191,6 @@ VP_EXPORT int VpIsNegDoubleZero(double v);
VP_EXPORT size_t VpNumOfChars(Real *vp,const char *pszFmt);
VP_EXPORT size_t VpInit(BDIGIT BaseVal);
VP_EXPORT void *VpMemAlloc(size_t mb);
-VP_EXPORT void *VpMemRealloc(void *ptr, size_t mb);
VP_EXPORT void VpFree(Real *pv);
VP_EXPORT Real *VpAlloc(size_t mx, const char *szVal);
VP_EXPORT size_t VpAsgn(Real *c, Real *a, int isw);
@@ -283,9 +273,6 @@ VP_EXPORT int VPrint(FILE *fp,const char *cntl_chr,Real *a);
#endif /* BIGDECIMAL_DEBUG */
#if defined(__cplusplus)
-#if 0
-{ /* satisfy cc-mode */
-#endif
} /* extern "C" { */
#endif
#endif /* RUBY_BIG_DECIMAL_H */
diff --git a/ext/bigdecimal/bigdecimal_en.html b/ext/bigdecimal/bigdecimal_en.html
new file mode 100644
index 0000000000..afaf8eca86
--- /dev/null
+++ b/ext/bigdecimal/bigdecimal_en.html
@@ -0,0 +1,792 @@
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html">
+<style type="text/css"><!--
+body { color: #3f0f0f; background: #fefeff; margin-left: 2em; margin-right: 2em;}
+h1 { color: #ffffff; background-color: #3939AD; border-color: #FF00FF; width: 100%; border-style: solid;
+ border-top-width: 0.1em; border-bottom-width: 0.1em; border-right: none; border-left: none;
+ padding: 0.1em; font-weight: bold; font-size: 160%; text-align: center;}
+h2 { color: #00007f; background-color: #e7e7ff; border-color: #000094; width: 100%; border-style: solid; border-le ft: none; border-right: none; border-top-width: 0.1em; border-bottom-width: 0.1em; padding: 0.1em;
+ font-weight: bold; font-size: 110%;
+}
+h3 { color: #00007f; padding: 0.2em; font-size: 110%;}
+h4, h5 { color: #000000; padding: 0.2em; font-size: 100%;}
+table { margin-top: 0.2em; margin-bottom: 0.2em; margin-left: 2em; margin-right: 2em;}
+caption { color: #7f0000; font-weight: bold;}
+th { background: #e7e7ff; padding-left: 0.2em; padding-right: 0.2em;}
+td { background: #f3f7ff; padding-left: 0.2em; padding-right: 0.2em;}
+code { color: #0000df;}
+dt { margin-top: 0.2em;}
+li { margin-top: 0.2em;}
+pre
+{ BACKGROUND-COLOR: #d0d0d0; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none;
+ BORDER-RIGHT: medium none; BORDER-TOP: medium none; LINE-HEIGHT: 100%; MARGIN: 12px 12px 12px 12px;
+ PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 12px;
+ WHITE-SPACE: pre; WIDTH: 100%
+}
+--></style>
+
+<TITLE>BigDecimal:An extension library for Ruby</TITLE>
+</HEAD>
+<BODY BGCOLOR=#FFFFE0>
+<H1>BigDecimal(Variable Precision Floating Library for Ruby)</H1>
+<DIV align="right"><A HREF="./bigdecimal_ja.html">Japanese</A></DIV><BR>
+BigDecimal is an extension library for the Ruby interpreter.
+Using BigDecimal class, you can obtain any number of significant digits in computation.
+For the details about Ruby see:<BR>
+<UL>
+<LI><A HREF="http://www.ruby-lang.org/en/">http://www.ruby-lang.org/en/</A>:Official Ruby page(English).</LI>
+<LI><A HREF="http://kahori.com/ruby/ring/">http://kahori.com/ruby/ring/</A>:Mutually linked pages relating to Ruby(Japanese).
+</LI>
+</UL>
+NOTE:<BR>
+ This software is provided "AS IS" and without any express or
+ implied warranties,including,without limitation,the implied
+ warranties of merchantability and fitness for a particular
+ purpose. For the details,see COPYING and README included in this
+ distribution.
+<BR>
+<hr>
+
+<H2>Contents</H2>
+<UL>
+<LI><A HREF="#INTRO">Introduction</LI>
+<LI><A HREF="#SPEC">Usage and methods</A></LI>
+<LI><A HREF="#UNDEF">Infinity,NaN,Zero</A></LI>
+<LI><A HREF="#STRUCT">Internal structure</A></LI>
+<LI><A HREF="#BASE">Binary or decimal number representation</A></LI>
+<LI><A HREF="#PREC">Resulting number of significant digits</A></LI>
+</UL>
+<HR>
+
+<A NAME="#INTRO">
+<H2>Introduction</H2>
+Ruby already has builtin (variable length integer number) class Bignum. Using Bignum class,you can obtain
+ any integer value in magnitude. But, variable length decimal number class is not yet built in.
+This is why I made variable length floating class BigDecimal.
+Feel free to send any comments or bug reports to me.
+<A HREF="mailto:shigeo@tinyforest.gr.jp">shigeo@tinyforest.gr.jp</A>
+I will try(but can't promise) to fix bugs reported.
+<hr>
+<H2>Installation</H2>
+The Ruby latest version can be downloaded from <A HREF="http://www.ruby-lang.org/en/">Official Ruby page</A>.
+Once decompress the downloaded Ruby archive,follow the normal installation procedures according to the
+documents included.
+
+<A NAME="#SPEC">
+<H2>Usage and methods</H2>
+Suppose you already know Ruby programming,
+to create BigDecimal objects,the program would like:<BR>
+
+<CODE><PRE>
+ require 'bigdecimal'
+ a=BigDecimal::new("0.123456789123456789")
+ b=BigDecimal("123456.78912345678",40)
+ c=a+b
+</PRE></CODE>
+
+<H3>List of methods</H3>
+In 32 bits integer system,every 4 digits(in decimal) are computed simultaneously.
+This means the number of significant digits in BigDecimal is always a multiple of 4.
+<P>
+Some more methods are available in Ruby code (not C code).
+Functions such as sin,cos ...,are in math.rb in bigdecimal directory.
+To use them,require math.rb as:
+<CODE><PRE>
+require "bigdecimal/math.rb"
+</PRE></CODE>
+For details,see the math.rb code and comments.
+Other utility methods are in util.rb.
+To use util.rb, require it as:
+<CODE><PRE>
+require "bigdecimal/util.rb"
+</PRE></CODE>
+For details,see the util.rb code.
+
+<H4><U>Class methods</U></H4>
+<UL>
+<LI><B>new</B></LI><BLOCKQUOTE>
+"new" method creates a new BigDecimal object.<BR>
+a=BigDecimal::new(s[,n]) or<BR>
+a=BigDecimal(s[,n]) or<BR>
+where:<BR>
+s: Initial value string. Spaces will be ignored. Any unrecognizable character for
+representing initial value terminates the string.<BR>
+n: Maximum number of significant digits of a. n must be a Fixnum object.
+If n is omitted or is equal to 0,then the maximum number of significant digits of a is determined from the length of s.
+Actual number of digits handled in computations are usually greater than n.<BR>
+n is useful when performing divisions like
+<CODE><PRE>
+BigDecimal("1") / BigDecimal("3") # => 0.3333333333 33E0
+BigDecimal("1",10) / BigDecimal("3",10) # => 0.3333333333 3333333333 33333333E0
+</PRE></CODE>
+but the resulting digits obtained may differ in future version.
+</BLOCKQUOTE>
+
+<LI><B>mode</B></LI><BLOCKQUOTE>
+f = BigDecimal.mode(s[,v])<BR>
+mode method controls BigDecimal computation. If the second argument is not given or is nil,then the value
+of current setting is returned.
+Following usage are defined.<BR>
+<P><B>[EXCEPTION control]</B><P>
+Actions when computation results NaN or Infinity can be defined as follows.
+<P>
+<BLOCKQUOTE>
+f = BigDecimal::mode(BigDecimal::EXCEPTION_NaN,flag)<BR>
+f = BigDecimal::mode(BigDecimal::EXCEPTION_INFINITY,flag)<BR>
+f = BigDecimal::mode(BigDecimal::EXCEPTION_UNDERFLOW,flag)<BR>
+f = BigDecimal::mode(BigDecimal::EXCEPTION_OVERFLOW,flag)<BR>
+f = BigDecimal::mode(BigDecimal::EXCEPTION_ZERODIVIDE,flag)<BR>
+f = BigDecimal::mode(BigDecimal::EXCEPTION_ALL,flag)<BR>
+</BLOCKQUOTE>
+EXCEPTION_NaN controls the execution when computation results to NaN.<BR>
+EXCEPTION_INFINITY controls the execution when computation results to Infinity.<BR>
+EXCEPTION_UNDERFLOW controls the execution when computation underflows.<BR>
+EXCEPTION_OVERFLOW controls the execution when computation overflows.<BR>
+EXCEPTION_ZERODIVIDE controls the execution when zero-division occurs.<BR>
+EXCEPTION_ALL controls the execution when any defined exception occurs.<BR>
+If the flag is true,then the relating exception is thrown.<BR>
+No exception is thrown when the flag is false(default) and computation
+continues with the result:<BR>
+<BLOCKQUOTE>
+EXCEPTION_NaN results to NaN<BR>
+EXCEPTION_INFINITY results to +Infinity or -Infinity<BR>
+EXCEPTION_UNDERFLOW results to 0.<BR>
+EXCEPTION_OVERFLOW results to +Infinity or -Infinity<BR>
+EXCEPTION_ZERODIVIDE results to +Infinity or -Infinity<BR>
+</BLOCKQUOTE>
+EXCEPTION_INFINITY,EXCEPTION_OVERFLOW, and EXCEPTION_ZERODIVIDE are
+ currently the same.<BR>
+The return value of mode method is the value set.<BR>
+If nil is specified for the second argument,then current setting is returned.<BR>
+Suppose the return value of the mode method is f,then
+ f &amp; BigDecimal::EXCEPTION_NaN !=0 means EXCEPTION_NaN is set to on.
+<P>
+<B>[ROUND error control]</B><P>
+Rounding operation can be controlled as:
+<BLOCKQUOTE>
+f = BigDecimal::mode(BigDecimal::ROUND_MODE,flag)
+</BLOCKQUOTE>
+where flag must be one of:
+<TABLE>
+
+<TR><TD>ROUND_UP</TD><TD>round away from zero.</TD></TR>
+<TR><TD>ROUND_DOWN</TD><TD>round towards zero(truncate).</TD></TR>
+<TR><TD>ROUND_HALF_UP</TD><TD>round up if the digit &gt;= 5 otherwise truncated(default).</TD></TR>
+<TR><TD>ROUND_HALF_DOWN</TD><TD>round up if the digit &gt;= 6 otherwise truncated.</TD></TR>
+<TR><TD>ROUND_HALF_EVEN</TD><TD>round towards the even neighbor(Banker's rounding).
+<TR><TD>ROUND_CEILING</TD><TD>round towards positive infinity(ceil).</TD></TR>
+<TR><TD>ROUND_FLOOR</TD><TD>round towards negative infinity(floor).</TD></TR>
+</TABLE>
+New rounding mode is returned. If nil is specified for the second argument,then current setting is returned.<BR>
+The digit location for rounding operation can not be specified by this mode method,
+use truncate/round/ceil/floor/add/sub/mult/div methods for each instance instead.
+</BLOCKQUOTE>
+
+<LI><B>limit[(n)]</B></LI><BLOCKQUOTE>
+Limits the maximum digits that the newly created BigDecimal objects can hold never exceed n.
+This means the rounding operation specified by BigDecimal.mode is
+performed if necessary.
+limit returns the value before set if n is nil or is not specified.
+Zero,the default value,means no upper limit.<BR>
+The limit has no more priority than instance methods such as truncate,round,ceil,floor,add,sub,mult,and div. <BR>
+mf = BigDecimal::limit(n)<BR>
+</BLOCKQUOTE>
+
+<LI><B>double_fig</B></LI><BLOCKQUOTE>
+double_fig is a class method which returns the number of digits
+the Float class can have.
+<CODE><PRE>
+ p BigDecimal::double_fig # ==> 20 (depends on the CPU etc.)
+</PRE></CODE>
+The equivalent C programs which calculates the value of
+double_fig is:
+<CODE><PRE>
+ double v = 1.0;
+ int double_fig = 0;
+ while(v + 1.0 > 1.0) {
+ ++double_fig;
+ v /= 10;
+ }
+</PRE></CODE>
+</BLOCKQUOTE>
+
+<LI><B>BASE</B></LI><BLOCKQUOTE>
+Base value used in the BigDecimal calculation.
+On 32 bits integer system,the value of BASE is 10000.<BR>
+b = BigDecimal::BASE<BR>
+</BLOCKQUOTE>
+</UL>
+
+<H4><U>Instance methods</U></H4>
+<UL>
+<LI><B>+</B></LI><BLOCKQUOTE>
+addition(c = a + b)<BR>
+For the resulting number of significant digits of c,see <A HREF="#PREC">Resulting number of significant digits</A>.
+
+</BLOCKQUOTE>
+<LI><B>-</B></LI><BLOCKQUOTE>
+subtraction (c = a - b) or negation (c = -a)<BR>
+For the resulting number of significant digits of c,see <A HREF="#PREC">Resulting number of significant digits</A>.
+
+</BLOCKQUOTE>
+<LI><B>*</B></LI><BLOCKQUOTE>
+multiplication(c = a * b)<BR>
+For the resulting number of significant digits of c,see <A HREF="#PREC">Resulting number of significant digits</A>.
+
+</BLOCKQUOTE>
+<LI><B>/</B></LI><BLOCKQUOTE>
+division(c = a / b)<BR>
+For the resulting number of significant digits of c,see <A HREF="#PREC">Resulting number of significant digits</A>.
+</BLOCKQUOTE>
+
+<LI><B>add(b,n)</B></LI><BLOCKQUOTE>
+c = a.add(b,n)<BR>
+c = a.add(b,n) performs c = a + b.<BR>
+If n is less than the actual significant digits of a + b,
+then c is rounded properly according to the BigDecimal.limit.<BR>
+If n is zero,then the result is the same as +'s.
+</BLOCKQUOTE>
+<LI><B>sub(b,n)</B></LI><BLOCKQUOTE>
+c = a.sub(b,n)<BR>
+c = a.sub(b,n) performs c = a - b.<BR>
+If n is less than the actual significant digits of a - b,
+then c is rounded properly according to the BigDecimal.limit.<BR>
+If n is zero,then the result is the same as -'s.
+
+</BLOCKQUOTE>
+<LI><B>mult(b,n)</B></LI><BLOCKQUOTE>
+c = a.mult(b,n)<BR>
+c = a.mult(b,n) performs c = a * b.<BR>
+If n is less than the actual significant digits of a * b,
+then c is rounded properly according to the BigDecimal.limit.<BR>
+If n is zero,then the result is the same as *'s.
+
+</BLOCKQUOTE>
+<LI><B>div(b[,n])</B></LI><BLOCKQUOTE>
+c = a.div(b,n)<BR>
+c = a.div(b,n) performs c = a / b.<BR>
+If n is less than the actual significant digits of a / b,
+then c is rounded properly according to the BigDecimal.limit.<BR>
+If n is zero,then the result is the same as /'s.
+If n is not given,then the result will be an integer(BigDecimal) like Float#div.
+</BLOCKQUOTE>
+
+<LI><B>fix</B></LI><BLOCKQUOTE>
+c = a.fix<BR>
+returns integer part of a.<BR>
+
+</BLOCKQUOTE>
+<LI><B>frac</B></LI><BLOCKQUOTE>
+c = a.frac<BR>
+returns fraction part of a.<BR>
+
+</BLOCKQUOTE>
+<LI><B>floor[(n)]</B></LI><BLOCKQUOTE>
+c = a.floor<BR>
+returns the maximum integer value (in BigDecimal) which is less than or equal to a.
+<CODE><PRE>
+ c = BigDecimal("1.23456").floor # ==> 1
+ c = BigDecimal("-1.23456").floor # ==> -2
+</PRE></CODE>
+
+As shown in the following example,an optional integer argument (n) specifying the position
+of the target digit can be given.<BR>
+If n> 0,then the (n+1)th digit counted from the decimal point in fraction part is processed(resulting number of fraction part digits is less than or equal to n).<BR>
+If n<0,then the n-th digit counted from the decimal point in integer part is processed(at least n 0's are placed from the decimal point to left).
+<CODE><PRE>
+ c = BigDecimal("1.23456").floor(4) # ==> 1.2345
+ c = BigDecimal("15.23456").floor(-1) # ==> 10.0
+</PRE></CODE>
+
+</BLOCKQUOTE>
+<LI><B>ceil[(n)]</B></LI><BLOCKQUOTE>
+c = a.ceil<BR>
+returns the minimum integer value (in BigDecimal) which is greater than or equal to a.
+<CODE><PRE>
+ c = BigDecimal("1.23456").ceil # ==> 2
+ c = BigDecimal("-1.23456").ceil # ==> -1
+</PRE></CODE>
+
+As shown in the following example,an optional integer argument (n) specifying the position
+of the target digit can be given.<BR>
+If n>0,then the (n+1)th digit counted from the decimal point in fraction part is processed(resulting number of fraction part digits is less than or equal to n).<BR>
+If n<0,then the n-th digit counted from the decimal point in integer part is processed(at least n 0's are placed from the decimal point to left).
+<CODE><PRE>
+ c = BigDecimal("1.23456").ceil(4) # ==> 1.2346
+ c = BigDecimal("15.23456").ceil(-1) # ==> 20.0
+</PRE></CODE>
+
+</BLOCKQUOTE>
+<LI><B>round[(n[,b])]</B></LI><BLOCKQUOTE>
+c = a.round<BR>
+round a to the nearest 1(default)ÅD<BR>
+<CODE><PRE>
+ c = BigDecimal("1.23456").round # ==> 1
+ c = BigDecimal("-1.23456").round # ==> -1
+</PRE></CODE>
+The rounding operation changes according to BigDecimal::mode(BigDecimal::ROUND_MODE,flag) if specified.
+
+As shown in the following example,an optional integer argument (n) specifying the position
+of the target digit can be given.<BR>
+If n>0,then the (n+1)th digit counted from the decimal point in fraction part is processed(resulting number of fraction part digits is less than or equal to n).<BR>
+If n<0,then the n-th digit counted from the decimal point in integer part is processed(at least n 0's are placed from the decimal point to left).
+<CODE><PRE>
+c = BigDecimal::new("1.23456").round(4) # ==> 1.2346
+c = BigDecimal::new("15.23456").round(-1) # ==> 20.0
+</PRE></CODE>
+
+Rounding operation can be specified by setting the second optional argument b with the valid ROUND_MODE.<BR>
+<CODE><PRE>
+c = BigDecimal::new("1.23456").round(3,BigDecimal::ROUND_HALF_EVEN) # ==> 1.234
+c = BigDecimal::new("1.23356").round(3,BigDecimal::ROUND_HALF_EVEN) # ==> 1.234
+</PRE></CODE>
+
+</BLOCKQUOTE>
+<LI><B>truncate[(n)]</B></LI><BLOCKQUOTE>
+c = a.truncate<BR>
+truncate a to the nearest 1ÅD<BR>
+As shown in the following example,an optional integer argument (n) specifying the position
+of the target digit can be given.<BR>
+If n>0,then the (n+1)th digit counted from the decimal point in fraction part is processed(resulting number of fraction part digits is less than or equal to n).<BR>
+If n<0,then the n-th digit counted from the decimal point in integer part is processed(at least n 0's are placed from the decimal point to left).
+
+<CODE><PRE>
+c = BigDecimal::new("1.23456").truncate(4) # ==> 1.2345
+c = BigDecimal::new("15.23456").truncate(-1) # ==> 10.0
+</PRE></CODE>
+</BLOCKQUOTE>
+<LI><B>abs</B></LI><BLOCKQUOTE>
+c = a.abs<BR>
+returns an absolute value of a.<BR>
+
+</BLOCKQUOTE>
+<LI><B>to_i</B></LI><BLOCKQUOTE>
+changes a to an integer.<BR>
+i = a.to_i<BR>
+i becomes to Fixnum or Bignum.
+If a is Infinity or NaN,then i becomes to nil.
+
+</BLOCKQUOTE>
+<LI><B>to_s[(n)]</B></LI><BLOCKQUOTE>
+converts to string(default results look like "0.xxxxxEn").
+<CODE><PRE>
+BigDecimal("1.23456").to_s # ==> "0.123456E1"
+</PRE></CODE>
+If n(>0) is given,then a space is inserted to each of two parts divided by the decimal point
+after every n digits for readability.
+<CODE><PRE>
+BigDecimal("0.1234567890123456789").to_s(10) # ==> "0.1234567890 123456789E0"
+</PRE></CODE>
+n can be a string representing a positive integer number.
+<CODE><PRE>
+BigDecimal("0.1234567890123456789").to_s("10") # ==> "0.1234567890 123456789E0"
+</PRE></CODE>
+If the first character is '+'(or ' '),then '+'(or ' ') will be set before value string
+when the value is positive.
+<CODE><PRE>
+BigDecimal("0.1234567890123456789").to_s(" 10") # ==> " 0.1234567890 123456789E0"
+BigDecimal("0.1234567890123456789").to_s("+10") # ==> "+0.1234567890 123456789E0"
+BigDecimal("-0.1234567890123456789").to_s("10") # ==> "-0.1234567890 123456789E0"
+</PRE></CODE>
+
+At the end of the string,'E'(or 'e') or 'F'(or 'f') can be specified to change
+number representation.
+<CODE><PRE>
+BigDecimal("1234567890.123456789").to_s("E") # ==> "0.1234567890123456789E10"
+BigDecimal("1234567890.123456789").to_s("F") # ==> "1234567890.123456789"
+BigDecimal("1234567890.123456789").to_s("5E") # ==> "0.12345 67890 12345 6789E10"
+BigDecimal("1234567890.123456789").to_s("5F") # ==> "12345 67890.12345 6789"
+</PRE></CODE>
+
+</BLOCKQUOTE>
+<LI><B>exponent</B></LI><BLOCKQUOTE>
+returns an integer holding exponent value of a.<BR>
+n = a.exponent <BR>
+means a = 0.xxxxxxx*10**n.
+</BLOCKQUOTE>
+
+<LI><B>precs</B></LI><BLOCKQUOTE>
+n,m = a.precs <BR>
+precs returns number of significant digits (n) and maximum number of
+significant digits (m) of a.
+</BLOCKQUOTE>
+
+<LI><B>to_f</B></LI><BLOCKQUOTE>
+Creates a new Float object having (nearly) the same value.
+Use split method if you want to convert by yourself.
+</BLOCKQUOTE>
+
+</BLOCKQUOTE>
+<LI><B>sign</B></LI><BLOCKQUOTE>
+n = a.sign <BR>
+returns positive value if a &gt; 0,negative value if a &lt; 0,
+otherwise zero if a == 0.<BR>
+where the value of n means that a is:<BR>
+n = BigDecimal::SIGN_NaN(0) : a is NaN<BR>
+n = BigDecimal::SIGN_POSITIVE_ZERO(1) : a is +0<BR>
+n = BigDecimal::SIGN_NEGATIVE_ZERO(-1) : a is -0<BR>
+n = BigDecimal::SIGN_POSITIVE_FINITE(2) : a is positive<BR>
+n = BigDecimal::SIGN_NEGATIVE_FINITE(-2) : a is negative<BR>
+n = BigDecimal::SIGN_POSITIVE_INFINITE(3) : a is +Infinity<BR>
+n = BigDecimal::SIGN_NEGATIVE_INFINITE(-3) : a is -Infinity<BR>
+The value in () is the actual value,see (<A HREF="#STRUCT">Internal structure</A>.<BR>
+
+</BLOCKQUOTE>
+<LI><B>nan?</B></LI><BLOCKQUOTE>
+a.nan? returns True when a is NaN.
+
+</BLOCKQUOTE>
+<LI><B>infinite?</B></LI><BLOCKQUOTE>
+a.infinite? returns 1 when a is Infinity, -1 when a is -Infinity, nil otherwise.
+
+</BLOCKQUOTE>
+<LI><B>finite?</B></LI><BLOCKQUOTE>
+a.finite? returns true when a is neither Infinity nor NaN.
+</BLOCKQUOTE>
+
+<LI><B>zero?</B></LI><BLOCKQUOTE>
+c = a.zero?<BR>
+returns true if a is equal to 0,otherwise returns false<BR>
+</BLOCKQUOTE>
+<LI><B>nonzero?</B></LI><BLOCKQUOTE>
+c = a.nonzero?<BR>
+returns nil if a is 0,otherwise returns a itself.<BR>
+</BLOCKQUOTE>
+
+<LI><B>split</B></LI><BLOCKQUOTE>
+decomposes a BigDecimal value to 4 parts.
+All 4 parts are returned as an array.<BR>
+Parts consist of a sign(0 when the value is NaN,+1 for positive and
+ -1 for negative value), a string representing fraction part,base value(always 10 currently),and an integer(Fixnum) for exponent respectively.
+a=BigDecimal::new("3.14159265")<BR>
+f,x,y,z = a.split<BR>
+where f=+1,x="314159265",y=10 and z=1<BR>
+therefore,you can translate BigDecimal value to Float as:<BR>
+s = "0."+x<BR>
+b = f*(s.to_f)*(y**z)<BR>
+
+</BLOCKQUOTE>
+<LI><B>inspect</B></LI><BLOCKQUOTE>
+is used for debugging output.<BR>
+p a=BigDecimal::new("3.14",10)<BR>
+should produce output like "#&lt;0x112344:'0.314E1',4(12)%gt;".
+where "0x112344" is the address,
+'0.314E1' is the value,4 is the number of the significant digits,
+and 12 is the maximum number of the significant digits
+the object can hold.
+</BLOCKQUOTE>
+
+<LI><B>sqrt</B></LI><BLOCKQUOTE>
+c = a.sqrt(n)<BR>
+computes square root value of a with significant digit number n at least.<BR>
+</BLOCKQUOTE>
+
+<LI><B>**</B></LI><BLOCKQUOTE>
+c = a ** n<BR>
+returns the value of a powered by n.
+n must be an integer.<BR>
+
+</BLOCKQUOTE>
+<LI><B>power</B></LI><BLOCKQUOTE>
+The same as ** method.<BR>
+c = a.power(n)<BR>
+returns the value of a powered by n(c=a**n).
+n must be an integer.<BR>
+</BLOCKQUOTE>
+
+<LI><B>divmod,quo,modulo,%,remainder</B></LI><BLOCKQUOTE>
+See,corresponding methods in Float class.
+</BLOCKQUOTE>
+
+</BLOCKQUOTE>
+<LI><B>&lt;=&gt;</B></LI><BLOCKQUOTE>
+c = a &lt;=&gt; b <BR>
+returns 0 if a==b,1 if a &gt b,and returns -1 if a &lt b.<BR>
+</BLOCKQUOTE>
+</UL>
+
+Following methods need no explanation.<BR>
+<UL>
+<LI>==</LI>
+<LI>===</LI>
+same as ==,used in case statement.
+<LI>!=</LI>
+<LI>&lt;</LI>
+<LI>&lt;=</LI>
+<LI>&gt;</LI>
+<LI>&gt;=</LI>
+</UL>
+
+<HR>
+<H3>About 'coerce'</H3>
+<B>For the binary operation like A op B:</B>
+<DL>
+<DT> 1.Both A and B are BigDecimal objects</DT>
+<DD> A op B is normally performed.</DD>
+<DT> 2.A is the BigDecimal object but B is other than BigDecimal object</DT>
+<DD> Operation is performed,after B is translated to corresponding BigDecimal object(because BigDecimal supports coerce method).</DD>
+<DT> 3.A is not the BigDecimal object but B is BigDecimal object</DT>
+<DD>If A has coerce method,then B will translate A to corresponding
+BigDecimal object and the operation is performed,otherwise an error occures.</DD>
+</DL>
+
+String is not translated to BigDecimal in default.
+Uncomment /* #define ENABLE_NUMERIC_STRING */ in bigdecimal.c, compile and install
+again if you want to enable string to BigDecimal conversion.
+Translation stops without error at the character representing non digit.
+For instance,"10XX" is translated to 10,"XXXX" is translated to 0.<BR>
+String representing zero or infinity such as "Infinity","+Infinity","-Infinity",and "NaN" can also be translated to BigDecimal unless false is specified by mode method.<BR>
+
+BigDecimal class supports coerce method(for the details about coerce method,see Ruby documentations). This means the most binary operation can be performed if the BigDecimal object is at the left hand side of the operation.<BR><BR>
+
+ For example:
+<CODE><PRE>
+ a = BigDecimal.E(20)
+ c = a * "0.123456789123456789123456789" # A String is changed to BigDecimal object.
+</PRE></CODE>
+is performed normally.<BR>
+ But,because String does not have coerce method,the following example can not be performed.<BR>
+
+<CODE><PRE>
+ a = BigDecimal.E(20)
+ c = "0.123456789123456789123456789" * a # ERROR
+</PRE></CODE>
+
+If you actually have any inconvenience about the error above.
+You can define a new class derived from String class,
+and define coerce method within the new class.<BR>
+
+<hr>
+<A NAME="#UNDEF">
+<H2>Infinity,Not a Number(NaN),Zero</H2>
+Infinite numbers and NaN can be represented by string writing "+Infinity"(or "Infinity"),"-Infinity",and "NaN" respectively in your program.
+Infinite numbers can be obtained by 1.0/0.0(=Infinity) or -1.0/0.0(=-Infinity).
+<BR><BR>
+NaN(Not a number) can be obtained by undefined computation like 0.0/0.0
+or Infinity-Infinity.
+Any computation including NaN results to NaN.
+Comparisons with NaN never become true,including comparison with NaN itself.
+<BR><BR>
+Zero has two different variations as +0.0 and -0.0.
+But,still, +0.0==-0.0 is true.
+<BR><BR>
+Computation results including Infinity,NaN,+0.0 or -0.0 become complicated.
+Run following program and confirm the results.
+Send me any incorrect result if you find.
+
+<CODE><PRE>
+ require "bigdecimal"
+ aa = %w(1 -1 +0.0 -0.0 +Infinity -Infinity NaN)
+ ba = %w(1 -1 +0.0 -0.0 +Infinity -Infinity NaN)
+ opa = %w(+ - * / <=> > >= < == != <=)
+ for a in aa
+ for b in ba
+ for op in opa
+ x = BigDecimal::new(a)
+ y = BigDecimal::new(b)
+ eval("ans= x #{op} y;print a,' ',op,' ',b,' ==> ',ans.to_s,\"\n\"")
+ end
+ end
+ end
+</PRE></CODE>
+<hr>
+
+<A NAME="#STRUCT">
+<H2>Internal structure</H2>
+BigDecimal number is defined by the structure Real in BigDecimal.h.
+Digits representing a float number are kept in the array frac[] defined in the structure.
+In the program,any floating number(BigDecimal number) is represented as:<BR>
+ <BigDecimal number> = 0.xxxxxxxxx*BASE**n<BR><BR>
+where 'x' is any digit representing mantissa(kept in the array frac[]),
+BASE is base value(=10000 in 32 bit integer system),
+and n is the exponent value.<BR>
+Larger BASE value enables smaller size of the array frac[],and increases computation speed.
+The value of BASE is defined ind VpInit(). In 32 bit integer system, this value is
+10000. In 64 bit integer system, the value is 1000000000.
+When BASE is 10000,an element of the array frac[] can have value of from 0 to 9999.
+(up to 4 digits).<BR>
+The structure Real is defined in bigdecimal.h as:<BR>
+<CODE><PRE>
+ typedef struct {
+ VALUE obj; /* Back pointer(VALUE) for Ruby object. */
+ unsigned long MaxPrec; /* The size of the array frac[] */
+ unsigned long Prec; /* Current size of frac[] actually used. */
+ short sign; /* Attribute of the value. */
+ /* ==0 : NaN */
+ /* 1 : +0 */
+ /* -1 : -0 */
+ /* 2 : Positive number */
+ /* -2 : Negative number */
+ /* 3 : +Infinity */
+ /* -3 : -Infinity */
+ unsigned short flag; /* Control flag */
+ int exponent; /* Exponent value(0.xxxx*BASE**exponent) */
+ unsigned long frac[1]; /* An array holding mantissa(Variable) */
+ } Real;
+</CODE></PRE>
+The decimal value 1234.56784321 is represented as(BASE=10000):<BR>
+<PRE>
+ 0.1234 5678 4321*(10000)**1
+</PRE>
+where frac[0]=1234,frac[1]=5678,frac[2]=4321,
+Prec=3,sign=2,exponent=1. MaxPrec can be any value greater than or equal to
+Prec.
+<hr>
+
+<A NAME="#BASE">
+<H2>Binary or decimal number representation</H2>
+I adopted decimal number representation for BigDecimal implementation.
+Of cource,binary number representation is common on the most computers.
+
+<H3>Advantages using decimal representation</H3>
+The reason why I adopted decimal number representation for BigDecimal is:<BR>
+<DL>
+<DT>Easy for debugging
+<DD>The floating number 1234.56784321 can be easily represented as:<BR>
+ frac[0]=1234,frac[1]=5678,frac[2]=4321,exponent=1,and sign=2.
+<DT>Exact representation
+<DD>Following program can add all numbers(in decimal) in a file
+ without any error(no round operation).<BR>
+
+<CODE><PRE>
+ file = File::open(....,"r")
+ s = BigDecimal::new("0")
+ while line = file.gets
+ s = s + line
+ end
+</PRE></CODE>
+
+If the internal representation is binary,translation from decimal to
+binary is required and the translation error is inevitable.
+For example, 0.1 can not exactly be represented in binary.<BR>
+0.1 => b1*2**(-1)+b1*2**(-2)+b3*2**(-3)+b4*2**(-4)....<BR>
+where b1=0,b2=0,b3=0,b4=1...<BR>
+bn(n=1,2,3,...) is infinite series of digit with value of 0 or 1,
+and rounding operation is necessary but where we should round the series ?
+Of course, exact "0.1" is printed if the rounding operation is properly done,
+<DT>Significant digit we can have is automatically determined
+<DD>In binary representation,0.1 can not be represented in finite series of digit.
+
+But we only need one element(frac[0]=1) in decimal representation.
+This means that we can always determine the size of the array frac[] in Real
+structure.
+</DL>
+
+<H3>Disadvantage of decimal representation</H3>
+Because most computers have no internal decimal representation.
+Once you use BigDecimal,you need to keep using it without
+considering computation cost if exact computation is required.
+
+<H4>Which is the first input?</H4>
+Because most people uses decimal notation for numeric data representation,
+BigDecimal can handle numeric data without loss of translation error.
+<hr>
+
+<A NAME="#PREC">
+<H2>Resulting number of significant digits</H2>
+For the fundamental arithmetics such as addition,subtraction,
+multiplication,and division,I prepared 2 group of methods<BR>
+
+<H3>1. +,-,*,/</H3>
+For the operation + - * /,you can not specify the resulting
+number of significant digits.<BR>
+Resulting number of significant digits are defined as:<BR>
+1.1 For *,resulting number of significant digits is the sum of the
+significant digits of both side of the operator. For / ,resulting number of significant digits is the sum of the
+maximum significant digits of both side of the operator.<BR>
+1.2 For + and -,resulting number of significant digits is determined so that
+ no round operation is needed. <br>
+For example, c has more than 100 significant digits if c is computed as:<BR>
+c = 0.1+0.1*10**(-100)<br>
+<BR>
+As +,-,and * are always exact(no round operation is performed unless BigDecimal.limit is specified),
+which means more memory is required to keep computation results.
+But,the division such as c=1.0/3.0 will always be rounded.<BR>
+
+<H3>2. add,sub,mult,div</H3>
+The length of the significant digits obtained from +,-,*,/
+is always defined by that of right and left side of the operator.
+To specify the length of the significant digits by your self,
+use methos add,sub,mult,div.
+<CODE><PRE>
+ BigDecimal("2").div(3,12) # 2.0/3.0 => 0.6666666666 67E0
+</PRE></CODE>
+</BLOCKQUOTE>
+
+<H3>3. truncate,round,ceil,floor</H3>
+Using these methods,you can specify rounding location relatively from
+decimal point.
+<CODE><PRE>
+ BigDecimal("6.66666666666666").round(12) # => 0.6666666666 667E1
+</PRE></CODE>
+</BLOCKQUOTE>
+
+
+<H3>4. Example</H3>
+Following example compute the ratio of the circumference of a circle to
+its diameter(pi=3.14159265358979....) using J.Machin's formula.
+<BR><BR>
+<CODE><PRE>
+#!/usr/local/bin/ruby
+
+require "bigdecimal"
+#
+# Calculates 3.1415.... (the number of times that a circle's diameter
+# will fit around the circle) using J. Machin's formula.
+#
+def big_pi(sig) # sig: Number of significant figures
+ exp = -sig
+ pi = BigDecimal::new("0")
+ two = BigDecimal::new("2")
+ m25 = BigDecimal::new("-0.04")
+ m57121 = BigDecimal::new("-57121")
+
+ u = BigDecimal::new("1")
+ k = BigDecimal::new("1")
+ w = BigDecimal::new("1")
+ t = BigDecimal::new("-80")
+ while (u.nonzero? && u.exponent >= exp)
+ t = t*m25
+ u = t.div(k,sig)
+ pi = pi + u
+ k = k+two
+ end
+
+ u = BigDecimal::new("1")
+ k = BigDecimal::new("1")
+ w = BigDecimal::new("1")
+ t = BigDecimal::new("956")
+ while (u.nonzero? && u.exponent >= exp )
+ t = t.div(m57121,sig)
+ u = t.div(k,sig)
+ pi = pi + u
+ k = k+two
+ end
+ pi
+end
+
+if $0 == __FILE__
+ if ARGV.size == 1
+ print "PI("+ARGV[0]+"):\n"
+ p big_pi(ARGV[0].to_i)
+ else
+ print "TRY: ruby pi.rb 1000 \n"
+ end
+end
+
+</PRE></CODE>
+<HR>
+<FONT size=2>
+<I>
+<A HREF="http://www.tinyforest.gr.jp">
+Shigeo Kobayashi
+</A>
+(E-Mail:<A HREF="mailto:shigeo@tinyforest.gr.jp">&lt;shigeo@tinyforest.gr.jp&gt;</U></A>)
+</I>
+</FONT>
+</TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/ext/bigdecimal/bigdecimal_ja.html b/ext/bigdecimal/bigdecimal_ja.html
new file mode 100644
index 0000000000..cc44d61917
--- /dev/null
+++ b/ext/bigdecimal/bigdecimal_ja.html
@@ -0,0 +1,799 @@
+<!-- saved from url=(0022)http://internet.e-mail -->
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS">
+<style type="text/css"><!--
+body { color: #3f0f0f; background: #fefeff; margin-left: 2em; margin-right: 2em;}
+h1 { color: #ffffff; background-color: #3939AD; border-color: #FF00FF; width: 100%;
+ border-style: solid; border-top-width: 0.1em; border-bottom-width: 0.1em; border-right: none;
+ border-left: none; padding: 0.1em; font-weight: bold; font-size: 160%; text-align: center;
+}
+h2 { color: #00007f; background-color: #e7e7ff; border-color: #000094; width: 100%;
+ border-style: solid; border-left: none; border-right: none; border-top-width: 0.1em; border-bottom-width: 0.1em;
+ padding: 0.1em;
+ font-weight: bold; font-size: 110%;
+}
+h3 { color: #00007f; padding: 0.2em; font-size: 110%;}
+h4, h5 { color: #000000; padding: 0.2em; font-size: 100%;}
+table { margin-top: 0.2em; margin-bottom: 0.2em; margin-left: 2em; margin-right: 2em;}
+caption { color: #7f0000; font-weight: bold;}
+th { background: #e7e7ff; padding-left: 0.2em; padding-right: 0.2em;}
+td { background: #f3f7ff; padding-left: 0.2em; padding-right: 0.2em;}
+code { color: #0000df;}
+dt { margin-top: 0.2em;}
+li { margin-top: 0.2em;}
+pre
+{ BACKGROUND-COLOR: #d0d0d0; BORDER-BOTTOM: medium none; BORDER-LEFT: medium none;
+ BORDER-RIGHT: medium none; BORDER-TOP: medium none; LINE-HEIGHT: 100%; MARGIN: 12px 12px 12px 12px;
+ PADDING-BOTTOM: 12px; PADDING-LEFT: 12px; PADDING-RIGHT: 12px; PADDING-TOP: 12px;
+ WHITE-SPACE: pre; WIDTH: 100%
+}
+--></style>
+
+<TITLE>BigDecimal:An extension library for Ruby</TITLE>
+</HEAD>
+<BODY BGCOLOR=#FFFFE0>
+<H1>BigDecimal(•ϒ_ZpgCu)</H1>
+<DIV align="right"><A HREF="./bigdecimal_en.html">English</A></DIV><BR>
+BigDecimal ̓IuWFNgw̋͂ȃXNvgł Ruby ɉ•ϒ_
+vZ@\lj邽߂̊gCułB
+Ruby ɂ‚Ă̏ڂe͈ȉURLQƂĂB
+<UL>
+<LI><A HREF="http://www.ruby-lang.org/ja/">http://www.ruby-lang.org/ja/</A>FRubyy[W</LI>
+<LI><A HREF="http://kahori.com/ruby/ring/">http://kahori.com/ruby/ring/</A>FRubyɊւy[WH܂</LI>
+</UL>
+<hr>
+<H2>ڎ</H2>
+<UL>
+<LI><A HREF="#INTRO">͂߂</LI>
+<LI><A HREF="#SPEC">gp@ƃ\bḧꗗ</A></LI>
+<LI><A HREF="#UNDEF">A񐔁A[̈</A></LI>
+<LI><A HREF="#STRUCT">\</A></LI>
+<LI><A HREF="#BASE">2i10i</A></LI>
+<LI><A HREF="#PREC">vZxɂ‚</A></LI>
+</UL>
+
+<HR>
+<A NAME="#INTRO">
+<H2>͂߂</H2>
+Ruby ɂ Bignum ƂNXAS̐łvZ邱Ƃł܂B
+ACӌ̕_ZpNX悤łBŁA
+Cӌ̕_ZpgCu BigDecimal 쐬܂B
+s⏕EĂꍇǂǂA
+<A HREF="mailto:shigeo@tinyforest.gr.jp">shigeo@tinyforest.gr.jp</A>
+܂łm点Bs𒼂C͑傢ɂ܂BAԂȂǂ̊֌WŖ
+͂ł܂B܂Aʂɂ‚Ăۏ؂ł̂ł͂܂B
+\߁AB
+<BR><BR>
+̃vÓARɔzzEςč\܂BA쌠͕Ă܂B
+zzEϓ̌ Ruby ̂ɏ܂Bڂ README ǂłB
+
+<hr>
+<H2>CXg[ɂ‚</H2>
+BigDecimal ܂ Ruby ̍ŐVł<A HREF="http://www.ruby-lang.org/ja/">Rubyy[W</A>_E[hł܂B
+_E[hŐVł𓀂Aʏ̃CXg[菇sĉB
+Ruby CXg[΁A BigDecimal pł悤ɂȂ͂łB
+\[Xt@C
+bigdecimal.c,bigdecimal.h
+̂Q‚݂̂łB<BR>
+
+<hr>
+<A NAME="#SPEC">
+<H2>gp@ƃ\bḧꗗ</H2>
+uRuby͊ɏvƂOŁA
+<CODE><PRE>
+require 'bigdecimal'
+a=BigDecimal::new("0.123456789123456789")
+b=BigDecimal("123456.78912345678",40)
+c=a+b
+</PRE></CODE>
+<br>
+Ƃ悤ȊŎgp܂B
+
+<H3>\bhꗗ</H3>
+ȉ̃\bhp”\łB
+uLvƂ BigDecimal xۏ؂錅łB
+҂ł͂܂A኱̗]TČvZ܂B
+܂AႦ΂RQrbg̃VXeł͂POiłSɌvZ܂B]āAł́A
+́uLv͂S̔{ƂȂĂ܂B
+<P>
+ȉ̃\bhȊOɂA(C ł͂Ȃ) Ruby \[X̌`
+񋟂Ă̂܂BႦ΁A
+<CODE><PRE>
+require "bigdecimal/math.rb"
+</PRE></CODE>
+Ƃ邱ƂŁAsin cos Ƃ֐gpł悤ɂȂ܂B
+gp@ȂǁAڍׂ math.rb ̓eQƂĉB
+
+̑AFloat Ƃ̑ݕϊȂǂ̃\bh util.rb ŃT|[gĂ܂B
+pɂ
+<CODE><PRE>
+require "bigdecimal/util.rb"
+</PRE></CODE>
+̂悤ɂ܂Bڍׂ util.rb ̓eQƂĉB
+
+<H4><U>NX\bh</U></H4>
+<UL>
+<LI><B>new</B></LI><BLOCKQUOTE>
+V BigDecimal IuWFNg𐶐܂B<BR>
+a=BigDecimal::new(s[,n]) ܂<BR>
+a=BigDecimal(s[,n])<BR>
+s ͐\鏉l𕶎Ŏw肵܂B
+Xy[X͖܂B܂AfłȂo_
+͏ÎƂ݂Ȃ܂B
+n ͕KvȗLia ̍őLj𐮐Ŏw肵܂B
+n 0 ܂͏ȗꂽƂ́An ̒l s ̗LƂ݂Ȃ܂B
+s ̗L n Ƃ n=0 ̂ƂƓłB
+a ̍őL n ኱傢l̗p܂B
+őL͈ȉ̂悤ȊZsƂɈӖ܂B
+<CODE><PRE>
+BigDecimal("1") / BigDecimal("3") # => 0.3333333333 33E0
+BigDecimal("1",10) / BigDecimal("3",10) # => 0.3333333333 3333333333 33333333E0
+</PRE></CODE>
+AX̉ZɂőL n ̎舵͏̃o[W
+኱ύX”\܂B
+</BLOCKQUOTE>
+
+<LI><B>mode</B></LI><BLOCKQUOTE>
+f = BigDecimal.mode(s[,v])<BR>
+BigDecimal̎sʂ𐧌䂵܂BQȗA܂ nil w肷
+̐ݒl߂܂B<BR>
+ȉ̎gp@`Ă܂B
+<P>
+<B>[O]</B><P>
+vZʂ(NaN)[ɂ鏜ZɂȂƂ̏`邱Ƃł܂B
+<BLOCKQUOTE>
+f = BigDecimal::mode(BigDecimal::EXCEPTION_NaN,flag)<BR>
+f = BigDecimal::mode(BigDecimal::EXCEPTION_INFINITY,flag)<BR>
+f = BigDecimal::mode(BigDecimal::EXCEPTION_UNDERFLOW,flag)<BR>
+f = BigDecimal::mode(BigDecimal::EXCEPTION_OVERFLOW,flag)<BR>
+f = BigDecimal::mode(BigDecimal::EXCEPTION_ZERODIVIDE,flag)<BR>
+f = BigDecimal::mode(BigDecimal::EXCEPTION_ALL,flag)<BR>
+</BLOCKQUOTE>
+
+EXCEPTION_NaN ͌ʂ NaN ɂȂƂ̎włB<BR>
+EXCEPTION_INFINITY ͌ʂ(}Infinity)ɂȂƂ̎włB<BR>
+EXCEPTION_UNDERFLOW ͎wA_[t[Ƃ̎włB<BR>
+EXCEPTION_OVERFLOW ͎wI[o[t[Ƃ̎włB<BR>
+EXCEPTION_ZERODIVIDE ̓[ɂ銄ZsƂ̎włB<BR>
+EXCEPTION_ALL ́A”\ȑSĂɑ΂ĈꊇĐݒ肷ƂɎgp܂B<BR><BR>
+
+flag true ̂Ƃ́Aw肵ԂɂȂƂɗO𔭍s悤ɂȂ܂B<BR>
+flag falseiftHgjȂAO͔s܂BvZʂ͈ȉ̂悤ɂȂ܂B<BR>
+<BLOCKQUOTE>
+EXCEPTION_NaN ̂ƂA(NaN)<BR>
+EXCEPTION_INFINITY ̂ƂA(+ or -Infinity)<BR>
+EXCEPTION_UNDERFLOW ̂ƂA[<BR>
+EXCEPTION_OVERFLOW ̂ƂA+Infinity -Infinity<BR>
+EXCEPTION_ZERODIVIDE ̂ƂA+Infinity -Infinity<BR>
+</BLOCKQUOTE>
+EXCEPTION_INFINITYAEXCEPTION_OVERFLOWAEXCEPTION_ZERODIVIDE
+͍̂Ƃ듯łB<BR>
+߂ĺAݒ̒lłBulv̈Ӗ́AႦ
+BigDecimal::EXCEPTION_NaNƁulv & [ȊOȂ
+EXCEPTION_NaNݒ肳ĂƂӖłB
+
+<P>
+<B>[ۂߏw]</B><P>
+vZr̊ۂߑ̎w肪ł܂B
+<BLOCKQUOTE>
+f = BigDecimal::mode(BigDecimal::ROUND_MODE,flag)
+</BLOCKQUOTE>
+̌`Ŏw肵܂B<BR>
+ŁAflag ͈ȉ(ʓ͑ΉCX^X\bh)̈‚w肵܂B
+<TABLE>
+<TR><TD>ROUND_UP</TD><TD>SĐ؂グ܂B</TD></TR>
+<TR><TD>ROUND_DOWN</TD><TD>SĐ؂̂Ă܂(truncate)B</TD></TR>
+<TR><TD>ROUND_HALF_UP</TD><TD>ľܓ܂(ftHg)B</TD></TR>
+<TR><TD>ROUND_HALF_DOWN</TD><TD>܎̘Z܂B</TD></TR>
+<TR><TD>ROUND_HALF_EVEN</TD><TD>l̘Z܂BT̎͏ʂP̎̂݌Jグ܂(Banker's rounding)B</TD></TR>
+<TR><TD>ROUND_CEILING</TD><TD>l̑傫ɌJグ܂(ceil)B</TD></TR>
+<TR><TD>ROUND_FLOOR</TD><TD>l̏ɌJ艺܂(floor)B</TD></TR>
+
+</TABLE>
+߂l͎w flag ̒lłB
+Q nil w肷ƁA̐ݒlԂ܂B
+mode \bhł͊ۂߑ̈ʒu[Uw肷邱Ƃ͂ł܂B
+ۂߑƈʒuŐ䂵ꍇ BigDecimal::limit truncate/round/ceil/floorA
+add/sub/mult/div ƂCX^X\bhgpĉB
+</BLOCKQUOTE>
+<LI><B>limit([n])</B></LI><BLOCKQUOTE>
+BigDecimalIuWFNg̍ő包nɐ܂B
+߂l͐ݒ肷O̒lłBݒl̃ftHgl͂OŁAƂӖłB
+n w肵ȂA܂ n nil ̏ꍇ́A̍ő包Ԃ܂B<BR>
+vZ𑱍sԂɁǍɑĂ܂悤ȏꍇ
+ limit ŗ\ߌ𐧌ł܂B̏ꍇ BigDecimal.mode Ŏw肳ꂽ
+ۂߏs܂B
+ACX^X\bh (truncate/round/ceil/floor/add/sub/mult/div)
+ limit D悳܂B<BR>
+mf = BigDecimal::limit(n)<BR>
+</BLOCKQUOTE>
+
+<LI><B>double_fig</B></LI><BLOCKQUOTE>
+Ruby Float NXێłL̐Ԃ܂B
+<CODE><PRE>
+ p BigDecimal::double_fig # ==> 20 (depends on the CPU etc.)
+</PRE></CODE>
+double_fig͈ȉ C vǑʂƓłB
+<CODE><PRE>
+ double v = 1.0;
+ int double_fig = 0;
+ while(v + 1.0 > 1.0) {
+ ++double_fig;
+ v /= 10;
+ }
+</PRE></CODE>
+</BLOCKQUOTE>
+
+<LI><B>BASE</B></LI><BLOCKQUOTE>
+Ŏgp̒lłB 32 rbg̏nł10000łB<BR>
+b = BigDecimal::BASE<BR>
+</BLOCKQUOTE>
+</UL>
+
+<H4><U>CX^X\bh</U></H4>
+<UL>
+<LI><B>+</B></LI><BLOCKQUOTE>
+Zic = a + bj<BR>
+c ̐xɂ‚Ắu<A HREF="#PREC">vZxɂ‚</A>vQƂĂB
+</BLOCKQUOTE>
+
+<LI><B>-</B></LI><BLOCKQUOTE>
+Zic = a - bjA܂͕]ic = -aj<BR>
+c ̐xɂ‚Ắu<A HREF="#PREC">vZxɂ‚</A>vQƂĂB
+
+</BLOCKQUOTE>
+<LI><B>*</B></LI><BLOCKQUOTE>
+Z(c = a * b)<BR>
+c̐x(a̐x)+(b̐x)xłB<br>
+ڂ́u<A HREF="#PREC">vZxɂ‚</A>vQƂĂB
+
+</BLOCKQUOTE>
+<LI><B>/</B></LI><BLOCKQUOTE>
+Z(c = a / b)<BR>
+c ̐xɂ‚Ắu<A HREF="#PREC">vZxɂ‚</A>vQƂĂB
+
+</BLOCKQUOTE>
+
+<LI><B>add(b,n)</B></LI><BLOCKQUOTE>
+ȉ̂悤Ɏgp܂B<BR>
+c = a.add(b,n)<BR>
+c = a + b ő n ܂ŌvZ܂B<BR>
+a + b ̐x n 傫Ƃ BigDecimal.mode Ŏw肳ꂽ@Ŋۂ߂܂B<BR>
+n [Ȃ + ƓłB
+</BLOCKQUOTE>
+<LI><B>sub(b,n)</B></LI><BLOCKQUOTE>
+ȉ̂悤Ɏgp܂B<BR>
+c = a.sub(b,n)<BR>
+c = a - b ő n ܂ŌvZ܂B<BR>
+a - b ̐x n 傫Ƃ BigDecimal.mode Ŏw肳ꂽ@Ŋۂ߂܂B<BR>
+n [Ȃ - ƓłB
+
+</BLOCKQUOTE>
+<LI><B>mult(b,n)</B></LI><BLOCKQUOTE>
+ȉ̂悤Ɏgp܂B<BR>
+c = a.mult(b,n)<BR>
+c = a * b ő n ܂ŌvZ܂B<BR>
+a * b ̐x n 傫Ƃ BigDecimal.mode Ŏw肳ꂽ@Ŋۂ߂܂B<BR>
+n [Ȃ * ƓłB
+
+</BLOCKQUOTE>
+<LI><B>div(b[,n])</B></LI><BLOCKQUOTE>
+ȉ̂悤Ɏgp܂B<BR>
+c = a.div(b,n)<BR>
+c = a / b ő n ܂ŌvZ܂B
+a / b ̐x n 傫Ƃ BigDecimal.mode Ŏw肳ꂽ@Ŋۂ߂܂B<BR>
+n [Ȃ / ƓłB<BR>
+n ȗꂽƂ Float#div ƓlɌʂ(BigDecimal)ɂȂ܂B
+</BLOCKQUOTE>
+
+<LI><B>fix</B></LI><BLOCKQUOTE>
+a ̏_ȉ̐؂̂āB<BR>
+c = a.fix
+</BLOCKQUOTE>
+<LI><B>frac</B></LI><BLOCKQUOTE>
+a ̐̐؂̂āB<BR>
+c = a.frac
+</BLOCKQUOTE>
+
+<LI><B>floor[(n)]</B></LI><BLOCKQUOTE>
+c = a.floor<BR>
+a ȉ̍ő吮iBigDecimal ljԂ܂B
+<CODE><PRE>
+c = BigDecimal("1.23456").floor # ==> 1
+c = BigDecimal("-1.23456").floor # ==> -2
+</PRE></CODE>
+ȉ̂悤Ɉ n ^邱Ƃł܂B<BR>
+n>=0 ȂA_ȉ n+1 ʂ̐𑀍삵܂(_ȉAő n ɂ܂)B<BR>
+n ̂Ƃ͏_ȏ n ڂ𑀍삵܂(_ʒu獶ɏȂƂ n ‚ 0 т܂)B<BR>
+<CODE><PRE>
+ c = BigDecimal("1.23456").floor(4) # ==> 1.2345
+ c = BigDecimal("15.23456").floor(-1) # ==> 10.0
+</PRE></CODE>
+
+</BLOCKQUOTE>
+<LI><B>ceil[(n)]</B></LI><BLOCKQUOTE>
+c = a.ceil<BR>
+a ȏ̐̂AłvZA̒liBigDecimal ljԂ܂B
+<CODE><PRE>
+c = BigDecimal("1.23456").ceil # ==> 2
+c = BigDecimal("-1.23456").ceil # ==> -1
+</PRE></CODE>
+
+ȉ̂悤Ɉ^āA_ȉ n+1 ʂ̐𑀍삷邱Ƃł܂B<BR>
+n>=0 ȂA_ȉ n+1 ʂ̐𑀍삵܂(_ȉAő n ɂ܂)B<BR>
+ n ̂Ƃ͏_ȏ n ڂ𑀍삵܂(_ʒu獶ɏȂƂ n ‚ 0 т܂)B<BR>
+<CODE><PRE>
+ c = BigDecimal("1.23456").ceil(4) # ==> 1.2346
+ c = BigDecimal("15.23456").ceil(-1) # ==> 20.0
+</PRE></CODE>
+
+</BLOCKQUOTE>
+<LI><B>round[(n[,b])]</B></LI><BLOCKQUOTE>
+c = a.round<BR>
+
+NX\bh BigDecimal::mode(BigDecimal::ROUND_MODE,flag) Ŏw肵
+ROUND_MODE ɏ]Ċۂߑs܂B
+BigDecimal::mode(BigDecimal::ROUND_MODE,flag) ʼnw肹AA
+w肵Ȃꍇ́u_ȉʂ̐ľܓĐiBigDecimal ljvɂ܂B<BR>
+<CODE><PRE>
+ c = BigDecimal("1.23456").round # ==> 1
+ c = BigDecimal("-1.23456").round # ==> -1
+</PRE></CODE>
+
+ȉ̂悤Ɉ^āA_ȉ n+1 ʂ̐𑀍삷邱Ƃł܂B<BR>
+n ̎́A_ȉ n+1 ʂ̐ۂ߂܂(_ȉAő n ɂ܂)B<BR>
+n ̂Ƃ͏_ȏ n ڂۂ߂܂(_ʒu獶ɏȂƂ n ‚ 0 т܂)B
+<CODE><PRE>
+c = BigDecimal("1.23456").round(4) # ==> 1.2346
+c = BigDecimal("15.23456").round(-1) # ==> 20.0
+</PRE></CODE>
+QԖڂ̈w肷ƁABigDecimal#mode ̎w𖳎āAw肳ꂽ@
+ۂߑs܂B
+<CODE><PRE>
+c = BigDecimal("1.23456").round(3,BigDecimal::ROUND_HALF_EVEN) # ==> 1.234
+c = BigDecimal("1.23356").round(3,BigDecimal::ROUND_HALF_EVEN) # ==> 1.234
+</PRE></CODE>
+
+</BLOCKQUOTE>
+<LI><B>truncate</B></LI><BLOCKQUOTE>
+c = a.truncate<BR>
+_ȉ̐؂̂ĂĐiBigDecimal ljɂ܂B<BR>
+ȉ̂悤Ɉ^āA_ȉ n+1 ʂ̐𑀍삷邱Ƃł܂B<BR>
+n ̎́A_ȉ n+1 ʂ̐؂̂Ă܂(_ȉAő n ɂ܂)B
+n ̂Ƃ͏_ȏ n ڂ𑀍삵܂(_ʒu獶ɏȂƂ n ‚ 0 т܂)B<BR>
+<CODE><PRE>
+c = BigDecimal("1.23456").truncate(4) # ==> 1.2345
+c = BigDecimal("15.23456").truncate(-1) # ==> 10.0
+</PRE></CODE>
+</BLOCKQUOTE>
+
+</BLOCKQUOTE>
+<LI><B>abs</B></LI><BLOCKQUOTE>
+̐Βl<BR>
+c = a.abs<BR>
+
+</BLOCKQUOTE>
+<LI><B>to_i</B></LI><BLOCKQUOTE>
+_ȉ؂̂ĂĐɕϊ܂B<BR>
+i = a.to_i<BR>
+i ͒lɉ Fixnum Bignum ɂȂ܂B
+a Infinity NaN ̂ƂAi nil ɂȂ܂B
+</BLOCKQUOTE>
+<LI><B>to_f</B></LI><BLOCKQUOTE>
+Float IuWFNgɕϊ܂B
+肫ߍׂlKvȂ split \bh𗘗p
+B
+</BLOCKQUOTE>
+<LI><B>to_s[(n)]</B></LI><BLOCKQUOTE>
+ɕϊ܂(ftHg "0.xxxxxEn" ̌`ɂȂ܂jB
+<CODE><PRE>
+BigDecimal("1.23456").to_s # ==> "0.123456E1"
+</PRE></CODE>
+ n ɐ̐w肳ꂽƂ́A_ŕ鍶EAꂼ n
+ɋ󔒂ŋ؂܂B
+<CODE><PRE>
+BigDecimal("0.1234567890123456789").to_s(10) # ==> "0.1234567890 123456789E0"
+</PRE></CODE>
+ n ɐ̐\w肷邱Ƃł܂B
+<CODE><PRE>
+BigDecimal("0.1234567890123456789").to_s("10") # ==> "0.1234567890 123456789E0"
+</PRE></CODE>
+̍ŏ '+'i܂ ' 'jtƁAl̏ꍇA擪 '+'i܂ ' 'jt܂
+ȉꍇ́A '-' t܂BjB
+<CODE><PRE>
+BigDecimal("0.1234567890123456789").to_s(" 10") # ==> " 0.1234567890 123456789E0"
+BigDecimal("0.1234567890123456789").to_s("+10") # ==> "+0.1234567890 123456789E0"
+BigDecimal("-0.1234567890123456789").to_s("10") # ==> "-0.1234567890 123456789E0"
+</PRE></CODE>
+
+ɕ̍Ō E(܂ e) F(܂ f) w肷邱ƂŁAȉ̂悤
+\`ύX邱Ƃł܂B
+<CODE><PRE>
+BigDecimal("1234567890.123456789").to_s("E") # ==> "0.1234567890123456789E10"
+BigDecimal("1234567890.123456789").to_s("F") # ==> "1234567890.123456789"
+BigDecimal("1234567890.123456789").to_s("5E") # ==> "0.12345 67890 12345 6789E10"
+BigDecimal("1234567890.123456789").to_s("5F") # ==> "12345 67890.12345 6789"
+</PRE></CODE>
+
+</BLOCKQUOTE>
+<LI><B>exponent</B></LI><BLOCKQUOTE>
+w𐮐lŕԂ܂B
+n = a.exponent <BR>
+ a ̒l 0.xxxxxxx*10**n Ӗ܂B
+</BLOCKQUOTE>
+
+<LI><B>precs</B></LI><BLOCKQUOTE>
+n,m = a.precs<BR>
+a ̗L (n) ƍőL (m) ̔zԂ܂B
+
+</BLOCKQUOTE>
+
+<LI><B>sign</B></LI><BLOCKQUOTE>
+l(sign &gt; 0)A(sign &lt; 0)Ȃ(sigh==0)ł邩̏Ԃ܂B
+n = a.sign <BR>
+ƂƂ n ̒l a ȉ̂ƂӖ܂B<BR>
+() ̒̐́Aۂ̒lł(<A HREF="#STRUCT">u\v</A>Q)B<BR>
+n = BigDecimal::SIGN_NaN(0) : a NaN<BR>
+n = BigDecimal::SIGN_POSITIVE_ZERO(1) : a +0<BR>
+n = BigDecimal::SIGN_NEGATIVE_ZERO(-1) : a -0<BR>
+n = BigDecimal::SIGN_POSITIVE_FINITE(2) : a ͐̒l<BR>
+n = BigDecimal::SIGN_NEGATIVE_FINITE(-2) : a ͕̒l<BR>
+n = BigDecimal::SIGN_POSITIVE_INFINITE(3) : a +Infinity<BR>
+n = BigDecimal::SIGN_NEGATIVE_INFINITE(-3) : a -Infinity<BR>
+
+</BLOCKQUOTE>
+<LI><B>nan?</B></LI><BLOCKQUOTE>
+a.nan? a NaN̂Ƃ^Ԃ܂B
+</BLOCKQUOTE>
+<LI><B>infinite?</B></LI><BLOCKQUOTE>
+a.infinite? a +̂Ƃ 1 A-̂Ƃ -1AȊÔƂ nil Ԃ܂B
+</BLOCKQUOTE>
+<LI><B>finite?</B></LI><BLOCKQUOTE>
+a.finite? a ܂ NaN łȂƂ^Ԃ܂B
+</BLOCKQUOTE>
+
+<LI><B>zero?</B></LI><BLOCKQUOTE>
+a 0 Ȃ true ɂȂ܂B<BR>
+c = a.zero?
+</BLOCKQUOTE>
+<LI><B>nonzero?</B></LI><BLOCKQUOTE>
+a 0 Ȃ nilA0 ȊOȂ a ̂̂Ԃ܂B<BR>
+c = a.nonzero?
+
+</BLOCKQUOTE>
+<LI><B>split</B></LI><BLOCKQUOTE>
+BigDecimal l 0.xxxxxxx*10**n ƕ\ƂɁAiNaN̂Ƃ
+0AȊO+1-1ɂȂ܂jA
+̕i"xxxxxxx"jƁAi10jAXɎw n z
+Ԃ܂B<BR>
+a=BigDecimal::new("3.14159265")<BR>
+f,x,y,z = a.split<BR>
+ƂƁAf=+1Ax="314159265"Ay=10Az=1ɂȂ܂B<BR>
+]āA<BR>
+s = "0."+x<BR>
+b = f*(s.to_f)*(y**z)<BR>
+ Float ɕϊ邱Ƃł܂B
+</BLOCKQUOTE>
+<LI><B>inspect</B></LI><BLOCKQUOTE>
+fobOo͂Ɏgp܂B<BR>
+p a=BigDecimal::new("3.14",10)<BR>
+ƂƁA[0x112344:'0.314E1',4(12)]̂悤ɏo͂܂B
+ŏ16i̓IuWFNg̃AhXA '0.314E1' ͒lA
+4݂̗͌L(\኱傫Ƃ܂)A
+Ō̓IuWFNg蓾ő包ɂȂ܂B
+</BLOCKQUOTE>
+<LI><B>**</B></LI><BLOCKQUOTE>
+a n vZ܂B͐B<BR>
+c = a ** n<BR>
+ʂƂ c ̗L a n {ȏɂȂ̂ŒӁB
+</BLOCKQUOTE>
+<LI><B>power</B></LI><BLOCKQUOTE>
+** ƓŁAa n vZ܂B͐B<BR>
+c = a.power(n)<BR>
+ʂƂ c ̗L a n {ȏɂȂ̂ŒӁB
+</BLOCKQUOTE>
+<LI><B>sqrt</B></LI><BLOCKQUOTE>
+a̗L n ̕in ̕ł͂܂j
+j[g@ŌvZ܂B<BR>
+c = a.sqrt(n)<BR>
+</BLOCKQUOTE>
+
+<LI><B>divmod,quo,modulo,%,remainder</B></LI><BLOCKQUOTE>
+ڍׂ͑Ή Float ̊e\bhQƂĉB
+</BLOCKQUOTE>
+
+<LI><B>&lt=&gt</B></LI><BLOCKQUOTE>
+a==b Ȃ 0Aa &gt b Ȃ 1Aa &lt b Ȃ -1 ɂȂ܂B<BR>
+c = a &lt=&gt b
+</BLOCKQUOTE>
+</UL>
+́AǂŎ̔@łB<BR>
+<UL>
+<LI><B>==</B></LI>
+<LI><B>===</B></LI>
+u==vƓł case Ŏgp܂B
+<LI><B>!=</B></LI>
+<LI><B>&lt</B></LI>
+<LI><B>&lt=</B></LI>
+<LI><B>&gt</B></LI>
+<LI><B>&gt=</B></LI>
+</UL>
+
+<H3>coerceɂ‚</H3>
+BigDecimal IuWFNgZpZq̍ɂƂ́ABigDecimal IuWFNg
+EɂIuWFNg(KvȂ) BigDecimal ɕϊĂvZ܂B
+]āABigDecimal IuWFNgȊOłlӖ̂ȂEɒu
+Z͉”\łB<BR>
+ÁiʏjlɎϊ邱Ƃ͂ł܂B
+𐔒lɎϊꍇ bigfloat.c
+u/* #define ENABLE_NUMERIC_STRING */ṽRgOĂA
+ăRpCAăCXg[Kv܂B
+Ől^ꍇ͒ӂKvłBlɕϊłȂƁA
+Pɕϊ~߂邾ŃG[ɂ͂Ȃ܂B"10XX"ȂPOA"XXXX"͂O
+ƈ܂B<BR>
+<CODE><PRE>
+ a = BigDecimal.E(20)
+ c = a * "0.123456789123456789123456789" # BigDecimal ɕϊĂvZ
+</PRE></CODE>
+񐔂\ƂāA"Infinity"A"+Infinity"A"-Infinity"A"NaN"
+gpł܂(啶Eʂ܂)BAmode \bh false
+w肵ꍇ͗O܂B
+<BR>
+܂ABigDecimalNX coerceiRuby{QƁjT|[gĂ܂B
+]āABigDecimal IuWFNgEɂꍇ͑vłB
+A݂ Ruby C^v^̎dlA񂪍ɂƌvZł܂B<BR>
+<CODE><PRE>
+ a = BigDecimal.E(20)
+ c = "0.123456789123456789123456789" * a # G[
+</PRE></CODE>
+KvƂ͎v܂񂪁AǂĂƌl
+ String IuWFNgpVȃNX쐬ĂA
+̃NX coerce T|[gĂB
+
+<hr>
+<A NAME="#UNDEF">
+<H2>A񐔁A[̈</H2>
+uvƂ͕\łȂ炢傫ȐłBʂɈ߂
+ +Infinityi̖j -Infinityi̖jƂ
+悤ɕ\L܂B
+ 1.0/0.0 ̂悤Ƀ[Ŋ悤ȌvZƂɐ܂B
+<BR><BR>
+u񐔁v 0.0/0.0 Infinity-Infinity ̌ʂ`łȂ
+vZƂɐ܂B񐔂 NaNiNot a Numberjƕ\L܂B
+NaN ܂ތvZ͑S NaN ɂȂ܂B܂ NaN ͎܂߂āAǂȐ
+Ƃv܂B
+<BR><BR>
+[ +0.0 -0.0 ݂܂BA+0.0==-0.0 true łB
+<BR><BR>
+InfinityANaNA +0.0 -0.0 ܂񂾌vZʂ͑gݍ킹
+蕡GłB̂ĺAȉ̃vOsČʂ
+mFĂiʂɂ‚āA^ԈႢ𔭌ꂽ
+m点肢܂jB
+
+<PRE>
+<CODE>
+require "bigdecimal"
+
+aa = %w(1 -1 +0.0 -0.0 +Infinity -Infinity NaN)
+ba = %w(1 -1 +0.0 -0.0 +Infinity -Infinity NaN)
+opa = %w(+ - * / <=> > >= < == != <=)
+
+for a in aa
+ for b in ba
+ for op in opa
+ x = BigDecimal::new(a)
+ y = BigDecimal::new(b)
+ eval("ans= x #{op} y;print a,' ',op,' ',b,' ==> ',ans.to_s,\"\n\"")
+ end
+ end
+end
+</CODE>
+</PRE>
+
+<hr>
+<A NAME="#STRUCT">
+<H2>\</H2>
+BigDecimalŕ_͍\(Real)ŕ\܂B
+̂ unsigned long ̔z(ȉ̍\̗vffrac)ŊǗ܂B
+TOIɂ́Aȉ̂悤ɂȂ܂B<BR><BR>
+ <_> = 0.xxxxxxxxx*BASE**n<BR><BR>
+ŁAx͉\ABASE͊iPOiȂPOjAn͎w\
+lłBBASE傫قǁA傫Ȑl\ł܂B‚܂Az̃TCY
+Ȃł܂BBASE͑傫قǓs悢킯łAfobÔ₷Ȃǂ
+lāA10000ɂȂĂ܂iBASEVpInit()֐ŎIɌvZ܂jB
+́A32rbg̏ꍇłB64rbg̏ꍇ͂Ƒ傫ȒlɂȂ܂B
+cOȂA64rbgł̃eXg͂܂Ă܂iAꂽ
+ʂĂ΂肪łjB
+BASE10000̂Ƃ́Aȉ̉̔z(frac)̊evfɂ͍őłS
+i[܂B<BR><BR>
+_\(Real)͈ȉ̂悤ɂȂĂ܂B
+<BR>
+<CODE><PRE>
+ typedef struct {
+ unsigned long MaxPrec; // ő吸x(frac[]̔zTCY)
+ unsigned long Prec; // x(frac[]̎gpTCY)
+ short sign; // ȉ̂悤ɕ̏Ԃ`܂B
+ // ==0 : NaN
+ // 1 : +0
+ // -1 : -0
+ // 2 : ̒l
+ // -2 : ̒l
+ // 3 : +Infinity
+ // -3 : -Infinity
+ unsigned short flag; // e̐tbO
+ int exponent; // w̒l(*BASE**exponent)
+ unsigned long frac[1]; // ̔z(•)
+ } Real;
+</CODE></PRE>
+Ⴆ 1234.56784321 Ƃ(BASE=10000Ȃ)<BR>
+<PRE>
+ 0.1234 5678 4321*(10000)**1
+</PRE>
+ł frac[0]=1234Afrac[1]=5678Afrac[2]=4321A
+Prec=3Asign=2Aexponent=1 ƂȂ܂BMaxPrec
+Prec 傫΂‚ł܂܂Bflag
+gp@͎ɈˑēŎgp܂B
+
+<hr>
+<A NAME="#BASE">
+<H2>2i10i</H2>
+BigDecimal <_> = 0.xxxxxxxxx*10**n Ƃ10i`Őlێ܂B
+AvZ@̕_̓\́A܂łȂ <_> = 0.bbbbbbbb*2**n Ƃ
+2i`ʂł(x 0 9 ܂ŁAb 0 1 ̐)B
+BigDecimal Ȃ10i̓\`̗p̂ȉɐ܂B
+<H4>10ĩbg</H4>
+<DL>
+<DT>fobÔ₷
+<DD>܂AvO쐬yłBfrac[0]=1234Afrac[1]=5678Afrac[2]=4321A
+exponent=1Asign=2 Ȃ琔l 1234.56784321 ł̂͌Βɕ܂B
+
+<DT>10i\LꂽlȂmɓ\ɕϊł
+<DD>Ⴆ΁Aȉ̂悤ȃvO͑S덷
+vZ邱Ƃł܂Bȉ̗́AsɈ‚̐l
+Ăt@C file ̍vl߂̂łB
+<CODE><PRE>
+ file = File::open(....,"r")
+ s = BigDecimal::new("0")
+ while line = file.gets
+ s = s + line
+ end
+</PRE></CODE>
+̗2iłƌ덷荞މ”\܂B
+Ⴆ 0.1 2iŕ\ 0.1 = b1*2**(-1)+b1*2**(-2)+b3*2**(-3)+b4*2**(-4)....
+ƖɑĂ܂܂(b1=0,b2=0,b3=0,b4=1...)B bn(n=1,2,3,...)
+2i\ 0 1 ̐łB]āAǂőł؂Kv܂B
+ŕϊ덷܂BAēx10i\LɂĈ悤
+ꍇ͓K؂ȊۂߑiľܓjɂčĂ "0.1" ƕ\܂BA
+ł͐m 0.1 ł͂܂B
+
+<DT>L͗Lłi‚܂莩łj
+<DD>0.1 \邽߂̗̈͂‚̔zvfi frac[0]=1 jōς݂܂B
+zvf̐10il玩IɌł܂B́A•ϒ_Zł
+厖ȂƂłBt 0.1 2i\Ƃɂ2i̗L‚ɂ̂ 0.1
+ł͌ł܂B
+</DL>
+
+<H3>10ĩfbg</H3>
+͍܂ł̃bǵÂ܂܃fbgɂȂ܂B
+A10i2iɕϊ悤ȑ͕ϊ덷
+𔺂ꍇ邱Ƃ͂ł܂B
+T̃Rs[^10i̓\ĂȂ̂ŁA
+BigDecimal 𗘗pČ덷̌vZꍇ́AvZx
+𖳎ĂŌ܂ BigDecimal gpKv܂B
+
+<H3>ŏ͉H</H3>
+ŌvZƂɂ킴킴2igl͋ɂ߂Ă܂łB
+vZ@Ƀf[^͂ƂقƂǂ̏ꍇA
+10iœ͂܂B̌ʁAdouble ̌vZ@
+\͍ŏ덷Ăꍇ܂B
+BigDecimal ̓[U͂덷Ŏ荞ނƂł܂B
+fobO₷̂ƁAf[^ǂ݂ݎɌ덷Ȃ
+Ƃ̂ۂ̃bgłB
+
+<hr>
+<A NAME="#PREC">
+<H2>vZxɂ‚</H2>
+c = a op b ƂvZ(op + - * /)Ƃ̓
+ȉ̂悤ɂȂ܂B<BR><BR>
+PDZ(a ̗L)+(b ̗L)A
+Z(a ̍őL)+(b ̍őL)̍ő包iۂ́A]TāA
+傫Ȃ܂j•ϐ c Vɐ܂B
+Z̏ꍇ́A덷oȂ̐x c 𐶐܂BႦ
+ c = 0.1+0.1*10**(-100) ̂悤ȏꍇAc ̐x͂POOȏ̐x
+‚悤ɂȂ܂B
+<BR><BR>
+QD c = a op b ̌vZs܂B<BR><BR>
+̂悤ɁAZƏZł c ͕Ku덷oȂv̐x
+Đ܂(BigDecimal.limit w肵Ȃꍇ)B
+Z(a ̍őL)+(b ̍őL)̍ő包
+ c ܂Ac = 1.0/3.0 ̂悤ȌvZŖ炩Ȃ悤ɁA
+ c ̍ő吸x𒴂ƂŌvZł؂ꍇ܂B<BR><BR>
+ɂAc ̍ő吸x a b 傫Ȃ܂̂ c KvƂ
+[̈͑傫Ȃ邱ƂɒӂĉB
+<BR><BR>
+ӁFu+,-,*,/vł͌ʂ̐xiLjŎwł܂B
+xRg[ꍇ́Aȉ̃CX^X\bhgp܂B<BR>
+<UL>
+<LI>add,sub,mult,div</LI><BLOCKQUOTE>
+̃\bh͐擪(ō)̐̌wł܂B
+<CODE><PRE>
+ BigDecimal("2").div(3,12) # 2.0/3.0 => 0.6666666666 67E0
+</PRE></CODE>
+</BLOCKQUOTE>
+<LI>truncate,round,ceil,floor</LI><BLOCKQUOTE>
+̃\bh͏_̑Έʒuw肵Č肵܂B
+<CODE><PRE>
+ BigDecimal("6.66666666666666").round(12) # => 0.6666666666 667E1
+</PRE></CODE>
+</BLOCKQUOTE>
+</UL>
+<H3>ŐxRg[ꍇ</H3>
+Őx(L)Rg[ꍇ addAsubAmultAdiv ̃\bh
+gpł܂B
+ȉ̉~vZvÔ悤ɁA
+߂錅͎Ŏw肷邱Ƃł܂B
+<BR><BR>
+<CODE><PRE>
+#!/usr/local/bin/ruby
+
+require "bigdecimal"
+#
+# Calculates 3.1415.... (the number of times that a circle's diameter
+# will fit around the circle) using J. Machin's formula.
+#
+def big_pi(sig) # sig: Number of significant figures
+ exp = -sig
+ pi = BigDecimal::new("0")
+ two = BigDecimal::new("2")
+ m25 = BigDecimal::new("-0.04")
+ m57121 = BigDecimal::new("-57121")
+
+ u = BigDecimal::new("1")
+ k = BigDecimal::new("1")
+ w = BigDecimal::new("1")
+ t = BigDecimal::new("-80")
+ while (u.nonzero? && u.exponent >= exp)
+ t = t*m25
+ u = t.div(k,sig)
+ pi = pi + u
+ k = k+two
+ end
+
+ u = BigDecimal::new("1")
+ k = BigDecimal::new("1")
+ w = BigDecimal::new("1")
+ t = BigDecimal::new("956")
+ while (u.nonzero? && u.exponent >= exp )
+ t = t.div(m57121,sig)
+ u = t.div(k,sig)
+ pi = pi + u
+ k = k+two
+ end
+ pi
+end
+
+if $0 == __FILE__
+ if ARGV.size == 1
+ print "PI("+ARGV[0]+"):\n"
+ p big_pi(ARGV[0].to_i)
+ else
+ print "TRY: ruby pi.rb 1000 \n"
+ end
+end
+
+</PRE></CODE>
+<HR>
+<FONT size=2>
+<I>
+<A HREF="http://www.tinyforest.gr.jp">
+ ΗY
+</A>
+(E-Mail:<A HREF="mailto:shigeo@tinyforest.gr.jp">&ltshigeo@tinyforest.gr.jp&gt</U></A>)
+</I>
+</FONT>
+</TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/ext/bigdecimal/lib/bigdecimal/jacobian.rb b/ext/bigdecimal/lib/bigdecimal/jacobian.rb
index a416e06832..8ab836259a 100644
--- a/ext/bigdecimal/lib/bigdecimal/jacobian.rb
+++ b/ext/bigdecimal/lib/bigdecimal/jacobian.rb
@@ -11,7 +11,7 @@
#
# f.zero:: returns 0.0
# f.one:: returns 1.0
-# f.two:: returns 2.0
+# f.two:: returns 1.0
# f.ten:: returns 10.0
#
# f.eps:: returns the convergence criterion (epsilon value) used to determine whether two values are considered equal. If |a-b| < epsilon, the two values are considered equal.
@@ -53,8 +53,7 @@ module Jacobian
until ok>0 do
s = f.zero
deriv = []
- nRetry += 1
- if nRetry > 100
+ if(nRetry>100) then
raise "Singular Jacobian matrix. No change at x[" + i.to_s + "]"
end
dx = dx*f.two
diff --git a/ext/bigdecimal/lib/bigdecimal/math.rb b/ext/bigdecimal/lib/bigdecimal/math.rb
index 16cf9c8731..03c59bfccb 100644
--- a/ext/bigdecimal/lib/bigdecimal/math.rb
+++ b/ext/bigdecimal/lib/bigdecimal/math.rb
@@ -7,6 +7,7 @@ require 'bigdecimal'
# sin (x, prec)
# cos (x, prec)
# atan(x, prec) Note: |x|<1, x=0.9999 may not converge.
+# log (x, prec)
# PI (prec)
# E (prec) == exp(1.0,prec)
#
diff --git a/ext/bigdecimal/lib/bigdecimal/newton.rb b/ext/bigdecimal/lib/bigdecimal/newton.rb
index 1110652801..96defc3c06 100644
--- a/ext/bigdecimal/lib/bigdecimal/newton.rb
+++ b/ext/bigdecimal/lib/bigdecimal/newton.rb
@@ -18,7 +18,7 @@ require "bigdecimal/jacobian"
#
# f.zero:: returns 0.0
# f.one:: returns 1.0
-# f.two:: returns 2.0
+# f.two:: returns 1.0
# f.ten:: returns 10.0
#
# f.eps:: returns the convergence criterion (epsilon value) used to determine whether two values are considered equal. If |a-b| < epsilon, the two values are considered equal.
diff --git a/ext/bigdecimal/lib/bigdecimal/util.rb b/ext/bigdecimal/lib/bigdecimal/util.rb
index 4c8fc07b7d..b4b02b191d 100644
--- a/ext/bigdecimal/lib/bigdecimal/util.rb
+++ b/ext/bigdecimal/lib/bigdecimal/util.rb
@@ -17,7 +17,7 @@ end
class Float < Numeric
# call-seq:
- # flt.to_d -> bigdecimal
+ # flt.to_d(precision=nil) -> bigdecimal
#
# Convert +flt+ to a BigDecimal and return it.
#
@@ -83,22 +83,25 @@ end
class Rational < Numeric
# call-seq:
- # r.to_d(precision) -> bigdecimal
+ # r.to_d(sig) -> bigdecimal
#
- # Converts a Rational to a BigDecimal.
- #
- # The required +precision+ parameter is used to determine the amount of
- # significant digits for the result. See BigDecimal#div for more information,
- # as it is used along with the #denominator and the +precision+ for
- # parameters.
+ # Converts a Rational to a BigDecimal. Takes an optional parameter +sig+ to
+ # limit the amount of significant digits.
+ # If a negative precision is given, raise ArgumentError.
+ # The zero precision and implicit precision is deprecated.
#
# r = (22/7.0).to_r
# # => (7077085128725065/2251799813685248)
+ # r.to_d
+ # # => #<BigDecimal:1a52bd8,'0.3142857142 8571427937 0154144999 105E1',45(63)>
# r.to_d(3)
# # => #<BigDecimal:1a44d08,'0.314E1',18(36)>
- def to_d(precision)
- if precision <= 0
+ def to_d(precision=0)
+ if precision < 0
raise ArgumentError, "negative precision"
+ elsif precision == 0
+ warn "zero and implicit precision is deprecated."
+ precision = BigDecimal.double_fig*2+1
end
num = self.numerator
BigDecimal(num).div(self.denominator, precision)
diff --git a/ext/coverage/coverage.c b/ext/coverage/coverage.c
index d2cdb357e0..529fac256a 100644
--- a/ext/coverage/coverage.c
+++ b/ext/coverage/coverage.c
@@ -71,13 +71,11 @@ rb_coverage_result(VALUE klass)
*
* = Usage
*
- * 1. require "coverage.so"
- * 2. do Coverage.start
- * 3. require or load Ruby source file
- * 4. Coverage.result will return a hash that contains filename as key and
- * coverage array as value. A coverage array gives, for each line, the
- * number of line execution by the interpreter. A +nil+ value means
- * coverage is disabled for this line (lines like +else+ and +end+).
+ * (1) require "coverage.so"
+ * (2) do Coverage.start
+ * (3) require or load Ruby source file
+ * (4) Coverage.result will return a hash that contains filename as key and
+ * coverage array as value.
*
* = Example
*
diff --git a/ext/curses/curses.c b/ext/curses/curses.c
index 88b1bdb3aa..ff0c64e258 100644
--- a/ext/curses/curses.c
+++ b/ext/curses/curses.c
@@ -18,7 +18,6 @@
#include "ruby.h"
#include "ruby/io.h"
-#include "ruby/thread.h"
#if defined(HAVE_NCURSES_H)
# include <ncurses.h>
@@ -64,7 +63,6 @@
static VALUE mCurses;
static VALUE mKey;
static VALUE cWindow;
-static VALUE cPad;
#ifdef USE_MOUSE
static VALUE cMouseEvent;
#endif
@@ -88,34 +86,18 @@ no_window(void)
#define GetWINDOW(obj, winp) do {\
if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4)\
rb_raise(rb_eSecurityError, "Insecure: operation on untainted window");\
- TypedData_Get_Struct((obj), struct windata, &windata_type, (winp));\
+ Data_Get_Struct((obj), struct windata, (winp));\
if ((winp)->window == 0) no_window();\
} while (0)
static void
-window_free(void *p)
+free_window(struct windata *winp)
{
- struct windata *winp = p;
if (winp->window && winp->window != stdscr) delwin(winp->window);
winp->window = 0;
xfree(winp);
}
-static size_t
-window_memsize(const void *p)
-{
- const struct windata *winp = p;
- size_t size = sizeof(*winp);
- if (!winp) return 0;
- if (winp->window && winp->window != stdscr) size += sizeof(winp->window);
- return size;
-}
-
-static const rb_data_type_t windata_type = {
- "windata",
- {0, window_free, window_memsize,}
-};
-
static VALUE
prep_window(VALUE class, WINDOW *window)
{
@@ -127,7 +109,7 @@ prep_window(VALUE class, WINDOW *window)
}
obj = rb_obj_alloc(class);
- TypedData_Get_Struct(obj, struct windata, &windata_type, winp);
+ Data_Get_Struct(obj, struct windata, winp);
winp->window = window;
return obj;
@@ -635,12 +617,12 @@ curses_addstr(VALUE obj, VALUE str)
return Qnil;
}
-static void *
+static VALUE
getch_func(void *arg)
{
int *ip = (int *)arg;
*ip = getch();
- return 0;
+ return Qnil;
}
/*
@@ -657,7 +639,7 @@ curses_getch(VALUE obj)
int c;
curses_stdscr();
- rb_thread_call_without_gvl(getch_func, &c, RUBY_UBF_IO, 0);
+ rb_thread_blocking_region(getch_func, (void *)&c, RUBY_UBF_IO, 0);
if (c == EOF) return Qnil;
if (rb_isprint(c)) {
char ch = (char)c;
@@ -670,7 +652,7 @@ curses_getch(VALUE obj)
/* This should be big enough.. I hope */
#define GETSTR_BUF_SIZE 1024
-static void *
+static VALUE
getstr_func(void *arg)
{
char *rtn = (char *)arg;
@@ -679,7 +661,7 @@ getstr_func(void *arg)
#else
getstr(rtn);
#endif
- return 0;
+ return Qnil;
}
/*
@@ -694,7 +676,7 @@ curses_getstr(VALUE obj)
char rtn[GETSTR_BUF_SIZE];
curses_stdscr();
- rb_thread_call_without_gvl(getstr_func, rtn, RUBY_UBF_IO, 0);
+ rb_thread_blocking_region(getstr_func, (void *)rtn, RUBY_UBF_IO, 0);
return rb_locale_str_new_cstr(rtn);
}
@@ -1240,7 +1222,7 @@ static VALUE
curses_pair_number(VALUE obj, VALUE attrs)
{
curses_stdscr();
- return INT2FIX(PAIR_NUMBER(NUM2LONG(attrs)));
+ return INT2FIX(PAIR_NUMBER(NUM2INT(attrs)));
}
#endif /* USE_COLOR */
@@ -1258,33 +1240,17 @@ no_mevent(void)
#define GetMOUSE(obj, data) do {\
if (!OBJ_TAINTED(obj) && rb_safe_level() >= 4)\
rb_raise(rb_eSecurityError, "Insecure: operation on untainted mouse");\
- TypedData_Get_Struct((obj), struct mousedata, &mousedata_type, (data));\
+ Data_Get_Struct((obj), struct mousedata, (data));\
if ((data)->mevent == 0) no_mevent();\
} while (0)
static void
-curses_mousedata_free(void *p)
+curses_mousedata_free(struct mousedata *mdata)
{
- struct mousedata *mdata = p;
if (mdata->mevent)
xfree(mdata->mevent);
}
-static size_t
-curses_mousedata_memsize(const void *p)
-{
- const struct mousedata *mdata = p;
- size_t size = sizeof(*mdata);
- if (!mdata) return 0;
- if (mdata->mevent) size += sizeof(mdata->mevent);
- return size;
-}
-
-static const rb_data_type_t mousedata_type = {
- "mousedata",
- {0, curses_mousedata_free, curses_mousedata_memsize,}
-};
-
/*
* Document-method: Curses.getmouse
*
@@ -1301,8 +1267,8 @@ curses_getmouse(VALUE obj)
VALUE val;
curses_stdscr();
- val = TypedData_Make_Struct(cMouseEvent,struct mousedata,
- &mousedata_type,mdata);
+ val = Data_Make_Struct(cMouseEvent,struct mousedata,
+ 0,curses_mousedata_free,mdata);
mdata->mevent = (MEVENT*)xmalloc(sizeof(MEVENT));
return (getmouse(mdata->mevent) == OK) ? val : Qnil;
}
@@ -1471,7 +1437,7 @@ window_s_allocate(VALUE class)
{
struct windata *winp;
- return TypedData_Make_Struct(class, struct windata, &windata_type, winp);
+ return Data_Make_Struct(class, struct windata, 0, free_window, winp);
}
/*
@@ -1493,7 +1459,7 @@ window_initialize(VALUE obj, VALUE h, VALUE w, VALUE top, VALUE left)
rb_secure(4);
curses_init_screen();
- TypedData_Get_Struct(obj, struct windata, &windata_type, winp);
+ Data_Get_Struct(obj, struct windata, winp);
if (winp->window) delwin(winp->window);
window = newwin(NUM2INT(h), NUM2INT(w), NUM2INT(top), NUM2INT(left));
wclear(window);
@@ -1663,7 +1629,7 @@ static VALUE
window_cury(VALUE obj)
{
struct windata *winp;
- int RB_UNUSED_VAR(x), y;
+ int x, y;
GetWINDOW(obj, winp);
getyx(winp->window, y, x);
@@ -1679,7 +1645,7 @@ static VALUE
window_curx(VALUE obj)
{
struct windata *winp;
- int x, RB_UNUSED_VAR(y);
+ int x, y;
GetWINDOW(obj, winp);
getyx(winp->window, y, x);
@@ -1743,15 +1709,15 @@ static VALUE
window_begy(VALUE obj)
{
struct windata *winp;
- int RB_UNUSED_VAR(x), y;
+ int x, y;
GetWINDOW(obj, winp);
#ifdef getbegyx
getbegyx(winp->window, y, x);
+ return INT2FIX(y);
#else
- y = winp->window->_begy;
+ return INT2FIX(winp->window->_begy);
#endif
- return INT2FIX(y);
}
/*
@@ -1763,15 +1729,15 @@ static VALUE
window_begx(VALUE obj)
{
struct windata *winp;
- int x, RB_UNUSED_VAR(y);
+ int x, y;
GetWINDOW(obj, winp);
#ifdef getbegyx
getbegyx(winp->window, y, x);
+ return INT2FIX(x);
#else
- x = winp->window->_begx;
+ return INT2FIX(winp->window->_begx);
#endif
- return INT2FIX(x);
}
/*
@@ -1950,12 +1916,12 @@ struct wgetch_arg {
int c;
};
-static void *
+static VALUE
wgetch_func(void *_arg)
{
struct wgetch_arg *arg = (struct wgetch_arg *)_arg;
arg->c = wgetch(arg->win);
- return 0;
+ return Qnil;
}
/*
@@ -1975,7 +1941,7 @@ window_getch(VALUE obj)
GetWINDOW(obj, winp);
arg.win = winp->window;
- rb_thread_call_without_gvl(wgetch_func, (void *)&arg, RUBY_UBF_IO, 0);
+ rb_thread_blocking_region(wgetch_func, (void *)&arg, RUBY_UBF_IO, 0);
c = arg.c;
if (c == EOF) return Qnil;
if (rb_isprint(c)) {
@@ -1991,7 +1957,7 @@ struct wgetstr_arg {
char rtn[GETSTR_BUF_SIZE];
};
-static void *
+static VALUE
wgetstr_func(void *_arg)
{
struct wgetstr_arg *arg = (struct wgetstr_arg *)_arg;
@@ -2000,7 +1966,7 @@ wgetstr_func(void *_arg)
#else
wgetstr(arg->win, arg->rtn);
#endif
- return 0;
+ return Qnil;
}
/*
@@ -2017,7 +1983,7 @@ window_getstr(VALUE obj)
GetWINDOW(obj, winp);
arg.win = winp->window;
- rb_thread_call_without_gvl(wgetstr_func, (void *)&arg, RUBY_UBF_IO, 0);
+ rb_thread_blocking_region(wgetstr_func, (void *)&arg, RUBY_UBF_IO, 0);
return rb_locale_str_new_cstr(arg.rtn);
}
@@ -2440,14 +2406,11 @@ window_keypad(VALUE obj, VALUE val)
#ifdef HAVE_NODELAY
/*
* Document-method: Curses::Window.nodelay
- * call-seq:
- * window.nodelay = bool
+ * call-seq: nodelay(bool)
*
- * When in no-delay mode Curses::Window#getch is a non-blocking call. If no
- * input is ready #getch returns ERR.
+ * Causes Curses::Window.getch to be a non-blocking call. If no input is ready, getch returns ERR.
*
- * When in delay mode (+bool+ is +false+ which is the default),
- * Curses::Window#getch blocks until a key is pressed.
+ * If disabled (+bool+ is +false+), Curses::Window.getch waits until a key is pressed.
*
*/
static VALUE
@@ -2492,137 +2455,6 @@ window_timeout(VALUE obj, VALUE delay)
#define window_timeout rb_f_notimplement
#endif
-/*--------------------------- class Pad ----------------------------*/
-
-#ifdef HAVE_NEWPAD
-/*
- * Document-method: Curses::Pad.new
- *
- * call-seq:
- * new(height, width)
- *
- * Contruct a new Curses::Pad with constraints of +height+ lines, +width+
- * columns
- *
- */
-static VALUE
-pad_initialize(VALUE obj, VALUE h, VALUE w)
-{
- struct windata *padp;
- WINDOW *window;
-
- rb_secure(4);
- curses_init_screen();
- TypedData_Get_Struct(obj, struct windata, &windata_type, padp);
- if (padp->window) delwin(padp->window);
- window = newpad(NUM2INT(h), NUM2INT(w));
- wclear(window);
- padp->window = window;
-
- return obj;
-}
-
-#if 1
-#define pad_subpad window_subwin
-#else
-/*
- * Document-method: Curses::Pad.subpad
- * call-seq:
- * subpad(height, width, begin_x, begin_y)
- *
- * Contruct a new subpad with constraints of +height+ lines, +width+ columns,
- * begin at +begin_x+ line, and +begin_y+ columns on the pad.
- *
- */
-static VALUE
-pad_subpad(VALUE obj, VALUE height, VALUE width, VALUE begin_x, VALUE begin_y)
-{
- struct windata *padp;
- WINDOW *subpad;
- VALUE pad;
- int h, w, x, y;
-
- h = NUM2INT(height);
- w = NUM2INT(width);
- x = NUM2INT(begin_x);
- y = NUM2INT(begin_y);
- GetWINDOW(obj, padp);
- subpad = subwin(padp->window, h, w, x, y);
- pad = prep_window(rb_obj_class(obj), subpad);
-
- return pad;
-}
-#endif
-
-/*
- * Document-method: Curses::Pad.refresh
- *
- * call-seq:
- * pad.refresh(pad_minrow, pad_mincol, screen_minrow, screen_mincol, screen_maxrow, screen_maxcol)
- *
- * Refreshes the pad. +pad_minrow+ and pad_mincol+ define the upper-left
- * corner of the rectangle to be displayed. +screen_minrow+, +screen_mincol+,
- * +screen_maxrow+, +screen_maxcol+ define the edges of the rectangle to be
- * displayed on the screen.
- *
- */
-static VALUE
-pad_refresh(VALUE obj, VALUE pminrow, VALUE pmincol, VALUE sminrow,
- VALUE smincol, VALUE smaxrow, VALUE smaxcol)
-{
- struct windata *padp;
- int pmr, pmc, smr, smc, sxr, sxc;
-
- pmr = NUM2INT(pminrow);
- pmc = NUM2INT(pmincol);
- smr = NUM2INT(sminrow);
- smc = NUM2INT(smincol);
- sxr = NUM2INT(smaxrow);
- sxc = NUM2INT(smaxcol);
-
- GetWINDOW(obj, padp);
- prefresh(padp->window, pmr, pmc, smr, smc, sxr, sxc);
-
- return Qnil;
-}
-
-/*
- * Document-method: Curses::Pad.noutrefresh
- *
- * call-seq:
- * pad.noutrefresh(pad_minrow, pad_mincol, screen_minrow, screen_mincol, screen_maxrow, screen_maxcol)
- *
- * Refreshes the pad. +pad_minrow+ and pad_mincol+ define the upper-left
- * corner of the rectangle to be displayed. +screen_minrow+, +screen_mincol+,
- * +screen_maxrow+, +screen_maxcol+ define the edges of the rectangle to be
- * displayed on the screen.
- *
- */
-static VALUE
-pad_noutrefresh(VALUE obj, VALUE pminrow, VALUE pmincol, VALUE sminrow,
- VALUE smincol, VALUE smaxrow, VALUE smaxcol)
-{
- struct windata *padp;
- int pmr, pmc, smr, smc, sxr, sxc;
-
- pmr = NUM2INT(pminrow);
- pmc = NUM2INT(pmincol);
- smr = NUM2INT(sminrow);
- smc = NUM2INT(smincol);
- sxr = NUM2INT(smaxrow);
- sxc = NUM2INT(smaxcol);
-
- GetWINDOW(obj, padp);
-#ifdef HAVE_DOUPDATE
- pnoutrefresh(padp->window, pmr, pmc, smr, smc, sxr, sxc);
-#else
- prefresh(padp->window, pmr, pmc, smr, smc, sxr, sxc);
-#endif
-
- return Qnil;
-}
-#endif /* HAVE_NEWPAD */
-
/*------------------------- Initialization -------------------------*/
/*
@@ -2715,7 +2547,7 @@ Init_curses(void)
rb_define_module_function(mCurses, "noraw", curses_noraw, 0);
rb_define_module_function(mCurses, "cbreak", curses_cbreak, 0);
rb_define_module_function(mCurses, "nocbreak", curses_nocbreak, 0);
- rb_define_module_function(mCurses, "crmode", curses_cbreak, 0);
+ rb_define_module_function(mCurses, "crmode", curses_nocbreak, 0);
rb_define_module_function(mCurses, "nocrmode", curses_nocbreak, 0);
rb_define_module_function(mCurses, "nl", curses_nl, 0);
rb_define_module_function(mCurses, "nonl", curses_nonl, 0);
@@ -2772,32 +2604,6 @@ Init_curses(void)
rb_define_module_function(mCurses, "def_prog_mode", curses_def_prog_mode, 0);
rb_define_module_function(mCurses, "reset_prog_mode", curses_reset_prog_mode, 0);
- {
- VALUE version;
-#if defined(HAVE_FUNC_CURSES_VERSION)
- /* ncurses and PDcurses */
- version = rb_str_new2(curses_version());
-#elif defined(HAVE_VAR_CURSES_VERSION)
- /* SVR4 curses has an undocumented and undeclared variable, curses_version.
- * It contains a string, "SVR4". */
- RUBY_EXTERN char *curses_version;
- version = rb_sprintf("curses (%s)", curses_version);
-#else
- /* BSD curses, perhaps. NetBSD 5 still use it. */
- version = rb_str_new2("curses (unknown)");
-#endif
- /*
- * Identifies curses library version.
- *
- * - "ncurses 5.9.20110404"
- * - "PDCurses 3.4 - Public Domain 2008"
- * - "curses (SVR4)" (System V curses)
- * - "curses (unknown)" (The original BSD curses? NetBSD maybe.)
- *
- */
- rb_define_const(mCurses, "VERSION", version);
- }
-
/*
* Document-class: Curses::Window
*
@@ -2880,26 +2686,6 @@ Init_curses(void)
rb_define_method(cWindow, "nodelay=", window_nodelay, 1);
rb_define_method(cWindow, "timeout=", window_timeout, 1);
-#ifdef HAVE_NEWPAD
- /*
- * Document-class: Curses::Pad
- *
- * == Description
- *
- * A Pad is like a Window but allows for scrolling of contents that cannot
- * fit on the screen. Pads do not refresh automatically, use Pad#refresh
- * or Pad#noutrefresh instead.
- *
- */
- cPad = rb_define_class_under(mCurses, "Pad", cWindow);
- /* inherits alloc_func from cWindow */
- rb_define_method(cPad, "initialize", pad_initialize, 2);
- rb_define_method(cPad, "subpad", pad_subpad, 4);
- rb_define_method(cPad, "refresh", pad_refresh, 6);
- rb_define_method(cPad, "noutrefresh", pad_noutrefresh, 6);
- rb_undef_method(cPad, "subwin");
-#endif
-
#define rb_curses_define_const(c) rb_define_const(mCurses,#c,UINT2NUM(c))
#ifdef USE_COLOR
diff --git a/ext/curses/depend b/ext/curses/depend
index 66742b7208..ecb79e512d 100644
--- a/ext/curses/depend
+++ b/ext/curses/depend
@@ -1 +1 @@
-curses.o: curses.c $(hdrdir)/ruby.h $(topdir)/config.h $(hdrdir)/defines.h $(hdrdir)/thread.h
+curses.o: curses.c $(hdrdir)/ruby.h $(topdir)/config.h $(hdrdir)/defines.h
diff --git a/ext/curses/extconf.rb b/ext/curses/extconf.rb
index f63de1cd6c..a1a1613aa7 100644
--- a/ext/curses/extconf.rb
+++ b/ext/curses/extconf.rb
@@ -1,116 +1,36 @@
require 'mkmf'
-def have_all(*args)
- old_libs = $libs.dup
- old_defs = $defs.dup
- result = []
- begin
- args.each {|arg|
- r = arg.call(*result)
- if !r
- return nil
- end
- result << r
- }
- result
- ensure
- if result.length != args.length
- $libs = old_libs
- $defs = old_defs
- end
- end
-end
-
dir_config('curses')
dir_config('ncurses')
dir_config('termcap')
+make=false
+headers = []
+
have_library("mytinfo", "tgetent") if /bow/ =~ RUBY_PLATFORM
have_library("tinfo", "tgetent") or have_library("termcap", "tgetent")
+if have_header(*curses=%w"ncurses.h") and (have_library("ncursesw", "initscr") or have_library("ncurses", "initscr"))
+ make=true
+elsif have_header(*curses=%w"ncurses/curses.h") and have_library("ncurses", "initscr")
+ make=true
+elsif have_header(*curses=%w"curses_colr/curses.h") and have_library("cur_colr", "initscr")
+ curses.unshift("varargs.h")
+ make=true
+elsif have_header(*curses=%w"curses.h") and (have_library("curses", "initscr") || have_library("pdcurses", "initscr"))
+ make=true
+end
-header_library = nil
-[
- ["ncurses.h", ["ncursesw", "ncurses"]],
- ["ncurses/curses.h", ["ncurses"]],
- ["curses_colr/curses.h", ["cur_colr"]],
- ["curses.h", ["curses", "pdcurses"]],
- # ["xcurses.h", ["XCurses"]], # XCurses (PDCurses for X11)
-].each {|hdr, libs|
- header_library = have_all(
- lambda { have_header(hdr) && hdr },
- lambda {|h| libs.find {|lib| have_library(lib, "initscr", h) } })
- if header_library
- break;
- end
-}
-
-if header_library
- header, library = header_library
- puts "header: #{header}"
- puts "library: #{library}"
-
- curses = [header]
- if header == 'curses_colr/curses.h'
- curses.unshift("varargs.h")
- end
-
- for f in %w(beep bkgd bkgdset curs_set deleteln doupdate flash
- getbkgd getnstr init isendwin keyname keypad resizeterm
- scrl set setscrreg ungetch
- wattroff wattron wattrset wbkgd wbkgdset wdeleteln wgetnstr
- wresize wscrl wsetscrreg
- def_prog_mode reset_prog_mode timeout wtimeout nodelay
- init_color wcolor_set use_default_colors newpad)
+if make
+ for f in %w(beep bkgd bkgdset curs_set deleteln doupdate flash getbkgd getnstr init isendwin keyname keypad resizeterm scrl set setscrreg ungetch wattroff wattron wattrset wbkgd wbkgdset wdeleteln wgetnstr wresize wscrl wsetscrreg def_prog_mode reset_prog_mode timeout wtimeout nodelay init_color wcolor_set use_default_colors)
have_func(f) || (have_macro(f, curses) && $defs.push(format("-DHAVE_%s", f.upcase)))
end
flag = "-D_XOPEN_SOURCE_EXTENDED"
- if try_static_assert("sizeof(char*)>sizeof(int)",
- %w[stdio.h stdlib.h]+curses,
- flag)
+ if try_static_assert("sizeof(char*)>sizeof(int)", %w[stdio.h stdlib.h]+curses , flag)
$defs << flag
end
have_var("ESCDELAY", curses)
have_var("TABSIZE", curses)
have_var("COLORS", curses)
have_var("COLOR_PAIRS", curses)
-
- # SVR4 curses has a (undocumented) variable char *curses_version.
- # ncurses and PDcurses has a function char *curses_version().
- # Note that the original BSD curses doesn't provide version information.
-
- prolog = cpp_include(curses)
- if checking_for(checking_message('function curses_version', curses)) {
- try_run(<<-"End")
- #{prolog}
- int main(int argc, char *argv[])
- {
- curses_version();
- return EXIT_SUCCESS;
- }
- End
- }
- $defs << '-DHAVE_FUNC_CURSES_VERSION'
- end
-
- if checking_for(checking_message('variable curses_version', curses)) {
- try_run(<<-"End")
- #{prolog}
- extern char *curses_version;
- int main(int argc, char *argv[])
- {
- int i = 0;
- for (i = 0; i < 100; i++) {
- if (curses_version[i] == 0)
- return 0 < i ? EXIT_SUCCESS : EXIT_FAILURE;
- if (curses_version[i] & 0x80)
- return EXIT_FAILURE;
- }
- return EXIT_FAILURE;
- }
- End
- }
- $defs << '-DHAVE_VAR_CURSES_VERSION'
- end
-
create_makefile("curses")
end
diff --git a/ext/curses/rain.rb b/ext/curses/rain.rb
index a6019b26e0..36f0f84de2 100644
--- a/ext/curses/rain.rb
+++ b/ext/curses/rain.rb
@@ -14,7 +14,7 @@ def ranf
end
# main #
-for i in %w[HUP INT QUIT TERM]
+for i in 1 .. 15 # SIGHUP .. SIGTERM
if trap(i, "SIG_IGN") != 0 then # 0 for SIG_IGN
trap(i) {|sig| onsig(sig) }
end
diff --git a/ext/curses/view.rb b/ext/curses/view.rb
index bc54aeb9af..e033fd8ae2 100644
--- a/ext/curses/view.rb
+++ b/ext/curses/view.rb
@@ -40,7 +40,7 @@ while TRUE
while i < lines
setpos(i, 0)
#clrtoeol
- addstr(data_lines[lptr + i] || '')
+ addstr(data_lines[lptr + i]) #if data_lines[lptr + i]
i += 1
end
refresh
diff --git a/ext/date/date_core.c b/ext/date/date_core.c
index e3e6c4c2ae..c22a9d496c 100644
--- a/ext/date/date_core.c
+++ b/ext/date/date_core.c
@@ -1,5 +1,5 @@
/*
- date_core.c: Coded by Tadayoshi Funaba 2010-2013
+ date_core.c: Coded by Tadayoshi Funaba 2010, 2011
*/
#include "ruby.h"
@@ -218,10 +218,13 @@ f_negative_p(VALUE x)
#include <float.h>
#endif
-#if defined(FLT_RADIX) && defined(FLT_MANT_DIG) && FLT_RADIX == 2 && FLT_MANT_DIG > 22
-#define date_sg_t float
+#if defined(FLT_RADIX) && defined(FLT_MANT_DIG)
+#if FLT_RADIX == 2 && FLT_MANT_DIG > 22
+#define USE_FLOAT
+#define sg_cast float
#else
-#define date_sg_t double
+#define sg_cast double
+#endif
#endif
/* A set of nth, jd, df and sf denote ajd + 1/2. Each ajd begin at
@@ -237,7 +240,11 @@ struct SimpleDateData
/* df is zero */
/* sf is zero */
/* of is zero */
- date_sg_t sg; /* 2298874..2426355 or -/+oo -- at most 22 bits */
+#ifndef USE_FLOAT
+ double sg; /* 2298874..2426355 or -/+oo */
+#else
+ float sg; /* at most 22 bits */
+#endif
/* decoded as utc=local */
int year; /* truncated */
#ifndef USE_PACK
@@ -260,7 +267,11 @@ struct ComplexDateData
int df; /* as utc, in secs */
VALUE sf; /* in nano secs */
int of; /* in secs */
- date_sg_t sg; /* 2298874..2426355 or -/+oo -- at most 22 bits */
+#ifndef USE_FLOAT
+ double sg; /* 2298874..2426355 or -/+oo */
+#else
+ float sg; /* at most 22 bits */
+#endif
/* decoded as local */
int year; /* truncated */
#ifndef USE_PACK
@@ -314,7 +325,7 @@ canon(VALUE x)
{\
(x)->nth = canon(_nth);\
(x)->jd = _jd;\
- (x)->sg = (date_sg_t)(_sg);\
+ (x)->sg = (sg_cast)(_sg);\
(x)->year = _year;\
(x)->mon = _mon;\
(x)->mday = _mday;\
@@ -325,7 +336,7 @@ canon(VALUE x)
{\
(x)->nth = canon(_nth);\
(x)->jd = _jd;\
- (x)->sg = (date_sg_t)(_sg);\
+ (x)->sg = (sg_cast)(_sg);\
(x)->year = _year;\
(x)->pc = PACK2(_mon, _mday);\
(x)->flags = _flags;\
@@ -341,7 +352,7 @@ _year, _mon, _mday, _hour, _min, _sec, _flags) \
(x)->df = _df;\
(x)->sf = canon(_sf);\
(x)->of = _of;\
- (x)->sg = (date_sg_t)(_sg);\
+ (x)->sg = (sg_cast)(_sg);\
(x)->year = _year;\
(x)->mon = _mon;\
(x)->mday = _mday;\
@@ -359,7 +370,7 @@ _year, _mon, _mday, _hour, _min, _sec, _flags) \
(x)->df = _df;\
(x)->sf = canon(_sf);\
(x)->of = _of;\
- (x)->sg = (date_sg_t)(_sg);\
+ (x)->sg = (sg_cast)(_sg);\
(x)->year = _year;\
(x)->pc = PACK5(_mon, _mday, _hour, _min, _sec);\
(x)->flags = _flags;\
@@ -374,7 +385,7 @@ _year, _mon, _mday, _hour, _min, _sec, _flags) \
(x)->df = 0;\
(x)->sf = INT2FIX(0);\
(x)->of = 0;\
- (x)->sg = (date_sg_t)((y)->sg);\
+ (x)->sg = (sg_cast)((y)->sg);\
(x)->year = (y)->year;\
(x)->mon = (y)->mon;\
(x)->mday = (y)->mday;\
@@ -391,7 +402,7 @@ _year, _mon, _mday, _hour, _min, _sec, _flags) \
(x)->df = 0;\
(x)->sf = INT2FIX(0);\
(x)->of = 0;\
- (x)->sg = (date_sg_t)((y)->sg);\
+ (x)->sg = (sg_cast)((y)->sg);\
(x)->year = (y)->year;\
(x)->pc = PACK5(EX_MON((y)->pc), EX_MDAY((y)->pc), 0, 0, 0);\
(x)->flags = (y)->flags;\
@@ -403,7 +414,7 @@ _year, _mon, _mday, _hour, _min, _sec, _flags) \
{\
(x)->nth = (y)->nth;\
(x)->jd = (y)->jd;\
- (x)->sg = (date_sg_t)((y)->sg);\
+ (x)->sg = (sg_cast)((y)->sg);\
(x)->year = (y)->year;\
(x)->mon = (y)->mon;\
(x)->mday = (y)->mday;\
@@ -414,7 +425,7 @@ _year, _mon, _mday, _hour, _min, _sec, _flags) \
{\
(x)->nth = (y)->nth;\
(x)->jd = (y)->jd;\
- (x)->sg = (date_sg_t)((y)->sg);\
+ (x)->sg = (sg_cast)((y)->sg);\
(x)->year = (y)->year;\
(x)->pc = PACK2(EX_MON((y)->pc), EX_MDAY((y)->pc));\
(x)->flags = (y)->flags;\
@@ -980,14 +991,8 @@ safe_mul_p(VALUE x, long m)
if (!FIXNUM_P(x))
return 0;
ix = FIX2LONG(x);
- if (ix < 0) {
- if (ix <= (FIXNUM_MIN / m))
- return 0;
- }
- else {
- if (ix >= (FIXNUM_MAX / m))
- return 0;
- }
+ if (ix >= (FIXNUM_MAX / m))
+ return 0;
return 1;
}
@@ -1104,28 +1109,6 @@ m_virtual_sg(union DateData *x)
return c_virtual_sg(x);
}
-#define canonicalize_jd(_nth, _jd) \
-{\
- if (_jd < 0) {\
- _nth = f_sub(_nth, INT2FIX(1));\
- _jd += CM_PERIOD;\
- }\
- if (_jd >= CM_PERIOD) {\
- _nth = f_add(_nth, INT2FIX(1));\
- _jd -= CM_PERIOD;\
- }\
-}
-
-inline static void
-canonicalize_s_jd(union DateData *x)
-{
- int j = x->s.jd;
- assert(have_jd_p(x));
- canonicalize_jd(x->s.nth, x->s.jd);
- if (x->s.jd != j)
- x->flags &= ~HAVE_CIVIL;
-}
-
inline static void
get_s_jd(union DateData *x)
{
@@ -1211,16 +1194,6 @@ get_c_time(union DateData *x)
}
inline static void
-canonicalize_c_jd(union DateData *x)
-{
- int j = x->c.jd;
- assert(have_jd_p(x));
- canonicalize_jd(x->c.nth, x->c.jd);
- if (x->c.jd != j)
- x->flags &= ~HAVE_CIVIL;
-}
-
-inline static void
get_c_jd(union DateData *x)
{
assert(complex_dat_p(x));
@@ -1393,19 +1366,6 @@ guess_style(VALUE y, double sg) /* -/+oo or zero */
return style;
}
-inline static void
-m_canonicalize_jd(union DateData *x)
-{
- if (simple_dat_p(x)) {
- get_s_jd(x);
- canonicalize_s_jd(x);
- }
- else {
- get_c_jd(x);
- canonicalize_c_jd(x);
- }
-}
-
inline static VALUE
m_nth(union DateData *x)
{
@@ -2012,7 +1972,7 @@ civil_to_jd(VALUE y, int m, int d, double sg,
*ry = FIX2INT(y);
else {
VALUE nth2;
- decode_year(y, *ns ? -1 : +1, &nth2, ry);
+ decode_year(y, ns ? -1 : +1, &nth2, ry);
}
}
else {
@@ -2047,7 +2007,7 @@ ordinal_to_jd(VALUE y, int d, double sg,
*ry = FIX2INT(y);
else {
VALUE nth2;
- decode_year(y, *ns ? -1 : +1, &nth2, ry);
+ decode_year(y, ns ? -1 : +1, &nth2, ry);
}
}
else {
@@ -2082,7 +2042,7 @@ commercial_to_jd(VALUE y, int w, int d, double sg,
*ry = FIX2INT(y);
else {
VALUE nth2;
- decode_year(y, *ns ? -1 : +1, &nth2, ry);
+ decode_year(y, ns ? -1 : +1, &nth2, ry);
}
}
else {
@@ -2117,7 +2077,7 @@ weeknum_to_jd(VALUE y, int w, int d, int f, double sg,
*ry = FIX2INT(y);
else {
VALUE nth2;
- decode_year(y, *ns ? -1 : +1, &nth2, ry);
+ decode_year(y, ns ? -1 : +1, &nth2, ry);
}
}
else {
@@ -2152,7 +2112,7 @@ nth_kday_to_jd(VALUE y, int m, int n, int k, double sg,
*ry = FIX2INT(y);
else {
VALUE nth2;
- decode_year(y, *ns ? -1 : +1, &nth2, ry);
+ decode_year(y, ns ? -1 : +1, &nth2, ry);
}
}
else {
@@ -2191,7 +2151,7 @@ valid_ordinal_p(VALUE y, int d, double sg,
*ry = FIX2INT(y);
else {
VALUE nth2;
- decode_year(y, *ns ? -1 : +1, &nth2, ry);
+ decode_year(y, ns ? -1 : +1, &nth2, ry);
}
}
else {
@@ -2230,7 +2190,7 @@ valid_civil_p(VALUE y, int m, int d, double sg,
*ry = FIX2INT(y);
else {
VALUE nth2;
- decode_year(y, *ns ? -1 : +1, &nth2, ry);
+ decode_year(y, ns ? -1 : +1, &nth2, ry);
}
}
else {
@@ -2266,7 +2226,7 @@ valid_commercial_p(VALUE y, int w, int d, double sg,
*ry = FIX2INT(y);
else {
VALUE nth2;
- decode_year(y, *ns ? -1 : +1, &nth2, ry);
+ decode_year(y, ns ? -1 : +1, &nth2, ry);
}
}
else {
@@ -2296,7 +2256,7 @@ valid_weeknum_p(VALUE y, int w, int d, int f, double sg,
*ry = FIX2INT(y);
else {
VALUE nth2;
- decode_year(y, *ns ? -1 : +1, &nth2, ry);
+ decode_year(y, ns ? -1 : +1, &nth2, ry);
}
}
else {
@@ -2327,7 +2287,7 @@ valid_nth_kday_p(VALUE y, int m, int n, int k, double sg,
*ry = FIX2INT(y);
else {
VALUE nth2;
- decode_year(y, *ns ? -1 : +1, &nth2, ry);
+ decode_year(y, ns ? -1 : +1, &nth2, ry);
}
}
else {
@@ -2471,6 +2431,8 @@ date_s__valid_jd_p(int argc, VALUE *argv, VALUE klass)
*
* Just returns true. It's nonsense, but is for symmetry.
*
+ * For example:
+ *
* Date.valid_jd?(2451944) #=> true
*
* See also jd.
@@ -2559,6 +2521,8 @@ date_s__valid_civil_p(int argc, VALUE *argv, VALUE klass)
*
* Returns true if the given calendar date is valid, and false if not.
*
+ * For example:
+ *
* Date.valid_date?(2001,2,3) #=> true
* Date.valid_date?(2001,2,29) #=> false
*
@@ -2640,6 +2604,8 @@ date_s__valid_ordinal_p(int argc, VALUE *argv, VALUE klass)
*
* Returns true if the given ordinal date is valid, and false if not.
*
+ * For example:
+ *
* Date.valid_ordinal?(2001,34) #=> true
* Date.valid_ordinal?(2001,366) #=> false
*
@@ -2722,6 +2688,8 @@ date_s__valid_commercial_p(int argc, VALUE *argv, VALUE klass)
*
* Returns true if the given week date is valid, and false if not.
*
+ * For example:
+ *
* Date.valid_commercial?(2001,5,6) #=> true
* Date.valid_commercial?(2001,5,8) #=> false
*
@@ -2907,6 +2875,8 @@ date_s_zone_to_diff(VALUE klass, VALUE str)
* Returns true if the given year is a leap year of the proleptic
* Julian calendar.
*
+ * For example:
+ *
* Date.julian_leap?(1900) #=> true
* Date.julian_leap?(1901) #=> false
*/
@@ -2928,6 +2898,8 @@ date_s_julian_leap_p(VALUE klass, VALUE y)
* Returns true if the given year is a leap year of the proleptic
* Gregorian calendar.
*
+ * For example:
+ *
* Date.gregorian_leap?(1900) #=> false
* Date.gregorian_leap?(2000) #=> true
*/
@@ -3255,6 +3227,8 @@ static VALUE d_lite_plus(VALUE, VALUE);
* Creates a date object denoting the given chronological Julian day
* number.
*
+ * For example:
+ *
* Date.jd(2451944) #=> #<Date: 2001-02-03 ...>
* Date.jd(2451945) #=> #<Date: 2001-02-04 ...>
* Date.jd(0) #=> #<Date: -4712-01-01 ...>
@@ -3305,6 +3279,8 @@ date_s_jd(int argc, VALUE *argv, VALUE klass)
* relative day from the end of year when negative). It should not be
* zero.
*
+ * For example:
+ *
* Date.ordinal(2001) #=> #<Date: 2001-01-01 ...>
* Date.ordinal(2001,34) #=> #<Date: 2001-02-03 ...>
* Date.ordinal(2001,-1) #=> #<Date: 2001-12-31 ...>
@@ -3373,6 +3349,8 @@ date_s_ordinal(int argc, VALUE *argv, VALUE klass)
* Gregorian calendar) and Date::JULIAN (the proleptic Julian
* calendar) can be specified as a day of calendar reform.
*
+ * For example:
+ *
* Date.new(2001) #=> #<Date: 2001-01-01 ...>
* Date.new(2001,2,3) #=> #<Date: 2001-02-03 ...>
* Date.new(2001,2,-1) #=> #<Date: 2001-02-28 ...>
@@ -3450,6 +3428,8 @@ date_s_civil(int argc, VALUE *argv, VALUE klass)
* number (as a relative week/day from the end of year/week when
* negative). They should not be zero.
*
+ * For example:
+ *
* Date.commercial(2001) #=> #<Date: 2001-01-01 ...>
* Date.commercial(2002) #=> #<Date: 2001-12-31 ...>
* Date.commercial(2001,5,6) #=> #<Date: 2001-02-03 ...>
@@ -3628,6 +3608,8 @@ static void set_sg(union DateData *, double);
* call-seq:
* Date.today([start=Date::ITALY]) -> date
*
+ * For example:
+ *
* Date.today #=> #<Date: 2011-06-11 ..>
*
* Creates a date object denoting the present day.
@@ -4223,8 +4205,9 @@ date_s__strptime_internal(int argc, VALUE *argv, VALUE klass,
* Date._strptime(string[, format='%F']) -> hash
*
* Parses the given representation of date and time with the given
- * template, and returns a hash of parsed elements. _strptime does
- * not support specification of flags and width unlike strftime.
+ * template, and returns a hash of parsed elements.
+ *
+ * For example:
*
* Date._strptime('2001-02-03', '%Y-%m-%d')
* #=> {:year=>2001, :mon=>2, :mday=>3}
@@ -4242,8 +4225,9 @@ date_s__strptime(int argc, VALUE *argv, VALUE klass)
* Date.strptime([string='-4712-01-01'[, format='%F'[, start=ITALY]]]) -> date
*
* Parses the given representation of date and time with the given
- * template, and creates a date object. strptime does not support
- * specification of flags and width unlike strftime.
+ * template, and creates a date object.
+ *
+ * For example:
*
* Date.strptime('2001-02-03', '%Y-%m-%d') #=> #<Date: 2001-02-03 ...>
* Date.strptime('03-02-2001', '%d-%m-%Y') #=> #<Date: 2001-02-03 ...>
@@ -4316,13 +4300,14 @@ date_s__parse_internal(int argc, VALUE *argv, VALUE klass)
* Date._parse(string[, comp=true]) -> hash
*
* Parses the given representation of date and time, and returns a
- * hash of parsed elements. This method does not function as a
- * validator.
+ * hash of parsed elements.
*
* If the optional second argument is true and the detected year is in
* the range "00" to "99", considers the year a 2-digit form and makes
* it full.
*
+ * For example:
+ *
* Date._parse('2001-02-03') #=> {:year=>2001, :mon=>2, :mday=>3}
*/
static VALUE
@@ -4336,12 +4321,14 @@ date_s__parse(int argc, VALUE *argv, VALUE klass)
* Date.parse(string='-4712-01-01'[, comp=true[, start=ITALY]]) -> date
*
* Parses the given representation of date and time, and creates a
- * date object. This method does not function as a validator.
+ * date object.
*
* If the optional second argument is true and the detected year is in
* the range "00" to "99", considers the year a 2-digit form and makes
* it full.
*
+ * For example:
+ *
* Date.parse('2001-02-03') #=> #<Date: 2001-02-03 ...>
* Date.parse('20010203') #=> #<Date: 2001-02-03 ...>
* Date.parse('3rd Feb 2001') #=> #<Date: 2001-02-03 ...>
@@ -4398,6 +4385,8 @@ date_s__iso8601(VALUE klass, VALUE str)
* Creates a new Date object by parsing from a string according to
* some typical ISO 8601 formats.
*
+ * For example:
+ *
* Date.iso8601('2001-02-03') #=> #<Date: 2001-02-03 ...>
* Date.iso8601('20010203') #=> #<Date: 2001-02-03 ...>
* Date.iso8601('2001-W05-6') #=> #<Date: 2001-02-03 ...>
@@ -4441,6 +4430,8 @@ date_s__rfc3339(VALUE klass, VALUE str)
* Creates a new Date object by parsing from a string according to
* some typical RFC 3339 formats.
*
+ * For example:
+ *
* Date.rfc3339('2001-02-03T04:05:06+07:00') #=> #<Date: 2001-02-03 ...>
*/
static VALUE
@@ -4482,6 +4473,8 @@ date_s__xmlschema(VALUE klass, VALUE str)
* Creates a new Date object by parsing from a string according to
* some typical XML Schema formats.
*
+ * For example:
+ *
* Date.xmlschema('2001-02-03') #=> #<Date: 2001-02-03 ...>
*/
static VALUE
@@ -4525,6 +4518,8 @@ date_s__rfc2822(VALUE klass, VALUE str)
* Creates a new Date object by parsing from a string according to
* some typical RFC 2822 formats.
*
+ * For example:
+ *
* Date.rfc2822('Sat, 3 Feb 2001 00:00:00 +0000')
* #=> #<Date: 2001-02-03 ...>
*/
@@ -4567,8 +4562,11 @@ date_s__httpdate(VALUE klass, VALUE str)
* Creates a new Date object by parsing from a string according to
* some RFC 2616 format.
*
+ * For example:
+ *
* Date.httpdate('Sat, 03 Feb 2001 00:00:00 GMT')
* #=> #<Date: 2001-02-03 ...>
+ *
*/
static VALUE
date_s_httpdate(int argc, VALUE *argv, VALUE klass)
@@ -4609,6 +4607,8 @@ date_s__jisx0301(VALUE klass, VALUE str)
* Creates a new Date object by parsing from a string according to
* some typical JIS X 0301 formats.
*
+ * For example:
+ *
* Date.jisx0301('H13.02.03') #=> #<Date: 2001-02-03 ...>
*/
static VALUE
@@ -4694,9 +4694,6 @@ d_lite_initialize(int argc, VALUE *argv, VALUE self)
int df, of;
double sg;
- rb_check_frozen(self);
- rb_check_trusted(self);
-
rb_scan_args(argc, argv, "05", &vjd, &vdf, &vsf, &vof, &vsg);
jd = INT2FIX(0);
@@ -4750,9 +4747,6 @@ d_lite_initialize(int argc, VALUE *argv, VALUE self)
static VALUE
d_lite_initialize_copy(VALUE copy, VALUE date)
{
- rb_check_frozen(copy);
- rb_check_trusted(copy);
-
if (copy == date)
return copy;
{
@@ -4800,6 +4794,8 @@ d_lite_fill(VALUE self)
* Returns the astronomical Julian day number. This is a fractional
* number, which is not adjusted by the offset.
*
+ * For example:
+ *
* DateTime.new(2001,2,3,4,5,6,'+7').ajd #=> (11769328217/4800)
* DateTime.new(2001,2,2,14,5,6,'-7').ajd #=> (11769328217/4800)
*/
@@ -4817,6 +4813,8 @@ d_lite_ajd(VALUE self)
* Returns the astronomical modified Julian day number. This is
* a fractional number, which is not adjusted by the offset.
*
+ * For example:
+ *
* DateTime.new(2001,2,3,4,5,6,'+7').amjd #=> (249325817/4800)
* DateTime.new(2001,2,2,14,5,6,'-7').amjd #=> (249325817/4800)
*/
@@ -4834,6 +4832,8 @@ d_lite_amjd(VALUE self)
* Returns the Julian day number. This is a whole number, which is
* adjusted by the offset as the local time.
*
+ * For example:
+ *
* DateTime.new(2001,2,3,4,5,6,'+7').jd #=> 2451944
* DateTime.new(2001,2,3,4,5,6,'-7').jd #=> 2451944
*/
@@ -4851,6 +4851,8 @@ d_lite_jd(VALUE self)
* Returns the modified Julian day number. This is a whole number,
* which is adjusted by the offset as the local time.
*
+ * For example:
+ *
* DateTime.new(2001,2,3,4,5,6,'+7').mjd #=> 51943
* DateTime.new(2001,2,3,4,5,6,'-7').mjd #=> 51943
*/
@@ -4868,6 +4870,8 @@ d_lite_mjd(VALUE self)
* Returns the Lilian day number. This is a whole number, which is
* adjusted by the offset as the local time.
*
+ * For example:
+ *
* Date.new(2001,2,3).ld #=> 152784
*/
static VALUE
@@ -4883,6 +4887,8 @@ d_lite_ld(VALUE self)
*
* Returns the year.
*
+ * For example:
+ *
* Date.new(2001,2,3).year #=> 2001
* (Date.new(1,1,1) - 1).year #=> 0
*/
@@ -4899,6 +4905,8 @@ d_lite_year(VALUE self)
*
* Returns the day of the year (1-366).
*
+ * For example:
+ *
* Date.new(2001,2,3).yday #=> 34
*/
static VALUE
@@ -4915,6 +4923,8 @@ d_lite_yday(VALUE self)
*
* Returns the month (1-12).
*
+ * For example:
+ *
* Date.new(2001,2,3).mon #=> 2
*/
static VALUE
@@ -4931,6 +4941,8 @@ d_lite_mon(VALUE self)
*
* Returns the day of the month (1-31).
*
+ * For example:
+ *
* Date.new(2001,2,3).mday #=> 3
*/
static VALUE
@@ -4946,6 +4958,8 @@ d_lite_mday(VALUE self)
*
* Returns the fractional part of the day.
*
+ * For example:
+ *
* DateTime.new(2001,2,3,12).day_fraction #=> (1/2)
*/
static VALUE
@@ -4963,6 +4977,8 @@ d_lite_day_fraction(VALUE self)
*
* Returns the calendar week based year.
*
+ * For example:
+ *
* Date.new(2001,2,3).cwyear #=> 2001
* Date.new(2000,1,1).cwyear #=> 1999
*/
@@ -4979,6 +4995,8 @@ d_lite_cwyear(VALUE self)
*
* Returns the calendar week number (1-53).
*
+ * For example:
+ *
* Date.new(2001,2,3).cweek #=> 5
*/
static VALUE
@@ -4994,6 +5012,8 @@ d_lite_cweek(VALUE self)
*
* Returns the day of calendar week (1-7, Monday is 1).
*
+ * For example:
+ *
* Date.new(2001,2,3).cwday #=> 6
*/
static VALUE
@@ -5025,6 +5045,8 @@ d_lite_wnum1(VALUE self)
*
* Returns the day of week (0-6, Sunday is zero).
*
+ * For example:
+ *
* Date.new(2001,2,3).wday #=> 6
*/
static VALUE
@@ -5151,6 +5173,8 @@ d_lite_nth_kday_p(VALUE self, VALUE n, VALUE k)
*
* Returns the hour (0-23).
*
+ * For example:
+ *
* DateTime.new(2001,2,3,4,5,6).hour #=> 4
*/
static VALUE
@@ -5167,6 +5191,8 @@ d_lite_hour(VALUE self)
*
* Returns the minute (0-59).
*
+ * For example:
+ *
* DateTime.new(2001,2,3,4,5,6).min #=> 5
*/
static VALUE
@@ -5183,6 +5209,8 @@ d_lite_min(VALUE self)
*
* Returns the second (0-59).
*
+ * For example:
+ *
* DateTime.new(2001,2,3,4,5,6).sec #=> 6
*/
static VALUE
@@ -5199,6 +5227,8 @@ d_lite_sec(VALUE self)
*
* Returns the fractional part of the second.
*
+ * For example:
+ *
* DateTime.new(2001,2,3,4,5,6.5).sec_fraction #=> (1/2)
*/
static VALUE
@@ -5214,6 +5244,8 @@ d_lite_sec_fraction(VALUE self)
*
* Returns the offset.
*
+ * For example:
+ *
* DateTime.parse('04pm+0730').offset #=> (5/16)
*/
static VALUE
@@ -5229,6 +5261,8 @@ d_lite_offset(VALUE self)
*
* Returns the timezone.
*
+ * For example:
+ *
* DateTime.parse('04pm+0730').zone #=> "+07:30"
*/
static VALUE
@@ -5244,6 +5278,8 @@ d_lite_zone(VALUE self)
*
* Retruns true if the date is before the day of calendar reform.
*
+ * For example:
+ *
* Date.new(1582,10,15).julian? #=> false
* (Date.new(1582,10,15) - 1).julian? #=> true
*/
@@ -5260,6 +5296,8 @@ d_lite_julian_p(VALUE self)
*
* Retunrs true if the date is on or after the day of calendar reform.
*
+ * For example:
+ *
* Date.new(1582,10,15).gregorian? #=> true
* (Date.new(1582,10,15) - 1).gregorian? #=> false
*/
@@ -5276,6 +5314,8 @@ d_lite_gregorian_p(VALUE self)
*
* Returns true if the year is a leap year.
*
+ * For example:
+ *
* Date.new(2000).leap? #=> true
* Date.new(2001).leap? #=> false
*/
@@ -5300,6 +5340,8 @@ d_lite_leap_p(VALUE self)
*
* Returns the Julian day number denoting the day of calendar reform.
*
+ * For example:
+ *
* Date.new(2001,2,3).start #=> 2299161.0
* Date.new(2001,2,3,Date::GREGORIAN).start #=> -Infinity
*/
@@ -5344,12 +5386,12 @@ set_sg(union DateData *x, double sg)
if (simple_dat_p(x)) {
get_s_jd(x);
clear_civil(x);
- x->s.sg = (date_sg_t)sg;
+ x->s.sg = (sg_cast)sg;
} else {
get_c_jd(x);
get_c_df(x);
clear_civil(x);
- x->c.sg = (date_sg_t)sg;
+ x->c.sg = (sg_cast)sg;
}
}
@@ -5370,6 +5412,8 @@ dup_obj_with_new_start(VALUE obj, double sg)
*
* Duplicates self and resets its the day of calendar reform.
*
+ * For example:
+ *
* d = Date.new(1582,10,15)
* d.new_start(Date::JULIAN) #=> #<Date: 1582-10-05 ...>
*/
@@ -5463,6 +5507,8 @@ dup_obj_with_new_offset(VALUE obj, int of)
*
* Duplicates self and resets its offset.
*
+ * For example:
+ *
* d = DateTime.new(2001,2,3,4,5,6,'-02:00')
* #=> #<DateTime: 2001-02-03T04:05:06-02:00 ...>
* d.new_offset('+09:00') #=> #<DateTime: 2001-02-03T15:05:06+09:00 ...>
@@ -5490,6 +5536,8 @@ d_lite_new_offset(int argc, VALUE *argv, VALUE self)
* should be a numeric value. If the other is flonum, assumes its
* precision is at most nanosecond.
*
+ * For example:
+ *
* Date.new(2001,2,3) + 1 #=> #<Date: 2001-02-04 ...>
* DateTime.new(2001,2,3) + Rational(1,2)
* #=> #<DateTime: 2001-02-03T12:00:00+00:00 ...>
@@ -5521,7 +5569,15 @@ d_lite_plus(VALUE self, VALUE other)
jd = m_jd(dat);
else {
jd = m_jd(dat) + (int)t;
- canonicalize_jd(nth, jd);
+
+ if (jd < 0) {
+ nth = f_sub(nth, INT2FIX(1));
+ jd += CM_PERIOD;
+ }
+ else if (jd >= CM_PERIOD) {
+ nth = f_add(nth, INT2FIX(1));
+ jd -= CM_PERIOD;
+ }
}
if (simple_dat_p(dat))
@@ -5574,7 +5630,14 @@ d_lite_plus(VALUE self, VALUE other)
jd = m_jd(dat);
else {
jd = m_jd(dat) + jd;
- canonicalize_jd(nth, jd);
+ if (jd < 0) {
+ nth = f_sub(nth, INT2FIX(1));
+ jd += CM_PERIOD;
+ }
+ else if (jd >= CM_PERIOD) {
+ nth = f_add(nth, INT2FIX(1));
+ jd -= CM_PERIOD;
+ }
}
if (f_zero_p(nth))
@@ -5681,7 +5744,14 @@ d_lite_plus(VALUE self, VALUE other)
jd = m_jd(dat);
else {
jd = m_jd(dat) + jd;
- canonicalize_jd(nth, jd);
+ if (jd < 0) {
+ nth = f_sub(nth, INT2FIX(1));
+ jd += CM_PERIOD;
+ }
+ else if (jd >= CM_PERIOD) {
+ nth = f_add(nth, INT2FIX(1));
+ jd -= CM_PERIOD;
+ }
}
if (f_zero_p(nth))
@@ -5784,7 +5854,14 @@ d_lite_plus(VALUE self, VALUE other)
jd = m_jd(dat);
else {
jd = m_jd(dat) + jd;
- canonicalize_jd(nth, jd);
+ if (jd < 0) {
+ nth = f_sub(nth, INT2FIX(1));
+ jd += CM_PERIOD;
+ }
+ else if (jd >= CM_PERIOD) {
+ nth = f_add(nth, INT2FIX(1));
+ jd -= CM_PERIOD;
+ }
}
if (f_zero_p(nth))
@@ -5828,7 +5905,15 @@ minus_dd(VALUE self, VALUE other)
d = m_jd(adat) - m_jd(bdat);
df = m_df(adat) - m_df(bdat);
sf = f_sub(m_sf(adat), m_sf(bdat));
- canonicalize_jd(n, d);
+
+ if (d < 0) {
+ n = f_sub(n, INT2FIX(1));
+ d += CM_PERIOD;
+ }
+ else if (d >= CM_PERIOD) {
+ n = f_add(n, INT2FIX(1));
+ d -= CM_PERIOD;
+ }
if (df < 0) {
d -= 1;
@@ -5875,6 +5960,8 @@ minus_dd(VALUE self, VALUE other)
* pointing other days before self. If the other is flonum, assumes
* its precision is at most nanosecond.
*
+ * For example:
+ *
* Date.new(2001,2,3) - 1 #=> #<Date: 2001-02-02 ...>
* DateTime.new(2001,2,3) - Rational(1,2)
* #=> #<DateTime: 2001-02-02T12:00:00+00:00 ...>
@@ -5957,6 +6044,8 @@ d_lite_next(VALUE self)
* Returns a date object pointing n months after self. The n should
* be a numeric value.
*
+ * For example:
+ *
* Date.new(2001,2,3) >> 1 #=> #<Date: 2001-03-03 ...>
* Date.new(2001,1,31) >> 1 #=> #<Date: 2001-02-28 ...>
* Date.new(2001,2,3) >> -2 #=> #<Date: 2000-12-03 ...>
@@ -6007,6 +6096,8 @@ d_lite_rshift(VALUE self, VALUE other)
* Returns a date object pointing n months before self. The n should
* be a numeric value.
*
+ * For example:
+ *
* Date.new(2001,2,3) << 1 #=> #<Date: 2001-01-03 ...>
* Date.new(2001,1,31) << 11 #=> #<Date: 2000-02-29 ...>
* Date.new(2001,2,3) << -1 #=> #<Date: 2001-03-03 ...>
@@ -6095,6 +6186,8 @@ static VALUE d_lite_cmp(VALUE, VALUE);
* Iterates evaluation of the given block, which takes a date object.
* The limit should be a date object.
*
+ * For example:
+ *
* Date.new(2001).step(Date.new(2001,-1,-1)).select{|d| d.sunday?}.size
* #=> 52
*/
@@ -6206,8 +6299,6 @@ cmp_dd(VALUE self, VALUE other)
int a_jd, b_jd,
a_df, b_df;
- m_canonicalize_jd(adat);
- m_canonicalize_jd(bdat);
a_nth = m_nth(adat);
b_nth = m_nth(bdat);
if (f_eqeq_p(a_nth, b_nth)) {
@@ -6260,6 +6351,8 @@ cmp_dd(VALUE self, VALUE other)
* should be a date object or a numeric value as an astronomical
* Julian day number.
*
+ * For example:
+ *
* Date.new(2001,2,3) <=> Date.new(2001,2,4) #=> -1
* Date.new(2001,2,3) <=> Date.new(2001,2,3) #=> 0
* Date.new(2001,2,3) <=> Date.new(2001,2,2) #=> 1
@@ -6286,8 +6379,6 @@ d_lite_cmp(VALUE self, VALUE other)
VALUE a_nth, b_nth;
int a_jd, b_jd;
- m_canonicalize_jd(adat);
- m_canonicalize_jd(bdat);
a_nth = m_nth(adat);
b_nth = m_nth(bdat);
if (f_eqeq_p(a_nth, b_nth)) {
@@ -6303,7 +6394,7 @@ d_lite_cmp(VALUE self, VALUE other)
return INT2FIX(1);
}
}
- else if (f_lt_p(a_nth, b_nth)) {
+ else if (a_nth < b_nth) {
return INT2FIX(-1);
}
else {
@@ -6322,8 +6413,6 @@ d_lite_cmp(VALUE self, VALUE other)
a_pd, b_pd;
#endif
- m_canonicalize_jd(adat);
- m_canonicalize_jd(bdat);
a_nth = m_nth(adat);
b_nth = m_nth(bdat);
if (f_eqeq_p(a_nth, b_nth)) {
@@ -6401,6 +6490,8 @@ equal_gen(VALUE self, VALUE other)
*
* Returns true if they are the same day.
*
+ * For example:
+ *
* Date.new(2001,2,3) === Date.new(2001,2,3)
* #=> true
* Date.new(2001,2,3) === Date.new(2001,2,4)
@@ -6429,8 +6520,6 @@ d_lite_equal(VALUE self, VALUE other)
VALUE a_nth, b_nth;
int a_jd, b_jd;
- m_canonicalize_jd(adat);
- m_canonicalize_jd(bdat);
a_nth = m_nth(adat);
b_nth = m_nth(bdat);
a_jd = m_local_jd(adat);
@@ -6452,8 +6541,6 @@ d_lite_equal(VALUE self, VALUE other)
a_pd, b_pd;
#endif
- m_canonicalize_jd(adat);
- m_canonicalize_jd(bdat);
a_nth = m_nth(adat);
b_nth = m_nth(bdat);
if (f_eqeq_p(a_nth, b_nth)) {
@@ -6520,6 +6607,8 @@ static VALUE strftimev(const char *, VALUE,
* Returns a string in an ISO 8601 format (This method doesn't use the
* expanded representations).
*
+ * For example:
+ *
* Date.new(2001,2,3).to_s #=> "2001-02-03"
*/
static VALUE
@@ -6622,10 +6711,13 @@ mk_inspect(union DateData *x, const char *klass, const char *to_s)
*
* Returns the value as a string for inspection.
*
+ * For example:
+ *
* Date.new(2001,2,3).inspect
* #=> "#<Date: 2001-02-03 ((2451944j,0s,0n),+0s,2299161j)>"
* DateTime.new(2001,2,3,4,5,6,'-7').inspect
* #=> "#<DateTime: 2001-02-03T04:05:06-07:00 ((2451944j,39906s,0n),-25200s,2299161j)>"
+ *
*/
static VALUE
d_lite_inspect(VALUE self)
@@ -6713,10 +6805,10 @@ tmx_m_msecs(union DateData *x)
return s;
}
-static int
+static VALUE
tmx_m_of(union DateData *x)
{
- return m_of(x);
+ return INT2FIX(m_of(x));
}
static char *
@@ -6742,7 +6834,7 @@ static struct tmx_funcs tmx_funcs = {
(VALUE (*)(void *))m_sf_in_sec,
(VALUE (*)(void *))tmx_m_secs,
(VALUE (*)(void *))tmx_m_msecs,
- (int (*)(void *))tmx_m_of,
+ (VALUE (*)(void *))tmx_m_of,
(char *(*)(void *))tmx_m_zone
};
@@ -6833,11 +6925,12 @@ date_strftime_internal(int argc, VALUE *argv, VALUE self,
* 0 use zeros for padding.
* ^ upcase the result string.
* # change case.
+ * : use colons for %z.
*
* The minimum field width specifies the minimum width.
*
- * The modifiers are "E", "O", ":", "::" and ":::".
- * "E" and "O" are ignored. No effect to result currently.
+ * The modifier is "E" and "O".
+ * They are ignored.
*
* Format directives:
*
@@ -6876,10 +6969,10 @@ date_strftime_internal(int argc, VALUE *argv, VALUE self,
*
* %L - Millisecond of the second (000..999)
* %N - Fractional seconds digits, default is 9 digits (nanosecond)
- * %3N millisecond (3 digits) %15N femtosecond (15 digits)
- * %6N microsecond (6 digits) %18N attosecond (18 digits)
- * %9N nanosecond (9 digits) %21N zeptosecond (21 digits)
- * %12N picosecond (12 digits) %24N yoctosecond (24 digits)
+ * %3N millisecond (3 digits)
+ * %6N microsecond (6 digits)
+ * %9N nanosecond (9 digits)
+ * %12N picosecond (12 digits)
*
* Time zone:
* %z - Time zone as hour and minute offset from UTC (e.g. +0900)
@@ -6887,7 +6980,7 @@ date_strftime_internal(int argc, VALUE *argv, VALUE self,
* %::z - hour, minute and second offset from UTC (e.g. +09:00:00)
* %:::z - hour, minute and second offset from UTC
* (e.g. +09, +09:30, +09:30:30)
- * %Z - Time zone abbreviation name or something similar information.
+ * %Z - Time zone abbreviation name
*
* Weekday:
* %A - The full weekday name (``Sunday'')
@@ -6913,7 +7006,7 @@ date_strftime_internal(int argc, VALUE *argv, VALUE self,
*
* Seconds since the Unix Epoch:
* %s - Number of seconds since 1970-01-01 00:00:00 UTC.
- * %Q - Number of milliseconds since 1970-01-01 00:00:00 UTC.
+ * %Q - Number of microseconds since 1970-01-01 00:00:00 UTC.
*
* Literal string:
* %n - Newline character (\n)
@@ -7109,6 +7202,8 @@ jisx0301_date(VALUE jd, VALUE y)
*
* Returns a string in a JIS X 0301 format.
*
+ * For example:
+ *
* Date.new(2001,2,3).jisx0301 #=> "H13.02.03"
*/
static VALUE
@@ -7174,33 +7269,19 @@ d_lite_marshal_load(VALUE self, VALUE a)
{
get_d1(self);
- rb_check_frozen(self);
- rb_check_trusted(self);
-
if (TYPE(a) != T_ARRAY)
rb_raise(rb_eTypeError, "expected an array");
switch (RARRAY_LEN(a)) {
- case 2: /* 1.6.x */
- case 3: /* 1.8.x, 1.9.2 */
+ case 3:
{
VALUE ajd, of, sg, nth, sf;
int jd, df, rof;
double rsg;
-
- if (RARRAY_LEN(a) == 2) {
- ajd = f_sub(RARRAY_PTR(a)[0], half_days_in_day);
- of = INT2FIX(0);
- sg = RARRAY_PTR(a)[1];
- if (!k_numeric_p(sg))
- sg = DBL2NUM(RTEST(sg) ? GREGORIAN : JULIAN);
- }
- else {
- ajd = RARRAY_PTR(a)[0];
- of = RARRAY_PTR(a)[1];
- sg = RARRAY_PTR(a)[2];
- }
+ ajd = RARRAY_PTR(a)[0];
+ of = RARRAY_PTR(a)[1];
+ sg = RARRAY_PTR(a)[2];
old_to_new(ajd, of, sg,
&nth, &jd, &df, &sf, &rof, &rsg);
@@ -7256,16 +7337,6 @@ d_lite_marshal_load(VALUE self, VALUE a)
return self;
}
-/* :nodoc: */
-static VALUE
-date_s__load(VALUE klass, VALUE s)
-{
- VALUE a, obj;
-
- a = rb_marshal_load(s);
- obj = d_lite_s_alloc(klass);
- return d_lite_marshal_load(obj, a);
-}
/* datetime */
@@ -7276,6 +7347,8 @@ date_s__load(VALUE klass, VALUE s)
* Creates a datetime object denoting the given chronological Julian
* day number.
*
+ * For example:
+ *
* DateTime.jd(2451944) #=> #<DateTime: 2001-02-03T00:00:00+00:00 ...>
* DateTime.jd(2451945) #=> #<DateTime: 2001-02-04T00:00:00+00:00 ...>
* DateTime.jd(Rational('0.5'))
@@ -7343,6 +7416,8 @@ datetime_s_jd(int argc, VALUE *argv, VALUE klass)
*
* Creates a date-time object denoting the given ordinal date.
*
+ * For example:
+ *
* DateTime.ordinal(2001,34) #=> #<DateTime: 2001-02-03T00:00:00+00:00 ...>
* DateTime.ordinal(2001,34,4,5,6,'+7')
* #=> #<DateTime: 2001-02-03T04:05:06+07:00 ...>
@@ -7419,6 +7494,8 @@ datetime_s_ordinal(int argc, VALUE *argv, VALUE klass)
*
* Creates a date-time object denoting the given calendar date.
*
+ * For example:
+ *
* DateTime.new(2001,2,3) #=> #<DateTime: 2001-02-03T00:00:00+00:00 ...>
* DateTime.new(2001,2,3,4,5,6,'+7')
* #=> #<DateTime: 2001-02-03T04:05:06+07:00 ...>
@@ -7517,6 +7594,8 @@ datetime_s_civil(int argc, VALUE *argv, VALUE klass)
*
* Creates a date-time object denoting the given week date.
*
+ * For example:
+ *
* DateTime.commercial(2001) #=> #<DateTime: 2001-01-01T00:00:00+00:00 ...>
* DateTime.commercial(2002) #=> #<DateTime: 2001-12-31T00:00:00+00:00 ...>
* DateTime.commercial(2001,5,6,4,5,6,'+7')
@@ -7734,6 +7813,8 @@ datetime_s_nth_kday(int argc, VALUE *argv, VALUE klass)
*
* Creates a date-time object denoting the present time.
*
+ * For example:
+ *
* DateTime.now #=> #<DateTime: 2011-06-11T21:20:44+09:00 ...>
*/
static VALUE
@@ -7783,7 +7864,7 @@ datetime_s_now(int argc, VALUE *argv, VALUE klass)
of = tm.tm_gmtoff;
#elif defined(HAVE_VAR_TIMEZONE)
#ifdef HAVE_VAR_ALTZONE
- of = (long)-((tm.tm_isdst > 0) ? altzone : timezone);
+ of = (long)((tm.tm_isdst > 0) ? altzone : timezone);
#else
of = (long)-timezone;
if (tm.tm_isdst) {
@@ -7869,7 +7950,7 @@ dt_new_by_frags(VALUE klass, VALUE hash, VALUE sg)
set_hash("min", INT2FIX(0));
if (NIL_P(ref_hash("sec")))
set_hash("sec", INT2FIX(0));
- else if (f_eqeq_p(ref_hash("sec"), INT2FIX(60)))
+ else if (f_gt_p(ref_hash("sec"), INT2FIX(59)))
set_hash("sec", INT2FIX(59));
}
else {
@@ -7932,8 +8013,7 @@ dt_new_by_frags(VALUE klass, VALUE hash, VALUE sg)
* DateTime._strptime(string[, format='%FT%T%z']) -> hash
*
* Parses the given representation of date and time with the given
- * template, and returns a hash of parsed elements. _strptime does
- * not support specification of flags and width unlike strftime.
+ * template, and returns a hash of parsed elements.
*
* See also strptime(3) and strftime.
*/
@@ -7948,8 +8028,9 @@ datetime_s__strptime(int argc, VALUE *argv, VALUE klass)
* DateTime.strptime([string='-4712-01-01T00:00:00+00:00'[, format='%FT%T%z'[ ,start=ITALY]]]) -> datetime
*
* Parses the given representation of date and time with the given
- * template, and creates a date object. strptime does not support
- * specification of flags and width unlike strftime.
+ * template, and creates a date object.
+ *
+ * For example:
*
* DateTime.strptime('2001-02-03T04:05:06+07:00', '%Y-%m-%dT%H:%M:%S%z')
* #=> #<DateTime: 2001-02-03T04:05:06+07:00 ...>
@@ -8001,11 +8082,13 @@ datetime_s_strptime(int argc, VALUE *argv, VALUE klass)
* DateTime.parse(string='-4712-01-01T00:00:00+00:00'[, comp=true[, start=ITALY]]) -> datetime
*
* Parses the given representation of date and time, and creates a
- * date object. This method does not function as a validator.
+ * date object.
*
* If the optional second argument is true and the detected year is in
* the range "00" to "99", makes it full.
*
+ * For example:
+ *
* DateTime.parse('2001-02-03T04:05:06+07:00')
* #=> #<DateTime: 2001-02-03T04:05:06+07:00 ...>
* DateTime.parse('20010203T040506+0700')
@@ -8046,6 +8129,8 @@ datetime_s_parse(int argc, VALUE *argv, VALUE klass)
* Creates a new Date object by parsing from a string according to
* some typical ISO 8601 formats.
*
+ * For example:
+ *
* DateTime.iso8601('2001-02-03T04:05:06+07:00')
* #=> #<DateTime: 2001-02-03T04:05:06+07:00 ...>
* DateTime.iso8601('20010203T040506+0700')
@@ -8080,6 +8165,8 @@ datetime_s_iso8601(int argc, VALUE *argv, VALUE klass)
* Creates a new Date object by parsing from a string according to
* some typical RFC 3339 formats.
*
+ * For example:
+ *
* DateTime.rfc3339('2001-02-03T04:05:06+07:00')
* #=> #<DateTime: 2001-02-03T04:05:06+07:00 ...>
*/
@@ -8110,6 +8197,8 @@ datetime_s_rfc3339(int argc, VALUE *argv, VALUE klass)
* Creates a new Date object by parsing from a string according to
* some typical XML Schema formats.
*
+ * For example:
+ *
* DateTime.xmlschema('2001-02-03T04:05:06+07:00')
* #=> #<DateTime: 2001-02-03T04:05:06+07:00 ...>
*/
@@ -8141,6 +8230,8 @@ datetime_s_xmlschema(int argc, VALUE *argv, VALUE klass)
* Creates a new Date object by parsing from a string according to
* some typical RFC 2822 formats.
*
+ * For example:
+ *
* DateTime.rfc2822('Sat, 3 Feb 2001 04:05:06 +0700')
* #=> #<DateTime: 2001-02-03T04:05:06+07:00 ...>
*/
@@ -8171,6 +8262,8 @@ datetime_s_rfc2822(int argc, VALUE *argv, VALUE klass)
* Creates a new Date object by parsing from a string according to
* some RFC 2616 format.
*
+ * For example:
+ *
* DateTime.httpdate('Sat, 03 Feb 2001 04:05:06 GMT')
* #=> #<DateTime: 2001-02-03T04:05:06+00:00 ...>
*/
@@ -8201,6 +8294,8 @@ datetime_s_httpdate(int argc, VALUE *argv, VALUE klass)
* Creates a new Date object by parsing from a string according to
* some typical JIS X 0301 formats.
*
+ * For example:
+ *
* DateTime.jisx0301('H13.02.03T04:05:06+07:00')
* #=> #<DateTime: 2001-02-03T04:05:06+07:00 ...>
*/
@@ -8231,6 +8326,8 @@ datetime_s_jisx0301(int argc, VALUE *argv, VALUE klass)
* Returns a string in an ISO 8601 format (This method doesn't use the
* expanded representations).
*
+ * For example:
+ *
* DateTime.new(2001,2,3,4,5,6,'-7').to_s
* #=> "2001-02-03T04:05:06-07:00"
*/
@@ -8307,10 +8404,10 @@ dt_lite_to_s(VALUE self)
*
* %L - Millisecond of the second (000..999)
* %N - Fractional seconds digits, default is 9 digits (nanosecond)
- * %3N millisecond (3 digits) %15N femtosecond (15 digits)
- * %6N microsecond (6 digits) %18N attosecond (18 digits)
- * %9N nanosecond (9 digits) %21N zeptosecond (21 digits)
- * %12N picosecond (12 digits) %24N yoctosecond (24 digits)
+ * %3N millisecond (3 digits)
+ * %6N microsecond (6 digits)
+ * %9N nanosecond (9 digits)
+ * %12N picosecond (12 digits)
*
* Time zone:
* %z - Time zone as hour and minute offset from UTC (e.g. +0900)
@@ -8318,7 +8415,7 @@ dt_lite_to_s(VALUE self)
* %::z - hour, minute and second offset from UTC (e.g. +09:00:00)
* %:::z - hour, minute and second offset from UTC
* (e.g. +09, +09:30, +09:30:30)
- * %Z - Time zone abbreviation name or something similar information.
+ * %Z - Time zone abbreviation name
*
* Weekday:
* %A - The full weekday name (``Sunday'')
@@ -8344,7 +8441,7 @@ dt_lite_to_s(VALUE self)
*
* Seconds since the Unix Epoch:
* %s - Number of seconds since 1970-01-01 00:00:00 UTC.
- * %Q - Number of milliseconds since 1970-01-01 00:00:00 UTC.
+ * %Q - Number of microseconds since 1970-01-01 00:00:00 UTC.
*
* Literal string:
* %n - Newline character (\n)
@@ -8429,7 +8526,6 @@ iso8601_timediv(VALUE self, VALUE n)
{
VALUE fmt;
- n = to_integer(n);
fmt = rb_usascii_str_new2("T%H:%M:%S");
if (f_gt_p(n, INT2FIX(0))) {
VALUE argv[3];
@@ -8455,6 +8551,8 @@ iso8601_timediv(VALUE self, VALUE n)
* This method is equivalent to strftime('%FT%T'). The optional
* argument n is length of fractional seconds.
*
+ * For example:
+ *
* DateTime.parse('2001-02-03T04:05:06.123456789+07:00').iso8601(9)
* #=> "2001-02-03T04:05:06.123456789+07:00"
*/
@@ -8479,6 +8577,8 @@ dt_lite_iso8601(int argc, VALUE *argv, VALUE self)
* This method is equivalent to strftime('%FT%T'). The optional
* argument n is length of fractional seconds.
*
+ * For example:
+ *
* DateTime.parse('2001-02-03T04:05:06.123456789+07:00').rfc3339(9)
* #=> "2001-02-03T04:05:06.123456789+07:00"
*/
@@ -8495,6 +8595,8 @@ dt_lite_rfc3339(int argc, VALUE *argv, VALUE self)
* Returns a string in a JIS X 0301 format. The optional argument n
* is length of fractional seconds.
*
+ * For example:
+ *
* DateTime.parse('2001-02-03T04:05:06.123456789+07:00').jisx0301(9)
* #=> "H13.02.03T04:05:06.123456789+07:00"
*/
@@ -8535,7 +8637,7 @@ dt_lite_jisx0301(int argc, VALUE *argv, VALUE self)
static VALUE
time_to_time(VALUE self)
{
- return f_getlocal(self);
+ return rb_funcall(self, rb_intern("getlocal"), 0);
}
/*
@@ -9298,11 +9400,11 @@ Init_date_core(void)
* zero (equals to UTC).
*
* DateTime.new(2001,2,3,4,5,6,Rational(3,24))
- * #=> #<DateTime: 2001-02-03T04:05:06+03:00 ...>
+ * #=> #<DateTime: 2001-02-03T03:04:05+03:00 ...>
* also accepts string form.
*
* DateTime.new(2001,2,3,4,5,6,'+03:00')
- * #=> #<DateTime: 2001-02-03T04:05:06+03:00 ...>
+ * #=> #<DateTime: 2001-02-03T03:04:05+03:00 ...>
*
* An optional argument the day of calendar reform (start) denotes
* a Julian day number, which should be 2298874 to 2426355 or
@@ -9570,7 +9672,6 @@ Init_date_core(void)
#endif
rb_define_method(cDate, "marshal_dump", d_lite_marshal_dump, 0);
rb_define_method(cDate, "marshal_load", d_lite_marshal_load, 1);
- rb_define_singleton_method(cDate, "_load", date_s__load, 1);
/* datetime */
diff --git a/ext/date/date_parse.c b/ext/date/date_parse.c
index 3003b45239..903163003c 100644
--- a/ext/date/date_parse.c
+++ b/ext/date/date_parse.c
@@ -7,8 +7,6 @@
#include "ruby/re.h"
#include <ctype.h>
-/* #define TIGHT_PARSER */
-
#define sizeof_array(o) (sizeof o / sizeof o[0])
#define f_negate(x) rb_funcall(x, rb_intern("-@"), 0)
@@ -56,14 +54,6 @@ static const char *abbr_months[] = {
#define issign(c) ((c) == '-' || (c) == '+')
#define asp_string() rb_str_new(" ", 1)
-#ifdef TIGHT_PARSER
-#define asuba_string() rb_str_new("\001", 1)
-#define asubb_string() rb_str_new("\002", 1)
-#define asubw_string() rb_str_new("\027", 1)
-#define asubt_string() rb_str_new("\024", 1)
-#endif
-
-#define DECDIGIT "0123456789"
static void
s3e(VALUE hash, VALUE y, VALUE m, VALUE d, int bc)
@@ -99,12 +89,12 @@ s3e(VALUE hash, VALUE y, VALUE m, VALUE d, int bc)
size_t l;
s = RSTRING_PTR(y);
- while (!issign((unsigned char)*s) && !isdigit((unsigned char)*s))
+ while (!issign(*s) && !isdigit(*s))
s++;
bp = s;
- if (issign((unsigned char)*s))
+ if (issign(*s))
s++;
- l = strspn(s, DECDIGIT);
+ l = strspn(s, "0123456789");
ep = s + l;
if (*ep) {
y = d;
@@ -148,7 +138,7 @@ s3e(VALUE hash, VALUE y, VALUE m, VALUE d, int bc)
VALUE iy;
s = RSTRING_PTR(y);
- while (!issign((unsigned char)*s) && !isdigit((unsigned char)*s))
+ while (!issign(*s) && !isdigit(*s))
s++;
bp = s;
if (issign(*s)) {
@@ -157,7 +147,7 @@ s3e(VALUE hash, VALUE y, VALUE m, VALUE d, int bc)
}
if (sign)
c = Qfalse;
- l = strspn(s, DECDIGIT);
+ l = strspn(s, "0123456789");
ep = s + l;
if (l > 2)
c = Qfalse;
@@ -169,22 +159,21 @@ s3e(VALUE hash, VALUE y, VALUE m, VALUE d, int bc)
buf[ep - bp] = '\0';
iy = cstr2num(buf);
}
+ if (bc)
+ iy = f_add(f_negate(iy), INT2FIX(1));
set_hash("year", iy);
}
- if (bc)
- set_hash("_bc", Qtrue);
-
if (!NIL_P(m)) {
const char *s, *bp, *ep;
size_t l;
VALUE im;
s = RSTRING_PTR(m);
- while (!isdigit((unsigned char)*s))
+ while (!isdigit(*s))
s++;
bp = s;
- l = strspn(s, DECDIGIT);
+ l = strspn(s, "0123456789");
ep = s + l;
{
char *buf;
@@ -203,10 +192,10 @@ s3e(VALUE hash, VALUE y, VALUE m, VALUE d, int bc)
VALUE id;
s = RSTRING_PTR(d);
- while (!isdigit((unsigned char)*s))
+ while (!isdigit(*s))
s++;
bp = s;
- l = strspn(s, DECDIGIT);
+ l = strspn(s, "0123456789");
ep = s + l;
{
char *buf;
@@ -228,23 +217,6 @@ s3e(VALUE hash, VALUE y, VALUE m, VALUE d, int bc)
#define ABBR_DAYS "sun|mon|tue|wed|thu|fri|sat"
#define ABBR_MONTHS "jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec"
-#ifdef TIGHT_PARSER
-#define VALID_DAYS "(?:" DAYS ")" "|(?:tues|wednes|thurs|thur|" ABBR_DAYS ")\\.?"
-#define VALID_MONTHS "(?:" MONTHS ")" "|(?:sept|" ABBR_MONTHS ")\\.?"
-#define DOTLESS_VALID_MONTHS "(?:" MONTHS ")" "|(?:sept|" ABBR_MONTHS ")"
-#define BOS "\\A\\s*"
-#define FPA "\\001"
-#define FPB "\\002"
-#define FPW "\\027"
-#define FPT "\\024"
-#define FPW_COM "\\s*(?:" FPW "\\s*,?)?\\s*"
-#define FPT_COM "\\s*(?:" FPT "\\s*,?)?\\s*"
-#define COM_FPW "\\s*(?:,?\\s*" FPW ")?\\s*"
-#define COM_FPT "\\s*(?:,?\\s*(?:@|\\b[aA][tT]\\b)?\\s*" FPT ")?\\s*"
-#define TEE_FPT "\\s*(?:[tT]?" FPT ")?"
-#define EOS "\\s*\\z"
-#endif
-
static VALUE
regcomp(const char *source, long len, int opt)
{
@@ -284,8 +256,13 @@ match(VALUE str, VALUE pat, VALUE hash, int (*cb)(VALUE, VALUE))
return 1;
}
+#define SUBS(s,p,c) \
+{ \
+ return subs(s, p, hash, c); \
+}
+
static int
-subx(VALUE str, VALUE rep, VALUE pat, VALUE hash, int (*cb)(VALUE, VALUE))
+subs(VALUE str, VALUE pat, VALUE hash, int (*cb)(VALUE, VALUE))
{
VALUE m;
@@ -299,40 +276,13 @@ subx(VALUE str, VALUE rep, VALUE pat, VALUE hash, int (*cb)(VALUE, VALUE))
be = f_begin(m, INT2FIX(0));
en = f_end(m, INT2FIX(0));
- f_aset2(str, be, LONG2NUM(NUM2LONG(en) - NUM2LONG(be)), rep);
+ f_aset2(str, be, LONG2NUM(NUM2LONG(en) - NUM2LONG(be)), asp_string());
(*cb)(m, hash);
}
return 1;
}
-#define SUBS(s,p,c) \
-{ \
- return subx(s, asp_string(), p, hash, c); \
-}
-
-#ifdef TIGHT_PARSER
-#define SUBA(s,p,c) \
-{ \
- return subx(s, asuba_string(), p, hash, c); \
-}
-
-#define SUBB(s,p,c) \
-{ \
- return subx(s, asubb_string(), p, hash, c); \
-}
-
-#define SUBW(s,p,c) \
-{ \
- return subx(s, asubw_string(), p, hash, c); \
-}
-
-#define SUBT(s,p,c) \
-{ \
- return subx(s, asubt_string(), p, hash, c); \
-}
-#endif
-
struct zone {
const char *name;
int offset;
@@ -431,14 +381,14 @@ date_zone_to_diff(VALUE str)
dest = d = ALLOCA_N(char, l + 1);
for (i = 0; i < l; i++) {
- if (isspace((unsigned char)s[i]) || s[i] == '\0') {
+ if (isspace(s[i]) || s[i] == '\0') {
if (!sp)
*d++ = ' ';
sp = 1;
}
else {
- if (isalpha((unsigned char)s[i]))
- *d++ = tolower((unsigned char)s[i]);
+ if (isalpha(s[i]))
+ *d++ = tolower(s[i]);
else
*d++ = s[i];
sp = 0;
@@ -569,7 +519,7 @@ date_zone_to_diff(VALUE str)
if (cl >= 3)
min = rb_str_new(&cs[1], 2);
if (cl >= 5)
- sec = rb_str_new(&cs[3], 2);
+ min = rb_str_new(&cs[3], 2);
}
else {
if (cl >= 2)
@@ -643,21 +593,11 @@ parse_day_cb(VALUE m, VALUE hash)
static int
parse_day(VALUE str, VALUE hash)
{
- static const char pat_source[] =
-#ifndef TIGHT_PARSER
- "\\b(" ABBR_DAYS ")[^-/\\d\\s]*"
-#else
- "(" VALID_DAYS ")"
-#endif
- ;
+ static const char pat_source[] = "\\b(" ABBR_DAYS ")[^-\\d\\s]*";
static VALUE pat = Qnil;
REGCOMP_I(pat);
-#ifndef TIGHT_PARSER
SUBS(str, pat, parse_day_cb);
-#else
- SUBW(str, pat, parse_day_cb);
-#endif
}
static int
@@ -744,11 +684,7 @@ parse_time(VALUE str, VALUE hash)
"(?:"
"\\d+\\s*:\\s*\\d+"
"(?:"
-#ifndef TIGHT_PARSER
"\\s*:\\s*\\d+(?:[,.]\\d*)?"
-#else
- "\\s*:\\s*\\d+(?:[,.]\\d+)?"
-#endif
")?"
"|"
"\\d+\\s*h(?:\\s*\\d+m?(?:\\s*\\d+s?)?)?"
@@ -765,123 +701,20 @@ parse_time(VALUE str, VALUE hash)
"("
"(?:gmt|utc?)?[-+]\\d+(?:[,.:]\\d+(?::\\d+)?)?"
"|"
- "(?-i:[[:alpha:].\\s]+)(?:standard|daylight)\\stime\\b"
+ "[[:alpha:].\\s]+(?:standard|daylight)\\stime\\b"
"|"
- "(?-i:[[:alpha:]]+)(?:\\sdst)?\\b"
+ "[[:alpha:]]+(?:\\sdst)?\\b"
")"
")?";
static VALUE pat = Qnil;
REGCOMP_I(pat);
-#ifndef TIGHT_PARSER
SUBS(str, pat, parse_time_cb);
-#else
- SUBT(str, pat, parse_time_cb);
-#endif
-}
-
-#ifdef TIGHT_PARSER
-static int
-parse_era1_cb(VALUE m, VALUE hash)
-{
- return 1;
-}
-
-static int
-parse_era1(VALUE str, VALUE hash)
-{
- static const char pat_source[] =
- "(a(?:d|\\.d\\.))";
- static VALUE pat = Qnil;
-
- REGCOMP_I(pat);
- SUBA(str, pat, parse_era1_cb);
-}
-
-static int
-parse_era2_cb(VALUE m, VALUE hash)
-{
- VALUE b;
-
- b = rb_reg_nth_match(1, m);
- if (*RSTRING_PTR(b) == 'B' ||
- *RSTRING_PTR(b) == 'b')
- set_hash("_bc", Qtrue);
- return 1;
-}
-
-static int
-parse_era2(VALUE str, VALUE hash)
-{
- static const char pat_source[] =
- "(c(?:e|\\.e\\.)|b(?:ce|\\.c\\.e\\.)|b(?:c|\\.c\\.))";
- static VALUE pat = Qnil;
-
- REGCOMP_I(pat);
- SUBB(str, pat, parse_era2_cb);
-}
-
-static int
-parse_era(VALUE str, VALUE hash)
-{
- if (parse_era1(str, hash)) /* pre */
- goto ok;
- if (parse_era2(str, hash)) /* post */
- goto ok;
- return 0;
- ok:
- return 1;
-}
-#endif
-
-#ifdef TIGHT_PARSER
-static int
-check_year_width(VALUE y)
-{
- char *s;
- size_t l;
-
- s = RSTRING_PTR(y);
- l = strcspn(s, DECDIGIT);
- s += l;
- l = strspn(s, DECDIGIT);
- if (l != 2)
- return 0;
- return 1;
-}
-
-static int
-check_apost(VALUE a, VALUE b, VALUE c)
-{
- int f = 0;
-
- if (!NIL_P(a) && *RSTRING_PTR(a) == '\'') {
- if (!check_year_width(a))
- return 0;
- f++;
- }
- if (!NIL_P(b) && *RSTRING_PTR(b) == '\'') {
- if (!check_year_width(b))
- return 0;
- if (!NIL_P(c))
- return 0;
- f++;
- }
- if (!NIL_P(c) && *RSTRING_PTR(c) == '\'') {
- if (!check_year_width(c))
- return 0;
- f++;
- }
- if (f > 1)
- return 0;
- return 1;
}
-#endif
static int
parse_eu_cb(VALUE m, VALUE hash)
{
-#ifndef TIGHT_PARSER
VALUE y, mon, d, b;
d = rb_reg_nth_match(1, m);
@@ -894,20 +727,6 @@ parse_eu_cb(VALUE m, VALUE hash)
s3e(hash, y, mon, d, !NIL_P(b) &&
(*RSTRING_PTR(b) == 'B' ||
*RSTRING_PTR(b) == 'b'));
-#else
- VALUE y, mon, d;
-
- d = rb_reg_nth_match(1, m);
- mon = rb_reg_nth_match(2, m);
- y = rb_reg_nth_match(3, m);
-
- if (!check_apost(d, mon, y))
- return 0;
-
- mon = INT2FIX(mon_num(mon));
-
- s3e(hash, y, mon, d, 0);
-#endif
return 1;
}
@@ -915,40 +734,15 @@ static int
parse_eu(VALUE str, VALUE hash)
{
static const char pat_source[] =
-#ifdef TIGHT_PARSER
- BOS
- FPW_COM FPT_COM
-#endif
-#ifndef TIGHT_PARSER
- "('?\\d+)[^-\\d\\s]*"
-#else
- "(\\d+)(?:(?:st|nd|rd|th)\\b)?"
-#endif
+ "'?(\\d+)[^-\\d\\s]*"
"\\s*"
-#ifndef TIGHT_PARSER
"(" ABBR_MONTHS ")[^-\\d\\s']*"
-#else
- "(" VALID_MONTHS ")"
-#endif
"(?:"
"\\s*"
-#ifndef TIGHT_PARSER
"(c(?:e|\\.e\\.)|b(?:ce|\\.c\\.e\\.)|a(?:d|\\.d\\.)|b(?:c|\\.c\\.))?"
"\\s*"
"('?-?\\d+(?:(?:st|nd|rd|th)\\b)?)"
-#else
- "(?:" FPA ")?"
- "\\s*"
- "([-']?\\d+)"
- "\\s*"
- "(?:" FPA "|" FPB ")?"
-#endif
- ")?"
-#ifdef TIGHT_PARSER
- COM_FPT COM_FPW
- EOS
-#endif
- ;
+ ")?";
static VALUE pat = Qnil;
REGCOMP_I(pat);
@@ -958,12 +752,10 @@ parse_eu(VALUE str, VALUE hash)
static int
parse_us_cb(VALUE m, VALUE hash)
{
-#ifndef TIGHT_PARSER
VALUE y, mon, d, b;
mon = rb_reg_nth_match(1, m);
d = rb_reg_nth_match(2, m);
-
b = rb_reg_nth_match(3, m);
y = rb_reg_nth_match(4, m);
@@ -972,20 +764,6 @@ parse_us_cb(VALUE m, VALUE hash)
s3e(hash, y, mon, d, !NIL_P(b) &&
(*RSTRING_PTR(b) == 'B' ||
*RSTRING_PTR(b) == 'b'));
-#else
- VALUE y, mon, d;
-
- mon = rb_reg_nth_match(1, m);
- d = rb_reg_nth_match(2, m);
- y = rb_reg_nth_match(3, m);
-
- if (!check_apost(mon, d, y))
- return 0;
-
- mon = INT2FIX(mon_num(mon));
-
- s3e(hash, y, mon, d, 0);
-#endif
return 1;
}
@@ -993,42 +771,15 @@ static int
parse_us(VALUE str, VALUE hash)
{
static const char pat_source[] =
-#ifdef TIGHT_PARSER
- BOS
- FPW_COM FPT_COM
-#endif
-#ifndef TIGHT_PARSER
"\\b(" ABBR_MONTHS ")[^-\\d\\s']*"
-#else
- "\\b(" VALID_MONTHS ")"
-#endif
"\\s*"
-#ifndef TIGHT_PARSER
"('?\\d+)[^-\\d\\s']*"
-#else
- "('?\\d+)(?:(?:st|nd|rd|th)\\b)?"
- COM_FPT
-#endif
"(?:"
- "\\s*,?"
"\\s*"
-#ifndef TIGHT_PARSER
"(c(?:e|\\.e\\.)|b(?:ce|\\.c\\.e\\.)|a(?:d|\\.d\\.)|b(?:c|\\.c\\.))?"
"\\s*"
"('?-?\\d+)"
-#else
- "(?:" FPA ")?"
- "\\s*"
- "([-']?\\d+)"
- "\\s*"
- "(?:" FPA "|" FPB ")?"
-#endif
- ")?"
-#ifdef TIGHT_PARSER
- COM_FPT COM_FPW
- EOS
-#endif
- ;
+ ")?";
static VALUE pat = Qnil;
REGCOMP_I(pat);
@@ -1044,11 +795,6 @@ parse_iso_cb(VALUE m, VALUE hash)
mon = rb_reg_nth_match(2, m);
d = rb_reg_nth_match(3, m);
-#ifdef TIGHT_PARSER
- if (!check_apost(y, mon, d))
- return 0;
-#endif
-
s3e(hash, y, mon, d, 0);
return 1;
}
@@ -1056,17 +802,7 @@ parse_iso_cb(VALUE m, VALUE hash)
static int
parse_iso(VALUE str, VALUE hash)
{
- static const char pat_source[] =
-#ifndef TIGHT_PARSER
- "('?[-+]?\\d+)-(\\d+)-('?-?\\d+)"
-#else
- BOS
- FPW_COM FPT_COM
- "([-+']?\\d+)-(\\d+)-([-']?\\d+)"
- TEE_FPT COM_FPW
- EOS
-#endif
- ;
+ static const char pat_source[] = "('?[-+]?\\d+)-(\\d+)-('?-?\\d+)";
static VALUE pat = Qnil;
REGCOMP_0(pat);
@@ -1095,16 +831,7 @@ static int
parse_iso21(VALUE str, VALUE hash)
{
static const char pat_source[] =
-#ifndef TIGHT_PARSER
- "\\b(\\d{2}|\\d{4})?-?w(\\d{2})(?:-?(\\d))?\\b"
-#else
- BOS
- FPW_COM FPT_COM
- "(\\d{2}|\\d{4})?-?w(\\d{2})(?:-?(\\d))?"
- TEE_FPT COM_FPW
- EOS
-#endif
- ;
+ "\\b(\\d{2}|\\d{4})?-?w(\\d{2})(?:-?(\\d))?\\b";
static VALUE pat = Qnil;
REGCOMP_I(pat);
@@ -1124,17 +851,7 @@ parse_iso22_cb(VALUE m, VALUE hash)
static int
parse_iso22(VALUE str, VALUE hash)
{
- static const char pat_source[] =
-#ifndef TIGHT_PARSER
- "-w-(\\d)\\b"
-#else
- BOS
- FPW_COM FPT_COM
- "-w-(\\d)"
- TEE_FPT COM_FPW
- EOS
-#endif
- ;
+ static const char pat_source[] = "-w-(\\d)\\b";
static VALUE pat = Qnil;
REGCOMP_I(pat);
@@ -1159,17 +876,7 @@ parse_iso23_cb(VALUE m, VALUE hash)
static int
parse_iso23(VALUE str, VALUE hash)
{
- static const char pat_source[] =
-#ifndef TIGHT_PARSER
- "--(\\d{2})?-(\\d{2})\\b"
-#else
- BOS
- FPW_COM FPT_COM
- "--(\\d{2})?-(\\d{2})"
- TEE_FPT COM_FPW
- EOS
-#endif
- ;
+ static const char pat_source[] = "--(\\d{2})?-(\\d{2})\\b";
static VALUE pat = Qnil;
REGCOMP_0(pat);
@@ -1194,17 +901,7 @@ parse_iso24_cb(VALUE m, VALUE hash)
static int
parse_iso24(VALUE str, VALUE hash)
{
- static const char pat_source[] =
-#ifndef TIGHT_PARSER
- "--(\\d{2})(\\d{2})?\\b"
-#else
- BOS
- FPW_COM FPT_COM
- "--(\\d{2})(\\d{2})?"
- TEE_FPT COM_FPW
- EOS
-#endif
- ;
+ static const char pat_source[] = "--(\\d{2})(\\d{2})?\\b";
static VALUE pat = Qnil;
REGCOMP_0(pat);
@@ -1228,29 +925,9 @@ parse_iso25_cb(VALUE m, VALUE hash)
static int
parse_iso25(VALUE str, VALUE hash)
{
- static const char pat0_source[] =
-#ifndef TIGHT_PARSER
- "[,.](\\d{2}|\\d{4})-\\d{3}\\b"
-#else
- BOS
- FPW_COM FPT_COM
- "[,.](\\d{2}|\\d{4})-\\d{3}"
- TEE_FPT COM_FPW
- EOS
-#endif
- ;
+ static const char pat0_source[] = "[,.](\\d{2}|\\d{4})-\\d{3}\\b";
static VALUE pat0 = Qnil;
- static const char pat_source[] =
-#ifndef TIGHT_PARSER
- "\\b(\\d{2}|\\d{4})-(\\d{3})\\b"
-#else
- BOS
- FPW_COM FPT_COM
- "(\\d{2}|\\d{4})-(\\d{3})"
- TEE_FPT COM_FPW
- EOS
-#endif
- ;
+ static const char pat_source[] = "\\b(\\d{2}|\\d{4})-(\\d{3})\\b";
static VALUE pat = Qnil;
REGCOMP_0(pat0);
@@ -1274,29 +951,9 @@ parse_iso26_cb(VALUE m, VALUE hash)
static int
parse_iso26(VALUE str, VALUE hash)
{
- static const char pat0_source[] =
-#ifndef TIGHT_PARSER
- "\\d-\\d{3}\\b"
-#else
- BOS
- FPW_COM FPT_COM
- "\\d-\\d{3}"
- TEE_FPT COM_FPW
- EOS
-#endif
- ;
+ static const char pat0_source[] = "\\d-\\d{3}\\b";
static VALUE pat0 = Qnil;
- static const char pat_source[] =
-#ifndef TIGHT_PARSER
- "\\b-(\\d{3})\\b"
-#else
- BOS
- FPW_COM FPT_COM
- "-(\\d{3})"
- TEE_FPT COM_FPW
- EOS
-#endif
- ;
+ static const char pat_source[] = "\\b-(\\d{3})\\b";
static VALUE pat = Qnil;
REGCOMP_0(pat0);
@@ -1366,17 +1023,7 @@ parse_jis_cb(VALUE m, VALUE hash)
static int
parse_jis(VALUE str, VALUE hash)
{
- static const char pat_source[] =
-#ifndef TIGHT_PARSER
- "\\b([mtsh])(\\d+)\\.(\\d+)\\.(\\d+)"
-#else
- BOS
- FPW_COM FPT_COM
- "([mtsh])(\\d+)\\.(\\d+)\\.(\\d+)"
- TEE_FPT COM_FPW
- EOS
-#endif
- ;
+ static const char pat_source[] = "\\b([mtsh])(\\d+)\\.(\\d+)\\.(\\d+)";
static VALUE pat = Qnil;
REGCOMP_I(pat);
@@ -1392,11 +1039,6 @@ parse_vms11_cb(VALUE m, VALUE hash)
mon = rb_reg_nth_match(2, m);
y = rb_reg_nth_match(3, m);
-#ifdef TIGHT_PARSER
- if (!check_apost(d, mon, y))
- return 0;
-#endif
-
mon = INT2FIX(mon_num(mon));
s3e(hash, y, mon, d, 0);
@@ -1407,18 +1049,8 @@ static int
parse_vms11(VALUE str, VALUE hash)
{
static const char pat_source[] =
-#ifndef TIGHT_PARSER
- "('?-?\\d+)-(" ABBR_MONTHS ")[^-/.]*"
- "-('?-?\\d+)"
-#else
- BOS
- FPW_COM FPT_COM
- "([-']?\\d+)-(" DOTLESS_VALID_MONTHS ")"
- "-([-']?\\d+)"
- COM_FPT COM_FPW
- EOS
-#endif
- ;
+ "('?-?\\d+)-(" ABBR_MONTHS ")[^-]*"
+ "-('?-?\\d+)";
static VALUE pat = Qnil;
REGCOMP_I(pat);
@@ -1434,11 +1066,6 @@ parse_vms12_cb(VALUE m, VALUE hash)
d = rb_reg_nth_match(2, m);
y = rb_reg_nth_match(3, m);
-#ifdef TIGHT_PARSER
- if (!check_apost(mon, d, y))
- return 0;
-#endif
-
mon = INT2FIX(mon_num(mon));
s3e(hash, y, mon, d, 0);
@@ -1449,18 +1076,8 @@ static int
parse_vms12(VALUE str, VALUE hash)
{
static const char pat_source[] =
-#ifndef TIGHT_PARSER
- "\\b(" ABBR_MONTHS ")[^-/.]*"
- "-('?-?\\d+)(?:-('?-?\\d+))?"
-#else
- BOS
- FPW_COM FPT_COM
- "(" DOTLESS_VALID_MONTHS ")"
- "-([-']?\\d+)(?:-([-']?\\d+))?"
- COM_FPT COM_FPW
- EOS
-#endif
- ;
+ "\\b(" ABBR_MONTHS ")[^-]*"
+ "-('?-?\\d+)(?:-('?-?\\d+))?";
static VALUE pat = Qnil;
REGCOMP_I(pat);
@@ -1489,11 +1106,6 @@ parse_sla_cb(VALUE m, VALUE hash)
mon = rb_reg_nth_match(2, m);
d = rb_reg_nth_match(3, m);
-#ifdef TIGHT_PARSER
- if (!check_apost(y, mon, d))
- return 0;
-#endif
-
s3e(hash, y, mon, d, 0);
return 1;
}
@@ -1502,92 +1114,13 @@ static int
parse_sla(VALUE str, VALUE hash)
{
static const char pat_source[] =
-#ifndef TIGHT_PARSER
- "('?-?\\d+)/\\s*('?\\d+)(?:\\D\\s*('?-?\\d+))?"
-#else
- BOS
- FPW_COM FPT_COM
- "([-']?\\d+)/\\s*('?\\d+)(?:(?:[-/]|\\s+)\\s*([-']?\\d+))?"
- COM_FPT COM_FPW
- EOS
-#endif
- ;
+ "('?-?\\d+)/\\s*('?\\d+)(?:\\D\\s*('?-?\\d+))?";
static VALUE pat = Qnil;
REGCOMP_I(pat);
SUBS(str, pat, parse_sla_cb);
}
-#ifdef TIGHT_PARSER
-static int
-parse_sla2_cb(VALUE m, VALUE hash)
-{
- VALUE y, mon, d;
-
- d = rb_reg_nth_match(1, m);
- mon = rb_reg_nth_match(2, m);
- y = rb_reg_nth_match(3, m);
-
- if (!check_apost(d, mon, y))
- return 0;
-
- mon = INT2FIX(mon_num(mon));
-
- s3e(hash, y, mon, d, 0);
- return 1;
-}
-
-static int
-parse_sla2(VALUE str, VALUE hash)
-{
- static const char pat_source[] =
- BOS
- FPW_COM FPT_COM
- "([-']?\\d+)/\\s*(" DOTLESS_VALID_MONTHS ")(?:(?:[-/]|\\s+)\\s*([-']?\\d+))?"
- COM_FPT COM_FPW
- EOS
- ;
- static VALUE pat = Qnil;
-
- REGCOMP_I(pat);
- SUBS(str, pat, parse_sla2_cb);
-}
-
-static int
-parse_sla3_cb(VALUE m, VALUE hash)
-{
- VALUE y, mon, d;
-
- mon = rb_reg_nth_match(1, m);
- d = rb_reg_nth_match(2, m);
- y = rb_reg_nth_match(3, m);
-
- if (!check_apost(mon, d, y))
- return 0;
-
- mon = INT2FIX(mon_num(mon));
-
- s3e(hash, y, mon, d, 0);
- return 1;
-}
-
-static int
-parse_sla3(VALUE str, VALUE hash)
-{
- static const char pat_source[] =
- BOS
- FPW_COM FPT_COM
- "(" DOTLESS_VALID_MONTHS ")/\\s*([-']?\\d+)(?:(?:[-/]|\\s+)\\s*([-']?\\d+))?"
- COM_FPT COM_FPW
- EOS
- ;
- static VALUE pat = Qnil;
-
- REGCOMP_I(pat);
- SUBS(str, pat, parse_sla3_cb);
-}
-#endif
-
static int
parse_dot_cb(VALUE m, VALUE hash)
{
@@ -1597,11 +1130,6 @@ parse_dot_cb(VALUE m, VALUE hash)
mon = rb_reg_nth_match(2, m);
d = rb_reg_nth_match(3, m);
-#ifdef TIGHT_PARSER
- if (!check_apost(y, mon, d))
- return 0;
-#endif
-
s3e(hash, y, mon, d, 0);
return 1;
}
@@ -1610,92 +1138,13 @@ static int
parse_dot(VALUE str, VALUE hash)
{
static const char pat_source[] =
-#ifndef TIGHT_PARSER
- "('?-?\\d+)\\.\\s*('?\\d+)\\.\\s*('?-?\\d+)"
-#else
- BOS
- FPW_COM FPT_COM
- "([-']?\\d+)\\.\\s*(\\d+)\\.\\s*([-']?\\d+)"
- COM_FPT COM_FPW
- EOS
-#endif
- ;
+ "('?-?\\d+)\\.\\s*('?\\d+)\\.\\s*('?-?\\d+)";
static VALUE pat = Qnil;
REGCOMP_I(pat);
SUBS(str, pat, parse_dot_cb);
}
-#ifdef TIGHT_PARSER
-static int
-parse_dot2_cb(VALUE m, VALUE hash)
-{
- VALUE y, mon, d;
-
- d = rb_reg_nth_match(1, m);
- mon = rb_reg_nth_match(2, m);
- y = rb_reg_nth_match(3, m);
-
- if (!check_apost(d, mon, y))
- return 0;
-
- mon = INT2FIX(mon_num(mon));
-
- s3e(hash, y, mon, d, 0);
- return 1;
-}
-
-static int
-parse_dot2(VALUE str, VALUE hash)
-{
- static const char pat_source[] =
- BOS
- FPW_COM FPT_COM
- "([-']?\\d+)\\.\\s*(" DOTLESS_VALID_MONTHS ")(?:(?:[./])\\s*([-']?\\d+))?"
- COM_FPT COM_FPW
- EOS
- ;
- static VALUE pat = Qnil;
-
- REGCOMP_I(pat);
- SUBS(str, pat, parse_dot2_cb);
-}
-
-static int
-parse_dot3_cb(VALUE m, VALUE hash)
-{
- VALUE y, mon, d;
-
- mon = rb_reg_nth_match(1, m);
- d = rb_reg_nth_match(2, m);
- y = rb_reg_nth_match(3, m);
-
- if (!check_apost(mon, d, y))
- return 0;
-
- mon = INT2FIX(mon_num(mon));
-
- s3e(hash, y, mon, d, 0);
- return 1;
-}
-
-static int
-parse_dot3(VALUE str, VALUE hash)
-{
- static const char pat_source[] =
- BOS
- FPW_COM FPT_COM
- "(" DOTLESS_VALID_MONTHS ")\\.\\s*([-']?\\d+)(?:(?:[./])\\s*([-']?\\d+))?"
- COM_FPT COM_FPW
- EOS
- ;
- static VALUE pat = Qnil;
-
- REGCOMP_I(pat);
- SUBS(str, pat, parse_dot3_cb);
-}
-#endif
-
static int
parse_year_cb(VALUE m, VALUE hash)
{
@@ -1709,17 +1158,7 @@ parse_year_cb(VALUE m, VALUE hash)
static int
parse_year(VALUE str, VALUE hash)
{
- static const char pat_source[] =
-#ifndef TIGHT_PARSER
- "'(\\d+)\\b"
-#else
- BOS
- FPW_COM FPT_COM
- "'(\\d+)"
- COM_FPT COM_FPW
- EOS
-#endif
- ;
+ static const char pat_source[] = "'(\\d+)\\b";
static VALUE pat = Qnil;
REGCOMP_0(pat);
@@ -1739,17 +1178,7 @@ parse_mon_cb(VALUE m, VALUE hash)
static int
parse_mon(VALUE str, VALUE hash)
{
- static const char pat_source[] =
-#ifndef TIGHT_PARSER
- "\\b(" ABBR_MONTHS ")\\S*"
-#else
- BOS
- FPW_COM FPT_COM
- "(" VALID_MONTHS ")"
- COM_FPT COM_FPW
- EOS
-#endif
- ;
+ static const char pat_source[] = "\\b(" ABBR_MONTHS ")\\S*";
static VALUE pat = Qnil;
REGCOMP_I(pat);
@@ -1769,17 +1198,7 @@ parse_mday_cb(VALUE m, VALUE hash)
static int
parse_mday(VALUE str, VALUE hash)
{
- static const char pat_source[] =
-#ifndef TIGHT_PARSER
- "(\\d+)(st|nd|rd|th)\\b"
-#else
- BOS
- FPW_COM FPT_COM
- "(\\d+)(st|nd|rd|th)"
- COM_FPT COM_FPW
- EOS
-#endif
- ;
+ static const char pat_source[] = "(\\d+)(st|nd|rd|th)\\b";
static VALUE pat = Qnil;
REGCOMP_I(pat);
@@ -1994,7 +1413,7 @@ parse_ddd_cb(VALUE m, VALUE hash)
s3 = s1;
zone = rb_str_new2(s3);
set_hash("zone", zone);
- if (isdigit((unsigned char)*s1))
+ if (isdigit(*s1))
*--s1 = '+';
set_hash("offset", date_zone_to_diff(rb_str_new2(s1)));
}
@@ -2008,9 +1427,6 @@ static int
parse_ddd(VALUE str, VALUE hash)
{
static const char pat_source[] =
-#ifdef TIGHT_PARSER
- BOS
-#endif
"([-+]?)(\\d{2,14})"
"(?:"
"\\s*"
@@ -2027,22 +1443,22 @@ parse_ddd(VALUE str, VALUE hash)
"|"
"\\[[-+]?\\d[^\\]]*\\]"
")"
- ")?"
-#ifdef TIGHT_PARSER
- EOS
-#endif
- ;
+ ")?";
static VALUE pat = Qnil;
REGCOMP_I(pat);
SUBS(str, pat, parse_ddd_cb);
}
-#ifndef TIGHT_PARSER
static int
parse_bc_cb(VALUE m, VALUE hash)
{
- set_hash("_bc", Qtrue);
+ VALUE y;
+
+ y = ref_hash("year");
+ if (!NIL_P(y))
+ set_hash("year", f_add(f_negate(y), INT2FIX(1)));
+
return 1;
}
@@ -2089,57 +1505,6 @@ parse_frag(VALUE str, VALUE hash)
REGCOMP_I(pat);
SUBS(str, pat, parse_frag_cb);
}
-#endif
-
-#ifdef TIGHT_PARSER
-static int
-parse_dummy_cb(VALUE m, VALUE hash)
-{
- return 1;
-}
-
-static int
-parse_wday_only(VALUE str, VALUE hash)
-{
- static const char pat_source[] = "\\A\\s*" FPW "\\s*\\z";
- static VALUE pat = Qnil;
-
- REGCOMP_0(pat);
- SUBS(str, pat, parse_dummy_cb);
-}
-
-static int
-parse_time_only(VALUE str, VALUE hash)
-{
- static const char pat_source[] = "\\A\\s*" FPT "\\s*\\z";
- static VALUE pat = Qnil;
-
- REGCOMP_0(pat);
- SUBS(str, pat, parse_dummy_cb);
-}
-
-static int
-parse_wday_and_time(VALUE str, VALUE hash)
-{
- static const char pat_source[] = "\\A\\s*(" FPW "\\s+" FPT "|" FPT "\\s+" FPW ")\\s*\\z";
- static VALUE pat = Qnil;
-
- REGCOMP_0(pat);
- SUBS(str, pat, parse_dummy_cb);
-}
-
-static unsigned
-have_invalid_char_p(VALUE s)
-{
- long i;
-
- for (i = 0; i < RSTRING_LEN(s); i++)
- if (iscntrl((unsigned char)RSTRING_PTR(s)[i]) &&
- !isspace((unsigned char)RSTRING_PTR(s)[i]))
- return 1;
- return 0;
-}
-#endif
#define HAVE_ALPHA (1<<0)
#define HAVE_DIGIT (1<<1)
@@ -2155,9 +1520,9 @@ check_class(VALUE s)
flags = 0;
for (i = 0; i < RSTRING_LEN(s); i++) {
- if (isalpha((unsigned char)RSTRING_PTR(s)[i]))
+ if (isalpha(RSTRING_PTR(s)[i]))
flags |= HAVE_ALPHA;
- if (isdigit((unsigned char)RSTRING_PTR(s)[i]))
+ if (isdigit(RSTRING_PTR(s)[i]))
flags |= HAVE_DIGIT;
if (RSTRING_PTR(s)[i] == '-')
flags |= HAVE_DASH;
@@ -2171,31 +1536,16 @@ check_class(VALUE s)
#define HAVE_ELEM_P(x) ((check_class(str) & (x)) == (x))
-#ifdef TIGHT_PARSER
-#define PARSER_ERROR return rb_hash_new()
-#endif
-
VALUE
date__parse(VALUE str, VALUE comp)
{
VALUE backref, hash;
-#ifdef TIGHT_PARSER
- if (have_invalid_char_p(str))
- PARSER_ERROR;
-#endif
-
backref = rb_backref_get();
rb_match_busy(backref);
{
- static const char pat_source[] =
-#ifndef TIGHT_PARSER
- "[^-+',./:@[:alnum:]\\[\\]]+"
-#else
- "[^[:graph:]]+"
-#endif
- ;
+ static const char pat_source[] = "[^-+',./:@[:alnum:]\\[\\]]+";
static VALUE pat = Qnil;
REGCOMP_0(pat);
@@ -2211,17 +1561,12 @@ date__parse(VALUE str, VALUE comp)
if (HAVE_ELEM_P(HAVE_DIGIT))
parse_time(str, hash);
-#ifdef TIGHT_PARSER
- if (HAVE_ELEM_P(HAVE_ALPHA))
- parse_era(str, hash);
-#endif
-
- if (HAVE_ELEM_P(HAVE_ALPHA|HAVE_DIGIT)) {
+ if (HAVE_ELEM_P(HAVE_ALPHA|HAVE_DIGIT))
if (parse_eu(str, hash))
goto ok;
+ if (HAVE_ELEM_P(HAVE_ALPHA|HAVE_DIGIT))
if (parse_us(str, hash))
goto ok;
- }
if (HAVE_ELEM_P(HAVE_DIGIT|HAVE_DASH))
if (parse_iso(str, hash))
goto ok;
@@ -2234,25 +1579,9 @@ date__parse(VALUE str, VALUE comp)
if (HAVE_ELEM_P(HAVE_DIGIT|HAVE_SLASH))
if (parse_sla(str, hash))
goto ok;
-#ifdef TIGHT_PARSER
- if (HAVE_ELEM_P(HAVE_ALPHA|HAVE_DIGIT|HAVE_SLASH)) {
- if (parse_sla2(str, hash))
- goto ok;
- if (parse_sla3(str, hash))
- goto ok;
- }
-#endif
if (HAVE_ELEM_P(HAVE_DIGIT|HAVE_DOT))
if (parse_dot(str, hash))
goto ok;
-#ifdef TIGHT_PARSER
- if (HAVE_ELEM_P(HAVE_ALPHA|HAVE_DIGIT|HAVE_DOT)) {
- if (parse_dot2(str, hash))
- goto ok;
- if (parse_dot3(str, hash))
- goto ok;
- }
-#endif
if (HAVE_ELEM_P(HAVE_DIGIT))
if (parse_iso2(str, hash))
goto ok;
@@ -2269,41 +1598,13 @@ date__parse(VALUE str, VALUE comp)
if (parse_ddd(str, hash))
goto ok;
-#ifdef TIGHT_PARSER
- if (parse_wday_only(str, hash))
- goto ok;
- if (parse_time_only(str, hash))
- goto ok;
- if (parse_wday_and_time(str, hash))
- goto ok;
-
- PARSER_ERROR; /* not found */
-#endif
-
ok:
-#ifndef TIGHT_PARSER
if (HAVE_ELEM_P(HAVE_ALPHA))
parse_bc(str, hash);
if (HAVE_ELEM_P(HAVE_DIGIT))
parse_frag(str, hash);
-#endif
{
- if (RTEST(ref_hash("_bc"))) {
- VALUE y;
-
- y = ref_hash("cwyear");
- if (!NIL_P(y)) {
- y = f_add(f_negate(y), INT2FIX(1));
- set_hash("cwyear", y);
- }
- y = ref_hash("year");
- if (!NIL_P(y)) {
- y = f_add(f_negate(y), INT2FIX(1));
- set_hash("year", y);
- }
- }
-
if (RTEST(ref_hash("_comp"))) {
VALUE y;
@@ -2324,10 +1625,8 @@ date__parse(VALUE str, VALUE comp)
set_hash("year", f_add(y, INT2FIX(2000)));
}
}
-
}
- del_hash("_bc");
del_hash("_comp");
{
@@ -2576,7 +1875,7 @@ static int
iso8601_ext_time(VALUE str, VALUE hash)
{
static const char pat_source[] =
- "\\A\\s*(\\d{2}):(\\d{2})(?::(\\d{2})(?:[,.](\\d+))?"
+ "\\A\\s*(?:(\\d{2}):(\\d{2})(?::(\\d{2})(?:[,.](\\d+))?)?"
"(z|[-+]\\d{2}(:?\\d{2})?)?)?\\s*\\z";
static VALUE pat = Qnil;
@@ -2588,7 +1887,7 @@ static int
iso8601_bas_time(VALUE str, VALUE hash)
{
static const char pat_source[] =
- "\\A\\s*(\\d{2})(\\d{2})(?:(\\d{2})(?:[,.](\\d+))?"
+ "\\A\\s*(?:(\\d{2})(\\d{2})(?:(\\d{2})(?:[,.](\\d+))?)?"
"(z|[-+]\\d{2}(\\d{2})?)?)?\\s*\\z";
static VALUE pat = Qnil;
@@ -2848,9 +2147,7 @@ rfc2822_cb(VALUE m, VALUE hash)
s[i] = rb_reg_nth_match(i, m);
}
- if (!NIL_P(s[1])) {
- set_hash("wday", INT2FIX(day_num(s[1])));
- }
+ set_hash("wday", INT2FIX(day_num(s[1])));
set_hash("mday", str2num(s[2]));
set_hash("mon", INT2FIX(mon_num(s[3])));
y = str2num(s[4]);
diff --git a/ext/date/date_strftime.c b/ext/date/date_strftime.c
index 20931a3124..71e1bd7f00 100644
--- a/ext/date/date_strftime.c
+++ b/ext/date/date_strftime.c
@@ -1,633 +1,1155 @@
+/* -*- c-file-style: "linux" -*- */
+
/*
- date_strftime.c: based on a public-domain implementation of ANSI C
- library routine strftime, which is originally written by Arnold
- Robbins.
+ * strftime.c
+ *
+ * Public-domain implementation of ANSI C library routine.
+ *
+ * It's written in old-style C for maximal portability.
+ * However, since I'm used to prototypes, I've included them too.
+ *
+ * If you want stuff in the System V ascftime routine, add the SYSV_EXT define.
+ * For extensions from SunOS, add SUNOS_EXT.
+ * For stuff needed to implement the P1003.2 date command, add POSIX2_DATE.
+ * For VMS dates, add VMS_EXT.
+ * For a an RFC822 time format, add MAILHEADER_EXT.
+ * For ISO week years, add ISO_DATE_EXT.
+ * For complete POSIX semantics, add POSIX_SEMANTICS.
+ *
+ * The code for %c, %x, and %X now follows the 1003.2 specification for
+ * the POSIX locale.
+ * This version ignores LOCALE information.
+ * It also doesn't worry about multi-byte characters.
+ * So there.
+ *
+ * This file is also shipped with GAWK (GNU Awk), gawk specific bits of
+ * code are included if GAWK is defined.
+ *
+ * Arnold Robbins
+ * January, February, March, 1991
+ * Updated March, April 1992
+ * Updated April, 1993
+ * Updated February, 1994
+ * Updated May, 1994
+ * Updated January, 1995
+ * Updated September, 1995
+ * Updated January, 1996
+ *
+ * Fixes from ado@elsie.nci.nih.gov
+ * February 1991, May 1992
+ * Fixes from Tor Lillqvist tml@tik.vtt.fi
+ * May, 1993
+ * Further fixes from ado@elsie.nci.nih.gov
+ * February 1994
+ * %z code from chip@chinacat.unicom.com
+ * Applied September 1995
+ * %V code fixed (again) and %G, %g added,
+ * January 1996
*/
#include "ruby/ruby.h"
#include "date_tmx.h"
-#include <stdlib.h>
-#include <string.h>
+#ifndef GAWK
+#include <stdio.h>
#include <ctype.h>
+#include <string.h>
+#include <time.h>
+#include <sys/types.h>
#include <errno.h>
-
-#if defined(HAVE_SYS_TIME_H)
+#endif
+#if defined(TM_IN_SYS_TIME) || !defined(GAWK)
+#include <sys/types.h>
+#if HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
+#endif
+#include <math.h>
+
+/* defaults: season to taste */
+#define SYSV_EXT 1 /* stuff in System V ascftime routine */
+#define SUNOS_EXT 1 /* stuff in SunOS strftime routine */
+#define POSIX2_DATE 1 /* stuff in Posix 1003.2 date command */
+#define VMS_EXT 1 /* include %v for VMS date format */
+#define MAILHEADER_EXT 1 /* add %z for HHMM format */
+#define ISO_DATE_EXT 1 /* %G and %g for year of ISO week */
+
+#if defined(ISO_DATE_EXT)
+#if ! defined(POSIX2_DATE)
+#define POSIX2_DATE 1
+#endif
+#endif
+
+#if defined(POSIX2_DATE)
+#if ! defined(SYSV_EXT)
+#define SYSV_EXT 1
+#endif
+#if ! defined(SUNOS_EXT)
+#define SUNOS_EXT 1
+#endif
+#endif
+
+#if defined(POSIX2_DATE)
+#define adddecl(stuff) stuff
+#else
+#define adddecl(stuff)
+#endif
#undef strchr /* avoid AIX weirdness */
-#define range(low, item, hi) (item)
+#if 0
+#if !defined __STDC__ && !defined _WIN32
+#define const /**/
+static int weeknumber();
+adddecl(static int iso8601wknum();)
+static int weeknumber_v();
+adddecl(static int iso8601wknum_v();)
+#else
+static int weeknumber(const struct tm *timeptr, int firstweekday);
+adddecl(static int iso8601wknum(const struct tm *timeptr);)
+static int weeknumber_v(const struct tmx *tmx, int firstweekday);
+adddecl(static int iso8601wknum_v(const struct tmx *tmx);)
+#endif
+#endif
-#define add(x,y) (rb_funcall((x), '+', 1, (y)))
-#define sub(x,y) (rb_funcall((x), '-', 1, (y)))
-#define mul(x,y) (rb_funcall((x), '*', 1, (y)))
-#define quo(x,y) (rb_funcall((x), rb_intern("quo"), 1, (y)))
-#define div(x,y) (rb_funcall((x), rb_intern("div"), 1, (y)))
-#define mod(x,y) (rb_funcall((x), '%', 1, (y)))
+#ifdef STDC_HEADERS
+#include <stdlib.h>
+#include <string.h>
+#else
+extern void *malloc();
+extern void *realloc();
+extern char *getenv();
+extern char *strchr();
+#endif
-static void
-upcase(char *s, size_t i)
+#define range(low, item, hi) max((low), min((item), (hi)))
+
+#undef min /* just in case */
+
+/* min --- return minimum of two numbers */
+
+#ifndef __STDC__
+static inline int
+min(a, b)
+int a, b;
+#else
+static inline int
+min(int a, int b)
+#endif
{
- do {
- if (ISLOWER(*s))
- *s = TOUPPER(*s);
- } while (s++, --i);
+ return (a < b ? a : b);
}
-static void
-downcase(char *s, size_t i)
+#undef max /* also, just in case */
+
+/* max --- return maximum of two numbers */
+
+#ifndef __STDC__
+static inline int
+max(a, b)
+int a, b;
+#else
+static inline int
+max(int a, int b)
+#endif
{
- do {
- if (ISUPPER(*s))
- *s = TOLOWER(*s);
- } while (s++, --i);
+ return (a > b ? a : b);
}
+#ifdef NO_STRING_LITERAL_CONCATENATION
+#error No string literal concatenation
+#endif
+
+#define add(x,y) (rb_funcall((x), '+', 1, (y)))
+#define sub(x,y) (rb_funcall((x), '-', 1, (y)))
+#define mul(x,y) (rb_funcall((x), '*', 1, (y)))
+#define quo(x,y) (rb_funcall((x), rb_intern("quo"), 1, (y)))
+#define div(x,y) (rb_funcall((x), rb_intern("div"), 1, (y)))
+#define mod(x,y) (rb_funcall((x), '%', 1, (y)))
+
/* strftime --- produce formatted time */
static size_t
date_strftime_with_tmx(char *s, size_t maxsize, const char *format,
const struct tmx *tmx)
{
- char *endp = s + maxsize;
- char *start = s;
- const char *sp, *tp;
- auto char tbuf[100];
- ptrdiff_t i;
- int v, w;
- size_t colons;
- int precision, flags;
- char padding;
- /* LOCALE_[OE] and COLONS are actually modifiers, not flags */
- enum {LEFT, CHCASE, LOWER, UPPER, LOCALE_O, LOCALE_E, COLONS};
+ char *endp = s + maxsize;
+ char *start = s;
+ const char *sp, *tp;
+ auto char tbuf[100];
+ long off;
+ ptrdiff_t i;
+ int w;
+ int precision, flags, colons;
+ char padding;
+ enum {LEFT, CHCASE, LOWER, UPPER, LOCALE_O, LOCALE_E};
#define BIT_OF(n) (1U<<(n))
- /* various tables for locale C */
- static const char days_l[][10] = {
- "Sunday", "Monday", "Tuesday", "Wednesday",
- "Thursday", "Friday", "Saturday",
- };
- static const char months_l[][10] = {
- "January", "February", "March", "April",
- "May", "June", "July", "August", "September",
- "October", "November", "December",
- };
- static const char ampm[][3] = { "AM", "PM", };
-
- if (s == NULL || format == NULL || tmx == NULL || maxsize == 0)
- return 0;
-
- /* quick check if we even need to bother */
- if (strchr(format, '%') == NULL && strlen(format) + 1 >= maxsize) {
- err:
- errno = ERANGE;
- return 0;
- }
-
- for (; *format && s < endp - 1; format++) {
-#define FLAG_FOUND() do { \
- if (precision > 0 || flags & (BIT_OF(LOCALE_E) | BIT_OF(LOCALE_O) | BIT_OF(COLONS))) \
- goto unknown; \
- } while (0)
-#define NEEDS(n) do if (s >= endp || (n) >= endp - s - 1) goto err; while (0)
-#define FILL_PADDING(i) do { \
- if (!(flags & BIT_OF(LEFT)) && precision > (i)) { \
- NEEDS(precision); \
- memset(s, padding ? padding : ' ', precision - (i)); \
- s += precision - (i); \
- } \
- else { \
- NEEDS(i); \
- } \
- } while (0);
-#define FMT(def_pad, def_prec, fmt, val) \
- do { \
- int l; \
- if (precision <= 0) precision = (def_prec); \
- if (flags & BIT_OF(LEFT)) precision = 1; \
- l = snprintf(s, endp - s, \
- ((padding == '0' || (!padding && (def_pad) == '0')) ? \
- "%0*"fmt : "%*"fmt), \
- precision, (val)); \
- if (l < 0) goto err; \
- s += l; \
- } while (0)
-#define STRFTIME(fmt) \
- do { \
- i = date_strftime_with_tmx(s, endp - s, (fmt), tmx); \
- if (!i) return 0; \
- if (flags & BIT_OF(UPPER)) \
- upcase(s, i); \
- if (!(flags & BIT_OF(LEFT)) && precision > i) { \
- if (start + maxsize < s + precision) { \
- errno = ERANGE; \
- return 0; \
- } \
- memmove(s + precision - i, s, i); \
- memset(s, padding ? padding : ' ', precision - i); \
- s += precision; \
- } \
- else s += i; \
- } while (0)
-#define FMTV(def_pad, def_prec, fmt, val) \
- do { \
- VALUE tmp = (val); \
- if (FIXNUM_P(tmp)) { \
- FMT((def_pad), (def_prec), "l"fmt, FIX2LONG(tmp)); \
- } \
- else { \
- VALUE args[2], result; \
- size_t l; \
- if (precision <= 0) precision = (def_prec); \
- if (flags & BIT_OF(LEFT)) precision = 1; \
- args[0] = INT2FIX(precision); \
- args[1] = (val); \
- if (padding == '0' || (!padding && (def_pad) == '0')) \
- result = rb_str_format(2, args, rb_str_new2("%0*"fmt)); \
- else \
- result = rb_str_format(2, args, rb_str_new2("%*"fmt)); \
- l = strlcpy(s, StringValueCStr(result), endp - s); \
- if ((size_t)(endp - s) <= l) \
- goto err; \
- s += l; \
- } \
- } while (0)
-
- if (*format != '%') {
- *s++ = *format;
- continue;
+ /* various tables, useful in North America */
+ static const char days_l[][10] = {
+ "Sunday", "Monday", "Tuesday", "Wednesday",
+ "Thursday", "Friday", "Saturday",
+ };
+ static const char months_l[][10] = {
+ "January", "February", "March", "April",
+ "May", "June", "July", "August", "September",
+ "October", "November", "December",
+ };
+ static const char ampm[][3] = { "AM", "PM", };
+
+ if (s == NULL || format == NULL || tmx == NULL || maxsize == 0)
+ return 0;
+
+ /* quick check if we even need to bother */
+ if (strchr(format, '%') == NULL && strlen(format) + 1 >= maxsize) {
+ err:
+ errno = ERANGE;
+ return 0;
}
- tp = tbuf;
- sp = format;
- precision = -1;
- flags = 0;
- padding = 0;
- colons = 0;
- again:
- switch (*++format) {
- case '\0':
- format--;
- goto unknown;
-
- case 'A': /* full weekday name */
- case 'a': /* abbreviated weekday name */
- if (flags & BIT_OF(CHCASE)) {
- flags &= ~(BIT_OF(LOWER) | BIT_OF(CHCASE));
- flags |= BIT_OF(UPPER);
- }
- {
- int wday = tmx_wday;
- if (wday < 0 || wday > 6)
- i = 1, tp = "?";
- else {
- if (*format == 'A')
- i = strlen(tp = days_l[wday]);
- else
- i = 3, tp = days_l[wday];
- }
- }
- break;
-
- case 'B': /* full month name */
- case 'b': /* abbreviated month name */
- case 'h': /* same as %b */
- if (flags & BIT_OF(CHCASE)) {
- flags &= ~(BIT_OF(LOWER) | BIT_OF(CHCASE));
- flags |= BIT_OF(UPPER);
- }
- {
- int mon = tmx_mon;
- if (mon < 1 || mon > 12)
- i = 1, tp = "?";
- else {
- if (*format == 'B')
- i = strlen(tp = months_l[mon - 1]);
- else
- i = 3, tp = months_l[mon - 1];
- }
- }
- break;
-
- case 'C': /* century (year/100) */
- FMTV('0', 2, "d", div(tmx_year, INT2FIX(100)));
- continue;
-
- case 'c': /* appropriate date and time representation */
- STRFTIME("%a %b %e %H:%M:%S %Y");
- continue;
-
- case 'D':
- STRFTIME("%m/%d/%y");
- continue;
-
- case 'd': /* day of the month, 01 - 31 */
- case 'e': /* day of month, blank padded */
- v = range(1, tmx_mday, 31);
- FMT((*format == 'd') ? '0' : ' ', 2, "d", v);
- continue;
-
- case 'F':
- STRFTIME("%Y-%m-%d");
- continue;
-
- case 'G': /* year of ISO week with century */
- case 'Y': /* year with century */
- {
- VALUE year = (*format == 'G') ? tmx_cwyear : tmx_year;
- if (FIXNUM_P(year)) {
- long y = FIX2LONG(year);
- FMT('0', 0 <= y ? 4 : 5, "ld", y);
- }
- else {
- FMTV('0', 4, "d", year);
- }
- }
- continue;
-
- case 'g': /* year of ISO week without a century */
- case 'y': /* year without a century */
- v = NUM2INT(mod((*format == 'g') ? tmx_cwyear : tmx_year, INT2FIX(100)));
- FMT('0', 2, "d", v);
- continue;
-
- case 'H': /* hour, 24-hour clock, 00 - 23 */
- case 'k': /* hour, 24-hour clock, blank pad */
- v = range(0, tmx_hour, 23);
- FMT((*format == 'H') ? '0' : ' ', 2, "d", v);
- continue;
-
- case 'I': /* hour, 12-hour clock, 01 - 12 */
- case 'l': /* hour, 12-hour clock, 1 - 12, blank pad */
- v = range(0, tmx_hour, 23);
- if (v == 0)
- v = 12;
- else if (v > 12)
- v -= 12;
- FMT((*format == 'I') ? '0' : ' ', 2, "d", v);
- continue;
-
- case 'j': /* day of the year, 001 - 366 */
- v = range(1, tmx_yday, 366);
- FMT('0', 3, "d", v);
- continue;
-
- case 'L': /* millisecond */
- case 'N': /* nanosecond */
- if (*format == 'L')
- w = 3;
- else
- w = 9;
- if (precision <= 0)
- precision = w;
- NEEDS(precision);
-
- {
- VALUE subsec = tmx_sec_fraction;
- int ww;
- long n;
-
- ww = precision;
- while (9 <= ww) {
- subsec = mul(subsec, INT2FIX(1000000000));
- ww -= 9;
- }
- n = 1;
- for (; 0 < ww; ww--)
- n *= 10;
- if (n != 1)
- subsec = mul(subsec, INT2FIX(n));
- subsec = div(subsec, INT2FIX(1));
-
- if (FIXNUM_P(subsec)) {
- (void)snprintf(s, endp - s, "%0*ld",
- precision, FIX2LONG(subsec));
- s += precision;
- }
- else {
- VALUE args[2], result;
- args[0] = INT2FIX(precision);
- args[1] = subsec;
- result = rb_str_format(2, args, rb_str_new2("%0*d"));
- (void)strlcpy(s, StringValueCStr(result), endp - s);
- s += precision;
+
+ for (; *format && s < endp - 1; format++) {
+#define FLAG_FOUND() do { \
+ if (precision > 0 || flags & (BIT_OF(LOCALE_E)|BIT_OF(LOCALE_O))) \
+ goto unknown; \
+ } while (0)
+#define NEEDS(n) do if (s >= endp || (n) >= endp - s - 1) goto err; while (0)
+#define FILL_PADDING(i) do { \
+ if (!(flags & BIT_OF(LEFT)) && precision > (i)) { \
+ NEEDS(precision); \
+ memset(s, padding ? padding : ' ', precision - (i)); \
+ s += precision - (i); \
+ } \
+ else { \
+ NEEDS(i); \
+ } \
+} while (0);
+#define FMT(def_pad, def_prec, fmt, val) \
+ do { \
+ int l; \
+ if (precision <= 0) precision = (def_prec); \
+ if (flags & BIT_OF(LEFT)) precision = 1; \
+ l = snprintf(s, endp - s, \
+ ((padding == '0' || (!padding && (def_pad) == '0')) ? "%0*"fmt : "%*"fmt), \
+ precision, (val)); \
+ if (l < 0) goto err; \
+ s += l; \
+ } while (0)
+#define STRFTIME(fmt) \
+ do { \
+ i = date_strftime_with_tmx(s, endp - s, (fmt), tmx); \
+ if (!i) return 0; \
+ if (precision > i) {\
+ if (start + maxsize < s + precision) { \
+ errno = ERANGE; \
+ return 0; \
+ } \
+ memmove(s + precision - i, s, i);\
+ memset(s, padding ? padding : ' ', precision - i); \
+ s += precision; \
+ }\
+ else s += i; \
+ } while (0)
+#define FMTV(def_pad, def_prec, fmt, val) \
+ do { \
+ VALUE tmp = (val); \
+ if (FIXNUM_P(tmp)) { \
+ FMT((def_pad), (def_prec), "l"fmt, FIX2LONG(tmp)); \
+ } \
+ else { \
+ VALUE args[2], result; \
+ size_t l; \
+ if (precision <= 0) precision = (def_prec); \
+ if (flags & BIT_OF(LEFT)) precision = 1; \
+ args[0] = INT2FIX(precision); \
+ args[1] = (val); \
+ if (padding == '0' || (!padding && (def_pad) == '0')) \
+ result = rb_str_format(2, args, rb_str_new2("%0*"fmt)); \
+ else \
+ result = rb_str_format(2, args, rb_str_new2("%*"fmt)); \
+ l = strlcpy(s, StringValueCStr(result), endp-s); \
+ if ((size_t)(endp-s) <= l) \
+ goto err; \
+ s += l; \
+ } \
+ } while (0)
+
+ if (*format != '%') {
+ *s++ = *format;
+ continue;
}
- }
- continue;
-
- case 'M': /* minute, 00 - 59 */
- v = range(0, tmx_min, 59);
- FMT('0', 2, "d", v);
- continue;
-
- case 'm': /* month, 01 - 12 */
- v = range(1, tmx_mon, 12);
- FMT('0', 2, "d", v);
- continue;
-
- case 'n': /* same as \n */
- FILL_PADDING(1);
- *s++ = '\n';
- continue;
-
- case 't': /* same as \t */
- FILL_PADDING(1);
- *s++ = '\t';
- continue;
-
- case 'P': /* am or pm based on 12-hour clock */
- case 'p': /* AM or PM based on 12-hour clock */
- if ((*format == 'p' && (flags & BIT_OF(CHCASE))) ||
- (*format == 'P' && !(flags & (BIT_OF(CHCASE) | BIT_OF(UPPER))))) {
- flags &= ~(BIT_OF(UPPER) | BIT_OF(CHCASE));
- flags |= BIT_OF(LOWER);
- }
- v = range(0, tmx_hour, 23);
- if (v < 12)
- tp = ampm[0];
- else
- tp = ampm[1];
- i = 2;
- break;
-
- case 'Q': /* milliseconds since Unix epoch */
- FMTV('0', 1, "d", tmx_msecs);
- continue;
-
- case 'R':
- STRFTIME("%H:%M");
- continue;
-
- case 'r':
- STRFTIME("%I:%M:%S %p");
- continue;
-
- case 'S': /* second, 00 - 59 */
- v = range(0, tmx_sec, 59);
- FMT('0', 2, "d", v);
- continue;
-
- case 's': /* seconds since Unix epoch */
- FMTV('0', 1, "d", tmx_secs);
- continue;
-
- case 'T':
- STRFTIME("%H:%M:%S");
- continue;
-
- case 'U': /* week of year, Sunday is first day of week */
- case 'W': /* week of year, Monday is first day of week */
- v = range(0, (*format == 'U') ? tmx_wnum0 : tmx_wnum1, 53);
- FMT('0', 2, "d", v);
- continue;
-
- case 'u': /* weekday, Monday == 1, 1 - 7 */
- v = range(1, tmx_cwday, 7);
- FMT('0', 1, "d", v);
- continue;
-
- case 'V': /* week of year according ISO 8601 */
- v = range(1, tmx_cweek, 53);
- FMT('0', 2, "d", v);
- continue;
-
- case 'v':
- STRFTIME("%e-%b-%Y");
- continue;
-
- case 'w': /* weekday, Sunday == 0, 0 - 6 */
- v = range(0, tmx_wday, 6);
- FMT('0', 1, "d", v);
- continue;
-
- case 'X': /* appropriate time representation */
- STRFTIME("%H:%M:%S");
- continue;
-
- case 'x': /* appropriate date representation */
- STRFTIME("%m/%d/%y");
- continue;
-
- case 'Z': /* time zone name or abbreviation */
- if (flags & BIT_OF(CHCASE)) {
- flags &= ~(BIT_OF(UPPER) | BIT_OF(CHCASE));
- flags |= BIT_OF(LOWER);
- }
- {
- char *zone = tmx_zone;
- if (zone == NULL)
- tp = "";
- else
- tp = zone;
- i = strlen(tp);
- }
- break;
-
- case 'z': /* offset from UTC */
- {
- long off, aoff;
- int hl, hw;
-
- off = tmx_offset;
- aoff = off;
- if (aoff < 0)
- aoff = -off;
-
- if ((aoff / 3600) < 10)
- hl = 1;
- else
- hl = 2;
- hw = 2;
- if (flags & BIT_OF(LEFT) && hl == 1)
- hw = 1;
-
- switch (colons) {
- case 0: /* %z -> +hhmm */
- precision = precision <= (3 + hw) ? hw : precision - 3;
- NEEDS(precision + 3);
- break;
-
- case 1: /* %:z -> +hh:mm */
- precision = precision <= (4 + hw) ? hw : precision - 4;
- NEEDS(precision + 4);
- break;
-
- case 2: /* %::z -> +hh:mm:ss */
- precision = precision <= (7 + hw) ? hw : precision - 7;
- NEEDS(precision + 7);
- break;
-
- case 3: /* %:::z -> +hh[:mm[:ss]] */
- {
- if (aoff % 3600 == 0) {
- precision = precision <= (1 + hw) ?
- hw : precision - 1;
- NEEDS(precision + 3);
+ tp = tbuf;
+ sp = format;
+ precision = -1;
+ flags = 0;
+ padding = 0;
+ colons = 0;
+ again:
+ switch (*++format) {
+ case '\0':
+ format--;
+ goto unknown;
+
+ case '%':
+ FILL_PADDING(1);
+ *s++ = '%';
+ continue;
+
+ case 'a': /* abbreviated weekday name */
+ if (flags & BIT_OF(CHCASE)) {
+ flags &= ~(BIT_OF(LOWER)|BIT_OF(CHCASE));
+ flags |= BIT_OF(UPPER);
}
- else if (aoff % 60 == 0) {
- precision = precision <= (4 + hw) ?
- hw : precision - 4;
- NEEDS(precision + 4);
+ {
+ int wday = tmx_wday;
+ if (wday < 0 || wday > 6)
+ i = 1, tp = "?";
+ else
+ i = 3, tp = days_l[wday];
}
- else {
- precision = precision <= (7 + hw) ?
- hw : precision - 7;
- NEEDS(precision + 7);
+ break;
+
+ case 'A': /* full weekday name */
+ if (flags & BIT_OF(CHCASE)) {
+ flags &= ~(BIT_OF(LOWER)|BIT_OF(CHCASE));
+ flags |= BIT_OF(UPPER);
+ }
+ {
+ int wday = tmx_wday;
+ if (wday < 0 || wday > 6)
+ i = 1, tp = "?";
+ else
+ i = strlen(tp = days_l[wday]);
}
- }
- break;
+ break;
- default:
- format--;
- goto unknown;
- }
- if (padding == ' ' && precision > hl) {
- i = snprintf(s, endp - s, "%*s", precision - hl, "");
- precision = hl;
- if (i < 0) goto err;
- s += i;
- }
- if (off < 0) {
- off = -off;
- *s++ = '-';
- } else {
- *s++ = '+';
- }
- i = snprintf(s, endp - s, "%.*ld", precision, off / 3600);
- if (i < 0) goto err;
- s += i;
- off = off % 3600;
- if (colons == 3 && off == 0)
- continue;
- if (1 <= colons)
- *s++ = ':';
- i = snprintf(s, endp - s, "%02d", (int)(off / 60));
- if (i < 0) goto err;
- s += i;
- off = off % 60;
- if (colons == 3 && off == 0)
- continue;
- if (2 <= colons) {
- *s++ = ':';
- i = snprintf(s, endp - s, "%02d", (int)off);
- if (i < 0) goto err;
- s += i;
+#ifdef SYSV_EXT
+ case 'h': /* abbreviated month name */
+#endif
+ case 'b': /* abbreviated month name */
+ if (flags & BIT_OF(CHCASE)) {
+ flags &= ~(BIT_OF(LOWER)|BIT_OF(CHCASE));
+ flags |= BIT_OF(UPPER);
+ }
+ {
+ int mon = tmx_mon;
+ if (mon < 1 || mon > 12)
+ i = 1, tp = "?";
+ else
+ i = 3, tp = months_l[mon-1];
+ }
+ break;
+
+ case 'B': /* full month name */
+ if (flags & BIT_OF(CHCASE)) {
+ flags &= ~(BIT_OF(LOWER)|BIT_OF(CHCASE));
+ flags |= BIT_OF(UPPER);
+ }
+ {
+ int mon = tmx_mon;
+ if (mon < 1 || mon > 12)
+ i = 1, tp = "?";
+ else
+ i = strlen(tp = months_l[mon-1]);
+ }
+ break;
+
+ case 'c': /* appropriate date and time representation */
+ STRFTIME("%a %b %e %H:%M:%S %Y");
+ continue;
+
+ case 'd': /* day of the month, 01 - 31 */
+ i = range(1, tmx_mday, 31);
+ FMT('0', 2, "d", (int)i);
+ continue;
+
+ case 'H': /* hour, 24-hour clock, 00 - 23 */
+ i = range(0, tmx_hour, 23);
+ FMT('0', 2, "d", (int)i);
+ continue;
+
+ case 'I': /* hour, 12-hour clock, 01 - 12 */
+ i = range(0, tmx_hour, 23);
+ if (i == 0)
+ i = 12;
+ else if (i > 12)
+ i -= 12;
+ FMT('0', 2, "d", (int)i);
+ continue;
+
+ case 'j': /* day of the year, 001 - 366 */
+ FMT('0', 3, "d", tmx_yday);
+ continue;
+
+ case 'm': /* month, 01 - 12 */
+ i = range(1, tmx_mon, 12);
+ FMT('0', 2, "d", (int)i);
+ continue;
+
+ case 'M': /* minute, 00 - 59 */
+ i = range(0, tmx_min, 59);
+ FMT('0', 2, "d", (int)i);
+ continue;
+
+ case 'p': /* AM or PM based on 12-hour clock */
+ case 'P': /* am or pm based on 12-hour clock */
+ if ((*format == 'p' && (flags & BIT_OF(CHCASE))) ||
+ (*format == 'P' && !(flags & (BIT_OF(CHCASE)|BIT_OF(UPPER))))) {
+ flags &= ~(BIT_OF(UPPER)|BIT_OF(CHCASE));
+ flags |= BIT_OF(LOWER);
+ }
+ i = range(0, tmx_hour, 23);
+ if (i < 12)
+ tp = ampm[0];
+ else
+ tp = ampm[1];
+ i = 2;
+ break;
+
+ case 's':
+ FMTV('0', 1, "d", tmx_secs);
+ continue;
+
+ case 'Q':
+ FMTV('0', 1, "d", tmx_msecs);
+ continue;
+
+ case 'S': /* second, 00 - 59 */
+ i = range(0, tmx_sec, 59);
+ FMT('0', 2, "d", (int)i);
+ continue;
+
+ case 'U': /* week of year, Sunday is first day of week */
+ FMT('0', 2, "d", tmx_wnum0);
+ continue;
+
+ case 'w': /* weekday, Sunday == 0, 0 - 6 */
+ i = range(0, tmx_wday, 6);
+ FMT('0', 1, "d", (int)i);
+ continue;
+
+ case 'W': /* week of year, Monday is first day of week */
+ FMT('0', 2, "d", tmx_wnum1);
+ continue;
+
+ case 'x': /* appropriate date representation */
+ STRFTIME("%m/%d/%y");
+ continue;
+
+ case 'X': /* appropriate time representation */
+ STRFTIME("%H:%M:%S");
+ continue;
+
+ case 'y': /* year without a century, 00 - 99 */
+ i = NUM2INT(mod(tmx_year, INT2FIX(100)));
+ FMT('0', 2, "d", (int)i);
+ continue;
+
+ case 'Y': /* year with century */
+ {
+ VALUE year = tmx_year;
+ if (FIXNUM_P(year)) {
+ long y = FIX2LONG(year);
+ FMT('0', 0 <= y ? 4 : 5, "ld", y);
+ }
+ else {
+ FMTV('0', 4, "d", year);
+ }
+ }
+ continue;
+
+#ifdef MAILHEADER_EXT
+ case 'z': /* time zone offset east of GMT e.g. -0600 */
+ {
+ long aoff;
+ int hl, hw;
+
+ off = NUM2LONG(rb_funcall(tmx_offset, rb_intern("round"), 0));
+
+ aoff = off;
+ if (aoff < 0)
+ aoff = -off;
+
+ if ((aoff / 3600) < 10)
+ hl = 1;
+ else
+ hl = 2;
+ hw = 2;
+ if (flags & BIT_OF(LEFT) && hl == 1)
+ hw = 1;
+
+ switch (colons) {
+ case 0: /* %z -> +hhmm */
+ precision = precision <= (3 + hw) ? hw : precision-3;
+ NEEDS(precision + 3);
+ break;
+
+ case 1: /* %:z -> +hh:mm */
+ precision = precision <= (4 + hw) ? hw : precision-4;
+ NEEDS(precision + 4);
+ break;
+
+ case 2: /* %::z -> +hh:mm:ss */
+ precision = precision <= (7 + hw) ? hw : precision-7;
+ NEEDS(precision + 7);
+ break;
+
+ case 3: /* %:::z -> +hh[:mm[:ss]] */
+ {
+ if (aoff % 3600 == 0) {
+ precision = precision <= (1 + hw) ? hw : precision-1;
+ NEEDS(precision + 3);
+ }
+ else if (aoff % 60 == 0) {
+ precision = precision <= (4 + hw) ? hw : precision-4;
+ NEEDS(precision + 4);
+ }
+ else {
+ precision = precision <= (7 + hw) ? hw : precision-7;
+ NEEDS(precision + 7);
+ }
+ }
+ break;
+
+ default:
+ format--;
+ goto unknown;
+ }
+ if (padding == ' ' && precision > hl) {
+ i = snprintf(s, endp - s, "%*s", precision - hl, "");
+ precision = hl;
+ if (i < 0) goto err;
+ s += i;
+ }
+ if (off < 0) {
+ off = -off;
+ *s++ = '-';
+ } else {
+ *s++ = '+';
+ }
+ i = snprintf(s, endp - s, "%.*ld", precision, off / 3600);
+ if (i < 0) goto err;
+ s += i;
+ off = off % 3600;
+ if (colons == 3 && off == 0)
+ continue;
+ if (1 <= colons)
+ *s++ = ':';
+ i = snprintf(s, endp - s, "%02d", (int)(off / 60));
+ if (i < 0) goto err;
+ s += i;
+ off = off % 60;
+ if (colons == 3 && off == 0)
+ continue;
+ if (2 <= colons) {
+ *s++ = ':';
+ i = snprintf(s, endp - s, "%02d", (int)off);
+ if (i < 0) goto err;
+ s += i;
+ }
+ }
+ continue;
+#endif /* MAILHEADER_EXT */
+
+ case 'Z': /* time zone name or abbreviation */
+ if (flags & BIT_OF(CHCASE)) {
+ flags &= ~(BIT_OF(UPPER)|BIT_OF(CHCASE));
+ flags |= BIT_OF(LOWER);
+ }
+ {
+ char *zone = tmx_zone;
+ if (zone == NULL)
+ tp = "";
+ else
+ tp = zone;
+ i = strlen(tp);
+ }
+ break;
+
+#ifdef SYSV_EXT
+ case 'n': /* same as \n */
+ FILL_PADDING(1);
+ *s++ = '\n';
+ continue;
+
+ case 't': /* same as \t */
+ FILL_PADDING(1);
+ *s++ = '\t';
+ continue;
+
+ case 'D': /* date as %m/%d/%y */
+ STRFTIME("%m/%d/%y");
+ continue;
+
+ case 'e': /* day of month, blank padded */
+ FMT(' ', 2, "d", range(1, tmx_mday, 31));
+ continue;
+
+ case 'r': /* time as %I:%M:%S %p */
+ STRFTIME("%I:%M:%S %p");
+ continue;
+
+ case 'R': /* time as %H:%M */
+ STRFTIME("%H:%M");
+ continue;
+
+ case 'T': /* time as %H:%M:%S */
+ STRFTIME("%H:%M:%S");
+ continue;
+#endif
+
+#ifdef SUNOS_EXT
+ case 'k': /* hour, 24-hour clock, blank pad */
+ i = range(0, tmx_hour, 23);
+ FMT(' ', 2, "d", (int)i);
+ continue;
+
+ case 'l': /* hour, 12-hour clock, 1 - 12, blank pad */
+ i = range(0, tmx_hour, 23);
+ if (i == 0)
+ i = 12;
+ else if (i > 12)
+ i -= 12;
+ FMT(' ', 2, "d", (int)i);
+ continue;
+#endif
+
+#ifdef VMS_EXT
+ case 'v': /* date as dd-bbb-YYYY */
+ STRFTIME("%e-%b-%Y");
+ continue;
+#endif
+
+#ifdef POSIX2_DATE
+ case 'C':
+ FMTV('0', 2, "d", div(tmx_year, INT2FIX(100)));
+ continue;
+
+ case 'E':
+ /* POSIX locale extensions, ignored for now */
+ flags |= BIT_OF(LOCALE_E);
+ if (*(format + 1) && strchr("cCxXyY", *(format + 1)))
+ goto again;
+ goto unknown;
+ case 'O':
+ /* POSIX locale extensions, ignored for now */
+ flags |= BIT_OF(LOCALE_O);
+ if (*(format + 1) && strchr("deHImMSuUVwWy",
+ *(format + 1)))
+ goto again;
+ goto unknown;
+ case 'V': /* week of year according ISO 8601 */
+ FMT('0', 2, "d", tmx_cweek);
+ continue;
+
+ case 'u':
+ /* ISO 8601: Weekday as a decimal number [1 (Monday) - 7] */
+ FMT('0', 1, "d", tmx_cwday);
+ continue;
+#endif /* POSIX2_DATE */
+
+#ifdef ISO_DATE_EXT
+ case 'g': /* year of ISO week without a century */
+ i = NUM2INT(mod(tmx_cwyear, INT2FIX(100)));
+ FMT('0', 2, "d", (int)i);
+ continue;
+
+ case 'G': /* year of ISO week with century */
+ {
+ VALUE year = tmx_cwyear;
+ if (FIXNUM_P(year)) {
+ long y = FIX2LONG(year);
+ FMT('0', 0 <= y ? 4 : 5, "ld", y);
+ }
+ else {
+ FMTV('0', 4, "d", year);
+ }
+ continue;
+ }
+
+#endif /* ISO_DATE_EXT */
+
+ case 'L':
+ w = 3;
+ goto subsec;
+
+ case 'N':
+ /*
+ * fractional second digits. default is 9 digits
+ * (nanosecond).
+ *
+ * %3N millisecond (3 digits)
+ * %6N microsecond (6 digits)
+ * %9N nanosecond (9 digits)
+ */
+ w = 9;
+ subsec:
+ if (precision <= 0) {
+ precision = w;
+ }
+ NEEDS(precision);
+
+ {
+ VALUE subsec = tmx_sec_fraction;
+ int ww;
+ long n;
+
+ ww = precision;
+ while (9 <= ww) {
+ subsec = mul(subsec, INT2FIX(1000000000));
+ ww -= 9;
+ }
+ n = 1;
+ for (; 0 < ww; ww--)
+ n *= 10;
+ if (n != 1)
+ subsec = mul(subsec, INT2FIX(n));
+ subsec = div(subsec, INT2FIX(1));
+
+ if (FIXNUM_P(subsec)) {
+ (void)snprintf(s, endp - s, "%0*ld", precision, FIX2LONG(subsec));
+ s += precision;
+ }
+ else {
+ VALUE args[2], result;
+ args[0] = INT2FIX(precision);
+ args[1] = subsec;
+ result = rb_str_format(2, args, rb_str_new2("%0*d"));
+ (void)strlcpy(s, StringValueCStr(result), endp-s);
+ s += precision;
+ }
+ }
+ continue;
+
+ case 'F': /* Equivalent to %Y-%m-%d */
+ STRFTIME("%Y-%m-%d");
+ continue;
+ case '+':
+ STRFTIME("%a %b %e %H:%M:%S %Z %Y");
+ continue;
+
+ case '-':
+ FLAG_FOUND();
+ flags |= BIT_OF(LEFT);
+ padding = precision = 0;
+ goto again;
+
+ case '^':
+ FLAG_FOUND();
+ flags |= BIT_OF(UPPER);
+ goto again;
+
+ case '#':
+ FLAG_FOUND();
+ flags |= BIT_OF(CHCASE);
+ goto again;
+
+ case '_':
+ FLAG_FOUND();
+ padding = ' ';
+ goto again;
+
+ case ':':
+ colons++;
+ goto again;
+
+ case '0':
+ padding = '0';
+ case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ {
+ char *e;
+ precision = (int)strtoul(format, &e, 10);
+ format = e - 1;
+ goto again;
+ }
+
+ default:
+ unknown:
+ i = format - sp + 1;
+ tp = sp;
+ precision = -1;
+ flags = 0;
+ padding = 0;
+ colons = 0;
+ break;
}
- }
- continue;
-
- case '+':
- STRFTIME("%a %b %e %H:%M:%S %Z %Y");
- continue;
-
- case 'E':
- /* POSIX locale extensions, ignored for now */
- flags |= BIT_OF(LOCALE_E);
- if (*(format + 1) && strchr("cCxXyY", *(format + 1)))
- goto again;
- goto unknown;
- case 'O':
- /* POSIX locale extensions, ignored for now */
- flags |= BIT_OF(LOCALE_O);
- if (*(format + 1) && strchr("deHkIlmMSuUVwWy", *(format + 1)))
- goto again;
- goto unknown;
-
- case ':':
- flags |= BIT_OF(COLONS);
- {
- size_t l = strspn(format, ":");
- format += l;
- if (*format == 'z') {
- colons = l;
- format--;
- goto again;
+ if (i) {
+ FILL_PADDING(i);
+ memcpy(s, tp, i);
+ switch (flags & (BIT_OF(UPPER)|BIT_OF(LOWER))) {
+ case BIT_OF(UPPER):
+ do {
+ if (ISLOWER(*s)) *s = TOUPPER(*s);
+ } while (s++, --i);
+ break;
+ case BIT_OF(LOWER):
+ do {
+ if (ISUPPER(*s)) *s = TOLOWER(*s);
+ } while (s++, --i);
+ break;
+ default:
+ s += i;
+ break;
+ }
}
- format -= l;
- }
- goto unknown;
-
- case '_':
- FLAG_FOUND();
- padding = ' ';
- goto again;
-
- case '-':
- FLAG_FOUND();
- flags |= BIT_OF(LEFT);
- goto again;
-
- case '^':
- FLAG_FOUND();
- flags |= BIT_OF(UPPER);
- goto again;
-
- case '#':
- FLAG_FOUND();
- flags |= BIT_OF(CHCASE);
- goto again;
-
- case '0':
- FLAG_FOUND();
- padding = '0';
- case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- {
- char *e;
- precision = (int)strtoul(format, &e, 10);
- format = e - 1;
- goto again;
- }
-
- case '%':
- FILL_PADDING(1);
- *s++ = '%';
- continue;
-
- default:
- unknown:
- i = format - sp + 1;
- tp = sp;
- precision = -1;
- flags = 0;
- padding = 0;
- colons = 0;
- break;
}
- if (i) {
- FILL_PADDING(i);
- memcpy(s, tp, i);
- switch (flags & (BIT_OF(UPPER) | BIT_OF(LOWER))) {
- case BIT_OF(UPPER):
- upcase(s, i);
- break;
- case BIT_OF(LOWER):
- downcase(s, i);
- break;
- }
- s += i;
+ if (s >= endp) {
+ goto err;
}
- }
- if (s >= endp) {
- goto err;
- }
- if (*format == '\0') {
- *s = '\0';
- return (s - start);
- }
- return 0;
+ if (*format == '\0') {
+ *s = '\0';
+ return (s - start);
+ } else
+ return 0;
}
size_t
date_strftime(char *s, size_t maxsize, const char *format,
const struct tmx *tmx)
{
- return date_strftime_with_tmx(s, maxsize, format, tmx);
+ return date_strftime_with_tmx(s, maxsize, format, tmx);
+}
+
+#if 0
+/* isleap --- is a year a leap year? */
+
+#ifndef __STDC__
+static int
+isleap(year)
+long year;
+#else
+static int
+isleap(long year)
+#endif
+{
+ return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
+}
+
+static void
+tmx2tm_noyear(const struct tmx *tmx, struct tm *result)
+{
+ struct tm tm;
+
+ /* for isleap() in iso8601wknum. +100 is -1900 (mod 400). */
+ tm.tm_year = FIX2INT(mod(tmx_year, INT2FIX(400))) + 100;
+
+ tm.tm_mon = tmx_mon-1;
+ tm.tm_mday = tmx_mday;
+ tm.tm_hour = tmx_hour;
+ tm.tm_min = tmx_min;
+ tm.tm_sec = tmx_sec;
+ tm.tm_wday = tmx_wday;
+ tm.tm_yday = tmx_yday-1;
+ tm.tm_isdst = 0;
+#if defined(HAVE_STRUCT_TM_TM_GMTOFF)
+ tm.tm_gmtoff = NUM2LONG(tmx_offset);
+#endif
+#if defined(HAVE_TM_ZONE)
+ tm.tm_zone = (char *)tmx_zone;
+#endif
+ *result = tm;
+}
+
+#ifdef POSIX2_DATE
+/* iso8601wknum --- compute week number according to ISO 8601 */
+
+#ifndef __STDC__
+static int
+iso8601wknum(timeptr)
+const struct tm *timeptr;
+#else
+static int
+iso8601wknum(const struct tm *timeptr)
+#endif
+{
+ /*
+ * From 1003.2:
+ * If the week (Monday to Sunday) containing January 1
+ * has four or more days in the new year, then it is week 1;
+ * otherwise it is the highest numbered week of the previous
+ * year (52 or 53), and the next week is week 1.
+ *
+ * ADR: This means if Jan 1 was Monday through Thursday,
+ * it was week 1, otherwise week 52 or 53.
+ *
+ * XPG4 erroneously included POSIX.2 rationale text in the
+ * main body of the standard. Thus it requires week 53.
+ */
+
+ int weeknum, jan1day;
+
+ /* get week number, Monday as first day of the week */
+ weeknum = weeknumber(timeptr, 1);
+
+ /*
+ * With thanks and tip of the hatlo to tml@tik.vtt.fi
+ *
+ * What day of the week does January 1 fall on?
+ * We know that
+ * (timeptr->tm_yday - jan1.tm_yday) MOD 7 ==
+ * (timeptr->tm_wday - jan1.tm_wday) MOD 7
+ * and that
+ * jan1.tm_yday == 0
+ * and that
+ * timeptr->tm_wday MOD 7 == timeptr->tm_wday
+ * from which it follows that. . .
+ */
+ jan1day = timeptr->tm_wday - (timeptr->tm_yday % 7);
+ if (jan1day < 0)
+ jan1day += 7;
+
+ /*
+ * If Jan 1 was a Monday through Thursday, it was in
+ * week 1. Otherwise it was last year's highest week, which is
+ * this year's week 0.
+ *
+ * What does that mean?
+ * If Jan 1 was Monday, the week number is exactly right, it can
+ * never be 0.
+ * If it was Tuesday through Thursday, the weeknumber is one
+ * less than it should be, so we add one.
+ * Otherwise, Friday, Saturday or Sunday, the week number is
+ * OK, but if it is 0, it needs to be 52 or 53.
+ */
+ switch (jan1day) {
+ case 1: /* Monday */
+ break;
+ case 2: /* Tuesday */
+ case 3: /* Wednesday */
+ case 4: /* Thursday */
+ weeknum++;
+ break;
+ case 5: /* Friday */
+ case 6: /* Saturday */
+ case 0: /* Sunday */
+ if (weeknum == 0) {
+#ifdef USE_BROKEN_XPG4
+ /* XPG4 (as of March 1994) says 53 unconditionally */
+ weeknum = 53;
+#else
+ /* get week number of last week of last year */
+ struct tm dec31ly; /* 12/31 last year */
+ dec31ly = *timeptr;
+ dec31ly.tm_year--;
+ dec31ly.tm_mon = 11;
+ dec31ly.tm_mday = 31;
+ dec31ly.tm_wday = (jan1day == 0) ? 6 : jan1day - 1;
+ dec31ly.tm_yday = 364 + isleap(dec31ly.tm_year + 1900L);
+ weeknum = iso8601wknum(& dec31ly);
+#endif
+ }
+ break;
+ }
+
+ if (timeptr->tm_mon == 11) {
+ /*
+ * The last week of the year
+ * can be in week 1 of next year.
+ * Sigh.
+ *
+ * This can only happen if
+ * M T W
+ * 29 30 31
+ * 30 31
+ * 31
+ */
+ int wday, mday;
+
+ wday = timeptr->tm_wday;
+ mday = timeptr->tm_mday;
+ if ( (wday == 1 && (mday >= 29 && mday <= 31))
+ || (wday == 2 && (mday == 30 || mday == 31))
+ || (wday == 3 && mday == 31))
+ weeknum = 1;
+ }
+
+ return weeknum;
+}
+
+static int
+iso8601wknum_v(const struct tmx *tmx)
+{
+ struct tm tm;
+ tmx2tm_noyear(tmx, &tm);
+ return iso8601wknum(&tm);
}
+#endif
+
+/* weeknumber --- figure how many weeks into the year */
+
+/* With thanks and tip of the hatlo to ado@elsie.nci.nih.gov */
+
+#ifndef __STDC__
+static int
+weeknumber(timeptr, firstweekday)
+const struct tm *timeptr;
+int firstweekday;
+#else
+static int
+weeknumber(const struct tm *timeptr, int firstweekday)
+#endif
+{
+ int wday = timeptr->tm_wday;
+ int ret;
+
+ if (firstweekday == 1) {
+ if (wday == 0) /* sunday */
+ wday = 6;
+ else
+ wday--;
+ }
+ ret = ((timeptr->tm_yday + 7 - wday) / 7);
+ if (ret < 0)
+ ret = 0;
+ return ret;
+}
+
+static int
+weeknumber_v(const struct tmx *tmx, int firstweekday)
+{
+ struct tm tm;
+ tmx2tm_noyear(tmx, &tm);
+ return weeknumber(&tm, firstweekday);
+}
+#endif
+
+#if 0
+/* ADR --- I'm loathe to mess with ado's code ... */
+
+Date: Wed, 24 Apr 91 20:54:08 MDT
+From: Michal Jaegermann <audfax!emory!vm.ucs.UAlberta.CA!NTOMCZAK>
+To: arnold@audiofax.com
+
+Hi Arnold,
+in a process of fixing of strftime() in libraries on Atari ST I grabbed
+some pieces of code from your own strftime. When doing that it came
+to mind that your weeknumber() function compiles a little bit nicer
+in the following form:
+/*
+ * firstweekday is 0 if starting in Sunday, non-zero if in Monday
+ */
+{
+ return (timeptr->tm_yday - timeptr->tm_wday +
+ (firstweekday ? (timeptr->tm_wday ? 8 : 1) : 7)) / 7;
+}
+How nicer it depends on a compiler, of course, but always a tiny bit.
+
+ Cheers,
+ Michal
+ ntomczak@vm.ucs.ualberta.ca
+#endif
+
+#ifdef TEST_STRFTIME
+
/*
-Local variables:
-c-file-style: "ruby"
-End:
-*/
+ * NAME:
+ * tst
+ *
+ * SYNOPSIS:
+ * tst
+ *
+ * DESCRIPTION:
+ * "tst" is a test driver for the function "strftime".
+ *
+ * OPTIONS:
+ * None.
+ *
+ * AUTHOR:
+ * Karl Vogel
+ * Control Data Systems, Inc.
+ * vogelke@c-17igp.wpafb.af.mil
+ *
+ * BUGS:
+ * None noticed yet.
+ *
+ * COMPILE:
+ * cc -o tst -DTEST_STRFTIME strftime.c
+ */
+
+/* ADR: I reformatted this to my liking, and deleted some unneeded code. */
+
+#ifndef NULL
+#include <stdio.h>
+#endif
+#include <time.h>
+#include <sys/time.h>
+#include <string.h>
+
+#define MAXTIME 132
+
+/*
+ * Array of time formats.
+ */
+
+static char *array[] =
+{
+ "(%%A) full weekday name, var length (Sunday..Saturday) %A",
+ "(%%B) full month name, var length (January..December) %B",
+ "(%%C) Century %C",
+ "(%%D) date (%%m/%%d/%%y) %D",
+ "(%%E) Locale extensions (ignored) %E",
+ "(%%H) hour (24-hour clock, 00..23) %H",
+ "(%%I) hour (12-hour clock, 01..12) %I",
+ "(%%M) minute (00..59) %M",
+ "(%%O) Locale extensions (ignored) %O",
+ "(%%R) time, 24-hour (%%H:%%M) %R",
+ "(%%S) second (00..60) %S",
+ "(%%T) time, 24-hour (%%H:%%M:%%S) %T",
+ "(%%U) week of year, Sunday as first day of week (00..53) %U",
+ "(%%V) week of year according to ISO 8601 %V",
+ "(%%W) week of year, Monday as first day of week (00..53) %W",
+ "(%%X) appropriate locale time representation (%H:%M:%S) %X",
+ "(%%Y) year with century (1970...) %Y",
+ "(%%Z) timezone (EDT), or blank if timezone not determinable %Z",
+ "(%%a) locale's abbreviated weekday name (Sun..Sat) %a",
+ "(%%b) locale's abbreviated month name (Jan..Dec) %b",
+ "(%%c) full date (Sat Nov 4 12:02:33 1989)%n%t%t%t %c",
+ "(%%d) day of the month (01..31) %d",
+ "(%%e) day of the month, blank-padded ( 1..31) %e",
+ "(%%h) should be same as (%%b) %h",
+ "(%%j) day of the year (001..366) %j",
+ "(%%k) hour, 24-hour clock, blank pad ( 0..23) %k",
+ "(%%l) hour, 12-hour clock, blank pad ( 1..12) %l",
+ "(%%m) month (01..12) %m",
+ "(%%p) locale's AM or PM based on 12-hour clock %p",
+ "(%%r) time, 12-hour (same as %%I:%%M:%%S %%p) %r",
+ "(%%u) ISO 8601: Weekday as decimal number [1 (Monday) - 7] %u",
+ "(%%v) VMS date (dd-bbb-YYYY) %v",
+ "(%%w) day of week (0..6, Sunday == 0) %w",
+ "(%%x) appropriate locale date representation %x",
+ "(%%y) last two digits of year (00..99) %y",
+ "(%%z) timezone offset east of GMT as HHMM (e.g. -0500) %z",
+ (char *) NULL
+};
+
+/* main routine. */
+
+int
+main(argc, argv)
+int argc;
+char **argv;
+{
+ char *next;
+ char string[MAXTIME];
+
+ int k;
+ int length;
+
+ struct tm *tm;
+
+ time_t clock;
+
+ /* Call the function. */
+
+ clock = time(NULL);
+ tm = localtime(&clock);
+
+ for (k = 0; next = array[k]; k++) {
+ length = strftime(string, MAXTIME, next, tm);
+ printf("%s\n", string);
+ }
+
+ exit(0);
+}
+#endif /* TEST_STRFTIME */
diff --git a/ext/date/date_strptime.c b/ext/date/date_strptime.c
index 3e1b0f85ea..eaec8e716b 100644
--- a/ext/date/date_strptime.c
+++ b/ext/date/date_strptime.c
@@ -58,15 +58,14 @@ static const char *extz_pats[] = {
static int
num_pattern_p(const char *s)
{
- if (isdigit((unsigned char)*s))
+ if (isdigit(*s))
return 1;
if (*s == '%') {
s++;
if (*s == 'E' || *s == 'O')
s++;
if (*s &&
- (strchr("CDdeFGgHIjkLlMmNQRrSsTUuVvWwXxYy", *s) ||
- isdigit((unsigned char)*s)))
+ (strchr("CDdeFGgHIjkLlMmNQRrSsTUuVvWwXxYy", *s) || isdigit(*s)))
return 1;
}
return 0;
@@ -567,8 +566,8 @@ date__strptime_internal(const char *str, size_t slen,
static const char pat_source[] =
"\\A("
"(?:gmt|utc?)?[-+]\\d+(?:[,.:]\\d+(?::\\d+)?)?"
- "|(?-i:[[:alpha:].\\s]+)(?:standard|daylight)\\s+time\\b"
- "|(?-i:[[:alpha:]]+)(?:\\s+dst)?\\b"
+ "|[[:alpha:].\\s]+(?:standard|daylight)\\s+time\\b"
+ "|[[:alpha:]]+(?:\\s+dst)?\\b"
")";
static VALUE pat = Qnil;
VALUE m, b;
@@ -625,7 +624,7 @@ date__strptime_internal(const char *str, size_t slen,
case '\v':
case '\f':
case '\r':
- while (isspace((unsigned char)str[si]))
+ while (isspace(str[si]))
si++;
fi++;
break;
diff --git a/ext/date/date_tmx.h b/ext/date/date_tmx.h
index ed06501228..0e56c9b4f0 100644
--- a/ext/date/date_tmx.h
+++ b/ext/date/date_tmx.h
@@ -18,7 +18,7 @@ struct tmx_funcs {
VALUE (*sec_fraction)(void *dat);
VALUE (*secs)(void *dat);
VALUE (*msecs)(void *dat);
- int (*offset)(void *dat);
+ VALUE (*offset)(void *dat);
char *(*zone)(void *dat);
};
struct tmx {
diff --git a/ext/date/depend b/ext/date/depend
index e6afa56162..7e5d62e79d 100644
--- a/ext/date/depend
+++ b/ext/date/depend
@@ -1,3 +1,2 @@
-$(OBJS): $(ruby_headers)
date_core.o: date_tmx.h
date_strftime.o: date_tmx.h
diff --git a/ext/dbm/dbm.c b/ext/dbm/dbm.c
index 57d227e8ad..3c65d1f5bc 100644
--- a/ext/dbm/dbm.c
+++ b/ext/dbm/dbm.c
@@ -21,15 +21,6 @@
#include <fcntl.h>
#include <errno.h>
-#define DSIZE_TYPE TYPEOF_DATUM_DSIZE
-#if SIZEOF_DATUM_DSIZE > SIZEOF_INT
-# define RSTRING_DSIZE(s) RSTRING_LEN(s)
-# define TOO_LONG(n) 0
-#else
-# define RSTRING_DSIZE(s) RSTRING_LENINT(s)
-# define TOO_LONG(n) ((long)(+(DSIZE_TYPE)(n)) != (n))
-#endif
-
static VALUE rb_cDBM, rb_eDBMError;
#define RUBY_DBM_RW_BIT 0x20000000
@@ -146,67 +137,26 @@ fdbm_initialize(int argc, VALUE *argv, VALUE obj)
FilePathValue(file);
- /*
- * Note:
- * gdbm 1.10 works with O_CLOEXEC. gdbm 1.9.1 silently ignore it.
- */
-#ifndef O_CLOEXEC
-# define O_CLOEXEC 0
-#endif
-
if (flags & RUBY_DBM_RW_BIT) {
flags &= ~RUBY_DBM_RW_BIT;
- dbm = dbm_open(RSTRING_PTR(file), flags|O_CLOEXEC, mode);
+ dbm = dbm_open(RSTRING_PTR(file), flags, mode);
}
else {
dbm = 0;
if (mode >= 0) {
- dbm = dbm_open(RSTRING_PTR(file), O_RDWR|O_CREAT|O_CLOEXEC, mode);
+ dbm = dbm_open(RSTRING_PTR(file), O_RDWR|O_CREAT, mode);
}
if (!dbm) {
- dbm = dbm_open(RSTRING_PTR(file), O_RDWR|O_CLOEXEC, 0);
+ dbm = dbm_open(RSTRING_PTR(file), O_RDWR, 0);
}
if (!dbm) {
- dbm = dbm_open(RSTRING_PTR(file), O_RDONLY|O_CLOEXEC, 0);
+ dbm = dbm_open(RSTRING_PTR(file), O_RDONLY, 0);
}
}
- if (dbm) {
- /*
- * History of dbm_pagfno() and dbm_dirfno() in ndbm and its compatibles.
- * (dbm_pagfno() and dbm_dirfno() is not standardized.)
- *
- * 1986: 4.3BSD provides ndbm.
- * It provides dbm_pagfno() and dbm_dirfno() as macros.
- * 1991: gdbm-1.5 provides them as functions.
- * They returns a same descriptor.
- * (Earlier releases may have the functions too.)
- * 1991: Net/2 provides Berkeley DB.
- * It doesn't provide dbm_pagfno() and dbm_dirfno().
- * 1992: 4.4BSD Alpha provides Berkeley DB with dbm_dirfno() as a function.
- * dbm_pagfno() is a macro as DBM_PAGFNO_NOT_AVAILABLE.
- * 1997: Berkeley DB 2.0 is released by Sleepycat Software, Inc.
- * It defines dbm_pagfno() and dbm_dirfno() as macros.
- * 2011: gdbm-1.9 creates a separate dir file.
- * dbm_pagfno() and dbm_dirfno() returns different descriptors.
- */
-#if defined(HAVE_DBM_PAGFNO)
- rb_fd_fix_cloexec(dbm_pagfno(dbm));
-#endif
-#if defined(HAVE_DBM_DIRFNO)
- rb_fd_fix_cloexec(dbm_dirfno(dbm));
-#endif
-
-#if defined(RUBYDBM_DB_HEADER) && defined(HAVE_TYPE_DBC)
- /* Disable Berkeley DB error messages such as:
- * DB->put: attempt to modify a read-only database */
- ((DBC*)dbm)->dbp->set_errfile(((DBC*)dbm)->dbp, NULL);
-#endif
- }
-
if (!dbm) {
if (mode == -1) return Qnil;
- rb_sys_fail_str(file);
+ rb_sys_fail(RSTRING_PTR(file));
}
dbmp = ALLOC(struct dbmdata);
@@ -247,18 +197,14 @@ fdbm_fetch(VALUE obj, VALUE keystr, VALUE ifnone)
datum key, value;
struct dbmdata *dbmp;
DBM *dbm;
- long len;
ExportStringValue(keystr);
- len = RSTRING_LEN(keystr);
- if (TOO_LONG(len)) goto not_found;
key.dptr = RSTRING_PTR(keystr);
- key.dsize = (DSIZE_TYPE)len;
+ key.dsize = (int)RSTRING_LEN(keystr);
GetDBM2(obj, dbmp, dbm);
value = dbm_fetch(dbm, key);
if (value.dptr == 0) {
- not_found:
if (ifnone == Qnil && rb_block_given_p())
return rb_yield(rb_tainted_str_new(key.dptr, key.dsize));
return ifnone;
@@ -312,18 +258,15 @@ fdbm_key(VALUE obj, VALUE valstr)
datum key, val;
struct dbmdata *dbmp;
DBM *dbm;
- long len;
ExportStringValue(valstr);
- len = RSTRING_LEN(valstr);
- if (TOO_LONG(len)) return Qnil;
val.dptr = RSTRING_PTR(valstr);
- val.dsize = (DSIZE_TYPE)len;
+ val.dsize = (int)RSTRING_LEN(valstr);
GetDBM2(obj, dbmp, dbm);
for (key = dbm_firstkey(dbm); key.dptr; key = dbm_nextkey(dbm)) {
val = dbm_fetch(dbm, key);
- if ((long)val.dsize == RSTRING_LEN(valstr) &&
+ if ((long)val.dsize == (int)RSTRING_LEN(valstr) &&
memcmp(val.dptr, RSTRING_PTR(valstr), val.dsize) == 0) {
return rb_tainted_str_new(key.dptr, key.dsize);
}
@@ -409,20 +352,16 @@ fdbm_delete(VALUE obj, VALUE keystr)
struct dbmdata *dbmp;
DBM *dbm;
VALUE valstr;
- long len;
fdbm_modify(obj);
ExportStringValue(keystr);
- len = RSTRING_LEN(keystr);
- if (TOO_LONG(len)) goto not_found;
key.dptr = RSTRING_PTR(keystr);
- key.dsize = (DSIZE_TYPE)len;
+ key.dsize = (int)RSTRING_LEN(keystr);
GetDBM2(obj, dbmp, dbm);
value = dbm_fetch(dbm, key);
if (value.dptr == 0) {
- not_found:
if (rb_block_given_p()) return rb_yield(keystr);
return Qnil;
}
@@ -485,7 +424,7 @@ fdbm_delete_if(VALUE obj)
struct dbmdata *dbmp;
DBM *dbm;
VALUE keystr, valstr;
- VALUE ret, ary = rb_ary_tmp_new(0);
+ VALUE ret, ary = rb_ary_new();
int i, status = 0;
long n;
@@ -497,7 +436,6 @@ fdbm_delete_if(VALUE obj)
for (key = dbm_firstkey(dbm); key.dptr; key = dbm_nextkey(dbm)) {
val = dbm_fetch(dbm, key);
keystr = rb_tainted_str_new(key.dptr, key.dsize);
- OBJ_FREEZE(keystr);
valstr = rb_tainted_str_new(val.dptr, val.dsize);
ret = rb_protect(rb_yield, rb_assoc_new(rb_str_dup(keystr), valstr), &status);
if (status != 0) break;
@@ -507,15 +445,15 @@ fdbm_delete_if(VALUE obj)
for (i = 0; i < RARRAY_LEN(ary); i++) {
keystr = RARRAY_PTR(ary)[i];
+ ExportStringValue(keystr);
key.dptr = RSTRING_PTR(keystr);
- key.dsize = (DSIZE_TYPE)RSTRING_LEN(keystr);
+ key.dsize = (int)RSTRING_LEN(keystr);
if (dbm_delete(dbm, key)) {
rb_raise(rb_eDBMError, "dbm_delete failed");
}
}
if (status) rb_jump_tag(status);
if (n > 0) dbmp->di_size = n - RARRAY_LEN(ary);
- rb_ary_clear(ary);
return obj;
}
@@ -636,15 +574,17 @@ fdbm_store(VALUE obj, VALUE keystr, VALUE valstr)
valstr = rb_obj_as_string(valstr);
key.dptr = RSTRING_PTR(keystr);
- key.dsize = RSTRING_DSIZE(keystr);
+ key.dsize = (int)RSTRING_LEN(keystr);
val.dptr = RSTRING_PTR(valstr);
- val.dsize = RSTRING_DSIZE(valstr);
+ val.dsize = (int)RSTRING_LEN(valstr);
GetDBM2(obj, dbmp, dbm);
dbmp->di_size = -1;
if (dbm_store(dbm, key, val, DBM_REPLACE)) {
+#ifdef HAVE_DBM_CLEARERR
dbm_clearerr(dbm);
+#endif
if (errno == EPERM) rb_sys_fail(0);
rb_raise(rb_eDBMError, "dbm_store failed");
}
@@ -689,20 +629,21 @@ fdbm_empty_p(VALUE obj)
datum key;
struct dbmdata *dbmp;
DBM *dbm;
+ int i = 0;
GetDBM2(obj, dbmp, dbm);
if (dbmp->di_size < 0) {
dbm = dbmp->di_dbm;
for (key = dbm_firstkey(dbm); key.dptr; key = dbm_nextkey(dbm)) {
- return Qfalse;
+ i++;
}
}
else {
- if (dbmp->di_size)
- return Qfalse;
+ i = (int)dbmp->di_size;
}
- return Qtrue;
+ if (i == 0) return Qtrue;
+ return Qfalse;
}
/*
@@ -842,13 +783,10 @@ fdbm_has_key(VALUE obj, VALUE keystr)
datum key, val;
struct dbmdata *dbmp;
DBM *dbm;
- long len;
ExportStringValue(keystr);
- len = RSTRING_LEN(keystr);
- if (TOO_LONG(len)) return Qfalse;
key.dptr = RSTRING_PTR(keystr);
- key.dsize = (DSIZE_TYPE)len;
+ key.dsize = (int)RSTRING_LEN(keystr);
GetDBM2(obj, dbmp, dbm);
val = dbm_fetch(dbm, key);
@@ -869,18 +807,15 @@ fdbm_has_value(VALUE obj, VALUE valstr)
datum key, val;
struct dbmdata *dbmp;
DBM *dbm;
- long len;
ExportStringValue(valstr);
- len = RSTRING_LEN(valstr);
- if (TOO_LONG(len)) return Qfalse;
val.dptr = RSTRING_PTR(valstr);
- val.dsize = (DSIZE_TYPE)len;
+ val.dsize = (int)RSTRING_LEN(valstr);
GetDBM2(obj, dbmp, dbm);
for (key = dbm_firstkey(dbm); key.dptr; key = dbm_nextkey(dbm)) {
val = dbm_fetch(dbm, key);
- if ((DSIZE_TYPE)val.dsize == (DSIZE_TYPE)RSTRING_LEN(valstr) &&
+ if (val.dsize == (int)RSTRING_LEN(valstr) &&
memcmp(val.dptr, RSTRING_PTR(valstr), val.dsize) == 0)
return Qtrue;
}
@@ -972,7 +907,7 @@ fdbm_reject(VALUE obj)
* - {Berkeley DB}[http://en.wikipedia.org/wiki/Berkeley_DB] versions
* 1 thru 5, also known as BDB and Sleepycat DB, now owned by Oracle
* Corporation.
- * - Berkeley DB 1.x, still found in 4.4BSD derivatives (FreeBSD, OpenBSD, etc).
+ * - Berkeley DB 1.x, still found in FreeBSD and OpenBSD.
* - {gdbm}[http://www.gnu.org/software/gdbm/], the GNU implementation of dbm.
* - {qdbm}[http://fallabs.com/qdbm/index.html], another open source
* reimplementation of dbm.
@@ -1053,9 +988,9 @@ Init_dbm(void)
rb_define_method(rb_cDBM, "reject!", fdbm_delete_if, 0);
rb_define_method(rb_cDBM, "reject", fdbm_reject, 0);
rb_define_method(rb_cDBM, "clear", fdbm_clear, 0);
- rb_define_method(rb_cDBM, "invert", fdbm_invert, 0);
- rb_define_method(rb_cDBM, "update", fdbm_update, 1);
- rb_define_method(rb_cDBM, "replace", fdbm_replace, 1);
+ rb_define_method(rb_cDBM,"invert", fdbm_invert, 0);
+ rb_define_method(rb_cDBM,"update", fdbm_update, 1);
+ rb_define_method(rb_cDBM,"replace", fdbm_replace, 1);
rb_define_method(rb_cDBM, "include?", fdbm_has_key, 1);
rb_define_method(rb_cDBM, "has_key?", fdbm_has_key, 1);
@@ -1084,50 +1019,24 @@ Init_dbm(void)
*/
rb_define_const(rb_cDBM, "NEWDB", INT2FIX(O_RDWR|O_CREAT|O_TRUNC|RUBY_DBM_RW_BIT));
+#if defined(HAVE_DB_VERSION)
+ /* The version of the dbm library, if using Berkeley DB */
+ rb_define_const(rb_cDBM, "VERSION", rb_str_new2(db_version(NULL, NULL, NULL)));
+#elif defined(HAVE_GDBM_VERSION)
+ /* since gdbm 1.9 */
+ rb_define_const(rb_cDBM, "VERSION", rb_str_new2(gdbm_version));
+#elif defined(HAVE_LIBVAR_GDBM_VERSION)
+ /* ndbm.h doesn't declare gdbm_version until gdbm 1.8.3.
+ * See extconf.rb for more information. */
{
- VALUE version;
-#if defined(_DBM_IOERR)
- version = rb_str_new2("ndbm (4.3BSD)");
-#elif defined(RUBYDBM_GDBM_HEADER)
-# if defined(HAVE_DECLARED_LIBVAR_GDBM_VERSION)
- /* since gdbm 1.9 */
- version = rb_str_new2(gdbm_version);
-# elif defined(HAVE_UNDECLARED_LIBVAR_GDBM_VERSION)
- /* ndbm.h doesn't declare gdbm_version until gdbm 1.8.3.
- * See extconf.rb for more information. */
- RUBY_EXTERN char *gdbm_version;
- version = rb_str_new2(gdbm_version);
-# else
- version = rb_str_new2("GDBM (unknown)");
-# endif
-#elif defined(RUBYDBM_DB_HEADER)
-# if defined(HAVE_DB_VERSION)
- /* The version of the dbm library, if using Berkeley DB */
- version = rb_str_new2(db_version(NULL, NULL, NULL));
-# else
- version = rb_str_new2("Berkeley DB (unknown)");
-# endif
-#elif defined(_RELIC_H)
-# if defined(HAVE_DPVERSION)
- version = rb_sprintf("QDBM %s", dpversion);
-# else
- version = rb_str_new2("QDBM (unknown)");
-# endif
+ RUBY_EXTERN char *gdbm_version;
+ rb_define_const(rb_cDBM, "VERSION", rb_str_new2(gdbm_version));
+ }
+#elif defined(HAVE_DPVERSION)
+ rb_define_const(rb_cDBM, "VERSION", rb_sprintf("QDBM %s", dpversion));
+#elif defined(_DB_H_)
+ rb_define_const(rb_cDBM, "VERSION", rb_str_new2("Berkeley DB (unknown)"));
#else
- version = rb_str_new2("ndbm (unknown)");
+ rb_define_const(rb_cDBM, "VERSION", rb_str_new2("unknown"));
#endif
- /*
- * Identifies ndbm library version.
- *
- * Examples:
- *
- * - "ndbm (4.3BSD)"
- * - "Berkeley DB 4.8.30: (April 9, 2010)"
- * - "Berkeley DB (unknown)" (4.4BSD, maybe)
- * - "GDBM version 1.8.3. 10/15/2002 (built Jul 1 2011 12:32:45)"
- * - "QDBM 1.8.78"
- *
- */
- rb_define_const(rb_cDBM, "VERSION", version);
- }
}
diff --git a/ext/dbm/extconf.rb b/ext/dbm/extconf.rb
index 32a944634a..bedd1131f0 100644
--- a/ext/dbm/extconf.rb
+++ b/ext/dbm/extconf.rb
@@ -5,20 +5,21 @@ dir_config("dbm")
if dblib = with_config("dbm-type", nil)
dblib = dblib.split(/[ ,]+/)
else
- dblib = %w(libc db db2 db1 db5 db4 db3 gdbm_compat gdbm qdbm)
+ dblib = %w(libc db db2 db1 db5 db4 db3 dbm gdbm gdbm_compat qdbm)
end
headers = {
- "libc" => ["ndbm.h"], # 4.3BSD original ndbm, Berkeley DB 1 in 4.4BSD libc.
+ "libc" => ["ndbm.h"], # 4.4BSD libc contains Berkeley DB 1.
"db" => ["db.h"],
"db1" => ["db1/ndbm.h", "db1.h", "ndbm.h"],
"db2" => ["db2/db.h", "db2.h", "db.h"],
"db3" => ["db3/db.h", "db3.h", "db.h"],
"db4" => ["db4/db.h", "db4.h", "db.h"],
"db5" => ["db5/db.h", "db5.h", "db.h"],
- "gdbm_compat" => ["gdbm-ndbm.h", "gdbm/ndbm.h", "ndbm.h"], # GDBM since 1.8.1
- "gdbm" => ["gdbm-ndbm.h", "gdbm/ndbm.h", "ndbm.h"], # GDBM until 1.8.0
- "qdbm" => ["qdbm/relic.h", "relic.h"],
+ "dbm" => ["ndbm.h"], # traditional ndbm (4.3BSD)
+ "gdbm" => ["gdbm-ndbm.h", "ndbm.h", "gdbm/ndbm.h"], # gdbm until 1.8.0
+ "gdbm_compat" => ["gdbm-ndbm.h", "ndbm.h", "gdbm/ndbm.h"], # gdbm since 1.8.1
+ "qdbm" => ["relic.h", "qdbm/relic.h"],
}
class << headers
@@ -39,35 +40,184 @@ def headers.db_check(db, hdr)
result
end
-def have_declared_libvar(var, headers = nil, opt = "", &b)
- checking_for checking_message([*var].compact.join(' '), headers, opt) do
- try_declared_libvar(var, headers, opt, &b)
+# BEGIN BACKPORTED FROM 2.0
+class String
+ # Wraps a string in escaped quotes if it contains whitespace.
+ def quote
+ /\s/ =~ self ? "\"#{self}\"" : "#{self}"
+ end
+
+ # Generates a string used as cpp macro name.
+ def tr_cpp
+ strip.upcase.tr_s("^A-Z0-9_*", "_").tr_s("*", "P")
+ end
+
+ def funcall_style
+ /\)\z/ =~ self ? dup : "#{self}()"
+ end
+
+ def sans_arguments
+ self[/\A[^()]+/]
end
end
-def try_declared_libvar(var, headers = nil, opt = "", &b)
- if try_link(<<"SRC", opt, &b)
-#{cpp_include(headers)}
+ def rm_f(*files)
+ opt = (Hash === files.last ? [files.pop] : [])
+ FileUtils.rm_f(Dir[*files.flatten], *opt)
+ end
+
+ def try_func(func, libs, headers = nil, opt = "", &b)
+ headers = cpp_include(headers)
+ case func
+ when /^&/
+ decltype = proc {|x|"const volatile void *#{x}"}
+ when /\)$/
+ call = func
+ else
+ call = "#{func}()"
+ decltype = proc {|x| "void ((*#{x})())"}
+ end
+ if opt and !opt.empty?
+ [[:to_str], [:join, " "], [:to_s]].each do |meth, *args|
+ if opt.respond_to?(meth)
+ break opt = opt.send(meth, *args)
+ end
+ end
+ opt = "#{opt} #{libs}"
+ else
+ opt = libs
+ end
+ decltype && try_link(<<"SRC", opt, &b) or
+#{headers}
/*top*/
-int main(int argc, char *argv[]) {
- void *conftest_var = &#{var};
- return 0;
-}
+#{MAIN_DOES_NOTHING}
+extern int t(void);
+int t(void) { #{decltype["volatile p"]}; p = (#{decltype[]})#{func}; return 0; }
+SRC
+ call && try_link(<<"SRC", opt, &b)
+#{headers}
+/*top*/
+#{MAIN_DOES_NOTHING}
+extern int t(void);
+int t(void) { #{call}; return 0; }
SRC
- $defs.push(format("-DHAVE_DECLARED_LIBVAR_%s", var.tr_cpp))
- true
- else
- false
end
-end
-def have_undeclared_libvar(var, headers = nil, opt = "", &b)
+ def try_var(var, headers = nil, opt = "", &b)
+ headers = cpp_include(headers)
+ try_compile(<<"SRC", opt, &b)
+#{headers}
+/*top*/
+#{MAIN_DOES_NOTHING}
+extern int t(void);
+int t(void) { const volatile void *volatile p; p = &(&#{var})[0]; return 0; }
+SRC
+ end
+
+ def have_library(lib, func = nil, headers = nil, opt = "", &b)
+ func = "main" if !func or func.empty?
+ lib = with_config(lib+'lib', lib)
+ checking_for checking_message(func.funcall_style, LIBARG%lib, opt) do
+ if COMMON_LIBS.include?(lib)
+ true
+ else
+ libs = append_library($libs, lib)
+ if try_func(func, libs, headers, opt, &b)
+ $libs = libs
+ true
+ else
+ false
+ end
+ end
+ end
+ end
+
+ def have_func(func, headers = nil, opt = "", &b)
+ checking_for checking_message(func.funcall_style, headers, opt) do
+ if try_func(func, $libs, headers, opt, &b)
+ $defs << "-DHAVE_#{func.sans_arguments.tr_cpp}"
+ true
+ else
+ false
+ end
+ end
+ end
+
+ def have_var(var, headers = nil, opt = "", &b)
+ checking_for checking_message(var, headers, opt) do
+ if try_var(var, headers, opt, &b)
+ $defs.push(format("-DHAVE_%s", var.tr_cpp))
+ true
+ else
+ false
+ end
+ end
+ end
+
+ def try_cpp(src, opt="", *opts, &b)
+ try_do(src, cpp_command(CPPOUTFILE, opt), *opts, &b)
+ ensure
+ rm_f "conftest*"
+ end
+
+ alias :try_header :try_cpp
+
+ def have_header(header, preheaders = nil, opt = "", &b)
+ checking_for header do
+ if try_header(cpp_include(preheaders)+cpp_include(header), opt, &b)
+ $defs.push(format("-DHAVE_%s", header.tr_cpp))
+ true
+ else
+ false
+ end
+ end
+ end
+
+ def convertible_int(type, headers = nil, opts = nil, &b)
+ type, macname = *type
+ checking_for("convertible type of #{type}", STRING_OR_FAILED_FORMAT) do
+ if UNIVERSAL_INTS.include?(type)
+ type
+ else
+ typedef, member, prelude = typedef_expr(type, headers, &b)
+ if member
+ prelude << "static rbcv_typedef_ rbcv_var;"
+ compat = UNIVERSAL_INTS.find {|t|
+ try_static_assert("sizeof(rbcv_var.#{member}) == sizeof(#{t})", [prelude], opts, &b)
+ }
+ else
+ next unless signed = try_signedness(typedef, member, [prelude])
+ u = "unsigned " if signed > 0
+ prelude << "extern rbcv_typedef_ foo();"
+ compat = UNIVERSAL_INTS.find {|t|
+ try_compile([prelude, "extern #{u}#{t} foo();"].join("\n"), opts, :werror=>true, &b)
+ }
+ end
+ if compat
+ macname ||= type.sub(/_(?=t\z)/, '').tr_cpp
+ conv = (compat == "long long" ? "LL" : compat.upcase)
+ compat = "#{u}#{compat}"
+ typename = type.tr_cpp
+ $defs.push(format("-DSIZEOF_%s=SIZEOF_%s", typename, compat.tr_cpp))
+ $defs.push(format("-DTYPEOF_%s=%s", typename, compat.quote))
+ $defs.push(format("-DPRI_%s_PREFIX=PRI_%s_PREFIX", macname, conv))
+ conv = (u ? "U" : "") + conv
+ $defs.push(format("-D%s2NUM=%s2NUM", macname, conv))
+ $defs.push(format("-DNUM2%s=NUM2%s", macname, conv))
+ compat
+ end
+ end
+ end
+ end
+# END BACKPORTED FROM 2.0
+
+def have_libvar(var, headers = nil, opt = "", &b)
checking_for checking_message([*var].compact.join(' '), headers, opt) do
- try_undeclared_libvar(var, headers, opt, &b)
+ try_libvar(var, headers, opt, &b)
end
end
-def try_undeclared_libvar(var, headers = nil, opt = "", &b)
+def try_libvar(var, headers = nil, opt = "", &b)
var, type = *var
if try_link(<<"SRC", opt, &b)
#{cpp_include(headers)}
@@ -79,26 +229,7 @@ int main(int argc, char *argv[]) {
return 0;
}
SRC
- $defs.push(format("-DHAVE_UNDECLARED_LIBVAR_%s", var.tr_cpp))
- true
- else
- false
- end
-end
-
-def have_empty_macro_dbm_clearerr(headers = nil, opt = "", &b)
- checking_for checking_message('empty macro of dbm_clearerr(foobarbaz)',
- headers, opt) do
- try_toplevel('dbm_clearerr(foobarbaz)', headers, opt, &b)
- end
-end
-
-def try_toplevel(src, headers = nil, opt = "", &b)
- if try_compile(<<"SRC", opt, &b)
-#{cpp_include(headers)}
-/*top*/
-#{src}
-SRC
+ $defs.push(format("-DHAVE_LIBVAR_%s", var.tr_cpp))
true
else
false
@@ -107,9 +238,6 @@ end
def headers.db_check2(db, hdr)
- $defs.push(%{-DRUBYDBM_DBM_HEADER='"#{hdr}"'})
- $defs.push(%{-DRUBYDBM_DBM_TYPE='"#{db}"'})
-
hsearch = nil
case db
@@ -119,129 +247,33 @@ def headers.db_check2(db, hdr)
have_library("gdbm") or return false
end
- if !have_type("DBM", hdr, hsearch)
- return false
- end
-
- # 'libc' means ndbm is provided by libc.
- # 4.3BSD original ndbm is contained in libc.
- # 4.4BSD (and its derivatives such as NetBSD) contains Berkeley DB 1 in libc.
- if !(db == 'libc' ? have_func('dbm_open("", 0, 0)', hdr, hsearch) :
- have_library(db, 'dbm_open("", 0, 0)', hdr, hsearch))
- return false
- end
-
- # Skip a mismatch of Berkeley DB's ndbm.h and old GDBM library.
- #
- # dbm_clearerr() should be available for any ndbm implementation.
- # It is available since the original (4.3BSD) ndbm and standardized by POSIX.
- #
- # However "can't resolve symbol 'dbm_clearerr'" problem may be caused by
- # header/library mismatch: Berkeley DB ndbm.h and GDBM library until 1.8.3.
- # GDBM (until 1.8.3) provides dbm_clearerr() as a empty macro in the header
- # and the library don't provide dbm_clearerr().
- # Berkeley DB provides dbm_clearerr() as a usual function.
- # So Berkeley DB header with GDBM library causes the problem.
- #
- if !have_func('dbm_clearerr((DBM *)0)', hdr, hsearch)
- return false
- end
-
- # Berkeley DB's ndbm.h (since 1.85 at least) defines DBM_SUFFIX.
- # Note that _DB_H_ is not defined on Mac OS X because
- # it uses Berkeley DB 1 but ndbm.h doesn't include db.h.
- have_db_header = have_macro('DBM_SUFFIX', hdr, hsearch)
-
- # Old GDBM's ndbm.h, until 1.8.3, defines dbm_clearerr as a macro which
- # expands to no tokens.
- have_gdbm_header1 = have_empty_macro_dbm_clearerr(hdr, hsearch)
-
- # Recent GDBM's ndbm.h, since 1.9, includes gdbm.h and it defines _GDBM_H_.
- # ndbm compatibility layer of GDBM is provided by libgdbm (until 1.8.0)
- # and libgdbm_compat (since 1.8.1).
- have_gdbm_header2 = have_macro('_GDBM_H_', hdr, hsearch)
-
- # 4.3BSD's ndbm.h defines _DBM_IOERR.
- # The original ndbm is provided by libc in 4.3BSD.
- have_ndbm_header = have_macro('_DBM_IOERR', hdr, hsearch)
-
- # GDBM provides ndbm functions in libgdbm_compat since GDBM 1.8.1.
- # GDBM's ndbm.h defines _GDBM_H_ since GDBM 1.9.
- # If _GDBM_H_ is defined, 'gdbm_compat' is required and reject 'gdbm'.
- if have_gdbm_header2 && db == 'gdbm'
- return false
- end
-
- if have_db_header
- $defs.push('-DRUBYDBM_DB_HEADER')
- end
-
- have_gdbm_header = have_gdbm_header1 | have_gdbm_header2
- if have_gdbm_header
- $defs.push('-DRUBYDBM_GDBM_HEADER')
- end
-
- # ndbm.h is provided by the original (4.3BSD) ndbm,
- # Berkeley DB 1 in libc of 4.4BSD and
- # ndbm compatibility layer of GDBM.
- # So, try to check header/library mismatch.
- #
- # Several (possibly historical) distributions provides libndbm.
- # It may be Berkeley DB, GDBM or 4.3BSD ndbm.
- # So mismatch check is not performed for that.
- # Note that libndbm is searched only when --with-dbm-type=ndbm is
- # given for configure.
- #
- if hdr == 'ndbm.h' && db != 'libc' && db != 'ndbm'
- if /\Adb\d?\z/ !~ db && have_db_header
- return false
+ if have_type("DBM", hdr, hsearch) and
+ (db == 'libc' ? have_func('dbm_open("", 0, 0)', hdr, hsearch) :
+ have_library(db, 'dbm_open("", 0, 0)', hdr, hsearch)) and
+ have_func('dbm_clearerr((DBM *)0)', hdr, hsearch) and
+ (/\Adb\d?\z/ =~ db || db == 'libc' || !have_macro('_DB_H_', hdr, hsearch)) # _DB_H_ should not be defined except Berkeley DB.
+ case db
+ when /\Adb\d?\z/
+ have_func('db_version((int *)0, (int *)0, (int *)0)', hdr, hsearch)
+ when /\Agdbm/
+ have_var("gdbm_version", hdr, hsearch)
+ # gdbm_version is not declared by ndbm.h until gdbm 1.8.3.
+ # We can't include ndbm.h and gdbm.h because they both define datum type.
+ # ndbm.h includes gdbm.h and gdbm_version is declared since gdbm 1.9.
+ have_libvar(["gdbm_version", "char *"], hdr, hsearch)
+ when /\Aqdbm\z/
+ have_var("dpversion", hdr, hsearch)
end
-
- if /\Agdbm/ !~ db && have_gdbm_header
- return false
+ if hsearch
+ $defs << hsearch
+ @defs = hsearch
end
-
- if have_ndbm_header
- return false
- end
- end
-
- # Berkeley DB
- have_func('db_version((int *)0, (int *)0, (int *)0)', hdr, hsearch)
-
- # GDBM
- have_gdbm_version = have_declared_libvar("gdbm_version", hdr, hsearch)
- # gdbm_version is available since very old version (GDBM 1.5 at least).
- # However it is not declared by ndbm.h until GDBM 1.8.3.
- # We can't include both ndbm.h and gdbm.h because they both define datum type.
- # ndbm.h includes gdbm.h and gdbm_version is declared since GDBM 1.9.
- have_gdbm_version |= have_undeclared_libvar(["gdbm_version", "char *"], hdr, hsearch)
-
- # QDBM
- have_var("dpversion", hdr, hsearch)
-
- # detect mismatch between GDBM header and other library.
- # If GDBM header is included, GDBM library should be linked.
- if have_gdbm_header && !have_gdbm_version
- return false
- end
-
- # DBC type is required to disable error messages by Berkeley DB 2 or later.
- if have_db_header
- have_type("DBC", hdr, hsearch)
- end
-
- if hsearch
- $defs << hsearch
- @defs = hsearch
+ $defs << '-DDBM_HDR="<'+hdr+'>"'
+ @found << hdr
+ true
+ else
+ false
end
- $defs << '-DDBM_HDR="<'+hdr+'>"'
- @found << hdr
-
- puts "header: #{hdr}"
- puts "library: #{db}"
-
- true
end
if dblib.any? {|db| headers.fetch(db, ["ndbm.h"]).any? {|hdr| headers.db_check(db, hdr) } }
diff --git a/ext/digest/digest.c b/ext/digest/digest.c
index 02fc12bd63..956f47ff78 100644
--- a/ext/digest/digest.c
+++ b/ext/digest/digest.c
@@ -99,7 +99,7 @@ hexencode_str_new(VALUE str_digest)
rb_raise(rb_eRuntimeError, "digest string too long");
}
- str = rb_usascii_str_new(0, digest_len * 2);
+ str = rb_str_new(0, digest_len * 2);
for (i = 0, p = RSTRING_PTR(str); i < digest_len; i++) {
unsigned char byte = digest[i];
@@ -154,8 +154,6 @@ static VALUE
rb_digest_instance_update(VALUE self, VALUE str)
{
rb_digest_instance_method_unimpl(self, "update");
-
- UNREACHABLE;
}
/*
@@ -174,8 +172,6 @@ static VALUE
rb_digest_instance_finish(VALUE self)
{
rb_digest_instance_method_unimpl(self, "finish");
-
- UNREACHABLE;
}
/*
@@ -190,8 +186,6 @@ static VALUE
rb_digest_instance_reset(VALUE self)
{
rb_digest_instance_method_unimpl(self, "reset");
-
- UNREACHABLE;
}
/*
@@ -356,8 +350,7 @@ rb_digest_instance_equal(VALUE self, VALUE other)
str2 = rb_digest_instance_digest(0, 0, other);
} else {
str1 = rb_digest_instance_to_s(self);
- str2 = rb_check_string_type(other);
- if (NIL_P(str2)) return Qfalse;
+ str2 = other;
}
/* never blindly assume that subclass methods return strings */
@@ -416,8 +409,6 @@ static VALUE
rb_digest_instance_block_length(VALUE self)
{
rb_digest_instance_method_unimpl(self, "block_length");
-
- UNREACHABLE;
}
/*
diff --git a/ext/digest/md5/extconf.rb b/ext/digest/md5/extconf.rb
index 5a57fd3eea..006aa2ee36 100644
--- a/ext/digest/md5/extconf.rb
+++ b/ext/digest/md5/extconf.rb
@@ -1,4 +1,3 @@
-# -*- coding: us-ascii -*-
# $RoughId: extconf.rb,v 1.3 2001/08/14 19:54:51 knu Exp $
# $Id$
@@ -11,10 +10,9 @@ $objs = [ "md5init.#{$OBJEXT}" ]
dir_config("openssl")
pkg_config("openssl")
-require File.expand_path('../../../openssl/deprecation', __FILE__)
if !with_config("bundled-md5") &&
- have_library("crypto") && OpenSSL.check_func("MD5_Transform", "openssl/md5.h")
+ have_library("crypto") && have_header("openssl/md5.h")
$objs << "md5ossl.#{$OBJEXT}"
else
diff --git a/ext/digest/md5/md5init.c b/ext/digest/md5/md5init.c
index 3591782f6e..d1229b5c6e 100644
--- a/ext/digest/md5/md5init.c
+++ b/ext/digest/md5/md5init.c
@@ -30,9 +30,6 @@ Init_md5()
rb_require("digest");
-#if 0
- mDigest = rb_define_module("Digest"); /* let rdoc know */
-#endif
mDigest = rb_path2class("Digest");
cDigest_Base = rb_path2class("Digest::Base");
diff --git a/ext/digest/rmd160/extconf.rb b/ext/digest/rmd160/extconf.rb
index d487d6da80..0805b719c3 100644
--- a/ext/digest/rmd160/extconf.rb
+++ b/ext/digest/rmd160/extconf.rb
@@ -1,4 +1,3 @@
-# -*- coding: us-ascii -*-
# $RoughId: extconf.rb,v 1.3 2001/08/14 19:54:51 knu Exp $
# $Id$
@@ -11,10 +10,9 @@ $objs = [ "rmd160init.#{$OBJEXT}" ]
dir_config("openssl")
pkg_config("openssl")
-require File.expand_path('../../../openssl/deprecation', __FILE__)
if !with_config("bundled-rmd160") &&
- have_library("crypto") && OpenSSL.check_func("RMD160_Transform", "openssl/ripemd.h")
+ have_library("crypto") && have_header("openssl/ripemd.h")
$objs << "rmd160ossl.#{$OBJEXT}"
else
$objs << "rmd160.#{$OBJEXT}"
diff --git a/ext/digest/rmd160/rmd160.c b/ext/digest/rmd160/rmd160.c
index bac77833b1..88918728cd 100644
--- a/ext/digest/rmd160/rmd160.c
+++ b/ext/digest/rmd160/rmd160.c
@@ -362,20 +362,16 @@ RMD160_Update(RMD160_CTX *context, const uint8_t *data, size_t nbytes)
_DIAGASSERT(data != NULL);
/* update length[] */
-#if SIZEOF_SIZE_T * CHAR_BIT > 32
- context->length[1] += (uint32_t)((context->length[0] + nbytes) >> 32);
-#else
if (context->length[0] + nbytes < context->length[0])
context->length[1]++; /* overflow to msb of length */
-#endif
- context->length[0] += (uint32_t)nbytes;
+ context->length[0] += nbytes;
(void)memset(X, 0, sizeof(X));
if ( context->buflen + nbytes < 64 )
{
(void)memcpy(context->bbuffer + context->buflen, data, nbytes);
- context->buflen += (uint32_t)nbytes;
+ context->buflen += nbytes;
}
else
{
@@ -405,7 +401,7 @@ RMD160_Update(RMD160_CTX *context, const uint8_t *data, size_t nbytes)
/*
* Put last bytes from data into context's buffer
*/
- context->buflen = (uint32_t)nbytes & 63;
+ context->buflen = nbytes & 63;
memcpy(context->bbuffer, data + (64 * i) + ofs, context->buflen);
}
}
diff --git a/ext/digest/rmd160/rmd160init.c b/ext/digest/rmd160/rmd160init.c
index c214ca9f33..0839f1b820 100644
--- a/ext/digest/rmd160/rmd160init.c
+++ b/ext/digest/rmd160/rmd160init.c
@@ -30,9 +30,6 @@ Init_rmd160()
rb_require("digest");
-#if 0
- mDigest = rb_define_module("Digest"); /* let rdoc know */
-#endif
mDigest = rb_path2class("Digest");
cDigest_Base = rb_path2class("Digest::Base");
diff --git a/ext/digest/sha1/extconf.rb b/ext/digest/sha1/extconf.rb
index d7e52fe731..e55965d980 100644
--- a/ext/digest/sha1/extconf.rb
+++ b/ext/digest/sha1/extconf.rb
@@ -1,4 +1,3 @@
-# -*- coding: us-ascii -*-
# $RoughId: extconf.rb,v 1.3 2001/08/14 19:54:51 knu Exp $
# $Id$
@@ -11,10 +10,9 @@ $objs = [ "sha1init.#{$OBJEXT}" ]
dir_config("openssl")
pkg_config("openssl")
-require File.expand_path('../../../openssl/deprecation', __FILE__)
if !with_config("bundled-sha1") &&
- have_library("crypto") && OpenSSL.check_func("SHA1_Transform", "openssl/sha.h")
+ have_library("crypto") && have_header("openssl/sha.h")
$objs << "sha1ossl.#{$OBJEXT}"
else
$objs << "sha1.#{$OBJEXT}"
diff --git a/ext/digest/sha1/sha1init.c b/ext/digest/sha1/sha1init.c
index d52eef58b3..06e7378950 100644
--- a/ext/digest/sha1/sha1init.c
+++ b/ext/digest/sha1/sha1init.c
@@ -30,9 +30,6 @@ Init_sha1()
rb_require("digest");
-#if 0
- mDigest = rb_define_module("Digest"); /* let rdoc know */
-#endif
mDigest = rb_path2class("Digest");
cDigest_Base = rb_path2class("Digest::Base");
diff --git a/ext/digest/sha2/extconf.rb b/ext/digest/sha2/extconf.rb
index 5ab2d35af5..025f1bac64 100644
--- a/ext/digest/sha2/extconf.rb
+++ b/ext/digest/sha2/extconf.rb
@@ -1,4 +1,3 @@
-# -*- coding: us-ascii -*-
# $RoughId: extconf.rb,v 1.4 2001/08/14 19:54:51 knu Exp $
# $Id$
@@ -11,11 +10,10 @@ $objs = [ "sha2init.#{$OBJEXT}" ]
dir_config("openssl")
pkg_config("openssl")
-require File.expand_path('../../../openssl/deprecation', __FILE__)
if !with_config("bundled-sha2") &&
have_library("crypto") &&
- %w[SHA256 SHA512].all? {|d| OpenSSL.check_func("#{d}_Transform", "openssl/sha.h")} &&
+ %w[SHA256 SHA512].all? {|d| have_func("#{d}_Transform", "openssl/sha.h")} &&
%w[SHA256 SHA512].all? {|d| have_type("#{d}_CTX", "openssl/sha.h")}
$objs << "sha2ossl.#{$OBJEXT}"
$defs << "-DSHA2_USE_OPENSSL"
diff --git a/ext/digest/sha2/lib/sha2.rb b/ext/digest/sha2/lib/sha2.rb
index 58d12e9b09..3c5bf0c863 100644
--- a/ext/digest/sha2/lib/sha2.rb
+++ b/ext/digest/sha2/lib/sha2.rb
@@ -68,11 +68,11 @@ module Digest
#
# Returns the block length of the digest in bytes.
#
- # Digest::SHA256.new.block_length * 8
+ # Digest::SHA256.new.digest_length * 8
# # => 512
- # Digest::SHA384.new.block_length * 8
+ # Digest::SHA384.new.digest_length * 8
# # => 1024
- # Digest::SHA512.new.block_length * 8
+ # Digest::SHA512.new.digest_length * 8
# # => 1024
def block_length
@sha2.block_length
diff --git a/ext/digest/sha2/sha2.c b/ext/digest/sha2/sha2.c
index 0fe64489ab..0566b93cb7 100644
--- a/ext/digest/sha2/sha2.c
+++ b/ext/digest/sha2/sha2.c
@@ -138,7 +138,7 @@ typedef u_int64_t sha2_word64; /* Exactly 8 bytes */
#define REVERSE32(w,x) { \
sha2_word32 tmp = (w); \
tmp = (tmp >> 16) | (tmp << 16); \
- (x) = ((tmp & (sha2_word32)0xff00ff00UL) >> 8) | ((tmp & (sha2_word32)0x00ff00ffUL) << 8); \
+ (x) = ((tmp & 0xff00ff00UL) >> 8) | ((tmp & 0x00ff00ffUL) << 8); \
}
#define REVERSE64(w,x) { \
sha2_word64 tmp = (w); \
@@ -633,7 +633,7 @@ void SHA256_Final(sha2_byte digest[], SHA256_CTX* context) {
}
/* Clean up state data: */
- MEMSET_BZERO(context, sizeof(*context));
+ MEMSET_BZERO(context, sizeof(context));
usedspace = 0;
}
@@ -653,7 +653,7 @@ char *SHA256_End(SHA256_CTX* context, char buffer[]) {
}
*buffer = (char)0;
} else {
- MEMSET_BZERO(context, sizeof(*context));
+ MEMSET_BZERO(context, sizeof(context));
}
MEMSET_BZERO(digest, SHA256_DIGEST_LENGTH);
return buffer;
@@ -963,7 +963,7 @@ void SHA512_Final(sha2_byte digest[], SHA512_CTX* context) {
}
/* Zero out state data */
- MEMSET_BZERO(context, sizeof(*context));
+ MEMSET_BZERO(context, sizeof(context));
}
char *SHA512_End(SHA512_CTX* context, char buffer[]) {
@@ -982,7 +982,7 @@ char *SHA512_End(SHA512_CTX* context, char buffer[]) {
}
*buffer = (char)0;
} else {
- MEMSET_BZERO(context, sizeof(*context));
+ MEMSET_BZERO(context, sizeof(context));
}
MEMSET_BZERO(digest, SHA512_DIGEST_LENGTH);
return buffer;
@@ -1037,7 +1037,7 @@ void SHA384_Final(sha2_byte digest[], SHA384_CTX* context) {
}
/* Zero out state data */
- MEMSET_BZERO(context, sizeof(*context));
+ MEMSET_BZERO(context, sizeof(context));
}
char *SHA384_End(SHA384_CTX* context, char buffer[]) {
@@ -1056,7 +1056,7 @@ char *SHA384_End(SHA384_CTX* context, char buffer[]) {
}
*buffer = (char)0;
} else {
- MEMSET_BZERO(context, sizeof(*context));
+ MEMSET_BZERO(context, sizeof(context));
}
MEMSET_BZERO(digest, SHA384_DIGEST_LENGTH);
return buffer;
diff --git a/ext/digest/sha2/sha2ossl.c b/ext/digest/sha2/sha2ossl.c
index 34353be8b8..86824e72f4 100644
--- a/ext/digest/sha2/sha2ossl.c
+++ b/ext/digest/sha2/sha2ossl.c
@@ -4,9 +4,7 @@
#define SHA_Finish(bit) \
void SHA##bit##_Finish(SHA##bit##_CTX *ctx, char *buf) \
{ SHA##bit##_Final((unsigned char *)buf, ctx);}
-#ifndef __DragonFly__
#define SHA384_Final SHA512_Final
-#endif
SHA_Finish(256)
SHA_Finish(384)
diff --git a/ext/dl/callback/mkcallback.rb b/ext/dl/callback/mkcallback.rb
index e94a196247..d14072a932 100644
--- a/ext/dl/callback/mkcallback.rb
+++ b/ext/dl/callback/mkcallback.rb
@@ -121,24 +121,28 @@ def foreach_proc_entry
end
def gencallback(ty, calltype, proc_entry, argc, n)
- dltype = DLTYPE[ty]
- ret = dltype[:conv]
- src = <<-EOS
+ <<-EOS
#{calltype == STDCALL ? "\n#ifdef FUNC_STDCALL" : ""}
-static #{dltype[:type]}
-FUNC_#{calltype.upcase}(#{func_name(ty,argc,n,calltype)})(#{(0...argc).collect{|i| "DLSTACK_TYPE stack#{i}"}.join(", ")})
+static #{DLTYPE[ty][:type]}
+FUNC_#{calltype.upcase}(#{func_name(ty,argc,n,calltype)})(#{(0...argc).collect{|i| "DLSTACK_TYPE stack" + i.to_s}.join(", ")})
{
- VALUE #{ret ? "ret, " : ""}cb#{argc > 0 ? ", args[#{argc}]" : ""};
+ VALUE ret, cb#{argc > 0 ? ", args[#{argc}]" : ""};
#{
+ sizeof_voidp = [""].pack('p').size
+ sizeof_long = [0].pack('l!').size
(0...argc).collect{|i|
- "\n args[#{i}] = PTR2NUM(stack#{i});"
- }.join("")
+ if sizeof_voidp == sizeof_long
+ " args[%d] = LONG2NUM(stack%d);" % [i,i]
+ elsif sizeof_voidp == 8 # should get sizeof_long_long...
+ " args[%d] = LL2NUM(stack%d);" % [i,i]
+ else
+ raise "unknown size of void*"
+ end
+ }.join("\n")
}
cb = rb_ary_entry(rb_ary_entry(#{proc_entry}, #{ty}), #{(n * DLSTACK_SIZE) + argc});
- #{ret ? "ret = " : ""}rb_funcall2(cb, rb_dl_cb_call, #{argc}, #{argc > 0 ? 'args' : 'NULL'});
- EOS
- src << " return #{ret % "ret"};\n" if ret
- src << <<-EOS
+ ret = rb_funcall2(cb, rb_dl_cb_call, #{argc}, #{argc > 0 ? 'args' : 'NULL'});
+ return #{DLTYPE[ty][:conv] ? DLTYPE[ty][:conv] % "ret" : ""};
}
#{calltype == STDCALL ? "#endif\n" : ""}
EOS
diff --git a/ext/dl/cfunc.c b/ext/dl/cfunc.c
index 2a96b30bed..8edf102210 100644
--- a/ext/dl/cfunc.c
+++ b/ext/dl/cfunc.c
@@ -2,8 +2,7 @@
* $Id$
*/
-#include <ruby/ruby.h>
-#include <ruby/util.h>
+#include <ruby.h>
#include <errno.h>
#include "dl.h"
diff --git a/ext/dl/cptr.c b/ext/dl/cptr.c
index b315a46186..89dcb942c0 100644
--- a/ext/dl/cptr.c
+++ b/ext/dl/cptr.c
@@ -49,7 +49,6 @@ dlptr_free(void *ptr)
(*(data->free))(data->ptr);
}
}
- xfree(ptr);
}
static size_t
@@ -64,6 +63,15 @@ static const rb_data_type_t dlptr_data_type = {
{dlptr_mark, dlptr_free, dlptr_memsize,},
};
+void
+dlptr_init(VALUE val)
+{
+ struct ptr_data *data;
+
+ TypedData_Get_Struct(val, struct ptr_data, &dlptr_data_type, data);
+ OBJ_TAINT(val);
+}
+
VALUE
rb_dlptr_new2(VALUE klass, void *ptr, long size, freefunc_t func)
{
@@ -75,7 +83,7 @@ rb_dlptr_new2(VALUE klass, void *ptr, long size, freefunc_t func)
data->ptr = ptr;
data->free = func;
data->size = size;
- OBJ_TAINT(val);
+ dlptr_init(val);
return val;
}
@@ -392,10 +400,12 @@ static VALUE
rb_dlptr_inspect(VALUE self)
{
struct ptr_data *data;
+ char str[1024];
TypedData_Get_Struct(self, struct ptr_data, &dlptr_data_type, data);
- return rb_sprintf("#<%"PRIsVALUE":%p ptr=%p size=%ld free=%p>",
- rb_obj_class(self), data, data->ptr, data->size, data->free);
+ snprintf(str, 1023, "#<%s:%p ptr=%p size=%ld free=%p>",
+ rb_class2name(CLASS_OF(self)), data, data->ptr, data->size, data->free);
+ return rb_str_new2(str);
}
/*
diff --git a/ext/dl/dl.c b/ext/dl/dl.c
index 49fa7c81ac..e0617047ec 100644
--- a/ext/dl/dl.c
+++ b/ext/dl/dl.c
@@ -17,53 +17,6 @@ VALUE rb_eDLTypeError;
ID rbdl_id_cdecl;
ID rbdl_id_stdcall;
-#ifndef DLTYPE_SSIZE_T
-# if SIZEOF_SIZE_T == SIZEOF_INT
-# define DLTYPE_SSIZE_T DLTYPE_INT
-# elif SIZEOF_SIZE_T == SIZEOF_LONG
-# define DLTYPE_SSIZE_T DLTYPE_LONG
-# elif defined HAVE_LONG_LONG && SIZEOF_SIZE_T == SIZEOF_LONG_LONG
-# define DLTYPE_SSIZE_T DLTYPE_LONG_LONG
-# endif
-#endif
-#define DLTYPE_SIZE_T (-1*SIGNEDNESS_OF_SIZE_T*DLTYPE_SSIZE_T)
-
-#ifndef DLTYPE_PTRDIFF_T
-# if SIZEOF_PTRDIFF_T == SIZEOF_INT
-# define DLTYPE_PTRDIFF_T DLTYPE_INT
-# elif SIZEOF_PTRDIFF_T == SIZEOF_LONG
-# define DLTYPE_PTRDIFF_T DLTYPE_LONG
-# elif defined HAVE_LONG_LONG && SIZEOF_PTRDIFF_T == SIZEOF_LONG_LONG
-# define DLTYPE_PTRDIFF_T DLTYPE_LONG_LONG
-# endif
-#endif
-
-#ifndef DLTYPE_INTPTR_T
-# if SIZEOF_INTPTR_T == SIZEOF_INT
-# define DLTYPE_INTPTR_T DLTYPE_INT
-# elif SIZEOF_INTPTR_T == SIZEOF_LONG
-# define DLTYPE_INTPTR_T DLTYPE_LONG
-# elif defined HAVE_LONG_LONG && SIZEOF_INTPTR_T == SIZEOF_LONG_LONG
-# define DLTYPE_INTPTR_T DLTYPE_LONG_LONG
-# endif
-#endif
-#define DLTYPE_UINTPTR_T (-DLTYPE_INTPTR_T)
-
-/*
- * call-seq: DL.dlopen(so_lib)
- *
- * An interface to the dynamic linking loader
- *
- * This is a shortcut to DL::Handle.new and takes the same arguments.
- *
- * Example:
- *
- * libc_so = "/lib64/libc.so.6"
- * => "/lib64/libc.so.6"
- *
- * libc = DL.dlopen(libc_so)
- * => #<DL::Handle:0x00000000e05b00>
- */
VALUE
rb_dl_dlopen(int argc, VALUE argv[], VALUE self)
{
@@ -71,7 +24,7 @@ rb_dl_dlopen(int argc, VALUE argv[], VALUE self)
}
/*
- * call-seq: DL.malloc(size)
+ * call-seq: DL.malloc
*
* Allocate +size+ bytes of memory and return the integer memory address
* for the allocated memory.
@@ -118,22 +71,6 @@ rb_dl_free(VALUE self, VALUE addr)
return Qnil;
}
-/*
- * call-seq: DL.dlunwrap(addr)
- *
- * Returns the hexadecimal representation of a memory pointer address +addr+
- *
- * Example:
- *
- * lib = DL.dlopen('/lib64/libc-2.15.so')
- * => #<DL::Handle:0x00000001342460>
- *
- * lib['strcpy'].to_s(16)
- * => "7f59de6dd240"
- *
- * DL.dlunwrap(DL.dlwrap(lib['strcpy'].to_s(16)))
- * => "7f59de6dd240"
- */
VALUE
rb_dl_ptr2value(VALUE self, VALUE addr)
{
@@ -141,19 +78,6 @@ rb_dl_ptr2value(VALUE self, VALUE addr)
return (VALUE)NUM2PTR(addr);
}
-/*
- * call-seq: DL.dlwrap(val)
- *
- * Returns a memory pointer of a function's hexadecimal address location +val+
- *
- * Example:
- *
- * lib = DL.dlopen('/lib64/libc-2.15.so')
- * => #<DL::Handle:0x00000001342460>
- *
- * DL.dlwrap(lib['strcpy'].to_s(16))
- * => 25522520
- */
VALUE
rb_dl_value2ptr(VALUE self, VALUE val)
{
@@ -347,196 +271,106 @@ Init_dl(void)
*/
rb_define_const(rb_mDL, "TYPE_DOUBLE", INT2NUM(DLTYPE_DOUBLE));
- /* Document-const: TYPE_SIZE_T
- *
- * DL::CFunc type - size_t
- */
- rb_define_const(rb_mDL, "TYPE_SIZE_T", INT2NUM(DLTYPE_SIZE_T));
-
- /* Document-const: TYPE_SSIZE_T
- *
- * DL::CFunc type - ssize_t
- */
- rb_define_const(rb_mDL, "TYPE_SSIZE_T", INT2NUM(DLTYPE_SSIZE_T));
-
- /* Document-const: TYPE_PTRDIFF_T
- *
- * DL::CFunc type - ptrdiff_t
- */
- rb_define_const(rb_mDL, "TYPE_PTRDIFF_T", INT2NUM(DLTYPE_PTRDIFF_T));
-
- /* Document-const: TYPE_INTPTR_T
- *
- * DL::CFunc type - intptr_t
- */
- rb_define_const(rb_mDL, "TYPE_INTPTR_T", INT2NUM(DLTYPE_INTPTR_T));
-
- /* Document-const: TYPE_UINTPTR_T
- *
- * DL::CFunc type - uintptr_t
- */
- rb_define_const(rb_mDL, "TYPE_UINTPTR_T", INT2NUM(DLTYPE_UINTPTR_T));
-
/* Document-const: ALIGN_VOIDP
*
- * The alignment size of a void*
+ * The Offset of a struct void* and a void*
*/
rb_define_const(rb_mDL, "ALIGN_VOIDP", INT2NUM(ALIGN_VOIDP));
/* Document-const: ALIGN_CHAR
*
- * The alignment size of a char
+ * The Offset of a struct char and a char
*/
rb_define_const(rb_mDL, "ALIGN_CHAR", INT2NUM(ALIGN_CHAR));
/* Document-const: ALIGN_SHORT
*
- * The alignment size of a short
+ * The Offset of a struct short and a short
*/
rb_define_const(rb_mDL, "ALIGN_SHORT", INT2NUM(ALIGN_SHORT));
/* Document-const: ALIGN_INT
*
- * The alignment size of an int
+ * The Offset of a struct int and a int
*/
rb_define_const(rb_mDL, "ALIGN_INT", INT2NUM(ALIGN_INT));
/* Document-const: ALIGN_LONG
*
- * The alignment size of a long
+ * The Offset of a struct long and a long
*/
rb_define_const(rb_mDL, "ALIGN_LONG", INT2NUM(ALIGN_LONG));
#if HAVE_LONG_LONG
/* Document-const: ALIGN_LONG_LONG
*
- * The alignment size of a long long
+ * The Offset of a struct long long and a long long
*/
rb_define_const(rb_mDL, "ALIGN_LONG_LONG", INT2NUM(ALIGN_LONG_LONG));
#endif
/* Document-const: ALIGN_FLOAT
*
- * The alignment size of a float
+ * The Offset of a struct float and a float
*/
rb_define_const(rb_mDL, "ALIGN_FLOAT", INT2NUM(ALIGN_FLOAT));
/* Document-const: ALIGN_DOUBLE
*
- * The alignment size of a double
+ * The Offset of a struct double and a double
*/
rb_define_const(rb_mDL, "ALIGN_DOUBLE",INT2NUM(ALIGN_DOUBLE));
- /* Document-const: ALIGN_SIZE_T
- *
- * The alignment size of a size_t
- */
- rb_define_const(rb_mDL, "ALIGN_SIZE_T", INT2NUM(ALIGN_OF(size_t)));
-
- /* Document-const: ALIGN_SSIZE_T
- *
- * The alignment size of a ssize_t
- */
- rb_define_const(rb_mDL, "ALIGN_SSIZE_T", INT2NUM(ALIGN_OF(size_t))); /* same as size_t */
-
- /* Document-const: ALIGN_PTRDIFF_T
- *
- * The alignment size of a ptrdiff_t
- */
- rb_define_const(rb_mDL, "ALIGN_PTRDIFF_T", INT2NUM(ALIGN_OF(ptrdiff_t)));
-
- /* Document-const: ALIGN_INTPTR_T
- *
- * The alignment size of a intptr_t
- */
- rb_define_const(rb_mDL, "ALIGN_INTPTR_T", INT2NUM(ALIGN_OF(intptr_t)));
-
- /* Document-const: ALIGN_UINTPTR_T
- *
- * The alignment size of a uintptr_t
- */
- rb_define_const(rb_mDL, "ALIGN_UINTPTR_T", INT2NUM(ALIGN_OF(uintptr_t)));
-
/* Document-const: SIZEOF_VOIDP
*
- * size of a void*
+ * OS Dependent - sizeof(void*)
*/
rb_define_const(rb_mDL, "SIZEOF_VOIDP", INT2NUM(sizeof(void*)));
/* Document-const: SIZEOF_CHAR
*
- * size of a char
+ * OS Dependent - sizeof(char)
*/
rb_define_const(rb_mDL, "SIZEOF_CHAR", INT2NUM(sizeof(char)));
/* Document-const: SIZEOF_SHORT
*
- * size of a short
+ * OS Dependent - sizeof(short)
*/
rb_define_const(rb_mDL, "SIZEOF_SHORT", INT2NUM(sizeof(short)));
/* Document-const: SIZEOF_INT
*
- * size of an int
+ * OS Dependent - sizeof(int)
*/
rb_define_const(rb_mDL, "SIZEOF_INT", INT2NUM(sizeof(int)));
/* Document-const: SIZEOF_LONG
*
- * size of a long
+ * OS Dependent - sizeof(long)
*/
rb_define_const(rb_mDL, "SIZEOF_LONG", INT2NUM(sizeof(long)));
#if HAVE_LONG_LONG
/* Document-const: SIZEOF_LONG_LONG
*
- * size of a long long
+ * OS Dependent - sizeof(long long)
*/
rb_define_const(rb_mDL, "SIZEOF_LONG_LONG", INT2NUM(sizeof(LONG_LONG)));
#endif
/* Document-const: SIZEOF_FLOAT
*
- * size of a float
+ * OS Dependent - sizeof(float)
*/
rb_define_const(rb_mDL, "SIZEOF_FLOAT", INT2NUM(sizeof(float)));
/* Document-const: SIZEOF_DOUBLE
*
- * size of a double
+ * OS Dependent - sizeof(double)
*/
rb_define_const(rb_mDL, "SIZEOF_DOUBLE",INT2NUM(sizeof(double)));
- /* Document-const: SIZEOF_SIZE_T
- *
- * size of a size_t
- */
- rb_define_const(rb_mDL, "SIZEOF_SIZE_T", INT2NUM(sizeof(size_t)));
-
- /* Document-const: SIZEOF_SSIZE_T
- *
- * size of a ssize_t
- */
- rb_define_const(rb_mDL, "SIZEOF_SSIZE_T", INT2NUM(sizeof(size_t))); /* same as size_t */
-
- /* Document-const: SIZEOF_PTRDIFF_T
- *
- * size of a ptrdiff_t
- */
- rb_define_const(rb_mDL, "SIZEOF_PTRDIFF_T", INT2NUM(sizeof(ptrdiff_t)));
-
- /* Document-const: SIZEOF_INTPTR_T
- *
- * size of a intptr_t
- */
- rb_define_const(rb_mDL, "SIZEOF_INTPTR_T", INT2NUM(sizeof(intptr_t)));
-
- /* Document-const: SIZEOF_UINTPTR_T
- *
- * size of a uintptr_t
- */
- rb_define_const(rb_mDL, "SIZEOF_UINTPTR_T", INT2NUM(sizeof(uintptr_t)));
-
rb_define_module_function(rb_mDL, "dlwrap", rb_dl_value2ptr, 1);
rb_define_module_function(rb_mDL, "dlunwrap", rb_dl_ptr2value, 1);
diff --git a/ext/dl/dl.h b/ext/dl/dl.h
index 07adbbf680..90e2131ee2 100644
--- a/ext/dl/dl.h
+++ b/ext/dl/dl.h
@@ -134,21 +134,30 @@ extern VALUE rb_cDLSymbol;
extern VALUE rb_eDLError;
extern VALUE rb_eDLTypeError;
-#define ALIGN_OF(type) offsetof(struct {char align_c; type align_x;}, align_x)
+typedef struct { char c; void *x; } s_voidp;
+typedef struct { char c; short x; } s_short;
+typedef struct { char c; int x; } s_int;
+typedef struct { char c; long x; } s_long;
+typedef struct { char c; float x; } s_float;
+typedef struct { char c; double x; } s_double;
+#if HAVE_LONG_LONG
+typedef struct { char c; LONG_LONG x; } s_long_long;
+#endif
-#define ALIGN_VOIDP ALIGN_OF(void*)
-#define ALIGN_SHORT ALIGN_OF(short)
-#define ALIGN_CHAR ALIGN_OF(char)
-#define ALIGN_INT ALIGN_OF(int)
-#define ALIGN_LONG ALIGN_OF(long)
+#define ALIGN_VOIDP (sizeof(s_voidp) - sizeof(void *))
+#define ALIGN_SHORT (sizeof(s_short) - sizeof(short))
+#define ALIGN_CHAR (1)
+#define ALIGN_INT (sizeof(s_int) - sizeof(int))
+#define ALIGN_LONG (sizeof(s_long) - sizeof(long))
#if HAVE_LONG_LONG
-#define ALIGN_LONG_LONG ALIGN_OF(LONG_LONG)
+#define ALIGN_LONG_LONG (sizeof(s_long_long) - sizeof(LONG_LONG))
#endif
-#define ALIGN_FLOAT ALIGN_OF(float)
-#define ALIGN_DOUBLE ALIGN_OF(double)
+#define ALIGN_FLOAT (sizeof(s_float) - sizeof(float))
+#define ALIGN_DOUBLE (sizeof(s_double) - sizeof(double))
-#define DLALIGN(ptr,offset,align) \
- ((offset) += ((align) - ((uintptr_t)((char *)(ptr) + (offset))) % (align)) % (align))
+#define DLALIGN(ptr,offset,align) {\
+ while( (((unsigned long)((char *)(ptr) + (offset))) % (align)) != 0 ) (offset)++;\
+}
#define DLTYPE_VOID 0
diff --git a/ext/dl/extconf.rb b/ext/dl/extconf.rb
index 53e73c3a8b..8317ac35ad 100644
--- a/ext/dl/extconf.rb
+++ b/ext/dl/extconf.rb
@@ -1,13 +1,7 @@
require 'mkmf'
if RbConfig::CONFIG['GCC'] == 'yes'
- flag = " -fno-defer-pop"
- if have_macro("__clang__")
- $LDFLAGS << flag if try_ldflags(flag)
- else
- $CFLAGS << flag
- end
- $CFLAGS << " -fno-omit-frame-pointer"
+ $CFLAGS << " -fno-defer-pop -fno-omit-frame-pointer"
end
$INSTALLFILES = [
@@ -30,19 +24,6 @@ else
end
if check
- config = File.read(RbConfig.expand(File.join($arch_hdrdir, "ruby/config.h")))
- types = {"SIZE_T"=>"SSIZE_T", "PTRDIFF_T"=>nil, "INTPTR_T"=>nil}
- types.each do |type, signed|
- if /^\#define\s+SIZEOF_#{type}\s+(SIZEOF_(.+)|\d+)/ =~ config
- if size = $2 and size != 'VOIDP'
- size = types.fetch(size) {size}
- $defs << format("-DDLTYPE_%s=DLTYPE_%s", signed||type, size)
- end
- if signed
- check_signedness(type.downcase, "stddef.h")
- end
- end
- end
$defs << %[-DRUBY_VERSION=\\"#{RUBY_VERSION}\\"]
create_makefile("dl")
end
diff --git a/ext/dl/handle.c b/ext/dl/handle.c
index 6b90e089ee..2037ab5760 100644
--- a/ext/dl/handle.c
+++ b/ext/dl/handle.c
@@ -38,7 +38,6 @@ dlhandle_free(void *ptr)
if( dlhandle->ptr && dlhandle->open && dlhandle->enable_close ){
dlclose(dlhandle->ptr);
}
- xfree(ptr);
}
static size_t
@@ -79,8 +78,6 @@ rb_dlhandle_close(VALUE self)
return INT2NUM(ret);
}
rb_raise(rb_eDLError, "dlclose() called too many times");
-
- UNREACHABLE;
}
VALUE
diff --git a/ext/dl/lib/dl.rb b/ext/dl/lib/dl.rb
index 8e615ae718..80d46b685a 100644
--- a/ext/dl/lib/dl.rb
+++ b/ext/dl/lib/dl.rb
@@ -5,10 +5,7 @@ begin
rescue LoadError
end
-warn "DL is deprecated, please use Fiddle"
-
module DL
- # Returns true if DL is using Fiddle, the libffi wrapper.
def self.fiddle?
Object.const_defined?(:Fiddle)
end
diff --git a/ext/dl/lib/dl/cparser.rb b/ext/dl/lib/dl/cparser.rb
index e70e0f1dc1..210f953471 100644
--- a/ext/dl/lib/dl/cparser.rb
+++ b/ext/dl/lib/dl/cparser.rb
@@ -1,13 +1,5 @@
module DL
- # Methods for parsing C struct and C prototype signatures.
module CParser
- # Parses a C struct's members
- #
- # Example:
- #
- # parse_struct_signature(['int i', 'char c'])
- # => [[DL::TYPE_INT, DL::TYPE_CHAR], ["i", "c"]]
- #
def parse_struct_signature(signature, tymap=nil)
if( signature.is_a?(String) )
signature = signature.split(/\s*,\s*/)
@@ -43,16 +35,6 @@ module DL
return tys, mems
end
- # Parses a C prototype signature
- #
- # Example:
- #
- # include DL::CParser
- # => Object
- #
- # parse_signature('double sum(double, double)')
- # => ["sum", DL::TYPE_DOUBLE, [DL::TYPE_DOUBLE, DL::TYPE_DOUBLE]]
- #
def parse_signature(signature, tymap=nil)
tymap ||= {}
signature = signature.gsub(/\s+/, " ").strip
@@ -74,25 +56,6 @@ module DL
end
end
- # Given a String of C type +ty+, return the corresponding DL constant.
- #
- # +ty+ can also accept an Array of C type Strings, and will returned in a
- # corresponding Array.
- #
- # If Hash +tymap+ is provided, +ty+ is expected to be the key, and the
- # value will be the C type to be looked up.
- #
- # Example:
- #
- # parse_ctype('int')
- # => DL::TYPE_INT
- #
- # parse_ctype('double')
- # => DL::TYPE_DOUBLE
- #
- # parse_ctype('unsigned char')
- # => -DL::TYPE_CHAR
- #
def parse_ctype(ty, tymap=nil)
tymap ||= {}
case ty
@@ -132,16 +95,6 @@ module DL
return TYPE_FLOAT
when "double"
return TYPE_DOUBLE
- when "size_t"
- return TYPE_SIZE_T
- when "ssize_t"
- return TYPE_SSIZE_T
- when "ptrdiff_t"
- return TYPE_PTRDIFF_T
- when "intptr_t"
- return TYPE_INTPTR_T
- when "uintptr_t"
- return TYPE_UINTPTR_T
when /\*/, /\[\s*\]/
return TYPE_VOIDP
else
diff --git a/ext/dl/lib/dl/func.rb b/ext/dl/lib/dl/func.rb
index 543711f651..3c2245f413 100644
--- a/ext/dl/lib/dl/func.rb
+++ b/ext/dl/lib/dl/func.rb
@@ -11,50 +11,13 @@ module DL
include DL
include ValueUtil
- if DL.fiddle?
- # :stopdoc:
- CALL_TYPE_TO_ABI = Hash.new { |h, k|
- raise RuntimeError, "unsupported call type: #{k}"
- }.merge({ :stdcall =>
- (Fiddle::Function::STDCALL rescue Fiddle::Function::DEFAULT),
- :cdecl => Fiddle::Function::DEFAULT,
- nil => Fiddle::Function::DEFAULT
- }).freeze
- private_constant :CALL_TYPE_TO_ABI
- # :startdoc:
-
- def self.call_type_to_abi(call_type) # :nodoc:
- CALL_TYPE_TO_ABI[call_type]
- end
- private_class_method :call_type_to_abi
-
- class FiddleClosureCFunc < Fiddle::Closure # :nodoc: all
- def initialize ctype, arg, abi, name
- @name = name
- super(ctype, arg, abi)
- end
- def name
- @name
- end
- def ptr
- to_i
- end
- end
- private_constant :FiddleClosureCFunc
-
- def self.class_fiddle_closure_cfunc # :nodoc:
- FiddleClosureCFunc
- end
- private_class_method :class_fiddle_closure_cfunc
- end
-
def initialize cfunc, argtypes, abi = nil, &block
if DL.fiddle?
- abi ||= CALL_TYPE_TO_ABI[(cfunc.calltype rescue nil)]
+ abi ||= Fiddle::Function::DEFAULT
if block_given?
- @cfunc = Class.new(FiddleClosureCFunc) {
+ @cfunc = Class.new(Fiddle::Closure) {
define_method(:call, block)
- }.new(cfunc.ctype, argtypes, abi, cfunc.name)
+ }.new(cfunc.ctype, argtypes)
else
@cfunc = cfunc
end
@@ -92,9 +55,6 @@ module DL
super
else
funcs = []
- if $SAFE >= 1 && args.any? { |x| x.tainted? }
- raise SecurityError, "tainted parameter not allowed"
- end
_args = wrap_args(args, @stack.types, funcs, &block)
r = @cfunc.call(@stack.pack(_args))
funcs.each{|f| f.unbind_at_call()}
@@ -116,25 +76,20 @@ module DL
def bind(&block)
if DL.fiddle?
- @cfunc = Class.new(FiddleClosureCFunc) {
- def initialize ctype, args, abi, name, block
- super(ctype, args, abi, name)
+ @cfunc = Class.new(Fiddle::Closure) {
+ def initialize ctype, args, block
+ super(ctype, args)
@block = block
end
def call *args
@block.call(*args)
end
- }.new(@cfunc.ctype, @args, abi, name, block)
- @ptr = @cfunc
- return nil
+ }.new(@cfunc.ctype, @args, block)
else
if( !block )
raise(RuntimeError, "block must be given.")
end
- unless block.lambda?
- block = Class.new(self.class){define_method(:call, block); def initialize(obj); obj.instance_variables.each{|s| instance_variable_set(s, obj.instance_variable_get(s))}; end}.new(self).method(:call)
- end
if( @cfunc.ptr == 0 )
cb = Proc.new{|*args|
ary = @stack.unpack(args)
@@ -163,25 +118,6 @@ module DL
end
def unbind()
- if DL.fiddle? then
- if @cfunc.kind_of?(Fiddle::Closure) and @cfunc.ptr != 0 then
- call_type = case abi
- when CALL_TYPE_TO_ABI[nil]
- nil
- when CALL_TYPE_TO_ABI[:stdcall]
- :stdcall
- else
- raise(RuntimeError, "unsupported abi: #{abi}")
- end
- @cfunc = CFunc.new(0, @cfunc.ctype, name, call_type)
- return 0
- elsif @cfunc.ptr != 0 then
- @cfunc.ptr = 0
- return 0
- else
- return nil
- end
- end
if( @cfunc.ptr != 0 )
case @cfunc.calltype
when :cdecl
diff --git a/ext/dl/lib/dl/import.rb b/ext/dl/lib/dl/import.rb
index 6f157ccf28..eec65cdfd6 100644
--- a/ext/dl/lib/dl/import.rb
+++ b/ext/dl/lib/dl/import.rb
@@ -79,7 +79,6 @@ module DL
end
def sizeof(ty)
- @type_alias ||= nil
case ty
when String
ty = parse_ctype(ty, @type_alias).abs()
@@ -129,7 +128,6 @@ module DL
private :parse_bind_options
def extern(signature, *opts)
- @type_alias ||= nil
symname, ctype, argtype = parse_signature(signature, @type_alias)
opt = parse_bind_options(opts)
f = import_function(symname, ctype, argtype, opt[:call_type])
@@ -152,7 +150,6 @@ module DL
end
def bind(signature, *opts, &blk)
- @type_alias ||= nil
name, ctype, argtype = parse_signature(signature, @type_alias)
h = parse_bind_options(opts)
case h[:callback_type]
@@ -182,20 +179,12 @@ module DL
f
end
- # Creates a class to wrap the C struct described by +signature+.
- #
- # MyStruct = struct ['int i', 'char c']
def struct(signature)
- @type_alias ||= nil
tys, mems = parse_struct_signature(signature, @type_alias)
DL::CStructBuilder.create(CStruct, tys, mems)
end
- # Creates a class to wrap the C union described by +signature+.
- #
- # MyUnion = union ['int i', 'char c']
def union(signature)
- @type_alias ||= nil
tys, mems = parse_struct_signature(signature, @type_alias)
DL::CStructBuilder.create(CUnion, tys, mems)
end
@@ -221,8 +210,7 @@ module DL
end
def handler
- defined?(@handler) or raise "call dlload before importing symbols and functions"
- @handler
+ @handler or raise "call dlload before importing symbols and functions"
end
def import_symbol(name)
@@ -243,13 +231,11 @@ module DL
def bind_function(name, ctype, argtype, call_type = nil, &block)
if DL.fiddle?
- klass = Function.instance_eval { class_fiddle_closure_cfunc }
- abi = Function.instance_eval { call_type_to_abi(call_type) }
- closure = Class.new(klass) {
+ closure = Class.new(Fiddle::Closure) {
define_method(:call, block)
- }.new(ctype, argtype, abi, name)
+ }.new(ctype, argtype)
- Function.new(closure, argtype, abi)
+ Function.new(closure, argtype)
else
f = Function.new(CFunc.new(0, ctype, name, call_type || :cdecl), argtype)
f.bind(&block)
diff --git a/ext/dl/lib/dl/struct.rb b/ext/dl/lib/dl/struct.rb
index e2d91a6d14..b8becca6b6 100644
--- a/ext/dl/lib/dl/struct.rb
+++ b/ext/dl/lib/dl/struct.rb
@@ -1,52 +1,20 @@
require 'dl'
-require 'dl/value'
require 'dl/pack.rb'
module DL
- # C struct shell
class CStruct
- # accessor to DL::CStructEntity
def CStruct.entity_class()
CStructEntity
end
end
- # C union shell
class CUnion
- # accessor to DL::CUnionEntity
def CUnion.entity_class()
CUnionEntity
end
end
- # Used to construct C classes (CUnion, CStruct, etc)
- #
- # DL::Importer#struct and DL::Importer#union wrap this functionality in an
- # easy-to-use manner.
module CStructBuilder
- # Construct a new class given a C:
- # * class +klass+ (CUnion, CStruct, or other that provide an
- # #entity_class)
- # * +types+ (DL:TYPE_INT, DL::TYPE_SIZE_T, etc., see the C types
- # constants)
- # * corresponding +members+
- #
- # DL::Importer#struct and DL::Importer#union wrap this functionality in an
- # easy-to-use manner.
- #
- # Example:
- #
- # require 'dl/struct'
- # require 'dl/cparser'
- #
- # include DL::CParser
- #
- # types, members = parse_struct_signature(['int i','char c'])
- #
- # MyStruct = DL::CStructBuilder.create(CUnion, types, members)
- #
- # obj = MyStruct.allocate
- #
def create(klass, types, members)
new_class = Class.new(klass){
define_method(:initialize){|addr|
@@ -75,76 +43,75 @@ module DL
module_function :create
end
- # A C struct wrapper
- class CStructEntity < (DL.fiddle? ? Fiddle::Pointer : CPtr)
+ class CStructEntity < CPtr
include PackInfo
include ValueUtil
- # Allocates a C struct the +types+ provided. The C function +func+ is
- # called when the instance is garbage collected.
def CStructEntity.malloc(types, func = nil)
addr = DL.malloc(CStructEntity.size(types))
CStructEntity.new(addr, types, func)
end
- # Given +types+, returns the offset for the packed sizes of those types
- #
- # DL::CStructEntity.size([DL::TYPE_DOUBLE, DL::TYPE_INT, DL::TYPE_CHAR,
- # DL::TYPE_VOIDP])
- # => 24
def CStructEntity.size(types)
offset = 0
-
- max_align = types.map { |type, count = 1|
- last_offset = offset
-
- align = PackInfo::ALIGN_MAP[type]
- offset = PackInfo.align(last_offset, align) +
- (PackInfo::SIZE_MAP[type] * count)
-
- align
- }.max
-
- PackInfo.align(offset, max_align)
+ max_align = 0
+ types.each_with_index{|t,i|
+ orig_offset = offset
+ if( t.is_a?(Array) )
+ align = PackInfo::ALIGN_MAP[t[0]]
+ offset = PackInfo.align(orig_offset, align)
+ size = offset - orig_offset
+ offset += (PackInfo::SIZE_MAP[t[0]] * t[1])
+ else
+ align = PackInfo::ALIGN_MAP[t]
+ offset = PackInfo.align(orig_offset, align)
+ size = offset - orig_offset
+ offset += PackInfo::SIZE_MAP[t]
+ end
+ if (max_align < align)
+ max_align = align
+ end
+ }
+ offset = PackInfo.align(offset, max_align)
+ offset
end
- # Wraps the C pointer +addr+ as a C struct with the given +types+. The C
- # function +func+ is called when the instance is garbage collected.
- #
- # See also DL::CPtr.new
def initialize(addr, types, func = nil)
set_ctypes(types)
super(addr, @size, func)
end
- # Set the names of the +members+ in this C struct
def assign_names(members)
@members = members
end
- # Given +types+, calculate the offsets and sizes for the types in the
- # struct.
def set_ctypes(types)
@ctypes = types
@offset = []
offset = 0
-
- max_align = types.map { |type, count = 1|
+ max_align = 0
+ types.each_with_index{|t,i|
orig_offset = offset
- align = ALIGN_MAP[type]
+ if( t.is_a?(Array) )
+ align = ALIGN_MAP[t[0]]
+ else
+ align = ALIGN_MAP[t]
+ end
offset = PackInfo.align(orig_offset, align)
-
- @offset << offset
-
- offset += (SIZE_MAP[type] * count)
-
- align
- }.max
-
- @size = PackInfo.align(offset, max_align)
+ @offset[i] = offset
+ if( t.is_a?(Array) )
+ offset += (SIZE_MAP[t[0]] * t[1])
+ else
+ offset += SIZE_MAP[t]
+ end
+ if (max_align < align)
+ max_align = align
+ end
+ }
+ offset = PackInfo.align(offset, max_align)
+ @size = offset
end
- # Fetch struct member +name+
def [](name)
idx = @members.index(name)
if( idx.nil? )
@@ -178,7 +145,6 @@ module DL
end
end
- # Set struct member +name+, to value +val+
def []=(name, val)
idx = @members.index(name)
if( idx.nil? )
@@ -198,38 +164,48 @@ module DL
end
end
- def to_s() # :nodoc:
+ def to_s()
super(@size)
end
end
- # A C union wrapper
class CUnionEntity < CStructEntity
include PackInfo
- # Allocates a C union the +types+ provided. The C function +func+ is
- # called when the instance is garbage collected.
def CUnionEntity.malloc(types, func=nil)
addr = DL.malloc(CUnionEntity.size(types))
CUnionEntity.new(addr, types, func)
end
- # Given +types+, returns the size needed for the union.
- #
- # DL::CUnionEntity.size([DL::TYPE_DOUBLE, DL::TYPE_INT, DL::TYPE_CHAR,
- # DL::TYPE_VOIDP])
- # => 8
def CUnionEntity.size(types)
- types.map { |type, count = 1|
- PackInfo::SIZE_MAP[type] * count
- }.max
+ size = 0
+ types.each_with_index{|t,i|
+ if( t.is_a?(Array) )
+ tsize = PackInfo::SIZE_MAP[t[0]] * t[1]
+ else
+ tsize = PackInfo::SIZE_MAP[t]
+ end
+ if( tsize > size )
+ size = tsize
+ end
+ }
end
- # Given +types+, calculate the necessary offset and for each union member
def set_ctypes(types)
@ctypes = types
- @offset = Array.new(types.length, 0)
- @size = self.class.size types
+ @offset = []
+ @size = 0
+ types.each_with_index{|t,i|
+ @offset[i] = 0
+ if( t.is_a?(Array) )
+ size = SIZE_MAP[t[0]] * t[1]
+ else
+ size = SIZE_MAP[t]
+ end
+ if( size > @size )
+ @size = size
+ end
+ }
end
end
end
diff --git a/ext/dl/lib/dl/types.rb b/ext/dl/lib/dl/types.rb
index d5724e407b..3dfa40807a 100644
--- a/ext/dl/lib/dl/types.rb
+++ b/ext/dl/lib/dl/types.rb
@@ -40,7 +40,11 @@ module DL
typealias "UINT", "unsigned int"
typealias "ULONG", "unsigned long"
typealias "UCHAR", "unsigned char"
- typealias "HANDLE", "uintptr_t"
+ if [nil].pack('p').bytesize == 8
+ typealias "HANDLE", "unsigned long long"
+ else
+ typealias "HANDLE", "unsigned long"
+ end
typealias "PHANDLE", "void*"
typealias "PVOID", "void*"
typealias "LPCSTR", "char*"
diff --git a/ext/dl/lib/dl/value.rb b/ext/dl/lib/dl/value.rb
index 147d9d120a..e99e3cf3bf 100644
--- a/ext/dl/lib/dl/value.rb
+++ b/ext/dl/lib/dl/value.rb
@@ -46,8 +46,6 @@ module DL
end
def wrap_arg(arg, ty, funcs = [], &block)
- require 'dl/func'
-
funcs ||= []
case arg
when nil
diff --git a/ext/dl/win32/extconf.rb b/ext/dl/win32/extconf.rb
index 03590f24fa..a72ca49c06 100644
--- a/ext/dl/win32/extconf.rb
+++ b/ext/dl/win32/extconf.rb
@@ -1,3 +1,3 @@
-if compiled?('dl') and !compiled?('fiddle') and $mswin||$bccwin||$mingw||$cygwin
+if compiled?('dl') and $mswin||$bccwin||$mingw||$cygwin
create_makefile('win32')
end
diff --git a/ext/dl/win32/lib/Win32API.rb b/ext/dl/win32/lib/Win32API.rb
index 4d7d4887a5..f18cec5749 100644
--- a/ext/dl/win32/lib/Win32API.rb
+++ b/ext/dl/win32/lib/Win32API.rb
@@ -7,7 +7,6 @@ require 'dl'
class Win32API
DLL = {}
TYPEMAP = {"0" => DL::TYPE_VOID, "S" => DL::TYPE_VOIDP, "I" => DL::TYPE_LONG}
- POINTER_TYPE = DL::SIZEOF_VOIDP == DL::SIZEOF_LONG_LONG ? 'q*' : 'l!*'
def initialize(dllname, func, import, export = "0", calltype = :stdcall)
@proto = [import].join.tr("VPpNnLlIi", "0SSI").sub(/^(.)0*$/, '\1')
@@ -20,7 +19,7 @@ class Win32API
def call(*args)
import = @proto.split("")
args.each_with_index do |x, i|
- args[i], = [x == 0 ? nil : x].pack("p").unpack(POINTER_TYPE) if import[i] == "S"
+ args[i], = [x == 0 ? nil : x].pack("p").unpack("l!*") if import[i] == "S"
args[i], = [x].pack("I").unpack("i") if import[i] == "I"
end
ret, = @func.call(args)
diff --git a/ext/etc/etc.c b/ext/etc/etc.c
index b9aceffcad..2bd2e30747 100644
--- a/ext/etc/etc.c
+++ b/ext/etc/etc.c
@@ -40,17 +40,9 @@ char *getenv();
#endif
char *getlogin();
-/* call-seq:
- * getlogin -> String
- *
- * Returns the short user name of the currently logged in user.
- * Unfortunately, it is often rather easy to fool ::getlogin.
- *
- * Avoid ::getlogin for security-related purposes.
- *
- * If ::getlogin fails, try ::getpwuid.
- *
- * See the unix manpage for <code>getpwuid(3)</code> for more detail.
+/* Returns the short user name of the currently logged in user.
+ * Unfortunately, it is often rather easy to fool getlogin().
+ * Avoid getlogin() for security-related purposes.
*
* e.g.
* Etc.getlogin -> 'guest'
@@ -68,15 +60,8 @@ etc_getlogin(VALUE obj)
login = getenv("USER");
#endif
- if (login) {
-#ifdef _WIN32
- rb_encoding *extenc = rb_utf8_encoding();
-#else
- rb_encoding *extenc = rb_locale_encoding();
-#endif
- return rb_external_str_new_with_enc(login, strlen(login), extenc);
- }
-
+ if (login)
+ return rb_tainted_str_new2(login);
return Qnil;
}
@@ -129,22 +114,14 @@ setup_passwd(struct passwd *pwd)
}
#endif
-/* call-seq:
- * getpwuid(uid) -> Passwd
- *
- * Returns the /etc/passwd information for the user with the given integer +uid+.
- *
- * The information is returned as a Passwd struct.
- *
- * If +uid+ is omitted, the value from <code>Passwd[:uid]</code> is returned
- * instead.
- *
- * See the unix manpage for <code>getpwuid(3)</code> for more detail.
+/* Returns the /etc/passwd information for the user with specified integer
+ * user id (uid).
*
- * === Example:
+ * The information is returned as a Struct::Passwd; see getpwent above for
+ * details.
*
- * Etc.getpwuid(0)
- * #=> #<struct Struct::Passwd name="root", passwd="x", uid=0, gid=0, gecos="root",dir="/root", shell="/bin/bash">
+ * e.g. * Etc.getpwuid(0) -> #<struct Struct::Passwd name="root",
+ * passwd="x", uid=0, gid=0, gecos="root",dir="/root", shell="/bin/bash">
*/
static VALUE
etc_getpwuid(int argc, VALUE *argv, VALUE obj)
@@ -169,20 +146,13 @@ etc_getpwuid(int argc, VALUE *argv, VALUE obj)
#endif
}
-/* call-seq:
- * getpwnam(name) -> Passwd
+/* Returns the /etc/passwd information for the user with specified login name.
*
- * Returns the /etc/passwd information for the user with specified login
- * +name+.
+ * The information is returned as a Struct::Passwd; see getpwent above for
+ * details.
*
- * The information is returned as a Passwd struct.
- *
- * See the unix manpage for <code>getpwnam(3)</code> for more detail.
- *
- * === Example:
- *
- * Etc.getpwnam('root')
- * #=> #<struct Struct::Passwd name="root", passwd="x", uid=0, gid=0, gecos="root",dir="/root", shell="/bin/bash">
+ * e.g. * Etc.getpwnam('root') -> #<struct Struct::Passwd name="root",
+ * passwd="x", uid=0, gid=0, gecos="root",dir="/root", shell="/bin/bash">
*/
static VALUE
etc_getpwnam(VALUE obj, VALUE nam)
@@ -192,7 +162,7 @@ etc_getpwnam(VALUE obj, VALUE nam)
SafeStringValue(nam);
pwd = getpwnam(RSTRING_PTR(nam));
- if (pwd == 0) rb_raise(rb_eArgError, "can't find user for %"PRIsVALUE, nam);
+ if (pwd == 0) rb_raise(rb_eArgError, "can't find user for %s", RSTRING_PTR(nam));
return setup_passwd(pwd);
#else
return Qnil;
@@ -204,7 +174,6 @@ static int passwd_blocking = 0;
static VALUE
passwd_ensure(void)
{
- endpwent();
passwd_blocking = (int)Qfalse;
return Qnil;
}
@@ -218,6 +187,7 @@ passwd_iterate(void)
while (pw = getpwent()) {
rb_yield(setup_passwd(pw));
}
+ endpwent();
return Qnil;
}
@@ -232,16 +202,11 @@ each_passwd(void)
}
#endif
-/* call-seq:
- * Etc.passwd { |struct| block } -> Passwd
- * Etc.passwd -> Passwd
- *
- * Provides a convenient Ruby iterator which executes a block for each entry
+/* Provides a convenient Ruby iterator which executes a block for each entry
* in the /etc/passwd file.
*
- * The code block is passed an Passwd struct.
- *
- * See ::getpwent above for details.
+ * The code block is passed an Struct::Passwd struct; see getpwent above for
+ * details.
*
* Example:
*
@@ -269,17 +234,11 @@ etc_passwd(VALUE obj)
return Qnil;
}
-/* call-seq:
- * Etc::Passwd.each { |struct| block } -> Passwd
- * Etc::Passwd.each -> Enumerator
- *
- * Iterates for each entry in the /etc/passwd file if a block is given.
- *
- * If no block is given, returns the Enumerator.
+/* Iterates for each entry in the /etc/passwd file if a block is given.
+ * If no block is given, returns the enumerator.
*
- * The code block is passed an Passwd struct.
- *
- * See ::getpwent above for details.
+ * The code block is passed an Struct::Passwd struct; see getpwent above for
+ * details.
*
* Example:
*
@@ -304,7 +263,7 @@ etc_each_passwd(VALUE obj)
}
/* Resets the process of reading the /etc/passwd file, so that the next call
- * to ::getpwent will return the first entry again.
+ * to getpwent will return the first entry again.
*/
static VALUE
etc_setpwent(VALUE obj)
@@ -316,7 +275,7 @@ etc_setpwent(VALUE obj)
}
/* Ends the process of scanning through the /etc/passwd file begun with
- * ::getpwent, and closes the file.
+ * getpwent, and closes the file.
*/
static VALUE
etc_endpwent(VALUE obj)
@@ -327,16 +286,31 @@ etc_endpwent(VALUE obj)
return Qnil;
}
-/* Returns an entry from the /etc/passwd file.
+/* Returns an entry from the /etc/passwd file. The first time it is called it
+ * opens the file and returns the first entry; each successive call returns
+ * the next entry, or nil if the end of the file has been reached.
+ *
+ * To close the file when processing is complete, call endpwent.
+ *
+ * Each entry is returned as a Struct::Passwd:
*
- * The first time it is called it opens the file and returns the first entry;
- * each successive call returns the next entry, or +nil+ if the end of the file
- * has been reached.
+ * - Passwd#name contains the short login name of the user as a String.
*
- * To close the file when processing is complete, call ::endpwent.
+ * - Passwd#passwd contains the encrypted password of the user as a String.
+ * an 'x' is returned if shadow passwords are in use. An '*' is returned
+ * if the user cannot log in using a password.
*
- * Each entry is returned as a Passwd struct.
+ * - Passwd#uid contains the integer user ID (uid) of the user.
*
+ * - Passwd#gid contains the integer group ID (gid) of the user's primary group.
+ *
+ * - Passwd#gecos contains a longer String description of the user, such as
+ * a full name. Some Unix systems provide structured information in the
+ * gecos field, but this is system-dependent.
+ *
+ * - Passwd#dir contains the path to the home directory of the user as a String.
+ *
+ * - Passwd#shell contains the path to the login shell of the user as a String.
*/
static VALUE
etc_getpwent(VALUE obj)
@@ -374,20 +348,14 @@ setup_group(struct group *grp)
}
#endif
-/* call-seq:
- * getgrgid(group_id) -> Group
- *
- * Returns information about the group with specified integer +group_id+,
+/* Returns information about the group with specified integer group id (gid),
* as found in /etc/group.
*
- * The information is returned as a Group struct.
+ * The information is returned as a Struct::Group; see getgrent above for
+ * details.
*
- * See the unix manpage for <code>getgrgid(3)</code> for more detail.
- *
- * === Example:
- *
- * Etc.getgrgid(100)
- * #=> #<struct Struct::Group name="users", passwd="x", gid=100, mem=["meta", "root"]>
+ * e.g. Etc.getgrgid(100) -> #<struct Struct::Group name="users", passwd="x",
+ * gid=100, mem=["meta", "root"]>
*
*/
static VALUE
@@ -413,20 +381,14 @@ etc_getgrgid(int argc, VALUE *argv, VALUE obj)
#endif
}
-/* call-seq:
- * getgrnam(name) -> Group
- *
- * Returns information about the group with specified +name+, as found in
- * /etc/group.
+/* Returns information about the group with specified String name, as found
+ * in /etc/group.
*
- * The information is returned as a Group struct.
+ * The information is returned as a Struct::Group; see getgrent above for
+ * details.
*
- * See the unix manpage for <code>getgrnam(3)</code> for more detail.
- *
- * === Example:
- *
- * Etc.getgrnam('users')
- * #=> #<struct Struct::Group name="users", passwd="x", gid=100, mem=["meta", "root"]>
+ * e.g. Etc.getgrnam('users') -> #<struct Struct::Group name="users",
+ * passwd="x", gid=100, mem=["meta", "root"]>
*
*/
static VALUE
@@ -438,7 +400,7 @@ etc_getgrnam(VALUE obj, VALUE nam)
rb_secure(4);
SafeStringValue(nam);
grp = getgrnam(RSTRING_PTR(nam));
- if (grp == 0) rb_raise(rb_eArgError, "can't find group for %"PRIsVALUE, nam);
+ if (grp == 0) rb_raise(rb_eArgError, "can't find group for %s", RSTRING_PTR(nam));
return setup_group(grp);
#else
return Qnil;
@@ -450,12 +412,10 @@ static int group_blocking = 0;
static VALUE
group_ensure(void)
{
- endgrent();
group_blocking = (int)Qfalse;
return Qnil;
}
-
static VALUE
group_iterate(void)
{
@@ -465,6 +425,7 @@ group_iterate(void)
while (pw = getgrent()) {
rb_yield(setup_group(pw));
}
+ endgrent();
return Qnil;
}
@@ -482,9 +443,8 @@ each_group(void)
/* Provides a convenient Ruby iterator which executes a block for each entry
* in the /etc/group file.
*
- * The code block is passed an Group struct.
- *
- * See ::getgrent above for details.
+ * The code block is passed an Struct::Group struct; see getgrent above for
+ * details.
*
* Example:
*
@@ -513,15 +473,11 @@ etc_group(VALUE obj)
}
#ifdef HAVE_GETGRENT
-/* call-seq:
- * Etc::Group.each { |group| block } -> obj
- * Etc::Group.each -> Enumerator
+/* Iterates for each entry in the /etc/group file if a block is given.
+ * If no block is given, returns the enumerator.
*
- * Iterates for each entry in the /etc/group file if a block is given.
- *
- * If no block is given, returns the Enumerator.
- *
- * The code block is passed a Group struct.
+ * The code block is passed an Struct::Group struct; see getpwent above for
+ * details.
*
* Example:
*
@@ -545,7 +501,7 @@ etc_each_group(VALUE obj)
#endif
/* Resets the process of reading the /etc/group file, so that the next call
- * to ::getgrent will return the first entry again.
+ * to getgrent will return the first entry again.
*/
static VALUE
etc_setgrent(VALUE obj)
@@ -557,7 +513,7 @@ etc_setgrent(VALUE obj)
}
/* Ends the process of scanning through the /etc/group file begun by
- * ::getgrent, and closes the file.
+ * getgrent, and closes the file.
*/
static VALUE
etc_endgrent(VALUE obj)
@@ -568,15 +524,25 @@ etc_endgrent(VALUE obj)
return Qnil;
}
-/* Returns an entry from the /etc/group file.
+/* Returns an entry from the /etc/group file. The first time it is called it
+ * opens the file and returns the first entry; each successive call returns
+ * the next entry, or nil if the end of the file has been reached.
+ *
+ * To close the file when processing is complete, call endgrent.
+ *
+ * Each entry is returned as a Struct::Group:
*
- * The first time it is called it opens the file and returns the first entry;
- * each successive call returns the next entry, or +nil+ if the end of the file
- * has been reached.
+ * - Group#name contains the name of the group as a String.
*
- * To close the file when processing is complete, call ::endgrent.
+ * - Group#passwd contains the encrypted password as a String. An 'x' is
+ * returned if password access to the group is not available; an empty
+ * string is returned if no password is needed to obtain membership of
+ * the group.
*
- * Each entry is returned as a Group struct
+ * - Group#gid contains the group's numeric ID as an integer.
+ *
+ * - Group#mem is an Array of Strings containing the short login names of the
+ * members of the group.
*/
static VALUE
etc_getgrent(VALUE obj)
@@ -601,10 +567,6 @@ VALUE rb_w32_conv_from_wchar(const WCHAR *wstr, rb_encoding *enc);
/*
* Returns system configuration directory.
- *
- * This is typically "/etc", but is modified by the prefix used when Ruby was
- * compiled. For example, if Ruby is built and installed in /usr/local, returns
- * "/usr/local/etc".
*/
static VALUE
etc_sysconfdir(VALUE obj)
@@ -617,7 +579,7 @@ etc_sysconfdir(VALUE obj)
}
/*
- * Returns system temporary directory; typically "/tmp".
+ * Returns system temporary directory.
*/
static VALUE
etc_systmpdir(void)
@@ -636,30 +598,9 @@ etc_systmpdir(void)
}
/*
- * The Etc module provides access to information typically stored in
- * files in the /etc directory on Unix systems.
- *
- * The information accessible consists of the information found in the
- * /etc/passwd and /etc/group files, plus information about the system's
- * temporary directory (/tmp) and configuration directory (/etc).
- *
- * The Etc module provides a more reliable way to access information about
- * the logged in user than environment variables such as +$USER+.
- *
- * == Example:
- *
- * require 'etc'
- *
- * login = Etc.getlogin
- * info = Etc.getpwnam(login)
- * username = info.gecos.split(/,/).first
- * puts "Hello #{username}, I see your login name is #{login}"
- *
- * Note that the methods provided by this module are not always secure.
- * It should be used for informational purposes, and not for security.
+ * The etc module provides access to information from the running OS.
*
- * All operations defined in this module are class methods, so that you can
- * include the Etc module into your class.
+ * Documented by mathew <meta@pobox.com>.
*/
void
Init_etc(void)
@@ -710,45 +651,6 @@ Init_etc(void)
"expire",
#endif
NULL);
- /* Define-const: Passwd
- *
- * Passwd is a Struct that contains the following members:
- *
- * name::
- * contains the short login name of the user as a String.
- * passwd::
- * contains the encrypted password of the user as a String.
- * an 'x' is returned if shadow passwords are in use. An '*' is returned
- * if the user cannot log in using a password.
- * uid::
- * contains the integer user ID (uid) of the user.
- * gid::
- * contains the integer group ID (gid) of the user's primary group.
- * dir::
- * contains the path to the home directory of the user as a String.
- * shell::
- * contains the path to the login shell of the user as a String.
- *
- * === The following members below are optional, and must be compiled with special flags:
- *
- * gecos::
- * contains a longer String description of the user, such as
- * a full name. Some Unix systems provide structured information in the
- * gecos field, but this is system-dependent.
- * must be compiled with +HAVE_ST_PW_GECOS+
- * change::
- * password change time(integer) must be compiled with +HAVE_ST_PW_CHANGE+
- * quota::
- * quota value(integer) must be compiled with +HAVE_ST_PW_QUOTA+
- * age::
- * password age(integer) must be compiled with +HAVE_ST_PW_AGE+
- * class::
- * user access class(string) must be compiled with +HAVE_ST_PW_CLASS+
- * comment::
- * comment(string) must be compiled with +HAVE_ST_PW_COMMENT+
- * expire::
- * account expiration time(integer) must be compiled with +HAVE_ST_PW_EXPIRE+
- */
rb_define_const(mEtc, "Passwd", sPasswd);
rb_extend_object(sPasswd, rb_mEnumerable);
rb_define_singleton_method(sPasswd, "each", etc_each_passwd, 0);
@@ -760,27 +662,6 @@ Init_etc(void)
#endif
"gid", "mem", NULL);
- /* Define-const: Group
- *
- * Group is a Struct that is only available when compiled with +HAVE_GETGRENT+.
- *
- * The struct contains the following members:
- *
- * name::
- * contains the name of the group as a String.
- * passwd::
- * contains the encrypted password as a String. An 'x' is
- * returned if password access to the group is not available; an empty
- * string is returned if no password is needed to obtain membership of
- * the group.
- *
- * Must be compiled with +HAVE_ST_GR_PASSWD+.
- * gid::
- * contains the group's numeric ID as an integer.
- * mem::
- * is an Array of Strings containing the short login names of the
- * members of the group.
- */
rb_define_const(mEtc, "Group", sGroup);
rb_extend_object(sGroup, rb_mEnumerable);
rb_define_singleton_method(sGroup, "each", etc_each_group, 0);
diff --git a/ext/extmk.rb b/ext/extmk.rb
index 597fc78f60..de6e037854 100755
--- a/ext/extmk.rb
+++ b/ext/extmk.rb
@@ -1,5 +1,5 @@
#! /usr/local/bin/ruby
-# -*- mode: ruby; coding: us-ascii -*-
+# -*- ruby -*-
$extension = nil
$extstatic = nil
@@ -10,7 +10,7 @@ $dryrun = false
$clean = nil
$nodynamic = nil
$extinit = nil
-$extobjs = []
+$extobjs = nil
$extflags = ""
$extlibs = nil
$extpath = nil
@@ -26,8 +26,6 @@ alias $0 $progname
$extlist = []
$compiled = {}
-DUMMY_SIGNATURE = "***DUMMY MAKEFILE***"
-
srcdir = File.dirname(File.dirname(__FILE__))
unless defined?(CROSS_COMPILING) and CROSS_COMPILING
$:.replace([File.expand_path("lib", srcdir), Dir.pwd])
@@ -42,30 +40,13 @@ $" << "mkmf.rb"
load File.expand_path("lib/mkmf.rb", srcdir)
require 'optparse/shellwords'
-if defined?(File::NULL)
- @null = File::NULL
-elsif !File.chardev?(@null = "/dev/null")
- @null = "nul"
-end
-
def sysquote(x)
@quote ||= /os2/ =~ (CROSS_COMPILING || RUBY_PLATFORM)
@quote ? x.quote : x
end
def verbose?
- $mflags.defined?("V") == "1"
-end
-
-def system(*args)
- if verbose?
- if args.size == 1
- puts args
- else
- puts Shellwords.join(args)
- end
- end
- super
+ $mflags.defined?("Q") != "@"
end
def extract_makefile(makefile, keep = true)
@@ -92,11 +73,6 @@ def extract_makefile(makefile, keep = true)
end
return false
end
- srcs = Dir[File.join($srcdir, "*.{#{SRC_EXT.join(%q{,})}}")].map {|fn| File.basename(fn)}.sort
- if !srcs.empty?
- old_srcs = m[/^ORIG_SRCS[ \t]*=[ \t](.*)/, 1] or return false
- old_srcs.split.sort == srcs or return false
- end
$target = target
$extconf_h = m[/^RUBY_EXTCONF_H[ \t]*=[ \t]*(\S+)/, 1]
if $static.nil?
@@ -119,7 +95,7 @@ def extract_makefile(makefile, keep = true)
end
def extmake(target)
- unless $configure_only || verbose?
+ unless $configure_only
print "#{$message} #{target}\n"
$stdout.flush
end
@@ -166,7 +142,7 @@ def extmake(target)
remove_const(:MAKEFILE_CONFIG)
const_set(:MAKEFILE_CONFIG, mkconfig)
}
- MakeMakefile.class_eval {
+ Object.class_eval {
remove_const(:CONFIG)
const_set(:CONFIG, mkconfig)
}
@@ -176,28 +152,28 @@ def extmake(target)
old_objs = $objs
old_cleanfiles = $distcleanfiles
conf = ["#{$srcdir}/makefile.rb", "#{$srcdir}/extconf.rb"].find {|f| File.exist?(f)}
- if (!ok || ($extconf_h && !File.exist?($extconf_h)) ||
+ if (($extconf_h && !File.exist?($extconf_h)) ||
!(t = modified?(makefile, MTIMES)) ||
[conf, "#{$srcdir}/depend"].any? {|f| modified?(f, [t])})
then
ok = false
if $configure_only
- if verbose?
- print "#{conf}\n" if conf
- else
- print "#{$message} #{target}\n"
- end
+ print "#{$message} #{target}\n"
$stdout.flush
end
init_mkmf
Logging::logfile 'mkmf.log'
rm_f makefile
if conf
- Logging.open do
- unless verbose?
- $stderr.reopen($stdout.reopen(@null))
- end
+ unless verbose?
+ stdout, $stdout = $stdout, File.open(File::NULL, "a")
+ else
+ stdout = $stdout
+ end
+ begin
load $0 = conf
+ ensure
+ $stdout = stdout
end
else
create_makefile(target)
@@ -211,23 +187,22 @@ def extmake(target)
ok = false
ensure
rm_f "conftest*"
+ config = $0
$0 = $PROGRAM_NAME
end
end
- ok &&= File.open(makefile){|f| !f.gets[DUMMY_SIGNATURE]}
ok = yield(ok) if block_given?
unless ok
open(makefile, "w") do |f|
- f.puts "# " + DUMMY_SIGNATURE
f.print(*dummy_makefile(CONFIG["srcdir"]))
end
mess = "Failed to configure #{target}. It will not be installed.\n"
if error
- mess = "#{error}\n#{mess}"
+ mess.prepend(error.to_s + "\n")
end
- Logging::message(mess) if Logging.log_opened?
+ Logging::message(mess)
print(mess)
$stdout.flush
return true
@@ -236,9 +211,9 @@ def extmake(target)
unless $destdir.to_s.empty? or $mflags.defined?("DESTDIR")
args += [sysquote("DESTDIR=" + relative_from($destdir, "../"+prefix))]
end
- if $static and ok and !$objs.empty? and !File.fnmatch?("-*", target)
+ if $static
args += ["static"] unless $clean
- $extlist.push [$static, target, $target, $preload]
+ $extlist.push [$static, $target, File.basename($target), $preload]
end
FileUtils.rm_f(old_cleanfiles - $distcleanfiles)
FileUtils.rm_f(old_objs - $objs)
@@ -257,13 +232,12 @@ def extmake(target)
$extlibs ||= []
$extpath ||= []
unless $mswin
- $extflags = split_libs($extflags, $DLDFLAGS, $LDFLAGS).uniq.join(" ")
+ $extflags = ($extflags.split | $DLDFLAGS.split | $LDFLAGS.split).join(" ")
end
- $extlibs = merge_libs($extlibs, split_libs($libs), split_libs($LOCAL_LIBS))
+ $extlibs = merge_libs($extlibs, $libs.split, $LOCAL_LIBS.split)
$extpath |= $LIBPATH
end
ensure
- Logging::log_close
unless $ignore
RbConfig.module_eval {
remove_const(:CONFIG)
@@ -271,7 +245,7 @@ def extmake(target)
remove_const(:MAKEFILE_CONFIG)
const_set(:MAKEFILE_CONFIG, mkconfig0)
}
- MakeMakefile.class_eval {
+ Object.class_eval {
remove_const(:CONFIG)
const_set(:CONFIG, mkconfig0)
}
@@ -455,7 +429,7 @@ end unless $extstatic
ext_prefix = "#{$top_srcdir}/ext"
exts = $static_ext.sort_by {|t, i| i}.collect {|t, i| t}
withes, withouts = %w[--with --without].collect {|w|
- if !(w = %w[-extensions -ext].collect {|o|arg_config(w+o)}).any?
+ if not (w = %w[-extensions -ext].collect {|o|arg_config(w+o)}).any?
nil
elsif (w = w.grep(String)).empty?
proc {true}
@@ -498,7 +472,7 @@ Dir::chdir('ext')
hdrdir = $hdrdir
$hdrdir = ($top_srcdir = relative_from(srcdir, $topdir = "..")) + "/include"
exts.each do |d|
- $static = $force_static ? true : $static_ext[target]
+ $static = $force_static ? $static_ext[target] : nil
if $ignore or !$nodynamic or $static
extmake(d) or abort
@@ -534,7 +508,7 @@ if $ignore
end
$extinit ||= ""
-$extobjs ||= []
+$extobjs ||= ""
$extpath ||= []
$extflags ||= ""
$extlibs ||= []
@@ -543,7 +517,7 @@ unless $extlist.empty?
list = $extlist.dup
built = []
while e = list.shift
- s,t,i,r,os = e
+ s,t,i,r = e
if r and !(r -= built).empty?
l = list.size
if (while l > 0; break true if r.include?(list[l-=1][1]) end)
@@ -551,27 +525,31 @@ unless $extlist.empty?
end
next
end
- $extinit << " init(Init_#{File.basename i}, \"#{i}.so\");\n"
- $extobjs << format("ext/%s/%s.%s", t, File.basename(i), $LIBEXT)
- built << t
+ f = format("%s/%s.%s", t, i, $LIBEXT)
+ if File.exist?(f)
+ $extinit << " init(Init_#{i}, \"#{t}.so\");\n"
+ $extobjs << "ext/#{f} "
+ built << t
+ end
end
src = %{\
-#include "ruby/ruby.h"
+#include "ruby.h"
#define init(func, name) { \\
- extern void func(void); \\
+ extern void func _((void)); \\
ruby_init_ext(name, func); \\
}
-void ruby_init_ext(const char *name, void (*init)(void));
+void ruby_init_ext _((const char *name, void (*init)(void)));
-void Init_ext(void)\n{\n#$extinit}
+void Init_ext _((void))\n{\n#$extinit}
}
if !modified?(extinit.c, MTIMES) || IO.read(extinit.c) != src
open(extinit.c, "w") {|fe| fe.print src}
end
+ $extobjs = "ext/#{extinit.o} #{$extobjs}"
if RUBY_PLATFORM =~ /beos/
$extflags.delete("-L/usr/local/lib")
end
@@ -580,6 +558,7 @@ void Init_ext(void)\n{\n#$extinit}
conf = [
['LIBRUBY_SO_UPDATE', '$(LIBRUBY_EXTS)'],
['SETUP', $setup],
+ [enable_config("shared", $enable_shared) ? 'DLDOBJS' : 'EXTOBJS', $extobjs],
['EXTLIBS', $extlibs.join(' ')], ['EXTLDFLAGS', $extflags]
].map {|n, v|
"#{n}=#{v}" if v and !(v = v.strip).empty?
@@ -631,56 +610,32 @@ if $configure_only and $command_output
mf.puts "MFLAGS = -$(MAKEFLAGS)" if $nmake
mf.puts
- def mf.macro(name, values, max = 70)
- print name, " ="
- w = w0 = name.size + 2
- h = " \\\n" + "\t" * (w / 8) + " " * (w % 8)
- values.each do |s|
- if s.size + w > max
- print h
- w = w0
- end
- print " ", s
- w += s.size + 1
+ mf.print "extensions ="
+ w = 12
+ exts.each do |d|
+ if d.size + w > 70
+ mf.print " \\\n\t "
+ w = 12
end
- puts
+ mf.print " #{d}"
+ w += d.size + 1
end
-
- mf.macro "extensions", exts
- mf.macro "EXTOBJS", $extlist.empty? ? ["dmyext.#{$OBJEXT}"] : ["ext/extinit.#{$OBJEXT}", *$extobjs]
- mf.macro "EXTLIBS", $extlibs
- mf.macro "EXTLDFLAGS", $extflags.split
mf.puts
targets = %w[all install static install-so install-rb clean distclean realclean]
- targets.each do |tgt|
- mf.puts "#{tgt}: $(extensions:/.=/#{tgt})"
+ targets.each do |target|
+ mf.puts "#{target}: $(extensions:/.=/#{target})"
end
mf.puts
- mf.puts "clean:\n\t-$(Q)$(RM) ext/extinit.#{$OBJEXT}"
- mf.puts "distclean:\n\t-$(Q)$(RM) ext/extinit.c"
- mf.puts
- mf.puts "#{rubies.join(' ')}: $(extensions:/.=/#{$force_static ? 'static' : 'all'})"
- (["all static"] + rubies).each_with_index do |tgt, i|
- mf.print "#{tgt}:\n\t$(Q)$(MAKE) "
- mf.print "$(MFLAGS) "
- if enable_config("shared", $enable_shared)
- mf.print %[DLDOBJS="$(EXTOBJS) $(ENCOBJS)" EXTSOLIBS="$(EXTLIBS)" ]
- mf.print 'LIBRUBY_SO_UPDATE=$(LIBRUBY_EXTS) '
- else
- mf.print %[EXTOBJS="$(EXTOBJS) $(ENCOBJS)" EXTLIBS="$(EXTLIBS)" ]
- end
- mf.print 'EXTLDFLAGS="$(EXTLDFLAGS)" '
- if i == 0
- mf.puts rubies.join(' ')
- else
- mf.puts '$@'
- end
+ mf.puts "all: #{rubies.join(' ')}"
+ mf.puts "#{rubies.join(' ')}: $(extensions:/.=/all)"
+ rubies.each do |target|
+ mf.puts "#{target}:\n\t$(Q)$(MAKE) $(MFLAGS) $@"
end
mf.puts
- exec = config_string("exec") {|str| str + " "}
- targets.each do |tgt|
+ exec = config_string("exec") {|s| s + " "}
+ targets.each do |target|
exts.each do |d|
- mf.puts "#{d[0..-2]}#{tgt}:\n\t$(Q)cd $(@D) && #{exec}$(MAKE) $(MFLAGS) V=$(V) $(@F)"
+ mf.puts "#{d[0..-2]}#{target}:\n\t$(Q)cd $(@D) && #{exec}$(MAKE) $(MFLAGS) $(@F)"
end
end
end
diff --git a/ext/fcntl/fcntl.c b/ext/fcntl/fcntl.c
index 3538d94948..b0992f30d8 100644
--- a/ext/fcntl/fcntl.c
+++ b/ext/fcntl/fcntl.c
@@ -14,6 +14,12 @@
fcntl - load the C fcntl.h defines
+= SYNOPSIS
+
+ require "fcntl"
+ m = s.fcntl(Fcntl::F_GETFL, 0)
+ f.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK|m)
+
= DESCRIPTION
This module is just a translation of the C <fcntl.h> file.
@@ -31,34 +37,76 @@ pack up your own arguments to pass as args for locking functions, etc.
/* Fcntl loads the constants defined in the system's <fcntl.h> C header
* file, and used with both the fcntl(2) and open(2) POSIX system calls.
*
- * To perform a fcntl(2) operation, use IO::fcntl.
+ * Copyright (C) 1997-2001 Yukihiro Matsumoto
+ *
+ * Documented by mathew <meta@pobox.com>
+ *
+ * = Usage
+ *
+ * To perform a fcntl(2) operation, use IO::fcntl in the core classes.
*
* To perform an open(2) operation, use IO::sysopen.
*
- * The set of operations and constants available depends upon specific
- * operating system. Some values listed below may not be supported on your
- * system.
+ * The set of operations and constants available depends upon specific OS
+ * platform. Some values listed below may not be supported on your system.
*
- * See your fcntl(2) man page for complete details.
+ * The constants supported by Ruby for use with IO::fcntl are:
*
- * Open /tmp/tempfile as a write-only file that is created if it doesn't
- * exist:
+ * - F_DUPFD - duplicate a close-on-exec file handle to a non-close-on-exec
+ * file handle.
*
- * require 'fcntl'
+ * - F_GETFD - read the close-on-exec flag of a file handle.
*
- * fd = IO.sysopen('/tmp/tempfile',
- * Fcntl::O_WRONLY | Fcntl::O_EXCL | Fcntl::O_CREAT)
- * f = IO.open(fd)
- * f.syswrite("TEMP DATA")
- * f.close
+ * - F_SETFD - set the close-on-exec flag of a file handle.
+ *
+ * - FD_CLOEXEC - the value of the close-on-exec flag.
+ *
+ * - F_GETFL - get file descriptor flags.
+ *
+ * - F_SETFL - set file descriptor flags.
+ *
+ * - O_APPEND, O_NONBLOCK, etc (see below) - file descriptor flag
+ * values for the above.
+ *
+ * - F_GETLK - determine whether a given region of a file is locked.
+ *
+ * - F_SETLK - acquire a lock on a region of a file.
+ *
+ * - F_SETLKW - acquire a lock on a region of a file, waiting if necessary.
*
- * Get the flags on file +s+:
+ * - F_RDLCK, F_WRLCK, F_UNLCK - types of lock for the above.
*
- * m = s.fcntl(Fcntl::F_GETFL, 0)
+ * The constants supported by Ruby for use with IO::sysopen are:
*
- * Set the non-blocking flag on +f+ in addition to the existing flags in +m+.
+ * - O_APPEND - open file in append mode.
*
- * f.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK|m)
+ * - O_NOCTTY - open tty without it becoming controlling tty.
+ *
+ * - O_CREAT - create file if it doesn't exist.
+ *
+ * - O_EXCL - used with O_CREAT, fail if file exists.
+ *
+ * - O_TRUNC - truncate file on open.
+ *
+ * - O_NONBLOCK / O_NDELAY - open in non-blocking mode.
+ *
+ * - O_RDONLY - open read-only.
+ *
+ * - O_WRONLY - open write-only.
+ *
+ * - O_RDWR - open read-write.
+ *
+ * - O_ACCMODE - mask to extract read/write flags.
+ *
+ * Example:
+ *
+ * require 'fcntl'
+ *
+ * fd = IO::sysopen('/tmp/tempfile',
+ * Fcntl::O_WRONLY | Fcntl::O_EXCL | Fcntl::O_CREAT)
+ * f = IO.open(fd)
+ * f.syswrite("TEMP DATA")
+ * f.close
*
*/
void
@@ -66,180 +114,74 @@ Init_fcntl()
{
VALUE mFcntl = rb_define_module("Fcntl");
#ifdef F_DUPFD
- /* Document-const: F_DUPFD
- *
- * Duplicate a file descriptor to the mimimum unused file descriptor
- * greater than or equal to the argument.
- *
- * The close-on-exec flag of the duplicated file descriptor is set.
- * (Ruby uses F_DUPFD_CLOEXEC internally if available to avoid race
- * condition. F_SETFD is used if F_DUPFD_CLOEXEC is not available.)
- */
rb_define_const(mFcntl, "F_DUPFD", INT2NUM(F_DUPFD));
#endif
#ifdef F_GETFD
- /* Document-const: F_GETFD
- *
- * Read the close-on-exec flag of a file descriptor.
- */
rb_define_const(mFcntl, "F_GETFD", INT2NUM(F_GETFD));
#endif
#ifdef F_GETLK
- /* Document-const: F_GETLK
- *
- * Determine whether a given region of a file is locked. This uses one of
- * the F_*LK flags.
- */
rb_define_const(mFcntl, "F_GETLK", INT2NUM(F_GETLK));
#endif
#ifdef F_SETFD
- /* Document-const: F_SETFD
- *
- * Set the close-on-exec flag of a file descriptor.
- */
rb_define_const(mFcntl, "F_SETFD", INT2NUM(F_SETFD));
#endif
#ifdef F_GETFL
- /* Document-const: F_GETFL
- *
- * Get the file descriptor flags. This will be one or more of the O_*
- * flags.
- */
rb_define_const(mFcntl, "F_GETFL", INT2NUM(F_GETFL));
#endif
#ifdef F_SETFL
- /* Document-const: F_SETFL
- *
- * Set the file descriptor flags. This will be one or more of the O_*
- * flags.
- */
rb_define_const(mFcntl, "F_SETFL", INT2NUM(F_SETFL));
#endif
#ifdef F_SETLK
- /* Document-const: F_SETLK
- *
- * Acquire a lock on a region of a file. This uses one of the F_*LCK
- * flags.
- */
rb_define_const(mFcntl, "F_SETLK", INT2NUM(F_SETLK));
#endif
#ifdef F_SETLKW
- /* Document-const: F_SETLKW
- *
- * Acquire a lock on a region of a file, waiting if necessary. This uses
- * one of the F_*LCK flags
- */
rb_define_const(mFcntl, "F_SETLKW", INT2NUM(F_SETLKW));
#endif
#ifdef FD_CLOEXEC
- /* Document-const: FD_CLOEXEC
- *
- * the value of the close-on-exec flag.
- */
rb_define_const(mFcntl, "FD_CLOEXEC", INT2NUM(FD_CLOEXEC));
#endif
#ifdef F_RDLCK
- /* Document-const: F_RDLCK
- *
- * Read lock for a region of a file
- */
rb_define_const(mFcntl, "F_RDLCK", INT2NUM(F_RDLCK));
#endif
#ifdef F_UNLCK
- /* Document-const: F_UNLCK
- *
- * Remove lock for a region of a file
- */
rb_define_const(mFcntl, "F_UNLCK", INT2NUM(F_UNLCK));
#endif
#ifdef F_WRLCK
- /* Document-const: F_WRLCK
- *
- * Write lock for a region of a file
- */
rb_define_const(mFcntl, "F_WRLCK", INT2NUM(F_WRLCK));
#endif
#ifdef O_CREAT
- /* Document-const: O_CREAT
- *
- * Create the file if it doesn't exist
- */
rb_define_const(mFcntl, "O_CREAT", INT2NUM(O_CREAT));
#endif
#ifdef O_EXCL
- /* Document-const: O_EXCL
- *
- * Used with O_CREAT, fail if the file exists
- */
rb_define_const(mFcntl, "O_EXCL", INT2NUM(O_EXCL));
#endif
#ifdef O_NOCTTY
- /* Document-const: O_NOCTTY
- *
- * Open TTY without it becoming the controlling TTY
- */
rb_define_const(mFcntl, "O_NOCTTY", INT2NUM(O_NOCTTY));
#endif
#ifdef O_TRUNC
- /* Document-const: O_TRUNC
- *
- * Truncate the file on open
- */
rb_define_const(mFcntl, "O_TRUNC", INT2NUM(O_TRUNC));
#endif
#ifdef O_APPEND
- /* Document-const: O_APPEND
- *
- * Open the file in append mode
- */
rb_define_const(mFcntl, "O_APPEND", INT2NUM(O_APPEND));
#endif
#ifdef O_NONBLOCK
- /* Document-const: O_NONBLOCK
- *
- * Open the file in non-blocking mode
- */
rb_define_const(mFcntl, "O_NONBLOCK", INT2NUM(O_NONBLOCK));
#endif
#ifdef O_NDELAY
- /* Document-const: O_NDELAY
- *
- * Open the file in non-blocking mode
- */
rb_define_const(mFcntl, "O_NDELAY", INT2NUM(O_NDELAY));
#endif
#ifdef O_RDONLY
- /* Document-const: O_RDONLY
- *
- * Open the file in read-only mode
- */
rb_define_const(mFcntl, "O_RDONLY", INT2NUM(O_RDONLY));
#endif
#ifdef O_RDWR
- /* Document-const: O_RDWR
- *
- * Open the file in read-write mode
- */
rb_define_const(mFcntl, "O_RDWR", INT2NUM(O_RDWR));
#endif
#ifdef O_WRONLY
- /* Document-const: O_WRONLY
- *
- * Open the file in write-only mode.
- */
rb_define_const(mFcntl, "O_WRONLY", INT2NUM(O_WRONLY));
#endif
#ifdef O_ACCMODE
- /* Document-const: O_ACCMODE
- *
- * Mask to extract the read/write flags
- */
rb_define_const(mFcntl, "O_ACCMODE", INT2FIX(O_ACCMODE));
#else
- /* Document-const: O_ACCMODE
- *
- * Mask to extract the read/write flags
- */
rb_define_const(mFcntl, "O_ACCMODE", INT2FIX(O_RDONLY | O_WRONLY | O_RDWR));
#endif
}
diff --git a/ext/fiddle/closure.c b/ext/fiddle/closure.c
index 2788bce4c5..a3c0792fc2 100644
--- a/ext/fiddle/closure.c
+++ b/ext/fiddle/closure.c
@@ -10,7 +10,7 @@ typedef struct {
ffi_type **argv;
} fiddle_closure;
-#if defined(MACOSX) || defined(__linux__) || defined(__OpenBSD__)
+#if defined(MACOSX) || defined(__linux) || defined(__OpenBSD__)
#define DONT_USE_FFI_CLOSURE_ALLOC
#endif
@@ -21,7 +21,7 @@ dealloc(void * ptr)
#ifndef DONT_USE_FFI_CLOSURE_ALLOC
ffi_closure_free(cls->pcl);
#else
- munmap(cls->pcl, sizeof(*cls->pcl));
+ munmap(cls->pcl, sizeof(cls->pcl));
#endif
if (cls->argv) xfree(cls->argv);
xfree(cls);
@@ -228,10 +228,7 @@ initialize(int rbargc, VALUE argv[], VALUE self)
#else
result = ffi_prep_closure(pcl, cif, callback, (void *)self);
cl->code = (void *)pcl;
- i = mprotect(pcl, sizeof(*pcl), PROT_READ | PROT_EXEC);
- if (i) {
- rb_sys_fail("mprotect");
- }
+ mprotect(pcl, sizeof(pcl), PROT_READ | PROT_EXEC);
#endif
if (FFI_OK != result)
@@ -274,11 +271,11 @@ Init_fiddle_closure()
* 10
* end
* }.new(Fiddle::TYPE_INT, [])
- * #=> #<#<Class:0x0000000150d308>:0x0000000150d240>
+ * => #<#<Class:0x0000000150d308>:0x0000000150d240>
* func = Fiddle::Function.new(closure, [], Fiddle::TYPE_INT)
- * #=> #<Fiddle::Function:0x00000001516e58>
+ * => #<Fiddle::Function:0x00000001516e58>
* func.call
- * #=> 10
+ * => 10
*/
cFiddleClosure = rb_define_class_under(mFiddle, "Closure", rb_cObject);
@@ -287,12 +284,12 @@ Init_fiddle_closure()
/*
* Document-method: new
*
- * call-seq: new(ret, args, abi = Fiddle::DEFAULT)
+ * call-seq: new(ret, *args, abi = Fiddle::DEFAULT)
*
* Construct a new Closure object.
*
* * +ret+ is the C type to be returned
- * * +args+ is an Array of arguments, passed to the callback function
+ * * +args+ are passed the callback
* * +abi+ is the abi of the closure
*
* If there is an error in preparing the ffi_cif or ffi_prep_closure,
diff --git a/ext/fiddle/conversions.c b/ext/fiddle/conversions.c
index d40ddc1f38..f2c1511778 100644
--- a/ext/fiddle/conversions.c
+++ b/ext/fiddle/conversions.c
@@ -134,8 +134,6 @@ generic_to_value(VALUE rettype, fiddle_generic retval)
default:
rb_raise(rb_eRuntimeError, "unknown type %d", type);
}
-
- UNREACHABLE;
}
/* vim: set noet sw=4 sts=4 */
diff --git a/ext/fiddle/extconf.rb b/ext/fiddle/extconf.rb
index 2cb9ae0ace..78622b6a6f 100644
--- a/ext/fiddle/extconf.rb
+++ b/ext/fiddle/extconf.rb
@@ -19,36 +19,6 @@ end
have_header 'sys/mman.h'
-if have_header "dlfcn.h"
- have_library "dl"
-
- %w{ dlopen dlclose dlsym }.each do |func|
- abort "missing function #{func}" unless have_func(func)
- end
-
- have_func "dlerror"
-elsif have_header "windows.h"
- %w{ LoadLibrary FreeLibrary GetProcAddress }.each do |func|
- abort "missing function #{func}" unless have_func(func)
- end
-end
-
-have_const('FFI_STDCALL', 'ffi.h') || have_const('FFI_STDCALL', 'ffi/ffi.h')
-
-config = File.read(RbConfig.expand(File.join($arch_hdrdir, "ruby/config.h")))
-types = {"SIZE_T"=>"SSIZE_T", "PTRDIFF_T"=>nil, "INTPTR_T"=>nil}
-types.each do |type, signed|
- if /^\#define\s+SIZEOF_#{type}\s+(SIZEOF_(.+)|\d+)/ =~ config
- if size = $2 and size != 'VOIDP'
- size = types.fetch(size) {size}
- $defs << format("-DTYPE_%s=TYPE_%s", signed||type, size)
- end
- if signed
- check_signedness(type.downcase, "stddef.h")
- end
- end
-end
-
create_makefile 'fiddle'
# :startdoc:
diff --git a/ext/fiddle/fiddle.c b/ext/fiddle/fiddle.c
index 89644301aa..83c0bb5e1e 100644
--- a/ext/fiddle/fiddle.c
+++ b/ext/fiddle/fiddle.c
@@ -1,133 +1,6 @@
#include <fiddle.h>
VALUE mFiddle;
-VALUE rb_eFiddleError;
-
-#ifndef TYPE_SSIZE_T
-# if SIZEOF_SIZE_T == SIZEOF_INT
-# define TYPE_SSIZE_T TYPE_INT
-# elif SIZEOF_SIZE_T == SIZEOF_LONG
-# define TYPE_SSIZE_T TYPE_LONG
-# elif defined HAVE_LONG_LONG && SIZEOF_SIZE_T == SIZEOF_LONG_LONG
-# define TYPE_SSIZE_T TYPE_LONG_LONG
-# endif
-#endif
-#define TYPE_SIZE_T (-1*SIGNEDNESS_OF_SIZE_T*TYPE_SSIZE_T)
-
-#ifndef TYPE_PTRDIFF_T
-# if SIZEOF_PTRDIFF_T == SIZEOF_INT
-# define TYPE_PTRDIFF_T TYPE_INT
-# elif SIZEOF_PTRDIFF_T == SIZEOF_LONG
-# define TYPE_PTRDIFF_T TYPE_LONG
-# elif defined HAVE_LONG_LONG && SIZEOF_PTRDIFF_T == SIZEOF_LONG_LONG
-# define TYPE_PTRDIFF_T TYPE_LONG_LONG
-# endif
-#endif
-
-#ifndef TYPE_INTPTR_T
-# if SIZEOF_INTPTR_T == SIZEOF_INT
-# define TYPE_INTPTR_T TYPE_INT
-# elif SIZEOF_INTPTR_T == SIZEOF_LONG
-# define TYPE_INTPTR_T TYPE_LONG
-# elif defined HAVE_LONG_LONG && SIZEOF_INTPTR_T == SIZEOF_LONG_LONG
-# define TYPE_INTPTR_T TYPE_LONG_LONG
-# endif
-#endif
-#define TYPE_UINTPTR_T (-TYPE_INTPTR_T)
-
-void Init_fiddle_pointer(void);
-
-/*
- * call-seq: Fiddle.malloc(size)
- *
- * Allocate +size+ bytes of memory and return the integer memory address
- * for the allocated memory.
- */
-static VALUE
-rb_fiddle_malloc(VALUE self, VALUE size)
-{
- void *ptr;
-
- rb_secure(4);
- ptr = (void*)ruby_xmalloc(NUM2INT(size));
- return PTR2NUM(ptr);
-}
-
-/*
- * call-seq: Fiddle.realloc(addr, size)
- *
- * Change the size of the memory allocated at the memory location +addr+ to
- * +size+ bytes. Returns the memory address of the reallocated memory, which
- * may be different than the address passed in.
- */
-static VALUE
-rb_fiddle_realloc(VALUE self, VALUE addr, VALUE size)
-{
- void *ptr = NUM2PTR(addr);
-
- rb_secure(4);
- ptr = (void*)ruby_xrealloc(ptr, NUM2INT(size));
- return PTR2NUM(ptr);
-}
-
-/*
- * call-seq: Fiddle.free(addr)
- *
- * Free the memory at address +addr+
- */
-VALUE
-rb_fiddle_free(VALUE self, VALUE addr)
-{
- void *ptr = NUM2PTR(addr);
-
- rb_secure(4);
- ruby_xfree(ptr);
- return Qnil;
-}
-
-/*
- * call-seq: Fiddle.dlunwrap(addr)
- *
- * Returns the hexadecimal representation of a memory pointer address +addr+
- *
- * Example:
- *
- * lib = Fiddle.dlopen('/lib64/libc-2.15.so')
- * => #<Fiddle::Handle:0x00000001342460>
- *
- * lib['strcpy'].to_s(16)
- * => "7f59de6dd240"
- *
- * Fiddle.dlunwrap(Fiddle.dlwrap(lib['strcpy'].to_s(16)))
- * => "7f59de6dd240"
- */
-VALUE
-rb_fiddle_ptr2value(VALUE self, VALUE addr)
-{
- rb_secure(4);
- return (VALUE)NUM2PTR(addr);
-}
-
-/*
- * call-seq: Fiddle.dlwrap(val)
- *
- * Returns a memory pointer of a function's hexadecimal address location +val+
- *
- * Example:
- *
- * lib = Fiddle.dlopen('/lib64/libc-2.15.so')
- * => #<Fiddle::Handle:0x00000001342460>
- *
- * Fiddle.dlwrap(lib['strcpy'].to_s(16))
- * => 25522520
- */
-static VALUE
-rb_fiddle_value2ptr(VALUE self, VALUE val)
-{
- return PTR2NUM((void*)val);
-}
-
-void Init_fiddle_handle(void);
void
Init_fiddle(void)
@@ -135,45 +8,13 @@ Init_fiddle(void)
/*
* Document-module: Fiddle
*
- * A libffi wrapper for Ruby.
- *
* == Description
*
- * Fiddle is an extension to translate a foreign function interface (FFI)
- * with ruby.
- *
- * It wraps {libffi}[http://sourceware.org/libffi/], a popular C library
- * which provides a portable interface that allows code written in one
- * language to clal code written in another language.
- *
- * == Example
- *
- * Here we will use Fiddle::Function to wrap {floor(3) from
- * libm}[http://linux.die.net/man/3/floor]
- *
- * require 'fiddle'
- *
- * libm = Fiddle.dlopen('/lib/libm.so.6')
- *
- * floor = Fiddle::Function.new(
- * libm['floor'],
- * [Fiddle::TYPE_DOUBLE],
- * Fiddle::TYPE_DOUBLE
- * )
- *
- * puts floor.call(3.14159) #=> 3.0
- *
+ * A libffi wrapper.
*
*/
mFiddle = rb_define_module("Fiddle");
- /*
- * Document-class: Fiddle::DLError
- *
- * standard dynamic load exception
- */
- rb_eFiddleError = rb_define_class_under(mFiddle, "DLError", rb_eStandardError);
-
/* Document-const: TYPE_VOID
*
* C type - void
@@ -230,116 +71,6 @@ Init_fiddle(void)
*/
rb_define_const(mFiddle, "TYPE_DOUBLE", INT2NUM(TYPE_DOUBLE));
- /* Document-const: TYPE_SIZE_T
- *
- * C type - size_t
- */
- rb_define_const(mFiddle, "TYPE_SIZE_T", INT2NUM(TYPE_SIZE_T));
-
- /* Document-const: TYPE_SSIZE_T
- *
- * C type - ssize_t
- */
- rb_define_const(mFiddle, "TYPE_SSIZE_T", INT2NUM(TYPE_SSIZE_T));
-
- /* Document-const: TYPE_PTRDIFF_T
- *
- * C type - ptrdiff_t
- */
- rb_define_const(mFiddle, "TYPE_PTRDIFF_T", INT2NUM(TYPE_PTRDIFF_T));
-
- /* Document-const: TYPE_INTPTR_T
- *
- * C type - intptr_t
- */
- rb_define_const(mFiddle, "TYPE_INTPTR_T", INT2NUM(TYPE_INTPTR_T));
-
- /* Document-const: TYPE_UINTPTR_T
- *
- * C type - uintptr_t
- */
- rb_define_const(mFiddle, "TYPE_UINTPTR_T", INT2NUM(TYPE_UINTPTR_T));
-
- /* Document-const: ALIGN_VOIDP
- *
- * The alignment size of a void*
- */
- rb_define_const(mFiddle, "ALIGN_VOIDP", INT2NUM(ALIGN_VOIDP));
-
- /* Document-const: ALIGN_CHAR
- *
- * The alignment size of a char
- */
- rb_define_const(mFiddle, "ALIGN_CHAR", INT2NUM(ALIGN_CHAR));
-
- /* Document-const: ALIGN_SHORT
- *
- * The alignment size of a short
- */
- rb_define_const(mFiddle, "ALIGN_SHORT", INT2NUM(ALIGN_SHORT));
-
- /* Document-const: ALIGN_INT
- *
- * The alignment size of an int
- */
- rb_define_const(mFiddle, "ALIGN_INT", INT2NUM(ALIGN_INT));
-
- /* Document-const: ALIGN_LONG
- *
- * The alignment size of a long
- */
- rb_define_const(mFiddle, "ALIGN_LONG", INT2NUM(ALIGN_LONG));
-
-#if HAVE_LONG_LONG
- /* Document-const: ALIGN_LONG_LONG
- *
- * The alignment size of a long long
- */
- rb_define_const(mFiddle, "ALIGN_LONG_LONG", INT2NUM(ALIGN_LONG_LONG));
-#endif
-
- /* Document-const: ALIGN_FLOAT
- *
- * The alignment size of a float
- */
- rb_define_const(mFiddle, "ALIGN_FLOAT", INT2NUM(ALIGN_FLOAT));
-
- /* Document-const: ALIGN_DOUBLE
- *
- * The alignment size of a double
- */
- rb_define_const(mFiddle, "ALIGN_DOUBLE",INT2NUM(ALIGN_DOUBLE));
-
- /* Document-const: ALIGN_SIZE_T
- *
- * The alignment size of a size_t
- */
- rb_define_const(mFiddle, "ALIGN_SIZE_T", INT2NUM(ALIGN_OF(size_t)));
-
- /* Document-const: ALIGN_SSIZE_T
- *
- * The alignment size of a ssize_t
- */
- rb_define_const(mFiddle, "ALIGN_SSIZE_T", INT2NUM(ALIGN_OF(size_t))); /* same as size_t */
-
- /* Document-const: ALIGN_PTRDIFF_T
- *
- * The alignment size of a ptrdiff_t
- */
- rb_define_const(mFiddle, "ALIGN_PTRDIFF_T", INT2NUM(ALIGN_OF(ptrdiff_t)));
-
- /* Document-const: ALIGN_INTPTR_T
- *
- * The alignment size of a intptr_t
- */
- rb_define_const(mFiddle, "ALIGN_INTPTR_T", INT2NUM(ALIGN_OF(intptr_t)));
-
- /* Document-const: ALIGN_UINTPTR_T
- *
- * The alignment size of a uintptr_t
- */
- rb_define_const(mFiddle, "ALIGN_UINTPTR_T", INT2NUM(ALIGN_OF(uintptr_t)));
-
/* Document-const: WINDOWS
*
* Returns a boolean regarding whether the host is WIN32
@@ -350,109 +81,7 @@ Init_fiddle(void)
rb_define_const(mFiddle, "WINDOWS", Qfalse);
#endif
- /* Document-const: SIZEOF_VOIDP
- *
- * size of a void*
- */
- rb_define_const(mFiddle, "SIZEOF_VOIDP", INT2NUM(sizeof(void*)));
-
- /* Document-const: SIZEOF_CHAR
- *
- * size of a char
- */
- rb_define_const(mFiddle, "SIZEOF_CHAR", INT2NUM(sizeof(char)));
-
- /* Document-const: SIZEOF_SHORT
- *
- * size of a short
- */
- rb_define_const(mFiddle, "SIZEOF_SHORT", INT2NUM(sizeof(short)));
-
- /* Document-const: SIZEOF_INT
- *
- * size of an int
- */
- rb_define_const(mFiddle, "SIZEOF_INT", INT2NUM(sizeof(int)));
-
- /* Document-const: SIZEOF_LONG
- *
- * size of a long
- */
- rb_define_const(mFiddle, "SIZEOF_LONG", INT2NUM(sizeof(long)));
-
-#if HAVE_LONG_LONG
- /* Document-const: SIZEOF_LONG_LONG
- *
- * size of a long long
- */
- rb_define_const(mFiddle, "SIZEOF_LONG_LONG", INT2NUM(sizeof(LONG_LONG)));
-#endif
-
- /* Document-const: SIZEOF_FLOAT
- *
- * size of a float
- */
- rb_define_const(mFiddle, "SIZEOF_FLOAT", INT2NUM(sizeof(float)));
-
- /* Document-const: SIZEOF_DOUBLE
- *
- * size of a double
- */
- rb_define_const(mFiddle, "SIZEOF_DOUBLE",INT2NUM(sizeof(double)));
-
- /* Document-const: SIZEOF_SIZE_T
- *
- * size of a size_t
- */
- rb_define_const(mFiddle, "SIZEOF_SIZE_T", INT2NUM(sizeof(size_t)));
-
- /* Document-const: SIZEOF_SSIZE_T
- *
- * size of a ssize_t
- */
- rb_define_const(mFiddle, "SIZEOF_SSIZE_T", INT2NUM(sizeof(size_t))); /* same as size_t */
-
- /* Document-const: SIZEOF_PTRDIFF_T
- *
- * size of a ptrdiff_t
- */
- rb_define_const(mFiddle, "SIZEOF_PTRDIFF_T", INT2NUM(sizeof(ptrdiff_t)));
-
- /* Document-const: SIZEOF_INTPTR_T
- *
- * size of a intptr_t
- */
- rb_define_const(mFiddle, "SIZEOF_INTPTR_T", INT2NUM(sizeof(intptr_t)));
-
- /* Document-const: SIZEOF_UINTPTR_T
- *
- * size of a uintptr_t
- */
- rb_define_const(mFiddle, "SIZEOF_UINTPTR_T", INT2NUM(sizeof(uintptr_t)));
-
- /* Document-const: RUBY_FREE
- *
- * Address of the ruby_xfree() function
- */
- rb_define_const(mFiddle, "RUBY_FREE", PTR2NUM(ruby_xfree));
-
- /* Document-const: BUILD_RUBY_PLATFORM
- *
- * Platform built against (i.e. "x86_64-linux", etc.)
- *
- * See also RUBY_PLATFORM
- */
- rb_define_const(mFiddle, "BUILD_RUBY_PLATFORM", rb_str_new2(RUBY_PLATFORM));
-
- rb_define_module_function(mFiddle, "dlwrap", rb_fiddle_value2ptr, 1);
- rb_define_module_function(mFiddle, "dlunwrap", rb_fiddle_ptr2value, 1);
- rb_define_module_function(mFiddle, "malloc", rb_fiddle_malloc, 1);
- rb_define_module_function(mFiddle, "realloc", rb_fiddle_realloc, 2);
- rb_define_module_function(mFiddle, "free", rb_fiddle_free, 1);
-
Init_fiddle_function();
Init_fiddle_closure();
- Init_fiddle_handle();
- Init_fiddle_pointer();
}
/* vim: set noet sws=4 sw=4: */
diff --git a/ext/fiddle/fiddle.h b/ext/fiddle/fiddle.h
index b37c37bc65..3a829fe433 100644
--- a/ext/fiddle/fiddle.h
+++ b/ext/fiddle/fiddle.h
@@ -12,30 +12,6 @@
#include <sys/mman.h>
#endif
-#if defined(HAVE_DLFCN_H)
-# include <dlfcn.h>
-# /* some stranger systems may not define all of these */
-#ifndef RTLD_LAZY
-#define RTLD_LAZY 0
-#endif
-#ifndef RTLD_GLOBAL
-#define RTLD_GLOBAL 0
-#endif
-#ifndef RTLD_NOW
-#define RTLD_NOW 0
-#endif
-#else
-# if defined(_WIN32)
-# include <windows.h>
-# define dlopen(name,flag) ((void*)LoadLibrary(name))
-# define dlerror() strerror(rb_w32_map_errno(GetLastError()))
-# define dlsym(handle,name) ((void*)GetProcAddress((handle),(name)))
-# define RTLD_LAZY -1
-# define RTLD_NOW -1
-# define RTLD_GLOBAL -1
-# endif
-#endif
-
#ifdef USE_HEADER_HACKS
#include <ffi/ffi.h>
#else
@@ -121,23 +97,7 @@
#define TYPE_FLOAT 7
#define TYPE_DOUBLE 8
-#define ALIGN_OF(type) offsetof(struct {char align_c; type align_x;}, align_x)
-
-#define ALIGN_VOIDP ALIGN_OF(void*)
-#define ALIGN_SHORT ALIGN_OF(short)
-#define ALIGN_CHAR ALIGN_OF(char)
-#define ALIGN_INT ALIGN_OF(int)
-#define ALIGN_LONG ALIGN_OF(long)
-#if HAVE_LONG_LONG
-#define ALIGN_LONG_LONG ALIGN_OF(LONG_LONG)
-#endif
-#define ALIGN_FLOAT ALIGN_OF(float)
-#define ALIGN_DOUBLE ALIGN_OF(double)
-
extern VALUE mFiddle;
-extern VALUE rb_eFiddleError;
-
-VALUE rb_fiddle_new_function(VALUE address, VALUE arg_types, VALUE ret_type);
#endif
/* vim: set noet sws=4 sw=4: */
diff --git a/ext/fiddle/function.c b/ext/fiddle/function.c
index 89239bbb69..6e8909991a 100644
--- a/ext/fiddle/function.c
+++ b/ext/fiddle/function.c
@@ -1,14 +1,5 @@
#include <fiddle.h>
-#ifdef PRIsVALUE
-# define RB_OBJ_CLASSNAME(obj) rb_obj_class(obj)
-# define RB_OBJ_STRING(obj) (obj)
-#else
-# define PRIsVALUE "s"
-# define RB_OBJ_CLASSNAME(obj) rb_obj_classname(obj)
-# define RB_OBJ_STRING(obj) StringValueCStr(obj)
-#endif
-
VALUE cFiddleFunction;
static void
@@ -47,40 +38,16 @@ allocate(VALUE klass)
return TypedData_Make_Struct(klass, ffi_cif, &function_data_type, cif);
}
-VALUE
-rb_fiddle_new_function(VALUE address, VALUE arg_types, VALUE ret_type)
-{
- VALUE argv[3];
-
- argv[0] = address;
- argv[1] = arg_types;
- argv[2] = ret_type;
-
- return rb_class_new_instance(3, argv, cFiddleFunction);
-}
-
-static int
-parse_keyword_arg_i(VALUE key, VALUE value, VALUE self)
-{
- if (key == ID2SYM(rb_intern("name"))) {
- rb_iv_set(self, "@name", value);
- } else {
- rb_raise(rb_eArgError, "unknown keyword: %"PRIsVALUE,
- RB_OBJ_STRING(key));
- }
- return ST_CONTINUE;
-}
-
static VALUE
initialize(int argc, VALUE argv[], VALUE self)
{
ffi_cif * cif;
ffi_type **arg_types;
ffi_status result;
- VALUE ptr, args, ret_type, abi, kwds;
+ VALUE ptr, args, ret_type, abi;
int i;
- rb_scan_args(argc, argv, "31:", &ptr, &args, &ret_type, &abi, &kwds);
+ rb_scan_args(argc, argv, "31", &ptr, &args, &ret_type, &abi);
if(NIL_P(abi)) abi = INT2NUM(FFI_DEFAULT_ABI);
Check_Type(args, T_ARRAY);
@@ -90,8 +57,6 @@ initialize(int argc, VALUE argv[], VALUE self)
rb_iv_set(self, "@return_type", ret_type);
rb_iv_set(self, "@abi", abi);
- if (!NIL_P(kwds)) rb_hash_foreach(kwds, parse_keyword_arg_i, self);
-
TypedData_Get_Struct(self, ffi_cif, &function_data_type, cif);
arg_types = xcalloc(RARRAY_LEN(args) + 1, sizeof(ffi_type *));
@@ -136,15 +101,6 @@ function_call(int argc, VALUE argv[], VALUE self)
TypedData_Get_Struct(self, ffi_cif, &function_data_type, cif);
- if (rb_safe_level() >= 1) {
- for (i = 0; i < argc; i++) {
- VALUE src = argv[i];
- if (OBJ_TAINTED(src)) {
- rb_raise(rb_eSecurityError, "tainted parameter not allowed");
- }
- }
- }
-
values = xcalloc((size_t)argc + 1, (size_t)sizeof(void *));
generic_args = xcalloc((size_t)argc, (size_t)sizeof(fiddle_generic));
@@ -193,28 +149,25 @@ Init_fiddle_function(void)
*
* === 'strcpy'
*
- * @libc = Fiddle.dlopen "/lib/libc.so.6"
- * #=> #<Fiddle::Handle:0x00000001d7a8d8>
- * f = Fiddle::Function.new(
- * @libc['strcpy'],
- * [Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP],
- * Fiddle::TYPE_VOIDP)
- * #=> #<Fiddle::Function:0x00000001d8ee00>
+ * @libc = DL.dlopen "/lib/libc.so.6"
+ * => #<DL::Handle:0x00000001d7a8d8>
+ * f = Fiddle::Function.new(@libc['strcpy'], [TYPE_VOIDP, TYPE_VOIDP], TYPE_VOIDP)
+ * => #<Fiddle::Function:0x00000001d8ee00>
* buff = "000"
- * #=> "000"
+ * => "000"
* str = f.call(buff, "123")
- * #=> #<Fiddle::Pointer:0x00000001d0c380 ptr=0x000000018a21b8 size=0 free=0x00000000000000>
+ * => #<DL::CPtr:0x00000001d0c380 ptr=0x000000018a21b8 size=0 free=0x00000000000000>
* str.to_s
* => "123"
*
* === ABI check
*
* @libc = DL.dlopen "/lib/libc.so.6"
- * #=> #<Fiddle::Handle:0x00000001d7a8d8>
+ * => #<DL::Handle:0x00000001d7a8d8>
* f = Fiddle::Function.new(@libc['strcpy'], [TYPE_VOIDP, TYPE_VOIDP], TYPE_VOIDP)
- * #=> #<Fiddle::Function:0x00000001d8ee00>
+ * => #<Fiddle::Function:0x00000001d8ee00>
* f.abi == Fiddle::Function::DEFAULT
- * #=> true
+ * => true
*/
cFiddleFunction = rb_define_class_under(mFiddle, "Function", rb_cObject);
@@ -226,7 +179,7 @@ Init_fiddle_function(void)
*/
rb_define_const(cFiddleFunction, "DEFAULT", INT2NUM(FFI_DEFAULT_ABI));
-#ifdef HAVE_CONST_FFI_STDCALL
+#ifdef FFI_STDCALL
/*
* Document-const: STDCALL
*
@@ -250,10 +203,10 @@ Init_fiddle_function(void)
/*
* Document-method: new
- * call-seq: new(ptr, args, ret_type, abi = DEFAULT)
+ * call-seq: new(ptr, *args, ret_type, abi = DEFAULT)
*
* Constructs a Function object.
- * * +ptr+ is a referenced function, of a Fiddle::Handle
+ * * +ptr+ is a referenced function, of a DL::Handle
* * +args+ is an Array of arguments, passed to the +ptr+ function
* * +ret_type+ is the return type of the function
* * +abi+ is the ABI of the function
diff --git a/ext/fiddle/handle.c b/ext/fiddle/handle.c
deleted file mode 100644
index 4bb402bdfa..0000000000
--- a/ext/fiddle/handle.c
+++ /dev/null
@@ -1,470 +0,0 @@
-#include <ruby.h>
-#include <fiddle.h>
-
-VALUE rb_cHandle;
-
-struct dl_handle {
- void *ptr;
- int open;
- int enable_close;
-};
-
-#ifdef _WIN32
-# ifndef _WIN32_WCE
-static void *
-w32_coredll(void)
-{
- MEMORY_BASIC_INFORMATION m;
- memset(&m, 0, sizeof(m));
- if( !VirtualQuery(_errno, &m, sizeof(m)) ) return NULL;
- return m.AllocationBase;
-}
-# endif
-
-static int
-w32_dlclose(void *ptr)
-{
-# ifndef _WIN32_WCE
- if( ptr == w32_coredll() ) return 0;
-# endif
- if( FreeLibrary((HMODULE)ptr) ) return 0;
- return errno = rb_w32_map_errno(GetLastError());
-}
-#define dlclose(ptr) w32_dlclose(ptr)
-#endif
-
-static void
-fiddle_handle_free(void *ptr)
-{
- struct dl_handle *fiddle_handle = ptr;
- if( fiddle_handle->ptr && fiddle_handle->open && fiddle_handle->enable_close ){
- dlclose(fiddle_handle->ptr);
- }
- xfree(ptr);
-}
-
-static size_t
-fiddle_handle_memsize(const void *ptr)
-{
- return ptr ? sizeof(struct dl_handle) : 0;
-}
-
-static const rb_data_type_t fiddle_handle_data_type = {
- "fiddle/handle",
- {0, fiddle_handle_free, fiddle_handle_memsize,},
-};
-
-/*
- * call-seq: close
- *
- * Close this handle.
- *
- * Calling close more than once will raise a Fiddle::DLError exception.
- */
-static VALUE
-rb_fiddle_handle_close(VALUE self)
-{
- struct dl_handle *fiddle_handle;
-
- TypedData_Get_Struct(self, struct dl_handle, &fiddle_handle_data_type, fiddle_handle);
- if(fiddle_handle->open) {
- int ret = dlclose(fiddle_handle->ptr);
- fiddle_handle->open = 0;
-
- /* Check dlclose for successful return value */
- if(ret) {
-#if defined(HAVE_DLERROR)
- rb_raise(rb_eFiddleError, "%s", dlerror());
-#else
- rb_raise(rb_eFiddleError, "could not close handle");
-#endif
- }
- return INT2NUM(ret);
- }
- rb_raise(rb_eFiddleError, "dlclose() called too many times");
-
- UNREACHABLE;
-}
-
-static VALUE
-rb_fiddle_handle_s_allocate(VALUE klass)
-{
- VALUE obj;
- struct dl_handle *fiddle_handle;
-
- obj = TypedData_Make_Struct(rb_cHandle, struct dl_handle, &fiddle_handle_data_type, fiddle_handle);
- fiddle_handle->ptr = 0;
- fiddle_handle->open = 0;
- fiddle_handle->enable_close = 0;
-
- return obj;
-}
-
-static VALUE
-predefined_fiddle_handle(void *handle)
-{
- VALUE obj = rb_fiddle_handle_s_allocate(rb_cHandle);
- struct dl_handle *fiddle_handle = DATA_PTR(obj);
-
- fiddle_handle->ptr = handle;
- fiddle_handle->open = 1;
- OBJ_FREEZE(obj);
- return obj;
-}
-
-/*
- * call-seq:
- * new(lib = nil, flags = Fiddle::RTLD_LAZY | Fiddle::RTLD_GLOBAL)
- *
- * Create a new handler that opens library named +lib+ with +flags+. If no
- * library is specified, RTLD_DEFAULT is used.
- */
-static VALUE
-rb_fiddle_handle_initialize(int argc, VALUE argv[], VALUE self)
-{
- void *ptr;
- struct dl_handle *fiddle_handle;
- VALUE lib, flag;
- char *clib;
- int cflag;
- const char *err;
-
- switch( rb_scan_args(argc, argv, "02", &lib, &flag) ){
- case 0:
- clib = NULL;
- cflag = RTLD_LAZY | RTLD_GLOBAL;
- break;
- case 1:
- clib = NIL_P(lib) ? NULL : StringValuePtr(lib);
- cflag = RTLD_LAZY | RTLD_GLOBAL;
- break;
- case 2:
- clib = NIL_P(lib) ? NULL : StringValuePtr(lib);
- cflag = NUM2INT(flag);
- break;
- default:
- rb_bug("rb_fiddle_handle_new");
- }
-
- rb_secure(2);
-
-#if defined(_WIN32)
- if( !clib ){
- HANDLE rb_libruby_handle(void);
- ptr = rb_libruby_handle();
- }
- else if( STRCASECMP(clib, "libc") == 0
-# ifdef RUBY_COREDLL
- || STRCASECMP(clib, RUBY_COREDLL) == 0
- || STRCASECMP(clib, RUBY_COREDLL".dll") == 0
-# endif
- ){
-# ifdef _WIN32_WCE
- ptr = dlopen("coredll.dll", cflag);
-# else
- ptr = w32_coredll();
-# endif
- }
- else
-#endif
- ptr = dlopen(clib, cflag);
-#if defined(HAVE_DLERROR)
- if( !ptr && (err = dlerror()) ){
- rb_raise(rb_eFiddleError, "%s", err);
- }
-#else
- if( !ptr ){
- err = dlerror();
- rb_raise(rb_eFiddleError, "%s", err);
- }
-#endif
- TypedData_Get_Struct(self, struct dl_handle, &fiddle_handle_data_type, fiddle_handle);
- if( fiddle_handle->ptr && fiddle_handle->open && fiddle_handle->enable_close ){
- dlclose(fiddle_handle->ptr);
- }
- fiddle_handle->ptr = ptr;
- fiddle_handle->open = 1;
- fiddle_handle->enable_close = 0;
-
- if( rb_block_given_p() ){
- rb_ensure(rb_yield, self, rb_fiddle_handle_close, self);
- }
-
- return Qnil;
-}
-
-/*
- * call-seq: enable_close
- *
- * Enable a call to dlclose() when this handle is garbage collected.
- */
-static VALUE
-rb_fiddle_handle_enable_close(VALUE self)
-{
- struct dl_handle *fiddle_handle;
-
- TypedData_Get_Struct(self, struct dl_handle, &fiddle_handle_data_type, fiddle_handle);
- fiddle_handle->enable_close = 1;
- return Qnil;
-}
-
-/*
- * call-seq: disable_close
- *
- * Disable a call to dlclose() when this handle is garbage collected.
- */
-static VALUE
-rb_fiddle_handle_disable_close(VALUE self)
-{
- struct dl_handle *fiddle_handle;
-
- TypedData_Get_Struct(self, struct dl_handle, &fiddle_handle_data_type, fiddle_handle);
- fiddle_handle->enable_close = 0;
- return Qnil;
-}
-
-/*
- * call-seq: close_enabled?
- *
- * Returns +true+ if dlclose() will be called when this handle is garbage collected.
- *
- * See man(3) dlclose() for more info.
- */
-static VALUE
-rb_fiddle_handle_close_enabled_p(VALUE self)
-{
- struct dl_handle *fiddle_handle;
-
- TypedData_Get_Struct(self, struct dl_handle, &fiddle_handle_data_type, fiddle_handle);
-
- if(fiddle_handle->enable_close) return Qtrue;
- return Qfalse;
-}
-
-/*
- * call-seq: to_i
- *
- * Returns the memory address for this handle.
- */
-static VALUE
-rb_fiddle_handle_to_i(VALUE self)
-{
- struct dl_handle *fiddle_handle;
-
- TypedData_Get_Struct(self, struct dl_handle, &fiddle_handle_data_type, fiddle_handle);
- return PTR2NUM(fiddle_handle);
-}
-
-static VALUE fiddle_handle_sym(void *handle, const char *symbol);
-
-/*
- * Document-method: sym
- *
- * call-seq: sym(name)
- *
- * Get the address as an Integer for the function named +name+.
- */
-static VALUE
-rb_fiddle_handle_sym(VALUE self, VALUE sym)
-{
- struct dl_handle *fiddle_handle;
-
- TypedData_Get_Struct(self, struct dl_handle, &fiddle_handle_data_type, fiddle_handle);
- if( ! fiddle_handle->open ){
- rb_raise(rb_eFiddleError, "closed handle");
- }
-
- return fiddle_handle_sym(fiddle_handle->ptr, StringValueCStr(sym));
-}
-
-#ifndef RTLD_NEXT
-#define RTLD_NEXT NULL
-#endif
-#ifndef RTLD_DEFAULT
-#define RTLD_DEFAULT NULL
-#endif
-
-/*
- * Document-method: sym
- *
- * call-seq: sym(name)
- *
- * Get the address as an Integer for the function named +name+. The function
- * is searched via dlsym on RTLD_NEXT.
- *
- * See man(3) dlsym() for more info.
- */
-static VALUE
-rb_fiddle_handle_s_sym(VALUE self, VALUE sym)
-{
- return fiddle_handle_sym(RTLD_NEXT, StringValueCStr(sym));
-}
-
-static VALUE
-fiddle_handle_sym(void *handle, const char *name)
-{
-#if defined(HAVE_DLERROR)
- const char *err;
-# define CHECK_DLERROR if( err = dlerror() ){ func = 0; }
-#else
-# define CHECK_DLERROR
-#endif
- void (*func)();
-
- rb_secure(2);
-#ifdef HAVE_DLERROR
- dlerror();
-#endif
- func = (void (*)())(VALUE)dlsym(handle, name);
- CHECK_DLERROR;
-#if defined(FUNC_STDCALL)
- if( !func ){
- int i;
- int len = (int)strlen(name);
- char *name_n;
-#if defined(__CYGWIN__) || defined(_WIN32) || defined(__MINGW32__)
- {
- char *name_a = (char*)xmalloc(len+2);
- strcpy(name_a, name);
- name_n = name_a;
- name_a[len] = 'A';
- name_a[len+1] = '\0';
- func = dlsym(handle, name_a);
- CHECK_DLERROR;
- if( func ) goto found;
- name_n = xrealloc(name_a, len+6);
- }
-#else
- name_n = (char*)xmalloc(len+6);
-#endif
- memcpy(name_n, name, len);
- name_n[len++] = '@';
- for( i = 0; i < 256; i += 4 ){
- sprintf(name_n + len, "%d", i);
- func = dlsym(handle, name_n);
- CHECK_DLERROR;
- if( func ) break;
- }
- if( func ) goto found;
- name_n[len-1] = 'A';
- name_n[len++] = '@';
- for( i = 0; i < 256; i += 4 ){
- sprintf(name_n + len, "%d", i);
- func = dlsym(handle, name_n);
- CHECK_DLERROR;
- if( func ) break;
- }
- found:
- xfree(name_n);
- }
-#endif
- if( !func ){
- rb_raise(rb_eFiddleError, "unknown symbol \"%s\"", name);
- }
-
- return PTR2NUM(func);
-}
-
-void
-Init_fiddle_handle(void)
-{
- /*
- * Document-class: Fiddle::Handle
- *
- * The Fiddle::Handle is the manner to access the dynamic library
- *
- * == Example
- *
- * === Setup
- *
- * libc_so = "/lib64/libc.so.6"
- * => "/lib64/libc.so.6"
- * @handle = Fiddle::Handle.new(libc_so)
- * => #<Fiddle::Handle:0x00000000d69ef8>
- *
- * === Setup, with flags
- *
- * libc_so = "/lib64/libc.so.6"
- * => "/lib64/libc.so.6"
- * @handle = Fiddle::Handle.new(libc_so, Fiddle::RTLD_LAZY | Fiddle::RTLD_GLOBAL)
- * => #<Fiddle::Handle:0x00000000d69ef8>
- *
- * See RTLD_LAZY and RTLD_GLOBAL
- *
- * === Addresses to symbols
- *
- * strcpy_addr = @handle['strcpy']
- * => 140062278451968
- *
- * or
- *
- * strcpy_addr = @handle.sym('strcpy')
- * => 140062278451968
- *
- */
- rb_cHandle = rb_define_class_under(mFiddle, "Handle", rb_cObject);
- rb_define_alloc_func(rb_cHandle, rb_fiddle_handle_s_allocate);
- rb_define_singleton_method(rb_cHandle, "sym", rb_fiddle_handle_s_sym, 1);
- rb_define_singleton_method(rb_cHandle, "[]", rb_fiddle_handle_s_sym, 1);
-
- /* Document-const: NEXT
- *
- * A predefined pseudo-handle of RTLD_NEXT
- *
- * Which will find the next occurrence of a function in the search order
- * after the current library.
- */
- rb_define_const(rb_cHandle, "NEXT", predefined_fiddle_handle(RTLD_NEXT));
-
- /* Document-const: DEFAULT
- *
- * A predefined pseudo-handle of RTLD_DEFAULT
- *
- * Which will find the first occurrence of the desired symbol using the
- * default library search order
- */
- rb_define_const(rb_cHandle, "DEFAULT", predefined_fiddle_handle(RTLD_DEFAULT));
-
- /* Document-const: RTLD_GLOBAL
- *
- * rtld Fiddle::Handle flag.
- *
- * The symbols defined by this library will be made available for symbol
- * resolution of subsequently loaded libraries.
- */
- rb_define_const(rb_cHandle, "RTLD_GLOBAL", INT2NUM(RTLD_GLOBAL));
-
- /* Document-const: RTLD_LAZY
- *
- * rtld Fiddle::Handle flag.
- *
- * Perform lazy binding. Only resolve symbols as the code that references
- * them is executed. If the symbol is never referenced, then it is never
- * resolved. (Lazy binding is only performed for function references;
- * references to variables are always immediately bound when the library
- * is loaded.)
- */
- rb_define_const(rb_cHandle, "RTLD_LAZY", INT2NUM(RTLD_LAZY));
-
- /* Document-const: RTLD_NOW
- *
- * rtld Fiddle::Handle flag.
- *
- * If this value is specified or the environment variable LD_BIND_NOW is
- * set to a nonempty string, all undefined symbols in the library are
- * resolved before Fiddle.dlopen returns. If this cannot be done an error
- * is returned.
- */
- rb_define_const(rb_cHandle, "RTLD_NOW", INT2NUM(RTLD_NOW));
-
- rb_define_method(rb_cHandle, "initialize", rb_fiddle_handle_initialize, -1);
- rb_define_method(rb_cHandle, "to_i", rb_fiddle_handle_to_i, 0);
- rb_define_method(rb_cHandle, "close", rb_fiddle_handle_close, 0);
- rb_define_method(rb_cHandle, "sym", rb_fiddle_handle_sym, 1);
- rb_define_method(rb_cHandle, "[]", rb_fiddle_handle_sym, 1);
- rb_define_method(rb_cHandle, "disable_close", rb_fiddle_handle_disable_close, 0);
- rb_define_method(rb_cHandle, "enable_close", rb_fiddle_handle_enable_close, 0);
- rb_define_method(rb_cHandle, "close_enabled?", rb_fiddle_handle_close_enabled_p, 0);
-}
-
-/* vim: set noet sws=4 sw=4: */
diff --git a/ext/fiddle/lib/fiddle.rb b/ext/fiddle/lib/fiddle.rb
index c8a7ef1b05..7d55a1f7ad 100644
--- a/ext/fiddle/lib/fiddle.rb
+++ b/ext/fiddle/lib/fiddle.rb
@@ -1,8 +1,13 @@
require 'fiddle.so'
require 'fiddle/function'
require 'fiddle/closure'
+require 'dl' unless Object.const_defined?(:DL)
module Fiddle
+
+ # A reference to DL::CPtr
+ Pointer = DL::CPtr
+
if WINDOWS
# Returns the last win32 +Error+ of the current executing +Thread+ or nil
# if none
@@ -26,21 +31,4 @@ module Fiddle
Thread.current[:__DL2_LAST_ERROR__] = error
Thread.current[:__FIDDLE_LAST_ERROR__] = error
end
-
- # call-seq: dlopen(library) => Fiddle::Handle
- #
- # Creates a new handler that opens +library+, and returns an instance of
- # Fiddle::Handle.
- #
- # See Fiddle::Handle.new for more.
- def dlopen library
- Fiddle::Handle.new library
- end
- module_function :dlopen
-
- # Add constants for backwards compat
-
- RTLD_GLOBAL = Handle::RTLD_GLOBAL # :nodoc:
- RTLD_LAZY = Handle::RTLD_LAZY # :nodoc:
- RTLD_NOW = Handle::RTLD_NOW # :nodoc:
end
diff --git a/ext/fiddle/lib/fiddle/cparser.rb b/ext/fiddle/lib/fiddle/cparser.rb
deleted file mode 100644
index 43fb184a12..0000000000
--- a/ext/fiddle/lib/fiddle/cparser.rb
+++ /dev/null
@@ -1,176 +0,0 @@
-module Fiddle
- # A mixin that provides methods for parsing C struct and prototype signatures.
- #
- # == Example
- # require 'fiddle/import'
- #
- # include Fiddle::CParser
- # #=> Object
- #
- # parse_ctype('int increment(int)')
- # #=> ["increment", Fiddle::TYPE_INT, [Fiddle::TYPE_INT]]
- #
- module CParser
- # Parses a C struct's members
- #
- # Example:
- #
- # include Fiddle::CParser
- # #=> Object
- #
- # parse_struct_signature(['int i', 'char c'])
- # #=> [[Fiddle::TYPE_INT, Fiddle::TYPE_CHAR], ["i", "c"]]
- #
- def parse_struct_signature(signature, tymap=nil)
- if( signature.is_a?(String) )
- signature = signature.split(/\s*,\s*/)
- end
- mems = []
- tys = []
- signature.each{|msig|
- tks = msig.split(/\s+(\*)?/)
- ty = tks[0..-2].join(" ")
- member = tks[-1]
-
- case ty
- when /\[(\d+)\]/
- n = $1.to_i
- ty.gsub!(/\s*\[\d+\]/,"")
- ty = [ty, n]
- when /\[\]/
- ty.gsub!(/\s*\[\]/, "*")
- end
-
- case member
- when /\[(\d+)\]/
- ty = [ty, $1.to_i]
- member.gsub!(/\s*\[\d+\]/,"")
- when /\[\]/
- ty = ty + "*"
- member.gsub!(/\s*\[\]/, "")
- end
-
- mems.push(member)
- tys.push(parse_ctype(ty,tymap))
- }
- return tys, mems
- end
-
- # Parses a C prototype signature
- #
- # If Hash +tymap+ is provided, the return value and the arguments from the
- # +signature+ are expected to be keys, and the value will be the C type to
- # be looked up.
- #
- # Example:
- #
- # include Fiddle::CParser
- # #=> Object
- #
- # parse_signature('double sum(double, double)')
- # #=> ["sum", Fiddle::TYPE_DOUBLE, [Fiddle::TYPE_DOUBLE, Fiddle::TYPE_DOUBLE]]
- #
- def parse_signature(signature, tymap=nil)
- tymap ||= {}
- signature = signature.gsub(/\s+/, " ").strip
- case signature
- when /^([\w@\*\s]+)\(([\w\*\s\,\[\]]*)\)$/
- ret = $1
- (args = $2).strip!
- ret = ret.split(/\s+/)
- args = args.split(/\s*,\s*/)
- func = ret.pop
- if( func =~ /^\*/ )
- func.gsub!(/^\*+/,"")
- ret.push("*")
- end
- ret = ret.join(" ")
- return [func, parse_ctype(ret, tymap), args.collect{|arg| parse_ctype(arg, tymap)}]
- else
- raise(RuntimeError,"can't parse the function prototype: #{signature}")
- end
- end
-
- # Given a String of C type +ty+, returns the corresponding Fiddle constant.
- #
- # +ty+ can also accept an Array of C type Strings, and will be returned in
- # a corresponding Array.
- #
- # If Hash +tymap+ is provided, +ty+ is expected to be the key, and the
- # value will be the C type to be looked up.
- #
- # Example:
- #
- # include Fiddle::CParser
- # #=> Object
- #
- # parse_ctype('int')
- # #=> Fiddle::TYPE_INT
- #
- # parse_ctype('double')
- # #=> Fiddle::TYPE_DOUBLE
- #
- # parse_ctype('unsigned char')
- # #=> -Fiddle::TYPE_CHAR
- #
- def parse_ctype(ty, tymap=nil)
- tymap ||= {}
- case ty
- when Array
- return [parse_ctype(ty[0], tymap), ty[1]]
- when "void"
- return TYPE_VOID
- when "char"
- return TYPE_CHAR
- when "unsigned char"
- return -TYPE_CHAR
- when "short"
- return TYPE_SHORT
- when "unsigned short"
- return -TYPE_SHORT
- when "int"
- return TYPE_INT
- when "unsigned int", 'uint'
- return -TYPE_INT
- when "long"
- return TYPE_LONG
- when "unsigned long"
- return -TYPE_LONG
- when "long long"
- if( defined?(TYPE_LONG_LONG) )
- return TYPE_LONG_LONG
- else
- raise(RuntimeError, "unsupported type: #{ty}")
- end
- when "unsigned long long"
- if( defined?(TYPE_LONG_LONG) )
- return -TYPE_LONG_LONG
- else
- raise(RuntimeError, "unsupported type: #{ty}")
- end
- when "float"
- return TYPE_FLOAT
- when "double"
- return TYPE_DOUBLE
- when "size_t"
- return TYPE_SIZE_T
- when "ssize_t"
- return TYPE_SSIZE_T
- when "ptrdiff_t"
- return TYPE_PTRDIFF_T
- when "intptr_t"
- return TYPE_INTPTR_T
- when "uintptr_t"
- return TYPE_UINTPTR_T
- when /\*/, /\[\s*\]/
- return TYPE_VOIDP
- else
- if( tymap[ty] )
- return parse_ctype(tymap[ty], tymap)
- else
- raise(DLError, "unknown type: #{ty}")
- end
- end
- end
- end
-end
diff --git a/ext/fiddle/lib/fiddle/function.rb b/ext/fiddle/lib/fiddle/function.rb
index ab7496e944..1657682498 100644
--- a/ext/fiddle/lib/fiddle/function.rb
+++ b/ext/fiddle/lib/fiddle/function.rb
@@ -2,16 +2,5 @@ module Fiddle
class Function
# The ABI of the Function.
attr_reader :abi
-
- # The address of this function
- attr_reader :ptr
-
- # The name of this function
- attr_reader :name
-
- # The integer memory location of this function
- def to_i
- ptr.to_i
- end
end
end
diff --git a/ext/fiddle/lib/fiddle/import.rb b/ext/fiddle/lib/fiddle/import.rb
deleted file mode 100644
index ec5ee94dcf..0000000000
--- a/ext/fiddle/lib/fiddle/import.rb
+++ /dev/null
@@ -1,314 +0,0 @@
-require 'fiddle'
-require 'fiddle/struct'
-require 'fiddle/cparser'
-
-module Fiddle
-
- # Used internally by Fiddle::Importer
- class CompositeHandler
- # Create a new handler with the open +handlers+
- #
- # Used internally by Fiddle::Importer.dlload
- def initialize(handlers)
- @handlers = handlers
- end
-
- # Array of the currently loaded libraries.
- def handlers()
- @handlers
- end
-
- # Returns the address as an Integer from any handlers with the function
- # named +symbol+.
- #
- # Raises a DLError if the handle is closed.
- def sym(symbol)
- @handlers.each{|handle|
- if( handle )
- begin
- addr = handle.sym(symbol)
- return addr
- rescue DLError
- end
- end
- }
- return nil
- end
-
- # See Fiddle::CompositeHandler.sym
- def [](symbol)
- sym(symbol)
- end
- end
-
- # A DSL that provides the means to dynamically load libraries and build
- # modules around them including calling extern functions within the C
- # library that has been loaded.
- #
- # == Example
- #
- # require 'fiddle'
- # require 'fiddle/import'
- #
- # module LibSum
- # extend Fiddle::Importer
- # dlload './libsum.so'
- # extern 'double sum(double*, int)'
- # extern 'double split(double)'
- # end
- #
- module Importer
- include Fiddle
- include CParser
- extend Importer
-
- # Creates an array of handlers for the given +libs+, can be an instance of
- # Fiddle::Handle, Fiddle::Importer, or will create a new istance of
- # Fiddle::Handle using Fiddle.dlopen
- #
- # Raises a DLError if the library cannot be loaded.
- #
- # See Fiddle.dlopen
- def dlload(*libs)
- handles = libs.collect{|lib|
- case lib
- when nil
- nil
- when Handle
- lib
- when Importer
- lib.handlers
- else
- begin
- Fiddle.dlopen(lib)
- rescue DLError
- raise(DLError, "can't load #{lib}")
- end
- end
- }.flatten()
- @handler = CompositeHandler.new(handles)
- @func_map = {}
- @type_alias = {}
- end
-
- # Sets the type alias for +alias_type+ as +orig_type+
- def typealias(alias_type, orig_type)
- @type_alias[alias_type] = orig_type
- end
-
- # Returns the sizeof +ty+, using Fiddle::Importer.parse_ctype to determine
- # the C type and the appropriate Fiddle constant.
- def sizeof(ty)
- case ty
- when String
- ty = parse_ctype(ty, @type_alias).abs()
- case ty
- when TYPE_CHAR
- return SIZEOF_CHAR
- when TYPE_SHORT
- return SIZEOF_SHORT
- when TYPE_INT
- return SIZEOF_INT
- when TYPE_LONG
- return SIZEOF_LONG
- when TYPE_LONG_LONG
- return SIZEOF_LONG_LONG
- when TYPE_FLOAT
- return SIZEOF_FLOAT
- when TYPE_DOUBLE
- return SIZEOF_DOUBLE
- when TYPE_VOIDP
- return SIZEOF_VOIDP
- else
- raise(DLError, "unknown type: #{ty}")
- end
- when Class
- if( ty.instance_methods().include?(:to_ptr) )
- return ty.size()
- end
- end
- return Pointer[ty].size()
- end
-
- def parse_bind_options(opts)
- h = {}
- while( opt = opts.shift() )
- case opt
- when :stdcall, :cdecl
- h[:call_type] = opt
- when :carried, :temp, :temporal, :bind
- h[:callback_type] = opt
- h[:carrier] = opts.shift()
- else
- h[opt] = true
- end
- end
- h
- end
- private :parse_bind_options
-
- # :stopdoc:
- CALL_TYPE_TO_ABI = Hash.new { |h, k|
- raise RuntimeError, "unsupported call type: #{k}"
- }.merge({ :stdcall => (Function::STDCALL rescue Function::DEFAULT),
- :cdecl => Function::DEFAULT,
- nil => Function::DEFAULT
- }).freeze
- private_constant :CALL_TYPE_TO_ABI
- # :startdoc:
-
- # Creates a global method from the given C +signature+.
- def extern(signature, *opts)
- symname, ctype, argtype = parse_signature(signature, @type_alias)
- opt = parse_bind_options(opts)
- f = import_function(symname, ctype, argtype, opt[:call_type])
- name = symname.gsub(/@.+/,'')
- @func_map[name] = f
- # define_method(name){|*args,&block| f.call(*args,&block)}
- begin
- /^(.+?):(\d+)/ =~ caller.first
- file, line = $1, $2.to_i
- rescue
- file, line = __FILE__, __LINE__+3
- end
- module_eval(<<-EOS, file, line)
- def #{name}(*args, &block)
- @func_map['#{name}'].call(*args,&block)
- end
- EOS
- module_function(name)
- f
- end
-
- # Creates a global method from the given C +signature+ using the given
- # +opts+ as bind parameters with the given block.
- def bind(signature, *opts, &blk)
- name, ctype, argtype = parse_signature(signature, @type_alias)
- h = parse_bind_options(opts)
- case h[:callback_type]
- when :bind, nil
- f = bind_function(name, ctype, argtype, h[:call_type], &blk)
- else
- raise(RuntimeError, "unknown callback type: #{h[:callback_type]}")
- end
- @func_map[name] = f
- #define_method(name){|*args,&block| f.call(*args,&block)}
- begin
- /^(.+?):(\d+)/ =~ caller.first
- file, line = $1, $2.to_i
- rescue
- file, line = __FILE__, __LINE__+3
- end
- module_eval(<<-EOS, file, line)
- def #{name}(*args,&block)
- @func_map['#{name}'].call(*args,&block)
- end
- EOS
- module_function(name)
- f
- end
-
- # Creates a class to wrap the C struct described by +signature+.
- #
- # MyStruct = struct ['int i', 'char c']
- def struct(signature)
- tys, mems = parse_struct_signature(signature, @type_alias)
- Fiddle::CStructBuilder.create(CStruct, tys, mems)
- end
-
- # Creates a class to wrap the C union described by +signature+.
- #
- # MyUnion = union ['int i', 'char c']
- def union(signature)
- tys, mems = parse_struct_signature(signature, @type_alias)
- Fiddle::CStructBuilder.create(CUnion, tys, mems)
- end
-
- # Returns the function mapped to +name+, that was created by either
- # Fiddle::Importer.extern or Fiddle::Importer.bind
- def [](name)
- @func_map[name]
- end
-
- # Creates a class to wrap the C struct with the value +ty+
- #
- # See also Fiddle::Importer.struct
- def create_value(ty, val=nil)
- s = struct([ty + " value"])
- ptr = s.malloc()
- if( val )
- ptr.value = val
- end
- return ptr
- end
- alias value create_value
-
- # Returns a new instance of the C struct with the value +ty+ at the +addr+
- # address.
- def import_value(ty, addr)
- s = struct([ty + " value"])
- ptr = s.new(addr)
- return ptr
- end
-
-
- # The Fiddle::CompositeHandler instance
- #
- # Will raise an error if no handlers are open.
- def handler
- @handler or raise "call dlload before importing symbols and functions"
- end
-
- # Returns a new Fiddle::Pointer instance at the memory address of the given
- # +name+ symbol.
- #
- # Raises a DLError if the +name+ doesn't exist.
- #
- # See Fiddle::CompositeHandler.sym and Fiddle::Handle.sym
- def import_symbol(name)
- addr = handler.sym(name)
- if( !addr )
- raise(DLError, "cannot find the symbol: #{name}")
- end
- Pointer.new(addr)
- end
-
- # Returns a new Fiddle::Function instance at the memory address of the given
- # +name+ function.
- #
- # Raises a DLError if the +name+ doesn't exist.
- #
- # * +argtype+ is an Array of arguments, passed to the +name+ function.
- # * +ctype+ is the return type of the function
- # * +call_type+ is the ABI of the function
- #
- # See also Fiddle:Function.new
- #
- # See Fiddle::CompositeHandler.sym and Fiddle::Handler.sym
- def import_function(name, ctype, argtype, call_type = nil)
- addr = handler.sym(name)
- if( !addr )
- raise(DLError, "cannot find the function: #{name}()")
- end
- Function.new(addr, argtype, ctype, CALL_TYPE_TO_ABI[call_type],
- name: name)
- end
-
- # Returns a new closure wrapper for the +name+ function.
- #
- # * +ctype+ is the return type of the function
- # * +argtype+ is an Array of arguments, passed to the callback function
- # * +call_type+ is the abi of the closure
- # * +block+ is passed to the callback
- #
- # See Fiddle::Closure
- def bind_function(name, ctype, argtype, call_type = nil, &block)
- abi = CALL_TYPE_TO_ABI[call_type]
- closure = Class.new(Fiddle::Closure) {
- define_method(:call, block)
- }.new(ctype, argtype, abi)
-
- Function.new(closure, argtype, ctype, abi, name: name)
- end
- end
-end
diff --git a/ext/fiddle/lib/fiddle/pack.rb b/ext/fiddle/lib/fiddle/pack.rb
deleted file mode 100644
index e4e9542cc0..0000000000
--- a/ext/fiddle/lib/fiddle/pack.rb
+++ /dev/null
@@ -1,128 +0,0 @@
-require 'fiddle'
-
-module Fiddle
- module PackInfo # :nodoc: all
- ALIGN_MAP = {
- TYPE_VOIDP => ALIGN_VOIDP,
- TYPE_CHAR => ALIGN_CHAR,
- TYPE_SHORT => ALIGN_SHORT,
- TYPE_INT => ALIGN_INT,
- TYPE_LONG => ALIGN_LONG,
- TYPE_FLOAT => ALIGN_FLOAT,
- TYPE_DOUBLE => ALIGN_DOUBLE,
- -TYPE_CHAR => ALIGN_CHAR,
- -TYPE_SHORT => ALIGN_SHORT,
- -TYPE_INT => ALIGN_INT,
- -TYPE_LONG => ALIGN_LONG,
- }
-
- PACK_MAP = {
- TYPE_VOIDP => ((SIZEOF_VOIDP == SIZEOF_LONG_LONG) ? "q" : "l!"),
- TYPE_CHAR => "c",
- TYPE_SHORT => "s!",
- TYPE_INT => "i!",
- TYPE_LONG => "l!",
- TYPE_FLOAT => "f",
- TYPE_DOUBLE => "d",
- -TYPE_CHAR => "c",
- -TYPE_SHORT => "s!",
- -TYPE_INT => "i!",
- -TYPE_LONG => "l!",
- }
-
- SIZE_MAP = {
- TYPE_VOIDP => SIZEOF_VOIDP,
- TYPE_CHAR => SIZEOF_CHAR,
- TYPE_SHORT => SIZEOF_SHORT,
- TYPE_INT => SIZEOF_INT,
- TYPE_LONG => SIZEOF_LONG,
- TYPE_FLOAT => SIZEOF_FLOAT,
- TYPE_DOUBLE => SIZEOF_DOUBLE,
- -TYPE_CHAR => SIZEOF_CHAR,
- -TYPE_SHORT => SIZEOF_SHORT,
- -TYPE_INT => SIZEOF_INT,
- -TYPE_LONG => SIZEOF_LONG,
- }
- if defined?(TYPE_LONG_LONG)
- ALIGN_MAP[TYPE_LONG_LONG] = ALIGN_MAP[-TYPE_LONG_LONG] = ALIGN_LONG_LONG
- PACK_MAP[TYPE_LONG_LONG] = PACK_MAP[-TYPE_LONG_LONG] = "q"
- SIZE_MAP[TYPE_LONG_LONG] = SIZE_MAP[-TYPE_LONG_LONG] = SIZEOF_LONG_LONG
- end
-
- def align(addr, align)
- d = addr % align
- if( d == 0 )
- addr
- else
- addr + (align - d)
- end
- end
- module_function :align
- end
-
- class Packer # :nodoc: all
- include PackInfo
-
- def self.[](*types)
- new(types)
- end
-
- def initialize(types)
- parse_types(types)
- end
-
- def size()
- @size
- end
-
- def pack(ary)
- case SIZEOF_VOIDP
- when SIZEOF_LONG
- ary.pack(@template)
- when SIZEOF_LONG_LONG
- ary.pack(@template)
- else
- raise(RuntimeError, "sizeof(void*)?")
- end
- end
-
- def unpack(ary)
- case SIZEOF_VOIDP
- when SIZEOF_LONG
- ary.join().unpack(@template)
- when SIZEOF_LONG_LONG
- ary.join().unpack(@template)
- else
- raise(RuntimeError, "sizeof(void*)?")
- end
- end
-
- private
-
- def parse_types(types)
- @template = ""
- addr = 0
- types.each{|t|
- orig_addr = addr
- if( t.is_a?(Array) )
- addr = align(orig_addr, ALIGN_MAP[TYPE_VOIDP])
- else
- addr = align(orig_addr, ALIGN_MAP[t])
- end
- d = addr - orig_addr
- if( d > 0 )
- @template << "x#{d}"
- end
- if( t.is_a?(Array) )
- @template << (PACK_MAP[t[0]] * t[1])
- addr += (SIZE_MAP[t[0]] * t[1])
- else
- @template << PACK_MAP[t]
- addr += SIZE_MAP[t]
- end
- }
- addr = align(addr, ALIGN_MAP[TYPE_VOIDP])
- @size = addr
- end
- end
-end
diff --git a/ext/fiddle/lib/fiddle/struct.rb b/ext/fiddle/lib/fiddle/struct.rb
deleted file mode 100644
index 695a4d2247..0000000000
--- a/ext/fiddle/lib/fiddle/struct.rb
+++ /dev/null
@@ -1,243 +0,0 @@
-require 'fiddle'
-require 'fiddle/value'
-require 'fiddle/pack'
-
-module Fiddle
- # C struct shell
- class CStruct
- # accessor to Fiddle::CStructEntity
- def CStruct.entity_class
- CStructEntity
- end
- end
-
- # C union shell
- class CUnion
- # accessor to Fiddle::CUnionEntity
- def CUnion.entity_class
- CUnionEntity
- end
- end
-
- # Used to construct C classes (CUnion, CStruct, etc)
- #
- # Fiddle::Importer#struct and Fiddle::Importer#union wrap this functionality in an
- # easy-to-use manner.
- module CStructBuilder
- # Construct a new class given a C:
- # * class +klass+ (CUnion, CStruct, or other that provide an
- # #entity_class)
- # * +types+ (Fiddle::TYPE_INT, Fiddle::TYPE_SIZE_T, etc., see the C types
- # constants)
- # * corresponding +members+
- #
- # Fiddle::Importer#struct and Fiddle::Importer#union wrap this functionality in an
- # easy-to-use manner.
- #
- # Example:
- #
- # require 'fiddle/struct'
- # require 'fiddle/cparser'
- #
- # include Fiddle::CParser
- #
- # types, members = parse_struct_signature(['int i','char c'])
- #
- # MyStruct = Fiddle::CStructBuilder.create(Fiddle::CUnion, types, members)
- #
- # obj = MyStruct.allocate
- #
- def create(klass, types, members)
- new_class = Class.new(klass){
- define_method(:initialize){|addr|
- @entity = klass.entity_class.new(addr, types)
- @entity.assign_names(members)
- }
- define_method(:to_ptr){ @entity }
- define_method(:to_i){ @entity.to_i }
- members.each{|name|
- define_method(name){ @entity[name] }
- define_method(name + "="){|val| @entity[name] = val }
- }
- }
- size = klass.entity_class.size(types)
- new_class.module_eval(<<-EOS, __FILE__, __LINE__+1)
- def new_class.size()
- #{size}
- end
- def new_class.malloc()
- addr = Fiddle.malloc(#{size})
- new(addr)
- end
- EOS
- return new_class
- end
- module_function :create
- end
-
- # A C struct wrapper
- class CStructEntity < Fiddle::Pointer
- include PackInfo
- include ValueUtil
-
- # Allocates a C struct with the +types+ provided.
- #
- # When the instance is garbage collected, the C function +func+ is called.
- def CStructEntity.malloc(types, func = nil)
- addr = Fiddle.malloc(CStructEntity.size(types))
- CStructEntity.new(addr, types, func)
- end
-
- # Returns the offset for the packed sizes for the given +types+.
- #
- # Fiddle::CStructEntity.size(
- # [ Fiddle::TYPE_DOUBLE,
- # Fiddle::TYPE_INT,
- # Fiddle::TYPE_CHAR,
- # Fiddle::TYPE_VOIDP ]) #=> 24
- def CStructEntity.size(types)
- offset = 0
-
- max_align = types.map { |type, count = 1|
- last_offset = offset
-
- align = PackInfo::ALIGN_MAP[type]
- offset = PackInfo.align(last_offset, align) +
- (PackInfo::SIZE_MAP[type] * count)
-
- align
- }.max
-
- PackInfo.align(offset, max_align)
- end
-
- # Wraps the C pointer +addr+ as a C struct with the given +types+.
- #
- # When the instance is garbage collected, the C function +func+ is called.
- #
- # See also Fiddle::Pointer.new
- def initialize(addr, types, func = nil)
- set_ctypes(types)
- super(addr, @size, func)
- end
-
- # Set the names of the +members+ in this C struct
- def assign_names(members)
- @members = members
- end
-
- # Calculates the offsets and sizes for the given +types+ in the struct.
- def set_ctypes(types)
- @ctypes = types
- @offset = []
- offset = 0
-
- max_align = types.map { |type, count = 1|
- orig_offset = offset
- align = ALIGN_MAP[type]
- offset = PackInfo.align(orig_offset, align)
-
- @offset << offset
-
- offset += (SIZE_MAP[type] * count)
-
- align
- }.max
-
- @size = PackInfo.align(offset, max_align)
- end
-
- # Fetch struct member +name+
- def [](name)
- idx = @members.index(name)
- if( idx.nil? )
- raise(ArgumentError, "no such member: #{name}")
- end
- ty = @ctypes[idx]
- if( ty.is_a?(Array) )
- r = super(@offset[idx], SIZE_MAP[ty[0]] * ty[1])
- else
- r = super(@offset[idx], SIZE_MAP[ty.abs])
- end
- packer = Packer.new([ty])
- val = packer.unpack([r])
- case ty
- when Array
- case ty[0]
- when TYPE_VOIDP
- val = val.collect{|v| Pointer.new(v)}
- end
- when TYPE_VOIDP
- val = Pointer.new(val[0])
- else
- val = val[0]
- end
- if( ty.is_a?(Integer) && (ty < 0) )
- return unsigned_value(val, ty)
- elsif( ty.is_a?(Array) && (ty[0] < 0) )
- return val.collect{|v| unsigned_value(v,ty[0])}
- else
- return val
- end
- end
-
- # Set struct member +name+, to value +val+
- def []=(name, val)
- idx = @members.index(name)
- if( idx.nil? )
- raise(ArgumentError, "no such member: #{name}")
- end
- ty = @ctypes[idx]
- packer = Packer.new([ty])
- val = wrap_arg(val, ty, [])
- buff = packer.pack([val].flatten())
- super(@offset[idx], buff.size, buff)
- if( ty.is_a?(Integer) && (ty < 0) )
- return unsigned_value(val, ty)
- elsif( ty.is_a?(Array) && (ty[0] < 0) )
- return val.collect{|v| unsigned_value(v,ty[0])}
- else
- return val
- end
- end
-
- def to_s() # :nodoc:
- super(@size)
- end
- end
-
- # A C union wrapper
- class CUnionEntity < CStructEntity
- include PackInfo
-
- # Allocates a C union the +types+ provided.
- #
- # When the instance is garbage collected, the C function +func+ is called.
- def CUnionEntity.malloc(types, func=nil)
- addr = Fiddle.malloc(CUnionEntity.size(types))
- CUnionEntity.new(addr, types, func)
- end
-
- # Returns the size needed for the union with the given +types+.
- #
- # Fiddle::CUnionEntity.size(
- # [ Fiddle::TYPE_DOUBLE,
- # Fiddle::TYPE_INT,
- # Fiddle::TYPE_CHAR,
- # Fiddle::TYPE_VOIDP ]) #=> 8
- def CUnionEntity.size(types)
- types.map { |type, count = 1|
- PackInfo::SIZE_MAP[type] * count
- }.max
- end
-
- # Calculate the necessary offset and for each union member with the given
- # +types+
- def set_ctypes(types)
- @ctypes = types
- @offset = Array.new(types.length, 0)
- @size = self.class.size types
- end
- end
-end
-
diff --git a/ext/fiddle/lib/fiddle/types.rb b/ext/fiddle/lib/fiddle/types.rb
deleted file mode 100644
index 02c1d25a37..0000000000
--- a/ext/fiddle/lib/fiddle/types.rb
+++ /dev/null
@@ -1,71 +0,0 @@
-module Fiddle
- # Adds Windows type aliases to the including class for use with
- # Fiddle::Importer.
- #
- # The aliases added are:
- # * ATOM
- # * BOOL
- # * BYTE
- # * DWORD
- # * DWORD32
- # * DWORD64
- # * HANDLE
- # * HDC
- # * HINSTANCE
- # * HWND
- # * LPCSTR
- # * LPSTR
- # * PBYTE
- # * PDWORD
- # * PHANDLE
- # * PVOID
- # * PWORD
- # * UCHAR
- # * UINT
- # * ULONG
- # * WORD
- module Win32Types
- def included(m) # :nodoc:
- m.module_eval{
- typealias "DWORD", "unsigned long"
- typealias "PDWORD", "unsigned long *"
- typealias "DWORD32", "unsigned long"
- typealias "DWORD64", "unsigned long long"
- typealias "WORD", "unsigned short"
- typealias "PWORD", "unsigned short *"
- typealias "BOOL", "int"
- typealias "ATOM", "int"
- typealias "BYTE", "unsigned char"
- typealias "PBYTE", "unsigned char *"
- typealias "UINT", "unsigned int"
- typealias "ULONG", "unsigned long"
- typealias "UCHAR", "unsigned char"
- typealias "HANDLE", "uintptr_t"
- typealias "PHANDLE", "void*"
- typealias "PVOID", "void*"
- typealias "LPCSTR", "char*"
- typealias "LPSTR", "char*"
- typealias "HINSTANCE", "unsigned int"
- typealias "HDC", "unsigned int"
- typealias "HWND", "unsigned int"
- }
- end
- module_function :included
- end
-
- # Adds basic type aliases to the including class for use with Fiddle::Importer.
- #
- # The aliases added are +uint+ and +u_int+ (<tt>unsigned int</tt>) and
- # +ulong+ and +u_long+ (<tt>unsigned long</tt>)
- module BasicTypes
- def included(m) # :nodoc:
- m.module_eval{
- typealias "uint", "unsigned int"
- typealias "u_int", "unsigned int"
- typealias "ulong", "unsigned long"
- typealias "u_long", "unsigned long"
- }
- end
- module_function :included
- end
-end
diff --git a/ext/fiddle/lib/fiddle/value.rb b/ext/fiddle/lib/fiddle/value.rb
deleted file mode 100644
index 8d71e47ce6..0000000000
--- a/ext/fiddle/lib/fiddle/value.rb
+++ /dev/null
@@ -1,112 +0,0 @@
-require 'fiddle'
-
-module Fiddle
- module ValueUtil #:nodoc: all
- def unsigned_value(val, ty)
- case ty.abs
- when TYPE_CHAR
- [val].pack("c").unpack("C")[0]
- when TYPE_SHORT
- [val].pack("s!").unpack("S!")[0]
- when TYPE_INT
- [val].pack("i!").unpack("I!")[0]
- when TYPE_LONG
- [val].pack("l!").unpack("L!")[0]
- when TYPE_LONG_LONG
- [val].pack("q").unpack("Q")[0]
- else
- val
- end
- end
-
- def signed_value(val, ty)
- case ty.abs
- when TYPE_CHAR
- [val].pack("C").unpack("c")[0]
- when TYPE_SHORT
- [val].pack("S!").unpack("s!")[0]
- when TYPE_INT
- [val].pack("I!").unpack("i!")[0]
- when TYPE_LONG
- [val].pack("L!").unpack("l!")[0]
- when TYPE_LONG_LONG
- [val].pack("Q").unpack("q")[0]
- else
- val
- end
- end
-
- def wrap_args(args, tys, funcs, &block)
- result = []
- tys ||= []
- args.each_with_index{|arg, idx|
- result.push(wrap_arg(arg, tys[idx], funcs, &block))
- }
- result
- end
-
- def wrap_arg(arg, ty, funcs = [], &block)
- funcs ||= []
- case arg
- when nil
- return 0
- when Pointer
- return arg.to_i
- when IO
- case ty
- when TYPE_VOIDP
- return Pointer[arg].to_i
- else
- return arg.to_i
- end
- when Function
- if( block )
- arg.bind_at_call(&block)
- funcs.push(arg)
- elsif !arg.bound?
- raise(RuntimeError, "block must be given.")
- end
- return arg.to_i
- when String
- if( ty.is_a?(Array) )
- return arg.unpack('C*')
- else
- case SIZEOF_VOIDP
- when SIZEOF_LONG
- return [arg].pack("p").unpack("l!")[0]
- when SIZEOF_LONG_LONG
- return [arg].pack("p").unpack("q")[0]
- else
- raise(RuntimeError, "sizeof(void*)?")
- end
- end
- when Float, Integer
- return arg
- when Array
- if( ty.is_a?(Array) ) # used only by struct
- case ty[0]
- when TYPE_VOIDP
- return arg.collect{|v| Integer(v)}
- when TYPE_CHAR
- if( arg.is_a?(String) )
- return val.unpack('C*')
- end
- end
- return arg
- else
- return arg
- end
- else
- if( arg.respond_to?(:to_ptr) )
- return arg.to_ptr.to_i
- else
- begin
- return Integer(arg)
- rescue
- raise(ArgumentError, "unknown argument type: #{arg.class}")
- end
- end
- end
- end
- end
-end
diff --git a/ext/fiddle/pointer.c b/ext/fiddle/pointer.c
deleted file mode 100644
index d115d3d131..0000000000
--- a/ext/fiddle/pointer.c
+++ /dev/null
@@ -1,724 +0,0 @@
-/* -*- C -*-
- * $Id$
- */
-
-#include <ruby/ruby.h>
-#include <ruby/io.h>
-#include <ctype.h>
-#include <fiddle.h>
-
-#ifdef PRIsVALUE
-# define RB_OBJ_CLASSNAME(obj) rb_obj_class(obj)
-# define RB_OBJ_STRING(obj) (obj)
-#else
-# define PRIsVALUE "s"
-# define RB_OBJ_CLASSNAME(obj) rb_obj_classname(obj)
-# define RB_OBJ_STRING(obj) StringValueCStr(obj)
-#endif
-
-VALUE rb_cPointer;
-
-typedef void (*freefunc_t)(void*);
-
-struct ptr_data {
- void *ptr;
- long size;
- freefunc_t free;
- VALUE wrap[2];
-};
-
-#define RPTR_DATA(obj) ((struct ptr_data *)(DATA_PTR(obj)))
-
-static inline freefunc_t
-get_freefunc(VALUE func, volatile VALUE *wrap)
-{
- VALUE addrnum;
- if (NIL_P(func)) {
- *wrap = 0;
- return NULL;
- }
- addrnum = rb_Integer(func);
- *wrap = (addrnum != func) ? func : 0;
- return (freefunc_t)(VALUE)NUM2PTR(addrnum);
-}
-
-static ID id_to_ptr;
-
-static void
-fiddle_ptr_mark(void *ptr)
-{
- struct ptr_data *data = ptr;
- if (data->wrap[0]) {
- rb_gc_mark(data->wrap[0]);
- }
- if (data->wrap[1]) {
- rb_gc_mark(data->wrap[1]);
- }
-}
-
-static void
-fiddle_ptr_free(void *ptr)
-{
- struct ptr_data *data = ptr;
- if (data->ptr) {
- if (data->free) {
- (*(data->free))(data->ptr);
- }
- }
- xfree(ptr);
-}
-
-static size_t
-fiddle_ptr_memsize(const void *ptr)
-{
- const struct ptr_data *data = ptr;
- return data ? sizeof(*data) + data->size : 0;
-}
-
-static const rb_data_type_t fiddle_ptr_data_type = {
- "fiddle/pointer",
- {fiddle_ptr_mark, fiddle_ptr_free, fiddle_ptr_memsize,},
-};
-
-static VALUE
-rb_fiddle_ptr_new2(VALUE klass, void *ptr, long size, freefunc_t func)
-{
- struct ptr_data *data;
- VALUE val;
-
- rb_secure(4);
- val = TypedData_Make_Struct(klass, struct ptr_data, &fiddle_ptr_data_type, data);
- data->ptr = ptr;
- data->free = func;
- data->size = size;
- OBJ_TAINT(val);
-
- return val;
-}
-
-static VALUE
-rb_fiddle_ptr_new(void *ptr, long size, freefunc_t func)
-{
- return rb_fiddle_ptr_new2(rb_cPointer, ptr, size, func);
-}
-
-static VALUE
-rb_fiddle_ptr_malloc(long size, freefunc_t func)
-{
- void *ptr;
-
- rb_secure(4);
- ptr = ruby_xmalloc((size_t)size);
- memset(ptr,0,(size_t)size);
- return rb_fiddle_ptr_new(ptr, size, func);
-}
-
-static void *
-rb_fiddle_ptr2cptr(VALUE val)
-{
- struct ptr_data *data;
- void *ptr;
-
- if (rb_obj_is_kind_of(val, rb_cPointer)) {
- TypedData_Get_Struct(val, struct ptr_data, &fiddle_ptr_data_type, data);
- ptr = data->ptr;
- }
- else if (val == Qnil) {
- ptr = NULL;
- }
- else{
- rb_raise(rb_eTypeError, "Fiddle::Pointer was expected");
- }
-
- return ptr;
-}
-
-static VALUE
-rb_fiddle_ptr_s_allocate(VALUE klass)
-{
- VALUE obj;
- struct ptr_data *data;
-
- rb_secure(4);
- obj = TypedData_Make_Struct(klass, struct ptr_data, &fiddle_ptr_data_type, data);
- data->ptr = 0;
- data->size = 0;
- data->free = 0;
-
- return obj;
-}
-
-/*
- * call-seq:
- * Fiddle::Pointer.new(address) => fiddle_cptr
- * new(address, size) => fiddle_cptr
- * new(address, size, freefunc) => fiddle_cptr
- *
- * Create a new pointer to +address+ with an optional +size+ and +freefunc+.
- *
- * +freefunc+ will be called when the instance is garbage collected.
- */
-static VALUE
-rb_fiddle_ptr_initialize(int argc, VALUE argv[], VALUE self)
-{
- VALUE ptr, sym, size, wrap = 0, funcwrap = 0;
- struct ptr_data *data;
- void *p = NULL;
- freefunc_t f = NULL;
- long s = 0;
-
- if (rb_scan_args(argc, argv, "12", &ptr, &size, &sym) >= 1) {
- VALUE addrnum = rb_Integer(ptr);
- if (addrnum != ptr) wrap = ptr;
- p = NUM2PTR(addrnum);
- }
- if (argc >= 2) {
- s = NUM2LONG(size);
- }
- if (argc >= 3) {
- f = get_freefunc(sym, &funcwrap);
- }
-
- if (p) {
- TypedData_Get_Struct(self, struct ptr_data, &fiddle_ptr_data_type, data);
- if (data->ptr && data->free) {
- /* Free previous memory. Use of inappropriate initialize may cause SEGV. */
- (*(data->free))(data->ptr);
- }
- data->wrap[0] = wrap;
- data->wrap[1] = funcwrap;
- data->ptr = p;
- data->size = s;
- data->free = f;
- }
-
- return Qnil;
-}
-
-/*
- * call-seq:
- *
- * Fiddle::Pointer.malloc(size, freefunc = nil) => fiddle pointer instance
- *
- * Allocate +size+ bytes of memory and associate it with an optional
- * +freefunc+ that will be called when the pointer is garbage collected.
- *
- * +freefunc+ must be an address pointing to a function or an instance of
- * Fiddle::Function
- */
-static VALUE
-rb_fiddle_ptr_s_malloc(int argc, VALUE argv[], VALUE klass)
-{
- VALUE size, sym, obj, wrap = 0;
- long s;
- freefunc_t f;
-
- switch (rb_scan_args(argc, argv, "11", &size, &sym)) {
- case 1:
- s = NUM2LONG(size);
- f = NULL;
- break;
- case 2:
- s = NUM2LONG(size);
- f = get_freefunc(sym, &wrap);
- break;
- default:
- rb_bug("rb_fiddle_ptr_s_malloc");
- }
-
- obj = rb_fiddle_ptr_malloc(s,f);
- if (wrap) RPTR_DATA(obj)->wrap[1] = wrap;
-
- return obj;
-}
-
-/*
- * call-seq: to_i
- *
- * Returns the integer memory location of this pointer.
- */
-static VALUE
-rb_fiddle_ptr_to_i(VALUE self)
-{
- struct ptr_data *data;
-
- TypedData_Get_Struct(self, struct ptr_data, &fiddle_ptr_data_type, data);
- return PTR2NUM(data->ptr);
-}
-
-/*
- * call-seq: to_value
- *
- * Cast this pointer to a ruby object.
- */
-static VALUE
-rb_fiddle_ptr_to_value(VALUE self)
-{
- struct ptr_data *data;
- TypedData_Get_Struct(self, struct ptr_data, &fiddle_ptr_data_type, data);
- return (VALUE)(data->ptr);
-}
-
-/*
- * call-seq: ptr
- *
- * Returns a new Fiddle::Pointer instance that is a dereferenced pointer for
- * this pointer.
- *
- * Analogous to the star operator in C.
- */
-static VALUE
-rb_fiddle_ptr_ptr(VALUE self)
-{
- struct ptr_data *data;
-
- TypedData_Get_Struct(self, struct ptr_data, &fiddle_ptr_data_type, data);
- return rb_fiddle_ptr_new(*((void**)(data->ptr)),0,0);
-}
-
-/*
- * call-seq: ref
- *
- * Returns a new Fiddle::Pointer instance that is a reference pointer for this
- * pointer.
- *
- * Analogous to the ampersand operator in C.
- */
-static VALUE
-rb_fiddle_ptr_ref(VALUE self)
-{
- struct ptr_data *data;
-
- TypedData_Get_Struct(self, struct ptr_data, &fiddle_ptr_data_type, data);
- return rb_fiddle_ptr_new(&(data->ptr),0,0);
-}
-
-/*
- * call-seq: null?
- *
- * Returns +true+ if this is a null pointer.
- */
-static VALUE
-rb_fiddle_ptr_null_p(VALUE self)
-{
- struct ptr_data *data;
-
- TypedData_Get_Struct(self, struct ptr_data, &fiddle_ptr_data_type, data);
- return data->ptr ? Qfalse : Qtrue;
-}
-
-/*
- * call-seq: free=(function)
- *
- * Set the free function for this pointer to +function+ in the given
- * Fiddle::Function.
- */
-static VALUE
-rb_fiddle_ptr_free_set(VALUE self, VALUE val)
-{
- struct ptr_data *data;
-
- TypedData_Get_Struct(self, struct ptr_data, &fiddle_ptr_data_type, data);
- data->free = get_freefunc(val, &data->wrap[1]);
-
- return Qnil;
-}
-
-/*
- * call-seq: free => Fiddle::Function
- *
- * Get the free function for this pointer.
- *
- * Returns a new instance of Fiddle::Function.
- *
- * See Fiddle::Function.new
- */
-static VALUE
-rb_fiddle_ptr_free_get(VALUE self)
-{
- struct ptr_data *pdata;
- VALUE address;
- VALUE arg_types;
- VALUE ret_type;
-
- TypedData_Get_Struct(self, struct ptr_data, &fiddle_ptr_data_type, pdata);
-
- if (!pdata->free)
- return Qnil;
-
- address = PTR2NUM(pdata->free);
- ret_type = INT2NUM(TYPE_VOID);
- arg_types = rb_ary_new();
- rb_ary_push(arg_types, INT2NUM(TYPE_VOIDP));
-
- return rb_fiddle_new_function(address, arg_types, ret_type);
-}
-
-/*
- * call-seq:
- *
- * ptr.to_s => string
- * ptr.to_s(len) => string
- *
- * Returns the pointer contents as a string.
- *
- * When called with no arguments, this method will return the contents until
- * the first NULL byte.
- *
- * When called with +len+, a string of +len+ bytes will be returned.
- *
- * See to_str
- */
-static VALUE
-rb_fiddle_ptr_to_s(int argc, VALUE argv[], VALUE self)
-{
- struct ptr_data *data;
- VALUE arg1, val;
- int len;
-
- TypedData_Get_Struct(self, struct ptr_data, &fiddle_ptr_data_type, data);
- switch (rb_scan_args(argc, argv, "01", &arg1)) {
- case 0:
- val = rb_tainted_str_new2((char*)(data->ptr));
- break;
- case 1:
- len = NUM2INT(arg1);
- val = rb_tainted_str_new((char*)(data->ptr), len);
- break;
- default:
- rb_bug("rb_fiddle_ptr_to_s");
- }
-
- return val;
-}
-
-/*
- * call-seq:
- *
- * ptr.to_str => string
- * ptr.to_str(len) => string
- *
- * Returns the pointer contents as a string.
- *
- * When called with no arguments, this method will return the contents with the
- * length of this pointer's +size+.
- *
- * When called with +len+, a string of +len+ bytes will be returned.
- *
- * See to_s
- */
-static VALUE
-rb_fiddle_ptr_to_str(int argc, VALUE argv[], VALUE self)
-{
- struct ptr_data *data;
- VALUE arg1, val;
- int len;
-
- TypedData_Get_Struct(self, struct ptr_data, &fiddle_ptr_data_type, data);
- switch (rb_scan_args(argc, argv, "01", &arg1)) {
- case 0:
- val = rb_tainted_str_new((char*)(data->ptr),data->size);
- break;
- case 1:
- len = NUM2INT(arg1);
- val = rb_tainted_str_new((char*)(data->ptr), len);
- break;
- default:
- rb_bug("rb_fiddle_ptr_to_str");
- }
-
- return val;
-}
-
-/*
- * call-seq: inspect
- *
- * Returns a string formatted with an easily readable representation of the
- * internal state of the pointer.
- */
-static VALUE
-rb_fiddle_ptr_inspect(VALUE self)
-{
- struct ptr_data *data;
-
- TypedData_Get_Struct(self, struct ptr_data, &fiddle_ptr_data_type, data);
- return rb_sprintf("#<%"PRIsVALUE":%p ptr=%p size=%ld free=%p>",
- RB_OBJ_CLASSNAME(self), data, data->ptr, data->size, data->free);
-}
-
-/*
- * call-seq:
- * ptr == other => true or false
- * ptr.eql?(other) => true or false
- *
- * Returns true if +other+ wraps the same pointer, otherwise returns
- * false.
- */
-static VALUE
-rb_fiddle_ptr_eql(VALUE self, VALUE other)
-{
- void *ptr1, *ptr2;
-
- if(!rb_obj_is_kind_of(other, rb_cPointer)) return Qfalse;
-
- ptr1 = rb_fiddle_ptr2cptr(self);
- ptr2 = rb_fiddle_ptr2cptr(other);
-
- return ptr1 == ptr2 ? Qtrue : Qfalse;
-}
-
-/*
- * call-seq:
- * ptr <=> other => -1, 0, 1, or nil
- *
- * Returns -1 if less than, 0 if equal to, 1 if greater than +other+.
- *
- * Returns nil if +ptr+ cannot be compared to +other+.
- */
-static VALUE
-rb_fiddle_ptr_cmp(VALUE self, VALUE other)
-{
- void *ptr1, *ptr2;
- SIGNED_VALUE diff;
-
- if(!rb_obj_is_kind_of(other, rb_cPointer)) return Qnil;
-
- ptr1 = rb_fiddle_ptr2cptr(self);
- ptr2 = rb_fiddle_ptr2cptr(other);
- diff = (SIGNED_VALUE)ptr1 - (SIGNED_VALUE)ptr2;
- if (!diff) return INT2FIX(0);
- return diff > 0 ? INT2NUM(1) : INT2NUM(-1);
-}
-
-/*
- * call-seq:
- * ptr + n => new cptr
- *
- * Returns a new pointer instance that has been advanced +n+ bytes.
- */
-static VALUE
-rb_fiddle_ptr_plus(VALUE self, VALUE other)
-{
- void *ptr;
- long num, size;
-
- ptr = rb_fiddle_ptr2cptr(self);
- size = RPTR_DATA(self)->size;
- num = NUM2LONG(other);
- return rb_fiddle_ptr_new((char *)ptr + num, size - num, 0);
-}
-
-/*
- * call-seq:
- * ptr - n => new cptr
- *
- * Returns a new pointer instance that has been moved back +n+ bytes.
- */
-static VALUE
-rb_fiddle_ptr_minus(VALUE self, VALUE other)
-{
- void *ptr;
- long num, size;
-
- ptr = rb_fiddle_ptr2cptr(self);
- size = RPTR_DATA(self)->size;
- num = NUM2LONG(other);
- return rb_fiddle_ptr_new((char *)ptr - num, size + num, 0);
-}
-
-/*
- * call-seq:
- * ptr[index] -> an_integer
- * ptr[start, length] -> a_string
- *
- * Returns integer stored at _index_.
- *
- * If _start_ and _length_ are given, a string containing the bytes from
- * _start_ of _length_ will be returned.
- */
-static VALUE
-rb_fiddle_ptr_aref(int argc, VALUE argv[], VALUE self)
-{
- VALUE arg0, arg1;
- VALUE retval = Qnil;
- size_t offset, len;
- struct ptr_data *data;
-
- TypedData_Get_Struct(self, struct ptr_data, &fiddle_ptr_data_type, data);
- if (!data->ptr) rb_raise(rb_eFiddleError, "NULL pointer dereference");
- switch( rb_scan_args(argc, argv, "11", &arg0, &arg1) ){
- case 1:
- offset = NUM2ULONG(arg0);
- retval = INT2NUM(*((char *)data->ptr + offset));
- break;
- case 2:
- offset = NUM2ULONG(arg0);
- len = NUM2ULONG(arg1);
- retval = rb_tainted_str_new((char *)data->ptr + offset, len);
- break;
- default:
- rb_bug("rb_fiddle_ptr_aref()");
- }
- return retval;
-}
-
-/*
- * call-seq:
- * ptr[index] = int -> int
- * ptr[start, length] = string or cptr or addr -> string or dl_cptr or addr
- *
- * Set the value at +index+ to +int+.
- *
- * Or, set the memory at +start+ until +length+ with the contents of +string+,
- * the memory from +dl_cptr+, or the memory pointed at by the memory address
- * +addr+.
- */
-static VALUE
-rb_fiddle_ptr_aset(int argc, VALUE argv[], VALUE self)
-{
- VALUE arg0, arg1, arg2;
- VALUE retval = Qnil;
- size_t offset, len;
- void *mem;
- struct ptr_data *data;
-
- TypedData_Get_Struct(self, struct ptr_data, &fiddle_ptr_data_type, data);
- if (!data->ptr) rb_raise(rb_eFiddleError, "NULL pointer dereference");
- switch( rb_scan_args(argc, argv, "21", &arg0, &arg1, &arg2) ){
- case 2:
- offset = NUM2ULONG(arg0);
- ((char*)data->ptr)[offset] = NUM2UINT(arg1);
- retval = arg1;
- break;
- case 3:
- offset = NUM2ULONG(arg0);
- len = NUM2ULONG(arg1);
- if (RB_TYPE_P(arg2, T_STRING)) {
- mem = StringValuePtr(arg2);
- }
- else if( rb_obj_is_kind_of(arg2, rb_cPointer) ){
- mem = rb_fiddle_ptr2cptr(arg2);
- }
- else{
- mem = NUM2PTR(arg2);
- }
- memcpy((char *)data->ptr + offset, mem, len);
- retval = arg2;
- break;
- default:
- rb_bug("rb_fiddle_ptr_aset()");
- }
- return retval;
-}
-
-/*
- * call-seq: size=(size)
- *
- * Set the size of this pointer to +size+
- */
-static VALUE
-rb_fiddle_ptr_size_set(VALUE self, VALUE size)
-{
- RPTR_DATA(self)->size = NUM2LONG(size);
- return size;
-}
-
-/*
- * call-seq: size
- *
- * Get the size of this pointer.
- */
-static VALUE
-rb_fiddle_ptr_size_get(VALUE self)
-{
- return LONG2NUM(RPTR_DATA(self)->size);
-}
-
-/*
- * call-seq:
- * Fiddle::Pointer[val] => cptr
- * to_ptr(val) => cptr
- *
- * Get the underlying pointer for ruby object +val+ and return it as a
- * Fiddle::Pointer object.
- */
-static VALUE
-rb_fiddle_ptr_s_to_ptr(VALUE self, VALUE val)
-{
- VALUE ptr, wrap = val, vptr;
-
- if (RTEST(rb_obj_is_kind_of(val, rb_cIO))){
- rb_io_t *fptr;
- FILE *fp;
- GetOpenFile(val, fptr);
- fp = rb_io_stdio_file(fptr);
- ptr = rb_fiddle_ptr_new(fp, 0, NULL);
- }
- else if (RTEST(rb_obj_is_kind_of(val, rb_cString))){
- char *str = StringValuePtr(val);
- ptr = rb_fiddle_ptr_new(str, RSTRING_LEN(val), NULL);
- }
- else if ((vptr = rb_check_funcall(val, id_to_ptr, 0, 0)) != Qundef){
- if (rb_obj_is_kind_of(vptr, rb_cPointer)){
- ptr = vptr;
- wrap = 0;
- }
- else{
- rb_raise(rb_eFiddleError, "to_ptr should return a Fiddle::Pointer object");
- }
- }
- else{
- VALUE num = rb_Integer(val);
- if (num == val) wrap = 0;
- ptr = rb_fiddle_ptr_new(NUM2PTR(num), 0, NULL);
- }
- OBJ_INFECT(ptr, val);
- if (wrap) RPTR_DATA(ptr)->wrap[0] = wrap;
- return ptr;
-}
-
-void
-Init_fiddle_pointer(void)
-{
- id_to_ptr = rb_intern("to_ptr");
-
- /* Document-class: Fiddle::Pointer
- *
- * Fiddle::Pointer is a class to handle C pointers
- *
- */
- rb_cPointer = rb_define_class_under(mFiddle, "Pointer", rb_cObject);
- rb_define_alloc_func(rb_cPointer, rb_fiddle_ptr_s_allocate);
- rb_define_singleton_method(rb_cPointer, "malloc", rb_fiddle_ptr_s_malloc, -1);
- rb_define_singleton_method(rb_cPointer, "to_ptr", rb_fiddle_ptr_s_to_ptr, 1);
- rb_define_singleton_method(rb_cPointer, "[]", rb_fiddle_ptr_s_to_ptr, 1);
- rb_define_method(rb_cPointer, "initialize", rb_fiddle_ptr_initialize, -1);
- rb_define_method(rb_cPointer, "free=", rb_fiddle_ptr_free_set, 1);
- rb_define_method(rb_cPointer, "free", rb_fiddle_ptr_free_get, 0);
- rb_define_method(rb_cPointer, "to_i", rb_fiddle_ptr_to_i, 0);
- rb_define_method(rb_cPointer, "to_int", rb_fiddle_ptr_to_i, 0);
- rb_define_method(rb_cPointer, "to_value", rb_fiddle_ptr_to_value, 0);
- rb_define_method(rb_cPointer, "ptr", rb_fiddle_ptr_ptr, 0);
- rb_define_method(rb_cPointer, "+@", rb_fiddle_ptr_ptr, 0);
- rb_define_method(rb_cPointer, "ref", rb_fiddle_ptr_ref, 0);
- rb_define_method(rb_cPointer, "-@", rb_fiddle_ptr_ref, 0);
- rb_define_method(rb_cPointer, "null?", rb_fiddle_ptr_null_p, 0);
- rb_define_method(rb_cPointer, "to_s", rb_fiddle_ptr_to_s, -1);
- rb_define_method(rb_cPointer, "to_str", rb_fiddle_ptr_to_str, -1);
- rb_define_method(rb_cPointer, "inspect", rb_fiddle_ptr_inspect, 0);
- rb_define_method(rb_cPointer, "<=>", rb_fiddle_ptr_cmp, 1);
- rb_define_method(rb_cPointer, "==", rb_fiddle_ptr_eql, 1);
- rb_define_method(rb_cPointer, "eql?", rb_fiddle_ptr_eql, 1);
- rb_define_method(rb_cPointer, "+", rb_fiddle_ptr_plus, 1);
- rb_define_method(rb_cPointer, "-", rb_fiddle_ptr_minus, 1);
- rb_define_method(rb_cPointer, "[]", rb_fiddle_ptr_aref, -1);
- rb_define_method(rb_cPointer, "[]=", rb_fiddle_ptr_aset, -1);
- rb_define_method(rb_cPointer, "size", rb_fiddle_ptr_size_get, 0);
- rb_define_method(rb_cPointer, "size=", rb_fiddle_ptr_size_set, 1);
-
- /* Document-const: NULL
- *
- * A NULL pointer
- */
- rb_define_const(mFiddle, "NULL", rb_fiddle_ptr_new(0, 0, 0));
-}
diff --git a/ext/fiddle/win32/extconf.rb b/ext/fiddle/win32/extconf.rb
deleted file mode 100644
index c4efee8149..0000000000
--- a/ext/fiddle/win32/extconf.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-if compiled?('fiddle') and $mswin||$mingw||$cygwin
- create_makefile('win32')
-end
diff --git a/ext/fiddle/win32/lib/win32/registry.rb b/ext/fiddle/win32/lib/win32/registry.rb
deleted file mode 100644
index f1aa3640a8..0000000000
--- a/ext/fiddle/win32/lib/win32/registry.rb
+++ /dev/null
@@ -1,845 +0,0 @@
-require 'fiddle/import'
-module Win32
-
-=begin rdoc
-= Win32 Registry
-
-win32/registry is registry accessor library for Win32 platform.
-It uses fiddle/import to call Win32 Registry APIs.
-
-== example
- Win32::Registry::HKEY_CURRENT_USER.open('SOFTWARE\foo') do |reg|
- value = reg['foo'] # read a value
- value = reg['foo', Win32::Registry::REG_SZ] # read a value with type
- type, value = reg.read('foo') # read a value
- reg['foo'] = 'bar' # write a value
- reg['foo', Win32::Registry::REG_SZ] = 'bar' # write a value with type
- reg.write('foo', Win32::Registry::REG_SZ, 'bar') # write a value
-
- reg.each_value { |name, type, data| ... } # Enumerate values
- reg.each_key { |key, wtime| ... } # Enumerate subkeys
-
- reg.delete_value(name) # Delete a value
- reg.delete_key(name) # Delete a subkey
- reg.delete_key(name, true) # Delete a subkey recursively
- end
-
-= Reference
-
-== Win32::Registry class
-
---- info
-
---- num_keys
-
---- max_key_length
-
---- num_values
-
---- max_value_name_length
-
---- max_value_length
-
---- descriptor_length
-
---- wtime
- Returns an item of key information.
-
-=== constants
---- HKEY_CLASSES_ROOT
-
---- HKEY_CURRENT_USER
-
---- HKEY_LOCAL_MACHINE
-
---- HKEY_PERFORMANCE_DATA
-
---- HKEY_CURRENT_CONFIG
-
---- HKEY_DYN_DATA
-
- Win32::Registry object whose key is predefined key.
-For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/predefined_keys.asp] article.
-
-=end rdoc
-
- class Registry
-
- #
- # For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/registry.asp].
- #
- # --- HKEY_*
- #
- # Predefined key ((*handle*)).
- # These are Integer, not Win32::Registry.
- #
- # --- REG_*
- #
- # Registry value type.
- #
- # --- KEY_*
- #
- # Security access mask.
- #
- # --- KEY_OPTIONS_*
- #
- # Key options.
- #
- # --- REG_CREATED_NEW_KEY
- #
- # --- REG_OPENED_EXISTING_KEY
- #
- # If the key is created newly or opened existing key.
- # See also Registry#disposition method.
- module Constants
- HKEY_CLASSES_ROOT = 0x80000000
- HKEY_CURRENT_USER = 0x80000001
- HKEY_LOCAL_MACHINE = 0x80000002
- HKEY_USERS = 0x80000003
- HKEY_PERFORMANCE_DATA = 0x80000004
- HKEY_PERFORMANCE_TEXT = 0x80000050
- HKEY_PERFORMANCE_NLSTEXT = 0x80000060
- HKEY_CURRENT_CONFIG = 0x80000005
- HKEY_DYN_DATA = 0x80000006
-
- REG_NONE = 0
- REG_SZ = 1
- REG_EXPAND_SZ = 2
- REG_BINARY = 3
- REG_DWORD = 4
- REG_DWORD_LITTLE_ENDIAN = 4
- REG_DWORD_BIG_ENDIAN = 5
- REG_LINK = 6
- REG_MULTI_SZ = 7
- REG_RESOURCE_LIST = 8
- REG_FULL_RESOURCE_DESCRIPTOR = 9
- REG_RESOURCE_REQUIREMENTS_LIST = 10
- REG_QWORD = 11
- REG_QWORD_LITTLE_ENDIAN = 11
-
- STANDARD_RIGHTS_READ = 0x00020000
- STANDARD_RIGHTS_WRITE = 0x00020000
- KEY_QUERY_VALUE = 0x0001
- KEY_SET_VALUE = 0x0002
- KEY_CREATE_SUB_KEY = 0x0004
- KEY_ENUMERATE_SUB_KEYS = 0x0008
- KEY_NOTIFY = 0x0010
- KEY_CREATE_LINK = 0x0020
- KEY_READ = STANDARD_RIGHTS_READ |
- KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY
- KEY_WRITE = STANDARD_RIGHTS_WRITE |
- KEY_SET_VALUE | KEY_CREATE_SUB_KEY
- KEY_EXECUTE = KEY_READ
- KEY_ALL_ACCESS = KEY_READ | KEY_WRITE | KEY_CREATE_LINK
-
- REG_OPTION_RESERVED = 0x0000
- REG_OPTION_NON_VOLATILE = 0x0000
- REG_OPTION_VOLATILE = 0x0001
- REG_OPTION_CREATE_LINK = 0x0002
- REG_OPTION_BACKUP_RESTORE = 0x0004
- REG_OPTION_OPEN_LINK = 0x0008
- REG_LEGAL_OPTION = REG_OPTION_RESERVED |
- REG_OPTION_NON_VOLATILE | REG_OPTION_CREATE_LINK |
- REG_OPTION_BACKUP_RESTORE | REG_OPTION_OPEN_LINK
-
- REG_CREATED_NEW_KEY = 1
- REG_OPENED_EXISTING_KEY = 2
-
- REG_WHOLE_HIVE_VOLATILE = 0x0001
- REG_REFRESH_HIVE = 0x0002
- REG_NO_LAZY_FLUSH = 0x0004
- REG_FORCE_RESTORE = 0x0008
-
- MAX_KEY_LENGTH = 514
- MAX_VALUE_LENGTH = 32768
- end
- include Constants
- include Enumerable
-
- #
- # Error
- #
- class Error < ::StandardError
- module Kernel32
- extend Fiddle::Importer
- dlload "kernel32.dll"
- end
- FormatMessageA = Kernel32.extern "int FormatMessageA(int, void *, int, int, void *, int, void *)", :stdcall
- def initialize(code)
- @code = code
- msg = "\0".force_encoding(Encoding::ASCII_8BIT) * 1024
- len = FormatMessageA.call(0x1200, 0, code, 0, msg, 1024, 0)
- msg = msg[0, len].force_encoding(Encoding.find(Encoding.locale_charmap))
- super msg.tr("\r", '').chomp
- end
- attr_reader :code
- end
-
- #
- # Predefined Keys
- #
- class PredefinedKey < Registry
- def initialize(hkey, keyname)
- @hkey = hkey
- @parent = nil
- @keyname = keyname
- @disposition = REG_OPENED_EXISTING_KEY
- end
-
- # Predefined keys cannot be closed
- def close
- raise Error.new(5) ## ERROR_ACCESS_DENIED
- end
-
- # Fake #class method for Registry#open, Registry#create
- def class
- Registry
- end
-
- # Make all
- Constants.constants.grep(/^HKEY_/) do |c|
- Registry.const_set c, new(Constants.const_get(c), c.to_s)
- end
- end
-
- #
- # Win32 APIs
- #
- module API
- extend Fiddle::Importer
- dlload "advapi32.dll"
- [
- "long RegOpenKeyExA(void *, void *, long, long, void *)",
- "long RegCreateKeyExA(void *, void *, long, long, long, long, void *, void *, void *)",
- "long RegEnumValueA(void *, long, void *, void *, void *, void *, void *, void *)",
- "long RegEnumKeyExA(void *, long, void *, void *, void *, void *, void *, void *)",
- "long RegQueryValueExA(void *, void *, void *, void *, void *, void *)",
- "long RegSetValueExA(void *, void *, long, long, void *, long)",
- "long RegDeleteValue(void *, void *)",
- "long RegDeleteKey(void *, void *)",
- "long RegFlushKey(void *)",
- "long RegCloseKey(void *)",
- "long RegQueryInfoKey(void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *, void *)",
- ].each do |fn|
- cfunc = extern fn, :stdcall
- const_set cfunc.name.intern, cfunc
- end
-
- module_function
-
- def check(result)
- raise Error, result, caller(2) if result != 0
- end
-
- def packdw(dw)
- [dw].pack('V')
- end
-
- def unpackdw(dw)
- dw += [0].pack('V')
- dw.unpack('V')[0]
- end
-
- def packqw(qw)
- [ qw & 0xFFFFFFFF, qw >> 32 ].pack('VV')
- end
-
- def unpackqw(qw)
- qw = qw.unpack('VV')
- (qw[1] << 32) | qw[0]
- end
-
- def OpenKey(hkey, name, opt, desired)
- result = packdw(0)
- check RegOpenKeyExA.call(hkey, name, opt, desired, result)
- unpackdw(result)
- end
-
- def CreateKey(hkey, name, opt, desired)
- result = packdw(0)
- disp = packdw(0)
- check RegCreateKeyExA.call(hkey, name, 0, 0, opt, desired,
- 0, result, disp)
- [ unpackdw(result), unpackdw(disp) ]
- end
-
- def EnumValue(hkey, index)
- name = ' ' * Constants::MAX_KEY_LENGTH
- size = packdw(Constants::MAX_KEY_LENGTH)
- check RegEnumValueA.call(hkey, index, name, size, 0, 0, 0, 0)
- name[0, unpackdw(size)]
- end
-
- def EnumKey(hkey, index)
- name = ' ' * Constants::MAX_KEY_LENGTH
- size = packdw(Constants::MAX_KEY_LENGTH)
- wtime = ' ' * 8
- check RegEnumKeyExA.call(hkey, index, name, size, 0, 0, 0, wtime)
- [ name[0, unpackdw(size)], unpackqw(wtime) ]
- end
-
- def QueryValue(hkey, name)
- type = packdw(0)
- size = packdw(0)
- check RegQueryValueExA.call(hkey, name, 0, type, 0, size)
- data = ' ' * unpackdw(size)
- check RegQueryValueExA.call(hkey, name, 0, type, data, size)
- [ unpackdw(type), data[0, unpackdw(size)] ]
- end
-
- def SetValue(hkey, name, type, data, size)
- check RegSetValueExA.call(hkey, name, 0, type, data, size)
- end
-
- def DeleteValue(hkey, name)
- check RegDeleteValue.call(hkey, name)
- end
-
- def DeleteKey(hkey, name)
- check RegDeleteKey.call(hkey, name)
- end
-
- def FlushKey(hkey)
- check RegFlushKey.call(hkey)
- end
-
- def CloseKey(hkey)
- check RegCloseKey.call(hkey)
- end
-
- def QueryInfoKey(hkey)
- subkeys = packdw(0)
- maxsubkeylen = packdw(0)
- values = packdw(0)
- maxvaluenamelen = packdw(0)
- maxvaluelen = packdw(0)
- secdescs = packdw(0)
- wtime = ' ' * 8
- check RegQueryInfoKey.call(hkey, 0, 0, 0, subkeys, maxsubkeylen, 0,
- values, maxvaluenamelen, maxvaluelen, secdescs, wtime)
- [ unpackdw(subkeys), unpackdw(maxsubkeylen), unpackdw(values),
- unpackdw(maxvaluenamelen), unpackdw(maxvaluelen),
- unpackdw(secdescs), unpackqw(wtime) ]
- end
- end
-
- #
- # Replace %\w+% into the environment value of what is contained between the %'s
- # This method is used for REG_EXPAND_SZ.
- #
- # For detail, see expandEnvironmentStrings[http://msdn.microsoft.com/library/en-us/sysinfo/base/expandenvironmentstrings.asp] \Win32 \API.
- #
- def self.expand_environ(str)
- str.gsub(/%([^%]+)%/) { ENV[$1] || ENV[$1.upcase] || $& }
- end
-
- @@type2name = { }
- %w[
- REG_NONE REG_SZ REG_EXPAND_SZ REG_BINARY REG_DWORD
- REG_DWORD_BIG_ENDIAN REG_LINK REG_MULTI_SZ
- REG_RESOURCE_LIST REG_FULL_RESOURCE_DESCRIPTOR
- REG_RESOURCE_REQUIREMENTS_LIST REG_QWORD
- ].each do |type|
- @@type2name[Constants.const_get(type)] = type
- end
-
- #
- # Convert registry type value to readable string.
- #
- def self.type2name(type)
- @@type2name[type] || type.to_s
- end
-
- #
- # Convert 64-bit FILETIME integer into Time object.
- #
- def self.wtime2time(wtime)
- Time.at((wtime - 116444736000000000) / 10000000)
- end
-
- #
- # Convert Time object or Integer object into 64-bit FILETIME.
- #
- def self.time2wtime(time)
- time.to_i * 10000000 + 116444736000000000
- end
-
- #
- # constructor
- #
- private_class_method :new
-
- #
- # --- Registry.open(key, subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED)
- #
- # --- Registry.open(key, subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED) { |reg| ... }
- #
- # Open the registry key subkey under key.
- # key is Win32::Registry object of parent key.
- # You can use predefined key HKEY_* (see Constants)
- # desired and opt is access mask and key option.
- # For detail, see the MSDN[http://msdn.microsoft.com/library/en-us/sysinfo/base/regopenkeyex.asp].
- # If block is given, the key is closed automatically.
- def self.open(hkey, subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED)
- subkey = subkey.chomp('\\')
- newkey = API.OpenKey(hkey.hkey, subkey, opt, desired)
- obj = new(newkey, hkey, subkey, REG_OPENED_EXISTING_KEY)
- if block_given?
- begin
- yield obj
- ensure
- obj.close
- end
- else
- obj
- end
- end
-
- #
- # --- Registry.create(key, subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED)
- #
- # --- Registry.create(key, subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED) { |reg| ... }
- #
- # Create or open the registry key subkey under key.
- # You can use predefined key HKEY_* (see Constants)
- #
- # If subkey is already exists, key is opened and Registry#created?
- # method will return false.
- #
- # If block is given, the key is closed automatically.
- #
- def self.create(hkey, subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED)
- newkey, disp = API.CreateKey(hkey.hkey, subkey, opt, desired)
- obj = new(newkey, hkey, subkey, disp)
- if block_given?
- begin
- yield obj
- ensure
- obj.close
- end
- else
- obj
- end
- end
-
- #
- # finalizer
- #
- @@final = proc { |hkey| proc { API.CloseKey(hkey[0]) if hkey[0] } }
-
- #
- # initialize
- #
- def initialize(hkey, parent, keyname, disposition)
- @hkey = hkey
- @parent = parent
- @keyname = keyname
- @disposition = disposition
- @hkeyfinal = [ hkey ]
- ObjectSpace.define_finalizer self, @@final.call(@hkeyfinal)
- end
-
- # Returns key handle value.
- attr_reader :hkey
- # Win32::Registry object of parent key, or nil if predefeined key.
- attr_reader :parent
- # Same as subkey value of Registry.open or
- # Registry.create method.
- attr_reader :keyname
- # Disposition value (REG_CREATED_NEW_KEY or REG_OPENED_EXISTING_KEY).
- attr_reader :disposition
-
- #
- # Returns if key is created ((*newly*)).
- # (see Registry.create) -- basically you call create
- # then when you call created? on the instance returned
- # it will tell if it was successful or not
- #
- def created?
- @disposition == REG_CREATED_NEW_KEY
- end
-
- #
- # Returns if key is not closed.
- #
- def open?
- !@hkey.nil?
- end
-
- #
- # Full path of key such as 'HKEY_CURRENT_USER\SOFTWARE\foo\bar'.
- #
- def name
- parent = self
- name = @keyname
- while parent = parent.parent
- name = parent.keyname + '\\' + name
- end
- name
- end
-
- def inspect
- "\#<Win32::Registry key=#{name.inspect}>"
- end
-
- #
- # marshalling is not allowed
- #
- def _dump(depth)
- raise TypeError, "can't dump Win32::Registry"
- end
-
- #
- # Same as Win32::Registry.open (self, subkey, desired, opt)
- #
- def open(subkey, desired = KEY_READ, opt = REG_OPTION_RESERVED, &blk)
- self.class.open(self, subkey, desired, opt, &blk)
- end
-
- #
- # Same as Win32::Registry.create (self, subkey, desired, opt)
- #
- def create(subkey, desired = KEY_ALL_ACCESS, opt = REG_OPTION_RESERVED, &blk)
- self.class.create(self, subkey, desired, opt, &blk)
- end
-
- #
- # Close key.
- #
- # After close, most method raise an error.
- #
- def close
- API.CloseKey(@hkey)
- @hkey = @parent = @keyname = nil
- @hkeyfinal[0] = nil
- end
-
- #
- # Enumerate values.
- #
- def each_value
- index = 0
- while true
- begin
- subkey = API.EnumValue(@hkey, index)
- rescue Error
- break
- end
- begin
- type, data = read(subkey)
- rescue Error
- next
- end
- yield subkey, type, data
- index += 1
- end
- index
- end
- alias each each_value
-
- #
- # Enumerate subkeys.
- #
- # subkey is String which contains name of subkey.
- # wtime is last write time as FILETIME (64-bit integer).
- # (see Registry.wtime2time)
- #
- def each_key
- index = 0
- while true
- begin
- subkey, wtime = API.EnumKey(@hkey, index)
- rescue Error
- break
- end
- yield subkey, wtime
- index += 1
- end
- index
- end
-
- #
- # return keys as an array
- #
- def keys
- keys_ary = []
- each_key { |key,| keys_ary << key }
- keys_ary
- end
-
- # Read a registry value named name and return array of
- # [ type, data ].
- # When name is nil, the `default' value is read.
- # type is value type. (see Win32::Registry::Constants module)
- # data is value data, its class is:
- # :REG_SZ, REG_EXPAND_SZ
- # String
- # :REG_MULTI_SZ
- # Array of String
- # :REG_DWORD, REG_DWORD_BIG_ENDIAN, REG_QWORD
- # Integer
- # :REG_BINARY
- # String (contains binary data)
- #
- # When rtype is specified, the value type must be included by
- # rtype array, or TypeError is raised.
- def read(name, *rtype)
- type, data = API.QueryValue(@hkey, name)
- unless rtype.empty? or rtype.include?(type)
- raise TypeError, "Type mismatch (expect #{rtype.inspect} but #{type} present)"
- end
- case type
- when REG_SZ, REG_EXPAND_SZ
- [ type, data.chop ]
- when REG_MULTI_SZ
- [ type, data.split(/\0/) ]
- when REG_BINARY
- [ type, data ]
- when REG_DWORD
- [ type, API.unpackdw(data) ]
- when REG_DWORD_BIG_ENDIAN
- [ type, data.unpack('N')[0] ]
- when REG_QWORD
- [ type, API.unpackqw(data) ]
- else
- raise TypeError, "Type #{type} is not supported."
- end
- end
-
- #
- # Read a registry value named name and return its value data.
- # The class of value is same as #read method returns.
- #
- # If the value type is REG_EXPAND_SZ, returns value data whose environment
- # variables are replaced.
- # If the value type is neither REG_SZ, REG_MULTI_SZ, REG_DWORD,
- # REG_DWORD_BIG_ENDIAN, nor REG_QWORD, TypeError is raised.
- #
- # The meaning of rtype is same as #read method.
- #
- def [](name, *rtype)
- type, data = read(name, *rtype)
- case type
- when REG_SZ, REG_DWORD, REG_QWORD, REG_MULTI_SZ
- data
- when REG_EXPAND_SZ
- Registry.expand_environ(data)
- else
- raise TypeError, "Type #{type} is not supported."
- end
- end
-
- # Read a REG_SZ(read_s), REG_DWORD(read_i), or REG_BINARY(read_bin)
- # registry value named name.
- #
- # If the values type does not match, TypeError is raised.
- def read_s(name)
- read(name, REG_SZ)[1]
- end
-
- #
- # Read a REG_SZ or REG_EXPAND_SZ registry value named name.
- #
- # If the value type is REG_EXPAND_SZ, environment variables are replaced.
- # Unless the value type is REG_SZ or REG_EXPAND_SZ, TypeError is raised.
- #
- def read_s_expand(name)
- type, data = read(name, REG_SZ, REG_EXPAND_SZ)
- if type == REG_EXPAND_SZ
- Registry.expand_environ(data)
- else
- data
- end
- end
-
- #
- # Read a REG_SZ(read_s), REG_DWORD(read_i), or REG_BINARY(read_bin)
- # registry value named name.
- #
- # If the values type does not match, TypeError is raised.
- #
- def read_i(name)
- read(name, REG_DWORD, REG_DWORD_BIG_ENDIAN, REG_QWORD)[1]
- end
-
- #
- # Read a REG_SZ(read_s), REG_DWORD(read_i), or REG_BINARY(read_bin)
- # registry value named name.
- #
- # If the values type does not match, TypeError is raised.
- #
- def read_bin(name)
- read(name, REG_BINARY)[1]
- end
-
- #
- # Write data to a registry value named name.
- # When name is nil, write to the `default' value.
- #
- # type is type value. (see Registry::Constants module)
- # Class of data must be same as which #read
- # method returns.
- #
- def write(name, type, data)
- case type
- when REG_SZ, REG_EXPAND_SZ
- data = data.to_s + "\0"
- when REG_MULTI_SZ
- data = data.to_a.join("\0") + "\0\0"
- when REG_BINARY
- data = data.to_s
- when REG_DWORD
- data = API.packdw(data.to_i)
- when REG_DWORD_BIG_ENDIAN
- data = [data.to_i].pack('N')
- when REG_QWORD
- data = API.packqw(data.to_i)
- else
- raise TypeError, "Unsupported type #{type}"
- end
- API.SetValue(@hkey, name, type, data, data.length)
- end
-
- #
- # Write value to a registry value named name.
- #
- # If wtype is specified, the value type is it.
- # Otherwise, the value type is depend on class of value:
- # :Integer
- # REG_DWORD
- # :String
- # REG_SZ
- # :Array
- # REG_MULTI_SZ
- #
- def []=(name, rtype, value = nil)
- if value
- write name, rtype, value
- else
- case value = rtype
- when Integer
- write name, REG_DWORD, value
- when String
- write name, REG_SZ, value
- when Array
- write name, REG_MULTI_SZ, value
- else
- raise TypeError, "Unexpected type #{value.class}"
- end
- end
- value
- end
-
- #
- # Write value to a registry value named name.
- #
- # The value type is REG_SZ(write_s), REG_DWORD(write_i), or
- # REG_BINARY(write_bin).
- #
- def write_s(name, value)
- write name, REG_SZ, value.to_s
- end
-
- #
- # Write value to a registry value named name.
- #
- # The value type is REG_SZ(write_s), REG_DWORD(write_i), or
- # REG_BINARY(write_bin).
- #
- def write_i(name, value)
- write name, REG_DWORD, value.to_i
- end
-
- #
- # Write value to a registry value named name.
- #
- # The value type is REG_SZ(write_s), REG_DWORD(write_i), or
- # REG_BINARY(write_bin).
- #
- def write_bin(name, value)
- write name, REG_BINARY, value.to_s
- end
-
- #
- # Delete a registry value named name.
- # We can not delete the `default' value.
- #
- def delete_value(name)
- API.DeleteValue(@hkey, name)
- end
- alias delete delete_value
-
- #
- # Delete a subkey named name and all its values.
- #
- # If recursive is false, the subkey must not have subkeys.
- # Otherwise, this method deletes all subkeys and values recursively.
- #
- def delete_key(name, recursive = false)
- if recursive
- open(name, KEY_ALL_ACCESS) do |reg|
- reg.keys.each do |key|
- begin
- reg.delete_key(key, true)
- rescue Error
- #
- end
- end
- end
- API.DeleteKey(@hkey, name)
- else
- begin
- API.EnumKey @hkey, 0
- rescue Error
- return API.DeleteKey(@hkey, name)
- end
- raise Error.new(5) ## ERROR_ACCESS_DENIED
- end
- end
-
- #
- # Write all the attributes into the registry file.
- #
- def flush
- API.FlushKey @hkey
- end
-
- #
- # Returns key information as Array of:
- # :num_keys
- # The number of subkeys.
- # :max_key_length
- # Maximum length of name of subkeys.
- # :num_values
- # The number of values.
- # :max_value_name_length
- # Maximum length of name of values.
- # :max_value_length
- # Maximum length of value of values.
- # :descriptor_length
- # Length of security descriptor.
- # :wtime
- # Last write time as FILETIME(64-bit integer)
- #
- # For detail, see RegQueryInfoKey[http://msdn.microsoft.com/library/en-us/sysinfo/base/regqueryinfokey.asp] Win32 API.
- #
- def info
- API.QueryInfoKey(@hkey)
- end
-
- #
- # Returns an item of key information.
- #
- %w[
- num_keys max_key_length
- num_values max_value_name_length max_value_length
- descriptor_length wtime
- ].each_with_index do |s, i|
- eval <<-__END__
- def #{s}
- info[#{i}]
- end
- __END__
- end
- end
-end
diff --git a/ext/fiddle/win32/lib/win32/resolv.rb b/ext/fiddle/win32/lib/win32/resolv.rb
deleted file mode 100644
index 1315f32c61..0000000000
--- a/ext/fiddle/win32/lib/win32/resolv.rb
+++ /dev/null
@@ -1,379 +0,0 @@
-=begin
-= Win32 DNS and DHCP I/F
-
-=end
-
-require "fiddle/import"
-require 'win32/registry'
-
-module Win32
- module Resolv
- API = Registry::API
-
- def self.get_hosts_path
- path = get_hosts_dir
- path = File.expand_path('hosts', path)
- File.exist?(path) ? path : nil
- end
-
- def self.get_resolv_info
- search, nameserver = get_info
- if search.empty?
- search = nil
- else
- search.delete("")
- search.uniq!
- end
- if nameserver.empty?
- nameserver = nil
- else
- nameserver.delete("")
- nameserver.delete("0.0.0.0")
- nameserver.uniq!
- end
- [ search, nameserver ]
- end
-
-module Kernel32
- extend Fiddle::Importer
- dlload "kernel32"
-end
-getv = Kernel32.extern "int GetVersionExA(void *)", :stdcall
-info = [ 148, 0, 0, 0, 0 ].pack('V5') + "\0" * 128
-getv.call(info)
-if info.unpack('V5')[4] == 2 # VER_PLATFORM_WIN32_NT
-#====================================================================
-# Windows NT
-#====================================================================
- module_eval <<-'__EOS__', __FILE__, __LINE__+1
- TCPIP_NT = 'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters'
-
- class << self
- private
- def get_hosts_dir
- Registry::HKEY_LOCAL_MACHINE.open(TCPIP_NT) do |reg|
- reg.read_s_expand('DataBasePath')
- end
- end
-
- def get_info
- search = nil
- nameserver = []
- Registry::HKEY_LOCAL_MACHINE.open(TCPIP_NT) do |reg|
- begin
- slist = reg.read_s('SearchList')
- search = slist.split(/,\s*/) unless slist.empty?
- rescue Registry::Error
- end
-
- if add_search = search.nil?
- search = []
- begin
- nvdom = reg.read_s('NV Domain')
- unless nvdom.empty?
- @search = [ nvdom ]
- if reg.read_i('UseDomainNameDevolution') != 0
- if /^\w+\./ =~ nvdom
- devo = $'
- end
- end
- end
- rescue Registry::Error
- end
- end
-
- reg.open('Interfaces') do |h|
- h.each_key do |iface,|
- h.open(iface) do |regif|
- begin
- [ 'NameServer', 'DhcpNameServer' ].each do |key|
- begin
- ns = regif.read_s(key)
- rescue
- else
- unless ns.empty?
- nameserver.concat(ns.split(/[,\s]\s*/))
- break
- end
- end
- end
- rescue Registry::Error
- end
-
- if add_search
- begin
- [ 'Domain', 'DhcpDomain' ].each do |key|
- dom = regif.read_s(key)
- unless dom.empty?
- search.concat(dom.split(/,\s*/))
- break
- end
- end
- rescue Registry::Error
- end
- end
- end
- end
- end
- search << devo if add_search and devo
- end
- [ search.uniq, nameserver.uniq ]
- end
- end
- __EOS__
-else
-#====================================================================
-# Windows 9x
-#====================================================================
- module_eval <<-'__EOS__', __FILE__, __LINE__+1
- TCPIP_9X = 'SYSTEM\CurrentControlSet\Services\VxD\MSTCP'
- DHCP_9X = 'SYSTEM\CurrentControlSet\Services\VxD\DHCP'
- WINDOWS = 'Software\Microsoft\Windows\CurrentVersion'
-
- class << self
- # private
-
- def get_hosts_dir
- Registry::HKEY_LOCAL_MACHINE.open(WINDOWS) do |reg|
- reg.read_s_expand('SystemRoot')
- end
- end
-
- def get_info
- search = []
- nameserver = []
- begin
- Registry::HKEY_LOCAL_MACHINE.open(TCPIP_9X) do |reg|
- if reg.read_s("EnableDNS") == "1"
- domain = reg.read_s("Domain")
- ns = reg.read_s("NameServer")
- slist = reg.read_s("SearchList")
- search << domain unless domain.empty?
- search.concat(slist.split(/,\s*/))
- nameserver.concat(ns.split(/[,\s]\s*/))
- end
- end
- rescue Registry::Error
- end
-
- dhcpinfo = get_dhcpinfo
- search.concat(dhcpinfo[0])
- nameserver.concat(dhcpinfo[1])
- [ search, nameserver ]
- end
-
- def get_dhcpinfo
- macaddrs = {}
- ipaddrs = {}
- WsControl.get_iflist.each do |index, macaddr, *ipaddr|
- macaddrs[macaddr] = 1
- ipaddr.each { |ipaddr| ipaddrs[ipaddr] = 1 }
- end
- iflist = [ macaddrs, ipaddrs ]
-
- search = []
- nameserver = []
- version = -1
- Registry::HKEY_LOCAL_MACHINE.open(DHCP_9X) do |reg|
- begin
- version = API.unpackdw(reg.read_bin("Version"))
- rescue Registry::Error
- end
-
- reg.each_key do |key,|
- catch(:not_used) do
- reg.open(key) do |regdi|
- dom, ns = get_dhcpinfo_key(version, regdi, iflist)
- search << dom if dom
- nameserver.concat(ns) if ns
- end
- end
- end
- end
- [ search, nameserver ]
- end
-
- def get_dhcpinfo_95(reg)
- dhcp = reg.read_bin("DhcpInfo")
- [
- API.unpackdw(dhcp[4..7]),
- API.unpackdw(dhcp[8..11]),
- 1,
- dhcp[45..50],
- reg.read_bin("OptionInfo"),
- ]
- end
-
- def get_dhcpinfo_98(reg)
- [
- API.unpackdw(reg.read_bin("DhcpIPAddress")),
- API.unpackdw(reg.read_bin("DhcpSubnetMask")),
- API.unpackdw(reg.read_bin("HardwareType")),
- reg.read_bin("HardwareAddress"),
- reg.read_bin("OptionInfo"),
- ]
- end
-
- def get_dhcpinfo_key(version, reg, iflist)
- info = case version
- when 1
- get_dhcpinfo_95(reg)
- when 2
- get_dhcpinfo_98(reg)
- else
- begin
- get_dhcpinfo_98(reg)
- rescue Registry::Error
- get_dhcpinfo_95(reg)
- end
- end
- ipaddr, netmask, hwtype, macaddr, opt = info
- throw :not_used unless
- ipaddr and ipaddr != 0 and
- netmask and netmask != 0 and
- macaddr and macaddr.size == 6 and
- hwtype == 1 and
- iflist[0][macaddr] and iflist[1][ipaddr]
-
- size = opt.size
- idx = 0
- while idx <= size
- opttype = opt[idx]
- optsize = opt[idx + 1]
- optval = opt[idx + 2, optsize]
- case opttype
- when 0xFF ## term
- break
- when 0x0F ## domain
- domain = optval.chomp("\0")
- when 0x06 ## dns
- nameserver = optval.scan(/..../).collect { |addr|
- "%d.%d.%d.%d" % addr.unpack('C4')
- }
- end
- idx += optsize + 2
- end
- [ domain, nameserver ]
- rescue Registry::Error
- throw :not_used
- end
- end
-
- module WsControl
- module WSock32
- extend Fiddle::Importer
- dlload "wsock32.dll"
- end
- WsControl = WSock32.extern "int WsControl(int, int, void *, void *, void *, void *", :stdcall
- WSAGetLastError = WSock32.extern "int WSAGetLastError(void)", :stdcall
-
- MAX_TDI_ENTITIES = 512
- IPPROTO_TCP = 6
- WSCTL_TCP_QUERY_INFORMATION = 0
- INFO_CLASS_GENERIC = 0x100
- INFO_CLASS_PROTOCOL = 0x200
- INFO_TYPE_PROVIDER = 0x100
- ENTITY_LIST_ID = 0
- GENERIC_ENTITY = 0
- CL_NL_ENTITY = 0x301
- IF_ENTITY = 0x200
- ENTITY_TYPE_ID = 1
- CL_NL_IP = 0x303
- IF_MIB = 0x202
- IF_MIB_STATS_ID = 1
- IP_MIB_ADDRTABLE_ENTRY_ID = 0x102
-
- def self.wsctl(tei_entity, tei_instance,
- toi_class, toi_type, toi_id,
- buffsize)
- reqinfo = [
- ## TDIEntityID
- tei_entity, tei_instance,
- ## TDIObjectID
- toi_class, toi_type, toi_id,
- ## TCP_REQUEST_INFORMATION_EX
- ""
- ].pack('VVVVVa16')
- reqsize = API.packdw(reqinfo.size)
- buff = "\0" * buffsize
- buffsize = API.packdw(buffsize)
- result = WsControl.call(
- IPPROTO_TCP,
- WSCTL_TCP_QUERY_INFORMATION,
- reqinfo, reqsize,
- buff, buffsize)
- if result != 0
- raise RuntimeError, "WsControl failed.(#{result})"
- end
- [ buff, API.unpackdw(buffsize) ]
- end
- private_class_method :wsctl
-
- def self.get_iflist
- # Get TDI Entity List
- entities, size =
- wsctl(GENERIC_ENTITY, 0,
- INFO_CLASS_GENERIC,
- INFO_TYPE_PROVIDER,
- ENTITY_LIST_ID,
- MAX_TDI_ENTITIES * 8) # sizeof(TDIEntityID)
- entities = entities[0, size].
- scan(/.{8}/).
- collect { |e| e.unpack('VV') }
-
- # Get MIB Interface List
- iflist = []
- ifcount = 0
- entities.each do |entity, instance|
- if( (entity & IF_ENTITY)>0 )
- ifcount += 1
- etype, = wsctl(entity, instance,
- INFO_CLASS_GENERIC,
- INFO_TYPE_PROVIDER,
- ENTITY_TYPE_ID,
- 4)
- if( (API.unpackdw(etype) & IF_MIB)==IF_MIB )
- ifentry, = wsctl(entity, instance,
- INFO_CLASS_PROTOCOL,
- INFO_TYPE_PROVIDER,
- IF_MIB_STATS_ID,
- 21 * 4 + 8 + 130) # sizeof(IFEntry)
- iflist << [
- API.unpackdw(ifentry[0,4]),
- ifentry[20, 6]
- ]
- end
- end
- end
-
- # Get IP Addresses
- entities.each do |entity, instance|
- if entity == CL_NL_ENTITY
- etype, = wsctl(entity, instance,
- INFO_CLASS_GENERIC,
- INFO_TYPE_PROVIDER,
- ENTITY_TYPE_ID,
- 4)
- if API.unpackdw(etype) == CL_NL_IP
- ipentries, = wsctl(entity, instance,
- INFO_CLASS_PROTOCOL,
- INFO_TYPE_PROVIDER,
- IP_MIB_ADDRTABLE_ENTRY_ID,
- 24 * (ifcount+1)) # sizeof(IPAddrEntry)
- ipentries.scan(/.{24}/) do |ipentry|
- ipaddr, index = ipentry.unpack('VV')
- if ifitem = iflist.assoc(index)
- ifitem << ipaddr
- end
- end
- end
- end
- end
- iflist
- end
- end
- __EOS__
-end
-#====================================================================
- end
-end
diff --git a/ext/gdbm/gdbm.c b/ext/gdbm/gdbm.c
index 9d958d54a2..6f0c14d664 100644
--- a/ext/gdbm/gdbm.c
+++ b/ext/gdbm/gdbm.c
@@ -73,18 +73,12 @@
*/
static VALUE rb_cGDBM, rb_eGDBMError, rb_eGDBMFatalError;
-#if SIZEOF_LONG > SIZEOF_INT
-#define TOO_LONG(n) ((long)(+(int)(n)) != (long)(n))
-#else
-#define TOO_LONG(n) 0
-#endif
-
#define RUBY_GDBM_RW_BIT 0x20000000
#define MY_BLOCK_SIZE (2048)
#define MY_FATAL_FUNC rb_gdbm_fatal
static void
-rb_gdbm_fatal(const char *msg)
+rb_gdbm_fatal(char *msg)
{
rb_raise(rb_eGDBMFatalError, "%s", msg);
}
@@ -210,11 +204,6 @@ fgdbm_initialize(int argc, VALUE *argv, VALUE obj)
SafeStringValue(file);
-#ifdef GDBM_CLOEXEC
- /* GDBM_CLOEXEC is available since gdbm 1.10. */
- flags |= GDBM_CLOEXEC;
-#endif
-
if (flags & RUBY_GDBM_RW_BIT) {
flags &= ~RUBY_GDBM_RW_BIT;
dbm = gdbm_open(RSTRING_PTR(file), MY_BLOCK_SIZE,
@@ -233,17 +222,13 @@ fgdbm_initialize(int argc, VALUE *argv, VALUE obj)
GDBM_READER|flags, 0, MY_FATAL_FUNC);
}
- if (dbm) {
- rb_fd_fix_cloexec(gdbm_fdesc(dbm));
- }
-
if (!dbm) {
if (mode == -1) return Qnil;
if (gdbm_errno == GDBM_FILE_OPEN_ERROR ||
gdbm_errno == GDBM_CANT_BE_READER ||
gdbm_errno == GDBM_CANT_BE_WRITER)
- rb_sys_fail_str(file);
+ rb_sys_fail(RSTRING_PTR(file));
else
rb_raise(rb_eGDBMError, "%s", gdbm_strerror(gdbm_errno));
}
@@ -312,13 +297,10 @@ static VALUE
rb_gdbm_fetch2(GDBM_FILE dbm, VALUE keystr)
{
datum key;
- long len;
StringValue(keystr);
- len = RSTRING_LEN(keystr);
- if (TOO_LONG(len)) return Qnil;
key.dptr = RSTRING_PTR(keystr);
- key.dsize = (int)len;
+ key.dsize = (int)RSTRING_LEN(keystr);
return rb_gdbm_fetch(dbm, key);
}
@@ -354,12 +336,9 @@ rb_gdbm_nextkey(GDBM_FILE dbm, VALUE keystr)
{
datum key, key2;
VALUE str;
- long len;
- len = RSTRING_LEN(keystr);
- if (TOO_LONG(len)) return Qnil;
key.dptr = RSTRING_PTR(keystr);
- key.dsize = (int)len;
+ key.dsize = (int)RSTRING_LEN(keystr);
key2 = gdbm_nextkey(dbm, key);
if (key2.dptr == 0)
return Qnil;
@@ -516,14 +495,11 @@ rb_gdbm_delete(VALUE obj, VALUE keystr)
datum key;
struct dbmdata *dbmp;
GDBM_FILE dbm;
- long len;
rb_gdbm_modify(obj);
StringValue(keystr);
- len = RSTRING_LEN(keystr);
- if (TOO_LONG(len)) return Qnil;
key.dptr = RSTRING_PTR(keystr);
- key.dsize = (int)len;
+ key.dsize = (int)RSTRING_LEN(keystr);
GetDBM2(obj, dbmp, dbm);
if (!gdbm_exists(dbm, key)) {
@@ -594,7 +570,7 @@ fgdbm_delete_if(VALUE obj)
struct dbmdata *dbmp;
GDBM_FILE dbm;
VALUE keystr, valstr;
- VALUE ret, ary = rb_ary_tmp_new(0);
+ VALUE ret, ary = rb_ary_new();
int i, status = 0, n;
rb_gdbm_modify(obj);
@@ -605,9 +581,8 @@ fgdbm_delete_if(VALUE obj)
for (keystr = rb_gdbm_firstkey(dbm); RTEST(keystr);
keystr = rb_gdbm_nextkey(dbm, keystr)) {
- OBJ_FREEZE(keystr);
valstr = rb_gdbm_fetch2(dbm, keystr);
- ret = rb_protect(rb_yield, rb_assoc_new(rb_str_dup(keystr), valstr), &status);
+ ret = rb_protect(rb_yield, rb_assoc_new(keystr, valstr), &status);
if (status != 0) break;
if (RTEST(ret)) rb_ary_push(ary, keystr);
GetDBM2(obj, dbmp, dbm);
@@ -617,7 +592,6 @@ fgdbm_delete_if(VALUE obj)
rb_gdbm_delete(obj, RARRAY_PTR(ary)[i]);
if (status) rb_jump_tag(status);
if (n > 0) dbmp->di_size = n - (int)RARRAY_LEN(ary);
- rb_ary_clear(ary);
return obj;
}
@@ -709,10 +683,10 @@ fgdbm_store(VALUE obj, VALUE keystr, VALUE valstr)
StringValue(valstr);
key.dptr = RSTRING_PTR(keystr);
- key.dsize = RSTRING_LENINT(keystr);
+ key.dsize = (int)RSTRING_LEN(keystr);
val.dptr = RSTRING_PTR(valstr);
- val.dsize = RSTRING_LENINT(valstr);
+ val.dsize = (int)RSTRING_LEN(valstr);
GetDBM2(obj, dbmp, dbm);
dbmp->di_size = -1;
@@ -965,13 +939,10 @@ fgdbm_has_key(VALUE obj, VALUE keystr)
datum key;
struct dbmdata *dbmp;
GDBM_FILE dbm;
- long len;
StringValue(keystr);
- len = RSTRING_LENINT(keystr);
- if (TOO_LONG(len)) return Qfalse;
key.dptr = RSTRING_PTR(keystr);
- key.dsize = (int)len;
+ key.dsize = (int)RSTRING_LEN(keystr);
GetDBM2(obj, dbmp, dbm);
if (gdbm_exists(dbm, key))
@@ -1052,7 +1023,6 @@ fgdbm_reorganize(VALUE obj)
rb_gdbm_modify(obj);
GetDBM2(obj, dbmp, dbm);
gdbm_reorganize(dbm);
- rb_fd_fix_cloexec(gdbm_fdesc(dbm));
return obj;
}
diff --git a/ext/iconv/charset_alias.rb b/ext/iconv/charset_alias.rb
new file mode 100644
index 0000000000..cd567a8e2e
--- /dev/null
+++ b/ext/iconv/charset_alias.rb
@@ -0,0 +1,104 @@
+#! /usr/bin/ruby
+# :stopdoc:
+require 'rbconfig'
+require 'optparse'
+
+# http://www.ctan.org/get/macros/texinfo/texinfo/gnulib/lib/config.charset
+# Tue, 25 Dec 2007 00:00:00 GMT
+
+OS = RbConfig::CONFIG["target_os"]
+SHELL = RbConfig::CONFIG['SHELL']
+
+class Hash::Ordered < Hash
+ def [](key)
+ val = super and val.last
+ end
+ def []=(key, val)
+ ary = fetch(key) {return super(key, [self.size, key, val])} and
+ ary << val
+ end
+ def sort
+ values.sort.collect {|i, *rest| rest}
+ end
+ def each(&block)
+ sort.each(&block)
+ end
+end
+
+def charset_alias(config_charset, mapfile, target = OS)
+ map = Hash::Ordered.new
+ comments = []
+ open(config_charset) do |input|
+ input.find {|line| /^case "\$os" in/ =~ line} or break
+ input.find {|line|
+ /^\s*([-\w\*]+(?:\s*\|\s*[-\w\*]+)*)(?=\))/ =~ line and
+ $&.split('|').any? {|pattern| File.fnmatch?(pattern.strip, target)}
+ } or break
+ input.find do |line|
+ case line
+ when /^\s*echo "(?:\$\w+\.)?([-\w*]+)\s+([-\w]+)"/
+ sys, can = $1, $2
+ can.downcase!
+ map[can] = sys
+ false
+ when /^\s*;;/
+ true
+ else
+ false
+ end
+ end
+ end
+ case target
+ when /linux|-gnu/
+ # map.delete('ascii')
+ when /cygwin|os2-emx/
+ # get rid of tilde/yen problem.
+ map['shift_jis'] = 'cp932'
+ end
+ st = Hash.new(0)
+ map = map.sort.collect do |can, *sys|
+ if sys.grep(/^en_us(?=.|$)/i) {break true} == true
+ noen = %r"^(?!en_us)\w+_\w+#{Regexp.new($')}$"i #"
+ sys.reject! {|s| noen =~ s}
+ end
+ sys = sys.first
+ st[sys] += 1
+ [can, sys]
+ end
+ st.delete_if {|sys, i| i == 1}.empty?
+ st.keys.each {|sys| st[sys] = nil}
+ st.default = nil
+ writer = proc do |f|
+ f.puts("require 'iconv.so'")
+ f.puts
+ f.puts(comments)
+ f.puts("class Iconv")
+ i = 0
+ map.each do |can, sys|
+ if s = st[sys]
+ sys = s
+ elsif st.key?(sys)
+ sys = (st[sys] = "sys#{i+=1}") + " = '#{sys}'.freeze"
+ else
+ sys = "'#{sys}'.freeze"
+ end
+ f.puts(" charset_map['#{can}'] = #{sys}")
+ end
+ f.puts("end")
+ end
+ if mapfile
+ open(mapfile, "w", &writer)
+ else
+ writer[STDOUT]
+ end
+end
+
+target = OS
+opt = nil
+ARGV.options do |opt2|
+ opt = opt2
+ opt.banner << " config.status map.rb"
+ opt.on("--target OS") {|t| target = t}
+ opt.parse! and (1..2) === ARGV.size
+end or abort opt.to_s
+charset_alias(ARGV[0], ARGV[1], target)
diff --git a/ext/iconv/depend b/ext/iconv/depend
new file mode 100644
index 0000000000..ac555596ce
--- /dev/null
+++ b/ext/iconv/depend
@@ -0,0 +1,2 @@
+iconv.o: iconv.c $(hdrdir)/ruby.h $(topdir)/config.h $(hdrdir)/defines.h \
+ $(hdrdir)/st.h $(hdrdir)/intern.h $(hdrdir)/encoding.h
diff --git a/ext/iconv/extconf.rb b/ext/iconv/extconf.rb
new file mode 100644
index 0000000000..c4a57c80d6
--- /dev/null
+++ b/ext/iconv/extconf.rb
@@ -0,0 +1,54 @@
+require 'mkmf'
+
+dir_config("iconv")
+
+conf = File.exist?(File.join($srcdir, "config.charset"))
+conf = with_config("config-charset", enable_config("config-charset", conf))
+
+if have_func("iconv", "iconv.h") or
+ have_library("iconv", "iconv", "iconv.h")
+ check_signedness("size_t")
+ if checking_for("const of iconv() 2nd argument") do
+ create_tmpsrc(cpp_include("iconv.h") + "---> iconv(cd,0,0,0,0) <---")
+ src = xpopen(cpp_command("")) {|f|f.read}
+ if !(func = src[/^--->\s*(\w+).*\s*<---/, 1])
+ Logging::message "iconv function name not found"
+ false
+ elsif !(second = src[%r"\b#{func}\s*\(.*?,(.*?),.*?\)\s*;"m, 1])
+ Logging::message "prototype for #{func}() not found"
+ false
+ else
+ Logging::message $&+"\n"
+ /\bconst\b/ =~ second
+ end
+ end
+ $defs.push('-DICONV_INPTR_CONST')
+ end
+ have_func("iconvlist", "iconv.h")
+ have_func("__iconv_free_list", "iconv.h")
+ if conf
+ prefix = '$(srcdir)'
+ prefix = $nmake ? "{#{prefix}}" : "#{prefix}/"
+ if $extout
+ wrapper = "$(RUBYARCHDIR)/iconv.rb"
+ else
+ wrapper = "./iconv.rb"
+ $INSTALLFILES = [[wrapper, "$(RUBYARCHDIR)"]]
+ end
+ if String === conf
+ require 'uri'
+ scheme = URI.parse(conf).scheme
+ else
+ conf = "$(srcdir)/config.charset"
+ end
+ $cleanfiles << wrapper
+ end
+ create_makefile("iconv")
+ if conf
+ open("Makefile", "a") do |mf|
+ mf.print("\nall: #{wrapper}\n\n#{wrapper}: #{prefix}charset_alias.rb")
+ mf.print(" ", conf) unless scheme
+ mf.print("\n\t$(RUBY) $(srcdir)/charset_alias.rb #{conf} $@\n")
+ end
+ end
+end
diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c
new file mode 100644
index 0000000000..531745c38d
--- /dev/null
+++ b/ext/iconv/iconv.c
@@ -0,0 +1,1256 @@
+/* -*- mode:c; c-file-style:"ruby" -*- */
+/**********************************************************************
+
+ iconv.c -
+
+ $Author$
+ created at: Wed Dec 1 20:28:09 JST 1999
+
+ All the files in this distribution are covered under the Ruby's
+ license (see the file COPYING).
+
+ Documentation by Yukihiro Matsumoto and Gavin Sinclair.
+
+**********************************************************************/
+
+#include "ruby/ruby.h"
+#include <errno.h>
+#include <iconv.h>
+#include <assert.h>
+#include "ruby/st.h"
+#include "ruby/encoding.h"
+
+/*
+ * Document-class: Iconv
+ *
+ * == Summary
+ *
+ * Ruby extension for charset conversion.
+ *
+ * == Abstract
+ *
+ * Iconv is a wrapper class for the UNIX 95 <tt>iconv()</tt> function family,
+ * which translates string between various encoding systems.
+ *
+ * See Open Group's on-line documents for more details.
+ * * <tt>iconv.h</tt>: http://www.opengroup.org/onlinepubs/007908799/xsh/iconv.h.html
+ * * <tt>iconv_open()</tt>: http://www.opengroup.org/onlinepubs/007908799/xsh/iconv_open.html
+ * * <tt>iconv()</tt>: http://www.opengroup.org/onlinepubs/007908799/xsh/iconv.html
+ * * <tt>iconv_close()</tt>: http://www.opengroup.org/onlinepubs/007908799/xsh/iconv_close.html
+ *
+ * Which coding systems are available is platform-dependent.
+ *
+ * == Examples
+ *
+ * 1. Simple conversion between two charsets.
+ *
+ * converted_text = Iconv.conv('iso-8859-15', 'utf-8', text)
+ *
+ * 2. Instantiate a new Iconv and use method Iconv#iconv.
+ *
+ * cd = Iconv.new(to, from)
+ * begin
+ * input.each { |s| output << cd.iconv(s) }
+ * output << cd.iconv(nil) # Don't forget this!
+ * ensure
+ * cd.close
+ * end
+ *
+ * 3. Invoke Iconv.open with a block.
+ *
+ * Iconv.open(to, from) do |cd|
+ * input.each { |s| output << cd.iconv(s) }
+ * output << cd.iconv(nil)
+ * end
+ *
+ * 4. Shorthand for (3).
+ *
+ * Iconv.iconv(to, from, *input.to_a)
+ *
+ * == Attentions
+ *
+ * Even if some extentions of implementation dependent are useful,
+ * DON'T USE those extentions in libraries and scripts to widely distribute.
+ * If you want to use those feature, use String#encode.
+ */
+
+/* Invalid value for iconv_t is -1 but 0 for VALUE, I hope VALUE is
+ big enough to keep iconv_t */
+#define VALUE2ICONV(v) ((iconv_t)((VALUE)(v) ^ -1))
+#define ICONV2VALUE(c) ((VALUE)(c) ^ -1)
+
+struct iconv_env_t
+{
+ iconv_t cd;
+ int argc;
+ VALUE *argv;
+ VALUE ret;
+ int toidx;
+ VALUE (*append)_((VALUE, VALUE));
+};
+
+struct rb_iconv_opt_t
+{
+ VALUE transliterate;
+ VALUE discard_ilseq;
+};
+
+static ID id_transliterate, id_discard_ilseq;
+
+static VALUE rb_eIconvInvalidEncoding;
+static VALUE rb_eIconvFailure;
+static VALUE rb_eIconvIllegalSeq;
+static VALUE rb_eIconvInvalidChar;
+static VALUE rb_eIconvOutOfRange;
+static VALUE rb_eIconvBrokenLibrary;
+
+static ID rb_success, rb_failed;
+static VALUE iconv_fail _((VALUE error, VALUE success, VALUE failed, struct iconv_env_t* env, const char *mesg));
+static VALUE iconv_fail_retry _((VALUE error, VALUE success, VALUE failed, struct iconv_env_t* env, const char *mesg));
+static VALUE iconv_failure_initialize _((VALUE error, VALUE mesg, VALUE success, VALUE failed));
+static VALUE iconv_failure_success _((VALUE self));
+static VALUE iconv_failure_failed _((VALUE self));
+
+static iconv_t iconv_create _((VALUE to, VALUE from, struct rb_iconv_opt_t *opt, int *idx));
+static void iconv_dfree _((void *cd));
+static VALUE iconv_free _((VALUE cd));
+static VALUE iconv_try _((iconv_t cd, const char **inptr, size_t *inlen, char **outptr, size_t *outlen));
+static VALUE rb_str_derive _((VALUE str, const char* ptr, long len));
+static VALUE iconv_convert _((iconv_t cd, VALUE str, long start, long length, int toidx,
+ struct iconv_env_t* env));
+static VALUE iconv_s_allocate _((VALUE klass));
+static VALUE iconv_initialize _((int argc, VALUE *argv, VALUE self));
+static VALUE iconv_s_open _((int argc, VALUE *argv, VALUE self));
+static VALUE iconv_s_convert _((struct iconv_env_t* env));
+static VALUE iconv_s_iconv _((int argc, VALUE *argv, VALUE self));
+static VALUE iconv_init_state _((VALUE cd));
+static VALUE iconv_finish _((VALUE self));
+static VALUE iconv_iconv _((int argc, VALUE *argv, VALUE self));
+static VALUE iconv_conv _((int argc, VALUE *argv, VALUE self));
+
+static VALUE charset_map;
+
+/*
+ * Document-method: charset_map
+ * call-seq: Iconv.charset_map
+ *
+ * Returns the map from canonical name to system dependent name.
+ */
+static VALUE
+charset_map_get(void)
+{
+ return charset_map;
+}
+
+static VALUE
+strip_glibc_option(VALUE *code)
+{
+ VALUE val = StringValue(*code);
+ const char *ptr = RSTRING_PTR(val), *pend = RSTRING_END(val);
+ const char *slash = memchr(ptr, '/', pend - ptr);
+
+ if (slash && slash < pend - 1 && slash[1] == '/') {
+ VALUE opt = rb_str_subseq(val, slash - ptr, pend - slash);
+ val = rb_str_subseq(val, 0, slash - ptr);
+ *code = val;
+ return opt;
+ }
+ return 0;
+}
+
+static char *
+map_charset(VALUE *code)
+{
+ VALUE val = StringValue(*code);
+
+ if (RHASH_SIZE(charset_map)) {
+ st_data_t data;
+ VALUE key = rb_funcall2(val, rb_intern("downcase"), 0, 0);
+ StringValuePtr(key);
+ if (st_lookup(RHASH_TBL(charset_map), key, &data)) {
+ *code = (VALUE)data;
+ }
+ }
+ return StringValuePtr(*code);
+}
+
+NORETURN(static void rb_iconv_sys_fail(const char *s));
+static void
+rb_iconv_sys_fail(const char *s)
+{
+ if (errno == 0) {
+ rb_exc_raise(iconv_fail(rb_eIconvBrokenLibrary, Qnil, Qnil, NULL, s));
+ }
+ rb_sys_fail(s);
+}
+
+#define rb_sys_fail(s) rb_iconv_sys_fail(s)
+
+static iconv_t
+iconv_create(VALUE to, VALUE from, struct rb_iconv_opt_t *opt, int *idx)
+{
+ VALUE toopt = strip_glibc_option(&to);
+ VALUE fromopt = strip_glibc_option(&from);
+ VALUE toenc = 0, fromenc = 0;
+ const char* tocode = map_charset(&to);
+ const char* fromcode = map_charset(&from);
+ iconv_t cd;
+ int retry = 0;
+
+ *idx = rb_enc_find_index(tocode);
+
+ if (toopt) {
+ toenc = rb_str_plus(to, toopt);
+ tocode = RSTRING_PTR(toenc);
+ }
+ if (fromopt) {
+ fromenc = rb_str_plus(from, fromopt);
+ fromcode = RSTRING_PTR(fromenc);
+ }
+ while ((cd = iconv_open(tocode, fromcode)) == (iconv_t)-1) {
+ int inval = 0;
+ switch (errno) {
+ case EMFILE:
+ case ENFILE:
+ case ENOMEM:
+ if (!retry++) {
+ rb_gc();
+ continue;
+ }
+ break;
+ case EINVAL:
+ retry = 0;
+ inval = 1;
+ if (toenc) {
+ tocode = RSTRING_PTR(to);
+ rb_str_resize(toenc, 0);
+ toenc = 0;
+ continue;
+ }
+ if (fromenc) {
+ fromcode = RSTRING_PTR(from);
+ rb_str_resize(fromenc, 0);
+ fromenc = 0;
+ continue;
+ }
+ break;
+ }
+ {
+ const char *s = inval ? "invalid encoding " : "iconv";
+ volatile VALUE msg = rb_str_new(0, strlen(s) + RSTRING_LEN(to) +
+ RSTRING_LEN(from) + 8);
+
+ sprintf(RSTRING_PTR(msg), "%s(\"%s\", \"%s\")",
+ s, RSTRING_PTR(to), RSTRING_PTR(from));
+ s = RSTRING_PTR(msg);
+ rb_str_set_len(msg, strlen(s));
+ if (!inval) rb_sys_fail(s);
+ rb_exc_raise(iconv_fail(rb_eIconvInvalidEncoding, Qnil,
+ rb_ary_new3(2, to, from), NULL, s));
+ }
+ }
+
+ if (toopt || fromopt) {
+ if (toopt && fromopt && RTEST(rb_str_equal(toopt, fromopt))) {
+ fromopt = 0;
+ }
+ if (toopt && fromopt) {
+ rb_warning("encoding option isn't portable: %s, %s",
+ RSTRING_PTR(toopt) + 2, RSTRING_PTR(fromopt) + 2);
+ }
+ else {
+ rb_warning("encoding option isn't portable: %s",
+ (toopt ? RSTRING_PTR(toopt) : RSTRING_PTR(fromopt)) + 2);
+ }
+ }
+
+ if (opt) {
+#ifdef ICONV_SET_TRANSLITERATE
+ if (opt->transliterate != Qundef) {
+ int flag = RTEST(opt->transliterate);
+ rb_warning("encoding option isn't portable: transliterate");
+ if (iconvctl(cd, ICONV_SET_TRANSLITERATE, (void *)&flag))
+ rb_sys_fail("ICONV_SET_TRANSLITERATE");
+ }
+#endif
+#ifdef ICONV_SET_DISCARD_ILSEQ
+ if (opt->discard_ilseq != Qundef) {
+ int flag = RTEST(opt->discard_ilseq);
+ rb_warning("encoding option isn't portable: discard_ilseq");
+ if (iconvctl(cd, ICONV_SET_DISCARD_ILSEQ, (void *)&flag))
+ rb_sys_fail("ICONV_SET_DISCARD_ILSEQ");
+ }
+#endif
+ }
+
+ return cd;
+}
+
+static void
+iconv_dfree(void *cd)
+{
+ iconv_close(VALUE2ICONV(cd));
+}
+
+#define ICONV_FREE iconv_dfree
+
+static VALUE
+iconv_free(VALUE cd)
+{
+ if (cd && iconv_close(VALUE2ICONV(cd)) == -1)
+ rb_sys_fail("iconv_close");
+ return Qnil;
+}
+
+static VALUE
+check_iconv(VALUE obj)
+{
+ Check_Type(obj, T_DATA);
+ if (RDATA(obj)->dfree != ICONV_FREE) {
+ rb_raise(rb_eArgError, "Iconv expected (%s)", rb_class2name(CLASS_OF(obj)));
+ }
+ return (VALUE)DATA_PTR(obj);
+}
+
+static VALUE
+iconv_try(iconv_t cd, const char **inptr, size_t *inlen, char **outptr, size_t *outlen)
+{
+#ifdef ICONV_INPTR_CONST
+#define ICONV_INPTR_CAST
+#else
+#define ICONV_INPTR_CAST (char **)
+#endif
+ size_t ret;
+
+ errno = 0;
+ ret = iconv(cd, ICONV_INPTR_CAST inptr, inlen, outptr, outlen);
+ if (ret == (size_t)-1) {
+ if (!*inlen)
+ return Qfalse;
+ switch (errno) {
+ case E2BIG:
+ /* try the left in next loop */
+ break;
+ case EILSEQ:
+ return rb_eIconvIllegalSeq;
+ case EINVAL:
+ return rb_eIconvInvalidChar;
+ case 0:
+ return rb_eIconvBrokenLibrary;
+ default:
+ rb_sys_fail("iconv");
+ }
+ }
+ else if (*inlen > 0) {
+ /* something goes wrong */
+ return rb_eIconvIllegalSeq;
+ }
+ else if (ret) {
+ return Qnil; /* conversion */
+ }
+ return Qfalse;
+}
+
+#define FAILED_MAXLEN 16
+
+static VALUE
+iconv_failure_initialize(VALUE error, VALUE mesg, VALUE success, VALUE failed)
+{
+ rb_call_super(1, &mesg);
+ rb_ivar_set(error, rb_success, success);
+ rb_ivar_set(error, rb_failed, failed);
+ return error;
+}
+
+static VALUE
+iconv_fail(VALUE error, VALUE success, VALUE failed, struct iconv_env_t* env, const char *mesg)
+{
+ VALUE args[3];
+
+ if (mesg && *mesg) {
+ args[0] = rb_str_new2(mesg);
+ }
+ else if (TYPE(failed) != T_STRING || RSTRING_LEN(failed) < FAILED_MAXLEN) {
+ args[0] = rb_inspect(failed);
+ }
+ else {
+ args[0] = rb_inspect(rb_str_substr(failed, 0, FAILED_MAXLEN));
+ rb_str_cat2(args[0], "...");
+ }
+ args[1] = success;
+ args[2] = failed;
+ if (env) {
+ args[1] = env->append(rb_obj_dup(env->ret), success);
+ if (env->argc > 0) {
+ *(env->argv) = failed;
+ args[2] = rb_ary_new4(env->argc, env->argv);
+ }
+ }
+ return rb_class_new_instance(3, args, error);
+}
+
+static VALUE
+iconv_fail_retry(VALUE error, VALUE success, VALUE failed, struct iconv_env_t* env, const char *mesg)
+{
+ error = iconv_fail(error, success, failed, env, mesg);
+ if (!rb_block_given_p()) rb_exc_raise(error);
+ rb_set_errinfo(error);
+ return rb_yield(failed);
+}
+
+static VALUE
+rb_str_derive(VALUE str, const char* ptr, long len)
+{
+ VALUE ret;
+
+ if (NIL_P(str))
+ return rb_str_new(ptr, len);
+ if (RSTRING_PTR(str) + RSTRING_LEN(str) == ptr + len)
+ ret = rb_str_subseq(str, ptr - RSTRING_PTR(str), len);
+ else
+ ret = rb_str_new(ptr, len);
+ OBJ_INFECT(ret, str);
+ return ret;
+}
+
+static VALUE
+iconv_convert(iconv_t cd, VALUE str, long start, long length, int toidx, struct iconv_env_t* env)
+{
+ VALUE ret = Qfalse;
+ VALUE error = Qfalse;
+ VALUE rescue;
+ const char *inptr, *instart;
+ size_t inlen;
+ /* I believe ONE CHARACTER never exceed this. */
+ char buffer[BUFSIZ];
+ char *outptr;
+ size_t outlen;
+
+ if (cd == (iconv_t)-1)
+ rb_raise(rb_eArgError, "closed iconv");
+
+ if (NIL_P(str)) {
+ /* Reset output pointer or something. */
+ inptr = "";
+ inlen = 0;
+ outptr = buffer;
+ outlen = sizeof(buffer);
+ error = iconv_try(cd, &inptr, &inlen, &outptr, &outlen);
+ if (RTEST(error)) {
+ unsigned int i;
+ rescue = iconv_fail_retry(error, Qnil, Qnil, env, 0);
+ if (TYPE(rescue) == T_ARRAY) {
+ str = RARRAY_LEN(rescue) > 0 ? RARRAY_PTR(rescue)[0] : Qnil;
+ }
+ if (FIXNUM_P(str) && (i = FIX2INT(str)) <= 0xff) {
+ char c = i;
+ str = rb_str_new(&c, 1);
+ }
+ else if (!NIL_P(str)) {
+ StringValue(str);
+ }
+ }
+
+ inptr = NULL;
+ length = 0;
+ }
+ else {
+ long slen;
+
+ StringValue(str);
+ slen = RSTRING_LEN(str);
+ inptr = RSTRING_PTR(str);
+
+ inptr += start;
+ if (length < 0 || length > start + slen)
+ length = slen - start;
+ }
+ instart = inptr;
+ inlen = length;
+
+ do {
+ char errmsg[50];
+ const char *tmpstart = inptr;
+ outptr = buffer;
+ outlen = sizeof(buffer);
+
+ errmsg[0] = 0;
+ error = iconv_try(cd, &inptr, &inlen, &outptr, &outlen);
+
+ if (
+#if SIGNEDNESS_OF_SIZE_T < 0
+ 0 <= outlen &&
+#endif
+ outlen <= sizeof(buffer)) {
+ outlen = sizeof(buffer) - outlen;
+ if (NIL_P(error) || /* something converted */
+ outlen > (size_t)(inptr - tmpstart) || /* input can't contain output */
+ (outlen < (size_t)(inptr - tmpstart) && inlen > 0) || /* something skipped */
+ memcmp(buffer, tmpstart, outlen)) /* something differs */
+ {
+ if (NIL_P(str)) {
+ ret = rb_str_new(buffer, outlen);
+ if (toidx >= 0) rb_enc_associate_index(ret, toidx);
+ }
+ else {
+ if (ret) {
+ ret = rb_str_buf_cat(ret, instart, tmpstart - instart);
+ }
+ else {
+ ret = rb_str_new(instart, tmpstart - instart);
+ if (toidx >= 0) rb_enc_associate_index(ret, toidx);
+ OBJ_INFECT(ret, str);
+ }
+ ret = rb_str_buf_cat(ret, buffer, outlen);
+ instart = inptr;
+ }
+ }
+ else if (!inlen) {
+ inptr = tmpstart + outlen;
+ }
+ }
+ else {
+ /* Some iconv() have a bug, return *outlen out of range */
+ sprintf(errmsg, "bug?(output length = %ld)", (long)(sizeof(buffer) - outlen));
+ error = rb_eIconvOutOfRange;
+ }
+
+ if (RTEST(error)) {
+ long len = 0;
+
+ if (!ret) {
+ ret = rb_str_derive(str, instart, inptr - instart);
+ if (toidx >= 0) rb_enc_associate_index(ret, toidx);
+ }
+ else if (inptr > instart) {
+ rb_str_cat(ret, instart, inptr - instart);
+ }
+ str = rb_str_derive(str, inptr, inlen);
+ rescue = iconv_fail_retry(error, ret, str, env, errmsg);
+ if (TYPE(rescue) == T_ARRAY) {
+ if ((len = RARRAY_LEN(rescue)) > 0)
+ rb_str_concat(ret, RARRAY_PTR(rescue)[0]);
+ if (len > 1 && !NIL_P(str = RARRAY_PTR(rescue)[1])) {
+ StringValue(str);
+ inlen = length = RSTRING_LEN(str);
+ instart = inptr = RSTRING_PTR(str);
+ continue;
+ }
+ }
+ else if (!NIL_P(rescue)) {
+ rb_str_concat(ret, rescue);
+ }
+ break;
+ }
+ } while (inlen > 0);
+
+ if (!ret) {
+ ret = rb_str_derive(str, instart, inptr - instart);
+ if (toidx >= 0) rb_enc_associate_index(ret, toidx);
+ }
+ else if (inptr > instart) {
+ rb_str_cat(ret, instart, inptr - instart);
+ }
+ return ret;
+}
+
+static VALUE
+iconv_s_allocate(VALUE klass)
+{
+ return Data_Wrap_Struct(klass, 0, ICONV_FREE, 0);
+}
+
+static VALUE
+get_iconv_opt_i(VALUE i, VALUE arg)
+{
+ struct rb_iconv_opt_t *opt = (struct rb_iconv_opt_t *)arg;
+ VALUE name, val;
+
+ (void)opt;
+ i = rb_Array(i);
+ name = rb_ary_entry(i, 0);
+ val = rb_ary_entry(i, 1);
+ do {
+ if (SYMBOL_P(name)) {
+ ID id = SYM2ID(name);
+ if (id == id_transliterate) {
+#ifdef ICONV_SET_TRANSLITERATE
+ opt->transliterate = val;
+#else
+ rb_notimplement();
+#endif
+ break;
+ }
+ if (id == id_discard_ilseq) {
+#ifdef ICONV_SET_DISCARD_ILSEQ
+ opt->discard_ilseq = val;
+#else
+ rb_notimplement();
+#endif
+ break;
+ }
+ }
+ else {
+ const char *s = StringValueCStr(name);
+ if (strcmp(s, "transliterate") == 0) {
+#ifdef ICONV_SET_TRANSLITERATE
+ opt->transliterate = val;
+#else
+ rb_notimplement();
+#endif
+ break;
+ }
+ if (strcmp(s, "discard_ilseq") == 0) {
+#ifdef ICONV_SET_DISCARD_ILSEQ
+ opt->discard_ilseq = val;
+#else
+ rb_notimplement();
+#endif
+ break;
+ }
+ }
+ name = rb_inspect(name);
+ rb_raise(rb_eArgError, "unknown option - %s", StringValueCStr(name));
+ } while (0);
+ return Qnil;
+}
+
+static void
+get_iconv_opt(struct rb_iconv_opt_t *opt, VALUE options)
+{
+ opt->transliterate = Qundef;
+ opt->discard_ilseq = Qundef;
+ if (!NIL_P(options)) {
+ rb_block_call(options, rb_intern("each"), 0, 0, get_iconv_opt_i, (VALUE)opt);
+ }
+}
+
+#define iconv_ctl(self, func, val) (\
+ iconvctl(VALUE2ICONV(check_iconv(self)), func, (void *)&(val)) ? \
+ rb_sys_fail(#func) : (void)0)
+
+/*
+ * Document-method: new
+ * call-seq: Iconv.new(to, from, [options])
+ *
+ * Creates new code converter from a coding-system designated with +from+
+ * to another one designated with +to+.
+ *
+ * === Parameters
+ *
+ * +to+:: encoding name for destination
+ * +from+:: encoding name for source
+ * +options+:: options for converter
+ *
+ * === Exceptions
+ *
+ * TypeError:: if +to+ or +from+ aren't String
+ * InvalidEncoding:: if designated converter couldn't find out
+ * SystemCallError:: if <tt>iconv_open(3)</tt> fails
+ */
+static VALUE
+iconv_initialize(int argc, VALUE *argv, VALUE self)
+{
+ VALUE to, from, options;
+ struct rb_iconv_opt_t opt;
+ int idx;
+
+ rb_scan_args(argc, argv, "21", &to, &from, &options);
+ get_iconv_opt(&opt, options);
+ iconv_free(check_iconv(self));
+ DATA_PTR(self) = NULL;
+ DATA_PTR(self) = (void *)ICONV2VALUE(iconv_create(to, from, &opt, &idx));
+ if (idx >= 0) ENCODING_SET(self, idx);
+ return self;
+}
+
+/*
+ * Document-method: open
+ * call-seq: Iconv.open(to, from) { |iconv| ... }
+ *
+ * Equivalent to Iconv.new except that when it is called with a block, it
+ * yields with the new instance and closes it, and returns the result which
+ * returned from the block.
+ */
+static VALUE
+iconv_s_open(int argc, VALUE *argv, VALUE self)
+{
+ VALUE to, from, options, cd;
+ struct rb_iconv_opt_t opt;
+ int idx;
+
+ rb_scan_args(argc, argv, "21", &to, &from, &options);
+ get_iconv_opt(&opt, options);
+ cd = ICONV2VALUE(iconv_create(to, from, &opt, &idx));
+
+ self = Data_Wrap_Struct(self, NULL, ICONV_FREE, (void *)cd);
+ if (idx >= 0) ENCODING_SET(self, idx);
+
+ if (rb_block_given_p()) {
+ return rb_ensure(rb_yield, self, (VALUE(*)())iconv_finish, self);
+ }
+ else {
+ return self;
+ }
+}
+
+static VALUE
+iconv_s_convert(struct iconv_env_t* env)
+{
+ VALUE last = 0;
+
+ for (; env->argc > 0; --env->argc, ++env->argv) {
+ VALUE s = iconv_convert(env->cd, last = *(env->argv),
+ 0, -1, env->toidx, env);
+ env->append(env->ret, s);
+ }
+
+ if (!NIL_P(last)) {
+ VALUE s = iconv_convert(env->cd, Qnil, 0, 0, env->toidx, env);
+ if (RSTRING_LEN(s))
+ env->append(env->ret, s);
+ }
+
+ return env->ret;
+}
+
+/*
+ * Document-method: Iconv::iconv
+ * call-seq: Iconv.iconv(to, from, *strs)
+ *
+ * Shorthand for
+ * Iconv.open(to, from) { |cd|
+ * (strs + [nil]).collect { |s| cd.iconv(s) }
+ * }
+ *
+ * === Parameters
+ *
+ * <tt>to, from</tt>:: see Iconv.new
+ * <tt>strs</tt>:: strings to be converted
+ *
+ * === Exceptions
+ *
+ * Exceptions thrown by Iconv.new, Iconv.open and Iconv#iconv.
+ */
+static VALUE
+iconv_s_iconv(int argc, VALUE *argv, VALUE self)
+{
+ struct iconv_env_t arg;
+
+ if (argc < 2) /* needs `to' and `from' arguments at least */
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for %d)", argc, 2);
+
+ arg.argc = argc -= 2;
+ arg.argv = argv + 2;
+ arg.append = rb_ary_push;
+ arg.ret = rb_ary_new2(argc);
+ arg.cd = iconv_create(argv[0], argv[1], NULL, &arg.toidx);
+ return rb_ensure(iconv_s_convert, (VALUE)&arg, iconv_free, ICONV2VALUE(arg.cd));
+}
+
+/*
+ * Document-method: Iconv::conv
+ * call-seq: Iconv.conv(to, from, str)
+ *
+ * Shorthand for
+ * Iconv.iconv(to, from, str).join
+ * See Iconv.iconv.
+ */
+static VALUE
+iconv_s_conv(VALUE self, VALUE to, VALUE from, VALUE str)
+{
+ struct iconv_env_t arg;
+
+ arg.argc = 1;
+ arg.argv = &str;
+ arg.append = rb_str_append;
+ arg.ret = rb_str_new(0, 0);
+ arg.cd = iconv_create(to, from, NULL, &arg.toidx);
+ return rb_ensure(iconv_s_convert, (VALUE)&arg, iconv_free, ICONV2VALUE(arg.cd));
+}
+
+/*
+ * Document-method: list
+ * call-seq: Iconv.list {|*aliases| ... }
+ *
+ * Iterates each alias sets.
+ */
+
+#ifdef HAVE_ICONVLIST
+struct iconv_name_list
+{
+ unsigned int namescount;
+ const char *const *names;
+ VALUE array;
+};
+
+static VALUE
+list_iconv_i(VALUE ptr)
+{
+ struct iconv_name_list *p = (struct iconv_name_list *)ptr;
+ unsigned int i, namescount = p->namescount;
+ const char *const *names = p->names;
+ VALUE ary = rb_ary_new2(namescount);
+
+ for (i = 0; i < namescount; i++) {
+ rb_ary_push(ary, rb_str_new2(names[i]));
+ }
+ if (p->array) {
+ return rb_ary_push(p->array, ary);
+ }
+ return rb_yield(ary);
+}
+
+static int
+list_iconv(unsigned int namescount, const char *const *names, void *data)
+{
+ int *state = data;
+ struct iconv_name_list list;
+
+ list.namescount = namescount;
+ list.names = names;
+ list.array = ((VALUE *)data)[1];
+ rb_protect(list_iconv_i, (VALUE)&list, state);
+ return *state;
+}
+#endif
+
+#if defined(HAVE_ICONVLIST) || defined(HAVE___ICONV_FREE_LIST)
+static VALUE
+iconv_s_list(void)
+{
+#ifdef HAVE_ICONVLIST
+ int state;
+ VALUE args[2];
+
+ args[1] = rb_block_given_p() ? 0 : rb_ary_new();
+ iconvlist(list_iconv, args);
+ state = *(int *)args;
+ if (state) rb_jump_tag(state);
+ if (args[1]) return args[1];
+#elif defined(HAVE___ICONV_FREE_LIST)
+ char **list;
+ size_t sz, i;
+ VALUE ary;
+
+ if (__iconv_get_list(&list, &sz)) return Qnil;
+
+ ary = rb_ary_new2(sz);
+ for (i = 0; i < sz; i++) {
+ rb_ary_push(ary, rb_str_new2(list[i]));
+ }
+ __iconv_free_list(list, sz);
+
+ if (!rb_block_given_p())
+ return ary;
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ rb_yield(RARRAY_PTR(ary)[i]);
+ }
+#endif
+ return Qnil;
+}
+#else
+#define iconv_s_list rb_f_notimplement
+#endif
+
+/*
+ * Document-method: close
+ *
+ * Finishes conversion.
+ *
+ * After calling this, calling Iconv#iconv will cause an exception, but
+ * multiple calls of #close are guaranteed to end successfully.
+ *
+ * Returns a string containing the byte sequence to change the output buffer to
+ * its initial shift state.
+ */
+static VALUE
+iconv_init_state(VALUE self)
+{
+ iconv_t cd = VALUE2ICONV((VALUE)DATA_PTR(self));
+ DATA_PTR(self) = NULL;
+ return iconv_convert(cd, Qnil, 0, 0, ENCODING_GET(self), NULL);
+}
+
+static VALUE
+iconv_finish(VALUE self)
+{
+ VALUE cd = check_iconv(self);
+
+ if (!cd) return Qnil;
+ return rb_ensure(iconv_init_state, self, iconv_free, cd);
+}
+
+/*
+ * Document-method: Iconv#iconv
+ * call-seq: iconv(str, start=0, length=-1)
+ *
+ * Converts string and returns the result.
+ * * If +str+ is a String, converts <tt>str[start, length]</tt> and returns the converted string.
+ * * If +str+ is +nil+, places converter itself into initial shift state and
+ * just returns a string containing the byte sequence to change the output
+ * buffer to its initial shift state.
+ * * Otherwise, raises an exception.
+ *
+ * === Parameters
+ *
+ * str:: string to be converted, or nil
+ * start:: starting offset
+ * length:: conversion length; nil or -1 means whole the string from start
+ *
+ * === Exceptions
+ *
+ * * IconvIllegalSequence
+ * * IconvInvalidCharacter
+ * * IconvOutOfRange
+ *
+ * === Examples
+ *
+ * See the Iconv documentation.
+ */
+static VALUE
+iconv_iconv(int argc, VALUE *argv, VALUE self)
+{
+ VALUE str, n1, n2;
+ VALUE cd = check_iconv(self);
+ long start = 0, length = 0, slen = 0;
+
+ rb_scan_args(argc, argv, "12", &str, &n1, &n2);
+ if (!NIL_P(str)) {
+ VALUE n = rb_str_length(StringValue(str));
+ slen = NUM2LONG(n);
+ }
+ if (argc != 2 || !RTEST(rb_range_beg_len(n1, &start, &length, slen, 0))) {
+ if (NIL_P(n1) || ((start = NUM2LONG(n1)) < 0 ? (start += slen) >= 0 : start < slen)) {
+ length = NIL_P(n2) ? -1 : NUM2LONG(n2);
+ }
+ }
+ if (start > 0 || length > 0) {
+ rb_encoding *enc = rb_enc_get(str);
+ const char *s = RSTRING_PTR(str), *e = s + RSTRING_LEN(str);
+ const char *ps = s;
+ if (start > 0) {
+ start = (ps = rb_enc_nth(s, e, start, enc)) - s;
+ }
+ if (length > 0) {
+ length = rb_enc_nth(ps, e, length, enc) - ps;
+ }
+ }
+
+ return iconv_convert(VALUE2ICONV(cd), str, start, length, ENCODING_GET(self), NULL);
+}
+
+/*
+ * Document-method: conv
+ * call-seq: conv(str...)
+ *
+ * Equivalent to
+ *
+ * iconv(nil, str..., nil).join
+ */
+static VALUE
+iconv_conv(int argc, VALUE *argv, VALUE self)
+{
+ iconv_t cd = VALUE2ICONV(check_iconv(self));
+ VALUE str, s;
+ int toidx = ENCODING_GET(self);
+
+ str = iconv_convert(cd, Qnil, 0, 0, toidx, NULL);
+ if (argc > 0) {
+ do {
+ s = iconv_convert(cd, *argv++, 0, -1, toidx, NULL);
+ if (RSTRING_LEN(s))
+ rb_str_buf_append(str, s);
+ } while (--argc);
+ s = iconv_convert(cd, Qnil, 0, 0, toidx, NULL);
+ if (RSTRING_LEN(s))
+ rb_str_buf_append(str, s);
+ }
+
+ return str;
+}
+
+#ifdef ICONV_TRIVIALP
+/*
+ * Document-method: trivial?
+ * call-seq: trivial?
+ *
+ * Returns trivial flag.
+ */
+static VALUE
+iconv_trivialp(VALUE self)
+{
+ int trivial = 0;
+ iconv_ctl(self, ICONV_TRIVIALP, trivial);
+ if (trivial) return Qtrue;
+ return Qfalse;
+}
+#else
+#define iconv_trivialp rb_f_notimplement
+#endif
+
+#ifdef ICONV_GET_TRANSLITERATE
+/*
+ * Document-method: transliterate?
+ * call-seq: transliterate?
+ *
+ * Returns transliterate flag.
+ */
+static VALUE
+iconv_get_transliterate(VALUE self)
+{
+ int trans = 0;
+ iconv_ctl(self, ICONV_GET_TRANSLITERATE, trans);
+ if (trans) return Qtrue;
+ return Qfalse;
+}
+#else
+#define iconv_get_transliterate rb_f_notimplement
+#endif
+
+#ifdef ICONV_SET_TRANSLITERATE
+/*
+ * Document-method: transliterate=
+ * call-seq: cd.transliterate = flag
+ *
+ * Sets transliterate flag.
+ */
+static VALUE
+iconv_set_transliterate(VALUE self, VALUE transliterate)
+{
+ int trans = RTEST(transliterate);
+ iconv_ctl(self, ICONV_SET_TRANSLITERATE, trans);
+ return self;
+}
+#else
+#define iconv_set_transliterate rb_f_notimplement
+#endif
+
+#ifdef ICONV_GET_DISCARD_ILSEQ
+/*
+ * Document-method: discard_ilseq?
+ * call-seq: discard_ilseq?
+ *
+ * Returns discard_ilseq flag.
+ */
+static VALUE
+iconv_get_discard_ilseq(VALUE self)
+{
+ int dis = 0;
+ iconv_ctl(self, ICONV_GET_DISCARD_ILSEQ, dis);
+ if (dis) return Qtrue;
+ return Qfalse;
+}
+#else
+#define iconv_get_discard_ilseq rb_f_notimplement
+#endif
+
+#ifdef ICONV_SET_DISCARD_ILSEQ
+/*
+ * Document-method: discard_ilseq=
+ * call-seq: cd.discard_ilseq = flag
+ *
+ * Sets discard_ilseq flag.
+ */
+static VALUE
+iconv_set_discard_ilseq(VALUE self, VALUE discard_ilseq)
+{
+ int dis = RTEST(discard_ilseq);
+ iconv_ctl(self, ICONV_SET_DISCARD_ILSEQ, dis);
+ return self;
+}
+#else
+#define iconv_set_discard_ilseq rb_f_notimplement
+#endif
+
+/*
+ * Document-method: ctlmethods
+ * call-seq: Iconv.ctlmethods => array
+ *
+ * Returns available iconvctl() method list.
+ */
+static VALUE
+iconv_s_ctlmethods(VALUE klass)
+{
+ VALUE ary = rb_ary_new();
+#ifdef ICONV_TRIVIALP
+ rb_ary_push(ary, ID2SYM(rb_intern("trivial?")));
+#endif
+#ifdef ICONV_GET_TRANSLITERATE
+ rb_ary_push(ary, ID2SYM(rb_intern("transliterate?")));
+#endif
+#ifdef ICONV_SET_TRANSLITERATE
+ rb_ary_push(ary, ID2SYM(rb_intern("transliterate=")));
+#endif
+#ifdef ICONV_GET_DISCARD_ILSEQ
+ rb_ary_push(ary, ID2SYM(rb_intern("discard_ilseq?")));
+#endif
+#ifdef ICONV_SET_DISCARD_ILSEQ
+ rb_ary_push(ary, ID2SYM(rb_intern("discard_ilseq=")));
+#endif
+ return ary;
+}
+
+/*
+ * Document-class: Iconv::Failure
+ *
+ * Base attributes for Iconv exceptions.
+ */
+
+/*
+ * Document-method: success
+ * call-seq: success
+ *
+ * Returns string(s) translated successfully until the exception occurred.
+ * * In the case of failure occurred within Iconv.iconv, returned
+ * value is an array of strings translated successfully preceding
+ * failure and the last element is string on the way.
+ */
+static VALUE
+iconv_failure_success(VALUE self)
+{
+ return rb_attr_get(self, rb_success);
+}
+
+/*
+ * Document-method: failed
+ * call-seq: failed
+ *
+ * Returns substring of the original string passed to Iconv that starts at the
+ * character caused the exception.
+ */
+static VALUE
+iconv_failure_failed(VALUE self)
+{
+ return rb_attr_get(self, rb_failed);
+}
+
+/*
+ * Document-method: inspect
+ * call-seq: inspect
+ *
+ * Returns inspected string like as: #<_class_: _success_, _failed_>
+ */
+static VALUE
+iconv_failure_inspect(VALUE self)
+{
+ const char *cname = rb_class2name(CLASS_OF(self));
+ VALUE success = rb_attr_get(self, rb_success);
+ VALUE failed = rb_attr_get(self, rb_failed);
+ VALUE str = rb_str_buf_cat2(rb_str_new2("#<"), cname);
+ str = rb_str_buf_cat(str, ": ", 2);
+ str = rb_str_buf_append(str, rb_inspect(success));
+ str = rb_str_buf_cat(str, ", ", 2);
+ str = rb_str_buf_append(str, rb_inspect(failed));
+ return rb_str_buf_cat(str, ">", 1);
+}
+
+/*
+ * Document-class: Iconv::InvalidEncoding
+ *
+ * Requested coding-system is not available on this system.
+ */
+
+/*
+ * Document-class: Iconv::IllegalSequence
+ *
+ * Input conversion stopped due to an input byte that does not belong to
+ * the input codeset, or the output codeset does not contain the
+ * character.
+ */
+
+/*
+ * Document-class: Iconv::InvalidCharacter
+ *
+ * Input conversion stopped due to an incomplete character or shift
+ * sequence at the end of the input buffer.
+ */
+
+/*
+ * Document-class: Iconv::OutOfRange
+ *
+ * Iconv library internal error. Must not occur.
+ */
+
+/*
+ * Document-class: Iconv::BrokenLibrary
+ *
+ * Detected a bug of underlying iconv(3) libray.
+ * * returns an error without setting errno properly
+ */
+
+static void
+warn_deprecated(void)
+{
+ static const char message[] =
+ ": iconv will be deprecated in the future, use String#encode instead.\n";
+ VALUE msg = Qnil, caller = rb_make_backtrace();
+ long i;
+
+ for (i = 1; i < RARRAY_LEN(caller); ++i) {
+ VALUE s = RARRAY_PTR(caller)[i];
+ if (strncmp(RSTRING_PTR(s), "<internal:", 10) != 0) {
+ msg = s;
+ break;
+ }
+ }
+ if (NIL_P(msg)) {
+ msg = rb_str_new_cstr(message + 2);
+ }
+ else {
+ rb_str_cat(msg, message, sizeof(message) - 1);
+ }
+ rb_io_puts(1, &msg, rb_stderr);
+}
+
+void
+Init_iconv(void)
+{
+ VALUE rb_cIconv = rb_define_class("Iconv", rb_cData);
+
+ if (!NIL_P(ruby_verbose)) {
+ warn_deprecated();
+ }
+ rb_define_alloc_func(rb_cIconv, iconv_s_allocate);
+ rb_define_singleton_method(rb_cIconv, "open", iconv_s_open, -1);
+ rb_define_singleton_method(rb_cIconv, "iconv", iconv_s_iconv, -1);
+ rb_define_singleton_method(rb_cIconv, "conv", iconv_s_conv, 3);
+ rb_define_singleton_method(rb_cIconv, "list", iconv_s_list, 0);
+ rb_define_singleton_method(rb_cIconv, "ctlmethods", iconv_s_ctlmethods, 0);
+ rb_define_method(rb_cIconv, "initialize", iconv_initialize, -1);
+ rb_define_method(rb_cIconv, "close", iconv_finish, 0);
+ rb_define_method(rb_cIconv, "iconv", iconv_iconv, -1);
+ rb_define_method(rb_cIconv, "conv", iconv_conv, -1);
+ rb_define_method(rb_cIconv, "trivial?", iconv_trivialp, 0);
+ rb_define_method(rb_cIconv, "transliterate?", iconv_get_transliterate, 0);
+ rb_define_method(rb_cIconv, "transliterate=", iconv_set_transliterate, 1);
+ rb_define_method(rb_cIconv, "discard_ilseq?", iconv_get_discard_ilseq, 0);
+ rb_define_method(rb_cIconv, "discard_ilseq=", iconv_set_discard_ilseq, 1);
+
+ rb_eIconvFailure = rb_define_module_under(rb_cIconv, "Failure");
+ rb_define_method(rb_eIconvFailure, "initialize", iconv_failure_initialize, 3);
+ rb_define_method(rb_eIconvFailure, "success", iconv_failure_success, 0);
+ rb_define_method(rb_eIconvFailure, "failed", iconv_failure_failed, 0);
+ rb_define_method(rb_eIconvFailure, "inspect", iconv_failure_inspect, 0);
+
+ rb_eIconvInvalidEncoding = rb_define_class_under(rb_cIconv, "InvalidEncoding", rb_eArgError);
+ rb_eIconvIllegalSeq = rb_define_class_under(rb_cIconv, "IllegalSequence", rb_eArgError);
+ rb_eIconvInvalidChar = rb_define_class_under(rb_cIconv, "InvalidCharacter", rb_eArgError);
+ rb_eIconvOutOfRange = rb_define_class_under(rb_cIconv, "OutOfRange", rb_eRuntimeError);
+ rb_eIconvBrokenLibrary = rb_define_class_under(rb_cIconv, "BrokenLibrary", rb_eRuntimeError);
+ rb_include_module(rb_eIconvInvalidEncoding, rb_eIconvFailure);
+ rb_include_module(rb_eIconvIllegalSeq, rb_eIconvFailure);
+ rb_include_module(rb_eIconvInvalidChar, rb_eIconvFailure);
+ rb_include_module(rb_eIconvOutOfRange, rb_eIconvFailure);
+ rb_include_module(rb_eIconvBrokenLibrary, rb_eIconvFailure);
+
+ rb_success = rb_intern("success");
+ rb_failed = rb_intern("failed");
+ id_transliterate = rb_intern("transliterate");
+ id_discard_ilseq = rb_intern("discard_ilseq");
+
+ rb_gc_register_address(&charset_map);
+ charset_map = rb_hash_new();
+ rb_define_singleton_method(rb_cIconv, "charset_map", charset_map_get, 0);
+}
+
diff --git a/ext/iconv/mkwrapper.rb b/ext/iconv/mkwrapper.rb
new file mode 100644
index 0000000000..44d5fcf194
--- /dev/null
+++ b/ext/iconv/mkwrapper.rb
@@ -0,0 +1,53 @@
+#! /usr/bin/ruby
+require 'rbconfig'
+require 'optparse'
+
+# http://www.ctan.org/get/macros/texinfo/texinfo/gnulib/lib/config.charset
+# Tue, 25 Dec 2007 00:00:00 GMT
+
+HEADER = <<SRC
+require 'iconv.so'
+
+class Iconv
+ case RUBY_PLATFORM
+SRC
+
+def charset_alias(config_charset, mapfile = nil)
+ found = nil
+ src = [HEADER]
+ open(config_charset) do |input|
+ input.find {|line| /^case "\$os" in/ =~ line} or return
+ input.each do |line|
+ case line
+ when /^\s*([-\w\*]+(?:\s*\|\s*[-\w\*]+)*)(?=\))/
+ (s = " when ") << $&.split('|').collect {|targ|
+ targ.strip!
+ tail = targ.chomp!("*") ? '' : '\z'
+ head = targ.slice!(/\A\*/) ? '' : '\A'
+ targ.gsub!(/\*/, '.*')
+ "/#{head}#{targ}#{tail}/"
+ }.join(", ")
+ src << s
+ found = {}
+ when /^\s*echo "(?:\$\w+\.)?([-\w*]+)\s+([-\w]+)"/
+ sys, can = $1, $2
+ can.downcase!
+ unless found[can] or (/\Aen_(?!US\z)/ =~ sys && /\ACP437\z/i =~ can)
+ found[can] = true
+ src << " charset_map['#{can}'] = '#{sys}'.freeze"
+ end
+ when /^\s*;;/
+ found = nil
+ end
+ end
+ end
+ src << " end" << "end"
+ if mapfile
+ open(mapfile, "wb") {|f| f.puts(*src)}
+ else
+ puts(*src)
+ end
+end
+
+(1..2) === ARGV.size or abort "usage: #{$0} config_charset [mapfile]"
+charset_alias(*ARGV)
diff --git a/ext/io/console/console.c b/ext/io/console/console.c
index 270ae3deaf..efad30c1ca 100644
--- a/ext/io/console/console.c
+++ b/ext/io/console/console.c
@@ -105,15 +105,13 @@ rawmode_opt(int argc, VALUE *argv, rawmode_arg_t *opts)
if (!NIL_P(vopts)) {
VALUE vmin = rb_hash_aref(vopts, ID2SYM(rb_intern("min")));
VALUE vtime = rb_hash_aref(vopts, ID2SYM(rb_intern("time")));
- /* default values by `stty raw` */
- opts->vmin = 1;
- opts->vtime = 0;
+ VALUE v10 = INT2FIX(10);
if (!NIL_P(vmin)) {
+ vmin = rb_funcall3(vmin, '*', 1, &v10);
opts->vmin = NUM2INT(vmin);
optp = opts;
}
if (!NIL_P(vtime)) {
- VALUE v10 = INT2FIX(10);
vtime = rb_funcall3(vtime, '*', 1, &v10);
opts->vtime = NUM2INT(vtime);
optp = opts;
@@ -661,7 +659,7 @@ console_dev(VALUE klass)
if (klass == rb_cIO) klass = rb_cFile;
if (rb_const_defined(klass, id_console)) {
con = rb_const_get(klass, id_console);
- if (RB_TYPE_P(con, T_FILE)) {
+ if (TYPE(con) == T_FILE) {
if ((fptr = RFILE(con)->fptr) && GetReadFD(fptr) != -1)
return con;
}
@@ -686,14 +684,14 @@ console_dev(VALUE klass)
int fd;
#ifdef CONSOLE_DEVICE_FOR_WRITING
- fd = rb_cloexec_open(CONSOLE_DEVICE_FOR_WRITING, O_RDWR, 0);
+ fd = open(CONSOLE_DEVICE_FOR_WRITING, O_WRONLY);
if (fd < 0) return Qnil;
rb_update_max_fd(fd);
args[1] = INT2FIX(O_WRONLY);
args[0] = INT2NUM(fd);
out = rb_class_new_instance(2, args, klass);
#endif
- fd = rb_cloexec_open(CONSOLE_DEVICE_FOR_READING, O_RDWR, 0);
+ fd = open(CONSOLE_DEVICE_FOR_READING, O_RDWR);
if (fd < 0) {
#ifdef CONSOLE_DEVICE_FOR_WRITING
rb_io_close(out);
diff --git a/ext/io/console/io-console.gemspec b/ext/io/console/io-console.gemspec
index fd8a9aaf3e..2d34a41336 100644
--- a/ext/io/console/io-console.gemspec
+++ b/ext/io/console/io-console.gemspec
@@ -1,18 +1,15 @@
# -*- ruby -*-
-_VERSION = "0.4.2"
-date = %w$Date:: $[1]
+_VERSION = "0.3"
Gem::Specification.new do |s|
s.name = "io-console"
s.version = _VERSION
- s.date = date
+ s.date = "2011-06-24"
s.summary = "Console interface"
s.email = "nobu@ruby-lang.org"
s.description = "add console capabilities to IO instances."
- s.homepage = "http://www.ruby-lang.org"
s.authors = ["Nobu Nakada"]
s.require_path = %[.]
s.files = %w[console.c extconf.rb lib/console/size.rb]
s.extensions = %w[extconf.rb]
- s.licenses = "ruby"
end
diff --git a/ext/io/wait/wait.c b/ext/io/wait/wait.c
index c7a290fd4f..34e832b122 100644
--- a/ext/io/wait/wait.c
+++ b/ext/io/wait/wait.c
@@ -14,9 +14,6 @@
#include "ruby/io.h"
#include <sys/types.h>
-#if defined(HAVE_UNISTD_H) && (defined(__sun))
-#include <unistd.h>
-#endif
#if defined(HAVE_SYS_IOCTL_H)
#include <sys/ioctl.h>
#endif
@@ -40,8 +37,7 @@
#endif
static VALUE io_ready_p _((VALUE io));
-static VALUE io_wait_readable _((int argc, VALUE *argv, VALUE io));
-static VALUE io_wait_writable _((int argc, VALUE *argv, VALUE io));
+static VALUE io_wait _((int argc, VALUE *argv, VALUE io));
void Init_wait _((void));
/*
@@ -102,7 +98,7 @@ io_ready_p(VALUE io)
*/
static VALUE
-io_wait_readable(int argc, VALUE *argv, VALUE io)
+io_wait(int argc, VALUE *argv, VALUE io)
{
rb_io_t *fptr;
int i;
@@ -134,43 +130,6 @@ io_wait_readable(int argc, VALUE *argv, VALUE io)
}
/*
- * call-seq:
- * io.wait_writable -> IO
- * io.wait_writable(timeout) -> IO or nil
- *
- * Waits until IO writable is available or times out and returns self or
- * nil when EOF is reached.
- */
-static VALUE
-io_wait_writable(int argc, VALUE *argv, VALUE io)
-{
- rb_io_t *fptr;
- int i;
- VALUE timeout;
- struct timeval timerec;
- struct timeval *tv;
-
- GetOpenFile(io, fptr);
- rb_io_check_writable(fptr);
- rb_scan_args(argc, argv, "01", &timeout);
- if (NIL_P(timeout)) {
- tv = NULL;
- }
- else {
- timerec = rb_time_interval(timeout);
- tv = &timerec;
- }
-
- i = rb_wait_for_single_fd(fptr->fd, RB_WAITFD_OUT, tv);
- if (i < 0)
- rb_sys_fail(0);
- rb_io_check_closed(fptr);
- if (i & RB_WAITFD_OUT)
- return io;
- return Qnil;
-}
-
-/*
* IO wait methods
*/
@@ -179,7 +138,5 @@ Init_wait()
{
rb_define_method(rb_cIO, "nread", io_nread, 0);
rb_define_method(rb_cIO, "ready?", io_ready_p, 0);
- rb_define_method(rb_cIO, "wait", io_wait_readable, -1);
- rb_define_method(rb_cIO, "wait_readable", io_wait_readable, -1);
- rb_define_method(rb_cIO, "wait_writable", io_wait_writable, -1);
+ rb_define_method(rb_cIO, "wait", io_wait, -1);
}
diff --git a/ext/json/fbuffer/fbuffer.h b/ext/json/fbuffer/fbuffer.h
deleted file mode 100644
index 1e860eb790..0000000000
--- a/ext/json/fbuffer/fbuffer.h
+++ /dev/null
@@ -1,190 +0,0 @@
-
-#ifndef _FBUFFER_H_
-#define _FBUFFER_H_
-
-#include "ruby.h"
-
-#ifndef RHASH_SIZE
-#define RHASH_SIZE(hsh) (RHASH(hsh)->tbl->num_entries)
-#endif
-
-#ifndef RFLOAT_VALUE
-#define RFLOAT_VALUE(val) (RFLOAT(val)->value)
-#endif
-
-#ifndef RARRAY_PTR
-#define RARRAY_PTR(ARRAY) RARRAY(ARRAY)->ptr
-#endif
-#ifndef RARRAY_LEN
-#define RARRAY_LEN(ARRAY) RARRAY(ARRAY)->len
-#endif
-#ifndef RSTRING_PTR
-#define RSTRING_PTR(string) RSTRING(string)->ptr
-#endif
-#ifndef RSTRING_LEN
-#define RSTRING_LEN(string) RSTRING(string)->len
-#endif
-
-#ifdef PRIsVALUE
-# define RB_OBJ_CLASSNAME(obj) rb_obj_class(obj)
-# define RB_OBJ_STRING(obj) (obj)
-#else
-# define PRIsVALUE "s"
-# define RB_OBJ_CLASSNAME(obj) rb_obj_classname(obj)
-# define RB_OBJ_STRING(obj) StringValueCStr(obj)
-#endif
-
-#ifdef HAVE_RUBY_ENCODING_H
-#include "ruby/encoding.h"
-#define FORCE_UTF8(obj) rb_enc_associate((obj), rb_utf8_encoding())
-#else
-#define FORCE_UTF8(obj)
-#endif
-
-/* We don't need to guard objects for rbx, so let's do nothing at all. */
-#ifndef RB_GC_GUARD
-#define RB_GC_GUARD(object)
-#endif
-
-typedef struct FBufferStruct {
- unsigned long initial_length;
- char *ptr;
- unsigned long len;
- unsigned long capa;
-} FBuffer;
-
-#define FBUFFER_INITIAL_LENGTH_DEFAULT 1024
-
-#define FBUFFER_PTR(fb) (fb->ptr)
-#define FBUFFER_LEN(fb) (fb->len)
-#define FBUFFER_CAPA(fb) (fb->capa)
-#define FBUFFER_PAIR(fb) FBUFFER_PTR(fb), FBUFFER_LEN(fb)
-
-static FBuffer *fbuffer_alloc(unsigned long initial_length);
-static void fbuffer_free(FBuffer *fb);
-static void fbuffer_clear(FBuffer *fb);
-static void fbuffer_append(FBuffer *fb, const char *newstr, unsigned long len);
-#ifdef JSON_GENERATOR
-static void fbuffer_append_long(FBuffer *fb, long number);
-#endif
-static void fbuffer_append_char(FBuffer *fb, char newchr);
-#ifdef JSON_GENERATOR
-static FBuffer *fbuffer_dup(FBuffer *fb);
-static VALUE fbuffer_to_s(FBuffer *fb);
-#endif
-
-static FBuffer *fbuffer_alloc(unsigned long initial_length)
-{
- FBuffer *fb;
- if (initial_length <= 0) initial_length = FBUFFER_INITIAL_LENGTH_DEFAULT;
- fb = ALLOC(FBuffer);
- memset((void *) fb, 0, sizeof(FBuffer));
- fb->initial_length = initial_length;
- return fb;
-}
-
-static void fbuffer_free(FBuffer *fb)
-{
- if (fb->ptr) ruby_xfree(fb->ptr);
- ruby_xfree(fb);
-}
-
-static void fbuffer_clear(FBuffer *fb)
-{
- fb->len = 0;
-}
-
-static void fbuffer_inc_capa(FBuffer *fb, unsigned long requested)
-{
- unsigned long required;
-
- if (!fb->ptr) {
- fb->ptr = ALLOC_N(char, fb->initial_length);
- fb->capa = fb->initial_length;
- }
-
- for (required = fb->capa; requested > required - fb->len; required <<= 1);
-
- if (required > fb->capa) {
- REALLOC_N(fb->ptr, char, required);
- fb->capa = required;
- }
-}
-
-static void fbuffer_append(FBuffer *fb, const char *newstr, unsigned long len)
-{
- if (len > 0) {
- fbuffer_inc_capa(fb, len);
- MEMCPY(fb->ptr + fb->len, newstr, char, len);
- fb->len += len;
- }
-}
-
-#ifdef JSON_GENERATOR
-static void fbuffer_append_str(FBuffer *fb, VALUE str)
-{
- const char *newstr = StringValuePtr(str);
- unsigned long len = RSTRING_LEN(str);
-
- RB_GC_GUARD(str);
-
- fbuffer_append(fb, newstr, len);
-}
-#endif
-
-static void fbuffer_append_char(FBuffer *fb, char newchr)
-{
- fbuffer_inc_capa(fb, 1);
- *(fb->ptr + fb->len) = newchr;
- fb->len++;
-}
-
-#ifdef JSON_GENERATOR
-static void freverse(char *start, char *end)
-{
- char c;
-
- while (end > start) {
- c = *end, *end-- = *start, *start++ = c;
- }
-}
-
-static long fltoa(long number, char *buf)
-{
- static char digits[] = "0123456789";
- long sign = number;
- char* tmp = buf;
-
- if (sign < 0) number = -number;
- do *tmp++ = digits[number % 10]; while (number /= 10);
- if (sign < 0) *tmp++ = '-';
- freverse(buf, tmp - 1);
- return tmp - buf;
-}
-
-static void fbuffer_append_long(FBuffer *fb, long number)
-{
- char buf[20];
- unsigned long len = fltoa(number, buf);
- fbuffer_append(fb, buf, len);
-}
-
-static FBuffer *fbuffer_dup(FBuffer *fb)
-{
- unsigned long len = fb->len;
- FBuffer *result;
-
- result = fbuffer_alloc(len);
- fbuffer_append(result, FBUFFER_PAIR(fb));
- return result;
-}
-
-static VALUE fbuffer_to_s(FBuffer *fb)
-{
- VALUE result = rb_str_new(FBUFFER_PAIR(fb));
- fbuffer_free(fb);
- FORCE_UTF8(result);
- return result;
-}
-#endif
-#endif
diff --git a/ext/json/generator/depend b/ext/json/generator/depend
index 593a8fbb54..bb76ad6400 100644
--- a/ext/json/generator/depend
+++ b/ext/json/generator/depend
@@ -1,2 +1 @@
-$(OBJS): $(ruby_headers)
-generator.o: generator.c generator.h $(srcdir)/../fbuffer/fbuffer.h
+generator.o: generator.c generator.h
diff --git a/ext/json/generator/extconf.rb b/ext/json/generator/extconf.rb
index 8627c5f4bd..b94f71e8b3 100644
--- a/ext/json/generator/extconf.rb
+++ b/ext/json/generator/extconf.rb
@@ -1,4 +1,10 @@
require 'mkmf'
+require 'rbconfig'
-$defs << "-DJSON_GENERATOR"
+if RUBY_VERSION < "1.9"
+ have_header("re.h")
+else
+ have_header("ruby/re.h")
+ have_header("ruby/encoding.h")
+end
create_makefile 'json/ext/generator'
diff --git a/ext/json/generator/generator.c b/ext/json/generator/generator.c
index f32f866419..9ad037cd40 100644
--- a/ext/json/generator/generator.c
+++ b/ext/json/generator/generator.c
@@ -1,4 +1,3 @@
-#include "../fbuffer/fbuffer.h"
#include "generator.h"
#ifdef HAVE_RUBY_ENCODING_H
@@ -15,8 +14,7 @@ static VALUE mJSON, mExt, mGenerator, cState, mGeneratorMethods, mObject,
static ID i_to_s, i_to_json, i_new, i_indent, i_space, i_space_before,
i_object_nl, i_array_nl, i_max_nesting, i_allow_nan, i_ascii_only,
i_quirks_mode, i_pack, i_unpack, i_create_id, i_extend, i_key_p,
- i_aref, i_send, i_respond_to_p, i_match, i_keys, i_depth,
- i_buffer_initial_length, i_dup;
+ i_aref, i_send, i_respond_to_p, i_match, i_keys, i_depth, i_dup;
/*
* Copyright 2001-2004 Unicode, Inc.
@@ -114,7 +112,7 @@ static void unicode_escape(char *buf, UTF16 character)
}
/* Escapes the UTF16 character and stores the result in the buffer buf, then
- * the buffer buf is appended to the FBuffer buffer. */
+ * the buffer buf іs appended to the FBuffer buffer. */
static void unicode_escape_to_buffer(FBuffer *buffer, char buf[6], UTF16
character)
{
@@ -294,6 +292,123 @@ static char *fstrndup(const char *ptr, unsigned long len) {
return result;
}
+/* fbuffer implementation */
+
+static FBuffer *fbuffer_alloc()
+{
+ FBuffer *fb = ALLOC(FBuffer);
+ memset((void *) fb, 0, sizeof(FBuffer));
+ fb->initial_length = FBUFFER_INITIAL_LENGTH;
+ return fb;
+}
+
+static FBuffer *fbuffer_alloc_with_length(unsigned long initial_length)
+{
+ FBuffer *fb;
+ assert(initial_length > 0);
+ fb = ALLOC(FBuffer);
+ memset((void *) fb, 0, sizeof(FBuffer));
+ fb->initial_length = initial_length;
+ return fb;
+}
+
+static void fbuffer_free(FBuffer *fb)
+{
+ if (fb->ptr) ruby_xfree(fb->ptr);
+ ruby_xfree(fb);
+}
+
+static void fbuffer_clear(FBuffer *fb)
+{
+ fb->len = 0;
+}
+
+static void fbuffer_inc_capa(FBuffer *fb, unsigned long requested)
+{
+ unsigned long required;
+
+ if (!fb->ptr) {
+ fb->ptr = ALLOC_N(char, fb->initial_length);
+ fb->capa = fb->initial_length;
+ }
+
+ for (required = fb->capa; requested > required - fb->len; required <<= 1);
+
+ if (required > fb->capa) {
+ REALLOC_N(fb->ptr, char, required);
+ fb->capa = required;
+ }
+}
+
+static void fbuffer_append(FBuffer *fb, const char *newstr, unsigned long len)
+{
+ if (len > 0) {
+ fbuffer_inc_capa(fb, len);
+ MEMCPY(fb->ptr + fb->len, newstr, char, len);
+ fb->len += len;
+ }
+}
+
+static void fbuffer_append_str(FBuffer *fb, VALUE str)
+{
+ const char *newstr = StringValuePtr(str);
+ unsigned long len = RSTRING_LEN(str);
+
+ RB_GC_GUARD(str);
+
+ fbuffer_append(fb, newstr, len);
+}
+
+static void fbuffer_append_char(FBuffer *fb, char newchr)
+{
+ fbuffer_inc_capa(fb, 1);
+ *(fb->ptr + fb->len) = newchr;
+ fb->len++;
+}
+
+static void freverse(char *start, char *end)
+{
+ char c;
+
+ while (end > start) {
+ c = *end, *end-- = *start, *start++ = c;
+ }
+}
+
+static long fltoa(long number, char *buf)
+{
+ static char digits[] = "0123456789";
+ long sign = number;
+ char* tmp = buf;
+
+ if (sign < 0) number = -number;
+ do *tmp++ = digits[number % 10]; while (number /= 10);
+ if (sign < 0) *tmp++ = '-';
+ freverse(buf, tmp - 1);
+ return tmp - buf;
+}
+
+static void fbuffer_append_long(FBuffer *fb, long number)
+{
+ char buf[20];
+ unsigned long len = fltoa(number, buf);
+ fbuffer_append(fb, buf, len);
+}
+
+static FBuffer *fbuffer_dup(FBuffer *fb)
+{
+ unsigned long len = fb->len;
+ FBuffer *result;
+
+ if (len > 0) {
+ result = fbuffer_alloc_with_length(len);
+ fbuffer_append(result, FBUFFER_PAIR(fb));
+ } else {
+ result = fbuffer_alloc();
+ }
+ return result;
+}
+
/*
* Document-module: JSON::Ext::Generator
*
@@ -522,7 +637,7 @@ static VALUE cState_configure(VALUE self, VALUE opts)
unsigned long len;
Check_Type(tmp, T_STRING);
len = RSTRING_LEN(tmp);
- state->indent = fstrndup(RSTRING_PTR(tmp), len + 1);
+ state->indent = fstrndup(RSTRING_PTR(tmp), len);
state->indent_len = len;
}
tmp = rb_hash_aref(opts, ID2SYM(i_space));
@@ -530,7 +645,7 @@ static VALUE cState_configure(VALUE self, VALUE opts)
unsigned long len;
Check_Type(tmp, T_STRING);
len = RSTRING_LEN(tmp);
- state->space = fstrndup(RSTRING_PTR(tmp), len + 1);
+ state->space = fstrndup(RSTRING_PTR(tmp), len);
state->space_len = len;
}
tmp = rb_hash_aref(opts, ID2SYM(i_space_before));
@@ -538,7 +653,7 @@ static VALUE cState_configure(VALUE self, VALUE opts)
unsigned long len;
Check_Type(tmp, T_STRING);
len = RSTRING_LEN(tmp);
- state->space_before = fstrndup(RSTRING_PTR(tmp), len + 1);
+ state->space_before = fstrndup(RSTRING_PTR(tmp), len);
state->space_before_len = len;
}
tmp = rb_hash_aref(opts, ID2SYM(i_array_nl));
@@ -546,7 +661,7 @@ static VALUE cState_configure(VALUE self, VALUE opts)
unsigned long len;
Check_Type(tmp, T_STRING);
len = RSTRING_LEN(tmp);
- state->array_nl = fstrndup(RSTRING_PTR(tmp), len + 1);
+ state->array_nl = fstrndup(RSTRING_PTR(tmp), len);
state->array_nl_len = len;
}
tmp = rb_hash_aref(opts, ID2SYM(i_object_nl));
@@ -554,11 +669,11 @@ static VALUE cState_configure(VALUE self, VALUE opts)
unsigned long len;
Check_Type(tmp, T_STRING);
len = RSTRING_LEN(tmp);
- state->object_nl = fstrndup(RSTRING_PTR(tmp), len + 1);
+ state->object_nl = fstrndup(RSTRING_PTR(tmp), len);
state->object_nl_len = len;
}
tmp = ID2SYM(i_max_nesting);
- state->max_nesting = 100;
+ state->max_nesting = 19;
if (option_given_p(opts, tmp)) {
VALUE max_nesting = rb_hash_aref(opts, tmp);
if (RTEST(max_nesting)) {
@@ -579,16 +694,6 @@ static VALUE cState_configure(VALUE self, VALUE opts)
state->depth = 0;
}
}
- tmp = ID2SYM(i_buffer_initial_length);
- if (option_given_p(opts, tmp)) {
- VALUE buffer_initial_length = rb_hash_aref(opts, tmp);
- if (RTEST(buffer_initial_length)) {
- long initial_length;
- Check_Type(buffer_initial_length, T_FIXNUM);
- initial_length = FIX2LONG(buffer_initial_length);
- if (initial_length > 0) state->buffer_initial_length = initial_length;
- }
- }
tmp = rb_hash_aref(opts, ID2SYM(i_allow_nan));
state->allow_nan = RTEST(tmp);
tmp = rb_hash_aref(opts, ID2SYM(i_ascii_only));
@@ -598,18 +703,6 @@ static VALUE cState_configure(VALUE self, VALUE opts)
return self;
}
-static void set_state_ivars(VALUE hash, VALUE state)
-{
- VALUE ivars = rb_obj_instance_variables(state);
- int i = 0;
- for (i = 0; i < RARRAY_LEN(ivars); i++) {
- VALUE key = rb_funcall(rb_ary_entry(ivars, i), i_to_s, 0);
- long key_len = RSTRING_LEN(key);
- VALUE value = rb_iv_get(state, StringValueCStr(key));
- rb_hash_aset(hash, rb_str_intern(rb_str_substr(key, 1, key_len - 1)), value);
- }
-}
-
/*
* call-seq: to_h
*
@@ -620,7 +713,6 @@ static VALUE cState_to_h(VALUE self)
{
VALUE result = rb_hash_new();
GET_STATE(self);
- set_state_ivars(result, self);
rb_hash_aset(result, ID2SYM(i_indent), rb_str_new(state->indent, state->indent_len));
rb_hash_aset(result, ID2SYM(i_space), rb_str_new(state->space, state->space_len));
rb_hash_aset(result, ID2SYM(i_space_before), rb_str_new(state->space_before, state->space_before_len));
@@ -631,7 +723,6 @@ static VALUE cState_to_h(VALUE self)
rb_hash_aset(result, ID2SYM(i_quirks_mode), state->quirks_mode ? Qtrue : Qfalse);
rb_hash_aset(result, ID2SYM(i_max_nesting), LONG2FIX(state->max_nesting));
rb_hash_aset(result, ID2SYM(i_depth), LONG2FIX(state->depth));
- rb_hash_aset(result, ID2SYM(i_buffer_initial_length), LONG2FIX(state->buffer_initial_length));
return result;
}
@@ -642,31 +733,12 @@ static VALUE cState_to_h(VALUE self)
*/
static VALUE cState_aref(VALUE self, VALUE name)
{
- name = rb_funcall(name, i_to_s, 0);
+ GET_STATE(self);
if (RTEST(rb_funcall(self, i_respond_to_p, 1, name))) {
return rb_funcall(self, i_send, 1, name);
} else {
- return rb_ivar_get(self, rb_intern_str(rb_str_concat(rb_str_new2("@"), name)));
- }
-}
-
-/*
-* call-seq: []=(name, value)
-*
-* Set the attribute name to value.
-*/
-static VALUE cState_aset(VALUE self, VALUE name, VALUE value)
-{
- VALUE name_writer;
-
- name = rb_funcall(name, i_to_s, 0);
- name_writer = rb_str_cat2(rb_str_dup(name), "=");
- if (RTEST(rb_funcall(self, i_respond_to_p, 1, name_writer))) {
- return rb_funcall(self, i_send, 2, name_writer, value);
- } else {
- rb_ivar_set(self, rb_intern_str(rb_str_concat(rb_str_new2("@"), name)), value);
+ return Qnil;
}
- return Qnil;
}
static void generate_json_object(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
@@ -804,10 +876,10 @@ static void generate_json_float(FBuffer *buffer, VALUE Vstate, JSON_Generator_St
if (!allow_nan) {
if (isinf(value)) {
fbuffer_free(buffer);
- rb_raise(eGeneratorError, "%u: %"PRIsVALUE" not allowed in JSON", __LINE__, RB_OBJ_STRING(tmp));
+ rb_raise(eGeneratorError, "%u: %s not allowed in JSON", __LINE__, StringValueCStr(tmp));
} else if (isnan(value)) {
fbuffer_free(buffer);
- rb_raise(eGeneratorError, "%u: %"PRIsVALUE" not allowed in JSON", __LINE__, RB_OBJ_STRING(tmp));
+ rb_raise(eGeneratorError, "%u: %s not allowed in JSON", __LINE__, StringValueCStr(tmp));
}
}
fbuffer_append_str(buffer, tmp);
@@ -848,20 +920,19 @@ static void generate_json(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *s
static FBuffer *cState_prepare_buffer(VALUE self)
{
- FBuffer *buffer;
+ FBuffer *buffer = fbuffer_alloc();
GET_STATE(self);
- buffer = fbuffer_alloc(state->buffer_initial_length);
if (state->object_delim) {
fbuffer_clear(state->object_delim);
} else {
- state->object_delim = fbuffer_alloc(16);
+ state->object_delim = fbuffer_alloc_with_length(16);
}
fbuffer_append_char(state->object_delim, ',');
if (state->object_delim2) {
fbuffer_clear(state->object_delim2);
} else {
- state->object_delim2 = fbuffer_alloc(16);
+ state->object_delim2 = fbuffer_alloc_with_length(16);
}
fbuffer_append_char(state->object_delim2, ':');
if (state->space) fbuffer_append(state->object_delim2, state->space, state->space_len);
@@ -869,13 +940,21 @@ static FBuffer *cState_prepare_buffer(VALUE self)
if (state->array_delim) {
fbuffer_clear(state->array_delim);
} else {
- state->array_delim = fbuffer_alloc(16);
+ state->array_delim = fbuffer_alloc_with_length(16);
}
fbuffer_append_char(state->array_delim, ',');
if (state->array_nl) fbuffer_append(state->array_delim, state->array_nl, state->array_nl_len);
return buffer;
}
+static VALUE fbuffer_to_s(FBuffer *fb)
+{
+ VALUE result = rb_str_new(FBUFFER_PAIR(fb));
+ fbuffer_free(fb);
+ FORCE_UTF8(result);
+ return result;
+}
+
static VALUE cState_partial_generate(VALUE self, VALUE obj)
{
FBuffer *buffer = cState_prepare_buffer(self);
@@ -885,21 +964,6 @@ static VALUE cState_partial_generate(VALUE self, VALUE obj)
}
/*
- * This function returns true if string is either a JSON array or JSON object.
- * It might suffer from false positives, e. g. syntactically incorrect JSON in
- * the string or certain UTF-8 characters on the right hand side.
- */
-static int isArrayOrObject(VALUE string)
-{
- long string_len = RSTRING_LEN(string);
- char *p = RSTRING_PTR(string), *q = p + string_len - 1;
- if (string_len < 2) return 0;
- for (; p < q && isspace(*p); p++);
- for (; q > p && isspace(*q); q--);
- return (*p == '[' && *q == ']') || (*p == '{' && *q == '}');
-}
-
-/*
* call-seq: generate(obj)
*
* Generates a valid JSON document from object +obj+ and returns the
@@ -909,9 +973,15 @@ static int isArrayOrObject(VALUE string)
static VALUE cState_generate(VALUE self, VALUE obj)
{
VALUE result = cState_partial_generate(self, obj);
+ VALUE re, args[2];
GET_STATE(self);
- if (!state->quirks_mode && !isArrayOrObject(result)) {
- rb_raise(eGeneratorError, "only generation of JSON objects or arrays allowed");
+ if (!state->quirks_mode) {
+ args[0] = rb_str_new2("\\A\\s*(?:\\[.*\\]|\\{.*\\})\\s*\\Z");
+ args[1] = CRegexp_MULTILINE;
+ re = rb_class_new_instance(2, args, rb_cRegexp);
+ if (NIL_P(rb_funcall(re, i_match, 1, result))) {
+ rb_raise(eGeneratorError, "only generation of JSON objects or arrays allowed");
+ }
}
return result;
}
@@ -933,15 +1003,12 @@ static VALUE cState_generate(VALUE self, VALUE obj)
* encountered. This options defaults to false.
* * *quirks_mode*: Enables quirks_mode for parser, that is for example
* generating single JSON values instead of documents is possible.
- * * *buffer_initial_length*: sets the initial length of the generator's
- * internal buffer.
*/
static VALUE cState_initialize(int argc, VALUE *argv, VALUE self)
{
VALUE opts;
GET_STATE(self);
- state->max_nesting = 100;
- state->buffer_initial_length = FBUFFER_INITIAL_LENGTH_DEFAULT;
+ state->max_nesting = 19;
rb_scan_args(argc, argv, "01", &opts);
if (!NIL_P(opts)) cState_configure(self, opts);
return self;
@@ -957,7 +1024,6 @@ static VALUE cState_init_copy(VALUE obj, VALUE orig)
{
JSON_Generator_State *objState, *origState;
- if (obj == orig) return obj;
Data_Get_Struct(obj, JSON_Generator_State, objState);
Data_Get_Struct(orig, JSON_Generator_State, origState);
if (!objState) rb_raise(rb_eArgError, "unallocated JSON::State");
@@ -1003,7 +1069,7 @@ static VALUE cState_from_state_s(VALUE self, VALUE opts)
static VALUE cState_indent(VALUE self)
{
GET_STATE(self);
- return state->indent ? rb_str_new(state->indent, state->indent_len) : rb_str_new2("");
+ return state->indent ? rb_str_new2(state->indent) : rb_str_new2("");
}
/*
@@ -1040,7 +1106,7 @@ static VALUE cState_indent_set(VALUE self, VALUE indent)
static VALUE cState_space(VALUE self)
{
GET_STATE(self);
- return state->space ? rb_str_new(state->space, state->space_len) : rb_str_new2("");
+ return state->space ? rb_str_new2(state->space) : rb_str_new2("");
}
/*
@@ -1077,7 +1143,7 @@ static VALUE cState_space_set(VALUE self, VALUE space)
static VALUE cState_space_before(VALUE self)
{
GET_STATE(self);
- return state->space_before ? rb_str_new(state->space_before, state->space_before_len) : rb_str_new2("");
+ return state->space_before ? rb_str_new2(state->space_before) : rb_str_new2("");
}
/*
@@ -1114,7 +1180,7 @@ static VALUE cState_space_before_set(VALUE self, VALUE space_before)
static VALUE cState_object_nl(VALUE self)
{
GET_STATE(self);
- return state->object_nl ? rb_str_new(state->object_nl, state->object_nl_len) : rb_str_new2("");
+ return state->object_nl ? rb_str_new2(state->object_nl) : rb_str_new2("");
}
/*
@@ -1150,7 +1216,7 @@ static VALUE cState_object_nl_set(VALUE self, VALUE object_nl)
static VALUE cState_array_nl(VALUE self)
{
GET_STATE(self);
- return state->array_nl ? rb_str_new(state->array_nl, state->array_nl_len) : rb_str_new2("");
+ return state->array_nl ? rb_str_new2(state->array_nl) : rb_str_new2("");
}
/*
@@ -1283,37 +1349,7 @@ static VALUE cState_depth_set(VALUE self, VALUE depth)
{
GET_STATE(self);
Check_Type(depth, T_FIXNUM);
- state->depth = FIX2LONG(depth);
- return Qnil;
-}
-
-/*
- * call-seq: buffer_initial_length
- *
- * This integer returns the current inital length of the buffer.
- */
-static VALUE cState_buffer_initial_length(VALUE self)
-{
- GET_STATE(self);
- return LONG2FIX(state->buffer_initial_length);
-}
-
-/*
- * call-seq: buffer_initial_length=(length)
- *
- * This sets the initial length of the buffer to +length+, if +length+ > 0,
- * otherwise its value isn't changed.
- */
-static VALUE cState_buffer_initial_length_set(VALUE self, VALUE buffer_initial_length)
-{
- long initial_length;
- GET_STATE(self);
- Check_Type(buffer_initial_length, T_FIXNUM);
- initial_length = FIX2LONG(buffer_initial_length);
- if (initial_length > 0) {
- state->buffer_initial_length = initial_length;
- }
- return Qnil;
+ return state->depth = FIX2LONG(depth);
}
/*
@@ -1355,14 +1391,10 @@ void Init_generator()
rb_define_method(cState, "quirks_mode=", cState_quirks_mode_set, 1);
rb_define_method(cState, "depth", cState_depth, 0);
rb_define_method(cState, "depth=", cState_depth_set, 1);
- rb_define_method(cState, "buffer_initial_length", cState_buffer_initial_length, 0);
- rb_define_method(cState, "buffer_initial_length=", cState_buffer_initial_length_set, 1);
rb_define_method(cState, "configure", cState_configure, 1);
rb_define_alias(cState, "merge", "configure");
rb_define_method(cState, "to_h", cState_to_h, 0);
- rb_define_alias(cState, "to_hash", "to_h");
rb_define_method(cState, "[]", cState_aref, 1);
- rb_define_method(cState, "[]=", cState_aset, 2);
rb_define_method(cState, "generate", cState_generate, 1);
mGeneratorMethods = rb_define_module_under(mGenerator, "GeneratorMethods");
@@ -1406,7 +1438,6 @@ void Init_generator()
i_ascii_only = rb_intern("ascii_only");
i_quirks_mode = rb_intern("quirks_mode");
i_depth = rb_intern("depth");
- i_buffer_initial_length = rb_intern("buffer_initial_length");
i_pack = rb_intern("pack");
i_unpack = rb_intern("unpack");
i_create_id = rb_intern("create_id");
diff --git a/ext/json/generator/generator.h b/ext/json/generator/generator.h
index b58cc4bc2f..f882ea004b 100644
--- a/ext/json/generator/generator.h
+++ b/ext/json/generator/generator.h
@@ -2,27 +2,81 @@
#define _GENERATOR_H_
#include <string.h>
+#include <assert.h>
#include <math.h>
-#include <ctype.h>
#include "ruby.h"
-#ifdef HAVE_RUBY_RE_H
+#if HAVE_RUBY_RE_H
#include "ruby/re.h"
-#else
-#include "re.h"
#endif
-#ifndef rb_intern_str
-#define rb_intern_str(string) SYM2ID(rb_str_intern(string))
+#if HAVE_RE_H
+#include "re.h"
#endif
-#ifndef rb_obj_instance_variables
-#define rb_obj_instance_variables(object) rb_funcall(object, rb_intern("instance_variables"), 0)
+#ifdef HAVE_RUBY_ENCODING_H
+#include "ruby/encoding.h"
+#define FORCE_UTF8(obj) rb_enc_associate((obj), rb_utf8_encoding())
+#else
+#define FORCE_UTF8(obj)
#endif
#define option_given_p(opts, key) RTEST(rb_funcall(opts, i_key_p, 1, key))
+#ifndef RHASH_SIZE
+#define RHASH_SIZE(hsh) (RHASH(hsh)->tbl->num_entries)
+#endif
+
+#ifndef RFLOAT_VALUE
+#define RFLOAT_VALUE(val) (RFLOAT(val)->value)
+#endif
+
+#ifndef RARRAY_PTR
+#define RARRAY_PTR(ARRAY) RARRAY(ARRAY)->ptr
+#endif
+#ifndef RARRAY_LEN
+#define RARRAY_LEN(ARRAY) RARRAY(ARRAY)->len
+#endif
+#ifndef RSTRING_PTR
+#define RSTRING_PTR(string) RSTRING(string)->ptr
+#endif
+#ifndef RSTRING_LEN
+#define RSTRING_LEN(string) RSTRING(string)->len
+#endif
+
+/* We don't need to guard objects for rbx, so let's do nothing at all. */
+#ifndef RB_GC_GUARD
+#define RB_GC_GUARD(object)
+#endif
+
+/* fbuffer implementation */
+
+typedef struct FBufferStruct {
+ unsigned long initial_length;
+ char *ptr;
+ unsigned long len;
+ unsigned long capa;
+} FBuffer;
+
+#define FBUFFER_INITIAL_LENGTH 4096
+
+#define FBUFFER_PTR(fb) (fb->ptr)
+#define FBUFFER_LEN(fb) (fb->len)
+#define FBUFFER_CAPA(fb) (fb->capa)
+#define FBUFFER_PAIR(fb) FBUFFER_PTR(fb), FBUFFER_LEN(fb)
+
+static char *fstrndup(const char *ptr, unsigned long len);
+static FBuffer *fbuffer_alloc();
+static FBuffer *fbuffer_alloc_with_length(unsigned long initial_length);
+static void fbuffer_free(FBuffer *fb);
+static void fbuffer_clear(FBuffer *fb);
+static void fbuffer_append(FBuffer *fb, const char *newstr, unsigned long len);
+static void fbuffer_append_long(FBuffer *fb, long number);
+static void fbuffer_append_char(FBuffer *fb, char newchr);
+static FBuffer *fbuffer_dup(FBuffer *fb);
+static VALUE fbuffer_to_s(FBuffer *fb);
+
/* unicode defintions */
#define UNI_STRICT_CONVERSION 1
@@ -52,7 +106,6 @@ static void unicode_escape(char *buf, UTF16 character);
static void unicode_escape_to_buffer(FBuffer *buffer, char buf[6], UTF16 character);
static void convert_UTF8_to_JSON_ASCII(FBuffer *buffer, VALUE string);
static void convert_UTF8_to_JSON(FBuffer *buffer, VALUE string);
-static char *fstrndup(const char *ptr, unsigned long len);
/* ruby api and some helpers */
@@ -75,7 +128,6 @@ typedef struct JSON_Generator_StateStruct {
char ascii_only;
char quirks_mode;
long depth;
- long buffer_initial_length;
} JSON_Generator_State;
#define GET_STATE(self) \
diff --git a/ext/json/lib/json.rb b/ext/json/lib/json.rb
index 24aa385c91..00fe4cae84 100644
--- a/ext/json/lib/json.rb
+++ b/ext/json/lib/json.rb
@@ -1,5 +1,3 @@
-require 'json/common'
-
##
# = JavaScript Object Notation (JSON)
#
@@ -51,6 +49,8 @@ require 'json/common'
#
# 1.to_json => "1"
#
+
+require 'json/common'
module JSON
require 'json/version'
diff --git a/ext/json/lib/json/add/bigdecimal.rb b/ext/json/lib/json/add/bigdecimal.rb
deleted file mode 100644
index 0ef69f12e0..0000000000
--- a/ext/json/lib/json/add/bigdecimal.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
- require 'json'
-end
-defined?(::BigDecimal) or require 'bigdecimal'
-
-class BigDecimal
- # Import a JSON Marshalled object.
- #
- # method used for JSON marshalling support.
- def self.json_create(object)
- BigDecimal._load object['b']
- end
-
- # Marshal the object to JSON.
- #
- # method used for JSON marshalling support.
- def as_json(*)
- {
- JSON.create_id => self.class.name,
- 'b' => _dump,
- }
- end
-
- # return the JSON value
- def to_json(*)
- as_json.to_json
- end
-end
diff --git a/ext/json/lib/json/add/core.rb b/ext/json/lib/json/add/core.rb
index 77d9dc0b20..1ae00d01a5 100644
--- a/ext/json/lib/json/add/core.rb
+++ b/ext/json/lib/json/add/core.rb
@@ -1,11 +1,243 @@
-# This file requires the implementations of ruby core's custom objects for
+# This file contains implementations of ruby core's custom objects for
# serialisation/deserialisation.
-require 'json/add/date'
-require 'json/add/date_time'
-require 'json/add/exception'
-require 'json/add/range'
-require 'json/add/regexp'
-require 'json/add/struct'
-require 'json/add/symbol'
-require 'json/add/time'
+unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
+ require 'json'
+end
+require 'date'
+
+# Symbol serialization/deserialization
+class Symbol
+ # Returns a hash, that will be turned into a JSON object and represent this
+ # object.
+ def as_json(*)
+ {
+ JSON.create_id => self.class.name,
+ 's' => to_s,
+ }
+ end
+
+ # Stores class name (Symbol) with String representation of Symbol as a JSON string.
+ def to_json(*a)
+ as_json.to_json(*a)
+ end
+
+ # Deserializes JSON string by converting the <tt>string</tt> value stored in the object to a Symbol
+ def self.json_create(o)
+ o['s'].to_sym
+ end
+end
+
+# Time serialization/deserialization
+class Time
+
+ # Deserializes JSON string by converting time since epoch to Time
+ def self.json_create(object)
+ if usec = object.delete('u') # used to be tv_usec -> tv_nsec
+ object['n'] = usec * 1000
+ end
+ if respond_to?(:tv_nsec)
+ at(*object.values_at('s', 'n'))
+ else
+ at(object['s'], object['n'] / 1000)
+ end
+ end
+
+ # Returns a hash, that will be turned into a JSON object and represent this
+ # object.
+ def as_json(*)
+ {
+ JSON.create_id => self.class.name,
+ 's' => tv_sec,
+ 'n' => respond_to?(:tv_nsec) ? tv_nsec : tv_usec * 1000
+ }
+ end
+
+ # Stores class name (Time) with number of seconds since epoch and number of
+ # microseconds for Time as JSON string
+ def to_json(*args)
+ as_json.to_json(*args)
+ end
+end
+
+# Date serialization/deserialization
+class Date
+
+ # Deserializes JSON string by converting Julian year <tt>y</tt>, month
+ # <tt>m</tt>, day <tt>d</tt> and Day of Calendar Reform <tt>sg</tt> to Date.
+ def self.json_create(object)
+ civil(*object.values_at('y', 'm', 'd', 'sg'))
+ end
+
+ alias start sg unless method_defined?(:start)
+
+ # Returns a hash, that will be turned into a JSON object and represent this
+ # object.
+ def as_json(*)
+ {
+ JSON.create_id => self.class.name,
+ 'y' => year,
+ 'm' => month,
+ 'd' => day,
+ 'sg' => start,
+ }
+ end
+
+ # Stores class name (Date) with Julian year <tt>y</tt>, month <tt>m</tt>, day
+ # <tt>d</tt> and Day of Calendar Reform <tt>sg</tt> as JSON string
+ def to_json(*args)
+ as_json.to_json(*args)
+ end
+end
+
+# DateTime serialization/deserialization
+class DateTime
+
+ # Deserializes JSON string by converting year <tt>y</tt>, month <tt>m</tt>,
+ # day <tt>d</tt>, hour <tt>H</tt>, minute <tt>M</tt>, second <tt>S</tt>,
+ # offset <tt>of</tt> and Day of Calendar Reform <tt>sg</tt> to DateTime.
+ def self.json_create(object)
+ args = object.values_at('y', 'm', 'd', 'H', 'M', 'S')
+ of_a, of_b = object['of'].split('/')
+ if of_b and of_b != '0'
+ args << Rational(of_a.to_i, of_b.to_i)
+ else
+ args << of_a
+ end
+ args << object['sg']
+ civil(*args)
+ end
+
+ alias start sg unless method_defined?(:start)
+
+ # Returns a hash, that will be turned into a JSON object and represent this
+ # object.
+ def as_json(*)
+ {
+ JSON.create_id => self.class.name,
+ 'y' => year,
+ 'm' => month,
+ 'd' => day,
+ 'H' => hour,
+ 'M' => min,
+ 'S' => sec,
+ 'of' => offset.to_s,
+ 'sg' => start,
+ }
+ end
+
+ # Stores class name (DateTime) with Julian year <tt>y</tt>, month <tt>m</tt>,
+ # day <tt>d</tt>, hour <tt>H</tt>, minute <tt>M</tt>, second <tt>S</tt>,
+ # offset <tt>of</tt> and Day of Calendar Reform <tt>sg</tt> as JSON string
+ def to_json(*args)
+ as_json.to_json(*args)
+ end
+end
+
+# Range serialization/deserialization
+class Range
+
+ # Deserializes JSON string by constructing new Range object with arguments
+ # <tt>a</tt> serialized by <tt>to_json</tt>.
+ def self.json_create(object)
+ new(*object['a'])
+ end
+
+ # Returns a hash, that will be turned into a JSON object and represent this
+ # object.
+ def as_json(*)
+ {
+ JSON.create_id => self.class.name,
+ 'a' => [ first, last, exclude_end? ]
+ }
+ end
+
+ # Stores class name (Range) with JSON array of arguments <tt>a</tt> which
+ # include <tt>first</tt> (integer), <tt>last</tt> (integer), and
+ # <tt>exclude_end?</tt> (boolean) as JSON string.
+ def to_json(*args)
+ as_json.to_json(*args)
+ end
+end
+
+# Struct serialization/deserialization
+class Struct
+
+ # Deserializes JSON string by constructing new Struct object with values
+ # <tt>v</tt> serialized by <tt>to_json</tt>.
+ def self.json_create(object)
+ new(*object['v'])
+ end
+
+ # Returns a hash, that will be turned into a JSON object and represent this
+ # object.
+ def as_json(*)
+ klass = self.class.name
+ klass.to_s.empty? and raise JSON::JSONError, "Only named structs are supported!"
+ {
+ JSON.create_id => klass,
+ 'v' => values,
+ }
+ end
+
+ # Stores class name (Struct) with Struct values <tt>v</tt> as a JSON string.
+ # Only named structs are supported.
+ def to_json(*args)
+ as_json.to_json(*args)
+ end
+end
+
+# Exception serialization/deserialization
+class Exception
+
+ # Deserializes JSON string by constructing new Exception object with message
+ # <tt>m</tt> and backtrace <tt>b</tt> serialized with <tt>to_json</tt>
+ def self.json_create(object)
+ result = new(object['m'])
+ result.set_backtrace object['b']
+ result
+ end
+
+ # Returns a hash, that will be turned into a JSON object and represent this
+ # object.
+ def as_json(*)
+ {
+ JSON.create_id => self.class.name,
+ 'm' => message,
+ 'b' => backtrace,
+ }
+ end
+
+ # Stores class name (Exception) with message <tt>m</tt> and backtrace array
+ # <tt>b</tt> as JSON string
+ def to_json(*args)
+ as_json.to_json(*args)
+ end
+end
+
+# Regexp serialization/deserialization
+class Regexp
+
+ # Deserializes JSON string by constructing new Regexp object with source
+ # <tt>s</tt> (Regexp or String) and options <tt>o</tt> serialized by
+ # <tt>to_json</tt>
+ def self.json_create(object)
+ new(object['s'], object['o'])
+ end
+
+ # Returns a hash, that will be turned into a JSON object and represent this
+ # object.
+ def as_json(*)
+ {
+ JSON.create_id => self.class.name,
+ 'o' => options,
+ 's' => source,
+ }
+ end
+
+ # Stores class name (Regexp) with options <tt>o</tt> and source <tt>s</tt>
+ # (Regexp or String) as JSON string
+ def to_json(*)
+ as_json.to_json
+ end
+end
diff --git a/ext/json/lib/json/add/date.rb b/ext/json/lib/json/add/date.rb
deleted file mode 100644
index 4288237db1..0000000000
--- a/ext/json/lib/json/add/date.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
- require 'json'
-end
-require 'date'
-
-# Date serialization/deserialization
-class Date
-
- # Deserializes JSON string by converting Julian year <tt>y</tt>, month
- # <tt>m</tt>, day <tt>d</tt> and Day of Calendar Reform <tt>sg</tt> to Date.
- def self.json_create(object)
- civil(*object.values_at('y', 'm', 'd', 'sg'))
- end
-
- alias start sg unless method_defined?(:start)
-
- # Returns a hash, that will be turned into a JSON object and represent this
- # object.
- def as_json(*)
- {
- JSON.create_id => self.class.name,
- 'y' => year,
- 'm' => month,
- 'd' => day,
- 'sg' => start,
- }
- end
-
- # Stores class name (Date) with Julian year <tt>y</tt>, month <tt>m</tt>, day
- # <tt>d</tt> and Day of Calendar Reform <tt>sg</tt> as JSON string
- def to_json(*args)
- as_json.to_json(*args)
- end
-end
diff --git a/ext/json/lib/json/add/date_time.rb b/ext/json/lib/json/add/date_time.rb
deleted file mode 100644
index 5ea42ea656..0000000000
--- a/ext/json/lib/json/add/date_time.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
- require 'json'
-end
-require 'date'
-
-# DateTime serialization/deserialization
-class DateTime
-
- # Deserializes JSON string by converting year <tt>y</tt>, month <tt>m</tt>,
- # day <tt>d</tt>, hour <tt>H</tt>, minute <tt>M</tt>, second <tt>S</tt>,
- # offset <tt>of</tt> and Day of Calendar Reform <tt>sg</tt> to DateTime.
- def self.json_create(object)
- args = object.values_at('y', 'm', 'd', 'H', 'M', 'S')
- of_a, of_b = object['of'].split('/')
- if of_b and of_b != '0'
- args << Rational(of_a.to_i, of_b.to_i)
- else
- args << of_a
- end
- args << object['sg']
- civil(*args)
- end
-
- alias start sg unless method_defined?(:start)
-
- # Returns a hash, that will be turned into a JSON object and represent this
- # object.
- def as_json(*)
- {
- JSON.create_id => self.class.name,
- 'y' => year,
- 'm' => month,
- 'd' => day,
- 'H' => hour,
- 'M' => min,
- 'S' => sec,
- 'of' => offset.to_s,
- 'sg' => start,
- }
- end
-
- # Stores class name (DateTime) with Julian year <tt>y</tt>, month <tt>m</tt>,
- # day <tt>d</tt>, hour <tt>H</tt>, minute <tt>M</tt>, second <tt>S</tt>,
- # offset <tt>of</tt> and Day of Calendar Reform <tt>sg</tt> as JSON string
- def to_json(*args)
- as_json.to_json(*args)
- end
-end
-
-
diff --git a/ext/json/lib/json/add/exception.rb b/ext/json/lib/json/add/exception.rb
deleted file mode 100644
index e6ad257abf..0000000000
--- a/ext/json/lib/json/add/exception.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
- require 'json'
-end
-
-# Exception serialization/deserialization
-class Exception
-
- # Deserializes JSON string by constructing new Exception object with message
- # <tt>m</tt> and backtrace <tt>b</tt> serialized with <tt>to_json</tt>
- def self.json_create(object)
- result = new(object['m'])
- result.set_backtrace object['b']
- result
- end
-
- # Returns a hash, that will be turned into a JSON object and represent this
- # object.
- def as_json(*)
- {
- JSON.create_id => self.class.name,
- 'm' => message,
- 'b' => backtrace,
- }
- end
-
- # Stores class name (Exception) with message <tt>m</tt> and backtrace array
- # <tt>b</tt> as JSON string
- def to_json(*args)
- as_json.to_json(*args)
- end
-end
diff --git a/ext/json/lib/json/add/ostruct.rb b/ext/json/lib/json/add/ostruct.rb
deleted file mode 100644
index da81e107a7..0000000000
--- a/ext/json/lib/json/add/ostruct.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
- require 'json'
-end
-require 'ostruct'
-
-# OpenStruct serialization/deserialization
-class OpenStruct
-
- # Deserializes JSON string by constructing new Struct object with values
- # <tt>v</tt> serialized by <tt>to_json</tt>.
- def self.json_create(object)
- new(object['t'] || object[:t])
- end
-
- # Returns a hash, that will be turned into a JSON object and represent this
- # object.
- def as_json(*)
- klass = self.class.name
- klass.to_s.empty? and raise JSON::JSONError, "Only named structs are supported!"
- {
- JSON.create_id => klass,
- 't' => table,
- }
- end
-
- # Stores class name (OpenStruct) with this struct's values <tt>v</tt> as a
- # JSON string.
- def to_json(*args)
- as_json.to_json(*args)
- end
-end
diff --git a/ext/json/lib/json/add/range.rb b/ext/json/lib/json/add/range.rb
deleted file mode 100644
index e61e553cdb..0000000000
--- a/ext/json/lib/json/add/range.rb
+++ /dev/null
@@ -1,29 +0,0 @@
-unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
- require 'json'
-end
-
-# Range serialization/deserialization
-class Range
-
- # Deserializes JSON string by constructing new Range object with arguments
- # <tt>a</tt> serialized by <tt>to_json</tt>.
- def self.json_create(object)
- new(*object['a'])
- end
-
- # Returns a hash, that will be turned into a JSON object and represent this
- # object.
- def as_json(*)
- {
- JSON.create_id => self.class.name,
- 'a' => [ first, last, exclude_end? ]
- }
- end
-
- # Stores class name (Range) with JSON array of arguments <tt>a</tt> which
- # include <tt>first</tt> (integer), <tt>last</tt> (integer), and
- # <tt>exclude_end?</tt> (boolean) as JSON string.
- def to_json(*args)
- as_json.to_json(*args)
- end
-end
diff --git a/ext/json/lib/json/add/regexp.rb b/ext/json/lib/json/add/regexp.rb
deleted file mode 100644
index 2fcbb6fb14..0000000000
--- a/ext/json/lib/json/add/regexp.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
- require 'json'
-end
-
-# Regexp serialization/deserialization
-class Regexp
-
- # Deserializes JSON string by constructing new Regexp object with source
- # <tt>s</tt> (Regexp or String) and options <tt>o</tt> serialized by
- # <tt>to_json</tt>
- def self.json_create(object)
- new(object['s'], object['o'])
- end
-
- # Returns a hash, that will be turned into a JSON object and represent this
- # object.
- def as_json(*)
- {
- JSON.create_id => self.class.name,
- 'o' => options,
- 's' => source,
- }
- end
-
- # Stores class name (Regexp) with options <tt>o</tt> and source <tt>s</tt>
- # (Regexp or String) as JSON string
- def to_json(*)
- as_json.to_json
- end
-end
diff --git a/ext/json/lib/json/add/struct.rb b/ext/json/lib/json/add/struct.rb
deleted file mode 100644
index 6847cde99b..0000000000
--- a/ext/json/lib/json/add/struct.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
- require 'json'
-end
-
-# Struct serialization/deserialization
-class Struct
-
- # Deserializes JSON string by constructing new Struct object with values
- # <tt>v</tt> serialized by <tt>to_json</tt>.
- def self.json_create(object)
- new(*object['v'])
- end
-
- # Returns a hash, that will be turned into a JSON object and represent this
- # object.
- def as_json(*)
- klass = self.class.name
- klass.to_s.empty? and raise JSON::JSONError, "Only named structs are supported!"
- {
- JSON.create_id => klass,
- 'v' => values,
- }
- end
-
- # Stores class name (Struct) with Struct values <tt>v</tt> as a JSON string.
- # Only named structs are supported.
- def to_json(*args)
- as_json.to_json(*args)
- end
-end
diff --git a/ext/json/lib/json/add/symbol.rb b/ext/json/lib/json/add/symbol.rb
deleted file mode 100644
index 03dc9a56a5..0000000000
--- a/ext/json/lib/json/add/symbol.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
- require 'json'
-end
-
-# Symbol serialization/deserialization
-class Symbol
- # Returns a hash, that will be turned into a JSON object and represent this
- # object.
- def as_json(*)
- {
- JSON.create_id => self.class.name,
- 's' => to_s,
- }
- end
-
- # Stores class name (Symbol) with String representation of Symbol as a JSON string.
- def to_json(*a)
- as_json.to_json(*a)
- end
-
- # Deserializes JSON string by converting the <tt>string</tt> value stored in the object to a Symbol
- def self.json_create(o)
- o['s'].to_sym
- end
-end
diff --git a/ext/json/lib/json/add/time.rb b/ext/json/lib/json/add/time.rb
deleted file mode 100644
index 338209d899..0000000000
--- a/ext/json/lib/json/add/time.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
- require 'json'
-end
-
-# Time serialization/deserialization
-class Time
-
- # Deserializes JSON string by converting time since epoch to Time
- def self.json_create(object)
- if usec = object.delete('u') # used to be tv_usec -> tv_nsec
- object['n'] = usec * 1000
- end
- if instance_methods.include?(:tv_nsec)
- at(object['s'], Rational(object['n'], 1000))
- else
- at(object['s'], object['n'] / 1000)
- end
- end
-
- # Returns a hash, that will be turned into a JSON object and represent this
- # object.
- def as_json(*)
- nanoseconds = [ tv_usec * 1000 ]
- respond_to?(:tv_nsec) and nanoseconds << tv_nsec
- nanoseconds = nanoseconds.max
- {
- JSON.create_id => self.class.name,
- 's' => tv_sec,
- 'n' => nanoseconds,
- }
- end
-
- # Stores class name (Time) with number of seconds since epoch and number of
- # microseconds for Time as JSON string
- def to_json(*args)
- as_json.to_json(*args)
- end
-end
diff --git a/ext/json/lib/json/common.rb b/ext/json/lib/json/common.rb
index a547679962..43e249c954 100644
--- a/ext/json/lib/json/common.rb
+++ b/ext/json/lib/json/common.rb
@@ -1,5 +1,4 @@
require 'json/version'
-require 'json/generic_object'
module JSON
class << self
@@ -103,13 +102,7 @@ module JSON
MinusInfinity = -Infinity
# The base exception for JSON errors.
- class JSONError < StandardError
- def self.wrap(exception)
- obj = new("Wrapped(#{exception.class}): #{exception.message.inspect}")
- obj.set_backtrace exception.backtrace
- obj
- end
- end
+ class JSONError < StandardError; end
# This exception is raised if a parser error occurs.
class ParserError < JSONError; end
@@ -139,7 +132,7 @@ module JSON
# keys:
# * *max_nesting*: The maximum depth of nesting allowed in the parsed data
# structures. Disable depth checking with :max_nesting => false. It defaults
- # to 100.
+ # to 19.
# * *allow_nan*: If set to true, allow NaN, Infinity and -Infinity in
# defiance of RFC 4627 to be parsed by the Parser. This option defaults
# to false.
@@ -179,10 +172,9 @@ module JSON
end
# Generate a JSON document from the Ruby data structure _obj_ and return
- # it. _state_ is
- # * a JSON::State object,
+ # it. _state_ is * a JSON::State object,
# * or a Hash like object (responding to to_hash),
- # * or an object convertible into a hash by a to_h method,
+ # * an object convertible into a hash by a to_h method,
# that is used as or to configure a State object.
#
# It defaults to a state object, that creates the shortest possible JSON text
@@ -200,7 +192,7 @@ module JSON
# encountered. This options defaults to false.
# * *max_nesting*: The maximum depth of nesting allowed in the data
# structures from which JSON is to be generated. Disable depth checking
- # with :max_nesting => false, it defaults to 100.
+ # with :max_nesting => false, it defaults to 19.
#
# See also the fast_generate for the fastest creation method with the least
# amount of sanity checks, and the pretty_generate method for some
@@ -292,47 +284,22 @@ module JSON
module_function :pretty_unparse
# :startdoc:
- class << self
- # The global default options for the JSON.load method:
- # :max_nesting: false
- # :allow_nan: true
- # :quirks_mode: true
- attr_accessor :load_default_options
- end
- self.load_default_options = {
- :max_nesting => false,
- :allow_nan => true,
- :quirks_mode => true,
- :create_additions => true,
- }
-
# Load a ruby data structure from a JSON _source_ and return it. A source can
# either be a string-like object, an IO-like object, or an object responding
# to the read method. If _proc_ was given, it will be called with any nested
- # Ruby object as an argument recursively in depth first order. To modify the
- # default options pass in the optional _options_ argument as well.
- #
- # BEWARE: This method is meant to serialise data from trusted user input,
- # like from your own database server or clients under your control, it could
- # be dangerous to allow untrusted users to pass JSON sources into it. The
- # default options for the parser can be changed via the load_default_options
- # method.
+ # Ruby object as an argument recursively in depth first order.
#
# This method is part of the implementation of the load/dump interface of
# Marshal and YAML.
- def load(source, proc = nil, options = {})
- opts = load_default_options.merge options
+ def load(source, proc = nil)
if source.respond_to? :to_str
source = source.to_str
elsif source.respond_to? :to_io
source = source.to_io.read
- elsif source.respond_to?(:read)
+ else
source = source.read
end
- if opts[:quirks_mode] && (source.nil? || source.empty?)
- source = 'null'
- end
- result = parse(source, opts)
+ result = parse(source, :max_nesting => false, :allow_nan => true)
recurse_proc(result, &proc) if proc
result
end
@@ -354,19 +321,6 @@ module JSON
alias restore load
module_function :restore
- class << self
- # The global default options for the JSON.dump method:
- # :max_nesting: false
- # :allow_nan: true
- # :quirks_mode: true
- attr_accessor :dump_default_options
- end
- self.dump_default_options = {
- :max_nesting => false,
- :allow_nan => true,
- :quirks_mode => true,
- }
-
# Dumps _obj_ as a JSON string, i.e. calls generate on the object and returns
# the result.
#
@@ -377,9 +331,6 @@ module JSON
# exception is raised. This argument is similar (but not exactly the
# same!) to the _limit_ argument in Marshal.dump.
#
- # The default options for the generator can be changed via the
- # dump_default_options method.
- #
# This method is part of the implementation of the load/dump interface of
# Marshal and YAML.
def dump(obj, anIO = nil, limit = nil)
@@ -390,9 +341,8 @@ module JSON
anIO = nil
end
end
- opts = JSON.dump_default_options
- limit and opts.update(:max_nesting => limit)
- result = generate(obj, opts)
+ limit ||= 0
+ result = generate(obj, :allow_nan => true, :max_nesting => limit)
if anIO
anIO.write result
anIO
@@ -413,10 +363,7 @@ module JSON
end
# Shortuct for iconv.
- if ::String.method_defined?(:encode) &&
- # XXX Rubinius doesn't support ruby 1.9 encoding yet
- defined?(RUBY_ENGINE) && RUBY_ENGINE != 'rbx'
- then
+ if ::String.method_defined?(:encode)
# Encodes string using Ruby's _String.encode_
def self.iconv(to, from, string)
string.encode(to, from)
diff --git a/ext/json/lib/json/ext.rb b/ext/json/lib/json/ext.rb
index c5f813181d..7264a857fa 100644
--- a/ext/json/lib/json/ext.rb
+++ b/ext/json/lib/json/ext.rb
@@ -1,9 +1,3 @@
-if ENV['SIMPLECOV_COVERAGE'].to_i == 1
- require 'simplecov'
- SimpleCov.start do
- add_filter "/tests/"
- end
-end
require 'json/common'
module JSON
diff --git a/ext/json/lib/json/generic_object.rb b/ext/json/lib/json/generic_object.rb
deleted file mode 100644
index 8b1074c941..0000000000
--- a/ext/json/lib/json/generic_object.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-require 'ostruct'
-
-module JSON
- class GenericObject < OpenStruct
- class << self
- alias [] new
-
- def json_creatable?
- @json_creatable
- end
-
- attr_writer :json_creatable
-
- def json_create(data)
- data = data.dup
- data.delete JSON.create_id
- self[data]
- end
-
- def from_hash(object)
- case
- when object.respond_to?(:to_hash)
- result = new
- object.to_hash.each do |key, value|
- result[key] = from_hash(value)
- end
- result
- when object.respond_to?(:to_ary)
- object.to_ary.map { |a| from_hash(a) }
- else
- object
- end
- end
- end
- self.json_creatable = false
-
- def to_hash
- table
- end
-
- def [](name)
- table[name.to_sym]
- end
-
- def []=(name, value)
- __send__ "#{name}=", value
- end
-
- def |(other)
- self.class[other.to_hash.merge(to_hash)]
- end
-
- def as_json(*)
- { JSON.create_id => self.class.name }.merge to_hash
- end
-
- def to_json(*a)
- as_json.to_json(*a)
- end
- end
-end
diff --git a/ext/json/lib/json/version.rb b/ext/json/lib/json/version.rb
index 1de3d696f2..2175ac0f90 100644
--- a/ext/json/lib/json/version.rb
+++ b/ext/json/lib/json/version.rb
@@ -1,6 +1,6 @@
module JSON
# JSON version
- VERSION = '1.7.7'
+ VERSION = '1.5.4'
VERSION_ARRAY = VERSION.split(/\./).map { |x| x.to_i } # :nodoc:
VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
diff --git a/ext/json/parser/depend b/ext/json/parser/depend
index d188844670..5eaf6dd040 100644
--- a/ext/json/parser/depend
+++ b/ext/json/parser/depend
@@ -1,2 +1 @@
-$(OBJS): $(ruby_headers)
-parser.o: parser.c parser.h $(srcdir)/../fbuffer/fbuffer.h
+parser.o: parser.c parser.h
diff --git a/ext/json/parser/extconf.rb b/ext/json/parser/extconf.rb
index ae4f861c79..4a10dd2ed6 100644
--- a/ext/json/parser/extconf.rb
+++ b/ext/json/parser/extconf.rb
@@ -1,3 +1,10 @@
require 'mkmf'
+require 'rbconfig'
+if RUBY_VERSION < "1.9"
+ have_header("re.h")
+else
+ have_header("ruby/re.h")
+ have_header("ruby/encoding.h")
+end
create_makefile 'json/ext/parser'
diff --git a/ext/json/parser/parser.c b/ext/json/parser/parser.c
index df89f2c58b..c0ec9ec2b0 100644
--- a/ext/json/parser/parser.c
+++ b/ext/json/parser/parser.c
@@ -1,6 +1,5 @@
#line 1 "parser.rl"
-#include "../fbuffer/fbuffer.h"
#include "parser.h"
/* unicode */
@@ -84,11 +83,11 @@ static ID i_json_creatable_p, i_json_create, i_create_id, i_create_additions,
i_match_string, i_aset, i_aref, i_leftshift;
-#line 110 "parser.rl"
+#line 109 "parser.rl"
-#line 92 "parser.c"
+#line 91 "parser.c"
static const int JSON_object_start = 1;
static const int JSON_object_first_final = 27;
static const int JSON_object_error = 0;
@@ -96,7 +95,7 @@ static const int JSON_object_error = 0;
static const int JSON_object_en_main = 1;
-#line 151 "parser.rl"
+#line 150 "parser.rl"
static char *JSON_parse_object(JSON_Parser *json, char *p, char *pe, VALUE *result)
@@ -112,14 +111,14 @@ static char *JSON_parse_object(JSON_Parser *json, char *p, char *pe, VALUE *resu
*result = NIL_P(object_class) ? rb_hash_new() : rb_class_new_instance(0, 0, object_class);
-#line 116 "parser.c"
+#line 115 "parser.c"
{
cs = JSON_object_start;
}
-#line 166 "parser.rl"
+#line 165 "parser.rl"
-#line 123 "parser.c"
+#line 122 "parser.c"
{
if ( p == pe )
goto _test_eof;
@@ -147,7 +146,7 @@ case 2:
goto st2;
goto st0;
tr2:
-#line 133 "parser.rl"
+#line 132 "parser.rl"
{
char *np;
json->parsing_name = 1;
@@ -160,7 +159,7 @@ st3:
if ( ++p == pe )
goto _test_eof3;
case 3:
-#line 164 "parser.c"
+#line 163 "parser.c"
switch( (*p) ) {
case 13: goto st3;
case 32: goto st3;
@@ -227,7 +226,7 @@ case 8:
goto st8;
goto st0;
tr11:
-#line 118 "parser.rl"
+#line 117 "parser.rl"
{
VALUE v = Qnil;
char *np = JSON_parse_value(json, p, pe, &v);
@@ -247,7 +246,7 @@ st9:
if ( ++p == pe )
goto _test_eof9;
case 9:
-#line 251 "parser.c"
+#line 250 "parser.c"
switch( (*p) ) {
case 13: goto st9;
case 32: goto st9;
@@ -336,14 +335,14 @@ case 18:
goto st9;
goto st18;
tr4:
-#line 141 "parser.rl"
+#line 140 "parser.rl"
{ p--; {p++; cs = 27; goto _out;} }
goto st27;
st27:
if ( ++p == pe )
goto _test_eof27;
case 27:
-#line 347 "parser.c"
+#line 346 "parser.c"
goto st0;
st19:
if ( ++p == pe )
@@ -441,16 +440,16 @@ case 26:
_out: {}
}
-#line 167 "parser.rl"
+#line 166 "parser.rl"
if (cs >= JSON_object_first_final) {
if (json->create_additions) {
- VALUE klassname;
+ VALUE klassname;
if (NIL_P(json->object_class)) {
- klassname = rb_hash_aref(*result, json->create_id);
- } else {
- klassname = rb_funcall(*result, i_aref, 1, json->create_id);
- }
+ klassname = rb_hash_aref(*result, json->create_id);
+ } else {
+ klassname = rb_funcall(*result, i_aref, 1, json->create_id);
+ }
if (!NIL_P(klassname)) {
VALUE klass = rb_funcall(mJSON, i_deep_const_get, 1, klassname);
if (RTEST(rb_funcall(klass, i_json_creatable_p, 0))) {
@@ -466,7 +465,7 @@ case 26:
-#line 470 "parser.c"
+#line 464 "parser.c"
static const int JSON_value_start = 1;
static const int JSON_value_first_final = 21;
static const int JSON_value_error = 0;
@@ -474,7 +473,7 @@ static const int JSON_value_error = 0;
static const int JSON_value_en_main = 1;
-#line 271 "parser.rl"
+#line 265 "parser.rl"
static char *JSON_parse_value(JSON_Parser *json, char *p, char *pe, VALUE *result)
@@ -482,14 +481,14 @@ static char *JSON_parse_value(JSON_Parser *json, char *p, char *pe, VALUE *resul
int cs = EVIL;
-#line 486 "parser.c"
+#line 480 "parser.c"
{
cs = JSON_value_start;
}
-#line 278 "parser.rl"
+#line 272 "parser.rl"
-#line 493 "parser.c"
+#line 487 "parser.c"
{
if ( p == pe )
goto _test_eof;
@@ -514,14 +513,14 @@ st0:
cs = 0;
goto _out;
tr0:
-#line 219 "parser.rl"
+#line 213 "parser.rl"
{
char *np = JSON_parse_string(json, p, pe, result);
if (np == NULL) { p--; {p++; cs = 21; goto _out;} } else {p = (( np))-1;}
}
goto st21;
tr2:
-#line 224 "parser.rl"
+#line 218 "parser.rl"
{
char *np;
if(pe > p + 9 - json->quirks_mode && !strncmp(MinusInfinity, p, 9)) {
@@ -541,7 +540,7 @@ tr2:
}
goto st21;
tr5:
-#line 242 "parser.rl"
+#line 236 "parser.rl"
{
char *np;
json->current_nesting++;
@@ -551,7 +550,7 @@ tr5:
}
goto st21;
tr9:
-#line 250 "parser.rl"
+#line 244 "parser.rl"
{
char *np;
json->current_nesting++;
@@ -561,7 +560,7 @@ tr9:
}
goto st21;
tr16:
-#line 212 "parser.rl"
+#line 206 "parser.rl"
{
if (json->allow_nan) {
*result = CInfinity;
@@ -571,7 +570,7 @@ tr16:
}
goto st21;
tr18:
-#line 205 "parser.rl"
+#line 199 "parser.rl"
{
if (json->allow_nan) {
*result = CNaN;
@@ -581,19 +580,19 @@ tr18:
}
goto st21;
tr22:
-#line 199 "parser.rl"
+#line 193 "parser.rl"
{
*result = Qfalse;
}
goto st21;
tr25:
-#line 196 "parser.rl"
+#line 190 "parser.rl"
{
*result = Qnil;
}
goto st21;
tr28:
-#line 202 "parser.rl"
+#line 196 "parser.rl"
{
*result = Qtrue;
}
@@ -602,9 +601,9 @@ st21:
if ( ++p == pe )
goto _test_eof21;
case 21:
-#line 258 "parser.rl"
+#line 252 "parser.rl"
{ p--; {p++; cs = 21; goto _out;} }
-#line 608 "parser.c"
+#line 602 "parser.c"
goto st0;
st2:
if ( ++p == pe )
@@ -765,7 +764,7 @@ case 20:
_out: {}
}
-#line 279 "parser.rl"
+#line 273 "parser.rl"
if (cs >= JSON_value_first_final) {
return p;
@@ -775,7 +774,7 @@ case 20:
}
-#line 779 "parser.c"
+#line 773 "parser.c"
static const int JSON_integer_start = 1;
static const int JSON_integer_first_final = 3;
static const int JSON_integer_error = 0;
@@ -783,7 +782,7 @@ static const int JSON_integer_error = 0;
static const int JSON_integer_en_main = 1;
-#line 295 "parser.rl"
+#line 289 "parser.rl"
static char *JSON_parse_integer(JSON_Parser *json, char *p, char *pe, VALUE *result)
@@ -791,15 +790,15 @@ static char *JSON_parse_integer(JSON_Parser *json, char *p, char *pe, VALUE *res
int cs = EVIL;
-#line 795 "parser.c"
+#line 789 "parser.c"
{
cs = JSON_integer_start;
}
-#line 302 "parser.rl"
+#line 296 "parser.rl"
json->memo = p;
-#line 803 "parser.c"
+#line 797 "parser.c"
{
if ( p == pe )
goto _test_eof;
@@ -833,14 +832,14 @@ case 3:
goto st0;
goto tr4;
tr4:
-#line 292 "parser.rl"
+#line 286 "parser.rl"
{ p--; {p++; cs = 4; goto _out;} }
goto st4;
st4:
if ( ++p == pe )
goto _test_eof4;
case 4:
-#line 844 "parser.c"
+#line 838 "parser.c"
goto st0;
st5:
if ( ++p == pe )
@@ -859,14 +858,11 @@ case 5:
_out: {}
}
-#line 304 "parser.rl"
+#line 298 "parser.rl"
if (cs >= JSON_integer_first_final) {
long len = p - json->memo;
- fbuffer_clear(json->fbuffer);
- fbuffer_append(json->fbuffer, json->memo, len);
- fbuffer_append_char(json->fbuffer, '\0');
- *result = rb_cstr2inum(FBUFFER_PTR(json->fbuffer), 10);
+ *result = rb_Integer(rb_str_new(json->memo, len));
return p + 1;
} else {
return NULL;
@@ -874,7 +870,7 @@ case 5:
}
-#line 878 "parser.c"
+#line 869 "parser.c"
static const int JSON_float_start = 1;
static const int JSON_float_first_final = 8;
static const int JSON_float_error = 0;
@@ -882,7 +878,7 @@ static const int JSON_float_error = 0;
static const int JSON_float_en_main = 1;
-#line 329 "parser.rl"
+#line 320 "parser.rl"
static char *JSON_parse_float(JSON_Parser *json, char *p, char *pe, VALUE *result)
@@ -890,15 +886,15 @@ static char *JSON_parse_float(JSON_Parser *json, char *p, char *pe, VALUE *resul
int cs = EVIL;
-#line 894 "parser.c"
+#line 885 "parser.c"
{
cs = JSON_float_start;
}
-#line 336 "parser.rl"
+#line 327 "parser.rl"
json->memo = p;
-#line 902 "parser.c"
+#line 893 "parser.c"
{
if ( p == pe )
goto _test_eof;
@@ -956,14 +952,14 @@ case 8:
goto st0;
goto tr9;
tr9:
-#line 323 "parser.rl"
+#line 314 "parser.rl"
{ p--; {p++; cs = 9; goto _out;} }
goto st9;
st9:
if ( ++p == pe )
goto _test_eof9;
case 9:
-#line 967 "parser.c"
+#line 958 "parser.c"
goto st0;
st5:
if ( ++p == pe )
@@ -1024,14 +1020,11 @@ case 7:
_out: {}
}
-#line 338 "parser.rl"
+#line 329 "parser.rl"
if (cs >= JSON_float_first_final) {
long len = p - json->memo;
- fbuffer_clear(json->fbuffer);
- fbuffer_append(json->fbuffer, json->memo, len);
- fbuffer_append_char(json->fbuffer, '\0');
- *result = rb_float_new(rb_cstr_to_dbl(FBUFFER_PTR(json->fbuffer), 1));
+ *result = rb_Float(rb_str_new(json->memo, len));
return p + 1;
} else {
return NULL;
@@ -1040,7 +1033,7 @@ case 7:
-#line 1044 "parser.c"
+#line 1032 "parser.c"
static const int JSON_array_start = 1;
static const int JSON_array_first_final = 17;
static const int JSON_array_error = 0;
@@ -1048,7 +1041,7 @@ static const int JSON_array_error = 0;
static const int JSON_array_en_main = 1;
-#line 381 "parser.rl"
+#line 369 "parser.rl"
static char *JSON_parse_array(JSON_Parser *json, char *p, char *pe, VALUE *result)
@@ -1062,14 +1055,14 @@ static char *JSON_parse_array(JSON_Parser *json, char *p, char *pe, VALUE *resul
*result = NIL_P(array_class) ? rb_ary_new() : rb_class_new_instance(0, 0, array_class);
-#line 1066 "parser.c"
+#line 1054 "parser.c"
{
cs = JSON_array_start;
}
-#line 394 "parser.rl"
+#line 382 "parser.rl"
-#line 1073 "parser.c"
+#line 1061 "parser.c"
{
if ( p == pe )
goto _test_eof;
@@ -1108,7 +1101,7 @@ case 2:
goto st2;
goto st0;
tr2:
-#line 358 "parser.rl"
+#line 346 "parser.rl"
{
VALUE v = Qnil;
char *np = JSON_parse_value(json, p, pe, &v);
@@ -1128,7 +1121,7 @@ st3:
if ( ++p == pe )
goto _test_eof3;
case 3:
-#line 1132 "parser.c"
+#line 1120 "parser.c"
switch( (*p) ) {
case 13: goto st3;
case 32: goto st3;
@@ -1228,14 +1221,14 @@ case 12:
goto st3;
goto st12;
tr4:
-#line 373 "parser.rl"
+#line 361 "parser.rl"
{ p--; {p++; cs = 17; goto _out;} }
goto st17;
st17:
if ( ++p == pe )
goto _test_eof17;
case 17:
-#line 1239 "parser.c"
+#line 1227 "parser.c"
goto st0;
st13:
if ( ++p == pe )
@@ -1291,7 +1284,7 @@ case 16:
_out: {}
}
-#line 395 "parser.rl"
+#line 383 "parser.rl"
if(cs >= JSON_array_first_final) {
return p + 1;
@@ -1372,7 +1365,7 @@ static VALUE json_string_unescape(VALUE result, char *string, char *stringEnd)
}
-#line 1376 "parser.c"
+#line 1364 "parser.c"
static const int JSON_string_start = 1;
static const int JSON_string_first_final = 8;
static const int JSON_string_error = 0;
@@ -1380,7 +1373,7 @@ static const int JSON_string_error = 0;
static const int JSON_string_en_main = 1;
-#line 494 "parser.rl"
+#line 482 "parser.rl"
static int
@@ -1402,15 +1395,15 @@ static char *JSON_parse_string(JSON_Parser *json, char *p, char *pe, VALUE *resu
*result = rb_str_buf_new(0);
-#line 1406 "parser.c"
+#line 1394 "parser.c"
{
cs = JSON_string_start;
}
-#line 515 "parser.rl"
+#line 503 "parser.rl"
json->memo = p;
-#line 1414 "parser.c"
+#line 1402 "parser.c"
{
if ( p == pe )
goto _test_eof;
@@ -1435,7 +1428,7 @@ case 2:
goto st0;
goto st2;
tr2:
-#line 480 "parser.rl"
+#line 468 "parser.rl"
{
*result = json_string_unescape(*result, json->memo + 1, p);
if (NIL_P(*result)) {
@@ -1446,14 +1439,14 @@ tr2:
{p = (( p + 1))-1;}
}
}
-#line 491 "parser.rl"
+#line 479 "parser.rl"
{ p--; {p++; cs = 8; goto _out;} }
goto st8;
st8:
if ( ++p == pe )
goto _test_eof8;
case 8:
-#line 1457 "parser.c"
+#line 1445 "parser.c"
goto st0;
st3:
if ( ++p == pe )
@@ -1529,7 +1522,7 @@ case 7:
_out: {}
}
-#line 517 "parser.rl"
+#line 505 "parser.rl"
if (json->create_additions && RTEST(match_string = json->match_string)) {
VALUE klass;
@@ -1618,7 +1611,7 @@ static VALUE convert_encoding(VALUE source)
* _opts_ can have the following keys:
* * *max_nesting*: The maximum depth of nesting allowed in the parsed data
* structures. Disable depth checking with :max_nesting => false|nil|0, it
- * defaults to 100.
+ * defaults to 19.
* * *allow_nan*: If set to true, allow NaN, Infinity and -Infinity in
* defiance of RFC 4627 to be parsed by the Parser. This option defaults to
* false.
@@ -1630,6 +1623,9 @@ static VALUE convert_encoding(VALUE source)
* defaults to true.
* * *object_class*: Defaults to Hash
* * *array_class*: Defaults to Array
+ * * *quirks_mode*: Enables quirks_mode for parser, that is for example
+ * parsing single JSON values instead of documents is possible.
+ *
*/
static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self)
{
@@ -1655,7 +1651,7 @@ static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self)
json->max_nesting = 0;
}
} else {
- json->max_nesting = 100;
+ json->max_nesting = 19;
}
tmp = ID2SYM(i_allow_nan);
if (option_given_p(opts, tmp)) {
@@ -1680,7 +1676,7 @@ static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self)
if (option_given_p(opts, tmp)) {
json->create_additions = RTEST(rb_hash_aref(opts, tmp));
} else {
- json->create_additions = 0;
+ json->create_additions = 1;
}
tmp = ID2SYM(i_create_id);
if (option_given_p(opts, tmp)) {
@@ -1709,19 +1705,17 @@ static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self)
}
}
} else {
- json->max_nesting = 100;
+ json->max_nesting = 19;
json->allow_nan = 0;
json->create_additions = 1;
json->create_id = rb_funcall(mJSON, i_create_id, 0);
json->object_class = Qnil;
json->array_class = Qnil;
}
- source = rb_convert_type(source, T_STRING, "String", "to_str");
if (!json->quirks_mode) {
source = convert_encoding(StringValue(source));
}
json->current_nesting = 0;
- StringValue(source);
json->len = RSTRING_LEN(source);
json->source = RSTRING_PTR(source);;
json->Vsource = source;
@@ -1729,7 +1723,7 @@ static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self)
}
-#line 1733 "parser.c"
+#line 1719 "parser.c"
static const int JSON_start = 1;
static const int JSON_first_final = 10;
static const int JSON_error = 0;
@@ -1737,7 +1731,7 @@ static const int JSON_error = 0;
static const int JSON_en_main = 1;
-#line 740 "parser.rl"
+#line 726 "parser.rl"
static VALUE cParser_parse_strict(VALUE self)
@@ -1748,16 +1742,16 @@ static VALUE cParser_parse_strict(VALUE self)
GET_PARSER;
-#line 1752 "parser.c"
+#line 1738 "parser.c"
{
cs = JSON_start;
}
-#line 750 "parser.rl"
+#line 736 "parser.rl"
p = json->source;
pe = p + json->len;
-#line 1761 "parser.c"
+#line 1747 "parser.c"
{
if ( p == pe )
goto _test_eof;
@@ -1813,7 +1807,7 @@ case 5:
goto st1;
goto st5;
tr3:
-#line 729 "parser.rl"
+#line 715 "parser.rl"
{
char *np;
json->current_nesting = 1;
@@ -1822,7 +1816,7 @@ tr3:
}
goto st10;
tr4:
-#line 722 "parser.rl"
+#line 708 "parser.rl"
{
char *np;
json->current_nesting = 1;
@@ -1834,7 +1828,7 @@ st10:
if ( ++p == pe )
goto _test_eof10;
case 10:
-#line 1838 "parser.c"
+#line 1824 "parser.c"
switch( (*p) ) {
case 13: goto st10;
case 32: goto st10;
@@ -1891,7 +1885,7 @@ case 9:
_out: {}
}
-#line 753 "parser.rl"
+#line 739 "parser.rl"
if (cs >= JSON_first_final && p == pe) {
return result;
@@ -1903,7 +1897,7 @@ case 9:
-#line 1907 "parser.c"
+#line 1893 "parser.c"
static const int JSON_quirks_mode_start = 1;
static const int JSON_quirks_mode_first_final = 10;
static const int JSON_quirks_mode_error = 0;
@@ -1911,7 +1905,7 @@ static const int JSON_quirks_mode_error = 0;
static const int JSON_quirks_mode_en_main = 1;
-#line 778 "parser.rl"
+#line 764 "parser.rl"
static VALUE cParser_parse_quirks_mode(VALUE self)
@@ -1922,16 +1916,16 @@ static VALUE cParser_parse_quirks_mode(VALUE self)
GET_PARSER;
-#line 1926 "parser.c"
+#line 1912 "parser.c"
{
cs = JSON_quirks_mode_start;
}
-#line 788 "parser.rl"
+#line 774 "parser.rl"
p = json->source;
pe = p + json->len;
-#line 1935 "parser.c"
+#line 1921 "parser.c"
{
if ( p == pe )
goto _test_eof;
@@ -1965,7 +1959,7 @@ st0:
cs = 0;
goto _out;
tr2:
-#line 770 "parser.rl"
+#line 756 "parser.rl"
{
char *np = JSON_parse_value(json, p, pe, &result);
if (np == NULL) { p--; {p++; cs = 10; goto _out;} } else {p = (( np))-1;}
@@ -1975,7 +1969,7 @@ st10:
if ( ++p == pe )
goto _test_eof10;
case 10:
-#line 1979 "parser.c"
+#line 1965 "parser.c"
switch( (*p) ) {
case 13: goto st10;
case 32: goto st10;
@@ -2064,7 +2058,7 @@ case 9:
_out: {}
}
-#line 791 "parser.rl"
+#line 777 "parser.rl"
if (cs >= JSON_quirks_mode_first_final && p == pe) {
return result;
@@ -2096,7 +2090,6 @@ static JSON_Parser *JSON_allocate()
{
JSON_Parser *json = ALLOC(JSON_Parser);
MEMZERO(json, JSON_Parser, 1);
- json->fbuffer = fbuffer_alloc(0);
return json;
}
@@ -2111,7 +2104,6 @@ static void JSON_mark(JSON_Parser *json)
static void JSON_free(JSON_Parser *json)
{
- fbuffer_free(json->fbuffer);
ruby_xfree(json);
}
diff --git a/ext/json/parser/parser.h b/ext/json/parser/parser.h
index b192064c09..fc73810dd6 100644
--- a/ext/json/parser/parser.h
+++ b/ext/json/parser/parser.h
@@ -3,10 +3,16 @@
#include "ruby.h"
-#ifndef HAVE_RUBY_RE_H
+#if HAVE_RE_H
#include "re.h"
#endif
+#ifdef HAVE_RUBY_ENCODING_H
+#include "ruby/encoding.h"
+#define FORCE_UTF8(obj) ((obj) = rb_enc_associate(rb_str_dup(obj), rb_utf8_encoding()))
+#else
+#define FORCE_UTF8(obj)
+#endif
#ifdef HAVE_RUBY_ST_H
#include "ruby/st.h"
#else
@@ -43,7 +49,6 @@ typedef struct JSON_ParserStruct {
VALUE array_class;
int create_additions;
VALUE match_string;
- FBuffer *fbuffer;
} JSON_Parser;
#define GET_PARSER \
diff --git a/ext/json/parser/parser.rl b/ext/json/parser/parser.rl
index ab8d318173..dcb5d2db6f 100644
--- a/ext/json/parser/parser.rl
+++ b/ext/json/parser/parser.rl
@@ -1,4 +1,3 @@
-#include "../fbuffer/fbuffer.h"
#include "parser.h"
/* unicode */
@@ -167,12 +166,12 @@ static char *JSON_parse_object(JSON_Parser *json, char *p, char *pe, VALUE *resu
if (cs >= JSON_object_first_final) {
if (json->create_additions) {
- VALUE klassname;
+ VALUE klassname;
if (NIL_P(json->object_class)) {
- klassname = rb_hash_aref(*result, json->create_id);
- } else {
- klassname = rb_funcall(*result, i_aref, 1, json->create_id);
- }
+ klassname = rb_hash_aref(*result, json->create_id);
+ } else {
+ klassname = rb_funcall(*result, i_aref, 1, json->create_id);
+ }
if (!NIL_P(klassname)) {
VALUE klass = rb_funcall(mJSON, i_deep_const_get, 1, klassname);
if (RTEST(rb_funcall(klass, i_json_creatable_p, 0))) {
@@ -304,10 +303,7 @@ static char *JSON_parse_integer(JSON_Parser *json, char *p, char *pe, VALUE *res
if (cs >= JSON_integer_first_final) {
long len = p - json->memo;
- fbuffer_clear(json->fbuffer);
- fbuffer_append(json->fbuffer, json->memo, len);
- fbuffer_append_char(json->fbuffer, '\0');
- *result = rb_cstr2inum(FBUFFER_PTR(json->fbuffer), 10);
+ *result = rb_Integer(rb_str_new(json->memo, len));
return p + 1;
} else {
return NULL;
@@ -338,10 +334,7 @@ static char *JSON_parse_float(JSON_Parser *json, char *p, char *pe, VALUE *resul
if (cs >= JSON_float_first_final) {
long len = p - json->memo;
- fbuffer_clear(json->fbuffer);
- fbuffer_append(json->fbuffer, json->memo, len);
- fbuffer_append_char(json->fbuffer, '\0');
- *result = rb_float_new(rb_cstr_to_dbl(FBUFFER_PTR(json->fbuffer), 1));
+ *result = rb_Float(rb_str_new(json->memo, len));
return p + 1;
} else {
return NULL;
@@ -602,7 +595,7 @@ static VALUE convert_encoding(VALUE source)
* _opts_ can have the following keys:
* * *max_nesting*: The maximum depth of nesting allowed in the parsed data
* structures. Disable depth checking with :max_nesting => false|nil|0, it
- * defaults to 100.
+ * defaults to 19.
* * *allow_nan*: If set to true, allow NaN, Infinity and -Infinity in
* defiance of RFC 4627 to be parsed by the Parser. This option defaults to
* false.
@@ -639,7 +632,7 @@ static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self)
json->max_nesting = 0;
}
} else {
- json->max_nesting = 100;
+ json->max_nesting = 19;
}
tmp = ID2SYM(i_allow_nan);
if (option_given_p(opts, tmp)) {
@@ -664,7 +657,7 @@ static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self)
if (option_given_p(opts, tmp)) {
json->create_additions = RTEST(rb_hash_aref(opts, tmp));
} else {
- json->create_additions = 0;
+ json->create_additions = 1;
}
tmp = ID2SYM(i_create_id);
if (option_given_p(opts, tmp)) {
@@ -693,19 +686,17 @@ static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self)
}
}
} else {
- json->max_nesting = 100;
+ json->max_nesting = 19;
json->allow_nan = 0;
json->create_additions = 1;
json->create_id = rb_funcall(mJSON, i_create_id, 0);
json->object_class = Qnil;
json->array_class = Qnil;
}
- source = rb_convert_type(source, T_STRING, "String", "to_str");
if (!json->quirks_mode) {
source = convert_encoding(StringValue(source));
}
json->current_nesting = 0;
- StringValue(source);
json->len = RSTRING_LEN(source);
json->source = RSTRING_PTR(source);;
json->Vsource = source;
@@ -819,7 +810,6 @@ static JSON_Parser *JSON_allocate()
{
JSON_Parser *json = ALLOC(JSON_Parser);
MEMZERO(json, JSON_Parser, 1);
- json->fbuffer = fbuffer_alloc(0);
return json;
}
@@ -834,7 +824,6 @@ static void JSON_mark(JSON_Parser *json)
static void JSON_free(JSON_Parser *json)
{
- fbuffer_free(json->fbuffer);
ruby_xfree(json);
}
diff --git a/ext/nkf/depend b/ext/nkf/depend
index f028020a20..0ed8fea8d2 100644
--- a/ext/nkf/depend
+++ b/ext/nkf/depend
@@ -1,4 +1 @@
-nkf.o : nkf.c $(hdrdir)/ruby.h $(topdir)/config.h $(hdrdir)/defines.h \
- $(srcdir)/nkf-utf8/nkf.c $(srcdir)/nkf-utf8/nkf.h \
- $(srcdir)/nkf-utf8/utf8tbl.c $(srcdir)/nkf-utf8/utf8tbl.h \
- $(srcdir)/nkf-utf8/config.h
+nkf.o : nkf.c $(hdrdir)/ruby.h $(topdir)/config.h $(hdrdir)/defines.h $(srcdir)/nkf-utf8/nkf.c $(srcdir)/nkf-utf8/utf8tbl.c $(srcdir)/nkf-utf8/config.h
diff --git a/ext/nkf/nkf-utf8/nkf.c b/ext/nkf/nkf-utf8/nkf.c
index 8e9d206471..0382f30938 100644
--- a/ext/nkf/nkf-utf8/nkf.c
+++ b/ext/nkf/nkf-utf8/nkf.c
@@ -20,11 +20,11 @@
*
* 3. This notice may not be removed or altered from any source distribution.
*/
-#define NKF_VERSION "2.1.3"
-#define NKF_RELEASE_DATE "2012-11-22"
+#define NKF_VERSION "2.1.2"
+#define NKF_RELEASE_DATE "2011-09-08"
#define COPY_RIGHT \
"Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa).\n" \
- "Copyright (C) 1996-2012, The nkf Project."
+ "Copyright (C) 1996-2011, The nkf Project."
#include "config.h"
#include "nkf.h"
@@ -356,7 +356,6 @@ static int no_cp932ext_f = FALSE;
/* ignore ZERO WIDTH NO-BREAK SPACE */
static int no_best_fit_chars_f = FALSE;
static int input_endian = ENDIAN_BIG;
-static int input_bom_f = FALSE;
static nkf_char unicode_subchar = '?'; /* the regular substitution character */
static void (*encode_fallback)(nkf_char c) = NULL;
static void w_status(struct input_code *, nkf_char);
@@ -431,8 +430,6 @@ static nkf_char (*i_uungetc)(nkf_char c ,FILE *f) = std_ungetc;
#define nkf_char_unicode_bmp_p(c) ((c & VALUE_MASK) <= UNICODE_BMP_MAX)
#define nkf_char_unicode_value_p(c) ((c & VALUE_MASK) <= UNICODE_MAX)
-#define UTF16_TO_UTF32(lead, trail) (((lead) << 10) + (trail) - NKF_INT32_C(0x35FDC00))
-
#ifdef NUMCHAR_OPTION
static int numchar_f = FALSE;
static nkf_char (*i_ngetc)(FILE *) = std_getc; /* input of ugetc */
@@ -509,7 +506,7 @@ static int fold_margin = FOLD_MARGIN;
/* process default */
static nkf_char
-no_connection2(ARG_UNUSED nkf_char c2, ARG_UNUSED nkf_char c1, ARG_UNUSED nkf_char c0)
+no_connection2(nkf_char c2, nkf_char c1, nkf_char c0)
{
fprintf(stderr,"nkf internal module connection failure.\n");
exit(EXIT_FAILURE);
@@ -623,27 +620,6 @@ static const unsigned char ev[]= {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00};
-/* X0201 kana to X0213 conversion table for han-daguten */
-/* 90-9F A0-DF */
-static const unsigned char ev_x0213[]= {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x25,0x77,0x25,0x78,
- 0x25,0x79,0x25,0x7a,0x25,0x7b,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x25,0x7c,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x25,0x7d,0x00,0x00,
- 0x25,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00};
-
/* X0208 kigou conversion table */
/* 0x8140 - 0x819e */
@@ -1311,7 +1287,6 @@ set_input_encoding(nkf_encoding *enc)
x0213_f = TRUE;
#ifdef SHIFTJIS_CP932
cp51932_f = FALSE;
- if (cp932inv_f == TRUE) cp932inv_f = FALSE;
#endif
break;
case EUC_JISX0213:
@@ -1382,7 +1357,6 @@ set_output_encoding(nkf_encoding *enc)
#endif
break;
case ISO_2022_JP_3:
- case ISO_2022_JP_2004:
x0212_f = TRUE;
x0213_f = TRUE;
#ifdef SHIFTJIS_CP932
@@ -1566,26 +1540,13 @@ x0212_unshift(nkf_char c)
}
#endif /* X0212_ENABLE */
-static int
-is_x0213_2_in_x0212(nkf_char c1)
-{
- static const char x0213_2_table[] =
- {0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1};
- int ku = c1 - 0x20;
- if (ku <= 15)
- return x0213_2_table[ku]; /* 1, 3-5, 8, 12-15 */
- if (78 <= ku && ku <= 94)
- return 1;
- return 0;
-}
-
static nkf_char
e2s_conv(nkf_char c2, nkf_char c1, nkf_char *p2, nkf_char *p1)
{
nkf_char ndx;
if (is_eucg3(c2)){
ndx = c2 & 0x7f;
- if (x0213_f && is_x0213_2_in_x0212(ndx)){
+ if (x0213_f){
if((0x21 <= ndx && ndx <= 0x2F)){
if (p2) *p2 = ((ndx - 1) >> 1) + 0xec - ndx / 8 * 3;
if (p1) *p1 = c1 + ((ndx & 1) ? ((c1 < 0x60) ? 0x1f : 0x20) : 0x7e);
@@ -1631,7 +1592,7 @@ s2e_conv(nkf_char c2, nkf_char c1, nkf_char *p2, nkf_char *p1)
static const char shift_jisx0213_s1a3_table[5][2] ={ { 1, 8}, { 3, 4}, { 5,12}, {13,14}, {15, 0} };
if (0xFC < c1) return 1;
#ifdef SHIFTJIS_CP932
- if (!cp932inv_f && !x0213_f && is_ibmext_in_sjis(c2)){
+ if (!cp932inv_f && is_ibmext_in_sjis(c2)){
val = shiftjis_cp932[c2 - CP932_TABLE_BEGIN][c1 - 0x40];
if (val){
c2 = val >> 8;
@@ -1734,7 +1695,7 @@ nkf_utf8_to_unicode(nkf_char c1, nkf_char c2, nkf_char c3, nkf_char c4)
/* single byte */
wc = c1;
}
- else if (c1 <= 0xC1) {
+ else if (c1 <= 0xC3) {
/* trail byte or invalid */
return -1;
}
@@ -1874,7 +1835,6 @@ unicode_to_jis_common(nkf_char c2, nkf_char c1, nkf_char c0, nkf_char *p2, nkf_c
ms_ucs_map_f == UCS_MAP_CP932 ? utf8_to_euc_2bytes_932 :
ms_ucs_map_f == UCS_MAP_MS ? utf8_to_euc_2bytes_ms :
ms_ucs_map_f == UCS_MAP_CP10001 ? utf8_to_euc_2bytes_mac :
- x0213_f ? utf8_to_euc_2bytes_x0213 :
utf8_to_euc_2bytes;
ret = unicode_to_jis_common2(c2, c1, pp, sizeof_utf8_to_euc_2bytes, p2, p1);
}else if(c0 < 0xF0){
@@ -1942,7 +1902,6 @@ unicode_to_jis_common(nkf_char c2, nkf_char c1, nkf_char c0, nkf_char *p2, nkf_c
ms_ucs_map_f == UCS_MAP_CP932 ? utf8_to_euc_3bytes_932 :
ms_ucs_map_f == UCS_MAP_MS ? utf8_to_euc_3bytes_ms :
ms_ucs_map_f == UCS_MAP_CP10001 ? utf8_to_euc_3bytes_mac :
- x0213_f ? utf8_to_euc_3bytes_x0213 :
utf8_to_euc_3bytes;
ret = unicode_to_jis_common2(c1, c0, ppp[c2 - 0xE0], sizeof_utf8_to_euc_C2, p2, p1);
}else return -1;
@@ -1960,15 +1919,6 @@ unicode_to_jis_common(nkf_char c2, nkf_char c1, nkf_char c0, nkf_char *p2, nkf_c
}
#ifdef UTF8_OUTPUT_ENABLE
-#define X0213_SURROGATE_FIND(tbl, size, euc) do { \
- int i; \
- for (i = 0; i < size; i++) \
- if (tbl[i][0] == euc) { \
- low = tbl[i][2]; \
- break; \
- } \
- } while (0)
-
static nkf_char
e2w_conv(nkf_char c2, nkf_char c1)
{
@@ -1991,9 +1941,7 @@ e2w_conv(nkf_char c2, nkf_char c1)
}
c2 = (c2&0x7f) - 0x21;
if (0<=c2 && c2<sizeof_euc_to_utf8_2bytes)
- p =
- x0213_f ? x0212_to_utf8_2bytes_x0213[c2] :
- x0212_to_utf8_2bytes[c2];
+ p = x0212_to_utf8_2bytes[c2];
else
return 0;
#endif
@@ -2002,7 +1950,6 @@ e2w_conv(nkf_char c2, nkf_char c1)
c2 = (c2&0x7f) - 0x21;
if (0<=c2 && c2<sizeof_euc_to_utf8_2bytes)
p =
- x0213_f ? euc_to_utf8_2bytes_x0213[c2] :
ms_ucs_map_f == UCS_MAP_ASCII ? euc_to_utf8_2bytes[c2] :
ms_ucs_map_f == UCS_MAP_CP10001 ? euc_to_utf8_2bytes_mac[c2] :
euc_to_utf8_2bytes_ms[c2];
@@ -2011,39 +1958,8 @@ e2w_conv(nkf_char c2, nkf_char c1)
}
if (!p) return 0;
c1 = (c1 & 0x7f) - 0x21;
- if (0<=c1 && c1<sizeof_euc_to_utf8_1byte) {
- nkf_char val = p[c1];
- if (x0213_f && 0xD800<=val && val<=0xDBFF) {
- nkf_char euc = (c2+0x21)<<8 | (c1+0x21);
- nkf_char low = 0;
- if (p==x0212_to_utf8_2bytes_x0213[c2]) {
- X0213_SURROGATE_FIND(x0213_2_surrogate_table, sizeof_x0213_2_surrogate_table, euc);
- } else {
- X0213_SURROGATE_FIND(x0213_1_surrogate_table, sizeof_x0213_1_surrogate_table, euc);
- }
- if (!low) return 0;
- return UTF16_TO_UTF32(val, low);
- } else {
- return val;
- }
- }
- return 0;
-}
-
-static nkf_char
-e2w_combining(nkf_char comb, nkf_char c2, nkf_char c1)
-{
- nkf_char euc;
- int i;
- for (i = 0; i < sizeof_x0213_combining_chars; i++)
- if (x0213_combining_chars[i] == comb)
- break;
- if (i >= sizeof_x0213_combining_chars)
- return 0;
- euc = (c2&0x7f)<<8 | (c1&0x7f);
- for (i = 0; i < sizeof_x0213_combining_table; i++)
- if (x0213_combining_table[i][0] == euc)
- return x0213_combining_table[i][1];
+ if (0<=c1 && c1<sizeof_euc_to_utf8_1byte)
+ return p[c1];
return 0;
}
#endif
@@ -2090,25 +2006,6 @@ w16e_conv(nkf_char val, nkf_char *p2, nkf_char *p1)
}
}
else {
- int i;
- if (x0213_f) {
- c1 = (val >> 10) + NKF_INT32_C(0xD7C0); /* high surrogate */
- c2 = (val & 0x3FF) + NKF_INT32_C(0xDC00); /* low surrogate */
- for (i = 0; i < sizeof_x0213_1_surrogate_table; i++)
- if (x0213_1_surrogate_table[i][1] == c1 && x0213_1_surrogate_table[i][2] == c2) {
- val = x0213_1_surrogate_table[i][0];
- *p2 = val >> 8;
- *p1 = val & 0xFF;
- return 0;
- }
- for (i = 0; i < sizeof_x0213_2_surrogate_table; i++)
- if (x0213_2_surrogate_table[i][1] == c1 && x0213_2_surrogate_table[i][2] == c2) {
- val = x0213_2_surrogate_table[i][0];
- *p2 = PREFIX_EUCG3 | (val >> 8);
- *p1 = val & 0xFF;
- return 0;
- }
- }
*p2 = 0;
*p1 = nkf_char_unicode_new(val);
}
@@ -2181,7 +2078,7 @@ e_iconv(nkf_char c2, nkf_char c1, nkf_char c0)
}
static nkf_char
-s_iconv(ARG_UNUSED nkf_char c2, nkf_char c1, ARG_UNUSED nkf_char c0)
+s_iconv(nkf_char c2, nkf_char c1, nkf_char c0)
{
if (c2 == JIS_X_0201_1976_K || (0xA1 <= c2 && c2 <= 0xDF)) {
if (iso2022jp_f && !x0201_f) {
@@ -2204,30 +2101,6 @@ s_iconv(ARG_UNUSED nkf_char c2, nkf_char c1, ARG_UNUSED nkf_char c0)
return 0;
}
-static int
-x0213_wait_combining_p(nkf_char wc)
-{
- int i;
- for (i = 0; i < sizeof_x0213_combining_table; i++) {
- if (x0213_combining_table[i][1] == wc) {
- return TRUE;
- }
- }
- return FALSE;
-}
-
-static int
-x0213_combining_p(nkf_char wc)
-{
- int i;
- for (i = 0; i < sizeof_x0213_combining_chars; i++) {
- if (x0213_combining_chars[i] == wc) {
- return TRUE;
- }
- }
- return FALSE;
-}
-
static nkf_char
w_iconv(nkf_char c1, nkf_char c2, nkf_char c3)
{
@@ -2295,8 +2168,6 @@ w_iconv(nkf_char c1, nkf_char c2, nkf_char c3)
c2 = nkf_char_unicode_new(nkf_utf8_to_unicode(c1, c2, c3, c4));
c1 = 0;
} else {
- if (x0213_f && x0213_wait_combining_p(nkf_utf8_to_unicode(c1, c2, c3, c4)))
- return -3;
ret = w2e_conv(c1, c2, c3, &c1, &c2);
}
if (ret == 0){
@@ -2305,22 +2176,9 @@ w_iconv(nkf_char c1, nkf_char c2, nkf_char c3)
return ret;
}
-static nkf_char
-w_iconv_nocombine(nkf_char c1, nkf_char c2, nkf_char c3)
-{
- /* continue from the line below 'return -3;' in w_iconv() */
- nkf_char ret = w2e_conv(c1, c2, c3, &c1, &c2);
- if (ret == 0){
- (*oconv)(c1, c2);
- }
- return ret;
-}
-
#define NKF_ICONV_INVALID_CODE_RANGE -13
-#define NKF_ICONV_WAIT_COMBINING_CHAR -14
-#define NKF_ICONV_NOT_COMBINED -15
static size_t
-unicode_iconv(nkf_char wc, int nocombine)
+unicode_iconv(nkf_char wc)
{
nkf_char c1, c2;
int ret = 0;
@@ -2332,8 +2190,6 @@ unicode_iconv(nkf_char wc, int nocombine)
/* unpaired surrogate */
return NKF_ICONV_INVALID_CODE_RANGE;
}else if (wc < 0xFFFF) {
- if (!nocombine && x0213_f && x0213_wait_combining_p(wc))
- return NKF_ICONV_WAIT_COMBINING_CHAR;
ret = w16e_conv(wc, &c2, &c1);
if (ret) return ret;
}else if (wc < 0x10FFFF) {
@@ -2346,50 +2202,9 @@ unicode_iconv(nkf_char wc, int nocombine)
return 0;
}
-static nkf_char
-unicode_iconv_combine(nkf_char wc, nkf_char wc2)
-{
- nkf_char c1, c2;
- int i;
-
- if (wc2 < 0x80) {
- return NKF_ICONV_NOT_COMBINED;
- }else if ((wc2>>11) == 27) {
- /* unpaired surrogate */
- return NKF_ICONV_INVALID_CODE_RANGE;
- }else if (wc2 < 0xFFFF) {
- if (!x0213_combining_p(wc2))
- return NKF_ICONV_NOT_COMBINED;
- for (i = 0; i < sizeof_x0213_combining_table; i++) {
- if (x0213_combining_table[i][1] == wc &&
- x0213_combining_table[i][2] == wc2) {
- c2 = x0213_combining_table[i][0] >> 8;
- c1 = x0213_combining_table[i][0] & 0x7f;
- (*oconv)(c2, c1);
- return 0;
- }
- }
- }else if (wc2 < 0x10FFFF) {
- return NKF_ICONV_NOT_COMBINED;
- } else {
- return NKF_ICONV_INVALID_CODE_RANGE;
- }
- return NKF_ICONV_NOT_COMBINED;
-}
-
-static nkf_char
-w_iconv_combine(nkf_char c1, nkf_char c2, nkf_char c3, nkf_char c4, nkf_char c5, nkf_char c6)
-{
- nkf_char wc, wc2;
- wc = nkf_utf8_to_unicode(c1, c2, c3, 0);
- wc2 = nkf_utf8_to_unicode(c4, c5, c6, 0);
- if (wc2 < 0)
- return wc2;
- return unicode_iconv_combine(wc, wc2);
-}
-
#define NKF_ICONV_NEED_ONE_MORE_BYTE (size_t)-1
#define NKF_ICONV_NEED_TWO_MORE_BYTES (size_t)-2
+#define UTF16_TO_UTF32(lead, trail) (((lead) << 10) + (trail) - NKF_INT32_C(0x35FDC00))
static size_t
nkf_iconv_utf_16(nkf_char c1, nkf_char c2, nkf_char c3, nkf_char c4)
{
@@ -2418,63 +2233,33 @@ nkf_iconv_utf_16(nkf_char c1, nkf_char c2, nkf_char c3, nkf_char c4)
}
}
- return (*unicode_iconv)(wc, FALSE);
-}
-
-static size_t
-nkf_iconv_utf_16_combine(nkf_char c1, nkf_char c2, nkf_char c3, nkf_char c4)
-{
- nkf_char wc, wc2;
-
- if (input_endian == ENDIAN_BIG) {
- if (0xD8 <= c3 && c3 <= 0xDB) {
- return NKF_ICONV_NOT_COMBINED;
- } else {
- wc = c1 << 8 | c2;
- wc2 = c3 << 8 | c4;
- }
- } else {
- if (0xD8 <= c2 && c2 <= 0xDB) {
- return NKF_ICONV_NOT_COMBINED;
- } else {
- wc = c2 << 8 | c1;
- wc2 = c4 << 8 | c3;
- }
- }
-
- return unicode_iconv_combine(wc, wc2);
-}
-
-static size_t
-nkf_iconv_utf_16_nocombine(nkf_char c1, nkf_char c2)
-{
- nkf_char wc;
- if (input_endian == ENDIAN_BIG)
- wc = c1 << 8 | c2;
- else
- wc = c2 << 8 | c1;
- return (*unicode_iconv)(wc, TRUE);
+ return (*unicode_iconv)(wc);
}
static nkf_char
-w_iconv16(nkf_char c2, nkf_char c1, ARG_UNUSED nkf_char c0)
+w_iconv16(nkf_char c2, nkf_char c1, nkf_char c0)
{
(*oconv)(c2, c1);
return 16; /* different from w_iconv32 */
}
static nkf_char
-w_iconv32(nkf_char c2, nkf_char c1, ARG_UNUSED nkf_char c0)
+w_iconv32(nkf_char c2, nkf_char c1, nkf_char c0)
{
(*oconv)(c2, c1);
return 32; /* different from w_iconv16 */
}
-static nkf_char
-utf32_to_nkf_char(nkf_char c1, nkf_char c2, nkf_char c3, nkf_char c4)
+static size_t
+nkf_iconv_utf_32(nkf_char c1, nkf_char c2, nkf_char c3, nkf_char c4)
{
nkf_char wc;
+ if (c1 == EOF) {
+ (*oconv)(EOF, 0);
+ return 0;
+ }
+
switch(input_endian){
case ENDIAN_BIG:
wc = c2 << 16 | c3 << 8 | c4;
@@ -2491,48 +2276,8 @@ utf32_to_nkf_char(nkf_char c1, nkf_char c2, nkf_char c3, nkf_char c4)
default:
return NKF_ICONV_INVALID_CODE_RANGE;
}
- return wc;
-}
-
-static size_t
-nkf_iconv_utf_32(nkf_char c1, nkf_char c2, nkf_char c3, nkf_char c4)
-{
- nkf_char wc;
-
- if (c1 == EOF) {
- (*oconv)(EOF, 0);
- return 0;
- }
- wc = utf32_to_nkf_char(c1, c2, c3, c4);
- if (wc < 0)
- return wc;
-
- return (*unicode_iconv)(wc, FALSE);
-}
-
-static nkf_char
-nkf_iconv_utf_32_combine(nkf_char c1, nkf_char c2, nkf_char c3, nkf_char c4, nkf_char c5, nkf_char c6, nkf_char c7, nkf_char c8)
-{
- nkf_char wc, wc2;
-
- wc = utf32_to_nkf_char(c1, c2, c3, c4);
- if (wc < 0)
- return wc;
- wc2 = utf32_to_nkf_char(c5, c6, c7, c8);
- if (wc2 < 0)
- return wc2;
-
- return unicode_iconv_combine(wc, wc2);
-}
-
-static size_t
-nkf_iconv_utf_32_nocombine(nkf_char c1, nkf_char c2, nkf_char c3, nkf_char c4)
-{
- nkf_char wc;
-
- wc = utf32_to_nkf_char(c1, c2, c3, c4);
- return (*unicode_iconv)(wc, TRUE);
+ return (*unicode_iconv)(wc);
}
#endif
@@ -2787,19 +2532,11 @@ s_oconv(nkf_char c2, nkf_char c1)
}
#ifdef UTF8_OUTPUT_ENABLE
-#define OUTPUT_UTF8(val) do { \
- nkf_unicode_to_utf8(val, &c1, &c2, &c3, &c4); \
- (*o_putc)(c1); \
- if (c2) (*o_putc)(c2); \
- if (c3) (*o_putc)(c3); \
- if (c4) (*o_putc)(c4); \
- } while (0)
-
static void
w_oconv(nkf_char c2, nkf_char c1)
{
nkf_char c3, c4;
- nkf_char val, val2;
+ nkf_char val;
if (output_bom_f) {
output_bom_f = FALSE;
@@ -2815,7 +2552,11 @@ w_oconv(nkf_char c2, nkf_char c1)
if (c2 == 0 && nkf_char_unicode_p(c1)){
val = c1 & VALUE_MASK;
- OUTPUT_UTF8(val);
+ nkf_unicode_to_utf8(val, &c1, &c2, &c3, &c4);
+ (*o_putc)(c1);
+ if (c2) (*o_putc)(c2);
+ if (c3) (*o_putc)(c3);
+ if (c4) (*o_putc)(c4);
return;
}
@@ -2824,46 +2565,27 @@ w_oconv(nkf_char c2, nkf_char c1)
} else {
val = e2w_conv(c2, c1);
if (val){
- val2 = e2w_combining(val, c2, c1);
- if (val2)
- OUTPUT_UTF8(val2);
- OUTPUT_UTF8(val);
+ nkf_unicode_to_utf8(val, &c1, &c2, &c3, &c4);
+ (*o_putc)(c1);
+ if (c2) (*o_putc)(c2);
+ if (c3) (*o_putc)(c3);
+ if (c4) (*o_putc)(c4);
}
}
}
-#define OUTPUT_UTF16_BYTES(c1, c2) do { \
- if (output_endian == ENDIAN_LITTLE){ \
- (*o_putc)(c1); \
- (*o_putc)(c2); \
- }else{ \
- (*o_putc)(c2); \
- (*o_putc)(c1); \
- } \
- } while (0)
-
-#define OUTPUT_UTF16(val) do { \
- if (nkf_char_unicode_bmp_p(val)) { \
- c2 = (val >> 8) & 0xff; \
- c1 = val & 0xff; \
- OUTPUT_UTF16_BYTES(c1, c2); \
- } else { \
- val &= VALUE_MASK; \
- if (val <= UNICODE_MAX) { \
- c2 = (val >> 10) + NKF_INT32_C(0xD7C0); /* high surrogate */ \
- c1 = (val & 0x3FF) + NKF_INT32_C(0xDC00); /* low surrogate */ \
- OUTPUT_UTF16_BYTES(c2 & 0xff, (c2 >> 8) & 0xff); \
- OUTPUT_UTF16_BYTES(c1 & 0xff, (c1 >> 8) & 0xff); \
- } \
- } \
- } while (0)
-
static void
w_oconv16(nkf_char c2, nkf_char c1)
{
if (output_bom_f) {
output_bom_f = FALSE;
- OUTPUT_UTF16_BYTES(0xFF, 0xFE);
+ if (output_endian == ENDIAN_LITTLE){
+ (*o_putc)(0xFF);
+ (*o_putc)(0xFE);
+ }else{
+ (*o_putc)(0xFE);
+ (*o_putc)(0xFF);
+ }
}
if (c2 == EOF) {
@@ -2872,33 +2594,43 @@ w_oconv16(nkf_char c2, nkf_char c1)
}
if (c2 == 0 && nkf_char_unicode_p(c1)) {
- OUTPUT_UTF16(c1);
+ if (nkf_char_unicode_bmp_p(c1)) {
+ c2 = (c1 >> 8) & 0xff;
+ c1 &= 0xff;
+ } else {
+ c1 &= VALUE_MASK;
+ if (c1 <= UNICODE_MAX) {
+ c2 = (c1 >> 10) + NKF_INT32_C(0xD7C0); /* high surrogate */
+ c1 = (c1 & 0x3FF) + NKF_INT32_C(0xDC00); /* low surrogate */
+ if (output_endian == ENDIAN_LITTLE){
+ (*o_putc)(c2 & 0xff);
+ (*o_putc)((c2 >> 8) & 0xff);
+ (*o_putc)(c1 & 0xff);
+ (*o_putc)((c1 >> 8) & 0xff);
+ }else{
+ (*o_putc)((c2 >> 8) & 0xff);
+ (*o_putc)(c2 & 0xff);
+ (*o_putc)((c1 >> 8) & 0xff);
+ (*o_putc)(c1 & 0xff);
+ }
+ }
+ return;
+ }
} else if (c2) {
- nkf_char val, val2;
- val = e2w_conv(c2, c1);
+ nkf_char val = e2w_conv(c2, c1);
+ c2 = (val >> 8) & 0xff;
+ c1 = val & 0xff;
if (!val) return;
- val2 = e2w_combining(val, c2, c1);
- if (val2)
- OUTPUT_UTF16(val2);
- OUTPUT_UTF16(val);
- } else {
- OUTPUT_UTF16_BYTES(c1, c2);
- }
-}
-
-#define OUTPUT_UTF32(c) do { \
- if (output_endian == ENDIAN_LITTLE){ \
- (*o_putc)( (c) & 0xFF); \
- (*o_putc)(((c) >> 8) & 0xFF); \
- (*o_putc)(((c) >> 16) & 0xFF); \
- (*o_putc)(0); \
- }else{ \
- (*o_putc)(0); \
- (*o_putc)(((c) >> 16) & 0xFF); \
- (*o_putc)(((c) >> 8) & 0xFF); \
- (*o_putc)( (c) & 0xFF); \
- } \
- } while (0)
+ }
+
+ if (output_endian == ENDIAN_LITTLE){
+ (*o_putc)(c1);
+ (*o_putc)(c2);
+ }else{
+ (*o_putc)(c2);
+ (*o_putc)(c1);
+ }
+}
static void
w_oconv32(nkf_char c2, nkf_char c1)
@@ -2928,15 +2660,20 @@ w_oconv32(nkf_char c2, nkf_char c1)
} else if (c2 == 0 && nkf_char_unicode_p(c1)) {
c1 &= VALUE_MASK;
} else if (c2) {
- nkf_char val, val2;
- val = e2w_conv(c2, c1);
- if (!val) return;
- val2 = e2w_combining(val, c2, c1);
- if (val2)
- OUTPUT_UTF32(val2);
- c1 = val;
+ c1 = e2w_conv(c2, c1);
+ if (!c1) return;
+ }
+ if (output_endian == ENDIAN_LITTLE){
+ (*o_putc)( c1 & 0xFF);
+ (*o_putc)((c1 >> 8) & 0xFF);
+ (*o_putc)((c1 >> 16) & 0xFF);
+ (*o_putc)(0);
+ }else{
+ (*o_putc)(0);
+ (*o_putc)((c1 >> 16) & 0xFF);
+ (*o_putc)((c1 >> 8) & 0xFF);
+ (*o_putc)( c1 & 0xFF);
}
- OUTPUT_UTF32(c1);
}
#endif
@@ -2945,8 +2682,7 @@ w_oconv32(nkf_char c2, nkf_char c1)
#define SCORE_DEPEND (SCORE_KANA << 1) /* MD Characters */
#define SCORE_CP932 (SCORE_DEPEND << 1) /* IBM extended characters */
#define SCORE_X0212 (SCORE_CP932 << 1) /* JIS X 0212 */
-#define SCORE_X0213 (SCORE_X0212 << 1) /* JIS X 0213 */
-#define SCORE_NO_EXIST (SCORE_X0213 << 1) /* Undefined Characters */
+#define SCORE_NO_EXIST (SCORE_X0212 << 1) /* Undefined Characters */
#define SCORE_iMIME (SCORE_NO_EXIST << 1) /* MIME selected */
#define SCORE_ERROR (SCORE_iMIME << 1) /* Error */
@@ -2956,35 +2692,14 @@ static const nkf_char score_table_A0[] = {
0, 0, 0, 0,
0, 0, 0, 0,
0, SCORE_DEPEND, SCORE_DEPEND, SCORE_DEPEND,
- SCORE_DEPEND, SCORE_DEPEND, SCORE_DEPEND, SCORE_X0213,
+ SCORE_DEPEND, SCORE_DEPEND, SCORE_DEPEND, SCORE_NO_EXIST,
};
static const nkf_char score_table_F0[] = {
SCORE_L2, SCORE_L2, SCORE_L2, SCORE_L2,
- SCORE_L2, SCORE_DEPEND, SCORE_X0213, SCORE_X0213,
+ SCORE_L2, SCORE_DEPEND, SCORE_NO_EXIST, SCORE_NO_EXIST,
SCORE_DEPEND, SCORE_DEPEND, SCORE_CP932, SCORE_CP932,
- SCORE_CP932, SCORE_X0213, SCORE_X0213, SCORE_ERROR,
-};
-
-static const nkf_char score_table_8FA0[] = {
- 0, SCORE_X0213, SCORE_X0212, SCORE_X0213,
- SCORE_X0213, SCORE_X0213, SCORE_X0212, SCORE_X0212,
- SCORE_X0213, SCORE_X0212, SCORE_X0212, SCORE_X0212,
- SCORE_X0213, SCORE_X0213, SCORE_X0213, SCORE_X0213,
-};
-
-static const nkf_char score_table_8FE0[] = {
- SCORE_X0212, SCORE_X0212, SCORE_X0212, SCORE_X0212,
- SCORE_X0212, SCORE_X0212, SCORE_X0212, SCORE_X0212,
- SCORE_X0212, SCORE_X0212, SCORE_X0212, SCORE_X0212,
- SCORE_X0212, SCORE_X0212, SCORE_X0213, SCORE_X0213,
-};
-
-static const nkf_char score_table_8FF0[] = {
- SCORE_X0213, SCORE_X0213, SCORE_X0213, SCORE_X0212,
- SCORE_X0212, SCORE_X0213, SCORE_X0213, SCORE_X0213,
- SCORE_X0213, SCORE_X0213, SCORE_X0213, SCORE_X0213,
- SCORE_X0213, SCORE_X0213, SCORE_X0213, SCORE_X0213,
+ SCORE_CP932, SCORE_NO_EXIST, SCORE_NO_EXIST, SCORE_ERROR,
};
static void
@@ -3007,21 +2722,15 @@ static void
code_score(struct input_code *ptr)
{
nkf_char c2 = ptr->buf[0];
+#ifdef UTF8_OUTPUT_ENABLE
nkf_char c1 = ptr->buf[1];
+#endif
if (c2 < 0){
set_code_score(ptr, SCORE_ERROR);
}else if (c2 == SS2){
set_code_score(ptr, SCORE_KANA);
}else if (c2 == 0x8f){
- if ((c1 & 0x70) == 0x20){
- set_code_score(ptr, score_table_8FA0[c1 & 0x0f]);
- }else if ((c1 & 0x70) == 0x60){
- set_code_score(ptr, score_table_8FE0[c1 & 0x0f]);
- }else if ((c1 & 0x70) == 0x70){
- set_code_score(ptr, score_table_8FF0[c1 & 0x0f]);
- }else{
- set_code_score(ptr, SCORE_X0212);
- }
+ set_code_score(ptr, SCORE_X0212);
#ifdef UTF8_OUTPUT_ENABLE
}else if (!e2w_conv(c2, c1)){
set_code_score(ptr, SCORE_NO_EXIST);
@@ -3337,7 +3046,7 @@ std_getc(FILE *f)
#endif /*WIN32DLL*/
static nkf_char
-std_ungetc(nkf_char c, ARG_UNUSED FILE *f)
+std_ungetc(nkf_char c, FILE *f)
{
nkf_buf_push(nkf_state->std_gc_buf, c);
return c;
@@ -3368,7 +3077,6 @@ h_conv(FILE *f, nkf_char c1, nkf_char c2)
{
int ret;
int hold_index;
- int fromhold_count;
nkf_char c3, c4;
/** it must NOT be in the kanji shifte sequence */
@@ -3430,10 +3138,8 @@ h_conv(FILE *f, nkf_char c1, nkf_char c2)
(*iconv)(JIS_X_0201_1976_K, c1, 0);
continue;
}
- fromhold_count = 1;
if (hold_index < hold_count){
c2 = hold_buf[hold_index++];
- fromhold_count++;
}else{
c2 = (*i_getc)(f);
if (c2 == EOF){
@@ -3462,105 +3168,17 @@ h_conv(FILE *f, nkf_char c1, nkf_char c2)
code_status(c4);
(*iconv)(c1, c2, (c3<<8)|c4);
break;
- case -3:
- /* 4 bytes UTF-8 (check combining character) */
- if (hold_index < hold_count){
- c3 = hold_buf[hold_index++];
- fromhold_count++;
- } else if ((c3 = (*i_getc)(f)) == EOF) {
- w_iconv_nocombine(c1, c2, 0);
- break;
- }
- if (hold_index < hold_count){
- c4 = hold_buf[hold_index++];
- fromhold_count++;
- } else if ((c4 = (*i_getc)(f)) == EOF) {
- w_iconv_nocombine(c1, c2, 0);
- if (fromhold_count <= 2)
- (*i_ungetc)(c3,f);
- else
- hold_index--;
- continue;
- }
- if (w_iconv_combine(c1, c2, 0, c3, c4, 0)) {
- w_iconv_nocombine(c1, c2, 0);
- if (fromhold_count <= 2) {
- (*i_ungetc)(c4,f);
- (*i_ungetc)(c3,f);
- } else if (fromhold_count == 3) {
- (*i_ungetc)(c4,f);
- hold_index--;
- } else {
- hold_index -= 2;
- }
- }
- break;
case -1:
/* 3 bytes EUC or UTF-8 */
if (hold_index < hold_count){
c3 = hold_buf[hold_index++];
- fromhold_count++;
} else if ((c3 = (*i_getc)(f)) == EOF) {
ret = EOF;
break;
} else {
code_status(c3);
}
- if ((*iconv)(c1, c2, c3) == -3) {
- /* 6 bytes UTF-8 (check combining character) */
- nkf_char c5, c6;
- if (hold_index < hold_count){
- c4 = hold_buf[hold_index++];
- fromhold_count++;
- } else if ((c4 = (*i_getc)(f)) == EOF) {
- w_iconv_nocombine(c1, c2, c3);
- continue;
- }
- if (hold_index < hold_count){
- c5 = hold_buf[hold_index++];
- fromhold_count++;
- } else if ((c5 = (*i_getc)(f)) == EOF) {
- w_iconv_nocombine(c1, c2, c3);
- if (fromhold_count == 4)
- hold_index--;
- else
- (*i_ungetc)(c4,f);
- continue;
- }
- if (hold_index < hold_count){
- c6 = hold_buf[hold_index++];
- fromhold_count++;
- } else if ((c6 = (*i_getc)(f)) == EOF) {
- w_iconv_nocombine(c1, c2, c3);
- if (fromhold_count == 5) {
- hold_index -= 2;
- } else if (fromhold_count == 4) {
- hold_index--;
- (*i_ungetc)(c5,f);
- } else {
- (*i_ungetc)(c5,f);
- (*i_ungetc)(c4,f);
- }
- continue;
- }
- if (w_iconv_combine(c1, c2, c3, c4, c5, c6)) {
- w_iconv_nocombine(c1, c2, c3);
- if (fromhold_count == 6) {
- hold_index -= 3;
- } else if (fromhold_count == 5) {
- hold_index -= 2;
- (*i_ungetc)(c6,f);
- } else if (fromhold_count == 4) {
- hold_index--;
- (*i_ungetc)(c6,f);
- (*i_ungetc)(c5,f);
- } else {
- (*i_ungetc)(c6,f);
- (*i_ungetc)(c5,f);
- (*i_ungetc)(c4,f);
- }
- }
- }
+ (*iconv)(c1, c2, c3);
break;
}
if (c3 == EOF) break;
@@ -3584,7 +3202,6 @@ check_bom(FILE *f)
set_iconv(TRUE, w_iconv32);
}
if (iconv == w_iconv32) {
- input_bom_f = TRUE;
input_endian = ENDIAN_BIG;
return;
}
@@ -3615,7 +3232,6 @@ check_bom(FILE *f)
set_iconv(TRUE, w_iconv);
}
if (iconv == w_iconv) {
- input_bom_f = TRUE;
return;
}
(*i_ungetc)(0xBF,f);
@@ -3644,7 +3260,6 @@ check_bom(FILE *f)
}
if (iconv == w_iconv16) {
input_endian = ENDIAN_BIG;
- input_bom_f = TRUE;
return;
}
(*i_ungetc)(0xFF,f);
@@ -3660,7 +3275,6 @@ check_bom(FILE *f)
}
if (iconv == w_iconv32) {
input_endian = ENDIAN_LITTLE;
- input_bom_f = TRUE;
return;
}
(*i_ungetc)(0x00,f);
@@ -3672,7 +3286,6 @@ check_bom(FILE *f)
}
if (iconv == w_iconv16) {
input_endian = ENDIAN_LITTLE;
- input_bom_f = TRUE;
return;
}
(*i_ungetc)(0xFE,f);
@@ -3725,7 +3338,7 @@ broken_getc(FILE *f)
}
static nkf_char
-broken_ungetc(nkf_char c, ARG_UNUSED FILE *f)
+broken_ungetc(nkf_char c, FILE *f)
{
if (nkf_buf_length(nkf_state->broken_buf) < 2)
nkf_buf_push(nkf_state->broken_buf, c);
@@ -3881,7 +3494,7 @@ fold_conv(nkf_char c2, nkf_char c1)
f_prev = c1;
if (c2 || c2 == JIS_X_0201_1976_K)
f_prev |= 0x80; /* this is Japanese */
- f_line += c2 == JIS_X_0201_1976_K ? 1: char_size(c2,c1);
+ f_line += char_size(c2,c1);
if (f_line<=fold_len) { /* normal case */
fold_state = 1;
} else {
@@ -4000,17 +3613,13 @@ z_conv(nkf_char c2, nkf_char c1)
z_prev2 = 0;
(*o_zconv)(ev[(z_prev1-SP)*2], ev[(z_prev1-SP)*2+1]);
return;
- } else if (x0213_f && c1 == (0xdf&0x7f) && ev_x0213[(z_prev1-SP)*2]) { /* $BH>ByE@(B */
- z_prev2 = 0;
- (*o_zconv)(ev_x0213[(z_prev1-SP)*2], ev_x0213[(z_prev1-SP)*2+1]);
- return;
}
}
z_prev2 = 0;
(*o_zconv)(cv[(z_prev1-SP)*2], cv[(z_prev1-SP)*2+1]);
}
if (c2 == JIS_X_0201_1976_K) {
- if (dv[(c1-SP)*2] || ev[(c1-SP)*2] || (x0213_f && ev_x0213[(c1-SP)*2])) {
+ if (dv[(c1-SP)*2] || ev[(c1-SP)*2]) {
/* wait for $BByE@(B or $BH>ByE@(B */
z_prev1 = c1;
z_prev2 = c2;
@@ -4118,8 +3727,8 @@ z_conv(nkf_char c2, nkf_char c1)
0x4D00, 0x4D5E, 0x4D5F, 0x4E00, 0x4E5E, 0x4E5F, 0x4F00, 0x5000,
0x5100, 0x5200, 0x5300, 0x2C00, 0x5400, 0x2D00, 0x5500, 0x2E00,
0x5600, 0x5700, 0x5800, 0x5900, 0x5A00, 0x5B00, 0x0000, 0x5C00,
- 0x0000, 0x0000, 0x2600, 0x5D00, 0x335E, 0x0000, 0x0000, 0x365F,
- 0x375F, 0x385F, 0x395F, 0x3A5F, 0x3E5F, 0x425F, 0x445F, 0x0000
+ 0x0000, 0x0000, 0x2600, 0x5D00, 0x335E, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
};
if (fullwidth_to_halfwidth[c1-0x20]){
c2 = fullwidth_to_halfwidth[c1-0x20];
@@ -4129,10 +3738,6 @@ z_conv(nkf_char c2, nkf_char c1)
}
return;
}
- } else if (c2 == 0 && nkf_char_unicode_p(c1) &&
- ((c1&VALUE_MASK) == 0x3099 || (c1&VALUE_MASK) == 0x309A)) { /* $B9g@.MQByE@!&H>ByE@(B */
- (*o_zconv)(JIS_X_0201_1976_K, 0x5E + (c1&VALUE_MASK) - 0x3099);
- return;
}
}
(*o_zconv)(c2,c1);
@@ -4321,7 +3926,7 @@ mime_input_buf_unshift(nkf_char c)
}
static nkf_char
-mime_ungetc(nkf_char c, ARG_UNUSED FILE *f)
+mime_ungetc(nkf_char c, FILE *f)
{
mime_input_buf_unshift(c);
return c;
@@ -4466,7 +4071,7 @@ mime_begin_strict(FILE *f)
static nkf_char
mime_begin(FILE *f)
{
- nkf_char c1 = 0;
+ nkf_char c1;
int i,k;
/* In NONSTRICT mode, only =? is checked. In case of failure, we */
@@ -4522,7 +4127,7 @@ mime_begin(FILE *f)
#ifdef CHECK_OPTION
static void
-no_putc(ARG_UNUSED nkf_char c)
+no_putc(nkf_char c)
{
;
}
@@ -4559,9 +4164,7 @@ get_guessed_code(void)
if (p->score & (SCORE_DEPEND|SCORE_CP932))
input_codename = "CP932";
} else if (strcmp(input_codename, "EUC-JP") == 0) {
- if (p->score & SCORE_X0213)
- input_codename = "EUC-JIS-2004";
- else if (p->score & (SCORE_X0212))
+ if (p->score & (SCORE_X0212))
input_codename = "EUCJP-MS";
else if (p->score & (SCORE_DEPEND|SCORE_CP932))
input_codename = "CP51932";
@@ -4587,13 +4190,8 @@ print_guessed_code(char *filename)
if (guess_f == 1) {
printf("%s\n", input_codename);
} else {
- printf("%s%s%s%s\n",
+ printf("%s%s\n",
input_codename,
- iconv != w_iconv16 && iconv != w_iconv32 ? "" :
- input_endian == ENDIAN_LITTLE ? " LE" :
- input_endian == ENDIAN_BIG ? " BE" :
- "[BUG]",
- input_bom_f ? " (BOM)" : "",
input_eol == CR ? " (CR)" :
input_eol == LF ? " (LF)" :
input_eol == CRLF ? " (CRLF)" :
@@ -5858,45 +5456,17 @@ kanji_convert(FILE *f)
(c2 = (*i_getc)(f)) != EOF &&
(c3 = (*i_getc)(f)) != EOF &&
(c4 = (*i_getc)(f)) != EOF) {
- nkf_char c5, c6, c7, c8;
- if (nkf_iconv_utf_32(c1, c2, c3, c4) == (size_t)NKF_ICONV_WAIT_COMBINING_CHAR) {
- if ((c5 = (*i_getc)(f)) != EOF &&
- (c6 = (*i_getc)(f)) != EOF &&
- (c7 = (*i_getc)(f)) != EOF &&
- (c8 = (*i_getc)(f)) != EOF) {
- if (nkf_iconv_utf_32_combine(c1, c2, c3, c4, c5, c6, c7, c8)) {
- (*i_ungetc)(c8, f);
- (*i_ungetc)(c7, f);
- (*i_ungetc)(c6, f);
- (*i_ungetc)(c5, f);
- nkf_iconv_utf_32_nocombine(c1, c2, c3, c4);
- }
- } else {
- nkf_iconv_utf_32_nocombine(c1, c2, c3, c4);
- }
- }
+ nkf_iconv_utf_32(c1, c2, c3, c4);
}
goto finished;
}
else if (iconv == w_iconv16) {
while ((c1 = (*i_getc)(f)) != EOF &&
(c2 = (*i_getc)(f)) != EOF) {
- size_t ret = nkf_iconv_utf_16(c1, c2, 0, 0);
- if (ret == NKF_ICONV_NEED_TWO_MORE_BYTES &&
+ if (nkf_iconv_utf_16(c1, c2, 0, 0) == NKF_ICONV_NEED_TWO_MORE_BYTES &&
(c3 = (*i_getc)(f)) != EOF &&
(c4 = (*i_getc)(f)) != EOF) {
nkf_iconv_utf_16(c1, c2, c3, c4);
- } else if (ret == (size_t)NKF_ICONV_WAIT_COMBINING_CHAR) {
- if ((c3 = (*i_getc)(f)) != EOF &&
- (c4 = (*i_getc)(f)) != EOF) {
- if (nkf_iconv_utf_16_combine(c1, c2, c3, c4)) {
- (*i_ungetc)(c4, f);
- (*i_ungetc)(c3, f);
- nkf_iconv_utf_16_nocombine(c1, c2);
- }
- } else {
- nkf_iconv_utf_16_nocombine(c1, c2);
- }
}
}
goto finished;
@@ -5910,7 +5480,7 @@ kanji_convert(FILE *f)
code_status(c1);
if (c2) {
/* second byte */
- if (c2 > ((input_encoding && nkf_enc_cp5022x_p(input_encoding)) ? 0x92 : DEL)) {
+ if (c2 > DEL) {
/* in case of 8th bit is on */
if (!estab_f&&!mime_decode_mode) {
/* in case of not established yet */
@@ -6102,7 +5672,6 @@ kanji_convert(FILE *f)
else if (c1 == 'I') {
/* JIS X 0201 Katakana */
set_input_mode(JIS_X_0201_1976_K);
- shift_mode = 1;
SKIP;
}
else if (c1 == 'B' || c1 == 'J' || c1 == 'H') {
@@ -6244,52 +5813,11 @@ kanji_convert(FILE *f)
}
}
break;
- case -3:
- /* 4 bytes UTF-8 (check combining character) */
- if ((c3 = (*i_getc)(f)) != EOF) {
- if ((c4 = (*i_getc)(f)) != EOF) {
- if (w_iconv_combine(c2, c1, 0, c3, c4, 0)) {
- (*i_ungetc)(c4, f);
- (*i_ungetc)(c3, f);
- w_iconv_nocombine(c2, c1, 0);
- }
- } else {
- (*i_ungetc)(c3, f);
- w_iconv_nocombine(c2, c1, 0);
- }
- } else {
- w_iconv_nocombine(c2, c1, 0);
- }
- break;
case -1:
/* 3 bytes EUC or UTF-8 */
if ((c3 = (*i_getc)(f)) != EOF) {
code_status(c3);
- if ((*iconv)(c2, c1, c3) == -3) {
- /* 6 bytes UTF-8 (check combining character) */
- nkf_char c5, c6;
- if ((c4 = (*i_getc)(f)) != EOF) {
- if ((c5 = (*i_getc)(f)) != EOF) {
- if ((c6 = (*i_getc)(f)) != EOF) {
- if (w_iconv_combine(c2, c1, c3, c4, c5, c6)) {
- (*i_ungetc)(c6, f);
- (*i_ungetc)(c5, f);
- (*i_ungetc)(c4, f);
- w_iconv_nocombine(c2, c1, c3);
- }
- } else {
- (*i_ungetc)(c5, f);
- (*i_ungetc)(c4, f);
- w_iconv_nocombine(c2, c1, c3);
- }
- } else {
- (*i_ungetc)(c4, f);
- w_iconv_nocombine(c2, c1, c3);
- }
- } else {
- w_iconv_nocombine(c2, c1, c3);
- }
- }
+ (*iconv)(c2, c1, c3);
}
break;
}
diff --git a/ext/nkf/nkf-utf8/nkf.h b/ext/nkf/nkf-utf8/nkf.h
index c174c9ac51..dd479a0f87 100644
--- a/ext/nkf/nkf-utf8/nkf.h
+++ b/ext/nkf/nkf-utf8/nkf.h
@@ -1,12 +1,11 @@
/*
*
* nkf.h - Header file for nkf
- *
+ *
* $Id$
*/
#ifndef NKF_H
-#define NKF_H
/* Wrapper of configurations */
@@ -18,9 +17,21 @@
#endif
#if DEFAULT_NEWLINE == 0x0D0A
+#define PUT_NEWLINE(func) do {\
+ func(0x0D);\
+ func(0x0A);\
+} while (0)
+#define OCONV_NEWLINE(func) do {\
+ func(0, 0x0D);\
+ func(0, 0x0A);\
+} while (0)
#elif DEFAULT_NEWLINE == 0x0D
+#define PUT_NEWLINE(func) func(0x0D)
+#define OCONV_NEWLINE(func) func(0, 0x0D)
#else
#define DEFAULT_NEWLINE 0x0A
+#define PUT_NEWLINE(func) func(0x0A)
+#define OCONV_NEWLINE(func) func(0, 0x0A)
#endif
#ifdef HELP_OUTPUT_STDERR
#define HELP_OUTPUT stderr
@@ -83,7 +94,7 @@ void setbinmode(FILE *fp)
#define setbinmode(fp) setmode(fileno(fp), O_BINARY)
#endif
#else /* UNIX */
-#define setbinmode(fp) (void)(fp)
+#define setbinmode(fp)
#endif
#ifdef _IOFBF /* SysV and MSDOS, Windows */
@@ -174,14 +185,6 @@ void setbinmode(FILE *fp)
#define FALSE 0
#define TRUE 1
-#ifndef ARG_UNUSED
-#if defined(__GNUC__)
-# define ARG_UNUSED __attribute__ ((unused))
-#else
-# define ARG_UNUSED
-#endif
-#endif
-
#ifdef WIN32DLL
#include "nkf32.h"
#endif
diff --git a/ext/nkf/nkf-utf8/utf8tbl.c b/ext/nkf/nkf-utf8/utf8tbl.c
index bbf5c5f109..10eec60c5d 100644
--- a/ext/nkf/nkf-utf8/utf8tbl.c
+++ b/ext/nkf/nkf-utf8/utf8tbl.c
@@ -68,20 +68,6 @@ static const unsigned short euc_to_utf8_A2_ms[] = {
0, 0, 0x212B, 0x2030, 0x266F, 0x266D, 0x266A, 0x2020,
0x2021, 0x00B6, 0, 0, 0, 0, 0x25EF,
};
-static const unsigned short euc_to_utf8_A2_x0213[] = {
- 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC,
- 0x203B, 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0xFF07,
- 0xFF02, 0xFF0D, 0xFF5E, 0x3033, 0x3034, 0x3035, 0x303B, 0x303C,
- 0x30FF, 0x309F, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, 0x2283,
- 0x222A, 0x2229, 0x2284, 0x2285, 0x228A, 0x228B, 0x2209, 0x2205,
- 0x2305, 0x2306, 0x2227, 0x2228, 0x00AC, 0x21D2, 0x21D4, 0x2200,
- 0x2203, 0x2295, 0x2296, 0x2297, 0x2225, 0x2226, 0xFF5F, 0xFF60,
- 0x3018, 0x3019, 0x3016, 0x3017, 0x2220, 0x22A5, 0x2312, 0x2202,
- 0x2207, 0x2261, 0x2252, 0x226A, 0x226B, 0x221A, 0x223D, 0x221D,
- 0x2235, 0x222B, 0x222C, 0x2262, 0x2243, 0x2245, 0x2248, 0x2276,
- 0x2277, 0x2194, 0x212B, 0x2030, 0x266F, 0x266D, 0x266A, 0x2020,
- 0x2021, 0x00B6, 0x266E, 0x266B, 0x266C, 0x2669, 0x25EF,
-};
static const unsigned short euc_to_utf8_A3[] = {
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -96,20 +82,6 @@ static const unsigned short euc_to_utf8_A3[] = {
0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57,
0xFF58, 0xFF59, 0xFF5A, 0, 0, 0, 0,
};
-static const unsigned short euc_to_utf8_A3_x0213[] = {
- 0x25B7, 0x25B6, 0x25C1, 0x25C0, 0x2197, 0x2198, 0x2196,
- 0x2199, 0x21C4, 0x21E8, 0x21E6, 0x21E7, 0x21E9, 0x2934, 0x2935,
- 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17,
- 0xFF18, 0xFF19, 0x29BF, 0x25C9, 0x303D, 0xFE46, 0xFE45, 0x25E6,
- 0x2022, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27,
- 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F,
- 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37,
- 0xFF38, 0xFF39, 0xFF3A, 0x2213, 0x2135, 0x210F, 0x33CB, 0x2113,
- 0x2127, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47,
- 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F,
- 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57,
- 0xFF58, 0xFF59, 0xFF5A, 0x30A0, 0x2013, 0x29FA, 0x29FB,
-};
static const unsigned short euc_to_utf8_A4[] = {
0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047,
0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F,
@@ -124,20 +96,6 @@ static const unsigned short euc_to_utf8_A4[] = {
0x3090, 0x3091, 0x3092, 0x3093, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short euc_to_utf8_A4_x0213[] = {
- 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047,
- 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F,
- 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057,
- 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F,
- 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067,
- 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F,
- 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077,
- 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F,
- 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087,
- 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F,
- 0x3090, 0x3091, 0x3092, 0x3093, 0x3094, 0x3095, 0x3096, /*0x304B*/ 0x309A,
- /*0x304D*/ 0x309A, /*0x304F*/ 0x309A, /*0x3051*/ 0x309A, /*0x3053*/ 0x309A, 0, 0, 0,
-};
static const unsigned short euc_to_utf8_A5[] = {
0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7,
0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF,
@@ -152,20 +110,6 @@ static const unsigned short euc_to_utf8_A5[] = {
0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0,
0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short euc_to_utf8_A5_x0213[] = {
- 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7,
- 0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF,
- 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7,
- 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF,
- 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7,
- 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF,
- 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7,
- 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF,
- 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7,
- 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF,
- 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, /*0x30AB*/ 0x309A,
- /*0x30AD*/ 0x309A, /*0x30AF*/ 0x309A, /*0x30B1*/ 0x309A, /*0x30B3*/ 0x309A, /*0x30BB*/ 0x309A, /*0x30C4*/ 0x309A, /*0x30C8*/ 0x309A,
-};
static const unsigned short euc_to_utf8_A6[] = {
0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
@@ -180,20 +124,6 @@ static const unsigned short euc_to_utf8_A6[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short euc_to_utf8_A6_x0213[] = {
- 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
- 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
- 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8,
- 0x03A9, 0x2664, 0x2660, 0x2662, 0x2666, 0x2661, 0x2665, 0x2667,
- 0x2663, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7,
- 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
- 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8,
- 0x03C9, 0x03C2, 0x24F5, 0x24F6, 0x24F7, 0x24F8, 0x24F9, 0x24FA,
- 0x24FB, 0x24FC, 0x24FD, 0x24FE, 0x2616, 0x2617, 0x3020, 0x260E,
- 0x2600, 0x2601, 0x2602, 0x2603, 0x2668, 0x25B1, 0x31F0, 0x31F1,
- 0x31F2, 0x31F3, 0x31F4, 0x31F5, 0x31F6, 0x31F7, 0x31F8, 0x31F9,
- /*0x31F7*/ 0x309A, 0x31FA, 0x31FB, 0x31FC, 0x31FD, 0x31FE, 0x31FF,
-};
static const unsigned short euc_to_utf8_A7[] = {
0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401,
0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D,
@@ -208,20 +138,6 @@ static const unsigned short euc_to_utf8_A7[] = {
0x044E, 0x044F, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short euc_to_utf8_A7_x0213[] = {
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401,
- 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D,
- 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425,
- 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D,
- 0x042E, 0x042F, 0x23BE, 0x23BF, 0x23C0, 0x23C1, 0x23C2, 0x23C3,
- 0x23C4, 0x23C5, 0x23C6, 0x23C7, 0x23C8, 0x23C9, 0x23CA, 0x23CB,
- 0x23CC, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451,
- 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D,
- 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445,
- 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D,
- 0x044E, 0x044F, 0x30F7, 0x30F8, 0x30F9, 0x30FA, 0x22DA, 0x22DB,
- 0x2153, 0x2154, 0x2155, 0x2713, 0x2318, 0x2423, 0x23CE,
-};
static const unsigned short euc_to_utf8_A8[] = {
0x2500, 0x2502, 0x250C, 0x2510, 0x2518, 0x2514, 0x251C,
0x252C, 0x2524, 0x2534, 0x253C, 0x2501, 0x2503, 0x250F, 0x2513,
@@ -236,20 +152,6 @@ static const unsigned short euc_to_utf8_A8[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short euc_to_utf8_A8_x0213[] = {
- 0x2500, 0x2502, 0x250C, 0x2510, 0x2518, 0x2514, 0x251C,
- 0x252C, 0x2524, 0x2534, 0x253C, 0x2501, 0x2503, 0x250F, 0x2513,
- 0x251B, 0x2517, 0x2523, 0x2533, 0x252B, 0x253B, 0x254B, 0x2520,
- 0x252F, 0x2528, 0x2537, 0x253F, 0x251D, 0x2530, 0x2525, 0x2538,
- 0x2542, 0x3251, 0x3252, 0x3253, 0x3254, 0x3255, 0x3256, 0x3257,
- 0x3258, 0x3259, 0x325A, 0x325B, 0x325C, 0x325D, 0x325E, 0x325F,
- 0x32B1, 0x32B2, 0x32B3, 0x32B4, 0x32B5, 0x32B6, 0x32B7, 0x32B8,
- 0x32B9, 0x32BA, 0x32BB, 0x32BC, 0x32BD, 0x32BE, 0x32BF, 0,
- 0, 0, 0, 0, 0, 0, 0, 0x25D0,
- 0x25D1, 0x25D2, 0x25D3, 0x203C, 0x2047, 0x2048, 0x2049, 0x01CD,
- 0x01CE, 0x01D0, 0x1E3E, 0x1E3F, 0x01F8, 0x01F9, 0x01D1, 0x01D2,
- 0x01D4, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0, 0,
-};
static const unsigned short euc_to_utf8_A9[] = {
0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466,
0x2467, 0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D, 0x246E,
@@ -264,20 +166,6 @@ static const unsigned short euc_to_utf8_A9[] = {
0, 0, 0x2488, 0x2489, 0x248A, 0x248B, 0x248C, 0x248D,
0x248E, 0x248F, 0x2490, 0, 0, 0, 0,
};
-static const unsigned short euc_to_utf8_A9_x0213[] = {
- 0x20AC, 0x00A0, 0x00A1, 0x00A4, 0x00A6, 0x00A9, 0x00AA,
- 0x00AB, 0x00AD, 0x00AE, 0x00AF, 0x00B2, 0x00B3, 0x00B7, 0x00B8,
- 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, 0x00C0,
- 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, 0x00C8,
- 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x00D0,
- 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D8, 0x00D9,
- 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, 0x00E0, 0x00E1,
- 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9,
- 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, 0x00F0, 0x00F1,
- 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F8, 0x00F9, 0x00FA,
- 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF, 0x0100, 0x012A, 0x016A,
- 0x0112, 0x014C, 0x0101, 0x012B, 0x016B, 0x0113, 0x014D,
-};
static const unsigned short euc_to_utf8_AA[] = {
0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166,
0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0, 0, 0,
@@ -292,20 +180,6 @@ static const unsigned short euc_to_utf8_AA[] = {
0x24AF, 0x24B0, 0x24B1, 0x24B2, 0x24B3, 0x24B4, 0x24B5, 0,
0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short euc_to_utf8_AA_x0213[] = {
- 0x0104, 0x02D8, 0x0141, 0x013D, 0x015A, 0x0160, 0x015E,
- 0x0164, 0x0179, 0x017D, 0x017B, 0x0105, 0x02DB, 0x0142, 0x013E,
- 0x015B, 0x02C7, 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD, 0x017E,
- 0x017C, 0x0154, 0x0102, 0x0139, 0x0106, 0x010C, 0x0118, 0x011A,
- 0x010E, 0x0143, 0x0147, 0x0150, 0x0158, 0x016E, 0x0170, 0x0162,
- 0x0155, 0x0103, 0x013A, 0x0107, 0x010D, 0x0119, 0x011B, 0x010F,
- 0x0111, 0x0144, 0x0148, 0x0151, 0x0159, 0x016F, 0x0171, 0x0163,
- 0x02D9, 0x0108, 0x011C, 0x0124, 0x0134, 0x015C, 0x016C, 0x0109,
- 0x011D, 0x0125, 0x0135, 0x015D, 0x016D, 0x0271, 0x028B, 0x027E,
- 0x0283, 0x0292, 0x026C, 0x026E, 0x0279, 0x0288, 0x0256, 0x0273,
- 0x027D, 0x0282, 0x0290, 0x027B, 0x026D, 0x025F, 0x0272, 0x029D,
- 0x028E, 0x0261, 0x014B, 0x0270, 0x0281, 0x0127, 0x0295,
-};
static const unsigned short euc_to_utf8_AB[] = {
0x339C, 0x339F, 0x339D, 0x33A0, 0x33A4, 0, 0x33A1,
0x33A5, 0x339E, 0x33A2, 0x338E, 0, 0x338F, 0x33C4, 0x3396,
@@ -320,20 +194,6 @@ static const unsigned short euc_to_utf8_AB[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0x2116, 0x33CD, 0x2121, 0,
};
-static const unsigned short euc_to_utf8_AB_x0213[] = {
- 0x0294, 0x0266, 0x0298, 0x01C2, 0x0253, 0x0257, 0x0284,
- 0x0260, 0x0193, 0x0153, 0x0152, 0x0268, 0x0289, 0x0258, 0x0275,
- 0x0259, 0x025C, 0x025E, 0x0250, 0x026F, 0x028A, 0x0264, 0x028C,
- 0x0254, 0x0251, 0x0252, 0x028D, 0x0265, 0x02A2, 0x02A1, 0x0255,
- 0x0291, 0x027A, 0x0267, 0x025A, /*0x00E6*/ 0x0300, 0x01FD, 0x1F70, 0x1F71,
- /*0x0254*/ 0x0300, /*0x0254*/ 0x0301, /*0x028C*/ 0x0300, /*0x028C*/ 0x0301, /*0x0259*/ 0x0300, /*0x0259*/ 0x0301, /*0x025A*/ 0x0300, /*0x025A*/ 0x0301,
- 0x1F72, 0x1F73, 0x0361, 0x02C8, 0x02CC, 0x02D0, 0x02D1, 0x0306,
- 0x203F, 0x030B, /*0*/ 0x0301, 0x0304, /*0*/ 0x0300, 0x030F, 0x030C, 0x0302,
- /*0*/ 0x02E5, 0x02E6, 0x02E7, 0x02E8, /*0*/ 0x02E9, /*0x02E9*/ 0x02E5, /*0x02E5*/ 0x02E9, 0x0325,
- 0x032C, 0x0339, 0x031C, 0x031F, 0x0320, 0x0308, 0x033D, 0x0329,
- 0x032F, 0x02DE, 0x0324, 0x0330, 0x033C, 0x0334, 0x031D, 0x031E,
- 0x0318, 0x0319, 0x032A, 0x033A, 0x033B, 0x0303, 0x031A,
-};
static const unsigned short euc_to_utf8_AC[] = {
0x2664, 0x2667, 0x2661, 0x2662, 0x2660, 0x2663, 0x2665,
0x2666, 0, 0, 0, 0, 0, 0, 0,
@@ -362,20 +222,6 @@ static const unsigned short euc_to_utf8_AC_mac[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short euc_to_utf8_AC_x0213[] = {
- 0x2776, 0x2777, 0x2778, 0x2779, 0x277A, 0x277B, 0x277C,
- 0x277D, 0x277E, 0x277F, 0x24EB, 0x24EC, 0x24ED, 0x24EE, 0x24EF,
- 0x24F0, 0x24F1, 0x24F2, 0x24F3, 0x24F4, 0x2170, 0x2171, 0x2172,
- 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x217A,
- 0x217B, 0x24D0, 0x24D1, 0x24D2, 0x24D3, 0x24D4, 0x24D5, 0x24D6,
- 0x24D7, 0x24D8, 0x24D9, 0x24DA, 0x24DB, 0x24DC, 0x24DD, 0x24DE,
- 0x24DF, 0x24E0, 0x24E1, 0x24E2, 0x24E3, 0x24E4, 0x24E5, 0x24E6,
- 0x24E7, 0x24E8, 0x24E9, 0x32D0, 0x32D1, 0x32D2, 0x32D3, 0x32D4,
- 0x32D5, 0x32D6, 0x32D7, 0x32D8, 0x32D9, 0x32DA, 0x32DB, 0x32DC,
- 0x32DD, 0x32DE, 0x32DF, 0x32E0, 0x32E1, 0x32E2, 0x32E3, 0x32FA,
- 0x32E9, 0x32E5, 0x32ED, 0x32EC, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0x2051, 0x2042,
-};
static const unsigned short euc_to_utf8_AD[] = {
0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466,
0x2467, 0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D, 0x246E,
@@ -404,20 +250,6 @@ static const unsigned short euc_to_utf8_AD_mac[] = {
0x2252, 0x5927, 0x5C0F, 0x32A4, 0x32A5, 0x32A6, 0x32A7, 0x32A8,
0x533B, 0x8CA1, 0x512A, 0x52B4, 0x5370, 0x63A7, 0x79D8,
};
-static const unsigned short euc_to_utf8_AD_x0213[] = {
- 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466,
- 0x2467, 0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D, 0x246E,
- 0x246F, 0x2470, 0x2471, 0x2472, 0x2473, 0x2160, 0x2161, 0x2162,
- 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216A,
- 0x3349, 0x3314, 0x3322, 0x334D, 0x3318, 0x3327, 0x3303, 0x3336,
- 0x3351, 0x3357, 0x330D, 0x3326, 0x3323, 0x332B, 0x334A, 0x333B,
- 0x339C, 0x339D, 0x339E, 0x338E, 0x338F, 0x33C4, 0x33A1, 0x216B,
- 0, 0, 0, 0, 0, 0, 0, 0x337B,
- 0x301D, 0x301F, 0x2116, 0x33CD, 0x2121, 0x32A4, 0x32A5, 0x32A6,
- 0x32A7, 0x32A8, 0x3231, 0x3232, 0x3239, 0x337E, 0x337D, 0x337C,
- 0x2252, 0x2261, 0x222B, 0x222E, 0x2211, 0x221A, 0x22A5, 0x2220,
- 0x221F, 0x22BF, 0x2235, 0x2229, 0x222A, 0x2756, 0x261E,
-};
static const unsigned short euc_to_utf8_AE[] = {
0x3349, 0x3322, 0x334D, 0x3314, 0x3316, 0x3305, 0x3333,
0x334E, 0x3303, 0x3336, 0x3318, 0x3315, 0x3327, 0x3351, 0x334A,
@@ -432,20 +264,6 @@ static const unsigned short euc_to_utf8_AE[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0x337F, 0, 0,
};
-static const unsigned short euc_to_utf8_AE_x0213[] = {
- 0x4FF1, 0xD840 /*0xDC0B*/, 0x3402, 0x4E28, 0x4E2F, 0x4E30, 0x4E8D,
- 0x4EE1, 0x4EFD, 0x4EFF, 0x4F03, 0x4F0B, 0x4F60, 0x4F48, 0x4F49,
- 0x4F56, 0x4F5F, 0x4F6A, 0x4F6C, 0x4F7E, 0x4F8A, 0x4F94, 0x4F97,
- 0xFA30, 0x4FC9, 0x4FE0, 0x5001, 0x5002, 0x500E, 0x5018, 0x5027,
- 0x502E, 0x5040, 0x503B, 0x5041, 0x5094, 0x50CC, 0x50F2, 0x50D0,
- 0x50E6, 0xFA31, 0x5106, 0x5103, 0x510B, 0x511E, 0x5135, 0x514A,
- 0xFA32, 0x5155, 0x5157, 0x34B5, 0x519D, 0x51C3, 0x51CA, 0x51DE,
- 0x51E2, 0x51EE, 0x5201, 0x34DB, 0x5213, 0x5215, 0x5249, 0x5257,
- 0x5261, 0x5293, 0x52C8, 0xFA33, 0x52CC, 0x52D0, 0x52D6, 0x52DB,
- 0xFA34, 0x52F0, 0x52FB, 0x5300, 0x5307, 0x531C, 0xFA35, 0x5361,
- 0x5363, 0x537D, 0x5393, 0x539D, 0x53B2, 0x5412, 0x5427, 0x544D,
- 0x549C, 0x546B, 0x5474, 0x547F, 0x5488, 0x5496, 0x54A1,
-};
static const unsigned short euc_to_utf8_AF[] = {
0x222E, 0x221F, 0x22BF, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -460,20 +278,6 @@ static const unsigned short euc_to_utf8_AF[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short euc_to_utf8_AF_x0213[] = {
- 0x54A9, 0x54C6, 0x54FF, 0x550E, 0x552B, 0x5535, 0x5550,
- 0x555E, 0x5581, 0x5586, 0x558E, 0xFA36, 0x55AD, 0x55CE, 0xFA37,
- 0x5608, 0x560E, 0x563B, 0x5649, 0x5676, 0x5666, 0xFA38, 0x566F,
- 0x5671, 0x5672, 0x5699, 0x569E, 0x56A9, 0x56AC, 0x56B3, 0x56C9,
- 0x56CA, 0x570A, 0xD844 /*0xDE3D*/, 0x5721, 0x572F, 0x5733, 0x5734, 0x5770,
- 0x5777, 0x577C, 0x579C, 0xFA0F, 0xD844 /*0xDF1B*/, 0x57B8, 0x57C7, 0x57C8,
- 0x57CF, 0x57E4, 0x57ED, 0x57F5, 0x57F6, 0x57FF, 0x5809, 0xFA10,
- 0x5861, 0x5864, 0xFA39, 0x587C, 0x5889, 0x589E, 0xFA3A, 0x58A9,
- 0xD845 /*0xDC6E*/, 0x58D2, 0x58CE, 0x58D4, 0x58DA, 0x58E0, 0x58E9, 0x590C,
- 0x8641, 0x595D, 0x596D, 0x598B, 0x5992, 0x59A4, 0x59C3, 0x59D2,
- 0x59DD, 0x5A13, 0x5A23, 0x5A67, 0x5A6D, 0x5A77, 0x5A7E, 0x5A84,
- 0x5A9E, 0x5AA7, 0x5AC4, 0xD846 /*0xDCBD*/, 0x5B19, 0x5B25, 0x525D,
-};
static const unsigned short euc_to_utf8_B0[] = {
0x4E9C, 0x5516, 0x5A03, 0x963F, 0x54C0, 0x611B, 0x6328,
0x59F6, 0x9022, 0x8475, 0x831C, 0x7A50, 0x60AA, 0x63E1, 0x6E25,
@@ -922,20 +726,6 @@ static const unsigned short euc_to_utf8_CF[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short euc_to_utf8_CF_x0213[] = {
- 0x84EE, 0x9023, 0x932C, 0x5442, 0x9B6F, 0x6AD3, 0x7089,
- 0x8CC2, 0x8DEF, 0x9732, 0x52B4, 0x5A41, 0x5ECA, 0x5F04, 0x6717,
- 0x697C, 0x6994, 0x6D6A, 0x6F0F, 0x7262, 0x72FC, 0x7BED, 0x8001,
- 0x807E, 0x874B, 0x90CE, 0x516D, 0x9E93, 0x7984, 0x808B, 0x9332,
- 0x8AD6, 0x502D, 0x548C, 0x8A71, 0x6B6A, 0x8CC4, 0x8107, 0x60D1,
- 0x67A0, 0x9DF2, 0x4E99, 0x4E98, 0x9C10, 0x8A6B, 0x85C1, 0x8568,
- 0x6900, 0x6E7E, 0x7897, 0x8155, 0xD842 /*0xDF9F*/, 0x5B41, 0x5B56, 0x5B7D,
- 0x5B93, 0x5BD8, 0x5BEC, 0x5C12, 0x5C1E, 0x5C23, 0x5C2B, 0x378D,
- 0x5C62, 0xFA3B, 0xFA3C, 0xD845 /*0xDEB4*/, 0x5C7A, 0x5C8F, 0x5C9F, 0x5CA3,
- 0x5CAA, 0x5CBA, 0x5CCB, 0x5CD0, 0x5CD2, 0x5CF4, 0xD847 /*0xDE34*/, 0x37E2,
- 0x5D0D, 0x5D27, 0xFA11, 0x5D46, 0x5D47, 0x5D53, 0x5D4A, 0x5D6D,
- 0x5D81, 0x5DA0, 0x5DA4, 0x5DA7, 0x5DB8, 0x5DCB, 0x541E,
-};
static const unsigned short euc_to_utf8_D0[] = {
0x5F0C, 0x4E10, 0x4E15, 0x4E2A, 0x4E31, 0x4E36, 0x4E3C,
0x4E3F, 0x4E42, 0x4E56, 0x4E58, 0x4E82, 0x4E85, 0x8C6B, 0x4E8A,
@@ -1454,20 +1244,6 @@ static const unsigned short euc_to_utf8_F4[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short euc_to_utf8_F4_x0213[] = {
- 0x582F, 0x69C7, 0x9059, 0x7464, 0x51DC, 0x7199, 0x5653,
- 0x5DE2, 0x5E14, 0x5E18, 0x5E58, 0x5E5E, 0x5EBE, 0xF928, 0x5ECB,
- 0x5EF9, 0x5F00, 0x5F02, 0x5F07, 0x5F1D, 0x5F23, 0x5F34, 0x5F36,
- 0x5F3D, 0x5F40, 0x5F45, 0x5F54, 0x5F58, 0x5F64, 0x5F67, 0x5F7D,
- 0x5F89, 0x5F9C, 0x5FA7, 0x5FAF, 0x5FB5, 0x5FB7, 0x5FC9, 0x5FDE,
- 0x5FE1, 0x5FE9, 0x600D, 0x6014, 0x6018, 0x6033, 0x6035, 0x6047,
- 0xFA3D, 0x609D, 0x609E, 0x60CB, 0x60D4, 0x60D5, 0x60DD, 0x60F8,
- 0x611C, 0x612B, 0x6130, 0x6137, 0xFA3E, 0x618D, 0xFA3F, 0x61BC,
- 0x61B9, 0xFA40, 0x6222, 0x623E, 0x6243, 0x6256, 0x625A, 0x626F,
- 0x6285, 0x62C4, 0x62D6, 0x62FC, 0x630A, 0x6318, 0x6339, 0x6343,
- 0x6365, 0x637C, 0x63E5, 0x63ED, 0x63F5, 0x6410, 0x6414, 0x6422,
- 0x6479, 0x6451, 0x6460, 0x646D, 0x64CE, 0x64BE, 0x64BF,
-};
static const unsigned short euc_to_utf8_F5[] = {
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -1482,62 +1258,6 @@ static const unsigned short euc_to_utf8_F5[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short euc_to_utf8_F5_x0213[] = {
- 0x64C4, 0x64CA, 0x64D0, 0x64F7, 0x64FB, 0x6522, 0x6529,
- 0xFA41, 0x6567, 0x659D, 0xFA42, 0x6600, 0x6609, 0x6615, 0x661E,
- 0x663A, 0x6622, 0x6624, 0x662B, 0x6630, 0x6631, 0x6633, 0x66FB,
- 0x6648, 0x664C, 0xD84C /*0xDDC4*/, 0x6659, 0x665A, 0x6661, 0x6665, 0x6673,
- 0x6677, 0x6678, 0x668D, 0xFA43, 0x66A0, 0x66B2, 0x66BB, 0x66C6,
- 0x66C8, 0x3B22, 0x66DB, 0x66E8, 0x66FA, 0x6713, 0xF929, 0x6733,
- 0x6766, 0x6747, 0x6748, 0x677B, 0x6781, 0x6793, 0x6798, 0x679B,
- 0x67BB, 0x67F9, 0x67C0, 0x67D7, 0x67FC, 0x6801, 0x6852, 0x681D,
- 0x682C, 0x6831, 0x685B, 0x6872, 0x6875, 0xFA44, 0x68A3, 0x68A5,
- 0x68B2, 0x68C8, 0x68D0, 0x68E8, 0x68ED, 0x68F0, 0x68F1, 0x68FC,
- 0x690A, 0x6949, 0xD84D /*0xDDC4*/, 0x6935, 0x6942, 0x6957, 0x6963, 0x6964,
- 0x6968, 0x6980, 0xFA14, 0x69A5, 0x69AD, 0x69CF, 0x3BB6,
-};
-static const unsigned short euc_to_utf8_F6_x0213[] = {
- 0x3BC3, 0x69E2, 0x69E9, 0x69EA, 0x69F5, 0x69F6, 0x6A0F,
- 0x6A15, 0xD84D /*0xDF3F*/, 0x6A3B, 0x6A3E, 0x6A45, 0x6A50, 0x6A56, 0x6A5B,
- 0x6A6B, 0x6A73, 0xD84D /*0xDF63*/, 0x6A89, 0x6A94, 0x6A9D, 0x6A9E, 0x6AA5,
- 0x6AE4, 0x6AE7, 0x3C0F, 0xF91D, 0x6B1B, 0x6B1E, 0x6B2C, 0x6B35,
- 0x6B46, 0x6B56, 0x6B60, 0x6B65, 0x6B67, 0x6B77, 0x6B82, 0x6BA9,
- 0x6BAD, 0xF970, 0x6BCF, 0x6BD6, 0x6BD7, 0x6BFF, 0x6C05, 0x6C10,
- 0x6C33, 0x6C59, 0x6C5C, 0x6CAA, 0x6C74, 0x6C76, 0x6C85, 0x6C86,
- 0x6C98, 0x6C9C, 0x6CFB, 0x6CC6, 0x6CD4, 0x6CE0, 0x6CEB, 0x6CEE,
- 0xD84F /*0xDCFE*/, 0x6D04, 0x6D0E, 0x6D2E, 0x6D31, 0x6D39, 0x6D3F, 0x6D58,
- 0x6D65, 0xFA45, 0x6D82, 0x6D87, 0x6D89, 0x6D94, 0x6DAA, 0x6DAC,
- 0x6DBF, 0x6DC4, 0x6DD6, 0x6DDA, 0x6DDB, 0x6DDD, 0x6DFC, 0xFA46,
- 0x6E34, 0x6E44, 0x6E5C, 0x6E5E, 0x6EAB, 0x6EB1, 0x6EC1,
-};
-static const unsigned short euc_to_utf8_F7_x0213[] = {
- 0x6EC7, 0x6ECE, 0x6F10, 0x6F1A, 0xFA47, 0x6F2A, 0x6F2F,
- 0x6F33, 0x6F51, 0x6F59, 0x6F5E, 0x6F61, 0x6F62, 0x6F7E, 0x6F88,
- 0x6F8C, 0x6F8D, 0x6F94, 0x6FA0, 0x6FA7, 0x6FB6, 0x6FBC, 0x6FC7,
- 0x6FCA, 0x6FF9, 0x6FF0, 0x6FF5, 0x7005, 0x7006, 0x7028, 0x704A,
- 0x705D, 0x705E, 0x704E, 0x7064, 0x7075, 0x7085, 0x70A4, 0x70AB,
- 0x70B7, 0x70D4, 0x70D8, 0x70E4, 0x710F, 0x712B, 0x711E, 0x7120,
- 0x712E, 0x7130, 0x7146, 0x7147, 0x7151, 0xFA48, 0x7152, 0x715C,
- 0x7160, 0x7168, 0xFA15, 0x7185, 0x7187, 0x7192, 0x71C1, 0x71BA,
- 0x71C4, 0x71FE, 0x7200, 0x7215, 0x7255, 0x7256, 0x3E3F, 0x728D,
- 0x729B, 0x72BE, 0x72C0, 0x72FB, 0xD851 /*0xDFF1*/, 0x7327, 0x7328, 0xFA16,
- 0x7350, 0x7366, 0x737C, 0x7395, 0x739F, 0x73A0, 0x73A2, 0x73A6,
- 0x73AB, 0x73C9, 0x73CF, 0x73D6, 0x73D9, 0x73E3, 0x73E9,
-};
-static const unsigned short euc_to_utf8_F8_x0213[] = {
- 0x7407, 0x740A, 0x741A, 0x741B, 0xFA4A, 0x7426, 0x7428,
- 0x742A, 0x742B, 0x742C, 0x742E, 0x742F, 0x7430, 0x7444, 0x7446,
- 0x7447, 0x744B, 0x7457, 0x7462, 0x746B, 0x746D, 0x7486, 0x7487,
- 0x7489, 0x7498, 0x749C, 0x749F, 0x74A3, 0x7490, 0x74A6, 0x74A8,
- 0x74A9, 0x74B5, 0x74BF, 0x74C8, 0x74C9, 0x74DA, 0x74FF, 0x7501,
- 0x7517, 0x752F, 0x756F, 0x7579, 0x7592, 0x3F72, 0x75CE, 0x75E4,
- 0x7600, 0x7602, 0x7608, 0x7615, 0x7616, 0x7619, 0x761E, 0x762D,
- 0x7635, 0x7643, 0x764B, 0x7664, 0x7665, 0x766D, 0x766F, 0x7671,
- 0x7681, 0x769B, 0x769D, 0x769E, 0x76A6, 0x76AA, 0x76B6, 0x76C5,
- 0x76CC, 0x76CE, 0x76D4, 0x76E6, 0x76F1, 0x76FC, 0x770A, 0x7719,
- 0x7734, 0x7736, 0x7746, 0x774D, 0x774E, 0x775C, 0x775F, 0x7762,
- 0x777A, 0x7780, 0x7794, 0x77AA, 0x77E0, 0x782D, 0xD855 /*0xDC8E*/,
-};
static const unsigned short euc_to_utf8_F9[] = {
0x7E8A, 0x891C, 0x9348, 0x9288, 0x84DC, 0x4FC9, 0x70BB,
0x6631, 0x68C8, 0x92F9, 0x66FB, 0x5F45, 0x4E28, 0x4EE1, 0x4EFC,
@@ -1552,20 +1272,6 @@ static const unsigned short euc_to_utf8_F9[] = {
0x5CA6, 0x5CBA, 0x5CF5, 0x5D27, 0x5D53, 0xFA11, 0x5D42, 0x5D6D,
0x5DB8, 0x5DB9, 0x5DD0, 0x5F21, 0x5F34, 0x5F67, 0x5FB7,
};
-static const unsigned short euc_to_utf8_F9_x0213[] = {
- 0x7843, 0x784E, 0x784F, 0x7851, 0x7868, 0x786E, 0xFA4B,
- 0x78B0, 0xD855 /*0xDD0E*/, 0x78AD, 0x78E4, 0x78F2, 0x7900, 0x78F7, 0x791C,
- 0x792E, 0x7931, 0x7934, 0xFA4C, 0xFA4D, 0x7945, 0x7946, 0xFA4E,
- 0xFA4F, 0xFA50, 0x795C, 0xFA51, 0xFA19, 0xFA1A, 0x7979, 0xFA52,
- 0xFA53, 0xFA1B, 0x7998, 0x79B1, 0x79B8, 0x79C8, 0x79CA, 0xD855 /*0xDF71*/,
- 0x79D4, 0x79DE, 0x79EB, 0x79ED, 0x7A03, 0xFA54, 0x7A39, 0x7A5D,
- 0x7A6D, 0xFA55, 0x7A85, 0x7AA0, 0xD856 /*0xDDC4*/, 0x7AB3, 0x7ABB, 0x7ACE,
- 0x7AEB, 0x7AFD, 0x7B12, 0x7B2D, 0x7B3B, 0x7B47, 0x7B4E, 0x7B60,
- 0x7B6D, 0x7B6F, 0x7B72, 0x7B9E, 0xFA56, 0x7BD7, 0x7BD9, 0x7C01,
- 0x7C31, 0x7C1E, 0x7C20, 0x7C33, 0x7C36, 0x4264, 0xD857 /*0xDDA1*/, 0x7C59,
- 0x7C6D, 0x7C79, 0x7C8F, 0x7C94, 0x7CA0, 0x7CBC, 0x7CD5, 0x7CD9,
- 0x7CDD, 0x7D07, 0x7D08, 0x7D13, 0x7D1D, 0x7D23, 0x7D31,
-};
static const unsigned short euc_to_utf8_FA[] = {
0x5FDE, 0x605D, 0x6085, 0x608A, 0x60DE, 0x60D5, 0x6120,
0x60F2, 0x6111, 0x6137, 0x6130, 0x6198, 0x6213, 0x62A6, 0x63F5,
@@ -1580,20 +1286,6 @@ static const unsigned short euc_to_utf8_FA[] = {
0x6FF5, 0x7005, 0x7007, 0x7028, 0x7085, 0x70AB, 0x710F, 0x7104,
0x715C, 0x7146, 0x7147, 0xFA15, 0x71C1, 0x71FE, 0x72B1,
};
-static const unsigned short euc_to_utf8_FA_x0213[] = {
- 0x7D41, 0x7D48, 0x7D53, 0x7D5C, 0x7D7A, 0x7D83, 0x7D8B,
- 0x7DA0, 0x7DA6, 0x7DC2, 0x7DCC, 0x7DD6, 0x7DE3, 0xFA57, 0x7E28,
- 0x7E08, 0x7E11, 0x7E15, 0xFA59, 0x7E47, 0x7E52, 0x7E61, 0x7E8A,
- 0x7E8D, 0x7F47, 0xFA5A, 0x7F91, 0x7F97, 0x7FBF, 0x7FCE, 0x7FDB,
- 0x7FDF, 0x7FEC, 0x7FEE, 0x7FFA, 0xFA5B, 0x8014, 0x8026, 0x8035,
- 0x8037, 0x803C, 0x80CA, 0x80D7, 0x80E0, 0x80F3, 0x8118, 0x814A,
- 0x8160, 0x8167, 0x8168, 0x816D, 0x81BB, 0x81CA, 0x81CF, 0x81D7,
- 0xFA5C, 0x4453, 0x445B, 0x8260, 0x8274, 0xD85A /*0xDEFF*/, 0x828E, 0x82A1,
- 0x82A3, 0x82A4, 0x82A9, 0x82AE, 0x82B7, 0x82BE, 0x82BF, 0x82C6,
- 0x82D5, 0x82FD, 0x82FE, 0x8300, 0x8301, 0x8362, 0x8322, 0x832D,
- 0x833A, 0x8343, 0x8347, 0x8351, 0x8355, 0x837D, 0x8386, 0x8392,
- 0x8398, 0x83A7, 0x83A9, 0x83BF, 0x83C0, 0x83C7, 0x83CF,
-};
static const unsigned short euc_to_utf8_FB[] = {
0x72BE, 0x7324, 0xFA16, 0x7377, 0x73BD, 0x73C9, 0x73D6,
0x73E3, 0x73D2, 0x7407, 0x73F5, 0x7426, 0x742A, 0x7429, 0x742E,
@@ -1608,20 +1300,6 @@ static const unsigned short euc_to_utf8_FB[] = {
0x8B7F, 0x8CF0, 0x8CF4, 0x8D12, 0x8D76, 0xFA23, 0x8ECF, 0xFA24,
0xFA25, 0x9067, 0x90DE, 0xFA26, 0x9115, 0x9127, 0x91DA,
};
-static const unsigned short euc_to_utf8_FB_x0213[] = {
- 0x83D1, 0x83E1, 0x83EA, 0x8401, 0x8406, 0x840A, 0xFA5F,
- 0x8448, 0x845F, 0x8470, 0x8473, 0x8485, 0x849E, 0x84AF, 0x84B4,
- 0x84BA, 0x84C0, 0x84C2, 0xD85B /*0xDE40*/, 0x8532, 0x851E, 0x8523, 0x852F,
- 0x8559, 0x8564, 0xFA1F, 0x85AD, 0x857A, 0x858C, 0x858F, 0x85A2,
- 0x85B0, 0x85CB, 0x85CE, 0x85ED, 0x8612, 0x85FF, 0x8604, 0x8605,
- 0x8610, 0xD85C /*0xDCF4*/, 0x8618, 0x8629, 0x8638, 0x8657, 0x865B, 0xF936,
- 0x8662, 0x459D, 0x866C, 0x8675, 0x8698, 0x86B8, 0x86FA, 0x86FC,
- 0x86FD, 0x870B, 0x8771, 0x8787, 0x8788, 0x87AC, 0x87AD, 0x87B5,
- 0x45EA, 0x87D6, 0x87EC, 0x8806, 0x880A, 0x8810, 0x8814, 0x881F,
- 0x8898, 0x88AA, 0x88CA, 0x88CE, 0xD85D /*0xDE84*/, 0x88F5, 0x891C, 0xFA60,
- 0x8918, 0x8919, 0x891A, 0x8927, 0x8930, 0x8932, 0x8939, 0x8940,
- 0x8994, 0xFA61, 0x89D4, 0x89E5, 0x89F6, 0x8A12, 0x8A15,
-};
static const unsigned short euc_to_utf8_FC[] = {
0x91D7, 0x91DE, 0x91ED, 0x91EE, 0x91E4, 0x91E5, 0x9206,
0x9210, 0x920A, 0x923A, 0x9240, 0x923C, 0x924E, 0x9259, 0x9251,
@@ -1652,413 +1330,6 @@ static const unsigned short euc_to_utf8_FC_ms[] = {
0, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176,
0x2177, 0x2178, 0x2179, 0xFFE2, 0xFFE4, 0xFF07, 0xFF02,
};
-static const unsigned short euc_to_utf8_FC_x0213[] = {
- 0x8A22, 0x8A37, 0x8A47, 0x8A4E, 0x8A5D, 0x8A61, 0x8A75,
- 0x8A79, 0x8AA7, 0x8AD0, 0x8ADF, 0x8AF4, 0x8AF6, 0xFA22, 0xFA62,
- 0xFA63, 0x8B46, 0x8B54, 0x8B59, 0x8B69, 0x8B9D, 0x8C49, 0x8C68,
- 0xFA64, 0x8CE1, 0x8CF4, 0x8CF8, 0x8CFE, 0xFA65, 0x8D12, 0x8D1B,
- 0x8DAF, 0x8DCE, 0x8DD1, 0x8DD7, 0x8E20, 0x8E23, 0x8E3D, 0x8E70,
- 0x8E7B, 0xD860 /*0xDE77*/, 0x8EC0, 0x4844, 0x8EFA, 0x8F1E, 0x8F2D, 0x8F36,
- 0x8F54, 0xD860 /*0xDFCD*/, 0x8FA6, 0x8FB5, 0x8FE4, 0x8FE8, 0x8FEE, 0x9008,
- 0x902D, 0xFA67, 0x9088, 0x9095, 0x9097, 0x9099, 0x909B, 0x90A2,
- 0x90B3, 0x90BE, 0x90C4, 0x90C5, 0x90C7, 0x90D7, 0x90DD, 0x90DE,
- 0x90EF, 0x90F4, 0xFA26, 0x9114, 0x9115, 0x9116, 0x9122, 0x9123,
- 0x9127, 0x912F, 0x9131, 0x9134, 0x913D, 0x9148, 0x915B, 0x9183,
- 0x919E, 0x91AC, 0x91B1, 0x91BC, 0x91D7, 0x91FB, 0x91E4,
-};
-static const unsigned short euc_to_utf8_FD_x0213[] = {
- 0x91E5, 0x91ED, 0x91F1, 0x9207, 0x9210, 0x9238, 0x9239,
- 0x923A, 0x923C, 0x9240, 0x9243, 0x924F, 0x9278, 0x9288, 0x92C2,
- 0x92CB, 0x92CC, 0x92D3, 0x92E0, 0x92FF, 0x9304, 0x931F, 0x9321,
- 0x9325, 0x9348, 0x9349, 0x934A, 0x9364, 0x9365, 0x936A, 0x9370,
- 0x939B, 0x93A3, 0x93BA, 0x93C6, 0x93DE, 0x93DF, 0x9404, 0x93FD,
- 0x9433, 0x944A, 0x9463, 0x946B, 0x9471, 0x9472, 0x958E, 0x959F,
- 0x95A6, 0x95A9, 0x95AC, 0x95B6, 0x95BD, 0x95CB, 0x95D0, 0x95D3,
- 0x49B0, 0x95DA, 0x95DE, 0x9658, 0x9684, 0xF9DC, 0x969D, 0x96A4,
- 0x96A5, 0x96D2, 0x96DE, 0xFA68, 0x96E9, 0x96EF, 0x9733, 0x973B,
- 0x974D, 0x974E, 0x974F, 0x975A, 0x976E, 0x9773, 0x9795, 0x97AE,
- 0x97BA, 0x97C1, 0x97C9, 0x97DE, 0x97DB, 0x97F4, 0xFA69, 0x980A,
- 0x981E, 0x982B, 0x9830, 0xFA6A, 0x9852, 0x9853, 0x9856,
-};
-static const unsigned short euc_to_utf8_FE_x0213[] = {
- 0x9857, 0x9859, 0x985A, 0xF9D0, 0x9865, 0x986C, 0x98BA,
- 0x98C8, 0x98E7, 0x9958, 0x999E, 0x9A02, 0x9A03, 0x9A24, 0x9A2D,
- 0x9A2E, 0x9A38, 0x9A4A, 0x9A4E, 0x9A52, 0x9AB6, 0x9AC1, 0x9AC3,
- 0x9ACE, 0x9AD6, 0x9AF9, 0x9B02, 0x9B08, 0x9B20, 0x4C17, 0x9B2D,
- 0x9B5E, 0x9B79, 0x9B66, 0x9B72, 0x9B75, 0x9B84, 0x9B8A, 0x9B8F,
- 0x9B9E, 0x9BA7, 0x9BC1, 0x9BCE, 0x9BE5, 0x9BF8, 0x9BFD, 0x9C00,
- 0x9C23, 0x9C41, 0x9C4F, 0x9C50, 0x9C53, 0x9C63, 0x9C65, 0x9C77,
- 0x9D1D, 0x9D1E, 0x9D43, 0x9D47, 0x9D52, 0x9D63, 0x9D70, 0x9D7C,
- 0x9D8A, 0x9D96, 0x9DC0, 0x9DAC, 0x9DBC, 0x9DD7, 0xD868 /*0xDD90*/, 0x9DE7,
- 0x9E07, 0x9E15, 0x9E7C, 0x9E9E, 0x9EA4, 0x9EAC, 0x9EAF, 0x9EB4,
- 0x9EB5, 0x9EC3, 0x9ED1, 0x9F10, 0x9F39, 0x9F57, 0x9F90, 0x9F94,
- 0x9F97, 0x9FA2, 0x59F8, 0x5C5B, 0x5E77, 0x7626, 0x7E6B,
-};
-
-static const unsigned short euc_to_utf8_8FA1_x0213[] = {
- 0xD840 /*0xDC89*/, 0x4E02, 0x4E0F, 0x4E12, 0x4E29, 0x4E2B, 0x4E2E,
- 0x4E40, 0x4E47, 0x4E48, 0xD840 /*0xDCA2*/, 0x4E51, 0x3406, 0xD840 /*0xDCA4*/, 0x4E5A,
- 0x4E69, 0x4E9D, 0x342C, 0x342E, 0x4EB9, 0x4EBB, 0xD840 /*0xDDA2*/, 0x4EBC,
- 0x4EC3, 0x4EC8, 0x4ED0, 0x4EEB, 0x4EDA, 0x4EF1, 0x4EF5, 0x4F00,
- 0x4F16, 0x4F64, 0x4F37, 0x4F3E, 0x4F54, 0x4F58, 0xD840 /*0xDE13*/, 0x4F77,
- 0x4F78, 0x4F7A, 0x4F7D, 0x4F82, 0x4F85, 0x4F92, 0x4F9A, 0x4FE6,
- 0x4FB2, 0x4FBE, 0x4FC5, 0x4FCB, 0x4FCF, 0x4FD2, 0x346A, 0x4FF2,
- 0x5000, 0x5010, 0x5013, 0x501C, 0x501E, 0x5022, 0x3468, 0x5042,
- 0x5046, 0x504E, 0x5053, 0x5057, 0x5063, 0x5066, 0x506A, 0x5070,
- 0x50A3, 0x5088, 0x5092, 0x5093, 0x5095, 0x5096, 0x509C, 0x50AA,
- 0xD840 /*0xDF2B*/, 0x50B1, 0x50BA, 0x50BB, 0x50C4, 0x50C7, 0x50F3, 0xD840 /*0xDF81*/,
- 0x50CE, 0xD840 /*0xDF71*/, 0x50D4, 0x50D9, 0x50E1, 0x50E9, 0x3492,
-};
-static const unsigned short euc_to_utf8_8FA3_x0213[] = {
- 0x5108, 0xD840 /*0xDFF9*/, 0x5117, 0x511B, 0xD841 /*0xDC4A*/, 0x5160, 0xD841 /*0xDD09*/,
- 0x5173, 0x5183, 0x518B, 0x34BC, 0x5198, 0x51A3, 0x51AD, 0x34C7,
- 0x51BC, 0xD841 /*0xDDD6*/, 0xD841 /*0xDE28*/, 0x51F3, 0x51F4, 0x5202, 0x5212, 0x5216,
- 0xD841 /*0xDF4F*/, 0x5255, 0x525C, 0x526C, 0x5277, 0x5284, 0x5282, 0xD842 /*0xDC07*/,
- 0x5298, 0xD842 /*0xDC3A*/, 0x52A4, 0x52A6, 0x52AF, 0x52BA, 0x52BB, 0x52CA,
- 0x351F, 0x52D1, 0xD842 /*0xDCB9*/, 0x52F7, 0x530A, 0x530B, 0x5324, 0x5335,
- 0x533E, 0x5342, 0xD842 /*0xDD7C*/, 0xD842 /*0xDD9D*/, 0x5367, 0x536C, 0x537A, 0x53A4,
- 0x53B4, 0xD842 /*0xDED3*/, 0x53B7, 0x53C0, 0xD842 /*0xDF1D*/, 0x355D, 0x355E, 0x53D5,
- 0x53DA, 0x3563, 0x53F4, 0x53F5, 0x5455, 0x5424, 0x5428, 0x356E,
- 0x5443, 0x5462, 0x5466, 0x546C, 0x548A, 0x548D, 0x5495, 0x54A0,
- 0x54A6, 0x54AD, 0x54AE, 0x54B7, 0x54BA, 0x54BF, 0x54C3, 0xD843 /*0xDD45*/,
- 0x54EC, 0x54EF, 0x54F1, 0x54F3, 0x5500, 0x5501, 0x5509,
-};
-static const unsigned short euc_to_utf8_8FA4_x0213[] = {
- 0x553C, 0x5541, 0x35A6, 0x5547, 0x554A, 0x35A8, 0x5560,
- 0x5561, 0x5564, 0xD843 /*0xDDE1*/, 0x557D, 0x5582, 0x5588, 0x5591, 0x35C5,
- 0x55D2, 0xD843 /*0xDE95*/, 0xD843 /*0xDE6D*/, 0x55BF, 0x55C9, 0x55CC, 0x55D1, 0x55DD,
- 0x35DA, 0x55E2, 0xD843 /*0xDE64*/, 0x55E9, 0x5628, 0xD843 /*0xDF5F*/, 0x5607, 0x5610,
- 0x5630, 0x5637, 0x35F4, 0x563D, 0x563F, 0x5640, 0x5647, 0x565E,
- 0x5660, 0x566D, 0x3605, 0x5688, 0x568C, 0x5695, 0x569A, 0x569D,
- 0x56A8, 0x56AD, 0x56B2, 0x56C5, 0x56CD, 0x56DF, 0x56E8, 0x56F6,
- 0x56F7, 0xD844 /*0xDE01*/, 0x5715, 0x5723, 0xD844 /*0xDE55*/, 0x5729, 0xD844 /*0xDE7B*/, 0x5745,
- 0x5746, 0x574C, 0x574D, 0xD844 /*0xDE74*/, 0x5768, 0x576F, 0x5773, 0x5774,
- 0x5775, 0x577B, 0xD844 /*0xDEE4*/, 0xD844 /*0xDED7*/, 0x57AC, 0x579A, 0x579D, 0x579E,
- 0x57A8, 0x57D7, 0xD844 /*0xDEFD*/, 0x57CC, 0xD844 /*0xDF36*/, 0xD844 /*0xDF44*/, 0x57DE, 0x57E6,
- 0x57F0, 0x364A, 0x57F8, 0x57FB, 0x57FD, 0x5804, 0x581E,
-};
-static const unsigned short euc_to_utf8_8FA5_x0213[] = {
- 0x5820, 0x5827, 0x5832, 0x5839, 0xD844 /*0xDFC4*/, 0x5849, 0x584C,
- 0x5867, 0x588A, 0x588B, 0x588D, 0x588F, 0x5890, 0x5894, 0x589D,
- 0x58AA, 0x58B1, 0xD845 /*0xDC6D*/, 0x58C3, 0x58CD, 0x58E2, 0x58F3, 0x58F4,
- 0x5905, 0x5906, 0x590B, 0x590D, 0x5914, 0x5924, 0xD845 /*0xDDD7*/, 0x3691,
- 0x593D, 0x3699, 0x5946, 0x3696, 0xD85B /*0xDC29*/, 0x595B, 0x595F, 0xD845 /*0xDE47*/,
- 0x5975, 0x5976, 0x597C, 0x599F, 0x59AE, 0x59BC, 0x59C8, 0x59CD,
- 0x59DE, 0x59E3, 0x59E4, 0x59E7, 0x59EE, 0xD845 /*0xDF06*/, 0xD845 /*0xDF42*/, 0x36CF,
- 0x5A0C, 0x5A0D, 0x5A17, 0x5A27, 0x5A2D, 0x5A55, 0x5A65, 0x5A7A,
- 0x5A8B, 0x5A9C, 0x5A9F, 0x5AA0, 0x5AA2, 0x5AB1, 0x5AB3, 0x5AB5,
- 0x5ABA, 0x5ABF, 0x5ADA, 0x5ADC, 0x5AE0, 0x5AE5, 0x5AF0, 0x5AEE,
- 0x5AF5, 0x5B00, 0x5B08, 0x5B17, 0x5B34, 0x5B2D, 0x5B4C, 0x5B52,
- 0x5B68, 0x5B6F, 0x5B7C, 0x5B7F, 0x5B81, 0x5B84, 0xD846 /*0xDDC3*/,
-};
-static const unsigned short euc_to_utf8_8FA8_x0213[] = {
- 0x5B96, 0x5BAC, 0x3761, 0x5BC0, 0x3762, 0x5BCE, 0x5BD6,
- 0x376C, 0x376B, 0x5BF1, 0x5BFD, 0x3775, 0x5C03, 0x5C29, 0x5C30,
- 0xD847 /*0xDC56*/, 0x5C5F, 0x5C63, 0x5C67, 0x5C68, 0x5C69, 0x5C70, 0xD847 /*0xDD2D*/,
- 0xD847 /*0xDD45*/, 0x5C7C, 0xD847 /*0xDD78*/, 0xD847 /*0xDD62*/, 0x5C88, 0x5C8A, 0x37C1, 0xD847 /*0xDDA1*/,
- 0xD847 /*0xDD9C*/, 0x5CA0, 0x5CA2, 0x5CA6, 0x5CA7, 0xD847 /*0xDD92*/, 0x5CAD, 0x5CB5,
- 0xD847 /*0xDDB7*/, 0x5CC9, 0xD847 /*0xDDE0*/, 0xD847 /*0xDE33*/, 0x5D06, 0x5D10, 0x5D2B, 0x5D1D,
- 0x5D20, 0x5D24, 0x5D26, 0x5D31, 0x5D39, 0x5D42, 0x37E8, 0x5D61,
- 0x5D6A, 0x37F4, 0x5D70, 0xD847 /*0xDF1E*/, 0x37FD, 0x5D88, 0x3800, 0x5D92,
- 0x5D94, 0x5D97, 0x5D99, 0x5DB0, 0x5DB2, 0x5DB4, 0xD847 /*0xDF76*/, 0x5DB9,
- 0x5DD1, 0x5DD7, 0x5DD8, 0x5DE0, 0xD847 /*0xDFFA*/, 0x5DE4, 0x5DE9, 0x382F,
- 0x5E00, 0x3836, 0x5E12, 0x5E15, 0x3840, 0x5E1F, 0x5E2E, 0x5E3E,
- 0x5E49, 0x385C, 0x5E56, 0x3861, 0x5E6B, 0x5E6C, 0x5E6D,
-};
-static const unsigned short euc_to_utf8_8FAC_x0213[] = {
- 0x5E6E, 0xD848 /*0xDD7B*/, 0x5EA5, 0x5EAA, 0x5EAC, 0x5EB9, 0x5EBF,
- 0x5EC6, 0x5ED2, 0x5ED9, 0xD848 /*0xDF1E*/, 0x5EFD, 0x5F08, 0x5F0E, 0x5F1C,
- 0xD848 /*0xDFAD*/, 0x5F1E, 0x5F47, 0x5F63, 0x5F72, 0x5F7E, 0x5F8F, 0x5FA2,
- 0x5FA4, 0x5FB8, 0x5FC4, 0x38FA, 0x5FC7, 0x5FCB, 0x5FD2, 0x5FD3,
- 0x5FD4, 0x5FE2, 0x5FEE, 0x5FEF, 0x5FF3, 0x5FFC, 0x3917, 0x6017,
- 0x6022, 0x6024, 0x391A, 0x604C, 0x607F, 0x608A, 0x6095, 0x60A8,
- 0xD849 /*0xDEF3*/, 0x60B0, 0x60B1, 0x60BE, 0x60C8, 0x60D9, 0x60DB, 0x60EE,
- 0x60F2, 0x60F5, 0x6110, 0x6112, 0x6113, 0x6119, 0x611E, 0x613A,
- 0x396F, 0x6141, 0x6146, 0x6160, 0x617C, 0xD84A /*0xDC5B*/, 0x6192, 0x6193,
- 0x6197, 0x6198, 0x61A5, 0x61A8, 0x61AD, 0xD84A /*0xDCAB*/, 0x61D5, 0x61DD,
- 0x61DF, 0x61F5, 0xD84A /*0xDD8F*/, 0x6215, 0x6223, 0x6229, 0x6246, 0x624C,
- 0x6251, 0x6252, 0x6261, 0x6264, 0x627B, 0x626D, 0x6273,
-};
-static const unsigned short euc_to_utf8_8FAD_x0213[] = {
- 0x6299, 0x62A6, 0x62D5, 0xD84A /*0xDEB8*/, 0x62FD, 0x6303, 0x630D,
- 0x6310, 0xD84A /*0xDF4F*/, 0xD84A /*0xDF50*/, 0x6332, 0x6335, 0x633B, 0x633C, 0x6341,
- 0x6344, 0x634E, 0xD84A /*0xDF46*/, 0x6359, 0xD84B /*0xDC1D*/, 0xD84A /*0xDFA6*/, 0x636C, 0x6384,
- 0x6399, 0xD84B /*0xDC24*/, 0x6394, 0x63BD, 0x63F7, 0x63D4, 0x63D5, 0x63DC,
- 0x63E0, 0x63EB, 0x63EC, 0x63F2, 0x6409, 0x641E, 0x6425, 0x6429,
- 0x642F, 0x645A, 0x645B, 0x645D, 0x6473, 0x647D, 0x6487, 0x6491,
- 0x649D, 0x649F, 0x64CB, 0x64CC, 0x64D5, 0x64D7, 0xD84B /*0xDDE1*/, 0x64E4,
- 0x64E5, 0x64FF, 0x6504, 0x3A6E, 0x650F, 0x6514, 0x6516, 0x3A73,
- 0x651E, 0x6532, 0x6544, 0x6554, 0x656B, 0x657A, 0x6581, 0x6584,
- 0x6585, 0x658A, 0x65B2, 0x65B5, 0x65B8, 0x65BF, 0x65C2, 0x65C9,
- 0x65D4, 0x3AD6, 0x65F2, 0x65F9, 0x65FC, 0x6604, 0x6608, 0x6621,
- 0x662A, 0x6645, 0x6651, 0x664E, 0x3AEA, 0xD84C /*0xDDC3*/, 0x6657,
-};
-static const unsigned short euc_to_utf8_8FAE_x0213[] = {
- 0x665B, 0x6663, 0xD84C /*0xDDF5*/, 0xD84C /*0xDDB6*/, 0x666A, 0x666B, 0x666C,
- 0x666D, 0x667B, 0x6680, 0x6690, 0x6692, 0x6699, 0x3B0E, 0x66AD,
- 0x66B1, 0x66B5, 0x3B1A, 0x66BF, 0x3B1C, 0x66EC, 0x3AD7, 0x6701,
- 0x6705, 0x6712, 0xD84C /*0xDF72*/, 0x6719, 0xD84C /*0xDFD3*/, 0xD84C /*0xDFD2*/, 0x674C, 0x674D,
- 0x6754, 0x675D, 0xD84C /*0xDFD0*/, 0xD84C /*0xDFE4*/, 0xD84C /*0xDFD5*/, 0x6774, 0x6776, 0xD84C /*0xDFDA*/,
- 0x6792, 0xD84C /*0xDFDF*/, 0x8363, 0x6810, 0x67B0, 0x67B2, 0x67C3, 0x67C8,
- 0x67D2, 0x67D9, 0x67DB, 0x67F0, 0x67F7, 0xD84D /*0xDC4A*/, 0xD84D /*0xDC51*/, 0xD84D /*0xDC4B*/,
- 0x6818, 0x681F, 0x682D, 0xD84D /*0xDC65*/, 0x6833, 0x683B, 0x683E, 0x6844,
- 0x6845, 0x6849, 0x684C, 0x6855, 0x6857, 0x3B77, 0x686B, 0x686E,
- 0x687A, 0x687C, 0x6882, 0x6890, 0x6896, 0x3B6D, 0x6898, 0x6899,
- 0x689A, 0x689C, 0x68AA, 0x68AB, 0x68B4, 0x68BB, 0x68FB, 0xD84D /*0xDCE4*/,
- 0xD84D /*0xDD5A*/, 0xFA13, 0x68C3, 0x68C5, 0x68CC, 0x68CF, 0x68D6,
-};
-static const unsigned short euc_to_utf8_8FAF_x0213[] = {
- 0x68D9, 0x68E4, 0x68E5, 0x68EC, 0x68F7, 0x6903, 0x6907,
- 0x3B87, 0x3B88, 0xD84D /*0xDD94*/, 0x693B, 0x3B8D, 0x6946, 0x6969, 0x696C,
- 0x6972, 0x697A, 0x697F, 0x6992, 0x3BA4, 0x6996, 0x6998, 0x69A6,
- 0x69B0, 0x69B7, 0x69BA, 0x69BC, 0x69C0, 0x69D1, 0x69D6, 0xD84D /*0xDE39*/,
- 0xD84D /*0xDE47*/, 0x6A30, 0xD84D /*0xDE38*/, 0xD84D /*0xDE3A*/, 0x69E3, 0x69EE, 0x69EF, 0x69F3,
- 0x3BCD, 0x69F4, 0x69FE, 0x6A11, 0x6A1A, 0x6A1D, 0xD84D /*0xDF1C*/, 0x6A32,
- 0x6A33, 0x6A34, 0x6A3F, 0x6A46, 0x6A49, 0x6A7A, 0x6A4E, 0x6A52,
- 0x6A64, 0xD84D /*0xDF0C*/, 0x6A7E, 0x6A83, 0x6A8B, 0x3BF0, 0x6A91, 0x6A9F,
- 0x6AA1, 0xD84D /*0xDF64*/, 0x6AAB, 0x6ABD, 0x6AC6, 0x6AD4, 0x6AD0, 0x6ADC,
- 0x6ADD, 0xD84D /*0xDFFF*/, 0xD84D /*0xDFE7*/, 0x6AEC, 0x6AF1, 0x6AF2, 0x6AF3, 0x6AFD,
- 0xD84E /*0xDC24*/, 0x6B0B, 0x6B0F, 0x6B10, 0x6B11, 0xD84E /*0xDC3D*/, 0x6B17, 0x3C26,
- 0x6B2F, 0x6B4A, 0x6B58, 0x6B6C, 0x6B75, 0x6B7A, 0x6B81,
-};
-static const unsigned short euc_to_utf8_8FEE_x0213[] = {
- 0x6B9B, 0x6BAE, 0xD84E /*0xDE98*/, 0x6BBD, 0x6BBE, 0x6BC7, 0x6BC8,
- 0x6BC9, 0x6BDA, 0x6BE6, 0x6BE7, 0x6BEE, 0x6BF1, 0x6C02, 0x6C0A,
- 0x6C0E, 0x6C35, 0x6C36, 0x6C3A, 0xD84F /*0xDC7F*/, 0x6C3F, 0x6C4D, 0x6C5B,
- 0x6C6D, 0x6C84, 0x6C89, 0x3CC3, 0x6C94, 0x6C95, 0x6C97, 0x6CAD,
- 0x6CC2, 0x6CD0, 0x3CD2, 0x6CD6, 0x6CDA, 0x6CDC, 0x6CE9, 0x6CEC,
- 0x6CED, 0xD84F /*0xDD00*/, 0x6D00, 0x6D0A, 0x6D24, 0x6D26, 0x6D27, 0x6C67,
- 0x6D2F, 0x6D3C, 0x6D5B, 0x6D5E, 0x6D60, 0x6D70, 0x6D80, 0x6D81,
- 0x6D8A, 0x6D8D, 0x6D91, 0x6D98, 0xD84F /*0xDD40*/, 0x6E17, 0xD84F /*0xDDFA*/, 0xD84F /*0xDDF9*/,
- 0xD84F /*0xDDD3*/, 0x6DAB, 0x6DAE, 0x6DB4, 0x6DC2, 0x6D34, 0x6DC8, 0x6DCE,
- 0x6DCF, 0x6DD0, 0x6DDF, 0x6DE9, 0x6DF6, 0x6E36, 0x6E1E, 0x6E22,
- 0x6E27, 0x3D11, 0x6E32, 0x6E3C, 0x6E48, 0x6E49, 0x6E4B, 0x6E4C,
- 0x6E4F, 0x6E51, 0x6E53, 0x6E54, 0x6E57, 0x6E63, 0x3D1E,
-};
-static const unsigned short euc_to_utf8_8FEF_x0213[] = {
- 0x6E93, 0x6EA7, 0x6EB4, 0x6EBF, 0x6EC3, 0x6ECA, 0x6ED9,
- 0x6F35, 0x6EEB, 0x6EF9, 0x6EFB, 0x6F0A, 0x6F0C, 0x6F18, 0x6F25,
- 0x6F36, 0x6F3C, 0xD84F /*0xDF7E*/, 0x6F52, 0x6F57, 0x6F5A, 0x6F60, 0x6F68,
- 0x6F98, 0x6F7D, 0x6F90, 0x6F96, 0x6FBE, 0x6F9F, 0x6FA5, 0x6FAF,
- 0x3D64, 0x6FB5, 0x6FC8, 0x6FC9, 0x6FDA, 0x6FDE, 0x6FE9, 0xD850 /*0xDC96*/,
- 0x6FFC, 0x7000, 0x7007, 0x700A, 0x7023, 0xD850 /*0xDD03*/, 0x7039, 0x703A,
- 0x703C, 0x7043, 0x7047, 0x704B, 0x3D9A, 0x7054, 0x7065, 0x7069,
- 0x706C, 0x706E, 0x7076, 0x707E, 0x7081, 0x7086, 0x7095, 0x7097,
- 0x70BB, 0xD850 /*0xDDC6*/, 0x709F, 0x70B1, 0xD850 /*0xDDFE*/, 0x70EC, 0x70CA, 0x70D1,
- 0x70D3, 0x70DC, 0x7103, 0x7104, 0x7106, 0x7107, 0x7108, 0x710C,
- 0x3DC0, 0x712F, 0x7131, 0x7150, 0x714A, 0x7153, 0x715E, 0x3DD4,
- 0x7196, 0x7180, 0x719B, 0x71A0, 0x71A2, 0x71AE, 0x71AF,
-};
-static const unsigned short euc_to_utf8_8FF0_x0213[] = {
- 0x71B3, 0xD850 /*0xDFBC*/, 0x71CB, 0x71D3, 0x71D9, 0x71DC, 0x7207,
- 0x3E05, 0xFA49, 0x722B, 0x7234, 0x7238, 0x7239, 0x4E2C, 0x7242,
- 0x7253, 0x7257, 0x7263, 0xD851 /*0xDE29*/, 0x726E, 0x726F, 0x7278, 0x727F,
- 0x728E, 0xD851 /*0xDEA5*/, 0x72AD, 0x72AE, 0x72B0, 0x72B1, 0x72C1, 0x3E60,
- 0x72CC, 0x3E66, 0x3E68, 0x72F3, 0x72FA, 0x7307, 0x7312, 0x7318,
- 0x7319, 0x3E83, 0x7339, 0x732C, 0x7331, 0x7333, 0x733D, 0x7352,
- 0x3E94, 0x736B, 0x736C, 0xD852 /*0xDC96*/, 0x736E, 0x736F, 0x7371, 0x7377,
- 0x7381, 0x7385, 0x738A, 0x7394, 0x7398, 0x739C, 0x739E, 0x73A5,
- 0x73A8, 0x73B5, 0x73B7, 0x73B9, 0x73BC, 0x73BF, 0x73C5, 0x73CB,
- 0x73E1, 0x73E7, 0x73F9, 0x7413, 0x73FA, 0x7401, 0x7424, 0x7431,
- 0x7439, 0x7453, 0x7440, 0x7443, 0x744D, 0x7452, 0x745D, 0x7471,
- 0x7481, 0x7485, 0x7488, 0xD852 /*0xDE4D*/, 0x7492, 0x7497, 0x7499,
-};
-static const unsigned short euc_to_utf8_8FF1_x0213[] = {
- 0x74A0, 0x74A1, 0x74A5, 0x74AA, 0x74AB, 0x74B9, 0x74BB,
- 0x74BA, 0x74D6, 0x74D8, 0x74DE, 0x74EF, 0x74EB, 0xD852 /*0xDF56*/, 0x74FA,
- 0xD852 /*0xDF6F*/, 0x7520, 0x7524, 0x752A, 0x3F57, 0xD853 /*0xDC16*/, 0x753D, 0x753E,
- 0x7540, 0x7548, 0x754E, 0x7550, 0x7552, 0x756C, 0x7572, 0x7571,
- 0x757A, 0x757D, 0x757E, 0x7581, 0xD853 /*0xDD14*/, 0x758C, 0x3F75, 0x75A2,
- 0x3F77, 0x75B0, 0x75B7, 0x75BF, 0x75C0, 0x75C6, 0x75CF, 0x75D3,
- 0x75DD, 0x75DF, 0x75E0, 0x75E7, 0x75EC, 0x75EE, 0x75F1, 0x75F9,
- 0x7603, 0x7618, 0x7607, 0x760F, 0x3FAE, 0xD853 /*0xDE0E*/, 0x7613, 0x761B,
- 0x761C, 0xD853 /*0xDE37*/, 0x7625, 0x7628, 0x763C, 0x7633, 0xD853 /*0xDE6A*/, 0x3FC9,
- 0x7641, 0xD853 /*0xDE8B*/, 0x7649, 0x7655, 0x3FD7, 0x766E, 0x7695, 0x769C,
- 0x76A1, 0x76A0, 0x76A7, 0x76A8, 0x76AF, 0xD854 /*0xDC4A*/, 0x76C9, 0xD854 /*0xDC55*/,
- 0x76E8, 0x76EC, 0xD854 /*0xDD22*/, 0x7717, 0x771A, 0x772D, 0x7735,
-};
-static const unsigned short euc_to_utf8_8FF2_x0213[] = {
- 0xD854 /*0xDDA9*/, 0x4039, 0xD854 /*0xDDE5*/, 0xD854 /*0xDDCD*/, 0x7758, 0x7760, 0x776A,
- 0xD854 /*0xDE1E*/, 0x7772, 0x777C, 0x777D, 0xD854 /*0xDE4C*/, 0x4058, 0x779A, 0x779F,
- 0x77A2, 0x77A4, 0x77A9, 0x77DE, 0x77DF, 0x77E4, 0x77E6, 0x77EA,
- 0x77EC, 0x4093, 0x77F0, 0x77F4, 0x77FB, 0xD855 /*0xDC2E*/, 0x7805, 0x7806,
- 0x7809, 0x780D, 0x7819, 0x7821, 0x782C, 0x7847, 0x7864, 0x786A,
- 0xD855 /*0xDCD9*/, 0x788A, 0x7894, 0x78A4, 0x789D, 0x789E, 0x789F, 0x78BB,
- 0x78C8, 0x78CC, 0x78CE, 0x78D5, 0x78E0, 0x78E1, 0x78E6, 0x78F9,
- 0x78FA, 0x78FB, 0x78FE, 0xD855 /*0xDDA7*/, 0x7910, 0x791B, 0x7930, 0x7925,
- 0x793B, 0x794A, 0x7958, 0x795B, 0x4105, 0x7967, 0x7972, 0x7994,
- 0x7995, 0x7996, 0x799B, 0x79A1, 0x79A9, 0x79B4, 0x79BB, 0x79C2,
- 0x79C7, 0x79CC, 0x79CD, 0x79D6, 0x4148, 0xD855 /*0xDFA9*/, 0xD855 /*0xDFB4*/, 0x414F,
- 0x7A0A, 0x7A11, 0x7A15, 0x7A1B, 0x7A1E, 0x4163, 0x7A2D,
-};
-static const unsigned short euc_to_utf8_8FF3_x0213[] = {
- 0x7A38, 0x7A47, 0x7A4C, 0x7A56, 0x7A59, 0x7A5C, 0x7A5F,
- 0x7A60, 0x7A67, 0x7A6A, 0x7A75, 0x7A78, 0x7A82, 0x7A8A, 0x7A90,
- 0x7AA3, 0x7AAC, 0xD856 /*0xDDD4*/, 0x41B4, 0x7AB9, 0x7ABC, 0x7ABE, 0x41BF,
- 0x7ACC, 0x7AD1, 0x7AE7, 0x7AE8, 0x7AF4, 0xD856 /*0xDEE4*/, 0xD856 /*0xDEE3*/, 0x7B07,
- 0xD856 /*0xDEF1*/, 0x7B3D, 0x7B27, 0x7B2A, 0x7B2E, 0x7B2F, 0x7B31, 0x41E6,
- 0x41F3, 0x7B7F, 0x7B41, 0x41EE, 0x7B55, 0x7B79, 0x7B64, 0x7B66,
- 0x7B69, 0x7B73, 0xD856 /*0xDFB2*/, 0x4207, 0x7B90, 0x7B91, 0x7B9B, 0x420E,
- 0x7BAF, 0x7BB5, 0x7BBC, 0x7BC5, 0x7BCA, 0xD857 /*0xDC4B*/, 0xD857 /*0xDC64*/, 0x7BD4,
- 0x7BD6, 0x7BDA, 0x7BEA, 0x7BF0, 0x7C03, 0x7C0B, 0x7C0E, 0x7C0F,
- 0x7C26, 0x7C45, 0x7C4A, 0x7C51, 0x7C57, 0x7C5E, 0x7C61, 0x7C69,
- 0x7C6E, 0x7C6F, 0x7C70, 0xD857 /*0xDE2E*/, 0xD857 /*0xDE56*/, 0xD857 /*0xDE65*/, 0x7CA6, 0xD857 /*0xDE62*/,
- 0x7CB6, 0x7CB7, 0x7CBF, 0xD857 /*0xDED8*/, 0x7CC4, 0xD857 /*0xDEC2*/, 0x7CC8,
-};
-static const unsigned short euc_to_utf8_8FF4_x0213[] = {
- 0x7CCD, 0xD857 /*0xDEE8*/, 0x7CD7, 0xD857 /*0xDF23*/, 0x7CE6, 0x7CEB, 0xD857 /*0xDF5C*/,
- 0x7CF5, 0x7D03, 0x7D09, 0x42C6, 0x7D12, 0x7D1E, 0xD857 /*0xDFE0*/, 0xD857 /*0xDFD4*/,
- 0x7D3D, 0x7D3E, 0x7D40, 0x7D47, 0xD858 /*0xDC0C*/, 0xD857 /*0xDFFB*/, 0x42D6, 0x7D59,
- 0x7D5A, 0x7D6A, 0x7D70, 0x42DD, 0x7D7F, 0xD858 /*0xDC17*/, 0x7D86, 0x7D88,
- 0x7D8C, 0x7D97, 0xD858 /*0xDC60*/, 0x7D9D, 0x7DA7, 0x7DAA, 0x7DB6, 0x7DB7,
- 0x7DC0, 0x7DD7, 0x7DD9, 0x7DE6, 0x7DF1, 0x7DF9, 0x4302, 0xD858 /*0xDCED*/,
- 0xFA58, 0x7E10, 0x7E17, 0x7E1D, 0x7E20, 0x7E27, 0x7E2C, 0x7E45,
- 0x7E73, 0x7E75, 0x7E7E, 0x7E86, 0x7E87, 0x432B, 0x7E91, 0x7E98,
- 0x7E9A, 0x4343, 0x7F3C, 0x7F3B, 0x7F3E, 0x7F43, 0x7F44, 0x7F4F,
- 0x34C1, 0xD858 /*0xDE70*/, 0x7F52, 0xD858 /*0xDE86*/, 0x7F61, 0x7F63, 0x7F64, 0x7F6D,
- 0x7F7D, 0x7F7E, 0xD858 /*0xDF4C*/, 0x7F90, 0x517B, 0xD84F /*0xDD0E*/, 0x7F96, 0x7F9C,
- 0x7FAD, 0xD859 /*0xDC02*/, 0x7FC3, 0x7FCF, 0x7FE3, 0x7FE5, 0x7FEF,
-};
-static const unsigned short euc_to_utf8_8FF5_x0213[] = {
- 0x7FF2, 0x8002, 0x800A, 0x8008, 0x800E, 0x8011, 0x8016,
- 0x8024, 0x802C, 0x8030, 0x8043, 0x8066, 0x8071, 0x8075, 0x807B,
- 0x8099, 0x809C, 0x80A4, 0x80A7, 0x80B8, 0xD859 /*0xDE7E*/, 0x80C5, 0x80D5,
- 0x80D8, 0x80E6, 0xD859 /*0xDEB0*/, 0x810D, 0x80F5, 0x80FB, 0x43EE, 0x8135,
- 0x8116, 0x811E, 0x43F0, 0x8124, 0x8127, 0x812C, 0xD859 /*0xDF1D*/, 0x813D,
- 0x4408, 0x8169, 0x4417, 0x8181, 0x441C, 0x8184, 0x8185, 0x4422,
- 0x8198, 0x81B2, 0x81C1, 0x81C3, 0x81D6, 0x81DB, 0xD85A /*0xDCDD*/, 0x81E4,
- 0xD85A /*0xDCEA*/, 0x81EC, 0xD85A /*0xDD51*/, 0x81FD, 0x81FF, 0xD85A /*0xDD6F*/, 0x8204, 0xD85A /*0xDDDD*/,
- 0x8219, 0x8221, 0x8222, 0xD85A /*0xDE1E*/, 0x8232, 0x8234, 0x823C, 0x8246,
- 0x8249, 0x8245, 0xD85A /*0xDE58*/, 0x824B, 0x4476, 0x824F, 0x447A, 0x8257,
- 0xD85A /*0xDE8C*/, 0x825C, 0x8263, 0xD85A /*0xDEB7*/, 0xFA5D, 0xFA5E, 0x8279, 0x4491,
- 0x827D, 0x827F, 0x8283, 0x828A, 0x8293, 0x82A7, 0x82A8,
-};
-static const unsigned short euc_to_utf8_8FF6_x0213[] = {
- 0x82B2, 0x82B4, 0x82BA, 0x82BC, 0x82E2, 0x82E8, 0x82F7,
- 0x8307, 0x8308, 0x830C, 0x8354, 0x831B, 0x831D, 0x8330, 0x833C,
- 0x8344, 0x8357, 0x44BE, 0x837F, 0x44D4, 0x44B3, 0x838D, 0x8394,
- 0x8395, 0x839B, 0x839D, 0x83C9, 0x83D0, 0x83D4, 0x83DD, 0x83E5,
- 0x83F9, 0x840F, 0x8411, 0x8415, 0xD85B /*0xDC73*/, 0x8417, 0x8439, 0x844A,
- 0x844F, 0x8451, 0x8452, 0x8459, 0x845A, 0x845C, 0xD85B /*0xDCDD*/, 0x8465,
- 0x8476, 0x8478, 0x847C, 0x8481, 0x450D, 0x84DC, 0x8497, 0x84A6,
- 0x84BE, 0x4508, 0x84CE, 0x84CF, 0x84D3, 0xD85B /*0xDE65*/, 0x84E7, 0x84EA,
- 0x84EF, 0x84F0, 0x84F1, 0x84FA, 0x84FD, 0x850C, 0x851B, 0x8524,
- 0x8525, 0x852B, 0x8534, 0x854F, 0x856F, 0x4525, 0x4543, 0x853E,
- 0x8551, 0x8553, 0x855E, 0x8561, 0x8562, 0xD85B /*0xDF94*/, 0x857B, 0x857D,
- 0x857F, 0x8581, 0x8586, 0x8593, 0x859D, 0x859F, 0xD85B /*0xDFF8*/,
-};
-static const unsigned short euc_to_utf8_8FF7_x0213[] = {
- 0xD85B /*0xDFF6*/, 0xD85B /*0xDFF7*/, 0x85B7, 0x85BC, 0x85C7, 0x85CA, 0x85D8,
- 0x85D9, 0x85DF, 0x85E1, 0x85E6, 0x85F6, 0x8600, 0x8611, 0x861E,
- 0x8621, 0x8624, 0x8627, 0xD85C /*0xDD0D*/, 0x8639, 0x863C, 0xD85C /*0xDD39*/, 0x8640,
- 0xFA20, 0x8653, 0x8656, 0x866F, 0x8677, 0x867A, 0x8687, 0x8689,
- 0x868D, 0x8691, 0x869C, 0x869D, 0x86A8, 0xFA21, 0x86B1, 0x86B3,
- 0x86C1, 0x86C3, 0x86D1, 0x86D5, 0x86D7, 0x86E3, 0x86E6, 0x45B8,
- 0x8705, 0x8707, 0x870E, 0x8710, 0x8713, 0x8719, 0x871F, 0x8721,
- 0x8723, 0x8731, 0x873A, 0x873E, 0x8740, 0x8743, 0x8751, 0x8758,
- 0x8764, 0x8765, 0x8772, 0x877C, 0xD85C /*0xDFDB*/, 0xD85C /*0xDFDA*/, 0x87A7, 0x8789,
- 0x878B, 0x8793, 0x87A0, 0xD85C /*0xDFFE*/, 0x45E5, 0x87BE, 0xD85D /*0xDC10*/, 0x87C1,
- 0x87CE, 0x87F5, 0x87DF, 0xD85D /*0xDC49*/, 0x87E3, 0x87E5, 0x87E6, 0x87EA,
- 0x87EB, 0x87ED, 0x8801, 0x8803, 0x880B, 0x8813, 0x8828,
-};
-static const unsigned short euc_to_utf8_8FF8_x0213[] = {
- 0x882E, 0x8832, 0x883C, 0x460F, 0x884A, 0x8858, 0x885F,
- 0x8864, 0xD85D /*0xDE15*/, 0xD85D /*0xDE14*/, 0x8869, 0xD85D /*0xDE31*/, 0x886F, 0x88A0, 0x88BC,
- 0x88BD, 0x88BE, 0x88C0, 0x88D2, 0xD85D /*0xDE93*/, 0x88D1, 0x88D3, 0x88DB,
- 0x88F0, 0x88F1, 0x4641, 0x8901, 0xD85D /*0xDF0E*/, 0x8937, 0xD85D /*0xDF23*/, 0x8942,
- 0x8945, 0x8949, 0xD85D /*0xDF52*/, 0x4665, 0x8962, 0x8980, 0x8989, 0x8990,
- 0x899F, 0x89B0, 0x89B7, 0x89D6, 0x89D8, 0x89EB, 0x46A1, 0x89F1,
- 0x89F3, 0x89FD, 0x89FF, 0x46AF, 0x8A11, 0x8A14, 0xD85E /*0xDD85*/, 0x8A21,
- 0x8A35, 0x8A3E, 0x8A45, 0x8A4D, 0x8A58, 0x8AAE, 0x8A90, 0x8AB7,
- 0x8ABE, 0x8AD7, 0x8AFC, 0xD85E /*0xDE84*/, 0x8B0A, 0x8B05, 0x8B0D, 0x8B1C,
- 0x8B1F, 0x8B2D, 0x8B43, 0x470C, 0x8B51, 0x8B5E, 0x8B76, 0x8B7F,
- 0x8B81, 0x8B8B, 0x8B94, 0x8B95, 0x8B9C, 0x8B9E, 0x8C39, 0xD85E /*0xDFB3*/,
- 0x8C3D, 0xD85E /*0xDFBE*/, 0xD85E /*0xDFC7*/, 0x8C45, 0x8C47, 0x8C4F, 0x8C54,
-};
-static const unsigned short euc_to_utf8_8FF9_x0213[] = {
- 0x8C57, 0x8C69, 0x8C6D, 0x8C73, 0xD85F /*0xDCB8*/, 0x8C93, 0x8C92,
- 0x8C99, 0x4764, 0x8C9B, 0x8CA4, 0x8CD6, 0x8CD5, 0x8CD9, 0xD85F /*0xDDA0*/,
- 0x8CF0, 0x8CF1, 0xD85F /*0xDE10*/, 0x8D09, 0x8D0E, 0x8D6C, 0x8D84, 0x8D95,
- 0x8DA6, 0xD85F /*0xDFB7*/, 0x8DC6, 0x8DC8, 0x8DD9, 0x8DEC, 0x8E0C, 0x47FD,
- 0x8DFD, 0x8E06, 0xD860 /*0xDC8A*/, 0x8E14, 0x8E16, 0x8E21, 0x8E22, 0x8E27,
- 0xD860 /*0xDCBB*/, 0x4816, 0x8E36, 0x8E39, 0x8E4B, 0x8E54, 0x8E62, 0x8E6C,
- 0x8E6D, 0x8E6F, 0x8E98, 0x8E9E, 0x8EAE, 0x8EB3, 0x8EB5, 0x8EB6,
- 0x8EBB, 0xD860 /*0xDE82*/, 0x8ED1, 0x8ED4, 0x484E, 0x8EF9, 0xD860 /*0xDEF3*/, 0x8F00,
- 0x8F08, 0x8F17, 0x8F2B, 0x8F40, 0x8F4A, 0x8F58, 0xD861 /*0xDC0C*/, 0x8FA4,
- 0x8FB4, 0xFA66, 0x8FB6, 0xD861 /*0xDC55*/, 0x8FC1, 0x8FC6, 0xFA24, 0x8FCA,
- 0x8FCD, 0x8FD3, 0x8FD5, 0x8FE0, 0x8FF1, 0x8FF5, 0x8FFB, 0x9002,
- 0x900C, 0x9037, 0xD861 /*0xDD6B*/, 0x9043, 0x9044, 0x905D, 0xD861 /*0xDDC8*/,
-};
-static const unsigned short euc_to_utf8_8FFA_x0213[] = {
- 0xD861 /*0xDDC9*/, 0x9085, 0x908C, 0x9090, 0x961D, 0x90A1, 0x48B5,
- 0x90B0, 0x90B6, 0x90C3, 0x90C8, 0xD861 /*0xDED7*/, 0x90DC, 0x90DF, 0xD861 /*0xDEFA*/,
- 0x90F6, 0x90F2, 0x9100, 0x90EB, 0x90FE, 0x90FF, 0x9104, 0x9106,
- 0x9118, 0x911C, 0x911E, 0x9137, 0x9139, 0x913A, 0x9146, 0x9147,
- 0x9157, 0x9159, 0x9161, 0x9164, 0x9174, 0x9179, 0x9185, 0x918E,
- 0x91A8, 0x91AE, 0x91B3, 0x91B6, 0x91C3, 0x91C4, 0x91DA, 0xD862 /*0xDD49*/,
- 0xD862 /*0xDD46*/, 0x91EC, 0x91EE, 0x9201, 0x920A, 0x9216, 0x9217, 0xD862 /*0xDD6B*/,
- 0x9233, 0x9242, 0x9247, 0x924A, 0x924E, 0x9251, 0x9256, 0x9259,
- 0x9260, 0x9261, 0x9265, 0x9267, 0x9268, 0xD862 /*0xDD87*/, 0xD862 /*0xDD88*/, 0x927C,
- 0x927D, 0x927F, 0x9289, 0x928D, 0x9297, 0x9299, 0x929F, 0x92A7,
- 0x92AB, 0xD862 /*0xDDBA*/, 0xD862 /*0xDDBB*/, 0x92B2, 0x92BF, 0x92C0, 0x92C6, 0x92CE,
- 0x92D0, 0x92D7, 0x92D9, 0x92E5, 0x92E7, 0x9311, 0xD862 /*0xDE1E*/,
-};
-static const unsigned short euc_to_utf8_8FFB_x0213[] = {
- 0xD862 /*0xDE29*/, 0x92F7, 0x92F9, 0x92FB, 0x9302, 0x930D, 0x9315,
- 0x931D, 0x931E, 0x9327, 0x9329, 0xD862 /*0xDE71*/, 0xD862 /*0xDE43*/, 0x9347, 0x9351,
- 0x9357, 0x935A, 0x936B, 0x9371, 0x9373, 0x93A1, 0xD862 /*0xDE99*/, 0xD862 /*0xDECD*/,
- 0x9388, 0x938B, 0x938F, 0x939E, 0x93F5, 0xD862 /*0xDEE4*/, 0xD862 /*0xDEDD*/, 0x93F1,
- 0x93C1, 0x93C7, 0x93DC, 0x93E2, 0x93E7, 0x9409, 0x940F, 0x9416,
- 0x9417, 0x93FB, 0x9432, 0x9434, 0x943B, 0x9445, 0xD862 /*0xDFC1*/, 0xD862 /*0xDFEF*/,
- 0x946D, 0x946F, 0x9578, 0x9579, 0x9586, 0x958C, 0x958D, 0xD863 /*0xDD10*/,
- 0x95AB, 0x95B4, 0xD863 /*0xDD71*/, 0x95C8, 0xD863 /*0xDDFB*/, 0xD863 /*0xDE1F*/, 0x962C, 0x9633,
- 0x9634, 0xD863 /*0xDE36*/, 0x963C, 0x9641, 0x9661, 0xD863 /*0xDE89*/, 0x9682, 0xD863 /*0xDEEB*/,
- 0x969A, 0xD863 /*0xDF32*/, 0x49E7, 0x96A9, 0x96AF, 0x96B3, 0x96BA, 0x96BD,
- 0x49FA, 0xD863 /*0xDFF8*/, 0x96D8, 0x96DA, 0x96DD, 0x4A04, 0x9714, 0x9723,
- 0x4A29, 0x9736, 0x9741, 0x9747, 0x9755, 0x9757, 0x975B,
-};
-static const unsigned short euc_to_utf8_8FFC_x0213[] = {
- 0x976A, 0xD864 /*0xDEA0*/, 0xD864 /*0xDEB1*/, 0x9796, 0x979A, 0x979E, 0x97A2,
- 0x97B1, 0x97B2, 0x97BE, 0x97CC, 0x97D1, 0x97D4, 0x97D8, 0x97D9,
- 0x97E1, 0x97F1, 0x9804, 0x980D, 0x980E, 0x9814, 0x9816, 0x4ABC,
- 0xD865 /*0xDC90*/, 0x9823, 0x9832, 0x9833, 0x9825, 0x9847, 0x9866, 0x98AB,
- 0x98AD, 0x98B0, 0xD865 /*0xDDCF*/, 0x98B7, 0x98B8, 0x98BB, 0x98BC, 0x98BF,
- 0x98C2, 0x98C7, 0x98CB, 0x98E0, 0xD865 /*0xDE7F*/, 0x98E1, 0x98E3, 0x98E5,
- 0x98EA, 0x98F0, 0x98F1, 0x98F3, 0x9908, 0x4B3B, 0xD865 /*0xDEF0*/, 0x9916,
- 0x9917, 0xD865 /*0xDF19*/, 0x991A, 0x991B, 0x991C, 0xD865 /*0xDF50*/, 0x9931, 0x9932,
- 0x9933, 0x993A, 0x993B, 0x993C, 0x9940, 0x9941, 0x9946, 0x994D,
- 0x994E, 0x995C, 0x995F, 0x9960, 0x99A3, 0x99A6, 0x99B9, 0x99BD,
- 0x99BF, 0x99C3, 0x99C9, 0x99D4, 0x99D9, 0x99DE, 0xD866 /*0xDCC6*/, 0x99F0,
- 0x99F9, 0x99FC, 0x9A0A, 0x9A11, 0x9A16, 0x9A1A, 0x9A20,
-};
-static const unsigned short euc_to_utf8_8FFD_x0213[] = {
- 0x9A31, 0x9A36, 0x9A44, 0x9A4C, 0x9A58, 0x4BC2, 0x9AAF,
- 0x4BCA, 0x9AB7, 0x4BD2, 0x9AB9, 0xD866 /*0xDE72*/, 0x9AC6, 0x9AD0, 0x9AD2,
- 0x9AD5, 0x4BE8, 0x9ADC, 0x9AE0, 0x9AE5, 0x9AE9, 0x9B03, 0x9B0C,
- 0x9B10, 0x9B12, 0x9B16, 0x9B1C, 0x9B2B, 0x9B33, 0x9B3D, 0x4C20,
- 0x9B4B, 0x9B63, 0x9B65, 0x9B6B, 0x9B6C, 0x9B73, 0x9B76, 0x9B77,
- 0x9BA6, 0x9BAC, 0x9BB1, 0xD867 /*0xDDDB*/, 0xD867 /*0xDE3D*/, 0x9BB2, 0x9BB8, 0x9BBE,
- 0x9BC7, 0x9BF3, 0x9BD8, 0x9BDD, 0x9BE7, 0x9BEA, 0x9BEB, 0x9BEF,
- 0x9BEE, 0xD867 /*0xDE15*/, 0x9BFA, 0xD867 /*0xDE8A*/, 0x9BF7, 0xD867 /*0xDE49*/, 0x9C16, 0x9C18,
- 0x9C19, 0x9C1A, 0x9C1D, 0x9C22, 0x9C27, 0x9C29, 0x9C2A, 0xD867 /*0xDEC4*/,
- 0x9C31, 0x9C36, 0x9C37, 0x9C45, 0x9C5C, 0xD867 /*0xDEE9*/, 0x9C49, 0x9C4A,
- 0xD867 /*0xDEDB*/, 0x9C54, 0x9C58, 0x9C5B, 0x9C5D, 0x9C5F, 0x9C69, 0x9C6A,
- 0x9C6B, 0x9C6D, 0x9C6E, 0x9C70, 0x9C72, 0x9C75, 0x9C7A,
-};
-static const unsigned short euc_to_utf8_8FFE_x0213[] = {
- 0x9CE6, 0x9CF2, 0x9D0B, 0x9D02, 0xD867 /*0xDFCE*/, 0x9D11, 0x9D17,
- 0x9D18, 0xD868 /*0xDC2F*/, 0x4CC4, 0xD868 /*0xDC1A*/, 0x9D32, 0x4CD1, 0x9D42, 0x9D4A,
- 0x9D5F, 0x9D62, 0xD868 /*0xDCF9*/, 0x9D69, 0x9D6B, 0xD868 /*0xDC82*/, 0x9D73, 0x9D76,
- 0x9D77, 0x9D7E, 0x9D84, 0x9D8D, 0x9D99, 0x9DA1, 0x9DBF, 0x9DB5,
- 0x9DB9, 0x9DBD, 0x9DC3, 0x9DC7, 0x9DC9, 0x9DD6, 0x9DDA, 0x9DDF,
- 0x9DE0, 0x9DE3, 0x9DF4, 0x4D07, 0x9E0A, 0x9E02, 0x9E0D, 0x9E19,
- 0x9E1C, 0x9E1D, 0x9E7B, 0xD848 /*0xDE18*/, 0x9E80, 0x9E85, 0x9E9B, 0x9EA8,
- 0xD868 /*0xDF8C*/, 0x9EBD, 0xD869 /*0xDC37*/, 0x9EDF, 0x9EE7, 0x9EEE, 0x9EFF, 0x9F02,
- 0x4D77, 0x9F03, 0x9F17, 0x9F19, 0x9F2F, 0x9F37, 0x9F3A, 0x9F3D,
- 0x9F41, 0x9F45, 0x9F46, 0x9F53, 0x9F55, 0x9F58, 0xD869 /*0xDDF1*/, 0x9F5D,
- 0xD869 /*0xDE02*/, 0x9F69, 0xD869 /*0xDE1A*/, 0x9F6D, 0x9F70, 0x9F75, 0xD869 /*0xDEB2*/, 0,
- 0, 0, 0, 0, 0, 0, 0,
-};
#ifdef X0212_ENABLE
static const unsigned short euc_to_utf8_8FA2[] = {
@@ -3137,32 +2408,6 @@ const unsigned short *const euc_to_utf8_2bytes_mac[] = {
0, euc_to_utf8_F9, euc_to_utf8_FA, euc_to_utf8_FB,
euc_to_utf8_FC_ms, 0, 0,
};
-const unsigned short *const euc_to_utf8_2bytes_x0213[] = {
- euc_to_utf8_A1, euc_to_utf8_A2_x0213, euc_to_utf8_A3_x0213,
- euc_to_utf8_A4_x0213, euc_to_utf8_A5_x0213, euc_to_utf8_A6_x0213, euc_to_utf8_A7_x0213,
- euc_to_utf8_A8_x0213, euc_to_utf8_A9_x0213, euc_to_utf8_AA_x0213, euc_to_utf8_AB_x0213,
- euc_to_utf8_AC_x0213, euc_to_utf8_AD_x0213, euc_to_utf8_AE_x0213, euc_to_utf8_AF_x0213,
- euc_to_utf8_B0, euc_to_utf8_B1, euc_to_utf8_B2, euc_to_utf8_B3,
- euc_to_utf8_B4, euc_to_utf8_B5, euc_to_utf8_B6, euc_to_utf8_B7,
- euc_to_utf8_B8, euc_to_utf8_B9, euc_to_utf8_BA, euc_to_utf8_BB,
- euc_to_utf8_BC, euc_to_utf8_BD, euc_to_utf8_BE, euc_to_utf8_BF,
- euc_to_utf8_C0, euc_to_utf8_C1, euc_to_utf8_C2, euc_to_utf8_C3,
- euc_to_utf8_C4, euc_to_utf8_C5, euc_to_utf8_C6, euc_to_utf8_C7,
- euc_to_utf8_C8, euc_to_utf8_C9, euc_to_utf8_CA, euc_to_utf8_CB,
- euc_to_utf8_CC, euc_to_utf8_CD, euc_to_utf8_CE, euc_to_utf8_CF_x0213,
- euc_to_utf8_D0, euc_to_utf8_D1, euc_to_utf8_D2, euc_to_utf8_D3,
- euc_to_utf8_D4, euc_to_utf8_D5, euc_to_utf8_D6, euc_to_utf8_D7,
- euc_to_utf8_D8, euc_to_utf8_D9, euc_to_utf8_DA, euc_to_utf8_DB,
- euc_to_utf8_DC, euc_to_utf8_DD, euc_to_utf8_DE, euc_to_utf8_DF,
- euc_to_utf8_E0, euc_to_utf8_E1, euc_to_utf8_E2, euc_to_utf8_E3,
- euc_to_utf8_E4, euc_to_utf8_E5, euc_to_utf8_E6, euc_to_utf8_E7,
- euc_to_utf8_E8, euc_to_utf8_E9, euc_to_utf8_EA, euc_to_utf8_EB,
- euc_to_utf8_EC, euc_to_utf8_ED, euc_to_utf8_EE, euc_to_utf8_EF,
- euc_to_utf8_F0, euc_to_utf8_F1, euc_to_utf8_F2, euc_to_utf8_F3,
- euc_to_utf8_F4_x0213, euc_to_utf8_F5_x0213, euc_to_utf8_F6_x0213, euc_to_utf8_F7_x0213,
- euc_to_utf8_F8_x0213, euc_to_utf8_F9_x0213, euc_to_utf8_FA_x0213, euc_to_utf8_FB_x0213,
- euc_to_utf8_FC_x0213, euc_to_utf8_FD_x0213, euc_to_utf8_FE_x0213,
-};
#ifdef X0212_ENABLE
const unsigned short *const x0212_to_utf8_2bytes[] = {
@@ -3190,371 +2435,7 @@ const unsigned short *const x0212_to_utf8_2bytes[] = {
euc_to_utf8_8FF4, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0,};
-
-const unsigned short *const x0212_to_utf8_2bytes_x0213[] = {
- euc_to_utf8_8FA1_x0213, euc_to_utf8_8FA2, euc_to_utf8_8FA3_x0213,
- euc_to_utf8_8FA4_x0213, euc_to_utf8_8FA5_x0213, euc_to_utf8_8FA6, euc_to_utf8_8FA7,
- euc_to_utf8_8FA8_x0213, euc_to_utf8_8FA9, euc_to_utf8_8FAA, euc_to_utf8_8FAB,
- euc_to_utf8_8FAC_x0213, euc_to_utf8_8FAD_x0213, euc_to_utf8_8FAE_x0213, euc_to_utf8_8FAF_x0213,
- euc_to_utf8_8FB0, euc_to_utf8_8FB1, euc_to_utf8_8FB2, euc_to_utf8_8FB3,
- euc_to_utf8_8FB4, euc_to_utf8_8FB5, euc_to_utf8_8FB6, euc_to_utf8_8FB7,
- euc_to_utf8_8FB8, euc_to_utf8_8FB9, euc_to_utf8_8FBA, euc_to_utf8_8FBB,
- euc_to_utf8_8FBC, euc_to_utf8_8FBD, euc_to_utf8_8FBE, euc_to_utf8_8FBF,
- euc_to_utf8_8FC0, euc_to_utf8_8FC1, euc_to_utf8_8FC2, euc_to_utf8_8FC3,
- euc_to_utf8_8FC4, euc_to_utf8_8FC5, euc_to_utf8_8FC6, euc_to_utf8_8FC7,
- euc_to_utf8_8FC8, euc_to_utf8_8FC9, euc_to_utf8_8FCA, euc_to_utf8_8FCB,
- euc_to_utf8_8FCC, euc_to_utf8_8FCD, euc_to_utf8_8FCE, euc_to_utf8_8FCF,
- euc_to_utf8_8FD0, euc_to_utf8_8FD1, euc_to_utf8_8FD2, euc_to_utf8_8FD3,
- euc_to_utf8_8FD4, euc_to_utf8_8FD5, euc_to_utf8_8FD6, euc_to_utf8_8FD7,
- euc_to_utf8_8FD8, euc_to_utf8_8FD9, euc_to_utf8_8FDA, euc_to_utf8_8FDB,
- euc_to_utf8_8FDC, euc_to_utf8_8FDD, euc_to_utf8_8FDE, euc_to_utf8_8FDF,
- euc_to_utf8_8FE0, euc_to_utf8_8FE1, euc_to_utf8_8FE2, euc_to_utf8_8FE3,
- euc_to_utf8_8FE4, euc_to_utf8_8FE5, euc_to_utf8_8FE6, euc_to_utf8_8FE7,
- euc_to_utf8_8FE8, euc_to_utf8_8FE9, euc_to_utf8_8FEA, euc_to_utf8_8FEB,
- euc_to_utf8_8FEC, euc_to_utf8_8FED, euc_to_utf8_8FEE_x0213, euc_to_utf8_8FEF_x0213,
- euc_to_utf8_8FF0_x0213, euc_to_utf8_8FF1_x0213, euc_to_utf8_8FF2_x0213, euc_to_utf8_8FF3_x0213,
- euc_to_utf8_8FF4_x0213, euc_to_utf8_8FF5_x0213, euc_to_utf8_8FF6_x0213, euc_to_utf8_8FF7_x0213,
- euc_to_utf8_8FF8_x0213, euc_to_utf8_8FF9_x0213, euc_to_utf8_8FFA_x0213, euc_to_utf8_8FFB_x0213,
- euc_to_utf8_8FFC_x0213, euc_to_utf8_8FFD_x0213, euc_to_utf8_8FFE_x0213,};
#endif /* X0212_ENABLE */
-
-const unsigned short x0213_combining_chars[sizeof_x0213_combining_chars] = {
- 0x309A, 0x0300, 0x0301, 0x02E5, 0x02E9,
-};
-const unsigned short x0213_combining_table[sizeof_x0213_combining_table][3] = {
- {0x2477, 0x304B, 0x309A},
- {0x2478, 0x304D, 0x309A},
- {0x2479, 0x304F, 0x309A},
- {0x247A, 0x3051, 0x309A},
- {0x247B, 0x3053, 0x309A},
- {0x2577, 0x30AB, 0x309A},
- {0x2578, 0x30AD, 0x309A},
- {0x2579, 0x30AF, 0x309A},
- {0x257A, 0x30B1, 0x309A},
- {0x257B, 0x30B3, 0x309A},
- {0x257C, 0x30BB, 0x309A},
- {0x257D, 0x30C4, 0x309A},
- {0x257E, 0x30C8, 0x309A},
- {0x2678, 0x31F7, 0x309A},
- {0x2B44, 0x00E6, 0x0300},
- {0x2B48, 0x0254, 0x0300},
- {0x2B49, 0x0254, 0x0301},
- {0x2B4A, 0x028C, 0x0300},
- {0x2B4B, 0x028C, 0x0301},
- {0x2B4C, 0x0259, 0x0300},
- {0x2B4D, 0x0259, 0x0301},
- {0x2B4E, 0x025A, 0x0300},
- {0x2B4F, 0x025A, 0x0301},
- {0x2B65, 0x02E9, 0x02E5},
- {0x2B66, 0x02E5, 0x02E9},
-};
-const unsigned short x0213_1_surrogate_table[sizeof_x0213_1_surrogate_table][3] = {
- {0x2E22, 0xD840, 0xDC0B},
- {0x2F42, 0xD844, 0xDE3D},
- {0x2F4C, 0xD844, 0xDF1B},
- {0x2F60, 0xD845, 0xDC6E},
- {0x2F7B, 0xD846, 0xDCBD},
- {0x4F54, 0xD842, 0xDF9F},
- {0x4F63, 0xD845, 0xDEB4},
- {0x4F6E, 0xD847, 0xDE34},
- {0x753A, 0xD84C, 0xDDC4},
- {0x7572, 0xD84D, 0xDDC4},
- {0x7629, 0xD84D, 0xDF3F},
- {0x7632, 0xD84D, 0xDF63},
- {0x7660, 0xD84F, 0xDCFE},
- {0x776C, 0xD851, 0xDFF1},
- {0x787E, 0xD855, 0xDC8E},
- {0x7929, 0xD855, 0xDD0E},
- {0x7947, 0xD855, 0xDF71},
- {0x7954, 0xD856, 0xDDC4},
- {0x796E, 0xD857, 0xDDA1},
- {0x7A5D, 0xD85A, 0xDEFF},
- {0x7B33, 0xD85B, 0xDE40},
- {0x7B49, 0xD85C, 0xDCF4},
- {0x7B6C, 0xD85D, 0xDE84},
- {0x7C49, 0xD860, 0xDE77},
- {0x7C51, 0xD860, 0xDFCD},
- {0x7E66, 0xD868, 0xDD90},
-};
-const unsigned short x0213_2_surrogate_table[sizeof_x0213_2_surrogate_table][3] = {
- {0x2121, 0xD840, 0xDC89},
- {0x212B, 0xD840, 0xDCA2},
- {0x212E, 0xD840, 0xDCA4},
- {0x2136, 0xD840, 0xDDA2},
- {0x2146, 0xD840, 0xDE13},
- {0x2170, 0xD840, 0xDF2B},
- {0x2177, 0xD840, 0xDF81},
- {0x2179, 0xD840, 0xDF71},
- {0x2322, 0xD840, 0xDFF9},
- {0x2325, 0xD841, 0xDC4A},
- {0x2327, 0xD841, 0xDD09},
- {0x2331, 0xD841, 0xDDD6},
- {0x2332, 0xD841, 0xDE28},
- {0x2338, 0xD841, 0xDF4F},
- {0x233F, 0xD842, 0xDC07},
- {0x2341, 0xD842, 0xDC3A},
- {0x234A, 0xD842, 0xDCB9},
- {0x2352, 0xD842, 0xDD7C},
- {0x2353, 0xD842, 0xDD9D},
- {0x2359, 0xD842, 0xDED3},
- {0x235C, 0xD842, 0xDF1D},
- {0x2377, 0xD843, 0xDD45},
- {0x242A, 0xD843, 0xDDE1},
- {0x2431, 0xD843, 0xDE95},
- {0x2432, 0xD843, 0xDE6D},
- {0x243A, 0xD843, 0xDE64},
- {0x243D, 0xD843, 0xDF5F},
- {0x2459, 0xD844, 0xDE01},
- {0x245C, 0xD844, 0xDE55},
- {0x245E, 0xD844, 0xDE7B},
- {0x2463, 0xD844, 0xDE74},
- {0x246A, 0xD844, 0xDEE4},
- {0x246B, 0xD844, 0xDED7},
- {0x2472, 0xD844, 0xDEFD},
- {0x2474, 0xD844, 0xDF36},
- {0x2475, 0xD844, 0xDF44},
- {0x2525, 0xD844, 0xDFC4},
- {0x2532, 0xD845, 0xDC6D},
- {0x253E, 0xD845, 0xDDD7},
- {0x2544, 0xD85B, 0xDC29},
- {0x2547, 0xD845, 0xDE47},
- {0x2555, 0xD845, 0xDF06},
- {0x2556, 0xD845, 0xDF42},
- {0x257E, 0xD846, 0xDDC3},
- {0x2830, 0xD847, 0xDC56},
- {0x2837, 0xD847, 0xDD2D},
- {0x2838, 0xD847, 0xDD45},
- {0x283A, 0xD847, 0xDD78},
- {0x283B, 0xD847, 0xDD62},
- {0x283F, 0xD847, 0xDDA1},
- {0x2840, 0xD847, 0xDD9C},
- {0x2845, 0xD847, 0xDD92},
- {0x2848, 0xD847, 0xDDB7},
- {0x284A, 0xD847, 0xDDE0},
- {0x284B, 0xD847, 0xDE33},
- {0x285B, 0xD847, 0xDF1E},
- {0x2866, 0xD847, 0xDF76},
- {0x286C, 0xD847, 0xDFFA},
- {0x2C22, 0xD848, 0xDD7B},
- {0x2C2B, 0xD848, 0xDF1E},
- {0x2C30, 0xD848, 0xDFAD},
- {0x2C50, 0xD849, 0xDEF3},
- {0x2C65, 0xD84A, 0xDC5B},
- {0x2C6D, 0xD84A, 0xDCAB},
- {0x2C72, 0xD84A, 0xDD8F},
- {0x2D24, 0xD84A, 0xDEB8},
- {0x2D29, 0xD84A, 0xDF4F},
- {0x2D2A, 0xD84A, 0xDF50},
- {0x2D32, 0xD84A, 0xDF46},
- {0x2D34, 0xD84B, 0xDC1D},
- {0x2D35, 0xD84A, 0xDFA6},
- {0x2D39, 0xD84B, 0xDC24},
- {0x2D56, 0xD84B, 0xDDE1},
- {0x2D7D, 0xD84C, 0xDDC3},
- {0x2E23, 0xD84C, 0xDDF5},
- {0x2E24, 0xD84C, 0xDDB6},
- {0x2E3A, 0xD84C, 0xDF72},
- {0x2E3C, 0xD84C, 0xDFD3},
- {0x2E3D, 0xD84C, 0xDFD2},
- {0x2E42, 0xD84C, 0xDFD0},
- {0x2E43, 0xD84C, 0xDFE4},
- {0x2E44, 0xD84C, 0xDFD5},
- {0x2E47, 0xD84C, 0xDFDA},
- {0x2E49, 0xD84C, 0xDFDF},
- {0x2E55, 0xD84D, 0xDC4A},
- {0x2E56, 0xD84D, 0xDC51},
- {0x2E57, 0xD84D, 0xDC4B},
- {0x2E5B, 0xD84D, 0xDC65},
- {0x2E77, 0xD84D, 0xDCE4},
- {0x2E78, 0xD84D, 0xDD5A},
- {0x2F2A, 0xD84D, 0xDD94},
- {0x2F3F, 0xD84D, 0xDE39},
- {0x2F40, 0xD84D, 0xDE47},
- {0x2F42, 0xD84D, 0xDE38},
- {0x2F43, 0xD84D, 0xDE3A},
- {0x2F4E, 0xD84D, 0xDF1C},
- {0x2F59, 0xD84D, 0xDF0C},
- {0x2F61, 0xD84D, 0xDF64},
- {0x2F69, 0xD84D, 0xDFFF},
- {0x2F6A, 0xD84D, 0xDFE7},
- {0x2F70, 0xD84E, 0xDC24},
- {0x2F75, 0xD84E, 0xDC3D},
- {0x6E23, 0xD84E, 0xDE98},
- {0x6E34, 0xD84F, 0xDC7F},
- {0x6E49, 0xD84F, 0xDD00},
- {0x6E5C, 0xD84F, 0xDD40},
- {0x6E5E, 0xD84F, 0xDDFA},
- {0x6E5F, 0xD84F, 0xDDF9},
- {0x6E60, 0xD84F, 0xDDD3},
- {0x6F32, 0xD84F, 0xDF7E},
- {0x6F47, 0xD850, 0xDC96},
- {0x6F4D, 0xD850, 0xDD03},
- {0x6F61, 0xD850, 0xDDC6},
- {0x6F64, 0xD850, 0xDDFE},
- {0x7022, 0xD850, 0xDFBC},
- {0x7033, 0xD851, 0xDE29},
- {0x7039, 0xD851, 0xDEA5},
- {0x7053, 0xD852, 0xDC96},
- {0x707B, 0xD852, 0xDE4D},
- {0x712E, 0xD852, 0xDF56},
- {0x7130, 0xD852, 0xDF6F},
- {0x7135, 0xD853, 0xDC16},
- {0x7144, 0xD853, 0xDD14},
- {0x715D, 0xD853, 0xDE0E},
- {0x7161, 0xD853, 0xDE37},
- {0x7166, 0xD853, 0xDE6A},
- {0x7169, 0xD853, 0xDE8B},
- {0x7175, 0xD854, 0xDC4A},
- {0x7177, 0xD854, 0xDC55},
- {0x717A, 0xD854, 0xDD22},
- {0x7221, 0xD854, 0xDDA9},
- {0x7223, 0xD854, 0xDDE5},
- {0x7224, 0xD854, 0xDDCD},
- {0x7228, 0xD854, 0xDE1E},
- {0x722C, 0xD854, 0xDE4C},
- {0x723D, 0xD855, 0xDC2E},
- {0x7248, 0xD855, 0xDCD9},
- {0x725B, 0xD855, 0xDDA7},
- {0x7275, 0xD855, 0xDFA9},
- {0x7276, 0xD855, 0xDFB4},
- {0x7332, 0xD856, 0xDDD4},
- {0x733D, 0xD856, 0xDEE4},
- {0x733E, 0xD856, 0xDEE3},
- {0x7340, 0xD856, 0xDEF1},
- {0x7352, 0xD856, 0xDFB2},
- {0x735D, 0xD857, 0xDC4B},
- {0x735E, 0xD857, 0xDC64},
- {0x7373, 0xD857, 0xDE2E},
- {0x7374, 0xD857, 0xDE56},
- {0x7375, 0xD857, 0xDE65},
- {0x7377, 0xD857, 0xDE62},
- {0x737B, 0xD857, 0xDED8},
- {0x737D, 0xD857, 0xDEC2},
- {0x7422, 0xD857, 0xDEE8},
- {0x7424, 0xD857, 0xDF23},
- {0x7427, 0xD857, 0xDF5C},
- {0x742E, 0xD857, 0xDFE0},
- {0x742F, 0xD857, 0xDFD4},
- {0x7434, 0xD858, 0xDC0C},
- {0x7435, 0xD857, 0xDFFB},
- {0x743D, 0xD858, 0xDC17},
- {0x7442, 0xD858, 0xDC60},
- {0x744F, 0xD858, 0xDCED},
- {0x7469, 0xD858, 0xDE70},
- {0x746B, 0xD858, 0xDE86},
- {0x7472, 0xD858, 0xDF4C},
- {0x7475, 0xD84F, 0xDD0E},
- {0x7479, 0xD859, 0xDC02},
- {0x7535, 0xD859, 0xDE7E},
- {0x753A, 0xD859, 0xDEB0},
- {0x7546, 0xD859, 0xDF1D},
- {0x7556, 0xD85A, 0xDCDD},
- {0x7558, 0xD85A, 0xDCEA},
- {0x755A, 0xD85A, 0xDD51},
- {0x755D, 0xD85A, 0xDD6F},
- {0x755F, 0xD85A, 0xDDDD},
- {0x7563, 0xD85A, 0xDE1E},
- {0x756A, 0xD85A, 0xDE58},
- {0x7570, 0xD85A, 0xDE8C},
- {0x7573, 0xD85A, 0xDEB7},
- {0x7644, 0xD85B, 0xDC73},
- {0x764E, 0xD85B, 0xDCDD},
- {0x765D, 0xD85B, 0xDE65},
- {0x7675, 0xD85B, 0xDF94},
- {0x767E, 0xD85B, 0xDFF8},
- {0x7721, 0xD85B, 0xDFF6},
- {0x7722, 0xD85B, 0xDFF7},
- {0x7733, 0xD85C, 0xDD0D},
- {0x7736, 0xD85C, 0xDD39},
- {0x7764, 0xD85C, 0xDFDB},
- {0x7765, 0xD85C, 0xDFDA},
- {0x776B, 0xD85C, 0xDFFE},
- {0x776E, 0xD85D, 0xDC10},
- {0x7773, 0xD85D, 0xDC49},
- {0x7829, 0xD85D, 0xDE15},
- {0x782A, 0xD85D, 0xDE14},
- {0x782C, 0xD85D, 0xDE31},
- {0x7834, 0xD85D, 0xDE93},
- {0x783C, 0xD85D, 0xDF0E},
- {0x783E, 0xD85D, 0xDF23},
- {0x7842, 0xD85D, 0xDF52},
- {0x7856, 0xD85E, 0xDD85},
- {0x7863, 0xD85E, 0xDE84},
- {0x7877, 0xD85E, 0xDFB3},
- {0x7879, 0xD85E, 0xDFBE},
- {0x787A, 0xD85E, 0xDFC7},
- {0x7925, 0xD85F, 0xDCB8},
- {0x792F, 0xD85F, 0xDDA0},
- {0x7932, 0xD85F, 0xDE10},
- {0x7939, 0xD85F, 0xDFB7},
- {0x7942, 0xD860, 0xDC8A},
- {0x7948, 0xD860, 0xDCBB},
- {0x7959, 0xD860, 0xDE82},
- {0x795E, 0xD860, 0xDEF3},
- {0x7966, 0xD861, 0xDC0C},
- {0x796B, 0xD861, 0xDC55},
- {0x797A, 0xD861, 0xDD6B},
- {0x797E, 0xD861, 0xDDC8},
- {0x7A21, 0xD861, 0xDDC9},
- {0x7A2C, 0xD861, 0xDED7},
- {0x7A2F, 0xD861, 0xDEFA},
- {0x7A4F, 0xD862, 0xDD49},
- {0x7A50, 0xD862, 0xDD46},
- {0x7A57, 0xD862, 0xDD6B},
- {0x7A65, 0xD862, 0xDD87},
- {0x7A66, 0xD862, 0xDD88},
- {0x7A71, 0xD862, 0xDDBA},
- {0x7A72, 0xD862, 0xDDBB},
- {0x7A7E, 0xD862, 0xDE1E},
- {0x7B21, 0xD862, 0xDE29},
- {0x7B2C, 0xD862, 0xDE71},
- {0x7B2D, 0xD862, 0xDE43},
- {0x7B36, 0xD862, 0xDE99},
- {0x7B37, 0xD862, 0xDECD},
- {0x7B3D, 0xD862, 0xDEE4},
- {0x7B3E, 0xD862, 0xDEDD},
- {0x7B4E, 0xD862, 0xDFC1},
- {0x7B4F, 0xD862, 0xDFEF},
- {0x7B57, 0xD863, 0xDD10},
- {0x7B5A, 0xD863, 0xDD71},
- {0x7B5C, 0xD863, 0xDDFB},
- {0x7B5D, 0xD863, 0xDE1F},
- {0x7B61, 0xD863, 0xDE36},
- {0x7B65, 0xD863, 0xDE89},
- {0x7B67, 0xD863, 0xDEEB},
- {0x7B69, 0xD863, 0xDF32},
- {0x7B71, 0xD863, 0xDFF8},
- {0x7C22, 0xD864, 0xDEA0},
- {0x7C23, 0xD864, 0xDEB1},
- {0x7C38, 0xD865, 0xDC90},
- {0x7C42, 0xD865, 0xDDCF},
- {0x7C4C, 0xD865, 0xDE7F},
- {0x7C56, 0xD865, 0xDEF0},
- {0x7C59, 0xD865, 0xDF19},
- {0x7C5D, 0xD865, 0xDF50},
- {0x7C76, 0xD866, 0xDCC6},
- {0x7D2C, 0xD866, 0xDE72},
- {0x7D4B, 0xD867, 0xDDDB},
- {0x7D4C, 0xD867, 0xDE3D},
- {0x7D59, 0xD867, 0xDE15},
- {0x7D5B, 0xD867, 0xDE8A},
- {0x7D5D, 0xD867, 0xDE49},
- {0x7D67, 0xD867, 0xDEC4},
- {0x7D6D, 0xD867, 0xDEE9},
- {0x7D70, 0xD867, 0xDEDB},
- {0x7E25, 0xD867, 0xDFCE},
- {0x7E29, 0xD868, 0xDC2F},
- {0x7E2B, 0xD868, 0xDC1A},
- {0x7E32, 0xD868, 0xDCF9},
- {0x7E35, 0xD868, 0xDC82},
- {0x7E53, 0xD848, 0xDE18},
- {0x7E58, 0xD868, 0xDF8C},
- {0x7E5A, 0xD869, 0xDC37},
- {0x7E6E, 0xD869, 0xDDF1},
- {0x7E70, 0xD869, 0xDE02},
- {0x7E72, 0xD869, 0xDE1A},
- {0x7E76, 0xD869, 0xDEB2},
-};
#endif /* UTF8_OUTPUT_ENABLE */
#ifdef UTF8_INPUT_ENABLE
@@ -3598,16 +2479,6 @@ static const unsigned short utf8_to_euc_C2_932[] = {
0x216B, 0x215E, 0x32, 0x33, 0x212D, 0x264C, 0x2279, 0x2126,
0x2124, 0x31, 0x6F, 0x2264, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_C2_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x2922, 0x2923, 0x2171, 0x2172, 0x2924, 0x216F, 0x2925, 0x2178,
- 0x212F, 0x2926, 0x2927, 0x2928, 0x224C, 0x2929, 0x292A, 0x292B,
- 0x216B, 0x215E, 0x292C, 0x292D, 0x212D, 0, 0x2279, 0x292E,
- 0x292F, 0x2930, 0x2931, 0x2932, 0x2933, 0x2934, 0x2935, 0x2936,
-};
static const unsigned short utf8_to_euc_C3[] = {
0xAA22, 0xAA21, 0xAA24, 0xAA2A, 0xAA23, 0xAA29, 0xA921, 0xAA2E,
0xAA32, 0xAA31, 0xAA34, 0xAA33, 0xAA40, 0xAA3F, 0xAA42, 0xAA41,
@@ -3628,16 +2499,6 @@ static const unsigned short utf8_to_euc_C3_932[] = {
0x64, 0x6E, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0x2160,
0x6F, 0x75, 0x75, 0x75, 0x75, 0x79, 0x74, 0x79,
};
-static const unsigned short utf8_to_euc_C3_x0213[] = {
- 0x2937, 0x2938, 0x2939, 0x293A, 0x293B, 0x293C, 0x293D, 0x293E,
- 0x293F, 0x2940, 0x2941, 0x2942, 0x2943, 0x2944, 0x2945, 0x2946,
- 0x2947, 0x2948, 0x2949, 0x294A, 0x294B, 0x294C, 0x294D, 0x215F,
- 0x294E, 0x294F, 0x2950, 0x2951, 0x2952, 0x2953, 0x2954, 0x2955,
- 0x2956, 0x2957, 0x2958, 0x2959, 0x295A, 0x295B, 0x295C, 0x295D,
- 0x295E, 0x295F, 0x2960, 0x2961, 0x2962, 0x2963, 0x2964, 0x2965,
- 0x2966, 0x2967, 0x2968, 0x2969, 0x296A, 0x296B, 0x296C, 0x2160,
- 0x296D, 0x296E, 0x296F, 0x2970, 0x2971, 0x2972, 0x2973, 0x2974,
-};
static const unsigned short utf8_to_euc_C4[] = {
0xAA27, 0xAB27, 0xAA25, 0xAB25, 0xAA28, 0xAB28, 0xAA2B, 0xAB2B,
0xAA2C, 0xAB2C, 0xAA2F, 0xAB2F, 0xAA2D, 0xAB2D, 0xAA30, 0xAB30,
@@ -3648,16 +2509,6 @@ static const unsigned short utf8_to_euc_C4[] = {
0xAA44, 0xA945, 0xA926, 0xA946, 0xAA48, 0xAB48, 0xAA49, 0xAB49,
0xA947, 0xAA4A, 0xAB4A, 0xAA4C, 0xAB4C, 0xAA4B, 0xAB4B, 0xA929,
};
-static const unsigned short utf8_to_euc_C4_x0213[] = {
- 0x2975, 0x297A, 0x2A3A, 0x2A49, 0x2A21, 0x2A2C, 0x2A3C, 0x2A4B,
- 0x2A59, 0x2A5F, 0xAA2F, 0xAB2F, 0x2A3D, 0x2A4C, 0x2A40, 0x2A4F,
- 0xA922, 0x2A50, 0x2978, 0x297D, 0, 0, 0xAA36, 0xAB36,
- 0x2A3E, 0x2A4D, 0x2A3F, 0x2A4E, 0x2A5A, 0x2A60, 0xAA3B, 0xAB3B,
- 0xAA3D, 0xAB3D, 0xAA3C, 0, 0x2A5B, 0x2A61, 0xA924, 0x2A7D,
- 0xAA47, 0xAB47, 0x2976, 0x297B, 0, 0, 0xAA46, 0xAB46,
- 0xAA44, 0xA945, 0xA926, 0xA946, 0x2A5C, 0x2A62, 0xAA49, 0xAB49,
- 0xA947, 0x2A3B, 0x2A4A, 0xAA4C, 0xAB4C, 0x2A24, 0x2A2F, 0xA929,
-};
static const unsigned short utf8_to_euc_C5[] = {
0xA949, 0xA928, 0xA948, 0xAA4D, 0xAB4D, 0xAA4F, 0xAB4F, 0xAA4E,
0xAB4E, 0xA94A, 0xA92B, 0xA94B, 0xAA57, 0xAB57, 0, 0,
@@ -3668,26 +2519,6 @@ static const unsigned short utf8_to_euc_C5[] = {
0xAA68, 0xAB68, 0xAA6A, 0xAB6A, 0xAA71, 0xAB71, 0xAA74, 0xAB74,
0xAA73, 0xAA75, 0xAB75, 0xAA77, 0xAB77, 0xAA76, 0xAB76, 0,
};
-static const unsigned short utf8_to_euc_C5_x0213[] = {
- 0xA949, 0x2A23, 0x2A2E, 0x2A41, 0x2A51, 0xAA4F, 0xAB4F, 0x2A42,
- 0x2A52, 0xA94A, 0xA92B, 0x2A7A, 0x2979, 0x297E, 0, 0,
- 0x2A43, 0x2A53, 0x2B2B, 0x2B2A, 0x2A39, 0x2A48, 0xAA5B, 0xAB5B,
- 0x2A44, 0x2A54, 0x2A25, 0x2A30, 0x2A5D, 0x2A63, 0x2A27, 0x2A33,
- 0x2A26, 0x2A32, 0x2A47, 0x2A57, 0x2A28, 0x2A34, 0xA92F, 0xA94F,
- 0xAA6C, 0xAB6C, 0x2977, 0x297C, 0x2A5E, 0x2A64, 0x2A45, 0x2A55,
- 0x2A46, 0x2A56, 0xAA6A, 0xAB6A, 0xAA71, 0xAB71, 0xAA74, 0xAB74,
- 0xAA73, 0x2A29, 0x2A35, 0x2A2B, 0x2A38, 0x2A2A, 0x2A37, 0,
-};
-static const unsigned short utf8_to_euc_C6_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0x2B29, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_C7[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0xAA26, 0xAB26, 0xAA43,
@@ -3698,36 +2529,6 @@ static const unsigned short utf8_to_euc_C7[] = {
0, 0, 0, 0, 0, 0xAB39, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_C7_x0213[] = {
- 0, 0, 0x2B24, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0x286F, 0x2870, 0xAA43,
- 0x2871, 0x2876, 0x2877, 0xAA67, 0x2878, 0xAA70, 0x2879, 0xAA6D,
- 0x287A, 0xAA6F, 0x287B, 0xAA6E, 0x287C, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0xAB39, 0, 0,
- 0x2874, 0x2875, 0, 0, 0, 0x2B45, 0, 0,
-};
-static const unsigned short utf8_to_euc_C9_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x2B33, 0x2B39, 0x2B3A, 0x2B25, 0x2B38, 0x2B3F, 0x2A6E, 0x2B26,
- 0x2B2E, 0x2B30, 0x2B43, 0, 0x2B31, 0, 0x2B32, 0x2A75,
- 0x2B28, 0x2A79, 0, 0, 0x2B36, 0x2B3C, 0x2B22, 0x2B42,
- 0x2B2C, 0, 0, 0, 0x2A6A, 0x2A74, 0x2A6B, 0x2B34,
- 0x2A7B, 0x2A65, 0x2A76, 0x2A6F, 0, 0x2B2F, 0, 0,
- 0, 0x2A6C, 0x2B41, 0x2A73, 0, 0x2A70, 0x2A67, 0,
-};
-static const unsigned short utf8_to_euc_CA_x0213[] = {
- 0, 0x2A7C, 0x2A71, 0x2A68, 0x2B27, 0, 0, 0,
- 0x2A6D, 0x2B2D, 0x2B35, 0x2A66, 0x2B37, 0x2B3B, 0x2A78, 0,
- 0x2A72, 0x2B40, 0x2A69, 0, 0x2B21, 0x2A7E, 0, 0,
- 0x2B23, 0, 0, 0, 0, 0x2A77, 0, 0,
- 0, 0x2B3E, 0x2B3D, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_CB[] = {
0, 0, 0, 0, 0, 0, 0, 0xA230,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -3738,36 +2539,6 @@ static const unsigned short utf8_to_euc_CB[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_CB_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0x2A31,
- 0x2B53, 0, 0, 0, 0x2B54, 0, 0, 0,
- 0x2B55, 0x2B56, 0, 0, 0, 0, 0, 0,
- 0x2A22, 0x2A58, 0xA236, 0x2A2D, 0, 0x2A36, 0x2B71, 0,
- 0, 0, 0, 0, 0, 0x2B60, 0x2B61, 0x2B62,
- 0x2B63, 0x2B64, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_CC_x0213[] = {
- 0x2B5C, 0x2B5A, 0x2B5F, 0x2B7D, 0x2B5B, 0, 0x2B57, 0,
- 0x2B6D, 0, 0, 0x2B59, 0x2B5E, 0, 0, 0x2B5D,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x2B78, 0x2B79, 0x2B7E, 0, 0x2B6A, 0x2B76, 0x2B77, 0x2B6B,
- 0x2B6C, 0, 0, 0, 0x2B72, 0x2B67, 0, 0,
- 0, 0x2B6F, 0x2B7A, 0, 0x2B68, 0, 0, 0x2B70,
- 0x2B73, 0, 0, 0, 0x2B75, 0, 0, 0,
- 0, 0x2B69, 0x2B7B, 0x2B7C, 0x2B74, 0x2B6E, 0, 0,
-};
-static const unsigned short utf8_to_euc_CD_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0x2B52, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_CE[] = {
0, 0, 0, 0, 0xA238, 0xA239, 0xA661, 0,
0xA662, 0xA663, 0xA664, 0, 0xA667, 0, 0xA669, 0xA66C,
@@ -3788,16 +2559,6 @@ static const unsigned short utf8_to_euc_CF[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_CF_x0213[] = {
- 0x2650, 0x2651, 0x2659, 0x2652, 0x2653, 0x2654, 0x2655, 0x2656,
- 0x2657, 0x2658, 0xA675, 0xA67A, 0xA677, 0xA679, 0xA67C, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_D0[] = {
0, 0x2727, 0xA742, 0xA743, 0xA744, 0xA745, 0xA746, 0xA747,
0xA748, 0xA749, 0xA74A, 0xA74B, 0xA74C, 0, 0xA74D, 0xA74E,
@@ -3818,26 +2579,6 @@ static const unsigned short utf8_to_euc_D1[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E1B8_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0x2872, 0x2873,
-};
-static const unsigned short utf8_to_euc_E1BD_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x2B46, 0x2B47, 0x2B50, 0x2B51, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E280[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -3868,36 +2609,6 @@ static const unsigned short utf8_to_euc_E280_932[] = {
0x2273, 0, 0x216C, 0x216D, 0, 0, 0, 0,
0, 0, 0, 0x2228, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E280_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x213E, 0, 0, 0x237C, 0x213D, 0x213D, 0x2142, 0,
- 0x2146, 0x2147, 0, 0, 0x2148, 0x2149, 0, 0,
- 0x2277, 0x2278, 0x2340, 0, 0, 0x2145, 0x2144, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x2273, 0, 0x216C, 0x216D, 0, 0, 0, 0,
- 0, 0, 0, 0x2228, 0x286B, 0, 0x2131, 0x2B58,
-};
-static const unsigned short utf8_to_euc_E281_x0213[] = {
- 0, 0, 0x2C7E, 0, 0, 0, 0, 0x286C,
- 0x286D, 0x286E, 0, 0, 0, 0, 0, 0,
- 0, 0x2C7D, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E282_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0x2921, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E284[] = {
0, 0, 0, 0x216E, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -3918,16 +2629,6 @@ static const unsigned short utf8_to_euc_E284_mac[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E284_x0213[] = {
- 0, 0, 0, 0x216E, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0x235D,
- 0, 0, 0, 0x235F, 0, 0, 0x2D62, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0x2D64, 0xA26F, 0, 0, 0, 0, 0x2360,
- 0, 0, 0, 0x2272, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0x235C, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E285[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -3948,16 +2649,6 @@ static const unsigned short utf8_to_euc_E285_mac[] = {
0x2A35, 0x2A36, 0x2A37, 0x2A38, 0x2A39, 0x2A3A, 0x2A3B, 0x2A3C,
0x2A3D, 0x2A3E, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E285_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0x2778, 0x2779, 0x277A, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x2D35, 0x2D36, 0x2D37, 0x2D38, 0x2D39, 0x2D3A, 0x2D3B, 0x2D3C,
- 0x2D3D, 0x2D3E, 0x2D3F, 0x2D57, 0, 0, 0, 0,
- 0x2C35, 0x2C36, 0x2C37, 0x2C38, 0x2C39, 0x2C3A, 0x2C3B, 0x2C3C,
- 0x2C3D, 0x2C3E, 0x2C3F, 0x2C40, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E286[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -3968,16 +2659,6 @@ static const unsigned short utf8_to_euc_E286[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E286_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x222B, 0x222C, 0x222A, 0x222D, 0x2271, 0, 0x2327, 0x2325,
- 0x2326, 0x2328, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E287[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -3988,16 +2669,6 @@ static const unsigned short utf8_to_euc_E287[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E287_x0213[] = {
- 0, 0, 0, 0, 0x2329, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0x224D, 0, 0x224E, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0x232B, 0x232C,
- 0x232A, 0x232D, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E288[] = {
0x224F, 0, 0x225F, 0x2250, 0, 0, 0, 0x2260,
0x223A, 0, 0, 0x223B, 0, 0, 0, 0,
@@ -4028,16 +2699,6 @@ static const unsigned short utf8_to_euc_E288_mac[] = {
0, 0, 0, 0, 0x2168, 0x2268, 0, 0,
0, 0, 0, 0, 0, 0x2266, 0, 0,
};
-static const unsigned short utf8_to_euc_E288_x0213[] = {
- 0x224F, 0, 0x225F, 0x2250, 0, 0x2247, 0, 0x2260,
- 0x223A, 0x2246, 0, 0x223B, 0, 0, 0, 0,
- 0, 0x2D74, 0x215D, 0x235B, 0, 0, 0, 0,
- 0, 0, 0x2265, 0, 0, 0x2267, 0x2167, 0x2D78,
- 0x225C, 0, 0, 0, 0, 0x2254, 0x2255, 0x224A,
- 0x224B, 0x2241, 0x2240, 0x2269, 0x226A, 0, 0x2D73, 0,
- 0, 0, 0, 0, 0x2168, 0x2268, 0, 0,
- 0, 0, 0, 0, 0, 0x2266, 0, 0,
-};
static const unsigned short utf8_to_euc_E289[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -4048,16 +2709,6 @@ static const unsigned short utf8_to_euc_E289[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E289_x0213[] = {
- 0, 0, 0, 0x226C, 0, 0x226D, 0, 0,
- 0x226E, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0x2262, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x2162, 0x2261, 0x226B, 0, 0, 0, 0x2165, 0x2166,
- 0, 0, 0x2263, 0x2264, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0x226F, 0x2270,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E28A[] = {
0, 0, 0x223E, 0x223F, 0, 0, 0x223C, 0x223D,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -4078,26 +2729,6 @@ static const unsigned short utf8_to_euc_E28A_mac[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0x2F23,
};
-static const unsigned short utf8_to_euc_E28A_x0213[] = {
- 0, 0, 0x223E, 0x223F, 0x2242, 0x2243, 0x223C, 0x223D,
- 0, 0, 0x2244, 0x2245, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0x2251, 0x2252, 0x2253,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0x225D, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0x2D79,
-};
-static const unsigned short utf8_to_euc_E28B_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0x2776, 0x2777, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E28C[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -4108,46 +2739,6 @@ static const unsigned short utf8_to_euc_E28C[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E28C_x0213[] = {
- 0, 0, 0, 0, 0, 0x2248, 0x2249, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0x225E, 0, 0, 0, 0, 0,
- 0x277C, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E28E_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0x2742, 0x2743,
-};
-static const unsigned short utf8_to_euc_E28F_x0213[] = {
- 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749, 0x274A, 0x274B,
- 0x274C, 0x274D, 0x274E, 0x274F, 0x2750, 0, 0x277E, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E290_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0x277D, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E291[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -4168,16 +2759,6 @@ static const unsigned short utf8_to_euc_E291_mac[] = {
0x2931, 0x2932, 0x2933, 0x2934, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E293_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x2C41, 0x2C42, 0x2C43, 0x2C44, 0x2C45, 0x2C46, 0x2C47, 0x2C48,
- 0x2C49, 0x2C4A, 0x2C4B, 0x2C4C, 0x2C4D, 0x2C4E, 0x2C4F, 0x2C50,
- 0x2C51, 0x2C52, 0x2C53, 0x2C54, 0x2C55, 0x2C56, 0x2C57, 0x2C58,
- 0x2C59, 0x2C5A, 0, 0x2C2B, 0x2C2C, 0x2C2D, 0x2C2E, 0x2C2F,
- 0x2C30, 0x2C31, 0x2C32, 0x2C33, 0x2C34, 0x265A, 0x265B, 0x265C,
- 0x265D, 0x265E, 0x265F, 0x2660, 0x2661, 0x2662, 0x2663, 0,
-};
static const unsigned short utf8_to_euc_E294[] = {
0x2821, 0x282C, 0x2822, 0x282D, 0, 0, 0, 0,
0, 0, 0, 0, 0x2823, 0, 0, 0x282E,
@@ -4208,16 +2789,6 @@ static const unsigned short utf8_to_euc_E296[] = {
0, 0, 0x2225, 0x2224, 0, 0, 0, 0,
0, 0, 0, 0, 0x2227, 0x2226, 0, 0,
};
-static const unsigned short utf8_to_euc_E296_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x2223, 0x2222, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0x266D, 0x2225, 0x2224, 0, 0, 0x2322, 0x2321,
- 0, 0, 0, 0, 0x2227, 0x2226, 0, 0,
-};
static const unsigned short utf8_to_euc_E297[] = {
0, 0, 0, 0, 0, 0, 0x2221, 0x217E,
0, 0, 0, 0x217B, 0, 0, 0x217D, 0x217C,
@@ -4228,16 +2799,6 @@ static const unsigned short utf8_to_euc_E297[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E297_x0213[] = {
- 0x2324, 0x2323, 0, 0, 0, 0, 0x2221, 0x217E,
- 0, 0x233B, 0, 0x217B, 0, 0, 0x217D, 0x217C,
- 0x2867, 0x2868, 0x2869, 0x286A, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0x233F, 0,
- 0, 0, 0, 0, 0, 0, 0, 0x227E,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E298[] = {
0, 0, 0, 0, 0, 0x217A, 0x2179, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -4248,16 +2809,6 @@ static const unsigned short utf8_to_euc_E298[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E298_x0213[] = {
- 0x2668, 0x2669, 0x266A, 0x266B, 0, 0x217A, 0x2179, 0,
- 0, 0, 0, 0, 0, 0, 0x2667, 0,
- 0, 0, 0, 0, 0, 0, 0x2664, 0x2665,
- 0, 0, 0, 0, 0, 0, 0x2D7E, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E299[] = {
0x216A, 0, 0x2169, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -4268,66 +2819,6 @@ static const unsigned short utf8_to_euc_E299[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E299_x0213[] = {
- 0x216A, 0, 0x2169, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x263A, 0x263D, 0x263B, 0x2640, 0x2639, 0x263E, 0x263C, 0x263F,
- 0x266C, 0x227D, 0x2276, 0x227B, 0x227C, 0x2275, 0x227A, 0x2274,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E29C_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0x277B, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E29D_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0x2D7D, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0x2C21, 0x2C22,
- 0x2C23, 0x2C24, 0x2C25, 0x2C26, 0x2C27, 0x2C28, 0x2C29, 0x2C2A,
-};
-static const unsigned short utf8_to_euc_E2A4_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0x232E, 0x232F, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E2A6_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0x233A,
-};
-static const unsigned short utf8_to_euc_E2A7_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0x237D, 0x237E, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E380[] = {
0x2121, 0x2122, 0x2123, 0x2137, 0, 0x2139, 0x213A, 0x213B,
0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159,
@@ -4348,16 +2839,6 @@ static const unsigned short utf8_to_euc_E380_932[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E380_x0213[] = {
- 0x2121, 0x2122, 0x2123, 0x2137, 0, 0x2139, 0x213A, 0x213B,
- 0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159,
- 0x215A, 0x215B, 0x2229, 0x222E, 0x214C, 0x214D, 0x225A, 0x225B,
- 0x2258, 0x2259, 0, 0, 0x2141, 0x2D60, 0, 0x2D61,
- 0x2666, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0x2233, 0x2234, 0x2235, 0, 0,
- 0, 0, 0, 0x2236, 0x2237, 0x233C, 0, 0,
-};
static const unsigned short utf8_to_euc_E381[] = {
0, 0x2421, 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427,
0x2428, 0x2429, 0x242A, 0x242B, 0x242C, 0x242D, 0x242E, 0x242F,
@@ -4388,16 +2869,6 @@ static const unsigned short utf8_to_euc_E382_932[] = {
0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537,
0x2538, 0x2539, 0x253A, 0x253B, 0x253C, 0x253D, 0x253E, 0x253F,
};
-static const unsigned short utf8_to_euc_E382_x0213[] = {
- 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
- 0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D, 0x246E, 0x246F,
- 0x2470, 0x2471, 0x2472, 0x2473, 0x2474, 0x2475, 0x2476, 0,
- 0, 0, 0, 0x212B, 0x212C, 0x2135, 0x2136, 0x2239,
- 0x237B, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527,
- 0x2528, 0x2529, 0x252A, 0x252B, 0x252C, 0x252D, 0x252E, 0x252F,
- 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537,
- 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, 0x253D, 0x253E, 0x253F,
-};
static const unsigned short utf8_to_euc_E383[] = {
0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547,
0x2548, 0x2549, 0x254A, 0x254B, 0x254C, 0x254D, 0x254E, 0x254F,
@@ -4408,26 +2879,6 @@ static const unsigned short utf8_to_euc_E383[] = {
0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0,
0, 0, 0, 0x2126, 0x213C, 0x2133, 0x2134, 0,
};
-static const unsigned short utf8_to_euc_E383_x0213[] = {
- 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547,
- 0x2548, 0x2549, 0x254A, 0x254B, 0x254C, 0x254D, 0x254E, 0x254F,
- 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557,
- 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E, 0x255F,
- 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567,
- 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x256D, 0x256E, 0x256F,
- 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x2772,
- 0x2773, 0x2774, 0x2775, 0x2126, 0x213C, 0x2133, 0x2134, 0x2238,
-};
-static const unsigned short utf8_to_euc_E387_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x266E, 0x266F, 0x2670, 0x2671, 0x2672, 0x2673, 0x2674, 0x2675,
- 0x2676, 0x2677, 0x2679, 0x267A, 0x267B, 0x267C, 0x267D, 0x267E,
-};
static const unsigned short utf8_to_euc_E388[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -4448,16 +2899,6 @@ static const unsigned short utf8_to_euc_E388_mac[] = {
0, 0x2D2E, 0x2D31, 0, 0, 0, 0, 0,
0, 0x2D2C, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E389_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0x2841, 0x2842, 0x2843, 0x2844, 0x2845, 0x2846, 0x2847,
- 0x2848, 0x2849, 0x284A, 0x284B, 0x284C, 0x284D, 0x284E, 0x284F,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E38A[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -4478,26 +2919,6 @@ static const unsigned short utf8_to_euc_E38A_mac[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E38A_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0x2D65, 0x2D66, 0x2D67, 0x2D68,
- 0x2D69, 0, 0, 0, 0, 0, 0, 0,
- 0, 0x2850, 0x2851, 0x2852, 0x2853, 0x2854, 0x2855, 0x2856,
- 0x2857, 0x2858, 0x2859, 0x285A, 0x285B, 0x285C, 0x285D, 0x285E,
-};
-static const unsigned short utf8_to_euc_E38B_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x2C5B, 0x2C5C, 0x2C5D, 0x2C5E, 0x2C5F, 0x2C60, 0x2C61, 0x2C62,
- 0x2C63, 0x2C64, 0x2C65, 0x2C66, 0x2C67, 0x2C68, 0x2C69, 0x2C6A,
- 0x2C6B, 0x2C6C, 0x2C6D, 0x2C6E, 0, 0x2C71, 0, 0,
- 0, 0x2C70, 0, 0, 0x2C73, 0x2C72, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0x2C6F, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E38C[] = {
0, 0, 0, 0x2D46, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0x2D4A, 0, 0,
@@ -4578,796 +2999,6 @@ static const unsigned short utf8_to_euc_E38F_mac[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E38F_x0213[] = {
- 0, 0, 0, 0, 0x2D55, 0, 0, 0,
- 0, 0, 0, 0x235E, 0, 0x2D63, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E390_x0213[] = {
- 0, 0, 0x2E23, 0, 0, 0, 0xA12D, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0xA132, 0, 0xA133, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E391_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0xA15E, 0, 0xA156, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E392_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0xA17E, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0x2E53, 0, 0,
- 0, 0, 0, 0, 0xA32B, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E393_x0213[] = {
- 0, 0xF468, 0, 0, 0, 0, 0, 0xA32F,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0x2E5B, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E394_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xA348,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E395_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0xA35D, 0xA35E, 0,
- 0, 0, 0, 0xA361, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xA367, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E396_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xA423, 0,
- 0xA426, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E397_x0213[] = {
- 0, 0, 0, 0, 0, 0xA42F, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0xA438, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0xA442, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E398_x0213[] = {
- 0, 0, 0, 0, 0, 0xA44A, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E399_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0xA479, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E39A_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0xA53F, 0, 0, 0, 0, 0xA543, 0,
- 0, 0xA541, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E39B_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xA557,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E39D_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0xA823, 0xA825, 0, 0, 0, 0, 0,
- 0, 0, 0, 0xA829, 0xA828, 0, 0, 0,
- 0, 0, 0, 0, 0, 0xA82C, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E39E_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0x4F5F, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E39F_x0213[] = {
- 0, 0xA83E, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0x4F6F, 0, 0, 0, 0, 0,
- 0xA856, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0xA859, 0, 0, 0,
- 0, 0, 0, 0, 0, 0xA85C, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3A0_x0213[] = {
- 0xA85E, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xA86F,
- 0, 0, 0, 0, 0, 0, 0xA871, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3A1_x0213[] = {
- 0xA874, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0xA879, 0, 0, 0,
- 0, 0xA87B, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3A3_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0xAC3B, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3A4_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xAC46,
- 0, 0, 0xAC4A, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3A5_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xAC60,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3A9_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xAD5B, 0,
- 0, 0, 0, 0xAD5F, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3AB_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xAD71, 0xAE36,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0xAD7C, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3AC_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xAE2E, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0xAE32, 0, 0xAE34, 0, 0, 0,
- 0, 0, 0x7549, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3AD_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0xAE6D, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xAE65,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3AE_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0xAF28,
- 0xAF29, 0, 0, 0, 0, 0xAF2C, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0xAF34, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0x757E, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3AF_x0213[] = {
- 0, 0, 0, 0x7621, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0xAF48, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0xAF5D, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3B0_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0x763A,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xAF77, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3B3_x0213[] = {
- 0, 0, 0, 0xEE3B, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0xEE42, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3B4_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0xEE71, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xEE7E, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3B5_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0xEF40, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3B6_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0xEF54, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3B7_x0213[] = {
- 0xEF70, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0xEF77, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3B8_x0213[] = {
- 0, 0, 0, 0, 0, 0xF028, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0x7766,
-};
-static const unsigned short utf8_to_euc_E3B9_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0xF03F, 0, 0, 0, 0, 0, 0xF041, 0,
- 0xF042, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3BA_x0213[] = {
- 0, 0, 0, 0xF049, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0xF050, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3BD_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xF134,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0x784D, 0, 0, 0xF146, 0, 0xF148,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3BE_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xF15C, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E3BF_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0xF167, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xF16C,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E480_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0xF222, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E481_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0xF22D, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E482_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0xF239, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E484_x0213[] = {
- 0, 0, 0, 0, 0, 0xF264, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E485_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0xF274, 0, 0, 0, 0, 0, 0, 0xF277,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0xF27D, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E486_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0xF333, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xF337,
-};
-static const unsigned short utf8_to_euc_E487_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xF347, 0,
- 0, 0, 0, 0, 0, 0, 0xF34B, 0,
- 0, 0, 0, 0xF348, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E488_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0xF353,
- 0, 0, 0, 0, 0, 0, 0xF357, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E489_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0x796D, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E48B_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0xF42B, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xF436, 0,
- 0, 0, 0, 0, 0, 0xF43B, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E48C_x0213[] = {
- 0, 0, 0xF44E, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0xF45D, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E48D_x0213[] = {
- 0, 0, 0, 0xF461, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E48F_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xF53E, 0,
- 0xF542, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E490_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0xF548, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xF54A,
- 0, 0, 0, 0, 0xF54C, 0, 0, 0,
- 0, 0, 0xF54F, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E491_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0x7A59, 0, 0, 0, 0,
- 0, 0, 0, 0x7A5A, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xF56C, 0,
- 0, 0, 0xF56E, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E492_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0xF577, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0xF635, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xF632, 0,
-};
-static const unsigned short utf8_to_euc_E493_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0xF634, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E494_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0xF659, 0, 0, 0, 0, 0xF654, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0xF66D, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E495_x0213[] = {
- 0, 0, 0, 0xF66E, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E496_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0x7B51, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0xF74F, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E497_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0xF76C, 0, 0,
- 0, 0, 0x7B60, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E498_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xF824,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E499_x0213[] = {
- 0, 0xF83A, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0xF843, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E49A_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0xF84E, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xF853,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E49C_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0xF86B, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E49D_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0xF929, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E49F_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0xF93F, 0, 0,
-};
-static const unsigned short utf8_to_euc_E4A0_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xF949, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E4A1_x0213[] = {
- 0, 0, 0, 0, 0x7C4B, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xF95C, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E4A2_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0xFA27, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E4A6_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x7D58, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E4A7_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xFB6A,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0xFB70, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E4A8_x0213[] = {
- 0, 0, 0, 0, 0xFB75, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0xFB78, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E4AA_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0xFC37, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E4AC_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0xFC55, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E4AF_x0213[] = {
- 0, 0, 0xFD26, 0, 0, 0, 0, 0,
- 0, 0, 0xFD28, 0, 0, 0, 0, 0,
- 0, 0, 0xFD2A, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0xFD31, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E4B0_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0x7E3E,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0xFD3F, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E4B3_x0213[] = {
- 0, 0, 0, 0, 0xFE2A, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0xFE2D, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E4B4_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0xFE4B,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_E4B5_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xFE60,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E4B8[] = {
0x306C, 0x437A, 0xB021, 0x3C37, 0xB022, 0xB023, 0, 0x4B7C,
0x3E66, 0x3B30, 0x3E65, 0x323C, 0xB024, 0x4954, 0x4D3F, 0,
@@ -5378,16 +3009,6 @@ static const unsigned short utf8_to_euc_E4B8[] = {
0xB02D, 0x5025, 0x367A, 0, 0, 0xB02E, 0x5026, 0,
0x345D, 0x4330, 0, 0x3C67, 0x5027, 0, 0, 0x5028,
};
-static const unsigned short utf8_to_euc_E4B8_x0213[] = {
- 0x306C, 0x437A, 0xA122, 0x3C37, 0xB022, 0xB023, 0, 0x4B7C,
- 0x3E66, 0x3B30, 0x3E65, 0x323C, 0xB024, 0x4954, 0x4D3F, 0xA123,
- 0x5022, 0x312F, 0xA124, 0, 0x336E, 0x5023, 0x4024, 0x5242,
- 0x3556, 0x4A3A, 0, 0, 0, 0, 0x3E67, 0xB026,
- 0, 0x4E3E, 0, 0xB027, 0xB028, 0, 0x4A42, 0,
- 0x2E24, 0xA125, 0x5024, 0xA126, 0xF02E, 0x4366, 0xA127, 0x2E25,
- 0x2E26, 0x5025, 0x367A, 0, 0, 0xB02E, 0x5026, 0,
- 0x345D, 0x4330, 0, 0x3C67, 0x5027, 0, 0, 0x5028,
-};
static const unsigned short utf8_to_euc_E4B9[] = {
0xB02F, 0xB030, 0x5029, 0x4735, 0xB031, 0x3557, 0, 0xB032,
0, 0, 0, 0x4737, 0, 0x4663, 0x3843, 0x4B33,
@@ -5398,16 +3019,6 @@ static const unsigned short utf8_to_euc_E4B9[] = {
0, 0x4D70, 0, 0x467D, 0xB039, 0xB03A, 0, 0,
0, 0xB03B, 0, 0, 0, 0, 0x3425, 0xB03C,
};
-static const unsigned short utf8_to_euc_E4B9_x0213[] = {
- 0xA128, 0xB030, 0x5029, 0x4735, 0xB031, 0x3557, 0, 0xA129,
- 0xA12A, 0, 0, 0x4737, 0, 0x4663, 0x3843, 0x4B33,
- 0, 0xA12C, 0, 0, 0, 0x6949, 0x502A, 0x3E68,
- 0x502B, 0x3235, 0xA12F, 0, 0xB035, 0x3665, 0x3870, 0x4C69,
- 0, 0, 0x5626, 0xB036, 0, 0, 0, 0,
- 0xB037, 0xA130, 0, 0, 0, 0, 0, 0,
- 0, 0x4D70, 0, 0x467D, 0xB039, 0xB03A, 0, 0,
- 0, 0xB03B, 0, 0, 0, 0, 0x3425, 0xB03C,
-};
static const unsigned short utf8_to_euc_E4BA[] = {
0x3535, 0, 0x502C, 0, 0, 0x502D, 0x4E3B, 0,
0x4D3D, 0x4168, 0x502F, 0x3B76, 0x4673, 0xB03D, 0x5032, 0,
@@ -5418,16 +3029,6 @@ static const unsigned short utf8_to_euc_E4BA[] = {
0x5037, 0, 0, 0x5038, 0, 0, 0x5039, 0,
0, 0xB042, 0x3F4D, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E4BA_x0213[] = {
- 0x3535, 0, 0x502C, 0, 0, 0x502D, 0x4E3B, 0,
- 0x4D3D, 0x4168, 0x502F, 0x3B76, 0x4673, 0x2E27, 0x5032, 0,
- 0, 0x313E, 0x385F, 0, 0x385E, 0x3066, 0xB03E, 0xB03F,
- 0x4F4B, 0x4F4A, 0, 0x3A33, 0x3021, 0xA131, 0x5033, 0x5034,
- 0x5035, 0x4B34, 0x5036, 0, 0x3872, 0x3067, 0x4B72, 0,
- 0x357C, 0, 0, 0x357D, 0x357E, 0x4462, 0x4E3C, 0xB041,
- 0x5037, 0, 0, 0x5038, 0, 0, 0x5039, 0,
- 0, 0xA134, 0x3F4D, 0xA135, 0xA137, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E4BB[] = {
0x3D3A, 0x3F4E, 0x503E, 0xB043, 0x503C, 0, 0x503D, 0x3558,
0, 0, 0x3A23, 0x3270, 0, 0x503B, 0x503A, 0x4A29,
@@ -5438,16 +3039,6 @@ static const unsigned short utf8_to_euc_E4BB[] = {
0x3644, 0xB04C, 0x4367, 0xB04D, 0, 0xB04E, 0x376F, 0x5043,
0, 0, 0, 0x4724, 0xF42F, 0xB04F, 0xB050, 0xB051,
};
-static const unsigned short utf8_to_euc_E4BB_x0213[] = {
- 0x3D3A, 0x3F4E, 0x503E, 0xA138, 0x503C, 0, 0x503D, 0x3558,
- 0xA139, 0, 0x3A23, 0x3270, 0, 0x503B, 0x503A, 0x4A29,
- 0xA13A, 0, 0, 0, 0x3B46, 0x3B45, 0x423E, 0x503F,
- 0x4955, 0x4067, 0xA13C, 0xB046, 0, 0x2138, 0x5040, 0x5042,
- 0xB047, 0x2E28, 0xB049, 0x4265, 0x4E61, 0x304A, 0, 0,
- 0xB04A, 0, 0, 0xA13B, 0, 0x5041, 0x323E, 0xB04B,
- 0x3644, 0xA13D, 0x4367, 0xB04D, 0, 0xA13E, 0x376F, 0x5043,
- 0, 0, 0, 0x4724, 0xF42F, 0x2E29, 0xB050, 0x2E2A,
-};
static const unsigned short utf8_to_euc_E4BC[] = {
0xB052, 0x346B, 0xB053, 0xB054, 0, 0, 0, 0,
0xB055, 0x5044, 0x304B, 0xB056, 0xB057, 0x3860, 0x346C, 0x497A,
@@ -5458,16 +3049,6 @@ static const unsigned short utf8_to_euc_E4BC[] = {
0x5046, 0xB05E, 0, 0xB060, 0x483C, 0xB061, 0x4E62, 0xB062,
0x3F2D, 0xB063, 0x3B47, 0xB064, 0x3B77, 0x3240, 0xB065, 0,
};
-static const unsigned short utf8_to_euc_E4BC_x0213[] = {
- 0xA13F, 0x346B, 0xB053, 0x2E2B, 0, 0, 0, 0,
- 0xB055, 0x5044, 0x304B, 0x2E2C, 0xB057, 0x3860, 0x346C, 0x497A,
- 0x4832, 0x3559, 0xB058, 0, 0, 0xB059, 0xA140, 0xB05B,
- 0, 0xB05C, 0x3271, 0, 0x5067, 0x4541, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xB05D, 0x476C,
- 0x5046, 0xB05E, 0, 0xB060, 0x483C, 0xB061, 0x4E62, 0xA142,
- 0x3F2D, 0xB063, 0x3B47, 0xB064, 0x3B77, 0x3240, 0xA143, 0,
-};
static const unsigned short utf8_to_euc_E4BD[] = {
0xB066, 0, 0xB067, 0x4451, 0, 0, 0x4322, 0x504A,
0xB068, 0xB069, 0, 0xB06A, 0xB06B, 0x304C, 0x4463, 0x3D3B,
@@ -5478,16 +3059,6 @@ static const unsigned short utf8_to_euc_E4BD[] = {
0x5051, 0xB075, 0, 0x3242, 0, 0x4A3B, 0x504B, 0xB076,
0xB077, 0xB078, 0xB079, 0x504F, 0x3873, 0xB07A, 0xB07B, 0x3B48,
};
-static const unsigned short utf8_to_euc_E4BD_x0213[] = {
- 0xB066, 0, 0xB067, 0x4451, 0, 0, 0x4322, 0x504A,
- 0x2E2E, 0x2E2F, 0, 0xB06A, 0xB06B, 0x304C, 0x4463, 0x3D3B,
- 0x3A34, 0x4D24, 0xB06C, 0x424E, 0xA144, 0x323F, 0x2E30, 0x5049,
- 0xA145, 0x4D3E, 0x5045, 0x5047, 0x3A6E, 0x5048, 0x5524, 0x2E31,
- 0x2E2D, 0, 0, 0xB071, 0xA141, 0, 0, 0,
- 0, 0x5050, 0x2E32, 0, 0x2E33, 0, 0xB074, 0x5053,
- 0x5051, 0xB075, 0, 0x3242, 0, 0x4A3B, 0x504B, 0xA147,
- 0xA148, 0xB078, 0xA149, 0x504F, 0x3873, 0xA14A, 0x2E34, 0x3B48,
-};
static const unsigned short utf8_to_euc_E4BE[] = {
0, 0xB07C, 0xB07D, 0x3426, 0xB07E, 0xB121, 0x5054, 0,
0x504C, 0xB122, 0xB123, 0x4E63, 0xB124, 0x3B78, 0xB125, 0x504D,
@@ -5498,16 +3069,6 @@ static const unsigned short utf8_to_euc_E4BE[] = {
0, 0, 0xB12F, 0, 0, 0x3F2F, 0x4E37, 0xB130,
0, 0xB131, 0, 0xB132, 0xB133, 0xB134, 0xB135, 0x4A58,
};
-static const unsigned short utf8_to_euc_E4BE_x0213[] = {
- 0, 0xB07C, 0xA14B, 0x3426, 0xB07E, 0xA14C, 0x5054, 0,
- 0x504C, 0xB122, 0x2E35, 0x4E63, 0xB124, 0x3B78, 0xB125, 0x504D,
- 0xB126, 0x5052, 0xA14D, 0xB128, 0x2E36, 0, 0x5055, 0x2E37,
- 0x504E, 0xB12B, 0xA14E, 0x3621, 0, 0x304D, 0xB12D, 0xB12E,
- 0x3622, 0x3241, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0x5525, 0, 0x4B79, 0x496E, 0x3874,
- 0, 0, 0xA150, 0, 0, 0x3F2F, 0x4E37, 0xB130,
- 0, 0xB131, 0, 0xB132, 0xB133, 0xB134, 0xA151, 0x4A58,
-};
static const unsigned short utf8_to_euc_E4BF[] = {
0xB136, 0xB137, 0x3738, 0x4225, 0x3264, 0xB138, 0xB139, 0,
0xB13A, 0xB13B, 0x3D53, 0xB13C, 0xB13D, 0xB13E, 0x5059, 0xB13F,
@@ -5518,16 +3079,6 @@ static const unsigned short utf8_to_euc_E4BF[] = {
0xB144, 0, 0xB145, 0x4750, 0, 0x4936, 0x5068, 0,
0x4A70, 0, 0x3236, 0, 0xB146, 0xB147, 0x506C, 0xB148,
};
-static const unsigned short utf8_to_euc_E4BF_x0213[] = {
- 0xB136, 0xB137, 0x3738, 0x4225, 0x3264, 0xA152, 0xB139, 0,
- 0xB13A, 0x2E39, 0x3D53, 0xA153, 0xB13D, 0xB13E, 0x5059, 0xA154,
- 0x505E, 0x505C, 0xA155, 0, 0x5057, 0, 0, 0x422F,
- 0x505A, 0, 0x505D, 0x505B, 0xB141, 0x4A5D, 0, 0x5058,
- 0x2E3A, 0x3F2E, 0xB143, 0x4B73, 0x505F, 0x5060, 0xA14F, 0,
- 0, 0, 0, 0, 0, 0, 0x3D24, 0x506D,
- 0xB144, 0x2E21, 0xA157, 0x4750, 0, 0x4936, 0x5068, 0,
- 0x4A70, 0, 0x3236, 0, 0xB146, 0xB147, 0x506C, 0xB148,
-};
static const unsigned short utf8_to_euc_E580[] = {
0xB149, 0xB14A, 0, 0, 0xB14B, 0x5066, 0x506F, 0xB14C,
0, 0x4152, 0xB14D, 0x3844, 0xB14E, 0x475C, 0xB14F, 0x6047,
@@ -5538,16 +3089,6 @@ static const unsigned short utf8_to_euc_E580[] = {
0xB15B, 0, 0xB15C, 0xB15D, 0, 0xB15E, 0x3666, 0,
0, 0x3770, 0, 0xB176, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E580_x0213[] = {
- 0xA158, 0x2E3B, 0x2E3C, 0, 0xB14B, 0x5066, 0x506F, 0xB14C,
- 0, 0x4152, 0xB14D, 0x3844, 0xB14E, 0x475C, 0x2E3D, 0x6047,
- 0xA159, 0x506E, 0x455D, 0xA15A, 0x5063, 0, 0x3876, 0xB152,
- 0x2E3E, 0x3875, 0x5061, 0xB154, 0xA15B, 0xB156, 0xA15C, 0x3C5A,
- 0, 0x5069, 0xA15D, 0x4A6F, 0x434D, 0x5065, 0x3771, 0x2E3F,
- 0x5062, 0x506A, 0x5064, 0x4E51, 0x506B, 0x4F41, 0x2E40, 0,
- 0xB15B, 0, 0xB15C, 0xB15D, 0, 0xB15E, 0x3666, 0,
- 0, 0x3770, 0, 0x2E42, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E581[] = {
0xB15F, 0xB160, 0xB161, 0x5070, 0, 0xB162, 0xB163, 0x5071,
0x5075, 0x304E, 0xB164, 0, 0xB165, 0, 0xB166, 0x4A50,
@@ -5558,16 +3099,6 @@ static const unsigned short utf8_to_euc_E581[] = {
0xB174, 0xB175, 0x3C45, 0, 0x4226, 0x4465, 0x3676, 0,
0x5079, 0, 0, 0, 0, 0x3536, 0, 0,
};
-static const unsigned short utf8_to_euc_E581_x0213[] = {
- 0x2E41, 0x2E43, 0xA15F, 0x5070, 0, 0xB162, 0xA160, 0x5071,
- 0x5075, 0x304E, 0xB164, 0, 0xB165, 0, 0xA161, 0x4A50,
- 0x5074, 0xB167, 0xB168, 0xA162, 0, 0x5073, 0x5077, 0xA163,
- 0, 0xB16B, 0x5076, 0, 0x4464, 0, 0, 0xB16C,
- 0xB16D, 0, 0xB16E, 0xA164, 0, 0x3772, 0xA165, 0xB171,
- 0, 0, 0xA166, 0, 0x5078, 0xB173, 0, 0,
- 0xA167, 0xB175, 0x3C45, 0, 0x4226, 0x4465, 0x3676, 0,
- 0x5079, 0, 0, 0, 0, 0x3536, 0, 0,
-};
static const unsigned short utf8_to_euc_E582[] = {
0x507A, 0xB177, 0, 0xB178, 0xB179, 0x507C, 0xB17A, 0,
0, 0, 0xB17B, 0, 0, 0x4B35, 0xB17C, 0xB17D,
@@ -5578,16 +3109,6 @@ static const unsigned short utf8_to_euc_E582[] = {
0xB22E, 0, 0x507E, 0x5123, 0x507D, 0x3A44, 0, 0x3D7D,
0, 0xB22F, 0xB230, 0, 0, 0xB231, 0x3739, 0,
};
-static const unsigned short utf8_to_euc_E582_x0213[] = {
- 0x507A, 0xB177, 0, 0xB178, 0xB179, 0x507C, 0xB17A, 0,
- 0xA169, 0, 0xB17B, 0, 0, 0x4B35, 0xB17C, 0xB17D,
- 0xB17E, 0x3766, 0xA16A, 0xA16B, 0x2E44, 0xA16C, 0xA16D, 0,
- 0x3B31, 0x4877, 0x507B, 0xB225, 0xA16E, 0, 0xB227, 0xB228,
- 0xB229, 0xB22A, 0xB22B, 0xA168, 0, 0, 0, 0,
- 0, 0, 0xA16F, 0, 0x3A45, 0x4D43, 0, 0xB22D,
- 0xB22E, 0xA171, 0x507E, 0x5123, 0x507D, 0x3A44, 0, 0x3D7D,
- 0, 0xB22F, 0xA172, 0xA173, 0, 0xB231, 0x3739, 0,
-};
static const unsigned short utf8_to_euc_E583[] = {
0xB232, 0, 0x5124, 0xB233, 0xB234, 0x364F, 0, 0xB235,
0, 0x5121, 0x5122, 0, 0xB236, 0x462F, 0xB237, 0x417C,
@@ -5598,16 +3119,6 @@ static const unsigned short utf8_to_euc_E583[] = {
0, 0xB245, 0xB251, 0, 0xF430, 0x512C, 0xB246, 0,
0, 0x512B, 0xB247, 0x4A48, 0, 0, 0xB248, 0,
};
-static const unsigned short utf8_to_euc_E583_x0213[] = {
- 0xB232, 0, 0x5124, 0xB233, 0xA174, 0x364F, 0, 0xA175,
- 0, 0x5121, 0x5122, 0, 0x2E45, 0x462F, 0xA178, 0x417C,
- 0x2E47, 0x3623, 0, 0xB239, 0xA17A, 0x4B4D, 0x5125, 0,
- 0xB23B, 0xA17B, 0x4E3D, 0, 0xB23C, 0xB23D, 0x5126, 0xB23E,
- 0, 0xA17C, 0xB23F, 0x5129, 0xB240, 0x5127, 0x2E48, 0x414E,
- 0xB242, 0xA17D, 0, 0, 0, 0x5128, 0x512A, 0xB244,
- 0, 0xB245, 0x2E46, 0xA176, 0xF430, 0x512C, 0xB246, 0,
- 0, 0x512B, 0xB247, 0x4A48, 0, 0, 0xB248, 0,
-};
static const unsigned short utf8_to_euc_E584[] = {
0x3537, 0x512E, 0x512F, 0xB249, 0x322F, 0, 0xB24A, 0xB24B,
0xB24C, 0x512D, 0, 0xB24D, 0xB24E, 0xB24F, 0xB250, 0,
@@ -5618,16 +3129,6 @@ static const unsigned short utf8_to_euc_E584[] = {
0, 0xB25F, 0x4C59, 0xB260, 0xB261, 0xB262, 0, 0x5136,
0xB263, 0xB264, 0x5135, 0x5138, 0x5137, 0, 0, 0x5139,
};
-static const unsigned short utf8_to_euc_E584_x0213[] = {
- 0x3537, 0x512E, 0x512F, 0x2E4B, 0x322F, 0, 0x2E4A, 0xB24B,
- 0xA321, 0x512D, 0, 0x2E4C, 0xB24E, 0xB24F, 0xB250, 0,
- 0xB252, 0, 0x3C74, 0, 0x5132, 0x5131, 0x5130, 0xA323,
- 0x5056, 0xB254, 0x5133, 0xA324, 0xB256, 0xB257, 0x2E4D, 0x3D7E,
- 0, 0x5134, 0, 0xB259, 0, 0, 0, 0xB25A,
- 0xB25B, 0, 0x4D25, 0, 0xB25C, 0xB25D, 0, 0xB25E,
- 0, 0xB25F, 0x4C59, 0xB260, 0xB261, 0x2E4E, 0, 0x5136,
- 0xB263, 0xB264, 0x5135, 0x5138, 0x5137, 0, 0, 0x5139,
-};
static const unsigned short utf8_to_euc_E585[] = {
0x513A, 0x3074, 0xB265, 0x3835, 0x373B, 0x3D3C, 0x437B, 0x3624,
0x4068, 0x3877, 0xB266, 0x396E, 0x513C, 0x4C48, 0x4546, 0xB267,
@@ -5638,16 +3139,6 @@ static const unsigned short utf8_to_euc_E585[] = {
0, 0x3626, 0, 0, 0, 0x4A3C, 0x4236, 0x3671,
0x4535, 0, 0, 0, 0x3773, 0, 0xB26F, 0,
};
-static const unsigned short utf8_to_euc_E585_x0213[] = {
- 0x513A, 0x3074, 0xB265, 0x3835, 0x373B, 0x3D3C, 0x437B, 0x3624,
- 0x4068, 0x3877, 0x2E4F, 0x396E, 0x513C, 0x4C48, 0x4546, 0xB267,
- 0x3B79, 0, 0x513B, 0xB268, 0x513D, 0x2E51, 0, 0x2E52,
- 0xB26B, 0, 0x455E, 0, 0x3375, 0, 0, 0xB26C,
- 0xA326, 0, 0x513E, 0, 0xB26D, 0x467E, 0xB26E, 0,
- 0x4134, 0x5140, 0x5141, 0x482C, 0x3878, 0x4F3B, 0x5142, 0,
- 0, 0x3626, 0, 0xA328, 0, 0x4A3C, 0x4236, 0x3671,
- 0x4535, 0, 0, 0xF474, 0x3773, 0, 0xB26F, 0,
-};
static const unsigned short utf8_to_euc_E586[] = {
0x5143, 0, 0x5144, 0xB270, 0xB271, 0x4662, 0x315F, 0,
0, 0x5147, 0x3A7D, 0xB272, 0x5146, 0x3A46, 0xB273, 0x5148,
@@ -5658,16 +3149,6 @@ static const unsigned short utf8_to_euc_E586[] = {
0x5156, 0x5154, 0x5155, 0x5153, 0x3A63, 0x5157, 0x4C6A, 0x4E64,
0xB279, 0, 0xB27A, 0, 0xB27B, 0x5158, 0xB27C, 0xB27D,
};
-static const unsigned short utf8_to_euc_E586_x0213[] = {
- 0x5143, 0, 0x5144, 0xA329, 0xB271, 0x4662, 0x315F, 0,
- 0, 0x5147, 0x3A7D, 0xA32A, 0x5146, 0x3A46, 0xB273, 0x5148,
- 0x666E, 0x5149, 0x4B41, 0x514A, 0, 0x514B, 0x514C, 0x3E69,
- 0xA32C, 0x3C4C, 0, 0, 0, 0x2E54, 0, 0,
- 0x3427, 0xB276, 0x514F, 0xA32D, 0x514D, 0x4C3D, 0x514E, 0,
- 0x495A, 0x5150, 0x5151, 0x5152, 0x455F, 0xA32E, 0, 0,
- 0x5156, 0x5154, 0x5155, 0x5153, 0x3A63, 0x5157, 0x4C6A, 0x4E64,
- 0xB279, 0, 0xB27A, 0, 0xA330, 0x5158, 0xB27C, 0xB27D,
-};
static const unsigned short utf8_to_euc_E587[] = {
0, 0, 0xB27E, 0, 0x4028, 0x5159, 0x3D5A, 0,
0xB321, 0x515A, 0, 0x437C, 0x4E3F, 0x4560, 0, 0xB322,
@@ -5678,16 +3159,6 @@ static const unsigned short utf8_to_euc_E587[] = {
0x5160, 0x332E, 0xB32C, 0xB32D, 0xB32E, 0x5161, 0x3627, 0xB32F,
0x464C, 0x317A, 0x3D50, 0, 0, 0x4821, 0x5162, 0,
};
-static const unsigned short utf8_to_euc_E587_x0213[] = {
- 0, 0, 0xB27E, 0x2E55, 0x4028, 0x5159, 0x3D5A, 0,
- 0xB321, 0x515A, 0x2E56, 0x437C, 0x4E3F, 0x4560, 0, 0xB322,
- 0, 0xB323, 0xB324, 0xB325, 0, 0xB326, 0x5245, 0,
- 0xB327, 0, 0, 0x515B, 0x7425, 0x3645, 0x2E57, 0,
- 0x515C, 0x4B5E, 0x2E58, 0, 0, 0xB32A, 0x3D68, 0x427C,
- 0, 0x515E, 0x4664, 0, 0xF431, 0x515F, 0x2E59, 0,
- 0x5160, 0x332E, 0xB32C, 0xA333, 0xA334, 0x5161, 0x3627, 0xB32F,
- 0x464C, 0x317A, 0x3D50, 0, 0, 0x4821, 0x5162, 0,
-};
static const unsigned short utf8_to_euc_E588[] = {
0x4561, 0xB330, 0xB331, 0x3F4F, 0x5163, 0xB332, 0x4A2C, 0x405A,
0x3422, 0, 0x3429, 0x5164, 0, 0, 0x5166, 0,
@@ -5698,16 +3169,6 @@ static const unsigned short utf8_to_euc_E588[] = {
0x457E, 0xB33A, 0xB33B, 0x516A, 0, 0xB33C, 0x4029, 0x3A7E,
0x3774, 0x516B, 0x3B49, 0x396F, 0xB33D, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E588_x0213[] = {
- 0x4561, 0x2E5A, 0xA335, 0x3F4F, 0x5163, 0xB332, 0x4A2C, 0x405A,
- 0x3422, 0, 0x3429, 0x5164, 0, 0, 0x5166, 0,
- 0, 0x373A, 0xA336, 0x2E5C, 0x5165, 0x2E5D, 0xA337, 0x4E73,
- 0xB337, 0, 0, 0, 0, 0x3D69, 0, 0,
- 0, 0, 0xB338, 0, 0x483D, 0x4A4C, 0, 0x5167,
- 0xB339, 0x4D78, 0x5168, 0, 0, 0, 0x5169, 0,
- 0x457E, 0xB33A, 0xB33B, 0x516A, 0, 0xB33C, 0x4029, 0x3A7E,
- 0x3774, 0x516B, 0x3B49, 0x396F, 0xB33D, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E589[] = {
0, 0, 0, 0x4466, 0x516D, 0xB33E, 0, 0x4227,
0, 0xB33F, 0x3A6F, 0x516E, 0x516F, 0x4130, 0, 0x516C,
@@ -5718,16 +3179,6 @@ static const unsigned short utf8_to_euc_E589[] = {
0x3E6A, 0x517B, 0x3364, 0x5175, 0x5173, 0x414F, 0, 0xB34A,
0xB34B, 0xB34C, 0, 0, 0, 0x5177, 0, 0x5176,
};
-static const unsigned short utf8_to_euc_E589_x0213[] = {
- 0, 0, 0, 0x4466, 0x516D, 0xB33E, 0, 0x4227,
- 0, 0x2E5E, 0x3A6F, 0x516E, 0x516F, 0x4130, 0, 0x516C,
- 0, 0, 0, 0, 0x5171, 0xA339, 0x4B36, 0x2E5F,
- 0xB342, 0, 0xB343, 0x3964, 0xA33A, 0x2F7E, 0x5170, 0xB345,
- 0xB346, 0x2E60, 0, 0x3775, 0x3A5E, 0x476D, 0xB348, 0,
- 0, 0x5174, 0x5172, 0, 0xA33B, 0, 0xB349, 0x497B,
- 0x3E6A, 0x517B, 0x3364, 0x5175, 0x5173, 0x414F, 0, 0xA33C,
- 0xB34B, 0xB34C, 0, 0, 0, 0x5177, 0, 0x5176,
-};
static const unsigned short utf8_to_euc_E58A[] = {
0xB34D, 0, 0xB34E, 0x3344, 0, 0xB34F, 0, 0x3760,
0x517C, 0x4E2D, 0xB350, 0, 0xB351, 0x5178, 0, 0,
@@ -5738,16 +3189,6 @@ static const unsigned short utf8_to_euc_E58A[] = {
0xB35E, 0x4E65, 0, 0, 0x4F2B, 0x5225, 0xB35F, 0xB360,
0xB361, 0x387A, 0xB362, 0xB363, 0x5224, 0xB364, 0x332F, 0,
};
-static const unsigned short utf8_to_euc_E58A_x0213[] = {
- 0xB34D, 0, 0xA33E, 0x3344, 0xA33D, 0xB34F, 0, 0x3760,
- 0x517C, 0x4E2D, 0xB350, 0, 0xB351, 0x5178, 0, 0,
- 0, 0x517D, 0x517A, 0x2E61, 0x5179, 0xB353, 0xB354, 0xB355,
- 0xA340, 0, 0xB357, 0x4E4F, 0xB358, 0, 0, 0x3879,
- 0x3243, 0, 0, 0x4E74, 0xA342, 0xB35A, 0xA343, 0xB35C,
- 0, 0x3D75, 0x4558, 0x3965, 0x5222, 0x5223, 0, 0xA344,
- 0xB35E, 0x4E65, 0, 0, 0x4F2B, 0x5225, 0xB35F, 0xB360,
- 0xB361, 0x387A, 0xA345, 0xA346, 0x5224, 0xB364, 0x332F, 0,
-};
static const unsigned short utf8_to_euc_E58B[] = {
0xB365, 0x5226, 0, 0x4B56, 0xB366, 0x443C, 0xB367, 0x4D26,
0xB368, 0x4A59, 0, 0, 0xB369, 0x5227, 0, 0xB36A,
@@ -5758,16 +3199,6 @@ static const unsigned short utf8_to_euc_E58B[] = {
0xB376, 0xB377, 0x372E, 0x522E, 0xB378, 0x522F, 0xB379, 0xB37A,
0x5230, 0x5231, 0x3C5B, 0, 0, 0, 0x387B, 0x4C5E,
};
-static const unsigned short utf8_to_euc_E58B_x0213[] = {
- 0xB365, 0x5226, 0, 0x4B56, 0xB366, 0x443C, 0xB367, 0x4D26,
- 0x2E62, 0x4A59, 0xA347, 0, 0x2E64, 0x5227, 0, 0xB36A,
- 0x2E65, 0xA349, 0x7055, 0, 0xB36C, 0x4630, 0x2E66, 0x5228,
- 0x342A, 0x4C33, 0, 0x2E67, 0xB36F, 0x3E21, 0x5229, 0x4A67,
- 0x522D, 0xB370, 0x402A, 0x522A, 0x3650, 0xB371, 0x522B, 0x342B,
- 0xB372, 0xB373, 0xB374, 0, 0xB375, 0, 0, 0,
- 0x2E69, 0xB377, 0x372E, 0x522E, 0xB378, 0x522F, 0xB379, 0xA34B,
- 0x5230, 0x5231, 0x3C5B, 0x2E6A, 0, 0, 0x387B, 0x4C5E,
-};
static const unsigned short utf8_to_euc_E58C[] = {
0xB37B, 0x4C68, 0x4677, 0xB37C, 0, 0x4A71, 0x5232, 0xF432,
0x5233, 0, 0xB37D, 0xB37E, 0xB421, 0x5235, 0, 0x5237,
@@ -5778,16 +3209,6 @@ static const unsigned short utf8_to_euc_E58C[] = {
0xB430, 0x523C, 0xB431, 0x523D, 0, 0xB432, 0, 0,
0x523E, 0x4924, 0x3668, 0x3065, 0xB433, 0xB434, 0xB435, 0x463F,
};
-static const unsigned short utf8_to_euc_E58C_x0213[] = {
- 0x2E6B, 0x4C68, 0x4677, 0xB37C, 0, 0x4A71, 0x5232, 0x2E6C,
- 0x5233, 0, 0xA34C, 0xA34D, 0xB421, 0x5235, 0, 0x5237,
- 0x5236, 0xB422, 0, 0xB423, 0, 0x5238, 0x323D, 0x4B4C,
- 0xB424, 0x3A7C, 0x5239, 0xB425, 0x2E6D, 0x4159, 0xB427, 0xB428,
- 0x3E22, 0x3629, 0, 0x523A, 0xA34E, 0xB429, 0, 0xB42A,
- 0xB42B, 0xB42C, 0x485B, 0xB42D, 0xB42E, 0xB42F, 0, 0x523B,
- 0xB430, 0x523C, 0xB431, 0x523D, 0, 0xA34F, 0, 0,
- 0x523E, 0x4924, 0x3668, 0x3065, 0xB433, 0xB434, 0xA350, 0x463F,
-};
static const unsigned short utf8_to_euc_E58D[] = {
0x523F, 0x3D3D, 0xB436, 0x4069, 0, 0x5241, 0x5240, 0x3E23,
0x3861, 0x5243, 0x483E, 0xB438, 0xB437, 0x5244, 0, 0,
@@ -5798,16 +3219,6 @@ static const unsigned short utf8_to_euc_E58D[] = {
0x3075, 0x346D, 0xB440, 0x4228, 0x3551, 0x4D71, 0, 0x524B,
0x3237, 0xB441, 0, 0x524A, 0, 0, 0xB442, 0x362A,
};
-static const unsigned short utf8_to_euc_E58D_x0213[] = {
- 0x523F, 0x3D3D, 0xA351, 0x4069, 0, 0x5241, 0x5240, 0x3E23,
- 0x3861, 0x5243, 0x483E, 0xB438, 0xB437, 0x5244, 0, 0,
- 0, 0x485C, 0x4234, 0x426E, 0x3628, 0, 0, 0x466E,
- 0x4331, 0xB439, 0x476E, 0xB43A, 0x4B4E, 0, 0x5246, 0,
- 0x406A, 0x2E6F, 0, 0x2E70, 0, 0xB43D, 0x3735, 0xA354,
- 0, 0x5247, 0, 0, 0xA355, 0xB43F, 0x5248, 0x312C,
- 0x3075, 0x346D, 0xB440, 0x4228, 0x3551, 0x4D71, 0, 0x524B,
- 0x3237, 0xB441, 0xA356, 0x524A, 0, 0x2E71, 0xB442, 0x362A,
-};
static const unsigned short utf8_to_euc_E58E[] = {
0, 0, 0x524C, 0xB443, 0x4C71, 0, 0, 0xB444,
0xB445, 0, 0, 0, 0, 0, 0xB446, 0,
@@ -5818,16 +3229,6 @@ static const unsigned short utf8_to_euc_E58E[] = {
0x5252, 0, 0xB450, 0x3837, 0xB451, 0xB452, 0x5253, 0xB453,
0xB454, 0, 0xB455, 0x356E, 0, 0xB456, 0, 0,
};
-static const unsigned short utf8_to_euc_E58E_x0213[] = {
- 0, 0, 0x524C, 0xB443, 0x4C71, 0, 0, 0xB444,
- 0xB445, 0, 0, 0, 0, 0, 0xB446, 0,
- 0, 0, 0, 0x2E72, 0xB448, 0, 0x524D, 0,
- 0x4E52, 0xB449, 0x387C, 0, 0, 0x2E73, 0, 0x3836,
- 0x524E, 0xB44B, 0, 0, 0xA357, 0x5250, 0x524F, 0,
- 0x3F5F, 0x3139, 0xB44D, 0xB44E, 0, 0x315E, 0x5251, 0xB44F,
- 0x5252, 0, 0x2E74, 0x3837, 0xA358, 0xB452, 0x5253, 0xA35A,
- 0xB454, 0, 0xB455, 0x356E, 0, 0xB456, 0, 0,
-};
static const unsigned short utf8_to_euc_E58F[] = {
0xB457, 0, 0x3B32, 0x5254, 0, 0xB458, 0, 0,
0x4B74, 0x3A35, 0x355A, 0x4D27, 0x4150, 0x483F, 0x3C7D, 0xB459,
@@ -5838,16 +3239,6 @@ static const unsigned short utf8_to_euc_E58F[] = {
0x4266, 0x3C38, 0x3B4B, 0x3126, 0, 0xB463, 0x3370, 0x3966,
0x3B4A, 0, 0x525D, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E58F_x0213[] = {
- 0xA35B, 0, 0x3B32, 0x5254, 0, 0xB458, 0, 0,
- 0x4B74, 0x3A35, 0x355A, 0x4D27, 0x4150, 0x483F, 0x3C7D, 0xB459,
- 0, 0, 0xB45A, 0xB45B, 0x3D47, 0xA35F, 0x3C68, 0x3C75,
- 0, 0x3D76, 0xA360, 0x4840, 0, 0xB45E, 0xB45F, 0x5257,
- 0xB460, 0x3143, 0x4151, 0x387D, 0x3845, 0x3667, 0xB461, 0xB462,
- 0x525B, 0x4321, 0x427E, 0x362B, 0x3E24, 0x525C, 0x525A, 0x3244,
- 0x4266, 0x3C38, 0x3B4B, 0x3126, 0xA362, 0xA363, 0x3370, 0x3966,
- 0x3B4A, 0, 0x525D, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E590[] = {
0, 0x525E, 0xB464, 0x3549, 0x3346, 0, 0, 0,
0x3967, 0x3548, 0x445F, 0x3125, 0x4631, 0x4C3E, 0x3921, 0x4D79,
@@ -5858,16 +3249,6 @@ static const unsigned short utf8_to_euc_E590[] = {
0, 0xB46C, 0, 0, 0xB46D, 0xB46E, 0x5265, 0,
0x355B, 0x3F61, 0, 0x4A2D, 0x5263, 0x525F, 0x3863, 0,
};
-static const unsigned short utf8_to_euc_E590_x0213[] = {
- 0, 0x525E, 0xB464, 0x3549, 0x3346, 0, 0, 0,
- 0x3967, 0x3548, 0x445F, 0x3125, 0x4631, 0x4C3E, 0x3921, 0x4D79,
- 0x4547, 0x387E, 0x2E75, 0xB465, 0, 0, 0, 0,
- 0, 0, 0xB466, 0x372F, 0, 0x5267, 0x4F7E, 0x3663,
- 0x4B4A, 0xB467, 0, 0, 0xA365, 0, 0x485D, 0x2E76,
- 0xA366, 0x5266, 0xB46A, 0x345E, 0x5261, 0x5262, 0x5264, 0xB46B,
- 0, 0xB46C, 0, 0, 0xB46D, 0xB46E, 0x5265, 0,
- 0x355B, 0x3F61, 0, 0x4A2D, 0x5263, 0x525F, 0x3863, 0,
-};
static const unsigned short utf8_to_euc_E591[] = {
0x5260, 0, 0x4F24, 0xB46F, 0xB470, 0, 0x4A72, 0xB471,
0x4468, 0x3862, 0x3970, 0, 0, 0xB472, 0x5268, 0xB473,
@@ -5878,16 +3259,6 @@ static const unsigned short utf8_to_euc_E591[] = {
0x526F, 0x526D, 0, 0x4C23, 0xB47D, 0x526A, 0x5273, 0x526E,
0, 0, 0, 0x5271, 0x3846, 0x4C3F, 0, 0xB47E,
};
-static const unsigned short utf8_to_euc_E591_x0213[] = {
- 0x5260, 0, 0x4F24, 0xA368, 0xB470, 0, 0x4A72, 0xB471,
- 0x4468, 0x3862, 0x3970, 0, 0, 0x2E77, 0x5268, 0xB473,
- 0, 0x465D, 0, 0, 0, 0xA364, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xB474, 0x526C,
- 0, 0, 0xA369, 0, 0xB476, 0, 0xA36A, 0xB478,
- 0x3C7E, 0xB479, 0x3C76, 0x2E79, 0xA36B, 0xB47B, 0xB47C, 0,
- 0x526F, 0x526D, 0, 0x4C23, 0x2E7A, 0x526A, 0x5273, 0x526E,
- 0, 0, 0, 0x5271, 0x3846, 0x4C3F, 0, 0x2E7B,
-};
static const unsigned short utf8_to_euc_E592[] = {
0x5272, 0xB521, 0, 0xB522, 0x5274, 0xB523, 0x5276, 0,
0xB524, 0xB525, 0xF435, 0x3A70, 0x4F42, 0xB526, 0x526B, 0x5269,
@@ -5898,16 +3269,6 @@ static const unsigned short utf8_to_euc_E592[] = {
0, 0xB533, 0x3A69, 0x3331, 0, 0, 0, 0xB534,
0x5279, 0xB535, 0xB536, 0xB537, 0x5325, 0x3076, 0x5324, 0xB538,
};
-static const unsigned short utf8_to_euc_E592_x0213[] = {
- 0x5272, 0xB521, 0, 0xB522, 0x5274, 0xB523, 0x5276, 0,
- 0x2E7C, 0xB525, 0xA36C, 0x3A70, 0x4F42, 0xA36D, 0x526B, 0x5269,
- 0x5275, 0xB527, 0x5270, 0, 0, 0xA36E, 0x2E7D, 0,
- 0, 0, 0, 0, 0x2E78, 0, 0, 0xB52B,
- 0xA36F, 0x2E7E, 0x5278, 0, 0x5323, 0x527A, 0xA370, 0xB52E,
- 0x527E, 0x2F21, 0xB530, 0x5321, 0x527B, 0xA371, 0xA372, 0x533E,
- 0, 0xB533, 0x3A69, 0x3331, 0, 0, 0, 0xA373,
- 0x5279, 0xB535, 0xA374, 0xB537, 0x5325, 0x3076, 0x5324, 0xA375,
-};
static const unsigned short utf8_to_euc_E593[] = {
0x3025, 0x494A, 0x5322, 0, 0x527C, 0, 0xB539, 0x5277,
0x527D, 0x3A48, 0xB53A, 0, 0, 0xB53B, 0xB53C, 0,
@@ -5918,16 +3279,6 @@ static const unsigned short utf8_to_euc_E593[] = {
0, 0, 0x452F, 0, 0, 0, 0xB541, 0,
0, 0, 0x532E, 0, 0xB542, 0x532B, 0xB543, 0xB544,
};
-static const unsigned short utf8_to_euc_E593_x0213[] = {
- 0x3025, 0x494A, 0x5322, 0xA376, 0x527C, 0, 0x2F22, 0x5277,
- 0x527D, 0x3A48, 0xB53A, 0, 0, 0xB53B, 0xB53C, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x5326, 0, 0, 0, 0, 0, 0, 0,
- 0xB53D, 0x3077, 0x532F, 0, 0, 0x5327, 0x5328, 0,
- 0x3E25, 0x4B69, 0xB53E, 0, 0xA378, 0x532D, 0x532C, 0xA379,
- 0, 0xA37A, 0x452F, 0xA37B, 0, 0, 0xB541, 0,
- 0, 0, 0x532E, 0, 0xB542, 0x532B, 0xB543, 0x2F23,
-};
static const unsigned short utf8_to_euc_E594[] = {
0xB545, 0xB546, 0, 0, 0x3134, 0xB547, 0x3A36, 0x3F30,
0xB548, 0xB549, 0, 0, 0xB54A, 0xB54B, 0xB54C, 0x5329,
@@ -5938,16 +3289,6 @@ static const unsigned short utf8_to_euc_E594[] = {
0, 0x3E27, 0xB550, 0x533A, 0, 0xB551, 0xB552, 0,
0x5339, 0x5330, 0, 0xB553, 0xB554, 0xB555, 0x4243, 0,
};
-static const unsigned short utf8_to_euc_E594_x0213[] = {
- 0xA37C, 0xA37D, 0, 0, 0x3134, 0xB547, 0x3A36, 0x3F30,
- 0xB548, 0xA37E, 0, 0, 0xB54A, 0xB54B, 0x2F24, 0x5329,
- 0x4562, 0, 0, 0, 0x532A, 0xB54D, 0x3022, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0xB54E, 0x2F25, 0, 0, 0x5334, 0x4D23,
- 0, 0x3E27, 0xB550, 0x533A, 0, 0x2F26, 0xB552, 0,
- 0x5339, 0x5330, 0, 0xB553, 0xA421, 0xB555, 0x4243, 0,
-};
static const unsigned short utf8_to_euc_E595[] = {
0x5331, 0xB556, 0, 0, 0x426F, 0x5336, 0x3E26, 0xB557,
0, 0xB558, 0xB559, 0, 0x5333, 0xB55A, 0, 0x4C64,
@@ -5958,16 +3299,6 @@ static const unsigned short utf8_to_euc_E595[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0x5341, 0x5346, 0, 0x5342, 0xB565,
};
-static const unsigned short utf8_to_euc_E595_x0213[] = {
- 0x5331, 0xA422, 0, 0, 0x426F, 0x5336, 0x3E26, 0xA424,
- 0, 0xB558, 0xA425, 0, 0x5333, 0xB55A, 0, 0x4C64,
- 0x2F27, 0xB55C, 0, 0x373C, 0, 0, 0x5337, 0x5338,
- 0xB55D, 0, 0xB55E, 0xB55F, 0x5335, 0x533B, 0x2F28, 0,
- 0xA427, 0xA428, 0, 0x5332, 0xA429, 0, 0xB564, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0x5341, 0x5346, 0xA42B, 0x5342, 0xB565,
-};
static const unsigned short utf8_to_euc_E596[] = {
0x533D, 0xB566, 0xB567, 0x5347, 0x4131, 0, 0xB568, 0x5349,
0xB569, 0x3922, 0x533F, 0x437D, 0, 0, 0xB56A, 0xB56B,
@@ -5978,16 +3309,6 @@ static const unsigned short utf8_to_euc_E596[] = {
0x3674, 0, 0xB574, 0, 0, 0, 0x3144, 0,
0, 0, 0, 0, 0, 0, 0, 0xB575,
};
-static const unsigned short utf8_to_euc_E596_x0213[] = {
- 0x533D, 0x2F29, 0xA42C, 0x5347, 0x4131, 0, 0x2F2A, 0x5349,
- 0xA42D, 0x3922, 0x533F, 0x437D, 0, 0, 0x2F2B, 0xB56B,
- 0, 0xA42E, 0xB56D, 0xB56E, 0xB56F, 0, 0, 0xB570,
- 0x5343, 0x533C, 0x342D, 0, 0x346E, 0x3365, 0x5344, 0x5340,
- 0, 0, 0, 0xB571, 0xB572, 0, 0, 0x3776,
- 0x534A, 0x5348, 0x4153, 0x354A, 0x362C, 0x2F2D, 0x5345, 0,
- 0x3674, 0, 0xB574, 0, 0, 0, 0x3144, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xA433,
-};
static const unsigned short utf8_to_euc_E597[] = {
0, 0xB576, 0, 0xB577, 0x534E, 0x534C, 0xB578, 0x5427,
0, 0xB579, 0, 0xB57A, 0xB57B, 0, 0xB57C, 0,
@@ -5998,16 +3319,6 @@ static const unsigned short utf8_to_euc_E597[] = {
0, 0, 0, 0, 0, 0, 0xB628, 0x5353,
0, 0x5358, 0, 0, 0, 0x5356, 0x5355, 0xB629,
};
-static const unsigned short utf8_to_euc_E597_x0213[] = {
- 0, 0xB576, 0, 0xB577, 0x534E, 0x534C, 0xB578, 0x5427,
- 0, 0xA434, 0, 0xB57A, 0xA435, 0, 0x2F2E, 0,
- 0, 0xA436, 0xA430, 0xB621, 0x5351, 0, 0, 0xB622,
- 0xB623, 0, 0x534B, 0xB624, 0x534F, 0xA437, 0xB625, 0x534D,
- 0, 0, 0xA439, 0x3B4C, 0x5350, 0, 0, 0,
- 0, 0xA43B, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xB628, 0x5353,
- 0, 0x5358, 0, 0, 0, 0x5356, 0x5355, 0xB629,
-};
static const unsigned short utf8_to_euc_E598[] = {
0, 0, 0, 0, 0, 0xB62A, 0x4332, 0,
0xB62B, 0x3245, 0xB62C, 0, 0, 0xB62D, 0xB62E, 0xB62F,
@@ -6018,16 +3329,6 @@ static const unsigned short utf8_to_euc_E598[] = {
0xB635, 0x3E7C, 0x535E, 0xB636, 0x535C, 0xB637, 0x535D, 0xB638,
0x535F, 0xB639, 0, 0xB63A, 0xB63B, 0xB63C, 0, 0xB63D,
};
-static const unsigned short utf8_to_euc_E598_x0213[] = {
- 0, 0, 0, 0, 0, 0xB62A, 0x4332, 0xA43E,
- 0x2F30, 0x3245, 0xB62C, 0, 0, 0xB62D, 0x2F31, 0xB62F,
- 0xA43F, 0xB631, 0xB632, 0, 0x5352, 0, 0x5354, 0x3E28,
- 0x3133, 0xB633, 0, 0x5357, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0xA43C, 0x325E, 0, 0, 0xB634, 0, 0, 0x5362,
- 0xA440, 0x3E7C, 0x535E, 0xB636, 0x535C, 0xB637, 0x535D, 0xA441,
- 0x535F, 0xB639, 0, 0x2F32, 0xB63B, 0xA443, 0, 0xA444,
-};
static const unsigned short utf8_to_euc_E599[] = {
0xB63E, 0xB63F, 0x313D, 0xB640, 0xB641, 0, 0xB642, 0,
0, 0xB643, 0, 0xB644, 0x4139, 0xB645, 0x5359, 0xB646,
@@ -6038,16 +3339,6 @@ static const unsigned short utf8_to_euc_E599[] = {
0, 0xB651, 0xB652, 0, 0x4A2E, 0xB653, 0, 0,
0x4655, 0, 0x4838, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E599_x0213[] = {
- 0xA445, 0xB63F, 0x313D, 0xB640, 0xB641, 0, 0xB642, 0xA446,
- 0, 0x2F33, 0, 0xB644, 0x4139, 0xB645, 0x5359, 0xB646,
- 0x535A, 0, 0, 0x7427, 0xB647, 0, 0, 0,
- 0, 0, 0, 0x337A, 0, 0, 0xA447, 0,
- 0xA448, 0xB64A, 0xB64B, 0xB64C, 0x5361, 0, 0x2F35, 0,
- 0x346F, 0xB64E, 0x5364, 0x5360, 0x5363, 0xA449, 0, 0x2F37,
- 0, 0x2F38, 0x2F39, 0, 0x4A2E, 0xB653, 0x2F34, 0,
- 0x4655, 0, 0x4838, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E59A[] = {
0x5366, 0, 0, 0, 0xB654, 0xB655, 0x5365, 0x3345,
0xB656, 0, 0x5367, 0xB657, 0xB658, 0, 0, 0x536A,
@@ -6058,16 +3349,6 @@ static const unsigned short utf8_to_euc_E59A[] = {
0, 0xB666, 0, 0xB667, 0x536E, 0, 0x536D, 0xB668,
0, 0, 0, 0, 0x5370, 0, 0xB669, 0,
};
-static const unsigned short utf8_to_euc_E59A_x0213[] = {
- 0x5366, 0, 0, 0, 0xB654, 0xB655, 0x5365, 0x3345,
- 0xA44B, 0, 0x5367, 0xB657, 0xA44C, 0, 0, 0x536A,
- 0, 0, 0, 0, 0x5369, 0xA44D, 0, 0,
- 0, 0x2F3A, 0xA44E, 0, 0, 0xA44F, 0x2F3B, 0xB65E,
- 0x5368, 0, 0x4739, 0, 0, 0x536B, 0xB65F, 0xB660,
- 0xA450, 0x2F3C, 0, 0xB663, 0x2F3D, 0xA451, 0x536C, 0,
- 0, 0xB666, 0xA452, 0x2F3E, 0x536E, 0, 0x536D, 0xB668,
- 0, 0, 0, 0, 0x5370, 0, 0xB669, 0,
-};
static const unsigned short utf8_to_euc_E59B[] = {
0x5373, 0x5371, 0x536F, 0x5372, 0, 0xB66A, 0, 0,
0x5374, 0xB66B, 0xB66C, 0xB66D, 0xB670, 0xB671, 0x5375, 0xB66E,
@@ -6078,16 +3359,6 @@ static const unsigned short utf8_to_euc_E59B[] = {
0x3A24, 0xB67C, 0x304F, 0x3F5E, 0, 0, 0xB721, 0xB722,
0, 0x537A, 0x3847, 0, 0, 0x3971, 0, 0x537C,
};
-static const unsigned short utf8_to_euc_E59B_x0213[] = {
- 0x5373, 0x5371, 0x536F, 0x5372, 0, 0xA453, 0, 0,
- 0x5374, 0x2F3F, 0x2F40, 0xB66D, 0xB670, 0xA454, 0x5375, 0xB66E,
- 0xB66F, 0x5376, 0, 0x5377, 0, 0, 0, 0x5378,
- 0x5145, 0xB672, 0x3C7C, 0x3B4D, 0xB673, 0xB674, 0x3273, 0xA455,
- 0x3078, 0xB676, 0, 0x4344, 0xB677, 0xB678, 0xB679, 0xB67A,
- 0xA456, 0, 0, 0xB67D, 0, 0xB67E, 0x5379, 0,
- 0x3A24, 0xB67C, 0x304F, 0x3F5E, 0, 0, 0xA457, 0xA458,
- 0, 0x537A, 0x3847, 0, 0, 0x3971, 0, 0x537C,
-};
static const unsigned short utf8_to_euc_E59C[] = {
0x537B, 0xB723, 0xB724, 0x4A60, 0x537D, 0, 0, 0xB725,
0x5421, 0x537E, 0xB726, 0x5422, 0xB727, 0x5423, 0, 0x3777,
@@ -6098,16 +3369,6 @@ static const unsigned short utf8_to_euc_E59C[] = {
0x434F, 0, 0, 0xB737, 0xB738, 0, 0, 0x542A,
0x542B, 0, 0, 0x542D, 0, 0xB739, 0xB73A, 0xB73B,
};
-static const unsigned short utf8_to_euc_E59C_x0213[] = {
- 0x537B, 0xB723, 0xB724, 0x4A60, 0x537D, 0, 0, 0xB725,
- 0x5421, 0x537E, 0x2F41, 0x5422, 0xB727, 0x5423, 0, 0x3777,
- 0, 0xB728, 0x3160, 0x5424, 0, 0xA45A, 0x5426, 0,
- 0x5425, 0, 0xB72A, 0xB72B, 0x5428, 0xB72C, 0, 0x455A,
- 0xB72D, 0x2F43, 0xB72E, 0xA45B, 0xB730, 0xB731, 0x5429, 0x3035,
- 0x3A5F, 0xA45D, 0xB733, 0, 0xB734, 0x373D, 0xB735, 0x2F44,
- 0x434F, 0, 0, 0x2F45, 0x2F46, 0, 0, 0x542A,
- 0x542B, 0, 0, 0x542D, 0, 0xB739, 0xB73A, 0xB73B,
-};
static const unsigned short utf8_to_euc_E59D[] = {
0x542E, 0, 0x3A64, 0, 0, 0xB73C, 0xB73D, 0x3651,
0, 0, 0x4B37, 0, 0xB73E, 0xB73F, 0x542C, 0x542F,
@@ -6118,16 +3379,6 @@ static const unsigned short utf8_to_euc_E59D[] = {
0xB749, 0xB74A, 0, 0xB74B, 0xB74C, 0xB74D, 0, 0xB74E,
0, 0xB74F, 0xB750, 0xB751, 0xB752, 0, 0xB753, 0x5434,
};
-static const unsigned short utf8_to_euc_E59D_x0213[] = {
- 0x542E, 0, 0x3A64, 0, 0, 0xA45F, 0xA460, 0x3651,
- 0, 0, 0x4B37, 0, 0xA461, 0xA462, 0x542C, 0x542F,
- 0x3A41, 0x3923, 0xB740, 0, 0, 0, 0, 0,
- 0, 0xF436, 0, 0, 0, 0, 0, 0,
- 0, 0x5433, 0xB741, 0, 0x3A25, 0xB742, 0x4333, 0xB743,
- 0xA464, 0x5430, 0x445A, 0xB745, 0, 0xB746, 0xB747, 0xA465,
- 0x2F47, 0xB74A, 0, 0xA466, 0xA467, 0xA468, 0, 0x2F48,
- 0, 0xB74F, 0xB750, 0xA469, 0x2F49, 0, 0xB753, 0x5434,
-};
static const unsigned short utf8_to_euc_E59E[] = {
0, 0xB754, 0x3F62, 0xB755, 0, 0, 0, 0,
0x5432, 0x5435, 0, 0x373F, 0xB756, 0, 0, 0,
@@ -6138,16 +3389,6 @@ static const unsigned short utf8_to_euc_E59E[] = {
0x543B, 0, 0, 0x5438, 0, 0, 0, 0,
0xB765, 0, 0, 0, 0, 0xB766, 0, 0,
};
-static const unsigned short utf8_to_euc_E59E_x0213[] = {
- 0, 0xB754, 0x3F62, 0xB755, 0, 0, 0, 0,
- 0x5432, 0x5435, 0, 0x373F, 0xB756, 0, 0, 0,
- 0, 0, 0, 0x5436, 0xB757, 0xB760, 0, 0xB758,
- 0, 0xB759, 0xA46D, 0, 0x2F4A, 0xA46E, 0xA46F, 0xB75E,
- 0x5437, 0xB75F, 0x3924, 0x3340, 0x5439, 0, 0, 0xB761,
- 0xA470, 0xB763, 0x543A, 0, 0xA46C, 0, 0, 0,
- 0x543B, 0, 0, 0x5438, 0, 0, 0, 0,
- 0x2F4D, 0, 0, 0, 0, 0xB766, 0, 0,
-};
static const unsigned short utf8_to_euc_E59F[] = {
0x5431, 0, 0, 0x543C, 0, 0, 0x543D, 0xB767,
0xB768, 0, 0, 0x4B64, 0xB769, 0, 0x3E6B, 0xB76A,
@@ -6158,16 +3399,6 @@ static const unsigned short utf8_to_euc_E59F[] = {
0xB773, 0, 0, 0, 0x3E7D, 0xB774, 0xB775, 0x3C39,
0xB776, 0x475D, 0x3470, 0, 0x3A6B, 0xB777, 0xB778, 0xB779,
};
-static const unsigned short utf8_to_euc_E59F_x0213[] = {
- 0x5431, 0, 0, 0x543C, 0, 0, 0x543D, 0x2F4E,
- 0x2F4F, 0, 0, 0x4B64, 0xA473, 0, 0x3E6B, 0x2F50,
- 0, 0, 0x543F, 0x5440, 0x543E, 0xB76B, 0x5442, 0xA471,
- 0, 0, 0, 0, 0x4738, 0xB76C, 0xA476, 0x3068,
- 0x4956, 0xB77E, 0, 0x5443, 0x2F51, 0, 0xA477, 0xB770,
- 0, 0xB771, 0, 0, 0, 0x2F52, 0, 0,
- 0xA478, 0, 0, 0, 0x3E7D, 0x2F53, 0x2F54, 0x3C39,
- 0xA47A, 0x475D, 0x3470, 0xA47B, 0x3A6B, 0xA47C, 0xB778, 0x2F55,
-};
static const unsigned short utf8_to_euc_E5A0[] = {
0x4B59, 0, 0x4632, 0xB77A, 0xB77B, 0x3778, 0x424F, 0,
0xB77C, 0xB77D, 0x5441, 0x5444, 0xB821, 0xB822, 0, 0,
@@ -6178,16 +3409,6 @@ static const unsigned short utf8_to_euc_E5A0[] = {
0x3161, 0x4A73, 0xB82A, 0, 0x3E6C, 0x4548, 0, 0,
0, 0xB82B, 0x3A66, 0, 0, 0x544E, 0, 0xB82C,
};
-static const unsigned short utf8_to_euc_E5A0_x0213[] = {
- 0x4B59, 0, 0x4632, 0xB77A, 0xA47D, 0x3778, 0x424F, 0,
- 0xB77C, 0x2F56, 0x5441, 0x5444, 0xB821, 0xB822, 0, 0,
- 0, 0, 0, 0, 0, 0x4244, 0, 0,
- 0, 0x5445, 0, 0xB823, 0, 0x5446, 0xA47E, 0xB825,
- 0xA521, 0x5448, 0, 0, 0x4469, 0, 0xB827, 0xA522,
- 0, 0, 0x342E, 0, 0, 0xB829, 0, 0x7421,
- 0x3161, 0x4A73, 0xA523, 0, 0x3E6C, 0x4548, 0, 0,
- 0, 0xA524, 0x3A66, 0, 0, 0x544E, 0, 0xB82C,
-};
static const unsigned short utf8_to_euc_E5A1[] = {
0x4A3D, 0x4E5D, 0, 0, 0, 0, 0, 0,
0, 0xB82D, 0x3274, 0x544A, 0xB82E, 0xB82F, 0, 0xB830,
@@ -6198,16 +3419,6 @@ static const unsigned short utf8_to_euc_E5A1[] = {
0x544B, 0, 0x5447, 0, 0, 0x3F50, 0, 0,
0xB838, 0x544F, 0, 0, 0xB839, 0, 0x3D4E, 0xB83A,
};
-static const unsigned short utf8_to_euc_E5A1_x0213[] = {
- 0x4A3D, 0x4E5D, 0, 0, 0, 0, 0, 0,
- 0, 0xA526, 0x3274, 0x544A, 0xA527, 0xB82F, 0, 0xB830,
- 0xB831, 0x413A, 0x544D, 0, 0x4563, 0xB832, 0, 0x4549,
- 0x4564, 0x4839, 0x444D, 0, 0, 0, 0x3A49, 0xB833,
- 0, 0x2F58, 0x5449, 0, 0x2F59, 0, 0, 0xA528,
- 0xB837, 0x3176, 0, 0x4536, 0, 0, 0, 0,
- 0x544B, 0, 0x5447, 0, 0, 0x3F50, 0, 0,
- 0xB838, 0x544F, 0, 0, 0x2F5B, 0, 0x3D4E, 0xB83A,
-};
static const unsigned short utf8_to_euc_E5A2[] = {
0xB83B, 0xB83C, 0, 0x362D, 0, 0x5450, 0, 0xB83D,
0xB83E, 0xB83F, 0xB840, 0, 0xB841, 0xB842, 0, 0xB843,
@@ -6218,16 +3429,6 @@ static const unsigned short utf8_to_euc_E5A2[] = {
0, 0xB84D, 0xB84E, 0x4A2F, 0, 0, 0, 0,
0x5457, 0x5451, 0x5454, 0x5456, 0xB850, 0, 0x3A26, 0,
};
-static const unsigned short utf8_to_euc_E5A2_x0213[] = {
- 0xB83B, 0xB83C, 0, 0x362D, 0, 0x5450, 0, 0xB83D,
- 0xB83E, 0x2F5C, 0xA529, 0xA52A, 0xB841, 0xA52B, 0, 0xA52C,
- 0xA52D, 0, 0, 0x4A68, 0xA52E, 0, 0xB846, 0x417D,
- 0, 0, 0, 0, 0x4446, 0xA52F, 0x2F5D, 0x5452,
- 0xB848, 0xB849, 0xB84A, 0, 0, 0, 0xB84B, 0,
- 0x4B4F, 0x2F5F, 0xA530, 0x5453, 0, 0, 0x5458, 0,
- 0, 0xA531, 0xB84E, 0x4A2F, 0, 0, 0, 0,
- 0x5457, 0x5451, 0x5454, 0x5456, 0xB850, 0, 0x3A26, 0,
-};
static const unsigned short utf8_to_euc_E5A3[] = {
0, 0x4A49, 0xB851, 0, 0xB84F, 0x5459, 0, 0x4345,
0xB852, 0, 0x3275, 0, 0x3E6D, 0xB853, 0xB854, 0,
@@ -6238,16 +3439,6 @@ static const unsigned short utf8_to_euc_E5A3[] = {
0x403C, 0x306D, 0x4764, 0xB85E, 0, 0, 0, 0x445B,
0, 0x5465, 0x5464, 0x5466, 0x5467, 0x5468, 0, 0,
};
-static const unsigned short utf8_to_euc_E5A3_x0213[] = {
- 0, 0x4A49, 0xB851, 0xA533, 0xB84F, 0x5459, 0, 0x4345,
- 0xB852, 0, 0x3275, 0, 0x3E6D, 0xA534, 0x2F62, 0,
- 0xB855, 0x545B, 0x2F61, 0x545A, 0x2F63, 0x3968, 0xB858, 0x545C,
- 0x545E, 0x545D, 0x2F64, 0, 0x5460, 0xB85A, 0x5455, 0x5462,
- 0x2F65, 0xB85B, 0xA535, 0, 0x5461, 0x545F, 0, 0,
- 0, 0x2F66, 0, 0x3B4E, 0x3F51, 0, 0x4154, 0x5463,
- 0x403C, 0x306D, 0x4764, 0xA536, 0xA537, 0, 0, 0x445B,
- 0, 0x5465, 0x5464, 0x5466, 0x5467, 0x5468, 0, 0,
-};
static const unsigned short utf8_to_euc_E5A4[] = {
0, 0, 0x5469, 0, 0, 0xB85F, 0xB860, 0,
0, 0x4A51, 0x546A, 0xB861, 0xB862, 0, 0, 0x3246,
@@ -6258,16 +3449,6 @@ static const unsigned short utf8_to_euc_E5A4[] = {
0xB86D, 0x3C3A, 0x5471, 0xB86E, 0, 0xB86F, 0xB870, 0x3050,
0x5472, 0, 0, 0, 0, 0, 0x5473, 0xB871,
};
-static const unsigned short utf8_to_euc_E5A4_x0213[] = {
- 0, 0, 0x5469, 0, 0, 0xA538, 0xA539, 0,
- 0, 0x4A51, 0x546A, 0xA53A, 0x2F67, 0xA53B, 0, 0x3246,
- 0x546B, 0, 0xB863, 0xB864, 0xA53C, 0x4D3C, 0x3330, 0,
- 0x5249, 0x3D48, 0x423F, 0x546C, 0x4C6B, 0xB867, 0, 0,
- 0, 0xB868, 0x4C34, 0xB869, 0xA53D, 0x546E, 0, 0x4267,
- 0xB86B, 0x4537, 0x4240, 0x4957, 0x546F, 0x5470, 0x317B, 0xB86C,
- 0xB86D, 0x3C3A, 0x5471, 0xB86E, 0, 0xB86F, 0xB870, 0x3050,
- 0x5472, 0, 0, 0, 0, 0xA540, 0x5473, 0xB871,
-};
static const unsigned short utf8_to_euc_E5A5[] = {
0, 0, 0, 0xB872, 0x3162, 0, 0xB873, 0x3471,
0x4660, 0x4A74, 0, 0, 0, 0, 0x5477, 0x4155,
@@ -6278,16 +3459,6 @@ static const unsigned short utf8_to_euc_E5A5[] = {
0, 0, 0xB922, 0x3D77, 0x455B, 0xB923, 0xB924, 0,
0x5521, 0xB925, 0, 0xB926, 0xB927, 0x3925, 0, 0,
};
-static const unsigned short utf8_to_euc_E5A5_x0213[] = {
- 0, 0, 0, 0xB872, 0x3162, 0, 0xA542, 0x3471,
- 0x4660, 0x4A74, 0, 0, 0, 0, 0x5477, 0x4155,
- 0x5476, 0x3740, 0xB874, 0xB875, 0x4B5B, 0x5475, 0, 0x4565,
- 0x5479, 0xB876, 0x5478, 0xA545, 0, 0x2F69, 0xB879, 0xA546,
- 0x547B, 0xB87B, 0x547A, 0xB87C, 0, 0x317C, 0, 0x547C,
- 0x3E29, 0x547E, 0x4325, 0xB87D, 0x547D, 0x2F6A, 0x4A33, 0xB921,
- 0, 0, 0xB922, 0x3D77, 0x455B, 0xA548, 0xA549, 0,
- 0x5521, 0xB925, 0, 0xB926, 0xA54A, 0x3925, 0, 0,
-};
static const unsigned short utf8_to_euc_E5A6[] = {
0, 0x5522, 0x4721, 0x485E, 0x4C51, 0, 0, 0,
0, 0, 0x4725, 0xB928, 0xB929, 0x552B, 0xB92A, 0,
@@ -6298,16 +3469,6 @@ static const unsigned short utf8_to_euc_E5A6[] = {
0xB934, 0, 0x5527, 0xB935, 0, 0, 0, 0xB936,
0, 0x4B65, 0xB937, 0x3A4A, 0xB938, 0, 0x3E2A, 0,
};
-static const unsigned short utf8_to_euc_E5A6_x0213[] = {
- 0, 0x5522, 0x4721, 0x485E, 0x4C51, 0, 0, 0,
- 0, 0, 0x4725, 0x2F6B, 0xB929, 0x552B, 0xB92A, 0,
- 0, 0, 0x2F6C, 0x3538, 0, 0xB92C, 0x4D45, 0xB92D,
- 0, 0x4C2F, 0, 0x562C, 0, 0x5523, 0, 0xA54B,
- 0, 0, 0, 0x5526, 0x2F6D, 0x4245, 0, 0xB930,
- 0x4B38, 0, 0, 0, 0x454A, 0xB931, 0xA54C, 0xB933,
- 0xB934, 0, 0x5527, 0xB935, 0, 0, 0, 0xB936,
- 0, 0x4B65, 0xB937, 0x3A4A, 0xA54D, 0, 0x3E2A, 0,
-};
static const unsigned short utf8_to_euc_E5A7[] = {
0, 0xB939, 0, 0xB93A, 0xB93B, 0, 0x5528, 0,
0xB93C, 0x3B50, 0xB93D, 0x3B4F, 0, 0xB93E, 0, 0,
@@ -6318,16 +3479,6 @@ static const unsigned short utf8_to_euc_E5A7[] = {
0, 0xB948, 0xB949, 0, 0xB94A, 0, 0x3028, 0xB94B,
0, 0, 0, 0x3079, 0, 0, 0, 0x3B51,
};
-static const unsigned short utf8_to_euc_E5A7_x0213[] = {
- 0, 0xB939, 0, 0x2F6E, 0xB93B, 0, 0x5528, 0,
- 0xA54E, 0x3B50, 0xB93D, 0x3B4F, 0, 0xA54F, 0, 0,
- 0x3039, 0x3848, 0x2F6F, 0x402B, 0x3051, 0, 0, 0,
- 0, 0x552C, 0x552D, 0, 0x552A, 0x2F70, 0xA550, 0xB942,
- 0, 0, 0, 0xA551, 0xA552, 0x3138, 0x342F, 0xA553,
- 0x5529, 0, 0x4C45, 0x4931, 0, 0, 0xA554, 0xB947,
- 0, 0xB948, 0xB949, 0, 0xB94A, 0, 0x3028, 0xB94B,
- 0x7E7A, 0, 0, 0x3079, 0, 0, 0, 0x3B51,
-};
static const unsigned short utf8_to_euc_E5A8[] = {
0xB94C, 0x3052, 0, 0x3023, 0xB94D, 0, 0, 0,
0, 0x5532, 0, 0, 0xB94E, 0xB94F, 0xB950, 0,
@@ -6338,16 +3489,6 @@ static const unsigned short utf8_to_euc_E5A8[] = {
0xB95A, 0, 0, 0, 0, 0x5537, 0x5538, 0,
0, 0, 0, 0, 0x3E2B, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E5A8_x0213[] = {
- 0xB94C, 0x3052, 0, 0x3023, 0xB94D, 0, 0, 0,
- 0, 0x5532, 0, 0, 0xA558, 0xA559, 0xB950, 0,
- 0, 0x5530, 0xB951, 0x2F71, 0, 0, 0, 0xA55A,
- 0x4C3C, 0, 0x5533, 0, 0x5531, 0, 0xB953, 0x552F,
- 0x3F31, 0, 0, 0x2F72, 0xB955, 0x552E, 0, 0xA55B,
- 0xB957, 0x4A5A, 0xB958, 0, 0, 0xA55C, 0, 0x3864,
- 0xB95A, 0, 0, 0, 0, 0x5537, 0x5538, 0,
- 0, 0, 0, 0, 0x3E2B, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E5A9[] = {
0x5534, 0x4F2C, 0, 0, 0xB95B, 0xB95C, 0x474C, 0xB95D,
0xB95E, 0x5536, 0, 0, 0xB95F, 0, 0, 0,
@@ -6358,16 +3499,6 @@ static const unsigned short utf8_to_euc_E5A9[] = {
0, 0, 0, 0, 0, 0, 0, 0xB967,
0, 0, 0xB968, 0xB969, 0, 0, 0xB96A, 0x4C3B,
};
-static const unsigned short utf8_to_euc_E5A9_x0213[] = {
- 0x5534, 0x4F2C, 0, 0, 0xB95B, 0xB95C, 0x474C, 0xB95D,
- 0xB95E, 0x5536, 0, 0, 0xB95F, 0, 0, 0,
- 0xB960, 0, 0, 0, 0, 0xA55D, 0, 0,
- 0, 0, 0x3A27, 0, 0, 0, 0xB962, 0,
- 0, 0, 0x5539, 0xB963, 0, 0xA55E, 0x4958, 0x2F73,
- 0, 0, 0x553A, 0, 0x5535, 0x2F74, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0x2F75,
- 0, 0, 0xA55F, 0xB969, 0, 0, 0x2F76, 0x4C3B,
-};
static const unsigned short utf8_to_euc_E5AA[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0xB96B, 0, 0, 0, 0,
@@ -6378,16 +3509,6 @@ static const unsigned short utf8_to_euc_E5AA[] = {
0, 0xB977, 0xB978, 0xB979, 0, 0xB97A, 0, 0,
0xB97B, 0, 0xB97C, 0xB97D, 0x553C, 0x5540, 0x553D, 0xB97E,
};
-static const unsigned short utf8_to_euc_E5AA_x0213[] = {
- 0, 0, 0, 0, 0x2F77, 0, 0, 0,
- 0, 0, 0, 0xA560, 0, 0, 0, 0,
- 0xB96C, 0, 0x475E, 0xB96D, 0, 0, 0xB96E, 0,
- 0, 0xB96F, 0x553B, 0x4932, 0xA561, 0, 0x2F78, 0xA562,
- 0xA563, 0, 0xA564, 0, 0, 0, 0, 0x2F79,
- 0, 0, 0, 0, 0xB976, 0, 0, 0,
- 0, 0xA565, 0xB978, 0xA566, 0, 0xA567, 0, 0,
- 0xB97B, 0, 0xA568, 0xB97D, 0x553C, 0x5540, 0x553D, 0xA569,
-};
static const unsigned short utf8_to_euc_E5AB[] = {
0, 0x3247, 0x553F, 0, 0xBA21, 0, 0xBA22, 0,
0xBA23, 0x3C3B, 0, 0x553E, 0x3779, 0, 0, 0xBA24,
@@ -6398,16 +3519,6 @@ static const unsigned short utf8_to_euc_E5AB[] = {
0, 0, 0, 0, 0, 0xBA2B, 0xBA2C, 0,
0, 0, 0x5546, 0x5547, 0, 0xBA2D, 0, 0,
};
-static const unsigned short utf8_to_euc_E5AB_x0213[] = {
- 0, 0x3247, 0x553F, 0, 0x2F7A, 0, 0xBA22, 0,
- 0xBA23, 0x3C3B, 0, 0x553E, 0x3779, 0, 0, 0xBA24,
- 0x554C, 0, 0, 0, 0, 0, 0x5545, 0x5542,
- 0, 0, 0xA56A, 0, 0xA56B, 0, 0, 0,
- 0xA56C, 0x4364, 0, 0x5541, 0, 0xA56D, 0x5543, 0,
- 0, 0x5544, 0xBA29, 0, 0, 0, 0xA56F, 0,
- 0xA56E, 0, 0, 0, 0, 0xA570, 0xBA2C, 0,
- 0, 0, 0x5546, 0x5547, 0, 0xBA2D, 0, 0,
-};
static const unsigned short utf8_to_euc_E5AC[] = {
0xBA2E, 0xBA2F, 0, 0, 0, 0, 0, 0,
0xBA30, 0x3472, 0, 0x5549, 0x5548, 0, 0, 0,
@@ -6418,16 +3529,6 @@ static const unsigned short utf8_to_euc_E5AC[] = {
0x3145, 0, 0x554B, 0, 0xBA32, 0, 0x554E, 0,
0xBA39, 0, 0, 0, 0, 0, 0x554F, 0,
};
-static const unsigned short utf8_to_euc_E5AC_x0213[] = {
- 0xA571, 0xBA2F, 0, 0, 0, 0, 0, 0,
- 0xA572, 0x3472, 0, 0x5549, 0x5548, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0x554A, 0xA573,
- 0, 0x2F7C, 0, 0xBA34, 0, 0xBA35, 0, 0,
- 0, 0xBA36, 0x3E6E, 0, 0, 0x2F7D, 0, 0,
- 0, 0, 0x554D, 0, 0x445C, 0xA575, 0, 0,
- 0x3145, 0, 0x554B, 0, 0xA574, 0, 0x554E, 0,
- 0xBA39, 0, 0, 0, 0, 0, 0x554F, 0,
-};
static const unsigned short utf8_to_euc_E5AD[] = {
0x5552, 0xBA3A, 0, 0x5550, 0, 0x5551, 0, 0,
0, 0, 0, 0xBA3B, 0xBA3C, 0, 0, 0,
@@ -6438,16 +3539,6 @@ static const unsigned short utf8_to_euc_E5AD[] = {
0x5559, 0x5623, 0, 0x555A, 0, 0x555B, 0, 0,
0x555C, 0, 0x555E, 0, 0xBA43, 0xBA44, 0xBA45, 0xBA46,
};
-static const unsigned short utf8_to_euc_E5AD_x0213[] = {
- 0x5552, 0x4F55, 0, 0x5550, 0, 0x5551, 0, 0,
- 0, 0, 0, 0xBA3B, 0xA576, 0, 0, 0,
- 0x3B52, 0x5553, 0xA577, 0, 0x3926, 0x5554, 0x4F56, 0x3B7A,
- 0x4238, 0, 0x5555, 0x5556, 0x3B5A, 0x3927, 0xBA3F, 0x4C52,
- 0, 0, 0, 0x3528, 0x3849, 0x5557, 0x3358, 0,
- 0xA578, 0x5558, 0, 0x4239, 0, 0, 0xBA41, 0xA579,
- 0x5559, 0x5623, 0, 0x555A, 0, 0x555B, 0, 0,
- 0x555C, 0, 0x555E, 0, 0xA57A, 0x4F57, 0xBA45, 0xA57B,
-};
static const unsigned short utf8_to_euc_E5AE[] = {
0x555F, 0xBA47, 0, 0x5560, 0xBA48, 0x4270, 0xBA49, 0x3127,
0x3C69, 0x3042, 0xBA4A, 0x4157, 0x3430, 0x3C35, 0xBA4B, 0x3928,
@@ -6458,16 +3549,6 @@ static const unsigned short utf8_to_euc_E5AE[] = {
0x3A4B, 0xBA56, 0xBA57, 0x3332, 0x3163, 0x3E2C, 0x3248, 0xBA58,
0x5562, 0x4D46, 0xBA59, 0, 0xBA5A, 0, 0, 0x3D49,
};
-static const unsigned short utf8_to_euc_E5AE_x0213[] = {
- 0x555F, 0xA57C, 0, 0x5560, 0xA57D, 0x4270, 0xBA49, 0x3127,
- 0x3C69, 0x3042, 0xBA4A, 0x4157, 0x3430, 0x3C35, 0xBA4B, 0x3928,
- 0xBA4C, 0xBA4D, 0, 0x4F58, 0xBA4F, 0x4566, 0xA821, 0x3D21,
- 0x3431, 0x4368, 0x446A, 0x3038, 0x3539, 0x4A75, 0, 0x3C42,
- 0, 0, 0x3552, 0x406B, 0x3C3C, 0x4D28, 0x5561, 0,
- 0xBA51, 0xBA52, 0, 0, 0xA822, 0xBA54, 0x355C, 0xBA55,
- 0x3A4B, 0xBA56, 0xBA57, 0x3332, 0x3163, 0x3E2C, 0x3248, 0xBA58,
- 0x5562, 0x4D46, 0xBA59, 0, 0xBA5A, 0, 0, 0x3D49,
-};
static const unsigned short utf8_to_euc_E5AF[] = {
0xBA5B, 0xBA5C, 0x3C64, 0x5563, 0x3473, 0x4652, 0x4C29, 0x5564,
0, 0x5565, 0, 0, 0x4959, 0xBA5D, 0, 0xBA5E,
@@ -6478,16 +3559,6 @@ static const unsigned short utf8_to_euc_E5AF[] = {
0x556E, 0xBA66, 0, 0x5570, 0xBA67, 0x437E, 0x556F, 0,
0x4023, 0, 0x3B7B, 0, 0, 0xBA68, 0x4250, 0x3C77,
};
-static const unsigned short utf8_to_euc_E5AF_x0213[] = {
- 0xA824, 0xBA5C, 0x3C64, 0x5563, 0x3473, 0x4652, 0x4C29, 0x5564,
- 0, 0x5565, 0, 0, 0x4959, 0xBA5D, 0xA826, 0xBA5E,
- 0x5567, 0, 0x3428, 0x3677, 0x5566, 0, 0xA827, 0xBA60,
- 0x4F59, 0xBA62, 0xBA63, 0x3432, 0, 0x3F32, 0x556B, 0x3B21,
- 0xBA64, 0x3249, 0x556A, 0, 0x5568, 0x556C, 0x5569, 0x472B,
- 0x5C4D, 0x3F33, 0, 0x556D, 0x4F5A, 0, 0x4E40, 0xBA65,
- 0x556E, 0xA82A, 0, 0x5570, 0xBA67, 0x437E, 0x556F, 0,
- 0x4023, 0, 0x3B7B, 0, 0, 0xA82B, 0x4250, 0x3C77,
-};
static const unsigned short utf8_to_euc_E5B0[] = {
0, 0x4975, 0x406C, 0, 0x3C4D, 0x5571, 0x3E2D, 0x5572,
0x5573, 0x3053, 0x423A, 0x3F52, 0xBA69, 0x5574, 0x4633, 0x3E2E,
@@ -6498,16 +3569,6 @@ static const unsigned short utf8_to_euc_E5B0[] = {
0xBA73, 0x3D22, 0xBA74, 0, 0, 0xBA75, 0xBA76, 0,
0x5579, 0x557A, 0x3C5C, 0x3F2C, 0x4674, 0x3F54, 0x4878, 0x4722,
};
-static const unsigned short utf8_to_euc_E5B0_x0213[] = {
- 0, 0x4975, 0x406C, 0xA82D, 0x3C4D, 0x5571, 0x3E2D, 0x5572,
- 0x5573, 0x3053, 0x423A, 0x3F52, 0xBA69, 0x5574, 0x4633, 0x3E2E,
- 0, 0x3E2F, 0x4F5B, 0x5575, 0, 0, 0x406D, 0xBA6A,
- 0, 0, 0x3E30, 0, 0, 0, 0x4F5C, 0xBA6C,
- 0x5576, 0, 0x5577, 0x4F5D, 0x4C60, 0, 0xBA6E, 0,
- 0x5578, 0xA82E, 0, 0x4F5E, 0xBA71, 0x3646, 0xBA72, 0,
- 0xA82F, 0x3D22, 0xBA74, 0, 0, 0xBA75, 0xBA76, 0,
- 0x5579, 0x557A, 0x3C5C, 0x3F2C, 0x4674, 0x3F54, 0x4878, 0x4722,
-};
static const unsigned short utf8_to_euc_E5B1[] = {
0x3649, 0x557B, 0, 0, 0, 0x356F, 0x557C, 0,
0x367E, 0, 0x464F, 0x3230, 0, 0x3B53, 0x557D, 0x5622,
@@ -6518,16 +3579,6 @@ static const unsigned short utf8_to_euc_E5B1[] = {
0xBB22, 0x3B33, 0, 0, 0xBB23, 0xBB24, 0x5627, 0,
0, 0x5628, 0xBB25, 0xBB26, 0xBB27, 0xBB28, 0, 0,
};
-static const unsigned short utf8_to_euc_E5B1_x0213[] = {
- 0x3649, 0x557B, 0, 0, 0, 0x356F, 0x557C, 0,
- 0x367E, 0, 0x464F, 0x3230, 0, 0x3B53, 0x557D, 0x5622,
- 0x5621, 0x367D, 0, 0x557E, 0, 0x4538, 0, 0,
- 0, 0xBA77, 0xBA78, 0x7E7B, 0xBA79, 0, 0x4230, 0xA831,
- 0x454B, 0x3C48, 0x4F60, 0xA832, 0x4158, 0x4D7A, 0, 0xA833,
- 0xA834, 0xA835, 0, 0, 0x5624, 0xBB21, 0x5625, 0x4656,
- 0xA836, 0x3B33, 0, 0, 0xBB23, 0xBB24, 0x5627, 0,
- 0, 0x5628, 0x4F64, 0xBB26, 0xA839, 0xBB28, 0, 0,
-};
static const unsigned short utf8_to_euc_E5B2[] = {
0, 0, 0, 0, 0, 0, 0, 0xBB29,
0xBB2A, 0, 0xBB2B, 0, 0x5629, 0, 0, 0xBB2C,
@@ -6538,16 +3589,6 @@ static const unsigned short utf8_to_euc_E5B2[] = {
0, 0x4252, 0xBB35, 0x3359, 0xBB36, 0xBB37, 0x562F, 0x5631,
0x345F, 0, 0xBB38, 0x562E, 0x5630, 0, 0x5633, 0,
};
-static const unsigned short utf8_to_euc_E5B2_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0xBB29,
- 0xA83C, 0, 0xA83D, 0, 0x5629, 0, 0, 0x4F65,
- 0x3474, 0x562A, 0xBB2D, 0, 0x562B, 0, 0, 0,
- 0, 0, 0, 0, 0, 0xBB2E, 0, 0x4F66,
- 0xA841, 0x322C, 0xA842, 0x4F67, 0, 0, 0xA843, 0xA844,
- 0x413B, 0x3464, 0x4F68, 0x562D, 0x4C28, 0xA846, 0, 0,
- 0, 0x4252, 0xBB35, 0x3359, 0xBB36, 0xA847, 0x562F, 0x5631,
- 0x345F, 0, 0x4F69, 0x562E, 0x5630, 0, 0x5633, 0,
-};
static const unsigned short utf8_to_euc_E5B3[] = {
0, 0, 0, 0, 0, 0x5632, 0, 0x5634,
0, 0xBB39, 0, 0xBB3A, 0, 0, 0, 0,
@@ -6558,16 +3599,6 @@ static const unsigned short utf8_to_euc_E5B3[] = {
0x4A76, 0xBB3F, 0xBB40, 0, 0xBB41, 0xF43B, 0x4567, 0,
0, 0, 0x5638, 0x3D54, 0, 0x5637, 0, 0,
};
-static const unsigned short utf8_to_euc_E5B3_x0213[] = {
- 0, 0, 0, 0, 0, 0x5632, 0, 0x5634,
- 0, 0xA849, 0, 0x4F6A, 0, 0, 0, 0,
- 0x4F6B, 0, 0x4F6C, 0, 0, 0, 0, 0xBB3D,
- 0, 0x5635, 0, 0, 0, 0xBB3C, 0, 0,
- 0x463D, 0x362E, 0, 0, 0, 0, 0, 0,
- 0x3265, 0x5636, 0x563B, 0, 0, 0x5639, 0xBB3E, 0x4A77,
- 0x4A76, 0xBB3F, 0xBB40, 0, 0x4F6D, 0xF43B, 0x4567, 0,
- 0, 0, 0x5638, 0x3D54, 0, 0x5637, 0, 0,
-};
static const unsigned short utf8_to_euc_E5B4[] = {
0, 0xBB42, 0, 0, 0, 0, 0xBB43, 0x3F72,
0, 0, 0, 0x563C, 0, 0xBB44, 0x3A6A, 0,
@@ -6578,16 +3609,6 @@ static const unsigned short utf8_to_euc_E5B4[] = {
0, 0xBB4B, 0, 0, 0xBB4C, 0, 0, 0,
0, 0xBB4D, 0, 0, 0, 0xBB4E, 0, 0xBB4F,
};
-static const unsigned short utf8_to_euc_E5B4_x0213[] = {
- 0, 0xBB42, 0, 0, 0, 0, 0xA84C, 0x3F72,
- 0, 0, 0, 0x563C, 0, 0x4F70, 0x3A6A, 0,
- 0xA84D, 0x5642, 0xBB45, 0, 0x5643, 0x563D, 0x3333, 0x563E,
- 0x5647, 0x5646, 0x5645, 0x5641, 0, 0xA84F, 0, 0x5640,
- 0xA850, 0, 0x5644, 0xBB47, 0xA851, 0, 0xA852, 0x4F71,
- 0, 0x4A78, 0, 0xA84E, 0, 0, 0, 0,
- 0, 0xA853, 0, 0, 0xBB4C, 0, 0, 0,
- 0, 0xA854, 0, 0, 0, 0xBB4E, 0, 0xBB4F,
-};
static const unsigned short utf8_to_euc_E5B5[] = {
0, 0, 0xBB50, 0xBB51, 0, 0, 0xBB52, 0,
0xBB53, 0, 0xBB57, 0x564B, 0x5648, 0, 0x564A, 0,
@@ -6598,16 +3619,6 @@ static const unsigned short utf8_to_euc_E5B5[] = {
0xBB5F, 0, 0, 0x564D, 0, 0, 0x564E, 0,
0, 0xBB60, 0xBB61, 0, 0, 0, 0xBB62, 0xBB63,
};
-static const unsigned short utf8_to_euc_E5B5_x0213[] = {
- 0, 0, 0xA855, 0xBB51, 0, 0, 0x4F73, 0x4F74,
- 0xBB53, 0, 0x4F76, 0x564B, 0x5648, 0, 0x564A, 0,
- 0x4D72, 0xBB55, 0x5649, 0x4F75, 0, 0xBB54, 0, 0,
- 0, 0xBB56, 0, 0, 0x563F, 0, 0, 0xBB58,
- 0xBB59, 0xA857, 0xBB5B, 0, 0xBB5C, 0, 0, 0,
- 0, 0x3F73, 0xA858, 0, 0x564C, 0x4F77, 0, 0x3A37,
- 0xA85A, 0, 0, 0x564D, 0, 0, 0x564E, 0,
- 0, 0xBB60, 0xBB61, 0, 0, 0, 0xBB62, 0xBB63,
-};
static const unsigned short utf8_to_euc_E5B6[] = {
0, 0xBB64, 0x5651, 0xBB65, 0x5650, 0, 0, 0x564F,
0xBB66, 0, 0xBB67, 0x4568, 0x563A, 0, 0, 0,
@@ -6618,16 +3629,6 @@ static const unsigned short utf8_to_euc_E5B6[] = {
0xBB72, 0, 0xE674, 0, 0xBB73, 0, 0, 0x5658,
0xBB74, 0xBB75, 0x4E66, 0, 0x5659, 0x5656, 0, 0,
};
-static const unsigned short utf8_to_euc_E5B6_x0213[] = {
- 0, 0x4F78, 0x5651, 0xBB65, 0x5650, 0, 0, 0x564F,
- 0xA85D, 0, 0xBB67, 0x4568, 0x563A, 0, 0, 0,
- 0x5657, 0, 0xA85F, 0xBB69, 0xA860, 0xBB6B, 0, 0xA861,
- 0, 0xA862, 0, 0xBB6D, 0, 0x5653, 0, 0xBB6E,
- 0x4F79, 0, 0x5652, 0, 0x4F7A, 0, 0, 0x4F7B,
- 0, 0, 0, 0xBB71, 0x5654, 0, 0x5655, 0,
- 0xA863, 0, 0xA864, 0, 0xA865, 0, 0, 0x5658,
- 0x4F7C, 0xA867, 0x4E66, 0, 0x5659, 0x5656, 0, 0,
-};
static const unsigned short utf8_to_euc_E5B7[] = {
0, 0, 0, 0xBB76, 0, 0, 0, 0xBB77,
0, 0x565A, 0, 0xBB78, 0x3460, 0x565B, 0xBB7A, 0,
@@ -6638,16 +3639,6 @@ static const unsigned short utf8_to_euc_E5B7[] = {
0, 0x384A, 0x5661, 0x4C26, 0x4743, 0x5662, 0, 0x392B,
0xBC22, 0xBC23, 0, 0x342C, 0, 0x4327, 0x3652, 0,
};
-static const unsigned short utf8_to_euc_E5B7_x0213[] = {
- 0, 0, 0, 0xBB76, 0, 0, 0, 0xBB77,
- 0, 0x565A, 0, 0x4F7D, 0x3460, 0x565B, 0xBB7A, 0,
- 0xBB79, 0xA868, 0x565D, 0x565C, 0, 0, 0x565E, 0xA869,
- 0xA86A, 0xBB7C, 0, 0x565F, 0, 0x406E, 0x3D23, 0,
- 0xA86B, 0x3D64, 0x7428, 0x4163, 0xA86D, 0x3929, 0x3A38, 0x392A,
- 0x3570, 0xA86E, 0, 0x5660, 0, 0, 0x3A39, 0,
- 0, 0x384A, 0x5661, 0x4C26, 0x4743, 0x5662, 0, 0x392B,
- 0xBC22, 0xBC23, 0, 0x342C, 0, 0x4327, 0x3652, 0,
-};
static const unsigned short utf8_to_euc_E5B8[] = {
0xBC24, 0, 0x3B54, 0x495B, 0, 0, 0x4841, 0xBC25,
0, 0, 0, 0x5663, 0x3475, 0xBC26, 0, 0,
@@ -6658,16 +3649,6 @@ static const unsigned short utf8_to_euc_E5B8[] = {
0x3522, 0, 0xBC2F, 0x4422, 0, 0xBC30, 0x5668, 0x5669,
0x3E6F, 0, 0, 0, 0, 0x4B39, 0xBC31, 0,
};
-static const unsigned short utf8_to_euc_E5B8_x0213[] = {
- 0xA870, 0, 0x3B54, 0x495B, 0, 0, 0x4841, 0xBC25,
- 0, 0, 0, 0x5663, 0x3475, 0xBC26, 0, 0,
- 0, 0x5666, 0xA872, 0, 0x7429, 0xA873, 0x4421, 0,
- 0x742A, 0x5665, 0x5664, 0x5667, 0, 0x446B, 0, 0xA875,
- 0xBC2C, 0, 0, 0, 0, 0x3F63, 0, 0,
- 0xBC2E, 0, 0, 0x3B55, 0, 0x404A, 0xA876, 0x4253,
- 0x3522, 0, 0xBC2F, 0x4422, 0, 0xBC30, 0x5668, 0x5669,
- 0x3E6F, 0, 0, 0, 0, 0x4B39, 0xA877, 0,
-};
static const unsigned short utf8_to_euc_E5B9[] = {
0x566C, 0, 0, 0x566B, 0x566A, 0x497D, 0, 0x5673,
0, 0xBC34, 0, 0xBC32, 0x4B5A, 0, 0x566D, 0,
@@ -6678,16 +3659,6 @@ static const unsigned short utf8_to_euc_E5B9[] = {
0xBC41, 0, 0x3433, 0x4A3F, 0x472F, 0x5674, 0x5675, 0,
0x392C, 0x3434, 0x5676, 0x3838, 0x4D44, 0x4D29, 0x3476, 0x5678,
};
-static const unsigned short utf8_to_euc_E5B9_x0213[] = {
- 0x566C, 0, 0, 0x566B, 0x566A, 0x497D, 0, 0x5673,
- 0, 0xA878, 0, 0xBC32, 0x4B5A, 0, 0x566D, 0,
- 0xBC33, 0xBC35, 0, 0, 0x566F, 0x4B6B, 0xA87A, 0x566E,
- 0x742B, 0, 0, 0xBC38, 0xBC39, 0, 0x742C, 0x5670,
- 0, 0x4828, 0x5671, 0x4A3E, 0x5672, 0, 0, 0,
- 0xBC3B, 0, 0xBC3C, 0xA87C, 0xA87D, 0xA87E, 0xAC21, 0,
- 0xBC41, 0, 0x3433, 0x4A3F, 0x472F, 0x5674, 0x5675, 0x7E7C,
- 0x392C, 0x3434, 0x5676, 0x3838, 0x4D44, 0x4D29, 0x3476, 0x5678,
-};
static const unsigned short utf8_to_euc_E5BA[] = {
0xBC42, 0x4423, 0, 0x392D, 0x3E31, 0, 0, 0x485F,
0, 0, 0x3E32, 0xBC43, 0, 0, 0xBC44, 0x3D78,
@@ -6698,16 +3669,6 @@ static const unsigned short utf8_to_euc_E5BA[] = {
0, 0xBC4B, 0, 0xBC4C, 0, 0x3043, 0x3D6E, 0x392F,
0x4D47, 0, 0, 0, 0, 0xBC4D, 0xBC4E, 0xBC4F,
};
-static const unsigned short utf8_to_euc_E5BA_x0213[] = {
- 0xBC42, 0x4423, 0, 0x392D, 0x3E31, 0, 0, 0x485F,
- 0, 0, 0x3E32, 0xBC43, 0, 0, 0xBC44, 0x3D78,
- 0, 0, 0, 0, 0, 0x446C, 0x4A79, 0x4539,
- 0, 0, 0x392E, 0, 0x495C, 0, 0, 0,
- 0x5679, 0, 0xBC45, 0, 0xBC46, 0xAC23, 0x4559, 0x3A42,
- 0xBC48, 0, 0xAC24, 0x384B, 0xAC25, 0x446D, 0, 0,
- 0, 0xBC4B, 0, 0xBC4C, 0, 0x3043, 0x3D6E, 0x392F,
- 0x4D47, 0xAC26, 0, 0, 0, 0xBC4D, 0x742D, 0xAC27,
-};
static const unsigned short utf8_to_euc_E5BB[] = {
0, 0x567A, 0x567B, 0x4751, 0, 0, 0xBC50, 0,
0x567C, 0x4E77, 0x4F2D, 0xBC52, 0xBC51, 0, 0xBC53, 0x567E,
@@ -6718,16 +3679,6 @@ static const unsigned short utf8_to_euc_E5BB[] = {
0x572D, 0x572B, 0, 0x572C, 0x572E, 0, 0x3164, 0x446E,
0x572F, 0, 0x377A, 0x3276, 0x4736, 0, 0x5730, 0x467B,
};
-static const unsigned short utf8_to_euc_E5BB_x0213[] = {
- 0, 0x567A, 0x567B, 0x4751, 0, 0, 0xAC28, 0,
- 0x567C, 0x4E77, 0x4F2D, 0x742F, 0xBC51, 0, 0xBC53, 0x567E,
- 0x567D, 0xBC54, 0xAC29, 0x3347, 0xBC56, 0xBC57, 0x5721, 0,
- 0, 0xAC2A, 0x5724, 0x5725, 0xBC58, 0x5723, 0xBC59, 0x4940,
- 0x3E33, 0x5727, 0x5726, 0x5722, 0, 0xBC5A, 0, 0,
- 0x5728, 0x5729, 0, 0xBC5B, 0x572A, 0, 0, 0,
- 0x572D, 0x572B, 0, 0x572C, 0x572E, 0, 0x3164, 0x446E,
- 0x572F, 0x7430, 0x377A, 0x3276, 0x4736, 0xAC2C, 0x5730, 0x467B,
-};
static const unsigned short utf8_to_euc_E5BC[] = {
0, 0x4A5B, 0xBC5C, 0x5731, 0x4F2E, 0, 0xBC5D, 0xBC5E,
0xBC5F, 0x5732, 0x4A40, 0x5735, 0x5021, 0x5031, 0xBC60, 0x3C30,
@@ -6738,16 +3689,6 @@ static const unsigned short utf8_to_euc_E5BC[] = {
0xBC6C, 0x3C65, 0, 0, 0xBC6D, 0x4425, 0xBC6E, 0x362F,
0x573A, 0, 0, 0xBC6F, 0x492B, 0xBC70, 0x4346, 0xBC71,
};
-static const unsigned short utf8_to_euc_E5BC_x0213[] = {
- 0x7431, 0x4A5B, 0x7432, 0x5731, 0x4F2E, 0, 0xBC5D, 0x7433,
- 0xAC2D, 0x5732, 0x4A40, 0x5735, 0x5021, 0x5031, 0xAC2E, 0x3C30,
- 0x4675, 0x5736, 0, 0x355D, 0x4424, 0x307A, 0x5737, 0x4A26,
- 0x3930, 0xBC61, 0, 0x4350, 0xAC2F, 0x7434, 0xAC31, 0x446F,
- 0, 0xBC64, 0xBC65, 0x7435, 0xBC67, 0x4C6F, 0x3839, 0x384C,
- 0xBC68, 0x5738, 0, 0xBC69, 0xBC6A, 0x5739, 0xBC6B, 0x573F,
- 0xBC6C, 0x3C65, 0, 0, 0x7436, 0x4425, 0x7437, 0x362F,
- 0x573A, 0, 0, 0xBC6F, 0x492B, 0x7438, 0x4346, 0xBC71,
-};
static const unsigned short utf8_to_euc_E5BD[] = {
0xBC72, 0x573B, 0, 0, 0xBC73, 0xBC74, 0, 0xBC75,
0x573C, 0, 0x3630, 0, 0x573D, 0xBC76, 0x573E, 0,
@@ -6758,16 +3699,6 @@ static const unsigned short utf8_to_euc_E5BD[] = {
0x3E34, 0x3146, 0xBD22, 0x5746, 0xBD23, 0xBD24, 0, 0x5747,
0xBD25, 0x4C72, 0xBD26, 0, 0x4860, 0xBD27, 0xBD28, 0x574A,
};
-static const unsigned short utf8_to_euc_E5BD_x0213[] = {
- 0x7439, 0x573B, 0, 0, 0xBC73, 0x743A, 0, 0xAC32,
- 0x573C, 0, 0x3630, 0, 0x573D, 0xBC76, 0x573E, 0,
- 0xBC77, 0x5740, 0, 0x4576, 0x743B, 0, 0x5741, 0x5742,
- 0x743C, 0x5743, 0, 0xBC7A, 0x5734, 0x5733, 0, 0,
- 0xBC7B, 0x5744, 0x3741, 0xAC33, 0x743D, 0, 0x4927, 0x743E,
- 0, 0x3A4C, 0x4937, 0x4426, 0x494B, 0x5745, 0, 0xBD21,
- 0x3E34, 0x3146, 0xAC34, 0x5746, 0xBD23, 0xBD24, 0, 0x5747,
- 0xBD25, 0x4C72, 0xBD26, 0, 0x4860, 0x743F, 0xAC35, 0x574A,
-};
static const unsigned short utf8_to_euc_E5BE[] = {
0x317D, 0x402C, 0x5749, 0x5748, 0x3742, 0x4254, 0, 0x574E,
0x574C, 0xBD29, 0x574B, 0x4E27, 0x3865, 0xBD2A, 0, 0xBD2B,
@@ -6778,16 +3709,6 @@ static const unsigned short utf8_to_euc_E5BE[] = {
0xBD35, 0xBD36, 0, 0x4641, 0x4427, 0, 0, 0xF43E,
0xBD37, 0x4530, 0, 0, 0x5755, 0x352B, 0, 0,
};
-static const unsigned short utf8_to_euc_E5BE_x0213[] = {
- 0x317D, 0x402C, 0x5749, 0x5748, 0x3742, 0x4254, 0, 0x574E,
- 0x574C, 0x7440, 0x574B, 0x4E27, 0x3865, 0xBD2A, 0, 0xAC36,
- 0x3D79, 0x574D, 0x454C, 0x3D3E, 0, 0, 0xBD2C, 0x4640,
- 0x5751, 0x5750, 0, 0, 0x7441, 0xBD2E, 0x574F, 0,
- 0x5752, 0x3866, 0xAC37, 0, 0xAC38, 0, 0, 0x7442,
- 0x5753, 0x497C, 0x3D5B, 0xBD31, 0xBD33, 0x5754, 0x4879, 0x7443,
- 0xBD35, 0xBD36, 0, 0x4641, 0x4427, 0x7444, 0, 0x7445,
- 0xAC39, 0x4530, 0, 0, 0x5755, 0x352B, 0, 0,
-};
static const unsigned short utf8_to_euc_E5BF[] = {
0, 0, 0, 0x3F34, 0xBD38, 0x492C, 0, 0xBD39,
0xBD3A, 0xBD3B, 0, 0xBD3C, 0x3477, 0x4726, 0, 0,
@@ -6798,16 +3719,6 @@ static const unsigned short utf8_to_euc_E5BF[] = {
0x582D, 0x575A, 0xBD4C, 0xBD4D, 0, 0x4730, 0xBD4E, 0,
0x5759, 0, 0xBD4F, 0x5757, 0xBD50, 0x397A, 0, 0x575D,
};
-static const unsigned short utf8_to_euc_E5BF_x0213[] = {
- 0, 0, 0, 0x3F34, 0xAC3A, 0x492C, 0, 0xAC3C,
- 0xBD3A, 0x7446, 0, 0xAC3D, 0x3477, 0x4726, 0, 0,
- 0xBD3D, 0xBD3E, 0xAC3E, 0xAC3F, 0xAC40, 0, 0x5756, 0x3B56,
- 0x4B3A, 0x4B3B, 0, 0, 0x317E, 0x575B, 0x7447, 0,
- 0x4369, 0x7448, 0xAC41, 0, 0x5758, 0, 0, 0,
- 0xBD45, 0x7449, 0xBD47, 0x3277, 0xBD48, 0xBD49, 0xAC42, 0xAC43,
- 0x582D, 0x575A, 0xBD4C, 0xAC44, 0, 0x4730, 0xBD4E, 0,
- 0x5759, 0, 0xBD4F, 0x5757, 0xAC45, 0x397A, 0, 0x575D,
-};
static const unsigned short utf8_to_euc_E680[] = {
0, 0, 0, 0, 0, 0, 0, 0xBD51,
0, 0, 0xBD52, 0, 0, 0xBD53, 0x5763, 0x5769,
@@ -6818,16 +3729,6 @@ static const unsigned short utf8_to_euc_E680[] = {
0, 0x5764, 0, 0xBD5C, 0, 0xBD5D, 0, 0,
0, 0, 0x576A, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E680_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0xBD51,
- 0, 0, 0xBD52, 0, 0, 0x744A, 0x5763, 0x5769,
- 0x5761, 0, 0x455C, 0xBD54, 0x744B, 0x5766, 0x495D, 0xAC47,
- 0x744C, 0x5760, 0xBD58, 0x5765, 0x4E67, 0x3B57, 0, 0xBD59,
- 0x4255, 0x575E, 0xAC48, 0, 0xAC49, 0x355E, 0x5768, 0x402D,
- 0x3165, 0x5762, 0x3278, 0x5767, 0, 0xBD5B, 0, 0x3631,
- 0, 0x5764, 0, 0x744D, 0, 0x744E, 0, 0,
- 0, 0, 0x576A, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E681[] = {
0xBD5E, 0x576C, 0x5776, 0x5774, 0, 0, 0x5771, 0xBD5F,
0xBD60, 0xBD61, 0x5770, 0x4E78, 0xBD62, 0x5772, 0, 0,
@@ -6838,16 +3739,6 @@ static const unsigned short utf8_to_euc_E681[] = {
0x3366, 0xBD6A, 0, 0, 0, 0x3743, 0, 0x576E,
0, 0, 0, 0, 0, 0, 0xBD6B, 0xBD6C,
};
-static const unsigned short utf8_to_euc_E681_x0213[] = {
- 0xBD5E, 0x576C, 0x5776, 0x5774, 0, 0, 0x5771, 0x744F,
- 0xBD60, 0xBD61, 0x5770, 0x4E78, 0xAC4B, 0x5772, 0, 0,
- 0x3632, 0xBD63, 0x3931, 0, 0xBD64, 0x3D7A, 0xBD65, 0xBD66,
- 0, 0x5779, 0x576B, 0, 0, 0xBD67, 0, 0x576F,
- 0x575F, 0xBD68, 0x327A, 0x5773, 0x5775, 0x4351, 0, 0xBD69,
- 0x3A28, 0x3238, 0x576D, 0x5778, 0x5777, 0x3633, 0, 0x4229,
- 0x3366, 0xBD6A, 0, 0, 0, 0x3743, 0, 0x576E,
- 0, 0, 0, 0, 0, 0, 0xBD6B, 0xAC4C,
-};
static const unsigned short utf8_to_euc_E682[] = {
0, 0x577A, 0xBD6D, 0x577D, 0x5821, 0xF43F, 0xBD6E, 0,
0xBD6F, 0x3C3D, 0xBD70, 0x5827, 0x4470, 0x577B, 0xBD71, 0,
@@ -6858,16 +3749,6 @@ static const unsigned short utf8_to_euc_E682[] = {
0xBD7C, 0xBD7D, 0x4861, 0x575C, 0x582C, 0x5830, 0x4C65, 0xBD7E,
0x5829, 0, 0, 0xBE21, 0x4569, 0x582E, 0xBE22, 0,
};
-static const unsigned short utf8_to_euc_E682_x0213[] = {
- 0, 0x577A, 0xBD6D, 0x577D, 0x5821, 0xF43F, 0xBD6E, 0,
- 0xBD6F, 0x3C3D, 0xAC4D, 0x5827, 0x4470, 0x577B, 0xBD71, 0,
- 0, 0xBD72, 0x5825, 0xBD73, 0x3279, 0xAC4E, 0x5823, 0x5824,
- 0xBD75, 0, 0x577E, 0x5822, 0, 0x7451, 0x7452, 0x3867,
- 0x4D2A, 0, 0xBD78, 0x3435, 0xBD79, 0xBD7A, 0x3159, 0x5826,
- 0xAC4F, 0x473A, 0x302D, 0, 0, 0, 0, 0,
- 0xAC51, 0xAC52, 0x4861, 0x575C, 0x582C, 0x5830, 0x4C65, 0xBD7E,
- 0x5829, 0, 0, 0xBE21, 0x4569, 0x582E, 0xAC53, 0,
-};
static const unsigned short utf8_to_euc_E683[] = {
0, 0, 0xBE23, 0, 0xBE24, 0x3E70, 0x582F, 0x4657,
0xBE25, 0xBE26, 0xBE27, 0xBE28, 0, 0, 0xBE29, 0xBE2A,
@@ -6878,16 +3759,6 @@ static const unsigned short utf8_to_euc_E683[] = {
0x4246, 0x583D, 0xBE33, 0x415B, 0x5838, 0xBE34, 0x5835, 0x5836,
0xBE35, 0x3C66, 0x5839, 0x583C, 0xBE36, 0xBE37, 0, 0,
};
-static const unsigned short utf8_to_euc_E683_x0213[] = {
- 0, 0, 0xBE23, 0, 0xBE24, 0x3E70, 0x582F, 0x4657,
- 0xAC54, 0xBE26, 0xBE27, 0x7453, 0, 0, 0xBE29, 0xBE2A,
- 0, 0x4F47, 0, 0x582B, 0x7454, 0x7455, 0, 0,
- 0x5831, 0xAC55, 0x397B, 0xAC56, 0x404B, 0x7456, 0xBE30, 0x3054,
- 0x582A, 0x5828, 0xBE31, 0x415A, 0, 0xBE32, 0, 0x577C,
- 0x3B34, 0, 0, 0, 0, 0, 0xAC57, 0,
- 0x4246, 0x583D, 0xAC58, 0x415B, 0x5838, 0xAC59, 0x5835, 0x5836,
- 0x7457, 0x3C66, 0x5839, 0x583C, 0xBE36, 0xBE37, 0, 0,
-};
static const unsigned short utf8_to_euc_E684[] = {
0x5837, 0x3D25, 0xBE38, 0x583A, 0, 0, 0x5834, 0xBE39,
0x4C7C, 0x4C7B, 0xBE3A, 0, 0xBE3B, 0x583E, 0x583F, 0x3055,
@@ -6898,16 +3769,6 @@ static const unsigned short utf8_to_euc_E684[] = {
0xBE49, 0xBE4A, 0, 0, 0x5848, 0xBE4B, 0xBE4C, 0xBE4D,
0, 0xBE4E, 0, 0, 0x5846, 0x5849, 0x5841, 0x5845,
};
-static const unsigned short utf8_to_euc_E684_x0213[] = {
- 0x5837, 0x3D25, 0xBE38, 0x583A, 0, 0, 0x5834, 0xBE39,
- 0x4C7C, 0x4C7B, 0xBE3A, 0, 0xBE3B, 0x583E, 0x583F, 0x3055,
- 0xAC5A, 0xBE3D, 0xAC5B, 0xAC5C, 0xBE40, 0x5833, 0xBE41, 0xBE42,
- 0, 0xAC5D, 0x3672, 0x3026, 0x7458, 0, 0xAC5E, 0x3436,
- 0xF440, 0x583B, 0xBE46, 0, 0, 0, 0, 0x5843,
- 0x5842, 0, 0xBE47, 0x7459, 0x5847, 0, 0, 0,
- 0x745A, 0xBE4A, 0, 0, 0x5848, 0xBE4B, 0xBE4C, 0x745B,
- 0, 0xBE4E, 0xAC5F, 0, 0x5846, 0x5849, 0x5841, 0x5845,
-};
static const unsigned short utf8_to_euc_E685[] = {
0, 0xBE4F, 0x584A, 0, 0x584B, 0xBE50, 0xBE51, 0x5840,
0x3B7C, 0xBE52, 0x5844, 0x4256, 0x3932, 0x5832, 0x3F35, 0,
@@ -6918,16 +3779,6 @@ static const unsigned short utf8_to_euc_E685[] = {
0x3056, 0x5855, 0xBE56, 0x584C, 0x5852, 0x5859, 0x3744, 0x584D,
0xBE57, 0, 0, 0xBE58, 0xBE59, 0, 0x4D5D, 0xBE5A,
};
-static const unsigned short utf8_to_euc_E685_x0213[] = {
- 0, 0xAC61, 0x584A, 0, 0x584B, 0xBE50, 0xAC62, 0x5840,
- 0x3B7C, 0xBE52, 0x5844, 0x4256, 0x3932, 0x5832, 0x3F35, 0,
- 0, 0, 0, 0x5858, 0, 0x4A69, 0, 0,
- 0x584E, 0x584F, 0x5850, 0, 0, 0x5857, 0xBE53, 0x5856,
- 0xAC63, 0, 0x4B7D, 0x3437, 0, 0x5854, 0, 0x3745,
- 0x3334, 0, 0, 0x5851, 0xBE55, 0, 0x4E38, 0x5853,
- 0x3056, 0x5855, 0xBE56, 0x584C, 0x5852, 0x5859, 0x3744, 0x584D,
- 0xBE57, 0, 0, 0xBE58, 0xAC64, 0, 0x4D5D, 0xBE5A,
-};
static const unsigned short utf8_to_euc_E686[] = {
0xBE5B, 0xBE5C, 0x4D2B, 0xBE5D, 0xBE5E, 0, 0, 0x585C,
0, 0, 0x5860, 0xBE5F, 0, 0xBE60, 0x417E, 0,
@@ -6938,16 +3789,6 @@ static const unsigned short utf8_to_euc_E686[] = {
0, 0, 0x377B, 0, 0, 0, 0x3231, 0,
0xBE6D, 0xBE6E, 0x586B, 0, 0xBE6F, 0, 0x3438, 0,
};
-static const unsigned short utf8_to_euc_E686_x0213[] = {
- 0xBE5B, 0xBE5C, 0x4D2B, 0xBE5D, 0xBE5E, 0, 0, 0x585C,
- 0, 0, 0x5860, 0xBE5F, 0, 0x745D, 0x417E, 0,
- 0x4E79, 0x5861, 0xAC66, 0xAC67, 0x585E, 0, 0x585B, 0xAC68,
- 0xAC69, 0x585A, 0x585F, 0, 0xBE65, 0xBE66, 0, 0xBE67,
- 0xBE68, 0, 0, 0, 0x4A30, 0xAC6A, 0, 0x4634,
- 0xAC6B, 0x3746, 0xBE6B, 0x5862, 0x585D, 0xAC6C, 0x5863, 0,
- 0, 0, 0x377B, 0, 0, 0, 0x3231, 0,
- 0xBE6D, 0x7460, 0x586B, 0, 0x745F, 0, 0x3438, 0,
-};
static const unsigned short utf8_to_euc_E687[] = {
0xBE70, 0xBE71, 0xBE72, 0x5869, 0, 0, 0x586A, 0x3A29,
0x5868, 0x5866, 0x5865, 0x586C, 0x5864, 0x586E, 0xBE73, 0xBE74,
@@ -6958,16 +3799,6 @@ static const unsigned short utf8_to_euc_E687[] = {
0, 0, 0x4428, 0, 0x5873, 0, 0x5871, 0x5867,
0x377C, 0, 0x5872, 0, 0x5876, 0x5875, 0x5877, 0x5874,
};
-static const unsigned short utf8_to_euc_E687_x0213[] = {
- 0xBE70, 0xBE71, 0xBE72, 0x5869, 0, 0, 0x586A, 0x3A29,
- 0x5868, 0x5866, 0x5865, 0x586C, 0x5864, 0x586E, 0xBE73, 0xBE74,
- 0x327B, 0, 0, 0, 0, 0xAC6E, 0, 0,
- 0, 0, 0, 0, 0xBE76, 0xAC6F, 0xBE78, 0xAC70,
- 0, 0xBE7A, 0xBE7B, 0x5870, 0, 0xBE7E, 0x586F, 0xBE7C,
- 0, 0xBE7D, 0, 0, 0xBF21, 0xBF22, 0, 0xBF23,
- 0, 0, 0x4428, 0, 0x5873, 0xAC71, 0x5871, 0x5867,
- 0x377C, 0, 0x5872, 0, 0x5876, 0x5875, 0x5877, 0x5874,
-};
static const unsigned short utf8_to_euc_E688[] = {
0x5878, 0xBF24, 0, 0xBF25, 0xBF26, 0, 0, 0xBF27,
0x5879, 0x587A, 0x4A6A, 0, 0x587C, 0x587B, 0x3D3F, 0,
@@ -6978,16 +3809,6 @@ static const unsigned short utf8_to_euc_E688[] = {
0x5925, 0, 0x5926, 0x5927, 0x4257, 0, 0, 0,
0x384D, 0xBF31, 0, 0x4C61, 0, 0xBF32, 0, 0x4B3C,
};
-static const unsigned short utf8_to_euc_E688_x0213[] = {
- 0x5878, 0xBF24, 0, 0xBF25, 0xBF26, 0, 0, 0xBF27,
- 0x5879, 0x587A, 0x4A6A, 0, 0x587C, 0x587B, 0x3D3F, 0,
- 0x402E, 0x3266, 0x327C, 0xBF28, 0x587D, 0xAC73, 0x303F, 0,
- 0, 0, 0x404C, 0x587E, 0xBF2A, 0x6C43, 0x5921, 0x3761,
- 0xBF2B, 0x5922, 0x7462, 0xAC74, 0, 0, 0x406F, 0xBF2E,
- 0, 0xAC75, 0x5923, 0xBF30, 0, 0, 0x5924, 0x353A,
- 0x5925, 0, 0x5926, 0x5927, 0x4257, 0, 0, 0,
- 0x384D, 0xBF31, 0, 0x4C61, 0, 0xBF32, 0x7463, 0x4B3C,
-};
static const unsigned short utf8_to_euc_E689[] = {
0x3D6A, 0x5928, 0xBF33, 0xBF34, 0xBF35, 0, 0xBF36, 0x4070,
0x6E3D, 0x4862, 0, 0x3C6A, 0xBF37, 0x3A4D, 0x5929, 0,
@@ -6998,16 +3819,6 @@ static const unsigned short utf8_to_euc_E689[] = {
0, 0x3037, 0, 0xBF42, 0, 0, 0x495E, 0,
0, 0x4863, 0xBF43, 0, 0x592F, 0xBF44, 0x5932, 0x3E35,
};
-static const unsigned short utf8_to_euc_E689_x0213[] = {
- 0x3D6A, 0x5928, 0xBF33, 0x7464, 0xBF35, 0, 0xAC76, 0x4070,
- 0x6E3D, 0x4862, 0, 0x3C6A, 0xAC77, 0x3A4D, 0x5929, 0,
- 0xBF38, 0xAC78, 0xAC79, 0x4247, 0xBF3B, 0x4A27, 0x7465, 0,
- 0x4271, 0, 0x7466, 0x592C, 0xBF3E, 0, 0x592A, 0,
- 0x592D, 0xAC7A, 0, 0x592B, 0xAC7B, 0, 0, 0,
- 0x592E, 0, 0, 0, 0, 0xAC7D, 0x4A31, 0x7467,
- 0, 0x3037, 0, 0xAC7E, 0, 0, 0x495E, 0,
- 0, 0x4863, 0xBF43, 0xAC7C, 0x592F, 0xBF44, 0x5932, 0x3E35,
-};
static const unsigned short utf8_to_euc_E68A[] = {
0x353B, 0, 0x5930, 0x5937, 0x3E36, 0, 0, 0,
0, 0x5931, 0x4744, 0, 0, 0xBF45, 0xBF46, 0xBF47,
@@ -7018,16 +3829,6 @@ static const unsigned short utf8_to_euc_E68A[] = {
0, 0x4A7A, 0, 0xBF4B, 0, 0x4471, 0xBF4C, 0xBF4D,
0, 0x4B75, 0xBF4E, 0x593B, 0x3221, 0x436A, 0xBF4F, 0xBF50,
};
-static const unsigned short utf8_to_euc_E68A_x0213[] = {
- 0x353B, 0, 0x5930, 0x5937, 0x3E36, 0x7468, 0, 0,
- 0, 0x5931, 0x4744, 0, 0, 0xBF45, 0xBF46, 0xBF47,
- 0xBF48, 0x4D5E, 0x5933, 0x5934, 0x5938, 0x456A, 0x5935, 0x3933,
- 0x405E, 0xAD21, 0, 0x5946, 0x4834, 0, 0x4272, 0,
- 0, 0, 0, 0, 0, 0, 0xAD22, 0,
- 0xBF4A, 0, 0, 0x4864, 0x5A2D, 0, 0, 0,
- 0, 0x4A7A, 0, 0xBF4B, 0, 0x4471, 0xBF4C, 0xBF4D,
- 0, 0x4B75, 0xBF4E, 0x593B, 0x3221, 0x436A, 0xBF4F, 0xBF50,
-};
static const unsigned short utf8_to_euc_E68B[] = {
0, 0, 0x5944, 0, 0xBF51, 0x4334, 0x593E, 0x5945,
0x5940, 0x5947, 0x5943, 0, 0x5942, 0x476F, 0xBF52, 0x593C,
@@ -7038,16 +3839,6 @@ static const unsigned short utf8_to_euc_E68B[] = {
0, 0x594A, 0xBF57, 0x377D, 0xBF58, 0x594F, 0x3B22, 0x3969,
0, 0, 0, 0, 0xBF59, 0xBF5A, 0x3D26, 0x593D,
};
-static const unsigned short utf8_to_euc_E68B_x0213[] = {
- 0, 0, 0x5944, 0, 0x7469, 0x4334, 0x593E, 0x5945,
- 0x5940, 0x5947, 0x5943, 0, 0x5942, 0x476F, 0xBF52, 0x593C,
- 0x327D, 0x593A, 0x3571, 0x4273, 0x5936, 0xAD23, 0x746A, 0x5939,
- 0x3934, 0x405B, 0xBF55, 0x3E37, 0x5941, 0x4752, 0, 0,
- 0x3572, 0x3348, 0, 0, 0, 0, 0, 0,
- 0, 0, 0xBF56, 0, 0x3367, 0x3F21, 0x5949, 0x594E,
- 0, 0x594A, 0xBF57, 0x377D, 0xBF58, 0x594F, 0x3B22, 0x3969,
- 0, 0, 0, 0, 0x746B, 0xAD25, 0x3D26, 0x593D,
-};
static const unsigned short utf8_to_euc_E68C[] = {
0, 0x3B7D, 0x594C, 0xBF5B, 0xBF5C, 0, 0, 0x3B58,
0x594D, 0x3044, 0xBF5D, 0xBF5E, 0x5948, 0xBF5F, 0, 0,
@@ -7058,16 +3849,6 @@ static const unsigned short utf8_to_euc_E68C[] = {
0, 0, 0, 0, 0, 0xBF67, 0xBF68, 0,
0, 0xBF69, 0x4472, 0, 0xBF6A, 0x4854, 0x5951, 0x415E,
};
-static const unsigned short utf8_to_euc_E68C_x0213[] = {
- 0, 0x3B7D, 0x594C, 0xAD26, 0xBF5C, 0, 0, 0x3B58,
- 0x594D, 0x3044, 0x746C, 0xBF5E, 0x5948, 0xAD27, 0, 0,
- 0xAD28, 0x4429, 0, 0xBF61, 0, 0, 0xBF62, 0,
- 0x746D, 0x3573, 0, 0, 0, 0, 0, 0x3634,
- 0, 0, 0, 0, 0, 0, 0, 0x594B,
- 0x3027, 0xBF64, 0xBF65, 0x3A43, 0, 0xBF66, 0, 0x3F36,
- 0, 0, 0xAD2B, 0, 0, 0xAD2C, 0xBF68, 0,
- 0, 0x746E, 0x4472, 0xAD2D, 0xAD2E, 0x4854, 0x5951, 0x415E,
-};
static const unsigned short utf8_to_euc_E68D[] = {
0, 0xBF6B, 0xBF6C, 0xBF6D, 0xBF6E, 0, 0xBF6F, 0,
0, 0x422A, 0xBF70, 0xBF71, 0x3B2B, 0x5952, 0xBF72, 0x5954,
@@ -7078,16 +3859,6 @@ static const unsigned short utf8_to_euc_E68D[] = {
0, 0xBF7C, 0x377E, 0, 0xBF7D, 0xBF7E, 0x5959, 0x3E39,
0xC021, 0, 0x4668, 0x4731, 0xC022, 0xC023, 0, 0xC024,
};
-static const unsigned short utf8_to_euc_E68D_x0213[] = {
- 0, 0xAD2F, 0xBF6C, 0x746F, 0xAD30, 0, 0xBF6F, 0,
- 0, 0x422A, 0xBF70, 0xBF71, 0x3B2B, 0x5952, 0xAD31, 0x5954,
- 0x5950, 0, 0xBF73, 0xBF74, 0xBF75, 0x4A61, 0, 0x443D,
- 0xBF76, 0xAD33, 0, 0xBF77, 0x415C, 0, 0, 0,
- 0, 0, 0, 0, 0, 0x7470, 0xBF79, 0x4A7B,
- 0x3C4E, 0x5960, 0, 0x595F, 0xAD36, 0xBF7B, 0x3F78, 0,
- 0, 0xBF7C, 0x377E, 0, 0xBF7D, 0xBF7E, 0x5959, 0x3E39,
- 0xC021, 0, 0x4668, 0x4731, 0x7471, 0xC023, 0, 0xC024,
-};
static const unsigned short utf8_to_euc_E68E[] = {
0x5957, 0, 0xC025, 0x415D, 0xC026, 0, 0, 0xC027,
0x3C78, 0x595C, 0xC028, 0, 0x3E38, 0, 0x5956, 0x595B,
@@ -7098,16 +3869,6 @@ static const unsigned short utf8_to_euc_E68E[] = {
0, 0, 0x3747, 0, 0x444F, 0x595E, 0, 0,
0, 0, 0, 0x415F, 0, 0xC034, 0x5961, 0,
};
-static const unsigned short utf8_to_euc_E68E_x0213[] = {
- 0x5957, 0, 0xC025, 0x415D, 0xAD37, 0, 0, 0xC027,
- 0x3C78, 0x595C, 0xC028, 0, 0x3E38, 0, 0x5956, 0x595B,
- 0xC029, 0, 0x4753, 0, 0xAD3A, 0xC02B, 0x5955, 0,
- 0x3721, 0xAD38, 0xC02D, 0x335D, 0, 0, 0xC02E, 0x595D,
- 0x4E2B, 0x3A4E, 0x4335, 0x595A, 0xC02F, 0x405C, 0xC030, 0x3935,
- 0x3F64, 0x3166, 0x413C, 0x5958, 0x3545, 0xC031, 0xC032, 0xC033,
- 0, 0, 0x3747, 0, 0x444F, 0x595E, 0, 0,
- 0, 0, 0, 0x415F, 0, 0xAD3B, 0x5961, 0,
-};
static const unsigned short utf8_to_euc_E68F[] = {
0x5963, 0xC035, 0, 0x4237, 0x5969, 0xC036, 0x5964, 0,
0xC037, 0x5966, 0, 0, 0, 0, 0xC038, 0x4941,
@@ -7118,16 +3879,6 @@ static const unsigned short utf8_to_euc_E68F[] = {
0, 0, 0xC042, 0xC043, 0x3167, 0xC044, 0x5968, 0,
0xC045, 0xC046, 0x4D49, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E68F_x0213[] = {
- 0x5963, 0xC035, 0, 0x4237, 0x5969, 0xC036, 0x5964, 0,
- 0xC037, 0x5966, 0, 0, 0, 0, 0xC038, 0x4941,
- 0x4473, 0xC039, 0x5967, 0xC03A, 0xAD3D, 0xAD3E, 0x4D2C, 0,
- 0, 0, 0x4D48, 0x3439, 0xAD3F, 0, 0, 0,
- 0xAD40, 0x302E, 0, 0x5965, 0, 0x7472, 0, 0,
- 0, 0x5962, 0xC040, 0xAD41, 0xAD42, 0x7473, 0x3478, 0,
- 0, 0, 0xAD43, 0xC043, 0x3167, 0x7474, 0x5968, 0xAD3C,
- 0xC045, 0xC046, 0x4D49, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E690[] = {
0, 0, 0, 0, 0, 0, 0x596C, 0,
0, 0xC047, 0xC048, 0, 0, 0x423B, 0, 0x5973,
@@ -7138,16 +3889,6 @@ static const unsigned short utf8_to_euc_E690[] = {
0xC055, 0, 0, 0, 0x596B, 0xC056, 0x596F, 0,
0, 0, 0x3748, 0, 0, 0xC057, 0x3A71, 0xC058,
};
-static const unsigned short utf8_to_euc_E690_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0x596C, 0,
- 0, 0xAD44, 0xC048, 0, 0, 0x423B, 0, 0x5973,
- 0x7475, 0, 0xC04A, 0x596D, 0x7476, 0, 0x596A, 0x5971,
- 0xC04C, 0, 0, 0, 0x5953, 0, 0xAD45, 0,
- 0xC04E, 0, 0x7477, 0, 0xC050, 0xAD46, 0x596E, 0,
- 0x5972, 0xAD47, 0xC053, 0, 0x4842, 0x456B, 0, 0xAD48,
- 0xC055, 0, 0, 0, 0x596B, 0xC056, 0x596F, 0,
- 0, 0, 0x3748, 0, 0, 0xC057, 0x3A71, 0xC058,
-};
static const unsigned short utf8_to_euc_E691[] = {
0, 0, 0x405D, 0, 0, 0, 0, 0,
0, 0, 0, 0xC059, 0, 0, 0x5977, 0xC05A,
@@ -7158,16 +3899,6 @@ static const unsigned short utf8_to_euc_E691[] = {
0, 0, 0, 0xC068, 0xC069, 0, 0x5976, 0,
0x4C4E, 0, 0x4022, 0xC06A, 0, 0xC06B, 0, 0,
};
-static const unsigned short utf8_to_euc_E691_x0213[] = {
- 0, 0, 0x405D, 0, 0, 0, 0, 0,
- 0, 0, 0, 0xC059, 0, 0, 0x5977, 0xC05A,
- 0, 0x7479, 0xC05C, 0xC05D, 0xC05E, 0, 0, 0,
- 0x4526, 0, 0xAD49, 0xAD4A, 0xC061, 0xAD4B, 0, 0xC063,
- 0x747A, 0xC065, 0, 0xC066, 0, 0, 0, 0x5974,
- 0, 0x4B60, 0, 0, 0, 0x747B, 0, 0x5975,
- 0, 0, 0, 0xAD4C, 0xC069, 0, 0x5976, 0,
- 0x4C4E, 0x7478, 0x4022, 0xC06A, 0, 0xAD4D, 0, 0,
-};
static const unsigned short utf8_to_euc_E692[] = {
0, 0, 0, 0x3762, 0, 0xC06C, 0, 0xC06D,
0x597D, 0, 0, 0, 0, 0, 0, 0xC06E,
@@ -7178,16 +3909,6 @@ static const unsigned short utf8_to_euc_E692[] = {
0x4071, 0, 0x4B50, 0xC07B, 0, 0, 0, 0,
0, 0x3349, 0, 0x5A25, 0x597E, 0xC07C, 0xC07D, 0xC07E,
};
-static const unsigned short utf8_to_euc_E692_x0213[] = {
- 0, 0, 0, 0x3762, 0, 0xC06C, 0, 0xAD4E,
- 0x597D, 0, 0, 0, 0, 0, 0, 0xC06E,
- 0xC06F, 0xAD4F, 0x3B35, 0x597A, 0, 0x5979, 0, 0,
- 0xC071, 0xC072, 0x4732, 0xC073, 0, 0xAD50, 0x4635, 0xAD51,
- 0, 0xC076, 0, 0xC077, 0x4531, 0x597B, 0xC078, 0,
- 0xC079, 0x597C, 0, 0x496F, 0xC07A, 0x4745, 0x3B23, 0,
- 0x4071, 0, 0x4B50, 0xC07B, 0, 0, 0, 0,
- 0, 0x3349, 0, 0x5A25, 0x597E, 0xC07C, 0x747D, 0x747E,
-};
static const unsigned short utf8_to_euc_E693[] = {
0, 0x4D4A, 0x5A27, 0, 0xC121, 0x5A23, 0, 0x5A24,
0, 0xC122, 0xC123, 0xC124, 0xC125, 0x4160, 0xC126, 0,
@@ -7198,16 +3919,6 @@ static const unsigned short utf8_to_euc_E693[] = {
0xC130, 0x5A28, 0x5A33, 0, 0x5A32, 0xC131, 0x5A31, 0xC132,
0, 0, 0x5A34, 0xC133, 0, 0x5A36, 0x3E71, 0xC134,
};
-static const unsigned short utf8_to_euc_E693_x0213[] = {
- 0, 0x4D4A, 0x5A27, 0, 0x7521, 0x5A23, 0, 0x5A24,
- 0, 0xC122, 0x7522, 0xAD52, 0xAD53, 0x4160, 0x747C, 0,
- 0x7523, 0xC128, 0x5A22, 0, 0x593F, 0xAD54, 0, 0xAD55,
- 0x5A26, 0, 0x5A21, 0, 0, 0, 0, 0,
- 0x5A2B, 0x5A2C, 0x4527, 0x5A2E, 0xAD57, 0xAD58, 0x3B24, 0x5A29,
- 0, 0xC12D, 0xC12E, 0, 0x353C, 0xC12F, 0, 0x5A2F,
- 0xC130, 0x5A28, 0x5A33, 0, 0x5A32, 0xC131, 0x5A31, 0x7524,
- 0, 0, 0x5A34, 0x7525, 0, 0x5A36, 0x3E71, 0xAD59,
-};
static const unsigned short utf8_to_euc_E694[] = {
0x5A35, 0xC135, 0, 0, 0xC136, 0x5A39, 0, 0,
0xC137, 0xC138, 0xC139, 0, 0, 0, 0, 0xC13A,
@@ -7218,16 +3929,6 @@ static const unsigned short utf8_to_euc_E694[] = {
0, 0xC146, 0, 0, 0x5A3D, 0x5A3E, 0x5A40, 0x5A3F,
0x5A41, 0x327E, 0xC147, 0x3936, 0xC148, 0xC149, 0x4A7C, 0x402F,
};
-static const unsigned short utf8_to_euc_E694_x0213[] = {
- 0x5A35, 0xC135, 0, 0, 0xAD5A, 0x5A39, 0, 0,
- 0xC137, 0xC138, 0xC139, 0, 0, 0, 0, 0xAD5C,
- 0, 0, 0, 0xC13B, 0xAD5D, 0, 0xAD5E, 0,
- 0x5A37, 0xC13E, 0, 0xC13F, 0x5A38, 0x5970, 0xAD60, 0xC141,
- 0, 0, 0x7526, 0x5A3B, 0x5A3A, 0, 0xC143, 0,
- 0, 0x7527, 0x5978, 0x5A3C, 0x5A30, 0, 0xC145, 0x3B59,
- 0, 0xC146, 0xAD61, 0, 0x5A3D, 0x5A3E, 0x5A40, 0x5A3F,
- 0x5A41, 0x327E, 0xC147, 0x3936, 0xC148, 0xC149, 0x4A7C, 0x402F,
-};
static const unsigned short utf8_to_euc_E695[] = {
0, 0, 0, 0xC14A, 0, 0x384E, 0, 0xC14B,
0x5A43, 0xC14C, 0, 0, 0, 0x5A46, 0xF441, 0x4952,
@@ -7238,16 +3939,6 @@ static const unsigned short utf8_to_euc_E695[] = {
0x3F74, 0, 0x5A4A, 0, 0x4030, 0x4528, 0, 0x495F,
0x5A4B, 0, 0xC154, 0, 0, 0xC155, 0, 0,
};
-static const unsigned short utf8_to_euc_E695_x0213[] = {
- 0, 0, 0, 0xC14A, 0xAD62, 0x384E, 0, 0xC14B,
- 0x5A43, 0xC14C, 0, 0, 0, 0x5A46, 0xF441, 0x4952,
- 0xC14D, 0x355F, 0xC14E, 0, 0xAD63, 0x5A45, 0x5A44, 0x4754,
- 0x5A47, 0x3635, 0, 0, 0, 0x5A49, 0x5A48, 0xC150,
- 0xC151, 0, 0x343A, 0x3B36, 0, 0, 0x4658, 0x7529,
- 0, 0, 0, 0xAD64, 0x3749, 0, 0, 0,
- 0x3F74, 0, 0x5A4A, 0, 0x4030, 0x4528, 0, 0x495F,
- 0x5A4B, 0, 0xAD65, 0, 0, 0xC155, 0, 0,
-};
static const unsigned short utf8_to_euc_E696[] = {
0, 0xC156, 0x5A4C, 0x5A4D, 0, 0xC157, 0, 0x4A38,
0x555D, 0x4046, 0xC158, 0, 0x494C, 0, 0x3A58, 0,
@@ -7258,16 +3949,6 @@ static const unsigned short utf8_to_euc_E696[] = {
0x3F37, 0, 0xC161, 0xC162, 0xC163, 0, 0, 0x5A52,
0, 0x4A7D, 0, 0, 0x3177, 0x3B5C, 0, 0xC164,
};
-static const unsigned short utf8_to_euc_E696_x0213[] = {
- 0, 0xAD66, 0x5A4C, 0x5A4D, 0xAD67, 0xAD68, 0, 0x4A38,
- 0x555D, 0x4046, 0xAD69, 0, 0x494C, 0, 0x3A58, 0,
- 0x4865, 0x4843, 0xC159, 0, 0, 0xC15A, 0, 0x454D,
- 0xC15B, 0x4E41, 0, 0x5A4F, 0x3C50, 0x752A, 0, 0x5A50,
- 0xC15D, 0x3036, 0, 0xC15E, 0x3654, 0x404D, 0xC15F, 0x4960,
- 0, 0, 0, 0x5A51, 0x3B42, 0x4347, 0xC160, 0x3B5B,
- 0x3F37, 0, 0xAD6A, 0xC162, 0xC163, 0xAD6B, 0, 0x5A52,
- 0xAD6C, 0x4A7D, 0, 0, 0x3177, 0x3B5C, 0, 0xAD6D,
-};
static const unsigned short utf8_to_euc_E697[] = {
0, 0x5A55, 0xC165, 0x5A53, 0x5A56, 0x4E39, 0x5A54, 0,
0xC166, 0xC167, 0, 0x407B, 0x5A57, 0, 0xC168, 0x4232,
@@ -7278,16 +3959,6 @@ static const unsigned short utf8_to_euc_E697[] = {
0xC16E, 0x5A5D, 0xC16F, 0, 0xC170, 0xC171, 0, 0,
0, 0xC172, 0x3222, 0x5A61, 0, 0, 0xC173, 0xC174,
};
-static const unsigned short utf8_to_euc_E697_x0213[] = {
- 0, 0x5A55, 0xAD6E, 0x5A53, 0x5A56, 0x4E39, 0x5A54, 0,
- 0xC166, 0xAD6F, 0, 0x407B, 0x5A57, 0, 0xC168, 0x4232,
- 0xC169, 0, 0x5A58, 0, 0xAD70, 0, 0xC16B, 0x347A,
- 0xC16C, 0x5A5A, 0, 0x5A59, 0, 0, 0, 0xC16D,
- 0x5A5B, 0x5A5C, 0x347B, 0, 0, 0x467C, 0x4336, 0x356C,
- 0x3B5D, 0x4161, 0, 0, 0x3D5C, 0x3030, 0, 0,
- 0xC16E, 0x5A5D, 0xAD72, 0, 0xC170, 0xC171, 0, 0,
- 0, 0xAD73, 0x3222, 0x5A61, 0xAD74, 0, 0xC173, 0xC174,
-};
static const unsigned short utf8_to_euc_E698[] = {
0xC175, 0, 0x3937, 0x5A60, 0xC176, 0, 0x3A2B, 0x3E3A,
0xC177, 0xC178, 0x5A5F, 0, 0x3E3B, 0xC179, 0x4C40, 0x3A2A,
@@ -7298,16 +3969,6 @@ static const unsigned short utf8_to_euc_E698[] = {
0xC22C, 0xC22D, 0, 0xC22E, 0x5A65, 0x5A63, 0x5A64, 0xC230,
0, 0xC22F, 0, 0xF442, 0x436B, 0, 0, 0x5B26,
};
-static const unsigned short utf8_to_euc_E698_x0213[] = {
- 0x752C, 0, 0x3937, 0x5A60, 0xAD75, 0, 0x3A2B, 0x3E3A,
- 0xAD76, 0x752D, 0x5A5F, 0, 0x3E3B, 0xC179, 0x4C40, 0x3A2A,
- 0, 0xC17A, 0xC17B, 0x3057, 0x404E, 0x752E, 0xC17D, 0,
- 0, 0, 0, 0, 0x5A66, 0xC17E, 0x752F, 0x4031,
- 0x3147, 0xAD77, 0x7531, 0xC224, 0x7532, 0x3D55, 0xC226, 0x4B66,
- 0x3A72, 0xC227, 0xAD78, 0x7533, 0xC22A, 0x3E3C, 0xC22B, 0x4027,
- 0x7534, 0x7535, 0, 0x7536, 0x5A65, 0x5A63, 0x5A64, 0xC230,
- 0, 0xC22F, 0x7530, 0xF442, 0x436B, 0, 0, 0x5B26,
-};
static const unsigned short utf8_to_euc_E699[] = {
0xC231, 0x5A6A, 0x3B7E, 0x3938, 0x5A68, 0xC232, 0xC233, 0,
0, 0x5A69, 0xC234, 0x3F38, 0xC235, 0, 0xC237, 0x5A67,
@@ -7318,16 +3979,6 @@ static const unsigned short utf8_to_euc_E699[] = {
0x5A72, 0, 0, 0xC244, 0x4032, 0xC245, 0x3E3D, 0xC247,
0xC248, 0xC249, 0x4352, 0xC24A, 0xC24C, 0, 0xC243, 0xC246,
};
-static const unsigned short utf8_to_euc_E699_x0213[] = {
- 0xC231, 0x5A6A, 0x3B7E, 0x3938, 0x5A68, 0xAD79, 0xC233, 0,
- 0x7538, 0x5A69, 0xC234, 0x3F38, 0x7539, 0, 0xAD7B, 0x5A67,
- 0, 0xAD7A, 0x3B2F, 0, 0, 0, 0, 0xAD7E,
- 0xC239, 0x753B, 0x753C, 0xAE21, 0xC23C, 0x5A6C, 0x5A6B, 0x5A70,
- 0xC23D, 0x753D, 0x5A71, 0xAE22, 0x5A6D, 0x753E, 0x3322, 0x5A6E,
- 0x5A6F, 0x4855, 0xAE25, 0xAE26, 0xAE27, 0xAE28, 0x4961, 0x374A,
- 0x5A72, 0, 0, 0x753F, 0x4032, 0xC245, 0x3E3D, 0x7540,
- 0x7541, 0xC249, 0x4352, 0xAE29, 0xC24C, 0, 0xC243, 0xC246,
-};
static const unsigned short utf8_to_euc_E69A[] = {
0xC24B, 0x3647, 0, 0x5A73, 0x5A77, 0, 0, 0x324B,
0x5A74, 0x5A76, 0, 0xC24D, 0xC24E, 0xC24F, 0x5A75, 0,
@@ -7338,16 +3989,6 @@ static const unsigned short utf8_to_euc_E69A[] = {
0, 0xC25A, 0xC25B, 0, 0x4B3D, 0xC25C, 0, 0,
0x5B22, 0x5A7B, 0, 0xC25D, 0x5A7E, 0, 0x5A7D, 0xC25E,
};
-static const unsigned short utf8_to_euc_E69A_x0213[] = {
- 0xAE2A, 0x3647, 0, 0x5A73, 0x5A77, 0, 0, 0x324B,
- 0x5A74, 0x5A76, 0, 0xC24D, 0xC24E, 0x7542, 0x5A75, 0,
- 0xAE2B, 0x3D6B, 0xAE2C, 0, 0, 0, 0x4348, 0x3045,
- 0x5A78, 0xAE2D, 0xC253, 0xC254, 0xC255, 0x5A79, 0, 0xC256,
- 0x7544, 0, 0x442A, 0, 0xC258, 0, 0x4E71, 0,
- 0, 0, 0, 0x3B43, 0, 0xAE2F, 0x4A6B, 0,
- 0, 0xAE30, 0x7545, 0, 0x4B3D, 0xAE31, 0, 0,
- 0x5B22, 0x5A7B, 0, 0x7546, 0x5A7E, 0, 0x5A7D, 0xAE33,
-};
static const unsigned short utf8_to_euc_E69B[] = {
0xC25F, 0x5A7A, 0xC260, 0xC261, 0x5B21, 0, 0, 0x465E,
0xC262, 0x5A7C, 0, 0, 0xC263, 0, 0xC264, 0xC265,
@@ -7358,16 +3999,6 @@ static const unsigned short utf8_to_euc_E69B[] = {
0x5B29, 0, 0x364A, 0x3148, 0x3939, 0x5B2A, 0, 0x5B2B,
0x3D71, 0x4162, 0xC26D, 0xC23F, 0x5258, 0x413E, 0x413D, 0x4258,
};
-static const unsigned short utf8_to_euc_E69B_x0213[] = {
- 0xC25F, 0x5A7A, 0xC260, 0xC261, 0x5B21, 0, 0x7547, 0x465E,
- 0x7548, 0x5A7C, 0, 0, 0xC263, 0, 0xC264, 0xC265,
- 0, 0, 0, 0, 0xC266, 0, 0x5B23, 0,
- 0, 0x3D6C, 0x5B24, 0x754A, 0x4D4B, 0x4778, 0, 0xC268,
- 0x5B25, 0, 0, 0, 0, 0, 0x5B27, 0,
- 0x754B, 0x5B28, 0, 0xC26A, 0xAE35, 0, 0xC26C, 0,
- 0x5B29, 0, 0x364A, 0x3148, 0x3939, 0x5B2A, 0, 0x5B2B,
- 0x3D71, 0x4162, 0x754C, 0x7537, 0x5258, 0x413E, 0x413D, 0x4258,
-};
static const unsigned short utf8_to_euc_E69C[] = {
0x3A47, 0, 0, 0x5072, 0, 0xC26E, 0, 0xC26F,
0x376E, 0x4D2D, 0, 0x4A7E, 0, 0x497E, 0xC270, 0x5B2C,
@@ -7378,16 +4009,6 @@ static const unsigned short utf8_to_euc_E69C[] = {
0, 0x3C6B, 0, 0xC276, 0x4B51, 0, 0x5B34, 0x5B37,
0x5B36, 0, 0x3479, 0, 0, 0x3560, 0xC277, 0x5B33,
};
-static const unsigned short utf8_to_euc_E69C_x0213[] = {
- 0x3A47, 0xAE37, 0, 0x5072, 0, 0xAE38, 0, 0xC26F,
- 0x376E, 0x4D2D, 0, 0x4A7E, 0, 0x497E, 0xC270, 0x5B2C,
- 0, 0, 0xAE39, 0x754D, 0x3A73, 0x443F, 0x5B2D, 0x4F2F,
- 0, 0xAE3B, 0, 0x4B3E, 0xC273, 0x442B, 0x5B2E, 0x347C,
- 0xC274, 0, 0xC275, 0, 0, 0, 0x5B2F, 0x5B30,
- 0x4C5A, 0, 0x4C24, 0x4B76, 0x4B5C, 0x3B25, 0x5B32, 0,
- 0, 0x3C6B, 0, 0x754F, 0x4B51, 0, 0x5B34, 0x5B37,
- 0x5B36, 0, 0x3479, 0, 0, 0x3560, 0xC277, 0x5B33,
-};
static const unsigned short utf8_to_euc_E69D[] = {
0, 0x5B35, 0, 0, 0, 0xC278, 0x5B38, 0xC279,
0xC27A, 0x3F79, 0, 0, 0xC27B, 0, 0x4D7B, 0x3049,
@@ -7398,16 +4019,6 @@ static const unsigned short utf8_to_euc_E69D[] = {
0x5B3F, 0x456C, 0x5A5E, 0x5A62, 0xC324, 0x354F, 0xC325, 0x4747,
0, 0, 0, 0xC326, 0x5B41, 0, 0x3E3E, 0x4844,
};
-static const unsigned short utf8_to_euc_E69D_x0213[] = {
- 0, 0x5B35, 0, 0, 0, 0xC278, 0x5B38, 0x7551,
- 0x7552, 0x3F79, 0, 0, 0xAE3E, 0xAE3F, 0x4D7B, 0x3049,
- 0x3A60, 0x423C, 0, 0x3C5D, 0xAE40, 0xC27D, 0x3E73, 0,
- 0, 0x5B3B, 0, 0, 0x454E, 0xAE41, 0x5B39, 0x422B,
- 0x5B3A, 0x3E72, 0x4C5D, 0x5B3C, 0x5B3D, 0x4D68, 0x7550, 0,
- 0, 0, 0x5B42, 0, 0xC322, 0x393A, 0xC323, 0x4755,
- 0x5B3F, 0x456C, 0x5A5E, 0x5A62, 0xAE45, 0x354F, 0xAE46, 0x4747,
- 0, 0, 0, 0x7553, 0x5B41, 0, 0x3E3E, 0x4844,
-};
static const unsigned short utf8_to_euc_E69E[] = {
0, 0xC327, 0, 0, 0xC328, 0x5B47, 0, 0x487A,
0, 0x5B3E, 0, 0x5B44, 0x5B43, 0, 0xC329, 0xC32A,
@@ -7418,16 +4029,6 @@ static const unsigned short utf8_to_euc_E69E[] = {
0xC331, 0xC332, 0xC333, 0x5B4C, 0x5B4A, 0xC334, 0x324D, 0x5B48,
0x5B4E, 0x5B54, 0, 0xC335, 0xC336, 0xC337, 0, 0,
};
-static const unsigned short utf8_to_euc_E69E_x0213[] = {
- 0, 0x7554, 0, 0, 0xC328, 0x5B47, 0, 0x487A,
- 0, 0x5B3E, 0, 0x5B44, 0x5B43, 0, 0xC329, 0xC32A,
- 0x404F, 0xC32B, 0xAE48, 0x7555, 0, 0x4B6D, 0xC32D, 0x4E53,
- 0x7556, 0xC32F, 0x4B67, 0x7557, 0x324C, 0x3B5E, 0, 0,
- 0x4F48, 0x5B46, 0x3F75, 0, 0, 0, 0x5B45, 0,
- 0, 0x5B40, 0, 0, 0, 0, 0, 0x384F,
- 0xAE4C, 0xC332, 0xAE4D, 0x5B4C, 0x5B4A, 0xC334, 0x324D, 0x5B48,
- 0x5B4E, 0x5B54, 0, 0x7558, 0xC336, 0xC337, 0, 0,
-};
static const unsigned short utf8_to_euc_E69F[] = {
0xC339, 0x4248, 0xC33A, 0xC33B, 0x4A41, 0xC33C, 0x5B56, 0,
0xC33D, 0xC33E, 0x4922, 0, 0, 0, 0x5B55, 0x4770,
@@ -7438,16 +4039,6 @@ static const unsigned short utf8_to_euc_E69F[] = {
0xC345, 0x436C, 0xC346, 0x4C78, 0x3C46, 0x3A74, 0xC347, 0xC348,
0, 0xC338, 0, 0x3A3A, 0, 0, 0x4B6F, 0x3341,
};
-static const unsigned short utf8_to_euc_E69F_x0213[] = {
- 0x755A, 0x4248, 0xC33A, 0xAE4E, 0x4A41, 0xC33C, 0x5B56, 0,
- 0xAE4F, 0xC33E, 0x4922, 0, 0, 0, 0x5B55, 0x4770,
- 0x4B3F, 0x343B, 0xAE50, 0x4077, 0x3D40, 0, 0, 0x755B,
- 0x4453, 0xAE51, 0x4D2E, 0xAE52, 0xC342, 0x5B51, 0x5B50, 0,
- 0, 0xC343, 0x5B52, 0, 0x5B4F, 0, 0xC344, 0x5B57,
- 0, 0x5B4D, 0, 0, 0x5B4B, 0, 0x5B53, 0x5B49,
- 0xAE53, 0x436C, 0xC346, 0x4C78, 0x3C46, 0x3A74, 0xC347, 0xAE54,
- 0, 0x7559, 0, 0x3A3A, 0x755C, 0, 0x4B6F, 0x3341,
-};
static const unsigned short utf8_to_euc_E6A0[] = {
0, 0xF446, 0x444E, 0x464A, 0x3149, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -7458,16 +4049,6 @@ static const unsigned short utf8_to_euc_E6A0[] = {
0xC353, 0xC354, 0x5B5E, 0xC355, 0x4073, 0, 0, 0,
0x334B, 0x3A2C, 0, 0xC356, 0x334A, 0x3A4F, 0, 0xC357,
};
-static const unsigned short utf8_to_euc_E6A0_x0213[] = {
- 0, 0x755D, 0x444E, 0x464A, 0x3149, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0xAE4B, 0, 0, 0x4072, 0xC34A, 0, 0x4034, 0x372A,
- 0xAE58, 0xC34B, 0, 0, 0, 0x755F, 0x5B59, 0xAE59,
- 0, 0x393B, 0x337C, 0, 0, 0, 0, 0xC34F,
- 0xC34E, 0x5B5B, 0x3374, 0x5B61, 0x7560, 0xAE5A, 0, 0xC352,
- 0xC353, 0x7561, 0x5B5E, 0xAE5C, 0x4073, 0, 0, 0,
- 0x334B, 0x3A2C, 0, 0xAE5D, 0x334A, 0x3A4F, 0xAE5E, 0xC357,
-};
static const unsigned short utf8_to_euc_E6A1[] = {
0x5B5C, 0x3765, 0x374B, 0x456D, 0xC358, 0xC359, 0x5B5A, 0,
0x3046, 0, 0xC35A, 0, 0xC35B, 0x5B5D, 0x5B5F, 0,
@@ -7478,16 +4059,6 @@ static const unsigned short utf8_to_euc_E6A1[] = {
0xC363, 0xC364, 0xC365, 0, 0x5B6F, 0xC366, 0x3233, 0x5B64,
0, 0xC367, 0xC368, 0xC369, 0xC36A, 0, 0x5B75, 0x5B65,
};
-static const unsigned short utf8_to_euc_E6A1_x0213[] = {
- 0x5B5C, 0x3765, 0x374B, 0x456D, 0xAE5F, 0xAE60, 0x5B5A, 0,
- 0x3046, 0xAE61, 0xC35A, 0, 0xAE62, 0x5B5D, 0x5B5F, 0,
- 0x364D, 0x372C, 0x755E, 0x343C, 0x354B, 0xAE63, 0, 0xAE64,
- 0xC35E, 0x5B62, 0, 0x7562, 0x3A79, 0x4B71, 0, 0x3B37,
- 0, 0, 0, 0x5B63, 0, 0, 0, 0x4930,
- 0, 0, 0, 0xAE66, 0, 0, 0xAE67, 0xC362,
- 0xC363, 0xC364, 0x7563, 0, 0x5B6F, 0x7564, 0x3233, 0x5B64,
- 0, 0xC367, 0xAE68, 0xC369, 0xAE69, 0, 0x5B75, 0x5B65,
-};
static const unsigned short utf8_to_euc_E6A2[] = {
0, 0x4E42, 0xC36B, 0x5B6C, 0xC36C, 0x475F, 0xC36D, 0,
0xC36E, 0, 0, 0, 0, 0x5B74, 0, 0x5B67,
@@ -7498,16 +4069,6 @@ static const unsigned short utf8_to_euc_E6A2[] = {
0x3323, 0x3A2D, 0xC379, 0x5B60, 0, 0x5B70, 0x3361, 0,
0, 0x5B6E, 0x5B72, 0xC37A, 0x456E, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E6A2_x0213[] = {
- 0, 0x4E42, 0xAE6A, 0x5B6C, 0xC36C, 0x475F, 0xC36D, 0,
- 0xC36E, 0, 0, 0, 0, 0x5B74, 0, 0x5B67,
- 0xAE6B, 0, 0, 0x3034, 0x5B69, 0, 0xAE6C, 0x393C,
- 0xAE6E, 0xAE6F, 0xAE70, 0x5B6B, 0xAE71, 0x5B6A, 0, 0x5B66,
- 0x5B71, 0xC373, 0x3E3F, 0x7566, 0, 0x7567, 0x546D, 0x3868,
- 0x4D7C, 0xC376, 0xAE72, 0xAE73, 0, 0x5B68, 0xC378, 0x4474,
- 0x3323, 0x3A2D, 0x7568, 0x5B60, 0xAE74, 0x5B70, 0x3361, 0,
- 0, 0x5B6E, 0x5B72, 0xAE75, 0x456E, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E6A3[] = {
0, 0, 0, 0, 0x347E, 0xC37B, 0x5C32, 0,
0xC37C, 0x4C49, 0x5B77, 0x347D, 0xC37D, 0x5B7E, 0, 0xC37E,
@@ -7518,16 +4079,6 @@ static const unsigned short utf8_to_euc_E6A3[] = {
0xC42E, 0xC42F, 0x4033, 0, 0, 0xC430, 0xC431, 0,
0, 0x5C2A, 0x343D, 0xC432, 0xC433, 0xC434, 0, 0,
};
-static const unsigned short utf8_to_euc_E6A3_x0213[] = {
- 0, 0, 0, 0xAE7A, 0x347E, 0xAE7B, 0x5C32, 0,
- 0x7569, 0x4C49, 0x5B77, 0x347D, 0xAE7C, 0x5B7E, 0, 0xAE7D,
- 0x756A, 0xC422, 0x4B40, 0xC423, 0x5C21, 0x5C23, 0xAE7E, 0x5C27,
- 0x5B79, 0xAF21, 0x432A, 0, 0xC426, 0xC427, 0, 0x456F,
- 0x5C2B, 0x5B7C, 0, 0x5C28, 0xAF22, 0xAF23, 0, 0x5C22,
- 0x756B, 0, 0xC42A, 0xC42B, 0xAF24, 0x756C, 0x3F39, 0x5C2C,
- 0x756D, 0x756E, 0x4033, 0, 0, 0xC430, 0xC431, 0xAF25,
- 0, 0x5C2A, 0x343D, 0xAE76, 0x756F, 0xC434, 0, 0,
-};
static const unsigned short utf8_to_euc_E6A4[] = {
0x4F50, 0x5B76, 0, 0, 0x5C26, 0x3058, 0xC435, 0,
0x5B78, 0xC436, 0xC437, 0x4C3A, 0x5B7D, 0x3F22, 0x4447, 0x5B73,
@@ -7538,16 +4089,6 @@ static const unsigned short utf8_to_euc_E6A4[] = {
0x5C3F, 0xC43D, 0, 0xC43E, 0x464E, 0xC43F, 0x5C24, 0,
0xC440, 0x5C3B, 0, 0xC441, 0, 0x5C3D, 0, 0x4458,
};
-static const unsigned short utf8_to_euc_E6A4_x0213[] = {
- 0x4F50, 0x5B76, 0, 0xAF26, 0x5C26, 0x3058, 0xC435, 0xAF27,
- 0x5B78, 0xC436, 0x7570, 0x4C3A, 0x5B7D, 0x3F22, 0x4447, 0x5B73,
- 0xC438, 0xC439, 0x5C25, 0xC43A, 0, 0, 0xC43B, 0xC43C,
- 0, 0x3F7A, 0x5C2F, 0x3371, 0x3821, 0, 0, 0,
- 0, 0x5C31, 0x5B7A, 0x5C30, 0, 0x5C29, 0x5B7B, 0,
- 0x5C2D, 0, 0x5C2E, 0, 0, 0, 0, 0,
- 0x5C3F, 0xC43D, 0, 0xC43E, 0x464E, 0x7573, 0x5C24, 0,
- 0xC440, 0x5C3B, 0, 0xAF2B, 0, 0x5C3D, 0, 0x4458,
-};
static const unsigned short utf8_to_euc_E6A5[] = {
0, 0, 0xC442, 0, 0, 0xC443, 0, 0,
0, 0xC444, 0x4D4C, 0, 0, 0, 0xC445, 0,
@@ -7558,16 +4099,6 @@ static const unsigned short utf8_to_euc_E6A5[] = {
0xC44F, 0xC450, 0xC451, 0x4760, 0x5C3C, 0x364B, 0, 0x5C34,
0x5C36, 0x5C33, 0xC452, 0xC453, 0x4F30, 0x335A, 0x5C39, 0xC454,
};
-static const unsigned short utf8_to_euc_E6A5_x0213[] = {
- 0, 0, 0x7574, 0, 0, 0xC443, 0xAF2D, 0,
- 0, 0x7571, 0x4D4C, 0, 0, 0, 0xC445, 0,
- 0, 0, 0, 0x4976, 0x5C38, 0x424A, 0, 0x7575,
- 0, 0x5C3E, 0x413F, 0xC447, 0x5C35, 0x5C42, 0x5C41, 0,
- 0x466F, 0x5C40, 0x466A, 0x7576, 0x7577, 0xC44A, 0xC44B, 0,
- 0x7578, 0xAF2E, 0x5C44, 0x5C37, 0xAF2F, 0x3648, 0x5C3A, 0x3D5D,
- 0xC44F, 0xC450, 0xAF30, 0x4760, 0x5C3C, 0x364B, 0, 0x5C34,
- 0x5C36, 0x5C33, 0xAF31, 0xC453, 0x4F30, 0x335A, 0x5C39, 0xAF32,
-};
static const unsigned short utf8_to_euc_E6A6[] = {
0xC455, 0x5C43, 0x3335, 0, 0, 0, 0, 0,
0, 0, 0x3A67, 0, 0, 0xC456, 0x315D, 0,
@@ -7578,16 +4109,6 @@ static const unsigned short utf8_to_euc_E6A6[] = {
0, 0x5C63, 0x5C45, 0, 0x5C58, 0, 0, 0xC461,
0xC462, 0, 0xC463, 0x5C50, 0xC464, 0, 0x5C4B, 0x5C48,
};
-static const unsigned short utf8_to_euc_E6A6_x0213[] = {
- 0x7579, 0x5C43, 0x3335, 0, 0, 0, 0, 0,
- 0, 0, 0x3A67, 0, 0, 0xC456, 0x315D, 0,
- 0, 0x5C54, 0xAF33, 0, 0x4F31, 0x5C57, 0xAF35, 0,
- 0xAF36, 0, 0, 0x3F3A, 0x5C56, 0, 0, 0,
- 0x5C55, 0xC45A, 0, 0, 0, 0x757B, 0xAF37, 0x5C52,
- 0xC45D, 0, 0, 0xC45E, 0, 0x757C, 0x5C46, 0xC460,
- 0xAF38, 0x5C63, 0x5C45, 0, 0x5C58, 0, 0, 0xAF39,
- 0xC462, 0, 0xAF3A, 0x5C50, 0xAF3B, 0, 0x5C4B, 0x5C48,
-};
static const unsigned short utf8_to_euc_E6A7[] = {
0, 0x5C49, 0, 0x5C51, 0, 0xC465, 0, 0x7422,
0xC466, 0, 0x5C4E, 0x393D, 0x4448, 0x4164, 0x5C4C, 0,
@@ -7598,16 +4119,6 @@ static const unsigned short utf8_to_euc_E6A7[] = {
0, 0xC46E, 0x5C60, 0xC46F, 0, 0xC470, 0, 0,
0, 0x5C5F, 0, 0x4450, 0, 0x4165, 0xC471, 0x5C5D,
};
-static const unsigned short utf8_to_euc_E6A7_x0213[] = {
- 0xAF3C, 0x5C49, 0, 0x5C51, 0, 0xC465, 0, 0x7422,
- 0xC466, 0, 0x5C4E, 0x393D, 0x4448, 0x4164, 0x5C4C, 0x757D,
- 0x5C47, 0xAF3D, 0, 0x5C4A, 0, 0, 0xAF3E, 0xC469,
- 0x4D4D, 0x4B6A, 0, 0, 0, 0x5C4F, 0x5C59, 0,
- 0, 0, 0x7622, 0xAF44, 0, 0xC46B, 0, 0x5C61,
- 0x5C5A, 0x7623, 0x7624, 0x5C67, 0, 0x5C65, 0xAF45, 0xAF46,
- 0, 0xC46E, 0x5C60, 0xAF47, 0xAF49, 0x7625, 0x7626, 0,
- 0, 0x5C5F, 0, 0x4450, 0, 0x4165, 0xAF4A, 0x5C5D,
-};
static const unsigned short utf8_to_euc_E6A8[] = {
0xC472, 0xC473, 0x5C5B, 0xC474, 0, 0x5C62, 0, 0,
0, 0, 0x5C68, 0x4875, 0x5C6E, 0, 0, 0xC475,
@@ -7618,16 +4129,6 @@ static const unsigned short utf8_to_euc_E6A8[] = {
0xC47D, 0, 0xC47E, 0, 0xC521, 0x3E41, 0x5C70, 0xC522,
0x5C77, 0x3C79, 0x3372, 0xC523, 0, 0x432E, 0xC524, 0xC525,
};
-static const unsigned short utf8_to_euc_E6A8_x0213[] = {
- 0xC472, 0xC473, 0x5C5B, 0xC474, 0, 0x5C62, 0, 0,
- 0, 0, 0x5C68, 0x4875, 0x5C6E, 0, 0, 0x7627,
- 0, 0xAF4B, 0x5C69, 0x5C6C, 0x5C66, 0x7628, 0, 0x4374,
- 0, 0x4938, 0xAF4C, 0x5C5C, 0, 0xAF4D, 0x5C64, 0x3E40,
- 0xC47A, 0x4C4F, 0x5C78, 0x5C6B, 0xC47B, 0, 0, 0,
- 0xC47C, 0x3822, 0x3223, 0x335F, 0, 0, 0x5C53, 0,
- 0xAF41, 0, 0xAF4F, 0xAF50, 0xAF51, 0x3E41, 0x5C70, 0xC522,
- 0x5C77, 0x3C79, 0x3372, 0x762A, 0, 0x432E, 0x762B, 0xAF52,
-};
static const unsigned short utf8_to_euc_E6A9[] = {
0, 0, 0, 0, 0x5C6D, 0xC526, 0xC527, 0x5C72,
0x5C76, 0xC528, 0xC529, 0x3636, 0, 0, 0xC52A, 0,
@@ -7638,16 +4139,6 @@ static const unsigned short utf8_to_euc_E6A9[] = {
0, 0xC534, 0x5C6F, 0xC535, 0, 0, 0, 0,
0x5C71, 0, 0, 0, 0, 0, 0xC536, 0x3360,
};
-static const unsigned short utf8_to_euc_E6A9_x0213[] = {
- 0, 0, 0, 0, 0x5C6D, 0x762C, 0xAF53, 0x5C72,
- 0x5C76, 0xAF54, 0xC529, 0x3636, 0, 0, 0xAF56, 0,
- 0x762D, 0xC52C, 0xAF57, 0, 0, 0xC52E, 0x762E, 0,
- 0x354C, 0x5C74, 0, 0x762F, 0, 0, 0, 0x3521,
- 0, 0x464B, 0x5C73, 0, 0xAF58, 0, 0x5C75, 0xC532,
- 0, 0, 0xC533, 0x7630, 0, 0, 0, 0,
- 0, 0xC534, 0x5C6F, 0x7631, 0, 0, 0, 0,
- 0x5C71, 0, 0xAF55, 0, 0, 0, 0xAF5A, 0x3360,
-};
static const unsigned short utf8_to_euc_E6AA[] = {
0x4349, 0xC537, 0, 0xC538, 0x5C7C, 0, 0xC539, 0xC53A,
0, 0xC53B, 0, 0xC53C, 0, 0x5C7A, 0x3869, 0,
@@ -7658,16 +4149,6 @@ static const unsigned short utf8_to_euc_E6AA[] = {
0xC545, 0xC546, 0, 0x5D27, 0xC547, 0, 0, 0,
0x5D26, 0, 0, 0x5D23, 0, 0xC548, 0xC549, 0xC54A,
};
-static const unsigned short utf8_to_euc_E6AA_x0213[] = {
- 0x4349, 0xC537, 0, 0xAF5B, 0x5C7C, 0, 0xC539, 0xC53A,
- 0, 0x7633, 0, 0xAF5C, 0, 0x5C7A, 0x3869, 0,
- 0x5C79, 0xAF5E, 0, 0, 0x7634, 0, 0, 0x5D21,
- 0, 0, 0, 0xC53E, 0x5B58, 0x7635, 0x7636, 0xAF5F,
- 0x5C7B, 0xAF60, 0x5C7D, 0x5C7E, 0, 0x7637, 0, 0,
- 0, 0, 0x5D2C, 0xAF62, 0x5D28, 0, 0x5B6D, 0xC544,
- 0xC545, 0xC546, 0, 0x5D27, 0xC547, 0, 0, 0,
- 0x5D26, 0, 0, 0x5D23, 0, 0xAF63, 0xC549, 0xC54A,
-};
static const unsigned short utf8_to_euc_E6AB[] = {
0, 0x5C6A, 0x5D25, 0x5D24, 0, 0, 0xC54B, 0,
0xC54D, 0xC54C, 0, 0, 0xC54E, 0, 0, 0,
@@ -7678,16 +4159,6 @@ static const unsigned short utf8_to_euc_E6AB[] = {
0xC558, 0xC559, 0xC55A, 0, 0, 0, 0, 0,
0, 0, 0x5D32, 0x5D2F, 0xC55B, 0xC55C, 0, 0,
};
-static const unsigned short utf8_to_euc_E6AB_x0213[] = {
- 0, 0x5C6A, 0x5D25, 0x5D24, 0, 0, 0xAF64, 0,
- 0xC54D, 0xC54C, 0, 0, 0xC54E, 0, 0, 0,
- 0xAF66, 0x5D2A, 0, 0x4F26, 0xAF65, 0xC551, 0xC552, 0,
- 0, 0, 0x5D2D, 0x367B, 0xAF67, 0xAF68, 0x5D29, 0x5D2B,
- 0, 0, 0xF44A, 0, 0x7638, 0, 0, 0x7639,
- 0x4827, 0, 0x5D2E, 0, 0xAF6B, 0, 0, 0,
- 0xC558, 0xAF6C, 0xAF6D, 0xAF6E, 0, 0, 0, 0,
- 0, 0, 0x5D32, 0x5D2F, 0xC55B, 0xAF6F, 0, 0,
-};
static const unsigned short utf8_to_euc_E6AC[] = {
0, 0, 0xC55D, 0xC55E, 0x4D73, 0x5D30, 0xC55F, 0xC560,
0, 0xC561, 0x5C5E, 0, 0, 0, 0, 0xC562,
@@ -7698,16 +4169,6 @@ static const unsigned short utf8_to_euc_E6AC[] = {
0, 0, 0x4D5F, 0, 0, 0xC56D, 0xC56E, 0x5D38,
0x5D37, 0x5D3A, 0x353D, 0xC56F, 0, 0x3656, 0x343E, 0xC570,
};
-static const unsigned short utf8_to_euc_E6AC_x0213[] = {
- 0, 0, 0xC55D, 0xC55E, 0x4D73, 0x5D30, 0xC55F, 0xC560,
- 0, 0xC561, 0x5C5E, 0xAF71, 0, 0, 0, 0xAF72,
- 0xAF73, 0xAF74, 0x5D33, 0, 0, 0, 0x5D34, 0xAF76,
- 0, 0, 0, 0x763C, 0, 0x3135, 0x763D, 0x5D36,
- 0x3767, 0x3C21, 0, 0x3655, 0xC568, 0, 0, 0x3224,
- 0xC569, 0, 0, 0xC56A, 0x763E, 0, 0, 0xAF78,
- 0, 0, 0x4D5F, 0, 0, 0x763F, 0xC56E, 0x5D38,
- 0x5D37, 0x5D3A, 0x353D, 0xC56F, 0, 0x3656, 0x343E, 0xC570,
-};
static const unsigned short utf8_to_euc_E6AD[] = {
0, 0, 0, 0x5D3D, 0, 0, 0xC571, 0x5D3C,
0, 0x5D3E, 0xC572, 0, 0x324E, 0xC573, 0x4337, 0,
@@ -7718,16 +4179,6 @@ static const unsigned short utf8_to_euc_E6AD[] = {
0xC57C, 0, 0, 0x3A50, 0x4E72, 0xC57D, 0, 0,
0x5D45, 0x5D46, 0, 0x3B60, 0, 0xC57E, 0xC621, 0x5D47,
};
-static const unsigned short utf8_to_euc_E6AD_x0213[] = {
- 0, 0, 0, 0x5D3D, 0, 0, 0x7640, 0x5D3C,
- 0, 0x5D3E, 0xAF79, 0, 0x324E, 0xC573, 0x4337, 0,
- 0x5D3F, 0, 0xC574, 0x343F, 0x5D41, 0, 0x7641, 0,
- 0xAF7A, 0x5D40, 0, 0x5D42, 0, 0xC577, 0, 0x5D43,
- 0x7642, 0x5D44, 0x3B5F, 0x4035, 0x3A21, 0x7643, 0x4970, 0x7644,
- 0, 0x4A62, 0x4F44, 0xC57A, 0xAF7B, 0, 0xC57B, 0x3B75,
- 0xC57C, 0, 0, 0x3A50, 0x4E72, 0xAF7C, 0, 0x7645,
- 0x5D45, 0x5D46, 0xAF7D, 0x3B60, 0, 0xC57E, 0xC621, 0x5D47,
-};
static const unsigned short utf8_to_euc_E6AE[] = {
0x5D48, 0, 0xC622, 0x5D4A, 0x5D49, 0xC623, 0x4B58, 0,
0, 0x3D5E, 0x3C6C, 0x3B44, 0, 0x5D4B, 0, 0,
@@ -7738,16 +4189,6 @@ static const unsigned short utf8_to_euc_E6AE[] = {
0xC62F, 0x5D54, 0x5D53, 0x5D55, 0x3225, 0x434A, 0, 0x5D56,
0xC630, 0xC631, 0x3B26, 0x334C, 0x5D57, 0xC632, 0xC633, 0x4542,
};
-static const unsigned short utf8_to_euc_E6AE_x0213[] = {
- 0x5D48, 0xAF7E, 0x7646, 0x5D4A, 0x5D49, 0xC623, 0x4B58, 0,
- 0, 0x3D5E, 0x3C6C, 0x3B44, 0, 0x5D4B, 0, 0,
- 0, 0, 0, 0, 0, 0x5D4D, 0x3F23, 0xC624,
- 0x5D4C, 0, 0, 0xEE21, 0, 0, 0x5D4E, 0xC626,
- 0xC627, 0, 0xC628, 0xC629, 0x5D4F, 0, 0, 0,
- 0xC62A, 0x7647, 0x5D50, 0x5D51, 0xC62C, 0x7648, 0xEE22, 0x5D52,
- 0xC62F, 0x5D54, 0x5D53, 0x5D55, 0x3225, 0x434A, 0, 0x5D56,
- 0xC630, 0xC631, 0x3B26, 0x334C, 0x5D57, 0xEE24, 0xEE25, 0x4542,
-};
static const unsigned short utf8_to_euc_E6AF[] = {
0x544C, 0, 0, 0xC634, 0xC635, 0x3523, 0x5D58, 0,
0, 0xC636, 0, 0x5D59, 0xC637, 0x4A6C, 0x4B68, 0,
@@ -7758,16 +4199,6 @@ static const unsigned short utf8_to_euc_E6AF[] = {
0, 0xC63F, 0, 0x5D5E, 0, 0, 0, 0xC640,
0, 0xC641, 0, 0, 0, 0, 0, 0xC642,
};
-static const unsigned short utf8_to_euc_E6AF_x0213[] = {
- 0x544C, 0, 0, 0xC634, 0xC635, 0x3523, 0x5D58, 0xEE26,
- 0xEE27, 0xEE28, 0, 0x5D59, 0xC637, 0x4A6C, 0x4B68, 0x764A,
- 0, 0, 0x4647, 0x5D5A, 0x4866, 0, 0x764B, 0x764C,
- 0x487B, 0, 0xEE29, 0x4C53, 0, 0, 0, 0x5D5B,
- 0, 0xC63A, 0, 0xC63B, 0, 0, 0xEE2A, 0xEE2B,
- 0, 0, 0, 0x5D5D, 0x5D5C, 0, 0xEE2C, 0x5D5F,
- 0, 0xEE2D, 0, 0x5D5E, 0, 0, 0, 0xC640,
- 0, 0xC641, 0, 0, 0, 0, 0, 0x764D,
-};
static const unsigned short utf8_to_euc_E6B0[] = {
0, 0, 0xC643, 0, 0xC644, 0xC645, 0, 0,
0x5D61, 0xC646, 0, 0, 0, 0xC647, 0xC648, 0x3B61,
@@ -7778,16 +4209,6 @@ static const unsigned short utf8_to_euc_E6B0[] = {
0, 0, 0, 0xC652, 0x3F65, 0xC653, 0xC654, 0x4939,
0x314A, 0, 0xC655, 0xC656, 0, 0, 0x4845, 0xC657,
};
-static const unsigned short utf8_to_euc_E6B0_x0213[] = {
- 0, 0, 0xEE2E, 0, 0xC644, 0x764E, 0, 0,
- 0x5D61, 0xC646, 0xEE2F, 0, 0, 0xC647, 0xEE30, 0x3B61,
- 0x764F, 0x4C31, 0xC64A, 0x5D62, 0x5D63, 0, 0, 0x3524,
- 0, 0xC64B, 0, 0x5D64, 0, 0, 0, 0xC64C,
- 0, 0, 0, 0x5D66, 0x5D65, 0, 0xC64D, 0xC64E,
- 0xC64F, 0, 0, 0, 0xC650, 0, 0xC651, 0,
- 0, 0, 0, 0x7650, 0x3F65, 0xEE31, 0xEE32, 0x4939,
- 0x314A, 0, 0xEE33, 0xC656, 0, 0, 0x4845, 0xEE35,
-};
static const unsigned short utf8_to_euc_E6B1[] = {
0x4475, 0x3D41, 0x3561, 0, 0, 0, 0, 0,
0, 0, 0xC658, 0xC659, 0, 0xC65A, 0x4846, 0xC65B,
@@ -7798,16 +4219,6 @@ static const unsigned short utf8_to_euc_E6B1[] = {
0x4241, 0, 0x3562, 0x5D72, 0xC664, 0, 0xC665, 0,
0xC666, 0xC667, 0x3768, 0xC668, 0, 0x3525, 0x5D70, 0,
};
-static const unsigned short utf8_to_euc_E6B1_x0213[] = {
- 0x4475, 0x3D41, 0x3561, 0, 0, 0, 0, 0,
- 0, 0, 0xC658, 0xC659, 0, 0xEE36, 0x4846, 0xC65B,
- 0x3C2E, 0, 0xC65C, 0, 0xC65D, 0x5D68, 0, 0x3440,
- 0, 0x7651, 0x3178, 0xEE37, 0x7652, 0x4672, 0x5D67, 0x393E,
- 0x4353, 0, 0x5D69, 0, 0, 0, 0, 0xEE4F,
- 0x5D71, 0, 0x5D6A, 0xC661, 0, 0xEE38, 0, 0xC663,
- 0x4241, 0, 0x3562, 0x5D72, 0x7654, 0, 0x7655, 0,
- 0xC666, 0xC667, 0x3768, 0xC668, 0, 0x3525, 0x5D70, 0,
-};
static const unsigned short utf8_to_euc_E6B2[] = {
0, 0x5D6E, 0x5D6B, 0x4D60, 0, 0xC669, 0xC66A, 0xC66B,
0x4440, 0xC66C, 0, 0, 0x4659, 0x5D6C, 0, 0,
@@ -7818,16 +4229,6 @@ static const unsigned short utf8_to_euc_E6B2[] = {
0xC673, 0x5D7D, 0xC674, 0x324F, 0xC675, 0, 0, 0,
0x4A28, 0x4C7D, 0x5E21, 0x3C23, 0x3E42, 0x5D78, 0x5D7E, 0x3168,
};
-static const unsigned short utf8_to_euc_E6B2_x0213[] = {
- 0, 0x5D6E, 0x5D6B, 0x4D60, 0xEE39, 0x7656, 0x7657, 0xC66B,
- 0x4440, 0xEE3A, 0, 0, 0x4659, 0x5D6C, 0, 0,
- 0x5D74, 0, 0x5D73, 0x3723, 0xEE3C, 0xEE3D, 0x322D, 0xEE3E,
- 0x7658, 0x3A3B, 0x5D6D, 0x5D6F, 0x7659, 0, 0, 0xC672,
- 0, 0x4B57, 0x4274, 0, 0, 0, 0, 0,
- 0, 0, 0x7653, 0x4B77, 0, 0xEE3F, 0x5D7C, 0,
- 0xC673, 0x5D7D, 0xC674, 0x324F, 0xC675, 0, 0, 0,
- 0x4A28, 0x4C7D, 0x5E21, 0x3C23, 0x3E42, 0x5D78, 0x5D7E, 0x3168,
-};
static const unsigned short utf8_to_euc_E6B3[] = {
0, 0x3637, 0xC676, 0, 0x5D75, 0x5D7A, 0xC677, 0,
0, 0x4074, 0x4771, 0, 0x4867, 0xC678, 0, 0xC679,
@@ -7838,16 +4239,6 @@ static const unsigned short utf8_to_euc_E6B3[] = {
0x4259, 0x5D76, 0xC729, 0x314B, 0xC72A, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E6B3_x0213[] = {
- 0, 0x3637, 0xEE40, 0, 0x5D75, 0x5D7A, 0x765B, 0,
- 0, 0x4074, 0x4771, 0, 0x4867, 0xC678, 0, 0xC679,
- 0xEE41, 0xC67B, 0xC67C, 0x5D77, 0x765C, 0x4B21, 0xEE43, 0x5D79,
- 0, 0x5E24, 0xEE44, 0x5E22, 0xEE45, 0x5D7B, 0, 0,
- 0x765D, 0x4B22, 0x4748, 0x3563, 0, 0x4525, 0, 0xC724,
- 0x436D, 0xEE46, 0x5E25, 0x765E, 0xEE47, 0xEE48, 0x765F, 0x5E23,
- 0x4259, 0x5D76, 0xC729, 0x314B, 0xC72A, 0, 0, 0,
- 0, 0, 0, 0x765A, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E6B4[] = {
0, 0, 0, 0, 0xC72B, 0, 0, 0xC72C,
0, 0, 0xC72D, 0x4D4E, 0x5E30, 0, 0xC72E, 0xC72F,
@@ -7858,16 +4249,6 @@ static const unsigned short utf8_to_euc_E6B4[] = {
0, 0xC739, 0x3D27, 0x5E2E, 0, 0x5E2D, 0x5E28, 0,
0x5E2B, 0xC73A, 0, 0x3368, 0xC73B, 0x5E2A, 0x4749, 0xC73C,
};
-static const unsigned short utf8_to_euc_E6B4_x0213[] = {
- 0xEE4A, 0, 0, 0, 0x7661, 0, 0, 0xC72C,
- 0, 0, 0xEE4B, 0x4D4E, 0x5E30, 0, 0x7662, 0xC72F,
- 0, 0xC730, 0x5E2F, 0xC731, 0, 0, 0, 0x4076,
- 0, 0x5E2C, 0xC732, 0x4D6C, 0, 0, 0x4636, 0x5E26,
- 0, 0, 0, 0, 0xEE4C, 0x4445, 0xEE4D, 0xEE4E,
- 0xC735, 0x314C, 0x393F, 0x5E29, 0, 0, 0x7663, 0xEE50,
- 0, 0x7664, 0x3D27, 0x5E2E, 0xEE65, 0x5E2D, 0x5E28, 0,
- 0x5E2B, 0x7665, 0, 0x3368, 0xEE51, 0x5E2A, 0x4749, 0x7666,
-};
static const unsigned short utf8_to_euc_E6B5[] = {
0, 0x4E2E, 0, 0, 0x3E74, 0x4075, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -7878,16 +4259,6 @@ static const unsigned short utf8_to_euc_E6B5[] = {
0xC744, 0, 0, 0, 0x4D61, 0, 0, 0x3324,
0x3F3B, 0x5E35, 0, 0, 0xC745, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E6B5_x0213[] = {
- 0, 0x4E2E, 0, 0, 0x3E74, 0x4075, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xC73D,
- 0x7667, 0x5E36, 0x5E34, 0xEE52, 0x494D, 0, 0xEE53, 0xC73F,
- 0xEE54, 0xC740, 0, 0x5E31, 0x5E33, 0x7668, 0x313A, 0xC742,
- 0, 0x3940, 0x4F32, 0, 0x333D, 0, 0x4962, 0xC743,
- 0xEE55, 0, 0, 0, 0x4D61, 0, 0, 0x3324,
- 0x3F3B, 0x5E35, 0, 0, 0xC745, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E6B6[] = {
0, 0, 0xC746, 0, 0, 0x5E3A, 0, 0xC747,
0x3E43, 0, 0, 0, 0x4D30, 0, 0x5E37, 0,
@@ -7898,16 +4269,6 @@ static const unsigned short utf8_to_euc_E6B6[] = {
0, 0, 0x3155, 0, 0xC750, 0x5E3E, 0, 0xC751,
0x5E41, 0xC752, 0, 0, 0x4E43, 0xC753, 0, 0xC754,
};
-static const unsigned short utf8_to_euc_E6B6_x0213[] = {
- 0xEE56, 0xEE57, 0x766A, 0, 0, 0x5E3A, 0, 0x766B,
- 0x3E43, 0x766C, 0xEE58, 0, 0x4D30, 0xEE59, 0x5E37, 0,
- 0, 0xEE5A, 0xC749, 0x5E32, 0x766D, 0x5E38, 0xC74B, 0xC74C,
- 0xEE5B, 0x4E5E, 0, 0x4573, 0x4642, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0x766E, 0xEE61, 0x766F, 0, 0xEE62, 0x3336,
- 0, 0, 0x3155, 0, 0xEE63, 0x5E3E, 0, 0xC751,
- 0x5E41, 0xC752, 0, 0, 0x4E43, 0xC753, 0, 0x7670,
-};
static const unsigned short utf8_to_euc_E6B7[] = {
0x4D64, 0, 0, 0, 0xC755, 0x5E48, 0x5E42, 0x5E3F,
0xC756, 0, 0xC757, 0x4E54, 0x5E45, 0, 0xC758, 0xC759,
@@ -7918,16 +4279,6 @@ static const unsigned short utf8_to_euc_E6B7[] = {
0xC763, 0x3F3C, 0xF44C, 0x3D5F, 0xC764, 0x4A25, 0xC765, 0x3A2E,
0xF44B, 0x5E3B, 0x5E49, 0x453A, 0xC766, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E6B7_x0213[] = {
- 0x4D64, 0, 0xEE64, 0, 0x7671, 0x5E48, 0x5E42, 0x5E3F,
- 0xEE66, 0, 0xC757, 0x4E54, 0x5E45, 0, 0xEE67, 0xEE68,
- 0xEE69, 0x3D4A, 0x5E47, 0, 0, 0x5E4C, 0x7672, 0,
- 0x4571, 0x5E4A, 0x7673, 0x7674, 0, 0x7675, 0x5E44, 0xEE6A,
- 0xC75E, 0x4338, 0xC75F, 0, 0x5E4B, 0xC760, 0x5E40, 0,
- 0x5E46, 0xEE6B, 0x5E4D, 0x307C, 0x5E43, 0, 0x5E4E, 0xC762,
- 0xC763, 0x3F3C, 0xF44C, 0x3D5F, 0xC764, 0x4A25, 0xEE6C, 0x3A2E,
- 0xF44B, 0x5E3B, 0x5E49, 0x453A, 0x7676, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E6B8[] = {
0xC767, 0, 0, 0, 0xC768, 0x4036, 0, 0x3369,
0x3A51, 0x3E44, 0x5E3D, 0x3D42, 0, 0, 0, 0,
@@ -7938,16 +4289,6 @@ static const unsigned short utf8_to_euc_E6B8[] = {
0, 0, 0xC76C, 0, 0, 0, 0xC76D, 0,
0x5E62, 0xC76E, 0x5E5D, 0xC76F, 0xC770, 0, 0x5E55, 0,
};
-static const unsigned short utf8_to_euc_E6B8_x0213[] = {
- 0xC767, 0, 0, 0, 0xC768, 0x4036, 0, 0x3369,
- 0x3A51, 0x3E44, 0x5E3D, 0x3D42, 0, 0, 0, 0,
- 0, 0, 0, 0x374C, 0, 0x5E3C, 0, 0xEE5D,
- 0, 0x5E52, 0x3D6D, 0x383A, 0, 0x5E61, 0xEE6E, 0x5E5B,
- 0x3574, 0x454F, 0xEE6F, 0x5E56, 0x5E5F, 0x302F, 0x3132, 0xEE70,
- 0, 0x3239, 0, 0x5E58, 0x422C, 0x5E4F, 0x5E51, 0x3941,
- 0, 0, 0xEE72, 0, 0x7678, 0, 0xEE6D, 0,
- 0x5E62, 0xC76E, 0x5E5D, 0xC76F, 0xEE73, 0, 0x5E55, 0,
-};
static const unsigned short utf8_to_euc_E6B9[] = {
0, 0, 0, 0x5E5C, 0xC771, 0xC772, 0, 0,
0xC773, 0xC774, 0x4C2B, 0xC775, 0, 0x5E5A, 0x5E5E, 0xC776,
@@ -7958,16 +4299,6 @@ static const unsigned short utf8_to_euc_E6B9[] = {
0, 0, 0x5E53, 0xC824, 0, 0, 0x5E59, 0,
0, 0, 0, 0xC825, 0, 0xC826, 0x4F51, 0x3C3E,
};
-static const unsigned short utf8_to_euc_E6B9_x0213[] = {
- 0, 0, 0, 0x5E5C, 0x7679, 0xC772, 0, 0,
- 0xEE74, 0xEE75, 0x4C2B, 0xEE76, 0xEE77, 0x5E5A, 0x5E5E, 0xEE78,
- 0, 0xEE79, 0xC778, 0xEE7A, 0xEE7B, 0, 0x3850, 0xEE7C,
- 0x3E45, 0, 0, 0x4339, 0x767A, 0xC77D, 0x767B, 0x5E54,
- 0, 0, 0xC821, 0xEE7D, 0, 0, 0, 0x4D2F,
- 0xC823, 0, 0, 0x5E57, 0, 0, 0x5E50, 0x4572,
- 0, 0, 0x5E53, 0xC824, 0, 0, 0x5E59, 0,
- 0, 0, 0, 0xC825, 0, 0xC826, 0x4F51, 0x3C3E,
-};
static const unsigned short utf8_to_euc_E6BA[] = {
0x4B7E, 0, 0x5E63, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0x482E, 0xC827, 0, 0x5E6F,
@@ -7978,16 +4309,6 @@ static const unsigned short utf8_to_euc_E6BA[] = {
0, 0xC82E, 0x5E6C, 0xC82F, 0, 0, 0x4D4F, 0x5E67,
0, 0, 0x452E, 0xC830, 0, 0x5E69, 0, 0xC831,
};
-static const unsigned short utf8_to_euc_E6BA_x0213[] = {
- 0x4B7E, 0, 0x5E63, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0x482E, 0xC827, 0, 0x5E6F,
- 0x383B, 0, 0, 0xEF21, 0, 0, 0x3D60, 0,
- 0x5E65, 0xC829, 0, 0, 0x4E2F, 0x3942, 0, 0x5E72,
- 0xC82A, 0, 0x306E, 0, 0, 0x5E70, 0, 0xEF22,
- 0, 0, 0x5E64, 0x767C, 0, 0xC82C, 0xC82D, 0x5E6A,
- 0, 0x767D, 0x5E6C, 0xC82F, 0xEF23, 0, 0x4D4F, 0x5E67,
- 0, 0, 0x452E, 0xC830, 0, 0x5E69, 0, 0xEF24,
-};
static const unsigned short utf8_to_euc_E6BB[] = {
0xC832, 0xC833, 0x5E71, 0xC834, 0x5E6B, 0x4C47, 0, 0xC835,
0xC836, 0x5E66, 0xC837, 0x3C22, 0x5E7E, 0xC838, 0xC839, 0xC83A,
@@ -7998,16 +4319,6 @@ static const unsigned short utf8_to_euc_E6BB[] = {
0, 0, 0x5E7A, 0, 0x4529, 0, 0, 0x5F23,
0x5E77, 0xC83E, 0, 0xC83F, 0, 0xC840, 0x5E78, 0x5E60,
};
-static const unsigned short utf8_to_euc_E6BB_x0213[] = {
- 0xC832, 0x767E, 0x5E71, 0xEF25, 0x5E6B, 0x4C47, 0, 0x7721,
- 0xC836, 0x5E66, 0xEF26, 0x3C22, 0x5E7E, 0xC838, 0x7722, 0xC83A,
- 0, 0x336A, 0, 0x5E68, 0x5E6D, 0x5E6E, 0, 0,
- 0, 0xEF27, 0, 0, 0, 0x426C, 0x425A, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0xEF29, 0x5E76, 0xC83C, 0xC83D, 0x5E7C,
- 0, 0, 0x5E7A, 0, 0x4529, 0, 0, 0x5F23,
- 0x5E77, 0xEF2A, 0, 0xEF2B, 0, 0xC840, 0x5E78, 0x5E60,
-};
static const unsigned short utf8_to_euc_E6BC[] = {
0, 0x3579, 0x493A, 0, 0xC841, 0, 0x3C3F, 0,
0xC842, 0x3977, 0xC843, 0, 0xC844, 0xC845, 0, 0x4F33,
@@ -8018,16 +4329,6 @@ static const unsigned short utf8_to_euc_E6BC[] = {
0xC84E, 0x5E7B, 0x5E7D, 0xC84F, 0, 0, 0xC850, 0,
0x4132, 0, 0, 0xC851, 0xC852, 0, 0x5F21, 0x5E79,
};
-static const unsigned short utf8_to_euc_E6BC_x0213[] = {
- 0, 0x3579, 0x493A, 0, 0xC841, 0, 0x3C3F, 0,
- 0xC842, 0x3977, 0xEF2C, 0, 0xEF2D, 0xC845, 0, 0x4F33,
- 0x7723, 0x5E74, 0, 0x5F22, 0x3169, 0x4166, 0xC846, 0,
- 0xEF2E, 0, 0x7724, 0xC849, 0, 0, 0, 0,
- 0x4779, 0, 0x3441, 0x4E7A, 0, 0xEF2F, 0xC84A, 0,
- 0, 0xC84B, 0x7726, 0x4C21, 0x4452, 0xC853, 0, 0x7727,
- 0xC84E, 0x5E7B, 0x5E7D, 0x7728, 0, 0xEF28, 0xEF30, 0,
- 0x4132, 0, 0, 0xC851, 0xEF31, 0, 0x5F21, 0x5E79,
-};
static const unsigned short utf8_to_euc_E6BD[] = {
0, 0x5E73, 0, 0, 0, 0x3443, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0xC854,
@@ -8038,16 +4339,6 @@ static const unsigned short utf8_to_euc_E6BD[] = {
0x4459, 0, 0, 0, 0x5F4C, 0, 0, 0,
0x5F26, 0, 0x5F25, 0, 0x5F2E, 0xC861, 0xC862, 0,
};
-static const unsigned short utf8_to_euc_E6BD_x0213[] = {
- 0, 0x5E73, 0, 0, 0, 0x3443, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xC854,
- 0, 0x7729, 0xEF33, 0xC857, 0x3769, 0, 0, 0xEF34,
- 0x5F2F, 0x772A, 0xEF35, 0x5F2A, 0x4078, 0xC85B, 0x772B, 0x3363,
- 0xEF36, 0x772C, 0x772D, 0, 0x3D61, 0, 0x5F33, 0,
- 0xEF37, 0, 0, 0, 0xC860, 0x5F2C, 0x442C, 0x5F29,
- 0x4459, 0, 0, 0, 0x5F4C, 0, 0, 0,
- 0x5F26, 0, 0x5F25, 0, 0x5F2E, 0xEF39, 0x772E, 0,
-};
static const unsigned short utf8_to_euc_E6BE[] = {
0x5F28, 0x5F27, 0x5F2D, 0xC863, 0x4021, 0, 0x5F24, 0xC864,
0xC865, 0, 0, 0xC866, 0xC867, 0xC868, 0x5F30, 0,
@@ -8058,16 +4349,6 @@ static const unsigned short utf8_to_euc_E6BE[] = {
0xC877, 0x4543, 0, 0x5F34, 0, 0xC878, 0xC879, 0,
0, 0x5F38, 0, 0, 0xC87A, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E6BE_x0213[] = {
- 0x5F28, 0x5F27, 0x5F2D, 0xC863, 0x4021, 0, 0x5F24, 0xC864,
- 0x772F, 0, 0, 0xC866, 0x7730, 0x7731, 0x5F30, 0,
- 0xEF3A, 0x5F31, 0xC86A, 0xC86B, 0x7732, 0, 0xEF3B, 0x3442,
- 0xEF38, 0, 0xC86E, 0, 0, 0, 0, 0xEF3D,
- 0x7733, 0x5F36, 0, 0x5F35, 0x5F37, 0xEF3E, 0xC872, 0x7734,
- 0xC874, 0, 0x5F3A, 0, 0, 0, 0xC875, 0xEF3F,
- 0xC877, 0x4543, 0, 0x5F34, 0, 0xEF41, 0x7735, 0,
- 0, 0x5F38, 0, 0, 0x7736, 0, 0xEF3C, 0,
-};
static const unsigned short utf8_to_euc_E6BF[] = {
0x3763, 0x4279, 0x5F32, 0x473B, 0, 0xC87B, 0x5F39, 0xC87C,
0xC87D, 0, 0xC87E, 0, 0, 0, 0, 0,
@@ -8078,16 +4359,6 @@ static const unsigned short utf8_to_euc_E6BF[] = {
0xC925, 0x5F40, 0, 0x5F2B, 0, 0xC926, 0x6F69, 0,
0, 0xC927, 0x5F45, 0, 0xC928, 0xC929, 0x5F49, 0,
};
-static const unsigned short utf8_to_euc_E6BF_x0213[] = {
- 0x3763, 0x4279, 0x5F32, 0x473B, 0, 0xC87B, 0x5F39, 0x7737,
- 0xEF42, 0xEF43, 0x7738, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0x5F3E, 0x5F3C, 0, 0,
- 0x5F3F, 0, 0xEF44, 0x5F42, 0, 0, 0xEF45, 0x5F3B,
- 0x396A, 0x4728, 0, 0, 0x5E39, 0, 0, 0,
- 0xC923, 0xEF46, 0, 0x4D74, 0x5F3D, 0, 0x5F41, 0x4275,
- 0x773A, 0x5F40, 0, 0x5F2B, 0, 0x773B, 0x6F69, 0,
- 0, 0x7739, 0x5F45, 0, 0xEF48, 0xC929, 0x5F49, 0,
-};
static const unsigned short utf8_to_euc_E780[] = {
0xC92A, 0x5F47, 0, 0, 0, 0xC92B, 0xC92C, 0xC92D,
0, 0x5F43, 0, 0x5F44, 0, 0xC92E, 0, 0x5F48,
@@ -8098,16 +4369,6 @@ static const unsigned short utf8_to_euc_E780[] = {
0x5F50, 0, 0x5F52, 0, 0xC933, 0, 0, 0xC934,
0, 0xC935, 0, 0, 0xC936, 0, 0x5F51, 0,
};
-static const unsigned short utf8_to_euc_E780_x0213[] = {
- 0xEF49, 0x5F47, 0, 0, 0, 0x773C, 0x773D, 0xEF4A,
- 0, 0x5F43, 0xEF4B, 0x5F44, 0, 0xC92E, 0, 0x5F48,
- 0, 0x5F46, 0, 0, 0, 0x494E, 0, 0xC92F,
- 0x5F4E, 0, 0x5F4B, 0x5F4A, 0, 0x5F4D, 0x4654, 0x5F4F,
- 0xC930, 0, 0, 0xEF4C, 0, 0, 0x4375, 0x426D,
- 0x773E, 0, 0, 0, 0x4025, 0, 0, 0xC932,
- 0x5F50, 0, 0x5F52, 0, 0xC933, 0, 0, 0xC934,
- 0, 0xEF4E, 0xEF4F, 0, 0xEF50, 0, 0x5F51, 0,
-};
static const unsigned short utf8_to_euc_E781[] = {
0, 0, 0, 0xC937, 0xC938, 0, 0, 0,
0xC939, 0xC93A, 0xC93B, 0xC93C, 0x5E75, 0, 0xC941, 0,
@@ -8118,16 +4379,6 @@ static const unsigned short utf8_to_euc_E781[] = {
0x3325, 0, 0, 0, 0, 0xC946, 0xC947, 0,
0x3564, 0, 0, 0, 0x3C5E, 0x3A52, 0xC948, 0,
};
-static const unsigned short utf8_to_euc_E781_x0213[] = {
- 0, 0, 0, 0xEF51, 0xC938, 0, 0, 0xEF52,
- 0xC939, 0xC93A, 0x773F, 0xEF53, 0x5E75, 0, 0x7742, 0,
- 0, 0x5F53, 0, 0, 0xEF55, 0xC93E, 0, 0,
- 0x4667, 0, 0, 0, 0, 0x7740, 0x7741, 0,
- 0, 0, 0, 0x5F54, 0x7743, 0xEF56, 0, 0,
- 0, 0xEF57, 0, 0x3250, 0xEF58, 0, 0xEF59, 0x4574,
- 0x3325, 0, 0, 0, 0, 0x7744, 0xEF5A, 0,
- 0x3564, 0, 0, 0, 0x3C5E, 0x3A52, 0xEF5B, 0,
-};
static const unsigned short utf8_to_euc_E782[] = {
0, 0xC949, 0, 0, 0, 0xC94A, 0xC94B, 0,
0, 0x4F27, 0x3F66, 0, 0, 0, 0x316A, 0,
@@ -8138,16 +4389,6 @@ static const unsigned short utf8_to_euc_E782[] = {
0xC954, 0xC955, 0, 0x5F5B, 0xC956, 0, 0, 0xC957,
0x5F5A, 0x4540, 0x3059, 0xF42E, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E782_x0213[] = {
- 0, 0xEF5C, 0, 0, 0, 0x7745, 0xEF5D, 0,
- 0, 0x4F27, 0x3F66, 0, 0, 0, 0x316A, 0,
- 0, 0, 0x5F56, 0, 0xC94C, 0xEF5E, 0xC94E, 0xEF5F,
- 0xC950, 0x5F55, 0, 0xC951, 0, 0, 0, 0xEF62,
- 0, 0, 0, 0, 0x7746, 0, 0, 0,
- 0, 0, 0, 0x7747, 0x5F59, 0x433A, 0x5F5C, 0x5F57,
- 0xC954, 0xEF63, 0, 0x5F5B, 0xC956, 0, 0, 0x7748,
- 0x5F5A, 0x4540, 0x3059, 0xEF60, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E783[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0x4E75, 0, 0xC958, 0x5F5E, 0, 0, 0, 0x3128,
@@ -8158,16 +4399,6 @@ static const unsigned short utf8_to_euc_E783[] = {
0, 0x5F58, 0, 0, 0, 0, 0, 0,
0, 0x4B23, 0xC961, 0, 0, 0x5F62, 0, 0,
};
-static const unsigned short utf8_to_euc_E783_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x4E75, 0, 0xEF66, 0x5F5E, 0, 0, 0, 0x3128,
- 0, 0xEF67, 0, 0xEF68, 0x7749, 0xC95C, 0xC95D, 0,
- 0x774A, 0x5F60, 0, 0, 0xEF69, 0x5F5F, 0, 0x5F5D,
- 0, 0, 0, 0, 0x774B, 0, 0, 0,
- 0, 0, 0, 0, 0xEF65, 0, 0, 0,
- 0, 0x5F58, 0, 0, 0, 0, 0, 0,
- 0, 0x4B23, 0xC961, 0, 0, 0x5F62, 0, 0,
-};
static const unsigned short utf8_to_euc_E784[] = {
0, 0, 0, 0xC962, 0xC963, 0xC964, 0xC965, 0xC966,
0, 0x5F61, 0, 0xC967, 0xC968, 0, 0, 0xC969,
@@ -8178,16 +4409,6 @@ static const unsigned short utf8_to_euc_E784[] = {
0xC96F, 0xC970, 0, 0, 0, 0, 0x4133, 0,
0xC971, 0, 0, 0, 0x3E46, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E784_x0213[] = {
- 0, 0, 0, 0xEF6A, 0xEF6B, 0xC964, 0xEF6C, 0xEF6D,
- 0xEF6E, 0x5F61, 0, 0xC967, 0xEF6F, 0, 0, 0x774C,
- 0, 0, 0, 0, 0x316B, 0, 0, 0,
- 0, 0x5F64, 0x4A32, 0, 0x5F63, 0, 0x774E, 0,
- 0x774F, 0x4C35, 0, 0, 0, 0, 0x3E47, 0,
- 0, 0, 0, 0x774D, 0, 0xC96D, 0x7750, 0xEF71,
- 0x7751, 0xEF72, 0, 0, 0, 0, 0x4133, 0,
- 0xC971, 0, 0, 0, 0x3E46, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E785[] = {
0, 0xC972, 0, 0, 0, 0xC973, 0xC974, 0xC975,
0, 0x4E7B, 0xC976, 0xC977, 0x5F6A, 0, 0x4079, 0,
@@ -8198,16 +4419,6 @@ static const unsigned short utf8_to_euc_E785[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0xCA22, 0, 0, 0, 0x407A, 0, 0,
};
-static const unsigned short utf8_to_euc_E785_x0213[] = {
- 0, 0xC972, 0, 0, 0, 0xC973, 0x7752, 0x7753,
- 0, 0x4E7B, 0xEF74, 0xC977, 0x5F6A, 0, 0x4079, 0,
- 0xEF73, 0x7754, 0x7756, 0xEF75, 0, 0x5F66, 0x5F6B, 0xC97A,
- 0, 0x316C, 0xC97B, 0, 0x7757, 0, 0xEF76, 0,
- 0x7758, 0, 0x5F69, 0, 0x4761, 0x5F65, 0x5F68, 0x3E48,
- 0x7759, 0x4851, 0, 0, 0x5F6C, 0, 0x3C51, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0xCA22, 0, 0, 0, 0x407A, 0, 0,
-};
static const unsigned short utf8_to_euc_E786[] = {
0xCA23, 0, 0, 0, 0x5F6F, 0xCA24, 0, 0xCA25,
0x5F67, 0, 0x3727, 0, 0xCA26, 0, 0, 0x5F6D,
@@ -8218,16 +4429,6 @@ static const unsigned short utf8_to_euc_E786[] = {
0xCA2D, 0x472E, 0xCA2E, 0xCA2F, 0, 0, 0, 0,
0, 0x5F74, 0xCA30, 0, 0, 0, 0x5F75, 0xCA31,
};
-static const unsigned short utf8_to_euc_E786_x0213[] = {
- 0xEF79, 0, 0, 0, 0x5F6F, 0x775B, 0, 0x775C,
- 0x5F67, 0, 0x3727, 0, 0xCA26, 0, 0, 0x5F6D,
- 0, 0, 0x775D, 0, 0x4D50, 0x5F70, 0xEF78, 0,
- 0, 0x7426, 0xCA28, 0xEF7A, 0, 0, 0, 0x3D4F,
- 0xEF7B, 0, 0xEF7C, 0, 0, 0, 0, 0,
- 0x5F71, 0, 0, 0, 0x5F72, 0, 0xEF7D, 0xEF7E,
- 0xCA2D, 0x472E, 0xCA2E, 0xF021, 0, 0, 0, 0,
- 0, 0x5F74, 0x775F, 0, 0, 0, 0x5F75, 0xCA31,
-};
static const unsigned short utf8_to_euc_E787[] = {
0xCA32, 0xCA33, 0, 0x4733, 0xCA34, 0, 0, 0,
0x4575, 0x5F77, 0, 0xCA35, 0xCA36, 0, 0x5F79, 0,
@@ -8238,16 +4439,6 @@ static const unsigned short utf8_to_euc_E787[] = {
0, 0, 0, 0, 0, 0x5F7D, 0, 0,
0xCA3C, 0x6021, 0, 0x5F6E, 0x5F7E, 0, 0xCA3D, 0x6022,
};
-static const unsigned short utf8_to_euc_E787_x0213[] = {
- 0xCA32, 0x775E, 0, 0x4733, 0x7760, 0, 0, 0,
- 0x4575, 0x5F77, 0, 0xF023, 0xCA36, 0, 0x5F79, 0,
- 0x4E55, 0, 0x5F76, 0xF024, 0x5F78, 0x316D, 0xCA38, 0x5F73,
- 0, 0xF025, 0xCA3A, 0, 0xF026, 0, 0, 0x535B,
- 0x5F7A, 0, 0, 0, 0, 0x4167, 0x3B38, 0x5F7C,
- 0, 0, 0, 0, 0x5F7B, 0x3F24, 0x5259, 0,
- 0, 0, 0, 0, 0, 0x5F7D, 0, 0,
- 0xCA3C, 0x6021, 0, 0x5F6E, 0x5F7E, 0, 0x7761, 0x6022,
-};
static const unsigned short utf8_to_euc_E788[] = {
0xCA3E, 0, 0, 0, 0, 0, 0x477A, 0xCA3F,
0xCA40, 0xCA41, 0, 0, 0, 0x6023, 0, 0,
@@ -8258,16 +4449,6 @@ static const unsigned short utf8_to_euc_E788[] = {
0x6029, 0, 0x602A, 0, 0xCA4A, 0x3C5F, 0x4963, 0,
0xCA4B, 0xCA4C, 0x4C6C, 0x602B, 0x602C, 0x4156, 0x3C24, 0x602D,
};
-static const unsigned short utf8_to_euc_E788_x0213[] = {
- 0x7762, 0, 0, 0, 0, 0, 0x477A, 0xF027,
- 0xCA40, 0xCA41, 0, 0, 0, 0x6023, 0, 0,
- 0x6024, 0, 0, 0xCA42, 0, 0x7763, 0, 0xCA43,
- 0, 0, 0xCA44, 0x6025, 0, 0xCA45, 0, 0xCA46,
- 0, 0, 0, 0, 0xCA47, 0, 0, 0,
- 0x6026, 0, 0x445E, 0xF02A, 0x6028, 0x6027, 0, 0xCA49,
- 0x6029, 0, 0x602A, 0, 0xF02B, 0x3C5F, 0x4963, 0,
- 0xF02C, 0xF02D, 0x4C6C, 0x602B, 0x602C, 0x4156, 0x3C24, 0x602D,
-};
static const unsigned short utf8_to_euc_E789[] = {
0x602E, 0xCA4D, 0xCA4E, 0xCA4F, 0, 0xCA50, 0x602F, 0x4A52,
0x4847, 0, 0, 0x6030, 0x4757, 0, 0xCA51, 0xCA52,
@@ -8278,16 +4459,6 @@ static const unsigned short utf8_to_euc_E789[] = {
0, 0xCA60, 0x4037, 0, 0x6032, 0, 0, 0xCA61,
0xCA62, 0x4643, 0, 0xCA63, 0xCA64, 0x3823, 0x6033, 0xCA65,
};
-static const unsigned short utf8_to_euc_E789_x0213[] = {
- 0x602E, 0xCA4D, 0xF02F, 0xCA4F, 0, 0xCA50, 0x602F, 0x4A52,
- 0x4847, 0, 0, 0x6030, 0x4757, 0, 0xCA51, 0xCA52,
- 0xCA53, 0, 0x442D, 0xF030, 0, 0x7764, 0x7765, 0xF031,
- 0x6031, 0x3267, 0xCA57, 0x356D, 0xCA58, 0x4C46, 0xCA59, 0x4C36,
- 0xCA5A, 0x3234, 0x4F34, 0xF032, 0, 0, 0, 0x4B52,
- 0xCA5C, 0x4A2A, 0, 0xCA5D, 0, 0, 0xF034, 0xF035,
- 0, 0xCA60, 0x4037, 0, 0x6032, 0, 0, 0xCA61,
- 0xF036, 0x4643, 0, 0xCA63, 0xCA64, 0x3823, 0x6033, 0xF037,
-};
static const unsigned short utf8_to_euc_E78A[] = {
0x3A54, 0x6035, 0x6034, 0, 0xCA66, 0, 0, 0x6036,
0, 0xCA67, 0, 0, 0, 0xCA68, 0xCA69, 0,
@@ -8298,16 +4469,6 @@ static const unsigned short utf8_to_euc_E78A[] = {
0, 0xCA6F, 0x603C, 0, 0xCA70, 0, 0x3E75, 0,
0, 0x603B, 0, 0, 0, 0, 0xCA71, 0,
};
-static const unsigned short utf8_to_euc_E78A_x0213[] = {
- 0x3A54, 0x6035, 0x6034, 0, 0xCA66, 0, 0, 0x6036,
- 0, 0xCA67, 0, 0, 0, 0x7767, 0xF038, 0,
- 0, 0, 0x6037, 0xCA6A, 0, 0, 0x6038, 0,
- 0, 0, 0, 0x7768, 0, 0, 0, 0,
- 0x353E, 0, 0x6039, 0, 0, 0, 0, 0x603A,
- 0xCA6C, 0, 0, 0, 0x3824, 0xF03A, 0xF03B, 0x4848,
- 0xF03C, 0xF03D, 0x603C, 0, 0xCA70, 0, 0x3E75, 0,
- 0, 0x603B, 0, 0, 0, 0, 0x7769, 0,
-};
static const unsigned short utf8_to_euc_E78B[] = {
0, 0xCA72, 0x3638, 0x603D, 0x603F, 0, 0x603E, 0xCA73,
0, 0xCA74, 0, 0, 0xCA75, 0, 0x6040, 0,
@@ -8318,16 +4479,6 @@ static const unsigned short utf8_to_euc_E78B[] = {
0, 0, 0, 0xCA7B, 0xCA7C, 0, 0, 0x6046,
0x432C, 0x6045, 0xCA7D, 0xCA7E, 0x4F35, 0x4762, 0xCB21, 0,
};
-static const unsigned short utf8_to_euc_E78B_x0213[] = {
- 0x776A, 0xF03E, 0x3638, 0x603D, 0x603F, 0, 0x603E, 0xCA73,
- 0, 0xCA74, 0, 0, 0xF040, 0, 0x6040, 0,
- 0x3851, 0, 0x6041, 0, 0, 0xCA76, 0xCA77, 0x3669,
- 0xCA78, 0x4140, 0, 0x397D, 0, 0, 0, 0xCA79,
- 0x6043, 0x6044, 0x6042, 0, 0, 0xCA7A, 0, 0,
- 0, 0x3C6D, 0, 0, 0x4648, 0x3639, 0, 0,
- 0, 0, 0, 0xF043, 0xCA7C, 0, 0, 0x6046,
- 0x432C, 0x6045, 0xF044, 0x776B, 0x4F35, 0x4762, 0xCB21, 0,
-};
static const unsigned short utf8_to_euc_E78C[] = {
0, 0, 0xCB22, 0, 0xCB23, 0xCB24, 0, 0xCB25,
0, 0, 0x6049, 0xCB26, 0, 0xCB27, 0, 0,
@@ -8338,16 +4489,6 @@ static const unsigned short utf8_to_euc_E78C[] = {
0, 0xCB32, 0xCB33, 0, 0x604D, 0xCB34, 0x4D31, 0x4D32,
0, 0, 0xCB35, 0xCB36, 0, 0xCB37, 0x6051, 0x316E,
};
-static const unsigned short utf8_to_euc_E78C_x0213[] = {
- 0, 0, 0xCB22, 0, 0xCB23, 0xCB24, 0, 0xF045,
- 0, 0, 0x6049, 0xCB26, 0, 0xCB27, 0, 0,
- 0, 0, 0xF046, 0xCB29, 0, 0, 0x604B, 0x6048,
- 0xF047, 0xF048, 0, 0x4C54, 0x604A, 0x604C, 0xCB2C, 0x4E44,
- 0, 0, 0xCB2D, 0, 0xCB2E, 0x6050, 0, 0x776D,
- 0x776E, 0x604F, 0x4376, 0x472D, 0xF04B, 0, 0x3825, 0x604E,
- 0, 0xF04C, 0xCB33, 0xF04D, 0x604D, 0xCB34, 0x4D31, 0x4D32,
- 0, 0xF04A, 0xCB35, 0xCB36, 0, 0xF04E, 0x6051, 0x316E,
-};
static const unsigned short utf8_to_euc_E78D[] = {
0, 0, 0, 0xCB38, 0x3976, 0x3B62, 0, 0,
0, 0, 0, 0, 0, 0xCB39, 0x6052, 0x6053,
@@ -8358,16 +4499,6 @@ static const unsigned short utf8_to_euc_E78D[] = {
0x6058, 0xCB49, 0x334D, 0, 0, 0x605A, 0, 0xCB4A,
0x6059, 0xCB4B, 0x605C, 0x605B, 0xCB4C, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E78D_x0213[] = {
- 0, 0, 0, 0xCB38, 0x3976, 0x3B62, 0, 0,
- 0, 0, 0, 0, 0, 0xCB39, 0x6052, 0x6053,
- 0x7770, 0, 0xF04F, 0, 0, 0, 0xCB3C, 0x6055,
- 0xCB3D, 0, 0, 0, 0, 0xCB3E, 0xCB3F, 0xCB40,
- 0xCB41, 0, 0, 0x3D43, 0, 0, 0x7771, 0xCB43,
- 0x6057, 0xCB44, 0x6056, 0xF051, 0xF052, 0, 0xF054, 0xF055,
- 0x6058, 0xF056, 0x334D, 0, 0, 0x605A, 0, 0xF057,
- 0x6059, 0xCB4B, 0x605C, 0x605B, 0x7772, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E78E[] = {
0xCB4D, 0xCB4E, 0, 0xCB4F, 0x383C, 0xCB50, 0xCB51, 0x4E28,
0, 0x364C, 0, 0x3226, 0, 0, 0xCB52, 0,
@@ -8378,16 +4509,6 @@ static const unsigned short utf8_to_euc_E78E[] = {
0, 0, 0x4E68, 0x605E, 0, 0xCB62, 0, 0xCB63,
0, 0xCB64, 0, 0x6060, 0xCB65, 0xCB66, 0, 0xCB67,
};
-static const unsigned short utf8_to_euc_E78E_x0213[] = {
- 0xCB4D, 0xF058, 0, 0xCB4F, 0x383C, 0xF059, 0xCB51, 0x4E28,
- 0, 0x364C, 0xF05A, 0x3226, 0, 0, 0xCB52, 0,
- 0xCB53, 0, 0, 0xCB54, 0xF05B, 0x7773, 0x366A, 0xCB56,
- 0xF05C, 0, 0, 0, 0xF05D, 0, 0xF05E, 0x7774,
- 0x7775, 0, 0x7776, 0, 0, 0xF05F, 0x7777, 0,
- 0xF060, 0x3461, 0xCB5F, 0x7778, 0, 0xCB61, 0, 0,
- 0, 0, 0x4E68, 0x605E, 0, 0xF061, 0, 0xF062,
- 0, 0xF063, 0, 0x6060, 0xF064, 0xCB66, 0, 0xF065,
-};
static const unsigned short utf8_to_euc_E78F[] = {
0x6061, 0, 0x3251, 0, 0, 0xCB68, 0xCB69, 0,
0x605D, 0xCB6A, 0x3B39, 0xCB6B, 0xCB6C, 0x4441, 0x605F, 0xCB6D,
@@ -8398,16 +4519,6 @@ static const unsigned short utf8_to_euc_E78F[] = {
0, 0x607E, 0, 0, 0xCB78, 0xCB79, 0, 0xCB7A,
0x6069, 0xCB7B, 0xCB7C, 0xCB7D, 0, 0xCB7E, 0x383D, 0xCC21,
};
-static const unsigned short utf8_to_euc_E78F_x0213[] = {
- 0x6061, 0, 0x3251, 0, 0, 0xF066, 0xCB69, 0,
- 0x605D, 0x7779, 0x3B39, 0xF067, 0xCB6C, 0x4441, 0x605F, 0x777A,
- 0, 0, 0xCB6E, 0xCB6F, 0, 0, 0x777B, 0,
- 0, 0x777C, 0, 0, 0, 0xCB72, 0x6064, 0,
- 0x3C6E, 0xF068, 0, 0x777D, 0, 0x6062, 0xCB75, 0xF069,
- 0, 0x777E, 0x373E, 0, 0, 0x4849, 0x6063, 0,
- 0, 0x607E, 0, 0, 0xCB78, 0xCB79, 0, 0xCB7A,
- 0x6069, 0xF06A, 0xF06C, 0xCB7D, 0, 0xCB7E, 0x383D, 0xCC21,
-};
static const unsigned short utf8_to_euc_E790[] = {
0xCC22, 0xCC23, 0, 0x3565, 0xCC24, 0x6066, 0x4D7D, 0xCC25,
0, 0x4E30, 0xCC26, 0, 0, 0, 0, 0,
@@ -8418,16 +4529,6 @@ static const unsigned short utf8_to_euc_E790[] = {
0xCC34, 0xCC35, 0x606A, 0x4E56, 0x3657, 0x487C, 0x474A, 0,
0, 0xCC36, 0x606B, 0, 0, 0, 0, 0x606D,
};
-static const unsigned short utf8_to_euc_E790_x0213[] = {
- 0xCC22, 0xF06D, 0, 0x3565, 0xCC24, 0x6066, 0x4D7D, 0x7821,
- 0, 0x4E30, 0x7822, 0, 0, 0, 0, 0,
- 0, 0xCC27, 0, 0xF06B, 0, 0, 0, 0,
- 0, 0, 0x7823, 0x7824, 0, 0, 0, 0,
- 0, 0, 0x4276, 0, 0xF06E, 0x6068, 0x7826, 0,
- 0x7827, 0xCC2D, 0x7828, 0x7829, 0x782A, 0xCC31, 0x782B, 0x782C,
- 0x782D, 0xF06F, 0x606A, 0x4E56, 0x3657, 0x487C, 0x474A, 0,
- 0, 0xF070, 0x606B, 0, 0, 0, 0, 0x606D,
-};
static const unsigned short utf8_to_euc_E791[] = {
0xCC37, 0x6070, 0, 0xCC38, 0xCC39, 0, 0xCC3A, 0xCC3B,
0, 0, 0, 0xCC3C, 0, 0xCC3D, 0, 0,
@@ -8438,16 +4539,6 @@ static const unsigned short utf8_to_euc_E791[] = {
0x6073, 0xCC49, 0xCC4A, 0x3A3C, 0, 0, 0x6076, 0,
0, 0, 0, 0, 0, 0, 0x6077, 0,
};
-static const unsigned short utf8_to_euc_E791_x0213[] = {
- 0xF072, 0x6070, 0, 0xF073, 0x782E, 0, 0x782F, 0x7830,
- 0, 0, 0, 0x7831, 0, 0xF074, 0, 0,
- 0, 0xCC3E, 0xF075, 0xF071, 0, 0x606C, 0, 0x7832,
- 0, 0x606F, 0x386A, 0x314D, 0x6071, 0xF076, 0x3F70, 0x606E,
- 0x4E5C, 0, 0x7833, 0x6074, 0x7424, 0, 0xCC43, 0xCC44,
- 0xCC45, 0x6072, 0x6075, 0x7834, 0, 0x7835, 0xCC48, 0x6067,
- 0x6073, 0xF077, 0xCC4A, 0x3A3C, 0, 0, 0x6076, 0,
- 0, 0, 0, 0, 0, 0, 0x6077, 0,
-};
static const unsigned short utf8_to_euc_E792[] = {
0xCC4B, 0xCC4C, 0, 0x4D7E, 0, 0xCC4D, 0xCC4E, 0xCC4F,
0, 0xCC50, 0, 0x6078, 0, 0, 0, 0xCC51,
@@ -8458,16 +4549,6 @@ static const unsigned short utf8_to_euc_E792[] = {
0x3444, 0xCC64, 0xCC65, 0, 0, 0xCC66, 0, 0,
0, 0xCC67, 0, 0xCC68, 0, 0x3C25, 0, 0xCC69,
};
-static const unsigned short utf8_to_euc_E792_x0213[] = {
- 0xCC4B, 0xF078, 0, 0x4D7E, 0, 0xF079, 0x7836, 0x7837,
- 0xF07A, 0x7838, 0, 0x6078, 0, 0, 0, 0xCC51,
- 0x783D, 0xCC53, 0xF07C, 0, 0, 0, 0, 0xF07D,
- 0x7839, 0xF07E, 0xCC57, 0, 0x783A, 0, 0x6079, 0x783B,
- 0xF121, 0xF122, 0x6065, 0x783C, 0, 0xF123, 0x783E, 0x607A,
- 0x783F, 0x7840, 0xF124, 0xF125, 0, 0, 0xCC62, 0xCC63,
- 0x3444, 0xCC64, 0xCC65, 0, 0, 0x7841, 0, 0,
- 0, 0xF126, 0xF128, 0xF127, 0, 0x3C25, 0, 0x7842,
-};
static const unsigned short utf8_to_euc_E793[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0xCC6A, 0xCC6B, 0x607B, 0, 0xCC6C, 0, 0, 0x607C,
@@ -8478,16 +4559,6 @@ static const unsigned short utf8_to_euc_E793[] = {
0x6127, 0x6128, 0x6126, 0, 0xCC79, 0, 0x4953, 0x612A,
0x6129, 0, 0xCC7A, 0xCC7B, 0xCC7C, 0, 0, 0xCC7D,
};
-static const unsigned short utf8_to_euc_E793_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x7843, 0x7844, 0x607B, 0, 0xCC6C, 0, 0, 0x607C,
- 0xCC6D, 0, 0, 0xCC6E, 0x607D, 0, 0xF129, 0,
- 0xF12A, 0, 0x7845, 0xCC71, 0x313B, 0, 0xF12B, 0xCC73,
- 0x6121, 0, 0x493B, 0x6122, 0xCC74, 0, 0x3424, 0x6123,
- 0xCC75, 0x6124, 0xCC76, 0xF12D, 0, 0, 0x6125, 0xF12C,
- 0x6127, 0x6128, 0x6126, 0, 0xCC79, 0, 0x4953, 0x612A,
- 0x6129, 0, 0xF12F, 0xCC7B, 0xCC7C, 0, 0, 0x7846,
-};
static const unsigned short utf8_to_euc_E794[] = {
0, 0xF450, 0, 0x612C, 0x612B, 0x612D, 0xCC7E, 0,
0, 0, 0, 0, 0x612E, 0x6130, 0x612F, 0,
@@ -8498,16 +4569,6 @@ static const unsigned short utf8_to_euc_E794[] = {
0x4544, 0x4D33, 0x3943, 0x3F3D, 0, 0, 0xCD2B, 0x434B,
0x5234, 0xCD2C, 0x442E, 0x3268, 0x6136, 0xCD2D, 0xCD2E, 0xCD2F,
};
-static const unsigned short utf8_to_euc_E794_x0213[] = {
- 0, 0x7847, 0, 0x612C, 0x612B, 0x612D, 0xCC7E, 0,
- 0, 0, 0, 0, 0x612E, 0x6130, 0x612F, 0,
- 0, 0x3979, 0xCD21, 0x6132, 0, 0x6131, 0xCD22, 0x7848,
- 0x3445, 0, 0x3F53, 0, 0x453C, 0, 0x6133, 0x4038,
- 0xF131, 0xCD25, 0, 0x3B3A, 0xF132, 0x3179, 0x6134, 0xCD27,
- 0x4D51, 0xCD28, 0xF133, 0x4A63, 0x6135, 0, 0, 0x7849,
- 0x4544, 0x4D33, 0x3943, 0x3F3D, 0, 0, 0xCD2B, 0x434B,
- 0x5234, 0xCD2C, 0x442E, 0x3268, 0x6136, 0xF136, 0xF137, 0xCD2F,
-};
static const unsigned short utf8_to_euc_E795[] = {
0xCD30, 0, 0, 0xCD31, 0x6137, 0, 0x613C, 0xCD32,
0xCD33, 0x613A, 0x6139, 0x5A42, 0x3326, 0x6138, 0xCD34, 0x305A,
@@ -8518,16 +4579,6 @@ static const unsigned short utf8_to_euc_E795[] = {
0x305B, 0xCD3C, 0, 0x3E76, 0x6147, 0, 0x6144, 0x466D,
0x6143, 0xCD3D, 0xCD3E, 0xCD3F, 0xCD40, 0xCD41, 0xCD42, 0x3526,
};
-static const unsigned short utf8_to_euc_E795_x0213[] = {
- 0xF138, 0, 0, 0xCD31, 0x6137, 0, 0x613C, 0xCD32,
- 0xF139, 0x613A, 0x6139, 0x5A42, 0x3326, 0x6138, 0xF13A, 0x305A,
- 0xF13B, 0x482A, 0xF13C, 0, 0x484A, 0, 0, 0xCD37,
- 0, 0x4E31, 0x613D, 0x613B, 0x435C, 0x4026, 0xCD38, 0xCD39,
- 0x482B, 0xCD3A, 0x492D, 0, 0x613F, 0x4E2C, 0x374D, 0x6140,
- 0, 0x613E, 0x4856, 0x6141, 0xF13D, 0x6142, 0, 0x784A,
- 0x305B, 0xF13F, 0xF13E, 0x3E76, 0x6147, 0, 0x6144, 0x466D,
- 0x6143, 0x784B, 0xF140, 0xCD3F, 0xCD40, 0xF141, 0xF142, 0x3526,
-};
static const unsigned short utf8_to_euc_E796[] = {
0, 0xCD43, 0x614A, 0, 0, 0xCD44, 0x6145, 0x6146,
0, 0x6149, 0x6148, 0x4925, 0, 0, 0x4142, 0x4141,
@@ -8538,16 +4589,6 @@ static const unsigned short utf8_to_euc_E796[] = {
0, 0x6157, 0x4868, 0x6151, 0xCD4D, 0x6153, 0, 0,
0x6155, 0x3F3E, 0xCD4E, 0, 0x6156, 0x6154, 0x3C40, 0xCD4F,
};
-static const unsigned short utf8_to_euc_E796_x0213[] = {
- 0, 0xF143, 0x614A, 0, 0, 0xCD44, 0x6145, 0x6146,
- 0, 0x6149, 0x6148, 0x4925, 0xF145, 0, 0x4142, 0x4141,
- 0xCD45, 0x353F, 0x784C, 0xCD47, 0x614B, 0xCD48, 0, 0,
- 0, 0xCD49, 0x614C, 0, 0xCD4A, 0x614D, 0, 0,
- 0, 0, 0xF147, 0x614F, 0xCD4C, 0x614E, 0, 0,
- 0, 0, 0, 0x3156, 0, 0, 0, 0,
- 0xF149, 0x6157, 0x4868, 0x6151, 0xCD4D, 0x6153, 0, 0xF14A,
- 0x6155, 0x3F3E, 0xCD4E, 0, 0x6156, 0x6154, 0x3C40, 0xF14B,
-};
static const unsigned short utf8_to_euc_E797[] = {
0xCD50, 0xCD51, 0x6150, 0x6152, 0xCD52, 0x4942, 0xCD53, 0x3E49,
0, 0, 0x6159, 0, 0xCD54, 0x6158, 0xCD55, 0xCD56,
@@ -8558,16 +4599,6 @@ static const unsigned short utf8_to_euc_E797[] = {
0x6162, 0xCD61, 0x6164, 0x6165, 0x4354, 0, 0, 0,
0, 0xCD62, 0x6163, 0, 0x6160, 0, 0x615E, 0x615F,
};
-static const unsigned short utf8_to_euc_E797_x0213[] = {
- 0xF14C, 0xCD51, 0x6150, 0x6152, 0xCD52, 0x4942, 0xF14D, 0x3E49,
- 0, 0, 0x6159, 0, 0xCD54, 0x6158, 0x784E, 0xF14E,
- 0, 0, 0x615A, 0xF14F, 0x3C26, 0x3A2F, 0, 0xCD57,
- 0x4577, 0x615B, 0, 0x444B, 0xCD58, 0xF150, 0x615D, 0xF151,
- 0xF152, 0xCD5B, 0x4E21, 0x615C, 0x784F, 0, 0, 0xF153,
- 0, 0x4169, 0, 0, 0xF154, 0, 0xF155, 0xCD60,
- 0x6162, 0xF156, 0x6164, 0x6165, 0x4354, 0, 0, 0,
- 0, 0xF157, 0x6163, 0, 0x6160, 0, 0x615E, 0x615F,
-};
static const unsigned short utf8_to_euc_E798[] = {
0xCD63, 0x6161, 0xCD64, 0xCD65, 0xCD66, 0, 0, 0xCD67,
0xCD68, 0x6168, 0xCD69, 0x6166, 0xCD6A, 0x6167, 0, 0xCD6B,
@@ -8578,16 +4609,6 @@ static const unsigned short utf8_to_euc_E798[] = {
0x6170, 0, 0xCD7A, 0xCD7B, 0x616F, 0xCD7C, 0, 0,
0xCD7D, 0xCD7E, 0xCE21, 0x6171, 0xCE22, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E798_x0213[] = {
- 0x7850, 0x6161, 0x7851, 0xF158, 0xCD66, 0, 0, 0xF15A,
- 0x7852, 0x6168, 0xCD69, 0x6166, 0xCD6A, 0x6167, 0, 0xF15B,
- 0, 0, 0xCD6C, 0xF15E, 0, 0x7853, 0x7854, 0,
- 0xF159, 0x7855, 0, 0xF15F, 0xF160, 0xCD73, 0x7856, 0x6169,
- 0x616B, 0x616C, 0x616D, 0xCD75, 0x616E, 0xF162, 0x7E7D, 0x616A,
- 0xF163, 0xCD78, 0, 0, 0, 0x7857, 0, 0,
- 0x6170, 0, 0xCD7A, 0xF165, 0x616F, 0x7858, 0, 0,
- 0xCD7D, 0xCD7E, 0xCE21, 0x6171, 0xF164, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E799[] = {
0xCE24, 0xCE25, 0x4E45, 0xCE26, 0xCE27, 0xCE28, 0x6174, 0x6172,
0x6173, 0xCE29, 0xCE23, 0xCE2A, 0x3462, 0, 0, 0,
@@ -8598,16 +4619,6 @@ static const unsigned short utf8_to_euc_E799[] = {
0x617E, 0xCE33, 0x6221, 0, 0xCE34, 0, 0x6222, 0,
0x6223, 0, 0x482F, 0x4550, 0x6224, 0x4772, 0x4934, 0,
};
-static const unsigned short utf8_to_euc_E799_x0213[] = {
- 0xCE24, 0xF168, 0x4E45, 0x7859, 0xCE27, 0xCE28, 0x6174, 0x6172,
- 0x6173, 0xF16A, 0xCE23, 0x785A, 0x3462, 0, 0, 0,
- 0, 0, 0x4C7E, 0, 0, 0xF16B, 0x4A4A, 0,
- 0x6176, 0xCE2C, 0, 0, 0x6175, 0, 0, 0xCE2D,
- 0, 0x6177, 0x6178, 0, 0x785B, 0x785C, 0, 0x617C,
- 0x6179, 0x617A, 0x617B, 0, 0x617D, 0x785D, 0xF16D, 0x785E,
- 0x617E, 0x785F, 0x6221, 0, 0xCE34, 0, 0x6222, 0,
- 0x6223, 0, 0x482F, 0x4550, 0x6224, 0x4772, 0x4934, 0,
-};
static const unsigned short utf8_to_euc_E79A[] = {
0x6225, 0xCE35, 0xF451, 0x6226, 0x452A, 0xCE36, 0x3327, 0x3944,
0x6227, 0, 0, 0x6228, 0xCE37, 0xCE38, 0x6229, 0,
@@ -8618,16 +4629,6 @@ static const unsigned short utf8_to_euc_E79A[] = {
0x622E, 0, 0, 0, 0x622F, 0, 0, 0x7369,
0x6230, 0x6231, 0x6232, 0, 0, 0xCE48, 0, 0x3B2E,
};
-static const unsigned short utf8_to_euc_E79A_x0213[] = {
- 0x6225, 0x7860, 0xF451, 0x6226, 0x452A, 0xCE36, 0x3327, 0x3944,
- 0x6227, 0, 0, 0x6228, 0xCE37, 0xCE38, 0x6229, 0,
- 0x3B29, 0, 0, 0x622B, 0, 0xF16E, 0x622A, 0,
- 0, 0x622C, 0x622D, 0x7861, 0xF16F, 0x7862, 0x7863, 0xCE3D,
- 0xF171, 0xF170, 0xCE3F, 0xCE40, 0xCE41, 0xCE42, 0x7864, 0xF172,
- 0xF173, 0, 0x7865, 0, 0, 0xCE47, 0x4869, 0xF174,
- 0x622E, 0, 0, 0, 0x622F, 0, 0x7866, 0x7369,
- 0x6230, 0x6231, 0x6232, 0, 0, 0xCE48, 0, 0x3B2E,
-};
static const unsigned short utf8_to_euc_E79B[] = {
0, 0xCE49, 0x6233, 0x4756, 0, 0xCE4A, 0x4B5F, 0,
0x314E, 0xCE4B, 0x3157, 0xCE4C, 0xCE4D, 0x6234, 0xCE4E, 0,
@@ -8638,16 +4639,6 @@ static const unsigned short utf8_to_euc_E79B[] = {
0xCE55, 0xCE56, 0x4C55, 0, 0x443E, 0, 0xCE57, 0,
0x416A, 0xCE58, 0, 0x623D, 0xCE59, 0, 0x3D62, 0,
};
-static const unsigned short utf8_to_euc_E79B_x0213[] = {
- 0, 0xCE49, 0x6233, 0x4756, 0, 0x7867, 0x4B5F, 0,
- 0x314E, 0xF176, 0x3157, 0xCE4C, 0x7868, 0x6234, 0x7869, 0,
- 0, 0, 0x6236, 0, 0x786A, 0, 0x6235, 0x4570,
- 0, 0xCE50, 0, 0x4039, 0x5D39, 0, 0x6237, 0x4C41,
- 0xCE51, 0x6238, 0, 0x3446, 0x4857, 0x6239, 0x786B, 0x623A,
- 0xF178, 0, 0x623B, 0, 0xF179, 0, 0x4C5C, 0,
- 0xCE55, 0x786C, 0x4C55, 0, 0x443E, 0, 0xCE57, 0,
- 0x416A, 0xCE58, 0, 0x623D, 0x786D, 0, 0x3D62, 0,
-};
static const unsigned short utf8_to_euc_E79C[] = {
0xCE5A, 0x3E4A, 0, 0, 0x6240, 0, 0xCE5B, 0x623F,
0x623E, 0x487D, 0xCE5C, 0x3447, 0x3829, 0, 0xCE5D, 0,
@@ -8658,16 +4649,6 @@ static const unsigned short utf8_to_euc_E79C[] = {
0, 0, 0, 0, 0xCE6A, 0xCE6B, 0xCE6C, 0x6247,
0x6248, 0xCE6D, 0x442F, 0, 0x3463, 0xCE6E, 0xCE6F, 0,
};
-static const unsigned short utf8_to_euc_E79C_x0213[] = {
- 0xCE5A, 0x3E4A, 0, 0, 0x6240, 0, 0xCE5B, 0x623F,
- 0x623E, 0x487D, 0x786E, 0x3447, 0x3829, 0, 0xCE5D, 0,
- 0, 0, 0xCE5E, 0, 0xCE5F, 0xCE60, 0, 0xF17B,
- 0, 0x786F, 0xF17C, 0x6246, 0xCE64, 0, 0x6243, 0x3F3F,
- 0x4C32, 0, 0xCE65, 0, 0x6242, 0x6244, 0x6245, 0,
- 0xCE66, 0x6241, 0, 0, 0, 0xF17D, 0xCE68, 0xCE69,
- 0, 0, 0, 0, 0x7870, 0xF17E, 0x7871, 0x6247,
- 0x6248, 0xCE6D, 0x442F, 0, 0x3463, 0xCE6E, 0xCE6F, 0,
-};
static const unsigned short utf8_to_euc_E79D[] = {
0x4365, 0, 0xCE70, 0, 0, 0xCE71, 0xCE72, 0x6249,
0, 0, 0xCE73, 0, 0, 0xCE74, 0xCE75, 0xCE76,
@@ -8678,16 +4659,6 @@ static const unsigned short utf8_to_euc_E79D[] = {
0xCF25, 0, 0xCF26, 0xCF27, 0xCF28, 0, 0, 0,
0, 0x6251, 0xCF29, 0, 0, 0xCF2A, 0x6250, 0x624F,
};
-static const unsigned short utf8_to_euc_E79D_x0213[] = {
- 0x4365, 0, 0xCE70, 0, 0, 0xCE71, 0x7872, 0x6249,
- 0, 0, 0xCE73, 0, 0, 0x7873, 0x7874, 0xCE76,
- 0, 0, 0xCE77, 0, 0, 0, 0xCE78, 0xCE79,
- 0xF225, 0, 0x624A, 0x624D, 0x7875, 0, 0xCE7B, 0x7876,
- 0xF226, 0x3F67, 0x7877, 0x4644, 0xCF21, 0x624E, 0x4B53, 0xCF22,
- 0x624B, 0, 0xF227, 0x624C, 0xCF24, 0, 0, 0,
- 0xCF25, 0, 0xF229, 0xCF27, 0xCF28, 0, 0, 0,
- 0, 0x6251, 0x7878, 0, 0xF22A, 0xF22B, 0x6250, 0x624F,
-};
static const unsigned short utf8_to_euc_E79E[] = {
0xCF2B, 0, 0, 0, 0xCF2C, 0, 0, 0,
0, 0, 0, 0x6253, 0xCF2D, 0xCF2E, 0x6252, 0,
@@ -8698,16 +4669,6 @@ static const unsigned short utf8_to_euc_E79E[] = {
0x6257, 0xCF39, 0, 0x4637, 0, 0xCF3A, 0x6258, 0,
0, 0x6259, 0, 0x625D, 0x625B, 0x625C, 0xCF3B, 0x625A,
};
-static const unsigned short utf8_to_euc_E79E_x0213[] = {
- 0x7879, 0, 0, 0, 0xCF2C, 0, 0, 0,
- 0, 0, 0, 0x6253, 0xCF2D, 0xCF2E, 0x6252, 0,
- 0, 0x6254, 0, 0, 0x787A, 0xCF30, 0xCF31, 0,
- 0, 0, 0xF22E, 0, 0, 0, 0x6256, 0xF22F,
- 0x6255, 0, 0xF230, 0, 0xF231, 0x4A4D, 0, 0xCF35,
- 0, 0xF232, 0x787B, 0, 0x3D56, 0x4E46, 0xCF37, 0xCF38,
- 0x6257, 0xCF39, 0, 0x4637, 0, 0xCF3A, 0x6258, 0,
- 0, 0x6259, 0, 0x625D, 0x625B, 0x625C, 0xCF3B, 0x625A,
-};
static const unsigned short utf8_to_euc_E79F[] = {
0, 0, 0, 0xCF3C, 0, 0, 0, 0x625E,
0, 0xCF3D, 0, 0, 0, 0x625F, 0, 0,
@@ -8718,16 +4679,6 @@ static const unsigned short utf8_to_euc_E79F[] = {
0xCF49, 0xCF4A, 0, 0x4050, 0xCF4B, 0, 0, 0,
0xCF4C, 0, 0, 0xCF4D, 0x6265, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E79F_x0213[] = {
- 0, 0, 0, 0xCF3C, 0, 0, 0, 0x625E,
- 0, 0xCF3D, 0, 0, 0, 0x625F, 0, 0,
- 0, 0xCF3E, 0xCF3F, 0, 0, 0xCF40, 0, 0x6260,
- 0, 0xCF41, 0x6261, 0x4C37, 0x6262, 0, 0xF233, 0xF234,
- 0x787C, 0, 0x4C70, 0x6263, 0xF235, 0x434E, 0xF236, 0x476A,
- 0, 0x366B, 0xF237, 0, 0xF238, 0x433B, 0x6264, 0x363A,
- 0xF23A, 0xCF4A, 0, 0x4050, 0xF23B, 0, 0, 0,
- 0xCF4C, 0, 0, 0xF23C, 0x6265, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E7A0[] = {
0, 0, 0x3A3D, 0, 0, 0xCF4E, 0xCF4F, 0,
0, 0xCF50, 0, 0, 0x6266, 0xCF51, 0xCF52, 0,
@@ -8738,16 +4689,6 @@ static const unsigned short utf8_to_euc_E7A0[] = {
0xCF5A, 0, 0x4B24, 0, 0x474B, 0xCF5B, 0, 0xCF5C,
0, 0, 0x4557, 0, 0, 0, 0, 0x395C,
};
-static const unsigned short utf8_to_euc_E7A0_x0213[] = {
- 0, 0, 0x3A3D, 0, 0, 0xF23E, 0xF23F, 0,
- 0, 0xF240, 0, 0, 0x6266, 0xF241, 0xCF52, 0,
- 0, 0xCF53, 0x6267, 0, 0x3826, 0x3A55, 0, 0,
- 0, 0xF242, 0, 0, 0, 0xCF54, 0, 0,
- 0x6269, 0xF243, 0xCF56, 0xCF57, 0, 0x4556, 0x3A56, 0x354E,
- 0, 0, 0, 0, 0xF244, 0x787D, 0xCF59, 0,
- 0xCF5A, 0, 0x4B24, 0, 0x474B, 0xCF5B, 0, 0xCF5C,
- 0, 0, 0x4557, 0, 0, 0, 0, 0x395C,
-};
static const unsigned short utf8_to_euc_E7A1[] = {
0, 0, 0, 0xCF5D, 0xCF5E, 0x626B, 0, 0xCF5F,
0xCF60, 0, 0, 0, 0xCF61, 0, 0xCF62, 0,
@@ -8758,16 +4699,6 @@ static const unsigned short utf8_to_euc_E7A1[] = {
0, 0, 0x4823, 0, 0x626D, 0, 0, 0,
0, 0, 0xCF6D, 0, 0x626F, 0, 0xCF6E, 0,
};
-static const unsigned short utf8_to_euc_E7A1_x0213[] = {
- 0, 0, 0, 0x7921, 0xCF5E, 0x626B, 0, 0xF245,
- 0xCF60, 0, 0, 0, 0xCF61, 0, 0x7922, 0x7923,
- 0, 0x7924, 0xCF63, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0xCF64, 0x3E4B, 0xCF65, 0,
- 0xCF66, 0xCF67, 0, 0xCF68, 0xF246, 0, 0, 0,
- 0x7925, 0, 0xF247, 0x4E32, 0x3945, 0, 0x7926, 0x3827,
- 0, 0, 0x4823, 0, 0x626D, 0, 0, 0,
- 0, 0, 0xCF6D, 0, 0x626F, 0, 0xCF6E, 0,
-};
static const unsigned short utf8_to_euc_E7A2[] = {
0, 0x386B, 0, 0, 0, 0, 0x626E, 0x4476,
0, 0, 0xCF6F, 0, 0x6271, 0x3337, 0x626C, 0xCF70,
@@ -8778,16 +4709,6 @@ static const unsigned short utf8_to_euc_E7A2[] = {
0xCF7B, 0xCF7C, 0xCF7D, 0xCF7E, 0, 0x6273, 0, 0,
0, 0, 0x334E, 0xD021, 0x627B, 0xD022, 0x627A, 0xD023,
};
-static const unsigned short utf8_to_euc_E7A2_x0213[] = {
- 0, 0x386B, 0, 0, 0, 0, 0x626E, 0x4476,
- 0, 0, 0xF249, 0, 0x6271, 0x3337, 0x626C, 0xCF70,
- 0, 0x486A, 0, 0x3130, 0xF24A, 0x3A6C, 0, 0x4F52,
- 0xCF72, 0, 0x6270, 0, 0, 0xF24C, 0xF24D, 0xF24E,
- 0, 0xCF73, 0, 0x6272, 0xF24B, 0, 0, 0x4A4B,
- 0xCF78, 0x4059, 0x6274, 0, 0xCF79, 0x792A, 0, 0x6275,
- 0x7928, 0xCF7C, 0xCF7D, 0xCF7E, 0, 0x6273, 0, 0,
- 0, 0, 0x334E, 0xF24F, 0x627B, 0xD022, 0x627A, 0xD023,
-};
static const unsigned short utf8_to_euc_E7A3[] = {
0, 0x3C27, 0, 0, 0, 0x627C, 0x6277, 0xD024,
0xD025, 0xD026, 0x627D, 0x6278, 0xD027, 0, 0xD028, 0,
@@ -8798,16 +4719,6 @@ static const unsigned short utf8_to_euc_E7A3[] = {
0, 0, 0xD034, 0xD035, 0x6324, 0, 0xD037, 0xD038,
0, 0, 0xD039, 0xD03A, 0, 0x6323, 0, 0xD03B,
};
-static const unsigned short utf8_to_euc_E7A3_x0213[] = {
- 0, 0x3C27, 0, 0, 0, 0x627C, 0x6277, 0xD024,
- 0xF250, 0xD026, 0x627D, 0x6278, 0xF251, 0, 0xF252, 0,
- 0x4858, 0x6276, 0xD029, 0xD02A, 0x6279, 0xF253, 0xD02C, 0,
- 0, 0, 0x6322, 0xD02E, 0, 0, 0, 0xD02F,
- 0xF254, 0xF255, 0, 0, 0x792B, 0, 0xF256, 0x6321,
- 0x4B61, 0, 0xD033, 0, 0x627E, 0, 0, 0x306B,
- 0, 0, 0x792C, 0xD035, 0x6324, 0, 0xD037, 0x792E,
- 0, 0xF257, 0xF258, 0xF259, 0, 0x6323, 0xF25A, 0xD03B,
-};
static const unsigned short utf8_to_euc_E7A4[] = {
0xD036, 0x3E4C, 0, 0, 0, 0, 0xD03C, 0x6325,
0, 0, 0, 0, 0xD03D, 0, 0x4143, 0,
@@ -8818,16 +4729,6 @@ static const unsigned short utf8_to_euc_E7A4[] = {
0xF454, 0xD048, 0, 0, 0xD049, 0xD04A, 0, 0,
0, 0, 0x3C28, 0xD04B, 0x4E69, 0xD04C, 0x3C52, 0xD04D,
};
-static const unsigned short utf8_to_euc_E7A4_x0213[] = {
- 0x792D, 0x3E4C, 0, 0, 0, 0, 0xD03C, 0x6325,
- 0, 0, 0, 0, 0xD03D, 0, 0x4143, 0,
- 0xF25C, 0x6327, 0x6326, 0, 0, 0, 0, 0,
- 0, 0x6328, 0xD03F, 0xF25D, 0x792F, 0, 0xD041, 0xD042,
- 0xD043, 0, 0, 0, 0, 0xF25F, 0x6268, 0xD045,
- 0, 0xD046, 0x626A, 0x632A, 0x6329, 0xD047, 0x7930, 0,
- 0xF25E, 0x7931, 0, 0, 0x7932, 0xD04A, 0, 0,
- 0, 0, 0x3C28, 0xF260, 0x4E69, 0xD04C, 0x3C52, 0xD04D,
-};
static const unsigned short utf8_to_euc_E7A5[] = {
0x632B, 0x3737, 0, 0, 0xD04E, 0xD04F, 0xD050, 0x3540,
0x3527, 0x3B63, 0xD051, 0xD052, 0, 0, 0, 0xD053,
@@ -8838,16 +4739,6 @@ static const unsigned short utf8_to_euc_E7A5[] = {
0, 0, 0xD05C, 0, 0, 0, 0, 0x4578,
0, 0xD05D, 0x6332, 0xD05E, 0xD05F, 0, 0xD060, 0x6333,
};
-static const unsigned short utf8_to_euc_E7A5_x0213[] = {
- 0x632B, 0x3737, 0, 0, 0xD04E, 0x7935, 0x7936, 0x3540,
- 0x3527, 0x3B63, 0xF261, 0xD052, 0, 0, 0, 0xD053,
- 0x4D34, 0xD054, 0, 0x6331, 0xD055, 0x6330, 0x4144, 0x632D,
- 0xF262, 0, 0x632F, 0xF263, 0x793A, 0x3D4B, 0x3F40, 0x632E,
- 0x632C, 0, 0x472A, 0, 0, 0x3E4D, 0, 0xF265,
- 0x493C, 0xD05A, 0, 0xD05B, 0, 0x3A57, 0, 0,
- 0, 0, 0xF266, 0, 0, 0, 0, 0x4578,
- 0, 0x793E, 0x6332, 0xD05E, 0xD05F, 0, 0xD060, 0x6333,
-};
static const unsigned short utf8_to_euc_E7A6[] = {
0x6349, 0x3658, 0, 0, 0x4F3D, 0x4135, 0, 0,
0, 0, 0x6334, 0xD061, 0xD062, 0x3252, 0x4477, 0x4A21,
@@ -8858,16 +4749,6 @@ static const unsigned short utf8_to_euc_E7A6[] = {
0x4729, 0xD070, 0, 0x633A, 0xD071, 0, 0, 0,
0xD072, 0x633B, 0x633C, 0xD073, 0, 0x3659, 0x3253, 0x4645,
};
-static const unsigned short utf8_to_euc_E7A6_x0213[] = {
- 0x6349, 0x3658, 0, 0, 0x4F3D, 0x4135, 0, 0,
- 0, 0, 0x6334, 0xD061, 0xD062, 0x3252, 0x4477, 0x4A21,
- 0, 0xD063, 0, 0xD064, 0xF267, 0xF268, 0xF269, 0,
- 0x7942, 0, 0, 0xF26A, 0xD06A, 0x6335, 0, 0,
- 0, 0xF26B, 0, 0, 0, 0, 0x357A, 0x6336,
- 0xD06C, 0xF26C, 0x6338, 0xD06E, 0, 0, 0x6339, 0xD06F,
- 0x4729, 0x7943, 0, 0x633A, 0xF26D, 0, 0, 0,
- 0x7944, 0x633B, 0x633C, 0xF26E, 0, 0x3659, 0x3253, 0x4645,
-};
static const unsigned short utf8_to_euc_E7A7[] = {
0x3D28, 0x3B64, 0xD074, 0, 0xD075, 0, 0, 0xD076,
0xD077, 0x633D, 0xD078, 0x3D29, 0, 0, 0, 0xD079,
@@ -8878,16 +4759,6 @@ static const unsigned short utf8_to_euc_E7A7[] = {
0x3E4E, 0xD127, 0, 0, 0, 0, 0, 0,
0xD128, 0, 0, 0x305C, 0xD129, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E7A7_x0213[] = {
- 0x3D28, 0x3B64, 0xF26F, 0, 0xD075, 0, 0, 0xF270,
- 0x7945, 0x633D, 0x7946, 0x3D29, 0xF271, 0xF272, 0, 0xD079,
- 0, 0x324A, 0x4943, 0, 0x7948, 0x633E, 0xF273, 0,
- 0x486B, 0, 0xD07C, 0, 0, 0xD07D, 0x7949, 0x4145,
- 0xD121, 0x6341, 0xD122, 0x6342, 0x4769, 0xD123, 0x3F41, 0x633F,
- 0, 0x4361, 0xD124, 0x794A, 0x6340, 0x794B, 0, 0,
- 0x3E4E, 0xD127, 0, 0, 0, 0, 0, 0,
- 0xD128, 0, 0, 0x305C, 0xD129, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E7A8[] = {
0x3529, 0, 0xD12A, 0xD12B, 0, 0, 0, 0xD12C,
0x6343, 0xD12D, 0xD12E, 0x4478, 0xD12F, 0x6344, 0x4047, 0,
@@ -8898,16 +4769,6 @@ static const unsigned short utf8_to_euc_E7A8[] = {
0xD139, 0x634A, 0x3070, 0, 0xD13A, 0xD13B, 0, 0x634D,
0xD13C, 0xD13D, 0xD13E, 0x634B, 0x3254, 0x374E, 0x634C, 0x3946,
};
-static const unsigned short utf8_to_euc_E7A8_x0213[] = {
- 0x3529, 0, 0xD12A, 0x794C, 0, 0, 0, 0xD12C,
- 0x6343, 0xD12D, 0xF278, 0x4478, 0xD12F, 0x6344, 0x4047, 0,
- 0, 0xF279, 0, 0, 0x4C2D, 0xF27A, 0, 0x4923,
- 0x6345, 0x6346, 0x4355, 0xF27B, 0x4E47, 0, 0xF27C, 0x6348,
- 0x6347, 0xD134, 0, 0, 0, 0, 0, 0xD135,
- 0, 0, 0, 0xD136, 0, 0xF27E, 0x3C6F, 0xD138,
- 0xD139, 0x634A, 0x3070, 0, 0xD13A, 0xD13B, 0, 0x634D,
- 0xF321, 0x794E, 0xD13E, 0x634B, 0x3254, 0x374E, 0x634C, 0x3946,
-};
static const unsigned short utf8_to_euc_E7A9[] = {
0x3972, 0, 0x4A66, 0x634E, 0xD13F, 0xD140, 0x4B54, 0xD141,
0xD142, 0x6350, 0, 0, 0xD143, 0x4051, 0x314F, 0x323A,
@@ -8918,16 +4779,6 @@ static const unsigned short utf8_to_euc_E7A9[] = {
0x6355, 0, 0, 0, 0x376A, 0xD14F, 0x3566, 0,
0xD150, 0x6356, 0x3675, 0, 0, 0x6357, 0xD151, 0x407C,
};
-static const unsigned short utf8_to_euc_E7A9_x0213[] = {
- 0x3972, 0, 0x4A66, 0x634E, 0xD13F, 0xD140, 0x4B54, 0xF322,
- 0xD142, 0x6350, 0, 0, 0xF323, 0x4051, 0x314F, 0x323A,
- 0x302C, 0, 0, 0, 0, 0xD144, 0xF324, 0x634F,
- 0, 0xF325, 0, 0, 0xF326, 0x794F, 0, 0xF327,
- 0xF328, 0x6351, 0x6352, 0x3E77, 0, 0xD14B, 0, 0xF329,
- 0, 0x6353, 0xF32A, 0x334F, 0, 0x7950, 0, 0,
- 0x6355, 0, 0, 0, 0x376A, 0xF32B, 0x3566, 0,
- 0xF32C, 0x6356, 0x3675, 0, 0, 0x6357, 0xD151, 0x407C,
-};
static const unsigned short utf8_to_euc_E7AA[] = {
0xD152, 0x464D, 0xD153, 0x4060, 0x3A75, 0xD154, 0xD155, 0,
0x6358, 0, 0xD156, 0xD157, 0, 0, 0, 0,
@@ -8938,16 +4789,6 @@ static const unsigned short utf8_to_euc_E7AA[] = {
0x635F, 0, 0, 0xD15F, 0, 0xD160, 0x6360, 0,
0, 0xD161, 0x312E, 0xD162, 0xD163, 0, 0, 0x6363,
};
-static const unsigned short utf8_to_euc_E7AA_x0213[] = {
- 0xD152, 0x464D, 0xF32D, 0x4060, 0x3A75, 0x7952, 0xD155, 0,
- 0x6358, 0, 0xF32E, 0xD157, 0, 0, 0, 0,
- 0xF32F, 0xD159, 0x4362, 0x416B, 0xD15A, 0x635A, 0x635C, 0x6359,
- 0x635B, 0, 0, 0, 0, 0, 0xD15B, 0x3722,
- 0x7953, 0, 0, 0xF330, 0, 0, 0, 0,
- 0, 0x635D, 0x3726, 0, 0xF331, 0, 0x3567, 0x4D52,
- 0x635F, 0, 0, 0x7955, 0, 0xD160, 0x6360, 0,
- 0, 0xF334, 0x312E, 0x7956, 0xF335, 0, 0xF336, 0x6363,
-};
static const unsigned short utf8_to_euc_E7AB[] = {
0, 0, 0, 0x3376, 0x6362, 0x6361, 0xD164, 0x6365,
0x635E, 0xD165, 0x6366, 0x4E29, 0xD166, 0x6367, 0xD167, 0x6368,
@@ -8958,16 +4799,6 @@ static const unsigned short utf8_to_euc_E7AB[] = {
0x6372, 0xD16E, 0, 0, 0xD16F, 0, 0x3625, 0,
0x513F, 0x435D, 0x3C33, 0xD170, 0, 0xD171, 0xD172, 0x3448,
};
-static const unsigned short utf8_to_euc_E7AB_x0213[] = {
- 0, 0, 0, 0x3376, 0x6362, 0x6361, 0xD164, 0x6365,
- 0x635E, 0xD165, 0x6366, 0x4E29, 0xF338, 0x6367, 0x7957, 0x6368,
- 0, 0xF339, 0x5474, 0x636A, 0, 0x6369, 0, 0,
- 0, 0x636B, 0x636C, 0xD169, 0x4E35, 0x636D, 0, 0x706F,
- 0x3E4F, 0x636E, 0x636F, 0x3D57, 0, 0x4638, 0x6370, 0xF33A,
- 0xF33B, 0xD16B, 0x4328, 0x7958, 0xD16D, 0x6371, 0, 0x433C,
- 0x6372, 0xD16E, 0, 0, 0xF33C, 0, 0x3625, 0,
- 0x513F, 0x435D, 0x3C33, 0xD170, 0, 0x7959, 0xD172, 0x3448,
-};
static const unsigned short utf8_to_euc_E7AC[] = {
0, 0, 0x6373, 0, 0x6422, 0, 0x6376, 0xD173,
0x3568, 0, 0x6375, 0x6424, 0, 0, 0, 0x6374,
@@ -8978,16 +4809,6 @@ static const unsigned short utf8_to_euc_E7AC[] = {
0xD17E, 0xD221, 0, 0x6377, 0xD222, 0x637B, 0x637D, 0,
0, 0x3A7B, 0, 0, 0, 0xD223, 0, 0xD224,
};
-static const unsigned short utf8_to_euc_E7AC_x0213[] = {
- 0, 0, 0x6373, 0, 0x6422, 0, 0x6376, 0xF33F,
- 0x3568, 0, 0x6375, 0x6424, 0, 0, 0, 0x6374,
- 0, 0x3E50, 0x795A, 0, 0xD174, 0, 0, 0,
- 0x6378, 0x6379, 0, 0x452B, 0, 0, 0x637A, 0xD175,
- 0x335E, 0, 0, 0xD176, 0, 0x3F5A, 0x4964, 0xF342,
- 0x637C, 0xD178, 0xF343, 0xD17A, 0x4268, 0x795B, 0xF344, 0xF345,
- 0xD17E, 0xF346, 0, 0x6377, 0xD222, 0x637B, 0x637D, 0,
- 0, 0x3A7B, 0, 0x795C, 0, 0xF341, 0, 0xD224,
-};
static const unsigned short utf8_to_euc_E7AD[] = {
0xD225, 0xD226, 0, 0, 0, 0x6426, 0x492E, 0xD227,
0x4826, 0x4579, 0, 0x365A, 0x6425, 0x6423, 0xD228, 0x4835,
@@ -8998,16 +4819,6 @@ static const unsigned short utf8_to_euc_E7AD[] = {
0x642B, 0x642C, 0xD231, 0xD232, 0x6429, 0x6427, 0, 0xD233,
0, 0, 0x6421, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E7AD_x0213[] = {
- 0xD225, 0xF34A, 0, 0, 0, 0x6426, 0x492E, 0x795D,
- 0x4826, 0x4579, 0, 0x365A, 0x6425, 0x6423, 0x795E, 0x4835,
- 0x637E, 0x435E, 0x457B, 0, 0x457A, 0xF34C, 0x3A76, 0,
- 0, 0, 0, 0, 0, 0x6438, 0, 0,
- 0x795F, 0, 0, 0, 0xF34E, 0x6428, 0xF34F, 0x642A,
- 0, 0xF350, 0xD22E, 0, 0x642D, 0x7960, 0x642E, 0x7961,
- 0x642B, 0x642C, 0x7962, 0xF351, 0x6429, 0x6427, 0, 0xD233,
- 0, 0xF34D, 0x6421, 0, 0, 0, 0, 0xF349,
-};
static const unsigned short utf8_to_euc_E7AE[] = {
0, 0, 0, 0, 0xD234, 0, 0x4A4F, 0x3255,
0, 0xD235, 0, 0x6435, 0, 0x6432, 0xD236, 0x6437,
@@ -9018,16 +4829,6 @@ static const unsigned short utf8_to_euc_E7AE[] = {
0xD240, 0x4822, 0xD241, 0, 0x643E, 0xD242, 0xD243, 0,
0x4824, 0, 0xD244, 0xD245, 0xD246, 0xD247, 0, 0,
};
-static const unsigned short utf8_to_euc_E7AE_x0213[] = {
- 0, 0, 0, 0, 0xD234, 0, 0x4A4F, 0x3255,
- 0, 0xD235, 0, 0x6435, 0, 0x6432, 0xD236, 0x6437,
- 0xF354, 0xF355, 0x6436, 0, 0x4773, 0x4C27, 0xD239, 0x3B3B,
- 0x6430, 0x6439, 0x6434, 0xF356, 0x6433, 0x642F, 0x7963, 0x6431,
- 0xD23C, 0x3449, 0, 0, 0, 0xD23D, 0, 0,
- 0, 0, 0x433D, 0, 0xD23E, 0x407D, 0, 0xF358,
- 0xD240, 0x4822, 0xD241, 0, 0x643E, 0xF359, 0xD243, 0,
- 0x4824, 0, 0xD244, 0xD245, 0xF35A, 0xD247, 0, 0,
-};
static const unsigned short utf8_to_euc_E7AF[] = {
0x4061, 0x643B, 0xD248, 0, 0x484F, 0xD249, 0x643F, 0x4A53,
0xD24A, 0x435B, 0xD24B, 0x643A, 0x643C, 0, 0, 0x643D,
@@ -9038,16 +4839,6 @@ static const unsigned short utf8_to_euc_E7AF[] = {
0, 0, 0xD254, 0x644A, 0xD255, 0xD256, 0x644E, 0x644B,
0xD257, 0xD258, 0xD259, 0, 0xD25A, 0, 0xD25B, 0,
};
-static const unsigned short utf8_to_euc_E7AF_x0213[] = {
- 0x4061, 0x643B, 0xD248, 0, 0x484F, 0xF35B, 0x643F, 0x4A53,
- 0xD24A, 0x435B, 0xF35C, 0x643A, 0x643C, 0, 0, 0x643D,
- 0, 0, 0, 0, 0xF35F, 0, 0xF360, 0x7965,
- 0, 0x7966, 0xF361, 0xD251, 0, 0x6440, 0, 0,
- 0x3C44, 0, 0, 0, 0x4646, 0x6445, 0x6444, 0,
- 0xD252, 0x6441, 0xF362, 0, 0, 0x4F36, 0, 0,
- 0xF363, 0, 0xD254, 0x644A, 0xD255, 0xD256, 0x644E, 0x644B,
- 0xD257, 0xD258, 0xD259, 0, 0xD25A, 0, 0xD25B, 0,
-};
static const unsigned short utf8_to_euc_E7B0[] = {
0x6447, 0xD25C, 0xD25D, 0xD25E, 0xD25F, 0, 0xD260, 0x6448,
0, 0xD261, 0, 0xD262, 0xD263, 0x644D, 0xD264, 0xD265,
@@ -9058,16 +4849,6 @@ static const unsigned short utf8_to_euc_E7B0[] = {
0, 0xD26D, 0, 0xD26E, 0xD26F, 0, 0xD270, 0x6453,
0x4876, 0xD271, 0xD272, 0, 0, 0x6455, 0x4E7C, 0x4A6D,
};
-static const unsigned short utf8_to_euc_E7B0_x0213[] = {
- 0x6447, 0x7967, 0xD25D, 0xF364, 0xD25F, 0, 0xD260, 0x6448,
- 0, 0xD261, 0, 0xF365, 0xD263, 0x644D, 0xF366, 0xF367,
- 0, 0x6442, 0x5255, 0x6449, 0x6443, 0, 0, 0x644C,
- 0, 0xD266, 0, 0xD267, 0, 0, 0x7969, 0x6452,
- 0x796A, 0x344A, 0, 0x644F, 0, 0xD269, 0xF368, 0x6450,
- 0xD26B, 0, 0x6451, 0x6454, 0xD26C, 0, 0, 0,
- 0, 0x7968, 0, 0x796B, 0xD26F, 0, 0x796C, 0x6453,
- 0x4876, 0xD271, 0xD272, 0, 0, 0x6455, 0x4E7C, 0x4A6D,
-};
static const unsigned short utf8_to_euc_E7B1[] = {
0x645A, 0, 0, 0x6457, 0, 0, 0xD273, 0,
0, 0, 0xD274, 0, 0x6456, 0x4052, 0, 0x6459,
@@ -9078,16 +4859,6 @@ static const unsigned short utf8_to_euc_E7B1[] = {
0xD327, 0, 0xD328, 0x4A46, 0, 0x6462, 0, 0,
0, 0xD329, 0, 0, 0xD32A, 0xD32B, 0x4C62, 0,
};
-static const unsigned short utf8_to_euc_E7B1_x0213[] = {
- 0x645A, 0, 0, 0x6457, 0, 0xF369, 0xD273, 0,
- 0, 0, 0xF36A, 0, 0x6456, 0x4052, 0, 0x6459,
- 0x645B, 0xF36B, 0xD277, 0xD278, 0x6458, 0xD275, 0x645F, 0xF36C,
- 0x645C, 0x796F, 0xD27A, 0xD27B, 0xD27C, 0xD27D, 0xF36D, 0x645D,
- 0x6446, 0xF36E, 0, 0xD322, 0x645E, 0x6460, 0, 0xD323,
- 0, 0xF36F, 0, 0, 0x6461, 0x7970, 0xF370, 0xF371,
- 0xF372, 0, 0xD328, 0x4A46, 0, 0x6462, 0, 0,
- 0, 0x7971, 0, 0, 0xD32A, 0xD32B, 0x4C62, 0,
-};
static const unsigned short utf8_to_euc_E7B2[] = {
0, 0x364E, 0x3729, 0x6463, 0, 0, 0xD32C, 0xD32D,
0, 0x4A34, 0, 0x3F68, 0, 0x4C30, 0, 0xD32E,
@@ -9098,16 +4869,6 @@ static const unsigned short utf8_to_euc_E7B2[] = {
0xD333, 0x646D, 0x646C, 0x646B, 0, 0, 0xD334, 0xD335,
0, 0x646F, 0xD336, 0xD337, 0xD338, 0x6470, 0x403A, 0xD339,
};
-static const unsigned short utf8_to_euc_E7B2_x0213[] = {
- 0, 0x364E, 0x3729, 0x6463, 0, 0, 0xD32C, 0xD32D,
- 0, 0x4A34, 0, 0x3F68, 0, 0x4C30, 0, 0x7972,
- 0x6464, 0, 0x4E33, 0, 0x7973, 0x4774, 0, 0x4146,
- 0x4734, 0, 0, 0x3D4D, 0, 0, 0xD330, 0x3040,
- 0x7974, 0x6469, 0x6467, 0, 0x6465, 0x3421, 0xF376, 0x3E51,
- 0x646A, 0, 0, 0x6468, 0, 0x6466, 0x646E, 0,
- 0xD333, 0x646D, 0x646C, 0x646B, 0, 0, 0xF378, 0xF379,
- 0, 0x646F, 0xD336, 0xD337, 0x7975, 0x6470, 0x403A, 0xF37A,
-};
static const unsigned short utf8_to_euc_E7B3[] = {
0x6471, 0, 0x6473, 0, 0xD33A, 0x6472, 0, 0xD33B,
0xD33C, 0xD33D, 0x3852, 0, 0, 0xD33E, 0x4138, 0xD33F,
@@ -9118,16 +4879,6 @@ static const unsigned short utf8_to_euc_E7B3[] = {
0, 0, 0x647A, 0, 0x647B, 0xD34A, 0x647C, 0,
0x3B65, 0, 0x647D, 0x374F, 0, 0, 0x356A, 0,
};
-static const unsigned short utf8_to_euc_E7B3_x0213[] = {
- 0x6471, 0, 0x6473, 0, 0xF37C, 0x6472, 0, 0xD33B,
- 0xF37E, 0xD33D, 0x3852, 0, 0, 0xF421, 0x4138, 0xD33F,
- 0, 0, 0x6475, 0xD340, 0xD341, 0x7976, 0x457C, 0xF423,
- 0x6474, 0x7977, 0xD345, 0, 0x6476, 0x7978, 0x4A35, 0x416C,
- 0x3947, 0, 0x6477, 0, 0, 0, 0xF425, 0x4E48,
- 0, 0xD348, 0, 0xF426, 0, 0, 0, 0x6479,
- 0, 0, 0x647A, 0, 0x647B, 0xF428, 0x647C, 0,
- 0x3B65, 0, 0x647D, 0x374F, 0, 0, 0x356A, 0,
-};
static const unsigned short utf8_to_euc_E7B4[] = {
0x352A, 0, 0x6521, 0xD34B, 0x4C73, 0x3948, 0x647E, 0xD34C,
0xD34D, 0xD34E, 0x6524, 0x4C66, 0, 0x473C, 0, 0xD34F,
@@ -9138,16 +4889,6 @@ static const unsigned short utf8_to_euc_E7B4[] = {
0x3A59, 0xD35A, 0x6528, 0x3F42, 0, 0x652A, 0, 0,
0, 0x3E52, 0x3A30, 0, 0xD35B, 0xD35C, 0xD35D, 0x6529,
};
-static const unsigned short utf8_to_euc_E7B4_x0213[] = {
- 0x352A, 0, 0x6521, 0xF429, 0x4C73, 0x3948, 0x647E, 0x7979,
- 0x797A, 0xF42A, 0x6524, 0x4C66, 0, 0x473C, 0, 0xD34F,
- 0x4933, 0xD350, 0xF42C, 0x797B, 0x3D63, 0x6523, 0xD353, 0x3C53,
- 0x3949, 0x3B66, 0x3569, 0x4A36, 0x6522, 0x797C, 0xF42D, 0,
- 0x4147, 0x4B42, 0x3A77, 0x797D, 0, 0, 0xD357, 0,
- 0, 0, 0xD358, 0x3B67, 0x445D, 0xD359, 0x6527, 0x4E5F,
- 0x3A59, 0x797E, 0x6528, 0x3F42, 0, 0x652A, 0, 0,
- 0, 0x3E52, 0x3A30, 0, 0xD35B, 0xF430, 0xF431, 0x6529,
-};
static const unsigned short utf8_to_euc_E7B5[] = {
0xD35E, 0xD35F, 0x3D2A, 0x383E, 0x4148, 0x6525, 0x652B, 0xD360,
0xD361, 0, 0, 0x6526, 0x3750, 0xD362, 0x652E, 0x6532,
@@ -9158,16 +4899,6 @@ static const unsigned short utf8_to_euc_E7B5[] = {
0xD36D, 0x457D, 0x652F, 0x652C, 0, 0x3328, 0x4064, 0,
0xD36E, 0x3828, 0xD36F, 0xD370, 0, 0x6538, 0, 0xD371,
};
-static const unsigned short utf8_to_euc_E7B5_x0213[] = {
- 0xF432, 0x7A21, 0x3D2A, 0x383E, 0x4148, 0x6525, 0x652B, 0xF433,
- 0x7A22, 0, 0, 0x6526, 0x3750, 0xD362, 0x652E, 0x6532,
- 0x376B, 0xD363, 0, 0x7A23, 0, 0, 0x652D, 0xD365,
- 0, 0xF437, 0xF438, 0x6536, 0x7A24, 0xD369, 0x394A, 0,
- 0, 0x4D6D, 0x303C, 0x6533, 0, 0xD36A, 0x356B, 0xD36B,
- 0x6530, 0, 0xF439, 0, 0, 0, 0x6531, 0,
- 0xF43A, 0x457D, 0x652F, 0x652C, 0, 0x3328, 0x4064, 0,
- 0xD36E, 0x3828, 0x7A25, 0xD370, 0, 0x6538, 0, 0xF43C,
-};
static const unsigned short utf8_to_euc_E7B6[] = {
0, 0xD372, 0xD373, 0xD374, 0, 0xD375, 0xD376, 0,
0xD377, 0x6535, 0, 0xD378, 0xD379, 0xD37A, 0, 0x6537,
@@ -9178,16 +4909,6 @@ static const unsigned short utf8_to_euc_E7B6[] = {
0x6547, 0x394B, 0x4C56, 0xD425, 0x4456, 0x653D, 0xD426, 0xD427,
0x6545, 0xD428, 0x653A, 0x433E, 0, 0x653F, 0x303D, 0x4C4A,
};
-static const unsigned short utf8_to_euc_E7B6_x0213[] = {
- 0, 0xD372, 0xD373, 0x7A26, 0, 0xD375, 0xF43E, 0,
- 0xF43F, 0x6535, 0, 0x7A27, 0xF440, 0xD37A, 0, 0x6537,
- 0, 0xD37B, 0, 0x6534, 0, 0, 0xD37C, 0xF441,
- 0, 0x3751, 0x4233, 0x6539, 0x416E, 0xF443, 0xD421, 0x6546,
- 0x7A28, 0, 0x6542, 0x653C, 0, 0, 0x7A29, 0xF444,
- 0, 0, 0xF445, 0x6540, 0x3C7A, 0x305D, 0x653B, 0x6543,
- 0x6547, 0x394B, 0x4C56, 0xD425, 0x4456, 0x653D, 0xF446, 0xF447,
- 0x6545, 0xD428, 0x653A, 0x433E, 0, 0x653F, 0x303D, 0x4C4A,
-};
static const unsigned short utf8_to_euc_E7B7[] = {
0, 0, 0xD429, 0xD42A, 0xD42B, 0xD42C, 0xD42D, 0x653E,
0, 0, 0x365B, 0x486C, 0xD42E, 0xD42F, 0xD430, 0x416D,
@@ -9198,16 +4919,6 @@ static const unsigned short utf8_to_euc_E7B7[] = {
0, 0xD43A, 0x654D, 0, 0x4E7D, 0xD43B, 0xD43C, 0,
0, 0xD43D, 0xD43E, 0x654C, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E7B7_x0213[] = {
- 0xF448, 0, 0x7A2A, 0xD42A, 0xD42B, 0xD42C, 0xD42D, 0x653E,
- 0, 0, 0x365B, 0x486C, 0x7A2B, 0xD42F, 0xD430, 0x416D,
- 0, 0x4E50, 0x3D6F, 0, 0, 0x656E, 0x7A2C, 0xF449,
- 0x6548, 0xF44A, 0x407E, 0, 0x6544, 0x6549, 0x654B, 0,
- 0x4479, 0x654E, 0xD434, 0x7A2D, 0x654A, 0xD435, 0xF44B, 0,
- 0x4A54, 0x344B, 0xD437, 0xD438, 0x4C4B, 0xD439, 0, 0x305E,
- 0, 0xF44C, 0x654D, 0, 0x4E7D, 0xD43B, 0xD43C, 0,
- 0, 0xF44D, 0xD43E, 0x654C, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E7B8[] = {
0xD433, 0x316F, 0, 0, 0x466C, 0x654F, 0, 0,
0xD43F, 0x6556, 0x6550, 0x6557, 0, 0, 0, 0,
@@ -9218,16 +4929,6 @@ static const unsigned short utf8_to_euc_E7B8[] = {
0, 0x6554, 0x6560, 0xD44C, 0, 0x655C, 0xD44D, 0x655F,
0, 0x655D, 0x6561, 0x655B, 0, 0x6541, 0x4053, 0xD44E,
};
-static const unsigned short utf8_to_euc_E7B8_x0213[] = {
- 0xD433, 0x316F, 0, 0, 0x466C, 0x654F, 0, 0,
- 0x7A30, 0x6556, 0x6550, 0x6557, 0, 0, 0, 0,
- 0xF451, 0x7A31, 0x6553, 0, 0, 0x7A32, 0, 0xF452,
- 0, 0, 0, 0x477B, 0xD444, 0xF453, 0x3C4A, 0x6555,
- 0xF454, 0x6552, 0x6558, 0x6551, 0, 0, 0x3D44, 0xF455,
- 0x7A2F, 0, 0, 0x4B25, 0xF456, 0xD44A, 0x3D4C, 0xD44B,
- 0, 0x6554, 0x6560, 0xD44C, 0, 0x655C, 0xD44D, 0x655F,
- 0, 0x655D, 0x6561, 0x655B, 0, 0x6541, 0x4053, 0xD44E,
-};
static const unsigned short utf8_to_euc_E7B9[] = {
0, 0x484B, 0, 0x655E, 0xD44F, 0xD450, 0x6559, 0xD451,
0, 0, 0x4121, 0x3752, 0, 0x3D2B, 0xD452, 0,
@@ -9238,16 +4939,6 @@ static const unsigned short utf8_to_euc_E7B9[] = {
0x372B, 0, 0, 0xD45D, 0, 0, 0, 0,
0xD45E, 0x6568, 0, 0x656C, 0x656B, 0x656F, 0xD45F, 0x6571,
};
-static const unsigned short utf8_to_euc_E7B9_x0213[] = {
- 0, 0x484B, 0, 0x655E, 0xD44F, 0xF457, 0x6559, 0x7A34,
- 0, 0, 0x4121, 0x3752, 0, 0x3D2B, 0xD452, 0,
- 0xD453, 0, 0x7A35, 0, 0x3F25, 0x4136, 0x6564, 0,
- 0xD455, 0x6566, 0x6567, 0, 0, 0x6563, 0x6565, 0xD456,
- 0, 0x7A36, 0xD458, 0, 0, 0xD459, 0x655A, 0x6562,
- 0, 0x656A, 0x6569, 0x7E7E, 0, 0x4B7A, 0xD45B, 0xD45C,
- 0x372B, 0, 0, 0xF458, 0, 0xF459, 0, 0,
- 0xD45E, 0x6568, 0, 0x656C, 0x656B, 0x656F, 0xF45A, 0x6571,
-};
static const unsigned short utf8_to_euc_E7BA[] = {
0, 0xD460, 0x3B3C, 0x656D, 0, 0, 0xD461, 0xD462,
0x6572, 0x6573, 0xD463, 0, 0x6574, 0xD464, 0x657A, 0x453B,
@@ -9258,16 +4949,6 @@ static const unsigned short utf8_to_euc_E7BA[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E7BA_x0213[] = {
- 0, 0xD460, 0x3B3C, 0x656D, 0, 0, 0xF45B, 0xF45C,
- 0x6572, 0x6573, 0x7A37, 0, 0x6574, 0x7A38, 0x657A, 0x453B,
- 0x6576, 0xF45E, 0x6575, 0x6577, 0x6578, 0xD466, 0x6579, 0,
- 0xF45F, 0, 0xF460, 0x657B, 0x657C, 0xD469, 0xD46A, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E7BC[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -9278,16 +4959,6 @@ static const unsigned short utf8_to_euc_E7BC[] = {
0, 0, 0, 0, 0, 0, 0x344C, 0,
0x657D, 0, 0x657E, 0xD46C, 0xD46B, 0xD46D, 0xD46E, 0xD46F,
};
-static const unsigned short utf8_to_euc_E7BC_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0x344C, 0,
- 0x657D, 0, 0x657E, 0xF463, 0xF462, 0xD46D, 0xF464, 0xD46F,
-};
static const unsigned short utf8_to_euc_E7BD[] = {
0, 0, 0, 0xD470, 0xD471, 0x6621, 0, 0xD472,
0, 0, 0, 0, 0x6622, 0x6623, 0x6624, 0xD473,
@@ -9298,16 +4969,6 @@ static const unsigned short utf8_to_euc_E7BD[] = {
0x4833, 0xD521, 0x3D70, 0, 0, 0x474D, 0, 0x486D,
0x662F, 0x586D, 0, 0, 0, 0xD522, 0xD523, 0xD524,
};
-static const unsigned short utf8_to_euc_E7BD_x0213[] = {
- 0, 0, 0, 0xF465, 0xF466, 0x6621, 0, 0x7A39,
- 0, 0, 0, 0, 0x6622, 0x6623, 0x6624, 0xF467,
- 0x6625, 0x6626, 0xF46A, 0xD475, 0x6628, 0x6627, 0, 0,
- 0x6629, 0, 0, 0xD476, 0xD477, 0xD478, 0, 0x662A,
- 0x662B, 0xF46C, 0, 0xF46D, 0xF46E, 0xD47C, 0xD47D, 0x662E,
- 0x662C, 0x662D, 0x3A61, 0x3753, 0, 0xF46F, 0x4356, 0,
- 0x4833, 0xD521, 0x3D70, 0, 0, 0x474D, 0, 0x486D,
- 0x662F, 0x586D, 0, 0, 0, 0xF470, 0xF471, 0xD524,
-};
static const unsigned short utf8_to_euc_E7BE[] = {
0xD525, 0, 0x6630, 0x6632, 0, 0x4D65, 0x6631, 0x6634,
0x6633, 0, 0x4D53, 0xD526, 0x6635, 0xD527, 0x487E, 0xD528,
@@ -9318,16 +4979,6 @@ static const unsigned short utf8_to_euc_E7BE[] = {
0, 0, 0x663C, 0, 0xD533, 0, 0x663F, 0,
0x6640, 0x663D, 0, 0, 0xD534, 0x3129, 0, 0xD535,
};
-static const unsigned short utf8_to_euc_E7BE_x0213[] = {
- 0xD525, 0, 0x6630, 0x6632, 0, 0x4D65, 0x6631, 0x6634,
- 0x6633, 0, 0x4D53, 0xD526, 0x6635, 0xD527, 0x487E, 0xD528,
- 0xF473, 0x7A3B, 0, 0, 0x6636, 0, 0xF476, 0x7A3C,
- 0, 0, 0x6639, 0, 0xF477, 0x6638, 0x6637, 0,
- 0, 0xD52E, 0xD52F, 0x663A, 0x3732, 0, 0xD530, 0,
- 0x4122, 0x3541, 0xD531, 0, 0, 0xF478, 0x663E, 0x663B,
- 0, 0, 0x663C, 0, 0xD533, 0, 0x663F, 0,
- 0x6640, 0x663D, 0, 0, 0xD534, 0x3129, 0, 0x7A3D,
-};
static const unsigned short utf8_to_euc_E7BF[] = {
0xD536, 0x3227, 0, 0xD537, 0, 0x6642, 0x6643, 0,
0xD538, 0, 0x6644, 0, 0x4D62, 0, 0xD539, 0xD53A,
@@ -9338,16 +4989,6 @@ static const unsigned short utf8_to_euc_E7BF[] = {
0x344D, 0, 0xD543, 0x664A, 0, 0, 0, 0,
0, 0x664B, 0xD544, 0x4B5D, 0x4D63, 0xD545, 0xD546, 0xD547,
};
-static const unsigned short utf8_to_euc_E7BF_x0213[] = {
- 0xD536, 0x3227, 0, 0xF47A, 0, 0x6642, 0x6643, 0,
- 0xD538, 0, 0x6644, 0, 0x4D62, 0, 0x7A3E, 0xF47B,
- 0, 0, 0x3D2C, 0, 0x6646, 0x6645, 0, 0,
- 0, 0, 0, 0x7A3F, 0, 0, 0, 0x7A40,
- 0x3F69, 0x6647, 0, 0xF47C, 0, 0xF47D, 0x6648, 0,
- 0xD53F, 0x6649, 0, 0x3465, 0x7A41, 0, 0x7A42, 0xF47E,
- 0x344D, 0, 0xF521, 0x664A, 0, 0, 0, 0,
- 0, 0x664B, 0x7A43, 0x4B5D, 0x4D63, 0xD545, 0xD546, 0xD547,
-};
static const unsigned short utf8_to_euc_E880[] = {
0x4D54, 0x4F37, 0, 0x394D, 0x664E, 0x3C54, 0x664D, 0xD548,
0xD549, 0, 0xD54A, 0x664F, 0x3C29, 0xD54B, 0xD54C, 0xD54D,
@@ -9358,16 +4999,6 @@ static const unsigned short utf8_to_euc_E880[] = {
0xD55A, 0, 0, 0x3C2A, 0xD55B, 0xD55C, 0x4C6D, 0xD55D,
0, 0xD55E, 0xD55F, 0x6657, 0xD560, 0x433F, 0xD561, 0x6656,
};
-static const unsigned short utf8_to_euc_E880_x0213[] = {
- 0x4D54, 0x4F37, 0xF522, 0x394D, 0x664E, 0x3C54, 0x664D, 0xD548,
- 0xF524, 0, 0xF523, 0x664F, 0x3C29, 0xD54B, 0xF525, 0xD54D,
- 0x4251, 0xF526, 0x6650, 0xD54F, 0x7A45, 0x394C, 0xF527, 0x4C57,
- 0x6651, 0x6652, 0, 0, 0x6653, 0xD552, 0xD553, 0xD554,
- 0xD555, 0x6654, 0, 0, 0xF528, 0, 0x7A46, 0,
- 0x6655, 0, 0, 0, 0xF529, 0, 0xD559, 0,
- 0xF52A, 0, 0, 0x3C2A, 0xD55B, 0x7A47, 0x4C6D, 0x7A48,
- 0, 0xD55E, 0xD55F, 0x6657, 0x7A49, 0x433F, 0xD561, 0x6656,
-};
static const unsigned short utf8_to_euc_E881[] = {
0xD562, 0, 0, 0, 0xD563, 0, 0x6659, 0,
0, 0, 0x6658, 0, 0, 0, 0, 0,
@@ -9378,16 +5009,6 @@ static const unsigned short utf8_to_euc_E881[] = {
0x6662, 0xD568, 0x6661, 0x6660, 0x4430, 0xD569, 0x6663, 0x3F26,
0, 0x6664, 0, 0, 0, 0x6665, 0x4F38, 0x6666,
};
-static const unsigned short utf8_to_euc_E881_x0213[] = {
- 0xD562, 0, 0, 0xF52B, 0xD563, 0, 0x6659, 0,
- 0, 0, 0x6658, 0, 0, 0, 0, 0,
- 0, 0, 0x665A, 0, 0, 0, 0x403B, 0,
- 0x665B, 0, 0x665C, 0, 0, 0, 0x4A39, 0x665D,
- 0xD564, 0x416F, 0x665E, 0, 0xD565, 0, 0xF52C, 0,
- 0x665F, 0, 0, 0, 0, 0xD567, 0, 0x4E7E,
- 0x6662, 0xF52D, 0x6661, 0x6660, 0x4430, 0xF52E, 0x6663, 0x3F26,
- 0, 0x6664, 0, 0xF52F, 0, 0x6665, 0x4F38, 0x6666,
-};
static const unsigned short utf8_to_euc_E882[] = {
0, 0xD56A, 0, 0, 0x6667, 0x6669, 0x6668, 0x4825,
0xD56B, 0x4679, 0, 0x4F3E, 0x4829, 0, 0xD56C, 0,
@@ -9398,16 +5019,6 @@ static const unsigned short utf8_to_euc_E882[] = {
0, 0x394F, 0x3069, 0, 0x3A68, 0, 0, 0,
0xD572, 0xD573, 0x4759, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E882_x0213[] = {
- 0, 0xD56A, 0, 0, 0x6667, 0x6669, 0x6668, 0x4825,
- 0xD56B, 0x4679, 0, 0x4F3E, 0x4829, 0, 0xD56C, 0,
- 0, 0, 0, 0x666B, 0, 0, 0x3E53, 0,
- 0x492A, 0xF530, 0x666C, 0x666A, 0xF531, 0x344E, 0xD56E, 0,
- 0, 0x3854, 0x3B68, 0, 0xF532, 0x486E, 0xD56F, 0xF533,
- 0, 0x382A, 0x4B43, 0xD571, 0x666F, 0x666D, 0, 0x394E,
- 0, 0x394F, 0x3069, 0, 0x3A68, 0, 0, 0,
- 0xF534, 0xD573, 0x4759, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E883[] = {
0, 0, 0, 0x305F, 0x6674, 0, 0x4340, 0,
0xD574, 0, 0, 0, 0x4758, 0xD575, 0x425B, 0xD576,
@@ -9418,16 +5029,6 @@ static const unsigned short utf8_to_euc_E883[] = {
0xD621, 0x6679, 0xD622, 0xD623, 0x4639, 0, 0xD624, 0,
0x363B, 0xD625, 0xD626, 0, 0x6726, 0x473D, 0xD627, 0,
};
-static const unsigned short utf8_to_euc_E883_x0213[] = {
- 0, 0, 0, 0x305F, 0x6674, 0xF536, 0x4340, 0,
- 0xD574, 0, 0x7A4A, 0, 0x4758, 0xD575, 0x425B, 0xD576,
- 0, 0, 0xD577, 0, 0xD578, 0xF537, 0x6676, 0x7A4B,
- 0xF538, 0x6672, 0x6675, 0x6670, 0, 0x6673, 0x4B26, 0,
- 0x7A4C, 0x3855, 0, 0, 0x307D, 0x6671, 0xF539, 0,
- 0, 0, 0, 0, 0, 0xD57D, 0xD57E, 0x6678,
- 0xD621, 0x6679, 0xD622, 0x7A4D, 0x4639, 0xF53C, 0xD624, 0,
- 0x363B, 0xD625, 0xD626, 0xF53D, 0x6726, 0x473D, 0xD627, 0,
-};
static const unsigned short utf8_to_euc_E884[] = {
0, 0, 0x3B69, 0xD628, 0, 0x363C, 0x4048, 0x4F46,
0x4C2E, 0x6677, 0x4054, 0xD629, 0, 0, 0, 0,
@@ -9438,16 +5039,6 @@ static const unsigned short utf8_to_euc_E884[] = {
0xD633, 0x4326, 0, 0x473E, 0, 0xD634, 0, 0,
0, 0x4431, 0xD635, 0, 0xD636, 0, 0x6723, 0,
};
-static const unsigned short utf8_to_euc_E884_x0213[] = {
- 0, 0, 0x3B69, 0xD628, 0, 0x363C, 0x4048, 0x4F46,
- 0x4C2E, 0x6677, 0x4054, 0xD629, 0, 0xF53B, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xF540, 0xD62B,
- 0x7A4E, 0, 0x3553, 0x667A, 0xD62D, 0, 0xF541, 0,
- 0xD62F, 0, 0, 0x667C, 0xF543, 0, 0, 0xF544,
- 0, 0x667B, 0, 0, 0xF545, 0, 0, 0x667D,
- 0xD633, 0x4326, 0, 0x473E, 0, 0xF53F, 0, 0,
- 0, 0x4431, 0xD635, 0, 0xD636, 0xF547, 0x6723, 0,
-};
static const unsigned short utf8_to_euc_E885[] = {
0, 0, 0, 0, 0, 0xD637, 0x6722, 0xD638,
0, 0, 0xD639, 0x667E, 0xD63A, 0, 0x3F55, 0,
@@ -9458,16 +5049,6 @@ static const unsigned short utf8_to_euc_E885[] = {
0x3978, 0x6727, 0, 0, 0x672B, 0, 0, 0xD644,
0x4432, 0x4A22, 0x4123, 0, 0, 0, 0, 0x425C,
};
-static const unsigned short utf8_to_euc_E885_x0213[] = {
- 0, 0, 0, 0, 0, 0xD637, 0x6722, 0xD638,
- 0, 0, 0x7A4F, 0x667E, 0xD63A, 0, 0x3F55, 0,
- 0x4965, 0x6725, 0xD63B, 0x6724, 0x3950, 0x4F53, 0, 0xD63C,
- 0, 0, 0, 0, 0, 0, 0, 0x6735,
- 0x7A50, 0xD63E, 0, 0, 0, 0x6729, 0x672A, 0x7A51,
- 0x7A52, 0xF549, 0, 0x3C70, 0, 0x7A53, 0x6728, 0xD643,
- 0x3978, 0x6727, 0, 0, 0x672B, 0, 0, 0xD644,
- 0x4432, 0x4A22, 0x4123, 0, 0, 0, 0, 0x425C,
-};
static const unsigned short utf8_to_euc_E886[] = {
0x672F, 0xD645, 0x6730, 0x672C, 0xD647, 0xD648, 0xD649, 0,
0x672D, 0, 0x672E, 0xD64A, 0, 0, 0xD64B, 0x3951,
@@ -9478,16 +5059,6 @@ static const unsigned short utf8_to_euc_E886[] = {
0x6738, 0, 0xD652, 0x4137, 0xD653, 0x6739, 0, 0,
0x673B, 0, 0x673F, 0xD654, 0, 0x673C, 0x673A, 0x473F,
};
-static const unsigned short utf8_to_euc_E886_x0213[] = {
- 0x672F, 0xF54B, 0x6730, 0x672C, 0xF54D, 0xF54E, 0xD649, 0,
- 0x672D, 0, 0x672E, 0xD64A, 0, 0, 0xD64B, 0x3951,
- 0xD646, 0, 0, 0x6736, 0, 0x6732, 0xD64C, 0,
- 0xF550, 0, 0x4966, 0xD64E, 0x4B6C, 0x4928, 0xD64F, 0,
- 0x6731, 0, 0xD650, 0x6734, 0x6733, 0, 0, 0,
- 0x4B44, 0x6737, 0, 0, 0, 0, 0xD651, 0,
- 0x6738, 0, 0xF551, 0x4137, 0xD653, 0x6739, 0, 0,
- 0x673B, 0, 0x673F, 0x7A54, 0, 0x673C, 0x673A, 0x473F,
-};
static const unsigned short utf8_to_euc_E887[] = {
0x673D, 0, 0x673E, 0xD656, 0, 0xD657, 0x3232, 0,
0x6745, 0x6740, 0xD658, 0xD655, 0, 0x6741, 0xD659, 0xD65A,
@@ -9498,16 +5069,6 @@ static const unsigned short utf8_to_euc_E887[] = {
0xD664, 0xD665, 0xD666, 0x3B6A, 0x4357, 0xD667, 0xD668, 0,
0xD669, 0xD66A, 0x674A, 0x674B, 0x3131, 0xD66B, 0x674C, 0xD66C,
};
-static const unsigned short utf8_to_euc_E887_x0213[] = {
- 0x673D, 0xF552, 0x673E, 0xF553, 0, 0xD657, 0x3232, 0,
- 0x6745, 0x6740, 0x7A55, 0xD655, 0, 0x6741, 0xD659, 0x7A56,
- 0, 0x6742, 0, 0x4221, 0, 0xD65B, 0xF554, 0x7A57,
- 0x6744, 0x6743, 0x6746, 0xF555, 0, 0xD65E, 0xD65F, 0x6747,
- 0x6748, 0xD660, 0, 0x3F43, 0xF557, 0x3269, 0, 0x6749,
- 0x4E57, 0, 0x3C2B, 0xD662, 0xF559, 0x3D2D, 0, 0,
- 0xD664, 0xD665, 0xD666, 0x3B6A, 0x4357, 0xD667, 0xD668, 0,
- 0xD669, 0xD66A, 0x674A, 0x674B, 0x3131, 0xF55B, 0x674C, 0xF55C,
-};
static const unsigned short utf8_to_euc_E888[] = {
0xD66D, 0x674D, 0x674E, 0xD66E, 0, 0x674F, 0, 0x6750,
0x363D, 0x5A2A, 0x6751, 0, 0x4065, 0x6752, 0x3C4B, 0xD66F,
@@ -9518,16 +5079,6 @@ static const unsigned short utf8_to_euc_E888[] = {
0, 0, 0xD678, 0x6758, 0xD679, 0x4249, 0x4775, 0x383F,
0x6757, 0x4125, 0xD67A, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E888_x0213[] = {
- 0xD66D, 0x674D, 0x674E, 0xD66E, 0xF55E, 0x674F, 0, 0x6750,
- 0x363D, 0x5A2A, 0x6751, 0, 0x4065, 0x6752, 0x3C4B, 0xD66F,
- 0x6753, 0, 0x5030, 0xD670, 0xD671, 0, 0x6754, 0x4A5E,
- 0x345C, 0xF560, 0xD673, 0x4124, 0x3D58, 0xD674, 0x4971, 0x3D2E,
- 0, 0xF561, 0xF562, 0, 0, 0, 0, 0,
- 0xD677, 0x6755, 0x3952, 0x6756, 0x484C, 0, 0x6764, 0,
- 0, 0, 0xF564, 0x6758, 0xF565, 0x4249, 0x4775, 0x383F,
- 0x6757, 0x4125, 0xD67A, 0, 0xF566, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E889[] = {
0x6759, 0, 0, 0xD67B, 0xD67C, 0xD67D, 0xD67E, 0x447A,
0, 0, 0, 0xD721, 0, 0, 0xD722, 0xD723,
@@ -9538,16 +5089,6 @@ static const unsigned short utf8_to_euc_E889[] = {
0, 0x6765, 0x3F27, 0, 0xD72B, 0, 0x3170, 0x6766,
0x6767, 0, 0, 0xD72C, 0, 0xD72D, 0x6768, 0xD72E,
};
-static const unsigned short utf8_to_euc_E889_x0213[] = {
- 0x6759, 0, 0, 0xD67B, 0xD67C, 0xF569, 0xF567, 0x447A,
- 0, 0xF568, 0, 0xF56B, 0, 0, 0xD722, 0xF56D,
- 0, 0xD724, 0, 0, 0, 0, 0xD725, 0xF56F,
- 0x675B, 0x675A, 0x675D, 0, 0xF571, 0x675C, 0, 0x675E,
- 0x7A5B, 0, 0x6760, 0xF572, 0x675F, 0, 0x344F, 0xD729,
- 0x6761, 0, 0x6762, 0x6763, 0, 0xD72A, 0x3A31, 0x4E49,
- 0, 0x6765, 0x3F27, 0, 0x7A5C, 0, 0x3170, 0x6766,
- 0x6767, 0xF576, 0, 0xD72C, 0, 0xF578, 0x6768, 0xF579,
-};
static const unsigned short utf8_to_euc_E88A[] = {
0xD72F, 0xD730, 0, 0xD731, 0xD732, 0, 0, 0xD733,
0, 0xD734, 0xD735, 0x3072, 0, 0x6769, 0xD736, 0,
@@ -9558,16 +5099,6 @@ static const unsigned short utf8_to_euc_E88A[] = {
0xD746, 0x3256, 0xD747, 0x4B27, 0xD748, 0, 0, 0xD749,
0x375D, 0x365C, 0xD74A, 0x676D, 0xD74B, 0x326A, 0xD74C, 0xD74D,
};
-static const unsigned short utf8_to_euc_E88A_x0213[] = {
- 0xD72F, 0xD730, 0, 0xF57A, 0xD732, 0, 0, 0xD733,
- 0, 0xD734, 0xF57B, 0x3072, 0, 0x6769, 0x7A5E, 0,
- 0, 0xD737, 0x676A, 0xF57C, 0xD738, 0, 0xD739, 0,
- 0xD73A, 0x4967, 0xD73B, 0xD73C, 0, 0x3C47, 0, 0x676C,
- 0xD73D, 0x7A5F, 0, 0x7A60, 0x7A61, 0x3329, 0x3032, 0xF57D,
- 0xF57E, 0x7A62, 0xD744, 0x676B, 0x676E, 0x474E, 0x7A63, 0x3F44,
- 0xD746, 0x3256, 0xF621, 0x4B27, 0xF622, 0, 0, 0x7A64,
- 0x375D, 0x365C, 0xF623, 0x676D, 0xF624, 0x326A, 0x7A65, 0x7A66,
-};
static const unsigned short utf8_to_euc_E88B[] = {
0, 0, 0, 0, 0, 0x3423, 0xD74E, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -9578,16 +5109,6 @@ static const unsigned short utf8_to_euc_E88B[] = {
0, 0x3151, 0, 0x6774, 0x6773, 0, 0xD759, 0xD75A,
0, 0x6779, 0x6775, 0x6778, 0, 0xD75B, 0xD75C, 0,
};
-static const unsigned short utf8_to_euc_E88B_x0213[] = {
- 0, 0, 0, 0, 0, 0x3423, 0x7A67, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0xD74F, 0x3171, 0x6772, 0x4E6A, 0x425D, 0x7A68, 0, 0x4944,
- 0, 0x677E, 0xD751, 0x3257, 0x677C, 0, 0x677A, 0x6771,
- 0xD752, 0x676F, 0xF625, 0x6770, 0xD754, 0x3C63, 0x366C, 0x4377,
- 0xF626, 0, 0xD756, 0x4651, 0, 0xD757, 0, 0xD758,
- 0, 0x3151, 0, 0x6774, 0x6773, 0, 0xD759, 0xF627,
- 0, 0x6779, 0x6775, 0x6778, 0, 0x7A69, 0x7A6A, 0,
-};
static const unsigned short utf8_to_euc_E88C[] = {
0xD75D, 0xD75E, 0x4C50, 0x6777, 0x3258, 0x337D, 0x677B, 0xD75F,
0xD760, 0x677D, 0xD761, 0xD762, 0, 0, 0x3754, 0,
@@ -9598,16 +5119,6 @@ static const unsigned short utf8_to_euc_E88C[] = {
0xD76D, 0x6825, 0x6824, 0xD76E, 0x6822, 0x6821, 0x4363, 0xD76F,
0x427B, 0x6827, 0xD770, 0, 0xD771, 0xD772, 0, 0,
};
-static const unsigned short utf8_to_euc_E88C_x0213[] = {
- 0x7A6B, 0x7A6C, 0x4C50, 0x6777, 0x3258, 0x337D, 0x677B, 0xF628,
- 0xF629, 0x677D, 0xD761, 0xD762, 0xF62A, 0, 0x3754, 0,
- 0, 0, 0, 0, 0, 0, 0x6823, 0x682C,
- 0x682D, 0, 0, 0xF62C, 0x302B, 0xF62D, 0xD766, 0xD767,
- 0, 0xD768, 0x7A6E, 0x6834, 0, 0, 0, 0,
- 0x3071, 0, 0, 0x682B, 0xD76A, 0x7A6F, 0xD76C, 0x682A,
- 0xF62E, 0x6825, 0x6824, 0xD76E, 0x6822, 0x6821, 0x4363, 0xD76F,
- 0x427B, 0x6827, 0x7A70, 0, 0xF62F, 0xD772, 0, 0,
-};
static const unsigned short utf8_to_euc_E88D[] = {
0x6826, 0, 0xD773, 0xD774, 0xD775, 0x6829, 0, 0xD776,
0, 0x4170, 0x3755, 0, 0, 0xD777, 0xD778, 0x3141,
@@ -9618,16 +5129,6 @@ static const unsigned short utf8_to_euc_E88D[] = {
0xD77D, 0, 0, 0x683A, 0, 0x683B, 0, 0x3259,
0xD77E, 0, 0, 0x322E, 0x6838, 0xD821, 0, 0xD822,
};
-static const unsigned short utf8_to_euc_E88D_x0213[] = {
- 0x6826, 0, 0xD773, 0x7A71, 0xF630, 0x6829, 0, 0x7A72,
- 0, 0x4170, 0x3755, 0, 0, 0xD777, 0xD778, 0x3141,
- 0x6828, 0x7A73, 0x3953, 0xD83E, 0xF62B, 0x7A74, 0xD77B, 0xF631,
- 0x4171, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0x7A6D, 0xAE4A, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0xD77D, 0, 0, 0x683A, 0, 0x683B, 0, 0x3259,
- 0xD77E, 0, 0, 0x322E, 0x6838, 0x7A75, 0, 0xF633,
-};
static const unsigned short utf8_to_euc_E88E[] = {
0xD823, 0, 0xD824, 0, 0xD825, 0x682E, 0xD826, 0x6836,
0, 0x683D, 0x6837, 0, 0, 0xD827, 0x6835, 0,
@@ -9638,16 +5139,6 @@ static const unsigned short utf8_to_euc_E88E[] = {
0, 0x4D69, 0, 0, 0, 0x6839, 0, 0,
0, 0, 0, 0, 0, 0x684F, 0xD834, 0xD835,
};
-static const unsigned short utf8_to_euc_E88E_x0213[] = {
- 0xD823, 0, 0xD824, 0, 0xD825, 0x682E, 0x7A76, 0x6836,
- 0, 0x683D, 0x6837, 0, 0, 0xF636, 0x6835, 0,
- 0, 0, 0x7A77, 0x6776, 0xF637, 0xF638, 0x6833, 0,
- 0x7A78, 0xD82C, 0x682F, 0xF639, 0xD82E, 0xF63A, 0x3450, 0x6831,
- 0x683C, 0, 0x6832, 0, 0, 0, 0xD830, 0x7A79,
- 0x683E, 0x7A7A, 0x6830, 0x477C, 0xD833, 0xD84C, 0, 0,
- 0, 0x4D69, 0, 0, 0, 0x6839, 0, 0,
- 0, 0, 0, 0, 0, 0x684F, 0xD834, 0x7A7B,
-};
static const unsigned short utf8_to_euc_E88F[] = {
0xD836, 0x6847, 0, 0, 0, 0x3F7B, 0, 0xD837,
0, 0xD838, 0x3546, 0, 0x365D, 0, 0x6842, 0xD839,
@@ -9658,16 +5149,6 @@ static const unsigned short utf8_to_euc_E88F[] = {
0x3856, 0x4929, 0x684B, 0, 0x683F, 0, 0xD841, 0x6848,
0xD842, 0xD843, 0, 0x6852, 0xD844, 0x6843, 0, 0,
};
-static const unsigned short utf8_to_euc_E88F_x0213[] = {
- 0x7A7C, 0x6847, 0, 0, 0, 0x3F7B, 0, 0x7A7D,
- 0, 0xF63B, 0x3546, 0, 0x365D, 0, 0x6842, 0x7A7E,
- 0xF63C, 0x7B21, 0, 0x325B, 0xF63D, 0, 0x3E54, 0,
- 0x6845, 0, 0, 0, 0x3A5A, 0xF63E, 0, 0x4551,
- 0x684A, 0x7B22, 0, 0, 0, 0xF63F, 0, 0,
- 0xD83F, 0x4A6E, 0x7B23, 0x6841, 0, 0, 0, 0x325A,
- 0x3856, 0x4929, 0x684B, 0, 0x683F, 0, 0xD841, 0x6848,
- 0xD842, 0xF640, 0, 0x6852, 0xD844, 0x6843, 0, 0,
-};
static const unsigned short utf8_to_euc_E890[] = {
0, 0xD845, 0, 0x6844, 0x463A, 0, 0xD846, 0x6849,
0, 0, 0xD847, 0x6846, 0x4B28, 0x684C, 0x3060, 0xD848,
@@ -9678,16 +5159,6 @@ static const unsigned short utf8_to_euc_E890[] = {
0, 0x337E, 0, 0, 0, 0x6862, 0, 0,
0x6850, 0xD84E, 0, 0, 0x6855, 0x4D6E, 0, 0,
};
-static const unsigned short utf8_to_euc_E890_x0213[] = {
- 0, 0x7B24, 0, 0x6844, 0x463A, 0, 0x7B25, 0x6849,
- 0, 0, 0x7B26, 0x6846, 0x4B28, 0x684C, 0x3060, 0xF641,
- 0, 0xF642, 0, 0x6840, 0, 0xF643, 0, 0xF645,
- 0, 0xD84B, 0, 0, 0, 0, 0, 0,
- 0x684E, 0, 0x684D, 0, 0, 0, 0, 0,
- 0, 0x476B, 0x6854, 0, 0x685F, 0, 0, 0xD84D,
- 0, 0x337E, 0, 0, 0, 0x6862, 0, 0,
- 0x6850, 0xF646, 0, 0, 0x6855, 0x4D6E, 0, 0,
-};
static const unsigned short utf8_to_euc_E891[] = {
0, 0, 0, 0, 0, 0xD84F, 0x685E, 0xD850,
0xD851, 0x4D55, 0xD852, 0, 0, 0xD853, 0x4E2A, 0xD854,
@@ -9698,16 +5169,6 @@ static const unsigned short utf8_to_euc_E891[] = {
0xD861, 0x472C, 0, 0xD862, 0xD863, 0x302A, 0xD864, 0x6858,
0xD865, 0x6861, 0x4978, 0, 0xD866, 0xD867, 0, 0,
};
-static const unsigned short utf8_to_euc_E891_x0213[] = {
- 0, 0, 0, 0, 0, 0xD84F, 0x685E, 0xD850,
- 0x7B28, 0x4D55, 0xF647, 0, 0, 0xD853, 0x4E2A, 0xF648,
- 0, 0xF649, 0xF64A, 0, 0, 0, 0xD857, 0x4378,
- 0xD858, 0xF64B, 0xF64C, 0x336B, 0xF64D, 0, 0, 0x7B29,
- 0xD85C, 0x4972, 0x6864, 0x4621, 0xD85D, 0xF64F, 0x3031, 0xD85F,
- 0, 0x685D, 0xD860, 0x6859, 0x4172, 0x6853, 0x685B, 0x6860,
- 0x7B2A, 0x472C, 0, 0x7B2B, 0xD863, 0x302A, 0xF650, 0x6858,
- 0xF651, 0x6861, 0x4978, 0, 0xF652, 0xD867, 0, 0,
-};
static const unsigned short utf8_to_euc_E892[] = {
0, 0xD868, 0x685C, 0, 0x6857, 0xD869, 0, 0,
0, 0, 0, 0x3E55, 0, 0, 0, 0,
@@ -9718,16 +5179,6 @@ static const unsigned short utf8_to_euc_E892[] = {
0, 0xD873, 0x3377, 0, 0xD874, 0, 0, 0,
0x3E78, 0x6865, 0xD875, 0x686A, 0x4173, 0xD876, 0xD877, 0x6866,
};
-static const unsigned short utf8_to_euc_E892_x0213[] = {
- 0, 0xF653, 0x685C, 0, 0x6857, 0x7B2C, 0, 0,
- 0, 0, 0, 0x3E55, 0, 0, 0, 0,
- 0x3D2F, 0, 0xD86A, 0xD86B, 0x3C2C, 0xD86C, 0, 0xF656,
- 0, 0x4C58, 0, 0, 0x4947, 0, 0x7B2D, 0x6867,
- 0, 0x6870, 0, 0, 0, 0, 0xF657, 0,
- 0xD86F, 0xD870, 0xD871, 0, 0, 0x685A, 0, 0x7B2E,
- 0, 0xD873, 0x3377, 0, 0x7B2F, 0, 0, 0,
- 0x3E78, 0x6865, 0x7B30, 0x686A, 0x4173, 0xD876, 0xF658, 0x6866,
-};
static const unsigned short utf8_to_euc_E893[] = {
0xD878, 0x686D, 0xD879, 0, 0x435F, 0, 0x686E, 0xD87A,
0xD87B, 0x4D56, 0x6863, 0x3338, 0xD87C, 0x6869, 0, 0xD87D,
@@ -9738,16 +5189,6 @@ static const unsigned short utf8_to_euc_E893[] = {
0xD925, 0xD926, 0xD927, 0, 0x6873, 0, 0, 0xD928,
0, 0, 0xD92A, 0xD92B, 0x687A, 0xD92C, 0, 0x6872,
};
-static const unsigned short utf8_to_euc_E893_x0213[] = {
- 0x7B31, 0x686D, 0x7B32, 0, 0x435F, 0, 0x686E, 0xD87A,
- 0xD87B, 0x4D56, 0x6863, 0x3338, 0xD87C, 0x6869, 0xF65A, 0xF65B,
- 0x686C, 0x4C2C, 0, 0xF65C, 0, 0, 0x686F, 0,
- 0, 0x6868, 0x686B, 0, 0xF655, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0xF65E,
- 0, 0, 0xF65F, 0, 0x4B29, 0, 0x4F21, 0xF660,
- 0xF661, 0xF662, 0xD927, 0, 0x6873, 0, 0, 0xD928,
- 0, 0, 0xF663, 0xD92B, 0x687A, 0xF664, 0, 0x6872,
-};
static const unsigned short utf8_to_euc_E894[] = {
0x3C43, 0, 0xD92D, 0xD92E, 0, 0, 0x6851, 0xD92F,
0, 0, 0, 0, 0xD930, 0, 0xD931, 0,
@@ -9758,16 +5199,6 @@ static const unsigned short utf8_to_euc_E894[] = {
0, 0, 0xD929, 0xD93D, 0xD93E, 0x4222, 0xD93F, 0,
0, 0, 0, 0, 0, 0x4A43, 0, 0xD940,
};
-static const unsigned short utf8_to_euc_E894_x0213[] = {
- 0x3C43, 0, 0xD92D, 0xD92E, 0, 0, 0x6851, 0xD92F,
- 0, 0, 0, 0, 0xF665, 0, 0xD931, 0,
- 0xD932, 0x4A4E, 0, 0x4C22, 0x6879, 0x6878, 0, 0x6874,
- 0x6875, 0, 0x3136, 0xF666, 0xD933, 0, 0x7B35, 0x6877,
- 0, 0x6871, 0xD935, 0x7B36, 0xF667, 0xF668, 0x4455, 0xD939,
- 0, 0, 0xD93A, 0xF669, 0x6876, 0x307E, 0, 0x7B37,
- 0, 0, 0x7B34, 0xD93D, 0xF66A, 0x4222, 0xD93F, 0,
- 0, 0, 0, 0, 0, 0x4A43, 0xF66F, 0xD940,
-};
static const unsigned short utf8_to_euc_E895[] = {
0x687B, 0x6921, 0, 0x4859, 0, 0, 0xD941, 0,
0x687E, 0x3E56, 0x3C49, 0x6923, 0, 0, 0x363E, 0xD942,
@@ -9778,16 +5209,6 @@ static const unsigned short utf8_to_euc_E895[] = {
0, 0, 0, 0, 0, 0, 0, 0x6931,
0, 0xD953, 0xD954, 0xD955, 0, 0xD956, 0x6932, 0xD957,
};
-static const unsigned short utf8_to_euc_E895_x0213[] = {
- 0x687B, 0x6921, 0, 0x4859, 0, 0, 0xD941, 0,
- 0x687E, 0x3E56, 0x3C49, 0x6923, 0, 0, 0x363E, 0xF66B,
- 0xD943, 0xF670, 0xD945, 0xF671, 0, 0x6924, 0xD947, 0x4979,
- 0x687D, 0x7B38, 0x6856, 0, 0xD949, 0xD94A, 0xF672, 0xD94C,
- 0xD94D, 0xF673, 0xF674, 0x687C, 0x7B39, 0, 0, 0,
- 0x4F4F, 0x4622, 0x4973, 0xD951, 0, 0x692B, 0, 0xF66C,
- 0, 0, 0, 0, 0, 0, 0, 0x6931,
- 0, 0xD953, 0x7B3C, 0xF676, 0, 0xF677, 0x6932, 0xF678,
-};
static const unsigned short utf8_to_euc_E896[] = {
0x6925, 0xD958, 0, 0, 0x4776, 0xD959, 0xD95A, 0x692F,
0x6927, 0xD95B, 0x6929, 0xD95C, 0xD95D, 0, 0, 0xD95E,
@@ -9798,16 +5219,6 @@ static const unsigned short utf8_to_euc_E896[] = {
0xF461, 0, 0, 0, 0xD967, 0, 0xD968, 0xD969,
0xD96A, 0x6937, 0x6935, 0, 0xD96B, 0xD96C, 0xD96D, 0xD96E,
};
-static const unsigned short utf8_to_euc_E896_x0213[] = {
- 0x6925, 0xF679, 0, 0, 0x4776, 0xD959, 0xF67A, 0x692F,
- 0x6927, 0xD95B, 0x6929, 0xD95C, 0x7B3D, 0, 0, 0x7B3E,
- 0x6933, 0x6928, 0, 0xF67B, 0x692C, 0, 0, 0x3172,
- 0xD960, 0x4665, 0, 0x692D, 0x6930, 0xF67C, 0, 0xF67D,
- 0xD963, 0, 0x7B3F, 0, 0x6926, 0xD965, 0x4126, 0xD966,
- 0x692A, 0x3B27, 0x3F45, 0x3730, 0x4C74, 0x7B3B, 0x4C79, 0x3D72,
- 0x7B40, 0, 0, 0, 0xD967, 0, 0xD968, 0xF723,
- 0xD96A, 0x6937, 0x6935, 0, 0xF724, 0xD96C, 0xD96D, 0xD96E,
-};
static const unsigned short utf8_to_euc_E897[] = {
0, 0x4F4E, 0xD96F, 0, 0, 0, 0, 0xD970,
0, 0x6934, 0xD971, 0xD972, 0, 0x4D75, 0xD973, 0x6936,
@@ -9818,16 +5229,6 @@ static const unsigned short utf8_to_euc_E897[] = {
0, 0, 0, 0xD97C, 0, 0, 0xD97D, 0x3D73,
0, 0x693D, 0x6942, 0x4174, 0xD97E, 0, 0x6941, 0xDA21,
};
-static const unsigned short utf8_to_euc_E897_x0213[] = {
- 0, 0x4F4E, 0xD96F, 0, 0, 0, 0, 0xF725,
- 0, 0x6934, 0xF726, 0x7B41, 0, 0x4D75, 0x7B42, 0x6936,
- 0x6938, 0, 0, 0, 0, 0x6939, 0, 0,
- 0xF727, 0xF728, 0xD976, 0, 0x693C, 0x693A, 0, 0xF729,
- 0xD978, 0xF72A, 0, 0, 0x4623, 0x693B, 0xF72B, 0,
- 0xD97A, 0x484D, 0x692E, 0, 0, 0x7B43, 0, 0,
- 0, 0, 0, 0xD97C, 0, 0, 0xF72C, 0x3D73,
- 0, 0x693D, 0x6942, 0x4174, 0xD97E, 0, 0x6941, 0x7B45,
-};
static const unsigned short utf8_to_euc_E898[] = {
0xDA22, 0, 0x6922, 0, 0xDA23, 0xDA24, 0x6943, 0x4149,
0, 0, 0x693E, 0x6940, 0, 0xDA25, 0xDA26, 0,
@@ -9838,16 +5239,6 @@ static const unsigned short utf8_to_euc_E898[] = {
0x6946, 0, 0, 0, 0, 0, 0xDA31, 0,
0xDA32, 0, 0xDA33, 0, 0xDA34, 0xDA35, 0, 0x6947,
};
-static const unsigned short utf8_to_euc_E898_x0213[] = {
- 0xF72D, 0, 0x6922, 0, 0x7B46, 0x7B47, 0x6943, 0x4149,
- 0, 0, 0x693E, 0x6940, 0, 0xDA25, 0xDA26, 0,
- 0x7B48, 0xF72E, 0x7B44, 0x693F, 0, 0, 0x5D31, 0x5D22,
- 0x7B4A, 0xDA2B, 0x6945, 0xDA2C, 0, 0, 0xF72F, 0,
- 0, 0xF730, 0x6944, 0, 0xF731, 0, 0, 0xF732,
- 0, 0x7B4B, 0, 0, 0, 0x4D76, 0, 0x623C,
- 0x6946, 0, 0, 0, 0, 0, 0xDA31, 0,
- 0x7B4C, 0xF734, 0xDA33, 0, 0xF735, 0xDA35, 0, 0x6947,
-};
static const unsigned short utf8_to_euc_E899[] = {
0xDA36, 0xB866, 0xDA37, 0, 0, 0, 0xDA38, 0,
0, 0, 0, 0, 0, 0x6948, 0x3857, 0,
@@ -9858,16 +5249,6 @@ static const unsigned short utf8_to_euc_E899[] = {
0, 0x694D, 0, 0, 0, 0xDA48, 0xDA49, 0xDA4A,
0, 0x467A, 0xDA4B, 0x303A, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E899_x0213[] = {
- 0xF737, 0x2F68, 0xDA37, 0, 0, 0, 0xDA38, 0,
- 0, 0, 0, 0, 0, 0x6948, 0x3857, 0,
- 0x3554, 0, 0xDA39, 0xF739, 0x694A, 0x515D, 0xF73A, 0x7B4D,
- 0xDA3D, 0xDA3E, 0x3575, 0x7B4E, 0x4E3A, 0xDA3F, 0x3673, 0x694B,
- 0xDA40, 0xDA41, 0x7B50, 0xDA43, 0xDA44, 0, 0, 0x694C,
- 0, 0xDA45, 0, 0x436E, 0x7B52, 0, 0, 0xF73B,
- 0, 0x694D, 0, 0, 0, 0x7B53, 0xDA49, 0xF73C,
- 0, 0x467A, 0xF73D, 0x303A, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E89A[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0xDA6D, 0, 0x3263, 0x6952, 0x6953, 0xDA4C, 0, 0,
@@ -9878,16 +5259,6 @@ static const unsigned short utf8_to_euc_E89A[] = {
0x6958, 0xDA57, 0, 0xDA58, 0xDA59, 0xDA5A, 0x6954, 0xDA5B,
0xDA5C, 0xDA5D, 0, 0, 0, 0, 0, 0xDA5E,
};
-static const unsigned short utf8_to_euc_E89A_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0xF73E,
- 0xDA6D, 0xF73F, 0x3263, 0x6952, 0x6953, 0xF740, 0, 0,
- 0, 0xF741, 0, 0x694E, 0, 0x3B3D, 0xDA4E, 0,
- 0x7B54, 0, 0xDA50, 0, 0xF742, 0xF743, 0, 0,
- 0, 0xDA52, 0, 0x694F, 0x4742, 0, 0xDA53, 0xDA54,
- 0xF744, 0x6950, 0x6951, 0x695B, 0, 0xDA56, 0, 0x6955,
- 0x6958, 0xF746, 0, 0xF747, 0xDA59, 0xDA5A, 0x6954, 0xDA5B,
- 0x7B55, 0xDA5D, 0, 0, 0, 0, 0, 0xDA5E,
-};
static const unsigned short utf8_to_euc_E89B[] = {
0xDA5F, 0xDA60, 0, 0xDA61, 0x6956, 0xDA62, 0x6957, 0x3C58,
0, 0x6959, 0, 0x4341, 0, 0x3756, 0x3342, 0,
@@ -9898,16 +5269,6 @@ static const unsigned short utf8_to_euc_E89B[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0x427D, 0x696C, 0xDA6E, 0x6968, 0xDA6F, 0xDA70, 0x326B, 0,
};
-static const unsigned short utf8_to_euc_E89B_x0213[] = {
- 0xDA5F, 0xF748, 0, 0xF749, 0x6956, 0xDA62, 0x6957, 0x3C58,
- 0, 0x6959, 0, 0x4341, 0, 0x3756, 0x3342, 0,
- 0, 0xF74A, 0xDA64, 0, 0x695C, 0xF74B, 0, 0xF74C,
- 0, 0x333F, 0xDA67, 0x6961, 0xDA68, 0, 0x695D, 0x6960,
- 0xDA69, 0, 0, 0xF74D, 0x483A, 0xDA6B, 0xF74E, 0xDA6C,
- 0, 0x695E, 0, 0, 0x695F, 0x4948, 0x485A, 0x6962,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x427D, 0x696C, 0x7B56, 0x6968, 0x7B57, 0x7B58, 0x326B, 0,
-};
static const unsigned short utf8_to_euc_E89C[] = {
0x6966, 0, 0x4B2A, 0x6967, 0xDA71, 0xDA72, 0x6964, 0xDA73,
0x6965, 0x696A, 0x696D, 0xDA74, 0, 0x696B, 0xDA75, 0xDA76,
@@ -9918,16 +5279,6 @@ static const unsigned short utf8_to_euc_E89C[] = {
0, 0xDB24, 0xDB25, 0, 0x696E, 0, 0, 0x6970,
0, 0xDB26, 0xDB27, 0x6971, 0xDB28, 0xDB29, 0xDB2A, 0x696F,
};
-static const unsigned short utf8_to_euc_E89C_x0213[] = {
- 0x6966, 0, 0x4B2A, 0x6967, 0xDA71, 0xF750, 0x6964, 0xF751,
- 0x6965, 0x696A, 0x696D, 0x7B59, 0, 0x696B, 0xF752, 0xDA76,
- 0xF753, 0x6969, 0x6963, 0xF754, 0xDA79, 0, 0, 0,
- 0x4358, 0xF755, 0x6974, 0, 0x4C2A, 0, 0xDA7B, 0xF756,
- 0, 0xF757, 0, 0xF758, 0, 0x6972, 0, 0,
- 0xDB21, 0x6973, 0, 0, 0, 0, 0xDB22, 0xDB23,
- 0, 0xF759, 0xDB25, 0, 0x696E, 0, 0, 0x6970,
- 0, 0xDB26, 0xF75A, 0x6971, 0xDB28, 0xDB29, 0xF75B, 0x696F,
-};
static const unsigned short utf8_to_euc_E89D[] = {
0xDB2B, 0, 0, 0xDB2C, 0, 0xDB2D, 0, 0,
0, 0x4066, 0, 0x4F39, 0x6978, 0xDB2E, 0x6979, 0,
@@ -9938,16 +5289,6 @@ static const unsigned short utf8_to_euc_E89D[] = {
0, 0xDB35, 0xDB36, 0, 0x697A, 0, 0x4433, 0,
0x6977, 0, 0, 0xDB37, 0, 0, 0, 0x4768,
};
-static const unsigned short utf8_to_euc_E89D_x0213[] = {
- 0xF75C, 0, 0, 0xF75D, 0, 0xDB2D, 0, 0,
- 0, 0x4066, 0, 0x4F39, 0x6978, 0xDB2E, 0x6979, 0,
- 0, 0xF75E, 0, 0x6A21, 0, 0x3F2A, 0, 0x697B,
- 0xF75F, 0x697E, 0, 0, 0, 0xDB30, 0, 0x6976,
- 0x6975, 0xDB31, 0, 0x6A22, 0xF760, 0xF761, 0x325C, 0,
- 0x697C, 0, 0x6A23, 0, 0, 0, 0x697D, 0xDB34,
- 0, 0x7B5A, 0xF762, 0, 0x697A, 0, 0x4433, 0,
- 0x6977, 0, 0, 0xDB37, 0xF763, 0, 0, 0x4768,
-};
static const unsigned short utf8_to_euc_E89E[] = {
0, 0, 0x6A27, 0xDB38, 0xDB39, 0xDB3A, 0xDB3B, 0xDB3C,
0xDB3D, 0xDB3E, 0, 0xDB3F, 0xDB40, 0x4D3B, 0, 0,
@@ -9958,16 +5299,6 @@ static const unsigned short utf8_to_euc_E89E[] = {
0, 0xDB4E, 0, 0x6A30, 0, 0xDB4F, 0, 0,
0, 0, 0x4D66, 0x6A33, 0, 0x6A2A, 0xDB50, 0xDB51,
};
-static const unsigned short utf8_to_euc_E89E_x0213[] = {
- 0, 0, 0x6A27, 0xDB38, 0xDB39, 0xDB3A, 0xDB3B, 0x7B5B,
- 0x7B5C, 0xF767, 0, 0xF768, 0xDB40, 0x4D3B, 0, 0,
- 0xDB41, 0, 0, 0xF769, 0, 0xDB43, 0, 0xDB44,
- 0xDB45, 0xDB46, 0, 0, 0, 0, 0xDB47, 0x6A26,
- 0xF76A, 0, 0x6A25, 0xDB49, 0, 0, 0, 0xF766,
- 0, 0, 0, 0x6A2E, 0x7B5D, 0x7B5E, 0xDB4D, 0x6A28,
- 0, 0xDB4E, 0, 0x6A30, 0, 0x7B5F, 0, 0,
- 0, 0, 0x4D66, 0x6A33, 0, 0x6A2A, 0xF76D, 0xDB51,
-};
static const unsigned short utf8_to_euc_E89F[] = {
0x6A2B, 0xDB52, 0, 0, 0x6A2F, 0, 0x6A32, 0x6A31,
0xDB53, 0xDB54, 0xDB55, 0x6A29, 0, 0, 0xDB56, 0,
@@ -9978,16 +5309,6 @@ static const unsigned short utf8_to_euc_E89F[] = {
0, 0xDB63, 0x6A35, 0xDB64, 0, 0, 0x6A3A, 0x6A3B,
0xDB65, 0x332A, 0xDB66, 0x3542, 0, 0, 0x6A39, 0xDB67,
};
-static const unsigned short utf8_to_euc_E89F_x0213[] = {
- 0x6A2B, 0xF76F, 0, 0, 0x6A2F, 0, 0x6A32, 0x6A31,
- 0xDB53, 0xDB54, 0xDB55, 0x6A29, 0, 0, 0xF770, 0,
- 0x6A2C, 0, 0x6A3D, 0, 0, 0xDB57, 0x7B61, 0,
- 0, 0xDB59, 0xDB5A, 0, 0xDB5B, 0, 0, 0xF772,
- 0x6A36, 0, 0xDB5D, 0xF774, 0xDB5F, 0xF775, 0xF776, 0,
- 0, 0, 0xF777, 0xF778, 0x7B62, 0xF779, 0, 0x6A34,
- 0, 0xDB63, 0x6A35, 0xDB64, 0, 0xF771, 0x6A3A, 0x6A3B,
- 0xDB65, 0x332A, 0xDB66, 0x3542, 0, 0, 0x6A39, 0xDB67,
-};
static const unsigned short utf8_to_euc_E8A0[] = {
0, 0xDB68, 0, 0xDB69, 0, 0x6A24, 0xDB6A, 0xF464,
0, 0xDB6B, 0xDB6C, 0xDB6D, 0, 0x6A38, 0x6A3C, 0x6A37,
@@ -9998,16 +5319,6 @@ static const unsigned short utf8_to_euc_E8A0[] = {
0xDB7C, 0x6A43, 0xDB7D, 0, 0, 0xDB7E, 0x6A44, 0,
0, 0x6A45, 0xDC21, 0x6A47, 0xDC22, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E8A0_x0213[] = {
- 0, 0xF77A, 0, 0xF77B, 0, 0x6A24, 0x7B63, 0xF464,
- 0, 0xDB6B, 0x7B64, 0xF77C, 0, 0x6A38, 0x6A3C, 0x6A37,
- 0x7B65, 0x6A3E, 0xDB70, 0xF77D, 0x7B66, 0x6A40, 0x6A3F, 0,
- 0xDB73, 0xDB6F, 0xDB74, 0xDB75, 0xDB76, 0, 0xDB77, 0x7B67,
- 0, 0x6A42, 0x6A41, 0x695A, 0, 0, 0, 0x6A46,
- 0xF77E, 0, 0, 0, 0, 0xDB7A, 0xF821, 0,
- 0xDB7C, 0x6A43, 0xF822, 0, 0, 0xDB7E, 0x6A44, 0,
- 0, 0x6A45, 0xDC21, 0x6A47, 0xF823, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E8A1[] = {
0x376C, 0xDC23, 0x6A49, 0xDC24, 0x6A48, 0xDC25, 0x3D30, 0,
0xDC26, 0xDC27, 0xDC28, 0xDC29, 0x3954, 0x5E27, 0xDC2A, 0,
@@ -10018,16 +5329,6 @@ static const unsigned short utf8_to_euc_E8A1[] = {
0x3F6A, 0xDC35, 0x6A55, 0, 0, 0x6A52, 0, 0x436F,
0, 0xDC36, 0, 0xDC37, 0, 0x6A53, 0x6A50, 0x365E,
};
-static const unsigned short utf8_to_euc_E8A1_x0213[] = {
- 0x376C, 0xDC23, 0x6A49, 0xDC24, 0x6A48, 0xDC25, 0x3D30, 0,
- 0xDC26, 0xDC27, 0xF825, 0xDC29, 0x3954, 0x5E27, 0xDC2A, 0,
- 0, 0xDC2B, 0x6A4A, 0x3D51, 0, 0xDC2C, 0xDC2D, 0x3339,
- 0xF826, 0x6A4B, 0xDC2F, 0x3152, 0xDC30, 0x3E57, 0x6A4C, 0xF827,
- 0xDC32, 0x3955, 0x6A4D, 0x3061, 0xF828, 0, 0, 0,
- 0x493D, 0xF82B, 0, 0x6A4E, 0, 0, 0, 0xF82D,
- 0x3F6A, 0xDC35, 0x6A55, 0, 0, 0x6A52, 0, 0x436F,
- 0, 0xDC36, 0, 0xDC37, 0, 0x6A53, 0x6A50, 0x365E,
-};
static const unsigned short utf8_to_euc_E8A2[] = {
0xDC38, 0x6A4F, 0x6A56, 0, 0, 0, 0, 0,
0x3736, 0, 0, 0x425E, 0, 0x6A5C, 0, 0,
@@ -10038,16 +5339,6 @@ static const unsigned short utf8_to_euc_E8A2[] = {
0x6A5E, 0x6A60, 0, 0, 0x3853, 0x6A54, 0, 0x3041,
0, 0, 0xDC41, 0, 0, 0xDC42, 0xDC43, 0x6A5F,
};
-static const unsigned short utf8_to_euc_E8A2_x0213[] = {
- 0xDC38, 0x6A4F, 0x6A56, 0, 0, 0, 0, 0,
- 0x3736, 0, 0, 0x425E, 0, 0x6A5C, 0, 0,
- 0, 0, 0x6A58, 0, 0, 0, 0x4235, 0x6A57,
- 0x7B68, 0x6A5A, 0xDC3A, 0xDC3B, 0xDC3C, 0, 0x6A51, 0xDC3D,
- 0xF82E, 0, 0x6A5B, 0, 0x6A5D, 0, 0, 0,
- 0xDC3F, 0, 0x7B69, 0x486F, 0, 0, 0x6A59, 0,
- 0x6A5E, 0x6A60, 0, 0, 0x3853, 0x6A54, 0, 0x3041,
- 0, 0, 0xDC41, 0, 0xF82F, 0xF830, 0xF831, 0x6A5F,
-};
static const unsigned short utf8_to_euc_E8A3[] = {
0xDC44, 0x3A5B, 0x4E76, 0x6A61, 0x6A62, 0x4175, 0, 0,
0, 0, 0xDC45, 0xDC46, 0xDC47, 0xDC48, 0xDC49, 0x4E22,
@@ -10058,16 +5349,6 @@ static const unsigned short utf8_to_euc_E8A3[] = {
0xDC51, 0xDC52, 0x6A6C, 0x3E58, 0x6A6A, 0xDC53, 0, 0xDC54,
0x4D67, 0x6A67, 0, 0, 0x6A69, 0x403D, 0x3F7E, 0,
};
-static const unsigned short utf8_to_euc_E8A3_x0213[] = {
- 0xF832, 0x3A5B, 0x4E76, 0x6A61, 0x6A62, 0x4175, 0, 0,
- 0, 0, 0x7B6A, 0xDC46, 0xDC47, 0xDC48, 0x7B6B, 0x4E22,
- 0, 0xF835, 0xF833, 0xF836, 0x6A63, 0x4D35, 0, 0,
- 0x6A64, 0x6A65, 0, 0xF837, 0x4A64, 0x6A66, 0xDC4E, 0x3A40,
- 0, 0x4E23, 0, 0, 0, 0, 0, 0xDC4F,
- 0x6A6B, 0, 0, 0, 0, 0, 0, 0xDC50,
- 0xF838, 0xF839, 0x6A6C, 0x3E58, 0x6A6A, 0x7B6D, 0, 0xDC54,
- 0x4D67, 0x6A67, 0, 0, 0x6A69, 0x403D, 0x3F7E, 0,
-};
static const unsigned short utf8_to_euc_E8A4[] = {
0, 0xDC55, 0x6A68, 0, 0x6A6D, 0, 0xDC56, 0x4A23,
0, 0, 0x6A6F, 0, 0x6A6E, 0xDC57, 0xDC58, 0xDC59,
@@ -10078,16 +5359,6 @@ static const unsigned short utf8_to_euc_E8A4[] = {
0xDC64, 0xDC65, 0xDC66, 0, 0, 0xDC67, 0x6A79, 0,
0x6A7A, 0xDC68, 0xDC69, 0x6A78, 0, 0, 0xDC6A, 0,
};
-static const unsigned short utf8_to_euc_E8A4_x0213[] = {
- 0, 0xF83B, 0x6A68, 0, 0x6A6D, 0, 0xDC56, 0x4A23,
- 0, 0, 0x6A6F, 0, 0x6A6E, 0xDC57, 0xDC58, 0xDC59,
- 0x336C, 0, 0x4B2B, 0x6A70, 0, 0xDC5A, 0xDC5B, 0,
- 0x7B70, 0x7B71, 0x7B72, 0, 0x7B6E, 0x6A7C, 0x6A72, 0,
- 0xDC60, 0, 0, 0, 0, 0x6A73, 0xDC61, 0x7B73,
- 0xDC63, 0, 0x6A74, 0x6A75, 0, 0, 0, 0,
- 0x7B74, 0xDC65, 0x7B75, 0, 0, 0xDC67, 0x6A79, 0xF83D,
- 0x6A7A, 0x7B76, 0xDC69, 0x6A78, 0, 0, 0xDC6A, 0,
-};
static const unsigned short utf8_to_euc_E8A5[] = {
0xDC6B, 0x6A76, 0xDC6C, 0x6A71, 0x6A77, 0xDC6D, 0xDC6E, 0,
0, 0xDC6F, 0, 0, 0x6A7B, 0x7037, 0, 0xDC70,
@@ -10098,16 +5369,6 @@ static const unsigned short utf8_to_euc_E8A5[] = {
0xDC7B, 0, 0x3D31, 0xDC7C, 0x6B26, 0xDC7D, 0, 0x6B27,
0, 0, 0xDC7E, 0xDD21, 0xDD22, 0xDD23, 0x6B28, 0x403E,
};
-static const unsigned short utf8_to_euc_E8A5_x0213[] = {
- 0x7B77, 0x6A76, 0xF83F, 0x6A71, 0x6A77, 0xF840, 0xDC6E, 0,
- 0, 0xF841, 0, 0, 0x6A7B, 0x7037, 0, 0xDC70,
- 0, 0, 0xDC71, 0, 0, 0, 0x3228, 0xDC72,
- 0, 0, 0xDC73, 0xDC74, 0xDC75, 0, 0x6A7E, 0x365F,
- 0x6A7D, 0xDC76, 0xF844, 0xDC78, 0x6B22, 0, 0x6B21, 0,
- 0, 0, 0x6B24, 0xDC79, 0, 0x6B23, 0xDC7A, 0x6B25,
- 0xDC7B, 0, 0x3D31, 0xDC7C, 0x6B26, 0xDC7D, 0, 0x6B27,
- 0, 0, 0xDC7E, 0xDD21, 0xDD22, 0xDD23, 0x6B28, 0x403E,
-};
static const unsigned short utf8_to_euc_E8A6[] = {
0, 0x4D57, 0, 0x6B29, 0, 0, 0x4A24, 0x4746,
0x6B2A, 0xDD24, 0x6B2B, 0x382B, 0, 0xDD25, 0, 0x352C,
@@ -10118,16 +5379,6 @@ static const unsigned short utf8_to_euc_E8A6[] = {
0xDD2E, 0, 0x6B33, 0x3451, 0xDD2F, 0xDD30, 0xDD31, 0xDD32,
0, 0, 0x6B34, 0, 0xDD33, 0x6B35, 0, 0x6B36,
};
-static const unsigned short utf8_to_euc_E8A6_x0213[] = {
- 0xF845, 0x4D57, 0, 0x6B29, 0, 0, 0x4A24, 0x4746,
- 0x6B2A, 0xF846, 0x6B2B, 0x382B, 0, 0xDD25, 0, 0x352C,
- 0xF847, 0, 0, 0x6B2C, 0x7B78, 0xDD28, 0x3B6B, 0x4741,
- 0x6B2D, 0, 0x3350, 0xDD29, 0xDD2A, 0, 0, 0xF848,
- 0xDD2C, 0x6B2E, 0, 0, 0, 0xDD2D, 0x6B30, 0x4D77,
- 0, 0x6B2F, 0x3F46, 0, 0x6B31, 0, 0, 0x6B32,
- 0xF849, 0, 0x6B33, 0x3451, 0xDD2F, 0xDD30, 0xDD31, 0xF84A,
- 0, 0, 0x6B34, 0, 0xDD33, 0x6B35, 0, 0x6B36,
-};
static const unsigned short utf8_to_euc_E8A7[] = {
0x6B37, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -10138,16 +5389,6 @@ static const unsigned short utf8_to_euc_E8A7[] = {
0, 0xDD3D, 0, 0xDD3E, 0x6B3C, 0, 0xDD3F, 0,
0x6B3D, 0xDD40, 0, 0, 0, 0xDD41, 0, 0xDD42,
};
-static const unsigned short utf8_to_euc_E8A7_x0213[] = {
- 0x6B37, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0x3351, 0, 0x7B7A, 0xDD35, 0xF84B, 0xDD37,
- 0xF84C, 0, 0x6B38, 0, 0x6B39, 0x6B3A, 0, 0,
- 0, 0, 0, 0x3272, 0, 0x7B7B, 0x3F28, 0x6B3B,
- 0, 0xDD3A, 0, 0xF84D, 0, 0xDD3C, 0, 0,
- 0, 0xF84F, 0, 0xF850, 0x6B3C, 0, 0x7B7C, 0,
- 0x6B3D, 0xDD40, 0, 0, 0, 0xF851, 0, 0xF852,
-};
static const unsigned short utf8_to_euc_E8A8[] = {
0x3840, 0, 0x447B, 0x6B3E, 0xDD43, 0xDD44, 0, 0xDD45,
0x3757, 0, 0x3F56, 0, 0x6B41, 0, 0x4624, 0xDD46,
@@ -10158,16 +5399,6 @@ static const unsigned short utf8_to_euc_E8A8[] = {
0, 0x3576, 0, 0x4C75, 0x414A, 0xDD53, 0x6B45, 0xDD54,
0, 0, 0x3F47, 0x4370, 0x3E5A, 0xDD55, 0xDD56, 0,
};
-static const unsigned short utf8_to_euc_E8A8_x0213[] = {
- 0x3840, 0, 0x447B, 0x6B3E, 0xDD43, 0xDD44, 0, 0xDD45,
- 0x3757, 0, 0x3F56, 0, 0x6B41, 0, 0x4624, 0xDD46,
- 0x6B40, 0xF854, 0x7B7D, 0x3731, 0xF855, 0x7B7E, 0x6B3F, 0x4277,
- 0x352D, 0, 0, 0x6B42, 0, 0x6B43, 0xDD4B, 0x3E59,
- 0xDD4C, 0xF857, 0x7C21, 0x376D, 0xDD4E, 0x6B44, 0xDD4F, 0,
- 0, 0, 0x4B2C, 0xDD50, 0xDD51, 0x405F, 0, 0xDD52,
- 0, 0x3576, 0, 0x4C75, 0x414A, 0xF858, 0x6B45, 0x7C22,
- 0, 0, 0x3F47, 0x4370, 0x3E5A, 0xDD55, 0xF859, 0,
-};
static const unsigned short utf8_to_euc_E8A9[] = {
0xDD57, 0x6B46, 0, 0xDD58, 0, 0xDD59, 0x6B49, 0xDD5A,
0x6B4A, 0xDD5B, 0, 0, 0, 0xDD5C, 0xDD5D, 0,
@@ -10178,16 +5409,6 @@ static const unsigned short utf8_to_euc_E8A9[] = {
0x354D, 0x4F43, 0x333A, 0x3E5C, 0, 0xDD67, 0xDD68, 0xDD69,
0, 0xDD6A, 0xDD6B, 0xDD6C, 0x6B4B, 0, 0xDD6D, 0xDD6E,
};
-static const unsigned short utf8_to_euc_E8A9_x0213[] = {
- 0xDD57, 0x6B46, 0, 0xDD58, 0, 0xF85A, 0x6B49, 0x7C23,
- 0x6B4A, 0xDD5B, 0, 0, 0, 0xF85B, 0x7C24, 0,
- 0x3A3E, 0x4242, 0x6B48, 0xDD5E, 0x3E5B, 0x493E, 0xDD5F, 0xDD60,
- 0xF85C, 0, 0, 0x6B47, 0xDD62, 0x7C25, 0x3B6C, 0,
- 0x3153, 0x7C26, 0x6B4E, 0x3758, 0, 0xDD65, 0x3B6E, 0xDD66,
- 0, 0x3B6D, 0, 0x4F4D, 0x6B4D, 0x6B4C, 0x4127, 0,
- 0x354D, 0x4F43, 0x333A, 0x3E5C, 0, 0x7C27, 0xDD68, 0xDD69,
- 0, 0x7C28, 0xDD6B, 0xDD6C, 0x6B4B, 0, 0xDD6D, 0xDD6E,
-};
static const unsigned short utf8_to_euc_E8AA[] = {
0xDD6F, 0, 0x6B50, 0xDD70, 0x6B51, 0x6B4F, 0xDD71, 0x3858,
0, 0x4D40, 0, 0xDD72, 0x3B6F, 0x4727, 0, 0xDD73,
@@ -10198,16 +5419,6 @@ static const unsigned short utf8_to_euc_E8AA[] = {
0x432F, 0, 0x325D, 0xDD7E, 0, 0, 0xDE21, 0xDE22,
0, 0x4870, 0, 0xDE23, 0x3543, 0, 0xDE24, 0x4434,
};
-static const unsigned short utf8_to_euc_E8AA_x0213[] = {
- 0xDD6F, 0, 0x6B50, 0xDD70, 0x6B51, 0x6B4F, 0xDD71, 0x3858,
- 0, 0x4D40, 0, 0xDD72, 0x3B6F, 0x4727, 0, 0xDD73,
- 0xF85E, 0x6B54, 0xDD75, 0x4040, 0, 0x4342, 0xDD76, 0xDD77,
- 0x4D36, 0xDD78, 0x6B57, 0, 0, 0, 0x386C, 0xDD79,
- 0x403F, 0x6B53, 0, 0x6B58, 0x386D, 0x6B55, 0x6B56, 0x7C29,
- 0x6B52, 0xDD7B, 0, 0, 0x4062, 0x4649, 0xF85D, 0xDD7D,
- 0x432F, 0, 0x325D, 0xDD7E, 0, 0, 0xDE21, 0xF85F,
- 0, 0x4870, 0, 0xDE23, 0x3543, 0, 0xF860, 0x4434,
-};
static const unsigned short utf8_to_euc_E8AB[] = {
0, 0, 0x6B5B, 0xDE25, 0x6B59, 0, 0xDE26, 0x434C,
0xDE27, 0xDE28, 0xDE29, 0x4041, 0x3452, 0x6B5A, 0, 0x3F5B,
@@ -10218,16 +5429,6 @@ static const unsigned short utf8_to_euc_E8AB[] = {
0xDE32, 0x6B61, 0, 0x6B5E, 0xDE33, 0xDE34, 0xDE35, 0x6B65,
0x3D74, 0, 0x3841, 0, 0xDE36, 0, 0x427A, 0xDE37,
};
-static const unsigned short utf8_to_euc_E8AB_x0213[] = {
- 0, 0, 0x6B5B, 0xDE25, 0x6B59, 0, 0xDE26, 0x434C,
- 0xDE27, 0xDE28, 0xDE29, 0x4041, 0x3452, 0x6B5A, 0, 0x3F5B,
- 0x7C2A, 0xDE2A, 0x4E4A, 0xDE2B, 0xDE2C, 0xDE2D, 0x4F40, 0xF861,
- 0, 0, 0x6B5C, 0x6B67, 0x4435, 0xDE2F, 0x6B66, 0x7C2B,
- 0x6B63, 0x6B6B, 0x6B64, 0, 0x6B60, 0, 0x447C, 0x6B5F,
- 0, 0, 0, 0x6B5D, 0xDE31, 0x4D21, 0x3B70, 0,
- 0xDE32, 0x6B61, 0, 0x6B5E, 0x7C2C, 0xDE34, 0x7C2D, 0x6B65,
- 0x3D74, 0, 0x3841, 0, 0xF862, 0, 0x427A, 0xDE37,
-};
static const unsigned short utf8_to_euc_E8AC[] = {
0x4B45, 0x315A, 0x3062, 0, 0x4625, 0xDE38, 0xDE39, 0x6B69,
0, 0, 0xDE3F, 0xDE3A, 0x6B68, 0, 0x4666, 0,
@@ -10238,16 +5439,6 @@ static const unsigned short utf8_to_euc_E8AC[] = {
0xDE41, 0, 0, 0x6B70, 0, 0, 0, 0xDE42,
0, 0x3660, 0, 0, 0xDE43, 0, 0x6B74, 0,
};
-static const unsigned short utf8_to_euc_E8AC_x0213[] = {
- 0x4B45, 0x315A, 0x3062, 0, 0x4625, 0xF865, 0xDE39, 0x6B69,
- 0, 0, 0xF864, 0xDE3A, 0x6B68, 0xF866, 0x4666, 0,
- 0x6B6D, 0xDE3B, 0, 0, 0x6B62, 0, 0x6B6C, 0x6B6E,
- 0, 0x382C, 0x6B6A, 0x3956, 0xF867, 0x3C55, 0xDE3D, 0xF868,
- 0x6B6F, 0x4D58, 0, 0, 0, 0, 0x6B72, 0,
- 0x6B75, 0, 0, 0x6B73, 0x4935, 0xF869, 0, 0,
- 0xDE41, 0, 0, 0x6B70, 0, 0, 0, 0xDE42,
- 0, 0x3660, 0, 0, 0xDE43, 0, 0x6B74, 0,
-};
static const unsigned short utf8_to_euc_E8AD[] = {
0, 0x6B76, 0xDE44, 0xDE45, 0xDE46, 0xDE47, 0xDE48, 0,
0xDE49, 0x6B7A, 0, 0, 0x6B77, 0xDE4E, 0x6B79, 0x6B78,
@@ -10258,16 +5449,6 @@ static const unsigned short utf8_to_euc_E8AD[] = {
0x3544, 0x6641, 0x3E79, 0, 0x6C24, 0, 0xDE52, 0x386E,
0xDE53, 0xDE54, 0, 0, 0xDE55, 0x6C25, 0xDE56, 0xF466,
};
-static const unsigned short utf8_to_euc_E8AD_x0213[] = {
- 0, 0x6B76, 0xDE44, 0xF86A, 0xDE46, 0xDE47, 0x7C31, 0,
- 0xDE49, 0x6B7A, 0, 0, 0x6B77, 0xDE4E, 0x6B79, 0x6B78,
- 0, 0xF86C, 0xDE4A, 0xDE4B, 0x7C32, 0, 0x6B7B, 0,
- 0x3C31, 0x7C33, 0x6B7D, 0x6B7C, 0x4968, 0, 0xF86D, 0x6C21,
- 0, 0, 0, 0xDE50, 0, 0, 0x3759, 0,
- 0, 0x7C34, 0, 0x6B7E, 0x6C22, 0xDE51, 0, 0x6C23,
- 0x3544, 0x6641, 0x3E79, 0, 0x6C24, 0, 0xF86E, 0x386E,
- 0xDE53, 0xDE54, 0, 0, 0xDE55, 0x6C25, 0xDE56, 0xF86F,
-};
static const unsigned short utf8_to_euc_E8AE[] = {
0x6C26, 0xDE57, 0, 0x3B3E, 0xDE58, 0xDE59, 0, 0,
0, 0, 0x5A4E, 0xDE5A, 0x6C27, 0xDE5B, 0x6C28, 0xDE5C,
@@ -10278,16 +5459,6 @@ static const unsigned short utf8_to_euc_E8AE[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E8AE_x0213[] = {
- 0x6C26, 0xF870, 0, 0x3B3E, 0xDE58, 0xDE59, 0, 0,
- 0, 0, 0x5A4E, 0xF871, 0x6C27, 0xDE5B, 0x6C28, 0xDE5C,
- 0x3D32, 0, 0x6C29, 0x6C2A, 0xF872, 0xF873, 0x6C2B, 0,
- 0, 0x6C2C, 0x6C2D, 0, 0xF874, 0x7C35, 0xF875, 0xDE61,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E8B0[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -10298,16 +5469,6 @@ static const unsigned short utf8_to_euc_E8B0[] = {
0, 0, 0, 0, 0, 0, 0, 0x432B,
0xDE62, 0xDE63, 0x6C2E, 0, 0, 0xDE64, 0xDE65, 0x6C30,
};
-static const unsigned short utf8_to_euc_E8B0_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0x432B,
- 0xDE62, 0xF876, 0x6C2E, 0, 0, 0xF878, 0xDE65, 0x6C30,
-};
static const unsigned short utf8_to_euc_E8B1[] = {
0, 0x6C2F, 0, 0, 0, 0xDE66, 0x4626, 0xDE67,
0x6C31, 0xDE68, 0x4B2D, 0xDE69, 0x6C32, 0, 0x6C33, 0xDE6A,
@@ -10318,16 +5479,6 @@ static const unsigned short utf8_to_euc_E8B1[] = {
0, 0, 0, 0xDE79, 0, 0xDE7A, 0xDE7B, 0,
0x6C38, 0x493F, 0x6C39, 0xDE7C, 0x6C41, 0, 0xDE7D, 0,
};
-static const unsigned short utf8_to_euc_E8B1_x0213[] = {
- 0, 0x6C2F, 0, 0, 0, 0xF87B, 0x4626, 0xF87C,
- 0x6C31, 0x7C36, 0x4B2D, 0xDE69, 0x6C32, 0, 0x6C33, 0xF87D,
- 0x6C34, 0xDE6B, 0, 0xDE6C, 0xF87E, 0x6C35, 0, 0xF921,
- 0xDE6F, 0xDE72, 0x465A, 0xDE70, 0, 0xDE71, 0, 0,
- 0, 0x3E5D, 0x6C36, 0xDE73, 0xDE74, 0, 0xDE75, 0,
- 0x7C37, 0xF922, 0x396B, 0x502E, 0x6C37, 0xF923, 0, 0,
- 0, 0, 0, 0xF924, 0, 0xDE7A, 0xDE7B, 0,
- 0x6C38, 0x493F, 0x6C39, 0xDE7C, 0x6C41, 0, 0xDE7D, 0,
-};
static const unsigned short utf8_to_euc_E8B2[] = {
0, 0, 0x6C3A, 0, 0, 0x6C3C, 0xDE7E, 0xDF21,
0, 0x6C3B, 0x6C3D, 0xDF22, 0x4B46, 0x6C3E, 0x6C3F, 0,
@@ -10338,16 +5489,6 @@ static const unsigned short utf8_to_euc_E8B2[] = {
0x4C63, 0, 0x6C47, 0x6C48, 0x352E, 0, 0x6C4A, 0x4763,
0x425F, 0xDF2A, 0xDF2B, 0x4871, 0x453D, 0x6C46, 0, 0x4B47,
};
-static const unsigned short utf8_to_euc_E8B2_x0213[] = {
- 0, 0, 0x6C3A, 0, 0, 0x6C3C, 0xDE7E, 0xDF21,
- 0, 0x6C3B, 0x6C3D, 0xDF22, 0x4B46, 0x6C3E, 0x6C3F, 0,
- 0xDF23, 0, 0xF927, 0xF926, 0x6C40, 0, 0, 0,
- 0x6C42, 0xF928, 0, 0xF92A, 0xDF28, 0x332D, 0x4467, 0,
- 0x4969, 0x3A62, 0x3957, 0, 0xF92B, 0, 0, 0x494F,
- 0x325F, 0x484E, 0x6C45, 0x3453, 0x4055, 0x6C44, 0x6C49, 0x4379,
- 0x4C63, 0, 0x6C47, 0x6C48, 0x352E, 0, 0x6C4A, 0x4763,
- 0x425F, 0xDF2A, 0xDF2B, 0x4871, 0x453D, 0x6C46, 0, 0x4B47,
-};
static const unsigned short utf8_to_euc_E8B3[] = {
0x326C, 0x6C4C, 0x4F28, 0x4442, 0x4F45, 0xDF2C, 0xDF2D, 0x3B71,
0x6C4B, 0xDF2E, 0x4231, 0xDF2F, 0, 0x6C5C, 0x4128, 0xDF30,
@@ -10358,16 +5499,6 @@ static const unsigned short utf8_to_euc_E8B3[] = {
0xDF39, 0, 0xDF3A, 0, 0xF467, 0xDF3B, 0, 0xDF3C,
0xDF3D, 0, 0x6C51, 0x6C52, 0x3958, 0x6C50, 0xDF3E, 0xDF3F,
};
-static const unsigned short utf8_to_euc_E8B3_x0213[] = {
- 0x326C, 0x6C4C, 0x4F28, 0x4442, 0x4F45, 0xDF2C, 0xDF2D, 0x3B71,
- 0x6C4B, 0xDF2E, 0x4231, 0xDF2F, 0, 0x6C5C, 0x4128, 0xDF30,
- 0, 0x4678, 0, 0x4950, 0, 0xF92D, 0xF92C, 0,
- 0, 0xF92E, 0x6C4F, 0x3B3F, 0x3B72, 0xDF34, 0x3E5E, 0,
- 0x4765, 0x7C39, 0x382D, 0x6C4E, 0x6C4D, 0, 0x496A, 0,
- 0xDF36, 0, 0x3C41, 0, 0xDF37, 0x4552, 0, 0xDF38,
- 0xF930, 0xF931, 0xDF3A, 0, 0x7C3A, 0xDF3B, 0, 0xDF3C,
- 0x7C3B, 0, 0x6C51, 0x6C52, 0x3958, 0x6C50, 0x7C3C, 0xDF3F,
-};
static const unsigned short utf8_to_euc_E8B4[] = {
0, 0xDF40, 0, 0xDF41, 0x6C53, 0x6C54, 0, 0x6C56,
0x4223, 0xDF42, 0x6C55, 0x3466, 0, 0x6C58, 0, 0x6C57,
@@ -10378,16 +5509,6 @@ static const unsigned short utf8_to_euc_E8B4[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E8B4_x0213[] = {
- 0, 0xDF40, 0, 0xDF41, 0x6C53, 0x6C54, 0, 0x6C56,
- 0x4223, 0xF933, 0x6C55, 0x3466, 0, 0x6C58, 0xF934, 0x6C57,
- 0x6C59, 0, 0x7C3E, 0x6C5B, 0x6C5D, 0, 0x6C5E, 0xDF44,
- 0, 0, 0, 0x7C3F, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E8B5[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -10398,16 +5519,6 @@ static const unsigned short utf8_to_euc_E8B5[] = {
0x4176, 0x6C61, 0, 0x6C62, 0x496B, 0, 0xF468, 0x352F,
0, 0, 0, 0, 0, 0, 0, 0xDF4A,
};
-static const unsigned short utf8_to_euc_E8B5_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0x4056, 0xDF46, 0x3C4F, 0x6C5F,
- 0, 0xDF47, 0, 0x3352, 0xF935, 0x6C60, 0xDF49, 0,
- 0x4176, 0x6C61, 0, 0x6C62, 0x496B, 0, 0xF468, 0x352F,
- 0, 0, 0, 0, 0, 0, 0, 0xDF4A,
-};
static const unsigned short utf8_to_euc_E8B6[] = {
0, 0x6C63, 0xDF4B, 0, 0xDF4C, 0x4436, 0, 0,
0xDF4D, 0, 0x315B, 0, 0, 0xDF4E, 0, 0,
@@ -10418,16 +5529,6 @@ static const unsigned short utf8_to_euc_E8B6[] = {
0, 0, 0xDF59, 0x422D, 0, 0xDF5A, 0, 0xDF5B,
0, 0xDF5C, 0x6C67, 0xDF5D, 0xDF6F, 0, 0x6C66, 0,
};
-static const unsigned short utf8_to_euc_E8B6_x0213[] = {
- 0, 0x6C63, 0xDF4B, 0, 0xF936, 0x4436, 0, 0,
- 0xDF4D, 0, 0x315B, 0, 0, 0xDF4E, 0, 0,
- 0xDF4F, 0xDF50, 0, 0, 0, 0xF937, 0, 0,
- 0, 0x6C64, 0, 0, 0, 0, 0xDF52, 0xDF53,
- 0xDF54, 0, 0, 0x3C71, 0, 0, 0xF938, 0,
- 0x3F76, 0, 0, 0xDF56, 0xDF57, 0, 0, 0x7C40,
- 0, 0, 0xDF59, 0x422D, 0, 0xDF5A, 0, 0xDF5B,
- 0, 0xDF5C, 0x6C67, 0xDF5D, 0xDF6F, 0, 0x6C66, 0,
-};
static const unsigned short utf8_to_euc_E8B7[] = {
0xDF5E, 0, 0x6C65, 0, 0, 0xDF5F, 0xDF60, 0xDF61,
0xDF62, 0, 0xDF63, 0x6C6D, 0x6C6B, 0, 0xDF64, 0x6C68,
@@ -10438,16 +5539,6 @@ static const unsigned short utf8_to_euc_E8B7[] = {
0xDF6E, 0xDF70, 0xDF71, 0x4437, 0xDF72, 0x4129, 0, 0,
0, 0, 0, 0, 0x6C72, 0xDF73, 0, 0x6C75,
};
-static const unsigned short utf8_to_euc_E8B7_x0213[] = {
- 0xDF5E, 0, 0x6C65, 0, 0, 0xDF5F, 0xF93A, 0xDF61,
- 0xF93B, 0, 0xDF63, 0x6C6D, 0x6C6B, 0, 0x7C41, 0x6C68,
- 0, 0x7C42, 0, 0, 0xDF66, 0xDF67, 0x6C6A, 0x7C43,
- 0, 0xF93C, 0x6C69, 0x6C6C, 0, 0x3577, 0, 0x6C70,
- 0, 0x4057, 0, 0x6C71, 0xDF6A, 0xDF6B, 0, 0xDF6C,
- 0x3859, 0, 0x6C6E, 0x6C6F, 0xF93D, 0, 0, 0x4F29,
- 0xDF6E, 0xDF70, 0xDF71, 0x4437, 0xDF72, 0x4129, 0, 0,
- 0, 0, 0, 0, 0x6C72, 0xF940, 0, 0x6C75,
-};
static const unsigned short utf8_to_euc_E8B8[] = {
0, 0xDF74, 0, 0, 0xDF75, 0xDF76, 0xDF77, 0,
0x6C73, 0x6C74, 0x4D59, 0xDF78, 0, 0, 0, 0x4627,
@@ -10458,16 +5549,6 @@ static const unsigned short utf8_to_euc_E8B8[] = {
0x6C7C, 0xE024, 0, 0xE025, 0x6C7D, 0x6C7B, 0xE026, 0xE027,
0xE028, 0xE029, 0, 0, 0, 0xE02A, 0, 0,
};
-static const unsigned short utf8_to_euc_E8B8_x0213[] = {
- 0, 0xDF74, 0, 0, 0xDF75, 0xDF76, 0xF941, 0,
- 0x6C73, 0x6C74, 0x4D59, 0xDF78, 0xF93E, 0, 0, 0x4627,
- 0x6C78, 0xDF79, 0, 0, 0xF943, 0, 0xF944, 0,
- 0, 0, 0, 0, 0, 0x6C76, 0x6C77, 0x6C79,
- 0x7C44, 0xF945, 0xF946, 0x7C45, 0, 0, 0xE022, 0xF947,
- 0, 0, 0x6D29, 0, 0, 0, 0, 0,
- 0x6C7C, 0xE024, 0, 0xE025, 0x6C7D, 0x6C7B, 0xF94A, 0xE027,
- 0xE028, 0xF94B, 0, 0, 0, 0x7C46, 0, 0,
-};
static const unsigned short utf8_to_euc_E8B9[] = {
0xE02B, 0xE02C, 0x6C7A, 0, 0x447D, 0, 0, 0x6D21,
0x6D25, 0x6D22, 0x6C7E, 0xE02D, 0x6D23, 0xE02E, 0xE02F, 0xE030,
@@ -10478,16 +5559,6 @@ static const unsigned short utf8_to_euc_E8B9[] = {
0xE03C, 0xE03D, 0x6D2D, 0, 0x3D33, 0, 0x6D2C, 0,
0, 0xE03E, 0xE03F, 0xE040, 0x6D2E, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E8B9_x0213[] = {
- 0xE02B, 0xE02C, 0x6C7A, 0, 0x447D, 0, 0, 0x6D21,
- 0x6D25, 0x6D22, 0x6C7E, 0xF94C, 0x6D23, 0xE02E, 0xE02F, 0xE030,
- 0x6D24, 0, 0, 0, 0xF94D, 0x6D2B, 0, 0,
- 0, 0x6D26, 0, 0xE032, 0xE033, 0xE034, 0xE035, 0x4058,
- 0x6D28, 0xE036, 0xF94E, 0x6D2A, 0x6D27, 0, 0, 0,
- 0, 0xE038, 0, 0, 0xF94F, 0xF950, 0, 0xF951,
- 0x7C47, 0xE03D, 0x6D2D, 0, 0x3D33, 0, 0x6D2C, 0,
- 0, 0xE03E, 0xE03F, 0x7C48, 0x6D2E, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E8BA[] = {
0, 0x6D2F, 0xE041, 0xE042, 0x6D32, 0x6D31, 0, 0x6D30,
0, 0xE043, 0x6D34, 0x6D33, 0, 0x4C76, 0, 0,
@@ -10498,16 +5569,6 @@ static const unsigned short utf8_to_euc_E8BA[] = {
0x6D3C, 0x6D3E, 0, 0xE050, 0, 0xE051, 0, 0,
0, 0, 0xE052, 0xE053, 0, 0, 0x6D3F, 0,
};
-static const unsigned short utf8_to_euc_E8BA_x0213[] = {
- 0, 0x6D2F, 0xE041, 0xE042, 0x6D32, 0x6D31, 0, 0x6D30,
- 0, 0xE043, 0x6D34, 0x6D33, 0, 0x4C76, 0, 0,
- 0xE044, 0x6D36, 0xE045, 0x6D35, 0x6D37, 0xE046, 0, 0,
- 0xF952, 0x6D38, 0xE047, 0xE048, 0, 0xE049, 0xF953, 0,
- 0, 0x6D3A, 0xE04B, 0, 0, 0, 0, 0xE04C,
- 0, 0xE04D, 0x6D39, 0x3F48, 0x6D3B, 0xE04E, 0xF954, 0x366D,
- 0x6D3C, 0x6D3E, 0, 0xF955, 0, 0xF956, 0xF957, 0,
- 0, 0, 0xE052, 0xF958, 0, 0, 0x6D3F, 0,
-};
static const unsigned short utf8_to_euc_E8BB[] = {
0xE054, 0xE055, 0, 0xE056, 0xE057, 0x6D40, 0x6D3D, 0xE058,
0x6D41, 0, 0x3C56, 0x6D42, 0x3530, 0x3733, 0, 0xE059,
@@ -10518,16 +5579,6 @@ static const unsigned short utf8_to_euc_E8BB[] = {
0xE05F, 0xE060, 0, 0, 0, 0, 0, 0xE061,
0x3C34, 0xE062, 0xE063, 0x6D46, 0x6D45, 0x375A, 0x6D48, 0,
};
-static const unsigned short utf8_to_euc_E8BB_x0213[] = {
- 0x7C4A, 0xE055, 0, 0xE056, 0xE057, 0x6D40, 0x6D3D, 0xE058,
- 0x6D41, 0, 0x3C56, 0x6D42, 0x3530, 0x3733, 0, 0xE059,
- 0, 0xF95A, 0x382E, 0, 0xF95B, 0, 0, 0,
- 0, 0, 0, 0x6D43, 0xE05C, 0, 0, 0x4670,
- 0, 0, 0x453E, 0x6D44, 0, 0, 0, 0,
- 0xE05D, 0, 0, 0x6D47, 0, 0xE064, 0xE05E, 0,
- 0xE05F, 0xE060, 0, 0, 0, 0, 0, 0xE061,
- 0x3C34, 0xF95D, 0x7C4C, 0x6D46, 0x6D45, 0x375A, 0x6D48, 0,
-};
static const unsigned short utf8_to_euc_E8BC[] = {
0xE065, 0, 0xE066, 0x3353, 0, 0x6D4A, 0, 0xE067,
0xE068, 0x3A5C, 0x6D49, 0, 0x6D52, 0, 0, 0xE069,
@@ -10538,16 +5589,6 @@ static const unsigned short utf8_to_euc_E8BC[] = {
0, 0, 0, 0x6D54, 0xE078, 0xE079, 0xE07A, 0xE07B,
0x4D22, 0x6D56, 0xE07C, 0x6D55, 0, 0, 0x6D59, 0x4D41,
};
-static const unsigned short utf8_to_euc_E8BC_x0213[] = {
- 0xF95F, 0, 0xE066, 0x3353, 0, 0x6D4A, 0, 0xE067,
- 0xF960, 0x3A5C, 0x6D49, 0, 0x6D52, 0, 0, 0xE069,
- 0xE06A, 0, 0x6D4C, 0x6D4E, 0x4A65, 0x6D4B, 0xE06B, 0xF961,
- 0xE06D, 0x6D4D, 0, 0x6D51, 0x6D4F, 0x3531, 0x7C4D, 0x6D50,
- 0xE06F, 0xE070, 0, 0xE071, 0, 0xE072, 0x6D53, 0xE073,
- 0xE074, 0x475A, 0x4E58, 0xF962, 0xE075, 0x7C4E, 0xE077, 0x3D34,
- 0, 0, 0, 0x6D54, 0xE078, 0xE079, 0x7C4F, 0xE07B,
- 0x4D22, 0x6D56, 0xE07C, 0x6D55, 0, 0, 0x6D59, 0x4D41,
-};
static const unsigned short utf8_to_euc_E8BD[] = {
0xE07D, 0xE07E, 0x6D58, 0xE121, 0x336D, 0x6D57, 0x6D5C, 0xE122,
0, 0x6D5B, 0, 0, 0x6D5A, 0x4532, 0x6D5D, 0xE123,
@@ -10558,16 +5599,6 @@ static const unsigned short utf8_to_euc_E8BD[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E8BD_x0213[] = {
- 0xF963, 0xE07E, 0x6D58, 0xE121, 0x336D, 0x6D57, 0x6D5C, 0xE122,
- 0, 0x6D5B, 0xF964, 0, 0x6D5A, 0x4532, 0x6D5D, 0xE123,
- 0, 0xE124, 0xE125, 0xE126, 0x7C50, 0xE128, 0, 0x6D5E,
- 0xF965, 0, 0, 0, 0x6D5F, 0xE12A, 0xE12B, 0x396C,
- 0, 0x3725, 0x6D60, 0x6D61, 0x6D62, 0xE12C, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E8BE[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -10578,16 +5609,6 @@ static const unsigned short utf8_to_euc_E8BE[] = {
0x4324, 0x3F2B, 0x4740, 0, 0, 0xE133, 0xE134, 0x6D68,
0xE135, 0, 0x4A55, 0x4454, 0x397E, 0, 0xE136, 0x4329,
};
-static const unsigned short utf8_to_euc_E8BE_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0x3F49, 0x6D63, 0xE12D, 0x3C2D, 0x6D64,
- 0xE12E, 0xE12F, 0, 0x6D65, 0xF967, 0xE131, 0x7C52, 0x5221,
- 0x517E, 0, 0, 0, 0, 0x6D66, 0x6570, 0x6D67,
- 0x4324, 0x3F2B, 0x4740, 0, 0xF968, 0x7C53, 0xF96A, 0x6D68,
- 0xE135, 0, 0x4A55, 0x4454, 0x397E, 0, 0xE136, 0x4329,
-};
static const unsigned short utf8_to_euc_E8BF[] = {
0xE137, 0xE138, 0x312A, 0, 0x4B78, 0x3F57, 0xE139, 0,
0, 0, 0xE13A, 0xE13B, 0, 0xE13C, 0x375E, 0,
@@ -10598,16 +5619,6 @@ static const unsigned short utf8_to_euc_E8BF[] = {
0x3D52, 0xE146, 0, 0, 0x6D6F, 0xE147, 0xE148, 0x4C42,
0x6D7E, 0x6D71, 0x6D72, 0xE149, 0, 0x4449, 0xE14A, 0,
};
-static const unsigned short utf8_to_euc_E8BF_x0213[] = {
- 0xE137, 0xF96C, 0x312A, 0, 0x4B78, 0x3F57, 0xF96D, 0,
- 0, 0, 0xF96F, 0xE13B, 0, 0xF970, 0x375E, 0,
- 0xE13D, 0x3661, 0xE13E, 0xF971, 0x4A56, 0xF972, 0, 0,
- 0, 0, 0x6D69, 0, 0, 0, 0, 0,
- 0xF973, 0, 0x6D6B, 0xE142, 0x7C54, 0x6D6A, 0x3260, 0,
- 0x7C55, 0x4676, 0x6D6C, 0x4777, 0, 0x4533, 0x7C56, 0x6D6D,
- 0x3D52, 0xF974, 0, 0, 0x6D6F, 0xF975, 0xE148, 0x4C42,
- 0x6D7E, 0x6D71, 0x6D72, 0xF976, 0, 0x4449, 0xE14A, 0,
-};
static const unsigned short utf8_to_euc_E980[] = {
0x4260, 0x4177, 0xE14B, 0x4628, 0xE14C, 0x6D70, 0x3555, 0,
0xE14D, 0, 0, 0x6D79, 0xE14E, 0x6D76, 0x6E25, 0x4629,
@@ -10618,16 +5629,6 @@ static const unsigned short utf8_to_euc_E980[] = {
0, 0x3D35, 0x3F4A, 0xE157, 0xE158, 0x6D7C, 0x6D7B, 0xE159,
0x306F, 0x6D7D, 0, 0, 0x492F, 0, 0x6E27, 0xE15A,
};
-static const unsigned short utf8_to_euc_E980_x0213[] = {
- 0x4260, 0x4177, 0xF977, 0x4628, 0xE14C, 0x6D70, 0x3555, 0,
- 0x7C57, 0, 0, 0x6D79, 0xF978, 0x6D76, 0x6E25, 0x4629,
- 0x4360, 0x6D73, 0, 0x447E, 0x4553, 0x6D74, 0x6D78, 0x3F60,
- 0xE14F, 0x4767, 0x444C, 0xE150, 0, 0x4042, 0x6D77, 0x422E,
- 0x4224, 0x6D75, 0x3029, 0x4F22, 0, 0, 0, 0x6D7A,
- 0xE151, 0xE152, 0xE154, 0, 0xE155, 0x7C58, 0x4261, 0xE153,
- 0, 0x3D35, 0x3F4A, 0xE157, 0xE158, 0x6D7C, 0x6D7B, 0xF979,
- 0x306F, 0x6D7D, 0, 0, 0x492F, 0, 0x6E27, 0xE15A,
-};
static const unsigned short utf8_to_euc_E981[] = {
0, 0x465B, 0x3F6B, 0xE15B, 0xE15C, 0x4359, 0, 0x3678,
0, 0x6E26, 0x4D37, 0x313F, 0xE15D, 0x4A57, 0x3261, 0x6E21,
@@ -10638,16 +5639,6 @@ static const unsigned short utf8_to_euc_E981[] = {
0xE164, 0, 0x6E2F, 0, 0xE165, 0x3D65, 0x6E2D, 0x412B,
0x412A, 0xE166, 0x3064, 0, 0x4E4B, 0x6E31, 0, 0x4872,
};
-static const unsigned short utf8_to_euc_E981_x0213[] = {
- 0, 0x465B, 0x3F6B, 0xF97B, 0xF97C, 0x4359, 0, 0x3678,
- 0, 0x6E26, 0x4D37, 0x313F, 0xE15D, 0x4A57, 0x3261, 0x6E21,
- 0x6E22, 0x6E23, 0x6E24, 0x463B, 0x4323, 0x3063, 0x6E28, 0,
- 0x6E29, 0x7423, 0, 0xE15E, 0x423D, 0xF97D, 0x6E2A, 0,
- 0x3173, 0x414C, 0xE160, 0x382F, 0, 0x4D5A, 0xE161, 0xE162,
- 0x6E2B, 0x452C, 0, 0, 0xE163, 0x4178, 0x3C57, 0x6E2C,
- 0xE164, 0, 0x6E2F, 0, 0xE165, 0x3D65, 0x6E2D, 0x412B,
- 0x412A, 0xE166, 0x3064, 0, 0x4E4B, 0x6E31, 0, 0x4872,
-};
static const unsigned short utf8_to_euc_E982[] = {
0x6E33, 0x6E32, 0x6E30, 0x6364, 0x3454, 0xE167, 0, 0x6D6E,
0xE168, 0x6E35, 0x6E34, 0xE169, 0xE16A, 0, 0xE16B, 0x6E36,
@@ -10658,16 +5649,6 @@ static const unsigned short utf8_to_euc_E982[] = {
0xE176, 0x6E39, 0xE177, 0xE178, 0xE179, 0x6E3A, 0xE17A, 0,
0x4521, 0, 0, 0, 0, 0xE17B, 0xE17D, 0,
};
-static const unsigned short utf8_to_euc_E982_x0213[] = {
- 0x6E33, 0x6E32, 0x6E30, 0x6364, 0x3454, 0xFA22, 0, 0x6D6E,
- 0x7C5A, 0x6E35, 0x6E34, 0xE169, 0xFA23, 0, 0xE16B, 0x6E36,
- 0xFA24, 0x4D38, 0, 0, 0, 0x7C5B, 0, 0x7C5C,
- 0xE16F, 0x7C5D, 0, 0x7C5E, 0, 0, 0, 0,
- 0xE172, 0xFA26, 0x7C5F, 0x4661, 0, 0xE175, 0x4B2E, 0,
- 0x6E37, 0, 0x3C59, 0, 0, 0, 0, 0x6E38,
- 0xFA28, 0x6E39, 0xE177, 0x7C60, 0xE179, 0x6E3A, 0xFA29, 0,
- 0x4521, 0, 0, 0, 0, 0xE17B, 0x7C61, 0,
-};
static const unsigned short utf8_to_euc_E983[] = {
0, 0x306A, 0, 0xE17E, 0xE221, 0xE222, 0, 0xE223,
0xE224, 0, 0x3959, 0, 0xE17C, 0, 0x4F3A, 0,
@@ -10678,16 +5659,6 @@ static const unsigned short utf8_to_euc_E983[] = {
0xE231, 0, 0, 0, 0xE232, 0x4D39, 0xE22E, 0x363F,
0, 0, 0, 0, 0, 0x4554, 0xE233, 0xE234,
};
-static const unsigned short utf8_to_euc_E983_x0213[] = {
- 0, 0x306A, 0, 0xFA2A, 0x7C62, 0x7C63, 0, 0x7C64,
- 0xFA2B, 0, 0x3959, 0, 0xE17C, 0, 0x4F3A, 0,
- 0, 0, 0xE22D, 0, 0, 0xE225, 0, 0x7C65,
- 0xE227, 0xE228, 0, 0x6E3E, 0xFA2D, 0x7C66, 0x7C67, 0xFA2E,
- 0, 0x3734, 0x6E3B, 0, 0x6E3C, 0xE22C, 0, 0,
- 0x4974, 0, 0, 0xFA33, 0, 0x3354, 0, 0x7C68,
- 0xE231, 0, 0xFA31, 0, 0x7C69, 0x4D39, 0xFA30, 0x363F,
- 0, 0, 0, 0, 0, 0x4554, 0xFA34, 0xFA35,
-};
static const unsigned short utf8_to_euc_E984[] = {
0xE235, 0, 0x6E3F, 0, 0xE236, 0xE237, 0xE238, 0,
0xE239, 0, 0, 0, 0, 0xE23A, 0, 0,
@@ -10698,16 +5669,6 @@ static const unsigned short utf8_to_euc_E984[] = {
0x6E43, 0xE24B, 0x6E42, 0, 0xE24C, 0, 0xE24D, 0xE24E,
0, 0xE24F, 0xE250, 0, 0xE251, 0xE252, 0, 0,
};
-static const unsigned short utf8_to_euc_E984_x0213[] = {
- 0xFA32, 0, 0x6E3F, 0, 0xFA36, 0xE237, 0xFA37, 0,
- 0xE239, 0, 0, 0, 0, 0xE23A, 0, 0,
- 0xE23B, 0, 0x6E40, 0, 0x7C6B, 0x7C6C, 0x7C6D, 0xE23E,
- 0xFA38, 0x6E41, 0xE240, 0, 0xFA39, 0, 0xFA3A, 0,
- 0xE243, 0, 0x7C6E, 0x7C6F, 0, 0xE244, 0, 0x7C70,
- 0, 0xE248, 0, 0, 0, 0x4522, 0xE249, 0x7C71,
- 0x6E43, 0x7C72, 0x6E42, 0, 0x7C73, 0, 0xE24D, 0xFA3B,
- 0, 0xFA3C, 0xFA3D, 0, 0xE251, 0x7C74, 0, 0,
-};
static const unsigned short utf8_to_euc_E985[] = {
0, 0, 0, 0xE253, 0, 0, 0, 0xE254,
0xE255, 0x4653, 0x6E44, 0x3D36, 0x3C60, 0x475B, 0x4371, 0xE256,
@@ -10718,16 +5679,6 @@ static const unsigned short utf8_to_euc_E985[] = {
0, 0, 0x6E4B, 0x6E4A, 0xE260, 0x395A, 0, 0x3973,
0x3B40, 0xE261, 0xE262, 0xE263, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E985_x0213[] = {
- 0, 0, 0, 0xE253, 0, 0, 0xFA3E, 0xFA3F,
- 0x7C75, 0x4653, 0x6E44, 0x3D36, 0x3C60, 0x475B, 0x4371, 0xE256,
- 0, 0, 0x3C72, 0xE257, 0x3F6C, 0, 0x6E45, 0xFA40,
- 0x6E46, 0xFA41, 0xE25A, 0x7C76, 0, 0, 0, 0,
- 0, 0xFA42, 0x3F5D, 0x6E47, 0xFA43, 0x6E48, 0, 0xE25E,
- 0, 0x6E49, 0x4D6F, 0, 0x3D37, 0xE25F, 0, 0,
- 0, 0, 0x6E4B, 0x6E4A, 0xFA44, 0x395A, 0, 0x3973,
- 0x3B40, 0xFA45, 0xE262, 0xE263, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E986[] = {
0, 0xE264, 0x6E4E, 0xE265, 0, 0xE266, 0xE267, 0x3D66,
0, 0x6E4D, 0xE268, 0x6E4C, 0, 0x4269, 0xE269, 0,
@@ -10738,16 +5689,6 @@ static const unsigned short utf8_to_euc_E986[] = {
0xE276, 0xE277, 0xE278, 0xE279, 0x6E54, 0x6E53, 0xE27A, 0,
0x3E7A, 0, 0x6E55, 0xE27B, 0xE27C, 0xE27D, 0, 0xE27E,
};
-static const unsigned short utf8_to_euc_E986_x0213[] = {
- 0, 0xE264, 0x6E4E, 0x7C77, 0, 0xFA46, 0xE267, 0x3D66,
- 0, 0x6E4D, 0xE268, 0x6E4C, 0, 0x4269, 0xFA47, 0,
- 0x386F, 0xE26A, 0x4043, 0xE26B, 0xE26C, 0xE26D, 0, 0x4830,
- 0xE26E, 0, 0, 0, 0x3D39, 0, 0x7C78, 0,
- 0, 0xE270, 0x6E4F, 0, 0x3E5F, 0, 0xE271, 0,
- 0xFA48, 0, 0x6E52, 0x6E50, 0x7C79, 0xE274, 0xFA49, 0x6E51,
- 0xE276, 0x7C7A, 0xE278, 0xFA4A, 0x6E54, 0x6E53, 0xFA4B, 0,
- 0x3E7A, 0, 0x6E55, 0xE27B, 0x7C7B, 0xE27D, 0, 0xE27E,
-};
static const unsigned short utf8_to_euc_E987[] = {
0x6E56, 0x6E57, 0xE321, 0xE322, 0, 0xE323, 0x4850, 0x3A53,
0x3C61, 0x6E58, 0, 0x6E59, 0x4E24, 0x3D45, 0x4C6E, 0x4E4C,
@@ -10758,16 +5699,6 @@ static const unsigned short utf8_to_euc_E987[] = {
0xE332, 0xE333, 0, 0, 0, 0x6E60, 0x6E61, 0xE334,
0, 0xE335, 0, 0xE336, 0x6E5F, 0xE337, 0, 0x6E63,
};
-static const unsigned short utf8_to_euc_E987_x0213[] = {
- 0x6E56, 0x6E57, 0xE321, 0xFA4C, 0xFA4D, 0xE323, 0x4850, 0x3A53,
- 0x3C61, 0x6E58, 0, 0x6E59, 0x4E24, 0x3D45, 0x4C6E, 0x4E4C,
- 0x6E5A, 0x3662, 0, 0xE324, 0xE325, 0, 0x6E5B, 0x7C7C,
- 0x4523, 0xE327, 0xFA4E, 0x6E5E, 0x3378, 0x3F4B, 0xE329, 0x6E5C,
- 0, 0x6E5D, 0, 0x4460, 0x7C7E, 0x7D21, 0x4B55, 0x367C,
- 0, 0xE32C, 0xE32D, 0, 0xFA51, 0x7D22, 0xFA52, 0xE331,
- 0xE332, 0x7D23, 0, 0, 0, 0x6E60, 0x6E61, 0xE334,
- 0, 0xE335, 0, 0x7C7D, 0x6E5F, 0xE337, 0, 0x6E63,
-};
static const unsigned short utf8_to_euc_E988[] = {
0xE338, 0xE339, 0, 0, 0xE33A, 0xE33B, 0xE33C, 0xE33D,
0, 0xE33E, 0xE33F, 0, 0xE340, 0x465F, 0x3343, 0,
@@ -10778,16 +5709,6 @@ static const unsigned short utf8_to_euc_E988[] = {
0xE34F, 0, 0, 0xE350, 0x4E6B, 0xE351, 0xE352, 0x385A,
0xE353, 0xE354, 0xE355, 0, 0xE356, 0, 0xE357, 0x6E6F,
};
-static const unsigned short utf8_to_euc_E988_x0213[] = {
- 0xE338, 0xFA53, 0, 0, 0xE33A, 0xE33B, 0xE33C, 0x7D24,
- 0, 0xE33E, 0xFA54, 0, 0xE340, 0x465F, 0x3343, 0,
- 0x7D25, 0x6E67, 0xE342, 0xE343, 0x6E64, 0x6E66, 0xFA55, 0xFA56,
- 0xE345, 0, 0, 0, 0xE346, 0xE347, 0x6E62, 0,
- 0, 0, 0, 0xE348, 0xE349, 0xE34A, 0xE34B, 0,
- 0xE34C, 0x6F4F, 0, 0, 0x6E65, 0, 0xE34D, 0xE34E,
- 0xE34F, 0, 0, 0xFA58, 0x4E6B, 0xE351, 0xE352, 0x385A,
- 0x7D26, 0x7D27, 0x7D28, 0, 0x7D29, 0, 0xE357, 0x6E6F,
-};
static const unsigned short utf8_to_euc_E989[] = {
0xE358, 0, 0xE359, 0xE35A, 0x4534, 0x6E6A, 0xE35B, 0xE35C,
0x6E6D, 0x6E6B, 0xE35D, 0x6E70, 0, 0xE35E, 0xE35F, 0xE360,
@@ -10798,16 +5719,6 @@ static const unsigned short utf8_to_euc_E989[] = {
0xE36E, 0x395B, 0, 0, 0, 0xE36F, 0xE370, 0xE371,
0xE372, 0xE373, 0, 0xE374, 0xE375, 0xE376, 0x4B48, 0xE377,
};
-static const unsigned short utf8_to_euc_E989_x0213[] = {
- 0x7D2A, 0, 0xFA59, 0x7D2B, 0x4534, 0x6E6A, 0xE35B, 0xFA5A,
- 0x6E6D, 0x6E6B, 0xFA5B, 0x6E70, 0, 0xE35E, 0xFA5C, 0x7D2C,
- 0x6E71, 0xFA5D, 0, 0, 0, 0, 0xFA5E, 0x6E69,
- 0xE362, 0xFA5F, 0x6E76, 0x3174, 0xE364, 0xE365, 0x6E68, 0,
- 0xFA60, 0xFA61, 0x482D, 0, 0x6E6C, 0xFA62, 0x3E60, 0xFA63,
- 0xFA64, 0xE36B, 0, 0, 0, 0, 0xE36C, 0xE36D,
- 0xE36E, 0x395B, 0, 0, 0, 0xE36F, 0xE370, 0xE371,
- 0x7D2D, 0xE373, 0, 0xE374, 0xFA67, 0xFA68, 0x4B48, 0xFA69,
-};
static const unsigned short utf8_to_euc_E98A[] = {
0x3664, 0, 0, 0x3D46, 0, 0x463C, 0, 0,
0xE378, 0xE379, 0xE37A, 0, 0, 0xE37B, 0xE37C, 0,
@@ -10818,16 +5729,6 @@ static const unsigned short utf8_to_euc_E98A[] = {
0, 0, 0xE42A, 0, 0, 0, 0xE42B, 0x6E79,
0xE42C, 0x6E78, 0xE42D, 0xE42E, 0xE42F, 0xE430, 0, 0xE431,
};
-static const unsigned short utf8_to_euc_E98A_x0213[] = {
- 0x3664, 0, 0, 0x3D46, 0, 0x463C, 0, 0,
- 0x7D2E, 0xFA6A, 0xE37A, 0, 0, 0xFA6B, 0xE37C, 0,
- 0, 0x412D, 0xE37D, 0x6E74, 0, 0x6E6E, 0x6E73, 0xFA6C,
- 0x4C43, 0xFA6D, 0x4438, 0x6E75, 0x6E72, 0, 0, 0xFA6E,
- 0xE423, 0, 0, 0, 0xE424, 0xE425, 0, 0xFA6F,
- 0xE427, 0, 0, 0xFA70, 0, 0x412C, 0, 0xE429,
- 0, 0, 0xFA73, 0, 0, 0, 0xE42B, 0x6E79,
- 0xE42C, 0x6E78, 0xE42D, 0xE42E, 0xE42F, 0xE430, 0, 0xFA74,
-};
static const unsigned short utf8_to_euc_E98B[] = {
0xE432, 0xE433, 0xE434, 0xE435, 0, 0xE436, 0xE437, 0xE438,
0xE439, 0, 0, 0xE43A, 0xE43B, 0xE43C, 0xE43D, 0x6E77,
@@ -10838,16 +5739,6 @@ static const unsigned short utf8_to_euc_E98B[] = {
0xE44F, 0, 0x4946, 0x4372, 0, 0, 0, 0,
0x3578, 0xE450, 0x6E7C, 0xE451, 0x395D, 0, 0, 0xE452,
};
-static const unsigned short utf8_to_euc_E98B_x0213[] = {
- 0xFA75, 0xE433, 0x7D2F, 0xE435, 0, 0xE436, 0xFA76, 0xE438,
- 0xE439, 0, 0, 0x7D30, 0x7D31, 0xE43C, 0xFA77, 0x6E77,
- 0xFA78, 0, 0x4B2F, 0x7D32, 0, 0xE440, 0, 0xFA79,
- 0xE442, 0xFA7A, 0, 0, 0xE444, 0xE445, 0, 0xE446,
- 0x7D33, 0xE448, 0, 0xE449, 0x3D7B, 0xFA7B, 0, 0xFA7C,
- 0xE44C, 0x6E7A, 0x4A5F, 0, 0xE44D, 0x3154, 0xE44E, 0,
- 0xE44F, 0, 0x4946, 0x4372, 0, 0, 0, 0xFB22,
- 0x3578, 0xFB23, 0x6E7C, 0xFB24, 0x395D, 0, 0, 0x7D34,
-};
static const unsigned short utf8_to_euc_E98C[] = {
0xE453, 0, 0xE454, 0, 0, 0, 0x3B2C, 0,
0xE455, 0, 0, 0, 0, 0xE456, 0, 0x6E7B,
@@ -10858,16 +5749,6 @@ static const unsigned short utf8_to_euc_E98C[] = {
0, 0, 0x4F3F, 0xE464, 0xE465, 0x6F26, 0xE466, 0xE467,
0, 0, 0x6F25, 0x6F27, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E98C_x0213[] = {
- 0xE453, 0, 0xFB25, 0, 0x7D35, 0, 0x3B2C, 0,
- 0xE455, 0, 0, 0, 0, 0xFB26, 0, 0x6E7B,
- 0x3F6D, 0xFA7D, 0, 0, 0xE458, 0xFB27, 0, 0,
- 0x3F6E, 0x6F21, 0x6F23, 0, 0xE45A, 0xFB28, 0xFB29, 0x7D36,
- 0x3E7B, 0x7D37, 0x6F22, 0x6F24, 0xE45F, 0x7D38, 0x3653, 0xFB2A,
- 0x4945, 0xFB2B, 0xE463, 0x3C62, 0x4F23, 0, 0x6E7E, 0x3A78,
- 0, 0, 0x4F3F, 0xE464, 0xE465, 0x6F26, 0xE466, 0xE467,
- 0, 0, 0x6F25, 0x6F27, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E98D[] = {
0, 0, 0, 0, 0x6E7D, 0, 0, 0xE468,
0xE469, 0xE46A, 0, 0x4669, 0, 0x4555, 0, 0,
@@ -10878,16 +5759,6 @@ static const unsigned short utf8_to_euc_E98D[] = {
0xE47A, 0xE47B, 0, 0xE47C, 0xE47D, 0x3830, 0xE47E, 0,
0, 0, 0xE521, 0, 0x6F2A, 0xE522, 0x3E61, 0xE523,
};
-static const unsigned short utf8_to_euc_E98D_x0213[] = {
- 0, 0, 0, 0, 0x6E7D, 0, 0, 0xFB2E,
- 0x7D39, 0x7D3A, 0x7D3B, 0x4669, 0, 0x4555, 0, 0,
- 0xE46B, 0xFB2F, 0xE46D, 0, 0x4457, 0xE46E, 0x6F2C, 0xFB30,
- 0xE470, 0, 0xFB31, 0x4343, 0x6F28, 0, 0xE472, 0,
- 0x6F29, 0, 0, 0, 0x7D3C, 0x7D3D, 0, 0xE475,
- 0, 0xE476, 0x7D3E, 0xFB32, 0x372D, 0xE478, 0x6F2B, 0xE479,
- 0x7D3F, 0xFB33, 0, 0xFB34, 0xE47D, 0x3830, 0xE47E, 0,
- 0, 0, 0xE521, 0, 0x6F2A, 0xE522, 0x3E61, 0xE523,
-};
static const unsigned short utf8_to_euc_E98E[] = {
0xE524, 0xE525, 0xE526, 0, 0, 0, 0, 0,
0xE527, 0, 0xE528, 0xE529, 0x3379, 0xE52A, 0, 0xE52B,
@@ -10898,16 +5769,6 @@ static const unsigned short utf8_to_euc_E98E[] = {
0x6F2D, 0, 0, 0, 0xE537, 0xE538, 0xE539, 0,
0, 0x6F31, 0xE53A, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E98E_x0213[] = {
- 0xE524, 0xE525, 0xE526, 0, 0, 0, 0, 0,
- 0xFB38, 0, 0xE528, 0xFB39, 0x3379, 0xE52A, 0, 0xFB3A,
- 0, 0, 0xE52C, 0, 0x6F30, 0xE52D, 0x3A3F, 0x4179,
- 0xE52E, 0, 0x444A, 0x7D40, 0, 0, 0xFB3B, 0,
- 0, 0xFB35, 0, 0x7D41, 0xE533, 0, 0xE534, 0x333B,
- 0xE535, 0xE53B, 0, 0xE536, 0x6F2E, 0x6F2F, 0x4443, 0,
- 0x6F2D, 0, 0, 0, 0xE537, 0xE538, 0xE539, 0,
- 0, 0x6F31, 0x7D42, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E98F[] = {
0, 0xE53C, 0, 0x6F37, 0xE53D, 0xE53E, 0xE53F, 0xE540,
0x6F3A, 0xE541, 0xE542, 0xE543, 0xE544, 0xE545, 0, 0,
@@ -10918,16 +5779,6 @@ static const unsigned short utf8_to_euc_E98F[] = {
0, 0, 0, 0, 0, 0, 0, 0xE54F,
0xE550, 0xE54E, 0xE551, 0xE552, 0, 0xE553, 0, 0,
};
-static const unsigned short utf8_to_euc_E98F_x0213[] = {
- 0, 0xFB40, 0, 0x6F37, 0xE53D, 0xE53E, 0x7D43, 0xFB41,
- 0x6F3A, 0xE541, 0xE542, 0xE543, 0xE544, 0xE545, 0, 0,
- 0x6F39, 0x452D, 0, 0xE546, 0, 0, 0x6F32, 0x6F33,
- 0x6F36, 0xE547, 0, 0, 0xFB42, 0x6F38, 0x7D44, 0x7D45,
- 0, 0x3640, 0xFB43, 0, 0x6F3B, 0x6F35, 0xE54C, 0xFB44,
- 0x6F34, 0, 0, 0, 0, 0, 0, 0,
- 0, 0xFB3F, 0, 0, 0, 0xFB3C, 0, 0xE54F,
- 0xE550, 0xE54E, 0xE551, 0xFB49, 0, 0x7D47, 0, 0,
-};
static const unsigned short utf8_to_euc_E990[] = {
0, 0xE554, 0xE555, 0x6F3F, 0xE556, 0, 0, 0x6F40,
0xE557, 0xE558, 0, 0, 0, 0xE559, 0xE55A, 0xE55B,
@@ -10938,16 +5789,6 @@ static const unsigned short utf8_to_euc_E990[] = {
0, 0xE562, 0xE563, 0xE564, 0xE565, 0x6F44, 0x6F42, 0,
0x4278, 0, 0x6F46, 0xE566, 0, 0xE568, 0, 0xE567,
};
-static const unsigned short utf8_to_euc_E990_x0213[] = {
- 0, 0xE554, 0xE555, 0x6F3F, 0x7D46, 0, 0, 0x6F40,
- 0xE557, 0xFB45, 0, 0, 0, 0xE559, 0xE55A, 0xFB46,
- 0x6F41, 0, 0, 0x6F3E, 0x6F3D, 0xE55C, 0xFB47, 0xFB48,
- 0x3E62, 0x462A, 0x6F3C, 0, 0, 0, 0, 0xE55F,
- 0, 0x6F45, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0x6F43, 0, 0, 0xE560, 0xE561,
- 0, 0xE562, 0xFB4A, 0x7D48, 0xFB4B, 0x6F44, 0x6F42, 0,
- 0x4278, 0, 0x6F46, 0xFB4C, 0, 0xE568, 0, 0xE567,
-};
static const unsigned short utf8_to_euc_E991[] = {
0, 0x6F47, 0, 0xE569, 0x6F49, 0xE56A, 0, 0,
0xE56B, 0, 0xE56C, 0, 0xE56D, 0, 0, 0,
@@ -10958,16 +5799,6 @@ static const unsigned short utf8_to_euc_E991[] = {
0x6F50, 0xE579, 0xE57A, 0, 0, 0x6F51, 0, 0x6F52,
0, 0, 0, 0, 0x6F55, 0x6F53, 0x6F56, 0x6F58,
};
-static const unsigned short utf8_to_euc_E991_x0213[] = {
- 0, 0x6F47, 0, 0xE569, 0x6F49, 0xFB4D, 0, 0,
- 0xE56B, 0, 0x7D49, 0, 0xE56D, 0, 0, 0,
- 0, 0x3455, 0x6F48, 0x4C7A, 0, 0xE56E, 0, 0,
- 0, 0xE56F, 0x6F54, 0x6F4A, 0xE570, 0, 0x6F4D, 0xE571,
- 0x6F4B, 0xE572, 0x6F4C, 0x7D4A, 0, 0, 0, 0,
- 0xE574, 0, 0x6F4E, 0x7D4B, 0, 0xFB50, 0xE577, 0xFB51,
- 0x6F50, 0x7D4C, 0x7D4D, 0, 0, 0x6F51, 0, 0x6F52,
- 0, 0, 0, 0, 0x6F55, 0x6F53, 0x6F56, 0x6F58,
-};
static const unsigned short utf8_to_euc_E992[] = {
0, 0x6F57, 0, 0xE57C, 0xE57B, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -10988,16 +5819,6 @@ static const unsigned short utf8_to_euc_E995[] = {
0, 0, 0, 0, 0, 0, 0, 0x4439,
0xE57D, 0xE57E, 0, 0, 0, 0, 0xE621, 0,
};
-static const unsigned short utf8_to_euc_E995_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0x4439,
- 0xFB52, 0xFB53, 0, 0, 0, 0, 0xE621, 0,
-};
static const unsigned short utf8_to_euc_E996[] = {
0x4C67, 0, 0x6F59, 0x412E, 0xE622, 0, 0, 0x6F5A,
0xE623, 0x4A44, 0x6F5B, 0x332B, 0xE624, 0xE625, 0xE626, 0x313C,
@@ -11008,16 +5829,6 @@ static const unsigned short utf8_to_euc_E996[] = {
0, 0, 0x315C, 0, 0xE62F, 0, 0xE630, 0,
0, 0x6F66, 0xE631, 0x6F65, 0x6F64, 0xE632, 0x6F67, 0xE633,
};
-static const unsigned short utf8_to_euc_E996_x0213[] = {
- 0x4C67, 0, 0x6F59, 0x412E, 0xE622, 0, 0xFB54, 0x6F5A,
- 0xE623, 0x4A44, 0x6F5B, 0x332B, 0xFB55, 0xFB56, 0x7D4E, 0x313C,
- 0, 0x3457, 0xF471, 0x3456, 0x6F5C, 0, 0x6F5D, 0,
- 0x6F5E, 0x6F5F, 0, 0, 0, 0xE627, 0xE628, 0x7D4F,
- 0x6F60, 0xE62A, 0x3458, 0x3355, 0x395E, 0x4836, 0x7D50, 0x6F62,
- 0x6F61, 0x7D51, 0, 0xFB58, 0x7D52, 0x6F63, 0, 0,
- 0, 0, 0x315C, 0, 0xFB59, 0, 0x7D53, 0,
- 0, 0x6F66, 0xE631, 0x6F65, 0x6F64, 0x7D54, 0x6F67, 0xE633,
-};
static const unsigned short utf8_to_euc_E997[] = {
0, 0, 0, 0x6F6A, 0, 0, 0xE634, 0x3047,
0xE635, 0xE636, 0x6F68, 0xE637, 0x6F6C, 0x6F6B, 0, 0,
@@ -11028,16 +5839,6 @@ static const unsigned short utf8_to_euc_E997[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E997_x0213[] = {
- 0, 0, 0, 0x6F6A, 0, 0, 0xE634, 0x3047,
- 0xFB5B, 0xE636, 0x6F68, 0x7D55, 0x6F6C, 0x6F6B, 0, 0,
- 0x7D56, 0xE639, 0xE63A, 0x7D57, 0x6F6E, 0x6F6D, 0x6F6F, 0,
- 0x462E, 0xE63C, 0x7D59, 0, 0x6F70, 0xE63E, 0x7D5A, 0xE640,
- 0xE641, 0x6F71, 0x6F73, 0, 0xE642, 0x6F72, 0xE643, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E998[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -11048,16 +5849,6 @@ static const unsigned short utf8_to_euc_E998[] = {
0, 0xE64B, 0x4B49, 0xE64C, 0, 0, 0, 0xE64D,
0xE64E, 0xE64F, 0xE650, 0x414B, 0xE651, 0xE652, 0, 0x3024,
};
-static const unsigned short utf8_to_euc_E998_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0x496C, 0xFA25, 0xE645, 0,
- 0, 0x6F74, 0xE646, 0, 0xE647, 0xE648, 0xE649, 0,
- 0x6F75, 0, 0x3A65, 0, 0xFB5E, 0, 0x6F76, 0x6F77,
- 0, 0xE64B, 0x4B49, 0xFB5F, 0xFB60, 0, 0, 0xE64D,
- 0xE64E, 0xE64F, 0xE650, 0x414B, 0xFB62, 0xE652, 0, 0x3024,
-};
static const unsigned short utf8_to_euc_E999[] = {
0x424B, 0xE653, 0x6F78, 0, 0x496D, 0, 0, 0,
0, 0, 0, 0x6F7B, 0x6F79, 0x395F, 0, 0x6F7A,
@@ -11068,16 +5859,6 @@ static const unsigned short utf8_to_euc_E999[] = {
0x3122, 0, 0x7024, 0x4444, 0xE65B, 0x4E4D, 0x462B, 0x6F7C,
0x4E26, 0, 0x3831, 0xE65C, 0xE65D, 0x4D5B, 0xE65E, 0xE65F,
};
-static const unsigned short utf8_to_euc_E999_x0213[] = {
- 0x424B, 0xFB63, 0x6F78, 0, 0x496D, 0, 0, 0,
- 0, 0, 0, 0x6F7B, 0x6F79, 0x395F, 0, 0x6F7A,
- 0x3842, 0, 0xE654, 0, 0xE655, 0, 0xE656, 0xE657,
- 0x7D5B, 0, 0, 0x4A45, 0x6F7D, 0x7021, 0x6F7E, 0x7022,
- 0, 0xFB64, 0x3121, 0x3F58, 0x3D7C, 0x3459, 0x7023, 0,
- 0, 0, 0x4766, 0, 0x7025, 0, 0xE65A, 0,
- 0x3122, 0, 0x7024, 0x4444, 0xE65B, 0x4E4D, 0x462B, 0x6F7C,
- 0x4E26, 0, 0x3831, 0xE65C, 0xE65D, 0x4D5B, 0xE65E, 0xE65F,
-};
static const unsigned short utf8_to_euc_E99A[] = {
0, 0xE660, 0xE661, 0xE662, 0xE663, 0x3679, 0x4E34, 0,
0x3728, 0xE664, 0x4262, 0x6721, 0, 0x7026, 0x332C, 0x3F6F,
@@ -11088,16 +5869,6 @@ static const unsigned short utf8_to_euc_E99A[] = {
0x702E, 0x702C, 0x702D, 0xE670, 0x702F, 0, 0x7030, 0x4E6C,
0x7031, 0x7032, 0xE671, 0x4049, 0x483B, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E99A_x0213[] = {
- 0, 0xE660, 0xFB66, 0xE662, 0x7D5C, 0x3679, 0x4E34, 0,
- 0x3728, 0xE664, 0x4262, 0x6721, 0, 0x7026, 0x332C, 0x3F6F,
- 0, 0xE665, 0, 0, 0x3356, 0x7028, 0xE666, 0x7029,
- 0x7027, 0x3764, 0xFB68, 0x3A5D, 0x3E63, 0x7D5E, 0, 0xE669,
- 0x3123, 0, 0, 0x4E59, 0x7D5F, 0x7D60, 0xE66C, 0x702B,
- 0x6E2E, 0xFB6B, 0x702A, 0, 0, 0, 0xE66E, 0xFB6C,
- 0x702E, 0x702C, 0x702D, 0xFB6D, 0x702F, 0, 0x7030, 0x4E6C,
- 0x7031, 0x7032, 0xFB6E, 0x4049, 0x483B, 0xFB6F, 0, 0,
-};
static const unsigned short utf8_to_euc_E99B[] = {
0x3F7D, 0x3467, 0, 0, 0x4D3A, 0x326D, 0x3D38, 0x385B,
0, 0x7035, 0xE672, 0x7034, 0x3B73, 0x7036, 0x7033, 0,
@@ -11108,16 +5879,6 @@ static const unsigned short utf8_to_euc_E99B[] = {
0x4A37, 0xE67C, 0x3140, 0, 0, 0, 0x4E6D, 0x4D6B,
0, 0x703B, 0xE67D, 0x4545, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E99B_x0213[] = {
- 0x3F7D, 0x3467, 0, 0, 0x4D3A, 0x326D, 0x3D38, 0x385B,
- 0, 0x7035, 0xE672, 0x7034, 0x3B73, 0x7036, 0x7033, 0,
- 0, 0x3B28, 0x7D61, 0, 0, 0x703A, 0x6A2D, 0,
- 0xFB72, 0x5256, 0xFB73, 0x3F77, 0x7038, 0xFB74, 0x7D62, 0xE679,
- 0, 0, 0x4E25, 0x4671, 0, 0, 0, 0,
- 0x312B, 0x7D64, 0x4063, 0x3C36, 0, 0, 0, 0x7D65,
- 0x4A37, 0xE67C, 0x3140, 0, 0, 0, 0x4E6D, 0x4D6B,
- 0, 0x703B, 0xE67D, 0x4545, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E99C[] = {
0x3C7B, 0, 0xE67E, 0xE721, 0x703C, 0xE722, 0x703D, 0x3F4C,
0x703E, 0xE723, 0x4E6E, 0, 0, 0x7039, 0x7040, 0x7042,
@@ -11128,16 +5889,6 @@ static const unsigned short utf8_to_euc_E99C[] = {
0x7047, 0xE72B, 0x4F2A, 0xE72C, 0, 0, 0, 0,
0x5B31, 0x7048, 0, 0xF474, 0, 0x7049, 0x704A, 0,
};
-static const unsigned short utf8_to_euc_E99C_x0213[] = {
- 0x3C7B, 0, 0xE67E, 0xE721, 0x703C, 0xE722, 0x703D, 0x3F4C,
- 0x703E, 0xE723, 0x4E6E, 0, 0, 0x7039, 0x7040, 0x7042,
- 0, 0x7041, 0, 0x703F, 0xFB76, 0, 0x7043, 0,
- 0, 0x7044, 0xE724, 0xE725, 0x417A, 0xE726, 0x3262, 0,
- 0, 0xE727, 0xE728, 0xFB77, 0x7045, 0, 0, 0x4C38,
- 0xE72A, 0, 0x7046, 0, 0, 0, 0, 0,
- 0x7047, 0xE72B, 0x4F2A, 0x7D66, 0, 0, 0xFB79, 0,
- 0x5B31, 0x7048, 0, 0x7D67, 0, 0x7049, 0x704A, 0,
-};
static const unsigned short utf8_to_euc_E99D[] = {
0, 0xE72D, 0x704E, 0xE72E, 0x704B, 0, 0x704C, 0,
0x704D, 0x704F, 0xE72F, 0, 0, 0xF475, 0xE730, 0xE731,
@@ -11148,16 +5899,6 @@ static const unsigned short utf8_to_euc_E99D[] = {
0, 0x7057, 0, 0xE73B, 0x3724, 0, 0xE73C, 0xE73D,
0xE73E, 0x7058, 0x705C, 0xE73F, 0x705A, 0xE740, 0, 0xE741,
};
-static const unsigned short utf8_to_euc_E99D_x0213[] = {
- 0, 0xFB7A, 0x704E, 0xE72E, 0x704B, 0, 0x704C, 0xFB7B,
- 0x704D, 0x704F, 0xE72F, 0, 0, 0x7D68, 0x7D69, 0x7D6A,
- 0, 0xF476, 0x4044, 0, 0, 0xFB7C, 0x4C77, 0xFB7D,
- 0xE734, 0x4045, 0x7D6B, 0xFB7E, 0x7050, 0, 0x4873, 0,
- 0x7051, 0x7353, 0x4C4C, 0xE737, 0x7052, 0, 0x7053, 0xE738,
- 0x7054, 0x3357, 0xFC21, 0x7056, 0, 0x3F59, 0x7D6C, 0,
- 0, 0x7057, 0, 0x7D6D, 0x3724, 0, 0xE73C, 0xE73D,
- 0xE73E, 0x7058, 0x705C, 0xE73F, 0x705A, 0xE740, 0, 0xE741,
-};
static const unsigned short utf8_to_euc_E99E[] = {
0xE742, 0x705B, 0, 0, 0x3373, 0x7059, 0x705D, 0,
0, 0xE743, 0, 0x705E, 0, 0x3048, 0, 0x705F,
@@ -11168,16 +5909,6 @@ static const unsigned short utf8_to_euc_E99E[] = {
0, 0xE74E, 0xE74F, 0x7065, 0x7066, 0xE750, 0xE751, 0,
0xE752, 0xE753, 0xE754, 0, 0xE755, 0, 0xE756, 0xE757,
};
-static const unsigned short utf8_to_euc_E99E_x0213[] = {
- 0xE742, 0x705B, 0, 0, 0x3373, 0x7059, 0x705D, 0,
- 0, 0xE743, 0, 0x705E, 0, 0x3048, 0, 0x705F,
- 0x7060, 0, 0, 0, 0, 0x7D6E, 0xFC24, 0xE746,
- 0x3E64, 0xE747, 0xFC25, 0, 0x7061, 0, 0xFC26, 0xE74A,
- 0x3547, 0, 0xFC27, 0x7064, 0, 0, 0x7063, 0,
- 0x7062, 0, 0, 0x6B71, 0xE74C, 0x4A5C, 0x7D6F, 0,
- 0, 0xFC28, 0xFC29, 0x7065, 0x7066, 0xE750, 0xE751, 0,
- 0xE752, 0xE753, 0x7D70, 0, 0xE755, 0, 0xFC2A, 0xE757,
-};
static const unsigned short utf8_to_euc_E99F[] = {
0, 0xE758, 0, 0x7067, 0xE759, 0xE75A, 0x7068, 0xE75B,
0x7069, 0xE75C, 0xE75D, 0x706A, 0xE75E, 0xE75F, 0xE760, 0,
@@ -11188,16 +5919,6 @@ static const unsigned short utf8_to_euc_E99F[] = {
0, 0xE76E, 0x706E, 0x323B, 0xE76F, 0x7071, 0x7070, 0xE770,
0xE771, 0, 0xE772, 0x3124, 0, 0, 0, 0x3641,
};
-static const unsigned short utf8_to_euc_E99F_x0213[] = {
- 0, 0x7D71, 0, 0x7067, 0xE759, 0xE75A, 0x7068, 0xE75B,
- 0x7069, 0x7D72, 0xE75D, 0x706A, 0xFC2B, 0xE75F, 0xE760, 0,
- 0xE761, 0xFC2C, 0, 0x345A, 0xFC2D, 0, 0, 0xE764,
- 0xFC2E, 0xFC2F, 0, 0x7D74, 0x706B, 0xE767, 0x7D73, 0,
- 0xE769, 0xFC30, 0, 0, 0xE76C, 0, 0, 0,
- 0, 0, 0, 0, 0, 0x706C, 0x4723, 0xE76D,
- 0, 0xFC31, 0x706E, 0x323B, 0x7D75, 0x7071, 0x7070, 0xE770,
- 0xE771, 0, 0xE772, 0x3124, 0, 0, 0, 0x3641,
-};
static const unsigned short utf8_to_euc_E9A0[] = {
0, 0x4A47, 0x443A, 0x3A22, 0, 0x3960, 0x3D67, 0xE773,
0x3F5C, 0, 0xE774, 0, 0x7073, 0xE776, 0xE777, 0x7072,
@@ -11208,16 +5929,6 @@ static const unsigned short utf8_to_euc_E9A0[] = {
0xE824, 0, 0xE825, 0xE826, 0x3150, 0xE827, 0, 0x7077,
0x7074, 0, 0, 0x4951, 0x4D6A, 0x7078, 0xE829, 0,
};
-static const unsigned short utf8_to_euc_E9A0_x0213[] = {
- 0, 0x4A47, 0x443A, 0x3A22, 0xFC32, 0x3960, 0x3D67, 0xE773,
- 0x3F5C, 0, 0x7D77, 0, 0x7073, 0xFC33, 0xFC34, 0x7072,
- 0x4D42, 0x3468, 0x4852, 0x465C, 0xFC35, 0, 0xFC36, 0x3F7C,
- 0x4E4E, 0xE775, 0x375B, 0, 0xE77A, 0, 0x7D78, 0,
- 0xE77C, 0x7076, 0, 0xFC39, 0x7075, 0xFC3C, 0xE77E, 0,
- 0, 0, 0, 0x7D79, 0x4B4B, 0x462C, 0xE822, 0xE823,
- 0x7D7A, 0, 0xFC3A, 0xFC3B, 0x3150, 0xE827, 0, 0x7077,
- 0x7074, 0, 0, 0x4951, 0x4D6A, 0x7078, 0xE829, 0,
-};
static const unsigned short utf8_to_euc_E9A1[] = {
0, 0, 0, 0, 0xE82A, 0, 0x7079, 0xE82B,
0, 0, 0xE82C, 0x707B, 0x426A, 0x335B, 0x335C, 0x707A,
@@ -11228,16 +5939,6 @@ static const unsigned short utf8_to_euc_E9A1[] = {
0x707E, 0x7121, 0, 0x7123, 0x7122, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E9A1_x0213[] = {
- 0, 0, 0, 0, 0xE82A, 0, 0x7079, 0xFC3D,
- 0, 0, 0xE82C, 0x707B, 0x426A, 0x335B, 0x335C, 0x707A,
- 0, 0xE82D, 0x7D7C, 0x7D7D, 0x3469, 0x3832, 0x7D7E, 0x7E21,
- 0x346A, 0x7E22, 0x7E23, 0x453F, 0, 0, 0x4E60, 0,
- 0, 0, 0xE834, 0xE835, 0, 0x7E25, 0xFC3E, 0x385C,
- 0, 0, 0xE838, 0x707C, 0x7E26, 0, 0, 0x707D,
- 0x707E, 0x7121, 0, 0x7123, 0x7122, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E9A2[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -11248,16 +5949,6 @@ static const unsigned short utf8_to_euc_E9A2[] = {
0xE83D, 0x7126, 0, 0, 0xE83E, 0, 0x7127, 0xE83F,
0xE840, 0, 0xE841, 0xE842, 0, 0, 0, 0xE843,
};
-static const unsigned short utf8_to_euc_E9A2_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x4977, 0, 0x7124, 0xFC3F, 0, 0xFC40, 0xE83C, 0x7125,
- 0xFC41, 0x7126, 0, 0, 0xE83E, 0, 0x7127, 0xFC43,
- 0xFC44, 0, 0x7E27, 0xFC45, 0xFC46, 0, 0, 0xFC47,
-};
static const unsigned short utf8_to_euc_E9A3[] = {
0, 0, 0xE844, 0x7129, 0x7128, 0xE845, 0x712A, 0,
0xE846, 0, 0, 0, 0xE847, 0, 0, 0,
@@ -11268,16 +5959,6 @@ static const unsigned short utf8_to_euc_E9A3[] = {
0, 0, 0x307B, 0xE84E, 0x303B, 0, 0xE84F, 0,
0, 0, 0, 0, 0x3B74, 0x4B30, 0x3E7E, 0,
};
-static const unsigned short utf8_to_euc_E9A3_x0213[] = {
- 0, 0, 0xFC48, 0x7129, 0x7128, 0xE845, 0x712A, 0xFC49,
- 0x7E28, 0, 0, 0xFC4A, 0xE847, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0x4874, 0x664C, 0, 0, 0x3F29,
- 0xFC4B, 0xFC4D, 0x3532, 0xFC4E, 0, 0xFC4F, 0xE84B, 0x7E29,
- 0, 0x712B, 0xFC50, 0x712C, 0, 0x522C, 0x5D3B, 0x4853,
- 0xFC51, 0xFC52, 0x307B, 0xFC53, 0x303B, 0, 0xE84F, 0,
- 0, 0, 0, 0, 0x3B74, 0x4B30, 0x3E7E, 0,
-};
static const unsigned short utf8_to_euc_E9A4[] = {
0, 0, 0xE850, 0x712D, 0, 0x4C5F, 0, 0xE851,
0xE852, 0x712E, 0x4D5C, 0, 0x3142, 0, 0, 0,
@@ -11288,16 +5969,6 @@ static const unsigned short utf8_to_euc_E9A4[] = {
0, 0xE85F, 0xE860, 0xE861, 0xE862, 0xE863, 0, 0,
0, 0xE864, 0xE865, 0xE866, 0xE867, 0x7139, 0x713A, 0,
};
-static const unsigned short utf8_to_euc_E9A4_x0213[] = {
- 0, 0, 0xE850, 0x712D, 0, 0x4C5F, 0, 0xE851,
- 0xFC54, 0x712E, 0x4D5C, 0, 0x3142, 0, 0, 0,
- 0x3B41, 0xE853, 0x712F, 0x326E, 0x7130, 0xE854, 0xFC57, 0xFC58,
- 0x7131, 0, 0xFC5A, 0xFC5B, 0xFC5C, 0x7133, 0x7134, 0xE85A,
- 0x7136, 0x7132, 0xE85B, 0, 0x7135, 0, 0xE85C, 0xE85D,
- 0x345B, 0, 0, 0xE85E, 0x7137, 0, 0x7138, 0,
- 0, 0xFC5E, 0xFC5F, 0xFC60, 0xE862, 0xE863, 0, 0,
- 0, 0xE864, 0xFC61, 0xFC62, 0xFC63, 0x7139, 0x713A, 0,
-};
static const unsigned short utf8_to_euc_E9A5[] = {
0xE868, 0xE869, 0x713B, 0, 0, 0x713D, 0xE86A, 0xE86B,
0xE86C, 0x713C, 0, 0x713F, 0x7142, 0xE86D, 0xE86E, 0,
@@ -11308,16 +5979,6 @@ static const unsigned short utf8_to_euc_E9A5[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E9A5_x0213[] = {
- 0xFC64, 0xFC65, 0x713B, 0, 0, 0x713D, 0xFC66, 0xE86B,
- 0xE86C, 0x713C, 0, 0x713F, 0x7142, 0xFC67, 0xFC68, 0,
- 0x713E, 0x7140, 0x7141, 0, 0xE86F, 0x7143, 0, 0x3642,
- 0x7E2A, 0xE871, 0, 0xE872, 0xFC69, 0, 0xE874, 0xFC6A,
- 0xFC6B, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E9A6[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -11328,16 +5989,6 @@ static const unsigned short utf8_to_euc_E9A6[] = {
0xE87B, 0xE87C, 0xE87D, 0x435A, 0x466B, 0xE87E, 0, 0,
0, 0xE921, 0xE922, 0, 0x7149, 0xE923, 0, 0xE924,
};
-static const unsigned short utf8_to_euc_E9A6_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0x3C73, 0x7144,
- 0x7145, 0x3961, 0, 0xE877, 0, 0xE878, 0x7E2B, 0xE879,
- 0, 0, 0, 0xFC6C, 0, 0x7146, 0xFC6D, 0,
- 0x333E, 0, 0, 0, 0x474F, 0x7147, 0x7148, 0,
- 0xE87B, 0xE87C, 0xE87D, 0x435A, 0x466B, 0xE87E, 0, 0,
- 0, 0xFC6E, 0xE922, 0, 0x7149, 0xFC6F, 0, 0xFC70,
-};
static const unsigned short utf8_to_euc_E9A7[] = {
0, 0x477D, 0, 0xE925, 0x424C, 0x3158, 0x366E, 0,
0x366F, 0xE926, 0, 0, 0, 0, 0, 0,
@@ -11348,16 +5999,6 @@ static const unsigned short utf8_to_euc_E9A7[] = {
0xE931, 0x7151, 0x7152, 0, 0xE932, 0xE933, 0, 0,
0x7154, 0xE934, 0, 0x7153, 0, 0xE935, 0xE936, 0x3D59,
};
-static const unsigned short utf8_to_euc_E9A7_x0213[] = {
- 0, 0x477D, 0, 0xFC71, 0x424C, 0x3158, 0x366E, 0,
- 0x366F, 0xFC72, 0, 0, 0, 0, 0, 0,
- 0x4373, 0x714E, 0x3670, 0xE927, 0xFC73, 0x326F, 0, 0,
- 0x714D, 0xFC74, 0xE92A, 0x714B, 0xE92B, 0x714C, 0xFC75, 0x714A,
- 0, 0, 0x7158, 0, 0, 0, 0, 0xE92D,
- 0, 0, 0xE92E, 0xE92F, 0xE930, 0x714F, 0x7150, 0,
- 0xFC77, 0x7151, 0x7152, 0, 0xE932, 0xE933, 0, 0,
- 0x7154, 0xFC78, 0, 0x7153, 0xFC79, 0xE935, 0xE936, 0x3D59,
-};
static const unsigned short utf8_to_euc_E9A8[] = {
0, 0x7155, 0xE937, 0xE938, 0xE939, 0x7157, 0, 0,
0, 0, 0, 0xE93A, 0xE93B, 0, 0x3533, 0x7156,
@@ -11368,16 +6009,6 @@ static const unsigned short utf8_to_euc_E9A8[] = {
0x462D, 0, 0, 0xE947, 0, 0xE948, 0xE949, 0x715B,
0xE94A, 0, 0, 0, 0, 0, 0x7160, 0,
};
-static const unsigned short utf8_to_euc_E9A8_x0213[] = {
- 0, 0x7155, 0x7E2C, 0x7E2D, 0xE939, 0x7157, 0, 0,
- 0, 0, 0xFC7A, 0xE93A, 0xE93B, 0, 0x3533, 0x7156,
- 0xE93C, 0xFC7B, 0x417B, 0x3833, 0, 0, 0xFC7C, 0,
- 0, 0x7159, 0xFC7D, 0, 0, 0, 0xE93F, 0,
- 0xFC7E, 0, 0xE941, 0xE942, 0x7E2E, 0, 0, 0xE944,
- 0x424D, 0, 0, 0x715A, 0, 0x7E2F, 0x7E30, 0,
- 0x462D, 0xFD21, 0, 0xE947, 0, 0xE948, 0xFD22, 0x715B,
- 0x7E31, 0, 0, 0, 0, 0, 0x7160, 0,
-};
static const unsigned short utf8_to_euc_E9A9[] = {
0x715E, 0xE94C, 0x715D, 0x715F, 0xE94D, 0x715C, 0, 0xE94B,
0, 0, 0xE94E, 0xE94F, 0xE950, 0x7162, 0xE951, 0,
@@ -11388,16 +6019,6 @@ static const unsigned short utf8_to_euc_E9A9[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E9A9_x0213[] = {
- 0x715E, 0xE94C, 0x715D, 0x715F, 0xFD23, 0x715C, 0, 0xE94B,
- 0, 0, 0x7E32, 0xE94F, 0xFD24, 0x7162, 0x7E33, 0,
- 0, 0xE952, 0x7E34, 0, 0xE953, 0x7161, 0xE954, 0x7164,
- 0xFD25, 0, 0x3643, 0x7163, 0, 0xE955, 0, 0x7165,
- 0, 0, 0x7166, 0, 0x7168, 0x7167, 0, 0,
- 0, 0x7169, 0x716B, 0x716A, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E9AA[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -11408,16 +6029,6 @@ static const unsigned short utf8_to_euc_E9AA[] = {
0x716D, 0, 0xE95A, 0, 0xE95B, 0xE95C, 0xE95D, 0,
0x333C, 0xE95E, 0, 0xE95F, 0x716E, 0, 0xE960, 0xE961,
};
-static const unsigned short utf8_to_euc_E9AA_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x397C, 0, 0xE956, 0, 0xE957, 0x716C, 0xE958, 0xFD27,
- 0x716D, 0, 0xE95A, 0, 0xE95B, 0xE95C, 0x7E35, 0xFD29,
- 0x333C, 0xFD2B, 0, 0xE95F, 0x716E, 0, 0xE960, 0xE961,
-};
static const unsigned short utf8_to_euc_E9AB[] = {
0x716F, 0xE962, 0, 0xE963, 0x3F71, 0, 0xE964, 0,
0xE965, 0, 0, 0, 0, 0, 0xE966, 0x7170,
@@ -11428,16 +6039,6 @@ static const unsigned short utf8_to_euc_E9AB[] = {
0, 0x717D, 0xE974, 0xE975, 0x717C, 0xE976, 0, 0x717E,
0, 0xE977, 0xE978, 0x7221, 0, 0xE979, 0, 0xE97A,
};
-static const unsigned short utf8_to_euc_E9AB_x0213[] = {
- 0x716F, 0x7E36, 0, 0x7E37, 0x3F71, 0, 0xFD2D, 0,
- 0xE965, 0, 0, 0, 0, 0, 0x7E38, 0x7170,
- 0xFD2E, 0x7171, 0xFD2F, 0x7172, 0x7173, 0xFD30, 0x7E39, 0xE96B,
- 0x3962, 0xF47B, 0, 0xE96C, 0xFD32, 0, 0x7174, 0x7175,
- 0xFD33, 0, 0x7176, 0x7177, 0xE96F, 0xFD34, 0x7178, 0xE971,
- 0, 0xFD35, 0x4831, 0x717A, 0xE973, 0x4926, 0x717B, 0x7179,
- 0, 0x717D, 0xE974, 0xE975, 0x717C, 0xE976, 0, 0x717E,
- 0, 0x7E3A, 0xE978, 0x7221, 0, 0xE979, 0, 0xE97A,
-};
static const unsigned short utf8_to_euc_E9AC[] = {
0xE97B, 0xE97C, 0xE97D, 0xE97E, 0xEA21, 0xEA22, 0x7222, 0,
0xEA23, 0xEA24, 0, 0xEA25, 0xEA26, 0xEA27, 0xEA28, 0,
@@ -11448,16 +6049,6 @@ static const unsigned short utf8_to_euc_E9AC[] = {
0, 0x5D35, 0x722F, 0xEA33, 0xEA34, 0xEA35, 0, 0xEA36,
0, 0xEA37, 0xEA38, 0x6478, 0x3534, 0xEA39, 0, 0,
};
-static const unsigned short utf8_to_euc_E9AC_x0213[] = {
- 0xE97B, 0xE97C, 0x7E3B, 0xFD36, 0xEA21, 0xEA22, 0x7222, 0,
- 0x7E3C, 0xEA24, 0, 0xEA25, 0xFD37, 0xEA27, 0xEA28, 0,
- 0xFD38, 0, 0xFD39, 0, 0, 0, 0xFD3A, 0,
- 0x7223, 0xEA2C, 0x7224, 0xEA2D, 0xFD3B, 0, 0, 0x7225,
- 0x7E3D, 0, 0x7226, 0x7227, 0, 0x7228, 0xEA30, 0x7229,
- 0x722A, 0x722B, 0x722C, 0xFD3C, 0, 0x7E3F, 0x722D, 0x722E,
- 0, 0x5D35, 0x722F, 0xFD3D, 0xEA34, 0xEA35, 0, 0xEA36,
- 0, 0xEA37, 0xEA38, 0x6478, 0x3534, 0xFD3E, 0, 0,
-};
static const unsigned short utf8_to_euc_E9AD[] = {
0, 0x3321, 0x3A32, 0x7231, 0x7230, 0x4C25, 0, 0,
0xEA3A, 0, 0, 0xEA3B, 0xEA3C, 0x7233, 0x7234, 0x7232,
@@ -11468,16 +6059,6 @@ static const unsigned short utf8_to_euc_E9AD[] = {
0, 0, 0xF47C, 0xEA4C, 0x7237, 0xEA4D, 0, 0xEA4E,
0xEA4F, 0xEA50, 0, 0, 0, 0, 0, 0xEA51,
};
-static const unsigned short utf8_to_euc_E9AD_x0213[] = {
- 0, 0x3321, 0x3A32, 0x7231, 0x7230, 0x4C25, 0, 0,
- 0xEA3A, 0, 0, 0xFD40, 0xEA3C, 0x7233, 0x7234, 0x7232,
- 0, 0x7235, 0, 0, 0x4B62, 0xEA3D, 0xEA3E, 0xEA3F,
- 0x7236, 0, 0x357B, 0xEA40, 0, 0, 0x7E40, 0,
- 0, 0xEA42, 0, 0xFD41, 0, 0xFD42, 0x7E42, 0,
- 0xEA46, 0, 0xEA47, 0xFD43, 0xFD44, 0xEA4A, 0xEA4B, 0x4F25,
- 0, 0, 0x7E43, 0xFD45, 0x7237, 0x7E44, 0xFD46, 0xFD47,
- 0xEA4F, 0x7E41, 0, 0, 0, 0, 0, 0xEA51,
-};
static const unsigned short utf8_to_euc_E9AE[] = {
0xEA52, 0, 0, 0x7239, 0xEA53, 0xEA54, 0xEA55, 0xEA56,
0, 0xEA57, 0xEA58, 0xEA59, 0, 0xEA5A, 0x303E, 0xEA5B,
@@ -11488,16 +6069,6 @@ static const unsigned short utf8_to_euc_E9AE[] = {
0xEA65, 0xEA66, 0xEA67, 0, 0x7240, 0, 0, 0xEA68,
0xEA69, 0x7243, 0, 0xEA6A, 0xEA6B, 0, 0xEA6C, 0xEA6D,
};
-static const unsigned short utf8_to_euc_E9AE_x0213[] = {
- 0xEA52, 0, 0, 0x7239, 0x7E45, 0xEA54, 0xEA55, 0xEA56,
- 0, 0xEA57, 0x7E46, 0xEA59, 0, 0xEA5A, 0x303E, 0x7E47,
- 0xEA5C, 0x723A, 0x4A2B, 0x7238, 0xEA5D, 0, 0x723B, 0x723C,
- 0, 0, 0xEA5E, 0, 0, 0xEA5F, 0x7E48, 0x723D,
- 0x723E, 0, 0, 0, 0, 0, 0xFD48, 0x7E49,
- 0x723F, 0xEA63, 0x4B6E, 0x3B2D, 0xFD49, 0x3A7A, 0x412F, 0,
- 0xEA65, 0xFD4A, 0xFD4D, 0, 0x7240, 0, 0, 0xEA68,
- 0xFD4E, 0x7243, 0, 0xEA6A, 0xEA6B, 0, 0xFD4F, 0xEA6D,
-};
static const unsigned short utf8_to_euc_E9AF[] = {
0x7241, 0xEA6E, 0, 0, 0, 0, 0x7244, 0xEA6F,
0xEA70, 0x3871, 0x7242, 0, 0, 0, 0xEA71, 0x7245,
@@ -11508,16 +6079,6 @@ static const unsigned short utf8_to_euc_E9AF[] = {
0x7250, 0x724F, 0x724E, 0xEA7C, 0, 0x3033, 0, 0xEA7D,
0xEA7E, 0xEB21, 0xEB22, 0, 0, 0xEB23, 0, 0xEB24,
};
-static const unsigned short utf8_to_euc_E9AF_x0213[] = {
- 0x7241, 0x7E4A, 0, 0, 0, 0, 0x7244, 0xFD50,
- 0xEA70, 0x3871, 0x7242, 0, 0, 0, 0x7E4B, 0x7245,
- 0xEA72, 0x7246, 0x7247, 0, 0x724B, 0, 0x3B2A, 0xEA73,
- 0xFD52, 0, 0, 0x4264, 0, 0xFD53, 0, 0xEA76,
- 0, 0x724C, 0x7249, 0x7248, 0x724A, 0x7E4C, 0, 0xFD54,
- 0x375F, 0, 0xFD55, 0xFD56, 0, 0, 0xFD58, 0xFD57,
- 0x7250, 0x724F, 0x724E, 0xFD51, 0, 0x3033, 0, 0xFD5C,
- 0x7E4D, 0xEB21, 0xFD5A, 0, 0, 0x7E4E, 0, 0xEB24,
-};
static const unsigned short utf8_to_euc_E9B0[] = {
0xEB25, 0, 0xEB26, 0, 0x725A, 0, 0x7256, 0,
0x7257, 0x7253, 0x7259, 0xEB27, 0x7255, 0x3362, 0, 0xEB28,
@@ -11528,16 +6089,6 @@ static const unsigned short utf8_to_euc_E9B0[] = {
0x7260, 0xEB37, 0x7262, 0, 0, 0xEB38, 0xEB39, 0xEB3A,
0, 0x336F, 0x724D, 0x3137, 0, 0xEB3B, 0x7264, 0,
};
-static const unsigned short utf8_to_euc_E9B0_x0213[] = {
- 0x7E4F, 0, 0xEB26, 0, 0x725A, 0, 0x7256, 0,
- 0x7257, 0x7253, 0x7259, 0xEB27, 0x7255, 0x3362, 0, 0xEB28,
- 0x4F4C, 0xEB29, 0x7258, 0x7254, 0x7252, 0x7251, 0xFD5E, 0,
- 0xFD5F, 0xFD60, 0xFD61, 0x725C, 0xEB2E, 0xFD62, 0xEB2F, 0,
- 0, 0x725F, 0xFD63, 0x7E50, 0x725E, 0x725D, 0xEB32, 0xFD64,
- 0xEB34, 0xFD65, 0xFD66, 0, 0, 0x4949, 0x725B, 0x3073,
- 0x7260, 0xFD68, 0x7262, 0, 0, 0xEB38, 0xFD69, 0xFD6A,
- 0, 0x336F, 0x724D, 0x3137, 0, 0xEB3B, 0x7264, 0,
-};
static const unsigned short utf8_to_euc_E9B1[] = {
0, 0xEB3C, 0, 0xEB3D, 0xEB3E, 0xEB3F, 0x7263, 0x7261,
0x432D, 0xEB40, 0xEB41, 0, 0, 0, 0xEB42, 0xEB43,
@@ -11548,16 +6099,6 @@ static const unsigned short utf8_to_euc_E9B1[] = {
0xEB54, 0, 0xEB55, 0, 0, 0xEB56, 0x7268, 0xEB57,
0x7269, 0, 0, 0xEB58, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E9B1_x0213[] = {
- 0, 0x7E51, 0, 0xEB3D, 0xEB3E, 0xFD6B, 0x7263, 0x7261,
- 0x432D, 0xFD6E, 0xFD6F, 0, 0, 0, 0xEB42, 0x7E52,
- 0x7E53, 0, 0x4B70, 0x7E54, 0xFD71, 0, 0xEB47, 0x4E5A,
- 0xFD72, 0, 0x7265, 0xFD73, 0xFD6C, 0xFD74, 0xEB4B, 0xFD75,
- 0x7266, 0, 0, 0x7E55, 0, 0x7E56, 0, 0x7267,
- 0xEB52, 0xFD76, 0xFD77, 0xFD78, 0, 0xFD79, 0xFD7A, 0,
- 0xFD7B, 0, 0xFD7C, 0, 0, 0xFD7D, 0x7268, 0x7E57,
- 0x7269, 0, 0xFD7E, 0xEB58, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E9B3[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -11568,16 +6109,6 @@ static const unsigned short utf8_to_euc_E9B3[] = {
0x726C, 0, 0xEB5A, 0x4B31, 0x4C44, 0, 0x4650, 0xEB5B,
0, 0xEB5C, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E9B3_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0x443B, 0xFE21, 0x726A,
- 0, 0x4837, 0, 0x726F, 0x726B, 0, 0, 0,
- 0x726C, 0, 0xFE22, 0x4B31, 0x4C44, 0, 0x4650, 0xEB5B,
- 0, 0xEB5C, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E9B4[] = {
0, 0, 0xEB5E, 0x7270, 0, 0, 0x7271, 0x463E,
0x726E, 0x726D, 0, 0xEB5D, 0, 0, 0x322A, 0,
@@ -11588,16 +6119,6 @@ static const unsigned short utf8_to_euc_E9B4[] = {
0xEB66, 0, 0xEB67, 0xEB68, 0xEB69, 0, 0, 0,
0, 0, 0xEB6A, 0x3963, 0xEB6B, 0xEB6D, 0x727C, 0x727B,
};
-static const unsigned short utf8_to_euc_E9B4_x0213[] = {
- 0, 0, 0xFE24, 0x7270, 0, 0, 0x7271, 0x463E,
- 0x726E, 0x726D, 0, 0xFE23, 0, 0, 0x322A, 0,
- 0, 0xFE26, 0x7279, 0, 0, 0x7278, 0, 0xFE27,
- 0xFE28, 0, 0, 0x3175, 0xEB62, 0x7E58, 0x7E59, 0x7276,
- 0, 0, 0, 0x7275, 0, 0, 0x7273, 0,
- 0x337B, 0, 0x7272, 0x3C32, 0x3229, 0, 0, 0xEB65,
- 0xEB66, 0, 0xFE2C, 0xEB68, 0xEB69, 0, 0, 0,
- 0, 0, 0xEB6A, 0x3963, 0xEB6B, 0xEB6D, 0x727C, 0x727B,
-};
static const unsigned short utf8_to_euc_E9B5[] = {
0, 0x727A, 0xEB6E, 0xEB6F, 0x7277, 0xEB6C, 0x727D, 0xEB70,
0x727E, 0, 0xEB71, 0, 0, 0, 0, 0,
@@ -11608,16 +6129,6 @@ static const unsigned short utf8_to_euc_E9B5[] = {
0xEB7B, 0, 0x7327, 0, 0, 0, 0xEB7C, 0xEB7D,
0, 0, 0x732C, 0xEB7E, 0xEC21, 0, 0xEC22, 0,
};
-static const unsigned short utf8_to_euc_E9B5_x0213[] = {
- 0, 0x727A, 0xFE2E, 0x7E5A, 0x7277, 0xEB6C, 0x727D, 0x7E5B,
- 0x727E, 0, 0xFE2F, 0, 0, 0, 0, 0,
- 0x7325, 0x7324, 0x7E5C, 0xEB72, 0xEB73, 0, 0, 0,
- 0, 0x7326, 0, 0, 0x312D, 0x7321, 0x7322, 0xFE30,
- 0x3974, 0x4C39, 0xFE31, 0x7E5D, 0x7323, 0xEB77, 0, 0,
- 0, 0xFE33, 0xEB79, 0xFE34, 0x4B32, 0, 0, 0x732B,
- 0x7E5E, 0, 0x7327, 0xFE36, 0, 0, 0xFE37, 0xFE38,
- 0, 0, 0x732C, 0xEB7E, 0x7E5F, 0, 0xFE39, 0,
-};
static const unsigned short utf8_to_euc_E9B6[] = {
0, 0, 0, 0xEC23, 0xEC24, 0, 0xEC25, 0x7329,
0, 0x7328, 0xEC26, 0, 0, 0xEC27, 0xEC28, 0x375C,
@@ -11628,16 +6139,6 @@ static const unsigned short utf8_to_euc_E9B6[] = {
0, 0xEC33, 0x7330, 0, 0x4461, 0xEC34, 0, 0,
0x7334, 0xEC35, 0x7335, 0x7333, 0xEC36, 0, 0, 0xEC37,
};
-static const unsigned short utf8_to_euc_E9B6_x0213[] = {
- 0, 0, 0, 0xEC23, 0xFE3A, 0, 0xEC25, 0x7329,
- 0, 0x7328, 0x7E60, 0, 0, 0xFE3B, 0xEC28, 0x375C,
- 0, 0, 0xEC29, 0xEC2A, 0, 0xEC2B, 0x7E61, 0xEC2D,
- 0xEC2E, 0xFE3C, 0x732D, 0, 0, 0, 0, 0,
- 0, 0xFE3D, 0, 0, 0x732E, 0, 0, 0,
- 0, 0x732F, 0xEC30, 0x732A, 0x7E63, 0, 0xEC32, 0x7274,
- 0, 0xEC33, 0x7330, 0, 0x4461, 0xFE3F, 0, 0,
- 0x7334, 0xFE40, 0x7335, 0x7333, 0x7E64, 0xFE41, 0, 0xFE3E,
-};
static const unsigned short utf8_to_euc_E9B7[] = {
0, 0x7332, 0x7338, 0xEC38, 0x7331, 0, 0x7336, 0xEC39,
0, 0xEC3A, 0xEC3B, 0, 0, 0, 0, 0x7337,
@@ -11648,16 +6149,6 @@ static const unsigned short utf8_to_euc_E9B7[] = {
0xEC49, 0, 0x4F49, 0xEC4A, 0xEC4B, 0, 0, 0,
0x733B, 0x426B, 0x3A6D, 0, 0, 0x733F, 0xEC4C, 0,
};
-static const unsigned short utf8_to_euc_E9B7_x0213[] = {
- 0x7E62, 0x7332, 0x7338, 0xFE42, 0x7331, 0, 0x7336, 0xFE43,
- 0, 0xFE44, 0xEC3B, 0, 0, 0, 0, 0x7337,
- 0, 0, 0, 0x733A, 0xEC3C, 0xEC3D, 0xFE45, 0x7E65,
- 0, 0x7339, 0xFE46, 0, 0, 0, 0xEC41, 0xFE47,
- 0xFE48, 0, 0, 0xFE49, 0, 0xEC44, 0x733C, 0x7E67,
- 0, 0xEC46, 0, 0xEC47, 0, 0x733D, 0xEC48, 0x733E,
- 0xEC49, 0, 0x4F49, 0xEC4A, 0xFE4A, 0, 0, 0,
- 0x733B, 0x426B, 0x3A6D, 0, 0, 0x733F, 0xEC4C, 0,
-};
static const unsigned short utf8_to_euc_E9B8[] = {
0, 0, 0xEC4E, 0, 0, 0, 0, 0xEC4F,
0, 0, 0xEC4D, 0, 0, 0, 0xEC50, 0,
@@ -11668,16 +6159,6 @@ static const unsigned short utf8_to_euc_E9B8[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E9B8_x0213[] = {
- 0, 0, 0xFE4D, 0, 0, 0, 0, 0x7E68,
- 0, 0, 0xFE4C, 0, 0, 0xFE4E, 0xEC50, 0,
- 0xEC51, 0xEC52, 0xEC53, 0, 0, 0x7E69, 0xEC55, 0,
- 0, 0xFE4F, 0x7340, 0x7341, 0xFE50, 0xFE51, 0x7342, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_E9B9[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -11688,16 +6169,6 @@ static const unsigned short utf8_to_euc_E9B9[] = {
0, 0, 0, 0, 0, 0x7343, 0, 0,
0x3834, 0x7344, 0xEC59, 0xEC5A, 0xEC5B, 0x7345, 0, 0x3C2F,
};
-static const unsigned short utf8_to_euc_E9B9_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0x7343, 0, 0,
- 0x3834, 0x7344, 0xEC59, 0xFE52, 0x7E6A, 0x7345, 0, 0x3C2F,
-};
static const unsigned short utf8_to_euc_E9BA[] = {
0xEC5C, 0x7346, 0xEC5D, 0xEC5E, 0xEC5F, 0xEC60, 0, 0xEC61,
0x7347, 0, 0, 0x7348, 0x7349, 0, 0xEC62, 0xEC63,
@@ -11708,16 +6179,6 @@ static const unsigned short utf8_to_euc_E9BA[] = {
0xEC6D, 0, 0, 0xEC6E, 0xEC6F, 0xEC70, 0, 0,
0x7350, 0x396D, 0x4C4D, 0x4B63, 0x5677, 0, 0x5D60, 0x4B7B,
};
-static const unsigned short utf8_to_euc_E9BA_x0213[] = {
- 0xFE54, 0x7346, 0xEC5D, 0xEC5E, 0xEC5F, 0xFE55, 0, 0xEC61,
- 0x7347, 0, 0, 0x7348, 0x7349, 0, 0xEC62, 0xEC63,
- 0, 0x734C, 0x734A, 0x4F3C, 0, 0x734B, 0xEC64, 0x4E6F,
- 0xEC65, 0, 0, 0xFE56, 0, 0x734D, 0x7E6B, 0x4E5B,
- 0, 0, 0, 0, 0x7E6C, 0x734E, 0x477E, 0,
- 0xFE57, 0x734F, 0x7351, 0, 0x7E6D, 0x7352, 0xEC6B, 0x7E6E,
- 0xEC6D, 0, 0, 0xEC6E, 0x7E6F, 0x7E70, 0, 0,
- 0x7350, 0x396D, 0x4C4D, 0x4B63, 0x5677, 0xFE59, 0x5D60, 0x4B7B,
-};
static const unsigned short utf8_to_euc_E9BB[] = {
0, 0, 0, 0, 0x322B, 0, 0xEC71, 0,
0xEC72, 0, 0, 0xEC73, 0x7354, 0x3550, 0x7355, 0x7356,
@@ -11728,16 +6189,6 @@ static const unsigned short utf8_to_euc_E9BB[] = {
0xEC7B, 0xEC7C, 0xEC7D, 0, 0x7360, 0xEC7E, 0x7361, 0x7362,
0xED21, 0x7363, 0, 0x7364, 0x7365, 0x7366, 0, 0xED22,
};
-static const unsigned short utf8_to_euc_E9BB_x0213[] = {
- 0, 0, 0, 0x7E71, 0x322B, 0, 0xEC71, 0,
- 0xEC72, 0, 0, 0xEC73, 0x7354, 0x3550, 0x7355, 0x7356,
- 0x7357, 0x7E72, 0x3975, 0, 0x7358, 0xEC74, 0, 0,
- 0x6054, 0x4C5B, 0, 0x4263, 0x7359, 0x735B, 0x735A, 0xFE5B,
- 0x735C, 0, 0, 0, 0xEC76, 0x735D, 0, 0xFE5C,
- 0x735E, 0, 0, 0, 0xEC78, 0xEC79, 0xFE5D, 0x735F,
- 0xEC7B, 0xEC7C, 0xEC7D, 0, 0x7360, 0xEC7E, 0x7361, 0x7362,
- 0xED21, 0x7363, 0, 0x7364, 0x7365, 0x7366, 0, 0xFE5E,
-};
static const unsigned short utf8_to_euc_E9BC[] = {
0, 0, 0xED23, 0xED24, 0, 0, 0, 0x7367,
0x7368, 0xED25, 0, 0, 0, 0, 0x4524, 0xED26,
@@ -11748,16 +6199,6 @@ static const unsigned short utf8_to_euc_E9BC[] = {
0, 0xED36, 0xED37, 0, 0xED38, 0, 0, 0xED39,
0, 0xED3A, 0xED3B, 0x4921, 0xED3C, 0xED3D, 0x736D, 0xED3E,
};
-static const unsigned short utf8_to_euc_E9BC_x0213[] = {
- 0, 0, 0xFE5F, 0xFE61, 0, 0, 0, 0x7367,
- 0x7368, 0xED25, 0, 0, 0, 0, 0x4524, 0xED26,
- 0x7E73, 0xED28, 0xED29, 0x385D, 0xED2A, 0x736A, 0xED2B, 0xFE62,
- 0, 0xFE63, 0xED2E, 0xED2F, 0, 0, 0, 0xED30,
- 0x414D, 0x736B, 0xED31, 0, 0, 0, 0xED32, 0,
- 0, 0, 0xED33, 0xED34, 0x736C, 0, 0, 0xFE64,
- 0, 0xED36, 0xED37, 0, 0xED38, 0, 0, 0xFE65,
- 0, 0x7E74, 0xFE66, 0x4921, 0xED3C, 0xFE67, 0x736D, 0xED3E,
-};
static const unsigned short utf8_to_euc_E9BD[] = {
0, 0xED3F, 0, 0xED40, 0xED41, 0xED42, 0xED43, 0xED44,
0, 0, 0x736E, 0x6337, 0, 0, 0x6C5A, 0x706D,
@@ -11768,16 +6209,6 @@ static const unsigned short utf8_to_euc_E9BD[] = {
0xED52, 0xED53, 0x737A, 0xED54, 0, 0xED55, 0x737B, 0x7379,
0, 0, 0xED56, 0, 0, 0xED57, 0, 0,
};
-static const unsigned short utf8_to_euc_E9BD_x0213[] = {
- 0, 0xFE68, 0, 0xED40, 0xED41, 0xFE69, 0xFE6A, 0xED44,
- 0, 0, 0x736E, 0x6337, 0, 0, 0x6C5A, 0x706D,
- 0, 0, 0x736F, 0xFE6B, 0x7370, 0xFE6C, 0xED47, 0x7E75,
- 0xFE6D, 0, 0xED4A, 0, 0, 0xFE6F, 0xED4C, 0x7372,
- 0x7373, 0x7374, 0x4E70, 0x7371, 0, 0, 0x7375, 0x7376,
- 0xED4D, 0xFE71, 0x7378, 0, 0x7377, 0xFE73, 0xED50, 0xED51,
- 0xFE74, 0xED53, 0x737A, 0xED54, 0, 0xFE75, 0x737B, 0x7379,
- 0, 0, 0xED56, 0, 0, 0xED57, 0, 0,
-};
static const unsigned short utf8_to_euc_E9BE[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0x4E36, 0, 0xED58,
@@ -11788,16 +6219,6 @@ static const unsigned short utf8_to_euc_E9BE[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_E9BE_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0x4E36, 0, 0xED58,
- 0x7E76, 0xED5A, 0xED5B, 0, 0x7E77, 0x737C, 0xED5D, 0x7E78,
- 0, 0, 0, 0, 0x737D, 0x6354, 0xED5F, 0,
- 0x737E, 0xED60, 0x7E79, 0xED62, 0, 0xED63, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_EFA4[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -11808,26 +6229,6 @@ static const unsigned short utf8_to_euc_EFA4[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_EFA4_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0x763B, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x742E, 0x754E, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0x7B4F, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_EFA5_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x7649, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_EFA7[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -11838,16 +6239,6 @@ static const unsigned short utf8_to_euc_EFA7[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_EFA7_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0x7E24, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0x7D5D, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_EFA8[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0xF434, 0xF437,
@@ -11858,36 +6249,6 @@ static const unsigned short utf8_to_euc_EFA8[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short utf8_to_euc_EFA8_x0213[] = {
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0xF434, 0x2F4B,
- 0x2F57, 0x4F72, 0xF444, 0xAE79, 0x757A, 0x775A, 0x776F, 0xF453,
- 0xF455, 0x793C, 0x793D, 0x7941, 0xF45A, 0xF45B, 0xF45E, 0x7B3A,
- 0xF738, 0xF745, 0x7C2E, 0xF469, 0xF96E, 0xF46B, 0x7C6A, 0xF46F,
- 0xF470, 0xF473, 0xF477, 0xF478, 0xF479, 0xF47D, 0, 0,
- 0x2E38, 0x2E49, 0x2E50, 0x2E63, 0x2E68, 0x2E6E, 0x2F2C, 0x2F2F,
- 0x2F36, 0x2F5A, 0x2F5E, 0x4F61, 0x4F62, 0x7450, 0x745C, 0x745E,
-};
-static const unsigned short utf8_to_euc_EFA9_x0213[] = {
- 0x7461, 0x7528, 0x752B, 0x7543, 0x7565, 0x7669, 0x7677, 0x7725,
- 0x7755, 0xF029, 0x7825, 0x7927, 0x7933, 0x7934, 0x7937, 0x7938,
- 0x7939, 0x793B, 0x793F, 0x7940, 0x794D, 0x7951, 0x7964, 0x7A2E,
- 0xF450, 0x7A33, 0x7A3A, 0x7A44, 0x7A58, 0xF574, 0xF575, 0x7B27,
- 0x7B6F, 0x7B79, 0x7C2F, 0x7C30, 0x7C38, 0x7C3D, 0xF969, 0x7C59,
- 0x7D63, 0x7D76, 0x7D7B, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
-static const unsigned short utf8_to_euc_EFB9_x0213[] = {
- 0, 0, 0, 0, 0, 0x233E, 0x233D, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
-};
static const unsigned short utf8_to_euc_EFBC[] = {
0, 0x212A, 0xF42A, 0x2174, 0x2170, 0x2173, 0x2175, 0xF429,
0x214A, 0x214B, 0x2176, 0x215C, 0x2124, 0x215D, 0x2125, 0x213F,
@@ -11898,16 +6259,6 @@ static const unsigned short utf8_to_euc_EFBC[] = {
0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357,
0x2358, 0x2359, 0x235A, 0x214E, 0x2140, 0x214F, 0x2130, 0x2132,
};
-static const unsigned short utf8_to_euc_EFBC_x0213[] = {
- 0, 0x212A, 0x2230, 0x2174, 0x2170, 0x2173, 0x2175, 0x222F,
- 0x214A, 0x214B, 0x2176, 0x215C, 0x2124, 0x2231, 0x2125, 0x213F,
- 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337,
- 0x2338, 0x2339, 0x2127, 0x2128, 0x2163, 0x2161, 0x2164, 0x2129,
- 0x2177, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347,
- 0x2348, 0x2349, 0x234A, 0x234B, 0x234C, 0x234D, 0x234E, 0x234F,
- 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357,
- 0x2358, 0x2359, 0x235A, 0x214E, 0x2140, 0x214F, 0x2130, 0x2132,
-};
static const unsigned short utf8_to_euc_EFBD[] = {
0x212E, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367,
0x2368, 0x2369, 0x236A, 0x236B, 0x236C, 0x236D, 0x236E, 0x236F,
@@ -11928,16 +6279,6 @@ static const unsigned short utf8_to_euc_EFBD_ms[] = {
0x0E30, 0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37,
0x0E38, 0x0E39, 0x0E3A, 0x0E3B, 0x0E3C, 0x0E3D, 0x0E3E, 0x0E3F,
};
-static const unsigned short utf8_to_euc_EFBD_x0213[] = {
- 0x212E, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367,
- 0x2368, 0x2369, 0x236A, 0x236B, 0x236C, 0x236D, 0x236E, 0x236F,
- 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377,
- 0x2378, 0x2379, 0x237A, 0x2150, 0x2143, 0x2151, 0x2232, 0x2256,
- 0x2257, 0x0E21, 0x0E22, 0x0E23, 0x0E24, 0x0E25, 0x0E26, 0x0E27,
- 0x0E28, 0x0E29, 0x0E2A, 0x0E2B, 0x0E2C, 0x0E2D, 0x0E2E, 0x0E2F,
- 0x0E30, 0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37,
- 0x0E38, 0x0E39, 0x0E3A, 0x0E3B, 0x0E3C, 0x0E3D, 0x0E3E, 0x0E3F,
-};
static const unsigned short utf8_to_euc_EFBE[] = {
0x0E40, 0x0E41, 0x0E42, 0x0E43, 0x0E44, 0x0E45, 0x0E46, 0x0E47,
0x0E48, 0x0E49, 0x0E4A, 0x0E4B, 0x0E4C, 0x0E4D, 0x0E4E, 0x0E4F,
@@ -11958,24 +6299,6 @@ static const unsigned short utf8_to_euc_EFBF[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
-static const unsigned short *const utf8_to_euc_E1_x0213[] = {
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- utf8_to_euc_E1B8_x0213, 0, 0, 0,
- 0, utf8_to_euc_E1BD_x0213, 0, 0,
-};
static const unsigned short *const utf8_to_euc_E2[] = {
utf8_to_euc_E280, 0, 0, 0,
utf8_to_euc_E284, utf8_to_euc_E285, utf8_to_euc_E286, utf8_to_euc_E287,
@@ -12048,24 +6371,6 @@ static const unsigned short *const utf8_to_euc_E2_mac[] = {
0, 0, 0, 0,
0, 0, 0, 0,
};
-static const unsigned short *const utf8_to_euc_E2_x0213[] = {
- utf8_to_euc_E280_x0213, utf8_to_euc_E281_x0213, utf8_to_euc_E282_x0213, 0,
- utf8_to_euc_E284_x0213, utf8_to_euc_E285_x0213, utf8_to_euc_E286_x0213, utf8_to_euc_E287_x0213,
- utf8_to_euc_E288_x0213, utf8_to_euc_E289_x0213, utf8_to_euc_E28A_x0213, utf8_to_euc_E28B_x0213,
- utf8_to_euc_E28C_x0213, 0, utf8_to_euc_E28E_x0213, utf8_to_euc_E28F_x0213,
- utf8_to_euc_E290_x0213, utf8_to_euc_E291, 0, utf8_to_euc_E293_x0213,
- utf8_to_euc_E294, utf8_to_euc_E295, utf8_to_euc_E296_x0213, utf8_to_euc_E297_x0213,
- utf8_to_euc_E298_x0213, utf8_to_euc_E299_x0213, 0, 0,
- utf8_to_euc_E29C_x0213, utf8_to_euc_E29D_x0213, 0, 0,
- 0, 0, 0, 0,
- utf8_to_euc_E2A4_x0213, 0, utf8_to_euc_E2A6_x0213, utf8_to_euc_E2A7_x0213,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
-};
static const unsigned short *const utf8_to_euc_E3[] = {
utf8_to_euc_E380, utf8_to_euc_E381, utf8_to_euc_E382, utf8_to_euc_E383,
0, 0, 0, 0,
@@ -12120,24 +6425,6 @@ static const unsigned short *const utf8_to_euc_E3_mac[] = {
0, 0, 0, 0,
0, 0, 0, 0,
};
-static const unsigned short *const utf8_to_euc_E3_x0213[] = {
- utf8_to_euc_E380_x0213, utf8_to_euc_E381, utf8_to_euc_E382_x0213, utf8_to_euc_E383_x0213,
- 0, 0, 0, utf8_to_euc_E387_x0213,
- utf8_to_euc_E388, utf8_to_euc_E389_x0213, utf8_to_euc_E38A_x0213, utf8_to_euc_E38B_x0213,
- utf8_to_euc_E38C, utf8_to_euc_E38D, utf8_to_euc_E38E, utf8_to_euc_E38F_x0213,
- utf8_to_euc_E390_x0213, utf8_to_euc_E391_x0213, utf8_to_euc_E392_x0213, utf8_to_euc_E393_x0213,
- utf8_to_euc_E394_x0213, utf8_to_euc_E395_x0213, utf8_to_euc_E396_x0213, utf8_to_euc_E397_x0213,
- utf8_to_euc_E398_x0213, utf8_to_euc_E399_x0213, utf8_to_euc_E39A_x0213, utf8_to_euc_E39B_x0213,
- 0, utf8_to_euc_E39D_x0213, utf8_to_euc_E39E_x0213, utf8_to_euc_E39F_x0213,
- utf8_to_euc_E3A0_x0213, utf8_to_euc_E3A1_x0213, 0, utf8_to_euc_E3A3_x0213,
- utf8_to_euc_E3A4_x0213, utf8_to_euc_E3A5_x0213, 0, 0,
- 0, utf8_to_euc_E3A9_x0213, 0, utf8_to_euc_E3AB_x0213,
- utf8_to_euc_E3AC_x0213, utf8_to_euc_E3AD_x0213, utf8_to_euc_E3AE_x0213, utf8_to_euc_E3AF_x0213,
- utf8_to_euc_E3B0_x0213, 0, 0, utf8_to_euc_E3B3_x0213,
- utf8_to_euc_E3B4_x0213, utf8_to_euc_E3B5_x0213, utf8_to_euc_E3B6_x0213, utf8_to_euc_E3B7_x0213,
- utf8_to_euc_E3B8_x0213, utf8_to_euc_E3B9_x0213, utf8_to_euc_E3BA_x0213, 0,
- 0, utf8_to_euc_E3BD_x0213, utf8_to_euc_E3BE_x0213, utf8_to_euc_E3BF_x0213,
-};
static const unsigned short *const utf8_to_euc_E4[] = {
0, 0, 0, 0,
0, 0, 0, 0,
@@ -12156,24 +6443,6 @@ static const unsigned short *const utf8_to_euc_E4[] = {
utf8_to_euc_E4B8, utf8_to_euc_E4B9, utf8_to_euc_E4BA, utf8_to_euc_E4BB,
utf8_to_euc_E4BC, utf8_to_euc_E4BD, utf8_to_euc_E4BE, utf8_to_euc_E4BF,
};
-static const unsigned short *const utf8_to_euc_E4_x0213[] = {
- utf8_to_euc_E480_x0213, utf8_to_euc_E481_x0213, utf8_to_euc_E482_x0213, 0,
- utf8_to_euc_E484_x0213, utf8_to_euc_E485_x0213, utf8_to_euc_E486_x0213, utf8_to_euc_E487_x0213,
- utf8_to_euc_E488_x0213, utf8_to_euc_E489_x0213, 0, utf8_to_euc_E48B_x0213,
- utf8_to_euc_E48C_x0213, utf8_to_euc_E48D_x0213, 0, utf8_to_euc_E48F_x0213,
- utf8_to_euc_E490_x0213, utf8_to_euc_E491_x0213, utf8_to_euc_E492_x0213, utf8_to_euc_E493_x0213,
- utf8_to_euc_E494_x0213, utf8_to_euc_E495_x0213, utf8_to_euc_E496_x0213, utf8_to_euc_E497_x0213,
- utf8_to_euc_E498_x0213, utf8_to_euc_E499_x0213, utf8_to_euc_E49A_x0213, 0,
- utf8_to_euc_E49C_x0213, utf8_to_euc_E49D_x0213, 0, utf8_to_euc_E49F_x0213,
- utf8_to_euc_E4A0_x0213, utf8_to_euc_E4A1_x0213, utf8_to_euc_E4A2_x0213, 0,
- 0, 0, utf8_to_euc_E4A6_x0213, utf8_to_euc_E4A7_x0213,
- utf8_to_euc_E4A8_x0213, 0, utf8_to_euc_E4AA_x0213, 0,
- utf8_to_euc_E4AC_x0213, 0, 0, utf8_to_euc_E4AF_x0213,
- utf8_to_euc_E4B0_x0213, 0, 0, utf8_to_euc_E4B3_x0213,
- utf8_to_euc_E4B4_x0213, utf8_to_euc_E4B5_x0213, 0, 0,
- utf8_to_euc_E4B8_x0213, utf8_to_euc_E4B9_x0213, utf8_to_euc_E4BA_x0213, utf8_to_euc_E4BB_x0213,
- utf8_to_euc_E4BC_x0213, utf8_to_euc_E4BD_x0213, utf8_to_euc_E4BE_x0213, utf8_to_euc_E4BF_x0213,
-};
static const unsigned short *const utf8_to_euc_E5[] = {
utf8_to_euc_E580, utf8_to_euc_E581, utf8_to_euc_E582, utf8_to_euc_E583,
utf8_to_euc_E584, utf8_to_euc_E585, utf8_to_euc_E586, utf8_to_euc_E587,
@@ -12192,24 +6461,6 @@ static const unsigned short *const utf8_to_euc_E5[] = {
utf8_to_euc_E5B8, utf8_to_euc_E5B9, utf8_to_euc_E5BA, utf8_to_euc_E5BB,
utf8_to_euc_E5BC, utf8_to_euc_E5BD, utf8_to_euc_E5BE, utf8_to_euc_E5BF,
};
-static const unsigned short *const utf8_to_euc_E5_x0213[] = {
- utf8_to_euc_E580_x0213, utf8_to_euc_E581_x0213, utf8_to_euc_E582_x0213, utf8_to_euc_E583_x0213,
- utf8_to_euc_E584_x0213, utf8_to_euc_E585_x0213, utf8_to_euc_E586_x0213, utf8_to_euc_E587_x0213,
- utf8_to_euc_E588_x0213, utf8_to_euc_E589_x0213, utf8_to_euc_E58A_x0213, utf8_to_euc_E58B_x0213,
- utf8_to_euc_E58C_x0213, utf8_to_euc_E58D_x0213, utf8_to_euc_E58E_x0213, utf8_to_euc_E58F_x0213,
- utf8_to_euc_E590_x0213, utf8_to_euc_E591_x0213, utf8_to_euc_E592_x0213, utf8_to_euc_E593_x0213,
- utf8_to_euc_E594_x0213, utf8_to_euc_E595_x0213, utf8_to_euc_E596_x0213, utf8_to_euc_E597_x0213,
- utf8_to_euc_E598_x0213, utf8_to_euc_E599_x0213, utf8_to_euc_E59A_x0213, utf8_to_euc_E59B_x0213,
- utf8_to_euc_E59C_x0213, utf8_to_euc_E59D_x0213, utf8_to_euc_E59E_x0213, utf8_to_euc_E59F_x0213,
- utf8_to_euc_E5A0_x0213, utf8_to_euc_E5A1_x0213, utf8_to_euc_E5A2_x0213, utf8_to_euc_E5A3_x0213,
- utf8_to_euc_E5A4_x0213, utf8_to_euc_E5A5_x0213, utf8_to_euc_E5A6_x0213, utf8_to_euc_E5A7_x0213,
- utf8_to_euc_E5A8_x0213, utf8_to_euc_E5A9_x0213, utf8_to_euc_E5AA_x0213, utf8_to_euc_E5AB_x0213,
- utf8_to_euc_E5AC_x0213, utf8_to_euc_E5AD_x0213, utf8_to_euc_E5AE_x0213, utf8_to_euc_E5AF_x0213,
- utf8_to_euc_E5B0_x0213, utf8_to_euc_E5B1_x0213, utf8_to_euc_E5B2_x0213, utf8_to_euc_E5B3_x0213,
- utf8_to_euc_E5B4_x0213, utf8_to_euc_E5B5_x0213, utf8_to_euc_E5B6_x0213, utf8_to_euc_E5B7_x0213,
- utf8_to_euc_E5B8_x0213, utf8_to_euc_E5B9_x0213, utf8_to_euc_E5BA_x0213, utf8_to_euc_E5BB_x0213,
- utf8_to_euc_E5BC_x0213, utf8_to_euc_E5BD_x0213, utf8_to_euc_E5BE_x0213, utf8_to_euc_E5BF_x0213,
-};
static const unsigned short *const utf8_to_euc_E6[] = {
utf8_to_euc_E680, utf8_to_euc_E681, utf8_to_euc_E682, utf8_to_euc_E683,
utf8_to_euc_E684, utf8_to_euc_E685, utf8_to_euc_E686, utf8_to_euc_E687,
@@ -12228,24 +6479,6 @@ static const unsigned short *const utf8_to_euc_E6[] = {
utf8_to_euc_E6B8, utf8_to_euc_E6B9, utf8_to_euc_E6BA, utf8_to_euc_E6BB,
utf8_to_euc_E6BC, utf8_to_euc_E6BD, utf8_to_euc_E6BE, utf8_to_euc_E6BF,
};
-static const unsigned short *const utf8_to_euc_E6_x0213[] = {
- utf8_to_euc_E680_x0213, utf8_to_euc_E681_x0213, utf8_to_euc_E682_x0213, utf8_to_euc_E683_x0213,
- utf8_to_euc_E684_x0213, utf8_to_euc_E685_x0213, utf8_to_euc_E686_x0213, utf8_to_euc_E687_x0213,
- utf8_to_euc_E688_x0213, utf8_to_euc_E689_x0213, utf8_to_euc_E68A_x0213, utf8_to_euc_E68B_x0213,
- utf8_to_euc_E68C_x0213, utf8_to_euc_E68D_x0213, utf8_to_euc_E68E_x0213, utf8_to_euc_E68F_x0213,
- utf8_to_euc_E690_x0213, utf8_to_euc_E691_x0213, utf8_to_euc_E692_x0213, utf8_to_euc_E693_x0213,
- utf8_to_euc_E694_x0213, utf8_to_euc_E695_x0213, utf8_to_euc_E696_x0213, utf8_to_euc_E697_x0213,
- utf8_to_euc_E698_x0213, utf8_to_euc_E699_x0213, utf8_to_euc_E69A_x0213, utf8_to_euc_E69B_x0213,
- utf8_to_euc_E69C_x0213, utf8_to_euc_E69D_x0213, utf8_to_euc_E69E_x0213, utf8_to_euc_E69F_x0213,
- utf8_to_euc_E6A0_x0213, utf8_to_euc_E6A1_x0213, utf8_to_euc_E6A2_x0213, utf8_to_euc_E6A3_x0213,
- utf8_to_euc_E6A4_x0213, utf8_to_euc_E6A5_x0213, utf8_to_euc_E6A6_x0213, utf8_to_euc_E6A7_x0213,
- utf8_to_euc_E6A8_x0213, utf8_to_euc_E6A9_x0213, utf8_to_euc_E6AA_x0213, utf8_to_euc_E6AB_x0213,
- utf8_to_euc_E6AC_x0213, utf8_to_euc_E6AD_x0213, utf8_to_euc_E6AE_x0213, utf8_to_euc_E6AF_x0213,
- utf8_to_euc_E6B0_x0213, utf8_to_euc_E6B1_x0213, utf8_to_euc_E6B2_x0213, utf8_to_euc_E6B3_x0213,
- utf8_to_euc_E6B4_x0213, utf8_to_euc_E6B5_x0213, utf8_to_euc_E6B6_x0213, utf8_to_euc_E6B7_x0213,
- utf8_to_euc_E6B8_x0213, utf8_to_euc_E6B9_x0213, utf8_to_euc_E6BA_x0213, utf8_to_euc_E6BB_x0213,
- utf8_to_euc_E6BC_x0213, utf8_to_euc_E6BD_x0213, utf8_to_euc_E6BE_x0213, utf8_to_euc_E6BF_x0213,
-};
static const unsigned short *const utf8_to_euc_E7[] = {
utf8_to_euc_E780, utf8_to_euc_E781, utf8_to_euc_E782, utf8_to_euc_E783,
utf8_to_euc_E784, utf8_to_euc_E785, utf8_to_euc_E786, utf8_to_euc_E787,
@@ -12264,24 +6497,6 @@ static const unsigned short *const utf8_to_euc_E7[] = {
utf8_to_euc_E7B8, utf8_to_euc_E7B9, utf8_to_euc_E7BA, 0,
utf8_to_euc_E7BC, utf8_to_euc_E7BD, utf8_to_euc_E7BE, utf8_to_euc_E7BF,
};
-static const unsigned short *const utf8_to_euc_E7_x0213[] = {
- utf8_to_euc_E780_x0213, utf8_to_euc_E781_x0213, utf8_to_euc_E782_x0213, utf8_to_euc_E783_x0213,
- utf8_to_euc_E784_x0213, utf8_to_euc_E785_x0213, utf8_to_euc_E786_x0213, utf8_to_euc_E787_x0213,
- utf8_to_euc_E788_x0213, utf8_to_euc_E789_x0213, utf8_to_euc_E78A_x0213, utf8_to_euc_E78B_x0213,
- utf8_to_euc_E78C_x0213, utf8_to_euc_E78D_x0213, utf8_to_euc_E78E_x0213, utf8_to_euc_E78F_x0213,
- utf8_to_euc_E790_x0213, utf8_to_euc_E791_x0213, utf8_to_euc_E792_x0213, utf8_to_euc_E793_x0213,
- utf8_to_euc_E794_x0213, utf8_to_euc_E795_x0213, utf8_to_euc_E796_x0213, utf8_to_euc_E797_x0213,
- utf8_to_euc_E798_x0213, utf8_to_euc_E799_x0213, utf8_to_euc_E79A_x0213, utf8_to_euc_E79B_x0213,
- utf8_to_euc_E79C_x0213, utf8_to_euc_E79D_x0213, utf8_to_euc_E79E_x0213, utf8_to_euc_E79F_x0213,
- utf8_to_euc_E7A0_x0213, utf8_to_euc_E7A1_x0213, utf8_to_euc_E7A2_x0213, utf8_to_euc_E7A3_x0213,
- utf8_to_euc_E7A4_x0213, utf8_to_euc_E7A5_x0213, utf8_to_euc_E7A6_x0213, utf8_to_euc_E7A7_x0213,
- utf8_to_euc_E7A8_x0213, utf8_to_euc_E7A9_x0213, utf8_to_euc_E7AA_x0213, utf8_to_euc_E7AB_x0213,
- utf8_to_euc_E7AC_x0213, utf8_to_euc_E7AD_x0213, utf8_to_euc_E7AE_x0213, utf8_to_euc_E7AF_x0213,
- utf8_to_euc_E7B0_x0213, utf8_to_euc_E7B1_x0213, utf8_to_euc_E7B2_x0213, utf8_to_euc_E7B3_x0213,
- utf8_to_euc_E7B4_x0213, utf8_to_euc_E7B5_x0213, utf8_to_euc_E7B6_x0213, utf8_to_euc_E7B7_x0213,
- utf8_to_euc_E7B8_x0213, utf8_to_euc_E7B9_x0213, utf8_to_euc_E7BA_x0213, 0,
- utf8_to_euc_E7BC_x0213, utf8_to_euc_E7BD_x0213, utf8_to_euc_E7BE_x0213, utf8_to_euc_E7BF_x0213,
-};
static const unsigned short *const utf8_to_euc_E8[] = {
utf8_to_euc_E880, utf8_to_euc_E881, utf8_to_euc_E882, utf8_to_euc_E883,
utf8_to_euc_E884, utf8_to_euc_E885, utf8_to_euc_E886, utf8_to_euc_E887,
@@ -12300,24 +6515,6 @@ static const unsigned short *const utf8_to_euc_E8[] = {
utf8_to_euc_E8B8, utf8_to_euc_E8B9, utf8_to_euc_E8BA, utf8_to_euc_E8BB,
utf8_to_euc_E8BC, utf8_to_euc_E8BD, utf8_to_euc_E8BE, utf8_to_euc_E8BF,
};
-static const unsigned short *const utf8_to_euc_E8_x0213[] = {
- utf8_to_euc_E880_x0213, utf8_to_euc_E881_x0213, utf8_to_euc_E882_x0213, utf8_to_euc_E883_x0213,
- utf8_to_euc_E884_x0213, utf8_to_euc_E885_x0213, utf8_to_euc_E886_x0213, utf8_to_euc_E887_x0213,
- utf8_to_euc_E888_x0213, utf8_to_euc_E889_x0213, utf8_to_euc_E88A_x0213, utf8_to_euc_E88B_x0213,
- utf8_to_euc_E88C_x0213, utf8_to_euc_E88D_x0213, utf8_to_euc_E88E_x0213, utf8_to_euc_E88F_x0213,
- utf8_to_euc_E890_x0213, utf8_to_euc_E891_x0213, utf8_to_euc_E892_x0213, utf8_to_euc_E893_x0213,
- utf8_to_euc_E894_x0213, utf8_to_euc_E895_x0213, utf8_to_euc_E896_x0213, utf8_to_euc_E897_x0213,
- utf8_to_euc_E898_x0213, utf8_to_euc_E899_x0213, utf8_to_euc_E89A_x0213, utf8_to_euc_E89B_x0213,
- utf8_to_euc_E89C_x0213, utf8_to_euc_E89D_x0213, utf8_to_euc_E89E_x0213, utf8_to_euc_E89F_x0213,
- utf8_to_euc_E8A0_x0213, utf8_to_euc_E8A1_x0213, utf8_to_euc_E8A2_x0213, utf8_to_euc_E8A3_x0213,
- utf8_to_euc_E8A4_x0213, utf8_to_euc_E8A5_x0213, utf8_to_euc_E8A6_x0213, utf8_to_euc_E8A7_x0213,
- utf8_to_euc_E8A8_x0213, utf8_to_euc_E8A9_x0213, utf8_to_euc_E8AA_x0213, utf8_to_euc_E8AB_x0213,
- utf8_to_euc_E8AC_x0213, utf8_to_euc_E8AD_x0213, utf8_to_euc_E8AE_x0213, 0,
- utf8_to_euc_E8B0_x0213, utf8_to_euc_E8B1_x0213, utf8_to_euc_E8B2_x0213, utf8_to_euc_E8B3_x0213,
- utf8_to_euc_E8B4_x0213, utf8_to_euc_E8B5_x0213, utf8_to_euc_E8B6_x0213, utf8_to_euc_E8B7_x0213,
- utf8_to_euc_E8B8_x0213, utf8_to_euc_E8B9_x0213, utf8_to_euc_E8BA_x0213, utf8_to_euc_E8BB_x0213,
- utf8_to_euc_E8BC_x0213, utf8_to_euc_E8BD_x0213, utf8_to_euc_E8BE_x0213, utf8_to_euc_E8BF_x0213,
-};
static const unsigned short *const utf8_to_euc_E9[] = {
utf8_to_euc_E980, utf8_to_euc_E981, utf8_to_euc_E982, utf8_to_euc_E983,
utf8_to_euc_E984, utf8_to_euc_E985, utf8_to_euc_E986, utf8_to_euc_E987,
@@ -12336,24 +6533,6 @@ static const unsigned short *const utf8_to_euc_E9[] = {
utf8_to_euc_E9B8, utf8_to_euc_E9B9, utf8_to_euc_E9BA, utf8_to_euc_E9BB,
utf8_to_euc_E9BC, utf8_to_euc_E9BD, utf8_to_euc_E9BE, 0,
};
-static const unsigned short *const utf8_to_euc_E9_x0213[] = {
- utf8_to_euc_E980_x0213, utf8_to_euc_E981_x0213, utf8_to_euc_E982_x0213, utf8_to_euc_E983_x0213,
- utf8_to_euc_E984_x0213, utf8_to_euc_E985_x0213, utf8_to_euc_E986_x0213, utf8_to_euc_E987_x0213,
- utf8_to_euc_E988_x0213, utf8_to_euc_E989_x0213, utf8_to_euc_E98A_x0213, utf8_to_euc_E98B_x0213,
- utf8_to_euc_E98C_x0213, utf8_to_euc_E98D_x0213, utf8_to_euc_E98E_x0213, utf8_to_euc_E98F_x0213,
- utf8_to_euc_E990_x0213, utf8_to_euc_E991_x0213, utf8_to_euc_E992, 0,
- 0, utf8_to_euc_E995_x0213, utf8_to_euc_E996_x0213, utf8_to_euc_E997_x0213,
- utf8_to_euc_E998_x0213, utf8_to_euc_E999_x0213, utf8_to_euc_E99A_x0213, utf8_to_euc_E99B_x0213,
- utf8_to_euc_E99C_x0213, utf8_to_euc_E99D_x0213, utf8_to_euc_E99E_x0213, utf8_to_euc_E99F_x0213,
- utf8_to_euc_E9A0_x0213, utf8_to_euc_E9A1_x0213, utf8_to_euc_E9A2_x0213, utf8_to_euc_E9A3_x0213,
- utf8_to_euc_E9A4_x0213, utf8_to_euc_E9A5_x0213, utf8_to_euc_E9A6_x0213, utf8_to_euc_E9A7_x0213,
- utf8_to_euc_E9A8_x0213, utf8_to_euc_E9A9_x0213, utf8_to_euc_E9AA_x0213, utf8_to_euc_E9AB_x0213,
- utf8_to_euc_E9AC_x0213, utf8_to_euc_E9AD_x0213, utf8_to_euc_E9AE_x0213, utf8_to_euc_E9AF_x0213,
- utf8_to_euc_E9B0_x0213, utf8_to_euc_E9B1_x0213, 0, utf8_to_euc_E9B3_x0213,
- utf8_to_euc_E9B4_x0213, utf8_to_euc_E9B5_x0213, utf8_to_euc_E9B6_x0213, utf8_to_euc_E9B7_x0213,
- utf8_to_euc_E9B8_x0213, utf8_to_euc_E9B9_x0213, utf8_to_euc_E9BA_x0213, utf8_to_euc_E9BB_x0213,
- utf8_to_euc_E9BC_x0213, utf8_to_euc_E9BD_x0213, utf8_to_euc_E9BE_x0213, 0,
-};
static const unsigned short *const utf8_to_euc_EF[] = {
0, 0, 0, 0,
0, 0, 0, 0,
@@ -12390,24 +6569,6 @@ static const unsigned short *const utf8_to_euc_EF_ms[] = {
0, 0, 0, 0,
utf8_to_euc_EFBC, utf8_to_euc_EFBD_ms, utf8_to_euc_EFBE, utf8_to_euc_EFBF,
};
-static const unsigned short *const utf8_to_euc_EF_x0213[] = {
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- utf8_to_euc_EFA4_x0213, utf8_to_euc_EFA5_x0213, 0, utf8_to_euc_EFA7_x0213,
- utf8_to_euc_EFA8_x0213, utf8_to_euc_EFA9_x0213, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, utf8_to_euc_EFB9_x0213, 0, 0,
- utf8_to_euc_EFBC_x0213, utf8_to_euc_EFBD_x0213, utf8_to_euc_EFBE, utf8_to_euc_EFBF,
-};
const unsigned short *const utf8_to_euc_2bytes[] = {
0, 0, 0, 0,
0, 0, 0, 0,
@@ -12528,36 +6689,6 @@ const unsigned short *const utf8_to_euc_2bytes_mac[] = {
0, 0, 0, 0,
0, 0, 0, 0,
};
-const unsigned short *const utf8_to_euc_2bytes_x0213[] = {
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, utf8_to_euc_C2_x0213, utf8_to_euc_C3_x0213,
- utf8_to_euc_C4_x0213, utf8_to_euc_C5_x0213, utf8_to_euc_C6_x0213, utf8_to_euc_C7_x0213,
- 0, utf8_to_euc_C9_x0213, utf8_to_euc_CA_x0213, utf8_to_euc_CB_x0213,
- utf8_to_euc_CC_x0213, utf8_to_euc_CD_x0213, utf8_to_euc_CE, utf8_to_euc_CF_x0213,
- utf8_to_euc_D0, utf8_to_euc_D1, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0,
-};
const unsigned short *const *const utf8_to_euc_3bytes[] = {
0, 0, utf8_to_euc_E2, utf8_to_euc_E3,
utf8_to_euc_E4, utf8_to_euc_E5, utf8_to_euc_E6, utf8_to_euc_E7,
@@ -12582,12 +6713,6 @@ const unsigned short *const *const utf8_to_euc_3bytes_mac[] = {
utf8_to_euc_E8, utf8_to_euc_E9, 0, 0,
0, 0, 0, utf8_to_euc_EF_ms,
};
-const unsigned short *const *const utf8_to_euc_3bytes_x0213[] = {
- 0, utf8_to_euc_E1_x0213, utf8_to_euc_E2_x0213, utf8_to_euc_E3_x0213,
- utf8_to_euc_E4_x0213, utf8_to_euc_E5_x0213, utf8_to_euc_E6_x0213, utf8_to_euc_E7_x0213,
- utf8_to_euc_E8_x0213, utf8_to_euc_E9_x0213, 0, 0,
- 0, 0, 0, utf8_to_euc_EF_x0213,
-};
#ifdef UNICODE_NORMALIZATION
diff --git a/ext/nkf/nkf-utf8/utf8tbl.h b/ext/nkf/nkf-utf8/utf8tbl.h
index 082fb01a5b..c3d7709ef7 100644
--- a/ext/nkf/nkf-utf8/utf8tbl.h
+++ b/ext/nkf/nkf-utf8/utf8tbl.h
@@ -1,7 +1,7 @@
/*
* utf8tbl.h - Header file for Convertion Table
*
- * $Id: utf8tbl.h,v 1.3 2008/01/23 09:10:25 naruse Exp $
+ * $Id$
*/
#ifndef _UTF8TBL_H_
@@ -14,17 +14,7 @@ extern const unsigned short euc_to_utf8_1byte[];
extern const unsigned short *const euc_to_utf8_2bytes[];
extern const unsigned short *const euc_to_utf8_2bytes_ms[];
extern const unsigned short *const euc_to_utf8_2bytes_mac[];
-extern const unsigned short *const euc_to_utf8_2bytes_x0213[];
extern const unsigned short *const x0212_to_utf8_2bytes[];
-extern const unsigned short *const x0212_to_utf8_2bytes_x0213[];
-#define sizeof_x0213_combining_chars 5
-#define sizeof_x0213_combining_table 25
-#define sizeof_x0213_1_surrogate_table 26
-#define sizeof_x0213_2_surrogate_table 277
-extern const unsigned short x0213_combining_chars[sizeof_x0213_combining_chars];
-extern const unsigned short x0213_combining_table[sizeof_x0213_combining_table][3];
-extern const unsigned short x0213_1_surrogate_table[sizeof_x0213_1_surrogate_table][3];
-extern const unsigned short x0213_2_surrogate_table[sizeof_x0213_2_surrogate_table][3];
#endif /* UTF8_OUTPUT_ENABLE */
#ifdef UTF8_INPUT_ENABLE
@@ -36,12 +26,10 @@ extern const unsigned short *const utf8_to_euc_2bytes[];
extern const unsigned short *const utf8_to_euc_2bytes_ms[];
extern const unsigned short *const utf8_to_euc_2bytes_932[];
extern const unsigned short *const utf8_to_euc_2bytes_mac[];
-extern const unsigned short *const utf8_to_euc_2bytes_x0213[];
extern const unsigned short *const *const utf8_to_euc_3bytes[];
extern const unsigned short *const *const utf8_to_euc_3bytes_ms[];
extern const unsigned short *const *const utf8_to_euc_3bytes_932[];
extern const unsigned short *const *const utf8_to_euc_3bytes_mac[];
-extern const unsigned short *const *const utf8_to_euc_3bytes_x0213[];
#endif /* UTF8_INPUT_ENABLE */
#ifdef UNICODE_NORMALIZATION
diff --git a/ext/nkf/nkf.c b/ext/nkf/nkf.c
index 2f36866ac4..05fd36de64 100644
--- a/ext/nkf/nkf.c
+++ b/ext/nkf/nkf.c
@@ -135,7 +135,7 @@ int nkf_split_options(const char *arg)
static VALUE
rb_nkf_convert(VALUE obj, VALUE opt, VALUE src)
{
- VALUE tmp;
+ volatile VALUE tmp;
reinit();
StringValue(opt);
nkf_split_options(RSTRING_PTR(opt));
@@ -156,28 +156,23 @@ rb_nkf_convert(VALUE obj, VALUE opt, VALUE src)
StringValue(src);
input = (unsigned char *)RSTRING_PTR(src);
i_len = RSTRING_LENINT(src);
- tmp = rb_str_new(0, i_len*3 + 10);
+ tmp = result = rb_str_new(0, i_len*3 + 10);
output_ctr = 0;
- output = (unsigned char *)RSTRING_PTR(tmp);
- o_len = RSTRING_LENINT(tmp);
+ output = (unsigned char *)RSTRING_PTR(result);
+ o_len = RSTRING_LENINT(result);
*output = '\0';
- /* use _result_ begin*/
- result = tmp;
kanji_convert(NULL);
- result = Qnil;
- /* use _result_ end */
-
- rb_str_set_len(tmp, output_ctr);
- OBJ_INFECT(tmp, src);
+ rb_str_set_len(result, output_ctr);
+ OBJ_INFECT(result, src);
if (mimeout_f)
- rb_enc_associate(tmp, rb_usascii_encoding());
+ rb_enc_associate(result, rb_usascii_encoding());
else
- rb_enc_associate(tmp, rb_nkf_enc_get(nkf_enc_name(output_encoding)));
+ rb_enc_associate(result, rb_nkf_enc_get(nkf_enc_name(output_encoding)));
- return tmp;
+ return result;
}
diff --git a/ext/objspace/objspace.c b/ext/objspace/objspace.c
index 720c918555..66e33a38c4 100644
--- a/ext/objspace/objspace.c
+++ b/ext/objspace/objspace.c
@@ -60,9 +60,7 @@ memsize_of(VALUE obj)
break;
case T_MODULE:
case T_CLASS:
- if (RCLASS_M_TBL(obj)) {
- size += st_memsize(RCLASS_M_TBL(obj));
- }
+ size += st_memsize(RCLASS_M_TBL(obj));
if (RCLASS_IV_TBL(obj)) {
size += st_memsize(RCLASS_IV_TBL(obj));
}
@@ -99,7 +97,7 @@ memsize_of(VALUE obj)
case T_MATCH:
if (RMATCH(obj)->rmatch) {
struct rmatch *rm = RMATCH(obj)->rmatch;
- size += onig_region_memsize(&rm->regs);
+ size += sizeof(struct re_registers); /* TODO: onig_region_memsize(&rm->regs); */
size += sizeof(struct rmatch_offset) * rm->char_offset_num_allocated;
size += sizeof(struct rmatch);
}
@@ -225,7 +223,7 @@ total_i(void *vstart, void *vend, size_t stride, void *ptr)
*
* def memsize_of_all klass = false
* total = 0
- * ObjectSpace.each_object{|e|
+ * ObjectSpace.each_objects{|e|
* total += ObjectSpace.memsize_of(e) if klass == false || e.kind_of?(klass)
* }
* total
@@ -270,43 +268,6 @@ cos_i(void *vstart, void *vend, size_t stride, void *data)
return 0;
}
-static VALUE
-type2sym(enum ruby_value_type i)
-{
- VALUE type;
- switch (i) {
-#define CASE_TYPE(t) case t: type = ID2SYM(rb_intern(#t)); break;
- CASE_TYPE(T_NONE);
- CASE_TYPE(T_OBJECT);
- CASE_TYPE(T_CLASS);
- CASE_TYPE(T_MODULE);
- CASE_TYPE(T_FLOAT);
- CASE_TYPE(T_STRING);
- CASE_TYPE(T_REGEXP);
- CASE_TYPE(T_ARRAY);
- CASE_TYPE(T_HASH);
- CASE_TYPE(T_STRUCT);
- CASE_TYPE(T_BIGNUM);
- CASE_TYPE(T_FILE);
- CASE_TYPE(T_DATA);
- CASE_TYPE(T_MATCH);
- CASE_TYPE(T_COMPLEX);
- CASE_TYPE(T_RATIONAL);
- CASE_TYPE(T_NIL);
- CASE_TYPE(T_TRUE);
- CASE_TYPE(T_FALSE);
- CASE_TYPE(T_SYMBOL);
- CASE_TYPE(T_FIXNUM);
- CASE_TYPE(T_UNDEF);
- CASE_TYPE(T_NODE);
- CASE_TYPE(T_ICLASS);
- CASE_TYPE(T_ZOMBIE);
-#undef CASE_TYPE
- default: rb_bug("type2sym: unknown type (%d)", i);
- }
- return type;
-}
-
/*
* call-seq:
* ObjectSpace.count_objects_size([result_hash]) -> hash
@@ -335,11 +296,11 @@ count_objects_size(int argc, VALUE *argv, VALUE os)
{
size_t counts[T_MASK+1];
size_t total = 0;
- enum ruby_value_type i;
+ size_t i;
VALUE hash;
if (rb_scan_args(argc, argv, "01", &hash) == 1) {
- if (!RB_TYPE_P(hash, T_HASH))
+ if (TYPE(hash) != T_HASH)
rb_raise(rb_eTypeError, "non-hash given");
}
@@ -358,7 +319,37 @@ count_objects_size(int argc, VALUE *argv, VALUE os)
for (i = 0; i <= T_MASK; i++) {
if (counts[i]) {
- VALUE type = type2sym(i);
+ VALUE type;
+ switch (i) {
+#define COUNT_TYPE(t) case t: type = ID2SYM(rb_intern(#t)); break;
+ COUNT_TYPE(T_NONE);
+ COUNT_TYPE(T_OBJECT);
+ COUNT_TYPE(T_CLASS);
+ COUNT_TYPE(T_MODULE);
+ COUNT_TYPE(T_FLOAT);
+ COUNT_TYPE(T_STRING);
+ COUNT_TYPE(T_REGEXP);
+ COUNT_TYPE(T_ARRAY);
+ COUNT_TYPE(T_HASH);
+ COUNT_TYPE(T_STRUCT);
+ COUNT_TYPE(T_BIGNUM);
+ COUNT_TYPE(T_FILE);
+ COUNT_TYPE(T_DATA);
+ COUNT_TYPE(T_MATCH);
+ COUNT_TYPE(T_COMPLEX);
+ COUNT_TYPE(T_RATIONAL);
+ COUNT_TYPE(T_NIL);
+ COUNT_TYPE(T_TRUE);
+ COUNT_TYPE(T_FALSE);
+ COUNT_TYPE(T_SYMBOL);
+ COUNT_TYPE(T_FIXNUM);
+ COUNT_TYPE(T_UNDEF);
+ COUNT_TYPE(T_NODE);
+ COUNT_TYPE(T_ICLASS);
+ COUNT_TYPE(T_ZOMBIE);
+#undef COUNT_TYPE
+ default: type = INT2NUM(i); break;
+ }
total += counts[i];
rb_hash_aset(hash, type, SIZET2NUM(counts[i]));
}
@@ -413,7 +404,7 @@ count_nodes(int argc, VALUE *argv, VALUE os)
VALUE hash;
if (rb_scan_args(argc, argv, "01", &hash) == 1) {
- if (!RB_TYPE_P(hash, T_HASH))
+ if (TYPE(hash) != T_HASH)
rb_raise(rb_eTypeError, "non-hash given");
}
@@ -469,7 +460,6 @@ count_nodes(int argc, VALUE *argv, VALUE os)
COUNT_NODE(NODE_OP_ASGN2);
COUNT_NODE(NODE_OP_ASGN_AND);
COUNT_NODE(NODE_OP_ASGN_OR);
- COUNT_NODE(NODE_OP_CDECL);
COUNT_NODE(NODE_CALL);
COUNT_NODE(NODE_FCALL);
COUNT_NODE(NODE_VCALL);
@@ -503,7 +493,6 @@ count_nodes(int argc, VALUE *argv, VALUE os)
COUNT_NODE(NODE_ARGS);
COUNT_NODE(NODE_ARGS_AUX);
COUNT_NODE(NODE_OPT_ARG);
- COUNT_NODE(NODE_KW_ARG);
COUNT_NODE(NODE_POSTARG);
COUNT_NODE(NODE_ARGSCAT);
COUNT_NODE(NODE_ARGSPUSH);
@@ -521,7 +510,6 @@ count_nodes(int argc, VALUE *argv, VALUE os)
COUNT_NODE(NODE_SCLASS);
COUNT_NODE(NODE_COLON2);
COUNT_NODE(NODE_COLON3);
- COUNT_NODE(NODE_CREF);
COUNT_NODE(NODE_DOT2);
COUNT_NODE(NODE_DOT3);
COUNT_NODE(NODE_FLIP2);
@@ -541,8 +529,9 @@ count_nodes(int argc, VALUE *argv, VALUE os)
COUNT_NODE(NODE_ATTRASGN);
COUNT_NODE(NODE_PRELUDE);
COUNT_NODE(NODE_LAMBDA);
+ COUNT_NODE(NODE_OPTBLOCK);
#undef COUNT_NODE
- default: node = INT2FIX(i);
+ default: node = INT2FIX(nodes[i]);
}
rb_hash_aset(hash, node, SIZET2NUM(nodes[i]));
}
@@ -620,7 +609,7 @@ count_tdata_objects(int argc, VALUE *argv, VALUE self)
VALUE hash;
if (rb_scan_args(argc, argv, "01", &hash) == 1) {
- if (!RB_TYPE_P(hash, T_HASH))
+ if (TYPE(hash) != T_HASH)
rb_raise(rb_eTypeError, "non-hash given");
}
@@ -636,149 +625,6 @@ count_tdata_objects(int argc, VALUE *argv, VALUE self)
return hash;
}
-static void
-iow_mark(void *ptr)
-{
- rb_gc_mark((VALUE)ptr);
-}
-
-static size_t
-iow_size(const void *ptr)
-{
- VALUE obj = (VALUE)ptr;
- return memsize_of(obj);
-}
-
-static const rb_data_type_t iow_data_type = {
- "ObjectSpace::InternalObjectWrapper",
- {iow_mark, 0, iow_size,},
-};
-
-static VALUE rb_mInternalObjectWrapper;
-
-static VALUE
-iow_newobj(VALUE obj)
-{
- return rb_data_typed_object_alloc(rb_mInternalObjectWrapper, (void *)obj, &iow_data_type);
-}
-
-static VALUE
-iow_type(VALUE self)
-{
- VALUE obj = (VALUE)DATA_PTR(self);
- return type2sym(BUILTIN_TYPE(obj));
-}
-
-static VALUE
-iow_inspect(VALUE self)
-{
- VALUE obj = (VALUE)DATA_PTR(self);
- VALUE type = type2sym(BUILTIN_TYPE(obj));
-
- return rb_sprintf("#<InternalObject:%p %s>", (void *)obj, rb_id2name(SYM2ID(type)));
-}
-
-static VALUE
-iow_internal_object_id(VALUE self)
-{
- VALUE obj = (VALUE)DATA_PTR(self);
- return rb_obj_id(obj);
-}
-
-struct rof_data {
- st_table *refs;
- VALUE internals;
-};
-
-static void
-reachable_object_from_i(VALUE obj, void *data_ptr)
-{
- struct rof_data *data = (struct rof_data *)data_ptr;
- VALUE key = obj;
- VALUE val = obj;
-
- if (rb_objspace_markable_object_p(obj)) {
- if (rb_objspace_internal_object_p(obj)) {
- val = iow_newobj(obj);
- rb_ary_push(data->internals, val);
- }
- st_insert(data->refs, key, val);
- }
-}
-
-static int
-collect_values(st_data_t key, st_data_t value, st_data_t data)
-{
- VALUE ary = (VALUE)data;
- rb_ary_push(ary, (VALUE)value);
- return ST_CONTINUE;
-}
-
-/*
- * call-seq:
- * ObjectSpace.reachable_objects_from(obj) -> array or nil
- *
- * [MRI specific feature] Return all reachable objects from `obj'.
- *
- * This method returns all reachable objects from `obj'.
- * If `obj' has references two or more references to same object `x',
- * them returned array only include one `x' object.
- * If `obj' is non-markable (non-heap management) object such as
- * true, false, nil, symbols and Fixnums (and Flonum) them it simply
- * returns nil.
- *
- * If `obj' has references to internal object, then it returns
- * instances of `ObjectSpace::InternalObjectWrapper' class.
- * This object contains a reference to an internal object and
- * you can check the type of internal object with `type' method.
- *
- * If `obj' is instance of `ObjectSpace::InternalObjectWrapper'
- * class, then this method returns all reachable object from
- * an internal object, which is pointed by `obj'.
- *
- * With this method, you can find memory leaks.
- *
- * This method is not expected to work except C Ruby.
- *
- * Example:
- * ObjectSpace.reachable_objects_from(['a', 'b', 'c'])
- * #=> [Array, 'a', 'b', 'c']
- *
- * ObjectSpace.reachable_objects_from(['a', 'a', 'a'])
- * #=> [Array, 'a', 'a', 'a'] # all 'a' strings have different object id
- *
- * ObjectSpace.reachable_objects_from([v = 'a', v, v])
- * #=> [Array, 'a']
- *
- * ObjectSpace.reachable_objects_from(1)
- * #=> nil # 1 is not markable (heap managed) object
- *
- */
-
-static VALUE
-reachable_objects_from(VALUE self, VALUE obj)
-{
- if (rb_objspace_markable_object_p(obj)) {
- VALUE ret = rb_ary_new();
- struct rof_data data;
-
- if (rb_typeddata_is_kind_of(obj, &iow_data_type)) {
- obj = (VALUE)DATA_PTR(obj);
- }
-
- data.refs = st_init_numtable();
- data.internals = rb_ary_new();
-
- rb_objspace_reachable_objects_from(obj, reachable_object_from_i, &data);
-
- st_foreach(data.refs, collect_values, (st_data_t)ret);
- return ret;
- }
- else {
- return Qnil;
- }
-}
-
/* objspace library extends ObjectSpace module and add several
* methods to get internal statistic information about
* object/memory management.
@@ -795,16 +641,10 @@ Init_objspace(void)
VALUE rb_mObjSpace = rb_const_get(rb_cObject, rb_intern("ObjectSpace"));
rb_define_module_function(rb_mObjSpace, "memsize_of", memsize_of_m, 1);
- rb_define_module_function(rb_mObjSpace, "memsize_of_all", memsize_of_all_m, -1);
+ rb_define_module_function(rb_mObjSpace, "memsize_of_all",
+ memsize_of_all_m, -1);
rb_define_module_function(rb_mObjSpace, "count_objects_size", count_objects_size, -1);
rb_define_module_function(rb_mObjSpace, "count_nodes", count_nodes, -1);
rb_define_module_function(rb_mObjSpace, "count_tdata_objects", count_tdata_objects, -1);
-
- rb_define_module_function(rb_mObjSpace, "reachable_objects_from", reachable_objects_from, 1);
-
- rb_mInternalObjectWrapper = rb_define_class_under(rb_mObjSpace, "InternalObjectWrapper", rb_cObject);
- rb_define_method(rb_mInternalObjectWrapper, "type", iow_type, 0);
- rb_define_method(rb_mInternalObjectWrapper, "inspect", iow_inspect, 0);
- rb_define_method(rb_mInternalObjectWrapper, "internal_object_id", iow_internal_object_id, 0);
}
diff --git a/ext/openssl/deprecation.rb b/ext/openssl/deprecation.rb
deleted file mode 100644
index 39ebfa0d37..0000000000
--- a/ext/openssl/deprecation.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-module OpenSSL
- def self.deprecated_warning_flag
- unless flag = (@deprecated_warning_flag ||= nil)
- if try_compile("", flag = "-Werror=deprecated-declarations")
- if with_config("broken-apple-openssl")
- flag = "-Wno-deprecated-declarations"
- end
- $warnflags << " #{flag}"
- else
- flag = ""
- end
- @deprecated_warning_flag = flag
- end
- flag
- end
-
- def self.check_func(func, header)
- have_func(func, header, deprecated_warning_flag) and
- have_header(header, nil, deprecated_warning_flag)
- end
-end
diff --git a/ext/openssl/extconf.rb b/ext/openssl/extconf.rb
index 848e1f2bdc..2206fcab5b 100644
--- a/ext/openssl/extconf.rb
+++ b/ext/openssl/extconf.rb
@@ -1,4 +1,3 @@
-# -*- coding: us-ascii -*-
=begin
= $RCSfile$ -- Generator for Makefile
@@ -16,27 +15,30 @@
=end
require "mkmf"
-require File.expand_path('../deprecation', __FILE__)
dir_config("openssl")
dir_config("kerberos")
-Logging::message "=== OpenSSL for Ruby configurator ===\n"
+message "=== OpenSSL for Ruby configurator ===\n"
##
-# Adds -DOSSL_DEBUG for compilation and some more targets when GCC is used
+# Adds -Wall -DOSSL_DEBUG for compilation and some more targets when GCC is used
# To turn it on, use: --with-debug or --enable-debug
#
if with_config("debug") or enable_config("debug")
$defs.push("-DOSSL_DEBUG") unless $defs.include? "-DOSSL_DEBUG"
+
+ if CONFIG['GCC'] == 'yes'
+ $CPPFLAGS += " -Wall" unless $CPPFLAGS.split.include? "-Wall"
+ end
end
-Logging::message "=== Checking for system dependent stuff... ===\n"
+message "=== Checking for system dependent stuff... ===\n"
have_library("nsl", "t_open")
have_library("socket", "socket")
have_header("assert.h")
-Logging::message "=== Checking for required stuff... ===\n"
+message "=== Checking for required stuff... ===\n"
if $mingw
have_library("wsock32")
have_library("gdi32")
@@ -49,8 +51,8 @@ unless result
result &&= %w[crypto libeay32].any? {|lib| have_library(lib, "OpenSSL_add_all_digests")}
result &&= %w[ssl ssleay32].any? {|lib| have_library(lib, "SSL_library_init")}
unless result
- Logging::message "=== Checking for required stuff failed. ===\n"
- Logging::message "Makefile wasn't created. Fix the errors above.\n"
+ message "=== Checking for required stuff failed. ===\n"
+ message "Makefile wasn't created. Fix the errors above.\n"
exit 1
end
end
@@ -58,11 +60,10 @@ end
unless have_header("openssl/conf_api.h")
raise "OpenSSL 0.9.6 or later required."
end
-unless OpenSSL.check_func("SSL_library_init()", "openssl/ssl.h")
- raise "Ignore OpenSSL broken by Apple.\nPlease use another openssl. (e.g. using `configure --with-openssl-dir=/path/to/openssl')"
-end
-Logging::message "=== Checking for OpenSSL features... ===\n"
+%w"rb_str_set_len rb_block_call".each {|func| have_func(func, "ruby.h")}
+
+message "=== Checking for OpenSSL features... ===\n"
have_func("ERR_peek_last_error")
have_func("ASN1_put_eoc")
have_func("BN_mod_add")
@@ -103,13 +104,6 @@ have_func("OPENSSL_cleanse")
have_func("SSLv2_method")
have_func("SSLv2_server_method")
have_func("SSLv2_client_method")
-have_func("TLSv1_1_method")
-have_func("TLSv1_1_server_method")
-have_func("TLSv1_1_client_method")
-have_func("TLSv1_2_method")
-have_func("TLSv1_2_server_method")
-have_func("TLSv1_2_client_method")
-have_macro("OPENSSL_NPN_NEGOTIATED", ['openssl/ssl.h']) && $defs.push("-DHAVE_OPENSSL_NPN_NEGOTIATED")
unless have_func("SSL_set_tlsext_host_name", ['openssl/ssl.h'])
have_macro("SSL_set_tlsext_host_name", ['openssl/ssl.h']) && $defs.push("-DHAVE_SSL_SET_TLSEXT_HOST_NAME")
end
@@ -120,7 +114,6 @@ if have_header("openssl/engine.h")
have_func("ENGINE_get_digest")
have_func("ENGINE_get_cipher")
have_func("ENGINE_cleanup")
- have_func("ENGINE_load_dynamic")
have_func("ENGINE_load_4758cca")
have_func("ENGINE_load_aep")
have_func("ENGINE_load_atalla")
@@ -129,16 +122,7 @@ if have_header("openssl/engine.h")
have_func("ENGINE_load_nuron")
have_func("ENGINE_load_sureware")
have_func("ENGINE_load_ubsec")
- have_func("ENGINE_load_padlock")
- have_func("ENGINE_load_capi")
- have_func("ENGINE_load_gmp")
- have_func("ENGINE_load_gost")
- have_func("ENGINE_load_cryptodev")
- have_func("ENGINE_load_aesni")
end
-have_func("DH_generate_parameters_ex")
-have_func("DSA_generate_parameters_ex")
-have_func("RSA_generate_key_ex")
if checking_for('OpenSSL version is 0.9.7 or later') {
try_static_assert('OPENSSL_VERSION_NUMBER >= 0x00907000L', 'openssl/opensslv.h')
}
@@ -147,11 +131,9 @@ end
have_struct_member("EVP_CIPHER_CTX", "flags", "openssl/evp.h")
have_struct_member("EVP_CIPHER_CTX", "engine", "openssl/evp.h")
have_struct_member("X509_ATTRIBUTE", "single", "openssl/x509.h")
-have_macro("OPENSSL_FIPS", ['openssl/opensslconf.h']) && $defs.push("-DHAVE_OPENSSL_FIPS")
-have_macro("EVP_CTRL_GCM_GET_TAG", ['openssl/evp.h']) && $defs.push("-DHAVE_AUTHENTICATED_ENCRYPTION")
-Logging::message "=== Checking done. ===\n"
+message "=== Checking done. ===\n"
create_header
create_makefile("openssl")
-Logging::message "Done.\n"
+message "Done.\n"
diff --git a/ext/openssl/lib/openssl.rb b/ext/openssl/lib/openssl.rb
index 19a4382d0d..3cff8d9c10 100644
--- a/ext/openssl/lib/openssl.rb
+++ b/ext/openssl/lib/openssl.rb
@@ -20,5 +20,6 @@ require 'openssl/bn'
require 'openssl/cipher'
require 'openssl/config'
require 'openssl/digest'
-require 'openssl/x509'
-require 'openssl/ssl'
+require 'openssl/ssl-internal'
+require 'openssl/x509-internal'
+
diff --git a/ext/openssl/lib/openssl/bn.rb b/ext/openssl/lib/openssl/bn.rb
index 180de18db1..b2fca163f1 100644
--- a/ext/openssl/lib/openssl/bn.rb
+++ b/ext/openssl/lib/openssl/bn.rb
@@ -3,16 +3,16 @@
# $RCSfile$
#
# = Ruby-space definitions that completes C-space funcs for BN
-#
+#
# = Info
# 'OpenSSL for Ruby 2' project
# Copyright (C) 2002 Michal Rokos <m.rokos@sh.cvut.cz>
# All rights reserved.
-#
+#
# = Licence
# This program is licenced under the same licence as Ruby.
# (See the file 'LICENCE'.)
-#
+#
# = Version
# $Id$
#
diff --git a/ext/openssl/lib/openssl/buffering.rb b/ext/openssl/lib/openssl/buffering.rb
index e191a00877..51bc968e3a 100644
--- a/ext/openssl/lib/openssl/buffering.rb
+++ b/ext/openssl/lib/openssl/buffering.rb
@@ -1,19 +1,18 @@
-#
-#--
-#= $RCSfile$ -- Buffering mix-in module.
-#
-#= Info
-# 'OpenSSL for Ruby 2' project
-# Copyright (C) 2001 GOTOU YUUZOU <gotoyuzo@notwork.org>
-# All rights reserved.
-#
-#= Licence
-# This program is licenced under the same licence as Ruby.
-# (See the file 'LICENCE'.)
-#
-#= Version
-# $Id$
-#++
+=begin
+= $RCSfile$ -- Buffering mix-in module.
+
+= Info
+ 'OpenSSL for Ruby 2' project
+ Copyright (C) 2001 GOTOU YUUZOU <gotoyuzo@notwork.org>
+ All rights reserved.
+
+= Licence
+ This program is licenced under the same licence as Ruby.
+ (See the file 'LICENCE'.)
+
+= Version
+ $Id$
+=end
##
# OpenSSL IO buffering mix-in module.
diff --git a/ext/openssl/lib/openssl/cipher.rb b/ext/openssl/lib/openssl/cipher.rb
index b3340ff52a..eb146fb552 100644
--- a/ext/openssl/lib/openssl/cipher.rb
+++ b/ext/openssl/lib/openssl/cipher.rb
@@ -3,16 +3,16 @@
# $RCSfile$
#
# = Ruby-space predefined Cipher subclasses
-#
+#
# = Info
# 'OpenSSL for Ruby 2' project
# Copyright (C) 2002 Michal Rokos <m.rokos@sh.cvut.cz>
# All rights reserved.
-#
+#
# = Licence
# This program is licenced under the same licence as Ruby.
# (See the file 'LICENCE'.)
-#
+#
# = Version
# $Id$
#
diff --git a/ext/openssl/lib/openssl/digest.rb b/ext/openssl/lib/openssl/digest.rb
index f2a47bfdf9..b47007165c 100644
--- a/ext/openssl/lib/openssl/digest.rb
+++ b/ext/openssl/lib/openssl/digest.rb
@@ -3,16 +3,16 @@
# $RCSfile$
#
# = Ruby-space predefined Digest subclasses
-#
+#
# = Info
# 'OpenSSL for Ruby 2' project
# Copyright (C) 2002 Michal Rokos <m.rokos@sh.cvut.cz>
# All rights reserved.
-#
+#
# = Licence
# This program is licenced under the same licence as Ruby.
# (See the file 'LICENCE'.)
-#
+#
# = Version
# $Id$
#
@@ -31,7 +31,7 @@ module OpenSSL
#
# === Examples
#
- # OpenSSL::Digest.digest("SHA256", "abc")
+ # OpenSSL::Digest.digest("SHA256, "abc")
#
# which is equivalent to:
#
@@ -68,22 +68,5 @@ module OpenSSL
end
end # Digest
-
- # Returns a Digest subclass by +name+.
- #
- # require 'openssl'
- #
- # OpenSSL::Digest("MD5")
- # # => OpenSSL::Digest::MD5
- #
- # Digest("Foo")
- # # => NameError: wrong constant name Foo
-
- def Digest(name)
- OpenSSL::Digest.const_get(name)
- end
-
- module_function :Digest
-
end # OpenSSL
diff --git a/ext/openssl/lib/openssl/ssl-internal.rb b/ext/openssl/lib/openssl/ssl-internal.rb
new file mode 100644
index 0000000000..c70b5b8f6b
--- /dev/null
+++ b/ext/openssl/lib/openssl/ssl-internal.rb
@@ -0,0 +1,177 @@
+=begin
+= $RCSfile$ -- Ruby-space definitions that completes C-space funcs for SSL
+
+= Info
+ 'OpenSSL for Ruby 2' project
+ Copyright (C) 2001 GOTOU YUUZOU <gotoyuzo@notwork.org>
+ All rights reserved.
+
+= Licence
+ This program is licenced under the same licence as Ruby.
+ (See the file 'LICENCE'.)
+
+= Version
+ $Id$
+=end
+
+require "openssl/buffering"
+require "fcntl"
+
+module OpenSSL
+ module SSL
+ class SSLContext
+ DEFAULT_PARAMS = {
+ :ssl_version => "SSLv23",
+ :verify_mode => OpenSSL::SSL::VERIFY_PEER,
+ :ciphers => "ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW",
+ :options => OpenSSL::SSL::OP_ALL,
+ }
+
+ DEFAULT_CERT_STORE = OpenSSL::X509::Store.new
+ DEFAULT_CERT_STORE.set_default_paths
+ if defined?(OpenSSL::X509::V_FLAG_CRL_CHECK_ALL)
+ DEFAULT_CERT_STORE.flags = OpenSSL::X509::V_FLAG_CRL_CHECK_ALL
+ end
+
+ def set_params(params={})
+ params = DEFAULT_PARAMS.merge(params)
+ params.each{|name, value| self.__send__("#{name}=", value) }
+ if self.verify_mode != OpenSSL::SSL::VERIFY_NONE
+ unless self.ca_file or self.ca_path or self.cert_store
+ self.cert_store = DEFAULT_CERT_STORE
+ end
+ end
+ return params
+ end
+ end
+
+ module SocketForwarder
+ def addr
+ to_io.addr
+ end
+
+ def peeraddr
+ to_io.peeraddr
+ end
+
+ def setsockopt(level, optname, optval)
+ to_io.setsockopt(level, optname, optval)
+ end
+
+ def getsockopt(level, optname)
+ to_io.getsockopt(level, optname)
+ end
+
+ def fcntl(*args)
+ to_io.fcntl(*args)
+ end
+
+ def closed?
+ to_io.closed?
+ end
+
+ def do_not_reverse_lookup=(flag)
+ to_io.do_not_reverse_lookup = flag
+ end
+ end
+
+ module Nonblock
+ def initialize(*args)
+ flag = File::NONBLOCK
+ flag |= @io.fcntl(Fcntl::F_GETFL) if defined?(Fcntl::F_GETFL)
+ @io.fcntl(Fcntl::F_SETFL, flag)
+ super
+ end
+ end
+
+ def verify_certificate_identity(cert, hostname)
+ should_verify_common_name = true
+ cert.extensions.each{|ext|
+ next if ext.oid != "subjectAltName"
+ ext.value.split(/,\s+/).each{|general_name|
+ if /\ADNS:(.*)/ =~ general_name
+ should_verify_common_name = false
+ reg = Regexp.escape($1).gsub(/\\\*/, "[^.]+")
+ return true if /\A#{reg}\z/i =~ hostname
+ elsif /\AIP Address:(.*)/ =~ general_name
+ should_verify_common_name = false
+ return true if $1 == hostname
+ end
+ }
+ }
+ if should_verify_common_name
+ cert.subject.to_a.each{|oid, value|
+ if oid == "CN"
+ reg = Regexp.escape(value).gsub(/\\\*/, "[^.]+")
+ return true if /\A#{reg}\z/i =~ hostname
+ end
+ }
+ end
+ return false
+ end
+ module_function :verify_certificate_identity
+
+ class SSLSocket
+ include Buffering
+ include SocketForwarder
+ include Nonblock
+
+ def post_connection_check(hostname)
+ unless OpenSSL::SSL.verify_certificate_identity(peer_cert, hostname)
+ raise SSLError, "hostname does not match the server certificate"
+ end
+ return true
+ end
+
+ def session
+ SSL::Session.new(self)
+ rescue SSL::Session::SessionError
+ nil
+ end
+ end
+
+ class SSLServer
+ include SocketForwarder
+ attr_accessor :start_immediately
+
+ def initialize(svr, ctx)
+ @svr = svr
+ @ctx = ctx
+ unless ctx.session_id_context
+ session_id = OpenSSL::Digest::MD5.hexdigest($0)
+ @ctx.session_id_context = session_id
+ end
+ @start_immediately = true
+ end
+
+ def to_io
+ @svr
+ end
+
+ def listen(backlog=5)
+ @svr.listen(backlog)
+ end
+
+ def shutdown(how=Socket::SHUT_RDWR)
+ @svr.shutdown(how)
+ end
+
+ def accept
+ sock = @svr.accept
+ begin
+ ssl = OpenSSL::SSL::SSLSocket.new(sock, @ctx)
+ ssl.sync_close = true
+ ssl.accept if @start_immediately
+ ssl
+ rescue SSLError => ex
+ sock.close
+ raise ex
+ end
+ end
+
+ def close
+ @svr.close
+ end
+ end
+ end
+end
diff --git a/ext/openssl/lib/openssl/ssl.rb b/ext/openssl/lib/openssl/ssl.rb
index 2fc875c5d4..15f42d6091 100644
--- a/ext/openssl/lib/openssl/ssl.rb
+++ b/ext/openssl/lib/openssl/ssl.rb
@@ -1,293 +1,2 @@
-=begin
-= $RCSfile$ -- Ruby-space definitions that completes C-space funcs for SSL
-
-= Info
- 'OpenSSL for Ruby 2' project
- Copyright (C) 2001 GOTOU YUUZOU <gotoyuzo@notwork.org>
- All rights reserved.
-
-= Licence
- This program is licenced under the same licence as Ruby.
- (See the file 'LICENCE'.)
-
-= Version
- $Id$
-=end
-
-require "openssl/buffering"
-require "fcntl"
-
-module OpenSSL
- module SSL
- class SSLContext
- DEFAULT_PARAMS = {
- :ssl_version => "SSLv23",
- :verify_mode => OpenSSL::SSL::VERIFY_PEER,
- :ciphers => %w{
- ECDHE-ECDSA-AES128-GCM-SHA256
- ECDHE-RSA-AES128-GCM-SHA256
- ECDHE-ECDSA-AES256-GCM-SHA384
- ECDHE-RSA-AES256-GCM-SHA384
- DHE-RSA-AES128-GCM-SHA256
- DHE-DSS-AES128-GCM-SHA256
- DHE-RSA-AES256-GCM-SHA384
- DHE-DSS-AES256-GCM-SHA384
- ECDHE-ECDSA-AES128-SHA256
- ECDHE-RSA-AES128-SHA256
- ECDHE-ECDSA-AES128-SHA
- ECDHE-RSA-AES128-SHA
- ECDHE-ECDSA-AES256-SHA384
- ECDHE-RSA-AES256-SHA384
- ECDHE-ECDSA-AES256-SHA
- ECDHE-RSA-AES256-SHA
- DHE-RSA-AES128-SHA256
- DHE-RSA-AES256-SHA256
- DHE-RSA-AES128-SHA
- DHE-RSA-AES256-SHA
- DHE-DSS-AES128-SHA256
- DHE-DSS-AES256-SHA256
- DHE-DSS-AES128-SHA
- DHE-DSS-AES256-SHA
- AES128-GCM-SHA256
- AES256-GCM-SHA384
- AES128-SHA256
- AES256-SHA256
- AES128-SHA
- AES256-SHA
- ECDHE-ECDSA-RC4-SHA
- ECDHE-RSA-RC4-SHA
- RC4-SHA
- }.join(":"),
- :options => -> {
- opts = OpenSSL::SSL::OP_ALL
- opts &= ~OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS if defined?(OpenSSL::SSL::OP_DONT_INSERT_EMPTY_FRAGMENTS)
- opts |= OpenSSL::SSL::OP_NO_COMPRESSION if defined?(OpenSSL::SSL::OP_NO_COMPRESSION)
- opts |= OpenSSL::SSL::OP_NO_SSLv2 if defined?(OpenSSL::SSL::OP_NO_SSLv2)
- opts |= OpenSSL::SSL::OP_NO_SSLv3 if defined?(OpenSSL::SSL::OP_NO_SSLv3)
- opts
- }.call
- }
-
- DEFAULT_CERT_STORE = OpenSSL::X509::Store.new
- DEFAULT_CERT_STORE.set_default_paths
- if defined?(OpenSSL::X509::V_FLAG_CRL_CHECK_ALL)
- DEFAULT_CERT_STORE.flags = OpenSSL::X509::V_FLAG_CRL_CHECK_ALL
- end
-
- ##
- # Sets the parameters for this SSL context to the values in +params+.
- # The keys in +params+ must be assignment methods on SSLContext.
- #
- # If the verify_mode is not VERIFY_NONE and ca_file, ca_path and
- # cert_store are not set then the system default certificate store is
- # used.
-
- def set_params(params={})
- params = DEFAULT_PARAMS.merge(params)
- params.each{|name, value| self.__send__("#{name}=", value) }
- if self.verify_mode != OpenSSL::SSL::VERIFY_NONE
- unless self.ca_file or self.ca_path or self.cert_store
- self.cert_store = DEFAULT_CERT_STORE
- end
- end
- return params
- end
- end
-
- module SocketForwarder
- def addr
- to_io.addr
- end
-
- def peeraddr
- to_io.peeraddr
- end
-
- def setsockopt(level, optname, optval)
- to_io.setsockopt(level, optname, optval)
- end
-
- def getsockopt(level, optname)
- to_io.getsockopt(level, optname)
- end
-
- def fcntl(*args)
- to_io.fcntl(*args)
- end
-
- def closed?
- to_io.closed?
- end
-
- def do_not_reverse_lookup=(flag)
- to_io.do_not_reverse_lookup = flag
- end
- end
-
- module Nonblock
- def initialize(*args)
- flag = File::NONBLOCK
- flag |= @io.fcntl(Fcntl::F_GETFL) if defined?(Fcntl::F_GETFL)
- @io.fcntl(Fcntl::F_SETFL, flag)
- super
- end
- end
-
- def verify_certificate_identity(cert, hostname)
- should_verify_common_name = true
- cert.extensions.each{|ext|
- next if ext.oid != "subjectAltName"
- ostr = OpenSSL::ASN1.decode(ext.to_der).value.last
- sequence = OpenSSL::ASN1.decode(ostr.value)
- sequence.value.each{|san|
- case san.tag
- when 2 # dNSName in GeneralName (RFC5280)
- should_verify_common_name = false
- return true if verify_hostname(hostname, san.value)
- when 7 # iPAddress in GeneralName (RFC5280)
- should_verify_common_name = false
- # follows GENERAL_NAME_print() in x509v3/v3_alt.c
- if san.value.size == 4
- return true if san.value.unpack('C*').join('.') == hostname
- elsif san.value.size == 16
- return true if san.value.unpack('n*').map { |e| sprintf("%X", e) }.join(':') == hostname
- end
- end
- }
- }
- if should_verify_common_name
- cert.subject.to_a.each{|oid, value|
- if oid == "CN"
- return true if verify_hostname(hostname, value)
- end
- }
- end
- return false
- end
- module_function :verify_certificate_identity
-
- def verify_hostname(hostname, san) # :nodoc:
- # RFC 5280, IA5String is limited to the set of ASCII characters
- return false unless san.ascii_only?
- return false unless hostname.ascii_only?
-
- # See RFC 6125, section 6.4.1
- # Matching is case-insensitive.
- san_parts = san.downcase.split(".")
-
- # TODO: this behavior should probably be more strict
- return san == hostname if san_parts.size < 2
-
- # Matching is case-insensitive.
- host_parts = hostname.downcase.split(".")
-
- # RFC 6125, section 6.4.3, subitem 2.
- # If the wildcard character is the only character of the left-most
- # label in the presented identifier, the client SHOULD NOT compare
- # against anything but the left-most label of the reference
- # identifier (e.g., *.example.com would match foo.example.com but
- # not bar.foo.example.com or example.com).
- return false unless san_parts.size == host_parts.size
-
- # RFC 6125, section 6.4.3, subitem 1.
- # The client SHOULD NOT attempt to match a presented identifier in
- # which the wildcard character comprises a label other than the
- # left-most label (e.g., do not match bar.*.example.net).
- return false unless verify_wildcard(host_parts.shift, san_parts.shift)
-
- san_parts.join(".") == host_parts.join(".")
- end
- module_function :verify_hostname
-
- def verify_wildcard(domain_component, san_component) # :nodoc:
- parts = san_component.split("*", -1)
-
- return false if parts.size > 2
- return san_component == domain_component if parts.size == 1
-
- # RFC 6125, section 6.4.3, subitem 3.
- # The client SHOULD NOT attempt to match a presented identifier
- # where the wildcard character is embedded within an A-label or
- # U-label of an internationalized domain name.
- return false if domain_component.start_with?("xn--") && san_component != "*"
-
- parts[0].length + parts[1].length < domain_component.length &&
- domain_component.start_with?(parts[0]) &&
- domain_component.end_with?(parts[1])
- end
- module_function :verify_wildcard
-
- class SSLSocket
- include Buffering
- include SocketForwarder
- include Nonblock
-
- ##
- # Perform hostname verification after an SSL connection is established
- #
- # This method MUST be called after calling #connect to ensure that the
- # hostname of a remote peer has been verified.
- def post_connection_check(hostname)
- unless OpenSSL::SSL.verify_certificate_identity(peer_cert, hostname)
- raise SSLError, "hostname \"#{hostname}\" does not match the server certificate"
- end
- return true
- end
-
- def session
- SSL::Session.new(self)
- rescue SSL::Session::SessionError
- nil
- end
- end
-
- class SSLServer
- include SocketForwarder
- attr_accessor :start_immediately
-
- def initialize(svr, ctx)
- @svr = svr
- @ctx = ctx
- unless ctx.session_id_context
- # see #6137 - session id may not exceed 32 bytes
- prng = ::Random.new($0.hash)
- session_id = prng.bytes(16).unpack('H*')[0]
- @ctx.session_id_context = session_id
- end
- @start_immediately = true
- end
-
- def to_io
- @svr
- end
-
- def listen(backlog=5)
- @svr.listen(backlog)
- end
-
- def shutdown(how=Socket::SHUT_RDWR)
- @svr.shutdown(how)
- end
-
- def accept
- # Socket#accept returns [socket, addrinfo].
- # TCPServer#accept returns a socket.
- # The following comma strips addrinfo.
- sock, = @svr.accept
- begin
- ssl = OpenSSL::SSL::SSLSocket.new(sock, @ctx)
- ssl.sync_close = true
- ssl.accept if @start_immediately
- ssl
- rescue SSLError => ex
- sock.close
- raise ex
- end
- end
-
- def close
- @svr.close
- end
- end
- end
-end
+warn 'deprecated openssl/ssl use: require "openssl" instead of "openssl/ssl"'
+require 'openssl'
diff --git a/ext/openssl/lib/openssl/x509-internal.rb b/ext/openssl/lib/openssl/x509-internal.rb
new file mode 100644
index 0000000000..47e3a6f876
--- /dev/null
+++ b/ext/openssl/lib/openssl/x509-internal.rb
@@ -0,0 +1,158 @@
+=begin
+= $RCSfile$ -- Ruby-space definitions that completes C-space funcs for X509 and subclasses
+
+= Info
+ 'OpenSSL for Ruby 2' project
+ Copyright (C) 2002 Michal Rokos <m.rokos@sh.cvut.cz>
+ All rights reserved.
+
+= Licence
+ This program is licenced under the same licence as Ruby.
+ (See the file 'LICENCE'.)
+
+= Version
+ $Id$
+=end
+
+module OpenSSL
+ module X509
+ class ExtensionFactory
+ def create_extension(*arg)
+ if arg.size > 1
+ create_ext(*arg)
+ else
+ send("create_ext_from_"+arg[0].class.name.downcase, arg[0])
+ end
+ end
+
+ def create_ext_from_array(ary)
+ raise ExtensionError, "unexpected array form" if ary.size > 3
+ create_ext(ary[0], ary[1], ary[2])
+ end
+
+ def create_ext_from_string(str) # "oid = critical, value"
+ oid, value = str.split(/=/, 2)
+ oid.strip!
+ value.strip!
+ create_ext(oid, value)
+ end
+
+ def create_ext_from_hash(hash)
+ create_ext(hash["oid"], hash["value"], hash["critical"])
+ end
+ end
+
+ class Extension
+ def to_s # "oid = critical, value"
+ str = self.oid
+ str << " = "
+ str << "critical, " if self.critical?
+ str << self.value.gsub(/\n/, ", ")
+ end
+
+ def to_h # {"oid"=>sn|ln, "value"=>value, "critical"=>true|false}
+ {"oid"=>self.oid,"value"=>self.value,"critical"=>self.critical?}
+ end
+
+ def to_a
+ [ self.oid, self.value, self.critical? ]
+ end
+ end
+
+ class Name
+ module RFC2253DN
+ Special = ',=+<>#;'
+ HexChar = /[0-9a-fA-F]/
+ HexPair = /#{HexChar}#{HexChar}/
+ HexString = /#{HexPair}+/
+ Pair = /\\(?:[#{Special}]|\\|"|#{HexPair})/
+ StringChar = /[^#{Special}\\"]/
+ QuoteChar = /[^\\"]/
+ AttributeType = /[a-zA-Z][0-9a-zA-Z]*|[0-9]+(?:\.[0-9]+)*/
+ AttributeValue = /
+ (?!["#])((?:#{StringChar}|#{Pair})*)|
+ \#(#{HexString})|
+ "((?:#{QuoteChar}|#{Pair})*)"
+ /x
+ TypeAndValue = /\A(#{AttributeType})=#{AttributeValue}/
+
+ module_function
+
+ def expand_pair(str)
+ return nil unless str
+ return str.gsub(Pair){
+ pair = $&
+ case pair.size
+ when 2 then pair[1,1]
+ when 3 then Integer("0x#{pair[1,2]}").chr
+ else raise OpenSSL::X509::NameError, "invalid pair: #{str}"
+ end
+ }
+ end
+
+ def expand_hexstring(str)
+ return nil unless str
+ der = str.gsub(HexPair){$&.to_i(16).chr }
+ a1 = OpenSSL::ASN1.decode(der)
+ return a1.value, a1.tag
+ end
+
+ def expand_value(str1, str2, str3)
+ value = expand_pair(str1)
+ value, tag = expand_hexstring(str2) unless value
+ value = expand_pair(str3) unless value
+ return value, tag
+ end
+
+ def scan(dn)
+ str = dn
+ ary = []
+ while true
+ if md = TypeAndValue.match(str)
+ remain = md.post_match
+ type = md[1]
+ value, tag = expand_value(md[2], md[3], md[4]) rescue nil
+ if value
+ type_and_value = [type, value]
+ type_and_value.push(tag) if tag
+ ary.unshift(type_and_value)
+ if remain.length > 2 && remain[0] == ?,
+ str = remain[1..-1]
+ next
+ elsif remain.length > 2 && remain[0] == ?+
+ raise OpenSSL::X509::NameError,
+ "multi-valued RDN is not supported: #{dn}"
+ elsif remain.empty?
+ break
+ end
+ end
+ end
+ msg_dn = dn[0, dn.length - str.length] + " =>" + str
+ raise OpenSSL::X509::NameError, "malformed RDN: #{msg_dn}"
+ end
+ return ary
+ end
+ end
+
+ class << self
+ def parse_rfc2253(str, template=OBJECT_TYPE_TEMPLATE)
+ ary = OpenSSL::X509::Name::RFC2253DN.scan(str)
+ self.new(ary, template)
+ end
+
+ def parse_openssl(str, template=OBJECT_TYPE_TEMPLATE)
+ ary = str.scan(/\s*([^\/,]+)\s*/).collect{|i| i[0].split("=", 2) }
+ self.new(ary, template)
+ end
+
+ alias parse parse_openssl
+ end
+ end
+
+ class StoreContext
+ def cleanup
+ warn "(#{caller.first}) OpenSSL::X509::StoreContext#cleanup is deprecated with no replacement" if $VERBOSE
+ end
+ end
+ end
+end
diff --git a/ext/openssl/lib/openssl/x509.rb b/ext/openssl/lib/openssl/x509.rb
index 31a4381db4..f1777cdf06 100644
--- a/ext/openssl/lib/openssl/x509.rb
+++ b/ext/openssl/lib/openssl/x509.rb
@@ -1,162 +1,2 @@
-#--
-#
-# $RCSfile$
-#
-# = Ruby-space definitions that completes C-space funcs for X509 and subclasses
-#
-# = Info
-# 'OpenSSL for Ruby 2' project
-# Copyright (C) 2002 Michal Rokos <m.rokos@sh.cvut.cz>
-# All rights reserved.
-#
-# = Licence
-# This program is licenced under the same licence as Ruby.
-# (See the file 'LICENCE'.)
-#
-# = Version
-# $Id$
-#
-#++
-
-module OpenSSL
- module X509
- class ExtensionFactory
- def create_extension(*arg)
- if arg.size > 1
- create_ext(*arg)
- else
- send("create_ext_from_"+arg[0].class.name.downcase, arg[0])
- end
- end
-
- def create_ext_from_array(ary)
- raise ExtensionError, "unexpected array form" if ary.size > 3
- create_ext(ary[0], ary[1], ary[2])
- end
-
- def create_ext_from_string(str) # "oid = critical, value"
- oid, value = str.split(/=/, 2)
- oid.strip!
- value.strip!
- create_ext(oid, value)
- end
-
- def create_ext_from_hash(hash)
- create_ext(hash["oid"], hash["value"], hash["critical"])
- end
- end
-
- class Extension
- def to_s # "oid = critical, value"
- str = self.oid
- str << " = "
- str << "critical, " if self.critical?
- str << self.value.gsub(/\n/, ", ")
- end
-
- def to_h # {"oid"=>sn|ln, "value"=>value, "critical"=>true|false}
- {"oid"=>self.oid,"value"=>self.value,"critical"=>self.critical?}
- end
-
- def to_a
- [ self.oid, self.value, self.critical? ]
- end
- end
-
- class Name
- module RFC2253DN
- Special = ',=+<>#;'
- HexChar = /[0-9a-fA-F]/
- HexPair = /#{HexChar}#{HexChar}/
- HexString = /#{HexPair}+/
- Pair = /\\(?:[#{Special}]|\\|"|#{HexPair})/
- StringChar = /[^#{Special}\\"]/
- QuoteChar = /[^\\"]/
- AttributeType = /[a-zA-Z][0-9a-zA-Z]*|[0-9]+(?:\.[0-9]+)*/
- AttributeValue = /
- (?!["#])((?:#{StringChar}|#{Pair})*)|
- \#(#{HexString})|
- "((?:#{QuoteChar}|#{Pair})*)"
- /x
- TypeAndValue = /\A(#{AttributeType})=#{AttributeValue}/
-
- module_function
-
- def expand_pair(str)
- return nil unless str
- return str.gsub(Pair){
- pair = $&
- case pair.size
- when 2 then pair[1,1]
- when 3 then Integer("0x#{pair[1,2]}").chr
- else raise OpenSSL::X509::NameError, "invalid pair: #{str}"
- end
- }
- end
-
- def expand_hexstring(str)
- return nil unless str
- der = str.gsub(HexPair){$&.to_i(16).chr }
- a1 = OpenSSL::ASN1.decode(der)
- return a1.value, a1.tag
- end
-
- def expand_value(str1, str2, str3)
- value = expand_pair(str1)
- value, tag = expand_hexstring(str2) unless value
- value = expand_pair(str3) unless value
- return value, tag
- end
-
- def scan(dn)
- str = dn
- ary = []
- while true
- if md = TypeAndValue.match(str)
- remain = md.post_match
- type = md[1]
- value, tag = expand_value(md[2], md[3], md[4]) rescue nil
- if value
- type_and_value = [type, value]
- type_and_value.push(tag) if tag
- ary.unshift(type_and_value)
- if remain.length > 2 && remain[0] == ?,
- str = remain[1..-1]
- next
- elsif remain.length > 2 && remain[0] == ?+
- raise OpenSSL::X509::NameError,
- "multi-valued RDN is not supported: #{dn}"
- elsif remain.empty?
- break
- end
- end
- end
- msg_dn = dn[0, dn.length - str.length] + " =>" + str
- raise OpenSSL::X509::NameError, "malformed RDN: #{msg_dn}"
- end
- return ary
- end
- end
-
- class << self
- def parse_rfc2253(str, template=OBJECT_TYPE_TEMPLATE)
- ary = OpenSSL::X509::Name::RFC2253DN.scan(str)
- self.new(ary, template)
- end
-
- def parse_openssl(str, template=OBJECT_TYPE_TEMPLATE)
- ary = str.scan(/\s*([^\/,]+)\s*/).collect{|i| i[0].split("=", 2) }
- self.new(ary, template)
- end
-
- alias parse parse_openssl
- end
- end
-
- class StoreContext
- def cleanup
- warn "(#{caller.first}) OpenSSL::X509::StoreContext#cleanup is deprecated with no replacement" if $VERBOSE
- end
- end
- end
-end
+warn 'deprecated openssl/x509 use: require "openssl" instead of "openssl/x509"'
+require 'openssl'
diff --git a/ext/openssl/ossl.c b/ext/openssl/ossl.c
index d3b511dd10..f3410b64e8 100644
--- a/ext/openssl/ossl.c
+++ b/ext/openssl/ossl.c
@@ -175,11 +175,7 @@ ossl_pem_passwd_cb(char *buf, int max_len, int flag, void *pwd)
*/
rflag = flag ? Qtrue : Qfalse;
pass = rb_protect(ossl_pem_passwd_cb0, rflag, &status);
- if (status) {
- /* ignore an exception raised. */
- rb_set_errinfo(Qnil);
- return -1;
- }
+ if (status) return -1; /* exception was raised. */
len = RSTRING_LENINT(pass);
if (len < 4) { /* 4 is OpenSSL hardcoded limit */
rb_warning("password must be longer than 4 bytes");
@@ -220,23 +216,18 @@ ossl_verify_cb(int ok, X509_STORE_CTX *ctx)
if ((void*)proc == 0)
return ok;
if (!NIL_P(proc)) {
- ret = Qfalse;
rctx = rb_protect((VALUE(*)(VALUE))ossl_x509stctx_new,
(VALUE)ctx, &state);
- if (state) {
- rb_set_errinfo(Qnil);
- rb_warn("StoreContext initialization failure");
- }
- else {
+ ret = Qfalse;
+ if (!state) {
args.proc = proc;
args.preverify_ok = ok ? Qtrue : Qfalse;
args.store_ctx = rctx;
ret = rb_protect((VALUE(*)(VALUE))ossl_call_verify_cb_proc, (VALUE)&args, &state);
+ ossl_x509stctx_clear_ptr(rctx);
if (state) {
- rb_set_errinfo(Qnil);
rb_warn("exception in verify_callback is ignored");
}
- ossl_x509stctx_clear_ptr(rctx);
}
if (ret == Qtrue) {
X509_STORE_CTX_set_error(ctx, X509_V_OK);
@@ -293,9 +284,10 @@ ossl_to_der_if_possible(VALUE obj)
static VALUE
ossl_make_error(VALUE exc, const char *fmt, va_list args)
{
- VALUE str = Qnil;
+ char buf[BUFSIZ];
const char *msg;
long e;
+ int len = 0;
#ifdef HAVE_ERR_PEEK_LAST_ERROR
e = ERR_peek_last_error();
@@ -303,20 +295,14 @@ ossl_make_error(VALUE exc, const char *fmt, va_list args)
e = ERR_peek_error();
#endif
if (fmt) {
- str = rb_vsprintf(fmt, args);
+ len = vsnprintf(buf, BUFSIZ, fmt, args);
}
- if (e) {
+ if (len < BUFSIZ && e) {
if (dOSSL == Qtrue) /* FULL INFO */
msg = ERR_error_string(e, NULL);
else
msg = ERR_reason_error_string(e);
- if (NIL_P(str)) {
- if (msg) str = rb_str_new_cstr(msg);
- }
- else {
- if (RSTRING_LEN(str)) rb_str_cat2(str, ": ");
- rb_str_cat2(str, msg ? msg : "(null)");
- }
+ len += snprintf(buf+len, BUFSIZ-len, "%s%s", (len ? ": " : ""), msg);
}
if (dOSSL == Qtrue){ /* show all errors on the stack */
while ((e = ERR_get_error()) != 0){
@@ -325,8 +311,8 @@ ossl_make_error(VALUE exc, const char *fmt, va_list args)
}
ERR_clear_error();
- if (NIL_P(str)) str = rb_str_new(0, 0);
- return rb_exc_new3(exc, str);
+ if(len > BUFSIZ) len = rb_long2int(strlen(buf));
+ return rb_exc_new(exc, buf, len);
}
void
@@ -430,40 +416,6 @@ ossl_debug_set(VALUE self, VALUE val)
}
/*
- * call-seq:
- * OpenSSL.fips_mode = boolean -> boolean
- *
- * Turns FIPS mode on or off. Turning on FIPS mode will obviously only have an
- * effect for FIPS-capable installations of the OpenSSL library. Trying to do
- * so otherwise will result in an error.
- *
- * === Examples
- *
- * OpenSSL.fips_mode = true # turn FIPS mode on
- * OpenSSL.fips_mode = false # and off again
- */
-static VALUE
-ossl_fips_mode_set(VALUE self, VALUE enabled)
-{
-
-#ifdef HAVE_OPENSSL_FIPS
- if (RTEST(enabled)) {
- int mode = FIPS_mode();
- if(!mode && !FIPS_mode_set(1)) /* turning on twice leads to an error */
- ossl_raise(eOSSLError, "Turning on FIPS mode failed");
- } else {
- if(!FIPS_mode_set(0)) /* turning off twice is OK */
- ossl_raise(eOSSLError, "Turning off FIPS mode failed");
- }
- return enabled;
-#else
- if (RTEST(enabled))
- ossl_raise(eOSSLError, "This version of OpenSSL does not support FIPS mode");
- return enabled;
-#endif
-}
-
-/*
* OpenSSL provides SSL, TLS and general purpose cryptography. It wraps the
* OpenSSL[http://www.openssl.org/] library.
*
@@ -494,7 +446,7 @@ ossl_fips_mode_set(VALUE self, VALUE enabled)
* ahold of the key may use it unless it is encrypted. In order to securely
* export a key you may export it with a pass phrase.
*
- * cipher = OpenSSL::Cipher.new 'AES-128-CBC'
+ * cipher = OpenSSL::Cipher::Cipher.new 'AES-128-CBC'
* pass_phrase = 'my secure pass phrase goes here'
*
* key_secure = key.export cipher, pass_phrase
@@ -528,126 +480,35 @@ ossl_fips_mode_set(VALUE self, VALUE enabled)
*
* == RSA Encryption
*
- * RSA provides encryption and decryption using the public and private keys.
+ * RSA provides ecryption and decryption using the public and private keys.
* You can use a variety of padding methods depending upon the intended use of
* encrypted data.
*
- * === Encryption & Decryption
- *
- * Asymmetric public/private key encryption is slow and victim to attack in
- * cases where it is used without padding or directly to encrypt larger chunks
- * of data. Typical use cases for RSA encryption involve "wrapping" a symmetric
- * key with the public key of the recipient who would "unwrap" that symmetric
- * key again using their private key.
- * The following illustrates a simplified example of such a key transport
- * scheme. It shouldn't be used in practice, though, standardized protocols
- * should always be preferred.
- *
- * wrapped_key = key.public_encrypt key
- *
- * A symmetric key encrypted with the public key can only be decrypted with
- * the corresponding private key of the recipient.
- *
- * original_key = key.private_decrypt wrapped_key
- *
- * By default PKCS#1 padding will be used, but it is also possible to use
- * other forms of padding, see PKey::RSA for further details.
- *
- * === Signatures
- *
- * Using "private_encrypt" to encrypt some data with the private key is
- * equivalent to applying a digital signature to the data. A verifying
- * party may validate the signature by comparing the result of decrypting
- * the signature with "public_decrypt" to the original data. However,
- * OpenSSL::PKey already has methods "sign" and "verify" that handle
- * digital signatures in a standardized way - "private_encrypt" and
- * "public_decrypt" shouldn't be used in practice.
- *
- * To sign a document, a cryptographically secure hash of the document is
- * computed first, which is then signed using the private key.
- *
- * digest = OpenSSL::Digest::SHA256.new
- * signature = key.sign digest, document
- *
- * To validate the signature, again a hash of the document is computed and
- * the signature is decrypted using the public key. The result is then
- * compared to the hash just computed, if they are equal the signature was
- * valid.
- *
- * digest = OpenSSL::Digest::SHA256.new
- * if key.verify digest, signature, document
- * puts 'Valid'
- * else
- * puts 'Invalid'
- * end
- *
- * == PBKDF2 Password-based Encryption
- *
- * If supported by the underlying OpenSSL version used, Password-based
- * Encryption should use the features of PKCS5. If not supported or if
- * required by legacy applications, the older, less secure methods specified
- * in RFC 2898 are also supported (see below).
- *
- * PKCS5 supports PBKDF2 as it was specified in PKCS#5
- * v2.0[http://www.rsa.com/rsalabs/node.asp?id=2127]. It still uses a
- * password, a salt, and additionally a number of iterations that will
- * slow the key derivation process down. The slower this is, the more work
- * it requires being able to brute-force the resulting key.
- *
* === Encryption
*
- * The strategy is to first instantiate a Cipher for encryption, and
- * then to generate a random IV plus a key derived from the password
- * using PBKDF2. PKCS #5 v2.0 recommends at least 8 bytes for the salt,
- * the number of iterations largely depends on the hardware being used.
- *
- * cipher = OpenSSL::Cipher.new 'AES-128-CBC'
- * cipher.encrypt
- * iv = cipher.random_iv
- *
- * pwd = 'some hopefully not to easily guessable password'
- * salt = OpenSSL::Random.random_bytes 16
- * iter = 20000
- * key_len = cipher.key_len
- * digest = OpenSSL::Digest::SHA256.new
+ * Documents encrypted with the public key can only be decrypted with the
+ * private key.
*
- * key = OpenSSL::PKCS5.pbkdf2_hmac(pwd, salt, iter, key_len, digest)
- * cipher.key = key
+ * public_encrypted = key.public_encrypt 'top secret document'
*
- * Now encrypt the data:
+ * Documents encrypted with the private key can only be decrypted with the
+ * public key.
*
- * encrypted = cipher.update document
- * encrypted << cipher.final
+ * private_encrypted = key.private_encrypt 'public release document'
*
* === Decryption
*
- * Use the same steps as before to derive the symmetric AES key, this time
- * setting the Cipher up for decryption.
- *
- * cipher = OpenSSL::Cipher.new 'AES-128-CBC'
- * cipher.decrypt
- * cipher.iv = iv # the one generated with #random_iv
- *
- * pwd = 'some hopefully not to easily guessable password'
- * salt = ... # the one generated above
- * iter = 20000
- * key_len = cipher.key_len
- * digest = OpenSSL::Digest::SHA256.new
- *
- * key = OpenSSL::PKCS5.pbkdf2_hmac(pwd, salt, iter, key_len, digest)
- * cipher.key = key
+ * Use the opposite key type do decrypt the document
*
- * Now decrypt the data:
+ * top_secret = key.public_decrypt public_encrypted
*
- * decrypted = cipher.update encrypted
- * decrypted << cipher.final
+ * public_release = key.private_decrypt private_encrypted
*
* == PKCS #5 Password-based Encryption
*
* PKCS #5 is a password-based encryption standard documented at
* RFC2898[http://www.ietf.org/rfc/rfc2898.txt]. It allows a short password or
- * passphrase to be used to create a secure encryption key. If possible, PBKDF2
- * as described above should be used if the circumstances allow it.
+ * passphrase to be used to create a secure encryption key.
*
* PKCS #5 uses a Cipher, a pass phrase and a salt to generate an encryption
* key.
@@ -659,7 +520,7 @@ ossl_fips_mode_set(VALUE self, VALUE enabled)
*
* First set up the cipher for encryption
*
- * encrypter = OpenSSL::Cipher.new 'AES-128-CBC'
+ * encrypter = OpenSSL::Cipher::Cipher.new 'AES-128-CBC'
* encrypter.encrypt
* encrypter.pkcs5_keyivgen pass_phrase, salt
*
@@ -672,7 +533,7 @@ ossl_fips_mode_set(VALUE self, VALUE enabled)
*
* Use a new Cipher instance set up for decryption
*
- * decrypter = OpenSSL::Cipher.new 'AES-128-CBC'
+ * decrypter = OpenSSL::Cipher::Cipher.new 'AES-128-CBC'
* decrypter.decrypt
* decrypter.pkcs5_keyivgen pass_phrase, salt
*
@@ -706,18 +567,10 @@ ossl_fips_mode_set(VALUE self, VALUE enabled)
*
* extension_factory = OpenSSL::X509::ExtensionFactory.new nil, cert
*
- * cert.add_extension \
- * extension_factory.create_extension('basicConstraints', 'CA:FALSE', true)
- *
- * cert.add_extension \
- * extension_factory.create_extension(
- * 'keyUsage', 'keyEncipherment,dataEncipherment,digitalSignature')
- *
- * cert.add_extension \
- * extension_factory.create_extension('subjectKeyIdentifier', 'hash')
- *
- * The list of supported extensions (and in some cases their possible values)
- * can be derived from the "objects.h" file in the OpenSSL source code.
+ * extension_factory.create_extension 'basicConstraints', 'CA:FALSE'
+ * extension_factory.create_extension 'keyUsage',
+ * 'keyEncipherment,dataEncipherment,digitalSignature'
+ * extension_factory.create_extension 'subjectKeyIdentifier', 'hash'
*
* === Signing a Certificate
*
@@ -785,20 +638,16 @@ ossl_fips_mode_set(VALUE self, VALUE enabled)
* extension_factory.subject_certificate = ca_cert
* extension_factory.issuer_certificate = ca_cert
*
- * ca_cert.add_extension \
- * extension_factory.create_extension('subjectKeyIdentifier', 'hash')
+ * extension_factory.create_extension 'subjectKeyIdentifier', 'hash'
*
* This extension indicates the CA's key may be used as a CA.
*
- * ca_cert.add_extension \
- * extension_factory.create_extension('basicConstraints', 'CA:TRUE', true)
+ * extension_factory.create_extension 'basicConstraints', 'CA:TRUE', true
*
* This extension indicates the CA's key may be used to verify signatures on
* both certificates and certificate revocations.
*
- * ca_cert.add_extension \
- * extension_factory.create_extension(
- * 'keyUsage', 'cRLSign,keyCertSign', true)
+ * extension_factory.create_extension 'keyUsage', 'cRLSign,keyCertSign', true
*
* Root CA certificates are self-signed.
*
@@ -854,15 +703,10 @@ ossl_fips_mode_set(VALUE self, VALUE enabled)
* extension_factory.subject_certificate = csr_cert
* extension_factory.issuer_certificate = ca_cert
*
- * csr_cert.add_extension \
- * extension_factory.create_extension('basicConstraints', 'CA:FALSE')
- *
- * csr_cert.add_extension \
- * extension_factory.create_extension(
- * 'keyUsage', 'keyEncipherment,dataEncipherment,digitalSignature')
- *
- * csr_cert.add_extension \
- * extension_factory.create_extension('subjectKeyIdentifier', 'hash')
+ * extension_factory.create_extension 'basicConstraints', 'CA:FALSE'
+ * extension_factory.create_extension 'keyUsage',
+ * 'keyEncipherment,dataEncipherment,digitalSignature'
+ * extension_factory.create_extension 'subjectKeyIdentifier', 'hash'
*
* csr_cert.sign ca_key, OpenSSL::Digest::SHA1.new
*
@@ -992,12 +836,6 @@ Init_openssl()
* Version of OpenSSL the ruby OpenSSL extension was built with
*/
rb_define_const(mOSSL, "OPENSSL_VERSION", rb_str_new2(OPENSSL_VERSION_TEXT));
-
- /*
- * Version of OpenSSL the ruby OpenSSL extension is running with
- */
- rb_define_const(mOSSL, "OPENSSL_LIBRARY_VERSION", rb_str_new2(SSLeay_version(SSLEAY_VERSION)));
-
/*
* Version number of OpenSSL the ruby OpenSSL extension was built with
* (base 16)
@@ -1005,16 +843,6 @@ Init_openssl()
rb_define_const(mOSSL, "OPENSSL_VERSION_NUMBER", INT2NUM(OPENSSL_VERSION_NUMBER));
/*
- * Boolean indicating whether OpenSSL is FIPS-enabled or not
- */
-#ifdef HAVE_OPENSSL_FIPS
- rb_define_const(mOSSL, "OPENSSL_FIPS", Qtrue);
-#else
- rb_define_const(mOSSL, "OPENSSL_FIPS", Qfalse);
-#endif
- rb_define_module_function(mOSSL, "fips_mode=", ossl_fips_mode_set, 1);
-
- /*
* Generic error,
* common for all classes under OpenSSL module
*/
diff --git a/ext/openssl/ossl.h b/ext/openssl/ossl.h
index 9a97656e9c..97095f7d6f 100644
--- a/ext/openssl/ossl.h
+++ b/ext/openssl/ossl.h
@@ -30,7 +30,6 @@ extern "C" {
#endif
#include <ruby.h>
#include <ruby/io.h>
-#include <ruby/thread.h>
/*
* Check the OpenSSL version
@@ -75,11 +74,6 @@ extern "C" {
# include <openssl/ocsp.h>
#endif
-/* OpenSSL requires passwords for PEM-encoded files to be at least four
- * characters long
- */
-#define OSSL_MIN_PWD_LEN 4
-
/*
* Common Module
*/
@@ -95,15 +89,15 @@ extern VALUE eOSSLError;
*/
#define OSSL_Check_Kind(obj, klass) do {\
if (!rb_obj_is_kind_of((obj), (klass))) {\
- ossl_raise(rb_eTypeError, "wrong argument (%"PRIsVALUE")! (Expected kind of %"PRIsVALUE")",\
- rb_obj_class(obj), (klass));\
+ ossl_raise(rb_eTypeError, "wrong argument (%s)! (Expected kind of %s)",\
+ rb_obj_classname(obj), rb_class2name(klass));\
}\
} while (0)
#define OSSL_Check_Instance(obj, klass) do {\
if (!rb_obj_is_instance_of((obj), (klass))) {\
- ossl_raise(rb_eTypeError, "wrong argument (%"PRIsVALUE")! (Expected instance of %"PRIsVALUE")",\
- rb_obj_class(obj), (klass));\
+ ossl_raise(rb_eTypeError, "wrong argument (%s)! (Expected instance of %s)",\
+ rb_obj_classname(obj), rb_class2name(klass));\
}\
} while (0)
diff --git a/ext/openssl/ossl_asn1.c b/ext/openssl/ossl_asn1.c
index 8bd88f3012..31c9c45f05 100644
--- a/ext/openssl/ossl_asn1.c
+++ b/ext/openssl/ossl_asn1.c
@@ -33,22 +33,15 @@ asn1time_to_time(ASN1_TIME *time)
{
struct tm tm;
VALUE argv[6];
- int count;
if (!time || !time->data) return Qnil;
memset(&tm, 0, sizeof(struct tm));
switch (time->type) {
case V_ASN1_UTCTIME:
- count = sscanf((const char *)time->data, "%2d%2d%2d%2d%2d%2dZ",
- &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &tm.tm_hour, &tm.tm_min,
- &tm.tm_sec);
-
- if (count == 5) {
- tm.tm_sec = 0;
- } else if (count != 6) {
- ossl_raise(rb_eTypeError, "bad UTCTIME format: \"%s\"",
- time->data);
+ if (sscanf((const char *)time->data, "%2d%2d%2d%2d%2d%2dZ", &tm.tm_year, &tm.tm_mon,
+ &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec) != 6) {
+ ossl_raise(rb_eTypeError, "bad UTCTIME format");
}
if (tm.tm_year < 69) {
tm.tm_year += 2000;
@@ -156,16 +149,11 @@ num_to_asn1integer(VALUE obj, ASN1_INTEGER *ai)
ASN1_INTEGER *
num_to_asn1integer(VALUE obj, ASN1_INTEGER *ai)
{
- BIGNUM *bn;
-
- if (NIL_P(obj))
- ossl_raise(rb_eTypeError, "Can't convert nil into Integer");
+ BIGNUM *bn = GetBNPtr(obj);
- bn = GetBNPtr(obj);
-
- if (!(ai = BN_to_ASN1_INTEGER(bn, ai)))
+ if (!(ai = BN_to_ASN1_INTEGER(bn, ai))) {
ossl_raise(eOSSLError, NULL);
-
+ }
return ai;
}
#endif
@@ -231,9 +219,6 @@ static ID sivVALUE, sivTAG, sivTAG_CLASS, sivTAGGING, sivINFINITE_LENGTH, sivUNU
static ASN1_BOOLEAN
obj_to_asn1bool(VALUE obj)
{
- if (NIL_P(obj))
- ossl_raise(rb_eTypeError, "Can't convert nil into Boolean");
-
#if OPENSSL_VERSION_NUMBER < 0x00907000L
return RTEST(obj) ? 0xff : 0x100;
#else
@@ -346,7 +331,7 @@ obj_to_asn1derstr(VALUE obj)
* DER to Ruby converters
*/
static VALUE
-decode_bool(unsigned char* der, long length)
+decode_bool(unsigned char* der, int length)
{
int val;
const unsigned char *p;
@@ -359,7 +344,7 @@ decode_bool(unsigned char* der, long length)
}
static VALUE
-decode_int(unsigned char* der, long length)
+decode_int(unsigned char* der, int length)
{
ASN1_INTEGER *ai;
const unsigned char *p;
@@ -378,7 +363,7 @@ decode_int(unsigned char* der, long length)
}
static VALUE
-decode_bstr(unsigned char* der, long length, long *unused_bits)
+decode_bstr(unsigned char* der, int length, long *unused_bits)
{
ASN1_BIT_STRING *bstr;
const unsigned char *p;
@@ -399,7 +384,7 @@ decode_bstr(unsigned char* der, long length, long *unused_bits)
}
static VALUE
-decode_enum(unsigned char* der, long length)
+decode_enum(unsigned char* der, int length)
{
ASN1_ENUMERATED *ai;
const unsigned char *p;
@@ -418,7 +403,7 @@ decode_enum(unsigned char* der, long length)
}
static VALUE
-decode_null(unsigned char* der, long length)
+decode_null(unsigned char* der, int length)
{
ASN1_NULL *null;
const unsigned char *p;
@@ -432,7 +417,7 @@ decode_null(unsigned char* der, long length)
}
static VALUE
-decode_obj(unsigned char* der, long length)
+decode_obj(unsigned char* der, int length)
{
ASN1_OBJECT *obj;
const unsigned char *p;
@@ -461,7 +446,7 @@ decode_obj(unsigned char* der, long length)
}
static VALUE
-decode_time(unsigned char* der, long length)
+decode_time(unsigned char* der, int length)
{
ASN1_TIME *time;
const unsigned char *p;
@@ -480,7 +465,7 @@ decode_time(unsigned char* der, long length)
}
static VALUE
-decode_eoc(unsigned char *der, long length)
+decode_eoc(unsigned char *der, int length)
{
if (length != 2 || !(der[0] == 0x00 && der[1] == 0x00))
ossl_raise(eASN1Error, NULL);
@@ -624,8 +609,8 @@ ossl_asn1_default_tag(VALUE obj)
}
tmp_class = rb_class_superclass(tmp_class);
}
- ossl_raise(eASN1Error, "universal tag for %"PRIsVALUE" not found",
- rb_obj_class(obj));
+ ossl_raise(eASN1Error, "universal tag for %s not found",
+ rb_class2name(CLASS_OF(obj)));
return -1; /* dummy */
}
@@ -792,7 +777,7 @@ ossl_asn1data_to_der(VALUE self)
}
static VALUE
-int_ossl_asn1_decode0_prim(unsigned char **pp, long length, long hlen, int tag,
+int_ossl_asn1_decode0_prim(unsigned char **pp, long length, int hlen, int tag,
VALUE tc, long *num_read)
{
VALUE value, asn1data;
@@ -937,8 +922,8 @@ ossl_asn1_decode0(unsigned char **pp, long length, long *offset, int depth,
{
unsigned char *start, *p;
const unsigned char *p0;
- long len = 0, inner_read = 0, off = *offset, hlen;
- int tag, tc, j;
+ long len = 0, inner_read = 0, off = *offset;
+ int hlen, tag, tc, j;
VALUE asn1data, tag_class;
p = *pp;
@@ -1150,7 +1135,7 @@ ossl_asn1_initialize(int argc, VALUE *argv, VALUE self)
}
if(!SYMBOL_P(tag_class))
ossl_raise(eASN1Error, "invalid tag class");
- if(!NIL_P(tagging) && SYM2ID(tagging) == sIMPLICIT && NUM2INT(tag) > 31)
+ if(SYM2ID(tagging) == sIMPLICIT && NUM2INT(tag) > 31)
ossl_raise(eASN1Error, "tag number for Universal too large");
}
else{
@@ -1916,10 +1901,6 @@ do{\
OSSL_ASN1_DEFINE_CLASS(EndOfContent, Data);
-
-#if 0
- cASN1ObjectId = rb_define_class_under(mASN1, "ObjectId", cASN1Primitive); /* let rdoc know */
-#endif
rb_define_singleton_method(cASN1ObjectId, "register", ossl_asn1obj_s_register, 3);
rb_define_method(cASN1ObjectId, "sn", ossl_asn1obj_get_sn, 0);
rb_define_method(cASN1ObjectId, "ln", ossl_asn1obj_get_ln, 0);
diff --git a/ext/openssl/ossl_bio.c b/ext/openssl/ossl_bio.c
index a11c08c1a3..ed7c0a71a5 100644
--- a/ext/openssl/ossl_bio.c
+++ b/ext/openssl/ossl_bio.c
@@ -25,7 +25,7 @@ ossl_obj2bio(VALUE obj)
GetOpenFile(obj, fptr);
rb_io_check_readable(fptr);
- if ((fd = rb_cloexec_dup(FPTR_TO_FD(fptr))) < 0){
+ if ((fd = dup(FPTR_TO_FD(fptr))) < 0){
rb_sys_fail(0);
}
rb_update_max_fd(fd);
diff --git a/ext/openssl/ossl_bn.c b/ext/openssl/ossl_bn.c
index 822b854efe..5d690af52d 100644
--- a/ext/openssl/ossl_bn.c
+++ b/ext/openssl/ossl_bn.c
@@ -119,11 +119,11 @@ ossl_bn_initialize(int argc, VALUE *argv, VALUE self)
if (rb_scan_args(argc, argv, "11", &str, &bs) == 2) {
base = NUM2INT(bs);
}
-
+ StringValue(str);
+ GetBN(self, bn);
if (RTEST(rb_obj_is_kind_of(str, cBN))) {
BIGNUM *other;
- GetBN(self, bn);
GetBN(str, other); /* Safe - we checked kind_of? above */
if (!BN_copy(bn, other)) {
ossl_raise(eBNError, NULL);
@@ -131,8 +131,6 @@ ossl_bn_initialize(int argc, VALUE *argv, VALUE self)
return self;
}
- StringValue(str);
- GetBN(self, bn);
switch (base) {
case 0:
if (!BN_mpi2bn((unsigned char *)RSTRING_PTR(str), RSTRING_LENINT(str), bn)) {
diff --git a/ext/openssl/ossl_cipher.c b/ext/openssl/ossl_cipher.c
index 0fa740e1cb..26851515cd 100644
--- a/ext/openssl/ossl_cipher.c
+++ b/ext/openssl/ossl_cipher.c
@@ -213,9 +213,9 @@ ossl_cipher_init(int argc, VALUE *argv, VALUE self, int mode)
* We deprecated the arguments for this method, but we decided
* keeping this behaviour for backward compatibility.
*/
- VALUE cname = rb_class_path(rb_obj_class(self));
- rb_warn("arguments for %"PRIsVALUE"#encrypt and %"PRIsVALUE"#decrypt were deprecated; "
- "use %"PRIsVALUE"#pkcs5_keyivgen to derive key and IV",
+ const char *cname = rb_class2name(rb_obj_class(self));
+ rb_warn("arguments for %s#encrypt and %s#decrypt were deprecated; "
+ "use %s#pkcs5_keyivgen to derive key and IV",
cname, cname, cname);
StringValue(pass);
GetCipher(self, ctx);
@@ -329,32 +329,6 @@ ossl_cipher_pkcs5_keyivgen(int argc, VALUE *argv, VALUE self)
return Qnil;
}
-static int
-ossl_cipher_update_long(EVP_CIPHER_CTX *ctx, unsigned char *out, long *out_len_ptr,
- const unsigned char *in, long in_len)
-{
- int out_part_len;
- long out_len = 0;
-#define UPDATE_LENGTH_LIMIT INT_MAX
-
-#if SIZEOF_LONG > UPDATE_LENGTH_LIMIT
- if (in_len > UPDATE_LENGTH_LIMIT) {
- const int in_part_len = (UPDATE_LENGTH_LIMIT / 2 + 1) & ~1;
- do {
- if (!EVP_CipherUpdate(ctx, out ? (out + out_len) : 0,
- &out_part_len, in, in_part_len))
- return 0;
- out_len += out_part_len;
- in += in_part_len;
- } while ((in_len -= in_part_len) > UPDATE_LENGTH_LIMIT);
- }
-#endif
- if (!EVP_CipherUpdate(ctx, out ? (out + out_len) : 0,
- &out_part_len, in, (int)in_len))
- return 0;
- if (out_len_ptr) *out_len_ptr = out_len += out_part_len;
- return 1;
-}
/*
* call-seq:
@@ -374,21 +348,17 @@ ossl_cipher_update(int argc, VALUE *argv, VALUE self)
{
EVP_CIPHER_CTX *ctx;
unsigned char *in;
- long in_len, out_len;
+ int in_len, out_len;
VALUE data, str;
rb_scan_args(argc, argv, "11", &data, &str);
StringValue(data);
in = (unsigned char *)RSTRING_PTR(data);
- if ((in_len = RSTRING_LEN(data)) == 0)
+ if ((in_len = RSTRING_LENINT(data)) == 0)
ossl_raise(rb_eArgError, "data must not be empty");
GetCipher(self, ctx);
out_len = in_len+EVP_CIPHER_CTX_block_size(ctx);
- if (out_len <= 0) {
- ossl_raise(rb_eRangeError,
- "data too big to make output buffer: %ld bytes", in_len);
- }
if (NIL_P(str)) {
str = rb_str_new(0, out_len);
@@ -397,7 +367,7 @@ ossl_cipher_update(int argc, VALUE *argv, VALUE self)
rb_str_resize(str, out_len);
}
- if (!ossl_cipher_update_long(ctx, (unsigned char *)RSTRING_PTR(str), &out_len, in, in_len))
+ if (!EVP_CipherUpdate(ctx, (unsigned char *)RSTRING_PTR(str), &out_len, in, in_len))
ossl_raise(eCipherError, NULL);
assert(out_len < RSTRING_LEN(str));
rb_str_set_len(str, out_len);
@@ -409,15 +379,10 @@ ossl_cipher_update(int argc, VALUE *argv, VALUE self)
* call-seq:
* cipher.final -> string
*
- * Returns the remaining data held in the cipher object. Further calls to
- * Cipher#update or Cipher#final will return garbage. This call should always
- * be made as the last call of an encryption or decryption operation, after
- * after having fed the entire plaintext or ciphertext to the Cipher instance.
+ * Returns the remaining data held in the cipher object. Further calls to
+ * Cipher#update or Cipher#final will return garbage.
*
- * If an authenticated cipher was used, a CipherError is raised if the tag
- * could not be authenticated successfully. Only call this method after
- * setting the authentication tag and passing the entire contents of the
- * ciphertext into the cipher.
+ * See EVP_CipherFinal_ex for further information.
*/
static VALUE
ossl_cipher_final(VALUE self)
@@ -513,174 +478,6 @@ ossl_cipher_set_iv(VALUE self, VALUE iv)
return iv;
}
-#ifdef HAVE_AUTHENTICATED_ENCRYPTION
-/*
- * call-seq:
- * cipher.auth_data = string -> string
- *
- * Sets the cipher's additional authenticated data. This field must be
- * set when using AEAD cipher modes such as GCM or CCM. If no associated
- * data shall be used, this method must *still* be called with a value of "".
- * The contents of this field should be non-sensitive data which will be
- * added to the ciphertext to generate the authentication tag which validates
- * the contents of the ciphertext.
- *
- * The AAD must be set prior to encryption or decryption. In encryption mode,
- * it must be set after calling Cipher#encrypt and setting Cipher#key= and
- * Cipher#iv=. When decrypting, the authenticated data must be set after key,
- * iv and especially *after* the authentication tag has been set. I.e. set it
- * only after calling Cipher#decrypt, Cipher#key=, Cipher#iv= and
- * Cipher#auth_tag= first.
- */
-static VALUE
-ossl_cipher_set_auth_data(VALUE self, VALUE data)
-{
- EVP_CIPHER_CTX *ctx;
- unsigned char *in;
- long in_len, out_len;
-
- StringValue(data);
-
- in = (unsigned char *) RSTRING_PTR(data);
- in_len = RSTRING_LEN(data);
-
- GetCipher(self, ctx);
-
- if (!ossl_cipher_update_long(ctx, NULL, &out_len, in, in_len))
- ossl_raise(eCipherError, "couldn't set additional authenticated data");
-
- return data;
-}
-
-#define ossl_is_gcm(nid) (nid) == NID_aes_128_gcm || \
- (nid) == NID_aes_192_gcm || \
- (nid) == NID_aes_256_gcm
-
-static VALUE
-ossl_get_gcm_auth_tag(EVP_CIPHER_CTX *ctx, int len)
-{
- unsigned char *tag;
- VALUE ret;
-
- tag = ALLOC_N(unsigned char, len);
-
- if (!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_GET_TAG, len, tag))
- ossl_raise(eCipherError, "retrieving the authentication tag failed");
-
- ret = rb_str_new((const char *) tag, len);
- xfree(tag);
- return ret;
-}
-
-/*
- * call-seq:
- * cipher.auth_tag([ tag_len ] -> string
- *
- * Gets the authentication tag generated by Authenticated Encryption Cipher
- * modes (GCM for example). This tag may be stored along with the ciphertext,
- * then set on the decryption cipher to authenticate the contents of the
- * ciphertext against changes. If the optional integer parameter +tag_len+ is
- * given, the returned tag will be +tag_len+ bytes long. If the parameter is
- * omitted, the maximum length of 16 bytes will be returned. For maximum
- * security, the default of 16 bytes should be chosen.
- *
- * The tag may only be retrieved after calling Cipher#final.
- */
-static VALUE
-ossl_cipher_get_auth_tag(int argc, VALUE *argv, VALUE self)
-{
- VALUE vtag_len;
- EVP_CIPHER_CTX *ctx;
- int nid, tag_len;
-
- if (rb_scan_args(argc, argv, "01", &vtag_len) == 0) {
- tag_len = 16;
- } else {
- tag_len = NUM2INT(vtag_len);
- }
-
- GetCipher(self, ctx);
- nid = EVP_CIPHER_CTX_nid(ctx);
-
- if (ossl_is_gcm(nid)) {
- return ossl_get_gcm_auth_tag(ctx, tag_len);
- } else {
- ossl_raise(eCipherError, "authentication tag not supported by this cipher");
- return Qnil; /* dummy */
- }
-}
-
-static inline void
-ossl_set_gcm_auth_tag(EVP_CIPHER_CTX *ctx, unsigned char *tag, int tag_len)
-{
- if (!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_SET_TAG, tag_len, tag))
- ossl_raise(eCipherError, "unable to set GCM tag");
-}
-
-/*
- * call-seq:
- * cipher.auth_tag = string -> string
- *
- * Sets the authentication tag to verify the contents of the
- * ciphertext. The tag must be set after calling Cipher#decrypt,
- * Cipher#key= and Cipher#iv=, but before assigning the associated
- * authenticated data using Cipher#auth_data= and of course, before
- * decrypting any of the ciphertext. After all decryption is
- * performed, the tag is verified automatically in the call to
- * Cipher#final.
- */
-static VALUE
-ossl_cipher_set_auth_tag(VALUE self, VALUE vtag)
-{
- EVP_CIPHER_CTX *ctx;
- int nid;
- unsigned char *tag;
- int tag_len;
-
- StringValue(vtag);
- tag = (unsigned char *) RSTRING_PTR(vtag);
- tag_len = RSTRING_LENINT(vtag);
-
- GetCipher(self, ctx);
- nid = EVP_CIPHER_CTX_nid(ctx);
-
- if (ossl_is_gcm(nid)) {
- ossl_set_gcm_auth_tag(ctx, tag, tag_len);
- } else {
- ossl_raise(eCipherError, "authentication tag not supported by this cipher");
- }
-
- return vtag;
-}
-
-/*
- * call-seq:
- * cipher.authenticated? -> boolean
- *
- * Indicated whether this Cipher instance uses an Authenticated Encryption
- * mode.
- */
-static VALUE
-ossl_cipher_is_authenticated(VALUE self)
-{
- EVP_CIPHER_CTX *ctx;
- int nid;
-
- GetCipher(self, ctx);
- nid = EVP_CIPHER_CTX_nid(ctx);
-
- if (ossl_is_gcm(nid)) {
- return Qtrue;
- } else {
- return Qfalse;
- }
-}
-#else
-#define ossl_cipher_set_auth_data rb_f_notimplement
-#define ossl_cipher_get_auth_tag rb_f_notimplement
-#define ossl_cipher_set_auth_tag rb_f_notimplement
-#define ossl_cipher_is_authenticated rb_f_notimplement
-#endif
/*
* call-seq:
@@ -931,45 +728,6 @@ Init_ossl_cipher(void)
*
* puts data == plain #=> true
*
- * === Authenticated Encryption and Associated Data (AEAD)
- *
- * If the OpenSSL version used supports it, an Authenticated Encryption
- * mode (such as GCM or CCM) should always be preferred over any
- * unauthenticated mode. Currently, OpenSSL supports AE only in combination
- * with Associated Data (AEAD) where additional associated data is included
- * in the encryption process to compute a tag at the end of the encryption.
- * This tag will also be used in the decryption process and by verifying
- * its validity, the authenticity of a given ciphertext is established.
- *
- * This is superior to unauthenticated modes in that it allows to detect
- * if somebody effectively changed the ciphertext after it had been
- * encrypted. This prevents malicious modifications of the ciphertext that
- * could otherwise be exploited to modify ciphertexts in ways beneficial to
- * potential attackers.
- *
- * If no associated data is needed for encryption and later decryption,
- * the OpenSSL library still requires a value to be set - "" may be used in
- * case none is available. An example using the GCM (Galois Counter Mode):
- *
- * cipher = OpenSSL::Cipher::AES.new(128, :GCM)
- * cipher.encrypt
- * key = cipher.random_key
- * iv = cipher.random_iv
- * cipher.auth_data = ""
- *
- * encrypted = cipher.update(data) + cipher.final
- * tag = cipher.auth_tag
- *
- * decipher = OpenSSL::Cipher::AES.new(128, :GCM)
- * decipher.decrypt
- * decipher.key = key
- * decipher.iv = iv
- * decipher.auth_tag = tag
- * decipher.auth_data = ""
- *
- * plain = decipher.update(encrypted) + decipher.final
- *
- * puts data == plain #=> true
*/
cCipher = rb_define_class_under(mOSSL, "Cipher", rb_cObject);
eCipherError = rb_define_class_under(cCipher, "CipherError", eOSSLError);
@@ -986,10 +744,6 @@ Init_ossl_cipher(void)
rb_define_method(cCipher, "final", ossl_cipher_final, 0);
rb_define_method(cCipher, "name", ossl_cipher_name, 0);
rb_define_method(cCipher, "key=", ossl_cipher_set_key, 1);
- rb_define_method(cCipher, "auth_data=", ossl_cipher_set_auth_data, 1);
- rb_define_method(cCipher, "auth_tag=", ossl_cipher_set_auth_tag, 1);
- rb_define_method(cCipher, "auth_tag", ossl_cipher_get_auth_tag, -1);
- rb_define_method(cCipher, "authenticated?", ossl_cipher_is_authenticated, 0);
rb_define_method(cCipher, "key_len=", ossl_cipher_set_key_length, 1);
rb_define_method(cCipher, "key_len", ossl_cipher_key_length, 0);
rb_define_method(cCipher, "iv=", ossl_cipher_set_iv, 1);
diff --git a/ext/openssl/ossl_engine.c b/ext/openssl/ossl_engine.c
index 6c6c80886e..a7d1e315fd 100644
--- a/ext/openssl/ossl_engine.c
+++ b/ext/openssl/ossl_engine.c
@@ -64,47 +64,29 @@ ossl_engine_s_load(int argc, VALUE *argv, VALUE klass)
#if HAVE_ENGINE_LOAD_DYNAMIC
OSSL_ENGINE_LOAD_IF_MATCH(dynamic);
#endif
-#if HAVE_ENGINE_LOAD_4758CCA
- OSSL_ENGINE_LOAD_IF_MATCH(4758cca);
-#endif
-#if HAVE_ENGINE_LOAD_AEP
- OSSL_ENGINE_LOAD_IF_MATCH(aep);
-#endif
-#if HAVE_ENGINE_LOAD_ATALLA
- OSSL_ENGINE_LOAD_IF_MATCH(atalla);
+#if HAVE_ENGINE_LOAD_CSWIFT
+ OSSL_ENGINE_LOAD_IF_MATCH(cswift);
#endif
#if HAVE_ENGINE_LOAD_CHIL
OSSL_ENGINE_LOAD_IF_MATCH(chil);
#endif
-#if HAVE_ENGINE_LOAD_CSWIFT
- OSSL_ENGINE_LOAD_IF_MATCH(cswift);
+#if HAVE_ENGINE_LOAD_ATALLA
+ OSSL_ENGINE_LOAD_IF_MATCH(atalla);
#endif
#if HAVE_ENGINE_LOAD_NURON
OSSL_ENGINE_LOAD_IF_MATCH(nuron);
#endif
-#if HAVE_ENGINE_LOAD_SUREWARE
- OSSL_ENGINE_LOAD_IF_MATCH(sureware);
-#endif
#if HAVE_ENGINE_LOAD_UBSEC
OSSL_ENGINE_LOAD_IF_MATCH(ubsec);
#endif
-#if HAVE_ENGINE_LOAD_PADLOCK
- OSSL_ENGINE_LOAD_IF_MATCH(padlock);
-#endif
-#if HAVE_ENGINE_LOAD_CAPI
- OSSL_ENGINE_LOAD_IF_MATCH(capi);
-#endif
-#if HAVE_ENGINE_LOAD_GMP
- OSSL_ENGINE_LOAD_IF_MATCH(gmp);
-#endif
-#if HAVE_ENGINE_LOAD_GOST
- OSSL_ENGINE_LOAD_IF_MATCH(gost);
+#if HAVE_ENGINE_LOAD_AEP
+ OSSL_ENGINE_LOAD_IF_MATCH(aep);
#endif
-#if HAVE_ENGINE_LOAD_CRYPTODEV
- OSSL_ENGINE_LOAD_IF_MATCH(cryptodev);
+#if HAVE_ENGINE_LOAD_SUREWARE
+ OSSL_ENGINE_LOAD_IF_MATCH(sureware);
#endif
-#if HAVE_ENGINE_LOAD_AESNI
- OSSL_ENGINE_LOAD_IF_MATCH(aesni);
+#if HAVE_ENGINE_LOAD_4758CCA
+ OSSL_ENGINE_LOAD_IF_MATCH(4758cca);
#endif
#endif
#ifdef HAVE_ENGINE_LOAD_OPENBSD_DEV_CRYPTO
@@ -365,11 +347,18 @@ ossl_engine_get_cmds(VALUE self)
static VALUE
ossl_engine_inspect(VALUE self)
{
- ENGINE *e;
-
- GetEngine(self, e);
- return rb_sprintf("#<%"PRIsVALUE" id=\"%s\" name=\"%s\">",
- rb_obj_class(self), ENGINE_get_id(e), ENGINE_get_name(e));
+ VALUE str;
+ const char *cname = rb_class2name(rb_obj_class(self));
+
+ str = rb_str_new2("#<");
+ rb_str_cat2(str, cname);
+ rb_str_cat2(str, " id=\"");
+ rb_str_append(str, ossl_engine_get_id(self));
+ rb_str_cat2(str, "\" name=\"");
+ rb_str_append(str, ossl_engine_get_name(self));
+ rb_str_cat2(str, "\">");
+
+ return str;
}
#define DefEngineConst(x) rb_define_const(cEngine, #x, INT2NUM(ENGINE_##x))
diff --git a/ext/openssl/ossl_ns_spki.c b/ext/openssl/ossl_ns_spki.c
index b80984cfee..bf828cbb83 100644
--- a/ext/openssl/ossl_ns_spki.c
+++ b/ext/openssl/ossl_ns_spki.c
@@ -51,13 +51,6 @@ ossl_spki_alloc(VALUE klass)
return obj;
}
-/*
- * call-seq:
- * SPKI.new([request]) => spki
- *
- * === Parameters
- * * +request+ - optional raw request, either in PEM or DER format.
- */
static VALUE
ossl_spki_initialize(int argc, VALUE *argv, VALUE self)
{
@@ -82,12 +75,6 @@ ossl_spki_initialize(int argc, VALUE *argv, VALUE self)
return self;
}
-/*
- * call-seq:
- * spki.to_der => DER-encoded string
- *
- * Returns the DER encoding of this SPKI.
- */
static VALUE
ossl_spki_to_der(VALUE self)
{
@@ -108,12 +95,6 @@ ossl_spki_to_der(VALUE self)
return str;
}
-/*
- * call-seq:
- * spki.to_pem => PEM-encoded string
- *
- * Returns the PEM encoding of this SPKI.
- */
static VALUE
ossl_spki_to_pem(VALUE self)
{
@@ -130,13 +111,6 @@ ossl_spki_to_pem(VALUE self)
return str;
}
-/*
- * call-seq:
- * spki.to_text => string
- *
- * Returns a textual representation of this SPKI, useful for debugging
- * purposes.
- */
static VALUE
ossl_spki_print(VALUE self)
{
@@ -160,13 +134,6 @@ ossl_spki_print(VALUE self)
return str;
}
-/*
- * call-seq:
- * spki.public_key => pkey
- *
- * Returns the public key associated with the SPKI, an instance of
- * OpenSSL::PKey.
- */
static VALUE
ossl_spki_get_public_key(VALUE self)
{
@@ -181,17 +148,6 @@ ossl_spki_get_public_key(VALUE self)
return ossl_pkey_new(pkey); /* NO DUP - OK */
}
-/*
- * call-seq:
- * spki.public_key = pub => pkey
- *
- * === Parameters
- * * +pub+ - the public key to be set for this instance
- *
- * Sets the public key to be associated with the SPKI, an instance of
- * OpenSSL::PKey. This should be the public key corresponding to the
- * private key used for signing the SPKI.
- */
static VALUE
ossl_spki_set_public_key(VALUE self, VALUE key)
{
@@ -205,12 +161,6 @@ ossl_spki_set_public_key(VALUE self, VALUE key)
return key;
}
-/*
- * call-seq:
- * spki.challenge => string
- *
- * Returns the challenge string associated with this SPKI.
- */
static VALUE
ossl_spki_get_challenge(VALUE self)
{
@@ -226,16 +176,6 @@ ossl_spki_get_challenge(VALUE self)
spki->spkac->challenge->length);
}
-/*
- * call-seq:
- * spki.challenge = str => string
- *
- * === Parameters
- * * +str+ - the challenge string to be set for this instance
- *
- * Sets the challenge to be associated with the SPKI. May be used by the
- * server, e.g. to prevent replay.
- */
static VALUE
ossl_spki_set_challenge(VALUE self, VALUE str)
{
@@ -251,19 +191,6 @@ ossl_spki_set_challenge(VALUE self, VALUE str)
return str;
}
-/*
- * call-seq:
- * spki.sign(key, digest) => spki
- *
- * === Parameters
- * * +key+ - the private key to be used for signing this instance
- * * +digest+ - the digest to be used for signing this instance
- *
- * To sign an SPKI, the private key corresponding to the public key set
- * for this instance should be used, in addition to a digest algorithm in
- * the form of an OpenSSL::Digest. The private key should be an instance of
- * OpenSSL::PKey.
- */
static VALUE
ossl_spki_sign(VALUE self, VALUE key, VALUE digest)
{
@@ -282,14 +209,7 @@ ossl_spki_sign(VALUE self, VALUE key, VALUE digest)
}
/*
- * call-seq:
- * spki.verify(key) => boolean
- *
- * === Parameters
- * * +key+ - the public key to be used for verifying the SPKI signature
- *
- * Returns +true+ if the signature is valid, +false+ otherwise. To verify an
- * SPKI, the public key contained within the SPKI should be used.
+ * Checks that cert signature is made with PRIVversion of this PUBLIC 'key'
*/
static VALUE
ossl_spki_verify(VALUE self, VALUE key)
@@ -308,64 +228,12 @@ ossl_spki_verify(VALUE self, VALUE key)
return Qnil; /* dummy */
}
-/* Document-class: OpenSSL::Netscape::SPKI
- *
- * A Simple Public Key Infrastructure implementation (pronounced "spookey").
- * The structure is defined as
- * PublicKeyAndChallenge ::= SEQUENCE {
- * spki SubjectPublicKeyInfo,
- * challenge IA5STRING
- * }
- *
- * SignedPublicKeyAndChallenge ::= SEQUENCE {
- * publicKeyAndChallenge PublicKeyAndChallenge,
- * signatureAlgorithm AlgorithmIdentifier,
- * signature BIT STRING
- * }
- * where the definitions of SubjectPublicKeyInfo and AlgorithmIdentifier can
- * be found in RFC5280. SPKI is typically used in browsers for generating
- * a public/private key pair and a subsequent certificate request, using
- * the HTML <keygen> element.
- *
- * == Examples
- *
- * === Creating an SPKI
- * key = OpenSSL::PKey::RSA.new 2048
- * spki = OpenSSL::Netscape::SPKI.new
- * spki.challenge = "RandomChallenge"
- * spki.public_key = key.public_key
- * spki.sign(key, OpenSSL::Digest::SHA256.new)
- * #send a request containing this to a server generating a certificate
- * === Verifiying an SPKI request
- * request = #...
- * spki = OpenSSL::Netscape::SPKI.new request
- * unless spki.verify(spki.public_key)
- * # signature is invalid
- * end
- * #proceed
- */
-
-/* Document-module: OpenSSL::Netscape
- *
- * OpenSSL::Netscape is a namespace for SPKI (Simple Public Key
- * Infrastructure) which implements Signed Public Key and Challenge.
- * See {RFC 2692}[http://tools.ietf.org/html/rfc2692] and {RFC
- * 2693}[http://tools.ietf.org/html/rfc2692] for details.
- */
-
-/* Document-class: OpenSSL::Netscape::SPKIError
- *
- * Generic Exception class that is raised if an error occurs during an
- * operation on an instance of OpenSSL::Netscape::SPKI.
+/*
+ * NETSCAPE_SPKI init
*/
-
void
Init_ossl_ns_spki()
{
-#if 0
- mOSSL = rb_define_module("OpenSSL"); /* let rdoc know about mOSSL */
-#endif
-
mNetscape = rb_define_module_under(mOSSL, "Netscape");
eSPKIError = rb_define_class_under(mNetscape, "SPKIError", eOSSLError);
diff --git a/ext/openssl/ossl_pkcs5.c b/ext/openssl/ossl_pkcs5.c
index 3b615e4828..d3eaf2d073 100644
--- a/ext/openssl/ossl_pkcs5.c
+++ b/ext/openssl/ossl_pkcs5.c
@@ -14,12 +14,12 @@ VALUE ePKCS5;
*
* === Parameters
* * +pass+ - string
- * * +salt+ - string - should be at least 8 bytes long.
- * * +iter+ - integer - should be greater than 1000. 20000 is better.
+ * * +salt+ - string
+ * * +iter+ - integer - should be greater than 1000. 2000 is better.
* * +keylen+ - integer
* * +digest+ - a string or OpenSSL::Digest object.
*
- * Available in OpenSSL 0.9.4.
+ * Available in OpenSSL 0.9.9?.
*
* Digests other than SHA1 may not be supported by other cryptography libraries.
*/
@@ -36,8 +36,8 @@ ossl_pkcs5_pbkdf2_hmac(VALUE self, VALUE pass, VALUE salt, VALUE iter, VALUE key
str = rb_str_new(0, len);
- if (PKCS5_PBKDF2_HMAC(RSTRING_PTR(pass), RSTRING_LENINT(pass),
- (unsigned char *)RSTRING_PTR(salt), RSTRING_LENINT(salt),
+ if (PKCS5_PBKDF2_HMAC(RSTRING_PTR(pass), RSTRING_LEN(pass),
+ (unsigned char *)RSTRING_PTR(salt), RSTRING_LEN(salt),
NUM2INT(iter), md, len,
(unsigned char *)RSTRING_PTR(str)) != 1)
ossl_raise(ePKCS5, "PKCS5_PBKDF2_HMAC");
@@ -56,11 +56,11 @@ ossl_pkcs5_pbkdf2_hmac(VALUE self, VALUE pass, VALUE salt, VALUE iter, VALUE key
*
* === Parameters
* * +pass+ - string
- * * +salt+ - string - should be at least 8 bytes long.
- * * +iter+ - integer - should be greater than 1000. 20000 is better.
+ * * +salt+ - string
+ * * +iter+ - integer - should be greater than 1000. 2000 is better.
* * +keylen+ - integer
*
- * This method is available in almost any version of OpenSSL.
+ * This method is available almost any version OpenSSL.
*
* Conforms to rfc2898.
*/
@@ -93,95 +93,7 @@ Init_ossl_pkcs5()
* Password-based Encryption
*
*/
-
- #if 0
- mOSSL = rb_define_module("OpenSSL"); /* let rdoc know about mOSSL */
- #endif
-
- /* Document-class: OpenSSL::PKCS5
- *
- * Provides password-based encryption functionality based on PKCS#5.
- * Typically used for securely deriving arbitrary length symmetric keys
- * to be used with an OpenSSL::Cipher from passwords. Another use case
- * is for storing passwords: Due to the ability to tweak the effort of
- * computation by increasing the iteration count, computation can be
- * slowed down artificially in order to render possible attacks infeasible.
- *
- * PKCS5 offers support for PBKDF2 with an OpenSSL::Digest::SHA1-based
- * HMAC, or an arbitrary Digest if the underlying version of OpenSSL
- * already supports it (>= 0.9.4).
- *
- * === Parameters
- * ==== Password
- * Typically an arbitrary String that represents the password to be used
- * for deriving a key.
- * ==== Salt
- * Prevents attacks based on dictionaries of common passwords. It is a
- * public value that can be safely stored along with the password (e.g.
- * if PBKDF2 is used for password storage). For maximum security, a fresh,
- * random salt should be generated for each stored password. According
- * to PKCS#5, a salt should be at least 8 bytes long.
- * ==== Iteration Count
- * Allows to tweak the length that the actual computation will take. The
- * larger the iteration count, the longer it will take.
- * ==== Key Length
- * Specifies the length in bytes of the output that will be generated.
- * Typically, the key length should be larger than or equal to the output
- * length of the underlying digest function, otherwise an attacker could
- * simply try to brute-force the key. According to PKCS#5, security is
- * limited by the output length of the underlying digest function, i.e.
- * security is not improved if a key length strictly larger than the
- * digest output length is chosen. Therefore, when using PKCS5 for
- * password storage, it suffices to store values equal to the digest
- * output length, nothing is gained by storing larger values.
- *
- * == Examples
- * === Generating a 128 bit key for a Cipher (e.g. AES)
- * pass = "secret"
- * salt = OpenSSL::Random.random_bytes(16)
- * iter = 20000
- * key_len = 16
- * key = OpenSSL::PKCS5.pbkdf2_hmac_sha1(pass, salt, iter, key_len)
- *
- * === Storing Passwords
- * pass = "secret"
- * salt = OpenSSL::Random.random_bytes(16) #store this with the generated value
- * iter = 20000
- * digest = OpenSSL::Digest::SHA256.new
- * len = digest.digest_length
- * #the final value to be stored
- * value = OpenSSL::PKCS5.pbkdf2_hmac(pass, salt, iter, len, digest)
- *
- * === Important Note on Checking Passwords
- * When comparing passwords provided by the user with previously stored
- * values, a common mistake made is comparing the two values using "==".
- * Typically, "==" short-circuits on evaluation, and is therefore
- * vulnerable to timing attacks. The proper way is to use a method that
- * always takes the same amount of time when comparing two values, thus
- * not leaking any information to potential attackers. To compare two
- * values, the following could be used:
- * def eql_time_cmp(a, b)
- * unless a.length == b.length
- * return false
- * end
- * cmp = b.bytes.to_a
- * result = 0
- * a.bytes.each_with_index {|c,i|
- * result |= c ^ cmp[i]
- * }
- * result == 0
- * end
- * Please note that the premature return in case of differing lengths
- * typically does not leak valuable information - when using PKCS#5, the
- * length of the values to be compared is of fixed size.
- */
-
mPKCS5 = rb_define_module_under(mOSSL, "PKCS5");
- /* Document-class: OpenSSL::PKCS5::PKCS5Error
- *
- * Generic Exception class that is raised if an error occurs during a
- * computation.
- */
ePKCS5 = rb_define_class_under(mPKCS5, "PKCS5Error", eOSSLError);
rb_define_module_function(mPKCS5, "pbkdf2_hmac", ossl_pkcs5_pbkdf2_hmac, 5);
diff --git a/ext/openssl/ossl_pkey.c b/ext/openssl/ossl_pkey.c
index 878b221270..f785e66c00 100644
--- a/ext/openssl/ossl_pkey.c
+++ b/ext/openssl/ossl_pkey.c
@@ -33,42 +33,6 @@ ossl_generate_cb(int p, int n, void *arg)
rb_yield(ary);
}
-#if HAVE_BN_GENCB
-/* OpenSSL 2nd version of GN generation callback */
-int
-ossl_generate_cb_2(int p, int n, BN_GENCB *cb)
-{
- VALUE ary;
- struct ossl_generate_cb_arg *arg;
- int state;
-
- arg = (struct ossl_generate_cb_arg *)cb->arg;
- if (arg->yield) {
- ary = rb_ary_new2(2);
- rb_ary_store(ary, 0, INT2NUM(p));
- rb_ary_store(ary, 1, INT2NUM(n));
-
- /*
- * can be break by raising exception or 'break'
- */
- rb_protect(rb_yield, ary, &state);
- if (state) {
- arg->stop = 1;
- arg->state = state;
- }
- }
- if (arg->stop) return 0;
- return 1;
-}
-
-void
-ossl_generate_cb_stop(void *ptr)
-{
- struct ossl_generate_cb_arg *arg = (struct ossl_generate_cb_arg *)ptr;
- arg->stop = 1;
-}
-#endif
-
/*
* Public
*/
@@ -98,8 +62,7 @@ ossl_pkey_new(EVP_PKEY *pkey)
default:
ossl_raise(ePKeyError, "unsupported key type");
}
-
- UNREACHABLE;
+ return Qnil; /* not reached */
}
VALUE
@@ -112,7 +75,6 @@ ossl_pkey_new_from_file(VALUE filename)
if (!(fp = fopen(RSTRING_PTR(filename), "r"))) {
ossl_raise(ePKeyError, "%s", strerror(errno));
}
- rb_fd_fix_cloexec(fileno(fp));
pkey = PEM_read_PrivateKey(fp, NULL, ossl_pem_passwd_cb, NULL);
fclose(fp);
@@ -318,16 +280,13 @@ ossl_pkey_verify(VALUE self, VALUE digest, VALUE sig, VALUE data)
{
EVP_PKEY *pkey;
EVP_MD_CTX ctx;
- int result;
GetPKey(self, pkey);
+ EVP_VerifyInit(&ctx, GetDigestPtr(digest));
StringValue(sig);
StringValue(data);
- EVP_VerifyInit(&ctx, GetDigestPtr(digest));
EVP_VerifyUpdate(&ctx, RSTRING_PTR(data), RSTRING_LEN(data));
- result = EVP_VerifyFinal(&ctx, (unsigned char *)RSTRING_PTR(sig), RSTRING_LENINT(sig), pkey);
- EVP_MD_CTX_cleanup(&ctx);
- switch (result) {
+ switch (EVP_VerifyFinal(&ctx, (unsigned char *)RSTRING_PTR(sig), RSTRING_LENINT(sig), pkey)) {
case 0:
return Qfalse;
case 1:
diff --git a/ext/openssl/ossl_pkey.h b/ext/openssl/ossl_pkey.h
index 686e956ee5..5e3329d326 100644
--- a/ext/openssl/ossl_pkey.h
+++ b/ext/openssl/ossl_pkey.h
@@ -39,16 +39,6 @@ extern ID id_private_q;
} while (0)
void ossl_generate_cb(int, int, void *);
-#define HAVE_BN_GENCB defined(HAVE_RSA_GENERATE_KEY_EX) || defined(HAVE_DH_GENERATE_PARAMETERS_EX) || defined(HAVE_DSA_GENERATE_PARAMETERS_EX)
-#if HAVE_BN_GENCB
-struct ossl_generate_cb_arg {
- int yield;
- int stop;
- int state;
-};
-int ossl_generate_cb_2(int p, int n, BN_GENCB *cb);
-void ossl_generate_cb_stop(void *ptr);
-#endif
VALUE ossl_pkey_new(EVP_PKEY *);
VALUE ossl_pkey_new_from_file(VALUE);
diff --git a/ext/openssl/ossl_pkey_dh.c b/ext/openssl/ossl_pkey_dh.c
index e0852c560d..748d9c82fd 100644
--- a/ext/openssl/ossl_pkey_dh.c
+++ b/ext/openssl/ossl_pkey_dh.c
@@ -81,66 +81,19 @@ ossl_dh_new(EVP_PKEY *pkey)
/*
* Private
*/
-#if defined(HAVE_DH_GENERATE_PARAMETERS_EX) && HAVE_BN_GENCB
-struct dh_blocking_gen_arg {
- DH *dh;
- int size;
- int gen;
- BN_GENCB *cb;
- int result;
-};
-
-static void *
-dh_blocking_gen(void *arg)
-{
- struct dh_blocking_gen_arg *gen = (struct dh_blocking_gen_arg *)arg;
- gen->result = DH_generate_parameters_ex(gen->dh, gen->size, gen->gen, gen->cb);
- return 0;
-}
-#endif
-
static DH *
dh_generate(int size, int gen)
{
-#if defined(HAVE_DH_GENERATE_PARAMETERS_EX) && HAVE_BN_GENCB
- BN_GENCB cb;
- struct ossl_generate_cb_arg cb_arg;
- struct dh_blocking_gen_arg gen_arg;
- DH *dh = DH_new();
-
- if (!dh) return 0;
-
- memset(&cb_arg, 0, sizeof(struct ossl_generate_cb_arg));
- if (rb_block_given_p())
- cb_arg.yield = 1;
- BN_GENCB_set(&cb, ossl_generate_cb_2, &cb_arg);
- gen_arg.dh = dh;
- gen_arg.size = size;
- gen_arg.gen = gen;
- gen_arg.cb = &cb;
- if (cb_arg.yield == 1) {
- /* we cannot release GVL when callback proc is supplied */
- dh_blocking_gen(&gen_arg);
- } else {
- /* there's a chance to unblock */
- rb_thread_call_without_gvl(dh_blocking_gen, &gen_arg, ossl_generate_cb_stop, &cb_arg);
- }
-
- if (!gen_arg.result) {
- DH_free(dh);
- if (cb_arg.state) rb_jump_tag(cb_arg.state);
- return 0;
- }
-#else
DH *dh;
- dh = DH_generate_parameters(size, gen, rb_block_given_p() ? ossl_generate_cb : NULL, NULL);
+ dh = DH_generate_parameters(size, gen,
+ rb_block_given_p() ? ossl_generate_cb : NULL,
+ NULL);
if (!dh) return 0;
-#endif
if (!DH_generate_key(dh)) {
- DH_free(dh);
- return 0;
+ DH_free(dh);
+ return 0;
}
return dh;
@@ -619,7 +572,7 @@ Init_ossl_dh()
*
* === Example of a key exchange
* dh1 = OpenSSL::PKey::DH.new(2048)
- * der = dh1.public_key.to_der #you may send this publicly to the participating party
+ * params = dh1.public_key.to_der #you may send this publicly to the participating party
* dh2 = OpenSSL::PKey::DH.new(der)
* dh2.generate_key! #generate the per-session key pair
* symm_key1 = dh1.compute_key(dh2.pub_key)
@@ -662,3 +615,4 @@ Init_ossl_dh()
{
}
#endif /* NO_DH */
+
diff --git a/ext/openssl/ossl_pkey_dsa.c b/ext/openssl/ossl_pkey_dsa.c
index ba28ba028d..6b10e8fdf8 100644
--- a/ext/openssl/ossl_pkey_dsa.c
+++ b/ext/openssl/ossl_pkey_dsa.c
@@ -75,69 +75,9 @@ ossl_dsa_new(EVP_PKEY *pkey)
/*
* Private
*/
-#if defined(HAVE_DSA_GENERATE_PARAMETERS_EX) && HAVE_BN_GENCB
-struct dsa_blocking_gen_arg {
- DSA *dsa;
- int size;
- unsigned char* seed;
- int seed_len;
- int *counter;
- unsigned long *h;
- BN_GENCB *cb;
- int result;
-};
-
-static void *
-dsa_blocking_gen(void *arg)
-{
- struct dsa_blocking_gen_arg *gen = (struct dsa_blocking_gen_arg *)arg;
- gen->result = DSA_generate_parameters_ex(gen->dsa, gen->size, gen->seed, gen->seed_len, gen->counter, gen->h, gen->cb);
- return 0;
-}
-#endif
-
static DSA *
dsa_generate(int size)
{
-#if defined(HAVE_DSA_GENERATE_PARAMETERS_EX) && HAVE_BN_GENCB
- BN_GENCB cb;
- struct ossl_generate_cb_arg cb_arg;
- struct dsa_blocking_gen_arg gen_arg;
- DSA *dsa = DSA_new();
- unsigned char seed[20];
- int seed_len = 20, counter;
- unsigned long h;
-
- if (!dsa) return 0;
- if (!RAND_bytes(seed, seed_len)) {
- DSA_free(dsa);
- return 0;
- }
-
- memset(&cb_arg, 0, sizeof(struct ossl_generate_cb_arg));
- if (rb_block_given_p())
- cb_arg.yield = 1;
- BN_GENCB_set(&cb, ossl_generate_cb_2, &cb_arg);
- gen_arg.dsa = dsa;
- gen_arg.size = size;
- gen_arg.seed = seed;
- gen_arg.seed_len = seed_len;
- gen_arg.counter = &counter;
- gen_arg.h = &h;
- gen_arg.cb = &cb;
- if (cb_arg.yield == 1) {
- /* we cannot release GVL when callback proc is supplied */
- dsa_blocking_gen(&gen_arg);
- } else {
- /* there's a chance to unblock */
- rb_thread_call_without_gvl(dsa_blocking_gen, &gen_arg, ossl_generate_cb_stop, &cb_arg);
- }
- if (!gen_arg.result) {
- DSA_free(dsa);
- if (cb_arg.state) rb_jump_tag(cb_arg.state);
- return 0;
- }
-#else
DSA *dsa;
unsigned char seed[20];
int seed_len = 20, counter;
@@ -147,9 +87,9 @@ dsa_generate(int size)
return 0;
}
dsa = DSA_generate_parameters(size, seed, seed_len, &counter, &h,
- rb_block_given_p() ? ossl_generate_cb : NULL, NULL);
+ rb_block_given_p() ? ossl_generate_cb : NULL,
+ NULL);
if(!dsa) return 0;
-#endif
if (!DSA_generate_key(dsa)) {
DSA_free(dsa);
@@ -244,7 +184,7 @@ ossl_dsa_initialize(int argc, VALUE *argv, VALUE self)
BIO_free(in);
if (!dsa) {
ERR_clear_error();
- ossl_raise(eDSAError, "Neither PUB key nor PRIV key");
+ ossl_raise(eDSAError, "Neither PUB key nor PRIV key:");
}
}
if (!EVP_PKEY_assign_DSA(pkey, dsa)) {
@@ -318,10 +258,7 @@ ossl_dsa_export(int argc, VALUE *argv, VALUE self)
if (!NIL_P(cipher)) {
ciph = GetCipherPtr(cipher);
if (!NIL_P(pass)) {
- StringValue(pass);
- if (RSTRING_LENINT(pass) < OSSL_MIN_PWD_LEN)
- ossl_raise(eOSSLError, "OpenSSL requires passwords to be at least four characters long");
- passwd = RSTRING_PTR(pass);
+ passwd = StringValuePtr(pass);
}
}
if (!(out = BIO_new(BIO_s_mem()))) {
diff --git a/ext/openssl/ossl_pkey_ec.c b/ext/openssl/ossl_pkey_ec.c
index 29e28ca2f4..9f1050f62d 100644
--- a/ext/openssl/ossl_pkey_ec.c
+++ b/ext/openssl/ossl_pkey_ec.c
@@ -493,10 +493,7 @@ static VALUE ossl_ec_key_to_string(VALUE self, VALUE ciph, VALUE pass, int forma
if (!NIL_P(ciph)) {
cipher = GetCipherPtr(ciph);
if (!NIL_P(pass)) {
- StringValue(pass);
- if (RSTRING_LENINT(pass) < OSSL_MIN_PWD_LEN)
- ossl_raise(eOSSLError, "OpenSSL requires passwords to be at least four characters long");
- password = RSTRING_PTR(pass);
+ password = StringValuePtr(pass);
}
}
else {
@@ -533,8 +530,8 @@ static VALUE ossl_ec_key_to_string(VALUE self, VALUE ciph, VALUE pass, int forma
/*
* call-seq:
- * key.export => String
- * key.export(cipher, pass_phrase) => String
+ * key.to_pem => String
+ * key.to_pem(cipher, pass_phrase) => String
*
* Outputs the EC key in PEM encoding. If +cipher+ and +pass_phrase+ are
* given they will be used to encrypt the key. +cipher+ must be an
@@ -543,7 +540,7 @@ static VALUE ossl_ec_key_to_string(VALUE self, VALUE ciph, VALUE pass, int forma
* text.
*
*/
-static VALUE ossl_ec_key_export(int argc, VALUE *argv, VALUE self)
+static VALUE ossl_ec_key_to_pem(int argc, VALUE *argv, VALUE self)
{
VALUE cipher, passwd;
rb_scan_args(argc, argv, "02", &cipher, &passwd);
@@ -703,8 +700,6 @@ static VALUE ossl_ec_key_dsa_verify_asn1(VALUE self, VALUE data, VALUE sig)
}
ossl_raise(eECError, "ECDSA_verify");
-
- UNREACHABLE;
}
static void ossl_ec_group_free(ossl_ec_group *ec_group)
@@ -762,10 +757,8 @@ static VALUE ossl_ec_group_initialize(int argc, VALUE *argv, VALUE self)
method = EC_GFp_mont_method();
} else if (id == s_GFp_nist) {
method = EC_GFp_nist_method();
-#if !defined(OPENSSL_NO_EC2M)
} else if (id == s_GF2m_simple) {
method = EC_GF2m_simple_method();
-#endif
}
if (method) {
@@ -819,10 +812,8 @@ static VALUE ossl_ec_group_initialize(int argc, VALUE *argv, VALUE self)
if (id == s_GFp) {
new_curve = EC_GROUP_new_curve_GFp;
-#if !defined(OPENSSL_NO_EC2M)
} else if (id == s_GF2m) {
new_curve = EC_GROUP_new_curve_GF2m;
-#endif
} else {
ossl_raise(rb_eArgError, "unknown symbol, must be :GFp or :GF2m");
}
@@ -1358,8 +1349,6 @@ static VALUE ossl_ec_point_is_at_infinity(VALUE self)
case 0: return Qfalse;
default: ossl_raise(cEC_POINT, "EC_POINT_is_at_infinity");
}
-
- UNREACHABLE;
}
/*
@@ -1381,8 +1370,6 @@ static VALUE ossl_ec_point_is_on_curve(VALUE self)
case 0: return Qfalse;
default: ossl_raise(cEC_POINT, "EC_POINT_is_on_curve");
}
-
- UNREACHABLE;
}
/*
@@ -1474,78 +1461,6 @@ static VALUE ossl_ec_point_to_bn(VALUE self)
return bn_obj;
}
-/*
- * call-seq:
- * point.mul(bn) => point
- * point.mul(bn, bn) => point
- * point.mul([bn], [point]) => point
- * point.mul([bn], [point], bn) => point
- */
-static VALUE ossl_ec_point_mul(int argc, VALUE *argv, VALUE self)
-{
- EC_POINT *point1, *point2;
- const EC_GROUP *group;
- VALUE group_v = rb_iv_get(self, "@group");
- VALUE bn_v1, bn_v2, r, points_v;
- BIGNUM *bn1 = NULL, *bn2 = NULL;
-
- Require_EC_POINT(self, point1);
- SafeRequire_EC_GROUP(group_v, group);
-
- r = rb_obj_alloc(cEC_POINT);
- ossl_ec_point_initialize(1, &group_v, r);
- Require_EC_POINT(r, point2);
-
- argc = rb_scan_args(argc, argv, "12", &bn_v1, &points_v, &bn_v2);
-
- if (rb_obj_is_kind_of(bn_v1, cBN)) {
- bn1 = GetBNPtr(bn_v1);
- if (argc >= 2) {
- bn2 = GetBNPtr(points_v);
- }
- if (EC_POINT_mul(group, point2, bn2, point1, bn1, ossl_bn_ctx) != 1)
- ossl_raise(eEC_POINT, "Multiplication failed");
- } else {
- size_t i, points_len, bignums_len;
- const EC_POINT **points;
- const BIGNUM **bignums;
-
- Check_Type(bn_v1, T_ARRAY);
- bignums_len = RARRAY_LEN(bn_v1);
- bignums = (const BIGNUM **)OPENSSL_malloc(bignums_len * (int)sizeof(BIGNUM *));
-
- for (i = 0; i < bignums_len; ++i) {
- bignums[i] = GetBNPtr(rb_ary_entry(bn_v1, i));
- }
-
- if (!rb_obj_is_kind_of(points_v, rb_cArray)) {
- OPENSSL_free((void *)bignums);
- rb_raise(rb_eTypeError, "Argument2 must be an array");
- }
-
- rb_ary_unshift(points_v, self);
- points_len = RARRAY_LEN(points_v);
- points = (const EC_POINT **)OPENSSL_malloc(points_len * (int)sizeof(EC_POINT *));
-
- for (i = 0; i < points_len; ++i) {
- Get_EC_POINT(rb_ary_entry(points_v, i), points[i]);
- }
-
- if (argc >= 3) {
- bn2 = GetBNPtr(bn_v2);
- }
- if (EC_POINTs_mul(group, point2, bn2, points_len, points, bignums, ossl_bn_ctx) != 1) {
- OPENSSL_free((void *)bignums);
- OPENSSL_free((void *)points);
- ossl_raise(eEC_POINT, "Multiplication failed");
- }
- OPENSSL_free((void *)bignums);
- OPENSSL_free((void *)points);
- }
-
- return r;
-}
-
static void no_copy(VALUE klass)
{
rb_undef_method(klass, "copy");
@@ -1612,8 +1527,7 @@ void Init_ossl_ec()
rb_define_method(cEC, "dsa_verify_asn1", ossl_ec_key_dsa_verify_asn1, 2);
/* do_sign/do_verify */
- rb_define_method(cEC, "export", ossl_ec_key_export, -1);
- rb_define_alias(cEC, "to_pem", "export");
+ rb_define_method(cEC, "to_pem", ossl_ec_key_to_pem, -1);
rb_define_method(cEC, "to_der", ossl_ec_key_to_der, 0);
rb_define_method(cEC, "to_text", ossl_ec_key_to_text, 0);
@@ -1667,7 +1581,6 @@ void Init_ossl_ec()
/* all the other methods */
rb_define_method(cEC_POINT, "to_bn", ossl_ec_point_to_bn, 0);
- rb_define_method(cEC_POINT, "mul", ossl_ec_point_mul, -1);
no_copy(cEC);
no_copy(cEC_GROUP);
diff --git a/ext/openssl/ossl_pkey_rsa.c b/ext/openssl/ossl_pkey_rsa.c
index e395e7108f..eba693b057 100644
--- a/ext/openssl/ossl_pkey_rsa.c
+++ b/ext/openssl/ossl_pkey_rsa.c
@@ -76,77 +76,12 @@ ossl_rsa_new(EVP_PKEY *pkey)
/*
* Private
*/
-#if defined(HAVE_RSA_GENERATE_KEY_EX) && HAVE_BN_GENCB
-struct rsa_blocking_gen_arg {
- RSA *rsa;
- BIGNUM *e;
- int size;
- BN_GENCB *cb;
- int result;
-};
-
-static void *
-rsa_blocking_gen(void *arg)
-{
- struct rsa_blocking_gen_arg *gen = (struct rsa_blocking_gen_arg *)arg;
- gen->result = RSA_generate_key_ex(gen->rsa, gen->size, gen->e, gen->cb);
- return 0;
-}
-#endif
-
static RSA *
-rsa_generate(int size, unsigned long exp)
+rsa_generate(int size, int exp)
{
-#if defined(HAVE_RSA_GENERATE_KEY_EX) && HAVE_BN_GENCB
- int i;
- BN_GENCB cb;
- struct ossl_generate_cb_arg cb_arg;
- struct rsa_blocking_gen_arg gen_arg;
- RSA *rsa = RSA_new();
- BIGNUM *e = BN_new();
-
- if (!rsa || !e) {
- if (e) BN_free(e);
- if (rsa) RSA_free(rsa);
- return 0;
- }
- for (i = 0; i < (int)sizeof(exp) * 8; ++i) {
- if (exp & (1UL << i)) {
- if (BN_set_bit(e, i) == 0) {
- BN_free(e);
- RSA_free(rsa);
- return 0;
- }
- }
- }
-
- memset(&cb_arg, 0, sizeof(struct ossl_generate_cb_arg));
- if (rb_block_given_p())
- cb_arg.yield = 1;
- BN_GENCB_set(&cb, ossl_generate_cb_2, &cb_arg);
- gen_arg.rsa = rsa;
- gen_arg.e = e;
- gen_arg.size = size;
- gen_arg.cb = &cb;
- if (cb_arg.yield == 1) {
- /* we cannot release GVL when callback proc is supplied */
- rsa_blocking_gen(&gen_arg);
- } else {
- /* there's a chance to unblock */
- rb_thread_call_without_gvl(rsa_blocking_gen, &gen_arg, ossl_generate_cb_stop, &cb_arg);
- }
- if (!gen_arg.result) {
- BN_free(e);
- RSA_free(rsa);
- if (cb_arg.state) rb_jump_tag(cb_arg.state);
- return 0;
- }
-
- BN_free(e);
- return rsa;
-#else
- return RSA_generate_key(size, exp, rb_block_given_p() ? ossl_generate_cb : NULL, NULL);
-#endif
+ return RSA_generate_key(size, exp,
+ rb_block_given_p() ? ossl_generate_cb : NULL,
+ NULL);
}
/*
@@ -168,7 +103,7 @@ ossl_rsa_s_generate(int argc, VALUE *argv, VALUE klass)
rb_scan_args(argc, argv, "11", &size, &exp);
- rsa = rsa_generate(NUM2INT(size), NIL_P(exp) ? RSA_F4 : NUM2ULONG(exp)); /* err handled by rsa_instance */
+ rsa = rsa_generate(NUM2INT(size), NIL_P(exp) ? RSA_F4 : NUM2INT(exp)); /* err handled by rsa_instance */
obj = rsa_instance(klass, rsa);
if (obj == Qfalse) {
@@ -213,7 +148,7 @@ ossl_rsa_initialize(int argc, VALUE *argv, VALUE self)
rsa = RSA_new();
}
else if (FIXNUM_P(arg)) {
- rsa = rsa_generate(FIX2INT(arg), NIL_P(pass) ? RSA_F4 : NUM2ULONG(pass));
+ rsa = rsa_generate(FIX2INT(arg), NIL_P(pass) ? RSA_F4 : NUM2INT(pass));
if (!rsa) ossl_raise(eRSAError, NULL);
}
else {
@@ -243,7 +178,7 @@ ossl_rsa_initialize(int argc, VALUE *argv, VALUE self)
}
BIO_free(in);
if (!rsa) {
- ossl_raise(eRSAError, "Neither PUB key nor PRIV key");
+ ossl_raise(eRSAError, "Neither PUB key nor PRIV key:");
}
}
if (!EVP_PKEY_assign_RSA(pkey, rsa)) {
@@ -314,10 +249,7 @@ ossl_rsa_export(int argc, VALUE *argv, VALUE self)
if (!NIL_P(cipher)) {
ciph = GetCipherPtr(cipher);
if (!NIL_P(pass)) {
- StringValue(pass);
- if (RSTRING_LENINT(pass) < OSSL_MIN_PWD_LEN)
- ossl_raise(eOSSLError, "OpenSSL requires passwords to be at least four characters long");
- passwd = RSTRING_PTR(pass);
+ passwd = StringValuePtr(pass);
}
}
if (!(out = BIO_new(BIO_s_mem()))) {
diff --git a/ext/openssl/ossl_ssl.c b/ext/openssl/ossl_ssl.c
index 8cc979895a..2b52bf07c3 100644
--- a/ext/openssl/ossl_ssl.c
+++ b/ext/openssl/ossl_ssl.c
@@ -29,51 +29,47 @@ VALUE eSSLError;
VALUE cSSLContext;
VALUE cSSLSocket;
-#define ossl_sslctx_set_cert(o,v) rb_iv_set((o),"@cert",(v))
-#define ossl_sslctx_set_key(o,v) rb_iv_set((o),"@key",(v))
-#define ossl_sslctx_set_client_ca(o,v) rb_iv_set((o),"@client_ca",(v))
-#define ossl_sslctx_set_ca_file(o,v) rb_iv_set((o),"@ca_file",(v))
-#define ossl_sslctx_set_ca_path(o,v) rb_iv_set((o),"@ca_path",(v))
-#define ossl_sslctx_set_timeout(o,v) rb_iv_set((o),"@timeout",(v))
-#define ossl_sslctx_set_verify_mode(o,v) rb_iv_set((o),"@verify_mode",(v))
-#define ossl_sslctx_set_verify_dep(o,v) rb_iv_set((o),"@verify_depth",(v))
-#define ossl_sslctx_set_verify_cb(o,v) rb_iv_set((o),"@verify_callback",(v))
-#define ossl_sslctx_set_options(o,v) rb_iv_set((o),"@options",(v))
-#define ossl_sslctx_set_cert_store(o,v) rb_iv_set((o),"@cert_store",(v))
-#define ossl_sslctx_set_extra_cert(o,v) rb_iv_set((o),"@extra_chain_cert",(v))
-#define ossl_sslctx_set_client_cert_cb(o,v) rb_iv_set((o),"@client_cert_cb",(v))
-#define ossl_sslctx_set_tmp_dh_cb(o,v) rb_iv_set((o),"@tmp_dh_callback",(v))
-#define ossl_sslctx_set_sess_id_ctx(o, v) rb_iv_set((o),"@session_id_context",(v))
-
-#define ossl_sslctx_get_cert(o) rb_iv_get((o),"@cert")
-#define ossl_sslctx_get_key(o) rb_iv_get((o),"@key")
-#define ossl_sslctx_get_client_ca(o) rb_iv_get((o),"@client_ca")
-#define ossl_sslctx_get_ca_file(o) rb_iv_get((o),"@ca_file")
-#define ossl_sslctx_get_ca_path(o) rb_iv_get((o),"@ca_path")
-#define ossl_sslctx_get_timeout(o) rb_iv_get((o),"@timeout")
-#define ossl_sslctx_get_verify_mode(o) rb_iv_get((o),"@verify_mode")
-#define ossl_sslctx_get_verify_dep(o) rb_iv_get((o),"@verify_depth")
-#define ossl_sslctx_get_verify_cb(o) rb_iv_get((o),"@verify_callback")
-#define ossl_sslctx_get_options(o) rb_iv_get((o),"@options")
-#define ossl_sslctx_get_cert_store(o) rb_iv_get((o),"@cert_store")
-#define ossl_sslctx_get_extra_cert(o) rb_iv_get((o),"@extra_chain_cert")
-#define ossl_sslctx_get_client_cert_cb(o) rb_iv_get((o),"@client_cert_cb")
-#define ossl_sslctx_get_tmp_dh_cb(o) rb_iv_get((o),"@tmp_dh_callback")
-#define ossl_sslctx_get_sess_id_ctx(o) rb_iv_get((o),"@session_id_context")
+#define ossl_sslctx_set_cert(o,v) rb_iv_set((o),"@cert",(v))
+#define ossl_sslctx_set_key(o,v) rb_iv_set((o),"@key",(v))
+#define ossl_sslctx_set_client_ca(o,v) rb_iv_set((o),"@client_ca",(v))
+#define ossl_sslctx_set_ca_file(o,v) rb_iv_set((o),"@ca_file",(v))
+#define ossl_sslctx_set_ca_path(o,v) rb_iv_set((o),"@ca_path",(v))
+#define ossl_sslctx_set_timeout(o,v) rb_iv_set((o),"@timeout",(v))
+#define ossl_sslctx_set_verify_mode(o,v) rb_iv_set((o),"@verify_mode",(v))
+#define ossl_sslctx_set_verify_dep(o,v) rb_iv_set((o),"@verify_depth",(v))
+#define ossl_sslctx_set_verify_cb(o,v) rb_iv_set((o),"@verify_callback",(v))
+#define ossl_sslctx_set_options(o,v) rb_iv_set((o),"@options",(v))
+#define ossl_sslctx_set_cert_store(o,v) rb_iv_set((o),"@cert_store",(v))
+#define ossl_sslctx_set_extra_cert(o,v) rb_iv_set((o),"@extra_chain_cert",(v))
+#define ossl_sslctx_set_client_cert_cb(o,v) rb_iv_set((o),"@client_cert_cb",(v))
+#define ossl_sslctx_set_tmp_dh_cb(o,v) rb_iv_set((o),"@tmp_dh_callback",(v))
+#define ossl_sslctx_set_sess_id_ctx(o, v) rb_iv_get((o),"@session_id_context"(v))
+
+#define ossl_sslctx_get_cert(o) rb_iv_get((o),"@cert")
+#define ossl_sslctx_get_key(o) rb_iv_get((o),"@key")
+#define ossl_sslctx_get_client_ca(o) rb_iv_get((o),"@client_ca")
+#define ossl_sslctx_get_ca_file(o) rb_iv_get((o),"@ca_file")
+#define ossl_sslctx_get_ca_path(o) rb_iv_get((o),"@ca_path")
+#define ossl_sslctx_get_timeout(o) rb_iv_get((o),"@timeout")
+#define ossl_sslctx_get_verify_mode(o) rb_iv_get((o),"@verify_mode")
+#define ossl_sslctx_get_verify_dep(o) rb_iv_get((o),"@verify_depth")
+#define ossl_sslctx_get_verify_cb(o) rb_iv_get((o),"@verify_callback")
+#define ossl_sslctx_get_options(o) rb_iv_get((o),"@options")
+#define ossl_sslctx_get_cert_store(o) rb_iv_get((o),"@cert_store")
+#define ossl_sslctx_get_extra_cert(o) rb_iv_get((o),"@extra_chain_cert")
+#define ossl_sslctx_get_client_cert_cb(o) rb_iv_get((o),"@client_cert_cb")
+#define ossl_sslctx_get_tmp_dh_cb(o) rb_iv_get((o),"@tmp_dh_callback")
+#define ossl_sslctx_get_sess_id_ctx(o) rb_iv_get((o),"@session_id_context")
static const char *ossl_sslctx_attrs[] = {
"cert", "key", "client_ca", "ca_file", "ca_path",
- "timeout", "verify_mode", "verify_depth", "renegotiation_cb",
+ "timeout", "verify_mode", "verify_depth",
"verify_callback", "options", "cert_store", "extra_chain_cert",
"client_cert_cb", "tmp_dh_callback", "session_id_context",
"session_get_cb", "session_new_cb", "session_remove_cb",
#ifdef HAVE_SSL_SET_TLSEXT_HOST_NAME
"servername_cb",
#endif
-#ifdef HAVE_OPENSSL_NPN_NEGOTIATED
- "npn_protocols",
- "npn_select_cb",
-#endif
};
#define ossl_ssl_get_io(o) rb_iv_get((o),"@io")
@@ -111,18 +107,6 @@ struct {
OSSL_SSL_METHOD_ENTRY(TLSv1),
OSSL_SSL_METHOD_ENTRY(TLSv1_server),
OSSL_SSL_METHOD_ENTRY(TLSv1_client),
-#if defined(HAVE_TLSV1_2_METHOD) && defined(HAVE_TLSV1_2_SERVER_METHOD) && \
- defined(HAVE_TLSV1_2_CLIENT_METHOD)
- OSSL_SSL_METHOD_ENTRY(TLSv1_2),
- OSSL_SSL_METHOD_ENTRY(TLSv1_2_server),
- OSSL_SSL_METHOD_ENTRY(TLSv1_2_client),
-#endif
-#if defined(HAVE_TLSV1_1_METHOD) && defined(HAVE_TLSV1_1_SERVER_METHOD) && \
- defined(HAVE_TLSV1_1_CLIENT_METHOD)
- OSSL_SSL_METHOD_ENTRY(TLSv1_1),
- OSSL_SSL_METHOD_ENTRY(TLSv1_1_server),
- OSSL_SSL_METHOD_ENTRY(TLSv1_1_client),
-#endif
#if defined(HAVE_SSLV2_METHOD) && defined(HAVE_SSLV2_SERVER_METHOD) && \
defined(HAVE_SSLV2_CLIENT_METHOD)
OSSL_SSL_METHOD_ENTRY(SSLv2),
@@ -164,7 +148,7 @@ ossl_sslctx_s_alloc(VALUE klass)
ctx = SSL_CTX_new(SSLv23_method());
if (!ctx) {
- ossl_raise(eSSLError, "SSL_CTX_new");
+ ossl_raise(eSSLError, "SSL_CTX_new:");
}
SSL_CTX_set_mode(ctx, mode);
return Data_Wrap_Struct(klass, 0, ossl_sslctx_free, ctx);
@@ -200,7 +184,7 @@ ossl_sslctx_set_ssl_version(VALUE self, VALUE ssl_method)
}
Data_Get_Struct(self, SSL_CTX, ctx);
if (SSL_CTX_set_ssl_version(ctx, method) != 1) {
- ossl_raise(eSSLError, "SSL_CTX_set_ssl_version");
+ ossl_raise(eSSLError, "SSL_CTX_set_ssl_version:");
}
return ssl_method;
@@ -395,7 +379,7 @@ ossl_call_session_new_cb(VALUE ary)
static int
ossl_sslctx_session_new_cb(SSL *ssl, SSL_SESSION *sess)
{
- VALUE ary, ssl_obj, sess_obj;
+ VALUE ary, ssl_obj, sess_obj, ret_obj;
void *ptr;
int state = 0;
@@ -412,7 +396,7 @@ ossl_sslctx_session_new_cb(SSL *ssl, SSL_SESSION *sess)
rb_ary_push(ary, ssl_obj);
rb_ary_push(ary, sess_obj);
- rb_protect((VALUE(*)_((VALUE)))ossl_call_session_new_cb, ary, &state);
+ ret_obj = rb_protect((VALUE(*)_((VALUE)))ossl_call_session_new_cb, ary, &state);
if (state) {
rb_ivar_set(ssl_obj, ID_callback_state, INT2NUM(state));
}
@@ -444,7 +428,7 @@ ossl_call_session_remove_cb(VALUE ary)
static void
ossl_sslctx_session_remove_cb(SSL_CTX *ctx, SSL_SESSION *sess)
{
- VALUE ary, sslctx_obj, sess_obj;
+ VALUE ary, sslctx_obj, sess_obj, ret_obj;
void *ptr;
int state = 0;
@@ -461,7 +445,7 @@ ossl_sslctx_session_remove_cb(SSL_CTX *ctx, SSL_SESSION *sess)
rb_ary_push(ary, sslctx_obj);
rb_ary_push(ary, sess_obj);
- rb_protect((VALUE(*)_((VALUE)))ossl_call_session_remove_cb, ary, &state);
+ ret_obj = rb_protect((VALUE(*)_((VALUE)))ossl_call_session_remove_cb, ary, &state);
if (state) {
/*
the SSL_CTX is frozen, nowhere to save state.
@@ -521,7 +505,7 @@ ossl_call_servername_cb(VALUE ary)
static int
ssl_servername_cb(SSL *ssl, int *ad, void *arg)
{
- VALUE ary, ssl_obj;
+ VALUE ary, ssl_obj, ret_obj;
void *ptr;
int state = 0;
const char *servername = SSL_get_servername(ssl, TLSEXT_NAMETYPE_host_name);
@@ -536,7 +520,7 @@ ssl_servername_cb(SSL *ssl, int *ad, void *arg)
rb_ary_push(ary, ssl_obj);
rb_ary_push(ary, rb_str_new2(servername));
- rb_protect((VALUE(*)_((VALUE)))ossl_call_servername_cb, ary, &state);
+ ret_obj = rb_protect((VALUE(*)_((VALUE)))ossl_call_servername_cb, ary, &state);
if (state) {
rb_ivar_set(ssl_obj, ID_callback_state, INT2NUM(state));
return SSL_TLSEXT_ERR_ALERT_FATAL;
@@ -546,99 +530,6 @@ ssl_servername_cb(SSL *ssl, int *ad, void *arg)
}
#endif
-static void
-ssl_renegotiation_cb(const SSL *ssl)
-{
- VALUE ssl_obj, sslctx_obj, cb;
- void *ptr;
-
- if ((ptr = SSL_get_ex_data(ssl, ossl_ssl_ex_ptr_idx)) == NULL)
- ossl_raise(eSSLError, "SSL object could not be retrieved");
- ssl_obj = (VALUE)ptr;
-
- sslctx_obj = rb_iv_get(ssl_obj, "@context");
- if (NIL_P(sslctx_obj)) return;
- cb = rb_iv_get(sslctx_obj, "@renegotiation_cb");
- if (NIL_P(cb)) return;
-
- (void) rb_funcall(cb, rb_intern("call"), 1, ssl_obj);
-}
-
-#ifdef HAVE_OPENSSL_NPN_NEGOTIATED
-static VALUE
-ssl_npn_encode_protocol_i(VALUE cur, VALUE encoded)
-{
- int len = RSTRING_LENINT(cur);
- char len_byte;
- if (len < 1 || len > 255)
- ossl_raise(eSSLError, "Advertised protocol must have length 1..255");
- /* Encode the length byte */
- len_byte = len;
- rb_str_buf_cat(encoded, &len_byte, 1);
- rb_str_buf_cat(encoded, RSTRING_PTR(cur), len);
- return Qnil;
-}
-
-static void
-ssl_npn_encode_protocols(VALUE sslctx, VALUE protocols)
-{
- VALUE encoded = rb_str_new2("");
- rb_iterate(rb_each, protocols, ssl_npn_encode_protocol_i, encoded);
- StringValueCStr(encoded);
- rb_iv_set(sslctx, "@_protocols", encoded);
-}
-
-static int
-ssl_npn_advertise_cb(SSL *ssl, const unsigned char **out, unsigned int *outlen, void *arg)
-{
- VALUE sslctx_obj = (VALUE) arg;
- VALUE protocols = rb_iv_get(sslctx_obj, "@_protocols");
-
- *out = (const unsigned char *) RSTRING_PTR(protocols);
- *outlen = RSTRING_LENINT(protocols);
-
- return SSL_TLSEXT_ERR_OK;
-}
-
-static int
-ssl_npn_select_cb(SSL *s, unsigned char **out, unsigned char *outlen, const unsigned char *in, unsigned int inlen, void *arg)
-{
- int i = 0;
- VALUE sslctx_obj, cb, protocols, selected;
-
- sslctx_obj = (VALUE) arg;
- cb = rb_iv_get(sslctx_obj, "@npn_select_cb");
- protocols = rb_ary_new();
-
- /* The format is len_1|proto_1|...|len_n|proto_n\0 */
- while (in[i]) {
- VALUE protocol = rb_str_new((const char *) &in[i + 1], in[i]);
- rb_ary_push(protocols, protocol);
- i += in[i] + 1;
- }
-
- selected = rb_funcall(cb, rb_intern("call"), 1, protocols);
- StringValue(selected);
- *out = (unsigned char *) StringValuePtr(selected);
- *outlen = RSTRING_LENINT(selected);
-
- return SSL_TLSEXT_ERR_OK;
-}
-#endif
-
-/* This function may serve as the entry point to support further
- * callbacks. */
-static void
-ssl_info_cb(const SSL *ssl, int where, int val)
-{
- int state = SSL_state(ssl);
-
- if ((where & SSL_CB_HANDSHAKE_START) &&
- (state & SSL_ST_ACCEPT)) {
- ssl_renegotiation_cb(ssl);
- }
-}
-
/*
* call-seq:
* ctx.setup => Qtrue # first time
@@ -698,14 +589,14 @@ ossl_sslctx_setup(VALUE self)
if (cert && key) {
if (!SSL_CTX_use_certificate(ctx, cert)) {
/* Adds a ref => Safe to FREE */
- ossl_raise(eSSLError, "SSL_CTX_use_certificate");
+ ossl_raise(eSSLError, "SSL_CTX_use_certificate:");
}
if (!SSL_CTX_use_PrivateKey(ctx, key)) {
/* Adds a ref => Safe to FREE */
- ossl_raise(eSSLError, "SSL_CTX_use_PrivateKey");
+ ossl_raise(eSSLError, "SSL_CTX_use_PrivateKey:");
}
if (!SSL_CTX_check_private_key(ctx)) {
- ossl_raise(eSSLError, "SSL_CTX_check_private_key");
+ ossl_raise(eSSLError, "SSL_CTX_check_private_key:");
}
}
@@ -752,24 +643,11 @@ ossl_sslctx_setup(VALUE self)
val = ossl_sslctx_get_options(self);
if(!NIL_P(val)) {
- SSL_CTX_set_options(ctx, NUM2LONG(val));
- } else {
- SSL_CTX_set_options(ctx, SSL_OP_ALL);
- }
-
-#ifdef HAVE_OPENSSL_NPN_NEGOTIATED
- val = rb_iv_get(self, "@npn_protocols");
- if (!NIL_P(val)) {
- ssl_npn_encode_protocols(self, val);
- SSL_CTX_set_next_protos_advertised_cb(ctx, ssl_npn_advertise_cb, (void *) self);
- OSSL_Debug("SSL NPN advertise callback added");
+ SSL_CTX_set_options(ctx, NUM2LONG(val));
}
- if (RTEST(rb_iv_get(self, "@npn_select_cb"))) {
- SSL_CTX_set_next_proto_select_cb(ctx, ssl_npn_select_cb, (void *) self);
- OSSL_Debug("SSL NPN select callback added");
+ else {
+ SSL_CTX_set_options(ctx, SSL_OP_ALL);
}
-#endif
-
rb_obj_freeze(self);
val = ossl_sslctx_get_sess_id_ctx(self);
@@ -777,7 +655,7 @@ ossl_sslctx_setup(VALUE self)
StringValue(val);
if (!SSL_CTX_set_session_id_context(ctx, (unsigned char *)RSTRING_PTR(val),
RSTRING_LENINT(val))){
- ossl_raise(eSSLError, "SSL_CTX_set_session_id_context");
+ ossl_raise(eSSLError, "SSL_CTX_set_session_id_context:");
}
}
@@ -897,12 +775,13 @@ ossl_sslctx_set_ciphers(VALUE self, VALUE v)
return Qnil;
}
if (!SSL_CTX_set_cipher_list(ctx, RSTRING_PTR(str))) {
- ossl_raise(eSSLError, "SSL_CTX_set_cipher_list");
+ ossl_raise(eSSLError, "SSL_CTX_set_cipher_list:");
}
return v;
}
+
/*
* call-seq:
* ctx.session_add(session) -> true | false
@@ -1108,14 +987,15 @@ ossl_ssl_shutdown(SSL *ssl)
if (rc = SSL_shutdown(ssl))
break;
}
- SSL_clear(ssl);
ERR_clear_error();
+ SSL_clear(ssl);
}
}
static void
ossl_ssl_free(SSL *ssl)
{
+ ossl_ssl_shutdown(ssl);
SSL_free(ssl);
}
@@ -1182,14 +1062,14 @@ ossl_ssl_setup(VALUE self)
ssl = SSL_new(ctx);
if (!ssl) {
- ossl_raise(eSSLError, "SSL_new");
+ ossl_raise(eSSLError, "SSL_new:");
}
DATA_PTR(self) = ssl;
#ifdef HAVE_SSL_SET_TLSEXT_HOST_NAME
if (!NIL_P(hostname)) {
if (SSL_set_tlsext_host_name(ssl, StringValuePtr(hostname)) != 1)
- ossl_raise(eSSLError, "SSL_set_tlsext_host_name");
+ ossl_raise(eSSLError, "SSL_set_tlsext_host_name:");
}
#endif
io = ossl_ssl_get_io(self);
@@ -1204,7 +1084,6 @@ ossl_ssl_setup(VALUE self)
SSL_set_ex_data(ssl, ossl_ssl_ex_client_cert_cb_idx, (void*)cb);
cb = ossl_sslctx_get_tmp_dh_cb(v_ctx);
SSL_set_ex_data(ssl, ossl_ssl_ex_tmp_dh_callback_idx, (void*)cb);
- SSL_set_info_callback(ssl, ssl_info_cb);
}
return Qtrue;
@@ -1216,15 +1095,6 @@ ossl_ssl_setup(VALUE self)
#define ssl_get_error(ssl, ret) SSL_get_error((ssl), (ret))
#endif
-#define ossl_ssl_data_get_struct(v, ssl) \
-do { \
- Data_Get_Struct((v), SSL, (ssl)); \
- if (!(ssl)) { \
- rb_warning("SSL session is not started yet."); \
- return Qnil; \
- } \
-} while (0)
-
static void
write_would_block(int nonblock)
{
@@ -1255,8 +1125,7 @@ ossl_start_ssl(VALUE self, int (*func)(), const char *funcname, int nonblock)
rb_ivar_set(self, ID_callback_state, Qnil);
- ossl_ssl_data_get_struct(self, ssl);
-
+ Data_Get_Struct(self, SSL, ssl);
GetOpenFile(ossl_ssl_get_io(self), fptr);
for(;;){
ret = func(ssl);
@@ -1408,7 +1277,7 @@ ossl_ssl_read_internal(int argc, VALUE *argv, VALUE self, int nonblock)
if(ERR_peek_error() == 0 && nread == 0) rb_eof_error();
rb_sys_fail(0);
default:
- ossl_raise(eSSLError, "SSL_read");
+ ossl_raise(eSSLError, "SSL_read:");
}
}
}
@@ -1425,6 +1294,7 @@ ossl_ssl_read_internal(int argc, VALUE *argv, VALUE self, int nonblock)
return str;
}
+
/*
* call-seq:
* ssl.sysread(length) => string
@@ -1484,7 +1354,7 @@ ossl_ssl_write_internal(VALUE self, VALUE str, int nonblock)
case SSL_ERROR_SYSCALL:
if (errno) rb_sys_fail(0);
default:
- ossl_raise(eSSLError, "SSL_write");
+ ossl_raise(eSSLError, "SSL_write:");
}
}
}
@@ -1534,18 +1404,10 @@ ossl_ssl_close(VALUE self)
{
SSL *ssl;
- ossl_ssl_data_get_struct(self, ssl);
-
- if (ssl) {
- VALUE io = ossl_ssl_get_io(self);
- if (!RTEST(rb_funcall(io, rb_intern("closed?"), 0))) {
- ossl_ssl_shutdown(ssl);
- SSL_free(ssl);
- DATA_PTR(self) = NULL;
- if (RTEST(ossl_ssl_get_sync_close(self)))
- rb_funcall(io, rb_intern("close"), 0);
- }
- }
+ Data_Get_Struct(self, SSL, ssl);
+ ossl_ssl_shutdown(ssl);
+ if (RTEST(ossl_ssl_get_sync_close(self)))
+ rb_funcall(ossl_ssl_get_io(self), rb_intern("close"), 0);
return Qnil;
}
@@ -1562,7 +1424,11 @@ ossl_ssl_get_cert(VALUE self)
SSL *ssl;
X509 *cert = NULL;
- ossl_ssl_data_get_struct(self, ssl);
+ Data_Get_Struct(self, SSL, ssl);
+ if (!ssl) {
+ rb_warning("SSL session is not started yet.");
+ return Qnil;
+ }
/*
* Is this OpenSSL bug? Should add a ref?
@@ -1589,7 +1455,12 @@ ossl_ssl_get_peer_cert(VALUE self)
X509 *cert = NULL;
VALUE obj;
- ossl_ssl_data_get_struct(self, ssl);
+ Data_Get_Struct(self, SSL, ssl);
+
+ if (!ssl){
+ rb_warning("SSL session is not started yet.");
+ return Qnil;
+ }
cert = SSL_get_peer_certificate(ssl); /* Adds a ref => Safe to FREE. */
@@ -1617,8 +1488,11 @@ ossl_ssl_get_peer_cert_chain(VALUE self)
VALUE ary;
int i, num;
- ossl_ssl_data_get_struct(self, ssl);
-
+ Data_Get_Struct(self, SSL, ssl);
+ if(!ssl){
+ rb_warning("SSL session is not started yet.");
+ return Qnil;
+ }
chain = SSL_get_peer_cert_chain(ssl);
if(!chain) return Qnil;
num = sk_X509_num(chain);
@@ -1632,36 +1506,22 @@ ossl_ssl_get_peer_cert_chain(VALUE self)
}
/*
-* call-seq:
-* ssl.version => String
-*
-* Returns a String representing the SSL/TLS version that was negotiated
-* for the connection, for example "TLSv1.2".
-*/
-static VALUE
-ossl_ssl_get_version(VALUE self)
-{
- SSL *ssl;
-
- ossl_ssl_data_get_struct(self, ssl);
-
- return rb_str_new2(SSL_get_version(ssl));
-}
-
-/*
-* call-seq:
-* ssl.cipher => [name, version, bits, alg_bits]
-*
-* The cipher being used for the current connection
-*/
+ * call-seq:
+ * ssl.cipher => [name, version, bits, alg_bits]
+ *
+ * The cipher being used for the current connection
+ */
static VALUE
ossl_ssl_get_cipher(VALUE self)
{
SSL *ssl;
SSL_CIPHER *cipher;
- ossl_ssl_data_get_struct(self, ssl);
-
+ Data_Get_Struct(self, SSL, ssl);
+ if (!ssl) {
+ rb_warning("SSL session is not started yet.");
+ return Qnil;
+ }
cipher = (SSL_CIPHER *)SSL_get_current_cipher(ssl);
return ossl_ssl_cipher_to_ary(cipher);
@@ -1679,8 +1539,11 @@ ossl_ssl_get_state(VALUE self)
SSL *ssl;
VALUE ret;
- ossl_ssl_data_get_struct(self, ssl);
-
+ Data_Get_Struct(self, SSL, ssl);
+ if (!ssl) {
+ rb_warning("SSL session is not started yet.");
+ return Qnil;
+ }
ret = rb_str_new2(SSL_state_string(ssl));
if (ruby_verbose) {
rb_str_cat2(ret, ": ");
@@ -1700,7 +1563,11 @@ ossl_ssl_pending(VALUE self)
{
SSL *ssl;
- ossl_ssl_data_get_struct(self, ssl);
+ Data_Get_Struct(self, SSL, ssl);
+ if (!ssl) {
+ rb_warning("SSL session is not started yet.");
+ return Qnil;
+ }
return INT2NUM(SSL_pending(ssl));
}
@@ -1716,15 +1583,17 @@ ossl_ssl_session_reused(VALUE self)
{
SSL *ssl;
- ossl_ssl_data_get_struct(self, ssl);
+ Data_Get_Struct(self, SSL, ssl);
+ if (!ssl) {
+ rb_warning("SSL session is not started yet.");
+ return Qnil;
+ }
switch(SSL_session_reused(ssl)) {
case 1: return Qtrue;
case 0: return Qfalse;
default: ossl_raise(eSSLError, "SSL_session_reused");
}
-
- UNREACHABLE;
}
/*
@@ -1742,7 +1611,11 @@ ossl_ssl_set_session(VALUE self, VALUE arg1)
/* why is ossl_ssl_setup delayed? */
ossl_ssl_setup(self);
- ossl_ssl_data_get_struct(self, ssl);
+ Data_Get_Struct(self, SSL, ssl);
+ if (!ssl) {
+ rb_warning("SSL session is not started yet.");
+ return Qnil;
+ }
SafeGetSSLSession(arg1, sess);
@@ -1766,7 +1639,11 @@ ossl_ssl_get_verify_result(VALUE self)
{
SSL *ssl;
- ossl_ssl_data_get_struct(self, ssl);
+ Data_Get_Struct(self, SSL, ssl);
+ if (!ssl) {
+ rb_warning("SSL session is not started yet.");
+ return Qnil;
+ }
return INT2FIX(SSL_get_verify_result(ssl));
}
@@ -1788,37 +1665,16 @@ ossl_ssl_get_client_ca_list(VALUE self)
SSL *ssl;
STACK_OF(X509_NAME) *ca;
- ossl_ssl_data_get_struct(self, ssl);
+ Data_Get_Struct(self, SSL, ssl);
+ if (!ssl) {
+ rb_warning("SSL session is not started yet.");
+ return Qnil;
+ }
ca = SSL_get_client_CA_list(ssl);
return ossl_x509name_sk2ary(ca);
}
-#ifdef HAVE_OPENSSL_NPN_NEGOTIATED
-/*
- * call-seq:
- * ssl.npn_protocol => String
- *
- * Returns the protocol string that was finally selected by the client
- * during the handshake.
- */
-static VALUE
-ossl_ssl_npn_protocol(VALUE self)
-{
- SSL *ssl;
- const unsigned char *out;
- unsigned int outlen;
-
- ossl_ssl_data_get_struct(self, ssl);
-
- SSL_get0_next_proto_negotiated(ssl, &out, &outlen);
- if (!outlen)
- return Qnil;
- else
- return rb_str_new((const char *) out, outlen);
-}
-#endif
-
void
Init_ossl_ssl()
{
@@ -1839,18 +1695,7 @@ Init_ossl_ssl()
ossl_ssl_ex_tmp_dh_callback_idx =
SSL_get_ex_new_index(0,(void *)"ossl_ssl_ex_tmp_dh_callback_idx",0,0,0);
- /* Document-module: OpenSSL::SSL
- *
- * Use SSLContext to set up the parameters for a TLS (former SSL)
- * connection. Both client and server TLS connections are supported,
- * SSLSocket and SSLServer may be used in conjunction with an instance
- * of SSLContext to set up connections.
- */
mSSL = rb_define_module_under(mOSSL, "SSL");
- /* Document-class: OpenSSL::SSL::SSLError
- *
- * Generic error class raised by SSLSocket and SSLContext.
- */
eSSLError = rb_define_class_under(mSSL, "SSLError", eOSSLError);
Init_ossl_ssl_session();
@@ -2009,59 +1854,6 @@ Init_ossl_ssl()
*/
rb_attr(cSSLContext, rb_intern("servername_cb"), 1, 1, Qfalse);
#endif
- /*
- * A callback invoked whenever a new handshake is initiated. May be used
- * to disable renegotiation entirely.
- *
- * The callback is invoked with the active SSLSocket. The callback's
- * return value is irrelevant, normal return indicates "approval" of the
- * renegotiation and will continue the process. To forbid renegotiation
- * and to cancel the process, an Error may be raised within the callback.
- *
- * === Disable client renegotiation
- *
- * When running a server, it is often desirable to disable client
- * renegotiation entirely. You may use a callback as follows to implement
- * this feature:
- *
- * num_handshakes = 0
- * ctx.renegotiation_cb = lambda do |ssl|
- * num_handshakes += 1
- * raise RuntimeError.new("Client renegotiation disabled") if num_handshakes > 1
- * end
- */
- rb_attr(cSSLContext, rb_intern("renegotiation_cb"), 1, 1, Qfalse);
-#ifdef HAVE_OPENSSL_NPN_NEGOTIATED
- /*
- * An Enumerable of Strings. Each String represents a protocol to be
- * advertised as the list of supported protocols for Next Protocol
- * Negotiation. Supported in OpenSSL 1.0.1 and higher. Has no effect
- * on the client side. If not set explicitly, the NPN extension will
- * not be sent by the server in the handshake.
- *
- * === Example
- *
- * ctx.npn_protocols = ["http/1.1", "spdy/2"]
- */
- rb_attr(cSSLContext, rb_intern("npn_protocols"), 1, 1, Qfalse);
- /*
- * A callback invoked on the client side when the client needs to select
- * a protocol from the list sent by the server. Supported in OpenSSL 1.0.1
- * and higher. The client MUST select a protocol of those advertised by
- * the server. If none is acceptable, raising an error in the callback
- * will cause the handshake to fail. Not setting this callback explicitly
- * means not supporting the NPN extension on the client - any protocols
- * advertised by the server will be ignored.
- *
- * === Example
- *
- * ctx.npn_select_cb = lambda do |protocols|
- * #inspect the protocols and select one
- * protocols.first
- * end
- */
- rb_attr(cSSLContext, rb_intern("npn_select_cb"), 1, 1, Qfalse);
-#endif
rb_define_alias(cSSLContext, "ssl_timeout", "timeout");
rb_define_alias(cSSLContext, "ssl_timeout=", "timeout=");
@@ -2072,6 +1864,7 @@ Init_ossl_ssl()
rb_define_method(cSSLContext, "setup", ossl_sslctx_setup, 0);
+
/*
* No session caching for client or server
*/
@@ -2093,7 +1886,7 @@ Init_ossl_ssl()
rb_define_const(cSSLContext, "SESSION_CACHE_BOTH", LONG2FIX(SSL_SESS_CACHE_BOTH)); /* no different than CACHE_SERVER in 0.9.8e */
/*
- * Normally the session cache is checked for expired sessions every 255
+ * Normally the sesison cache is checked for expired sessions every 255
* connections. Since this may lead to a delay that cannot be controlled,
* the automatic flushing may be disabled and #flush_sessions can be
* called explicitly.
@@ -2163,18 +1956,13 @@ Init_ossl_ssl()
rb_define_method(cSSLSocket, "cert", ossl_ssl_get_cert, 0);
rb_define_method(cSSLSocket, "peer_cert", ossl_ssl_get_peer_cert, 0);
rb_define_method(cSSLSocket, "peer_cert_chain", ossl_ssl_get_peer_cert_chain, 0);
- rb_define_method(cSSLSocket, "ssl_version", ossl_ssl_get_version, 0);
rb_define_method(cSSLSocket, "cipher", ossl_ssl_get_cipher, 0);
rb_define_method(cSSLSocket, "state", ossl_ssl_get_state, 0);
rb_define_method(cSSLSocket, "pending", ossl_ssl_pending, 0);
rb_define_method(cSSLSocket, "session_reused?", ossl_ssl_session_reused, 0);
- /* implementation of OpenSSL::SSL::SSLSocket#session is in lib/openssl/ssl.rb */
rb_define_method(cSSLSocket, "session=", ossl_ssl_set_session, 1);
rb_define_method(cSSLSocket, "verify_result", ossl_ssl_get_verify_result, 0);
rb_define_method(cSSLSocket, "client_ca", ossl_ssl_get_client_ca_list, 0);
-#ifdef HAVE_OPENSSL_NPN_NEGOTIATED
- rb_define_method(cSSLSocket, "npn_protocol", ossl_ssl_npn_protocol, 0);
-#endif
#define ossl_ssl_def_const(x) rb_define_const(mSSL, #x, INT2NUM(SSL_##x))
@@ -2183,7 +1971,7 @@ Init_ossl_ssl()
ossl_ssl_def_const(VERIFY_FAIL_IF_NO_PEER_CERT);
ossl_ssl_def_const(VERIFY_CLIENT_ONCE);
/* Introduce constants included in OP_ALL. These constants are mostly for
- * unset some bits in OP_ALL such as;
+ * unset some bits in OP_ALL such as:
* ctx.options = OP_ALL & ~OP_DONT_INSERT_EMPTY_FRAGMENTS
*/
ossl_ssl_def_const(OP_MICROSOFT_SESS_ID_BUG);
@@ -2191,9 +1979,7 @@ Init_ossl_ssl()
ossl_ssl_def_const(OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG);
ossl_ssl_def_const(OP_SSLREF2_REUSE_CERT_TYPE_BUG);
ossl_ssl_def_const(OP_MICROSOFT_BIG_SSLV3_BUFFER);
-#if defined(SSL_OP_MSIE_SSLV2_RSA_PADDING)
ossl_ssl_def_const(OP_MSIE_SSLV2_RSA_PADDING);
-#endif
ossl_ssl_def_const(OP_SSLEAY_080_CLIENT_DH_BUG);
ossl_ssl_def_const(OP_TLS_D5_BUG);
ossl_ssl_def_const(OP_TLS_BLOCK_PADDING_BUG);
@@ -2214,12 +2000,6 @@ Init_ossl_ssl()
ossl_ssl_def_const(OP_NO_SSLv2);
ossl_ssl_def_const(OP_NO_SSLv3);
ossl_ssl_def_const(OP_NO_TLSv1);
-#if defined(SSL_OP_NO_TLSv1_1)
- ossl_ssl_def_const(OP_NO_TLSv1_1);
-#endif
-#if defined(SSL_OP_NO_TLSv1_2)
- ossl_ssl_def_const(OP_NO_TLSv1_2);
-#endif
#if defined(SSL_OP_NO_TICKET)
ossl_ssl_def_const(OP_NO_TICKET);
#endif
diff --git a/ext/openssl/ossl_x509cert.c b/ext/openssl/ossl_x509cert.c
index 85bbc0d081..f5b2f4ff4a 100644
--- a/ext/openssl/ossl_x509cert.c
+++ b/ext/openssl/ossl_x509cert.c
@@ -66,7 +66,6 @@ ossl_x509_new_from_file(VALUE filename)
if (!(fp = fopen(RSTRING_PTR(filename), "r"))) {
ossl_raise(eX509CertError, "%s", strerror(errno));
}
- rb_fd_fix_cloexec(fileno(fp));
x509 = PEM_read_X509(fp, NULL, NULL, NULL);
/*
* prepare for DER...
@@ -693,15 +692,35 @@ ossl_x509_add_extension(VALUE self, VALUE extension)
static VALUE
ossl_x509_inspect(VALUE self)
{
- return rb_sprintf("#<%"PRIsVALUE": subject=%+"PRIsVALUE", "
- "issuer=%+"PRIsVALUE", serial=%+"PRIsVALUE", "
- "not_before=%+"PRIsVALUE", not_after=%+"PRIsVALUE">",
- rb_obj_class(self),
- ossl_x509_get_subject(self),
- ossl_x509_get_issuer(self),
- ossl_x509_get_serial(self),
- ossl_x509_get_not_before(self),
- ossl_x509_get_not_after(self));
+ VALUE str;
+ const char *cname = rb_class2name(rb_obj_class(self));
+
+ str = rb_str_new2("#<");
+ rb_str_cat2(str, cname);
+ rb_str_cat2(str, " ");
+
+ rb_str_cat2(str, "subject=");
+ rb_str_append(str, rb_inspect(ossl_x509_get_subject(self)));
+ rb_str_cat2(str, ", ");
+
+ rb_str_cat2(str, "issuer=");
+ rb_str_append(str, rb_inspect(ossl_x509_get_issuer(self)));
+ rb_str_cat2(str, ", ");
+
+ rb_str_cat2(str, "serial=");
+ rb_str_append(str, rb_inspect(ossl_x509_get_serial(self)));
+ rb_str_cat2(str, ", ");
+
+ rb_str_cat2(str, "not_before=");
+ rb_str_append(str, rb_inspect(ossl_x509_get_not_before(self)));
+ rb_str_cat2(str, ", ");
+
+ rb_str_cat2(str, "not_after=");
+ rb_str_append(str, rb_inspect(ossl_x509_get_not_after(self)));
+
+ str = rb_str_cat2(str, ">");
+
+ return str;
}
/*
@@ -810,6 +829,9 @@ Init_ossl_x509cert()
* cert.sign(root_key, OpenSSL::Digest::SHA256.new)
*
*/
+
+ eX509CertError = rb_define_class_under(mX509, "CertificateError", eOSSLError);
+
cX509Cert = rb_define_class_under(mX509, "Certificate", rb_cObject);
rb_define_alloc_func(cX509Cert, ossl_x509_alloc);
diff --git a/ext/openssl/ossl_x509name.c b/ext/openssl/ossl_x509name.c
index 4b397055ab..a8f288f4a5 100644
--- a/ext/openssl/ossl_x509name.c
+++ b/ext/openssl/ossl_x509name.c
@@ -111,23 +111,10 @@ ossl_x509name_init_i(VALUE i, VALUE args)
/*
* call-seq:
- * X509::Name.new => name
- * X509::Name.new(der) => name
- * X509::Name.new(distinguished_name) => name
- * X509::Name.new(distinguished_name, template) => name
- *
- * Creates a new Name.
- *
- * A name may be created from a DER encoded string +der+, an Array
- * representing a +distinguished_name+ or a +distinguished_name+ along with a
- * +template+.
- *
- * name = OpenSSL::X509::Name.new [['CN', 'nobody'], ['DC', 'example']]
- *
- * name = OpenSSL::X509::Name.new name.to_der
- *
- * See add_entry for a description of the +distinguished_name+ Array's
- * contents
+ * X509::Name.new => name
+ * X509::Name.new(string) => name
+ * X509::Name.new(dn) => name
+ * X509::Name.new(dn, template) => name
*/
static VALUE
ossl_x509name_initialize(int argc, VALUE *argv, VALUE self)
@@ -167,16 +154,6 @@ ossl_x509name_initialize(int argc, VALUE *argv, VALUE self)
/*
* call-seq:
* name.add_entry(oid, value [, type]) => self
- *
- * Adds a new entry with the given +oid+ and +value+ to this name. The +oid+
- * is an object identifier defined in ASN.1. Some common OIDs are:
- *
- * C:: Country Name
- * CN:: Common Name
- * DC:: Domain Component
- * O:: Organization Name
- * OU:: Organizational Unit Name
- * ST:: State or Province Name
*/
static
VALUE ossl_x509name_add_entry(int argc, VALUE *argv, VALUE self)
@@ -215,14 +192,7 @@ ossl_x509name_to_s_old(VALUE self)
/*
* call-seq:
* name.to_s => string
- * name.to_s(flags) => string
- *
- * Returns this name as a Distinguished Name string. +flags+ may be one of:
- *
- * * OpenSSL::X509::Name::COMPAT
- * * OpenSSL::X509::Name::RFC2253
- * * OpenSSL::X509::Name::ONELINE
- * * OpenSSL::X509::Name::MULTILINE
+ * name.to_s(integer) => string
*/
static VALUE
ossl_x509name_to_s(int argc, VALUE *argv, VALUE self)
@@ -251,9 +221,6 @@ ossl_x509name_to_s(int argc, VALUE *argv, VALUE self)
/*
* call-seq:
* name.to_a => [[name, data, type], ...]
- *
- * Returns an Array representation of the distinguished name suitable for
- * passing to ::new
*/
static VALUE
ossl_x509name_to_a(VALUE self)
@@ -326,12 +293,6 @@ ossl_x509name_cmp(VALUE self, VALUE other)
return INT2FIX(0);
}
-/*
- * call-seq:
- * name.eql? other => boolean
- *
- * Returns true if +name+ and +other+ refer to the same hash key.
- */
static VALUE
ossl_x509name_eql(VALUE self, VALUE other)
{
@@ -368,7 +329,7 @@ ossl_x509name_hash(VALUE self)
* call-seq:
* name.hash_old => integer
*
- * Returns an MD5 based hash used in OpenSSL 0.9.X.
+ * hash_old returns MD5 based hash used in OpenSSL 0.9.X.
*/
static VALUE
ossl_x509name_hash_old(VALUE self)
@@ -387,8 +348,6 @@ ossl_x509name_hash_old(VALUE self)
/*
* call-seq:
* name.to_der => string
- *
- * Converts the name to DER encoding
*/
static VALUE
ossl_x509name_to_der(VALUE self)
@@ -411,19 +370,8 @@ ossl_x509name_to_der(VALUE self)
}
/*
- * Document-class: OpenSSL::X509::Name
- *
- * An X.509 name represents a hostname, email address or other entity
- * associated with a public key.
- *
- * You can create a Name by parsing a distinguished name String or by
- * supplying the distinguished name as an Array.
- *
- * name = OpenSSL::X509::Name.parse 'CN=nobody/DC=example'
- *
- * name = OpenSSL::X509::Name.new [['CN', 'nobody'], ['DC', 'example']]
+ * INIT
*/
-
void
Init_ossl_x509name()
{
@@ -452,11 +400,6 @@ Init_ossl_x509name()
utf8str = INT2NUM(V_ASN1_UTF8STRING);
ptrstr = INT2NUM(V_ASN1_PRINTABLESTRING);
ia5str = INT2NUM(V_ASN1_IA5STRING);
-
- /* Document-const: DEFAULT_OBJECT_TYPE
- *
- * The default object type for name entries.
- */
rb_define_const(cX509Name, "DEFAULT_OBJECT_TYPE", utf8str);
hash = rb_hash_new();
RHASH(hash)->ifnone = utf8str;
@@ -467,43 +410,10 @@ Init_ossl_x509name()
rb_hash_aset(hash, rb_str_new2("DC"), ia5str);
rb_hash_aset(hash, rb_str_new2("domainComponent"), ia5str);
rb_hash_aset(hash, rb_str_new2("emailAddress"), ia5str);
-
- /* Document-const: OBJECT_TYPE_TEMPLATE
- *
- * The default object type template for name entries.
- */
rb_define_const(cX509Name, "OBJECT_TYPE_TEMPLATE", hash);
- /* Document-const: COMPAT
- *
- * A flag for #to_s.
- *
- * Breaks the name returned into multiple lines if longer than 80
- * characters.
- */
rb_define_const(cX509Name, "COMPAT", ULONG2NUM(XN_FLAG_COMPAT));
-
- /* Document-const: RFC2253
- *
- * A flag for #to_s.
- *
- * Returns an RFC2253 format name.
- */
rb_define_const(cX509Name, "RFC2253", ULONG2NUM(XN_FLAG_RFC2253));
-
- /* Document-const: ONELINE
- *
- * A flag for #to_s.
- *
- * Returns a more readable format than RFC2253.
- */
rb_define_const(cX509Name, "ONELINE", ULONG2NUM(XN_FLAG_ONELINE));
-
- /* Document-const: MULTILINE
- *
- * A flag for #to_s.
- *
- * Returns a multiline format.
- */
rb_define_const(cX509Name, "MULTILINE", ULONG2NUM(XN_FLAG_MULTILINE));
}
diff --git a/ext/openssl/ossl_x509store.c b/ext/openssl/ossl_x509store.c
index 5e3094ee9f..5d341c5192 100644
--- a/ext/openssl/ossl_x509store.c
+++ b/ext/openssl/ossl_x509store.c
@@ -204,15 +204,6 @@ ossl_x509store_set_time(VALUE self, VALUE time)
return time;
}
-/*
- * call-seq:
- * store.add_file(file) -> store
- *
- *
- * Adds the certificates in +file+ to the certificate store. The +file+ can
- * contain multiple PEM-encoded certificates.
- */
-
static VALUE
ossl_x509store_add_file(VALUE self, VALUE file)
{
@@ -255,16 +246,6 @@ ossl_x509store_add_path(VALUE self, VALUE dir)
return self;
}
-/*
- * call-seq:
- * store.set_default_path
- *
- * Adds the default certificates to the certificate store. These certificates
- * are loaded from the default configuration directory which can usually be
- * determined by:
- *
- * File.dirname OpenSSL::Config::DEFAULT_CONFIG_FILE
- */
static VALUE
ossl_x509store_set_default_paths(VALUE self)
{
@@ -278,13 +259,6 @@ ossl_x509store_set_default_paths(VALUE self)
return Qnil;
}
-/*
- * call-seq:
- * store.add_cert(cert)
- *
- * Adds the OpenSSL::X509::Certificate +cert+ to the certificate store.
- */
-
static VALUE
ossl_x509store_add_cert(VALUE self, VALUE arg)
{
@@ -597,47 +571,8 @@ Init_ossl_x509store()
{
VALUE x509stctx;
-#if 0
- mOSSL = rb_define_module("OpenSSL"); /* let rdoc know about mOSSL */
- mX509 = rb_define_module_under(mOSSL, "X509");
-#endif
-
eX509StoreError = rb_define_class_under(mX509, "StoreError", eOSSLError);
- /* Document-class: OpenSSL::X509::Store
- *
- * The X509 certificate store holds trusted CA certificates used to verify
- * peer certificates.
- *
- * The easiest way to create a useful certificate store is:
- *
- * cert_store = OpenSSL::X509::Store.new
- * cert_store.set_default_paths
- *
- * This will use your system's built-in certificates.
- *
- * If your system does not have a default set of certificates you can
- * obtain a set from Mozilla here: http://curl.haxx.se/docs/caextract.html
- * (Note that this set does not have an HTTPS download option so you may
- * wish to use the firefox-db2pem.sh script to extract the certificates
- * from a local install to avoid man-in-the-middle attacks.)
- *
- * After downloading or generating a cacert.pem from the above link you
- * can create a certificate store from the pem file like this:
- *
- * cert_store = OpenSSL::X509::Store.new
- * cert_store.add_file 'cacert.pem'
- *
- * The certificate store can be used with an SSLSocket like this:
- *
- * ssl_context = OpenSSL::SSL::SSLContext.new
- * ssl_context.cert_store = cert_store
- *
- * tcp_socket = TCPSocket.open 'example.com', 443
- *
- * ssl_socket = OpenSSL::SSL::SSLSocket.new tcp_socket, ssl_context
- */
-
cX509Store = rb_define_class_under(mX509, "Store", rb_cObject);
rb_attr(cX509Store, rb_intern("verify_callback"), 1, 0, Qfalse);
rb_attr(cX509Store, rb_intern("error"), 1, 0, Qfalse);
diff --git a/ext/openssl/ruby_missing.h b/ext/openssl/ruby_missing.h
index 0f9de1c842..1c5d05baca 100644
--- a/ext/openssl/ruby_missing.h
+++ b/ext/openssl/ruby_missing.h
@@ -25,4 +25,17 @@
#define rb_io_t OpenFile
#endif
+#ifndef HAVE_RB_STR_SET_LEN
+/* these methods should probably be backported to 1.8 */
+#define rb_str_set_len(str, length) do { \
+ RSTRING(str)->ptr[(length)] = 0; \
+ RSTRING(str)->len = (length); \
+} while(0)
+#endif /* ! HAVE_RB_STR_SET_LEN */
+
+#ifndef HAVE_RB_BLOCK_CALL
+/* the openssl module doesn't use arg[3-4] and arg2 is always rb_each */
+#define rb_block_call(arg1, arg2, arg3, arg4, arg5, arg6) rb_iterate(rb_each, (arg1), (arg5), (arg6))
+#endif /* ! HAVE_RB_BLOCK_CALL */
+
#endif /* _OSSL_RUBY_MISSING_H_ */
diff --git a/ext/pathname/lib/pathname.rb b/ext/pathname/lib/pathname.rb
index 8bce81ea10..1d2b37c66b 100644
--- a/ext/pathname/lib/pathname.rb
+++ b/ext/pathname/lib/pathname.rb
@@ -8,6 +8,8 @@
#
# For documentation, see class Pathname.
#
+# <tt>pathname.rb</tt> is distributed with Ruby since 1.8.0.
+#
require 'pathname.so'
@@ -22,12 +24,12 @@ class Pathname
end
SAME_PATHS = if File::FNM_SYSCASE.nonzero?
- # Avoid #zero? here because #casecmp can return nil.
- proc {|a, b| a.casecmp(b) == 0}
+ proc {|a, b| a.casecmp(b).zero?}
else
proc {|a, b| a == b}
end
+ # :startdoc:
if File::ALT_SEPARATOR
SEPARATOR_LIST = "#{Regexp.quote File::ALT_SEPARATOR}#{Regexp.quote File::SEPARATOR}"
@@ -37,10 +39,8 @@ class Pathname
SEPARATOR_PAT = /#{Regexp.quote File::SEPARATOR}/
end
- # :startdoc:
-
# chop_basename(path) -> [pre-basename, basename] or nil
- def chop_basename(path) # :nodoc:
+ def chop_basename(path)
base = File.basename(path)
if /\A#{SEPARATOR_PAT}?\z/o =~ base
return nil
@@ -51,7 +51,7 @@ class Pathname
private :chop_basename
# split_names(path) -> prefix, [name, ...]
- def split_names(path) # :nodoc:
+ def split_names(path)
names = []
while r = chop_basename(path)
path, basename = r
@@ -61,7 +61,7 @@ class Pathname
end
private :split_names
- def prepend_prefix(prefix, relpath) # :nodoc:
+ def prepend_prefix(prefix, relpath)
if relpath.empty?
File.dirname(prefix)
elsif /#{SEPARATOR_PAT}/o =~ prefix
@@ -78,11 +78,9 @@ class Pathname
# removed. The filesystem is not accessed.
#
# If +consider_symlink+ is +true+, then a more conservative algorithm is used
- # to avoid breaking symbolic linkages. This may retain more +..+
+ # to avoid breaking symbolic linkages. This may retain more <tt>..</tt>
# entries than absolutely necessary, but without accessing the filesystem,
- # this can't be avoided.
- #
- # See Pathname#realpath.
+ # this can't be avoided. See #realpath.
#
def cleanpath(consider_symlink=false)
if consider_symlink
@@ -93,10 +91,10 @@ class Pathname
end
#
- # Clean the path simply by resolving and removing excess +.+ and +..+ entries.
+ # Clean the path simply by resolving and removing excess "." and ".." entries.
# Nothing more, nothing less.
#
- def cleanpath_aggressive # :nodoc:
+ def cleanpath_aggressive
path = @path
names = []
pre = path
@@ -114,7 +112,6 @@ class Pathname
end
end
end
- pre.tr!(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
if /#{SEPARATOR_PAT}/o =~ File.basename(pre)
names.shift while names[0] == '..'
end
@@ -123,7 +120,7 @@ class Pathname
private :cleanpath_aggressive
# has_trailing_separator?(path) -> bool
- def has_trailing_separator?(path) # :nodoc:
+ def has_trailing_separator?(path)
if r = chop_basename(path)
pre, basename = r
pre.length + basename.length < path.length
@@ -134,7 +131,7 @@ class Pathname
private :has_trailing_separator?
# add_trailing_separator(path) -> path
- def add_trailing_separator(path) # :nodoc:
+ def add_trailing_separator(path)
if File.basename(path + 'a') == 'a'
path
else
@@ -143,7 +140,7 @@ class Pathname
end
private :add_trailing_separator
- def del_trailing_separator(path) # :nodoc:
+ def del_trailing_separator(path)
if r = chop_basename(path)
pre, basename = r
pre + basename
@@ -155,7 +152,7 @@ class Pathname
end
private :del_trailing_separator
- def cleanpath_conservative # :nodoc:
+ def cleanpath_conservative
path = @path
names = []
pre = path
@@ -163,7 +160,6 @@ class Pathname
pre, base = r
names.unshift base if base != '.'
end
- pre.tr!(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
if /#{SEPARATOR_PAT}/o =~ File.basename(pre)
names.shift while names[0] == '..'
end
@@ -183,14 +179,14 @@ class Pathname
end
private :cleanpath_conservative
- # Returns the parent directory.
+ # #parent returns the parent directory.
#
- # This is same as <code>self + '..'</code>.
+ # This is same as <tt>self + '..'</tt>.
def parent
self + '..'
end
- # Returns +true+ if +self+ points to a mountpoint.
+ # #mountpoint? returns +true+ if <tt>self</tt> points to a mountpoint.
def mountpoint?
begin
stat1 = self.lstat
@@ -203,10 +199,10 @@ class Pathname
end
#
- # Predicate method for root directories. Returns +true+ if the
+ # #root? is a predicate for root directories. I.e. it returns +true+ if the
# pathname consists of consecutive slashes.
#
- # It doesn't access the filesystem. So it may return +false+ for some
+ # It doesn't access actual filesystem. So it may return +false+ for some
# pathnames which points to roots such as <tt>/usr/..</tt>.
#
def root?
@@ -214,31 +210,12 @@ class Pathname
end
# Predicate method for testing whether a path is absolute.
- #
# It returns +true+ if the pathname begins with a slash.
- #
- # p = Pathname.new('/im/sure')
- # p.absolute?
- # #=> true
- #
- # p = Pathname.new('not/so/sure')
- # p.absolute?
- # #=> false
def absolute?
!relative?
end
- # The opposite of Pathname#absolute?
- #
- # It returns +false+ if the pathname begins with a slash.
- #
- # p = Pathname.new('/im/sure')
- # p.relative?
- # #=> false
- #
- # p = Pathname.new('not/so/sure')
- # p.relative?
- # #=> true
+ # The opposite of #absolute?
def relative?
path = @path
while r = chop_basename(path)
@@ -253,13 +230,6 @@ class Pathname
# Pathname.new("/usr/bin/ruby").each_filename {|filename| ... }
# # yields "usr", "bin", and "ruby".
#
- # Returns an Enumerator if no block was given.
- #
- # enum = Pathname.new("/usr/bin/ruby").each_filename
- # # ... do stuff ...
- # enum.each { |e| ... }
- # # yields "usr", "bin", and "ruby".
- #
def each_filename # :yield: filename
return to_enum(__method__) unless block_given?
_, names = split_names(@path)
@@ -283,7 +253,9 @@ class Pathname
# #<Pathname:path/to/some>
# #<Pathname:path/to/some/file.rb>
#
- # It doesn't access the filesystem.
+ # It doesn't access actual filesystem.
+ #
+ # This method is available since 1.8.5.
#
def descend
vs = []
@@ -308,7 +280,9 @@ class Pathname
# #<Pathname:path/to>
# #<Pathname:path>
#
- # It doesn't access the filesystem.
+ # It doesn't access actual filesystem.
+ #
+ # This method is available since 1.8.5.
#
def ascend
path = @path
@@ -321,7 +295,8 @@ class Pathname
end
#
- # Appends a pathname fragment to +self+ to produce a new Pathname object.
+ # Pathname#+ appends a pathname fragment to this one to produce a new Pathname
+ # object.
#
# p1 = Pathname.new("/usr") # Pathname:/usr
# p2 = p1 + "bin/ruby" # Pathname:/usr/bin/ruby
@@ -334,7 +309,7 @@ class Pathname
Pathname.new(plus(@path, other.to_s))
end
- def plus(path1, path2) # -> path # :nodoc:
+ def plus(path1, path2) # -> path
prefix2 = path2
index_list2 = []
basename_list2 = []
@@ -377,14 +352,10 @@ class Pathname
private :plus
#
- # Joins the given pathnames onto +self+ to create a new Pathname object.
+ # Pathname#join joins pathnames.
#
- # path0 = Pathname.new("/usr") # Pathname:/usr
- # path0 = path0.join("bin/ruby") # Pathname:/usr/bin/ruby
- # # is the same as
- # path1 = Pathname.new("/usr") + "bin/ruby" # Pathname:/usr/bin/ruby
- # path0 == path1
- # #=> true
+ # <tt>path0.join(path1, ..., pathN)</tt> is the same as
+ # <tt>path0 + path1 + ... + pathN</tt>.
#
def join(*args)
args.unshift self
@@ -401,11 +372,10 @@ class Pathname
#
# Returns the children of the directory (files and subdirectories, not
- # recursive) as an array of Pathname objects.
- #
- # By default, the returned pathnames will have enough information to access
- # the files. If you set +with_directory+ to +false+, then the returned
- # pathnames will contain the filename only.
+ # recursive) as an array of Pathname objects. By default, the returned
+ # pathnames will have enough information to access the files. If you set
+ # +with_directory+ to +false+, then the returned pathnames will contain the
+ # filename only.
#
# For example:
# pn = Pathname("/usr/lib/ruby/1.8")
@@ -416,9 +386,11 @@ class Pathname
# pn.children(false)
# # -> [ Pathname:English.rb, Pathname:Env.rb, Pathname:abbrev.rb, ... ]
#
- # Note that the results never contain the entries +.+ and +..+ in
+ # Note that the results never contain the entries <tt>.</tt> and <tt>..</tt> in
# the directory because they are not children.
#
+ # This method has existed since 1.8.1.
+ #
def children(with_directory=true)
with_directory = false if @path == '.'
result = []
@@ -435,14 +407,9 @@ class Pathname
# Iterates over the children of the directory
# (files and subdirectories, not recursive).
- #
# It yields Pathname object for each child.
- #
- # By default, the yielded pathnames will have enough information to access
- # the files.
- #
- # If you set +with_directory+ to +false+, then the returned pathnames will
- # contain the filename only.
+ # By default, the yielded pathnames will have enough information to access the files.
+ # If you set +with_directory+ to +false+, then the returned pathnames will contain the filename only.
#
# Pathname("/usr/local").each_child {|f| p f }
# #=> #<Pathname:/usr/local/share>
@@ -464,26 +431,21 @@ class Pathname
# # #<Pathname:src>
# # #<Pathname:man>
#
- # Note that the results never contain the entries +.+ and +..+ in
- # the directory because they are not children.
- #
- # See Pathname#children
- #
def each_child(with_directory=true, &b)
children(with_directory).each(&b)
end
#
- # Returns a relative path from the given +base_directory+ to the receiver.
+ # #relative_path_from returns a relative path from the argument to the
+ # receiver. If +self+ is absolute, the argument must be absolute too. If
+ # +self+ is relative, the argument must be relative too.
#
- # If +self+ is absolute, then +base_directory+ must be absolute too.
- #
- # If +self+ is relative, then +base_directory+ must be relative too.
- #
- # This method doesn't access the filesystem. It assumes no symlinks.
+ # #relative_path_from doesn't access the filesystem. It assumes no symlinks.
#
# ArgumentError is raised when it cannot find a relative path.
#
+ # This method has existed since 1.8.1.
+ #
def relative_path_from(base_directory)
dest_directory = self.cleanpath.to_s
base_directory = base_directory.cleanpath.to_s
@@ -524,21 +486,16 @@ end
class Pathname # * Find *
#
- # Iterates over the directory tree in a depth first manner, yielding a
- # Pathname for each file under "this" directory.
- #
- # Returns an Enumerator if no block is given.
+ # Pathname#find is an iterator to traverse a directory tree in a depth first
+ # manner. It yields a Pathname for each file under "this" directory.
#
- # Since it is implemented by the standard library module Find, Find.prune can
- # be used to control the traversal.
+ # Since it is implemented by <tt>find.rb</tt>, <tt>Find.prune</tt> can be used
+ # to control the traversal.
#
- # If +self+ is +.+, yielded pathnames begin with a filename in the
- # current directory, not +./+.
+ # If +self+ is <tt>.</tt>, yielded pathnames begin with a filename in the
+ # current directory, not <tt>./</tt>.
#
- # See Find.find
- #
- def find # :yield: pathname
- return to_enum(__method__) unless block_given?
+ def find(&block) # :yield: pathname
require 'find'
if @path == '.'
Find.find(@path) {|f| yield self.class.new(f.sub(%r{\A\./}, '')) }
@@ -550,19 +507,15 @@ end
class Pathname # * FileUtils *
- # Creates a full path, including any intermediate directories that don't yet
- # exist.
- #
- # See FileUtils.mkpath and FileUtils.mkdir_p
+ # See <tt>FileUtils.mkpath</tt>. Creates a full path, including any
+ # intermediate directories that don't yet exist.
def mkpath
require 'fileutils'
FileUtils.mkpath(@path)
nil
end
- # Recursively deletes a directory, including all directories beneath it.
- #
- # See FileUtils.rm_r
+ # See <tt>FileUtils.rm_r</tt>. Deletes a directory and all beneath it.
def rmtree
# The name "rmtree" is borrowed from File::Path of Perl.
# File::Path provides "mkpath" and "rmtree".
diff --git a/ext/pathname/pathname.c b/ext/pathname/pathname.c
index dbd58ae7f9..e35c19d541 100644
--- a/ext/pathname/pathname.c
+++ b/ext/pathname/pathname.c
@@ -9,7 +9,7 @@ get_strpath(VALUE obj)
{
VALUE strpath;
strpath = rb_ivar_get(obj, id_at_path);
- if (!RB_TYPE_P(strpath, T_STRING))
+ if (TYPE(strpath) != T_STRING)
rb_raise(rb_eTypeError, "unexpected @path");
return strpath;
}
@@ -22,13 +22,13 @@ set_strpath(VALUE obj, VALUE val)
/*
* Create a Pathname object from the given String (or String-like object).
- * If +path+ contains a NULL character (<tt>\0</tt>), an ArgumentError is raised.
+ * If +path+ contains a NUL character (<tt>\0</tt>), an ArgumentError is raised.
*/
static VALUE
path_initialize(VALUE self, VALUE arg)
{
VALUE str;
- if (RB_TYPE_P(arg, T_STRING)) {
+ if (TYPE(arg) == T_STRING) {
str = arg;
}
else {
@@ -46,14 +46,6 @@ path_initialize(VALUE self, VALUE arg)
return self;
}
-/*
- * call-seq:
- * pathname.freeze -> obj
- *
- * Freezes this Pathname.
- *
- * See Object.freeze.
- */
static VALUE
path_freeze(VALUE self)
{
@@ -62,14 +54,6 @@ path_freeze(VALUE self)
return self;
}
-/*
- * call-seq:
- * pathname.taint -> obj
- *
- * Taints this Pathname.
- *
- * See Object.taint.
- */
static VALUE
path_taint(VALUE self)
{
@@ -78,14 +62,6 @@ path_taint(VALUE self)
return self;
}
-/*
- * call-seq:
- * pathname.untaint -> obj
- *
- * Untaints this Pathname.
- *
- * See Object.untaint.
- */
static VALUE
path_untaint(VALUE self)
{
@@ -108,18 +84,7 @@ path_eq(VALUE self, VALUE other)
}
/*
- * Provides a case-sensitive comparison operator for pathnames.
- *
- * Pathname.new('/usr') <=> Pathname.new('/usr/bin')
- * #=> -1
- * Pathname.new('/usr/bin') <=> Pathname.new('/usr/bin')
- * #=> 0
- * Pathname.new('/usr/bin') <=> Pathname.new('/USR/BIN')
- * #=> 1
- *
- * It will return +-1+, +0+ or +1+ depending on the value of the left argument
- * relative to the right argument. Or it will return +nil+ if the arguments
- * are not comparable.
+ * Provides for comparing pathnames, case-sensitively.
*/
static VALUE
path_cmp(VALUE self, VALUE other)
@@ -183,15 +148,11 @@ path_inspect(VALUE self)
{
const char *c = rb_obj_classname(self);
VALUE str = get_strpath(self);
- return rb_sprintf("#<%s:%"PRIsVALUE">", c, str);
+ return rb_sprintf("#<%s:%s>", c, RSTRING_PTR(str));
}
/*
* Return a pathname which is substituted by String#sub.
- *
- * path1 = Pathname.new('/usr/bin/perl')
- * path1.sub('perl', 'ruby')
- * #=> #<Pathname:/usr/bin/ruby>
*/
static VALUE
path_sub(int argc, VALUE *argv, VALUE self)
@@ -208,12 +169,10 @@ path_sub(int argc, VALUE *argv, VALUE self)
}
/*
- * Return a pathname with +repl+ added as a suffix to the basename.
+ * Return a pathname which the extension of the basename is substituted by
+ * <i>repl</i>.
*
- * If self has no extension part, +repl+ is appended.
- *
- * Pathname.new('/usr/bin/shutdown').sub_ext('.rb')
- * #=> #<Pathname:/usr/bin/shutdown.rb>
+ * If self has no extension part, <i>repl</i> is appended.
*/
static VALUE
path_sub_ext(VALUE self, VALUE repl)
@@ -243,10 +202,8 @@ path_sub_ext(VALUE self, VALUE repl)
/* Facade for File */
/*
- * Returns the real (absolute) pathname for +self+ in the actual
- * filesystem.
- *
- * Does not contain symlinks or useless dots, +..+ and +.+.
+ * Returns the real (absolute) pathname of +self+ in the actual
+ * filesystem not containing symlinks or useless dots.
*
* All components of the pathname must exist when this method is
* called.
@@ -263,8 +220,7 @@ path_realpath(int argc, VALUE *argv, VALUE self)
/*
* Returns the real (absolute) pathname of +self+ in the actual filesystem.
- *
- * Does not contain symlinks or useless dots, +..+ and +.+.
+ * The real pathname doesn't contain symlinks or useless dots.
*
* The last component of the real pathname can be nonexistent.
*/
@@ -285,7 +241,10 @@ path_realdirpath(int argc, VALUE *argv, VALUE self)
* pathname.each_line(sep, limit [, open_args]) {|line| block } -> nil
* pathname.each_line(...) -> an_enumerator
*
- * Iterates over each line in the file and yields a String object for each.
+ * #each_line iterates over the line in the file. It yields a String object
+ * for each line.
+ *
+ * This method is availabel since 1.8.1.
*/
static VALUE
path_each_line(int argc, VALUE *argv, VALUE self)
@@ -308,9 +267,8 @@ path_each_line(int argc, VALUE *argv, VALUE self)
* pathname.read([length [, offset]]) -> string
* pathname.read([length [, offset]], open_args) -> string
*
- * Returns all data from the file, or the first +N+ bytes if specified.
- *
- * See IO.read.
+ * See <tt>IO.read</tt>. Returns all data from the file, or the first +N+ bytes
+ * if specified.
*
*/
static VALUE
@@ -328,9 +286,8 @@ path_read(int argc, VALUE *argv, VALUE self)
* call-seq:
* pathname.binread([length [, offset]]) -> string
*
- * Returns all the bytes from the file, or the first +N+ if specified.
- *
- * See IO.binread.
+ * See <tt>IO.binread</tt>. Returns all the bytes from the file, or the first +N+
+ * if specified.
*
*/
static VALUE
@@ -350,9 +307,7 @@ path_binread(int argc, VALUE *argv, VALUE self)
* pathname.readlines(limit [, open_args]) -> array
* pathname.readlines(sep, limit [, open_args]) -> array
*
- * Returns all the lines from the file.
- *
- * See IO.readlines.
+ * See <tt>IO.readlines</tt>. Returns all the lines from the file.
*
*/
static VALUE
@@ -370,7 +325,7 @@ path_readlines(int argc, VALUE *argv, VALUE self)
* call-seq:
* pathname.sysopen([mode, [perm]]) -> fixnum
*
- * See IO.sysopen.
+ * See <tt>IO.sysopen</tt>.
*
*/
static VALUE
@@ -385,12 +340,7 @@ path_sysopen(int argc, VALUE *argv, VALUE self)
}
/*
- * call-seq:
- * pathname.atime -> time
- *
- * Returns the last access time for the file.
- *
- * See File.atime.
+ * See <tt>File.atime</tt>. Returns last access time.
*/
static VALUE
path_atime(VALUE self)
@@ -399,12 +349,7 @@ path_atime(VALUE self)
}
/*
- * call-seq:
- * pathname.ctime -> time
- *
- * Returns the last change time, using directory information, not the file itself.
- *
- * See File.ctime.
+ * See <tt>File.ctime</tt>. Returns last (directory entry, not file) change time.
*/
static VALUE
path_ctime(VALUE self)
@@ -413,12 +358,7 @@ path_ctime(VALUE self)
}
/*
- * call-seq:
- * pathname.mtime -> time
- *
- * Returns the last modified time of the file.
- *
- * See File.mtime.
+ * See <tt>File.mtime</tt>. Returns last modification time.
*/
static VALUE
path_mtime(VALUE self)
@@ -427,12 +367,7 @@ path_mtime(VALUE self)
}
/*
- * call-seq:
- * pathname.chmod -> integer
- *
- * Changes file permissions.
- *
- * See File.chmod.
+ * See <tt>File.chmod</tt>. Changes permissions.
*/
static VALUE
path_chmod(VALUE self, VALUE mode)
@@ -441,12 +376,7 @@ path_chmod(VALUE self, VALUE mode)
}
/*
- * call-seq:
- * pathname.lchmod -> integer
- *
- * Same as Pathname.chmod, but does not follow symbolic links.
- *
- * See File.lchmod.
+ * See <tt>File.lchmod</tt>.
*/
static VALUE
path_lchmod(VALUE self, VALUE mode)
@@ -455,12 +385,7 @@ path_lchmod(VALUE self, VALUE mode)
}
/*
- * call-seq:
- * pathname.chown -> integer
- *
- * Change owner and group of the file.
- *
- * See File.chown.
+ * See <tt>File.chown</tt>. Change owner and group of file.
*/
static VALUE
path_chown(VALUE self, VALUE owner, VALUE group)
@@ -469,12 +394,7 @@ path_chown(VALUE self, VALUE owner, VALUE group)
}
/*
- * call-seq:
- * pathname.lchown -> integer
- *
- * Same as Pathname.chown, but does not follow symbolic links.
- *
- * See File.lchown.
+ * See <tt>File.lchown</tt>.
*/
static VALUE
path_lchown(VALUE self, VALUE owner, VALUE group)
@@ -487,9 +407,8 @@ path_lchown(VALUE self, VALUE owner, VALUE group)
* pathname.fnmatch(pattern, [flags]) -> string
* pathname.fnmatch?(pattern, [flags]) -> string
*
- * Return +true+ if the receiver matches the given pattern.
- *
- * See File.fnmatch.
+ * See <tt>File.fnmatch</tt>. Return +true+ if the receiver matches the given
+ * pattern.
*/
static VALUE
path_fnmatch(int argc, VALUE *argv, VALUE self)
@@ -503,12 +422,8 @@ path_fnmatch(int argc, VALUE *argv, VALUE self)
}
/*
- * call-seq:
- * pathname.ftype -> string
- *
- * Returns "type" of file ("file", "directory", etc).
- *
- * See File.ftype.
+ * See <tt>File.ftype</tt>. Returns "type" of file ("file", "directory",
+ * etc).
*/
static VALUE
path_ftype(VALUE self)
@@ -520,9 +435,7 @@ path_ftype(VALUE self)
* call-seq:
* pathname.make_link(old)
*
- * Creates a hard link at _pathname_.
- *
- * See File.link.
+ * See <tt>File.link</tt>. Creates a hard link at _pathname_.
*/
static VALUE
path_make_link(VALUE self, VALUE old)
@@ -531,9 +444,7 @@ path_make_link(VALUE self, VALUE old)
}
/*
- * Opens the file for reading or writing.
- *
- * See File.open.
+ * See <tt>File.open</tt>. Opens the file for reading or writing.
*/
static VALUE
path_open(int argc, VALUE *argv, VALUE self)
@@ -552,9 +463,7 @@ path_open(int argc, VALUE *argv, VALUE self)
}
/*
- * Read symbolic link.
- *
- * See File.readlink.
+ * See <tt>File.readlink</tt>. Read symbolic link.
*/
static VALUE
path_readlink(VALUE self)
@@ -565,9 +474,7 @@ path_readlink(VALUE self)
}
/*
- * Rename the file.
- *
- * See File.rename.
+ * See <tt>File.rename</tt>. Rename the file.
*/
static VALUE
path_rename(VALUE self, VALUE to)
@@ -576,9 +483,7 @@ path_rename(VALUE self, VALUE to)
}
/*
- * Returns a File::Stat object.
- *
- * See File.stat.
+ * See <tt>File.stat</tt>. Returns a <tt>File::Stat</tt> object.
*/
static VALUE
path_stat(VALUE self)
@@ -587,7 +492,7 @@ path_stat(VALUE self)
}
/*
- * See File.lstat.
+ * See <tt>File.lstat</tt>.
*/
static VALUE
path_lstat(VALUE self)
@@ -599,9 +504,7 @@ path_lstat(VALUE self)
* call-seq:
* pathname.make_symlink(old)
*
- * Creates a symbolic link.
- *
- * See File.symlink.
+ * See <tt>File.symlink</tt>. Creates a symbolic link.
*/
static VALUE
path_make_symlink(VALUE self, VALUE old)
@@ -610,9 +513,7 @@ path_make_symlink(VALUE self, VALUE old)
}
/*
- * Truncates the file to +length+ bytes.
- *
- * See File.truncate.
+ * See <tt>File.truncate</tt>. Truncate the file to +length+ bytes.
*/
static VALUE
path_truncate(VALUE self, VALUE length)
@@ -621,9 +522,7 @@ path_truncate(VALUE self, VALUE length)
}
/*
- * Update the access and modification times of the file.
- *
- * See File.utime.
+ * See <tt>File.utime</tt>. Update the access and modification times.
*/
static VALUE
path_utime(VALUE self, VALUE atime, VALUE mtime)
@@ -632,9 +531,7 @@ path_utime(VALUE self, VALUE atime, VALUE mtime)
}
/*
- * Returns the last component of the path.
- *
- * See File.basename.
+ * See <tt>File.basename</tt>. Returns the last component of the path.
*/
static VALUE
path_basename(int argc, VALUE *argv, VALUE self)
@@ -649,9 +546,7 @@ path_basename(int argc, VALUE *argv, VALUE self)
}
/*
- * Returns all but the last component of the path.
- *
- * See File.dirname.
+ * See <tt>File.dirname</tt>. Returns all but the last component of the path.
*/
static VALUE
path_dirname(VALUE self)
@@ -662,9 +557,7 @@ path_dirname(VALUE self)
}
/*
- * Returns the file's extension.
- *
- * See File.extname.
+ * See <tt>File.extname</tt>. Returns the file's extension.
*/
static VALUE
path_extname(VALUE self)
@@ -674,9 +567,7 @@ path_extname(VALUE self)
}
/*
- * Returns the absolute path for the file.
- *
- * See File.expand_path.
+ * See <tt>File.expand_path</tt>.
*/
static VALUE
path_expand_path(int argc, VALUE *argv, VALUE self)
@@ -691,9 +582,7 @@ path_expand_path(int argc, VALUE *argv, VALUE self)
}
/*
- * Returns the #dirname and the #basename in an Array.
- *
- * See File.split.
+ * See <tt>File.split</tt>. Returns the #dirname and the #basename in an Array.
*/
static VALUE
path_split(VALUE self)
@@ -710,7 +599,7 @@ path_split(VALUE self)
}
/*
- * See FileTest.blockdev?.
+ * See <tt>FileTest.blockdev?</tt>.
*/
static VALUE
path_blockdev_p(VALUE self)
@@ -719,7 +608,7 @@ path_blockdev_p(VALUE self)
}
/*
- * See FileTest.chardev?.
+ * See <tt>FileTest.chardev?</tt>.
*/
static VALUE
path_chardev_p(VALUE self)
@@ -728,7 +617,7 @@ path_chardev_p(VALUE self)
}
/*
- * See FileTest.executable?.
+ * See <tt>FileTest.executable?</tt>.
*/
static VALUE
path_executable_p(VALUE self)
@@ -737,7 +626,7 @@ path_executable_p(VALUE self)
}
/*
- * See FileTest.executable_real?.
+ * See <tt>FileTest.executable_real?</tt>.
*/
static VALUE
path_executable_real_p(VALUE self)
@@ -746,7 +635,7 @@ path_executable_real_p(VALUE self)
}
/*
- * See FileTest.exist?.
+ * See <tt>FileTest.exist?</tt>.
*/
static VALUE
path_exist_p(VALUE self)
@@ -755,7 +644,7 @@ path_exist_p(VALUE self)
}
/*
- * See FileTest.grpowned?.
+ * See <tt>FileTest.grpowned?</tt>.
*/
static VALUE
path_grpowned_p(VALUE self)
@@ -764,7 +653,7 @@ path_grpowned_p(VALUE self)
}
/*
- * See FileTest.directory?.
+ * See <tt>FileTest.directory?</tt>.
*/
static VALUE
path_directory_p(VALUE self)
@@ -773,7 +662,7 @@ path_directory_p(VALUE self)
}
/*
- * See FileTest.file?.
+ * See <tt>FileTest.file?</tt>.
*/
static VALUE
path_file_p(VALUE self)
@@ -782,7 +671,7 @@ path_file_p(VALUE self)
}
/*
- * See FileTest.pipe?.
+ * See <tt>FileTest.pipe?</tt>.
*/
static VALUE
path_pipe_p(VALUE self)
@@ -791,7 +680,7 @@ path_pipe_p(VALUE self)
}
/*
- * See FileTest.socket?.
+ * See <tt>FileTest.socket?</tt>.
*/
static VALUE
path_socket_p(VALUE self)
@@ -800,7 +689,7 @@ path_socket_p(VALUE self)
}
/*
- * See FileTest.owned?.
+ * See <tt>FileTest.owned?</tt>.
*/
static VALUE
path_owned_p(VALUE self)
@@ -809,7 +698,7 @@ path_owned_p(VALUE self)
}
/*
- * See FileTest.readable?.
+ * See <tt>FileTest.readable?</tt>.
*/
static VALUE
path_readable_p(VALUE self)
@@ -818,7 +707,7 @@ path_readable_p(VALUE self)
}
/*
- * See FileTest.world_readable?.
+ * See <tt>FileTest.world_readable?</tt>.
*/
static VALUE
path_world_readable_p(VALUE self)
@@ -827,7 +716,7 @@ path_world_readable_p(VALUE self)
}
/*
- * See FileTest.readable_real?.
+ * See <tt>FileTest.readable_real?</tt>.
*/
static VALUE
path_readable_real_p(VALUE self)
@@ -836,7 +725,7 @@ path_readable_real_p(VALUE self)
}
/*
- * See FileTest.setuid?.
+ * See <tt>FileTest.setuid?</tt>.
*/
static VALUE
path_setuid_p(VALUE self)
@@ -845,7 +734,7 @@ path_setuid_p(VALUE self)
}
/*
- * See FileTest.setgid?.
+ * See <tt>FileTest.setgid?</tt>.
*/
static VALUE
path_setgid_p(VALUE self)
@@ -854,7 +743,7 @@ path_setgid_p(VALUE self)
}
/*
- * See FileTest.size.
+ * See <tt>FileTest.size</tt>.
*/
static VALUE
path_size(VALUE self)
@@ -863,7 +752,7 @@ path_size(VALUE self)
}
/*
- * See FileTest.size?.
+ * See <tt>FileTest.size?</tt>.
*/
static VALUE
path_size_p(VALUE self)
@@ -872,7 +761,7 @@ path_size_p(VALUE self)
}
/*
- * See FileTest.sticky?.
+ * See <tt>FileTest.sticky?</tt>.
*/
static VALUE
path_sticky_p(VALUE self)
@@ -881,7 +770,7 @@ path_sticky_p(VALUE self)
}
/*
- * See FileTest.symlink?.
+ * See <tt>FileTest.symlink?</tt>.
*/
static VALUE
path_symlink_p(VALUE self)
@@ -890,7 +779,7 @@ path_symlink_p(VALUE self)
}
/*
- * See FileTest.writable?.
+ * See <tt>FileTest.writable?</tt>.
*/
static VALUE
path_writable_p(VALUE self)
@@ -899,7 +788,7 @@ path_writable_p(VALUE self)
}
/*
- * See FileTest.world_writable?.
+ * See <tt>FileTest.world_writable?</tt>.
*/
static VALUE
path_world_writable_p(VALUE self)
@@ -908,7 +797,7 @@ path_world_writable_p(VALUE self)
}
/*
- * See FileTest.writable_real?.
+ * See <tt>FileTest.writable_real?</tt>.
*/
static VALUE
path_writable_real_p(VALUE self)
@@ -917,7 +806,7 @@ path_writable_real_p(VALUE self)
}
/*
- * See FileTest.zero?.
+ * See <tt>FileTest.zero?</tt>.
*/
static VALUE
path_zero_p(VALUE self)
@@ -932,12 +821,7 @@ glob_i(VALUE elt, VALUE klass, int argc, VALUE *argv)
}
/*
- * Returns or yields Pathname objects.
- *
- * Pathname.glob("config/" "*.rb")
- * #=> [#<Pathname:config/environment.rb>, #<Pathname:config/routes.rb>, ..]
- *
- * See Dir.glob.
+ * See <tt>Dir.glob</tt>. Returns or yields Pathname objects.
*/
static VALUE
path_s_glob(int argc, VALUE *argv, VALUE klass)
@@ -964,12 +848,7 @@ path_s_glob(int argc, VALUE *argv, VALUE klass)
}
/*
- * Returns the current working directory as a Pathname.
- *
- * Pathname.getwd
- * #=> #<Pathname:/home/zzak/projects/ruby>
- *
- * See Dir.getwd.
+ * See <tt>Dir.getwd</tt>. Returns the current working directory as a Pathname.
*/
static VALUE
path_s_getwd(VALUE klass)
@@ -983,27 +862,8 @@ path_s_getwd(VALUE klass)
* Return the entries (files and subdirectories) in the directory, each as a
* Pathname object.
*
- * The results contains just the names in the directory, without any trailing
- * slashes or recursive look-up.
- *
- * pp Pathname.new('/usr/local').entries
- * #=> [#<Pathname:share>,
- * # #<Pathname:lib>,
- * # #<Pathname:..>,
- * # #<Pathname:include>,
- * # #<Pathname:etc>,
- * # #<Pathname:bin>,
- * # #<Pathname:man>,
- * # #<Pathname:games>,
- * # #<Pathname:.>,
- * # #<Pathname:sbin>,
- * # #<Pathname:src>]
- *
- * The result may contain the current directory <code>#<Pathname:.></code> and
- * the parent directory <code>#<Pathname:..></code>.
- *
- * If you don't want +.+ and +..+ and
- * want directories, consider Pathname#children.
+ * The result may contain the current directory #<Pathname:.> and the parent
+ * directory #<Pathname:..>.
*/
static VALUE
path_entries(VALUE self)
@@ -1023,9 +883,7 @@ path_entries(VALUE self)
}
/*
- * Create the referenced directory.
- *
- * See Dir.mkdir.
+ * See <tt>Dir.mkdir</tt>. Create the referenced directory.
*/
static VALUE
path_mkdir(int argc, VALUE *argv, VALUE self)
@@ -1039,9 +897,7 @@ path_mkdir(int argc, VALUE *argv, VALUE self)
}
/*
- * Remove the referenced directory.
- *
- * See Dir.rmdir.
+ * See <tt>Dir.rmdir</tt>. Remove the referenced directory.
*/
static VALUE
path_rmdir(VALUE self)
@@ -1050,9 +906,7 @@ path_rmdir(VALUE self)
}
/*
- * Opens the referenced directory.
- *
- * See Dir.open.
+ * See <tt>Dir.open</tt>.
*/
static VALUE
path_opendir(VALUE self)
@@ -1070,8 +924,10 @@ each_entry_i(VALUE elt, VALUE klass, int argc, VALUE *argv)
}
/*
- * Iterates over the entries (files and subdirectories) in the directory,
- * yielding a Pathname object for each entry.
+ * Iterates over the entries (files and subdirectories) in the directory. It
+ * yields a Pathname object for each entry.
+ *
+ * This method has available since 1.8.1.
*/
static VALUE
path_each_entry(VALUE self)
@@ -1095,8 +951,8 @@ unlink_rescue(VALUE str, VALUE errinfo)
}
/*
- * Removes a file or directory, using File.unlink if +self+ is a file, or
- * Dir.unlink as necessary.
+ * Removes a file or directory, using <tt>File.unlink</tt> or
+ * <tt>Dir.unlink</tt> as necessary.
*/
static VALUE
path_unlink(VALUE self)
@@ -1107,7 +963,9 @@ path_unlink(VALUE self)
}
/*
- * Creates a new Pathname object.
+ * create a pathname object.
+ *
+ * This method is available since 1.8.5.
*/
static VALUE
path_f_pathname(VALUE self, VALUE str)
@@ -1116,26 +974,24 @@ path_f_pathname(VALUE self, VALUE str)
}
/*
+ * == Pathname
*
- * Pathname represents the name of a file or directory on the filesystem,
- * but not the file itself.
- *
- * The pathname depends on the Operating System: Unix, Windows, etc.
- * This library works with pathnames of local OS, however non-Unix pathnames
- * are supported experimentally.
+ * Pathname represents a pathname which locates a file in a filesystem.
+ * The pathname depends on OS: Unix, Windows, etc.
+ * Pathname library works with pathnames of local OS.
+ * However non-Unix pathnames are supported experimentally.
*
+ * It does not represent the file itself.
* A Pathname can be relative or absolute. It's not until you try to
* reference the file that it even matters whether the file exists or not.
*
* Pathname is immutable. It has no method for destructive update.
*
- * The goal of this class is to manipulate file path information in a neater
+ * The value of this class is to manipulate file path information in a neater
* way than standard Ruby provides. The examples below demonstrate the
- * difference.
- *
- * *All* functionality from File, FileTest, and some from Dir and FileUtils is
- * included, in an unsurprising way. It is essentially a facade for all of
- * these, and more.
+ * difference. *All* functionality from File, FileTest, and some from Dir and
+ * FileUtils is included, in an unsurprising way. It is essentially a facade for
+ * all of these, and more.
*
* == Examples
*
@@ -1183,8 +1039,8 @@ path_f_pathname(VALUE self, VALUE str)
* === Core methods
*
* These methods are effectively manipulating a String, because that's
- * all a path is. None of these access the file system except for
- * #mountpoint?, #children, #each_child, #realdirpath and #realpath.
+ * all a path is. Except for #mountpoint?, #children, #each_child,
+ * #realdirpath and #realpath, they don't access the filesystem.
*
* - +
* - #join
diff --git a/ext/psych/.gitignore b/ext/psych/.gitignore
deleted file mode 100644
index 836058c169..0000000000
--- a/ext/psych/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-/api.c
-/config.h
-/dumper.c
-/emitter.c
-/loader.c
-/parser.c
-/reader.c
-/scanner.c
-/writer.c
-/yaml.h
-/yaml_private.h
diff --git a/ext/psych/psych_emitter.c b/ext/psych/emitter.c
index f0d032649c..f0d032649c 100644
--- a/ext/psych/psych_emitter.c
+++ b/ext/psych/emitter.c
diff --git a/ext/psych/psych_emitter.h b/ext/psych/emitter.h
index 560451ef31..560451ef31 100644
--- a/ext/psych/psych_emitter.h
+++ b/ext/psych/emitter.h
diff --git a/ext/psych/extconf.rb b/ext/psych/extconf.rb
index 65e83a3554..ccc8c9c304 100644
--- a/ext/psych/extconf.rb
+++ b/ext/psych/extconf.rb
@@ -1,38 +1,16 @@
-# -*- coding: us-ascii -*-
require 'mkmf'
-require 'fileutils'
# :stopdoc:
dir_config 'libyaml'
-if enable_config("bundled-libyaml", false) || !(find_header('yaml.h') && find_library('yaml', 'yaml_get_version'))
- # Embed libyaml since we could not find it.
-
- $VPATH << "$(srcdir)/yaml"
- $INCFLAGS << " -I$(srcdir)/yaml"
-
- $srcs = Dir.glob("#{$srcdir}/{,yaml/}*.c").map {|n| File.basename(n)}
-
- if have_macro("_WIN32")
- $CPPFLAGS << " -DYAML_DECLARE_STATIC -DHAVE_CONFIG_H"
- end
-
- have_header 'dlfcn.h'
- have_header 'inttypes.h'
- have_header 'memory.h'
- have_header 'stdint.h'
- have_header 'stdlib.h'
- have_header 'strings.h'
- have_header 'string.h'
- have_header 'sys/stat.h'
- have_header 'sys/types.h'
- have_header 'unistd.h'
-
- find_header 'yaml.h'
- have_header 'config.h'
+def asplode missing
+ raise "#{missing} is missing. Please install libyaml."
end
+asplode('yaml.h') unless find_header 'yaml.h'
+asplode('libyaml') unless find_library 'yaml', 'yaml_get_version'
+
create_makefile 'psych'
# :startdoc:
diff --git a/ext/psych/lib/psych.rb b/ext/psych/lib/psych.rb
index e9571b7414..19d8b2bc12 100644
--- a/ext/psych/lib/psych.rb
+++ b/ext/psych/lib/psych.rb
@@ -18,12 +18,10 @@ require 'psych/handlers/document_stream'
###
# = Overview
#
-# Psych is a YAML parser and emitter.
-# Psych leverages libyaml [Home page: http://pyyaml.org/wiki/LibYAML]
-# or [Git repo: https://github.com/zerotao/libyaml] for its YAML parsing
-# and emitting capabilities. In addition to wrapping libyaml, Psych also
-# knows how to serialize and de-serialize most Ruby objects to and from
-# the YAML format.
+# Psych is a YAML parser and emitter. Psych leverages
+# libyaml[http://libyaml.org] for it's YAML parsing and emitting capabilities.
+# In addition to wrapping libyaml, Psych also knows how to serialize and
+# de-serialize most Ruby objects to and from the YAML format.
#
# = I NEED TO PARSE OR EMIT YAML RIGHT NOW!
#
@@ -95,7 +93,7 @@ require 'psych/handlers/document_stream'
module Psych
# The version is Psych you're using
- VERSION = '2.0.0'
+ VERSION = '1.3.4'
# The version of libyaml Psych is using
LIBYAML_VERSION = Psych.libyaml_version.join '.'
@@ -123,7 +121,7 @@ module Psych
# Psych.load("--- `", "file.txt")
# rescue Psych::SyntaxError => ex
# ex.file # => 'file.txt'
- # ex.message # => "(file.txt): found character that cannot start any token"
+ # ex.message # => "(foo.txt): found character that cannot start any token"
# end
def self.load yaml, filename = nil
result = parse(yaml, filename)
@@ -145,7 +143,7 @@ module Psych
# Psych.parse("--- `", "file.txt")
# rescue Psych::SyntaxError => ex
# ex.file # => 'file.txt'
- # ex.message # => "(file.txt): found character that cannot start any token"
+ # ex.message # => "(foo.txt): found character that cannot start any token"
# end
#
# See Psych::Nodes for more information about YAML AST.
@@ -195,7 +193,7 @@ module Psych
# Psych.parse_stream("--- `", "file.txt")
# rescue Psych::SyntaxError => ex
# ex.file # => 'file.txt'
- # ex.message # => "(file.txt): found character that cannot start any token"
+ # ex.message # => "(foo.txt): found character that cannot start any token"
# end
#
# See Psych::Nodes for more information about YAML AST.
diff --git a/ext/psych/lib/psych/core_ext.rb b/ext/psych/lib/psych/core_ext.rb
index 9c8134da7e..4a04c2d128 100644
--- a/ext/psych/lib/psych/core_ext.rb
+++ b/ext/psych/lib/psych/core_ext.rb
@@ -31,5 +31,12 @@ class Module
end
if defined?(::IRB)
- require 'psych/y'
+module Kernel
+ def psych_y *objects
+ puts Psych.dump_stream(*objects)
+ end
+ remove_method :y rescue nil
+ alias y psych_y
+ private :y
+end
end
diff --git a/ext/psych/lib/psych/deprecated.rb b/ext/psych/lib/psych/deprecated.rb
index 1e42859b22..333c3a1016 100644
--- a/ext/psych/lib/psych/deprecated.rb
+++ b/ext/psych/lib/psych/deprecated.rb
@@ -21,7 +21,6 @@ module Psych
target.psych_to_yaml unless opts[:nodump]
end
- # This method is deprecated, use Psych.load_stream instead.
def self.load_documents yaml, &block
if $VERBOSE
warn "#{caller[0]}: load_documents is deprecated, use load_stream"
diff --git a/ext/psych/lib/psych/handler.rb b/ext/psych/lib/psych/handler.rb
index c55afe745f..d3b99636c4 100644
--- a/ext/psych/lib/psych/handler.rb
+++ b/ext/psych/lib/psych/handler.rb
@@ -25,19 +25,6 @@ module Psych
# Default dumping options
OPTIONS = DumperOptions.new
- # Events that a Handler should respond to.
- EVENTS = [ :alias,
- :empty,
- :end_document,
- :end_mapping,
- :end_sequence,
- :end_stream,
- :scalar,
- :start_document,
- :start_mapping,
- :start_sequence,
- :start_stream ]
-
###
# Called with +encoding+ when the YAML stream starts. This method is
# called once per stream. A stream may contain multiple documents.
diff --git a/ext/psych/lib/psych/handlers/recorder.rb b/ext/psych/lib/psych/handlers/recorder.rb
deleted file mode 100644
index 4eae62e5f9..0000000000
--- a/ext/psych/lib/psych/handlers/recorder.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-require 'psych/handler'
-
-module Psych
- module Handlers
- ###
- # This handler will capture an event and record the event. Recorder events
- # are available vial Psych::Handlers::Recorder#events.
- #
- # For example:
- #
- # recorder = Psych::Handlers::Recorder.new
- # parser = Psych::Parser.new recorder
- # parser.parse '--- foo'
- #
- # recorder.events # => [list of events]
- #
- # # Replay the events
- #
- # emitter = Psych::Emitter.new $stdout
- # recorder.events.each do |m, args|
- # emitter.send m, *args
- # end
-
- class Recorder < Psych::Handler
- attr_reader :events
-
- def initialize
- @events = []
- super
- end
-
- EVENTS.each do |event|
- define_method event do |*args|
- @events << [event, args]
- end
- end
- end
- end
-end
diff --git a/ext/psych/lib/psych/scalar_scanner.rb b/ext/psych/lib/psych/scalar_scanner.rb
index 8aa594e333..fa2d385a63 100644
--- a/ext/psych/lib/psych/scalar_scanner.rb
+++ b/ext/psych/lib/psych/scalar_scanner.rb
@@ -8,33 +8,23 @@ module Psych
TIME = /^\d{4}-\d{1,2}-\d{1,2}([Tt]|\s+)\d{1,2}:\d\d:\d\d(\.\d*)?(\s*Z|[-+]\d{1,2}(:\d\d)?)?/
# Taken from http://yaml.org/type/float.html
- FLOAT = /^(?:[-+]?([0-9][0-9_,]*)?\.[0-9]*([eE][-+][0-9]+)?(?# base 10)
+ FLOAT = /^(?:[-+]?([0-9][0-9_,]*)?\.[0-9.]*([eE][-+][0-9]+)?(?# base 10)
|[-+]?[0-9][0-9_,]*(:[0-5]?[0-9])+\.[0-9_]*(?# base 60)
|[-+]?\.(inf|Inf|INF)(?# infinity)
|\.(nan|NaN|NAN)(?# not a number))$/x
- # Taken from http://yaml.org/type/int.html
- INTEGER = /^(?:[-+]?0b[0-1_]+ (?# base 2)
- |[-+]?0[0-7_]+ (?# base 8)
- |[-+]?(?:0|[1-9][0-9_]*) (?# base 10)
- |[-+]?0x[0-9a-fA-F_]+ (?# base 16))$/x
-
# Create a new scanner
def initialize
@string_cache = {}
- @symbol_cache = {}
end
# Tokenize +string+ returning the ruby object
def tokenize string
return nil if string.empty?
return string if @string_cache.key?(string)
- return @symbol_cache[string] if @symbol_cache.key?(string)
case string
- # Check for a String type, being careful not to get caught by hash keys, hex values, and
- # special floats (e.g., -.inf).
- when /^[^\d\.:-]?[A-Za-z_\s!@#\$%\^&\*\(\)\{\}\<\>\|\/\\~;=]+/
+ when /^[A-Za-z~]/
if string.length > 5
@string_cache[string] = true
return string
@@ -55,11 +45,7 @@ module Psych
string
end
when TIME
- begin
- parse_time string
- rescue ArgumentError
- string
- end
+ parse_time string
when /^\d{4}-(?:1[012]|0\d|\d)-(?:[12]\d|3[01]|0\d|\d)$/
require 'date'
begin
@@ -68,16 +54,16 @@ module Psych
string
end
when /^\.inf$/i
- Float::INFINITY
+ 1 / 0.0
when /^-\.inf$/i
- -Float::INFINITY
+ -1 / 0.0
when /^\.nan$/i
- Float::NAN
+ 0.0 / 0.0
when /^:./
if string =~ /^:(["'])(.*)\1/
- @symbol_cache[string] = $2.sub(/^:/, '').to_sym
+ $2.sub(/^:/, '').to_sym
else
- @symbol_cache[string] = string.sub(/^:/, '').to_sym
+ string.sub(/^:/, '').to_sym
end
when /^[-+]?[0-9][0-9_]*(:[0-5]?[0-9])+$/
i = 0
@@ -92,15 +78,20 @@ module Psych
end
i
when FLOAT
- if string == '.'
- @string_cache[string] = true
- string
- else
- Float(string.gsub(/[,_]|\.$/, ''))
+ begin
+ return Float(string.gsub(/[,_]/, ''))
+ rescue ArgumentError
end
+
+ @string_cache[string] = true
+ string
else
- int = parse_int string.gsub(/[,_]/, '')
- return int if int
+ if string.count('.') < 2
+ begin
+ return Integer(string.gsub(/[,_]/, ''))
+ rescue ArgumentError
+ end
+ end
@string_cache[string] = true
string
@@ -108,13 +99,6 @@ module Psych
end
###
- # Parse and return an int from +string+
- def parse_int string
- return unless INTEGER === string
- Integer(string)
- end
-
- ###
# Parse and return a Time from +string+
def parse_time string
date, time = *(string.split(/[ tT]/, 2))
diff --git a/ext/psych/lib/psych/syntax_error.rb b/ext/psych/lib/psych/syntax_error.rb
index f972256f9e..f79743dba4 100644
--- a/ext/psych/lib/psych/syntax_error.rb
+++ b/ext/psych/lib/psych/syntax_error.rb
@@ -1,8 +1,5 @@
module Psych
- class Error < RuntimeError
- end
-
- class SyntaxError < Error
+ class SyntaxError < ::SyntaxError
attr_reader :file, :line, :column, :offset, :problem, :context
def initialize file, line, col, offset, problem, context
diff --git a/ext/psych/lib/psych/visitors/to_ruby.rb b/ext/psych/lib/psych/visitors/to_ruby.rb
index 9ccf420c34..088301ac14 100644
--- a/ext/psych/lib/psych/visitors/to_ruby.rb
+++ b/ext/psych/lib/psych/visitors/to_ruby.rb
@@ -118,8 +118,6 @@ module Psych
end
case o.tag
- when nil
- register_empty(o)
when '!omap', 'tag:yaml.org,2002:omap'
map = register(o, Psych::Omap.new)
o.children.each { |a|
@@ -132,7 +130,9 @@ module Psych
o.children.each { |c| list.push accept c }
list
else
- register_empty(o)
+ list = register(o, [])
+ o.children.each { |c| list.push accept c }
+ list
end
end
@@ -141,6 +141,28 @@ module Psych
return revive_hash({}, o) unless o.tag
case o.tag
+ when /^!(?:str|ruby\/string)(?::(.*))?/, 'tag:yaml.org,2002:str'
+ klass = resolve_class($1)
+ members = Hash[*o.children.map { |c| accept c }]
+ string = members.delete 'str'
+
+ if klass
+ string = klass.allocate.replace string
+ register(o, string)
+ end
+
+ init_with(string, members.map { |k,v| [k.to_s.sub(/^@/, ''),v] }, o)
+ when /^!ruby\/array:(.*)$/
+ klass = resolve_class($1)
+ list = register(o, klass.allocate)
+
+ members = Hash[o.children.map { |c| accept c }.each_slice(2).to_a]
+ list.replace members['internal']
+
+ members['ivars'].each do |ivar, v|
+ list.instance_variable_set ivar, v
+ end
+ list
when /^!ruby\/struct:?(.*)?$/
klass = resolve_class($1)
@@ -165,43 +187,6 @@ module Psych
Struct.new(*h.map { |k,v| k.to_sym }).new(*h.map { |k,v| v })
end
- when /^!ruby\/object:?(.*)?$/
- name = $1 || 'Object'
-
- if name == 'Complex'
- h = Hash[*o.children.map { |c| accept c }]
- register o, Complex(h['real'], h['image'])
- elsif name == 'Rational'
- h = Hash[*o.children.map { |c| accept c }]
- register o, Rational(h['numerator'], h['denominator'])
- else
- obj = revive((resolve_class(name) || Object), o)
- obj
- end
-
- when /^!(?:str|ruby\/string)(?::(.*))?/, 'tag:yaml.org,2002:str'
- klass = resolve_class($1)
- members = Hash[*o.children.map { |c| accept c }]
- string = members.delete 'str'
-
- if klass
- string = klass.allocate.replace string
- register(o, string)
- end
-
- init_with(string, members.map { |k,v| [k.to_s.sub(/^@/, ''),v] }, o)
- when /^!ruby\/array:(.*)$/
- klass = resolve_class($1)
- list = register(o, klass.allocate)
-
- members = Hash[o.children.map { |c| accept c }.each_slice(2).to_a]
- list.replace members['internal']
-
- members['ivars'].each do |ivar, v|
- list.instance_variable_set ivar, v
- end
- list
-
when '!ruby/range'
h = Hash[*o.children.map { |c| accept c }]
register o, Range.new(h['begin'], h['end'], h['excl'])
@@ -221,6 +206,19 @@ module Psych
end
set
+ when '!ruby/object:Complex'
+ h = Hash[*o.children.map { |c| accept c }]
+ register o, Complex(h['real'], h['image'])
+
+ when '!ruby/object:Rational'
+ h = Hash[*o.children.map { |c| accept c }]
+ register o, Rational(h['numerator'], h['denominator'])
+
+ when /^!ruby\/object:?(.*)?$/
+ name = $1 || 'Object'
+ obj = revive((resolve_class(name) || Object), o)
+ obj
+
when /^!map:(.*)$/, /^!ruby\/hash:(.*)$/
revive_hash resolve_class($1).new, o
@@ -254,51 +252,31 @@ module Psych
object
end
- def register_empty object
- list = register(object, [])
- object.children.each { |c| list.push accept c }
- list
- end
-
def revive_hash hash, o
@st[o.anchor] = hash if o.anchor
- o.children.each_slice(2) { |k,v|
+ o.children.each_slice(2) { |k,v|
key = accept(k)
- val = accept(v)
if key == '<<'
case v
when Nodes::Alias
- begin
- hash.merge! val
- rescue TypeError
- hash[key] = val
- end
+ hash.merge! accept(v)
when Nodes::Sequence
- begin
- h = {}
- val.reverse_each do |value|
- h.merge! value
- end
- hash.merge! h
- rescue TypeError
- hash[key] = val
+ accept(v).reverse_each do |value|
+ hash.merge! value
end
else
- hash[key] = val
+ hash[key] = accept(v)
end
else
- hash[key] = val
+ hash[key] = accept(v)
end
}
hash
end
- def merge_key hash, key, val
- end
-
def revive klass, node
s = klass.allocate
@st[node.anchor] = s if node.anchor
diff --git a/ext/psych/lib/psych/visitors/yaml_tree.rb b/ext/psych/lib/psych/visitors/yaml_tree.rb
index 6b6a5ffa19..948a976dd1 100644
--- a/ext/psych/lib/psych/visitors/yaml_tree.rb
+++ b/ext/psych/lib/psych/visitors/yaml_tree.rb
@@ -8,30 +8,6 @@ module Psych
# builder.tree # => #<Psych::Nodes::Stream .. }
#
class YAMLTree < Psych::Visitors::Visitor
- class Registrar # :nodoc:
- def initialize
- @obj_to_id = {}
- @obj_to_node = {}
- @counter = 0
- end
-
- def register target, node
- @obj_to_node[target.object_id] = node
- end
-
- def key? target
- @obj_to_node.key? target.object_id
- end
-
- def id_for target
- @obj_to_id[target.object_id] ||= (@counter += 1)
- end
-
- def node_for target
- @obj_to_node[target.object_id]
- end
- end
-
attr_reader :started, :finished
alias :finished? :finished
alias :started? :started
@@ -41,7 +17,7 @@ module Psych
@started = false
@finished = false
@emitter = emitter
- @st = Registrar.new
+ @st = {}
@ss = ss
@options = options
@coders = []
@@ -71,7 +47,6 @@ module Psych
def tree
finish unless finished?
- @emitter.root
end
def push object
@@ -90,15 +65,15 @@ module Psych
@emitter.start_document version, [], false
accept object
- @emitter.end_document !@emitter.streaming?
+ @emitter.end_document
end
alias :<< :push
def accept target
# return any aliases we find
- if @st.key? target
- oid = @st.id_for target
- node = @st.node_for target
+ if @st.key? target.object_id
+ oid = target.object_id
+ node = @st[oid]
anchor = oid.to_s
node.anchor = anchor
return @emitter.alias anchor
@@ -245,33 +220,27 @@ module Psych
end
def binary? string
- (string.encoding == Encoding::ASCII_8BIT && !string.ascii_only?) ||
+ string.encoding == Encoding::ASCII_8BIT ||
string.index("\x00") ||
- string.count("\x00-\x7F", "^ -~\t\r\n").fdiv(string.length) > 0.3 ||
- string.class != String
+ string.count("\x00-\x7F", "^ -~\t\r\n").fdiv(string.length) > 0.3
end
private :binary?
def visit_String o
- plain = true
- quote = true
- style = Nodes::Scalar::PLAIN
- tag = nil
- str = o
+ plain = false
+ quote = false
+ style = Nodes::Scalar::ANY
if binary?(o)
str = [o].pack('m').chomp
tag = '!binary' # FIXME: change to below when syck is removed
#tag = 'tag:yaml.org,2002:binary'
style = Nodes::Scalar::LITERAL
- plain = false
- quote = false
- elsif o =~ /\n/
- style = Nodes::Scalar::LITERAL
else
- unless String === @ss.tokenize(o)
- style = Nodes::Scalar::SINGLE_QUOTED
- end
+ str = o
+ tag = nil
+ quote = !(String === @ss.tokenize(o))
+ plain = !quote
end
ivars = find_ivars o
@@ -433,7 +402,7 @@ module Psych
end
def register target, yaml_obj
- @st.register target, yaml_obj
+ @st[target.object_id] = yaml_obj
yaml_obj
end
diff --git a/ext/psych/lib/psych/y.rb b/ext/psych/lib/psych/y.rb
deleted file mode 100644
index d0e049d4e5..0000000000
--- a/ext/psych/lib/psych/y.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-module Kernel
- ###
- # An alias for Psych.dump_stream meant to be used with IRB.
- def y *objects
- puts Psych.dump_stream(*objects)
- end
- private :y
-end
-
diff --git a/ext/psych/psych_parser.c b/ext/psych/parser.c
index 8c65ce1307..0908a1b49f 100644
--- a/ext/psych/psych_parser.c
+++ b/ext/psych/parser.c
@@ -557,7 +557,7 @@ void Init_psych_parser()
rb_define_const(cPsychParser, "UTF16BE", INT2NUM(YAML_UTF16BE_ENCODING));
rb_require("psych/syntax_error");
- ePsychSyntaxError = rb_const_get(mPsych, rb_intern("SyntaxError"));
+ ePsychSyntaxError = rb_define_class_under(mPsych, "SyntaxError", rb_eSyntaxError);
rb_define_method(cPsychParser, "parse", parse, -1);
rb_define_method(cPsychParser, "mark", mark, 0);
diff --git a/ext/psych/psych_parser.h b/ext/psych/parser.h
index 25e896f01d..25e896f01d 100644
--- a/ext/psych/psych_parser.h
+++ b/ext/psych/parser.h
diff --git a/ext/psych/psych.gemspec b/ext/psych/psych.gemspec
deleted file mode 100644
index c15449c6ae..0000000000
--- a/ext/psych/psych.gemspec
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-
-Gem::Specification.new do |s|
- s.name = "psych"
- s.version = "2.0.0"
-
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
- s.authors = ["Aaron Patterson"]
- s.date = "2012-11-28"
- s.description = "Psych is a YAML parser and emitter. Psych leverages libyaml[http://pyyaml.org/wiki/LibYAML]\nfor its YAML parsing and emitting capabilities. In addition to wrapping\nlibyaml, Psych also knows how to serialize and de-serialize most Ruby objects\nto and from the YAML format."
- s.email = ["aaron@tenderlovemaking.com"]
- s.extensions = ["ext/psych/extconf.rb"]
- s.extra_rdoc_files = ["CHANGELOG.rdoc", "Manifest.txt", "README.rdoc"]
- s.files = [".autotest", ".travis.yml", "CHANGELOG.rdoc", "Manifest.txt", "README.rdoc", "Rakefile", "ext/psych/extconf.rb", "ext/psych/psych.c", "ext/psych/psych.h", "ext/psych/psych_emitter.c", "ext/psych/psych_emitter.h", "ext/psych/psych_parser.c", "ext/psych/psych_parser.h", "ext/psych/psych_to_ruby.c", "ext/psych/psych_to_ruby.h", "ext/psych/psych_yaml_tree.c", "ext/psych/psych_yaml_tree.h", "ext/psych/yaml/LICENSE", "ext/psych/yaml/api.c", "ext/psych/yaml/config.h", "ext/psych/yaml/dumper.c", "ext/psych/yaml/emitter.c", "ext/psych/yaml/loader.c", "ext/psych/yaml/parser.c", "ext/psych/yaml/reader.c", "ext/psych/yaml/scanner.c", "ext/psych/yaml/writer.c", "ext/psych/yaml/yaml.h", "ext/psych/yaml/yaml_private.h", "lib/psych.rb", "lib/psych/coder.rb", "lib/psych/core_ext.rb", "lib/psych/deprecated.rb", "lib/psych/handler.rb", "lib/psych/handlers/document_stream.rb", "lib/psych/handlers/recorder.rb", "lib/psych/json/ruby_events.rb", "lib/psych/json/stream.rb", "lib/psych/json/tree_builder.rb", "lib/psych/json/yaml_events.rb", "lib/psych/nodes.rb", "lib/psych/nodes/alias.rb", "lib/psych/nodes/document.rb", "lib/psych/nodes/mapping.rb", "lib/psych/nodes/node.rb", "lib/psych/nodes/scalar.rb", "lib/psych/nodes/sequence.rb", "lib/psych/nodes/stream.rb", "lib/psych/omap.rb", "lib/psych/parser.rb", "lib/psych/scalar_scanner.rb", "lib/psych/set.rb", "lib/psych/stream.rb", "lib/psych/streaming.rb", "lib/psych/syntax_error.rb", "lib/psych/tree_builder.rb", "lib/psych/visitors.rb", "lib/psych/visitors/depth_first.rb", "lib/psych/visitors/emitter.rb", "lib/psych/visitors/json_tree.rb", "lib/psych/visitors/to_ruby.rb", "lib/psych/visitors/visitor.rb", "lib/psych/visitors/yaml_tree.rb", "lib/psych/y.rb", "test/psych/handlers/test_recorder.rb", "test/psych/helper.rb", "test/psych/json/test_stream.rb", "test/psych/nodes/test_enumerable.rb", "test/psych/test_alias_and_anchor.rb", "test/psych/test_array.rb", "test/psych/test_boolean.rb", "test/psych/test_class.rb", "test/psych/test_coder.rb", "test/psych/test_date_time.rb", "test/psych/test_deprecated.rb", "test/psych/test_document.rb", "test/psych/test_emitter.rb", "test/psych/test_encoding.rb", "test/psych/test_engine_manager.rb", "test/psych/test_exception.rb", "test/psych/test_hash.rb", "test/psych/test_json_tree.rb", "test/psych/test_merge_keys.rb", "test/psych/test_nil.rb", "test/psych/test_null.rb", "test/psych/test_numeric.rb", "test/psych/test_object.rb", "test/psych/test_object_references.rb", "test/psych/test_omap.rb", "test/psych/test_parser.rb", "test/psych/test_psych.rb", "test/psych/test_scalar.rb", "test/psych/test_scalar_scanner.rb", "test/psych/test_serialize_subclasses.rb", "test/psych/test_set.rb", "test/psych/test_stream.rb", "test/psych/test_string.rb", "test/psych/test_struct.rb", "test/psych/test_symbol.rb", "test/psych/test_tainted.rb", "test/psych/test_to_yaml_properties.rb", "test/psych/test_tree_builder.rb", "test/psych/test_yaml.rb", "test/psych/test_yamldbm.rb", "test/psych/test_yamlstore.rb", "test/psych/visitors/test_depth_first.rb", "test/psych/visitors/test_emitter.rb", "test/psych/visitors/test_to_ruby.rb", "test/psych/visitors/test_yaml_tree.rb", ".gemtest"]
- s.homepage = "http://github.com/tenderlove/psych"
- s.rdoc_options = ["--main", "README.rdoc"]
- s.require_paths = ["lib"]
- s.required_ruby_version = Gem::Requirement.new(">= 1.9.2")
- s.rubyforge_project = "psych"
- s.rubygems_version = "1.8.24"
- s.summary = "Psych is a YAML parser and emitter"
- s.test_files = ["test/psych/handlers/test_recorder.rb", "test/psych/json/test_stream.rb", "test/psych/nodes/test_enumerable.rb", "test/psych/test_alias_and_anchor.rb", "test/psych/test_array.rb", "test/psych/test_boolean.rb", "test/psych/test_class.rb", "test/psych/test_coder.rb", "test/psych/test_date_time.rb", "test/psych/test_deprecated.rb", "test/psych/test_document.rb", "test/psych/test_emitter.rb", "test/psych/test_encoding.rb", "test/psych/test_engine_manager.rb", "test/psych/test_exception.rb", "test/psych/test_hash.rb", "test/psych/test_json_tree.rb", "test/psych/test_merge_keys.rb", "test/psych/test_nil.rb", "test/psych/test_null.rb", "test/psych/test_numeric.rb", "test/psych/test_object.rb", "test/psych/test_object_references.rb", "test/psych/test_omap.rb", "test/psych/test_parser.rb", "test/psych/test_psych.rb", "test/psych/test_scalar.rb", "test/psych/test_scalar_scanner.rb", "test/psych/test_serialize_subclasses.rb", "test/psych/test_set.rb", "test/psych/test_stream.rb", "test/psych/test_string.rb", "test/psych/test_struct.rb", "test/psych/test_symbol.rb", "test/psych/test_tainted.rb", "test/psych/test_to_yaml_properties.rb", "test/psych/test_tree_builder.rb", "test/psych/test_yaml.rb", "test/psych/test_yamldbm.rb", "test/psych/test_yamlstore.rb", "test/psych/visitors/test_depth_first.rb", "test/psych/visitors/test_emitter.rb", "test/psych/visitors/test_to_ruby.rb", "test/psych/visitors/test_yaml_tree.rb"]
-
-end
diff --git a/ext/psych/psych.h b/ext/psych/psych.h
index 1830ca4b19..9f1be449a2 100644
--- a/ext/psych/psych.h
+++ b/ext/psych/psych.h
@@ -9,10 +9,10 @@
#include <yaml.h>
-#include <psych_parser.h>
-#include <psych_emitter.h>
-#include <psych_to_ruby.h>
-#include <psych_yaml_tree.h>
+#include <parser.h>
+#include <emitter.h>
+#include <to_ruby.h>
+#include <yaml_tree.h>
extern VALUE mPsych;
diff --git a/ext/psych/psych_to_ruby.c b/ext/psych/to_ruby.c
index ed5245e12e..ed5245e12e 100644
--- a/ext/psych/psych_to_ruby.c
+++ b/ext/psych/to_ruby.c
diff --git a/ext/psych/psych_to_ruby.h b/ext/psych/to_ruby.h
index 7b8e757a45..7b8e757a45 100644
--- a/ext/psych/psych_to_ruby.h
+++ b/ext/psych/to_ruby.h
diff --git a/ext/psych/yaml/LICENSE b/ext/psych/yaml/LICENSE
deleted file mode 100644
index 050ced23f6..0000000000
--- a/ext/psych/yaml/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2006 Kirill Simonov
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/ext/psych/yaml/api.c b/ext/psych/yaml/api.c
deleted file mode 100644
index e0b9d979cc..0000000000
--- a/ext/psych/yaml/api.c
+++ /dev/null
@@ -1,1415 +0,0 @@
-
-#include "yaml_private.h"
-
-/*
- * Get the library version.
- */
-
-YAML_DECLARE(const char *)
-yaml_get_version_string(void)
-{
- return YAML_VERSION_STRING;
-}
-
-/*
- * Get the library version numbers.
- */
-
-YAML_DECLARE(void)
-yaml_get_version(int *major, int *minor, int *patch)
-{
- *major = YAML_VERSION_MAJOR;
- *minor = YAML_VERSION_MINOR;
- *patch = YAML_VERSION_PATCH;
-}
-
-/*
- * Allocate a dynamic memory block.
- */
-
-YAML_DECLARE(void *)
-yaml_malloc(size_t size)
-{
- return malloc(size ? size : 1);
-}
-
-/*
- * Reallocate a dynamic memory block.
- */
-
-YAML_DECLARE(void *)
-yaml_realloc(void *ptr, size_t size)
-{
- return ptr ? realloc(ptr, size ? size : 1) : malloc(size ? size : 1);
-}
-
-/*
- * Free a dynamic memory block.
- */
-
-YAML_DECLARE(void)
-yaml_free(void *ptr)
-{
- if (ptr) free(ptr);
-}
-
-/*
- * Duplicate a string.
- */
-
-YAML_DECLARE(yaml_char_t *)
-yaml_strdup(const yaml_char_t *str)
-{
- if (!str)
- return NULL;
-
- return (yaml_char_t *)strdup((char *)str);
-}
-
-/*
- * Extend a string.
- */
-
-YAML_DECLARE(int)
-yaml_string_extend(yaml_char_t **start,
- yaml_char_t **pointer, yaml_char_t **end)
-{
- yaml_char_t *new_start = yaml_realloc(*start, (*end - *start)*2);
-
- if (!new_start) return 0;
-
- memset(new_start + (*end - *start), 0, *end - *start);
-
- *pointer = new_start + (*pointer - *start);
- *end = new_start + (*end - *start)*2;
- *start = new_start;
-
- return 1;
-}
-
-/*
- * Append a string B to a string A.
- */
-
-YAML_DECLARE(int)
-yaml_string_join(
- yaml_char_t **a_start, yaml_char_t **a_pointer, yaml_char_t **a_end,
- yaml_char_t **b_start, yaml_char_t **b_pointer, yaml_char_t **b_end)
-{
- if (*b_start == *b_pointer)
- return 1;
-
- while (*a_end - *a_pointer <= *b_pointer - *b_start) {
- if (!yaml_string_extend(a_start, a_pointer, a_end))
- return 0;
- }
-
- memcpy(*a_pointer, *b_start, *b_pointer - *b_start);
- *a_pointer += *b_pointer - *b_start;
-
- return 1;
-}
-
-/*
- * Extend a stack.
- */
-
-YAML_DECLARE(int)
-yaml_stack_extend(void **start, void **top, void **end)
-{
- void *new_start = yaml_realloc(*start, ((char *)*end - (char *)*start)*2);
-
- if (!new_start) return 0;
-
- *top = (char *)new_start + ((char *)*top - (char *)*start);
- *end = (char *)new_start + ((char *)*end - (char *)*start)*2;
- *start = new_start;
-
- return 1;
-}
-
-/*
- * Extend or move a queue.
- */
-
-YAML_DECLARE(int)
-yaml_queue_extend(void **start, void **head, void **tail, void **end)
-{
- /* Check if we need to resize the queue. */
-
- if (*start == *head && *tail == *end) {
- void *new_start = yaml_realloc(*start,
- ((char *)*end - (char *)*start)*2);
-
- if (!new_start) return 0;
-
- *head = (char *)new_start + ((char *)*head - (char *)*start);
- *tail = (char *)new_start + ((char *)*tail - (char *)*start);
- *end = (char *)new_start + ((char *)*end - (char *)*start)*2;
- *start = new_start;
- }
-
- /* Check if we need to move the queue at the beginning of the buffer. */
-
- if (*tail == *end) {
- if (*head != *tail) {
- memmove(*start, *head, (char *)*tail - (char *)*head);
- }
- *tail = (char *)*tail - (char *)*head + (char *)*start;
- *head = *start;
- }
-
- return 1;
-}
-
-
-/*
- * Create a new parser object.
- */
-
-YAML_DECLARE(int)
-yaml_parser_initialize(yaml_parser_t *parser)
-{
- assert(parser); /* Non-NULL parser object expected. */
-
- memset(parser, 0, sizeof(yaml_parser_t));
- if (!BUFFER_INIT(parser, parser->raw_buffer, INPUT_RAW_BUFFER_SIZE))
- goto error;
- if (!BUFFER_INIT(parser, parser->buffer, INPUT_BUFFER_SIZE))
- goto error;
- if (!QUEUE_INIT(parser, parser->tokens, INITIAL_QUEUE_SIZE))
- goto error;
- if (!STACK_INIT(parser, parser->indents, INITIAL_STACK_SIZE))
- goto error;
- if (!STACK_INIT(parser, parser->simple_keys, INITIAL_STACK_SIZE))
- goto error;
- if (!STACK_INIT(parser, parser->states, INITIAL_STACK_SIZE))
- goto error;
- if (!STACK_INIT(parser, parser->marks, INITIAL_STACK_SIZE))
- goto error;
- if (!STACK_INIT(parser, parser->tag_directives, INITIAL_STACK_SIZE))
- goto error;
-
- return 1;
-
-error:
-
- BUFFER_DEL(parser, parser->raw_buffer);
- BUFFER_DEL(parser, parser->buffer);
- QUEUE_DEL(parser, parser->tokens);
- STACK_DEL(parser, parser->indents);
- STACK_DEL(parser, parser->simple_keys);
- STACK_DEL(parser, parser->states);
- STACK_DEL(parser, parser->marks);
- STACK_DEL(parser, parser->tag_directives);
-
- return 0;
-}
-
-/*
- * Destroy a parser object.
- */
-
-YAML_DECLARE(void)
-yaml_parser_delete(yaml_parser_t *parser)
-{
- assert(parser); /* Non-NULL parser object expected. */
-
- BUFFER_DEL(parser, parser->raw_buffer);
- BUFFER_DEL(parser, parser->buffer);
- while (!QUEUE_EMPTY(parser, parser->tokens)) {
- yaml_token_delete(&DEQUEUE(parser, parser->tokens));
- }
- QUEUE_DEL(parser, parser->tokens);
- STACK_DEL(parser, parser->indents);
- STACK_DEL(parser, parser->simple_keys);
- STACK_DEL(parser, parser->states);
- STACK_DEL(parser, parser->marks);
- while (!STACK_EMPTY(parser, parser->tag_directives)) {
- yaml_tag_directive_t tag_directive = POP(parser, parser->tag_directives);
- yaml_free(tag_directive.handle);
- yaml_free(tag_directive.prefix);
- }
- STACK_DEL(parser, parser->tag_directives);
-
- memset(parser, 0, sizeof(yaml_parser_t));
-}
-
-/*
- * String read handler.
- */
-
-static int
-yaml_string_read_handler(void *data, unsigned char *buffer, size_t size,
- size_t *size_read)
-{
- yaml_parser_t *parser = data;
-
- if (parser->input.string.current == parser->input.string.end) {
- *size_read = 0;
- return 1;
- }
-
- if (size > (size_t)(parser->input.string.end
- - parser->input.string.current)) {
- size = parser->input.string.end - parser->input.string.current;
- }
-
- memcpy(buffer, parser->input.string.current, size);
- parser->input.string.current += size;
- *size_read = size;
- return 1;
-}
-
-/*
- * File read handler.
- */
-
-static int
-yaml_file_read_handler(void *data, unsigned char *buffer, size_t size,
- size_t *size_read)
-{
- yaml_parser_t *parser = data;
-
- *size_read = fread(buffer, 1, size, parser->input.file);
- return !ferror(parser->input.file);
-}
-
-/*
- * Set a string input.
- */
-
-YAML_DECLARE(void)
-yaml_parser_set_input_string(yaml_parser_t *parser,
- const unsigned char *input, size_t size)
-{
- assert(parser); /* Non-NULL parser object expected. */
- assert(!parser->read_handler); /* You can set the source only once. */
- assert(input); /* Non-NULL input string expected. */
-
- parser->read_handler = yaml_string_read_handler;
- parser->read_handler_data = parser;
-
- parser->input.string.start = input;
- parser->input.string.current = input;
- parser->input.string.end = input+size;
-}
-
-/*
- * Set a file input.
- */
-
-YAML_DECLARE(void)
-yaml_parser_set_input_file(yaml_parser_t *parser, FILE *file)
-{
- assert(parser); /* Non-NULL parser object expected. */
- assert(!parser->read_handler); /* You can set the source only once. */
- assert(file); /* Non-NULL file object expected. */
-
- parser->read_handler = yaml_file_read_handler;
- parser->read_handler_data = parser;
-
- parser->input.file = file;
-}
-
-/*
- * Set a generic input.
- */
-
-YAML_DECLARE(void)
-yaml_parser_set_input(yaml_parser_t *parser,
- yaml_read_handler_t *handler, void *data)
-{
- assert(parser); /* Non-NULL parser object expected. */
- assert(!parser->read_handler); /* You can set the source only once. */
- assert(handler); /* Non-NULL read handler expected. */
-
- parser->read_handler = handler;
- parser->read_handler_data = data;
-}
-
-/*
- * Set the source encoding.
- */
-
-YAML_DECLARE(void)
-yaml_parser_set_encoding(yaml_parser_t *parser, yaml_encoding_t encoding)
-{
- assert(parser); /* Non-NULL parser object expected. */
- assert(!parser->encoding); /* Encoding is already set or detected. */
-
- parser->encoding = encoding;
-}
-
-/*
- * Create a new emitter object.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_initialize(yaml_emitter_t *emitter)
-{
- assert(emitter); /* Non-NULL emitter object expected. */
-
- memset(emitter, 0, sizeof(yaml_emitter_t));
- if (!BUFFER_INIT(emitter, emitter->buffer, OUTPUT_BUFFER_SIZE))
- goto error;
- if (!BUFFER_INIT(emitter, emitter->raw_buffer, OUTPUT_RAW_BUFFER_SIZE))
- goto error;
- if (!STACK_INIT(emitter, emitter->states, INITIAL_STACK_SIZE))
- goto error;
- if (!QUEUE_INIT(emitter, emitter->events, INITIAL_QUEUE_SIZE))
- goto error;
- if (!STACK_INIT(emitter, emitter->indents, INITIAL_STACK_SIZE))
- goto error;
- if (!STACK_INIT(emitter, emitter->tag_directives, INITIAL_STACK_SIZE))
- goto error;
-
- return 1;
-
-error:
-
- BUFFER_DEL(emitter, emitter->buffer);
- BUFFER_DEL(emitter, emitter->raw_buffer);
- STACK_DEL(emitter, emitter->states);
- QUEUE_DEL(emitter, emitter->events);
- STACK_DEL(emitter, emitter->indents);
- STACK_DEL(emitter, emitter->tag_directives);
-
- return 0;
-}
-
-/*
- * Destroy an emitter object.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_delete(yaml_emitter_t *emitter)
-{
- assert(emitter); /* Non-NULL emitter object expected. */
-
- BUFFER_DEL(emitter, emitter->buffer);
- BUFFER_DEL(emitter, emitter->raw_buffer);
- STACK_DEL(emitter, emitter->states);
- while (!QUEUE_EMPTY(emitter, emitter->events)) {
- yaml_event_delete(&DEQUEUE(emitter, emitter->events));
- }
- QUEUE_DEL(emitter, emitter->events);
- STACK_DEL(emitter, emitter->indents);
- while (!STACK_EMPTY(emitter, emitter->tag_directives)) {
- yaml_tag_directive_t tag_directive = POP(emitter, emitter->tag_directives);
- yaml_free(tag_directive.handle);
- yaml_free(tag_directive.prefix);
- }
- STACK_DEL(emitter, emitter->tag_directives);
- yaml_free(emitter->anchors);
-
- memset(emitter, 0, sizeof(yaml_emitter_t));
-}
-
-/*
- * String write handler.
- */
-
-static int
-yaml_string_write_handler(void *data, unsigned char *buffer, size_t size)
-{
- yaml_emitter_t *emitter = data;
-
- if (emitter->output.string.size + *emitter->output.string.size_written
- < size) {
- memcpy(emitter->output.string.buffer
- + *emitter->output.string.size_written,
- buffer,
- emitter->output.string.size
- - *emitter->output.string.size_written);
- *emitter->output.string.size_written = emitter->output.string.size;
- return 0;
- }
-
- memcpy(emitter->output.string.buffer
- + *emitter->output.string.size_written, buffer, size);
- *emitter->output.string.size_written += size;
- return 1;
-}
-
-/*
- * File write handler.
- */
-
-static int
-yaml_file_write_handler(void *data, unsigned char *buffer, size_t size)
-{
- yaml_emitter_t *emitter = data;
-
- return (fwrite(buffer, 1, size, emitter->output.file) == size);
-}
-/*
- * Set a string output.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_output_string(yaml_emitter_t *emitter,
- unsigned char *output, size_t size, size_t *size_written)
-{
- assert(emitter); /* Non-NULL emitter object expected. */
- assert(!emitter->write_handler); /* You can set the output only once. */
- assert(output); /* Non-NULL output string expected. */
-
- emitter->write_handler = yaml_string_write_handler;
- emitter->write_handler_data = emitter;
-
- emitter->output.string.buffer = output;
- emitter->output.string.size = size;
- emitter->output.string.size_written = size_written;
- *size_written = 0;
-}
-
-/*
- * Set a file output.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_output_file(yaml_emitter_t *emitter, FILE *file)
-{
- assert(emitter); /* Non-NULL emitter object expected. */
- assert(!emitter->write_handler); /* You can set the output only once. */
- assert(file); /* Non-NULL file object expected. */
-
- emitter->write_handler = yaml_file_write_handler;
- emitter->write_handler_data = emitter;
-
- emitter->output.file = file;
-}
-
-/*
- * Set a generic output handler.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_output(yaml_emitter_t *emitter,
- yaml_write_handler_t *handler, void *data)
-{
- assert(emitter); /* Non-NULL emitter object expected. */
- assert(!emitter->write_handler); /* You can set the output only once. */
- assert(handler); /* Non-NULL handler object expected. */
-
- emitter->write_handler = handler;
- emitter->write_handler_data = data;
-}
-
-/*
- * Set the output encoding.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_encoding(yaml_emitter_t *emitter, yaml_encoding_t encoding)
-{
- assert(emitter); /* Non-NULL emitter object expected. */
- assert(!emitter->encoding); /* You can set encoding only once. */
-
- emitter->encoding = encoding;
-}
-
-/*
- * Set the canonical output style.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_canonical(yaml_emitter_t *emitter, int canonical)
-{
- assert(emitter); /* Non-NULL emitter object expected. */
-
- emitter->canonical = (canonical != 0);
-}
-
-/*
- * Set the indentation increment.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_indent(yaml_emitter_t *emitter, int indent)
-{
- assert(emitter); /* Non-NULL emitter object expected. */
-
- emitter->best_indent = (1 < indent && indent < 10) ? indent : 2;
-}
-
-/*
- * Set the preferred line width.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_width(yaml_emitter_t *emitter, int width)
-{
- assert(emitter); /* Non-NULL emitter object expected. */
-
- emitter->best_width = (width >= 0) ? width : -1;
-}
-
-/*
- * Set if unescaped non-ASCII characters are allowed.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_unicode(yaml_emitter_t *emitter, int unicode)
-{
- assert(emitter); /* Non-NULL emitter object expected. */
-
- emitter->unicode = (unicode != 0);
-}
-
-/*
- * Set the preferred line break character.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_break(yaml_emitter_t *emitter, yaml_break_t line_break)
-{
- assert(emitter); /* Non-NULL emitter object expected. */
-
- emitter->line_break = line_break;
-}
-
-/*
- * Destroy a token object.
- */
-
-YAML_DECLARE(void)
-yaml_token_delete(yaml_token_t *token)
-{
- assert(token); /* Non-NULL token object expected. */
-
- switch (token->type)
- {
- case YAML_TAG_DIRECTIVE_TOKEN:
- yaml_free(token->data.tag_directive.handle);
- yaml_free(token->data.tag_directive.prefix);
- break;
-
- case YAML_ALIAS_TOKEN:
- yaml_free(token->data.alias.value);
- break;
-
- case YAML_ANCHOR_TOKEN:
- yaml_free(token->data.anchor.value);
- break;
-
- case YAML_TAG_TOKEN:
- yaml_free(token->data.tag.handle);
- yaml_free(token->data.tag.suffix);
- break;
-
- case YAML_SCALAR_TOKEN:
- yaml_free(token->data.scalar.value);
- break;
-
- default:
- break;
- }
-
- memset(token, 0, sizeof(yaml_token_t));
-}
-
-/*
- * Check if a string is a valid UTF-8 sequence.
- *
- * Check 'reader.c' for more details on UTF-8 encoding.
- */
-
-static int
-yaml_check_utf8(yaml_char_t *start, size_t length)
-{
- yaml_char_t *end = start+length;
- yaml_char_t *pointer = start;
-
- while (pointer < end) {
- unsigned char octet;
- unsigned int width;
- unsigned int value;
- size_t k;
-
- octet = pointer[0];
- width = (octet & 0x80) == 0x00 ? 1 :
- (octet & 0xE0) == 0xC0 ? 2 :
- (octet & 0xF0) == 0xE0 ? 3 :
- (octet & 0xF8) == 0xF0 ? 4 : 0;
- value = (octet & 0x80) == 0x00 ? octet & 0x7F :
- (octet & 0xE0) == 0xC0 ? octet & 0x1F :
- (octet & 0xF0) == 0xE0 ? octet & 0x0F :
- (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0;
- if (!width) return 0;
- if (pointer+width > end) return 0;
- for (k = 1; k < width; k ++) {
- octet = pointer[k];
- if ((octet & 0xC0) != 0x80) return 0;
- value = (value << 6) + (octet & 0x3F);
- }
- if (!((width == 1) ||
- (width == 2 && value >= 0x80) ||
- (width == 3 && value >= 0x800) ||
- (width == 4 && value >= 0x10000))) return 0;
-
- pointer += width;
- }
-
- return 1;
-}
-
-/*
- * Create STREAM-START.
- */
-
-YAML_DECLARE(int)
-yaml_stream_start_event_initialize(yaml_event_t *event,
- yaml_encoding_t encoding)
-{
- yaml_mark_t mark = { 0, 0, 0 };
-
- assert(event); /* Non-NULL event object is expected. */
-
- STREAM_START_EVENT_INIT(*event, encoding, mark, mark);
-
- return 1;
-}
-
-/*
- * Create STREAM-END.
- */
-
-YAML_DECLARE(int)
-yaml_stream_end_event_initialize(yaml_event_t *event)
-{
- yaml_mark_t mark = { 0, 0, 0 };
-
- assert(event); /* Non-NULL event object is expected. */
-
- STREAM_END_EVENT_INIT(*event, mark, mark);
-
- return 1;
-}
-
-/*
- * Create DOCUMENT-START.
- */
-
-YAML_DECLARE(int)
-yaml_document_start_event_initialize(yaml_event_t *event,
- yaml_version_directive_t *version_directive,
- yaml_tag_directive_t *tag_directives_start,
- yaml_tag_directive_t *tag_directives_end,
- int implicit)
-{
- struct {
- yaml_error_type_t error;
- } context;
- yaml_mark_t mark = { 0, 0, 0 };
- yaml_version_directive_t *version_directive_copy = NULL;
- struct {
- yaml_tag_directive_t *start;
- yaml_tag_directive_t *end;
- yaml_tag_directive_t *top;
- } tag_directives_copy = { NULL, NULL, NULL };
- yaml_tag_directive_t value = { NULL, NULL };
-
- assert(event); /* Non-NULL event object is expected. */
- assert((tag_directives_start && tag_directives_end) ||
- (tag_directives_start == tag_directives_end));
- /* Valid tag directives are expected. */
-
- if (version_directive) {
- version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t));
- if (!version_directive_copy) goto error;
- version_directive_copy->major = version_directive->major;
- version_directive_copy->minor = version_directive->minor;
- }
-
- if (tag_directives_start != tag_directives_end) {
- yaml_tag_directive_t *tag_directive;
- if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE))
- goto error;
- for (tag_directive = tag_directives_start;
- tag_directive != tag_directives_end; tag_directive ++) {
- assert(tag_directive->handle);
- assert(tag_directive->prefix);
- if (!yaml_check_utf8(tag_directive->handle,
- strlen((char *)tag_directive->handle)))
- goto error;
- if (!yaml_check_utf8(tag_directive->prefix,
- strlen((char *)tag_directive->prefix)))
- goto error;
- value.handle = yaml_strdup(tag_directive->handle);
- value.prefix = yaml_strdup(tag_directive->prefix);
- if (!value.handle || !value.prefix) goto error;
- if (!PUSH(&context, tag_directives_copy, value))
- goto error;
- value.handle = NULL;
- value.prefix = NULL;
- }
- }
-
- DOCUMENT_START_EVENT_INIT(*event, version_directive_copy,
- tag_directives_copy.start, tag_directives_copy.top,
- implicit, mark, mark);
-
- return 1;
-
-error:
- yaml_free(version_directive_copy);
- while (!STACK_EMPTY(context, tag_directives_copy)) {
- yaml_tag_directive_t value = POP(context, tag_directives_copy);
- yaml_free(value.handle);
- yaml_free(value.prefix);
- }
- STACK_DEL(context, tag_directives_copy);
- yaml_free(value.handle);
- yaml_free(value.prefix);
-
- return 0;
-}
-
-/*
- * Create DOCUMENT-END.
- */
-
-YAML_DECLARE(int)
-yaml_document_end_event_initialize(yaml_event_t *event, int implicit)
-{
- yaml_mark_t mark = { 0, 0, 0 };
-
- assert(event); /* Non-NULL emitter object is expected. */
-
- DOCUMENT_END_EVENT_INIT(*event, implicit, mark, mark);
-
- return 1;
-}
-
-/*
- * Create ALIAS.
- */
-
-YAML_DECLARE(int)
-yaml_alias_event_initialize(yaml_event_t *event, yaml_char_t *anchor)
-{
- yaml_mark_t mark = { 0, 0, 0 };
- yaml_char_t *anchor_copy = NULL;
-
- assert(event); /* Non-NULL event object is expected. */
- assert(anchor); /* Non-NULL anchor is expected. */
-
- if (!yaml_check_utf8(anchor, strlen((char *)anchor))) return 0;
-
- anchor_copy = yaml_strdup(anchor);
- if (!anchor_copy)
- return 0;
-
- ALIAS_EVENT_INIT(*event, anchor_copy, mark, mark);
-
- return 1;
-}
-
-/*
- * Create SCALAR.
- */
-
-YAML_DECLARE(int)
-yaml_scalar_event_initialize(yaml_event_t *event,
- yaml_char_t *anchor, yaml_char_t *tag,
- yaml_char_t *value, int length,
- int plain_implicit, int quoted_implicit,
- yaml_scalar_style_t style)
-{
- yaml_mark_t mark = { 0, 0, 0 };
- yaml_char_t *anchor_copy = NULL;
- yaml_char_t *tag_copy = NULL;
- yaml_char_t *value_copy = NULL;
- size_t value_length;
-
- assert(event); /* Non-NULL event object is expected. */
- assert(value); /* Non-NULL anchor is expected. */
-
- if (anchor) {
- if (!yaml_check_utf8(anchor, strlen((char *)anchor))) goto error;
- anchor_copy = yaml_strdup(anchor);
- if (!anchor_copy) goto error;
- }
-
- if (tag) {
- if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error;
- tag_copy = yaml_strdup(tag);
- if (!tag_copy) goto error;
- }
-
- if (length < 0) {
- value_length = strlen((char *)value);
- }
- else {
- value_length = (size_t)length;
- }
-
- if (!yaml_check_utf8(value, value_length)) goto error;
- value_copy = yaml_malloc(value_length+1);
- if (!value_copy) goto error;
- memcpy(value_copy, value, value_length);
- value_copy[value_length] = '\0';
-
- SCALAR_EVENT_INIT(*event, anchor_copy, tag_copy, value_copy, value_length,
- plain_implicit, quoted_implicit, style, mark, mark);
-
- return 1;
-
-error:
- yaml_free(anchor_copy);
- yaml_free(tag_copy);
- yaml_free(value_copy);
-
- return 0;
-}
-
-/*
- * Create SEQUENCE-START.
- */
-
-YAML_DECLARE(int)
-yaml_sequence_start_event_initialize(yaml_event_t *event,
- yaml_char_t *anchor, yaml_char_t *tag, int implicit,
- yaml_sequence_style_t style)
-{
- yaml_mark_t mark = { 0, 0, 0 };
- yaml_char_t *anchor_copy = NULL;
- yaml_char_t *tag_copy = NULL;
-
- assert(event); /* Non-NULL event object is expected. */
-
- if (anchor) {
- if (!yaml_check_utf8(anchor, strlen((char *)anchor))) goto error;
- anchor_copy = yaml_strdup(anchor);
- if (!anchor_copy) goto error;
- }
-
- if (tag) {
- if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error;
- tag_copy = yaml_strdup(tag);
- if (!tag_copy) goto error;
- }
-
- SEQUENCE_START_EVENT_INIT(*event, anchor_copy, tag_copy,
- implicit, style, mark, mark);
-
- return 1;
-
-error:
- yaml_free(anchor_copy);
- yaml_free(tag_copy);
-
- return 0;
-}
-
-/*
- * Create SEQUENCE-END.
- */
-
-YAML_DECLARE(int)
-yaml_sequence_end_event_initialize(yaml_event_t *event)
-{
- yaml_mark_t mark = { 0, 0, 0 };
-
- assert(event); /* Non-NULL event object is expected. */
-
- SEQUENCE_END_EVENT_INIT(*event, mark, mark);
-
- return 1;
-}
-
-/*
- * Create MAPPING-START.
- */
-
-YAML_DECLARE(int)
-yaml_mapping_start_event_initialize(yaml_event_t *event,
- yaml_char_t *anchor, yaml_char_t *tag, int implicit,
- yaml_mapping_style_t style)
-{
- yaml_mark_t mark = { 0, 0, 0 };
- yaml_char_t *anchor_copy = NULL;
- yaml_char_t *tag_copy = NULL;
-
- assert(event); /* Non-NULL event object is expected. */
-
- if (anchor) {
- if (!yaml_check_utf8(anchor, strlen((char *)anchor))) goto error;
- anchor_copy = yaml_strdup(anchor);
- if (!anchor_copy) goto error;
- }
-
- if (tag) {
- if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error;
- tag_copy = yaml_strdup(tag);
- if (!tag_copy) goto error;
- }
-
- MAPPING_START_EVENT_INIT(*event, anchor_copy, tag_copy,
- implicit, style, mark, mark);
-
- return 1;
-
-error:
- yaml_free(anchor_copy);
- yaml_free(tag_copy);
-
- return 0;
-}
-
-/*
- * Create MAPPING-END.
- */
-
-YAML_DECLARE(int)
-yaml_mapping_end_event_initialize(yaml_event_t *event)
-{
- yaml_mark_t mark = { 0, 0, 0 };
-
- assert(event); /* Non-NULL event object is expected. */
-
- MAPPING_END_EVENT_INIT(*event, mark, mark);
-
- return 1;
-}
-
-/*
- * Destroy an event object.
- */
-
-YAML_DECLARE(void)
-yaml_event_delete(yaml_event_t *event)
-{
- yaml_tag_directive_t *tag_directive;
-
- assert(event); /* Non-NULL event object expected. */
-
- switch (event->type)
- {
- case YAML_DOCUMENT_START_EVENT:
- yaml_free(event->data.document_start.version_directive);
- for (tag_directive = event->data.document_start.tag_directives.start;
- tag_directive != event->data.document_start.tag_directives.end;
- tag_directive++) {
- yaml_free(tag_directive->handle);
- yaml_free(tag_directive->prefix);
- }
- yaml_free(event->data.document_start.tag_directives.start);
- break;
-
- case YAML_ALIAS_EVENT:
- yaml_free(event->data.alias.anchor);
- break;
-
- case YAML_SCALAR_EVENT:
- yaml_free(event->data.scalar.anchor);
- yaml_free(event->data.scalar.tag);
- yaml_free(event->data.scalar.value);
- break;
-
- case YAML_SEQUENCE_START_EVENT:
- yaml_free(event->data.sequence_start.anchor);
- yaml_free(event->data.sequence_start.tag);
- break;
-
- case YAML_MAPPING_START_EVENT:
- yaml_free(event->data.mapping_start.anchor);
- yaml_free(event->data.mapping_start.tag);
- break;
-
- default:
- break;
- }
-
- memset(event, 0, sizeof(yaml_event_t));
-}
-
-/*
- * Create a document object.
- */
-
-YAML_DECLARE(int)
-yaml_document_initialize(yaml_document_t *document,
- yaml_version_directive_t *version_directive,
- yaml_tag_directive_t *tag_directives_start,
- yaml_tag_directive_t *tag_directives_end,
- int start_implicit, int end_implicit)
-{
- struct {
- yaml_error_type_t error;
- } context;
- struct {
- yaml_node_t *start;
- yaml_node_t *end;
- yaml_node_t *top;
- } nodes = { NULL, NULL, NULL };
- yaml_version_directive_t *version_directive_copy = NULL;
- struct {
- yaml_tag_directive_t *start;
- yaml_tag_directive_t *end;
- yaml_tag_directive_t *top;
- } tag_directives_copy = { NULL, NULL, NULL };
- yaml_tag_directive_t value = { NULL, NULL };
- yaml_mark_t mark = { 0, 0, 0 };
-
- assert(document); /* Non-NULL document object is expected. */
- assert((tag_directives_start && tag_directives_end) ||
- (tag_directives_start == tag_directives_end));
- /* Valid tag directives are expected. */
-
- if (!STACK_INIT(&context, nodes, INITIAL_STACK_SIZE)) goto error;
-
- if (version_directive) {
- version_directive_copy = yaml_malloc(sizeof(yaml_version_directive_t));
- if (!version_directive_copy) goto error;
- version_directive_copy->major = version_directive->major;
- version_directive_copy->minor = version_directive->minor;
- }
-
- if (tag_directives_start != tag_directives_end) {
- yaml_tag_directive_t *tag_directive;
- if (!STACK_INIT(&context, tag_directives_copy, INITIAL_STACK_SIZE))
- goto error;
- for (tag_directive = tag_directives_start;
- tag_directive != tag_directives_end; tag_directive ++) {
- assert(tag_directive->handle);
- assert(tag_directive->prefix);
- if (!yaml_check_utf8(tag_directive->handle,
- strlen((char *)tag_directive->handle)))
- goto error;
- if (!yaml_check_utf8(tag_directive->prefix,
- strlen((char *)tag_directive->prefix)))
- goto error;
- value.handle = yaml_strdup(tag_directive->handle);
- value.prefix = yaml_strdup(tag_directive->prefix);
- if (!value.handle || !value.prefix) goto error;
- if (!PUSH(&context, tag_directives_copy, value))
- goto error;
- value.handle = NULL;
- value.prefix = NULL;
- }
- }
-
- DOCUMENT_INIT(*document, nodes.start, nodes.end, version_directive_copy,
- tag_directives_copy.start, tag_directives_copy.top,
- start_implicit, end_implicit, mark, mark);
-
- return 1;
-
-error:
- STACK_DEL(&context, nodes);
- yaml_free(version_directive_copy);
- while (!STACK_EMPTY(&context, tag_directives_copy)) {
- yaml_tag_directive_t value = POP(&context, tag_directives_copy);
- yaml_free(value.handle);
- yaml_free(value.prefix);
- }
- STACK_DEL(&context, tag_directives_copy);
- yaml_free(value.handle);
- yaml_free(value.prefix);
-
- return 0;
-}
-
-/*
- * Destroy a document object.
- */
-
-YAML_DECLARE(void)
-yaml_document_delete(yaml_document_t *document)
-{
- struct {
- yaml_error_type_t error;
- } context;
- yaml_tag_directive_t *tag_directive;
-
- context.error = YAML_NO_ERROR; /* Eliminate a compliler warning. */
-
- assert(document); /* Non-NULL document object is expected. */
-
- while (!STACK_EMPTY(&context, document->nodes)) {
- yaml_node_t node = POP(&context, document->nodes);
- yaml_free(node.tag);
- switch (node.type) {
- case YAML_SCALAR_NODE:
- yaml_free(node.data.scalar.value);
- break;
- case YAML_SEQUENCE_NODE:
- STACK_DEL(&context, node.data.sequence.items);
- break;
- case YAML_MAPPING_NODE:
- STACK_DEL(&context, node.data.mapping.pairs);
- break;
- default:
- assert(0); /* Should not happen. */
- }
- }
- STACK_DEL(&context, document->nodes);
-
- yaml_free(document->version_directive);
- for (tag_directive = document->tag_directives.start;
- tag_directive != document->tag_directives.end;
- tag_directive++) {
- yaml_free(tag_directive->handle);
- yaml_free(tag_directive->prefix);
- }
- yaml_free(document->tag_directives.start);
-
- memset(document, 0, sizeof(yaml_document_t));
-}
-
-/**
- * Get a document node.
- */
-
-YAML_DECLARE(yaml_node_t *)
-yaml_document_get_node(yaml_document_t *document, int index)
-{
- assert(document); /* Non-NULL document object is expected. */
-
- if (index > 0 && document->nodes.start + index <= document->nodes.top) {
- return document->nodes.start + index - 1;
- }
- return NULL;
-}
-
-/**
- * Get the root object.
- */
-
-YAML_DECLARE(yaml_node_t *)
-yaml_document_get_root_node(yaml_document_t *document)
-{
- assert(document); /* Non-NULL document object is expected. */
-
- if (document->nodes.top != document->nodes.start) {
- return document->nodes.start;
- }
- return NULL;
-}
-
-/*
- * Add a scalar node to a document.
- */
-
-YAML_DECLARE(int)
-yaml_document_add_scalar(yaml_document_t *document,
- yaml_char_t *tag, yaml_char_t *value, int length,
- yaml_scalar_style_t style)
-{
- struct {
- yaml_error_type_t error;
- } context;
- yaml_mark_t mark = { 0, 0, 0 };
- yaml_char_t *tag_copy = NULL;
- yaml_char_t *value_copy = NULL;
- yaml_node_t node;
- size_t value_length;
- ptrdiff_t ret;
-
- assert(document); /* Non-NULL document object is expected. */
- assert(value); /* Non-NULL value is expected. */
-
- if (!tag) {
- tag = (yaml_char_t *)YAML_DEFAULT_SCALAR_TAG;
- }
-
- if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error;
- tag_copy = yaml_strdup(tag);
- if (!tag_copy) goto error;
-
- if (length < 0) {
- value_length = strlen((char *)value);
- }
- else {
- value_length = (size_t)length;
- }
-
- if (!yaml_check_utf8(value, value_length)) goto error;
- value_copy = yaml_malloc(value_length+1);
- if (!value_copy) goto error;
- memcpy(value_copy, value, value_length);
- value_copy[value_length] = '\0';
-
- SCALAR_NODE_INIT(node, tag_copy, value_copy, value_length, style, mark, mark);
- if (!PUSH(&context, document->nodes, node)) goto error;
-
- ret = document->nodes.top - document->nodes.start;
-#if PTRDIFF_MAX > INT_MAX
- if (ret > INT_MAX) goto error;
-#endif
- return (int)ret;
-
-error:
- yaml_free(tag_copy);
- yaml_free(value_copy);
-
- return 0;
-}
-
-/*
- * Add a sequence node to a document.
- */
-
-YAML_DECLARE(int)
-yaml_document_add_sequence(yaml_document_t *document,
- yaml_char_t *tag, yaml_sequence_style_t style)
-{
- struct {
- yaml_error_type_t error;
- } context;
- yaml_mark_t mark = { 0, 0, 0 };
- yaml_char_t *tag_copy = NULL;
- struct {
- yaml_node_item_t *start;
- yaml_node_item_t *end;
- yaml_node_item_t *top;
- } items = { NULL, NULL, NULL };
- yaml_node_t node;
- ptrdiff_t ret;
-
- assert(document); /* Non-NULL document object is expected. */
-
- if (!tag) {
- tag = (yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG;
- }
-
- if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error;
- tag_copy = yaml_strdup(tag);
- if (!tag_copy) goto error;
-
- if (!STACK_INIT(&context, items, INITIAL_STACK_SIZE)) goto error;
-
- SEQUENCE_NODE_INIT(node, tag_copy, items.start, items.end,
- style, mark, mark);
- if (!PUSH(&context, document->nodes, node)) goto error;
-
- ret = document->nodes.top - document->nodes.start;
-#if PTRDIFF_MAX > INT_MAX
- if (ret > INT_MAX) goto error;
-#endif
- return (int)ret;
-
-error:
- STACK_DEL(&context, items);
- yaml_free(tag_copy);
-
- return 0;
-}
-
-/*
- * Add a mapping node to a document.
- */
-
-YAML_DECLARE(int)
-yaml_document_add_mapping(yaml_document_t *document,
- yaml_char_t *tag, yaml_mapping_style_t style)
-{
- struct {
- yaml_error_type_t error;
- } context;
- yaml_mark_t mark = { 0, 0, 0 };
- yaml_char_t *tag_copy = NULL;
- struct {
- yaml_node_pair_t *start;
- yaml_node_pair_t *end;
- yaml_node_pair_t *top;
- } pairs = { NULL, NULL, NULL };
- yaml_node_t node;
- ptrdiff_t ret;
-
- assert(document); /* Non-NULL document object is expected. */
-
- if (!tag) {
- tag = (yaml_char_t *)YAML_DEFAULT_MAPPING_TAG;
- }
-
- if (!yaml_check_utf8(tag, strlen((char *)tag))) goto error;
- tag_copy = yaml_strdup(tag);
- if (!tag_copy) goto error;
-
- if (!STACK_INIT(&context, pairs, INITIAL_STACK_SIZE)) goto error;
-
- MAPPING_NODE_INIT(node, tag_copy, pairs.start, pairs.end,
- style, mark, mark);
- if (!PUSH(&context, document->nodes, node)) goto error;
-
- ret = document->nodes.top - document->nodes.start;
-#if PTRDIFF_MAX > INT_MAX
- if (ret > INT_MAX) goto error;
-#endif
- return (int)ret;
-
-error:
- STACK_DEL(&context, pairs);
- yaml_free(tag_copy);
-
- return 0;
-}
-
-/*
- * Append an item to a sequence node.
- */
-
-YAML_DECLARE(int)
-yaml_document_append_sequence_item(yaml_document_t *document,
- int sequence, int item)
-{
- struct {
- yaml_error_type_t error;
- } context;
-
- assert(document); /* Non-NULL document is required. */
- assert(sequence > 0
- && document->nodes.start + sequence <= document->nodes.top);
- /* Valid sequence id is required. */
- assert(document->nodes.start[sequence-1].type == YAML_SEQUENCE_NODE);
- /* A sequence node is required. */
- assert(item > 0 && document->nodes.start + item <= document->nodes.top);
- /* Valid item id is required. */
-
- if (!PUSH(&context,
- document->nodes.start[sequence-1].data.sequence.items, item))
- return 0;
-
- return 1;
-}
-
-/*
- * Append a pair of a key and a value to a mapping node.
- */
-
-YAML_DECLARE(int)
-yaml_document_append_mapping_pair(yaml_document_t *document,
- int mapping, int key, int value)
-{
- struct {
- yaml_error_type_t error;
- } context;
-
- yaml_node_pair_t pair;
-
- assert(document); /* Non-NULL document is required. */
- assert(mapping > 0
- && document->nodes.start + mapping <= document->nodes.top);
- /* Valid mapping id is required. */
- assert(document->nodes.start[mapping-1].type == YAML_MAPPING_NODE);
- /* A mapping node is required. */
- assert(key > 0 && document->nodes.start + key <= document->nodes.top);
- /* Valid key id is required. */
- assert(value > 0 && document->nodes.start + value <= document->nodes.top);
- /* Valid value id is required. */
-
- pair.key = key;
- pair.value = value;
-
- if (!PUSH(&context,
- document->nodes.start[mapping-1].data.mapping.pairs, pair))
- return 0;
-
- return 1;
-}
-
-
diff --git a/ext/psych/yaml/config.h b/ext/psych/yaml/config.h
deleted file mode 100644
index f54c27d339..0000000000
--- a/ext/psych/yaml/config.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#define PACKAGE_NAME "yaml"
-#define PACKAGE_TARNAME "yaml"
-#define PACKAGE_VERSION "0.1.6"
-#define PACKAGE_STRING "yaml 0.1.6"
-#define PACKAGE_BUGREPORT "http://pyyaml.org/newticket?component libyaml"
-#define PACKAGE_URL ""
-#define YAML_VERSION_MAJOR 0
-#define YAML_VERSION_MINOR 1
-#define YAML_VERSION_PATCH 6
-#define YAML_VERSION_STRING "0.1.6"
diff --git a/ext/psych/yaml/dumper.c b/ext/psych/yaml/dumper.c
deleted file mode 100644
index 203c6a709c..0000000000
--- a/ext/psych/yaml/dumper.c
+++ /dev/null
@@ -1,394 +0,0 @@
-
-#include "yaml_private.h"
-
-/*
- * API functions.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_open(yaml_emitter_t *emitter);
-
-YAML_DECLARE(int)
-yaml_emitter_close(yaml_emitter_t *emitter);
-
-YAML_DECLARE(int)
-yaml_emitter_dump(yaml_emitter_t *emitter, yaml_document_t *document);
-
-/*
- * Clean up functions.
- */
-
-static void
-yaml_emitter_delete_document_and_anchors(yaml_emitter_t *emitter);
-
-/*
- * Anchor functions.
- */
-
-static void
-yaml_emitter_anchor_node(yaml_emitter_t *emitter, int index);
-
-static yaml_char_t *
-yaml_emitter_generate_anchor(yaml_emitter_t *emitter, int anchor_id);
-
-
-/*
- * Serialize functions.
- */
-
-static int
-yaml_emitter_dump_node(yaml_emitter_t *emitter, int index);
-
-static int
-yaml_emitter_dump_alias(yaml_emitter_t *emitter, yaml_char_t *anchor);
-
-static int
-yaml_emitter_dump_scalar(yaml_emitter_t *emitter, yaml_node_t *node,
- yaml_char_t *anchor);
-
-static int
-yaml_emitter_dump_sequence(yaml_emitter_t *emitter, yaml_node_t *node,
- yaml_char_t *anchor);
-
-static int
-yaml_emitter_dump_mapping(yaml_emitter_t *emitter, yaml_node_t *node,
- yaml_char_t *anchor);
-
-/*
- * Issue a STREAM-START event.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_open(yaml_emitter_t *emitter)
-{
- yaml_event_t event;
- yaml_mark_t mark = { 0, 0, 0 };
-
- assert(emitter); /* Non-NULL emitter object is required. */
- assert(!emitter->opened); /* Emitter should not be opened yet. */
-
- STREAM_START_EVENT_INIT(event, YAML_ANY_ENCODING, mark, mark);
-
- if (!yaml_emitter_emit(emitter, &event)) {
- return 0;
- }
-
- emitter->opened = 1;
-
- return 1;
-}
-
-/*
- * Issue a STREAM-END event.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_close(yaml_emitter_t *emitter)
-{
- yaml_event_t event;
- yaml_mark_t mark = { 0, 0, 0 };
-
- assert(emitter); /* Non-NULL emitter object is required. */
- assert(emitter->opened); /* Emitter should be opened. */
-
- if (emitter->closed) return 1;
-
- STREAM_END_EVENT_INIT(event, mark, mark);
-
- if (!yaml_emitter_emit(emitter, &event)) {
- return 0;
- }
-
- emitter->closed = 1;
-
- return 1;
-}
-
-/*
- * Dump a YAML document.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_dump(yaml_emitter_t *emitter, yaml_document_t *document)
-{
- yaml_event_t event;
- yaml_mark_t mark = { 0, 0, 0 };
-
- assert(emitter); /* Non-NULL emitter object is required. */
- assert(document); /* Non-NULL emitter object is expected. */
-
- emitter->document = document;
-
- if (!emitter->opened) {
- if (!yaml_emitter_open(emitter)) goto error;
- }
-
- if (STACK_EMPTY(emitter, document->nodes)) {
- if (!yaml_emitter_close(emitter)) goto error;
- yaml_emitter_delete_document_and_anchors(emitter);
- return 1;
- }
-
- assert(emitter->opened); /* Emitter should be opened. */
-
- emitter->anchors = yaml_malloc(sizeof(*(emitter->anchors))
- * (document->nodes.top - document->nodes.start));
- if (!emitter->anchors) goto error;
- memset(emitter->anchors, 0, sizeof(*(emitter->anchors))
- * (document->nodes.top - document->nodes.start));
-
- DOCUMENT_START_EVENT_INIT(event, document->version_directive,
- document->tag_directives.start, document->tag_directives.end,
- document->start_implicit, mark, mark);
- if (!yaml_emitter_emit(emitter, &event)) goto error;
-
- yaml_emitter_anchor_node(emitter, 1);
- if (!yaml_emitter_dump_node(emitter, 1)) goto error;
-
- DOCUMENT_END_EVENT_INIT(event, document->end_implicit, mark, mark);
- if (!yaml_emitter_emit(emitter, &event)) goto error;
-
- yaml_emitter_delete_document_and_anchors(emitter);
-
- return 1;
-
-error:
-
- yaml_emitter_delete_document_and_anchors(emitter);
-
- return 0;
-}
-
-/*
- * Clean up the emitter object after a document is dumped.
- */
-
-static void
-yaml_emitter_delete_document_and_anchors(yaml_emitter_t *emitter)
-{
- int index;
-
- if (!emitter->anchors) {
- yaml_document_delete(emitter->document);
- emitter->document = NULL;
- return;
- }
-
- for (index = 0; emitter->document->nodes.start + index
- < emitter->document->nodes.top; index ++) {
- yaml_node_t node = emitter->document->nodes.start[index];
- if (!emitter->anchors[index].serialized) {
- yaml_free(node.tag);
- if (node.type == YAML_SCALAR_NODE) {
- yaml_free(node.data.scalar.value);
- }
- }
- if (node.type == YAML_SEQUENCE_NODE) {
- STACK_DEL(emitter, node.data.sequence.items);
- }
- if (node.type == YAML_MAPPING_NODE) {
- STACK_DEL(emitter, node.data.mapping.pairs);
- }
- }
-
- STACK_DEL(emitter, emitter->document->nodes);
- yaml_free(emitter->anchors);
-
- emitter->anchors = NULL;
- emitter->last_anchor_id = 0;
- emitter->document = NULL;
-}
-
-/*
- * Check the references of a node and assign the anchor id if needed.
- */
-
-static void
-yaml_emitter_anchor_node(yaml_emitter_t *emitter, int index)
-{
- yaml_node_t *node = emitter->document->nodes.start + index - 1;
- yaml_node_item_t *item;
- yaml_node_pair_t *pair;
-
- emitter->anchors[index-1].references ++;
-
- if (emitter->anchors[index-1].references == 1) {
- switch (node->type) {
- case YAML_SEQUENCE_NODE:
- for (item = node->data.sequence.items.start;
- item < node->data.sequence.items.top; item ++) {
- yaml_emitter_anchor_node(emitter, *item);
- }
- break;
- case YAML_MAPPING_NODE:
- for (pair = node->data.mapping.pairs.start;
- pair < node->data.mapping.pairs.top; pair ++) {
- yaml_emitter_anchor_node(emitter, pair->key);
- yaml_emitter_anchor_node(emitter, pair->value);
- }
- break;
- default:
- break;
- }
- }
-
- else if (emitter->anchors[index-1].references == 2) {
- emitter->anchors[index-1].anchor = (++ emitter->last_anchor_id);
- }
-}
-
-/*
- * Generate a textual representation for an anchor.
- */
-
-#define ANCHOR_TEMPLATE "id%03d"
-#define ANCHOR_TEMPLATE_LENGTH 16
-
-static yaml_char_t *
-yaml_emitter_generate_anchor(yaml_emitter_t *emitter, int anchor_id)
-{
- yaml_char_t *anchor = yaml_malloc(ANCHOR_TEMPLATE_LENGTH);
-
- if (!anchor) return NULL;
-
- sprintf((char *)anchor, ANCHOR_TEMPLATE, anchor_id);
-
- return anchor;
-}
-
-/*
- * Serialize a node.
- */
-
-static int
-yaml_emitter_dump_node(yaml_emitter_t *emitter, int index)
-{
- yaml_node_t *node = emitter->document->nodes.start + index - 1;
- int anchor_id = emitter->anchors[index-1].anchor;
- yaml_char_t *anchor = NULL;
-
- if (anchor_id) {
- anchor = yaml_emitter_generate_anchor(emitter, anchor_id);
- if (!anchor) return 0;
- }
-
- if (emitter->anchors[index-1].serialized) {
- return yaml_emitter_dump_alias(emitter, anchor);
- }
-
- emitter->anchors[index-1].serialized = 1;
-
- switch (node->type) {
- case YAML_SCALAR_NODE:
- return yaml_emitter_dump_scalar(emitter, node, anchor);
- case YAML_SEQUENCE_NODE:
- return yaml_emitter_dump_sequence(emitter, node, anchor);
- case YAML_MAPPING_NODE:
- return yaml_emitter_dump_mapping(emitter, node, anchor);
- default:
- assert(0); /* Could not happen. */
- break;
- }
-
- return 0; /* Could not happen. */
-}
-
-/*
- * Serialize an alias.
- */
-
-static int
-yaml_emitter_dump_alias(yaml_emitter_t *emitter, yaml_char_t *anchor)
-{
- yaml_event_t event;
- yaml_mark_t mark = { 0, 0, 0 };
-
- ALIAS_EVENT_INIT(event, anchor, mark, mark);
-
- return yaml_emitter_emit(emitter, &event);
-}
-
-/*
- * Serialize a scalar.
- */
-
-static int
-yaml_emitter_dump_scalar(yaml_emitter_t *emitter, yaml_node_t *node,
- yaml_char_t *anchor)
-{
- yaml_event_t event;
- yaml_mark_t mark = { 0, 0, 0 };
-
- int plain_implicit = (strcmp((char *)node->tag,
- YAML_DEFAULT_SCALAR_TAG) == 0);
- int quoted_implicit = (strcmp((char *)node->tag,
- YAML_DEFAULT_SCALAR_TAG) == 0);
-
- SCALAR_EVENT_INIT(event, anchor, node->tag, node->data.scalar.value,
- node->data.scalar.length, plain_implicit, quoted_implicit,
- node->data.scalar.style, mark, mark);
-
- return yaml_emitter_emit(emitter, &event);
-}
-
-/*
- * Serialize a sequence.
- */
-
-static int
-yaml_emitter_dump_sequence(yaml_emitter_t *emitter, yaml_node_t *node,
- yaml_char_t *anchor)
-{
- yaml_event_t event;
- yaml_mark_t mark = { 0, 0, 0 };
-
- int implicit = (strcmp((char *)node->tag, YAML_DEFAULT_SEQUENCE_TAG) == 0);
-
- yaml_node_item_t *item;
-
- SEQUENCE_START_EVENT_INIT(event, anchor, node->tag, implicit,
- node->data.sequence.style, mark, mark);
- if (!yaml_emitter_emit(emitter, &event)) return 0;
-
- for (item = node->data.sequence.items.start;
- item < node->data.sequence.items.top; item ++) {
- if (!yaml_emitter_dump_node(emitter, *item)) return 0;
- }
-
- SEQUENCE_END_EVENT_INIT(event, mark, mark);
- if (!yaml_emitter_emit(emitter, &event)) return 0;
-
- return 1;
-}
-
-/*
- * Serialize a mapping.
- */
-
-static int
-yaml_emitter_dump_mapping(yaml_emitter_t *emitter, yaml_node_t *node,
- yaml_char_t *anchor)
-{
- yaml_event_t event;
- yaml_mark_t mark = { 0, 0, 0 };
-
- int implicit = (strcmp((char *)node->tag, YAML_DEFAULT_MAPPING_TAG) == 0);
-
- yaml_node_pair_t *pair;
-
- MAPPING_START_EVENT_INIT(event, anchor, node->tag, implicit,
- node->data.mapping.style, mark, mark);
- if (!yaml_emitter_emit(emitter, &event)) return 0;
-
- for (pair = node->data.mapping.pairs.start;
- pair < node->data.mapping.pairs.top; pair ++) {
- if (!yaml_emitter_dump_node(emitter, pair->key)) return 0;
- if (!yaml_emitter_dump_node(emitter, pair->value)) return 0;
- }
-
- MAPPING_END_EVENT_INIT(event, mark, mark);
- if (!yaml_emitter_emit(emitter, &event)) return 0;
-
- return 1;
-}
-
diff --git a/ext/psych/yaml/emitter.c b/ext/psych/yaml/emitter.c
deleted file mode 100644
index bf84fafc51..0000000000
--- a/ext/psych/yaml/emitter.c
+++ /dev/null
@@ -1,2329 +0,0 @@
-
-#include "yaml_private.h"
-
-/*
- * Flush the buffer if needed.
- */
-
-#define FLUSH(emitter) \
- ((emitter->buffer.pointer+5 < emitter->buffer.end) \
- || yaml_emitter_flush(emitter))
-
-/*
- * Put a character to the output buffer.
- */
-
-#define PUT(emitter,value) \
- (FLUSH(emitter) \
- && (*(emitter->buffer.pointer++) = (yaml_char_t)(value), \
- emitter->column ++, \
- 1))
-
-/*
- * Put a line break to the output buffer.
- */
-
-#define PUT_BREAK(emitter) \
- (FLUSH(emitter) \
- && ((emitter->line_break == YAML_CR_BREAK ? \
- (*(emitter->buffer.pointer++) = (yaml_char_t) '\r') : \
- emitter->line_break == YAML_LN_BREAK ? \
- (*(emitter->buffer.pointer++) = (yaml_char_t) '\n') : \
- emitter->line_break == YAML_CRLN_BREAK ? \
- (*(emitter->buffer.pointer++) = (yaml_char_t) '\r', \
- *(emitter->buffer.pointer++) = (yaml_char_t) '\n') : 0), \
- emitter->column = 0, \
- emitter->line ++, \
- 1))
-
-/*
- * Copy a character from a string into buffer.
- */
-
-#define WRITE(emitter,string) \
- (FLUSH(emitter) \
- && (COPY(emitter->buffer,string), \
- emitter->column ++, \
- 1))
-
-/*
- * Copy a line break character from a string into buffer.
- */
-
-#define WRITE_BREAK(emitter,string) \
- (FLUSH(emitter) \
- && (CHECK(string,'\n') ? \
- ((void)PUT_BREAK(emitter), \
- string.pointer ++, \
- 1) : \
- (COPY(emitter->buffer,string), \
- emitter->column = 0, \
- emitter->line ++, \
- 1)))
-
-/*
- * API functions.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_emit(yaml_emitter_t *emitter, yaml_event_t *event);
-
-/*
- * Utility functions.
- */
-
-static int
-yaml_emitter_set_emitter_error(yaml_emitter_t *emitter, const char *problem);
-
-static int
-yaml_emitter_need_more_events(yaml_emitter_t *emitter);
-
-static int
-yaml_emitter_append_tag_directive(yaml_emitter_t *emitter,
- yaml_tag_directive_t value, int allow_duplicates);
-
-static int
-yaml_emitter_increase_indent(yaml_emitter_t *emitter,
- int flow, int indentless);
-
-/*
- * State functions.
- */
-
-static int
-yaml_emitter_state_machine(yaml_emitter_t *emitter, yaml_event_t *event);
-
-static int
-yaml_emitter_emit_stream_start(yaml_emitter_t *emitter,
- yaml_event_t *event);
-
-static int
-yaml_emitter_emit_document_start(yaml_emitter_t *emitter,
- yaml_event_t *event, int first);
-
-static int
-yaml_emitter_emit_document_content(yaml_emitter_t *emitter,
- yaml_event_t *event);
-
-static int
-yaml_emitter_emit_document_end(yaml_emitter_t *emitter,
- yaml_event_t *event);
-
-static int
-yaml_emitter_emit_flow_sequence_item(yaml_emitter_t *emitter,
- yaml_event_t *event, int first);
-
-static int
-yaml_emitter_emit_flow_mapping_key(yaml_emitter_t *emitter,
- yaml_event_t *event, int first);
-
-static int
-yaml_emitter_emit_flow_mapping_value(yaml_emitter_t *emitter,
- yaml_event_t *event, int simple);
-
-static int
-yaml_emitter_emit_block_sequence_item(yaml_emitter_t *emitter,
- yaml_event_t *event, int first);
-
-static int
-yaml_emitter_emit_block_mapping_key(yaml_emitter_t *emitter,
- yaml_event_t *event, int first);
-
-static int
-yaml_emitter_emit_block_mapping_value(yaml_emitter_t *emitter,
- yaml_event_t *event, int simple);
-
-static int
-yaml_emitter_emit_node(yaml_emitter_t *emitter, yaml_event_t *event,
- int root, int sequence, int mapping, int simple_key);
-
-static int
-yaml_emitter_emit_alias(yaml_emitter_t *emitter, yaml_event_t *event);
-
-static int
-yaml_emitter_emit_scalar(yaml_emitter_t *emitter, yaml_event_t *event);
-
-static int
-yaml_emitter_emit_sequence_start(yaml_emitter_t *emitter, yaml_event_t *event);
-
-static int
-yaml_emitter_emit_mapping_start(yaml_emitter_t *emitter, yaml_event_t *event);
-
-/*
- * Checkers.
- */
-
-static int
-yaml_emitter_check_empty_document(yaml_emitter_t *emitter);
-
-static int
-yaml_emitter_check_empty_sequence(yaml_emitter_t *emitter);
-
-static int
-yaml_emitter_check_empty_mapping(yaml_emitter_t *emitter);
-
-static int
-yaml_emitter_check_simple_key(yaml_emitter_t *emitter);
-
-static int
-yaml_emitter_select_scalar_style(yaml_emitter_t *emitter, yaml_event_t *event);
-
-/*
- * Processors.
- */
-
-static int
-yaml_emitter_process_anchor(yaml_emitter_t *emitter);
-
-static int
-yaml_emitter_process_tag(yaml_emitter_t *emitter);
-
-static int
-yaml_emitter_process_scalar(yaml_emitter_t *emitter);
-
-/*
- * Analyzers.
- */
-
-static int
-yaml_emitter_analyze_version_directive(yaml_emitter_t *emitter,
- yaml_version_directive_t version_directive);
-
-static int
-yaml_emitter_analyze_tag_directive(yaml_emitter_t *emitter,
- yaml_tag_directive_t tag_directive);
-
-static int
-yaml_emitter_analyze_anchor(yaml_emitter_t *emitter,
- yaml_char_t *anchor, int alias);
-
-static int
-yaml_emitter_analyze_tag(yaml_emitter_t *emitter,
- yaml_char_t *tag);
-
-static int
-yaml_emitter_analyze_scalar(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length);
-
-static int
-yaml_emitter_analyze_event(yaml_emitter_t *emitter,
- yaml_event_t *event);
-
-/*
- * Writers.
- */
-
-static int
-yaml_emitter_write_bom(yaml_emitter_t *emitter);
-
-static int
-yaml_emitter_write_indent(yaml_emitter_t *emitter);
-
-static int
-yaml_emitter_write_indicator(yaml_emitter_t *emitter,
- const char *indicator, int need_whitespace,
- int is_whitespace, int is_indention);
-
-static int
-yaml_emitter_write_anchor(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length);
-
-static int
-yaml_emitter_write_tag_handle(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length);
-
-static int
-yaml_emitter_write_tag_content(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length, int need_whitespace);
-
-static int
-yaml_emitter_write_plain_scalar(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length, int allow_breaks);
-
-static int
-yaml_emitter_write_single_quoted_scalar(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length, int allow_breaks);
-
-static int
-yaml_emitter_write_double_quoted_scalar(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length, int allow_breaks);
-
-static int
-yaml_emitter_write_block_scalar_hints(yaml_emitter_t *emitter,
- yaml_string_t string);
-
-static int
-yaml_emitter_write_literal_scalar(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length);
-
-static int
-yaml_emitter_write_folded_scalar(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length);
-
-/*
- * Set an emitter error and return 0.
- */
-
-static int
-yaml_emitter_set_emitter_error(yaml_emitter_t *emitter, const char *problem)
-{
- emitter->error = YAML_EMITTER_ERROR;
- emitter->problem = problem;
-
- return 0;
-}
-
-/*
- * Emit an event.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_emit(yaml_emitter_t *emitter, yaml_event_t *event)
-{
- if (!ENQUEUE(emitter, emitter->events, *event)) {
- yaml_event_delete(event);
- return 0;
- }
-
- while (!yaml_emitter_need_more_events(emitter)) {
- if (!yaml_emitter_analyze_event(emitter, emitter->events.head))
- return 0;
- if (!yaml_emitter_state_machine(emitter, emitter->events.head))
- return 0;
- yaml_event_delete(&DEQUEUE(emitter, emitter->events));
- }
-
- return 1;
-}
-
-/*
- * Check if we need to accumulate more events before emitting.
- *
- * We accumulate extra
- * - 1 event for DOCUMENT-START
- * - 2 events for SEQUENCE-START
- * - 3 events for MAPPING-START
- */
-
-static int
-yaml_emitter_need_more_events(yaml_emitter_t *emitter)
-{
- int level = 0;
- int accumulate = 0;
- yaml_event_t *event;
-
- if (QUEUE_EMPTY(emitter, emitter->events))
- return 1;
-
- switch (emitter->events.head->type) {
- case YAML_DOCUMENT_START_EVENT:
- accumulate = 1;
- break;
- case YAML_SEQUENCE_START_EVENT:
- accumulate = 2;
- break;
- case YAML_MAPPING_START_EVENT:
- accumulate = 3;
- break;
- default:
- return 0;
- }
-
- if (emitter->events.tail - emitter->events.head > accumulate)
- return 0;
-
- for (event = emitter->events.head; event != emitter->events.tail; event ++) {
- switch (event->type) {
- case YAML_STREAM_START_EVENT:
- case YAML_DOCUMENT_START_EVENT:
- case YAML_SEQUENCE_START_EVENT:
- case YAML_MAPPING_START_EVENT:
- level += 1;
- break;
- case YAML_STREAM_END_EVENT:
- case YAML_DOCUMENT_END_EVENT:
- case YAML_SEQUENCE_END_EVENT:
- case YAML_MAPPING_END_EVENT:
- level -= 1;
- break;
- default:
- break;
- }
- if (!level)
- return 0;
- }
-
- return 1;
-}
-
-/*
- * Append a directive to the directives stack.
- */
-
-static int
-yaml_emitter_append_tag_directive(yaml_emitter_t *emitter,
- yaml_tag_directive_t value, int allow_duplicates)
-{
- yaml_tag_directive_t *tag_directive;
- yaml_tag_directive_t copy = { NULL, NULL };
-
- for (tag_directive = emitter->tag_directives.start;
- tag_directive != emitter->tag_directives.top; tag_directive ++) {
- if (strcmp((char *)value.handle, (char *)tag_directive->handle) == 0) {
- if (allow_duplicates)
- return 1;
- return yaml_emitter_set_emitter_error(emitter,
- "duplicate %TAG directive");
- }
- }
-
- copy.handle = yaml_strdup(value.handle);
- copy.prefix = yaml_strdup(value.prefix);
- if (!copy.handle || !copy.prefix) {
- emitter->error = YAML_MEMORY_ERROR;
- goto error;
- }
-
- if (!PUSH(emitter, emitter->tag_directives, copy))
- goto error;
-
- return 1;
-
-error:
- yaml_free(copy.handle);
- yaml_free(copy.prefix);
- return 0;
-}
-
-/*
- * Increase the indentation level.
- */
-
-static int
-yaml_emitter_increase_indent(yaml_emitter_t *emitter,
- int flow, int indentless)
-{
- if (!PUSH(emitter, emitter->indents, emitter->indent))
- return 0;
-
- if (emitter->indent < 0) {
- emitter->indent = flow ? emitter->best_indent : 0;
- }
- else if (!indentless) {
- emitter->indent += emitter->best_indent;
- }
-
- return 1;
-}
-
-/*
- * State dispatcher.
- */
-
-static int
-yaml_emitter_state_machine(yaml_emitter_t *emitter, yaml_event_t *event)
-{
- switch (emitter->state)
- {
- case YAML_EMIT_STREAM_START_STATE:
- return yaml_emitter_emit_stream_start(emitter, event);
-
- case YAML_EMIT_FIRST_DOCUMENT_START_STATE:
- return yaml_emitter_emit_document_start(emitter, event, 1);
-
- case YAML_EMIT_DOCUMENT_START_STATE:
- return yaml_emitter_emit_document_start(emitter, event, 0);
-
- case YAML_EMIT_DOCUMENT_CONTENT_STATE:
- return yaml_emitter_emit_document_content(emitter, event);
-
- case YAML_EMIT_DOCUMENT_END_STATE:
- return yaml_emitter_emit_document_end(emitter, event);
-
- case YAML_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE:
- return yaml_emitter_emit_flow_sequence_item(emitter, event, 1);
-
- case YAML_EMIT_FLOW_SEQUENCE_ITEM_STATE:
- return yaml_emitter_emit_flow_sequence_item(emitter, event, 0);
-
- case YAML_EMIT_FLOW_MAPPING_FIRST_KEY_STATE:
- return yaml_emitter_emit_flow_mapping_key(emitter, event, 1);
-
- case YAML_EMIT_FLOW_MAPPING_KEY_STATE:
- return yaml_emitter_emit_flow_mapping_key(emitter, event, 0);
-
- case YAML_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE:
- return yaml_emitter_emit_flow_mapping_value(emitter, event, 1);
-
- case YAML_EMIT_FLOW_MAPPING_VALUE_STATE:
- return yaml_emitter_emit_flow_mapping_value(emitter, event, 0);
-
- case YAML_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE:
- return yaml_emitter_emit_block_sequence_item(emitter, event, 1);
-
- case YAML_EMIT_BLOCK_SEQUENCE_ITEM_STATE:
- return yaml_emitter_emit_block_sequence_item(emitter, event, 0);
-
- case YAML_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE:
- return yaml_emitter_emit_block_mapping_key(emitter, event, 1);
-
- case YAML_EMIT_BLOCK_MAPPING_KEY_STATE:
- return yaml_emitter_emit_block_mapping_key(emitter, event, 0);
-
- case YAML_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE:
- return yaml_emitter_emit_block_mapping_value(emitter, event, 1);
-
- case YAML_EMIT_BLOCK_MAPPING_VALUE_STATE:
- return yaml_emitter_emit_block_mapping_value(emitter, event, 0);
-
- case YAML_EMIT_END_STATE:
- return yaml_emitter_set_emitter_error(emitter,
- "expected nothing after STREAM-END");
-
- default:
- assert(1); /* Invalid state. */
- }
-
- return 0;
-}
-
-/*
- * Expect STREAM-START.
- */
-
-static int
-yaml_emitter_emit_stream_start(yaml_emitter_t *emitter,
- yaml_event_t *event)
-{
- if (event->type == YAML_STREAM_START_EVENT)
- {
- if (!emitter->encoding) {
- emitter->encoding = event->data.stream_start.encoding;
- }
-
- if (!emitter->encoding) {
- emitter->encoding = YAML_UTF8_ENCODING;
- }
-
- if (emitter->best_indent < 2 || emitter->best_indent > 9) {
- emitter->best_indent = 2;
- }
-
- if (emitter->best_width >= 0
- && emitter->best_width <= emitter->best_indent*2) {
- emitter->best_width = 80;
- }
-
- if (emitter->best_width < 0) {
- emitter->best_width = INT_MAX;
- }
-
- if (!emitter->line_break) {
- emitter->line_break = YAML_LN_BREAK;
- }
-
- emitter->indent = -1;
-
- emitter->line = 0;
- emitter->column = 0;
- emitter->whitespace = 1;
- emitter->indention = 1;
-
- if (emitter->encoding != YAML_UTF8_ENCODING) {
- if (!yaml_emitter_write_bom(emitter))
- return 0;
- }
-
- emitter->state = YAML_EMIT_FIRST_DOCUMENT_START_STATE;
-
- return 1;
- }
-
- return yaml_emitter_set_emitter_error(emitter,
- "expected STREAM-START");
-}
-
-/*
- * Expect DOCUMENT-START or STREAM-END.
- */
-
-static int
-yaml_emitter_emit_document_start(yaml_emitter_t *emitter,
- yaml_event_t *event, int first)
-{
- if (event->type == YAML_DOCUMENT_START_EVENT)
- {
- yaml_tag_directive_t default_tag_directives[] = {
- {(yaml_char_t *)"!", (yaml_char_t *)"!"},
- {(yaml_char_t *)"!!", (yaml_char_t *)"tag:yaml.org,2002:"},
- {NULL, NULL}
- };
- yaml_tag_directive_t *tag_directive;
- int implicit;
-
- if (event->data.document_start.version_directive) {
- if (!yaml_emitter_analyze_version_directive(emitter,
- *event->data.document_start.version_directive))
- return 0;
- }
-
- for (tag_directive = event->data.document_start.tag_directives.start;
- tag_directive != event->data.document_start.tag_directives.end;
- tag_directive ++) {
- if (!yaml_emitter_analyze_tag_directive(emitter, *tag_directive))
- return 0;
- if (!yaml_emitter_append_tag_directive(emitter, *tag_directive, 0))
- return 0;
- }
-
- for (tag_directive = default_tag_directives;
- tag_directive->handle; tag_directive ++) {
- if (!yaml_emitter_append_tag_directive(emitter, *tag_directive, 1))
- return 0;
- }
-
- implicit = event->data.document_start.implicit;
- if (!first || emitter->canonical) {
- implicit = 0;
- }
-
- if ((event->data.document_start.version_directive ||
- (event->data.document_start.tag_directives.start
- != event->data.document_start.tag_directives.end)) &&
- emitter->open_ended)
- {
- if (!yaml_emitter_write_indicator(emitter, "...", 1, 0, 0))
- return 0;
- if (!yaml_emitter_write_indent(emitter))
- return 0;
- }
-
- if (event->data.document_start.version_directive) {
- implicit = 0;
- if (!yaml_emitter_write_indicator(emitter, "%YAML", 1, 0, 0))
- return 0;
- if (!yaml_emitter_write_indicator(emitter, "1.1", 1, 0, 0))
- return 0;
- if (!yaml_emitter_write_indent(emitter))
- return 0;
- }
-
- if (event->data.document_start.tag_directives.start
- != event->data.document_start.tag_directives.end) {
- implicit = 0;
- for (tag_directive = event->data.document_start.tag_directives.start;
- tag_directive != event->data.document_start.tag_directives.end;
- tag_directive ++) {
- if (!yaml_emitter_write_indicator(emitter, "%TAG", 1, 0, 0))
- return 0;
- if (!yaml_emitter_write_tag_handle(emitter, tag_directive->handle,
- strlen((char *)tag_directive->handle)))
- return 0;
- if (!yaml_emitter_write_tag_content(emitter, tag_directive->prefix,
- strlen((char *)tag_directive->prefix), 1))
- return 0;
- if (!yaml_emitter_write_indent(emitter))
- return 0;
- }
- }
-
- if (yaml_emitter_check_empty_document(emitter)) {
- implicit = 0;
- }
-
- if (!implicit) {
- if (!yaml_emitter_write_indent(emitter))
- return 0;
- if (!yaml_emitter_write_indicator(emitter, "---", 1, 0, 0))
- return 0;
- if (emitter->canonical) {
- if (!yaml_emitter_write_indent(emitter))
- return 0;
- }
- }
-
- emitter->state = YAML_EMIT_DOCUMENT_CONTENT_STATE;
-
- return 1;
- }
-
- else if (event->type == YAML_STREAM_END_EVENT)
- {
- if (emitter->open_ended)
- {
- if (!yaml_emitter_write_indicator(emitter, "...", 1, 0, 0))
- return 0;
- if (!yaml_emitter_write_indent(emitter))
- return 0;
- }
-
- if (!yaml_emitter_flush(emitter))
- return 0;
-
- emitter->state = YAML_EMIT_END_STATE;
-
- return 1;
- }
-
- return yaml_emitter_set_emitter_error(emitter,
- "expected DOCUMENT-START or STREAM-END");
-}
-
-/*
- * Expect the root node.
- */
-
-static int
-yaml_emitter_emit_document_content(yaml_emitter_t *emitter,
- yaml_event_t *event)
-{
- if (!PUSH(emitter, emitter->states, YAML_EMIT_DOCUMENT_END_STATE))
- return 0;
-
- return yaml_emitter_emit_node(emitter, event, 1, 0, 0, 0);
-}
-
-/*
- * Expect DOCUMENT-END.
- */
-
-static int
-yaml_emitter_emit_document_end(yaml_emitter_t *emitter,
- yaml_event_t *event)
-{
- if (event->type == YAML_DOCUMENT_END_EVENT)
- {
- if (!yaml_emitter_write_indent(emitter))
- return 0;
- if (!event->data.document_end.implicit) {
- if (!yaml_emitter_write_indicator(emitter, "...", 1, 0, 0))
- return 0;
- if (!yaml_emitter_write_indent(emitter))
- return 0;
- }
- if (!yaml_emitter_flush(emitter))
- return 0;
-
- emitter->state = YAML_EMIT_DOCUMENT_START_STATE;
-
- while (!STACK_EMPTY(emitter, emitter->tag_directives)) {
- yaml_tag_directive_t tag_directive = POP(emitter,
- emitter->tag_directives);
- yaml_free(tag_directive.handle);
- yaml_free(tag_directive.prefix);
- }
-
- return 1;
- }
-
- return yaml_emitter_set_emitter_error(emitter,
- "expected DOCUMENT-END");
-}
-
-/*
- *
- * Expect a flow item node.
- */
-
-static int
-yaml_emitter_emit_flow_sequence_item(yaml_emitter_t *emitter,
- yaml_event_t *event, int first)
-{
- if (first)
- {
- if (!yaml_emitter_write_indicator(emitter, "[", 1, 1, 0))
- return 0;
- if (!yaml_emitter_increase_indent(emitter, 1, 0))
- return 0;
- emitter->flow_level ++;
- }
-
- if (event->type == YAML_SEQUENCE_END_EVENT)
- {
- emitter->flow_level --;
- emitter->indent = POP(emitter, emitter->indents);
- if (emitter->canonical && !first) {
- if (!yaml_emitter_write_indicator(emitter, ",", 0, 0, 0))
- return 0;
- if (!yaml_emitter_write_indent(emitter))
- return 0;
- }
- if (!yaml_emitter_write_indicator(emitter, "]", 0, 0, 0))
- return 0;
- emitter->state = POP(emitter, emitter->states);
-
- return 1;
- }
-
- if (!first) {
- if (!yaml_emitter_write_indicator(emitter, ",", 0, 0, 0))
- return 0;
- }
-
- if (emitter->canonical || emitter->column > emitter->best_width) {
- if (!yaml_emitter_write_indent(emitter))
- return 0;
- }
- if (!PUSH(emitter, emitter->states, YAML_EMIT_FLOW_SEQUENCE_ITEM_STATE))
- return 0;
-
- return yaml_emitter_emit_node(emitter, event, 0, 1, 0, 0);
-}
-
-/*
- * Expect a flow key node.
- */
-
-static int
-yaml_emitter_emit_flow_mapping_key(yaml_emitter_t *emitter,
- yaml_event_t *event, int first)
-{
- if (first)
- {
- if (!yaml_emitter_write_indicator(emitter, "{", 1, 1, 0))
- return 0;
- if (!yaml_emitter_increase_indent(emitter, 1, 0))
- return 0;
- emitter->flow_level ++;
- }
-
- if (event->type == YAML_MAPPING_END_EVENT)
- {
- emitter->flow_level --;
- emitter->indent = POP(emitter, emitter->indents);
- if (emitter->canonical && !first) {
- if (!yaml_emitter_write_indicator(emitter, ",", 0, 0, 0))
- return 0;
- if (!yaml_emitter_write_indent(emitter))
- return 0;
- }
- if (!yaml_emitter_write_indicator(emitter, "}", 0, 0, 0))
- return 0;
- emitter->state = POP(emitter, emitter->states);
-
- return 1;
- }
-
- if (!first) {
- if (!yaml_emitter_write_indicator(emitter, ",", 0, 0, 0))
- return 0;
- }
- if (emitter->canonical || emitter->column > emitter->best_width) {
- if (!yaml_emitter_write_indent(emitter))
- return 0;
- }
-
- if (!emitter->canonical && yaml_emitter_check_simple_key(emitter))
- {
- if (!PUSH(emitter, emitter->states,
- YAML_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE))
- return 0;
-
- return yaml_emitter_emit_node(emitter, event, 0, 0, 1, 1);
- }
- else
- {
- if (!yaml_emitter_write_indicator(emitter, "?", 1, 0, 0))
- return 0;
- if (!PUSH(emitter, emitter->states,
- YAML_EMIT_FLOW_MAPPING_VALUE_STATE))
- return 0;
-
- return yaml_emitter_emit_node(emitter, event, 0, 0, 1, 0);
- }
-}
-
-/*
- * Expect a flow value node.
- */
-
-static int
-yaml_emitter_emit_flow_mapping_value(yaml_emitter_t *emitter,
- yaml_event_t *event, int simple)
-{
- if (simple) {
- if (!yaml_emitter_write_indicator(emitter, ":", 0, 0, 0))
- return 0;
- }
- else {
- if (emitter->canonical || emitter->column > emitter->best_width) {
- if (!yaml_emitter_write_indent(emitter))
- return 0;
- }
- if (!yaml_emitter_write_indicator(emitter, ":", 1, 0, 0))
- return 0;
- }
- if (!PUSH(emitter, emitter->states, YAML_EMIT_FLOW_MAPPING_KEY_STATE))
- return 0;
- return yaml_emitter_emit_node(emitter, event, 0, 0, 1, 0);
-}
-
-/*
- * Expect a block item node.
- */
-
-static int
-yaml_emitter_emit_block_sequence_item(yaml_emitter_t *emitter,
- yaml_event_t *event, int first)
-{
- if (first)
- {
- if (!yaml_emitter_increase_indent(emitter, 0,
- (emitter->mapping_context && !emitter->indention)))
- return 0;
- }
-
- if (event->type == YAML_SEQUENCE_END_EVENT)
- {
- emitter->indent = POP(emitter, emitter->indents);
- emitter->state = POP(emitter, emitter->states);
-
- return 1;
- }
-
- if (!yaml_emitter_write_indent(emitter))
- return 0;
- if (!yaml_emitter_write_indicator(emitter, "-", 1, 0, 1))
- return 0;
- if (!PUSH(emitter, emitter->states,
- YAML_EMIT_BLOCK_SEQUENCE_ITEM_STATE))
- return 0;
-
- return yaml_emitter_emit_node(emitter, event, 0, 1, 0, 0);
-}
-
-/*
- * Expect a block key node.
- */
-
-static int
-yaml_emitter_emit_block_mapping_key(yaml_emitter_t *emitter,
- yaml_event_t *event, int first)
-{
- if (first)
- {
- if (!yaml_emitter_increase_indent(emitter, 0, 0))
- return 0;
- }
-
- if (event->type == YAML_MAPPING_END_EVENT)
- {
- emitter->indent = POP(emitter, emitter->indents);
- emitter->state = POP(emitter, emitter->states);
-
- return 1;
- }
-
- if (!yaml_emitter_write_indent(emitter))
- return 0;
-
- if (yaml_emitter_check_simple_key(emitter))
- {
- if (!PUSH(emitter, emitter->states,
- YAML_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE))
- return 0;
-
- return yaml_emitter_emit_node(emitter, event, 0, 0, 1, 1);
- }
- else
- {
- if (!yaml_emitter_write_indicator(emitter, "?", 1, 0, 1))
- return 0;
- if (!PUSH(emitter, emitter->states,
- YAML_EMIT_BLOCK_MAPPING_VALUE_STATE))
- return 0;
-
- return yaml_emitter_emit_node(emitter, event, 0, 0, 1, 0);
- }
-}
-
-/*
- * Expect a block value node.
- */
-
-static int
-yaml_emitter_emit_block_mapping_value(yaml_emitter_t *emitter,
- yaml_event_t *event, int simple)
-{
- if (simple) {
- if (!yaml_emitter_write_indicator(emitter, ":", 0, 0, 0))
- return 0;
- }
- else {
- if (!yaml_emitter_write_indent(emitter))
- return 0;
- if (!yaml_emitter_write_indicator(emitter, ":", 1, 0, 1))
- return 0;
- }
- if (!PUSH(emitter, emitter->states,
- YAML_EMIT_BLOCK_MAPPING_KEY_STATE))
- return 0;
-
- return yaml_emitter_emit_node(emitter, event, 0, 0, 1, 0);
-}
-
-/*
- * Expect a node.
- */
-
-static int
-yaml_emitter_emit_node(yaml_emitter_t *emitter, yaml_event_t *event,
- int root, int sequence, int mapping, int simple_key)
-{
- emitter->root_context = root;
- emitter->sequence_context = sequence;
- emitter->mapping_context = mapping;
- emitter->simple_key_context = simple_key;
-
- switch (event->type)
- {
- case YAML_ALIAS_EVENT:
- return yaml_emitter_emit_alias(emitter, event);
-
- case YAML_SCALAR_EVENT:
- return yaml_emitter_emit_scalar(emitter, event);
-
- case YAML_SEQUENCE_START_EVENT:
- return yaml_emitter_emit_sequence_start(emitter, event);
-
- case YAML_MAPPING_START_EVENT:
- return yaml_emitter_emit_mapping_start(emitter, event);
-
- default:
- return yaml_emitter_set_emitter_error(emitter,
- "expected SCALAR, SEQUENCE-START, MAPPING-START, or ALIAS");
- }
-
- return 0;
-}
-
-/*
- * Expect ALIAS.
- */
-
-static int
-yaml_emitter_emit_alias(yaml_emitter_t *emitter, yaml_event_t *event)
-{
- if (!yaml_emitter_process_anchor(emitter))
- return 0;
- emitter->state = POP(emitter, emitter->states);
-
- return 1;
-}
-
-/*
- * Expect SCALAR.
- */
-
-static int
-yaml_emitter_emit_scalar(yaml_emitter_t *emitter, yaml_event_t *event)
-{
- if (!yaml_emitter_select_scalar_style(emitter, event))
- return 0;
- if (!yaml_emitter_process_anchor(emitter))
- return 0;
- if (!yaml_emitter_process_tag(emitter))
- return 0;
- if (!yaml_emitter_increase_indent(emitter, 1, 0))
- return 0;
- if (!yaml_emitter_process_scalar(emitter))
- return 0;
- emitter->indent = POP(emitter, emitter->indents);
- emitter->state = POP(emitter, emitter->states);
-
- return 1;
-}
-
-/*
- * Expect SEQUENCE-START.
- */
-
-static int
-yaml_emitter_emit_sequence_start(yaml_emitter_t *emitter, yaml_event_t *event)
-{
- if (!yaml_emitter_process_anchor(emitter))
- return 0;
- if (!yaml_emitter_process_tag(emitter))
- return 0;
-
- if (emitter->flow_level || emitter->canonical
- || event->data.sequence_start.style == YAML_FLOW_SEQUENCE_STYLE
- || yaml_emitter_check_empty_sequence(emitter)) {
- emitter->state = YAML_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE;
- }
- else {
- emitter->state = YAML_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE;
- }
-
- return 1;
-}
-
-/*
- * Expect MAPPING-START.
- */
-
-static int
-yaml_emitter_emit_mapping_start(yaml_emitter_t *emitter, yaml_event_t *event)
-{
- if (!yaml_emitter_process_anchor(emitter))
- return 0;
- if (!yaml_emitter_process_tag(emitter))
- return 0;
-
- if (emitter->flow_level || emitter->canonical
- || event->data.mapping_start.style == YAML_FLOW_MAPPING_STYLE
- || yaml_emitter_check_empty_mapping(emitter)) {
- emitter->state = YAML_EMIT_FLOW_MAPPING_FIRST_KEY_STATE;
- }
- else {
- emitter->state = YAML_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE;
- }
-
- return 1;
-}
-
-/*
- * Check if the document content is an empty scalar.
- */
-
-static int
-yaml_emitter_check_empty_document(yaml_emitter_t *emitter)
-{
- return 0;
-}
-
-/*
- * Check if the next events represent an empty sequence.
- */
-
-static int
-yaml_emitter_check_empty_sequence(yaml_emitter_t *emitter)
-{
- if (emitter->events.tail - emitter->events.head < 2)
- return 0;
-
- return (emitter->events.head[0].type == YAML_SEQUENCE_START_EVENT
- && emitter->events.head[1].type == YAML_SEQUENCE_END_EVENT);
-}
-
-/*
- * Check if the next events represent an empty mapping.
- */
-
-static int
-yaml_emitter_check_empty_mapping(yaml_emitter_t *emitter)
-{
- if (emitter->events.tail - emitter->events.head < 2)
- return 0;
-
- return (emitter->events.head[0].type == YAML_MAPPING_START_EVENT
- && emitter->events.head[1].type == YAML_MAPPING_END_EVENT);
-}
-
-/*
- * Check if the next node can be expressed as a simple key.
- */
-
-static int
-yaml_emitter_check_simple_key(yaml_emitter_t *emitter)
-{
- yaml_event_t *event = emitter->events.head;
- size_t length = 0;
-
- switch (event->type)
- {
- case YAML_ALIAS_EVENT:
- length += emitter->anchor_data.anchor_length;
- break;
-
- case YAML_SCALAR_EVENT:
- if (emitter->scalar_data.multiline)
- return 0;
- length += emitter->anchor_data.anchor_length
- + emitter->tag_data.handle_length
- + emitter->tag_data.suffix_length
- + emitter->scalar_data.length;
- break;
-
- case YAML_SEQUENCE_START_EVENT:
- if (!yaml_emitter_check_empty_sequence(emitter))
- return 0;
- length += emitter->anchor_data.anchor_length
- + emitter->tag_data.handle_length
- + emitter->tag_data.suffix_length;
- break;
-
- case YAML_MAPPING_START_EVENT:
- if (!yaml_emitter_check_empty_mapping(emitter))
- return 0;
- length += emitter->anchor_data.anchor_length
- + emitter->tag_data.handle_length
- + emitter->tag_data.suffix_length;
- break;
-
- default:
- return 0;
- }
-
- if (length > 128)
- return 0;
-
- return 1;
-}
-
-/*
- * Determine an acceptable scalar style.
- */
-
-static int
-yaml_emitter_select_scalar_style(yaml_emitter_t *emitter, yaml_event_t *event)
-{
- yaml_scalar_style_t style = event->data.scalar.style;
- int no_tag = (!emitter->tag_data.handle && !emitter->tag_data.suffix);
-
- if (no_tag && !event->data.scalar.plain_implicit
- && !event->data.scalar.quoted_implicit) {
- return yaml_emitter_set_emitter_error(emitter,
- "neither tag nor implicit flags are specified");
- }
-
- if (style == YAML_ANY_SCALAR_STYLE)
- style = YAML_PLAIN_SCALAR_STYLE;
-
- if (emitter->canonical)
- style = YAML_DOUBLE_QUOTED_SCALAR_STYLE;
-
- if (emitter->simple_key_context && emitter->scalar_data.multiline)
- style = YAML_DOUBLE_QUOTED_SCALAR_STYLE;
-
- if (style == YAML_PLAIN_SCALAR_STYLE)
- {
- if ((emitter->flow_level && !emitter->scalar_data.flow_plain_allowed)
- || (!emitter->flow_level && !emitter->scalar_data.block_plain_allowed))
- style = YAML_SINGLE_QUOTED_SCALAR_STYLE;
- if (!emitter->scalar_data.length
- && (emitter->flow_level || emitter->simple_key_context))
- style = YAML_SINGLE_QUOTED_SCALAR_STYLE;
- if (no_tag && !event->data.scalar.plain_implicit)
- style = YAML_SINGLE_QUOTED_SCALAR_STYLE;
- }
-
- if (style == YAML_SINGLE_QUOTED_SCALAR_STYLE)
- {
- if (!emitter->scalar_data.single_quoted_allowed)
- style = YAML_DOUBLE_QUOTED_SCALAR_STYLE;
- }
-
- if (style == YAML_LITERAL_SCALAR_STYLE || style == YAML_FOLDED_SCALAR_STYLE)
- {
- if (!emitter->scalar_data.block_allowed
- || emitter->flow_level || emitter->simple_key_context)
- style = YAML_DOUBLE_QUOTED_SCALAR_STYLE;
- }
-
- if (no_tag && !event->data.scalar.quoted_implicit
- && style != YAML_PLAIN_SCALAR_STYLE)
- {
- emitter->tag_data.handle = (yaml_char_t *)"!";
- emitter->tag_data.handle_length = 1;
- }
-
- emitter->scalar_data.style = style;
-
- return 1;
-}
-
-/*
- * Write an achor.
- */
-
-static int
-yaml_emitter_process_anchor(yaml_emitter_t *emitter)
-{
- if (!emitter->anchor_data.anchor)
- return 1;
-
- if (!yaml_emitter_write_indicator(emitter,
- (emitter->anchor_data.alias ? "*" : "&"), 1, 0, 0))
- return 0;
-
- return yaml_emitter_write_anchor(emitter,
- emitter->anchor_data.anchor, emitter->anchor_data.anchor_length);
-}
-
-/*
- * Write a tag.
- */
-
-static int
-yaml_emitter_process_tag(yaml_emitter_t *emitter)
-{
- if (!emitter->tag_data.handle && !emitter->tag_data.suffix)
- return 1;
-
- if (emitter->tag_data.handle)
- {
- if (!yaml_emitter_write_tag_handle(emitter, emitter->tag_data.handle,
- emitter->tag_data.handle_length))
- return 0;
- if (emitter->tag_data.suffix) {
- if (!yaml_emitter_write_tag_content(emitter, emitter->tag_data.suffix,
- emitter->tag_data.suffix_length, 0))
- return 0;
- }
- }
- else
- {
- if (!yaml_emitter_write_indicator(emitter, "!<", 1, 0, 0))
- return 0;
- if (!yaml_emitter_write_tag_content(emitter, emitter->tag_data.suffix,
- emitter->tag_data.suffix_length, 0))
- return 0;
- if (!yaml_emitter_write_indicator(emitter, ">", 0, 0, 0))
- return 0;
- }
-
- return 1;
-}
-
-/*
- * Write a scalar.
- */
-
-static int
-yaml_emitter_process_scalar(yaml_emitter_t *emitter)
-{
- switch (emitter->scalar_data.style)
- {
- case YAML_PLAIN_SCALAR_STYLE:
- return yaml_emitter_write_plain_scalar(emitter,
- emitter->scalar_data.value, emitter->scalar_data.length,
- !emitter->simple_key_context);
-
- case YAML_SINGLE_QUOTED_SCALAR_STYLE:
- return yaml_emitter_write_single_quoted_scalar(emitter,
- emitter->scalar_data.value, emitter->scalar_data.length,
- !emitter->simple_key_context);
-
- case YAML_DOUBLE_QUOTED_SCALAR_STYLE:
- return yaml_emitter_write_double_quoted_scalar(emitter,
- emitter->scalar_data.value, emitter->scalar_data.length,
- !emitter->simple_key_context);
-
- case YAML_LITERAL_SCALAR_STYLE:
- return yaml_emitter_write_literal_scalar(emitter,
- emitter->scalar_data.value, emitter->scalar_data.length);
-
- case YAML_FOLDED_SCALAR_STYLE:
- return yaml_emitter_write_folded_scalar(emitter,
- emitter->scalar_data.value, emitter->scalar_data.length);
-
- default:
- assert(1); /* Impossible. */
- }
-
- return 0;
-}
-
-/*
- * Check if a %YAML directive is valid.
- */
-
-static int
-yaml_emitter_analyze_version_directive(yaml_emitter_t *emitter,
- yaml_version_directive_t version_directive)
-{
- if (version_directive.major != 1 || version_directive.minor != 1) {
- return yaml_emitter_set_emitter_error(emitter,
- "incompatible %YAML directive");
- }
-
- return 1;
-}
-
-/*
- * Check if a %TAG directive is valid.
- */
-
-static int
-yaml_emitter_analyze_tag_directive(yaml_emitter_t *emitter,
- yaml_tag_directive_t tag_directive)
-{
- yaml_string_t handle;
- yaml_string_t prefix;
- size_t handle_length;
- size_t prefix_length;
-
- handle_length = strlen((char *)tag_directive.handle);
- prefix_length = strlen((char *)tag_directive.prefix);
- STRING_ASSIGN(handle, tag_directive.handle, handle_length);
- STRING_ASSIGN(prefix, tag_directive.prefix, prefix_length);
-
- if (handle.start == handle.end) {
- return yaml_emitter_set_emitter_error(emitter,
- "tag handle must not be empty");
- }
-
- if (handle.start[0] != '!') {
- return yaml_emitter_set_emitter_error(emitter,
- "tag handle must start with '!'");
- }
-
- if (handle.end[-1] != '!') {
- return yaml_emitter_set_emitter_error(emitter,
- "tag handle must end with '!'");
- }
-
- handle.pointer ++;
-
- while (handle.pointer < handle.end-1) {
- if (!IS_ALPHA(handle)) {
- return yaml_emitter_set_emitter_error(emitter,
- "tag handle must contain alphanumerical characters only");
- }
- MOVE(handle);
- }
-
- if (prefix.start == prefix.end) {
- return yaml_emitter_set_emitter_error(emitter,
- "tag prefix must not be empty");
- }
-
- return 1;
-}
-
-/*
- * Check if an anchor is valid.
- */
-
-static int
-yaml_emitter_analyze_anchor(yaml_emitter_t *emitter,
- yaml_char_t *anchor, int alias)
-{
- size_t anchor_length;
- yaml_string_t string;
-
- anchor_length = strlen((char *)anchor);
- STRING_ASSIGN(string, anchor, anchor_length);
-
- if (string.start == string.end) {
- return yaml_emitter_set_emitter_error(emitter, alias ?
- "alias value must not be empty" :
- "anchor value must not be empty");
- }
-
- while (string.pointer != string.end) {
- if (!IS_ALPHA(string)) {
- return yaml_emitter_set_emitter_error(emitter, alias ?
- "alias value must contain alphanumerical characters only" :
- "anchor value must contain alphanumerical characters only");
- }
- MOVE(string);
- }
-
- emitter->anchor_data.anchor = string.start;
- emitter->anchor_data.anchor_length = string.end - string.start;
- emitter->anchor_data.alias = alias;
-
- return 1;
-}
-
-/*
- * Check if a tag is valid.
- */
-
-static int
-yaml_emitter_analyze_tag(yaml_emitter_t *emitter,
- yaml_char_t *tag)
-{
- size_t tag_length;
- yaml_string_t string;
- yaml_tag_directive_t *tag_directive;
-
- tag_length = strlen((char *)tag);
- STRING_ASSIGN(string, tag, tag_length);
-
- if (string.start == string.end) {
- return yaml_emitter_set_emitter_error(emitter,
- "tag value must not be empty");
- }
-
- for (tag_directive = emitter->tag_directives.start;
- tag_directive != emitter->tag_directives.top; tag_directive ++) {
- size_t prefix_length = strlen((char *)tag_directive->prefix);
- if (prefix_length < (size_t)(string.end - string.start)
- && strncmp((char *)tag_directive->prefix, (char *)string.start,
- prefix_length) == 0)
- {
- emitter->tag_data.handle = tag_directive->handle;
- emitter->tag_data.handle_length =
- strlen((char *)tag_directive->handle);
- emitter->tag_data.suffix = string.start + prefix_length;
- emitter->tag_data.suffix_length =
- (string.end - string.start) - prefix_length;
- return 1;
- }
- }
-
- emitter->tag_data.suffix = string.start;
- emitter->tag_data.suffix_length = string.end - string.start;
-
- return 1;
-}
-
-/*
- * Check if a scalar is valid.
- */
-
-static int
-yaml_emitter_analyze_scalar(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length)
-{
- yaml_string_t string;
-
- int block_indicators = 0;
- int flow_indicators = 0;
- int line_breaks = 0;
- int special_characters = 0;
-
- int leading_space = 0;
- int leading_break = 0;
- int trailing_space = 0;
- int trailing_break = 0;
- int break_space = 0;
- int space_break = 0;
-
- int preceeded_by_whitespace = 0;
- int followed_by_whitespace = 0;
- int previous_space = 0;
- int previous_break = 0;
-
- STRING_ASSIGN(string, value, length);
-
- emitter->scalar_data.value = value;
- emitter->scalar_data.length = length;
-
- if (string.start == string.end)
- {
- emitter->scalar_data.multiline = 0;
- emitter->scalar_data.flow_plain_allowed = 0;
- emitter->scalar_data.block_plain_allowed = 1;
- emitter->scalar_data.single_quoted_allowed = 1;
- emitter->scalar_data.block_allowed = 0;
-
- return 1;
- }
-
- if ((CHECK_AT(string, '-', 0)
- && CHECK_AT(string, '-', 1)
- && CHECK_AT(string, '-', 2))
- || (CHECK_AT(string, '.', 0)
- && CHECK_AT(string, '.', 1)
- && CHECK_AT(string, '.', 2))) {
- block_indicators = 1;
- flow_indicators = 1;
- }
-
- preceeded_by_whitespace = 1;
- followed_by_whitespace = IS_BLANKZ_AT(string, WIDTH(string));
-
- while (string.pointer != string.end)
- {
- if (string.start == string.pointer)
- {
- if (CHECK(string, '#') || CHECK(string, ',')
- || CHECK(string, '[') || CHECK(string, ']')
- || CHECK(string, '{') || CHECK(string, '}')
- || CHECK(string, '&') || CHECK(string, '*')
- || CHECK(string, '!') || CHECK(string, '|')
- || CHECK(string, '>') || CHECK(string, '\'')
- || CHECK(string, '"') || CHECK(string, '%')
- || CHECK(string, '@') || CHECK(string, '`')) {
- flow_indicators = 1;
- block_indicators = 1;
- }
-
- if (CHECK(string, '?') || CHECK(string, ':')) {
- flow_indicators = 1;
- if (followed_by_whitespace) {
- block_indicators = 1;
- }
- }
-
- if (CHECK(string, '-') && followed_by_whitespace) {
- flow_indicators = 1;
- block_indicators = 1;
- }
- }
- else
- {
- if (CHECK(string, ',') || CHECK(string, '?')
- || CHECK(string, '[') || CHECK(string, ']')
- || CHECK(string, '{') || CHECK(string, '}')) {
- flow_indicators = 1;
- }
-
- if (CHECK(string, ':')) {
- flow_indicators = 1;
- if (followed_by_whitespace) {
- block_indicators = 1;
- }
- }
-
- if (CHECK(string, '#') && preceeded_by_whitespace) {
- flow_indicators = 1;
- block_indicators = 1;
- }
- }
-
- if (!IS_PRINTABLE(string)
- || (!IS_ASCII(string) && !emitter->unicode)) {
- special_characters = 1;
- }
-
- if (IS_BREAK(string)) {
- line_breaks = 1;
- }
-
- if (IS_SPACE(string))
- {
- if (string.start == string.pointer) {
- leading_space = 1;
- }
- if (string.pointer+WIDTH(string) == string.end) {
- trailing_space = 1;
- }
- if (previous_break) {
- break_space = 1;
- }
- previous_space = 1;
- previous_break = 0;
- }
- else if (IS_BREAK(string))
- {
- if (string.start == string.pointer) {
- leading_break = 1;
- }
- if (string.pointer+WIDTH(string) == string.end) {
- trailing_break = 1;
- }
- if (previous_space) {
- space_break = 1;
- }
- previous_space = 0;
- previous_break = 1;
- }
- else
- {
- previous_space = 0;
- previous_break = 0;
- }
-
- preceeded_by_whitespace = IS_BLANKZ(string);
- MOVE(string);
- if (string.pointer != string.end) {
- followed_by_whitespace = IS_BLANKZ_AT(string, WIDTH(string));
- }
- }
-
- emitter->scalar_data.multiline = line_breaks;
-
- emitter->scalar_data.flow_plain_allowed = 1;
- emitter->scalar_data.block_plain_allowed = 1;
- emitter->scalar_data.single_quoted_allowed = 1;
- emitter->scalar_data.block_allowed = 1;
-
- if (leading_space || leading_break || trailing_space || trailing_break) {
- emitter->scalar_data.flow_plain_allowed = 0;
- emitter->scalar_data.block_plain_allowed = 0;
- }
-
- if (trailing_space) {
- emitter->scalar_data.block_allowed = 0;
- }
-
- if (break_space) {
- emitter->scalar_data.flow_plain_allowed = 0;
- emitter->scalar_data.block_plain_allowed = 0;
- emitter->scalar_data.single_quoted_allowed = 0;
- }
-
- if (space_break || special_characters) {
- emitter->scalar_data.flow_plain_allowed = 0;
- emitter->scalar_data.block_plain_allowed = 0;
- emitter->scalar_data.single_quoted_allowed = 0;
- emitter->scalar_data.block_allowed = 0;
- }
-
- if (line_breaks) {
- emitter->scalar_data.flow_plain_allowed = 0;
- emitter->scalar_data.block_plain_allowed = 0;
- }
-
- if (flow_indicators) {
- emitter->scalar_data.flow_plain_allowed = 0;
- }
-
- if (block_indicators) {
- emitter->scalar_data.block_plain_allowed = 0;
- }
-
- return 1;
-}
-
-/*
- * Check if the event data is valid.
- */
-
-static int
-yaml_emitter_analyze_event(yaml_emitter_t *emitter,
- yaml_event_t *event)
-{
- emitter->anchor_data.anchor = NULL;
- emitter->anchor_data.anchor_length = 0;
- emitter->tag_data.handle = NULL;
- emitter->tag_data.handle_length = 0;
- emitter->tag_data.suffix = NULL;
- emitter->tag_data.suffix_length = 0;
- emitter->scalar_data.value = NULL;
- emitter->scalar_data.length = 0;
-
- switch (event->type)
- {
- case YAML_ALIAS_EVENT:
- if (!yaml_emitter_analyze_anchor(emitter,
- event->data.alias.anchor, 1))
- return 0;
- return 1;
-
- case YAML_SCALAR_EVENT:
- if (event->data.scalar.anchor) {
- if (!yaml_emitter_analyze_anchor(emitter,
- event->data.scalar.anchor, 0))
- return 0;
- }
- if (event->data.scalar.tag && (emitter->canonical ||
- (!event->data.scalar.plain_implicit
- && !event->data.scalar.quoted_implicit))) {
- if (!yaml_emitter_analyze_tag(emitter, event->data.scalar.tag))
- return 0;
- }
- if (!yaml_emitter_analyze_scalar(emitter,
- event->data.scalar.value, event->data.scalar.length))
- return 0;
- return 1;
-
- case YAML_SEQUENCE_START_EVENT:
- if (event->data.sequence_start.anchor) {
- if (!yaml_emitter_analyze_anchor(emitter,
- event->data.sequence_start.anchor, 0))
- return 0;
- }
- if (event->data.sequence_start.tag && (emitter->canonical ||
- !event->data.sequence_start.implicit)) {
- if (!yaml_emitter_analyze_tag(emitter,
- event->data.sequence_start.tag))
- return 0;
- }
- return 1;
-
- case YAML_MAPPING_START_EVENT:
- if (event->data.mapping_start.anchor) {
- if (!yaml_emitter_analyze_anchor(emitter,
- event->data.mapping_start.anchor, 0))
- return 0;
- }
- if (event->data.mapping_start.tag && (emitter->canonical ||
- !event->data.mapping_start.implicit)) {
- if (!yaml_emitter_analyze_tag(emitter,
- event->data.mapping_start.tag))
- return 0;
- }
- return 1;
-
- default:
- return 1;
- }
-}
-
-/*
- * Write the BOM character.
- */
-
-static int
-yaml_emitter_write_bom(yaml_emitter_t *emitter)
-{
- if (!FLUSH(emitter)) return 0;
-
- *(emitter->buffer.pointer++) = (yaml_char_t) '\xEF';
- *(emitter->buffer.pointer++) = (yaml_char_t) '\xBB';
- *(emitter->buffer.pointer++) = (yaml_char_t) '\xBF';
-
- return 1;
-}
-
-static int
-yaml_emitter_write_indent(yaml_emitter_t *emitter)
-{
- int indent = (emitter->indent >= 0) ? emitter->indent : 0;
-
- if (!emitter->indention || emitter->column > indent
- || (emitter->column == indent && !emitter->whitespace)) {
- if (!PUT_BREAK(emitter)) return 0;
- }
-
- while (emitter->column < indent) {
- if (!PUT(emitter, ' ')) return 0;
- }
-
- emitter->whitespace = 1;
- emitter->indention = 1;
-
- return 1;
-}
-
-static int
-yaml_emitter_write_indicator(yaml_emitter_t *emitter,
- const char *indicator, int need_whitespace,
- int is_whitespace, int is_indention)
-{
- size_t indicator_length;
- yaml_string_t string;
-
- indicator_length = strlen(indicator);
- STRING_ASSIGN(string, (yaml_char_t *)indicator, indicator_length);
-
- if (need_whitespace && !emitter->whitespace) {
- if (!PUT(emitter, ' ')) return 0;
- }
-
- while (string.pointer != string.end) {
- if (!WRITE(emitter, string)) return 0;
- }
-
- emitter->whitespace = is_whitespace;
- emitter->indention = (emitter->indention && is_indention);
- emitter->open_ended = 0;
-
- return 1;
-}
-
-static int
-yaml_emitter_write_anchor(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length)
-{
- yaml_string_t string;
- STRING_ASSIGN(string, value, length);
-
- while (string.pointer != string.end) {
- if (!WRITE(emitter, string)) return 0;
- }
-
- emitter->whitespace = 0;
- emitter->indention = 0;
-
- return 1;
-}
-
-static int
-yaml_emitter_write_tag_handle(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length)
-{
- yaml_string_t string;
- STRING_ASSIGN(string, value, length);
-
- if (!emitter->whitespace) {
- if (!PUT(emitter, ' ')) return 0;
- }
-
- while (string.pointer != string.end) {
- if (!WRITE(emitter, string)) return 0;
- }
-
- emitter->whitespace = 0;
- emitter->indention = 0;
-
- return 1;
-}
-
-static int
-yaml_emitter_write_tag_content(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length,
- int need_whitespace)
-{
- yaml_string_t string;
- STRING_ASSIGN(string, value, length);
-
- if (need_whitespace && !emitter->whitespace) {
- if (!PUT(emitter, ' ')) return 0;
- }
-
- while (string.pointer != string.end) {
- if (IS_ALPHA(string)
- || CHECK(string, ';') || CHECK(string, '/')
- || CHECK(string, '?') || CHECK(string, ':')
- || CHECK(string, '@') || CHECK(string, '&')
- || CHECK(string, '=') || CHECK(string, '+')
- || CHECK(string, '$') || CHECK(string, ',')
- || CHECK(string, '_') || CHECK(string, '.')
- || CHECK(string, '~') || CHECK(string, '*')
- || CHECK(string, '\'') || CHECK(string, '(')
- || CHECK(string, ')') || CHECK(string, '[')
- || CHECK(string, ']')) {
- if (!WRITE(emitter, string)) return 0;
- }
- else {
- int width = WIDTH(string);
- unsigned int value;
- while (width --) {
- value = *(string.pointer++);
- if (!PUT(emitter, '%')) return 0;
- if (!PUT(emitter, (value >> 4)
- + ((value >> 4) < 10 ? '0' : 'A' - 10)))
- return 0;
- if (!PUT(emitter, (value & 0x0F)
- + ((value & 0x0F) < 10 ? '0' : 'A' - 10)))
- return 0;
- }
- }
- }
-
- emitter->whitespace = 0;
- emitter->indention = 0;
-
- return 1;
-}
-
-static int
-yaml_emitter_write_plain_scalar(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length, int allow_breaks)
-{
- yaml_string_t string;
- int spaces = 0;
- int breaks = 0;
-
- STRING_ASSIGN(string, value, length);
-
- if (!emitter->whitespace) {
- if (!PUT(emitter, ' ')) return 0;
- }
-
- while (string.pointer != string.end)
- {
- if (IS_SPACE(string))
- {
- if (allow_breaks && !spaces
- && emitter->column > emitter->best_width
- && !IS_SPACE_AT(string, 1)) {
- if (!yaml_emitter_write_indent(emitter)) return 0;
- MOVE(string);
- }
- else {
- if (!WRITE(emitter, string)) return 0;
- }
- spaces = 1;
- }
- else if (IS_BREAK(string))
- {
- if (!breaks && CHECK(string, '\n')) {
- if (!PUT_BREAK(emitter)) return 0;
- }
- if (!WRITE_BREAK(emitter, string)) return 0;
- emitter->indention = 1;
- breaks = 1;
- }
- else
- {
- if (breaks) {
- if (!yaml_emitter_write_indent(emitter)) return 0;
- }
- if (!WRITE(emitter, string)) return 0;
- emitter->indention = 0;
- spaces = 0;
- breaks = 0;
- }
- }
-
- emitter->whitespace = 0;
- emitter->indention = 0;
- if (emitter->root_context)
- {
- emitter->open_ended = 1;
- }
-
- return 1;
-}
-
-static int
-yaml_emitter_write_single_quoted_scalar(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length, int allow_breaks)
-{
- yaml_string_t string;
- int spaces = 0;
- int breaks = 0;
-
- STRING_ASSIGN(string, value, length);
-
- if (!yaml_emitter_write_indicator(emitter, "'", 1, 0, 0))
- return 0;
-
- while (string.pointer != string.end)
- {
- if (IS_SPACE(string))
- {
- if (allow_breaks && !spaces
- && emitter->column > emitter->best_width
- && string.pointer != string.start
- && string.pointer != string.end - 1
- && !IS_SPACE_AT(string, 1)) {
- if (!yaml_emitter_write_indent(emitter)) return 0;
- MOVE(string);
- }
- else {
- if (!WRITE(emitter, string)) return 0;
- }
- spaces = 1;
- }
- else if (IS_BREAK(string))
- {
- if (!breaks && CHECK(string, '\n')) {
- if (!PUT_BREAK(emitter)) return 0;
- }
- if (!WRITE_BREAK(emitter, string)) return 0;
- emitter->indention = 1;
- breaks = 1;
- }
- else
- {
- if (breaks) {
- if (!yaml_emitter_write_indent(emitter)) return 0;
- }
- if (CHECK(string, '\'')) {
- if (!PUT(emitter, '\'')) return 0;
- }
- if (!WRITE(emitter, string)) return 0;
- emitter->indention = 0;
- spaces = 0;
- breaks = 0;
- }
- }
-
- if (!yaml_emitter_write_indicator(emitter, "'", 0, 0, 0))
- return 0;
-
- emitter->whitespace = 0;
- emitter->indention = 0;
-
- return 1;
-}
-
-static int
-yaml_emitter_write_double_quoted_scalar(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length, int allow_breaks)
-{
- yaml_string_t string;
- int spaces = 0;
-
- STRING_ASSIGN(string, value, length);
-
- if (!yaml_emitter_write_indicator(emitter, "\"", 1, 0, 0))
- return 0;
-
- while (string.pointer != string.end)
- {
- if (!IS_PRINTABLE(string) || (!emitter->unicode && !IS_ASCII(string))
- || IS_BOM(string) || IS_BREAK(string)
- || CHECK(string, '"') || CHECK(string, '\\'))
- {
- unsigned char octet;
- unsigned int width;
- unsigned int value;
- int k;
-
- octet = string.pointer[0];
- width = (octet & 0x80) == 0x00 ? 1 :
- (octet & 0xE0) == 0xC0 ? 2 :
- (octet & 0xF0) == 0xE0 ? 3 :
- (octet & 0xF8) == 0xF0 ? 4 : 0;
- value = (octet & 0x80) == 0x00 ? octet & 0x7F :
- (octet & 0xE0) == 0xC0 ? octet & 0x1F :
- (octet & 0xF0) == 0xE0 ? octet & 0x0F :
- (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0;
- for (k = 1; k < (int)width; k ++) {
- octet = string.pointer[k];
- value = (value << 6) + (octet & 0x3F);
- }
- string.pointer += width;
-
- if (!PUT(emitter, '\\')) return 0;
-
- switch (value)
- {
- case 0x00:
- if (!PUT(emitter, '0')) return 0;
- break;
-
- case 0x07:
- if (!PUT(emitter, 'a')) return 0;
- break;
-
- case 0x08:
- if (!PUT(emitter, 'b')) return 0;
- break;
-
- case 0x09:
- if (!PUT(emitter, 't')) return 0;
- break;
-
- case 0x0A:
- if (!PUT(emitter, 'n')) return 0;
- break;
-
- case 0x0B:
- if (!PUT(emitter, 'v')) return 0;
- break;
-
- case 0x0C:
- if (!PUT(emitter, 'f')) return 0;
- break;
-
- case 0x0D:
- if (!PUT(emitter, 'r')) return 0;
- break;
-
- case 0x1B:
- if (!PUT(emitter, 'e')) return 0;
- break;
-
- case 0x22:
- if (!PUT(emitter, '\"')) return 0;
- break;
-
- case 0x5C:
- if (!PUT(emitter, '\\')) return 0;
- break;
-
- case 0x85:
- if (!PUT(emitter, 'N')) return 0;
- break;
-
- case 0xA0:
- if (!PUT(emitter, '_')) return 0;
- break;
-
- case 0x2028:
- if (!PUT(emitter, 'L')) return 0;
- break;
-
- case 0x2029:
- if (!PUT(emitter, 'P')) return 0;
- break;
-
- default:
- if (value <= 0xFF) {
- if (!PUT(emitter, 'x')) return 0;
- width = 2;
- }
- else if (value <= 0xFFFF) {
- if (!PUT(emitter, 'u')) return 0;
- width = 4;
- }
- else {
- if (!PUT(emitter, 'U')) return 0;
- width = 8;
- }
- for (k = (width-1)*4; k >= 0; k -= 4) {
- int digit = (value >> k) & 0x0F;
- if (!PUT(emitter, digit + (digit < 10 ? '0' : 'A'-10)))
- return 0;
- }
- }
- spaces = 0;
- }
- else if (IS_SPACE(string))
- {
- if (allow_breaks && !spaces
- && emitter->column > emitter->best_width
- && string.pointer != string.start
- && string.pointer != string.end - 1) {
- if (!yaml_emitter_write_indent(emitter)) return 0;
- if (IS_SPACE_AT(string, 1)) {
- if (!PUT(emitter, '\\')) return 0;
- }
- MOVE(string);
- }
- else {
- if (!WRITE(emitter, string)) return 0;
- }
- spaces = 1;
- }
- else
- {
- if (!WRITE(emitter, string)) return 0;
- spaces = 0;
- }
- }
-
- if (!yaml_emitter_write_indicator(emitter, "\"", 0, 0, 0))
- return 0;
-
- emitter->whitespace = 0;
- emitter->indention = 0;
-
- return 1;
-}
-
-static int
-yaml_emitter_write_block_scalar_hints(yaml_emitter_t *emitter,
- yaml_string_t string)
-{
- char indent_hint[2];
- const char *chomp_hint = NULL;
-
- if (IS_SPACE(string) || IS_BREAK(string))
- {
- indent_hint[0] = '0' + (char)emitter->best_indent;
- indent_hint[1] = '\0';
- if (!yaml_emitter_write_indicator(emitter, indent_hint, 0, 0, 0))
- return 0;
- }
-
- emitter->open_ended = 0;
-
- string.pointer = string.end;
- if (string.start == string.pointer)
- {
- chomp_hint = "-";
- }
- else
- {
- do {
- string.pointer --;
- } while ((*string.pointer & 0xC0) == 0x80);
- if (!IS_BREAK(string))
- {
- chomp_hint = "-";
- }
- else if (string.start == string.pointer)
- {
- chomp_hint = "+";
- emitter->open_ended = 1;
- }
- else
- {
- do {
- string.pointer --;
- } while ((*string.pointer & 0xC0) == 0x80);
- if (IS_BREAK(string))
- {
- chomp_hint = "+";
- emitter->open_ended = 1;
- }
- }
- }
-
- if (chomp_hint)
- {
- if (!yaml_emitter_write_indicator(emitter, chomp_hint, 0, 0, 0))
- return 0;
- }
-
- return 1;
-}
-
-static int
-yaml_emitter_write_literal_scalar(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length)
-{
- yaml_string_t string;
- int breaks = 1;
-
- STRING_ASSIGN(string, value, length);
-
- if (!yaml_emitter_write_indicator(emitter, "|", 1, 0, 0))
- return 0;
- if (!yaml_emitter_write_block_scalar_hints(emitter, string))
- return 0;
- if (!PUT_BREAK(emitter)) return 0;
- emitter->indention = 1;
- emitter->whitespace = 1;
-
- while (string.pointer != string.end)
- {
- if (IS_BREAK(string))
- {
- if (!WRITE_BREAK(emitter, string)) return 0;
- emitter->indention = 1;
- breaks = 1;
- }
- else
- {
- if (breaks) {
- if (!yaml_emitter_write_indent(emitter)) return 0;
- }
- if (!WRITE(emitter, string)) return 0;
- emitter->indention = 0;
- breaks = 0;
- }
- }
-
- return 1;
-}
-
-static int
-yaml_emitter_write_folded_scalar(yaml_emitter_t *emitter,
- yaml_char_t *value, size_t length)
-{
- yaml_string_t string;
- int breaks = 1;
- int leading_spaces = 1;
-
- STRING_ASSIGN(string, value, length);
-
- if (!yaml_emitter_write_indicator(emitter, ">", 1, 0, 0))
- return 0;
- if (!yaml_emitter_write_block_scalar_hints(emitter, string))
- return 0;
- if (!PUT_BREAK(emitter)) return 0;
- emitter->indention = 1;
- emitter->whitespace = 1;
-
- while (string.pointer != string.end)
- {
- if (IS_BREAK(string))
- {
- if (!breaks && !leading_spaces && CHECK(string, '\n')) {
- int k = 0;
- while (IS_BREAK_AT(string, k)) {
- k += WIDTH_AT(string, k);
- }
- if (!IS_BLANKZ_AT(string, k)) {
- if (!PUT_BREAK(emitter)) return 0;
- }
- }
- if (!WRITE_BREAK(emitter, string)) return 0;
- emitter->indention = 1;
- breaks = 1;
- }
- else
- {
- if (breaks) {
- if (!yaml_emitter_write_indent(emitter)) return 0;
- leading_spaces = IS_BLANK(string);
- }
- if (!breaks && IS_SPACE(string) && !IS_SPACE_AT(string, 1)
- && emitter->column > emitter->best_width) {
- if (!yaml_emitter_write_indent(emitter)) return 0;
- MOVE(string);
- }
- else {
- if (!WRITE(emitter, string)) return 0;
- }
- emitter->indention = 0;
- breaks = 0;
- }
- }
-
- return 1;
-}
-
diff --git a/ext/psych/yaml/loader.c b/ext/psych/yaml/loader.c
deleted file mode 100644
index cb3ea93089..0000000000
--- a/ext/psych/yaml/loader.c
+++ /dev/null
@@ -1,459 +0,0 @@
-
-#include "yaml_private.h"
-
-/*
- * API functions.
- */
-
-YAML_DECLARE(int)
-yaml_parser_load(yaml_parser_t *parser, yaml_document_t *document);
-
-/*
- * Error handling.
- */
-
-static int
-yaml_parser_set_composer_error(yaml_parser_t *parser,
- const char *problem, yaml_mark_t problem_mark);
-
-static int
-yaml_parser_set_composer_error_context(yaml_parser_t *parser,
- const char *context, yaml_mark_t context_mark,
- const char *problem, yaml_mark_t problem_mark);
-
-
-/*
- * Alias handling.
- */
-
-static int
-yaml_parser_register_anchor(yaml_parser_t *parser,
- int index, yaml_char_t *anchor);
-
-/*
- * Clean up functions.
- */
-
-static void
-yaml_parser_delete_aliases(yaml_parser_t *parser);
-
-/*
- * Composer functions.
- */
-
-static int
-yaml_parser_load_document(yaml_parser_t *parser, yaml_event_t *first_event);
-
-static int
-yaml_parser_load_node(yaml_parser_t *parser, yaml_event_t *first_event);
-
-static int
-yaml_parser_load_alias(yaml_parser_t *parser, yaml_event_t *first_event);
-
-static int
-yaml_parser_load_scalar(yaml_parser_t *parser, yaml_event_t *first_event);
-
-static int
-yaml_parser_load_sequence(yaml_parser_t *parser, yaml_event_t *first_event);
-
-static int
-yaml_parser_load_mapping(yaml_parser_t *parser, yaml_event_t *first_event);
-
-/*
- * Load the next document of the stream.
- */
-
-YAML_DECLARE(int)
-yaml_parser_load(yaml_parser_t *parser, yaml_document_t *document)
-{
- yaml_event_t event;
-
- assert(parser); /* Non-NULL parser object is expected. */
- assert(document); /* Non-NULL document object is expected. */
-
- memset(document, 0, sizeof(yaml_document_t));
- if (!STACK_INIT(parser, document->nodes, INITIAL_STACK_SIZE))
- goto error;
-
- if (!parser->stream_start_produced) {
- if (!yaml_parser_parse(parser, &event)) goto error;
- assert(event.type == YAML_STREAM_START_EVENT);
- /* STREAM-START is expected. */
- }
-
- if (parser->stream_end_produced) {
- return 1;
- }
-
- if (!yaml_parser_parse(parser, &event)) goto error;
- if (event.type == YAML_STREAM_END_EVENT) {
- return 1;
- }
-
- if (!STACK_INIT(parser, parser->aliases, INITIAL_STACK_SIZE))
- goto error;
-
- parser->document = document;
-
- if (!yaml_parser_load_document(parser, &event)) goto error;
-
- yaml_parser_delete_aliases(parser);
- parser->document = NULL;
-
- return 1;
-
-error:
-
- yaml_parser_delete_aliases(parser);
- yaml_document_delete(document);
- parser->document = NULL;
-
- return 0;
-}
-
-/*
- * Set composer error.
- */
-
-static int
-yaml_parser_set_composer_error(yaml_parser_t *parser,
- const char *problem, yaml_mark_t problem_mark)
-{
- parser->error = YAML_COMPOSER_ERROR;
- parser->problem = problem;
- parser->problem_mark = problem_mark;
-
- return 0;
-}
-
-/*
- * Set composer error with context.
- */
-
-static int
-yaml_parser_set_composer_error_context(yaml_parser_t *parser,
- const char *context, yaml_mark_t context_mark,
- const char *problem, yaml_mark_t problem_mark)
-{
- parser->error = YAML_COMPOSER_ERROR;
- parser->context = context;
- parser->context_mark = context_mark;
- parser->problem = problem;
- parser->problem_mark = problem_mark;
-
- return 0;
-}
-
-/*
- * Delete the stack of aliases.
- */
-
-static void
-yaml_parser_delete_aliases(yaml_parser_t *parser)
-{
- while (!STACK_EMPTY(parser, parser->aliases)) {
- yaml_free(POP(parser, parser->aliases).anchor);
- }
- STACK_DEL(parser, parser->aliases);
-}
-
-/*
- * Compose a document object.
- */
-
-static int
-yaml_parser_load_document(yaml_parser_t *parser, yaml_event_t *first_event)
-{
- yaml_event_t event;
-
- assert(first_event->type == YAML_DOCUMENT_START_EVENT);
- /* DOCUMENT-START is expected. */
-
- parser->document->version_directive
- = first_event->data.document_start.version_directive;
- parser->document->tag_directives.start
- = first_event->data.document_start.tag_directives.start;
- parser->document->tag_directives.end
- = first_event->data.document_start.tag_directives.end;
- parser->document->start_implicit
- = first_event->data.document_start.implicit;
- parser->document->start_mark = first_event->start_mark;
-
- if (!yaml_parser_parse(parser, &event)) return 0;
-
- if (!yaml_parser_load_node(parser, &event)) return 0;
-
- if (!yaml_parser_parse(parser, &event)) return 0;
- assert(event.type == YAML_DOCUMENT_END_EVENT);
- /* DOCUMENT-END is expected. */
-
- parser->document->end_implicit = event.data.document_end.implicit;
- parser->document->end_mark = event.end_mark;
-
- return 1;
-}
-
-/*
- * Compose a node.
- */
-
-static int
-yaml_parser_load_node(yaml_parser_t *parser, yaml_event_t *first_event)
-{
- switch (first_event->type) {
- case YAML_ALIAS_EVENT:
- return yaml_parser_load_alias(parser, first_event);
- case YAML_SCALAR_EVENT:
- return yaml_parser_load_scalar(parser, first_event);
- case YAML_SEQUENCE_START_EVENT:
- return yaml_parser_load_sequence(parser, first_event);
- case YAML_MAPPING_START_EVENT:
- return yaml_parser_load_mapping(parser, first_event);
- default:
- assert(0); /* Could not happen. */
- return 0;
- }
-
- return 0;
-}
-
-/*
- * Add an anchor.
- */
-
-static int
-yaml_parser_register_anchor(yaml_parser_t *parser,
- int index, yaml_char_t *anchor)
-{
- yaml_alias_data_t data;
- yaml_alias_data_t *alias_data;
-
- if (!anchor) return 1;
-
- data.anchor = anchor;
- data.index = index;
- data.mark = parser->document->nodes.start[index-1].start_mark;
-
- for (alias_data = parser->aliases.start;
- alias_data != parser->aliases.top; alias_data ++) {
- if (strcmp((char *)alias_data->anchor, (char *)anchor) == 0) {
- yaml_free(anchor);
- return yaml_parser_set_composer_error_context(parser,
- "found duplicate anchor; first occurence",
- alias_data->mark, "second occurence", data.mark);
- }
- }
-
- if (!PUSH(parser, parser->aliases, data)) {
- yaml_free(anchor);
- return 0;
- }
-
- return 1;
-}
-
-/*
- * Compose a node corresponding to an alias.
- */
-
-static int
-yaml_parser_load_alias(yaml_parser_t *parser, yaml_event_t *first_event)
-{
- yaml_char_t *anchor = first_event->data.alias.anchor;
- yaml_alias_data_t *alias_data;
-
- for (alias_data = parser->aliases.start;
- alias_data != parser->aliases.top; alias_data ++) {
- if (strcmp((char *)alias_data->anchor, (char *)anchor) == 0) {
- yaml_free(anchor);
- return alias_data->index;
- }
- }
-
- yaml_free(anchor);
- return yaml_parser_set_composer_error(parser, "found undefined alias",
- first_event->start_mark);
-}
-
-/*
- * Compose a scalar node.
- */
-
-static int
-yaml_parser_load_scalar(yaml_parser_t *parser, yaml_event_t *first_event)
-{
- yaml_node_t node;
- ptrdiff_t node_index;
- int index;
- yaml_char_t *tag = first_event->data.scalar.tag;
-
- if (!STACK_LIMIT(parser, parser->document->nodes, INT_MAX-1)) goto error;
-
- if (!tag || strcmp((char *)tag, "!") == 0) {
- yaml_free(tag);
- tag = yaml_strdup((yaml_char_t *)YAML_DEFAULT_SCALAR_TAG);
- if (!tag) goto error;
- }
-
- SCALAR_NODE_INIT(node, tag, first_event->data.scalar.value,
- first_event->data.scalar.length, first_event->data.scalar.style,
- first_event->start_mark, first_event->end_mark);
-
- if (!PUSH(parser, parser->document->nodes, node)) goto error;
-
- node_index = parser->document->nodes.top - parser->document->nodes.start;
-#if PTRDIFF_MAX > INT_MAX
- if (node_index > INT_MAX) goto error;
-#endif
- index = (int)node_index;
-
- if (!yaml_parser_register_anchor(parser, index,
- first_event->data.scalar.anchor)) return 0;
-
- return index;
-
-error:
- yaml_free(tag);
- yaml_free(first_event->data.scalar.anchor);
- yaml_free(first_event->data.scalar.value);
- return 0;
-}
-
-/*
- * Compose a sequence node.
- */
-
-static int
-yaml_parser_load_sequence(yaml_parser_t *parser, yaml_event_t *first_event)
-{
- yaml_event_t event;
- yaml_node_t node;
- struct {
- yaml_node_item_t *start;
- yaml_node_item_t *end;
- yaml_node_item_t *top;
- } items = { NULL, NULL, NULL };
- int index, item_index;
- ptrdiff_t node_index;
- yaml_char_t *tag = first_event->data.sequence_start.tag;
-
- if (!STACK_LIMIT(parser, parser->document->nodes, INT_MAX-1)) goto error;
-
- if (!tag || strcmp((char *)tag, "!") == 0) {
- yaml_free(tag);
- tag = yaml_strdup((yaml_char_t *)YAML_DEFAULT_SEQUENCE_TAG);
- if (!tag) goto error;
- }
-
- if (!STACK_INIT(parser, items, INITIAL_STACK_SIZE)) goto error;
-
- SEQUENCE_NODE_INIT(node, tag, items.start, items.end,
- first_event->data.sequence_start.style,
- first_event->start_mark, first_event->end_mark);
-
- if (!PUSH(parser, parser->document->nodes, node)) goto error;
-
- node_index = parser->document->nodes.top - parser->document->nodes.start;
-#if PTRDIFF_MAX > INT_MAX
- if (node_index > INT_MAX) goto error;
-#endif
- index = (int)node_index;
-
- if (!yaml_parser_register_anchor(parser, index,
- first_event->data.sequence_start.anchor)) return 0;
-
- if (!yaml_parser_parse(parser, &event)) return 0;
-
- while (event.type != YAML_SEQUENCE_END_EVENT) {
- if (!STACK_LIMIT(parser,
- parser->document->nodes.start[index-1].data.sequence.items,
- INT_MAX-1)) return 0;
- item_index = yaml_parser_load_node(parser, &event);
- if (!item_index) return 0;
- if (!PUSH(parser,
- parser->document->nodes.start[index-1].data.sequence.items,
- item_index)) return 0;
- if (!yaml_parser_parse(parser, &event)) return 0;
- }
-
- parser->document->nodes.start[index-1].end_mark = event.end_mark;
-
- return index;
-
-error:
- yaml_free(tag);
- yaml_free(first_event->data.sequence_start.anchor);
- return 0;
-}
-
-/*
- * Compose a mapping node.
- */
-
-static int
-yaml_parser_load_mapping(yaml_parser_t *parser, yaml_event_t *first_event)
-{
- yaml_event_t event;
- yaml_node_t node;
- struct {
- yaml_node_pair_t *start;
- yaml_node_pair_t *end;
- yaml_node_pair_t *top;
- } pairs = { NULL, NULL, NULL };
- int index;
- ptrdiff_t node_index;
- yaml_node_pair_t pair;
- yaml_char_t *tag = first_event->data.mapping_start.tag;
-
- if (!STACK_LIMIT(parser, parser->document->nodes, INT_MAX-1)) goto error;
-
- if (!tag || strcmp((char *)tag, "!") == 0) {
- yaml_free(tag);
- tag = yaml_strdup((yaml_char_t *)YAML_DEFAULT_MAPPING_TAG);
- if (!tag) goto error;
- }
-
- if (!STACK_INIT(parser, pairs, INITIAL_STACK_SIZE)) goto error;
-
- MAPPING_NODE_INIT(node, tag, pairs.start, pairs.end,
- first_event->data.mapping_start.style,
- first_event->start_mark, first_event->end_mark);
-
- if (!PUSH(parser, parser->document->nodes, node)) goto error;
-
- node_index = parser->document->nodes.top - parser->document->nodes.start;
-#if PTRDIFF_MAX > INT_MAX
- if (node_index > INT_MAX) goto error;
-#endif
- index = (int)node_index;
-
- if (!yaml_parser_register_anchor(parser, index,
- first_event->data.mapping_start.anchor)) return 0;
-
- if (!yaml_parser_parse(parser, &event)) return 0;
-
- while (event.type != YAML_MAPPING_END_EVENT) {
- if (!STACK_LIMIT(parser,
- parser->document->nodes.start[index-1].data.mapping.pairs,
- INT_MAX-1)) return 0;
- pair.key = yaml_parser_load_node(parser, &event);
- if (!pair.key) return 0;
- if (!yaml_parser_parse(parser, &event)) return 0;
- pair.value = yaml_parser_load_node(parser, &event);
- if (!pair.value) return 0;
- if (!PUSH(parser,
- parser->document->nodes.start[index-1].data.mapping.pairs,
- pair)) return 0;
- if (!yaml_parser_parse(parser, &event)) return 0;
- }
-
- parser->document->nodes.start[index-1].end_mark = event.end_mark;
-
- return index;
-
-error:
- yaml_free(tag);
- yaml_free(first_event->data.mapping_start.anchor);
- return 0;
-}
-
diff --git a/ext/psych/yaml/parser.c b/ext/psych/yaml/parser.c
deleted file mode 100644
index 32671b252c..0000000000
--- a/ext/psych/yaml/parser.c
+++ /dev/null
@@ -1,1370 +0,0 @@
-
-/*
- * The parser implements the following grammar:
- *
- * stream ::= STREAM-START implicit_document? explicit_document* STREAM-END
- * implicit_document ::= block_node DOCUMENT-END*
- * explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*
- * block_node_or_indentless_sequence ::=
- * ALIAS
- * | properties (block_content | indentless_block_sequence)?
- * | block_content
- * | indentless_block_sequence
- * block_node ::= ALIAS
- * | properties block_content?
- * | block_content
- * flow_node ::= ALIAS
- * | properties flow_content?
- * | flow_content
- * properties ::= TAG ANCHOR? | ANCHOR TAG?
- * block_content ::= block_collection | flow_collection | SCALAR
- * flow_content ::= flow_collection | SCALAR
- * block_collection ::= block_sequence | block_mapping
- * flow_collection ::= flow_sequence | flow_mapping
- * block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END
- * indentless_sequence ::= (BLOCK-ENTRY block_node?)+
- * block_mapping ::= BLOCK-MAPPING_START
- * ((KEY block_node_or_indentless_sequence?)?
- * (VALUE block_node_or_indentless_sequence?)?)*
- * BLOCK-END
- * flow_sequence ::= FLOW-SEQUENCE-START
- * (flow_sequence_entry FLOW-ENTRY)*
- * flow_sequence_entry?
- * FLOW-SEQUENCE-END
- * flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
- * flow_mapping ::= FLOW-MAPPING-START
- * (flow_mapping_entry FLOW-ENTRY)*
- * flow_mapping_entry?
- * FLOW-MAPPING-END
- * flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
- */
-
-#include "yaml_private.h"
-
-/*
- * Peek the next token in the token queue.
- */
-
-#define PEEK_TOKEN(parser) \
- ((parser->token_available || yaml_parser_fetch_more_tokens(parser)) ? \
- parser->tokens.head : NULL)
-
-/*
- * Remove the next token from the queue (must be called after PEEK_TOKEN).
- */
-
-#define SKIP_TOKEN(parser) \
- (parser->token_available = 0, \
- parser->tokens_parsed ++, \
- parser->stream_end_produced = \
- (parser->tokens.head->type == YAML_STREAM_END_TOKEN), \
- parser->tokens.head ++)
-
-/*
- * Public API declarations.
- */
-
-YAML_DECLARE(int)
-yaml_parser_parse(yaml_parser_t *parser, yaml_event_t *event);
-
-/*
- * Error handling.
- */
-
-static int
-yaml_parser_set_parser_error(yaml_parser_t *parser,
- const char *problem, yaml_mark_t problem_mark);
-
-static int
-yaml_parser_set_parser_error_context(yaml_parser_t *parser,
- const char *context, yaml_mark_t context_mark,
- const char *problem, yaml_mark_t problem_mark);
-
-/*
- * State functions.
- */
-
-static int
-yaml_parser_state_machine(yaml_parser_t *parser, yaml_event_t *event);
-
-static int
-yaml_parser_parse_stream_start(yaml_parser_t *parser, yaml_event_t *event);
-
-static int
-yaml_parser_parse_document_start(yaml_parser_t *parser, yaml_event_t *event,
- int implicit);
-
-static int
-yaml_parser_parse_document_content(yaml_parser_t *parser, yaml_event_t *event);
-
-static int
-yaml_parser_parse_document_end(yaml_parser_t *parser, yaml_event_t *event);
-
-static int
-yaml_parser_parse_node(yaml_parser_t *parser, yaml_event_t *event,
- int block, int indentless_sequence);
-
-static int
-yaml_parser_parse_block_sequence_entry(yaml_parser_t *parser,
- yaml_event_t *event, int first);
-
-static int
-yaml_parser_parse_indentless_sequence_entry(yaml_parser_t *parser,
- yaml_event_t *event);
-
-static int
-yaml_parser_parse_block_mapping_key(yaml_parser_t *parser,
- yaml_event_t *event, int first);
-
-static int
-yaml_parser_parse_block_mapping_value(yaml_parser_t *parser,
- yaml_event_t *event);
-
-static int
-yaml_parser_parse_flow_sequence_entry(yaml_parser_t *parser,
- yaml_event_t *event, int first);
-
-static int
-yaml_parser_parse_flow_sequence_entry_mapping_key(yaml_parser_t *parser,
- yaml_event_t *event);
-
-static int
-yaml_parser_parse_flow_sequence_entry_mapping_value(yaml_parser_t *parser,
- yaml_event_t *event);
-
-static int
-yaml_parser_parse_flow_sequence_entry_mapping_end(yaml_parser_t *parser,
- yaml_event_t *event);
-
-static int
-yaml_parser_parse_flow_mapping_key(yaml_parser_t *parser,
- yaml_event_t *event, int first);
-
-static int
-yaml_parser_parse_flow_mapping_value(yaml_parser_t *parser,
- yaml_event_t *event, int empty);
-
-/*
- * Utility functions.
- */
-
-static int
-yaml_parser_process_empty_scalar(yaml_parser_t *parser,
- yaml_event_t *event, yaml_mark_t mark);
-
-static int
-yaml_parser_process_directives(yaml_parser_t *parser,
- yaml_version_directive_t **version_directive_ref,
- yaml_tag_directive_t **tag_directives_start_ref,
- yaml_tag_directive_t **tag_directives_end_ref);
-
-static int
-yaml_parser_append_tag_directive(yaml_parser_t *parser,
- yaml_tag_directive_t value, int allow_duplicates, yaml_mark_t mark);
-
-/*
- * Get the next event.
- */
-
-YAML_DECLARE(int)
-yaml_parser_parse(yaml_parser_t *parser, yaml_event_t *event)
-{
- assert(parser); /* Non-NULL parser object is expected. */
- assert(event); /* Non-NULL event object is expected. */
-
- /* Erase the event object. */
-
- memset(event, 0, sizeof(yaml_event_t));
-
- /* No events after the end of the stream or error. */
-
- if (parser->stream_end_produced || parser->error ||
- parser->state == YAML_PARSE_END_STATE) {
- return 1;
- }
-
- /* Generate the next event. */
-
- return yaml_parser_state_machine(parser, event);
-}
-
-/*
- * Set parser error.
- */
-
-static int
-yaml_parser_set_parser_error(yaml_parser_t *parser,
- const char *problem, yaml_mark_t problem_mark)
-{
- parser->error = YAML_PARSER_ERROR;
- parser->problem = problem;
- parser->problem_mark = problem_mark;
-
- return 0;
-}
-
-static int
-yaml_parser_set_parser_error_context(yaml_parser_t *parser,
- const char *context, yaml_mark_t context_mark,
- const char *problem, yaml_mark_t problem_mark)
-{
- parser->error = YAML_PARSER_ERROR;
- parser->context = context;
- parser->context_mark = context_mark;
- parser->problem = problem;
- parser->problem_mark = problem_mark;
-
- return 0;
-}
-
-
-/*
- * State dispatcher.
- */
-
-static int
-yaml_parser_state_machine(yaml_parser_t *parser, yaml_event_t *event)
-{
- switch (parser->state)
- {
- case YAML_PARSE_STREAM_START_STATE:
- return yaml_parser_parse_stream_start(parser, event);
-
- case YAML_PARSE_IMPLICIT_DOCUMENT_START_STATE:
- return yaml_parser_parse_document_start(parser, event, 1);
-
- case YAML_PARSE_DOCUMENT_START_STATE:
- return yaml_parser_parse_document_start(parser, event, 0);
-
- case YAML_PARSE_DOCUMENT_CONTENT_STATE:
- return yaml_parser_parse_document_content(parser, event);
-
- case YAML_PARSE_DOCUMENT_END_STATE:
- return yaml_parser_parse_document_end(parser, event);
-
- case YAML_PARSE_BLOCK_NODE_STATE:
- return yaml_parser_parse_node(parser, event, 1, 0);
-
- case YAML_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:
- return yaml_parser_parse_node(parser, event, 1, 1);
-
- case YAML_PARSE_FLOW_NODE_STATE:
- return yaml_parser_parse_node(parser, event, 0, 0);
-
- case YAML_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:
- return yaml_parser_parse_block_sequence_entry(parser, event, 1);
-
- case YAML_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:
- return yaml_parser_parse_block_sequence_entry(parser, event, 0);
-
- case YAML_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:
- return yaml_parser_parse_indentless_sequence_entry(parser, event);
-
- case YAML_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:
- return yaml_parser_parse_block_mapping_key(parser, event, 1);
-
- case YAML_PARSE_BLOCK_MAPPING_KEY_STATE:
- return yaml_parser_parse_block_mapping_key(parser, event, 0);
-
- case YAML_PARSE_BLOCK_MAPPING_VALUE_STATE:
- return yaml_parser_parse_block_mapping_value(parser, event);
-
- case YAML_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:
- return yaml_parser_parse_flow_sequence_entry(parser, event, 1);
-
- case YAML_PARSE_FLOW_SEQUENCE_ENTRY_STATE:
- return yaml_parser_parse_flow_sequence_entry(parser, event, 0);
-
- case YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:
- return yaml_parser_parse_flow_sequence_entry_mapping_key(parser, event);
-
- case YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:
- return yaml_parser_parse_flow_sequence_entry_mapping_value(parser, event);
-
- case YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:
- return yaml_parser_parse_flow_sequence_entry_mapping_end(parser, event);
-
- case YAML_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:
- return yaml_parser_parse_flow_mapping_key(parser, event, 1);
-
- case YAML_PARSE_FLOW_MAPPING_KEY_STATE:
- return yaml_parser_parse_flow_mapping_key(parser, event, 0);
-
- case YAML_PARSE_FLOW_MAPPING_VALUE_STATE:
- return yaml_parser_parse_flow_mapping_value(parser, event, 0);
-
- case YAML_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:
- return yaml_parser_parse_flow_mapping_value(parser, event, 1);
-
- default:
- assert(1); /* Invalid state. */
- }
-
- return 0;
-}
-
-/*
- * Parse the production:
- * stream ::= STREAM-START implicit_document? explicit_document* STREAM-END
- * ************
- */
-
-static int
-yaml_parser_parse_stream_start(yaml_parser_t *parser, yaml_event_t *event)
-{
- yaml_token_t *token;
-
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
-
- if (token->type != YAML_STREAM_START_TOKEN) {
- return yaml_parser_set_parser_error(parser,
- "did not find expected <stream-start>", token->start_mark);
- }
-
- parser->state = YAML_PARSE_IMPLICIT_DOCUMENT_START_STATE;
- STREAM_START_EVENT_INIT(*event, token->data.stream_start.encoding,
- token->start_mark, token->start_mark);
- SKIP_TOKEN(parser);
-
- return 1;
-}
-
-/*
- * Parse the productions:
- * implicit_document ::= block_node DOCUMENT-END*
- * *
- * explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*
- * *************************
- */
-
-static int
-yaml_parser_parse_document_start(yaml_parser_t *parser, yaml_event_t *event,
- int implicit)
-{
- yaml_token_t *token;
- yaml_version_directive_t *version_directive = NULL;
- struct {
- yaml_tag_directive_t *start;
- yaml_tag_directive_t *end;
- } tag_directives = { NULL, NULL };
-
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
-
- /* Parse extra document end indicators. */
-
- if (!implicit)
- {
- while (token->type == YAML_DOCUMENT_END_TOKEN) {
- SKIP_TOKEN(parser);
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
- }
- }
-
- /* Parse an implicit document. */
-
- if (implicit && token->type != YAML_VERSION_DIRECTIVE_TOKEN &&
- token->type != YAML_TAG_DIRECTIVE_TOKEN &&
- token->type != YAML_DOCUMENT_START_TOKEN &&
- token->type != YAML_STREAM_END_TOKEN)
- {
- if (!yaml_parser_process_directives(parser, NULL, NULL, NULL))
- return 0;
- if (!PUSH(parser, parser->states, YAML_PARSE_DOCUMENT_END_STATE))
- return 0;
- parser->state = YAML_PARSE_BLOCK_NODE_STATE;
- DOCUMENT_START_EVENT_INIT(*event, NULL, NULL, NULL, 1,
- token->start_mark, token->start_mark);
- return 1;
- }
-
- /* Parse an explicit document. */
-
- else if (token->type != YAML_STREAM_END_TOKEN)
- {
- yaml_mark_t start_mark, end_mark;
- start_mark = token->start_mark;
- if (!yaml_parser_process_directives(parser, &version_directive,
- &tag_directives.start, &tag_directives.end))
- return 0;
- token = PEEK_TOKEN(parser);
- if (!token) goto error;
- if (token->type != YAML_DOCUMENT_START_TOKEN) {
- yaml_parser_set_parser_error(parser,
- "did not find expected <document start>", token->start_mark);
- goto error;
- }
- if (!PUSH(parser, parser->states, YAML_PARSE_DOCUMENT_END_STATE))
- goto error;
- parser->state = YAML_PARSE_DOCUMENT_CONTENT_STATE;
- end_mark = token->end_mark;
- DOCUMENT_START_EVENT_INIT(*event, version_directive,
- tag_directives.start, tag_directives.end, 0,
- start_mark, end_mark);
- SKIP_TOKEN(parser);
- version_directive = NULL;
- tag_directives.start = tag_directives.end = NULL;
- return 1;
- }
-
- /* Parse the stream end. */
-
- else
- {
- parser->state = YAML_PARSE_END_STATE;
- STREAM_END_EVENT_INIT(*event, token->start_mark, token->end_mark);
- SKIP_TOKEN(parser);
- return 1;
- }
-
-error:
- yaml_free(version_directive);
- while (tag_directives.start != tag_directives.end) {
- yaml_free(tag_directives.end[-1].handle);
- yaml_free(tag_directives.end[-1].prefix);
- tag_directives.end --;
- }
- yaml_free(tag_directives.start);
- return 0;
-}
-
-/*
- * Parse the productions:
- * explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*
- * ***********
- */
-
-static int
-yaml_parser_parse_document_content(yaml_parser_t *parser, yaml_event_t *event)
-{
- yaml_token_t *token;
-
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
-
- if (token->type == YAML_VERSION_DIRECTIVE_TOKEN ||
- token->type == YAML_TAG_DIRECTIVE_TOKEN ||
- token->type == YAML_DOCUMENT_START_TOKEN ||
- token->type == YAML_DOCUMENT_END_TOKEN ||
- token->type == YAML_STREAM_END_TOKEN) {
- parser->state = POP(parser, parser->states);
- return yaml_parser_process_empty_scalar(parser, event,
- token->start_mark);
- }
- else {
- return yaml_parser_parse_node(parser, event, 1, 0);
- }
-}
-
-/*
- * Parse the productions:
- * implicit_document ::= block_node DOCUMENT-END*
- * *************
- * explicit_document ::= DIRECTIVE* DOCUMENT-START block_node? DOCUMENT-END*
- * *************
- */
-
-static int
-yaml_parser_parse_document_end(yaml_parser_t *parser, yaml_event_t *event)
-{
- yaml_token_t *token;
- yaml_mark_t start_mark, end_mark;
- int implicit = 1;
-
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
-
- start_mark = end_mark = token->start_mark;
-
- if (token->type == YAML_DOCUMENT_END_TOKEN) {
- end_mark = token->end_mark;
- SKIP_TOKEN(parser);
- implicit = 0;
- }
-
- while (!STACK_EMPTY(parser, parser->tag_directives)) {
- yaml_tag_directive_t tag_directive = POP(parser, parser->tag_directives);
- yaml_free(tag_directive.handle);
- yaml_free(tag_directive.prefix);
- }
-
- parser->state = YAML_PARSE_DOCUMENT_START_STATE;
- DOCUMENT_END_EVENT_INIT(*event, implicit, start_mark, end_mark);
-
- return 1;
-}
-
-/*
- * Parse the productions:
- * block_node_or_indentless_sequence ::=
- * ALIAS
- * *****
- * | properties (block_content | indentless_block_sequence)?
- * ********** *
- * | block_content | indentless_block_sequence
- * *
- * block_node ::= ALIAS
- * *****
- * | properties block_content?
- * ********** *
- * | block_content
- * *
- * flow_node ::= ALIAS
- * *****
- * | properties flow_content?
- * ********** *
- * | flow_content
- * *
- * properties ::= TAG ANCHOR? | ANCHOR TAG?
- * *************************
- * block_content ::= block_collection | flow_collection | SCALAR
- * ******
- * flow_content ::= flow_collection | SCALAR
- * ******
- */
-
-static int
-yaml_parser_parse_node(yaml_parser_t *parser, yaml_event_t *event,
- int block, int indentless_sequence)
-{
- yaml_token_t *token;
- yaml_char_t *anchor = NULL;
- yaml_char_t *tag_handle = NULL;
- yaml_char_t *tag_suffix = NULL;
- yaml_char_t *tag = NULL;
- yaml_mark_t start_mark, end_mark, tag_mark;
- int implicit;
-
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
-
- if (token->type == YAML_ALIAS_TOKEN)
- {
- parser->state = POP(parser, parser->states);
- ALIAS_EVENT_INIT(*event, token->data.alias.value,
- token->start_mark, token->end_mark);
- SKIP_TOKEN(parser);
- return 1;
- }
-
- else
- {
- start_mark = end_mark = token->start_mark;
-
- if (token->type == YAML_ANCHOR_TOKEN)
- {
- anchor = token->data.anchor.value;
- start_mark = token->start_mark;
- end_mark = token->end_mark;
- SKIP_TOKEN(parser);
- token = PEEK_TOKEN(parser);
- if (!token) goto error;
- if (token->type == YAML_TAG_TOKEN)
- {
- tag_handle = token->data.tag.handle;
- tag_suffix = token->data.tag.suffix;
- tag_mark = token->start_mark;
- end_mark = token->end_mark;
- SKIP_TOKEN(parser);
- token = PEEK_TOKEN(parser);
- if (!token) goto error;
- }
- }
- else if (token->type == YAML_TAG_TOKEN)
- {
- tag_handle = token->data.tag.handle;
- tag_suffix = token->data.tag.suffix;
- start_mark = tag_mark = token->start_mark;
- end_mark = token->end_mark;
- SKIP_TOKEN(parser);
- token = PEEK_TOKEN(parser);
- if (!token) goto error;
- if (token->type == YAML_ANCHOR_TOKEN)
- {
- anchor = token->data.anchor.value;
- end_mark = token->end_mark;
- SKIP_TOKEN(parser);
- token = PEEK_TOKEN(parser);
- if (!token) goto error;
- }
- }
-
- if (tag_handle) {
- if (!*tag_handle) {
- tag = tag_suffix;
- yaml_free(tag_handle);
- tag_handle = tag_suffix = NULL;
- }
- else {
- yaml_tag_directive_t *tag_directive;
- for (tag_directive = parser->tag_directives.start;
- tag_directive != parser->tag_directives.top;
- tag_directive ++) {
- if (strcmp((char *)tag_directive->handle, (char *)tag_handle) == 0) {
- size_t prefix_len = strlen((char *)tag_directive->prefix);
- size_t suffix_len = strlen((char *)tag_suffix);
- tag = yaml_malloc(prefix_len+suffix_len+1);
- if (!tag) {
- parser->error = YAML_MEMORY_ERROR;
- goto error;
- }
- memcpy(tag, tag_directive->prefix, prefix_len);
- memcpy(tag+prefix_len, tag_suffix, suffix_len);
- tag[prefix_len+suffix_len] = '\0';
- yaml_free(tag_handle);
- yaml_free(tag_suffix);
- tag_handle = tag_suffix = NULL;
- break;
- }
- }
- if (!tag) {
- yaml_parser_set_parser_error_context(parser,
- "while parsing a node", start_mark,
- "found undefined tag handle", tag_mark);
- goto error;
- }
- }
- }
-
- implicit = (!tag || !*tag);
- if (indentless_sequence && token->type == YAML_BLOCK_ENTRY_TOKEN) {
- end_mark = token->end_mark;
- parser->state = YAML_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE;
- SEQUENCE_START_EVENT_INIT(*event, anchor, tag, implicit,
- YAML_BLOCK_SEQUENCE_STYLE, start_mark, end_mark);
- return 1;
- }
- else {
- if (token->type == YAML_SCALAR_TOKEN) {
- int plain_implicit = 0;
- int quoted_implicit = 0;
- end_mark = token->end_mark;
- if ((token->data.scalar.style == YAML_PLAIN_SCALAR_STYLE && !tag)
- || (tag && strcmp((char *)tag, "!") == 0)) {
- plain_implicit = 1;
- }
- else if (!tag) {
- quoted_implicit = 1;
- }
- parser->state = POP(parser, parser->states);
- SCALAR_EVENT_INIT(*event, anchor, tag,
- token->data.scalar.value, token->data.scalar.length,
- plain_implicit, quoted_implicit,
- token->data.scalar.style, start_mark, end_mark);
- SKIP_TOKEN(parser);
- return 1;
- }
- else if (token->type == YAML_FLOW_SEQUENCE_START_TOKEN) {
- end_mark = token->end_mark;
- parser->state = YAML_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE;
- SEQUENCE_START_EVENT_INIT(*event, anchor, tag, implicit,
- YAML_FLOW_SEQUENCE_STYLE, start_mark, end_mark);
- return 1;
- }
- else if (token->type == YAML_FLOW_MAPPING_START_TOKEN) {
- end_mark = token->end_mark;
- parser->state = YAML_PARSE_FLOW_MAPPING_FIRST_KEY_STATE;
- MAPPING_START_EVENT_INIT(*event, anchor, tag, implicit,
- YAML_FLOW_MAPPING_STYLE, start_mark, end_mark);
- return 1;
- }
- else if (block && token->type == YAML_BLOCK_SEQUENCE_START_TOKEN) {
- end_mark = token->end_mark;
- parser->state = YAML_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE;
- SEQUENCE_START_EVENT_INIT(*event, anchor, tag, implicit,
- YAML_BLOCK_SEQUENCE_STYLE, start_mark, end_mark);
- return 1;
- }
- else if (block && token->type == YAML_BLOCK_MAPPING_START_TOKEN) {
- end_mark = token->end_mark;
- parser->state = YAML_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE;
- MAPPING_START_EVENT_INIT(*event, anchor, tag, implicit,
- YAML_BLOCK_MAPPING_STYLE, start_mark, end_mark);
- return 1;
- }
- else if (anchor || tag) {
- yaml_char_t *value = yaml_malloc(1);
- if (!value) {
- parser->error = YAML_MEMORY_ERROR;
- goto error;
- }
- value[0] = '\0';
- parser->state = POP(parser, parser->states);
- SCALAR_EVENT_INIT(*event, anchor, tag, value, 0,
- implicit, 0, YAML_PLAIN_SCALAR_STYLE,
- start_mark, end_mark);
- return 1;
- }
- else {
- yaml_parser_set_parser_error_context(parser,
- (block ? "while parsing a block node"
- : "while parsing a flow node"), start_mark,
- "did not find expected node content", token->start_mark);
- goto error;
- }
- }
- }
-
-error:
- yaml_free(anchor);
- yaml_free(tag_handle);
- yaml_free(tag_suffix);
- yaml_free(tag);
-
- return 0;
-}
-
-/*
- * Parse the productions:
- * block_sequence ::= BLOCK-SEQUENCE-START (BLOCK-ENTRY block_node?)* BLOCK-END
- * ******************** *********** * *********
- */
-
-static int
-yaml_parser_parse_block_sequence_entry(yaml_parser_t *parser,
- yaml_event_t *event, int first)
-{
- yaml_token_t *token;
-
- if (first) {
- token = PEEK_TOKEN(parser);
- if (!PUSH(parser, parser->marks, token->start_mark))
- return 0;
- SKIP_TOKEN(parser);
- }
-
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
-
- if (token->type == YAML_BLOCK_ENTRY_TOKEN)
- {
- yaml_mark_t mark = token->end_mark;
- SKIP_TOKEN(parser);
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
- if (token->type != YAML_BLOCK_ENTRY_TOKEN &&
- token->type != YAML_BLOCK_END_TOKEN) {
- if (!PUSH(parser, parser->states,
- YAML_PARSE_BLOCK_SEQUENCE_ENTRY_STATE))
- return 0;
- return yaml_parser_parse_node(parser, event, 1, 0);
- }
- else {
- parser->state = YAML_PARSE_BLOCK_SEQUENCE_ENTRY_STATE;
- return yaml_parser_process_empty_scalar(parser, event, mark);
- }
- }
-
- else if (token->type == YAML_BLOCK_END_TOKEN)
- {
- parser->state = POP(parser, parser->states);
- (void)POP(parser, parser->marks);
- SEQUENCE_END_EVENT_INIT(*event, token->start_mark, token->end_mark);
- SKIP_TOKEN(parser);
- return 1;
- }
-
- else
- {
- return yaml_parser_set_parser_error_context(parser,
- "while parsing a block collection", POP(parser, parser->marks),
- "did not find expected '-' indicator", token->start_mark);
- }
-}
-
-/*
- * Parse the productions:
- * indentless_sequence ::= (BLOCK-ENTRY block_node?)+
- * *********** *
- */
-
-static int
-yaml_parser_parse_indentless_sequence_entry(yaml_parser_t *parser,
- yaml_event_t *event)
-{
- yaml_token_t *token;
-
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
-
- if (token->type == YAML_BLOCK_ENTRY_TOKEN)
- {
- yaml_mark_t mark = token->end_mark;
- SKIP_TOKEN(parser);
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
- if (token->type != YAML_BLOCK_ENTRY_TOKEN &&
- token->type != YAML_KEY_TOKEN &&
- token->type != YAML_VALUE_TOKEN &&
- token->type != YAML_BLOCK_END_TOKEN) {
- if (!PUSH(parser, parser->states,
- YAML_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE))
- return 0;
- return yaml_parser_parse_node(parser, event, 1, 0);
- }
- else {
- parser->state = YAML_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE;
- return yaml_parser_process_empty_scalar(parser, event, mark);
- }
- }
-
- else
- {
- parser->state = POP(parser, parser->states);
- SEQUENCE_END_EVENT_INIT(*event, token->start_mark, token->start_mark);
- return 1;
- }
-}
-
-/*
- * Parse the productions:
- * block_mapping ::= BLOCK-MAPPING_START
- * *******************
- * ((KEY block_node_or_indentless_sequence?)?
- * *** *
- * (VALUE block_node_or_indentless_sequence?)?)*
- *
- * BLOCK-END
- * *********
- */
-
-static int
-yaml_parser_parse_block_mapping_key(yaml_parser_t *parser,
- yaml_event_t *event, int first)
-{
- yaml_token_t *token;
-
- if (first) {
- token = PEEK_TOKEN(parser);
- if (!PUSH(parser, parser->marks, token->start_mark))
- return 0;
- SKIP_TOKEN(parser);
- }
-
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
-
- if (token->type == YAML_KEY_TOKEN)
- {
- yaml_mark_t mark = token->end_mark;
- SKIP_TOKEN(parser);
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
- if (token->type != YAML_KEY_TOKEN &&
- token->type != YAML_VALUE_TOKEN &&
- token->type != YAML_BLOCK_END_TOKEN) {
- if (!PUSH(parser, parser->states,
- YAML_PARSE_BLOCK_MAPPING_VALUE_STATE))
- return 0;
- return yaml_parser_parse_node(parser, event, 1, 1);
- }
- else {
- parser->state = YAML_PARSE_BLOCK_MAPPING_VALUE_STATE;
- return yaml_parser_process_empty_scalar(parser, event, mark);
- }
- }
-
- else if (token->type == YAML_BLOCK_END_TOKEN)
- {
- parser->state = POP(parser, parser->states);
- (void)POP(parser, parser->marks);
- MAPPING_END_EVENT_INIT(*event, token->start_mark, token->end_mark);
- SKIP_TOKEN(parser);
- return 1;
- }
-
- else
- {
- return yaml_parser_set_parser_error_context(parser,
- "while parsing a block mapping", POP(parser, parser->marks),
- "did not find expected key", token->start_mark);
- }
-}
-
-/*
- * Parse the productions:
- * block_mapping ::= BLOCK-MAPPING_START
- *
- * ((KEY block_node_or_indentless_sequence?)?
- *
- * (VALUE block_node_or_indentless_sequence?)?)*
- * ***** *
- * BLOCK-END
- *
- */
-
-static int
-yaml_parser_parse_block_mapping_value(yaml_parser_t *parser,
- yaml_event_t *event)
-{
- yaml_token_t *token;
-
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
-
- if (token->type == YAML_VALUE_TOKEN)
- {
- yaml_mark_t mark = token->end_mark;
- SKIP_TOKEN(parser);
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
- if (token->type != YAML_KEY_TOKEN &&
- token->type != YAML_VALUE_TOKEN &&
- token->type != YAML_BLOCK_END_TOKEN) {
- if (!PUSH(parser, parser->states,
- YAML_PARSE_BLOCK_MAPPING_KEY_STATE))
- return 0;
- return yaml_parser_parse_node(parser, event, 1, 1);
- }
- else {
- parser->state = YAML_PARSE_BLOCK_MAPPING_KEY_STATE;
- return yaml_parser_process_empty_scalar(parser, event, mark);
- }
- }
-
- else
- {
- parser->state = YAML_PARSE_BLOCK_MAPPING_KEY_STATE;
- return yaml_parser_process_empty_scalar(parser, event, token->start_mark);
- }
-}
-
-/*
- * Parse the productions:
- * flow_sequence ::= FLOW-SEQUENCE-START
- * *******************
- * (flow_sequence_entry FLOW-ENTRY)*
- * * **********
- * flow_sequence_entry?
- * *
- * FLOW-SEQUENCE-END
- * *****************
- * flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
- * *
- */
-
-static int
-yaml_parser_parse_flow_sequence_entry(yaml_parser_t *parser,
- yaml_event_t *event, int first)
-{
- yaml_token_t *token;
-
- if (first) {
- token = PEEK_TOKEN(parser);
- if (!PUSH(parser, parser->marks, token->start_mark))
- return 0;
- SKIP_TOKEN(parser);
- }
-
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
-
- if (token->type != YAML_FLOW_SEQUENCE_END_TOKEN)
- {
- if (!first) {
- if (token->type == YAML_FLOW_ENTRY_TOKEN) {
- SKIP_TOKEN(parser);
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
- }
- else {
- return yaml_parser_set_parser_error_context(parser,
- "while parsing a flow sequence", POP(parser, parser->marks),
- "did not find expected ',' or ']'", token->start_mark);
- }
- }
-
- if (token->type == YAML_KEY_TOKEN) {
- parser->state = YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE;
- MAPPING_START_EVENT_INIT(*event, NULL, NULL,
- 1, YAML_FLOW_MAPPING_STYLE,
- token->start_mark, token->end_mark);
- SKIP_TOKEN(parser);
- return 1;
- }
-
- else if (token->type != YAML_FLOW_SEQUENCE_END_TOKEN) {
- if (!PUSH(parser, parser->states,
- YAML_PARSE_FLOW_SEQUENCE_ENTRY_STATE))
- return 0;
- return yaml_parser_parse_node(parser, event, 0, 0);
- }
- }
-
- parser->state = POP(parser, parser->states);
- (void)POP(parser, parser->marks);
- SEQUENCE_END_EVENT_INIT(*event, token->start_mark, token->end_mark);
- SKIP_TOKEN(parser);
- return 1;
-}
-
-/*
- * Parse the productions:
- * flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
- * *** *
- */
-
-static int
-yaml_parser_parse_flow_sequence_entry_mapping_key(yaml_parser_t *parser,
- yaml_event_t *event)
-{
- yaml_token_t *token;
-
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
-
- if (token->type != YAML_VALUE_TOKEN && token->type != YAML_FLOW_ENTRY_TOKEN
- && token->type != YAML_FLOW_SEQUENCE_END_TOKEN) {
- if (!PUSH(parser, parser->states,
- YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE))
- return 0;
- return yaml_parser_parse_node(parser, event, 0, 0);
- }
- else {
- yaml_mark_t mark = token->end_mark;
- SKIP_TOKEN(parser);
- parser->state = YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE;
- return yaml_parser_process_empty_scalar(parser, event, mark);
- }
-}
-
-/*
- * Parse the productions:
- * flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
- * ***** *
- */
-
-static int
-yaml_parser_parse_flow_sequence_entry_mapping_value(yaml_parser_t *parser,
- yaml_event_t *event)
-{
- yaml_token_t *token;
-
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
-
- if (token->type == YAML_VALUE_TOKEN) {
- SKIP_TOKEN(parser);
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
- if (token->type != YAML_FLOW_ENTRY_TOKEN
- && token->type != YAML_FLOW_SEQUENCE_END_TOKEN) {
- if (!PUSH(parser, parser->states,
- YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE))
- return 0;
- return yaml_parser_parse_node(parser, event, 0, 0);
- }
- }
- parser->state = YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE;
- return yaml_parser_process_empty_scalar(parser, event, token->start_mark);
-}
-
-/*
- * Parse the productions:
- * flow_sequence_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
- * *
- */
-
-static int
-yaml_parser_parse_flow_sequence_entry_mapping_end(yaml_parser_t *parser,
- yaml_event_t *event)
-{
- yaml_token_t *token;
-
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
-
- parser->state = YAML_PARSE_FLOW_SEQUENCE_ENTRY_STATE;
-
- MAPPING_END_EVENT_INIT(*event, token->start_mark, token->start_mark);
- return 1;
-}
-
-/*
- * Parse the productions:
- * flow_mapping ::= FLOW-MAPPING-START
- * ******************
- * (flow_mapping_entry FLOW-ENTRY)*
- * * **********
- * flow_mapping_entry?
- * ******************
- * FLOW-MAPPING-END
- * ****************
- * flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
- * * *** *
- */
-
-static int
-yaml_parser_parse_flow_mapping_key(yaml_parser_t *parser,
- yaml_event_t *event, int first)
-{
- yaml_token_t *token;
-
- if (first) {
- token = PEEK_TOKEN(parser);
- if (!PUSH(parser, parser->marks, token->start_mark))
- return 0;
- SKIP_TOKEN(parser);
- }
-
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
-
- if (token->type != YAML_FLOW_MAPPING_END_TOKEN)
- {
- if (!first) {
- if (token->type == YAML_FLOW_ENTRY_TOKEN) {
- SKIP_TOKEN(parser);
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
- }
- else {
- return yaml_parser_set_parser_error_context(parser,
- "while parsing a flow mapping", POP(parser, parser->marks),
- "did not find expected ',' or '}'", token->start_mark);
- }
- }
-
- if (token->type == YAML_KEY_TOKEN) {
- SKIP_TOKEN(parser);
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
- if (token->type != YAML_VALUE_TOKEN
- && token->type != YAML_FLOW_ENTRY_TOKEN
- && token->type != YAML_FLOW_MAPPING_END_TOKEN) {
- if (!PUSH(parser, parser->states,
- YAML_PARSE_FLOW_MAPPING_VALUE_STATE))
- return 0;
- return yaml_parser_parse_node(parser, event, 0, 0);
- }
- else {
- parser->state = YAML_PARSE_FLOW_MAPPING_VALUE_STATE;
- return yaml_parser_process_empty_scalar(parser, event,
- token->start_mark);
- }
- }
- else if (token->type != YAML_FLOW_MAPPING_END_TOKEN) {
- if (!PUSH(parser, parser->states,
- YAML_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE))
- return 0;
- return yaml_parser_parse_node(parser, event, 0, 0);
- }
- }
-
- parser->state = POP(parser, parser->states);
- (void)POP(parser, parser->marks);
- MAPPING_END_EVENT_INIT(*event, token->start_mark, token->end_mark);
- SKIP_TOKEN(parser);
- return 1;
-}
-
-/*
- * Parse the productions:
- * flow_mapping_entry ::= flow_node | KEY flow_node? (VALUE flow_node?)?
- * * ***** *
- */
-
-static int
-yaml_parser_parse_flow_mapping_value(yaml_parser_t *parser,
- yaml_event_t *event, int empty)
-{
- yaml_token_t *token;
-
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
-
- if (empty) {
- parser->state = YAML_PARSE_FLOW_MAPPING_KEY_STATE;
- return yaml_parser_process_empty_scalar(parser, event,
- token->start_mark);
- }
-
- if (token->type == YAML_VALUE_TOKEN) {
- SKIP_TOKEN(parser);
- token = PEEK_TOKEN(parser);
- if (!token) return 0;
- if (token->type != YAML_FLOW_ENTRY_TOKEN
- && token->type != YAML_FLOW_MAPPING_END_TOKEN) {
- if (!PUSH(parser, parser->states,
- YAML_PARSE_FLOW_MAPPING_KEY_STATE))
- return 0;
- return yaml_parser_parse_node(parser, event, 0, 0);
- }
- }
-
- parser->state = YAML_PARSE_FLOW_MAPPING_KEY_STATE;
- return yaml_parser_process_empty_scalar(parser, event, token->start_mark);
-}
-
-/*
- * Generate an empty scalar event.
- */
-
-static int
-yaml_parser_process_empty_scalar(yaml_parser_t *parser, yaml_event_t *event,
- yaml_mark_t mark)
-{
- yaml_char_t *value;
-
- value = yaml_malloc(1);
- if (!value) {
- parser->error = YAML_MEMORY_ERROR;
- return 0;
- }
- value[0] = '\0';
-
- SCALAR_EVENT_INIT(*event, NULL, NULL, value, 0,
- 1, 0, YAML_PLAIN_SCALAR_STYLE, mark, mark);
-
- return 1;
-}
-
-/*
- * Parse directives.
- */
-
-static int
-yaml_parser_process_directives(yaml_parser_t *parser,
- yaml_version_directive_t **version_directive_ref,
- yaml_tag_directive_t **tag_directives_start_ref,
- yaml_tag_directive_t **tag_directives_end_ref)
-{
- yaml_tag_directive_t default_tag_directives[] = {
- {(yaml_char_t *)"!", (yaml_char_t *)"!"},
- {(yaml_char_t *)"!!", (yaml_char_t *)"tag:yaml.org,2002:"},
- {NULL, NULL}
- };
- yaml_tag_directive_t *default_tag_directive;
- yaml_version_directive_t *version_directive = NULL;
- struct {
- yaml_tag_directive_t *start;
- yaml_tag_directive_t *end;
- yaml_tag_directive_t *top;
- } tag_directives = { NULL, NULL, NULL };
- yaml_token_t *token;
-
- if (!STACK_INIT(parser, tag_directives, INITIAL_STACK_SIZE))
- goto error;
-
- token = PEEK_TOKEN(parser);
- if (!token) goto error;
-
- while (token->type == YAML_VERSION_DIRECTIVE_TOKEN ||
- token->type == YAML_TAG_DIRECTIVE_TOKEN)
- {
- if (token->type == YAML_VERSION_DIRECTIVE_TOKEN) {
- if (version_directive) {
- yaml_parser_set_parser_error(parser,
- "found duplicate %YAML directive", token->start_mark);
- goto error;
- }
- if (token->data.version_directive.major != 1
- || token->data.version_directive.minor != 1) {
- yaml_parser_set_parser_error(parser,
- "found incompatible YAML document", token->start_mark);
- goto error;
- }
- version_directive = yaml_malloc(sizeof(yaml_version_directive_t));
- if (!version_directive) {
- parser->error = YAML_MEMORY_ERROR;
- goto error;
- }
- version_directive->major = token->data.version_directive.major;
- version_directive->minor = token->data.version_directive.minor;
- }
-
- else if (token->type == YAML_TAG_DIRECTIVE_TOKEN) {
- yaml_tag_directive_t value;
- value.handle = token->data.tag_directive.handle;
- value.prefix = token->data.tag_directive.prefix;
-
- if (!yaml_parser_append_tag_directive(parser, value, 0,
- token->start_mark))
- goto error;
- if (!PUSH(parser, tag_directives, value))
- goto error;
- }
-
- SKIP_TOKEN(parser);
- token = PEEK_TOKEN(parser);
- if (!token) goto error;
- }
-
- for (default_tag_directive = default_tag_directives;
- default_tag_directive->handle; default_tag_directive++) {
- if (!yaml_parser_append_tag_directive(parser, *default_tag_directive, 1,
- token->start_mark))
- goto error;
- }
-
- if (version_directive_ref) {
- *version_directive_ref = version_directive;
- }
- if (tag_directives_start_ref) {
- if (STACK_EMPTY(parser, tag_directives)) {
- *tag_directives_start_ref = *tag_directives_end_ref = NULL;
- STACK_DEL(parser, tag_directives);
- }
- else {
- *tag_directives_start_ref = tag_directives.start;
- *tag_directives_end_ref = tag_directives.top;
- }
- }
- else {
- STACK_DEL(parser, tag_directives);
- }
-
- return 1;
-
-error:
- yaml_free(version_directive);
- while (!STACK_EMPTY(parser, tag_directives)) {
- yaml_tag_directive_t tag_directive = POP(parser, tag_directives);
- yaml_free(tag_directive.handle);
- yaml_free(tag_directive.prefix);
- }
- STACK_DEL(parser, tag_directives);
- return 0;
-}
-
-/*
- * Append a tag directive to the directives stack.
- */
-
-static int
-yaml_parser_append_tag_directive(yaml_parser_t *parser,
- yaml_tag_directive_t value, int allow_duplicates, yaml_mark_t mark)
-{
- yaml_tag_directive_t *tag_directive;
- yaml_tag_directive_t copy = { NULL, NULL };
-
- for (tag_directive = parser->tag_directives.start;
- tag_directive != parser->tag_directives.top; tag_directive ++) {
- if (strcmp((char *)value.handle, (char *)tag_directive->handle) == 0) {
- if (allow_duplicates)
- return 1;
- return yaml_parser_set_parser_error(parser,
- "found duplicate %TAG directive", mark);
- }
- }
-
- copy.handle = yaml_strdup(value.handle);
- copy.prefix = yaml_strdup(value.prefix);
- if (!copy.handle || !copy.prefix) {
- parser->error = YAML_MEMORY_ERROR;
- goto error;
- }
-
- if (!PUSH(parser, parser->tag_directives, copy))
- goto error;
-
- return 1;
-
-error:
- yaml_free(copy.handle);
- yaml_free(copy.prefix);
- return 0;
-}
-
diff --git a/ext/psych/yaml/reader.c b/ext/psych/yaml/reader.c
deleted file mode 100644
index f1a06deb9d..0000000000
--- a/ext/psych/yaml/reader.c
+++ /dev/null
@@ -1,469 +0,0 @@
-
-#include "yaml_private.h"
-
-/*
- * Declarations.
- */
-
-static int
-yaml_parser_set_reader_error(yaml_parser_t *parser, const char *problem,
- size_t offset, int value);
-
-static int
-yaml_parser_update_raw_buffer(yaml_parser_t *parser);
-
-static int
-yaml_parser_determine_encoding(yaml_parser_t *parser);
-
-YAML_DECLARE(int)
-yaml_parser_update_buffer(yaml_parser_t *parser, size_t length);
-
-/*
- * Set the reader error and return 0.
- */
-
-static int
-yaml_parser_set_reader_error(yaml_parser_t *parser, const char *problem,
- size_t offset, int value)
-{
- parser->error = YAML_READER_ERROR;
- parser->problem = problem;
- parser->problem_offset = offset;
- parser->problem_value = value;
-
- return 0;
-}
-
-/*
- * Byte order marks.
- */
-
-#define BOM_UTF8 "\xef\xbb\xbf"
-#define BOM_UTF16LE "\xff\xfe"
-#define BOM_UTF16BE "\xfe\xff"
-
-/*
- * Determine the input stream encoding by checking the BOM symbol. If no BOM is
- * found, the UTF-8 encoding is assumed. Return 1 on success, 0 on failure.
- */
-
-static int
-yaml_parser_determine_encoding(yaml_parser_t *parser)
-{
- /* Ensure that we had enough bytes in the raw buffer. */
-
- while (!parser->eof
- && parser->raw_buffer.last - parser->raw_buffer.pointer < 3) {
- if (!yaml_parser_update_raw_buffer(parser)) {
- return 0;
- }
- }
-
- /* Determine the encoding. */
-
- if (parser->raw_buffer.last - parser->raw_buffer.pointer >= 2
- && !memcmp(parser->raw_buffer.pointer, BOM_UTF16LE, 2)) {
- parser->encoding = YAML_UTF16LE_ENCODING;
- parser->raw_buffer.pointer += 2;
- parser->offset += 2;
- }
- else if (parser->raw_buffer.last - parser->raw_buffer.pointer >= 2
- && !memcmp(parser->raw_buffer.pointer, BOM_UTF16BE, 2)) {
- parser->encoding = YAML_UTF16BE_ENCODING;
- parser->raw_buffer.pointer += 2;
- parser->offset += 2;
- }
- else if (parser->raw_buffer.last - parser->raw_buffer.pointer >= 3
- && !memcmp(parser->raw_buffer.pointer, BOM_UTF8, 3)) {
- parser->encoding = YAML_UTF8_ENCODING;
- parser->raw_buffer.pointer += 3;
- parser->offset += 3;
- }
- else {
- parser->encoding = YAML_UTF8_ENCODING;
- }
-
- return 1;
-}
-
-/*
- * Update the raw buffer.
- */
-
-static int
-yaml_parser_update_raw_buffer(yaml_parser_t *parser)
-{
- size_t size_read = 0;
-
- /* Return if the raw buffer is full. */
-
- if (parser->raw_buffer.start == parser->raw_buffer.pointer
- && parser->raw_buffer.last == parser->raw_buffer.end)
- return 1;
-
- /* Return on EOF. */
-
- if (parser->eof) return 1;
-
- /* Move the remaining bytes in the raw buffer to the beginning. */
-
- if (parser->raw_buffer.start < parser->raw_buffer.pointer
- && parser->raw_buffer.pointer < parser->raw_buffer.last) {
- memmove(parser->raw_buffer.start, parser->raw_buffer.pointer,
- parser->raw_buffer.last - parser->raw_buffer.pointer);
- }
- parser->raw_buffer.last -=
- parser->raw_buffer.pointer - parser->raw_buffer.start;
- parser->raw_buffer.pointer = parser->raw_buffer.start;
-
- /* Call the read handler to fill the buffer. */
-
- if (!parser->read_handler(parser->read_handler_data, parser->raw_buffer.last,
- parser->raw_buffer.end - parser->raw_buffer.last, &size_read)) {
- return yaml_parser_set_reader_error(parser, "input error",
- parser->offset, -1);
- }
- parser->raw_buffer.last += size_read;
- if (!size_read) {
- parser->eof = 1;
- }
-
- return 1;
-}
-
-/*
- * Ensure that the buffer contains at least `length` characters.
- * Return 1 on success, 0 on failure.
- *
- * The length is supposed to be significantly less that the buffer size.
- */
-
-YAML_DECLARE(int)
-yaml_parser_update_buffer(yaml_parser_t *parser, size_t length)
-{
- int first = 1;
-
- assert(parser->read_handler); /* Read handler must be set. */
-
- /* If the EOF flag is set and the raw buffer is empty, do nothing. */
-
- if (parser->eof && parser->raw_buffer.pointer == parser->raw_buffer.last)
- return 1;
-
- /* Return if the buffer contains enough characters. */
-
- if (parser->unread >= length)
- return 1;
-
- /* Determine the input encoding if it is not known yet. */
-
- if (!parser->encoding) {
- if (!yaml_parser_determine_encoding(parser))
- return 0;
- }
-
- /* Move the unread characters to the beginning of the buffer. */
-
- if (parser->buffer.start < parser->buffer.pointer
- && parser->buffer.pointer < parser->buffer.last) {
- size_t size = parser->buffer.last - parser->buffer.pointer;
- memmove(parser->buffer.start, parser->buffer.pointer, size);
- parser->buffer.pointer = parser->buffer.start;
- parser->buffer.last = parser->buffer.start + size;
- }
- else if (parser->buffer.pointer == parser->buffer.last) {
- parser->buffer.pointer = parser->buffer.start;
- parser->buffer.last = parser->buffer.start;
- }
-
- /* Fill the buffer until it has enough characters. */
-
- while (parser->unread < length)
- {
- /* Fill the raw buffer if necessary. */
-
- if (!first || parser->raw_buffer.pointer == parser->raw_buffer.last) {
- if (!yaml_parser_update_raw_buffer(parser)) return 0;
- }
- first = 0;
-
- /* Decode the raw buffer. */
-
- while (parser->raw_buffer.pointer != parser->raw_buffer.last)
- {
- unsigned int value = 0, value2 = 0;
- int incomplete = 0;
- unsigned char octet;
- unsigned int width = 0;
- int low, high;
- size_t k;
- size_t raw_unread = parser->raw_buffer.last - parser->raw_buffer.pointer;
-
- /* Decode the next character. */
-
- switch (parser->encoding)
- {
- case YAML_UTF8_ENCODING:
-
- /*
- * Decode a UTF-8 character. Check RFC 3629
- * (http://www.ietf.org/rfc/rfc3629.txt) for more details.
- *
- * The following table (taken from the RFC) is used for
- * decoding.
- *
- * Char. number range | UTF-8 octet sequence
- * (hexadecimal) | (binary)
- * --------------------+------------------------------------
- * 0000 0000-0000 007F | 0xxxxxxx
- * 0000 0080-0000 07FF | 110xxxxx 10xxxxxx
- * 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
- * 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
- *
- * Additionally, the characters in the range 0xD800-0xDFFF
- * are prohibited as they are reserved for use with UTF-16
- * surrogate pairs.
- */
-
- /* Determine the length of the UTF-8 sequence. */
-
- octet = parser->raw_buffer.pointer[0];
- width = (octet & 0x80) == 0x00 ? 1 :
- (octet & 0xE0) == 0xC0 ? 2 :
- (octet & 0xF0) == 0xE0 ? 3 :
- (octet & 0xF8) == 0xF0 ? 4 : 0;
-
- /* Check if the leading octet is valid. */
-
- if (!width)
- return yaml_parser_set_reader_error(parser,
- "invalid leading UTF-8 octet",
- parser->offset, octet);
-
- /* Check if the raw buffer contains an incomplete character. */
-
- if (width > raw_unread) {
- if (parser->eof) {
- return yaml_parser_set_reader_error(parser,
- "incomplete UTF-8 octet sequence",
- parser->offset, -1);
- }
- incomplete = 1;
- break;
- }
-
- /* Decode the leading octet. */
-
- value = (octet & 0x80) == 0x00 ? octet & 0x7F :
- (octet & 0xE0) == 0xC0 ? octet & 0x1F :
- (octet & 0xF0) == 0xE0 ? octet & 0x0F :
- (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0;
-
- /* Check and decode the trailing octets. */
-
- for (k = 1; k < width; k ++)
- {
- octet = parser->raw_buffer.pointer[k];
-
- /* Check if the octet is valid. */
-
- if ((octet & 0xC0) != 0x80)
- return yaml_parser_set_reader_error(parser,
- "invalid trailing UTF-8 octet",
- parser->offset+k, octet);
-
- /* Decode the octet. */
-
- value = (value << 6) + (octet & 0x3F);
- }
-
- /* Check the length of the sequence against the value. */
-
- if (!((width == 1) ||
- (width == 2 && value >= 0x80) ||
- (width == 3 && value >= 0x800) ||
- (width == 4 && value >= 0x10000)))
- return yaml_parser_set_reader_error(parser,
- "invalid length of a UTF-8 sequence",
- parser->offset, -1);
-
- /* Check the range of the value. */
-
- if ((value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF)
- return yaml_parser_set_reader_error(parser,
- "invalid Unicode character",
- parser->offset, value);
-
- break;
-
- case YAML_UTF16LE_ENCODING:
- case YAML_UTF16BE_ENCODING:
-
- low = (parser->encoding == YAML_UTF16LE_ENCODING ? 0 : 1);
- high = (parser->encoding == YAML_UTF16LE_ENCODING ? 1 : 0);
-
- /*
- * The UTF-16 encoding is not as simple as one might
- * naively think. Check RFC 2781
- * (http://www.ietf.org/rfc/rfc2781.txt).
- *
- * Normally, two subsequent bytes describe a Unicode
- * character. However a special technique (called a
- * surrogate pair) is used for specifying character
- * values larger than 0xFFFF.
- *
- * A surrogate pair consists of two pseudo-characters:
- * high surrogate area (0xD800-0xDBFF)
- * low surrogate area (0xDC00-0xDFFF)
- *
- * The following formulas are used for decoding
- * and encoding characters using surrogate pairs:
- *
- * U = U' + 0x10000 (0x01 00 00 <= U <= 0x10 FF FF)
- * U' = yyyyyyyyyyxxxxxxxxxx (0 <= U' <= 0x0F FF FF)
- * W1 = 110110yyyyyyyyyy
- * W2 = 110111xxxxxxxxxx
- *
- * where U is the character value, W1 is the high surrogate
- * area, W2 is the low surrogate area.
- */
-
- /* Check for incomplete UTF-16 character. */
-
- if (raw_unread < 2) {
- if (parser->eof) {
- return yaml_parser_set_reader_error(parser,
- "incomplete UTF-16 character",
- parser->offset, -1);
- }
- incomplete = 1;
- break;
- }
-
- /* Get the character. */
-
- value = parser->raw_buffer.pointer[low]
- + (parser->raw_buffer.pointer[high] << 8);
-
- /* Check for unexpected low surrogate area. */
-
- if ((value & 0xFC00) == 0xDC00)
- return yaml_parser_set_reader_error(parser,
- "unexpected low surrogate area",
- parser->offset, value);
-
- /* Check for a high surrogate area. */
-
- if ((value & 0xFC00) == 0xD800) {
-
- width = 4;
-
- /* Check for incomplete surrogate pair. */
-
- if (raw_unread < 4) {
- if (parser->eof) {
- return yaml_parser_set_reader_error(parser,
- "incomplete UTF-16 surrogate pair",
- parser->offset, -1);
- }
- incomplete = 1;
- break;
- }
-
- /* Get the next character. */
-
- value2 = parser->raw_buffer.pointer[low+2]
- + (parser->raw_buffer.pointer[high+2] << 8);
-
- /* Check for a low surrogate area. */
-
- if ((value2 & 0xFC00) != 0xDC00)
- return yaml_parser_set_reader_error(parser,
- "expected low surrogate area",
- parser->offset+2, value2);
-
- /* Generate the value of the surrogate pair. */
-
- value = 0x10000 + ((value & 0x3FF) << 10) + (value2 & 0x3FF);
- }
-
- else {
- width = 2;
- }
-
- break;
-
- default:
- assert(1); /* Impossible. */
- }
-
- /* Check if the raw buffer contains enough bytes to form a character. */
-
- if (incomplete) break;
-
- /*
- * Check if the character is in the allowed range:
- * #x9 | #xA | #xD | [#x20-#x7E] (8 bit)
- * | #x85 | [#xA0-#xD7FF] | [#xE000-#xFFFD] (16 bit)
- * | [#x10000-#x10FFFF] (32 bit)
- */
-
- if (! (value == 0x09 || value == 0x0A || value == 0x0D
- || (value >= 0x20 && value <= 0x7E)
- || (value == 0x85) || (value >= 0xA0 && value <= 0xD7FF)
- || (value >= 0xE000 && value <= 0xFFFD)
- || (value >= 0x10000 && value <= 0x10FFFF)))
- return yaml_parser_set_reader_error(parser,
- "control characters are not allowed",
- parser->offset, value);
-
- /* Move the raw pointers. */
-
- parser->raw_buffer.pointer += width;
- parser->offset += width;
-
- /* Finally put the character into the buffer. */
-
- /* 0000 0000-0000 007F -> 0xxxxxxx */
- if (value <= 0x7F) {
- *(parser->buffer.last++) = value;
- }
- /* 0000 0080-0000 07FF -> 110xxxxx 10xxxxxx */
- else if (value <= 0x7FF) {
- *(parser->buffer.last++) = 0xC0 + (value >> 6);
- *(parser->buffer.last++) = 0x80 + (value & 0x3F);
- }
- /* 0000 0800-0000 FFFF -> 1110xxxx 10xxxxxx 10xxxxxx */
- else if (value <= 0xFFFF) {
- *(parser->buffer.last++) = 0xE0 + (value >> 12);
- *(parser->buffer.last++) = 0x80 + ((value >> 6) & 0x3F);
- *(parser->buffer.last++) = 0x80 + (value & 0x3F);
- }
- /* 0001 0000-0010 FFFF -> 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */
- else {
- *(parser->buffer.last++) = 0xF0 + (value >> 18);
- *(parser->buffer.last++) = 0x80 + ((value >> 12) & 0x3F);
- *(parser->buffer.last++) = 0x80 + ((value >> 6) & 0x3F);
- *(parser->buffer.last++) = 0x80 + (value & 0x3F);
- }
-
- parser->unread ++;
- }
-
- /* On EOF, put NUL into the buffer and return. */
-
- if (parser->eof) {
- *(parser->buffer.last++) = '\0';
- parser->unread ++;
- return 1;
- }
-
- }
-
- if (parser->offset >= PTRDIFF_MAX)
- return yaml_parser_set_reader_error(parser, "input is too long",
- PTRDIFF_MAX, -1);
-
- return 1;
-}
-
diff --git a/ext/psych/yaml/scanner.c b/ext/psych/yaml/scanner.c
deleted file mode 100644
index af05766f5c..0000000000
--- a/ext/psych/yaml/scanner.c
+++ /dev/null
@@ -1,3583 +0,0 @@
-
-/*
- * Introduction
- * ************
- *
- * The following notes assume that you are familiar with the YAML specification
- * (http://yaml.org/spec/cvs/current.html). We mostly follow it, although in
- * some cases we are less restrictive that it requires.
- *
- * The process of transforming a YAML stream into a sequence of events is
- * divided on two steps: Scanning and Parsing.
- *
- * The Scanner transforms the input stream into a sequence of tokens, while the
- * parser transform the sequence of tokens produced by the Scanner into a
- * sequence of parsing events.
- *
- * The Scanner is rather clever and complicated. The Parser, on the contrary,
- * is a straightforward implementation of a recursive-descendant parser (or,
- * LL(1) parser, as it is usually called).
- *
- * Actually there are two issues of Scanning that might be called "clever", the
- * rest is quite straightforward. The issues are "block collection start" and
- * "simple keys". Both issues are explained below in details.
- *
- * Here the Scanning step is explained and implemented. We start with the list
- * of all the tokens produced by the Scanner together with short descriptions.
- *
- * Now, tokens:
- *
- * STREAM-START(encoding) # The stream start.
- * STREAM-END # The stream end.
- * VERSION-DIRECTIVE(major,minor) # The '%YAML' directive.
- * TAG-DIRECTIVE(handle,prefix) # The '%TAG' directive.
- * DOCUMENT-START # '---'
- * DOCUMENT-END # '...'
- * BLOCK-SEQUENCE-START # Indentation increase denoting a block
- * BLOCK-MAPPING-START # sequence or a block mapping.
- * BLOCK-END # Indentation decrease.
- * FLOW-SEQUENCE-START # '['
- * FLOW-SEQUENCE-END # ']'
- * BLOCK-SEQUENCE-START # '{'
- * BLOCK-SEQUENCE-END # '}'
- * BLOCK-ENTRY # '-'
- * FLOW-ENTRY # ','
- * KEY # '?' or nothing (simple keys).
- * VALUE # ':'
- * ALIAS(anchor) # '*anchor'
- * ANCHOR(anchor) # '&anchor'
- * TAG(handle,suffix) # '!handle!suffix'
- * SCALAR(value,style) # A scalar.
- *
- * The following two tokens are "virtual" tokens denoting the beginning and the
- * end of the stream:
- *
- * STREAM-START(encoding)
- * STREAM-END
- *
- * We pass the information about the input stream encoding with the
- * STREAM-START token.
- *
- * The next two tokens are responsible for tags:
- *
- * VERSION-DIRECTIVE(major,minor)
- * TAG-DIRECTIVE(handle,prefix)
- *
- * Example:
- *
- * %YAML 1.1
- * %TAG ! !foo
- * %TAG !yaml! tag:yaml.org,2002:
- * ---
- *
- * The correspoding sequence of tokens:
- *
- * STREAM-START(utf-8)
- * VERSION-DIRECTIVE(1,1)
- * TAG-DIRECTIVE("!","!foo")
- * TAG-DIRECTIVE("!yaml","tag:yaml.org,2002:")
- * DOCUMENT-START
- * STREAM-END
- *
- * Note that the VERSION-DIRECTIVE and TAG-DIRECTIVE tokens occupy a whole
- * line.
- *
- * The document start and end indicators are represented by:
- *
- * DOCUMENT-START
- * DOCUMENT-END
- *
- * Note that if a YAML stream contains an implicit document (without '---'
- * and '...' indicators), no DOCUMENT-START and DOCUMENT-END tokens will be
- * produced.
- *
- * In the following examples, we present whole documents together with the
- * produced tokens.
- *
- * 1. An implicit document:
- *
- * 'a scalar'
- *
- * Tokens:
- *
- * STREAM-START(utf-8)
- * SCALAR("a scalar",single-quoted)
- * STREAM-END
- *
- * 2. An explicit document:
- *
- * ---
- * 'a scalar'
- * ...
- *
- * Tokens:
- *
- * STREAM-START(utf-8)
- * DOCUMENT-START
- * SCALAR("a scalar",single-quoted)
- * DOCUMENT-END
- * STREAM-END
- *
- * 3. Several documents in a stream:
- *
- * 'a scalar'
- * ---
- * 'another scalar'
- * ---
- * 'yet another scalar'
- *
- * Tokens:
- *
- * STREAM-START(utf-8)
- * SCALAR("a scalar",single-quoted)
- * DOCUMENT-START
- * SCALAR("another scalar",single-quoted)
- * DOCUMENT-START
- * SCALAR("yet another scalar",single-quoted)
- * STREAM-END
- *
- * We have already introduced the SCALAR token above. The following tokens are
- * used to describe aliases, anchors, tag, and scalars:
- *
- * ALIAS(anchor)
- * ANCHOR(anchor)
- * TAG(handle,suffix)
- * SCALAR(value,style)
- *
- * The following series of examples illustrate the usage of these tokens:
- *
- * 1. A recursive sequence:
- *
- * &A [ *A ]
- *
- * Tokens:
- *
- * STREAM-START(utf-8)
- * ANCHOR("A")
- * FLOW-SEQUENCE-START
- * ALIAS("A")
- * FLOW-SEQUENCE-END
- * STREAM-END
- *
- * 2. A tagged scalar:
- *
- * !!float "3.14" # A good approximation.
- *
- * Tokens:
- *
- * STREAM-START(utf-8)
- * TAG("!!","float")
- * SCALAR("3.14",double-quoted)
- * STREAM-END
- *
- * 3. Various scalar styles:
- *
- * --- # Implicit empty plain scalars do not produce tokens.
- * --- a plain scalar
- * --- 'a single-quoted scalar'
- * --- "a double-quoted scalar"
- * --- |-
- * a literal scalar
- * --- >-
- * a folded
- * scalar
- *
- * Tokens:
- *
- * STREAM-START(utf-8)
- * DOCUMENT-START
- * DOCUMENT-START
- * SCALAR("a plain scalar",plain)
- * DOCUMENT-START
- * SCALAR("a single-quoted scalar",single-quoted)
- * DOCUMENT-START
- * SCALAR("a double-quoted scalar",double-quoted)
- * DOCUMENT-START
- * SCALAR("a literal scalar",literal)
- * DOCUMENT-START
- * SCALAR("a folded scalar",folded)
- * STREAM-END
- *
- * Now it's time to review collection-related tokens. We will start with
- * flow collections:
- *
- * FLOW-SEQUENCE-START
- * FLOW-SEQUENCE-END
- * FLOW-MAPPING-START
- * FLOW-MAPPING-END
- * FLOW-ENTRY
- * KEY
- * VALUE
- *
- * The tokens FLOW-SEQUENCE-START, FLOW-SEQUENCE-END, FLOW-MAPPING-START, and
- * FLOW-MAPPING-END represent the indicators '[', ']', '{', and '}'
- * correspondingly. FLOW-ENTRY represent the ',' indicator. Finally the
- * indicators '?' and ':', which are used for denoting mapping keys and values,
- * are represented by the KEY and VALUE tokens.
- *
- * The following examples show flow collections:
- *
- * 1. A flow sequence:
- *
- * [item 1, item 2, item 3]
- *
- * Tokens:
- *
- * STREAM-START(utf-8)
- * FLOW-SEQUENCE-START
- * SCALAR("item 1",plain)
- * FLOW-ENTRY
- * SCALAR("item 2",plain)
- * FLOW-ENTRY
- * SCALAR("item 3",plain)
- * FLOW-SEQUENCE-END
- * STREAM-END
- *
- * 2. A flow mapping:
- *
- * {
- * a simple key: a value, # Note that the KEY token is produced.
- * ? a complex key: another value,
- * }
- *
- * Tokens:
- *
- * STREAM-START(utf-8)
- * FLOW-MAPPING-START
- * KEY
- * SCALAR("a simple key",plain)
- * VALUE
- * SCALAR("a value",plain)
- * FLOW-ENTRY
- * KEY
- * SCALAR("a complex key",plain)
- * VALUE
- * SCALAR("another value",plain)
- * FLOW-ENTRY
- * FLOW-MAPPING-END
- * STREAM-END
- *
- * A simple key is a key which is not denoted by the '?' indicator. Note that
- * the Scanner still produce the KEY token whenever it encounters a simple key.
- *
- * For scanning block collections, the following tokens are used (note that we
- * repeat KEY and VALUE here):
- *
- * BLOCK-SEQUENCE-START
- * BLOCK-MAPPING-START
- * BLOCK-END
- * BLOCK-ENTRY
- * KEY
- * VALUE
- *
- * The tokens BLOCK-SEQUENCE-START and BLOCK-MAPPING-START denote indentation
- * increase that precedes a block collection (cf. the INDENT token in Python).
- * The token BLOCK-END denote indentation decrease that ends a block collection
- * (cf. the DEDENT token in Python). However YAML has some syntax pecularities
- * that makes detections of these tokens more complex.
- *
- * The tokens BLOCK-ENTRY, KEY, and VALUE are used to represent the indicators
- * '-', '?', and ':' correspondingly.
- *
- * The following examples show how the tokens BLOCK-SEQUENCE-START,
- * BLOCK-MAPPING-START, and BLOCK-END are emitted by the Scanner:
- *
- * 1. Block sequences:
- *
- * - item 1
- * - item 2
- * -
- * - item 3.1
- * - item 3.2
- * -
- * key 1: value 1
- * key 2: value 2
- *
- * Tokens:
- *
- * STREAM-START(utf-8)
- * BLOCK-SEQUENCE-START
- * BLOCK-ENTRY
- * SCALAR("item 1",plain)
- * BLOCK-ENTRY
- * SCALAR("item 2",plain)
- * BLOCK-ENTRY
- * BLOCK-SEQUENCE-START
- * BLOCK-ENTRY
- * SCALAR("item 3.1",plain)
- * BLOCK-ENTRY
- * SCALAR("item 3.2",plain)
- * BLOCK-END
- * BLOCK-ENTRY
- * BLOCK-MAPPING-START
- * KEY
- * SCALAR("key 1",plain)
- * VALUE
- * SCALAR("value 1",plain)
- * KEY
- * SCALAR("key 2",plain)
- * VALUE
- * SCALAR("value 2",plain)
- * BLOCK-END
- * BLOCK-END
- * STREAM-END
- *
- * 2. Block mappings:
- *
- * a simple key: a value # The KEY token is produced here.
- * ? a complex key
- * : another value
- * a mapping:
- * key 1: value 1
- * key 2: value 2
- * a sequence:
- * - item 1
- * - item 2
- *
- * Tokens:
- *
- * STREAM-START(utf-8)
- * BLOCK-MAPPING-START
- * KEY
- * SCALAR("a simple key",plain)
- * VALUE
- * SCALAR("a value",plain)
- * KEY
- * SCALAR("a complex key",plain)
- * VALUE
- * SCALAR("another value",plain)
- * KEY
- * SCALAR("a mapping",plain)
- * BLOCK-MAPPING-START
- * KEY
- * SCALAR("key 1",plain)
- * VALUE
- * SCALAR("value 1",plain)
- * KEY
- * SCALAR("key 2",plain)
- * VALUE
- * SCALAR("value 2",plain)
- * BLOCK-END
- * KEY
- * SCALAR("a sequence",plain)
- * VALUE
- * BLOCK-SEQUENCE-START
- * BLOCK-ENTRY
- * SCALAR("item 1",plain)
- * BLOCK-ENTRY
- * SCALAR("item 2",plain)
- * BLOCK-END
- * BLOCK-END
- * STREAM-END
- *
- * YAML does not always require to start a new block collection from a new
- * line. If the current line contains only '-', '?', and ':' indicators, a new
- * block collection may start at the current line. The following examples
- * illustrate this case:
- *
- * 1. Collections in a sequence:
- *
- * - - item 1
- * - item 2
- * - key 1: value 1
- * key 2: value 2
- * - ? complex key
- * : complex value
- *
- * Tokens:
- *
- * STREAM-START(utf-8)
- * BLOCK-SEQUENCE-START
- * BLOCK-ENTRY
- * BLOCK-SEQUENCE-START
- * BLOCK-ENTRY
- * SCALAR("item 1",plain)
- * BLOCK-ENTRY
- * SCALAR("item 2",plain)
- * BLOCK-END
- * BLOCK-ENTRY
- * BLOCK-MAPPING-START
- * KEY
- * SCALAR("key 1",plain)
- * VALUE
- * SCALAR("value 1",plain)
- * KEY
- * SCALAR("key 2",plain)
- * VALUE
- * SCALAR("value 2",plain)
- * BLOCK-END
- * BLOCK-ENTRY
- * BLOCK-MAPPING-START
- * KEY
- * SCALAR("complex key")
- * VALUE
- * SCALAR("complex value")
- * BLOCK-END
- * BLOCK-END
- * STREAM-END
- *
- * 2. Collections in a mapping:
- *
- * ? a sequence
- * : - item 1
- * - item 2
- * ? a mapping
- * : key 1: value 1
- * key 2: value 2
- *
- * Tokens:
- *
- * STREAM-START(utf-8)
- * BLOCK-MAPPING-START
- * KEY
- * SCALAR("a sequence",plain)
- * VALUE
- * BLOCK-SEQUENCE-START
- * BLOCK-ENTRY
- * SCALAR("item 1",plain)
- * BLOCK-ENTRY
- * SCALAR("item 2",plain)
- * BLOCK-END
- * KEY
- * SCALAR("a mapping",plain)
- * VALUE
- * BLOCK-MAPPING-START
- * KEY
- * SCALAR("key 1",plain)
- * VALUE
- * SCALAR("value 1",plain)
- * KEY
- * SCALAR("key 2",plain)
- * VALUE
- * SCALAR("value 2",plain)
- * BLOCK-END
- * BLOCK-END
- * STREAM-END
- *
- * YAML also permits non-indented sequences if they are included into a block
- * mapping. In this case, the token BLOCK-SEQUENCE-START is not produced:
- *
- * key:
- * - item 1 # BLOCK-SEQUENCE-START is NOT produced here.
- * - item 2
- *
- * Tokens:
- *
- * STREAM-START(utf-8)
- * BLOCK-MAPPING-START
- * KEY
- * SCALAR("key",plain)
- * VALUE
- * BLOCK-ENTRY
- * SCALAR("item 1",plain)
- * BLOCK-ENTRY
- * SCALAR("item 2",plain)
- * BLOCK-END
- */
-
-#include "yaml_private.h"
-
-/*
- * Ensure that the buffer contains the required number of characters.
- * Return 1 on success, 0 on failure (reader error or memory error).
- */
-
-#define CACHE(parser,length) \
- (parser->unread >= (length) \
- ? 1 \
- : yaml_parser_update_buffer(parser, (length)))
-
-/*
- * Advance the buffer pointer.
- */
-
-#define SKIP(parser) \
- (parser->mark.index ++, \
- parser->mark.column ++, \
- parser->unread --, \
- parser->buffer.pointer += WIDTH(parser->buffer))
-
-#define SKIP_LINE(parser) \
- (IS_CRLF(parser->buffer) ? \
- (parser->mark.index += 2, \
- parser->mark.column = 0, \
- parser->mark.line ++, \
- parser->unread -= 2, \
- parser->buffer.pointer += 2) : \
- IS_BREAK(parser->buffer) ? \
- (parser->mark.index ++, \
- parser->mark.column = 0, \
- parser->mark.line ++, \
- parser->unread --, \
- parser->buffer.pointer += WIDTH(parser->buffer)) : 0)
-
-/*
- * Copy a character to a string buffer and advance pointers.
- */
-
-#define READ(parser,string) \
- (STRING_EXTEND(parser,string) ? \
- (COPY(string,parser->buffer), \
- parser->mark.index ++, \
- parser->mark.column ++, \
- parser->unread --, \
- 1) : 0)
-
-/*
- * Copy a line break character to a string buffer and advance pointers.
- */
-
-#define READ_LINE(parser,string) \
- (STRING_EXTEND(parser,string) ? \
- (((CHECK_AT(parser->buffer,'\r',0) \
- && CHECK_AT(parser->buffer,'\n',1)) ? /* CR LF -> LF */ \
- (*((string).pointer++) = (yaml_char_t) '\n', \
- parser->buffer.pointer += 2, \
- parser->mark.index += 2, \
- parser->mark.column = 0, \
- parser->mark.line ++, \
- parser->unread -= 2) : \
- (CHECK_AT(parser->buffer,'\r',0) \
- || CHECK_AT(parser->buffer,'\n',0)) ? /* CR|LF -> LF */ \
- (*((string).pointer++) = (yaml_char_t) '\n', \
- parser->buffer.pointer ++, \
- parser->mark.index ++, \
- parser->mark.column = 0, \
- parser->mark.line ++, \
- parser->unread --) : \
- (CHECK_AT(parser->buffer,'\xC2',0) \
- && CHECK_AT(parser->buffer,'\x85',1)) ? /* NEL -> LF */ \
- (*((string).pointer++) = (yaml_char_t) '\n', \
- parser->buffer.pointer += 2, \
- parser->mark.index ++, \
- parser->mark.column = 0, \
- parser->mark.line ++, \
- parser->unread --) : \
- (CHECK_AT(parser->buffer,'\xE2',0) && \
- CHECK_AT(parser->buffer,'\x80',1) && \
- (CHECK_AT(parser->buffer,'\xA8',2) || \
- CHECK_AT(parser->buffer,'\xA9',2))) ? /* LS|PS -> LS|PS */ \
- (*((string).pointer++) = *(parser->buffer.pointer++), \
- *((string).pointer++) = *(parser->buffer.pointer++), \
- *((string).pointer++) = *(parser->buffer.pointer++), \
- parser->mark.index ++, \
- parser->mark.column = 0, \
- parser->mark.line ++, \
- parser->unread --) : 0), \
- 1) : 0)
-
-/*
- * Public API declarations.
- */
-
-YAML_DECLARE(int)
-yaml_parser_scan(yaml_parser_t *parser, yaml_token_t *token);
-
-/*
- * Error handling.
- */
-
-static int
-yaml_parser_set_scanner_error(yaml_parser_t *parser, const char *context,
- yaml_mark_t context_mark, const char *problem);
-
-/*
- * High-level token API.
- */
-
-YAML_DECLARE(int)
-yaml_parser_fetch_more_tokens(yaml_parser_t *parser);
-
-static int
-yaml_parser_fetch_next_token(yaml_parser_t *parser);
-
-/*
- * Potential simple keys.
- */
-
-static int
-yaml_parser_stale_simple_keys(yaml_parser_t *parser);
-
-static int
-yaml_parser_save_simple_key(yaml_parser_t *parser);
-
-static int
-yaml_parser_remove_simple_key(yaml_parser_t *parser);
-
-static int
-yaml_parser_increase_flow_level(yaml_parser_t *parser);
-
-static int
-yaml_parser_decrease_flow_level(yaml_parser_t *parser);
-
-/*
- * Indentation treatment.
- */
-
-static int
-yaml_parser_roll_indent(yaml_parser_t *parser, ptrdiff_t column,
- ptrdiff_t number, yaml_token_type_t type, yaml_mark_t mark);
-
-static int
-yaml_parser_unroll_indent(yaml_parser_t *parser, ptrdiff_t column);
-
-/*
- * Token fetchers.
- */
-
-static int
-yaml_parser_fetch_stream_start(yaml_parser_t *parser);
-
-static int
-yaml_parser_fetch_stream_end(yaml_parser_t *parser);
-
-static int
-yaml_parser_fetch_directive(yaml_parser_t *parser);
-
-static int
-yaml_parser_fetch_document_indicator(yaml_parser_t *parser,
- yaml_token_type_t type);
-
-static int
-yaml_parser_fetch_flow_collection_start(yaml_parser_t *parser,
- yaml_token_type_t type);
-
-static int
-yaml_parser_fetch_flow_collection_end(yaml_parser_t *parser,
- yaml_token_type_t type);
-
-static int
-yaml_parser_fetch_flow_entry(yaml_parser_t *parser);
-
-static int
-yaml_parser_fetch_block_entry(yaml_parser_t *parser);
-
-static int
-yaml_parser_fetch_key(yaml_parser_t *parser);
-
-static int
-yaml_parser_fetch_value(yaml_parser_t *parser);
-
-static int
-yaml_parser_fetch_anchor(yaml_parser_t *parser, yaml_token_type_t type);
-
-static int
-yaml_parser_fetch_tag(yaml_parser_t *parser);
-
-static int
-yaml_parser_fetch_block_scalar(yaml_parser_t *parser, int literal);
-
-static int
-yaml_parser_fetch_flow_scalar(yaml_parser_t *parser, int single);
-
-static int
-yaml_parser_fetch_plain_scalar(yaml_parser_t *parser);
-
-/*
- * Token scanners.
- */
-
-static int
-yaml_parser_scan_to_next_token(yaml_parser_t *parser);
-
-static int
-yaml_parser_scan_directive(yaml_parser_t *parser, yaml_token_t *token);
-
-static int
-yaml_parser_scan_directive_name(yaml_parser_t *parser,
- yaml_mark_t start_mark, yaml_char_t **name);
-
-static int
-yaml_parser_scan_version_directive_value(yaml_parser_t *parser,
- yaml_mark_t start_mark, int *major, int *minor);
-
-static int
-yaml_parser_scan_version_directive_number(yaml_parser_t *parser,
- yaml_mark_t start_mark, int *number);
-
-static int
-yaml_parser_scan_tag_directive_value(yaml_parser_t *parser,
- yaml_mark_t mark, yaml_char_t **handle, yaml_char_t **prefix);
-
-static int
-yaml_parser_scan_anchor(yaml_parser_t *parser, yaml_token_t *token,
- yaml_token_type_t type);
-
-static int
-yaml_parser_scan_tag(yaml_parser_t *parser, yaml_token_t *token);
-
-static int
-yaml_parser_scan_tag_handle(yaml_parser_t *parser, int directive,
- yaml_mark_t start_mark, yaml_char_t **handle);
-
-static int
-yaml_parser_scan_tag_uri(yaml_parser_t *parser, int directive,
- yaml_char_t *head, yaml_mark_t start_mark, yaml_char_t **uri);
-
-static int
-yaml_parser_scan_uri_escapes(yaml_parser_t *parser, int directive,
- yaml_mark_t start_mark, yaml_string_t *string);
-
-static int
-yaml_parser_scan_block_scalar(yaml_parser_t *parser, yaml_token_t *token,
- int literal);
-
-static int
-yaml_parser_scan_block_scalar_breaks(yaml_parser_t *parser,
- int *indent, yaml_string_t *breaks,
- yaml_mark_t start_mark, yaml_mark_t *end_mark);
-
-static int
-yaml_parser_scan_flow_scalar(yaml_parser_t *parser, yaml_token_t *token,
- int single);
-
-static int
-yaml_parser_scan_plain_scalar(yaml_parser_t *parser, yaml_token_t *token);
-
-/*
- * Get the next token.
- */
-
-YAML_DECLARE(int)
-yaml_parser_scan(yaml_parser_t *parser, yaml_token_t *token)
-{
- assert(parser); /* Non-NULL parser object is expected. */
- assert(token); /* Non-NULL token object is expected. */
-
- /* Erase the token object. */
-
- memset(token, 0, sizeof(yaml_token_t));
-
- /* No tokens after STREAM-END or error. */
-
- if (parser->stream_end_produced || parser->error) {
- return 1;
- }
-
- /* Ensure that the tokens queue contains enough tokens. */
-
- if (!parser->token_available) {
- if (!yaml_parser_fetch_more_tokens(parser))
- return 0;
- }
-
- /* Fetch the next token from the queue. */
-
- *token = DEQUEUE(parser, parser->tokens);
- parser->token_available = 0;
- parser->tokens_parsed ++;
-
- if (token->type == YAML_STREAM_END_TOKEN) {
- parser->stream_end_produced = 1;
- }
-
- return 1;
-}
-
-/*
- * Set the scanner error and return 0.
- */
-
-static int
-yaml_parser_set_scanner_error(yaml_parser_t *parser, const char *context,
- yaml_mark_t context_mark, const char *problem)
-{
- parser->error = YAML_SCANNER_ERROR;
- parser->context = context;
- parser->context_mark = context_mark;
- parser->problem = problem;
- parser->problem_mark = parser->mark;
-
- return 0;
-}
-
-/*
- * Ensure that the tokens queue contains at least one token which can be
- * returned to the Parser.
- */
-
-YAML_DECLARE(int)
-yaml_parser_fetch_more_tokens(yaml_parser_t *parser)
-{
- int need_more_tokens;
-
- /* While we need more tokens to fetch, do it. */
-
- while (1)
- {
- /*
- * Check if we really need to fetch more tokens.
- */
-
- need_more_tokens = 0;
-
- if (parser->tokens.head == parser->tokens.tail)
- {
- /* Queue is empty. */
-
- need_more_tokens = 1;
- }
- else
- {
- yaml_simple_key_t *simple_key;
-
- /* Check if any potential simple key may occupy the head position. */
-
- if (!yaml_parser_stale_simple_keys(parser))
- return 0;
-
- for (simple_key = parser->simple_keys.start;
- simple_key != parser->simple_keys.top; simple_key++) {
- if (simple_key->possible
- && simple_key->token_number == parser->tokens_parsed) {
- need_more_tokens = 1;
- break;
- }
- }
- }
-
- /* We are finished. */
-
- if (!need_more_tokens)
- break;
-
- /* Fetch the next token. */
-
- if (!yaml_parser_fetch_next_token(parser))
- return 0;
- }
-
- parser->token_available = 1;
-
- return 1;
-}
-
-/*
- * The dispatcher for token fetchers.
- */
-
-static int
-yaml_parser_fetch_next_token(yaml_parser_t *parser)
-{
- /* Ensure that the buffer is initialized. */
-
- if (!CACHE(parser, 1))
- return 0;
-
- /* Check if we just started scanning. Fetch STREAM-START then. */
-
- if (!parser->stream_start_produced)
- return yaml_parser_fetch_stream_start(parser);
-
- /* Eat whitespaces and comments until we reach the next token. */
-
- if (!yaml_parser_scan_to_next_token(parser))
- return 0;
-
- /* Remove obsolete potential simple keys. */
-
- if (!yaml_parser_stale_simple_keys(parser))
- return 0;
-
- /* Check the indentation level against the current column. */
-
- if (!yaml_parser_unroll_indent(parser, parser->mark.column))
- return 0;
-
- /*
- * Ensure that the buffer contains at least 4 characters. 4 is the length
- * of the longest indicators ('--- ' and '... ').
- */
-
- if (!CACHE(parser, 4))
- return 0;
-
- /* Is it the end of the stream? */
-
- if (IS_Z(parser->buffer))
- return yaml_parser_fetch_stream_end(parser);
-
- /* Is it a directive? */
-
- if (parser->mark.column == 0 && CHECK(parser->buffer, '%'))
- return yaml_parser_fetch_directive(parser);
-
- /* Is it the document start indicator? */
-
- if (parser->mark.column == 0
- && CHECK_AT(parser->buffer, '-', 0)
- && CHECK_AT(parser->buffer, '-', 1)
- && CHECK_AT(parser->buffer, '-', 2)
- && IS_BLANKZ_AT(parser->buffer, 3))
- return yaml_parser_fetch_document_indicator(parser,
- YAML_DOCUMENT_START_TOKEN);
-
- /* Is it the document end indicator? */
-
- if (parser->mark.column == 0
- && CHECK_AT(parser->buffer, '.', 0)
- && CHECK_AT(parser->buffer, '.', 1)
- && CHECK_AT(parser->buffer, '.', 2)
- && IS_BLANKZ_AT(parser->buffer, 3))
- return yaml_parser_fetch_document_indicator(parser,
- YAML_DOCUMENT_END_TOKEN);
-
- /* Is it the flow sequence start indicator? */
-
- if (CHECK(parser->buffer, '['))
- return yaml_parser_fetch_flow_collection_start(parser,
- YAML_FLOW_SEQUENCE_START_TOKEN);
-
- /* Is it the flow mapping start indicator? */
-
- if (CHECK(parser->buffer, '{'))
- return yaml_parser_fetch_flow_collection_start(parser,
- YAML_FLOW_MAPPING_START_TOKEN);
-
- /* Is it the flow sequence end indicator? */
-
- if (CHECK(parser->buffer, ']'))
- return yaml_parser_fetch_flow_collection_end(parser,
- YAML_FLOW_SEQUENCE_END_TOKEN);
-
- /* Is it the flow mapping end indicator? */
-
- if (CHECK(parser->buffer, '}'))
- return yaml_parser_fetch_flow_collection_end(parser,
- YAML_FLOW_MAPPING_END_TOKEN);
-
- /* Is it the flow entry indicator? */
-
- if (CHECK(parser->buffer, ','))
- return yaml_parser_fetch_flow_entry(parser);
-
- /* Is it the block entry indicator? */
-
- if (CHECK(parser->buffer, '-') && IS_BLANKZ_AT(parser->buffer, 1))
- return yaml_parser_fetch_block_entry(parser);
-
- /* Is it the key indicator? */
-
- if (CHECK(parser->buffer, '?')
- && (parser->flow_level || IS_BLANKZ_AT(parser->buffer, 1)))
- return yaml_parser_fetch_key(parser);
-
- /* Is it the value indicator? */
-
- if (CHECK(parser->buffer, ':')
- && (parser->flow_level || IS_BLANKZ_AT(parser->buffer, 1)))
- return yaml_parser_fetch_value(parser);
-
- /* Is it an alias? */
-
- if (CHECK(parser->buffer, '*'))
- return yaml_parser_fetch_anchor(parser, YAML_ALIAS_TOKEN);
-
- /* Is it an anchor? */
-
- if (CHECK(parser->buffer, '&'))
- return yaml_parser_fetch_anchor(parser, YAML_ANCHOR_TOKEN);
-
- /* Is it a tag? */
-
- if (CHECK(parser->buffer, '!'))
- return yaml_parser_fetch_tag(parser);
-
- /* Is it a literal scalar? */
-
- if (CHECK(parser->buffer, '|') && !parser->flow_level)
- return yaml_parser_fetch_block_scalar(parser, 1);
-
- /* Is it a folded scalar? */
-
- if (CHECK(parser->buffer, '>') && !parser->flow_level)
- return yaml_parser_fetch_block_scalar(parser, 0);
-
- /* Is it a single-quoted scalar? */
-
- if (CHECK(parser->buffer, '\''))
- return yaml_parser_fetch_flow_scalar(parser, 1);
-
- /* Is it a double-quoted scalar? */
-
- if (CHECK(parser->buffer, '"'))
- return yaml_parser_fetch_flow_scalar(parser, 0);
-
- /*
- * Is it a plain scalar?
- *
- * A plain scalar may start with any non-blank characters except
- *
- * '-', '?', ':', ',', '[', ']', '{', '}',
- * '#', '&', '*', '!', '|', '>', '\'', '\"',
- * '%', '@', '`'.
- *
- * In the block context (and, for the '-' indicator, in the flow context
- * too), it may also start with the characters
- *
- * '-', '?', ':'
- *
- * if it is followed by a non-space character.
- *
- * The last rule is more restrictive than the specification requires.
- */
-
- if (!(IS_BLANKZ(parser->buffer) || CHECK(parser->buffer, '-')
- || CHECK(parser->buffer, '?') || CHECK(parser->buffer, ':')
- || CHECK(parser->buffer, ',') || CHECK(parser->buffer, '[')
- || CHECK(parser->buffer, ']') || CHECK(parser->buffer, '{')
- || CHECK(parser->buffer, '}') || CHECK(parser->buffer, '#')
- || CHECK(parser->buffer, '&') || CHECK(parser->buffer, '*')
- || CHECK(parser->buffer, '!') || CHECK(parser->buffer, '|')
- || CHECK(parser->buffer, '>') || CHECK(parser->buffer, '\'')
- || CHECK(parser->buffer, '"') || CHECK(parser->buffer, '%')
- || CHECK(parser->buffer, '@') || CHECK(parser->buffer, '`')) ||
- (CHECK(parser->buffer, '-') && !IS_BLANK_AT(parser->buffer, 1)) ||
- (!parser->flow_level &&
- (CHECK(parser->buffer, '?') || CHECK(parser->buffer, ':'))
- && !IS_BLANKZ_AT(parser->buffer, 1)))
- return yaml_parser_fetch_plain_scalar(parser);
-
- /*
- * If we don't determine the token type so far, it is an error.
- */
-
- return yaml_parser_set_scanner_error(parser,
- "while scanning for the next token", parser->mark,
- "found character that cannot start any token");
-}
-
-/*
- * Check the list of potential simple keys and remove the positions that
- * cannot contain simple keys anymore.
- */
-
-static int
-yaml_parser_stale_simple_keys(yaml_parser_t *parser)
-{
- yaml_simple_key_t *simple_key;
-
- /* Check for a potential simple key for each flow level. */
-
- for (simple_key = parser->simple_keys.start;
- simple_key != parser->simple_keys.top; simple_key ++)
- {
- /*
- * The specification requires that a simple key
- *
- * - is limited to a single line,
- * - is shorter than 1024 characters.
- */
-
- if (simple_key->possible
- && (simple_key->mark.line < parser->mark.line
- || simple_key->mark.index+1024 < parser->mark.index)) {
-
- /* Check if the potential simple key to be removed is required. */
-
- if (simple_key->required) {
- return yaml_parser_set_scanner_error(parser,
- "while scanning a simple key", simple_key->mark,
- "could not find expected ':'");
- }
-
- simple_key->possible = 0;
- }
- }
-
- return 1;
-}
-
-/*
- * Check if a simple key may start at the current position and add it if
- * needed.
- */
-
-static int
-yaml_parser_save_simple_key(yaml_parser_t *parser)
-{
- /*
- * A simple key is required at the current position if the scanner is in
- * the block context and the current column coincides with the indentation
- * level.
- */
-
- int required = (!parser->flow_level
- && parser->indent == (ptrdiff_t)parser->mark.column);
-
- /*
- * A simple key is required only when it is the first token in the current
- * line. Therefore it is always allowed. But we add a check anyway.
- */
-
- assert(parser->simple_key_allowed || !required); /* Impossible. */
-
- /*
- * If the current position may start a simple key, save it.
- */
-
- if (parser->simple_key_allowed)
- {
- yaml_simple_key_t simple_key;
- simple_key.possible = 1;
- simple_key.required = required;
- simple_key.token_number =
- parser->tokens_parsed + (parser->tokens.tail - parser->tokens.head);
- simple_key.mark = parser->mark;
-
- if (!yaml_parser_remove_simple_key(parser)) return 0;
-
- *(parser->simple_keys.top-1) = simple_key;
- }
-
- return 1;
-}
-
-/*
- * Remove a potential simple key at the current flow level.
- */
-
-static int
-yaml_parser_remove_simple_key(yaml_parser_t *parser)
-{
- yaml_simple_key_t *simple_key = parser->simple_keys.top-1;
-
- if (simple_key->possible)
- {
- /* If the key is required, it is an error. */
-
- if (simple_key->required) {
- return yaml_parser_set_scanner_error(parser,
- "while scanning a simple key", simple_key->mark,
- "could not find expected ':'");
- }
- }
-
- /* Remove the key from the stack. */
-
- simple_key->possible = 0;
-
- return 1;
-}
-
-/*
- * Increase the flow level and resize the simple key list if needed.
- */
-
-static int
-yaml_parser_increase_flow_level(yaml_parser_t *parser)
-{
- yaml_simple_key_t empty_simple_key = { 0, 0, 0, { 0, 0, 0 } };
-
- /* Reset the simple key on the next level. */
-
- if (!PUSH(parser, parser->simple_keys, empty_simple_key))
- return 0;
-
- /* Increase the flow level. */
-
- if (parser->flow_level == INT_MAX) {
- parser->error = YAML_MEMORY_ERROR;
- return 0;
- }
-
- parser->flow_level++;
-
- return 1;
-}
-
-/*
- * Decrease the flow level.
- */
-
-static int
-yaml_parser_decrease_flow_level(yaml_parser_t *parser)
-{
- if (parser->flow_level) {
- parser->flow_level --;
- (void)POP(parser, parser->simple_keys);
- }
-
- return 1;
-}
-
-/*
- * Push the current indentation level to the stack and set the new level
- * the current column is greater than the indentation level. In this case,
- * append or insert the specified token into the token queue.
- *
- */
-
-static int
-yaml_parser_roll_indent(yaml_parser_t *parser, ptrdiff_t column,
- ptrdiff_t number, yaml_token_type_t type, yaml_mark_t mark)
-{
- yaml_token_t token;
-
- /* In the flow context, do nothing. */
-
- if (parser->flow_level)
- return 1;
-
- if (parser->indent < column)
- {
- /*
- * Push the current indentation level to the stack and set the new
- * indentation level.
- */
-
- if (!PUSH(parser, parser->indents, parser->indent))
- return 0;
-
-#if PTRDIFF_MAX > INT_MAX
- if (column > INT_MAX) {
- parser->error = YAML_MEMORY_ERROR;
- return 0;
- }
-#endif
-
- parser->indent = (int)column;
-
- /* Create a token and insert it into the queue. */
-
- TOKEN_INIT(token, type, mark, mark);
-
- if (number == -1) {
- if (!ENQUEUE(parser, parser->tokens, token))
- return 0;
- }
- else {
- if (!QUEUE_INSERT(parser,
- parser->tokens, number - parser->tokens_parsed, token))
- return 0;
- }
- }
-
- return 1;
-}
-
-/*
- * Pop indentation levels from the indents stack until the current level
- * becomes less or equal to the column. For each intendation level, append
- * the BLOCK-END token.
- */
-
-
-static int
-yaml_parser_unroll_indent(yaml_parser_t *parser, ptrdiff_t column)
-{
- yaml_token_t token;
-
- /* In the flow context, do nothing. */
-
- if (parser->flow_level)
- return 1;
-
- /* Loop through the intendation levels in the stack. */
-
- while (parser->indent > column)
- {
- /* Create a token and append it to the queue. */
-
- TOKEN_INIT(token, YAML_BLOCK_END_TOKEN, parser->mark, parser->mark);
-
- if (!ENQUEUE(parser, parser->tokens, token))
- return 0;
-
- /* Pop the indentation level. */
-
- parser->indent = POP(parser, parser->indents);
- }
-
- return 1;
-}
-
-/*
- * Initialize the scanner and produce the STREAM-START token.
- */
-
-static int
-yaml_parser_fetch_stream_start(yaml_parser_t *parser)
-{
- yaml_simple_key_t simple_key = { 0, 0, 0, { 0, 0, 0 } };
- yaml_token_t token;
-
- /* Set the initial indentation. */
-
- parser->indent = -1;
-
- /* Initialize the simple key stack. */
-
- if (!PUSH(parser, parser->simple_keys, simple_key))
- return 0;
-
- /* A simple key is allowed at the beginning of the stream. */
-
- parser->simple_key_allowed = 1;
-
- /* We have started. */
-
- parser->stream_start_produced = 1;
-
- /* Create the STREAM-START token and append it to the queue. */
-
- STREAM_START_TOKEN_INIT(token, parser->encoding,
- parser->mark, parser->mark);
-
- if (!ENQUEUE(parser, parser->tokens, token))
- return 0;
-
- return 1;
-}
-
-/*
- * Produce the STREAM-END token and shut down the scanner.
- */
-
-static int
-yaml_parser_fetch_stream_end(yaml_parser_t *parser)
-{
- yaml_token_t token;
-
- /* Force new line. */
-
- if (parser->mark.column != 0) {
- parser->mark.column = 0;
- parser->mark.line ++;
- }
-
- /* Reset the indentation level. */
-
- if (!yaml_parser_unroll_indent(parser, -1))
- return 0;
-
- /* Reset simple keys. */
-
- if (!yaml_parser_remove_simple_key(parser))
- return 0;
-
- parser->simple_key_allowed = 0;
-
- /* Create the STREAM-END token and append it to the queue. */
-
- STREAM_END_TOKEN_INIT(token, parser->mark, parser->mark);
-
- if (!ENQUEUE(parser, parser->tokens, token))
- return 0;
-
- return 1;
-}
-
-/*
- * Produce a VERSION-DIRECTIVE or TAG-DIRECTIVE token.
- */
-
-static int
-yaml_parser_fetch_directive(yaml_parser_t *parser)
-{
- yaml_token_t token;
-
- /* Reset the indentation level. */
-
- if (!yaml_parser_unroll_indent(parser, -1))
- return 0;
-
- /* Reset simple keys. */
-
- if (!yaml_parser_remove_simple_key(parser))
- return 0;
-
- parser->simple_key_allowed = 0;
-
- /* Create the YAML-DIRECTIVE or TAG-DIRECTIVE token. */
-
- if (!yaml_parser_scan_directive(parser, &token))
- return 0;
-
- /* Append the token to the queue. */
-
- if (!ENQUEUE(parser, parser->tokens, token)) {
- yaml_token_delete(&token);
- return 0;
- }
-
- return 1;
-}
-
-/*
- * Produce the DOCUMENT-START or DOCUMENT-END token.
- */
-
-static int
-yaml_parser_fetch_document_indicator(yaml_parser_t *parser,
- yaml_token_type_t type)
-{
- yaml_mark_t start_mark, end_mark;
- yaml_token_t token;
-
- /* Reset the indentation level. */
-
- if (!yaml_parser_unroll_indent(parser, -1))
- return 0;
-
- /* Reset simple keys. */
-
- if (!yaml_parser_remove_simple_key(parser))
- return 0;
-
- parser->simple_key_allowed = 0;
-
- /* Consume the token. */
-
- start_mark = parser->mark;
-
- SKIP(parser);
- SKIP(parser);
- SKIP(parser);
-
- end_mark = parser->mark;
-
- /* Create the DOCUMENT-START or DOCUMENT-END token. */
-
- TOKEN_INIT(token, type, start_mark, end_mark);
-
- /* Append the token to the queue. */
-
- if (!ENQUEUE(parser, parser->tokens, token))
- return 0;
-
- return 1;
-}
-
-/*
- * Produce the FLOW-SEQUENCE-START or FLOW-MAPPING-START token.
- */
-
-static int
-yaml_parser_fetch_flow_collection_start(yaml_parser_t *parser,
- yaml_token_type_t type)
-{
- yaml_mark_t start_mark, end_mark;
- yaml_token_t token;
-
- /* The indicators '[' and '{' may start a simple key. */
-
- if (!yaml_parser_save_simple_key(parser))
- return 0;
-
- /* Increase the flow level. */
-
- if (!yaml_parser_increase_flow_level(parser))
- return 0;
-
- /* A simple key may follow the indicators '[' and '{'. */
-
- parser->simple_key_allowed = 1;
-
- /* Consume the token. */
-
- start_mark = parser->mark;
- SKIP(parser);
- end_mark = parser->mark;
-
- /* Create the FLOW-SEQUENCE-START of FLOW-MAPPING-START token. */
-
- TOKEN_INIT(token, type, start_mark, end_mark);
-
- /* Append the token to the queue. */
-
- if (!ENQUEUE(parser, parser->tokens, token))
- return 0;
-
- return 1;
-}
-
-/*
- * Produce the FLOW-SEQUENCE-END or FLOW-MAPPING-END token.
- */
-
-static int
-yaml_parser_fetch_flow_collection_end(yaml_parser_t *parser,
- yaml_token_type_t type)
-{
- yaml_mark_t start_mark, end_mark;
- yaml_token_t token;
-
- /* Reset any potential simple key on the current flow level. */
-
- if (!yaml_parser_remove_simple_key(parser))
- return 0;
-
- /* Decrease the flow level. */
-
- if (!yaml_parser_decrease_flow_level(parser))
- return 0;
-
- /* No simple keys after the indicators ']' and '}'. */
-
- parser->simple_key_allowed = 0;
-
- /* Consume the token. */
-
- start_mark = parser->mark;
- SKIP(parser);
- end_mark = parser->mark;
-
- /* Create the FLOW-SEQUENCE-END of FLOW-MAPPING-END token. */
-
- TOKEN_INIT(token, type, start_mark, end_mark);
-
- /* Append the token to the queue. */
-
- if (!ENQUEUE(parser, parser->tokens, token))
- return 0;
-
- return 1;
-}
-
-/*
- * Produce the FLOW-ENTRY token.
- */
-
-static int
-yaml_parser_fetch_flow_entry(yaml_parser_t *parser)
-{
- yaml_mark_t start_mark, end_mark;
- yaml_token_t token;
-
- /* Reset any potential simple keys on the current flow level. */
-
- if (!yaml_parser_remove_simple_key(parser))
- return 0;
-
- /* Simple keys are allowed after ','. */
-
- parser->simple_key_allowed = 1;
-
- /* Consume the token. */
-
- start_mark = parser->mark;
- SKIP(parser);
- end_mark = parser->mark;
-
- /* Create the FLOW-ENTRY token and append it to the queue. */
-
- TOKEN_INIT(token, YAML_FLOW_ENTRY_TOKEN, start_mark, end_mark);
-
- if (!ENQUEUE(parser, parser->tokens, token))
- return 0;
-
- return 1;
-}
-
-/*
- * Produce the BLOCK-ENTRY token.
- */
-
-static int
-yaml_parser_fetch_block_entry(yaml_parser_t *parser)
-{
- yaml_mark_t start_mark, end_mark;
- yaml_token_t token;
-
- /* Check if the scanner is in the block context. */
-
- if (!parser->flow_level)
- {
- /* Check if we are allowed to start a new entry. */
-
- if (!parser->simple_key_allowed) {
- return yaml_parser_set_scanner_error(parser, NULL, parser->mark,
- "block sequence entries are not allowed in this context");
- }
-
- /* Add the BLOCK-SEQUENCE-START token if needed. */
-
- if (!yaml_parser_roll_indent(parser, parser->mark.column, -1,
- YAML_BLOCK_SEQUENCE_START_TOKEN, parser->mark))
- return 0;
- }
- else
- {
- /*
- * It is an error for the '-' indicator to occur in the flow context,
- * but we let the Parser detect and report about it because the Parser
- * is able to point to the context.
- */
- }
-
- /* Reset any potential simple keys on the current flow level. */
-
- if (!yaml_parser_remove_simple_key(parser))
- return 0;
-
- /* Simple keys are allowed after '-'. */
-
- parser->simple_key_allowed = 1;
-
- /* Consume the token. */
-
- start_mark = parser->mark;
- SKIP(parser);
- end_mark = parser->mark;
-
- /* Create the BLOCK-ENTRY token and append it to the queue. */
-
- TOKEN_INIT(token, YAML_BLOCK_ENTRY_TOKEN, start_mark, end_mark);
-
- if (!ENQUEUE(parser, parser->tokens, token))
- return 0;
-
- return 1;
-}
-
-/*
- * Produce the KEY token.
- */
-
-static int
-yaml_parser_fetch_key(yaml_parser_t *parser)
-{
- yaml_mark_t start_mark, end_mark;
- yaml_token_t token;
-
- /* In the block context, additional checks are required. */
-
- if (!parser->flow_level)
- {
- /* Check if we are allowed to start a new key (not nessesary simple). */
-
- if (!parser->simple_key_allowed) {
- return yaml_parser_set_scanner_error(parser, NULL, parser->mark,
- "mapping keys are not allowed in this context");
- }
-
- /* Add the BLOCK-MAPPING-START token if needed. */
-
- if (!yaml_parser_roll_indent(parser, parser->mark.column, -1,
- YAML_BLOCK_MAPPING_START_TOKEN, parser->mark))
- return 0;
- }
-
- /* Reset any potential simple keys on the current flow level. */
-
- if (!yaml_parser_remove_simple_key(parser))
- return 0;
-
- /* Simple keys are allowed after '?' in the block context. */
-
- parser->simple_key_allowed = (!parser->flow_level);
-
- /* Consume the token. */
-
- start_mark = parser->mark;
- SKIP(parser);
- end_mark = parser->mark;
-
- /* Create the KEY token and append it to the queue. */
-
- TOKEN_INIT(token, YAML_KEY_TOKEN, start_mark, end_mark);
-
- if (!ENQUEUE(parser, parser->tokens, token))
- return 0;
-
- return 1;
-}
-
-/*
- * Produce the VALUE token.
- */
-
-static int
-yaml_parser_fetch_value(yaml_parser_t *parser)
-{
- yaml_mark_t start_mark, end_mark;
- yaml_token_t token;
- yaml_simple_key_t *simple_key = parser->simple_keys.top-1;
-
- /* Have we found a simple key? */
-
- if (simple_key->possible)
- {
-
- /* Create the KEY token and insert it into the queue. */
-
- TOKEN_INIT(token, YAML_KEY_TOKEN, simple_key->mark, simple_key->mark);
-
- if (!QUEUE_INSERT(parser, parser->tokens,
- simple_key->token_number - parser->tokens_parsed, token))
- return 0;
-
- /* In the block context, we may need to add the BLOCK-MAPPING-START token. */
-
- if (!yaml_parser_roll_indent(parser, simple_key->mark.column,
- simple_key->token_number,
- YAML_BLOCK_MAPPING_START_TOKEN, simple_key->mark))
- return 0;
-
- /* Remove the simple key. */
-
- simple_key->possible = 0;
-
- /* A simple key cannot follow another simple key. */
-
- parser->simple_key_allowed = 0;
- }
- else
- {
- /* The ':' indicator follows a complex key. */
-
- /* In the block context, extra checks are required. */
-
- if (!parser->flow_level)
- {
- /* Check if we are allowed to start a complex value. */
-
- if (!parser->simple_key_allowed) {
- return yaml_parser_set_scanner_error(parser, NULL, parser->mark,
- "mapping values are not allowed in this context");
- }
-
- /* Add the BLOCK-MAPPING-START token if needed. */
-
- if (!yaml_parser_roll_indent(parser, parser->mark.column, -1,
- YAML_BLOCK_MAPPING_START_TOKEN, parser->mark))
- return 0;
- }
-
- /* Simple keys after ':' are allowed in the block context. */
-
- parser->simple_key_allowed = (!parser->flow_level);
- }
-
- /* Consume the token. */
-
- start_mark = parser->mark;
- SKIP(parser);
- end_mark = parser->mark;
-
- /* Create the VALUE token and append it to the queue. */
-
- TOKEN_INIT(token, YAML_VALUE_TOKEN, start_mark, end_mark);
-
- if (!ENQUEUE(parser, parser->tokens, token))
- return 0;
-
- return 1;
-}
-
-/*
- * Produce the ALIAS or ANCHOR token.
- */
-
-static int
-yaml_parser_fetch_anchor(yaml_parser_t *parser, yaml_token_type_t type)
-{
- yaml_token_t token;
-
- /* An anchor or an alias could be a simple key. */
-
- if (!yaml_parser_save_simple_key(parser))
- return 0;
-
- /* A simple key cannot follow an anchor or an alias. */
-
- parser->simple_key_allowed = 0;
-
- /* Create the ALIAS or ANCHOR token and append it to the queue. */
-
- if (!yaml_parser_scan_anchor(parser, &token, type))
- return 0;
-
- if (!ENQUEUE(parser, parser->tokens, token)) {
- yaml_token_delete(&token);
- return 0;
- }
- return 1;
-}
-
-/*
- * Produce the TAG token.
- */
-
-static int
-yaml_parser_fetch_tag(yaml_parser_t *parser)
-{
- yaml_token_t token;
-
- /* A tag could be a simple key. */
-
- if (!yaml_parser_save_simple_key(parser))
- return 0;
-
- /* A simple key cannot follow a tag. */
-
- parser->simple_key_allowed = 0;
-
- /* Create the TAG token and append it to the queue. */
-
- if (!yaml_parser_scan_tag(parser, &token))
- return 0;
-
- if (!ENQUEUE(parser, parser->tokens, token)) {
- yaml_token_delete(&token);
- return 0;
- }
-
- return 1;
-}
-
-/*
- * Produce the SCALAR(...,literal) or SCALAR(...,folded) tokens.
- */
-
-static int
-yaml_parser_fetch_block_scalar(yaml_parser_t *parser, int literal)
-{
- yaml_token_t token;
-
- /* Remove any potential simple keys. */
-
- if (!yaml_parser_remove_simple_key(parser))
- return 0;
-
- /* A simple key may follow a block scalar. */
-
- parser->simple_key_allowed = 1;
-
- /* Create the SCALAR token and append it to the queue. */
-
- if (!yaml_parser_scan_block_scalar(parser, &token, literal))
- return 0;
-
- if (!ENQUEUE(parser, parser->tokens, token)) {
- yaml_token_delete(&token);
- return 0;
- }
-
- return 1;
-}
-
-/*
- * Produce the SCALAR(...,single-quoted) or SCALAR(...,double-quoted) tokens.
- */
-
-static int
-yaml_parser_fetch_flow_scalar(yaml_parser_t *parser, int single)
-{
- yaml_token_t token;
-
- /* A plain scalar could be a simple key. */
-
- if (!yaml_parser_save_simple_key(parser))
- return 0;
-
- /* A simple key cannot follow a flow scalar. */
-
- parser->simple_key_allowed = 0;
-
- /* Create the SCALAR token and append it to the queue. */
-
- if (!yaml_parser_scan_flow_scalar(parser, &token, single))
- return 0;
-
- if (!ENQUEUE(parser, parser->tokens, token)) {
- yaml_token_delete(&token);
- return 0;
- }
-
- return 1;
-}
-
-/*
- * Produce the SCALAR(...,plain) token.
- */
-
-static int
-yaml_parser_fetch_plain_scalar(yaml_parser_t *parser)
-{
- yaml_token_t token;
-
- /* A plain scalar could be a simple key. */
-
- if (!yaml_parser_save_simple_key(parser))
- return 0;
-
- /* A simple key cannot follow a flow scalar. */
-
- parser->simple_key_allowed = 0;
-
- /* Create the SCALAR token and append it to the queue. */
-
- if (!yaml_parser_scan_plain_scalar(parser, &token))
- return 0;
-
- if (!ENQUEUE(parser, parser->tokens, token)) {
- yaml_token_delete(&token);
- return 0;
- }
-
- return 1;
-}
-
-/*
- * Eat whitespaces and comments until the next token is found.
- */
-
-static int
-yaml_parser_scan_to_next_token(yaml_parser_t *parser)
-{
- /* Until the next token is not found. */
-
- while (1)
- {
- /* Allow the BOM mark to start a line. */
-
- if (!CACHE(parser, 1)) return 0;
-
- if (parser->mark.column == 0 && IS_BOM(parser->buffer))
- SKIP(parser);
-
- /*
- * Eat whitespaces.
- *
- * Tabs are allowed:
- *
- * - in the flow context;
- * - in the block context, but not at the beginning of the line or
- * after '-', '?', or ':' (complex value).
- */
-
- if (!CACHE(parser, 1)) return 0;
-
- while (CHECK(parser->buffer,' ') ||
- ((parser->flow_level || !parser->simple_key_allowed) &&
- CHECK(parser->buffer, '\t'))) {
- SKIP(parser);
- if (!CACHE(parser, 1)) return 0;
- }
-
- /* Eat a comment until a line break. */
-
- if (CHECK(parser->buffer, '#')) {
- while (!IS_BREAKZ(parser->buffer)) {
- SKIP(parser);
- if (!CACHE(parser, 1)) return 0;
- }
- }
-
- /* If it is a line break, eat it. */
-
- if (IS_BREAK(parser->buffer))
- {
- if (!CACHE(parser, 2)) return 0;
- SKIP_LINE(parser);
-
- /* In the block context, a new line may start a simple key. */
-
- if (!parser->flow_level) {
- parser->simple_key_allowed = 1;
- }
- }
- else
- {
- /* We have found a token. */
-
- break;
- }
- }
-
- return 1;
-}
-
-/*
- * Scan a YAML-DIRECTIVE or TAG-DIRECTIVE token.
- *
- * Scope:
- * %YAML 1.1 # a comment \n
- * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- * %TAG !yaml! tag:yaml.org,2002: \n
- * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- */
-
-int
-yaml_parser_scan_directive(yaml_parser_t *parser, yaml_token_t *token)
-{
- yaml_mark_t start_mark, end_mark;
- yaml_char_t *name = NULL;
- int major, minor;
- yaml_char_t *handle = NULL, *prefix = NULL;
-
- /* Eat '%'. */
-
- start_mark = parser->mark;
-
- SKIP(parser);
-
- /* Scan the directive name. */
-
- if (!yaml_parser_scan_directive_name(parser, start_mark, &name))
- goto error;
-
- /* Is it a YAML directive? */
-
- if (strcmp((char *)name, "YAML") == 0)
- {
- /* Scan the VERSION directive value. */
-
- if (!yaml_parser_scan_version_directive_value(parser, start_mark,
- &major, &minor))
- goto error;
-
- end_mark = parser->mark;
-
- /* Create a VERSION-DIRECTIVE token. */
-
- VERSION_DIRECTIVE_TOKEN_INIT(*token, major, minor,
- start_mark, end_mark);
- }
-
- /* Is it a TAG directive? */
-
- else if (strcmp((char *)name, "TAG") == 0)
- {
- /* Scan the TAG directive value. */
-
- if (!yaml_parser_scan_tag_directive_value(parser, start_mark,
- &handle, &prefix))
- goto error;
-
- end_mark = parser->mark;
-
- /* Create a TAG-DIRECTIVE token. */
-
- TAG_DIRECTIVE_TOKEN_INIT(*token, handle, prefix,
- start_mark, end_mark);
- }
-
- /* Unknown directive. */
-
- else
- {
- yaml_parser_set_scanner_error(parser, "while scanning a directive",
- start_mark, "found uknown directive name");
- goto error;
- }
-
- /* Eat the rest of the line including any comments. */
-
- if (!CACHE(parser, 1)) goto error;
-
- while (IS_BLANK(parser->buffer)) {
- SKIP(parser);
- if (!CACHE(parser, 1)) goto error;
- }
-
- if (CHECK(parser->buffer, '#')) {
- while (!IS_BREAKZ(parser->buffer)) {
- SKIP(parser);
- if (!CACHE(parser, 1)) goto error;
- }
- }
-
- /* Check if we are at the end of the line. */
-
- if (!IS_BREAKZ(parser->buffer)) {
- yaml_parser_set_scanner_error(parser, "while scanning a directive",
- start_mark, "did not find expected comment or line break");
- goto error;
- }
-
- /* Eat a line break. */
-
- if (IS_BREAK(parser->buffer)) {
- if (!CACHE(parser, 2)) goto error;
- SKIP_LINE(parser);
- }
-
- yaml_free(name);
-
- return 1;
-
-error:
- yaml_free(prefix);
- yaml_free(handle);
- yaml_free(name);
- return 0;
-}
-
-/*
- * Scan the directive name.
- *
- * Scope:
- * %YAML 1.1 # a comment \n
- * ^^^^
- * %TAG !yaml! tag:yaml.org,2002: \n
- * ^^^
- */
-
-static int
-yaml_parser_scan_directive_name(yaml_parser_t *parser,
- yaml_mark_t start_mark, yaml_char_t **name)
-{
- yaml_string_t string = NULL_STRING;
-
- if (!STRING_INIT(parser, string, INITIAL_STRING_SIZE)) goto error;
-
- /* Consume the directive name. */
-
- if (!CACHE(parser, 1)) goto error;
-
- while (IS_ALPHA(parser->buffer))
- {
- if (!READ(parser, string)) goto error;
- if (!CACHE(parser, 1)) goto error;
- }
-
- /* Check if the name is empty. */
-
- if (string.start == string.pointer) {
- yaml_parser_set_scanner_error(parser, "while scanning a directive",
- start_mark, "could not find expected directive name");
- goto error;
- }
-
- /* Check for an blank character after the name. */
-
- if (!IS_BLANKZ(parser->buffer)) {
- yaml_parser_set_scanner_error(parser, "while scanning a directive",
- start_mark, "found unexpected non-alphabetical character");
- goto error;
- }
-
- *name = string.start;
-
- return 1;
-
-error:
- STRING_DEL(parser, string);
- return 0;
-}
-
-/*
- * Scan the value of VERSION-DIRECTIVE.
- *
- * Scope:
- * %YAML 1.1 # a comment \n
- * ^^^^^^
- */
-
-static int
-yaml_parser_scan_version_directive_value(yaml_parser_t *parser,
- yaml_mark_t start_mark, int *major, int *minor)
-{
- /* Eat whitespaces. */
-
- if (!CACHE(parser, 1)) return 0;
-
- while (IS_BLANK(parser->buffer)) {
- SKIP(parser);
- if (!CACHE(parser, 1)) return 0;
- }
-
- /* Consume the major version number. */
-
- if (!yaml_parser_scan_version_directive_number(parser, start_mark, major))
- return 0;
-
- /* Eat '.'. */
-
- if (!CHECK(parser->buffer, '.')) {
- return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive",
- start_mark, "did not find expected digit or '.' character");
- }
-
- SKIP(parser);
-
- /* Consume the minor version number. */
-
- if (!yaml_parser_scan_version_directive_number(parser, start_mark, minor))
- return 0;
-
- return 1;
-}
-
-#define MAX_NUMBER_LENGTH 9
-
-/*
- * Scan the version number of VERSION-DIRECTIVE.
- *
- * Scope:
- * %YAML 1.1 # a comment \n
- * ^
- * %YAML 1.1 # a comment \n
- * ^
- */
-
-static int
-yaml_parser_scan_version_directive_number(yaml_parser_t *parser,
- yaml_mark_t start_mark, int *number)
-{
- int value = 0;
- size_t length = 0;
-
- /* Repeat while the next character is digit. */
-
- if (!CACHE(parser, 1)) return 0;
-
- while (IS_DIGIT(parser->buffer))
- {
- /* Check if the number is too long. */
-
- if (++length > MAX_NUMBER_LENGTH) {
- return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive",
- start_mark, "found extremely long version number");
- }
-
- value = value*10 + AS_DIGIT(parser->buffer);
-
- SKIP(parser);
-
- if (!CACHE(parser, 1)) return 0;
- }
-
- /* Check if the number was present. */
-
- if (!length) {
- return yaml_parser_set_scanner_error(parser, "while scanning a %YAML directive",
- start_mark, "did not find expected version number");
- }
-
- *number = value;
-
- return 1;
-}
-
-/*
- * Scan the value of a TAG-DIRECTIVE token.
- *
- * Scope:
- * %TAG !yaml! tag:yaml.org,2002: \n
- * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- */
-
-static int
-yaml_parser_scan_tag_directive_value(yaml_parser_t *parser,
- yaml_mark_t start_mark, yaml_char_t **handle, yaml_char_t **prefix)
-{
- yaml_char_t *handle_value = NULL;
- yaml_char_t *prefix_value = NULL;
-
- /* Eat whitespaces. */
-
- if (!CACHE(parser, 1)) goto error;
-
- while (IS_BLANK(parser->buffer)) {
- SKIP(parser);
- if (!CACHE(parser, 1)) goto error;
- }
-
- /* Scan a handle. */
-
- if (!yaml_parser_scan_tag_handle(parser, 1, start_mark, &handle_value))
- goto error;
-
- /* Expect a whitespace. */
-
- if (!CACHE(parser, 1)) goto error;
-
- if (!IS_BLANK(parser->buffer)) {
- yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive",
- start_mark, "did not find expected whitespace");
- goto error;
- }
-
- /* Eat whitespaces. */
-
- while (IS_BLANK(parser->buffer)) {
- SKIP(parser);
- if (!CACHE(parser, 1)) goto error;
- }
-
- /* Scan a prefix. */
-
- if (!yaml_parser_scan_tag_uri(parser, 1, NULL, start_mark, &prefix_value))
- goto error;
-
- /* Expect a whitespace or line break. */
-
- if (!CACHE(parser, 1)) goto error;
-
- if (!IS_BLANKZ(parser->buffer)) {
- yaml_parser_set_scanner_error(parser, "while scanning a %TAG directive",
- start_mark, "did not find expected whitespace or line break");
- goto error;
- }
-
- *handle = handle_value;
- *prefix = prefix_value;
-
- return 1;
-
-error:
- yaml_free(handle_value);
- yaml_free(prefix_value);
- return 0;
-}
-
-static int
-yaml_parser_scan_anchor(yaml_parser_t *parser, yaml_token_t *token,
- yaml_token_type_t type)
-{
- int length = 0;
- yaml_mark_t start_mark, end_mark;
- yaml_string_t string = NULL_STRING;
-
- if (!STRING_INIT(parser, string, INITIAL_STRING_SIZE)) goto error;
-
- /* Eat the indicator character. */
-
- start_mark = parser->mark;
-
- SKIP(parser);
-
- /* Consume the value. */
-
- if (!CACHE(parser, 1)) goto error;
-
- while (IS_ALPHA(parser->buffer)) {
- if (!READ(parser, string)) goto error;
- if (!CACHE(parser, 1)) goto error;
- length ++;
- }
-
- end_mark = parser->mark;
-
- /*
- * Check if length of the anchor is greater than 0 and it is followed by
- * a whitespace character or one of the indicators:
- *
- * '?', ':', ',', ']', '}', '%', '@', '`'.
- */
-
- if (!length || !(IS_BLANKZ(parser->buffer) || CHECK(parser->buffer, '?')
- || CHECK(parser->buffer, ':') || CHECK(parser->buffer, ',')
- || CHECK(parser->buffer, ']') || CHECK(parser->buffer, '}')
- || CHECK(parser->buffer, '%') || CHECK(parser->buffer, '@')
- || CHECK(parser->buffer, '`'))) {
- yaml_parser_set_scanner_error(parser, type == YAML_ANCHOR_TOKEN ?
- "while scanning an anchor" : "while scanning an alias", start_mark,
- "did not find expected alphabetic or numeric character");
- goto error;
- }
-
- /* Create a token. */
-
- if (type == YAML_ANCHOR_TOKEN) {
- ANCHOR_TOKEN_INIT(*token, string.start, start_mark, end_mark);
- }
- else {
- ALIAS_TOKEN_INIT(*token, string.start, start_mark, end_mark);
- }
-
- return 1;
-
-error:
- STRING_DEL(parser, string);
- return 0;
-}
-
-/*
- * Scan a TAG token.
- */
-
-static int
-yaml_parser_scan_tag(yaml_parser_t *parser, yaml_token_t *token)
-{
- yaml_char_t *handle = NULL;
- yaml_char_t *suffix = NULL;
- yaml_mark_t start_mark, end_mark;
-
- start_mark = parser->mark;
-
- /* Check if the tag is in the canonical form. */
-
- if (!CACHE(parser, 2)) goto error;
-
- if (CHECK_AT(parser->buffer, '<', 1))
- {
- /* Set the handle to '' */
-
- handle = yaml_malloc(1);
- if (!handle) goto error;
- handle[0] = '\0';
-
- /* Eat '!<' */
-
- SKIP(parser);
- SKIP(parser);
-
- /* Consume the tag value. */
-
- if (!yaml_parser_scan_tag_uri(parser, 0, NULL, start_mark, &suffix))
- goto error;
-
- /* Check for '>' and eat it. */
-
- if (!CHECK(parser->buffer, '>')) {
- yaml_parser_set_scanner_error(parser, "while scanning a tag",
- start_mark, "did not find the expected '>'");
- goto error;
- }
-
- SKIP(parser);
- }
- else
- {
- /* The tag has either the '!suffix' or the '!handle!suffix' form. */
-
- /* First, try to scan a handle. */
-
- if (!yaml_parser_scan_tag_handle(parser, 0, start_mark, &handle))
- goto error;
-
- /* Check if it is, indeed, handle. */
-
- if (handle[0] == '!' && handle[1] != '\0' && handle[strlen((char *)handle)-1] == '!')
- {
- /* Scan the suffix now. */
-
- if (!yaml_parser_scan_tag_uri(parser, 0, NULL, start_mark, &suffix))
- goto error;
- }
- else
- {
- /* It wasn't a handle after all. Scan the rest of the tag. */
-
- if (!yaml_parser_scan_tag_uri(parser, 0, handle, start_mark, &suffix))
- goto error;
-
- /* Set the handle to '!'. */
-
- yaml_free(handle);
- handle = yaml_malloc(2);
- if (!handle) goto error;
- handle[0] = '!';
- handle[1] = '\0';
-
- /*
- * A special case: the '!' tag. Set the handle to '' and the
- * suffix to '!'.
- */
-
- if (suffix[0] == '\0') {
- yaml_char_t *tmp = handle;
- handle = suffix;
- suffix = tmp;
- }
- }
- }
-
- /* Check the character which ends the tag. */
-
- if (!CACHE(parser, 1)) goto error;
-
- if (!IS_BLANKZ(parser->buffer)) {
- yaml_parser_set_scanner_error(parser, "while scanning a tag",
- start_mark, "did not find expected whitespace or line break");
- goto error;
- }
-
- end_mark = parser->mark;
-
- /* Create a token. */
-
- TAG_TOKEN_INIT(*token, handle, suffix, start_mark, end_mark);
-
- return 1;
-
-error:
- yaml_free(handle);
- yaml_free(suffix);
- return 0;
-}
-
-/*
- * Scan a tag handle.
- */
-
-static int
-yaml_parser_scan_tag_handle(yaml_parser_t *parser, int directive,
- yaml_mark_t start_mark, yaml_char_t **handle)
-{
- yaml_string_t string = NULL_STRING;
-
- if (!STRING_INIT(parser, string, INITIAL_STRING_SIZE)) goto error;
-
- /* Check the initial '!' character. */
-
- if (!CACHE(parser, 1)) goto error;
-
- if (!CHECK(parser->buffer, '!')) {
- yaml_parser_set_scanner_error(parser, directive ?
- "while scanning a tag directive" : "while scanning a tag",
- start_mark, "did not find expected '!'");
- goto error;
- }
-
- /* Copy the '!' character. */
-
- if (!READ(parser, string)) goto error;
-
- /* Copy all subsequent alphabetical and numerical characters. */
-
- if (!CACHE(parser, 1)) goto error;
-
- while (IS_ALPHA(parser->buffer))
- {
- if (!READ(parser, string)) goto error;
- if (!CACHE(parser, 1)) goto error;
- }
-
- /* Check if the trailing character is '!' and copy it. */
-
- if (CHECK(parser->buffer, '!'))
- {
- if (!READ(parser, string)) goto error;
- }
- else
- {
- /*
- * It's either the '!' tag or not really a tag handle. If it's a %TAG
- * directive, it's an error. If it's a tag token, it must be a part of
- * URI.
- */
-
- if (directive && !(string.start[0] == '!' && string.start[1] == '\0')) {
- yaml_parser_set_scanner_error(parser, "while parsing a tag directive",
- start_mark, "did not find expected '!'");
- goto error;
- }
- }
-
- *handle = string.start;
-
- return 1;
-
-error:
- STRING_DEL(parser, string);
- return 0;
-}
-
-/*
- * Scan a tag.
- */
-
-static int
-yaml_parser_scan_tag_uri(yaml_parser_t *parser, int directive,
- yaml_char_t *head, yaml_mark_t start_mark, yaml_char_t **uri)
-{
- size_t length = head ? strlen((char *)head) : 0;
- yaml_string_t string = NULL_STRING;
-
- if (!STRING_INIT(parser, string, INITIAL_STRING_SIZE)) goto error;
-
- /* Resize the string to include the head. */
-
- while ((size_t)(string.end - string.start) <= length) {
- if (!yaml_string_extend(&string.start, &string.pointer, &string.end)) {
- parser->error = YAML_MEMORY_ERROR;
- goto error;
- }
- }
-
- /*
- * Copy the head if needed.
- *
- * Note that we don't copy the leading '!' character.
- */
-
- if (length > 1) {
- memcpy(string.start, head+1, length-1);
- string.pointer += length-1;
- }
-
- /* Scan the tag. */
-
- if (!CACHE(parser, 1)) goto error;
-
- /*
- * The set of characters that may appear in URI is as follows:
- *
- * '0'-'9', 'A'-'Z', 'a'-'z', '_', '-', ';', '/', '?', ':', '@', '&',
- * '=', '+', '$', ',', '.', '!', '~', '*', '\'', '(', ')', '[', ']',
- * '%'.
- */
-
- while (IS_ALPHA(parser->buffer) || CHECK(parser->buffer, ';')
- || CHECK(parser->buffer, '/') || CHECK(parser->buffer, '?')
- || CHECK(parser->buffer, ':') || CHECK(parser->buffer, '@')
- || CHECK(parser->buffer, '&') || CHECK(parser->buffer, '=')
- || CHECK(parser->buffer, '+') || CHECK(parser->buffer, '$')
- || CHECK(parser->buffer, ',') || CHECK(parser->buffer, '.')
- || CHECK(parser->buffer, '!') || CHECK(parser->buffer, '~')
- || CHECK(parser->buffer, '*') || CHECK(parser->buffer, '\'')
- || CHECK(parser->buffer, '(') || CHECK(parser->buffer, ')')
- || CHECK(parser->buffer, '[') || CHECK(parser->buffer, ']')
- || CHECK(parser->buffer, '%'))
- {
- /* Check if it is a URI-escape sequence. */
-
- if (CHECK(parser->buffer, '%')) {
- if (!STRING_EXTEND(parser, string))
- goto error;
-
- if (!yaml_parser_scan_uri_escapes(parser,
- directive, start_mark, &string)) goto error;
- }
- else {
- if (!READ(parser, string)) goto error;
- }
-
- length ++;
- if (!CACHE(parser, 1)) goto error;
- }
-
- /* Check if the tag is non-empty. */
-
- if (!length) {
- if (!STRING_EXTEND(parser, string))
- goto error;
-
- yaml_parser_set_scanner_error(parser, directive ?
- "while parsing a %TAG directive" : "while parsing a tag",
- start_mark, "did not find expected tag URI");
- goto error;
- }
-
- *uri = string.start;
-
- return 1;
-
-error:
- STRING_DEL(parser, string);
- return 0;
-}
-
-/*
- * Decode an URI-escape sequence corresponding to a single UTF-8 character.
- */
-
-static int
-yaml_parser_scan_uri_escapes(yaml_parser_t *parser, int directive,
- yaml_mark_t start_mark, yaml_string_t *string)
-{
- int width = 0;
-
- /* Decode the required number of characters. */
-
- do {
-
- unsigned char octet = 0;
-
- /* Check for a URI-escaped octet. */
-
- if (!CACHE(parser, 3)) return 0;
-
- if (!(CHECK(parser->buffer, '%')
- && IS_HEX_AT(parser->buffer, 1)
- && IS_HEX_AT(parser->buffer, 2))) {
- return yaml_parser_set_scanner_error(parser, directive ?
- "while parsing a %TAG directive" : "while parsing a tag",
- start_mark, "did not find URI escaped octet");
- }
-
- /* Get the octet. */
-
- octet = (AS_HEX_AT(parser->buffer, 1) << 4) + AS_HEX_AT(parser->buffer, 2);
-
- /* If it is the leading octet, determine the length of the UTF-8 sequence. */
-
- if (!width)
- {
- width = (octet & 0x80) == 0x00 ? 1 :
- (octet & 0xE0) == 0xC0 ? 2 :
- (octet & 0xF0) == 0xE0 ? 3 :
- (octet & 0xF8) == 0xF0 ? 4 : 0;
- if (!width) {
- return yaml_parser_set_scanner_error(parser, directive ?
- "while parsing a %TAG directive" : "while parsing a tag",
- start_mark, "found an incorrect leading UTF-8 octet");
- }
- }
- else
- {
- /* Check if the trailing octet is correct. */
-
- if ((octet & 0xC0) != 0x80) {
- return yaml_parser_set_scanner_error(parser, directive ?
- "while parsing a %TAG directive" : "while parsing a tag",
- start_mark, "found an incorrect trailing UTF-8 octet");
- }
- }
-
- /* Copy the octet and move the pointers. */
-
- *(string->pointer++) = octet;
- SKIP(parser);
- SKIP(parser);
- SKIP(parser);
-
- } while (--width);
-
- return 1;
-}
-
-/*
- * Scan a block scalar.
- */
-
-static int
-yaml_parser_scan_block_scalar(yaml_parser_t *parser, yaml_token_t *token,
- int literal)
-{
- yaml_mark_t start_mark;
- yaml_mark_t end_mark;
- yaml_string_t string = NULL_STRING;
- yaml_string_t leading_break = NULL_STRING;
- yaml_string_t trailing_breaks = NULL_STRING;
- int chomping = 0;
- int increment = 0;
- int indent = 0;
- int leading_blank = 0;
- int trailing_blank = 0;
-
- if (!STRING_INIT(parser, string, INITIAL_STRING_SIZE)) goto error;
- if (!STRING_INIT(parser, leading_break, INITIAL_STRING_SIZE)) goto error;
- if (!STRING_INIT(parser, trailing_breaks, INITIAL_STRING_SIZE)) goto error;
-
- /* Eat the indicator '|' or '>'. */
-
- start_mark = parser->mark;
-
- SKIP(parser);
-
- /* Scan the additional block scalar indicators. */
-
- if (!CACHE(parser, 1)) goto error;
-
- /* Check for a chomping indicator. */
-
- if (CHECK(parser->buffer, '+') || CHECK(parser->buffer, '-'))
- {
- /* Set the chomping method and eat the indicator. */
-
- chomping = CHECK(parser->buffer, '+') ? +1 : -1;
-
- SKIP(parser);
-
- /* Check for an indentation indicator. */
-
- if (!CACHE(parser, 1)) goto error;
-
- if (IS_DIGIT(parser->buffer))
- {
- /* Check that the intendation is greater than 0. */
-
- if (CHECK(parser->buffer, '0')) {
- yaml_parser_set_scanner_error(parser, "while scanning a block scalar",
- start_mark, "found an intendation indicator equal to 0");
- goto error;
- }
-
- /* Get the intendation level and eat the indicator. */
-
- increment = AS_DIGIT(parser->buffer);
-
- SKIP(parser);
- }
- }
-
- /* Do the same as above, but in the opposite order. */
-
- else if (IS_DIGIT(parser->buffer))
- {
- if (CHECK(parser->buffer, '0')) {
- yaml_parser_set_scanner_error(parser, "while scanning a block scalar",
- start_mark, "found an intendation indicator equal to 0");
- goto error;
- }
-
- increment = AS_DIGIT(parser->buffer);
-
- SKIP(parser);
-
- if (!CACHE(parser, 1)) goto error;
-
- if (CHECK(parser->buffer, '+') || CHECK(parser->buffer, '-')) {
- chomping = CHECK(parser->buffer, '+') ? +1 : -1;
-
- SKIP(parser);
- }
- }
-
- /* Eat whitespaces and comments to the end of the line. */
-
- if (!CACHE(parser, 1)) goto error;
-
- while (IS_BLANK(parser->buffer)) {
- SKIP(parser);
- if (!CACHE(parser, 1)) goto error;
- }
-
- if (CHECK(parser->buffer, '#')) {
- while (!IS_BREAKZ(parser->buffer)) {
- SKIP(parser);
- if (!CACHE(parser, 1)) goto error;
- }
- }
-
- /* Check if we are at the end of the line. */
-
- if (!IS_BREAKZ(parser->buffer)) {
- yaml_parser_set_scanner_error(parser, "while scanning a block scalar",
- start_mark, "did not find expected comment or line break");
- goto error;
- }
-
- /* Eat a line break. */
-
- if (IS_BREAK(parser->buffer)) {
- if (!CACHE(parser, 2)) goto error;
- SKIP_LINE(parser);
- }
-
- end_mark = parser->mark;
-
- /* Set the intendation level if it was specified. */
-
- if (increment) {
- indent = parser->indent >= 0 ? parser->indent+increment : increment;
- }
-
- /* Scan the leading line breaks and determine the indentation level if needed. */
-
- if (!yaml_parser_scan_block_scalar_breaks(parser, &indent, &trailing_breaks,
- start_mark, &end_mark)) goto error;
-
- /* Scan the block scalar content. */
-
- if (!CACHE(parser, 1)) goto error;
-
- while ((int)parser->mark.column == indent && !IS_Z(parser->buffer))
- {
- /*
- * We are at the beginning of a non-empty line.
- */
-
- /* Is it a trailing whitespace? */
-
- trailing_blank = IS_BLANK(parser->buffer);
-
- /* Check if we need to fold the leading line break. */
-
- if (!literal && (*leading_break.start == '\n')
- && !leading_blank && !trailing_blank)
- {
- /* Do we need to join the lines by space? */
-
- if (*trailing_breaks.start == '\0') {
- if (!STRING_EXTEND(parser, string)) goto error;
- *(string.pointer ++) = ' ';
- }
-
- CLEAR(parser, leading_break);
- }
- else {
- if (!JOIN(parser, string, leading_break)) goto error;
- CLEAR(parser, leading_break);
- }
-
- /* Append the remaining line breaks. */
-
- if (!JOIN(parser, string, trailing_breaks)) goto error;
- CLEAR(parser, trailing_breaks);
-
- /* Is it a leading whitespace? */
-
- leading_blank = IS_BLANK(parser->buffer);
-
- /* Consume the current line. */
-
- while (!IS_BREAKZ(parser->buffer)) {
- if (!READ(parser, string)) goto error;
- if (!CACHE(parser, 1)) goto error;
- }
-
- /* Consume the line break. */
-
- if (!CACHE(parser, 2)) goto error;
-
- if (!READ_LINE(parser, leading_break)) goto error;
-
- /* Eat the following intendation spaces and line breaks. */
-
- if (!yaml_parser_scan_block_scalar_breaks(parser,
- &indent, &trailing_breaks, start_mark, &end_mark)) goto error;
- }
-
- /* Chomp the tail. */
-
- if (chomping != -1) {
- if (!JOIN(parser, string, leading_break)) goto error;
- }
- if (chomping == 1) {
- if (!JOIN(parser, string, trailing_breaks)) goto error;
- }
-
- /* Create a token. */
-
- SCALAR_TOKEN_INIT(*token, string.start, string.pointer-string.start,
- literal ? YAML_LITERAL_SCALAR_STYLE : YAML_FOLDED_SCALAR_STYLE,
- start_mark, end_mark);
-
- STRING_DEL(parser, leading_break);
- STRING_DEL(parser, trailing_breaks);
-
- return 1;
-
-error:
- STRING_DEL(parser, string);
- STRING_DEL(parser, leading_break);
- STRING_DEL(parser, trailing_breaks);
-
- return 0;
-}
-
-/*
- * Scan intendation spaces and line breaks for a block scalar. Determine the
- * intendation level if needed.
- */
-
-static int
-yaml_parser_scan_block_scalar_breaks(yaml_parser_t *parser,
- int *indent, yaml_string_t *breaks,
- yaml_mark_t start_mark, yaml_mark_t *end_mark)
-{
- int max_indent = 0;
-
- *end_mark = parser->mark;
-
- /* Eat the intendation spaces and line breaks. */
-
- while (1)
- {
- /* Eat the intendation spaces. */
-
- if (!CACHE(parser, 1)) return 0;
-
- while ((!*indent || (int)parser->mark.column < *indent)
- && IS_SPACE(parser->buffer)) {
- SKIP(parser);
- if (!CACHE(parser, 1)) return 0;
- }
-
- if ((int)parser->mark.column > max_indent)
- max_indent = (int)parser->mark.column;
-
- /* Check for a tab character messing the intendation. */
-
- if ((!*indent || (int)parser->mark.column < *indent)
- && IS_TAB(parser->buffer)) {
- return yaml_parser_set_scanner_error(parser, "while scanning a block scalar",
- start_mark, "found a tab character where an intendation space is expected");
- }
-
- /* Have we found a non-empty line? */
-
- if (!IS_BREAK(parser->buffer)) break;
-
- /* Consume the line break. */
-
- if (!CACHE(parser, 2)) return 0;
- if (!READ_LINE(parser, *breaks)) return 0;
- *end_mark = parser->mark;
- }
-
- /* Determine the indentation level if needed. */
-
- if (!*indent) {
- *indent = max_indent;
- if (*indent < parser->indent + 1)
- *indent = parser->indent + 1;
- if (*indent < 1)
- *indent = 1;
- }
-
- return 1;
-}
-
-/*
- * Scan a quoted scalar.
- */
-
-static int
-yaml_parser_scan_flow_scalar(yaml_parser_t *parser, yaml_token_t *token,
- int single)
-{
- yaml_mark_t start_mark;
- yaml_mark_t end_mark;
- yaml_string_t string = NULL_STRING;
- yaml_string_t leading_break = NULL_STRING;
- yaml_string_t trailing_breaks = NULL_STRING;
- yaml_string_t whitespaces = NULL_STRING;
- int leading_blanks;
-
- if (!STRING_INIT(parser, string, INITIAL_STRING_SIZE)) goto error;
- if (!STRING_INIT(parser, leading_break, INITIAL_STRING_SIZE)) goto error;
- if (!STRING_INIT(parser, trailing_breaks, INITIAL_STRING_SIZE)) goto error;
- if (!STRING_INIT(parser, whitespaces, INITIAL_STRING_SIZE)) goto error;
-
- /* Eat the left quote. */
-
- start_mark = parser->mark;
-
- SKIP(parser);
-
- /* Consume the content of the quoted scalar. */
-
- while (1)
- {
- /* Check that there are no document indicators at the beginning of the line. */
-
- if (!CACHE(parser, 4)) goto error;
-
- if (parser->mark.column == 0 &&
- ((CHECK_AT(parser->buffer, '-', 0) &&
- CHECK_AT(parser->buffer, '-', 1) &&
- CHECK_AT(parser->buffer, '-', 2)) ||
- (CHECK_AT(parser->buffer, '.', 0) &&
- CHECK_AT(parser->buffer, '.', 1) &&
- CHECK_AT(parser->buffer, '.', 2))) &&
- IS_BLANKZ_AT(parser->buffer, 3))
- {
- yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar",
- start_mark, "found unexpected document indicator");
- goto error;
- }
-
- /* Check for EOF. */
-
- if (IS_Z(parser->buffer)) {
- yaml_parser_set_scanner_error(parser, "while scanning a quoted scalar",
- start_mark, "found unexpected end of stream");
- goto error;
- }
-
- /* Consume non-blank characters. */
-
- if (!CACHE(parser, 2)) goto error;
-
- leading_blanks = 0;
-
- while (!IS_BLANKZ(parser->buffer))
- {
- /* Check for an escaped single quote. */
-
- if (single && CHECK_AT(parser->buffer, '\'', 0)
- && CHECK_AT(parser->buffer, '\'', 1))
- {
- if (!STRING_EXTEND(parser, string)) goto error;
- *(string.pointer++) = '\'';
- SKIP(parser);
- SKIP(parser);
- }
-
- /* Check for the right quote. */
-
- else if (CHECK(parser->buffer, single ? '\'' : '"'))
- {
- break;
- }
-
- /* Check for an escaped line break. */
-
- else if (!single && CHECK(parser->buffer, '\\')
- && IS_BREAK_AT(parser->buffer, 1))
- {
- if (!CACHE(parser, 3)) goto error;
- SKIP(parser);
- SKIP_LINE(parser);
- leading_blanks = 1;
- break;
- }
-
- /* Check for an escape sequence. */
-
- else if (!single && CHECK(parser->buffer, '\\'))
- {
- size_t code_length = 0;
-
- if (!STRING_EXTEND(parser, string)) goto error;
-
- /* Check the escape character. */
-
- switch (parser->buffer.pointer[1])
- {
- case '0':
- *(string.pointer++) = '\0';
- break;
-
- case 'a':
- *(string.pointer++) = '\x07';
- break;
-
- case 'b':
- *(string.pointer++) = '\x08';
- break;
-
- case 't':
- case '\t':
- *(string.pointer++) = '\x09';
- break;
-
- case 'n':
- *(string.pointer++) = '\x0A';
- break;
-
- case 'v':
- *(string.pointer++) = '\x0B';
- break;
-
- case 'f':
- *(string.pointer++) = '\x0C';
- break;
-
- case 'r':
- *(string.pointer++) = '\x0D';
- break;
-
- case 'e':
- *(string.pointer++) = '\x1B';
- break;
-
- case ' ':
- *(string.pointer++) = '\x20';
- break;
-
- case '"':
- *(string.pointer++) = '"';
- break;
-
- case '\'':
- *(string.pointer++) = '\'';
- break;
-
- case '\\':
- *(string.pointer++) = '\\';
- break;
-
- case 'N': /* NEL (#x85) */
- *(string.pointer++) = '\xC2';
- *(string.pointer++) = '\x85';
- break;
-
- case '_': /* #xA0 */
- *(string.pointer++) = '\xC2';
- *(string.pointer++) = '\xA0';
- break;
-
- case 'L': /* LS (#x2028) */
- *(string.pointer++) = '\xE2';
- *(string.pointer++) = '\x80';
- *(string.pointer++) = '\xA8';
- break;
-
- case 'P': /* PS (#x2029) */
- *(string.pointer++) = '\xE2';
- *(string.pointer++) = '\x80';
- *(string.pointer++) = '\xA9';
- break;
-
- case 'x':
- code_length = 2;
- break;
-
- case 'u':
- code_length = 4;
- break;
-
- case 'U':
- code_length = 8;
- break;
-
- default:
- yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar",
- start_mark, "found unknown escape character");
- goto error;
- }
-
- SKIP(parser);
- SKIP(parser);
-
- /* Consume an arbitrary escape code. */
-
- if (code_length)
- {
- unsigned int value = 0;
- size_t k;
-
- /* Scan the character value. */
-
- if (!CACHE(parser, code_length)) goto error;
-
- for (k = 0; k < code_length; k ++) {
- if (!IS_HEX_AT(parser->buffer, k)) {
- yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar",
- start_mark, "did not find expected hexdecimal number");
- goto error;
- }
- value = (value << 4) + AS_HEX_AT(parser->buffer, k);
- }
-
- /* Check the value and write the character. */
-
- if ((value >= 0xD800 && value <= 0xDFFF) || value > 0x10FFFF) {
- yaml_parser_set_scanner_error(parser, "while parsing a quoted scalar",
- start_mark, "found invalid Unicode character escape code");
- goto error;
- }
-
- if (value <= 0x7F) {
- *(string.pointer++) = value;
- }
- else if (value <= 0x7FF) {
- *(string.pointer++) = 0xC0 + (value >> 6);
- *(string.pointer++) = 0x80 + (value & 0x3F);
- }
- else if (value <= 0xFFFF) {
- *(string.pointer++) = 0xE0 + (value >> 12);
- *(string.pointer++) = 0x80 + ((value >> 6) & 0x3F);
- *(string.pointer++) = 0x80 + (value & 0x3F);
- }
- else {
- *(string.pointer++) = 0xF0 + (value >> 18);
- *(string.pointer++) = 0x80 + ((value >> 12) & 0x3F);
- *(string.pointer++) = 0x80 + ((value >> 6) & 0x3F);
- *(string.pointer++) = 0x80 + (value & 0x3F);
- }
-
- /* Advance the pointer. */
-
- for (k = 0; k < code_length; k ++) {
- SKIP(parser);
- }
- }
- }
-
- else
- {
- /* It is a non-escaped non-blank character. */
-
- if (!READ(parser, string)) goto error;
- }
-
- if (!CACHE(parser, 2)) goto error;
- }
-
- /* Check if we are at the end of the scalar. */
-
- if (CHECK(parser->buffer, single ? '\'' : '"'))
- break;
-
- /* Consume blank characters. */
-
- if (!CACHE(parser, 1)) goto error;
-
- while (IS_BLANK(parser->buffer) || IS_BREAK(parser->buffer))
- {
- if (IS_BLANK(parser->buffer))
- {
- /* Consume a space or a tab character. */
-
- if (!leading_blanks) {
- if (!READ(parser, whitespaces)) goto error;
- }
- else {
- SKIP(parser);
- }
- }
- else
- {
- if (!CACHE(parser, 2)) goto error;
-
- /* Check if it is a first line break. */
-
- if (!leading_blanks)
- {
- CLEAR(parser, whitespaces);
- if (!READ_LINE(parser, leading_break)) goto error;
- leading_blanks = 1;
- }
- else
- {
- if (!READ_LINE(parser, trailing_breaks)) goto error;
- }
- }
- if (!CACHE(parser, 1)) goto error;
- }
-
- /* Join the whitespaces or fold line breaks. */
-
- if (leading_blanks)
- {
- /* Do we need to fold line breaks? */
-
- if (leading_break.start[0] == '\n') {
- if (trailing_breaks.start[0] == '\0') {
- if (!STRING_EXTEND(parser, string)) goto error;
- *(string.pointer++) = ' ';
- }
- else {
- if (!JOIN(parser, string, trailing_breaks)) goto error;
- CLEAR(parser, trailing_breaks);
- }
- CLEAR(parser, leading_break);
- }
- else {
- if (!JOIN(parser, string, leading_break)) goto error;
- if (!JOIN(parser, string, trailing_breaks)) goto error;
- CLEAR(parser, leading_break);
- CLEAR(parser, trailing_breaks);
- }
- }
- else
- {
- if (!JOIN(parser, string, whitespaces)) goto error;
- CLEAR(parser, whitespaces);
- }
- }
-
- /* Eat the right quote. */
-
- SKIP(parser);
-
- end_mark = parser->mark;
-
- /* Create a token. */
-
- SCALAR_TOKEN_INIT(*token, string.start, string.pointer-string.start,
- single ? YAML_SINGLE_QUOTED_SCALAR_STYLE : YAML_DOUBLE_QUOTED_SCALAR_STYLE,
- start_mark, end_mark);
-
- STRING_DEL(parser, leading_break);
- STRING_DEL(parser, trailing_breaks);
- STRING_DEL(parser, whitespaces);
-
- return 1;
-
-error:
- STRING_DEL(parser, string);
- STRING_DEL(parser, leading_break);
- STRING_DEL(parser, trailing_breaks);
- STRING_DEL(parser, whitespaces);
-
- return 0;
-}
-
-/*
- * Scan a plain scalar.
- */
-
-static int
-yaml_parser_scan_plain_scalar(yaml_parser_t *parser, yaml_token_t *token)
-{
- yaml_mark_t start_mark;
- yaml_mark_t end_mark;
- yaml_string_t string = NULL_STRING;
- yaml_string_t leading_break = NULL_STRING;
- yaml_string_t trailing_breaks = NULL_STRING;
- yaml_string_t whitespaces = NULL_STRING;
- int leading_blanks = 0;
- int indent = parser->indent+1;
-
- if (!STRING_INIT(parser, string, INITIAL_STRING_SIZE)) goto error;
- if (!STRING_INIT(parser, leading_break, INITIAL_STRING_SIZE)) goto error;
- if (!STRING_INIT(parser, trailing_breaks, INITIAL_STRING_SIZE)) goto error;
- if (!STRING_INIT(parser, whitespaces, INITIAL_STRING_SIZE)) goto error;
-
- start_mark = end_mark = parser->mark;
-
- /* Consume the content of the plain scalar. */
-
- while (1)
- {
- /* Check for a document indicator. */
-
- if (!CACHE(parser, 4)) goto error;
-
- if (parser->mark.column == 0 &&
- ((CHECK_AT(parser->buffer, '-', 0) &&
- CHECK_AT(parser->buffer, '-', 1) &&
- CHECK_AT(parser->buffer, '-', 2)) ||
- (CHECK_AT(parser->buffer, '.', 0) &&
- CHECK_AT(parser->buffer, '.', 1) &&
- CHECK_AT(parser->buffer, '.', 2))) &&
- IS_BLANKZ_AT(parser->buffer, 3)) break;
-
- /* Check for a comment. */
-
- if (CHECK(parser->buffer, '#'))
- break;
-
- /* Consume non-blank characters. */
-
- while (!IS_BLANKZ(parser->buffer))
- {
- /* Check for 'x:x' in the flow context. TODO: Fix the test "spec-08-13". */
-
- if (parser->flow_level
- && CHECK(parser->buffer, ':')
- && !IS_BLANKZ_AT(parser->buffer, 1)) {
- yaml_parser_set_scanner_error(parser, "while scanning a plain scalar",
- start_mark, "found unexpected ':'");
- goto error;
- }
-
- /* Check for indicators that may end a plain scalar. */
-
- if ((CHECK(parser->buffer, ':') && IS_BLANKZ_AT(parser->buffer, 1))
- || (parser->flow_level &&
- (CHECK(parser->buffer, ',') || CHECK(parser->buffer, ':')
- || CHECK(parser->buffer, '?') || CHECK(parser->buffer, '[')
- || CHECK(parser->buffer, ']') || CHECK(parser->buffer, '{')
- || CHECK(parser->buffer, '}'))))
- break;
-
- /* Check if we need to join whitespaces and breaks. */
-
- if (leading_blanks || whitespaces.start != whitespaces.pointer)
- {
- if (leading_blanks)
- {
- /* Do we need to fold line breaks? */
-
- if (leading_break.start[0] == '\n') {
- if (trailing_breaks.start[0] == '\0') {
- if (!STRING_EXTEND(parser, string)) goto error;
- *(string.pointer++) = ' ';
- }
- else {
- if (!JOIN(parser, string, trailing_breaks)) goto error;
- CLEAR(parser, trailing_breaks);
- }
- CLEAR(parser, leading_break);
- }
- else {
- if (!JOIN(parser, string, leading_break)) goto error;
- if (!JOIN(parser, string, trailing_breaks)) goto error;
- CLEAR(parser, leading_break);
- CLEAR(parser, trailing_breaks);
- }
-
- leading_blanks = 0;
- }
- else
- {
- if (!JOIN(parser, string, whitespaces)) goto error;
- CLEAR(parser, whitespaces);
- }
- }
-
- /* Copy the character. */
-
- if (!READ(parser, string)) goto error;
-
- end_mark = parser->mark;
-
- if (!CACHE(parser, 2)) goto error;
- }
-
- /* Is it the end? */
-
- if (!(IS_BLANK(parser->buffer) || IS_BREAK(parser->buffer)))
- break;
-
- /* Consume blank characters. */
-
- if (!CACHE(parser, 1)) goto error;
-
- while (IS_BLANK(parser->buffer) || IS_BREAK(parser->buffer))
- {
- if (IS_BLANK(parser->buffer))
- {
- /* Check for tab character that abuse intendation. */
-
- if (leading_blanks && (int)parser->mark.column < indent
- && IS_TAB(parser->buffer)) {
- yaml_parser_set_scanner_error(parser, "while scanning a plain scalar",
- start_mark, "found a tab character that violate intendation");
- goto error;
- }
-
- /* Consume a space or a tab character. */
-
- if (!leading_blanks) {
- if (!READ(parser, whitespaces)) goto error;
- }
- else {
- SKIP(parser);
- }
- }
- else
- {
- if (!CACHE(parser, 2)) goto error;
-
- /* Check if it is a first line break. */
-
- if (!leading_blanks)
- {
- CLEAR(parser, whitespaces);
- if (!READ_LINE(parser, leading_break)) goto error;
- leading_blanks = 1;
- }
- else
- {
- if (!READ_LINE(parser, trailing_breaks)) goto error;
- }
- }
- if (!CACHE(parser, 1)) goto error;
- }
-
- /* Check intendation level. */
-
- if (!parser->flow_level && (int)parser->mark.column < indent)
- break;
- }
-
- /* Create a token. */
-
- SCALAR_TOKEN_INIT(*token, string.start, string.pointer-string.start,
- YAML_PLAIN_SCALAR_STYLE, start_mark, end_mark);
-
- /* Note that we change the 'simple_key_allowed' flag. */
-
- if (leading_blanks) {
- parser->simple_key_allowed = 1;
- }
-
- STRING_DEL(parser, leading_break);
- STRING_DEL(parser, trailing_breaks);
- STRING_DEL(parser, whitespaces);
-
- return 1;
-
-error:
- STRING_DEL(parser, string);
- STRING_DEL(parser, leading_break);
- STRING_DEL(parser, trailing_breaks);
- STRING_DEL(parser, whitespaces);
-
- return 0;
-}
-
diff --git a/ext/psych/yaml/writer.c b/ext/psych/yaml/writer.c
deleted file mode 100644
index 5d57f392f1..0000000000
--- a/ext/psych/yaml/writer.c
+++ /dev/null
@@ -1,141 +0,0 @@
-
-#include "yaml_private.h"
-
-/*
- * Declarations.
- */
-
-static int
-yaml_emitter_set_writer_error(yaml_emitter_t *emitter, const char *problem);
-
-YAML_DECLARE(int)
-yaml_emitter_flush(yaml_emitter_t *emitter);
-
-/*
- * Set the writer error and return 0.
- */
-
-static int
-yaml_emitter_set_writer_error(yaml_emitter_t *emitter, const char *problem)
-{
- emitter->error = YAML_WRITER_ERROR;
- emitter->problem = problem;
-
- return 0;
-}
-
-/*
- * Flush the output buffer.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_flush(yaml_emitter_t *emitter)
-{
- int low, high;
-
- assert(emitter); /* Non-NULL emitter object is expected. */
- assert(emitter->write_handler); /* Write handler must be set. */
- assert(emitter->encoding); /* Output encoding must be set. */
-
- emitter->buffer.last = emitter->buffer.pointer;
- emitter->buffer.pointer = emitter->buffer.start;
-
- /* Check if the buffer is empty. */
-
- if (emitter->buffer.start == emitter->buffer.last) {
- return 1;
- }
-
- /* If the output encoding is UTF-8, we don't need to recode the buffer. */
-
- if (emitter->encoding == YAML_UTF8_ENCODING)
- {
- if (emitter->write_handler(emitter->write_handler_data,
- emitter->buffer.start,
- emitter->buffer.last - emitter->buffer.start)) {
- emitter->buffer.last = emitter->buffer.start;
- emitter->buffer.pointer = emitter->buffer.start;
- return 1;
- }
- else {
- return yaml_emitter_set_writer_error(emitter, "write error");
- }
- }
-
- /* Recode the buffer into the raw buffer. */
-
- low = (emitter->encoding == YAML_UTF16LE_ENCODING ? 0 : 1);
- high = (emitter->encoding == YAML_UTF16LE_ENCODING ? 1 : 0);
-
- while (emitter->buffer.pointer != emitter->buffer.last)
- {
- unsigned char octet;
- unsigned int width;
- unsigned int value;
- size_t k;
-
- /*
- * See the "reader.c" code for more details on UTF-8 encoding. Note
- * that we assume that the buffer contains a valid UTF-8 sequence.
- */
-
- /* Read the next UTF-8 character. */
-
- octet = emitter->buffer.pointer[0];
-
- width = (octet & 0x80) == 0x00 ? 1 :
- (octet & 0xE0) == 0xC0 ? 2 :
- (octet & 0xF0) == 0xE0 ? 3 :
- (octet & 0xF8) == 0xF0 ? 4 : 0;
-
- value = (octet & 0x80) == 0x00 ? octet & 0x7F :
- (octet & 0xE0) == 0xC0 ? octet & 0x1F :
- (octet & 0xF0) == 0xE0 ? octet & 0x0F :
- (octet & 0xF8) == 0xF0 ? octet & 0x07 : 0;
-
- for (k = 1; k < width; k ++) {
- octet = emitter->buffer.pointer[k];
- value = (value << 6) + (octet & 0x3F);
- }
-
- emitter->buffer.pointer += width;
-
- /* Write the character. */
-
- if (value < 0x10000)
- {
- emitter->raw_buffer.last[high] = value >> 8;
- emitter->raw_buffer.last[low] = value & 0xFF;
-
- emitter->raw_buffer.last += 2;
- }
- else
- {
- /* Write the character using a surrogate pair (check "reader.c"). */
-
- value -= 0x10000;
- emitter->raw_buffer.last[high] = 0xD8 + (value >> 18);
- emitter->raw_buffer.last[low] = (value >> 10) & 0xFF;
- emitter->raw_buffer.last[high+2] = 0xDC + ((value >> 8) & 0xFF);
- emitter->raw_buffer.last[low+2] = value & 0xFF;
-
- emitter->raw_buffer.last += 4;
- }
- }
-
- /* Write the raw buffer. */
-
- if (emitter->write_handler(emitter->write_handler_data,
- emitter->raw_buffer.start,
- emitter->raw_buffer.last - emitter->raw_buffer.start)) {
- emitter->buffer.last = emitter->buffer.start;
- emitter->buffer.pointer = emitter->buffer.start;
- emitter->raw_buffer.last = emitter->raw_buffer.start;
- emitter->raw_buffer.pointer = emitter->raw_buffer.start;
- return 1;
- }
- else {
- return yaml_emitter_set_writer_error(emitter, "write error");
- }
-}
-
diff --git a/ext/psych/yaml/yaml.h b/ext/psych/yaml/yaml.h
deleted file mode 100644
index acd72ad3a3..0000000000
--- a/ext/psych/yaml/yaml.h
+++ /dev/null
@@ -1,1971 +0,0 @@
-/**
- * @file yaml.h
- * @brief Public interface for libyaml.
- *
- * Include the header file with the code:
- * @code
- * #include <yaml.h>
- * @endcode
- */
-
-#ifndef YAML_H
-#define YAML_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-/**
- * @defgroup export Export Definitions
- * @{
- */
-
-/** The public API declaration. */
-
-#ifdef _WIN32
-# if defined(YAML_DECLARE_STATIC)
-# define YAML_DECLARE(type) type
-# elif defined(YAML_DECLARE_EXPORT)
-# define YAML_DECLARE(type) __declspec(dllexport) type
-# else
-# define YAML_DECLARE(type) __declspec(dllimport) type
-# endif
-#else
-# define YAML_DECLARE(type) type
-#endif
-
-/** @} */
-
-/**
- * @defgroup version Version Information
- * @{
- */
-
-/**
- * Get the library version as a string.
- *
- * @returns The function returns the pointer to a static string of the form
- * @c "X.Y.Z", where @c X is the major version number, @c Y is a minor version
- * number, and @c Z is the patch version number.
- */
-
-YAML_DECLARE(const char *)
-yaml_get_version_string(void);
-
-/**
- * Get the library version numbers.
- *
- * @param[out] major Major version number.
- * @param[out] minor Minor version number.
- * @param[out] patch Patch version number.
- */
-
-YAML_DECLARE(void)
-yaml_get_version(int *major, int *minor, int *patch);
-
-/** @} */
-
-/**
- * @defgroup basic Basic Types
- * @{
- */
-
-/** The character type (UTF-8 octet). */
-typedef unsigned char yaml_char_t;
-
-/** The version directive data. */
-typedef struct yaml_version_directive_s {
- /** The major version number. */
- int major;
- /** The minor version number. */
- int minor;
-} yaml_version_directive_t;
-
-/** The tag directive data. */
-typedef struct yaml_tag_directive_s {
- /** The tag handle. */
- yaml_char_t *handle;
- /** The tag prefix. */
- yaml_char_t *prefix;
-} yaml_tag_directive_t;
-
-/** The stream encoding. */
-typedef enum yaml_encoding_e {
- /** Let the parser choose the encoding. */
- YAML_ANY_ENCODING,
- /** The default UTF-8 encoding. */
- YAML_UTF8_ENCODING,
- /** The UTF-16-LE encoding with BOM. */
- YAML_UTF16LE_ENCODING,
- /** The UTF-16-BE encoding with BOM. */
- YAML_UTF16BE_ENCODING
-} yaml_encoding_t;
-
-/** Line break types. */
-
-typedef enum yaml_break_e {
- /** Let the parser choose the break type. */
- YAML_ANY_BREAK,
- /** Use CR for line breaks (Mac style). */
- YAML_CR_BREAK,
- /** Use LN for line breaks (Unix style). */
- YAML_LN_BREAK,
- /** Use CR LN for line breaks (DOS style). */
- YAML_CRLN_BREAK
-} yaml_break_t;
-
-/** Many bad things could happen with the parser and emitter. */
-typedef enum yaml_error_type_e {
- /** No error is produced. */
- YAML_NO_ERROR,
-
- /** Cannot allocate or reallocate a block of memory. */
- YAML_MEMORY_ERROR,
-
- /** Cannot read or decode the input stream. */
- YAML_READER_ERROR,
- /** Cannot scan the input stream. */
- YAML_SCANNER_ERROR,
- /** Cannot parse the input stream. */
- YAML_PARSER_ERROR,
- /** Cannot compose a YAML document. */
- YAML_COMPOSER_ERROR,
-
- /** Cannot write to the output stream. */
- YAML_WRITER_ERROR,
- /** Cannot emit a YAML stream. */
- YAML_EMITTER_ERROR
-} yaml_error_type_t;
-
-/** The pointer position. */
-typedef struct yaml_mark_s {
- /** The position index. */
- size_t index;
-
- /** The position line. */
- size_t line;
-
- /** The position column. */
- size_t column;
-} yaml_mark_t;
-
-/** @} */
-
-/**
- * @defgroup styles Node Styles
- * @{
- */
-
-/** Scalar styles. */
-typedef enum yaml_scalar_style_e {
- /** Let the emitter choose the style. */
- YAML_ANY_SCALAR_STYLE,
-
- /** The plain scalar style. */
- YAML_PLAIN_SCALAR_STYLE,
-
- /** The single-quoted scalar style. */
- YAML_SINGLE_QUOTED_SCALAR_STYLE,
- /** The double-quoted scalar style. */
- YAML_DOUBLE_QUOTED_SCALAR_STYLE,
-
- /** The literal scalar style. */
- YAML_LITERAL_SCALAR_STYLE,
- /** The folded scalar style. */
- YAML_FOLDED_SCALAR_STYLE
-} yaml_scalar_style_t;
-
-/** Sequence styles. */
-typedef enum yaml_sequence_style_e {
- /** Let the emitter choose the style. */
- YAML_ANY_SEQUENCE_STYLE,
-
- /** The block sequence style. */
- YAML_BLOCK_SEQUENCE_STYLE,
- /** The flow sequence style. */
- YAML_FLOW_SEQUENCE_STYLE
-} yaml_sequence_style_t;
-
-/** Mapping styles. */
-typedef enum yaml_mapping_style_e {
- /** Let the emitter choose the style. */
- YAML_ANY_MAPPING_STYLE,
-
- /** The block mapping style. */
- YAML_BLOCK_MAPPING_STYLE,
- /** The flow mapping style. */
- YAML_FLOW_MAPPING_STYLE
-/* YAML_FLOW_SET_MAPPING_STYLE */
-} yaml_mapping_style_t;
-
-/** @} */
-
-/**
- * @defgroup tokens Tokens
- * @{
- */
-
-/** Token types. */
-typedef enum yaml_token_type_e {
- /** An empty token. */
- YAML_NO_TOKEN,
-
- /** A STREAM-START token. */
- YAML_STREAM_START_TOKEN,
- /** A STREAM-END token. */
- YAML_STREAM_END_TOKEN,
-
- /** A VERSION-DIRECTIVE token. */
- YAML_VERSION_DIRECTIVE_TOKEN,
- /** A TAG-DIRECTIVE token. */
- YAML_TAG_DIRECTIVE_TOKEN,
- /** A DOCUMENT-START token. */
- YAML_DOCUMENT_START_TOKEN,
- /** A DOCUMENT-END token. */
- YAML_DOCUMENT_END_TOKEN,
-
- /** A BLOCK-SEQUENCE-START token. */
- YAML_BLOCK_SEQUENCE_START_TOKEN,
- /** A BLOCK-SEQUENCE-END token. */
- YAML_BLOCK_MAPPING_START_TOKEN,
- /** A BLOCK-END token. */
- YAML_BLOCK_END_TOKEN,
-
- /** A FLOW-SEQUENCE-START token. */
- YAML_FLOW_SEQUENCE_START_TOKEN,
- /** A FLOW-SEQUENCE-END token. */
- YAML_FLOW_SEQUENCE_END_TOKEN,
- /** A FLOW-MAPPING-START token. */
- YAML_FLOW_MAPPING_START_TOKEN,
- /** A FLOW-MAPPING-END token. */
- YAML_FLOW_MAPPING_END_TOKEN,
-
- /** A BLOCK-ENTRY token. */
- YAML_BLOCK_ENTRY_TOKEN,
- /** A FLOW-ENTRY token. */
- YAML_FLOW_ENTRY_TOKEN,
- /** A KEY token. */
- YAML_KEY_TOKEN,
- /** A VALUE token. */
- YAML_VALUE_TOKEN,
-
- /** An ALIAS token. */
- YAML_ALIAS_TOKEN,
- /** An ANCHOR token. */
- YAML_ANCHOR_TOKEN,
- /** A TAG token. */
- YAML_TAG_TOKEN,
- /** A SCALAR token. */
- YAML_SCALAR_TOKEN
-} yaml_token_type_t;
-
-/** The token structure. */
-typedef struct yaml_token_s {
-
- /** The token type. */
- yaml_token_type_t type;
-
- /** The token data. */
- union {
-
- /** The stream start (for @c YAML_STREAM_START_TOKEN). */
- struct {
- /** The stream encoding. */
- yaml_encoding_t encoding;
- } stream_start;
-
- /** The alias (for @c YAML_ALIAS_TOKEN). */
- struct {
- /** The alias value. */
- yaml_char_t *value;
- } alias;
-
- /** The anchor (for @c YAML_ANCHOR_TOKEN). */
- struct {
- /** The anchor value. */
- yaml_char_t *value;
- } anchor;
-
- /** The tag (for @c YAML_TAG_TOKEN). */
- struct {
- /** The tag handle. */
- yaml_char_t *handle;
- /** The tag suffix. */
- yaml_char_t *suffix;
- } tag;
-
- /** The scalar value (for @c YAML_SCALAR_TOKEN). */
- struct {
- /** The scalar value. */
- yaml_char_t *value;
- /** The length of the scalar value. */
- size_t length;
- /** The scalar style. */
- yaml_scalar_style_t style;
- } scalar;
-
- /** The version directive (for @c YAML_VERSION_DIRECTIVE_TOKEN). */
- struct {
- /** The major version number. */
- int major;
- /** The minor version number. */
- int minor;
- } version_directive;
-
- /** The tag directive (for @c YAML_TAG_DIRECTIVE_TOKEN). */
- struct {
- /** The tag handle. */
- yaml_char_t *handle;
- /** The tag prefix. */
- yaml_char_t *prefix;
- } tag_directive;
-
- } data;
-
- /** The beginning of the token. */
- yaml_mark_t start_mark;
- /** The end of the token. */
- yaml_mark_t end_mark;
-
-} yaml_token_t;
-
-/**
- * Free any memory allocated for a token object.
- *
- * @param[in,out] token A token object.
- */
-
-YAML_DECLARE(void)
-yaml_token_delete(yaml_token_t *token);
-
-/** @} */
-
-/**
- * @defgroup events Events
- * @{
- */
-
-/** Event types. */
-typedef enum yaml_event_type_e {
- /** An empty event. */
- YAML_NO_EVENT,
-
- /** A STREAM-START event. */
- YAML_STREAM_START_EVENT,
- /** A STREAM-END event. */
- YAML_STREAM_END_EVENT,
-
- /** A DOCUMENT-START event. */
- YAML_DOCUMENT_START_EVENT,
- /** A DOCUMENT-END event. */
- YAML_DOCUMENT_END_EVENT,
-
- /** An ALIAS event. */
- YAML_ALIAS_EVENT,
- /** A SCALAR event. */
- YAML_SCALAR_EVENT,
-
- /** A SEQUENCE-START event. */
- YAML_SEQUENCE_START_EVENT,
- /** A SEQUENCE-END event. */
- YAML_SEQUENCE_END_EVENT,
-
- /** A MAPPING-START event. */
- YAML_MAPPING_START_EVENT,
- /** A MAPPING-END event. */
- YAML_MAPPING_END_EVENT
-} yaml_event_type_t;
-
-/** The event structure. */
-typedef struct yaml_event_s {
-
- /** The event type. */
- yaml_event_type_t type;
-
- /** The event data. */
- union {
-
- /** The stream parameters (for @c YAML_STREAM_START_EVENT). */
- struct {
- /** The document encoding. */
- yaml_encoding_t encoding;
- } stream_start;
-
- /** The document parameters (for @c YAML_DOCUMENT_START_EVENT). */
- struct {
- /** The version directive. */
- yaml_version_directive_t *version_directive;
-
- /** The list of tag directives. */
- struct {
- /** The beginning of the tag directives list. */
- yaml_tag_directive_t *start;
- /** The end of the tag directives list. */
- yaml_tag_directive_t *end;
- } tag_directives;
-
- /** Is the document indicator implicit? */
- int implicit;
- } document_start;
-
- /** The document end parameters (for @c YAML_DOCUMENT_END_EVENT). */
- struct {
- /** Is the document end indicator implicit? */
- int implicit;
- } document_end;
-
- /** The alias parameters (for @c YAML_ALIAS_EVENT). */
- struct {
- /** The anchor. */
- yaml_char_t *anchor;
- } alias;
-
- /** The scalar parameters (for @c YAML_SCALAR_EVENT). */
- struct {
- /** The anchor. */
- yaml_char_t *anchor;
- /** The tag. */
- yaml_char_t *tag;
- /** The scalar value. */
- yaml_char_t *value;
- /** The length of the scalar value. */
- size_t length;
- /** Is the tag optional for the plain style? */
- int plain_implicit;
- /** Is the tag optional for any non-plain style? */
- int quoted_implicit;
- /** The scalar style. */
- yaml_scalar_style_t style;
- } scalar;
-
- /** The sequence parameters (for @c YAML_SEQUENCE_START_EVENT). */
- struct {
- /** The anchor. */
- yaml_char_t *anchor;
- /** The tag. */
- yaml_char_t *tag;
- /** Is the tag optional? */
- int implicit;
- /** The sequence style. */
- yaml_sequence_style_t style;
- } sequence_start;
-
- /** The mapping parameters (for @c YAML_MAPPING_START_EVENT). */
- struct {
- /** The anchor. */
- yaml_char_t *anchor;
- /** The tag. */
- yaml_char_t *tag;
- /** Is the tag optional? */
- int implicit;
- /** The mapping style. */
- yaml_mapping_style_t style;
- } mapping_start;
-
- } data;
-
- /** The beginning of the event. */
- yaml_mark_t start_mark;
- /** The end of the event. */
- yaml_mark_t end_mark;
-
-} yaml_event_t;
-
-/**
- * Create the STREAM-START event.
- *
- * @param[out] event An empty event object.
- * @param[in] encoding The stream encoding.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_stream_start_event_initialize(yaml_event_t *event,
- yaml_encoding_t encoding);
-
-/**
- * Create the STREAM-END event.
- *
- * @param[out] event An empty event object.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_stream_end_event_initialize(yaml_event_t *event);
-
-/**
- * Create the DOCUMENT-START event.
- *
- * The @a implicit argument is considered as a stylistic parameter and may be
- * ignored by the emitter.
- *
- * @param[out] event An empty event object.
- * @param[in] version_directive The %YAML directive value or
- * @c NULL.
- * @param[in] tag_directives_start The beginning of the %TAG
- * directives list.
- * @param[in] tag_directives_end The end of the %TAG directives
- * list.
- * @param[in] implicit If the document start indicator is
- * implicit.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_document_start_event_initialize(yaml_event_t *event,
- yaml_version_directive_t *version_directive,
- yaml_tag_directive_t *tag_directives_start,
- yaml_tag_directive_t *tag_directives_end,
- int implicit);
-
-/**
- * Create the DOCUMENT-END event.
- *
- * The @a implicit argument is considered as a stylistic parameter and may be
- * ignored by the emitter.
- *
- * @param[out] event An empty event object.
- * @param[in] implicit If the document end indicator is implicit.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_document_end_event_initialize(yaml_event_t *event, int implicit);
-
-/**
- * Create an ALIAS event.
- *
- * @param[out] event An empty event object.
- * @param[in] anchor The anchor value.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_alias_event_initialize(yaml_event_t *event, yaml_char_t *anchor);
-
-/**
- * Create a SCALAR event.
- *
- * The @a style argument may be ignored by the emitter.
- *
- * Either the @a tag attribute or one of the @a plain_implicit and
- * @a quoted_implicit flags must be set.
- *
- * @param[out] event An empty event object.
- * @param[in] anchor The scalar anchor or @c NULL.
- * @param[in] tag The scalar tag or @c NULL.
- * @param[in] value The scalar value.
- * @param[in] length The length of the scalar value.
- * @param[in] plain_implicit If the tag may be omitted for the plain
- * style.
- * @param[in] quoted_implicit If the tag may be omitted for any
- * non-plain style.
- * @param[in] style The scalar style.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_scalar_event_initialize(yaml_event_t *event,
- yaml_char_t *anchor, yaml_char_t *tag,
- yaml_char_t *value, int length,
- int plain_implicit, int quoted_implicit,
- yaml_scalar_style_t style);
-
-/**
- * Create a SEQUENCE-START event.
- *
- * The @a style argument may be ignored by the emitter.
- *
- * Either the @a tag attribute or the @a implicit flag must be set.
- *
- * @param[out] event An empty event object.
- * @param[in] anchor The sequence anchor or @c NULL.
- * @param[in] tag The sequence tag or @c NULL.
- * @param[in] implicit If the tag may be omitted.
- * @param[in] style The sequence style.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_sequence_start_event_initialize(yaml_event_t *event,
- yaml_char_t *anchor, yaml_char_t *tag, int implicit,
- yaml_sequence_style_t style);
-
-/**
- * Create a SEQUENCE-END event.
- *
- * @param[out] event An empty event object.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_sequence_end_event_initialize(yaml_event_t *event);
-
-/**
- * Create a MAPPING-START event.
- *
- * The @a style argument may be ignored by the emitter.
- *
- * Either the @a tag attribute or the @a implicit flag must be set.
- *
- * @param[out] event An empty event object.
- * @param[in] anchor The mapping anchor or @c NULL.
- * @param[in] tag The mapping tag or @c NULL.
- * @param[in] implicit If the tag may be omitted.
- * @param[in] style The mapping style.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_mapping_start_event_initialize(yaml_event_t *event,
- yaml_char_t *anchor, yaml_char_t *tag, int implicit,
- yaml_mapping_style_t style);
-
-/**
- * Create a MAPPING-END event.
- *
- * @param[out] event An empty event object.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_mapping_end_event_initialize(yaml_event_t *event);
-
-/**
- * Free any memory allocated for an event object.
- *
- * @param[in,out] event An event object.
- */
-
-YAML_DECLARE(void)
-yaml_event_delete(yaml_event_t *event);
-
-/** @} */
-
-/**
- * @defgroup nodes Nodes
- * @{
- */
-
-/** The tag @c !!null with the only possible value: @c null. */
-#define YAML_NULL_TAG "tag:yaml.org,2002:null"
-/** The tag @c !!bool with the values: @c true and @c falce. */
-#define YAML_BOOL_TAG "tag:yaml.org,2002:bool"
-/** The tag @c !!str for string values. */
-#define YAML_STR_TAG "tag:yaml.org,2002:str"
-/** The tag @c !!int for integer values. */
-#define YAML_INT_TAG "tag:yaml.org,2002:int"
-/** The tag @c !!float for float values. */
-#define YAML_FLOAT_TAG "tag:yaml.org,2002:float"
-/** The tag @c !!timestamp for date and time values. */
-#define YAML_TIMESTAMP_TAG "tag:yaml.org,2002:timestamp"
-
-/** The tag @c !!seq is used to denote sequences. */
-#define YAML_SEQ_TAG "tag:yaml.org,2002:seq"
-/** The tag @c !!map is used to denote mapping. */
-#define YAML_MAP_TAG "tag:yaml.org,2002:map"
-
-/** The default scalar tag is @c !!str. */
-#define YAML_DEFAULT_SCALAR_TAG YAML_STR_TAG
-/** The default sequence tag is @c !!seq. */
-#define YAML_DEFAULT_SEQUENCE_TAG YAML_SEQ_TAG
-/** The default mapping tag is @c !!map. */
-#define YAML_DEFAULT_MAPPING_TAG YAML_MAP_TAG
-
-/** Node types. */
-typedef enum yaml_node_type_e {
- /** An empty node. */
- YAML_NO_NODE,
-
- /** A scalar node. */
- YAML_SCALAR_NODE,
- /** A sequence node. */
- YAML_SEQUENCE_NODE,
- /** A mapping node. */
- YAML_MAPPING_NODE
-} yaml_node_type_t;
-
-/** The forward definition of a document node structure. */
-typedef struct yaml_node_s yaml_node_t;
-
-/** An element of a sequence node. */
-typedef int yaml_node_item_t;
-
-/** An element of a mapping node. */
-typedef struct yaml_node_pair_s {
- /** The key of the element. */
- int key;
- /** The value of the element. */
- int value;
-} yaml_node_pair_t;
-
-/** The node structure. */
-struct yaml_node_s {
-
- /** The node type. */
- yaml_node_type_t type;
-
- /** The node tag. */
- yaml_char_t *tag;
-
- /** The node data. */
- union {
-
- /** The scalar parameters (for @c YAML_SCALAR_NODE). */
- struct {
- /** The scalar value. */
- yaml_char_t *value;
- /** The length of the scalar value. */
- size_t length;
- /** The scalar style. */
- yaml_scalar_style_t style;
- } scalar;
-
- /** The sequence parameters (for @c YAML_SEQUENCE_NODE). */
- struct {
- /** The stack of sequence items. */
- struct {
- /** The beginning of the stack. */
- yaml_node_item_t *start;
- /** The end of the stack. */
- yaml_node_item_t *end;
- /** The top of the stack. */
- yaml_node_item_t *top;
- } items;
- /** The sequence style. */
- yaml_sequence_style_t style;
- } sequence;
-
- /** The mapping parameters (for @c YAML_MAPPING_NODE). */
- struct {
- /** The stack of mapping pairs (key, value). */
- struct {
- /** The beginning of the stack. */
- yaml_node_pair_t *start;
- /** The end of the stack. */
- yaml_node_pair_t *end;
- /** The top of the stack. */
- yaml_node_pair_t *top;
- } pairs;
- /** The mapping style. */
- yaml_mapping_style_t style;
- } mapping;
-
- } data;
-
- /** The beginning of the node. */
- yaml_mark_t start_mark;
- /** The end of the node. */
- yaml_mark_t end_mark;
-
-};
-
-/** The document structure. */
-typedef struct yaml_document_s {
-
- /** The document nodes. */
- struct {
- /** The beginning of the stack. */
- yaml_node_t *start;
- /** The end of the stack. */
- yaml_node_t *end;
- /** The top of the stack. */
- yaml_node_t *top;
- } nodes;
-
- /** The version directive. */
- yaml_version_directive_t *version_directive;
-
- /** The list of tag directives. */
- struct {
- /** The beginning of the tag directives list. */
- yaml_tag_directive_t *start;
- /** The end of the tag directives list. */
- yaml_tag_directive_t *end;
- } tag_directives;
-
- /** Is the document start indicator implicit? */
- int start_implicit;
- /** Is the document end indicator implicit? */
- int end_implicit;
-
- /** The beginning of the document. */
- yaml_mark_t start_mark;
- /** The end of the document. */
- yaml_mark_t end_mark;
-
-} yaml_document_t;
-
-/**
- * Create a YAML document.
- *
- * @param[out] document An empty document object.
- * @param[in] version_directive The %YAML directive value or
- * @c NULL.
- * @param[in] tag_directives_start The beginning of the %TAG
- * directives list.
- * @param[in] tag_directives_end The end of the %TAG directives
- * list.
- * @param[in] start_implicit If the document start indicator is
- * implicit.
- * @param[in] end_implicit If the document end indicator is
- * implicit.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_document_initialize(yaml_document_t *document,
- yaml_version_directive_t *version_directive,
- yaml_tag_directive_t *tag_directives_start,
- yaml_tag_directive_t *tag_directives_end,
- int start_implicit, int end_implicit);
-
-/**
- * Delete a YAML document and all its nodes.
- *
- * @param[in,out] document A document object.
- */
-
-YAML_DECLARE(void)
-yaml_document_delete(yaml_document_t *document);
-
-/**
- * Get a node of a YAML document.
- *
- * The pointer returned by this function is valid until any of the functions
- * modifying the documents are called.
- *
- * @param[in] document A document object.
- * @param[in] index The node id.
- *
- * @returns the node objct or @c NULL if @c node_id is out of range.
- */
-
-YAML_DECLARE(yaml_node_t *)
-yaml_document_get_node(yaml_document_t *document, int index);
-
-/**
- * Get the root of a YAML document node.
- *
- * The root object is the first object added to the document.
- *
- * The pointer returned by this function is valid until any of the functions
- * modifying the documents are called.
- *
- * An empty document produced by the parser signifies the end of a YAML
- * stream.
- *
- * @param[in] document A document object.
- *
- * @returns the node object or @c NULL if the document is empty.
- */
-
-YAML_DECLARE(yaml_node_t *)
-yaml_document_get_root_node(yaml_document_t *document);
-
-/**
- * Create a SCALAR node and attach it to the document.
- *
- * The @a style argument may be ignored by the emitter.
- *
- * @param[in,out] document A document object.
- * @param[in] tag The scalar tag.
- * @param[in] value The scalar value.
- * @param[in] length The length of the scalar value.
- * @param[in] style The scalar style.
- *
- * @returns the node id or @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_document_add_scalar(yaml_document_t *document,
- yaml_char_t *tag, yaml_char_t *value, int length,
- yaml_scalar_style_t style);
-
-/**
- * Create a SEQUENCE node and attach it to the document.
- *
- * The @a style argument may be ignored by the emitter.
- *
- * @param[in,out] document A document object.
- * @param[in] tag The sequence tag.
- * @param[in] style The sequence style.
- *
- * @returns the node id or @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_document_add_sequence(yaml_document_t *document,
- yaml_char_t *tag, yaml_sequence_style_t style);
-
-/**
- * Create a MAPPING node and attach it to the document.
- *
- * The @a style argument may be ignored by the emitter.
- *
- * @param[in,out] document A document object.
- * @param[in] tag The sequence tag.
- * @param[in] style The sequence style.
- *
- * @returns the node id or @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_document_add_mapping(yaml_document_t *document,
- yaml_char_t *tag, yaml_mapping_style_t style);
-
-/**
- * Add an item to a SEQUENCE node.
- *
- * @param[in,out] document A document object.
- * @param[in] sequence The sequence node id.
- * @param[in] item The item node id.
-*
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_document_append_sequence_item(yaml_document_t *document,
- int sequence, int item);
-
-/**
- * Add a pair of a key and a value to a MAPPING node.
- *
- * @param[in,out] document A document object.
- * @param[in] mapping The mapping node id.
- * @param[in] key The key node id.
- * @param[in] value The value node id.
-*
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_document_append_mapping_pair(yaml_document_t *document,
- int mapping, int key, int value);
-
-/** @} */
-
-/**
- * @defgroup parser Parser Definitions
- * @{
- */
-
-/**
- * The prototype of a read handler.
- *
- * The read handler is called when the parser needs to read more bytes from the
- * source. The handler should write not more than @a size bytes to the @a
- * buffer. The number of written bytes should be set to the @a length variable.
- *
- * @param[in,out] data A pointer to an application data specified by
- * yaml_parser_set_input().
- * @param[out] buffer The buffer to write the data from the source.
- * @param[in] size The size of the buffer.
- * @param[out] size_read The actual number of bytes read from the source.
- *
- * @returns On success, the handler should return @c 1. If the handler failed,
- * the returned value should be @c 0. On EOF, the handler should set the
- * @a size_read to @c 0 and return @c 1.
- */
-
-typedef int yaml_read_handler_t(void *data, unsigned char *buffer, size_t size,
- size_t *size_read);
-
-/**
- * This structure holds information about a potential simple key.
- */
-
-typedef struct yaml_simple_key_s {
- /** Is a simple key possible? */
- int possible;
-
- /** Is a simple key required? */
- int required;
-
- /** The number of the token. */
- size_t token_number;
-
- /** The position mark. */
- yaml_mark_t mark;
-} yaml_simple_key_t;
-
-/**
- * The states of the parser.
- */
-typedef enum yaml_parser_state_e {
- /** Expect STREAM-START. */
- YAML_PARSE_STREAM_START_STATE,
- /** Expect the beginning of an implicit document. */
- YAML_PARSE_IMPLICIT_DOCUMENT_START_STATE,
- /** Expect DOCUMENT-START. */
- YAML_PARSE_DOCUMENT_START_STATE,
- /** Expect the content of a document. */
- YAML_PARSE_DOCUMENT_CONTENT_STATE,
- /** Expect DOCUMENT-END. */
- YAML_PARSE_DOCUMENT_END_STATE,
- /** Expect a block node. */
- YAML_PARSE_BLOCK_NODE_STATE,
- /** Expect a block node or indentless sequence. */
- YAML_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE,
- /** Expect a flow node. */
- YAML_PARSE_FLOW_NODE_STATE,
- /** Expect the first entry of a block sequence. */
- YAML_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE,
- /** Expect an entry of a block sequence. */
- YAML_PARSE_BLOCK_SEQUENCE_ENTRY_STATE,
- /** Expect an entry of an indentless sequence. */
- YAML_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE,
- /** Expect the first key of a block mapping. */
- YAML_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE,
- /** Expect a block mapping key. */
- YAML_PARSE_BLOCK_MAPPING_KEY_STATE,
- /** Expect a block mapping value. */
- YAML_PARSE_BLOCK_MAPPING_VALUE_STATE,
- /** Expect the first entry of a flow sequence. */
- YAML_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE,
- /** Expect an entry of a flow sequence. */
- YAML_PARSE_FLOW_SEQUENCE_ENTRY_STATE,
- /** Expect a key of an ordered mapping. */
- YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE,
- /** Expect a value of an ordered mapping. */
- YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE,
- /** Expect the and of an ordered mapping entry. */
- YAML_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE,
- /** Expect the first key of a flow mapping. */
- YAML_PARSE_FLOW_MAPPING_FIRST_KEY_STATE,
- /** Expect a key of a flow mapping. */
- YAML_PARSE_FLOW_MAPPING_KEY_STATE,
- /** Expect a value of a flow mapping. */
- YAML_PARSE_FLOW_MAPPING_VALUE_STATE,
- /** Expect an empty value of a flow mapping. */
- YAML_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE,
- /** Expect nothing. */
- YAML_PARSE_END_STATE
-} yaml_parser_state_t;
-
-/**
- * This structure holds aliases data.
- */
-
-typedef struct yaml_alias_data_s {
- /** The anchor. */
- yaml_char_t *anchor;
- /** The node id. */
- int index;
- /** The anchor mark. */
- yaml_mark_t mark;
-} yaml_alias_data_t;
-
-/**
- * The parser structure.
- *
- * All members are internal. Manage the structure using the @c yaml_parser_
- * family of functions.
- */
-
-typedef struct yaml_parser_s {
-
- /**
- * @name Error handling
- * @{
- */
-
- /** Error type. */
- yaml_error_type_t error;
- /** Error description. */
- const char *problem;
- /** The byte about which the problem occured. */
- size_t problem_offset;
- /** The problematic value (@c -1 is none). */
- int problem_value;
- /** The problem position. */
- yaml_mark_t problem_mark;
- /** The error context. */
- const char *context;
- /** The context position. */
- yaml_mark_t context_mark;
-
- /**
- * @}
- */
-
- /**
- * @name Reader stuff
- * @{
- */
-
- /** Read handler. */
- yaml_read_handler_t *read_handler;
-
- /** A pointer for passing to the read handler. */
- void *read_handler_data;
-
- /** Standard (string or file) input data. */
- union {
- /** String input data. */
- struct {
- /** The string start pointer. */
- const unsigned char *start;
- /** The string end pointer. */
- const unsigned char *end;
- /** The string current position. */
- const unsigned char *current;
- } string;
-
- /** File input data. */
- FILE *file;
- } input;
-
- /** EOF flag */
- int eof;
-
- /** The working buffer. */
- struct {
- /** The beginning of the buffer. */
- yaml_char_t *start;
- /** The end of the buffer. */
- yaml_char_t *end;
- /** The current position of the buffer. */
- yaml_char_t *pointer;
- /** The last filled position of the buffer. */
- yaml_char_t *last;
- } buffer;
-
- /* The number of unread characters in the buffer. */
- size_t unread;
-
- /** The raw buffer. */
- struct {
- /** The beginning of the buffer. */
- unsigned char *start;
- /** The end of the buffer. */
- unsigned char *end;
- /** The current position of the buffer. */
- unsigned char *pointer;
- /** The last filled position of the buffer. */
- unsigned char *last;
- } raw_buffer;
-
- /** The input encoding. */
- yaml_encoding_t encoding;
-
- /** The offset of the current position (in bytes). */
- size_t offset;
-
- /** The mark of the current position. */
- yaml_mark_t mark;
-
- /**
- * @}
- */
-
- /**
- * @name Scanner stuff
- * @{
- */
-
- /** Have we started to scan the input stream? */
- int stream_start_produced;
-
- /** Have we reached the end of the input stream? */
- int stream_end_produced;
-
- /** The number of unclosed '[' and '{' indicators. */
- int flow_level;
-
- /** The tokens queue. */
- struct {
- /** The beginning of the tokens queue. */
- yaml_token_t *start;
- /** The end of the tokens queue. */
- yaml_token_t *end;
- /** The head of the tokens queue. */
- yaml_token_t *head;
- /** The tail of the tokens queue. */
- yaml_token_t *tail;
- } tokens;
-
- /** The number of tokens fetched from the queue. */
- size_t tokens_parsed;
-
- /* Does the tokens queue contain a token ready for dequeueing. */
- int token_available;
-
- /** The indentation levels stack. */
- struct {
- /** The beginning of the stack. */
- int *start;
- /** The end of the stack. */
- int *end;
- /** The top of the stack. */
- int *top;
- } indents;
-
- /** The current indentation level. */
- int indent;
-
- /** May a simple key occur at the current position? */
- int simple_key_allowed;
-
- /** The stack of simple keys. */
- struct {
- /** The beginning of the stack. */
- yaml_simple_key_t *start;
- /** The end of the stack. */
- yaml_simple_key_t *end;
- /** The top of the stack. */
- yaml_simple_key_t *top;
- } simple_keys;
-
- /**
- * @}
- */
-
- /**
- * @name Parser stuff
- * @{
- */
-
- /** The parser states stack. */
- struct {
- /** The beginning of the stack. */
- yaml_parser_state_t *start;
- /** The end of the stack. */
- yaml_parser_state_t *end;
- /** The top of the stack. */
- yaml_parser_state_t *top;
- } states;
-
- /** The current parser state. */
- yaml_parser_state_t state;
-
- /** The stack of marks. */
- struct {
- /** The beginning of the stack. */
- yaml_mark_t *start;
- /** The end of the stack. */
- yaml_mark_t *end;
- /** The top of the stack. */
- yaml_mark_t *top;
- } marks;
-
- /** The list of TAG directives. */
- struct {
- /** The beginning of the list. */
- yaml_tag_directive_t *start;
- /** The end of the list. */
- yaml_tag_directive_t *end;
- /** The top of the list. */
- yaml_tag_directive_t *top;
- } tag_directives;
-
- /**
- * @}
- */
-
- /**
- * @name Dumper stuff
- * @{
- */
-
- /** The alias data. */
- struct {
- /** The beginning of the list. */
- yaml_alias_data_t *start;
- /** The end of the list. */
- yaml_alias_data_t *end;
- /** The top of the list. */
- yaml_alias_data_t *top;
- } aliases;
-
- /** The currently parsed document. */
- yaml_document_t *document;
-
- /**
- * @}
- */
-
-} yaml_parser_t;
-
-/**
- * Initialize a parser.
- *
- * This function creates a new parser object. An application is responsible
- * for destroying the object using the yaml_parser_delete() function.
- *
- * @param[out] parser An empty parser object.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_parser_initialize(yaml_parser_t *parser);
-
-/**
- * Destroy a parser.
- *
- * @param[in,out] parser A parser object.
- */
-
-YAML_DECLARE(void)
-yaml_parser_delete(yaml_parser_t *parser);
-
-/**
- * Set a string input.
- *
- * Note that the @a input pointer must be valid while the @a parser object
- * exists. The application is responsible for destroing @a input after
- * destroying the @a parser.
- *
- * @param[in,out] parser A parser object.
- * @param[in] input A source data.
- * @param[in] size The length of the source data in bytes.
- */
-
-YAML_DECLARE(void)
-yaml_parser_set_input_string(yaml_parser_t *parser,
- const unsigned char *input, size_t size);
-
-/**
- * Set a file input.
- *
- * @a file should be a file object open for reading. The application is
- * responsible for closing the @a file.
- *
- * @param[in,out] parser A parser object.
- * @param[in] file An open file.
- */
-
-YAML_DECLARE(void)
-yaml_parser_set_input_file(yaml_parser_t *parser, FILE *file);
-
-/**
- * Set a generic input handler.
- *
- * @param[in,out] parser A parser object.
- * @param[in] handler A read handler.
- * @param[in] data Any application data for passing to the read
- * handler.
- */
-
-YAML_DECLARE(void)
-yaml_parser_set_input(yaml_parser_t *parser,
- yaml_read_handler_t *handler, void *data);
-
-/**
- * Set the source encoding.
- *
- * @param[in,out] parser A parser object.
- * @param[in] encoding The source encoding.
- */
-
-YAML_DECLARE(void)
-yaml_parser_set_encoding(yaml_parser_t *parser, yaml_encoding_t encoding);
-
-/**
- * Scan the input stream and produce the next token.
- *
- * Call the function subsequently to produce a sequence of tokens corresponding
- * to the input stream. The initial token has the type
- * @c YAML_STREAM_START_TOKEN while the ending token has the type
- * @c YAML_STREAM_END_TOKEN.
- *
- * An application is responsible for freeing any buffers associated with the
- * produced token object using the @c yaml_token_delete function.
- *
- * An application must not alternate the calls of yaml_parser_scan() with the
- * calls of yaml_parser_parse() or yaml_parser_load(). Doing this will break
- * the parser.
- *
- * @param[in,out] parser A parser object.
- * @param[out] token An empty token object.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_parser_scan(yaml_parser_t *parser, yaml_token_t *token);
-
-/**
- * Parse the input stream and produce the next parsing event.
- *
- * Call the function subsequently to produce a sequence of events corresponding
- * to the input stream. The initial event has the type
- * @c YAML_STREAM_START_EVENT while the ending event has the type
- * @c YAML_STREAM_END_EVENT.
- *
- * An application is responsible for freeing any buffers associated with the
- * produced event object using the yaml_event_delete() function.
- *
- * An application must not alternate the calls of yaml_parser_parse() with the
- * calls of yaml_parser_scan() or yaml_parser_load(). Doing this will break the
- * parser.
- *
- * @param[in,out] parser A parser object.
- * @param[out] event An empty event object.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_parser_parse(yaml_parser_t *parser, yaml_event_t *event);
-
-/**
- * Parse the input stream and produce the next YAML document.
- *
- * Call this function subsequently to produce a sequence of documents
- * constituting the input stream.
- *
- * If the produced document has no root node, it means that the document
- * end has been reached.
- *
- * An application is responsible for freeing any data associated with the
- * produced document object using the yaml_document_delete() function.
- *
- * An application must not alternate the calls of yaml_parser_load() with the
- * calls of yaml_parser_scan() or yaml_parser_parse(). Doing this will break
- * the parser.
- *
- * @param[in,out] parser A parser object.
- * @param[out] document An empty document object.
- *
- * @return @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_parser_load(yaml_parser_t *parser, yaml_document_t *document);
-
-/** @} */
-
-/**
- * @defgroup emitter Emitter Definitions
- * @{
- */
-
-/**
- * The prototype of a write handler.
- *
- * The write handler is called when the emitter needs to flush the accumulated
- * characters to the output. The handler should write @a size bytes of the
- * @a buffer to the output.
- *
- * @param[in,out] data A pointer to an application data specified by
- * yaml_emitter_set_output().
- * @param[in] buffer The buffer with bytes to be written.
- * @param[in] size The size of the buffer.
- *
- * @returns On success, the handler should return @c 1. If the handler failed,
- * the returned value should be @c 0.
- */
-
-typedef int yaml_write_handler_t(void *data, unsigned char *buffer, size_t size);
-
-/** The emitter states. */
-typedef enum yaml_emitter_state_e {
- /** Expect STREAM-START. */
- YAML_EMIT_STREAM_START_STATE,
- /** Expect the first DOCUMENT-START or STREAM-END. */
- YAML_EMIT_FIRST_DOCUMENT_START_STATE,
- /** Expect DOCUMENT-START or STREAM-END. */
- YAML_EMIT_DOCUMENT_START_STATE,
- /** Expect the content of a document. */
- YAML_EMIT_DOCUMENT_CONTENT_STATE,
- /** Expect DOCUMENT-END. */
- YAML_EMIT_DOCUMENT_END_STATE,
- /** Expect the first item of a flow sequence. */
- YAML_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE,
- /** Expect an item of a flow sequence. */
- YAML_EMIT_FLOW_SEQUENCE_ITEM_STATE,
- /** Expect the first key of a flow mapping. */
- YAML_EMIT_FLOW_MAPPING_FIRST_KEY_STATE,
- /** Expect a key of a flow mapping. */
- YAML_EMIT_FLOW_MAPPING_KEY_STATE,
- /** Expect a value for a simple key of a flow mapping. */
- YAML_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE,
- /** Expect a value of a flow mapping. */
- YAML_EMIT_FLOW_MAPPING_VALUE_STATE,
- /** Expect the first item of a block sequence. */
- YAML_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE,
- /** Expect an item of a block sequence. */
- YAML_EMIT_BLOCK_SEQUENCE_ITEM_STATE,
- /** Expect the first key of a block mapping. */
- YAML_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE,
- /** Expect the key of a block mapping. */
- YAML_EMIT_BLOCK_MAPPING_KEY_STATE,
- /** Expect a value for a simple key of a block mapping. */
- YAML_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE,
- /** Expect a value of a block mapping. */
- YAML_EMIT_BLOCK_MAPPING_VALUE_STATE,
- /** Expect nothing. */
- YAML_EMIT_END_STATE
-} yaml_emitter_state_t;
-
-/**
- * The emitter structure.
- *
- * All members are internal. Manage the structure using the @c yaml_emitter_
- * family of functions.
- */
-
-typedef struct yaml_emitter_s {
-
- /**
- * @name Error handling
- * @{
- */
-
- /** Error type. */
- yaml_error_type_t error;
- /** Error description. */
- const char *problem;
-
- /**
- * @}
- */
-
- /**
- * @name Writer stuff
- * @{
- */
-
- /** Write handler. */
- yaml_write_handler_t *write_handler;
-
- /** A pointer for passing to the white handler. */
- void *write_handler_data;
-
- /** Standard (string or file) output data. */
- union {
- /** String output data. */
- struct {
- /** The buffer pointer. */
- unsigned char *buffer;
- /** The buffer size. */
- size_t size;
- /** The number of written bytes. */
- size_t *size_written;
- } string;
-
- /** File output data. */
- FILE *file;
- } output;
-
- /** The working buffer. */
- struct {
- /** The beginning of the buffer. */
- yaml_char_t *start;
- /** The end of the buffer. */
- yaml_char_t *end;
- /** The current position of the buffer. */
- yaml_char_t *pointer;
- /** The last filled position of the buffer. */
- yaml_char_t *last;
- } buffer;
-
- /** The raw buffer. */
- struct {
- /** The beginning of the buffer. */
- unsigned char *start;
- /** The end of the buffer. */
- unsigned char *end;
- /** The current position of the buffer. */
- unsigned char *pointer;
- /** The last filled position of the buffer. */
- unsigned char *last;
- } raw_buffer;
-
- /** The stream encoding. */
- yaml_encoding_t encoding;
-
- /**
- * @}
- */
-
- /**
- * @name Emitter stuff
- * @{
- */
-
- /** If the output is in the canonical style? */
- int canonical;
- /** The number of indentation spaces. */
- int best_indent;
- /** The preferred width of the output lines. */
- int best_width;
- /** Allow unescaped non-ASCII characters? */
- int unicode;
- /** The preferred line break. */
- yaml_break_t line_break;
-
- /** The stack of states. */
- struct {
- /** The beginning of the stack. */
- yaml_emitter_state_t *start;
- /** The end of the stack. */
- yaml_emitter_state_t *end;
- /** The top of the stack. */
- yaml_emitter_state_t *top;
- } states;
-
- /** The current emitter state. */
- yaml_emitter_state_t state;
-
- /** The event queue. */
- struct {
- /** The beginning of the event queue. */
- yaml_event_t *start;
- /** The end of the event queue. */
- yaml_event_t *end;
- /** The head of the event queue. */
- yaml_event_t *head;
- /** The tail of the event queue. */
- yaml_event_t *tail;
- } events;
-
- /** The stack of indentation levels. */
- struct {
- /** The beginning of the stack. */
- int *start;
- /** The end of the stack. */
- int *end;
- /** The top of the stack. */
- int *top;
- } indents;
-
- /** The list of tag directives. */
- struct {
- /** The beginning of the list. */
- yaml_tag_directive_t *start;
- /** The end of the list. */
- yaml_tag_directive_t *end;
- /** The top of the list. */
- yaml_tag_directive_t *top;
- } tag_directives;
-
- /** The current indentation level. */
- int indent;
-
- /** The current flow level. */
- int flow_level;
-
- /** Is it the document root context? */
- int root_context;
- /** Is it a sequence context? */
- int sequence_context;
- /** Is it a mapping context? */
- int mapping_context;
- /** Is it a simple mapping key context? */
- int simple_key_context;
-
- /** The current line. */
- int line;
- /** The current column. */
- int column;
- /** If the last character was a whitespace? */
- int whitespace;
- /** If the last character was an indentation character (' ', '-', '?', ':')? */
- int indention;
- /** If an explicit document end is required? */
- int open_ended;
-
- /** Anchor analysis. */
- struct {
- /** The anchor value. */
- yaml_char_t *anchor;
- /** The anchor length. */
- size_t anchor_length;
- /** Is it an alias? */
- int alias;
- } anchor_data;
-
- /** Tag analysis. */
- struct {
- /** The tag handle. */
- yaml_char_t *handle;
- /** The tag handle length. */
- size_t handle_length;
- /** The tag suffix. */
- yaml_char_t *suffix;
- /** The tag suffix length. */
- size_t suffix_length;
- } tag_data;
-
- /** Scalar analysis. */
- struct {
- /** The scalar value. */
- yaml_char_t *value;
- /** The scalar length. */
- size_t length;
- /** Does the scalar contain line breaks? */
- int multiline;
- /** Can the scalar be expessed in the flow plain style? */
- int flow_plain_allowed;
- /** Can the scalar be expressed in the block plain style? */
- int block_plain_allowed;
- /** Can the scalar be expressed in the single quoted style? */
- int single_quoted_allowed;
- /** Can the scalar be expressed in the literal or folded styles? */
- int block_allowed;
- /** The output style. */
- yaml_scalar_style_t style;
- } scalar_data;
-
- /**
- * @}
- */
-
- /**
- * @name Dumper stuff
- * @{
- */
-
- /** If the stream was already opened? */
- int opened;
- /** If the stream was already closed? */
- int closed;
-
- /** The information associated with the document nodes. */
- struct {
- /** The number of references. */
- int references;
- /** The anchor id. */
- int anchor;
- /** If the node has been emitted? */
- int serialized;
- } *anchors;
-
- /** The last assigned anchor id. */
- int last_anchor_id;
-
- /** The currently emitted document. */
- yaml_document_t *document;
-
- /**
- * @}
- */
-
-} yaml_emitter_t;
-
-/**
- * Initialize an emitter.
- *
- * This function creates a new emitter object. An application is responsible
- * for destroying the object using the yaml_emitter_delete() function.
- *
- * @param[out] emitter An empty parser object.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_initialize(yaml_emitter_t *emitter);
-
-/**
- * Destroy an emitter.
- *
- * @param[in,out] emitter An emitter object.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_delete(yaml_emitter_t *emitter);
-
-/**
- * Set a string output.
- *
- * The emitter will write the output characters to the @a output buffer of the
- * size @a size. The emitter will set @a size_written to the number of written
- * bytes. If the buffer is smaller than required, the emitter produces the
- * YAML_WRITE_ERROR error.
- *
- * @param[in,out] emitter An emitter object.
- * @param[in] output An output buffer.
- * @param[in] size The buffer size.
- * @param[in] size_written The pointer to save the number of written
- * bytes.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_output_string(yaml_emitter_t *emitter,
- unsigned char *output, size_t size, size_t *size_written);
-
-/**
- * Set a file output.
- *
- * @a file should be a file object open for writing. The application is
- * responsible for closing the @a file.
- *
- * @param[in,out] emitter An emitter object.
- * @param[in] file An open file.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_output_file(yaml_emitter_t *emitter, FILE *file);
-
-/**
- * Set a generic output handler.
- *
- * @param[in,out] emitter An emitter object.
- * @param[in] handler A write handler.
- * @param[in] data Any application data for passing to the write
- * handler.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_output(yaml_emitter_t *emitter,
- yaml_write_handler_t *handler, void *data);
-
-/**
- * Set the output encoding.
- *
- * @param[in,out] emitter An emitter object.
- * @param[in] encoding The output encoding.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_encoding(yaml_emitter_t *emitter, yaml_encoding_t encoding);
-
-/**
- * Set if the output should be in the "canonical" format as in the YAML
- * specification.
- *
- * @param[in,out] emitter An emitter object.
- * @param[in] canonical If the output is canonical.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_canonical(yaml_emitter_t *emitter, int canonical);
-
-/**
- * Set the intendation increment.
- *
- * @param[in,out] emitter An emitter object.
- * @param[in] indent The indentation increment (1 < . < 10).
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_indent(yaml_emitter_t *emitter, int indent);
-
-/**
- * Set the preferred line width. @c -1 means unlimited.
- *
- * @param[in,out] emitter An emitter object.
- * @param[in] width The preferred line width.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_width(yaml_emitter_t *emitter, int width);
-
-/**
- * Set if unescaped non-ASCII characters are allowed.
- *
- * @param[in,out] emitter An emitter object.
- * @param[in] unicode If unescaped Unicode characters are allowed.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_unicode(yaml_emitter_t *emitter, int unicode);
-
-/**
- * Set the preferred line break.
- *
- * @param[in,out] emitter An emitter object.
- * @param[in] line_break The preferred line break.
- */
-
-YAML_DECLARE(void)
-yaml_emitter_set_break(yaml_emitter_t *emitter, yaml_break_t line_break);
-
-/**
- * Emit an event.
- *
- * The event object may be generated using the yaml_parser_parse() function.
- * The emitter takes the responsibility for the event object and destroys its
- * content after it is emitted. The event object is destroyed even if the
- * function fails.
- *
- * @param[in,out] emitter An emitter object.
- * @param[in,out] event An event object.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_emit(yaml_emitter_t *emitter, yaml_event_t *event);
-
-/**
- * Start a YAML stream.
- *
- * This function should be used before yaml_emitter_dump() is called.
- *
- * @param[in,out] emitter An emitter object.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_open(yaml_emitter_t *emitter);
-
-/**
- * Finish a YAML stream.
- *
- * This function should be used after yaml_emitter_dump() is called.
- *
- * @param[in,out] emitter An emitter object.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_close(yaml_emitter_t *emitter);
-
-/**
- * Emit a YAML document.
- *
- * The documen object may be generated using the yaml_parser_load() function
- * or the yaml_document_initialize() function. The emitter takes the
- * responsibility for the document object and destoys its content after
- * it is emitted. The document object is destroyedeven if the function fails.
- *
- * @param[in,out] emitter An emitter object.
- * @param[in,out] document A document object.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_dump(yaml_emitter_t *emitter, yaml_document_t *document);
-
-/**
- * Flush the accumulated characters to the output.
- *
- * @param[in,out] emitter An emitter object.
- *
- * @returns @c 1 if the function succeeded, @c 0 on error.
- */
-
-YAML_DECLARE(int)
-yaml_emitter_flush(yaml_emitter_t *emitter);
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* #ifndef YAML_H */
-
diff --git a/ext/psych/yaml/yaml_private.h b/ext/psych/yaml/yaml_private.h
deleted file mode 100644
index 944499c94e..0000000000
--- a/ext/psych/yaml/yaml_private.h
+++ /dev/null
@@ -1,664 +0,0 @@
-#ifdef RUBY_EXTCONF_H
-#include RUBY_EXTCONF_H
-#endif
-
-#if HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <yaml.h>
-
-#include <assert.h>
-#include <limits.h>
-#include <stddef.h>
-
-#ifndef _MSC_VER
-#include <stdint.h>
-#else
-#ifdef _WIN64
-#define PTRDIFF_MAX _I64_MAX
-#else
-#define PTRDIFF_MAX INT_MAX
-#endif
-#endif
-
-/*
- * Memory management.
- */
-
-YAML_DECLARE(void *)
-yaml_malloc(size_t size);
-
-YAML_DECLARE(void *)
-yaml_realloc(void *ptr, size_t size);
-
-YAML_DECLARE(void)
-yaml_free(void *ptr);
-
-YAML_DECLARE(yaml_char_t *)
-yaml_strdup(const yaml_char_t *);
-
-/*
- * Reader: Ensure that the buffer contains at least `length` characters.
- */
-
-YAML_DECLARE(int)
-yaml_parser_update_buffer(yaml_parser_t *parser, size_t length);
-
-/*
- * Scanner: Ensure that the token stack contains at least one token ready.
- */
-
-YAML_DECLARE(int)
-yaml_parser_fetch_more_tokens(yaml_parser_t *parser);
-
-/*
- * The size of the input raw buffer.
- */
-
-#define INPUT_RAW_BUFFER_SIZE 16384
-
-/*
- * The size of the input buffer.
- *
- * It should be possible to decode the whole raw buffer.
- */
-
-#define INPUT_BUFFER_SIZE (INPUT_RAW_BUFFER_SIZE*3)
-
-/*
- * The size of the output buffer.
- */
-
-#define OUTPUT_BUFFER_SIZE 16384
-
-/*
- * The size of the output raw buffer.
- *
- * It should be possible to encode the whole output buffer.
- */
-
-#define OUTPUT_RAW_BUFFER_SIZE (OUTPUT_BUFFER_SIZE*2+2)
-
-/*
- * The size of other stacks and queues.
- */
-
-#define INITIAL_STACK_SIZE 16
-#define INITIAL_QUEUE_SIZE 16
-#define INITIAL_STRING_SIZE 16
-
-/*
- * Buffer management.
- */
-
-#define BUFFER_INIT(context,buffer,size) \
- (((buffer).start = yaml_malloc(size)) ? \
- ((buffer).last = (buffer).pointer = (buffer).start, \
- (buffer).end = (buffer).start+(size), \
- 1) : \
- ((context)->error = YAML_MEMORY_ERROR, \
- 0))
-
-#define BUFFER_DEL(context,buffer) \
- (yaml_free((buffer).start), \
- (buffer).start = (buffer).pointer = (buffer).end = 0)
-
-/*
- * String management.
- */
-
-typedef struct {
- yaml_char_t *start;
- yaml_char_t *end;
- yaml_char_t *pointer;
-} yaml_string_t;
-
-YAML_DECLARE(int)
-yaml_string_extend(yaml_char_t **start,
- yaml_char_t **pointer, yaml_char_t **end);
-
-YAML_DECLARE(int)
-yaml_string_join(
- yaml_char_t **a_start, yaml_char_t **a_pointer, yaml_char_t **a_end,
- yaml_char_t **b_start, yaml_char_t **b_pointer, yaml_char_t **b_end);
-
-#define NULL_STRING { NULL, NULL, NULL }
-
-#define STRING(string,length) { (string), (string)+(length), (string) }
-
-#define STRING_ASSIGN(value,string,length) \
- ((value).start = (string), \
- (value).end = (string)+(length), \
- (value).pointer = (string))
-
-#define STRING_INIT(context,string,size) \
- (((string).start = yaml_malloc(size)) ? \
- ((string).pointer = (string).start, \
- (string).end = (string).start+(size), \
- memset((string).start, 0, (size)), \
- 1) : \
- ((context)->error = YAML_MEMORY_ERROR, \
- 0))
-
-#define STRING_DEL(context,string) \
- (yaml_free((string).start), \
- (string).start = (string).pointer = (string).end = 0)
-
-#define STRING_EXTEND(context,string) \
- ((((string).pointer+5 < (string).end) \
- || yaml_string_extend(&(string).start, \
- &(string).pointer, &(string).end)) ? \
- 1 : \
- ((context)->error = YAML_MEMORY_ERROR, \
- 0))
-
-#define CLEAR(context,string) \
- ((string).pointer = (string).start, \
- memset((string).start, 0, (string).end-(string).start))
-
-#define JOIN(context,string_a,string_b) \
- ((yaml_string_join(&(string_a).start, &(string_a).pointer, \
- &(string_a).end, &(string_b).start, \
- &(string_b).pointer, &(string_b).end)) ? \
- ((string_b).pointer = (string_b).start, \
- 1) : \
- ((context)->error = YAML_MEMORY_ERROR, \
- 0))
-
-/*
- * String check operations.
- */
-
-/*
- * Check the octet at the specified position.
- */
-
-#define CHECK_AT(string,octet,offset) \
- ((string).pointer[offset] == (yaml_char_t)(octet))
-
-/*
- * Check the current octet in the buffer.
- */
-
-#define CHECK(string,octet) CHECK_AT((string),(octet),0)
-
-/*
- * Check if the character at the specified position is an alphabetical
- * character, a digit, '_', or '-'.
- */
-
-#define IS_ALPHA_AT(string,offset) \
- (((string).pointer[offset] >= (yaml_char_t) '0' && \
- (string).pointer[offset] <= (yaml_char_t) '9') || \
- ((string).pointer[offset] >= (yaml_char_t) 'A' && \
- (string).pointer[offset] <= (yaml_char_t) 'Z') || \
- ((string).pointer[offset] >= (yaml_char_t) 'a' && \
- (string).pointer[offset] <= (yaml_char_t) 'z') || \
- (string).pointer[offset] == '_' || \
- (string).pointer[offset] == '-')
-
-#define IS_ALPHA(string) IS_ALPHA_AT((string),0)
-
-/*
- * Check if the character at the specified position is a digit.
- */
-
-#define IS_DIGIT_AT(string,offset) \
- (((string).pointer[offset] >= (yaml_char_t) '0' && \
- (string).pointer[offset] <= (yaml_char_t) '9'))
-
-#define IS_DIGIT(string) IS_DIGIT_AT((string),0)
-
-/*
- * Get the value of a digit.
- */
-
-#define AS_DIGIT_AT(string,offset) \
- ((string).pointer[offset] - (yaml_char_t) '0')
-
-#define AS_DIGIT(string) AS_DIGIT_AT((string),0)
-
-/*
- * Check if the character at the specified position is a hex-digit.
- */
-
-#define IS_HEX_AT(string,offset) \
- (((string).pointer[offset] >= (yaml_char_t) '0' && \
- (string).pointer[offset] <= (yaml_char_t) '9') || \
- ((string).pointer[offset] >= (yaml_char_t) 'A' && \
- (string).pointer[offset] <= (yaml_char_t) 'F') || \
- ((string).pointer[offset] >= (yaml_char_t) 'a' && \
- (string).pointer[offset] <= (yaml_char_t) 'f'))
-
-#define IS_HEX(string) IS_HEX_AT((string),0)
-
-/*
- * Get the value of a hex-digit.
- */
-
-#define AS_HEX_AT(string,offset) \
- (((string).pointer[offset] >= (yaml_char_t) 'A' && \
- (string).pointer[offset] <= (yaml_char_t) 'F') ? \
- ((string).pointer[offset] - (yaml_char_t) 'A' + 10) : \
- ((string).pointer[offset] >= (yaml_char_t) 'a' && \
- (string).pointer[offset] <= (yaml_char_t) 'f') ? \
- ((string).pointer[offset] - (yaml_char_t) 'a' + 10) : \
- ((string).pointer[offset] - (yaml_char_t) '0'))
-
-#define AS_HEX(string) AS_HEX_AT((string),0)
-
-/*
- * Check if the character is ASCII.
- */
-
-#define IS_ASCII_AT(string,offset) \
- ((string).pointer[offset] <= (yaml_char_t) '\x7F')
-
-#define IS_ASCII(string) IS_ASCII_AT((string),0)
-
-/*
- * Check if the character can be printed unescaped.
- */
-
-#define IS_PRINTABLE_AT(string,offset) \
- (((string).pointer[offset] == 0x0A) /* . == #x0A */ \
- || ((string).pointer[offset] >= 0x20 /* #x20 <= . <= #x7E */ \
- && (string).pointer[offset] <= 0x7E) \
- || ((string).pointer[offset] == 0xC2 /* #0xA0 <= . <= #xD7FF */ \
- && (string).pointer[offset+1] >= 0xA0) \
- || ((string).pointer[offset] > 0xC2 \
- && (string).pointer[offset] < 0xED) \
- || ((string).pointer[offset] == 0xED \
- && (string).pointer[offset+1] < 0xA0) \
- || ((string).pointer[offset] == 0xEE) \
- || ((string).pointer[offset] == 0xEF /* #xE000 <= . <= #xFFFD */ \
- && !((string).pointer[offset+1] == 0xBB /* && . != #xFEFF */ \
- && (string).pointer[offset+2] == 0xBF) \
- && !((string).pointer[offset+1] == 0xBF \
- && ((string).pointer[offset+2] == 0xBE \
- || (string).pointer[offset+2] == 0xBF))))
-
-#define IS_PRINTABLE(string) IS_PRINTABLE_AT((string),0)
-
-/*
- * Check if the character at the specified position is NUL.
- */
-
-#define IS_Z_AT(string,offset) CHECK_AT((string),'\0',(offset))
-
-#define IS_Z(string) IS_Z_AT((string),0)
-
-/*
- * Check if the character at the specified position is BOM.
- */
-
-#define IS_BOM_AT(string,offset) \
- (CHECK_AT((string),'\xEF',(offset)) \
- && CHECK_AT((string),'\xBB',(offset)+1) \
- && CHECK_AT((string),'\xBF',(offset)+2)) /* BOM (#xFEFF) */
-
-#define IS_BOM(string) IS_BOM_AT(string,0)
-
-/*
- * Check if the character at the specified position is space.
- */
-
-#define IS_SPACE_AT(string,offset) CHECK_AT((string),' ',(offset))
-
-#define IS_SPACE(string) IS_SPACE_AT((string),0)
-
-/*
- * Check if the character at the specified position is tab.
- */
-
-#define IS_TAB_AT(string,offset) CHECK_AT((string),'\t',(offset))
-
-#define IS_TAB(string) IS_TAB_AT((string),0)
-
-/*
- * Check if the character at the specified position is blank (space or tab).
- */
-
-#define IS_BLANK_AT(string,offset) \
- (IS_SPACE_AT((string),(offset)) || IS_TAB_AT((string),(offset)))
-
-#define IS_BLANK(string) IS_BLANK_AT((string),0)
-
-/*
- * Check if the character at the specified position is a line break.
- */
-
-#define IS_BREAK_AT(string,offset) \
- (CHECK_AT((string),'\r',(offset)) /* CR (#xD)*/ \
- || CHECK_AT((string),'\n',(offset)) /* LF (#xA) */ \
- || (CHECK_AT((string),'\xC2',(offset)) \
- && CHECK_AT((string),'\x85',(offset)+1)) /* NEL (#x85) */ \
- || (CHECK_AT((string),'\xE2',(offset)) \
- && CHECK_AT((string),'\x80',(offset)+1) \
- && CHECK_AT((string),'\xA8',(offset)+2)) /* LS (#x2028) */ \
- || (CHECK_AT((string),'\xE2',(offset)) \
- && CHECK_AT((string),'\x80',(offset)+1) \
- && CHECK_AT((string),'\xA9',(offset)+2))) /* PS (#x2029) */
-
-#define IS_BREAK(string) IS_BREAK_AT((string),0)
-
-#define IS_CRLF_AT(string,offset) \
- (CHECK_AT((string),'\r',(offset)) && CHECK_AT((string),'\n',(offset)+1))
-
-#define IS_CRLF(string) IS_CRLF_AT((string),0)
-
-/*
- * Check if the character is a line break or NUL.
- */
-
-#define IS_BREAKZ_AT(string,offset) \
- (IS_BREAK_AT((string),(offset)) || IS_Z_AT((string),(offset)))
-
-#define IS_BREAKZ(string) IS_BREAKZ_AT((string),0)
-
-/*
- * Check if the character is a line break, space, or NUL.
- */
-
-#define IS_SPACEZ_AT(string,offset) \
- (IS_SPACE_AT((string),(offset)) || IS_BREAKZ_AT((string),(offset)))
-
-#define IS_SPACEZ(string) IS_SPACEZ_AT((string),0)
-
-/*
- * Check if the character is a line break, space, tab, or NUL.
- */
-
-#define IS_BLANKZ_AT(string,offset) \
- (IS_BLANK_AT((string),(offset)) || IS_BREAKZ_AT((string),(offset)))
-
-#define IS_BLANKZ(string) IS_BLANKZ_AT((string),0)
-
-/*
- * Determine the width of the character.
- */
-
-#define WIDTH_AT(string,offset) \
- (((string).pointer[offset] & 0x80) == 0x00 ? 1 : \
- ((string).pointer[offset] & 0xE0) == 0xC0 ? 2 : \
- ((string).pointer[offset] & 0xF0) == 0xE0 ? 3 : \
- ((string).pointer[offset] & 0xF8) == 0xF0 ? 4 : 0)
-
-#define WIDTH(string) WIDTH_AT((string),0)
-
-/*
- * Move the string pointer to the next character.
- */
-
-#define MOVE(string) ((string).pointer += WIDTH((string)))
-
-/*
- * Copy a character and move the pointers of both strings.
- */
-
-#define COPY(string_a,string_b) \
- ((*(string_b).pointer & 0x80) == 0x00 ? \
- (*((string_a).pointer++) = *((string_b).pointer++)) : \
- (*(string_b).pointer & 0xE0) == 0xC0 ? \
- (*((string_a).pointer++) = *((string_b).pointer++), \
- *((string_a).pointer++) = *((string_b).pointer++)) : \
- (*(string_b).pointer & 0xF0) == 0xE0 ? \
- (*((string_a).pointer++) = *((string_b).pointer++), \
- *((string_a).pointer++) = *((string_b).pointer++), \
- *((string_a).pointer++) = *((string_b).pointer++)) : \
- (*(string_b).pointer & 0xF8) == 0xF0 ? \
- (*((string_a).pointer++) = *((string_b).pointer++), \
- *((string_a).pointer++) = *((string_b).pointer++), \
- *((string_a).pointer++) = *((string_b).pointer++), \
- *((string_a).pointer++) = *((string_b).pointer++)) : 0)
-
-/*
- * Stack and queue management.
- */
-
-YAML_DECLARE(int)
-yaml_stack_extend(void **start, void **top, void **end);
-
-YAML_DECLARE(int)
-yaml_queue_extend(void **start, void **head, void **tail, void **end);
-
-#define STACK_INIT(context,stack,size) \
- (((stack).start = yaml_malloc((size)*sizeof(*(stack).start))) ? \
- ((stack).top = (stack).start, \
- (stack).end = (stack).start+(size), \
- 1) : \
- ((context)->error = YAML_MEMORY_ERROR, \
- 0))
-
-#define STACK_DEL(context,stack) \
- (yaml_free((stack).start), \
- (stack).start = (stack).top = (stack).end = 0)
-
-#define STACK_EMPTY(context,stack) \
- ((void)(context), \
- ((stack).start == (stack).top))
-
-#define STACK_LIMIT(context,stack,size) \
- ((stack).top - (stack).start < (size) ? \
- 1 : \
- ((context)->error = YAML_MEMORY_ERROR, \
- 0))
-
-#define PUSH(context,stack,value) \
- (((stack).top != (stack).end \
- || yaml_stack_extend((void **)&(stack).start, \
- (void **)&(stack).top, (void **)&(stack).end)) ? \
- (*((stack).top++) = value, \
- 1) : \
- ((context)->error = YAML_MEMORY_ERROR, \
- 0))
-
-#define POP(context,stack) \
- (*(--(stack).top))
-
-#define QUEUE_INIT(context,queue,size) \
- (((queue).start = yaml_malloc((size)*sizeof(*(queue).start))) ? \
- ((queue).head = (queue).tail = (queue).start, \
- (queue).end = (queue).start+(size), \
- 1) : \
- ((context)->error = YAML_MEMORY_ERROR, \
- 0))
-
-#define QUEUE_DEL(context,queue) \
- (yaml_free((queue).start), \
- (queue).start = (queue).head = (queue).tail = (queue).end = 0)
-
-#define QUEUE_EMPTY(context,queue) \
- ((queue).head == (queue).tail)
-
-#define ENQUEUE(context,queue,value) \
- (((queue).tail != (queue).end \
- || yaml_queue_extend((void **)&(queue).start, (void **)&(queue).head, \
- (void **)&(queue).tail, (void **)&(queue).end)) ? \
- (*((queue).tail++) = value, \
- 1) : \
- ((context)->error = YAML_MEMORY_ERROR, \
- 0))
-
-#define DEQUEUE(context,queue) \
- (*((queue).head++))
-
-#define QUEUE_INSERT(context,queue,index,value) \
- (((queue).tail != (queue).end \
- || yaml_queue_extend((void **)&(queue).start, (void **)&(queue).head, \
- (void **)&(queue).tail, (void **)&(queue).end)) ? \
- (memmove((queue).head+(index)+1,(queue).head+(index), \
- ((queue).tail-(queue).head-(index))*sizeof(*(queue).start)), \
- *((queue).head+(index)) = value, \
- (queue).tail++, \
- 1) : \
- ((context)->error = YAML_MEMORY_ERROR, \
- 0))
-
-/*
- * Token initializers.
- */
-
-#define TOKEN_INIT(token,token_type,token_start_mark,token_end_mark) \
- (memset(&(token), 0, sizeof(yaml_token_t)), \
- (token).type = (token_type), \
- (token).start_mark = (token_start_mark), \
- (token).end_mark = (token_end_mark))
-
-#define STREAM_START_TOKEN_INIT(token,token_encoding,start_mark,end_mark) \
- (TOKEN_INIT((token),YAML_STREAM_START_TOKEN,(start_mark),(end_mark)), \
- (token).data.stream_start.encoding = (token_encoding))
-
-#define STREAM_END_TOKEN_INIT(token,start_mark,end_mark) \
- (TOKEN_INIT((token),YAML_STREAM_END_TOKEN,(start_mark),(end_mark)))
-
-#define ALIAS_TOKEN_INIT(token,token_value,start_mark,end_mark) \
- (TOKEN_INIT((token),YAML_ALIAS_TOKEN,(start_mark),(end_mark)), \
- (token).data.alias.value = (token_value))
-
-#define ANCHOR_TOKEN_INIT(token,token_value,start_mark,end_mark) \
- (TOKEN_INIT((token),YAML_ANCHOR_TOKEN,(start_mark),(end_mark)), \
- (token).data.anchor.value = (token_value))
-
-#define TAG_TOKEN_INIT(token,token_handle,token_suffix,start_mark,end_mark) \
- (TOKEN_INIT((token),YAML_TAG_TOKEN,(start_mark),(end_mark)), \
- (token).data.tag.handle = (token_handle), \
- (token).data.tag.suffix = (token_suffix))
-
-#define SCALAR_TOKEN_INIT(token,token_value,token_length,token_style,start_mark,end_mark) \
- (TOKEN_INIT((token),YAML_SCALAR_TOKEN,(start_mark),(end_mark)), \
- (token).data.scalar.value = (token_value), \
- (token).data.scalar.length = (token_length), \
- (token).data.scalar.style = (token_style))
-
-#define VERSION_DIRECTIVE_TOKEN_INIT(token,token_major,token_minor,start_mark,end_mark) \
- (TOKEN_INIT((token),YAML_VERSION_DIRECTIVE_TOKEN,(start_mark),(end_mark)), \
- (token).data.version_directive.major = (token_major), \
- (token).data.version_directive.minor = (token_minor))
-
-#define TAG_DIRECTIVE_TOKEN_INIT(token,token_handle,token_prefix,start_mark,end_mark) \
- (TOKEN_INIT((token),YAML_TAG_DIRECTIVE_TOKEN,(start_mark),(end_mark)), \
- (token).data.tag_directive.handle = (token_handle), \
- (token).data.tag_directive.prefix = (token_prefix))
-
-/*
- * Event initializers.
- */
-
-#define EVENT_INIT(event,event_type,event_start_mark,event_end_mark) \
- (memset(&(event), 0, sizeof(yaml_event_t)), \
- (event).type = (event_type), \
- (event).start_mark = (event_start_mark), \
- (event).end_mark = (event_end_mark))
-
-#define STREAM_START_EVENT_INIT(event,event_encoding,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_STREAM_START_EVENT,(start_mark),(end_mark)), \
- (event).data.stream_start.encoding = (event_encoding))
-
-#define STREAM_END_EVENT_INIT(event,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_STREAM_END_EVENT,(start_mark),(end_mark)))
-
-#define DOCUMENT_START_EVENT_INIT(event,event_version_directive, \
- event_tag_directives_start,event_tag_directives_end,event_implicit,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_DOCUMENT_START_EVENT,(start_mark),(end_mark)), \
- (event).data.document_start.version_directive = (event_version_directive), \
- (event).data.document_start.tag_directives.start = (event_tag_directives_start), \
- (event).data.document_start.tag_directives.end = (event_tag_directives_end), \
- (event).data.document_start.implicit = (event_implicit))
-
-#define DOCUMENT_END_EVENT_INIT(event,event_implicit,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_DOCUMENT_END_EVENT,(start_mark),(end_mark)), \
- (event).data.document_end.implicit = (event_implicit))
-
-#define ALIAS_EVENT_INIT(event,event_anchor,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_ALIAS_EVENT,(start_mark),(end_mark)), \
- (event).data.alias.anchor = (event_anchor))
-
-#define SCALAR_EVENT_INIT(event,event_anchor,event_tag,event_value,event_length, \
- event_plain_implicit, event_quoted_implicit,event_style,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_SCALAR_EVENT,(start_mark),(end_mark)), \
- (event).data.scalar.anchor = (event_anchor), \
- (event).data.scalar.tag = (event_tag), \
- (event).data.scalar.value = (event_value), \
- (event).data.scalar.length = (event_length), \
- (event).data.scalar.plain_implicit = (event_plain_implicit), \
- (event).data.scalar.quoted_implicit = (event_quoted_implicit), \
- (event).data.scalar.style = (event_style))
-
-#define SEQUENCE_START_EVENT_INIT(event,event_anchor,event_tag, \
- event_implicit,event_style,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_SEQUENCE_START_EVENT,(start_mark),(end_mark)), \
- (event).data.sequence_start.anchor = (event_anchor), \
- (event).data.sequence_start.tag = (event_tag), \
- (event).data.sequence_start.implicit = (event_implicit), \
- (event).data.sequence_start.style = (event_style))
-
-#define SEQUENCE_END_EVENT_INIT(event,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_SEQUENCE_END_EVENT,(start_mark),(end_mark)))
-
-#define MAPPING_START_EVENT_INIT(event,event_anchor,event_tag, \
- event_implicit,event_style,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_MAPPING_START_EVENT,(start_mark),(end_mark)), \
- (event).data.mapping_start.anchor = (event_anchor), \
- (event).data.mapping_start.tag = (event_tag), \
- (event).data.mapping_start.implicit = (event_implicit), \
- (event).data.mapping_start.style = (event_style))
-
-#define MAPPING_END_EVENT_INIT(event,start_mark,end_mark) \
- (EVENT_INIT((event),YAML_MAPPING_END_EVENT,(start_mark),(end_mark)))
-
-/*
- * Document initializer.
- */
-
-#define DOCUMENT_INIT(document,document_nodes_start,document_nodes_end, \
- document_version_directive,document_tag_directives_start, \
- document_tag_directives_end,document_start_implicit, \
- document_end_implicit,document_start_mark,document_end_mark) \
- (memset(&(document), 0, sizeof(yaml_document_t)), \
- (document).nodes.start = (document_nodes_start), \
- (document).nodes.end = (document_nodes_end), \
- (document).nodes.top = (document_nodes_start), \
- (document).version_directive = (document_version_directive), \
- (document).tag_directives.start = (document_tag_directives_start), \
- (document).tag_directives.end = (document_tag_directives_end), \
- (document).start_implicit = (document_start_implicit), \
- (document).end_implicit = (document_end_implicit), \
- (document).start_mark = (document_start_mark), \
- (document).end_mark = (document_end_mark))
-
-/*
- * Node initializers.
- */
-
-#define NODE_INIT(node,node_type,node_tag,node_start_mark,node_end_mark) \
- (memset(&(node), 0, sizeof(yaml_node_t)), \
- (node).type = (node_type), \
- (node).tag = (node_tag), \
- (node).start_mark = (node_start_mark), \
- (node).end_mark = (node_end_mark))
-
-#define SCALAR_NODE_INIT(node,node_tag,node_value,node_length, \
- node_style,start_mark,end_mark) \
- (NODE_INIT((node),YAML_SCALAR_NODE,(node_tag),(start_mark),(end_mark)), \
- (node).data.scalar.value = (node_value), \
- (node).data.scalar.length = (node_length), \
- (node).data.scalar.style = (node_style))
-
-#define SEQUENCE_NODE_INIT(node,node_tag,node_items_start,node_items_end, \
- node_style,start_mark,end_mark) \
- (NODE_INIT((node),YAML_SEQUENCE_NODE,(node_tag),(start_mark),(end_mark)), \
- (node).data.sequence.items.start = (node_items_start), \
- (node).data.sequence.items.end = (node_items_end), \
- (node).data.sequence.items.top = (node_items_start), \
- (node).data.sequence.style = (node_style))
-
-#define MAPPING_NODE_INIT(node,node_tag,node_pairs_start,node_pairs_end, \
- node_style,start_mark,end_mark) \
- (NODE_INIT((node),YAML_MAPPING_NODE,(node_tag),(start_mark),(end_mark)), \
- (node).data.mapping.pairs.start = (node_pairs_start), \
- (node).data.mapping.pairs.end = (node_pairs_end), \
- (node).data.mapping.pairs.top = (node_pairs_start), \
- (node).data.mapping.style = (node_style))
-
diff --git a/ext/psych/psych_yaml_tree.c b/ext/psych/yaml_tree.c
index bcf24d2070..bcf24d2070 100644
--- a/ext/psych/psych_yaml_tree.c
+++ b/ext/psych/yaml_tree.c
diff --git a/ext/psych/psych_yaml_tree.h b/ext/psych/yaml_tree.h
index 4628a69d71..4628a69d71 100644
--- a/ext/psych/psych_yaml_tree.h
+++ b/ext/psych/yaml_tree.h
diff --git a/ext/pty/extconf.rb b/ext/pty/extconf.rb
index 1db9f6e8aa..3d6d0f1e46 100644
--- a/ext/pty/extconf.rb
+++ b/ext/pty/extconf.rb
@@ -1,8 +1,6 @@
require 'mkmf'
-$INCFLAGS << " -I$(topdir) -I$(top_srcdir)"
-
-if /mswin|mingw|bccwin|nacl/ !~ RUBY_PLATFORM
+if /mswin|mingw|bccwin/ !~ RUBY_PLATFORM
have_header("sys/stropts.h")
have_func("setresuid")
have_header("libutil.h")
diff --git a/ext/pty/lib/expect.rb b/ext/pty/lib/expect.rb
index c3f3925be7..c15044bd2a 100644
--- a/ext/pty/lib/expect.rb
+++ b/ext/pty/lib/expect.rb
@@ -1,30 +1,10 @@
$expect_verbose = false
-# Expect library adds the IO instance method #expect, which does similar act to
-# tcl's expect extension.
-#
-# In order to use this method, you must require expect:
-#
-# require 'expect'
-#
-# Please see #expect for usage.
class IO
- # call-seq:
- # IO#expect(pattern,timeout=9999999) -> Array
- # IO#expect(pattern,timeout=9999999) { |result| ... } -> nil
- #
- # Reads from the IO until the given +pattern+ matches or the +timeout+ is over.
- #
+ # Reads from the IO until pattern +pat+ matches or the +timeout+ is over.
# It returns an array with the read buffer, followed by the matches.
# If a block is given, the result is yielded to the block and returns nil.
#
- # When called without a block, it waits until the input that matches the
- # given +pattern+ is obtained from the IO or the time specified as the
- # timeout passes. An array is returned when the pattern is obtained from the
- # IO. The first element of the array is the entire string obtained from the
- # IO until the pattern matches, followed by elements indicating which the
- # pattern which matched to the anchor in the regular expression.
- #
# The optional timeout parameter defines, in seconds, the total time to wait
# for the pattern. If the timeout expires or eof is found, nil is returned
# or yielded. However, the buffer in a timeout session is kept for the next
@@ -37,7 +17,7 @@ class IO
when Regexp
e_pat = pat
else
- raise TypeError, "unsupported pattern class: #{pat.class}"
+ raise TypeError, "unsupported pattern class: #{pattern.class}"
end
@unusedBuf ||= ''
while true
diff --git a/ext/pty/pty.c b/ext/pty/pty.c
index e2f5882d67..b18eb68f77 100644
--- a/ext/pty/pty.c
+++ b/ext/pty/pty.c
@@ -32,7 +32,6 @@
#include "ruby/ruby.h"
#include "ruby/io.h"
#include "ruby/util.h"
-#include "internal.h"
#include <signal.h>
#ifdef HAVE_SYS_STROPTS_H
@@ -45,6 +44,70 @@
#define DEVICELEN 16
+#if !defined(HAVE_OPENPTY)
+#if defined(__hpux)
+static const
+char MasterDevice[] = "/dev/ptym/pty%s",
+ SlaveDevice[] = "/dev/pty/tty%s",
+ *const deviceNo[] = {
+ "p0","p1","p2","p3","p4","p5","p6","p7",
+ "p8","p9","pa","pb","pc","pd","pe","pf",
+ "q0","q1","q2","q3","q4","q5","q6","q7",
+ "q8","q9","qa","qb","qc","qd","qe","qf",
+ "r0","r1","r2","r3","r4","r5","r6","r7",
+ "r8","r9","ra","rb","rc","rd","re","rf",
+ "s0","s1","s2","s3","s4","s5","s6","s7",
+ "s8","s9","sa","sb","sc","sd","se","sf",
+ "t0","t1","t2","t3","t4","t5","t6","t7",
+ "t8","t9","ta","tb","tc","td","te","tf",
+ "u0","u1","u2","u3","u4","u5","u6","u7",
+ "u8","u9","ua","ub","uc","ud","ue","uf",
+ "v0","v1","v2","v3","v4","v5","v6","v7",
+ "v8","v9","va","vb","vc","vd","ve","vf",
+ "w0","w1","w2","w3","w4","w5","w6","w7",
+ "w8","w9","wa","wb","wc","wd","we","wf",
+ 0,
+ };
+#elif defined(_IBMESA) /* AIX/ESA */
+static const
+char MasterDevice[] = "/dev/ptyp%s",
+ SlaveDevice[] = "/dev/ttyp%s",
+ *const deviceNo[] = {
+"00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f",
+"10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f",
+"20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f",
+"30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f",
+"40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f",
+"50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f",
+"60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f",
+"70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f",
+"80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f",
+"90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f",
+"a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af",
+"b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf",
+"c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf",
+"d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df",
+"e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef",
+"f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff",
+ };
+#elif !defined(HAVE_PTSNAME)
+static const
+char MasterDevice[] = "/dev/pty%s",
+ SlaveDevice[] = "/dev/tty%s",
+ *const deviceNo[] = {
+ "p0","p1","p2","p3","p4","p5","p6","p7",
+ "p8","p9","pa","pb","pc","pd","pe","pf",
+ "q0","q1","q2","q3","q4","q5","q6","q7",
+ "q8","q9","qa","qb","qc","qd","qe","qf",
+ "r0","r1","r2","r3","r4","r5","r6","r7",
+ "r8","r9","ra","rb","rc","rd","re","rf",
+ "s0","s1","s2","s3","s4","s5","s6","s7",
+ "s8","s9","sa","sb","sc","sd","se","sf",
+ 0,
+ };
+#endif
+#endif /* !defined(HAVE_OPENPTY) */
+
#ifndef HAVE_SETEUID
# ifdef HAVE_SETREUID
# define seteuid(e) setreuid(-1, (e))
@@ -78,8 +141,8 @@ static void getDevice(int*, int*, char [DEVICELEN], int);
struct child_info {
int master, slave;
char *slavename;
- VALUE execarg_obj;
- struct rb_execarg *eargp;
+ int argc;
+ VALUE *argv;
};
static int
@@ -88,12 +151,16 @@ chfunc(void *data, char *errbuf, size_t errbuf_len)
struct child_info *carg = data;
int master = carg->master;
int slave = carg->slave;
+ int argc = carg->argc;
+ VALUE *argv = carg->argv;
#define ERROR_EXIT(str) do { \
strlcpy(errbuf, (str), errbuf_len); \
return -1; \
} while (0)
+ rb_thread_atfork_before_exec();
+
/*
* Set free from process group and controlling terminal
*/
@@ -108,7 +175,7 @@ chfunc(void *data, char *errbuf, size_t errbuf_len)
if (setpgrp(0, getpid()) == -1)
ERROR_EXIT("setpgrp()");
{
- int i = rb_cloexec_open("/dev/tty", O_RDONLY, 0);
+ int i = open("/dev/tty", O_RDONLY);
if (i < 0) ERROR_EXIT("/dev/tty");
rb_update_max_fd(i);
if (ioctl(i, TIOCNOTTY, (char *)0))
@@ -128,7 +195,7 @@ chfunc(void *data, char *errbuf, size_t errbuf_len)
/* errors ignored for sun */
#else
close(slave);
- slave = rb_cloexec_open(carg->slavename, O_RDWR, 0);
+ slave = open(carg->slavename, O_RDWR);
if (slave < 0) {
ERROR_EXIT("open: pty slave");
}
@@ -143,7 +210,8 @@ chfunc(void *data, char *errbuf, size_t errbuf_len)
seteuid(getuid());
#endif
- return rb_exec_async_signal_safe(carg->eargp, errbuf, sizeof(errbuf_len));
+ rb_f_exec(argc, argv);
+ return 0;
#undef ERROR_EXIT
}
@@ -151,7 +219,7 @@ static void
establishShell(int argc, VALUE *argv, struct pty_info *info,
char SlaveName[DEVICELEN])
{
- int master, slave, status = 0;
+ int master,slave;
rb_pid_t pid;
char *p, *getenv();
struct passwd *pwent;
@@ -177,24 +245,21 @@ establishShell(int argc, VALUE *argv, struct pty_info *info,
argv = &v;
}
- carg.execarg_obj = rb_execarg_new(argc, argv, 1);
- carg.eargp = rb_execarg_get(carg.execarg_obj);
- rb_execarg_fixup(carg.execarg_obj);
-
getDevice(&master, &slave, SlaveName, 0);
carg.master = master;
carg.slave = slave;
carg.slavename = SlaveName;
+ carg.argc = argc;
+ carg.argv = argv;
errbuf[0] = '\0';
- pid = rb_fork_async_signal_safe(&status, chfunc, &carg, Qnil, errbuf, sizeof(errbuf));
+ pid = rb_fork_err(0, chfunc, &carg, Qnil, errbuf, sizeof(errbuf));
if (pid < 0) {
int e = errno;
close(master);
close(slave);
errno = e;
- if (status) rb_jump_tag(status);
rb_sys_fail(errbuf[0] ? errbuf : "fork failed");
}
@@ -202,8 +267,6 @@ establishShell(int argc, VALUE *argv, struct pty_info *info,
info->child_pid = pid;
info->fd = master;
-
- RB_GC_GUARD(carg.execarg_obj);
}
static int
@@ -219,7 +282,6 @@ static int
get_device_once(int *master, int *slave, char SlaveName[DEVICELEN], int nomesg, int fail)
{
#if defined(HAVE_POSIX_OPENPT)
- /* Unix98 PTY */
int masterfd = -1, slavefd = -1;
char *slavedevice;
struct sigaction dfl, old;
@@ -228,37 +290,18 @@ get_device_once(int *master, int *slave, char SlaveName[DEVICELEN], int nomesg,
dfl.sa_flags = 0;
sigemptyset(&dfl.sa_mask);
-#if defined(__sun) || defined(__FreeBSD__)
- /* workaround for Solaris 10: grantpt() doesn't work if FD_CLOEXEC is set. [ruby-dev:44688] */
- /* FreeBSD 8 supported O_CLOEXEC for posix_openpt, but FreeBSD 9 removed it.
- * http://www.freebsd.org/cgi/query-pr.cgi?pr=162374 */
if ((masterfd = posix_openpt(O_RDWR|O_NOCTTY)) == -1) goto error;
+ rb_update_max_fd(masterfd);
if (sigaction(SIGCHLD, &dfl, &old) == -1) goto error;
if (grantpt(masterfd) == -1) goto grantpt_error;
- rb_fd_fix_cloexec(masterfd);
-#else
- {
- int flags = O_RDWR|O_NOCTTY;
-# if defined(O_CLOEXEC)
- /* glibc posix_openpt() in GNU/Linux calls open("/dev/ptmx", flags) internally.
- * So version dependency on GNU/Linux is same as O_CLOEXEC with open().
- * O_CLOEXEC is available since Linux 2.6.23. Linux 2.6.18 silently ignore it. */
- flags |= O_CLOEXEC;
-# endif
- if ((masterfd = posix_openpt(flags)) == -1) goto error;
- }
- rb_fd_fix_cloexec(masterfd);
- if (sigaction(SIGCHLD, &dfl, &old) == -1) goto error;
- if (grantpt(masterfd) == -1) goto grantpt_error;
-#endif
if (sigaction(SIGCHLD, &old, NULL) == -1) goto error;
if (unlockpt(masterfd) == -1) goto error;
if ((slavedevice = ptsname(masterfd)) == NULL) goto error;
if (no_mesg(slavedevice, nomesg) == -1) goto error;
- if ((slavefd = rb_cloexec_open(slavedevice, O_RDWR|O_NOCTTY, 0)) == -1) goto error;
+ if ((slavefd = open(slavedevice, O_RDWR|O_NOCTTY, 0)) == -1) goto error;
rb_update_max_fd(slavefd);
-#if defined(I_PUSH) && !defined(__linux__)
+#if defined I_PUSH && !defined linux
if (ioctl(slavefd, I_PUSH, "ptem") == -1) goto error;
if (ioctl(slavefd, I_PUSH, "ldterm") == -1) goto error;
if (ioctl(slavefd, I_PUSH, "ttcompat") == -1) goto error;
@@ -288,8 +331,8 @@ get_device_once(int *master, int *slave, char SlaveName[DEVICELEN], int nomesg,
if (!fail) return -1;
rb_raise(rb_eRuntimeError, "openpty() failed");
}
- rb_fd_fix_cloexec(*master);
- rb_fd_fix_cloexec(*slave);
+ rb_update_max_fd(*master);
+ rb_update_max_fd(*slave);
if (no_mesg(SlaveName, nomesg) == -1) {
if (!fail) return -1;
rb_raise(rb_eRuntimeError, "can't chmod slave pty");
@@ -298,7 +341,6 @@ get_device_once(int *master, int *slave, char SlaveName[DEVICELEN], int nomesg,
return 0;
#elif defined HAVE__GETPTY
- /* SGI IRIX */
char *name;
mode_t mode = nomesg ? 0600 : 0622;
@@ -306,16 +348,15 @@ get_device_once(int *master, int *slave, char SlaveName[DEVICELEN], int nomesg,
if (!fail) return -1;
rb_raise(rb_eRuntimeError, "_getpty() failed");
}
- rb_fd_fix_cloexec(*master);
+ rb_update_max_fd(*master);
- *slave = rb_cloexec_open(name, O_RDWR, 0);
+ *slave = open(name, O_RDWR);
/* error check? */
rb_update_max_fd(*slave);
strlcpy(SlaveName, name, DEVICELEN);
return 0;
#elif defined(HAVE_PTSNAME)
- /* System V */
int masterfd = -1, slavefd = -1;
char *slavedevice;
void (*s)();
@@ -324,25 +365,17 @@ get_device_once(int *master, int *slave, char SlaveName[DEVICELEN], int nomesg,
extern int unlockpt(int);
extern int grantpt(int);
-#if defined(__sun)
- /* workaround for Solaris 10: grantpt() doesn't work if FD_CLOEXEC is set. [ruby-dev:44688] */
if((masterfd = open("/dev/ptmx", O_RDWR, 0)) == -1) goto error;
- s = signal(SIGCHLD, SIG_DFL);
- if(grantpt(masterfd) == -1) goto error;
- rb_fd_fix_cloexec(masterfd);
-#else
- if((masterfd = rb_cloexec_open("/dev/ptmx", O_RDWR, 0)) == -1) goto error;
rb_update_max_fd(masterfd);
s = signal(SIGCHLD, SIG_DFL);
if(grantpt(masterfd) == -1) goto error;
-#endif
signal(SIGCHLD, s);
if(unlockpt(masterfd) == -1) goto error;
if((slavedevice = ptsname(masterfd)) == NULL) goto error;
if (no_mesg(slavedevice, nomesg) == -1) goto error;
- if((slavefd = rb_cloexec_open(slavedevice, O_RDWR, 0)) == -1) goto error;
+ if((slavefd = open(slavedevice, O_RDWR, 0)) == -1) goto error;
rb_update_max_fd(slavefd);
-#if defined(I_PUSH) && !defined(__linux__)
+#if defined I_PUSH && !defined linux
if(ioctl(slavefd, I_PUSH, "ptem") == -1) goto error;
if(ioctl(slavefd, I_PUSH, "ldterm") == -1) goto error;
ioctl(slavefd, I_PUSH, "ttcompat");
@@ -358,77 +391,17 @@ get_device_once(int *master, int *slave, char SlaveName[DEVICELEN], int nomesg,
if (fail) rb_raise(rb_eRuntimeError, "can't get Master/Slave device");
return -1;
#else
- /* BSD */
int masterfd = -1, slavefd = -1;
const char *const *p;
char MasterName[DEVICELEN];
-#if defined(__hpux)
- static const char MasterDevice[] = "/dev/ptym/pty%s";
- static const char SlaveDevice[] = "/dev/pty/tty%s";
- static const char *const deviceNo[] = {
- "p0","p1","p2","p3","p4","p5","p6","p7",
- "p8","p9","pa","pb","pc","pd","pe","pf",
- "q0","q1","q2","q3","q4","q5","q6","q7",
- "q8","q9","qa","qb","qc","qd","qe","qf",
- "r0","r1","r2","r3","r4","r5","r6","r7",
- "r8","r9","ra","rb","rc","rd","re","rf",
- "s0","s1","s2","s3","s4","s5","s6","s7",
- "s8","s9","sa","sb","sc","sd","se","sf",
- "t0","t1","t2","t3","t4","t5","t6","t7",
- "t8","t9","ta","tb","tc","td","te","tf",
- "u0","u1","u2","u3","u4","u5","u6","u7",
- "u8","u9","ua","ub","uc","ud","ue","uf",
- "v0","v1","v2","v3","v4","v5","v6","v7",
- "v8","v9","va","vb","vc","vd","ve","vf",
- "w0","w1","w2","w3","w4","w5","w6","w7",
- "w8","w9","wa","wb","wc","wd","we","wf",
- 0
- };
-#elif defined(_IBMESA) /* AIX/ESA */
- static const char MasterDevice[] = "/dev/ptyp%s";
- static const char SlaveDevice[] = "/dev/ttyp%s";
- static const char *const deviceNo[] = {
- "00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f",
- "10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f",
- "20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f",
- "30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f",
- "40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f",
- "50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f",
- "60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f",
- "70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f",
- "80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f",
- "90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f",
- "a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af",
- "b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf",
- "c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf",
- "d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df",
- "e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef",
- "f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff",
- 0
- };
-#else /* 4.2BSD */
- static const char MasterDevice[] = "/dev/pty%s";
- static const char SlaveDevice[] = "/dev/tty%s";
- static const char *const deviceNo[] = {
- "p0","p1","p2","p3","p4","p5","p6","p7",
- "p8","p9","pa","pb","pc","pd","pe","pf",
- "q0","q1","q2","q3","q4","q5","q6","q7",
- "q8","q9","qa","qb","qc","qd","qe","qf",
- "r0","r1","r2","r3","r4","r5","r6","r7",
- "r8","r9","ra","rb","rc","rd","re","rf",
- "s0","s1","s2","s3","s4","s5","s6","s7",
- "s8","s9","sa","sb","sc","sd","se","sf",
- 0
- };
-#endif
for (p = deviceNo; *p != NULL; p++) {
snprintf(MasterName, sizeof MasterName, MasterDevice, *p);
- if ((masterfd = rb_cloexec_open(MasterName,O_RDWR,0)) >= 0) {
+ if ((masterfd = open(MasterName,O_RDWR,0)) >= 0) {
rb_update_max_fd(masterfd);
*master = masterfd;
snprintf(SlaveName, DEVICELEN, SlaveDevice, *p);
- if ((slavefd = rb_cloexec_open(SlaveName,O_RDWR,0)) >= 0) {
+ if ((slavefd = open(SlaveName,O_RDWR,0)) >= 0) {
rb_update_max_fd(slavefd);
*slave = slavefd;
if (chown(SlaveName, getuid(), getgid()) != 0) goto error;
@@ -463,7 +436,7 @@ pty_close_pty(VALUE assoc)
for (i = 0; i < 2; i++) {
io = rb_ary_entry(assoc, i);
- if (RB_TYPE_P(io, T_FILE) && 0 <= RFILE(io)->fptr->fd)
+ if (TYPE(io) == T_FILE && 0 <= RFILE(io)->fptr->fd)
rb_io_close(io);
}
return Qnil;
@@ -476,29 +449,54 @@ pty_close_pty(VALUE assoc)
*
* Allocates a pty (pseudo-terminal).
*
+ * In the non-block form, returns a two element array, <tt>[master_io,
+ * slave_file]</tt>.
+ *
* In the block form, yields two arguments <tt>master_io, slave_file</tt>
* and the value of the block is returned from +open+.
*
* The IO and File are both closed after the block completes if they haven't
* been already closed.
*
- * PTY.open {|master, slave|
- * p master #=> #<IO:masterpty:/dev/pts/1>
- * p slave #=> #<File:/dev/pts/1>
- * p slave.path #=> "/dev/pts/1"
- * }
+ * The arguments in both forms are:
*
- * In the non-block form, returns a two element array, <tt>[master_io,
- * slave_file]</tt>.
+ * <tt>master_io</tt>:: the master of the pty, as an IO.
+ * <tt>slave_file</tt>:: the slave of the pty, as a File. The path to the
+ * terminal device is available via
+ * <tt>slave_file.path</tt>
*
- * master, slave = PTY.open
- * # do something with master for IO, or the slave file
+ * === Example
*
- * The arguments in both forms are:
+ * PTY.open {|m, s|
+ * p m #=> #<IO:masterpty:/dev/pts/1>
+ * p s #=> #<File:/dev/pts/1>
+ * p s.path #=> "/dev/pts/1"
+ * }
*
- * +master_io+:: the master of the pty, as an IO.
- * +slave_file+:: the slave of the pty, as a File. The path to the
- * terminal device is available via +slave_file.path+
+ * # Change the buffering type in factor command,
+ * # assuming that factor uses stdio for stdout buffering.
+ * # If IO.pipe is used instead of PTY.open,
+ * # this code deadlocks because factor's stdout is fully buffered.
+ * require 'io/console' # for IO#raw!
+ * m, s = PTY.open
+ * s.raw! # disable newline conversion.
+ * r, w = IO.pipe
+ * pid = spawn("factor", :in=>r, :out=>s)
+ * r.close
+ * s.close
+ * w.puts "42"
+ * p m.gets #=> "42: 2 3 7\n"
+ * w.puts "144"
+ * p m.gets #=> "144: 2 2 2 2 3 3\n"
+ * w.close
+ * # The result of read operation when pty slave is closed is platform
+ * # dependent.
+ * ret = begin
+ * m.gets # FreeBSD returns nil.
+ * rescue Errno::EIO # GNU/Linux raises EIO.
+ * nil
+ * end
+ * p ret #=> nil
*
*/
static VALUE
@@ -542,28 +540,31 @@ pty_detach_process(struct pty_info *info)
* call-seq:
* PTY.spawn(command_line) { |r, w, pid| ... }
* PTY.spawn(command_line) => [r, w, pid]
- * PTY.spawn(command, arguments, ...) { |r, w, pid| ... }
- * PTY.spawn(command, arguments, ...) => [r, w, pid]
+ * PTY.spawn(command, args, ...) { |r, w, pid| ... }
+ * PTY.spawn(command, args, ...) => [r, w, pid]
+ * PTY.getpty(command_line) { |r, w, pid| ... }
+ * PTY.getpty(command_line) => [r, w, pid]
+ * PTY.getpty(command, args, ...) { |r, w, pid| ... }
+ * PTY.getpty(command, args, ...) => [r, w, pid]
*
- * Spawns the specified command on a newly allocated pty. You can also use the
- * alias ::getpty.
+ * Spawns the specified command on a newly allocated pty.
*
* The command's controlling tty is set to the slave device of the pty
* and its standard input/output/error is redirected to the slave device.
*
- * +command+ and +command_line+ are the full commands to run, given a String.
- * Any additional +arguments+ will be passed to the command.
- *
- * === Return values
+ * <tt>command_line</tt>:: The full command line to run
+ * <tt>command</tt>:: The command to run, as a String.
+ * <tt>args</tt>:: Zero or more arguments, as Strings, representing
+ * the arguments to +command+
*
* In the non-block form this returns an array of size three,
- * <tt>[r, w, pid]</tt>.
+ * <tt>[r, w, pid]</tt>. In the block form the block will be called with
+ * these as arguments, <tt>|r,w,pid|</tt>:
*
- * In the block form these same values will be yielded to the block:
- *
- * +r+:: A readable IO that that contains the command's
+ * +r+:: An IO that can be read from that contains the command's
* standard output and standard error
- * +w+:: A writable IO that is the command's standard input
+ * +w+:: An IO that can be written to that is the command's
+ * standard input
* +pid+:: The process identifier for the command.
*/
static VALUE
@@ -586,7 +587,7 @@ pty_getpty(int argc, VALUE *argv, VALUE self)
rfptr->pathv = rb_obj_freeze(rb_str_new_cstr(SlaveName));
wfptr->mode = rb_io_mode_flags("w") | FMODE_SYNC;
- wfptr->fd = rb_cloexec_dup(info.fd);
+ wfptr->fd = dup(info.fd);
if (wfptr->fd == -1)
rb_sys_fail("dup()");
rb_update_max_fd(wfptr->fd);
@@ -604,12 +605,11 @@ pty_getpty(int argc, VALUE *argv, VALUE self)
return res;
}
-NORETURN(static void raise_from_check(pid_t pid, int status));
static void
raise_from_check(pid_t pid, int status)
{
const char *state;
- VALUE msg;
+ char buf[1024];
VALUE exc;
#if defined(WIFSTOPPED)
@@ -627,8 +627,8 @@ raise_from_check(pid_t pid, int status)
else {
state = "exited";
}
- msg = rb_sprintf("pty - %s: %ld", state, (long)pid);
- exc = rb_exc_new3(eChildExited, msg);
+ snprintf(buf, sizeof(buf), "pty - %s: %ld", state, (long)pid);
+ exc = rb_exc_new2(eChildExited, buf);
rb_iv_set(exc, "status", rb_last_status_get());
rb_exc_raise(exc);
}
@@ -639,16 +639,15 @@ raise_from_check(pid_t pid, int status)
* PTY.check(pid, true) => nil or raises PTY::ChildExited
*
* Checks the status of the child process specified by +pid+.
- * Returns +nil+ if the process is still alive.
- *
- * If the process is not alive, and +raise+ was true, a PTY::ChildExited
- * exception will be raised. Otherwise it will return a Process::Status
- * instance.
+ * Returns +nil+ if the process is still alive. If the process
+ * is not alive, will return a <tt>Process::Status</tt> or raise
+ * a <tt>PTY::ChildExited</tt> (if +raise+ was true).
*
* +pid+:: The process id of the process to check
- * +raise+:: If +true+ and the process identified by +pid+ is no longer
- * alive a PTY::ChildExited is raised.
+ * +raise+:: If true and the process identified by +pid+ is no longer
+ * alive a <tt>PTY::ChildExited</tt> is raised.
*
+ * Returns nil or a <tt>Process::Status</tt> when +raise+ is false.
*/
static VALUE
pty_check(int argc, VALUE *argv, VALUE self)
@@ -663,8 +662,7 @@ pty_check(int argc, VALUE *argv, VALUE self)
if (!RTEST(exc)) return rb_last_status_get();
raise_from_check(cpid, status);
-
- UNREACHABLE;
+ return Qnil; /* not reached */
}
static VALUE cPTY;
@@ -672,7 +670,7 @@ static VALUE cPTY;
/*
* Document-class: PTY::ChildExited
*
- * Thrown when PTY::check is called for a pid that represents a process that
+ * Thrown when PTY#check is called for a pid that represents a process that
* has exited.
*/
@@ -681,65 +679,12 @@ static VALUE cPTY;
*
* Creates and managed pseudo terminals (PTYs). See also
* http://en.wikipedia.org/wiki/Pseudo_terminal
- *
- * PTY allows you to allocate new terminals using ::open or ::spawn a new
- * terminal with a specific command.
- *
- * == Example
- *
- * In this example we will change the buffering type in the +factor+ command,
- * assuming that factor uses stdio for stdout buffering.
- *
- * If IO.pipe is used instead of PTY.open, this code deadlocks because factor's
- * stdout is fully buffered.
- *
- * # start by requiring the standard library PTY
- * require 'pty'
- *
- * master, slave = PTY.open
- * read, write = IO.pipe
- * pid = spawn("factor", :in=>read, :out=>slave)
- * read.close # we dont need the read
- * slave.close # or the slave
- *
- * # pipe "42" to the factor command
- * write.puts "42"
- * # output the response from factor
- * p master.gets #=> "42: 2 3 7\n"
- *
- * # pipe "144" to factor and print out the response
- * write.puts "144"
- * p master.gets #=> "144: 2 2 2 2 3 3\n"
- * write.close # close the pipe
- *
- * # The result of read operation when pty slave is closed is platform
- * # dependent.
- * ret = begin
- * m.gets # FreeBSD returns nil.
- * rescue Errno::EIO # GNU/Linux raises EIO.
- * nil
- * end
- * p ret #=> nil
- *
- * == License
- *
- * C) Copyright 1998 by Akinori Ito.
- *
- * This software may be redistributed freely for this purpose, in full
- * or in part, provided that this entire copyright notice is included
- * on any copies of this software and applications and derivations thereof.
- *
- * This software is provided on an "as is" basis, without warranty of any
- * kind, either expressed or implied, as to any matter including, but not
- * limited to warranty of fitness of purpose, or merchantability, or
- * results obtained from use of this software.
*/
void
Init_pty()
{
cPTY = rb_define_module("PTY");
- /* :nodoc */
rb_define_module_function(cPTY,"getpty",pty_getpty,-1);
rb_define_module_function(cPTY,"spawn",pty_getpty,-1);
rb_define_singleton_method(cPTY,"check",pty_check,-1);
diff --git a/ext/racc/cparse/cparse.c b/ext/racc/cparse/cparse.c
index b653c3ad1a..3a2a8ae74e 100644
--- a/ext/racc/cparse/cparse.c
+++ b/ext/racc/cparse/cparse.c
@@ -416,12 +416,12 @@ extract_user_token(struct cparse_params *v, VALUE block_args,
return;
}
- if (!RB_TYPE_P(block_args, T_ARRAY)) {
+ if (TYPE(block_args) != T_ARRAY) {
rb_raise(rb_eTypeError,
- "%s() %s %"PRIsVALUE" (must be Array[2])",
+ "%s() %s %s (must be Array[2])",
v->lex_is_iterator ? rb_id2name(v->lexmid) : "next_token",
v->lex_is_iterator ? "yielded" : "returned",
- rb_obj_class(block_args));
+ rb_class2name(CLASS_OF(block_args)));
}
if (RARRAY_LEN(block_args) != 2) {
rb_raise(rb_eArgError,
diff --git a/ext/readline/README.ja b/ext/readline/README.ja
index f1b42f25bc..77ec55c3aa 100644
--- a/ext/readline/README.ja
+++ b/ext/readline/README.ja
@@ -1,20 +1,20 @@
-GNU Readline によるコマンドライン入力インタフェースを提供するモジュール
-です。GNU Readline の互換ライブラリのひとつである Edit Line(libedit) も
-サポートしています。
+GNU Readline ˤ륳ޥɥ饤ϥ󥿥ե󶡤⥸塼
+ǤGNU Readline θߴ饤֥ΤҤȤĤǤ Edit Line(libedit)
+ݡȤƤޤ
GNU Readline:: http://www.gnu.org/directory/readline.html
libedit:: http://www.thrysoee.dk/editline/
-Readline.readline を使用してユーザからの入力を取得できます。このとき、
-GNU Readline のように入力の補完やEmacs のようなキー操作などができます。
+Readline.readline Ѥƥ桼ϤǤޤΤȤ
+GNU Readline Τ褦Ϥ䴰Emacs Τ褦ʥʤɤǤޤ
require "readline"
while buf = Readline.readline("> ", true)
p buf
end
-ユーザが入力した内容を履歴(以下、ヒストリ)として記録することができます。
-定数 Readline::HISTORY を使用してヒストリにアクセスできます。
+桼ϤƤ(ʲҥȥ)ȤƵϿ뤳ȤǤޤ
+ Readline::HISTORY Ѥƥҥȥ˥Ǥޤ
require "readline"
while buf = Readline.readline("> ", true)
@@ -22,40 +22,40 @@ GNU Readline のように入力の補完やEmacs のようなキー操作など
print("-> ", buf, "\n")
end
-使用するライブラリにより、いくつかのメソッドで例外 NotImplementedError
-が発生します。
+Ѥ饤֥ˤꡢĤΥ᥽åɤ㳰 NotImplementedError
+ȯޤ
-$SAFE が 4 の場合、多くのメソッドで例外 SecurityError が発生します。
+$SAFE 4 ξ硢¿Υ᥽åɤ㳰 SecurityError ȯޤ
-== Readline モジュール
+== Readline ⥸塼
-=== モジュール関数
+=== ⥸塼ؿ
readline([prompt, [add_hist]]) -> String | nil
- prompt を出力し、ユーザからのキー入力を待ちます。
- エンターキーの押下などでユーザが文字列を入力し終えると、
- 入力した文字列を返します。
- このとき、add_hist が true であれば、入力した文字列をヒストリに追加します。
+ prompt Ϥ桼ΥϤԤޤ
+ 󥿡βʤɤǥ桼ʸϤȡ
+ Ϥʸ֤ޤ
+ ΤȤadd_hist true ǤСϤʸҥȥɲäޤ
- 何も入力していない状態で EOF(UNIX では ^D) を入力するなどで、
- ユーザからの入力がない場合は nil を返します。
+ ϤƤʤ֤ EOF(UNIX Ǥ ^D) Ϥʤɤǡ
+ 桼Ϥʤ nil ֤ޤ
- 次の条件を全て満たす場合、例外 IOError が発生します。
- 1. 標準入力が tty でない。
- 2. 標準入力をクローズしている。(isatty(2) の errno が EBADF である。)
+ ξ硢㳰 IOError ȯޤ
+ 1. ɸϤ tty Ǥʤ
+ 2. ɸϤ򥯥Ƥ롣(isatty(2) errno EBADF Ǥ롣)
- 本メソッドはスレッドに対応しています。
- 入力待ち状態のときはスレッドコンテキストの切替えが発生します。
+ ܥ᥽åɤϥåɤбƤޤ
+ Ԥ֤ΤȤϥåɥƥȤؤȯޤ
- 入力時には行内編集が可能で、vi モードと Emacs モードが用意されています。
- デフォルトは Emacs モードです。
+ ϻˤϹԽǽǡvi ⡼ɤ Emacs ⡼ɤѰդƤޤ
+ ǥեȤ Emacs ⡼ɤǤ
- 本メソッドには注意事項があります。
- 入力待ちの状態で ^C すると ruby インタプリタが終了し、端末状態を復帰しません。
- これを回避するための例を3つ挙げます。
+ ܥ᥽åɤˤջबޤ
+ Ԥξ֤ ^C ruby 󥿥ץ꥿λü֤ޤ
+ 򤹤뤿3ĵ󤲤ޤ
- * ^CによるInterrupt例外を補足して、端末状態を復帰します:
+ * ^CˤInterrupt㳰­ơü֤ޤ:
require "readline"
@@ -71,7 +71,7 @@ readline([prompt, [add_hist]]) -> String | nil
end
end
- * INTシグナルを補足して、端末状態を復帰します:
+ * INTʥ­ơü֤ޤ:
require "readline"
@@ -82,7 +82,7 @@ readline([prompt, [add_hist]]) -> String | nil
p buf
end
- * 単に ^C を無視する方法もあります:
+ * ñ ^C ̵뤹ˡ⤢ޤ:
require "readline"
@@ -92,8 +92,8 @@ readline([prompt, [add_hist]]) -> String | nil
p buf
end
- 入力履歴 Readline::HISTORY を使用して、空行や直前の入力と同じ内容は入力
- 履歴に残さないということもできます。
+ Readline::HISTORY ѤơԤľϤƱƤ
+ ˻ĤʤȤȤǤޤ
require "readline"
@@ -112,287 +112,287 @@ readline([prompt, [add_hist]]) -> String | nil
print "-> ", buf, "\n"
end
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
-=== クラスメソッド
+=== 饹᥽å
Readline.input = input
- Readline.readline メソッドで使用する入力用の File オブジェクト input
- を指定します。
+ Readline.readline ᥽åɤǻѤѤ File ֥ input
+ ꤷޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.output = output
- Readline.readline メソッドで使用する出力用の File オブジェクト
- output を指定します。
+ Readline.readline ᥽åɤǻѤѤ File ֥
+ output ꤷޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.completion_proc = proc
- ユーザからの入力を補完する時の候補を取得する Proc オブジェクト proc を
- 指定します。proc は、次のものを想定しています。
- 1. call メソッドを持ちます。
- call メソッドを持たない場合、例外 ArgumentError が発生します。
- 2. 引数にユーザからの入力文字列(注1)を取ります。
- 3. 候補の文字列の配列を返します。
+ 桼Ϥ䴰θ Proc ֥ proc
+ ꤷޤproc ϡΤΤꤷƤޤ
+ 1. call ᥽åɤޤ
+ call ᥽åɤʤ硢㳰 ArgumentError ȯޤ
+ 2. ˥桼ʸ(1)ޤ
+ 3. ʸ֤ޤ
- 注1:「/var/lib /v」の後で補完を行うと、
- デフォルトでは proc の引数に「/v」が渡されます。
- このように、ユーザが入力した文字列を
- Readline.completer_word_break_characters に含まれる文字で区切ったも
- のを単語とすると、カーソルがある単語の最初の文字から現在のカーソル位
- 置までの文字列が proc の引数に渡されます。
+ 1:/var/lib /vפθ䴰Ԥȡ
+ ǥեȤǤ proc ΰˡ/vפϤޤ
+ Τ褦ˡ桼Ϥʸ
+ Readline.completer_word_break_characters ˴ޤޤʸǶڤä
+ ΤñȤȡ뤬ñκǽʸ鸽ߤΥ
+ ֤ޤǤʸ proc ΰϤޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.completion_proc -> proc
- ユーザからの入力を補完する時の候補を取得する Proc オブジェクト proc
- を取得します。
+ 桼Ϥ䴰θ Proc ֥ proc
+ ޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.completion_case_fold = bool
- ユーザの入力を補完する際、大文字と小文字を区別する/しないを指定します。
- bool が真ならば区別しません。bool が偽ならば区別します。
+ 桼Ϥ䴰ݡʸȾʸ̤롿ʤꤷޤ
+ bool ʤж̤ޤbool ʤж̤ޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.completion_case_fold -> bool
- ユーザの入力を補完する際、大文字と小文字を区別する/しないを取得します。
- bool が真ならば区別しません。bool が偽ならば区別します。
+ 桼Ϥ䴰ݡʸȾʸ̤롿ʤޤ
+ bool ʤж̤ޤbool ʤж̤ޤ
- なお、Readline.completion_case_fold= メソッドで指定したオブジェクトを
- そのまま取得するので、次のような動作をします。
+ ʤReadline.completion_case_fold= ᥽åɤǻꤷ֥Ȥ
+ Τޤ޼ΤǡΤ褦ư򤷤ޤ
require "readline"
Readline.completion_case_fold = "This is a String."
p Readline.completion_case_fold # => "This is a String."
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.line_buffer -> string
- 入力中の行全体を返します。complete_proc の中で使用することを想定し
- ています。Readline.line_buffer の長さは GNU Readline の rl_end 変数の
- 値と一致します。
+ ιΤ֤ޤcomplete_proc ǻѤ뤳Ȥꤷ
+ ƤޤReadline.line_buffer Ĺ GNU Readline rl_end ѿ
+ ͤȰפޤ
Readline.point -> int
- 現在のカーソルの位置を返します。
- Readline モジュールは補完対象の単語の開始位置の情報を提供していません。
- しかしながら、 completion_proc の中で入力した単語 text と
- Readline.point を使用することで開始位置を導くことができます。
+ ߤΥΰ֤֤ޤ
+ Readline ⥸塼䴰оݤñγϰ֤ξ󶡤Ƥޤ
+ ʤ顢 completion_proc Ϥñ text
+ Readline.point Ѥ뤳Ȥdzϰ֤ƳȤǤޤ
- 開始位置 = 入力した単語の長さ - Readline.point
+ ϰ = ϤñĹ - Readline.point
Readline.vi_editing_mode -> nil
- 編集モードを vi モードにします。
- vi モードの詳細は、GNU Readline のマニュアルを参照してください。
+ Խ⡼ɤ vi ⡼ɤˤޤ
+ vi ⡼ɤξܺ٤ϡGNU Readline Υޥ˥奢򻲾ȤƤ
- サポートしていない環境では、例外 NotImplementedError が発生します。
+ ݡȤƤʤĶǤϡ㳰 NotImplementedError ȯޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.vi_editing_mode? -> bool
- 編集モードが vi モードの場合、true を返します。そうでなければ false
- を返します。
+ Խ⡼ɤ vi ⡼ɤξ硢true ֤ޤǤʤ false
+ ֤ޤ
- サポートしていない環境では、例外 NotImplementedError が発生します。
+ ݡȤƤʤĶǤϡ㳰 NotImplementedError ȯޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.emacs_editing_mode -> nil
- 編集モードを Emacs モードにします。
- デフォルトは Emacs モードです。
- Emacs モードの詳細は、GNU Readline のマニュアルを参照してください。
+ Խ⡼ɤ Emacs ⡼ɤˤޤ
+ ǥեȤ Emacs ⡼ɤǤ
+ Emacs ⡼ɤξܺ٤ϡGNU Readline Υޥ˥奢򻲾ȤƤ
- サポートしていない環境では、例外 NotImplementedError が発生します。
+ ݡȤƤʤĶǤϡ㳰 NotImplementedError ȯޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.emacs_editing_mode? -> bool
- 編集モードが Emacs モードの場合、true を返します。そうでなければ false
- を返します。
+ Խ⡼ɤ Emacs ⡼ɤξ硢true ֤ޤǤʤ false
+ ֤ޤ
- サポートしていない環境では、例外 NotImplementedError が発生します。
+ ݡȤƤʤĶǤϡ㳰 NotImplementedError ȯޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.completion_append_character = char
- ユーザの入力の補完が完了した場合に、最後に付加する文字 char を指定し
- ます。半角スペース「" "」などの単語を区切る文字を指定すれば、連続して
- 入力する際に便利です。
+ 桼Ϥ䴰λˡǸղäʸ char ꤷ
+ ޤȾѥڡ" "פʤɤñڤʸꤹСϢ³
+ ϤݤǤ
- 使用例:
+ :
require "readline"
Readline.readline("> ", true)
Readline.completion_append_character = " "
- 実行例:
+ ¹:
>
- ここで "/var/li" を入力します。
+ "/var/li" Ϥޤ
> /var/li
- ここで TAB キーを入力します。
+ TAB Ϥޤ
> /var/lib
- "b" が補完され、最後に " " が追加されるので、"/usr" を連続して入力できます。
+ "b" 䴰졢Ǹ " " ɲäΤǡ"/usr" Ϣ³ϤǤޤ
> /var/lib /usr
- なお、1文字しか指定することはできません。
- 例えば、"string"を指定した場合は最初の文字である"s"だけを使用します。
+ ʤ1ʸꤹ뤳ȤϤǤޤ
+ 㤨С"string"ꤷϺǽʸǤ"s"Ѥޤ
require "readline"
Readline.completion_append_character = "string"
p Readline.completion_append_character # => "s"
- サポートしていない環境では、例外 NotImplementedError が発生します。
+ ݡȤƤʤĶǤϡ㳰 NotImplementedError ȯޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.completion_append_character -> char
- ユーザの入力の補完が完了した場合に、最後に付加する文字を取得します。
- デフォルトは空白 (" ") です。
+ 桼Ϥ䴰λˡǸղäʸޤ
+ ǥեȤ϶ (" ") Ǥ
- サポートしていない環境では、例外 NotImplementedError が発生します。
+ ݡȤƤʤĶǤϡ㳰 NotImplementedError ȯޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.basic_word_break_characters = string
- ユーザの入力の補完を行う際、単語の区切りを示す複数の文字で構成される
- 文字列 string を指定します。
+ 桼Ϥ䴰Ԥݡñζڤ򼨤ʣʸǹ
+ ʸ string ꤷޤ
- GNU Readline のデフォルトの値は、Bash の補完処理で使用している文字列
- " \t\n\"\\'`@$><=;|&{(" (スペースを含む) になっています。
+ GNU Readline ΥǥեȤͤϡBash 䴰ǻѤƤʸ
+ " \t\n\"\\'`@$><=;|&{(" (ڡޤ) ˤʤäƤޤ
- サポートしていない環境では、例外 NotImplementedError が発生します。
+ ݡȤƤʤĶǤϡ㳰 NotImplementedError ȯޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.basic_word_break_characters -> string
- ユーザの入力の補完を行う際、単語の区切りを示す複数の文字で構成される
- 文字列を取得します。
+ 桼Ϥ䴰Ԥݡñζڤ򼨤ʣʸǹ
+ ʸޤ
- サポートしていない環境では、例外 NotImplementedError が発生します。
+ ݡȤƤʤĶǤϡ㳰 NotImplementedError ȯޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.completer_word_break_characters = string
- ユーザの入力の補完を行う際、単語の区切りを示す複数の文字で構成される
- 文字列 string を指定します。
- Readline.basic_word_break_characters= との違いは、
- GNU Readline の rl_complete_internal 関数で使用されることです。
+ 桼Ϥ䴰Ԥݡñζڤ򼨤ʣʸǹ
+ ʸ string ꤷޤ
+ Readline.basic_word_break_characters= Ȥΰ㤤ϡ
+ GNU Readline rl_complete_internal ؿǻѤ뤳ȤǤ
- GNU Readline のデフォルトの値は、
- Readline.basic_word_break_characters と同じです。
+ GNU Readline ΥǥեȤͤϡ
+ Readline.basic_word_break_characters ƱǤ
- サポートしていない環境では、例外 NotImplementedError が発生します。
+ ݡȤƤʤĶǤϡ㳰 NotImplementedError ȯޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.completer_word_break_characters -> string
- ユーザの入力の補完を行う際、単語の区切りを示す複数の文字で構成された
- 文字列を取得します。
+ 桼Ϥ䴰Ԥݡñζڤ򼨤ʣʸǹ줿
+ ʸޤ
- サポートしていない環境では、例外 NotImplementedError が発生します。
+ ݡȤƤʤĶǤϡ㳰 NotImplementedError ȯޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.basic_quote_characters = string
- スペースなどの単語の区切りをクオートするための複数の文字で構成される
- 文字列 string を指定します。
+ ڡʤɤñζڤ򥯥Ȥ뤿ʣʸǹ
+ ʸ string ꤷޤ
- サポートしていない環境では、例外 NotImplementedError が発生します。
+ ݡȤƤʤĶǤϡ㳰 NotImplementedError ȯޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.basic_quote_characters -> string
- スペースなどの単語の区切りをクオートするための複数の文字で構成される
- 文字列を取得します。
+ ڡʤɤñζڤ򥯥Ȥ뤿ʣʸǹ
+ ʸޤ
- サポートしていない環境では、例外 NotImplementedError が発生します。
+ ݡȤƤʤĶǤϡ㳰 NotImplementedError ȯޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.completer_quote_characters = string
- ユーザの入力の補完を行う際、スペースなどの単語の区切りを
- クオートするための複数の文字で構成される文字列 string を指定します。
- 指定した文字の間では、Readline.completer_word_break_characters=
- で指定した文字列に含まれる文字も、普通の文字列として扱われます。
+ 桼Ϥ䴰Ԥݡڡʤɤñζڤ
+ Ȥ뤿ʣʸǹʸ string ꤷޤ
+ ꤷʸδ֤ǤϡReadline.completer_word_break_characters=
+ ǻꤷʸ˴ޤޤʸ⡢̤ʸȤưޤ
- サポートしていない環境では、例外 NotImplementedError が発生します。
+ ݡȤƤʤĶǤϡ㳰 NotImplementedError ȯޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.completer_quote_characters -> string
- ユーザの入力の補完を行う際、スペースなどの単語の区切りを
- クオートするための複数の文字で構成される文字列を取得します。
+ 桼Ϥ䴰Ԥݡڡʤɤñζڤ
+ Ȥ뤿ʣʸǹʸޤ
- サポートしていない環境では、例外 NotImplementedError が発生します。
+ ݡȤƤʤĶǤϡ㳰 NotImplementedError ȯޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.filename_quote_characters = string
- ユーザの入力時にファイル名の補完を行う際、スペースなどの単語の区切りを
- クオートするための複数の文字で構成される文字列 string を指定します。
+ 桼ϻ˥ե̾䴰Ԥݡڡʤɤñζڤ
+ Ȥ뤿ʣʸǹʸ string ꤷޤ
- GNU Readline のデフォルト値は nil です。
+ GNU Readline Υǥեͤ nil Ǥ
- サポートしていない環境では、例外 NotImplementedError が発生します。
+ ݡȤƤʤĶǤϡ㳰 NotImplementedError ȯޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
Readline.filename_quote_characters -> string
- ユーザの入力時にファイル名の補完を行う際、スペースなどの単語の区切りを
- クオートするための複数の文字で構成される文字列を取得します。
+ 桼ϻ˥ե̾䴰Ԥݡڡʤɤñζڤ
+ Ȥ뤿ʣʸǹʸޤ
- サポートしていない環境では、例外 NotImplementedError が発生します。
+ ݡȤƤʤĶǤϡ㳰 NotImplementedError ȯޤ
- $SAFE が 4 の場合、例外 SecurityError が発生します。
+ $SAFE 4 ξ硢㳰 SecurityError ȯޤ
-=== クラス定数
+=== 饹
HISTORY
- 定数 HISTORY を使用してヒストリにアクセスできます。
- Enumerable モジュールを extend しており、
- 配列のように振る舞うことができます。
- 例えば、HISTORY[4] により 5 番目に入力した内容を取り出すことができます。
+ HISTORY Ѥƥҥȥ˥Ǥޤ
+ Enumerable ⥸塼 extend Ƥꡢ
+ Τ褦˿񤦤ȤǤޤ
+ 㤨СHISTORY[4] ˤ 5 ܤϤƤФȤǤޤ
require "readline"
Readline::HISTORY.push("a", "b", "c", "d", "e")
p Readline::HISTORY[4] # => "e"
- 実装しているメソッドを次に挙げます。
+ Ƥ᥽åɤ򼡤˵󤲤ޤ
* HISTORY.to_s -> "HISTORY"
* HISTORY[index] -> string
* HISTORY[index] = string
@@ -407,31 +407,31 @@ HISTORY
* HISTORY.delete_at(index) -> string
* HISTORY.clear -> self
- サポートしていない環境では、次のメソッドで例外 NotImplementedError が
- 発生します。
+ ݡȤƤʤĶǤϡΥ᥽åɤ㳰 NotImplementedError
+ ȯޤ
* HISTORY[index] = string
* HISTORY.pop -> string
* HISTORY.shift -> string
* HISTORY.delete_at(index) -> string
* HISTORY.clear -> self
- $SAFE が 4 の場合、ヒストリにアクセスしたときに例外 SecurityError が
- 発生します。
+ $SAFE 4 ξ硢ҥȥ˥Ȥ㳰 SecurityError
+ ȯޤ
FILENAME_COMPLETION_PROC
- ファイル名の補完を行う call メソッドを持つオブジェクトです。
+ ե̾䴰Ԥ call ᥽åɤĥ֥ȤǤ
- Readline.completion_proc= により、ユーザの入力時にファイル名の補完を
- 行うように設定するために使用することを想定してます。
+ Readline.completion_proc= ˤꡢ桼ϻ˥ե̾䴰
+ Ԥ褦ꤹ뤿˻Ѥ뤳ȤꤷƤޤ
USERNAME_COMPLETION_PROC
- ユーザ名の補完を行う call メソッドを持つオブジェクトです。
+ 桼̾䴰Ԥ call ᥽åɤĥ֥ȤǤ
- Readline.completion_proc= により、ユーザの入力時にユーザ名の補完を行
- うように設定するために使用することを想定してます。
+ Readline.completion_proc= ˤꡢ桼ϻ˥桼̾䴰
+ 褦ꤹ뤿˻Ѥ뤳ȤꤷƤޤ
VERSION
- 使用している GNU Readline または libedit のバージョンです。
+ ѤƤ GNU Readline ޤ libedit ΥСǤ
diff --git a/ext/readline/extconf.rb b/ext/readline/extconf.rb
index 95cc91e46f..e1c37ce5fa 100644
--- a/ext/readline/extconf.rb
+++ b/ext/readline/extconf.rb
@@ -1,26 +1,26 @@
require "mkmf"
-readline = Struct.new(:headers, :extra_check).new(["stdio.h"])
+$readline_headers = ["stdio.h"]
-def readline.have_header(header)
- if super(header, &extra_check)
- headers.push(header)
+def have_readline_header(header)
+ if have_header(header, &$readline_extra_check)
+ $readline_headers.push(header)
return true
else
return false
end
end
-def readline.have_var(var)
- return super(var, headers)
+def have_readline_var(var)
+ return have_var(var, $readline_headers)
end
-def readline.have_func(func)
- return super(func, headers)
+def have_readline_func(func)
+ return have_func(func, $readline_headers)
end
-def readline.have_type(type)
- return super(type, headers)
+def have_readline_macro(macro)
+ return have_macro(macro, $readline_headers)
end
dir_config('curses')
@@ -37,68 +37,62 @@ have_library("ncurses", "tgetnum") ||
case enable_libedit
when true
# --enable-libedit
- unless (readline.have_header("editline/readline.h") ||
- readline.have_header("readline/readline.h")) &&
+ unless (have_readline_header("editline/readline.h") ||
+ have_readline_header("readline/readline.h")) &&
have_library("edit", "readline")
raise "libedit not found"
end
when false
# --disable-libedit
- unless ((readline.have_header("readline/readline.h") &&
- readline.have_header("readline/history.h")) &&
+ unless ((have_readline_header("readline/readline.h") &&
+ have_readline_header("readline/history.h")) &&
have_library("readline", "readline"))
raise "readline not found"
end
else
# does not specify
- unless ((readline.have_header("readline/readline.h") &&
- readline.have_header("readline/history.h")) &&
+ unless ((have_readline_header("readline/readline.h") &&
+ have_readline_header("readline/history.h")) &&
(have_library("readline", "readline") ||
have_library("edit", "readline"))) ||
- (readline.have_header("editline/readline.h") &&
+ (have_readline_header("editline/readline.h") &&
have_library("edit", "readline"))
raise "readline nor libedit not found"
end
end
-readline.have_func("rl_getc")
-readline.have_func("rl_getc_function")
-readline.have_func("rl_filename_completion_function")
-readline.have_func("rl_username_completion_function")
-readline.have_func("rl_completion_matches")
-readline.have_func("rl_refresh_line")
-readline.have_var("rl_deprep_term_function")
-readline.have_var("rl_completion_append_character")
-readline.have_var("rl_basic_word_break_characters")
-readline.have_var("rl_completer_word_break_characters")
-readline.have_var("rl_basic_quote_characters")
-readline.have_var("rl_completer_quote_characters")
-readline.have_var("rl_filename_quote_characters")
-readline.have_var("rl_attempted_completion_over")
-readline.have_var("rl_library_version")
-readline.have_var("rl_editing_mode")
-readline.have_var("rl_line_buffer")
-readline.have_var("rl_point")
+have_readline_func("rl_getc")
+have_readline_func("rl_getc_function")
+have_readline_func("rl_filename_completion_function")
+have_readline_func("rl_username_completion_function")
+have_readline_func("rl_completion_matches")
+have_readline_func("rl_refresh_line")
+have_readline_var("rl_deprep_term_function")
+have_readline_var("rl_completion_append_character")
+have_readline_var("rl_basic_word_break_characters")
+have_readline_var("rl_completer_word_break_characters")
+have_readline_var("rl_basic_quote_characters")
+have_readline_var("rl_completer_quote_characters")
+have_readline_var("rl_filename_quote_characters")
+have_readline_var("rl_attempted_completion_over")
+have_readline_var("rl_library_version")
+have_readline_var("rl_editing_mode")
+have_readline_var("rl_line_buffer")
+have_readline_var("rl_point")
# workaround for native windows.
-/mswin|bccwin|mingw/ !~ RUBY_PLATFORM && readline.have_var("rl_event_hook")
-/mswin|bccwin|mingw/ !~ RUBY_PLATFORM && readline.have_var("rl_catch_sigwinch")
-/mswin|bccwin|mingw/ !~ RUBY_PLATFORM && readline.have_var("rl_catch_signals")
-readline.have_var("rl_pre_input_hook")
-readline.have_var("rl_special_prefixes")
-readline.have_func("rl_cleanup_after_signal")
-readline.have_func("rl_free_line_state")
-readline.have_func("rl_clear_signals")
-readline.have_func("rl_set_screen_size")
-readline.have_func("rl_get_screen_size")
-readline.have_func("rl_vi_editing_mode")
-readline.have_func("rl_emacs_editing_mode")
-readline.have_func("replace_history_entry")
-readline.have_func("remove_history")
-readline.have_func("clear_history")
-readline.have_func("rl_redisplay")
-readline.have_func("rl_insert_text")
-unless readline.have_type("rl_hook_func_t*")
- $defs << "-Drl_hook_func_t=Function"
-end
-
+/mswin|bccwin|mingw/ !~ RUBY_PLATFORM && have_readline_var("rl_event_hook")
+/mswin|bccwin|mingw/ !~ RUBY_PLATFORM && have_readline_var("rl_catch_sigwinch")
+/mswin|bccwin|mingw/ !~ RUBY_PLATFORM && have_readline_var("rl_catch_signals")
+have_readline_func("rl_cleanup_after_signal")
+have_readline_func("rl_free_line_state")
+have_readline_func("rl_clear_signals")
+have_readline_func("rl_set_screen_size")
+have_readline_func("rl_get_screen_size")
+have_readline_func("rl_vi_editing_mode")
+have_readline_func("rl_emacs_editing_mode")
+have_readline_func("replace_history_entry")
+have_readline_func("remove_history")
+have_readline_func("clear_history")
+have_readline_macro("RL_PROMPT_START_IGNORE")
+have_readline_macro("RL_PROMPT_END_IGNORE")
create_makefile("readline")
diff --git a/ext/readline/readline.c b/ext/readline/readline.c
index fe2ad7810d..9066004f8d 100644
--- a/ext/readline/readline.c
+++ b/ext/readline/readline.c
@@ -48,7 +48,7 @@ static VALUE mReadline;
#define EDIT_LINE_LIBRARY_VERSION "EditLine wrapper"
#ifndef USE_INSERT_IGNORE_ESCAPE
-# if !defined(HAVE_EDITLINE_READLINE_H) && defined(RL_PROMPT_START_IGNORE) && defined(RL_PROMPT_END_IGNORE)
+# if !defined(HAVE_EDITLINE_READLINE_H) && defined(HAVE_RL_PROMPT_START_IGNORE) && defined(HAVE_RL_PROMPT_END_IGNORE)
# define USE_INSERT_IGNORE_ESCAPE 1
# else
# define USE_INSERT_IGNORE_ESCAPE 0
@@ -61,12 +61,6 @@ static ID completion_proc, completion_case_fold;
#if USE_INSERT_IGNORE_ESCAPE
static ID id_orig_prompt, id_last_prompt;
#endif
-#if defined(HAVE_RL_PRE_INPUT_HOOK)
-static ID id_pre_input_hook;
-#endif
-#if defined(HAVE_RL_SPECIAL_PREFIXES)
-static ID id_special_prefixes;
-#endif
#ifndef HAVE_RL_FILENAME_COMPLETION_FUNCTION
# define rl_filename_completion_function filename_completion_function
@@ -130,6 +124,7 @@ static char **readline_attempted_completion_function(const char *text,
#if defined HAVE_RL_GETC_FUNCTION
static VALUE readline_instream;
+static ID id_getbyte;
#ifndef HAVE_RL_GETC
#define rl_getc(f) EOF
@@ -172,21 +167,9 @@ readline_getc(FILE *input)
}
}
#endif
- c = rb_io_getbyte(readline_instream);
+ c = rb_funcall(readline_instream, id_getbyte, 0, 0);
if (NIL_P(c)) return EOF;
-#ifdef ESC
- if (c == INT2FIX(ESC) &&
- RL_ISSTATE(RL_STATE_ISEARCH) && /* isn't needed in other states? */
- rb_io_read_pending(ifp)) {
- int meta = 0;
- c = rb_io_getbyte(readline_instream);
- if (FIXNUM_P(c) && isascii(FIX2INT(c))) meta = 1;
- rb_io_ungetbyte(readline_instream, c);
- if (meta) rl_execute_next(ESC);
- return ESC;
- }
-#endif
- return FIX2INT(c);
+ return NUM2CHR(c);
}
#elif defined HAVE_RL_EVENT_HOOK
#define BUSY_WAIT 0
@@ -485,108 +468,6 @@ readline_s_set_output(VALUE self, VALUE output)
return output;
}
-#if defined(HAVE_RL_PRE_INPUT_HOOK)
-/*
- * call-seq:
- * Readline.pre_input_hook = proc
- *
- * Specifies a Proc object +proc+ to call after the first prompt has
- * been printed and just before readline starts reading input
- * characters.
- *
- * See GNU Readline's rl_pre_input_hook variable.
- *
- * Raises ArgumentError if +proc+ does not respond to the call method.
- *
- * Raises SecurityError if $SAFE is 4.
- */
-static VALUE
-readline_s_set_pre_input_hook(VALUE self, VALUE proc)
-{
- rb_secure(4);
- if (!NIL_P(proc) && !rb_respond_to(proc, rb_intern("call")))
- rb_raise(rb_eArgError, "argument must respond to `call'");
- return rb_ivar_set(mReadline, id_pre_input_hook, proc);
-}
-
-/*
- * call-seq:
- * Readline.pre_input_hook -> proc
- *
- * Returns a Proc object +proc+ to call after the first prompt has
- * been printed and just before readline starts reading input
- * characters. The default is nil.
- *
- * Raises SecurityError if $SAFE is 4.
- */
-static VALUE
-readline_s_get_pre_input_hook(VALUE self)
-{
- rb_secure(4);
- return rb_attr_get(mReadline, id_pre_input_hook);
-}
-
-static int
-readline_pre_input_hook(void)
-{
- VALUE proc;
-
- proc = rb_attr_get(mReadline, id_pre_input_hook);
- if (!NIL_P(proc))
- rb_funcall(proc, rb_intern("call"), 0);
- return 0;
-}
-#else
-#define readline_s_set_pre_input_hook rb_f_notimplement
-#define readline_s_get_pre_input_hook rb_f_notimplement
-#endif
-
-#if defined(HAVE_RL_INSERT_TEXT)
-/*
- * call-seq:
- * Readline.insert_text(string) -> self
- *
- * Insert text into the line at the current cursor position.
- *
- * See GNU Readline's rl_insert_text function.
- *
- * Raises SecurityError if $SAFE is 4.
- */
-static VALUE
-readline_s_insert_text(VALUE self, VALUE str)
-{
- rb_secure(4);
- OutputStringValue(str);
- rl_insert_text(RSTRING_PTR(str));
- return self;
-}
-#else
-#define readline_s_insert_text rb_f_notimplement
-#endif
-
-#if defined(HAVE_RL_REDISPLAY)
-/*
- * call-seq:
- * Readline.redisplay -> self
- *
- * Change what's displayed on the screen to reflect the current
- * contents.
- *
- * See GNU Readline's rl_redisplay function.
- *
- * Raises SecurityError if $SAFE is 4.
- */
-static VALUE
-readline_s_redisplay(VALUE self)
-{
- rb_secure(4);
- rl_redisplay();
- return self;
-}
-#else
-#define readline_s_redisplay rb_f_notimplement
-#endif
-
/*
* call-seq:
* Readline.completion_proc = proc
@@ -793,7 +674,7 @@ readline_attempted_completion_function(const char *text, int start, int end)
matches = RARRAY_LEN(ary);
if (matches == 0) return NULL;
result = (char**)malloc((matches + 2)*sizeof(char*));
- if (result == NULL) rb_memerror();
+ if (result == NULL) rb_raise(rb_eNoMemError, "failed to allocate memory");
enc = rb_locale_encoding();
encobj = rb_enc_from_encoding(enc);
for (i = 0; i < matches; i++) {
@@ -832,8 +713,7 @@ readline_attempted_completion_function(const char *text, int start, int end)
low = i1;
}
- result[0] = (char*)malloc(low + 1);
- if (result[0] == NULL) rb_memerror();
+ result[0] = ALLOC_N(char, low + 1);
strncpy(result[0], result[1], low);
result[0][low] = '\0';
}
@@ -1078,7 +958,7 @@ readline_s_get_completion_append_character(VALUE self)
*
* Sets the basic list of characters that signal a break between words
* for the completer routine. The default is the characters which
- * break words for completion in Bash: " \t\n\"\\'`@$><=;|&{(".
+ * break words for completion in Bash: "\t\n\"\\'`@$><=;|&{(".
*
* Raises NotImplementedError if the using readline library does not support.
*
@@ -1193,74 +1073,6 @@ readline_s_get_completer_word_break_characters(VALUE self, VALUE str)
#define readline_s_get_completer_word_break_characters rb_f_notimplement
#endif
-#if defined(HAVE_RL_SPECIAL_PREFIXES)
-/*
- * call-seq:
- * Readline.special_prefixes = string
- *
- * Sets the list of characters that are word break characters, but
- * should be left in text when it is passed to the completion
- * function. Programs can use this to help determine what kind of
- * completing to do. For instance, Bash sets this variable to "$@" so
- * that it can complete shell variables and hostnames.
- *
- * See GNU Readline's rl_special_prefixes variable.
- *
- * Raises NotImplementedError if the using readline library does not support.
- *
- * Raises SecurityError exception if $SAFE is 4.
- */
-static VALUE
-readline_s_set_special_prefixes(VALUE self, VALUE str)
-{
- rb_secure(4);
- if (!NIL_P(str)) {
- OutputStringValue(str);
- str = rb_str_dup_frozen(str);
- RBASIC(str)->klass = 0;
- }
- rb_ivar_set(mReadline, id_special_prefixes, str);
- if (NIL_P(str)) {
- rl_special_prefixes = NULL;
- }
- else {
- rl_special_prefixes = RSTRING_PTR(str);
- }
- return self;
-}
-
-/*
- * call-seq:
- * Readline.special_prefixes -> string
- *
- * Gets the list of characters that are word break characters, but
- * should be left in text when it is passed to the completion
- * function.
- *
- * See GNU Readline's rl_special_prefixes variable.
- *
- * Raises NotImplementedError if the using readline library does not support.
- *
- * Raises SecurityError exception if $SAFE is 4.
- */
-static VALUE
-readline_s_get_special_prefixes(VALUE self)
-{
- VALUE str;
- rb_secure(4);
- if (rl_special_prefixes == NULL) return Qnil;
- str = rb_ivar_get(mReadline, id_special_prefixes);
- if (!NIL_P(str)) {
- str = rb_str_dup_frozen(str);
- RBASIC(str)->klass = rb_cString;
- }
- return str;
-}
-#else
-#define readline_s_set_special_prefixes rb_f_notimplement
-#define readline_s_get_special_prefixes rb_f_notimplement
-#endif
-
#ifdef HAVE_RL_BASIC_QUOTE_CHARACTERS
/*
* call-seq:
@@ -1566,8 +1378,7 @@ rb_remove_history(int index)
return Qnil;
#else
rb_notimplement();
-
- UNREACHABLE;
+ return Qnil; /* not reached */
#endif
}
@@ -1715,6 +1526,7 @@ Init_readline()
/* and using_history() call rl_initialize(). */
/* This assignment should be placed before using_history() */
rl_getc_function = readline_getc;
+ id_getbyte = rb_intern_const("getbyte");
#elif defined HAVE_RL_EVENT_HOOK
rl_event_hook = readline_event;
#endif
@@ -1723,12 +1535,6 @@ Init_readline()
completion_proc = rb_intern(COMPLETION_PROC);
completion_case_fold = rb_intern(COMPLETION_CASE_FOLD);
-#if defined(HAVE_RL_PRE_INPUT_HOOK)
- id_pre_input_hook = rb_intern("pre_input_hook");
-#endif
-#if defined(HAVE_RL_SPECIAL_PREFIXES)
- id_special_prefixes = rb_intern("special_prefixes");
-#endif
mReadline = rb_define_module("Readline");
rb_define_module_function(mReadline, "readline",
@@ -1787,18 +1593,6 @@ Init_readline()
readline_s_get_filename_quote_characters, 0);
rb_define_singleton_method(mReadline, "refresh_line",
readline_s_refresh_line, 0);
- rb_define_singleton_method(mReadline, "pre_input_hook=",
- readline_s_set_pre_input_hook, 1);
- rb_define_singleton_method(mReadline, "pre_input_hook",
- readline_s_get_pre_input_hook, 0);
- rb_define_singleton_method(mReadline, "insert_text",
- readline_s_insert_text, 1);
- rb_define_singleton_method(mReadline, "redisplay",
- readline_s_redisplay, 0);
- rb_define_singleton_method(mReadline, "special_prefixes=",
- readline_s_set_special_prefixes, 1);
- rb_define_singleton_method(mReadline, "special_prefixes",
- readline_s_get_special_prefixes, 0);
#if USE_INSERT_IGNORE_ESCAPE
CONST_ID(id_orig_prompt, "orig_prompt");
@@ -1882,12 +1676,12 @@ Init_readline()
rb_define_const(mReadline, "VERSION", version);
rl_attempted_completion_function = readline_attempted_completion_function;
-#if defined(HAVE_RL_PRE_INPUT_HOOK)
- rl_pre_input_hook = (rl_hook_func_t *)readline_pre_input_hook;
-#endif
#ifdef HAVE_RL_CATCH_SIGNALS
rl_catch_signals = 0;
#endif
+#ifdef HAVE_RL_CATCH_SIGWINCH
+ rl_catch_sigwinch = 0;
+#endif
#ifdef HAVE_RL_CLEAR_SIGNALS
rl_clear_signals();
#endif
diff --git a/ext/ripper/depend b/ext/ripper/depend
index 776977847d..40d54dab77 100644
--- a/ext/ripper/depend
+++ b/ext/ripper/depend
@@ -7,7 +7,7 @@ BISON = bison
src: ripper.c eventids1.c eventids2table.c
-ripper.o: ripper.c id.c lex.c eventids1.c eventids2.c eventids2table.c \
+ripper.o: ripper.c lex.c eventids1.c eventids2.c eventids2table.c \
$(hdrdir)/ruby/ruby.h $(arch_hdrdir)/ruby/config.h \
$(hdrdir)/ruby/defines.h $(hdrdir)/ruby/intern.h \
$(hdrdir)/ruby/encoding.h $(hdrdir)/missing.h \
@@ -25,9 +25,7 @@ static: check
ripper.y: $(srcdir)/tools/preproc.rb $(top_srcdir)/parse.y
$(ECHO) extracting $@ from $(top_srcdir)/parse.y
- $(Q) $(RUBY) $(top_srcdir)/tool/id2token.rb --path-separator=.$(PATH_SEPARATOR)./ --vpath=$(VPATH) id.h $(top_srcdir)/parse.y > ripper.tmp.y
- $(Q) $(RUBY) $(srcdir)/tools/preproc.rb ripper.tmp.y --output=$@
- $(Q) $(RM) ripper.tmp.y
+ $(Q) $(RUBY) $(srcdir)/tools/preproc.rb $(top_srcdir)/parse.y --output=$@
check: $(GEN) $(SRC1) $(SRC2)
$(ECHO) checking $(SRC1) and $(SRC2)
diff --git a/ext/ripper/eventids2.c b/ext/ripper/eventids2.c
index 841a18c583..8b0d9c3757 100644
--- a/ext/ripper/eventids2.c
+++ b/ext/ripper/eventids2.c
@@ -38,8 +38,6 @@ static ID ripper_id_tstring_content;
static ID ripper_id_tstring_end;
static ID ripper_id_words_beg;
static ID ripper_id_qwords_beg;
-static ID ripper_id_qsymbols_beg;
-static ID ripper_id_symbols_beg;
static ID ripper_id_words_sep;
static ID ripper_id_regexp_beg;
static ID ripper_id_regexp_end;
@@ -61,7 +59,7 @@ static ID ripper_id_CHAR;
#include "eventids2table.c"
static void
-ripper_init_eventids2(void)
+ripper_init_eventids2(VALUE self)
{
ripper_id_backref = rb_intern_const("on_backref");
ripper_id_backtick = rb_intern_const("on_backtick");
@@ -93,8 +91,6 @@ ripper_init_eventids2(void)
ripper_id_tstring_end = rb_intern_const("on_tstring_end");
ripper_id_words_beg = rb_intern_const("on_words_beg");
ripper_id_qwords_beg = rb_intern_const("on_qwords_beg");
- ripper_id_qsymbols_beg = rb_intern_const("on_qsymbols_beg");
- ripper_id_symbols_beg = rb_intern_const("on_symbols_beg");
ripper_id_words_sep = rb_intern_const("on_words_sep");
ripper_id_regexp_beg = rb_intern_const("on_regexp_beg");
ripper_id_regexp_end = rb_intern_const("on_regexp_end");
@@ -112,6 +108,8 @@ ripper_init_eventids2(void)
ripper_id_heredoc_end = rb_intern_const("on_heredoc_end");
ripper_id___end__ = rb_intern_const("on___end__");
ripper_id_CHAR = rb_intern_const("on_CHAR");
+
+ ripper_init_eventids2_table(self);
}
static const struct token_assoc {
@@ -232,18 +230,14 @@ static const struct token_assoc {
{tOROP, &ripper_id_op},
{tPOW, &ripper_id_op},
{tQWORDS_BEG, &ripper_id_qwords_beg},
- {tQSYMBOLS_BEG, &ripper_id_qsymbols_beg},
- {tSYMBOLS_BEG, &ripper_id_symbols_beg},
{tREGEXP_BEG, &ripper_id_regexp_beg},
{tREGEXP_END, &ripper_id_regexp_end},
{tRPAREN, &ripper_id_rparen},
{tRSHFT, &ripper_id_op},
{tSTAR, &ripper_id_op},
- {tDSTAR, &ripper_id_op},
{tSTRING_BEG, &ripper_id_tstring_beg},
{tSTRING_CONTENT, &ripper_id_tstring_content},
{tSTRING_DBEG, &ripper_id_embexpr_beg},
- {tSTRING_DEND, &ripper_id_embexpr_end},
{tSTRING_DVAR, &ripper_id_embvar},
{tSTRING_END, &ripper_id_tstring_end},
{tSYMBEG, &ripper_id_symbeg},
@@ -282,6 +276,4 @@ ripper_token2eventid(int tok)
return ripper_id_CHAR;
}
rb_raise(rb_eRuntimeError, "[Ripper FATAL] unknown token %d", tok);
-
- UNREACHABLE;
}
diff --git a/ext/ripper/extconf.rb b/ext/ripper/extconf.rb
index db54e5ca2a..4914d70e78 100644
--- a/ext/ripper/extconf.rb
+++ b/ext/ripper/extconf.rb
@@ -6,7 +6,8 @@ require 'rbconfig'
def main
unless find_executable('bison')
unless File.exist?('ripper.c') or File.exist?("#{$srcdir}/ripper.c")
- raise 'missing bison; abort'
+ Logging.message 'missing bison; abort'
+ return
end
end
$objs = %w(ripper.o)
diff --git a/ext/ripper/lib/ripper.rb b/ext/ripper/lib/ripper.rb
index 542bd405d2..cb19da334a 100644
--- a/ext/ripper/lib/ripper.rb
+++ b/ext/ripper/lib/ripper.rb
@@ -2,72 +2,3 @@ require 'ripper/core'
require 'ripper/lexer'
require 'ripper/filter'
require 'ripper/sexp'
-
-# Ripper is a Ruby script parser.
-#
-# You can get information from the parser with event-based style.
-# Information such as abstract syntax trees or simple lexical analysis of the
-# Ruby program.
-#
-# == Usage
-#
-# Ripper provides an easy interface for parsing your program into a symbolic
-# expression tree (or S-expression).
-#
-# Understanding the output of the parser may come as a challenge, it's
-# recommended you use PP to format the output for legibility.
-#
-# require 'ripper'
-# require 'pp'
-#
-# pp Ripper.sexp('def hello(world) "Hello, #{world}!"; end')
-# #=> [:program,
-# [[:def,
-# [:@ident, "hello", [1, 4]],
-# [:paren,
-# [:params, [[:@ident, "world", [1, 10]]], nil, nil, nil, nil, nil, nil]],
-# [:bodystmt,
-# [[:string_literal,
-# [:string_content,
-# [:@tstring_content, "Hello, ", [1, 18]],
-# [:string_embexpr, [[:var_ref, [:@ident, "world", [1, 27]]]]],
-# [:@tstring_content, "!", [1, 33]]]]],
-# nil,
-# nil,
-# nil]]]]
-#
-# You can see in the example above, the expression starts with +:program+.
-#
-# From here, a method definition at +:def+, followed by the method's identifier
-# <code>:@ident</code>. After the method's identifier comes the parentheses
-# +:paren+ and the method parameters under +:params+.
-#
-# Next is the method body, starting at +:bodystmt+ (+stmt+ meaning statement),
-# which contains the full definition of the method.
-#
-# In our case, we're simply returning a String, so next we have the
-# +:string_literal+ expression.
-#
-# Within our +:string_literal+ you'll notice two <code>@tstring_content</code>,
-# this is the literal part for <code>Hello, </code> and <code>!</code>. Between
-# the two <code>@tstring_content</code> statements is a +:string_embexpr+,
-# where _embexpr_ is an embedded expression. Our expression consists of a local
-# variable, or +var_ref+, with the identifier (<code>@ident</code>) of +world+.
-#
-# == Resources
-#
-# * {Ruby Inside}[http://www.rubyinside.com/using-ripper-to-see-how-ruby-is-parsing-your-code-5270.html]
-#
-# == Requirements
-#
-# * ruby 1.9 (support CVS HEAD only)
-# * bison 1.28 or later (Other yaccs do not work)
-#
-# == License
-#
-# Ruby License.
-#
-# Minero Aoki
-# aamine@loveruby.net
-# http://i.loveruby.net
-class Ripper; end
diff --git a/ext/ripper/lib/ripper/core.rb b/ext/ripper/lib/ripper/core.rb
index 637a72f4ad..35aa54d090 100644
--- a/ext/ripper/lib/ripper/core.rb
+++ b/ext/ripper/lib/ripper/core.rb
@@ -12,8 +12,8 @@ require 'ripper.so'
class Ripper
- # Parses the given Ruby program read from +src+.
- # +src+ must be a String or an IO or a object with a #gets method.
+ # Parses Ruby program read from _src_.
+ # _src_ must be a String or a IO or a object which has #gets method.
def Ripper.parse(src, filename = '(ripper)', lineno = 1)
new(src, filename, lineno).parse
end
@@ -42,12 +42,12 @@ class Ripper
end
# This method is called when weak warning is produced by the parser.
- # +fmt+ and +args+ is printf style.
+ # _fmt_ and _args_ is printf style.
def warn(fmt, *args)
end
# This method is called when strong warning is produced by the parser.
- # +fmt+ and +args+ is printf style.
+ # _fmt_ and _args_ is printf style.
def warning(fmt, *args)
end
diff --git a/ext/ripper/lib/ripper/filter.rb b/ext/ripper/lib/ripper/filter.rb
index 239f9f00e1..898501b23c 100644
--- a/ext/ripper/lib/ripper/filter.rb
+++ b/ext/ripper/lib/ripper/filter.rb
@@ -13,13 +13,9 @@ require 'ripper/lexer'
class Ripper
# This class handles only scanner events,
- # which are dispatched in the 'right' order (same with input).
+ # and they are dispatched in the `right' order (same with input).
class Filter
- # Creates a new Ripper::Filter instance, passes parameters +src+,
- # +filename+, and +lineno+ to Ripper::Lexer.new
- #
- # The lexer is for internal use only.
def initialize(src, filename = '-', lineno = 1)
@__lexer = Lexer.new(src, filename, lineno)
@__line = nil
@@ -45,9 +41,8 @@ class Ripper
@__col
end
- # Starts the parser.
- # +init+ is a data accumulator and is passed to the next event handler (as
- # of Enumerable#inject).
+ # Starts parsing. _init_ is a data accumulator.
+ # It is passed to the next event handler (as of Enumerable#inject).
def parse(init = nil)
data = init
@__lexer.lex.each do |pos, event, tok|
@@ -62,12 +57,10 @@ class Ripper
private
- # This method is called when some event handler is undefined.
- # +event+ is :on_XXX, +token+ is the scanned token, and +data+ is a data
- # accumulator.
- #
- # The return value of this method is passed to the next event handler (as
- # of Enumerable#inject).
+ # This method is called when some event handler have not defined.
+ # _event_ is :on_XXX, _token_ is scanned token, _data_ is a data
+ # accumulator. The return value of this method is passed to the
+ # next event handler (as of Enumerable#inject).
def on_default(event, token, data)
data
end
diff --git a/ext/ripper/lib/ripper/lexer.rb b/ext/ripper/lib/ripper/lexer.rb
index c0a64d1ee5..5bbee39e06 100644
--- a/ext/ripper/lib/ripper/lexer.rb
+++ b/ext/ripper/lib/ripper/lexer.rb
@@ -12,22 +12,18 @@ require 'ripper/core'
class Ripper
- # Tokenizes the Ruby program and returns an array of strings.
- #
- # p Ripper.tokenize("def m(a) nil end")
- # # => ["def", " ", "m", "(", "a", ")", " ", "nil", " ", "end"]
- #
+ # Tokenizes Ruby program and returns an Array of String.
def Ripper.tokenize(src, filename = '-', lineno = 1)
Lexer.new(src, filename, lineno).tokenize
end
- # Tokenizes the Ruby program and returns an array of an array,
- # which is formatted like <code>[[lineno, column], type, token]</code>.
+ # Tokenizes Ruby program and returns an Array of Array,
+ # which is formatted like [[lineno, column], type, token].
#
# require 'ripper'
# require 'pp'
#
- # pp Ripper.lex("def m(a) nil end")
+ # p Ripper.lex("def m(a) nil end")
# #=> [[[1, 0], :on_kw, "def"],
# [[1, 3], :on_sp, " " ],
# [[1, 4], :on_ident, "m" ],
@@ -94,12 +90,9 @@ class Ripper
class TokenPattern #:nodoc:
- class Error < ::StandardError # :nodoc:
- end
- class CompileError < Error # :nodoc:
- end
- class MatchError < Error # :nodoc:
- end
+ class Error < ::StandardError; end
+ class CompileError < Error; end
+ class MatchError < Error; end
class << self
alias compile new
@@ -162,7 +155,7 @@ class Ripper
MAP[tok] or raise CompileError, "unknown token: #{tok}"
end
- class MatchData # :nodoc:
+ class MatchData
def initialize(tokens, match)
@tokens = tokens
@match = match
diff --git a/ext/ripper/lib/ripper/sexp.rb b/ext/ripper/lib/ripper/sexp.rb
index 66bd69134d..37040e4c11 100644
--- a/ext/ripper/lib/ripper/sexp.rb
+++ b/ext/ripper/lib/ripper/sexp.rb
@@ -15,7 +15,7 @@ class Ripper
# [EXPERIMENTAL]
# Parses +src+ and create S-exp tree.
# Returns more readable tree rather than Ripper.sexp_raw.
- # This method is mainly for developer use.
+ # This method is for mainly developper use.
#
# require 'ripper'
# require 'pp'
@@ -33,7 +33,7 @@ class Ripper
# [EXPERIMENTAL]
# Parses +src+ and create S-exp tree.
- # This method is mainly for developer use.
+ # This method is for mainly developper use.
#
# require 'ripper'
# require 'pp'
diff --git a/ext/ripper/tools/generate.rb b/ext/ripper/tools/generate.rb
index 48ad9e1d25..22c3ac0eb7 100755
--- a/ext/ripper/tools/generate.rb
+++ b/ext/ripper/tools/generate.rb
@@ -6,6 +6,7 @@ def main
mode = nil
ids1src = nil
ids2src = nil
+ template = nil
output = nil
parser = @parser = OptionParser.new
@@ -73,18 +74,15 @@ def generate_eventids1(ids)
end
buf << %Q[\n]
buf << %Q[static void\n]
- buf << %Q[ripper_init_eventids1(void)\n]
+ buf << %Q[ripper_init_eventids1(VALUE self)\n]
buf << %Q[{\n]
+ buf << %Q[ VALUE h;\n]
+ buf << %Q[ ID id;\n]
ids.each do |id, arity|
buf << %Q[ ripper_id_#{id} = rb_intern_const("on_#{id}");\n]
end
- buf << %Q[}\n]
buf << %Q[\n]
- buf << %Q[static void\n]
- buf << %Q[ripper_init_eventids1_table(VALUE self)\n]
- buf << %Q[{\n]
- buf << %Q[ VALUE h = rb_hash_new();\n]
- buf << %Q[ ID id;\n]
+ buf << %Q[ h = rb_hash_new();\n]
buf << %Q[ rb_define_const(self, "PARSER_EVENT_TABLE", h);\n]
ids.each do |id, arity|
buf << %Q[ id = rb_intern_const("#{id}");\n]
diff --git a/ext/sdbm/_sdbm.c b/ext/sdbm/_sdbm.c
index cb09bac589..28e5b03b31 100644
--- a/ext/sdbm/_sdbm.c
+++ b/ext/sdbm/_sdbm.c
@@ -7,7 +7,12 @@
* core routines
*/
-#include "ruby/ruby.h"
+#ifndef lint
+/*char sdbm_rcsid[] = "$Id$";*/
+#endif
+
+#include "ruby/config.h"
+#include "ruby/defines.h"
#ifdef HAVE_UNISTD_H
#include <unistd.h>
@@ -105,7 +110,7 @@ static int duppair proto((char *, datum));
/*
* externals
*/
-#if !defined(__sun) && !defined(_WIN32) && !defined(__CYGWIN__) && !defined(errno)
+#if !defined sun && !defined _WIN32 && !defined __CYGWIN__ && !defined(errno)
extern int errno;
#endif
@@ -173,29 +178,6 @@ sdbm_open(register char *file, register int flags, register int mode)
return db;
}
-static int
-fd_set_cloexec(int fd)
-{
- /* MinGW don't have F_GETFD and FD_CLOEXEC. [ruby-core:40281] */
-#ifdef F_GETFD
- int flags, ret;
- flags = fcntl(fd, F_GETFD); /* should not fail except EBADF. */
- if (flags == -1) {
- return -1;
- }
- if (2 < fd) {
- if (!(flags & FD_CLOEXEC)) {
- flags |= FD_CLOEXEC;
- ret = fcntl(fd, F_SETFD, flags);
- if (ret == -1) {
- return -1;
- }
- }
- }
-#endif
- return 0;
-}
-
DBM *
sdbm_prep(char *dirname, char *pagname, int flags, int mode)
{
@@ -205,8 +187,6 @@ sdbm_prep(char *dirname, char *pagname, int flags, int mode)
if ((db = (DBM *) malloc(sizeof(DBM))) == NULL)
return errno = ENOMEM, (DBM *) NULL;
- db->pagf = -1;
- db->dirf = -1;
db->flags = 0;
db->hmask = 0;
db->blkptr = 0;
@@ -225,38 +205,31 @@ sdbm_prep(char *dirname, char *pagname, int flags, int mode)
* If we fail anywhere, undo everything, return NULL.
*/
flags |= O_BINARY;
-#ifdef O_CLOEXEC
- flags |= O_CLOEXEC;
-#endif
-
- if ((db->pagf = open(pagname, flags, mode)) == -1) goto err;
- if (fd_set_cloexec(db->pagf) == -1) goto err;
- if ((db->dirf = open(dirname, flags, mode)) == -1) goto err;
- if (fd_set_cloexec(db->dirf) == -1) goto err;
+ if ((db->pagf = open(pagname, flags, mode)) > -1) {
+ if ((db->dirf = open(dirname, flags, mode)) > -1) {
/*
* need the dirfile size to establish max bit number.
*/
- if (fstat(db->dirf, &dstat) == -1) goto err;
+ if (fstat(db->dirf, &dstat) == 0) {
/*
* zero size: either a fresh database, or one with a single,
* unsplit data page: dirpage is all zeros.
*/
- db->dirbno = (!dstat.st_size) ? 0 : -1;
- db->pagbno = -1;
- db->maxbno = dstat.st_size * (long) BYTESIZ;
+ db->dirbno = (!dstat.st_size) ? 0 : -1;
+ db->pagbno = -1;
+ db->maxbno = dstat.st_size * (long) BYTESIZ;
- (void) memset(db->pagbuf, 0, PBLKSIZ);
- (void) memset(db->dirbuf, 0, DBLKSIZ);
-/*
- * success
- */
- return db;
-
- err:
- if (db->pagf != -1)
- (void) close(db->pagf);
- if (db->dirf != -1)
- (void) close(db->dirf);
+ (void) memset(db->pagbuf, 0, PBLKSIZ);
+ (void) memset(db->dirbuf, 0, DBLKSIZ);
+ /*
+ * success
+ */
+ return db;
+ }
+ (void) close(db->dirf);
+ }
+ (void) close(db->pagf);
+ }
free((char *) db);
return (DBM *) NULL;
}
@@ -631,6 +604,10 @@ getnext(register DBM *db)
* page-level routines
*/
+#ifndef lint
+/*char pair_rcsid[] = "$Id$";*/
+#endif
+
#ifndef BSD42
/*#include <memory.h>*/
#endif
@@ -671,8 +648,8 @@ fitpair(char *pag, int need)
register short *ino = (short *) pag;
off = ((n = GET_SHORT(ino,0)) > 0) ? GET_SHORT(ino,n) : PBLKSIZ;
- free = off - (n + 1) * (int)sizeof(short);
- need += 2 * (int)sizeof(short);
+ free = off - (n + 1) * sizeof(short);
+ need += 2 * sizeof(short);
debug(("free %d need %d\n", free, need));
@@ -802,7 +779,7 @@ delpair(char *pag, datum key)
}
#else
#ifdef MEMMOVE
- memmove(dst-m, src-m, m);
+ memmove(dst, src, m);
#else
while (m--)
*--dst = *--src;
diff --git a/ext/sdbm/init.c b/ext/sdbm/init.c
index 0fd837db31..7ba59c4e5c 100644
--- a/ext/sdbm/init.c
+++ b/ext/sdbm/init.c
@@ -15,55 +15,6 @@
#include <fcntl.h>
#include <errno.h>
-/*
- * Document-class: SDBM
- *
- * SDBM provides a simple file-based key-value store, which can only store
- * String keys and values.
- *
- * Note that Ruby comes with the source code for SDBM, while the DBM and GDBM
- * standard libraries rely on external libraries and headers.
- *
- * === Examples
- *
- * Insert values:
- *
- * require 'sdbm'
- *
- * SDBM.open 'my_database' do |db|
- * db['apple'] = 'fruit'
- * db['pear'] = 'fruit'
- * db['carrot'] = 'vegetable'
- * db['tomato'] = 'vegetable'
- * end
- *
- * Bulk update:
- *
- * require 'sdbm'
- *
- * SDBM.open 'my_database' do |db|
- * db.update('peach' => 'fruit', 'tomato' => 'fruit')
- * end
- *
- * Retrieve values:
- *
- * require 'sdbm'
- *
- * SDBM.open 'my_database' do |db|
- * db.each do |key, value|
- * puts "Key: #{key}, Value: #{value}"
- * end
- * end
- *
- * Outputs:
- *
- * Key: apple, Value: fruit
- * Key: pear, Value: fruit
- * Key: carrot, Value: vegetable
- * Key: peach, Value: fruit
- * Key: tomato, Value: fruit
- */
-
static VALUE rb_cDBM, rb_eDBMError;
struct dbmdata {
@@ -96,14 +47,6 @@ free_sdbm(struct dbmdata *dbmp)
ruby_xfree(dbmp);
}
-/*
- * call-seq:
- * sdbm.close -> nil
- *
- * Closes the database file.
- *
- * Raises SDBMError if the database is already closed.
- */
static VALUE
fsdbm_close(VALUE obj)
{
@@ -116,12 +59,6 @@ fsdbm_close(VALUE obj)
return Qnil;
}
-/*
-* call-seq:
-* sdbm.closed? -> true or false
-*
-* Returns +true+ if the database is closed.
-*/
static VALUE
fsdbm_closed(VALUE obj)
{
@@ -141,21 +78,7 @@ fsdbm_alloc(VALUE klass)
{
return Data_Wrap_Struct(klass, 0, free_sdbm, 0);
}
-/*
-* call-seq:
-* SDBM.new(filename, mode = 0666)
-*
-* Creates a new database handle by opening the given +filename+. SDBM actually
-* uses two physical files, with extensions '.dir' and '.pag'. These extensions
-* will automatically be appended to the +filename+.
-*
-* If the file does not exist, a new file will be created using the given
-* +mode+, unless +mode+ is explicitly set to nil. In the latter case, no
-* database will be created.
-*
-* If the file exists, it will be opened in read/write mode. If this fails, it
-* will be opened in read-only mode.
-*/
+
static VALUE
fsdbm_initialize(int argc, VALUE *argv, VALUE obj)
{
@@ -186,7 +109,7 @@ fsdbm_initialize(int argc, VALUE *argv, VALUE obj)
if (!dbm) {
if (mode == -1) return Qnil;
- rb_sys_fail_str(file);
+ rb_sys_fail(RSTRING_PTR(file));
}
dbmp = ALLOC(struct dbmdata);
@@ -197,24 +120,6 @@ fsdbm_initialize(int argc, VALUE *argv, VALUE obj)
return obj;
}
-/*
- * call-seq:
- * SDBM.open(filename, mode = 0666)
- * SDBM.open(filename, mode = 0666) { |sdbm| ... }
- *
- * If called without a block, this is the same as SDBM.new.
- *
- * If a block is given, the new database will be passed to the block and
- * will be safely closed after the block has executed.
- *
- * Example:
- *
- * require 'sdbm'
- *
- * SDBM.open('my_database') do |db|
- * db['hello'] = 'world'
- * end
- */
static VALUE
fsdbm_s_open(int argc, VALUE *argv, VALUE klass)
{
@@ -252,34 +157,12 @@ fsdbm_fetch(VALUE obj, VALUE keystr, VALUE ifnone)
return rb_external_str_new(value.dptr, value.dsize);
}
-/*
- * call-seq:
- * sdbm[key] -> value or nil
- *
- * Returns the +value+ in the database associated with the given +key+ string.
- *
- * If no value is found, returns +nil+.
- */
static VALUE
fsdbm_aref(VALUE obj, VALUE keystr)
{
return fsdbm_fetch(obj, keystr, Qnil);
}
-/*
- * call-seq:
- * sdbm.fetch(key) -> value or nil
- * sdbm.fetch(key) { |key| ... }
- *
- * Returns the +value+ in the database associated with the given +key+ string.
- *
- * If a block is provided, the block will be called when there is no
- * +value+ associated with the given +key+. The +key+ will be passed in as an
- * argument to the block.
- *
- * If no block is provided and no value is associated with the given +key+,
- * then an IndexError will be raised.
- */
static VALUE
fsdbm_fetch_m(int argc, VALUE *argv, VALUE obj)
{
@@ -293,14 +176,6 @@ fsdbm_fetch_m(int argc, VALUE *argv, VALUE obj)
return valstr;
}
-/*
- * call-seq:
- * sdbm.key(value) -> key
- *
- * Returns the +key+ associated with the given +value+. If more than one
- * +key+ corresponds to the given +value+, then the first key to be found
- * will be returned. If no keys are found, +nil+ will be returned.
- */
static VALUE
fsdbm_key(VALUE obj, VALUE valstr)
{
@@ -322,9 +197,6 @@ fsdbm_key(VALUE obj, VALUE valstr)
return Qnil;
}
-/*
- * :nodoc:
- */
static VALUE
fsdbm_index(VALUE hash, VALUE value)
{
@@ -332,25 +204,6 @@ fsdbm_index(VALUE hash, VALUE value)
return fsdbm_key(hash, value);
}
-/* call-seq:
- * sdbm.select { |key, value| ... } -> Array
- *
- * Returns a new Array of key-value pairs for which the block returns +true+.
- *
- * Example:
- *
- * require 'sdbm'
- *
- * SDBM.open 'my_database' do |db|
- * db['apple'] = 'fruit'
- * db['pear'] = 'fruit'
- * db['spinach'] = 'vegetable'
- *
- * veggies = db.select do |key, value|
- * value == 'vegetable'
- * end #=> [["apple", "fruit"], ["pear", "fruit"]]
- * end
- */
static VALUE
fsdbm_select(VALUE obj)
{
@@ -375,11 +228,6 @@ fsdbm_select(VALUE obj)
return new;
}
-/* call-seq:
- * sdbm.values_at(key, ...) -> Array
- *
- * Returns an Array of values corresponding to the given keys.
- */
static VALUE
fsdbm_values_at(int argc, VALUE *argv, VALUE obj)
{
@@ -400,18 +248,6 @@ fdbm_modify(VALUE obj)
if (OBJ_FROZEN(obj)) rb_error_frozen("SDBM");
}
-/*
- * call-seq:
- * sdbm.delete(key) -> value or nil
- * sdbm.delete(key) { |key, value| ... }
- *
- * Deletes the key-value pair corresponding to the given +key+. If the
- * +key+ exists, the deleted value will be returned, otherwise +nil+.
- *
- * If a block is provided, the deleted +key+ and +value+ will be passed to
- * the block as arguments. If the +key+ does not exist in the database, the
- * value will be +nil+.
- */
static VALUE
fsdbm_delete(VALUE obj, VALUE keystr)
{
@@ -447,13 +283,6 @@ fsdbm_delete(VALUE obj, VALUE keystr)
return valstr;
}
-/*
- * call-seq:
- * sdbm.shift -> Array or nil
- *
- * Removes a key-value pair from the database and returns them as an
- * Array. If the database is empty, returns +nil+.
- */
static VALUE
fsdbm_shift(VALUE obj)
{
@@ -477,14 +306,6 @@ fsdbm_shift(VALUE obj)
return rb_assoc_new(keystr, valstr);
}
-/*
- * call-seq:
- * sdbm.delete_if { |key, value| ... } -> self
- * sdbm.reject! { |key, value| ... } -> self
- *
- * Iterates over the key-value pairs in the database, deleting those for
- * which the block returns +true+.
- */
static VALUE
fsdbm_delete_if(VALUE obj)
{
@@ -524,12 +345,6 @@ fsdbm_delete_if(VALUE obj)
return obj;
}
-/*
- * call-seq:
- * sdbm.clear -> self
- *
- * Deletes all data from the database.
- */
static VALUE
fsdbm_clear(VALUE obj)
{
@@ -550,22 +365,6 @@ fsdbm_clear(VALUE obj)
return obj;
}
-/*
- * call-seq:
- * sdbm.invert -> Hash
- *
- * Returns a Hash in which the key-value pairs have been inverted.
- *
- * Example:
- *
- * require 'sdbm'
- *
- * SDBM.open 'my_database' do |db|
- * db.update('apple' => 'fruit', 'spinach' => 'vegetable')
- *
- * db.invert #=> {"fruit" => "apple", "vegetable" => "spinach"}
- * end
- */
static VALUE
fsdbm_invert(VALUE obj)
{
@@ -585,18 +384,6 @@ fsdbm_invert(VALUE obj)
return hash;
}
-/*
- * call-seq:
- * sdbm[key] = value -> value
- * sdbm.store(key, value) -> value
- *
- * Stores a new +value+ in the database with the given +key+ as an index.
- *
- * If the +key+ already exists, this will update the +value+ associated with
- * the +key+.
- *
- * Returns the given +value+.
- */
static VALUE
fsdbm_store(VALUE obj, VALUE keystr, VALUE valstr)
{
@@ -643,15 +430,6 @@ update_i(VALUE pair, VALUE dbm)
return Qnil;
}
-/*
- * call-seq:
- * sdbm.update(pairs) -> self
- *
- * Insert or update key-value pairs.
- *
- * This method will work with any object which implements an each_pair
- * method, such as a Hash.
- */
static VALUE
fsdbm_update(VALUE obj, VALUE other)
{
@@ -659,15 +437,6 @@ fsdbm_update(VALUE obj, VALUE other)
return obj;
}
-/*
- * call-seq:
- * sdbm.replace(pairs) -> self
- *
- * Empties the database, then inserts the given key-value pairs.
- *
- * This method will work with any object which implements an each_pair
- * method, such as a Hash.
- */
static VALUE
fsdbm_replace(VALUE obj, VALUE other)
{
@@ -676,13 +445,6 @@ fsdbm_replace(VALUE obj, VALUE other)
return obj;
}
-/*
- * call-seq:
- * sdbm.length -> integer
- * sdbm.size -> integer
- *
- * Returns the number of keys in the database.
- */
static VALUE
fsdbm_length(VALUE obj)
{
@@ -702,43 +464,29 @@ fsdbm_length(VALUE obj)
return INT2FIX(i);
}
-/*
- * call-seq:
- * sdbm.empty? -> true or false
- *
- * Returns +true+ if the database is empty.
- */
static VALUE
fsdbm_empty_p(VALUE obj)
{
datum key;
struct dbmdata *dbmp;
DBM *dbm;
+ int i = 0;
GetDBM(obj, dbmp);
if (dbmp->di_size < 0) {
dbm = dbmp->di_dbm;
for (key = sdbm_firstkey(dbm); key.dptr; key = sdbm_nextkey(dbm)) {
- return Qfalse;
+ i++;
}
}
else {
- if (dbmp->di_size)
- return Qfalse;
+ i = dbmp->di_size;
}
- return Qtrue;
+ if (i == 0) return Qtrue;
+ return Qfalse;
}
-/*
- * call-seq:
- * sdbm.each_value
- * sdbm.each_value { |value| ... }
- *
- * Iterates over each +value+ in the database.
- *
- * If no block is given, returns an Enumerator.
- */
static VALUE
fsdbm_each_value(VALUE obj)
{
@@ -757,15 +505,6 @@ fsdbm_each_value(VALUE obj)
return obj;
}
-/*
- * call-seq:
- * sdbm.each_key
- * sdbm.each_key { |key| ... }
- *
- * Iterates over each +key+ in the database.
- *
- * If no block is given, returns an Enumerator.
- */
static VALUE
fsdbm_each_key(VALUE obj)
{
@@ -783,17 +522,6 @@ fsdbm_each_key(VALUE obj)
return obj;
}
-/*
- * call-seq:
- * sdbm.each
- * sdbm.each { |key, value| ... }
- * sdbm.each_pair
- * sdbm.each_pair { |key, value| ... }
- *
- * Iterates over each key-value pair in the database.
- *
- * If no block is given, returns an Enumerator.
- */
static VALUE
fsdbm_each_pair(VALUE obj)
{
@@ -816,12 +544,6 @@ fsdbm_each_pair(VALUE obj)
return obj;
}
-/*
- * call-seq:
- * sdbm.keys -> Array
- *
- * Returns a new Array containing the keys in the database.
- */
static VALUE
fsdbm_keys(VALUE obj)
{
@@ -839,12 +561,6 @@ fsdbm_keys(VALUE obj)
return ary;
}
-/*
- * call-seq:
- * sdbm.values -> Array
- *
- * Returns a new Array containing the values in the database.
- */
static VALUE
fsdbm_values(VALUE obj)
{
@@ -863,15 +579,6 @@ fsdbm_values(VALUE obj)
return ary;
}
-/*
- * call-seq:
- * sdbm.include?(key) -> true or false
- * sdbm.key?(key) -> true or false
- * sdbm.member?(key) -> true or false
- * sdbm.has_key?(key) -> true or false
- *
- * Returns +true+ if the database contains the given +key+.
- */
static VALUE
fsdbm_has_key(VALUE obj, VALUE keystr)
{
@@ -889,13 +596,6 @@ fsdbm_has_key(VALUE obj, VALUE keystr)
return Qfalse;
}
-/*
- * call-seq:
- * sdbm.value?(key) -> true or false
- * sdbm.has_value?(key) -> true or false
- *
- * Returns +true+ if the database contains the given +value+.
- */
static VALUE
fsdbm_has_value(VALUE obj, VALUE valstr)
{
@@ -917,22 +617,6 @@ fsdbm_has_value(VALUE obj, VALUE valstr)
return Qfalse;
}
-/*
- * call-seq:
- * sdbm.to_a -> Array
- *
- * Returns a new Array containing each key-value pair in the database.
- *
- * Example:
- *
- * require 'sdbm'
- *
- * SDBM.open 'my_database' do |db|
- * db.update('apple' => 'fruit', 'spinach' => 'vegetable')
- *
- * db.to_a #=> [["apple", "fruit"], ["spinach", "vegetable"]]
- * end
- */
static VALUE
fsdbm_to_a(VALUE obj)
{
@@ -952,12 +636,6 @@ fsdbm_to_a(VALUE obj)
return ary;
}
-/*
- * call-seq:
- * sdbm.to_hash -> Hash
- *
- * Returns a new Hash containing each key-value pair in the database.
- */
static VALUE
fsdbm_to_hash(VALUE obj)
{
@@ -977,14 +655,6 @@ fsdbm_to_hash(VALUE obj)
return hash;
}
-/*
- * call-seq:
- * sdbm.reject { |key, value| ... } -> Hash
- *
- * Creates a new Hash using the key-value pairs from the database, then
- * calls Hash#reject with the given block, which returns a Hash with
- * only the key-value pairs for which the block returns +false+.
- */
static VALUE
fsdbm_reject(VALUE obj)
{
@@ -996,9 +666,6 @@ Init_sdbm()
{
rb_cDBM = rb_define_class("SDBM", rb_cObject);
rb_eDBMError = rb_define_class("SDBMError", rb_eStandardError);
- /* Document-class: SDBMError
- * Exception class used to return errors from the sdbm library.
- */
rb_include_module(rb_cDBM, rb_mEnumerable);
rb_define_alloc_func(rb_cDBM, fsdbm_alloc);
@@ -1034,11 +701,11 @@ Init_sdbm()
rb_define_method(rb_cDBM,"update", fsdbm_update, 1);
rb_define_method(rb_cDBM,"replace", fsdbm_replace, 1);
- rb_define_method(rb_cDBM, "has_key?", fsdbm_has_key, 1);
rb_define_method(rb_cDBM, "include?", fsdbm_has_key, 1);
- rb_define_method(rb_cDBM, "key?", fsdbm_has_key, 1);
+ rb_define_method(rb_cDBM, "has_key?", fsdbm_has_key, 1);
rb_define_method(rb_cDBM, "member?", fsdbm_has_key, 1);
rb_define_method(rb_cDBM, "has_value?", fsdbm_has_value, 1);
+ rb_define_method(rb_cDBM, "key?", fsdbm_has_key, 1);
rb_define_method(rb_cDBM, "value?", fsdbm_has_value, 1);
rb_define_method(rb_cDBM, "to_a", fsdbm_to_a, 0);
diff --git a/ext/socket/ancdata.c b/ext/socket/ancdata.c
index 37d2860224..c01a1c272a 100644
--- a/ext/socket/ancdata.c
+++ b/ext/socket/ancdata.c
@@ -86,7 +86,8 @@ ancillary_initialize(VALUE self, VALUE vfamily, VALUE vlevel, VALUE vtype, VALUE
static VALUE
ancdata_new(int family, int level, int type, VALUE data)
{
- NEWOBJ_OF(obj, struct RObject, rb_cAncillaryData, T_OBJECT);
+ NEWOBJ(obj, struct RObject);
+ OBJSETUP(obj, rb_cAncillaryData, T_OBJECT);
StringValue(data);
ancillary_initialize((VALUE)obj, INT2NUM(family), INT2NUM(level), INT2NUM(type), data);
return (VALUE)obj;
@@ -195,7 +196,7 @@ ancillary_s_unix_rights(int argc, VALUE *argv, VALUE klass)
for (i = 0 ; i < argc; i++) {
VALUE obj = argv[i];
- if (!RB_TYPE_P(obj, T_FILE)) {
+ if (TYPE(obj) != T_FILE) {
rb_raise(rb_eTypeError, "IO expected");
}
rb_ary_push(ary, obj);
@@ -1109,11 +1110,11 @@ struct sendmsg_args_struct {
int flags;
};
-static void *
+static VALUE
nogvl_sendmsg_func(void *ptr)
{
struct sendmsg_args_struct *args = ptr;
- return (void *)(VALUE)sendmsg(args->fd, args->msg, args->flags);
+ return sendmsg(args->fd, args->msg, args->flags);
}
static ssize_t
@@ -1123,7 +1124,7 @@ rb_sendmsg(int fd, const struct msghdr *msg, int flags)
args.fd = fd;
args.msg = msg;
args.flags = flags;
- return (ssize_t)rb_thread_call_without_gvl(nogvl_sendmsg_func, &args, RUBY_UBF_IO, 0);
+ return rb_thread_blocking_region(nogvl_sendmsg_func, &args, RUBY_UBF_IO, 0);
}
static VALUE
@@ -1163,10 +1164,8 @@ bsock_sendmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock)
#if defined(HAVE_ST_MSG_CONTROL)
int i;
size_t last_pad = 0;
-#if defined(__NetBSD__)
int last_level = 0;
int last_type = 0;
-#endif
controls_str = rb_str_tmp_new(0);
for (i = 0; i < controls_num; i++) {
VALUE elt = controls_ptr[i], v;
@@ -1205,10 +1204,8 @@ bsock_sendmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock)
cmh.cmsg_len = (socklen_t)CMSG_LEN(RSTRING_LEN(cdata));
MEMCPY(cmsg, &cmh, char, sizeof(cmh));
MEMCPY(cmsg+((char*)CMSG_DATA(&cmh)-(char*)&cmh), RSTRING_PTR(cdata), char, RSTRING_LEN(cdata));
-#if defined(__NetBSD__)
last_level = cmh.cmsg_level;
last_type = cmh.cmsg_type;
-#endif
last_pad = cspace - cmh.cmsg_len;
}
if (last_pad) {
@@ -1280,11 +1277,12 @@ bsock_sendmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock)
ss = rb_sendmsg(fptr->fd, &mh, flags);
+ if (!nonblock && rb_io_wait_writable(fptr->fd)) {
+ rb_io_check_closed(fptr);
+ goto retry;
+ }
+
if (ss == -1) {
- if (!nonblock && rb_io_wait_writable(fptr->fd)) {
- rb_io_check_closed(fptr);
- goto retry;
- }
if (nonblock && (errno == EWOULDBLOCK || errno == EAGAIN))
rb_mod_sys_fail(rb_mWaitWritable, "sendmsg(2) would block");
rb_sys_fail("sendmsg(2)");
@@ -1360,22 +1358,11 @@ struct recvmsg_args_struct {
int flags;
};
-ssize_t
-rsock_recvmsg(int socket, struct msghdr *message, int flags)
-{
-#ifdef MSG_CMSG_CLOEXEC
- /* MSG_CMSG_CLOEXEC is available since Linux 2.6.23. Linux 2.6.18 silently ignore it. */
- flags |= MSG_CMSG_CLOEXEC;
-#endif
- return recvmsg(socket, message, flags);
-}
-
-static void *
+static VALUE
nogvl_recvmsg_func(void *ptr)
{
struct recvmsg_args_struct *args = ptr;
- int flags = args->flags;
- return (void *)rsock_recvmsg(args->fd, args->msg, flags);
+ return recvmsg(args->fd, args->msg, args->flags);
}
static ssize_t
@@ -1385,7 +1372,7 @@ rb_recvmsg(int fd, struct msghdr *msg, int flags)
args.fd = fd;
args.msg = msg;
args.flags = flags;
- return (ssize_t)rb_thread_call_without_gvl(nogvl_recvmsg_func, &args, RUBY_UBF_IO, 0);
+ return rb_thread_blocking_region(nogvl_recvmsg_func, &args, RUBY_UBF_IO, 0);
}
#if defined(HAVE_ST_MSG_CONTROL)
@@ -1397,7 +1384,7 @@ discard_cmsg(struct cmsghdr *cmh, char *msg_end, int msg_peek_p)
* FreeBSD 8.2.0, NetBSD 5 and MacOS X Snow Leopard doesn't
* allocate fds by recvmsg with MSG_PEEK.
* [ruby-dev:44189]
- * http://bugs.ruby-lang.org/issues/5075
+ * http://redmine.ruby-lang.org/issues/5075
*
* Linux 2.6.38 allocate fds by recvmsg with MSG_PEEK.
*/
@@ -1409,7 +1396,7 @@ discard_cmsg(struct cmsghdr *cmh, char *msg_end, int msg_peek_p)
int *end = (int *)((char *)cmh + cmh->cmsg_len);
while ((char *)fdp + sizeof(int) <= (char *)end &&
(char *)fdp + sizeof(int) <= msg_end) {
- rb_fd_fix_cloexec(*fdp);
+ rb_update_max_fd(*fdp);
close(*fdp);
fdp++;
}
@@ -1452,7 +1439,7 @@ make_io_for_unix_rights(VALUE ctl, struct cmsghdr *cmh, char *msg_end)
VALUE io;
if (fstat(fd, &stbuf) == -1)
rb_raise(rb_eSocket, "invalid fd in SCM_RIGHTS");
- rb_fd_fix_cloexec(fd);
+ rb_update_max_fd(fd);
if (S_ISSOCK(stbuf.st_mode))
io = rsock_init_sock(rb_obj_alloc(rb_cSocket), fd);
else
@@ -1498,7 +1485,7 @@ bsock_recvmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock)
rb_secure(4);
vopts = Qnil;
- if (0 < argc && RB_TYPE_P(argv[argc-1], T_HASH))
+ if (0 < argc && TYPE(argv[argc-1]) == T_HASH)
vopts = argv[--argc];
rb_scan_args(argc, argv, "03", &vmaxdatlen, &vflags, &vmaxctllen);
@@ -1588,11 +1575,12 @@ bsock_recvmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock)
ss = rb_recvmsg(fptr->fd, &mh, flags);
+ if (!nonblock && rb_io_wait_readable(fptr->fd)) {
+ rb_io_check_closed(fptr);
+ goto retry;
+ }
+
if (ss == -1) {
- if (!nonblock && rb_io_wait_readable(fptr->fd)) {
- rb_io_check_closed(fptr);
- goto retry;
- }
if (nonblock && (errno == EWOULDBLOCK || errno == EAGAIN))
rb_mod_sys_fail(rb_mWaitReadable, "recvmsg(2) would block");
#if defined(HAVE_ST_MSG_CONTROL)
diff --git a/ext/socket/basicsocket.c b/ext/socket/basicsocket.c
index 2ef4f32692..b997043620 100644
--- a/ext/socket/basicsocket.c
+++ b/ext/socket/basicsocket.c
@@ -247,7 +247,7 @@ bsock_setsockopt(int argc, VALUE *argv, VALUE sock)
break;
}
-#define rb_sys_fail_path(path) rb_sys_fail_str(path)
+#define rb_sys_fail_path(path) rb_sys_fail(NIL_P(path) ? 0 : RSTRING_PTR(path))
rb_io_check_closed(fptr);
if (setsockopt(fptr->fd, level, option, v, vlen) < 0)
@@ -358,13 +358,11 @@ bsock_getsockname(VALUE sock)
{
struct sockaddr_storage buf;
socklen_t len = (socklen_t)sizeof buf;
- socklen_t len0 = len;
rb_io_t *fptr;
GetOpenFile(sock, fptr);
if (getsockname(fptr->fd, (struct sockaddr*)&buf, &len) < 0)
rb_sys_fail("getsockname(2)");
- if (len0 < len) len = len0;
return rb_str_new((char*)&buf, len);
}
@@ -389,13 +387,11 @@ bsock_getpeername(VALUE sock)
{
struct sockaddr_storage buf;
socklen_t len = (socklen_t)sizeof buf;
- socklen_t len0 = len;
rb_io_t *fptr;
GetOpenFile(sock, fptr);
if (getpeername(fptr->fd, (struct sockaddr*)&buf, &len) < 0)
rb_sys_fail("getpeername(2)");
- if (len0 < len) len = len0;
return rb_str_new((char*)&buf, len);
}
@@ -479,13 +475,11 @@ bsock_local_address(VALUE sock)
{
struct sockaddr_storage buf;
socklen_t len = (socklen_t)sizeof buf;
- socklen_t len0 = len;
rb_io_t *fptr;
GetOpenFile(sock, fptr);
if (getsockname(fptr->fd, (struct sockaddr*)&buf, &len) < 0)
rb_sys_fail("getsockname(2)");
- if (len0 < len) len = len0;
return rsock_fd_socket_addrinfo(fptr->fd, (struct sockaddr *)&buf, len);
}
@@ -513,13 +507,11 @@ bsock_remote_address(VALUE sock)
{
struct sockaddr_storage buf;
socklen_t len = (socklen_t)sizeof buf;
- socklen_t len0 = len;
rb_io_t *fptr;
GetOpenFile(sock, fptr);
if (getpeername(fptr->fd, (struct sockaddr*)&buf, &len) < 0)
rb_sys_fail("getpeername(2)");
- if (len0 < len) len = len0;
return rsock_fd_socket_addrinfo(fptr->fd, (struct sockaddr *)&buf, len);
}
diff --git a/ext/socket/depend b/ext/socket/depend
index 1716f9cb89..ab0a5e81b3 100644
--- a/ext/socket/depend
+++ b/ext/socket/depend
@@ -1,5 +1,5 @@
SOCK_HEADERS = $(srcdir)/rubysocket.h $(hdrdir)/ruby/ruby.h $(arch_hdrdir)/ruby/config.h \
- $(hdrdir)/ruby/defines.h $(hdrdir)/ruby/io.h $(hdrdir)/ruby/thread.h \
+ $(hdrdir)/ruby/defines.h $(hdrdir)/ruby/io.h \
$(srcdir)/addrinfo.h $(srcdir)/sockport.h constdefs.h $(top_srcdir)/internal.h
init.o: init.c $(SOCK_HEADERS)
diff --git a/ext/socket/extconf.rb b/ext/socket/extconf.rb
index 13937ac773..380b3ecde0 100644
--- a/ext/socket/extconf.rb
+++ b/ext/socket/extconf.rb
@@ -6,6 +6,7 @@ case RUBY_PLATFORM
when /(ms|bcc)win(32|64)|mingw/
test_func = "WSACleanup"
have_library("ws2_32", "WSACleanup")
+ $defs << "-DHAVE_SOCKETPAIR"
when /cygwin/
test_func = "socket"
when /beos/
@@ -23,12 +24,6 @@ else
have_library("socket", "socket")
end
-if /darwin/ =~ RUBY_PLATFORM
- # For IPv6 extension header access on OS X 10.7+ [Bug #8517]
- $CFLAGS << " -D__APPLE_USE_RFC_3542"
-end
-
-headers = []
unless $mswin or $bccwin or $mingw
headers = %w<sys/types.h netdb.h string.h sys/socket.h netinet/in.h>
end
@@ -41,7 +36,7 @@ if have_header("arpa/inet.h")
end
ipv6 = false
-default_ipv6 = /cygwin|beos|haiku/ !~ RUBY_PLATFORM
+default_ipv6 = /mswin|cygwin|beos|haiku/ !~ RUBY_PLATFORM
if enable_config("ipv6", default_ipv6)
if checking_for("ipv6") {try_link(<<EOF)}
#include <sys/types.h>
@@ -49,10 +44,9 @@ if enable_config("ipv6", default_ipv6)
#include <sys/socket.h>
#endif
int
-main(void)
+main()
{
socket(AF_INET6, SOCK_STREAM, 0);
- return 0;
}
EOF
$defs << "-DENABLE_IPV6" << "-DINET6"
@@ -62,7 +56,7 @@ end
if ipv6
if $mingw
- $CPPFLAGS << " -D_WIN32_WINNT=0x501" unless $CPPFLAGS.include?("_WIN32_WINNT")
+ $CPPFLAGS << " -D_WIN32_WINNT=0x501"
end
ipv6lib = nil
class << (fmt = "unknown")
@@ -270,7 +264,7 @@ getaddr_info_ok = (enable_config("wide-getaddrinfo") && :wide) ||
#endif
int
-main(void)
+main()
{
int passive, gaierr, inet4 = 0, inet6 = 0;
struct addrinfo hints, *ai, *aitop;
@@ -354,12 +348,12 @@ main(void)
if (aitop)
freeaddrinfo(aitop);
- return EXIT_SUCCESS;
+ exit(EXIT_SUCCESS);
bad:
if (aitop)
freeaddrinfo(aitop);
- return EXIT_FAILURE;
+ exit(EXIT_FAILURE);
}
EOF
if ipv6 and not getaddr_info_ok
@@ -403,8 +397,6 @@ EOF
end
end
-have_func("accept4")
-
$objs = [
"init.#{$OBJEXT}",
"constants.#{$OBJEXT}",
@@ -436,10 +428,9 @@ if getaddr_info_ok == :wide or
$defs << "-DGETADDRINFO_EMU"
end
-have_func('inet_ntop(0, (const void *)0, (char *)0, 0)') or
- have_func("inet_ntoa(*(struct in_addr *)NULL)")
-have_func('inet_pton(0, "", (void *)0)') or have_func('inet_aton("", (struct in_addr *)0)')
-have_func('getservbyport(0, "")')
+have_func("inet_ntop") or have_func("inet_ntoa")
+have_func("inet_pton") or have_func("inet_aton")
+have_func("getservbyport")
have_header("arpa/nameser.h")
have_header("resolv.h")
@@ -459,11 +450,11 @@ end
have_header("sys/un.h")
have_header("sys/uio.h")
have_type("struct in_pktinfo", headers) {|src|
- src.sub(%r'^/\*top\*/', '\&'"\n#if defined(IPPROTO_IP) && defined(IP_PKTINFO)") <<
+ src.sub(%r'^/\*top\*/', '\1'"\n#if defined(IPPROTO_IP) && defined(IP_PKTINFO)") <<
"#else\n" << "#error\n" << ">>>>>> no in_pktinfo <<<<<<\n" << "#endif\n"
} and have_struct_member("struct in_pktinfo", "ipi_spec_dst", headers)
have_type("struct in6_pktinfo", headers) {|src|
- src.sub(%r'^/\*top\*/', '\&'"\n#if defined(IPPROTO_IPV6) && defined(IPV6_PKTINFO)") <<
+ src.sub(%r'^/\*top\*/', '\1'"\n#if defined(IPPROTO_IPV6) && defined(IPV6_PKTINFO)") <<
"#else\n" << "#error\n" << ">>>>>> no in6_pktinfo <<<<<<\n" << "#endif\n"
}
@@ -489,11 +480,8 @@ $distcleanfiles << "constants.h" << "constdefs.*"
if have_func(test_func)
have_func("hsterror")
have_func("getipnodebyname") or have_func("gethostbyname2")
- if !have_func("socketpair(0, 0, 0, 0)") and have_func("rb_w32_socketpair(0, 0, 0, 0)")
- $defs << "-Dsocketpair(a,b,c,d)=rb_w32_socketpair((a),(b),(c),(d))"
- $defs << "-DHAVE_SOCKETPAIR"
- end
- unless have_func("gethostname((char *)0, 0)")
+ have_func("socketpair") unless $defs.include?("-DHAVE_SOCKETPAIR")
+ unless have_func("gethostname")
have_func("uname")
end
if enable_config("socks", ENV["SOCKS_SERVER"])
@@ -503,29 +491,5 @@ if have_func(test_func)
$defs << "-DSOCKS"
end
end
- hdr = "netinet6/in6.h"
- if /darwin/ =~ RUBY_PLATFORM and !try_compile(<<"SRC", nil, :werror=>true)
-#include <netinet/in.h>
-int t(struct in6_addr *addr) {return IN6_IS_ADDR_UNSPECIFIED(addr);}
-SRC
- print "fixing apple's netinet6/in6.rb ..."; $stdout.flush
- in6 = File.read("/usr/include/#{hdr}")
- if in6.gsub!(/\*\(const\s+__uint32_t\s+\*\)\(const\s+void\s+\*\)\(&(\(\w+\))->s6_addr\[(\d+)\]\)/) do
- i, r = $2.to_i.divmod(4)
- if r.zero?
- "#$1->__u6_addr.__u6_addr32[#{i}]"
- else
- $&
- end
- end
- FileUtils.mkdir_p(File.dirname(hdr))
- open(hdr, "w") {|f| f.write(in6)}
- $distcleanfiles << hdr
- $distcleandirs << File.dirname(hdr)
- puts "done"
- else
- puts "not needed"
- end
- end
create_makefile("socket")
end
diff --git a/ext/socket/getaddrinfo.c b/ext/socket/getaddrinfo.c
index c03dd601ff..aa966b3c52 100644
--- a/ext/socket/getaddrinfo.c
+++ b/ext/socket/getaddrinfo.c
@@ -589,7 +589,6 @@ get_addr(const char *hostname, int af, struct addrinfo **res, struct addrinfo *p
} else
hp = getipnodebyname(hostname, af, AI_ADDRCONFIG, &h_error);
#else
- if (strlen(hostname) >= NI_MAXHOST) ERR(EAI_NODATA);
hp = gethostbyname((char*)hostname);
h_error = h_errno;
#endif
diff --git a/ext/socket/init.c b/ext/socket/init.c
index 7810ed4817..0a2365850f 100644
--- a/ext/socket/init.c
+++ b/ext/socket/init.c
@@ -52,7 +52,6 @@ rsock_init_sock(VALUE sock, int fd)
if (!S_ISSOCK(sbuf.st_mode))
rb_raise(rb_eArgError, "not a socket file descriptor");
#else
- rb_update_max_fd(fd);
if (!rb_w32_is_socket(fd))
rb_raise(rb_eArgError, "not a socket file descriptor");
#endif
@@ -155,7 +154,7 @@ rsock_s_recvfrom(VALUE sock, int argc, VALUE *argv, enum sock_recv_type from)
}
#endif
if (arg.alen && arg.alen != sizeof(arg.buf)) /* OSX doesn't return a from result for connection-oriented sockets */
- return rb_assoc_new(str, rsock_ipaddr((struct sockaddr*)&arg.buf, arg.alen, fptr->mode & FMODE_NOREVLOOKUP));
+ return rb_assoc_new(str, rsock_ipaddr((struct sockaddr*)&arg.buf, fptr->mode & FMODE_NOREVLOOKUP));
else
return rb_assoc_new(str, Qnil);
@@ -227,7 +226,7 @@ rsock_s_recvfrom_nonblock(VALUE sock, int argc, VALUE *argv, enum sock_recv_type
case RECV_IP:
if (alen && alen != sizeof(buf)) /* connection-oriented socket may not return a from result */
- addr = rsock_ipaddr((struct sockaddr*)&buf, alen, fptr->mode & FMODE_NOREVLOOKUP);
+ addr = rsock_ipaddr((struct sockaddr*)&buf, fptr->mode & FMODE_NOREVLOOKUP);
break;
case RECV_SOCKET:
@@ -240,49 +239,17 @@ rsock_s_recvfrom_nonblock(VALUE sock, int argc, VALUE *argv, enum sock_recv_type
return rb_assoc_new(str, addr);
}
-static int
-rsock_socket0(int domain, int type, int proto)
-{
- int ret;
-
-#ifdef SOCK_CLOEXEC
- static int try_sock_cloexec = 1;
- if (try_sock_cloexec) {
- ret = socket(domain, type|SOCK_CLOEXEC, proto);
- if (ret == -1 && errno == EINVAL) {
- /* SOCK_CLOEXEC is available since Linux 2.6.27. Linux 2.6.18 fails with EINVAL */
- ret = socket(domain, type, proto);
- if (ret != -1) {
- try_sock_cloexec = 0;
- }
- }
- }
- else {
- ret = socket(domain, type, proto);
- }
-#else
- ret = socket(domain, type, proto);
-#endif
- if (ret == -1)
- return -1;
-
- rb_fd_fix_cloexec(ret);
-
- return ret;
-
-}
-
int
rsock_socket(int domain, int type, int proto)
{
int fd;
- fd = rsock_socket0(domain, type, proto);
+ fd = socket(domain, type, proto);
if (fd < 0) {
- if (errno == EMFILE || errno == ENFILE) {
- rb_gc();
- fd = rsock_socket0(domain, type, proto);
- }
+ if (errno == EMFILE || errno == ENFILE) {
+ rb_gc();
+ fd = socket(domain, type, proto);
+ }
}
if (0 <= fd)
rb_update_max_fd(fd);
@@ -314,12 +281,8 @@ wait_connectable(int fd)
*/
if (ret < 0)
break;
- if (sockerr == 0) {
- if (revents & RB_WAITFD_OUT)
- break;
- else
- continue; /* workaround for winsock */
- }
+ if (sockerr == 0)
+ continue; /* workaround for winsock */
/* BSD and Linux use sockerr. */
errno = sockerr;
@@ -481,43 +444,6 @@ make_fd_nonblock(int fd)
}
}
-static int
-cloexec_accept(int socket, struct sockaddr *address, socklen_t *address_len)
-{
- int ret;
- socklen_t len0 = 0;
-#ifdef HAVE_ACCEPT4
- static int try_accept4 = 1;
-#endif
- if (address_len) len0 = *address_len;
-#ifdef HAVE_ACCEPT4
- if (try_accept4) {
- int flags = 0;
-#ifdef SOCK_CLOEXEC
- flags |= SOCK_CLOEXEC;
-#endif
- ret = accept4(socket, address, address_len, flags);
- /* accept4 is available since Linux 2.6.28, glibc 2.10. */
- if (ret != -1) {
- if (ret <= 2)
- rb_maygvl_fd_fix_cloexec(ret);
- if (address_len && len0 < *address_len) *address_len = len0;
- return ret;
- }
- if (errno != ENOSYS) {
- return -1;
- }
- try_accept4 = 0;
- }
-#endif
- ret = accept(socket, address, address_len);
- if (ret == -1) return -1;
- if (address_len && len0 < *address_len) *address_len = len0;
- rb_maygvl_fd_fix_cloexec(ret);
- return ret;
-}
-
-
VALUE
rsock_s_accept_nonblock(VALUE klass, rb_io_t *fptr, struct sockaddr *sockaddr, socklen_t *len)
{
@@ -525,7 +451,7 @@ rsock_s_accept_nonblock(VALUE klass, rb_io_t *fptr, struct sockaddr *sockaddr, s
rb_secure(3);
rb_io_set_nonblock(fptr);
- fd2 = cloexec_accept(fptr->fd, (struct sockaddr*)sockaddr, len);
+ fd2 = accept(fptr->fd, (struct sockaddr*)sockaddr, len);
if (fd2 < 0) {
switch (errno) {
case EAGAIN:
@@ -555,7 +481,7 @@ static VALUE
accept_blocking(void *data)
{
struct accept_arg *arg = data;
- return (VALUE)cloexec_accept(arg->fd, arg->sockaddr, arg->len);
+ return (VALUE)accept(arg->fd, arg->sockaddr, arg->len);
}
VALUE
diff --git a/ext/socket/ipsocket.c b/ext/socket/ipsocket.c
index fa5c13c08f..2217fffc9d 100644
--- a/ext/socket/ipsocket.c
+++ b/ext/socket/ipsocket.c
@@ -105,7 +105,7 @@ init_inetsock_internal(struct inetsock_arg *arg)
arg->fd = -1;
if (type == INET_SERVER) {
- status = listen(fd, SOMAXCONN);
+ status = listen(fd, 5);
if (status < 0) {
close(fd);
rb_sys_fail("listen(2)");
@@ -194,7 +194,7 @@ ip_addr(int argc, VALUE *argv, VALUE sock)
norevlookup = fptr->mode & FMODE_NOREVLOOKUP;
if (getsockname(fptr->fd, (struct sockaddr*)&addr, &len) < 0)
rb_sys_fail("getsockname(2)");
- return rsock_ipaddr((struct sockaddr*)&addr, len, norevlookup);
+ return rsock_ipaddr((struct sockaddr*)&addr, norevlookup);
}
/*
@@ -214,7 +214,7 @@ ip_addr(int argc, VALUE *argv, VALUE sock)
*
* TCPSocket.open("www.ruby-lang.org", 80) {|sock|
* p sock.peeraddr #=> ["AF_INET", 80, "carbon.ruby-lang.org", "221.186.184.68"]
- * p sock.peeraddr(true) #=> ["AF_INET", 80, "carbon.ruby-lang.org", "221.186.184.68"]
+ * p sock.peeraddr(true) #=> ["AF_INET", 80, "221.186.184.68", "221.186.184.68"]
* p sock.peeraddr(false) #=> ["AF_INET", 80, "221.186.184.68", "221.186.184.68"]
* p sock.peeraddr(:hostname) #=> ["AF_INET", 80, "carbon.ruby-lang.org", "221.186.184.68"]
* p sock.peeraddr(:numeric) #=> ["AF_INET", 80, "221.186.184.68", "221.186.184.68"]
@@ -235,7 +235,7 @@ ip_peeraddr(int argc, VALUE *argv, VALUE sock)
norevlookup = fptr->mode & FMODE_NOREVLOOKUP;
if (getpeername(fptr->fd, (struct sockaddr*)&addr, &len) < 0)
rb_sys_fail("getpeername(2)");
- return rsock_ipaddr((struct sockaddr*)&addr, len, norevlookup);
+ return rsock_ipaddr((struct sockaddr*)&addr, norevlookup);
}
/*
@@ -280,13 +280,12 @@ ip_s_getaddress(VALUE obj, VALUE host)
{
struct sockaddr_storage addr;
struct addrinfo *res = rsock_addrinfo(host, Qnil, SOCK_STREAM, 0);
- socklen_t len = res->ai_addrlen;
/* just take the first one */
- memcpy(&addr, res->ai_addr, len);
+ memcpy(&addr, res->ai_addr, res->ai_addrlen);
freeaddrinfo(res);
- return rsock_make_ipaddr((struct sockaddr*)&addr, len);
+ return rsock_make_ipaddr((struct sockaddr*)&addr);
}
void
diff --git a/ext/socket/lib/socket.rb b/ext/socket/lib/socket.rb
index 78b2ff45c2..d311eed28d 100644
--- a/ext/socket/lib/socket.rb
+++ b/ext/socket/lib/socket.rb
@@ -16,12 +16,6 @@ class Addrinfo
raise ArgumentError, "no address specified"
elsif Addrinfo === args.first
raise ArgumentError, "too many arguments" if args.length != 1
- addrinfo = args.first
- if (self.pfamily != addrinfo.pfamily) ||
- (self.socktype != addrinfo.socktype)
- raise ArgumentError, "Addrinfo type mismatch"
- end
- addrinfo
elsif self.ip?
raise ArgumentError, "IP address needs host and port but #{args.length} arguments given" if args.length != 2
host, port = args
@@ -37,65 +31,34 @@ class Addrinfo
# creates a new Socket connected to the address of +local_addrinfo+.
#
- # If _local_addrinfo_ is nil, the address of the socket is not bound.
- #
- # The _timeout_ specify the seconds for timeout.
- # Errno::ETIMEDOUT is raised when timeout occur.
+ # If no arguments are given, the address of the socket is not bound.
#
# If a block is given the created socket is yielded for each address.
#
- def connect_internal(local_addrinfo, timeout=nil) # :yields: socket
+ def connect_internal(local_addrinfo) # :yields: socket
sock = Socket.new(self.pfamily, self.socktype, self.protocol)
begin
sock.ipv6only! if self.ipv6?
sock.bind local_addrinfo if local_addrinfo
- if timeout
- begin
- sock.connect_nonblock(self)
- rescue IO::WaitWritable
- if !IO.select(nil, [sock], nil, timeout)
- raise Errno::ETIMEDOUT, 'user specified timeout'
- end
- begin
- sock.connect_nonblock(self) # check connection failure
- rescue Errno::EISCONN
- end
- end
- else
- sock.connect(self)
- end
- rescue Exception
- sock.close
- raise
- end
- if block_given?
- begin
+ sock.connect(self)
+ if block_given?
yield sock
- ensure
- sock.close if !sock.closed?
+ else
+ sock
end
- else
- sock
+ ensure
+ sock.close if !sock.closed? && (block_given? || $!)
end
end
private :connect_internal
- # :call-seq:
- # addrinfo.connect_from([local_addr_args], [opts]) {|socket| ... }
- # addrinfo.connect_from([local_addr_args], [opts])
- #
# creates a socket connected to the address of self.
#
# If one or more arguments given as _local_addr_args_,
# it is used as the local address of the socket.
# _local_addr_args_ is given for family_addrinfo to obtain actual address.
#
- # If _local_addr_args_ is not given, the local address of the socket is not bound.
- #
- # The optional last argument _opts_ is options represented by a hash.
- # _opts_ may have following options:
- #
- # [:timeout] specify the timeout in seconds.
+ # If no arguments given, the local address of the socket is not bound.
#
# If a block is given, it is called with the socket and the value of the block is returned.
# The socket is returned otherwise.
@@ -111,23 +74,12 @@ class Addrinfo
# puts s.read
# }
#
- def connect_from(*args, &block)
- opts = Hash === args.last ? args.pop : {}
- local_addr_args = args
- connect_internal(family_addrinfo(*local_addr_args), opts[:timeout], &block)
+ def connect_from(*local_addr_args, &block)
+ connect_internal(family_addrinfo(*local_addr_args), &block)
end
- # :call-seq:
- # addrinfo.connect([opts]) {|socket| ... }
- # addrinfo.connect([opts])
- #
# creates a socket connected to the address of self.
#
- # The optional argument _opts_ is options represented by a hash.
- # _opts_ may have following options:
- #
- # [:timeout] specify the timeout in seconds.
- #
# If a block is given, it is called with the socket and the value of the block is returned.
# The socket is returned otherwise.
#
@@ -136,21 +88,12 @@ class Addrinfo
# puts s.read
# }
#
- def connect(opts={}, &block)
- connect_internal(nil, opts[:timeout], &block)
+ def connect(&block)
+ connect_internal(nil, &block)
end
- # :call-seq:
- # addrinfo.connect_to([remote_addr_args], [opts]) {|socket| ... }
- # addrinfo.connect_to([remote_addr_args], [opts])
- #
# creates a socket connected to _remote_addr_args_ and bound to self.
#
- # The optional last argument _opts_ is options represented by a hash.
- # _opts_ may have following options:
- #
- # [:timeout] specify the timeout in seconds.
- #
# If a block is given, it is called with the socket and the value of the block is returned.
# The socket is returned otherwise.
#
@@ -159,11 +102,9 @@ class Addrinfo
# puts s.read
# }
#
- def connect_to(*args, &block)
- opts = Hash === args.last ? args.pop : {}
- remote_addr_args = args
+ def connect_to(*remote_addr_args, &block)
remote_addrinfo = family_addrinfo(*remote_addr_args)
- remote_addrinfo.send(:connect_internal, self, opts[:timeout], &block)
+ remote_addrinfo.send(:connect_internal, self, &block)
end
# creates a socket bound to self.
@@ -182,41 +123,31 @@ class Addrinfo
sock.ipv6only! if self.ipv6?
sock.setsockopt(:SOCKET, :REUSEADDR, 1)
sock.bind(self)
- rescue Exception
- sock.close
- raise
- end
- if block_given?
- begin
+ if block_given?
yield sock
- ensure
- sock.close if !sock.closed?
+ else
+ sock
end
- else
- sock
+ ensure
+ sock.close if !sock.closed? && (block_given? || $!)
end
end
# creates a listening socket bound to self.
- def listen(backlog=Socket::SOMAXCONN)
+ def listen(backlog=5)
sock = Socket.new(self.pfamily, self.socktype, self.protocol)
begin
sock.ipv6only! if self.ipv6?
sock.setsockopt(:SOCKET, :REUSEADDR, 1)
sock.bind(self)
sock.listen(backlog)
- rescue Exception
- sock.close
- raise
- end
- if block_given?
- begin
+ if block_given?
yield sock
- ensure
- sock.close if !sock.closed?
+ else
+ sock
end
- else
- sock
+ ensure
+ sock.close if !sock.closed? && (block_given? || $!)
end
end
@@ -285,29 +216,15 @@ class Socket < BasicSocket
end
end
- # :call-seq:
- # Socket.tcp(host, port, local_host=nil, local_port=nil, [opts]) {|socket| ... }
- # Socket.tcp(host, port, local_host=nil, local_port=nil, [opts])
- #
# creates a new socket object connected to host:port using TCP/IP.
#
# If local_host:local_port is given,
# the socket is bound to it.
#
- # The optional last argument _opts_ is options represented by a hash.
- # _opts_ may have following options:
- #
- # [:connect_timeout] specify the timeout in seconds.
- #
# If a block is given, the block is called with the socket.
# The value of the block is returned.
# The socket is closed when this method returns.
#
- # The optional last argument _opts_ is options represented by a hash.
- # _opts_ may have following options:
- #
- # [:timeout] specify the timeout in seconds.
- #
# If no block is given, the socket is returned.
#
# Socket.tcp("www.ruby-lang.org", 80) {|sock|
@@ -316,15 +233,10 @@ class Socket < BasicSocket
# puts sock.read
# }
#
- def self.tcp(host, port, *rest) # :yield: socket
- opts = Hash === rest.last ? rest.pop : {}
- raise ArgumentError, "wrong number of arguments (#{rest.length} for 2)" if 2 < rest.length
- local_host, local_port = rest
+ def self.tcp(host, port, local_host=nil, local_port=nil) # :yield: socket
last_error = nil
ret = nil
- connect_timeout = opts[:connect_timeout]
-
local_addr_list = nil
if local_host != nil || local_port != nil
local_addr_list = Addrinfo.getaddrinfo(local_host, local_port, nil, :STREAM, nil)
@@ -338,9 +250,7 @@ class Socket < BasicSocket
local_addr = nil
end
begin
- sock = local_addr ?
- ai.connect_from(local_addr, :timeout => connect_timeout) :
- ai.connect(:timeout => connect_timeout)
+ sock = local_addr ? ai.connect_from(local_addr) : ai.connect
rescue SystemCallError
last_error = $!
next
@@ -368,9 +278,8 @@ class Socket < BasicSocket
# :stopdoc:
def self.ip_sockets_port0(ai_list, reuseaddr)
- sockets = []
begin
- sockets.clear
+ sockets = []
port = nil
ai_list.each {|ai|
begin
@@ -391,13 +300,14 @@ class Socket < BasicSocket
end
}
rescue Errno::EADDRINUSE
- sockets.each {|s| s.close }
+ sockets.each {|s|
+ s.close
+ }
retry
- rescue Exception
- sockets.each {|s| s.close }
- raise
end
sockets
+ ensure
+ sockets.each {|s| s.close if !s.closed? } if $!
end
class << self
private :ip_sockets_port0
@@ -406,15 +316,12 @@ class Socket < BasicSocket
def self.tcp_server_sockets_port0(host)
ai_list = Addrinfo.getaddrinfo(host, 0, nil, :STREAM, nil, Socket::AI_PASSIVE)
sockets = ip_sockets_port0(ai_list, true)
- begin
- sockets.each {|s|
- s.listen(Socket::SOMAXCONN)
- }
- rescue Exception
- sockets.each {|s| s.close }
- raise
- end
+ sockets.each {|s|
+ s.listen(5)
+ }
sockets
+ ensure
+ sockets.each {|s| s.close if !s.closed? } if $! && sockets
end
class << self
private :tcp_server_sockets_port0
@@ -431,7 +338,7 @@ class Socket < BasicSocket
# The value of the block is returned.
# The socket is closed when this method returns.
#
- # If _port_ is 0, actual port number is chosen dynamically.
+ # If _port_ is 0, actual port number is choosen dynamically.
# However all sockets in the result has same port number.
#
# # tcp_server_sockets returns two sockets.
@@ -443,7 +350,7 @@ class Socket < BasicSocket
# #=> #<Addrinfo: [::]:1296 TCP>
# # #<Addrinfo: 0.0.0.0:1296 TCP>
#
- # # IPv6 and IPv4 socket has same port number, 53114, even if it is chosen dynamically.
+ # # IPv6 and IPv4 socket has same port number, 53114, even if it is choosen dynamically.
# sockets = Socket.tcp_server_sockets(0)
# sockets.each {|s| p s.local_address }
# #=> #<Addrinfo: [::]:53114 TCP>
@@ -458,9 +365,9 @@ class Socket < BasicSocket
if port == 0
sockets = tcp_server_sockets_port0(host)
else
- last_error = nil
- sockets = []
begin
+ last_error = nil
+ sockets = []
Addrinfo.foreach(host, port, nil, :STREAM, nil, Socket::AI_PASSIVE) {|ai|
begin
s = ai.listen
@@ -473,9 +380,8 @@ class Socket < BasicSocket
if sockets.empty?
raise last_error
end
- rescue Exception
- sockets.each {|s| s.close }
- raise
+ ensure
+ sockets.each {|s| s.close if !s.closed? } if $!
end
end
if block_given?
@@ -574,8 +480,8 @@ class Socket < BasicSocket
# The value of the block is returned.
# The sockets are closed when this method returns.
#
- # If _port_ is zero, some port is chosen.
- # But the chosen port is used for the all sockets.
+ # If _port_ is zero, some port is choosen.
+ # But the choosen port is used for the all sockets.
#
# # UDP/IP echo server
# Socket.udp_server_sockets(0) {|sockets|
@@ -737,9 +643,9 @@ class Socket < BasicSocket
# UDP/IP address information used by Socket.udp_server_loop.
class UDPSource
- # +remote_address+ is an Addrinfo object.
+ # +remote_adress+ is an Addrinfo object.
#
- # +local_address+ is an Addrinfo object.
+ # +local_adress+ is an Addrinfo object.
#
# +reply_proc+ is a Proc used to send reply back to the source.
def initialize(remote_address, local_address, &reply_proc)
@@ -810,14 +716,12 @@ class Socket < BasicSocket
# }
#
def self.unix_server_socket(path)
- if !unix_socket_abstract_name?(path)
- begin
- st = File.lstat(path)
- rescue Errno::ENOENT
- end
- if st && st.socket? && st.owned?
- File.unlink path
- end
+ begin
+ st = File.lstat(path)
+ rescue Errno::ENOENT
+ end
+ if st && st.socket? && st.owned?
+ File.unlink path
end
s = Addrinfo.unix(path).listen
if block_given?
@@ -825,23 +729,13 @@ class Socket < BasicSocket
yield s
ensure
s.close if !s.closed?
- if !unix_socket_abstract_name?(path)
- File.unlink path
- end
+ File.unlink path
end
else
s
end
end
- class << self
- private
-
- def unix_socket_abstract_name?(path)
- /linux/ =~ RUBY_PLATFORM && /\A(\0|\z)/ =~ path
- end
- end
-
# creates a UNIX socket server on _path_.
# It calls the block for each socket accepted.
#
diff --git a/ext/socket/mkconstants.rb b/ext/socket/mkconstants.rb
index 3b63c39eff..ae28630179 100644
--- a/ext/socket/mkconstants.rb
+++ b/ext/socket/mkconstants.rb
@@ -690,7 +690,7 @@ INET6_ADDRSTRLEN 46 Maximum length of an IPv6 address string
IFNAMSIZ nil Maximum interface name size
IF_NAMESIZE nil Maximum interface name size
-SOMAXCONN 5 Maximum connection requests that may be queued for a socket
+SOMAXCONN nil Maximum connection requests that may be queued for a socket
SCM_RIGHTS nil Access rights
SCM_TIMESTAMP nil Timestamp (timeval)
diff --git a/ext/socket/option.c b/ext/socket/option.c
index e3e59cf0c5..1f334bbca0 100644
--- a/ext/socket/option.c
+++ b/ext/socket/option.c
@@ -61,7 +61,8 @@ sockopt_initialize(VALUE self, VALUE vfamily, VALUE vlevel, VALUE voptname, VALU
VALUE
rsock_sockopt_new(int family, int level, int optname, VALUE data)
{
- NEWOBJ_OF(obj, struct RObject, rb_cSockOpt, T_OBJECT);
+ NEWOBJ(obj, struct RObject);
+ OBJSETUP(obj, rb_cSockOpt, T_OBJECT);
StringValue(data);
sockopt_initialize((VALUE)obj, INT2NUM(family), INT2NUM(level), INT2NUM(optname), data);
return (VALUE)obj;
@@ -436,7 +437,7 @@ inspect_timeval_as_interval(int level, int optname, VALUE data, VALUE ret)
*/
#ifndef HAVE_INET_NTOP
-static const char *
+static char *
inet_ntop(int af, const void *addr, char *numaddr, size_t numaddr_len)
{
#ifdef HAVE_INET_NTOA
@@ -451,8 +452,6 @@ inet_ntop(int af, const void *addr, char *numaddr, size_t numaddr_len)
#endif
return numaddr;
}
-#elif defined __MINGW64__
-# define inet_ntop(f,a,n,l) rb_w32_inet_ntop(f,a,n,l)
#endif
/* Although the buffer size needed depends on the prefixes, "%u" may generate "4294967295". */
diff --git a/ext/socket/raddrinfo.c b/ext/socket/raddrinfo.c
index afe5b6da34..2229269212 100644
--- a/ext/socket/raddrinfo.c
+++ b/ext/socket/raddrinfo.c
@@ -1,6 +1,6 @@
/************************************************
- raddrinfo.c -
+ ainfo.c -
created at: Thu Mar 31 12:21:29 JST 1994
@@ -154,20 +154,12 @@ struct getaddrinfo_arg
struct addrinfo **res;
};
-static void *
+static VALUE
nogvl_getaddrinfo(void *arg)
{
- int ret;
struct getaddrinfo_arg *ptr = arg;
- ret = getaddrinfo(ptr->node, ptr->service, ptr->hints, ptr->res);
-#ifdef __linux__
- /* On Linux (mainly Ubuntu 13.04) /etc/nsswitch.conf has mdns4 and
- * it cause getaddrinfo to return EAI_SYSTEM/ENOENT. [ruby-list:49420]
- */
- if (ret == EAI_SYSTEM && errno == ENOENT)
- ret = EAI_NONAME;
-#endif
- return (void *)(VALUE)ret;
+ return getaddrinfo(ptr->node, ptr->service,
+ ptr->hints, ptr->res);
}
#endif
@@ -186,7 +178,7 @@ rb_getaddrinfo(const char *node, const char *service,
arg.service = service;
arg.hints = hints;
arg.res = res;
- ret = (int)(VALUE)rb_thread_call_without_gvl(nogvl_getaddrinfo, &arg, RUBY_UBF_IO, 0);
+ ret = (int)BLOCKING_REGION(nogvl_getaddrinfo, &arg);
return ret;
#endif
}
@@ -203,14 +195,14 @@ struct getnameinfo_arg
int flags;
};
-static void *
+static VALUE
nogvl_getnameinfo(void *arg)
{
struct getnameinfo_arg *ptr = arg;
- return (void *)(VALUE)getnameinfo(ptr->sa, ptr->salen,
- ptr->host, (socklen_t)ptr->hostlen,
- ptr->serv, (socklen_t)ptr->servlen,
- ptr->flags);
+ return getnameinfo(ptr->sa, ptr->salen,
+ ptr->host, (socklen_t)ptr->hostlen,
+ ptr->serv, (socklen_t)ptr->servlen,
+ ptr->flags);
}
#endif
@@ -231,33 +223,33 @@ rb_getnameinfo(const struct sockaddr *sa, socklen_t salen,
arg.serv = serv;
arg.servlen = servlen;
arg.flags = flags;
- ret = (int)(VALUE)rb_thread_call_without_gvl(nogvl_getnameinfo, &arg, RUBY_UBF_IO, 0);
+ ret = (int)BLOCKING_REGION(nogvl_getnameinfo, &arg);
return ret;
#endif
}
static void
-make_ipaddr0(struct sockaddr *addr, socklen_t addrlen, char *buf, size_t buflen)
+make_ipaddr0(struct sockaddr *addr, char *buf, size_t len)
{
int error;
- error = rb_getnameinfo(addr, addrlen, buf, buflen, NULL, 0, NI_NUMERICHOST);
+ error = rb_getnameinfo(addr, SA_LEN(addr), buf, len, NULL, 0, NI_NUMERICHOST);
if (error) {
rsock_raise_socket_error("getnameinfo", error);
}
}
VALUE
-rsock_make_ipaddr(struct sockaddr *addr, socklen_t addrlen)
+rsock_make_ipaddr(struct sockaddr *addr)
{
char hbuf[1024];
- make_ipaddr0(addr, addrlen, hbuf, sizeof(hbuf));
+ make_ipaddr0(addr, hbuf, sizeof(hbuf));
return rb_str_new2(hbuf);
}
static void
-make_inetaddr(unsigned int host, char *buf, size_t buflen)
+make_inetaddr(unsigned int host, char *buf, size_t len)
{
struct sockaddr_in sin;
@@ -265,7 +257,7 @@ make_inetaddr(unsigned int host, char *buf, size_t buflen)
sin.sin_family = AF_INET;
SET_SIN_LEN(&sin, sizeof(sin));
sin.sin_addr.s_addr = host;
- make_ipaddr0((struct sockaddr*)&sin, sizeof(sin), buf, buflen);
+ make_ipaddr0((struct sockaddr*)&sin, buf, len);
}
static int
@@ -284,7 +276,7 @@ str_is_number(const char *p)
}
static char*
-host_str(VALUE host, char *hbuf, size_t hbuflen, int *flags_ptr)
+host_str(VALUE host, char *hbuf, size_t len, int *flags_ptr)
{
if (NIL_P(host)) {
return NULL;
@@ -292,7 +284,7 @@ host_str(VALUE host, char *hbuf, size_t hbuflen, int *flags_ptr)
else if (rb_obj_is_kind_of(host, rb_cInteger)) {
unsigned int i = NUM2UINT(host);
- make_inetaddr(htonl(i), hbuf, hbuflen);
+ make_inetaddr(htonl(i), hbuf, len);
if (flags_ptr) *flags_ptr |= AI_NUMERICHOST;
return hbuf;
}
@@ -302,14 +294,14 @@ host_str(VALUE host, char *hbuf, size_t hbuflen, int *flags_ptr)
SafeStringValue(host);
name = RSTRING_PTR(host);
if (!name || *name == 0 || (name[0] == '<' && strcmp(name, "<any>") == 0)) {
- make_inetaddr(INADDR_ANY, hbuf, hbuflen);
+ make_inetaddr(INADDR_ANY, hbuf, len);
if (flags_ptr) *flags_ptr |= AI_NUMERICHOST;
}
else if (name[0] == '<' && strcmp(name, "<broadcast>") == 0) {
- make_inetaddr(INADDR_BROADCAST, hbuf, hbuflen);
+ make_inetaddr(INADDR_BROADCAST, hbuf, len);
if (flags_ptr) *flags_ptr |= AI_NUMERICHOST;
}
- else if (strlen(name) >= hbuflen) {
+ else if (strlen(name) >= len) {
rb_raise(rb_eArgError, "hostname too long (%"PRIuSIZE")",
strlen(name));
}
@@ -321,13 +313,13 @@ host_str(VALUE host, char *hbuf, size_t hbuflen, int *flags_ptr)
}
static char*
-port_str(VALUE port, char *pbuf, size_t pbuflen, int *flags_ptr)
+port_str(VALUE port, char *pbuf, size_t len, int *flags_ptr)
{
if (NIL_P(port)) {
return 0;
}
else if (FIXNUM_P(port)) {
- snprintf(pbuf, pbuflen, "%ld", FIX2LONG(port));
+ snprintf(pbuf, len, "%ld", FIX2LONG(port));
#ifdef AI_NUMERICSERV
if (flags_ptr) *flags_ptr |= AI_NUMERICSERV;
#endif
@@ -338,7 +330,7 @@ port_str(VALUE port, char *pbuf, size_t pbuflen, int *flags_ptr)
SafeStringValue(port);
serv = RSTRING_PTR(port);
- if (strlen(serv) >= pbuflen) {
+ if (strlen(serv) >= len) {
rb_raise(rb_eArgError, "service name too long (%"PRIuSIZE")",
strlen(serv));
}
@@ -388,7 +380,7 @@ rsock_addrinfo(VALUE host, VALUE port, int socktype, int flags)
}
VALUE
-rsock_ipaddr(struct sockaddr *sockaddr, socklen_t sockaddrlen, int norevlookup)
+rsock_ipaddr(struct sockaddr *sockaddr, int norevlookup)
{
VALUE family, port, addr1, addr2;
VALUE ary;
@@ -407,13 +399,13 @@ rsock_ipaddr(struct sockaddr *sockaddr, socklen_t sockaddrlen, int norevlookup)
addr1 = Qnil;
if (!norevlookup) {
- error = rb_getnameinfo(sockaddr, sockaddrlen, hbuf, sizeof(hbuf),
+ error = rb_getnameinfo(sockaddr, SA_LEN(sockaddr), hbuf, sizeof(hbuf),
NULL, 0, 0);
if (! error) {
addr1 = rb_str_new2(hbuf);
}
}
- error = rb_getnameinfo(sockaddr, sockaddrlen, hbuf, sizeof(hbuf),
+ error = rb_getnameinfo(sockaddr, SA_LEN(sockaddr), hbuf, sizeof(hbuf),
pbuf, sizeof(pbuf), NI_NUMERICHOST | NI_NUMERICSERV);
if (error) {
rsock_raise_socket_error("getnameinfo", error);
@@ -429,46 +421,20 @@ rsock_ipaddr(struct sockaddr *sockaddr, socklen_t sockaddrlen, int norevlookup)
}
#ifdef HAVE_SYS_UN_H
-VALUE
-rsock_unixpath_str(struct sockaddr_un *sockaddr, socklen_t len)
+const char*
+rsock_unixpath(struct sockaddr_un *sockaddr, socklen_t len)
{
- char *s, *e;
- s = sockaddr->sun_path;
- e = (char *)sockaddr + len;
- while (s < e && *(e-1) == '\0')
- e--;
- if (s <= e)
- return rb_str_new(s, e-s);
+ if (sockaddr->sun_path < (char*)sockaddr + len)
+ return sockaddr->sun_path;
else
- return rb_str_new2("");
+ return "";
}
VALUE
rsock_unixaddr(struct sockaddr_un *sockaddr, socklen_t len)
{
return rb_assoc_new(rb_str_new2("AF_UNIX"),
- rsock_unixpath_str(sockaddr, len));
-}
-
-socklen_t
-rsock_unix_sockaddr_len(VALUE path)
-{
-#ifdef __linux__
- if (RSTRING_LEN(path) == 0) {
- /* autobind; see unix(7) for details. */
- return (socklen_t) sizeof(sa_family_t);
- }
- else if (RSTRING_PTR(path)[0] == '\0') {
- /* abstract namespace; see unix(7) for details. */
- return (socklen_t) offsetof(struct sockaddr_un, sun_path) +
- RSTRING_LEN(path);
- }
- else {
-#endif
- return (socklen_t) sizeof(struct sockaddr_un);
-#ifdef __linux__
- }
-#endif
+ rb_str_new2(rsock_unixpath(sockaddr, len)));
}
#endif
@@ -501,8 +467,7 @@ make_hostent_internal(struct hostent_arg *arg)
}
rb_ary_push(ary, rb_str_new2(hostp));
- if (addr->ai_canonname && strlen(addr->ai_canonname) < NI_MAXHOST &&
- (h = gethostbyname(addr->ai_canonname))) {
+ if (addr->ai_canonname && (h = gethostbyname(addr->ai_canonname))) {
names = rb_ary_new();
if (h->h_aliases != NULL) {
for (pch = h->h_aliases; *pch; pch++) {
@@ -696,32 +661,31 @@ make_inspectname(VALUE node, VALUE service, struct addrinfo *res)
VALUE inspectname = Qnil;
if (res) {
- /* drop redundant information which also shown in address:port part. */
char hbuf[NI_MAXHOST], pbuf[NI_MAXSERV];
int ret;
ret = rb_getnameinfo(res->ai_addr, res->ai_addrlen, hbuf,
sizeof(hbuf), pbuf, sizeof(pbuf),
NI_NUMERICHOST|NI_NUMERICSERV);
if (ret == 0) {
- if (RB_TYPE_P(node, T_STRING) && strcmp(hbuf, RSTRING_PTR(node)) == 0)
+ if (TYPE(node) == T_STRING && strcmp(hbuf, RSTRING_PTR(node)) == 0)
node = Qnil;
- if (RB_TYPE_P(service, T_STRING) && strcmp(pbuf, RSTRING_PTR(service)) == 0)
+ if (TYPE(service) == T_STRING && strcmp(pbuf, RSTRING_PTR(service)) == 0)
service = Qnil;
- else if (RB_TYPE_P(service, T_FIXNUM) && atoi(pbuf) == FIX2INT(service))
+ else if (TYPE(service) == T_FIXNUM && atoi(pbuf) == FIX2INT(service))
service = Qnil;
}
}
- if (RB_TYPE_P(node, T_STRING)) {
+ if (TYPE(node) == T_STRING) {
inspectname = rb_str_dup(node);
}
- if (RB_TYPE_P(service, T_STRING)) {
+ if (TYPE(service) == T_STRING) {
if (NIL_P(inspectname))
inspectname = rb_sprintf(":%s", StringValueCStr(service));
else
rb_str_catf(inspectname, ":%s", StringValueCStr(service));
}
- else if (RB_TYPE_P(service, T_FIXNUM) && FIX2INT(service) != 0)
+ else if (TYPE(service) == T_FIXNUM && FIX2INT(service) != 0)
{
if (NIL_P(inspectname))
inspectname = rb_sprintf(":%d", FIX2INT(service));
@@ -799,22 +763,19 @@ static void
init_unix_addrinfo(rb_addrinfo_t *rai, VALUE path, int socktype)
{
struct sockaddr_un un;
- socklen_t len;
StringValue(path);
- if (sizeof(un.sun_path) < (size_t)RSTRING_LEN(path))
- rb_raise(rb_eArgError,
- "too long unix socket path (%"PRIuSIZE" bytes given but %"PRIuSIZE" bytes max)",
- (size_t)RSTRING_LEN(path), sizeof(un.sun_path));
+ if (sizeof(un.sun_path) <= (size_t)RSTRING_LEN(path))
+ rb_raise(rb_eArgError, "too long unix socket path (max: %dbytes)",
+ (int)sizeof(un.sun_path)-1);
MEMZERO(&un, struct sockaddr_un, 1);
un.sun_family = AF_UNIX;
memcpy((void*)&un.sun_path, RSTRING_PTR(path), RSTRING_LEN(path));
- len = rsock_unix_sockaddr_len(path);
- init_addrinfo(rai, (struct sockaddr *)&un, len,
+ init_addrinfo(rai, (struct sockaddr *)&un, (socklen_t)sizeof(un),
PF_UNIX, socktype, 0, Qnil, Qnil);
}
#endif
@@ -1035,11 +996,9 @@ inspect_sockaddr(VALUE addrinfo, VALUE ret)
case AF_UNIX:
{
struct sockaddr_un *addr = (struct sockaddr_un *)&rai->addr;
- char *p, *s, *e;
+ char *p, *s, *t, *e;
s = addr->sun_path;
e = (char*)addr + rai->sockaddr_len;
- while (s < e && *(e-1) == '\0')
- e--;
if (e < s)
rb_str_cat2(ret, "too-short-AF_UNIX-sockaddr");
else if (s == e)
@@ -1047,17 +1006,28 @@ inspect_sockaddr(VALUE addrinfo, VALUE ret)
else {
int printable_only = 1;
p = s;
- while (p < e) {
+ while (p < e && *p != '\0') {
printable_only = printable_only && ISPRINT(*p) && !ISSPACE(*p);
p++;
}
- if (printable_only) { /* only printable, no space */
- if (s[0] != '/') /* relative path */
- rb_str_cat2(ret, "AF_UNIX ");
- rb_str_cat(ret, s, p - s);
+ t = p;
+ while (p < e && *p == '\0')
+ p++;
+ if (printable_only && /* only printable, no space */
+ t < e && /* NUL terminated */
+ p == e) { /* no data after NUL */
+ if (s == t)
+ rb_str_cat2(ret, "empty-path-AF_UNIX-sockaddr");
+ else if (s[0] == '/') /* absolute path */
+ rb_str_cat2(ret, s);
+ else
+ rb_str_catf(ret, "AF_UNIX %s", s);
}
else {
rb_str_cat2(ret, "AF_UNIX");
+ e = (char *)addr->sun_path + sizeof(addr->sun_path);
+ while (s < e && *(e-1) == '\0')
+ e--;
while (s < e)
rb_str_catf(ret, ":%02x", (unsigned char)*s++);
}
@@ -1090,7 +1060,7 @@ inspect_sockaddr(VALUE addrinfo, VALUE ret)
*
* returns a string which shows addrinfo in human-readable form.
*
- * Addrinfo.tcp("localhost", 80).inspect #=> "#<Addrinfo: 127.0.0.1:80 TCP (localhost)>"
+ * Addrinfo.tcp("localhost", 80).inspect #=> "#<Addrinfo: 127.0.0.1:80 TCP (localhost:80)>"
* Addrinfo.unix("/tmp/sock").inspect #=> "#<Addrinfo: /tmp/sock SOCK_STREAM>"
*
*/
@@ -1231,7 +1201,7 @@ addrinfo_mdump(VALUE self)
struct sockaddr_un *su = (struct sockaddr_un *)&rai->addr;
char *s, *e;
s = su->sun_path;
- e = (char*)su + rai->sockaddr_len;
+ e = (char*)s + sizeof(su->sun_path);
while (s < e && *(e-1) == '\0')
e--;
sockaddr = rb_str_new(s, e-s);
@@ -1328,14 +1298,12 @@ addrinfo_mload(VALUE self, VALUE ary)
case AF_UNIX:
{
struct sockaddr_un uaddr;
- MEMZERO(&uaddr, struct sockaddr_un, 1);
+ memset(&uaddr, 0, sizeof(uaddr));
uaddr.sun_family = AF_UNIX;
StringValue(v);
- if (sizeof(uaddr.sun_path) < (size_t)RSTRING_LEN(v))
- rb_raise(rb_eSocket,
- "too long AF_UNIX path (%"PRIuSIZE" bytes given but %"PRIuSIZE" bytes max)",
- (size_t)RSTRING_LEN(v), sizeof(uaddr.sun_path));
+ if (sizeof(uaddr.sun_path) <= (size_t)RSTRING_LEN(v))
+ rb_raise(rb_eSocket, "too long AF_UNIX path");
memcpy(uaddr.sun_path, RSTRING_PTR(v), RSTRING_LEN(v));
len = (socklen_t)sizeof(uaddr);
memcpy(&ss, &uaddr, len);
@@ -1464,7 +1432,7 @@ addrinfo_to_sockaddr(VALUE self)
* The canonical name is set by Addrinfo.getaddrinfo when AI_CANONNAME is specified.
*
* list = Addrinfo.getaddrinfo("www.ruby-lang.org", 80, :INET, :STREAM, nil, Socket::AI_CANONNAME)
- * p list[0] #=> #<Addrinfo: 221.186.184.68:80 TCP carbon.ruby-lang.org (www.ruby-lang.org)>
+ * p list[0] #=> #<Addrinfo: 221.186.184.68:80 TCP carbon.ruby-lang.org (www.ruby-lang.org:80)>
* p list[0].canonname #=> "carbon.ruby-lang.org"
*
*/
@@ -1825,18 +1793,6 @@ addrinfo_ipv6_sitelocal_p(VALUE self)
}
/*
- * Returns true for IPv6 unique local address (fc00::/7, RFC4193).
- * It returns false otherwise.
- */
-static VALUE
-addrinfo_ipv6_unique_local_p(VALUE self)
-{
- struct in6_addr *addr = extract_in6_addr(self);
- if (addr && IN6_IS_ADDR_UNIQUE_LOCAL(addr)) return Qtrue;
- return Qfalse;
-}
-
-/*
* Returns true for IPv4-mapped IPv6 address (::ffff:0:0/80).
* It returns false otherwise.
*/
@@ -1980,12 +1936,9 @@ addrinfo_unix_path(VALUE self)
s = addr->sun_path;
e = (char*)addr + rai->sockaddr_len;
if (e < s)
- rb_raise(rb_eSocket, "too short AF_UNIX address: %"PRIuSIZE" bytes given for minimum %"PRIuSIZE" bytes.",
- (size_t)rai->sockaddr_len, (size_t)(s - (char *)addr));
+ rb_raise(rb_eSocket, "too short AF_UNIX address");
if (addr->sun_path + sizeof(addr->sun_path) < e)
- rb_raise(rb_eSocket,
- "too long AF_UNIX path (%"PRIuSIZE" bytes given but %"PRIuSIZE" bytes max)",
- (size_t)(e - addr->sun_path), sizeof(addr->sun_path));
+ rb_raise(rb_eSocket, "too long AF_UNIX address");
while (s < e && *(e-1) == '\0')
e--;
return rb_str_new(s, e-s);
@@ -2015,24 +1968,15 @@ addrinfo_unix_path(VALUE self)
*
* Similarly, PF_INET6 as family restricts for IPv6.
*
- * flags should be bitwise OR of Socket::AI_??? constants such as follows.
- * Note that the exact list of the constants depends on OS.
- *
- * AI_PASSIVE Get address to use with bind()
- * AI_CANONNAME Fill in the canonical name
- * AI_NUMERICHOST Prevent host name resolution
- * AI_NUMERICSERV Prevent service name resolution
- * AI_V4MAPPED Accept IPv4-mapped IPv6 addresses
- * AI_ALL Allow all addresses
- * AI_ADDRCONFIG Accept only if any address is assigned
+ * flags should be bitwise OR of Socket::AI_??? constants.
*
* Note that socktype should be specified whenever application knows the usage of the address.
* Some platform causes an error when socktype is omitted and servname is specified as an integer
* because some port numbers, 512 for example, are ambiguous without socktype.
*
* Addrinfo.getaddrinfo("www.kame.net", 80, nil, :STREAM)
- * #=> [#<Addrinfo: 203.178.141.194:80 TCP (www.kame.net)>,
- * # #<Addrinfo: [2001:200:dff:fff1:216:3eff:feb1:44d7]:80 TCP (www.kame.net)>]
+ * #=> [#<Addrinfo: 203.178.141.194:80 TCP (www.kame.net:80)>,
+ * # #<Addrinfo: [2001:200:0:8002:203:47ff:fea5:3085]:80 TCP (www.kame.net:80)>]
*
*/
static VALUE
@@ -2199,8 +2143,6 @@ rsock_io_socket_addrinfo(VALUE io, struct sockaddr *addr, socklen_t len)
default:
rb_raise(rb_eTypeError, "neither IO nor file descriptor");
}
-
- UNREACHABLE;
}
/*
@@ -2251,7 +2193,6 @@ rsock_init_addrinfo(void)
rb_define_method(rb_cAddrinfo, "ipv6_multicast?", addrinfo_ipv6_multicast_p, 0);
rb_define_method(rb_cAddrinfo, "ipv6_linklocal?", addrinfo_ipv6_linklocal_p, 0);
rb_define_method(rb_cAddrinfo, "ipv6_sitelocal?", addrinfo_ipv6_sitelocal_p, 0);
- rb_define_method(rb_cAddrinfo, "ipv6_unique_local?", addrinfo_ipv6_unique_local_p, 0);
rb_define_method(rb_cAddrinfo, "ipv6_v4mapped?", addrinfo_ipv6_v4mapped_p, 0);
rb_define_method(rb_cAddrinfo, "ipv6_v4compat?", addrinfo_ipv6_v4compat_p, 0);
rb_define_method(rb_cAddrinfo, "ipv6_mc_nodelocal?", addrinfo_ipv6_mc_nodelocal_p, 0);
diff --git a/ext/socket/rubysocket.h b/ext/socket/rubysocket.h
index 999213550b..4c0efdb479 100644
--- a/ext/socket/rubysocket.h
+++ b/ext/socket/rubysocket.h
@@ -3,7 +3,6 @@
#include "ruby/ruby.h"
#include "ruby/io.h"
-#include "ruby/thread.h"
#include "ruby/util.h"
#include "internal.h"
#include <stdio.h>
@@ -117,10 +116,6 @@
# define IS_IP_FAMILY(af) ((af) == AF_INET)
#endif
-#ifndef IN6_IS_ADDR_UNIQUE_LOCAL
-# define IN6_IS_ADDR_UNIQUE_LOCAL(a) (((a)->s6_addr[0] == 0xfc) || ((a)->s6_addr[0] == 0xfd))
-#endif
-
#ifndef HAVE_SOCKADDR_STORAGE
/*
* RFC 2553: protocol-independent placeholder for socket addresses
@@ -144,7 +139,7 @@ struct sockaddr_storage {
};
#endif
-#ifdef __APPLE__
+#if defined __APPLE__ && defined __MACH__
/*
* CMSG_ macros are broken on 64bit darwin, because __DARWIN_ALIGN
* aligns up to __darwin_size_t which is 64bit, but CMSG_DATA is
@@ -231,16 +226,15 @@ VALUE rsock_io_socket_addrinfo(VALUE io, struct sockaddr *addr, socklen_t len);
VALUE rsock_addrinfo_new(struct sockaddr *addr, socklen_t len, int family, int socktype, int protocol, VALUE canonname, VALUE inspectname);
-VALUE rsock_make_ipaddr(struct sockaddr *addr, socklen_t addrlen);
-VALUE rsock_ipaddr(struct sockaddr *sockaddr, socklen_t sockaddrlen, int norevlookup);
+VALUE rsock_make_ipaddr(struct sockaddr *addr);
+VALUE rsock_ipaddr(struct sockaddr *sockaddr, int norevlookup);
VALUE rsock_make_hostent(VALUE host, struct addrinfo *addr, VALUE (*ipaddr)(struct sockaddr *, size_t));
int rsock_revlookup_flag(VALUE revlookup, int *norevlookup);
#ifdef HAVE_SYS_UN_H
-VALUE rsock_unixpath_str(struct sockaddr_un *sockaddr, socklen_t len);
+const char* rsock_unixpath(struct sockaddr_un *sockaddr, socklen_t len);
VALUE rsock_unixaddr(struct sockaddr_un *sockaddr, socklen_t len);
-socklen_t rsock_unix_sockaddr_len(VALUE path);
#endif
int rsock_socket(int domain, int type, int proto);
@@ -288,7 +282,6 @@ VALUE rsock_bsock_sendmsg_nonblock(int argc, VALUE *argv, VALUE sock);
#if defined(HAVE_RECVMSG)
VALUE rsock_bsock_recvmsg(int argc, VALUE *argv, VALUE sock);
VALUE rsock_bsock_recvmsg_nonblock(int argc, VALUE *argv, VALUE sock);
-ssize_t rsock_recvmsg(int socket, struct msghdr *message, int flags);
#else
#define rsock_bsock_recvmsg rb_f_notimplement
#define rsock_bsock_recvmsg_nonblock rb_f_notimplement
diff --git a/ext/socket/socket.c b/ext/socket/socket.c
index 3df435bbc9..4613892e7d 100644
--- a/ext/socket/socket.c
+++ b/ext/socket/socket.c
@@ -27,8 +27,9 @@ setup_domain_and_type(VALUE domain, int *dv, VALUE type, int *tv)
*
* _socktype_ should be a socket type such as: :STREAM, :DGRAM, :RAW, etc.
*
- * _protocol_ is optional and should be a protocol defined in the domain.
- * If protocol is not given, 0 is used internally.
+ * _protocol_ should be a protocol defined in the domain.
+ * This is optional.
+ * If it is not given, 0 is used internally.
*
* Socket.new(:INET, :STREAM) # TCP socket
* Socket.new(:INET, :DGRAM) # UDP socket
@@ -75,59 +76,6 @@ pair_yield(VALUE pair)
#endif
#if defined HAVE_SOCKETPAIR
-
-static int
-rsock_socketpair0(int domain, int type, int protocol, int sv[2])
-{
- int ret;
-
-#ifdef SOCK_CLOEXEC
- static int try_sock_cloexec = 1;
- if (try_sock_cloexec) {
- ret = socketpair(domain, type|SOCK_CLOEXEC, protocol, sv);
- if (ret == -1 && errno == EINVAL) {
- /* SOCK_CLOEXEC is available since Linux 2.6.27. Linux 2.6.18 fails with EINVAL */
- ret = socketpair(domain, type, protocol, sv);
- if (ret != -1) {
- /* The reason of EINVAL may be other than SOCK_CLOEXEC.
- * So disable SOCK_CLOEXEC only if socketpair() succeeds without SOCK_CLOEXEC.
- * Ex. Socket.pair(:UNIX, 0xff) fails with EINVAL.
- */
- try_sock_cloexec = 0;
- }
- }
- }
- else {
- ret = socketpair(domain, type, protocol, sv);
- }
-#else
- ret = socketpair(domain, type, protocol, sv);
-#endif
-
- if (ret == -1) {
- return -1;
- }
-
- rb_fd_fix_cloexec(sv[0]);
- rb_fd_fix_cloexec(sv[1]);
-
- return ret;
-}
-
-static int
-rsock_socketpair(int domain, int type, int protocol, int sv[2])
-{
- int ret;
-
- ret = rsock_socketpair0(domain, type, protocol, sv);
- if (ret < 0 && (errno == EMFILE || errno == ENFILE)) {
- rb_gc();
- ret = rsock_socketpair0(domain, type, protocol, sv);
- }
-
- return ret;
-}
-
/*
* call-seq:
* Socket.pair(domain, type, protocol) => [socket1, socket2]
@@ -139,8 +87,8 @@ rsock_socketpair(int domain, int type, int protocol, int sv[2])
*
* _socktype_ should be a socket type such as: :STREAM, :DGRAM, :RAW, etc.
*
- * _protocol_ should be a protocol defined in the domain,
- * defaults to 0 for the domain.
+ * _protocol_ should be a protocol defined in the domain.
+ * 0 is default protocol for the domain.
*
* s1, s2 = Socket.pair(:UNIX, :DGRAM, 0)
* s1.send "a", 0
@@ -163,12 +111,16 @@ rsock_sock_s_socketpair(int argc, VALUE *argv, VALUE klass)
setup_domain_and_type(domain, &d, type, &t);
p = NUM2INT(protocol);
- ret = rsock_socketpair(d, t, p, sp);
+ ret = socketpair(d, t, p, sp);
+ if (ret < 0 && (errno == EMFILE || errno == ENFILE)) {
+ rb_gc();
+ ret = socketpair(d, t, p, sp);
+ }
if (ret < 0) {
rb_sys_fail("socketpair(2)");
}
- rb_fd_fix_cloexec(sp[0]);
- rb_fd_fix_cloexec(sp[1]);
+ rb_update_max_fd(sp[0]);
+ rb_update_max_fd(sp[1]);
s1 = rsock_init_sock(rb_obj_alloc(klass), sp[0]);
s2 = rsock_init_sock(rb_obj_alloc(klass), sp[1]);
@@ -937,7 +889,7 @@ make_addrinfo(struct addrinfo *res0, int norevlookup)
}
base = rb_ary_new();
for (res = res0; res; res = res->ai_next) {
- ary = rsock_ipaddr(res->ai_addr, res->ai_addrlen, norevlookup);
+ ary = rsock_ipaddr(res->ai_addr, norevlookup);
if (res->ai_canonname) {
RARRAY_PTR(ary)[2] = rb_str_new2(res->ai_canonname);
}
@@ -1002,12 +954,13 @@ sock_s_gethostbyaddr(int argc, VALUE *argv)
{
VALUE addr, family;
struct hostent *h;
+ struct sockaddr *sa;
char **pch;
VALUE ary, names;
int t = AF_INET;
rb_scan_args(argc, argv, "11", &addr, &family);
- StringValue(addr);
+ sa = (struct sockaddr*)StringValuePtr(addr);
if (!NIL_P(family)) {
t = rsock_family_arg(family);
}
@@ -1133,8 +1086,8 @@ sock_s_getservbyport(int argc, VALUE *argv)
*
* _socktype_ should be a socket type such as: :STREAM, :DGRAM, :RAW, etc.
*
- * _protocol_ should be a protocol defined in the family,
- * and defaults to 0 for the family.
+ * _protocol_ should be a protocol defined in the family.
+ * 0 is default protocol for the family.
*
* _flags_ should be bitwise OR of Socket::AI_* constants.
*
@@ -1147,7 +1100,8 @@ sock_s_getservbyport(int argc, VALUE *argv)
* # ["AF_INET", 0, "localhost", "127.0.0.1", 2, 3, 0]] # PF_INET/SOCK_RAW/IPPROTO_IP
*
* _reverse_lookup_ directs the form of the third element, and has to
- * be one of below. If _reverse_lookup_ is omitted, the default value is +nil+.
+ * be one of below.
+ * If it is ommitted, the default value is +nil+.
*
* +true+, +:hostname+: hostname is obtained from numeric address using reverse lookup, which may take a time.
* +false+, +:numeric+: hostname is same as numeric address.
@@ -1199,8 +1153,7 @@ sock_s_getaddrinfo(int argc, VALUE *argv)
*
* _flags_ should be bitwise OR of Socket::NI_* constants.
*
- * Note:
- * The last form is compatible with IPSocket#addr and IPSocket#peeraddr.
+ * Note that the last form is compatible with IPSocket#{addr,peeraddr}.
*
* Socket.getnameinfo(Socket.sockaddr_in(80, "127.0.0.1")) #=> ["localhost", "www"]
* Socket.getnameinfo(["AF_INET", 80, "127.0.0.1"]) #=> ["localhost", "www"]
@@ -1216,10 +1169,9 @@ sock_s_getnameinfo(int argc, VALUE *argv)
char hbuf[1024], pbuf[1024];
int fl;
struct addrinfo hints, *res = NULL, *r;
- int error, saved_errno;
+ int error;
struct sockaddr_storage ss;
struct sockaddr *sap;
- socklen_t salen;
sa = flags = Qnil;
rb_scan_args(argc, argv, "11", &sa, &flags);
@@ -1239,7 +1191,6 @@ sock_s_getnameinfo(int argc, VALUE *argv)
rb_raise(rb_eTypeError, "sockaddr size differs - should not happen");
}
sap = (struct sockaddr*)&ss;
- salen = RSTRING_LEN(sa);
goto call_nameinfo;
}
tmp = rb_check_array_type(sa);
@@ -1301,14 +1252,13 @@ sock_s_getnameinfo(int argc, VALUE *argv)
error = rb_getaddrinfo(hptr, pptr, &hints, &res);
if (error) goto error_exit_addr;
sap = res->ai_addr;
- salen = res->ai_addrlen;
}
else {
rb_raise(rb_eTypeError, "expecting String or Array");
}
call_nameinfo:
- error = rb_getnameinfo(sap, salen, hbuf, sizeof(hbuf),
+ error = rb_getnameinfo(sap, SA_LEN(sap), hbuf, sizeof(hbuf),
pbuf, sizeof(pbuf), fl);
if (error) goto error_exit_name;
if (res) {
@@ -1316,8 +1266,7 @@ sock_s_getnameinfo(int argc, VALUE *argv)
char hbuf2[1024], pbuf2[1024];
sap = r->ai_addr;
- salen = r->ai_addrlen;
- error = rb_getnameinfo(sap, salen, hbuf2, sizeof(hbuf2),
+ error = rb_getnameinfo(sap, SA_LEN(sap), hbuf2, sizeof(hbuf2),
pbuf2, sizeof(pbuf2), fl);
if (error) goto error_exit_name;
if (strcmp(hbuf, hbuf2) != 0|| strcmp(pbuf, pbuf2) != 0) {
@@ -1330,18 +1279,12 @@ sock_s_getnameinfo(int argc, VALUE *argv)
return rb_assoc_new(rb_str_new2(hbuf), rb_str_new2(pbuf));
error_exit_addr:
- saved_errno = errno;
if (res) freeaddrinfo(res);
- errno = saved_errno;
rsock_raise_socket_error("getaddrinfo", error);
error_exit_name:
- saved_errno = errno;
if (res) freeaddrinfo(res);
- errno = saved_errno;
rsock_raise_socket_error("getnameinfo", error);
-
- UNREACHABLE;
}
/*
@@ -1407,7 +1350,7 @@ sock_s_unpack_sockaddr_in(VALUE self, VALUE addr)
rb_raise(rb_eArgError, "not an AF_INET sockaddr");
#endif
}
- host = rsock_make_ipaddr((struct sockaddr*)sockaddr, RSTRING_LEN(addr));
+ host = rsock_make_ipaddr((struct sockaddr*)sockaddr);
OBJ_INFECT(host, addr);
return rb_assoc_new(INT2NUM(ntohs(sockaddr->sin_port)), host);
}
@@ -1428,17 +1371,18 @@ static VALUE
sock_s_pack_sockaddr_un(VALUE self, VALUE path)
{
struct sockaddr_un sockaddr;
+ char *sun_path;
VALUE addr;
- StringValue(path);
MEMZERO(&sockaddr, struct sockaddr_un, 1);
sockaddr.sun_family = AF_UNIX;
- if (sizeof(sockaddr.sun_path) < (size_t)RSTRING_LEN(path)) {
- rb_raise(rb_eArgError, "too long unix socket path (%"PRIuSIZE" bytes given but %"PRIuSIZE" bytes max)",
- (size_t)RSTRING_LEN(path), sizeof(sockaddr.sun_path));
+ sun_path = StringValueCStr(path);
+ if (sizeof(sockaddr.sun_path) <= strlen(sun_path)) {
+ rb_raise(rb_eArgError, "too long unix socket path (max: %dbytes)",
+ (int)sizeof(sockaddr.sun_path)-1);
}
- memcpy(sockaddr.sun_path, RSTRING_PTR(path), RSTRING_LEN(path));
- addr = rb_str_new((char*)&sockaddr, rsock_unix_sockaddr_len(path));
+ strncpy(sockaddr.sun_path, sun_path, sizeof(sockaddr.sun_path)-1);
+ addr = rb_str_new((char*)&sockaddr, sizeof(sockaddr));
OBJ_INFECT(addr, path);
return addr;
@@ -1460,6 +1404,7 @@ static VALUE
sock_s_unpack_sockaddr_un(VALUE self, VALUE addr)
{
struct sockaddr_un * sockaddr;
+ const char *sun_path;
VALUE path;
sockaddr = (struct sockaddr_un*)SockAddrStringValuePtr(addr);
@@ -1475,7 +1420,13 @@ sock_s_unpack_sockaddr_un(VALUE self, VALUE addr)
rb_raise(rb_eTypeError, "too long sockaddr_un - %ld longer than %d",
RSTRING_LEN(addr), (int)sizeof(struct sockaddr_un));
}
- path = rsock_unixpath_str(sockaddr, RSTRING_LENINT(addr));
+ sun_path = rsock_unixpath(sockaddr, RSTRING_LENINT(addr));
+ if (sizeof(struct sockaddr_un) == RSTRING_LEN(addr) &&
+ sun_path == sockaddr->sun_path &&
+ sun_path + strlen(sun_path) == RSTRING_PTR(addr) + RSTRING_LEN(addr)) {
+ rb_raise(rb_eArgError, "sockaddr_un.sun_path not NUL terminated");
+ }
+ path = rb_str_new2(sun_path);
OBJ_INFECT(path, addr);
return path;
}
@@ -1866,45 +1817,35 @@ Init_socket()
* TCPSocket, UDPSocket or UNIXSocket for example.
*
* Sockets have their own vocabulary:
- *
- * *domain:*
- * The family of protocols:
- * * Socket::PF_INET
- * * Socket::PF_INET6
- * * Socket::PF_UNIX
- * * etc.
- *
- * *type:*
- * The type of communications between the two endpoints, typically
- * * Socket::SOCK_STREAM
- * * Socket::SOCK_DGRAM.
- *
- * *protocol:*
- * Typically _zero_.
- * This may be used to identify a variant of a protocol.
- *
- * *hostname:*
- * The identifier of a network interface:
- * * a string (hostname, IPv4 or IPv6 adress or +broadcast+
- * which specifies a broadcast address)
- * * a zero-length string which specifies INADDR_ANY
- * * an integer (interpreted as binary address in host byte order).
+ * domain::
+ * The family of protocols: Socket::PF_INET, Socket::PF_INET6,
+ * Socket::PF_UNIX, etc.
+ * type::
+ * The type of communications between the two endpoints, typically
+ * Socket::SOCK_STREAM or Socket::SOCK_DGRAM.
+ * protocol::
+ * Typically zero. This may be used to identify a variant of a
+ * protocol.
+ * hostname::
+ * The identifier of a network interface:
+ * * a string (hostname, IPv4 or IPv6 adress or <tt><broadcast></tt>
+ * which specifies a broadcast address)
+ * * a zero-length string which specifies INADDR_ANY
+ * * an integer (interpreted as binary address in host byte order).
*
* === Quick start
*
- * Many of the classes, such as TCPSocket, UDPSocket or UNIXSocket,
- * ease the use of sockets comparatively to the equivalent C programming interface.
+ * Some classes such as TCPSocket, UDPSocket or UNIXSocket ease use of
+ * sockets of these types compared to C programming.
*
- * Let's create an internet socket using the IPv4 protocol in a C-like manner:
- *
- * s = Socket.new Socket::AF_INET, Socket::SOCK_STREAM
+ * # Creating a TCP socket in a C-like manner
+ * s = Socket.new Socket::INET, Socket::SOCK_STREAM
* s.connect Socket.pack_sockaddr_in(80, 'example.com')
*
- * You could also use the TCPSocket class:
- *
+ * # Using TCPSocket
* s = TCPSocket.new 'example.com', 80
*
- * A simple server might look like this:
+ * A simple server would look like:
*
* require 'socket'
*
@@ -1917,7 +1858,7 @@ Init_socket()
* client.close
* end
*
- * A simple client may look like this:
+ * A simple client may look like:
*
* require 'socket'
*
@@ -1934,14 +1875,14 @@ Init_socket()
* Ruby's Socket implementation raises exceptions based on the error
* generated by the system dependent implementation. This is why the
* methods are documented in a way that isolate Unix-based system
- * exceptions from Windows based exceptions. If more information on a
- * particular exception is needed, please refer to the Unix manual pages or
+ * exceptions from Windows based exceptions. If more information on
+ * particular exception is needed please refer to the Unix manual pages or
* the Windows WinSock reference.
*
- * === Convenience methods
+ * === Convenient methods
*
* Although the general way to create socket is Socket.new,
- * there are several methods of socket creation for most cases.
+ * there are several methods for socket creation for most cases.
*
* TCP client socket::
* Socket.tcp, TCPSocket.open
diff --git a/ext/socket/tcpsocket.c b/ext/socket/tcpsocket.c
index 608156f1b2..7eb6fc7aa2 100644
--- a/ext/socket/tcpsocket.c
+++ b/ext/socket/tcpsocket.c
@@ -34,7 +34,7 @@ tcp_init(int argc, VALUE *argv, VALUE sock)
static VALUE
tcp_sockaddr(struct sockaddr *addr, size_t len)
{
- return rsock_make_ipaddr(addr, len);
+ return rsock_make_ipaddr(addr);
}
/*
diff --git a/ext/socket/unixsocket.c b/ext/socket/unixsocket.c
index 75da9c1a78..26822e5b4f 100644
--- a/ext/socket/unixsocket.c
+++ b/ext/socket/unixsocket.c
@@ -13,7 +13,6 @@
#ifdef HAVE_SYS_UN_H
struct unixsock_arg {
struct sockaddr_un *sockaddr;
- socklen_t sockaddrlen;
int fd;
};
@@ -22,14 +21,13 @@ unixsock_connect_internal(VALUE a)
{
struct unixsock_arg *arg = (struct unixsock_arg *)a;
return (VALUE)rsock_connect(arg->fd, (struct sockaddr*)arg->sockaddr,
- arg->sockaddrlen, 0);
+ (socklen_t)sizeof(*arg->sockaddr), 0);
}
VALUE
rsock_init_unixsock(VALUE sock, VALUE path, int server)
{
struct sockaddr_un sockaddr;
- socklen_t sockaddrlen;
int fd, status;
rb_io_t *fptr;
@@ -41,21 +39,19 @@ rsock_init_unixsock(VALUE sock, VALUE path, int server)
MEMZERO(&sockaddr, struct sockaddr_un, 1);
sockaddr.sun_family = AF_UNIX;
- if (sizeof(sockaddr.sun_path) < (size_t)RSTRING_LEN(path)) {
- rb_raise(rb_eArgError, "too long unix socket path (%ldbytes given but %dbytes max)",
- RSTRING_LEN(path), (int)sizeof(sockaddr.sun_path));
+ if (sizeof(sockaddr.sun_path) <= (size_t)RSTRING_LEN(path)) {
+ rb_raise(rb_eArgError, "too long unix socket path (max: %dbytes)",
+ (int)sizeof(sockaddr.sun_path)-1);
}
memcpy(sockaddr.sun_path, RSTRING_PTR(path), RSTRING_LEN(path));
- sockaddrlen = rsock_unix_sockaddr_len(path);
if (server) {
- status = bind(fd, (struct sockaddr*)&sockaddr, sockaddrlen);
+ status = bind(fd, (struct sockaddr*)&sockaddr, (socklen_t)sizeof(sockaddr));
}
else {
int prot;
struct unixsock_arg arg;
arg.sockaddr = &sockaddr;
- arg.sockaddrlen = sockaddrlen;
arg.fd = fd;
status = (int)rb_protect(unixsock_connect_internal, (VALUE)&arg, &prot);
if (prot) {
@@ -66,11 +62,11 @@ rsock_init_unixsock(VALUE sock, VALUE path, int server)
if (status < 0) {
close(fd);
- rb_sys_fail_str(rb_inspect(path));
+ rb_sys_fail(sockaddr.sun_path);
}
if (server) {
- if (listen(fd, SOMAXCONN) < 0) {
+ if (listen(fd, 5) < 0) {
close(fd);
rb_sys_fail("listen(2)");
}
@@ -120,11 +116,9 @@ unix_path(VALUE sock)
if (NIL_P(fptr->pathv)) {
struct sockaddr_un addr;
socklen_t len = (socklen_t)sizeof(addr);
- socklen_t len0 = len;
if (getsockname(fptr->fd, (struct sockaddr*)&addr, &len) < 0)
rb_sys_fail(0);
- if (len0 < len) len = len0;
- fptr->pathv = rb_obj_freeze(rsock_unixpath_str(&addr, len));
+ fptr->pathv = rb_obj_freeze(rb_str_new_cstr(rsock_unixpath(&addr, len)));
}
return rb_str_dup(fptr->pathv);
}
@@ -211,7 +205,7 @@ unix_send_io(VALUE sock, VALUE val)
#if FD_PASSING_BY_MSG_CONTROL
struct {
struct cmsghdr hdr;
- char pad[8+sizeof(int)+8];
+ char pad[8+sizeof(int)+8];
} cmsg;
#endif
@@ -270,8 +264,7 @@ static VALUE
recvmsg_blocking(void *data)
{
struct iomsg_arg *arg = data;
- int flags = 0;
- return rsock_recvmsg(arg->fd, &arg->msg, flags);
+ return recvmsg(arg->fd, &arg->msg, 0);
}
/*
@@ -306,7 +299,7 @@ unix_recv_io(int argc, VALUE *argv, VALUE sock)
#if FD_PASSING_BY_MSG_CONTROL
struct {
struct cmsghdr hdr;
- char pad[8+sizeof(int)+8];
+ char pad[8+sizeof(int)+8];
} cmsg;
#endif
@@ -390,7 +383,7 @@ unix_recv_io(int argc, VALUE *argv, VALUE sock)
#if FD_PASSING_BY_MSG_CONTROL
memcpy(&fd, CMSG_DATA(&cmsg.hdr), sizeof(int));
#endif
- rb_fd_fix_cloexec(fd);
+ rb_update_max_fd(fd);
if (klass == Qnil)
return INT2FIX(fd);
@@ -426,13 +419,11 @@ unix_addr(VALUE sock)
rb_io_t *fptr;
struct sockaddr_un addr;
socklen_t len = (socklen_t)sizeof addr;
- socklen_t len0 = len;
GetOpenFile(sock, fptr);
if (getsockname(fptr->fd, (struct sockaddr*)&addr, &len) < 0)
rb_sys_fail("getsockname(2)");
- if (len0 < len) len = len0;
return rsock_unixaddr(&addr, len);
}
@@ -454,13 +445,11 @@ unix_peeraddr(VALUE sock)
rb_io_t *fptr;
struct sockaddr_un addr;
socklen_t len = (socklen_t)sizeof addr;
- socklen_t len0 = len;
GetOpenFile(sock, fptr);
if (getpeername(fptr->fd, (struct sockaddr*)&addr, &len) < 0)
rb_sys_fail("getpeername(2)");
- if (len0 < len) len = len0;
return rsock_unixaddr(&addr, len);
}
diff --git a/ext/stringio/stringio.c b/ext/stringio/stringio.c
index 4dc279cd12..6c41c3c368 100644
--- a/ext/stringio/stringio.c
+++ b/ext/stringio/stringio.c
@@ -28,7 +28,7 @@ struct StringIO {
int count;
};
-static void strio_init(int, VALUE *, struct StringIO *, VALUE);
+static void strio_init(int, VALUE *, struct StringIO *);
#define IS_STRIO(obj) (rb_typeddata_is_kind_of((obj), &strio_data_type))
#define error_inval(msg) (errno = EINVAL, rb_sys_fail(msg))
@@ -107,32 +107,23 @@ strio_substr(struct StringIO *ptr, long pos, long len)
#define StringIO(obj) get_strio(obj)
-#define STRIO_READABLE FL_USER4
-#define STRIO_WRITABLE FL_USER5
-#define STRIO_READWRITE (STRIO_READABLE|STRIO_WRITABLE)
-typedef char strio_flags_check[(STRIO_READABLE/FMODE_READABLE == STRIO_WRITABLE/FMODE_WRITABLE) * 2 - 1];
-#define STRIO_MODE_SET_P(strio, mode) \
- ((RBASIC(strio)->flags & STRIO_##mode) && \
- ((struct StringIO*)DATA_PTR(strio))->flags & FMODE_##mode)
-#define CLOSED(strio) (!STRIO_MODE_SET_P(strio, READWRITE))
-#define READABLE(strio) STRIO_MODE_SET_P(strio, READABLE)
-#define WRITABLE(strio) STRIO_MODE_SET_P(strio, WRITABLE)
+#define CLOSED(ptr) (!((ptr)->flags & FMODE_READWRITE))
+#define READABLE(ptr) ((ptr)->flags & FMODE_READABLE)
+#define WRITABLE(ptr) ((ptr)->flags & FMODE_WRITABLE)
static struct StringIO*
-readable(VALUE strio)
+readable(struct StringIO *ptr)
{
- struct StringIO *ptr = StringIO(strio);
- if (!READABLE(strio)) {
+ if (!READABLE(ptr)) {
rb_raise(rb_eIOError, "not opened for reading");
}
return ptr;
}
static struct StringIO*
-writable(VALUE strio)
+writable(struct StringIO *ptr)
{
- struct StringIO *ptr = StringIO(strio);
- if (!WRITABLE(strio)) {
+ if (!WRITABLE(ptr)) {
rb_raise(rb_eIOError, "not opened for writing");
}
if (!OBJ_TAINTED(ptr->string)) {
@@ -169,12 +160,12 @@ strio_initialize(int argc, VALUE *argv, VALUE self)
DATA_PTR(self) = ptr = strio_alloc();
}
rb_call_super(0, 0);
- strio_init(argc, argv, ptr, self);
+ strio_init(argc, argv, ptr);
return self;
}
static void
-strio_init(int argc, VALUE *argv, struct StringIO *ptr, VALUE self)
+strio_init(int argc, VALUE *argv, struct StringIO *ptr)
{
VALUE string, mode;
int trunc = 0;
@@ -212,7 +203,6 @@ strio_init(int argc, VALUE *argv, struct StringIO *ptr, VALUE self)
ptr->string = string;
ptr->pos = 0;
ptr->lineno = 0;
- RBASIC(self)->flags |= (ptr->flags & FMODE_READWRITE) * (STRIO_READABLE / FMODE_READABLE);
}
static VALUE
@@ -297,8 +287,7 @@ strio_unimpl(int argc, VALUE *argv, VALUE self)
{
StringIO(self);
rb_notimplement();
-
- UNREACHABLE;
+ return Qnil; /* not reached */
}
/*
@@ -342,11 +331,11 @@ strio_set_string(VALUE self, VALUE string)
static VALUE
strio_close(VALUE self)
{
- StringIO(self);
- if (CLOSED(self)) {
+ struct StringIO *ptr = StringIO(self);
+ if (CLOSED(ptr)) {
rb_raise(rb_eIOError, "closed stream");
}
- RBASIC(self)->flags &= ~STRIO_READWRITE;
+ ptr->flags &= ~FMODE_READWRITE;
return Qnil;
}
@@ -360,11 +349,11 @@ strio_close(VALUE self)
static VALUE
strio_close_read(VALUE self)
{
- StringIO(self);
- if (!READABLE(self)) {
+ struct StringIO *ptr = StringIO(self);
+ if (!READABLE(ptr)) {
rb_raise(rb_eIOError, "closing non-duplex IO for reading");
}
- RBASIC(self)->flags &= ~STRIO_READABLE;
+ ptr->flags &= ~FMODE_READABLE;
return Qnil;
}
@@ -378,11 +367,11 @@ strio_close_read(VALUE self)
static VALUE
strio_close_write(VALUE self)
{
- StringIO(self);
- if (!WRITABLE(self)) {
+ struct StringIO *ptr = StringIO(self);
+ if (!WRITABLE(ptr)) {
rb_raise(rb_eIOError, "closing non-duplex IO for writing");
}
- RBASIC(self)->flags &= ~STRIO_WRITABLE;
+ ptr->flags &= ~FMODE_WRITABLE;
return Qnil;
}
@@ -395,8 +384,8 @@ strio_close_write(VALUE self)
static VALUE
strio_closed(VALUE self)
{
- StringIO(self);
- if (!CLOSED(self)) return Qfalse;
+ struct StringIO *ptr = StringIO(self);
+ if (!CLOSED(ptr)) return Qfalse;
return Qtrue;
}
@@ -409,8 +398,8 @@ strio_closed(VALUE self)
static VALUE
strio_closed_read(VALUE self)
{
- StringIO(self);
- if (READABLE(self)) return Qfalse;
+ struct StringIO *ptr = StringIO(self);
+ if (READABLE(ptr)) return Qfalse;
return Qtrue;
}
@@ -423,8 +412,8 @@ strio_closed_read(VALUE self)
static VALUE
strio_closed_write(VALUE self)
{
- StringIO(self);
- if (WRITABLE(self)) return Qfalse;
+ struct StringIO *ptr = StringIO(self);
+ if (WRITABLE(ptr)) return Qfalse;
return Qtrue;
}
@@ -439,7 +428,7 @@ strio_closed_write(VALUE self)
static VALUE
strio_eof(VALUE self)
{
- struct StringIO *ptr = readable(self);
+ struct StringIO *ptr = readable(StringIO(self));
if (ptr->pos < RSTRING_LEN(ptr->string)) return Qfalse;
return Qtrue;
}
@@ -458,8 +447,6 @@ strio_copy(VALUE copy, VALUE orig)
}
DATA_PTR(copy) = ptr;
OBJ_INFECT(copy, orig);
- RBASIC(copy)->flags &= ~STRIO_READWRITE;
- RBASIC(copy)->flags |= RBASIC(orig)->flags & STRIO_READWRITE;
++ptr->count;
return copy;
}
@@ -518,10 +505,10 @@ static VALUE
strio_reopen(int argc, VALUE *argv, VALUE self)
{
rb_io_taint_check(self);
- if (argc == 1 && !RB_TYPE_P(*argv, T_STRING)) {
+ if (argc == 1 && TYPE(*argv) != T_STRING) {
return strio_copy(self, *argv);
}
- strio_init(argc, argv, StringIO(self), self);
+ strio_init(argc, argv, StringIO(self));
return self;
}
@@ -588,7 +575,7 @@ strio_seek(int argc, VALUE *argv, VALUE self)
rb_scan_args(argc, argv, "11", NULL, &whence);
offset = NUM2LONG(argv[0]);
- if (CLOSED(self)) {
+ if (CLOSED(ptr)) {
rb_raise(rb_eIOError, "closed stream");
}
switch (NIL_P(whence) ? 0 : NUM2LONG(whence)) {
@@ -630,6 +617,9 @@ strio_get_sync(VALUE self)
/*
* call-seq:
+ * strio.bytes {|byte| block } -> strio
+ * strio.bytes -> anEnumerator
+ *
* strio.each_byte {|byte| block } -> strio
* strio.each_byte -> anEnumerator
*
@@ -638,7 +628,7 @@ strio_get_sync(VALUE self)
static VALUE
strio_each_byte(VALUE self)
{
- struct StringIO *ptr = readable(self);
+ struct StringIO *ptr = readable(StringIO(self));
RETURN_ENUMERATOR(self, 0, 0);
@@ -650,18 +640,6 @@ strio_each_byte(VALUE self)
}
/*
- * This is a deprecated alias for <code>each_byte</code>.
- */
-static VALUE
-strio_bytes(VALUE self)
-{
- rb_warn("StringIO#bytes is deprecated; use #each_byte instead");
- if (!rb_block_given_p())
- return rb_enumeratorize(self, ID2SYM(rb_intern("each_byte")), 0, 0);
- return strio_each_byte(self);
-}
-
-/*
* call-seq:
* strio.getc -> string or nil
*
@@ -670,7 +648,7 @@ strio_bytes(VALUE self)
static VALUE
strio_getc(VALUE self)
{
- struct StringIO *ptr = readable(self);
+ struct StringIO *ptr = readable(StringIO(self));
rb_encoding *enc = rb_enc_get(ptr->string);
int len;
char *p;
@@ -693,7 +671,7 @@ strio_getc(VALUE self)
static VALUE
strio_getbyte(VALUE self)
{
- struct StringIO *ptr = readable(self);
+ struct StringIO *ptr = readable(StringIO(self));
int c;
if (ptr->pos >= RSTRING_LEN(ptr->string)) {
return Qnil;
@@ -731,13 +709,12 @@ strio_extend(struct StringIO *ptr, long pos, long len)
static VALUE
strio_ungetc(VALUE self, VALUE c)
{
- struct StringIO *ptr = readable(self);
+ struct StringIO *ptr = readable(StringIO(self));
long lpos, clen;
char *p, *pend;
rb_encoding *enc, *enc2;
if (NIL_P(c)) return Qnil;
- check_modifiable(ptr);
if (FIXNUM_P(c)) {
int cc = FIX2INT(c);
char buf[16];
@@ -787,7 +764,7 @@ strio_ungetc(VALUE self, VALUE c)
static VALUE
strio_ungetbyte(VALUE self, VALUE c)
{
- struct StringIO *ptr = readable(self);
+ struct StringIO *ptr = readable(StringIO(self));
char buf[1], *cp = buf;
long pos = ptr->pos, cl = 1;
VALUE str = ptr->string;
@@ -802,7 +779,6 @@ strio_ungetbyte(VALUE self, VALUE c)
cl = RSTRING_LEN(c);
if (cl == 0) return Qnil;
}
- check_modifiable(ptr);
rb_str_modify(str);
if (cl > pos) {
char *s;
@@ -851,6 +827,9 @@ strio_readbyte(VALUE self)
/*
* call-seq:
+ * strio.chars {|char| block } -> strio
+ * strio.chars -> anEnumerator
+ *
* strio.each_char {|char| block } -> strio
* strio.each_char -> anEnumerator
*
@@ -870,19 +849,10 @@ strio_each_char(VALUE self)
}
/*
- * This is a deprecated alias for <code>each_char</code>.
- */
-static VALUE
-strio_chars(VALUE self)
-{
- rb_warn("StringIO#chars is deprecated; use #each_char instead");
- if (!rb_block_given_p())
- return rb_enumeratorize(self, ID2SYM(rb_intern("each_char")), 0, 0);
- return strio_each_char(self);
-}
-
-/*
* call-seq:
+ * strio.codepoints {|c| block } -> strio
+ * strio.codepoints -> anEnumerator
+ *
* strio.each_codepoint {|c| block } -> strio
* strio.each_codepoint -> anEnumerator
*
@@ -898,7 +868,7 @@ strio_each_codepoint(VALUE self)
RETURN_ENUMERATOR(self, 0, 0);
- ptr = readable(self);
+ ptr = readable(StringIO(self));
enc = rb_enc_get(ptr->string);
for (;;) {
if (ptr->pos >= RSTRING_LEN(ptr->string)) {
@@ -913,18 +883,6 @@ strio_each_codepoint(VALUE self)
return self;
}
-/*
- * This is a deprecated alias for <code>each_codepoint</code>.
- */
-static VALUE
-strio_codepoints(VALUE self)
-{
- rb_warn("StringIO#codepoints is deprecated; use #each_codepoint instead");
- if (!rb_block_given_p())
- return rb_enumeratorize(self, ID2SYM(rb_intern("each_codepoint")), 0, 0);
- return strio_each_codepoint(self);
-}
-
/* Boyer-Moore search: copied from regex.c */
static void
bm_init_skip(long *skip, const char *pat, long m)
@@ -972,7 +930,7 @@ strio_getline(int argc, VALUE *argv, struct StringIO *ptr)
break;
case 1:
- if (!NIL_P(str) && !RB_TYPE_P(str, T_STRING)) {
+ if (!NIL_P(str) && TYPE(str) != T_STRING) {
VALUE tmp = rb_check_string_type(str);
if (NIL_P(tmp)) {
limit = NUM2LONG(str);
@@ -987,7 +945,7 @@ strio_getline(int argc, VALUE *argv, struct StringIO *ptr)
case 2:
if (!NIL_P(str)) StringValue(str);
- if (!NIL_P(lim)) limit = NUM2LONG(lim);
+ limit = NUM2LONG(lim);
break;
}
@@ -1062,7 +1020,7 @@ strio_getline(int argc, VALUE *argv, struct StringIO *ptr)
static VALUE
strio_gets(int argc, VALUE *argv, VALUE self)
{
- VALUE str = strio_getline(argc, argv, readable(self));
+ VALUE str = strio_getline(argc, argv, readable(StringIO(self)));
rb_lastline_set(str);
return str;
@@ -1096,14 +1054,19 @@ strio_readline(int argc, VALUE *argv, VALUE self)
* strio.each_line(sep,limit) {|line| block } -> strio
* strio.each_line(...) -> anEnumerator
*
+ * strio.lines(sep=$/) {|line| block } -> strio
+ * strio.lines(limit) {|line| block } -> strio
+ * strio.lines(sep,limit) {|line| block } -> strio
+ * strio.lines(...) -> anEnumerator
+ *
* See IO#each.
*/
static VALUE
strio_each(int argc, VALUE *argv, VALUE self)
{
+ struct StringIO *ptr = StringIO(self);
VALUE line;
- StringIO(self);
RETURN_ENUMERATOR(self, argc, argv);
if (argc > 0 && !NIL_P(argv[argc-1]) && NIL_P(rb_check_string_type(argv[argc-1])) &&
@@ -1111,25 +1074,13 @@ strio_each(int argc, VALUE *argv, VALUE self)
rb_raise(rb_eArgError, "invalid limit: 0 for each_line");
}
- while (!NIL_P(line = strio_getline(argc, argv, readable(self)))) {
+ while (!NIL_P(line = strio_getline(argc, argv, readable(ptr)))) {
rb_yield(line);
}
return self;
}
/*
- * This is a deprecated alias for <code>each_line</code>.
- */
-static VALUE
-strio_lines(int argc, VALUE *argv, VALUE self)
-{
- rb_warn("StringIO#lines is deprecated; use #each_line instead");
- if (!rb_block_given_p())
- return rb_enumeratorize(self, ID2SYM(rb_intern("each_line")), argc, argv);
- return strio_each(argc, argv, self);
-}
-
-/*
* call-seq:
* strio.readlines(sep=$/) -> array
* strio.readlines(limit) -> array
@@ -1140,16 +1091,15 @@ strio_lines(int argc, VALUE *argv, VALUE self)
static VALUE
strio_readlines(int argc, VALUE *argv, VALUE self)
{
- VALUE ary, line;
+ struct StringIO *ptr = StringIO(self);
+ VALUE ary = rb_ary_new(), line;
- StringIO(self);
- ary = rb_ary_new();
if (argc > 0 && !NIL_P(argv[argc-1]) && NIL_P(rb_check_string_type(argv[argc-1])) &&
NUM2LONG(argv[argc-1]) == 0) {
rb_raise(rb_eArgError, "invalid limit: 0 for readlines");
}
- while (!NIL_P(line = strio_getline(argc, argv, readable(self)))) {
+ while (!NIL_P(line = strio_getline(argc, argv, readable(ptr)))) {
rb_ary_push(ary, line);
}
return ary;
@@ -1168,16 +1118,16 @@ strio_readlines(int argc, VALUE *argv, VALUE self)
static VALUE
strio_write(VALUE self, VALUE str)
{
- struct StringIO *ptr = writable(self);
+ struct StringIO *ptr = writable(StringIO(self));
long len, olen;
rb_encoding *enc, *enc2;
- rb_encoding *const ascii8bit = rb_ascii8bit_encoding();
- if (!RB_TYPE_P(str, T_STRING))
+ RB_GC_GUARD(str);
+ if (TYPE(str) != T_STRING)
str = rb_obj_as_string(str);
enc = rb_enc_get(ptr->string);
enc2 = rb_enc_get(str);
- if (enc != enc2 && enc != ascii8bit) {
+ if (enc != enc2 && enc != rb_ascii8bit_encoding()) {
str = rb_str_conv_enc(str, enc2, enc);
}
len = RSTRING_LEN(str);
@@ -1188,13 +1138,7 @@ strio_write(VALUE self, VALUE str)
ptr->pos = olen;
}
if (ptr->pos == olen) {
- if (enc == ascii8bit || enc2 == ascii8bit) {
- rb_enc_str_buf_cat(ptr->string, RSTRING_PTR(str), len, enc);
- OBJ_INFECT(ptr->string, str);
- }
- else {
- rb_str_buf_append(ptr->string, str);
- }
+ rb_str_cat(ptr->string, RSTRING_PTR(str), len);
}
else {
strio_extend(ptr, ptr->pos, len);
@@ -1202,7 +1146,6 @@ strio_write(VALUE self, VALUE str)
OBJ_INFECT(ptr->string, str);
}
OBJ_INFECT(ptr->string, self);
- RB_GC_GUARD(str);
ptr->pos += len;
return LONG2NUM(len);
}
@@ -1241,18 +1184,18 @@ strio_write(VALUE self, VALUE str)
static VALUE
strio_putc(VALUE self, VALUE ch)
{
- struct StringIO *ptr = writable(self);
- VALUE str;
+ struct StringIO *ptr = writable(StringIO(self));
+ int c = NUM2CHR(ch);
+ long olen;
check_modifiable(ptr);
- if (RB_TYPE_P(ch, T_STRING)) {
- str = rb_str_substr(ch, 0, 1);
- }
- else {
- char c = NUM2CHR(ch);
- str = rb_str_new(&c, 1);
+ olen = RSTRING_LEN(ptr->string);
+ if (ptr->flags & FMODE_APPEND) {
+ ptr->pos = olen;
}
- strio_write(self, str);
+ strio_extend(ptr, ptr->pos, 1);
+ RSTRING_PTR(ptr->string)[ptr->pos++] = c;
+ OBJ_INFECT(ptr->string, self);
return ch;
}
@@ -1266,14 +1209,14 @@ strio_putc(VALUE self, VALUE ch)
/*
* call-seq:
- * strio.read([length [, outbuf]]) -> string, outbuf, or nil
+ * strio.read([length [, buffer]]) -> string, buffer, or nil
*
* See IO#read.
*/
static VALUE
strio_read(int argc, VALUE *argv, VALUE self)
{
- struct StringIO *ptr = readable(self);
+ struct StringIO *ptr = readable(StringIO(self));
VALUE str = Qnil;
long len;
int binary = 0;
@@ -1394,11 +1337,11 @@ strio_size(VALUE self)
static VALUE
strio_truncate(VALUE self, VALUE len)
{
- VALUE string = writable(self)->string;
+ VALUE string = writable(StringIO(self))->string;
long l = NUM2LONG(len);
long plen = RSTRING_LEN(string);
if (l < 0) {
- error_inval("negative length");
+ error_inval("negative legnth");
}
rb_str_resize(string, l);
if (plen < l) {
@@ -1506,13 +1449,13 @@ Init_stringio()
rb_define_method(StringIO, "each", strio_each, -1);
rb_define_method(StringIO, "each_line", strio_each, -1);
- rb_define_method(StringIO, "lines", strio_lines, -1);
+ rb_define_method(StringIO, "lines", strio_each, -1);
rb_define_method(StringIO, "each_byte", strio_each_byte, 0);
- rb_define_method(StringIO, "bytes", strio_bytes, 0);
+ rb_define_method(StringIO, "bytes", strio_each_byte, 0);
rb_define_method(StringIO, "each_char", strio_each_char, 0);
- rb_define_method(StringIO, "chars", strio_chars, 0);
+ rb_define_method(StringIO, "chars", strio_each_char, 0);
rb_define_method(StringIO, "each_codepoint", strio_each_codepoint, 0);
- rb_define_method(StringIO, "codepoints", strio_codepoints, 0);
+ rb_define_method(StringIO, "codepoints", strio_each_codepoint, 0);
rb_define_method(StringIO, "getc", strio_getc, 0);
rb_define_method(StringIO, "ungetc", strio_ungetc, 1);
rb_define_method(StringIO, "ungetbyte", strio_ungetbyte, 1);
diff --git a/ext/strscan/extconf.rb b/ext/strscan/extconf.rb
index 3e5a295e31..0d21966fc2 100644
--- a/ext/strscan/extconf.rb
+++ b/ext/strscan/extconf.rb
@@ -1,3 +1,2 @@
require 'mkmf'
-$INCFLAGS << " -I$(top_srcdir)"
create_makefile 'strscan'
diff --git a/ext/strscan/strscan.c b/ext/strscan/strscan.c
index 81667d8a0c..dcad837a37 100644
--- a/ext/strscan/strscan.c
+++ b/ext/strscan/strscan.c
@@ -11,7 +11,6 @@
#include "ruby/ruby.h"
#include "ruby/re.h"
#include "ruby/encoding.h"
-#include "regint.h"
#define STRSCAN_VERSION "0.7.0"
@@ -21,7 +20,6 @@
static VALUE StringScanner;
static VALUE ScanError;
-static ID id_byteslice;
struct strscanner
{
@@ -53,7 +51,7 @@ struct strscanner
#define EOS_P(s) ((s)->curr >= RSTRING_LEN(p->str))
#define GET_SCANNER(obj,var) do {\
- (var) = check_strscan(obj);\
+ Data_Get_Struct((obj), struct strscanner, (var));\
if (NIL_P((var)->str)) rb_raise(rb_eArgError, "uninitialized StringScanner object");\
} while (0)
@@ -65,10 +63,9 @@ static VALUE infect _((VALUE str, struct strscanner *p));
static VALUE extract_range _((struct strscanner *p, long beg_i, long end_i));
static VALUE extract_beg_len _((struct strscanner *p, long beg_i, long len));
-static struct strscanner *check_strscan _((VALUE obj));
-static void strscan_mark _((void *p));
-static void strscan_free _((void *p));
-static size_t strscan_memsize _((const void *p));
+void check_strscan _((VALUE obj));
+static void strscan_mark _((struct strscanner *p));
+static void strscan_free _((struct strscanner *p));
static VALUE strscan_s_allocate _((VALUE klass));
static VALUE strscan_initialize _((int argc, VALUE *argv, VALUE self));
static VALUE strscan_init_copy _((VALUE vself, VALUE vorig));
@@ -160,36 +157,18 @@ extract_beg_len(struct strscanner *p, long beg_i, long len)
======================================================================= */
static void
-strscan_mark(void *ptr)
+strscan_mark(struct strscanner *p)
{
- struct strscanner *p = ptr;
rb_gc_mark(p->str);
}
static void
-strscan_free(void *ptr)
+strscan_free(struct strscanner *p)
{
- struct strscanner *p = ptr;
onig_region_free(&(p->regs), 0);
ruby_xfree(p);
}
-static size_t
-strscan_memsize(const void *ptr)
-{
- const struct strscanner *p = ptr;
- size_t size = 0;
- if (p) {
- size = sizeof(*p) - sizeof(p->regs) + onig_region_memsize(&p->regs);
- }
- return size;
-}
-
-static const rb_data_type_t strscanner_type = {
- "StringScanner",
- {strscan_mark, strscan_free, strscan_memsize}
-};
-
static VALUE
strscan_s_allocate(VALUE klass)
{
@@ -200,7 +179,7 @@ strscan_s_allocate(VALUE klass)
CLEAR_MATCH_STATUS(p);
onig_region_init(&(p->regs));
p->str = Qnil;
- return TypedData_Wrap_Struct(klass, &strscanner_type, p);
+ return Data_Wrap_Struct(klass, strscan_mark, strscan_free, p);
}
/*
@@ -215,7 +194,7 @@ strscan_initialize(int argc, VALUE *argv, VALUE self)
struct strscanner *p;
VALUE str, need_dup;
- p = check_strscan(self);
+ Data_Get_Struct(self, struct strscanner, p);
rb_scan_args(argc, argv, "11", &str, &need_dup);
StringValue(str);
p->str = str;
@@ -223,10 +202,14 @@ strscan_initialize(int argc, VALUE *argv, VALUE self)
return self;
}
-static struct strscanner *
+void
check_strscan(VALUE obj)
{
- return rb_check_typeddata(obj, &strscanner_type);
+ if (TYPE(obj) != T_DATA || RDATA(obj)->dmark != (RUBY_DATA_FUNC)strscan_mark) {
+ rb_raise(rb_eTypeError,
+ "wrong argument type %s (expected StringScanner)",
+ rb_obj_classname(obj));
+ }
}
/*
@@ -241,8 +224,9 @@ strscan_init_copy(VALUE vself, VALUE vorig)
{
struct strscanner *self, *orig;
- self = check_strscan(vself);
- orig = check_strscan(vorig);
+ Data_Get_Struct(vself, struct strscanner, self);
+ check_strscan(vorig);
+ Data_Get_Struct(vorig, struct strscanner, orig);
if (self != orig) {
self->flags = orig->flags;
self->str = orig->str;
@@ -333,8 +317,9 @@ strscan_get_string(VALUE self)
static VALUE
strscan_set_string(VALUE self, VALUE str)
{
- struct strscanner *p = check_strscan(self);
+ struct strscanner *p;
+ Data_Get_Struct(self, struct strscanner, p);
StringValue(str);
p->str = str;
p->curr = 0;
@@ -372,7 +357,7 @@ strscan_concat(VALUE self, VALUE str)
* value is zero. In the 'terminated' position (i.e. the string is exhausted),
* this value is the bytesize of the string.
*
- * In short, it's a 0-based index into bytes of the string.
+ * In short, it's a 0-based index into the string.
*
* s = StringScanner.new('test string')
* s.pos # -> 0
@@ -391,32 +376,6 @@ strscan_get_pos(VALUE self)
}
/*
- * Returns the character position of the scan pointer. In the 'reset' position, this
- * value is zero. In the 'terminated' position (i.e. the string is exhausted),
- * this value is the size of the string.
- *
- * In short, it's a 0-based index into the string.
- *
- * s = StringScanner.new("abcädeföghi")
- * s.charpos # -> 0
- * s.scan_until(/ä/) # -> "abcä"
- * s.pos # -> 5
- * s.charpos # -> 4
- */
-static VALUE
-strscan_get_charpos(VALUE self)
-{
- struct strscanner *p;
- VALUE substr;
-
- GET_SCANNER(self, p);
-
- substr = rb_funcall(p->str, id_byteslice, 2, INT2FIX(0), INT2NUM(p->curr));
-
- return rb_str_length(substr);
-}
-
-/*
* call-seq: pos=(n)
*
* Set the byte position of the scan pointer.
@@ -1104,69 +1063,76 @@ static VALUE
strscan_inspect(VALUE self)
{
struct strscanner *p;
+ char buf[BUFSIZE];
+ long len;
VALUE a, b;
- p = check_strscan(self);
+ Data_Get_Struct(self, struct strscanner, p);
if (NIL_P(p->str)) {
- a = rb_sprintf("#<%"PRIsVALUE" (uninitialized)>", rb_obj_class(self));
- return infect(a, p);
+ len = snprintf(buf, BUFSIZE, "#<%s (uninitialized)>",
+ rb_class2name(CLASS_OF(self)));
+ return infect(rb_str_new(buf, len), p);
}
if (EOS_P(p)) {
- a = rb_sprintf("#<%"PRIsVALUE" fin>", rb_obj_class(self));
- return infect(a, p);
+ len = snprintf(buf, BUFSIZE, "#<%s fin>",
+ rb_class2name(CLASS_OF(self)));
+ return infect(rb_str_new(buf, len), p);
}
if (p->curr == 0) {
- b = inspect2(p);
- a = rb_sprintf("#<%"PRIsVALUE" %ld/%ld @ %"PRIsVALUE">",
- rb_obj_class(self),
- p->curr, S_LEN(p),
- b);
- return infect(a, p);
+ b = inspect2(p);
+ len = snprintf(buf, BUFSIZE, "#<%s %ld/%ld @ %s>",
+ rb_class2name(CLASS_OF(self)),
+ p->curr, S_LEN(p),
+ RSTRING_PTR(b));
+ return infect(rb_str_new(buf, len), p);
}
a = inspect1(p);
b = inspect2(p);
- a = rb_sprintf("#<%"PRIsVALUE" %ld/%ld %"PRIsVALUE" @ %"PRIsVALUE">",
- rb_obj_class(self),
- p->curr, S_LEN(p),
- a, b);
- return infect(a, p);
+ len = snprintf(buf, BUFSIZE, "#<%s %ld/%ld %s @ %s>",
+ rb_class2name(CLASS_OF(self)),
+ p->curr, S_LEN(p),
+ RSTRING_PTR(a),
+ RSTRING_PTR(b));
+ return infect(rb_str_new(buf, len), p);
}
static VALUE
inspect1(struct strscanner *p)
{
- VALUE str;
+ char buf[BUFSIZE];
+ char *bp = buf;
long len;
if (p->curr == 0) return rb_str_new2("");
if (p->curr > INSPECT_LENGTH) {
- str = rb_str_new_cstr("...");
- len = INSPECT_LENGTH;
+ strcpy(bp, "..."); bp += 3;
+ len = INSPECT_LENGTH;
}
else {
- str = rb_str_new(0, 0);
- len = p->curr;
+ len = p->curr;
}
- rb_str_cat(str, CURPTR(p) - len, len);
- return rb_str_dump(str);
+ memcpy(bp, CURPTR(p) - len, len); bp += len;
+ return rb_str_dump(rb_str_new(buf, bp - buf));
}
static VALUE
inspect2(struct strscanner *p)
{
- VALUE str;
+ char buf[BUFSIZE];
+ char *bp = buf;
long len;
if (EOS_P(p)) return rb_str_new2("");
len = S_LEN(p) - p->curr;
if (len > INSPECT_LENGTH) {
- str = rb_str_new(CURPTR(p), INSPECT_LENGTH);
- rb_str_cat2(str, "...");
+ len = INSPECT_LENGTH;
+ memcpy(bp, CURPTR(p), len); bp += len;
+ strcpy(bp, "..."); bp += 3;
}
else {
- str = rb_str_new(CURPTR(p), len);
+ memcpy(bp, CURPTR(p), len); bp += len;
}
- return rb_str_dump(str);
+ return rb_str_dump(rb_str_new(buf, bp - buf));
}
/* =======================================================================
@@ -1282,8 +1248,6 @@ Init_strscan()
ID id_scanerr = rb_intern("ScanError");
VALUE tmp;
- id_byteslice = rb_intern("byteslice");
-
StringScanner = rb_define_class("StringScanner", rb_cObject);
ScanError = rb_define_class_under(StringScanner, "Error", rb_eStandardError);
if (!rb_const_defined(rb_cObject, id_scanerr)) {
@@ -1309,7 +1273,6 @@ Init_strscan()
rb_define_method(StringScanner, "<<", strscan_concat, 1);
rb_define_method(StringScanner, "pos", strscan_get_pos, 0);
rb_define_method(StringScanner, "pos=", strscan_set_pos, 1);
- rb_define_method(StringScanner, "charpos", strscan_get_charpos, 0);
rb_define_method(StringScanner, "pointer", strscan_get_pos, 0);
rb_define_method(StringScanner, "pointer=", strscan_set_pos, 1);
diff --git a/ext/syck/bytecode.c b/ext/syck/bytecode.c
new file mode 100644
index 0000000000..3310713e5c
--- /dev/null
+++ b/ext/syck/bytecode.c
@@ -0,0 +1,1165 @@
+/* Generated by re2c 0.9.10 on Mon Sep 19 23:21:26 2005 */
+#line 1 "bytecode.re"
+/*
+ * bytecode.re
+ *
+ * $Author$
+ *
+ * Copyright (C) 2003 why the lucky stiff
+ */
+#include "ruby/ruby.h"
+#include "syck.h"
+#include "gram.h"
+
+#define QUOTELEN 128
+
+/*
+ * They do my bidding...
+ */
+#define YYCTYPE char
+#define YYCURSOR parser->cursor
+#define YYMARKER parser->marker
+#define YYLIMIT parser->limit
+#define YYTOKEN parser->token
+#define YYTOKTMP parser->toktmp
+#define YYLINEPTR parser->lineptr
+#define YYLINECTPTR parser->linectptr
+#define YYLINE parser->linect
+#define YYFILL(n) syck_parser_read(parser)
+
+extern SyckParser *syck_parser_ptr;
+
+char *get_inline( SyckParser *parser );
+
+/*
+ * Repositions the cursor at `n' offset from the token start.
+ * Only works in `Header' and `Document' sections.
+ */
+#define YYPOS(n) YYCURSOR = YYTOKEN + n
+
+/*
+ * Track line numbers
+ */
+#define CHK_NL(ptr) if ( *( ptr - 1 ) == '\n' && ptr > YYLINECTPTR ) { YYLINEPTR = ptr; YYLINE++; YYLINECTPTR = YYLINEPTR; }
+
+/*
+ * I like seeing the level operations as macros...
+ */
+#define ADD_LEVEL(len, status) syck_parser_add_level( parser, len, status )
+#define POP_LEVEL() syck_parser_pop_level( parser )
+#define CURRENT_LEVEL() syck_parser_current_level( parser )
+
+/*
+ * Force a token next time around sycklex()
+ */
+#define FORCE_NEXT_TOKEN(tok) parser->force_token = tok;
+
+/*
+ * Adding levels in bytecode requires us to make sure
+ * we've got all our tokens worked out.
+ */
+#define ADD_BYTE_LEVEL(lvl, len, s ) \
+ switch ( lvl->status ) \
+ { \
+ case syck_lvl_seq: \
+ lvl->ncount++; \
+ ADD_LEVEL(len, syck_lvl_open); \
+ YYPOS(0); \
+ return '-'; \
+ \
+ case syck_lvl_map: \
+ lvl->ncount++; \
+ ADD_LEVEL(len, s); \
+ break; \
+ \
+ case syck_lvl_open: \
+ lvl->status = s; \
+ break; \
+ \
+ default: \
+ ADD_LEVEL(len, s); \
+ break; \
+ }
+
+/*
+ * Nice little macro to ensure we're YAML_IOPENed to the current level.
+ * * Only use this macro in the "Document" section *
+ */
+#define ENSURE_YAML_IOPEN(last_lvl, lvl_type, to_len, reset) \
+ if ( last_lvl->spaces < to_len ) \
+ { \
+ if ( last_lvl->status == syck_lvl_iseq || last_lvl->status == syck_lvl_imap ) \
+ { \
+ goto Document; \
+ } \
+ else \
+ { \
+ ADD_LEVEL( to_len, lvl_type ); \
+ if ( reset == 1 ) YYPOS(0); \
+ return YAML_IOPEN; \
+ } \
+ }
+
+/*
+ * Nice little macro to ensure closure of levels.
+ * * Only use this macro in the "Document" section *
+ */
+#define ENSURE_YAML_IEND(last_lvl, to_len) \
+ if ( last_lvl->spaces > to_len ) \
+ { \
+ syck_parser_pop_level( parser ); \
+ YYPOS(0); \
+ return YAML_IEND; \
+ }
+
+/*
+ * Concatenates string items and manages allocation
+ * to the string
+ */
+#define CAT(s, c, i, l) \
+ { \
+ if ( i + 1 >= c ) \
+ { \
+ c += QUOTELEN; \
+ S_REALLOC_N( s, char, c ); \
+ } \
+ s[i++] = l; \
+ s[i] = '\0'; \
+ }
+
+/*
+ * Parser for standard YAML Bytecode [UTF-8]
+ */
+int
+sycklex_bytecode_utf8( YYSTYPE *sycklval, SyckParser *parser )
+{
+ SyckLevel *lvl;
+ syck_parser_ptr = parser;
+ if ( YYCURSOR == NULL )
+ {
+ syck_parser_read( parser );
+ }
+
+ if ( parser->force_token != 0 )
+ {
+ int t = parser->force_token;
+ parser->force_token = 0;
+ return t;
+ }
+
+#line 172 "bytecode.re"
+
+
+ lvl = CURRENT_LEVEL();
+ if ( lvl->status == syck_lvl_doc )
+ {
+ goto Document;
+ }
+
+/* Header: */
+
+ YYTOKEN = YYCURSOR;
+
+
+#line 165 "<stdout>"
+{
+ YYCTYPE yych;
+ unsigned int yyaccept = 0;
+ goto yy0;
+ ++YYCURSOR;
+yy0:
+ if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy2;
+ case 'D': goto yy3;
+ default: goto yy5;
+ }
+yy2: YYCURSOR = YYMARKER;
+ switch(yyaccept){
+ case 0: goto yy4;
+ }
+yy3: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 0x0A: goto yy6;
+ case 0x0D: goto yy8;
+ default: goto yy4;
+ }
+yy4:
+#line 199 "bytecode.re"
+{ YYPOS(0);
+ goto Document;
+ }
+#line 195 "<stdout>"
+yy5: yych = *++YYCURSOR;
+ goto yy4;
+yy6: ++YYCURSOR;
+ goto yy7;
+yy7:
+#line 186 "bytecode.re"
+{ if ( lvl->status == syck_lvl_header )
+ {
+ CHK_NL(YYCURSOR);
+ goto Directive;
+ }
+ else
+ {
+ ENSURE_YAML_IEND(lvl, -1);
+ YYPOS(0);
+ return 0;
+ }
+ }
+#line 214 "<stdout>"
+yy8: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case 0x0A: goto yy6;
+ default: goto yy2;
+ }
+}
+#line 203 "bytecode.re"
+
+
+Document:
+ {
+ lvl = CURRENT_LEVEL();
+ if ( lvl->status == syck_lvl_header )
+ {
+ lvl->status = syck_lvl_doc;
+ }
+
+ YYTOKEN = YYCURSOR;
+
+
+#line 235 "<stdout>"
+{
+ YYCTYPE yych;
+ goto yy9;
+ ++YYCURSOR;
+yy9:
+ if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy30;
+ case 0x0A: goto yy27;
+ case 0x0D: goto yy29;
+ case 'A': goto yy19;
+ case 'D': goto yy12;
+ case 'E': goto yy16;
+ case 'M': goto yy14;
+ case 'P': goto yy13;
+ case 'Q': goto yy15;
+ case 'R': goto yy21;
+ case 'S': goto yy17;
+ case 'T': goto yy23;
+ case 'c': goto yy25;
+ default: goto yy11;
+ }
+yy11:yy12: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy41;
+ case 0x0D: goto yy44;
+ default: goto yy11;
+ }
+yy13: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy41;
+ case 0x0D: goto yy43;
+ default: goto yy11;
+ }
+yy14: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy38;
+ case 0x0D: goto yy40;
+ default: goto yy11;
+ }
+yy15: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy35;
+ case 0x0D: goto yy37;
+ default: goto yy11;
+ }
+yy16: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy32;
+ case 0x0D: goto yy34;
+ default: goto yy11;
+ }
+yy17: ++YYCURSOR;
+ goto yy18;
+yy18:
+#line 288 "bytecode.re"
+{ ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_str);
+ goto Scalar;
+ }
+#line 296 "<stdout>"
+yy19: ++YYCURSOR;
+ goto yy20;
+yy20:
+#line 292 "bytecode.re"
+{ ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_open);
+ sycklval->name = get_inline( parser );
+ syck_hdlr_remove_anchor( parser, sycklval->name );
+ CHK_NL(YYCURSOR);
+ return YAML_ANCHOR;
+ }
+#line 307 "<stdout>"
+yy21: ++YYCURSOR;
+ goto yy22;
+yy22:
+#line 299 "bytecode.re"
+{ ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_str);
+ sycklval->name = get_inline( parser );
+ POP_LEVEL();
+ if ( *( YYCURSOR - 1 ) == '\n' ) YYCURSOR--;
+ return YAML_ALIAS;
+ }
+#line 318 "<stdout>"
+yy23: ++YYCURSOR;
+ goto yy24;
+yy24:
+#line 306 "bytecode.re"
+{ char *qstr;
+ ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_open);
+ qstr = get_inline( parser );
+ CHK_NL(YYCURSOR);
+ if ( qstr[0] == '!' )
+ {
+ size_t qidx = strlen( qstr );
+ if ( qstr[1] == '\0' )
+ {
+ free( qstr );
+ return YAML_ITRANSFER;
+ }
+
+ lvl = CURRENT_LEVEL();
+
+ /*
+ * URL Prefixing
+ */
+ if ( qstr[1] == '^' )
+ {
+ sycklval->name = S_ALLOC_N( char, qidx + strlen( lvl->domain ) );
+ sycklval->name[0] = '\0';
+ strcat( sycklval->name, lvl->domain );
+ strncat( sycklval->name, qstr + 2, qidx - 2 );
+ free( qstr );
+ }
+ else
+ {
+ char *carat = qstr + 1;
+ char *qend = qstr + qidx;
+ while ( (++carat) < qend )
+ {
+ if ( *carat == '^' )
+ break;
+ }
+
+ if ( carat < qend )
+ {
+ free( lvl->domain );
+ lvl->domain = syck_strndup( qstr + 1, carat - ( qstr + 1 ) );
+ sycklval->name = S_ALLOC_N( char, ( qend - carat ) + strlen( lvl->domain ) );
+ sycklval->name[0] = '\0';
+ strcat( sycklval->name, lvl->domain );
+ strncat( sycklval->name, carat + 1, ( qend - carat ) - 1 );
+ free( qstr );
+ }
+ else
+ {
+ sycklval->name = S_ALLOC_N( char, strlen( qstr ) );
+ sycklval->name[0] = '\0';
+ S_MEMCPY( sycklval->name, qstr + 1, char, strlen( qstr ) );
+ free( qstr );
+ }
+ }
+ return YAML_TRANSFER;
+ }
+ sycklval->name = qstr;
+ return YAML_TAGURI;
+ }
+#line 382 "<stdout>"
+yy25: ++YYCURSOR;
+ goto yy26;
+yy26:
+#line 366 "bytecode.re"
+{ goto Comment; }
+#line 388 "<stdout>"
+yy27: ++YYCURSOR;
+ goto yy28;
+yy28:
+#line 368 "bytecode.re"
+{ CHK_NL(YYCURSOR);
+ if ( lvl->status == syck_lvl_seq )
+ {
+ return YAML_INDENT;
+ }
+ else if ( lvl->status == syck_lvl_map )
+ {
+ if ( lvl->ncount % 2 == 1 ) return ':';
+ else return YAML_INDENT;
+ }
+ goto Document;
+ }
+#line 405 "<stdout>"
+yy29: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy27;
+ default: goto yy11;
+ }
+yy30: ++YYCURSOR;
+ goto yy31;
+yy31:
+#line 381 "bytecode.re"
+{ ENSURE_YAML_IEND(lvl, -1);
+ YYPOS(0);
+ return 0;
+ }
+#line 419 "<stdout>"
+yy32: ++YYCURSOR;
+ goto yy33;
+yy33:
+#line 252 "bytecode.re"
+{ if ( lvl->status == syck_lvl_seq && lvl->ncount == 0 )
+ {
+ lvl->ncount++;
+ YYPOS(0);
+ FORCE_NEXT_TOKEN( ']' );
+ return '[';
+ }
+ else if ( lvl->status == syck_lvl_map && lvl->ncount == 0 )
+ {
+ lvl->ncount++;
+ YYPOS(0);
+ FORCE_NEXT_TOKEN( '}' );
+ return '{';
+ }
+
+ POP_LEVEL();
+ lvl = CURRENT_LEVEL();
+ if ( lvl->status == syck_lvl_seq )
+ {
+ FORCE_NEXT_TOKEN(YAML_INDENT);
+ }
+ else if ( lvl->status == syck_lvl_map )
+ {
+ if ( lvl->ncount % 2 == 1 )
+ {
+ FORCE_NEXT_TOKEN(':');
+ }
+ else
+ {
+ FORCE_NEXT_TOKEN(YAML_INDENT);
+ }
+ }
+ CHK_NL(YYCURSOR);
+ return YAML_IEND;
+ }
+#line 459 "<stdout>"
+yy34: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy32;
+ default: goto yy11;
+ }
+yy35: ++YYCURSOR;
+ goto yy36;
+yy36:
+#line 237 "bytecode.re"
+{ int complex = 0;
+ if ( lvl->ncount % 2 == 0 && ( lvl->status == syck_lvl_map || lvl->status == syck_lvl_seq ) )
+ {
+ complex = 1;
+ }
+ ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_seq);
+ CHK_NL(YYCURSOR);
+ if ( complex )
+ {
+ FORCE_NEXT_TOKEN( YAML_IOPEN );
+ return '?';
+ }
+ return YAML_IOPEN;
+ }
+#line 483 "<stdout>"
+yy37: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy35;
+ default: goto yy11;
+ }
+yy38: ++YYCURSOR;
+ goto yy39;
+yy39:
+#line 222 "bytecode.re"
+{ int complex = 0;
+ if ( lvl->ncount % 2 == 0 && ( lvl->status == syck_lvl_map || lvl->status == syck_lvl_seq ) )
+ {
+ complex = 1;
+ }
+ ADD_BYTE_LEVEL(lvl, lvl->spaces + 1, syck_lvl_map);
+ CHK_NL(YYCURSOR);
+ if ( complex )
+ {
+ FORCE_NEXT_TOKEN( YAML_IOPEN );
+ return '?';
+ }
+ return YAML_IOPEN;
+ }
+#line 507 "<stdout>"
+yy40: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy38;
+ default: goto yy11;
+ }
+yy41: ++YYCURSOR;
+ goto yy42;
+yy42:
+#line 217 "bytecode.re"
+{ ENSURE_YAML_IEND(lvl, -1);
+ YYPOS(0);
+ return 0;
+ }
+#line 521 "<stdout>"
+yy43: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy41;
+ default: goto yy11;
+ }
+yy44: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case 0x0A: goto yy41;
+ default: goto yy11;
+ }
+}
+#line 386 "bytecode.re"
+
+
+ }
+
+Directive:
+ {
+ YYTOKEN = YYCURSOR;
+
+
+#line 543 "<stdout>"
+{
+ YYCTYPE yych;
+ unsigned int yyaccept = 0;
+ goto yy45;
+ ++YYCURSOR;
+yy45:
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy47;
+ case 'V': goto yy48;
+ default: goto yy50;
+ }
+yy47: YYCURSOR = YYMARKER;
+ switch(yyaccept){
+ case 0: goto yy49;
+ }
+yy48: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case '.':
+ case '/':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case ':':
+ case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy51;
+ default: goto yy49;
+ }
+yy49:
+#line 399 "bytecode.re"
+{ YYCURSOR = YYTOKEN;
+ return YAML_DOCSEP;
+ }
+#line 646 "<stdout>"
+yy50: yych = *++YYCURSOR;
+ goto yy49;
+yy51: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ goto yy52;
+yy52: switch(yych){
+ case '.':
+ case '/':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy51;
+ case ':': goto yy53;
+ default: goto yy47;
+ }
+yy53: yych = *++YYCURSOR;
+ switch(yych){
+ case '.':
+ case '/':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case ':':
+ case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy54;
+ default: goto yy47;
+ }
+yy54: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ goto yy55;
+yy55: switch(yych){
+ case 0x0A: goto yy56;
+ case 0x0D: goto yy58;
+ case '.':
+ case '/':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case ':':
+ case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy54;
+ default: goto yy47;
+ }
+yy56: ++YYCURSOR;
+ goto yy57;
+yy57:
+#line 396 "bytecode.re"
+{ CHK_NL(YYCURSOR);
+ goto Directive; }
+#line 899 "<stdout>"
+yy58: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case 0x0A: goto yy56;
+ default: goto yy47;
+ }
+}
+#line 402 "bytecode.re"
+
+
+ }
+
+Comment:
+ {
+ YYTOKEN = YYCURSOR;
+
+
+#line 916 "<stdout>"
+{
+ YYCTYPE yych;
+ goto yy59;
+ ++YYCURSOR;
+yy59:
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy61;
+ case 0x0A: goto yy62;
+ case 0x0D: goto yy64;
+ default: goto yy66;
+ }
+yy61:yy62: ++YYCURSOR;
+ goto yy63;
+yy63:
+#line 412 "bytecode.re"
+{ CHK_NL(YYCURSOR);
+ goto Document; }
+#line 936 "<stdout>"
+yy64: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case 0x0A: goto yy67;
+ default: goto yy65;
+ }
+yy65:
+#line 415 "bytecode.re"
+{ goto Comment; }
+#line 945 "<stdout>"
+yy66: yych = *++YYCURSOR;
+ goto yy65;
+yy67: ++YYCURSOR;
+ yych = *YYCURSOR;
+ goto yy63;
+}
+#line 417 "bytecode.re"
+
+
+ }
+
+Scalar:
+ {
+ int idx = 0;
+ int cap = 100;
+ char *str = S_ALLOC_N( char, cap );
+ char *tok;
+
+ str[0] = '\0';
+
+Scalar2:
+ tok = YYCURSOR;
+
+
+#line 970 "<stdout>"
+{
+ YYCTYPE yych;
+ goto yy68;
+ ++YYCURSOR;
+yy68:
+ if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy74;
+ case 0x0A: goto yy70;
+ case 0x0D: goto yy72;
+ default: goto yy76;
+ }
+yy70: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case 'C': goto yy78;
+ case 'N': goto yy80;
+ case 'Z': goto yy83;
+ default: goto yy71;
+ }
+yy71:
+#line 461 "bytecode.re"
+{ YYCURSOR = tok;
+ goto ScalarEnd;
+ }
+#line 996 "<stdout>"
+yy72: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case 0x0A: goto yy77;
+ default: goto yy73;
+ }
+yy73:
+#line 469 "bytecode.re"
+{ CAT(str, cap, idx, tok[0]);
+ goto Scalar2;
+ }
+#line 1007 "<stdout>"
+yy74: ++YYCURSOR;
+ goto yy75;
+yy75:
+#line 465 "bytecode.re"
+{ YYCURSOR = tok;
+ goto ScalarEnd;
+ }
+#line 1015 "<stdout>"
+yy76: yych = *++YYCURSOR;
+ goto yy73;
+yy77: yych = *++YYCURSOR;
+ switch(yych){
+ case 'C': goto yy78;
+ case 'N': goto yy80;
+ case 'Z': goto yy83;
+ default: goto yy71;
+ }
+yy78: ++YYCURSOR;
+ goto yy79;
+yy79:
+#line 435 "bytecode.re"
+{ CHK_NL(tok+1);
+ goto Scalar2; }
+#line 1031 "<stdout>"
+yy80: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy81;
+yy81: switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy80;
+ default: goto yy82;
+ }
+yy82:
+#line 438 "bytecode.re"
+{ CHK_NL(tok+1);
+ if ( tok + 2 < YYCURSOR )
+ {
+ char *count = tok + 2;
+ int total = strtod( count, NULL );
+ int i;
+ for ( i = 0; i < total; i++ )
+ {
+ CAT(str, cap, idx, '\n');
+ }
+ }
+ else
+ {
+ CAT(str, cap, idx, '\n');
+ }
+ goto Scalar2;
+ }
+#line 1068 "<stdout>"
+yy83: ++YYCURSOR;
+ goto yy84;
+yy84:
+#line 456 "bytecode.re"
+{ CHK_NL(tok+1);
+ CAT(str, cap, idx, '\0');
+ goto Scalar2;
+ }
+#line 1077 "<stdout>"
+}
+#line 473 "bytecode.re"
+
+
+ScalarEnd:
+ {
+ SyckNode *n = syck_alloc_str();
+ n->data.str->ptr = str;
+ n->data.str->len = idx;
+ sycklval->nodeData = n;
+ POP_LEVEL();
+ if ( parser->implicit_typing == 1 )
+ {
+ try_tag_implicit( sycklval->nodeData, parser->taguri_expansion );
+ }
+ return YAML_PLAIN;
+ }
+ }
+
+}
+
+char *
+get_inline( SyckParser *parser )
+{
+ int idx = 0;
+ int cap = 100;
+ char *str = S_ALLOC_N( char, cap );
+ char *tok;
+
+ str[0] = '\0';
+
+Inline:
+ {
+ tok = YYCURSOR;
+
+
+#line 1114 "<stdout>"
+{
+ YYCTYPE yych;
+ goto yy85;
+ ++YYCURSOR;
+yy85:
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy91;
+ case 0x0A: goto yy87;
+ case 0x0D: goto yy89;
+ default: goto yy93;
+ }
+yy87: ++YYCURSOR;
+ goto yy88;
+yy88:
+#line 508 "bytecode.re"
+{ CHK_NL(YYCURSOR);
+ return str; }
+#line 1134 "<stdout>"
+yy89: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case 0x0A: goto yy94;
+ default: goto yy90;
+ }
+yy90:
+#line 515 "bytecode.re"
+{ CAT(str, cap, idx, tok[0]);
+ goto Inline;
+ }
+#line 1145 "<stdout>"
+yy91: ++YYCURSOR;
+ goto yy92;
+yy92:
+#line 511 "bytecode.re"
+{ YYCURSOR = tok;
+ return str;
+ }
+#line 1153 "<stdout>"
+yy93: yych = *++YYCURSOR;
+ goto yy90;
+yy94: ++YYCURSOR;
+ yych = *YYCURSOR;
+ goto yy88;
+}
+#line 519 "bytecode.re"
+
+
+ }
+
+}
+
diff --git a/ext/syck/depend b/ext/syck/depend
new file mode 100644
index 0000000000..3eec4de72a
--- /dev/null
+++ b/ext/syck/depend
@@ -0,0 +1,12 @@
+ruby_headers = $(hdrdir)/ruby.h $(topdir)/config.h $(hdrdir)/defines.h \
+ $(hdrdir)/missing.h $(hdrdir)/intern.h $(hdrdir)/st.h
+bytecode.o: bytecode.c syck.h gram.h $(ruby_headers)
+emitter.o: emitter.c syck.h $(ruby_headers)
+gram.o: gram.c syck.h $(hdrdir)/st.h
+handler.o: handler.c syck.h $(ruby_headers)
+implicit.o: implicit.c syck.h $(ruby_headers)
+node.o: node.c syck.h $(ruby_headers)
+rubyext.o: rubyext.c syck.h $(ruby_headers)
+syck.o: syck.c syck.h $(ruby_headers)
+token.o: token.c syck.h gram.h $(ruby_headers)
+yaml2byte.o: yaml2byte.c syck.h yamlbyte.h $(ruby_headers)
diff --git a/ext/syck/emitter.c b/ext/syck/emitter.c
new file mode 100644
index 0000000000..af0d7891f8
--- /dev/null
+++ b/ext/syck/emitter.c
@@ -0,0 +1,1247 @@
+/*
+ * emitter.c
+ *
+ * $Author$
+ *
+ * Copyright (C) 2003 why the lucky stiff
+ *
+ * All Base64 code from Ruby's pack.c.
+ * Ruby is Copyright (C) 1993-2007 Yukihiro Matsumoto
+ */
+#include "ruby/ruby.h"
+
+#include <stdio.h>
+#include <string.h>
+
+#include "syck.h"
+
+#define DEFAULT_ANCHOR_FORMAT "id%03d"
+
+const char hex_table[] =
+"0123456789ABCDEF";
+static char b64_table[] =
+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+
+/*
+ * Built-in base64 (from Ruby's pack.c)
+ */
+char *
+syck_base64enc( char *s, long len )
+{
+ long i = 0;
+ int padding = '=';
+ char *buff = S_ALLOC_N(char, len * 4 / 3 + 6);
+
+ while (len >= 3) {
+ buff[i++] = b64_table[077 & (*s >> 2)];
+ buff[i++] = b64_table[077 & (((*s << 4) & 060) | ((s[1] >> 4) & 017))];
+ buff[i++] = b64_table[077 & (((s[1] << 2) & 074) | ((s[2] >> 6) & 03))];
+ buff[i++] = b64_table[077 & s[2]];
+ s += 3;
+ len -= 3;
+ }
+ if (len == 2) {
+ buff[i++] = b64_table[077 & (*s >> 2)];
+ buff[i++] = b64_table[077 & (((*s << 4) & 060) | ((s[1] >> 4) & 017))];
+ buff[i++] = b64_table[077 & (((s[1] << 2) & 074) | (('\0' >> 6) & 03))];
+ buff[i++] = padding;
+ }
+ else if (len == 1) {
+ buff[i++] = b64_table[077 & (*s >> 2)];
+ buff[i++] = b64_table[077 & (((*s << 4) & 060) | (('\0' >> 4) & 017))];
+ buff[i++] = padding;
+ buff[i++] = padding;
+ }
+ buff[i++] = '\n';
+ return buff;
+}
+
+char *
+syck_base64dec( char *s, long len )
+{
+ int a = -1,b = -1,c = 0,d;
+ static int first = 1;
+ static int b64_xtable[256];
+ char *ptr = syck_strndup( s, len );
+ char *end = ptr;
+ char *send = s + len;
+
+ if (first) {
+ int i;
+ first = 0;
+
+ for (i = 0; i < 256; i++) {
+ b64_xtable[i] = -1;
+ }
+ for (i = 0; i < 64; i++) {
+ b64_xtable[(int)b64_table[i]] = i;
+ }
+ }
+ while (s < send) {
+ while (s[0] == '\r' || s[0] == '\n') { s++; }
+ if ((a = b64_xtable[(int)s[0]]) == -1) break;
+ if ((b = b64_xtable[(int)s[1]]) == -1) break;
+ if ((c = b64_xtable[(int)s[2]]) == -1) break;
+ if ((d = b64_xtable[(int)s[3]]) == -1) break;
+ *end++ = a << 2 | b >> 4;
+ *end++ = b << 4 | c >> 2;
+ *end++ = c << 6 | d;
+ s += 4;
+ }
+ if (a != -1 && b != -1) {
+ if (s + 2 < send && s[2] == '=')
+ *end++ = a << 2 | b >> 4;
+ if (c != -1 && s + 3 < send && s[3] == '=') {
+ *end++ = a << 2 | b >> 4;
+ *end++ = b << 4 | c >> 2;
+ }
+ }
+ *end = '\0';
+ /*RSTRING_LEN(buf) = ptr - RSTRING_PTR(buf);*/
+ return ptr;
+}
+
+/*
+ * Allocate an emitter
+ */
+SyckEmitter *
+syck_new_emitter(void)
+{
+ SyckEmitter *e;
+ e = S_ALLOC( SyckEmitter );
+ e->headless = 0;
+ e->use_header = 0;
+ e->use_version = 0;
+ e->sort_keys = 0;
+ e->anchor_format = NULL;
+ e->explicit_typing = 0;
+ e->best_width = 80;
+ e->style = scalar_none;
+ e->stage = doc_open;
+ e->indent = 2;
+ e->level = -1;
+ e->anchors = NULL;
+ e->markers = NULL;
+ e->anchored = NULL;
+ e->bufsize = SYCK_BUFFERSIZE;
+ e->buffer = NULL;
+ e->marker = NULL;
+ e->bufpos = 0;
+ e->emitter_handler = NULL;
+ e->output_handler = NULL;
+ e->lvl_idx = 0;
+ e->lvl_capa = ALLOC_CT;
+ e->levels = S_ALLOC_N( SyckLevel, e->lvl_capa );
+ syck_emitter_reset_levels( e );
+ e->bonus = NULL;
+ return e;
+}
+
+int
+syck_st_free_anchors( char *key, char *name, char *arg )
+{
+ S_FREE( name );
+ return ST_CONTINUE;
+}
+
+void
+syck_emitter_st_free( SyckEmitter *e )
+{
+ /*
+ * Free the anchor tables
+ */
+ if ( e->anchors != NULL )
+ {
+ st_foreach( e->anchors, syck_st_free_anchors, 0 );
+ st_free_table( e->anchors );
+ e->anchors = NULL;
+ }
+
+ if ( e->anchored != NULL )
+ {
+ st_free_table( e->anchored );
+ e->anchored = NULL;
+ }
+
+ /*
+ * Free the markers tables
+ */
+ if ( e->markers != NULL )
+ {
+ st_free_table( e->markers );
+ e->markers = NULL;
+ }
+}
+
+SyckLevel *
+syck_emitter_current_level( SyckEmitter *e )
+{
+ return &e->levels[e->lvl_idx-1];
+}
+
+SyckLevel *
+syck_emitter_parent_level( SyckEmitter *e )
+{
+ return &e->levels[e->lvl_idx-2];
+}
+
+void
+syck_emitter_pop_level( SyckEmitter *e )
+{
+ ASSERT( e != NULL );
+
+ /* The root level should never be popped */
+ if ( e->lvl_idx <= 1 ) return;
+
+ e->lvl_idx -= 1;
+ free( e->levels[e->lvl_idx].domain );
+}
+
+void
+syck_emitter_add_level( SyckEmitter *e, int len, enum syck_level_status status )
+{
+ ASSERT( e != NULL );
+ if ( e->lvl_idx + 1 > e->lvl_capa )
+ {
+ e->lvl_capa += ALLOC_CT;
+ S_REALLOC_N( e->levels, SyckLevel, e->lvl_capa );
+ }
+
+ ASSERT( len > e->levels[e->lvl_idx-1].spaces );
+ e->levels[e->lvl_idx].spaces = len;
+ e->levels[e->lvl_idx].ncount = 0;
+ e->levels[e->lvl_idx].domain = syck_strndup( e->levels[e->lvl_idx-1].domain, strlen( e->levels[e->lvl_idx-1].domain ) );
+ e->levels[e->lvl_idx].status = status;
+ e->levels[e->lvl_idx].anctag = 0;
+ e->lvl_idx += 1;
+}
+
+void
+syck_emitter_reset_levels( SyckEmitter *e )
+{
+ while ( e->lvl_idx > 1 )
+ {
+ syck_emitter_pop_level( e );
+ }
+
+ if ( e->lvl_idx < 1 )
+ {
+ e->lvl_idx = 1;
+ e->levels[0].spaces = -1;
+ e->levels[0].ncount = 0;
+ e->levels[0].domain = syck_strndup( "", 0 );
+ e->levels[0].anctag = 0;
+ }
+ e->levels[0].status = syck_lvl_header;
+}
+
+void
+syck_emitter_handler( SyckEmitter *e, SyckEmitterHandler hdlr )
+{
+ e->emitter_handler = hdlr;
+}
+
+void
+syck_output_handler( SyckEmitter *e, SyckOutputHandler hdlr )
+{
+ e->output_handler = hdlr;
+}
+
+void
+syck_free_emitter( SyckEmitter *e )
+{
+ /*
+ * Free tables
+ */
+ syck_emitter_st_free( e );
+ syck_emitter_reset_levels( e );
+ S_FREE( e->levels[0].domain );
+ S_FREE( e->levels );
+ if ( e->buffer != NULL )
+ {
+ S_FREE( e->buffer );
+ }
+ S_FREE( e );
+}
+
+void
+syck_emitter_clear( SyckEmitter *e )
+{
+ if ( e->buffer == NULL )
+ {
+ e->buffer = S_ALLOC_N( char, e->bufsize );
+ S_MEMZERO( e->buffer, char, e->bufsize );
+ }
+ e->buffer[0] = '\0';
+ e->marker = e->buffer;
+ e->bufpos = 0;
+}
+
+/*
+ * Raw write to the emitter buffer.
+ */
+void
+syck_emitter_write( SyckEmitter *e, const char *str, long len )
+{
+ long at;
+ ASSERT( str != NULL );
+ if ( e->buffer == NULL )
+ {
+ syck_emitter_clear( e );
+ }
+
+ /*
+ * Flush if at end of buffer
+ */
+ at = e->marker - e->buffer;
+ if ( len + at >= (long)e->bufsize )
+ {
+ syck_emitter_flush( e, 0 );
+ for (;;) {
+ long rest = e->bufsize - (e->marker - e->buffer);
+ if (len <= rest) break;
+ S_MEMCPY( e->marker, str, char, rest );
+ e->marker += rest;
+ str += rest;
+ len -= rest;
+ syck_emitter_flush( e, 0 );
+ }
+ }
+
+ /*
+ * Write to buffer
+ */
+ S_MEMCPY( e->marker, str, char, len );
+ e->marker += len;
+}
+
+/*
+ * Write a chunk of data out.
+ */
+void
+syck_emitter_flush( SyckEmitter *e, long check_room )
+{
+ /*
+ * Check for enough space in the buffer for check_room length.
+ */
+ if ( check_room > 0 )
+ {
+ if ( (long)e->bufsize > ( e->marker - e->buffer ) + check_room )
+ {
+ return;
+ }
+ }
+ else
+ {
+ check_room = e->bufsize;
+ }
+
+ /*
+ * Commit buffer.
+ */
+ if ( check_room > e->marker - e->buffer )
+ {
+ check_room = e->marker - e->buffer;
+ }
+ (e->output_handler)( e, e->buffer, check_room );
+ e->bufpos += check_room;
+ e->marker -= check_room;
+}
+
+/*
+ * Start emitting from the given node, check for anchoring and then
+ * issue the callback to the emitter handler.
+ */
+void
+syck_emit( SyckEmitter *e, st_data_t n )
+{
+ SYMID oid;
+ char *anchor_name = NULL;
+ int indent = 0;
+ long x = 0;
+ SyckLevel *lvl = syck_emitter_current_level( e );
+
+ /*
+ * Determine headers.
+ */
+ if ( e->stage == doc_open && ( e->headless == 0 || e->use_header == 1 ) )
+ {
+ if ( e->use_version == 1 )
+ {
+ char *header = S_ALLOC_N( char, 64 );
+ S_MEMZERO( header, char, 64 );
+ sprintf( header, "--- %%YAML:%d.%d ", SYCK_YAML_MAJOR, SYCK_YAML_MINOR );
+ syck_emitter_write( e, header, strlen( header ) );
+ S_FREE( header );
+ }
+ else
+ {
+ syck_emitter_write( e, "--- ", 4 );
+ }
+ e->stage = doc_processing;
+ }
+
+ /* Add new level */
+ if ( lvl->spaces >= 0 ) {
+ indent = lvl->spaces + e->indent;
+ }
+ syck_emitter_add_level( e, indent, syck_lvl_open );
+ lvl = syck_emitter_current_level( e );
+
+ /* Look for anchor */
+ if ( e->anchors != NULL &&
+ st_lookup( e->markers, n, (st_data_t *)&oid ) &&
+ st_lookup( e->anchors, (st_data_t)oid, (void *)&anchor_name ) )
+ {
+ if ( e->anchored == NULL )
+ {
+ e->anchored = st_init_numtable();
+ }
+
+ if ( ! st_lookup( e->anchored, (st_data_t)anchor_name, (st_data_t *)&x ) )
+ {
+ char *an = S_ALLOC_N( char, strlen( anchor_name ) + 3 );
+ sprintf( an, "&%s ", anchor_name );
+ syck_emitter_write( e, an, strlen( anchor_name ) + 2 );
+ free( an );
+
+ x = 1;
+ st_insert( e->anchored, (st_data_t)anchor_name, (st_data_t)x );
+ lvl->anctag = 1;
+ }
+ else
+ {
+ char *an = S_ALLOC_N( char, strlen( anchor_name ) + 2 );
+ sprintf( an, "*%s", anchor_name );
+ syck_emitter_write( e, an, strlen( anchor_name ) + 1 );
+ free( an );
+
+ goto end_emit;
+ }
+ }
+
+ (e->emitter_handler)( e, n );
+
+ /* Pop the level */
+end_emit:
+ syck_emitter_pop_level( e );
+ if ( e->lvl_idx == 1 ) {
+ syck_emitter_write( e, "\n", 1 );
+ e->headless = 0;
+ e->stage = doc_open;
+ }
+}
+
+/*
+ * Determine what tag needs to be written, based on the taguri of the node
+ * and the implicit tag which would be assigned to this node. If a tag is
+ * required, write the tag.
+ */
+void syck_emit_tag( SyckEmitter *e, const char *tag, const char *ignore )
+{
+ SyckLevel *lvl;
+ if ( tag == NULL ) return;
+ if ( ignore != NULL && syck_tagcmp( tag, ignore ) == 0 && e->explicit_typing == 0 ) return;
+ lvl = syck_emitter_current_level( e );
+
+ /* implicit */
+ if ( strlen( tag ) == 0 ) {
+ syck_emitter_write( e, "! ", 2 );
+
+ /* global types */
+ } else if ( strncmp( tag, "tag:", 4 ) == 0 ) {
+ int taglen = (int)strlen( tag );
+ syck_emitter_write( e, "!", 1 );
+ if ( strncmp( tag + 4, YAML_DOMAIN, strlen( YAML_DOMAIN ) ) == 0 ) {
+ int skip = 4 + strlen( YAML_DOMAIN ) + 1;
+ syck_emitter_write( e, tag + skip, taglen - skip );
+ } else {
+ const char *subd = tag + 4;
+ while ( *subd != ':' && *subd != '\0' ) subd++;
+ if ( *subd == ':' ) {
+ if ( subd - tag > ( (long)( strlen( YAML_DOMAIN ) + 5 )) &&
+ strncmp( subd - strlen( YAML_DOMAIN ), YAML_DOMAIN, strlen( YAML_DOMAIN ) ) == 0 ) {
+ syck_emitter_write( e, tag + 4, subd - strlen( YAML_DOMAIN ) - ( tag + 4 ) - 1 );
+ syck_emitter_write( e, "/", 1 );
+ syck_emitter_write( e, subd + 1, ( tag + taglen ) - ( subd + 1 ) );
+ } else {
+ syck_emitter_write( e, tag + 4, subd - ( tag + 4 ) );
+ syck_emitter_write( e, "/", 1 );
+ syck_emitter_write( e, subd + 1, ( tag + taglen ) - ( subd + 1 ) );
+ }
+ } else {
+ /* TODO: Invalid tag (no colon after domain) */
+ return;
+ }
+ }
+ syck_emitter_write( e, " ", 1 );
+
+ /* private types */
+ } else if ( strncmp( tag, "x-private:", 10 ) == 0 ) {
+ syck_emitter_write( e, "!!", 2 );
+ syck_emitter_write( e, tag + 10, strlen( tag ) - 10 );
+ syck_emitter_write( e, " ", 1 );
+ }
+ lvl->anctag = 1;
+}
+
+/*
+ * Emit a newline and an appropriately spaced indent.
+ */
+void syck_emit_indent( SyckEmitter *e )
+{
+ int i;
+ SyckLevel *lvl = syck_emitter_current_level( e );
+ if ( e->bufpos == 0 && ( e->marker - e->buffer ) == 0 ) return;
+ if ( lvl->spaces >= 0 ) {
+ char *spcs = S_ALLOC_N( char, lvl->spaces + 2 );
+
+ spcs[0] = '\n'; spcs[lvl->spaces + 1] = '\0';
+ for ( i = 0; i < lvl->spaces; i++ ) spcs[i+1] = ' ';
+ syck_emitter_write( e, spcs, lvl->spaces + 1 );
+ free( spcs );
+ }
+}
+
+/* Clear the scan */
+#define SCAN_NONE 0
+/* All printable characters? */
+#define SCAN_NONPRINT 1
+/* Any indented lines? */
+#define SCAN_INDENTED 2
+/* Larger than the requested width? */
+#define SCAN_WIDE 4
+/* Opens or closes with whitespace? */
+#define SCAN_WHITEEDGE 8
+/* Contains a newline */
+#define SCAN_NEWLINE 16
+/* Contains a single quote */
+#define SCAN_SINGLEQ 32
+/* Contains a double quote */
+#define SCAN_DOUBLEQ 64
+/* Starts with a token */
+#define SCAN_INDIC_S 128
+/* Contains a flow indicator */
+#define SCAN_INDIC_C 256
+/* Ends without newlines */
+#define SCAN_NONL_E 512
+/* Ends with many newlines */
+#define SCAN_MANYNL_E 1024
+/* Contains flow map indicators */
+#define SCAN_FLOWMAP 2048
+/* Contains flow seq indicators */
+#define SCAN_FLOWSEQ 4096
+/* Contains a valid doc separator */
+#define SCAN_DOCSEP 8192
+
+/*
+ * Basic printable test for LATIN-1 characters.
+ */
+int
+syck_scan_scalar( int req_width, const char *cursor, long len )
+{
+ long i = 0, start = 0;
+ int flags = SCAN_NONE;
+
+ if ( len < 1 ) return flags;
+
+ /* c-indicators from the spec */
+ if ( cursor[0] == '[' || cursor[0] == ']' ||
+ cursor[0] == '{' || cursor[0] == '}' ||
+ cursor[0] == '!' || cursor[0] == '*' ||
+ cursor[0] == '&' || cursor[0] == '|' ||
+ cursor[0] == '>' || cursor[0] == '\'' ||
+ cursor[0] == '"' || cursor[0] == '#' ||
+ cursor[0] == '%' || cursor[0] == '@' ||
+ cursor[0] == '&' ) {
+ flags |= SCAN_INDIC_S;
+ }
+ if ( ( cursor[0] == '-' || cursor[0] == ':' ||
+ cursor[0] == '?' || cursor[0] == ',' ) &&
+ ( len == 1 || cursor[1] == ' ' || cursor[1] == '\n' ) )
+ {
+ flags |= SCAN_INDIC_S;
+ }
+
+ /* whitespace edges */
+ if ( cursor[len-1] != '\n' ) {
+ flags |= SCAN_NONL_E;
+ } else if ( len > 1 && cursor[len-2] == '\n' ) {
+ flags |= SCAN_MANYNL_E;
+ }
+ if (
+ ( len > 0 && ( cursor[0] == ' ' || cursor[0] == '\t' || cursor[0] == '\n' || cursor[0] == '\r' ) ) ||
+ ( len > 1 && ( cursor[len-1] == ' ' || cursor[len-1] == '\t' ) )
+ ) {
+ flags |= SCAN_WHITEEDGE;
+ }
+
+ /* opening doc sep */
+ if ( len >= 3 && strncmp( cursor, "---", 3 ) == 0 )
+ flags |= SCAN_DOCSEP;
+
+ /* scan string */
+ for ( i = 0; i < len; i++ ) {
+
+ if ( ! ( cursor[i] == 0x9 ||
+ cursor[i] == 0xA ||
+ cursor[i] == 0xD ||
+ ( cursor[i] >= 0x20 && cursor[i] <= 0x7E ) )
+ ) {
+ flags |= SCAN_NONPRINT;
+ }
+ else if ( cursor[i] == '\n' ) {
+ flags |= SCAN_NEWLINE;
+ if ( len - i >= 3 && strncmp( &cursor[i+1], "---", 3 ) == 0 )
+ flags |= SCAN_DOCSEP;
+ if ( cursor[i+1] == ' ' || cursor[i+1] == '\t' )
+ flags |= SCAN_INDENTED;
+ if ( req_width > 0 && i - start > req_width )
+ flags |= SCAN_WIDE;
+ start = i;
+ }
+ else if ( cursor[i] == '\'' )
+ {
+ flags |= SCAN_SINGLEQ;
+ }
+ else if ( cursor[i] == '"' )
+ {
+ flags |= SCAN_DOUBLEQ;
+ }
+ else if ( cursor[i] == ']' )
+ {
+ flags |= SCAN_FLOWSEQ;
+ }
+ else if ( cursor[i] == '}' )
+ {
+ flags |= SCAN_FLOWMAP;
+ }
+ /* remember, if plain collections get implemented, to add nb-plain-flow-char */
+ else if ( ( cursor[i] == ' ' && cursor[i+1] == '#' ) ||
+ ( cursor[i] == ':' &&
+ ( cursor[i+1] == ' ' || cursor[i+1] == '\n' || i == len - 1 ) ) )
+ {
+ flags |= SCAN_INDIC_C;
+ }
+ else if ( cursor[i] == ',' &&
+ ( cursor[i+1] == ' ' || cursor[i+1] == '\n' || i == len - 1 ) )
+ {
+ flags |= SCAN_FLOWMAP;
+ flags |= SCAN_FLOWSEQ;
+ }
+ }
+
+ /* printf( "---STR---\n%s\nFLAGS: %d\n", cursor, flags ); */
+ return flags;
+}
+/*
+ * All scalars should be emitted through this function, which determines an appropriate style,
+ * tag and indent.
+ */
+void syck_emit_scalar( SyckEmitter *e, const char *tag, enum scalar_style force_style, int force_indent, int force_width,
+ char keep_nl, const char *str, long len )
+{
+ enum scalar_style favor_style = scalar_literal;
+ SyckLevel *parent = syck_emitter_parent_level( e );
+ SyckLevel *lvl = syck_emitter_current_level( e );
+ int scan = 0;
+ const char *match_implicit;
+ char *implicit;
+
+ if ( str == NULL ) str = "";
+
+ /* No empty nulls as map keys */
+ if ( len == 0 && ( parent->status == syck_lvl_map || parent->status == syck_lvl_imap ) &&
+ parent->ncount % 2 == 1 && syck_tagcmp( tag, "tag:yaml.org,2002:null" ) == 0 )
+ {
+ str = "~";
+ len = 1;
+ }
+
+ scan = syck_scan_scalar( force_width, str, len );
+ match_implicit = syck_match_implicit( str, len );
+
+ /* quote strings which default to implicits */
+ implicit = syck_taguri( YAML_DOMAIN, match_implicit, (int)strlen( match_implicit ) );
+ if ( syck_tagcmp( tag, implicit ) != 0 && syck_tagcmp( tag, "tag:yaml.org,2002:str" ) == 0 ) {
+ force_style = scalar_2quote;
+ } else {
+ /* complex key */
+ if ( parent->status == syck_lvl_map && parent->ncount % 2 == 1 &&
+ ( !( tag == NULL ||
+ ( implicit != NULL && syck_tagcmp( tag, implicit ) == 0 && e->explicit_typing == 0 ) ) ) )
+ {
+ syck_emitter_write( e, "? ", 2 );
+ parent->status = syck_lvl_mapx;
+ }
+ syck_emit_tag( e, tag, implicit );
+ }
+ S_FREE( implicit );
+
+ /* if still arbitrary, sniff a good block style. */
+ if ( force_style == scalar_none ) {
+ if ( scan & SCAN_NEWLINE ) {
+ force_style = scalar_literal;
+ } else {
+ force_style = scalar_plain;
+ }
+ }
+
+ if ( e->style == scalar_fold ) {
+ favor_style = scalar_fold;
+ }
+
+ /* Determine block style */
+ if ( scan & SCAN_NONPRINT ) {
+ force_style = scalar_2quote;
+ } else if ( scan & SCAN_WHITEEDGE ) {
+ force_style = scalar_2quote;
+ } else if ( force_style != scalar_fold && ( scan & SCAN_INDENTED ) ) {
+ force_style = scalar_literal;
+ } else if ( force_style == scalar_plain && ( scan & SCAN_NEWLINE ) ) {
+ force_style = favor_style;
+ } else if ( force_style == scalar_plain && parent->status == syck_lvl_iseq && ( scan & SCAN_FLOWSEQ ) ) {
+ force_style = scalar_2quote;
+ } else if ( force_style == scalar_plain && parent->status == syck_lvl_imap && ( scan & SCAN_FLOWMAP ) ) {
+ force_style = scalar_2quote;
+ /* } else if ( force_style == scalar_fold && ( ! ( scan & SCAN_WIDE ) ) ) {
+ force_style = scalar_literal; */
+ } else if ( force_style == scalar_plain && ( scan & SCAN_INDIC_S || scan & SCAN_INDIC_C ) ) {
+ if ( scan & SCAN_NEWLINE ) {
+ force_style = favor_style;
+ } else {
+ force_style = scalar_2quote;
+ }
+ }
+
+ if ( force_indent > 0 ) {
+ lvl->spaces = parent->spaces + force_indent;
+ } else if ( scan & SCAN_DOCSEP ) {
+ lvl->spaces = parent->spaces + e->indent;
+ }
+
+ /* For now, all ambiguous keys are going to be double-quoted */
+ if ( ( parent->status == syck_lvl_map || parent->status == syck_lvl_mapx ) && parent->ncount % 2 == 1 ) {
+ if ( force_style != scalar_plain ) {
+ force_style = scalar_2quote;
+ }
+ }
+
+ /* If the parent is an inline, double quote anything complex */
+ if ( parent->status == syck_lvl_imap || parent->status == syck_lvl_iseq ) {
+ if ( force_style != scalar_plain && force_style != scalar_1quote ) {
+ force_style = scalar_2quote;
+ }
+ }
+
+ /* Fix the ending newlines */
+ if ( scan & SCAN_NONL_E ) {
+ keep_nl = NL_CHOMP;
+ } else if ( scan & SCAN_MANYNL_E ) {
+ keep_nl = NL_KEEP;
+ }
+
+ /* Write the text node */
+ switch ( force_style )
+ {
+ case scalar_1quote:
+ syck_emit_1quoted( e, force_width, str, len );
+ break;
+
+ case scalar_none:
+ case scalar_2quote:
+ syck_emit_2quoted( e, force_width, str, len );
+ break;
+
+ case scalar_fold:
+ syck_emit_folded( e, force_width, keep_nl, str, len );
+ break;
+
+ case scalar_literal:
+ syck_emit_literal( e, keep_nl, str, len );
+ break;
+
+ case scalar_plain:
+ syck_emitter_write( e, str, len );
+ break;
+ }
+
+ if ( parent->status == syck_lvl_mapx )
+ {
+ syck_emitter_write( e, "\n", 1 );
+ }
+}
+
+void
+syck_emitter_escape( SyckEmitter *e, const char *src, long len )
+{
+ int i;
+ for( i = 0; i < len; i++ )
+ {
+ if( (src[i] < 0x20) || (0x7E < src[i]) )
+ {
+ syck_emitter_write( e, "\\", 1 );
+ if( '\0' == src[i] )
+ syck_emitter_write( e, "0", 1 );
+ else
+ {
+ syck_emitter_write( e, "x", 1 );
+ syck_emitter_write( e, (const char *)hex_table + ((src[i] & 0xF0) >> 4), 1 );
+ syck_emitter_write( e, (const char *)hex_table + (src[i] & 0x0F), 1 );
+ }
+ }
+ else
+ {
+ syck_emitter_write( e, src + i, 1 );
+ if( '\\' == src[i] )
+ syck_emitter_write( e, "\\", 1 );
+ }
+ }
+}
+
+/*
+ * Outputs a single-quoted block.
+ */
+void
+syck_emit_1quoted( SyckEmitter *e, int width, const char *str, long len )
+{
+ char do_indent = 0;
+ const char *mark = str;
+ const char *start = str;
+ const char *end = str;
+ syck_emitter_write( e, "'", 1 );
+ while ( mark < str + len ) {
+ if ( do_indent ) {
+ syck_emit_indent( e );
+ do_indent = 0;
+ }
+ switch ( *mark ) {
+ case '\'': syck_emitter_write( e, "'", 1 ); break;
+
+ case '\n':
+ end = mark + 1;
+ if ( *start != ' ' && *start != '\n' && *end != '\n' && *end != ' ' ) {
+ syck_emitter_write( e, "\n\n", 2 );
+ } else {
+ syck_emitter_write( e, "\n", 1 );
+ }
+ do_indent = 1;
+ start = mark + 1;
+ break;
+
+ case ' ':
+ if ( width > 0 && *start != ' ' && mark - end > width ) {
+ do_indent = 1;
+ end = mark + 1;
+ } else {
+ syck_emitter_write( e, " ", 1 );
+ }
+ break;
+
+ default:
+ syck_emitter_write( e, mark, 1 );
+ break;
+ }
+ mark++;
+ }
+ syck_emitter_write( e, "'", 1 );
+}
+
+/*
+ * Outputs a double-quoted block.
+ */
+void
+syck_emit_2quoted( SyckEmitter *e, int width, const char *str, long len )
+{
+ char do_indent = 0;
+ const char *mark = str;
+ const char *start = str;
+ const char *end = str;
+ syck_emitter_write( e, "\"", 1 );
+ while ( mark < str + len ) {
+ if ( do_indent > 0 ) {
+ if ( do_indent == 2 ) {
+ syck_emitter_write( e, "\\", 1 );
+ }
+ syck_emit_indent( e );
+ do_indent = 0;
+ }
+ switch ( *mark ) {
+
+ /* Escape sequences allowed within double quotes. */
+ case '"': syck_emitter_write( e, "\\\"", 2 ); break;
+ case '\\': syck_emitter_write( e, "\\\\", 2 ); break;
+ case '\0': syck_emitter_write( e, "\\0", 2 ); break;
+ case '\a': syck_emitter_write( e, "\\a", 2 ); break;
+ case '\b': syck_emitter_write( e, "\\b", 2 ); break;
+ case '\f': syck_emitter_write( e, "\\f", 2 ); break;
+ case '\r': syck_emitter_write( e, "\\r", 2 ); break;
+ case '\t': syck_emitter_write( e, "\\t", 2 ); break;
+ case '\v': syck_emitter_write( e, "\\v", 2 ); break;
+ case 0x1b: syck_emitter_write( e, "\\e", 2 ); break;
+
+ case '\n':
+ end = mark + 1;
+ syck_emitter_write( e, "\\n", 2 );
+ do_indent = 2;
+ start = mark + 1;
+ if ( start < str + len && ( *start == ' ' || *start == '\n' ) ) {
+ do_indent = 0;
+ }
+ break;
+
+ case ' ':
+ if ( width > 0 && *start != ' ' && mark - end > width ) {
+ do_indent = 1;
+ end = mark + 1;
+ } else {
+ syck_emitter_write( e, " ", 1 );
+ }
+ break;
+
+ default:
+ syck_emitter_escape( e, mark, 1 );
+ break;
+ }
+ mark++;
+ }
+ syck_emitter_write( e, "\"", 1 );
+}
+
+/*
+ * Outputs a literal block.
+ */
+void
+syck_emit_literal( SyckEmitter *e, char keep_nl, const char *str, long len )
+{
+ const char *mark = str;
+ const char *start = str;
+ const char *end = str;
+ syck_emitter_write( e, "|", 1 );
+ if ( keep_nl == NL_CHOMP ) {
+ syck_emitter_write( e, "-", 1 );
+ } else if ( keep_nl == NL_KEEP ) {
+ syck_emitter_write( e, "+", 1 );
+ }
+ syck_emit_indent( e );
+ while ( mark < str + len ) {
+ if ( *mark == '\n' ) {
+ end = mark;
+ if ( *start != ' ' && *start != '\n' && *end != '\n' && *end != ' ' ) end += 1;
+ syck_emitter_write( e, start, end - start );
+ if ( mark + 1 == str + len ) {
+ if ( keep_nl != NL_KEEP ) syck_emitter_write( e, "\n", 1 );
+ } else {
+ syck_emit_indent( e );
+ }
+ start = mark + 1;
+ }
+ mark++;
+ }
+ end = str + len;
+ if ( start < end ) {
+ syck_emitter_write( e, start, end - start );
+ }
+}
+
+/*
+ * Outputs a folded block.
+ */
+void
+syck_emit_folded( SyckEmitter *e, int width, char keep_nl, const char *str, long len )
+{
+ const char *mark = str;
+ const char *start = str;
+ const char *end = str;
+ syck_emitter_write( e, ">", 1 );
+ if ( keep_nl == NL_CHOMP ) {
+ syck_emitter_write( e, "-", 1 );
+ } else if ( keep_nl == NL_KEEP ) {
+ syck_emitter_write( e, "+", 1 );
+ }
+ syck_emit_indent( e );
+ if ( width <= 0 ) width = e->best_width;
+ while ( mark < str + len ) {
+ switch ( *mark ) {
+ case '\n':
+ syck_emitter_write( e, end, mark - end );
+ end = mark + 1;
+ if ( *start != ' ' && *start != '\n' && *end != '\n' && *end != ' ' ) {
+ syck_emitter_write( e, "\n", 1 );
+ }
+ if ( mark + 1 == str + len ) {
+ if ( keep_nl != NL_KEEP ) syck_emitter_write( e, "\n", 1 );
+ } else {
+ syck_emit_indent( e );
+ }
+ start = mark + 1;
+ break;
+
+ case ' ':
+ if ( *start != ' ' ) {
+ if ( mark - end > width ) {
+ syck_emitter_write( e, end, mark - end );
+ syck_emit_indent( e );
+ end = mark + 1;
+ }
+ }
+ break;
+ }
+ mark++;
+ }
+ if ( end < mark ) {
+ syck_emitter_write( e, end, mark - end );
+ }
+}
+
+/*
+ * Begins emission of a sequence.
+ */
+void syck_emit_seq( SyckEmitter *e, const char *tag, enum seq_style style )
+{
+ SyckLevel *parent = syck_emitter_parent_level( e );
+ SyckLevel *lvl = syck_emitter_current_level( e );
+ syck_emit_tag( e, tag, "tag:yaml.org,2002:seq" );
+ if ( style == seq_inline || ( parent->status == syck_lvl_imap || parent->status == syck_lvl_iseq ) ) {
+ syck_emitter_write( e, "[", 1 );
+ lvl->status = syck_lvl_iseq;
+ } else {
+ /* complex key */
+ if ( parent->status == syck_lvl_map && parent->ncount % 2 == 1 ) {
+ syck_emitter_write( e, "? ", 2 );
+ parent->status = syck_lvl_mapx;
+ }
+ lvl->status = syck_lvl_seq;
+ }
+}
+
+/*
+ * Begins emission of a mapping.
+ */
+void
+syck_emit_map( SyckEmitter *e, const char *tag, enum map_style style )
+{
+ SyckLevel *parent = syck_emitter_parent_level( e );
+ SyckLevel *lvl = syck_emitter_current_level( e );
+ syck_emit_tag( e, tag, "tag:yaml.org,2002:map" );
+ if ( style == map_inline || ( parent->status == syck_lvl_imap || parent->status == syck_lvl_iseq ) ) {
+ syck_emitter_write( e, "{", 1 );
+ lvl->status = syck_lvl_imap;
+ } else {
+ /* complex key */
+ if ( parent->status == syck_lvl_map && parent->ncount % 2 == 1 ) {
+ syck_emitter_write( e, "? ", 2 );
+ parent->status = syck_lvl_mapx;
+ }
+ lvl->status = syck_lvl_map;
+ }
+}
+
+/*
+ * Handles emitting of a collection item (for both
+ * sequences and maps)
+ */
+void syck_emit_item( SyckEmitter *e, st_data_t n )
+{
+ SyckLevel *lvl = syck_emitter_current_level( e );
+ switch ( lvl->status )
+ {
+ case syck_lvl_seq:
+ {
+ SyckLevel *parent = syck_emitter_parent_level( e );
+
+ /* seq-in-map shortcut -- the lvl->anctag check should be unneccesary but
+ * there is a nasty shift/reduce in the parser on this point and
+ * i'm not ready to tickle it. */
+ if ( lvl->anctag == 0 && parent->status == syck_lvl_map && lvl->ncount == 0 ) {
+ lvl->spaces = parent->spaces;
+ }
+
+ /* seq-in-seq shortcut */
+ else if ( lvl->anctag == 0 && parent->status == syck_lvl_seq && lvl->ncount == 0 ) {
+ int spcs = ( lvl->spaces - parent->spaces ) - 2;
+ if ( spcs >= 0 ) {
+ int i = 0;
+ for ( i = 0; i < spcs; i++ ) {
+ syck_emitter_write( e, " ", 1 );
+ }
+ syck_emitter_write( e, "- ", 2 );
+ break;
+ }
+ }
+
+ syck_emit_indent( e );
+ syck_emitter_write( e, "- ", 2 );
+ }
+ break;
+
+ case syck_lvl_iseq:
+ {
+ if ( lvl->ncount > 0 ) {
+ syck_emitter_write( e, ", ", 2 );
+ }
+ }
+ break;
+
+ case syck_lvl_map:
+ {
+ SyckLevel *parent = syck_emitter_parent_level( e );
+
+ /* map-in-seq shortcut */
+ if ( lvl->anctag == 0 && parent->status == syck_lvl_seq && lvl->ncount == 0 ) {
+ int spcs = ( lvl->spaces - parent->spaces ) - 2;
+ if ( spcs >= 0 ) {
+ int i = 0;
+ for ( i = 0; i < spcs; i++ ) {
+ syck_emitter_write( e, " ", 1 );
+ }
+ break;
+ }
+ }
+
+ if ( lvl->ncount % 2 == 0 ) {
+ syck_emit_indent( e );
+ } else {
+ syck_emitter_write( e, ": ", 2 );
+ }
+ }
+ break;
+
+ case syck_lvl_mapx:
+ {
+ if ( lvl->ncount % 2 == 0 ) {
+ syck_emit_indent( e );
+ lvl->status = syck_lvl_map;
+ } else {
+ int i;
+ if ( lvl->spaces > 0 ) {
+ char *spcs = S_ALLOC_N( char, lvl->spaces + 1 );
+
+ spcs[lvl->spaces] = '\0';
+ for ( i = 0; i < lvl->spaces; i++ ) spcs[i] = ' ';
+ syck_emitter_write( e, spcs, lvl->spaces );
+ S_FREE( spcs );
+ }
+ syck_emitter_write( e, ": ", 2 );
+ }
+ }
+ break;
+
+ case syck_lvl_imap:
+ {
+ if ( lvl->ncount > 0 ) {
+ if ( lvl->ncount % 2 == 0 ) {
+ syck_emitter_write( e, ", ", 2 );
+ } else {
+ syck_emitter_write( e, ": ", 2 );
+ }
+ }
+ }
+ break;
+
+ default: break;
+ }
+ lvl->ncount++;
+
+ syck_emit( e, n );
+}
+
+/*
+ * Closes emission of a collection.
+ */
+void syck_emit_end( SyckEmitter *e )
+{
+ SyckLevel *lvl = syck_emitter_current_level( e );
+ SyckLevel *parent = syck_emitter_parent_level( e );
+ switch ( lvl->status )
+ {
+ case syck_lvl_seq:
+ if ( lvl->ncount == 0 ) {
+ syck_emitter_write( e, "[]\n", 3 );
+ } else if ( parent->status == syck_lvl_mapx ) {
+ syck_emitter_write( e, "\n", 1 );
+ }
+ break;
+
+ case syck_lvl_iseq:
+ syck_emitter_write( e, "]\n", 1 );
+ break;
+
+ case syck_lvl_map:
+ if ( lvl->ncount == 0 ) {
+ syck_emitter_write( e, "{}\n", 3 );
+ } else if ( lvl->ncount % 2 == 1 ) {
+ syck_emitter_write( e, ":\n", 1 );
+ } else if ( parent->status == syck_lvl_mapx ) {
+ syck_emitter_write( e, "\n", 1 );
+ }
+ break;
+
+ case syck_lvl_imap:
+ syck_emitter_write( e, "}\n", 1 );
+ break;
+
+ default: break;
+ }
+}
+
+/*
+ * Fill markers table with emitter nodes in the
+ * soon-to-be-emitted tree.
+ */
+SYMID
+syck_emitter_mark_node( SyckEmitter *e, st_data_t n )
+{
+ SYMID oid = 0;
+ char *anchor_name = NULL;
+
+ /*
+ * Ensure markers table is initialized.
+ */
+ if ( e->markers == NULL )
+ {
+ e->markers = st_init_numtable();
+ }
+
+ /*
+ * Markers table initially marks the string position of the
+ * object. Doesn't yet create an anchor, simply notes the
+ * position.
+ */
+ if ( ! st_lookup( e->markers, n, (st_data_t *)&oid ) )
+ {
+ /*
+ * Store all markers
+ */
+ oid = e->markers->num_entries + 1;
+ st_insert( e->markers, n, (st_data_t)oid );
+ }
+ else
+ {
+ if ( e->anchors == NULL )
+ {
+ e->anchors = st_init_numtable();
+ }
+
+ if ( ! st_lookup( e->anchors, (st_data_t)oid, (void *)&anchor_name ) )
+ {
+ int idx = 0;
+ const char *anc = ( e->anchor_format == NULL ? DEFAULT_ANCHOR_FORMAT : e->anchor_format );
+
+ /*
+ * Second time hitting this object, let's give it an anchor
+ */
+ idx = (int)(e->anchors->num_entries + 1);
+ anchor_name = S_ALLOC_N( char, strlen( anc ) + 10 );
+ S_MEMZERO( anchor_name, char, strlen( anc ) + 10 );
+ sprintf( anchor_name, anc, idx );
+
+ /*
+ * Insert into anchors table
+ */
+ st_insert( e->anchors, (st_data_t)oid, (st_data_t)anchor_name );
+ }
+ }
+ return oid;
+}
+
diff --git a/ext/syck/extconf.rb b/ext/syck/extconf.rb
new file mode 100644
index 0000000000..6c10448c70
--- /dev/null
+++ b/ext/syck/extconf.rb
@@ -0,0 +1,5 @@
+require 'mkmf'
+
+have_header( "st.h" )
+create_makefile( "syck" )
+
diff --git a/ext/syck/gram.c b/ext/syck/gram.c
new file mode 100644
index 0000000000..8fe4e4f3b5
--- /dev/null
+++ b/ext/syck/gram.c
@@ -0,0 +1,1894 @@
+/* A Bison parser, made by GNU Bison 1.875d. */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+
+/* Written by Richard Stallman by simplifying the original so called
+ ``semantic'' parser. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+/* Identify Bison output. */
+#define YYBISON 1
+
+/* Skeleton name. */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers. */
+#define YYPURE 1
+
+/* Using locations. */
+#define YYLSP_NEEDED 0
+
+/* If NAME_PREFIX is specified substitute the variables and functions
+ names. */
+#define yyparse syckparse
+#define yylex sycklex
+#define yyerror syckerror
+#define yylval sycklval
+#define yychar syckchar
+#define yydebug syckdebug
+#define yynerrs sycknerrs
+
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ YAML_ANCHOR = 258,
+ YAML_ALIAS = 259,
+ YAML_TRANSFER = 260,
+ YAML_TAGURI = 261,
+ YAML_ITRANSFER = 262,
+ YAML_WORD = 263,
+ YAML_PLAIN = 264,
+ YAML_BLOCK = 265,
+ YAML_DOCSEP = 266,
+ YAML_IOPEN = 267,
+ YAML_INDENT = 268,
+ YAML_IEND = 269
+ };
+#endif
+#define YAML_ANCHOR 258
+#define YAML_ALIAS 259
+#define YAML_TRANSFER 260
+#define YAML_TAGURI 261
+#define YAML_ITRANSFER 262
+#define YAML_WORD 263
+#define YAML_PLAIN 264
+#define YAML_BLOCK 265
+#define YAML_DOCSEP 266
+#define YAML_IOPEN 267
+#define YAML_INDENT 268
+#define YAML_IEND 269
+
+
+
+
+/* Copy the first part of user declarations. */
+#line 14 "gram.y"
+
+
+#include "syck.h"
+
+void apply_seq_in_map( SyckParser *parser, SyckNode *n );
+
+#define YYPARSE_PARAM parser
+#define YYLEX_PARAM parser
+
+#define NULL_NODE(parser, node) \
+ SyckNode *node = syck_new_str( "", scalar_plain ); \
+ if ( ((SyckParser *)parser)->taguri_expansion == 1 ) \
+ { \
+ node->type_id = syck_taguri( YAML_DOMAIN, "null", 4 ); \
+ } \
+ else \
+ { \
+ node->type_id = syck_strndup( "null", 4 ); \
+ }
+
+
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 1
+#endif
+
+/* Enabling verbose error messages. */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 35 "gram.y"
+typedef union YYSTYPE {
+ SYMID nodeId;
+ SyckNode *nodeData;
+ char *name;
+} YYSTYPE;
+/* Line 191 of yacc.c. */
+#line 140 "gram.c"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations. */
+
+
+/* Line 214 of yacc.c. */
+#line 152 "gram.c"
+
+#if ! defined (yyoverflow) || YYERROR_VERBOSE
+
+# ifndef YYFREE
+# define YYFREE free
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# endif
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# ifdef YYSTACK_USE_ALLOCA
+# if YYSTACK_USE_ALLOCA
+# define YYSTACK_ALLOC alloca
+# endif
+# else
+# if defined (alloca) || defined (_ALLOCA_H)
+# define YYSTACK_ALLOC alloca
+# else
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+# else
+# if defined (__STDC__) || defined (__cplusplus)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# endif
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# endif
+#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+
+
+#if (! defined (yyoverflow) \
+ && (! defined (__cplusplus) \
+ || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ short int yyss;
+ YYSTYPE yyvs;
+ };
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (short int) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined (__GNUC__) && 1 < __GNUC__
+# define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define YYCOPY(To, From, Count) \
+ do \
+ { \
+ register YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+ while (0)
+# endif
+# endif
+
+/* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack, Stack, yysize); \
+ Stack = &yyptr->Stack; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (0)
+
+#endif
+
+#if defined (__STDC__) || defined (__cplusplus)
+ typedef signed char yysigned_char;
+#else
+ typedef short int yysigned_char;
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 52
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 396
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 23
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 29
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 79
+/* YYNRULES -- Number of states. */
+#define YYNSTATES 128
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 269
+
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+static const unsigned char yytranslate[] =
+{
+ 0, 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, 21, 15, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 16, 2,
+ 2, 2, 2, 22, 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, 17, 2, 18, 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, 19, 2, 20, 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,
+ 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, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+ YYRHS. */
+static const unsigned char yyprhs[] =
+{
+ 0, 0, 3, 5, 8, 9, 11, 13, 15, 18,
+ 21, 24, 28, 30, 32, 36, 37, 40, 43, 46,
+ 49, 51, 54, 56, 58, 60, 63, 66, 69, 72,
+ 75, 77, 79, 81, 85, 87, 89, 91, 93, 95,
+ 99, 103, 106, 110, 113, 117, 120, 124, 127, 129,
+ 133, 136, 140, 143, 145, 149, 151, 153, 157, 161,
+ 165, 168, 172, 175, 179, 182, 184, 188, 190, 194,
+ 196, 200, 204, 207, 211, 215, 218, 220, 224, 226
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yysigned_char yyrhs[] =
+{
+ 24, 0, -1, 25, -1, 11, 27, -1, -1, 33,
+ -1, 26, -1, 34, -1, 5, 26, -1, 6, 26,
+ -1, 3, 26, -1, 29, 26, 32, -1, 25, -1,
+ 28, -1, 29, 28, 30, -1, -1, 7, 28, -1,
+ 5, 28, -1, 6, 28, -1, 3, 28, -1, 12,
+ -1, 29, 13, -1, 14, -1, 13, -1, 14, -1,
+ 31, 32, -1, 5, 33, -1, 6, 33, -1, 7,
+ 33, -1, 3, 33, -1, 4, -1, 8, -1, 9,
+ -1, 29, 33, 32, -1, 10, -1, 35, -1, 39,
+ -1, 42, -1, 49, -1, 29, 37, 30, -1, 29,
+ 38, 30, -1, 15, 27, -1, 5, 31, 38, -1,
+ 5, 37, -1, 6, 31, 38, -1, 6, 37, -1,
+ 3, 31, 38, -1, 3, 37, -1, 36, -1, 38,
+ 31, 36, -1, 38, 31, -1, 17, 40, 18, -1,
+ 17, 18, -1, 41, -1, 40, 21, 41, -1, 25,
+ -1, 48, -1, 29, 43, 30, -1, 29, 47, 30,
+ -1, 5, 31, 47, -1, 5, 43, -1, 6, 31,
+ 47, -1, 6, 43, -1, 3, 31, 47, -1, 3,
+ 43, -1, 33, -1, 22, 25, 31, -1, 27, -1,
+ 44, 16, 45, -1, 46, -1, 47, 31, 36, -1,
+ 47, 31, 46, -1, 47, 31, -1, 25, 16, 27,
+ -1, 19, 50, 20, -1, 19, 20, -1, 51, -1,
+ 50, 21, 51, -1, 25, -1, 48, -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const unsigned short int yyrline[] =
+{
+ 0, 56, 56, 60, 65, 70, 71, 74, 75, 80,
+ 85, 94, 100, 101, 104, 109, 113, 121, 126, 131,
+ 145, 146, 149, 152, 155, 156, 164, 169, 174, 182,
+ 186, 194, 207, 208, 218, 219, 220, 221, 222, 228,
+ 232, 238, 244, 249, 254, 259, 264, 268, 274, 278,
+ 283, 292, 296, 302, 306, 313, 314, 320, 325, 332,
+ 337, 342, 347, 352, 356, 362, 363, 369, 379, 396,
+ 397, 409, 417, 426, 434, 438, 444, 445, 454, 461
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE
+/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "YAML_ANCHOR", "YAML_ALIAS",
+ "YAML_TRANSFER", "YAML_TAGURI", "YAML_ITRANSFER", "YAML_WORD",
+ "YAML_PLAIN", "YAML_BLOCK", "YAML_DOCSEP", "YAML_IOPEN", "YAML_INDENT",
+ "YAML_IEND", "'-'", "':'", "'['", "']'", "'{'", "'}'", "','", "'?'",
+ "$accept", "doc", "atom", "ind_rep", "atom_or_empty", "empty",
+ "indent_open", "indent_end", "indent_sep", "indent_flex_end", "word_rep",
+ "struct_rep", "implicit_seq", "basic_seq", "top_imp_seq",
+ "in_implicit_seq", "inline_seq", "in_inline_seq", "inline_seq_atom",
+ "implicit_map", "top_imp_map", "complex_key", "complex_value",
+ "complex_mapping", "in_implicit_map", "basic_mapping", "inline_map",
+ "in_inline_map", "inline_map_atom", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+ token YYLEX-NUM. */
+static const unsigned short int yytoknum[] =
+{
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 45, 58, 91, 93, 123,
+ 125, 44, 63
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const unsigned char yyr1[] =
+{
+ 0, 23, 24, 24, 24, 25, 25, 26, 26, 26,
+ 26, 26, 27, 27, 28, 28, 28, 28, 28, 28,
+ 29, 29, 30, 31, 32, 32, 33, 33, 33, 33,
+ 33, 33, 33, 33, 34, 34, 34, 34, 34, 35,
+ 35, 36, 37, 37, 37, 37, 37, 37, 38, 38,
+ 38, 39, 39, 40, 40, 41, 41, 42, 42, 43,
+ 43, 43, 43, 43, 43, 44, 44, 45, 46, 47,
+ 47, 47, 47, 48, 49, 49, 50, 50, 51, 51
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const unsigned char yyr2[] =
+{
+ 0, 2, 1, 2, 0, 1, 1, 1, 2, 2,
+ 2, 3, 1, 1, 3, 0, 2, 2, 2, 2,
+ 1, 2, 1, 1, 1, 2, 2, 2, 2, 2,
+ 1, 1, 1, 3, 1, 1, 1, 1, 1, 3,
+ 3, 2, 3, 2, 3, 2, 3, 2, 1, 3,
+ 2, 3, 2, 1, 3, 1, 1, 3, 3, 3,
+ 2, 3, 2, 3, 2, 1, 3, 1, 3, 1,
+ 3, 3, 2, 3, 3, 2, 1, 3, 1, 1
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+static const unsigned char yydefact[] =
+{
+ 4, 0, 30, 0, 0, 0, 31, 32, 34, 15,
+ 20, 0, 0, 0, 2, 6, 0, 5, 7, 35,
+ 36, 37, 38, 10, 29, 8, 26, 9, 27, 0,
+ 0, 0, 0, 28, 15, 15, 15, 15, 12, 3,
+ 13, 15, 52, 55, 0, 53, 56, 75, 78, 79,
+ 0, 76, 1, 0, 0, 0, 21, 15, 0, 0,
+ 65, 48, 0, 0, 0, 0, 69, 0, 0, 19,
+ 17, 18, 15, 15, 15, 16, 15, 15, 15, 15,
+ 0, 15, 51, 0, 74, 0, 23, 0, 47, 64,
+ 0, 43, 60, 0, 45, 62, 41, 0, 24, 0,
+ 11, 33, 22, 39, 40, 50, 57, 15, 58, 72,
+ 14, 73, 54, 77, 65, 46, 63, 42, 59, 44,
+ 61, 66, 25, 49, 67, 68, 70, 71
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yysigned_char yydefgoto[] =
+{
+ -1, 13, 38, 15, 39, 40, 16, 103, 99, 101,
+ 17, 18, 19, 61, 62, 63, 20, 44, 45, 21,
+ 64, 65, 125, 66, 67, 46, 22, 50, 51
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+#define YYPACT_NINF -97
+static const short int yypact[] =
+{
+ 250, 318, -97, 318, 318, 374, -97, -97, -97, 335,
+ -97, 267, 232, 7, -97, -97, 192, -97, -97, -97,
+ -97, -97, -97, -97, -97, -97, -97, -97, -97, 374,
+ 374, 374, 352, -97, 335, 335, 335, 384, -97, -97,
+ -97, 212, -97, 10, 0, -97, -97, -97, 10, -97,
+ -4, -97, -97, 284, 284, 284, -97, 335, 318, 30,
+ 30, -97, -2, 36, -2, 16, -97, 36, 30, -97,
+ -97, -97, 384, 384, 384, -97, 363, 301, 301, 301,
+ -2, 335, -97, 318, -97, 318, -97, 158, -97, -97,
+ 158, -97, -97, 158, -97, -97, -97, 24, -97, 30,
+ -97, -97, -97, -97, -97, 26, -97, 335, -97, 158,
+ -97, -97, -97, -97, -97, 24, 24, 24, 24, 24,
+ 24, -97, -97, -97, -97, -97, -97, -97
+};
+
+/* YYPGOTO[NTERM-NUM]. */
+static const yysigned_char yypgoto[] =
+{
+ -97, -97, 8, 81, -56, 109, 33, -53, 74, -54,
+ -1, -97, -97, -96, -31, -32, -97, -97, -44, -97,
+ 77, -97, -97, -52, 9, -6, -97, -97, -29
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule which
+ number is the opposite. If zero, do what YYDEFACT says.
+ If YYTABLE_NINF, syntax error. */
+#define YYTABLE_NINF -1
+static const unsigned char yytable[] =
+{
+ 24, 96, 26, 28, 33, 100, 49, 52, 14, 123,
+ 104, 106, 102, 126, 108, 60, 84, 85, 82, 43,
+ 48, 83, 88, 91, 94, 111, 81, 110, 24, 26,
+ 28, 68, 107, 24, 26, 28, 33, 86, 32, 112,
+ 60, 57, 41, 86, 98, 122, 88, 91, 94, 86,
+ 102, 124, 24, 26, 28, 115, 113, 127, 117, 0,
+ 0, 119, 32, 32, 32, 32, 97, 41, 41, 41,
+ 76, 24, 26, 28, 41, 68, 24, 26, 28, 49,
+ 0, 0, 23, 0, 25, 27, 114, 0, 0, 114,
+ 41, 43, 114, 48, 0, 0, 116, 59, 0, 118,
+ 0, 0, 120, 0, 0, 76, 76, 76, 114, 76,
+ 41, 41, 41, 0, 41, 23, 25, 27, 0, 0,
+ 32, 0, 59, 32, 0, 0, 32, 87, 90, 93,
+ 89, 92, 95, 0, 23, 25, 27, 105, 0, 0,
+ 41, 109, 32, 69, 70, 71, 75, 0, 0, 0,
+ 80, 87, 90, 93, 89, 92, 95, 0, 23, 25,
+ 27, 29, 2, 30, 31, 5, 6, 7, 0, 0,
+ 10, 121, 0, 57, 0, 0, 0, 0, 0, 0,
+ 58, 69, 70, 71, 0, 80, 69, 70, 71, 105,
+ 109, 105, 109, 105, 109, 53, 2, 54, 55, 5,
+ 6, 7, 8, 0, 10, 56, 0, 57, 0, 11,
+ 0, 12, 0, 0, 58, 77, 2, 78, 79, 37,
+ 6, 7, 8, 0, 10, 56, 0, 57, 0, 11,
+ 0, 12, 0, 0, 58, 1, 2, 3, 4, 5,
+ 6, 7, 8, 0, 10, 0, 0, 0, 0, 11,
+ 0, 12, 47, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 0, 0, 0, 0, 11, 0, 12,
+ 1, 2, 3, 4, 5, 6, 7, 8, 0, 10,
+ 0, 0, 0, 0, 11, 42, 12, 53, 2, 54,
+ 55, 5, 6, 7, 8, 0, 10, 86, 0, 0,
+ 0, 11, 0, 12, 77, 2, 78, 79, 37, 6,
+ 7, 8, 0, 10, 86, 0, 0, 0, 11, 0,
+ 12, 1, 2, 3, 4, 5, 6, 7, 8, 0,
+ 10, 0, 0, 0, 0, 11, 0, 12, 34, 2,
+ 35, 36, 37, 6, 7, 8, 0, 10, 0, 0,
+ 0, 0, 11, 0, 12, 29, 2, 30, 31, 5,
+ 6, 7, 0, 0, 10, 56, 72, 2, 73, 74,
+ 37, 6, 7, 0, 0, 10, 56, 29, 2, 30,
+ 31, 5, 6, 7, 0, 0, 10, 72, 2, 73,
+ 74, 37, 6, 7, 0, 0, 10
+};
+
+static const yysigned_char yycheck[] =
+{
+ 1, 57, 3, 4, 5, 59, 12, 0, 0, 105,
+ 63, 64, 14, 109, 67, 16, 20, 21, 18, 11,
+ 12, 21, 53, 54, 55, 81, 16, 80, 29, 30,
+ 31, 32, 16, 34, 35, 36, 37, 13, 5, 83,
+ 41, 15, 9, 13, 14, 99, 77, 78, 79, 13,
+ 14, 107, 53, 54, 55, 87, 85, 109, 90, -1,
+ -1, 93, 29, 30, 31, 32, 58, 34, 35, 36,
+ 37, 72, 73, 74, 41, 76, 77, 78, 79, 85,
+ -1, -1, 1, -1, 3, 4, 87, -1, -1, 90,
+ 57, 83, 93, 85, -1, -1, 87, 16, -1, 90,
+ -1, -1, 93, -1, -1, 72, 73, 74, 109, 76,
+ 77, 78, 79, -1, 81, 34, 35, 36, -1, -1,
+ 87, -1, 41, 90, -1, -1, 93, 53, 54, 55,
+ 53, 54, 55, -1, 53, 54, 55, 63, -1, -1,
+ 107, 67, 109, 34, 35, 36, 37, -1, -1, -1,
+ 41, 77, 78, 79, 77, 78, 79, -1, 77, 78,
+ 79, 3, 4, 5, 6, 7, 8, 9, -1, -1,
+ 12, 97, -1, 15, -1, -1, -1, -1, -1, -1,
+ 22, 72, 73, 74, -1, 76, 77, 78, 79, 115,
+ 116, 117, 118, 119, 120, 3, 4, 5, 6, 7,
+ 8, 9, 10, -1, 12, 13, -1, 15, -1, 17,
+ -1, 19, -1, -1, 22, 3, 4, 5, 6, 7,
+ 8, 9, 10, -1, 12, 13, -1, 15, -1, 17,
+ -1, 19, -1, -1, 22, 3, 4, 5, 6, 7,
+ 8, 9, 10, -1, 12, -1, -1, -1, -1, 17,
+ -1, 19, 20, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, -1, -1, -1, -1, 17, -1, 19,
+ 3, 4, 5, 6, 7, 8, 9, 10, -1, 12,
+ -1, -1, -1, -1, 17, 18, 19, 3, 4, 5,
+ 6, 7, 8, 9, 10, -1, 12, 13, -1, -1,
+ -1, 17, -1, 19, 3, 4, 5, 6, 7, 8,
+ 9, 10, -1, 12, 13, -1, -1, -1, 17, -1,
+ 19, 3, 4, 5, 6, 7, 8, 9, 10, -1,
+ 12, -1, -1, -1, -1, 17, -1, 19, 3, 4,
+ 5, 6, 7, 8, 9, 10, -1, 12, -1, -1,
+ -1, -1, 17, -1, 19, 3, 4, 5, 6, 7,
+ 8, 9, -1, -1, 12, 13, 3, 4, 5, 6,
+ 7, 8, 9, -1, -1, 12, 13, 3, 4, 5,
+ 6, 7, 8, 9, -1, -1, 12, 3, 4, 5,
+ 6, 7, 8, 9, -1, -1, 12
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const unsigned char yystos[] =
+{
+ 0, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 17, 19, 24, 25, 26, 29, 33, 34, 35,
+ 39, 42, 49, 26, 33, 26, 33, 26, 33, 3,
+ 5, 6, 29, 33, 3, 5, 6, 7, 25, 27,
+ 28, 29, 18, 25, 40, 41, 48, 20, 25, 48,
+ 50, 51, 0, 3, 5, 6, 13, 15, 22, 26,
+ 33, 36, 37, 38, 43, 44, 46, 47, 33, 28,
+ 28, 28, 3, 5, 6, 28, 29, 3, 5, 6,
+ 28, 16, 18, 21, 20, 21, 13, 31, 37, 43,
+ 31, 37, 43, 31, 37, 43, 27, 25, 14, 31,
+ 32, 32, 14, 30, 30, 31, 30, 16, 30, 31,
+ 30, 27, 41, 51, 33, 38, 47, 38, 47, 38,
+ 47, 31, 32, 36, 27, 45, 36, 46
+};
+
+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
+# define YYSIZE_T __SIZE_TYPE__
+#endif
+#if ! defined (YYSIZE_T) && defined (size_t)
+# define YYSIZE_T size_t
+#endif
+#if ! defined (YYSIZE_T)
+# if defined (__STDC__) || defined (__cplusplus)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# endif
+#endif
+#if ! defined (YYSIZE_T)
+# define YYSIZE_T unsigned int
+#endif
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY (-2)
+#define YYEOF 0
+
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror. This remains here temporarily
+ to ease the transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+
+#define YYFAIL goto yyerrlab
+
+#define YYRECOVERING() (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ yytoken = YYTRANSLATE (yychar); \
+ YYPOPSTACK; \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror ("syntax error: cannot back up");\
+ YYERROR; \
+ } \
+while (0)
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+/* YYLLOC_DEFAULT -- Compute the default location (before the actions
+ are run). */
+
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ ((Current).first_line = (Rhs)[1].first_line, \
+ (Current).first_column = (Rhs)[1].first_column, \
+ (Current).last_line = (Rhs)[N].last_line, \
+ (Current).last_column = (Rhs)[N].last_column)
+#endif
+
+/* YYLEX -- calling `yylex' with the right arguments. */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (&yylval, YYLEX_PARAM)
+#else
+# define YYLEX yylex (&yylval)
+#endif
+
+/* Enable debugging if requested. */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (0)
+
+# define YYDSYMPRINT(Args) \
+do { \
+ if (yydebug) \
+ yysymprint Args; \
+} while (0)
+
+# define YYDSYMPRINTF(Title, Token, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yysymprint (stderr, \
+ Token, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (0)
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_stack_print (short int *bottom, short int *top)
+#else
+static void
+yy_stack_print (bottom, top)
+ short int *bottom;
+ short int *top;
+#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (/* Nothing. */; bottom <= top; ++bottom)
+ YYFPRINTF (stderr, " %d", *bottom);
+ YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (0)
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yy_reduce_print (int yyrule)
+#else
+static void
+yy_reduce_print (yyrule)
+ int yyrule;
+#endif
+{
+ int yyi;
+ unsigned int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
+ yyrule - 1, yylno);
+ /* Print the symbols being reduced, and their result. */
+ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
+ YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
+ YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (Rule); \
+} while (0)
+
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YYDSYMPRINT(Args)
+# define YYDSYMPRINTF(Title, Token, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
+# undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined (__GLIBC__) && defined (_STRING_H)
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+static YYSIZE_T
+# if defined (__STDC__) || defined (__cplusplus)
+yystrlen (const char *yystr)
+# else
+yystrlen (yystr)
+ const char *yystr;
+# endif
+{
+ register const char *yys = yystr;
+
+ while (*yys++ != '\0')
+ continue;
+
+ return yys - yystr - 1;
+}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+static char *
+# if defined (__STDC__) || defined (__cplusplus)
+yystpcpy (char *yydest, const char *yysrc)
+# else
+yystpcpy (yydest, yysrc)
+ char *yydest;
+ const char *yysrc;
+# endif
+{
+ register char *yyd = yydest;
+ register const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+
+#endif /* !YYERROR_VERBOSE */
+
+
+
+#if YYDEBUG
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yysymprint (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE *yyvaluep;
+#endif
+{
+ /* Pacify ``unused variable'' warnings. */
+ (void) yyvaluep;
+
+ if (yytype < YYNTOKENS)
+ {
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+# ifdef YYPRINT
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# endif
+ }
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+ YYFPRINTF (yyoutput, ")");
+}
+
+#endif /* ! YYDEBUG */
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+#if defined (__STDC__) || defined (__cplusplus)
+static void
+yydestruct (int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yytype, yyvaluep)
+ int yytype;
+ YYSTYPE *yyvaluep;
+#endif
+{
+ /* Pacify ``unused variable'' warnings. */
+ (void) yyvaluep;
+
+ switch (yytype)
+ {
+
+ default:
+ break;
+ }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes. */
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM);
+# else
+int yyparse ();
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+
+
+
+/*----------.
+| yyparse. |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+# if defined (__STDC__) || defined (__cplusplus)
+int yyparse (void *YYPARSE_PARAM)
+# else
+int yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+# endif
+#else /* ! YYPARSE_PARAM */
+#if defined (__STDC__) || defined (__cplusplus)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
+{
+ /* The lookahead symbol. */
+int yychar;
+
+/* The semantic value of the lookahead symbol. */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far. */
+int yynerrs;
+
+ register int yystate;
+ register int yyn;
+ int yyresult;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+ /* Lookahead token as an internal (translated) token number. */
+ int yytoken = 0;
+
+ /* Three stacks and their tools:
+ `yyss': related to states,
+ `yyvs': related to semantic values,
+ `yyls': related to locations.
+
+ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ short int yyssa[YYINITDEPTH];
+ short int *yyss = yyssa;
+ register short int *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ register YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK (yyvsp--, yyssp--)
+
+ YYSIZE_T yystacksize = YYINITDEPTH;
+
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+
+ /* When reducing, the number of symbols on the RHS of the reduced
+ rule. */
+ int yylen;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss;
+ yyvsp = yyvs;
+
+
+ goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. so pushing a state here evens the stacks.
+ */
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ short int *yyss1 = yyss;
+
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow ("parser stack overflow",
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+
+ &yystacksize);
+
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+ goto yyoverflowlab;
+# else
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+ goto yyoverflowlab;
+ yystacksize *= 2;
+ if (YYMAXDEPTH < yystacksize)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ short int *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyoverflowlab;
+ YYSTACK_RELOCATE (yyss);
+ YYSTACK_RELOCATE (yyvs);
+
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+# endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+ goto yybackup;
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+
+/* Do appropriate processing given the current state. */
+/* Read a lookahead token if we need one and don't already have one. */
+/* yyresume: */
+
+ /* First try to decide what to do without reference to lookahead token. */
+
+ yyn = yypact[yystate];
+ if (yyn == YYPACT_NINF)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+ yychar = YYLEX;
+ }
+
+ if (yychar <= YYEOF)
+ {
+ yychar = yytoken = YYEOF;
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ yytoken = YYTRANSLATE (yychar);
+ YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
+ }
+
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
+ detect an error, take that action. */
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yyn == 0 || yyn == YYTABLE_NINF)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ /* Shift the lookahead token. */
+ YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
+
+ /* Discard the token being shifted unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ *++yyvsp = yylval;
+
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ `$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+
+ YY_REDUCE_PRINT (yyn);
+ switch (yyn)
+ {
+ case 2:
+#line 57 "gram.y"
+ {
+ ((SyckParser *)parser)->root = syck_hdlr_add_node( (SyckParser *)parser, yyvsp[0].nodeData );
+ }
+ break;
+
+ case 3:
+#line 61 "gram.y"
+ {
+ ((SyckParser *)parser)->root = syck_hdlr_add_node( (SyckParser *)parser, yyvsp[0].nodeData );
+ }
+ break;
+
+ case 4:
+#line 65 "gram.y"
+ {
+ ((SyckParser *)parser)->eof = 1;
+ }
+ break;
+
+ case 8:
+#line 76 "gram.y"
+ {
+ syck_add_transfer( yyvsp[-1].name, yyvsp[0].nodeData, ((SyckParser *)parser)->taguri_expansion );
+ yyval.nodeData = yyvsp[0].nodeData;
+ }
+ break;
+
+ case 9:
+#line 81 "gram.y"
+ {
+ syck_add_transfer( yyvsp[-1].name, yyvsp[0].nodeData, 0 );
+ yyval.nodeData = yyvsp[0].nodeData;
+ }
+ break;
+
+ case 10:
+#line 86 "gram.y"
+ {
+ /*
+ * _Anchors_: The language binding must keep a separate symbol table
+ * for anchors. The actual ID in the symbol table is returned to the
+ * higher nodes, though.
+ */
+ yyval.nodeData = syck_hdlr_add_anchor( (SyckParser *)parser, yyvsp[-1].name, yyvsp[0].nodeData );
+ }
+ break;
+
+ case 11:
+#line 95 "gram.y"
+ {
+ yyval.nodeData = yyvsp[-1].nodeData;
+ }
+ break;
+
+ case 14:
+#line 105 "gram.y"
+ {
+ yyval.nodeData = yyvsp[-1].nodeData;
+ }
+ break;
+
+ case 15:
+#line 109 "gram.y"
+ {
+ NULL_NODE( parser, n );
+ yyval.nodeData = n;
+ }
+ break;
+
+ case 16:
+#line 114 "gram.y"
+ {
+ if ( ((SyckParser *)parser)->implicit_typing == 1 )
+ {
+ try_tag_implicit( yyvsp[0].nodeData, ((SyckParser *)parser)->taguri_expansion );
+ }
+ yyval.nodeData = yyvsp[0].nodeData;
+ }
+ break;
+
+ case 17:
+#line 122 "gram.y"
+ {
+ syck_add_transfer( yyvsp[-1].name, yyvsp[0].nodeData, ((SyckParser *)parser)->taguri_expansion );
+ yyval.nodeData = yyvsp[0].nodeData;
+ }
+ break;
+
+ case 18:
+#line 127 "gram.y"
+ {
+ syck_add_transfer( yyvsp[-1].name, yyvsp[0].nodeData, 0 );
+ yyval.nodeData = yyvsp[0].nodeData;
+ }
+ break;
+
+ case 19:
+#line 132 "gram.y"
+ {
+ /*
+ * _Anchors_: The language binding must keep a separate symbol table
+ * for anchors. The actual ID in the symbol table is returned to the
+ * higher nodes, though.
+ */
+ yyval.nodeData = syck_hdlr_add_anchor( (SyckParser *)parser, yyvsp[-1].name, yyvsp[0].nodeData );
+ }
+ break;
+
+ case 26:
+#line 165 "gram.y"
+ {
+ syck_add_transfer( yyvsp[-1].name, yyvsp[0].nodeData, ((SyckParser *)parser)->taguri_expansion );
+ yyval.nodeData = yyvsp[0].nodeData;
+ }
+ break;
+
+ case 27:
+#line 170 "gram.y"
+ {
+ syck_add_transfer( yyvsp[-1].name, yyvsp[0].nodeData, 0 );
+ yyval.nodeData = yyvsp[0].nodeData;
+ }
+ break;
+
+ case 28:
+#line 175 "gram.y"
+ {
+ if ( ((SyckParser *)parser)->implicit_typing == 1 )
+ {
+ try_tag_implicit( yyvsp[0].nodeData, ((SyckParser *)parser)->taguri_expansion );
+ }
+ yyval.nodeData = yyvsp[0].nodeData;
+ }
+ break;
+
+ case 29:
+#line 183 "gram.y"
+ {
+ yyval.nodeData = syck_hdlr_add_anchor( (SyckParser *)parser, yyvsp[-1].name, yyvsp[0].nodeData );
+ }
+ break;
+
+ case 30:
+#line 187 "gram.y"
+ {
+ /*
+ * _Aliases_: The anchor symbol table is scanned for the anchor name.
+ * The anchor's ID in the language's symbol table is returned.
+ */
+ yyval.nodeData = syck_hdlr_get_anchor( (SyckParser *)parser, yyvsp[0].name );
+ }
+ break;
+
+ case 31:
+#line 195 "gram.y"
+ {
+ SyckNode *n = yyvsp[0].nodeData;
+ if ( ((SyckParser *)parser)->taguri_expansion == 1 )
+ {
+ n->type_id = syck_taguri( YAML_DOMAIN, "str", 3 );
+ }
+ else
+ {
+ n->type_id = syck_strndup( "str", 3 );
+ }
+ yyval.nodeData = n;
+ }
+ break;
+
+ case 33:
+#line 209 "gram.y"
+ {
+ yyval.nodeData = yyvsp[-1].nodeData;
+ }
+ break;
+
+ case 39:
+#line 229 "gram.y"
+ {
+ yyval.nodeData = yyvsp[-1].nodeData;
+ }
+ break;
+
+ case 40:
+#line 233 "gram.y"
+ {
+ yyval.nodeData = yyvsp[-1].nodeData;
+ }
+ break;
+
+ case 41:
+#line 239 "gram.y"
+ {
+ yyval.nodeId = syck_hdlr_add_node( (SyckParser *)parser, yyvsp[0].nodeData );
+ }
+ break;
+
+ case 42:
+#line 245 "gram.y"
+ {
+ syck_add_transfer( yyvsp[-2].name, yyvsp[0].nodeData, ((SyckParser *)parser)->taguri_expansion );
+ yyval.nodeData = yyvsp[0].nodeData;
+ }
+ break;
+
+ case 43:
+#line 250 "gram.y"
+ {
+ syck_add_transfer( yyvsp[-1].name, yyvsp[0].nodeData, ((SyckParser *)parser)->taguri_expansion );
+ yyval.nodeData = yyvsp[0].nodeData;
+ }
+ break;
+
+ case 44:
+#line 255 "gram.y"
+ {
+ syck_add_transfer( yyvsp[-2].name, yyvsp[0].nodeData, 0 );
+ yyval.nodeData = yyvsp[0].nodeData;
+ }
+ break;
+
+ case 45:
+#line 260 "gram.y"
+ {
+ syck_add_transfer( yyvsp[-1].name, yyvsp[0].nodeData, 0 );
+ yyval.nodeData = yyvsp[0].nodeData;
+ }
+ break;
+
+ case 46:
+#line 265 "gram.y"
+ {
+ yyval.nodeData = syck_hdlr_add_anchor( (SyckParser *)parser, yyvsp[-2].name, yyvsp[0].nodeData );
+ }
+ break;
+
+ case 47:
+#line 269 "gram.y"
+ {
+ yyval.nodeData = syck_hdlr_add_anchor( (SyckParser *)parser, yyvsp[-1].name, yyvsp[0].nodeData );
+ }
+ break;
+
+ case 48:
+#line 275 "gram.y"
+ {
+ yyval.nodeData = syck_new_seq( yyvsp[0].nodeId );
+ }
+ break;
+
+ case 49:
+#line 279 "gram.y"
+ {
+ syck_seq_add( yyvsp[-2].nodeData, yyvsp[0].nodeId );
+ yyval.nodeData = yyvsp[-2].nodeData;
+ }
+ break;
+
+ case 50:
+#line 284 "gram.y"
+ {
+ yyval.nodeData = yyvsp[-1].nodeData;
+ }
+ break;
+
+ case 51:
+#line 293 "gram.y"
+ {
+ yyval.nodeData = yyvsp[-1].nodeData;
+ }
+ break;
+
+ case 52:
+#line 297 "gram.y"
+ {
+ yyval.nodeData = syck_alloc_seq();
+ }
+ break;
+
+ case 53:
+#line 303 "gram.y"
+ {
+ yyval.nodeData = syck_new_seq( syck_hdlr_add_node( (SyckParser *)parser, yyvsp[0].nodeData ) );
+ }
+ break;
+
+ case 54:
+#line 307 "gram.y"
+ {
+ syck_seq_add( yyvsp[-2].nodeData, syck_hdlr_add_node( (SyckParser *)parser, yyvsp[0].nodeData ) );
+ yyval.nodeData = yyvsp[-2].nodeData;
+ }
+ break;
+
+ case 57:
+#line 321 "gram.y"
+ {
+ apply_seq_in_map( (SyckParser *)parser, yyvsp[-1].nodeData );
+ yyval.nodeData = yyvsp[-1].nodeData;
+ }
+ break;
+
+ case 58:
+#line 326 "gram.y"
+ {
+ apply_seq_in_map( (SyckParser *)parser, yyvsp[-1].nodeData );
+ yyval.nodeData = yyvsp[-1].nodeData;
+ }
+ break;
+
+ case 59:
+#line 333 "gram.y"
+ {
+ syck_add_transfer( yyvsp[-2].name, yyvsp[0].nodeData, ((SyckParser *)parser)->taguri_expansion );
+ yyval.nodeData = yyvsp[0].nodeData;
+ }
+ break;
+
+ case 60:
+#line 338 "gram.y"
+ {
+ syck_add_transfer( yyvsp[-1].name, yyvsp[0].nodeData, ((SyckParser *)parser)->taguri_expansion );
+ yyval.nodeData = yyvsp[0].nodeData;
+ }
+ break;
+
+ case 61:
+#line 343 "gram.y"
+ {
+ syck_add_transfer( yyvsp[-2].name, yyvsp[0].nodeData, 0 );
+ yyval.nodeData = yyvsp[0].nodeData;
+ }
+ break;
+
+ case 62:
+#line 348 "gram.y"
+ {
+ syck_add_transfer( yyvsp[-1].name, yyvsp[0].nodeData, 0 );
+ yyval.nodeData = yyvsp[0].nodeData;
+ }
+ break;
+
+ case 63:
+#line 353 "gram.y"
+ {
+ yyval.nodeData = syck_hdlr_add_anchor( (SyckParser *)parser, yyvsp[-2].name, yyvsp[0].nodeData );
+ }
+ break;
+
+ case 64:
+#line 357 "gram.y"
+ {
+ yyval.nodeData = syck_hdlr_add_anchor( (SyckParser *)parser, yyvsp[-1].name, yyvsp[0].nodeData );
+ }
+ break;
+
+ case 66:
+#line 364 "gram.y"
+ {
+ yyval.nodeData = yyvsp[-1].nodeData;
+ }
+ break;
+
+ case 68:
+#line 380 "gram.y"
+ {
+ yyval.nodeData = syck_new_map(
+ syck_hdlr_add_node( (SyckParser *)parser, yyvsp[-2].nodeData ),
+ syck_hdlr_add_node( (SyckParser *)parser, yyvsp[0].nodeData ) );
+ }
+ break;
+
+ case 70:
+#line 398 "gram.y"
+ {
+ if ( yyvsp[-2].nodeData->shortcut == NULL )
+ {
+ yyvsp[-2].nodeData->shortcut = syck_new_seq( yyvsp[0].nodeId );
+ }
+ else
+ {
+ syck_seq_add( yyvsp[-2].nodeData->shortcut, yyvsp[0].nodeId );
+ }
+ yyval.nodeData = yyvsp[-2].nodeData;
+ }
+ break;
+
+ case 71:
+#line 410 "gram.y"
+ {
+ apply_seq_in_map( (SyckParser *)parser, yyvsp[-2].nodeData );
+ syck_map_update( yyvsp[-2].nodeData, yyvsp[0].nodeData );
+ syck_free_node( yyvsp[0].nodeData );
+ yyvsp[0].nodeData = NULL;
+ yyval.nodeData = yyvsp[-2].nodeData;
+ }
+ break;
+
+ case 72:
+#line 418 "gram.y"
+ {
+ yyval.nodeData = yyvsp[-1].nodeData;
+ }
+ break;
+
+ case 73:
+#line 427 "gram.y"
+ {
+ yyval.nodeData = syck_new_map(
+ syck_hdlr_add_node( (SyckParser *)parser, yyvsp[-2].nodeData ),
+ syck_hdlr_add_node( (SyckParser *)parser, yyvsp[0].nodeData ) );
+ }
+ break;
+
+ case 74:
+#line 435 "gram.y"
+ {
+ yyval.nodeData = yyvsp[-1].nodeData;
+ }
+ break;
+
+ case 75:
+#line 439 "gram.y"
+ {
+ yyval.nodeData = syck_alloc_map();
+ }
+ break;
+
+ case 77:
+#line 446 "gram.y"
+ {
+ syck_map_update( yyvsp[-2].nodeData, yyvsp[0].nodeData );
+ syck_free_node( yyvsp[0].nodeData );
+ yyvsp[0].nodeData = NULL;
+ yyval.nodeData = yyvsp[-2].nodeData;
+ }
+ break;
+
+ case 78:
+#line 455 "gram.y"
+ {
+ NULL_NODE( parser, n );
+ yyval.nodeData = syck_new_map(
+ syck_hdlr_add_node( (SyckParser *)parser, yyvsp[0].nodeData ),
+ syck_hdlr_add_node( (SyckParser *)parser, n ) );
+ }
+ break;
+
+
+ }
+
+/* Line 1010 of yacc.c. */
+#line 1651 "gram.c"
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+
+
+ YY_STACK_PRINT (yyss, yyssp);
+
+ *++yyvsp = yyval;
+
+
+ /* Now `shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTOKENS];
+
+ goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+#if YYERROR_VERBOSE
+ yyn = yypact[yystate];
+
+ if (YYPACT_NINF < yyn && yyn < YYLAST)
+ {
+ YYSIZE_T yysize = 0;
+ int yytype = YYTRANSLATE (yychar);
+ const char* yyprefix;
+ char *yymsg;
+ int yyx;
+
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yycount = 0;
+
+ yyprefix = ", expecting ";
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+ {
+ yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
+ yycount += 1;
+ if (yycount == 5)
+ {
+ yysize = 0;
+ break;
+ }
+ }
+ yysize += (sizeof ("syntax error, unexpected ")
+ + yystrlen (yytname[yytype]));
+ yymsg = (char *) YYSTACK_ALLOC (yysize);
+ if (yymsg != 0)
+ {
+ char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
+ yyp = yystpcpy (yyp, yytname[yytype]);
+
+ if (yycount < 5)
+ {
+ yyprefix = ", expecting ";
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+ {
+ yyp = yystpcpy (yyp, yyprefix);
+ yyp = yystpcpy (yyp, yytname[yyx]);
+ yyprefix = " or ";
+ }
+ }
+ yyerror (yymsg);
+ YYSTACK_FREE (yymsg);
+ }
+ else
+ yyerror ("syntax error; also virtual memory exhausted");
+ }
+ else
+#endif /* YYERROR_VERBOSE */
+ yyerror ("syntax error");
+ }
+
+
+
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse lookahead token after an
+ error, discard it. */
+
+ if (yychar <= YYEOF)
+ {
+ /* If at end of input, pop the error token,
+ then the rest of the stack, then return failure. */
+ if (yychar == YYEOF)
+ for (;;)
+ {
+ YYPOPSTACK;
+ if (yyssp == yyss)
+ YYABORT;
+ YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+ yydestruct (yystos[*yyssp], yyvsp);
+ }
+ }
+ else
+ {
+ YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
+ yydestruct (yytoken, &yylval);
+ yychar = YYEMPTY;
+
+ }
+ }
+
+ /* Else will try to reuse lookahead token after shifting the error
+ token. */
+ goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR. |
+`---------------------------------------------------*/
+yyerrorlab:
+
+#ifdef __GNUC__
+ /* Pacify GCC when the user code never invokes YYERROR and the label
+ yyerrorlab therefore never appears in user code. */
+ if (0)
+ goto yyerrorlab;
+#endif
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+ yystate = *yyssp;
+ goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR. |
+`-------------------------------------------------------------*/
+yyerrlab1:
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
+
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (yyn != YYPACT_NINF)
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+
+ /* Pop the current state because it cannot handle the error token. */
+ if (yyssp == yyss)
+ YYABORT;
+
+ YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
+ yydestruct (yystos[yystate], yyvsp);
+ YYPOPSTACK;
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
+ }
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ YYDPRINTF ((stderr, "Shifting error token, "));
+
+ *++yyvsp = yylval;
+
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+#ifndef yyoverflow
+/*----------------------------------------------.
+| yyoverflowlab -- parser overflow comes here. |
+`----------------------------------------------*/
+yyoverflowlab:
+ yyerror ("parser stack overflow");
+ yyresult = 2;
+ /* Fall through. */
+#endif
+
+yyreturn:
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+ return yyresult;
+}
+
+
+#line 464 "gram.y"
+
+
+void
+apply_seq_in_map( SyckParser *parser, SyckNode *n )
+{
+ long map_len;
+ if ( n->shortcut == NULL )
+ {
+ return;
+ }
+
+ map_len = syck_map_count( n );
+ syck_map_assign( n, map_value, map_len - 1,
+ syck_hdlr_add_node( parser, n->shortcut ) );
+
+ n->shortcut = NULL;
+}
+
+
diff --git a/ext/syck/gram.h b/ext/syck/gram.h
new file mode 100644
index 0000000000..547149ab4b
--- /dev/null
+++ b/ext/syck/gram.h
@@ -0,0 +1,79 @@
+/* A Bison parser, made by GNU Bison 1.875d. */
+
+/* Skeleton parser for Yacc-like parsing with Bison,
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* As a special exception, when this file is copied by Bison into a
+ Bison output file, you may use that output file without restriction.
+ This special exception was added by the Free Software Foundation
+ in version 1.24 of Bison. */
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ YAML_ANCHOR = 258,
+ YAML_ALIAS = 259,
+ YAML_TRANSFER = 260,
+ YAML_TAGURI = 261,
+ YAML_ITRANSFER = 262,
+ YAML_WORD = 263,
+ YAML_PLAIN = 264,
+ YAML_BLOCK = 265,
+ YAML_DOCSEP = 266,
+ YAML_IOPEN = 267,
+ YAML_INDENT = 268,
+ YAML_IEND = 269
+ };
+#endif
+#define YAML_ANCHOR 258
+#define YAML_ALIAS 259
+#define YAML_TRANSFER 260
+#define YAML_TAGURI 261
+#define YAML_ITRANSFER 262
+#define YAML_WORD 263
+#define YAML_PLAIN 264
+#define YAML_BLOCK 265
+#define YAML_DOCSEP 266
+#define YAML_IOPEN 267
+#define YAML_INDENT 268
+#define YAML_IEND 269
+
+
+
+
+#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
+#line 35 "gram.y"
+typedef union YYSTYPE {
+ SYMID nodeId;
+ SyckNode *nodeData;
+ char *name;
+} YYSTYPE;
+/* Line 1285 of yacc.c. */
+#line 71 "gram.h"
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+
+
diff --git a/ext/syck/handler.c b/ext/syck/handler.c
new file mode 100644
index 0000000000..40f5ef27d0
--- /dev/null
+++ b/ext/syck/handler.c
@@ -0,0 +1,173 @@
+/*
+ * handler.c
+ *
+ * $Author$
+ *
+ * Copyright (C) 2003 why the lucky stiff
+ */
+
+#include "ruby/ruby.h"
+#include "syck.h"
+
+SYMID
+syck_hdlr_add_node( SyckParser *p, SyckNode *n )
+{
+ SYMID id;
+
+ if ( ! n->id )
+ {
+ n->id = (p->handler)( p, n );
+ }
+ id = n->id;
+
+ if ( n->anchor == NULL )
+ {
+ syck_free_node( n );
+ }
+ return id;
+}
+
+SyckNode *
+syck_hdlr_add_anchor( SyckParser *p, char *a, SyckNode *n )
+{
+ SyckNode *ntmp = NULL;
+
+ n->anchor = a;
+ if ( p->bad_anchors != NULL )
+ {
+ SyckNode *bad;
+ if ( st_lookup( p->bad_anchors, (st_data_t)a, (void *)&bad ) )
+ {
+ if ( n->kind != syck_str_kind )
+ {
+ n->id = bad->id;
+ (p->handler)( p, n );
+ }
+ }
+ }
+ if ( p->anchors == NULL )
+ {
+ p->anchors = st_init_strtable();
+ }
+ if ( st_lookup( p->anchors, (st_data_t)a, (void *)&ntmp ) )
+ {
+ if ( ntmp != (void *)1 )
+ {
+ syck_free_node( ntmp );
+ }
+ }
+ st_insert( p->anchors, (st_data_t)a, (st_data_t)n );
+ return n;
+}
+
+void
+syck_hdlr_remove_anchor( SyckParser *p, char *a )
+{
+ char *atmp = a;
+ SyckNode *ntmp;
+ if ( p->anchors == NULL )
+ {
+ p->anchors = st_init_strtable();
+ }
+ if ( st_delete( p->anchors, (void *)&atmp, (void *)&ntmp ) )
+ {
+ if ( ntmp != (void *)1 )
+ {
+ syck_free_node( ntmp );
+ }
+ }
+ st_insert( p->anchors, (st_data_t)a, (st_data_t)1 );
+}
+
+SyckNode *
+syck_hdlr_get_anchor( SyckParser *p, char *a )
+{
+ SyckNode *n = NULL;
+
+ if ( p->anchors != NULL )
+ {
+ if ( st_lookup( p->anchors, (st_data_t)a, (void *)&n ) )
+ {
+ if ( n != (void *)1 )
+ {
+ S_FREE( a );
+ return n;
+ }
+ else
+ {
+ if ( p->bad_anchors == NULL )
+ {
+ p->bad_anchors = st_init_strtable();
+ }
+ if ( ! st_lookup( p->bad_anchors, (st_data_t)a, (void *)&n ) )
+ {
+ n = (p->bad_anchor_handler)( p, a );
+ st_insert( p->bad_anchors, (st_data_t)a, (st_data_t)n );
+ }
+ }
+ }
+ }
+
+ if ( n == NULL )
+ {
+ n = (p->bad_anchor_handler)( p, a );
+ }
+
+ if ( n->anchor )
+ {
+ S_FREE( a );
+ }
+ else
+ {
+ n->anchor = a;
+ }
+
+ return n;
+}
+
+void
+syck_add_transfer( char *uri, SyckNode *n, int taguri )
+{
+ if ( n->type_id != NULL )
+ {
+ S_FREE( n->type_id );
+ }
+
+ if ( taguri == 0 )
+ {
+ n->type_id = uri;
+ return;
+ }
+
+ n->type_id = syck_type_id_to_uri( uri );
+ S_FREE( uri );
+}
+
+char *
+syck_xprivate( const char *type_id, int type_len )
+{
+ char *uri = S_ALLOC_N( char, type_len + 14 );
+ uri[0] = '\0';
+ strcat( uri, "x-private:" );
+ strncat( uri, type_id, type_len );
+ return uri;
+}
+
+char *
+syck_taguri( const char *domain, const char *type_id, int type_len )
+{
+ char *uri = S_ALLOC_N( char, strlen( domain ) + type_len + 14 );
+ uri[0] = '\0';
+ strcat( uri, "tag:" );
+ strcat( uri, domain );
+ strcat( uri, ":" );
+ strncat( uri, type_id, type_len );
+ return uri;
+}
+
+int
+syck_try_implicit( SyckNode *n )
+{
+ return 1;
+}
+
diff --git a/ext/syck/implicit.c b/ext/syck/implicit.c
new file mode 100644
index 0000000000..6911e6175d
--- /dev/null
+++ b/ext/syck/implicit.c
@@ -0,0 +1,2990 @@
+/* Generated by re2c 0.9.10 on Mon Sep 19 21:46:50 2005 */
+#line 1 "implicit.re"
+/*
+ * implicit.re
+ *
+ * $Author$
+ *
+ * Copyright (C) 2003 why the lucky stiff
+ */
+
+#include "ruby/ruby.h"
+#include "syck.h"
+
+#define YYCTYPE char
+#define YYCURSOR cursor
+#define YYMARKER marker
+#define YYLIMIT limit
+#define YYFILL(n) (void)0
+
+void
+try_tag_implicit( SyckNode *n, int taguri )
+{
+ const char *tid = "";
+ switch ( n->kind )
+ {
+ case syck_str_kind:
+ tid = syck_match_implicit( n->data.str->ptr, n->data.str->len );
+ break;
+
+ case syck_seq_kind:
+ tid = "seq";
+ break;
+
+ case syck_map_kind:
+ tid = "map";
+ break;
+ }
+ if ( n->type_id != NULL ) S_FREE( n->type_id );
+ if ( taguri == 1 )
+ {
+ n->type_id = syck_taguri( YAML_DOMAIN, tid, (int)strlen( tid ) );
+ } else {
+ n->type_id = syck_strndup( tid, (int)strlen( tid ) );
+ }
+}
+
+const char *
+syck_match_implicit( const char *str, size_t len )
+{
+ const char *cursor, *limit, *marker = 0;
+ cursor = str;
+ limit = str + len;
+
+
+#line 55 "<stdout>"
+{
+ YYCTYPE yych;
+ unsigned int yyaccept;
+ goto yy0;
+ ++YYCURSOR;
+yy0:
+ if((YYLIMIT - YYCURSOR) < 26) YYFILL(26);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy6;
+ case '+': goto yy16;
+ case '-': goto yy17;
+ case '.': goto yy20;
+ case '0': goto yy18;
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy19;
+ case '<': goto yy22;
+ case '=': goto yy21;
+ case 'F': goto yy15;
+ case 'N': goto yy5;
+ case 'O': goto yy13;
+ case 'T': goto yy11;
+ case 'Y': goto yy9;
+ case 'f': goto yy14;
+ case 'n': goto yy4;
+ case 'o': goto yy12;
+ case 't': goto yy10;
+ case 'y': goto yy8;
+ case '~': goto yy2;
+ default: goto yy23;
+ }
+yy2: ++YYCURSOR;
+ if((yych = *YYCURSOR) <= 0x00) goto yy6;
+ goto yy3;
+yy3:
+#line 123 "implicit.re"
+{ return "str"; }
+#line 100 "<stdout>"
+yy4: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 'o': goto yy172;
+ case 'u': goto yy200;
+ default: goto yy3;
+ }
+yy5: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 'O': case 'o': goto yy172;
+ case 'U': goto yy195;
+ case 'u': goto yy196;
+ default: goto yy3;
+ }
+yy6: ++YYCURSOR;
+ goto yy7;
+yy7:
+#line 85 "implicit.re"
+{ return "null"; }
+#line 121 "<stdout>"
+yy8: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 'e': goto yy194;
+ default: goto yy3;
+ }
+yy9: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 'E': goto yy192;
+ case 'e': goto yy193;
+ default: goto yy3;
+ }
+yy10: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 'r': goto yy190;
+ default: goto yy3;
+ }
+yy11: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 'R': goto yy186;
+ case 'r': goto yy187;
+ default: goto yy3;
+ }
+yy12: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 'f': goto yy185;
+ case 'n': goto yy182;
+ default: goto yy3;
+ }
+yy13: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 'F': goto yy180;
+ case 'N': case 'n': goto yy182;
+ case 'f': goto yy181;
+ default: goto yy3;
+ }
+yy14: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 'a': goto yy177;
+ default: goto yy3;
+ }
+yy15: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 'A': goto yy168;
+ case 'a': goto yy169;
+ default: goto yy3;
+ }
+yy16: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case '.': goto yy167;
+ case '0': goto yy158;
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy47;
+ default: goto yy3;
+ }
+yy17: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case '.': goto yy157;
+ case '0': goto yy158;
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy47;
+ default: goto yy3;
+ }
+yy18: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 0x00: goto yy52;
+ case ',': goto yy142;
+ case '.': goto yy50;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7': goto yy140;
+ case '8':
+ case '9': goto yy141;
+ case ':': goto yy49;
+ case 'x': goto yy144;
+ default: goto yy3;
+ }
+yy19: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 0x00: goto yy52;
+ case ',': goto yy47;
+ case '.': goto yy50;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy46;
+ case ':': goto yy49;
+ default: goto yy3;
+ }
+yy20: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 'I': goto yy33;
+ case 'N': goto yy31;
+ case 'i': goto yy32;
+ case 'n': goto yy30;
+ default: goto yy3;
+ }
+yy21: yych = *++YYCURSOR;
+ if(yych <= 0x00) goto yy28;
+ goto yy3;
+yy22: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case '<': goto yy24;
+ default: goto yy3;
+ }
+yy23: yych = *++YYCURSOR;
+ goto yy3;
+yy24: yych = *++YYCURSOR;
+ if(yych <= 0x00) goto yy26;
+ goto yy25;
+yy25: YYCURSOR = YYMARKER;
+ switch(yyaccept){
+ case 0: goto yy3;
+ }
+yy26: ++YYCURSOR;
+ goto yy27;
+yy27:
+#line 121 "implicit.re"
+{ return "merge"; }
+#line 279 "<stdout>"
+yy28: ++YYCURSOR;
+ goto yy29;
+yy29:
+#line 119 "implicit.re"
+{ return "default"; }
+#line 285 "<stdout>"
+yy30: yych = *++YYCURSOR;
+ switch(yych){
+ case 'a': goto yy45;
+ default: goto yy25;
+ }
+yy31: yych = *++YYCURSOR;
+ switch(yych){
+ case 'A': goto yy40;
+ case 'a': goto yy41;
+ default: goto yy25;
+ }
+yy32: yych = *++YYCURSOR;
+ switch(yych){
+ case 'n': goto yy39;
+ default: goto yy25;
+ }
+yy33: yych = *++YYCURSOR;
+ switch(yych){
+ case 'N': goto yy34;
+ case 'n': goto yy35;
+ default: goto yy25;
+ }
+yy34: yych = *++YYCURSOR;
+ switch(yych){
+ case 'F': goto yy36;
+ default: goto yy25;
+ }
+yy35: yych = *++YYCURSOR;
+ switch(yych){
+ case 'f': goto yy36;
+ default: goto yy25;
+ }
+yy36: yych = *++YYCURSOR;
+ if(yych >= 0x01) goto yy25;
+ goto yy37;
+yy37: ++YYCURSOR;
+ goto yy38;
+yy38:
+#line 105 "implicit.re"
+{ return "float#inf"; }
+#line 326 "<stdout>"
+yy39: yych = *++YYCURSOR;
+ switch(yych){
+ case 'f': goto yy36;
+ default: goto yy25;
+ }
+yy40: yych = *++YYCURSOR;
+ switch(yych){
+ case 'N': goto yy42;
+ default: goto yy25;
+ }
+yy41: yych = *++YYCURSOR;
+ switch(yych){
+ case 'N': goto yy42;
+ default: goto yy25;
+ }
+yy42: yych = *++YYCURSOR;
+ if(yych >= 0x01) goto yy25;
+ goto yy43;
+yy43: ++YYCURSOR;
+ goto yy44;
+yy44:
+#line 109 "implicit.re"
+{ return "float#nan"; }
+#line 350 "<stdout>"
+yy45: yych = *++YYCURSOR;
+ switch(yych){
+ case 'n': goto yy42;
+ default: goto yy25;
+ }
+yy46: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy74;
+ default: goto yy48;
+ }
+yy47: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy48;
+yy48: switch(yych){
+ case 0x00: goto yy52;
+ case ',': case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy47;
+ case '.': goto yy50;
+ case ':': goto yy49;
+ default: goto yy25;
+ }
+yy49: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5': goto yy66;
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy67;
+ default: goto yy25;
+ }
+yy50: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+ goto yy51;
+yy51: switch(yych){
+ case 0x00: goto yy56;
+ case ',': goto yy54;
+ case '.': goto yy58;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy50;
+ case 'E': case 'e': goto yy60;
+ default: goto yy25;
+ }
+yy52: ++YYCURSOR;
+ goto yy53;
+yy53:
+#line 97 "implicit.re"
+{ return "int"; }
+#line 432 "<stdout>"
+yy54: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy55;
+yy55: switch(yych){
+ case 0x00: goto yy56;
+ case ',': case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy54;
+ default: goto yy25;
+ }
+yy56: ++YYCURSOR;
+ goto yy57;
+yy57:
+#line 99 "implicit.re"
+{ return "float#fix"; }
+#line 456 "<stdout>"
+yy58: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+ goto yy59;
+yy59: switch(yych){
+ case '.': case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy58;
+ case 'E': case 'e': goto yy60;
+ default: goto yy25;
+ }
+yy60: yych = *++YYCURSOR;
+ switch(yych){
+ case '+': case '-': goto yy61;
+ default: goto yy25;
+ }
+yy61: yych = *++YYCURSOR;
+ if(yych <= 0x00) goto yy25;
+ goto yy63;
+yy62: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy63;
+yy63: switch(yych){
+ case 0x00: goto yy64;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy62;
+ default: goto yy25;
+ }
+yy64: ++YYCURSOR;
+ goto yy65;
+yy65:
+#line 101 "implicit.re"
+{ return "float#exp"; }
+#line 506 "<stdout>"
+yy66: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy70;
+ case '.': goto yy68;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy67;
+ case ':': goto yy49;
+ default: goto yy25;
+ }
+yy67: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy70;
+ case '.': goto yy68;
+ case ':': goto yy49;
+ default: goto yy25;
+ }
+yy68: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy69;
+yy69: switch(yych){
+ case 0x00: goto yy72;
+ case ',': case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy68;
+ default: goto yy25;
+ }
+yy70: ++YYCURSOR;
+ goto yy71;
+yy71:
+#line 95 "implicit.re"
+{ return "int#base60"; }
+#line 558 "<stdout>"
+yy72: ++YYCURSOR;
+ goto yy73;
+yy73:
+#line 103 "implicit.re"
+{ return "float#base60"; }
+#line 564 "<stdout>"
+yy74: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy75;
+ default: goto yy48;
+ }
+yy75: yych = *++YYCURSOR;
+ switch(yych){
+ case '-': goto yy76;
+ default: goto yy48;
+ }
+yy76: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy77;
+ default: goto yy25;
+ }
+yy77: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy78;
+ default: goto yy25;
+ }
+yy78: yych = *++YYCURSOR;
+ switch(yych){
+ case '-': goto yy79;
+ default: goto yy25;
+ }
+yy79: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy80;
+ default: goto yy25;
+ }
+yy80: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy81;
+ default: goto yy25;
+ }
+yy81: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy82;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy25;
+ case 'T': goto yy84;
+ case 't': goto yy85;
+ default: goto yy87;
+ }
+yy82: ++YYCURSOR;
+ goto yy83;
+yy83:
+#line 111 "implicit.re"
+{ return "timestamp#ymd"; }
+#line 667 "<stdout>"
+yy84: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy126;
+ default: goto yy25;
+ }
+yy85: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy108;
+ default: goto yy25;
+ }
+yy86: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
+ yych = *YYCURSOR;
+ goto yy87;
+yy87: switch(yych){
+ case 0x09: case ' ': goto yy86;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy88;
+ default: goto yy25;
+ }
+yy88: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy89;
+ default: goto yy25;
+ }
+yy89: yych = *++YYCURSOR;
+ switch(yych){
+ case ':': goto yy90;
+ default: goto yy25;
+ }
+yy90: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy91;
+ default: goto yy25;
+ }
+yy91: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy92;
+ default: goto yy25;
+ }
+yy92: yych = *++YYCURSOR;
+ switch(yych){
+ case ':': goto yy93;
+ default: goto yy25;
+ }
+yy93: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy94;
+ default: goto yy25;
+ }
+yy94: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy95;
+ default: goto yy25;
+ }
+yy95: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x09: case ' ': goto yy98;
+ case '.': goto yy96;
+ default: goto yy25;
+ }
+yy96: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy97;
+yy97: switch(yych){
+ case 0x09: case ' ': goto yy98;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy96;
+ default: goto yy25;
+ }
+yy98: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
+ yych = *YYCURSOR;
+ goto yy99;
+yy99: switch(yych){
+ case 0x09: case ' ': goto yy98;
+ case '+': case '-': goto yy101;
+ case 'Z': goto yy100;
+ default: goto yy25;
+ }
+yy100: yych = *++YYCURSOR;
+ if(yych <= 0x00) goto yy105;
+ goto yy25;
+yy101: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy102;
+ default: goto yy25;
+ }
+yy102: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy103;
+ default: goto yy25;
+ }
+yy103: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy105;
+ case ':': goto yy104;
+ default: goto yy25;
+ }
+yy104: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy107;
+ default: goto yy25;
+ }
+yy105: ++YYCURSOR;
+ goto yy106;
+yy106:
+#line 115 "implicit.re"
+{ return "timestamp#spaced"; }
+#line 884 "<stdout>"
+yy107: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy100;
+ default: goto yy25;
+ }
+yy108: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy109;
+ default: goto yy25;
+ }
+yy109: yych = *++YYCURSOR;
+ switch(yych){
+ case ':': goto yy110;
+ default: goto yy25;
+ }
+yy110: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy111;
+ default: goto yy25;
+ }
+yy111: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy112;
+ default: goto yy25;
+ }
+yy112: yych = *++YYCURSOR;
+ switch(yych){
+ case ':': goto yy113;
+ default: goto yy25;
+ }
+yy113: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy114;
+ default: goto yy25;
+ }
+yy114: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy115;
+ default: goto yy25;
+ }
+yy115: yych = *++YYCURSOR;
+ switch(yych){
+ case '.': goto yy116;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy25;
+ default: goto yy117;
+ }
+yy116: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
+ yych = *YYCURSOR;
+ goto yy117;
+yy117: switch(yych){
+ case '+': case '-': goto yy119;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy116;
+ case 'Z': goto yy118;
+ default: goto yy25;
+ }
+yy118: yych = *++YYCURSOR;
+ if(yych <= 0x00) goto yy123;
+ goto yy25;
+yy119: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy120;
+ default: goto yy25;
+ }
+yy120: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy121;
+ default: goto yy25;
+ }
+yy121: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy123;
+ case ':': goto yy122;
+ default: goto yy25;
+ }
+yy122: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy125;
+ default: goto yy25;
+ }
+yy123: ++YYCURSOR;
+ goto yy124;
+yy124:
+#line 113 "implicit.re"
+{ return "timestamp#iso8601"; }
+#line 1069 "<stdout>"
+yy125: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy118;
+ default: goto yy25;
+ }
+yy126: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy127;
+ default: goto yy25;
+ }
+yy127: yych = *++YYCURSOR;
+ switch(yych){
+ case ':': goto yy128;
+ default: goto yy25;
+ }
+yy128: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy129;
+ default: goto yy25;
+ }
+yy129: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy130;
+ default: goto yy25;
+ }
+yy130: yych = *++YYCURSOR;
+ switch(yych){
+ case ':': goto yy131;
+ default: goto yy25;
+ }
+yy131: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy132;
+ default: goto yy25;
+ }
+yy132: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy133;
+ default: goto yy25;
+ }
+yy133: yych = *++YYCURSOR;
+ switch(yych){
+ case '.': goto yy134;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy25;
+ case 'Z': goto yy136;
+ default: goto yy135;
+ }
+yy134: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
+ yych = *YYCURSOR;
+ goto yy135;
+yy135: switch(yych){
+ case '+': case '-': goto yy119;
+ case '0': goto yy134;
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy138;
+ case 'Z': goto yy118;
+ default: goto yy25;
+ }
+yy136: yych = *++YYCURSOR;
+ if(yych >= 0x01) goto yy25;
+ goto yy137;
+yy137: yych = *++YYCURSOR;
+ goto yy124;
+yy138: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
+ yych = *YYCURSOR;
+ goto yy139;
+yy139: switch(yych){
+ case '+': case '-': goto yy119;
+ case '0': goto yy134;
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy138;
+ case 'Z': goto yy136;
+ default: goto yy25;
+ }
+yy140: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7': goto yy155;
+ case '8':
+ case '9': goto yy153;
+ default: goto yy143;
+ }
+yy141: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy153;
+ default: goto yy152;
+ }
+yy142: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy143;
+yy143: switch(yych){
+ case 0x00: goto yy149;
+ case ',': case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7': goto yy142;
+ case '.': goto yy50;
+ case '8':
+ case '9': goto yy151;
+ case ':': goto yy49;
+ default: goto yy25;
+ }
+yy144: yych = *++YYCURSOR;
+ if(yych <= 0x00) goto yy25;
+ goto yy146;
+yy145: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy146;
+yy146: switch(yych){
+ case 0x00: goto yy147;
+ case ',': case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f': goto yy145;
+ default: goto yy25;
+ }
+yy147: ++YYCURSOR;
+ goto yy148;
+yy148:
+#line 91 "implicit.re"
+{ return "int#hex"; }
+#line 1307 "<stdout>"
+yy149: ++YYCURSOR;
+ goto yy150;
+yy150:
+#line 93 "implicit.re"
+{ return "int#oct"; }
+#line 1313 "<stdout>"
+yy151: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy152;
+yy152: switch(yych){
+ case ',': case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy151;
+ case '.': goto yy50;
+ case ':': goto yy49;
+ default: goto yy25;
+ }
+yy153: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy154;
+ default: goto yy152;
+ }
+yy154: yych = *++YYCURSOR;
+ switch(yych){
+ case '-': goto yy76;
+ default: goto yy152;
+ }
+yy155: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7': goto yy156;
+ case '8':
+ case '9': goto yy154;
+ default: goto yy143;
+ }
+yy156: yych = *++YYCURSOR;
+ switch(yych){
+ case '-': goto yy76;
+ default: goto yy143;
+ }
+yy157: yych = *++YYCURSOR;
+ switch(yych){
+ case 'I': goto yy160;
+ case 'i': goto yy159;
+ default: goto yy25;
+ }
+yy158: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy52;
+ case 'x': goto yy144;
+ default: goto yy143;
+ }
+yy159: yych = *++YYCURSOR;
+ switch(yych){
+ case 'n': goto yy166;
+ default: goto yy25;
+ }
+yy160: yych = *++YYCURSOR;
+ switch(yych){
+ case 'N': goto yy161;
+ case 'n': goto yy162;
+ default: goto yy25;
+ }
+yy161: yych = *++YYCURSOR;
+ switch(yych){
+ case 'F': goto yy163;
+ default: goto yy25;
+ }
+yy162: yych = *++YYCURSOR;
+ switch(yych){
+ case 'f': goto yy163;
+ default: goto yy25;
+ }
+yy163: yych = *++YYCURSOR;
+ if(yych >= 0x01) goto yy25;
+ goto yy164;
+yy164: ++YYCURSOR;
+ goto yy165;
+yy165:
+#line 107 "implicit.re"
+{ return "float#neginf"; }
+#line 1412 "<stdout>"
+yy166: yych = *++YYCURSOR;
+ switch(yych){
+ case 'f': goto yy163;
+ default: goto yy25;
+ }
+yy167: yych = *++YYCURSOR;
+ switch(yych){
+ case 'I': goto yy33;
+ case 'i': goto yy32;
+ default: goto yy25;
+ }
+yy168: yych = *++YYCURSOR;
+ switch(yych){
+ case 'L': goto yy175;
+ default: goto yy25;
+ }
+yy169: yych = *++YYCURSOR;
+ switch(yych){
+ case 'l': goto yy170;
+ default: goto yy25;
+ }
+yy170: yych = *++YYCURSOR;
+ switch(yych){
+ case 's': goto yy171;
+ default: goto yy25;
+ }
+yy171: yych = *++YYCURSOR;
+ switch(yych){
+ case 'e': goto yy172;
+ default: goto yy25;
+ }
+yy172: yych = *++YYCURSOR;
+ if(yych >= 0x01) goto yy25;
+ goto yy173;
+yy173: ++YYCURSOR;
+ goto yy174;
+yy174:
+#line 89 "implicit.re"
+{ return "bool#no"; }
+#line 1452 "<stdout>"
+yy175: yych = *++YYCURSOR;
+ switch(yych){
+ case 'S': goto yy176;
+ default: goto yy25;
+ }
+yy176: yych = *++YYCURSOR;
+ switch(yych){
+ case 'E': goto yy172;
+ default: goto yy25;
+ }
+yy177: yych = *++YYCURSOR;
+ switch(yych){
+ case 'l': goto yy178;
+ default: goto yy25;
+ }
+yy178: yych = *++YYCURSOR;
+ switch(yych){
+ case 's': goto yy179;
+ default: goto yy25;
+ }
+yy179: yych = *++YYCURSOR;
+ switch(yych){
+ case 'e': goto yy172;
+ default: goto yy25;
+ }
+yy180: yych = *++YYCURSOR;
+ switch(yych){
+ case 'F': goto yy172;
+ default: goto yy25;
+ }
+yy181: yych = *++YYCURSOR;
+ switch(yych){
+ case 'f': goto yy172;
+ default: goto yy25;
+ }
+yy182: yych = *++YYCURSOR;
+ if(yych >= 0x01) goto yy25;
+ goto yy183;
+yy183: ++YYCURSOR;
+ goto yy184;
+yy184:
+#line 87 "implicit.re"
+{ return "bool#yes"; }
+#line 1496 "<stdout>"
+yy185: yych = *++YYCURSOR;
+ switch(yych){
+ case 'f': goto yy172;
+ default: goto yy25;
+ }
+yy186: yych = *++YYCURSOR;
+ switch(yych){
+ case 'U': goto yy189;
+ default: goto yy25;
+ }
+yy187: yych = *++YYCURSOR;
+ switch(yych){
+ case 'u': goto yy188;
+ default: goto yy25;
+ }
+yy188: yych = *++YYCURSOR;
+ switch(yych){
+ case 'e': goto yy182;
+ default: goto yy25;
+ }
+yy189: yych = *++YYCURSOR;
+ switch(yych){
+ case 'E': goto yy182;
+ default: goto yy25;
+ }
+yy190: yych = *++YYCURSOR;
+ switch(yych){
+ case 'u': goto yy191;
+ default: goto yy25;
+ }
+yy191: yych = *++YYCURSOR;
+ switch(yych){
+ case 'e': goto yy182;
+ default: goto yy25;
+ }
+yy192: yych = *++YYCURSOR;
+ switch(yych){
+ case 'S': goto yy182;
+ default: goto yy25;
+ }
+yy193: yych = *++YYCURSOR;
+ switch(yych){
+ case 's': goto yy182;
+ default: goto yy25;
+ }
+yy194: yych = *++YYCURSOR;
+ switch(yych){
+ case 's': goto yy182;
+ default: goto yy25;
+ }
+yy195: yych = *++YYCURSOR;
+ switch(yych){
+ case 'L': goto yy199;
+ default: goto yy25;
+ }
+yy196: yych = *++YYCURSOR;
+ switch(yych){
+ case 'l': goto yy197;
+ default: goto yy25;
+ }
+yy197: yych = *++YYCURSOR;
+ switch(yych){
+ case 'l': goto yy198;
+ default: goto yy25;
+ }
+yy198: yych = *++YYCURSOR;
+ if(yych <= 0x00) goto yy6;
+ goto yy25;
+yy199: yych = *++YYCURSOR;
+ switch(yych){
+ case 'L': goto yy198;
+ default: goto yy25;
+ }
+yy200: yych = *++YYCURSOR;
+ switch(yych){
+ case 'l': goto yy201;
+ default: goto yy25;
+ }
+yy201: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case 'l': goto yy198;
+ default: goto yy25;
+ }
+}
+#line 125 "implicit.re"
+
+
+}
+
+/* Remove ending fragment and compare types */
+int
+syck_tagcmp( const char *tag1, const char *tag2 )
+{
+ if ( tag1 == tag2 ) return 1;
+ if ( tag1 == NULL || tag2 == NULL ) return 0;
+ else {
+ int i;
+ char *othorpe;
+ char *tmp1 = syck_strndup( tag1, strlen( tag1 ) );
+ char *tmp2 = syck_strndup( tag2, strlen( tag2 ) );
+ othorpe = strstr( tmp1, "#" );
+ if ( othorpe != NULL ) {
+ othorpe[0] = '\0';
+ }
+ othorpe = strstr( tmp2, "#" );
+ if ( othorpe != NULL ) {
+ othorpe[0] = '\0';
+ }
+ i = strcmp( tmp1, tmp2 );
+ S_FREE( tmp1 ); S_FREE( tmp2 );
+ return i;
+ }
+}
+
+char *
+syck_type_id_to_uri( const char *type_id )
+{
+ const char *cursor, *limit, *marker = 0;
+
+ cursor = type_id;
+ limit = type_id + strlen( type_id );
+
+
+#line 1620 "<stdout>"
+{
+ YYCTYPE yych;
+ unsigned int yyaccept = 0;
+ goto yy202;
+ ++YYCURSOR;
+yy202:
+ if((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy204;
+ case '!': goto yy208;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's': case 'u':
+ case 'v':
+ case 'w': case 'y':
+ case 'z': goto yy210;
+ case 't': goto yy205;
+ case 'x': goto yy207;
+ default: goto yy211;
+ }
+yy204: YYCURSOR = YYMARKER;
+ switch(yyaccept){
+ case 0: goto yy206;
+ }
+yy205: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case ',': goto yy216;
+ case '-': goto yy212;
+ case '.': goto yy217;
+ case '/': goto yy218;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy214;
+ case 'a': goto yy246;
+ default: goto yy206;
+ }
+yy206:
+#line 202 "implicit.re"
+{ return syck_taguri( YAML_DOMAIN, type_id, (int)strlen( type_id ) ); }
+#line 1768 "<stdout>"
+yy207: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case ',': case '.':
+ case '/':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy215;
+ case '-': goto yy236;
+ default: goto yy206;
+ }
+yy208: ++YYCURSOR;
+ goto yy209;
+yy209:
+#line 176 "implicit.re"
+{ return syck_xprivate( type_id + 1, (int)strlen( type_id ) - 1 ); }
+#line 1842 "<stdout>"
+yy210: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case ',': goto yy216;
+ case '-': goto yy212;
+ case '.': goto yy217;
+ case '/': goto yy218;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy214;
+ default: goto yy206;
+ }
+yy211: yych = *++YYCURSOR;
+ goto yy206;
+yy212: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy213;
+yy213: switch(yych){
+ case '-': goto yy212;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy214;
+ default: goto yy204;
+ }
+yy214: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ goto yy215;
+yy215: switch(yych){
+ case ',': goto yy216;
+ case '-': goto yy212;
+ case '.': goto yy217;
+ case '/': goto yy218;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy214;
+ default: goto yy204;
+ }
+yy216: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy224;
+ default: goto yy204;
+ }
+yy217: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy220;
+ default: goto yy204;
+ }
+yy218: ++YYCURSOR;
+ goto yy219;
+yy219:
+#line 178 "implicit.re"
+{ char *domain = S_ALLOC_N( char, ( YYCURSOR - type_id ) + 15 );
+ char *uri;
+
+ domain[0] = '\0';
+ strncat( domain, type_id, ( YYCURSOR - type_id ) - 1 );
+ strcat( domain, "." );
+ strcat( domain, YAML_DOMAIN );
+ uri = syck_taguri( domain, YYCURSOR, (int)(YYLIMIT - YYCURSOR) );
+
+ S_FREE( domain );
+ return uri;
+ }
+#line 2149 "<stdout>"
+yy220: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
+ yych = *YYCURSOR;
+ goto yy221;
+yy221: switch(yych){
+ case ',': goto yy216;
+ case '-': goto yy222;
+ case '.': goto yy217;
+ case '/': goto yy218;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy220;
+ default: goto yy204;
+ }
+yy222: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy223;
+yy223: switch(yych){
+ case '-': goto yy222;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy220;
+ default: goto yy204;
+ }
+yy224: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy225;
+ default: goto yy204;
+ }
+yy225: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy226;
+ default: goto yy204;
+ }
+yy226: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy227;
+ default: goto yy204;
+ }
+yy227: yych = *++YYCURSOR;
+ switch(yych){
+ case '-': goto yy228;
+ case '/': goto yy229;
+ default: goto yy204;
+ }
+yy228: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy231;
+ default: goto yy204;
+ }
+yy229: ++YYCURSOR;
+ goto yy230;
+yy230:
+#line 191 "implicit.re"
+{ char *domain = S_ALLOC_N( char, YYCURSOR - type_id );
+ char *uri;
+
+ domain[0] = '\0';
+ strncat( domain, type_id, ( YYCURSOR - type_id ) - 1 );
+ uri = syck_taguri( domain, YYCURSOR, (int)(YYLIMIT - YYCURSOR) );
+
+ S_FREE( domain );
+ return uri;
+ }
+#line 2365 "<stdout>"
+yy231: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy232;
+ default: goto yy204;
+ }
+yy232: yych = *++YYCURSOR;
+ switch(yych){
+ case '-': goto yy233;
+ case '/': goto yy229;
+ default: goto yy204;
+ }
+yy233: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy234;
+ default: goto yy204;
+ }
+yy234: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy235;
+ default: goto yy204;
+ }
+yy235: yych = *++YYCURSOR;
+ switch(yych){
+ case '/': goto yy229;
+ default: goto yy204;
+ }
+yy236: yych = *++YYCURSOR;
+ switch(yych){
+ case 'p': goto yy237;
+ default: goto yy213;
+ }
+yy237: yych = *++YYCURSOR;
+ switch(yych){
+ case ',': goto yy216;
+ case '.': goto yy217;
+ case '/': goto yy218;
+ case 'r': goto yy238;
+ default: goto yy213;
+ }
+yy238: yych = *++YYCURSOR;
+ switch(yych){
+ case ',': goto yy216;
+ case '.': goto yy217;
+ case '/': goto yy218;
+ case 'i': goto yy239;
+ default: goto yy213;
+ }
+yy239: yych = *++YYCURSOR;
+ switch(yych){
+ case ',': goto yy216;
+ case '.': goto yy217;
+ case '/': goto yy218;
+ case 'v': goto yy240;
+ default: goto yy213;
+ }
+yy240: yych = *++YYCURSOR;
+ switch(yych){
+ case ',': goto yy216;
+ case '.': goto yy217;
+ case '/': goto yy218;
+ case 'a': goto yy241;
+ default: goto yy213;
+ }
+yy241: yych = *++YYCURSOR;
+ switch(yych){
+ case ',': goto yy216;
+ case '.': goto yy217;
+ case '/': goto yy218;
+ case 't': goto yy242;
+ default: goto yy213;
+ }
+yy242: yych = *++YYCURSOR;
+ switch(yych){
+ case ',': goto yy216;
+ case '.': goto yy217;
+ case '/': goto yy218;
+ case 'e': goto yy243;
+ default: goto yy213;
+ }
+yy243: yych = *++YYCURSOR;
+ switch(yych){
+ case ',': goto yy216;
+ case '.': goto yy217;
+ case '/': goto yy218;
+ case ':': goto yy244;
+ default: goto yy213;
+ }
+yy244: ++YYCURSOR;
+ goto yy245;
+yy245:
+#line 174 "implicit.re"
+{ return syck_strndup( type_id, strlen( type_id ) ); }
+#line 2485 "<stdout>"
+yy246: yych = *++YYCURSOR;
+ switch(yych){
+ case ',': goto yy216;
+ case '.': goto yy217;
+ case '/': goto yy218;
+ case 'g': goto yy247;
+ default: goto yy213;
+ }
+yy247: yych = *++YYCURSOR;
+ switch(yych){
+ case ',': goto yy216;
+ case '.': goto yy217;
+ case '/': goto yy218;
+ case ':': goto yy248;
+ default: goto yy213;
+ }
+yy248: yych = *++YYCURSOR;
+ switch(yych){
+ case ',':
+ case '-':
+ case '.': goto yy204;
+ default: goto yy250;
+ }
+yy249: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ goto yy250;
+yy250: switch(yych){
+ case ',': goto yy253;
+ case '-': goto yy251;
+ case '.': goto yy254;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy249;
+ default: goto yy204;
+ }
+yy251: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy252;
+yy252: switch(yych){
+ case '-': goto yy251;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy249;
+ default: goto yy204;
+ }
+yy253: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy259;
+ default: goto yy204;
+ }
+yy254: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy255;
+ default: goto yy204;
+ }
+yy255: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
+ yych = *YYCURSOR;
+ goto yy256;
+yy256: switch(yych){
+ case ',': goto yy253;
+ case '-': goto yy257;
+ case '.': goto yy254;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy255;
+ default: goto yy204;
+ }
+yy257: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy258;
+yy258: switch(yych){
+ case '-': goto yy257;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy255;
+ default: goto yy204;
+ }
+yy259: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy260;
+ default: goto yy204;
+ }
+yy260: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy261;
+ default: goto yy204;
+ }
+yy261: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy262;
+ default: goto yy204;
+ }
+yy262: yych = *++YYCURSOR;
+ switch(yych){
+ case '-': goto yy263;
+ case ':': goto yy264;
+ default: goto yy204;
+ }
+yy263: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy266;
+ default: goto yy204;
+ }
+yy264: ++YYCURSOR;
+ goto yy265;
+yy265:
+#line 172 "implicit.re"
+{ return syck_strndup( type_id, strlen( type_id ) ); }
+#line 2932 "<stdout>"
+yy266: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy267;
+ default: goto yy204;
+ }
+yy267: yych = *++YYCURSOR;
+ switch(yych){
+ case '-': goto yy268;
+ case ':': goto yy264;
+ default: goto yy204;
+ }
+yy268: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy269;
+ default: goto yy204;
+ }
+yy269: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy270;
+ default: goto yy204;
+ }
+yy270: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case ':': goto yy264;
+ default: goto yy204;
+ }
+}
+#line 204 "implicit.re"
+
+
+}
diff --git a/ext/syck/lib/syck.rb b/ext/syck/lib/syck.rb
new file mode 100644
index 0000000000..f8e3c0f8bc
--- /dev/null
+++ b/ext/syck/lib/syck.rb
@@ -0,0 +1,447 @@
+# -*- mode: ruby; ruby-indent-level: 4; tab-width: 4 -*- vim: sw=4 ts=4
+# $Id$
+#
+# = yaml.rb: top-level module with methods for loading and parsing YAML documents
+#
+# Author:: why the lucky stiff
+#
+
+require 'yaml/syck'
+
+# == YAML
+#
+# YAML(tm) (rhymes with 'camel') is a
+# straightforward machine parsable data serialization format designed for
+# human readability and interaction with scripting languages such as Perl
+# and Python. YAML is optimized for data serialization, formatted
+# dumping, configuration files, log files, Internet messaging and
+# filtering. This specification describes the YAML information model and
+# serialization format. Together with the Unicode standard for characters, it
+# provides all the information necessary to understand YAML Version 1.0
+# and construct computer programs to process it.
+#
+# See http://yaml.org/ for more information. For a quick tutorial, please
+# visit YAML In Five Minutes (http://yaml.kwiki.org/?YamlInFiveMinutes).
+#
+# == About This Library
+#
+# The YAML 1.0 specification outlines four stages of YAML loading and dumping.
+# This library honors all four of those stages, although data is really only
+# available to you in three stages.
+#
+# The four stages are: native, representation, serialization, and presentation.
+#
+# The native stage refers to data which has been loaded completely into Ruby's
+# own types. (See +YAML::load+.)
+#
+# The representation stage means data which has been composed into
+# +YAML::BaseNode+ objects. In this stage, the document is available as a
+# tree of node objects. You can perform YPath queries and transformations
+# at this level. (See +YAML::parse+.)
+#
+# The serialization stage happens inside the parser. The YAML parser used in
+# Ruby is called Syck. Serialized nodes are available in the extension as
+# SyckNode structs.
+#
+# The presentation stage is the YAML document itself. This is accessible
+# to you as a string. (See +YAML::dump+.)
+#
+# For more information about the various information models, see Chapter
+# 3 of the YAML 1.0 Specification (http://yaml.org/spec/#id2491269).
+#
+# The YAML module provides quick access to the most common loading (YAML::load)
+# and dumping (YAML::dump) tasks. This module also provides an API for registering
+# global types (YAML::add_domain_type).
+#
+# == Example
+#
+# A simple round-trip (load and dump) of an object.
+#
+# require "yaml"
+#
+# test_obj = ["dogs", "cats", "badgers"]
+#
+# yaml_obj = YAML::dump( test_obj )
+# # -> ---
+# - dogs
+# - cats
+# - badgers
+# ruby_obj = YAML::load( yaml_obj )
+# # => ["dogs", "cats", "badgers"]
+# ruby_obj == test_obj
+# # => true
+#
+# To register your custom types with the global resolver, use +add_domain_type+.
+#
+# YAML::add_domain_type( "your-site.com,2004", "widget" ) do |type, val|
+# Widget.new( val )
+# end
+#
+module Syck
+
+ DefaultResolver.use_types_at( @@tagged_classes )
+
+ # Returns a new default parser
+ def self.parser; Parser.new.set_resolver( self.resolver ); end
+
+ # Returns a new generic parser
+ def self.generic_parser
+ warn "#{caller[0]}: YAML.generic_parser is deprecated, switch to psych" if $VERBOSE && !caller[0].start_with?(File.dirname(__FILE__))
+ Parser.new.set_resolver( GenericResolver )
+ end
+
+ # Returns the default resolver
+ def self.resolver
+ warn "#{caller[0]}: YAML.resolver is deprecated" if $VERBOSE && !caller[0].start_with?(File.dirname(__FILE__))
+ DefaultResolver
+ end
+
+ # Returns a new default emitter
+ def self.emitter
+ warn "#{caller[0]}: YAML.emitter is deprecated" if $VERBOSE && !caller[0].start_with?(File.dirname(__FILE__))
+ Emitter.new.set_resolver( self.resolver )
+ end
+
+ #
+ # Converts _obj_ to YAML and writes the YAML result to _io_.
+ #
+ # File.open( 'animals.yaml', 'w' ) do |out|
+ # YAML.dump( ['badger', 'elephant', 'tiger'], out )
+ # end
+ #
+ # If no _io_ is provided, a string containing the dumped YAML
+ # is returned.
+ #
+ # YAML.dump( :locked )
+ # #=> "--- :locked"
+ #
+ def self.dump( obj, io = nil )
+ obj.to_yaml( io || io2 = StringIO.new )
+ io || ( io2.rewind; io2.read )
+ end
+
+ #
+ # Load a document from the current _io_ stream.
+ #
+ # File.open( 'animals.yaml' ) { |yf| YAML::load( yf ) }
+ # #=> ['badger', 'elephant', 'tiger']
+ #
+ # Can also load from a string.
+ #
+ # YAML.load( "--- :locked" )
+ # #=> :locked
+ #
+ def self.load( io )
+ parser.load( io )
+ end
+
+ #
+ # Load a document from the file located at _filepath_.
+ #
+ # YAML.load_file( 'animals.yaml' )
+ # #=> ['badger', 'elephant', 'tiger']
+ #
+ def self.load_file( filepath )
+ File.open( filepath ) do |f|
+ load( f )
+ end
+ end
+
+ #
+ # Parse the first document from the current _io_ stream
+ #
+ # File.open( 'animals.yaml' ) { |yf| YAML::load( yf ) }
+ # #=> #<YAML::Syck::Node:0x82ccce0
+ # @kind=:seq,
+ # @value=
+ # [#<YAML::Syck::Node:0x82ccd94
+ # @kind=:scalar,
+ # @type_id="str",
+ # @value="badger">,
+ # #<YAML::Syck::Node:0x82ccd58
+ # @kind=:scalar,
+ # @type_id="str",
+ # @value="elephant">,
+ # #<YAML::Syck::Node:0x82ccd1c
+ # @kind=:scalar,
+ # @type_id="str",
+ # @value="tiger">]>
+ #
+ # Can also load from a string.
+ #
+ # YAML.parse( "--- :locked" )
+ # #=> #<YAML::Syck::Node:0x82edddc
+ # @type_id="tag:ruby.yaml.org,2002:sym",
+ # @value=":locked", @kind=:scalar>
+ #
+ def self.parse( io )
+ generic_parser.load( io )
+ end
+
+ #
+ # Parse a document from the file located at _filepath_.
+ #
+ # YAML.parse_file( 'animals.yaml' )
+ # #=> #<YAML::Syck::Node:0x82ccce0
+ # @kind=:seq,
+ # @value=
+ # [#<YAML::Syck::Node:0x82ccd94
+ # @kind=:scalar,
+ # @type_id="str",
+ # @value="badger">,
+ # #<YAML::Syck::Node:0x82ccd58
+ # @kind=:scalar,
+ # @type_id="str",
+ # @value="elephant">,
+ # #<YAML::Syck::Node:0x82ccd1c
+ # @kind=:scalar,
+ # @type_id="str",
+ # @value="tiger">]>
+ #
+ def self.parse_file( filepath )
+ File.open( filepath ) do |f|
+ parse( f )
+ end
+ end
+
+ #
+ # Calls _block_ with each consecutive document in the YAML
+ # stream contained in _io_.
+ #
+ # File.open( 'many-docs.yaml' ) do |yf|
+ # YAML.each_document( yf ) do |ydoc|
+ # ## ydoc contains the single object
+ # ## from the YAML document
+ # end
+ # end
+ #
+ def self.each_document( io, &block )
+ warn "#{caller[0]}: YAML.each_document is deprecated" if $VERBOSE && !caller[0].start_with?(File.dirname(__FILE__))
+ parser.load_documents( io, &block )
+ end
+
+ #
+ # Calls _block_ with each consecutive document in the YAML
+ # stream contained in _io_.
+ #
+ # File.open( 'many-docs.yaml' ) do |yf|
+ # YAML.load_documents( yf ) do |ydoc|
+ # ## ydoc contains the single object
+ # ## from the YAML document
+ # end
+ # end
+ #
+ def self.load_documents( io, &doc_proc )
+ parser.load_documents( io, &doc_proc )
+ end
+
+ #
+ # Calls _block_ with a tree of +YAML::BaseNodes+, one tree for
+ # each consecutive document in the YAML stream contained in _io_.
+ #
+ # File.open( 'many-docs.yaml' ) do |yf|
+ # YAML.each_node( yf ) do |ydoc|
+ # ## ydoc contains a tree of nodes
+ # ## from the YAML document
+ # end
+ # end
+ #
+ def self.each_node( io, &doc_proc )
+ warn "#{caller[0]}: YAML.each_node is deprecated" if $VERBOSE && !caller[0].start_with?(File.dirname(__FILE__))
+ generic_parser.load_documents( io, &doc_proc )
+ end
+
+ #
+ # Calls _block_ with a tree of +YAML::BaseNodes+, one tree for
+ # each consecutive document in the YAML stream contained in _io_.
+ #
+ # File.open( 'many-docs.yaml' ) do |yf|
+ # YAML.parse_documents( yf ) do |ydoc|
+ # ## ydoc contains a tree of nodes
+ # ## from the YAML document
+ # end
+ # end
+ #
+ def self.parse_documents( io, &doc_proc )
+ warn "#{caller[0]}: YAML.parse_documents is deprecated, use load_stream" if $VERBOSE && !caller[0].start_with?(File.dirname(__FILE__))
+ self.each_node( io, &doc_proc )
+ end
+
+ #
+ # Loads all documents from the current _io_ stream,
+ # returning a +YAML::Stream+ object containing all
+ # loaded documents.
+ #
+ def self.load_stream( io )
+ d = nil
+ parser.load_documents( io ) do |doc|
+ d = Stream.new if not d
+ d.add( doc )
+ end
+ return d
+ end
+
+ #
+ # Returns a YAML stream containing each of the items in +objs+,
+ # each having their own document.
+ #
+ # YAML.dump_stream( 0, [], {} )
+ # #=> --- 0
+ # --- []
+ # --- {}
+ #
+ def self.dump_stream( *objs )
+ d = Stream.new
+ objs.each do |doc|
+ d.add( doc )
+ end
+ d.emit
+ end
+
+ #
+ # Add a global handler for a YAML domain type.
+ #
+ def self.add_domain_type( domain, type_tag, &transfer_proc )
+ resolver.add_type( "tag:#{ domain }:#{ type_tag }", transfer_proc )
+ end
+
+ #
+ # Add a transfer method for a builtin type
+ #
+ def self.add_builtin_type( type_tag, &transfer_proc )
+ resolver.add_type( "tag:yaml.org,2002:#{ type_tag }", transfer_proc )
+ end
+
+ #
+ # Add a transfer method for a builtin type
+ #
+ def self.add_ruby_type( type_tag, &transfer_proc )
+ warn "#{caller[0]}: YAML.add_ruby_type is deprecated, use add_domain_type" if $VERBOSE && !caller[0].start_with?(File.dirname(__FILE__))
+ resolver.add_type( "tag:ruby.yaml.org,2002:#{ type_tag }", transfer_proc )
+ end
+
+ #
+ # Add a private document type
+ #
+ def self.add_private_type( type_re, &transfer_proc )
+ warn "#{caller[0]}: YAML.add_private_type is deprecated, use add_domain_type" if $VERBOSE && !caller[0].start_with?(File.dirname(__FILE__))
+ resolver.add_type( "x-private:" + type_re, transfer_proc )
+ end
+
+ #
+ # Detect typing of a string
+ #
+ def self.detect_implicit( val )
+ warn "#{caller[0]}: YAML.detect_implicit is deprecated" if $VERBOSE && !caller[0].start_with?(File.dirname(__FILE__))
+ resolver.detect_implicit( val )
+ end
+
+ #
+ # Convert a type_id to a taguri
+ #
+ def self.tagurize( val )
+ warn "#{caller[0]}: YAML.tagurize is deprecated" if $VERBOSE && !caller[0].start_with?(File.dirname(__FILE__))
+ resolver.tagurize( val )
+ end
+
+ #
+ # Apply a transfer method to a Ruby object
+ #
+ def self.transfer( type_id, obj )
+ warn "#{caller[0]}: YAML.transfer is deprecated" if $VERBOSE && !caller[0].start_with?(File.dirname(__FILE__))
+ resolver.transfer( tagurize( type_id ), obj )
+ end
+
+ #
+ # Apply any implicit a node may qualify for
+ #
+ def self.try_implicit( obj )
+ warn "#{caller[0]}: YAML.try_implicit is deprecated" if $VERBOSE && !caller[0].start_with?(File.dirname(__FILE__))
+ transfer( detect_implicit( obj ), obj )
+ end
+
+ #
+ # Method to extract colon-seperated type and class, returning
+ # the type and the constant of the class
+ #
+ def self.read_type_class( type, obj_class )
+ warn "#{caller[0]}: YAML.read_type_class is deprecated" if $VERBOSE && !caller[0].start_with?(File.dirname(__FILE__))
+ type, tclass = type.split( ':', 4 ).last(2)
+ tclass.split( "::" ).each { |c| obj_class = obj_class.const_get( c ) } if tclass
+ return [ type, obj_class ]
+ end
+
+ #
+ # Allocate blank object
+ #
+ def self.object_maker( obj_class, val )
+ warn "#{caller[0]}: YAML.object_maker is deprecated" if $VERBOSE && !caller[0].start_with?(File.dirname(__FILE__))
+ if Hash === val
+ o = obj_class.allocate
+ val.each_pair { |k,v|
+ o.instance_variable_set("@#{k}", v)
+ }
+ o
+ else
+ raise Error, "Invalid object explicitly tagged !ruby/Object: " + val.inspect
+ end
+ end
+
+ #
+ # Allocate an Emitter if needed
+ #
+ def self.quick_emit( oid, opts = {}, &e )
+ warn "#{caller[0]}: YAML.quick_emit is deprecated" if $VERBOSE && !caller[0].start_with?(File.dirname(__FILE__))
+ out =
+ if opts.is_a? Emitter
+ opts
+ else
+ emitter.reset( opts )
+ end
+ out.emit( oid, &e )
+ end
+
+end
+
+module Kernel
+ #
+ # ryan:: You know how Kernel.p is a really convenient way to dump ruby
+ # structures? The only downside is that it's not as legible as
+ # YAML.
+ #
+ # _why:: (listening)
+ #
+ # ryan:: I know you don't want to urinate all over your users' namespaces.
+ # But, on the other hand, convenience of dumping for debugging is,
+ # IMO, a big YAML use case.
+ #
+ # _why:: Go nuts! Have a pony parade!
+ #
+ # ryan:: Either way, I certainly will have a pony parade.
+ #
+
+ # Prints any supplied _objects_ out in YAML. Intended as
+ # a variation on +Kernel::p+.
+ #
+ # S = Struct.new(:name, :state)
+ # s = S['dave', 'TX']
+ # y s
+ #
+ # _produces:_
+ #
+ # --- !ruby/struct:S
+ # name: dave
+ # state: TX
+ #
+ def y( object, *objects )
+ objects.unshift object
+ puts( if objects.length == 1
+ YAML.dump( *objects )
+ else
+ YAML.dump_stream( *objects )
+ end )
+ end
+ private :y
+end
+
+
diff --git a/ext/syck/lib/syck/baseemitter.rb b/ext/syck/lib/syck/baseemitter.rb
new file mode 100644
index 0000000000..5e39e450de
--- /dev/null
+++ b/ext/syck/lib/syck/baseemitter.rb
@@ -0,0 +1,242 @@
+#
+# BaseEmitter
+#
+
+require 'syck/constants'
+require 'syck/encoding'
+require 'syck/error'
+
+module Syck
+ module BaseEmitter
+ def options( opt = nil )
+ if opt
+ @options[opt] || DEFAULTS[opt]
+ else
+ @options
+ end
+ end
+
+ def options=( opt )
+ @options = opt
+ end
+
+ #
+ # Emit binary data
+ #
+ def binary_base64( value )
+ self << "!binary "
+ self.node_text( [value].pack("m"), '|' )
+ end
+
+ #
+ # Emit plain, normal flowing text
+ #
+ def node_text( value, block = nil )
+ @seq_map = false
+ valx = value.dup
+ unless block
+ block =
+ if options(:UseBlock)
+ '|'
+ elsif not options(:UseFold) and valx =~ /\n[ \t]/ and not valx =~ /#{ESCAPE_CHAR}/
+ '|'
+ else
+ '>'
+ end
+ indt = $&.to_i if block =~ /\d+/
+ if valx =~ /(\A\n*[ \t#]|^---\s+)/
+ indt = options(:Indent) unless indt.to_i > 0
+ block += indt.to_s
+ end
+
+ block +=
+ if valx =~ /\n\Z\n/
+ "+"
+ elsif valx =~ /\Z\n/
+ ""
+ else
+ "-"
+ end
+ end
+ block += "\n"
+ if block[0] == ?"
+ esc_skip = ( "\t\n" unless valx =~ /^[ \t]/ ) || ""
+ valx = fold( Syck.escape( valx, esc_skip ) + "\"" ).chomp
+ self << '"' + indent_text( valx, indt, false )
+ else
+ if block[0] == ?>
+ valx = fold( valx )
+ end
+ #p [block, indt]
+ self << block + indent_text( valx, indt )
+ end
+ end
+
+ #
+ # Emit a simple, unqouted string
+ #
+ def simple( value )
+ @seq_map = false
+ self << value.to_s
+ end
+
+ #
+ # Emit double-quoted string
+ #
+ def double( value )
+ "\"#{Syck.escape( value )}\""
+ end
+
+ #
+ # Emit single-quoted string
+ #
+ def single( value )
+ "'#{value}'"
+ end
+
+ #
+ # Write a text block with the current indent
+ #
+ def indent_text( text, mod, first_line = true )
+ return "" if text.to_s.empty?
+ spacing = indent( mod )
+ text = text.gsub( /\A([^\n])/, "#{ spacing }\\1" ) if first_line
+ return text.gsub( /\n^([^\n])/, "\n#{spacing}\\1" )
+ end
+
+ #
+ # Write a current indent
+ #
+ def indent( mod = nil )
+ #p [ self.id, level, mod, :INDENT ]
+ if level <= 0
+ mod ||= 0
+ else
+ mod ||= options(:Indent)
+ mod += ( level - 1 ) * options(:Indent)
+ end
+ return " " * mod
+ end
+
+ #
+ # Add indent to the buffer
+ #
+ def indent!
+ self << indent
+ end
+
+ #
+ # Folding paragraphs within a column
+ #
+ def fold( value )
+ value.gsub( /(^[ \t]+.*$)|(\S.{0,#{options(:BestWidth) - 1}})(?:[ \t]+|(\n+(?=[ \t]|\Z))|$)/ ) do
+ $1 || $2 + ( $3 || "\n" )
+ end
+ end
+
+ #
+ # Quick mapping
+ #
+ def map( type, &e )
+ val = Mapping.new
+ e.call( val )
+ self << "#{type} " if type.length.nonzero?
+
+ #
+ # Empty hashes
+ #
+ if val.length.zero?
+ self << "{}"
+ @seq_map = false
+ else
+ # FIXME
+ # if @buffer.length == 1 and options(:UseHeader) == false and type.length.zero?
+ # @headless = 1
+ # end
+
+ defkey = @options.delete( :DefaultKey )
+ if defkey
+ seq_map_shortcut
+ self << "= : "
+ defkey.to_yaml( :Emitter => self )
+ end
+
+ #
+ # Emit the key and value
+ #
+ val.each { |v|
+ seq_map_shortcut
+ if v[0].is_complex_yaml?
+ self << "? "
+ end
+ v[0].to_yaml( :Emitter => self )
+ if v[0].is_complex_yaml?
+ self << "\n"
+ indent!
+ end
+ self << ": "
+ v[1].to_yaml( :Emitter => self )
+ }
+ end
+ end
+
+ def seq_map_shortcut
+ # FIXME: seq_map needs to work with the new anchoring system
+ # if @seq_map
+ # @anchor_extras[@buffer.length - 1] = "\n" + indent
+ # @seq_map = false
+ # else
+ self << "\n"
+ indent!
+ # end
+ end
+
+ #
+ # Quick sequence
+ #
+ def seq( type, &e )
+ @seq_map = false
+ val = Sequence.new
+ e.call( val )
+ self << "#{type} " if type.length.nonzero?
+
+ #
+ # Empty arrays
+ #
+ if val.length.zero?
+ self << "[]"
+ else
+ # FIXME
+ # if @buffer.length == 1 and options(:UseHeader) == false and type.length.zero?
+ # @headless = 1
+ # end
+
+ #
+ # Emit the key and value
+ #
+ val.each { |v|
+ self << "\n"
+ indent!
+ self << "- "
+ @seq_map = true if v.class == Hash
+ v.to_yaml( :Emitter => self )
+ }
+ end
+ end
+ end
+
+ #
+ # Emitter helper classes
+ #
+ class Mapping < Array
+ def add( k, v )
+ push [k, v]
+ end
+ end
+
+ class Sequence < Array
+ def add( v )
+ push v
+ end
+ end
+end
diff --git a/ext/syck/lib/syck/basenode.rb b/ext/syck/lib/syck/basenode.rb
new file mode 100644
index 0000000000..5dc27bfdfe
--- /dev/null
+++ b/ext/syck/lib/syck/basenode.rb
@@ -0,0 +1,222 @@
+#
+# YAML::BaseNode class
+#
+
+module Syck
+
+ #
+ # YAML Generic Model container
+ #
+ module BaseNode
+
+ #
+ # Search for YPath entry and return
+ # qualified nodes.
+ #
+ def select( ypath_str )
+ warn "#{caller[0]}: select is deprecated" if $VERBOSE
+ matches = match_path( ypath_str )
+
+ #
+ # Create a new generic view of the elements selected
+ #
+ if matches
+ result = []
+ matches.each { |m|
+ result.push m.last
+ }
+ Syck.transfer( 'seq', result )
+ end
+ end
+
+ #
+ # Search for YPath entry and return
+ # transformed nodes.
+ #
+ def select!( ypath_str )
+ warn "#{caller[0]}: select!() is deprecated" if $VERBOSE
+ matches = match_path( ypath_str )
+
+ #
+ # Create a new generic view of the elements selected
+ #
+ if matches
+ result = []
+ matches.each { |m|
+ result.push m.last.transform
+ }
+ result
+ end
+ end
+
+ #
+ # Search for YPath entry and return a list of
+ # qualified paths.
+ #
+ def search( ypath_str )
+ warn "#{caller[0]}: search() is deprecated" if $VERBOSE
+ matches = match_path( ypath_str )
+
+ if matches
+ matches.collect { |m|
+ path = []
+ m.each_index { |i|
+ path.push m[i] if ( i % 2 ).zero?
+ }
+ "/" + path.compact.join( "/" )
+ }
+ end
+ end
+
+ def at( seg )
+ warn "#{caller[0]}: at() is deprecated" if $VERBOSE
+ if Hash === @value
+ self[seg]
+ elsif Array === @value and seg =~ /\A\d+\Z/ and @value[seg.to_i]
+ @value[seg.to_i]
+ end
+ end
+
+ #
+ # YPath search returning a complete depth array
+ #
+ def match_path( ypath_str )
+ warn "#{caller[0]}: match_path is deprecated" if $VERBOSE
+ require 'syck/ypath'
+ matches = []
+ YPath.each_path( ypath_str ) do |ypath|
+ seg = match_segment( ypath, 0 )
+ matches += seg if seg
+ end
+ matches.uniq
+ end
+
+ #
+ # Search a node for a single YPath segment
+ #
+ def match_segment( ypath, depth )
+ warn "#{caller[0]}: match_segment is deprecated" if $VERBOSE
+ deep_nodes = []
+ seg = ypath.segments[ depth ]
+ if seg == "/"
+ unless String === @value
+ idx = -1
+ @value.collect { |v|
+ idx += 1
+ if Hash === @value
+ match_init = [v[0].transform, v[1]]
+ match_deep = v[1].match_segment( ypath, depth )
+ else
+ match_init = [idx, v]
+ match_deep = v.match_segment( ypath, depth )
+ end
+ if match_deep
+ match_deep.each { |m|
+ deep_nodes.push( match_init + m )
+ }
+ end
+ }
+ end
+ depth += 1
+ seg = ypath.segments[ depth ]
+ end
+ match_nodes =
+ case seg
+ when "."
+ [[nil, self]]
+ when ".."
+ [["..", nil]]
+ when "*"
+ if @value.is_a? Enumerable
+ idx = -1
+ @value.collect { |h|
+ idx += 1
+ if Hash === @value
+ [h[0].transform, h[1]]
+ else
+ [idx, h]
+ end
+ }
+ end
+ else
+ if seg =~ /^"(.*)"$/
+ seg = $1
+ elsif seg =~ /^'(.*)'$/
+ seg = $1
+ end
+ if ( v = at( seg ) )
+ [[ seg, v ]]
+ end
+ end
+ return deep_nodes unless match_nodes
+ pred = ypath.predicates[ depth ]
+ if pred
+ case pred
+ when /^\.=/
+ pred = $' # '
+ match_nodes.reject! { |n|
+ n.last.value != pred
+ }
+ else
+ match_nodes.reject! { |n|
+ n.last.at( pred ).nil?
+ }
+ end
+ end
+ return match_nodes + deep_nodes unless ypath.segments.length > depth + 1
+
+ #puts "DEPTH: #{depth + 1}"
+ deep_nodes = []
+ match_nodes.each { |n|
+ if n[1].is_a? BaseNode
+ match_deep = n[1].match_segment( ypath, depth + 1 )
+ if match_deep
+ match_deep.each { |m|
+ deep_nodes.push( n + m )
+ }
+ end
+ else
+ deep_nodes = []
+ end
+ }
+ deep_nodes = nil if deep_nodes.length == 0
+ deep_nodes
+ end
+
+ #
+ # We want the node to act like as Hash
+ # if it is.
+ #
+ def []( *key )
+ if Hash === @value
+ v = @value.detect { |k,| k.transform == key.first }
+ v[1] if v
+ elsif Array === @value
+ @value.[]( *key )
+ end
+ end
+
+ def children
+ if Hash === @value
+ @value.values.collect { |c| c[1] }
+ elsif Array === @value
+ @value
+ end
+ end
+
+ def children_with_index
+ warn "#{caller[0]}: children_with_index is deprecated, use children" if $VERBOSE
+ if Hash === @value
+ @value.keys.collect { |i| [self[i], i] }
+ elsif Array === @value
+ i = -1; @value.collect { |v| i += 1; [v, i] }
+ end
+ end
+
+ def emit
+ transform.to_yaml
+ end
+ end
+
+end
+
diff --git a/ext/syck/lib/syck/constants.rb b/ext/syck/lib/syck/constants.rb
new file mode 100644
index 0000000000..19fe42ef85
--- /dev/null
+++ b/ext/syck/lib/syck/constants.rb
@@ -0,0 +1,45 @@
+#
+# Constants used throughout the library
+#
+module Syck
+
+ #
+ # Constants
+ #
+ VERSION = '0.60'
+ SUPPORTED_YAML_VERSIONS = ['1.0']
+
+ #
+ # Parser tokens
+ #
+ WORD_CHAR = 'A-Za-z0-9'
+ PRINTABLE_CHAR = '-_A-Za-z0-9!?/()$\'". '
+ NOT_PLAIN_CHAR = '\x7f\x0-\x1f\x80-\x9f'
+ ESCAPE_CHAR = '[\\x00-\\x09\\x0b-\\x1f]'
+ INDICATOR_CHAR = '*&!|\\\\^@%{}[]='
+ SPACE_INDICATORS = '-#:,?'
+ RESTRICTED_INDICATORS = '#:,}]'
+ DNS_COMP_RE = "\\w(?:[-\\w]*\\w)?"
+ DNS_NAME_RE = "(?:(?:#{DNS_COMP_RE}\\.)+#{DNS_COMP_RE}|#{DNS_COMP_RE})"
+ ESCAPES = %w{\x00 \x01 \x02 \x03 \x04 \x05 \x06 \a
+ \x08 \t \n \v \f \r \x0e \x0f
+ \x10 \x11 \x12 \x13 \x14 \x15 \x16 \x17
+ \x18 \x19 \x1a \e \x1c \x1d \x1e \x1f
+ }
+ UNESCAPES = {
+ 'a' => "\x07", 'b' => "\x08", 't' => "\x09",
+ 'n' => "\x0a", 'v' => "\x0b", 'f' => "\x0c",
+ 'r' => "\x0d", 'e' => "\x1b", '\\' => '\\',
+ }
+
+ #
+ # Default settings
+ #
+ DEFAULTS = {
+ :Indent => 2, :UseHeader => false, :UseVersion => false, :Version => '1.0',
+ :SortKeys => false, :AnchorFormat => 'id%03d', :ExplicitTypes => false,
+ :WidthType => 'absolute', :BestWidth => 80,
+ :UseBlock => false, :UseFold => false, :Encoding => :None
+ }
+
+end
diff --git a/ext/syck/lib/syck/encoding.rb b/ext/syck/lib/syck/encoding.rb
new file mode 100644
index 0000000000..dad062994c
--- /dev/null
+++ b/ext/syck/lib/syck/encoding.rb
@@ -0,0 +1,35 @@
+#
+# Handle Unicode-to-Internal conversion
+#
+
+module Syck
+
+ #
+ # Escape the string, condensing common escapes
+ #
+ def self.escape( value, skip = "" )
+ warn "#{caller[0]}: YAML.escape is deprecated" if $VERBOSE
+ value.gsub( /\\/, "\\\\\\" ).
+ gsub( /"/, "\\\"" ).
+ gsub( /([\x00-\x1f])/ ) do
+ skip[$&] || ESCAPES[ $&.unpack("C")[0] ]
+ end
+ end
+
+ #
+ # Unescape the condenses escapes
+ #
+ def self.unescape( value )
+ warn "#{caller[0]}: YAML.unescape is deprecated" if $VERBOSE
+ value.gsub( /\\(?:([nevfbart\\])|0?x([0-9a-fA-F]{2})|u([0-9a-fA-F]{4}))/ ) {
+ if $3
+ ["#$3".hex ].pack('U*')
+ elsif $2
+ [$2].pack( "H2" )
+ else
+ UNESCAPES[$1]
+ end
+ }
+ end
+
+end
diff --git a/ext/syck/lib/syck/error.rb b/ext/syck/lib/syck/error.rb
new file mode 100644
index 0000000000..0bac872411
--- /dev/null
+++ b/ext/syck/lib/syck/error.rb
@@ -0,0 +1,34 @@
+#
+# Error messages and exception class
+#
+
+module Syck
+
+ #
+ # Error messages
+ #
+
+ ERROR_NO_HEADER_NODE = "With UseHeader=false, the node Array or Hash must have elements"
+ ERROR_NEED_HEADER = "With UseHeader=false, the node must be an Array or Hash"
+ ERROR_BAD_EXPLICIT = "Unsupported explicit transfer: '%s'"
+ ERROR_MANY_EXPLICIT = "More than one explicit transfer"
+ ERROR_MANY_IMPLICIT = "More than one implicit request"
+ ERROR_NO_ANCHOR = "No anchor for alias '%s'"
+ ERROR_BAD_ANCHOR = "Invalid anchor: %s"
+ ERROR_MANY_ANCHOR = "More than one anchor"
+ ERROR_ANCHOR_ALIAS = "Can't define both an anchor and an alias"
+ ERROR_BAD_ALIAS = "Invalid alias: %s"
+ ERROR_MANY_ALIAS = "More than one alias"
+ ERROR_ZERO_INDENT = "Can't use zero as an indentation width"
+ ERROR_UNSUPPORTED_VERSION = "This release of YAML.rb does not support YAML version %s"
+ ERROR_UNSUPPORTED_ENCODING = "Attempt to use unsupported encoding: %s"
+
+ #
+ # YAML Error classes
+ #
+
+ class Error < StandardError; end
+ class ParseError < Error; end
+ class TypeError < StandardError; end
+
+end
diff --git a/ext/syck/lib/syck/loader.rb b/ext/syck/lib/syck/loader.rb
new file mode 100644
index 0000000000..925c9ee4b2
--- /dev/null
+++ b/ext/syck/lib/syck/loader.rb
@@ -0,0 +1,14 @@
+#
+# YAML::Loader class
+# .. type handling ..
+#
+module Syck
+ class Loader
+ TRANSFER_DOMAINS = {
+ 'yaml.org,2002' => {},
+ 'ruby.yaml.org,2002' => {}
+ }
+ PRIVATE_TYPES = {}
+ IMPLICIT_TYPES = [ 'null', 'bool', 'time', 'int', 'float' ]
+ end
+end
diff --git a/ext/syck/lib/syck/rubytypes.rb b/ext/syck/lib/syck/rubytypes.rb
new file mode 100644
index 0000000000..b6869c4b8b
--- /dev/null
+++ b/ext/syck/lib/syck/rubytypes.rb
@@ -0,0 +1,467 @@
+# -*- mode: ruby; ruby-indent-level: 4; tab-width: 4 -*- vim: sw=4 ts=4
+require 'date'
+
+class Class
+ def to_yaml( opts = {} )
+ raise TypeError, "can't dump anonymous class %s" % self.class
+ end
+end
+
+class Object
+ yaml_as "tag:ruby.yaml.org,2002:object"
+ def to_yaml_style; end
+ undef to_yaml_properties rescue nil
+ def to_yaml_properties; instance_variables.sort; end
+ def to_yaml( opts = {} )
+ YAML::quick_emit( self, opts ) do |out|
+ out.map( taguri, to_yaml_style ) do |map|
+ to_yaml_properties.each do |m|
+ map.add( m[1..-1], instance_variable_get( m ) )
+ end
+ end
+ end
+ end
+ alias :syck_to_yaml :to_yaml
+end
+
+class Hash
+ yaml_as "tag:ruby.yaml.org,2002:hash"
+ yaml_as "tag:yaml.org,2002:map"
+ def yaml_initialize( tag, val )
+ if Array === val
+ update Hash.[]( *val ) # Convert the map to a sequence
+ elsif Hash === val
+ update val
+ else
+ raise YAML::TypeError, "Invalid map explicitly tagged #{ tag }: " + val.inspect
+ end
+ end
+ def to_yaml( opts = {} )
+ return super unless YAML::ENGINE.syck?
+ YAML::quick_emit( self, opts ) do |out|
+ out.map( taguri, to_yaml_style ) do |map|
+ each do |k, v|
+ map.add( k, v )
+ end
+ end
+ end
+ end
+end
+
+class Struct
+ yaml_as "tag:ruby.yaml.org,2002:struct"
+ def self.yaml_tag_class_name; self.name.gsub( "Struct::", "" ); end
+ def self.yaml_tag_read_class( name ); "Struct::#{ name }"; end
+ def self.yaml_new( klass, tag, val )
+ if Hash === val
+ struct_type = nil
+
+ #
+ # Use existing Struct if it exists
+ #
+ props = {}
+ val.delete_if { |k,v| props[k] = v if k =~ /^@/ }
+ begin
+ struct_type = YAML.read_type_class( tag, Struct ).last
+ rescue NameError
+ end
+ if not struct_type
+ struct_def = [ tag.split( ':', 4 ).last ]
+ struct_type = Struct.new( *struct_def.concat( val.keys.collect { |k| k.intern } ) )
+ end
+
+ #
+ # Set the Struct properties
+ #
+ st = YAML::object_maker( struct_type, {} )
+ st.members.each do |m|
+ st.send( "#{m}=", val[m.to_s] )
+ end
+ props.each do |k,v|
+ st.instance_variable_set(k, v)
+ end
+ st
+ else
+ raise YAML::TypeError, "Invalid Ruby Struct: " + val.inspect
+ end
+ end
+ def to_yaml( opts = {} )
+ return super unless YAML::ENGINE.syck?
+ YAML::quick_emit( self, opts ) do |out|
+ #
+ # Basic struct is passed as a YAML map
+ #
+ out.map( taguri, to_yaml_style ) do |map|
+ self.members.each do |m|
+ map.add( m.to_s, self[m.to_s] )
+ end
+ self.to_yaml_properties.each do |m|
+ map.add( m, instance_variable_get( m ) )
+ end
+ end
+ end
+ end
+end
+
+class Array
+ yaml_as "tag:ruby.yaml.org,2002:array"
+ yaml_as "tag:yaml.org,2002:seq"
+ def yaml_initialize( tag, val ); concat( val.to_a ); end
+ def to_yaml( opts = {} )
+ return super unless YAML::ENGINE.syck?
+ YAML::quick_emit( self, opts ) do |out|
+ out.seq( taguri, to_yaml_style ) do |seq|
+ each do |x|
+ seq.add( x )
+ end
+ end
+ end
+ end
+end
+
+class Exception
+ yaml_as "tag:ruby.yaml.org,2002:exception"
+ def Exception.yaml_new( klass, tag, val )
+ o = klass.allocate
+ Exception.instance_method(:initialize).bind(o).call(val.delete('message'))
+ val.each_pair do |k,v|
+ o.instance_variable_set("@#{k}", v)
+ end
+ o
+ end
+ def to_yaml( opts = {} )
+ return super unless YAML::ENGINE.syck?
+ YAML::quick_emit( self, opts ) do |out|
+ out.map( taguri, to_yaml_style ) do |map|
+ map.add( 'message', message )
+ to_yaml_properties.each do |m|
+ map.add( m[1..-1], instance_variable_get( m ) )
+ end
+ end
+ end
+ end
+end
+
+class String
+ yaml_as "tag:ruby.yaml.org,2002:string"
+ yaml_as "tag:yaml.org,2002:binary"
+ yaml_as "tag:yaml.org,2002:str"
+ def is_complex_yaml?
+ to_yaml_style or not to_yaml_properties.empty? or self =~ /\n.+/
+ end
+ def is_binary_data?
+ self.count("\x00-\x7F", "^ -~\t\r\n").fdiv(self.size) > 0.3 || self.index("\x00") unless self.empty?
+ end
+ def String.yaml_new( klass, tag, val )
+ val = val.unpack("m")[0] if tag == "tag:yaml.org,2002:binary"
+ val = { 'str' => val } if String === val
+ if Hash === val
+ s = klass.allocate
+ # Thank you, NaHi
+ String.instance_method(:initialize).
+ bind(s).
+ call( val.delete( 'str' ) )
+ val.each { |k,v| s.instance_variable_set( k, v ) }
+ s
+ else
+ raise YAML::TypeError, "Invalid String: " + val.inspect
+ end
+ end
+ def to_yaml( opts = {} )
+ return super unless YAML::ENGINE.syck?
+ YAML::quick_emit( is_complex_yaml? ? self : nil, opts ) do |out|
+ if is_binary_data?
+ out.scalar( "tag:yaml.org,2002:binary", [self].pack("m"), :literal )
+ elsif to_yaml_properties.empty?
+ out.scalar( taguri, self, self =~ /^:/ ? :quote2 : to_yaml_style )
+ else
+ out.map( taguri, to_yaml_style ) do |map|
+ map.add( 'str', "#{self}" )
+ to_yaml_properties.each do |m|
+ map.add( m, instance_variable_get( m ) )
+ end
+ end
+ end
+ end
+ end
+end
+
+class Symbol
+ yaml_as "tag:ruby.yaml.org,2002:symbol"
+ yaml_as "tag:ruby.yaml.org,2002:sym"
+ def Symbol.yaml_new( klass, tag, val )
+ if String === val
+ val = YAML::load( val ) if val =~ /\A(["']).*\1\z/
+ val.intern
+ else
+ raise YAML::TypeError, "Invalid Symbol: " + val.inspect
+ end
+ end
+ def to_yaml( opts = {} )
+ return super unless YAML::ENGINE.syck?
+ YAML::quick_emit( nil, opts ) do |out|
+ out.scalar( "tag:yaml.org,2002:str", self.inspect, :plain )
+ end
+ end
+end
+
+class Range
+ yaml_as "tag:ruby.yaml.org,2002:range"
+ def Range.yaml_new( klass, tag, val )
+ inr = %r'(\w+|[+-]?\d+(?:\.\d+)?(?:e[+-]\d+)?|"(?:[^\\"]|\\.)*")'
+ opts = {}
+ if String === val and val =~ /^#{inr}(\.{2,3})#{inr}$/o
+ r1, rdots, r2 = $1, $2, $3
+ opts = {
+ 'begin' => YAML.load( "--- #{r1}" ),
+ 'end' => YAML.load( "--- #{r2}" ),
+ 'excl' => rdots.length == 3
+ }
+ val = {}
+ elsif Hash === val
+ opts['begin'] = val.delete('begin')
+ opts['end'] = val.delete('end')
+ opts['excl'] = val.delete('excl')
+ end
+ if Hash === opts
+ r = YAML::object_maker( klass, {} )
+ # Thank you, NaHi
+ Range.instance_method(:initialize).
+ bind(r).
+ call( opts['begin'], opts['end'], opts['excl'] )
+ val.each { |k,v| r.instance_variable_set( k, v ) }
+ r
+ else
+ raise YAML::TypeError, "Invalid Range: " + val.inspect
+ end
+ end
+ def to_yaml( opts = {} )
+ return super unless YAML::ENGINE.syck?
+ YAML::quick_emit( self, opts ) do |out|
+ # if self.begin.is_complex_yaml? or self.begin.respond_to? :to_str or
+ # self.end.is_complex_yaml? or self.end.respond_to? :to_str or
+ # not to_yaml_properties.empty?
+ out.map( taguri, to_yaml_style ) do |map|
+ map.add( 'begin', self.begin )
+ map.add( 'end', self.end )
+ map.add( 'excl', self.exclude_end? )
+ to_yaml_properties.each do |m|
+ map.add( m, instance_variable_get( m ) )
+ end
+ end
+ # else
+ # out.scalar( taguri ) do |sc|
+ # sc.embed( self.begin )
+ # sc.concat( self.exclude_end? ? "..." : ".." )
+ # sc.embed( self.end )
+ # end
+ # end
+ end
+ end
+end
+
+class Regexp
+ yaml_as "tag:ruby.yaml.org,2002:regexp"
+ def Regexp.yaml_new( klass, tag, val )
+ if String === val and val =~ /^\/(.*)\/([mixn]*)$/
+ val = { 'regexp' => $1, 'mods' => $2 }
+ end
+ if Hash === val
+ mods = nil
+ unless val['mods'].to_s.empty?
+ mods = 0x00
+ mods |= Regexp::EXTENDED if val['mods'].include?( 'x' )
+ mods |= Regexp::IGNORECASE if val['mods'].include?( 'i' )
+ mods |= Regexp::MULTILINE if val['mods'].include?( 'm' )
+ mods |= Regexp::NOENCODING if val['mods'].include?( 'n' )
+ end
+ val.delete( 'mods' )
+ r = YAML::object_maker( klass, {} )
+ Regexp.instance_method(:initialize).
+ bind(r).
+ call( val.delete( 'regexp' ), mods )
+ val.each { |k,v| r.instance_variable_set( k, v ) }
+ r
+ else
+ raise YAML::TypeError, "Invalid Regular expression: " + val.inspect
+ end
+ end
+ def to_yaml( opts = {} )
+ return super unless YAML::ENGINE.syck?
+ YAML::quick_emit( nil, opts ) do |out|
+ if to_yaml_properties.empty?
+ out.scalar( taguri, self.inspect, :plain )
+ else
+ out.map( taguri, to_yaml_style ) do |map|
+ src = self.inspect
+ if src =~ /\A\/(.*)\/([a-z]*)\Z/
+ map.add( 'regexp', $1 )
+ map.add( 'mods', $2 )
+ else
+ raise YAML::TypeError, "Invalid Regular expression: " + src
+ end
+ to_yaml_properties.each do |m|
+ map.add( m, instance_variable_get( m ) )
+ end
+ end
+ end
+ end
+ end
+end
+
+class Time
+ yaml_as "tag:ruby.yaml.org,2002:time"
+ yaml_as "tag:yaml.org,2002:timestamp"
+ def Time.yaml_new( klass, tag, val )
+ if Hash === val
+ t = val.delete( 'at' )
+ val.each { |k,v| t.instance_variable_set( k, v ) }
+ t
+ else
+ raise YAML::TypeError, "Invalid Time: " + val.inspect
+ end
+ end
+ def to_yaml( opts = {} )
+ return super unless YAML::ENGINE.syck?
+ YAML::quick_emit( self, opts ) do |out|
+ tz = "Z"
+ # from the tidy Tobias Peters <t-peters@gmx.de> Thanks!
+ unless self.utc?
+ utc_same_instant = self.dup.utc
+ utc_same_writing = Time.utc(year,month,day,hour,min,sec,usec)
+ difference_to_utc = utc_same_writing - utc_same_instant
+ if (difference_to_utc < 0)
+ difference_sign = '-'
+ absolute_difference = -difference_to_utc
+ else
+ difference_sign = '+'
+ absolute_difference = difference_to_utc
+ end
+ difference_minutes = (absolute_difference/60).round
+ tz = "%s%02d:%02d" % [ difference_sign, difference_minutes / 60, difference_minutes % 60]
+ end
+ standard = self.strftime( "%Y-%m-%d %H:%M:%S" )
+ standard += ".%06d" % [usec] if usec.nonzero?
+ standard += " %s" % [tz]
+ if to_yaml_properties.empty?
+ out.scalar( taguri, standard, :plain )
+ else
+ out.map( taguri, to_yaml_style ) do |map|
+ map.add( 'at', standard )
+ to_yaml_properties.each do |m|
+ map.add( m, instance_variable_get( m ) )
+ end
+ end
+ end
+ end
+ end
+end
+
+class Date
+ yaml_as "tag:yaml.org,2002:timestamp#ymd"
+ def to_yaml( opts = {} )
+ return super unless YAML::ENGINE.syck?
+ YAML::quick_emit( self, opts ) do |out|
+ out.scalar( "tag:yaml.org,2002:timestamp", self.to_s, :plain )
+ end
+ end
+end
+
+class Integer
+ yaml_as "tag:yaml.org,2002:int"
+ def to_yaml( opts = {} )
+ return super unless YAML::ENGINE.syck?
+ YAML::quick_emit( nil, opts ) do |out|
+ out.scalar( "tag:yaml.org,2002:int", self.to_s, :plain )
+ end
+ end
+end
+
+class Float
+ yaml_as "tag:yaml.org,2002:float"
+ def to_yaml( opts = {} )
+ return super unless YAML::ENGINE.syck?
+ YAML::quick_emit( nil, opts ) do |out|
+ str = self.to_s
+ if str == "Infinity"
+ str = ".Inf"
+ elsif str == "-Infinity"
+ str = "-.Inf"
+ elsif str == "NaN"
+ str = ".NaN"
+ end
+ out.scalar( "tag:yaml.org,2002:float", str, :plain )
+ end
+ end
+end
+
+class Rational
+ yaml_as "tag:ruby.yaml.org,2002:object:Rational"
+ def Rational.yaml_new( klass, tag, val )
+ if val.is_a? String
+ Rational( val )
+ else
+ Rational( val['numerator'], val['denominator'] )
+ end
+ end
+ def to_yaml( opts = {} )
+ return super unless YAML::ENGINE.syck?
+ YAML::quick_emit( self, opts ) do |out|
+ out.map( taguri, nil ) do |map|
+ map.add( 'denominator', denominator )
+ map.add( 'numerator', numerator )
+ end
+ end
+ end
+end
+
+class Complex
+ yaml_as "tag:ruby.yaml.org,2002:object:Complex"
+ def Complex.yaml_new( klass, tag, val )
+ if val.is_a? String
+ Complex( val )
+ else
+ Complex( val['real'], val['image'] )
+ end
+ end
+ def to_yaml( opts = {} )
+ return super unless YAML::ENGINE.syck?
+ YAML::quick_emit( self, opts ) do |out|
+ out.map( taguri, nil ) do |map|
+ map.add( 'image', imaginary )
+ map.add( 'real', real )
+ end
+ end
+ end
+end
+
+class TrueClass
+ yaml_as "tag:yaml.org,2002:bool#yes"
+ def to_yaml( opts = {} )
+ return super unless YAML::ENGINE.syck?
+ YAML::quick_emit( nil, opts ) do |out|
+ out.scalar( taguri, "true", :plain )
+ end
+ end
+end
+
+class FalseClass
+ yaml_as "tag:yaml.org,2002:bool#no"
+ def to_yaml( opts = {} )
+ return super unless YAML::ENGINE.syck?
+ YAML::quick_emit( nil, opts ) do |out|
+ out.scalar( taguri, "false", :plain )
+ end
+ end
+end
+
+class NilClass
+ yaml_as "tag:yaml.org,2002:null"
+ def to_yaml( opts = {} )
+ return super unless YAML::ENGINE.syck?
+ YAML::quick_emit( nil, opts ) do |out|
+ out.scalar( taguri, "", :plain )
+ end
+ end
+end
+
diff --git a/ext/syck/lib/syck/stream.rb b/ext/syck/lib/syck/stream.rb
new file mode 100644
index 0000000000..cd77a033c6
--- /dev/null
+++ b/ext/syck/lib/syck/stream.rb
@@ -0,0 +1,41 @@
+module Syck
+
+ #
+ # YAML::Stream -- for emitting many documents
+ #
+ class Stream
+
+ attr_accessor :documents, :options
+
+ def initialize( opts = {} )
+ @options = opts
+ @documents = []
+ end
+
+ def []( i )
+ @documents[ i ]
+ end
+
+ def add( doc )
+ @documents << doc
+ end
+
+ def edit( doc_num, doc )
+ warn "#{caller[0]}: edit is deprecated" if $VERBOSE
+ @documents[ doc_num ] = doc
+ end
+
+ def emit( io = nil )
+ # opts = @options.dup
+ # opts[:UseHeader] = true if @documents.length > 1
+ out = Syck.emitter
+ out.reset( io || io2 = StringIO.new )
+ @documents.each { |v|
+ v.to_yaml( out )
+ }
+ io || ( io2.rewind; io2.read )
+ end
+
+ end
+
+end
diff --git a/ext/syck/lib/syck/stringio.rb b/ext/syck/lib/syck/stringio.rb
new file mode 100644
index 0000000000..77a2b827e5
--- /dev/null
+++ b/ext/syck/lib/syck/stringio.rb
@@ -0,0 +1,85 @@
+warn "#{caller[0]}: yaml/stringio is deprecated" if $VERBOSE
+
+#
+# Limited StringIO if no core lib is available
+#
+begin
+require 'stringio'
+rescue LoadError
+ # StringIO based on code by MoonWolf
+ class StringIO
+ def initialize(string="")
+ @string=string
+ @pos=0
+ @eof=(string.size==0)
+ end
+ def pos
+ @pos
+ end
+ def eof
+ @eof
+ end
+ alias eof? eof
+ def readline(rs=$/)
+ if @eof
+ raise EOFError
+ else
+ if p = @string[@pos..-1]=~rs
+ line = @string[@pos,p+1]
+ else
+ line = @string[@pos..-1]
+ end
+ @pos+=line.size
+ @eof =true if @pos==@string.size
+ $_ = line
+ end
+ end
+ def rewind
+ seek(0,0)
+ end
+ def seek(offset,whence)
+ case whence
+ when 0
+ @pos=offset
+ when 1
+ @pos+=offset
+ when 2
+ @pos=@string.size+offset
+ end
+ @eof=(@pos>=@string.size)
+ 0
+ end
+ end
+
+ #
+ # Class method for creating streams
+ #
+ def Syck.make_stream( io )
+ if String === io
+ io = StringIO.new( io )
+ elsif not IO === io
+ raise Syck::Error, "YAML stream must be an IO or String object."
+ end
+ if Syck::unicode
+ def io.readline
+ Syck.utf_to_internal( readline( @ln_sep ), @utf_encoding )
+ end
+ def io.check_unicode
+ @utf_encoding = Syck.sniff_encoding( read( 4 ) )
+ @ln_sep = Syck.enc_separator( @utf_encoding )
+ seek( -4, IO::SEEK_CUR )
+ end
+ def io.utf_encoding
+ @utf_encoding
+ end
+ io.check_unicode
+ else
+ def io.utf_encoding
+ :None
+ end
+ end
+ io
+ end
+
+end
+
diff --git a/ext/syck/lib/syck/syck.rb b/ext/syck/lib/syck/syck.rb
new file mode 100644
index 0000000000..10e5023f46
--- /dev/null
+++ b/ext/syck/lib/syck/syck.rb
@@ -0,0 +1,16 @@
+#
+# YAML::Syck module
+# .. glues syck and yaml.rb together ..
+#
+require 'syck/basenode'
+
+module Syck
+
+ #
+ # Mixin BaseNode functionality
+ #
+ class Node
+ include Syck::BaseNode
+ end
+
+end
diff --git a/ext/syck/lib/syck/tag.rb b/ext/syck/lib/syck/tag.rb
new file mode 100644
index 0000000000..9c6de57953
--- /dev/null
+++ b/ext/syck/lib/syck/tag.rb
@@ -0,0 +1,95 @@
+# -*- mode: ruby; ruby-indent-level: 4; tab-width: 4 -*- vim: sw=4 ts=4
+# $Id$
+#
+# = yaml/tag.rb: methods for associating a taguri to a class.
+#
+# Author:: why the lucky stiff
+#
+module Syck
+ # A dictionary of taguris which map to
+ # Ruby classes.
+ @@tagged_classes = {}
+
+ #
+ # Associates a taguri _tag_ with a Ruby class _cls_. The taguri is used to give types
+ # to classes when loading YAML. Taguris are of the form:
+ #
+ # tag:authorityName,date:specific
+ #
+ # The +authorityName+ is a domain name or email address. The +date+ is the date the type
+ # was issued in YYYY or YYYY-MM or YYYY-MM-DD format. The +specific+ is a name for
+ # the type being added.
+ #
+ # For example, built-in YAML types have 'yaml.org' as the +authorityName+ and '2002' as the
+ # +date+. The +specific+ is simply the name of the type:
+ #
+ # tag:yaml.org,2002:int
+ # tag:yaml.org,2002:float
+ # tag:yaml.org,2002:timestamp
+ #
+ # The domain must be owned by you on the +date+ declared. If you don't own any domains on the
+ # date you declare the type, you can simply use an e-mail address.
+ #
+ # tag:why@ruby-lang.org,2004:notes/personal
+ #
+ def self.tag_class( tag, cls )
+ if @@tagged_classes.has_key? tag
+ warn "class #{ @@tagged_classes[tag] } held ownership of the #{ tag } tag"
+ end
+ @@tagged_classes[tag] = cls
+ end
+
+ # Returns the complete dictionary of taguris, paired with classes. The key for
+ # the dictionary is the full taguri. The value for each key is the class constant
+ # associated to that taguri.
+ #
+ # YAML.tagged_classes["tag:yaml.org,2002:int"] => Integer
+ #
+ def self.tagged_classes
+ @@tagged_classes
+ end
+end
+
+class Module
+ # :stopdoc:
+
+ # Adds a taguri _tag_ to a class, used when dumping or loading the class
+ # in YAML. See YAML::tag_class for detailed information on typing and
+ # taguris.
+ def syck_yaml_as( tag, sc = true )
+ verbose, $VERBOSE = $VERBOSE, nil
+ class_eval <<-"END", __FILE__, __LINE__+1
+ attr_writer :taguri
+ def taguri
+ if respond_to? :to_yaml_type
+ Syck.tagurize( to_yaml_type[1..-1] )
+ else
+ return @taguri if defined?(@taguri) and @taguri
+ tag = #{ tag.dump }
+ if self.class.yaml_tag_subclasses? and self.class != Syck.tagged_classes[tag]
+ tag = "\#{ tag }:\#{ self.class.yaml_tag_class_name }"
+ end
+ tag
+ end
+ end
+ def self.yaml_tag_subclasses?; #{ sc ? 'true' : 'false' }; end
+ END
+ Syck.tag_class tag, self
+ ensure
+ $VERBOSE = verbose
+ end
+ remove_method :yaml_as rescue nil
+ alias :yaml_as :syck_yaml_as
+
+ # Transforms the subclass name into a name suitable for display
+ # in a subclassed tag.
+ def yaml_tag_class_name
+ self.name
+ end
+ # Transforms the subclass name found in the tag into a Ruby
+ # constant name.
+ def yaml_tag_read_class( name )
+ name
+ end
+ # :startdoc:
+end
diff --git a/ext/syck/lib/syck/types.rb b/ext/syck/lib/syck/types.rb
new file mode 100644
index 0000000000..5c129acba4
--- /dev/null
+++ b/ext/syck/lib/syck/types.rb
@@ -0,0 +1,192 @@
+# -*- mode: ruby; ruby-indent-level: 4 -*- vim: sw=4
+#
+# Classes required by the full core typeset
+#
+
+module Syck
+
+ #
+ # Default private type
+ #
+ class PrivateType
+ def self.tag_subclasses?; false; end
+ verbose, $VERBOSE = $VERBOSE, nil
+ def initialize( type, val )
+ @type_id = type; @value = val
+ @value.taguri = "x-private:#{ @type_id }"
+ end
+ def to_yaml( opts = {} )
+ @value.to_yaml( opts )
+ end
+ ensure
+ $VERBOSE = verbose
+ end
+
+ #
+ # Default domain type
+ #
+ class DomainType
+ def self.tag_subclasses?; false; end
+ verbose, $VERBOSE = $VERBOSE, nil
+ def initialize( domain, type, val )
+ @domain = domain; @type_id = type; @value = val
+ @value.taguri = "tag:#{ @domain }:#{ @type_id }"
+ end
+ def to_yaml( opts = {} )
+ @value.to_yaml( opts )
+ end
+ ensure
+ $VERBOSE = verbose
+ end
+
+ #
+ # Unresolved objects
+ #
+ class Object
+ def self.tag_subclasses?; false; end
+ def to_yaml( opts = {} )
+ Syck.quick_emit( self, opts ) do |out|
+ out.map( "tag:ruby.yaml.org,2002:object:#{ @class }", to_yaml_style ) do |map|
+ @ivars.each do |k,v|
+ map.add( k, v )
+ end
+ end
+ end
+ end
+ end
+
+ #
+ # YAML Hash class to support comments and defaults
+ #
+ class SpecialHash < ::Hash
+ attr_accessor :default
+ def inspect
+ self.default.to_s
+ end
+ def to_s
+ self.default.to_s
+ end
+ def update( h )
+ if Syck::SpecialHash === h
+ @default = h.default if h.default
+ end
+ super( h )
+ end
+ def to_yaml( opts = {} )
+ opts[:DefaultKey] = self.default
+ super( opts )
+ end
+ end
+
+ #
+ # Builtin collection: !omap
+ #
+ class Omap < ::Array
+ yaml_as "tag:yaml.org,2002:omap"
+ def yaml_initialize( tag, val )
+ if Array === val
+ val.each do |v|
+ if Hash === v
+ concat( v.to_a ) # Convert the map to a sequence
+ else
+ raise Syck::Error, "Invalid !omap entry: " + val.inspect
+ end
+ end
+ else
+ raise Syck::Error, "Invalid !omap: " + val.inspect
+ end
+ self
+ end
+ def self.[]( *vals )
+ o = Omap.new
+ 0.step( vals.length - 1, 2 ) do |i|
+ o[vals[i]] = vals[i+1]
+ end
+ o
+ end
+ def []( k )
+ self.assoc( k ).to_a[1]
+ end
+ def []=( k, *rest )
+ val, set = rest.reverse
+ if ( tmp = self.assoc( k ) ) and not set
+ tmp[1] = val
+ else
+ self << [ k, val ]
+ end
+ val
+ end
+ def has_key?( k )
+ self.assoc( k ) ? true : false
+ end
+ def is_complex_yaml?
+ true
+ end
+ def to_yaml( opts = {} )
+ Syck.quick_emit( self, opts ) do |out|
+ out.seq( taguri, to_yaml_style ) do |seq|
+ self.each do |v|
+ seq.add( Hash[ *v ] )
+ end
+ end
+ end
+ end
+ end
+
+ #
+ # Builtin collection: !pairs
+ #
+ class Pairs < ::Array
+ yaml_as "tag:yaml.org,2002:pairs"
+ def yaml_initialize( tag, val )
+ if Array === val
+ val.each do |v|
+ if Hash === v
+ concat( v.to_a ) # Convert the map to a sequence
+ else
+ raise Syck::Error, "Invalid !pairs entry: " + val.inspect
+ end
+ end
+ else
+ raise Syck::Error, "Invalid !pairs: " + val.inspect
+ end
+ self
+ end
+ def self.[]( *vals )
+ p = Pairs.new
+ 0.step( vals.length - 1, 2 ) { |i|
+ p[vals[i]] = vals[i+1]
+ }
+ p
+ end
+ def []( k )
+ self.assoc( k ).to_a
+ end
+ def []=( k, val )
+ self << [ k, val ]
+ val
+ end
+ def has_key?( k )
+ self.assoc( k ) ? true : false
+ end
+ def is_complex_yaml?
+ true
+ end
+ def to_yaml( opts = {} )
+ Syck.quick_emit( self, opts ) do |out|
+ out.seq( taguri, to_yaml_style ) do |seq|
+ self.each do |v|
+ seq.add( Hash[ *v ] )
+ end
+ end
+ end
+ end
+ end
+
+ #
+ # Builtin collection: !set
+ #
+ class Set < ::Hash
+ yaml_as "tag:yaml.org,2002:set"
+ end
+end
diff --git a/ext/syck/lib/syck/yamlnode.rb b/ext/syck/lib/syck/yamlnode.rb
new file mode 100644
index 0000000000..2fa57b1f97
--- /dev/null
+++ b/ext/syck/lib/syck/yamlnode.rb
@@ -0,0 +1,54 @@
+#
+# YAML::YamlNode class
+#
+require 'syck/basenode'
+
+module Syck
+
+ #
+ # YAML Generic Model container
+ #
+ class YamlNode
+ include BaseNode
+ attr_accessor :kind, :type_id, :value, :anchor
+ def initialize(t, v)
+ @type_id = t
+ if Hash === v
+ @kind = 'map'
+ @value = {}
+ v.each {|key,val|
+ @value[key.transform] = [key, val]
+ }
+ elsif Array === v
+ @kind = 'seq'
+ @value = v
+ elsif String === v
+ @kind = 'scalar'
+ @value = v
+ end
+ end
+
+ #
+ # Transform this node fully into a native type
+ #
+ def transform
+ t = nil
+ if @value.is_a? Hash
+ t = {}
+ @value.each { |k,v|
+ t[ k ] = v[1].transform
+ }
+ elsif @value.is_a? Array
+ t = []
+ @value.each { |v|
+ t.push v.transform
+ }
+ else
+ t = @value
+ end
+ Syck.transfer_method( @type_id, t )
+ end
+
+ end
+
+end
diff --git a/ext/syck/lib/syck/ypath.rb b/ext/syck/lib/syck/ypath.rb
new file mode 100644
index 0000000000..024dcb7f4e
--- /dev/null
+++ b/ext/syck/lib/syck/ypath.rb
@@ -0,0 +1,54 @@
+#
+# YAML::YPath
+#
+
+warn "#{caller[0]}: YAML::YPath is deprecated" if $VERBOSE
+
+module Syck
+
+ class YPath
+ attr_accessor :segments, :predicates, :flags
+ def initialize( str )
+ @segments = []
+ @predicates = []
+ @flags = nil
+ while str =~ /^\/?(\/|[^\/\[]+)(?:\[([^\]]+)\])?/
+ @segments.push $1
+ @predicates.push $2
+ str = $'
+ end
+ unless str.to_s.empty?
+ @segments += str.split( "/" )
+ end
+ if @segments.length == 0
+ @segments.push "."
+ end
+ end
+ def self.each_path( str )
+ #
+ # Find choices
+ #
+ paths = []
+ str = "(#{ str })"
+ while str.sub!( /\(([^()]+)\)/, "\n#{ paths.length }\n" )
+ paths.push $1.split( '|' )
+ end
+
+ #
+ # Construct all possible paths
+ #
+ all = [ str ]
+ ( paths.length - 1 ).downto( 0 ) do |i|
+ all = all.collect do |a|
+ paths[i].collect do |p|
+ a.gsub( /\n#{ i }\n/, p )
+ end
+ end.flatten.uniq
+ end
+ all.collect do |path|
+ yield YPath.new( path )
+ end
+ end
+ end
+
+end
diff --git a/ext/syck/lib/yaml/syck.rb b/ext/syck/lib/yaml/syck.rb
new file mode 100644
index 0000000000..5b5d1c494e
--- /dev/null
+++ b/ext/syck/lib/yaml/syck.rb
@@ -0,0 +1,14 @@
+# $Id$
+#
+# = yaml/syck.rb:
+#
+
+require 'stringio'
+require 'syck.so'
+require 'syck/error'
+require 'syck/syck'
+require 'syck/tag'
+require 'syck/stream'
+require 'syck/constants'
+require 'syck/rubytypes'
+require 'syck/types'
diff --git a/ext/syck/node.c b/ext/syck/node.c
new file mode 100644
index 0000000000..35c1f45150
--- /dev/null
+++ b/ext/syck/node.c
@@ -0,0 +1,407 @@
+/*
+ * node.c
+ *
+ * $Author$
+ *
+ * Copyright (C) 2003 why the lucky stiff
+ */
+
+#include "ruby/ruby.h"
+#include "syck.h"
+
+/*
+ * Node allocation functions
+ */
+SyckNode *
+syck_alloc_node( enum syck_kind_tag type )
+{
+ SyckNode *s;
+
+ s = S_ALLOC( SyckNode );
+ s->kind = type;
+ s->id = 0;
+ s->type_id = NULL;
+ s->anchor = NULL;
+ s->shortcut = NULL;
+
+ return s;
+}
+
+void
+syck_free_node( SyckNode *n )
+{
+ syck_free_members( n );
+ if ( n->type_id != NULL )
+ {
+ S_FREE( n->type_id );
+ n->type_id = NULL;
+ }
+ if ( n->anchor != NULL )
+ {
+ S_FREE( n->anchor );
+ n->anchor = NULL;
+ }
+ S_FREE( n );
+}
+
+SyckNode *
+syck_alloc_map(void)
+{
+ SyckNode *n;
+ struct SyckMap *m;
+
+ m = S_ALLOC( struct SyckMap );
+ m->style = map_none;
+ m->idx = 0;
+ m->capa = ALLOC_CT;
+ m->keys = S_ALLOC_N( SYMID, m->capa );
+ m->values = S_ALLOC_N( SYMID, m->capa );
+
+ n = syck_alloc_node( syck_map_kind );
+ n->data.pairs = m;
+
+ return n;
+}
+
+SyckNode *
+syck_alloc_seq(void)
+{
+ SyckNode *n;
+ struct SyckSeq *s;
+
+ s = S_ALLOC( struct SyckSeq );
+ s->style = seq_none;
+ s->idx = 0;
+ s->capa = ALLOC_CT;
+ s->items = S_ALLOC_N( SYMID, s->capa );
+
+ n = syck_alloc_node( syck_seq_kind );
+ n->data.list = s;
+
+ return n;
+}
+
+SyckNode *
+syck_alloc_str(void)
+{
+ SyckNode *n;
+ struct SyckStr *s;
+
+ s = S_ALLOC( struct SyckStr );
+ s->len = 0;
+ s->ptr = NULL;
+ s->style = scalar_none;
+
+ n = syck_alloc_node( syck_str_kind );
+ n->data.str = s;
+
+ return n;
+}
+
+SyckNode *
+syck_new_str( const char *str, enum scalar_style style )
+{
+ return syck_new_str2( str, strlen( str ), style );
+}
+
+SyckNode *
+syck_new_str2( const char *str, long len, enum scalar_style style )
+{
+ SyckNode *n;
+
+ n = syck_alloc_str();
+ n->data.str->ptr = S_ALLOC_N( char, len + 1 );
+ n->data.str->len = len;
+ n->data.str->style = style;
+ memcpy( n->data.str->ptr, str, len );
+ n->data.str->ptr[len] = '\0';
+
+ return n;
+}
+
+void
+syck_replace_str( SyckNode *n, char *str, enum scalar_style style )
+{
+ syck_replace_str2( n, str, strlen( str ), style );
+}
+
+void
+syck_replace_str2( SyckNode *n, char *str, long len, enum scalar_style style )
+{
+ if ( n->data.str->ptr != NULL )
+ {
+ S_FREE( n->data.str->ptr );
+ n->data.str->ptr = NULL;
+ n->data.str->len = 0;
+ }
+ n->data.str->ptr = S_ALLOC_N( char, len + 1 );
+ n->data.str->len = len;
+ n->data.str->style = style;
+ memcpy( n->data.str->ptr, str, len );
+ n->data.str->ptr[len] = '\0';
+}
+
+void
+syck_str_blow_away_commas( SyckNode *n )
+{
+ char *go, *end;
+
+ go = n->data.str->ptr;
+ end = go + n->data.str->len;
+ while ( *(++go) != '\0' )
+ {
+ if ( *go == ',' )
+ {
+ n->data.str->len -= 1;
+ memmove( go, go + 1, end - go );
+ end -= 1;
+ }
+ }
+}
+
+char *
+syck_str_read( SyckNode *n )
+{
+ ASSERT( n != NULL );
+ return n->data.str->ptr;
+}
+
+SyckNode *
+syck_new_map( SYMID key, SYMID value )
+{
+ SyckNode *n;
+
+ n = syck_alloc_map();
+ syck_map_add( n, key, value );
+
+ return n;
+}
+
+void
+syck_map_empty( SyckNode *n )
+{
+ struct SyckMap *m;
+ ASSERT( n != NULL );
+ ASSERT( n->data.list != NULL );
+
+ S_FREE( n->data.pairs->keys );
+ S_FREE( n->data.pairs->values );
+ m = n->data.pairs;
+ m->idx = 0;
+ m->capa = ALLOC_CT;
+ m->keys = S_ALLOC_N( SYMID, m->capa );
+ m->values = S_ALLOC_N( SYMID, m->capa );
+}
+
+void
+syck_map_add( SyckNode *map, SYMID key, SYMID value )
+{
+ struct SyckMap *m;
+ long idx;
+
+ ASSERT( map != NULL );
+ ASSERT( map->data.pairs != NULL );
+
+ m = map->data.pairs;
+ idx = m->idx;
+ m->idx += 1;
+ if ( m->idx > m->capa )
+ {
+ m->capa += ALLOC_CT;
+ S_REALLOC_N( m->keys, SYMID, m->capa );
+ S_REALLOC_N( m->values, SYMID, m->capa );
+ }
+ m->keys[idx] = key;
+ m->values[idx] = value;
+}
+
+void
+syck_map_update( SyckNode *map1, SyckNode *map2 )
+{
+ struct SyckMap *m1, *m2;
+ long new_idx, new_capa;
+ ASSERT( map1 != NULL );
+ ASSERT( map2 != NULL );
+
+ m1 = map1->data.pairs;
+ m2 = map2->data.pairs;
+ if ( m2->idx < 1 ) return;
+
+ new_idx = m1->idx;
+ new_idx += m2->idx;
+ new_capa = m1->capa;
+ while ( new_idx > new_capa )
+ {
+ new_capa += ALLOC_CT;
+ }
+ if ( new_capa > m1->capa )
+ {
+ m1->capa = new_capa;
+ S_REALLOC_N( m1->keys, SYMID, m1->capa );
+ S_REALLOC_N( m1->values, SYMID, m1->capa );
+ }
+ for ( new_idx = 0; new_idx < m2->idx; m1->idx++, new_idx++ )
+ {
+ m1->keys[m1->idx] = m2->keys[new_idx];
+ m1->values[m1->idx] = m2->values[new_idx];
+ }
+}
+
+long
+syck_map_count( SyckNode *map )
+{
+ ASSERT( map != NULL );
+ ASSERT( map->data.pairs != NULL );
+ return map->data.pairs->idx;
+}
+
+void
+syck_map_assign( SyckNode *map, enum map_part p, long idx, SYMID id )
+{
+ struct SyckMap *m;
+
+ ASSERT( map != NULL );
+ m = map->data.pairs;
+ ASSERT( m != NULL );
+ if ( p == map_key )
+ {
+ m->keys[idx] = id;
+ }
+ else
+ {
+ m->values[idx] = id;
+ }
+}
+
+SYMID
+syck_map_read( SyckNode *map, enum map_part p, long idx )
+{
+ struct SyckMap *m;
+
+ ASSERT( map != NULL );
+ m = map->data.pairs;
+ ASSERT( m != NULL );
+ if ( p == map_key )
+ {
+ return m->keys[idx];
+ }
+ else
+ {
+ return m->values[idx];
+ }
+}
+
+SyckNode *
+syck_new_seq( SYMID value )
+{
+ SyckNode *n;
+
+ n = syck_alloc_seq();
+ syck_seq_add( n, value );
+
+ return n;
+}
+
+void
+syck_seq_empty( SyckNode *n )
+{
+ struct SyckSeq *s;
+ ASSERT( n != NULL );
+ ASSERT( n->data.list != NULL );
+
+ S_FREE( n->data.list->items );
+ s = n->data.list;
+ s->idx = 0;
+ s->capa = ALLOC_CT;
+ s->items = S_ALLOC_N( SYMID, s->capa );
+}
+
+void
+syck_seq_add( SyckNode *arr, SYMID value )
+{
+ struct SyckSeq *s;
+ long idx;
+
+ ASSERT( arr != NULL );
+ ASSERT( arr->data.list != NULL );
+
+ s = arr->data.list;
+ idx = s->idx;
+ s->idx += 1;
+ if ( s->idx > s->capa )
+ {
+ s->capa += ALLOC_CT;
+ S_REALLOC_N( s->items, SYMID, s->capa );
+ }
+ s->items[idx] = value;
+}
+
+long
+syck_seq_count( SyckNode *seq )
+{
+ ASSERT( seq != NULL );
+ ASSERT( seq->data.list != NULL );
+ return seq->data.list->idx;
+}
+
+void
+syck_seq_assign( SyckNode *seq, long idx, SYMID id )
+{
+ struct SyckSeq *s;
+
+ ASSERT( map != NULL );
+ s = seq->data.list;
+ ASSERT( m != NULL );
+ s->items[idx] = id;
+}
+
+SYMID
+syck_seq_read( SyckNode *seq, long idx )
+{
+ struct SyckSeq *s;
+
+ ASSERT( seq != NULL );
+ s = seq->data.list;
+ ASSERT( s != NULL );
+ return s->items[idx];
+}
+
+void
+syck_free_members( SyckNode *n )
+{
+ if ( n == NULL ) return;
+
+ switch ( n->kind )
+ {
+ case syck_str_kind:
+ if ( n->data.str != NULL )
+ {
+ S_FREE( n->data.str->ptr );
+ n->data.str->ptr = NULL;
+ n->data.str->len = 0;
+ S_FREE( n->data.str );
+ n->data.str = NULL;
+ }
+ break;
+
+ case syck_seq_kind:
+ if ( n->data.list != NULL )
+ {
+ S_FREE( n->data.list->items );
+ S_FREE( n->data.list );
+ n->data.list = NULL;
+ }
+ break;
+
+ case syck_map_kind:
+ if ( n->data.pairs != NULL )
+ {
+ S_FREE( n->data.pairs->keys );
+ S_FREE( n->data.pairs->values );
+ S_FREE( n->data.pairs );
+ n->data.pairs = NULL;
+ }
+ break;
+ }
+}
+
diff --git a/ext/syck/rubyext.c b/ext/syck/rubyext.c
new file mode 100644
index 0000000000..2ab2e49482
--- /dev/null
+++ b/ext/syck/rubyext.c
@@ -0,0 +1,2328 @@
+/* -*- indent-tabs-mode: nil -*- */
+/*
+ * rubyext.c
+ *
+ * $Author$
+ *
+ * Copyright (C) 2003-2005 why the lucky stiff
+ */
+
+#include "ruby/ruby.h"
+#include "ruby/encoding.h"
+#include "syck.h"
+#include <sys/types.h>
+#include <time.h>
+
+typedef struct RVALUE {
+ union {
+#if 0
+ struct {
+ unsigned long flags; /* always 0 for freed obj */
+ struct RVALUE *next;
+ } free;
+#endif
+ struct RBasic basic;
+ struct RObject object;
+ struct RClass klass;
+ /*struct RFloat flonum;*/
+ /*struct RString string;*/
+ struct RArray array;
+ /*struct RRegexp regexp;*/
+ struct RHash hash;
+ /*struct RData data;*/
+ struct RStruct rstruct;
+ /*struct RBignum bignum;*/
+ /*struct RFile file;*/
+ } as;
+} RVALUE;
+
+typedef struct {
+ long hash;
+ char *buffer;
+ long length;
+ long remaining;
+ int printed;
+} bytestring_t;
+
+#define RUBY_DOMAIN "ruby.yaml.org,2002"
+
+/*
+ * symbols and constants
+ */
+static ID s_new, s_utc, s_at, s_to_f, s_to_i, s_read, s_binmode, s_call, s_cmp, s_transfer, s_update, s_dup, s_haskey, s_match, s_keys, s_unpack, s_tr_bang, s_default_set, s_tag_read_class, s_tag_subclasses, s_resolver, s_push, s_emitter, s_level, s_detect_implicit, s_node_import, s_out, s_input, s_intern, s_transform, s_yaml_new, s_yaml_initialize, s_node_export, s_to_yaml, s_write, s_set_resolver, s_each;
+static ID s_tags, s_kind, s_name, s_options, s_type_id, s_type_id_set, s_style, s_style_set, s_value, s_value_set, s_parse;
+static VALUE sym_model, sym_generic, sym_input, sym_bytecode;
+static VALUE sym_scalar, sym_seq, sym_map;
+static VALUE sym_1quote, sym_2quote, sym_fold, sym_literal, sym_plain, sym_inline;
+static VALUE cDate, cNode, cMap, cSeq, cScalar, cOut, cParser, cResolver, cPrivateType, cDomainType, cYObject, cBadAlias, cDefaultKey, cMergeKey, cEmitter, cDateTime;
+static VALUE oDefaultResolver, oGenericResolver;
+
+/*
+ * my private collection of numerical oddities.
+ */
+static double S_zero(void) { return 0.0; }
+static double S_one(void) { return 1.0; }
+static double S_inf(void) { return S_one() / S_zero(); }
+static double S_nan(void) { return S_zero() / S_zero(); }
+
+static VALUE syck_node_transform( VALUE );
+
+/*
+ * handler prototypes
+ */
+SYMID rb_syck_load_handler _((SyckParser *, SyckNode *));
+void rb_syck_err_handler _((SyckParser *, const char *));
+SyckNode * rb_syck_bad_anchor_handler _((SyckParser *, char *));
+void rb_syck_output_handler _((SyckEmitter *, char *, long));
+void rb_syck_emitter_handler _((SyckEmitter *, st_data_t));
+int syck_parser_assign_io _((SyckParser *, VALUE *));
+VALUE syck_scalar_alloc _((VALUE class));
+VALUE syck_seq_alloc _((VALUE class));
+VALUE syck_map_alloc _((VALUE class));
+
+struct parser_xtra {
+ VALUE data; /* Borrowed this idea from marshal.c to fix [ruby-core:8067] problem */
+ VALUE proc;
+ VALUE resolver;
+ int taint;
+};
+
+struct emitter_xtra {
+ VALUE oid;
+ VALUE data;
+ VALUE port;
+};
+
+/*
+ * Convert YAML to bytecode
+ */
+VALUE
+rb_syck_compile(VALUE self, VALUE port)
+{
+ SYMID oid;
+ int taint;
+ char *ret;
+ VALUE bc;
+ bytestring_t *sav = NULL;
+ void *data = NULL;
+
+ SyckParser *parser = syck_new_parser();
+ taint = syck_parser_assign_io(parser, &port);
+ syck_parser_handler( parser, syck_yaml2byte_handler );
+ syck_parser_error_handler( parser, NULL );
+ syck_parser_implicit_typing( parser, 0 );
+ syck_parser_taguri_expansion( parser, 0 );
+ oid = syck_parse( parser );
+ if (!syck_lookup_sym( parser, oid, &data )) {
+ rb_raise(rb_eSyntaxError, "root node <%p> not found", (void *)oid);
+ }
+ sav = data;
+
+ ret = S_ALLOCA_N( char, strlen( sav->buffer ) + 3 );
+ ret[0] = '\0';
+ strcat( ret, "D\n" );
+ strcat( ret, sav->buffer );
+
+ syck_free_parser( parser );
+
+ bc = rb_str_new2( ret );
+ if ( taint ) OBJ_TAINT( bc );
+ return bc;
+}
+
+/*
+ * read from io.
+ */
+long
+rb_syck_io_str_read( char *buf, SyckIoStr *str, long max_size, long skip )
+{
+ long len = 0;
+
+ ASSERT( str != NULL );
+ max_size -= skip;
+
+ if ( max_size <= 0 ) max_size = 0;
+ else
+ {
+ /*
+ * call io#read.
+ */
+ VALUE src = (VALUE)str->ptr;
+ VALUE n = LONG2NUM(max_size);
+ VALUE str2 = rb_funcall2(src, s_read, 1, &n);
+ if (!NIL_P(str2))
+ {
+ StringValue(str2);
+ len = RSTRING_LEN(str2);
+ memcpy( buf + skip, RSTRING_PTR(str2), len );
+ }
+ }
+ len += skip;
+ buf[len] = '\0';
+ return len;
+}
+
+/*
+ * determine: are we reading from a string or io?
+ * (returns tainted? boolean)
+ */
+int
+syck_parser_assign_io(SyckParser *parser, VALUE *pport)
+{
+ int taint = Qtrue;
+ VALUE tmp, port = *pport;
+ if (!NIL_P(tmp = rb_check_string_type(port))) {
+ taint = OBJ_TAINTED(port); /* original taintedness */
+ port = tmp;
+ syck_parser_str( parser, RSTRING_PTR(port), RSTRING_LEN(port), NULL );
+ }
+ else if (rb_respond_to(port, s_read)) {
+ if (rb_respond_to(port, s_binmode)) {
+ rb_funcall2(port, s_binmode, 0, 0);
+ }
+ syck_parser_str( parser, (char *)port, 0, rb_syck_io_str_read );
+ }
+ else {
+ rb_raise(rb_eTypeError, "instance of IO needed");
+ }
+ *pport = port;
+ return taint;
+}
+
+/*
+ * Get value in hash by key, forcing an empty hash if nil.
+ */
+VALUE
+syck_get_hash_aref(VALUE hsh, VALUE key)
+{
+ VALUE val = rb_hash_aref( hsh, key );
+ if ( NIL_P( val ) )
+ {
+ val = rb_hash_new();
+ rb_hash_aset(hsh, key, val);
+ }
+ return val;
+}
+
+/*
+ * creating timestamps
+ */
+struct mktime_arg {
+ const char *str;
+ long len;
+};
+
+VALUE
+mktime_do(VALUE varg)
+{
+ struct mktime_arg *arg = (struct mktime_arg *)varg;
+ VALUE time;
+ const char *str = arg->str;
+ long len = arg->len;
+ const char *ptr = str;
+ VALUE year = INT2FIX(0);
+ VALUE mon = INT2FIX(0);
+ VALUE day = INT2FIX(0);
+ VALUE hour = INT2FIX(0);
+ VALUE min = INT2FIX(0);
+ VALUE sec = INT2FIX(0);
+ long usec;
+
+ /* Year*/
+ if ( ptr[0] != '\0' && len > 0 ) {
+ year = INT2FIX(strtol(ptr, NULL, 10));
+ }
+
+ /* Month*/
+ ptr += 4;
+ if ( ptr[0] != '\0' && len > ptr - str ) {
+ while ( !ISDIGIT( *ptr ) ) ptr++;
+ mon = INT2FIX(strtol(ptr, NULL, 10));
+ }
+
+ /* Day*/
+ ptr += 2;
+ if ( ptr[0] != '\0' && len > ptr - str ) {
+ while ( !ISDIGIT( *ptr ) ) ptr++;
+ day = INT2FIX(strtol(ptr, NULL, 10));
+ }
+
+ /* Hour*/
+ ptr += 2;
+ if ( ptr[0] != '\0' && len > ptr - str ) {
+ while ( !ISDIGIT( *ptr ) ) ptr++;
+ hour = INT2FIX(strtol(ptr, NULL, 10));
+ }
+
+ /* Minute */
+ ptr += 2;
+ if ( ptr[0] != '\0' && len > ptr - str ) {
+ while ( !ISDIGIT( *ptr ) ) ptr++;
+ min = INT2FIX(strtol(ptr, NULL, 10));
+ }
+
+ /* Second */
+ ptr += 2;
+ if ( ptr[0] != '\0' && len > ptr - str ) {
+ while ( !ISDIGIT( *ptr ) ) ptr++;
+ sec = INT2FIX(strtol(ptr, NULL, 10));
+ }
+
+ /* Millisecond */
+ ptr += 2;
+ if ( len > ptr - str && *ptr == '.' )
+ {
+ char padded[] = "000000";
+ const int padding = (int)(sizeof(padded) - 1);
+ const char *end = ptr + 1;
+ const char *begin = end;
+ ptrdiff_t length;
+ while ( isdigit( *end ) ) end++;
+ if ((length = (end - begin)) > padding) length = padding;
+ MEMCPY(padded, begin, char, length);
+ usec = strtol(padded, NULL, 10);
+ }
+ else
+ {
+ usec = 0;
+ }
+
+ /* Time Zone*/
+ while ( len > ptr - str && *ptr != 'Z' && *ptr != '+' && *ptr != '-' && *ptr != '\0' ) ptr++;
+ if ( len > ptr - str && ( *ptr == '-' || *ptr == '+' ) )
+ {
+ time_t tz_offset = strtol(ptr, NULL, 10) * 3600;
+ VALUE tmp;
+
+ while ( *ptr != ':' && *ptr != '\0' ) ptr++;
+ if ( *ptr == ':' )
+ {
+ ptr += 1;
+ if ( tz_offset < 0 )
+ {
+ tz_offset -= strtol(ptr, NULL, 10) * 60;
+ }
+ else
+ {
+ tz_offset += strtol(ptr, NULL, 10) * 60;
+ }
+ }
+
+ /* Make TZ time*/
+ time = rb_funcall(rb_cTime, s_utc, 6, year, mon, day, hour, min, sec);
+ tmp = rb_funcall(time, s_to_i, 0);
+ tmp = rb_funcall(tmp, '-', 1, LONG2FIX(tz_offset));
+ return rb_funcall(rb_cTime, s_at, 2, tmp, LONG2NUM(usec));
+ }
+ else
+ {
+ /* Make UTC time*/
+ return rb_funcall(rb_cTime, s_utc, 7, year, mon, day, hour, min, sec, LONG2NUM(usec));
+ }
+}
+
+VALUE
+mktime_r(VALUE varg)
+{
+ struct mktime_arg *arg = (struct mktime_arg *)varg;
+
+ if (!cDateTime) {
+ /*
+ * Load Date module
+ */
+ rb_require("date");
+ cDateTime = rb_const_get(rb_cObject, rb_intern("DateTime"));
+ }
+ return rb_funcall(cDateTime, s_parse, 1, rb_str_new(arg->str, arg->len));
+}
+
+VALUE
+rb_syck_mktime(const char *str, long len)
+{
+ struct mktime_arg a;
+
+ a.str = str;
+ a.len = len;
+ return rb_rescue2(mktime_do, (VALUE)&a, mktime_r, (VALUE)&a, rb_eArgError, NULL);
+}
+
+/*
+ * handles merging of an array of hashes
+ * (see http://www.yaml.org/type/merge/)
+ */
+VALUE
+syck_merge_i(VALUE entry, VALUE hsh )
+{
+ VALUE tmp;
+ if ( !NIL_P(tmp = rb_check_convert_type(entry, T_HASH, "Hash", "to_hash")) )
+ {
+ entry = tmp;
+ rb_funcall( hsh, s_update, 1, entry );
+ }
+ return Qnil;
+}
+
+/*
+ * default handler for ruby.yaml.org types
+ */
+int
+yaml_org_handler( SyckNode *n, VALUE *ref )
+{
+ char *type_id = n->type_id;
+ int transferred = 0;
+ long i = 0;
+ VALUE obj = Qnil;
+
+ if ( type_id != NULL && strncmp( type_id, "tag:yaml.org,2002:", 18 ) == 0 )
+ {
+ type_id += 18;
+ }
+
+ switch (n->kind)
+ {
+ case syck_str_kind:
+ transferred = 1;
+ if ( type_id == NULL )
+ {
+ obj = rb_str_new( n->data.str->ptr, n->data.str->len );
+ }
+ else if ( strcmp( type_id, "null" ) == 0 )
+ {
+ obj = Qnil;
+ }
+ else if ( strcmp( type_id, "binary" ) == 0 )
+ {
+ VALUE arr;
+ obj = rb_str_new( n->data.str->ptr, n->data.str->len );
+ rb_funcall( obj, s_tr_bang, 2, rb_str_new2( "\n\t " ), rb_str_new2( "" ) );
+ arr = rb_funcall( obj, s_unpack, 1, rb_str_new2( "m" ) );
+ obj = rb_ary_shift( arr );
+ }
+ else if ( strcmp( type_id, "bool#yes" ) == 0 )
+ {
+ obj = Qtrue;
+ }
+ else if ( strcmp( type_id, "bool#no" ) == 0 )
+ {
+ obj = Qfalse;
+ }
+ else if ( strcmp( type_id, "int#hex" ) == 0 )
+ {
+ syck_str_blow_away_commas( n );
+ obj = rb_cstr2inum( n->data.str->ptr, 16 );
+ }
+ else if ( strcmp( type_id, "int#oct" ) == 0 )
+ {
+ syck_str_blow_away_commas( n );
+ obj = rb_cstr2inum( n->data.str->ptr, 8 );
+ }
+ else if ( strcmp( type_id, "int#base60" ) == 0 )
+ {
+ char *ptr, *end;
+ long sixty = 1;
+ long total = 0;
+ syck_str_blow_away_commas( n );
+ ptr = n->data.str->ptr;
+ end = n->data.str->ptr + n->data.str->len;
+ while ( end > ptr )
+ {
+ long bnum = 0;
+ char *colon = end - 1;
+ while ( colon >= ptr && *colon != ':' )
+ {
+ colon--;
+ }
+ if ( colon >= ptr && *colon == ':' ) *colon = '\0';
+
+ bnum = strtol( colon + 1, NULL, 10 );
+ total += bnum * sixty;
+ sixty *= 60;
+ end = colon;
+ }
+ obj = INT2FIX(total);
+ }
+ else if ( strncmp( type_id, "int", 3 ) == 0 )
+ {
+ syck_str_blow_away_commas( n );
+ obj = rb_cstr2inum( n->data.str->ptr, 10 );
+ }
+ else if ( strcmp( type_id, "float#base60" ) == 0 )
+ {
+ char *ptr, *end;
+ long sixty = 1;
+ double total = 0.0;
+ syck_str_blow_away_commas( n );
+ ptr = n->data.str->ptr;
+ end = n->data.str->ptr + n->data.str->len;
+ while ( end > ptr )
+ {
+ double bnum = 0;
+ char *colon = end - 1;
+ while ( colon >= ptr && *colon != ':' )
+ {
+ colon--;
+ }
+ if ( colon >= ptr && *colon == ':' ) *colon = '\0';
+
+ bnum = strtod( colon + 1, NULL );
+ total += bnum * sixty;
+ sixty *= 60;
+ end = colon;
+ }
+ obj = rb_float_new( total );
+ }
+ else if ( strcmp( type_id, "float#nan" ) == 0 )
+ {
+ obj = rb_float_new( S_nan() );
+ }
+ else if ( strcmp( type_id, "float#inf" ) == 0 )
+ {
+ obj = rb_float_new( S_inf() );
+ }
+ else if ( strcmp( type_id, "float#neginf" ) == 0 )
+ {
+ obj = rb_float_new( -S_inf() );
+ }
+ else if ( strncmp( type_id, "float", 5 ) == 0 )
+ {
+ double f;
+ syck_str_blow_away_commas( n );
+ f = strtod( n->data.str->ptr, NULL );
+ obj = rb_float_new( f );
+ }
+ else if ( strcmp( type_id, "timestamp#iso8601" ) == 0 )
+ {
+ obj = rb_syck_mktime( n->data.str->ptr, n->data.str->len );
+ }
+ else if ( strcmp( type_id, "timestamp#spaced" ) == 0 )
+ {
+ obj = rb_syck_mktime( n->data.str->ptr, n->data.str->len );
+ }
+ else if ( strcmp( type_id, "timestamp#ymd" ) == 0 )
+ {
+ char *ptr = n->data.str->ptr;
+ VALUE year, mon, day;
+
+ /* Year*/
+ ptr[4] = '\0';
+ year = INT2FIX(strtol(ptr, NULL, 10));
+
+ /* Month*/
+ ptr += 4;
+ while ( !ISDIGIT( *ptr ) ) ptr++;
+ mon = INT2FIX(strtol(ptr, NULL, 10));
+
+ /* Day*/
+ ptr += 2;
+ while ( !ISDIGIT( *ptr ) ) ptr++;
+ day = INT2FIX(strtol(ptr, NULL, 10));
+
+ if ( !cDate ) {
+ /*
+ * Load Date module
+ */
+ rb_require( "date" );
+ cDate = rb_const_get( rb_cObject, rb_intern("Date") );
+ }
+
+ obj = rb_funcall( cDate, s_new, 3, year, mon, day );
+ }
+ else if ( strncmp( type_id, "timestamp", 9 ) == 0 )
+ {
+ obj = rb_syck_mktime( n->data.str->ptr, n->data.str->len );
+ }
+ else if ( strncmp( type_id, "merge", 5 ) == 0 )
+ {
+ obj = rb_funcall( cMergeKey, s_new, 0 );
+ }
+ else if ( strncmp( type_id, "default", 7 ) == 0 )
+ {
+ obj = rb_funcall( cDefaultKey, s_new, 0 );
+ }
+ else if ( n->data.str->style == scalar_plain &&
+ n->data.str->len > 1 &&
+ strncmp( n->data.str->ptr, ":", 1 ) == 0 )
+ {
+ obj = rb_funcall( oDefaultResolver, s_transfer, 2,
+ rb_str_new2( "tag:ruby.yaml.org,2002:sym" ),
+ rb_str_new( n->data.str->ptr + 1, n->data.str->len - 1 ) );
+ }
+ else if ( strcmp( type_id, "str" ) == 0 )
+ {
+ obj = rb_str_new( n->data.str->ptr, n->data.str->len );
+ rb_enc_associate(obj, rb_utf8_encoding());
+ }
+ else
+ {
+ transferred = 0;
+ obj = rb_str_new( n->data.str->ptr, n->data.str->len );
+ }
+ break;
+
+ case syck_seq_kind:
+ if ( type_id == NULL || strcmp( type_id, "seq" ) == 0 )
+ {
+ transferred = 1;
+ }
+ obj = rb_ary_new2( n->data.list->idx );
+ for ( i = 0; i < n->data.list->idx; i++ )
+ {
+ rb_ary_store( obj, i, syck_seq_read( n, i ) );
+ }
+ break;
+
+ case syck_map_kind:
+ if ( type_id == NULL || strcmp( type_id, "map" ) == 0 )
+ {
+ transferred = 1;
+ }
+ obj = rb_hash_new();
+ for ( i = 0; i < n->data.pairs->idx; i++ )
+ {
+ VALUE k = syck_map_read( n, map_key, i );
+ VALUE v = syck_map_read( n, map_value, i );
+ int skip_aset = 0;
+
+ /*
+ * Handle merge keys
+ */
+ if ( rb_obj_is_kind_of( k, cMergeKey ) )
+ {
+ VALUE tmp;
+ if ( !NIL_P(tmp = rb_check_convert_type(v, T_HASH, "Hash", "to_hash")) )
+ {
+ VALUE dup = rb_funcall( tmp, s_dup, 0 );
+ rb_funcall( dup, s_update, 1, obj );
+ obj = dup;
+ skip_aset = 1;
+ }
+ else if ( !NIL_P(tmp = rb_check_array_type(v)) )
+ {
+ VALUE end = rb_ary_pop( tmp );
+ VALUE tmph = rb_check_convert_type(end, T_HASH, "Hash", "to_hash");
+ if ( !NIL_P(tmph) )
+ {
+ VALUE dup = rb_funcall( tmph, s_dup, 0 );
+ tmp = rb_ary_reverse( tmp );
+ rb_ary_push( tmp, obj );
+ rb_block_call( tmp, s_each, 0, 0, syck_merge_i, dup );
+ obj = dup;
+ skip_aset = 1;
+ }
+ }
+ }
+ else if ( rb_obj_is_kind_of( k, cDefaultKey ) )
+ {
+ rb_funcall( obj, s_default_set, 1, v );
+ skip_aset = 1;
+ }
+
+ if ( ! skip_aset )
+ {
+ rb_hash_aset( obj, k, v );
+ }
+ }
+ break;
+ }
+
+ *ref = obj;
+ return transferred;
+}
+
+static void syck_node_mark( SyckNode *n );
+
+/*
+ * {native mode} node handler
+ * - Converts data into native Ruby types
+ */
+SYMID
+rb_syck_load_handler(SyckParser *p, SyckNode *n)
+{
+ VALUE obj = Qnil;
+ struct parser_xtra *bonus = (struct parser_xtra *)p->bonus;
+ VALUE resolver = bonus->resolver;
+ if ( NIL_P( resolver ) )
+ {
+ resolver = oDefaultResolver;
+ }
+
+ /*
+ * Create node,
+ */
+ obj = rb_funcall( resolver, s_node_import, 1, Data_Wrap_Struct( cNode, NULL, NULL, n ) );
+
+ /*
+ * ID already set, let's alter the symbol table to accept the new object
+ */
+ if (n->id > 0 && !NIL_P(obj))
+ {
+ MEMCPY((void *)n->id, (void *)obj, RVALUE, 1);
+ MEMZERO((void *)obj, RVALUE, 1);
+ obj = n->id;
+ }
+
+ if ( bonus->taint) OBJ_TAINT( obj );
+ if ( bonus->proc != 0 ) rb_funcall(bonus->proc, s_call, 1, obj);
+
+ rb_hash_aset(bonus->data, INT2FIX(RHASH_SIZE(bonus->data)), obj);
+ return obj;
+}
+
+/*
+ * friendly errors.
+ */
+void
+rb_syck_err_handler(SyckParser *p, const char *msg)
+{
+ char *endl = p->cursor;
+
+ while ( *endl != '\0' && *endl != '\n' )
+ endl++;
+
+ endl[0] = '\0';
+ rb_raise(rb_eArgError, "%s on line %d, col %"PRIdPTRDIFF": `%s'",
+ msg,
+ p->linect,
+ p->cursor - p->lineptr,
+ p->lineptr);
+}
+
+/*
+ * provide bad anchor object to the parser.
+ */
+SyckNode *
+rb_syck_bad_anchor_handler(SyckParser *p, char *a)
+{
+ VALUE anchor_name = rb_str_new2( a );
+ SyckNode *badanc = syck_new_map( rb_str_new2( "name" ), anchor_name );
+ badanc->type_id = syck_strndup( "tag:ruby.yaml.org,2002:object:YAML::Syck::BadAlias", 53 );
+ return badanc;
+}
+
+/*
+ * data loaded based on the model requested.
+ */
+void
+syck_set_model(VALUE p, VALUE input, VALUE model)
+{
+ SyckParser *parser;
+ Data_Get_Struct(p, SyckParser, parser);
+ syck_parser_handler( parser, rb_syck_load_handler );
+ /* WARN: gonna be obsoleted soon!! */
+ if ( model == sym_generic )
+ {
+ rb_funcall( p, s_set_resolver, 1, oGenericResolver );
+ }
+ syck_parser_implicit_typing( parser, 1 );
+ syck_parser_taguri_expansion( parser, 1 );
+
+ if ( NIL_P( input ) )
+ {
+ input = rb_ivar_get( p, s_input );
+ }
+ if ( input == sym_bytecode )
+ {
+ syck_parser_set_input_type( parser, syck_bytecode_utf8 );
+ }
+ else
+ {
+ syck_parser_set_input_type( parser, syck_yaml_utf8 );
+ }
+ syck_parser_error_handler( parser, rb_syck_err_handler );
+ syck_parser_bad_anchor_handler( parser, rb_syck_bad_anchor_handler );
+}
+
+static int
+syck_st_mark_nodes( char *key, SyckNode *n, char *arg )
+{
+ if ( n != (void *)1 ) syck_node_mark( n );
+ return ST_CONTINUE;
+}
+
+/*
+ * mark parser nodes
+ */
+static void
+syck_mark_parser(SyckParser *parser)
+{
+ struct parser_xtra *bonus = (struct parser_xtra *)parser->bonus;
+ rb_gc_mark_maybe(parser->root);
+ rb_gc_mark_maybe(parser->root_on_error);
+ rb_gc_mark( bonus->data );
+ rb_gc_mark( bonus->proc );
+ rb_gc_mark( bonus->resolver );
+
+ if ( parser->anchors != NULL )
+ {
+ st_foreach( parser->anchors, syck_st_mark_nodes, 0 );
+ }
+ if ( parser->bad_anchors != NULL )
+ {
+ st_foreach( parser->bad_anchors, syck_st_mark_nodes, 0 );
+ }
+}
+
+/*
+ * Free the parser and any bonus attachment.
+ */
+void
+rb_syck_free_parser(SyckParser *p)
+{
+ S_FREE( p->bonus );
+ syck_free_parser(p);
+}
+
+/*
+ * YAML::Syck::Parser.allocate
+ */
+VALUE syck_parser_s_alloc _((VALUE));
+VALUE
+syck_parser_s_alloc(VALUE class)
+{
+ VALUE pobj;
+ SyckParser *parser = syck_new_parser();
+
+ parser->bonus = S_ALLOC( struct parser_xtra );
+ S_MEMZERO( parser->bonus, struct parser_xtra, 1 );
+
+ pobj = Data_Wrap_Struct( class, syck_mark_parser, rb_syck_free_parser, parser );
+
+ syck_parser_set_root_on_error( parser, Qnil );
+
+ return pobj;
+}
+
+/*
+ * YAML::Syck::Parser.initialize( resolver, options )
+ */
+static VALUE
+syck_parser_initialize(int argc, VALUE *argv, VALUE self)
+{
+ VALUE options;
+ if (rb_scan_args(argc, argv, "01", &options) == 0)
+ {
+ options = rb_hash_new();
+ }
+ else
+ {
+ Check_Type(options, T_HASH);
+ }
+ rb_ivar_set(self, s_options, options);
+ rb_ivar_set(self, s_input, Qnil);
+ return self;
+}
+
+/*
+ * YAML::Syck::Parser.bufsize = Integer
+ */
+static VALUE
+syck_parser_bufsize_set(VALUE self, VALUE size)
+{
+ SyckParser *parser;
+
+ if ( rb_respond_to( size, s_to_i ) ) {
+ int n = NUM2INT(rb_funcall(size, s_to_i, 0));
+ Data_Get_Struct(self, SyckParser, parser);
+ parser->bufsize = n;
+ }
+ return self;
+}
+
+/*
+ * YAML::Syck::Parser.bufsize => Integer
+ */
+static VALUE
+syck_parser_bufsize_get(VALUE self)
+{
+ SyckParser *parser;
+
+ Data_Get_Struct(self, SyckParser, parser);
+ return INT2FIX( parser->bufsize );
+}
+
+/*
+ * YAML::Syck::Parser.load( IO or String )
+ */
+VALUE
+syck_parser_load(int argc, VALUE *argv, VALUE self)
+{
+ VALUE port, proc, model, input;
+ SyckParser *parser;
+ struct parser_xtra *bonus;
+
+ rb_scan_args(argc, argv, "11", &port, &proc);
+
+ input = rb_hash_aref( rb_attr_get( self, s_options ), sym_input );
+ model = rb_hash_aref( rb_attr_get( self, s_options ), sym_model );
+ Data_Get_Struct(self, SyckParser, parser);
+ syck_set_model( self, input, model );
+
+ bonus = (struct parser_xtra *)parser->bonus;
+ bonus->taint = syck_parser_assign_io(parser, &port);
+ bonus->data = rb_hash_new();
+ bonus->resolver = rb_attr_get( self, s_resolver );
+ if ( NIL_P( proc ) ) bonus->proc = 0;
+ else bonus->proc = proc;
+
+ return syck_parse( parser );
+}
+
+/*
+ * YAML::Syck::Parser.load_documents( IO or String ) { |doc| }
+ */
+VALUE
+syck_parser_load_documents(int argc, VALUE *argv, VALUE self)
+{
+ VALUE port, proc, v, input, model;
+ SyckParser *parser;
+ struct parser_xtra *bonus;
+
+ rb_scan_args(argc, argv, "1&", &port, &proc);
+
+ input = rb_hash_aref( rb_attr_get( self, s_options ), sym_input );
+ model = rb_hash_aref( rb_attr_get( self, s_options ), sym_model );
+ Data_Get_Struct(self, SyckParser, parser);
+ syck_set_model( self, input, model );
+
+ bonus = (struct parser_xtra *)parser->bonus;
+ bonus->taint = syck_parser_assign_io(parser, &port);
+ bonus->resolver = rb_attr_get( self, s_resolver );
+ bonus->proc = 0;
+
+ while ( 1 )
+ {
+ /* Reset hash for tracking nodes */
+ bonus->data = rb_hash_new();
+
+ /* Parse a document */
+ v = syck_parse( parser );
+ if ( parser->eof == 1 )
+ {
+ break;
+ }
+
+ /* Pass document to block */
+ rb_funcall( proc, s_call, 1, v );
+ }
+
+ return Qnil;
+}
+
+/*
+ * YAML::Syck::Parser#set_resolver
+ */
+VALUE
+syck_parser_set_resolver(VALUE self, VALUE resolver)
+{
+ rb_ivar_set( self, s_resolver, resolver );
+ return self;
+}
+
+/*
+ * YAML::Syck::Resolver.initialize
+ */
+static VALUE
+syck_resolver_initialize(VALUE self)
+{
+ rb_ivar_set(self, s_tags, rb_hash_new());
+ return self;
+}
+
+/*
+ * YAML::Syck::Resolver#add_type
+ */
+VALUE
+syck_resolver_add_type(VALUE self, VALUE taguri, VALUE cls)
+{
+ VALUE tags = rb_attr_get(self, s_tags);
+ rb_hash_aset( tags, taguri, cls );
+ return Qnil;
+}
+
+/*
+ * YAML::Syck::Resolver#use_types_at
+ */
+VALUE
+syck_resolver_use_types_at(VALUE self, VALUE hsh)
+{
+ rb_ivar_set( self, s_tags, hsh );
+ return Qnil;
+}
+
+/*
+ * YAML::Syck::Resolver#detect_implicit
+ */
+VALUE
+syck_resolver_detect_implicit(VALUE self, VALUE val)
+{
+ return rb_str_new2( "" );
+}
+
+/*
+ * YAML::Syck::Resolver#node_import
+ */
+VALUE
+syck_resolver_node_import(VALUE self, VALUE node)
+{
+ SyckNode *n;
+ VALUE obj = Qnil;
+ int i = 0;
+ Data_Get_Struct(node, SyckNode, n);
+
+ switch (n->kind)
+ {
+ case syck_str_kind:
+ obj = rb_str_new( n->data.str->ptr, n->data.str->len );
+ break;
+
+ case syck_seq_kind:
+ obj = rb_ary_new2( n->data.list->idx );
+ for ( i = 0; i < n->data.list->idx; i++ )
+ {
+ rb_ary_store( obj, i, syck_seq_read( n, i ) );
+ }
+ break;
+
+ case syck_map_kind:
+ obj = rb_hash_new();
+ for ( i = 0; i < n->data.pairs->idx; i++ )
+ {
+ VALUE k = syck_map_read( n, map_key, i );
+ VALUE v = syck_map_read( n, map_value, i );
+ int skip_aset = 0;
+
+ /*
+ * Handle merge keys
+ */
+ if ( rb_obj_is_kind_of( k, cMergeKey ) )
+ {
+ if ( rb_obj_is_kind_of( v, rb_cHash ) )
+ {
+ VALUE dup = rb_funcall( v, s_dup, 0 );
+ rb_funcall( dup, s_update, 1, obj );
+ obj = dup;
+ skip_aset = 1;
+ }
+ else if ( rb_obj_is_kind_of( v, rb_cArray ) )
+ {
+ VALUE end = rb_ary_pop( v );
+ if ( rb_obj_is_kind_of( end, rb_cHash ) )
+ {
+ VALUE dup = rb_funcall( end, s_dup, 0 );
+ v = rb_ary_reverse( v );
+ rb_ary_push( v, obj );
+ rb_block_call( v, s_each, 0, 0, syck_merge_i, dup );
+ obj = dup;
+ skip_aset = 1;
+ }
+ }
+ }
+ else if ( rb_obj_is_kind_of( k, cDefaultKey ) )
+ {
+ rb_funcall( obj, s_default_set, 1, v );
+ skip_aset = 1;
+ }
+
+ if ( ! skip_aset )
+ {
+ rb_hash_aset( obj, k, v );
+ }
+ }
+ break;
+ }
+
+ if ( n->type_id != NULL )
+ {
+ obj = rb_funcall( self, s_transfer, 2, rb_str_new2( n->type_id ), obj );
+ }
+ return obj;
+}
+
+/*
+ * Set instance variables
+ */
+VALUE
+syck_set_ivars(VALUE vars, VALUE obj)
+{
+ VALUE ivname = rb_ary_entry( vars, 0 );
+ char *ivn;
+ StringValue( ivname );
+ ivn = S_ALLOCA_N( char, RSTRING_LEN(ivname) + 2 );
+ ivn[0] = '@';
+ ivn[1] = '\0';
+ strncat( ivn, RSTRING_PTR(ivname), RSTRING_LEN(ivname) );
+ rb_iv_set( obj, ivn, rb_ary_entry( vars, 1 ) );
+ return Qnil;
+}
+
+/*
+ * YAML::Syck::Resolver#const_find
+ */
+VALUE
+syck_const_find(VALUE const_name)
+{
+ VALUE tclass = rb_cObject;
+ VALUE tparts = rb_str_split( const_name, "::" );
+ int i = 0;
+ for ( i = 0; i < RARRAY_LEN(tparts); i++ ) {
+ VALUE tpart = rb_to_id( rb_ary_entry( tparts, i ) );
+ if ( !rb_const_defined( tclass, tpart ) ) return Qnil;
+ tclass = rb_const_get( tclass, tpart );
+ }
+ return tclass;
+}
+
+/*
+ * YAML::Syck::Resolver#transfer
+ */
+VALUE
+syck_resolver_transfer(VALUE self, VALUE type, VALUE val)
+{
+ if (NIL_P(type) || RSTRING_LEN(StringValue(type)) == 0)
+ {
+ type = rb_funcall( self, s_detect_implicit, 1, val );
+ }
+
+ if ( ! (NIL_P(type) || RSTRING_LEN(StringValue(type)) == 0) )
+ {
+ VALUE str_xprivate = rb_str_new2( "x-private" );
+ VALUE colon = rb_str_new2( ":" );
+ VALUE tags = rb_attr_get(self, s_tags);
+ VALUE target_class = rb_hash_aref( tags, type );
+ VALUE subclass = target_class;
+ VALUE obj = Qnil;
+
+ /*
+ * Should no tag match exactly, check for subclass format
+ */
+ if ( NIL_P( target_class ) )
+ {
+ VALUE subclass_parts = rb_ary_new();
+ VALUE parts = rb_str_split( type, ":" );
+
+ while ( RARRAY_LEN(parts) > 1 )
+ {
+ VALUE partial;
+ rb_ary_unshift( subclass_parts, rb_ary_pop( parts ) );
+ partial = rb_ary_join( parts, colon );
+ target_class = rb_hash_aref( tags, partial );
+ if ( NIL_P( target_class ) )
+ {
+ rb_str_append( partial, colon );
+ target_class = rb_hash_aref( tags, partial );
+ }
+
+ /*
+ * Possible subclass found, see if it supports subclassing
+ */
+ if ( ! NIL_P( target_class ) )
+ {
+ subclass = target_class;
+ if ( RARRAY_LEN(subclass_parts) > 0 && rb_respond_to( target_class, s_tag_subclasses ) &&
+ RTEST( rb_funcall( target_class, s_tag_subclasses, 0 ) ) )
+ {
+ VALUE subclass_v;
+ subclass = rb_ary_join( subclass_parts, colon );
+ subclass = rb_funcall( target_class, s_tag_read_class, 1, subclass );
+ subclass_v = syck_const_find( subclass );
+
+ if ( subclass_v != Qnil )
+ {
+ subclass = subclass_v;
+ }
+ else if ( rb_cObject == target_class && subclass_v == Qnil )
+ {
+ target_class = cYObject;
+ type = subclass;
+ subclass = cYObject;
+ }
+ else /* workaround for SEGV. real fix please */
+ {
+ rb_raise( rb_eTypeError, "invalid subclass" );
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ /* rb_raise(rb_eTypeError, "invalid typing scheme: %s given",
+ * scheme);
+ */
+
+ if ( rb_respond_to( target_class, s_call ) )
+ {
+ obj = rb_funcall( target_class, s_call, 2, type, val );
+ }
+ else
+ {
+ if ( rb_respond_to( target_class, s_yaml_new ) )
+ {
+ obj = rb_funcall( target_class, s_yaml_new, 3, subclass, type, val );
+ }
+ else if ( !NIL_P( target_class ) )
+ {
+ if ( subclass == rb_cBignum )
+ {
+ obj = rb_str2inum( val, 10 ); /* for yaml dumped by 1.8.3 [ruby-core:6159] */
+ }
+ else
+ {
+ obj = rb_obj_alloc( subclass );
+ }
+
+ if ( rb_respond_to( obj, s_yaml_initialize ) )
+ {
+ rb_funcall( obj, s_yaml_initialize, 2, type, val );
+ }
+ else if ( !NIL_P( obj ) && rb_obj_is_instance_of( val, rb_cHash ) )
+ {
+ rb_block_call( val, s_each, 0, 0, syck_set_ivars, obj );
+ }
+ }
+ else
+ {
+ VALUE parts = rb_str_split( type, ":" );
+ VALUE scheme = rb_ary_shift( parts );
+ if ( rb_str_cmp( scheme, str_xprivate ) == 0 )
+ {
+ VALUE name = rb_ary_join( parts, colon );
+ obj = rb_funcall( cPrivateType, s_new, 2, name, val );
+ }
+ else
+ {
+ VALUE domain = rb_ary_shift( parts );
+ VALUE name = rb_ary_join( parts, colon );
+ obj = rb_funcall( cDomainType, s_new, 3, domain, name, val );
+ }
+ }
+ }
+ val = obj;
+ }
+
+ return val;
+}
+
+/*
+ * YAML::Syck::Resolver#tagurize
+ */
+VALUE
+syck_resolver_tagurize(VALUE self, VALUE val)
+{
+ VALUE tmp = rb_check_string_type(val);
+
+ if ( !NIL_P(tmp) )
+ {
+ char *taguri = syck_type_id_to_uri( RSTRING_PTR(tmp) );
+ val = rb_str_new2( taguri );
+ S_FREE( taguri );
+ }
+
+ return val;
+}
+
+/*
+ * YAML::Syck::DefaultResolver#detect_implicit
+ */
+VALUE
+syck_defaultresolver_detect_implicit(VALUE self, VALUE val)
+{
+ const char *type_id;
+ VALUE tmp = rb_check_string_type(val);
+
+ if ( !NIL_P(tmp) )
+ {
+ val = tmp;
+ type_id = syck_match_implicit( RSTRING_PTR(val), RSTRING_LEN(val) );
+ return rb_str_new2( type_id );
+ }
+
+ return rb_str_new2( "" );
+}
+
+/*
+ * YAML::Syck::DefaultResolver#node_import
+ */
+VALUE
+syck_defaultresolver_node_import(VALUE self, VALUE node)
+{
+ SyckNode *n;
+ VALUE obj;
+ Data_Get_Struct( node, SyckNode, n );
+ if ( !yaml_org_handler( n, &obj ) )
+ {
+ obj = rb_funcall( self, s_transfer, 2, rb_str_new2( n->type_id ), obj );
+ }
+ return obj;
+}
+
+/*
+ * YAML::Syck::GenericResolver#node_import
+ */
+VALUE
+syck_genericresolver_node_import(VALUE self, VALUE node)
+{
+ SyckNode *n;
+ int i = 0;
+ VALUE t = Qnil, obj = Qnil, v = Qnil, style = Qnil;
+ Data_Get_Struct(node, SyckNode, n);
+
+ if ( n->type_id != NULL )
+ {
+ t = rb_str_new2(n->type_id);
+ }
+
+ switch (n->kind)
+ {
+ case syck_str_kind:
+ {
+ v = rb_str_new( n->data.str->ptr, n->data.str->len );
+ rb_enc_associate(v, rb_utf8_encoding());
+ if ( n->data.str->style == scalar_1quote )
+ {
+ style = sym_1quote;
+ }
+ else if ( n->data.str->style == scalar_2quote )
+ {
+ style = sym_2quote;
+ }
+ else if ( n->data.str->style == scalar_fold )
+ {
+ style = sym_fold;
+ }
+ else if ( n->data.str->style == scalar_literal )
+ {
+ style = sym_literal;
+ }
+ else if ( n->data.str->style == scalar_plain )
+ {
+ style = sym_plain;
+ }
+ obj = rb_funcall( cScalar, s_new, 3, t, v, style );
+ }
+ break;
+
+ case syck_seq_kind:
+ v = rb_ary_new2( syck_seq_count( n ) );
+ for ( i = 0; i < syck_seq_count( n ); i++ )
+ {
+ rb_ary_store( v, i, syck_seq_read( n, i ) );
+ }
+ if ( n->data.list->style == seq_inline )
+ {
+ style = sym_inline;
+ }
+ obj = rb_funcall( cSeq, s_new, 3, t, v, style );
+ rb_iv_set(obj, "@kind", sym_seq);
+ break;
+
+ case syck_map_kind:
+ v = rb_hash_new();
+ for ( i = 0; i < syck_map_count( n ); i++ )
+ {
+ rb_hash_aset( v, syck_map_read( n, map_key, i ), syck_map_read( n, map_value, i ) );
+ }
+ if ( n->data.pairs->style == map_inline )
+ {
+ style = sym_inline;
+ }
+ obj = rb_funcall( cMap, s_new, 3, t, v, style );
+ rb_iv_set(obj, "@kind", sym_map);
+ break;
+ }
+
+ return obj;
+}
+
+/*
+ * YAML::Syck::BadAlias.initialize
+ */
+VALUE
+syck_badalias_initialize(VALUE self, VALUE val)
+{
+ rb_iv_set( self, "@name", val );
+ return self;
+}
+
+/*
+ * YAML::Syck::BadAlias.<=>
+ */
+VALUE
+syck_badalias_cmp(VALUE alias1, VALUE alias2)
+{
+ VALUE str1 = rb_ivar_get( alias1, s_name );
+ VALUE str2 = rb_ivar_get( alias2, s_name );
+ VALUE val = rb_funcall( str1, s_cmp, 1, str2 );
+ return val;
+}
+
+/*
+ * YAML::DomainType.initialize
+ */
+VALUE
+syck_domaintype_initialize(VALUE self, VALUE domain, VALUE type_id, VALUE val)
+{
+ rb_iv_set( self, "@domain", domain );
+ rb_iv_set( self, "@type_id", type_id );
+ rb_iv_set( self, "@value", val );
+ return self;
+}
+
+/*
+ * YAML::Object.initialize
+ */
+VALUE
+syck_yobject_initialize(VALUE self, VALUE klass, VALUE ivars)
+{
+ rb_iv_set( self, "@class", klass );
+ rb_iv_set( self, "@ivars", ivars );
+ return self;
+}
+
+/*
+ * YAML::PrivateType.initialize
+ */
+VALUE
+syck_privatetype_initialize(VALUE self, VALUE type_id, VALUE val)
+{
+ rb_iv_set( self, "@type_id", type_id );
+ rb_iv_set( self, "@value", val );
+ return self;
+}
+
+/*
+ * Mark node contents.
+ */
+static void
+syck_node_mark(SyckNode *n)
+{
+ int i;
+ rb_gc_mark_maybe( n->id );
+ switch ( n->kind )
+ {
+ case syck_seq_kind:
+ for ( i = 0; i < n->data.list->idx; i++ )
+ {
+ rb_gc_mark( syck_seq_read( n, i ) );
+ }
+ break;
+
+ case syck_map_kind:
+ for ( i = 0; i < n->data.pairs->idx; i++ )
+ {
+ rb_gc_mark( syck_map_read( n, map_key, i ) );
+ rb_gc_mark( syck_map_read( n, map_value, i ) );
+ }
+ break;
+
+ case syck_str_kind:
+ default:
+ /* nothing */
+ break;
+ }
+#if 0 /* maybe needed */
+ if ( n->shortcut ) syck_node_mark( n->shortcut ); /* caution: maybe cyclic */
+#endif
+}
+
+/*
+ * YAML::Syck::Scalar.allocate
+ */
+VALUE
+syck_scalar_alloc(VALUE class)
+{
+ SyckNode *node = syck_alloc_str();
+ VALUE obj = Data_Wrap_Struct( class, syck_node_mark, syck_free_node, node );
+ node->id = obj;
+ return obj;
+}
+
+/*
+ * YAML::Syck::Scalar.initialize
+ */
+VALUE
+syck_scalar_initialize(VALUE self, VALUE type_id, VALUE val, VALUE style)
+{
+ rb_iv_set( self, "@kind", sym_scalar );
+ rb_funcall( self, s_type_id_set, 1, type_id );
+ rb_funcall( self, s_value_set, 1, val );
+ rb_funcall( self, s_style_set, 1, style );
+ return self;
+}
+
+/*
+ * YAML::Syck::Scalar.style=
+ */
+VALUE
+syck_scalar_style_set(VALUE self, VALUE style)
+{
+ SyckNode *node;
+ Data_Get_Struct( self, SyckNode, node );
+
+ if ( NIL_P( style ) )
+ {
+ node->data.str->style = scalar_none;
+ }
+ else if ( style == sym_1quote )
+ {
+ node->data.str->style = scalar_1quote;
+ }
+ else if ( style == sym_2quote )
+ {
+ node->data.str->style = scalar_2quote;
+ }
+ else if ( style == sym_fold )
+ {
+ node->data.str->style = scalar_fold;
+ }
+ else if ( style == sym_literal )
+ {
+ node->data.str->style = scalar_literal;
+ }
+ else if ( style == sym_plain )
+ {
+ node->data.str->style = scalar_plain;
+ }
+
+ rb_iv_set( self, "@style", style );
+ return self;
+}
+
+/*
+ * YAML::Syck::Scalar.value=
+ */
+VALUE
+syck_scalar_value_set(VALUE self, VALUE val)
+{
+ SyckNode *node;
+ Data_Get_Struct( self, SyckNode, node );
+
+ StringValue( val );
+ node->data.str->ptr = syck_strndup( RSTRING_PTR(val), RSTRING_LEN(val) );
+ node->data.str->len = RSTRING_LEN(val);
+ node->data.str->style = scalar_none;
+
+ rb_iv_set( self, "@value", val );
+ return val;
+}
+
+/*
+ * YAML::Syck::Seq.allocate
+ */
+VALUE
+syck_seq_alloc(VALUE class)
+{
+ SyckNode *node;
+ VALUE obj;
+ node = syck_alloc_seq();
+ obj = Data_Wrap_Struct( class, syck_node_mark, syck_free_node, node );
+ node->id = obj;
+ return obj;
+}
+
+/*
+ * YAML::Syck::Seq.initialize
+ */
+VALUE
+syck_seq_initialize(VALUE self, VALUE type_id, VALUE val, VALUE style)
+{
+ SyckNode *node;
+ Data_Get_Struct( self, SyckNode, node );
+
+ rb_iv_set( self, "@kind", sym_seq );
+ rb_funcall( self, s_type_id_set, 1, type_id );
+ rb_funcall( self, s_value_set, 1, val );
+ rb_funcall( self, s_style_set, 1, style );
+ return self;
+}
+
+/*
+ * YAML::Syck::Seq.value=
+ */
+VALUE
+syck_seq_value_set(VALUE self, VALUE val)
+{
+ SyckNode *node;
+ Data_Get_Struct( self, SyckNode, node );
+
+ val = rb_check_array_type( val );
+ if ( !NIL_P( val ) ) {
+ int i;
+ syck_seq_empty( node );
+ for ( i = 0; i < RARRAY_LEN( val ); i++ )
+ {
+ syck_seq_add( node, rb_ary_entry(val, i) );
+ }
+ }
+
+ rb_iv_set( self, "@value", val );
+ return val;
+}
+
+/*
+ * YAML::Syck::Seq.add
+ */
+VALUE
+syck_seq_add_m(VALUE self, VALUE val)
+{
+ SyckNode *node;
+ VALUE emitter = rb_ivar_get( self, s_emitter );
+ Data_Get_Struct( self, SyckNode, node );
+
+ if ( rb_respond_to( emitter, s_node_export ) ) {
+ val = rb_funcall( emitter, s_node_export, 1, val );
+ }
+ syck_seq_add( node, val );
+ rb_ary_push( rb_ivar_get( self, s_value ), val );
+
+ return self;
+}
+
+/*
+ * YAML::Syck::Seq.style=
+ */
+VALUE
+syck_seq_style_set(VALUE self, VALUE style)
+{
+ SyckNode *node;
+ Data_Get_Struct( self, SyckNode, node );
+
+ if ( style == sym_inline )
+ {
+ node->data.list->style = seq_inline;
+ }
+ else
+ {
+ node->data.list->style = seq_none;
+ }
+
+ rb_iv_set( self, "@style", style );
+ return self;
+}
+
+/*
+ * YAML::Syck::Map.allocate
+ */
+VALUE
+syck_map_alloc(VALUE class)
+{
+ SyckNode *node;
+ VALUE obj;
+ node = syck_alloc_map();
+ obj = Data_Wrap_Struct( class, syck_node_mark, syck_free_node, node );
+ node->id = obj;
+ return obj;
+}
+
+/*
+ * YAML::Syck::Map.initialize
+ */
+VALUE
+syck_map_initialize(VALUE self, VALUE type_id, VALUE val, VALUE style)
+{
+ SyckNode *node;
+ Data_Get_Struct( self, SyckNode, node );
+
+ if ( !NIL_P( val ) )
+ {
+ VALUE hsh = rb_check_convert_type(val, T_HASH, "Hash", "to_hash");
+ VALUE keys;
+ int i;
+ if ( NIL_P(hsh) )
+ {
+ rb_raise( rb_eTypeError, "wrong argument type" );
+ }
+
+ keys = rb_funcall( hsh, s_keys, 0 );
+ for ( i = 0; i < RARRAY_LEN(keys); i++ )
+ {
+ VALUE key = rb_ary_entry(keys, i);
+ syck_map_add( node, key, rb_hash_aref(hsh, key) );
+ }
+ }
+
+ rb_iv_set( self, "@kind", sym_seq );
+ rb_funcall( self, s_type_id_set, 1, type_id );
+ rb_funcall( self, s_value_set, 1, val );
+ rb_funcall( self, s_style_set, 1, style );
+ return self;
+}
+
+/*
+ * YAML::Syck::Map.value=
+ */
+VALUE
+syck_map_value_set(VALUE self, VALUE val)
+{
+ SyckNode *node;
+ Data_Get_Struct( self, SyckNode, node );
+
+ if ( !NIL_P( val ) )
+ {
+ VALUE hsh = rb_check_convert_type(val, T_HASH, "Hash", "to_hash");
+ VALUE keys;
+ int i;
+ if ( NIL_P(hsh) )
+ {
+ rb_raise( rb_eTypeError, "wrong argument type" );
+ }
+
+ syck_map_empty( node );
+ keys = rb_funcall( hsh, s_keys, 0 );
+ for ( i = 0; i < RARRAY_LEN(keys); i++ )
+ {
+ VALUE key = rb_ary_entry(keys, i);
+ syck_map_add( node, key, rb_hash_aref(hsh, key) );
+ }
+ }
+
+ rb_iv_set( self, "@value", val );
+ return val;
+}
+
+/*
+ * YAML::Syck::Map.add
+ */
+VALUE
+syck_map_add_m(VALUE self, VALUE key, VALUE val)
+{
+ SyckNode *node;
+ VALUE emitter = rb_ivar_get( self, s_emitter );
+ Data_Get_Struct( self, SyckNode, node );
+
+ if ( rb_respond_to( emitter, s_node_export ) ) {
+ key = rb_funcall( emitter, s_node_export, 1, key );
+ val = rb_funcall( emitter, s_node_export, 1, val );
+ }
+ syck_map_add( node, key, val );
+ rb_hash_aset( rb_ivar_get( self, s_value ), key, val );
+
+ return self;
+}
+
+/*
+ * YAML::Syck::Map.style=
+ */
+VALUE
+syck_map_style_set(VALUE self, VALUE style)
+{
+ SyckNode *node;
+ Data_Get_Struct( self, SyckNode, node );
+
+ if ( style == sym_inline )
+ {
+ node->data.pairs->style = map_inline;
+ }
+ else
+ {
+ node->data.pairs->style = map_none;
+ }
+
+ rb_iv_set( self, "@style", style );
+ return self;
+}
+
+#if 0
+/*
+ * Cloning method for all node types
+ */
+VALUE
+syck_node_init_copy(VALUE copy, VALUE orig)
+{
+ SyckNode *copy_n;
+ SyckNode *orig_n;
+
+ if ( copy == orig )
+ return copy;
+
+ if ( TYPE( orig ) != T_DATA )
+ {
+ rb_raise( rb_eTypeError, "wrong argument type" );
+ }
+
+ Data_Get_Struct( orig, SyckNode, orig_n );
+ Data_Get_Struct( copy, SyckNode, copy_n );
+ MEMCPY( copy_n, orig_n, SyckNode, 1 );
+ return copy;
+}
+#endif
+
+/*
+ * YAML::Syck::Node#type_id=
+ */
+VALUE
+syck_node_type_id_set(VALUE self, VALUE type_id)
+{
+ SyckNode *node;
+ Data_Get_Struct( self, SyckNode, node );
+
+ S_FREE( node->type_id );
+
+ if ( !NIL_P( type_id ) ) {
+ StringValue( type_id );
+ node->type_id = syck_strndup( RSTRING_PTR(type_id), RSTRING_LEN(type_id) );
+ }
+
+ rb_iv_set( self, "@type_id", type_id );
+ return type_id;
+}
+
+/*
+ * YAML::Syck::Node.transform
+ */
+VALUE
+syck_node_transform(VALUE self)
+{
+ VALUE t;
+ SyckNode *n = NULL;
+ SyckNode *orig_n;
+ Data_Get_Struct(self, SyckNode, orig_n);
+ t = Data_Wrap_Struct( cNode, syck_node_mark, syck_free_node, 0 );
+
+ switch (orig_n->kind)
+ {
+ case syck_map_kind:
+ {
+ int i;
+ DATA_PTR(t) = n = syck_alloc_map();
+ for ( i = 0; i < orig_n->data.pairs->idx; i++ )
+ {
+ syck_map_add( n, rb_funcall( syck_map_read( orig_n, map_key, i ), s_transform, 0 ),
+ rb_funcall( syck_map_read( orig_n, map_value, i ), s_transform, 0 ) );
+ }
+ }
+ break;
+
+ case syck_seq_kind:
+ {
+ int i;
+ DATA_PTR(t) = n = syck_alloc_seq();
+ for ( i = 0; i < orig_n->data.list->idx; i++ )
+ {
+ syck_seq_add( n, rb_funcall( syck_seq_read( orig_n, i ), s_transform, 0 ) );
+ }
+ }
+ break;
+
+ case syck_str_kind:
+ DATA_PTR(t) = n = syck_new_str2( orig_n->data.str->ptr, orig_n->data.str->len, orig_n->data.str->style );
+ break;
+ }
+
+ if ( orig_n->type_id != NULL )
+ {
+ n->type_id = syck_strndup( orig_n->type_id, strlen( orig_n->type_id ) );
+ }
+ if ( orig_n->anchor != NULL )
+ {
+ n->anchor = syck_strndup( orig_n->anchor, strlen( orig_n->anchor ) );
+ }
+ n->id = t;
+ return rb_funcall( oDefaultResolver, s_node_import, 1, t );
+}
+
+/*
+ * Emitter callback: assembles YAML document events from
+ * Ruby symbols. This is a brilliant way to do it.
+ * No one could possibly object.
+ */
+void
+rb_syck_emitter_handler(SyckEmitter *e, st_data_t data)
+{
+ SyckNode *n;
+ Data_Get_Struct((VALUE)data, SyckNode, n);
+
+ switch (n->kind)
+ {
+ case syck_map_kind:
+ {
+ int i;
+ syck_emit_map( e, n->type_id, n->data.pairs->style );
+ for ( i = 0; i < n->data.pairs->idx; i++ )
+ {
+ syck_emit_item( e, syck_map_read( n, map_key, i ) );
+ syck_emit_item( e, syck_map_read( n, map_value, i ) );
+ }
+ syck_emit_end( e );
+ }
+ break;
+
+ case syck_seq_kind:
+ {
+ int i;
+ syck_emit_seq( e, n->type_id, n->data.list->style );
+ for ( i = 0; i < n->data.list->idx; i++ )
+ {
+ syck_emit_item( e, syck_seq_read( n, i ) );
+ }
+ syck_emit_end( e );
+ }
+ break;
+
+ case syck_str_kind:
+ {
+ syck_emit_scalar( e, n->type_id, n->data.str->style, 0, 0, 0, n->data.str->ptr, n->data.str->len );
+ }
+ break;
+ }
+}
+
+/*
+ * Handle output from the emitter
+ */
+void
+rb_syck_output_handler(SyckEmitter * emitter, char *str, long len)
+{
+ struct emitter_xtra *bonus = (struct emitter_xtra *)emitter->bonus;
+ VALUE dest = bonus->port;
+ if (TYPE(dest) == T_STRING) {
+ rb_str_cat( dest, str, len );
+ } else {
+ rb_io_write( dest, rb_str_new( str, len ) );
+ }
+}
+
+/*
+ * Helper function for marking nodes in the anchor
+ * symbol table.
+ */
+void
+syck_out_mark(VALUE emitter, VALUE node)
+{
+ SyckEmitter *emitterPtr;
+ struct emitter_xtra *bonus;
+ Data_Get_Struct(emitter, SyckEmitter, emitterPtr);
+ bonus = (struct emitter_xtra *)emitterPtr->bonus;
+ rb_ivar_set( node, s_emitter, emitter );
+ /* syck_emitter_mark_node( emitterPtr, (st_data_t)node ); */
+ if ( !NIL_P( bonus->oid ) ) {
+ rb_hash_aset( bonus->data, bonus->oid, node );
+ }
+}
+
+/*
+ * Mark emitter values.
+ */
+static void
+syck_mark_emitter(SyckEmitter *emitter)
+{
+ struct emitter_xtra *bonus = (struct emitter_xtra *)emitter->bonus;
+ rb_gc_mark( bonus->oid );
+ rb_gc_mark( bonus->data );
+ rb_gc_mark( bonus->port );
+}
+
+/*
+ * Free the emitter and any bonus attachment.
+ */
+void
+rb_syck_free_emitter(SyckEmitter *e)
+{
+ S_FREE( e->bonus );
+ syck_free_emitter(e);
+}
+
+/*
+ * YAML::Syck::Emitter.allocate
+ */
+VALUE syck_emitter_s_alloc _((VALUE));
+VALUE
+syck_emitter_s_alloc(VALUE class)
+{
+ VALUE pobj;
+ SyckEmitter *emitter = syck_new_emitter();
+
+ emitter->bonus = S_ALLOC( struct emitter_xtra );
+ S_MEMZERO( emitter->bonus, struct emitter_xtra, 1 );
+
+ pobj = Data_Wrap_Struct( class, syck_mark_emitter, rb_syck_free_emitter, emitter );
+ syck_emitter_handler( emitter, rb_syck_emitter_handler );
+ syck_output_handler( emitter, rb_syck_output_handler );
+
+ rb_ivar_set( pobj, s_out, rb_funcall( cOut, s_new, 1, pobj ) );
+ return pobj;
+}
+
+static VALUE
+id_hash_new(void)
+{
+ VALUE hash;
+ hash = rb_hash_new();
+ rb_funcall(hash, rb_intern("compare_by_identity"), 0);
+ return hash;
+}
+
+/*
+ * YAML::Syck::Emitter.reset( options )
+ */
+VALUE
+syck_emitter_reset(int argc, VALUE *argv, VALUE self)
+{
+ VALUE options, tmp;
+ SyckEmitter *emitter;
+ struct emitter_xtra *bonus;
+
+ Data_Get_Struct(self, SyckEmitter, emitter);
+ bonus = (struct emitter_xtra *)emitter->bonus;
+
+ bonus->oid = Qnil;
+ bonus->port = rb_str_new2( "" );
+ bonus->data = id_hash_new();
+
+ if (rb_scan_args(argc, argv, "01", &options) == 0)
+ {
+ options = rb_hash_new();
+ rb_ivar_set(self, s_options, options);
+ }
+ else if ( !NIL_P(tmp = rb_check_string_type(options)) )
+ {
+ bonus->port = tmp;
+ }
+ else if ( rb_respond_to( options, s_write ) )
+ {
+ bonus->port = options;
+ }
+ else
+ {
+ Check_Type(options, T_HASH);
+ rb_ivar_set(self, s_options, options);
+ }
+
+ emitter->headless = 0;
+ rb_ivar_set(self, s_level, INT2FIX(0));
+ rb_ivar_set(self, s_resolver, Qnil);
+ return self;
+}
+
+/*
+ * YAML::Syck::Emitter.emit( object_id ) { |out| ... }
+ */
+VALUE
+syck_emitter_emit(int argc, VALUE *argv, VALUE self)
+{
+ VALUE oid, proc;
+ SyckEmitter *emitter;
+ struct emitter_xtra *bonus;
+ SYMID symple;
+ int level = FIX2INT(rb_ivar_get(self, s_level)) + 1;
+ rb_ivar_set(self, s_level, INT2FIX(level));
+
+ rb_scan_args(argc, argv, "1&", &oid, &proc);
+ Data_Get_Struct(self, SyckEmitter, emitter);
+ bonus = (struct emitter_xtra *)emitter->bonus;
+
+ /* Calculate anchors, normalize nodes, build a simpler symbol table */
+ bonus->oid = oid;
+ if ( !NIL_P( oid ) && RTEST( rb_funcall( bonus->data, s_haskey, 1, oid ) ) ) {
+ symple = rb_hash_aref( bonus->data, oid );
+ } else {
+ symple = rb_funcall( proc, s_call, 1, rb_ivar_get( self, s_out ) );
+ }
+ syck_emitter_mark_node( emitter, (st_data_t)symple );
+
+ /* Second pass, build emitted string */
+ level -= 1;
+ rb_ivar_set(self, s_level, INT2FIX(level));
+ if ( level == 0 )
+ {
+ syck_emit(emitter, (st_data_t)symple);
+ syck_emitter_flush(emitter, 0);
+
+ return bonus->port;
+ }
+
+ return symple;
+}
+
+/*
+ * YAML::Syck::Emitter#node_export
+ */
+VALUE
+syck_emitter_node_export(VALUE self, VALUE node)
+{
+ return rb_funcall( node, s_to_yaml, 1, self );
+}
+
+/*
+ * YAML::Syck::Emitter#set_resolver
+ */
+VALUE
+syck_emitter_set_resolver(VALUE self, VALUE resolver)
+{
+ rb_ivar_set( self, s_resolver, resolver );
+ return self;
+}
+
+/*
+ * YAML::Syck::Out::initialize
+ */
+VALUE
+syck_out_initialize(VALUE self, VALUE emitter)
+{
+ rb_ivar_set( self, s_emitter, emitter );
+ return self;
+}
+
+/*
+ * YAML::Syck::Out::map
+ */
+VALUE
+syck_out_map(int argc, VALUE *argv, VALUE self)
+{
+ VALUE type_id, style, map;
+ if (rb_scan_args(argc, argv, "11", &type_id, &style) == 1) {
+ style = Qnil;
+ }
+ map = rb_funcall( cMap, s_new, 3, type_id, rb_hash_new(), style );
+ syck_out_mark( rb_ivar_get( self, s_emitter ), map );
+ rb_yield( map );
+ return map;
+}
+
+/*
+ * YAML::Syck::Out::seq
+ */
+VALUE
+syck_out_seq(int argc, VALUE *argv, VALUE self)
+{
+ VALUE type_id, style, seq;
+ if (rb_scan_args(argc, argv, "11", &type_id, &style) == 1) {
+ style = Qnil;
+ }
+ seq = rb_funcall( cSeq, s_new, 3, type_id, rb_ary_new(), style );
+ syck_out_mark( rb_ivar_get( self, s_emitter ), seq );
+ rb_yield( seq );
+ return seq;
+}
+
+/*
+ * YAML::Syck::Out::scalar
+syck_out_scalar( self, type_id, str, style )
+ VALUE self, type_id, str, style;
+ */
+VALUE
+syck_out_scalar(int argc, VALUE *argv, VALUE self)
+{
+ VALUE type_id, str, style, scalar;
+ rb_scan_args(argc, argv, "21", &type_id, &str, &style);
+ scalar = rb_funcall( cScalar, s_new, 3, type_id, str, style );
+ syck_out_mark( rb_ivar_get( self, s_emitter ), scalar );
+ return scalar;
+}
+
+/*
+ * Initialize Syck extension
+ */
+void
+Init_syck()
+{
+ VALUE rb_syck = rb_define_module_under( rb_cObject, "Syck" );
+ rb_define_module_function( rb_syck, "compile", rb_syck_compile, 1 );
+
+ /*
+ * Global symbols
+ */
+ s_new = rb_intern("new");
+ s_utc = rb_intern("utc");
+ s_at = rb_intern("at");
+ s_to_f = rb_intern("to_f");
+ s_to_i = rb_intern("to_i");
+ s_read = rb_intern("read");
+ s_binmode = rb_intern("binmode");
+ s_transfer = rb_intern("transfer");
+ s_call = rb_intern("call");
+ s_cmp = rb_intern("<=>");
+ s_intern = rb_intern("intern");
+ s_update = rb_intern("update");
+ s_detect_implicit = rb_intern("detect_implicit");
+ s_dup = rb_intern("dup");
+ s_default_set = rb_intern("default=");
+ s_match = rb_intern("match");
+ s_push = rb_intern("push");
+ s_haskey = rb_intern("has_key?");
+ s_keys = rb_intern("keys");
+ s_node_import = rb_intern("node_import");
+ s_tr_bang = rb_intern("tr!");
+ s_unpack = rb_intern("unpack");
+ s_write = rb_intern("write");
+ s_tag_read_class = rb_intern( "yaml_tag_read_class" );
+ s_tag_subclasses = rb_intern( "yaml_tag_subclasses?" );
+ s_emitter = rb_intern( "emitter" );
+ s_set_resolver = rb_intern( "set_resolver" );
+ s_node_export = rb_intern( "node_export" );
+ s_to_yaml = rb_intern( "to_yaml" );
+ s_transform = rb_intern( "transform" );
+ s_yaml_new = rb_intern("yaml_new");
+ s_yaml_initialize = rb_intern("yaml_initialize");
+ s_each = rb_intern("each");
+ s_parse = rb_intern("parse");
+
+ s_tags = rb_intern("@tags");
+ s_name = rb_intern("@name");
+ s_options = rb_intern("@options");
+ s_kind = rb_intern("@kind");
+ s_type_id = rb_intern("@type_id");
+ s_type_id_set = rb_intern("type_id=");
+ s_resolver = rb_intern("@resolver");
+ s_level = rb_intern( "@level" );
+ s_style = rb_intern("@style");
+ s_style_set = rb_intern("style=");
+ s_value = rb_intern("@value");
+ s_value_set = rb_intern("value=");
+ s_out = rb_intern("@out");
+ s_input = rb_intern("@input");
+
+ sym_model = ID2SYM(rb_intern("Model"));
+ sym_generic = ID2SYM(rb_intern("Generic"));
+ sym_bytecode = ID2SYM(rb_intern("bytecode"));
+ sym_map = ID2SYM(rb_intern("map"));
+ sym_scalar = ID2SYM(rb_intern("scalar"));
+ sym_seq = ID2SYM(rb_intern("seq"));
+ sym_1quote = ID2SYM(rb_intern("quote1"));
+ sym_2quote = ID2SYM(rb_intern("quote2"));
+ sym_fold = ID2SYM(rb_intern("fold"));
+ sym_literal = ID2SYM(rb_intern("literal"));
+ sym_plain = ID2SYM(rb_intern("plain"));
+ sym_inline = ID2SYM(rb_intern("inline"));
+
+ /*
+ * Define YAML::Syck::Resolver class
+ */
+ cResolver = rb_define_class_under( rb_syck, "Resolver", rb_cObject );
+ rb_define_attr( cResolver, "tags", 1, 1 );
+ rb_define_method( cResolver, "initialize", syck_resolver_initialize, 0 );
+ rb_define_method( cResolver, "add_type", syck_resolver_add_type, 2 );
+ rb_define_method( cResolver, "use_types_at", syck_resolver_use_types_at, 1 );
+ rb_define_method( cResolver, "detect_implicit", syck_resolver_detect_implicit, 1 );
+ rb_define_method( cResolver, "transfer", syck_resolver_transfer, 2 );
+ rb_define_method( cResolver, "node_import", syck_resolver_node_import, 1 );
+ rb_define_method( cResolver, "tagurize", syck_resolver_tagurize, 1 );
+
+ rb_global_variable( &oDefaultResolver );
+ oDefaultResolver = rb_funcall( cResolver, rb_intern( "new" ), 0 );
+ rb_define_singleton_method( oDefaultResolver, "node_import", syck_defaultresolver_node_import, 1 );
+ rb_define_singleton_method( oDefaultResolver, "detect_implicit", syck_defaultresolver_detect_implicit, 1 );
+ rb_define_const( rb_syck, "DefaultResolver", oDefaultResolver );
+ rb_global_variable( &oGenericResolver );
+ oGenericResolver = rb_funcall( cResolver, rb_intern( "new" ), 0 );
+ rb_define_singleton_method( oGenericResolver, "node_import", syck_genericresolver_node_import, 1 );
+ rb_define_const( rb_syck, "GenericResolver", oGenericResolver );
+
+ /*
+ * Define YAML::Syck::Parser class
+ */
+ cParser = rb_define_class_under( rb_syck, "Parser", rb_cObject );
+ rb_define_attr( cParser, "options", 1, 1 );
+ rb_define_attr( cParser, "resolver", 1, 1 );
+ rb_define_attr( cParser, "input", 1, 1 );
+ rb_define_alloc_func( cParser, syck_parser_s_alloc );
+ rb_define_method(cParser, "initialize", syck_parser_initialize, -1 );
+ rb_define_method(cParser, "bufsize=", syck_parser_bufsize_set, 1 );
+ rb_define_method(cParser, "bufsize", syck_parser_bufsize_get, 0 );
+ rb_define_method(cParser, "load", syck_parser_load, -1);
+ rb_define_method(cParser, "load_documents", syck_parser_load_documents, -1);
+ rb_define_method(cParser, "set_resolver", syck_parser_set_resolver, 1);
+
+ /*
+ * Define YAML::Syck::Node class
+ */
+ cNode = rb_define_class_under( rb_syck, "Node", rb_cObject );
+ rb_undef( cNode, rb_intern("initialize_copy") );
+ rb_define_attr( cNode, "emitter", 1, 1 );
+ rb_define_attr( cNode, "resolver", 1, 1 );
+ rb_define_attr( cNode, "kind", 1, 0 );
+ rb_define_attr( cNode, "type_id", 1, 0 );
+ rb_define_attr( cNode, "value", 1, 0 );
+ rb_define_method( cNode, "type_id=", syck_node_type_id_set, 1 );
+ rb_define_method( cNode, "transform", syck_node_transform, 0);
+
+ /*
+ * Define YAML::Syck::Scalar, YAML::Syck::Seq, YAML::Syck::Map --
+ * all are the publicly usable variants of YAML::Syck::Node
+ */
+ cScalar = rb_define_class_under( rb_syck, "Scalar", cNode );
+ rb_define_alloc_func( cScalar, syck_scalar_alloc );
+ rb_define_method( cScalar, "initialize", syck_scalar_initialize, 3 );
+ rb_define_method( cScalar, "value=", syck_scalar_value_set, 1 );
+ rb_define_method( cScalar, "style=", syck_scalar_style_set, 1 );
+ cSeq = rb_define_class_under( rb_syck, "Seq", cNode );
+ rb_define_alloc_func( cSeq, syck_seq_alloc );
+ rb_define_method( cSeq, "initialize", syck_seq_initialize, 3 );
+ rb_define_method( cSeq, "value=", syck_seq_value_set, 1 );
+ rb_define_method( cSeq, "add", syck_seq_add_m, 1 );
+ rb_define_method( cSeq, "style=", syck_seq_style_set, 1 );
+ cMap = rb_define_class_under( rb_syck, "Map", cNode );
+ rb_define_alloc_func( cMap, syck_map_alloc );
+ rb_define_method( cMap, "initialize", syck_map_initialize, 3 );
+ rb_define_method( cMap, "value=", syck_map_value_set, 1 );
+ rb_define_method( cMap, "add", syck_map_add_m, 2 );
+ rb_define_method( cMap, "style=", syck_map_style_set, 1 );
+
+ /*
+ * Define YAML::PrivateType class
+ */
+ cPrivateType = rb_define_class_under( rb_syck, "PrivateType", rb_cObject );
+ rb_define_attr( cPrivateType, "type_id", 1, 1 );
+ rb_define_attr( cPrivateType, "value", 1, 1 );
+ rb_define_method( cPrivateType, "initialize", syck_privatetype_initialize, 2);
+
+ /*
+ * Define YAML::DomainType class
+ */
+ cDomainType = rb_define_class_under( rb_syck, "DomainType", rb_cObject );
+ rb_define_attr( cDomainType, "domain", 1, 1 );
+ rb_define_attr( cDomainType, "type_id", 1, 1 );
+ rb_define_attr( cDomainType, "value", 1, 1 );
+ rb_define_method( cDomainType, "initialize", syck_domaintype_initialize, 3);
+
+ /*
+ * Define YAML::Object class
+ */
+ cYObject = rb_define_class_under( rb_syck, "Object", rb_cObject );
+ rb_define_attr( cYObject, "class", 1, 1 );
+ rb_define_attr( cYObject, "ivars", 1, 1 );
+ rb_define_method( cYObject, "initialize", syck_yobject_initialize, 2);
+ rb_define_method( cYObject, "yaml_initialize", syck_yobject_initialize, 2);
+
+ /*
+ * Define YAML::Syck::BadAlias class
+ */
+ cBadAlias = rb_define_class_under( rb_syck, "BadAlias", rb_cObject );
+ rb_define_attr( cBadAlias, "name", 1, 1 );
+ rb_define_method( cBadAlias, "initialize", syck_badalias_initialize, 1);
+ rb_define_method( cBadAlias, "<=>", syck_badalias_cmp, 1);
+ rb_include_module( cBadAlias, rb_const_get( rb_cObject, rb_intern("Comparable") ) );
+
+ /*
+ * Define YAML::Syck::MergeKey class
+ */
+ cMergeKey = rb_define_class_under( rb_syck, "MergeKey", rb_cObject );
+
+ /*
+ * Define YAML::Syck::DefaultKey class
+ */
+ cDefaultKey = rb_define_class_under( rb_syck, "DefaultKey", rb_cObject );
+
+ /*
+ * Define YAML::Syck::Out classes
+ */
+ cOut = rb_define_class_under( rb_syck, "Out", rb_cObject );
+ rb_define_attr( cOut, "emitter", 1, 1 );
+ rb_define_method( cOut, "initialize", syck_out_initialize, 1 );
+ rb_define_method( cOut, "map", syck_out_map, -1 );
+ rb_define_method( cOut, "seq", syck_out_seq, -1 );
+ rb_define_method( cOut, "scalar", syck_out_scalar, -1 );
+
+ /*
+ * Define YAML::Syck::Emitter class
+ */
+ cEmitter = rb_define_class_under( rb_syck, "Emitter", rb_cObject );
+ rb_define_attr( cEmitter, "level", 1, 1 );
+ rb_define_alloc_func( cEmitter, syck_emitter_s_alloc );
+ rb_define_method( cEmitter, "initialize", syck_emitter_reset, -1 );
+ rb_define_method( cEmitter, "reset", syck_emitter_reset, -1 );
+ rb_define_method( cEmitter, "emit", syck_emitter_emit, -1 );
+ rb_define_method( cEmitter, "set_resolver", syck_emitter_set_resolver, 1);
+ rb_define_method( cEmitter, "node_export", syck_emitter_node_export, 1);
+}
+
diff --git a/ext/syck/syck.c b/ext/syck/syck.c
new file mode 100644
index 0000000000..94e3992d3f
--- /dev/null
+++ b/ext/syck/syck.c
@@ -0,0 +1,524 @@
+/*
+ * syck.c
+ *
+ * $Author$
+ *
+ * Copyright (C) 2003 why the lucky stiff
+ */
+#include "ruby/ruby.h"
+
+#include <stdio.h>
+#include <string.h>
+
+#include "syck.h"
+
+void syck_parser_pop_level( SyckParser * );
+
+/*
+ * Custom assert
+ */
+void
+syck_assert( const char *file_name, unsigned line_num, const char *expr )
+{
+ fflush( NULL );
+ fprintf( stderr, "\nAssertion failed: %s, line %u: %s\n",
+ file_name, line_num, expr );
+ fflush( stderr );
+ abort();
+}
+
+/*
+ * Allocates and copies a string
+ */
+char *
+syck_strndup( const char *buf, long len )
+{
+ char *new = S_ALLOC_N( char, len + 1 );
+ S_MEMZERO( new, char, len + 1 );
+ S_MEMCPY( new, buf, char, len );
+ return new;
+}
+
+/*
+ * Default FILE IO function
+ */
+long
+syck_io_file_read( char *buf, SyckIoFile *file, long max_size, long skip )
+{
+ long len = 0;
+
+ ASSERT( file != NULL );
+
+ max_size -= skip;
+ len = fread( buf + skip, sizeof( char ), max_size, file->ptr );
+ len += skip;
+ buf[len] = '\0';
+
+ return len;
+}
+
+/*
+ * Default string IO function
+ */
+long
+syck_io_str_read( char *buf, SyckIoStr *str, long max_size, long skip )
+{
+ char *beg;
+ long len = 0;
+
+ ASSERT( str != NULL );
+ beg = str->ptr;
+ if ( max_size >= 0 )
+ {
+ max_size -= skip;
+ if ( max_size <= 0 ) max_size = 0;
+ else str->ptr += max_size;
+
+ if ( str->ptr > str->end )
+ {
+ str->ptr = str->end;
+ }
+ }
+ else
+ {
+ /* Use exact string length */
+ while ( str->ptr < str->end ) {
+ if (*(str->ptr++) == '\n') break;
+ }
+ }
+ if ( beg < str->ptr )
+ {
+ len = ( str->ptr - beg );
+ S_MEMCPY( buf + skip, beg, char, len );
+ }
+ len += skip;
+ buf[len] = '\0';
+
+ return len;
+}
+
+void
+syck_parser_reset_levels( SyckParser *p )
+{
+ while ( p->lvl_idx > 1 )
+ {
+ syck_parser_pop_level( p );
+ }
+
+ if ( p->lvl_idx < 1 )
+ {
+ p->lvl_idx = 1;
+ p->levels[0].spaces = -1;
+ p->levels[0].ncount = 0;
+ p->levels[0].domain = syck_strndup( "", 0 );
+ }
+ p->levels[0].status = syck_lvl_header;
+}
+
+void
+syck_parser_reset_cursor( SyckParser *p )
+{
+ if ( p->buffer == NULL )
+ {
+ p->buffer = S_ALLOC_N( char, p->bufsize );
+ S_MEMZERO( p->buffer, char, p->bufsize );
+ }
+ p->buffer[0] = '\0';
+
+ p->cursor = NULL;
+ p->lineptr = NULL;
+ p->linectptr = NULL;
+ p->token = NULL;
+ p->toktmp = NULL;
+ p->marker = NULL;
+ p->limit = NULL;
+
+ p->root = 0;
+ p->root_on_error = 0;
+ p->linect = 0;
+ p->eof = 0;
+ p->last_token = 0;
+ p->force_token = 0;
+}
+
+/*
+ * Value to return on a parse error
+ */
+void
+syck_parser_set_root_on_error( SyckParser *p, SYMID roer )
+{
+ p->root_on_error = roer;
+}
+
+/*
+ * Allocate the parser
+ */
+SyckParser *
+syck_new_parser(void)
+{
+ SyckParser *p;
+ p = S_ALLOC( SyckParser );
+ S_MEMZERO( p, SyckParser, 1 );
+ p->lvl_capa = ALLOC_CT;
+ p->levels = S_ALLOC_N( SyckLevel, p->lvl_capa );
+ p->input_type = syck_yaml_utf8;
+ p->io_type = syck_io_str;
+ p->io.str = NULL;
+ p->syms = NULL;
+ p->anchors = NULL;
+ p->bad_anchors = NULL;
+ p->implicit_typing = 1;
+ p->taguri_expansion = 0;
+ p->bufsize = SYCK_BUFFERSIZE;
+ p->buffer = NULL;
+ p->lvl_idx = 0;
+ syck_parser_reset_levels( p );
+ return p;
+}
+
+int
+syck_add_sym( SyckParser *p, void *data )
+{
+ SYMID id = 0;
+ if ( p->syms == NULL )
+ {
+ p->syms = st_init_numtable();
+ }
+ id = p->syms->num_entries + 1;
+ st_insert( p->syms, id, (st_data_t)data );
+ return (int)id;
+}
+
+int
+syck_lookup_sym( SyckParser *p, SYMID id, void **datap )
+{
+ st_data_t data;
+ int ret;
+ if ( p->syms == NULL ) return 0;
+ ret = st_lookup( p->syms, id, &data );
+ if(ret) *datap = (void *)data;
+ return ret;
+}
+
+int
+syck_st_free_nodes( char *key, SyckNode *n, char *arg )
+{
+ if ( n != (void *)1 ) syck_free_node( n );
+ n = NULL;
+ return ST_CONTINUE;
+}
+
+void
+syck_st_free( SyckParser *p )
+{
+ /*
+ * Free the anchor tables
+ */
+ if ( p->anchors != NULL )
+ {
+ st_foreach( p->anchors, syck_st_free_nodes, 0 );
+ st_free_table( p->anchors );
+ p->anchors = NULL;
+ }
+
+ if ( p->bad_anchors != NULL )
+ {
+ st_foreach( p->bad_anchors, syck_st_free_nodes, 0 );
+ st_free_table( p->bad_anchors );
+ p->bad_anchors = NULL;
+ }
+}
+
+typedef struct {
+ long hash;
+ char *buffer;
+ long length;
+ long remaining;
+ int printed;
+} bytestring_t;
+
+int
+syck_st_free_syms( void *key, bytestring_t *sav, void *dummy )
+{
+ S_FREE(sav->buffer);
+ S_FREE(sav);
+ return ST_CONTINUE;
+}
+
+void
+syck_free_parser( SyckParser *p )
+{
+ /*
+ * Free the adhoc symbol table
+ */
+ if ( p->syms != NULL )
+ {
+ st_foreach( p->syms, syck_st_free_syms, 0 );
+ st_free_table( p->syms );
+ p->syms = NULL;
+ }
+
+ /*
+ * Free tables, levels
+ */
+ syck_st_free( p );
+ syck_parser_reset_levels( p );
+ S_FREE( p->levels[0].domain );
+ S_FREE( p->levels );
+
+ if ( p->buffer != NULL )
+ {
+ S_FREE( p->buffer );
+ }
+ free_any_io( p );
+ S_FREE( p );
+}
+
+void
+syck_parser_handler( SyckParser *p, SyckNodeHandler hdlr )
+{
+ ASSERT( p != NULL );
+ p->handler = hdlr;
+}
+
+void
+syck_parser_implicit_typing( SyckParser *p, int flag )
+{
+ p->implicit_typing = ( flag == 0 ? 0 : 1 );
+}
+
+void
+syck_parser_taguri_expansion( SyckParser *p, int flag )
+{
+ p->taguri_expansion = ( flag == 0 ? 0 : 1 );
+}
+
+void
+syck_parser_error_handler( SyckParser *p, SyckErrorHandler hdlr )
+{
+ ASSERT( p != NULL );
+ p->error_handler = hdlr;
+}
+
+void
+syck_parser_bad_anchor_handler( SyckParser *p, SyckBadAnchorHandler hdlr )
+{
+ ASSERT( p != NULL );
+ p->bad_anchor_handler = hdlr;
+}
+
+void
+syck_parser_set_input_type( SyckParser *p, enum syck_parser_input input_type )
+{
+ ASSERT( p != NULL );
+ p->input_type = input_type;
+}
+
+void
+syck_parser_file( SyckParser *p, FILE *fp, SyckIoFileRead read )
+{
+ ASSERT( p != NULL );
+ free_any_io( p );
+ syck_parser_reset_cursor( p );
+ p->io_type = syck_io_file;
+ p->io.file = S_ALLOC( SyckIoFile );
+ p->io.file->ptr = fp;
+ if ( read != NULL )
+ {
+ p->io.file->read = read;
+ }
+ else
+ {
+ p->io.file->read = syck_io_file_read;
+ }
+}
+
+void
+syck_parser_str( SyckParser *p, char *ptr, long len, SyckIoStrRead read )
+{
+ ASSERT( p != NULL );
+ free_any_io( p );
+ syck_parser_reset_cursor( p );
+ p->io_type = syck_io_str;
+ p->io.str = S_ALLOC( SyckIoStr );
+ p->io.str->beg = ptr;
+ p->io.str->ptr = ptr;
+ p->io.str->end = ptr + len;
+ if ( read != NULL )
+ {
+ p->io.str->read = read;
+ }
+ else
+ {
+ p->io.str->read = syck_io_str_read;
+ }
+}
+
+void
+syck_parser_str_auto( SyckParser *p, char *ptr, SyckIoStrRead read )
+{
+ syck_parser_str( p, ptr, strlen( ptr ), read );
+}
+
+SyckLevel *
+syck_parser_current_level( SyckParser *p )
+{
+ return &p->levels[p->lvl_idx-1];
+}
+
+void
+syck_parser_pop_level( SyckParser *p )
+{
+ ASSERT( p != NULL );
+
+ /* The root level should never be popped */
+ if ( p->lvl_idx <= 1 ) return;
+
+ p->lvl_idx -= 1;
+ free( p->levels[p->lvl_idx].domain );
+}
+
+void
+syck_parser_add_level( SyckParser *p, int len, enum syck_level_status status )
+{
+ ASSERT( p != NULL );
+ if ( p->lvl_idx + 1 > p->lvl_capa )
+ {
+ p->lvl_capa += ALLOC_CT;
+ S_REALLOC_N( p->levels, SyckLevel, p->lvl_capa );
+ }
+
+ ASSERT( len > p->levels[p->lvl_idx-1].spaces );
+ p->levels[p->lvl_idx].spaces = len;
+ p->levels[p->lvl_idx].ncount = 0;
+ p->levels[p->lvl_idx].domain = syck_strndup( p->levels[p->lvl_idx-1].domain, strlen( p->levels[p->lvl_idx-1].domain ) );
+ p->levels[p->lvl_idx].status = status;
+ p->lvl_idx += 1;
+}
+
+void
+free_any_io( SyckParser *p )
+{
+ ASSERT( p != NULL );
+ switch ( p->io_type )
+ {
+ case syck_io_str:
+ if ( p->io.str != NULL )
+ {
+ S_FREE( p->io.str );
+ p->io.str = NULL;
+ }
+ break;
+
+ case syck_io_file:
+ if ( p->io.file != NULL )
+ {
+ S_FREE( p->io.file );
+ p->io.file = NULL;
+ }
+ break;
+ }
+}
+
+long
+syck_move_tokens( SyckParser *p )
+{
+ long count, skip;
+ ASSERT( p->buffer != NULL );
+
+ if ( p->token == NULL )
+ return 0;
+
+ skip = p->limit - p->token;
+ if ( ( count = p->token - p->buffer ) )
+ {
+ if (skip > 0)
+ S_MEMMOVE( p->buffer, p->token, char, skip );
+ p->token = p->buffer;
+ p->marker -= count;
+ p->cursor -= count;
+ p->toktmp -= count;
+ p->limit -= count;
+ p->lineptr -= count;
+ p->linectptr -= count;
+ }
+ return skip;
+}
+
+void
+syck_check_limit( SyckParser *p, long len )
+{
+ if ( p->cursor == NULL )
+ {
+ p->cursor = p->buffer;
+ p->lineptr = p->buffer;
+ p->linectptr = p->buffer;
+ p->marker = p->buffer;
+ }
+ p->limit = p->buffer + len;
+}
+
+long
+syck_parser_read( SyckParser *p )
+{
+ long len = 0;
+ long skip = 0;
+ ASSERT( p != NULL );
+ switch ( p->io_type )
+ {
+ case syck_io_str:
+ skip = syck_move_tokens( p );
+ len = (p->io.str->read)( p->buffer, p->io.str, SYCK_BUFFERSIZE - 1, skip );
+ break;
+
+ case syck_io_file:
+ skip = syck_move_tokens( p );
+ len = (p->io.file->read)( p->buffer, p->io.file, SYCK_BUFFERSIZE - 1, skip );
+ break;
+ }
+ syck_check_limit( p, len );
+ return len;
+}
+
+long
+syck_parser_readlen( SyckParser *p, long max_size )
+{
+ long len = 0;
+ long skip = 0;
+ ASSERT( p != NULL );
+ switch ( p->io_type )
+ {
+ case syck_io_str:
+ skip = syck_move_tokens( p );
+ len = (p->io.str->read)( p->buffer, p->io.str, max_size, skip );
+ break;
+
+ case syck_io_file:
+ skip = syck_move_tokens( p );
+ len = (p->io.file->read)( p->buffer, p->io.file, max_size, skip );
+ break;
+ }
+ syck_check_limit( p, len );
+ return len;
+}
+
+SYMID
+syck_parse( SyckParser *p )
+{
+ ASSERT( p != NULL );
+
+ syck_st_free( p );
+ syck_parser_reset_levels( p );
+ syckparse( p );
+ return p->root;
+}
+
+void
+syck_default_error_handler( SyckParser *p, const char *msg )
+{
+ printf( "Error at [Line %d, Col %"PRIdPTRDIFF"]: %s\n",
+ p->linect,
+ p->cursor - p->lineptr,
+ msg );
+}
+
diff --git a/ext/syck/syck.h b/ext/syck/syck.h
new file mode 100644
index 0000000000..8885b000de
--- /dev/null
+++ b/ext/syck/syck.h
@@ -0,0 +1,453 @@
+/*
+ * syck.h
+ *
+ * $Author$
+ *
+ * Copyright (C) 2003 why the lucky stiff
+ */
+
+#ifndef SYCK_H
+#define SYCK_H
+
+#define SYCK_YAML_MAJOR 1
+#define SYCK_YAML_MINOR 0
+
+#define YAML_DOMAIN "yaml.org,2002"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include "ruby/st.h"
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/*
+ * Memory Allocation
+ */
+#if defined(HAVE_ALLOCA_H) && !defined(__GNUC__)
+#include <alloca.h>
+#endif
+
+#ifdef DEBUG
+void syck_assert( const char *, unsigned, const char * );
+# define ASSERT(f) \
+ (( f ) ? (void)0 : syck_assert( __FILE__, __LINE__, #f ))
+#else
+# define ASSERT(f) ((void)0)
+#endif
+
+#ifndef NULL
+# define NULL (void *)0
+#endif
+
+#define ALLOC_CT 8
+#define SYCK_BUFFERSIZE 4096
+#define S_ALLOC_N(type,n) (type*)malloc(sizeof(type)*(n))
+#define S_ALLOC(type) (type*)malloc(sizeof(type))
+#define S_REALLOC_N(var,type,n) (var)=(type*)realloc((char*)(var),sizeof(type)*(n))
+#define S_FREE(n) if (n) { free(n); n = NULL; }
+
+#define S_ALLOCA_N(type,n) (type*)alloca(sizeof(type)*(n))
+
+#define S_MEMZERO(p,type,n) memset((p), 0, sizeof(type)*(n))
+#define S_MEMCPY(p1,p2,type,n) memcpy((p1), (p2), sizeof(type)*(n))
+#define S_MEMMOVE(p1,p2,type,n) memmove((p1), (p2), sizeof(type)*(n))
+#define S_MEMCMP(p1,p2,type,n) memcmp((p1), (p2), sizeof(type)*(n))
+
+#define BLOCK_FOLD 10
+#define BLOCK_LIT 20
+#define BLOCK_PLAIN 30
+#define NL_CHOMP 40
+#define NL_KEEP 50
+
+/*
+ * Node definitions
+ */
+#ifndef ST_DATA_T_DEFINED
+typedef long st_data_t;
+#endif
+
+#define SYMID st_data_t
+
+typedef struct _syck_node SyckNode;
+
+enum syck_kind_tag {
+ syck_map_kind,
+ syck_seq_kind,
+ syck_str_kind
+};
+
+enum map_part {
+ map_key,
+ map_value
+};
+
+enum map_style {
+ map_none,
+ map_inline
+};
+
+enum seq_style {
+ seq_none,
+ seq_inline
+};
+
+enum scalar_style {
+ scalar_none,
+ scalar_1quote,
+ scalar_2quote,
+ scalar_fold,
+ scalar_literal,
+ scalar_plain
+};
+
+/*
+ * Node metadata struct
+ */
+struct _syck_node {
+ /* Symbol table ID */
+ SYMID id;
+ /* Underlying kind */
+ enum syck_kind_tag kind;
+ /* Fully qualified tag-uri for type */
+ char *type_id;
+ /* Anchor name */
+ char *anchor;
+ union {
+ /* Storage for map data */
+ struct SyckMap {
+ enum map_style style;
+ SYMID *keys;
+ SYMID *values;
+ long capa;
+ long idx;
+ } *pairs;
+ /* Storage for sequence data */
+ struct SyckSeq {
+ enum seq_style style;
+ SYMID *items;
+ long capa;
+ long idx;
+ } *list;
+ /* Storage for string data */
+ struct SyckStr {
+ enum scalar_style style;
+ char *ptr;
+ long len;
+ } *str;
+ } data;
+ /* Shortcut node */
+ void *shortcut;
+};
+
+/*
+ * Parser definitions
+ */
+typedef struct _syck_parser SyckParser;
+typedef struct _syck_file SyckIoFile;
+typedef struct _syck_str SyckIoStr;
+typedef struct _syck_level SyckLevel;
+
+typedef SYMID (*SyckNodeHandler)(SyckParser *, SyckNode *);
+typedef void (*SyckErrorHandler)(SyckParser *, const char *);
+typedef SyckNode * (*SyckBadAnchorHandler)(SyckParser *, char *);
+typedef long (*SyckIoFileRead)(char *, SyckIoFile *, long, long);
+typedef long (*SyckIoStrRead)(char *, SyckIoStr *, long, long);
+
+enum syck_io_type {
+ syck_io_str,
+ syck_io_file
+};
+
+enum syck_parser_input {
+ syck_yaml_utf8,
+ syck_yaml_utf16,
+ syck_yaml_utf32,
+ syck_bytecode_utf8
+};
+
+enum syck_level_status {
+ syck_lvl_header,
+ syck_lvl_doc,
+ syck_lvl_open,
+ syck_lvl_seq,
+ syck_lvl_map,
+ syck_lvl_block,
+ syck_lvl_str,
+ syck_lvl_iseq,
+ syck_lvl_imap,
+ syck_lvl_end,
+ syck_lvl_pause,
+ syck_lvl_anctag,
+ syck_lvl_mapx,
+ syck_lvl_seqx
+};
+
+/*
+ * Parser structs
+ */
+struct _syck_file {
+ /* File pointer */
+ FILE *ptr;
+ /* Function which FILE -> buffer */
+ SyckIoFileRead read;
+};
+
+struct _syck_str {
+ /* String buffer pointers */
+ char *beg, *ptr, *end;
+ /* Function which string -> buffer */
+ SyckIoStrRead read;
+};
+
+struct _syck_level {
+ /* Indent */
+ int spaces;
+ /* Counts nodes emitted at this level, useful for parsing
+ * keys and pairs in bytecode */
+ int ncount;
+ /* Does node have anchors or tags? */
+ int anctag;
+ /* Domain prefixing at the given level */
+ char *domain;
+ /* Keeps a node status */
+ enum syck_level_status status;
+};
+
+struct _syck_parser {
+ /* Root node */
+ SYMID root, root_on_error;
+ /* Implicit typing flag */
+ int implicit_typing, taguri_expansion;
+ /* Scripting language function to handle nodes */
+ SyckNodeHandler handler;
+ /* Error handler */
+ SyckErrorHandler error_handler;
+ /* InvalidAnchor handler */
+ SyckBadAnchorHandler bad_anchor_handler;
+ /* Parser input type */
+ enum syck_parser_input input_type;
+ /* IO type */
+ enum syck_io_type io_type;
+ /* Custom buffer size */
+ size_t bufsize;
+ /* Buffer pointers */
+ char *buffer, *linectptr, *lineptr, *toktmp, *token, *cursor, *marker, *limit;
+ /* Line counter */
+ int linect;
+ /* Last token from yylex() */
+ int last_token;
+ /* Force a token upon next call to yylex() */
+ int force_token;
+ /* EOF flag */
+ int eof;
+ union {
+ SyckIoFile *file;
+ SyckIoStr *str;
+ } io;
+ /* Symbol table for anchors */
+ st_table *anchors, *bad_anchors;
+ /* Optional symbol table for SYMIDs */
+ st_table *syms;
+ /* Levels of indentation */
+ SyckLevel *levels;
+ int lvl_idx;
+ int lvl_capa;
+ /* Pointer for extension's use */
+ void *bonus;
+};
+
+/*
+ * Emitter definitions
+ */
+typedef struct _syck_emitter SyckEmitter;
+typedef struct _syck_emitter_node SyckEmitterNode;
+
+typedef void (*SyckOutputHandler)(SyckEmitter *, char *, long);
+typedef void (*SyckEmitterHandler)(SyckEmitter *, st_data_t);
+
+enum doc_stage {
+ doc_open,
+ doc_processing
+};
+
+/*
+ * Emitter struct
+ */
+struct _syck_emitter {
+ /* Headerless doc flag */
+ int headless;
+ /* Force header? */
+ int use_header;
+ /* Force version? */
+ int use_version;
+ /* Sort hash keys */
+ int sort_keys;
+ /* Anchor format */
+ char *anchor_format;
+ /* Explicit typing on all collections? */
+ int explicit_typing;
+ /* Best width on folded scalars */
+ int best_width;
+ /* Use literal[1] or folded[2] blocks on all text? */
+ enum scalar_style style;
+ /* Stage of written document */
+ enum doc_stage stage;
+ /* Level counter */
+ int level;
+ /* Default indentation */
+ int indent;
+ /* Object ignore ID */
+ SYMID ignore_id;
+ /* Symbol table for anchors */
+ st_table *markers, *anchors, *anchored;
+ /* Custom buffer size */
+ size_t bufsize;
+ /* Buffer */
+ char *buffer, *marker;
+ /* Absolute position of the buffer */
+ long bufpos;
+ /* Handler for emitter nodes */
+ SyckEmitterHandler emitter_handler;
+ /* Handler for output */
+ SyckOutputHandler output_handler;
+ /* Levels of indentation */
+ SyckLevel *levels;
+ int lvl_idx;
+ int lvl_capa;
+ /* Pointer for extension's use */
+ void *bonus;
+};
+
+/*
+ * Emitter node metadata struct
+ */
+struct _syck_emitter_node {
+ /* Node buffer position */
+ long pos;
+ /* Current indent */
+ long indent;
+ /* Collection? */
+ int is_shortcut;
+};
+
+/*
+ * Handler prototypes
+ */
+SYMID syck_hdlr_add_node( SyckParser *, SyckNode * );
+SyckNode *syck_hdlr_add_anchor( SyckParser *, char *, SyckNode * );
+void syck_hdlr_remove_anchor( SyckParser *, char * );
+SyckNode *syck_hdlr_get_anchor( SyckParser *, char * );
+void syck_add_transfer( char *, SyckNode *, int );
+char *syck_xprivate( const char *, int );
+char *syck_taguri( const char *, const char *, int );
+int syck_tagcmp( const char *, const char * );
+int syck_add_sym( SyckParser *, void * );
+int syck_lookup_sym( SyckParser *, SYMID, void ** );
+int syck_try_implicit( SyckNode * );
+char *syck_type_id_to_uri( const char * );
+void try_tag_implicit( SyckNode *, int );
+const char *syck_match_implicit( const char *, size_t );
+
+/*
+ * API prototypes
+ */
+char *syck_strndup( const char *, long );
+long syck_io_file_read( char *, SyckIoFile *, long, long );
+long syck_io_str_read( char *, SyckIoStr *, long, long );
+char *syck_base64enc( char *, long );
+char *syck_base64dec( char *, long );
+SyckEmitter *syck_new_emitter(void);
+SYMID syck_emitter_mark_node( SyckEmitter *, st_data_t );
+void syck_emitter_ignore_id( SyckEmitter *, SYMID );
+void syck_output_handler( SyckEmitter *, SyckOutputHandler );
+void syck_emitter_handler( SyckEmitter *, SyckEmitterHandler );
+void syck_free_emitter( SyckEmitter * );
+void syck_emitter_clear( SyckEmitter * );
+void syck_emitter_write( SyckEmitter *, const char *, long );
+void syck_emitter_escape( SyckEmitter *, const char *, long );
+void syck_emitter_flush( SyckEmitter *, long );
+void syck_emit( SyckEmitter *, st_data_t );
+void syck_emit_scalar( SyckEmitter *, const char *, enum scalar_style, int, int, char, const char *, long );
+void syck_emit_1quoted( SyckEmitter *, int, const char *, long );
+void syck_emit_2quoted( SyckEmitter *, int, const char *, long );
+void syck_emit_folded( SyckEmitter *, int, char, const char *, long );
+void syck_emit_literal( SyckEmitter *, char, const char *, long );
+void syck_emit_seq( SyckEmitter *, const char *, enum seq_style );
+void syck_emit_item( SyckEmitter *, st_data_t );
+void syck_emit_map( SyckEmitter *, const char *, enum map_style );
+void syck_emit_end( SyckEmitter * );
+void syck_emit_tag( SyckEmitter *, const char *, const char * );
+void syck_emit_indent( SyckEmitter * );
+SyckLevel *syck_emitter_current_level( SyckEmitter * );
+SyckLevel *syck_emitter_parent_level( SyckEmitter * );
+void syck_emitter_pop_level( SyckEmitter * );
+void syck_emitter_add_level( SyckEmitter *, int, enum syck_level_status );
+void syck_emitter_reset_levels( SyckEmitter * );
+SyckParser *syck_new_parser(void);
+void syck_free_parser( SyckParser * );
+void syck_parser_set_root_on_error( SyckParser *, SYMID );
+void syck_parser_implicit_typing( SyckParser *, int );
+void syck_parser_taguri_expansion( SyckParser *, int );
+int syck_scan_scalar( int, const char *, long );
+void syck_parser_handler( SyckParser *, SyckNodeHandler );
+void syck_parser_error_handler( SyckParser *, SyckErrorHandler );
+void syck_parser_bad_anchor_handler( SyckParser *, SyckBadAnchorHandler );
+void syck_parser_set_input_type( SyckParser *, enum syck_parser_input );
+void syck_parser_file( SyckParser *, FILE *, SyckIoFileRead );
+void syck_parser_str( SyckParser *, char *, long, SyckIoStrRead );
+void syck_parser_str_auto( SyckParser *, char *, SyckIoStrRead );
+SyckLevel *syck_parser_current_level( SyckParser * );
+void syck_parser_add_level( SyckParser *, int, enum syck_level_status );
+void syck_parser_pop_level( SyckParser * );
+void free_any_io( SyckParser * );
+long syck_parser_read( SyckParser * );
+long syck_parser_readlen( SyckParser *, long );
+SYMID syck_parse( SyckParser * );
+void syck_default_error_handler( SyckParser *, const char * );
+SYMID syck_yaml2byte_handler( SyckParser *, SyckNode * );
+char *syck_yaml2byte( char * );
+
+/*
+ * Allocation prototypes
+ */
+SyckNode *syck_alloc_map(void);
+SyckNode *syck_alloc_seq(void);
+SyckNode *syck_alloc_str(void);
+void syck_free_node( SyckNode * );
+void syck_free_members( SyckNode * );
+SyckNode *syck_new_str( const char *, enum scalar_style );
+SyckNode *syck_new_str2( const char *, long, enum scalar_style );
+void syck_replace_str( SyckNode *, char *, enum scalar_style );
+void syck_replace_str2( SyckNode *, char *, long, enum scalar_style );
+void syck_str_blow_away_commas( SyckNode * );
+char *syck_str_read( SyckNode * );
+SyckNode *syck_new_map( SYMID, SYMID );
+void syck_map_empty( SyckNode * );
+void syck_map_add( SyckNode *, SYMID, SYMID );
+SYMID syck_map_read( SyckNode *, enum map_part, long );
+void syck_map_assign( SyckNode *, enum map_part, long, SYMID );
+long syck_map_count( SyckNode * );
+void syck_map_update( SyckNode *, SyckNode * );
+SyckNode *syck_new_seq( SYMID );
+void syck_seq_empty( SyckNode * );
+void syck_seq_add( SyckNode *, SYMID );
+void syck_seq_assign( SyckNode *, long, SYMID );
+SYMID syck_seq_read( SyckNode *, long );
+long syck_seq_count( SyckNode * );
+
+/*
+ * Lexer prototypes
+ */
+void syckerror( const char * );
+int syckparse( void * );
+union YYSTYPE;
+int sycklex( union YYSTYPE *, SyckParser * );
+
+#if defined(__cplusplus)
+} /* extern "C" { */
+#endif
+
+#endif /* ifndef SYCK_H */
diff --git a/ext/syck/token.c b/ext/syck/token.c
new file mode 100644
index 0000000000..bea79c158a
--- /dev/null
+++ b/ext/syck/token.c
@@ -0,0 +1,2724 @@
+/* Generated by re2c 0.9.10 on Tue Sep 20 17:46:17 2005 */
+#line 1 "token.re"
+/*
+ * token.re
+ *
+ * $Author$
+ *
+ * Copyright (C) 2003 why the lucky stiff
+ */
+#include "ruby/ruby.h"
+#include "syck.h"
+#include "gram.h"
+
+/*
+ * Allocate quoted strings in chunks
+ */
+#define QUOTELEN 1024
+
+/*
+ * They do my bidding...
+ */
+#define YYCTYPE char
+#define YYCURSOR parser->cursor
+#define YYMARKER parser->marker
+#define YYLIMIT parser->limit
+#define YYTOKEN parser->token
+#define YYTOKTMP parser->toktmp
+#define YYLINEPTR parser->lineptr
+#define YYLINECTPTR parser->linectptr
+#define YYLINE parser->linect
+#define YYFILL(n) syck_parser_read(parser)
+
+/*
+ * Repositions the cursor at `n' offset from the token start.
+ * Only works in `Header' and `Document' sections.
+ */
+#define YYPOS(n) YYCURSOR = YYTOKEN + n
+
+/*
+ * Track line numbers
+ */
+#define NEWLINE(ptr) YYLINEPTR = ptr + newline_len(ptr); if ( YYLINEPTR > YYLINECTPTR ) { YYLINE++; YYLINECTPTR = YYLINEPTR; }
+
+/*
+ * I like seeing the level operations as macros...
+ */
+#define ADD_LEVEL(len, status) syck_parser_add_level( parser, len, status )
+#define POP_LEVEL() syck_parser_pop_level( parser )
+#define CURRENT_LEVEL() syck_parser_current_level( parser )
+
+/*
+ * Force a token next time around sycklex()
+ */
+#define FORCE_NEXT_TOKEN(tok) parser->force_token = tok;
+
+/*
+ * Nice little macro to ensure we're YAML_IOPENed to the current level.
+ * * Only use this macro in the "Document" section *
+ */
+#define ENSURE_YAML_IOPEN(last_lvl, to_len, reset) \
+ if ( last_lvl->spaces < to_len ) \
+ { \
+ if ( last_lvl->status == syck_lvl_iseq || last_lvl->status == syck_lvl_imap ) \
+ { \
+ goto Document; \
+ } \
+ else \
+ { \
+ ADD_LEVEL( to_len, syck_lvl_doc ); \
+ if ( reset == 1 ) YYPOS(0); \
+ return YAML_IOPEN; \
+ } \
+ }
+
+/*
+ * Nice little macro to ensure closure of levels.
+ * * Only use this macro in the "Document" section *
+ */
+#define ENSURE_YAML_IEND(last_lvl, to_len) \
+ if ( last_lvl->spaces > to_len ) \
+ { \
+ syck_parser_pop_level( parser ); \
+ YYPOS(0); \
+ return YAML_IEND; \
+ }
+
+/*
+ * Concatenates quoted string items and manages allocation
+ * to the quoted string
+ */
+#define QUOTECAT(s, c, i, l) \
+ { \
+ if ( i + 1 >= c ) \
+ { \
+ c += QUOTELEN; \
+ S_REALLOC_N( s, char, c ); \
+ } \
+ s[i++] = l; \
+ s[i] = '\0'; \
+ }
+
+#define QUOTECATS(s, c, i, cs, cl) \
+ { \
+ while ( i + cl >= c ) \
+ { \
+ c += QUOTELEN; \
+ S_REALLOC_N( s, char, c ); \
+ } \
+ S_MEMCPY( s + i, cs, char, cl ); \
+ i += cl; \
+ s[i] = '\0'; \
+ }
+
+/*
+ * Tags a plain scalar with a transfer method
+ * * Use only in "Plain" section *
+ */
+#define RETURN_IMPLICIT() \
+ { \
+ SyckNode *n = syck_alloc_str(); \
+ YYCURSOR = YYTOKEN; \
+ n->data.str->ptr = qstr; \
+ n->data.str->len = qidx; \
+ n->data.str->style = scalar_plain; \
+ sycklval->nodeData = n; \
+ if ( parser->implicit_typing == 1 ) \
+ { \
+ try_tag_implicit( sycklval->nodeData, parser->taguri_expansion ); \
+ } \
+ return YAML_PLAIN; \
+ }
+
+/* concat the inline characters to the plain scalar */
+#define PLAIN_NOT_INL() \
+ if ( *(YYCURSOR - 1) == ' ' || is_newline( YYCURSOR - 1 ) ) \
+ { \
+ YYCURSOR--; \
+ } \
+ QUOTECATS(qstr, qcapa, qidx, YYTOKEN, YYCURSOR - YYTOKEN); \
+ goto Plain2;
+
+/* trim spaces off the end in case of indent */
+#define PLAIN_IS_INL() \
+ char *walker = qstr + qidx - 1; \
+ while ( walker > qstr && ( *walker == '\n' || *walker == ' ' || *walker == '\t' ) ) \
+ { \
+ qidx--; \
+ walker[0] = '\0'; \
+ walker--; \
+ }
+
+/*
+ * Keep or chomp block?
+ * * Use only in "ScalarBlock" section *
+ */
+#define RETURN_YAML_BLOCK() \
+ { \
+ SyckNode *n = syck_alloc_str(); \
+ if ( ((SyckParser *)parser)->taguri_expansion == 1 ) \
+ { \
+ n->type_id = syck_taguri( YAML_DOMAIN, "str", 3 ); \
+ } \
+ else \
+ { \
+ n->type_id = syck_strndup( "str", 3 ); \
+ } \
+ n->data.str->ptr = qstr; \
+ n->data.str->len = qidx; \
+ if ( blockType == BLOCK_LIT ) { \
+ n->data.str->style = scalar_literal; \
+ } else { \
+ n->data.str->style = scalar_fold; \
+ } \
+ if ( qidx > 0 ) \
+ { \
+ if ( nlDoWhat != NL_KEEP ) \
+ { \
+ char *fc = n->data.str->ptr + n->data.str->len - 1; \
+ while ( is_newline( fc ) ) fc--; \
+ if ( nlDoWhat != NL_CHOMP && fc < n->data.str->ptr + n->data.str->len - 1 ) \
+ fc += 1; \
+ n->data.str->len = fc - n->data.str->ptr + 1; \
+ } \
+ } \
+ sycklval->nodeData = n; \
+ return YAML_BLOCK; \
+ }
+
+/*
+ * Handles newlines, calculates indent
+ */
+#define GOBBLE_UP_YAML_INDENT( ict, start ) \
+ char *indent = start; \
+ NEWLINE(indent); \
+ while ( indent < YYCURSOR ) \
+ { \
+ if ( is_newline( ++indent ) ) \
+ { \
+ NEWLINE(indent); \
+ } \
+ } \
+ ict = 0; \
+ if ( *YYCURSOR == '\0' ) \
+ { \
+ ict = -1; \
+ start = YYCURSOR - 1; \
+ } \
+ else if ( *YYLINEPTR == ' ' ) \
+ { \
+ ict = (int)(YYCURSOR - YYLINEPTR); \
+ }
+
+/*
+ * If an indent exists at the current level, back up.
+ */
+#define GET_TRUE_YAML_INDENT(indt_len) \
+ { \
+ SyckLevel *lvl_deep = CURRENT_LEVEL(); \
+ indt_len = lvl_deep->spaces; \
+ if ( lvl_deep->status == syck_lvl_seq || ( indt_len == YYCURSOR - YYLINEPTR && lvl_deep->status != syck_lvl_map ) ) \
+ { \
+ SyckLevel *lvl_over; \
+ parser->lvl_idx--; \
+ lvl_over = CURRENT_LEVEL(); \
+ indt_len = lvl_over->spaces; \
+ parser->lvl_idx++; \
+ } \
+ }
+
+/*
+ * Argjh! I hate globals! Here for syckerror() only!
+ */
+SyckParser *syck_parser_ptr = NULL;
+
+/*
+ * Accessory funcs later in this file.
+ */
+void eat_comments( SyckParser * );
+char escape_seq( char );
+int is_newline( char *ptr );
+int newline_len( char *ptr );
+int sycklex_yaml_utf8( YYSTYPE *, SyckParser * );
+int sycklex_bytecode_utf8( YYSTYPE *, SyckParser * );
+int syckwrap();
+
+/*
+ * My own re-entrant sycklex() using re2c.
+ * You really get used to the limited regexp.
+ * It's really nice to not rely on backtracking and such.
+ */
+int
+sycklex( YYSTYPE *sycklval, SyckParser *parser )
+{
+ switch ( parser->input_type )
+ {
+ case syck_yaml_utf8:
+ return sycklex_yaml_utf8( sycklval, parser );
+
+ case syck_yaml_utf16:
+ syckerror( "UTF-16 is not currently supported in Syck.\nPlease contribute code to help this happen!" );
+ break;
+
+ case syck_yaml_utf32:
+ syckerror( "UTF-32 is not currently supported in Syck.\nPlease contribute code to help this happen!" );
+ break;
+
+ case syck_bytecode_utf8:
+ return sycklex_bytecode_utf8( sycklval, parser );
+ }
+ return YAML_DOCSEP;
+}
+
+/*
+ * Parser for standard YAML [UTF-8]
+ */
+int
+sycklex_yaml_utf8( YYSTYPE *sycklval, SyckParser *parser )
+{
+ int doc_level = 0;
+ syck_parser_ptr = parser;
+ if ( YYCURSOR == NULL )
+ {
+ syck_parser_read( parser );
+ }
+
+ if ( parser->force_token != 0 )
+ {
+ int t = parser->force_token;
+ parser->force_token = 0;
+ return t;
+ }
+
+#line 315 "token.re"
+
+
+ if ( YYLINEPTR != YYCURSOR )
+ {
+ goto Document;
+ }
+
+Header:
+
+ YYTOKEN = YYCURSOR;
+
+
+#line 307 "<stdout>"
+{
+ YYCTYPE yych;
+ unsigned int yyaccept;
+ goto yy0;
+ ++YYCURSOR;
+yy0:
+ if((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy7;
+ case 0x09: case ' ': goto yy12;
+ case 0x0A: goto yy9;
+ case 0x0D: goto yy11;
+ case '#': goto yy5;
+ case '-': goto yy2;
+ case '.': goto yy4;
+ default: goto yy14;
+ }
+yy2: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case '-': goto yy28;
+ default: goto yy3;
+ }
+yy3:
+#line 374 "token.re"
+{ YYPOS(0);
+ goto Document;
+ }
+#line 337 "<stdout>"
+yy4: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case '.': goto yy21;
+ default: goto yy3;
+ }
+yy5: ++YYCURSOR;
+ goto yy6;
+yy6:
+#line 356 "token.re"
+{ eat_comments( parser );
+ goto Header;
+ }
+#line 351 "<stdout>"
+yy7: ++YYCURSOR;
+ goto yy8;
+yy8:
+#line 360 "token.re"
+{ SyckLevel *lvl = CURRENT_LEVEL();
+ ENSURE_YAML_IEND(lvl, -1);
+ YYPOS(0);
+ return 0;
+ }
+#line 361 "<stdout>"
+yy9: yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy18;
+yy10:
+#line 366 "token.re"
+{ GOBBLE_UP_YAML_INDENT( doc_level, YYTOKEN );
+ goto Header;
+ }
+#line 370 "<stdout>"
+yy11: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy17;
+ default: goto yy3;
+ }
+yy12: ++YYCURSOR;
+ yych = *YYCURSOR;
+ goto yy16;
+yy13:
+#line 370 "token.re"
+{ doc_level = (int)(YYCURSOR - YYLINEPTR);
+ goto Header;
+ }
+#line 384 "<stdout>"
+yy14: yych = *++YYCURSOR;
+ goto yy3;
+yy15: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy16;
+yy16: switch(yych){
+ case 0x09: case ' ': goto yy15;
+ default: goto yy13;
+ }
+yy17: yyaccept = 1;
+ YYMARKER = ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy18;
+yy18: switch(yych){
+ case 0x0A: case ' ': goto yy17;
+ case 0x0D: goto yy19;
+ default: goto yy10;
+ }
+yy19: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy17;
+ default: goto yy20;
+ }
+yy20: YYCURSOR = YYMARKER;
+ switch(yyaccept){
+ case 1: goto yy10;
+ case 0: goto yy3;
+ }
+yy21: yych = *++YYCURSOR;
+ switch(yych){
+ case '.': goto yy22;
+ default: goto yy20;
+ }
+yy22: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy23;
+ case 0x0D: goto yy27;
+ case ' ': goto yy25;
+ default: goto yy20;
+ }
+yy23: ++YYCURSOR;
+ goto yy24;
+yy24:
+#line 342 "token.re"
+{ SyckLevel *lvl = CURRENT_LEVEL();
+ if ( lvl->status == syck_lvl_header )
+ {
+ goto Header;
+ }
+ else
+ {
+ ENSURE_YAML_IEND(lvl, -1);
+ YYPOS(0);
+ return 0;
+ }
+ return 0;
+ }
+#line 446 "<stdout>"
+yy25: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy26;
+yy26: switch(yych){
+ case ' ': goto yy25;
+ default: goto yy24;
+ }
+yy27: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy23;
+ default: goto yy20;
+ }
+yy28: yych = *++YYCURSOR;
+ switch(yych){
+ case '-': goto yy29;
+ default: goto yy20;
+ }
+yy29: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy30;
+ case 0x0D: goto yy34;
+ case ' ': goto yy32;
+ default: goto yy20;
+ }
+yy30: ++YYCURSOR;
+ goto yy31;
+yy31:
+#line 328 "token.re"
+{ SyckLevel *lvl = CURRENT_LEVEL();
+ if ( lvl->status == syck_lvl_header )
+ {
+ YYPOS(3);
+ goto Directive;
+ }
+ else
+ {
+ ENSURE_YAML_IEND(lvl, -1);
+ YYPOS(0);
+ return 0;
+ }
+ }
+#line 489 "<stdout>"
+yy32: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy33;
+yy33: switch(yych){
+ case ' ': goto yy32;
+ default: goto yy31;
+ }
+yy34: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case 0x0A: goto yy30;
+ default: goto yy20;
+ }
+}
+#line 378 "token.re"
+
+
+Document:
+ {
+ SyckLevel *lvl = CURRENT_LEVEL();
+ if ( lvl->status == syck_lvl_header )
+ {
+ lvl->status = syck_lvl_doc;
+ }
+
+ YYTOKEN = YYCURSOR;
+
+
+#line 518 "<stdout>"
+{
+ YYCTYPE yych;
+ unsigned int yyaccept;
+ goto yy35;
+ ++YYCURSOR;
+yy35:
+ if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy62;
+ case 0x09: case ' ': goto yy60;
+ case 0x0A: goto yy37;
+ case 0x0D: goto yy39;
+ case '!': goto yy51;
+ case '"': goto yy55;
+ case '#': goto yy58;
+ case '&': goto yy49;
+ case '\'': goto yy53;
+ case '*': goto yy50;
+ case ',': case ':': goto yy47;
+ case '-': case '?': goto yy48;
+ case '>': case '|': goto yy57;
+ case '[': goto yy41;
+ case ']': case '}': goto yy45;
+ case '{': goto yy43;
+ default: goto yy64;
+ }
+yy37: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy92;
+yy38:
+#line 392 "token.re"
+{ /* Isolate spaces */
+ int indt_len;
+ GOBBLE_UP_YAML_INDENT( indt_len, YYTOKEN );
+ lvl = CURRENT_LEVEL();
+ doc_level = 0;
+
+ /* XXX: Comment lookahead */
+ if ( *YYCURSOR == '#' )
+ {
+ goto Document;
+ }
+
+ /* Ignore indentation inside inlines */
+ if ( lvl->status == syck_lvl_iseq || lvl->status == syck_lvl_imap )
+ {
+ goto Document;
+ }
+
+ /* Check for open indent */
+ ENSURE_YAML_IEND(lvl, indt_len);
+ ENSURE_YAML_IOPEN(lvl, indt_len, 0);
+ if ( indt_len == -1 )
+ {
+ return 0;
+ }
+ return YAML_INDENT;
+ }
+#line 578 "<stdout>"
+yy39: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case 0x0A: goto yy91;
+ default: goto yy40;
+ }
+yy40:
+#line 497 "token.re"
+{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
+ goto Plain;
+ }
+#line 589 "<stdout>"
+yy41: ++YYCURSOR;
+ goto yy42;
+yy42:
+#line 420 "token.re"
+{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
+ lvl = CURRENT_LEVEL();
+ ADD_LEVEL(lvl->spaces + 1, syck_lvl_iseq);
+ return YYTOKEN[0];
+ }
+#line 599 "<stdout>"
+yy43: ++YYCURSOR;
+ goto yy44;
+yy44:
+#line 426 "token.re"
+{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
+ lvl = CURRENT_LEVEL();
+ ADD_LEVEL(lvl->spaces + 1, syck_lvl_imap);
+ return YYTOKEN[0];
+ }
+#line 609 "<stdout>"
+yy45: ++YYCURSOR;
+ goto yy46;
+yy46:
+#line 432 "token.re"
+{ POP_LEVEL();
+ return YYTOKEN[0];
+ }
+#line 617 "<stdout>"
+yy47: yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 0x0A: goto yy86;
+ case 0x0D: goto yy90;
+ case ' ': goto yy88;
+ default: goto yy40;
+ }
+yy48: yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 0x0A: goto yy81;
+ case 0x0D: goto yy85;
+ case ' ': goto yy83;
+ default: goto yy40;
+ }
+yy49: yych = *++YYCURSOR;
+ switch(yych){
+ case '-': case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy78;
+ default: goto yy40;
+ }
+yy50: yych = *++YYCURSOR;
+ switch(yych){
+ case '-': case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy75;
+ default: goto yy40;
+ }
+yy51: ++YYCURSOR;
+ goto yy52;
+yy52:
+#line 471 "token.re"
+{ goto TransferMethod; }
+#line 767 "<stdout>"
+yy53: ++YYCURSOR;
+ goto yy54;
+yy54:
+#line 473 "token.re"
+{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
+ goto SingleQuote; }
+#line 774 "<stdout>"
+yy55: ++YYCURSOR;
+ goto yy56;
+yy56:
+#line 476 "token.re"
+{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
+ goto DoubleQuote; }
+#line 781 "<stdout>"
+yy57: yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 0x0A: goto yy70;
+ case 0x0D: goto yy74;
+ case ' ': goto yy72;
+ case '+': case '-': case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy67;
+ default: goto yy40;
+ }
+yy58: ++YYCURSOR;
+ goto yy59;
+yy59:
+#line 486 "token.re"
+{ eat_comments( parser );
+ goto Document;
+ }
+#line 807 "<stdout>"
+yy60: ++YYCURSOR;
+ yych = *YYCURSOR;
+ goto yy66;
+yy61:
+#line 490 "token.re"
+{ goto Document; }
+#line 814 "<stdout>"
+yy62: ++YYCURSOR;
+ goto yy63;
+yy63:
+#line 492 "token.re"
+{ ENSURE_YAML_IEND(lvl, -1);
+ YYPOS(0);
+ return 0;
+ }
+#line 823 "<stdout>"
+yy64: yych = *++YYCURSOR;
+ goto yy40;
+yy65: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy66;
+yy66: switch(yych){
+ case 0x09: case ' ': goto yy65;
+ default: goto yy61;
+ }
+yy67: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ goto yy68;
+yy68: switch(yych){
+ case 0x0A: goto yy70;
+ case 0x0D: goto yy74;
+ case ' ': goto yy72;
+ case '+': case '-': case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy67;
+ default: goto yy69;
+ }
+yy69: YYCURSOR = YYMARKER;
+ switch(yyaccept){
+ case 0: goto yy38;
+ case 1: goto yy40;
+ }
+yy70: ++YYCURSOR;
+ goto yy71;
+yy71:
+#line 479 "token.re"
+{ if ( is_newline( YYCURSOR - 1 ) )
+ {
+ YYCURSOR--;
+ }
+ goto ScalarBlock;
+ }
+#line 869 "<stdout>"
+yy72: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy73;
+yy73: switch(yych){
+ case ' ': goto yy72;
+ default: goto yy71;
+ }
+yy74: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy70;
+ default: goto yy69;
+ }
+yy75: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy76;
+yy76: switch(yych){
+ case '-': case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy75;
+ default: goto yy77;
+ }
+yy77:
+#line 466 "token.re"
+{ ENSURE_YAML_IOPEN(lvl, doc_level, 1);
+ sycklval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
+ return YAML_ALIAS;
+ }
+#line 956 "<stdout>"
+yy78: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy79;
+yy79: switch(yych){
+ case '-': case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z': case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy78;
+ default: goto yy80;
+ }
+yy80:
+#line 455 "token.re"
+{ sycklval->name = syck_strndup( YYTOKEN + 1, YYCURSOR - YYTOKEN - 1 );
+
+ /*
+ * Remove previous anchors of the same name. Since the parser will likely
+ * construct deeper nodes first, we want those nodes to be placed in the
+ * queue for matching at a higher level of indentation.
+ */
+ syck_hdlr_remove_anchor(parser, sycklval->name);
+ return YAML_ANCHOR;
+ }
+#line 1036 "<stdout>"
+yy81: ++YYCURSOR;
+ goto yy82;
+yy82:
+#line 441 "token.re"
+{ ENSURE_YAML_IOPEN(lvl, (int)(YYTOKEN - YYLINEPTR), 1);
+ FORCE_NEXT_TOKEN(YAML_IOPEN);
+ if ( *YYCURSOR == '#' || is_newline( YYCURSOR ) || is_newline( YYCURSOR - 1 ) )
+ {
+ YYCURSOR--;
+ ADD_LEVEL((int)((YYTOKEN + 1) - YYLINEPTR), syck_lvl_seq);
+ }
+ else /* spaces followed by content uses the space as indentation */
+ {
+ ADD_LEVEL((int)(YYCURSOR - YYLINEPTR), syck_lvl_seq);
+ }
+ return YYTOKEN[0];
+ }
+#line 1054 "<stdout>"
+yy83: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy84;
+yy84: switch(yych){
+ case ' ': goto yy83;
+ default: goto yy82;
+ }
+yy85: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy81;
+ default: goto yy69;
+ }
+yy86: ++YYCURSOR;
+ goto yy87;
+yy87:
+#line 436 "token.re"
+{ if ( *YYTOKEN == ':' && lvl->status != syck_lvl_imap ) lvl->status = syck_lvl_map;
+ YYPOS(1);
+ return YYTOKEN[0];
+ }
+#line 1076 "<stdout>"
+yy88: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy89;
+yy89: switch(yych){
+ case ' ': goto yy88;
+ default: goto yy87;
+ }
+yy90: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy86;
+ default: goto yy69;
+ }
+yy91: yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy92;
+yy92: switch(yych){
+ case 0x0A: case ' ': goto yy91;
+ case 0x0D: goto yy93;
+ default: goto yy38;
+ }
+yy93: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy91;
+ default: goto yy69;
+ }
+}
+#line 501 "token.re"
+
+ }
+
+Directive:
+ {
+ YYTOKTMP = YYCURSOR;
+
+
+#line 1117 "<stdout>"
+{
+ YYCTYPE yych;
+ unsigned int yyaccept = 0;
+ goto yy94;
+ ++YYCURSOR;
+yy94:
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy96;
+ case 0x09: case ' ': goto yy99;
+ case '%': goto yy97;
+ default: goto yy101;
+ }
+yy96: YYCURSOR = YYMARKER;
+ switch(yyaccept){
+ case 0: goto yy98;
+ }
+yy97: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case '.':
+ case '/':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case ':':
+ case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy104;
+ default: goto yy98;
+ }
+yy98:
+#line 514 "token.re"
+{ YYCURSOR = YYTOKTMP;
+ return YAML_DOCSEP;
+ }
+#line 1221 "<stdout>"
+yy99: ++YYCURSOR;
+ yych = *YYCURSOR;
+ goto yy103;
+yy100:
+#line 512 "token.re"
+{ goto Directive; }
+#line 1228 "<stdout>"
+yy101: yych = *++YYCURSOR;
+ goto yy98;
+yy102: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy103;
+yy103: switch(yych){
+ case 0x09: case ' ': goto yy102;
+ default: goto yy100;
+ }
+yy104: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ goto yy105;
+yy105: switch(yych){
+ case '.':
+ case '/':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy104;
+ case ':': goto yy106;
+ default: goto yy96;
+ }
+yy106: yych = *++YYCURSOR;
+ switch(yych){
+ case '.':
+ case '/':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case ':':
+ case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy107;
+ default: goto yy96;
+ }
+yy107: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy108;
+yy108: switch(yych){
+ case '.':
+ case '/':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case ':':
+ case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '_': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy107;
+ default: goto yy109;
+ }
+yy109:
+#line 510 "token.re"
+{ goto Directive; }
+#line 1484 "<stdout>"
+}
+#line 517 "token.re"
+
+
+ }
+
+Plain:
+ {
+ int qidx = 0;
+ int qcapa = 100;
+ char *qstr = S_ALLOC_N( char, qcapa );
+ SyckLevel *plvl;
+ int parentIndent;
+
+ YYCURSOR = YYTOKEN;
+ plvl = CURRENT_LEVEL();
+ GET_TRUE_YAML_INDENT(parentIndent);
+
+Plain2:
+ YYTOKEN = YYCURSOR;
+
+Plain3:
+
+
+#line 1509 "<stdout>"
+{
+ YYCTYPE yych;
+ unsigned int yyaccept;
+ goto yy110;
+ ++YYCURSOR;
+yy110:
+ if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy124;
+ case 0x09: goto yy126;
+ case 0x0A: goto yy112;
+ case 0x0D: goto yy114;
+ case ' ': goto yy122;
+ case ',': goto yy117;
+ case ':': goto yy116;
+ case ']': goto yy120;
+ case '}': goto yy118;
+ default: goto yy127;
+ }
+yy112: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy142;
+yy113:
+#line 540 "token.re"
+{ int indt_len, nl_count = 0;
+ SyckLevel *lvl;
+ char *tok = YYTOKEN;
+ GOBBLE_UP_YAML_INDENT( indt_len, tok );
+ lvl = CURRENT_LEVEL();
+
+ if ( indt_len <= parentIndent )
+ {
+ RETURN_IMPLICIT();
+ }
+
+ while ( YYTOKEN < YYCURSOR )
+ {
+ int nl_len = newline_len( YYTOKEN++ );
+ if ( nl_len )
+ {
+ nl_count++;
+ YYTOKEN += nl_len - 1;
+ }
+ }
+ if ( nl_count <= 1 )
+ {
+ QUOTECAT(qstr, qcapa, qidx, ' ');
+ }
+ else
+ {
+ int i;
+ for ( i = 0; i < nl_count - 1; i++ )
+ {
+ QUOTECAT(qstr, qcapa, qidx, '\n');
+ }
+ }
+
+ goto Plain2;
+ }
+#line 1570 "<stdout>"
+yy114: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case 0x0A: goto yy141;
+ default: goto yy115;
+ }
+yy115:
+#line 627 "token.re"
+{ QUOTECATS(qstr, qcapa, qidx, YYTOKEN, YYCURSOR - YYTOKEN);
+ goto Plain2;
+ }
+#line 1581 "<stdout>"
+yy116: yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 0x0A: goto yy136;
+ case 0x0D: goto yy140;
+ case ' ': goto yy138;
+ default: goto yy115;
+ }
+yy117: yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 0x0A: goto yy130;
+ case 0x0D: goto yy134;
+ case ' ': goto yy132;
+ default: goto yy115;
+ }
+yy118: ++YYCURSOR;
+ goto yy119;
+yy119:
+#line 589 "token.re"
+{ if ( plvl->status != syck_lvl_imap )
+ {
+ PLAIN_NOT_INL();
+ }
+ else
+ {
+ PLAIN_IS_INL();
+ }
+ RETURN_IMPLICIT();
+ }
+#line 1612 "<stdout>"
+yy120: ++YYCURSOR;
+ goto yy121;
+yy121:
+#line 600 "token.re"
+{ if ( plvl->status != syck_lvl_iseq )
+ {
+ PLAIN_NOT_INL();
+ }
+ else
+ {
+ PLAIN_IS_INL();
+ }
+ RETURN_IMPLICIT();
+ }
+#line 1627 "<stdout>"
+yy122: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case '#': goto yy128;
+ default: goto yy123;
+ }
+yy123:
+#line 617 "token.re"
+{ if ( qidx == 0 )
+ {
+ goto Plain2;
+ }
+ else
+ {
+ goto Plain3;
+ }
+ }
+#line 1644 "<stdout>"
+yy124: ++YYCURSOR;
+ goto yy125;
+yy125:
+#line 615 "token.re"
+{ RETURN_IMPLICIT(); }
+#line 1650 "<stdout>"
+yy126: yych = *++YYCURSOR;
+ goto yy123;
+yy127: yych = *++YYCURSOR;
+ goto yy115;
+yy128: ++YYCURSOR;
+ goto yy129;
+yy129:
+#line 611 "token.re"
+{ eat_comments( parser );
+ RETURN_IMPLICIT();
+ }
+#line 1662 "<stdout>"
+yy130: ++YYCURSOR;
+ goto yy131;
+yy131:
+#line 578 "token.re"
+{ if ( plvl->status != syck_lvl_iseq && plvl->status != syck_lvl_imap )
+ {
+ PLAIN_NOT_INL();
+ }
+ else
+ {
+ PLAIN_IS_INL();
+ }
+ RETURN_IMPLICIT();
+ }
+#line 1677 "<stdout>"
+yy132: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy133;
+yy133: switch(yych){
+ case ' ': goto yy132;
+ default: goto yy131;
+ }
+yy134: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy130;
+ default: goto yy135;
+ }
+yy135: YYCURSOR = YYMARKER;
+ switch(yyaccept){
+ case 0: goto yy113;
+ case 1: goto yy115;
+ }
+yy136: ++YYCURSOR;
+ goto yy137;
+yy137:
+#line 576 "token.re"
+{ RETURN_IMPLICIT(); }
+#line 1701 "<stdout>"
+yy138: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy139;
+yy139: switch(yych){
+ case ' ': goto yy138;
+ default: goto yy137;
+ }
+yy140: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy136;
+ default: goto yy135;
+ }
+yy141: yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy142;
+yy142: switch(yych){
+ case 0x0A: case ' ': goto yy141;
+ case 0x0D: goto yy143;
+ default: goto yy113;
+ }
+yy143: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy141;
+ default: goto yy135;
+ }
+}
+#line 631 "token.re"
+
+ }
+
+SingleQuote:
+ {
+ int qidx = 0;
+ int qcapa = 100;
+ char *qstr = S_ALLOC_N( char, qcapa );
+
+SingleQuote2:
+ YYTOKEN = YYCURSOR;
+
+
+#line 1747 "<stdout>"
+{
+ YYCTYPE yych;
+ unsigned int yyaccept;
+ goto yy144;
+ ++YYCURSOR;
+yy144:
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy152;
+ case 0x0A: goto yy146;
+ case 0x0D: goto yy148;
+ case '\'': goto yy150;
+ default: goto yy153;
+ }
+yy146: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy157;
+yy147:
+#line 645 "token.re"
+{ int indt_len;
+ int nl_count = 0;
+ SyckLevel *lvl;
+ GOBBLE_UP_YAML_INDENT( indt_len, YYTOKEN );
+ lvl = CURRENT_LEVEL();
+
+ if ( lvl->status != syck_lvl_str )
+ {
+ ADD_LEVEL( indt_len, syck_lvl_str );
+ }
+ else if ( indt_len < lvl->spaces )
+ {
+ /* Error! */
+ }
+
+ while ( YYTOKEN < YYCURSOR )
+ {
+ int nl_len = newline_len( YYTOKEN++ );
+ if ( nl_len )
+ {
+ nl_count++;
+ YYTOKEN += nl_len - 1;
+ }
+ }
+ if ( nl_count <= 1 )
+ {
+ QUOTECAT(qstr, qcapa, qidx, ' ');
+ }
+ else
+ {
+ int i;
+ for ( i = 0; i < nl_count - 1; i++ )
+ {
+ QUOTECAT(qstr, qcapa, qidx, '\n');
+ }
+ }
+
+ goto SingleQuote2;
+ }
+#line 1807 "<stdout>"
+yy148: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case 0x0A: goto yy156;
+ default: goto yy149;
+ }
+yy149:
+#line 712 "token.re"
+{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
+ goto SingleQuote2;
+ }
+#line 1818 "<stdout>"
+yy150: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case '\'': goto yy154;
+ default: goto yy151;
+ }
+yy151:
+#line 689 "token.re"
+{ SyckLevel *lvl;
+ SyckNode *n = syck_alloc_str();
+ lvl = CURRENT_LEVEL();
+
+ if ( lvl->status == syck_lvl_str )
+ {
+ POP_LEVEL();
+ }
+ if ( ((SyckParser *)parser)->taguri_expansion == 1 )
+ {
+ n->type_id = syck_taguri( YAML_DOMAIN, "str", 3 );
+ }
+ else
+ {
+ n->type_id = syck_strndup( "str", 3 );
+ }
+ n->data.str->ptr = qstr;
+ n->data.str->len = qidx;
+ n->data.str->style = scalar_1quote;
+ sycklval->nodeData = n;
+ return YAML_PLAIN;
+ }
+#line 1848 "<stdout>"
+yy152: yych = *++YYCURSOR;
+ goto yy151;
+yy153: yych = *++YYCURSOR;
+ goto yy149;
+yy154: ++YYCURSOR;
+ goto yy155;
+yy155:
+#line 685 "token.re"
+{ QUOTECAT(qstr, qcapa, qidx, '\'');
+ goto SingleQuote2;
+ }
+#line 1860 "<stdout>"
+yy156: yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy157;
+yy157: switch(yych){
+ case 0x0A: case ' ': goto yy156;
+ case 0x0D: goto yy158;
+ default: goto yy147;
+ }
+yy158: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy156;
+ default: goto yy159;
+ }
+yy159: YYCURSOR = YYMARKER;
+ switch(yyaccept){
+ case 0: goto yy147;
+ }
+}
+#line 716 "token.re"
+
+
+ }
+
+
+DoubleQuote:
+ {
+ int keep_nl = 1;
+ int qidx = 0;
+ int qcapa = 100;
+ char *qstr = S_ALLOC_N( char, qcapa );
+
+DoubleQuote2:
+ YYTOKEN = YYCURSOR;
+
+
+
+#line 1901 "<stdout>"
+{
+ YYCTYPE yych;
+ unsigned int yyaccept;
+ goto yy160;
+ ++YYCURSOR;
+yy160:
+ if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy167;
+ case 0x0A: goto yy162;
+ case 0x0D: goto yy164;
+ case '"': goto yy169;
+ case '\\': goto yy166;
+ default: goto yy170;
+ }
+yy162: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy184;
+yy163:
+#line 734 "token.re"
+{ int indt_len;
+ int nl_count = 0;
+ SyckLevel *lvl;
+ GOBBLE_UP_YAML_INDENT( indt_len, YYTOKEN );
+ lvl = CURRENT_LEVEL();
+
+ if ( lvl->status != syck_lvl_str )
+ {
+ ADD_LEVEL( indt_len, syck_lvl_str );
+ }
+ else if ( indt_len < lvl->spaces )
+ {
+ /* FIXME */
+ }
+
+ if ( keep_nl == 1 )
+ {
+ while ( YYTOKEN < YYCURSOR )
+ {
+ int nl_len = newline_len( YYTOKEN++ );
+ if ( nl_len )
+ {
+ nl_count++;
+ YYTOKEN += nl_len - 1;
+ }
+ }
+ if ( nl_count <= 1 )
+ {
+ QUOTECAT(qstr, qcapa, qidx, ' ');
+ }
+ else
+ {
+ int i;
+ for ( i = 0; i < nl_count - 1; i++ )
+ {
+ QUOTECAT(qstr, qcapa, qidx, '\n');
+ }
+ }
+ }
+
+ keep_nl = 1;
+ goto DoubleQuote2;
+ }
+#line 1966 "<stdout>"
+yy164: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case 0x0A: goto yy183;
+ default: goto yy165;
+ }
+yy165:
+#line 820 "token.re"
+{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
+ goto DoubleQuote2;
+ }
+#line 1977 "<stdout>"
+yy166: yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case 0x0A: goto yy174;
+ case 0x0D: goto yy176;
+ case ' ': goto yy171;
+ case '"': case '0': case '\\': case 'a':
+ case 'b': case 'e':
+ case 'f': case 'n': case 'r': case 't': case 'v': goto yy178;
+ case 'x': goto yy177;
+ default: goto yy165;
+ }
+yy167: ++YYCURSOR;
+ goto yy168;
+yy168:
+#line 797 "token.re"
+{ SyckLevel *lvl;
+ SyckNode *n = syck_alloc_str();
+ lvl = CURRENT_LEVEL();
+
+ if ( lvl->status == syck_lvl_str )
+ {
+ POP_LEVEL();
+ }
+ if ( ((SyckParser *)parser)->taguri_expansion == 1 )
+ {
+ n->type_id = syck_taguri( YAML_DOMAIN, "str", 3 );
+ }
+ else
+ {
+ n->type_id = syck_strndup( "str", 3 );
+ }
+ n->data.str->ptr = qstr;
+ n->data.str->len = qidx;
+ n->data.str->style = scalar_2quote;
+ sycklval->nodeData = n;
+ return YAML_PLAIN;
+ }
+#line 2016 "<stdout>"
+yy169: yych = *++YYCURSOR;
+ goto yy168;
+yy170: yych = *++YYCURSOR;
+ goto yy165;
+yy171: ++YYCURSOR;
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ goto yy172;
+yy172: switch(yych){
+ case 0x0A: goto yy174;
+ case 0x0D: goto yy176;
+ case ' ': goto yy171;
+ default: goto yy173;
+ }
+yy173: YYCURSOR = YYMARKER;
+ switch(yyaccept){
+ case 0: goto yy163;
+ case 1: goto yy165;
+ }
+yy174: ++YYCURSOR;
+ goto yy175;
+yy175:
+#line 792 "token.re"
+{ keep_nl = 0;
+ YYCURSOR--;
+ goto DoubleQuote2;
+ }
+#line 2044 "<stdout>"
+yy176: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy174;
+ default: goto yy173;
+ }
+yy177: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f': goto yy180;
+ default: goto yy173;
+ }
+yy178: ++YYCURSOR;
+ goto yy179;
+yy179:
+#line 778 "token.re"
+{ char ch = *( YYCURSOR - 1 );
+ QUOTECAT(qstr, qcapa, qidx, escape_seq( ch ));
+ goto DoubleQuote2;
+ }
+#line 2082 "<stdout>"
+yy180: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f': goto yy181;
+ default: goto yy173;
+ }
+yy181: ++YYCURSOR;
+ goto yy182;
+yy182:
+#line 783 "token.re"
+{ long ch;
+ char *chr_text = syck_strndup( YYTOKEN, 4 );
+ chr_text[0] = '0';
+ ch = strtol( chr_text, NULL, 16 );
+ free( chr_text );
+ QUOTECAT(qstr, qcapa, qidx, ch);
+ goto DoubleQuote2;
+ }
+#line 2119 "<stdout>"
+yy183: yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy184;
+yy184: switch(yych){
+ case 0x0A: case ' ': goto yy183;
+ case 0x0D: goto yy185;
+ default: goto yy163;
+ }
+yy185: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy183;
+ default: goto yy173;
+ }
+}
+#line 824 "token.re"
+
+ }
+
+TransferMethod:
+ {
+ int qidx = 0;
+ int qcapa = 100;
+ char *qstr = S_ALLOC_N( char, qcapa );
+
+TransferMethod2:
+ YYTOKTMP = YYCURSOR;
+
+
+#line 2152 "<stdout>"
+{
+ YYCTYPE yych;
+ unsigned int yyaccept;
+ goto yy186;
+ ++YYCURSOR;
+yy186:
+ if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy188;
+ case 0x0A: goto yy190;
+ case 0x0D: goto yy192;
+ case ' ': goto yy191;
+ case '\\': goto yy194;
+ default: goto yy195;
+ }
+yy188: ++YYCURSOR;
+ goto yy189;
+yy189:
+#line 838 "token.re"
+{ SyckLevel *lvl;
+ YYCURSOR = YYTOKTMP;
+ if ( YYCURSOR == YYTOKEN + 1 )
+ {
+ free( qstr );
+ return YAML_ITRANSFER;
+ }
+
+ lvl = CURRENT_LEVEL();
+
+ /*
+ * URL Prefixing
+ */
+ if ( *qstr == '^' )
+ {
+ sycklval->name = S_ALLOC_N( char, qidx + strlen( lvl->domain ) );
+ sycklval->name[0] = '\0';
+ strcat( sycklval->name, lvl->domain );
+ strncat( sycklval->name, qstr + 1, qidx - 1 );
+ free( qstr );
+ }
+ else
+ {
+ char *carat = qstr;
+ char *qend = qstr + qidx;
+ while ( (++carat) < qend )
+ {
+ if ( *carat == '^' )
+ break;
+ }
+
+ if ( carat < qend )
+ {
+ free( lvl->domain );
+ lvl->domain = syck_strndup( qstr, carat - qstr );
+ sycklval->name = S_ALLOC_N( char, ( qend - carat ) + strlen( lvl->domain ) );
+ sycklval->name[0] = '\0';
+ strcat( sycklval->name, lvl->domain );
+ strncat( sycklval->name, carat + 1, ( qend - carat ) - 1 );
+ free( qstr );
+ }
+ else
+ {
+ sycklval->name = qstr;
+ }
+ }
+
+ return YAML_TRANSFER;
+ }
+#line 2222 "<stdout>"
+yy190: yych = *++YYCURSOR;
+ goto yy189;
+yy191: yych = *++YYCURSOR;
+ goto yy204;
+yy192: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case 0x0A: goto yy188;
+ default: goto yy193;
+ }
+yy193:
+#line 905 "token.re"
+{ QUOTECAT(qstr, qcapa, qidx, *(YYCURSOR - 1));
+ goto TransferMethod2;
+ }
+#line 2237 "<stdout>"
+yy194: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case '"': case '0': case '\\': case 'a':
+ case 'b': case 'e':
+ case 'f': case 'n': case 'r': case 't': case 'v': goto yy198;
+ case 'x': goto yy196;
+ default: goto yy193;
+ }
+yy195: yych = *++YYCURSOR;
+ goto yy193;
+yy196: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f': goto yy200;
+ default: goto yy197;
+ }
+yy197: YYCURSOR = YYMARKER;
+ switch(yyaccept){
+ case 0: goto yy193;
+ }
+yy198: ++YYCURSOR;
+ goto yy199;
+yy199:
+#line 891 "token.re"
+{ char ch = *( YYCURSOR - 1 );
+ QUOTECAT(qstr, qcapa, qidx, escape_seq( ch ));
+ goto TransferMethod2;
+ }
+#line 2285 "<stdout>"
+yy200: yych = *++YYCURSOR;
+ switch(yych){
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F': case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f': goto yy201;
+ default: goto yy197;
+ }
+yy201: ++YYCURSOR;
+ goto yy202;
+yy202:
+#line 896 "token.re"
+{ long ch;
+ char *chr_text = syck_strndup( YYTOKTMP, 4 );
+ chr_text[0] = '0';
+ ch = strtol( chr_text, NULL, 16 );
+ free( chr_text );
+ QUOTECAT(qstr, qcapa, qidx, ch);
+ goto TransferMethod2;
+ }
+#line 2322 "<stdout>"
+yy203: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy204;
+yy204: switch(yych){
+ case ' ': goto yy203;
+ default: goto yy189;
+ }
+}
+#line 910 "token.re"
+
+ }
+
+ScalarBlock:
+ {
+ int qidx = 0;
+ int qcapa = 100;
+ char *qstr = S_ALLOC_N( char, qcapa );
+ int blockType = 0;
+ int nlDoWhat = 0;
+ int lastIndent = 0;
+ int forceIndent = -1;
+ char *yyt = YYTOKEN;
+ SyckLevel *lvl = CURRENT_LEVEL();
+ int parentIndent = -1;
+
+ switch ( *yyt )
+ {
+ case '|': blockType = BLOCK_LIT; break;
+ case '>': blockType = BLOCK_FOLD; break;
+ }
+
+ while ( ++yyt <= YYCURSOR )
+ {
+ if ( *yyt == '-' )
+ {
+ nlDoWhat = NL_CHOMP;
+ }
+ else if ( *yyt == '+' )
+ {
+ nlDoWhat = NL_KEEP;
+ }
+ else if ( isdigit( *yyt ) )
+ {
+ forceIndent = rb_long2int(strtol( yyt, NULL, 10 ));
+ }
+ }
+
+ qstr[0] = '\0';
+ YYTOKEN = YYCURSOR;
+
+ScalarBlock2:
+ YYTOKEN = YYCURSOR;
+
+
+#line 2378 "<stdout>"
+{
+ YYCTYPE yych;
+ unsigned int yyaccept;
+ goto yy205;
+ ++YYCURSOR;
+yy205:
+ if((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy213;
+ case 0x0A: goto yy207;
+ case 0x0D: goto yy209;
+ case '#': goto yy211;
+ case '-': goto yy215;
+ default: goto yy216;
+ }
+yy207: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy226;
+yy208:
+#line 956 "token.re"
+{ char *pacer;
+ char *tok = YYTOKEN;
+ int indt_len = 0, nl_count = 0, fold_nl = 0, nl_begin = 0;
+ GOBBLE_UP_YAML_INDENT( indt_len, tok );
+ lvl = CURRENT_LEVEL();
+
+ if ( lvl->status != syck_lvl_block )
+ {
+ GET_TRUE_YAML_INDENT(parentIndent);
+ if ( forceIndent > 0 ) forceIndent += parentIndent;
+ if ( indt_len > parentIndent )
+ {
+ int new_spaces = forceIndent > 0 ? forceIndent : indt_len;
+ ADD_LEVEL( new_spaces, syck_lvl_block );
+ lastIndent = indt_len - new_spaces;
+ nl_begin = 1;
+ lvl = CURRENT_LEVEL();
+ }
+ else
+ {
+ YYCURSOR = YYTOKEN;
+ RETURN_YAML_BLOCK();
+ }
+ }
+
+ /*
+ * Fold only in the event of two lines being on the leftmost
+ * indentation.
+ */
+ if ( blockType == BLOCK_FOLD && lastIndent == 0 && ( indt_len - lvl->spaces ) == 0 )
+ {
+ fold_nl = 1;
+ }
+
+ pacer = YYTOKEN;
+ while ( pacer < YYCURSOR )
+ {
+ int nl_len = newline_len( pacer++ );
+ if ( nl_len )
+ {
+ nl_count++;
+ pacer += nl_len - 1;
+ }
+ }
+
+ if ( fold_nl == 1 || nl_begin == 1 )
+ {
+ nl_count--;
+ }
+
+ if ( nl_count < 1 && nl_begin == 0 )
+ {
+ QUOTECAT(qstr, qcapa, qidx, ' ');
+ }
+ else
+ {
+ int i;
+ for ( i = 0; i < nl_count; i++ )
+ {
+ QUOTECAT(qstr, qcapa, qidx, '\n');
+ }
+ }
+
+ lastIndent = indt_len - lvl->spaces;
+ YYCURSOR -= lastIndent;
+
+ if ( indt_len < lvl->spaces )
+ {
+ POP_LEVEL();
+ YYCURSOR = YYTOKEN;
+ RETURN_YAML_BLOCK();
+ }
+ goto ScalarBlock2;
+ }
+#line 2474 "<stdout>"
+yy209: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case 0x0A: goto yy225;
+ default: goto yy210;
+ }
+yy210:
+#line 1070 "token.re"
+{ QUOTECAT(qstr, qcapa, qidx, *YYTOKEN);
+ goto ScalarBlock2;
+ }
+#line 2485 "<stdout>"
+yy211: ++YYCURSOR;
+ goto yy212;
+yy212:
+#line 1032 "token.re"
+{ lvl = CURRENT_LEVEL();
+ if ( lvl->status != syck_lvl_block )
+ {
+ eat_comments( parser );
+ YYTOKEN = YYCURSOR;
+ }
+ else
+ {
+ QUOTECAT(qstr, qcapa, qidx, *YYTOKEN);
+ }
+ goto ScalarBlock2;
+ }
+#line 2502 "<stdout>"
+yy213: ++YYCURSOR;
+ goto yy214;
+yy214:
+#line 1046 "token.re"
+{ YYCURSOR--;
+ POP_LEVEL();
+ RETURN_YAML_BLOCK();
+ }
+#line 2511 "<stdout>"
+yy215: yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch(yych){
+ case '-': goto yy217;
+ default: goto yy210;
+ }
+yy216: yych = *++YYCURSOR;
+ goto yy210;
+yy217: yych = *++YYCURSOR;
+ switch(yych){
+ case '-': goto yy219;
+ default: goto yy218;
+ }
+yy218: YYCURSOR = YYMARKER;
+ switch(yyaccept){
+ case 0: goto yy208;
+ case 1: goto yy210;
+ }
+yy219: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy220;
+ case 0x0D: goto yy224;
+ case ' ': goto yy222;
+ default: goto yy218;
+ }
+yy220: ++YYCURSOR;
+ goto yy221;
+yy221:
+#line 1051 "token.re"
+{ if ( YYTOKEN == YYLINEPTR )
+ {
+ if ( blockType == BLOCK_FOLD && qidx > 0 )
+ {
+ qidx -= 1;
+ }
+ QUOTECAT(qstr, qcapa, qidx, '\n');
+ POP_LEVEL();
+ YYCURSOR = YYTOKEN;
+ RETURN_YAML_BLOCK();
+ }
+ else
+ {
+ QUOTECAT(qstr, qcapa, qidx, *YYTOKEN);
+ YYCURSOR = YYTOKEN + 1;
+ goto ScalarBlock2;
+ }
+ }
+#line 2559 "<stdout>"
+yy222: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy223;
+yy223: switch(yych){
+ case ' ': goto yy222;
+ default: goto yy221;
+ }
+yy224: yych = *++YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy220;
+ default: goto yy218;
+ }
+yy225: yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy226;
+yy226: switch(yych){
+ case 0x0A: case ' ': goto yy225;
+ case 0x0D: goto yy227;
+ default: goto yy208;
+ }
+yy227: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy225;
+ default: goto yy218;
+ }
+}
+#line 1075 "token.re"
+
+ }
+
+ return 0;
+
+}
+
+void
+eat_comments( SyckParser *parser )
+{
+Comment:
+ {
+ YYTOKEN = YYCURSOR;
+
+
+#line 2607 "<stdout>"
+{
+ YYCTYPE yych;
+ unsigned int yyaccept;
+ goto yy228;
+ ++YYCURSOR;
+yy228:
+ if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x00: goto yy230;
+ case 0x0A: goto yy232;
+ case 0x0D: goto yy233;
+ default: goto yy235;
+ }
+yy230: ++YYCURSOR;
+ goto yy231;
+yy231:
+#line 1091 "token.re"
+{ YYCURSOR = YYTOKEN;
+ return;
+ }
+#line 2629 "<stdout>"
+yy232: yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ goto yy237;
+yy233: ++YYCURSOR;
+ switch((yych = *YYCURSOR)) {
+ case 0x0A: goto yy236;
+ default: goto yy234;
+ }
+yy234:
+#line 1095 "token.re"
+{ goto Comment;
+ }
+#line 2642 "<stdout>"
+yy235: yych = *++YYCURSOR;
+ goto yy234;
+yy236: yyaccept = 0;
+ YYMARKER = ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ goto yy237;
+yy237: switch(yych){
+ case 0x0A: goto yy236;
+ case 0x0D: goto yy238;
+ default: goto yy231;
+ }
+yy238: ++YYCURSOR;
+ if(YYLIMIT == YYCURSOR) YYFILL(1);
+ yych = *YYCURSOR;
+ switch(yych){
+ case 0x0A: goto yy236;
+ default: goto yy239;
+ }
+yy239: YYCURSOR = YYMARKER;
+ switch(yyaccept){
+ case 0: goto yy231;
+ }
+}
+#line 1098 "token.re"
+
+
+ }
+
+}
+
+char
+escape_seq( char ch )
+{
+ switch ( ch )
+ {
+ case '0': return '\0';
+ case 'a': return 7;
+ case 'b': return '\010';
+ case 'e': return '\033';
+ case 'f': return '\014';
+ case 'n': return '\n';
+ case 'r': return '\015';
+ case 't': return '\t';
+ case 'v': return '\013';
+ default: return ch;
+ }
+}
+
+int
+is_newline( char *ptr )
+{
+ return newline_len( ptr );
+}
+
+int
+newline_len( char *ptr )
+{
+ if ( *ptr == '\n' )
+ return 1;
+
+ if ( *ptr == '\r' && *( ptr + 1 ) == '\n' )
+ return 2;
+
+ return 0;
+}
+
+int
+syckwrap()
+{
+ return 1;
+}
+
+void
+syckerror( const char *msg )
+{
+ if ( syck_parser_ptr->error_handler == NULL )
+ syck_parser_ptr->error_handler = syck_default_error_handler;
+
+ syck_parser_ptr->root = syck_parser_ptr->root_on_error;
+ (syck_parser_ptr->error_handler)(syck_parser_ptr, msg);
+}
+
diff --git a/ext/syck/yaml2byte.c b/ext/syck/yaml2byte.c
new file mode 100644
index 0000000000..e5cc4e0779
--- /dev/null
+++ b/ext/syck/yaml2byte.c
@@ -0,0 +1,259 @@
+/*
+ * yaml2byte.c
+ *
+ * $Author$
+ *
+ * Copyright (C) 2003 why the lucky stiff, clark evans
+ *
+ * WARNING WARNING WARNING --- THIS IS *NOT JUST* PLAYING
+ * ANYMORE! -- WHY HAS EMBRACED THIS AS THE REAL THING!
+ */
+#include "ruby/ruby.h"
+#include <syck.h>
+#include <assert.h>
+#define YAMLBYTE_UTF8
+#include "yamlbyte.h"
+
+#include <stdio.h>
+#define TRACE0(a) \
+ do { printf(a); printf("\n"); fflush(stdout); } while(0)
+#define TRACE1(a,b) \
+ do { printf(a,b); printf("\n"); fflush(stdout); } while(0)
+#define TRACE2(a,b,c) \
+ do { printf(a,b,c); printf("\n"); fflush(stdout); } while(0)
+#define TRACE3(a,b,c,d) \
+ do { printf(a,b,c,d); printf("\n"); fflush(stdout); } while(0)
+
+/* Reinvent the wheel... */
+#define CHUNKSIZE 64
+#define HASH ((long)0xCAFECAFE)
+typedef struct {
+ long hash;
+ char *buffer;
+ long length;
+ long remaining;
+ int printed;
+} bytestring_t;
+bytestring_t *bytestring_alloc(void) {
+ bytestring_t *ret;
+ /*TRACE0("bytestring_alloc()");*/
+ ret = S_ALLOC(bytestring_t);
+ ret->hash = HASH;
+ ret->length = CHUNKSIZE;
+ ret->remaining = ret->length;
+ ret->buffer = S_ALLOC_N(char, ret->length + 1 );
+ ret->buffer[0] = 0;
+ ret->printed = 0;
+ return ret;
+}
+void bytestring_append(bytestring_t *str, char code,
+ char *start, char *finish)
+{
+ long grow;
+ long length = 2; /* CODE + LF */
+ char *curr;
+ assert(str && HASH == str->hash);
+ /*TRACE0("bytestring_append()");*/
+ if(start) {
+ if(!finish)
+ finish = start + strlen(start);
+ length += (finish-start);
+ }
+ if(length > str->remaining) {
+ grow = (length - str->remaining) + CHUNKSIZE;
+ str->remaining += grow;
+ str->length += grow;
+ S_REALLOC_N( str->buffer, char, str->length + 1 );
+ assert(str->buffer);
+ }
+ curr = str->buffer + (str->length - str->remaining);
+ *curr = code;
+ curr += 1;
+ if(start)
+ while(start < finish)
+ *curr ++ = *start ++;
+ *curr = '\n';
+ curr += 1;
+ *curr = 0;
+ str->remaining = str->remaining - length;
+ assert( (str->buffer + str->length) - str->remaining );
+}
+void bytestring_extend(bytestring_t *str, bytestring_t *ext)
+{
+ char *from;
+ char *curr;
+ char *stop;
+ long grow;
+ long length;
+ assert(str && HASH == str->hash);
+ assert(ext && HASH == ext->hash);
+ if(ext->printed) {
+ assert(ext->buffer[0] ==YAMLBYTE_ANCHOR);
+ curr = ext->buffer;
+ while( '\n' != *curr)
+ curr++;
+ bytestring_append(str, YAMLBYTE_ALIAS, ext->buffer + 1, curr);
+ } else {
+ ext->printed = 1;
+ length = (ext->length - ext->remaining);
+ if(length > str->remaining) {
+ grow = (length - str->remaining) + CHUNKSIZE;
+ str->remaining += grow;
+ str->length += grow;
+ S_REALLOC_N( str->buffer, char, str->length + 1 );
+ }
+ curr = str->buffer + (str->length - str->remaining);
+ from = ext->buffer;
+ stop = ext->buffer + length;
+ while( from < stop )
+ *curr ++ = *from ++;
+ *curr = 0;
+ str->remaining = str->remaining - length;
+ assert( (str->buffer + str->length) - str->remaining );
+ }
+}
+
+/* convert SyckNode into yamlbyte_buffer_t objects */
+SYMID
+syck_yaml2byte_handler(p, n)
+ SyckParser *p;
+ SyckNode *n;
+{
+ SYMID oid;
+ long i;
+ char ch;
+ char nextcode;
+ char *start;
+ char *current;
+ char *finish;
+ bytestring_t *val = NULL;
+ bytestring_t *sav = NULL;
+ void *data;
+ /*TRACE0("syck_yaml2byte_handler()");*/
+ val = bytestring_alloc();
+ if(n->anchor) bytestring_append(val,YAMLBYTE_ANCHOR, n->anchor, NULL);
+ if ( n->type_id )
+ {
+ if ( p->taguri_expansion )
+ {
+ bytestring_append(val,YAMLBYTE_TRANSFER, n->type_id, NULL);
+ }
+ else
+ {
+ char *type_tag = S_ALLOC_N( char, strlen( n->type_id ) + 1 );
+ type_tag[0] = '\0';
+ strcat( type_tag, "!" );
+ strcat( type_tag, n->type_id );
+ bytestring_append( val, YAMLBYTE_TRANSFER, type_tag, NULL);
+ S_FREE(type_tag);
+ }
+ }
+ switch (n->kind)
+ {
+ case syck_str_kind:
+ nextcode = YAMLBYTE_SCALAR;
+ start = n->data.str->ptr;
+ finish = start + n->data.str->len - 1;
+ current = start;
+ /*TRACE2("SCALAR: %s %d", start, n->data.str->len); */
+ while(1) {
+ ch = *current;
+ if('\n' == ch || 0 == ch || current > finish) {
+ if(current >= start) {
+ bytestring_append(val, nextcode, start, current);
+ nextcode = YAMLBYTE_CONTINUE;
+ }
+ start = current + 1;
+ if(current > finish)
+ {
+ break;
+ }
+ else if('\n' == ch )
+ {
+ bytestring_append(val,YAMLBYTE_NEWLINE,NULL,NULL);
+ }
+ else if(0 == ch)
+ {
+ bytestring_append(val,YAMLBYTE_NULLCHAR,NULL,NULL);
+ }
+ else
+ {
+ assert("oops");
+ }
+ }
+ current += 1;
+ }
+ break;
+ case syck_seq_kind:
+ bytestring_append(val,YAMLBYTE_SEQUENCE,NULL,NULL);
+ for ( i = 0; i < n->data.list->idx; i++ )
+ {
+ oid = syck_seq_read( n, i );
+ if (syck_lookup_sym( p, oid, &data )) sav = data;
+ bytestring_extend(val, sav);
+ }
+ bytestring_append(val,YAMLBYTE_END_BRANCH,NULL,NULL);
+ break;
+ case syck_map_kind:
+ bytestring_append(val,YAMLBYTE_MAPPING,NULL,NULL);
+ for ( i = 0; i < n->data.pairs->idx; i++ )
+ {
+ oid = syck_map_read( n, map_key, i );
+ if (syck_lookup_sym( p, oid, &data )) sav = data;
+ bytestring_extend(val, sav);
+ oid = syck_map_read( n, map_value, i );
+ if (syck_lookup_sym( p, oid, &data )) sav = data;
+ bytestring_extend(val, sav);
+ }
+ bytestring_append(val,YAMLBYTE_END_BRANCH,NULL,NULL);
+ break;
+ }
+ oid = syck_add_sym( p, (char *) val );
+ /*TRACE1("Saving: %s", val->buffer );*/
+ return oid;
+}
+
+char *
+syck_yaml2byte(char *yamlstr)
+{
+ SYMID oid;
+ char *ret;
+ bytestring_t *sav;
+ void *data;
+
+ SyckParser *parser = syck_new_parser();
+ syck_parser_str_auto( parser, yamlstr, NULL );
+ syck_parser_handler( parser, syck_yaml2byte_handler );
+ syck_parser_error_handler( parser, NULL );
+ syck_parser_implicit_typing( parser, 1 );
+ syck_parser_taguri_expansion( parser, 1 );
+ oid = syck_parse( parser );
+
+ if ( syck_lookup_sym( parser, oid, &data ) ) {
+ sav = data;
+ ret = S_ALLOC_N( char, strlen( sav->buffer ) + 3 );
+ ret[0] = '\0';
+ strcat( ret, "D\n" );
+ strcat( ret, sav->buffer );
+ }
+ else
+ {
+ ret = NULL;
+ }
+
+ syck_free_parser( parser );
+ return ret;
+}
+
+#ifdef TEST_YBEXT
+#include <stdio.h>
+int main() {
+ char *yaml = "test: 1\nand: \"with new\\nline\\n\"\nalso: &3 three\nmore: *3";
+ printf("--- # YAML \n");
+ printf(yaml);
+ printf("\n...\n");
+ printf(syck_yaml2byte(yaml));
+ return 0;
+}
+#endif
+
diff --git a/ext/syck/yamlbyte.h b/ext/syck/yamlbyte.h
new file mode 100644
index 0000000000..16ca3d70de
--- /dev/null
+++ b/ext/syck/yamlbyte.h
@@ -0,0 +1,171 @@
+/* yamlbyte.h
+ *
+ * The YAML bytecode "C" interface header file. See the YAML bytecode
+ * reference for bytecode sequence rules and for the meaning of each
+ * bytecode.
+ */
+
+#ifndef YAMLBYTE_H
+#define YAMLBYTE_H
+#include <stddef.h>
+
+/* define what a character is */
+typedef unsigned char yamlbyte_utf8_t;
+typedef unsigned short yamlbyte_utf16_t;
+#ifdef YAMLBYTE_UTF8
+ #ifdef YAMLBYTE_UTF16
+ #error Must only define YAMLBYTE_UTF8 or YAMLBYTE_UTF16
+ #endif
+ typedef yamlbyte_utf8_t yamlbyte_char_t;
+#else
+ #ifdef YAMLBYTE_UTF16
+ typedef yamlbyte_utf16_t yamlbyte_char_t;
+ #else
+ #error Must define YAMLBYTE_UTF8 or YAMLBYTE_UTF16
+ #endif
+#endif
+
+/* specify list of bytecodes */
+#define YAMLBYTE_FINISH ((yamlbyte_char_t) 0)
+#define YAMLBYTE_DOCUMENT ((yamlbyte_char_t)'D')
+#define YAMLBYTE_DIRECTIVE ((yamlbyte_char_t)'V')
+#define YAMLBYTE_PAUSE ((yamlbyte_char_t)'P')
+#define YAMLBYTE_MAPPING ((yamlbyte_char_t)'M')
+#define YAMLBYTE_SEQUENCE ((yamlbyte_char_t)'Q')
+#define YAMLBYTE_END_BRANCH ((yamlbyte_char_t)'E')
+#define YAMLBYTE_SCALAR ((yamlbyte_char_t)'S')
+#define YAMLBYTE_CONTINUE ((yamlbyte_char_t)'C')
+#define YAMLBYTE_NEWLINE ((yamlbyte_char_t)'N')
+#define YAMLBYTE_NULLCHAR ((yamlbyte_char_t)'Z')
+#define YAMLBYTE_ANCHOR ((yamlbyte_char_t)'A')
+#define YAMLBYTE_ALIAS ((yamlbyte_char_t)'R')
+#define YAMLBYTE_TRANSFER ((yamlbyte_char_t)'T')
+/* formatting bytecodes */
+#define YAMLBYTE_COMMENT ((yamlbyte_char_t)'c')
+#define YAMLBYTE_INDENT ((yamlbyte_char_t)'i')
+#define YAMLBYTE_STYLE ((yamlbyte_char_t)'s')
+/* other bytecodes */
+#define YAMLBYTE_LINE_NUMBER ((yamlbyte_char_t)'#')
+#define YAMLBYTE_WHOLE_SCALAR ((yamlbyte_char_t)'<')
+#define YAMLBYTE_NOTICE ((yamlbyte_char_t)'!')
+#define YAMLBYTE_SPAN ((yamlbyte_char_t)')')
+#define YAMLBYTE_ALLOC ((yamlbyte_char_t)'@')
+
+/* second level style bytecodes, ie "s>" */
+#define YAMLBYTE_FLOW ((yamlbyte_char_t)'>')
+#define YAMLBYTE_LITERAL ((yamlbyte_char_t)'|')
+#define YAMLBYTE_BLOCK ((yamlbyte_char_t)'b')
+#define YAMLBYTE_PLAIN ((yamlbyte_char_t)'p')
+#define YAMLBYTE_INLINE_MAPPING ((yamlbyte_char_t)'{')
+#define YAMLBYTE_INLINE_SEQUENCE ((yamlbyte_char_t)'[')
+#define YAMLBYTE_SINGLE_QUOTED ((yamlbyte_char_t)39)
+#define YAMLBYTE_DOUBLE_QUOTED ((yamlbyte_char_t)'"')
+
+/*
+ * The "C" API has two variants, one based on instructions,
+ * with events delivered via pointers; and the other one
+ * is character based where one or more instructions are
+ * serialized into a buffer.
+ *
+ * Note: In the instruction based API, WHOLE_SCALAR does
+ * not have the '<here' marshalling stuff.
+ */
+
+typedef void * yamlbyte_consumer_t;
+typedef void * yamlbyte_producer_t;
+
+/* push and pull APIs need a way to communicate results */
+typedef enum {
+ YAMLBYTE_OK = 0, /* proceed */
+ YAMLBYTE_E_MEMORY = 'M', /* could not allocate memory */
+ YAMLBYTE_E_READ = 'R', /* input stream read error */
+ YAMLBYTE_E_WRITE = 'W', /* output stream write error */
+ YAMLBYTE_E_OTHER = '?', /* some other error condition */
+ YAMLBYTE_E_PARSE = 'P', /* parse error, check bytecodes */
+ YAMLBYTE_MAX
+} yamlbyte_result_t;
+
+typedef const yamlbyte_char_t *yamlbyte_buff_t;
+
+/*
+ * The "Instruction" API
+ */
+
+typedef struct yaml_instruction {
+ yamlbyte_char_t bytecode;
+ yamlbyte_buff_t start;
+ yamlbyte_buff_t finish; /* open range, *finish is _not_ part */
+} *yamlbyte_inst_t;
+
+/* producer pushes the instruction with one bytecode event to the
+ * consumer; if the consumer's result is not YAMLBYTE_OK, then
+ * the producer should stop */
+typedef
+ yamlbyte_result_t
+ (*yamlbyte_push_t)(
+ yamlbyte_consumer_t self,
+ yamlbyte_inst_t inst
+ );
+
+/* consumer pulls a bytecode instruction from the producer; in this
+ * case the instruction (and is buffer) are owned by the producer and
+ * will remain valid till the pull function is called once again;
+ * if the instruction is NULL, then there are no more results; and
+ * it is important to call the pull function till it returns NULL so
+ * that the producer can clean up its memory allocations */
+typedef
+ yamlbyte_result_t
+ (*yamlbyte_pull_t)(
+ yamlbyte_producer_t self,
+ yamlbyte_inst_t *inst /* to be filled in by the producer */
+ );
+
+/*
+ * Buffer based API
+ */
+
+/* producer pushes a null terminated buffer filled with one or more
+ * bytecode events to the consumer; if the consumer's result is not
+ * YAMLBYTE_OK, then the producer should stop */
+typedef
+ yamlbyte_result_t
+ (*yamlbyte_pushbuff_t)(
+ yamlbyte_consumer_t self,
+ yamlbyte_buff_t buff
+ );
+
+/* consumer pulls bytecode events from the producer; in this case
+ * the buffer is owned by the producer, and will remain valid till
+ * the pull function is called once again; if the buffer pointer
+ * is set to NULL, then there are no more results; it is important
+ * to call the pull function till it returns NULL so that the
+ * producer can clean up its memory allocations */
+typedef
+ yamlbyte_result_t
+ (*yamlbyte_pullbuff_t)(
+ yamlbyte_producer_t self,
+ yamlbyte_buff_t *buff /* to be filled in by the producer */
+ );
+
+/* convert a pull interface to a push interface; the reverse process
+ * requires threads and thus is language dependent */
+#define YAMLBYTE_PULL2PUSH(pull,producer,push,consumer,result) \
+ do { \
+ yamlbyte_pullbuff_t _pull = (pull); \
+ yamlbyte_pushbuff_t _push = (push); \
+ yamlbyte_result_t _result = YAMLBYTE_OK; \
+ yamlbyte_producer_t _producer = (producer); \
+ yamlbyte_consumer_t _consumer = (consumer); \
+ while(1) { \
+ yamlbyte_buff_t buff = NULL; \
+ _result = _pull(_producer,&buff); \
+ if(YAMLBYTE_OK != result || NULL == buff) \
+ break; \
+ _result = _push(_consumer,buff); \
+ if(YAMLBYTE_OK != result) \
+ break; \
+ } \
+ (result) = _result; \
+ } while(0)
+
+#endif
diff --git a/ext/syslog/lib/syslog/logger.rb b/ext/syslog/lib/syslog/logger.rb
deleted file mode 100644
index a8d089a094..0000000000
--- a/ext/syslog/lib/syslog/logger.rb
+++ /dev/null
@@ -1,194 +0,0 @@
-require 'syslog'
-require 'logger'
-
-##
-# Syslog::Logger is a Logger work-alike that logs via syslog instead of to a
-# file. You can use Syslog::Logger to aggregate logs between multiple
-# machines.
-#
-# By default, Syslog::Logger uses the program name 'ruby', but this can be
-# changed via the first argument to Syslog::Logger.new.
-#
-# NOTE! You can only set the Syslog::Logger program name when you initialize
-# Syslog::Logger for the first time. This is a limitation of the way
-# Syslog::Logger uses syslog (and in some ways, a limitation of the way
-# syslog(3) works). Attempts to change Syslog::Logger's program name after
-# the first initialization will be ignored.
-#
-# === Example
-#
-# The following will log to syslogd on your local machine:
-#
-# require 'syslog/logger'
-#
-# log = Syslog::Logger.new 'my_program'
-# log.info 'this line will be logged via syslog(3)'
-#
-# You may need to perform some syslog.conf setup first. For a BSD machine add
-# the following lines to /etc/syslog.conf:
-#
-# !my_program
-# *.* /var/log/my_program.log
-#
-# Then touch /var/log/my_program.log and signal syslogd with a HUP
-# (killall -HUP syslogd, on FreeBSD).
-#
-# If you wish to have logs automatically roll over and archive, see the
-# newsyslog.conf(5) and newsyslog(8) man pages.
-
-class Syslog::Logger
- # Default formatter for log messages.
- class Formatter
- def call severity, time, progname, msg
- clean msg
- end
-
- private
-
- ##
- # Clean up messages so they're nice and pretty.
-
- def clean message
- message = message.to_s.strip
- message.gsub!(/\e\[[0-9;]*m/, '') # remove useless ansi color codes
- return message
- end
- end
-
- ##
- # The version of Syslog::Logger you are using.
-
- VERSION = '2.0'
-
- ##
- # Maps Logger warning types to syslog(3) warning types.
- #
- # Messages from ruby applications are not considered as critical as messages
- # from other system daemons using syslog(3), so most messages are reduced by
- # one level. For example, a fatal message for ruby's Logger is considered
- # an error for syslog(3).
-
- LEVEL_MAP = {
- ::Logger::UNKNOWN => Syslog::LOG_ALERT,
- ::Logger::FATAL => Syslog::LOG_ERR,
- ::Logger::ERROR => Syslog::LOG_WARNING,
- ::Logger::WARN => Syslog::LOG_NOTICE,
- ::Logger::INFO => Syslog::LOG_INFO,
- ::Logger::DEBUG => Syslog::LOG_DEBUG,
- }
-
- ##
- # Returns the internal Syslog object that is initialized when the
- # first instance is created.
-
- def self.syslog
- @@syslog
- end
-
- ##
- # Specifies the internal Syslog object to be used.
-
- def self.syslog= syslog
- @@syslog = syslog
- end
-
- ##
- # Builds a methods for level +meth+.
-
- def self.make_methods meth
- level = ::Logger.const_get(meth.upcase)
- eval <<-EOM, nil, __FILE__, __LINE__ + 1
- def #{meth}(message = nil, &block)
- add(#{level}, message, &block)
- end
-
- def #{meth}?
- @level <= #{level}
- end
- EOM
- end
-
- ##
- # :method: unknown
- #
- # Logs a +message+ at the unknown (syslog alert) log level, or logs the
- # message returned from the block.
-
- ##
- # :method: fatal
- #
- # Logs a +message+ at the fatal (syslog err) log level, or logs the message
- # returned from the block.
-
- ##
- # :method: error
- #
- # Logs a +message+ at the error (syslog warning) log level, or logs the
- # message returned from the block.
-
- ##
- # :method: warn
- #
- # Logs a +message+ at the warn (syslog notice) log level, or logs the
- # message returned from the block.
-
- ##
- # :method: info
- #
- # Logs a +message+ at the info (syslog info) log level, or logs the message
- # returned from the block.
-
- ##
- # :method: debug
- #
- # Logs a +message+ at the debug (syslog debug) log level, or logs the
- # message returned from the block.
-
- Logger::Severity::constants.each do |severity|
- make_methods severity.downcase
- end
-
- ##
- # Log level for Logger compatibility.
-
- attr_accessor :level
-
- # Logging formatter, as a +Proc+ that will take four arguments and
- # return the formatted message. The arguments are:
- #
- # +severity+:: The Severity of the log message.
- # +time+:: A Time instance representing when the message was logged.
- # +progname+:: The #progname configured, or passed to the logger method.
- # +msg+:: The _Object_ the user passed to the log message; not necessarily a
- # String.
- #
- # The block should return an Object that can be written to the logging
- # device via +write+. The default formatter is used when no formatter is
- # set.
- attr_accessor :formatter
-
- ##
- # Fills in variables for Logger compatibility. If this is the first
- # instance of Syslog::Logger, +program_name+ may be set to change the logged
- # program name.
- #
- # Due to the way syslog works, only one program name may be chosen.
-
- def initialize program_name = 'ruby'
- @level = ::Logger::DEBUG
- @formatter = Formatter.new
-
- @@syslog ||= Syslog.open(program_name)
- end
-
- ##
- # Almost duplicates Logger#add. +progname+ is ignored.
-
- def add severity, message = nil, progname = nil, &block
- severity ||= ::Logger::UNKNOWN
- @level <= severity and
- @@syslog.log LEVEL_MAP[severity], '%s', formatter.call(severity, Time.now, progname, (message || block.call))
- true
- end
-end
-
diff --git a/ext/syslog/syslog.c b/ext/syslog/syslog.c
index c14f05f34d..d1f75101e4 100644
--- a/ext/syslog/syslog.c
+++ b/ext/syslog/syslog.c
@@ -13,21 +13,7 @@
#include <syslog.h>
/* Syslog class */
-static VALUE mSyslog;
-/*
- * Module holding all Syslog constants. See Syslog::log and
- * Syslog::open for constant descriptions.
- */
-static VALUE mSyslogConstants;
-/* Module holding Syslog option constants */
-static VALUE mSyslogOption;
-/* Module holding Syslog facility constants */
-static VALUE mSyslogFacility;
-/* Module holding Syslog level constants */
-static VALUE mSyslogLevel;
-/* Module holding Syslog utility macros */
-static VALUE mSyslogMacros;
-
+static VALUE mSyslog, mSyslogConstants;
static const char *syslog_ident = NULL;
static int syslog_options = -1, syslog_facility = -1, syslog_mask = -1;
static int syslog_opened = 0;
@@ -63,7 +49,7 @@ static VALUE mSyslog_close(VALUE self)
closelog();
- xfree((void *)syslog_ident);
+ free((void *)syslog_ident);
syslog_ident = NULL;
syslog_options = syslog_facility = syslog_mask = -1;
syslog_opened = 0;
@@ -125,7 +111,7 @@ static VALUE mSyslog_close(VALUE self)
* LOG_KERN:: A kernel message (not sendable by user processes, so not of
* much use to Ruby, but listed here for completeness).
*
- * LOG_LPR:: Line printer subsystem.
+ * LOG_LRP:: Line printer subsystem.
*
* LOG_MAIL:: Mail delivery or transport subsystem.
*
@@ -315,7 +301,7 @@ static VALUE mSyslog_log(int argc, VALUE *argv, VALUE self)
pri = *argv++;
if (!FIXNUM_P(pri)) {
- rb_raise(rb_eTypeError, "type mismatch: %"PRIsVALUE" given", rb_obj_class(pri));
+ rb_raise(rb_eTypeError, "type mismatch: %s given", rb_class2name(CLASS_OF(pri)));
}
syslog_write(FIX2INT(pri), argc, argv);
@@ -327,17 +313,24 @@ static VALUE mSyslog_log(int argc, VALUE *argv, VALUE self)
*/
static VALUE mSyslog_inspect(VALUE self)
{
+ char buf[1024];
+
Check_Type(self, T_MODULE);
- if (!syslog_opened)
- return rb_sprintf("<#%"PRIsVALUE": opened=false>", self);
+ if (syslog_opened) {
+ snprintf(buf, sizeof(buf),
+ "<#%s: opened=true, ident=\"%s\", options=%d, facility=%d, mask=%d>",
+ rb_class2name(self),
+ syslog_ident,
+ syslog_options,
+ syslog_facility,
+ syslog_mask);
+ } else {
+ snprintf(buf, sizeof(buf),
+ "<#%s: opened=false>", rb_class2name(self));
+ }
- return rb_sprintf("<#%"PRIsVALUE": opened=true, ident=\"%s\", options=%d, facility=%d, mask=%d>",
- self,
- syslog_ident,
- syslog_options,
- syslog_facility,
- syslog_mask);
+ return rb_str_new2(buf);
}
/* Returns self, for backward compatibility.
@@ -385,7 +378,7 @@ define_syslog_shortcut_method(LOG_DEBUG, debug)
*
* Generates a mask bit for a priority level. See #mask=
*/
-static VALUE mSyslogMacros_LOG_MASK(VALUE mod, VALUE pri)
+static VALUE mSyslogConstants_LOG_MASK(VALUE klass, VALUE pri)
{
return INT2FIX(LOG_MASK(NUM2INT(pri)));
}
@@ -396,17 +389,11 @@ static VALUE mSyslogMacros_LOG_MASK(VALUE mod, VALUE pri)
* Generates a mask value for priority levels at or below the level specified.
* See #mask=
*/
-static VALUE mSyslogMacros_LOG_UPTO(VALUE mod, VALUE pri)
+static VALUE mSyslogConstants_LOG_UPTO(VALUE klass, VALUE pri)
{
return INT2FIX(LOG_UPTO(NUM2INT(pri)));
}
-static VALUE mSyslogMacros_included(VALUE mod, VALUE target)
-{
- rb_extend_object(target, mSyslogMacros);
- return mod;
-}
-
/* The syslog package provides a Ruby interface to the POSIX system logging
* facility.
*
@@ -425,12 +412,14 @@ void Init_syslog()
{
mSyslog = rb_define_module("Syslog");
- mSyslogConstants = rb_define_module_under(mSyslog, "Constants");
+ /* Document-module: Syslog::Constants
+ *
+ * Module holding Syslog constants. See Syslog::log and Syslog::open for
+ * constant descriptions.
+ */
+ mSyslogConstants = rb_define_module_under(mSyslog, "Constants");
- mSyslogOption = rb_define_module_under(mSyslog, "Option");
- mSyslogFacility = rb_define_module_under(mSyslog, "Facility");
- mSyslogLevel = rb_define_module_under(mSyslog, "Level");
- mSyslogMacros = rb_define_module_under(mSyslog, "Macros");
+ rb_include_module(mSyslog, mSyslogConstants);
rb_define_module_function(mSyslog, "open", mSyslog_open, -1);
rb_define_module_function(mSyslog, "reopen", mSyslog_reopen, -1);
@@ -446,150 +435,143 @@ void Init_syslog()
rb_define_module_function(mSyslog, "mask", mSyslog_get_mask, 0);
rb_define_module_function(mSyslog, "mask=", mSyslog_set_mask, 1);
+ rb_define_module_function(mSyslog, "LOG_MASK", mSyslogConstants_LOG_MASK, 1);
+ rb_define_module_function(mSyslog, "LOG_UPTO", mSyslogConstants_LOG_UPTO, 1);
+
rb_define_module_function(mSyslog, "inspect", mSyslog_inspect, 0);
rb_define_module_function(mSyslog, "instance", mSyslog_instance, 0);
- /* Syslog options */
+ rb_define_module_function(mSyslogConstants, "LOG_MASK", mSyslogConstants_LOG_MASK, 1);
+ rb_define_module_function(mSyslogConstants, "LOG_UPTO", mSyslogConstants_LOG_UPTO, 1);
-#define rb_define_syslog_option(c) \
- rb_define_const(mSyslogOption, #c, INT2NUM(c))
+#define rb_define_syslog_const(id) \
+ rb_define_const(mSyslogConstants, #id, INT2NUM(id))
+ /* Various options when opening log */
#ifdef LOG_PID
- rb_define_syslog_option(LOG_PID);
+ rb_define_syslog_const(LOG_PID);
#endif
#ifdef LOG_CONS
- rb_define_syslog_option(LOG_CONS);
+ rb_define_syslog_const(LOG_CONS);
#endif
#ifdef LOG_ODELAY
- rb_define_syslog_option(LOG_ODELAY); /* deprecated */
+ rb_define_syslog_const(LOG_ODELAY); /* deprecated */
#endif
#ifdef LOG_NDELAY
- rb_define_syslog_option(LOG_NDELAY);
+ rb_define_syslog_const(LOG_NDELAY);
#endif
#ifdef LOG_NOWAIT
- rb_define_syslog_option(LOG_NOWAIT); /* deprecated */
+ rb_define_syslog_const(LOG_NOWAIT); /* deprecated */
#endif
#ifdef LOG_PERROR
- rb_define_syslog_option(LOG_PERROR);
+ rb_define_syslog_const(LOG_PERROR);
#endif
- /* Syslog facilities */
-
-#define rb_define_syslog_facility(c) \
- rb_define_const(mSyslogFacility, #c, INT2NUM(c))
-
+ /* Various syslog facilities */
#ifdef LOG_AUTH
- rb_define_syslog_facility(LOG_AUTH);
+ rb_define_syslog_const(LOG_AUTH);
#endif
#ifdef LOG_AUTHPRIV
- rb_define_syslog_facility(LOG_AUTHPRIV);
+ rb_define_syslog_const(LOG_AUTHPRIV);
#endif
#ifdef LOG_CONSOLE
- rb_define_syslog_facility(LOG_CONSOLE);
+ rb_define_syslog_const(LOG_CONSOLE);
#endif
#ifdef LOG_CRON
- rb_define_syslog_facility(LOG_CRON);
+ rb_define_syslog_const(LOG_CRON);
#endif
#ifdef LOG_DAEMON
- rb_define_syslog_facility(LOG_DAEMON);
+ rb_define_syslog_const(LOG_DAEMON);
#endif
#ifdef LOG_FTP
- rb_define_syslog_facility(LOG_FTP);
+ rb_define_syslog_const(LOG_FTP);
#endif
#ifdef LOG_KERN
- rb_define_syslog_facility(LOG_KERN);
+ rb_define_syslog_const(LOG_KERN);
#endif
#ifdef LOG_LPR
- rb_define_syslog_facility(LOG_LPR);
+ rb_define_syslog_const(LOG_LPR);
#endif
#ifdef LOG_MAIL
- rb_define_syslog_facility(LOG_MAIL);
+ rb_define_syslog_const(LOG_MAIL);
#endif
#ifdef LOG_NEWS
- rb_define_syslog_facility(LOG_NEWS);
+ rb_define_syslog_const(LOG_NEWS);
#endif
#ifdef LOG_NTP
- rb_define_syslog_facility(LOG_NTP);
+ rb_define_syslog_const(LOG_NTP);
#endif
#ifdef LOG_SECURITY
- rb_define_syslog_facility(LOG_SECURITY);
+ rb_define_syslog_const(LOG_SECURITY);
#endif
#ifdef LOG_SYSLOG
- rb_define_syslog_facility(LOG_SYSLOG);
+ rb_define_syslog_const(LOG_SYSLOG);
#endif
#ifdef LOG_USER
- rb_define_syslog_facility(LOG_USER);
+ rb_define_syslog_const(LOG_USER);
#endif
#ifdef LOG_UUCP
- rb_define_syslog_facility(LOG_UUCP);
+ rb_define_syslog_const(LOG_UUCP);
#endif
#ifdef LOG_LOCAL0
- rb_define_syslog_facility(LOG_LOCAL0);
+ rb_define_syslog_const(LOG_LOCAL0);
#endif
#ifdef LOG_LOCAL1
- rb_define_syslog_facility(LOG_LOCAL1);
+ rb_define_syslog_const(LOG_LOCAL1);
#endif
#ifdef LOG_LOCAL2
- rb_define_syslog_facility(LOG_LOCAL2);
+ rb_define_syslog_const(LOG_LOCAL2);
#endif
#ifdef LOG_LOCAL3
- rb_define_syslog_facility(LOG_LOCAL3);
+ rb_define_syslog_const(LOG_LOCAL3);
#endif
#ifdef LOG_LOCAL4
- rb_define_syslog_facility(LOG_LOCAL4);
+ rb_define_syslog_const(LOG_LOCAL4);
#endif
#ifdef LOG_LOCAL5
- rb_define_syslog_facility(LOG_LOCAL5);
+ rb_define_syslog_const(LOG_LOCAL5);
#endif
#ifdef LOG_LOCAL6
- rb_define_syslog_facility(LOG_LOCAL6);
+ rb_define_syslog_const(LOG_LOCAL6);
#endif
#ifdef LOG_LOCAL7
- rb_define_syslog_facility(LOG_LOCAL7);
+ rb_define_syslog_const(LOG_LOCAL7);
#endif
- /* Syslog levels and the shortcut methods */
-
-#define rb_define_syslog_level(c, m) \
- rb_define_const(mSyslogLevel, #c, INT2NUM(c)); \
- rb_define_module_function(mSyslog, #m, mSyslog_##m, -1)
+#define rb_define_syslog_shortcut(name) \
+ rb_define_module_function(mSyslog, #name, mSyslog_##name, -1)
+ /* Various syslog priorities and the shortcut methods */
#ifdef LOG_EMERG
- rb_define_syslog_level(LOG_EMERG, emerg);
+ rb_define_syslog_const(LOG_EMERG);
+ rb_define_syslog_shortcut(emerg);
#endif
#ifdef LOG_ALERT
- rb_define_syslog_level(LOG_ALERT, alert);
+ rb_define_syslog_const(LOG_ALERT);
+ rb_define_syslog_shortcut(alert);
#endif
#ifdef LOG_CRIT
- rb_define_syslog_level(LOG_CRIT, crit);
+ rb_define_syslog_const(LOG_CRIT);
+ rb_define_syslog_shortcut(crit);
#endif
#ifdef LOG_ERR
- rb_define_syslog_level(LOG_ERR, err);
+ rb_define_syslog_const(LOG_ERR);
+ rb_define_syslog_shortcut(err);
#endif
#ifdef LOG_WARNING
- rb_define_syslog_level(LOG_WARNING, warning);
+ rb_define_syslog_const(LOG_WARNING);
+ rb_define_syslog_shortcut(warning);
#endif
#ifdef LOG_NOTICE
- rb_define_syslog_level(LOG_NOTICE, notice);
+ rb_define_syslog_const(LOG_NOTICE);
+ rb_define_syslog_shortcut(notice);
#endif
#ifdef LOG_INFO
- rb_define_syslog_level(LOG_INFO, info);
+ rb_define_syslog_const(LOG_INFO);
+ rb_define_syslog_shortcut(info);
#endif
#ifdef LOG_DEBUG
- rb_define_syslog_level(LOG_DEBUG, debug);
+ rb_define_syslog_const(LOG_DEBUG);
+ rb_define_syslog_shortcut(debug);
#endif
-
- /* Syslog macros */
-
- rb_define_method(mSyslogMacros, "LOG_MASK", mSyslogMacros_LOG_MASK, 1);
- rb_define_method(mSyslogMacros, "LOG_UPTO", mSyslogMacros_LOG_UPTO, 1);
- rb_define_singleton_method(mSyslogMacros, "included", mSyslogMacros_included, 1);
-
- rb_include_module(mSyslogConstants, mSyslogOption);
- rb_include_module(mSyslogConstants, mSyslogFacility);
- rb_include_module(mSyslogConstants, mSyslogLevel);
- rb_funcall(mSyslogConstants, rb_intern("include"), 1, mSyslogMacros);
-
- rb_define_singleton_method(mSyslogConstants, "included", mSyslogMacros_included, 1);
- rb_funcall(mSyslog, rb_intern("include"), 1, mSyslogConstants);
}
diff --git a/ext/tk/ChangeLog.tkextlib b/ext/tk/ChangeLog.tkextlib
index 52a0b7ea3a..b4775c55fc 100644
--- a/ext/tk/ChangeLog.tkextlib
+++ b/ext/tk/ChangeLog.tkextlib
@@ -496,7 +496,7 @@ Sat Nov 22 10:31:25 2008 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
2005-04-08 ocean <ocean@ruby-lang.org>
* sample/tkextlib/treectrl/random.rb: fixed typo. (drop node outside of
- widget, or reenter widget while dragging)
+ widget, or reenter widget while draggging)
2005-04-08 ocean <ocean@ruby-lang.org>
diff --git a/ext/tk/MANUAL_tcltklib.eng b/ext/tk/MANUAL_tcltklib.eng
index e9f6dc65ce..8ba202c06f 100644
--- a/ext/tk/MANUAL_tcltklib.eng
+++ b/ext/tk/MANUAL_tcltklib.eng
@@ -11,7 +11,7 @@ module TclTklib
: Tcl/Tk interpreters
module TclTkLib::EventFlag
- : Defines flags to define target events on 'do_one_event' methods.
+ : Defines flags to define taget events on 'do_one_event' methos.
: When to give, please use bit-operator (e.g. WINDOW | DONT_WAIT).
[constants]
diff --git a/ext/tk/MANUAL_tcltklib.eucj b/ext/tk/MANUAL_tcltklib.eucj
index 1de1736f9f..1ff5dddde4 100644
--- a/ext/tk/MANUAL_tcltklib.eucj
+++ b/ext/tk/MANUAL_tcltklib.eucj
@@ -1,525 +1,525 @@
(tof)
2005/07/05 Hidetoshi NAGAI
-本ドキュメントには古い tcltk ライブラリ,tcltklib ライブラリの説明
-が含まれていますが,その記述内容は古いものとなっています.
+ܥɥȤˤϸŤ tcltk 饤֥ꡤtcltklib 饤֥
+ޤޤƤޤεƤϸŤΤȤʤäƤޤ
-tcltk ライブラリ(tcltk.rb)は現在ではメンテナンスが事実上行われて
-いないため,古いドキュメントの説明がそのまま有効です.それに対し,
-tcltklib ライブラリについては,現在の Ruby/Tk(tk.rb 以下のライブラ
-リ群)を稼働させるための中心としてメンテナンスされているため,少々
-違いが生じています.
+tcltk 饤֥tcltk.rbˤϸߤǤϥƥʥ󥹤¾Ԥ
+ʤᡤŤɥȤΤޤͭǤФ
+tcltklib 饤֥ˤĤƤϡߤ Ruby/Tktk.rb ʲΥ饤֥
+귲ˤƯ뤿濴Ȥƥƥʥ󥹤Ƥ뤿ᡤ
+㤤Ƥޤ
-そこで,まず古い説明文書を示した後,現在の tcltklib ライブラリにつ
-いての説明を加えます.
+ǡޤŤʸ򼨤塤ߤ tcltklib 饤֥ˤ
+Ƥäޤ
-以下がライブラリの古い説明文書です.
+ʲ饤֥θŤʸǤ
==============================================================
MANUAL.euc
Sep. 19, 1997 Y. Shigehiro
-以下, 「tcl/tk」という表記は, tclsh や wish を実現している, 一般でいう
-ところの tcl/tk を指します. 「tcltk ライブラリ」, 「tcltklib ライブラ
-リ」という表記は, 本パッケージに含まれる ruby 用のライブラリを指します.
+ʲ, tcl/tkפȤɽ, tclsh wish ¸Ƥ, ̤Ǥ
+Ȥ tcl/tk ؤޤ. tcltk 饤֥, tcltklib 饤֥
+פȤɽ, ܥѥå˴ޤޤ ruby ѤΥ饤֥ؤޤ.
-<< tcltk ライブラリ >>
+<< tcltk 饤֥ >>
-tcl/tk の C ライブラリを利用するための高(中?)水準インターフェースを提
-供します.
+tcl/tk C 饤֥Ѥ뤿ι(?)।󥿡ե
+ޤ.
-このライブラリは ruby から tcl/tk ライブラリを利用するためのもので, 内
-部で tcltklib ライブラリを利用しています.
+Υ饤֥ ruby tcl/tk 饤֥Ѥ뤿ΤΤ,
+ tcltklib 饤֥ѤƤޤ.
-[説明]
+[]
-tcl/tk インタプリタでは, ウィジェットに何か指示を送るには, ウィジェッ
-ト名に続いてパラメータを書きます. したがって, ウィジェットがオブジェク
-トであり, それに対してメソッドを送っている, とみなすことができます. さ
-て, tcl/tk インタプリタでは, 組み込みコマンドも, 前述のウィジェットと
-同じような書式の命令で実行されます. すなわち, コマンドもオブジェクトで
-あると考えることができます.
+tcl/tk 󥿥ץ꥿Ǥ, åȤ˲ؼˤ,
+̾³ƥѥ᡼񤭤ޤ. ä, åȤ֥
+ȤǤ, Фƥ᥽åɤäƤ, ȤߤʤȤǤޤ.
+, tcl/tk 󥿥ץ꥿Ǥ, Ȥ߹ߥޥɤ, ҤΥåȤ
+Ʊ褦ʽ񼰤̿Ǽ¹Ԥޤ. ʤ, ޥɤ⥪֥Ȥ
+ȹͤ뤳ȤǤޤ.
-このような考えに基づき, tcltk ライブラリでは, tcl/tk のコマンドやウィ
-ジェットに対応するオブジェクトを生成します. オブジェクトに対するメソッ
-ド呼び出しは, e() メソッドにより実行されます. 例えば, tcl/tk の info
-コマンドに対応する ruby のオブジェクトが info という名前であるとすると,
-tcl/tk の
+Τ褦ʹͤ˴Ť, tcltk 饤֥Ǥ, tcl/tk Υޥɤ䥦
+åȤб륪֥Ȥޤ. ֥ȤФ᥽
+ɸƤӽФ, e() ᥽åɤˤ¹Ԥޤ. 㤨, tcl/tk info
+ޥɤб ruby Υ֥Ȥ info Ȥ̾ǤȤ,
+tcl/tk
info commands
-という命令は tcltk ライブラリでは
+Ȥ̿ tcltk 饤֥Ǥ
info.e("commands")
-と記述されます. また, 「.」というウィジェット (wish 実行時に自動的に生
-成されるルートウィジェット) に対応する ruby のオブジェクトが root とい
-う名前であるとすると,
+ȵҤޤ. ޤ, .פȤå (wish ¹Ի˼ưŪ
+롼ȥå) б ruby Υ֥Ȥ root Ȥ
+̾ǤȤ,
. configure -height 300 -width 300
-という tcl/tk の命令は
+Ȥ tcl/tk ̿
root.e("configure -height 300 -width 300")
-と記述されます. このような記述は, 見ためには美しくありませんが, そして,
-スクリプトを読む人には見づらいかも知れませんが, 実際にスクリプトを書い
-てみると予想外に手軽です.
+ȵҤޤ. Τ褦ʵҤ, ˤޤ, ,
+ץȤɤͤˤϸŤ餤Τޤ, ºݤ˥ץȤ
+Ƥߤͽ۳˼ڤǤ.
-[使用法]
+[ˡ]
-1. ライブラリを読み込む.
+1. 饤֥ɤ߹.
require "tcltk"
-2. tcl/tk インタプリタを生成する.
+2. tcl/tk 󥿥ץ꥿.
ip = TclTkInterpreter.new()
-3. tcl/tk のコマンドに対応するオブジェクトを変数に代入しておく.
- # コマンドに対応するオブジェクトが入った Hash を取り出す.
+3. tcl/tk Υޥɤб륪֥ȤѿƤ.
+ # ޥɤб륪֥Ȥä Hash Ф.
c = ip.commands()
- # 使いたいコマンドに対応するオブジェクトを個別の変数に代入する.
+ # Ȥޥɤб륪֥Ȥ̤ѿ.
bind, button, info, wm = c.indexes("bind", "button", "info", "wm")
-4. 必要な処理を行う.
- 詳しくは, サンプルを参照のこと.
+4. ɬפʽԤ.
+ ܤ, ץ򻲾ȤΤ.
-5. 準備ができたら, イベントループに入る.
+5. Ǥ, ٥ȥ롼פ.
TclTk.mainloop()
-(( 以下, モジュール, クラス等の説明を書く予定.))
+(( ʲ, ⥸塼, 饹ͽ.))
-<< tcltklib ライブラリ >>
+<< tcltklib 饤֥ >>
-tcl/tk の C ライブラリを利用するための低水準インターフェースを提供しま
-す.
+tcl/tk C 饤֥Ѥ뤿।󥿡ե󶡤
+.
-コンパイル/実行には, tcl/tk の C ライブラリが必要です.
+ѥ/¹Ԥˤ, tcl/tk C 饤֥꤬ɬפǤ.
-[説明]
+[]
-このライブラリを用いると, ruby から tcl/tk の C ライブラリを利用できま
-す. 具体的には, ruby インタプリタから tcl/tk インタプリタを呼び出すこ
-とができます. さらに, その(ruby インタプリタから呼び出した) tcl/tk イ
-ンタプリタから, 逆に ruby インタプリタを呼び出すこともできます.
+Υ饤֥Ѥ, ruby tcl/tk C 饤֥ѤǤ
+. Ūˤ, ruby 󥿥ץ꥿ tcl/tk 󥿥ץ꥿ƤӽФ
+ȤǤޤ. , (ruby 󥿥ץ꥿ƤӽФ) tcl/tk
+󥿥ץ꥿, դ ruby 󥿥ץ꥿ƤӽФȤǤޤ.
-[使用法]
+[ˡ]
-require "tcltklib" すると, 以下のモジュール, クラスが利用可能です.
+require "tcltklib" , ʲΥ⥸塼, 饹ѲǽǤ.
-モジュール TclTkLib
- tcl/tk ライブラリを呼び出すメソッドを集めたモジュールです. ただし,
- tcl/tk インタプリタ関係のメソッドはクラス TclTkIp にあります.
+⥸塼 TclTkLib
+ tcl/tk 饤֥ƤӽФ᥽åɤ򽸤᤿⥸塼Ǥ. ,
+ tcl/tk 󥿥ץ꥿طΥ᥽åɤϥ饹 TclTkIp ˤޤ.
- モジュールメソッド mainloop()
- Tk_MainLoop を実行します. 全ての tk のウインドウが無くなると終了
- します(例えば, tcl/tk で書くところの "destroy ." をした場合等).
- 引数: 無し
- 戻り値: nil
+ ⥸塼᥽å mainloop()
+ Tk_MainLoop ¹Ԥޤ. Ƥ tk Υɥ̵ʤȽλ
+ ޤ(㤨, tcl/tk ǽ񤯤Ȥ "destroy ." 򤷤).
+ : ̵
+ : nil
-クラス TclTkIp
- インスタンスが tcl/tk のインタプリタに対応します. tcl/tk のライブ
- ラリの仕様通り, インスタンスを複数個生成しても正しく動作します(そ
- んなことをする必要はあまり無いはずですが). インタプリタは wish の
- tcl/tk コマンドを実行できます. さらに, 以下のコマンドを実行できま
- す.
- コマンド ruby
- 引数を ruby で実行します(ruby_eval_string を実行します). 引数
- は 1 つでなければなりません. 戻り値は ruby の実行結果です.
- ruby の実行結果は nil か String でなければなりません.
+饹 TclTkIp
+ 󥹥󥹤 tcl/tk Υ󥿥ץ꥿бޤ. tcl/tk Υ饤
+ λ̤, 󥹥󥹤ʣƤưޤ(
+ ʤȤ򤹤ɬפϤޤ̵ϤǤ). 󥿥ץ꥿ wish
+ tcl/tk ޥɤ¹ԤǤޤ. , ʲΥޥɤ¹ԤǤ
+ .
+ ޥ ruby
+ ruby Ǽ¹Ԥޤ(ruby_eval_string ¹Ԥޤ).
+ 1 ĤǤʤФʤޤ. ͤ ruby μ¹Է̤Ǥ.
+ ruby μ¹Է̤ nil String ǤʤФʤޤ.
- クラスメソッド new()
- TclTkIp クラスのインスタンスを生成します
- 引数: 無し
- 戻り値 (TclTkIp): 生成されたインスタンス
+ 饹᥽å new()
+ TclTkIp 饹Υ󥹥󥹤ޤ
+ : ̵
+ (TclTkIp): 줿󥹥
- メソッド _eval(script)
- インタプリタで script を評価します(Tcl_Eval を実行します). 前述
- のように, ruby コマンドにより script 内から ruby スクリプトを実
- 行できます.
- 引数: script (String) - インタプリタで評価するスクリプト文字列
- 戻り値 (String): 評価結果 ((Tcl_Interp *)->result)
+ ᥽å _eval(script)
+ 󥿥ץ꥿ script ɾޤ(Tcl_Eval ¹Ԥޤ).
+ Τ褦, ruby ޥɤˤ script ⤫ ruby ץȤ
+ ԤǤޤ.
+ : script (String) - 󥿥ץ꥿ɾ륹ץʸ
+ (String): ɾ ((Tcl_Interp *)->result)
- メソッド _return_value()
- 直前の Tcl_Eval の戻り値を返します. 0(TCL_OK) で正常終了です.
- 引数: 無し
- 戻り値 (Fixnum): 直前の Tcl_Eval() が返した値.
+ ᥽å _return_value()
+ ľ Tcl_Eval ֤ͤޤ. 0(TCL_OK) ェλǤ.
+ : ̵
+ (Fixnum): ľ Tcl_Eval() ֤.
==============================================================
-以下が本ドキュメント作成時点での tcltklib ライブラリの説明です.
+ʲܥɥȺǤ tcltklib 饤֥Ǥ
==============================================================
-モジュール TclTkLib
- : 個々の Tcl/Tk インタープリタに依存しない処理 ( == イベントルー
- : プに関する処理 ) を呼び出すメソッドを定義したモジュール.
-
- モジュール TclTkLib::EventFlag
- : do_one_event を呼び出す際の処理対象イベントを指定するための
- : フラグ ( WINDOW|DONT_WAIT というようにビット演算子で連結して
- : 指定 ) を定数として定義したモジュール.以下の定数が含まれる.
-
- 定数 NONE
- : 値は 0 で,値としてはいかなる種類のイベントも指定していない
- : ことになるが,実際の処理上は ALL と同じとして扱われる.
-
- 定数 WINDOW
- : window イベントを処理対象とする
-
- 定数 FILE
- : file イベントを処理対象とする
-
- 定数 TIMER
- : timer イベントを処理対象とする
-
- 定数 IDLE
- : アイドルループ処理 ( 再描画など,他の種類のイベントが発生
- : していないときに行われる処理 ) を処理対象とする
-
- 定数 ALL
- : すべての種類のイベントを処理対象とする
- : WINDOW|FILE|TIMER|IDLE と同じ
-
- 定数 DONT_WAIT
- : 処理対象イベントが存在しない場合に,イベント発生を待たず
- : に do_one_event を終了 ( false を返す ) する
-
- モジュール TclTkLib::VarAccessFlag
- : _get_variable などでのフラグを指定するためのもの.フラグに
- : は以下の定数を OR で連結して与える.
-
- 定数 NONE
- : 値は 0 で,何もフラグを指定していないのに等しい.
-
- 定数 GLOBAL_ONLY
- : 通常,変数の検索はまず手続き呼び出しを行ったレベルで検
- : 索し,次に現在の名前空間で検索,最後にグローバル空間で
- : 検索を行う.しかし,このフラグが指定された場合には,グ
- : ローバル空間でのみ検索する.
- : もし GLOBAL_ONLY と NAMESPACE_ONLY とが両方指定された場
- : 合には,GLOBAL_ONLY の指定は無視される.
-
- 定数 NAMESPACE_ONLY
- : このフラグが指定された場合には,現在の名前空間でのみ変
- : 数の検索を行う.GLOBAL_ONLY の説明も参照すること.
-
- 定数 LEAVE_ERR_MSG
- : 変数アクセスにおいてエラーが発生した場合,このフラグが
- : 指定されていれば,実行結果として Tcl インタープリタにエ
- : ラーメッセージが残される.このフラグが指定されていなけ
- : れば,エラーメッセージは一切残されない.
-
- 定数 APPEND_VALUE
- : このフラグが指定されていた場合,変数の値を置き換えので
- : はなく,現在の値に代入値が追加 (append; 文字列連結) さ
- : れる.変数が未定義あった場合,このフラグは無視される.
-
- 定数 LIST_ELEMENT
- : このフラグが指定されていた場合,代入値はまず Tcl のリス
- : ト要素として適切となるように変換される.代入値がリスト
- : (またはサブリスト) の最初の要素となるのでない限り,代入
- : 値の直前には空白文字が追加される.
-
- 定数 PARSE_VARNAME
- : _set_variable などの呼び出しにおいてこのフラグが指定さ
- : れていた場合,var_name 引数が連想配列名と要素名とを両方
- : 含む可能性がある (開き括弧を含み,閉じ括弧で終わる) こ
- : とを示す.その場合,括弧の間が要素名指定,最初の開き括
- : 弧までが連想配列名として扱われる._set_variable2 などで
- : このフラグを指定する場合,連想配列名と要素名は var_name
- : から抽出されるはずであるから,index_name 引数は nil と
- : せねばならない.
-
- モジュール TclTkLib::RELEASE_TYPE
- : Tcl/Tk のリリースタイプ番号の定義
-
- 定数 ALPHA
- : ALPHA リリース
-
- 定数 BETA
- : BETA リリース
-
- 定数 FINAL
- : FINAL リリース
-
- モジュールメソッド
+⥸塼 TclTkLib
+ : ġ Tcl/Tk 󥿡ץ꥿˰¸ʤ ( == ٥ȥ롼
+ : פ˴ؤ ) ƤӽФ᥽åɤ⥸塼롥
+
+ ⥸塼 TclTkLib::EventFlag
+ : do_one_event ƤӽФݤνоݥ٥Ȥꤹ뤿
+ : ե饰 ( WINDOW|DONT_WAIT Ȥ褦˥ӥåȱ黻ҤϢ뤷
+ : ) Ȥ⥸塼롥ʲޤޤ롥
+
+ NONE
+ : ͤ 0 ǡͤȤƤϤʤΥ٥ȤꤷƤʤ
+ : Ȥˤʤ뤬ºݤν ALL ƱȤư롥
+
+ WINDOW
+ : window ٥ȤоݤȤ
+
+ FILE
+ : file ٥ȤоݤȤ
+
+ TIMER
+ : timer ٥ȤоݤȤ
+
+ IDLE
+ : ɥ롼׽ ( ʤɡ¾μΥ٥Ȥȯ
+ : ƤʤȤ˹Ԥ ) оݤȤ
+
+ ALL
+ : ٤ƤμΥ٥ȤоݤȤ
+ : WINDOW|FILE|TIMER|IDLE Ʊ
+
+ DONT_WAIT
+ : оݥ٥Ȥ¸ߤʤˡ٥ȯԤ
+ : do_one_event λ ( false ֤ )
+
+ ⥸塼 TclTkLib::VarAccessFlag
+ : _get_variable ʤɤǤΥե饰ꤹ뤿ΤΡե饰
+ : ϰʲ OR Ϣ뤷Ϳ롥
+
+ NONE
+ : ͤ 0 ǡե饰ꤷƤʤΤ
+
+ GLOBAL_ONLY
+ : ̾ѿθϤޤ³ƤӽФԤä٥Ǹ
+ : ˸ߤ֤̾ǸǸ˥Х֤
+ : ԤΥե饰ꤵ줿ˤϡ
+ : Х֤ǤΤ߸롥
+ : ⤷ GLOBAL_ONLY NAMESPACE_ONLY Ȥξꤵ줿
+ : ˤϡGLOBAL_ONLY λ̵뤵롥
+
+ NAMESPACE_ONLY
+ : Υե饰ꤵ줿ˤϡߤ֤̾ǤΤ
+ : θԤGLOBAL_ONLY ⻲Ȥ뤳ȡ
+
+ LEAVE_ERR_MSG
+ : ѿˤƥ顼ȯ硤Υե饰
+ : ꤵƤС¹Է̤Ȥ Tcl 󥿡ץ꥿˥
+ : 顼åĤ롥Υե饰ꤵƤʤ
+ : С顼åϰڻĤʤ
+
+ APPEND_VALUE
+ : Υե饰ꤵƤ硤ѿ֤ͤΤ
+ : Ϥʤߤͤͤɲ (append; ʸϢ)
+ : 롥ѿ̤ä硤Υե饰̵뤵롥
+
+ LIST_ELEMENT
+ : Υե饰ꤵƤ硤ͤϤޤ Tcl Υꥹ
+ : ǤȤŬڤȤʤ褦Ѵ롥ͤꥹ
+ : (ޤϥ֥ꥹ) κǽǤȤʤΤǤʤ¤ꡤ
+ : ͤľˤ϶ʸɲä롥
+
+ PARSE_VARNAME
+ : _set_variable ʤɤθƤӽФˤƤΥե饰ꤵ
+ : Ƥ硤var_name Ϣ̾̾Ȥξ
+ : ޤǽ (̤ޤߡĤ̤ǽ)
+ : Ȥ򼨤ξ硤̤δ֤̾ꡤǽγ
+ : ̤ޤǤϢ̾Ȥư롥_set_variable2 ʤɤ
+ : Υե饰ꤹ硤Ϣ̾̾ var_name
+ : ФϤǤ뤫顤index_name nil
+ : ͤФʤʤ
+
+ ⥸塼 TclTkLib::RELEASE_TYPE
+ : Tcl/Tk Υ꡼ֹ
+
+ ALPHA
+ : ALPHA ꡼
+
+ BETA
+ : BETA ꡼
+
+ FINAL
+ : FINAL ꡼
+
+ ⥸塼᥽å
get_version()
- : Tcl/Tk の major, minor, release-type 番号, patchlevel を
- : 配列にして返す.
+ : Tcl/Tk major, minor, release-type ֹ, patchlevel
+ : ˤ֤
mainloop(check_root = true)
- : イベントループを起動する.check_root が true であれば,
- : root widget が存在する限り,このメソッドは終了しない.
- : check_root が false の場合は,root widget が消滅しても
- : このメソッドは終了しない ( root widget が消滅しても,
- : WINDOW 以外のイベントは発生しうるため ).終了には,外部
- : からの働き掛け ( スレッドを活用するなど ) が必要.
+ : ٥ȥ롼פư롥check_root true ǤС
+ : root widget ¸ߤ¤ꡤΥ᥽åɤϽλʤ
+ : check_root false ξϡroot widget ǤƤ
+ : Υ᥽åɤϽλʤ ( root widget ǤƤ⡤
+ : WINDOW ʳΥ٥Ȥȯ뤿 )λˤϡ
+ : Ưݤ ( åɤѤʤ ) ɬס
mainloop_thread?
- : カレントスレッドがイベントループを実行しているスレッド
- : かどうかを返す.
- : イベントループを実行しているスレッドであれば true を,
- : どのスレッドでもイベントループが実行されていない場合は
- : nil を,他のスレッドでイベントループが実行されている場
- : 合は false を返す.
- : false の際に Tk インタープリタを直接呼ぶのは危険である.
+ : ȥåɤ٥ȥ롼פ¹ԤƤ륹å
+ : ɤ֤
+ : ٥ȥ롼פ¹ԤƤ륹åɤǤ true
+ : ɤΥåɤǤ⥤٥ȥ롼פ¹ԤƤʤ
+ : nil ¾Υåɤǥ٥ȥ롼פ¹ԤƤ
+ : false ֤
+ : false κݤ Tk 󥿡ץ꥿ľܸƤ֤ΤϴǤ롥
mainloop_watchdog(check_root = true)
- : 通常のイベントループでは,イベント処理の内容によっては
- : デッドロックを引き起こす可能性がある (例えばイベントに
- : 対するコールバック処理中で widget 操作をし,その終了を
- : 待つなど).このメソッドは,そうしたデッドロックを回避す
- : るための監視スレッド付きでイベントループを起動する
- : ( 監視スレッドを生成した後にイベントループを実行する ).
- : 引数の意味は mainloop と同じである.
+ : ̾Υ٥ȥ롼פǤϡ٥ȽƤˤäƤ
+ : ǥåɥåǽ (㤨Х٥Ȥ
+ : Ф륳Хå widget 򤷡νλ
+ : ԤĤʤ)Υ᥽åɤϡǥåɥå
+ : 뤿δƻ륹åդǥ٥ȥ롼פư
+ : ( ƻ륹åɤ˥٥ȥ롼פ¹Ԥ )
+ : ΰ̣ mainloop ƱǤ롥
do_one_event(flag = TclTkLib::EventFlag::ALL |
TclTkLib::EventFlag::DONT_WAIT)
- : 処理待ちのイベント 1 個を実行する.
- : イベントを処理した場合は true を返す.
- : フラグで DONT_WAIT を指定していない場合,フラグで処理対
- : 象となっている種類のイベントが発生するまで待ち続ける.
- : DONT_WAIT を指定していた場合,処理対象イベントがなくても
- : すぐに終了し false を返す.
- : $SAFE >= 4 か,$SAFE >= 1 かつ flag が汚染されているならば
- : flag には DONT_WAIT が強制的に付けられる.
+ : ԤΥ٥ 1 Ĥ¹Ԥ롥
+ : ٥Ȥ true ֤
+ : ե饰 DONT_WAIT ꤷƤʤ硤ե饰ǽ
+ : ݤȤʤäƤΥ٥ȤȯޤԤ³롥
+ : DONT_WAIT ꤷƤ硤оݥ٥ȤʤƤ
+ : ˽λ false ֤
+ : $SAFE >= 4 $SAFE >= 1 flag Ƥʤ
+ : flag ˤ DONT_WAIT Ūդ롥
set_eventloop_tick(timer_tick)
- : イベントループと同時に別スレッドが稼働している場合に,時
- : 間に基づいた強制的なスレッドスイッチングをどの程度の頻度
- : ( 時間間隔 ) で発生させるかをミリ秒単位の整数値で指定する.
- : 0 を指定すると,この強制的なスイッチングは行われない.
- : 標準では 0 に設定されており,イベント処理数に基づくスイッ
- : チングだけが行われる ( see set_eventloop_weight ).
- : ただし,稼働しているスレッドがイベントループだけの場合,
- : timer_tick を 0 に設定することはできない.もし設定されて
- : いたら,100 ms ( see NO_THREAD_INTERRUPT_TIME ) に自動設
- : 定される.
- : 詳細な説明は略すが,これは CPU パワーを節約しつつ安全で
- : 安定した動作を実現するために実装した仕様である.
- : $SAFE >= 4 では実行が禁止される.
+ : ٥ȥ롼פƱ̥åɤƯƤˡ
+ : ֤˴ŤŪʥåɥå󥰤ɤ٤
+ : ( ֳִ ) ȯ뤫ߥñ̤ͤǻꤹ롥
+ : 0 ꤹȡζŪʥå󥰤ϹԤʤ
+ : ɸǤ 0 ꤵƤꡤ٥Ƚ˴Ť
+ : 󥰤Ԥ ( see set_eventloop_weight )
+ : ƯƤ륹åɤ٥ȥ롼פξ硤
+ : timer_tick 0 ꤹ뤳ȤϤǤʤ⤷ꤵ
+ : 顤100 ms ( see NO_THREAD_INTERRUPT_TIME ) ˼ư
+ : ꤵ롥
+ : ܺ٤ά CPU ѥ󤷤Ĥİ
+ : ꤷư¸뤿˼ͤǤ롥
+ : $SAFE >= 4 Ǥϼ¹Ԥػߤ롥
get_eventloop_tick
- : timer_tick の現在値を返す.
+ : timer_tick θ֤ͤ
set_no_event_wait(no_event_wait)
- : 複数のスレッドが稼働している場合で,処理待ちイベントが全
- : く存在しなかった際に sleep 状態に入る時間長を指定する.
- : 稼働スレッドがイベントループだけの場合には意味をなさない.
- : デフォルトの値は 20 (ms)
- : $SAFE >= 4 では実行が禁止される.
+ : ʣΥåɤƯƤǡԤ٥Ȥ
+ : ¸ߤʤäݤ sleep ֤Ĺꤹ롥
+ : Ưåɤ٥ȥ롼פξˤϰ̣ʤʤ
+ : ǥեȤͤ 20 (ms)
+ : $SAFE >= 4 Ǥϼ¹Ԥػߤ롥
get_no_event_wait
- : no_event_wait の現在値を返す.
+ : no_event_wait θ֤ͤ
set_eventloop_weight(loop_max, no_event_tick)
- : 複数のスレッドが稼働している際に Ruby/Tk のイベントルー
- : プに割り当てる比重を定めるためのパラメータを設定する.
- : 稼働スレッドがイベントループだけの場合には意味をなさない.
- : 一度のスレッド切り替えの間に処理するイベントの最大数と,
- : 処理待ちのイベントが存在しない際の加算数とを設定する.
- : 処理待ちイベントが存在しない場合は no_event_wait ( see
- : set_no_event_wait ) だけの間 sleep 状態に入る.
- : デフォルトではそれぞれ 800 回と 10 回,つまり,800 個のイ
- : ベント (アイドルイベントを含む) を処理するとか,イベント
- : が全く発生しないままに 80 回の処理待ちイベント検査が完了
- : するとかでカウントが 800 以上になるとスレッドスイッチング
- : が発生することになる.
- : $SAFE >= 4 では実行が禁止される.
+ : ʣΥåɤƯƤݤ Ruby/Tk Υ٥ȥ롼
+ : פ˳ƤŤ뤿Υѥ᡼ꤹ롥
+ : Ưåɤ٥ȥ롼פξˤϰ̣ʤʤ
+ : ٤Υåڤؤδ֤˽륤٥Ȥκȡ
+ : ԤΥ٥Ȥ¸ߤʤݤβûȤꤹ롥
+ : Ԥ٥Ȥ¸ߤʤ no_event_wait ( see
+ : set_no_event_wait ) δ sleep ֤롥
+ : ǥեȤǤϤ줾 800 10 󡤤Ĥޤꡤ800 ĤΥ
+ : ٥ (ɥ륤٥Ȥޤ) Ȥ٥
+ : ȯʤޤޤ 80 νԤ٥ȸλ
+ : ȤǥȤ 800 ʾˤʤȥåɥå
+ : ȯ뤳Ȥˤʤ롥
+ : $SAFE >= 4 Ǥϼ¹Ԥػߤ롥
get_eventloop_weight
- : 現在の loop_max と no_event_tick との値を返す.
+ : ߤ loop_max no_event_tick Ȥ֤ͤ
: ( see set_eventloop_wait )
mainloop_abort_on_exception=(bool)
- : Tk インタープリタ上で例外を発生した際に,イベントループを
- : エラー停止させるかどうかを指定する.true を指定した場合は
- : エラー停止するが,false の場合は例外を無視してイベントルー
- : プを継続する.さらに nil の場合は警告モードでない限りはエ
- : ラーメッセージの出力すら省略して,例外を無視する.
- : デフォルトでは true に設定されている.
- : 1個のインタープリタだけを使っている場合にはエラー時にその
- : まま停止しても通常は問題ないが,複数のインタープリタが同時
- : に動作している場合には,それらを管理するイベントループは1
- : 個だけであるため,いずれかのインタープリタのエラーが原因で,
- : 他のインタープリタの処理継続が不可能になることがある.その
- : ような場合でもエラーを無視してイベントループが稼働を続ける
- : ことで,他のインタープリタが正常に動作し続けることができる.
- : $SAFE >= 4 では実行が禁止される.
+ : Tk 󥿡ץ꥿㳰ȯݤˡ٥ȥ롼פ
+ : 顼ߤ뤫ɤꤹ롥true ꤷ
+ : 顼ߤ뤬false ξ㳰̵뤷ƥ٥ȥ롼
+ : פ³롥 nil ξϷٹ⡼ɤǤʤ¤ϥ
+ : 顼åνϤάơ㳰̵뤹롥
+ : ǥեȤǤ true ꤵƤ롥
+ : ĤΥ󥿡ץ꥿ȤäƤˤϥ顼ˤ
+ : ޤߤƤ̾ʤʣΥ󥿡ץ꥿Ʊ
+ : ưƤˤϡ륤٥ȥ롼פϣ
+ : ĤǤ뤿ᡤ줫Υ󥿡ץ꥿Υ顼ǡ
+ : ¾Υ󥿡ץ꥿ν³Բǽˤʤ뤳Ȥ롥
+ : 褦ʾǤ⥨顼̵뤷ƥ٥ȥ롼פƯ³
+ : Ȥǡ¾Υ󥿡ץ꥿ư³뤳ȤǤ롥
+ : $SAFE >= 4 Ǥϼ¹Ԥػߤ롥
mainloop_abort_on_exception
- : Tk インタープリタ上で例外を発生した際に,イベントループをエ
- : ラー停止させるかどうかの設定状態を true/false で得る.
+ : Tk 󥿡ץ꥿㳰ȯݤˡ٥ȥ롼פ
+ : 顼ߤ뤫ɤ֤ true/false 롥
num_of_mainwindows
- : 現在のメインウィンドウ (ルートウィジェット) の数を返す.
- : メインウィンドウは一つのインタープリタに付き最大一つである
- : ので,この値は現在 Tk の機能が有効であるインタープリタの総
- : 数に等しい.
+ : ߤΥᥤ󥦥ɥ (롼ȥå) ο֤
+ : ᥤ󥦥ɥϰĤΥ󥿡ץ꥿դĤǤ
+ : Τǡͤϸ Tk εǽͭǤ륤󥿡ץ꥿
+ :
_merge_tklist(str, str, ... )
- : Tcl/Tk のライブラリ関数を使って,引数の文字列がそれぞれ
- : 正しく一つのリスト要素となるように連結した文字列を返す.
+ : Tcl/Tk Υ饤֥ؿȤäơʸ󤬤줾
+ : ĤΥꥹǤȤʤ褦Ϣ뤷ʸ֤
_conv_listelement(str)
- : Tcl/Tk のライブラリ関数を使って,引数の文字列が Tcl の
- : 一つのリスト要素として適切な表現になるように変換した文
- : 字列を返す.
+ : Tcl/Tk Υ饤֥ؿȤäơʸ Tcl
+ : ĤΥꥹǤȤŬڤɽˤʤ褦Ѵʸ
+ : ֤
_toUTF8(str, encoding=nil)
_fromUTF8(str, encoding=nil)
- : Tcl/Tk が内蔵している UTF8 変換処理を呼び出す.
+ : Tcl/Tk ¢Ƥ UTF8 ѴƤӽФ
_subst_UTF_backslash(str)
_subst_Tcl_backslash(str)
- : Tcl のルールでバックスラッシュ記法 ( \uhhhh による
- : Unicode 文字表現を含む ) を解析する.
- : _subst_Tcl_backslash はすべてのバックスラッシュ記法を
- : 置き換えるのに対し,_subst_UTF_backslash は \uhhhh
- : による Unicode 文字表現だけを置き換える.
+ : Tcl Υ롼ǥХåå嵭ˡ ( \uhhhh ˤ
+ : Unicode ʸɽޤ ) Ϥ롥
+ : _subst_Tcl_backslash Ϥ٤ƤΥХåå嵭ˡ
+ : ֤ΤФ_subst_UTF_backslash \uhhhh
+ : ˤ Unicode ʸɽ֤롥
encoding_system
encoding_system=(encoding)
- : Tcl の system encoding の獲得および設定
+ : Tcl system encoding γ
encoding
encoding=(encoding)
- : encoding_system / encoding_system= の alias
- : ( Ruby/Tk の tk.rb では置き換えられる予定のもの.)
+ : encoding_system / encoding_system= alias
+ : ( Ruby/Tk tk.rb Ǥ֤ͽΤΡ)
-クラス TclTkIp
- クラスメソッド
+饹 TclTkIp
+ 饹᥽å
new(ip_name=nil, options='')
- : TclTkIp クラスのインスタンスを生成する.
- : ip_name に文字列を与えた場合は,それが winfo interps などで
- : 表示される名前になる.
- : options には,-geometry や -use など,wish のコマンドライン
- : 引数として与えるオプションと同様の情報を文字列として与える.
- : 与えられた情報は,root widget 生成の際に用いられる.
+ : TclTkIp 饹Υ󥹥󥹤롥
+ : ip_name ʸͿϡ줬 winfo interps ʤɤ
+ : ɽ̾ˤʤ롥
+ : options ˤϡ-geometry -use ʤɡwish Υޥɥ饤
+ : ȤͿ륪ץƱͤξʸȤͿ롥
+ : Ϳ줿ϡroot widget κݤѤ롥
: ( e.g. TclTkIp.new('FOO', '-geometry 500x200 -use 0x2200009') )
- : もし options に敢えて nil または false を与えた場合,Tk ライ
- : ブラリが導入されていない (つまりは Tcl のみの) インタープリ
- : タを生成する.この場合は GUI 環境は必要ないため,ウインドウ
- : システムが存在しない,または使用できない環境でも Tcl インター
- : プリタを生成し,Tcl やその拡張ライブラリを活用することができる.
+ : ⤷ options ˴ nil ޤ false Ϳ硤Tk 饤
+ : ֥꤬ƳƤʤ (Ĥޤ Tcl Τߤ) 󥿡ץ
+ : 롥ξ GUI Ķɬפʤᡤɥ
+ : ƥब¸ߤʤޤϻѤǤʤĶǤ Tcl 󥿡
+ : ץ꥿Tcl 䤽γĥ饤֥Ѥ뤳ȤǤ롥
- インスタンスメソッド
+ 󥹥󥹥᥽å
create_slave(name, safe=false)
- : レシーバを親とする name という名前のスレーブインタープリタを
- : 生成する.
- : safe には生成するインタープリタを safe インタープリタとする
- : かを指定する.デフォルトは false ということになっているが,
- : たとえ明確に false を指定していたとしても,親となるインター
- : プリタが safe インタープリタであれば,その設定を引き継いで
- : safe インタープリタとして生成される.
- : $SAFE >= 4 では,safe インタープリタ以外の生成が禁止される.
+ : 쥷ФƤȤ name Ȥ̾Υ졼֥󥿡ץ꥿
+ : 롥
+ : safe ˤ륤󥿡ץ꥿ safe 󥿡ץ꥿Ȥ
+ : ꤹ롥ǥեȤ false ȤȤˤʤäƤ뤬
+ : ȤΤ false ꤷƤȤƤ⡤ƤȤʤ륤󥿡
+ : ץ꥿ safe 󥿡ץ꥿ǤСѤ
+ : safe 󥿡ץ꥿Ȥ롥
+ : $SAFE >= 4 Ǥϡsafe 󥿡ץ꥿ʳػߤ롥
make_safe
- : Tcl/Tk インタープリタを safe インタープリタに変更する.
- : 戻り値はレシーバであるインタープリタ自身である.
- : 失敗した場合は RuntimeError の例外を発生する.
+ : Tcl/Tk 󥿡ץ꥿ safe 󥿡ץ꥿ѹ롥
+ : ͤϥ쥷ФǤ륤󥿡ץ꥿ȤǤ롥
+ : Ԥ RuntimeError 㳰ȯ롥
safe?
- : Tcl/Tk インタープリタが safe インタープリタであるかを調べる.
- : safe インタープリタであれば true を返す.
+ : Tcl/Tk 󥿡ץ꥿ safe 󥿡ץ꥿Ǥ뤫Ĵ٤롥
+ : safe 󥿡ץ꥿Ǥ true ֤
allow_ruby_exit?
- : 対象となるインタープリタ上の評価で,ruby の exit 関数または
- : Tcl/Tk 上の exit コマンドによって ruby 自体を終了させること
- : を許すかどうかを返す.
- : 許さない場合は対象のインタープリタだけが終了する.
- : マスターインタープリタのデフォルト値は true,スレーブインター
- : プリタのデフォルト値は false である.
+ : оݤȤʤ륤󥿡ץ꥿ɾǡruby exit ؿޤ
+ : Tcl/Tk exit ޥɤˤä ruby Τλ뤳
+ : ɤ֤
+ : ʤоݤΥ󥿡ץ꥿λ롥
+ : ޥ󥿡ץ꥿Υǥեͤ true졼֥󥿡
+ : ץ꥿Υǥեͤ false Ǥ롥
allow_ruby_exit=(mode)
- : 対象となるインタープリタの allow_ruby_exit? の状態を変更する.
- : $SAFE >= 4 またはインタープリタが safe インタープリタの場合は
- : 変更が許されない (例外を発生).
+ : оݤȤʤ륤󥿡ץ꥿ allow_ruby_exit? ξ֤ѹ롥
+ : $SAFE >= 4 ޤϥ󥿡ץ꥿ safe 󥿡ץ꥿ξ
+ : ѹʤ (㳰ȯ)
delete
- : Tcl/Tk インタープリタを delete する.
- : delete されたインタープリタは,以後一切の操作ができなくなり,
- : コマンドを送っても例外を発生するようになる.
+ : Tcl/Tk 󥿡ץ꥿ delete 롥
+ : delete 줿󥿡ץ꥿ϡʸڤǤʤʤꡤ
+ : ޥɤäƤ㳰ȯ褦ˤʤ롥
deleted?
- : Tcl/Tk インタープリタがすでに delete されているかを調べる.
- : delete 済みでコマンドを受け付けない状態になっているならば
- : true を返す.
+ : Tcl/Tk 󥿡ץ꥿Ǥ delete Ƥ뤫Ĵ٤롥
+ : delete Ѥߤǥޥɤդʤ֤ˤʤäƤʤ
+ : true ֤
has_mainwindow?
- : Tcl/Tk インタープリタにメインウィンドウ (root widget) が
- : 存在すれば true を,存在しなければ false を返す.
- : インタープリタが既に delete 済みであれば nil を返す.
+ : Tcl/Tk 󥿡ץ꥿˥ᥤ󥦥ɥ (root widget)
+ : ¸ߤ true ¸ߤʤ false ֤
+ : 󥿡ץ꥿ delete ѤߤǤ nil ֤
restart
- : Tcl/Tk インタープリタの Tk 部分の初期化,再起動を行う.
- : 一旦 root widget を破壊した後に再度 Tk の機能が必要と
- : なった場合に用いる.
- : $SAFE >= 4 では実行が禁止される.
+ : Tcl/Tk 󥿡ץ꥿ Tk ʬνƵưԤ
+ : ö root widget ˲˺ Tk εǽɬפ
+ : ʤäѤ롥
+ : $SAFE >= 4 Ǥϼ¹Ԥػߤ롥
_eval(str)
_invoke(*args)
- : Tcl/Tk インタープリタ上で評価を行う.
- : _eval は評価スクリプトが一つの文字列であることに対し,
- : _invoke は評価スクリプトの token ごとに一つの引数とな
- : るように与える.
- : _invoke の方は Tcl/Tk インタープリタの字句解析器を用い
- : ないため,評価の負荷がより少なくてすむ.ただし,その代
- : わりに auto_load のような機構は働かず,load 等によって
- : Tcl/Tk インタープリタ上に既に登録済みのコマンドしか呼
- : び出すことができない.
- : _eval では auto_load 機構が働くため,一度 _eval を実行
- : して登録に成功しさえすれば,以降は _invoke でも利用で
- : きるようになる.
+ : Tcl/Tk 󥿡ץ꥿ɾԤ
+ : _eval ɾץȤĤʸǤ뤳ȤФ
+ : _invoke ɾץȤ token Ȥ˰ĤΰȤ
+ : 褦Ϳ롥
+ : _invoke Tcl/Tk 󥿡ץ꥿λϴѤ
+ : ʤᡤɾ٤꾯ʤƤࡥ
+ : auto_load Τ褦ʵƯload ˤä
+ : Tcl/Tk 󥿡ץ꥿˴ϿѤߤΥޥɤ
+ : ӽФȤǤʤ
+ : _eval Ǥ auto_load Ưᡤ _eval ¹
+ : ϿСʹߤ _invoke ǤѤ
+ : 褦ˤʤ롥
_cancel_eval(str)
_cancel_eval_unwind(str)
: (Tcl/Tk8.6 or later)
- : Tcl_CancelEval() 関数を呼び出し,eval の実行を打ち切る.
+ : Tcl_CancelEval() ؿƤӽФeval μ¹ԤǤڤ롥
_toUTF8(str, encoding=nil)
_fromUTF8(str, encoding=nil)
- : Tcl/Tk が内蔵している UTF8 変換処理を呼び出す.
+ : Tcl/Tk ¢Ƥ UTF8 ѴƤӽФ
_thread_vwait(var_name)
_thread_tkwait(mode, target)
- : スレッド対応の vwait あるいは tkwait 相当のメソッド.
- : 通常の vwait あるいは tkwait コマンドと異なるのは,イベン
- : トループとは異なるスレッドから呼び出した場合に vwait 等の
- : スタックとは独立に条件の成立待ちがなされることである.
- : 通常の vwait / tkwait では,vwait / tkwait (1) の待ちの途
- : 中でさらに vwait / tkwait (2) が呼ばれた場合,待ちの対象
- : となっている条件の成立順序がどうあれ,(2)->(1) の順で待ち
- : を終了して戻ってくる.
- : _thread_vwait / _thread_tkwait は,イベントループのスレッ
- : ドで呼ばれた場合は通常の vwait / tkwait と同様に動作する
- : が,イベントループ以外のスレッドで呼ばれた場合にはそのス
- : レッドを停止させて待ちに入り,条件が成立した時にスレッド
- : の実行を再開する.「vwait 等の待ちスタックとは独立」とい
- : う意味は,この再開のタイミングが他のスレッドでの待ち状況
- : とは無関係ということである.つまり,イベントループ等の他
- : のスレッドで vwait 等で待ちの状態にあったとしてもその完了
- : を待つことなく,自らの待ち条件が成立次第,処理を継続する
- : ことになる.
+ : åб vwait 뤤 tkwait Υ᥽åɡ
+ : ̾ vwait 뤤 tkwait ޥɤȰۤʤΤϡ٥
+ : ȥ롼פȤϰۤʤ륹åɤƤӽФ vwait
+ : åȤΩ˾ΩԤʤ뤳ȤǤ롥
+ : ̾ vwait / tkwait Ǥϡvwait / tkwait (1) Ԥ
+ : Ǥ vwait / tkwait (2) ƤФ줿硤Ԥо
+ : ȤʤäƤΩɤ졤(2)->(1) νԤ
+ : λäƤ롥
+ : _thread_vwait / _thread_tkwait ϡ٥ȥ롼פΥ
+ : ɤǸƤФ줿̾ vwait / tkwait Ʊͤư
+ : ٥ȥ롼װʳΥåɤǸƤФ줿ˤϤΥ
+ : åɤߤԤꡤ郎Ω˥å
+ : μ¹ԤƳ롥vwait ԤåȤΩפȤ
+ : ̣ϡκƳΥߥ󥰤¾ΥåɤǤԤ
+ : Ȥ̵طȤȤǤ롥Ĥޤꡤ٥ȥ롼¾
+ : Υåɤ vwait Ԥξ֤ˤäȤƤ⤽δλ
+ : ԤĤȤʤԤ郎Ω衤³
+ : Ȥˤʤ롥
_return_value
- : 直前の Tcl/Tk 上での評価の実行結果としての戻り値を返す.
+ : ľ Tcl/Tk Ǥɾμ¹Է̤ȤƤ֤ͤ
_get_variable(var_name, flag)
_get_variable2(var_name, index_name, flag)
- : Tcl/Tk 上の var という変数名の変数の値を返す.
- : もし index_name が指定 (PARSE_VARNAME フラグの説明も参照)
- : された場合は連想配列 var_name の index_name の要素を返す.
- : flag には変数を検索する際の条件を指定する.flag に与える
- : 値はモジュール TclTkLib::VarAccessFlag を参照すること.
+ : Tcl/Tk var Ȥѿ̾ѿ֤ͤ
+ : ⤷ index_name (PARSE_VARNAME ե饰⻲)
+ : 줿Ϣ var_name index_name Ǥ֤
+ : flag ˤѿ򸡺ݤξꤹ롥flag Ϳ
+ : ͤϥ⥸塼 TclTkLib::VarAccessFlag 򻲾Ȥ뤳ȡ
_set_variable(var_name, value, flag)
_set_variable2(var_name, index_name, value, flag)
- : Tcl/Tk 上の var という変数名の変数に値を設定する.
- : もし index_name が指定 (PARSE_VARNAME フラグの説明も参照)
- : された場合は連想配列 var_name の index_name の要素を設定
- : する.
- : flag には変数を検索する際の条件を指定する.flag に与える
- : 値はモジュール TclTkLib::VarAccessFlag を参照すること.
+ : Tcl/Tk var Ȥѿ̾ѿͤꤹ롥
+ : ⤷ index_name (PARSE_VARNAME ե饰⻲)
+ : 줿Ϣ var_name index_name Ǥ
+ : 롥
+ : flag ˤѿ򸡺ݤξꤹ롥flag Ϳ
+ : ͤϥ⥸塼 TclTkLib::VarAccessFlag 򻲾Ȥ뤳ȡ
_unset_variable(var_name)
_unset_variable2(var_name, index_name)
- : Tcl/Tk 上の var_name という変数名の変数を消去する.
- : もし index_name が指定 (PARSE_VARNAME フラグの説明も参照)
- : された場合は連想配列 var_name から index_name の要素だけ
- : を消去する.
+ : Tcl/Tk var_name Ȥѿ̾ѿõ롥
+ : ⤷ index_name (PARSE_VARNAME ե饰⻲)
+ : 줿Ϣ var_name index_name Ǥ
+ : õ롥
_get_global_var(var_name)
_get_global_var2(var_name, index_name)
@@ -527,31 +527,31 @@ require "tcltklib" すると, 以下のモジュール, クラスが利用可能
_set_global_var2(var_name, index_name, value)
_unset_global_var(var_name)
_unset_global_var2(var_name, index_name)
- : それぞれ,対応する変数アクセスメソッドの flag に対して
- : (GLOBAL_ONLY | LEAVE_ERR_MSG) を与えたもの.
+ : 줾졤бѿ᥽åɤ flag Ф
+ : (GLOBAL_ONLY | LEAVE_ERR_MSG) ͿΡ
_split_tklist(str)
- : Tcl/Tk のライブラリ関数を使って,文字列 str をリストに
- : 分割する (文字列の配列として返す).
+ : Tcl/Tk Υ饤֥ؿȤäơʸ str ꥹȤ
+ : ʬ䤹 (ʸȤ֤)
_merge_tklist(str, str, ... )
- : Tcl/Tk のライブラリ関数を使って,引数の文字列がそれぞれ
- : 正しく一つのリスト要素となるように連結した文字列を返す.
+ : Tcl/Tk Υ饤֥ؿȤäơʸ󤬤줾
+ : ĤΥꥹǤȤʤ褦Ϣ뤷ʸ֤
_conv_listelement(str)
- : Tcl/Tk のライブラリ関数を使って,引数の文字列が Tcl の
- : 一つのリスト要素として適切な表現になるように変換した文
- : 字列を返す.
+ : Tcl/Tk Υ饤֥ؿȤäơʸ Tcl
+ : ĤΥꥹǤȤŬڤɽˤʤ褦Ѵʸ
+ : ֤
mainloop
mainloop_watchdog
- : スレーブ IP の場合にはイベントループを起動せずに nil を返す.
- : それ以外の点では引数を含めて TclTkLib の同名メソッドに同じ.
+ : 졼 IP ξˤϥ٥ȥ롼פư nil ֤
+ : ʳǤϰޤ TclTkLib Ʊ̾᥽åɤƱ
do_one_event
- : スレーブ IP の場合には引数のイベントフラグに DONT_WAIT が
- : 強制的に追加される (イベント待ちでスリープすることは禁止).
- : それ以外の点では引数を含めて TclTkLib の同名メソッドに同じ.
+ : 졼 IP ξˤϰΥ٥ȥե饰 DONT_WAIT
+ : Ūɲä (٥Ԥǥ꡼פ뤳Ȥ϶ػ)
+ : ʳǤϰޤ TclTkLib Ʊ̾᥽åɤƱ
set_eventloop_tick
get_eventloop_tick
@@ -561,24 +561,24 @@ require "tcltklib" すると, 以下のモジュール, クラスが利用可能
get_eventloop_weight
mainloop_abort_on_exception
mainloop_abort_on_exception=
- : スレーブ IP の場合には値の設定が許されない (無視される).
- : それ以外の点では引数を含めて TclTkLib の同名メソッドに同じ.
+ : 졼 IP ξˤ꤬ͤʤ (̵뤵)
+ : ʳǤϰޤ TclTkLib Ʊ̾᥽åɤƱ
encoding_table
- : Ruby m17n 用に Ruby と Tk との間の encoding 対応表を返す.
-
-クラス TkCallbackBreak < StandardError
-クラス TkCallbackContinue < StandardError
- : これらはイベントコールバックにおいて,コールバック処理を適切に中
- : 断したり,次のバインドタグのバインディング処理に進めたりすること
- : を可能にするための例外クラスである.
- : コールバックで break や continue を実現するためには,コールバック
- : である Ruby 手続きが Tcl/Tk インタープリタ側に適切なリターンコー
- : ドを返す必要がある.Ruby の手続きが普通に値を返すのでは,それが普
- : 通の戻り値であるのか否かを区別ができないため,例外発生を利用した
- : 実装を行っている.
- : ただし現在では,コールバック手続きを Ruby の break, next で終了す
- : ることで同等の結果を得ることができるようになっている.それゆえ,
- : これらは必要ないものではあるが,互換性のために残してある.
+ : Ruby m17n Ѥ Ruby Tk Ȥδ֤ encoding бɽ֤
+
+饹 TkCallbackBreak < StandardError
+饹 TkCallbackContinue < StandardError
+ : ϥ٥ȥХåˤơХåŬڤ
+ : ǤꡤΥХɥΥХǥ󥰽˿ʤ᤿ꤹ뤳
+ : ǽˤ뤿㳰饹Ǥ롥
+ : Хå break continue ¸뤿ˤϡХå
+ : Ǥ Ruby ³ Tcl/Tk 󥿡ץ꥿¦Ŭڤʥ꥿󥳡
+ : ɤ֤ɬפ롥Ruby μ³̤֤ͤΤǤϡ줬
+ : ̤ͤǤΤݤ̤Ǥʤᡤ㳰ȯѤ
+ : ԤäƤ롥
+ : ߤǤϡХå³ Ruby break, next ǽλ
+ : 뤳ȤƱη̤뤳ȤǤ褦ˤʤäƤ롥椨
+ : ɬפʤΤǤϤ뤬ߴΤ˻ĤƤ롥
(eof)
diff --git a/ext/tk/README.1st b/ext/tk/README.1st
index 96564cc67b..0179f4d526 100644
--- a/ext/tk/README.1st
+++ b/ext/tk/README.1st
@@ -6,14 +6,14 @@ work without Tcl/Tk libraries (e.g. libtcl8.4.so) on your environment.
You must also check that your Tcl/Tk is installed properly.
--------------------------------------------
- ( the following is written in UTF-8 )
+ ( the following is written in EUC-JP )
-Ruby/Tk (tk.rb など) を使いたい場合には,tcltklib.so が正しく動いていな
-ければなりません.コンパイル時に何か問題が生じた場合は,README.tcltklib
-や README.ActiveTcl を見てください.
-たとえ Ruby のライブラリディレクトリに tcltklib.so が存在していたとして
-も,実行環境に Tcl/Tk ライブラリ (libtcl8.4.so など) がなければ機能しま
-せん.Tcl/Tk が正しくインストールされているかもチェックしてください.
+Ruby/Tk (tk.rb ʤ) Ȥˤϡtcltklib.so ưƤ
+Фʤޤ󡥥ѥ˲꤬ϡREADME.tcltklib
+ README.ActiveTcl 򸫤Ƥ
+Ȥ Ruby Υ饤֥ǥ쥯ȥ tcltklib.so ¸ߤƤȤ
+⡤¹ԴĶ Tcl/Tk 饤֥ (libtcl8.4.so ʤ) ʤеǽ
+Tcl/Tk 󥹥ȡ뤵Ƥ뤫åƤ
==========================================================
Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
diff --git a/ext/tk/extconf.rb b/ext/tk/extconf.rb
index b659d93534..2f68d01e7f 100644
--- a/ext/tk/extconf.rb
+++ b/ext/tk/extconf.rb
@@ -8,21 +8,12 @@ TkLib_Config = {}
TkLib_Config['search_versions'] =
# %w[8.9 8.8 8.7 8.6 8.5 8.4 8.3 8.2 8.1 8.0 7.6 4.2]
# %w[8.7 8.6 8.5 8.4 8.3 8.2 8.1 8.0]
- # %w[8.7 8.6 8.5 8.4 8.0] # to shorten search steps
- %w[8.5 8.4] # At present, Tcl/Tk8.6 is not supported.
-
-TkLib_Config['unsupported_versions'] =
- %w[8.8 8.7 8.6] # At present, Tcl/Tk8.6 is not supported.
+ %w[8.7 8.6 8.5 8.4 8.0] # to shorten search steps
TkLib_Config['major_nums'] = '87'
##############################################################
-
-TkLib_Config['enable-shared'] = enable_config("shared")
-
-
-##############################################################
# use old extconf.rb ?
##############################################################
if with_config('tk-old-extconf')
@@ -123,7 +114,7 @@ def is_macosx?
end
def maybe_64bit?
- /64|universal|s390x/ =~ RUBY_PLATFORM
+ /64|universal/ =~ RUBY_PLATFORM
end
def check_tcltk_version(version)
@@ -322,9 +313,7 @@ def find_macosx_framework
paths.reverse! unless TkLib_Config["ActiveTcl"] # system has higher priority
paths.map{|dir| dir.strip.chomp('/')}.each{|dir|
- next unless File.exist?(File.join(dir, "Tcl.framework", "Headers"))
next unless File.directory?(tcldir = File.join(dir, "Tcl.framework"))
- next unless File.exist?(File.join(dir, "Tk.framework", "Headers"))
next unless File.directory?(tkdir = File.join(dir, "Tk.framework"))
TkLib_Config["tcltk-framework"] = dir
return [tcldir, tkdir]
@@ -551,13 +540,13 @@ end
def get_ext_list()
exts = [CONFIG['DLEXT']]
- exts.concat %w(dll) if is_win32?
- exts.concat %w(bundle dylib) if is_macosx?
+ exts.concat %w(dll lib) if is_win32?
+ exts.concat %w(bundle dylib) if is_macosx? || /nextstep|openstep|rhapsody/ =~ RUBY_PLATFORM
- if TkLib_Config["tcltk-stubs"] || TkLib_Config['enable-shared'] == false
- exts.unshift "lib" if is_win32?
- exts.unshift "a"
- exts.unshift CONFIG['LIBEXT']
+ if enable_config("shared") == false
+ [CONFIG['LIBEXT'], "a"].concat exts
+ else
+ exts.concat [CONFIG['LIBEXT'], "a"]
end
if is_win32?
@@ -745,7 +734,6 @@ def search_tclConfig(*paths) # libdir list or [tcl-libdir|file, tk-libdir|file]
end
conf = nil
- progress_flag = false
config_dir.uniq!
config_dir.map{|dir|
@@ -756,7 +744,7 @@ def search_tclConfig(*paths) # libdir list or [tcl-libdir|file, tk-libdir|file]
dir.strip.chomp('/')
end
}.each{|dir|
- print("."); progress_flag = true # progress
+ print(".") # progress
# print("check #{dir} ==>");
if dir.kind_of? Array
tcldir, tkdir = dir
@@ -795,36 +783,10 @@ def search_tclConfig(*paths) # libdir list or [tcl-libdir|file, tk-libdir|file]
# parse tclConfig.sh/tkConfig.sh
tclconf = (tclpath)? parse_tclConfig(tclpath): nil
- if tclconf
- if tclver && ((tclver_major && tclver_major != tclconf['TCL_MAJOR_VERSION']) || (tclver_minor && tclver_minor != tclconf['TCL_MINOR_VERSION']))
- print("\n") if progress_flag
- puts "Ignore \"#{tclpath}\" (unmatch with configured version)."
- progress_flag = false
- next
- end
- if TkLib_Config['unsupported_versions'].find{|ver| ver == "#{tclconf['TCL_MAJOR_VERSION']}.#{tclconf['TCL_MINOR_VERSION']}"}
- print("\n") if progress_flag
- puts "Ignore \"#{tclpath}\" (unsupported version of Tcl/Tk)."
- progress_flag = false
- next
- end
- end
+ next if tclconf && tclver && ((tclver_major && tclver_major != tclconf['TCL_MAJOR_VERSION']) || (tclver_minor && tclver_minor != tclconf['TCL_MINOR_VERSION']))
tkconf = (tkpath)? parse_tclConfig(tkpath): nil
- if tkconf
- if tkver && ((tkver_major && tkver_major != tkconf['TK_MAJOR_VERSION']) || (tkver_minor && tkver_minor != tkconf['TK_MINOR_VERSION']))
- print("\n") if progress_flag
- puts "Ignore \"#{tkpath}\" (unmatch with configured version)."
- progress_flag = false
- next
- end
- if TkLib_Config['unsupported_versions'].find{|ver| ver == "#{tkconf['TK_MAJOR_VERSION']}.#{tkconf['TK_MINOR_VERSION']}"}
- print("\n") if progress_flag
- puts "Ignore \"#{tkpath}\" (unsupported version of Tcl/Tk)."
- progress_flag = false
- next
- end
- end
+ next if tkconf && tkver && ((tkver_major && tkver_major != tkconf['TK_MAJOR_VERSION']) || (tkver_minor && tkver_minor != tkconf['TK_MINOR_VERSION']))
# nativethread check
if !TkLib_Config["ruby_with_thread"]
@@ -1327,10 +1289,6 @@ end
def find_tcltk_library(tcllib, tklib, stubs, tclversion, tkversion,
tcl_opt_paths, tk_opt_paths)
st,path,lib,libs,*inc = find_tcl(tcllib, stubs, tclversion, *tcl_opt_paths)
- if !st && TkLib_Config['enable-shared'] == nil
- TkLib_Config['enable-shared'] = false
- st,path,lib,libs,*inc = find_tcl(tcllib, stubs, tclversion, *tcl_opt_paths)
- end
unless st
puts("Warning:: cannot find Tcl library. tcltklib will not be compiled (tcltklib is disabled on your Ruby. That is, Ruby/Tk will not work). Please check configure options.")
return false
@@ -1343,10 +1301,6 @@ def find_tcltk_library(tcllib, tklib, stubs, tclversion, tkversion,
end
st,path,lib,libs,*inc = find_tk(tklib, stubs, tkversion, *tk_opt_paths)
- if !st && TkLib_Config['enable-shared'] == nil
- TkLib_Config['enable-shared'] = false
- st,path,lib,libs,*inc = find_tk(tklib, stubs, tkversion, *tk_opt_paths)
- end
unless st
puts("Warning:: cannot find Tk library. tcltklib will not be compiled (tcltklib is disabled on your Ruby. That is, Ruby/Tk will not work). Please check configure options.")
return false
@@ -1404,15 +1358,10 @@ def find_tcltk_header(tclver, tkver)
print(".") # progress
if major && minor
# version check on tcl.h
- version_check = proc {|code|
- code << ("#if TCL_MAJOR_VERSION != #{major} || TCL_MINOR_VERSION != #{minor}\n" \
- "#error VERSION does not match\n" \
- "#endif")
- }
+ have_tcl_h = try_cpp("#include <tcl.h>\n#if TCL_MAJOR_VERSION != #{major} || TCL_MINOR_VERSION != #{minor}\n#error VERSION does not match\n#endif")
else
- version_check = nil
+ have_tcl_h = have_header('tcl.h')
end
- have_tcl_h = have_header('tcl.h', &version_check)
unless have_tcl_h
if tclver && ! tclver.empty?
versions = [tclver]
@@ -1434,19 +1383,13 @@ def find_tcltk_header(tclver, tkver)
(File.directory?(dir))? File.expand_path(dir): nil
}.compact.uniq
- if major || minor
- version_check = proc {|code|
- code << "#if TCL_MAJOR_VERSION != #{major}\n#error MAJOR_VERSION does not match\n#endif\n" if major
- code << "#if TCL_MINOR_VERSION != #{minor}\n#error MINOR_VERSION does not match\n#endif\n" if minor
- code
- }
- else
- version_check = nil
- end
+ code = "#include <tcl.h>\n"
+ code << "#if TCL_MAJOR_VERSION != #{major}\n#error MAJOR_VERSION does not match\n#endif\n" if major
+ code << "#if TCL_MINOR_VERSION != #{minor}\n#error MINOR_VERSION does not match\n#endif\n" if minor
have_tcl_h = paths.find{|path|
print(".") # progress
inc_opt = " -I#{path.quote}"
- if try_header("tcl", inc_opt, &version_check)
+ if try_cpp(code, inc_opt)
($INCFLAGS ||= "") << inc_opt
true
else
@@ -1471,15 +1414,10 @@ def find_tcltk_header(tclver, tkver)
print(".") # progress
if major && minor
# version check on tk.h
- version_check = proc {|code|
- code << ("#if TK_MAJOR_VERSION != #{major} || TK_MINOR_VERSION != #{minor}\n" \
- "#error VERSION does not match\n" \
- "#endif")
- }
+ have_tk_h = try_cpp("#include <tk.h>\n#if TK_MAJOR_VERSION != #{major} || TK_MINOR_VERSION != #{minor}\n#error VERSION does not match\n#endif")
else
- version_check = nil
+ have_tk_h = have_header('tk.h')
end
- have_tk_h = have_header('tk.h')
unless have_tk_h
if tkver && ! tkver.empty?
versions = [tkver]
@@ -1501,19 +1439,13 @@ def find_tcltk_header(tclver, tkver)
(File.directory?(dir))? File.expand_path(dir): nil
}.compact.uniq
- if major || minor
- version_check = proc {|code|
- code << "#if TK_MAJOR_VERSION != #{major}\n#error MAJOR_VERSION does not match\n#endif\n" if major
- code << "#if TK_MINOR_VERSION != #{minor}\n#error MINOR_VERSION does not match\n#endif\n" if minor
- code
- }
- else
- version_check = nil
- end
+ code = "#include <tcl.h>\n#include <tk.h>\n"
+ code << "#if TK_MAJOR_VERSION != #{major}\n#error MAJOR_VERSION does not match\n#endif\n" if major
+ code << "#if TK_MINOR_VERSION != #{minor}\n#error MINOR_VERSION does not match\n#endif\n" if minor
have_tk_h = paths.find{|path|
print(".") # progress
inc_opt = " -I#{path.quote}"
- if try_header(%w'tcl.h tk.h', inc_opt, &version_check)
+ if try_cpp(code, inc_opt)
($INCFLAGS ||= "") << inc_opt
true
else
@@ -2015,55 +1947,53 @@ if TkLib_Config["tcltk-framework"]
puts("Use MacOS X Frameworks.")
($LDFLAGS ||= "") << " -L#{TkLib_Config["tcl-build-dir"].quote} -Wl,-R#{TkLib_Config["tcl-build-dir"].quote}" if TkLib_Config["tcl-build-dir"]
- libs = ''
if tcl_cfg_dir
TclConfig_Info['TCL_LIBS'] ||= ""
($INCFLAGS ||= "") << ' ' << TclConfig_Info['TCL_INCLUDE_SPEC']
- libs << ' ' << TclConfig_Info['TCL_LIBS']
+ $LDFLAGS << ' ' << TclConfig_Info['TCL_LIBS']
if stubs
if TkLib_Config["tcl-build-dir"] &&
TclConfig_Info['TCL_BUILD_STUB_LIB_SPEC'] &&
!TclConfig_Info['TCL_BUILD_STUB_LIB_SPEC'].strip.empty?
- libs << ' ' << TclConfig_Info['TCL_BUILD_STUB_LIB_SPEC']
+ $LDFLAGS << ' ' << TclConfig_Info['TCL_BUILD_STUB_LIB_SPEC']
else
- libs << ' ' << TclConfig_Info['TCL_STUB_LIB_SPEC']
+ $LDFLAGS << ' ' << TclConfig_Info['TCL_STUB_LIB_SPEC']
end
else
if TkLib_Config["tcl-build-dir"] &&
TclConfig_Info['TCL_BUILD_LIB_SPEC'] &&
!TclConfig_Info['TCL_BUILD_LIB_SPEC'].strip.empty?
- libs << ' ' << TclConfig_Info['TCL_BUILD_LIB_SPEC']
+ $LDFLAGS << ' ' << TclConfig_Info['TCL_BUILD_LIB_SPEC']
else
- libs << ' ' << TclConfig_Info['TCL_LIB_SPEC']
+ $LDFLAGS << ' ' << TclConfig_Info['TCL_LIB_SPEC']
end
end
end
- libs << " -L#{TkLib_Config["tk-build-dir"].quote} -Wl,-R#{TkLib_Config["tk-build-dir"].quote}" if TkLib_Config["tk-build-dir"]
+ $LDFLAGS << " -L#{TkLib_Config["tk-build-dir"].quote} -Wl,-R#{TkLib_Config["tk-build-dir"].quote}" if TkLib_Config["tk-build-dir"]
if tk_cfg_dir
TkConfig_Info['TK_LIBS'] ||= ""
($INCFLAGS ||= "") << ' ' << TkConfig_Info['TK_INCLUDE_SPEC']
- libs << ' ' << TkConfig_Info['TK_LIBS']
+ $LDFLAGS << ' ' << TkConfig_Info['TK_LIBS']
if stubs
if TkLib_Config["tk-build-dir"] &&
TclConfig_Info['TK_BUILD_STUB_LIB_SPEC'] &&
!TclConfig_Info['TK_BUILD_STUB_LIB_SPEC'].strip.empty?
- libs << ' ' << TkConfig_Info['TK_BUILD_STUB_LIB_SPEC']
+ $LDFLAGS << ' ' << TkConfig_Info['TK_BUILD_STUB_LIB_SPEC']
else
- libs << ' ' << TkConfig_Info['TK_STUB_LIB_SPEC']
+ $LDFLAGS << ' ' << TkConfig_Info['TK_STUB_LIB_SPEC']
end
else
if TkLib_Config["tk-build-dir"] &&
TclConfig_Info['TK_BUILD_LIB_SPEC'] &&
!TclConfig_Info['TK_BUILD_LIB_SPEC'].strip.empty?
- libs << ' ' << TkConfig_Info['TK_BUILD_LIB_SPEC']
+ $LDFLAGS << ' ' << TkConfig_Info['TK_BUILD_LIB_SPEC']
else
- libs << ' ' << TkConfig_Info['TK_LIB_SPEC']
+ $LDFLAGS << ' ' << TkConfig_Info['TK_LIB_SPEC']
end
end
end
- $LDFLAGS << ' ' << libs
setup_for_macosx_framework(tclver, tkver) if tcl_cfg_dir && tk_cfg_dir
end
@@ -2099,6 +2029,4 @@ if (TkLib_Config["tcltk-framework"] ||
puts "\nFind Tcl/Tk libraries. Make tcltklib.so which is required by Ruby/Tk."
else
puts "\nCan't find proper Tcl/Tk libraries. So, can't make tcltklib.so which is required by Ruby/Tk."
- puts "If you have Tcl/Tk libraries on your environment, you may be able to use them with configure options (see ext/tk/README.tcltklib)."
- puts "At present, Tcl/Tk8.6 is not supported. Although you can try to use Tcl/Tk8.6 with configure options, it will not work correctly. I recommend you to use Tcl/Tk8.5 or 8.4."
end
diff --git a/ext/tk/lib/multi-tk.rb b/ext/tk/lib/multi-tk.rb
index 68bd849670..b125c6e18e 100644
--- a/ext/tk/lib/multi-tk.rb
+++ b/ext/tk/lib/multi-tk.rb
@@ -2103,7 +2103,7 @@ end
# evaluate a procedure on the proper interpreter
class MultiTkIp
# instance & class method
- def _proc_on_safelevel(cmd=nil) # require a block for eval
+ def _proc_on_safelevel(cmd=nil, &blk) # require a block for eval
if cmd
if cmd.kind_of?(Method)
_proc_on_safelevel{|*args| cmd.call(*args)}
diff --git a/ext/tk/lib/tcltk.rb b/ext/tk/lib/tcltk.rb
index 48ec1df09a..2df3b2fd8c 100644
--- a/ext/tk/lib/tcltk.rb
+++ b/ext/tk/lib/tcltk.rb
@@ -280,7 +280,7 @@ class TclTkWidget < TclTkCommand
# interp: interpreter(TclTkInterpreter)
# parent: parent widget
- # command: widget generating tk command(label 等)
+ # command: widget generating tk command(label )
# *args: argument to the command
interp, parent, command, *args = args
diff --git a/ext/tk/lib/tk/canvas.rb b/ext/tk/lib/tk/canvas.rb
index af404213e7..7d3d71675c 100644
--- a/ext/tk/lib/tk/canvas.rb
+++ b/ext/tk/lib/tk/canvas.rb
@@ -85,16 +85,11 @@ class Tk::Canvas<TkWindow
# create a canvas item without creating a TkcItem object
def create(type, *args)
- if type.kind_of?(Class) && type < TkcItem
- # do nothing
- elsif TkcItem.type2class(type.to_s)
- type = TkcItem.type2class(type.to_s)
- else
- fail ArgumentError, "type must a subclass of TkcItem class, or a string in CItemTypeToClass"
- end
+ type = TkcItem.type2class(type.to_s) unless type.kind_of?(TkcItem)
type.create(self, *args)
end
+
def addtag(tag, mode, *args)
mode = mode.to_s
if args[0] && mode =~ /^(above|below|with(tag)?)$/
diff --git a/ext/tk/lib/tk/image.rb b/ext/tk/lib/tk/image.rb
index d2b0305dcd..00bb440d6a 100644
--- a/ext/tk/lib/tk/image.rb
+++ b/ext/tk/lib/tk/image.rb
@@ -130,7 +130,7 @@ end
# A photo is an image whose pixels can display any color or be transparent.
# At present, only GIF and PPM/PGM formats are supported, but an interface
# exists to allow additional image file formats to be added easily.
-#
+#
# This class documentation is a copy from the original Tcl/Tk at
# http://www.tcl.tk/man/tcl8.5/TkCmd/photo.htm with some rewrited parts.
class TkPhotoImage<TkImage
@@ -162,13 +162,13 @@ class TkPhotoImage<TkImage
# image = TkPhotoImage.new(:file: => 'my_image.gif')
#
# == Options
- # Photos support the following options:
+ # Photos support the following options:
# * :data
# Specifies the contents of the image as a string.
# * :format
# Specifies the name of the file format for the data.
# * :file
- # Gives the name of a file that is to be read to supply data for the image.
+ # Gives the name of a file that is to be read to supply data for the image.
# * :gamma
# Specifies that the colors allocated for displaying this image in a window
# should be corrected for a non-linear display with the specified gamma
@@ -185,7 +185,7 @@ class TkPhotoImage<TkImage
# Specifies the width of the image, in pixels. This option is useful
# primarily in situations where the user wishes to build up the contents of
# the image piece by piece. A value of zero (the default) allows the image
- # to expand or shrink horizontally to fit the data stored in it.
+ # to expand or shrink horizontally to fit the data stored in it.
def initialize(*args)
@type = 'photo'
super(*args)
@@ -193,7 +193,7 @@ class TkPhotoImage<TkImage
# Blank the image; that is, set the entire image to have no data, so it will
# be displayed as transparent, and the background of whatever window it is
- # displayed in will show through.
+ # displayed in will show through.
def blank
tk_send_without_enc('blank')
self
@@ -233,7 +233,7 @@ class TkPhotoImage<TkImage
# destination, possibly with pixel zooming and/or subsampling. If no options
# are specified, this method copies the whole of source into destination,
# starting at coordinates (0,0) in destination. The following options may be
- # specified:
+ # specified:
#
# * :from [x1, y1, x2, y2]
# Specifies a rectangular sub-region of the source image to be copied.
@@ -250,30 +250,30 @@ class TkPhotoImage<TkImage
# specified). If x2 and y2 are specified, the source region will be
# replicated if necessary to fill the destination region in a tiled fashion.
# * :shrink
- # Specifies that the size of the destination image should be reduced, if
- # necessary, so that the region being copied into is at the bottom-right
- # corner of the image. This option will not affect the width or height of
+ # Specifies that the size of the destination image should be reduced, if
+ # necessary, so that the region being copied into is at the bottom-right
+ # corner of the image. This option will not affect the width or height of
# the image if the user has specified a non-zero value for the :width or
# :height configuration option, respectively.
# * :zoom [x, y]
- # Specifies that the source region should be magnified by a factor of x
+ # Specifies that the source region should be magnified by a factor of x
# in the X direction and y in the Y direction. If y is not given, the
# default value is the same as x. With this option, each pixel in the
# source image will be expanded into a block of x x y pixels in the
# destination image, all the same color. x and y must be greater than 0.
# * :subsample [x, y]
# Specifies that the source image should be reduced in size by using only
- # every xth pixel in the X direction and yth pixel in the Y direction.
- # Negative values will cause the image to be flipped about the Y or X axes,
+ # every xth pixel in the X direction and yth pixel in the Y direction.
+ # Negative values will cause the image to be flipped about the Y or X axes,
# respectively. If y is not given, the default value is the same as x.
# * :compositingrule rule
- # Specifies how transparent pixels in the source image are combined with
+ # Specifies how transparent pixels in the source image are combined with
# the destination image. When a compositing rule of <tt>overlay</tt> is set,
# the old contents of the destination image are visible, as if the source
# image were printed on a piece of transparent film and placed over the
# top of the destination. When a compositing rule of <tt>set</tt> is set,
# the old contents of the destination image are discarded and the source
- # image is used as-is. The default compositing rule is <tt>overlay</tt>.
+ # image is used as-is. The default compositing rule is <tt>overlay</tt>.
def copy(src, *opts)
if opts.size == 0
tk_send('copy', src)
@@ -314,14 +314,14 @@ class TkPhotoImage<TkImage
# whole image.
# * :grayscale
# If this options is specified, the data will not contain color information.
- # All pixel data will be transformed into grayscale.
+ # All pixel data will be transformed into grayscale.
def data(keys={})
tk_split_list(tk_send('data', *_photo_hash_kv(keys)))
end
- # Returns the color of the pixel at coordinates (x,y) in the image as a list
+ # Returns the color of the pixel at coordinates (x,y) in the image as a list
# of three integers between 0 and 255, representing the red, green and blue
- # components respectively.
+ # components respectively.
def get(x, y)
tk_send('get', x, y).split.collect{|n| n.to_i}
end
@@ -362,13 +362,13 @@ class TkPhotoImage<TkImage
self
end
- # Returns a boolean indicating if the pixel at (x,y) is transparent.
+ # Returns a boolean indicating if the pixel at (x,y) is transparent.
def get_transparency(x, y)
bool(tk_send('transparency', 'get', x, y))
end
-
+
# Makes the pixel at (x,y) transparent if <tt>state</tt> is true, and makes
- # that pixel opaque otherwise.
+ # that pixel opaque otherwise.
def set_transparency(x, y, state)
tk_send('transparency', 'set', x, y, state)
self
diff --git a/ext/tk/lib/tk/msgcat.rb b/ext/tk/lib/tk/msgcat.rb
index f2d0653c69..4abbcad85e 100644
--- a/ext/tk/lib/tk/msgcat.rb
+++ b/ext/tk/lib/tk/msgcat.rb
@@ -125,8 +125,6 @@ class TkMsgCatalog < TkObject
when 2 # src and trans, or, trans_list and enc
if args[0].kind_of?(Array)
- # trans_list
- self.set_translation_list(loc, *args)
else
#self.set_translation(loc, args[0], Tk::UTF8_String.new(args[1]))
self.set_translation(loc, *args)
@@ -201,11 +199,7 @@ class TkMsgCatalog < TkObject
file = File.join(dir, loc + self::MSGCAT_EXT)
if File.readable?(file)
count += 1
- if TkCore::WITH_ENCODING
- eval(IO.read(file, :encoding=>"ASCII-8BIT"))
- else
- eval(IO.read(file))
- end
+ eval(open(file){|f| f.read})
end
}
count
@@ -221,11 +215,7 @@ class TkMsgCatalog < TkObject
file = File.join(dir, loc + @msgcat_ext)
if File.readable?(file)
count += 1
- if TkCore::WITH_ENCODING
- @namespace.eval(IO.read(file, :encoding=>"ASCII-8BIT"))
- else
- @namespace.eval(IO.read(file))
- end
+ @namespace.eval(open(file){|f| f.read})
end
}
count
@@ -239,21 +229,30 @@ class TkMsgCatalog < TkObject
def self.set_translation(locale, src_str, trans_str=None, enc='utf-8')
if trans_str && trans_str != None
trans_str = Tk.UTF8_String(_toUTF8(trans_str, enc))
- Tk.UTF8_String(ip_eval_without_enc("::msgcat::mcset {#{locale}} {#{_get_eval_string(src_str, true)}} {#{trans_str}}"))
+ Tk.UTF8_String(tk_call_without_enc('::msgcat::mcset',
+ locale,
+ _get_eval_string(src_str, true),
+ trans_str))
else
- Tk.UTF8_String(ip_eval_without_enc("::msgcat::mcset {#{locale}} {#{_get_eval_string(src_str, true)}}"))
+ Tk.UTF8_String(tk_call_without_enc('::msgcat::mcset',
+ locale,
+ _get_eval_string(src_str, true)))
end
end
def set_translation(locale, src_str, trans_str=None, enc='utf-8')
if trans_str && trans_str != None
trans_str = Tk.UTF8_String(_toUTF8(trans_str, enc))
Tk.UTF8_String(@namespace.eval{
- ip_eval_without_enc("::msgcat::mcset {#{locale}} {#{_get_eval_string(src_str, true)}} {#{trans_str}}")
+ tk_call_without_enc('::msgcat::mcset',
+ locale,
+ _get_eval_string(src_str, true),
+ trans_str)
})
else
Tk.UTF8_String(@namespace.eval{
- ip_eval_without_enc("::msgcat::mcset {#{locale}} {#{_get_eval_string(src_str, true)}}")
- })
+ tk_call_without_enc('::msgcat::mcset',
+ locale,
+ _get_eval_string(src_str, true))})
end
end
@@ -263,13 +262,12 @@ class TkMsgCatalog < TkObject
trans_list.each{|src, trans|
if trans && trans != None
list << _get_eval_string(src, true)
- list << Tk.UTF8_String(_toUTF8(trans, enc))
+ list << Tk.UTF8_Stirng(_toUTF8(trans, enc))
else
list << _get_eval_string(src, true) << ''
end
}
- #number(tk_call_without_enc('::msgcat::mcmset', locale, list))
- number(ip_eval_without_enc("::msgcat::mcmset {#{locale}} {#{_get_eval_string(list)}}"))
+ number(tk_call_without_enc('::msgcat::mcmset', locale, list))
end
def set_translation_list(locale, trans_list, enc='utf-8')
# trans_list ::= [ [src, trans], [src, trans], ... ]
@@ -283,8 +281,7 @@ class TkMsgCatalog < TkObject
end
}
number(@namespace.eval{
- #tk_call_without_enc('::msgcat::mcmset', locale, list)
- ip_eval_without_enc("::msgcat::mcmset {#{locale}} {#{_get_eval_string(list)}}")
+ tk_call_without_enc('::msgcat::mcmset', locale, list)
})
end
diff --git a/ext/tk/lib/tk/namespace.rb b/ext/tk/lib/tk/namespace.rb
index 0119ba5ef7..4af891995e 100644
--- a/ext/tk/lib/tk/namespace.rb
+++ b/ext/tk/lib/tk/namespace.rb
@@ -325,7 +325,12 @@ class TkNamespace < TkObject
def code(script = Proc.new)
if script.kind_of?(String)
cmd = proc{|*args|
- ret = ScopeArgs.new(@fullname,*args).instance_eval(script)
+ if TkCore::WITH_RUBY_VM ### Ruby 1.9 !!!!
+ obj = ScopeArgs.new(@fullname,*args)
+ ret = obj.instance_exec(obj, script)
+ else
+ ret = ScopeArgs.new(@fullname,*args).instance_eval(script)
+ end
id = ret.object_id
TkNamespace::Tk_NsCode_RetObjID_TBL[id] = ret
id
diff --git a/ext/tk/lib/tk/wm.rb b/ext/tk/lib/tk/wm.rb
index fcd5a2cbd2..b1a2ed886a 100644
--- a/ext/tk/lib/tk/wm.rb
+++ b/ext/tk/lib/tk/wm.rb
@@ -83,11 +83,11 @@ module Tk
def Wm.command(win, value=nil)
if value
- tk_call('wm', 'command', win.epath, value)
+ tk_call('wm', 'command', epath, value)
win
else
- #procedure(tk_call('wm', 'command', win.epath))
- tk_call('wm', 'command', win.epath)
+ #procedure(tk_call('wm', 'command', epath))
+ tk_call('wm', 'command', epath)
end
end
def wm_command(value=nil)
diff --git a/ext/tk/lib/tkextlib/pkg_checker.rb b/ext/tk/lib/tkextlib/pkg_checker.rb
index e2fd97bb6a..ecc6bfa131 100755
--- a/ext/tk/lib/tkextlib/pkg_checker.rb
+++ b/ext/tk/lib/tkextlib/pkg_checker.rb
@@ -15,7 +15,7 @@ verbose = false
def help_msg
print "Usage: #{$0} [-l] [-v] [-h] [--] [dir]\n"
- print "\tIf dir is omitted, check the directory that this command exists.\n"
+ print "\tIf dir is omitted, check the directry that this command exists.\n"
print "\tAvailable options are \n"
print "\t -l : Add dir to $LOAD_PATH\n"
print "\t (If dir == '<parent>/tkextlib', add <parent> also.)\n"
diff --git a/ext/tk/lib/tkextlib/tcllib/plotchart.rb b/ext/tk/lib/tkextlib/tcllib/plotchart.rb
index cd52a0ed4b..2f3d79d427 100644
--- a/ext/tk/lib/tkextlib/tcllib/plotchart.rb
+++ b/ext/tk/lib/tkextlib/tcllib/plotchart.rb
@@ -142,7 +142,7 @@ module Tk::Tcllib::Plotchart
end
def self.pixel_to_coords(w, x, y)
- list(tk_call_without_enc('::Plotchart::pixelToCoords', w.path, x, y))
+ list(tk_call_without_enc('::Plotchart::coordsToPixel', w.path, x, y))
end
def self.determine_scale(*args) # (xmin, xmax, inverted=false)
@@ -311,7 +311,7 @@ module Tk::Tcllib::Plotchart
end
def pixel_to_coords(x, y)
- list(tk_call_without_enc('::Plotchart::pixelToCoords', @path, x, y))
+ list(tk_call_without_enc('::Plotchart::coordsToPixel', @path, x, y))
end
def determine_scale(xmax, ymax)
diff --git a/ext/tk/lib/tkextlib/tktable/tktable.rb b/ext/tk/lib/tkextlib/tktable/tktable.rb
index f7074655ed..bc7a6c9a2e 100644
--- a/ext/tk/lib/tkextlib/tktable/tktable.rb
+++ b/ext/tk/lib/tkextlib/tktable/tktable.rb
@@ -70,7 +70,7 @@ module Tk::TkTable::ConfigMethod
private :__item_strval_optkeys
def __item_val2ruby_optkeys(id) # { key=>method, ... }
- super(id).update('window'=>proc{|k,v| window(v)})
+ super(id).update('window'=>proc{|v| window(v)})
end
private :__item_val2ruby_optkeys
diff --git a/ext/tk/old-README.tcltklib.eucj b/ext/tk/old-README.tcltklib.eucj
index e29b389402..1683629fcb 100644
--- a/ext/tk/old-README.tcltklib.eucj
+++ b/ext/tk/old-README.tcltklib.eucj
@@ -1,159 +1,159 @@
(tof)
2003/06/19 Hidetoshi NAGAI
-本ドキュメントには古い tcltk ライブラリ,tcltklib ライブラリの説明
-が含まれていますが,その記述内容は古いものとなっています.
+ܥɥȤˤϸŤ tcltk 饤֥ꡤtcltklib 饤֥
+ޤޤƤޤεƤϸŤΤȤʤäƤޤ
-まず,現在の Ruby/Tk の中心である tk.rb は wish を呼び出したりはせ
-ず,tcltklib ライブラリを wrap して動作するものとなっています.その
-ため,古い説明記述で述べられているようなプロセス間通信によるオーバ
-ヘッドは存在しません.
+ޤߤ Ruby/Tk 濴Ǥ tk.rb wish ƤӽФϤ
+tcltklib 饤֥ wrap ưΤȤʤäƤޤ
+ᡤŤҤǽҤ٤Ƥ褦ʥץ̿ˤ륪
+إåɤ¸ߤޤ
-現在の tcltklib ライブラリでも,Tcl/Tk の C ライブラリをリンクして
-直接に動かすことで,オーバヘッドを押さえつつ Tcl/Tk インタープリタ
-のほぼ全機能(拡張ライブラリを含む)を使える点は同じです.しかし,
-その役割はほぼ「tk.rb 以下のライブラリを効果的に働かせるためのもの」
-と見なされており,その目的でメンテナンスされています.
+ߤ tcltklib 饤֥Ǥ⡤Tcl/Tk C 饤֥󥯤
+ľܤưȤǡХإåɤ򲡤Ĥ Tcl/Tk 󥿡ץ꥿
+Τۤǽʳĥ饤֥ޤˤȤƱǤ
+Ϥۤܡtk.rb ʲΥ饤֥ŪƯ뤿ΤΡ
+ȸʤƤꡤŪǥƥʥ󥹤Ƥޤ
-tk.rb の高機能化に伴って,中水準のライブラリである tcltk ライブラリ
-(tcltk.rb)はその存在意義を減じており,現在ではメンテナンスは行わ
-れていません.
+tk.rb ιⵡǽȼäơΥ饤֥Ǥ tcltk 饤֥
+tcltk.rbˤϤ¸߰յ򸺤ƤꡤߤǤϥƥʥ󥹤ϹԤ
+Ƥޤ
-なお,古い説明ではバインディングにおけるスクリプトの追加はできないこ
-ととなっていますが,現在の tk.rb ではこれも可能であることを補足して
-おきます.
+ʤŤǤϥХǥ󥰤ˤ륹ץȤɲäϤǤʤ
+ȤȤʤäƤޤߤ tk.rb ǤϤǽǤ뤳Ȥ­
-以下がライブラリの古い説明文書です.
+ʲ饤֥θŤʸǤ
==============================================================
- tcltk ライブラリ
- tcltklib ライブラリ
+ tcltk 饤֥
+ tcltklib 饤֥
Sep. 19, 1997 Y. Shigehiro
-以下, 「tcl/tk」という表記は, tclsh や wish を実現している, 一般でいう
-ところの tcl/tk を指します. 「tcltk ライブラリ」, 「tcltklib ライブラ
-リ」という表記は, 本パッケージに含まれる ruby 用のライブラリを指します.
+ʲ, tcl/tkפȤɽ, tclsh wish ¸Ƥ, ̤Ǥ
+Ȥ tcl/tk ؤޤ. tcltk 饤֥, tcltklib 饤֥
+פȤɽ, ܥѥå˴ޤޤ ruby ѤΥ饤֥ؤޤ.
-[ファイルについて]
+[եˤĤ]
-README.euc : このファイル(注意, 特徴, インストールの方法).
-MANUAL.euc : マニュアル.
+README.euc : Υե(, ħ, 󥹥ȡˡ).
+MANUAL.euc : ޥ˥奢.
-lib/, ext/ : ライブラリの実体.
+lib/, ext/ : 饤֥μ.
-sample/ : マニュアル代わりのサンプルプログラム.
-sample/sample0.rb : tcltklib ライブラリのテスト.
-sample/sample1.rb : tcltk ライブラリのテスト.
- tcl/tk (wish) でできそうなことを一通り書いてみました.
-sample/sample2.rb : tcltk ライブラリのサンプル.
- maeda shugo (shugo@po.aianet.ne.jp) 氏による
- (`rb.tk' で書かれていた) ruby のサンプルプログラム
+sample/ : ޥ˥奢Υץץ.
+sample/sample0.rb : tcltklib 饤֥Υƥ.
+sample/sample1.rb : tcltk 饤֥Υƥ.
+ tcl/tk (wish) ǤǤʤȤ̤񤤤Ƥߤޤ.
+sample/sample2.rb : tcltk 饤֥Υץ.
+ maeda shugo (shugo@po.aianet.ne.jp) ˤ
+ (`rb.tk' ǽ񤫤Ƥ) ruby Υץץ
http://www.aianet.or.jp/~shugo/ruby/othello.rb.gz
- を tcltk ライブラリを使うように, 機械的に変更してみました.
+ tcltk 饤֥Ȥ褦, ŪѹƤߤޤ.
-demo/ : 100 本の線を 100 回描くデモプログラム.
- 最初に空ループの時間を測定し, 続いて実際に線を引く時間を測定します.
- tcl/tk は(再)描画のときに backing store を使わずに律義に 10000 本(?)
- 線を引くので, (再)描画を始めると, マシンがかなり重くなります.
-demo/lines0.tcl : wish 用のスクリプト.
-demo/lines1.rb : `tk.rb' 用のスクリプト.
-demo/lines2.rb : tcltk ライブラリ用のスクリプト.
+demo/ : 100 ܤ 100 ǥץ.
+ ǽ˶롼פλ֤¬ꤷ, ³Ƽºݤ֤¬ꤷޤ.
+ tcl/tk ()ΤȤ backing store Ȥ鷺Χ 10000 (?)
+ Τ, ()Ϥ, ޥ󤬤ʤŤʤޤ.
+demo/lines0.tcl : wish ѤΥץ.
+demo/lines1.rb : `tk.rb' ѤΥץ.
+demo/lines2.rb : tcltk 饤֥ѤΥץ.
-[注意]
+[]
-コンパイル/実行には, tcl/tk の C ライブラリが必要です.
+ѥ/¹Ԥˤ, tcl/tk C 饤֥꤬ɬפǤ.
-このライブラリは,
+Υ饤֥,
ruby-1.0-970701, ruby-1.0-970911, ruby-1.0-970919
FreeBSD 2.2.2-RELEASE
- およびそのパッケージ jp-tcl-7.6.tgz, jp-tk-4.2.tgz
+ ӤΥѥå jp-tcl-7.6.tgz, jp-tk-4.2.tgz
-で作成/動作確認しました. 他の環境では動作するかどうかわかりません.
+Ǻ/ưǧޤ. ¾δĶǤư뤫ɤ狼ޤ.
-TclTkLib.mainloop を実行中に Control-C が効かないのは不便なので, ruby
-のソースを参考に, #include "sig.h" して trap_immediate を操作していま
-すが, ruby の README.EXT にも書いてないのに, こんなことをして良いのか
-どうかわかりません.
+TclTkLib.mainloop ¹ Control-C ʤΤؤʤΤ, ruby
+Υ򻲹ͤ, #include "sig.h" trap_immediate Ƥ
+, ruby README.EXT ˤ񤤤ƤʤΤ, ʤȤ򤷤ɤΤ
+ɤ狼ޤ.
--d オプションでデバッグ情報を表示させるために, ruby のソースを参考に,
-debug という大域変数を参照していますが, ruby の README.EXT にも書いて
-ないのに, こんなことをして良いのかどうかわかりません.
+-d ץǥǥХåɽ뤿, ruby Υ򻲹ͤ,
+debug Ȥѿ򻲾ȤƤޤ, ruby README.EXT ˤ񤤤
+ʤΤ, ʤȤ򤷤ɤΤɤ狼ޤ.
-extconf.rb は書きましたが, (いろいろな意味で)これで良いのか良く分かり
-ません.
+extconf.rb Ͻ񤭤ޤ, (ʰ̣)ɤΤɤʬ
+ޤ.
-[特徴]
+[ħ]
-ruby から tcl/tk ライブラリを利用できます.
+ruby tcl/tk 饤֥ѤǤޤ.
-tcl/tk インタプリタのスクリプトは, 機械的に tcltk ライブラリ用の ruby
-スクリプトに変換できます.
+tcl/tk 󥿥ץ꥿ΥץȤ, Ū tcltk 饤֥Ѥ ruby
+ץȤѴǤޤ.
-(`tk.rb' との違い)
+(`tk.rb' Ȥΰ㤤)
-1. tcl/tk インタプリタのスクリプトが, どのように, tcltk ライブラリ用の
- ruby スクリプトに変換されるかが理解できれば, マニュアル類が無いに等
- しい `tk.rb' とは異なり
+1. tcl/tk 󥿥ץ꥿ΥץȤ, ɤΤ褦, tcltk 饤֥Ѥ
+ ruby ץȤѴ뤫Ǥ, ޥ˥奢ब̵
+ `tk.rb' Ȥϰۤʤ
- tcl/tk のマニュアルやオンラインドキュメントを用いて
+ tcl/tk Υޥ˥奢䥪饤ɥȤѤ
- 効率良くプログラミングを行うことができます.
- 記述方法がわからない, コマンドに与えるパラメータがわからない...
- - Canvas.new { ... } と, なぜイテレータブロックを書けるの??
- - Canvas の bbox は数値のリストを返すのに, xview は文字列を返すの??
- と, いちいち, ライブラリのソースを追いかける必要はありません.
+ Ψɤץߥ󥰤ԤȤǤޤ.
+ ˡ狼ʤ, ޥɤͿѥ᡼狼ʤ...
+ - Canvas.new { ... } , ʤƥ졼֥å񤱤??
+ - Canvas bbox ϿͤΥꥹȤ֤Τ, xview ʸ֤??
+ , , 饤֥ΥɤɬפϤޤ.
-2. 個々の機能(オプション)を個別処理によりサポートしており, そのためサ
- ポートしていない機能は使うことができない(本当は使えないこともないの
- ですが) `tk.rb' とは異なり, tcl/tk インタプリタで可能なことは
+2. ġεǽ(ץ)̽ˤꥵݡȤƤ, Τ᥵
+ ݡȤƤʤǽϻȤȤǤʤ(ϻȤʤȤʤ
+ Ǥ) `tk.rb' Ȥϰۤʤ, tcl/tk 󥿥ץ꥿DzǽʤȤ
- ほとんど
+ ۤȤ
- ruby からも実行できます. 現在, ruby から実行できないことが確認され
- ているのは,
+ ruby ¹ԤǤޤ. , ruby ¹ԤǤʤȤǧ
+ ƤΤ,
- bind コマンドでスクリプトを追加する構文
- 「bind tag sequence +script」
+ bind ޥɤǥץȤɲä빽ʸ
+ bind tag sequence +script
^
- のみです.
- - `. configure -width' をしようとして, `Tk.root.height()' と書い
- たのに, `undefined method `height'' と怒られてしまった. tk.rb を
- 読んでみて, ガーン. できないのか...
- ということはありません.
+ ΤߤǤ.
+ - `. configure -width' 򤷤褦Ȥ, `Tk.root.height()' Ƚ
+ Τ, `undefined method `height'' ܤƤޤä. tk.rb
+ ɤǤߤ, . ǤʤΤ...
+ ȤȤϤޤ.
-3. wish プロセスを起動しプロセス間通信で wish を利用する `tk.rb' とは
- 異なり, tcl/tk の C ライブラリをリンクし
+3. wish ץưץ̿ wish Ѥ `tk.rb' Ȥ
+ ۤʤ, tcl/tk C 饤֥󥯤
- より高速に (といっても, 思った程は速くないですが)
+ ® (ȤäƤ, פä®ʤǤ)
- 処理を行います.
+ Ԥޤ.
-4. `tk.rb' ほど, 高水準なインターフェースを備えていないため, tcl/tk イ
- ンタプリタの生成等
+4. `tk.rb' ۤ, ʥ󥿡եƤʤ, tcl/tk
+ 󥿥ץ꥿
- 何から何まで自分で記述
+ 鲿ޤǼʬǵ
- しなければなりません(その代わり, tcl/tk ライブラリの仕様通り,
- tcl/tk インタプリタを複数生成することもできますが).
- インターフェースは(おそらく) ruby の思想に沿ったものではありません.
- また, スクリプトの記述は
+ ʤФʤޤ(, tcl/tk 饤֥λ̤,
+ tcl/tk 󥿥ץ꥿ʣ뤳ȤǤޤ).
+ 󥿡ե(餯) ruby λۤ˱äΤǤϤޤ.
+ ޤ, ץȤεҤ
- ダサダサ
+
- です. スクリプトは, 一見, 読みづらいものとなります. が, 書く人にとっ
- ては, それほど煩わしいものではないと思います.
+ Ǥ. ץȤ, 츫, ɤߤŤ餤ΤȤʤޤ. , 񤯿ͤˤȤ
+ Ƥ, ۤѤ路ΤǤϤʤȻפޤ.
-[インストールの方法]
+[󥹥ȡˡ]
-0. ruby のソースファイル(ruby-1.0-なんたら.tgz)を展開しておきます.
+0. ruby Υե(ruby-1.0-ʤ󤿤.tgz)ŸƤޤ.
-1. ruby-1.0-なんたら/ext に ext/tcltklib をコピーします.
- cp -r ext/tcltklib ???/ruby-1.0-なんたら/ext/
+1. ruby-1.0-ʤ󤿤/ext ext/tcltklib 򥳥ԡޤ.
+ cp -r ext/tcltklib ???/ruby-1.0-ʤ󤿤/ext/
-2. ruby のインストール法に従い make 等をします.
+2. ruby Υ󥹥ȡˡ˽ make 򤷤ޤ.
-3. ruby のライブラリ置場に lib/* をコピーします.
+3. ruby Υ饤֥־ lib/* 򥳥ԡޤ.
cp lib/* /usr/local/lib/ruby/
(eof)
diff --git a/ext/tk/sample/demos-en/README b/ext/tk/sample/demos-en/README
index 033dca33c6..a6ea4fae8c 100644
--- a/ext/tk/sample/demos-en/README
+++ b/ext/tk/sample/demos-en/README
@@ -68,71 +68,71 @@ Notes:
Ruby/Tk81 widget-demo 1999/08/13
- 北陸先端大情報科学研究科
- 立石 <ttate@jaist.ac.jp>
+ Φüʳظ
+ Ω <ttate@jaist.ac.jp>
-Tcl/Tk8.1ではunicode(UTF8)が採用され、unicodeに変換された日本語であれば
-Widgetに表示させることが可能です。本アーカイブには以前に永井さんが中心と
-なられて作成されたRuby/Tkのサンプルに修正を加え、以下の環境においてで動作
-を確認したものです。
+Tcl/Tk8.1Ǥunicode(UTF8)Ѥ졢unicodeѴ줿ܸǤ
+Widgetɽ뤳ȤǽǤܥ֤ˤϰ˱ʰ椵濴
+ʤƺ줿Ruby/TkΥץ˽äʲδĶˤƤư
+ǧΤǤ
* ruby-1.3.7,ruby-1.4.0
* tcl8.1, tk8.1
* linux-2.2
-Windows(Cygwin)において、サンプルを動かすにはrubyを-Keというオプションを付
-けて起動させると良いそうです。
- 情報提供:渡辺さん
+Windows(Cygwin)ˤơץưˤruby-KeȤץ
+ƵưɤǤ
+ 󶡡դ
<eban@os.rim.or.jp>
----------------------------------------------------------------------------
Ruby/Tk widget-demo
version 1.1 ( 1998/07/24 )
- 永井@知能.九工大 (nagai@ai.kyutech.ac.jp)
-
-標準配布の Tcl/Tk 拡張パッケージを取り込んだ Ruby (以下 Ruby/Tk と呼びます)
-では,Tk widget を用いた GUI の作成を行うことができます.実際に GUI を作成
-していく場合には様々な実例がサンプルとして存在すると便利なのですが,Ruby/Tk
-にはそのような適当なサンプルスクリプト集合は存在しませんでした.それに対し,
-拡張パッケージの元である Tcl/Tk には,Tk widget を用いてどのようなことがで
-きるかを示すものとして widget-demo が存在しおり,Tcl/Tk を用いた GUI の作成
-を習得する際の代表的サンプルとなっています.本アーカイブは,Ruby/Tk の習得の
-ための代表的なサンプルスクリプトとすべく,Tcl/Tk の widget-demo を移植したも
-のです.
-
-本アーカイブに含まれるスクリプトを実行するためには,ruby-1.1c2 以上であるこ
-とが必要です.1.1c1 の場合は,本アーカイブに含まれる patck_1.1c1 を Ruby の
-ライブラリにあててください.組み込む Tk のバージョンは,4.2 でも 8.0 でも修
-正なく動かせるはずです.ただし,日本語版での移植となっているため,日本語化さ
-れた Tk をご利用ください.スクリプトのテストは,Tk4.2jp と Tk8.0jp の上で行
-いました (完璧にではないですが).
-
-本アーカイブに含まれるスクリプトの多くは,元となっている Tcl/Tk 版に比較的近
-いスクリプト記述となるようにしています.そのため,Ruby/Tk のサンプルと言うに
-は,あまり Ruby らしくないとも言えるでしょう.にもかかわらず,そのような記述
-を取っている理由は,Ruby/Tk のドキュメント不足にあります.
-
-Tcl/Tk には適当な参考書が何冊か存在していますから,Ruby/Tk スクリプトを作成
-する際は,そのような Tcl/Tk の参考書で情報を補いながら作成することになると思
-います.各 widget の使用例として,Tcl/Tk の widget-demo を参照することもある
-でしょう.Ruby/Tk 版の記述を widget-demo を Tcl/Tk 版の記述に近いものにして
-おけば,その対比によって,Ruby/Tk の理解を早めることができると考えられます.
-一旦 Ruby/Tk での 各 widget の使用方法を習得してしまえば,Ruby らしいスクリ
-プトを作成することは難しくないでしょう.本アーカイブのスクリプトは,Ruby/Tk
-を最初に習得するまでの踏台として利用していただければ幸いです.
-
-widget-demo の移植にあたっては,次の方にも移植したスクリプトを提供していただ
-きました.ここに感謝の意を表します.
-
- 立石@JAIST (ttate@jaist.ac.jp) さん
- 平松祥史 (hiramatu@cdrom.co.jp) さん
-
-平松さんによる Ruby/Tk 入門の Web page (http://www.cdrom.co.jp/~hiramatu/)
-も Ruby/Tk の習得に有用と思えますので,ぜひご参照ください.
-
-また,前橋 (maebashi@iij.ad.jp) さんをはじめとして,widget-demo の移植に際し
-て必要となった Ruby の Tk 関連ライブラリ修正について,問題点,バグの指摘をし
-ていただいた方々にも感謝致します.
-
-そして最後に最大の感謝を Ruby 設計者の まつもと ゆきひろ (matz@netlab.co.jp)
-さんに捧げたいと思います.
+ ʰǽ幩 (nagai@ai.kyutech.ac.jp)
+
+ɸۤ Tcl/Tk ĥѥå Ruby (ʲ Ruby/Tk ȸƤӤޤ)
+ǤϡTk widget Ѥ GUI κԤȤǤޤºݤ GUI
+Ƥˤ͡ʼ㤬ץȤ¸ߤʤΤǤRuby/Tk
+ˤϤΤ褦Ŭʥץ륹ץȽ¸ߤޤǤФ
+ĥѥåθǤ Tcl/Tk ˤϡTk widget ѤƤɤΤ褦ʤȤ
+뤫򼨤ΤȤ widget-demo ¸ߤꡤTcl/Tk Ѥ GUI κ
+ݤɽŪץȤʤäƤޤܥ֤ϡRuby/Tk ν
+ɽŪʥץ륹ץȤȤ٤Tcl/Tk widget-demo ܿ
+ΤǤ
+
+ܥ֤˴ޤޤ륹ץȤ¹Ԥ뤿ˤϡruby-1.1c2 ʾǤ뤳
+ȤɬפǤ1.1c1 ξϡܥ֤˴ޤޤ patck_1.1c1 Ruby
+饤֥ˤƤƤȤ߹ Tk ΥСϡ4.2 Ǥ 8.0 Ǥ⽤
+ʤưϤǤܸǤǤΰܿȤʤäƤ뤿ᡤܸ첽
+줿 Tk ѤץȤΥƥȤϡTk4.2jp Tk8.0jp ξǹ
+ޤ (ˤǤϤʤǤ)
+
+ܥ֤˴ޤޤ륹ץȤ¿ϡȤʤäƤ Tcl/Tk ǤŪ
+ץȵҤȤʤ褦ˤƤޤΤᡤRuby/Tk Υץȸ
+ϡޤ Ruby 餷ʤȤǤ礦ˤ⤫餺Τ褦ʵ
+äƤͳϡRuby/Tk Υɥ­ˤޤ
+
+Tcl/Tk ˤŬʻͽ񤬲¸ߤƤޤ顤Ruby/Tk ץȤ
+ݤϡΤ褦 Tcl/Tk λͽǾ䤤ʤ뤳ȤˤʤȻ
+ޤ widget λȤơTcl/Tk widget-demo 򻲾Ȥ뤳Ȥ⤢
+Ǥ礦Ruby/Tk ǤεҤ widget-demo Tcl/Tk ǤεҤ˶ᤤΤˤ
+СˤäơRuby/Tk 뤳ȤǤȹͤޤ
+ö Ruby/Tk Ǥ widget λˡƤޤСRuby 餷
+ץȤ뤳Ȥ񤷤ʤǤ礦ܥ֤ΥץȤϡRuby/Tk
+ǽ˽ޤǤƧȤѤƤйǤ
+
+widget-demo ΰܿˤäƤϡˤܿץȤ󶡤Ƥ
+ޤ˴դΰդɽޤ
+
+ ΩСJAIST (ttate@jaist.ac.jp)
+ ʿͻ (hiramatu@cdrom.co.jp)
+
+ʿˤ Ruby/Tk Web page (http://www.cdrom.co.jp/~hiramatu/)
+ Ruby/Tk νͭѤȻפޤΤǡҤȤ
+
+ޤ (maebashi@iij.ad.jp) ϤȤơwidget-demo ΰܿ˺ݤ
+ɬפȤʤä Ruby Tk Ϣ饤֥꽤ˤĤơХλŦ
+Ƥˤⴶפޤ
+
+ƺǸ˺δդ Ruby ߷׼Ԥ ޤĤ 椭Ҥ (matz@netlab.co.jp)
+Ȼפޤ
diff --git a/ext/tk/sample/demos-en/README.tkencoding b/ext/tk/sample/demos-en/README.tkencoding
index cca8734a28..679b476a08 100644
--- a/ext/tk/sample/demos-en/README.tkencoding
+++ b/ext/tk/sample/demos-en/README.tkencoding
@@ -3,27 +3,27 @@ The library 'tkencoding.rb' is obsolete.
Functions of tkencoding.rb is already included into Ruby/Tk.
-------------------------------------------------
-tkencoding.rbを用いた日本語の表示について
+tkencoding.rbѤܸɽˤĤ
Copyright (C) 1999/07, Takaaki Tateishi <ttate@jaist.ac.jp>
-1. tkencoding.rbとは?
+1. tkencoding.rbȤϡ
-tkencoding.rbはTcl/Tk8.1を利用したRuby/Tkのためのライブラリ
-です。tkencoding.rbをrequireすることによってWedgetに表示さ
-れるテキストは全てunicode(UTF8)へ変換されます。
+tkencoding.rbTcl/Tk8.1ѤRuby/TkΤΥ饤֥
+Ǥtkencoding.rbrequire뤳ȤˤäWedgetɽ
+ƥȤunicode(UTF8)Ѵޤ
-2. 使い方
+2. Ȥ
-tkencoding.rbをrequireしてTk.encodingで使用している文字コード
-を指定して下さい。例えば以下のような感じになります。
+tkencoding.rbrequireTk.encodingǻѤƤʸ
+ꤷƲ㤨аʲΤ褦ʴˤʤޤ
----
require 'tk'
require 'tkencoding'
-Tk.encoding = "utf-8"
+Tk.encoding = "euc-jp"
# Tk.encoding = "shiftjis"
---
diff --git a/ext/tk/sample/demos-en/text.rb b/ext/tk/sample/demos-en/text.rb
index 2f72de7583..5794a85e87 100644
--- a/ext/tk/sample/demos-en/text.rb
+++ b/ext/tk/sample/demos-en/text.rb
@@ -117,7 +117,7 @@ insertion cursor. #{
end
}
-8. Resize the window. This widget has been configured with the "setGrid"
+7. Resize the window. This widget has been configured with the "setGrid"
option on, so that if you resize the window it will always resize to an
even number of characters high and wide. Also, if you make the window
narrow you can see that long lines automatically wrap around onto
diff --git a/ext/tk/sample/demos-en/tree.rb b/ext/tk/sample/demos-en/tree.rb
index 69154ee076..cd62ba8c9b 100644
--- a/ext/tk/sample/demos-en/tree.rb
+++ b/ext/tk/sample/demos-en/tree.rb
@@ -67,7 +67,7 @@ def populate_tree(tree, node)
path = tree.get(node, :fullpath)
tree.delete(tree.children(node))
Dir.glob("#{path}/*").sort.each{|f|
- type = File.ftype(f) rescue nil
+ type = File.ftype(f)
id = tree.insert(node, :end,
:text=>File.basename(f), :values=>[f, type]).id
if type == 'directory'
diff --git a/ext/tk/sample/demos-en/widget b/ext/tk/sample/demos-en/widget
index fb49a746b9..e6510c7e45 100644
--- a/ext/tk/sample/demos-en/widget
+++ b/ext/tk/sample/demos-en/widget
@@ -627,7 +627,7 @@ class Object
end
class Proc
- def initialize(*args)
+ def initialize(*args, &b)
super
@__pseudo_toplevel__ = Thread.current[:TOPLEVEL]
end
@@ -683,7 +683,7 @@ def eval_samplecode(code, file=nil)
end
}
}
- Tk.update rescue nil
+ Tk.update
end
# invoke --
@@ -699,7 +699,7 @@ def invoke(txt, idx)
cursor = txt.cget('cursor')
txt.cursor('watch')
- Tk.update rescue nil
+ Tk.update
# eval(IO.readlines("#{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb").join, _null_binding)
# Tk.update
eval_samplecode(IO.readlines("#{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb").join, tag[5..-1] + '.rb')
@@ -1058,7 +1058,7 @@ if ARGV[0] == '-n'
no_launcher = true if ARGV.size > 0
else
# show the root widget to make it lower then demo windows
- Tk.update rescue nil
+ Tk.update
end
ARGV.each{|cmd|
if cmd =~ /(.*).rb/
diff --git a/ext/tk/sample/demos-jp/README b/ext/tk/sample/demos-jp/README
index 4278124659..6375800232 100644
--- a/ext/tk/sample/demos-jp/README
+++ b/ext/tk/sample/demos-jp/README
@@ -1,54 +1,54 @@
Ruby/Tk widget-demo
version 1.2 ( 2000/04/08 )
- 永井@知能.九工大 (nagai@ai.kyutech.ac.jp)
-
-標準配布の Tcl/Tk 拡張パッケージを取り込んだ Ruby (以下 Ruby/Tk と呼びます)
-では,Tk widget を用いた GUI の作成を行うことができます.実際に GUI を作成
-していく場合には様々な実例がサンプルとして存在すると便利なのですが,Ruby/Tk
-にはそのような適当なサンプルスクリプト集合は存在しませんでした.それに対し,
-拡張パッケージの元である Tcl/Tk には,Tk widget を用いてどのようなことがで
-きるかを示すものとして widget-demo が存在しおり,Tcl/Tk を用いた GUI の作成
-を習得する際の代表的サンプルとなっています.本アーカイブは,Ruby/Tk の習得の
-ための代表的なサンプルスクリプトとすべく,Tcl/Tk の widget-demo を移植したも
-のです.
-
-今回のバージョンは ruby-1.4.x に対応としておきますが,旧バージョンに比べて,
-ほとんど変更はありません.ruby-1.1c2 以上なら動くと思います.ruby-1.5.x につ
-いてはテストしていません.そのため,非互換の影響が出ることがあるかもしれませ
-んが,その場合でも少しの修正で動かせると思います.組み込む Tk のバージョンは,
-4.2 でも 8.0 でも修正なく動かせるはずです.ただし,日本語版での移植となって
-いるため,日本語化された Tk をご利用ください.スクリプトのテストは,旧バージョ
-ンの際に Tk4.2jp と Tk8.0jp の上で行っています (完璧にではないですが).今回
-のバージョンでは ruby-1.4.x + Tk8.0jp 上での簡単なテストしか行っていませんが,
-修正というほどの修正はしていませんので問題はないと考えています.
-
-本アーカイブに含まれるスクリプトの多くは,元となっている Tcl/Tk 版に比較的近
-いスクリプト記述となるようにしています.そのため,Ruby/Tk のサンプルと言うに
-は,あまり Ruby らしくないとも言えるでしょう.にもかかわらず,そのような記述
-を取っている理由は,Ruby/Tk のドキュメント不足にあります.
-
-Tcl/Tk には適当な参考書が何冊か存在していますから,Ruby/Tk スクリプトを作成
-する際は,そのような Tcl/Tk の参考書で情報を補いながら作成することになると思
-います.各 widget の使用例として,Tcl/Tk の widget-demo を参照することもある
-でしょう.Ruby/Tk 版の記述を widget-demo を Tcl/Tk 版の記述に近いものにして
-おけば,その対比によって,Ruby/Tk の理解を早めることができると考えられます.
-一旦 Ruby/Tk での 各 widget の使用方法を習得してしまえば,Ruby らしいスクリ
-プトを作成することは難しくないでしょう.本アーカイブのスクリプトは,Ruby/Tk
-を最初に習得するまでの踏台として利用していただければ幸いです.
-
-widget-demo の移植にあたっては,次の方にも移植したスクリプトを提供していただ
-きました.ここに感謝の意を表します.
-
- 立石@JAIST (ttate@jaist.ac.jp) さん
- 平松祥史 (hiramatu@cdrom.co.jp) さん
-
-平松さんによる Ruby/Tk 入門の Web page (http://www.cdrom.co.jp/~hiramatu/)
-も Ruby/Tk の習得に有用と思えますので,ぜひご参照ください.
-
-また,前橋 (maebashi@iij.ad.jp) さんをはじめとして,widget-demo の移植に際し
-て必要となった Ruby の Tk 関連ライブラリ修正について,問題点,バグの指摘をし
-ていただいた方々にも感謝致します.
-
-そして最後に最大の感謝を Ruby 設計者の まつもと ゆきひろ (matz@netlab.co.jp)
-さんに捧げたいと思います.
+ ʰǽ幩 (nagai@ai.kyutech.ac.jp)
+
+ɸۤ Tcl/Tk ĥѥå Ruby (ʲ Ruby/Tk ȸƤӤޤ)
+ǤϡTk widget Ѥ GUI κԤȤǤޤºݤ GUI
+Ƥˤ͡ʼ㤬ץȤ¸ߤʤΤǤRuby/Tk
+ˤϤΤ褦Ŭʥץ륹ץȽ¸ߤޤǤФ
+ĥѥåθǤ Tcl/Tk ˤϡTk widget ѤƤɤΤ褦ʤȤ
+뤫򼨤ΤȤ widget-demo ¸ߤꡤTcl/Tk Ѥ GUI κ
+ݤɽŪץȤʤäƤޤܥ֤ϡRuby/Tk ν
+ɽŪʥץ륹ץȤȤ٤Tcl/Tk widget-demo ܿ
+ΤǤ
+
+ΥС ruby-1.4.x бȤƤޤС٤ơ
+ۤȤѹϤޤruby-1.1c2 ʾʤưȻפޤruby-1.5.x ˤ
+ƤϥƥȤƤޤ󡥤ΤᡤߴαƶФ뤳Ȥ뤫⤷ޤ
+󤬡ξǤ⾯νưȻפޤȤ߹ Tk ΥСϡ
+4.2 Ǥ 8.0 Ǥ⽤ʤưϤǤܸǤǤΰܿȤʤä
+뤿ᡤܸ첽줿 Tk ѤץȤΥƥȤϡС
+κݤ Tk4.2jp Tk8.0jp ξǹԤäƤޤ (ˤǤϤʤǤ)
+ΥСǤ ruby-1.4.x + Tk8.0jp ǤδñʥƥȤԤäƤޤ󤬡
+ȤۤɤνϤƤޤΤϤʤȹͤƤޤ
+
+ܥ֤˴ޤޤ륹ץȤ¿ϡȤʤäƤ Tcl/Tk ǤŪ
+ץȵҤȤʤ褦ˤƤޤΤᡤRuby/Tk Υץȸ
+ϡޤ Ruby 餷ʤȤǤ礦ˤ⤫餺Τ褦ʵ
+äƤͳϡRuby/Tk Υɥ­ˤޤ
+
+Tcl/Tk ˤŬʻͽ񤬲¸ߤƤޤ顤Ruby/Tk ץȤ
+ݤϡΤ褦 Tcl/Tk λͽǾ䤤ʤ뤳ȤˤʤȻ
+ޤ widget λȤơTcl/Tk widget-demo 򻲾Ȥ뤳Ȥ⤢
+Ǥ礦Ruby/Tk ǤεҤ widget-demo Tcl/Tk ǤεҤ˶ᤤΤˤ
+СˤäơRuby/Tk 뤳ȤǤȹͤޤ
+ö Ruby/Tk Ǥ widget λˡƤޤСRuby 餷
+ץȤ뤳Ȥ񤷤ʤǤ礦ܥ֤ΥץȤϡRuby/Tk
+ǽ˽ޤǤƧȤѤƤйǤ
+
+widget-demo ΰܿˤäƤϡˤܿץȤ󶡤Ƥ
+ޤ˴դΰդɽޤ
+
+ ΩСJAIST (ttate@jaist.ac.jp)
+ ʿͻ (hiramatu@cdrom.co.jp)
+
+ʿˤ Ruby/Tk Web page (http://www.cdrom.co.jp/~hiramatu/)
+ Ruby/Tk νͭѤȻפޤΤǡҤȤ
+
+ޤ (maebashi@iij.ad.jp) ϤȤơwidget-demo ΰܿ˺ݤ
+ɬפȤʤä Ruby Tk Ϣ饤֥꽤ˤĤơХλŦ
+Ƥˤⴶפޤ
+
+ƺǸ˺δդ Ruby ߷׼Ԥ ޤĤ 椭Ҥ (matz@netlab.co.jp)
+Ȼפޤ
diff --git a/ext/tk/sample/demos-jp/README.1st b/ext/tk/sample/demos-jp/README.1st
index 68caf8b14d..60b278d7b6 100644
--- a/ext/tk/sample/demos-jp/README.1st
+++ b/ext/tk/sample/demos-jp/README.1st
@@ -1,20 +1,20 @@
-このディレクトリには Ruby/Tk のデモスクリプトが収められています.
+Υǥ쥯ȥˤ Ruby/Tk Υǥ⥹ץȤƤޤ
-'.rb' という拡張子を持っているファイルは,ランチャ─スクリプトで
-ある 'widget' から呼び出されるサブスクリプトです.それぞれ独立に
-は動きません.'widget' スクリプトから呼び出してください.
+'.rb' ȤĥҤäƤեϡ㨡ץȤ
+ 'widget' ƤӽФ륵֥ץȤǤ줾Ω
+ưޤ'widget' ץȤƤӽФƤ
-もしランチャ─スクリプト 'widget' の起動と同時にいくつかのサブス
-クリプトを起動したければ,そのサブスクリプトの名前を引数として与
-えてください.
-( 例: /usr/local/bin/ruby widget button.rb entry1.rb text.rb )
-サブスクリプトの拡張子 '.rb' は省略することもできます.
-( 例: /usr/local/bin/ruby widget button entry1 text )
+⤷㨡ץ 'widget' εưƱˤĤΥ֥
+ץȤưСΥ֥ץȤ̾ȤͿ
+( : /usr/local/bin/ruby widget button.rb entry1.rb text.rb )
+֥ץȤγĥ '.rb' Ͼά뤳ȤǤޤ
+( : /usr/local/bin/ruby widget button entry1 text )
-もしランチャ─スクリプトのウィンドウが必要ない場合には,'-n' オ
-プションを与えてください.
-( 例: /usr/local/bin/ruby widget -n button.rb entry1.rb text.rb )
+⤷㨡ץȤΥɥɬפʤˤϡ'-n'
+ץͿƤ
+( : /usr/local/bin/ruby widget -n button.rb entry1.rb text.rb )
-他のファイル (browse1 や hello など) は単独で動かすことが可能です.
+¾Υե (browse1 hello ʤ) ñȤưȤǽǤ
2004/04/14 Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
diff --git a/ext/tk/sample/demos-jp/anilabel.rb b/ext/tk/sample/demos-jp/anilabel.rb
index c882f43f7e..d2f5b12041 100644
--- a/ext/tk/sample/demos-jp/anilabel.rb
+++ b/ext/tk/sample/demos-jp/anilabel.rb
@@ -1,16 +1,16 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# animated label widget demo (called by 'widget')
#
# based on Tcl/Tk8.5a2 widget demos
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($anilabel_demo) && $anilabel_demo
$anilabel_demo.destroy
$anilabel_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$anilabel_demo = TkToplevel.new {|w|
title("Animated Label Demonstration")
iconname("anilabel")
@@ -19,20 +19,20 @@ $anilabel_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($anilabel_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
msg = TkLabel.new(base_frame) {
font $font
wraplength '4i'
justify 'left'
- text "下には4つのアニメーションラベルが表示されています。左側にあるラベルは、内部のテキストメッセージをスクロールしたように見せることで動きを付けています。右側のラベルは、表示するイメージを変化させることで動きを与えています。"
+ text "ˤ4ĤΥ˥᡼٥뤬ɽƤޤ¦ˤ٥ϡΥƥȥå򥹥뤷褦˸뤳ȤưդƤޤ¦Υ٥ϡɽ륤᡼Ѳ뤳ȤưͿƤޤ"
}
msg.pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $anilabel_demo
$anilabel_demo = nil
@@ -41,13 +41,13 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'anilabel'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# label demo 用フレーム生成
+# label demo ѥե졼
f_left = TkLabelFrame.new(base_frame, :text=>'Scrolling Texts')
f_right = TkLabelFrame.new(base_frame, :text=>'GIF Image')
Tk.pack(f_left, f_right, 'side'=>'left', 'expand'=>'yes', 'fill'=>'both',
@@ -123,7 +123,7 @@ class AnimatedImageLabel < AnimatedTextLabel
private :_animation_callback
end
-# label 生成
+# label
l1 = AnimatedTextLabel.new(f_left, :borderwidth=>4, :relief=>:ridge,
:font=>{:family=>'Courier', :size=>10})
l2 = AnimatedTextLabel.new(f_left, :borderwidth=>4, :relief=>:groove,
diff --git a/ext/tk/sample/demos-jp/aniwave.rb b/ext/tk/sample/demos-jp/aniwave.rb
index 866316c331..973c1be1e9 100644
--- a/ext/tk/sample/demos-jp/aniwave.rb
+++ b/ext/tk/sample/demos-jp/aniwave.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# animated wave demo (called by 'widget')
#
@@ -24,15 +24,15 @@ msg = TkLabel.new(base_frame) {
font $font
wraplength '4i'
justify 'left'
- text 'このデモでは、ラインアイテムが一つだけ描かれたキャンバスウィジェットが表示されています。アニメーション処理は、そのラインアイテムの座標値を変更することで実現しています。'
+ text 'ΥǥǤϡ饤󥢥ƥबĤ줿ХåȤɽƤޤ˥᡼ϡΥ饤󥢥ƥκɸͤѹ뤳ȤǼ¸Ƥޤ'
}
msg.pack('side'=>'top')
# create frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $aniwave_demo
$aniwave_demo = nil
@@ -41,7 +41,7 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'aniwave'}
}.pack('side'=>'left', 'expand'=>'yes')
diff --git a/ext/tk/sample/demos-jp/arrow.rb b/ext/tk/sample/demos-jp/arrow.rb
index 2995f96d54..a1694d019d 100644
--- a/ext/tk/sample/demos-jp/arrow.rb
+++ b/ext/tk/sample/demos-jp/arrow.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# arrowhead widget demo (called by 'widget')
#
@@ -91,13 +91,13 @@ def arrowSetup(c)
v.count += 1
end
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($arrow_demo) && $arrow_demo
$arrow_demo.destroy
$arrow_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$arrow_demo = TkToplevel.new {|w|
title("Arrowhead Editor Demonstration")
iconname("arrow")
@@ -106,17 +106,17 @@ $arrow_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($arrow_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'5i', 'justify'=>'left',
- 'text'=>"この widget で、キャンバスで使われるラインについて様々な幅や矢印の頭の形を試してみることができます。線の幅や矢印の形を変えるには、拡大された矢印についている 3つの四角をドラッグしてください。右側の矢印は普通の大きさでのサンプルを示しています。下のテキストはラインアイテムに対する設定オプションです。"){
+ 'text'=>" widget ǡХǻȤ饤ˤĤ͡ƬηƤߤ뤳ȤǤޤηѤˤϡ礵줿ˤĤƤ 3ĤλͳѤɥåƤ¦̤礭ǤΥץ򼨤ƤޤΥƥȤϥ饤󥢥ƥФꥪץǤ"){
pack('side'=>'top')
}
-# frame 生成
+# frame
$arrow_buttons = TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $arrow_demo
$arrow_demo = nil
@@ -125,18 +125,18 @@ $arrow_buttons = TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'arrow'}
}.pack('side'=>'left', 'expand'=>'yes')
}
$arrow_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# canvas 設定
+# canvas
$arrow_canvas = TkCanvas.new(base_frame, 'width'=>500, 'height'=>350,
'relief'=>'sunken', 'borderwidth'=>2)
$arrow_canvas.pack('expand'=>'yes', 'fill'=>'both')
-# 値設定
+#
unless Struct.const_defined?("ArrowInfo")
$demo_arrowInfo = Struct.new("ArrowInfo", :a, :b, :c, :width, :motionProc,
:x1, :x2, :y, :smallTips, :count,
diff --git a/ext/tk/sample/demos-jp/bind.rb b/ext/tk/sample/demos-jp/bind.rb
index efba6e6c01..99e5c1718c 100644
--- a/ext/tk/sample/demos-jp/bind.rb
+++ b/ext/tk/sample/demos-jp/bind.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# text (tag bindings) widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($bind_demo) && $bind_demo
$bind_demo.destroy
$bind_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$bind_demo = TkToplevel.new {|w|
title("Text Demonstration - Tag Bindings")
iconname("bind")
@@ -18,11 +18,11 @@ $bind_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($bind_demo).pack(:fill=>:both, :expand=>true)
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $bind_demo
$bind_demo = nil
@@ -31,20 +31,20 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'bind'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# bind 用メソッド
+# bind ѥ᥽å
def tag_binding_for_bind_demo(tag, enter_style, leave_style)
tag.bind('Any-Enter', proc{tag.configure enter_style})
tag.bind('Any-Leave', proc{tag.configure leave_style})
end
-# text 生成
+# text
txt = TkText.new(base_frame){|t|
- # 生成
+ #
setgrid 'true'
#width 60
#height 24
@@ -57,7 +57,7 @@ txt = TkText.new(base_frame){|t|
}
pack('expand'=>'yes', 'fill'=>'both')
- # スタイル設定
+ #
if TkWinfo.depth($root).to_i > 1
tagstyle_bold = {'background'=>'#43ce80', 'relief'=>'raised',
'borderwidth'=>1}
@@ -67,25 +67,25 @@ txt = TkText.new(base_frame){|t|
tagstyle_normal = {'foreground'=>'', 'background'=>''}
end
- # テキスト挿入
- insert 'insert', "テキストwidgetの表示スタイルを制御するのと同じタグのメカニズムを使って、テキストにTclのコマンドを割り当てることができます。これにより、マウスやキーボードのアクションで特定のTclのコマンドが実行されるようになります。例えば、下のキャンバスのデモプログラムについての説明文にはそのようなタグがついています。マウスを説明文の上に持っていくと説明文が光り、ボタン1を押すとその説明のデモが始まります。
+ # ƥ
+ insert 'insert', "ƥwidgetɽ椹ΤƱΥᥫ˥ȤäơƥȤTclΥޥɤƤ뤳ȤǤޤˤꡢޥ䥭ܡɤΥTclΥޥɤ¹Ԥ褦ˤʤޤ㤨СΥХΥǥץˤĤƤʸˤϤΤ褦ʥĤƤޤޥʸξ˻äƤʸꡢܥ1򲡤ȤΥǥ⤬Ϥޤޤ
"
- insert('end', '1. キャンバス widget に作ることのできるアイテムの種類全てに関するサンプル。', (d1 = TkTextTag.new(t)) )
+ insert('end', '1. Х widget ˺뤳ȤΤǤ륢ƥμƤ˴ؤ륵ץ롣', (d1 = TkTextTag.new(t)) )
insert('end', "\n\n")
- insert('end', '2. 簡単な 2次元のプロット。データを表す点を動かすことができる。', (d2 = TkTextTag.new(t)) )
+ insert('end', '2. ñ 2ΥץåȡǡɽưȤǤ롣', (d2 = TkTextTag.new(t)) )
insert('end', "\n\n")
- insert('end', '3. テキストアイテムのアンカーと行揃え。',
+ insert('end', '3. ƥȥƥΥ󥫡ȹ·',
(d3 = TkTextTag.new(t)) )
insert('end', "\n\n")
- insert('end', '4. ラインアイテムのための矢印の頭の形のエディタ。',
+ insert('end', '4. 饤󥢥ƥΤƬηΥǥ',
(d4 = TkTextTag.new(t)) )
insert('end', "\n\n")
- insert('end', '5. タブストップを変更するための機能つきのルーラー。',
+ insert('end', '5. ֥ȥåפѹ뤿εǽĤΥ롼顼',
(d5 = TkTextTag.new(t)) )
insert('end', "\n\n")
insert('end',
- '6. キャンバスがどうやってスクロールするのかを示すグリッド。',
+ '6. Хɤäƥ뤹Τ򼨤åɡ',
(d6 = TkTextTag.new(t)) )
# binding
diff --git a/ext/tk/sample/demos-jp/bitmap.rb b/ext/tk/sample/demos-jp/bitmap.rb
index d84e9a5f09..1193e8de24 100644
--- a/ext/tk/sample/demos-jp/bitmap.rb
+++ b/ext/tk/sample/demos-jp/bitmap.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# bitmap widget demo (called by 'widget')
#
@@ -25,13 +25,13 @@ def bitmapRow(w,*args)
}
end
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($bitmap_demo) && $bitmap_demo
$bitmap_demo.destroy
$bitmap_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$bitmap_demo = TkToplevel.new {|w|
title("Bitmap Demonstration")
iconname("bitmap")
@@ -40,17 +40,17 @@ $bitmap_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($bitmap_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left',
- 'text'=>"このウィンドウには、Tk に組み込まれたすべてのビットマップが、それらの名前と共に表示されています。Tcl のスクリプト中では、それぞれの名前を用いて参照します。"){
+ 'text'=>"ΥɥˤϡTk Ȥ߹ޤ줿٤ƤΥӥåȥޥåפ̾ȶɽƤޤTcl ΥץǤϡ줾̾ѤƻȤޤ"){
pack('side'=>'top')
}
-# frame 生成
+# frame
$bitmap_buttons = TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $bitmap_demo
$bitmap_demo = nil
@@ -59,13 +59,13 @@ $bitmap_buttons = TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'bitmap'}
}.pack('side'=>'left', 'expand'=>'yes')
}
$bitmap_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# frame 設定
+# frame
TkFrame.new(base_frame){|f|
bitmapRow(f,'error','gray25','gray50','hourglass')
bitmapRow(f,'info','question','questhead','warning')
diff --git a/ext/tk/sample/demos-jp/button.rb b/ext/tk/sample/demos-jp/button.rb
index 301100b057..87ced45810 100644
--- a/ext/tk/sample/demos-jp/button.rb
+++ b/ext/tk/sample/demos-jp/button.rb
@@ -1,36 +1,36 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# button widget demo (called by 'widget')
#
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($button_demo) && $button_demo
$button_demo.destroy
$button_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$button_demo = TkToplevel.new {|w|
title("Button Demonstration")
iconname("button")
positionWindow(w)
}
-# label 生成
+# label
msg = TkLabel.new($button_demo) {
font $kanji_font
wraplength '4i'
justify 'left'
- text "ボタンをクリックすると、ボタンの背景色がそのボタンに書かれている色になります。ボタンからボタンへの移動はタブを押すことでも可能です。またスペースで実行することができます。"
+ text "ܥ򥯥åȡܥطʿΥܥ˽񤫤Ƥ뿧ˤʤޤܥ󤫤ܥؤΰưϥ֤򲡤ȤǤǽǤޤڡǼ¹Ԥ뤳ȤǤޤ"
}
msg.pack('side'=>'top')
-# frame 生成
+# frame
$button_buttons = Tk::Frame.new($button_demo) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $button_demo
$button_demo = nil
@@ -39,13 +39,13 @@ $button_buttons = Tk::Frame.new($button_demo) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'button'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# button 生成
+# button
TkButton.new($button_demo){
text "Peach Puff"
width 10
diff --git a/ext/tk/sample/demos-jp/check.rb b/ext/tk/sample/demos-jp/check.rb
index 422e898ec9..762b99778b 100644
--- a/ext/tk/sample/demos-jp/check.rb
+++ b/ext/tk/sample/demos-jp/check.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# checkbutton widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($check_demo) && $check_demo
$check_demo.destroy
$check_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$check_demo = TkToplevel.new {|w|
title("Checkbutton Demonstration")
iconname("check")
@@ -18,25 +18,25 @@ $check_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($check_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
msg = TkLabel.new(base_frame) {
font $font
wraplength '4i'
justify 'left'
- text "下には 3 つのチェックボタンが表示されています。クリックするとボタンの選択状態が変わり、Tcl 変数 ( TkVariable オブジェクトでアクセスできます ) にそのボタンの状態を示す値を設定します。現在の変数の値を見るには「変数参照」ボタンをクリックしてください。"
+ text "ˤ 3 ĤΥåܥɽƤޤåȥܥ֤ѤꡢTcl ѿ ( TkVariable ֥ȤǥǤޤ ) ˤΥܥξ֤򼨤ͤꤷޤߤѿͤ򸫤ˤϡѿȡץܥ򥯥åƤ"
}
msg.pack('side'=>'top')
-# 変数生成
+# ѿ
wipers = TkVariable.new(0)
brakes = TkVariable.new(0)
sober = TkVariable.new(0)
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $check_demo
$check_demo = nil
@@ -46,13 +46,13 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'check'}
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text '変数参照'
+ text 'ѿ'
command proc{
showVars(base_frame,
['wipers', wipers], ['brakes', brakes], ['sober', sober])
@@ -62,9 +62,9 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# checkbutton 生成
-[ TkCheckButton.new(base_frame, 'text'=>'ワイパー OK', 'variable'=>wipers),
- TkCheckButton.new(base_frame, 'text'=>'ブレーキ OK', 'variable'=>brakes),
- TkCheckButton.new(base_frame, 'text'=>'運転手 素面', 'variable'=>sober)
+# checkbutton
+[ TkCheckButton.new(base_frame, 'text'=>'磻ѡ OK', 'variable'=>wipers),
+ TkCheckButton.new(base_frame, 'text'=>'֥졼 OK', 'variable'=>brakes),
+ TkCheckButton.new(base_frame, 'text'=>'ž ', 'variable'=>sober)
].each{|w| w.relief('flat'); w.pack('side'=>'top', 'pady'=>2, 'anchor'=>'w')}
diff --git a/ext/tk/sample/demos-jp/check2.rb b/ext/tk/sample/demos-jp/check2.rb
index 558e588535..9f845183f3 100644
--- a/ext/tk/sample/demos-jp/check2.rb
+++ b/ext/tk/sample/demos-jp/check2.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# checkbutton widget demo2 (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($check2_demo) && $check2_demo
$check2_demo.destroy
$check2_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$check2_demo = TkToplevel.new {|w|
title("Checkbutton Demonstration 2")
iconname("check2")
@@ -18,37 +18,37 @@ $check2_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($check2_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
msg = TkLabel.new(base_frame) {
font $font
wraplength '4i'
justify 'left'
- text "下には4つのチェックボタンが表示されています。クリックするとボタンの選択状態が変わり、Tcl変数(TkVariableオブジェクトでアクセスできます)にそのボタンの状態を示す値を設定します。最初のボタンの状態は他の3つのボタンの状態にも依存して変化します。もし3つのボタンの一部だけにチェックが付けられている場合、最初のボタンはトライステート(3状態)モードでの表示を行います。現在の変数の値を見るには「変数参照」ボタンをクリックしてください。"
+ text "ˤϣĤΥåܥɽƤޤåȥܥ֤ѤꡢTclѿTkVariable֥ȤǥǤޤˤˤΥܥξ֤򼨤ͤꤷޤǽΥܥξ֤¾ΣĤΥܥξ֤ˤ¸Ѳޤ⤷ĤΥܥΰ˥åդƤ硢ǽΥܥϥȥ饤ơȡʣ֡˥⡼ɤǤɽԤޤߤѿͤ򸫤ˤϡѿȡץܥ򥯥åƤ"
}
msg.pack('side'=>'top')
-# 変数生成
+# ѿ
safety = TkVariable.new(0)
wipers = TkVariable.new(0)
brakes = TkVariable.new(0)
sober = TkVariable.new(0)
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkGrid(TkFrame.new(frame, :height=>2, :relief=>:sunken, :bd=>2),
:columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
TkGrid('x',
- TkButton.new(frame, :text=>'変数参照',
+ TkButton.new(frame, :text=>'ѿ',
:image=>$image['view'], :compound=>:left,
:command=>proc{
showVars($check2_demo,
['safety', safety], ['wipers', wipers],
['brakes', brakes], ['sober', sober])
}),
- TkButton.new(frame, :text=>'コード参照',
+ TkButton.new(frame, :text=>'ɻ',
:image=>$image['view'], :compound=>:left,
:command=>proc{showCode 'check2'}),
- TkButton.new(frame, :text=>'閉じる',
+ TkButton.new(frame, :text=>'Ĥ',
:image=>$image['delete'], :compound=>:left,
:command=>proc{
tmppath = $check2_demo
@@ -61,16 +61,16 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'bottom', 'fill'=>'x')
-# checkbutton 生成
-TkCheckButton.new(base_frame, :text=>'安全性検査', :variable=>safety,
+# checkbutton
+TkCheckButton.new(base_frame, :text=>'', :variable=>safety,
:relief=>:flat, :onvalue=>'all', :offvalue=>'none',
:tristatevalue=>'partial'){
pack('side'=>'top', 'pady'=>2, 'anchor'=>'w')
}
-[ TkCheckButton.new(base_frame, 'text'=>'ワイパー OK', 'variable'=>wipers),
- TkCheckButton.new(base_frame, 'text'=>'ブレーキ OK', 'variable'=>brakes),
- TkCheckButton.new(base_frame, 'text'=>'運転手 素面', 'variable'=>sober)
+[ TkCheckButton.new(base_frame, 'text'=>'磻ѡ OK', 'variable'=>wipers),
+ TkCheckButton.new(base_frame, 'text'=>'֥졼 OK', 'variable'=>brakes),
+ TkCheckButton.new(base_frame, 'text'=>'ž ', 'variable'=>sober)
].each{|w|
w.relief('flat')
w.pack('side'=>'top', 'padx'=>15, 'pady'=>2, 'anchor'=>'w')
diff --git a/ext/tk/sample/demos-jp/clrpick.rb b/ext/tk/sample/demos-jp/clrpick.rb
index df8c76a69d..c188723c5a 100644
--- a/ext/tk/sample/demos-jp/clrpick.rb
+++ b/ext/tk/sample/demos-jp/clrpick.rb
@@ -1,35 +1,35 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# widget demo prompts the user to select a color (called by 'widget')
#
# Note: don't support ttk_wrapper. work with standard widgets only.
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($clrpick_demo) && $clrpick_demo
$clrpick_demo.destroy
$clrpick_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$clrpick_demo = TkToplevel.new {|w|
title("Color Selection Dialogs")
iconname("colors")
positionWindow(w)
}
-# label 生成
+# label
#TkLabel.new($clrpick_demo,'font'=>$font,'wraplength'=>'4i','justify'=>'left',
Tk::Label.new($clrpick_demo,'font'=>$font,'wraplength'=>'4i','justify'=>'left',
- 'text'=>"以下のボタンを押して、このウィンドウ上にあるウィジェットの前景色と背景色を選択して下さい。").pack('side'=>'top')
+ 'text'=>"ʲΥܥ򲡤ơΥɥˤ륦åȤʿطʿ򤷤Ʋ").pack('side'=>'top')
-# frame 生成
+# frame
# TkFrame.new($clrpick_demo) {|frame|
Tk::Frame.new($clrpick_demo) {|frame|
# TkButton.new(frame) {
Tk::Button.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $clrpick_demo
$clrpick_demo = nil
@@ -39,21 +39,21 @@ Tk::Frame.new($clrpick_demo) {|frame|
# TkButton.new(frame) {
Tk::Button.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'clrpick'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# button 生成
-# TkButton.new($clrpick_demo, 'text'=>'背景色を設定 ...') {|b|
-Tk::Button.new($clrpick_demo, 'text'=>'背景色を設定 ...') {|b|
+# button
+# TkButton.new($clrpick_demo, 'text'=>'طʿ ...') {|b|
+Tk::Button.new($clrpick_demo, 'text'=>'طʿ ...') {|b|
command(proc{setColor $clrpick_demo, b, 'background',
['background', 'highlightbackground']})
pack('side'=>'top', 'anchor'=>'c', 'pady'=>'2m')
}
-# TkButton.new($clrpick_demo, 'text'=>'前景色を設定 ...') {|b|
-Tk::Button.new($clrpick_demo, 'text'=>'前景色を設定 ...') {|b|
+# TkButton.new($clrpick_demo, 'text'=>'ʿ ...') {|b|
+Tk::Button.new($clrpick_demo, 'text'=>'ʿ ...') {|b|
command(proc{setColor $clrpick_demo, b, 'foreground', ['foreground']})
pack('side'=>'top', 'anchor'=>'c', 'pady'=>'2m')
}
diff --git a/ext/tk/sample/demos-jp/colors.rb b/ext/tk/sample/demos-jp/colors.rb
index 5e5f47cb04..9fcf0333b5 100644
--- a/ext/tk/sample/demos-jp/colors.rb
+++ b/ext/tk/sample/demos-jp/colors.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# listbox widget demo 'colors' (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($colors_demo) && $colors_demo
$colors_demo.destroy
$colors_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$colors_demo = TkToplevel.new {|w|
title("Listbox Demonstration (colors)")
iconname("colors")
@@ -18,20 +18,20 @@ $colors_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($colors_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
msg = TkLabel.new(base_frame) {
font $font
wraplength '4i'
justify 'left'
- text "下には色の名前が入ったスクロールバー付のリストボックスが表示されています。リストをスクロールさせるのはスクロールバーでもできますし、リストボックスの中でマウスのボタン2(中ボタン)を押したままドラッグしてもできます。ある色をボタン1(左ボタン)でダブルクリックするとアプリケーション全体がその色になります。"
+ text "ˤϿ̾äСդΥꥹȥܥåɽƤޤꥹȤ򥹥뤵ΤϥСǤǤޤꥹȥܥåǥޥΥܥ2(ܥ)򲡤ޤޥɥåƤǤޤ뿧ܥ1(ܥ)ǥ֥륯åȥץꥱΤοˤʤޤ"
}
msg.pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $colors_demo
$colors_demo = nil
@@ -40,13 +40,13 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'colors'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# frame 生成
+# frame
colors_lbox = nil
TkFrame.new(base_frame, 'borderwidth'=>10) {|w|
s = TkScrollbar.new(w)
diff --git a/ext/tk/sample/demos-jp/combo.rb b/ext/tk/sample/demos-jp/combo.rb
index 8bbe36997d..2059662d48 100644
--- a/ext/tk/sample/demos-jp/combo.rb
+++ b/ext/tk/sample/demos-jp/combo.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# combo.rb --
#
@@ -21,16 +21,16 @@ base_frame = TkFrame.new($combo_demo).pack(:fill=>:both, :expand=>true)
Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'5i', :justify=>:left,
:text=><<EOL).pack(:side=>:top, :fill=>:x)
-以下では3種類のコンボボックスが表示されています.\
-最初のものは,エントリウィジェットと同じ様に,\
-ポイントしたり,クリックしたり,タイプしたりすることができます.\
-また,Returnキーを入力すれば現在の値がリストに追加され,\
-ドロップダウンリストから選択することができるようになります.\
-↓(下向き矢印)キーを押して表示されたリストから\
-矢印キーで他の候補を選んでReturnキーを押せば,値を選択できます.\
-2番目のコンボボックスは特定の値に固定されており,一切変更できません.\
-3番目のものはオーストラリアの都市のドロップダウンリストから\
-選択することだけが可能となっています.
+ʲǤ3ΥܥܥåɽƤޤ\
+ǽΤΤϡȥꥦåȤƱͤˡ\
+ݥȤꡤåꡤפꤹ뤳ȤǤޤ\
+ޤReturnϤиߤͤꥹȤɲä졤\
+ɥåץꥹȤ򤹤뤳ȤǤ褦ˤʤޤ\
+()򲡤ɽ줿ꥹȤ\
+¾θReturn򲡤СͤǤޤ\
+2ܤΥܥܥåͤ˸ꤵƤꡤѹǤޤ\
+3ܤΤΤϥȥꥢԻԤΥɥåץꥹȤ\
+򤹤뤳ȤǽȤʤäƤޤ
EOL
## variables
@@ -43,7 +43,7 @@ Ttk::Frame.new(base_frame) {|frame|
sep = Ttk::Separator.new(frame)
Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
TkGrid('x',
- Ttk::Button.new(frame, :text=>'変数参照',
+ Ttk::Button.new(frame, :text=>'ѿ',
:image=>$image['view'], :compound=>:left,
:command=>proc{
showVars(base_frame,
@@ -51,10 +51,10 @@ Ttk::Frame.new(base_frame) {|frame|
['secondVariable', secondValue],
['ozCity', ozCity])
}),
- Ttk::Button.new(frame, :text=>'コード参照',
+ Ttk::Button.new(frame, :text=>'ɻ',
:image=>$image['view'], :compound=>:left,
:command=>proc{showCode 'combo'}),
- Ttk::Button.new(frame, :text=>'閉じる',
+ Ttk::Button.new(frame, :text=>'Ĥ',
:image=>$image['delete'], :compound=>:left,
:command=>proc{
$combo_demo.destroy
@@ -68,13 +68,13 @@ Ttk::Frame.new(base_frame) {|frame|
frame = Ttk::Frame.new(base_frame).pack(:fill=>:both, :expand=>true)
australianCities = [
- 'キャンベラ', 'シドニー', 'メルボルン', 'パース', 'アデレード',
- 'ブリスベーン', 'ホバート', 'ダーウィン', 'アリス スプリングス'
+ '٥', 'ɥˡ', 'ܥ', 'ѡ', 'ǥ졼',
+ '֥ꥹ١', 'ۥС', '', 'ꥹ ץ󥰥'
]
-secondValue.value = '変更不可'
-ozCity.value = 'シドニー'
+secondValue.value = 'ѹԲ'
+ozCity.value = 'ɥˡ'
Tk.pack(Ttk::Labelframe.new(frame, :text=>'Fully Editable'){|f|
Ttk::Combobox.new(f, :textvariable=>firstValue){|b|
diff --git a/ext/tk/sample/demos-jp/cscroll.rb b/ext/tk/sample/demos-jp/cscroll.rb
index e993326aa9..0a31f28b5e 100644
--- a/ext/tk/sample/demos-jp/cscroll.rb
+++ b/ext/tk/sample/demos-jp/cscroll.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# simple scrollable canvas widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($cscroll_demo) && $cscroll_demo
$cscroll_demo.destroy
$cscroll_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$cscroll_demo = TkToplevel.new {|w|
title("Scrollable Canvas Demonstration")
iconname("cscroll")
@@ -18,17 +18,17 @@ $cscroll_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($cscroll_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'4i',
- 'justify'=>'left', 'text'=>"このウィンドウにはスクロールバーやマウスのボタン2 でスクロールできるキャンバス widget が表示されています。四角の上でボタン1 をクリックすると、そのインデックスが標準出力に出力されます。"){
+ 'justify'=>'left', 'text'=>"ΥɥˤϥСޥΥܥ2 ǥǤ륭Х widget ɽƤޤͳѤξǥܥ1 򥯥åȡΥǥåɸϤ˽Ϥޤ"){
pack('side'=>'top')
}
-# frame 生成
+# frame
$cscroll_buttons = TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $cscroll_demo
$cscroll_demo = nil
@@ -37,13 +37,13 @@ $cscroll_buttons = TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'cscroll'}
}.pack('side'=>'left', 'expand'=>'yes')
}
$cscroll_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# frame 設定
+# frame
unless $tk_version =~ /^4\.[01]/
$cscroll_grid = TkFrame.new(base_frame) {
pack('expand'=>'yes', 'fill'=>'both', 'padx'=>1, 'pady'=>1)
@@ -52,7 +52,7 @@ unless $tk_version =~ /^4\.[01]/
TkGrid.columnconfigure($cscroll_grid, 0, 'weight'=>1, 'minsize'=>0)
end
-# canvas 設定
+# canvas
$cscroll_canvas = TkCanvas.new(base_frame,
'relief'=>'sunken', 'borderwidth'=>2,
'scrollregion'=>['-11c', '-11c', '50c', '20c']
diff --git a/ext/tk/sample/demos-jp/ctext.rb b/ext/tk/sample/demos-jp/ctext.rb
index bb354c490e..70c1cad1a7 100644
--- a/ext/tk/sample/demos-jp/ctext.rb
+++ b/ext/tk/sample/demos-jp/ctext.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# Canvas Text widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($ctext_demo) && $ctext_demo
$ctext_demo.destroy
$ctext_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$ctext_demo = TkToplevel.new {|w|
title("Canvas Text Demonstration")
iconname("Text")
@@ -18,23 +18,23 @@ $ctext_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($ctext_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'5i', 'justify'=>'left',
- 'text'=>"このウィンドウにはキャンバスwidgetのテキスト機能をデモするためのテキスト文字列が表示されています。マウスを四角の中に持っていき、クリックすると位置ぎめ用の点からの相対位置を変えたり、行揃えを変えたりすることができます。また以下のような編集のための簡単なバインディングをサポートしています。
+ 'text'=>"ΥɥˤϥХwidgetΥƥȵǽǥ⤹뤿ΥƥʸɽƤޤޥͳѤ˻äƤåȰ֤Ѥа֤Ѥꡢ·Ѥꤹ뤳ȤǤޤޤʲΤ褦ԽΤδñʥХǥ󥰤򥵥ݡȤƤޤ
- 1. マウスを持っていき、クリックし、入力できます。
- 2. ボタン1で選択できます。
- 3. マウスの位置にボタン2で選択したテキストをコピーできます。
- 4.バックスペースをコントロール-Hで挿入カーソルの直前の文字を削除します。
- 5. Deleteキーは挿入カーソルの直後の文字を削除します。"){
+ 1. ޥäƤåϤǤޤ
+ 2. ܥ1Ǥޤ
+ 3. ޥΰ֤˥ܥ2򤷤ƥȤ򥳥ԡǤޤ
+ 4.Хåڡ򥳥ȥ-Hľʸޤ
+ 5. Deleteľʸޤ"){
pack('side'=>'top')
}
-# frame 生成
+# frame
$ctext_buttons = TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $ctext_demo
$ctext_demo = nil
@@ -43,30 +43,30 @@ $ctext_buttons = TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'ctext'}
}.pack('side'=>'left', 'expand'=>'yes')
}
$ctext_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# canvas 生成
+# canvas
$ctext_canvas = TkCanvas.new(base_frame, 'relief'=>'flat',
'borderwidth'=>0, 'width'=>500, 'height'=>350)
$ctext_canvas.pack('side'=>'top', 'expand'=>'yes', 'fill'=>'both')
-# font 設定
+# font
if $tk_version =~ /^4.*/
textFont = '-*-Helvetica-Medium-R-Normal--*-240-*-*-*-*-*-*'
else
textFont = 'Helvetica 24'
end
-# canvas 設定
+# canvas
TkcRectangle.new($ctext_canvas, 245, 195, 255, 205,
'outline'=>'black', 'fill'=>'red')
ctag_text_param = {
- 'text'=>"これはキャンバスwidgetのテキスト機能をデモするための文字列です。\n上で述べたような編集を可能とするためのバインディングを施しています。",
+ 'text'=>"ϥХwidgetΥƥȵǽǥ⤹뤿ʸǤ\nǽҤ٤褦ԽǽȤ뤿ΥХǥ󥰤ܤƤޤ",
'width'=>440, 'anchor'=>'n', 'justify'=>'left'
}
if $tk_version =~ /^4.*/
diff --git a/ext/tk/sample/demos-jp/dialog1.rb b/ext/tk/sample/demos-jp/dialog1.rb
index e50c9071e5..07e50306ab 100644
--- a/ext/tk/sample/demos-jp/dialog1.rb
+++ b/ext/tk/sample/demos-jp/dialog1.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# a dialog box with a local grab (called by 'widget')
#
@@ -11,7 +11,7 @@ class TkDialog_Demo1 < TkDialog
end
def message
- 'モーダルダイアログボックスです。Tk の "grab" コマンドを使用してダイアログボックスで「ローカルグラブ」しています。下のいずれかのボタンを実行することによって、このダイアログに答えるまで、このグラブによってアプリケーションの他のウィンドウでは、ポインタ関係のイベントを受け取ることができなくなっています。'
+ '⡼ܥåǤTk "grab" ޥɤѤƥܥåǡ֥륰֡פƤޤΤ줫Υܥ¹Ԥ뤳ȤˤäơΥޤǡΥ֤ˤäƥץꥱ¾ΥɥǤϡݥ󥿴طΥ٥Ȥ뤳ȤǤʤʤäƤޤ'
end
def bitmap
@@ -23,17 +23,17 @@ class TkDialog_Demo1 < TkDialog
end
def buttons
-# "了解 キャンセル コード参照"
- ["了解", "キャンセル", "コード参照"]
+# "λ 󥻥 ɻ"
+ ["λ", "󥻥", "ɻ"]
end
end
ret = TkDialog_Demo1.new('message_config'=>{'wraplength'=>'4i'}).value
case ret
when 0
- print "あなたは「了解」を押しましたね。\n"
+ print "ʤϡλפ򲡤ޤ͡\n"
when 1
- print "あなたは「キャンセル」を押しましたね。\n"
+ print "ʤϡ֥󥻥פ򲡤ޤ͡\n"
when 2
showCode 'dialog1'
end
diff --git a/ext/tk/sample/demos-jp/dialog2.rb b/ext/tk/sample/demos-jp/dialog2.rb
index 3e7d9619a4..f747f8d6a8 100644
--- a/ext/tk/sample/demos-jp/dialog2.rb
+++ b/ext/tk/sample/demos-jp/dialog2.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# a dialog box with a global grab (called by 'widget')
#
@@ -11,7 +11,7 @@ class TkDialog_Demo2 < TkDialog
end
def message
- 'このダイアログボックスはグローバルグラブを使用しています。下のボタンを実行するまで、ディスプレイ上のいかなるものとも対話できません。グローバルグラブを使用することは、まず良い考えではありません。どうしても必要になるまで使おうと思わないで下さい。'
+ 'ΥܥåϥХ륰֤ѤƤޤΥܥ¹Ԥޤǡǥץ쥤ΤʤΤȤäǤޤ󡣥Х륰֤Ѥ뤳ȤϡޤɤͤǤϤޤ󡣤ɤƤɬפˤʤޤǻȤȻפʤDz'
end
def bitmap
@@ -23,8 +23,8 @@ class TkDialog_Demo2 < TkDialog
end
def buttons
-# "了解 キャンセル コード参照"
- ["了解", "キャンセル", "コード参照"]
+# "λ 󥻥 ɻ"
+ ["λ", "󥻥", "ɻ"]
end
end
@@ -34,9 +34,9 @@ ret = TkDialog_Demo2.new('message_config'=>{'wraplength'=>'4i'},
}).value
case ret
when 0
- print "あなたは「了解」を押しましたね。\n"
+ print "ʤϡλפ򲡤ޤ͡\n"
when 1
- print "あなたは「キャンセル」を押しましたね。\n"
+ print "ʤϡ֥󥻥פ򲡤ޤ͡\n"
when 2
showCode 'dialog2'
end
diff --git a/ext/tk/sample/demos-jp/entry1.rb b/ext/tk/sample/demos-jp/entry1.rb
index 9be677d12d..eb71e87aec 100644
--- a/ext/tk/sample/demos-jp/entry1.rb
+++ b/ext/tk/sample/demos-jp/entry1.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# entry (no scrollbars) widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($entry1_demo) && $entry1_demo
$entry1_demo.destroy
$entry1_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$entry1_demo = TkToplevel.new {|w|
title("Entry Demonstration (no scrollbars)")
iconname("entry1")
@@ -18,20 +18,20 @@ $entry1_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($entry1_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
msg = TkLabel.new(base_frame) {
font $font
wraplength '5i'
justify 'left'
- text "3種類の異なるエントリが表示されています。文字を入力するにはポインタを持って行き、クリックしてからタイプしてください。標準的なMotifの編集機能が、Emacsのキーバインドとともに、サポートされています。例えば、バックスペースとコントロール-Hはカーソルの左の文字を削除し、デリートキーとコントロール-Dはカーソルの右側の文字を削除します。長過ぎてウィンドウに入り切らないものは、マウスのボタン2を押したままドラッグすることでスクロールさせることができます。日本語を入力するのはコントロール-バックスラッシュです。kinput2が動いていれば入力することができます。"
+ text "3ΰۤʤ륨ȥ꤬ɽƤޤʸϤˤϥݥ󥿤äƹԤåƤ饿פƤɸŪMotifԽǽEmacsΥХɤȤȤˡݡȤƤޤ㤨СХåڡȥȥ-Hϥκʸǥ꡼ȥȥȥ-Dϥα¦ʸޤĹ᤮ƥɥڤʤΤϡޥΥܥ2򲡤ޤޥɥå뤳Ȥǥ뤵뤳ȤǤޤܸϤΤϥȥ-ХååǤkinput2ưƤϤ뤳ȤǤޤ"
}
msg.pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $entry1_demo
$entry1_demo = nil
@@ -40,21 +40,21 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'entry1'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# entry 生成
+# entry
e1 = TkEntry.new(base_frame, 'relief'=>'sunken')
e2 = TkEntry.new(base_frame, 'relief'=>'sunken')
e3 = TkEntry.new(base_frame, 'relief'=>'sunken')
[e1,e2,e3].each{|w| w.pack('side'=>'top', 'padx'=>10, 'pady'=>5, 'fill'=>'x')}
-# 初期値挿入
-e1.insert(0, '初期値')
-e2.insert('end', "このエントリには長い文字列が入っていて、")
-e2.insert('end', "長すぎてウィンドウには入り切らないので、")
-e2.insert('end', "実際の所終りまで見るにはスクロールさせなければ")
-e2.insert('end', "ならないでしょう。")
+#
+e1.insert(0, '')
+e2.insert('end', "ΥȥˤĹʸäƤơ")
+e2.insert('end', "ĹƥɥˤڤʤΤǡ")
+e2.insert('end', "ºݤν꽪ޤǸˤϥ뤵ʤ")
+e2.insert('end', "ʤʤǤ礦")
diff --git a/ext/tk/sample/demos-jp/entry2.rb b/ext/tk/sample/demos-jp/entry2.rb
index 5476d24ade..b5187ab508 100644
--- a/ext/tk/sample/demos-jp/entry2.rb
+++ b/ext/tk/sample/demos-jp/entry2.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# entry (with scrollbars) widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($entry2_demo) && $entry2_demo
$entry2_demo.destroy
$entry2_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$entry2_demo = TkToplevel.new {|w|
title("Entry Demonstration (with scrollbars)")
iconname("entry2")
@@ -18,20 +18,20 @@ $entry2_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($entry2_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
msg = TkLabel.new(base_frame) {
font $font
wraplength '5i'
justify 'left'
- text "3種類の異なるエントリが各々スクロールバー付で表示されています。文字を入力するにはポインタを持って行き、クリックしてからタイプしてください。標準的なMotifの編集機能が、Emacsのキーバインドとともに、サポートされています。例えば、バックスペースとコントロール-Hはカーソルの左の文字を削除し、デリートキーとコントロール-Dはカーソルの右側の文字を削除します。長過ぎてウィンドウに入り切らないものは、マウスのボタン2を押したままドラッグすることでスクロールさせることができます。日本語を入力するのはコントロール-バックスラッシュです。kinput2が動いていれば入力することができます。"
+ text "3ΰۤʤ륨ȥ꤬ơСդɽƤޤʸϤˤϥݥ󥿤äƹԤåƤ饿פƤɸŪMotifԽǽEmacsΥХɤȤȤˡݡȤƤޤ㤨СХåڡȥȥ-Hϥκʸǥ꡼ȥȥȥ-Dϥα¦ʸޤĹ᤮ƥɥڤʤΤϡޥΥܥ2򲡤ޤޥɥå뤳Ȥǥ뤵뤳ȤǤޤܸϤΤϥȥ-ХååǤkinput2ưƤϤ뤳ȤǤޤ"
}
msg.pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $entry2_demo
$entry2_demo = nil
@@ -40,12 +40,12 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'entry2'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# frame 生成
+# frame
TkFrame.new(base_frame, 'borderwidth'=>10) {|w|
# entry 1
s1 = TkScrollbar.new(w, 'relief'=>'sunken', 'orient'=>'horiz')
@@ -80,12 +80,12 @@ TkFrame.new(base_frame, 'borderwidth'=>10) {|w|
e3.pack('side'=>'top', 'fill'=>'x')
s3.pack('side'=>'top', 'fill'=>'x')
- # 初期値挿入
- e1.insert(0, '初期値')
- e2.insert('end', "このエントリには長い文字列が入っていて、")
- e2.insert('end', "長すぎてウィンドウには入り切らないので、")
- e2.insert('end', "実際の所終りまで見るにはスクロールさせなければ")
- e2.insert('end', "ならないでしょう。")
+ #
+ e1.insert(0, '')
+ e2.insert('end', "ΥȥˤĹʸäƤơ")
+ e2.insert('end', "ĹƥɥˤڤʤΤǡ")
+ e2.insert('end', "ºݤν꽪ޤǸˤϥ뤵ʤ")
+ e2.insert('end', "ʤʤǤ礦")
}.pack('side'=>'top', 'fill'=>'x', 'expand'=>'yes')
diff --git a/ext/tk/sample/demos-jp/entry3.rb b/ext/tk/sample/demos-jp/entry3.rb
index 59c698de62..2728de0b93 100644
--- a/ext/tk/sample/demos-jp/entry3.rb
+++ b/ext/tk/sample/demos-jp/entry3.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
# entry3.rb --
#
# This demonstration script creates several entry widgets whose
@@ -23,33 +23,33 @@ base_frame = TkFrame.new($entry3_demo).pack(:fill=>:both, :expand=>true)
TkLabel.new(base_frame,
:font=>$font, :wraplength=>'5i', :justify=>:left,
:text=><<EOL).pack(:side=>:top)
-以下には4種類のエントリボックスが表示されています.各エントリボックスは,\
-マウスクリックで選択し文字を打ち込むことが可能ですが,それぞれがどのような\
-入力を受け付けることができるかには制約が設けられています.\
-一つめのエントリボックスは整数と見なされる文字列か入力文字がない空の状態か\
-の場合だけを受け付け,問題がある場合はエントリボックスが点滅します\
-(フォーカスが去る時にチェックされます).\
-二つめのエントリボックスは,入力された文字列の長さが\
-10文字未満の場合だけを受け付け,制限を越えて書き込もうとしたときには\
-ベルを鳴らして知らせます.\
-三つめは米国の電話番号を受け付けるエントリボックスです.\
-アルファベットは,電話機のダイヤル上で対応づけられている数字に変換されます.\
-不適切な文字が入力されたり数字以外の文字の位置に数字を入力しようとしたり\
-した場合には警告のベルが鳴ります.\
-四つめのエントリボックスは,8文字までの入力を受け付ける\
-パスワードフィールドです(8文字以上は特に警告を出すことなく無視されます).\
-入力された文字はアスタリスク記号に置き換えて表示されます.
+ʲˤϣΥȥܥåɽƤޤƥȥܥåϡ\
+ޥåʸǤळȤǽǤ줾줬ɤΤ褦\
+Ϥդ뤳ȤǤ뤫ˤߤƤޤ\
+ĤΥȥܥåȸʤʸʸʤξ֤\
+ξդ꤬ϥȥܥåǤޤ\
+ʥե˥åޤˡ\
+ĤΥȥܥåϡϤ줿ʸĹ\
+ʸ̤ξդ¤ۤƽ񤭹⤦ȤȤˤ\
+٥Ĥ餷Τ餻ޤ\
+Ĥƹֹդ륨ȥܥåǤ\
+ե٥åȤϡõΥбŤƤѴޤ\
+ŬڤʸϤ줿ʳʸΰ֤˿Ϥ褦Ȥ\
+ˤϷٹΥ٥뤬Ĥޤ\
+ͤĤΥȥܥåϡʸޤǤϤդ\
+ѥɥեɤǤʣʸʾä˷ٹФȤʤ̵뤵ޤˡ\
+Ϥ줿ʸϥꥹ֤ɽޤ
EOL
TkFrame.new(base_frame){|f|
pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
- TkButton.new(f, :text=>'閉じる', :width=>15, :command=>proc{
+ TkButton.new(f, :text=>'Ĥ', :width=>15, :command=>proc{
$entry3_demo.destroy
$entry3_demo = nil
}).pack(:side=>:left, :expand=>true)
- TkButton.new(f, :text=>'コード参照', :width=>15, :command=>proc{
+ TkButton.new(f, :text=>'ɻ', :width=>15, :command=>proc{
showCode 'entry3'
}).pack(:side=>:left, :expand=>true)
}
@@ -90,7 +90,7 @@ def focusAndFlash(widget, fg, bg, count=5)
widget.focus(true)
end
-l1 = TkLabelFrame.new(base_frame, :text=>"整数エントリ")
+l1 = TkLabelFrame.new(base_frame, :text=>"ȥ")
TkEntry.new(l1, :validate=>:focus,
:vcmd=>[
proc{|s| s == '' || /^[+-]?\d+$/ =~ s }, '%P'
@@ -101,7 +101,7 @@ TkEntry.new(l1, :validate=>:focus,
pack(:fill=>:x, :expand=>true, :padx=>'1m', :pady=>'1m')
}
-l2 = TkLabelFrame.new(base_frame, :text=>"長さ制約付きエントリ")
+l2 = TkLabelFrame.new(base_frame, :text=>"Ĺդȥ")
TkEntry.new(l2, :validate=>:key, :invcmd=>proc{Tk.bell},
:vcmd=>[proc{|s| s.length < 10}, '%P']
).pack(:fill=>:x, :expand=>true, :padx=>'1m', :pady=>'1m')
@@ -190,7 +190,7 @@ def validatePhoneChange(widget, vmode, idx, char)
end
-l3 = TkLabelFrame.new(base_frame, :text=>"米国電話番号エントリ")
+l3 = TkLabelFrame.new(base_frame, :text=>"ƹֹ楨ȥ")
TkEntry.new(l3, :validate=>:key, :invcmd=>proc{Tk.bell},
:textvariable=>entry3content,
:vcmd=>[
@@ -209,7 +209,7 @@ TkEntry.new(l3, :validate=>:key, :invcmd=>proc{Tk.bell},
pack(:fill=>:x, :expand=>true, :padx=>'1m', :pady=>'1m')
}
-l4 = TkLabelFrame.new(base_frame, :text=>"パスワードエントリ")
+l4 = TkLabelFrame.new(base_frame, :text=>"ѥɥȥ")
TkEntry.new(l4, :validate=>:key, :show=>'*',
:vcmd=>[
proc{|s| s.length <= 8},
diff --git a/ext/tk/sample/demos-jp/filebox.rb b/ext/tk/sample/demos-jp/filebox.rb
index fc014bc282..ffe5fbc5c6 100644
--- a/ext/tk/sample/demos-jp/filebox.rb
+++ b/ext/tk/sample/demos-jp/filebox.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# widget demo prompts the user to select a file (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($filebox_demo) && $entry2_demo
$filebox_demo.destroy
$filebox_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$filebox_demo = TkToplevel.new {|w|
title("File Selection Dialogs")
iconname("filebox")
@@ -18,15 +18,15 @@ $filebox_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($filebox_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left',
- 'text'=>"エントリにファイル名を直接入力するか、\"Browse\" ボタンを押してファイル選択ダイアログからファイル名を選んで下さい。").pack('side'=>'top')
+ 'text'=>"ȥ˥ե̾ľϤ뤫\"Browse\" ܥ򲡤ƥեե̾Dz").pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $filebox_demo
$filebox_demo = nil
@@ -35,15 +35,15 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'filebox'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# frame 生成
-['開く', '保存'].each{|type|
+# frame
+['', '¸'].each{|type|
TkFrame.new(base_frame) {|f|
- TkLabel.new(f, 'text'=>"ファイルを#{type}: ", 'anchor'=>'e')\
+ TkLabel.new(f, 'text'=>"ե#{type}: ", 'anchor'=>'e')\
.pack('side'=>'left')
TkEntry.new(f, 'width'=>20) {|e|
@@ -61,7 +61,7 @@ TkFrame.new(base_frame) {|frame|
$tk_strictMotif = TkVarAccess.new('tk_strictMotif')
if ($tk_platform['platform'] == 'unix')
TkCheckButton.new(base_frame,
- 'text'=>'Motifスタイルのダイアログを用いる',
+ 'text'=>'MotifΥѤ',
'variable'=>$tk_strictMotif,
'onvalue'=>1, 'offvalue'=>0 ).pack('anchor'=>'c')
end
@@ -83,7 +83,7 @@ def fileDialog(w,ent,operation)
['All files', '*' ]
]
- if operation == '開く'
+ if operation == ''
file = Tk.getOpenFile('filetypes'=>types, 'parent'=>w)
else
file = Tk.getSaveFile('filetypes'=>types, 'parent'=>w,
diff --git a/ext/tk/sample/demos-jp/floor.rb b/ext/tk/sample/demos-jp/floor.rb
index 5101a026bb..78cc23a245 100644
--- a/ext/tk/sample/demos-jp/floor.rb
+++ b/ext/tk/sample/demos-jp/floor.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# floorDisplay widget demo (called by 'widget')
#
@@ -50,7 +50,7 @@ def floorDisplay(w,active)
# Create items for the room entry and its label.
TkcWindow.new(w, 600, 100, 'anchor'=>'w', 'window'=>$floor_entry)
- TkcText.new(w, 600, 100, 'anchor'=>'e', 'text'=>"部屋番号: ")
+ TkcText.new(w, 600, 100, 'anchor'=>'e', 'text'=>"ֹ: ")
w['scrollregion'] = w.bbox('all')
end
@@ -1572,13 +1572,13 @@ end
# Below is the "main program" that creates the floorplan demonstration.
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($floor_demo) && $floor_demo
$floor_demo.destroy
$floor_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$floor_demo = TkToplevel.new {|w|
title("Floorplan Canvas Demonstration")
iconname("Floorplan")
@@ -1589,17 +1589,17 @@ $floor_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($floor_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'8i', 'justify'=>'left',
- 'text'=>"このウィンドウにはディジタルエクイップメント社のウェスタンリサーチラボラトリ (DECWRL) の間取りが書かれたキャンバス widget が入っています。これは 3階建てで、常にそのうちの1階分が選択、つまりその間取りが表示されるようになっています。ある階を選択するには、その上でマウスの左ボタンをクリックしてください。マウスが選択されている階の上を動くと、その下にある部屋の色が変わり、部屋番号が「部屋番号:」エントリに表示されます。また、エントリに部屋番号を書くとその部屋の色が変わります。"){
+ 'text'=>"Υɥˤϥǥ륨åץȼҤΥꥵܥȥ (DECWRL) δּ꤬񤫤줿Х widget äƤޤ 3ƤǡˤΤ1ʬ򡢤Ĥޤꤽδּ꤬ɽ褦ˤʤäƤޤ볬򤹤ˤϡξǥޥκܥ򥯥åƤޥ򤵤Ƥ볬ξưȡβˤοѤꡢֹ椬ֹ:ץȥɽޤޤȥֹ񤯤ȤοѤޤ"){
pack('side'=>'top')
}
-# frame 生成
+# frame
$floor_buttons = TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $floor_demo
$floor_demo = nil
@@ -1608,17 +1608,17 @@ $floor_buttons = TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'floor'}
}.pack('side'=>'left', 'expand'=>'yes')
}
$floor_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# 変数設定
+# ѿ
$floorLabels = {}
$floorItems = {}
-# canvas 設定
+# canvas
if $tk_version =~ /^4\.[01]/
$floor_canvas_frame = TkFrame.new(base_frame,'bd'=>2,'relief'=>'sunken',
'highlightthickness'=>2)
diff --git a/ext/tk/sample/demos-jp/floor2.rb b/ext/tk/sample/demos-jp/floor2.rb
index 7ca705c7bd..92ace6b51a 100644
--- a/ext/tk/sample/demos-jp/floor2.rb
+++ b/ext/tk/sample/demos-jp/floor2.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# floorDisplay widget demo 2 (called by 'widget')
#
@@ -50,7 +50,7 @@ def floorDisplay2(w,active)
# Create items for the room entry and its label.
w.create(TkcWindow, 600, 100, 'anchor'=>'w', 'window'=>$floor2_entry)
- w.create(TkcText, 600, 100, 'anchor'=>'e', 'text'=>"部屋番号: ")
+ w.create(TkcText, 600, 100, 'anchor'=>'e', 'text'=>"ֹ: ")
w['scrollregion'] = w.bbox('all')
end
@@ -1572,13 +1572,13 @@ end
# Below is the "main program" that creates the floorplan demonstration.
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($floor2_demo) && $floor2_demo
$floor2_demo.destroy
$floor2_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$floor2_demo = TkToplevel.new {|w|
title("Floorplan Canvas Demonstration 2")
iconname("Floorplan2")
@@ -1589,17 +1589,17 @@ $floor2_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($floor2_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'8i', 'justify'=>'left',
- 'text'=>"このウィンドウにはディジタルエクイップメント社のウェスタンリサーチラボラトリ (DECWRL) の間取りが書かれたキャンバス widget が入っています。これは 3階建てで、常にそのうちの1階分が選択、つまりその間取りが表示されるようになっています。ある階を選択するには、その上でマウスの左ボタンをクリックしてください。マウスが選択されている階の上を動くと、その下にある部屋の色が変わり、部屋番号が「部屋番号:」エントリに表示されます。また、エントリに部屋番号を書くとその部屋の色が変わります。"){
+ 'text'=>"Υɥˤϥǥ륨åץȼҤΥꥵܥȥ (DECWRL) δּ꤬񤫤줿Х widget äƤޤ 3ƤǡˤΤ1ʬ򡢤Ĥޤꤽδּ꤬ɽ褦ˤʤäƤޤ볬򤹤ˤϡξǥޥκܥ򥯥åƤޥ򤵤Ƥ볬ξưȡβˤοѤꡢֹ椬ֹ:ץȥɽޤޤȥֹ񤯤ȤοѤޤ"){
pack('side'=>'top')
}
-# frame 生成
+# frame
$floor2_buttons = TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $floor2_demo
$floor2_demo = nil
@@ -1608,17 +1608,17 @@ $floor2_buttons = TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'floor2'}
}.pack('side'=>'left', 'expand'=>'yes')
}
$floor2_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# 変数設定
+# ѿ
$floorLabels2 = {}
$floorItems2 = {}
-# canvas 設定
+# canvas
if $tk_version =~ /^4\.[01]/
$floor2_canvas_frame = TkFrame.new(base_frame,'bd'=>2,'relief'=>'sunken',
'highlightthickness'=>2)
diff --git a/ext/tk/sample/demos-jp/form.rb b/ext/tk/sample/demos-jp/form.rb
index 000fcb5091..84ed94de88 100644
--- a/ext/tk/sample/demos-jp/form.rb
+++ b/ext/tk/sample/demos-jp/form.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# form widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($form_demo) && $form_demo
$form_demo.destroy
$form_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$form_demo = TkToplevel.new {|w|
title("Form Demonstration")
iconname("form")
@@ -18,20 +18,20 @@ $form_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($form_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
msg = TkLabel.new(base_frame) {
font $font
wraplength '4i'
justify 'left'
- text "このウィンドウは簡単なフォーム入力用になっていて、さまざまなエントリに入力ができます。タブでエントリの切替えができます。"
+ text "ΥɥϴñʥեѤˤʤäƤơޤޤʥȥϤǤޤ֤ǥȥؤǤޤ"
}
msg.pack('side'=>'top', 'fill'=>'x')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $form_demo
$form_demo = nil
@@ -40,12 +40,12 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'form'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# entry 生成
+# entry
form_data = []
(1..5).each{|i|
f = TkFrame.new(base_frame, 'bd'=>2)
@@ -56,10 +56,10 @@ form_data = []
form_data[i] = {'frame'=>f, 'entry'=>e, 'label'=>l}
}
-# 文字列設定
-form_data[1]['label'].text('名前:')
-form_data[2]['label'].text('住所:')
-form_data[5]['label'].text('電話:')
+# ʸ
+form_data[1]['label'].text('̾:')
+form_data[2]['label'].text(':')
+form_data[5]['label'].text(':')
# pack
(1..5).each{|i| form_data[i]['frame'].pack('side'=>'top', 'fill'=>'x')}
diff --git a/ext/tk/sample/demos-jp/goldberg.rb b/ext/tk/sample/demos-jp/goldberg.rb
index fc38d877db..ea521b82ec 100644
--- a/ext/tk/sample/demos-jp/goldberg.rb
+++ b/ext/tk/sample/demos-jp/goldberg.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# Ruby/Tk Goldverg demo (called by 'widget')
#
@@ -63,7 +63,7 @@ msg = TkLabel.new($goldberg_demo) {
font 'Arial 10'
wraplength '4i'
justify 'left'
- text "これは、あなたが自分のアニメーションをいかに入り組んだものにできるかを示すというだけのためのデモです。ボールをクリックすれば物が動き始めます!\n\n\"Man will always find a difficult means to perform a simple task\"\n - Rube Goldberg"
+ text "ϡʤʬΥ˥᡼򤤤ȤΤˤǤ뤫򼨤ȤΤΥǥǤܡ򥯥åʪưϤޤ\n\n\"Man will always find a difficult means to perform a simple task\"\n - Rube Goldberg"
}
msg.pack('side'=>'top')
=end
@@ -72,7 +72,7 @@ msg.pack('side'=>'top')
# frame
TkFrame.new($goldberg_demo) {|frame|
TkButton.new(frame) {
- text '閉じる'
+ text 'Ĥ'
command proc{
tmppath = $goldberg_demo
$goldberg_demo = nil
@@ -81,7 +81,7 @@ TkFrame.new($goldberg_demo) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'goldberg'}
}.pack('side'=>'left', 'expand'=>'yes')
@@ -99,7 +99,7 @@ class TkGoldberg_Demo
@S['speed'] = TkVariable.new(5)
@S['cnt'] = TkVariable.new(0)
# @S['message'] = TkVariable.new("\\nWelcome\\nto\\nRuby/Tk")
- @S['message'] = TkVariable.new("\\n ようこそ!\\nRuby/Tk\\nの\\n世界へ")
+ @S['message'] = TkVariable.new("\\n 褦\\nRuby/Tk\\n\\n")
@S['pause'] = TkVariable.new
@S['details'] = TkVariable.new(true)
@@ -184,7 +184,7 @@ class TkGoldberg_Demo
font 'Arial 10'
wraplength 600
justify 'left'
- text "これは、あなたが自分のアニメーションをいかに入り組んだものにできるかを示すというだけのためのデモです。ボールをクリックすれば物が動き始めます!\n\"Man will always find a difficult means to perform a simple task\" - Rube Goldberg"
+ text "ϡʤʬΥ˥᡼򤤤ȤΤˤǤ뤫򼨤ȤΤΥǥǤܡ򥯥åʪưϤޤ\n\"Man will always find a difficult means to perform a simple task\" - Rube Goldberg"
}
msg.place(:in=>@canvas, :relx=>0, :rely=>0, :anchor=>:nw)
@@ -192,7 +192,7 @@ class TkGoldberg_Demo
# TkButton.new(frame, :bg=>@C['bg'], :activebackground=>@C['bg']) {
Tk::Button.new(frame, :bg=>@C['bg'], :activebackground=>@C['bg']) {
- text '閉じる'
+ text 'Ĥ'
command proc{
tmppath = $goldberg_demo
$goldberg_demo = nil
@@ -202,7 +202,7 @@ class TkGoldberg_Demo
# TkButton.new(frame, :bg=>@C['bg'], :activebackground=>@C['bg']) {
Tk::Button.new(frame, :bg=>@C['bg'], :activebackground=>@C['bg']) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'goldberg'}
}.pack('side'=>'left', 'padx'=>5)
@@ -420,7 +420,7 @@ class TkGoldberg_Demo
color = @C['0']
TkcText.new(@canvas,
# [579, 119], :text=>'START HERE!',
- [558, 119], :text=>'ここからスタート!',
+ [558, 119], :text=>'饹ȡ',
:fill=>color, :anchor=>:w,
:tag=>'I0', :font=>['Times Roman', 12, :italic, :bold])
TkcLine.new(@canvas, [719, 119, 763, 119], :tag=>'I0', :fill=>color,
@@ -1792,7 +1792,7 @@ class TkGoldberg_Demo
@canvas.delete('I24', 'I26')
TkcText.new(@canvas, 430, 735, :anchor=>:s, :tag=>'I26',
#:text=>'click to continue',
- :text=>'クリックでリセットします',
+ :text=>'åǥꥻåȤޤ',
:font=>['Times Roman', 20, :bold])
@canvas.bind('1', proc{reset})
return 4
diff --git a/ext/tk/sample/demos-jp/hello b/ext/tk/sample/demos-jp/hello
index e942f3d851..08f154d499 100644
--- a/ext/tk/sample/demos-jp/hello
+++ b/ext/tk/sample/demos-jp/hello
@@ -1,10 +1,10 @@
#!/usr/bin/env ruby
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
require 'tk'
TkButton.new(nil,
- 'text'=>"こんにちは、世界",
- 'command'=>proc{print "こんにちは、世界\n"; exit}
+ 'text'=>"ˤϡ",
+ 'command'=>proc{print "ˤϡ\n"; exit}
).pack
Tk.mainloop
diff --git a/ext/tk/sample/demos-jp/hscale.rb b/ext/tk/sample/demos-jp/hscale.rb
index 2dfbf38272..5615aa50bd 100644
--- a/ext/tk/sample/demos-jp/hscale.rb
+++ b/ext/tk/sample/demos-jp/hscale.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
require "tkcanvas"
if defined?($hscale_demo) && $hscale_deom
@@ -18,16 +18,16 @@ msg = TkLabel.new(base_frame) {
font $font
wraplength '3.5i'
justify 'left'
- text "下には矢印が1つと水平なスケールが表示されています。\
-スケール上でマウスボタン1をクリック、またはドラッグすると\
-矢印の長さを変えることができます。"
+ text "ˤ1Ĥȿʿʥ뤬ɽƤޤ\
+ǥޥܥ1򥯥åޤϥɥå\
+ĹѤ뤳ȤǤޤ"
}
msg.pack('side'=>'top')
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc {
tmppath = $hscale_demo
$hscale_demo = nil
@@ -36,7 +36,7 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc { showCode 'hscale' }
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
diff --git a/ext/tk/sample/demos-jp/icon.rb b/ext/tk/sample/demos-jp/icon.rb
index 6b9e1a570a..935519435b 100644
--- a/ext/tk/sample/demos-jp/icon.rb
+++ b/ext/tk/sample/demos-jp/icon.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# iconic button widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($icon_demo) && $icon_demo
$icon_demo.destroy
$icon_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$icon_demo = TkToplevel.new {|w|
title("Iconic Button Demonstration")
iconname("icon")
@@ -18,20 +18,20 @@ $icon_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($icon_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
msg = TkLabel.new(base_frame) {
font $font
wraplength '5i'
justify 'left'
- text "このウィンドウにはラジオボタンとチェックボタン上にビットマップや画像を表示する 3 つの方法を示しています。左にあるのは2つのラジオボタンで、それぞれが、ビットマップと選択を示すインジケータでできています。中央にあるのは、選択済みかどうかによって異なる画像を表示するチェックボタンです。右側にあるのは選択済みかどうかによって背景色が変わるビットマップを表示するチェックボタンです。"
+ text "Υɥˤϥ饸ܥȥåܥ˥ӥåȥޥåפɽ 3 Ĥˡ򼨤ƤޤˤΤ2ĤΥ饸ܥǡ줾줬ӥåȥޥåפ򼨤󥸥ǤǤƤޤˤΤϡѤߤɤˤäưۤʤɽåܥǤ¦ˤΤѤߤɤˤäطʿѤӥåȥޥåפɽåܥǤ"
}
msg.pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $icon_demo
$icon_demo = nil
@@ -40,13 +40,13 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'icon'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# image 生成
+# image
flagup = \
TkBitmapImage.new('file'=>[$demo_dir,'..',
'images','flagup.xbm'].join(File::Separator),
@@ -59,10 +59,10 @@ TkBitmapImage.new('file'=>[$demo_dir,'..',
[$demo_dir,'..',
'images','flagdown.xbm'].join(File::Separator))
-# 変数生成
+# ѿ
letters = TkVariable.new
-# frame 生成
+# frame
TkFrame.new(base_frame, 'borderwidth'=>10){|w|
TkFrame.new(w) {|f|
# TkRadioButton.new(f){
diff --git a/ext/tk/sample/demos-jp/image1.rb b/ext/tk/sample/demos-jp/image1.rb
index 0c69b2a45f..10078c6c22 100644
--- a/ext/tk/sample/demos-jp/image1.rb
+++ b/ext/tk/sample/demos-jp/image1.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# two image widgets demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($image1_demo) && $image1_demo
$image1_demo.destroy
$image1_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$image1_demo = TkToplevel.new {|w|
title('Image Demonstration #1')
iconname("Image1")
@@ -18,20 +18,20 @@ $image1_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($image1_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
msg = TkLabel.new(base_frame) {
font $font
wraplength '4i'
justify 'left'
- text "このデモでは2つのラベル上に画像をそれぞれ表示しています。"
+ text "ΥǥǤ2ĤΥ٥˲򤽤줾ɽƤޤ"
}
msg.pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $image1_demo
$image1_demo = nil
@@ -40,13 +40,13 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'image1'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# image 生成
+# image
image1a = \
TkPhotoImage.new('file'=>[$demo_dir,'..',
'images','earth.gif'].join(File::Separator))
@@ -54,7 +54,7 @@ image1b = \
TkPhotoImage.new('file'=>[$demo_dir,'..',
'images','earthris.gif'].join(File::Separator))
-# label 生成
+# label
#[ TkLabel.new(base_frame, 'image'=>image1a, 'bd'=>1, 'relief'=>'sunken'),
# TkLabel.new(base_frame, 'image'=>image1b, 'bd'=>1, 'relief'=>'sunken')
#].each{|w| w.pack('side'=>'top', 'padx'=>'.5m', 'pady'=>'.5m')}
diff --git a/ext/tk/sample/demos-jp/image2.rb b/ext/tk/sample/demos-jp/image2.rb
index aa507c5b9b..3e8b87461f 100644
--- a/ext/tk/sample/demos-jp/image2.rb
+++ b/ext/tk/sample/demos-jp/image2.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# widget demo 'load image' (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($image2_demo) && $image2_demo
$image2_demo.destroy
$image2_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$image2_demo = TkToplevel.new {|w|
title('Image Demonstration #2')
iconname("Image2")
@@ -18,20 +18,20 @@ $image2_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($image2_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
msg = TkLabel.new(base_frame) {
font $font
wraplength '4i'
justify 'left'
- text "このデモではTkの photo image を使用して画像を見ることができます。最初にエントリ内ににディレクトリ名を入れて下さい。次に下のリストボックスにこのディレクトリをロードするため、リターンを押してください。その後、画像を選択するためにリストボックスの中のファイル名をダブルクリックして下さい。"
+ text "ΥǥǤTk photo image ѤƲ򸫤뤳ȤǤޤǽ˥ȥˤ˥ǥ쥯ȥ̾Ʋ˲ΥꥹȥܥåˤΥǥ쥯ȥɤ뤿ᡢ꥿򲡤Ƥθ塢򤹤뤿˥ꥹȥܥåΥե֥̾륯åƲ"
}
msg.pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $image2_demo
$image2_demo = nil
@@ -40,20 +40,20 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'image2'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# 変数生成
+# ѿ
$dirName = TkVariable.new([$demo_dir,'..','images'].join(File::Separator))
-# image 生成
+# image
$image2a = TkPhotoImage.new
-# ファイル名入力部
-TkLabel.new(base_frame, 'text'=>'ディレクトリ:')\
+# ե̾
+TkLabel.new(base_frame, 'text'=>'ǥ쥯ȥ:')\
.pack('side'=>'top', 'anchor'=>'w')
image2_e = TkEntry.new(base_frame) {
@@ -64,7 +64,7 @@ image2_e = TkEntry.new(base_frame) {
TkFrame.new(base_frame, 'height'=>'3m', 'width'=>20)\
.pack('side'=>'top', 'anchor'=>'w')
-TkLabel.new(base_frame, 'text'=>'ファイル:')\
+TkLabel.new(base_frame, 'text'=>'ե:')\
.pack('side'=>'top', 'anchor'=>'w')
TkFrame.new(base_frame){|w|
@@ -85,14 +85,14 @@ TkFrame.new(base_frame){|w|
}.pack('side'=>'top', 'anchor'=>'w')
-# image 配置
+# image
[ TkFrame.new(base_frame, 'height'=>'3m', 'width'=>20),
- TkLabel.new(base_frame, 'text'=>'画像:'),
+ TkLabel.new(base_frame, 'text'=>':'),
# TkLabel.new(base_frame, 'image'=>$image2a)
Tk::Label.new(base_frame, 'image'=>$image2a)
].each{|w| w.pack('side'=>'top', 'anchor'=>'w')}
-# メソッド定義
+# ᥽å
def loadDir(w)
w.delete(0,'end')
Dir.glob([$dirName,'*'].join(File::Separator)).sort.each{|f|
diff --git a/ext/tk/sample/demos-jp/image3.rb b/ext/tk/sample/demos-jp/image3.rb
index 5c1ceb2816..625e69a21d 100644
--- a/ext/tk/sample/demos-jp/image3.rb
+++ b/ext/tk/sample/demos-jp/image3.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
# image3.rb
#
# This demonstration script creates a simple collection of widgets
@@ -56,15 +56,15 @@ msg = TkLabel.new(base_frame) {
font $font
wraplength '4i'
justify 'left'
- text "このデモではTkの photo image を使用して画像を 見ることができます。最初にエントリ内ににディレクトリ名を入れて下さい。次に下のリストボックスにこのディレクトリをロードするため、リターンを押してください。その後、画像を選択するためにリストボックスの中のファイル名をダブルクリックして下さい。"
+ text "ΥǥǤTk photo image ѤƲ 뤳ȤǤޤǽ˥ȥˤ˥ǥ쥯ȥ̾Ʋ˲ΥꥹȥܥåˤΥǥ쥯ȥɤ뤿ᡢ꥿򲡤Ƥθ塢򤹤뤿˥ꥹȥܥåΥե֥̾륯åƲ"
}
msg.pack('side'=>'top')
# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $image3_demo
$image3_demo = nil
@@ -73,7 +73,7 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'image3'}
}.pack('side'=>'left', 'expand'=>'yes')
@@ -92,9 +92,9 @@ $image3a = TkPhotoImage.new
#
image3_f = TkFrame.new(base_frame).pack(:fill=>:both, :expand=>true)
-image3_df = TkLabelFrame.new(base_frame, :text=>'ディレクトリ:')
+image3_df = TkLabelFrame.new(base_frame, :text=>'ǥ쥯ȥ:')
-image3_ff = TkLabelFrame.new(base_frame, :text=>'ファイル:',
+image3_ff = TkLabelFrame.new(base_frame, :text=>'ե:',
:padx=>'2m', :pady=>'2m')
image3_lbx = TkListbox.new(image3_ff, :width=>20, :height=>10) {
pack(:side=>:left, :fill=>:y, :expand=>true)
@@ -109,12 +109,12 @@ image3_ent = TkEntry.new(image3_df, :width=>30, :textvariable=>$dirName){
bind('Return', proc{loadDir3(image3_lbx)})
}
-TkButton.new(image3_df, :pady=>0, :padx=>'2m', :text=>"ディレクトリ選択",
+TkButton.new(image3_df, :pady=>0, :padx=>'2m', :text=>"ǥ쥯ȥ",
:command=>proc{selectAndLoadDir3(image3_ent, image3_lbx)}) {
pack(:side=>:left, :fill=>:y, :padx=>[0, '2m'], :pady=>'2m')
}
-image3_if = TkLabelFrame.new(base_frame, :text=>'イメージ:') {|f|
+image3_if = TkLabelFrame.new(base_frame, :text=>'᡼:') {|f|
# TkLabel.new(f, :image=>$image3a).pack(:padx=>'2m', :pady=>'2m')
Tk::Label.new(f, :image=>$image3a).pack(:padx=>'2m', :pady=>'2m')
}
diff --git a/ext/tk/sample/demos-jp/items.rb b/ext/tk/sample/demos-jp/items.rb
index b1d66f367b..4440905db8 100644
--- a/ext/tk/sample/demos-jp/items.rb
+++ b/ext/tk/sample/demos-jp/items.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# canvas item types widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($items_demo) && $items_demo
$items_demo.destroy
$items_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$items_demo = TkToplevel.new {|w|
title("Canvas Item Demonstration")
iconname("Items")
@@ -18,19 +18,19 @@ $items_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($items_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
TkLabel.new(base_frame) {
font $font
wraplength '5i'
justify 'left'
- text "このウィンドウにはキャンバス widget が入っており、その中にはキャンバス widget がサポートする様々なタイプのアイテムの例が入っています。次のような操作ができます。\n ボタン-1 ドラッグ:\tアイテムを動かす。\n ボタン-2 ドラッグ:\t見えている部分をずらす。\n ボタン-3 ドラッグ:\t領域を囲う。\n コントロール-F:\t領域の下のアイテムを表示する。"
+ text "ΥɥˤϥХ widget äƤꡢˤϥХ widget ݡȤ͡ʥפΥƥ㤬äƤޤΤ褦Ǥޤ\n ܥ-1 ɥå:\tƥư\n ܥ-2 ɥå:\tƤʬ򤺤餹\n ܥ-3 ɥå:\tΰϤ\n ȥ-F:\tΰβΥƥɽ롣"
}.pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $items_demo
$items_demo = nil
@@ -39,15 +39,15 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'items'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# frame 生成
+# frame
cvs = nil
TkFrame.new(base_frame) {|cf|
- # canvas 生成
+ # canvas
cvs = TkCanvas.new(cf) {|c|
focus
scrollregion '0c 0c 30c 24c'
@@ -113,11 +113,11 @@ else
green = 'black'
end
-# tag オブジェクトを生成
+# tag ֥Ȥ
$tag_item = TkcGroup.new(cvs)
# Set up demos within each of the areas of the grid.
-TkcText.new(cvs, '5c', '.2c', 'text'=>'ライン', 'anchor'=>'n')
+TkcText.new(cvs, '5c', '.2c', 'text'=>'饤', 'anchor'=>'n')
TkcLine.new(cvs, '1c', '1c', '3c', '1c', '1c', '4c', '3c', '4c',
'width'=>2, 'fill'=>blue, 'capstyle'=>'butt',
'join'=>'miter', 'tags'=>$tag_item )
@@ -136,7 +136,7 @@ TkcLine.new(cvs, '1c','7c','1.75c','5.8c','2.5c','7c','3.25c','5.8c','4c','7c',
'tags'=>$tag_item )
TkcText.new(cvs, '15c', '.2c',
- 'text'=>'曲線 (滑らかにつないだ直線)', 'anchor'=>'n')
+ 'text'=>' (餫ˤĤʤľ)', 'anchor'=>'n')
TkcLine.new(cvs, '11c','4c','11.5c','1c','13.5c','1c','14c','4c',
'smooth'=>'on', 'fill'=>blue, 'tags'=>$tag_item )
TkcLine.new(cvs, '15.5c','1c','19.5c','1.5c','15.5c','4.5c','19.5c','4c',
@@ -148,7 +148,7 @@ TkcLine.new(cvs, '12c','6c','13.5c','4.5c','16.5c','7.5c','18c','6c',
'images', 'gray25.xbm'].join(File::Separator),
'fill'=>red, 'tags'=>$tag_item )
-TkcText.new(cvs, '25c', '.2c', 'text'=>'多角形', 'anchor'=>'n')
+TkcText.new(cvs, '25c', '.2c', 'text'=>'¿ѷ', 'anchor'=>'n')
TkcPolygon.new(cvs, '21c','1.0c','22.5c','1.75c','24c','1.0c','23.25c','2.5c',
'24c','4.0c','22.5c','3.25c','21c','4.0c','21.75c','2.5c',
'fill'=>'green', 'outline'=>'black', 'width'=>4,
@@ -163,7 +163,7 @@ TkcPolygon.new(cvs, '22c','4.5c','25c','4.5c','25c','6.75c','28c','6.75c',
'images', 'gray25.xbm'].join(File::Separator),
'outline'=>'black', 'tags'=>$tag_item )
-TkcText.new(cvs, '5c', '8.2c', 'text'=>'矩形', 'anchor'=>'n')
+TkcText.new(cvs, '5c', '8.2c', 'text'=>'', 'anchor'=>'n')
TkcRectangle.new(cvs, '1c','9.5c','4c','12.5c',
'outline'=>red, 'width'=>'3m', 'tags'=>$tag_item)
TkcRectangle.new(cvs, '0.5c','13.5c','4.5c','15.5c',
@@ -173,7 +173,7 @@ TkcRectangle.new(cvs, '6c','10c','9c','15c', 'outline'=>'',
'images','gray25.xbm'].join(File::Separator),
'fill'=>blue, 'tags'=>$tag_item )
-TkcText.new(cvs, '15c', '8.2c', 'text'=>'楕円', 'anchor'=>'n')
+TkcText.new(cvs, '15c', '8.2c', 'text'=>'ʱ', 'anchor'=>'n')
TkcOval.new(cvs, '11c','9.5c','14c','12.5c',
'outline'=>red, 'width'=>'3m', 'tags'=>$tag_item)
TkcOval.new(cvs, '10.5c','13.5c','14.5c','15.5c',
@@ -183,13 +183,13 @@ TkcOval.new(cvs, '16c','10c','19c','15c', 'outline'=>'',
'images','gray25.xbm'].join(File::Separator),
'fill'=>blue, 'tags'=>$tag_item )
-TkcText.new(cvs, '25c', '8.2c', 'text'=>'テキスト', 'anchor'=>'n')
+TkcText.new(cvs, '25c', '8.2c', 'text'=>'ƥ', 'anchor'=>'n')
TkcRectangle.new(cvs, '22.4c','8.9c','22.6c','9.1c')
TkcText.new(cvs, '22.5c', '9c', 'anchor'=>'n', 'font'=>font1, 'width'=>'4c',
- 'text'=>'短いテキスト。ワードラップ、左揃え、アンカーは北(上)。□は各テキストのアンカーポイントを示す。', 'tags'=>$tag_item )
+ 'text'=>'ûƥȡɥåס·󥫡()ϳƥƥȤΥ󥫡ݥȤ򼨤', 'tags'=>$tag_item )
TkcRectangle.new(cvs, '25.4c','10.9c','25.6c','11.1c')
TkcText.new(cvs, '25.5c', '11c', 'anchor'=>'w', 'font'=>font1, 'fill'=>blue,
- 'text'=>"いくつかの行。\nそれぞれ独立に\n行揃え。\n全て左端がアンカーされている。", 'justify'=>'center', 'tags'=>$tag_item )
+ 'text'=>"Ĥιԡ\n줾Ω\n·\nƺü󥫡Ƥ롣", 'justify'=>'center', 'tags'=>$tag_item )
TkcRectangle.new(cvs, '24.9c','13.9c','25.1c','14.1c')
if $tk_version =~ /^4\.[01]/
TkcText.new(cvs, '25c', '14c', 'anchor'=>'c', 'font'=>font2, 'fill'=>red,
@@ -202,7 +202,7 @@ else
'tags'=>$tag_item )
end
-TkcText.new(cvs, '5c', '16.2c', 'text'=>'弧', 'anchor'=>'n')
+TkcText.new(cvs, '5c', '16.2c', 'text'=>'', 'anchor'=>'n')
TkcArc.new(cvs, '0.5c','17c','7c','20c', 'fill'=>green, 'outline'=>'black',
'start'=>45, 'extent'=>270, 'style'=>'pieslice', 'tags'=>$tag_item)
#TkcArc.new(cvs, '6.5c','17c','9.5c','20c', 'width'=>'4m', 'style'=>'arc',
@@ -221,7 +221,7 @@ TkcArc.new(cvs, '5.5c','20.5c','9.5c','23.5c', 'width'=>'4m', 'style'=>'chord',
'fill'=>blue, 'outline'=>'', 'start'=>45, 'extent'=>270,
'tags'=>$tag_item)
-TkcText.new(cvs, '15c', '16.2c', 'text'=>'ビットマップ', 'anchor'=>'n')
+TkcText.new(cvs, '15c', '16.2c', 'text'=>'ӥåȥޥå', 'anchor'=>'n')
#TkcBitmap.new(cvs, '13c','20c',
# 'bitmap'=>'@' + ['images', 'face'].join(File::Separator),
# 'tags'=>$tag_item)
@@ -239,7 +239,7 @@ TkcBitmap.new(cvs, '17c','18.5c',
#TkcBitmap.new(cvs, '17c','21.5c',
# 'bitmap'=>'@' + ['images', 'letters'].join(File::Separator),
# 'tags'=>$tag_item)
-# ↓の形式でも可能
+# ηǤǽ
TkcBitmap.new(cvs, '17c','21.5c') {
bitmap '@' + [$demo_dir, '..', 'images', 'letters.xbm'].join(File::Separator)
tags $tag_item
@@ -249,15 +249,15 @@ TkcBitmap.new(cvs, '17c','21.5c') {
# tags $tag_item
#}
-TkcText.new(cvs, '25c', '16.2c', 'text'=>'ウィンドウ', 'anchor'=>'n')
+TkcText.new(cvs, '25c', '16.2c', 'text'=>'ɥ', 'anchor'=>'n')
TkButton.new(cvs) {|b|
- text '押してね'
+ text 'Ƥ'
command proc{butPress cvs, red}
TkcWindow.new(cvs, '21c','18c',
'window'=>b, 'anchor'=>'nw', 'tags'=>$tag_item)
}
TkEntry.new(cvs, 'width'=>20, 'relief'=>'sunken') {|e|
- insert 'end', '編集してね'
+ insert 'end', 'ԽƤ'
TkcWindow.new(cvs, '21c','21c',
'window'=>e, 'anchor'=>'nw', 'tags'=>$tag_item)
}
@@ -266,9 +266,9 @@ TkScale.new(cvs, 'from'=>0, 'to'=>100, 'length'=>'6c', 'sliderlength'=>'.4c',
TkcWindow.new(cvs, '28.5c','17.5c',
'window'=>scl, 'anchor'=>'n', 'tags'=>$tag_item)
}
-TkcText.new(cvs, '21c', '17.9c', 'text'=>'ボタン:', 'anchor'=>'sw')
-TkcText.new(cvs, '21c', '20.9c', 'text'=>'エントリ:', 'anchor'=>'sw')
-TkcText.new(cvs, '28.5c', '17.4c', 'text'=>'スケール:', 'anchor'=>'s')
+TkcText.new(cvs, '21c', '17.9c', 'text'=>'ܥ:', 'anchor'=>'sw')
+TkcText.new(cvs, '21c', '20.9c', 'text'=>'ȥ:', 'anchor'=>'sw')
+TkcText.new(cvs, '28.5c', '17.4c', 'text'=>':', 'anchor'=>'s')
# Set up event bindings for canvas:
cvs.itembind($tag_item, 'Any-Enter', proc{itemEnter cvs})
@@ -374,6 +374,6 @@ end
def butPress(w,color)
i = TkcText.new(w, '25c', '18.1c',
- 'text'=>'いてて!!', 'fill'=>color, 'anchor'=>'n')
+ 'text'=>'Ƥ!!', 'fill'=>color, 'anchor'=>'n')
Tk.after(500, proc{w.delete i})
end
diff --git a/ext/tk/sample/demos-jp/ixset2 b/ext/tk/sample/demos-jp/ixset2
index e11ce2ac8f..5011dfe640 100644
--- a/ext/tk/sample/demos-jp/ixset2
+++ b/ext/tk/sample/demos-jp/ixset2
@@ -1,5 +1,5 @@
#!/usr/bin/env ruby
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# ixset --
# A nice interface to "xset" to change X server settings
@@ -167,15 +167,15 @@ class Xsettings
btn_frame = TkFrame.new(@root)
buttons = [
@btn_OK = TkButton.new(btn_frame, 'command'=>proc{win.ok},
- 'default'=>'active', 'text'=>'了解'),
+ 'default'=>'active', 'text'=>'λ'),
@btn_APPLY = TkButton.new(btn_frame, 'command'=>proc{win.writesettings},
- 'default'=>'normal', 'text'=>'適用',
+ 'default'=>'normal', 'text'=>'Ŭ',
'state'=>'disabled'),
@btn_CANCEL = TkButton.new(btn_frame, 'command'=>proc{win.cancel},
- 'default'=>'normal', 'text'=>'取消',
+ 'default'=>'normal', 'text'=>'',
'state'=>'disabled'),
@btn_QUIT = TkButton.new(btn_frame, 'command'=>proc{win.quit},
- 'default'=>'normal', 'text'=>'中止')
+ 'default'=>'normal', 'text'=>'')
]
buttons.each{|b| b.pack('side'=>'left', 'expand'=>'yes', 'pady'=>5) }
@@ -202,16 +202,16 @@ class Xsettings
#
# Bell settings
#
- bell = TkLabelframe.new(@root, 'text'=>'ベル設定',
+ bell = TkLabelframe.new(@root, 'text'=>'٥',
'padx'=>'1.5m', 'pady'=>'1.5m')
@w_bellvol = TkScale.new(bell, 'from'=>0, 'to'=>100, 'length'=>200,
'tickinterval'=>20, 'orient'=>'horizontal',
- 'label'=>"音量 (%)")
+ 'label'=>" (%)")
f = TkFrame.new(bell)
- @w_bellpit = LabelEntry.new(f, "音程 (Hz)", 6, [25, 20000])
+ @w_bellpit = LabelEntry.new(f, " (Hz)", 6, [25, 20000])
@w_bellpit.pack('side'=>'left', 'padx'=>5)
- @w_belldur = LabelEntry.new(f, "持続時間 (ms)", 6, [1, 10000])
+ @w_belldur = LabelEntry.new(f, "³ (ms)", 6, [1, 10000])
@w_belldur.pack('side'=>'right', 'padx'=>5)
@w_bellvol.pack('side'=>'top', 'expand'=>'yes')
@@ -222,10 +222,10 @@ class Xsettings
#
kbdonoff = nil
kbdcli = nil
- kbd = TkLabelframe.new(@root, 'text'=>'キーボードリピート設定',
+ kbd = TkLabelframe.new(@root, 'text'=>'ܡɥԡ',
'padx'=>'1.5m', 'pady'=>'1.5m')
f = TkFrame.new(kbd)
- @w_kbdonoff = TkCheckButton.new(f, 'text'=>'クリック音あり',
+ @w_kbdonoff = TkCheckButton.new(f, 'text'=>'å',
'relief'=>'flat',
'onvalue'=>'on', 'offvalue'=>'off',
'variable'=>@w_kbdrep ) {
@@ -240,7 +240,7 @@ class Xsettings
}
@w_kbdcli = TkScale.new(f, 'from'=>0, 'to'=>100, 'length'=>200,
'tickinterval'=>20, 'orient'=>'horizontal',
- 'label'=>'クリック音量 (%)')
+ 'label'=>'å (%)')
@w_kbdcli.pack('side'=>'left', 'expand'=>'yes',
'fill'=>'x', 'padx'=>['1m', 0])
f.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2, 'fill'=>'x')
@@ -248,21 +248,21 @@ class Xsettings
#
# Mouse settings
#
- mouse = TkLabelframe.new(@root, 'text'=>'マウス設定',
+ mouse = TkLabelframe.new(@root, 'text'=>'ޥ',
'padx'=>'1.5m', 'pady'=>'1.5m')
f = TkFrame.new(mouse)
- @w_mouseacc = LabelEntry.new(f, '加速量', 5)
+ @w_mouseacc = LabelEntry.new(f, '®', 5)
@w_mouseacc.pack('side'=>'left', 'padx'=>[0, '1m'])
- @w_mousethr = LabelEntry.new(f, '閾値 (pixels)', 3, [1, 2000])
+ @w_mousethr = LabelEntry.new(f, ' (pixels)', 3, [1, 2000])
@w_mousethr.pack('side'=>'right', 'padx'=>['1m', 0])
f.pack('side'=>'top', 'expand'=>'yes')
#
# Screen Saver settings
#
- screen = TkLabelframe.new(@root, 'text'=>'スクリーンセーバ設定',
+ screen = TkLabelframe.new(@root, 'text'=>'꡼󥻡',
'padx'=>'1.5m', 'pady'=>'1.5m')
- @w_screenblank = TkRadioButton.new(screen, 'text'=>'ブランク表示',
+ @w_screenblank = TkRadioButton.new(screen, 'text'=>'֥ɽ',
'relief'=>'flat', 'anchor'=>'w',
'variable'=>@w_screenbla,
'value'=>'blank') {
@@ -275,7 +275,7 @@ class Xsettings
end
}
- @w_screenpat = TkRadioButton.new(screen, 'text'=>'パターン表示',
+ @w_screenpat = TkRadioButton.new(screen, 'text'=>'ѥɽ',
'relief'=>'flat', 'anchor'=>'w',
'variable'=>@w_screenbla,
'value'=>'noblank') {
@@ -288,8 +288,8 @@ class Xsettings
end
}
- @w_screentim = LabelEntry.new(screen, 'タイムアウト (s)', 5, [1, 100000])
- @w_screencyc = LabelEntry.new(screen, '周期 (s)', 5, [1, 100000])
+ @w_screentim = LabelEntry.new(screen, 'ॢ (s)', 5, [1, 100000])
+ @w_screencyc = LabelEntry.new(screen, ' (s)', 5, [1, 100000])
Tk.grid(@w_screenblank, @w_screentim, 'sticky'=>'e')
Tk.grid(@w_screenpat, @w_screencyc, 'sticky'=>'e')
diff --git a/ext/tk/sample/demos-jp/knightstour.rb b/ext/tk/sample/demos-jp/knightstour.rb
index 835a24c392..ae0f13076e 100644
--- a/ext/tk/sample/demos-jp/knightstour.rb
+++ b/ext/tk/sample/demos-jp/knightstour.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# Based on the widget demo of Tcl/Tk8.5.2
# The following is the original copyright text.
@@ -94,13 +94,13 @@ class Knights_Tour
@start_btn.state :normal
if @visited.length == 64
if @initial == square
- @log.insert :end, '周遊(closed tour)成功!'
+ @log.insert :end, 'ͷ(closed tour)'
else
- @log.insert :end, "成功\n", {}
+ @log.insert :end, "\n", {}
Tk.after(@delay.numeric * 2){tour(rand(64))} if @continuous.bool
end
else
- @log.insert :end, "失敗!\n", {}
+ @log.insert :end, "ԡ\n", {}
end
end
end
@@ -158,10 +158,10 @@ class Knights_Tour
sep = Ttk::Separator.new(frame)
Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
TkGrid('x',
- Ttk::Button.new(frame, :text=>'コード参照',
+ Ttk::Button.new(frame, :text=>'ɻ',
:image=>$image['view'], :compound=>:left,
:command=>proc{showCode 'knightstour'}),
- Ttk::Button.new(frame, :text=>'閉じる',
+ Ttk::Button.new(frame, :text=>'Ĥ',
:image=>$image['delete'], :compound=>:left,
:command=>proc{
$knightstour.destroy
@@ -187,14 +187,14 @@ class Knights_Tour
@continuous = TkVariable.new(false)
tool_f = Ttk::Frame.new($knightstour)
- label = Ttk::Label.new(tool_f, :text=>'実行速度')
+ label = Ttk::Label.new(tool_f, :text=>'¹®')
scale = Ttk::Scale.new(tool_f, :from=>8, :to=>2000, :variable=>@delay,
:command=>proc{|n| set_delay(n)})
- check = Ttk::Checkbutton.new(tool_f, :text=>'反復',
+ check = Ttk::Checkbutton.new(tool_f, :text=>'ȿ',
:variable=>@continuous)
- @start_btn = Ttk::Button.new(tool_f, :text=>'開始',
+ @start_btn = Ttk::Button.new(tool_f, :text=>'',
:command=>proc{tour()})
- @exit_btn = Ttk::Button.new(tool_f, :text=>'終了',
+ @exit_btn = Ttk::Button.new(tool_f, :text=>'λ',
:command=>proc{_exit()})
7.downto(0){|row|
diff --git a/ext/tk/sample/demos-jp/label.rb b/ext/tk/sample/demos-jp/label.rb
index 700e6a61ce..19105e6f71 100644
--- a/ext/tk/sample/demos-jp/label.rb
+++ b/ext/tk/sample/demos-jp/label.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# label widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($label_demo) && $label_demo
$label_demo.destroy
$label_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$label_demo = TkToplevel.new {|w|
title("Label Demonstration")
iconname("label")
@@ -18,20 +18,20 @@ $label_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($label_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
msg = TkLabel.new(base_frame) {
font $font
wraplength '4i'
justify 'left'
- text "下には5つのラベルが表示されています。左側にはテキストラベルが3つあり、右側にはビットマップラベルとテキストラベルがあります。ラベルというのはあまり面白いものではありません。なぜなら眺める以外何もできないからです。"
+ text "ˤ5ĤΥ٥뤬ɽƤޤ¦ˤϥƥȥ٥뤬3Ĥꡢ¦ˤϥӥåȥޥåץ٥ȥƥȥ٥뤬ޤ٥ȤΤϤޤ򤤤ΤǤϤޤ󡣤ʤʤįʳǤʤǤ"
}
msg.pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $label_demo
$label_demo = nil
@@ -40,23 +40,23 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'label'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# label demo 用フレーム生成
+# label demo ѥե졼
f_left = TkFrame.new(base_frame)
f_right = TkFrame.new(base_frame)
[f_left, f_right].each{|w| w.pack('side'=>'left', 'expand'=>'yes',
'padx'=>10, 'pady'=>10, 'fill'=>'both')}
-# label 生成
-[ TkLabel.new(f_left, 'text'=>'最初のラベル'),
- TkLabel.new(f_left, 'text'=>'2 番目。ちょっと浮き上がらせてみました',
+# label
+[ TkLabel.new(f_left, 'text'=>'ǽΥ٥'),
+ TkLabel.new(f_left, 'text'=>'2 ܡä⤭夬餻Ƥߤޤ',
'relief'=>'raised'),
- TkLabel.new(f_left, 'text'=>'3 番目。沈んでいます ', 'relief'=>'sunken')
+ TkLabel.new(f_left, 'text'=>'3 ܡǤޤ ', 'relief'=>'sunken')
].each{|w| w.pack('side'=>'top', 'expand'=>'yes', 'pady'=>2, 'anchor'=>'w')}
# TkLabel.new(f_right) {
@@ -66,4 +66,4 @@ Tk::Label.new(f_right) {
relief 'sunken'
}.pack('side'=>'top')
-TkLabel.new(f_right) { text 'Tcl/Tk 所有者' }.pack('side'=>'top')
+TkLabel.new(f_right) { text 'Tcl/Tk ͭ' }.pack('side'=>'top')
diff --git a/ext/tk/sample/demos-jp/labelframe.rb b/ext/tk/sample/demos-jp/labelframe.rb
index 80e106c6e7..cee504f4b6 100644
--- a/ext/tk/sample/demos-jp/labelframe.rb
+++ b/ext/tk/sample/demos-jp/labelframe.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# labelframe.rb
#
@@ -25,28 +25,28 @@ base_frame = TkFrame.new($labelframe_demo).pack(:fill=>:both, :expand=>true)
TkLabel.new(base_frame,
:font=>$font, :wraplength=>'4i', :justify=>:left,
:text=><<EOL).pack(:side=>:top)
-TkLabelFrame ウィジェットは関連する widget
-群をまとめて取り扱うために用いられます。ラ
-ベルは通常の文字列でも何らかのウィジェット
-でもかまいません。もしあなたが使っている
-Ruby にリンクされている Tk ライブラリが
-labelframe ウィジェットを実装していない
-場合、このデモはうまく動かないはずです。
-その場合には labelframe ウィジェットが実装
-されているようなより新しいバージョンの Tk
-を組み合わせて試すようにしてください。
+TkLabelFrame åȤϴϢ widget
+ޤȤƼ갷Ѥޤ
+٥̾ʸǤⲿ餫Υå
+Ǥ⤫ޤޤ󡣤⤷ʤȤäƤ
+Ruby ˥󥯤Ƥ Tk 饤֥꤬
+labelframe åȤƤʤ
+硢ΥǥϤޤưʤϤǤ
+ξˤ labelframe åȤ
+Ƥ褦ʤ꿷С Tk
+Ȥ߹碌ƻ褦ˤƤ
EOL
# The bottom buttons
TkFrame.new(base_frame){|f|
pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
- TkButton.new(f, :text=>'閉じる', :width=>15, :command=>proc{
+ TkButton.new(f, :text=>'Ĥ', :width=>15, :command=>proc{
$labelframe_demo.destroy
$labelframe_demo = nil
}).pack(:side=>:left, :expand=>true)
- TkButton.new(f, :text=>'コード参照', :width=>15, :command=>proc{
+ TkButton.new(f, :text=>'ɻ', :width=>15, :command=>proc{
showCode 'labelframe'
}).pack(:side=>:left, :expand=>true)
}
@@ -56,7 +56,7 @@ w = TkFrame.new(base_frame).pack(:side=>:bottom, :fill=>:both,
:expand=>true)
# A group of radiobuttons in a labelframe
-TkLabelFrame.new(w, :text=>'選択値',
+TkLabelFrame.new(w, :text=>'',
:padx=>2, :pady=>2) {|f|
grid(:row=>0, :column=>0, :pady=>'2m', :padx=>'2m')
@@ -86,13 +86,13 @@ end
TkLabelFrame.new(w, :pady=>2, :padx=>2){|f|
TkCheckButton.new(f, :widgetname=>'cb', :variable=>$lfdummy,
- :text=>"オプションを使用", :padx=>0) {|cb|
+ :text=>"ץ", :padx=>0) {|cb|
command proc{lfEnableButtons(f)}
f.labelwidget(cb)
}
grid(:row=>0, :column=>1, :pady=>'2m', :padx=>'2m')
- %w(オプション1 オプション2 オプション3).each{|str|
+ %w(ץ1 ץ2 ץ3).each{|str|
TkCheckbutton.new(f, :text=>str).pack(:side=>:top, :fill=>:x, :pady=>2)
}
diff --git a/ext/tk/sample/demos-jp/mclist.rb b/ext/tk/sample/demos-jp/mclist.rb
index 67cec638eb..37f5dfa8eb 100644
--- a/ext/tk/sample/demos-jp/mclist.rb
+++ b/ext/tk/sample/demos-jp/mclist.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# mclist.rb --
#
@@ -24,16 +24,16 @@ base_frame = TkFrame.new($mclist_demo).pack(:fill=>:both, :expand=>true)
Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i',
:justify=>:left, :anchor=>'n', :padding=>[10, 2, 10, 6],
:text=><<EOL).pack(:fill=>:x)
-Ttkとは,テーマ指定可能な新しいウィジェット集合です.\
-Ttk::Treeviewウィジェットは\
-Ttkウィジェットセットに含まれるウィジェットの一つで,\
-それが保持する木構造のデータそのものまでは表示することなく,\
-示したい情報をマルチカラムで表示させることができます.
-このサンプルは,複数のカラムを持ったリストボックスを作成する簡単な例です.
-各カラムのタイトル(heading)をクリックすれば,\
-そのカラムの情報に基づいてリストの並べ替えがなされるはずです.\
-また,カラムのタイトル間の区切り部分をドラッグすることで,\
-カラムの幅を変更することも可能です.
+TtkȤϡơ޻ǽʿåȽǤ\
+Ttk::TreeviewåȤ\
+TtkåȥåȤ˴ޤޤ륦åȤΰĤǡ\
+줬ݻڹ¤ΥǡΤΤޤǤɽ뤳Ȥʤ\
+ޥɽ뤳ȤǤޤ
+ΥץϡʣΥäꥹȥܥåñǤ
+ƥΥȥ(heading)򥯥åС\
+Υξ˴ŤƥꥹȤ¤ؤʤϤǤ\
+ޤΥȥ֤ζڤʬɥå뤳Ȥǡ\
+ѹ뤳ȤǽǤ
EOL
## See Code / Dismiss
@@ -41,10 +41,10 @@ Ttk::Frame.new(base_frame) {|frame|
sep = Ttk::Separator.new(frame)
Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
TkGrid('x',
- Ttk::Button.new(frame, :text=>'コード参照',
+ Ttk::Button.new(frame, :text=>'ɻ',
:image=>$image['view'], :compound=>:left,
:command=>proc{showCode 'mclist'}),
- Ttk::Button.new(frame, :text=>'閉じる',
+ Ttk::Button.new(frame, :text=>'Ĥ',
:image=>$image['delete'], :compound=>:left,
:command=>proc{
$mclist_demo.destroy
@@ -74,27 +74,27 @@ container.grid_rowconfigure(0, :weight=>1)
## The data we're going to insert
data = [
- ['アルゼンチン', 'ブエノスアイレス', 'ARS'],
- ['オーストラリア', 'キャンベラ', 'AUD'],
- ['ブラジル', 'ブラジリア', 'BRL'],
- ['カナダ', 'オタワ', 'CAD'],
- ['中国', '北京', 'CNY'],
- ['フランス', 'パリ', 'EUR'],
- ['ドイツ', 'ベルリン', 'EUR'],
- ['インド', 'ニューデリー', 'INR'],
- ['イタリア', 'ローマ', 'EUR'],
- ['日本', '東京', 'JPY'],
- ['メキシコ', 'メキシコシティ', 'MXN'],
- ['ロシア', 'モスクワ', 'RUB'],
- ['南アフリカ', 'プレトリア', 'ZAR'],
- ['英国', 'ロンドン', 'GBP'],
- ['アメリカ', 'ワシントン D.C.', 'USD'],
+ ['를', '֥Υ쥹', 'ARS'],
+ ['ȥꥢ', '٥', 'AUD'],
+ ['֥饸', '֥饸ꥢ', 'BRL'],
+ ['ʥ', '', 'CAD'],
+ ['', '̵', 'CNY'],
+ ['ե', 'ѥ', 'EUR'],
+ ['ɥ', '٥', 'EUR'],
+ ['', '˥塼ǥ꡼', 'INR'],
+ ['ꥢ', '', 'EUR'],
+ ['', '', 'JPY'],
+ ['ᥭ', 'ᥭƥ', 'MXN'],
+ ['', '⥹', 'RUB'],
+ ['եꥫ', 'ץȥꥢ', 'ZAR'],
+ ['ѹ', 'ɥ', 'GBP'],
+ ['ꥫ', '亮ȥ D.C.', 'USD'],
]
## Code to insert the data nicely
font = Ttk::Style.lookup(tree[:style], :font)
cols = %w(country capital currency)
-cols.zip(%w(国名 首都 通貨)).each{|col, name|
+cols.zip(%w(̾ ̲)).each{|col, name|
tree.heading_configure(col, :text=>name,
:command=>proc{sort_by(tree, col, false)})
tree.column_configure(col, :width=>TkFont.measure(font, name))
diff --git a/ext/tk/sample/demos-jp/menu.rb b/ext/tk/sample/demos-jp/menu.rb
index 05ea7a9ec2..e38a467000 100644
--- a/ext/tk/sample/demos-jp/menu.rb
+++ b/ext/tk/sample/demos-jp/menu.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# menus widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($menu_demo) && $menu_demo
$menu_demo.destroy
$menu_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$menu_demo = TkToplevel.new {|w|
title("File Selection Dialogs")
iconname("menu")
@@ -18,7 +18,7 @@ $menu_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($menu_demo).pack(:fill=>:both, :expand=>true)
-# menu frame 生成
+# menu frame
$menu_frame = TkFrame.new(base_frame, 'relief'=>'raised', 'bd'=>2)
$menu_frame.pack('side'=>'top', 'fill'=>'x')
@@ -28,21 +28,21 @@ rescue
windowingsystem = ""
end
-# label 生成
+# label
TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left') {
if $tk_platform['platform'] == 'macintosh' ||
windowingsystem == "classic" || windowingsystem == "aqua"
- text("このウィンドウは様々なメニューとカスケードメニューから構成されています。Command-X を入力すると、Xがコマンドキー記号に続いて表示されている文字ならば、アクセラレータを使った項目起動を行うことができます。メニュー要素中、最後のものは、そのメニューの最初の項目を選択することで独立させることができます。")
+ text("Υɥ͡ʥ˥塼ȥɥ˥塼鹽ƤޤCommand-X ϤȡXޥɥ³ɽƤʸʤС졼ȤäܵưԤȤǤޤ˥塼桢ǸΤΤϡΥ˥塼κǽιܤ򤹤뤳ȤΩ뤳ȤǤޤ")
else
- text("このウィンドウは様々なメニューとカスケードメニューから構成されています。Alt-X を入力すると、Xがメニューにアンダーライン付きで表示されている文字ならば、キーボードからの指定ができます。矢印キーでメニューのトラバースも可能です。メニューが指定された際には、スペースキーで実行することができます。あるいは、アンダーライン付きの文字を入力することでも実行できます。メニューのエントリがアクセラレータを持っている場合は、そのアクセラレータを入力することでメニューを指定することなしに実行することができます。メニュー要素中、最後のものは、そのメニューの最初の項目を選択することで独立させることができます。")
+ text("Υɥ͡ʥ˥塼ȥɥ˥塼鹽ƤޤAlt-X ϤȡX˥塼˥饤դɽƤʸʤСܡɤλ꤬Ǥޤǥ˥塼ΥȥСǽǤ˥塼ꤵ줿ݤˤϡڡǼ¹Ԥ뤳ȤǤޤ뤤ϡ饤դʸϤ뤳ȤǤ¹ԤǤޤ˥塼Υȥ꤬졼äƤϡΥ졼Ϥ뤳Ȥǥ˥塼ꤹ뤳Ȥʤ˼¹Ԥ뤳ȤǤޤ˥塼桢ǸΤΤϡΥ˥塼κǽιܤ򤹤뤳ȤΩ뤳ȤǤޤ")
end
}.pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $menu_demo
$menu_demo = nil
@@ -51,25 +51,25 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'menu'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# menu 生成
+# menu
TkMenubutton.new($menu_frame, 'text'=>'File', 'underline'=>0) {|m|
pack('side'=>'left')
TkMenu.new(m, 'tearoff'=>false) {|file_menu|
m.configure('menu'=>file_menu)
- add('command', 'label'=>'開く ...', 'command'=>proc{fail 'これは、デモですので"開く ..."に対するアクションは定義されていません。'})
- add('command', 'label'=>'新規', 'command'=>proc{fail 'これは、デモですので"新規"に対するアクションは定義されていません。'})
- add('command', 'label'=>'保存', 'command'=>proc{fail 'これは、デモですので"保存"に対するアクションは定義されていません。'})
- add('command', 'label'=>'保存(指定) ...', 'command'=>proc{fail 'これは、デモですので"保存(指定) ..."に対するアクションは定義されていません。'})
+ add('command', 'label'=>' ...', 'command'=>proc{fail 'ϡǥǤΤ" ..."Ф륢Ƥޤ'})
+ add('command', 'label'=>'', 'command'=>proc{fail 'ϡǥǤΤ""Ф륢Ƥޤ'})
+ add('command', 'label'=>'¸', 'command'=>proc{fail 'ϡǥǤΤ"¸"Ф륢Ƥޤ'})
+ add('command', 'label'=>'¸() ...', 'command'=>proc{fail 'ϡǥǤΤ"¸() ..."Ф륢Ƥޤ'})
add('separator')
- add('command', 'label'=>'プリント設定 ...', 'command'=>proc{fail 'これは、デモですので"プリント設定 ..."に対するアクションは定義されていません。'})
- add('command', 'label'=>'プリント ...', 'command'=>proc{fail 'これは、デモですので"プリント ..."に対するアクションは定義されていません。'})
+ add('command', 'label'=>'ץ ...', 'command'=>proc{fail 'ϡǥǤΤ"ץ ..."Ф륢Ƥޤ'})
+ add('command', 'label'=>'ץ ...', 'command'=>proc{fail 'ϡǥǤΤ"ץ ..."Ф륢Ƥޤ'})
add('separator')
- add('command', 'label'=>'終了', 'command'=>proc{$menu_demo.destroy})
+ add('command', 'label'=>'λ', 'command'=>proc{$menu_demo.destroy})
}
}
@@ -86,10 +86,10 @@ TkMenubutton.new($menu_frame, 'text'=>'Basic', 'underline'=>0) {|m|
pack('side'=>'left')
TkMenu.new(m, 'tearoff'=>false) {|basic_menu|
m.configure('menu'=>basic_menu)
- add('command', 'label'=>'何もしない長いエントリ')
+ add('command', 'label'=>'⤷ʤĹȥ')
['A','B','C','D','E','F','G'].each{|c|
- # add('command', 'label'=>"文字 \"#{c}\" を印字", 'underline'=>4,
- add('command', 'label'=>"Print letter \"#{c}\" (文字 \"#{c}\" を印字)",
+ # add('command', 'label'=>"ʸ \"#{c}\" ", 'underline'=>4,
+ add('command', 'label'=>"Print letter \"#{c}\" (ʸ \"#{c}\" )",
'underline'=>14, 'accelerator'=>"Meta+#{c}",
'command'=>proc{print c,"\n"}, 'accelerator'=>"#{modifier}+#{c}")
$menu_demo.bind("#{modifier}-#{c.downcase}", proc{print c,"\n"})
@@ -101,58 +101,58 @@ TkMenubutton.new($menu_frame, 'text'=>'Cascades', 'underline'=>0) {|m|
pack('side'=>'left')
TkMenu.new(m, 'tearoff'=>false) {|cascade_menu|
m.configure('menu'=>cascade_menu)
- add('command', 'label'=>'Print hello(こんにちは)',
- 'command'=>proc{print "Hello(こんにちは)\n"},
+ add('command', 'label'=>'Print hello(ˤ)',
+ 'command'=>proc{print "Hello(ˤ)\n"},
'accelerator'=>"#{modifier}+H", 'underline'=>6)
- $menu_demo.bind("#{modifier}-h", proc{print "Hello(こんにちは)\n"})
- add('command', 'label'=>'Print goodbye(さようなら)',
- 'command'=>proc{print "Goodbye(さようなら)\n"},
+ $menu_demo.bind("#{modifier}-h", proc{print "Hello(ˤ)\n"})
+ add('command', 'label'=>'Print goodbye(褦ʤ)',
+ 'command'=>proc{print "Goodbye(褦ʤ)\n"},
'accelerator'=>"#{modifier}+G", 'underline'=>6)
- $menu_demo.bind("#{modifier}-g", proc{print "Goodbye(さようなら)\n"})
+ $menu_demo.bind("#{modifier}-g", proc{print "Goodbye(褦ʤ)\n"})
# TkMenu.new(m, 'tearoff'=>false) {|cascade_check|
TkMenu.new(cascade_menu, 'tearoff'=>false) {|cascade_check|
- cascade_menu.add('cascade', 'label'=>'Check buttons(チェックボタン)',
+ cascade_menu.add('cascade', 'label'=>'Check buttons(åܥ)',
'menu'=>cascade_check, 'underline'=>0)
oil = TkVariable.new(0)
- add('check', 'label'=>'オイル点検', 'variable'=>oil)
+ add('check', 'label'=>'', 'variable'=>oil)
trans = TkVariable.new(0)
- add('check', 'label'=>'トランスミッション点検', 'variable'=>trans)
+ add('check', 'label'=>'ȥ󥹥ߥå', 'variable'=>trans)
brakes = TkVariable.new(0)
- add('check', 'label'=>'ブレーキ点検', 'variable'=>brakes)
+ add('check', 'label'=>'֥졼', 'variable'=>brakes)
lights = TkVariable.new(0)
- add('check', 'label'=>'ライト点検', 'variable'=>lights)
+ add('check', 'label'=>'饤', 'variable'=>lights)
add('separator')
- add('command', 'label'=>'現在の値を表示',
+ add('command', 'label'=>'ߤͤɽ',
'command'=>proc{showVars($menu_demo,
- ['オイル点検', oil],
- ['トランスミッション点検', trans],
- ['ブレーキ点検', brakes],
- ['ライト点検', lights])} )
+ ['', oil],
+ ['ȥ󥹥ߥå', trans],
+ ['֥졼', brakes],
+ ['饤', lights])} )
invoke 1
invoke 3
}
#TkMenu.new(m, 'tearoff'=>false) {|cascade_radio|
TkMenu.new(cascade_menu, 'tearoff'=>false) {|cascade_radio|
- cascade_menu.add('cascade', 'label'=>'Radio buttons(ラジオボタン)',
+ cascade_menu.add('cascade', 'label'=>'Radio buttons(饸ܥ)',
'menu'=>cascade_radio, 'underline'=>0)
pointSize = TkVariable.new
- add('radio', 'label'=>'10 ポイント', 'variable'=>pointSize, 'value'=>10)
- add('radio', 'label'=>'14 ポイント', 'variable'=>pointSize, 'value'=>14)
- add('radio', 'label'=>'18 ポイント', 'variable'=>pointSize, 'value'=>18)
- add('radio', 'label'=>'24 ポイント', 'variable'=>pointSize, 'value'=>24)
- add('radio', 'label'=>'32 ポイント', 'variable'=>pointSize, 'value'=>32)
+ add('radio', 'label'=>'10 ݥ', 'variable'=>pointSize, 'value'=>10)
+ add('radio', 'label'=>'14 ݥ', 'variable'=>pointSize, 'value'=>14)
+ add('radio', 'label'=>'18 ݥ', 'variable'=>pointSize, 'value'=>18)
+ add('radio', 'label'=>'24 ݥ', 'variable'=>pointSize, 'value'=>24)
+ add('radio', 'label'=>'32 ݥ', 'variable'=>pointSize, 'value'=>32)
add('separator')
style = TkVariable.new
- add('radio', 'label'=>'ローマン', 'variable'=>style, 'value'=>'roman')
- add('radio', 'label'=>'ボールド', 'variable'=>style, 'value'=>'bold')
- add('radio', 'label'=>'イタリック', 'variable'=>style, 'value'=>'italic')
+ add('radio', 'label'=>'ޥ', 'variable'=>style, 'value'=>'roman')
+ add('radio', 'label'=>'ܡ', 'variable'=>style, 'value'=>'bold')
+ add('radio', 'label'=>'å', 'variable'=>style, 'value'=>'italic')
add('separator')
- add('command', 'label'=>'現在の値を表示',
+ add('command', 'label'=>'ߤͤɽ',
'command'=>proc{showVars($menu_demo,
- ['ポイントサイズ', pointSize],
- ['スタイル', style])} )
+ ['ݥȥ', pointSize],
+ ['', style])} )
invoke 1
invoke 7
}
@@ -167,9 +167,9 @@ TkMenubutton.new($menu_frame, 'text'=>'Icons', 'underline'=>0) {|m|
'bitmap'=>'@'+[$demo_dir,'..',
'images','pattern.xbm'].join(File::Separator),
'command'=>proc{TkDialog.new('title'=>'Bitmap Menu Entry',
- 'text'=>'今あなたが選択したメニューの項目はテキストではなくビットマップを表示していました。それ以外の点では他のメニュー項目と変わりません。',
+ 'text'=>'ʤ򤷤˥塼ιܤϥƥȤǤϤʤӥåȥޥåפɽƤޤʳǤ¾Υ˥塼ܤѤޤ',
'bitmap'=>'', 'default'=>0,
- 'buttons'=>'了解')} )
+ 'buttons'=>'λ')} )
['info', 'questhead', 'error'].each{|icon|
add('command', 'bitmap'=>icon,
'command'=>proc{print "You invoked the #{icon} bitmap\n"})
@@ -181,8 +181,8 @@ TkMenubutton.new($menu_frame, 'text'=>'More', 'underline'=>0) {|m|
pack('side'=>'left')
TkMenu.new(m, 'tearoff'=>false) {|more_menu|
m.configure('menu'=>more_menu)
- [ 'エントリ','別のエントリ','何もしない','ほとんど何もしない',
- '人生を意義あるものに' ].each{|i|
+ [ 'ȥ','̤Υȥ','⤷ʤ','ۤȤɲ⤷ʤ',
+ 'յΤ' ].each{|i|
add('command', 'label'=>i,
'command'=>proc{print "You invoked \"#{i}\"\n"})
}
diff --git a/ext/tk/sample/demos-jp/menu84.rb b/ext/tk/sample/demos-jp/menu84.rb
index 6a57279481..094853a728 100644
--- a/ext/tk/sample/demos-jp/menu84.rb
+++ b/ext/tk/sample/demos-jp/menu84.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# menus widget demo (called by 'widget')
#
@@ -28,9 +28,9 @@ end
TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left') {
if $tk_platform['platform'] == 'macintosh' ||
windowingsystem == "classic" || windowingsystem == "aqua"
- text("このウィンドウにはカスケードメニューを持つメニューバーが付けられています。Command+x ('x'はコマンドキーシンボルに続けて表示されている文字です) とタイプすることによっても項目の機能を呼び出すことができます。最後のメニューは、マウスでウィンドウの外にドラッグすることによって、独立したパレットとなるように切り放すことが可能です。")
+ text("Υɥˤϥɥ˥塼ĥ˥塼СդƤޤCommand+x ('x'ϥޥɥܥ³ɽƤʸǤ) ȥפ뤳ȤˤäƤܤεǽƤӽФȤǤޤǸΥ˥塼ϡޥǥɥγ˥ɥå뤳ȤˤäơΩѥåȤȤʤ褦ڤȤǽǤ")
else
- text("このウィンドウにはカスケードメニューを持つメニューバーが付けられています。Alt+x ('x'はメニュー上で下線が引かれた文字です) とタイプすることによってもメニューを呼び出すことができます。矢印キーを使って、メニュー間を移動することも可能です。メニューが表示されている時には、現在位置の項目をスペースキーで選択したり、下線が引かれた文字を入力することでその項目を選択したりすることができます。もし項目にアクセラレータの指定がなされていたならば、その指定されたキー入力を行うことで、メニューを表示させることなく直接その項目の機能を呼び出せます。最後のメニューは、メニューの最初の項目を選択することによって、独立したパレットとなるように切り放すことが可能です。")
+ text("Υɥˤϥɥ˥塼ĥ˥塼СդƤޤAlt+x ('x'ϥ˥塼Dz줿ʸǤ) ȥפ뤳ȤˤäƤ˥塼ƤӽФȤǤޤȤäơ˥塼֤ư뤳ȤǽǤ˥塼ɽƤˤϡ֤߰ιܤ򥹥ڡ򤷤ꡢ줿ʸϤ뤳ȤǤιܤ򤷤ꤹ뤳ȤǤޤ⤷ܤ˥졼λ꤬ʤƤʤСλꤵ줿ϤԤȤǡ˥塼ɽ뤳ȤʤľܤιܤεǽƤӽФޤǸΥ˥塼ϡ˥塼κǽιܤ򤹤뤳ȤˤäơΩѥåȤȤʤ褦ڤȤǽǤ")
end
}.pack('side'=>'top')
@@ -48,8 +48,8 @@ TkFrame.new(base_frame) {|frame|
# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $menu84_demo
$menu84_demo = nil
@@ -58,7 +58,7 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'menu84'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
@@ -70,13 +70,13 @@ $menu84_frame = TkMenu.new($menu84_demo, 'tearoff'=>false)
# menu
TkMenu.new($menu84_frame, 'tearoff'=>false) {|m|
$menu84_frame.add('cascade', 'label'=>'File', 'menu'=>m, 'underline'=>0)
- add('command', 'label'=>'Open...', 'command'=>proc{fail 'これは単なるデモですから、"Open..." 項目の機能は特に定義されてはいません。'})
- add('command', 'label'=>'New', 'command'=>proc{fail 'これは単なるデモですから、"New" 項目の機能は特に定義されてはいません。'})
- add('command', 'label'=>'Save', 'command'=>proc{fail 'これは単なるデモですから、"Save" 項目の機能は特に定義されてはいません。'})
- add('command', 'label'=>'Save As...', 'command'=>proc{fail 'これは単なるデモですから、"Save As..." 項目の機能は特に定義されてはいません。'})
+ add('command', 'label'=>'Open...', 'command'=>proc{fail 'ñʤǥǤ顢"Open..." ܤεǽäƤϤޤ'})
+ add('command', 'label'=>'New', 'command'=>proc{fail 'ñʤǥǤ顢"New" ܤεǽäƤϤޤ'})
+ add('command', 'label'=>'Save', 'command'=>proc{fail 'ñʤǥǤ顢"Save" ܤεǽäƤϤޤ'})
+ add('command', 'label'=>'Save As...', 'command'=>proc{fail 'ñʤǥǤ顢"Save As..." ܤεǽäƤϤޤ'})
add('separator')
- add('command', 'label'=>'Print Setup...', 'command'=>proc{fail 'これは単なるデモですから、"Print Setup..." 項目の機能は特に定義されてはいません。'})
- add('command', 'label'=>'Print...', 'command'=>proc{fail 'これは単なるデモですから、"Print..." 項目の機能は特に定義されてはいません。'})
+ add('command', 'label'=>'Print Setup...', 'command'=>proc{fail 'ñʤǥǤ顢"Print Setup..." ܤεǽäƤϤޤ'})
+ add('command', 'label'=>'Print...', 'command'=>proc{fail 'ñʤǥǤ顢"Print..." ܤεǽäƤϤޤ'})
add('separator')
add('command', 'label'=>'Dismiss Menus Demo', 'command'=>proc{$menu84_demo.destroy})
}
@@ -116,20 +116,20 @@ TkMenu.new($menu84_frame, 'tearoff'=>false) {|m|
m.add('cascade', 'label'=>'Check button',
'menu'=>cascade_check, 'underline'=>0)
oil = TkVariable.new(0)
- add('check', 'label'=>'オイル検査', 'variable'=>oil)
+ add('check', 'label'=>'븡', 'variable'=>oil)
trans = TkVariable.new(0)
- add('check', 'label'=>'トランスミッション検査', 'variable'=>trans)
+ add('check', 'label'=>'ȥ󥹥ߥå󸡺', 'variable'=>trans)
brakes = TkVariable.new(0)
- add('check', 'label'=>'ブレーキ検査', 'variable'=>brakes)
+ add('check', 'label'=>'֥졼', 'variable'=>brakes)
lights = TkVariable.new(0)
- add('check', 'label'=>'ライト検査', 'variable'=>lights)
+ add('check', 'label'=>'饤ȸ', 'variable'=>lights)
add('separator')
add('command', 'label'=>'Show current values',
'command'=>proc{showVars($menu84_demo,
- ['オイル', oil],
- ['トランスミッション', trans],
- ['ブレーキ', brakes],
- ['ライト', lights])} )
+ ['', oil],
+ ['ȥ󥹥ߥå', trans],
+ ['֥졼', brakes],
+ ['饤', lights])} )
invoke 1
invoke 3
}
@@ -149,7 +149,7 @@ TkMenu.new($menu84_frame, 'tearoff'=>false) {|m|
add('radio', 'label'=>'Bold', 'variable'=>style, 'value'=>'bold')
add('radio', 'label'=>'Italic', 'variable'=>style, 'value'=>'italic')
add('separator')
- add('command', 'label'=>'現在値の表示',
+ add('command', 'label'=>'ͤɽ',
'command'=>proc{showVars($menu84_demo,
['pointSize', pointSize],
['style', style])} )
@@ -164,9 +164,9 @@ TkMenu.new($menu84_frame, 'tearoff'=>false) {|m|
'bitmap'=>'@'+[$demo_dir,'..',
'images','pattern.xbm'].join(File::Separator),
'command'=>proc{TkDialog.new('title'=>'Bitmap Menu Entry',
- 'text'=>'あなたが選択したメニュー項目は、文字列の代わりにビットマップイメージで項目を表示したものです。それ以外の点では、ほかのメニュー項目との間で特に違いがあるわけではありません。',
+ 'text'=>'ʤ򤷤˥塼ܤϡʸ˥ӥåȥޥåץ᡼ǹܤɽΤǤʳǤϡۤΥ˥塼ܤȤδ֤ä˰㤤櫓ǤϤޤ',
'bitmap'=>'', 'default'=>0,
- 'buttons'=>'閉じる')} )
+ 'buttons'=>'Ĥ')} )
['info', 'questhead', 'error'].each{|icon|
add('command', 'bitmap'=>icon, 'hidemargin'=>1,
'command'=>proc{print "You invoked the #{icon} bitmap\n"})
@@ -187,8 +187,8 @@ TkMenu.new($menu84_frame, 'tearoff'=>false) {|m|
'bitmap'=>'questhead', 'compound'=>'left',
'command'=>proc{
TkDialog.new('title'=>'Compound Menu Entry',
- 'message'=>'あなたが選択したメニュー項目は、ビットマップイメージと文字列とを同時に一つの項目に表示するようにしたものです。それ以外の点では、ほかのメニュー項目との間で特に違いがあるわけではありません。',
- 'buttons'=>['了解'], 'bitmap'=>'')
+ 'message'=>'ʤ򤷤˥塼ܤϡӥåȥޥåץ᡼ʸȤƱ˰Ĥιܤɽ褦ˤΤǤʳǤϡۤΥ˥塼ܤȤδ֤ä˰㤤櫓ǤϤޤ',
+ 'buttons'=>['λ'], 'bitmap'=>'')
})
}
diff --git a/ext/tk/sample/demos-jp/menu8x.rb b/ext/tk/sample/demos-jp/menu8x.rb
index 77ecb5bcf3..49aca6786d 100644
--- a/ext/tk/sample/demos-jp/menu8x.rb
+++ b/ext/tk/sample/demos-jp/menu8x.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# menus widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($menu8x_demo) && $menu8x_demo
$menu8x_demo.destroy
$menu8x_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$menu8x_demo = TkToplevel.new {|w|
title("Menu Demonstration (Tk8.x)")
iconname("menu")
@@ -21,16 +21,16 @@ base_frame = TkFrame.new($menu8x_demo).pack(:fill=>:both, :expand=>true)
# version check
if $tk_version.to_f < 8.0
-# label 生成
+# label
TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left') {
- text("実行しようとしたスクリプトは Tk8.0 以上で利用できる機能を利用しているため、あなたの Ruby#{VERSION}/Tk#{$tk_version}#{(Tk::JAPANIZED_TK)? 'jp': ''} では正常に実行できません。よってデモの実行を中止しました。ただし、下のコード参照ボタンを押すことで、実行が中止されたスクリプトのソースを参照することは可能です。")
+ text("¹Ԥ褦ȤץȤ Tk8.0 ʾѤǤ뵡ǽѤƤ뤿ᡢʤ Ruby#{VERSION}/Tk#{$tk_version}#{(Tk::JAPANIZED_TK)? 'jp': ''} Ǥ˼¹ԤǤޤ󡣤äƥǥμ¹ԤߤޤΥɻȥܥ򲡤Ȥǡ¹Ԥߤ줿ץȤΥ򻲾Ȥ뤳ȤϲǽǤ")
}.pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $menu8x_demo
$menu8x_demo = nil
@@ -39,7 +39,7 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'menu8x'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
@@ -52,17 +52,17 @@ rescue
windowingsystem = ""
end
-# label 生成
+# label
TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left') {
if $tk_platform['platform'] == 'macintosh' ||
windowingsystem == "classic" || windowingsystem == "aqua"
- text("このウィンドウは様々なメニューとカスケードメニューから構成されています。Command-X を入力すると、Xがコマンドキー記号に続いて表示されている文字ならば、アクセラレータを使った項目起動を行うことができます。メニュー要素中、最後のものは、そのメニューの最初の項目を選択することで独立させることができます。")
+ text("Υɥ͡ʥ˥塼ȥɥ˥塼鹽ƤޤCommand-X ϤȡXޥɥ³ɽƤʸʤС졼ȤäܵưԤȤǤޤ˥塼桢ǸΤΤϡΥ˥塼κǽιܤ򤹤뤳ȤΩ뤳ȤǤޤ")
else
- text("このウィンドウは様々なメニューとカスケードメニューから構成されています。Alt-X を入力すると、Xがメニューにアンダーライン付きで表示されている文字ならば、キーボードからの指定ができます。矢印キーでメニューのトラバースも可能です。メニューが指定された際には、スペースキーで実行することができます。あるいは、アンダーライン付きの文字を入力することでも実行できます。メニューのエントリがアクセラレータを持っている場合は、そのアクセラレータを入力することでメニューを指定することなしに実行することができます。メニュー要素中、最後のものは、そのメニューの最初の項目を選択することで独立させることができます。")
+ text("Υɥ͡ʥ˥塼ȥɥ˥塼鹽ƤޤAlt-X ϤȡX˥塼˥饤դɽƤʸʤСܡɤλ꤬Ǥޤǥ˥塼ΥȥСǽǤ˥塼ꤵ줿ݤˤϡڡǼ¹Ԥ뤳ȤǤޤ뤤ϡ饤դʸϤ뤳ȤǤ¹ԤǤޤ˥塼Υȥ꤬졼äƤϡΥ졼Ϥ뤳Ȥǥ˥塼ꤹ뤳Ȥʤ˼¹Ԥ뤳ȤǤޤ˥塼桢ǸΤΤϡΥ˥塼κǽιܤ򤹤뤳ȤΩ뤳ȤǤޤ")
end
}.pack('side'=>'top')
-# 状態表示の生成
+# ɽ
$menu8xstatus = TkVariable.new(" ")
TkFrame.new(base_frame) {|frame|
TkLabel.new(frame, 'textvariable'=>$menu8xstatus, 'relief'=>'sunken',
@@ -70,11 +70,11 @@ TkFrame.new(base_frame) {|frame|
.pack('side'=>'left', 'padx'=>2, 'expand'=>'yes', 'fill'=>'both')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>2)
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $menu8x_demo
$menu8x_demo = nil
@@ -83,24 +83,24 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'menu8x'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# menu 生成
+# menu
TkMenu.new($menu8x_demo, 'tearoff'=>false) {|m|
TkMenu.new(m, 'tearoff'=>false) {|file_menu|
m.add('cascade', 'label'=>'File', 'menu'=>file_menu, 'underline'=>0)
- add('command', 'label'=>'開く ...', 'command'=>proc{fail 'これは、デモですので"開く ..."に対するアクションは定義されていません。'})
- add('command', 'label'=>'新規', 'command'=>proc{fail 'これは、デモですので"新規"に対するアクションは定義されていません。'})
- add('command', 'label'=>'保存', 'command'=>proc{fail 'これは、デモですので"保存"に対するアクションは定義されていません。'})
- add('command', 'label'=>'保存(指定) ...', 'command'=>proc{fail 'これは、デモですので"保存(指定) ..."に対するアクションは定義されていません。'})
+ add('command', 'label'=>' ...', 'command'=>proc{fail 'ϡǥǤΤ" ..."Ф륢Ƥޤ'})
+ add('command', 'label'=>'', 'command'=>proc{fail 'ϡǥǤΤ""Ф륢Ƥޤ'})
+ add('command', 'label'=>'¸', 'command'=>proc{fail 'ϡǥǤΤ"¸"Ф륢Ƥޤ'})
+ add('command', 'label'=>'¸() ...', 'command'=>proc{fail 'ϡǥǤΤ"¸() ..."Ф륢Ƥޤ'})
add('separator')
- add('command', 'label'=>'プリント設定 ...', 'command'=>proc{fail 'これは、デモですので"プリント設定 ..."に対するアクションは定義されていません。'})
- add('command', 'label'=>'プリント ...', 'command'=>proc{fail 'これは、デモですので"プリント ..."に対するアクションは定義されていません。'})
+ add('command', 'label'=>'ץ ...', 'command'=>proc{fail 'ϡǥǤΤ"ץ ..."Ф륢Ƥޤ'})
+ add('command', 'label'=>'ץ ...', 'command'=>proc{fail 'ϡǥǤΤ"ץ ..."Ф륢Ƥޤ'})
add('separator')
- add('command', 'label'=>'終了', 'command'=>proc{$menu8x_demo.destroy})
+ add('command', 'label'=>'λ', 'command'=>proc{$menu8x_demo.destroy})
}
if $tk_platform['platform'] == 'macintosh' ||
@@ -114,10 +114,10 @@ TkMenu.new($menu8x_demo, 'tearoff'=>false) {|m|
TkMenu.new(m, 'tearoff'=>false) {|basic_menu|
m.add('cascade', 'label'=>'Basic', 'menu'=>basic_menu, 'underline'=>0)
- add('command', 'label'=>'何もしない長いエントリ')
+ add('command', 'label'=>'⤷ʤĹȥ')
['A','B','C','D','E','F','G'].each{|c|
- # add('command', 'label'=>"文字 \"#{c}\" を印字", 'underline'=>4,
- add('command', 'label'=>"Print letter \"#{c}\" (文字 \"#{c}\" を印字)",
+ # add('command', 'label'=>"ʸ \"#{c}\" ", 'underline'=>4,
+ add('command', 'label'=>"Print letter \"#{c}\" (ʸ \"#{c}\" )",
'underline'=>14, 'accelerator'=>"Meta+#{c}",
'command'=>proc{print c,"\n"}, 'accelerator'=>"#{modifier}+#{c}")
$menu8x_demo.bind("#{modifier}-#{c.downcase}", proc{print c,"\n"})
@@ -126,56 +126,56 @@ TkMenu.new($menu8x_demo, 'tearoff'=>false) {|m|
TkMenu.new(m, 'tearoff'=>false) {|cascade_menu|
m.add('cascade', 'label'=>'Cascades', 'menu'=>cascade_menu, 'underline'=>0)
- add('command', 'label'=>'Print hello(こんにちは)',
- 'command'=>proc{print "Hello(こんにちは)\n"},
+ add('command', 'label'=>'Print hello(ˤ)',
+ 'command'=>proc{print "Hello(ˤ)\n"},
'accelerator'=>"#{modifier}+H", 'underline'=>6)
- $menu8x_demo.bind("#{modifier}-h", proc{print "Hello(こんにちは)\n"})
- add('command', 'label'=>'Print goodbye(さようなら)',
- 'command'=>proc{print "Goodbye(さようなら)\n"},
+ $menu8x_demo.bind("#{modifier}-h", proc{print "Hello(ˤ)\n"})
+ add('command', 'label'=>'Print goodbye(褦ʤ)',
+ 'command'=>proc{print "Goodbye(褦ʤ)\n"},
'accelerator'=>"#{modifier}+G", 'underline'=>6)
- $menu8x_demo.bind("#{modifier}-g", proc{print "Goodbye(さようなら)\n"})
+ $menu8x_demo.bind("#{modifier}-g", proc{print "Goodbye(褦ʤ)\n"})
TkMenu.new(m, 'tearoff'=>false) {|cascade_check|
- cascade_menu.add('cascade', 'label'=>'Check buttons(チェックボタン)',
+ cascade_menu.add('cascade', 'label'=>'Check buttons(åܥ)',
'menu'=>cascade_check, 'underline'=>0)
oil = TkVariable.new(0)
- add('check', 'label'=>'オイル点検', 'variable'=>oil)
+ add('check', 'label'=>'', 'variable'=>oil)
trans = TkVariable.new(0)
- add('check', 'label'=>'トランスミッション点検', 'variable'=>trans)
+ add('check', 'label'=>'ȥ󥹥ߥå', 'variable'=>trans)
brakes = TkVariable.new(0)
- add('check', 'label'=>'ブレーキ点検', 'variable'=>brakes)
+ add('check', 'label'=>'֥졼', 'variable'=>brakes)
lights = TkVariable.new(0)
- add('check', 'label'=>'ライト点検', 'variable'=>lights)
+ add('check', 'label'=>'饤', 'variable'=>lights)
add('separator')
- add('command', 'label'=>'現在の値を表示',
+ add('command', 'label'=>'ߤͤɽ',
'command'=>proc{showVars($menu8x_demo,
- ['オイル点検', oil],
- ['トランスミッション点検', trans],
- ['ブレーキ点検', brakes],
- ['ライト点検', lights])} )
+ ['', oil],
+ ['ȥ󥹥ߥå', trans],
+ ['֥졼', brakes],
+ ['饤', lights])} )
invoke 1
invoke 3
}
TkMenu.new(m, 'tearoff'=>false) {|cascade_radio|
- cascade_menu.add('cascade', 'label'=>'Radio buttons(ラジオボタン)',
+ cascade_menu.add('cascade', 'label'=>'Radio buttons(饸ܥ)',
'menu'=>cascade_radio, 'underline'=>0)
pointSize = TkVariable.new
- add('radio', 'label'=>'10 ポイント', 'variable'=>pointSize, 'value'=>10)
- add('radio', 'label'=>'14 ポイント', 'variable'=>pointSize, 'value'=>14)
- add('radio', 'label'=>'18 ポイント', 'variable'=>pointSize, 'value'=>18)
- add('radio', 'label'=>'24 ポイント', 'variable'=>pointSize, 'value'=>24)
- add('radio', 'label'=>'32 ポイント', 'variable'=>pointSize, 'value'=>32)
+ add('radio', 'label'=>'10 ݥ', 'variable'=>pointSize, 'value'=>10)
+ add('radio', 'label'=>'14 ݥ', 'variable'=>pointSize, 'value'=>14)
+ add('radio', 'label'=>'18 ݥ', 'variable'=>pointSize, 'value'=>18)
+ add('radio', 'label'=>'24 ݥ', 'variable'=>pointSize, 'value'=>24)
+ add('radio', 'label'=>'32 ݥ', 'variable'=>pointSize, 'value'=>32)
add('separator')
style = TkVariable.new
- add('radio', 'label'=>'ローマン', 'variable'=>style, 'value'=>'roman')
- add('radio', 'label'=>'ボールド', 'variable'=>style, 'value'=>'bold')
- add('radio', 'label'=>'イタリック', 'variable'=>style, 'value'=>'italic')
+ add('radio', 'label'=>'ޥ', 'variable'=>style, 'value'=>'roman')
+ add('radio', 'label'=>'ܡ', 'variable'=>style, 'value'=>'bold')
+ add('radio', 'label'=>'å', 'variable'=>style, 'value'=>'italic')
add('separator')
- add('command', 'label'=>'現在の値を表示',
+ add('command', 'label'=>'ߤͤɽ',
'command'=>proc{showVars($menu8x_demo,
- ['ポイントサイズ', pointSize],
- ['スタイル', style])} )
+ ['ݥȥ', pointSize],
+ ['', style])} )
invoke 1
invoke 7
}
@@ -188,9 +188,9 @@ TkMenu.new($menu8x_demo, 'tearoff'=>false) {|m|
'images','pattern.xbm'].join(File::Separator),
'hidemargin'=>1,
'command'=>proc{TkDialog.new('title'=>'Bitmap Menu Entry',
- 'text'=>'今あなたが選択したメニューの項目はテキストではなくビットマップを表示していました。それ以外の点では他のメニュー項目と変わりません。',
+ 'text'=>'ʤ򤷤˥塼ιܤϥƥȤǤϤʤӥåȥޥåפɽƤޤʳǤ¾Υ˥塼ܤѤޤ',
'bitmap'=>'', 'default'=>0,
- 'buttons'=>'了解')} )
+ 'buttons'=>'λ')} )
['info', 'questhead', 'error'].each{|icon|
add('command', 'bitmap'=>icon, 'hidemargin'=>1,
'command'=>proc{print "You invoked the #{icon} bitmap\n"})
@@ -201,8 +201,8 @@ TkMenu.new($menu8x_demo, 'tearoff'=>false) {|m|
TkMenu.new(m, 'tearoff'=>false) {|more_menu|
m.add('cascade', 'label'=>'More', 'menu'=>more_menu, 'underline'=>0)
- [ 'エントリ','別のエントリ','何もしない','ほとんど何もしない',
- '人生を意義あるものに' ].each{|i|
+ [ 'ȥ','̤Υȥ','⤷ʤ','ۤȤɲ⤷ʤ',
+ 'յΤ' ].each{|i|
add('command', 'label'=>i,
'command'=>proc{print "You invoked \"#{i}\"\n"})
}
diff --git a/ext/tk/sample/demos-jp/menubu.rb b/ext/tk/sample/demos-jp/menubu.rb
index 06f9eb875e..78418ce3ea 100644
--- a/ext/tk/sample/demos-jp/menubu.rb
+++ b/ext/tk/sample/demos-jp/menubu.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
require "tkcanvas"
def optionMenu(menubutton, varName, firstValue, *rest)
@@ -38,16 +38,16 @@ base_frame = TkFrame.new($menubu_demo).pack(:fill=>:both, :expand=>true)
# version check
if $tk_version.to_f < 8.0
-# label 生成
+# label
TkLabel.new(base_frame,'font'=>$font,'wraplength'=>'4i','justify'=>'left') {
- text("実行しようとしたスクリプトは Tk8.0 以上で利用できる機能を利用しているため、あなたの Ruby#{VERSION}/Tk#{$tk_version}#{(Tk::JAPANIZED_TK)? 'jp': ''} では正常に実行できません。よってデモの実行を中止しました。ただし、下のコード参照ボタンを押すことで、実行が中止されたスクリプトのソースを参照することは可能です。")
+ text("¹Ԥ褦ȤץȤ Tk8.0 ʾѤǤ뵡ǽѤƤ뤿ᡢʤ Ruby#{VERSION}/Tk#{$tk_version}#{(Tk::JAPANIZED_TK)? 'jp': ''} Ǥ˼¹ԤǤޤ󡣤äƥǥμ¹ԤߤޤΥɻȥܥ򲡤Ȥǡ¹Ԥߤ줿ץȤΥ򻲾Ȥ뤳ȤϲǽǤ")
}.pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $menubu_demo
$menubu_demo = nil
@@ -56,7 +56,7 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'menubu'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
@@ -160,8 +160,8 @@ center = TkFrame.new(body) {
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc {
tmppath = $menubu_demo
$menubu_demo = nil
@@ -170,7 +170,7 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc { showCode 'menubu' }
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'expand'=>'yes', 'fill'=>'x', 'pady'=>'2m')
@@ -179,10 +179,10 @@ msg = TkLabel.new(center) {
# font $font
wraplength '4i'
justify 'left'
- text "これはメニューボタンのデモです。\"Below\"のボタンは\
-下にメニューを出し、\"Right\"のボタンは右にメニューを出して、\
-……となります。この文章の下には2つのオプションメニューがあります。\
-1つは普通のメニューで、もう1つは16色のパレットです。"
+ text "ϥ˥塼ܥΥǥǤ\"Below\"Υܥ\
+˥˥塼Ф\"Right\"Υܥϱ˥˥塼Фơ\
+ġĤȤʤޤʸϤβˤ2ĤΥץ˥塼ޤ\
+1Ĥ̤Υ˥塼ǡ⤦1Ĥ16ΥѥåȤǤ"
}
msg.pack('side'=>'top', 'padx'=>25, 'pady'=>25)
diff --git a/ext/tk/sample/demos-jp/msgbox.rb b/ext/tk/sample/demos-jp/msgbox.rb
index ec7b4f2bbc..ed5d01252e 100644
--- a/ext/tk/sample/demos-jp/msgbox.rb
+++ b/ext/tk/sample/demos-jp/msgbox.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# message boxes widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($msgbox_demo) && $msgbox_demo
$msgbox_demo.destroy
$msgbox_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$msgbox_demo = TkToplevel.new {|w|
title("Message Box Demonstration")
iconname("messagebox")
@@ -18,15 +18,15 @@ $msgbox_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($msgbox_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'4i', 'justify'=>'left',
- 'text'=>"まず表示するアイコンとメッセージボックスの種類を選んで下さい。その後に\"メッセージボックス\"ボタンを押すと、指定したメッセージボックスが表示されます。").pack('side'=>'top')
+ 'text'=>"ޤɽ륢ȥåܥåμDzθ\"åܥå\"ܥ򲡤ȡꤷåܥåɽޤ").pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $msgbox_demo
$msgbox_demo = nil
@@ -35,17 +35,17 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'msgbox'}
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'メッセージボックス'
+ text 'åܥå'
command proc{showMessageBox $msgbox_demo}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# frame 生成
+# frame
$msgbox_leftframe = TkFrame.new(base_frame)
$msgbox_rightframe = TkFrame.new(base_frame)
$msgbox_leftframe .pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y',
@@ -53,7 +53,7 @@ $msgbox_leftframe .pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y',
$msgbox_rightframe.pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y',
'pady'=>'.5c', 'padx'=>'.5c')
-TkLabel.new($msgbox_leftframe, 'text'=>'アイコン').pack('side'=>'top')
+TkLabel.new($msgbox_leftframe, 'text'=>'').pack('side'=>'top')
TkFrame.new($msgbox_leftframe, 'relief'=>'ridge', 'bd'=>1, 'height'=>2)\
.pack('side'=>'top', 'fill'=>'x', 'expand'=>'no')
@@ -65,7 +65,7 @@ $msgboxIcon = TkVariable.new('info')
'anchor'=>'w', 'fill'=>'x')
}
-TkLabel.new($msgbox_rightframe, 'text'=>'種類').pack('side'=>'top')
+TkLabel.new($msgbox_rightframe, 'text'=>'').pack('side'=>'top')
TkFrame.new($msgbox_rightframe, 'relief'=>'ridge', 'bd'=>1, 'height'=>2)\
.pack('side'=>'top', 'fill'=>'x', 'expand'=>'no')
@@ -81,9 +81,9 @@ $msgboxType = TkVariable.new('ok')
def showMessageBox(w)
button = Tk.messageBox('icon'=>$msgboxIcon.value, 'type'=>$msgboxType.value,
'title'=>'Message', 'parent'=>w,
- 'message'=>"これは\"#{$msgboxType.value}\"という種類のメッセージボックスで、\"#{$msgboxIcon.value}\"のアイコンが表示されています。")
+ 'message'=>"\"#{$msgboxType.value}\"ȤΥåܥåǡ\"#{$msgboxIcon.value}\"ΥɽƤޤ")
Tk.messageBox('icon'=>'info', 'type'=>'ok', 'parent'=>w,
- 'message'=>"あなたは \"#{button}\" を押しましたね。")
+ 'message'=>"ʤ \"#{button}\" 򲡤ޤ͡")
end
diff --git a/ext/tk/sample/demos-jp/msgbox2.rb b/ext/tk/sample/demos-jp/msgbox2.rb
index ad6d936036..8c80e08d70 100644
--- a/ext/tk/sample/demos-jp/msgbox2.rb
+++ b/ext/tk/sample/demos-jp/msgbox2.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# message boxes widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($msgbox2_demo) && $msgbox2_demo
$msgbox2_demo.destroy
$msgbox2_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$msgbox2_demo = TkToplevel.new {|w|
title("Message Box Demonstration")
iconname("messagebox")
@@ -18,15 +18,15 @@ $msgbox2_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($msgbox2_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'4i', 'justify'=>'left',
- 'text'=>"まず表示するアイコンとメッセージボックスの種類を選んで下さい。その後に\"メッセージボックス\"ボタンを押すと、指定された形式で、メッセージと詳細テキストとを持ったメッセージボックスが表示されます。").pack('side'=>'top')
+ 'text'=>"ޤɽ륢ȥåܥåμDzθ\"åܥå\"ܥ򲡤ȡꤵ줿ǡåȾܺ٥ƥȤȤäåܥåɽޤ").pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $msgbox2_demo
$msgbox2_demo = nil
@@ -35,17 +35,17 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'msgbox2'}
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'メッセージボックス'
+ text 'åܥå'
command proc{showMessageBox2 $msgbox2_demo}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# frame 生成
+# frame
$msgbox_leftframe = TkFrame.new(base_frame)
$msgbox_rightframe = TkFrame.new(base_frame)
$msgbox_leftframe .pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y',
@@ -53,7 +53,7 @@ $msgbox_leftframe .pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y',
$msgbox_rightframe.pack('side'=>'left', 'expand'=>'yes', 'fill'=>'y',
'pady'=>'.5c', 'padx'=>'.5c')
-TkLabel.new($msgbox_leftframe, 'text'=>'アイコン').pack('side'=>'top')
+TkLabel.new($msgbox_leftframe, 'text'=>'').pack('side'=>'top')
TkFrame.new($msgbox_leftframe, 'relief'=>'ridge', 'bd'=>1, 'height'=>2)\
.pack('side'=>'top', 'fill'=>'x', 'expand'=>'no')
@@ -65,7 +65,7 @@ $msgboxIcon = TkVariable.new('info')
'anchor'=>'w', 'fill'=>'x')
}
-TkLabel.new($msgbox_rightframe, 'text'=>'種類').pack('side'=>'top')
+TkLabel.new($msgbox_rightframe, 'text'=>'').pack('side'=>'top')
TkFrame.new($msgbox_rightframe, 'relief'=>'ridge', 'bd'=>1, 'height'=>2)\
.pack('side'=>'top', 'fill'=>'x', 'expand'=>'no')
@@ -81,10 +81,10 @@ $msgboxType = TkVariable.new('ok')
def showMessageBox2(w)
button = Tk.messageBox('icon'=>$msgboxIcon.value, 'type'=>$msgboxType.value,
'title'=>'Message', 'parent'=>w,
- 'message'=>"\"#{$msgboxType.value}\"タイプのメッセージボックス",
- 'detail'=>"これは\"#{$msgboxType.value}\"という種類のメッセージボックスで、\"#{$msgboxIcon.value}\"のアイコンが表示されています。下のボタンのいずれかを選択してクリックしてください。")
+ 'message'=>"\"#{$msgboxType.value}\"פΥåܥå",
+ 'detail'=>"\"#{$msgboxType.value}\"ȤΥåܥåǡ\"#{$msgboxIcon.value}\"ΥɽƤޤΥܥΤ줫򤷤ƥåƤ")
Tk.messageBox('icon'=>'info', 'type'=>'ok', 'parent'=>w,
- 'message'=>"あなたは \"#{button}\" を押しましたね。")
+ 'message'=>"ʤ \"#{button}\" 򲡤ޤ͡")
end
diff --git a/ext/tk/sample/demos-jp/paned1.rb b/ext/tk/sample/demos-jp/paned1.rb
index 53d2e7162b..987a073086 100644
--- a/ext/tk/sample/demos-jp/paned1.rb
+++ b/ext/tk/sample/demos-jp/paned1.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# paned1.rb
#
@@ -23,23 +23,23 @@ base_frame = TkFrame.new($paned1_demo).pack(:fill=>:both, :expand=>true)
TkLabel.new(base_frame,
:font=>$font, :wraplength=>'4i', :justify=>:left,
:text=><<EOL).pack(:side=>:top)
-下の色付けされた二つのウィンドウの間の仕切り枠は、一つの領域をそれぞれのウィンドウのために分割するためのものです。左ボタンで仕切りを操作すると、分割サイズ変更の操作途中では再表示はなされず、確定させたときに表示が更新されます。マウスによる仕切りの操作に追随してサイズを変更した表示がなわれるようにしたい場合は、マウスの中央ボタンを使ってください。
-もしあなたが使っている Ruby にリンクされている Tk ライブラリが panedwindow を実装していない
-場合、このデモはうまく動かないはずです。その場合には panedwindow が実装されているような
-より新しいバージョンの Tk を組み合わせて試す
-ようにしてください。
+οդ줿ĤΥɥδ֤λڤȤϡĤΰ򤽤줾ΥɥΤʬ䤹뤿ΤΤǤܥǻڤȡʬ䥵ѹǤϺɽϤʤ줺ꤵȤɽޤޥˤڤɿ路ƥѹɽʤ褦ˤϡޥܥȤäƤ
+⤷ʤȤäƤ Ruby ˥󥯤Ƥ Tk 饤֥꤬ panedwindow Ƥʤ
+硢ΥǥϤޤưʤϤǤξˤ panedwindow Ƥ褦
+꿷С Tk Ȥ߹碌ƻ
+褦ˤƤ
EOL
# The bottom buttons
TkFrame.new(base_frame){|f|
pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
- TkButton.new(f, :text=>'閉じる', :width=>15, :command=>proc{
+ TkButton.new(f, :text=>'Ĥ', :width=>15, :command=>proc{
$paned1_demo.destroy
$paned1_demo = nil
}).pack(:side=>:left, :expand=>true)
- TkButton.new(f, :text=>'コード参照', :width=>15, :command=>proc{
+ TkButton.new(f, :text=>'ɻ', :width=>15, :command=>proc{
showCode 'paned1'
}).pack(:side=>:left, :expand=>true)
}
diff --git a/ext/tk/sample/demos-jp/paned2.rb b/ext/tk/sample/demos-jp/paned2.rb
index 65bd41c757..a1aee81690 100644
--- a/ext/tk/sample/demos-jp/paned2.rb
+++ b/ext/tk/sample/demos-jp/paned2.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# paned2.rb --
#
@@ -23,30 +23,30 @@ base_frame = TkFrame.new($paned2_demo).pack(:fill=>:both, :expand=>true)
TkLabel.new(base_frame,
:font=>$font, :wraplength=>'4i', :justify=>:left,
:text=><<EOL).pack(:side=>:top)
-下のスクロールバー付きのウィジェットが置かれた二つのウィンドウの間の仕切り枠は、一つの領域をそれぞれのウィンドウのために分割するためのものです。左ボタンで仕切りを操作すると、分割サイズ変更の操作途中では再表示はなされず、確定させたときに表示が更新されます。マウスによる仕切りの操作に追随してサイズを変更した表示がなわれるようにしたい場合は、マウスの中央ボタンを使ってください。
-もしあなたが使っている Ruby にリンクされている Tk ライブラリが panedwindow を実装していない
-場合、このデモはうまく動かないはずです。その場合には panedwindow が実装されているような
-より新しいバージョンの Tk を組み合わせて試す
-ようにしてください。
+ΥСդΥåȤ֤줿ĤΥɥδ֤λڤȤϡĤΰ򤽤줾ΥɥΤʬ䤹뤿ΤΤǤܥǻڤȡʬ䥵ѹǤϺɽϤʤ줺ꤵȤɽޤޥˤڤɿ路ƥѹɽʤ褦ˤϡޥܥȤäƤ
+⤷ʤȤäƤ Ruby ˥󥯤Ƥ Tk 饤֥꤬ panedwindow Ƥʤ
+硢ΥǥϤޤưʤϤǤξˤ panedwindow Ƥ褦
+꿷С Tk Ȥ߹碌ƻ
+褦ˤƤ
EOL
# The bottom buttons
TkFrame.new(base_frame){|f|
pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
- TkButton.new(f, :text=>'閉じる', :width=>15, :command=>proc{
+ TkButton.new(f, :text=>'Ĥ', :width=>15, :command=>proc{
$paned2_demo.destroy
$paned2_demo = nil
}).pack(:side=>:left, :expand=>true)
- TkButton.new(f, :text=>'コード参照', :width=>15, :command=>proc{
+ TkButton.new(f, :text=>'ɻ', :width=>15, :command=>proc{
showCode 'paned2'
}).pack(:side=>:left, :expand=>true)
}
paneList = TkVariable.new # define as normal variable (not array)
paneList.value = [ # ruby's array --> tcl's list
- 'Ruby/Tk のウィジェット一覧',
+ 'Ruby/Tk ΥåȰ',
'TkButton',
'TkCanvas',
'TkCheckbutton',
@@ -87,8 +87,8 @@ TkPanedwindow.new(base_frame, :orient=>:vertical){|f|
paned2_xscr = TkScrollbar.new(paned2_bottom)
paned2_yscr = TkScrollbar.new(paned2_bottom)
paned2_text = TkText.new(paned2_bottom, :width=>30, :wrap=>:non) {
- insert('1.0', 'ここに配置されているのは、' +
- 'ごく普通のテキストウィジェットです。')
+ insert('1.0', '֤ƤΤϡ' +
+ '̤ΥƥȥåȤǤ')
xscrollbar(paned2_xscr)
yscrollbar(paned2_yscr)
}
diff --git a/ext/tk/sample/demos-jp/pendulum.rb b/ext/tk/sample/demos-jp/pendulum.rb
index 60556fd70a..48839aa58a 100644
--- a/ext/tk/sample/demos-jp/pendulum.rb
+++ b/ext/tk/sample/demos-jp/pendulum.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# This demonstration illustrates how Tcl/Tk can be used to construct
# simulations of physical systems.
@@ -26,15 +26,15 @@ msg = TkLabel.new(base_frame) {
font $font
wraplength '4i'
justify 'left'
- text 'このデモは、物理系のシミュレーションに関わるようなアニメーション実行するために Ruby/Tk をどのように用いることができるかを示しています。左側のキャンバスは単純な振り子である物理系自体のグラフィカル表現であるのに対し、右側のキャンバスは系の位相空間のグラフ(角速度と角度とをプロットしたもの)になっています。左側のキャンバス上でクリックおよびドラッグを行って振り子の重りの位置を変えてみてください。'
+ text 'ΥǥϡʪϤΥߥ졼˴ؤ褦ʥ˥᡼¹Ԥ뤿 Ruby/Tk ɤΤ褦Ѥ뤳ȤǤ뤫򼨤Ƥޤ¦ΥХñʿҤǤʪϼΤΥեɽǤΤФ¦ΥХϷϤΰ֤Υաʳ®٤ȳ٤ȤץåȤΡˤˤʤäƤޤ¦ΥХǥåӥɥåԤäƿҤνŤΰ֤ѤƤߤƤ'
}
msg.pack('side'=>'top')
# create frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $pendulum_demo
$pendulum_demo = nil
@@ -43,7 +43,7 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'pendulum'}
}.pack('side'=>'left', 'expand'=>'yes')
diff --git a/ext/tk/sample/demos-jp/plot.rb b/ext/tk/sample/demos-jp/plot.rb
index 4147b35399..a49ed00df8 100644
--- a/ext/tk/sample/demos-jp/plot.rb
+++ b/ext/tk/sample/demos-jp/plot.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# 2-D plot widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($plot_demo) && $plot_demo
$plot_demo.destroy
$plot_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$plot_demo = TkToplevel.new {|w|
title("Plot Demonstration")
iconname("Plot")
@@ -18,17 +18,17 @@ $plot_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($plot_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'4i', 'justify'=>'left',
- 'text'=>"このウィンドウは簡単な2次元のプロットを含んだキャンバス widgetです。表示された点をマウスボタン1でドラッグしてデータをいじることができます。"){
+ 'text'=>"Υɥϴñ2ΥץåȤޤХ widgetǤɽ줿ޥܥ1ǥɥåƥǡ򤤤뤳ȤǤޤ"){
pack('side'=>'top')
}
-# frame 生成
+# frame
$plot_buttons = TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $plot_demo
$plot_demo = nil
@@ -37,28 +37,28 @@ $plot_buttons = TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'plot'}
}.pack('side'=>'left', 'expand'=>'yes')
}
$plot_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# font 設定
+# font
if $tk_version =~ /^4.*/
plotFont = '-*-Helvetica-Medium-R-Normal--*-180-*-*-*-*-*-*'
else
font = 'Helvetica 18'
end
-# canvas 設定
+# canvas
$plot_canvas = TkCanvas.new(base_frame,'relief'=>'raised','width'=>450,'height'=>300)
$plot_canvas.pack('side'=>'top', 'fill'=>'x')
-# plot 生成
+# plot
TkcLine.new($plot_canvas, 100, 250, 400, 250, 'width'=>2)
TkcLine.new($plot_canvas, 100, 250, 100, 50, 'width'=>2)
TkcText.new($plot_canvas, 225, 20,
- 'text'=>"簡単なプロット", 'font'=>plotFont, 'fill'=>'brown')
+ 'text'=>"ñʥץå", 'font'=>plotFont, 'fill'=>'brown')
(0..10).each {|i|
x = 100 + (i * 30)
diff --git a/ext/tk/sample/demos-jp/puzzle.rb b/ext/tk/sample/demos-jp/puzzle.rb
index dbcb423463..16d7ce497c 100644
--- a/ext/tk/sample/demos-jp/puzzle.rb
+++ b/ext/tk/sample/demos-jp/puzzle.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# widet demo 'puzzle' (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($puzzle_demo) && $puzzle_demo
$puzzle_demo.destroy
$puzzle_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$puzzle_demo = TkToplevel.new {|w|
title("15-Puzzle Demonstration")
iconname("15-Puzzle")
@@ -18,20 +18,20 @@ $puzzle_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($puzzle_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
msg = TkLabel.new(base_frame) {
font $font
wraplength '4i'
justify 'left'
- text "下の15-パズルはボタンを集めてできています。空いている所の隣のピースをクリックすると、そのピースがその空いている場所にスライドします。この操作を続け、ピースがその数の順に上から下、左から右に並ぶようにしてください。"
+ text "15-ѥϥܥ򽸤ƤǤƤޤƤ٤Υԡ򥯥åȡΥԡζƤ˥饤ɤޤ³ԡον˾夫鲼鱦¤֤褦ˤƤ"
}
msg.pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $puzzle_demo
$puzzle_demo = nil
@@ -40,16 +40,16 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'puzzle'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# frame 生成
+# frame
#
-# Special trick: scrollbar widget を生成してその trough color を用いることで
-# 空白部分のための暗色を選択し,設定する
+# Special trick: scrollbar widget Ƥ trough color Ѥ뤳Ȥ
+# ʬΤΰſ򤷡ꤹ
#
begin
if Tk.windowingsystem() == 'aqua'
@@ -81,9 +81,9 @@ base = TkFrame.new(base_frame) {
s.destroy
base.pack('side'=>'top', 'padx'=>'1c', 'pady'=>'1c')
-# proc のスコープを閉じるため,proc 生成メソッドを用意
-# こうしておかねば,ループ中で値が変化する num の影響を受けて
-# puzzleSwitch の第 2 引数が変化してしまい,期待通りにはならない.
+# proc ΥפĤ뤿ᡤproc ᥽åɤѰ
+# ƤͤС롼ͤѲ num αƶ
+# puzzleSwitch 2 ѲƤޤ̤ˤϤʤʤ
def def_puzzleswitch_proc(w, num)
proc{puzzleSwitch w, num}
end
diff --git a/ext/tk/sample/demos-jp/radio.rb b/ext/tk/sample/demos-jp/radio.rb
index efb613593d..3355f25116 100644
--- a/ext/tk/sample/demos-jp/radio.rb
+++ b/ext/tk/sample/demos-jp/radio.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# radiobutton widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($radio_demo) && $radio_demo
$radio_demo.destroy
$radio_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$radio_demo = TkToplevel.new {|w|
title("Radiobutton Demonstration")
iconname("radio")
@@ -18,24 +18,24 @@ $radio_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($radio_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
msg = TkLabel.new(base_frame) {
font $font
wraplength '4i'
justify 'left'
- text "下には2つのラジオボタングループが表示されています。ボタンをクリックすると、そのボタンだけがそのグループの中で選択されます。各グループに対してそのグループの中のどのボタンが選択されているかを示す変数が割り当てられています。現在の変数の値を見るには「変数参照」ボタンをクリックしてください。"
+ text "ˤ2ĤΥ饸ܥ󥰥롼פɽƤޤܥ򥯥åȡΥܥΥ롼פ򤵤ޤƥ롼פФƤΥ롼פΤɤΥܥ򤵤Ƥ뤫򼨤ѿƤƤޤߤѿͤ򸫤ˤϡѿȡץܥ򥯥åƤ"
}
msg.pack('side'=>'top')
-# 変数生成
+# ѿ
size = TkVariable.new
color = TkVariable.new
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $radio_demo
$radio_demo = nil
@@ -45,35 +45,35 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'radio'}
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text '変数参照'
+ text 'ѿ'
command proc{
showVars(base_frame, ['size', size], ['color', color])
}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# frame 生成
+# frame
f_left = TkFrame.new(base_frame)
f_right = TkFrame.new(base_frame)
f_left.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'.5c', 'pady'=>'.5c')
f_right.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'.5c', 'pady'=>'.5c')
-# radiobutton 生成
+# radiobutton
[10, 12, 18, 24].each {|sz|
TkRadioButton.new(f_left) {
- text "ポイントサイズ #{sz}"
+ text "ݥȥ #{sz}"
variable size
relief 'flat'
value sz
}.pack('side'=>'top', 'pady'=>2, 'anchor'=>'w')
}
-['赤', '緑', '青', '黄', '橙', '紫'].each {|col|
+['', '', '', '', '', ''].each {|col|
TkRadioButton.new(f_right) {
text col
variable color
diff --git a/ext/tk/sample/demos-jp/radio2.rb b/ext/tk/sample/demos-jp/radio2.rb
index 0633a8def1..91496beb6d 100644
--- a/ext/tk/sample/demos-jp/radio2.rb
+++ b/ext/tk/sample/demos-jp/radio2.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# radio2.rb
#
@@ -28,7 +28,7 @@ msg = TkLabel.new(base_frame) {
font $font
wraplength '5i'
justify 'left'
- text "下には3つのラジオボタングループが表示されています。ボタンをクリックすると、そのボタンだけがそのグループの中で選択されます。各グループに対してそのグループの中のどのボタンが選択されているかを示す変数が割り当てられています。現在の変数の値を見るには「変数参照」ボタンをクリックしてください。"
+ text "ˤ3ĤΥ饸ܥ󥰥롼פɽƤޤܥ򥯥åȡΥܥΥ롼פ򤵤ޤƥ롼פФƤΥ롼פΤɤΥܥ򤵤Ƥ뤫򼨤ѿƤƤޤߤѿͤ򸫤ˤϡѿȡץܥ򥯥åƤ"
}
msg.pack('side'=>'top')
@@ -40,8 +40,8 @@ align = TkVariable.new
# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $radio2_demo
$radio2_demo = nil
@@ -51,12 +51,12 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'radio2'}
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text '変数参照'
+ text 'ѿ'
command proc{
showVars(base_frame,
['size', size], ['color', color], ['compound', align])
@@ -65,11 +65,11 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
# frame
-f_left = TkLabelFrame.new(base_frame, 'text'=>'文字サイズ',
+f_left = TkLabelFrame.new(base_frame, 'text'=>'ʸ',
'pady'=>2, 'padx'=>2)
-f_mid = TkLabelFrame.new(base_frame, 'text'=>'色',
+f_mid = TkLabelFrame.new(base_frame, 'text'=>'',
'pady'=>2, 'padx'=>2)
-f_right = TkLabelFrame.new(base_frame, 'text'=>'ビットマップ配置',
+f_right = TkLabelFrame.new(base_frame, 'text'=>'ӥåȥޥå',
'pady'=>2, 'padx'=>2)
f_left.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'.5c', 'pady'=>'.5c')
f_mid.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'.5c', 'pady'=>'.5c')
@@ -78,14 +78,14 @@ f_right.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'.5c', 'pady'=>'.5c')
# radiobutton
[10, 12, 18, 24].each {|sz|
TkRadioButton.new(f_left) {
- text "ポイントサイズ #{sz}"
+ text "ݥȥ #{sz}"
variable size
relief 'flat'
value sz
}.pack('side'=>'top', 'pady'=>2, 'anchor'=>'w', 'fill'=>'x')
}
-['赤', '緑', '青', '黄', '橙', '紫'].each {|col|
+['', '', '', '', '', ''].each {|col|
TkRadioButton.new(f_mid) {
text col
variable color
@@ -95,8 +95,8 @@ f_right.pack('side'=>'left', 'expand'=>'yes', 'padx'=>'.5c', 'pady'=>'.5c')
}.pack('side'=>'top', 'pady'=>2, 'fill'=>'x')
}
-# label = TkLabel.new(f_right, 'text'=>'ラベル', 'bitmap'=>'questhead',
-label = Tk::Label.new(f_right, 'text'=>'ラベル', 'bitmap'=>'questhead',
+# label = TkLabel.new(f_right, 'text'=>'٥', 'bitmap'=>'questhead',
+label = Tk::Label.new(f_right, 'text'=>'٥', 'bitmap'=>'questhead',
'compound'=>'left')
label.configure('width'=>TkWinfo.reqwidth(label), 'compound'=>'top')
label.height(TkWinfo.reqheight(label))
diff --git a/ext/tk/sample/demos-jp/radio3.rb b/ext/tk/sample/demos-jp/radio3.rb
index 3356b6945b..763c522448 100644
--- a/ext/tk/sample/demos-jp/radio3.rb
+++ b/ext/tk/sample/demos-jp/radio3.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# radio3.rb
#
@@ -28,7 +28,7 @@ msg = TkLabel.new(base_frame) {
font $font
wraplength '5i'
justify 'left'
- text '下には3つのラジオボタングループが表示されています。ボタンをクリックすると、そのグループに属するすべてのボタンの中でクリックしたボタンだけが選択された状態になります。各グループには、そのグループの中のどのボタンが選択されているかを示す変数が割り当てられています。「トライステート」ボタンが押されたときには、ラジオボタンの表示がトライステートモードになります。いずれかのボタンを選択すれば、ボタンの状態は元のように個々のボタンのon/off状態を示すようになります。現在の変数の値を見るには「変数参照」ボタンをクリックしてください。'
+ text 'ˤ3ĤΥ饸ܥ󥰥롼פɽƤޤܥ򥯥åȡΥ롼פ°뤹٤ƤΥܥǥåܥ򤵤줿֤ˤʤޤƥ롼פˤϡΥ롼פΤɤΥܥ򤵤Ƥ뤫򼨤ѿƤƤޤ֥ȥ饤ơȡץܥ󤬲줿Ȥˤϡ饸ܥɽȥ饤ơȥ⡼ɤˤʤޤ줫Υܥ򤹤Сܥξ֤ϸΤ褦˸ġΥܥon/off֤򼨤褦ˤʤޤߤѿͤ򸫤ˤϡѿȡץܥ򥯥åƤ'
}
msg.grid(:row=>0, :column=>0, :columnspan=>3, :sticky=>'nsew')
@@ -42,16 +42,16 @@ TkFrame.new(base_frame) {|frame|
TkGrid(TkFrame.new(frame, :height=>2, :relief=>:sunken, :bd=>2),
:columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
TkGrid('x',
- TkButton.new(frame, :text=>'変数参照',
+ TkButton.new(frame, :text=>'ѿ',
:image=>$image['view'], :compound=>:left,
:command=>proc{
showVars(base_frame, ['size', size],
['color', color], ['compound', align])
}),
- TkButton.new(frame, :text=>'コード参照',
+ TkButton.new(frame, :text=>'ɻ',
:image=>$image['view'], :compound=>:left,
:command=>proc{showCode 'radio3'}),
- TkButton.new(frame, :text=>'閉じる',
+ TkButton.new(frame, :text=>'Ĥ',
:image=>$image['delete'], :compound=>:left,
:command=>proc{
tmppath = $radio3_demo
@@ -65,17 +65,17 @@ TkFrame.new(base_frame) {|frame|
}
# frame
-f_left = TkLabelFrame.new(base_frame, 'text'=>'文字サイズ',
+f_left = TkLabelFrame.new(base_frame, 'text'=>'ʸ',
'pady'=>2, 'padx'=>2)
-f_mid = TkLabelFrame.new(base_frame, 'text'=>'色',
+f_mid = TkLabelFrame.new(base_frame, 'text'=>'',
'pady'=>2, 'padx'=>2)
-f_right = TkLabelFrame.new(base_frame, 'text'=>'ビットマップ配置',
+f_right = TkLabelFrame.new(base_frame, 'text'=>'ӥåȥޥå',
'pady'=>2, 'padx'=>2)
f_left .grid('column'=>0, 'row'=>1, 'pady'=>'.5c', 'padx'=>'.5c', 'rowspan'=>2)
f_mid .grid('column'=>1, 'row'=>1, 'pady'=>'.5c', 'padx'=>'.5c', 'rowspan'=>2)
f_right.grid('column'=>2, 'row'=>1, 'pady'=>'.5c', 'padx'=>'.5c')
-TkButton.new(base_frame, 'text'=>'トライステート',
+TkButton.new(base_frame, 'text'=>'ȥ饤ơ',
'command'=>proc{size.value = 'multi'; color.value = 'multi'}){
grid('column'=>2, 'row'=>2, 'pady'=>'.5c', 'padx'=>'.5c')
}
@@ -83,7 +83,7 @@ TkButton.new(base_frame, 'text'=>'トライステート',
# radiobutton
[10, 12, 14, 18, 24].each {|sz|
TkRadioButton.new(f_left) {
- text "ポイントサイズ #{sz}"
+ text "ݥȥ #{sz}"
variable size
relief 'flat'
value sz
@@ -103,8 +103,8 @@ TkButton.new(base_frame, 'text'=>'トライステート',
}.pack('side'=>'top', 'pady'=>2, 'fill'=>'x')
}
-# label = TkLabel.new(f_right, 'text'=>'ラベル', 'bitmap'=>'questhead',
-label = Tk::Label.new(f_right, 'text'=>'ラベル', 'bitmap'=>'questhead',
+# label = TkLabel.new(f_right, 'text'=>'٥', 'bitmap'=>'questhead',
+label = Tk::Label.new(f_right, 'text'=>'٥', 'bitmap'=>'questhead',
'compound'=>'left')
label.configure('width'=>TkWinfo.reqwidth(label), 'compound'=>'top')
label.height(TkWinfo.reqheight(label))
diff --git a/ext/tk/sample/demos-jp/rolodex-j b/ext/tk/sample/demos-jp/rolodex-j
index f6e3afdacd..ee8dd110bc 100644
--- a/ext/tk/sample/demos-jp/rolodex-j
+++ b/ext/tk/sample/demos-jp/rolodex-j
@@ -1,15 +1,15 @@
#!/usr/bin/env ruby
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# rolodex --
-# このスクリプトは Tom LaStrange の rolodex の一部です。
+# ΥץȤ Tom LaStrange rolodex ΰǤ
#
# Copyright (C) 1998 by Takaaki Tateishi <ttate@jaist.ac.jp>
# Time-stamp: "04/04/09 00:32:12 nagai"
#
require "tk"
-Tk.encoding = "utf-8"
+Tk.encoding = "euc-jp"
def show_help(topic,x=0,y=0)
if( topic.is_a?(TkWindow) )
@@ -24,20 +24,20 @@ def show_help(topic,x=0,y=0)
if( $helpTopics.include?(topic) )
msg = $helpTopics[topic]
else
- msg = "このトピックについてのヘルプはまだ使用できません"
+ msg = "ΥȥԥåˤĤƤΥإפϤޤѤǤޤ"
end
TkDialog.new("title"=>"Rolodex Help",
- "message"=>"「#{topic}」\n\n#{msg}",
+ "message"=>"#{topic}\n\n#{msg}",
"default_button"=>0,
"buttons"=>["OK"])
end
def fillCard
clearAction
- $root.frame.entry[1].insert(0, "立石 孝彰")
- $root.frame.entry[2].insert(0, "923-1292 石川県")
- $root.frame.entry[3].insert(0, "辰口町 旭台 1-1")
- $root.frame.entry[4].insert(0, "北陸先端科学技術大学院大学")
+ $root.frame.entry[1].insert(0, "Ω ")
+ $root.frame.entry[2].insert(0, "923-1292 ")
+ $root.frame.entry[3].insert(0, "äĮ 1-1")
+ $root.frame.entry[4].insert(0, "Φüʳصر")
$root.frame.entry[5].insert(0,"private")
$root.frame.entry[6].insert(0,"***-***-****")
$root.frame.entry[7].insert(0,"***-***-****")
@@ -59,7 +59,7 @@ end
def fileAction
TkDialog.new("title"=>"File Selection",
- "message"=>"これはファイル選択ダイアログのダミーです。\n",
+ "message"=>"ϥեΥߡǤ\n",
"default_button"=>0,
"buttons"=>["OK"])
STDERR.print "dummy file name\n"
@@ -67,9 +67,9 @@ end
def deleteAction
result = TkDialog.new("title"=>"Confirm Action",
- "message"=>"よろしいですか?",
+ "message"=>"Ǥ",
"default_button"=>0,
- "buttons"=>["キャンセル"])
+ "buttons"=>["󥻥"])
if( result.value == 0 )
clearAction
end
@@ -79,7 +79,7 @@ end
class RolodexFrame < TkFrame
attr_reader :entry, :label
- LABEL = ["","名前:","住所","","","電話(自宅):","電話(会社):","Fax:"]
+ LABEL = ["","̾:","","","","():","():","Fax:"]
def initialize(parent=nil,keys=nil)
super(parent,keys)
@@ -109,10 +109,10 @@ class RolodexButtons < TkFrame
def initialize(parent,keys=nil)
super(parent,keys)
- @clear = TkButton.new(self,"text" => "クリアー")
- @add = TkButton.new(self, "text" => "追加")
- @search = TkButton.new(self, "text" => "検索")
- @delete = TkButton.new(self, "text" => "消去")
+ @clear = TkButton.new(self,"text" => "ꥢ")
+ @add = TkButton.new(self, "text" => "ɲ")
+ @search = TkButton.new(self, "text" => "")
+ @delete = TkButton.new(self, "text" => "õ")
for w in [@clear,@add,@search,@delete]
w.pack("side"=>"left", "padx"=>2)
end
@@ -128,43 +128,43 @@ class RolodexMenuFrame < TkFrame
"borderwidth"=>1)
@file = TkMenubutton.new(self,
- "text"=> "ファイル",
+ "text"=> "ե",
"underline"=>0)
@file_menu = TkMenu.new(@file)
@file_menu.add("command",
- "label" => "読み込み ...",
+ "label" => "ɤ߹ ...",
"command" => proc{fileAction},
"underline" => 0)
@file_menu.add("command",
- "label" => "終了",
+ "label" => "λ",
"command" => proc{$root.destroy},
"underline" => 0)
@file.menu(@file_menu)
@file.pack("side"=>"left")
@help = TkMenubutton.new(self,
- "text"=> "ヘルプ",
+ "text"=> "إ",
"underline"=>0)
@help_menu = TkMenu.new(@help)
@help_menu.add("command",
- "label"=> "コンテキストについて",
- "command"=>proc{show_help("コンテキスト")},
+ "label"=> "ƥȤˤĤ",
+ "command"=>proc{show_help("ƥ")},
"underline"=>3)
@help_menu.add("command",
- "label"=> "ヘルプについて",
- "command"=>proc{show_help("ヘルプ")},
+ "label"=> "إפˤĤ",
+ "command"=>proc{show_help("إ")},
"underline"=>3)
@help_menu.add("command",
- "label"=> "ウィンドウについて",
- "command"=>proc{show_help("ウィンドウ")},
+ "label"=> "ɥˤĤ",
+ "command"=>proc{show_help("ɥ")},
"underline"=>3)
@help_menu.add("command",
- "label"=> "キー操作について",
- "command"=>proc{show_help("キー操作")},
+ "label"=> "ˤĤ",
+ "command"=>proc{show_help("")},
"underline"=>3)
@help_menu.add("command",
- "label"=> "バージョン情報",
- "command"=>proc{show_help("バージョン情報")},
+ "label"=> "С",
+ "command"=>proc{show_help("С")},
"underline"=>3)
@help.menu(@help_menu)
@help.pack("side"=>"right")
@@ -198,16 +198,16 @@ $root.buttons.add.configure("command"=>proc{addAction})
$root.buttons.clear.configure("command"=>proc{clearAction})
$root.buttons.search.configure("command"=>proc{addAction; fillCard})
-$root.buttons.clear.configure("text"=> "クリアー Ctrl+C")
+$root.buttons.clear.configure("text"=> "ꥢ Ctrl+C")
$root.bind("Control-c",proc{clearAction})
-$root.buttons.add.configure("text"=> "追加 Ctrl+A")
+$root.buttons.add.configure("text"=> "ɲ Ctrl+A")
$root.bind("Control-a",proc{addAction})
-$root.buttons.search.configure("text"=> "検索 Ctrl+S")
+$root.buttons.search.configure("text"=> " Ctrl+S")
$root.bind("Control-s",proc{addAction; fillCard})
-$root.buttons.delete.configure("text"=> "消去 Ctrl+D")
+$root.buttons.delete.configure("text"=> "õ Ctrl+D")
$root.bind("Control-d",proc{deleteAction})
$root.menu.file_menu.entryconfigure(1, "accel"=>"Ctrl+F")
@@ -227,74 +227,74 @@ $root.bind("Any-Help",
$helpTopics = {}
$helpTopics[$root.menu.file] = <<EOF
-これは「ファイル」メニューです。「読み込み」や「終了」などを
-行なうことができます。
+ϡ֥եץ˥塼Ǥɤ߹ߡפֽλפʤɤ
+ԤʤȤǤޤ
EOF
$helpTopics[$root.menu.file_menu.index(0)] = <<EOF
-ファイルの読み込みを行なうときに使います。
+եɤ߹ߤԤʤȤ˻Ȥޤ
EOF
$helpTopics[$root.menu.file_menu.index(1)] = <<EOF
-アプリケーションを終了するときに使います。
+ץꥱλȤ˻Ȥޤ
EOF
$helpTopics[$root.frame.entry[1]] = <<EOF
-名前を記入するエントリです。
+̾륨ȥǤ
EOF
$helpTopics[$root.frame.entry[2]] = <<EOF
-住所を記入するエントリです。
+륨ȥǤ
EOF
$helpTopics[$root.frame.entry[3]] = <<EOF
-住所を記入するエントリです。
+륨ȥǤ
EOF
$helpTopics[$root.frame.entry[4]] = <<EOF
-住所を記入するエントリです。
+륨ȥǤ
EOF
$helpTopics[$root.frame.entry[5]] = <<EOF
-自宅の電話番号を記入するエントリです。公開\
-したくないときは private と記入します。
+ֹ륨ȥǤ\
+ʤȤ private ȵޤ
EOF
$helpTopics[$root.frame.entry[6]] = <<EOF
-会社の電話番号を記入するエントリです。
+Ҥֹ륨ȥǤ
EOF
$helpTopics[$root.frame.entry[7]] = <<EOF
-FAX番号を記入するエントリです。
+FAXֹ륨ȥǤ
EOF
-$helpTopics["コンテキスト"] = <<EOF
-Ruby/Tkではgrabの機構がないためこのアプリケーションでは\
-コンテキストヘルプはサポートされていません。
-しかし同じような効果をbindとマウスの位置のWedgetを知る\
-ことで得ることができます。
+$helpTopics["ƥ"] = <<EOF
+Ruby/TkǤgrabεʤᤳΥץꥱǤ\
+ƥȥإפϥݡȤƤޤ
+Ʊ褦ʸ̤bindȥޥΰ֤WedgetΤ\
+Ȥ뤳ȤǤޤ
EOF
-$helpTopics["ヘルプ"] = <<EOF
-マウスをウィンドウにあわせてF1キーを押すことによって\
-そのヘルプを見ることができます。
+$helpTopics["إ"] = <<EOF
+ޥ򥦥ɥˤ碌F1򲡤Ȥˤä\
+Υإפ򸫤뤳ȤǤޤ
EOF
-$helpTopics["ウィンドウ"] = <<EOF
-このウィンドウはダミーです。
+$helpTopics["ɥ"] = <<EOF
+ΥɥϥߡǤ
EOF
-$helpTopics["キー操作"] = <<EOF
-Ctrl+A: 追加
-Ctrl+C: クリアー
-Ctrl+D: 消去
-Ctrl+F: ファイル選択
-Ctrl+Q: 終了
-Ctrl+S: 検索
+$helpTopics[""] = <<EOF
+Ctrl+A: ɲ
+Ctrl+C: ꥢ
+Ctrl+D: õ
+Ctrl+F: ե
+Ctrl+Q: λ
+Ctrl+S:
EOF
-$helpTopics["バージョン情報"] = <<EOF
-バージョンは 1.0.1j です。
+$helpTopics["С"] = <<EOF
+С 1.0.1j Ǥ
EOF
Tk.mainloop
diff --git a/ext/tk/sample/demos-jp/ruler.rb b/ext/tk/sample/demos-jp/ruler.rb
index 5c34a5a5da..a721b95a6a 100644
--- a/ext/tk/sample/demos-jp/ruler.rb
+++ b/ext/tk/sample/demos-jp/ruler.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# ruler widget demo (called by 'widget')
#
@@ -16,13 +16,13 @@ def rulerMkTab(c,x,y)
TkcPolygon.new(c, x, y, x+v.size, y+v.size, x-v.size, y+v.size)
end
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($ruler_demo) && $ruler_demo
$ruler_demo.destroy
$ruler_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$ruler_demo = TkToplevel.new {|w|
title("Ruler Demonstration")
iconname("ruler")
@@ -31,17 +31,17 @@ $ruler_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($ruler_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
TkLabel.new(base_frame, 'font'=>$font, 'wraplength'=>'5i', 'justify'=>'left',
- 'text'=>"このキャンバスwidgetはルーラーの模型です。ルーラーの右にあるのはタブストップの井戸で、ここから引っ張ってくることによってタブストップを作ることができます。また、すでにあるタブストップを動かすこともできます。タブストップを上方または下方にかすれて表示されるまでドラッグすると、マウスボタンを離した時にそのタブストップは消えます。"){
+ 'text'=>"ΥХwidgetϥ롼顼ϷǤ롼顼αˤΤϥ֥ȥåפΰͤǡĥäƤ뤳Ȥˤäƥ֥ȥåפ뤳ȤǤޤޤǤˤ륿֥ȥåפưȤǤޤ֥ȥåפޤϲˤɽޤǥɥåȡޥܥΥˤΥ֥ȥåפϾäޤ"){
pack('side'=>'top')
}
-# frame 生成
+# frame
$ruler_buttons = TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $ruler_demo
$ruler_demo = nil
@@ -50,17 +50,17 @@ $ruler_buttons = TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'ruler'}
}.pack('side'=>'left', 'expand'=>'yes')
}
$ruler_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# canvas 設定
+# canvas
$ruler_canvas = TkCanvas.new(base_frame, 'width'=>'14.8c', 'height'=>'2.5c')
$ruler_canvas.pack('side'=>'top', 'fill'=>'x')
-# 値設定
+#
unless Struct.const_defined?("RulerInfo")
$demo_rulerInfo = Struct.new("RulerInfo", :grid, :left, :right, :x, :y,
:top, :bottom, :size, :normalStyle,
diff --git a/ext/tk/sample/demos-jp/sayings.rb b/ext/tk/sample/demos-jp/sayings.rb
index cf4fe7b1b1..b3bdbe0bc5 100644
--- a/ext/tk/sample/demos-jp/sayings.rb
+++ b/ext/tk/sample/demos-jp/sayings.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# listbox widget demo 'sayings' (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($sayings_demo) && $sayings_demo
$sayings_demo.destroy
$sayings_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$sayings_demo = TkToplevel.new {|w|
title("Listbox Demonstration (well-known sayings)")
iconname("sayings")
@@ -18,20 +18,20 @@ $sayings_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($sayings_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
msg = TkLabel.new(base_frame) {
font $font
wraplength '4i'
justify 'left'
- text "下のリストボックスにはいろいろな格言が入っています。リストをスクロールさせるのはスクロールバーでもできますし、リストボックスの中でマウスのボタン2(中ボタン)を押したままドラッグしてもできます。"
+ text "ΥꥹȥܥåˤϤʳʸäƤޤꥹȤ򥹥뤵ΤϥСǤǤޤꥹȥܥåǥޥΥܥ2(ܥ)򲡤ޤޥɥåƤǤޤ"
}
msg.pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $sayings_demo
$sayings_demo = nil
@@ -40,13 +40,13 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'sayings'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# frame 生成
+# frame
sayings_lbox = nil
TkFrame.new(base_frame, 'borderwidth'=>10) {|w|
sv = TkScrollbar.new(w)
diff --git a/ext/tk/sample/demos-jp/search.rb b/ext/tk/sample/demos-jp/search.rb
index 238450ae30..293ae83910 100644
--- a/ext/tk/sample/demos-jp/search.rb
+++ b/ext/tk/sample/demos-jp/search.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# Text Search widget demo (called by 'widget')
#
@@ -62,13 +62,13 @@ def textToggle(cmd1,sleep1,cmd2,sleep2)
-1, cmd1, cmd2).start(sleep1)
end
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($search_demo) && $search_demo
$search_demo.destroy
$search_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$search_demo = TkToplevel.new {|w|
title("Text Demonstration - Search and Highlight")
iconname("search")
@@ -77,11 +77,11 @@ $search_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($search_demo).pack(:fill=>:both, :expand=>true)
-# frame 生成
+# frame
$search_buttons = TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $search_demo
$search_demo = nil
@@ -90,15 +90,15 @@ $search_buttons = TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'search'}
}.pack('side'=>'left', 'expand'=>'yes')
}
$search_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|f|
- TkLabel.new(f, 'text'=>'ファイル名:',
+ TkLabel.new(f, 'text'=>'ե̾:',
'width'=>13, 'anchor'=>'w').pack('side'=>'left')
$search_fileName = TkVariable.new
TkEntry.new(f, 'width'=>40,
@@ -108,14 +108,14 @@ TkFrame.new(base_frame) {|f|
$search_string_entry.focus})
focus
}
- TkButton.new(f, 'text'=>'読み込み',
+ TkButton.new(f, 'text'=>'ɤ߹',
'command'=>proc{textLoadFile($search_text,
$search_fileName.value)})\
.pack('side'=>'left', 'pady'=>5, 'padx'=>10)
}.pack('side'=>'top', 'fill'=>'x')
TkFrame.new(base_frame) {|f|
- TkLabel.new(f, 'text'=>'検索文字列:',
+ TkLabel.new(f, 'text'=>'ʸ:',
'width'=>13, 'anchor'=>'w').pack('side'=>'left')
$search_searchString = TkVariable.new
$search_string_entry = TkEntry.new(f, 'width'=>40,
@@ -124,7 +124,7 @@ TkFrame.new(base_frame) {|f|
bind('Return', proc{textSearch($search_text, $search_searchString.value,
$search_Tag)})
}
- TkButton.new(f, 'text'=>'反転',
+ TkButton.new(f, 'text'=>'ȿž',
'command'=>proc{textSearch($search_text,
$search_searchString.value,
$search_Tag)}) {
@@ -165,15 +165,15 @@ else
200 )
end
$search_text.insert('1.0', "\
-このウィンドウは検索機構を実現するのにテキスト widget のタグ機能がどの \
-ように使われるのかをデモするものです。まず上のエントリにファイル名を入 \
-れ、<リターン> を押すか「ロード」ボタンを押してください。次にその下の \
-エントリに文字列を入力し、<リターン> を押すか「反転」ボタンを押してく \
-ださい。するとファイル中の、検索文字列と一致する部分に全て \"search_Tag\" \
-というタグがつけられ、タグの表示属性としてその文字列が点滅するように \
-設定されます。\n")
+Υɥϸ¸Τ˥ƥ widget Υǽɤ \
+褦˻ȤΤǥ⤹ΤǤޤΥȥ˥ե̾ \
+졢<꥿> 򲡤֥ɡץܥ򲡤Ƥˤβ \
+ȥʸϤ<꥿> 򲡤ȿžץܥ򲡤Ƥ \
+ȥեΡʸȰפʬ \"search_Tag\" \
+ȤĤ졢ɽ°ȤƤʸǤ褦 \
+ꤵޤ\n")
$search_text.insert('end', "\
-ファイル読み込みのカレントディレクトリは \"#{Dir.pwd}\" です。\
+եɤ߹ߤΥȥǥ쥯ȥ \"#{Dir.pwd}\" Ǥ\
")
$search_text.set_insert '0.0'
diff --git a/ext/tk/sample/demos-jp/spin.rb b/ext/tk/sample/demos-jp/spin.rb
index fd51a3f457..2bcc3217e6 100644
--- a/ext/tk/sample/demos-jp/spin.rb
+++ b/ext/tk/sample/demos-jp/spin.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# spin.rb --
#
@@ -22,35 +22,35 @@ base_frame = TkFrame.new($spin_demo).pack(:fill=>:both, :expand=>true)
TkLabel.new(base_frame,
:font=>$font, :wraplength=>'5i', :justify=>:left,
:text=><<EOL).pack(:side=>:top)
-下には3種類のスピンボックスが表示されています。
-それぞれ、マウスで選択して文字を入力することができます。
-編集操作としては、Emacs 形式の多くに加えて、一般的な
-Motif 形式のキー操作がサポートされています。たとえば、
-Backspace と Control-h とは入力カーソルの左側の文字を
-削除し、Delete と Control-d とは右側の文字を削除します。
-入力枠の長さを越えるような長い文字列を入力した場合には、
-マウスのボタン2を押してドラッグすることで、入力文字列
-をスキャンすることが可能です。
-なお、最初のスピンボックスは、整数値とみなされるような
-文字列しか入力が許されないことに注意してください。また、
-3番目のスピンボックスで選択候補に現れるのはオーストラ
-リアの都市名のリストとなっています。
-もしあなたが使っている Ruby にリンクされている Tk ライ
-ブラリが spinbox ウィジェットを実装していない場合、この
-デモはうまく動かないはずです。その場合には spinbox ウィ
-ジェットが実装されているようなより新しいバージョンの Tk
-を組み合わせて試すようにしてください。
+ˤϣΥԥܥåɽƤޤ
+줾졢ޥ򤷤ʸϤ뤳ȤǤޤ
+ԽȤƤϡEmacs ¿˲äơŪ
+Motif ΥݡȤƤޤȤС
+Backspace Control-h Ȥϥκ¦ʸ
+Delete Control-d Ȥϱ¦ʸޤ
+ȤĹۤ褦ĹʸϤˤϡ
+ޥΥܥ󣲤򲡤ƥɥå뤳Ȥǡʸ
+򥹥󤹤뤳ȤǽǤ
+ʤǽΥԥܥåϡͤȤߤʤ褦
+ʸ󤷤ϤʤȤդƤޤ
+ܤΥԥܥå˸Τϥȥ
+ꥢԻ̾ΥꥹȤȤʤäƤޤ
+⤷ʤȤäƤ Ruby ˥󥯤Ƥ Tk 饤
+֥꤬ spinbox åȤƤʤ硢
+ǥϤޤưʤϤǤξˤ spinbox
+åȤƤ褦ʤ꿷С Tk
+Ȥ߹碌ƻ褦ˤƤ
EOL
TkFrame.new(base_frame){|f|
pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
- TkButton.new(f, :text=>'閉じる', :width=>15, :command=>proc{
+ TkButton.new(f, :text=>'Ĥ', :width=>15, :command=>proc{
$spin_demo.destroy
$spin_demo = nil
}).pack(:side=>:left, :expand=>true)
- TkButton.new(f, :text=>'コード参照', :width=>15, :command=>proc{
+ TkButton.new(f, :text=>'ɻ', :width=>15, :command=>proc{
showCode 'spin'
}).pack(:side=>:left, :expand=>true)
}
diff --git a/ext/tk/sample/demos-jp/states.rb b/ext/tk/sample/demos-jp/states.rb
index 2966e6d834..f354d28d84 100644
--- a/ext/tk/sample/demos-jp/states.rb
+++ b/ext/tk/sample/demos-jp/states.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# listbox widget demo 'states' (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($states_demo) && $states_demo
$states_demo.destroy
$states_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$states_demo = TkToplevel.new {|w|
title("Listbox Demonstration (states)")
iconname("states")
@@ -18,20 +18,20 @@ $states_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($states_demo).pack(:fill=>:both, :expand=>true)
-# label 生成
+# label
msg = TkLabel.new(base_frame) {
font $font
wraplength '4i'
justify 'left'
- text "下にあるのは都道府県名が入ったスクロールバー付のリストボックスです。リストをスクロールさせるのはスクロールバーでもできますし、リストボックスの中でマウスのボタン2(中ボタン)を押したままドラッグしてもできます。"
+ text "ˤΤƻܸ̾äСդΥꥹȥܥåǤꥹȤ򥹥뤵ΤϥСǤǤޤꥹȥܥåǥޥΥܥ2(ܥ)򲡤ޤޥɥåƤǤޤ"
}
msg.pack('side'=>'top')
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $states_demo
$states_demo = nil
@@ -40,13 +40,13 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'states'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# frame 生成
+# frame
states_lbox = nil
TkFrame.new(base_frame, 'borderwidth'=>'.5c') {|w|
s = TkScrollbar.new(w)
@@ -61,13 +61,13 @@ TkFrame.new(base_frame, 'borderwidth'=>'.5c') {|w|
}.pack('side'=>'top', 'expand'=>'yes', 'fill'=>'y')
ins_data = [
- '愛知','青森','秋田','石川','茨城','岩手','愛媛',
- '大分','大阪','岡山','沖縄','香川','鹿児島','神奈川',
- '岐阜','京都','熊本','群馬','高知','埼玉','佐賀',
- '滋賀','静岡','島根','千葉','東京','徳島','栃木',
- '鳥取','富山','長崎','長野','奈良','新潟','兵庫',
- '広島','福井','福岡','福島','北海道','三重','宮城',
- '宮崎','山形','山口','山梨','和歌山'
+ '','Ŀ','','','','','ɲ',
+ 'ʬ','','','','','','',
+ '','','','','','','',
+ '','Ų','纬','','','','',
+ 'Ļ','ٻ','Ĺ','Ĺ','','','ʼ',
+ '','ʡ','ʡ','ʡ','̳ƻ','','ܾ',
+ 'ܺ','','','','²λ'
]
states_lbox.insert(0, *ins_data)
diff --git a/ext/tk/sample/demos-jp/style.rb b/ext/tk/sample/demos-jp/style.rb
index 813fde7a78..3189e1f6d8 100644
--- a/ext/tk/sample/demos-jp/style.rb
+++ b/ext/tk/sample/demos-jp/style.rb
@@ -1,16 +1,16 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# text (display styles) widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($style_demo) && $style_demo
$style_demo.destroy
$style_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$style_demo = TkToplevel.new {|w|
title("Text Demonstration - Display Styles")
iconname("style")
@@ -19,11 +19,11 @@ $style_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($style_demo).pack(:fill=>:both, :expand=>true)
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $style_demo
$style_demo = nil
@@ -32,15 +32,15 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'style'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# text 生成
+# text
txt = TkText.new(base_frame){|t|
- # 生成
+ #
setgrid 'true'
#width 70
#height 32
@@ -53,7 +53,7 @@ txt = TkText.new(base_frame){|t|
}
pack('expand'=>'yes', 'fill'=>'both')
- # テキストタグ設定 (フォント関連)
+ # ƥȥ (եȴϢ)
family = 'Courier'
if $tk_version =~ /^4.*/
@@ -89,7 +89,7 @@ txt = TkText.new(base_frame){|t|
# style_tag_small = TkTextTag.new(t, 'font'=>'@cSmallFont')
# end
- # テキストタグ設定 (色,レリーフ関連)
+ # ƥȥ (꡼մϢ)
if TkWinfo.depth($root).to_i > 1
style_tag_color1 = TkTextTag.new(t, 'background'=>'#a0b7ce')
style_tag_color2 = TkTextTag.new(t, 'foreground'=>'red')
@@ -106,7 +106,7 @@ txt = TkText.new(base_frame){|t|
'relief'=>'sunken', 'borderwidth'=>1)
end
- # テキストタグ設定 (その他)
+ # ƥȥ (¾)
if $tk_version =~ /^4\.[01]/
style_tag_bgstipple = TkTextTag.new(t, 'background'=>'black',
'borderwidth'=>0,
@@ -134,134 +134,134 @@ txt = TkText.new(base_frame){|t|
'lmargin1'=>'12m', 'lmargin2'=>'6m',
'rmargin'=>'10m')
- # テキスト挿入
- insert('end', 'このようにテキスト widget は情報を様々なスタイルで表示すること
-ができます。')
- insert('end', 'タグ', style_tag_big)
- insert('end', 'というメカニズムでコントロールされます。
-タグとはテキスト widget 内のある文字 (の範囲)に対して適用できる
-単なる名前のことです。タグは様々な表示スタイルに設定できます。
-設定すると、そのタグのついた文字は指定したスタイルで表示される
-ようになります。使用できる表示スタイルは次の通りです。
+ # ƥ
+ insert('end', 'Τ褦˥ƥ widget Ͼ͡ʥɽ뤳
+Ǥޤ')
+ insert('end', '', style_tag_big)
+ insert('end', 'Ȥᥫ˥ǥȥ뤵ޤ
+Ȥϥƥ widget Τʸ (ϰ)ФŬѤǤ
+ñʤ̾ΤȤǤ͡ɽǤޤ
+ꤹȡΥΤĤʸϻꤷɽ
+褦ˤʤޤѤǤɽϼ̤Ǥ
')
insert('end', '
-1. フォント', style_tag_big)
- insert('end', ' どんな X のフォントでも使えます。')
+1. ե', style_tag_big)
+ insert('end', ' ɤ X ΥեȤǤȤޤ')
insert('end', 'large', style_tag_verybig)
insert('end', '
-とか')
-# insert('end', '小さい', style_tag_small)
+Ȥ')
+# insert('end', '', style_tag_small)
insert('end', 'small', style_tag_small)
- insert('end', 'とか。
+ insert('end', 'Ȥ
')
insert('end', '
-2. 色', style_tag_big)
+2. ', style_tag_big)
insert('end', ' ')
- insert('end', '背景色', style_tag_color1)
- insert('end', 'も')
- insert('end', '前景色', style_tag_color2)
- insert('end', 'も')
- insert('end', '両方', style_tag_color1, style_tag_color2)
- insert('end', 'とも変えることができます。
+ insert('end', 'طʿ', style_tag_color1)
+ insert('end', '')
+ insert('end', 'ʿ', style_tag_color2)
+ insert('end', '')
+ insert('end', 'ξ', style_tag_color1, style_tag_color2)
+ insert('end', 'ȤѤ뤳ȤǤޤ
')
insert('end', '
-3. 網かけ', style_tag_big)
- insert('end', ' このように描画の際に')
- insert('end', '背景も', style_tag_bgstipple)
- insert('end', '文字も', style_tag_fgstipple)
- insert('end', '単なる塗りつぶし
-でなく、網かけを使うことができます。
+3. ֤', style_tag_big)
+ insert('end', ' Τ褦κݤ')
+ insert('end', 'طʤ', style_tag_bgstipple)
+ insert('end', 'ʸ', style_tag_fgstipple)
+ insert('end', 'ñʤɤĤ֤
+Ǥʤ֤ȤȤǤޤ
')
insert('end', '
-4. 下線', style_tag_big)
- insert('end', ' このように')
- insert('end', '文字に下線を引く', style_tag_underline)
- insert('end', 'ことができます。
+4. ', style_tag_big)
+ insert('end', ' Τ褦')
+ insert('end', 'ʸ˲', style_tag_underline)
+ insert('end', 'ȤǤޤ
')
insert('end', '
-5. 打ち消し線', style_tag_big)
- insert('end', ' このように')
- insert('end', '文字に重ねて線を引く', style_tag_overstrike)
- insert('end', 'ことができます。
+5. Ǥä', style_tag_big)
+ insert('end', ' Τ褦')
+ insert('end', 'ʸ˽Ťͤ', style_tag_overstrike)
+ insert('end', 'ȤǤޤ
')
insert('end', '
-6. 3D 効果', style_tag_big)
- insert('end', ' 背景に枠をつけて、文字を')
- insert('end', '飛び出す', style_tag_raised)
- insert('end', 'ようにしたり')
- insert('end', '沈む', style_tag_sunken)
+6. 3D ', style_tag_big)
+ insert('end', ' طʤȤĤơʸ')
+ insert('end', 'ӽФ', style_tag_raised)
+ insert('end', '褦ˤ')
+ insert('end', '', style_tag_sunken)
insert('end', '
-ようにできます。
+褦ˤǤޤ
')
insert('end', '
-7. 行揃え', style_tag_big)
- insert('end', ' このように行を
+7. ·', style_tag_big)
+ insert('end', ' Τ褦˹Ԥ
')
- insert('end', '左に揃えたり
+ insert('end', '·
')
- insert('end', '右に揃えたり
+ insert('end', '·
', style_tag_right)
- insert('end', '真中に揃えたりできます。
+ insert('end', '·Ǥޤ
', style_tag_center)
insert('end', '
-8. 肩付き文字と添字', style_tag_big)
+8. դʸź', style_tag_big)
insert('end', ' 10')
insert('end', 'n', style_tag_super)
- insert('end', ' のように肩付き文字の効果や、')
+ insert('end', ' Τ褦˸դʸθ̤䡢')
insert('end', '
X')
insert('end', 'i', style_tag_sub)
- insert('end', 'のように添字の効果を出すことができます。
+ insert('end', 'Τ褦źθ̤ФȤǤޤ
')
insert('end', '
-9. マージン', style_tag_big)
- insert('end', 'テキストの左側に余分な空白を置くことができます:
+9. ޡ', style_tag_big)
+ insert('end', 'ƥȤκ¦;ʬʶ֤ȤǤޤ:
')
- insert('end', 'この段落はマージンの使用例です。スクリーン',
+ insert('end', 'ϥޡλǤ꡼',
style_tag_margins)
- insert('end', '上で折り返されて表示されている1行のテキストです。',
+ insert('end', 'ޤ֤ɽƤ1ԤΥƥȤǤ',
style_tag_margins)
- insert('end', '左側には2種類のマージンを持ちます。', style_tag_margins)
- insert('end', '1行目に対するものと、', style_tag_margins)
- insert('end', '2行目以降の連続したマージン', style_tag_margins)
- insert('end', 'です。また右側にもマージンがあります。', style_tag_margins)
- insert('end', '行の折り返し位置を決めるために使用することができます。
+ insert('end', '¦ˤ2Υޡޤ', style_tag_margins)
+ insert('end', '1ܤФΤȡ', style_tag_margins)
+ insert('end', '2ܰʹߤϢ³ޡ', style_tag_margins)
+ insert('end', 'Ǥޤ¦ˤޡ󤬤ޤ', style_tag_margins)
+ insert('end', 'Ԥޤ֤֤뤿˻Ѥ뤳ȤǤޤ
', style_tag_margins)
insert('end', '
-10. スペーシング', style_tag_big)
- insert('end', '3つのパラメータで行のスペーシングを')
- insert('end', '制御す
-ることができます。Spacing1で、行の')
- insert('end', '上にどのくらいの空間を置くか、
+10. ڡ', style_tag_big)
+ insert('end', '3ĤΥѥ᡼ǹԤΥڡ󥰤')
+ insert('end', '椹
+뤳ȤǤޤSpacing1ǡԤ')
+ insert('end', 'ˤɤΤ餤ζ֤֤
spacing3')
- insert('end', 'で行の下にどのくらいの空間を置くか、')
- insert('end', '行が折り返されているなら
-ば、spacing2で、')
- insert('end', 'テキスト行を生成している行の間にどのくらい')
- insert('end', 'の空間を置
-くかを示します。
+ insert('end', 'ǹԤβˤɤΤ餤ζ֤֤')
+ insert('end', 'Ԥޤ֤Ƥʤ
+Сspacing2ǡ')
+ insert('end', 'ƥȹԤƤԤδ֤ˤɤΤ餤')
+ insert('end', 'ζ֤
+򼨤ޤ
')
- insert('end', 'これらのインデントされた段落はどのように',
+ insert('end', 'ΥǥȤ줿ϤɤΤ褦',
style_tag_spacing)
- insert('end', 'スペーシングがが行われるのかを示します。',
+ insert('end', 'ڡ󥰤ԤΤ򼨤ޤ',
style_tag_spacing)
- insert('end', '各段落は実際はテキストwidget', style_tag_spacing)
- insert('end', 'の1行で、widgetによって折り畳まれています。
+ insert('end', 'ϼºݤϥƥwidget', style_tag_spacing)
+ insert('end', '1ԤǡwidgetˤäޤޤƤޤ
', style_tag_spacing)
- insert('end', 'Spacing1はこのテキストでは10pointに', style_tag_spacing)
- insert('end', '設定されています。', style_tag_spacing)
- insert('end', 'これにより、段落の間に大きな間隔が', style_tag_spacing)
- insert('end', '存在しています。', style_tag_spacing)
- insert('end', 'Spacing2は2pointに設定されています。', style_tag_spacing)
- insert('end', 'これで段落の中にほんの少し間隔が存在しています。',
+ insert('end', 'Spacing1ϤΥƥȤǤ10point', style_tag_spacing)
+ insert('end', 'ꤵƤޤ', style_tag_spacing)
+ insert('end', 'ˤꡢδ֤礭ʴֳ֤', style_tag_spacing)
+ insert('end', '¸ߤƤޤ', style_tag_spacing)
+ insert('end', 'Spacing22pointꤵƤޤ', style_tag_spacing)
+ insert('end', 'ˤۤξֳ֤¸ߤƤޤ',
style_tag_spacing)
- insert('end', 'Spacing3はこの例では使用されていません。
+ insert('end', 'Spacing3ϤǤϻѤƤޤ
', style_tag_spacing)
- insert('end', '間隔がどこにあるかを見たければ、これらの段落の',
+ insert('end', 'ֳ֤ɤˤ뤫򸫤С',
style_tag_spacing)
- insert('end', 'なかでテキストを選択してください。選択の', style_tag_spacing)
- insert('end', '反転した部分には余分にとられた間隔が', style_tag_spacing)
- insert('end', '含まれています。
+ insert('end', 'ʤǥƥȤ򤷤Ƥ', style_tag_spacing)
+ insert('end', 'ȿžʬˤ;ʬˤȤ줿ֳ֤', style_tag_spacing)
+ insert('end', 'ޤޤƤޤ
', style_tag_spacing)
}
diff --git a/ext/tk/sample/demos-jp/tcolor b/ext/tk/sample/demos-jp/tcolor
index f2d5458db4..1c83a4b10b 100644
--- a/ext/tk/sample/demos-jp/tcolor
+++ b/ext/tk/sample/demos-jp/tcolor
@@ -1,20 +1,20 @@
#!/usr/bin/env ruby
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# tcolor --
-# このスクリプトはRGB,HSB,CYM形式をサポートする
-# 簡易カラーエディタです。
+# ΥץȤRGB,HSB,CYM򥵥ݡȤ
+# ʰץ顼ǥǤ
#
# Copyright (C) 1998 Takaaki Tateishi(ttate@jaist.ac.jp)
# last update: Thu Jun 18 06:32:35 JST 1998
#
-# まずはtk.rbを読み込む。
+# ޤtk.rbɤ߹ࡣ
require "tk"
-# Tkによって変更される変数はTkVariableのインスタンスを使う。
+# TkˤäѹѿTkVariableΥ󥹥󥹤Ȥ
$colorSpace = TkVariable.new(:rgb)
$master = nil
@@ -32,13 +32,13 @@ $label2 = TkVariable.new("label2")
$label3 = TkVariable.new("label3")
-# リソースデータベースの設定
+# ꥽ǡ١
if (TkVarAccess.new('tcl_platform')['platform'] == 'unix')
TkOptionDB.add('*Entry.background', 'white')
end
-# 各イベント用のメソッド
+# ƥ٥ѤΥ᥽å
def rgbToHsv(red,green,blue)
@@ -277,7 +277,7 @@ end
-# tcolor用のメニュー
+# tcolorѤΥ˥塼
class TkColorMenuFrame<TkFrame
def initialize(parent)
@@ -285,10 +285,10 @@ class TkColorMenuFrame<TkFrame
"relief"=>"raised",
"borderwidth"=>"2")
- # Fileメニューボタンの生成
+ # File˥塼ܥ
@file = TkMenubutton.new(self){|button|
- # Fileメニューの作成
+ # File˥塼κ
@file_menu = TkMenu.new(button){
add "radio",
"label" => "RGB color space",
@@ -326,7 +326,7 @@ class TkColorMenuFrame<TkFrame
"command" => proc{exit}
}
- # FileメニューとFileボタンを関連付ける
+ # File˥塼FileܥϢդ
menu @file_menu
text "File"
@@ -338,7 +338,7 @@ class TkColorMenuFrame<TkFrame
end
-# 下部のフレームのためのクラス
+# Υե졼ΤΥ饹
class TkColorBotFrame<TkFrame
def initialize(parent)
super(parent,
@@ -364,7 +364,7 @@ class TkColorBotFrame<TkFrame
end
-# 中段左のフレーム
+# ʺΥե졼
class TkColorMiddleLeftFrame<TkFrame
def initialize(parent)
super(parent)
@@ -408,9 +408,9 @@ class TkColorMiddleLeftFrame<TkFrame
end
-# 中段中央のフレーム
+# Υե졼
class TkColorMiddleMiddleFrame<TkFrame
- # @scale1,@scale2,@scale3を外部から参照のみ許可する。(変更不可)
+ # @scale1,@scale2,@scale3黲ȤΤߵĤ롣(ѹԲ)
attr_reader :scale1, :scale2, :scale3
def initialize(parent)
@@ -485,7 +485,7 @@ end
-# 中段のフレーム
+# ʤΥե졼
class TkColorMiddleFrame<TkFrame
attr_reader :left, :middle, :right
@@ -529,6 +529,6 @@ end
$root = TkColor.new
-# イベントを待つ為にループに入る。
+# ٥ȤԤİ٤˥롼פ롣
changeColorSpace :rgb
Tk.mainloop
diff --git a/ext/tk/sample/demos-jp/text.rb b/ext/tk/sample/demos-jp/text.rb
index e698a79246..ea15064830 100644
--- a/ext/tk/sample/demos-jp/text.rb
+++ b/ext/tk/sample/demos-jp/text.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# text (basic facilities) widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($text_demo) && $text_demo
$text_demo.destroy
$text_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$text_demo = TkToplevel.new {|w|
title("Text Demonstration - Basic Facilities")
iconname("text")
@@ -25,11 +25,11 @@ else
undo_support = true
end
-# frame 生成
+# frame
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $text_demo
$text_demo = nil
@@ -38,14 +38,14 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'text'}
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# text 生成
+# text
TkText.new(base_frame){|t|
- # 生成
+ #
relief 'sunken'
bd 2
setgrid 1
@@ -57,62 +57,62 @@ TkText.new(base_frame){|t|
}
pack('expand'=>'yes', 'fill'=>'both')
- # テキスト挿入
+ # ƥ
insert('0.0', <<EOT)
-このウィンドウはテキスト widget です。1行またはそれ以上のテキストを表
-示・編集することができます。以下はテキスト widget でできる操作について
-まとめたものです。
-
-1. スクロール。スクロールバーでテキストの表示部分を動かすことができます。
-
-2. スキャニング。テキストのウィンドウでマウスボタン2 (中ボタンを) を押
-して上下にドラッグしてください。そうするとテキストが高速でドラッグされ、
-内容をざっと眺めることができます。
-
-3. テキストの挿入。マウスボタン1 (左ボタン) を押し、挿入カーソルをセッ
-トしてからテキストを入力してください。入力したものが widget に入ります。
-
-4. 選択。ある範囲の文字を選択するにはマウスボタン1 を押し、ドラッグし
-てください。一度ボタンを離したら、シフトキーを押しながらボタン1 を押す
-ことで選択範囲の調整ができます。これは選択範囲の最後をマウスカーソルに
-最も近い位置にリセットし、ボタンを離す前にマウスをドラッグすることでさ
-らに選択範囲を調整できます。ダブルクリックでワードを、またトリプルクリッ
-クで行全体を選択することができます。
-
-5. 消去と置換。テキストを消去するには、消去したい文字を選択してバック
-スペースかデリートキーを入力してください。あるいは、新しいテキストを
-入力すると選択されたテキストと置換されます。
-
-6. 選択部分のコピー。選択部分をこのウィンドウの中のどこかにコピーする
-には、まずコピーしたい所を選択(ここで、あるいは別のアプリケーションで)
-し、ボタン 2 をクリックして、挿入カーソルの位置にコピーしてください。
-
-7. 編集。テキスト widget は Emacs のキーバインドに加えて標準的なの Motif
-の編集機能をサポートしています。バックスペースとコントロール-H は挿入
-カーソルの左側の文字を削除します。デリートキーとコントロール-D は挿入
-カーソルの右側の文字を削除します。Meta-バックスペースは挿入カーソルの
-右側の単語を削除し、Meta-D は挿入カーソルの左側の単語を削除します。
-コントロール-K は挿入カーソルから行末までを削除し、その位置に改行
-しかなかった場合は、改行を削除します。#{
+Υɥϥƥ widget Ǥ1ԤޤϤʾΥƥȤɽ
+Խ뤳ȤǤޤʲϥƥ widget ǤǤˤĤ
+ޤȤ᤿ΤǤ
+
+1. 롣СǥƥȤɽʬưȤǤޤ
+
+2. ˥󥰡ƥȤΥɥǥޥܥ2 (ܥ)
+ƾ岼˥ɥåƤȥƥȤ®ǥɥå졢
+Ƥ򤶤äį뤳ȤǤޤ
+
+3. ƥȤޥܥ1 (ܥ) 򲡤򥻥
+ȤƤƥȤϤƤϤΤ widget ޤ
+
+4. 򡣤ϰϤʸ򤹤ˤϥޥܥ1 򲡤ɥå
+Ƥ٥ܥΥ顢եȥ򲡤ʤܥ1 򲡤
+ȤϰϤĴǤޤϰϤκǸޥ
+Ǥᤤ֤˥ꥻåȤܥΥ˥ޥɥå뤳ȤǤ
+ϰϤĴǤޤ֥륯åǥɤ򡢤ޤȥץ륯
+ǹΤ򤹤뤳ȤǤޤ
+
+5. õִƥȤõˤϡõʸ򤷤ƥХå
+ڡǥ꡼ȥϤƤ뤤ϡƥȤ
+Ϥ򤵤줿ƥȤִޤ
+
+6. ʬΥԡʬ򤳤ΥɥΤɤ˥ԡ
+ˤϡޤԡ(ǡ뤤̤Υץꥱ)
+ܥ 2 򥯥åơΰ֤˥ԡƤ
+
+7. Խƥ widget Emacs ΥХɤ˲äɸŪʤ Motif
+Խǽ򥵥ݡȤƤޤХåڡȥȥ-H
+κ¦ʸޤǥ꡼ȥȥȥ-D
+α¦ʸޤMeta-Хåڡ
+¦ñMeta-D κ¦ñޤ
+ȥ-K 뤫ޤǤΰ֤˲
+ʤäϡԤޤ#{
if undo_support
- undo_text = "Control-z は最後に行った変更の取り消し(undo)を行い、"
+ undo_text = "Control-z ϺǸ˹Ԥäѹμä(undo)Ԥ"
case $tk_platform['platform']
when "unix", "macintosh"
undo_text << "Control-Shift-z"
else # 'windows'
undo_text << "Control-y"
end
- undo_text << "はundoした変更の再適用(redo)を行います。"
+ undo_text << "undoѹκŬ(redo)Ԥޤ"
else
""
end
}
-8. ウィンドウのリサイズ。この widget は "setGrid" オプションをオンにし
-てありますので、ウィンドウをリサイズする時には高さと幅は常に文字高と文
-字幅の整数倍になります。また、ウィンドウを狭くした場合には長い行が自動
-的に折り返され、常に全ての内容が見えるようになっています。
+8. ɥΥꥵ widget "setGrid" ץ򥪥ˤ
+ƤޤΤǡɥꥵˤϹ⤵Ͼʸʸ
+ܤˤʤޤޤɥ򶹤ˤĹԤư
+Ūޤ֤졢ƤƤ褦ˤʤäƤޤ
EOT
set_insert('0.0')
diff --git a/ext/tk/sample/demos-jp/textpeer.rb b/ext/tk/sample/demos-jp/textpeer.rb
index 4d896d2a12..de604f1940 100644
--- a/ext/tk/sample/demos-jp/textpeer.rb
+++ b/ext/tk/sample/demos-jp/textpeer.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# text widget peering demo (called by 'widget')
#
@@ -22,17 +22,17 @@ count = [0]
## Define a widget that we peer from; it won't ever actually be shown though
first = TkText.new(base_frame, :widgetname=>"text#{count[0] += 1}")
-first.insert :end,"このデモは一つの組を成したテキストウィジェットを示します。"
-first.insert :end,"それらのテキストウィジェットは対等(ピア;peer)の関係に"
-first.insert :end,"なっています。"
-first.insert :end,"それらは、基盤となるデータモデルは共通のものを持ちますが、"
-first.insert :end,"画面表示位置、編集位置、選択範囲(selection)については"
-first.insert :end,"独立に持つことができます。"
-first.insert :end,"各テキストウィジェットの脇にある"
-first.insert :end,"「ピア(peer)の作成」ボタンを使えば、"
-first.insert :end,"新たなピアを追加することが可能です。"
-first.insert :end,"また「ピア(peer)の消去」ボタンを使えば、"
-first.insert :end,"特定のピアウィジェットを消去することもできます。"
+first.insert :end,"ΥǥϰĤȤƥȥåȤ򼨤ޤ"
+first.insert :end,"ΥƥȥåȤ(ԥ;peer)δط"
+first.insert :end,"ʤäƤޤ"
+first.insert :end,"ϡפȤʤǡǥ϶̤ΤΤޤ"
+first.insert :end,"ɽ֡Խ֡ϰ(selection)ˤĤƤ"
+first.insert :end,"Ω˻ĤȤǤޤ"
+first.insert :end,"ƥƥȥåȤƤˤ"
+first.insert :end,"֥ԥ(peer)κץܥȤС"
+first.insert :end,"ʥԥɲä뤳ȤǽǤ"
+first.insert :end,"ޤ֥ԥ(peer)ξõץܥȤС"
+first.insert :end,"ΥԥåȤõ뤳ȤǤޤ"
Tk.update_idletasks ## for 'first' widget
@@ -44,10 +44,10 @@ def makeClone(count, win, txt)
sbar = TkScrollbar.new(win, :widgetname=>"sb#{cnt}")
peer.yscrollbar sbar
b1 = TkButton.new(win, :widgetname=>"clone#{cnt}",
- :text=>'ピア(peer)の作成',
+ :text=>'ԥ(peer)κ',
:command=>proc{makeClone(count, win, peer)})
b2 = TkButton.new(win, :widgetname=>"kill#{cnt}",
- :text=>'ピア(peer)の消去',
+ :text=>'ԥ(peer)ξõ',
:command=>proc{killClone(win, cnt)})
row = cnt * 2
TkGrid.configure(peer, sbar, b1, :sticky=>'nsew', :row=>row)
@@ -68,12 +68,12 @@ first.destroy
## See Code / Dismiss buttons
TkFrame.new(base_frame){|f|
- TkButton.new(f, :text=>'閉じる', :width=>15, :command=>proc{
+ TkButton.new(f, :text=>'Ĥ', :width=>15, :command=>proc{
$textpeer_demo.destroy
$textpeer_demo = nil
}).pack(:side=>:left, :expand=>true)
- TkButton.new(f, :text=>'コード参照', :width=>15, :command=>proc{
+ TkButton.new(f, :text=>'ɻ', :width=>15, :command=>proc{
showCode 'textpeer'
}).pack(:side=>:left, :expand=>true)
diff --git a/ext/tk/sample/demos-jp/toolbar.rb b/ext/tk/sample/demos-jp/toolbar.rb
index 3ee7a5f9d8..570d52704f 100644
--- a/ext/tk/sample/demos-jp/toolbar.rb
+++ b/ext/tk/sample/demos-jp/toolbar.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# toolbar.rb --
#
@@ -21,32 +21,32 @@ base_frame = Ttk::Frame.new($toolbar_demo).pack(:fill=>:both, :expand=>true)
if Tk.windowingsystem != 'aqua'
msg = Ttk::Label.new(base_frame, :wraplength=>'4i', :text=><<EOL)
-このデモでは,ツールバーをどのようにして適切にテーマ対応させるか,\
-また,どのようにして切り離し可能にするかを示しています\
-(ただし,ツールバーの切り離しにはTcl/Tk8.5以上の機能が必要です).\
-ツールバーのボタンは,'Toolbutton'スタイルを使用するように明示することで,\
-"toolbar style"ボタンとなるように属性設定されています.\
-ツールバーの左端には簡単なマーカーが置かれています.\
-マーカー上にマウスカーソルが来ると移動アイコンにカーソルが変化します.\
-そこでツールバーを動かすようにドラッグすると,\
-ツールバー全体を切り離して独立したトップレベルウィジェットに\
-することができます.\
-切り離したツールバーが不要となった時には,\
-一般的なトップレベルウィジェットと同様に単純に閉じることで,
-再び元のウィンドウに張り付けられるでしょう.
+ΥǥǤϡġСɤΤ褦ˤŬڤ˥ơб뤫\
+ޤɤΤ褦ˤڤΥǽˤ뤫򼨤Ƥޤ\
+ʤġСڤΥˤTcl/Tk8.5ʾεǽɬפǤˡ\
+ġСΥܥϡ'Toolbutton'Ѥ褦뤳Ȥǡ\
+"toolbar style"ܥȤʤ褦°ꤵƤޤ\
+ġСκüˤϴñʥޡ֤Ƥޤ\
+ޡ˥ޥ뤬Ȱư˥뤬Ѳޤ\
+ǥġСư褦˥ɥåȡ\
+ġСΤڤΥΩȥåץ٥륦åȤ\
+뤳ȤǤޤ\
+ڤΥġСפȤʤäˤϡ\
+Ūʥȥåץ٥륦åȤƱͤñĤ뤳Ȥǡ
+ƤӸΥɥĥդǤ礦
EOL
else
msg = Ttk::Label.new(base_frame, :wraplength=>'4i', :text=><<EOL)
-このデモでは,ツールバーをどのようにして適切にテーマ対応させるかを\
-示しています.\
-ツールバーのボタンは,'Toolbutton'スタイルを使用するように明示することで,\
-"toolbar style"ボタンとなるように属性設定されています.
+ΥǥǤϡġСɤΤ褦ˤŬڤ˥ơб뤫\
+Ƥޤ\
+ġСΥܥϡ'Toolbutton'Ѥ褦뤳Ȥǡ\
+"toolbar style"ܥȤʤ褦°ꤵƤޤ
EOL
end
## Set up the toolbar hull
-tbar_base = Tk::Frame.new(base_frame, # Tk 標準の frame でなければなりません.
- :widgetname=>'toolbar') # ウィンドウタイトル文字列とするために,ウィジェット名を明示しています.
+tbar_base = Tk::Frame.new(base_frame, # Tk ɸ frame ǤʤФʤޤ
+ :widgetname=>'toolbar') # ɥȥʸȤ뤿ˡå̾Ƥޤ
sep = Ttk::Separator.new(base_frame)
to_base = Ttk::Frame.new(tbar_base, :cursor=>'fleur')
if Tk.windowingsystem != 'aqua'
@@ -72,7 +72,7 @@ if Tk.windowingsystem != 'aqua'
self.grid_remove
w.grid_remove
self.wm_manage
- # self.wm_title('Toolbar') # もしウィジェット名をウィンドウタイトルにしたくないなら,ここで設定してください
+ # self.wm_title('Toolbar') # ⤷å̾򥦥ɥȥˤʤʤ顤ꤷƤ
self.wm_protocol('WM_DELETE_WINDOW'){ self.untearoff(w) }
end
def tbar_base.untearoff(w)
@@ -86,17 +86,17 @@ end
text = TkText.new(base_frame, :width=>40, :height=>10)
## Toolbar contents
-tb_btn = Ttk::Button.new(tbar_base, :text=>'ボタン', :style=>'Toolbutton',
+tb_btn = Ttk::Button.new(tbar_base, :text=>'ܥ', :style=>'Toolbutton',
:command=>proc{
- text.insert(:end, "ボタンが押されました.\n")
+ text.insert(:end, "ܥ󤬲ޤ\n")
})
-tb_chk = Ttk::Checkbutton.new(tbar_base, :text=>'チェックボタン',
+tb_chk = Ttk::Checkbutton.new(tbar_base, :text=>'åܥ',
:style=>'Toolbutton',
:variable=>(check = TkVariable.new),
:command=>proc{
- text.insert(:end, "チェックボタンの値は#{check.value}です.\n")
+ text.insert(:end, "åܥͤ#{check.value}Ǥ\n")
})
-tb_mbtn = Ttk::Menubutton.new(tbar_base, :text=>'メニュー')
+tb_mbtn = Ttk::Menubutton.new(tbar_base, :text=>'˥塼')
tb_combo = Ttk::Combobox.new(tbar_base, :value=>TkFont.families,
:state=>:readonly)
tb_mbtn.menu(menu = Tk::Menu.new(tb_mbtn))
@@ -121,10 +121,10 @@ Ttk::Frame.new(base_frame) {|frame|
sep = Ttk::Separator.new(frame)
Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
TkGrid('x',
- Ttk::Button.new(frame, :text=>'コード参照',
+ Ttk::Button.new(frame, :text=>'ɻ',
:image=>$image['view'], :compound=>:left,
:command=>proc{showCode 'toolbar'}),
- Ttk::Button.new(frame, :text=>'閉じる',
+ Ttk::Button.new(frame, :text=>'Ĥ',
:image=>$image['delete'], :compound=>:left,
:command=>proc{
$toolbar_demo.destroy
diff --git a/ext/tk/sample/demos-jp/tree.rb b/ext/tk/sample/demos-jp/tree.rb
index 3f3b18b677..00d715282b 100644
--- a/ext/tk/sample/demos-jp/tree.rb
+++ b/ext/tk/sample/demos-jp/tree.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# tree.rb --
#
@@ -24,14 +24,14 @@ base_frame = TkFrame.new($tree_demo).pack(:fill=>:both, :expand=>true)
Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i',
:justify=>:left, :anchor=>'n', :padding=>[10, 2, 10, 6],
:text=><<EOL).pack(:fill=>:x)
-Ttkとは,テーマ指定可能な新しいウィジェット集合です.\
-このサンプルは,ファイルシステムのような階層的なデータ集合を\
-参照できるようにしたTtk::Treeviewウィジェットを含んでいます.\
-Ttk::Treeviewウィジェットは,木構造自体の表示を可能にするだけでなく,\
-追加情報(このサンプルの場合はファイルサイズ)を表示するために\
-任意の個数の追加カラムも扱うこともできます.\
-また,カラムのタイトル間の区切り部分をドラッグすることで,\
-カラムの幅を変更することも可能です.
+TtkȤϡơ޻ǽʿåȽǤ\
+Υץϡե륷ƥΤ褦ʳŪʥǡ\
+ȤǤ褦ˤTtk::TreeviewåȤޤǤޤ\
+Ttk::TreeviewåȤϡڹ¤ΤɽǽˤǤʤ\
+ɲþ(Υץξϥե륵)ɽ뤿\
+ǤդθĿɲåⰷȤǤޤ\
+ޤΥȥ֤ζڤʬɥå뤳Ȥǡ\
+ѹ뤳ȤǽǤ
EOL
## See Code / Dismiss
@@ -39,10 +39,10 @@ Ttk::Frame.new(base_frame) {|frame|
sep = Ttk::Separator.new(frame)
Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
TkGrid('x',
- Ttk::Button.new(frame, :text=>'コード参照',
+ Ttk::Button.new(frame, :text=>'ɻ',
:image=>$image['view'], :compound=>:left,
:command=>proc{showCode 'tree'}),
- Ttk::Button.new(frame, :text=>'閉じる',
+ Ttk::Button.new(frame, :text=>'Ĥ',
:image=>$image['delete'], :compound=>:left,
:command=>proc{
$tree_demo.destroy
@@ -68,7 +68,7 @@ def populate_tree(tree, node)
path = tree.get(node, :fullpath)
tree.delete(tree.children(node))
Dir.glob("#{path}/*").sort.each{|f|
- type = File.ftype(f) rescue nil
+ type = File.ftype(f)
id = tree.insert(node, :end,
:text=>File.basename(f), :values=>[f, type]).id
if type == 'directory'
diff --git a/ext/tk/sample/demos-jp/ttkbut.rb b/ext/tk/sample/demos-jp/ttkbut.rb
index ccde541019..90ec3fce5b 100644
--- a/ext/tk/sample/demos-jp/ttkbut.rb
+++ b/ext/tk/sample/demos-jp/ttkbut.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# ttkbut.rb
#
@@ -23,22 +23,22 @@ base_frame = TkFrame.new($ttkbut_demo).pack(:fill=>:both, :expand=>true)
Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i', :justify=>:left,
:text=><<EOL).pack(:side=>:top, :fill=>:x)
-Ttkとは,テーマ指定可能な新しいウィジェット集合です.\
-今,あなたが目にしているのはTtkのテーマ化ラベルで,\
-下にはTtkのラベルフレームの中に三つのグループのTtkウィジェットが\
-表示されています.
-最初のグループは全てボタンであり,\
-それぞれクリックすれば現在のアプリケーションのテーマが設定されます.
-2番目のグループは三つのチェックボタン集合です.\
-各集合の間には,セパレータウィジェットが置かれています.\
-なお「有効化」ボタンは,このトップレベルウィジェット内の\
-他のすべてのテーマ化ウィジェットの状態(state)が"disabled"かどうかを\
-コントロールすることに注意してください.
-3番目のグループは関連付けられたラジオボタン集合となっています.
+TtkȤϡơ޻ǽʿåȽǤ\
+ʤܤˤƤΤTtkΥơ޲٥ǡ\
+ˤTtkΥ٥ե졼˻ĤΥ롼פTtkåȤ\
+ɽƤޤ
+ǽΥ롼פƥܥǤꡤ\
+줾쥯åиߤΥץꥱΥơޤꤵޤ
+ܤΥ롼פϻĤΥåܥ󽸹Ǥ\
+ƽδ֤ˤϡѥ졼åȤ֤Ƥޤ\
+ʤͭץܥϡΥȥåץ٥륦å\
+¾Τ٤ƤΥơ޲åȤξ(state)"disabled"ɤ\
+ȥ뤹뤳ȤդƤ
+ܤΥ롼פϴϢդ줿饸ܥ󽸹ȤʤäƤޤ
EOL
## Add buttons for setting the theme
-buttons = Ttk::Labelframe.new(base_frame, :text=>'ボタン')
+buttons = Ttk::Labelframe.new(base_frame, :text=>'ܥ')
# Ttk::Style.theme_names.each{|theme|
# Ttk::Button.new(buttons, :text=>theme,
# :command=>proc{Ttk::Style.theme_use theme}).pack(:pady=>2)
@@ -66,9 +66,9 @@ def setState(root, value, *excepts)
end
## Set up the checkbutton group
-checks = Ttk::Labelframe.new(base_frame, :text=>'チェックボタン')
+checks = Ttk::Labelframe.new(base_frame, :text=>'åܥ')
enabled = TkVariable.new(true)
-e = Ttk::Checkbutton.new(checks, :text=>'有効化', :variable=>enabled,
+e = Ttk::Checkbutton.new(checks, :text=>'ͭ', :variable=>enabled,
:command=>proc{
setState($ttkbut_demo,
((enabled.bool)? "!disabled" : "disabled"),
@@ -84,15 +84,15 @@ tomato = TkVariable.new
basil = TkVariable.new
oregano = TkVariable.new
-c1 = Ttk::Checkbutton.new(checks, :text=>'チーズ', :variable=>cheese)
-c2 = Ttk::Checkbutton.new(checks, :text=>'トマト', :variable=>tomato)
-c3 = Ttk::Checkbutton.new(checks, :text=>'バジル', :variable=>basil)
-c4 = Ttk::Checkbutton.new(checks, :text=>'オレガノ', :variable=>oregano)
+c1 = Ttk::Checkbutton.new(checks, :text=>'', :variable=>cheese)
+c2 = Ttk::Checkbutton.new(checks, :text=>'ȥޥ', :variable=>tomato)
+c3 = Ttk::Checkbutton.new(checks, :text=>'Х', :variable=>basil)
+c4 = Ttk::Checkbutton.new(checks, :text=>'쥬', :variable=>oregano)
Tk.pack(e, sep1, c1, c2, sep2, c3, c4, :fill=>:x, :pady=>2)
## Set up the radiobutton group
-radios = Ttk::Labelframe.new(base_frame, :text=>'ラジオボタン')
+radios = Ttk::Labelframe.new(base_frame, :text=>'饸ܥ')
happyness = TkVariable.new
@@ -114,18 +114,18 @@ Ttk::Frame.new(base_frame) {|frame|
sep = Ttk::Separator.new(frame)
Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
TkGrid('x',
- Ttk::Button.new(frame, :text=>'変数参照',
+ Ttk::Button.new(frame, :text=>'ѿ',
:image=>$image['view'], :compound=>:left,
:command=>proc{
- showVars(base_frame, ['有効化', enabled],
- ['チーズ', cheese], ['トマト', tomato],
- ['バジル', basil], ['オレガノ', oregano],
- ['幸福度', happyness])
+ showVars(base_frame, ['ͭ', enabled],
+ ['', cheese], ['ȥޥ', tomato],
+ ['Х', basil], ['쥬', oregano],
+ ['ʡ', happyness])
}),
- Ttk::Button.new(frame, :text=>'コード参照',
+ Ttk::Button.new(frame, :text=>'ɻ',
:image=>$image['view'], :compound=>:left,
:command=>proc{showCode 'ttkbut'}),
- Ttk::Button.new(frame, :text=>'閉じる',
+ Ttk::Button.new(frame, :text=>'Ĥ',
:image=>$image['delete'], :compound=>:left,
:command=>proc{
tmppath = $ttkbut_demo
diff --git a/ext/tk/sample/demos-jp/ttkmenu.rb b/ext/tk/sample/demos-jp/ttkmenu.rb
index aa9db5019f..9e78678c8e 100644
--- a/ext/tk/sample/demos-jp/ttkmenu.rb
+++ b/ext/tk/sample/demos-jp/ttkmenu.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# ttkmenu.rb --
#
@@ -22,21 +22,21 @@ base_frame = Ttk::Frame.new($ttkmenu_demo).pack(:fill=>:both, :expand=>true)
Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i', :justify=>:left,
:text=><<EOL).pack(:side=>:top, :fill=>:x)
-Ttkとは,テーマ指定可能な新しいウィジェット集合です.\
-これによりテーマに対応することができるようになったウィジェットのひとつに\
-メニューボタンがあります.\
-以下では,テーマに対応したメニューボタンがいくつか表示されています.\
-それらを使って,現在使用中のテーマを変更することが可能です.\
-テーマの選択がメニューボタン自身の見掛けを変化させる様子や,\
-中央のメニューボタンだけが異なるスタイル\
-(ツールバーでの一般的な表示に適したもの)で表示されている様子に\
-注目してください.\
-なお,メニューボタンについてはテーマに対応したウィジェットがありますが,\
-メニューについてはテーマに対応したウィジェットは含まれていません.\
-その理由は,標準のTkのメニューウィジェットが\
-すべてのプラットホームで十分に良好な見掛けと操作性を持っている,\
-特に,多くの環境でその環境本来の操作体系となるように実装されていると\
-判断されたことによります.
+TtkȤϡơ޻ǽʿåȽǤ\
+ˤơޤб뤳ȤǤ褦ˤʤäåȤΤҤȤĤ\
+˥塼ܥ󤬤ޤ\
+ʲǤϡơޤб˥塼ܥ󤬤ĤɽƤޤ\
+Ȥäơ߻Υơޤѹ뤳ȤǽǤ\
+ơޤ򤬥˥塼ܥ󼫿ȤθݤѲͻҤ䡤\
+Υ˥塼ܥۤʤ륹\
+(ġСǤΰŪɽŬ)ɽƤͻҤ\
+ܤƤ\
+ʤ˥塼ܥˤĤƤϥơޤбåȤޤ\
+˥塼ˤĤƤϥơޤбåȤϴޤޤƤޤ\
+ͳϡɸTkΥ˥塼åȤ\
+٤ƤΥץåȥۡǽʬɹʸݤäƤ롤\
+äˡ¿δĶǤδĶηϤȤʤ褦˼Ƥ\
+ȽǤ줿Ȥˤޤ
EOL
Ttk::Separator.new(base_frame).pack(:side=>:top, :fill=>:x)
@@ -46,10 +46,10 @@ Ttk::Frame.new($ttkmenu_demo) {|frame|
sep = Ttk::Separator.new(frame)
Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
TkGrid('x',
- Ttk::Button.new(frame, :text=>'コード参照',
+ Ttk::Button.new(frame, :text=>'ɻ',
:image=>$image['view'], :compound=>:left,
:command=>proc{showCode 'ttkmenu'}),
- Ttk::Button.new(frame, :text=>'閉じる',
+ Ttk::Button.new(frame, :text=>'Ĥ',
:image=>$image['delete'], :compound=>:left,
:command=>proc{
$ttkmenu_demo.destroy
@@ -60,12 +60,12 @@ Ttk::Frame.new($ttkmenu_demo) {|frame|
pack(:side=>:bottom, :fill=>:x)
}
-b1 = Ttk::Menubutton.new(base_frame,:text=>'テーマを選択',:direction=>:above)
-b2 = Ttk::Menubutton.new(base_frame,:text=>'テーマを選択',:direction=>:left)
-b3 = Ttk::Menubutton.new(base_frame,:text=>'テーマを選択',:direction=>:right)
-b4 = Ttk::Menubutton.new(base_frame,:text=>'テーマを選択',:direction=>:flush,
+b1 = Ttk::Menubutton.new(base_frame,:text=>'ơޤ',:direction=>:above)
+b2 = Ttk::Menubutton.new(base_frame,:text=>'ơޤ',:direction=>:left)
+b3 = Ttk::Menubutton.new(base_frame,:text=>'ơޤ',:direction=>:right)
+b4 = Ttk::Menubutton.new(base_frame,:text=>'ơޤ',:direction=>:flush,
:style=>Ttk::Menubutton.style('Toolbutton'))
-b5 = Ttk::Menubutton.new(base_frame,:text=>'テーマを選択',:direction=>:below)
+b5 = Ttk::Menubutton.new(base_frame,:text=>'ơޤ',:direction=>:below)
b1.menu(m1 = Tk::Menu.new(b1, :tearoff=>false))
b2.menu(m2 = Tk::Menu.new(b2, :tearoff=>false))
diff --git a/ext/tk/sample/demos-jp/ttknote.rb b/ext/tk/sample/demos-jp/ttknote.rb
index f3b2fa5881..f0cd258893 100644
--- a/ext/tk/sample/demos-jp/ttknote.rb
+++ b/ext/tk/sample/demos-jp/ttknote.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# ttknote.rb --
#
@@ -23,10 +23,10 @@ Ttk::Frame.new($ttknote_demo) {|frame|
sep = Ttk::Separator.new(frame)
Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
TkGrid('x',
- Ttk::Button.new(frame, :text=>'コード参照',
+ Ttk::Button.new(frame, :text=>'ɻ',
:image=>$image['view'], :compound=>:left,
:command=>proc{showCode 'ttknote'}),
- Ttk::Button.new(frame, :text=>'閉じる',
+ Ttk::Button.new(frame, :text=>'Ĥ',
:image=>$image['delete'], :compound=>:left,
:command=>proc{
$ttknote_demo.destroy
@@ -48,31 +48,31 @@ notebook.enable_traversal
f_msg = Ttk::Frame.new(notebook)
msg_m = Ttk::Label.new(f_msg, :font=>$font, :wraplength=>'5i',
:justify=>:left, :anchor=>'n', :text=><<EOL)
-Ttkとは,テーマ指定可能な新しいウィジェット集合です.\
-その中に含まれるウィジェットのひとつにノートブックウィジェットがあります.\
-ノートブックウィジェットは,\
-個別の内容を持ったパネルからの選択を可能にするような\
-タブの集合(タブセット)を定めます.\
-タブセットは最近の多くのユーザインターフェースで見られる機能です.\
-タブの選択は,マウスによるだけでなく,\
-ノートブックウィジェットのページの見出しが選択されている時であれば\
-Ctrl+Tabキーの入力によっても行うことができます.\
-このデモでは,見出しで下線付きの文字のキーとAltキーとを組み合わせることで\
-ページを選択することができるようにも設定しています.\
-ただし,2番目のタブは無効化されて選択できないようになっていることには\
-注意してください.
+TtkȤϡơ޻ǽʿåȽǤ\
+˴ޤޤ륦åȤΤҤȤĤ˥Ρȥ֥ååȤޤ\
+Ρȥ֥ååȤϡ\
+̤Ƥäѥͥ뤫ǽˤ褦\
+֤νʥ֥åȡˤޤ\
+֥åȤϺǶ¿Υ桼󥿡եǸ뵡ǽǤ\
+֤ϡޥˤǤʤ\
+Ρȥ֥ååȤΥڡθФ򤵤ƤǤ\
+Ctrl+TabϤˤäƤԤȤǤޤ\
+ΥǥǤϡФDzդʸΥAltȤȤ߹碌뤳Ȥ\
+ڡ򤹤뤳ȤǤ褦ˤꤷƤޤ\
+ܤΥ̵֤Ǥʤ褦ˤʤäƤ뤳Ȥˤ\
+դƤ
EOL
neat = TkVariable.new
after_id = nil
-msg_b = Ttk::Button.new(f_msg, :text=>'すてきだ!(Neat!)', :underline=>6,
+msg_b = Ttk::Button.new(f_msg, :text=>'Ƥ(Neat!)', :underline=>6,
:command=>proc{
- neat.value = 'あぁ,そのとおりさ...'
+ neat.value = 'ΤȤꤵ'
Tk.after_cancel(after_id) if after_id
after_id = Tk.after(500){neat.value = ''}
})
msg_b.winfo_toplevel.bind('Alt-n'){ msg_b.focus; msg_b.invoke }
msg_l = Ttk::Label.new(f_msg, :textvariable=>neat)
-notebook.add(f_msg, :text=>'説明(Description)', :underline=>3, :padding=>2)
+notebook.add(f_msg, :text=>'(Description)', :underline=>3, :padding=>2)
Tk.grid(msg_m, '-', :sticky=>'new', :pady=>2)
Tk.grid(msg_b, msg_l, :pady=>[2, 4], :padx=>20)
msg_b.grid_configure(:sticky=>'e')
@@ -82,11 +82,11 @@ f_msg.grid_columnconfigure([0, 1], :weight=>1, :uniform=>1)
## Populate the second pane. Note that the content doesn't really matter
f_disabled = Ttk::Frame.new(notebook)
-notebook.add(f_disabled, :text=>'無効化されたタブ', :state=>:disabled)
+notebook.add(f_disabled, :text=>'̵줿', :state=>:disabled)
## Popuplate the third pane
f_editor = Ttk::Frame.new(notebook)
-notebook.add(f_editor, :text=>'テキストエディタ(Text Editor)', :underline=>9)
+notebook.add(f_editor, :text=>'ƥȥǥ(Text Editor)', :underline=>9)
editor_t = Tk::Text.new(f_editor, :width=>40, :height=>10, :wrap=>:char)
if Tk.windowingsystem != 'aqua'
editor_s = editor_t.yscrollbar(Ttk::Scrollbar.new(f_editor))
diff --git a/ext/tk/sample/demos-jp/ttkpane.rb b/ext/tk/sample/demos-jp/ttkpane.rb
index a5c1a08ec9..a7b458a683 100644
--- a/ext/tk/sample/demos-jp/ttkpane.rb
+++ b/ext/tk/sample/demos-jp/ttkpane.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# ttkpane.rb --
#
@@ -21,9 +21,9 @@ base_frame = TkFrame.new($ttkpane_demo).pack(:fill=>:both, :expand=>true)
Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i', :justify=>:left,
:text=><<EOL).pack(:side=>:top, :fill=>:x)
-このデモは,埋め込み関係にあるテーマ付きペインドウィンドウを示しています.\
-それぞれの大きさは,含まれているペインの間にあるエリアをつかんで\
-境界をドラッグすることで変更できます.
+Υǥϡߴطˤơդڥɥɥ򼨤Ƥޤ\
+줾礭ϡޤޤƤڥδ֤ˤ륨ꥢĤ\
+ɥå뤳ȤѹǤޤ
EOL
Ttk::Separator.new(base_frame).pack(:side=>:top, :fill=>:x)
@@ -33,10 +33,10 @@ Ttk::Frame.new(base_frame) {|frame|
sep = Ttk::Separator.new(frame)
Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
TkGrid('x',
- Ttk::Button.new(frame, :text=>'コード参照',
+ Ttk::Button.new(frame, :text=>'ɻ',
:image=>$image['view'], :compound=>:left,
:command=>proc{showCode 'ttkpane'}),
- Ttk::Button.new(frame, :text=>'閉じる',
+ Ttk::Button.new(frame, :text=>'Ĥ',
:image=>$image['delete'], :compound=>:left,
:command=>proc{
$ttkpane_demo.destroy
@@ -52,19 +52,19 @@ frame = Ttk::Frame.new(base_frame).pack(:fill=>:both, :expand=>true)
outer = Ttk::Panedwindow.new(frame, :orient=>:horizontal)
outer.add(in_left = Ttk::Panedwindow.new(outer, :orient=>:vertical))
outer.add(in_right = Ttk::Panedwindow.new(outer, :orient=>:vertical))
-in_left.add(left_top = Ttk::Labelframe.new(in_left, :text=>'ボタン'))
-in_left.add(left_bot = Ttk::Labelframe.new(in_left, :text=>'時計'))
-in_right.add(right_top = Ttk::Labelframe.new(in_right, :text=>'プログレス'))
-in_right.add(right_bot = Ttk::Labelframe.new(in_right, :text=>'テキスト'))
+in_left.add(left_top = Ttk::Labelframe.new(in_left, :text=>'ܥ'))
+in_left.add(left_bot = Ttk::Labelframe.new(in_left, :text=>''))
+in_right.add(right_top = Ttk::Labelframe.new(in_right, :text=>'ץ쥹'))
+in_right.add(right_bot = Ttk::Labelframe.new(in_right, :text=>'ƥ'))
if Tk.windowingsystem == 'aqua'
[left_top, left_bot, right_top, right_bot].each{|w| w.padding(3) }
end
# Fill the button pane
-Ttk::Button.new(left_top, :text=>'押してね',
+Ttk::Button.new(left_top, :text=>'Ƥ',
:command=>proc{
Tk.messageBox(:type=>'ok', :icon=>'info',
- :message=>'いてて!',
+ :message=>'Ƥơ',
:detail=>'That hurt...', :parent=>base_frame,
:title=>'Button Pressed')
}).pack(:padx=>2, :pady=>5)
diff --git a/ext/tk/sample/demos-jp/ttkprogress.rb b/ext/tk/sample/demos-jp/ttkprogress.rb
index ec28253a9f..82898bf50e 100644
--- a/ext/tk/sample/demos-jp/ttkprogress.rb
+++ b/ext/tk/sample/demos-jp/ttkprogress.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# ttkprogress.rb --
#
@@ -21,16 +21,16 @@ base_frame = TkFrame.new($ttkprogress_demo).pack(:fill=>:both, :expand=>true)
Ttk::Label.new(base_frame, :font=>$font, :wraplength=>'4i', :justify=>:left,
:text=><<EOL).pack(:side=>:top, :fill=>:x)
-下にあるのは二つのプログレスバーです.\
-上のものは"determinate"タイプのプログレスバーで,\
-例えばプログラムが与えられたタスクを終了するまでにどのくらいかかるかを\
-示すときなどに用いられます.\
-下のものは"indeterminate"タイプのプログレスバーで,\
-例えばプログラムが実行中(busy)であるものの\
-終了までにどれくらいかかるかは分からないという状態を\
-示すときなどに用いられます.\
-いずれのプログレスバーも,すぐ下にあるボタンを使うことで\
-自動アニメーションモードのON/OFFを切替えることができます.
+ˤΤĤΥץ쥹СǤ\
+ΤΤ"determinate"פΥץ쥹Сǡ\
+㤨ХץबͿ줿λޤǤˤɤΤ餤뤫\
+ȤʤɤѤޤ\
+ΤΤ"indeterminate"פΥץ쥹Сǡ\
+㤨Хץब¹(busy)ǤΤ\
+λޤǤˤɤ줯餤뤫ʬʤȤ֤\
+ȤʤɤѤޤ\
+Υץ쥹С⡤ˤܥȤȤ\
+ư˥᡼⡼ɤON/OFFؤ뤳ȤǤޤ
EOL
## See Code / Dismiss buttons
@@ -38,10 +38,10 @@ Ttk::Frame.new(base_frame) {|frame|
sep = Ttk::Separator.new(frame)
Tk.grid(sep, :columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
TkGrid('x',
- Ttk::Button.new(frame, :text=>'コード参照',
+ Ttk::Button.new(frame, :text=>'ɻ',
:image=>$image['view'], :compound=>:left,
:command=>proc{showCode 'ttkprogress'}),
- Ttk::Button.new(frame, :text=>'閉じる',
+ Ttk::Button.new(frame, :text=>'Ĥ',
:image=>$image['delete'], :compound=>:left,
:command=>proc{
$ttkprogress_demo.destroy
diff --git a/ext/tk/sample/demos-jp/twind.rb b/ext/tk/sample/demos-jp/twind.rb
index f13a137cc3..bd0b060754 100644
--- a/ext/tk/sample/demos-jp/twind.rb
+++ b/ext/tk/sample/demos-jp/twind.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# text (embedded windows) widget demo (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($twind_demo) && $twind_demo
$twind_demo.destroy
$twind_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$twind_demo = TkToplevel.new {|w|
title("Text Demonstration - Embedded Windows")
iconname("Embedded Windows")
@@ -18,11 +18,11 @@ $twind_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($twind_demo).pack(:fill=>:both, :expand=>true)
-# frame 生成
+# frame
$twind_buttons = TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc{
tmppath = $twind_demo
$twind_demo = nil
@@ -31,13 +31,13 @@ $twind_buttons = TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc{showCode 'twind'}
}.pack('side'=>'left', 'expand'=>'yes')
}
$twind_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# frame 生成
+# frame
$twind_text = nil
TkFrame.new(base_frame, 'highlightthickness'=>2, 'borderwidth'=>2,
'relief'=>'sunken') {|f|
@@ -51,7 +51,7 @@ TkFrame.new(base_frame, 'highlightthickness'=>2, 'borderwidth'=>2,
}.pack('expand'=>'yes', 'fill'=>'both')
}.pack('expand'=>'yes', 'fill'=>'both')
-# タグ生成
+#
$tag_center = TkTextTag.new($twind_text,
'justify' =>'center',
'spacing1'=>'5m',
@@ -64,70 +64,70 @@ $tag_buttons = TkTextTag.new($twind_text,
'spacing2'=>0,
'spacing3'=>0 )
-# テキストの生成
+# ƥȤ
$twind_text.insert('end',
- 'テキストwidget上に他のwidgetを組み込むことができます。')
+ 'ƥwidget¾widgetȤ߹ळȤǤޤ')
$twind_text.insert('end',
- '組み込みウィンドウと呼ばれ、任意のwidgetが可能です。')
+ 'Ȥ߹ߥɥȸƤФ졢ǤդwidgetǽǤ')
$twind_text.insert('end',
- '例えば、ここに2つのボタンwidgetが組み込まれています。')
-$twind_text.insert('end', '最初のボタンをクリックすと水平方向のスクロールを')
+ '㤨С2ĤΥܥwidgetȤ߹ޤƤޤ')
+$twind_text.insert('end', 'ǽΥܥ򥯥åȿʿΥ')
TkTextWindow.new($twind_text, 'end',
'window'=>TkButton.new($twind_text) {
#text 'ON'
- text 'オン'
+ text ''
command proc{textWindOn $twind_text,$twind_buttons}
cursor 'top_left_arrow'
})
-$twind_text.insert('end', "にします。また2つめのボタンをクリックすると\n")
-$twind_text.insert('end', '水平方向のスクロールを')
+$twind_text.insert('end', "ˤޤޤ2ĤΥܥ򥯥å\n")
+$twind_text.insert('end', 'ʿΥ')
TkTextWindow.new($twind_text, 'end',
'window'=>TkButton.new($twind_text) {
#text 'OFF'
- text 'オフ'
+ text ''
command proc{textWindOff $twind_text}
cursor 'top_left_arrow'
})
-$twind_text.insert('end', 'にします。')
+$twind_text.insert('end', 'ˤޤ')
-$twind_text.insert('end', 'もうひとつの例です。')
+$twind_text.insert('end', '⤦ҤȤĤǤ')
TkTextWindow.new($twind_text, 'end',
'window'=>TkButton.new($twind_text) {
- text 'ここをクリック'
+ text '򥯥å'
command proc{textWindPlot $twind_text}
cursor 'top_left_arrow'
})
-$twind_text.insert('end', 'すると、x-yプロットがここに現れます。')
+$twind_text.insert('end', 'ȡx-yץåȤ˸ޤ')
$mark_plot = TkTextMark.new($twind_text, 'insert')
$mark_plot.gravity='left'
-$twind_text.insert('end', 'マウスでデータを描画することができます。')
+$twind_text.insert('end', 'ޥǥǡ褹뤳ȤǤޤ')
TkTextWindow.new($twind_text, 'end',
'window'=>TkButton.new($twind_text) {
- text '消去'
+ text 'õ'
command proc{textWindDel $twind_text}
cursor 'top_left_arrow'
})
-$twind_text.insert('end', 'をクリックすると元に戻ります。
+$twind_text.insert('end', '򥯥åȸޤ
')
-$twind_text.insert('end', '組み込みウィンドウだけをテキストwidget上に、実際の')
-$twind_text.insert('end', 'テキストはなしで組み込むことは便利です。')
-$twind_text.insert('end', 'この場合は、テキストwidgetはウィンドウマネージャの')
-$twind_text.insert('end', 'ように動作します。例えば、ここにはテキストwidgetに')
-$twind_text.insert('end', 'よってボタンがきれいに並べられています。')
-$twind_text.insert('end', 'これらのボタンで背景色を変えることができます')
-$twind_text.insert('end', '("Default"で元の色に戻すことができます)。')
-$twind_text.insert('end', '"Short"というボタンをクリックすると文字列の長さが')
-$twind_text.insert('end', '変わります。すると自動的にテキストwidgetが')
-$twind_text.insert('end', 'レイアウトを整えてくれます。')
-$twind_text.insert('end', 'もう一度同じボタンを押すと元に戻ります。
+$twind_text.insert('end', 'Ȥ߹ߥɥƥwidgetˡºݤ')
+$twind_text.insert('end', 'ƥȤϤʤȤ߹ळȤǤ')
+$twind_text.insert('end', 'ξϡƥwidgetϥɥޥ͡')
+$twind_text.insert('end', '褦ưޤ㤨Сˤϥƥwidget')
+$twind_text.insert('end', 'äƥܥ󤬤줤¤٤Ƥޤ')
+$twind_text.insert('end', 'ΥܥطʿѤ뤳ȤǤޤ')
+$twind_text.insert('end', '("Default"Ǹο᤹ȤǤޤ)')
+$twind_text.insert('end', '"Short"Ȥܥ򥯥åʸĹ')
+$twind_text.insert('end', 'ѤޤȼưŪ˥ƥwidget')
+$twind_text.insert('end', '쥤ȤƤޤ')
+$twind_text.insert('end', '⤦Ʊܥ򲡤ȸޤ
')
TkTextWindow.new($twind_text, 'end',
'window'=>TkButton.new($twind_text) {|b|
- text 'デフォルト'
+ text 'ǥե'
command proc{embDefBg $twind_text}
cursor 'top_left_arrow'
$tag_buttons.add('end')
@@ -163,7 +163,7 @@ TkTextWindow.new($twind_text, 'end',
'pady'=>2 )
}
-# メソッド定義
+# ᥽å
def textWindOn (w,f)
if defined? $twind_scroll
begin
diff --git a/ext/tk/sample/demos-jp/twind2.rb b/ext/tk/sample/demos-jp/twind2.rb
index a783ba4738..96000b0e14 100644
--- a/ext/tk/sample/demos-jp/twind2.rb
+++ b/ext/tk/sample/demos-jp/twind2.rb
@@ -1,15 +1,15 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# text (embedded windows) widget demo 2 (called by 'widget')
#
-# toplevel widget が存在すれば削除する
+# toplevel widget ¸ߤк
if defined?($twind2_demo) && $twind2_demo
$twind2_demo.destroy
$twind2_demo = nil
end
-# demo 用の toplevel widget を生成
+# demo Ѥ toplevel widget
$twind2_demo = TkToplevel.new {|w|
title("Text Demonstration - Embedded Windows 2")
iconname("Embedded Windows")
@@ -18,15 +18,15 @@ $twind2_demo = TkToplevel.new {|w|
base_frame = TkFrame.new($twind2_demo).pack(:fill=>:both, :expand=>true)
-# frame 生成
+# frame
$twind2_buttons = TkFrame.new(base_frame) {|frame|
TkGrid(TkFrame.new(frame, :height=>2, :relief=>:sunken, :bd=>2),
:columnspan=>4, :row=>0, :sticky=>'ew', :pady=>2)
TkGrid('x',
- TkButton.new(frame, :text=>'コード参照',
+ TkButton.new(frame, :text=>'ɻ',
:image=>$image['view'], :compound=>:left,
:command=>proc{showCode 'twind2'}),
- TkButton.new(frame, :text=>'閉じる',
+ TkButton.new(frame, :text=>'Ĥ',
:image=>$image['delete'], :compound=>:left,
:command=>proc{
tmppath = $twind2_demo
@@ -39,7 +39,7 @@ $twind2_buttons = TkFrame.new(base_frame) {|frame|
}
$twind2_buttons.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
-# frame 生成
+# frame
$twind2_text = nil
TkFrame.new(base_frame, 'highlightthickness'=>2, 'borderwidth'=>2,
'relief'=>'sunken') {|f|
@@ -54,7 +54,7 @@ TkFrame.new(base_frame, 'highlightthickness'=>2, 'borderwidth'=>2,
}.pack('expand'=>'yes', 'fill'=>'both')
}.pack('expand'=>'yes', 'fill'=>'both')
-# タグ生成
+#
$tag2_center = TkTextTag.new($twind2_text,
'justify' =>'center',
'spacing1'=>'5m',
@@ -67,82 +67,82 @@ $tag2_buttons = TkTextTag.new($twind2_text,
'spacing2'=>0,
'spacing3'=>0 )
-# テキストの生成
-$twind2_text.insert('end', 'テキストウィジェットには色々な種類のアイテム')
-$twind2_text.insert('end', '(動的なものや静的なものの両方があります)を')
-$twind2_text.insert('end', '数多く含めることができます。そうしたアイテムは')
-$twind2_text.insert('end', '行替え、タブ、中央揃えなどの様々な方法で')
-$twind2_text.insert('end', '配置することができます。')
-$twind2_text.insert('end', '加えて、テキストウィジェットの内容物が')
-$twind2_text.insert('end', 'ウィンドウサイズに比べて大きすぎる場合でも')
-$twind2_text.insert('end', 'すべての方向にスムーズにスクロールさせて')
-$twind2_text.insert('end', '確認することが可能です。')
+# ƥȤ
+$twind2_text.insert('end', 'ƥȥåȤˤϿʼΥƥ')
+$twind2_text.insert('end', 'ưŪʤΤŪʤΤξޤˤ')
+$twind2_text.insert('end', '¿ޤ뤳ȤǤޤƥ')
+$twind2_text.insert('end', 'ؤ֡·ʤɤ͡ˡ')
+$twind2_text.insert('end', '֤뤳ȤǤޤ')
+$twind2_text.insert('end', 'äơƥȥåȤʪ')
+$twind2_text.insert('end', 'ɥ٤礭Ǥ')
+$twind2_text.insert('end', '٤Ƥ˥ࡼ˥뤵')
+$twind2_text.insert('end', 'ǧ뤳ȤǽǤ')
$twind2_text.insert('end', "\n\n")
-$twind2_text.insert('end', 'テキストウィジェット上には他のウィジェットを')
-$twind2_text.insert('end', '含めることもできます。こうしたものは')
-$twind2_text.insert('end', '「埋め込みウィンドウ」と呼ばれ、その中に')
-$twind2_text.insert('end', 'いかなるウィジェットでも詰め込むことができます。')
-$twind2_text.insert('end', '例えば,ここには2つの')
-$twind2_text.insert('end', 'ボタンウィジェットが埋め込まれています。')
-$twind2_text.insert('end', '最初のボタンをクリックすると、')
-$twind2_text.insert('end', '水平方向のスクロールを ')
+$twind2_text.insert('end', 'ƥȥåȾˤ¾ΥåȤ')
+$twind2_text.insert('end', 'ޤ뤳ȤǤޤΤ')
+$twind2_text.insert('end', 'ߥɥפȸƤФ졢')
+$twind2_text.insert('end', 'ʤ륦åȤǤͤळȤǤޤ')
+$twind2_text.insert('end', '㤨СˤϣĤ')
+$twind2_text.insert('end', 'ܥ󥦥åȤޤƤޤ')
+$twind2_text.insert('end', 'ǽΥܥ򥯥åȡ')
+$twind2_text.insert('end', 'ʿΥ ')
TkTextWindow.new($twind2_text, 'end',
'window'=>TkButton.new($twind2_text) {
#text 'ON'
- text 'オン'
+ text ''
command proc{textWindOn2 $twind2_text,$twind2_buttons}
cursor 'top_left_arrow'
})
-$twind2_text.insert('end', "にします。また、2つめのボタンをクリックすると\n")
-$twind2_text.insert('end', '水平方向のスクロールを')
+$twind2_text.insert('end', "ˤޤޤĤΥܥ򥯥å\n")
+$twind2_text.insert('end', 'ʿΥ')
TkTextWindow.new($twind2_text, 'end',
'window'=>TkButton.new($twind2_text) {
#text 'OFF'
- text 'オフ'
+ text ''
command proc{textWindOff2 $twind2_text}
cursor 'top_left_arrow'
})
-$twind2_text.insert('end', "にします。\n\n")
+$twind2_text.insert('end', "ˤޤ\n\n")
-$twind2_text.insert('end', '次はもうひとつの例です。')
+$twind2_text.insert('end', 'Ϥ⤦ҤȤĤǤ')
TkTextWindow.new($twind2_text, 'end',
'window'=>TkButton.new($twind2_text) {
- text 'ここをクリック'
+ text '򥯥å'
command proc{textWindPlot2 $twind2_text}
cursor 'top_left_arrow'
})
-$twind2_text.insert('end', 'すると、x-yプロットがここに現れます。')
+$twind2_text.insert('end', 'ȡx-yץåȤ˸ޤ')
$mark2_plot = TkTextMark.new($twind2_text, 'insert')
$mark2_plot.gravity='left'
-$twind2_text.insert('end', 'マウスでドラッグすることで、')
-$twind2_text.insert('end', 'プロット上のデータ点を移動することができます。')
+$twind2_text.insert('end', 'ޥǥɥå뤳Ȥǡ')
+$twind2_text.insert('end', 'ץåȾΥǡư뤳ȤǤޤ')
TkTextWindow.new($twind2_text, 'end',
'window'=>TkButton.new($twind2_text) {
- text '消去'
+ text 'õ'
command proc{textWindDel2 $twind2_text}
cursor 'top_left_arrow'
})
-$twind2_text.insert('end', 'をクリックすると元に戻ります。')
+$twind2_text.insert('end', '򥯥åȸޤ')
$twind2_text.insert('end', "\n\n")
-$twind2_text.insert('end', '表示するテキストなしに埋め込みウィンドウだけを')
-$twind2_text.insert('end', 'テキストウィジェットに含めることも有用でしょう。')
-$twind2_text.insert('end', 'この場合、テキストウィジェットは')
-$twind2_text.insert('end', 'ジオメトリマネージャのように働きます。')
-$twind2_text.insert('end', '例えば、ここにはテキストウィジェットに')
-$twind2_text.insert('end', 'よってボタンがきれいに整列して配置されています。')
-$twind2_text.insert('end', 'これらのボタンをクリックすることで、')
-$twind2_text.insert('end', 'このテキストウィジェットの背景色を')
-$twind2_text.insert('end', '変えることができます("デフォルト"ボタンで')
-$twind2_text.insert('end', '元の色に戻すことができます)。')
-$twind2_text.insert('end', '"Short"というボタンをクリックすると文字列の長さが')
-$twind2_text.insert('end', '変わり、テキストウィジェットが自動的に')
-$twind2_text.insert('end', 'レイアウトを整える様子を見ることができます。')
-$twind2_text.insert('end', 'もう一度同じボタンを押すと元に戻ります。')
+$twind2_text.insert('end', 'ɽƥȤʤߥɥ')
+$twind2_text.insert('end', 'ƥȥåȤ˴ޤ뤳ȤͭѤǤ礦')
+$twind2_text.insert('end', 'ξ硢ƥȥåȤ')
+$twind2_text.insert('end', 'ȥޥ͡Τ褦Ưޤ')
+$twind2_text.insert('end', '㤨СˤϥƥȥåȤ')
+$twind2_text.insert('end', 'äƥܥ󤬤줤󤷤֤Ƥޤ')
+$twind2_text.insert('end', 'Υܥ򥯥å뤳Ȥǡ')
+$twind2_text.insert('end', 'ΥƥȥåȤطʿ')
+$twind2_text.insert('end', 'Ѥ뤳ȤǤޤ("ǥե"ܥ')
+$twind2_text.insert('end', 'ο᤹ȤǤޤ)')
+$twind2_text.insert('end', '"Short"Ȥܥ򥯥åʸĹ')
+$twind2_text.insert('end', 'ѤꡢƥȥåȤưŪ')
+$twind2_text.insert('end', '쥤ȤͻҤ򸫤뤳ȤǤޤ')
+$twind2_text.insert('end', '⤦Ʊܥ򲡤ȸޤ')
$twind2_text.insert('end', "\n")
btn_default = TkButton.new($twind2_text) {|b|
- text 'デフォルト'
+ text 'ǥե'
command proc{embDefBg2 $twind2_text}
cursor 'top_left_arrow'
}
@@ -184,8 +184,8 @@ $text_normal2['border'] = $twind2_text.cget('borderwidth')
$text_normal2['highlight'] = $twind2_text.cget('highlightthickness')
$text_normal2['pad'] = $twind2_text.cget('padx')
-$twind2_text.insert('end', "\nborder width や highlightthickness, ")
-$twind2_text.insert('end', "padding を通常の値から変更することも可能です。\n")
+$twind2_text.insert('end', "\nborder width highlightthickness, ")
+$twind2_text.insert('end', "padding ̾ͤѹ뤳ȤǽǤ\n")
TkTextWindow.new($twind2_text, 'end',
'window'=>TkButton.new($twind2_text, :text=>"Big borders",
@@ -229,8 +229,8 @@ TkTextWindow.new($twind2_text, 'end',
textWinSmallP2 $twind2_text
}))
-$twind2_text.insert('end', "\n\n更にイメージもテキストウィジェットに")
-$twind2_text.insert('end', "うまく配置できます:")
+$twind2_text.insert('end', "\n\n˥᡼ƥȥåȤ")
+$twind2_text.insert('end', "ޤ֤Ǥޤ")
TkTextImage.new($twind2_text, 'end',
'image'=>TkBitmapImage.new(:file=>[
@@ -238,7 +238,7 @@ TkTextImage.new($twind2_text, 'end',
'images', 'face.xbm'
].join(File::Separator)))
-# メソッド定義
+# ᥽å
def textWinBigB2(w)
w.borderwidth 15
end
diff --git a/ext/tk/sample/demos-jp/unicodeout.rb b/ext/tk/sample/demos-jp/unicodeout.rb
index 31596cf8fd..4857cd131d 100644
--- a/ext/tk/sample/demos-jp/unicodeout.rb
+++ b/ext/tk/sample/demos-jp/unicodeout.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
#
# unicodeout.rb --
#
@@ -23,41 +23,41 @@ base_frame = TkFrame.new($unicodeout_demo).pack(:fill=>:both, :expand=>true)
TkLabel.new(base_frame,
:font=>$font, :wraplength=>'5.4i', :justify=>:left,
:text=><<EOL).pack(:side=>:top)
-これは,Tkにおける非欧米文字集合を用いる言語に対するサポートについての\
-サンプルです.ただし,下の表示においてあなたが実際にどのような表示を\
-目にするかは,あなたの環境にどのような文字集合がインストールされているかに\
-大きく依存します.また,対象となる文字集合がインストールされていない場合に\
-どのような表示がなされるかもあなたの環境次第です.\
-「コード参照」ボタンを押してソースを表示し,\
-Unicodeout_SampleFrameクラスの@@fontの定義を書き換えて\
-(ファイルの内容は変更されません)\
-「再実行」ボタンのクリックを試してみてください.
-スクリプトが可搬性を持つように,文字列は\\uXXXXという\
-Tclのエスケープ表現を用いたUNICODE文字列で書かれています.\
-文字列は,Tk::UTF8_Stringメソッドによって,\
-「UTF8形式の文字列である」という\
-エンコード情報付きの文字列オブジェクト\
-(Tclのエスケープ表現の変換済み)に変換して\
-ラベルウィジェットに渡している点に注意してください.
+ϡTkˤʸѤФ륵ݡȤˤĤƤ\
+ץǤɽˤƤʤºݤˤɤΤ褦ɽ\
+ܤˤ뤫ϡʤδĶˤɤΤ褦ʸ礬󥹥ȡ뤵Ƥ뤫\
+礭¸ޤޤоݤȤʤʸ礬󥹥ȡ뤵Ƥʤ\
+ɤΤ褦ɽʤ뤫⤢ʤδĶǤ\
+֥ɻȡץܥ򲡤ƥɽ\
+Unicodeout_SampleFrame饹@@font񤭴\
+(եƤѹޤ)\
+ֺƼ¹ԡץܥΥåƤߤƤ
+ץȤĤ褦ˡʸ\\uXXXXȤ\
+TclΥɽѤUNICODEʸǽ񤫤Ƥޤ\
+ʸϡTk::UTF8_String᥽åɤˤäơ\
+UTF8ʸǤפȤ\
+󥳡ɾդʸ󥪥֥\
+(TclΥɽѴѤ)Ѵ\
+٥륦åȤϤƤդƤ
EOL
#'
TkFrame.new(base_frame){|f|
pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
- TkButton.new(f, :text=>'閉じる', :width=>15, :command=>proc{
+ TkButton.new(f, :text=>'Ĥ', :width=>15, :command=>proc{
$unicodeout_demo.destroy
$unicodeout_demo = nil
}).pack(:side=>:left, :expand=>true)
- TkButton.new(f, :text=>'コード参照', :width=>15, :command=>proc{
+ TkButton.new(f, :text=>'ɻ', :width=>15, :command=>proc{
showCode 'unicodeout'
}).pack(:side=>:left, :expand=>true)
}
wait_msg = TkLabel.new(base_frame,
- :text=>"フォント読み込みの完了まで" +
- "しばらくお待ち下さい...",
+ :text=>"եɤ߹ߤδλޤ" +
+ "Ф餯Ԥ",
:font=>"Helvetica 12 italic").pack
class Unicodeout_SampleFrame < TkFrame
diff --git a/ext/tk/sample/demos-jp/vscale.rb b/ext/tk/sample/demos-jp/vscale.rb
index 6ae513bc33..a1097fd77f 100644
--- a/ext/tk/sample/demos-jp/vscale.rb
+++ b/ext/tk/sample/demos-jp/vscale.rb
@@ -1,4 +1,4 @@
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
require "tkcanvas"
if defined?($vscale_demo) && $vscale_demo
@@ -18,17 +18,17 @@ msg = TkLabel.new(base_frame) {
font $font
wraplength '3.5i'
justify 'left'
-# text "下には矢印が1つと乗直なスケールが表示されています。\
-#スケール上でマウスボタン1をクリック、またはドラッグすると\
-#矢印の長さを変えることができます。"
- text "にはバーと縦型のスケールが表示されています。スケールでマウスのボタン1 をクリックするかドラッグしてバーの高さを変えることができます。終ったら「了解」ボタンを押してください。"
+# text "ˤ1ĤȾľʥ뤬ɽƤޤ\
+#ǥޥܥ1򥯥åޤϥɥå\
+#ĹѤ뤳ȤǤޤ"
+ text "ˤϥСȽķΥ뤬ɽƤޤǥޥΥܥ1 򥯥å뤫ɥåƥСι⤵Ѥ뤳ȤǤޤäλץܥ򲡤Ƥ"
}
msg.pack('side'=>'top', 'padx'=>'.5c')
TkFrame.new(base_frame) {|frame|
TkButton.new(frame) {
- #text '了解'
- text '閉じる'
+ #text 'λ'
+ text 'Ĥ'
command proc {
tmppath = $vscale_demo
$vscale_demo = nil
@@ -37,7 +37,7 @@ TkFrame.new(base_frame) {|frame|
}.pack('side'=>'left', 'expand'=>'yes')
TkButton.new(frame) {
- text 'コード参照'
+ text 'ɻ'
command proc { showCode 'vscale' }
}.pack('side'=>'left', 'expand'=>'yes')
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
diff --git a/ext/tk/sample/demos-jp/widget b/ext/tk/sample/demos-jp/widget
index 5f5dfb9d70..fc3c084e9a 100644
--- a/ext/tk/sample/demos-jp/widget
+++ b/ext/tk/sample/demos-jp/widget
@@ -1,7 +1,7 @@
#!/usr/bin/env ruby
-# -*- coding: utf-8 -*-
+# -*- coding: euc-jp -*-
-# 漢字コード設定 ( tk.rb のロード時の encoding 推定/設定に使われる )
+# ( tk.rb Υɻ encoding /˻Ȥ )
#if RUBY_VERSION < '1.9.0' ### !!!!!!!!!!!!!!
unless defined?(::Encoding.default_external)
$KCODE = 'euc'
@@ -9,28 +9,28 @@ else
DEFAULT_TK_ENCODING = 'EUC-JP'
end
-# tk 関係ライブラリの読み込み
+# tk ط饤֥ɤ߹
require 'tk'
# require 'tkafter'
$RubyTk_WidgetDemo = true
-# widget demo directory 位置の獲得
+# widget demo directory ֤γ
# $demo_dir = File.dirname($0)
$demo_dir = File.dirname(__FILE__)
-# root の生成
+# root
$root = TkRoot.new{title "Ruby/Tk Widget Demonstration"}
-# tk バージョンの取得
+# tk Сμ
$tk_version = Tk::TK_VERSION
$tk_major_ver, $tk_minor_ver = $tk_version.split('.').map{|n| n.to_i}
$tk_patchlevel = Tk::TK_PATCHLEVEL
-# tcl_platform 情報へのアクセスオブジェクト
+# tcl_platform ؤΥ֥
$tk_platform = TkVarAccess.new('tcl_platform')
-# フォント設定
+# ե
#######
case($tk_version)
when /^4.*/
@@ -64,7 +64,7 @@ else
end
#######
-# イメージ設定
+# ᡼
$image = {}
if $tk_major_ver >= 8
@@ -123,7 +123,7 @@ $image['print'] = TkPhotoImage.new(:height=>19, :format=>'GIF', :data=><<EOD)
EOD
end
-# メニュー設定
+# ˥塼
if $tk_major_ver >= 8
$root.add_menubar([[['File', 0],
['About ... ', proc{aboutBox}, 0, '<F1>'],
@@ -154,7 +154,7 @@ TkFrame.new($root){|frame|
}.pack('side'=>'top', 'fill'=>'x')
=end
-# テキストボックスの生成
+# ƥȥܥå
if $tk_version =~ /^4\.[01]/
scr = TkScrollbar.new($root, 'orient'=>'vertical')
txt = TkText.new($root) {
@@ -215,7 +215,7 @@ else
}.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>2)
end
-# テキストタグ設定
+# ƥȥ
if $tk_version =~ /^4.*/
tag_title = TkTextTag.new(txt, 'font'=>'-*-Helvetica-Bold-R-Normal--*-180-*-*-*-*-*-*')
else
@@ -277,267 +277,267 @@ tag_demo.bind('Motion', proc{|x, y|
},
'%x %y')
-# テキスト生成
+# ƥ
txt.insert('end', 'Ruby/Tk : Widget', tag_title)
-#txt.insert('end', " デモンストレーション\n", tag_middle)
-txt.insert('end', " デモンストレーション\n", tag_kanji_title)
+#txt.insert('end', " ǥ󥹥ȥ졼\n", tag_middle)
+txt.insert('end', " ǥ󥹥ȥ졼\n", tag_kanji_title)
txt.insert('end', <<"EOT")
-このアプリケーションは、Tk Widget を用いてどのようなことができるか\
-を示すための、いくつかの小さなスクリプトに対するフロントエンドを提\
-供しています。以下に順番に挙げられているデモンストレーションを実行\
-するにはマウスでクリックしてください。デモンストレーションのウィン\
-ドウが現れると、デモンストレーションを生成した Ruby/Tk のコードを見\
-るために、"コード参照"ボタンをクリックすることができます。あなたが\
-望むなら、そのコードを修正することができます。修正したコードでデモ\
-ンストレーションを再実行するためには、コードが書かれたウィンドウに\
-ある"デモ再実行" ボタンをクリックしてください。\
-コードを修正してもオリジナルのファイルが書き換えられることは\
-ありませんから、心配せずに色々な変更を試してみてください。
-
-一部のデモでは、比較的最近のバージョンの Tk でなければサポートして\
-いない機能を使って実装しています(例えば Tk8.4 以上など)。そのため、\
-そうした機能を持たない Tk ライブラリを使っている場合には、そうした\
-デモは正しく動きません。そのような機能が必要であれば、それをサポート\
-している Tk ライブラリを使うように tcltklib をコンパイルしなおして\
-ください。
-
-もしあなたの Tk が (最初から含むかインストールしたかにより) \
-Ttk (Tile) 拡張を利用できる状態であるなら、\
-Ttk 拡張のデモ (sample/tkextlib/tile/demo.rb) もぜひ試してみてください。
-( 多分,現在のあなたの環境には Ttk 拡張は\
+ΥץꥱϡTk Widget ѤƤɤΤ褦ʤȤǤ뤫\
+򼨤ΡĤξʥץȤФեȥɤ\
+Ƥޤʲ˽֤˵󤲤Ƥǥ󥹥ȥ졼¹\
+ˤϥޥǥåƤǥ󥹥ȥ졼Υ\
+ɥȡǥ󥹥ȥ졼 Ruby/Tk Υɤ\
+뤿ˡ"ɻ"ܥ򥯥å뤳ȤǤޤʤ\
+˾ʤ顢Υɤ뤳ȤǤޤɤǥǥ\
+󥹥ȥ졼Ƽ¹Ԥ뤿ˤϡɤ񤫤줿ɥ\
+"ǥƼ¹" ܥ򥯥åƤ\
+ɤƤ⥪ꥸʥΥե뤬񤭴뤳Ȥ\
+ޤ󤫤顢ۤ˿ѹƤߤƤ
+
+ΥǥǤϡŪǶΥС Tk ǤʤХݡȤ\
+ʤǽȤäƼƤޤ(㤨 Tk8.4 ʾʤ)Τᡢ\
+ǽʤ Tk 饤֥ȤäƤˤϡ\
+ǥưޤ󡣤Τ褦ʵǽɬפǤС򥵥ݡ\
+Ƥ Tk 饤֥Ȥ褦 tcltklib 򥳥ѥ뤷ʤ\
+
+
+⤷ʤ Tk (ǽ餫ޤफ󥹥ȡ뤷ˤ) \
+Ttk (Tile) ĥѤǤ֤Ǥʤ顢\
+Ttk ĥΥǥ (sample/tkextlib/tile/demo.rb) ⤼һƤߤƤ
+( ¿ʬߤΤʤδĶˤ Ttk ĥ\
#{
begin
require 'tkextlib/tile'
- "すでに導入されています"
+ "ǤƳƤޤ"
rescue
- "まだインストールされていません"
+ "ޤ󥹥ȡ뤵Ƥޤ"
end
}\
-。)
-Ttk 拡張は、Tk8.5 以上では標準の機能として組み込まれています。
+)
+Ttk ĥϡTk8.5 ʾǤɸεǽȤȤ߹ޤƤޤ
EOT
-#txt.insert('end',"ラベル, ボタン, チェックボタン, ラジオボタン\n",tag_middle)
-txt.insert('end', "ラベル, ボタン, チェックボタン, ラジオボタン\n",
+#txt.insert('end',"٥, ܥ, åܥ, 饸ܥ\n",tag_middle)
+txt.insert('end', "٥, ܥ, åܥ, 饸ܥ\n",
tag_kanji_title)
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. ラベル (テキスト, ビットマップ)\n",
+txt.insert('end', "1. ٥ (ƥ, ӥåȥޥå)\n",
tag_demo, "demo-label")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. ラベルとUNICODEテキスト (機能に対応したバージョンのTkが必要)\n", tag_demo, "demo-unicodeout")
+txt.insert('end', "2. ٥UNICODEƥ (ǽбСTkɬ)\n", tag_demo, "demo-unicodeout")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. ボタン \n", tag_demo, "demo-button")
+txt.insert('end', "3. ܥ \n", tag_demo, "demo-button")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. チェックボタン (複数を選択可能)\n",
+txt.insert('end', "4. åܥ (ʣǽ)\n",
tag_demo, "demo-check")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. 3状態チェックボタン (機能に対応したバージョンのTkが必要)\n",
+txt.insert('end', "5. ֥åܥ (ǽбСTkɬ)\n",
tag_demo, "demo-check2")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "6. ラジオボタン (任意の一つを選択可能)\n",
+txt.insert('end', "6. 饸ܥ (ǤդΰĤǽ)\n",
tag_demo, "demo-radio")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "7. ラジオボタン (機能に対応したバージョンのTkが必要)\n",
+txt.insert('end', "7. 饸ܥ (ǽбСTkɬ)\n",
tag_demo, "demo-radio2")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "8. 3状態ラジオボタン (機能に対応したバージョンのTkが必要)\n",
+txt.insert('end', "8. ֥饸ܥ (ǽбСTkɬ)\n",
tag_demo, "demo-radio3")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "9. ボタンで作られた15-パズルゲーム\n",
+txt.insert('end', "9. ܥǺ줿15-ѥ륲\n",
tag_demo, "demo-puzzle")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "10. ビットマップを使用したアイコンボタン\n",
+txt.insert('end', "10. ӥåȥޥåפѤܥ\n",
tag_demo, "demo-icon")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "11. 画像を表示する二つのラベル\n",
+txt.insert('end', "11. ɽĤΥ٥\n",
tag_demo, "demo-image1")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "12. 画像を見るための簡単なユーザインターフェース\n",
+txt.insert('end', "12. 򸫤뤿δñʥ桼󥿡ե\n",
tag_demo, "demo-image2")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "13. 画像を見るための簡単なユーザインターフェース (機能に対応したバージョンのTkが必要)\n",
+txt.insert('end', "13. 򸫤뤿δñʥ桼󥿡ե (ǽбСTkɬ)\n",
tag_demo, "demo-image3")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "14. ラベル付きフレーム (機能に対応したバージョンのTkが必要)\n",
+txt.insert('end', "14. ٥դե졼 (ǽбСTkɬ)\n",
tag_demo, "demo-labelframe")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "15. テーマに対応したウィジェットの簡単な例 (Tile/Ttk拡張への対応が必要)\n",
+txt.insert('end', "15. ơޤбåȤδñ (Tile/Ttkĥؤбɬ)\n",
tag_demo, "demo-ttkbut")
txt.insert('end', " \n ", tag_demospace)
txt.insert('end', "\n")
-#txt.insert('end', "リストボックス\n", tag_middle)
-txt.insert('end', "リストボックス\n", tag_kanji_title)
+#txt.insert('end', "ꥹȥܥå\n", tag_middle)
+txt.insert('end', "ꥹȥܥå\n", tag_kanji_title)
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. 都道府県.\n", tag_demo, "demo-states")
+txt.insert('end', "1. ƻܸ.\n", tag_demo, "demo-states")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. 色: アプリケーションのための配色を変える\n",
+txt.insert('end', "2. : ץꥱΤۿѤ\n",
"#{tag_demo.id} demo-colors")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. 格言集\n", tag_demo, "demo-sayings")
+txt.insert('end', "3. ʸ\n", tag_demo, "demo-sayings")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. 国についてのマルチカラムリスト (Tile/Ttk拡張への対応が必要)\n",
+txt.insert('end', "4. ˤĤƤΥޥꥹ (Tile/Ttkĥؤбɬ)\n",
tag_demo, "demo-mclist")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. ディレクトリブラウザ (Tile/Ttk拡張への対応が必要)\n",
+txt.insert('end', "5. ǥ쥯ȥ֥饦 (Tile/Ttkĥؤбɬ)\n",
tag_demo, "demo-tree")
txt.insert('end', " \n ", tag_demospace)
txt.insert('end', "\n")
-#txt.insert('end', "エントリとスピンボックス\n", tag_middle)
-txt.insert('end', "エントリ\n", tag_kanji_title)
+#txt.insert('end', "ȥȥԥܥå\n", tag_middle)
+txt.insert('end', "ȥ\n", tag_kanji_title)
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. スクロールバーなし\n", tag_demo, "demo-entry1")
+txt.insert('end', "1. Сʤ\n", tag_demo, "demo-entry1")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. スクロールバーあり\n", tag_demo, "demo-entry2")
+txt.insert('end', "2. С\n", tag_demo, "demo-entry2")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. 認証処理付きのエントリボックスとパスワードフィールド (機能に対応したバージョンのTkが必要)\n",
+txt.insert('end', "3. ǧڽդΥȥܥåȥѥɥե (ǽбСTkɬ)\n",
tag_demo, "demo-entry3")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. スピンボックス (機能に対応したバージョンのTkが必要)\n",
+txt.insert('end', "4. ԥܥå (ǽбСTkɬ)\n",
tag_demo, "demo-spin")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. コンボボックス (Tile/Ttk拡張への対応が必要)\n",
+txt.insert('end', "5. ܥܥå (Tile/Ttkĥؤбɬ)\n",
tag_demo, "demo-combo")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "6. 簡単なフォーム\n", tag_demo, "demo-form")
+txt.insert('end', "6. ñʥե\n", tag_demo, "demo-form")
txt.insert('end', " \n ", tag_demospace)
txt.insert('end', "\n")
-#txt.insert('end', "テキスト\n", tag_middle)
-txt.insert('end', "テキスト\n", tag_kanji_title)
+#txt.insert('end', "ƥ\n", tag_middle)
+txt.insert('end', "ƥ\n", tag_kanji_title)
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. 基本的なテキスト\n", tag_demo, "demo-text")
+txt.insert('end', "1. Ūʥƥ\n", tag_demo, "demo-text")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. 表示スタイル.\n", tag_demo, "demo-style")
+txt.insert('end', "2. ɽ.\n", tag_demo, "demo-style")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. ハイパーテキスト(タグバインド).\n",
+txt.insert('end', "3. ϥѡƥ(Х).\n",
tag_demo, "demo-bind")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. ウィンドウを埋め込んだテキスト\n",
+txt.insert('end', "4. ɥƥ\n",
tag_demo, "demo-twind")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. ウィンドウを埋め込んだテキスト (機能に対応したバージョンのTkが必要)\n",
+txt.insert('end', "5. ɥƥ (ǽбСTkɬ)\n",
tag_demo, "demo-twind2")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "6. 検索\n", tag_demo, "demo-search")
+txt.insert('end', "6. \n", tag_demo, "demo-search")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "7. テキストウィジェットの対等化(peering) (機能に対応したバージョンのTkが必要)\n", tag_demo, "demo-textpeer")
+txt.insert('end', "7. ƥȥåȤ(peering) (ǽбСTkɬ)\n", tag_demo, "demo-textpeer")
txt.insert('end', " \n ", tag_demospace)
txt.insert('end', "\n")
-#txt.insert('end', "キャンバス\n", tag_middle)
-txt.insert('end', "キャンバス\n", tag_kanji_title)
+#txt.insert('end', "Х\n", tag_middle)
+txt.insert('end', "Х\n", tag_kanji_title)
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. アイテムの型\n", tag_demo, "demo-items")
+txt.insert('end', "1. ƥη\n", tag_demo, "demo-items")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. 2 次元のプロット\n", tag_demo, "demo-plot")
+txt.insert('end', "2. 2 Υץå\n", tag_demo, "demo-plot")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. テキスト\n", tag_demo, "demo-ctext")
+txt.insert('end', "3. ƥ\n", tag_demo, "demo-ctext")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. 矢印の形\n", tag_demo, "demo-arrow")
+txt.insert('end', "4. η\n", tag_demo, "demo-arrow")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. ルーラー\n", tag_demo, "demo-ruler")
+txt.insert('end', "5. 롼顼\n", tag_demo, "demo-ruler")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "6. フロアプラン\n", tag_demo, "demo-floor")
+txt.insert('end', "6. եץ\n", tag_demo, "demo-floor")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "7. フロアプラン (異なるキャンバスアイテム作成方法を使用)\n", tag_demo, "demo-floor2")
+txt.insert('end', "7. եץ (ۤʤ륭Хƥˡ)\n", tag_demo, "demo-floor2")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "8. スクロール可能なキャンバス\n",
+txt.insert('end', "8. ǽʥХ\n",
tag_demo, "demo-cscroll")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "9. チェスボード上の騎士の巡回 (Tile/Ttk拡張への対応が必要)\n",
+txt.insert('end', "9. ܡɾεΤν (Tile/Ttkĥؤбɬ)\n",
tag_demo, "demo-knightstour")
txt.insert('end', " \n ", tag_demospace)
txt.insert('end', "\n")
-#txt.insert('end', "スケールとプログレスバー\n", tag_middle)
-txt.insert('end', "スケールとプログレスバー\n", tag_kanji_title)
+#txt.insert('end', "ȥץ쥹С\n", tag_middle)
+txt.insert('end', "ȥץ쥹С\n", tag_kanji_title)
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. 垂直スケール\n", tag_demo.id, "demo-vscale")
+txt.insert('end', "1. ľ\n", tag_demo.id, "demo-vscale")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. 水平スケール\n", tag_demo.id, "demo-hscale")
+txt.insert('end', "2. ʿ\n", tag_demo.id, "demo-hscale")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. プログレスバー (Tile/Ttk拡張への対応が必要)\n", tag_demo.id, "demo-ttkprogress")
+txt.insert('end', "3. ץ쥹С (Tile/Ttkĥؤбɬ)\n", tag_demo.id, "demo-ttkprogress")
txt.insert('end', " \n ", tag_demospace)
txt.insert('end', "\n")
-txt.insert('end', "ペインドウィンドウとノートブック\n", tag_kanji_title)
+txt.insert('end', "ڥɥɥȥΡȥ֥å\n", tag_kanji_title)
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. 水平方向 (機能に対応したバージョンのTkが必要)\n",
+txt.insert('end', "1. ʿ (ǽбСTkɬ)\n",
tag_demo.id, "demo-paned1")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. 垂直方向 (機能に対応したバージョンのTkが必要)\n",
+txt.insert('end', "2. ľ (ǽбСTkɬ)\n",
tag_demo.id, "demo-paned2")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. テーマに対応した埋め込みペイン (Tile/Ttk拡張への対応が必要)\n",
+txt.insert('end', "3. ơޤбߥڥ (Tile/Ttkĥؤбɬ)\n",
tag_demo.id, "demo-ttkpane")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. ノートブックウィジェット (Tile/Ttk拡張への対応が必要)\n",
+txt.insert('end', "4. Ρȥ֥åå (Tile/Ttkĥؤбɬ)\n",
tag_demo.id, "demo-ttknote")
txt.insert('end', " \n ", tag_demospace)
txt.insert('end', "\n")
-#txt.insert('end', "メニューとツールバー\n", tag_middle)
-txt.insert('end', "メニューとツールバー\n", tag_kanji_title)
+#txt.insert('end', "˥塼ȥġС\n", tag_middle)
+txt.insert('end', "˥塼ȥġС\n", tag_kanji_title)
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. メニューとカスケードを含んだウィンドウ\n",
+txt.insert('end', "1. ˥塼ȥɤޤɥ\n",
tag_demo, "demo-menu")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. メニューとカスケードを含んだウィンドウ (Tk8.x 専用)\n",
+txt.insert('end', "2. ˥塼ȥɤޤɥ (Tk8.x )\n",
tag_demo, "demo-menu8x")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. 〃 (機能に対応したバージョンのTkが必要)\n",
+txt.insert('end', "3. (ǽбСTkɬ)\n",
tag_demo, "demo-menu84")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. メニューボタン (Tk8.x 専用)\n",
+txt.insert('end', "4. ˥塼ܥ (Tk8.x )\n",
tag_demo, "demo-menubu")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "5. テーマに対応したメニューボタン (Tile/Ttk拡張への対応が必要)\n",
+txt.insert('end', "5. ơޤб˥塼ܥ (Tile/Ttkĥؤбɬ)\n",
tag_demo.id, "demo-ttkmenu")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "6. テーマに対応したツールバー (Tile/Ttk拡張への対応が必要)\n",
+txt.insert('end', "6. ơޤбġС (Tile/Ttkĥؤбɬ)\n",
tag_demo.id, "demo-toolbar")
txt.insert('end', " \n ", tag_demospace)
txt.insert('end', "\n")
-#txt.insert('end', "ダイアログウィンドウ\n", tag_middle)
-txt.insert('end', "ダイアログウィンドウ\n", tag_kanji_title)
+#txt.insert('end', "ɥ\n", tag_middle)
+txt.insert('end', "ɥ\n", tag_kanji_title)
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. メッセージボックス\n", tag_demo, "demo-msgbox")
+txt.insert('end', "1. åܥå\n", tag_demo, "demo-msgbox")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. 詳細テキスト付きのメッセージボックス (機能に対応したバージョンのTkが必要)\n", tag_demo, "demo-msgbox2")
+txt.insert('end', "2. ܺ٥ƥդΥåܥå (ǽбСTkɬ)\n", tag_demo, "demo-msgbox2")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. ファイル選択ダイアログ\n", tag_demo, "demo-filebox")
+txt.insert('end', "3. ե\n", tag_demo, "demo-filebox")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. 色選択ダイアログ\n", tag_demo, "demo-clrpick")
+txt.insert('end', "4. \n", tag_demo, "demo-clrpick")
txt.insert('end', " \n ", tag_demospace)
txt.insert('end', "\n")
-#txt.insert('end', "アニメーション\n", tag_middle)
-txt.insert('end', "アニメーション\n", tag_kanji_title)
+#txt.insert('end', "˥᡼\n", tag_middle)
+txt.insert('end', "˥᡼\n", tag_kanji_title)
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. アニメーションラベル (機能に対応したバージョンのTkが必要)\n", tag_demo, "demo-anilabel")
+txt.insert('end', "1. ˥᡼٥ (ǽбСTkɬ)\n", tag_demo, "demo-anilabel")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. 波形のアニメーション (機能に対応したバージョンのTkが必要)\n", tag_demo, "demo-aniwave")
+txt.insert('end', "2. ȷΥ˥᡼ (ǽбСTkɬ)\n", tag_demo, "demo-aniwave")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. 振り子のシミュレーション (機能に対応したバージョンのTkが必要)\n", tag_demo, "demo-pendulum")
+txt.insert('end', "3. ҤΥߥ졼 (ǽбСTkɬ)\n", tag_demo, "demo-pendulum")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "4. A celebration of Rube Goldberg (機能に対応したバージョンのTkが必要)\n", tag_demo, "demo-goldberg")
+txt.insert('end', "4. A celebration of Rube Goldberg (ǽбСTkɬ)\n", tag_demo, "demo-goldberg")
txt.insert('end', "\n")
-#txt.insert('end', "その他\n", tag_middle)
-txt.insert('end', "その他\n", tag_kanji_title)
+#txt.insert('end', "¾\n", tag_middle)
+txt.insert('end', "¾\n", tag_kanji_title)
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "1. 組み込みのビットマップ\n", tag_demo, "demo-bitmap")
+txt.insert('end', "1. Ȥ߹ߤΥӥåȥޥå\n", tag_demo, "demo-bitmap")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "2. モーダルダイアログ(ローカルグラブ)\n",
+txt.insert('end', "2. ⡼(륰)\n",
tag_demo, "demo-dialog1")
txt.insert('end', " \n ", tag_demospace)
-txt.insert('end', "3. モーダルダイアログ(グローバルグラブ)\n",
+txt.insert('end', "3. ⡼(Х륰)\n",
tag_demo, "demo-dialog2")
txt.insert('end', " \n ", tag_demospace)
@@ -545,13 +545,13 @@ txt.state('disabled')
scr.focus
################################
-# method 定義
+# method
################################
def positionWindow(w)
w.geometry('+300+300')
end
-# 親ウィジェットと,変数名と TkVariable との組(配列)の並びを渡す
+# ƥåȤȡѿ̾ TkVariable Ȥ()¤ӤϤ
$showVarsWin = {}
def showVars1(parent, *args)
if $showVarsWin[parent.path]
@@ -564,7 +564,7 @@ def showVars1(parent, *args)
title "Variable values"
base = TkFrame.new(w).pack(:fill=>:both, :expand=>true)
TkLabel.new(base) {
- text "変数値:"
+ text "ѿ:"
width 20
anchor 'center'
if $tk_version =~ /^4.*/
@@ -586,7 +586,7 @@ def showVars1(parent, *args)
}.pack('side'=>'top', 'anchor'=>'w', 'fill'=>'x')
}
TkButton.new(base) {
- text "了解"
+ text "λ"
command proc{w.destroy}
}.pack('side'=>'bottom', 'pady'=>2)
}
@@ -605,7 +605,7 @@ def showVars2(parent, *args)
base = TkFrame.new(top).pack(:fill=>:both, :expand=>true)
- TkLabelFrame.new(base, :text=>"変数値:",
+ TkLabelFrame.new(base, :text=>"ѿ:",
:font=>{:family=>'Helvetica', :size=>14}){|f|
args.each{|vnam,vbody|
TkGrid(TkLabel.new(f, :text=>"#{vnam}: ", :anchor=>'w'),
@@ -617,7 +617,7 @@ def showVars2(parent, *args)
f.grid_columnconfig(1, :weight=>1)
f.grid_rowconfig(100, :weight=>1)
}
- TkButton.new(base, :text=>"了解", :width=>8, :default=>:active,
+ TkButton.new(base, :text=>"λ", :width=>8, :default=>:active,
:command=>proc{top.destroy}){|b|
top.bind('Return', proc{b.invoke})
top.bind('Escape', proc{b.invoke})
@@ -637,7 +637,7 @@ else # ver >= 8.4
alias showVars showVars2
end
-# 疑似トップレベルサポート
+# ȥåץ٥륵ݡ
module PseudoToplevel_Evaluable
def pseudo_toplevel_eval(body = Proc.new)
Thread.current[:TOPLEVEL] = self
@@ -740,17 +740,17 @@ def eval_samplecode(code, file=nil)
end
}
}
- Tk.update rescue nil
+ Tk.update
end
-# テキスト上での click に対する動作
+# ƥȾǤ click Фư
def invoke(txt, idx)
tag = txt.tag_names(idx).find{|t| t.kind_of?(String) && t =~ /^demo-/}
return unless tag
cursor = txt.cget('cursor')
txt.cursor('watch')
- Tk.update rescue nil
+ Tk.update
# eval(IO.readlines("#{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb").join, _null_binding)
# Tk.update
eval_samplecode(IO.readlines("#{[$demo_dir, tag[5..-1]].join(File::Separator)}.rb").join, tag[5..-1] + '.rb')
@@ -776,7 +776,7 @@ def invoke (txt, idx)
end
=end
-# 状態表示
+# ɽ
def showStatus (txt, index)
tag = txt.tag_names(index).find{|t| t.kind_of?(String) && t =~ /^demo-/}
cursor = txt.cget('cursor')
@@ -786,13 +786,13 @@ def showStatus (txt, index)
else
demoname = tag[5..-1]
$statusBarLabel.configure('text',
- "サンプルプログラム \"#{demoname}\" の実行 ")
+ "ץץ \"#{demoname}\" μ¹ ")
newcursor = 'hand2'
end
txt.configure('cursor'=>newcursor) if cursor != newcursor
end
-# ソースコードの表示
+# ɤɽ
def showCode1(demo)
file = "#{demo}.rb"
$code_window = nil unless defined? $code_window
@@ -801,15 +801,15 @@ def showCode1(demo)
f = TkFrame.new($code_window)
TkButton.new(f) {
- #text "了解"
- text "閉じる"
+ #text "λ"
+ text "Ĥ"
command proc{
$code_window.destroy
$code_window = nil
}
}.pack('side'=>'right', 'expand'=>'false', 'pady'=>2)
TkButton.new(f) {
- text "再実行"
+ text "Ƽ¹"
# command proc{eval($code_text.get('1.0','end'), _null_binding)}
command proc{eval_samplecode($code_text.get('1.0','end'), '<viewer>')}
}.pack('side'=>'right', 'expand'=>'false', 'pady'=>2)
@@ -924,17 +924,17 @@ def showCode2(demo)
posnum.text = pos
}
- #b_dis = TkButton.new(bf, :text=>'了解', :default=>:active,
- b_dis = TkButton.new(bf, :text=>'閉じる', :default=>:active,
+ #b_dis = TkButton.new(bf, :text=>'λ', :default=>:active,
+ b_dis = TkButton.new(bf, :text=>'Ĥ', :default=>:active,
:command=>proc{
$code_window.destroy
$code_window = nil
},
:image=>$image['delete'], :compound=>:left)
- b_prn = TkButton.new(bf, :text=>'印刷',
+ b_prn = TkButton.new(bf, :text=>'',
:command=>proc{printCode($code_text, file)},
:image=>$image['print'], :compound=>:left)
- b_run = TkButton.new(bf, :text=>'再実行',
+ b_run = TkButton.new(bf, :text=>'Ƽ¹',
:command=>proc{
# eval($code_text.get('1.0','end'), _null_binding)
eval_samplecode($code_text.get('1.0','end'), '<viewer>')
@@ -1012,27 +1012,27 @@ def printCode(txt, file)
msg = `lp -c #{fname}`
unless $?.exitstatus == 0
Tk.messageBox(:title=>'Print spooling failure',
- :message=>'エラーが発生しました.' +
- '印刷に失敗したものと思われます : ' + msg)
+ :message=>'顼ȯޤ' +
+ '˼ԤΤȻפޤ : ' + msg)
end
when 'windows'
begin
printTextWin32(fname)
rescue => e
Tk.messageBox(:title=>'Print spooling failure',
- :message=>'エラーが発生しました.' +
- '印刷に失敗したものと思われます : ' +
+ :message=>'顼ȯޤ' +
+ '˼ԤΤȻפޤ : ' +
e.message)
end
when 'macintosh'
Tk.messageBox(:title=>'Operation not Implemented',
- :message=>'印刷機能はまだ実装されていません')
+ :message=>'ǽϤޤƤޤ')
else
Tk.messageBox(:title=>'Operation not Implemented',
- :message=>'検出された環境 ' +
+ :message=>'Ф줿Ķ ' +
Tk::TCL_PLATFORM('platform') +
- ' は未知の環境であるため,' +
- '印刷機能は実装されていません: ')
+ ' ̤ΤδĶǤ뤿ᡤ' +
+ 'ǽϼƤޤ: ')
end
ensure
File.delete(fname)
@@ -1074,7 +1074,7 @@ end
#
def aboutBox
Tk.messageBox('icon'=>'info', 'type'=>'ok', 'title'=>'About Widget Demo',
- 'message'=>"Ruby/Tk ウィジェットデモ Ver.1.7.1-jp\n\n" +
+ 'message'=>"Ruby/Tk åȥǥ Ver.1.7.1-jp\n\n" +
"based on demos of Tk8.1 -- 8.5 " +
"( Copyright of Tcl/Tk demos:: " +
"(c) 1996-1997 Sun Microsystems, Inc. / " +
@@ -1087,14 +1087,14 @@ def aboutBox
end
####################################
-# 引数で指定されたデモを起動する
+# ǻꤵ줿ǥư
no_launcher = false
if ARGV[0] == '-n'
ARGV.shift
no_launcher = true if ARGV.size > 0
else
# show the root widget to make it lower then demo windows
- Tk.update rescue nil
+ Tk.update
end
ARGV.each{|cmd|
if cmd =~ /(.*).rb/
@@ -1118,5 +1118,5 @@ if no_launcher
end
################################
-# イベント待ちに入る
+# ٥Ԥ
Tk.mainloop
diff --git a/ext/tk/sample/msgs_rb2/ja.msg b/ext/tk/sample/msgs_rb2/ja.msg
index 54a105b61f..84e89aa6ef 100644
--- a/ext/tk/sample/msgs_rb2/ja.msg
+++ b/ext/tk/sample/msgs_rb2/ja.msg
@@ -1,85 +1,85 @@
TkMsgCatalog.new('::tkmsgcat_demo') {
- ja 'Application Error', 'アプリケーションエラー', 'utf-8'
- ja 'Blue', '青', 'utf-8'
- ja 'Color', '色選択', 'utf-8'
- ja 'Delete', '消去', 'utf-8'
- ja 'Error', 'エラー', 'utf-8'
- ja 'Exit', '終了', 'utf-8'
- ja 'Green', '緑', 'utf-8'
- ja 'Red', '赤', 'utf-8'
- ja 'blue', '青', 'utf-8'
- ja 'green', '緑', 'utf-8'
- ja 'red', '赤', 'utf-8'
+ ja 'Application Error', 'ץꥱ󥨥顼', 'euc-jp'
+ ja 'Blue', '', 'euc-jp'
+ ja 'Color', '', 'euc-jp'
+ ja 'Delete', 'õ', 'euc-jp'
+ ja 'Error', '顼', 'euc-jp'
+ ja 'Exit', 'λ', 'euc-jp'
+ ja 'Green', '', 'euc-jp'
+ ja 'Red', '', 'euc-jp'
+ ja 'blue', '', 'euc-jp'
+ ja 'green', '', 'euc-jp'
+ ja 'red', '', 'euc-jp'
}
TkMsgCatalog.new('::tk') {
- ja "&Abort", '中止', 'utf-8'
+ ja "&Abort", '', 'euc-jp'
ja "About..."
- ja "All Files", 'すべてのファイル', 'utf-8'
- ja "Application Error", 'アプリケーションエラー', 'utf-8'
- ja "&Blue", '青', 'utf-8'
- ja "&Cancel", '取り消し', 'utf-8'
- ja "Cannot change to the directory \"%1\$s\".\nPermission denied.", "ディレクトリ \"%1\$s\" に変更できません.\n許可がありません.", 'utf-8'
- ja "Choose Directory", 'ディレクトリを選択', 'utf-8'
- ja "Clear", '消去', 'utf-8'
- ja "Color", '色', 'utf-8'
- ja "Console", 'コンソール', 'utf-8'
- ja "Copy", 'コピー', 'utf-8'
- ja "Cut", '切り取り', 'utf-8'
- ja "Delete", '消去', 'utf-8'
- ja "Details >>", '詳細 >>', 'utf-8'
- ja "Directory \"%1\$s\" does not exist.", '"%1$s" というディレクトリは存在しません.', 'utf-8'
- ja "&Directory:", 'ディレクトリ', 'utf-8'
+ ja "All Files", '٤ƤΥե', 'euc-jp'
+ ja "Application Error", 'ץꥱ󥨥顼', 'euc-jp'
+ ja "&Blue", '', 'euc-jp'
+ ja "&Cancel", 'ä', 'euc-jp'
+ ja "Cannot change to the directory \"%1\$s\".\nPermission denied.", "ǥ쥯ȥ \"%1\$s\" ѹǤޤ\nĤޤ", 'euc-jp'
+ ja "Choose Directory", 'ǥ쥯ȥ', 'euc-jp'
+ ja "Clear", 'õ', 'euc-jp'
+ ja "Color", '', 'euc-jp'
+ ja "Console", '󥽡', 'euc-jp'
+ ja "Copy", 'ԡ', 'euc-jp'
+ ja "Cut", 'ڤ', 'euc-jp'
+ ja "Delete", 'õ', 'euc-jp'
+ ja "Details >>", 'ܺ >>', 'euc-jp'
+ ja "Directory \"%1\$s\" does not exist.", '"%1$s" Ȥǥ쥯ȥ¸ߤޤ', 'euc-jp'
+ ja "&Directory:", 'ǥ쥯ȥ', 'euc-jp'
ja "Error: %1\$s"
- ja "Exit", '終了', 'utf-8'
- ja "File \"%1\$s\" already exists.\nDo you want to overwrite it?", "\"%1\$s\" というファイルは既に存在しています.\n書き換えますか?", 'utf-8'
- ja "File \"%1\$s\" already exists.\n\n", "\"%1\$s\" というファイルは既に存在しています.\n\n", 'utf-8'
- ja "File \"%1\$s\" does not exist.", '"%1$s" というファイルは存在しません.', 'utf-8'
- ja "File &name:", 'ファイル名', 'utf-8'
- ja "File &names:", 'ファイル名', 'utf-8'
- ja "Files of &type:", 'ファイル形式', 'utf-8'
- ja "Fi&les:", 'ファイル', 'utf-8'
- ja "&Filter", 'フィルター', 'utf-8'
- ja "Fil&ter:", 'フィルター', 'utf-8'
- ja "&Green", '緑', 'utf-8'
- ja "Hi", 'こんにちは', 'utf-8'
- ja "Hide Console", 'コンソールを隠す', 'utf-8'
- ja "&Ignore", '無視', 'utf-8'
- ja "Invalid file name \"%1\$s\".", '"%1$s" は不正なファイル名です.', 'utf-8'
- ja "Log Files", 'ログファイル', 'utf-8'
- ja "&No", 'いいえ', 'utf-8'
- ja "&OK", '了解', 'utf-8'
- ja "OK", '了解', 'utf-8'
- ja "Ok", '了解', 'utf-8'
- ja "Open", '開く', 'utf-8'
- ja "&Open", '開く', 'utf-8'
- ja "Open Multiple Files", '複数のファイルを開く', 'utf-8'
- ja "Paste", '貼り付け', 'utf-8'
- ja "Quit", '終了', 'utf-8'
- ja "&Red", '赤', 'utf-8'
- ja "Replace existing file?", '既存のファイルを置き換えますか?', 'utf-8'
- ja "&Retry", '再実行', 'utf-8'
- ja "&Save", '保存', 'utf-8'
- ja "Save As", '名前を付けて保存', 'utf-8'
- ja "Save To Log", 'ログを保存', 'utf-8'
- ja "Select Log File", 'ログファイルを選択', 'utf-8'
- ja "Select a file to source", 'ソースファイルを選択', 'utf-8'
- ja "&Selection:", '選択', 'utf-8'
- ja "Skip Messages", 'メッセージをとばす', 'utf-8'
- ja "Source...", 'ソース...', 'utf-8'
- ja "Tcl Scripts", 'Tcl スクリプト', 'utf-8'
+ ja "Exit", 'λ', 'euc-jp'
+ ja "File \"%1\$s\" already exists.\nDo you want to overwrite it?", "\"%1\$s\" Ȥեϴ¸ߤƤޤ\n񤭴ޤ", 'euc-jp'
+ ja "File \"%1\$s\" already exists.\n\n", "\"%1\$s\" Ȥեϴ¸ߤƤޤ\n\n", 'euc-jp'
+ ja "File \"%1\$s\" does not exist.", '"%1$s" Ȥե¸ߤޤ', 'euc-jp'
+ ja "File &name:", 'ե̾', 'euc-jp'
+ ja "File &names:", 'ե̾', 'euc-jp'
+ ja "Files of &type:", 'ե', 'euc-jp'
+ ja "Fi&les:", 'ե', 'euc-jp'
+ ja "&Filter", 'ե륿', 'euc-jp'
+ ja "Fil&ter:", 'ե륿', 'euc-jp'
+ ja "&Green", '', 'euc-jp'
+ ja "Hi", 'ˤ', 'euc-jp'
+ ja "Hide Console", '󥽡򱣤', 'euc-jp'
+ ja "&Ignore", '̵', 'euc-jp'
+ ja "Invalid file name \"%1\$s\".", '"%1$s" ʥե̾Ǥ', 'euc-jp'
+ ja "Log Files", 'ե', 'euc-jp'
+ ja "&No", '', 'euc-jp'
+ ja "&OK", 'λ', 'euc-jp'
+ ja "OK", 'λ', 'euc-jp'
+ ja "Ok", 'λ', 'euc-jp'
+ ja "Open", '', 'euc-jp'
+ ja "&Open", '', 'euc-jp'
+ ja "Open Multiple Files", 'ʣΥե򳫤', 'euc-jp'
+ ja "Paste", 'Žդ', 'euc-jp'
+ ja "Quit", 'λ', 'euc-jp'
+ ja "&Red", '', 'euc-jp'
+ ja "Replace existing file?", '¸Υե֤ޤ', 'euc-jp'
+ ja "&Retry", 'Ƽ¹', 'euc-jp'
+ ja "&Save", '¸', 'euc-jp'
+ ja "Save As", '̾դ¸', 'euc-jp'
+ ja "Save To Log", '¸', 'euc-jp'
+ ja "Select Log File", 'ե', 'euc-jp'
+ ja "Select a file to source", 'ե', 'euc-jp'
+ ja "&Selection:", '', 'euc-jp'
+ ja "Skip Messages", 'åȤФ', 'euc-jp'
+ ja "Source...", '...', 'euc-jp'
+ ja "Tcl Scripts", 'Tcl ץ', 'euc-jp'
ja "Tcl for Windows"
- ja "Text Files", 'テキストファイル', 'utf-8'
- ja "&Yes", 'はい', 'utf-8'
- ja "abort", '中止', 'utf-8'
- ja "blue", '青', 'utf-8'
- ja "cancel", '取り消し', 'utf-8'
- ja "extension", '拡張子', 'utf-8'
- ja "extensions", '拡張子', 'utf-8'
- ja "green", '緑', 'utf-8'
- ja "ignore", '無視', 'utf-8'
- ja "ok", '了解', 'utf-8'
- ja "red", '赤', 'utf-8'
- ja "retry", '再実行', 'utf-8'
- ja "yes", 'はい', 'utf-8'
+ ja "Text Files", 'ƥȥե', 'euc-jp'
+ ja "&Yes", 'Ϥ', 'euc-jp'
+ ja "abort", '', 'euc-jp'
+ ja "blue", '', 'euc-jp'
+ ja "cancel", 'ä', 'euc-jp'
+ ja "extension", 'ĥ', 'euc-jp'
+ ja "extensions", 'ĥ', 'euc-jp'
+ ja "green", '', 'euc-jp'
+ ja "ignore", '̵', 'euc-jp'
+ ja "ok", 'λ', 'euc-jp'
+ ja "red", '', 'euc-jp'
+ ja "retry", 'Ƽ¹', 'euc-jp'
+ ja "yes", 'Ϥ', 'euc-jp'
}
diff --git a/ext/tk/sample/scrollframe.rb b/ext/tk/sample/scrollframe.rb
index e9d8af7ebf..e340e1da3c 100644
--- a/ext/tk/sample/scrollframe.rb
+++ b/ext/tk/sample/scrollframe.rb
@@ -13,8 +13,6 @@
#
require 'tk'
-module Tk::RbWidget; end
-
class Tk::RbWidget::ScrollFrame < TkFrame
include TkComposite
diff --git a/ext/tk/sample/tcltklib/sample0.rb b/ext/tk/sample/tcltklib/sample0.rb
index 0ac303ae9e..cd4c8069b4 100644
--- a/ext/tk/sample/tcltklib/sample0.rb
+++ b/ext/tk/sample/tcltklib/sample0.rb
@@ -1,18 +1,18 @@
#! /usr/local/bin/ruby -vd
-# tcltklib ライブラリのテスト
+# tcltklib 饤֥Υƥ
require "tcltklib"
def test
- # インタプリタを生成する
+ # 󥿥ץ꥿
ip1 = TclTkIp.new()
- # 評価してみる
+ # ɾƤߤ
print ip1._return_value().inspect, "\n"
print ip1._eval("puts {abc}").inspect, "\n"
- # ボタンを作ってみる
+ # ܥäƤߤ
print ip1._return_value().inspect, "\n"
print ip1._eval("button .lab -text exit -command \"destroy .\"").inspect,
"\n"
@@ -20,12 +20,12 @@ def test
print ip1._eval("pack .lab").inspect, "\n"
print ip1._return_value().inspect, "\n"
- # インタプリタから ruby コマンドを評価してみる
+ # 󥿥ץ꥿ ruby ޥɤɾƤߤ
# print ip1._eval(%q/ruby {print "print by ruby\n"}/).inspect, "\n"
print ip1._eval(%q+puts [ruby {print "print by ruby\n"; "puts by tcl/tk"}]+).inspect, "\n"
print ip1._return_value().inspect, "\n"
- # もう一つインタプリタを生成してみる
+ # ⤦ĥ󥿥ץ꥿Ƥߤ
ip2 = TclTkIp.new()
ip2._eval("button .lab -text test -command \"puts test ; destroy .\"")
ip2._eval("pack .lab")
diff --git a/ext/tk/sample/tcltklib/sample1.rb b/ext/tk/sample/tcltklib/sample1.rb
index 3235edfe0d..1965781533 100644
--- a/ext/tk/sample/tcltklib/sample1.rb
+++ b/ext/tk/sample/tcltklib/sample1.rb
@@ -1,131 +1,131 @@
#! /usr/local/bin/ruby -d
-# -*- encoding: utf-8 -*-
-# -d オプションを付けると, デバッグ情報を表示する.
+# -*- encoding: euc-jp -*-
+# -d ץդ, ǥХåɽ.
-# tcltk ライブラリのサンプル
+# tcltk 饤֥Υץ
-# まず, ライブラリを require する.
+# ޤ, 饤֥ require .
require "tcltk"
-# 以下は, Test1 のインスタンスの initialize() で,
-# tcl/tk に関する処理を行う例である.
-# 必ずしもそのようにする必要は無く,
-# (もし, そうしたければ) class の外で tcl/tk に関する処理を行っても良い.
+# ʲ, Test1 Υ󥹥󥹤 initialize() ,
+# tcl/tk ˴ؤԤǤ.
+# ɬ⤽Τ褦ˤɬפ̵,
+# (⤷, ) class γ tcl/tk ˴ؤԤäƤɤ.
class Test1
- # 初期化(インタプリタを生成してウィジェットを生成する).
+ # (󥿥ץ꥿ƥåȤ).
def initialize()
- #### 使う前のおまじない
+ #### ȤΤޤʤ
- # インタプリタの生成.
+ # 󥿥ץ꥿.
ip = TclTkInterpreter.new()
- # コマンドに対応するオブジェクトを c に設定しておく.
+ # ޥɤб륪֥Ȥ c ꤷƤ.
c = ip.commands()
- # 使用するコマンドに対応するオブジェクトは変数に入れておく.
+ # Ѥ륳ޥɤб륪֥ȤѿƤ.
append, bind, button, destroy, incr, info, label, place, set, wm =
c.values_at(
"append", "bind", "button", "destroy", "incr", "info", "label", "place",
"set", "wm")
- #### tcl/tk のコマンドに対応するオブジェクト(TclTkCommand)の操作
+ #### tcl/tk Υޥɤб륪֥(TclTkCommand)
- # 実行する時は, e() メソッドを使う.
- # (以下は, tcl/tk における info command r* を実行.)
+ # ¹Ԥ, e() ᥽åɤȤ.
+ # (ʲ, tcl/tk ˤ info command r* ¹.)
print info.e("command", "r*"), "\n"
- # 引数は, まとめた文字列にしても同じ.
+ # , ޤȤ᤿ʸˤƤƱ.
print info.e("command r*"), "\n"
- # 変数を用いなくとも実行できるが, 見ためが悪い.
+ # ѿѤʤȤ¹ԤǤ뤬, ᤬.
print c["info"].e("command", "r*"), "\n"
- # インタプリタのメソッドとしても実行できるが, 効率が悪い.
+ # 󥿥ץ꥿Υ᥽åɤȤƤ¹ԤǤ뤬, Ψ.
print ip.info("command", "r*"), "\n"
####
- # 以下, 生成したオブジェクトは変数に代入しておかないと
- # GC の対象になってしまう.
+ # ʲ, ֥ȤѿƤʤ
+ # GC оݤˤʤäƤޤ.
- #### tcl/tk の変数に対応するオブジェクト(TclTkVariable)の操作
+ #### tcl/tk ѿб륪֥(TclTkVariable)
- # 生成と同時に値を設定する.
+ # Ʊͤꤹ.
v1 = TclTkVariable.new(ip, "20")
- # 読み出しは get メソッドを使う.
+ # ɤ߽Ф get ᥽åɤȤ.
print v1.get(), "\n"
- # 設定は set メソッドを使う.
+ # set ᥽åɤȤ.
v1.set(40)
print v1.get(), "\n"
- # set コマンドを使って読み出し, 設定は可能だが見ためが悪い.
- # e() メソッド等の引数に直接 TclTkObject や数値を書いても良い.
+ # set ޥɤȤäɤ߽Ф, ϲǽ᤬.
+ # e() ᥽åΰľ TclTkObject ͤ񤤤Ƥɤ.
set.e(v1, 30)
print set.e(v1), "\n"
- # tcl/tk のコマンドで変数を操作できる.
+ # tcl/tk ΥޥɤѿǤ.
incr.e(v1)
print v1.get(), "\n"
append.e(v1, 10)
print v1.get(), "\n"
- #### tcl/tk のウィジェットに対応するオブジェクト(TclTkWidget)の操作
+ #### tcl/tk ΥåȤб륪֥(TclTkWidget)
- # ルートウィジェットを取り出す.
+ # 롼ȥåȤФ.
root = ip.rootwidget()
- # ウィジェットの操作.
+ # åȤ.
root.e("configure -height 300 -width 300")
- # タイトルを付けるときは wm を使う.
+ # ȥդȤ wm Ȥ.
wm.e("title", root, $0)
- # 親ウィジェットとコマンドを指定して, ウィジェットを作る.
+ # ƥåȤȥޥɤꤷ, åȤ.
l1 = TclTkWidget.new(ip, root, label, "-text {type `x' to print}")
- # place すると表示される.
+ # place ɽ.
place.e(l1, "-x 0 -rely 0.0 -relwidth 1 -relheight 0.1")
- # コマンド名は文字列で指定しても良いが, 見ためが悪い.
- # (コマンド名は独立した引数でなければならない.)
+ # ޥ̾ʸǻꤷƤɤ, ᤬.
+ # (ޥ̾ΩǤʤФʤʤ.)
l2 = TclTkWidget.new(ip, root, "label")
- # ウィジェットの操作.
+ # åȤ.
l2.e("configure -text {type `q' to exit}")
place.e(l2, "-x 0 -rely 0.1 -relwidth 1 -relheight 0.1")
- #### tcl/tk のコールバックに対応するオブジェクト(TclTkCallback)の操作
+ #### tcl/tk ΥХåб륪֥(TclTkCallback)
- # コールバックを生成する.
+ # Хå.
c1 = TclTkCallback.new(ip, proc{sample(ip, root)})
- # コールバックを持つウィジェットを生成する.
+ # ХåĥåȤ.
b1 = TclTkWidget.new(ip, root, button, "-text sample -command", c1)
place.e(b1, "-x 0 -rely 0.2 -relwidth 1 -relheight 0.1")
- # イベントループを抜けるには destroy.e(root) する.
+ # ٥ȥ롼פȴˤ destroy.e(root) .
c2 = TclTkCallback.new(ip, proc{destroy.e(root)})
b2 = TclTkWidget.new(ip, root, button, "-text exit -command", c2)
place.e(b2, "-x 0 -rely 0.3 -relwidth 1 -relheight 0.1")
- #### イベントのバインド
- # script の追加 (bind tag sequence +script) は今のところできない.
- # (イテレータ変数の設定がうまくいかない.)
+ #### ٥ȤΥХ
+ # script ɲ (bind tag sequence +script) ϺΤȤǤʤ.
+ # (ƥ졼ѿ꤬ޤʤ.)
- # 基本的にはウィジェットに対するコールバックと同じ.
+ # ŪˤϥåȤФ륳ХåƱ.
c3 = TclTkCallback.new(ip, proc{print("q pressed\n"); destroy.e(root)})
bind.e(root, "q", c3)
- # bind コマンドで % 置換によりパラメータを受け取りたいときは,
- # proc{} の後ろに文字列で指定すると,
- # 置換結果をイテレータ変数を通して受け取ることができる.
- # ただし proc{} の後ろの文字列は,
- # bind コマンドに与えるコールバック以外で指定してはいけない.
+ # bind ޥɤ % ִˤѥ᡼ꤿȤ,
+ # proc{} θʸǻꤹ,
+ # ִ̤򥤥ƥ졼ѿ̤Ƽ뤳ȤǤ.
+ # proc{} θʸ,
+ # bind ޥɤͿ륳ХåʳǻꤷƤϤʤ.
c4 = TclTkCallback.new(ip, proc{|i| print("#{i} pressed\n")}, "%A")
bind.e(root, "x", c4)
- # TclTkCallback を GC の対象にしたければ,
- # dcb() (または deletecallbackkeys()) する必要がある.
+ # TclTkCallback GC оݤˤ,
+ # dcb() (ޤ deletecallbackkeys()) ɬפ.
cb = [c1, c2, c3, c4]
c5 = TclTkCallback.new(ip, proc{|w| TclTk.dcb(cb, root, w)}, "%W")
bind.e(root, "<Destroy>", c5)
cb.push(c5)
- #### tcl/tk のイメージに対応するオブジェクト(TclTkImage)の操作
+ #### tcl/tk Υ᡼б륪֥(TclTkImage)
- # データを指定して生成する.
+ # ǡꤷ.
i1 = TclTkImage.new(ip, "photo", "-file maru.gif")
- # ラベルに張り付けてみる.
+ # ٥ĥդƤߤ.
l3 = TclTkWidget.new(ip, root, label, "-relief raised -image", i1)
place.e(l3, "-x 0 -rely 0.4 -relwidth 0.2 -relheight 0.2")
- # 空のイメージを生成して後で操作する.
+ # Υ᡼Ƹ.
i2 = TclTkImage.new(ip, "photo")
- # イメージを操作する.
+ # ᡼.
i2.e("copy", i1)
i2.e("configure -gamma 0.5")
l4 = TclTkWidget.new(ip, root, label, "-relief raised -image", i2)
@@ -134,26 +134,26 @@ class Test1
####
end
- # サンプルのためのウィジェットを生成する.
+ # ץΤΥåȤ.
def sample(ip, parent)
bind, button, destroy, grid, toplevel, wm = ip.commands().values_at(
"bind", "button", "destroy", "grid", "toplevel", "wm")
## toplevel
- # 新しいウインドウを開くには, toplevel を使う.
+ # ɥ򳫤ˤ, toplevel Ȥ.
t1 = TclTkWidget.new(ip, parent, toplevel)
- # タイトルを付けておく
+ # ȥդƤ
wm.e("title", t1, "sample")
- # ウィジェットが破壊されたとき, コールバックが GC の対象になるようにする.
+ # åȤ˲줿Ȥ, Хå GC оݤˤʤ褦ˤ.
cb = []
cb.push(c = TclTkCallback.new(ip, proc{|w| TclTk.dcb(cb, t1, w)}, "%W"))
bind.e(t1, "<Destroy>", c)
- # ボタンの生成.
+ # ܥ.
wid = []
- # toplevel ウィジェットを破壊するには destroy する.
+ # toplevel åȤ˲ˤ destroy .
cb.push(c = TclTkCallback.new(ip, proc{destroy.e(t1)}))
wid.push(TclTkWidget.new(ip, t1, button, "-text close -command", c))
cb.push(c = TclTkCallback.new(ip, proc{test_label(ip, t1)}))
@@ -183,7 +183,7 @@ class Test1
cb.push(c = TclTkCallback.new(ip, proc{test_canvas(ip, t1)}))
wid.push(TclTkWidget.new(ip, t1, button, "-text canvas -command", c))
- # grid で表示する.
+ # grid ɽ.
ro = co = 0
wid.each{|w|
grid.e(w, "-row", ro, "-column", co, "-sticky news")
@@ -196,38 +196,38 @@ class Test1
end
# inittoplevel(ip, parent, title)
- # 以下の処理をまとめて行う.
- # 1. toplevel ウィジェットを作成する.
- # 2. コールバックを登録する配列を用意し, toplevel ウィジェットの
- # <Destroy> イベントにコールバックを削除する手続きを登録する.
- # 3. クローズボタンを作る.
- # 作成した toplevel ウィジェット, クローズボタン, コールバック登録用変数
- # を返す.
- # ip: インタプリタ
- # parent: 親ウィジェット
- # title: toplevel ウィジェットのウインドウのタイトル
+ # ʲνޤȤƹԤ.
+ # 1. toplevel åȤ.
+ # 2. ХåϿѰդ, toplevel åȤ
+ # <Destroy> ٥Ȥ˥Хå³Ͽ.
+ # 3. ܥ.
+ # toplevel å, ܥ, ХåϿѿ
+ # ֤.
+ # ip: 󥿥ץ꥿
+ # parent: ƥå
+ # title: toplevel åȤΥɥΥȥ
def inittoplevel(ip, parent, title)
bind, button, destroy, toplevel, wm = ip.commands().values_at(
"bind", "button", "destroy", "toplevel", "wm")
- # 新しいウインドウを開くには, toplevel を使う.
+ # ɥ򳫤ˤ, toplevel Ȥ.
t1 = TclTkWidget.new(ip, parent, toplevel)
- # タイトルを付けておく
+ # ȥդƤ
wm.e("title", t1, title)
- # ウィジェットが破壊されたとき, コールバックが GC の対象になるようにする.
+ # åȤ˲줿Ȥ, Хå GC оݤˤʤ褦ˤ.
cb = []
cb.push(c = TclTkCallback.new(ip, proc{|w| TclTk.dcb(cb, t1, w)}, "%W"))
bind.e(t1, "<Destroy>", c)
- # close ボタンを作っておく.
- # toplevel ウィジェットを破壊するには destroy する.
+ # close ܥäƤ.
+ # toplevel åȤ˲ˤ destroy .
cb.push(c = TclTkCallback.new(ip, proc{destroy.e(t1)}))
b1 = TclTkWidget.new(ip, t1, button, "-text close -command", c)
return t1, b1, cb
end
- # label のサンプル.
+ # label Υץ.
def test_label(ip, parent)
button, global, label, pack = ip.commands().values_at(
"button", "global", "label", "pack")
@@ -235,7 +235,7 @@ class Test1
## label
- # いろいろな形のラベル.
+ # ʷΥ٥.
l1 = TclTkWidget.new(ip, t1, label, "-text {default(flat)}")
l2 = TclTkWidget.new(ip, t1, label, "-text raised -relief raised")
l3 = TclTkWidget.new(ip, t1, label, "-text sunken -relief sunken")
@@ -244,23 +244,23 @@ class Test1
l6 = TclTkWidget.new(ip, t1, label, "-bitmap error")
l7 = TclTkWidget.new(ip, t1, label, "-bitmap questhead")
- # pack しても表示される.
+ # pack Ƥɽ.
pack.e(b1, l1, l2, l3, l4, l5, l6, l7, "-pady 3")
## -textvariable
- # tcltk ライブラリの実装では, コールバックは tcl/tk の``手続き''を通して
- # 呼ばれる. したがって, コールバックの中で(大域)変数にアクセスするときは,
- # global する必要がある.
- # global する前に変数に値を設定してしまうとエラーになるので,
- # tcl/tk における表現形だけ生成して, 実際に値を設定しないように,
- # 2 番目の引数には nil を与える.
+ # tcltk 饤֥μǤ, Хå tcl/tk ``³''̤
+ # ƤФ. ä, Хå()ѿ˥Ȥ,
+ # global ɬפ.
+ # global ѿͤꤷƤޤȥ顼ˤʤΤ,
+ # tcl/tk ˤɽ, ºݤͤꤷʤ褦,
+ # 2 ܤΰˤ nil Ϳ.
v1 = TclTkVariable.new(ip, nil)
global.e(v1)
v1.set(100)
- # -textvariable で変数を設定する.
+ # -textvariable ѿꤹ.
l6 = TclTkWidget.new(ip, t1, label, "-textvariable", v1)
- # コールバックの中から変数を操作する.
+ # Хå椫ѿ.
cb.push(c = TclTkCallback.new(ip, proc{
global.e(v1); v1.set(v1.get().to_i + 10)}))
b2 = TclTkWidget.new(ip, t1, button, "-text +10 -command", c)
@@ -270,14 +270,14 @@ class Test1
pack.e(l6, b2, b3)
end
- # button のサンプル.
+ # button Υץ.
def test_button(ip, parent)
button, pack = ip.commands().values_at("button", "pack")
t1, b1, cb = inittoplevel(ip, parent, "button")
## button
- # コールバック内で参照する変数は先に宣言しておかなければならない.
+ # ХåǻȤѿƤʤФʤʤ.
b3 = b4 = nil
cb.push(c = TclTkCallback.new(ip, proc{b3.e("flash"); b4.e("flash")}))
b2 = TclTkWidget.new(ip, t1, button, "-text flash -command", c)
@@ -288,7 +288,7 @@ class Test1
pack.e(b1, b2, b3, b4)
end
- # checkbutton のサンプル.
+ # checkbutton Υץ.
def test_checkbutton(ip, parent)
checkbutton, global, pack = ip.commands().values_at(
"checkbutton", "global", "pack")
@@ -298,13 +298,13 @@ class Test1
v1 = TclTkVariable.new(ip, nil)
global.e(v1)
- # -variable で変数を設定する.
+ # -variable ѿꤹ.
ch1 = TclTkWidget.new(ip, t1, checkbutton, "-onvalue on -offvalue off",
"-textvariable", v1, "-variable", v1)
pack.e(b1, ch1)
end
- # radiobutton のサンプル.
+ # radiobutton Υץ.
def test_radiobutton(ip, parent)
global, label, pack, radiobutton = ip.commands().values_at(
"global", "label", "pack", "radiobutton")
@@ -314,10 +314,10 @@ class Test1
v1 = TclTkVariable.new(ip, nil)
global.e(v1)
- # ヌルストリングは "{}" で指定する.
+ # ̥륹ȥ󥰤 "{}" ǻꤹ.
v1.set("{}")
l1 = TclTkWidget.new(ip, t1, label, "-textvariable", v1)
- # -variable で同じ変数を指定すると同じグループになる.
+ # -variable ƱѿꤹƱ롼פˤʤ.
ra1 = TclTkWidget.new(ip, t1, radiobutton,
"-text radio1 -value r1 -variable", v1)
ra2 = TclTkWidget.new(ip, t1, radiobutton,
@@ -328,7 +328,7 @@ class Test1
pack.e(b1, l1, ra1, ra2, ra3)
end
- # scale のサンプル.
+ # scale Υץ.
def test_scale(ip, parent)
global, pack, scale = ip.commands().values_at(
"global", "pack", "scale")
@@ -339,7 +339,7 @@ class Test1
v1 = TclTkVariable.new(ip, nil)
global.e(v1)
v1.set(219)
- # コールバック内で参照する変数は先に宣言しておかなければならない.
+ # ХåǻȤѿƤʤФʤʤ.
sca1 = nil
cb.push(c = TclTkCallback.new(ip, proc{global.e(v1); v = v1.get();
sca1.e("configure -background", format("#%02x%02x%02x", v, v, v))}))
@@ -348,7 +348,7 @@ class Test1
pack.e(b1, sca1)
end
- # entry のサンプル.
+ # entry Υץ.
def test_entry(ip, parent)
button, entry, global, pack = ip.commands().values_at(
"button", "entry", "global", "pack")
@@ -358,7 +358,7 @@ class Test1
v1 = TclTkVariable.new(ip, nil)
global.e(v1)
- # ヌルストリングは "{}" で指定する.
+ # ̥륹ȥ󥰤 "{}" ǻꤹ.
v1.set("{}")
en1 = TclTkWidget.new(ip, t1, entry, "-textvariable", v1)
cb.push(c = TclTkCallback.new(ip, proc{
@@ -367,7 +367,7 @@ class Test1
pack.e(b1, en1, b2)
end
- # text のサンプル.
+ # text Υץ.
def test_text(ip, parent)
button, pack, text = ip.commands().values_at(
"button", "pack", "text")
@@ -377,13 +377,13 @@ class Test1
te1 = TclTkWidget.new(ip, t1, text)
cb.push(c = TclTkCallback.new(ip, proc{
- # 1 行目の 0 文字目から最後までを表示し, 削除する.
+ # 1 ܤ 0 ʸܤǸޤǤɽ, .
print(te1.e("get 1.0 end")); te1.e("delete 1.0 end")}))
b2 = TclTkWidget.new(ip, t1, button, "-text print -command", c)
pack.e(b1, te1, b2)
end
- # raise/lower のサンプル.
+ # raise/lower Υץ.
def test_raise(ip, parent)
button, frame, lower, pack, raise = ip.commands().values_at(
"button", "frame", "lower", "pack", "raise")
@@ -391,9 +391,9 @@ class Test1
## raise/lower
- # button を隠すテストのために, frame を使う.
+ # button 򱣤ƥȤΤ, frame Ȥ.
f1 = TclTkWidget.new(ip, t1, frame)
- # コールバック内で参照する変数は先に宣言しておかなければならない.
+ # ХåǻȤѿƤʤФʤʤ.
b2 = nil
cb.push(c = TclTkCallback.new(ip, proc{raise.e(f1, b2)}))
b2 = TclTkWidget.new(ip, t1, button, "-text raise -command", c)
@@ -405,21 +405,21 @@ class Test1
pack.e(b1, f1)
end
- # modal なウィジェットのサンプル.
+ # modal ʥåȤΥץ.
def test_modal(ip, parent)
button, frame, message, pack, tk_chooseColor, tk_getOpenFile,
tk_messageBox = ip.commands().values_at(
"button", "frame", "message", "pack", "tk_chooseColor",
"tk_getOpenFile", "tk_messageBox")
- # 最初に load されていないライブラリは ip.commands() に存在しないので,
- # TclTkLibCommand を生成する必要がある.
+ # ǽ load Ƥʤ饤֥ ip.commands() ¸ߤʤΤ,
+ # TclTkLibCommand ɬפ.
tk_dialog = TclTkLibCommand.new(ip, "tk_dialog")
t1, b1, cb = inittoplevel(ip, parent, "message/modal")
## message
- mes = "これは message ウィジェットのテストです."
- mes += "以下は modal なウィジェットのテストです."
+ mes = " message åȤΥƥȤǤ."
+ mes += "ʲ modal ʥåȤΥƥȤǤ."
me1 = TclTkWidget.new(ip, t1, message, "-text {#{mes}}")
## modal
@@ -431,7 +431,7 @@ class Test1
b2 = TclTkWidget.new(ip, t1, button, "-text messageBox -command", c)
# tk_dialog
cb.push(c = TclTkCallback.new(ip, proc{
- # ウィジェット名を生成するためにダミーの frame を生成.
+ # å̾뤿˥ߡ frame .
print tk_dialog.e(TclTkWidget.new(ip, t1, frame),
"dialog dialog error 2 yes no cancel"), "\n"}))
b3 = TclTkWidget.new(ip, t1, button, "-text dialog -command", c)
@@ -449,7 +449,7 @@ class Test1
pack.e(b1, me1, b2, b3, b4, b5)
end
- # menu のサンプル.
+ # menu Υץ.
def test_menu(ip, parent)
global, menu, menubutton, pack = ip.commands().values_at(
"global", "menu", "menubutton", "pack")
@@ -458,29 +458,29 @@ class Test1
## menu
- # menubutton を生成する.
+ # menubutton .
mb1 = TclTkWidget.new(ip, t1, menubutton, "-text menu")
- # menu を生成する.
+ # menu .
me1 = TclTkWidget.new(ip, mb1, menu)
- # mb1 から me1 が起動されるようにする.
+ # mb1 me1 ư褦ˤ.
mb1.e("configure -menu", me1)
- # cascade で起動される menu を生成する.
+ # cascade ǵư menu .
me11 = TclTkWidget.new(ip, me1, menu)
- # radiobutton のサンプル.
+ # radiobutton Υץ.
v1 = TclTkVariable.new(ip, nil); global.e(v1); v1.set("r1")
me11.e("add radiobutton -label radio1 -value r1 -variable", v1)
me11.e("add radiobutton -label radio2 -value r2 -variable", v1)
me11.e("add radiobutton -label radio3 -value r3 -variable", v1)
- # cascade により mb11 が起動されるようにする.
+ # cascade ˤ mb11 ư褦ˤ.
me1.e("add cascade -label cascade -menu", me11)
- # checkbutton のサンプル.
+ # checkbutton Υץ.
v2 = TclTkVariable.new(ip, nil); global.e(v2); v2.set("none")
me1.e("add checkbutton -label check -variable", v2)
- # separator のサンプル.
+ # separator Υץ.
me1.e("add separator")
- # command のサンプル.
+ # command Υץ.
v3 = nil
cb.push(c = TclTkCallback.new(ip, proc{
global.e(v1, v2, v3); print "v1: ", v1.get(), ", v2: ", v2.get(),
@@ -495,7 +495,7 @@ class Test1
pack.e(b1, mb1, om1, "-side left")
end
- # listbox のサンプル.
+ # listbox Υץ.
def test_listbox(ip, parent)
clipboard, frame, grid, listbox, lower, menu, menubutton, pack, scrollbar,
selection = ip.commands().values_at(
@@ -506,11 +506,11 @@ class Test1
## listbox/scrollbar
f1 = TclTkWidget.new(ip, t1, frame)
- # コールバック内で参照する変数は先に宣言しておかなければならない.
+ # ХåǻȤѿƤʤФʤʤ.
li1 = sc1 = sc2 = nil
- # 実行時に, 後ろにパラメータがつくコールバックは,
- # イテレータ変数でそのパラメータを受け取ることができる.
- # (複数のパラメータはひとつの文字列にまとめられる.)
+ # ¹Ի, ˥ѥ᡼ĤХå,
+ # ƥ졼ѿǤΥѥ᡼뤳ȤǤ.
+ # (ʣΥѥ᡼ϤҤȤĤʸˤޤȤ.)
cb.push(c1 = TclTkCallback.new(ip, proc{|i| li1.e("xview", i)}))
cb.push(c2 = TclTkCallback.new(ip, proc{|i| li1.e("yview", i)}))
cb.push(c3 = TclTkCallback.new(ip, proc{|i| sc1.e("set", i)}))
@@ -532,17 +532,17 @@ class Test1
me1 = TclTkWidget.new(ip, mb1, menu)
mb1.e("configure -menu", me1)
cb.push(c = TclTkCallback.new(ip, proc{
- # clipboard をクリア.
+ # clipboard 򥯥ꥢ.
clipboard.e("clear")
- # selection から文字列を読み込み clipboard に追加する.
+ # selection ʸɤ߹ clipboard ɲä.
clipboard.e("append {#{selection.e('get')}}")}))
me1.e("add command -label {selection -> clipboard} -command",c)
cb.push(c = TclTkCallback.new(ip, proc{
- # li1 をクリア.
+ # li1 򥯥ꥢ.
li1.e("delete 0 end")
- # clipboard から文字列を取り出し, 1 行ずつ
+ # clipboard ʸФ, 1 Ԥ
selection.e("get -selection CLIPBOARD").split(/\n/).each{|line|
- # li1 に挿入する.
+ # li1 .
li1.e("insert end {#{line}}")}}))
me1.e("add command -label {clipboard -> listbox} -command",c)
@@ -557,7 +557,7 @@ class Test1
pack.e(f2, f1)
end
- # canvas のサンプル.
+ # canvas Υץ.
def test_canvas(ip, parent)
canvas, lower, pack = ip.commands().values_at("canvas", "lower", "pack")
t1, b1, cb = inittoplevel(ip, parent, "canvas")
@@ -566,36 +566,36 @@ class Test1
ca1 = TclTkWidget.new(ip, t1, canvas, "-width 400 -height 300")
lower.e(ca1, b1)
- # rectangle を作る.
+ # rectangle .
idr = ca1.e("create rectangle 10 10 20 20")
- # oval を作る.
+ # oval .
ca1.e("create oval 60 10 100 50")
- # polygon を作る.
+ # polygon .
ca1.e("create polygon 110 10 110 30 140 10")
- # line を作る.
+ # line .
ca1.e("create line 150 10 150 30 190 10")
- # arc を作る.
+ # arc .
ca1.e("create arc 200 10 250 50 -start 0 -extent 90 -style pieslice")
- # i1 は本当は, どこかで破壊しなければならないが, 面倒なので放ってある.
+ # i1 , ɤ˲ʤФʤʤ, ݤʤΤäƤ.
i1 = TclTkImage.new(ip, "photo", "-file maru.gif")
- # image を作る.
+ # image .
ca1.e("create image 100 100 -image", i1)
- # bitmap を作る.
+ # bitmap .
ca1.e("create bitmap 260 50 -bitmap questhead")
- # text を作る.
+ # text .
ca1.e("create text 320 50 -text {drag rectangle}")
- # window を作る(クローズボタン).
+ # window (ܥ).
ca1.e("create window 200 200 -window", b1)
- # bind により rectangle を drag できるようにする.
+ # bind ˤ rectangle drag Ǥ褦ˤ.
cb.push(c = TclTkCallback.new(ip, proc{|i|
- # i に x と y を受け取るので, 取り出す.
+ # i x y Τ, Ф.
x, y = i.split(/ /); x = x.to_f; y = y.to_f
- # 座標を変更する.
+ # ɸѹ.
ca1.e("coords current #{x - 5} #{y - 5} #{x + 5} #{y + 5}")},
- # x, y 座標を空白で区切ったものをイテレータ変数へ渡すように指定.
+ # x, y ɸǶڤäΤ򥤥ƥ졼ѿϤ褦˻.
"%x %y"))
- # rectangle に bind する.
+ # rectangle bind .
ca1.e("bind", idr, "<B1-Motion>", c)
pack.e(ca1)
@@ -605,7 +605,7 @@ end
# test driver
if ARGV.size == 0
- print "#{$0} n で, n 個のインタプリタを起動します.\n"
+ print "#{$0} n , n ĤΥ󥿥ץ꥿ưޤ.\n"
n = 1
else
n = ARGV[0].to_i
@@ -614,16 +614,16 @@ end
print "start\n"
ip = []
-# インタプリタ, ウィジェット等の生成.
+# 󥿥ץ꥿, å.
for i in 1 .. n
ip.push(Test1.new())
end
-# 用意ができたらイベントループに入る.
+# ѰդǤ饤٥ȥ롼פ.
TclTk.mainloop()
print "exit from mainloop\n"
-# インタプリタが GC されるかのテスト.
+# 󥿥ץ꥿ GC 뤫Υƥ.
ip = []
print "GC.start\n" if $DEBUG
GC.start() if $DEBUG
diff --git a/ext/tk/sample/tcltklib/sample2.rb b/ext/tk/sample/tcltklib/sample2.rb
index 1acc180680..f187d6ce1d 100644
--- a/ext/tk/sample/tcltklib/sample2.rb
+++ b/ext/tk/sample/tcltklib/sample2.rb
@@ -7,12 +7,12 @@
#---------------------------------------------------------------------------
# Sep. 17, 1997 modified by Y. Shigehiro for tcltk library
-# maeda shugo (shugo@po.aianet.ne.jp) 氏による
-# (ruby/tk で書かれていた) ruby のサンプルプログラム
+# maeda shugo (shugo@po.aianet.ne.jp) ˤ
+# (ruby/tk ǽ񤫤Ƥ) ruby Υץץ
# http://www.aianet.or.jp/~shugo/ruby/othello.rb.gz
-# を tcltk ライブラリを使うように, 機械的に変更してみました.
+# tcltk 饤֥Ȥ褦, ŪѹƤߤޤ.
#
-# なるべくオリジナルと同じになるようにしてあります.
+# ʤ٤ꥸʥƱˤʤ褦ˤƤޤ.
require "observer"
require "tcltk"
@@ -343,14 +343,14 @@ class Othello
@board = Board.new(self)
@board_view = BoardView.new(self, @board)
#### added by Y. Shigehiro
- ## board_view の大きさを設定する.
+ ## board_view 礭ꤹ.
x1, y1, x2, y2 = @board_view.e("bbox all").split(/ /).collect{|i| i.to_f}
@board_view.e("configure -width", x2 - x1)
@board_view.e("configure -height", y2 - y1)
- ## scrollregion を設定する.
+ ## scrollregion ꤹ.
@board_view.e("configure -scrollregion {", @board_view.e("bbox all"),
"}")
- #### ここまで
+ #### ޤ
$pack.e(@board_view, "-fill both -expand true")
panel = TclTkWidget.new($ip, $root, $frame)
diff --git a/ext/tk/sample/tkextlib/iwidgets/sample/notebook.rb b/ext/tk/sample/tkextlib/iwidgets/sample/notebook.rb
index 4d460e8802..055312ec96 100644
--- a/ext/tk/sample/tkextlib/iwidgets/sample/notebook.rb
+++ b/ext/tk/sample/tkextlib/iwidgets/sample/notebook.rb
@@ -23,7 +23,7 @@ TkButton.new(page2CS, :text=>'Button Two').pack
# Select the first page of the tabnotebook.
nb.select(0)
-# Create the scrollbar and associate the scrollbar
+# Create the scrollbar and associate teh scrollbar
# and the notebook together, then pack the scrollbar
nb.scrollbar(TkScrollbar.new).pack(:fill=>:y, :expand=>true, :pady=>10)
diff --git a/ext/tk/sample/tkextlib/iwidgets/sample/notebook2.rb b/ext/tk/sample/tkextlib/iwidgets/sample/notebook2.rb
index 576a9c18d0..41e9ce1bfc 100644
--- a/ext/tk/sample/tkextlib/iwidgets/sample/notebook2.rb
+++ b/ext/tk/sample/tkextlib/iwidgets/sample/notebook2.rb
@@ -23,7 +23,7 @@ TkButton.new(page2CS, :text=>'Button Two').pack
# Select the first page of the tabnotebook.
nb.select(0)
-# Create the scrollbar and associate the scrollbar
+# Create the scrollbar and associate teh scrollbar
# and the notebook together, then pack the scrollbar
nb.xscrollbar(TkScrollbar.new).pack(:fill=>:x, :expand=>true, :padx=>10)
diff --git a/ext/tk/sample/tkextlib/tkHTML/page1/index.html b/ext/tk/sample/tkextlib/tkHTML/page1/index.html
index af87289c28..9efac7f7af 100644
--- a/ext/tk/sample/tkextlib/tkHTML/page1/index.html
+++ b/ext/tk/sample/tkextlib/tkHTML/page1/index.html
@@ -90,7 +90,7 @@ everything and the Wirth of nothing?
All trademarks and copyrights on this
page are owned by their respective owners. Comments
are owned by the Poster.
- The Rest 1997-2000 <A href="http://Andover.Net">Andover.Net</A>.
+ The Rest 1997-2000 <A href="http://Andover.Net">Andover.Net</A>.
</FONT></CENTER>
</TD>
</TR>
diff --git a/ext/tk/sample/tkoptdb-safeTk.rb b/ext/tk/sample/tkoptdb-safeTk.rb
index 7502e30667..3972577b0f 100644
--- a/ext/tk/sample/tkoptdb-safeTk.rb
+++ b/ext/tk/sample/tkoptdb-safeTk.rb
@@ -20,7 +20,7 @@ if ENV['LANG'] =~ /^ja/
# read Japanese resource
ent = TkOptionDB.read_entries(File.expand_path('resource.ja',
File.dirname(__FILE__)),
- 'utf-8')
+ 'euc-jp')
else
# read English resource
ent = TkOptionDB.read_entries(File.expand_path('resource.en',
diff --git a/ext/tk/sample/tkoptdb.rb b/ext/tk/sample/tkoptdb.rb
index 0171e465b3..75c21e7e47 100644
--- a/ext/tk/sample/tkoptdb.rb
+++ b/ext/tk/sample/tkoptdb.rb
@@ -13,7 +13,7 @@ if __FILE__ == $0 || !TkCore::INTERP.safe?
# read Japanese resource
TkOptionDB.read_with_encoding(File.expand_path('resource.ja',
File.dirname(__FILE__)),
- 'utf-8')
+ 'euc-jp')
else
# read English resource
TkOptionDB.readfile(File.expand_path('resource.en',
diff --git a/ext/tk/stubs.c b/ext/tk/stubs.c
index 6c82c7a7bb..dd475c3455 100644
--- a/ext/tk/stubs.c
+++ b/ext/tk/stubs.c
@@ -83,8 +83,8 @@ _nativethread_consistency_check(ip)
# define DL_SYM GetProcAddress
# define TCL_INDEX 4
# define TK_INDEX 3
-# define TCL_NAME "tcl89"
-# define TK_NAME "tk89"
+# define TCL_NAME "tcl89%s"
+# define TK_NAME "tk89%s"
# undef DLEXT
# define DLEXT ".dll"
#elif defined HAVE_DLOPEN
@@ -94,9 +94,9 @@ _nativethread_consistency_check(ip)
# define DL_SYM dlsym
# define TCL_INDEX 8
# define TK_INDEX 7
-# define TCL_NAME "libtcl8.9"
-# define TK_NAME "libtk8.9"
-# ifdef __APPLE__
+# define TCL_NAME "libtcl8.9%s"
+# define TK_NAME "libtk8.9%s"
+# if defined(__APPLE__) && defined(__MACH__) /* Mac OS X */
# undef DLEXT
# define DLEXT ".dylib"
# endif
@@ -116,6 +116,7 @@ ruby_open_tcl_dll(appname)
void (*p_Tcl_FindExecutable)(const char *);
int n;
char *ruby_tcl_dll = 0;
+ char tcl_name[20];
if (tcl_dll) return TCLTK_STUBS_OK;
@@ -126,7 +127,7 @@ ruby_open_tcl_dll(appname)
if (ruby_tcl_dll) {
tcl_dll = (DL_HANDLE)DL_OPEN(ruby_tcl_dll);
} else {
- char tcl_name[] = TCL_NAME DLEXT;
+ snprintf(tcl_name, sizeof tcl_name, TCL_NAME, DLEXT);
/* examine from 8.9 to 8.1 */
for (n = '9'; n > '0'; n--) {
tcl_name[TCL_INDEX] = n;
@@ -161,6 +162,7 @@ ruby_open_tk_dll()
{
int n;
char *ruby_tk_dll = 0;
+ char tk_name[20];
if (!tcl_dll) {
/* int ret = ruby_open_tcl_dll(RSTRING_PTR(rb_argv0)); */
@@ -174,7 +176,7 @@ ruby_open_tk_dll()
if (ruby_tk_dll) {
tk_dll = (DL_HANDLE)DL_OPEN(ruby_tk_dll);
} else {
- char tk_name[] = TK_NAME DLEXT;
+ snprintf(tk_name, sizeof tk_name, TK_NAME, DLEXT);
/* examine from 8.9 to 8.1 */
for (n = '9'; n > '0'; n--) {
tk_name[TK_INDEX] = n;
@@ -327,7 +329,7 @@ ruby_tk_stubs_init(tcl_ip)
if (!p_Tk_Init)
return NO_Tk_Init;
-#if defined USE_TK_STUBS && defined TK_FRAMEWORK && defined(__APPLE__)
+#if defined USE_TK_STUBS && defined TK_FRAMEWORK && defined(__APPLE__) && defined(__MACH__)
/*
FIX ME : dirty hack for Mac OS X frameworks.
With stubs, fails to find Resource/Script directory of Tk.framework.
diff --git a/ext/tk/tcltklib.c b/ext/tk/tcltklib.c
index 6e9587e999..312b0c05eb 100644
--- a/ext/tk/tcltklib.c
+++ b/ext/tk/tcltklib.c
@@ -20,7 +20,7 @@
#endif
#ifdef RUBY_VM
-static int rb_thread_critical; /* dummy */
+static VALUE rb_thread_critical; /* dummy */
int rb_thread_check_trap_pending();
#else
/* use rb_thread_critical on Ruby 1.8.x */
@@ -31,9 +31,6 @@ int rb_thread_check_trap_pending();
#define RSTRING_PTR(s) (RSTRING(s)->ptr)
#define RSTRING_LEN(s) (RSTRING(s)->len)
#endif
-#if !defined(RSTRING_LENINT)
-#define RSTRING_LENINT(s) ((int)RSTRING_LEN(s))
-#endif
#if !defined(RARRAY_PTR)
#define RARRAY_PTR(s) (RARRAY(s)->ptr)
#define RARRAY_LEN(s) (RARRAY(s)->len)
@@ -44,7 +41,6 @@ int rb_thread_check_trap_pending();
#else
#define RbTk_OBJ_UNTRUST(x) OBJ_TAINT(x)
#endif
-#define RbTk_ALLOC_N(type, n) (type *)ckalloc((int)(sizeof(type) * (n)))
#if defined(HAVE_RB_PROC_NEW) && !defined(RUBY_VM)
/* Ruby 1.8 :: rb_proc_new() was hidden from intern.h at 2008/04/22 */
@@ -843,14 +839,15 @@ create_ip_exc(interp, exc, fmt, va_alist)
#endif
{
va_list args;
- VALUE msg;
+ char buf[BUFSIZ];
VALUE einfo;
struct tcltkip *ptr = get_ip(interp);
va_init_list(args,fmt);
- msg = rb_vsprintf(fmt, args);
+ vsnprintf(buf, BUFSIZ, fmt, args);
+ buf[BUFSIZ - 1] = '\0';
va_end(args);
- einfo = rb_exc_new3(exc, msg);
+ einfo = rb_exc_new2(exc, buf);
rb_ivar_set(einfo, ID_at_interp, interp);
if (ptr) {
Tcl_ResetResult(ptr->ip);
@@ -1406,8 +1403,6 @@ pending_exception_check0()
} else {
return 0;
}
-
- UNREACHABLE;
}
static int
@@ -1449,8 +1444,6 @@ pending_exception_check1(thr_crit_bup, ptr)
} else {
return 0;
}
-
- UNREACHABLE;
}
@@ -1488,7 +1481,7 @@ call_original_exit(ptr, state)
#if USE_RUBY_ALLOC
argv = (Tcl_Obj **)ALLOC_N(Tcl_Obj *, 3);
#else /* not USE_RUBY_ALLOC */
- argv = RbTk_ALLOC_N(Tcl_Obj *, 3);
+ argv = (Tcl_Obj **)ckalloc(sizeof(Tcl_Obj *) * 3);
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)argv); /* XXXXXXXX */
#endif
@@ -1528,7 +1521,7 @@ call_original_exit(ptr, state)
#if USE_RUBY_ALLOC
argv = ALLOC_N(char *, 3); /* XXXXXXXXXX */
#else /* not USE_RUBY_ALLOC */
- argv = RbTk_ALLOC_N(CONST84 char *, 3);
+ argv = (CONST84 char **)ckalloc(sizeof(char *) * 3);
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)argv); /* XXXXXXXX */
#endif
@@ -1567,7 +1560,7 @@ call_original_exit(ptr, state)
#if USE_RUBY_ALLOC
argv = (char **)ALLOC_N(char *, 3);
#else /* not USE_RUBY_ALLOC */
- argv = RbTk_ALLOC_N(char *, 3);
+ argv = (char **)ckalloc(sizeof(char *) * 3);
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)argv); /* XXXXXXXX */
#endif
@@ -2054,7 +2047,6 @@ call_DoOneEvent(flag_val)
#endif
-#if 0
static VALUE
#ifdef HAVE_PROTOTYPES
eventloop_sleep(VALUE dummy)
@@ -2070,7 +2062,7 @@ eventloop_sleep(dummy)
}
t.tv_sec = 0;
- t.tv_usec = (int)(no_event_wait*1000.0);
+ t.tv_usec = (long)(no_event_wait*1000.0);
#ifdef HAVE_NATIVETHREAD
#ifndef RUBY_USE_NATIVE_THREAD
@@ -2094,7 +2086,6 @@ eventloop_sleep(dummy)
return Qnil;
}
-#endif
#define USE_EVLOOP_THREAD_ALONE_CHECK_FLAG 0
@@ -2202,7 +2193,7 @@ lib_eventloop_core(check_root, update_flag, check_var, interp)
if (update_flag) DUMP1("update loop start!!");
t.tv_sec = 0;
- t.tv_usec = 1000 * no_event_wait;
+ t.tv_usec = 1000 * (long)no_event_wait;
Tcl_DeleteTimerHandler(timer_token);
run_timer_flag = 0;
@@ -2685,7 +2676,7 @@ lib_eventloop_launcher(check_root, update_flag, check_var, interp)
{
volatile VALUE parent_evloop = eventloop_thread;
struct evloop_params *args = ALLOC(struct evloop_params);
- /* struct evloop_params *args = RbTk_ALLOC_N(struct evloop_params, 1); */
+ /* struct evloop_params *args = (struct evloop_params *)ckalloc(sizeof(struct evloop_params)); */
tcl_stubs_check();
@@ -2965,10 +2956,10 @@ lib_thread_callback(argc, argv, self)
}
q = (struct thread_call_proc_arg *)ALLOC(struct thread_call_proc_arg);
- /* q = RbTk_ALLOC_N(struct thread_call_proc_arg, 1); */
+ /* q = (struct thread_call_proc_arg *)ckalloc(sizeof(struct thread_call_proc_arg)); */
q->proc = proc;
q->done = (int*)ALLOC(int);
- /* q->done = RbTk_ALLOC_N(int, 1); */
+ /* q->done = (int*)ckalloc(sizeof(int)); */
*(q->done) = 0;
/* create call-proc thread */
@@ -3130,14 +3121,14 @@ ip_set_exc_message(interp, exc)
/* buf = ALLOC_N(char, (RSTRING(msg)->len)+1);*/
/* memcpy(buf, RSTRING(msg)->ptr, RSTRING(msg)->len);*/
/* buf[RSTRING(msg)->len] = 0; */
- buf = ALLOC_N(char, RSTRING_LENINT(msg)+1);
- /* buf = ckalloc(RSTRING_LENINT(msg)+1); */
+ buf = ALLOC_N(char, RSTRING_LEN(msg)+1);
+ /* buf = ckalloc(sizeof(char)*((RSTRING_LEN(msg))+1)); */
memcpy(buf, RSTRING_PTR(msg), RSTRING_LEN(msg));
buf[RSTRING_LEN(msg)] = 0;
Tcl_DStringInit(&dstr);
Tcl_DStringFree(&dstr);
- Tcl_ExternalToUtfDString(encoding, buf, RSTRING_LENINT(msg), &dstr);
+ Tcl_ExternalToUtfDString(encoding, buf, RSTRING_LEN(msg), &dstr);
Tcl_AppendResult(interp, Tcl_DStringValue(&dstr), (char*)NULL);
DUMP2("error message:%s", Tcl_DStringValue(&dstr));
@@ -3564,7 +3555,7 @@ ip_ruby_cmd_receiver_get(str)
} else {
/* global variable omitted '$' */
char *buf;
- size_t len;
+ int len;
len = strlen(str);
buf = ALLOC_N(char, len + 2);
@@ -3686,7 +3677,7 @@ ip_ruby_cmd(clientData, interp, argc, argv)
/* allocate */
arg = ALLOC(struct cmd_body_arg);
- /* arg = RbTk_ALLOC_N(struct cmd_body_arg, 1); */
+ /* arg = (struct cmd_body_arg *)ckalloc(sizeof(struct cmd_body_arg)); */
arg->receiver = receiver;
arg->method = method;
@@ -4125,7 +4116,7 @@ ip_rb_threadUpdateCommand(clientData, interp, objc, objv)
DUMP1("pass argument check");
/* param = (struct th_update_param *)Tcl_Alloc(sizeof(struct th_update_param)); */
- param = RbTk_ALLOC_N(struct th_update_param, 1);
+ param = (struct th_update_param *)ckalloc(sizeof(struct th_update_param));
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)param);
#endif
@@ -4989,7 +4980,7 @@ ip_rb_threadVwaitCommand(clientData, interp, objc, objv)
rb_thread_critical = Qtrue;
/* param = (struct th_vwait_param *)Tcl_Alloc(sizeof(struct th_vwait_param)); */
- param = RbTk_ALLOC_N(struct th_vwait_param, 1);
+ param = (struct th_vwait_param *)ckalloc(sizeof(struct th_vwait_param));
#if 1 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)param);
#endif
@@ -5205,7 +5196,7 @@ ip_rb_threadTkWaitCommand(clientData, interp, objc, objv)
#endif
/* param = (struct th_vwait_param *)Tcl_Alloc(sizeof(struct th_vwait_param)); */
- param = RbTk_ALLOC_N(struct th_vwait_param, 1);
+ param = (struct th_vwait_param *)ckalloc(sizeof(struct th_vwait_param));
#if 1 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)param);
#endif
@@ -6051,7 +6042,7 @@ ip_rbNamespaceObjCmd(clientData, interp, objc, objv)
char **argv;
/* argv = (char **)Tcl_Alloc(sizeof(char *) * (objc + 1)); */
- argv = RbTk_ALLOC_N(char *, (objc + 1));
+ argv = (char **)ckalloc(sizeof(char *) * (objc + 1));
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)argv); /* XXXXXXXX */
#endif
@@ -6160,7 +6151,7 @@ ip_init(argc, argv, self)
/* create object */
Data_Get_Struct(self, struct tcltkip, ptr);
ptr = ALLOC(struct tcltkip);
- /* ptr = RbTk_ALLOC_N(struct tcltkip, 1); */
+ /* ptr = (struct tcltkip *)ckalloc(sizeof(struct tcltkip)); */
DATA_PTR(self) = ptr;
#ifdef RUBY_USE_NATIVE_THREAD
ptr->tk_thread_id = 0;
@@ -6397,7 +6388,7 @@ ip_create_slave_core(interp, argc, argv)
{
struct tcltkip *master = get_ip(interp);
struct tcltkip *slave = ALLOC(struct tcltkip);
- /* struct tcltkip *slave = RbTk_ALLOC_N(struct tcltkip, 1); */
+ /* struct tcltkip *slave = (struct tcltkip *)ckalloc(sizeof(struct tcltkip)); */
VALUE safemode;
VALUE name;
int safe;
@@ -6650,7 +6641,7 @@ ip_make_safe_core(interp, argc, argv)
if (Tcl_MakeSafe(ptr->ip) == TCL_ERROR) {
/* return rb_exc_new2(rb_eRuntimeError,
Tcl_GetStringResult(ptr->ip)); */
- return create_ip_exc(interp, rb_eRuntimeError, "%s",
+ return create_ip_exc(interp, rb_eRuntimeError,
Tcl_GetStringResult(ptr->ip));
}
@@ -6937,22 +6928,22 @@ get_obj_from_str(str)
StringValue(enc);
if (strcmp(RSTRING_PTR(enc), "binary") == 0) {
/* binary string */
- return Tcl_NewByteArrayObj((const unsigned char *)s, RSTRING_LENINT(str));
+ return Tcl_NewByteArrayObj((const unsigned char *)s, RSTRING_LEN(str));
} else {
/* text string */
- return Tcl_NewStringObj(s, RSTRING_LENINT(str));
+ return Tcl_NewStringObj(s, RSTRING_LEN(str));
}
#ifdef HAVE_RUBY_ENCODING_H
} else if (rb_enc_get_index(str) == ENCODING_INDEX_BINARY) {
/* binary string */
- return Tcl_NewByteArrayObj((const unsigned char *)s, RSTRING_LENINT(str));
+ return Tcl_NewByteArrayObj((const unsigned char *)s, RSTRING_LEN(str));
#endif
} else if (memchr(s, 0, RSTRING_LEN(str))) {
/* probably binary string */
- return Tcl_NewByteArrayObj((const unsigned char *)s, RSTRING_LENINT(str));
+ return Tcl_NewByteArrayObj((const unsigned char *)s, RSTRING_LEN(str));
} else {
/* probably text string */
- return Tcl_NewStringObj(s, RSTRING_LENINT(str));
+ return Tcl_NewStringObj(s, RSTRING_LEN(str));
}
#endif
}
@@ -7158,7 +7149,7 @@ tk_funcall(func, argc, argv, obj)
/* allocate memory (argv cross over thread : must be in heap) */
if (argv) {
/* VALUE *temp = ALLOC_N(VALUE, argc); */
- VALUE *temp = RbTk_ALLOC_N(VALUE, argc);
+ VALUE *temp = (VALUE*)ckalloc(sizeof(VALUE) * argc);
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)temp); /* XXXXXXXX */
#endif
@@ -7168,7 +7159,7 @@ tk_funcall(func, argc, argv, obj)
/* allocate memory (keep result) */
/* alloc_done = (int*)ALLOC(int); */
- alloc_done = RbTk_ALLOC_N(int, 1);
+ alloc_done = (int*)ckalloc(sizeof(int));
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)alloc_done); /* XXXXXXXX */
#endif
@@ -7176,7 +7167,7 @@ tk_funcall(func, argc, argv, obj)
/* allocate memory (freed by Tcl_ServiceEvent) */
/* callq = (struct call_queue *)Tcl_Alloc(sizeof(struct call_queue)); */
- callq = RbTk_ALLOC_N(struct call_queue, 1);
+ callq = (struct call_queue *)ckalloc(sizeof(struct call_queue));
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve(callq);
#endif
@@ -7641,7 +7632,7 @@ ip_eval(self, str)
} else {
DUMP2("eval from current eventloop %lx", current);
}
- result = ip_eval_real(self, RSTRING_PTR(str), RSTRING_LENINT(str));
+ result = ip_eval_real(self, RSTRING_PTR(str), RSTRING_LEN(str));
if (rb_obj_is_kind_of(result, rb_eException)) {
rb_exc_raise(result);
}
@@ -7655,14 +7646,14 @@ ip_eval(self, str)
/* allocate memory (keep result) */
/* alloc_done = (int*)ALLOC(int); */
- alloc_done = RbTk_ALLOC_N(int, 1);
+ alloc_done = (int*)ckalloc(sizeof(int));
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)alloc_done); /* XXXXXXXX */
#endif
*alloc_done = 0;
/* eval_str = ALLOC_N(char, RSTRING_LEN(str) + 1); */
- eval_str = ckalloc(RSTRING_LENINT(str) + 1);
+ eval_str = ckalloc(sizeof(char) * (RSTRING_LEN(str) + 1));
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)eval_str); /* XXXXXXXX */
#endif
@@ -7671,7 +7662,7 @@ ip_eval(self, str)
/* allocate memory (freed by Tcl_ServiceEvent) */
/* evq = (struct eval_queue *)Tcl_Alloc(sizeof(struct eval_queue)); */
- evq = RbTk_ALLOC_N(struct eval_queue, 1);
+ evq = (struct eval_queue *)ckalloc(sizeof(struct eval_queue));
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve(evq);
#endif
@@ -7682,7 +7673,7 @@ ip_eval(self, str)
/* construct event data */
evq->done = alloc_done;
evq->str = eval_str;
- evq->len = RSTRING_LENINT(str);
+ evq->len = RSTRING_LEN(str);
evq->interp = ip_obj;
evq->result = result;
evq->thread = current;
@@ -7784,8 +7775,6 @@ ip_cancel_eval_core(interp, msg, flag)
#if TCL_MAJOR_VERSION < 8 || (TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION < 6)
rb_raise(rb_eNotImpError,
"cancel_eval is supported Tcl/Tk8.6 or later.");
-
- UNREACHABLE;
#else
Tcl_Obj *msg_obj;
@@ -8066,14 +8055,14 @@ lib_toUTF8_core(ip_obj, src, encodename)
return str;
}
buf = ALLOC_N(char, RSTRING_LEN(str)+1);
- /* buf = ckalloc(sizeof(char) * (RSTRING_LENINT(str)+1)); */
+ /* buf = ckalloc(sizeof(char) * (RSTRING_LEN(str)+1)); */
memcpy(buf, RSTRING_PTR(str), RSTRING_LEN(str));
buf[RSTRING_LEN(str)] = 0;
Tcl_DStringInit(&dstr);
Tcl_DStringFree(&dstr);
/* Tcl_ExternalToUtfDString(encoding,buf,strlen(buf),&dstr); */
- Tcl_ExternalToUtfDString(encoding, buf, RSTRING_LENINT(str), &dstr);
+ Tcl_ExternalToUtfDString(encoding, buf, RSTRING_LEN(str), &dstr);
/* str = rb_tainted_str_new2(Tcl_DStringValue(&dstr)); */
/* str = rb_str_new2(Tcl_DStringValue(&dstr)); */
@@ -8221,7 +8210,7 @@ lib_fromUTF8_core(ip_obj, src, encodename)
int len;
StringValue(str);
- tclstr = Tcl_NewStringObj(RSTRING_PTR(str), RSTRING_LENINT(str));
+ tclstr = Tcl_NewStringObj(RSTRING_PTR(str), RSTRING_LEN(str));
Tcl_IncrRefCount(tclstr);
s = (char*)Tcl_GetByteArrayFromObj(tclstr, &len);
str = rb_tainted_str_new(s, len);
@@ -8257,14 +8246,14 @@ lib_fromUTF8_core(ip_obj, src, encodename)
}
buf = ALLOC_N(char, RSTRING_LEN(str)+1);
- /* buf = ckalloc(sizeof(char) * (RSTRING_LENINT(str)+1)); */
+ /* buf = ckalloc(sizeof(char) * (RSTRING_LEN(str)+1)); */
memcpy(buf, RSTRING_PTR(str), RSTRING_LEN(str));
buf[RSTRING_LEN(str)] = 0;
Tcl_DStringInit(&dstr);
Tcl_DStringFree(&dstr);
/* Tcl_UtfToExternalDString(encoding,buf,strlen(buf),&dstr); */
- Tcl_UtfToExternalDString(encoding,buf,RSTRING_LENINT(str),&dstr);
+ Tcl_UtfToExternalDString(encoding,buf,RSTRING_LEN(str),&dstr);
/* str = rb_tainted_str_new2(Tcl_DStringValue(&dstr)); */
/* str = rb_str_new2(Tcl_DStringValue(&dstr)); */
@@ -8353,7 +8342,7 @@ lib_UTF_backslash_core(self, str, all_bs)
rb_thread_critical = Qtrue;
/* src_buf = ALLOC_N(char, RSTRING_LEN(str)+1); */
- src_buf = ckalloc(RSTRING_LENINT(str)+1);
+ src_buf = ckalloc(sizeof(char) * (RSTRING_LEN(str)+1));
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)src_buf); /* XXXXXXXX */
#endif
@@ -8361,7 +8350,7 @@ lib_UTF_backslash_core(self, str, all_bs)
src_buf[RSTRING_LEN(str)] = 0;
/* dst_buf = ALLOC_N(char, RSTRING_LEN(str)+1); */
- dst_buf = ckalloc(RSTRING_LENINT(str)+1);
+ dst_buf = ckalloc(sizeof(char) * (RSTRING_LEN(str)+1));
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)dst_buf); /* XXXXXXXX */
#endif
@@ -8498,7 +8487,7 @@ invoke_tcl_proc(arg)
if (!inf->cmdinfo.isNativeObjectProc) {
/* string interface */
/* argv = (char **)ALLOC_N(char *, argc+1);*/ /* XXXXXXXXXX */
- argv = RbTk_ALLOC_N(char *, (argc+1));
+ argv = (char **)ckalloc(sizeof(char *)*(argc+1));
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)argv); /* XXXXXXXX */
#endif
@@ -8644,7 +8633,7 @@ ip_invoke_core(interp, argc, argv)
#if TCL_MAJOR_VERSION >= 8
/* unknown_objv = (Tcl_Obj **)ALLOC_N(Tcl_Obj *, objc+2); */
- unknown_objv = RbTk_ALLOC_N(Tcl_Obj *, (objc+2));
+ unknown_objv = (Tcl_Obj **)ckalloc(sizeof(Tcl_Obj *) * (objc+2));
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)unknown_objv); /* XXXXXXXX */
#endif
@@ -8655,7 +8644,7 @@ ip_invoke_core(interp, argc, argv)
objv = unknown_objv;
#else
/* unknown_argv = (char **)ALLOC_N(char *, argc+2); */
- unknown_argv = RbTk_ALLOC_N(char *, (argc+2));
+ unknown_argv = (char **)ckalloc(sizeof(char *) * (argc+2));
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)unknown_argv); /* XXXXXXXX */
#endif
@@ -8712,7 +8701,7 @@ ip_invoke_core(interp, argc, argv)
/* string interface */
/* argv = (char **)ALLOC_N(char *, argc+1); */
- argv = RbTk_ALLOC_N(char *, (argc+1));
+ argv = (char **)ckalloc(sizeof(char *) * (argc+1));
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)argv); /* XXXXXXXX */
#endif
@@ -8857,7 +8846,7 @@ alloc_invoke_arguments(argc, argv)
/* memory allocation */
#if TCL_MAJOR_VERSION >= 8
/* av = ALLOC_N(Tcl_Obj *, argc+1);*/ /* XXXXXXXXXX */
- av = RbTk_ALLOC_N(Tcl_Obj *, (argc+1));
+ av = (Tcl_Obj**)ckalloc(sizeof(Tcl_Obj *)*(argc+1));
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)av); /* XXXXXXXX */
#endif
@@ -8870,7 +8859,7 @@ alloc_invoke_arguments(argc, argv)
#else /* TCL_MAJOR_VERSION < 8 */
/* string interface */
/* av = ALLOC_N(char *, argc+1); */
- av = RbTk_ALLOC_N(char *, (argc+1));
+ av = (char**)ckalloc(sizeof(char *) * (argc+1));
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)av); /* XXXXXXXX */
#endif
@@ -9150,7 +9139,7 @@ ip_invoke_with_position(argc, argv, obj, position)
/* allocate memory (keep result) */
/* alloc_done = (int*)ALLOC(int); */
- alloc_done = RbTk_ALLOC_N(int, 1);
+ alloc_done = (int*)ckalloc(sizeof(int));
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)alloc_done); /* XXXXXXXX */
#endif
@@ -9158,7 +9147,7 @@ ip_invoke_with_position(argc, argv, obj, position)
/* allocate memory (freed by Tcl_ServiceEvent) */
/* ivq = (struct invoke_queue *)Tcl_Alloc(sizeof(struct invoke_queue)); */
- ivq = RbTk_ALLOC_N(struct invoke_queue, 1);
+ ivq = (struct invoke_queue *)ckalloc(sizeof(struct invoke_queue));
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)ivq); /* XXXXXXXX */
#endif
@@ -9342,7 +9331,7 @@ ip_get_variable2_core(interp, argc, argv)
volatile VALUE exc;
/* exc = rb_exc_new2(rb_eRuntimeError,
Tcl_GetStringResult(ptr->ip)); */
- exc = create_ip_exc(interp, rb_eRuntimeError, "%s",
+ exc = create_ip_exc(interp, rb_eRuntimeError,
Tcl_GetStringResult(ptr->ip));
/* Tcl_Release(ptr->ip); */
rbtk_release_ip(ptr);
@@ -9481,7 +9470,7 @@ ip_set_variable2_core(interp, argc, argv)
volatile VALUE exc;
/* exc = rb_exc_new2(rb_eRuntimeError,
Tcl_GetStringResult(ptr->ip)); */
- exc = create_ip_exc(interp, rb_eRuntimeError, "%s",
+ exc = create_ip_exc(interp, rb_eRuntimeError,
Tcl_GetStringResult(ptr->ip));
/* Tcl_Release(ptr->ip); */
rbtk_release_ip(ptr);
@@ -9601,7 +9590,7 @@ ip_unset_variable2_core(interp, argc, argv)
if (FIX2INT(flag) & TCL_LEAVE_ERR_MSG) {
/* return rb_exc_new2(rb_eRuntimeError,
Tcl_GetStringResult(ptr->ip)); */
- return create_ip_exc(interp, rb_eRuntimeError, "%s",
+ return create_ip_exc(interp, rb_eRuntimeError,
Tcl_GetStringResult(ptr->ip));
}
return Qfalse;
@@ -9880,7 +9869,7 @@ lib_merge_tklist(argc, argv, obj)
/* based on Tcl/Tk's Tcl_Merge() */
/* flagPtr = ALLOC_N(int, argc); */
- flagPtr = RbTk_ALLOC_N(int, argc);
+ flagPtr = (int *)ckalloc(sizeof(int) * argc);
#if 0 /* use Tcl_Preserve/Release */
Tcl_Preserve((ClientData)flagPtr); /* XXXXXXXXXX */
#endif
@@ -9891,7 +9880,7 @@ lib_merge_tklist(argc, argv, obj)
if (OBJ_TAINTED(argv[num])) taint_flag = 1;
dst = StringValuePtr(argv[num]);
#if TCL_MAJOR_VERSION >= 8
- len += Tcl_ScanCountedElement(dst, RSTRING_LENINT(argv[num]),
+ len += Tcl_ScanCountedElement(dst, RSTRING_LEN(argv[num]),
&flagPtr[num]) + 1;
#else /* TCL_MAJOR_VERSION < 8 */
len += Tcl_ScanElement(dst, &flagPtr[num]) + 1;
@@ -9908,7 +9897,7 @@ lib_merge_tklist(argc, argv, obj)
for(num = 0; num < argc; num++) {
#if TCL_MAJOR_VERSION >= 8
len = Tcl_ConvertCountedElement(RSTRING_PTR(argv[num]),
- RSTRING_LENINT(argv[num]),
+ RSTRING_LEN(argv[num]),
dst, flagPtr[num]);
#else /* TCL_MAJOR_VERSION < 8 */
len = Tcl_ConvertElement(RSTRING_PTR(argv[num]), dst, flagPtr[num]);
@@ -9972,10 +9961,10 @@ lib_conv_listelement(self, src)
StringValue(src);
#if TCL_MAJOR_VERSION >= 8
- len = Tcl_ScanCountedElement(RSTRING_PTR(src), RSTRING_LENINT(src),
+ len = Tcl_ScanCountedElement(RSTRING_PTR(src), RSTRING_LEN(src),
&scan_flag);
dst = rb_str_new(0, len + 1);
- len = Tcl_ConvertCountedElement(RSTRING_PTR(src), RSTRING_LENINT(src),
+ len = Tcl_ConvertCountedElement(RSTRING_PTR(src), RSTRING_LEN(src),
RSTRING_PTR(dst), scan_flag);
#else /* TCL_MAJOR_VERSION < 8 */
len = Tcl_ScanElement(RSTRING_PTR(src), &scan_flag);
@@ -10019,8 +10008,6 @@ lib_get_reltype_name(self)
default:
rb_raise(rb_eRuntimeError, "tcltklib has invalid release type number");
}
-
- UNREACHABLE;
}
@@ -10028,8 +10015,8 @@ static VALUE
tcltklib_compile_info()
{
volatile VALUE ret;
- size_t size;
- static CONST char form[]
+ int size;
+ char form[]
= "tcltklib %s :: Ruby%s (%s) %s pthread :: Tcl%s(%s)/Tk%s(%s) %s";
char *info;
@@ -10124,8 +10111,6 @@ create_dummy_encoding_for_tk_core(interp, name, error_mode)
return Qnil;
}
}
-
- UNREACHABLE;
#else
return name;
#endif
diff --git a/ext/tk/tkutil/tkutil.c b/ext/tk/tkutil/tkutil.c
index 5e592fc266..2f92b334bb 100644
--- a/ext/tk/tkutil/tkutil.c
+++ b/ext/tk/tkutil/tkutil.c
@@ -12,7 +12,7 @@
#include "ruby.h"
#ifdef RUBY_VM
-static int rb_thread_critical; /* dummy */
+static VALUE rb_thread_critical; /* dummy */
#else
/* On Ruby 1.8.x, use rb_thread_critical (defined at rubysig.h) */
#include "rubysig.h"
@@ -202,8 +202,8 @@ tk_uninstall_cmd(self, cmd_id)
VALUE self;
VALUE cmd_id;
{
- size_t head_len = strlen(cmd_id_head);
- size_t prefix_len = strlen(cmd_id_prefix);
+ int head_len = strlen(cmd_id_head);
+ int prefix_len = strlen(cmd_id_prefix);
StringValue(cmd_id);
if (strncmp(cmd_id_head, RSTRING_PTR(cmd_id), head_len) != 0) {
@@ -266,6 +266,7 @@ to_strkey(key, value, hash)
VALUE value;
VALUE hash;
{
+ if (key == Qundef) return ST_CONTINUE;
rb_hash_aset(hash, rb_funcall(key, ID_to_s, 0, 0), value);
return ST_CHECK;
}
@@ -277,9 +278,9 @@ tk_symbolkey2str(self, keys)
{
volatile VALUE new_keys = rb_hash_new();
- if (NIL_P(keys)) return new_keys;
+ if NIL_P(keys) return new_keys;
keys = rb_convert_type(keys, T_HASH, "Hash", "to_hash");
- st_foreach_check(RHASH_TBL(keys), to_strkey, new_keys, Qundef);
+ st_foreach(RHASH_TBL(keys), to_strkey, new_keys);
return new_keys;
}
@@ -297,8 +298,7 @@ ary2list(ary, enc_flag, self)
VALUE enc_flag;
VALUE self;
{
- long idx, idx2, size, size2;
- int req_chk_flag;
+ int idx, idx2, size, size2, req_chk_flag;
volatile VALUE val, val2, str_val;
volatile VALUE dst;
volatile VALUE sys_enc, dst_enc, str_enc;
@@ -309,7 +309,7 @@ ary2list(ary, enc_flag, self)
sys_enc = rb_funcall(sys_enc, ID_to_s, 0, 0);
}
- if (NIL_P(enc_flag)) {
+ if NIL_P(enc_flag) {
dst_enc = sys_enc;
req_chk_flag = 1;
} else if (TYPE(enc_flag) == T_TRUE || TYPE(enc_flag) == T_FALSE) {
@@ -451,19 +451,18 @@ ary2list2(ary, enc_flag, self)
VALUE enc_flag;
VALUE self;
{
- long idx, size;
- int req_chk_flag;
+ int idx, size, req_chk_flag;
volatile VALUE val, str_val;
volatile VALUE dst;
volatile VALUE sys_enc, dst_enc, str_enc;
sys_enc = rb_funcall(cTclTkLib, ID_encoding, 0, 0);
- if (NIL_P(sys_enc)) {
+ if NIL_P(sys_enc) {
sys_enc = rb_funcall(cTclTkLib, ID_encoding_system, 0, 0);
sys_enc = rb_funcall(sys_enc, ID_to_s, 0, 0);
}
- if (NIL_P(enc_flag)) {
+ if NIL_P(enc_flag) {
dst_enc = sys_enc;
req_chk_flag = 1;
} else if (TYPE(enc_flag) == T_TRUE || TYPE(enc_flag) == T_FALSE) {
@@ -552,7 +551,7 @@ assoc2kv(assoc, ary, self)
VALUE ary;
VALUE self;
{
- long i, j, len;
+ int i, j, len;
volatile VALUE pair;
volatile VALUE val;
volatile VALUE dst = rb_ary_new2(2 * RARRAY_LEN(assoc));
@@ -600,7 +599,7 @@ assoc2kv_enc(assoc, ary, self)
VALUE ary;
VALUE self;
{
- long i, j, len;
+ int i, j, len;
volatile VALUE pair;
volatile VALUE val;
volatile VALUE dst = rb_ary_new2(2 * RARRAY_LEN(assoc));
@@ -652,6 +651,7 @@ push_kv(key, val, args)
ary = RARRAY_PTR(args)[0];
+ if (key == Qundef) return ST_CONTINUE;
#if 0
rb_ary_push(ary, key2keyname(key));
if (val != TK_None) rb_ary_push(ary, val);
@@ -674,7 +674,7 @@ hash2kv(hash, ary, self)
volatile VALUE dst = rb_ary_new2(2 * RHASH_SIZE(hash));
volatile VALUE args = rb_ary_new3(2, dst, self);
- st_foreach_check(RHASH_TBL(hash), push_kv, args, Qundef);
+ st_foreach(RHASH_TBL(hash), push_kv, args);
if (NIL_P(ary)) {
return dst;
@@ -693,6 +693,7 @@ push_kv_enc(key, val, args)
ary = RARRAY_PTR(args)[0];
+ if (key == Qundef) return ST_CONTINUE;
#if 0
rb_ary_push(ary, key2keyname(key));
if (val != TK_None) {
@@ -718,7 +719,7 @@ hash2kv_enc(hash, ary, self)
volatile VALUE dst = rb_ary_new2(2 * RHASH_SIZE(hash));
volatile VALUE args = rb_ary_new3(2, dst, self);
- st_foreach_check(RHASH_TBL(hash), push_kv_enc, args, Qundef);
+ st_foreach(RHASH_TBL(hash), push_kv_enc, args);
if (NIL_P(ary)) {
return dst;
@@ -800,8 +801,6 @@ tk_hash_kv(argc, argv, self)
}
rb_raise(rb_eArgError, "Hash is expected for 1st argument");
}
-
- UNREACHABLE;
}
static VALUE
@@ -897,7 +896,8 @@ get_eval_string_core(obj, enc_flag, self)
}
}
- rb_warning("fail to convert '%+"PRIsVALUE"' to string for Tk", obj);
+ rb_warning("fail to convert '%s' to string for Tk",
+ RSTRING_PTR(rb_funcall(obj, rb_intern("inspect"), 0, 0)));
return obj;
}
@@ -1079,7 +1079,7 @@ tkstr_to_str(value)
VALUE value;
{
char * ptr;
- long len;
+ int len;
ptr = RSTRING_PTR(value);
len = RSTRING_LEN(value);
@@ -1133,8 +1133,8 @@ tcl2rb_num_or_nil(self, value)
#define CBSUBST_TBL_MAX (256)
struct cbsubst_info {
- long full_subst_length;
- long keylen[CBSUBST_TBL_MAX];
+ int full_subst_length;
+ int keylen[CBSUBST_TBL_MAX];
char *key[CBSUBST_TBL_MAX];
char type[CBSUBST_TBL_MAX];
ID ivar[CBSUBST_TBL_MAX];
@@ -1246,7 +1246,7 @@ each_attr_def(key, value, klass)
switch(TYPE(key)) {
case T_STRING:
- key_id = rb_intern_str(key);
+ key_id = rb_intern(RSTRING_PTR(key));
break;
case T_SYMBOL:
key_id = SYM2ID(key);
@@ -1258,7 +1258,7 @@ each_attr_def(key, value, klass)
switch(TYPE(value)) {
case T_STRING:
- value_id = rb_intern_str(value);
+ value_id = rb_intern(RSTRING_PTR(value));
break;
case T_SYMBOL:
value_id = SYM2ID(value);
@@ -1298,10 +1298,9 @@ cbsubst_sym_to_subst(self, sym)
VALUE sym;
{
struct cbsubst_info *inf;
- VALUE str;
+ const char *str;
char *buf, *ptr;
- int idx;
- long len;
+ int idx, len;
ID id;
volatile VALUE ret;
@@ -1311,12 +1310,12 @@ cbsubst_sym_to_subst(self, sym)
struct cbsubst_info, inf);
if (!NIL_P(ret = rb_hash_aref(inf->aliases, sym))) {
- str = rb_id2str(SYM2ID(ret));
+ str = rb_id2name(SYM2ID(ret));
} else {
- str = rb_id2str(SYM2ID(sym));
+ str = rb_id2name(SYM2ID(sym));
}
- id = rb_intern_str(rb_sprintf("@%"PRIsVALUE, str));
+ id = rb_intern(RSTRING_PTR(rb_str_cat2(rb_str_new2("@"), str)));
for(idx = 0; idx < CBSUBST_TBL_MAX; idx++) {
if (inf->ivar[idx] == id) break;
@@ -1353,10 +1352,9 @@ cbsubst_get_subst_arg(argc, argv, self)
VALUE self;
{
struct cbsubst_info *inf;
- VALUE str;
+ const char *str;
char *buf, *ptr;
- int i, idx;
- long len;
+ int i, idx, len;
ID id;
volatile VALUE arg_sym, ret;
@@ -1368,28 +1366,28 @@ cbsubst_get_subst_arg(argc, argv, self)
for(i = 0; i < argc; i++) {
switch(TYPE(argv[i])) {
case T_STRING:
- str = argv[i];
- arg_sym = ID2SYM(rb_intern_str(argv[i]));
+ str = RSTRING_PTR(argv[i]);
+ arg_sym = ID2SYM(rb_intern(str));
break;
case T_SYMBOL:
arg_sym = argv[i];
- str = rb_id2str(SYM2ID(arg_sym));
+ str = rb_id2name(SYM2ID(arg_sym));
break;
default:
rb_raise(rb_eArgError, "arg #%d is not a String or a Symbol", i);
}
if (!NIL_P(ret = rb_hash_aref(inf->aliases, arg_sym))) {
- str = rb_id2str(SYM2ID(ret));
+ str = rb_id2name(SYM2ID(ret));
}
- id = rb_intern_str(rb_sprintf("@%"PRIsVALUE, str));
+ id = rb_intern(RSTRING_PTR(rb_str_cat2(rb_str_new2("@"), str)));
for(idx = 0; idx < CBSUBST_TBL_MAX; idx++) {
if (inf->ivar[idx] == id) break;
}
if (idx >= CBSUBST_TBL_MAX) {
- rb_raise(rb_eArgError, "cannot find attribute :%"PRIsVALUE, str);
+ rb_raise(rb_eArgError, "cannot find attribute :%s", str);
}
*(ptr++) = '%';
@@ -1424,8 +1422,7 @@ cbsubst_get_subst_key(self, str)
volatile VALUE list;
volatile VALUE ret;
VALUE keyval;
- long i, len, keylen;
- int idx;
+ int i, len, keylen, idx;
char *buf, *ptr, *key;
list = rb_funcall(cTclTkLib, ID_split_tklist, 1, str);
@@ -1476,8 +1473,7 @@ cbsubst_get_all_subst_keys(self)
struct cbsubst_info *inf;
char *buf, *ptr;
char *keys_buf, *keys_ptr;
- int idx;
- long len;
+ int idx, len;
volatile VALUE ret;
Data_Get_Struct(rb_const_get(self, ID_SUBST_INFO),
@@ -1529,7 +1525,7 @@ cbsubst_table_setup(argc, argv, self)
VALUE inf;
ID id;
struct cbsubst_info *subst_inf;
- long idx, len;
+ int idx, len;
unsigned char chr;
/* accept (key_inf, proc_inf) or (key_inf, longkey_inf, procinf) */
@@ -1571,7 +1567,7 @@ cbsubst_table_setup(argc, argv, self)
subst_inf->full_subst_length += 3;
id = SYM2ID(RARRAY_PTR(inf)[2]);
- subst_inf->ivar[chr] = rb_intern_str(rb_sprintf("@%"PRIsVALUE, rb_id2str(id)));
+ subst_inf->ivar[chr] = rb_intern(RSTRING_PTR(rb_str_cat2(rb_str_new2("@"), rb_id2name(id))));
rb_attr(self, id, 1, 0, Qtrue);
}
@@ -1610,7 +1606,7 @@ cbsubst_table_setup(argc, argv, self)
subst_inf->full_subst_length += (subst_inf->keylen[chr] + 2);
id = SYM2ID(RARRAY_PTR(inf)[2]);
- subst_inf->ivar[chr] = rb_intern_str(rb_sprintf("@%"PRIsVALUE, rb_id2str(id)));
+ subst_inf->ivar[chr] = rb_intern(RSTRING_PTR(rb_str_cat2(rb_str_new2("@"), rb_id2name(id))));
rb_attr(self, id, 1, 0, Qtrue);
}
@@ -1650,10 +1646,10 @@ cbsubst_scan_args(self, arg_key, val_ary)
VALUE val_ary;
{
struct cbsubst_info *inf;
- long idx;
+ int idx;
unsigned char *keyptr = (unsigned char*)RSTRING_PTR(arg_key);
- long keylen = RSTRING_LEN(arg_key);
- long vallen = RARRAY_LEN(val_ary);
+ int keylen = RSTRING_LEN(arg_key);
+ int vallen = RARRAY_LEN(val_ary);
unsigned char type_chr;
volatile VALUE dst = rb_ary_new2(vallen);
volatile VALUE proc;
diff --git a/ext/win32ole/extconf.rb b/ext/win32ole/extconf.rb
index 52c3d6bdfb..c3717316d4 100644
--- a/ext/win32ole/extconf.rb
+++ b/ext/win32ole/extconf.rb
@@ -23,14 +23,6 @@ def create_win32ole_makefile
unless have_type("IMultiLanguage2", "mlang.h")
have_type("IMultiLanguage", "mlang.h")
end
- spec = nil
- checking_for('thread_specific', '%s') do
- spec = %w[__declspec(thread) __thread].find {|th|
- try_compile("#{th} int foo;", "", :werror => true)
- }
- spec or 'no'
- end
- $defs << "-DRB_THREAD_SPECIFIC=#{spec}" if spec
create_makefile("win32ole")
end
end
@@ -38,7 +30,6 @@ end
case RUBY_PLATFORM
when /mswin/
- $CFLAGS.sub!(/((?:\A|\s)[-\/])W\d(?=\z|\s)/, '\1W3') or
- $CFLAGS += ' -W3'
+ $CFLAGS += ' /W3'
end
create_win32ole_makefile
diff --git a/ext/win32ole/lib/win32ole.rb b/ext/win32ole/lib/win32ole.rb
new file mode 100644
index 0000000000..aaf7e7cdcf
--- /dev/null
+++ b/ext/win32ole/lib/win32ole.rb
@@ -0,0 +1,22 @@
+require 'win32ole.so'
+
+# re-define Thread#initialize
+# bug #2618(ruby-core:27634)
+
+class Thread
+ alias :org_initialize :initialize
+ def initialize(*arg, &block)
+ if block
+ org_initialize(*arg) {
+ WIN32OLE.ole_initialize
+ begin
+ block.call(*arg)
+ ensure
+ WIN32OLE.ole_uninitialize
+ end
+ }
+ else
+ org_initialize(*arg)
+ end
+ end
+end
diff --git a/ext/win32ole/win32ole.c b/ext/win32ole/win32ole.c
index 3174815aef..acc2fea39d 100644
--- a/ext/win32ole/win32ole.c
+++ b/ext/win32ole/win32ole.c
@@ -143,7 +143,7 @@ const IID IID_IMultiLanguage2 = {0xDCCFC164, 0x2B38, 0x11d2, {0xB7, 0xEC, 0x00,
#define WC2VSTR(x) ole_wc2vstr((x), TRUE)
-#define WIN32OLE_VERSION "1.5.4"
+#define WIN32OLE_VERSION "1.5.3"
typedef HRESULT (STDAPICALLTYPE FNCOCREATEINSTANCEEX)
(REFCLSID, IUnknown*, DWORD, COSERVERINFO*, DWORD, MULTI_QI*);
@@ -214,17 +214,7 @@ VALUE cWIN32OLE_PROPERTY;
static VALUE ary_ole_event;
static ID id_events;
-#if defined(RB_THREAD_SPECIFIC) && (defined(__CYGWIN__) || defined(__MINGW32__))
-static RB_THREAD_SPECIFIC BOOL g_ole_initialized;
-# define g_ole_initialized_init() ((void)0)
-# define g_ole_initialized_set(val) (g_ole_initialized = (val))
-#else
-static volatile DWORD g_ole_initialized_key = TLS_OUT_OF_INDEXES;
-# define g_ole_initialized (BOOL)TlsGetValue(g_ole_initialized_key)
-# define g_ole_initialized_init() (g_ole_initialized_key = TlsAlloc())
-# define g_ole_initialized_set(val) TlsSetValue(g_ole_initialized_key, (void*)(val))
-#endif
-static BOOL g_uninitialize_hooked = FALSE;
+static BOOL g_ole_initialized = FALSE;
static BOOL g_cp_installed = FALSE;
static BOOL g_lcid_installed = FALSE;
static HINSTANCE ghhctrl = NULL;
@@ -319,8 +309,8 @@ static VALUE ole_hresult2msg(HRESULT hr);
static void ole_freeexceptinfo(EXCEPINFO *pExInfo);
static VALUE ole_excepinfo2msg(EXCEPINFO *pExInfo);
static void ole_raise(HRESULT hr, VALUE ecs, const char *fmt, ...);
-static void ole_initialize(void);
-static void ole_msg_loop(void);
+static void ole_initialize();
+static void ole_msg_loop();
static void ole_free(struct oledata *pole);
static void oletypelib_free(struct oletypelibdata *poletypelib);
static void oletype_free(struct oletypedata *poletype);
@@ -361,7 +351,7 @@ static VALUE typelib_file_from_typelib(VALUE ole);
static VALUE typelib_file(VALUE ole);
static void ole_const_load(ITypeLib *pTypeLib, VALUE klass, VALUE self);
static HRESULT clsid_from_remote(VALUE host, VALUE com, CLSID *pclsid);
-static VALUE ole_create_dcom(VALUE self, VALUE ole, VALUE host, VALUE others);
+static VALUE ole_create_dcom(int argc, VALUE *argv, VALUE self);
static VALUE ole_bind_obj(VALUE moniker, int argc, VALUE *argv, VALUE self);
static VALUE fole_s_connect(int argc, VALUE *argv, VALUE self);
static VALUE fole_s_const_load(int argc, VALUE *argv, VALUE self);
@@ -380,7 +370,9 @@ static BOOL CALLBACK installed_lcid_proc(LPTSTR str);
static BOOL lcid_installed(LCID lcid);
static VALUE fole_s_set_locale(VALUE self, VALUE vlcid);
static VALUE fole_s_create_guid(VALUE self);
+static void ole_pure_initialize();
static VALUE fole_s_ole_initialize(VALUE self);
+static void ole_pure_uninitialize();
static VALUE fole_s_ole_uninitialize(VALUE self);
static VALUE fole_initialize(int argc, VALUE *argv, VALUE self);
static VALUE hash2named_arg(VALUE pair, struct oleparam* pOp);
@@ -580,7 +572,7 @@ static VALUE fev_get_handler(VALUE self);
static VALUE evs_push(VALUE ev);
static VALUE evs_delete(long i);
static VALUE evs_entry(long i);
-static VALUE evs_length(void);
+static VALUE evs_length();
static void olevariant_free(struct olevariantdata *pvar);
static VALUE folevariant_s_allocate(VALUE klass);
static VALUE folevariant_s_array(VALUE klass, VALUE dims, VALUE vvt);
@@ -594,8 +586,8 @@ static VALUE folevariant_ary_aset(int argc, VALUE *argv, VALUE self);
static VALUE folevariant_value(VALUE self);
static VALUE folevariant_vartype(VALUE self);
static VALUE folevariant_set_value(VALUE self, VALUE val);
-static void init_enc2cp(void);
-static void free_enc2cp(void);
+static void init_enc2cp();
+static void free_enc2cp();
static HRESULT (STDMETHODCALLTYPE mf_QueryInterface)(
IMessageFilter __RPC_FAR * This,
@@ -1193,51 +1185,45 @@ static void
ole_raise(HRESULT hr, VALUE ecs, const char *fmt, ...)
{
va_list args;
- VALUE msg;
+ char buf[BUFSIZ];
VALUE err_msg;
va_init_list(args, fmt);
- msg = rb_vsprintf(fmt, args);
+ vsnprintf(buf, BUFSIZ, fmt, args);
va_end(args);
err_msg = ole_hresult2msg(hr);
if(err_msg != Qnil) {
- rb_str_cat2(msg, "\n");
- rb_str_append(msg, err_msg);
+ rb_raise(ecs, "%s\n%s", buf, StringValuePtr(err_msg));
+ }
+ else {
+ rb_raise(ecs, "%s", buf);
}
- rb_exc_raise(rb_exc_new3(ecs, msg));
}
void
-ole_uninitialize(void)
+ole_uninitialize()
{
- if (!g_ole_initialized) return;
OleUninitialize();
- g_ole_initialized_set(FALSE);
+ g_ole_initialized = FALSE;
}
static void
-ole_uninitialize_hook(rb_event_flag_t evflag, VALUE data, VALUE self, ID mid, VALUE klass)
-{
- ole_uninitialize();
-}
-
-static void
-ole_initialize(void)
+ole_initialize()
{
HRESULT hr;
- if(!g_uninitialize_hooked) {
- rb_add_event_hook(ole_uninitialize_hook, RUBY_EVENT_THREAD_END, Qnil);
- g_uninitialize_hooked = TRUE;
- }
-
if(g_ole_initialized == FALSE) {
hr = OleInitialize(NULL);
if(FAILED(hr)) {
ole_raise(hr, rb_eRuntimeError, "fail: OLE initialize");
}
- g_ole_initialized_set(TRUE);
-
+ g_ole_initialized = TRUE;
+ /*
+ * In some situation, OleUninitialize does not work fine. ;-<
+ */
+ /*
+ atexit((void (*)(void))ole_uninitialize);
+ */
hr = CoRegisterMessageFilter(&imessage_filter, &previous_filter);
if(FAILED(hr)) {
previous_filter = NULL;
@@ -1830,18 +1816,14 @@ ole_set_byref(VARIANT *realvar, VARIANT *var, VARTYPE vt)
V_R8REF(var) = &V_R8(realvar);
break;
-#if (_MSC_VER >= 1300) || defined(__CYGWIN__) || defined(__MINGW32__)
-#ifdef V_I8REF
+#if (_MSC_VER >= 1300)
case VT_I8:
V_I8REF(var) = &V_I8(realvar);
break;
-#endif
-#ifdef V_UI8REF
case VT_UI8:
V_UI8REF(var) = &V_UI8(realvar);
break;
#endif
-#endif
case VT_INT:
V_INTREF(var) = &V_INT(realvar);
break;
@@ -2197,10 +2179,8 @@ ole_variant2val(VARIANT *pvar)
#if (_MSC_VER >= 1300) || defined(__CYGWIN__) || defined(__MINGW32__)
case VT_I8:
if(V_ISBYREF(pvar))
-#if (_MSC_VER >= 1300) || defined(__CYGWIN__) || defined(__MINGW32__)
-#ifdef V_I8REF
+#if (_MSC_VER >= 1300)
obj = I8_2_NUM(*V_I8REF(pvar));
-#endif
#else
obj = Qnil;
#endif
@@ -2209,10 +2189,8 @@ ole_variant2val(VARIANT *pvar)
break;
case VT_UI8:
if(V_ISBYREF(pvar))
-#if (_MSC_VER >= 1300) || defined(__CYGWIN__) || defined(__MINGW32__)
-#ifdef V_UI8REF
+#if (_MSC_VER >= 1300)
obj = UI8_2_NUM(*V_UI8REF(pvar));
-#endif
#else
obj = Qnil;
#endif
@@ -2612,8 +2590,9 @@ clsid_from_remote(VALUE host, VALUE com, CLSID *pclsid)
}
static VALUE
-ole_create_dcom(VALUE self, VALUE ole, VALUE host, VALUE others)
+ole_create_dcom(int argc, VALUE *argv, VALUE self)
{
+ VALUE ole, host, others;
HRESULT hr;
CLSID clsid;
OLECHAR *pbuf;
@@ -2631,6 +2610,7 @@ ole_create_dcom(VALUE self, VALUE ole, VALUE host, VALUE others)
GetProcAddress(gole32, "CoCreateInstanceEx");
if (!gCoCreateInstanceEx)
rb_raise(rb_eRuntimeError, "CoCreateInstanceEx is not supported in this environment");
+ rb_scan_args(argc, argv, "2*", &ole, &host, &others);
pbuf = ole_vstr2wc(ole);
hr = CLSIDFromProgID(pbuf, &clsid);
@@ -3153,11 +3133,25 @@ fole_s_create_guid(VALUE self)
* You must not use thease method.
*/
+static void ole_pure_initialize()
+{
+ HRESULT hr;
+ hr = OleInitialize(NULL);
+ if(FAILED(hr)) {
+ ole_raise(hr, rb_eRuntimeError, "fail: OLE initialize");
+ }
+}
+
+static void ole_pure_uninitialize()
+{
+ OleUninitialize();
+}
+
/* :nodoc */
static VALUE
fole_s_ole_initialize(VALUE self)
{
- ole_initialize();
+ ole_pure_initialize();
return Qnil;
}
@@ -3165,7 +3159,7 @@ fole_s_ole_initialize(VALUE self)
static VALUE
fole_s_ole_uninitialize(VALUE self)
{
- ole_uninitialize();
+ ole_pure_uninitialize();
return Qnil;
}
@@ -3248,7 +3242,7 @@ fole_initialize(int argc, VALUE *argv, VALUE self)
rb_raise(rb_eSecurityError, "Insecure Object Creation - %s",
StringValuePtr(svr_name));
}
- return ole_create_dcom(self, svr_name, host, others);
+ return ole_create_dcom(argc, argv, self);
}
/* get CLSID from OLE server name */
@@ -4166,6 +4160,7 @@ ole_methods_sub(ITypeInfo *pOwnerTypeInfo, ITypeInfo *pTypeInfo, VALUE methods,
HRESULT hr;
TYPEATTR *pTypeAttr;
BSTR bstr;
+ char *pstr;
FUNCDESC *pFuncDesc;
VALUE method;
WORD i;
@@ -4174,6 +4169,7 @@ ole_methods_sub(ITypeInfo *pOwnerTypeInfo, ITypeInfo *pTypeInfo, VALUE methods,
ole_raise(hr, eWIN32OLERuntimeError, "failed to GetTypeAttr");
}
for(i = 0; i < pTypeAttr->cFuncs; i++) {
+ pstr = NULL;
hr = pTypeInfo->lpVtbl->GetFuncDesc(pTypeInfo, i, &pFuncDesc);
if (FAILED(hr))
continue;
@@ -6123,6 +6119,7 @@ ole_variables(ITypeInfo *pTypeInfo)
WORD i;
UINT len;
BSTR bstr;
+ char *pstr;
VARDESC *pVarDesc;
struct olevariabledata *pvar;
VALUE var;
@@ -6137,6 +6134,7 @@ ole_variables(ITypeInfo *pTypeInfo)
if(FAILED(hr))
continue;
len = 0;
+ pstr = NULL;
hr = pTypeInfo->lpVtbl->GetNames(pTypeInfo, pVarDesc->memid, &bstr,
1, &len);
if(FAILED(hr) || len == 0 || !bstr)
@@ -7655,9 +7653,11 @@ static long
ole_search_event_at(VALUE ary, VALUE ev)
{
VALUE event;
+ VALUE def_event;
VALUE event_name;
long i, len;
long ret = -1;
+ def_event = Qnil;
len = RARRAY_LEN(ary);
for(i = 0; i < len; i++) {
event = rb_ary_entry(ary, i);
@@ -8570,7 +8570,7 @@ evs_entry(long i)
}
static VALUE
-evs_length(void)
+evs_length()
{
return rb_funcall(ary_ole_event, rb_intern("length"), 0);
}
@@ -9062,21 +9062,20 @@ folevariant_set_value(VALUE self, VALUE val)
}
static void
-init_enc2cp(void)
+init_enc2cp()
{
enc2cp_table = st_init_numtable();
}
static void
-free_enc2cp(void)
+free_enc2cp()
{
st_free_table(enc2cp_table);
}
void
-Init_win32ole(void)
+Init_win32ole()
{
- g_ole_initialized_init();
ary_ole_event = rb_ary_new();
rb_gc_register_mark_object(ary_ole_event);
id_events = rb_intern("events");
diff --git a/ext/zlib/extconf.rb b/ext/zlib/extconf.rb
index b4348ceca7..a61ebae327 100644
--- a/ext/zlib/extconf.rb
+++ b/ext/zlib/extconf.rb
@@ -15,7 +15,7 @@ if %w'z libz zlib1 zlib zdll zlibwapi'.find {|z| have_library(z, 'deflateReset')
defines = []
- Logging::message 'checking for kind of operating system... '
+ message 'checking for kind of operating system... '
os_code = with_config('os-code') ||
case RUBY_PLATFORM.split('-',2)[1]
when 'amigaos' then
@@ -50,7 +50,7 @@ if %w'z libz zlib1 zlib zdll zlibwapi'.find {|z| have_library(z, 'deflateReset')
unless OS_NAMES.key? os_code then
raise "invalid OS_CODE `#{os_code}'"
end
- Logging::message "#{OS_NAMES[os_code]}\n"
+ message "#{OS_NAMES[os_code]}\n"
defines << "OS_CODE=#{os_code}"
$defs.concat(defines.collect{|d|' -D'+d})
diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c
index 4b7ef3b9fe..d5909d60c0 100644
--- a/ext/zlib/zlib.c
+++ b/ext/zlib/zlib.c
@@ -10,7 +10,6 @@
#include <zlib.h>
#include <time.h>
#include <ruby/io.h>
-#include <ruby/thread.h>
#ifdef HAVE_VALGRIND_MEMCHECK_H
# include <valgrind/memcheck.h>
@@ -21,8 +20,8 @@
# define VALGRIND_MAKE_MEM_UNDEFINED(p, n) VALGRIND_MAKE_WRITABLE((p), (n))
# endif
#else
-# define VALGRIND_MAKE_MEM_DEFINED(p, n) 0
-# define VALGRIND_MAKE_MEM_UNDEFINED(p, n) 0
+# define VALGRIND_MAKE_MEM_DEFINED(p, n) /* empty */
+# define VALGRIND_MAKE_MEM_UNDEFINED(p, n) /* empty */
#endif
#define RUBY_ZLIB_VERSION "0.6.0"
@@ -57,8 +56,6 @@ max_uint(long n)
#define sizeof(x) ((int)sizeof(x))
-static ID id_dictionaries;
-
/*--------- Prototypes --------*/
static NORETURN(void raise_zlib_error(int, const char*));
@@ -73,7 +70,6 @@ static void finalizer_warn(const char*);
struct zstream;
struct zstream_funcs;
-struct zstream_run_args;
static void zstream_init(struct zstream*, const struct zstream_funcs*);
static void zstream_expand_buffer(struct zstream*);
static void zstream_expand_buffer_into(struct zstream*, unsigned long);
@@ -226,50 +222,9 @@ static VALUE rb_gzreader_readlines(int, VALUE*, VALUE);
/*
* Document-module: Zlib
*
- * This module provides access to the {zlib library}[http://zlib.net]. Zlib is
- * designed to be a portable, free, general-purpose, legally unencumbered --
- * that is, not covered by any patents -- lossless data-compression library
- * for use on virtually any computer hardware and operating system.
- *
- * The zlib compression library provides in-memory compression and
- * decompression functions, including integrity checks of the uncompressed
- * data.
- *
- * The zlib compressed data format is described in RFC 1950, which is a
- * wrapper around a deflate stream which is described in RFC 1951.
- *
- * The library also supports reading and writing files in gzip (.gz) format
- * with an interface similar to that of IO. The gzip format is described in
- * RFC 1952 which is also a wrapper around a deflate stream.
- *
- * The zlib format was designed to be compact and fast for use in memory and on
- * communications channels. The gzip format was designed for single-file
- * compression on file systems, has a larger header than zlib to maintain
- * directory information, and uses a different, slower check method than zlib.
- *
- * See your system's zlib.h for further information about zlib
- *
- * == Sample usage
+ * == Overview
*
- * Using the wrapper to compress strings with default parameters is quite
- * simple:
- *
- * require "zlib"
- *
- * data_to_compress = File.read("don_quixote.txt")
- *
- * puts "Input size: #{data_to_compress.size}"
- * #=> Input size: 2347740
- *
- * data_compressed = Zlib::Deflate.deflate(data_to_compress)
- *
- * puts "Compressed size: #{data_compressed.size}"
- * #=> Compressed size: 887238
- *
- * uncompressed_data = Zlib::Inflate.inflate(data_compressed)
- *
- * puts "Uncompressed data is: #{uncompressed_data}"
- * #=> Uncompressed data is: The Project Gutenberg EBook of Don Quixote...
+ * Access to the zlib library.
*
* == Class tree
*
@@ -294,6 +249,8 @@ static VALUE rb_gzreader_readlines(int, VALUE*, VALUE);
* - Zlib::GzipFile::CRCError
* - Zlib::GzipFile::NoFooter
*
+ * see also zlib.h
+ *
*/
void Init_zlib(void);
@@ -337,8 +294,11 @@ raise_zlib_error(int err, const char *msg)
rb_sys_fail(msg);
/* no return */
default:
- exc = rb_exc_new3(cZError,
- rb_sprintf("unknown zlib error %d: %s", err, msg));
+ {
+ char buf[BUFSIZ];
+ snprintf(buf, BUFSIZ, "unknown zlib error %d: %s", err, msg);
+ exc = rb_exc_new2(cZError, buf);
+ }
}
rb_exc_raise(exc);
@@ -461,7 +421,7 @@ rb_zlib_adler32_combine(VALUE klass, VALUE adler1, VALUE adler2, VALUE len2)
/*
* Document-method: Zlib.crc32
*
- * call-seq: Zlib.crc32(string, crc)
+ * call-seq: Zlib.crc32(string, adler)
*
* Calculates CRC checksum for +string+, and returns updated value of +crc+. If
* +string+ is omitted, it returns the CRC initial value. If +crc+ is omitted, it
@@ -542,22 +502,16 @@ struct zstream {
#define ZSTREAM_FLAG_IN_STREAM 0x2
#define ZSTREAM_FLAG_FINISHED 0x4
#define ZSTREAM_FLAG_CLOSING 0x8
-#define ZSTREAM_FLAG_GZFILE 0x10 /* disallows yield from expand_buffer for
- gzip*/
-#define ZSTREAM_FLAG_UNUSED 0x20
+#define ZSTREAM_FLAG_UNUSED 0x10
#define ZSTREAM_READY(z) ((z)->flags |= ZSTREAM_FLAG_READY)
#define ZSTREAM_IS_READY(z) ((z)->flags & ZSTREAM_FLAG_READY)
#define ZSTREAM_IS_FINISHED(z) ((z)->flags & ZSTREAM_FLAG_FINISHED)
#define ZSTREAM_IS_CLOSING(z) ((z)->flags & ZSTREAM_FLAG_CLOSING)
-#define ZSTREAM_IS_GZFILE(z) ((z)->flags & ZSTREAM_FLAG_GZFILE)
-
-#define ZSTREAM_EXPAND_BUFFER_OK 0
/* I think that more better value should be found,
but I gave up finding it. B) */
#define ZSTREAM_INITIAL_BUFSIZE 1024
-/* Allow a quick return when the thread is interrupted */
#define ZSTREAM_AVAIL_OUT_STEP_MAX 16384
#define ZSTREAM_AVAIL_OUT_STEP_MIN 2048
@@ -569,13 +523,6 @@ static const struct zstream_funcs inflate_funcs = {
inflateReset, inflateEnd, inflate,
};
-struct zstream_run_args {
- struct zstream * z;
- int flush; /* stream flush value for inflate() or deflate() */
- int interrupt; /* stop processing the stream and return to ruby */
- int jump_state; /* for buffer expansion block break or exception */
- int stream_output; /* for streaming zlib processing */
-};
static voidpf
zlib_mem_alloc(voidpf opaque, uInt items, uInt size)
@@ -585,7 +532,7 @@ zlib_mem_alloc(voidpf opaque, uInt items, uInt size)
deflate is performing a conditional jump that depends on an
uninitialized value. Isn't that a bug?
http://www.zlib.net/zlib_faq.html#faq36 */
- (void)VALGRIND_MAKE_MEM_DEFINED(p, items * size);
+ VALGRIND_MAKE_MEM_DEFINED(p, items * size);
return p;
}
@@ -619,50 +566,33 @@ zstream_init(struct zstream *z, const struct zstream_funcs *func)
static void
zstream_expand_buffer(struct zstream *z)
{
+ long inc;
+
if (NIL_P(z->buf)) {
- zstream_expand_buffer_into(z, ZSTREAM_INITIAL_BUFSIZE);
+ /* I uses rb_str_new here not rb_str_buf_new because
+ rb_str_buf_new makes a zero-length string. */
+ z->buf = rb_str_new(0, ZSTREAM_INITIAL_BUFSIZE);
+ z->buf_filled = 0;
+ z->stream.next_out = (Bytef*)RSTRING_PTR(z->buf);
+ z->stream.avail_out = ZSTREAM_INITIAL_BUFSIZE;
+ RBASIC(z->buf)->klass = 0;
return;
}
- if (!ZSTREAM_IS_GZFILE(z) && rb_block_given_p()) {
- if (z->buf_filled >= ZSTREAM_AVAIL_OUT_STEP_MAX) {
- int state = 0;
- VALUE self = (VALUE)z->stream.opaque;
-
- rb_str_resize(z->buf, z->buf_filled);
- RBASIC(z->buf)->klass = rb_cString;
- OBJ_INFECT(z->buf, self);
-
- rb_protect(rb_yield, z->buf, &state);
-
- z->buf = Qnil;
- zstream_expand_buffer_into(z, ZSTREAM_AVAIL_OUT_STEP_MAX);
-
- if (state)
- rb_jump_tag(state);
-
- return;
- }
- else {
- zstream_expand_buffer_into(z,
- ZSTREAM_AVAIL_OUT_STEP_MAX - z->buf_filled);
- }
+ if (RSTRING_LEN(z->buf) - z->buf_filled >= ZSTREAM_AVAIL_OUT_STEP_MAX) {
+ /* to keep other threads from freezing */
+ z->stream.avail_out = ZSTREAM_AVAIL_OUT_STEP_MAX;
}
else {
- if (RSTRING_LEN(z->buf) - z->buf_filled >= ZSTREAM_AVAIL_OUT_STEP_MAX) {
- z->stream.avail_out = ZSTREAM_AVAIL_OUT_STEP_MAX;
- }
- else {
- long inc = z->buf_filled / 2;
- if (inc < ZSTREAM_AVAIL_OUT_STEP_MIN) {
- inc = ZSTREAM_AVAIL_OUT_STEP_MIN;
- }
- rb_str_resize(z->buf, z->buf_filled + inc);
- z->stream.avail_out = (inc < ZSTREAM_AVAIL_OUT_STEP_MAX) ?
- (int)inc : ZSTREAM_AVAIL_OUT_STEP_MAX;
+ inc = z->buf_filled / 2;
+ if (inc < ZSTREAM_AVAIL_OUT_STEP_MIN) {
+ inc = ZSTREAM_AVAIL_OUT_STEP_MIN;
}
- z->stream.next_out = (Bytef*)RSTRING_PTR(z->buf) + z->buf_filled;
+ rb_str_resize(z->buf, z->buf_filled + inc);
+ z->stream.avail_out = (inc < ZSTREAM_AVAIL_OUT_STEP_MAX) ?
+ (int)inc : ZSTREAM_AVAIL_OUT_STEP_MAX;
}
+ z->stream.next_out = (Bytef*)RSTRING_PTR(z->buf) + z->buf_filled;
}
static void
@@ -684,50 +614,6 @@ zstream_expand_buffer_into(struct zstream *z, unsigned long size)
}
}
-static void *
-zstream_expand_buffer_protect(void *ptr)
-{
- struct zstream *z = (struct zstream *)ptr;
- int state = 0;
-
- rb_protect((VALUE (*)(VALUE))zstream_expand_buffer, (VALUE)z, &state);
-
- return (void *)(VALUE)state;
-}
-
-static int
-zstream_expand_buffer_without_gvl(struct zstream *z)
-{
- char * new_str;
- long inc, len;
-
- if (RSTRING_LEN(z->buf) - z->buf_filled >= ZSTREAM_AVAIL_OUT_STEP_MAX) {
- z->stream.avail_out = ZSTREAM_AVAIL_OUT_STEP_MAX;
- }
- else {
- inc = z->buf_filled / 2;
- if (inc < ZSTREAM_AVAIL_OUT_STEP_MIN) {
- inc = ZSTREAM_AVAIL_OUT_STEP_MIN;
- }
-
- len = z->buf_filled + inc;
-
- new_str = ruby_xrealloc(RSTRING(z->buf)->as.heap.ptr, len + 1);
-
- /* from rb_str_resize */
- RSTRING(z->buf)->as.heap.ptr = new_str;
- RSTRING(z->buf)->as.heap.ptr[len] = '\0'; /* sentinel */
- RSTRING(z->buf)->as.heap.len =
- RSTRING(z->buf)->as.heap.aux.capa = len;
-
- z->stream.avail_out = (inc < ZSTREAM_AVAIL_OUT_STEP_MAX) ?
- (int)inc : ZSTREAM_AVAIL_OUT_STEP_MAX;
- }
- z->stream.next_out = (Bytef*)RSTRING_PTR(z->buf) + z->buf_filled;
-
- return ZSTREAM_EXPAND_BUFFER_OK;
-}
-
static void
zstream_append_buffer(struct zstream *z, const Bytef *src, long len)
{
@@ -764,14 +650,7 @@ zstream_append_buffer(struct zstream *z, const Bytef *src, long len)
static VALUE
zstream_detach_buffer(struct zstream *z)
{
- VALUE dst, self = (VALUE)z->stream.opaque;
-
- if (!ZSTREAM_IS_FINISHED(z) && !ZSTREAM_IS_GZFILE(z) &&
- rb_block_given_p()) {
- /* prevent tiny yields mid-stream, save for next
- * zstream_expand_buffer() or stream end */
- return Qnil;
- }
+ VALUE dst;
if (NIL_P(z->buf)) {
dst = rb_str_new(0, 0);
@@ -782,18 +661,10 @@ zstream_detach_buffer(struct zstream *z)
RBASIC(dst)->klass = rb_cString;
}
- OBJ_INFECT(dst, self);
-
z->buf = Qnil;
z->buf_filled = 0;
z->stream.next_out = 0;
z->stream.avail_out = 0;
-
- if (!ZSTREAM_IS_GZFILE(z) && rb_block_given_p()) {
- rb_yield(dst);
- dst = Qnil;
- }
-
return dst;
}
@@ -959,83 +830,13 @@ zstream_end(struct zstream *z)
return Qnil;
}
-static void *
-zstream_run_func(void *ptr)
-{
- struct zstream_run_args *args = (struct zstream_run_args *)ptr;
- int err, state, flush = args->flush;
- struct zstream *z = args->z;
- uInt n;
-
- err = Z_OK;
- while (!args->interrupt) {
- n = z->stream.avail_out;
- err = z->func->run(&z->stream, flush);
- z->buf_filled += n - z->stream.avail_out;
-
- if (err == Z_STREAM_END) {
- z->flags &= ~ZSTREAM_FLAG_IN_STREAM;
- z->flags |= ZSTREAM_FLAG_FINISHED;
- break;
- }
-
- if (err != Z_OK && err != Z_BUF_ERROR)
- break;
-
- if (z->stream.avail_out > 0) {
- z->flags |= ZSTREAM_FLAG_IN_STREAM;
- break;
- }
-
- if (z->stream.avail_in == 0 && z->func == &inflate_funcs) {
- /* break here because inflate() return Z_BUF_ERROR when avail_in == 0. */
- /* but deflate() could be called with avail_in == 0 (there's hidden buffer
- in zstream->state) */
- z->flags |= ZSTREAM_FLAG_IN_STREAM;
- break;
- }
-
- if (args->stream_output) {
- state = (int)(VALUE)rb_thread_call_with_gvl(zstream_expand_buffer_protect,
- (void *)z);
- } else {
- state = zstream_expand_buffer_without_gvl(z);
- }
-
- if (state) {
- err = Z_OK; /* buffer expanded but stream processing was stopped */
- args->jump_state = state;
- break;
- }
- }
-
- return (void *)(VALUE)err;
-}
-
-/*
- * There is no safe way to interrupt z->run->func().
- */
-static void
-zstream_unblock_func(void *ptr)
-{
- struct zstream_run_args *args = (struct zstream_run_args *)ptr;
-
- args->interrupt = 1;
-}
-
static void
zstream_run(struct zstream *z, Bytef *src, long len, int flush)
{
- struct zstream_run_args args;
+ uInt n;
int err;
volatile VALUE guard = Qnil;
- args.z = z;
- args.flush = flush;
- args.interrupt = 0;
- args.jump_state = 0;
- args.stream_output = !ZSTREAM_IS_GZFILE(z) && rb_block_given_p();
-
if (NIL_P(z->input) && len == 0) {
z->stream.next_in = (Bytef*)"";
z->stream.avail_in = 0;
@@ -1054,48 +855,50 @@ zstream_run(struct zstream *z, Bytef *src, long len, int flush)
zstream_expand_buffer(z);
}
-loop:
- err = (int)(VALUE)rb_thread_call_without_gvl(zstream_run_func, (void *)&args,
- zstream_unblock_func, (void *)&args);
-
- if (flush != Z_FINISH && err == Z_BUF_ERROR
- && z->stream.avail_out > 0) {
- z->flags |= ZSTREAM_FLAG_IN_STREAM;
- }
-
- zstream_reset_input(z);
+ for (;;) {
+ /* VC allocates err and guard to same address. accessing err and guard
+ in same scope prevents it. */
+ RB_GC_GUARD(guard);
+ n = z->stream.avail_out;
+ err = z->func->run(&z->stream, flush);
+ z->buf_filled += n - z->stream.avail_out;
+ rb_thread_schedule();
- if (err != Z_OK && err != Z_STREAM_END) {
- if (z->stream.avail_in > 0) {
- zstream_append_input(z, z->stream.next_in, z->stream.avail_in);
+ if (err == Z_STREAM_END) {
+ z->flags &= ~ZSTREAM_FLAG_IN_STREAM;
+ z->flags |= ZSTREAM_FLAG_FINISHED;
+ break;
}
- if (err == Z_NEED_DICT) {
- VALUE self = (VALUE)z->stream.opaque;
- if (self) {
- VALUE dicts = rb_ivar_get(self, id_dictionaries);
- VALUE dict = rb_hash_aref(dicts, rb_uint2inum(z->stream.adler));
- if (!NIL_P(dict)) {
- rb_inflate_set_dictionary(self, dict);
- goto loop;
- }
+ if (err != Z_OK) {
+ if (flush != Z_FINISH && err == Z_BUF_ERROR
+ && z->stream.avail_out > 0) {
+ z->flags |= ZSTREAM_FLAG_IN_STREAM;
+ break;
+ }
+ zstream_reset_input(z);
+ if (z->stream.avail_in > 0) {
+ zstream_append_input(z, z->stream.next_in, z->stream.avail_in);
}
+ raise_zlib_error(err, z->stream.msg);
}
- raise_zlib_error(err, z->stream.msg);
+ if (z->stream.avail_out > 0) {
+ z->flags |= ZSTREAM_FLAG_IN_STREAM;
+ break;
+ }
+ zstream_expand_buffer(z);
}
+ zstream_reset_input(z);
if (z->stream.avail_in > 0) {
zstream_append_input(z, z->stream.next_in, z->stream.avail_in);
- RB_GC_GUARD(guard) = Qnil; /* prevent tail call to make guard effective */
+ guard = Qnil; /* prevent tail call to make guard effective */
}
-
- if (args.jump_state)
- rb_jump_tag(args.jump_state);
}
static VALUE
zstream_sync(struct zstream *z, Bytef *src, long len)
{
- /* VALUE rest; */
+ VALUE rest;
int err;
if (!NIL_P(z->input)) {
@@ -1110,7 +913,7 @@ zstream_sync(struct zstream *z, Bytef *src, long len)
}
zstream_reset_input(z);
if (err != Z_DATA_ERROR) {
- /* rest = rb_str_new((char*)z->stream.next_in, z->stream.avail_in); */
+ rest = rb_str_new((char*)z->stream.next_in, z->stream.avail_in);
raise_zlib_error(err, z->stream.msg);
}
}
@@ -1125,7 +928,7 @@ zstream_sync(struct zstream *z, Bytef *src, long len)
return Qtrue;
}
if (err != Z_DATA_ERROR) {
- /* rest = rb_str_new((char*)z->stream.next_in, z->stream.avail_in); */
+ rest = rb_str_new((char*)z->stream.next_in, z->stream.avail_in);
raise_zlib_error(err, z->stream.msg);
}
return Qfalse;
@@ -1166,7 +969,6 @@ zstream_new(VALUE klass, const struct zstream_funcs *funcs)
obj = Data_Make_Struct(klass, struct zstream,
zstream_mark, zstream_free, z);
zstream_init(z, funcs);
- z->stream.opaque = (voidpf)obj;
return obj;
}
@@ -1272,32 +1074,24 @@ rb_zstream_reset(VALUE obj)
}
/*
- * call-seq:
- * finish -> String
- * finish { |chunk| ... } -> nil
- *
- * Finishes the stream and flushes output buffer. If a block is given each
- * chunk is yielded to the block until the input buffer has been flushed to
- * the output buffer.
+ * Finishes the stream and flushes output buffer. See Zlib::Deflate#finish and
+ * Zlib::Inflate#finish for details of this behavior.
*/
static VALUE
rb_zstream_finish(VALUE obj)
{
struct zstream *z = get_zstream(obj);
+ VALUE dst;
zstream_run(z, (Bytef*)"", 0, Z_FINISH);
+ dst = zstream_detach_buffer(z);
- return zstream_detach_buffer(z);
+ OBJ_INFECT(dst, obj);
+ return dst;
}
/*
- * call-seq:
- * flush_next_out -> String
- * flush_next_out { |chunk| ... } -> nil
- *
- * Flushes output buffer and returns all data in that buffer. If a block is
- * given each chunk is yielded to the block until the current output buffer
- * has been flushed.
+ * Flushes input buffer and returns all data in that buffer.
*/
static VALUE
rb_zstream_flush_next_in(VALUE obj)
@@ -1318,10 +1112,12 @@ static VALUE
rb_zstream_flush_next_out(VALUE obj)
{
struct zstream *z;
+ VALUE dst;
Data_Get_Struct(obj, struct zstream, z);
-
- return zstream_detach_buffer(z);
+ dst = zstream_detach_buffer(z);
+ OBJ_INFECT(dst, obj);
+ return dst;
}
/*
@@ -1451,73 +1247,60 @@ rb_deflate_s_allocate(VALUE klass)
/*
* Document-method: Zlib::Deflate.new
*
- * call-seq:
- * Zlib::Deflate.new(level=DEFAULT_COMPRESSION, window_bits=MAX_WBITS, mem_level=DEF_MEM_LEVEL, strategy=DEFAULT_STRATEGY)
+ * call-seq: Zlib::Deflate.new(level=nil, windowBits=nil, memlevel=nil, strategy=nil)
*
- * Creates a new deflate stream for compression. If a given argument is nil,
- * the default value of that argument is used.
+ * == Arguments
*
- * The +level+ sets the compression level for the deflate stream between 0 (no
- * compression) and 9 (best compression. The following constants have been
- * defined to make code more readable:
+ * +level+::
+ * An Integer compression level between
+ * BEST_SPEED and BEST_COMPRESSION
+ * +windowBits+::
+ * An Integer for the windowBits size. Should be
+ * in the range 8..15, larger values of this parameter
+ * result in better at the expense of memory usage.
+ * +memlevel+::
+ * Specifies how much memory should be allocated for
+ * the internal compression state.
+ * Between DEF_MEM_LEVEL and MAX_MEM_LEVEL
+ * +strategy+::
+ * A parameter to tune the compression algorithm. Use the
+ * DEFAULT_STRATEGY for normal data, FILTERED for data produced by a
+ * filter (or predictor), HUFFMAN_ONLY to force Huffman encoding only (no
+ * string match).
*
- * * Zlib::NO_COMPRESSION = 0
- * * Zlib::BEST_SPEED = 1
- * * Zlib::DEFAULT_COMPRESSION = 6
- * * Zlib::BEST_COMPRESSION = 9
+ * == Description
*
- * The +window_bits+ sets the size of the history buffer and should be between
- * 8 and 15. Larger values of this parameter result in better compression at
- * the expense of memory usage.
+ * Creates a new deflate stream for compression. See zlib.h for details of
+ * each argument. If an argument is nil, the default value of that argument is
+ * used.
*
- * The +mem_level+ specifies how much memory should be allocated for the
- * internal compression state. 1 uses minimum memory but is slow and reduces
- * compression ratio while 9 uses maximum memory for optimal speed. The
- * default value is 8. Two constants are defined:
*
- * * Zlib::DEF_MEM_LEVEL
- * * Zlib::MAX_MEM_LEVEL
+ * == examples
*
- * The +strategy+ sets the deflate compression strategy. The following
- * strategies are available:
+ * === basic
*
- * Zlib::DEFAULT_STRATEGY:: For normal data
- * Zlib::FILTERED:: For data produced by a filter or predictor
- * Zlib::FIXED:: Prevents dynamic Huffman codes
- * Zlib::HUFFMAN_ONLY:: Prevents string matching
- * Zlib::RLE:: Designed for better compression of PNG image data
+ * f = File.new("compressed.file","w+")
+ * #=> #<File:compressed.file>
+ * f << Zlib::Deflate.new().deflate(File.read("big.file"))
+ * #=> #<File:compressed.file>
+ * f.close
+ * #=> nil
*
- * See the constants for further description.
+ * === a little more robust
*
- * == Examples
+ * compressed_file = File.open("compressed.file", "w+")
+ * #=> #<File:compressed.file>
+ * zd = Zlib::Deflate.new(Zlib::BEST_COMPRESSION, 15, Zlib::MAX_MEM_LEVEL, Zlib::HUFFMAN_ONLY)
+ * #=> #<Zlib::Deflate:0x000000008610a0>
+ * compressed_file << zd.deflate(File.read("big.file"))
+ * #=> "\xD4z\xC6\xDE\b\xA1K\x1Ej\x8A ..."
+ * compressed_file.close
+ * #=> nil
+ * zd.close
+ * #=> nil
*
- * === Basic
- *
- * open "compressed.file", "w+" do |io|
- * io << Zlib::Deflate.new.deflate(File.read("big.file"))
- * end
- *
- * === Custom compression
- *
- * open "compressed.file", "w+" do |compressed_io|
- * deflate = Zlib::Deflate.new(Zlib::BEST_COMPRESSION,
- * Zlib::MAX_WBITS,
- * Zlib::MAX_MEM_LEVEL,
- * Zlib::HUFFMAN_ONLY)
- *
- * begin
- * open "big.file" do |big_io|
- * until big_io.eof? do
- * compressed_io << zd.deflate(big_io.read(16384))
- * end
- * end
- * ensure
- * deflate.close
- * end
- * end
+ * (while this example will work, for best optimization the flags need to be reviewed for your specific function)
*
- * While this example will work, for best optimization review the flags for
- * your specific time, memory usage and output space requirements.
*/
static VALUE
rb_deflate_initialize(int argc, VALUE *argv, VALUE obj)
@@ -1554,7 +1337,6 @@ rb_deflate_init_copy(VALUE self, VALUE orig)
Data_Get_Struct(self, struct zstream, z1);
z2 = get_zstream(orig);
- if (z1 == z2) return self;
err = deflateCopy(&z1->stream, &z2->stream);
if (err != Z_OK) {
raise_zlib_error(err, 0);
@@ -1580,19 +1362,19 @@ deflate_run(VALUE args)
/*
* Document-method: Zlib::Deflate.deflate
*
- * call-seq:
- * Zlib.deflate(string[, level])
- * Zlib::Deflate.deflate(string[, level])
+ * call-seq: Zlib.deflate(string[, level])
+ * Zlib::Deflate.deflate(string[, level])
*
* Compresses the given +string+. Valid values of level are
- * Zlib::NO_COMPRESSION, Zlib::BEST_SPEED, Zlib::BEST_COMPRESSION,
- * Zlib::DEFAULT_COMPRESSION, or an integer from 0 to 9 (the default is 6).
+ * <tt>NO_COMPRESSION</tt>, <tt>BEST_SPEED</tt>,
+ * <tt>BEST_COMPRESSION</tt>, <tt>DEFAULT_COMPRESSION</tt>, and an
+ * integer from 0 to 9 (the default is 6).
*
* This method is almost equivalent to the following code:
*
* def deflate(string, level)
* z = Zlib::Deflate.new(level)
- * dst = z.deflate(string, Zlib::FINISH)
+ * dst = z.deflate(string, Zlib::NO_FLUSH)
* z.close
* dst
* end
@@ -1640,46 +1422,55 @@ do_deflate(struct zstream *z, VALUE src, int flush)
}
/*
- * Document-method: Zlib::Deflate#deflate
+ * Document-method: Zlib.deflate
*
- * call-seq:
- * z.deflate(string, flush = Zlib::NO_FLUSH) -> String
- * z.deflate(string, flush = Zlib::NO_FLUSH) { |chunk| ... } -> nil
+ * call-seq: deflate(string[, flush])
+ *
+ * == Arguments
+ *
+ * +string+::
+ * String
+ *
+ * +flush+::
+ * Integer representing a flush code. Either NO_FLUSH,
+ * SYNC_FLUSH, FULL_FLUSH, or FINISH. See zlib.h for details.
+ * Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
+ * decide how much data to accumulate before producing output, in order to
+ * maximize compression.
+ *
+ * == Description
*
* Inputs +string+ into the deflate stream and returns the output from the
* stream. On calling this method, both the input and the output buffers of
- * the stream are flushed. If +string+ is nil, this method finishes the
- * stream, just like Zlib::ZStream#finish.
- *
- * If a block is given consecutive deflated chunks from the +string+ are
- * yielded to the block and +nil+ is returned.
+ * the stream are flushed.
*
- * The +flush+ parameter specifies the flush mode. The following constants
- * may be used:
+ * If +string+ is nil, this method finishes the
+ * stream, just like Zlib::ZStream#finish.
*
- * Zlib::NO_FLUSH:: The default
- * Zlib::SYNC_FLUSH:: Flushes the output to a byte boundary
- * Zlib::FULL_FLUSH:: SYNC_FLUSH + resets the compression state
- * Zlib::FINISH:: Pending input is processed, pending output is flushed.
+ * == Usage
*
- * See the constants for further description.
+ * comp = Zlib.deflate(File.read("big.file"))
+ * or
+ * comp = Zlib.deflate(File.read("big.file"), Zlib::FULL_FLUSH)
*
*/
static VALUE
rb_deflate_deflate(int argc, VALUE *argv, VALUE obj)
{
struct zstream *z = get_zstream(obj);
- VALUE src, flush;
+ VALUE src, flush, dst;
rb_scan_args(argc, argv, "11", &src, &flush);
OBJ_INFECT(obj, src);
do_deflate(z, src, ARG_FLUSH(flush));
+ dst = zstream_detach_buffer(z);
- return zstream_detach_buffer(z);
+ OBJ_INFECT(dst, obj);
+ return dst;
}
/*
- * Document-method: Zlib::Deflate#<<
+ * Document-method: Zlib::Deflate.<<
*
* call-seq: << string
*
@@ -1698,23 +1489,20 @@ rb_deflate_addstr(VALUE obj, VALUE src)
/*
* Document-method: Zlib::Deflate#flush
*
- * call-seq:
- * flush(flush = Zlib::SYNC_FLUSH) -> String
- * flush(flush = Zlib::SYNC_FLUSH) { |chunk| ... } -> nil
+ * call-seq: flush(flush)
*
- * This method is equivalent to <tt>deflate('', flush)</tt>. This method is
- * just provided to improve the readability of your Ruby program. If a block
- * is given chunks of deflate output are yielded to the block until the buffer
- * is flushed.
+ * This method is equivalent to <tt>deflate('', flush)</tt>. If flush is omitted,
+ * <tt>SYNC_FLUSH</tt> is used as flush. This method is just provided
+ * to improve the readability of your Ruby program.
+ *
+ * Please visit your zlib.h for a deeper detail on NO_FLUSH, SYNC_FLUSH, FULL_FLUSH, and FINISH
*
- * See Zlib::Deflate#deflate for detail on the +flush+ constants NO_FLUSH,
- * SYNC_FLUSH, FULL_FLUSH and FINISH.
*/
static VALUE
rb_deflate_flush(int argc, VALUE *argv, VALUE obj)
{
struct zstream *z = get_zstream(obj);
- VALUE v_flush;
+ VALUE v_flush, dst;
int flush;
rb_scan_args(argc, argv, "01", &v_flush);
@@ -1722,8 +1510,10 @@ rb_deflate_flush(int argc, VALUE *argv, VALUE obj)
if (flush != Z_NO_FLUSH) { /* prevent Z_BUF_ERROR */
zstream_run(z, (Bytef*)"", 0, flush);
}
+ dst = zstream_detach_buffer(z);
- return zstream_detach_buffer(z);
+ OBJ_INFECT(dst, obj);
+ return dst;
}
/*
@@ -1731,11 +1521,18 @@ rb_deflate_flush(int argc, VALUE *argv, VALUE obj)
*
* call-seq: params(level, strategy)
*
- * Changes the parameters of the deflate stream to allow changes between
- * different types of data that require different types of compression. Any
- * unprocessed data is flushed before changing the params.
+ * Changes the parameters of the deflate stream. See zlib.h for details. The
+ * output from the stream by changing the params is preserved in output
+ * buffer.
*
- * See Zlib::Deflate.new for a description of +level+ and +strategy+.
+ * +level+::
+ * An Integer compression level between
+ * BEST_SPEED and BEST_COMPRESSION
+ * +strategy+::
+ * A parameter to tune the compression algorithm. Use the
+ * DEFAULT_STRATEGY for normal data, FILTERED for data produced by a
+ * filter (or predictor), HUFFMAN_ONLY to force Huffman encoding only (no
+ * string match).
*
*/
static VALUE
@@ -1809,57 +1606,52 @@ rb_deflate_set_dictionary(VALUE obj, VALUE dic)
* dup) itself.
*/
+
+
static VALUE
rb_inflate_s_allocate(VALUE klass)
{
- VALUE inflate = zstream_inflate_new(klass);
- rb_ivar_set(inflate, id_dictionaries, rb_hash_new());
- return inflate;
+ return zstream_inflate_new(klass);
}
/*
* Document-method: Zlib::Inflate.new
*
- * call-seq:
- * Zlib::Inflate.new(window_bits = Zlib::MAX_WBITS)
+ * call-seq: Zlib::Inflate.new(window_bits)
*
- * Creates a new inflate stream for decompression. +window_bits+ sets the
- * size of the history buffer and can have the following values:
+ * == Arguments
*
- * 0::
- * Have inflate use the window size from the zlib header of the compressed
- * stream.
+ * +windowBits+::
+ * An Integer for the windowBits size. Should be
+ * in the range 8..15, larger values of this parameter
+ * result in better at the expense of memory usage.
*
- * (8..15)
- * Overrides the window size of the inflate header in the compressed stream.
- * The window size must be greater than or equal to the window size of the
- * compressed stream.
+ * == Description
*
- * Greater than 15::
- * Add 32 to window_bits to enable zlib and gzip decoding with automatic
- * header detection, or add 16 to decode only the gzip format (a
- * Zlib::DataError will be raised for a non-gzip stream).
+ * Creates a new inflate stream for decompression. See zlib.h for details
+ * of the argument. If +window_bits+ is +nil+, the default value is used.
*
- * (-8..-15)::
- * Enables raw deflate mode which will not generate a check value, and will
- * not look for any check values for comparison at the end of the stream.
+ * == Example
*
- * This is for use with other formats that use the deflate compressed data
- * format such as zip which provide their own check values.
+ * cf = File.open("compressed.file")
+ * ucf = File.open("uncompressed.file", "w+")
+ * zi = Zlib::Inflate.new(Zlib::MAX_WBITS)
*
- * == Example
+ * ucf << zi.inflate(cf.read)
*
- * open "compressed.file" do |compressed_io|
- * inflate = Zlib::Inflate.new(Zlib::MAX_WBITS + 32)
+ * ucf.close
+ * zi.close
+ * cf.close
*
- * begin
- * open "uncompressed.file", "w+" do |uncompressed_io|
- * uncompressed_io << zi.inflate(compressed_io.read)
- * }
- * ensure
- * zi.close
- * end
- * end
+ * or
+ *
+ * File.open("compressed.file") {|cf|
+ * zi = Zlib::Inflate.new
+ * File.open("uncompressed.file", "w+") {|ucf|
+ * ucf << zi.inflate(cf.read)
+ * }
+ * zi.close
+ * }
*
*/
static VALUE
@@ -1893,11 +1685,9 @@ inflate_run(VALUE args)
}
/*
- * Document-method: Zlib::inflate
+ * Document-method: Zlib::Inflate.inflate
*
- * call-seq:
- * Zlib.inflate(string)
- * Zlib::Inflate.inflate(string)
+ * call-seq: Zlib::Inflate.inflate(string)
*
* Decompresses +string+. Raises a Zlib::NeedDict exception if a preset
* dictionary is needed for decompression.
@@ -1951,39 +1741,15 @@ do_inflate(struct zstream *z, VALUE src)
}
}
-/* Document-method: Zlib::Inflate#add_dictionary
- *
- * call-seq: add_dictionary(string)
- *
- * Provide the inflate stream with a dictionary that may be required in the
- * future. Multiple dictionaries may be provided. The inflate stream will
- * automatically choose the correct user-provided dictionary based on the
- * stream's required dictionary.
- */
-static VALUE
-rb_inflate_add_dictionary(VALUE obj, VALUE dictionary) {
- VALUE dictionaries = rb_ivar_get(obj, id_dictionaries);
- VALUE checksum = do_checksum(1, &dictionary, adler32);
-
- rb_hash_aset(dictionaries, checksum, dictionary);
-
- return obj;
-}
-
/*
* Document-method: Zlib::Inflate#inflate
*
- * call-seq:
- * inflate(deflate_string) -> String
- * inflate(deflate_string) { |chunk| ... } -> nil
+ * call-seq: inflate(string)
*
- * Inputs +deflate_string+ into the inflate stream and returns the output from
- * the stream. Calling this method, both the input and the output buffer of
- * the stream are flushed. If string is +nil+, this method finishes the
- * stream, just like Zlib::ZStream#finish.
- *
- * If a block is given consecutive inflated chunks from the +deflate_string+
- * are yielded to the block and +nil+ is returned.
+ * Inputs +string+ into the inflate stream and returns the output from the
+ * stream. Calling this method, both the input and the output buffer of the
+ * stream are flushed. If string is +nil+, this method finishes the stream,
+ * just like Zlib::ZStream#finish.
*
* Raises a Zlib::NeedDict exception if a preset dictionary is needed to
* decompress. Set the dictionary by Zlib::Inflate#set_dictionary and then
@@ -2023,7 +1789,6 @@ rb_inflate_inflate(VALUE obj, VALUE src)
StringValue(src);
zstream_append_buffer2(z, src);
dst = rb_str_new(0, 0);
- OBJ_INFECT(dst, obj);
}
}
else {
@@ -2034,6 +1799,7 @@ rb_inflate_inflate(VALUE obj, VALUE src)
}
}
+ OBJ_INFECT(dst, obj);
return dst;
}
@@ -2257,7 +2023,6 @@ gzfile_new(klass, funcs, endfunc)
obj = Data_Make_Struct(klass, struct gzfile, gzfile_mark, gzfile_free, gz);
zstream_init(&gz->z, funcs);
- gz->z.flags |= ZSTREAM_FLAG_GZFILE;
gz->io = Qnil;
gz->level = 0;
gz->mtime = 0;
@@ -2286,7 +2051,6 @@ static void
gzfile_reset(struct gzfile *gz)
{
zstream_reset(&gz->z);
- gz->z.flags |= ZSTREAM_FLAG_GZFILE;
gz->crc = crc32(0, Z_NULL, 0);
gz->lineno = 0;
gz->ungetc = 0;
@@ -2708,7 +2472,7 @@ gzfile_read(struct gzfile *gz, long len)
if (len == 0) return rb_str_new(0, 0);
if (len < 0) return Qnil;
dst = zstream_shift_buffer(&gz->z, len);
- if (!NIL_P(dst)) gzfile_calc_crc(gz, dst);
+ gzfile_calc_crc(gz, dst);
return dst;
}
@@ -2771,7 +2535,6 @@ gzfile_read_all(struct gzfile *gz)
}
dst = zstream_detach_buffer(&gz->z);
- if (NIL_P(dst)) return dst;
gzfile_calc_crc(gz, dst);
OBJ_TAINT(dst);
return gzfile_newstr(gz, dst);
@@ -2797,6 +2560,7 @@ gzfile_getc(struct gzfile *gz)
if (gz->ec && rb_enc_dummy_p(gz->enc2)) {
const unsigned char *ss, *sp, *se;
unsigned char *ds, *dp, *de;
+ rb_econv_result_t res;
if (!gz->cbuf) {
gz->cbuf = ALLOC_N(char, GZFILE_CBUF_CAPA);
@@ -2805,7 +2569,7 @@ gzfile_getc(struct gzfile *gz)
se = sp + gz->z.buf_filled;
ds = dp = (unsigned char *)gz->cbuf;
de = (unsigned char *)ds + GZFILE_CBUF_CAPA;
- (void)rb_econv_convert(gz->ec, &sp, se, &dp, de, ECONV_PARTIAL_INPUT|ECONV_AFTER_OUTPUT);
+ res = rb_econv_convert(gz->ec, &sp, se, &dp, de, ECONV_PARTIAL_INPUT|ECONV_AFTER_OUTPUT);
rb_econv_check_error(gz->ec);
dst = zstream_shift_buffer(&gz->z, sp - ss);
gzfile_calc_crc(gz, dst);
@@ -2818,7 +2582,6 @@ gzfile_getc(struct gzfile *gz)
buf = gz->z.buf;
len = rb_enc_mbclen(RSTRING_PTR(buf), RSTRING_END(buf), gz->enc);
dst = gzfile_read(gz, len);
- if (NIL_P(dst)) return dst;
return gzfile_newstr(gz, dst);
}
}
@@ -3025,17 +2788,14 @@ gzfile_wrap(int argc, VALUE *argv, VALUE klass, int close_io_on_error)
/*
* Document-method: Zlib::GzipFile.wrap
*
- * call-seq:
- * Zlib::GzipReader.wrap(io, ...) { |gz| ... }
- * Zlib::GzipWriter.wrap(io, ...) { |gz| ... }
+ * call-seq: Zlib::GzipFile.wrap(io) { |gz| ... }
*
- * Creates a GzipReader or GzipWriter associated with +io+, passing in any
- * necessary extra options, and executes the block with the newly created
- * object just like File.open.
- *
- * The GzipFile object will be closed automatically after executing the block.
- * If you want to keep the associated IO object open, you may call
- * Zlib::GzipFile#finish method in the block.
+ * Creates a GzipFile object associated with +io+, and
+ * executes the block with the newly created GzipFile object,
+ * just like File.open. The GzipFile object will be closed
+ * automatically after executing the block. If you want to keep
+ * the associated IO object opening, you may call
+ * +Zlib::GzipFile#finish+ method in the block.
*/
static VALUE
rb_gzfile_s_wrap(int argc, VALUE *argv, VALUE klass)
@@ -3453,17 +3213,12 @@ rb_gzwriter_s_open(int argc, VALUE *argv, VALUE klass)
}
/*
- * call-seq:
- * Zlib::GzipWriter.new(io, level = nil, strategy = nil, options = {})
+ * call-seq: Zlib::GzipWriter.new(io, level, strategy)
*
* Creates a GzipWriter object associated with +io+. +level+ and +strategy+
* should be the same as the arguments of Zlib::Deflate.new. The GzipWriter
- * object writes gzipped data to +io+. +io+ must respond to the
- * +write+ method that behaves the same as IO#write.
- *
- * The +options+ hash may be used to set the encoding of the data.
- * +:external_encoding+, +:internal_encoding+ and +:encoding+ may be set as in
- * IO::new.
+ * object writes gzipped data to +io+. At least, +io+ must respond to the
+ * +write+ method that behaves same as write method in IO class.
*/
static VALUE
rb_gzwriter_initialize(int argc, VALUE *argv, VALUE obj)
@@ -3535,7 +3290,7 @@ rb_gzwriter_write(VALUE obj, VALUE str)
{
struct gzfile *gz = get_gzfile(obj);
- if (!RB_TYPE_P(str, T_STRING))
+ if (TYPE(str) != T_STRING)
str = rb_obj_as_string(str);
if (gz->enc2 && gz->enc2 != rb_ascii8bit_encoding()) {
str = rb_str_conv_enc(str, rb_enc_get(str), gz->enc2);
@@ -3587,7 +3342,7 @@ rb_gzwriter_putc(VALUE obj, VALUE ch)
* Document-class: Zlib::GzipReader
*
* Zlib::GzipReader is the class for reading a gzipped file. GzipReader should
- * be used an IO, or -IO-like, object.
+ * be used an IO, or -IO-lie, object.
*
* Zlib::GzipReader.open('hoge.gz') {|gz|
* print gz.read
@@ -3659,16 +3414,11 @@ rb_gzreader_s_open(int argc, VALUE *argv, VALUE klass)
/*
* Document-method: Zlib::GzipReader.new
*
- * call-seq:
- * Zlib::GzipReader.new(io, options = {})
+ * call-seq: Zlib::GzipReader.new(io)
*
* Creates a GzipReader object associated with +io+. The GzipReader object reads
- * gzipped data from +io+, and parses/decompresses it. The +io+ must
- * have a +read+ method that behaves same as the IO#read.
- *
- * The +options+ hash may be used to set the encoding of the data.
- * +:external_encoding+, +:internal_encoding+ and +:encoding+ may be set as in
- * IO::new.
+ * gzipped data from +io+, and parses/decompresses them. At least, +io+ must have
+ * a +read+ method that behaves same as the +read+ method in IO class.
*
* If the gzip file header is incorrect, raises an Zlib::GzipFile::Error
* exception.
@@ -3883,20 +3633,6 @@ rb_gzreader_each_byte(VALUE obj)
}
/*
- * Document-method: Zlib::GzipReader#bytes
- *
- * This is a deprecated alias for <code>each_byte</code>.
- */
-static VALUE
-rb_gzreader_bytes(VALUE obj)
-{
- rb_warn("Zlib::GzipReader#bytes is deprecated; use #each_byte instead");
- if (!rb_block_given_p())
- return rb_enumeratorize(obj, ID2SYM(rb_intern("each_byte")), 0, 0);
- return rb_gzreader_each_byte(obj);
-}
-
-/*
* Document-method: Zlib::GzipReader#ungetc
*
* See Zlib::GzipReader documentation for a description.
@@ -4044,7 +3780,6 @@ gzreader_gets(int argc, VALUE *argv, VALUE obj)
n = limit;
}
dst = zstream_shift_buffer(&gz->z, n);
- if (NIL_P(dst)) return dst;
gzfile_calc_crc(gz, dst);
dst = gzfile_newstr(gz, dst);
}
@@ -4106,7 +3841,6 @@ gzreader_gets(int argc, VALUE *argv, VALUE obj)
gz->lineno++;
dst = gzfile_read(gz, n);
- if (NIL_P(dst)) return dst;
if (rspara) {
gzreader_skip_linebreaks(gz);
}
@@ -4165,20 +3899,6 @@ rb_gzreader_each(int argc, VALUE *argv, VALUE obj)
}
/*
- * Document-method: Zlib::GzipReader#lines
- *
- * This is a deprecated alias for <code>each_line</code>.
- */
-static VALUE
-rb_gzreader_lines(int argc, VALUE *argv, VALUE obj)
-{
- rb_warn("Zlib::GzipReader#lines is deprecated; use #each_line instead");
- if (!rb_block_given_p())
- return rb_enumeratorize(obj, ID2SYM(rb_intern("each_line")), argc, argv);
- return rb_gzreader_each(argc, argv, obj);
-}
-
-/*
* Document-method: Zlib::GzipReader#readlines
*
* See Zlib::GzipReader documentation for a description.
@@ -4196,6 +3916,89 @@ rb_gzreader_readlines(int argc, VALUE *argv, VALUE obj)
#endif /* GZIP_SUPPORT */
+
+
+/*
+ * Document-module: Zlib
+ *
+ * The Zlib module contains several classes for compressing and decompressing
+ * streams, and for working with "gzip" files.
+ *
+ * == Classes
+ *
+ * Following are the classes that are most likely to be of interest to the
+ * user:
+ * Zlib::Inflate
+ * Zlib::Deflate
+ * Zlib::GzipReader
+ * Zlib::GzipWriter
+ *
+ * There are two important base classes for the classes above: Zlib::ZStream
+ * and Zlib::GzipFile. Everything else is an error class.
+ *
+ * == Constants
+ *
+ * Here's a list.
+ *
+ * Zlib::VERSION
+ * The Ruby/zlib version string.
+ *
+ * Zlib::ZLIB_VERSION
+ * The string which represents the version of zlib.h.
+ *
+ * Zlib::BINARY
+ * Zlib::ASCII
+ * Zlib::UNKNOWN
+ * The integers representing data types which Zlib::ZStream#data_type
+ * method returns.
+ *
+ * Zlib::NO_COMPRESSION
+ * Zlib::BEST_SPEED
+ * Zlib::BEST_COMPRESSION
+ * Zlib::DEFAULT_COMPRESSION
+ * The integers representing compression levels which are an argument
+ * for Zlib::Deflate.new, Zlib::Deflate#deflate, and so on.
+ *
+ * Zlib::FILTERED
+ * Zlib::HUFFMAN_ONLY
+ * Zlib::DEFAULT_STRATEGY
+ * The integers representing compression methods which are an argument
+ * for Zlib::Deflate.new and Zlib::Deflate#params.
+ *
+ * Zlib::DEF_MEM_LEVEL
+ * Zlib::MAX_MEM_LEVEL
+ * The integers representing memory levels which are an argument for
+ * Zlib::Deflate.new, Zlib::Deflate#params, and so on.
+ *
+ * Zlib::MAX_WBITS
+ * The default value of windowBits which is an argument for
+ * Zlib::Deflate.new and Zlib::Inflate.new.
+ *
+ * Zlib::NO_FLUSH
+ * Zlib::SYNC_FLUSH
+ * Zlib::FULL_FLUSH
+ * Zlib::FINISH
+ * The integers to control the output of the deflate stream, which are
+ * an argument for Zlib::Deflate#deflate and so on.
+ *
+ * Zlib::OS_CODE
+ * Zlib::OS_MSDOS
+ * Zlib::OS_AMIGA
+ * Zlib::OS_VMS
+ * Zlib::OS_UNIX
+ * Zlib::OS_VMCMS
+ * Zlib::OS_ATARI
+ * Zlib::OS_OS2
+ * Zlib::OS_MACOS
+ * Zlib::OS_ZSYSTEM
+ * Zlib::OS_CPM
+ * Zlib::OS_TOPS20
+ * Zlib::OS_WIN32
+ * Zlib::OS_QDOS
+ * Zlib::OS_RISCOS
+ * Zlib::OS_UNKNOWN
+ * The return values of Zlib::GzipFile#os_code method.
+ */
void
Init_zlib()
{
@@ -4206,8 +4009,6 @@ Init_zlib()
mZlib = rb_define_module("Zlib");
- id_dictionaries = rb_intern("@dictionaries");
-
cZError = rb_define_class_under(mZlib, "Error", rb_eStandardError);
cStreamEnd = rb_define_class_under(mZlib, "StreamEnd", cZError);
cNeedDict = rb_define_class_under(mZlib, "NeedDict", cZError);
@@ -4249,29 +4050,14 @@ Init_zlib()
rb_define_method(cZStream, "flush_next_in", rb_zstream_flush_next_in, 0);
rb_define_method(cZStream, "flush_next_out", rb_zstream_flush_next_out, 0);
- /* Represents binary data as guessed by deflate.
- *
- * See Zlib::Deflate#data_type. */
+ /* Integer representing date types which
+ * ZStream#data_type method returns */
rb_define_const(mZlib, "BINARY", INT2FIX(Z_BINARY));
-
- /* Represents text data as guessed by deflate.
- *
- * NOTE: The underlying constant Z_ASCII was deprecated in favor of Z_TEXT
- * in zlib 1.2.2. New applications should not use this constant.
- *
- * See Zlib::Deflate#data_type. */
+ /* Integer representing date types which
+ * ZStream#data_type method returns */
rb_define_const(mZlib, "ASCII", INT2FIX(Z_ASCII));
-
-#ifdef Z_TEXT
- /* Represents text data as guessed by deflate.
- *
- * See Zlib::Deflate#data_type. */
- rb_define_const(mZlib, "TEXT", INT2FIX(Z_TEXT));
-#endif
-
- /* Represents an unknown data type as guessed by deflate.
- *
- * See Zlib::Deflate#data_type. */
+ /* Integer representing date types which
+ * ZStream#data_type method returns */
rb_define_const(mZlib, "UNKNOWN", INT2FIX(Z_UNKNOWN));
cDeflate = rb_define_class_under(mZlib, "Deflate", cZStream);
@@ -4291,91 +4077,77 @@ Init_zlib()
rb_define_singleton_method(mZlib, "inflate", rb_inflate_s_inflate, 1);
rb_define_alloc_func(cInflate, rb_inflate_s_allocate);
rb_define_method(cInflate, "initialize", rb_inflate_initialize, -1);
- rb_define_method(cInflate, "add_dictionary", rb_inflate_add_dictionary, 1);
rb_define_method(cInflate, "inflate", rb_inflate_inflate, 1);
rb_define_method(cInflate, "<<", rb_inflate_addstr, 1);
rb_define_method(cInflate, "sync", rb_inflate_sync, 1);
rb_define_method(cInflate, "sync_point?", rb_inflate_sync_point_p, 0);
rb_define_method(cInflate, "set_dictionary", rb_inflate_set_dictionary, 1);
- /* No compression, passes through data untouched. Use this for appending
- * pre-compressed data to a deflate stream.
- */
+ /* compression level 0
+ *
+ * Which is an argument for Deflate.new, Deflate#deflate, and so on. */
rb_define_const(mZlib, "NO_COMPRESSION", INT2FIX(Z_NO_COMPRESSION));
- /* Fastest compression level, but with with lowest space savings. */
+ /* compression level 1
+ *
+ * Which is an argument for Deflate.new, Deflate#deflate, and so on. */
rb_define_const(mZlib, "BEST_SPEED", INT2FIX(Z_BEST_SPEED));
- /* Slowest compression level, but with the best space savings. */
+ /* compression level 9
+ *
+ * Which is an argument for Deflate.new, Deflate#deflate, and so on. */
rb_define_const(mZlib, "BEST_COMPRESSION", INT2FIX(Z_BEST_COMPRESSION));
- /* Default compression level which is a good trade-off between space and
- * time
- */
+ /* compression level -1
+ *
+ * Which is an argument for Deflate.new, Deflate#deflate, and so on. */
rb_define_const(mZlib, "DEFAULT_COMPRESSION",
INT2FIX(Z_DEFAULT_COMPRESSION));
- /* Deflate strategy for data produced by a filter (or predictor). The
- * effect of FILTERED is to force more Huffman codes and less string
- * matching; it is somewhat intermediate between DEFAULT_STRATEGY and
- * HUFFMAN_ONLY. Filtered data consists mostly of small values with a
- * somewhat random distribution.
- */
+ /* compression method 1
+ *
+ * Which is an argument for Deflate.new and Deflate#params. */
rb_define_const(mZlib, "FILTERED", INT2FIX(Z_FILTERED));
-
- /* Deflate strategy which uses Huffman codes only (no string matching). */
+ /* compression method 2
+ *
+ * Which is an argument for Deflate.new and Deflate#params. */
rb_define_const(mZlib, "HUFFMAN_ONLY", INT2FIX(Z_HUFFMAN_ONLY));
-
-#ifdef Z_RLE
- /* Deflate compression strategy designed to be almost as fast as
- * HUFFMAN_ONLY, but give better compression for PNG image data.
- */
- rb_define_const(mZlib, "RLE", INT2FIX(Z_RLE));
-#endif
-
-#ifdef Z_FIXED
- /* Deflate strategy which prevents the use of dynamic Huffman codes,
- * allowing for a simpler decoder for specialized applications.
- */
- rb_define_const(mZlib, "FIXED", INT2FIX(Z_FIXED));
-#endif
-
- /* Default deflate strategy which is used for normal data. */
+ /* compression method 0
+ *
+ * Which is an argument for Deflate.new and Deflate#params. */
rb_define_const(mZlib, "DEFAULT_STRATEGY", INT2FIX(Z_DEFAULT_STRATEGY));
- /* The maximum size of the zlib history buffer. Note that zlib allows
- * larger values to enable different inflate modes. See Zlib::Inflate.new
- * for details.
- */
+ /* The default value of windowBits which is an argument for
+ * Deflate.new and Inflate.new.
+ */
rb_define_const(mZlib, "MAX_WBITS", INT2FIX(MAX_WBITS));
-
- /* The default memory level for allocating zlib deflate compression state.
- */
+ /* Default value is 8
+ *
+ * The integer representing memory levels.
+ * Which are an argument for Deflate.new, Deflate#params, and so on. */
rb_define_const(mZlib, "DEF_MEM_LEVEL", INT2FIX(DEF_MEM_LEVEL));
-
- /* The maximum memory level for allocating zlib deflate compression state.
- */
+ /* Maximum level is 9
+ *
+ * The integers representing memory levels which are an argument for
+ * Deflate.new, Deflate#params, and so on. */
rb_define_const(mZlib, "MAX_MEM_LEVEL", INT2FIX(MAX_MEM_LEVEL));
- /* NO_FLUSH is the default flush method and allows deflate to decide how
- * much data to accumulate before producing output in order to maximize
- * compression.
- */
+ /* Output control - 0
+ *
+ * The integers to control the output of the deflate stream, which are
+ * an argument for Deflate#deflate and so on. */
rb_define_const(mZlib, "NO_FLUSH", INT2FIX(Z_NO_FLUSH));
-
- /* The SYNC_FLUSH method flushes all pending output to the output buffer
- * and the output is aligned on a byte boundary. Flushing may degrade
- * compression so it should be used only when necessary, such as at a
- * request or response boundary for a network stream.
- */
+ /* Output control - 2
+ *
+ * The integers to control the output of the deflate stream, which are
+ * an argument for Deflate#deflate and so on. */
rb_define_const(mZlib, "SYNC_FLUSH", INT2FIX(Z_SYNC_FLUSH));
-
- /* Flushes all output as with SYNC_FLUSH, and the compression state is
- * reset so that decompression can restart from this point if previous
- * compressed data has been damaged or if random access is desired. Like
- * SYNC_FLUSH, using FULL_FLUSH too often can seriously degrade
- * compression.
- */
+ /* Output control - 3
+ *
+ * The integers to control the output of the deflate stream, which are
+ * an argument for Deflate#deflate and so on. */
rb_define_const(mZlib, "FULL_FLUSH", INT2FIX(Z_FULL_FLUSH));
-
- /* Processes all pending input and flushes pending output. */
+ /* Oputput control - 4
+ *
+ * The integers to control the output of the deflate stream, which are
+ * an argument for Deflate#deflate and so on. */
rb_define_const(mZlib, "FINISH", INT2FIX(Z_FINISH));
#if GZIP_SUPPORT
@@ -4453,47 +4225,48 @@ Init_zlib()
rb_define_method(cGzipReader, "readbyte", rb_gzreader_readbyte, 0);
rb_define_method(cGzipReader, "each_byte", rb_gzreader_each_byte, 0);
rb_define_method(cGzipReader, "each_char", rb_gzreader_each_char, 0);
- rb_define_method(cGzipReader, "bytes", rb_gzreader_bytes, 0);
+ rb_define_method(cGzipReader, "bytes", rb_gzreader_each_byte, 0);
rb_define_method(cGzipReader, "ungetc", rb_gzreader_ungetc, 1);
rb_define_method(cGzipReader, "ungetbyte", rb_gzreader_ungetbyte, 1);
rb_define_method(cGzipReader, "gets", rb_gzreader_gets, -1);
rb_define_method(cGzipReader, "readline", rb_gzreader_readline, -1);
rb_define_method(cGzipReader, "each", rb_gzreader_each, -1);
rb_define_method(cGzipReader, "each_line", rb_gzreader_each, -1);
- rb_define_method(cGzipReader, "lines", rb_gzreader_lines, -1);
+ rb_define_method(cGzipReader, "lines", rb_gzreader_each, -1);
rb_define_method(cGzipReader, "readlines", rb_gzreader_readlines, -1);
- /* The OS code of current host */
+ /* From GzipFile#os_code - code of current host */
rb_define_const(mZlib, "OS_CODE", INT2FIX(OS_CODE));
- /* OS code for MSDOS hosts */
+ /* From GzipFile#os_code - 0x00 */
rb_define_const(mZlib, "OS_MSDOS", INT2FIX(OS_MSDOS));
- /* OS code for Amiga hosts */
+ /* From GzipFile#os_code - 0x01 */
rb_define_const(mZlib, "OS_AMIGA", INT2FIX(OS_AMIGA));
- /* OS code for VMS hosts */
+ /* From GzipFile#os_code - 0x02 */
rb_define_const(mZlib, "OS_VMS", INT2FIX(OS_VMS));
- /* OS code for UNIX hosts */
+ /* From GzipFile#os_code - 0x03 */
rb_define_const(mZlib, "OS_UNIX", INT2FIX(OS_UNIX));
- /* OS code for Atari hosts */
+ /* From GzipFile#os_code - 0x05 */
rb_define_const(mZlib, "OS_ATARI", INT2FIX(OS_ATARI));
- /* OS code for OS2 hosts */
+ /* From GzipFile#os_code - 0x06 */
rb_define_const(mZlib, "OS_OS2", INT2FIX(OS_OS2));
- /* OS code for Mac OS hosts */
+ /* From GzipFile#os_code - 0x07 */
rb_define_const(mZlib, "OS_MACOS", INT2FIX(OS_MACOS));
- /* OS code for TOPS-20 hosts */
+ /* From GzipFile#os_code - 0x0a */
rb_define_const(mZlib, "OS_TOPS20", INT2FIX(OS_TOPS20));
- /* OS code for Win32 hosts */
+ /* From GzipFile#os_code - 0x0b */
rb_define_const(mZlib, "OS_WIN32", INT2FIX(OS_WIN32));
- /* OS code for VM OS hosts */
+
+ /* From GzipFile#os_code - 0x04 */
rb_define_const(mZlib, "OS_VMCMS", INT2FIX(OS_VMCMS));
- /* OS code for Z-System hosts */
+ /* From GzipFile#os_code - 0x08 */
rb_define_const(mZlib, "OS_ZSYSTEM", INT2FIX(OS_ZSYSTEM));
- /* OS code for CP/M hosts */
+ /* From GzipFile#os_code - 0x09 */
rb_define_const(mZlib, "OS_CPM", INT2FIX(OS_CPM));
- /* OS code for QDOS hosts */
+ /* From GzipFile#os_code - 0x0c */
rb_define_const(mZlib, "OS_QDOS", INT2FIX(OS_QDOS));
- /* OS code for RISC OS hosts */
+ /* From GzipFile#os_code - 0x0d */
rb_define_const(mZlib, "OS_RISCOS", INT2FIX(OS_RISCOS));
- /* OS code for unknown hosts */
+ /* From GzipFile#os_code - 0xff */
rb_define_const(mZlib, "OS_UNKNOWN", INT2FIX(OS_UNKNOWN));
#endif /* GZIP_SUPPORT */
diff --git a/file.c b/file.c
index 96544766a9..386a8fbe47 100644
--- a/file.c
+++ b/file.c
@@ -17,7 +17,6 @@
#ifdef __CYGWIN__
#include <windows.h>
#include <sys/cygwin.h>
-#include <wchar.h>
#endif
#include "ruby/ruby.h"
@@ -60,13 +59,6 @@ int flock(int, int);
#include <sys/types.h>
#include <sys/stat.h>
-#if defined(__native_client__) && defined(NACL_NEWLIB)
-# include "nacl/utime.h"
-# include "nacl/stat.h"
-# include "nacl/unistd.h"
-#endif
-
-
#ifdef HAVE_SYS_MKDEV_H
#include <sys/mkdev.h>
#endif
@@ -75,10 +67,6 @@ int flock(int, int);
#include <fcntl.h>
#endif
-#if defined(HAVE_SYS_TIME_H)
-#include <sys/time.h>
-#endif
-
#if !defined HAVE_LSTAT && !defined lstat
#define lstat stat
#endif
@@ -160,60 +148,40 @@ file_path_convert(VALUE name)
return name;
}
-static rb_encoding *
-check_path_encoding(VALUE str)
-{
- rb_encoding *enc = rb_enc_get(str);
- if (!rb_enc_asciicompat(enc)) {
- rb_raise(rb_eEncCompatError, "path name must be ASCII-compatible (%s): %"PRIsVALUE,
- rb_enc_name(enc), rb_str_inspect(str));
- }
- return enc;
-}
-
-VALUE
-rb_get_path_check_to_string(VALUE obj, int level)
+static VALUE
+rb_get_path_check(VALUE obj, int level)
{
VALUE tmp;
ID to_path;
+ rb_encoding *enc;
if (insecure_obj_p(obj, level)) {
rb_insecure_operation();
}
- if (RB_TYPE_P(obj, T_STRING)) {
- return obj;
- }
CONST_ID(to_path, "to_path");
tmp = rb_check_funcall(obj, to_path, 0, 0);
if (tmp == Qundef) {
tmp = obj;
}
StringValue(tmp);
- return tmp;
-}
-VALUE
-rb_get_path_check_convert(VALUE obj, VALUE tmp, int level)
-{
tmp = file_path_convert(tmp);
if (obj != tmp && insecure_obj_p(tmp, level)) {
rb_insecure_operation();
}
+ enc = rb_enc_get(tmp);
+ if (!rb_enc_asciicompat(enc)) {
+ tmp = rb_str_inspect(tmp);
+ rb_raise(rb_eEncCompatError, "path name must be ASCII-compatible (%s): %s",
+ rb_enc_name(enc), RSTRING_PTR(tmp));
+ }
- check_path_encoding(tmp);
StringValueCStr(tmp);
return rb_str_new4(tmp);
}
-static VALUE
-rb_get_path_check(VALUE obj, int level)
-{
- VALUE tmp = rb_get_path_check_to_string(obj, level);
- return rb_get_path_check_convert(obj, tmp, level);
-}
-
VALUE
rb_get_path_no_checksafe(VALUE obj)
{
@@ -330,10 +298,8 @@ static struct timespec stat_mtimespec(struct stat *st);
* call-seq:
* stat <=> other_stat -> -1, 0, 1, nil
*
- * Compares File::Stat objects by comparing their respective modification
- * times.
- *
- * +nil+ is returned if the two values are incomparable.
+ * Compares <code>File::Stat</code> objects by comparing their
+ * respective modification times.
*
* f1 = File.new("f1", "w")
* sleep 1
@@ -886,7 +852,8 @@ w32_io_info(VALUE *file, BY_HANDLE_FILE_INFORMATION *st)
MultiByteToWideChar(CP_UTF8, 0, RSTRING_PTR(tmp), -1, ptr, len);
f = CreateFileW(ptr, 0,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
- FILE_FLAG_BACKUP_SEMANTICS, NULL);
+ rb_w32_iswin95() ? 0 : FILE_FLAG_BACKUP_SEMANTICS,
+ NULL);
ALLOCV_END(v);
if (f == INVALID_HANDLE_VALUE) return f;
ret = f;
@@ -1022,48 +989,36 @@ rb_file_lstat(VALUE obj)
static int
rb_group_member(GETGROUPS_T gid)
{
-#ifdef _WIN32
- return FALSE;
-#else
int rv = FALSE;
- int groups = 16;
- VALUE v = 0;
- GETGROUPS_T *gary;
- int anum;
-
+#ifndef _WIN32
if (getgid() == gid || getegid() == gid)
return TRUE;
- /*
- * On Mac OS X (Mountain Lion), NGROUPS is 16. But libc and kernel
- * accept more larger value.
- * So we don't trunk NGROUPS anymore.
- */
- while (groups <= RB_MAX_GROUPS) {
- gary = ALLOCV_N(GETGROUPS_T, v, groups);
- anum = getgroups(groups, gary);
- if (anum != -1 && anum != groups)
- break;
- groups *= 2;
- if (v) {
- ALLOCV_END(v);
- v = 0;
- }
- }
- if (anum == -1)
- return FALSE;
-
- while (--anum >= 0) {
- if (gary[anum] == gid) {
- rv = TRUE;
- break;
+# ifdef HAVE_GETGROUPS
+# ifndef NGROUPS
+# ifdef NGROUPS_MAX
+# define NGROUPS NGROUPS_MAX
+# else
+# define NGROUPS 32
+# endif
+# endif
+ {
+ GETGROUPS_T *gary;
+ int anum;
+
+ gary = xmalloc(NGROUPS * sizeof(GETGROUPS_T));
+ anum = getgroups(NGROUPS, gary);
+ while (--anum >= 0) {
+ if (gary[anum] == gid) {
+ rv = TRUE;
+ break;
+ }
}
+ xfree(gary);
}
- if (v)
- ALLOCV_END(v);
-
- return rv;
+# endif
#endif
+ return rv;
}
#ifndef S_IXUGO
@@ -1114,6 +1069,12 @@ eaccess(const char *path, int mode)
}
#endif
+static inline int
+access_internal(const char *path, int mode)
+{
+ return access(path, mode);
+}
+
/*
* Document-class: FileTest
@@ -1126,6 +1087,18 @@ eaccess(const char *path, int mode)
*/
/*
+ * Document-method: exist?
+ *
+ * call-seq:
+ * Dir.exist?(file_name) -> true or false
+ * Dir.exists?(file_name) -> true or false
+ *
+ * Returns <code>true</code> if the named file is a directory,
+ * <code>false</code> otherwise.
+ *
+ */
+
+/*
* Document-method: directory?
*
* call-seq:
@@ -1135,8 +1108,6 @@ eaccess(const char *path, int mode)
* or a symlink that points at a directory, and <code>false</code>
* otherwise.
*
- * _file_name_ can be an IO object.
- *
* File.directory?(".")
*/
@@ -1159,8 +1130,6 @@ rb_file_directory_p(VALUE obj, VALUE fname)
* File.pipe?(file_name) -> true or false
*
* Returns <code>true</code> if the named file is a pipe.
- *
- * _file_name_ can be an IO object.
*/
static VALUE
@@ -1222,8 +1191,6 @@ rb_file_symlink_p(VALUE obj, VALUE fname)
* File.socket?(file_name) -> true or false
*
* Returns <code>true</code> if the named file is a socket.
- *
- * _file_name_ can be an IO object.
*/
static VALUE
@@ -1258,8 +1225,6 @@ rb_file_socket_p(VALUE obj, VALUE fname)
* File.blockdev?(file_name) -> true or false
*
* Returns <code>true</code> if the named file is a block device.
- *
- * _file_name_ can be an IO object.
*/
static VALUE
@@ -1288,8 +1253,6 @@ rb_file_blockdev_p(VALUE obj, VALUE fname)
* File.chardev?(file_name) -> true or false
*
* Returns <code>true</code> if the named file is a character device.
- *
- * _file_name_ can be an IO object.
*/
static VALUE
rb_file_chardev_p(VALUE obj, VALUE fname)
@@ -1312,10 +1275,6 @@ rb_file_chardev_p(VALUE obj, VALUE fname)
* File.exists?(file_name) -> true or false
*
* Return <code>true</code> if the named file exists.
- *
- * _file_name_ can be an IO object.
- *
- * "file exists" means that stat() or fstat() system call is successful.
*/
static VALUE
@@ -1359,7 +1318,7 @@ rb_file_readable_real_p(VALUE obj, VALUE fname)
rb_secure(2);
FilePathValue(fname);
fname = rb_str_encode_ospath(fname);
- if (access(StringValueCStr(fname), R_OK) < 0) return Qfalse;
+ if (access_internal(StringValueCStr(fname), R_OK) < 0) return Qfalse;
return Qtrue;
}
@@ -1380,8 +1339,6 @@ rb_file_readable_real_p(VALUE obj, VALUE fname)
* <code>nil</code> otherwise. The meaning of the bits is platform
* dependent; on Unix systems, see <code>stat(2)</code>.
*
- * _file_name_ can be an IO object.
- *
* File.world_readable?("/etc/passwd") #=> 420
* m = File.world_readable?("/etc/passwd")
* sprintf("%o", m) #=> "644"
@@ -1433,7 +1390,7 @@ rb_file_writable_real_p(VALUE obj, VALUE fname)
rb_secure(2);
FilePathValue(fname);
fname = rb_str_encode_ospath(fname);
- if (access(StringValueCStr(fname), W_OK) < 0) return Qfalse;
+ if (access_internal(StringValueCStr(fname), W_OK) < 0) return Qfalse;
return Qtrue;
}
@@ -1446,8 +1403,6 @@ rb_file_writable_real_p(VALUE obj, VALUE fname)
* <code>nil</code> otherwise. The meaning of the bits is platform
* dependent; on Unix systems, see <code>stat(2)</code>.
*
- * _file_name_ can be an IO object.
- *
* File.world_writable?("/tmp") #=> 511
* m = File.world_writable?("/tmp")
* sprintf("%o", m) #=> "777"
@@ -1499,7 +1454,7 @@ rb_file_executable_real_p(VALUE obj, VALUE fname)
rb_secure(2);
FilePathValue(fname);
fname = rb_str_encode_ospath(fname);
- if (access(StringValueCStr(fname), X_OK) < 0) return Qfalse;
+ if (access_internal(StringValueCStr(fname), X_OK) < 0) return Qfalse;
return Qtrue;
}
@@ -1513,8 +1468,6 @@ rb_file_executable_real_p(VALUE obj, VALUE fname)
*
* Returns <code>true</code> if the named file exists and is a
* regular file.
- *
- * _file_name_ can be an IO object.
*/
static VALUE
@@ -1533,8 +1486,6 @@ rb_file_file_p(VALUE obj, VALUE fname)
*
* Returns <code>true</code> if the named file exists and has
* a zero size.
- *
- * _file_name_ can be an IO object.
*/
static VALUE
@@ -1553,8 +1504,6 @@ rb_file_zero_p(VALUE obj, VALUE fname)
*
* Returns +nil+ if +file_name+ doesn't exist or has zero size, the size of the
* file otherwise.
- *
- * _file_name_ can be an IO object.
*/
static VALUE
@@ -1574,8 +1523,6 @@ rb_file_size_p(VALUE obj, VALUE fname)
* Returns <code>true</code> if the named file exists and the
* effective used id of the calling process is the owner of
* the file.
- *
- * _file_name_ can be an IO object.
*/
static VALUE
@@ -1605,8 +1552,6 @@ rb_file_rowned_p(VALUE obj, VALUE fname)
* Returns <code>true</code> if the named file exists and the
* effective group id of the calling process is the owner of
* the file. Returns <code>false</code> on Windows.
- *
- * _file_name_ can be an IO object.
*/
static VALUE
@@ -1693,8 +1638,6 @@ rb_file_sticky_p(VALUE obj, VALUE fname)
*
* Returns <code>true</code> if the named files are identical.
*
- * _file_1_ and _file_2_ can be an IO object.
- *
* open("a", "w") {}
* p File.identical?("a", "a") #=> true
* p File.identical?("a", "./a") #=> true
@@ -1736,6 +1679,7 @@ rb_file_identical_p(VALUE obj, VALUE fname1, VALUE fname2)
st1.nFileIndexLow == st2.nFileIndexLow)
return Qtrue;
if (!f1 || !f2) return Qfalse;
+ if (rb_w32_iswin95()) return Qfalse;
# else
FilePathValue(fname1);
fname1 = rb_str_new4(fname1);
@@ -1759,8 +1703,6 @@ rb_file_identical_p(VALUE obj, VALUE fname1, VALUE fname2)
* File.size(file_name) -> integer
*
* Returns the size of <code>file_name</code>.
- *
- * _file_name_ can be an IO object.
*/
static VALUE
@@ -1852,8 +1794,6 @@ rb_file_s_ftype(VALUE klass, VALUE fname)
*
* Returns the last access time for the named file as a Time object).
*
- * _file_name_ can be an IO object.
- *
* File.atime("testfile") #=> Wed Apr 09 08:51:48 CDT 2003
*
*/
@@ -1900,8 +1840,6 @@ rb_file_atime(VALUE obj)
*
* Returns the modification time for the named file as a Time object.
*
- * _file_name_ can be an IO object.
- *
* File.mtime("testfile") #=> Tue Apr 08 12:58:04 CDT 2003
*
*/
@@ -1949,8 +1887,6 @@ rb_file_mtime(VALUE obj)
* directory information about the file was changed, not the file
* itself).
*
- * _file_name_ can be an IO object.
- *
* Note that on Windows (NTFS), returns creation time (birth time).
*
* File.ctime("testfile") #=> Wed Apr 09 08:53:13 CDT 2003
@@ -2238,7 +2174,7 @@ lchown_internal(const char *path, VALUE pathv, void *arg)
/*
* call-seq:
- * File.lchown(owner_int, group_int, file_name,..) -> integer
+ * file.lchown(owner_int, group_int, file_name,..) -> integer
*
* Equivalent to <code>File::chown</code>, but does not follow symbolic
* links (so it will change the owner associated with the link, not the
@@ -2516,6 +2452,7 @@ rb_file_s_readlink(VALUE klass, VALUE path)
static VALUE
rb_readlink(VALUE path)
{
+ char *buf;
int size = 100;
ssize_t rv;
VALUE v;
@@ -2523,21 +2460,21 @@ rb_readlink(VALUE path)
rb_secure(2);
FilePathValue(path);
path = rb_str_encode_ospath(path);
- v = rb_enc_str_new(0, size, rb_filesystem_encoding());
- while ((rv = readlink(RSTRING_PTR(path), RSTRING_PTR(v), size)) == size
+ buf = xmalloc(size);
+ while ((rv = readlink(RSTRING_PTR(path), buf, size)) == size
#ifdef _AIX
|| (rv < 0 && errno == ERANGE) /* quirky behavior of GPFS */
#endif
) {
- rb_str_modify_expand(v, size);
size *= 2;
- rb_str_set_len(v, size);
+ buf = xrealloc(buf, size);
}
if (rv < 0) {
- rb_str_resize(v, 0);
+ xfree(buf);
rb_sys_fail_path(path);
}
- rb_str_resize(v, rv);
+ v = rb_filesystem_str_new(buf, rv);
+ xfree(buf);
return v;
}
@@ -2646,7 +2583,7 @@ rb_file_s_umask(int argc, VALUE *argv)
omask = umask(NUM2INT(argv[0]));
}
else {
- rb_check_arity(argc, 0, 1);
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for 0..1)", argc);
}
return INT2FIX(omask);
}
@@ -2701,7 +2638,6 @@ has_drive_letter(const char *buf)
}
}
-#ifndef _WIN32
static char*
getcwdofdrv(int drv)
{
@@ -2728,7 +2664,6 @@ getcwdofdrv(int drv)
}
return drvcwd;
}
-#endif
static inline int
not_same_drive(VALUE path, int drive)
@@ -3262,7 +3197,7 @@ rb_file_expand_path_internal(VALUE fname, VALUE dname, int abs_mode, int long_na
len = lstrlenW(wfd.cFileName);
#ifdef __CYGWIN__
if (lnk_added && len > 4 &&
- wcscasecmp(wfd.cFileName + len - 4, L".lnk") == 0) {
+ wcsicmp(wfd.cFileName + len - 4, L".lnk") == 0) {
wfd.cFileName[len -= 4] = L'\0';
}
#else
@@ -3299,17 +3234,7 @@ rb_file_expand_path_internal(VALUE fname, VALUE dname, int abs_mode, int long_na
}
#endif /* _WIN32 */
-#define EXPAND_PATH_BUFFER() rb_usascii_str_new(0, MAXPATHLEN + 2)
-
-static VALUE
-str_shrink(VALUE str)
-{
- rb_str_resize(str, RSTRING_LEN(str));
- return str;
-}
-
-#define expand_path(fname, dname, abs_mode, long_name, result) \
- str_shrink(rb_file_expand_path_internal(fname, dname, abs_mode, long_name, result))
+#define EXPAND_PATH_BUFFER() rb_enc_str_new(0, MAXPATHLEN + 2, rb_filesystem_encoding())
#define check_expand_path_args(fname, dname) \
(((fname) = rb_get_path(fname)), \
@@ -3325,13 +3250,14 @@ VALUE
rb_file_expand_path(VALUE fname, VALUE dname)
{
check_expand_path_args(fname, dname);
- return expand_path(fname, dname, 0, 1, EXPAND_PATH_BUFFER());
+ return rb_file_expand_path_internal(fname, dname, 0, 1, EXPAND_PATH_BUFFER());
}
VALUE
rb_file_expand_path_fast(VALUE fname, VALUE dname)
{
- return expand_path(fname, dname, 0, 0, EXPAND_PATH_BUFFER());
+ check_expand_path_args(fname, dname);
+ return rb_file_expand_path_internal(fname, dname, 0, 0, EXPAND_PATH_BUFFER());
}
/*
@@ -3368,7 +3294,7 @@ VALUE
rb_file_absolute_path(VALUE fname, VALUE dname)
{
check_expand_path_args(fname, dname);
- return expand_path(fname, dname, 1, 1, EXPAND_PATH_BUFFER());
+ return rb_file_expand_path_internal(fname, dname, 1, 1, EXPAND_PATH_BUFFER());
}
/*
@@ -3428,13 +3354,6 @@ realpath_rec(long *prefixlenp, VALUE *resolvedp, const char *unresolved, VALUE l
VALUE testpath = rb_str_dup(*resolvedp);
if (*prefixlenp < RSTRING_LEN(testpath))
rb_str_cat2(testpath, "/");
-#if defined(DOSISH_UNC) || defined(DOSISH_DRIVE_LETTER)
- if (*prefixlenp > 1 && *prefixlenp == RSTRING_LEN(testpath)) {
- const char *prefix = RSTRING_PTR(testpath);
- const char *last = rb_enc_left_char_head(prefix, prefix + *prefixlenp - 1, prefix + *prefixlenp, enc);
- if (!isdirsep(*last)) rb_str_cat2(testpath, "/");
- }
-#endif
rb_str_cat(testpath, testname, testnamelen);
checkval = rb_hash_aref(loopcheck, testpath);
if (!NIL_P(checkval)) {
@@ -3450,11 +3369,7 @@ realpath_rec(long *prefixlenp, VALUE *resolvedp, const char *unresolved, VALUE l
struct stat sbuf;
int ret;
VALUE testpath2 = rb_str_encode_ospath(testpath);
-#ifdef __native_client__
- ret = stat(RSTRING_PTR(testpath2), &sbuf);
-#else
ret = lstat(RSTRING_PTR(testpath2), &sbuf);
-#endif
if (ret == -1) {
if (errno == ENOENT) {
if (strict || !last || *unresolved_firstsep)
@@ -3469,7 +3384,6 @@ realpath_rec(long *prefixlenp, VALUE *resolvedp, const char *unresolved, VALUE l
#ifdef HAVE_READLINK
if (S_ISLNK(sbuf.st_mode)) {
VALUE link;
- volatile VALUE link_orig = Qnil;
const char *link_prefix, *link_names;
long link_prefixlen;
rb_hash_aset(loopcheck, testpath, ID2SYM(resolving));
@@ -3479,7 +3393,6 @@ realpath_rec(long *prefixlenp, VALUE *resolvedp, const char *unresolved, VALUE l
link_prefixlen = link_names - link_prefix;
if (link_prefixlen > 0) {
rb_encoding *enc, *linkenc = rb_enc_get(link);
- link_orig = link;
link = rb_str_subseq(link, 0, link_prefixlen);
enc = rb_enc_check(*resolvedp, link);
if (enc != linkenc) link = rb_str_conv_enc(link, linkenc, enc);
@@ -3487,7 +3400,6 @@ realpath_rec(long *prefixlenp, VALUE *resolvedp, const char *unresolved, VALUE l
*prefixlenp = link_prefixlen;
}
realpath_rec(prefixlenp, resolvedp, link_names, loopcheck, strict, *unresolved_firstsep == '\0');
- RB_GC_GUARD(link_orig);
rb_hash_aset(loopcheck, testpath, rb_str_dup_frozen(*resolvedp));
}
else
@@ -3502,13 +3414,6 @@ realpath_rec(long *prefixlenp, VALUE *resolvedp, const char *unresolved, VALUE l
}
}
-#ifdef __native_client__
-VALUE
-rb_realpath_internal(VALUE basedir, VALUE path, int strict)
-{
- return path;
-}
-#else
VALUE
rb_realpath_internal(VALUE basedir, VALUE path, int strict)
{
@@ -3582,7 +3487,6 @@ rb_realpath_internal(VALUE basedir, VALUE path, int strict)
OBJ_TAINT(resolved);
return resolved;
}
-#endif
/*
* call-seq:
@@ -3670,7 +3574,7 @@ ruby_enc_find_basename(const char *name, long *baselen, long *alllen, rb_encodin
#endif
long f = 0, n = -1;
- end = name + (alllen ? (size_t)*alllen : strlen(name));
+ end = name + *alllen;
name = skipprefix(name, end, enc);
#if defined DOSISH_DRIVE_LETTER || defined DOSISH_UNC
root = name;
@@ -3729,9 +3633,8 @@ ruby_enc_find_basename(const char *name, long *baselen, long *alllen, rb_encodin
* File.basename(file_name [, suffix] ) -> base_name
*
* Returns the last component of the filename given in <i>file_name</i>,
- * which can be formed using both <code>File::SEPARATOR</code> and
- * <code>File::ALT_SEPARETOR</code> as the separator when
- * <code>File::ALT_SEPARATOR</code> is not <code>nil</code>. If
+ * which must be formed using forward slashes (``<code>/</code>'')
+ * regardless of the separator used on the local file system. If
* <i>suffix</i> is given and present at the end of <i>file_name</i>,
* it is removed.
*
@@ -3748,14 +3651,16 @@ rb_file_s_basename(int argc, VALUE *argv)
rb_encoding *enc;
if (rb_scan_args(argc, argv, "11", &fname, &fext) == 2) {
+ rb_encoding *enc;
StringValue(fext);
- enc = check_path_encoding(fext);
+ if (!rb_enc_asciicompat(enc = rb_enc_get(fext))) {
+ rb_raise(rb_eEncCompatError, "ascii incompatible character encodings: %s",
+ rb_enc_name(enc));
+ }
}
FilePathStringValue(fname);
- if (NIL_P(fext) || !(enc = rb_enc_compatible(fname, fext))) {
- enc = rb_enc_get(fname);
- fext = Qnil;
- }
+ if (!NIL_P(fext)) enc = rb_enc_check(fname, fext);
+ else enc = rb_enc_get(fname);
if ((n = RSTRING_LEN(fname)) == 0 || !*(name = RSTRING_PTR(fname)))
return rb_str_new_shared(fname);
@@ -3765,7 +3670,12 @@ rb_file_s_basename(int argc, VALUE *argv)
f = n;
}
else {
+ rb_encoding *fenc = rb_enc_get(fext);
const char *fp;
+ if (enc != fenc &&
+ rb_enc_str_coderange(fext) != ENC_CODERANGE_7BIT) {
+ fext = rb_str_conv_enc(fext, fenc, enc);
+ }
fp = StringValueCStr(fext);
if (!(f = rmext(p, f, n, fp, RSTRING_LEN(fext), enc))) {
f = n;
@@ -3783,12 +3693,12 @@ rb_file_s_basename(int argc, VALUE *argv)
/*
* call-seq:
- * File.dirname(file_name) -> dir_name
+ * File.dirname(file_name ) -> dir_name
*
* Returns all components of the filename given in <i>file_name</i>
- * except the last one. The filename can be formed using both
- * <code>File::SEPARATOR</code> and <code>File::ALT_SEPARETOR</code> as the
- * separator when <code>File::ALT_SEPARATOR</code> is not <code>nil</code>.
+ * except the last one. The filename must be formed using forward
+ * slashes (``<code>/</code>'') regardless of the separator used on the
+ * local file system.
*
* File.dirname("/home/gumby/work/ruby.rb") #=> "/home/gumby/work"
*/
@@ -3911,21 +3821,13 @@ ruby_enc_find_extname(const char *name, long *len, rb_encoding *enc)
* call-seq:
* File.extname(path) -> string
*
- * Returns the extension (the portion of file name in +path+
- * starting from the last period).
- *
- * If +path+ is a dotfile, or starts with a period, then the starting
- * dot is not dealt with the start of the extension.
- *
- * An empty string will also be returned when the period is the last character
- * in +path+.
+ * Returns the extension (the portion of file name in <i>path</i>
+ * after the period).
*
* File.extname("test.rb") #=> ".rb"
* File.extname("a/b/d/test.rb") #=> ".rb"
- * File.extname("foo.") #=> ""
* File.extname("test") #=> ""
* File.extname(".profile") #=> ""
- * File.extname(".profile.sh") #=> ".sh"
*
*/
@@ -4000,8 +3902,6 @@ rb_file_join(VALUE ary, VALUE sep)
long len, i;
VALUE result, tmp;
const char *name, *tail;
- int checked = TRUE;
- rb_encoding *enc;
if (RARRAY_LEN(ary) == 0) return rb_str_new(0, 0);
@@ -4009,7 +3909,6 @@ rb_file_join(VALUE ary, VALUE sep)
for (i=0; i<RARRAY_LEN(ary); i++) {
tmp = RARRAY_PTR(ary)[i];
if (RB_TYPE_P(tmp, T_STRING)) {
- check_path_encoding(tmp);
len += RSTRING_LEN(tmp);
}
else {
@@ -4018,17 +3917,14 @@ rb_file_join(VALUE ary, VALUE sep)
}
if (!NIL_P(sep)) {
StringValue(sep);
- len += RSTRING_LEN(sep) * (RARRAY_LEN(ary) - 1);
+ len += RSTRING_LEN(sep) * RARRAY_LEN(ary) - 1;
}
result = rb_str_buf_new(len);
- RBASIC(result)->klass = 0;
OBJ_INFECT(result, ary);
for (i=0; i<RARRAY_LEN(ary); i++) {
tmp = RARRAY_PTR(ary)[i];
switch (TYPE(tmp)) {
case T_STRING:
- if (!checked) check_path_encoding(tmp);
- StringValueCStr(tmp);
break;
case T_ARRAY:
if (ary == tmp) {
@@ -4044,9 +3940,9 @@ rb_file_join(VALUE ary, VALUE sep)
break;
default:
FilePathStringValue(tmp);
- checked = FALSE;
}
- RSTRING_GETMEM(result, name, len);
+ name = StringValueCStr(result);
+ len = RSTRING_LEN(result);
if (i == 0) {
rb_enc_copy(result, tmp);
}
@@ -4056,16 +3952,11 @@ rb_file_join(VALUE ary, VALUE sep)
rb_str_set_len(result, tail - name);
}
else if (!*tail) {
- enc = rb_enc_check(result, sep);
rb_str_buf_append(result, sep);
- rb_enc_associate(result, enc);
}
}
- enc = rb_enc_check(result, tmp);
rb_str_buf_append(result, tmp);
- rb_enc_associate(result, enc);
}
- RBASIC(result)->klass = rb_cString;
return result;
}
@@ -4119,7 +4010,7 @@ rb_file_s_truncate(VALUE klass, VALUE path, VALUE len)
{
int tmpfd;
- if ((tmpfd = rb_cloexec_open(StringValueCStr(path), 0, 0)) < 0) {
+ if ((tmpfd = open(StringValueCStr(path), 0)) < 0) {
rb_sys_fail_path(path);
}
rb_update_max_fd(tmpfd);
@@ -4192,6 +4083,7 @@ rb_file_truncate(VALUE obj, VALUE len)
#ifdef __CYGWIN__
#include <winerror.h>
+extern unsigned long __attribute__((stdcall)) GetLastError(void);
#endif
static VALUE
@@ -4213,7 +4105,7 @@ rb_thread_flock(void *data)
/*
* call-seq:
- * file.flock(locking_constant) -> 0 or false
+ * file.flock (locking_constant )-> 0 or false
*
* Locks or unlocks a file according to <i>locking_constant</i> (a
* logical <em>or</em> of the values in the table below).
@@ -4260,7 +4152,6 @@ rb_file_flock(VALUE obj, VALUE operation)
{
rb_io_t *fptr;
int op[2], op1;
- struct timeval time;
rb_secure(2);
op[1] = op1 = NUM2INT(operation);
@@ -4278,10 +4169,7 @@ rb_file_flock(VALUE obj, VALUE operation)
case EWOULDBLOCK:
#endif
if (op1 & LOCK_NB) return Qfalse;
-
- time.tv_sec = 0;
- time.tv_usec = 100 * 1000; /* 0.1 sec */
- rb_thread_wait_for(time);
+ rb_thread_polling();
rb_io_check_closed(fptr);
continue;
@@ -4306,10 +4194,15 @@ test_check(int n, int argc, VALUE *argv)
rb_secure(2);
n+=1;
- rb_check_arity(argc, n, n);
+ if (n != argc) rb_raise(rb_eArgError, "wrong number of arguments (%d for %d)", argc, n);
for (i=1; i<n; i++) {
- if (!RB_TYPE_P(argv[i], T_FILE)) {
+ switch (TYPE(argv[i])) {
+ case T_STRING:
+ default:
FilePathValue(argv[i]);
+ break;
+ case T_FILE:
+ break;
}
}
}
@@ -4318,14 +4211,15 @@ test_check(int n, int argc, VALUE *argv)
/*
* call-seq:
- * test(cmd, file1 [, file2] ) -> obj
+ * test(int_cmd, file1 [, file2] ) -> obj
*
- * Uses the integer +cmd+ to perform various tests on +file1+ (first
- * table below) or on +file1+ and +file2+ (second table).
+ * Uses the integer <i>aCmd</i> to perform various tests on
+ * <i>file1</i> (first table below) or on <i>file1</i> and
+ * <i>file2</i> (second table).
*
* File tests on a single file:
*
- * Cmd Returns Meaning
+ * Test Returns Meaning
* "A" | Time | Last access time for file1
* "b" | boolean | True if file1 is a block device
* "c" | boolean | True if file1 is a character device
@@ -4363,7 +4257,7 @@ test_check(int n, int argc, VALUE *argv)
* | | the real uid/gid
* "z" | boolean | True if file1 exists and has a zero length
*
- * Tests that take two files:
+ * Tests that take two files:
*
* "-" | boolean | True if file1 and file2 are identical
* "=" | boolean | True if the modification times of file1
@@ -4379,18 +4273,9 @@ rb_f_test(int argc, VALUE *argv)
{
int cmd;
- if (argc == 0) rb_check_arity(argc, 2, 3);
+ if (argc == 0) rb_raise(rb_eArgError, "wrong number of arguments (0 for 2..3)");
cmd = NUM2CHR(argv[0]);
- if (cmd == 0) {
- unknown:
- /* unknown command */
- if (ISPRINT(cmd)) {
- rb_raise(rb_eArgError, "unknown command '%s%c'", cmd == '\'' || cmd == '\\' ? "\\" : "", cmd);
- }
- else {
- rb_raise(rb_eArgError, "unknown command \"\\x%02X\"", cmd);
- }
- }
+ if (cmd == 0) goto unknown;
if (strchr("bcdefgGkloOprRsSuwWxXz", cmd)) {
CHECK(1);
switch (cmd) {
@@ -4509,7 +4394,15 @@ rb_f_test(int argc, VALUE *argv)
return Qfalse;
}
}
- goto unknown;
+ unknown:
+ /* unknown command */
+ if (ISPRINT(cmd)) {
+ rb_raise(rb_eArgError, "unknown command '%s%c'", cmd == '\'' || cmd == '\\' ? "\\" : "", cmd);
+ }
+ else {
+ rb_raise(rb_eArgError, "unknown command \"\\x%02X\"", cmd);
+ }
+ return Qnil; /* not reached */
}
@@ -4570,7 +4463,12 @@ rb_stat_init_copy(VALUE copy, VALUE orig)
{
struct stat *nst;
- if (!OBJ_INIT_COPY(copy, orig)) return copy;
+ if (copy == orig) return orig;
+ rb_check_frozen(copy);
+ /* need better argument type check */
+ if (!rb_obj_is_instance_of(orig, rb_obj_class(copy))) {
+ rb_raise(rb_eTypeError, "wrong argument class");
+ }
if (DATA_PTR(copy)) {
xfree(DATA_PTR(copy));
DATA_PTR(copy) = 0;
@@ -5263,14 +5161,11 @@ rb_path_check(const char *path)
}
#ifndef _WIN32
-#ifdef __native_client__
-__attribute__((noinline))
-#endif
int
rb_file_load_ok(const char *path)
{
int ret = 1;
- int fd = rb_cloexec_open(path, O_RDONLY, 0);
+ int fd = open(path, O_RDONLY);
if (fd == -1) return 0;
rb_update_max_fd(fd);
#if !defined DOSISH
@@ -5297,7 +5192,6 @@ is_explicit_relative(const char *path)
static VALUE
copy_path_class(VALUE path, VALUE orig)
{
- str_shrink(path);
RBASIC(path)->klass = rb_obj_class(orig);
OBJ_FREEZE(path);
return path;
@@ -5350,7 +5244,7 @@ rb_find_file_ext_safe(VALUE *filep, const char *const *ext, int safe_level)
rb_raise(rb_eSecurityError, "loading from non-absolute path %s", f);
}
- RB_GC_GUARD(load_path) = rb_get_expanded_load_path();
+ RB_GC_GUARD(load_path) = rb_get_load_path();
if (!load_path) return 0;
fname = rb_str_dup(*filep);
@@ -5415,7 +5309,7 @@ rb_find_file_safe(VALUE path, int safe_level)
rb_raise(rb_eSecurityError, "loading from non-absolute path %s", f);
}
- RB_GC_GUARD(load_path) = rb_get_expanded_load_path();
+ RB_GC_GUARD(load_path) = rb_get_load_path();
if (load_path) {
long i;
@@ -5591,88 +5485,14 @@ Init_File(void)
rb_define_method(rb_cFile, "flock", rb_file_flock, 1);
- /*
- * Document-module: File::Constants
- *
- * File::Constants provides file-related constants. All possible
- * file constants are listed in the documentation but they may not all
- * be present on your platform.
- *
- * If the underlying platform doesn't define a constant the corresponding
- * Ruby constant is not defined.
- *
- * Your platform documentations (e.g. man open(2)) may describe more
- * detailed information.
- */
rb_mFConst = rb_define_module_under(rb_cFile, "Constants");
rb_include_module(rb_cIO, rb_mFConst);
+ rb_file_const("LOCK_SH", INT2FIX(LOCK_SH));
+ rb_file_const("LOCK_EX", INT2FIX(LOCK_EX));
+ rb_file_const("LOCK_UN", INT2FIX(LOCK_UN));
+ rb_file_const("LOCK_NB", INT2FIX(LOCK_NB));
- /* open for reading only */
- rb_define_const(rb_mFConst, "RDONLY", INT2FIX(O_RDONLY));
- /* open for writing only */
- rb_define_const(rb_mFConst, "WRONLY", INT2FIX(O_WRONLY));
- /* open for reading and writing */
- rb_define_const(rb_mFConst, "RDWR", INT2FIX(O_RDWR));
- /* append on each write */
- rb_define_const(rb_mFConst, "APPEND", INT2FIX(O_APPEND));
- /* create file if it does not exist */
- rb_define_const(rb_mFConst, "CREAT", INT2FIX(O_CREAT));
- /* error if CREAT and the file exists */
- rb_define_const(rb_mFConst, "EXCL", INT2FIX(O_EXCL));
-#if defined(O_NDELAY) || defined(O_NONBLOCK)
-# ifndef O_NONBLOCK
-# define O_NONBLOCK O_NDELAY
-# endif
- /* do not block on open or for data to become available */
- rb_define_const(rb_mFConst, "NONBLOCK", INT2FIX(O_NONBLOCK));
-#endif
- /* truncate size to 0 */
- rb_define_const(rb_mFConst, "TRUNC", INT2FIX(O_TRUNC));
-#ifdef O_NOCTTY
- /* not to make opened IO the controlling terminal device */
- rb_define_const(rb_mFConst, "NOCTTY", INT2FIX(O_NOCTTY));
-#endif
-#ifndef O_BINARY
-# define O_BINARY 0
-#endif
- /* disable line code conversion */
- rb_define_const(rb_mFConst, "BINARY", INT2FIX(O_BINARY));
-#ifdef O_SYNC
- /* any write operation perform synchronously */
- rb_define_const(rb_mFConst, "SYNC", INT2FIX(O_SYNC));
-#endif
-#ifdef O_DSYNC
- /* any write operation perform synchronously except some meta data */
- rb_define_const(rb_mFConst, "DSYNC", INT2FIX(O_DSYNC));
-#endif
-#ifdef O_RSYNC
- /* any read operation perform synchronously. used with SYNC or DSYNC. */
- rb_define_const(rb_mFConst, "RSYNC", INT2FIX(O_RSYNC));
-#endif
-#ifdef O_NOFOLLOW
- /* do not follow symlinks */
- rb_define_const(rb_mFConst, "NOFOLLOW", INT2FIX(O_NOFOLLOW)); /* FreeBSD, Linux */
-#endif
-#ifdef O_NOATIME
- /* do not change atime */
- rb_define_const(rb_mFConst, "NOATIME", INT2FIX(O_NOATIME)); /* Linux */
-#endif
-#ifdef O_DIRECT
- /* Try to minimize cache effects of the I/O to and from this file. */
- rb_define_const(rb_mFConst, "DIRECT", INT2FIX(O_DIRECT));
-#endif
-
- /* shared lock. see File#flock */
- rb_define_const(rb_mFConst, "LOCK_SH", INT2FIX(LOCK_SH));
- /* exclusive lock. see File#flock */
- rb_define_const(rb_mFConst, "LOCK_EX", INT2FIX(LOCK_EX));
- /* unlock. see File#flock */
- rb_define_const(rb_mFConst, "LOCK_UN", INT2FIX(LOCK_UN));
- /* non-blocking lock. used with LOCK_SH or LOCK_EX. see File#flock */
- rb_define_const(rb_mFConst, "LOCK_NB", INT2FIX(LOCK_NB));
-
- /* Name of the null device */
- rb_define_const(rb_mFConst, "NULL", rb_obj_freeze(rb_usascii_str_new2(null_device)));
+ rb_file_const("NULL", rb_obj_freeze(rb_usascii_str_new2(null_device)));
rb_define_method(rb_cFile, "path", rb_file_path, 0);
rb_define_method(rb_cFile, "to_path", rb_file_path, 0);
diff --git a/gc.c b/gc.c
index 71fd2ced8f..e65d0ec6e6 100644
--- a/gc.c
+++ b/gc.c
@@ -15,19 +15,15 @@
#include "ruby/st.h"
#include "ruby/re.h"
#include "ruby/io.h"
-#include "ruby/thread.h"
#include "ruby/util.h"
#include "eval_intern.h"
#include "vm_core.h"
#include "internal.h"
#include "gc.h"
#include "constant.h"
-#include "ruby_atomic.h"
-#include "probes.h"
#include <stdio.h>
#include <setjmp.h>
#include <sys/types.h>
-#include <assert.h>
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
@@ -36,18 +32,9 @@
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif
-#if defined(__native_client__) && defined(NACL_NEWLIB)
-# include "nacl/resource.h"
-# undef HAVE_POSIX_MEMALIGN
-# undef HAVE_MEMALIGN
-
-#endif
#if defined _WIN32 || defined __CYGWIN__
#include <windows.h>
-#elif defined(HAVE_POSIX_MEMALIGN)
-#elif defined(HAVE_MEMALIGN)
-#include <malloc.h>
#endif
#ifdef HAVE_VALGRIND_MEMCHECK_H
@@ -59,13 +46,34 @@
# define VALGRIND_MAKE_MEM_UNDEFINED(p, n) VALGRIND_MAKE_WRITABLE((p), (n))
# endif
#else
-# define VALGRIND_MAKE_MEM_DEFINED(p, n) 0
-# define VALGRIND_MAKE_MEM_UNDEFINED(p, n) 0
+# define VALGRIND_MAKE_MEM_DEFINED(p, n) /* empty */
+# define VALGRIND_MAKE_MEM_UNDEFINED(p, n) /* empty */
#endif
#define rb_setjmp(env) RUBY_SETJMP(env)
#define rb_jmp_buf rb_jmpbuf_t
+/* Make alloca work the best possible way. */
+#ifdef __GNUC__
+# ifndef atarist
+# ifndef alloca
+# define alloca __builtin_alloca
+# endif
+# endif /* atarist */
+#else
+# ifdef HAVE_ALLOCA_H
+# include <alloca.h>
+# else
+# ifdef _AIX
+ #pragma alloca
+# else
+# ifndef alloca /* predefined by HP cc +Olibcalls */
+void *alloca ();
+# endif
+# endif /* AIX */
+# endif /* HAVE_ALLOCA_H */
+#endif /* __GNUC__ */
+
#ifndef GC_MALLOC_LIMIT
#define GC_MALLOC_LIMIT 8000000
#endif
@@ -76,12 +84,10 @@ typedef struct {
unsigned int initial_malloc_limit;
unsigned int initial_heap_min_slots;
unsigned int initial_free_min;
-#if defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE
int gc_stress;
-#endif
} ruby_gc_params_t;
-static ruby_gc_params_t initial_params = {
+ruby_gc_params_t initial_params = {
GC_MALLOC_LIMIT,
HEAP_MIN_SLOTS,
FREE_MIN,
@@ -92,35 +98,170 @@ static ruby_gc_params_t initial_params = {
#define nomem_error GET_VM()->special_exceptions[ruby_error_nomemory]
-#ifndef GC_PROFILE_MORE_DETAIL
-#define GC_PROFILE_MORE_DETAIL 0
-#endif
+#define MARK_STACK_MAX 1024
+
+int ruby_gc_debug_indent = 0;
+/* for GC profile */
+#define GC_PROFILE_MORE_DETAIL 0
typedef struct gc_profile_record {
double gc_time;
- double gc_invoke_time;
-
- size_t heap_total_objects;
- size_t heap_use_size;
- size_t heap_total_size;
-
- int is_marked;
-
-#if GC_PROFILE_MORE_DETAIL
double gc_mark_time;
double gc_sweep_time;
+ double gc_invoke_time;
size_t heap_use_slots;
size_t heap_live_objects;
size_t heap_free_objects;
+ size_t heap_total_objects;
+ size_t heap_use_size;
+ size_t heap_total_size;
int have_finalize;
+ int is_marked;
size_t allocate_increase;
size_t allocate_limit;
-#endif
} gc_profile_record;
+static double
+getrusage_time(void)
+{
+#ifdef RUSAGE_SELF
+ struct rusage usage;
+ struct timeval time;
+ getrusage(RUSAGE_SELF, &usage);
+ time = usage.ru_utime;
+ return time.tv_sec + time.tv_usec * 1e-6;
+#elif defined _WIN32
+ FILETIME creation_time, exit_time, kernel_time, user_time;
+ ULARGE_INTEGER ui;
+ LONG_LONG q;
+ double t;
+
+ if (GetProcessTimes(GetCurrentProcess(),
+ &creation_time, &exit_time, &kernel_time, &user_time) == 0)
+ {
+ return 0.0;
+ }
+ memcpy(&ui, &user_time, sizeof(FILETIME));
+ q = ui.QuadPart / 10L;
+ t = (DWORD)(q % 1000000L) * 1e-6;
+ q /= 1000000L;
+#ifdef __GNUC__
+ t += q;
+#else
+ t += (double)(DWORD)(q >> 16) * (1 << 16);
+ t += (DWORD)q & ~(~0 << 16);
+#endif
+ return t;
+#else
+ return 0.0;
+#endif
+}
+
+#define GC_PROF_TIMER_START do {\
+ if (objspace->profile.run) {\
+ if (!objspace->profile.record) {\
+ objspace->profile.size = 1000;\
+ objspace->profile.record = malloc(sizeof(gc_profile_record) * objspace->profile.size);\
+ }\
+ if (count >= objspace->profile.size) {\
+ objspace->profile.size += 1000;\
+ objspace->profile.record = realloc(objspace->profile.record, sizeof(gc_profile_record) * objspace->profile.size);\
+ }\
+ if (!objspace->profile.record) {\
+ rb_bug("gc_profile malloc or realloc miss");\
+ }\
+ MEMZERO(&objspace->profile.record[count], gc_profile_record, 1);\
+ gc_time = getrusage_time();\
+ objspace->profile.record[count].gc_invoke_time = gc_time - objspace->profile.invoke_time;\
+ }\
+ } while(0)
+
+#define GC_PROF_TIMER_STOP(marked) do {\
+ if (objspace->profile.run) {\
+ gc_time = getrusage_time() - gc_time;\
+ if (gc_time < 0) gc_time = 0;\
+ objspace->profile.record[count].gc_time = gc_time;\
+ objspace->profile.record[count].is_marked = !!(marked);\
+ GC_PROF_SET_HEAP_INFO(objspace->profile.record[count]);\
+ objspace->profile.count++;\
+ }\
+ } while(0)
+
+#if GC_PROFILE_MORE_DETAIL
+#define INIT_GC_PROF_PARAMS double gc_time = 0, sweep_time = 0;\
+ size_t count = objspace->profile.count, total = 0, live = 0
+
+#define GC_PROF_MARK_TIMER_START double mark_time = 0;\
+ do {\
+ if (objspace->profile.run) {\
+ mark_time = getrusage_time();\
+ }\
+ } while(0)
+
+#define GC_PROF_MARK_TIMER_STOP do {\
+ if (objspace->profile.run) {\
+ mark_time = getrusage_time() - mark_time;\
+ if (mark_time < 0) mark_time = 0;\
+ objspace->profile.record[objspace->profile.count].gc_mark_time = mark_time;\
+ }\
+ } while(0)
+
+#define GC_PROF_SWEEP_TIMER_START do {\
+ if (objspace->profile.run) {\
+ sweep_time = getrusage_time();\
+ }\
+ } while(0)
+
+#define GC_PROF_SWEEP_TIMER_STOP do {\
+ if (objspace->profile.run) {\
+ sweep_time = getrusage_time() - sweep_time;\
+ if (sweep_time < 0) sweep_time = 0;\
+ objspace->profile.record[count].gc_sweep_time = sweep_time;\
+ }\
+ } while(0)
+#define GC_PROF_SET_MALLOC_INFO do {\
+ if (objspace->profile.run) {\
+ gc_profile_record *record = &objspace->profile.record[objspace->profile.count];\
+ record->allocate_increase = malloc_increase;\
+ record->allocate_limit = malloc_limit; \
+ }\
+ } while(0)
+#define GC_PROF_SET_HEAP_INFO(record) do {\
+ live = objspace->heap.live_num;\
+ total = heaps_used * HEAP_OBJ_LIMIT;\
+ (record).heap_use_slots = heaps_used;\
+ (record).heap_live_objects = live;\
+ (record).heap_free_objects = total - live;\
+ (record).heap_total_objects = total;\
+ (record).have_finalize = deferred_final_list ? Qtrue : Qfalse;\
+ (record).heap_use_size = live * sizeof(RVALUE);\
+ (record).heap_total_size = total * sizeof(RVALUE);\
+ } while(0)
+#define GC_PROF_INC_LIVE_NUM objspace->heap.live_num++
+#define GC_PROF_DEC_LIVE_NUM objspace->heap.live_num--
+#else
+#define INIT_GC_PROF_PARAMS double gc_time = 0;\
+ size_t count = objspace->profile.count, total = 0, live = 0
+#define GC_PROF_MARK_TIMER_START
+#define GC_PROF_MARK_TIMER_STOP
+#define GC_PROF_SWEEP_TIMER_START
+#define GC_PROF_SWEEP_TIMER_STOP
+#define GC_PROF_SET_MALLOC_INFO
+#define GC_PROF_SET_HEAP_INFO(record) do {\
+ live = objspace->heap.live_num;\
+ total = heaps_used * HEAP_OBJ_LIMIT;\
+ (record).heap_total_objects = total;\
+ (record).heap_use_size = live * sizeof(RVALUE);\
+ (record).heap_total_size = total * sizeof(RVALUE);\
+ } while(0)
+#define GC_PROF_INC_LIVE_NUM
+#define GC_PROF_DEC_LIVE_NUM
+#endif
+
+
#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__CYGWIN__)
#pragma pack(push, 1) /* magic for reducing sizeof(RVALUE): 24 -> 20 */
#endif
@@ -160,24 +301,17 @@ typedef struct RVALUE {
#endif
struct heaps_slot {
- struct heaps_header *header;
- uintptr_t *bits;
- RVALUE *freelist;
+ void *membase;
+ RVALUE *slot;
+ size_t limit;
struct heaps_slot *next;
struct heaps_slot *prev;
- struct heaps_slot *free_next;
};
-struct heaps_header {
- struct heaps_slot *base;
- uintptr_t *bits;
+struct sorted_heaps_slot {
RVALUE *start;
RVALUE *end;
- size_t limit;
-};
-
-struct heaps_free_bitmap {
- struct heaps_free_bitmap *next;
+ struct heaps_slot *slot;
};
struct gc_list {
@@ -185,25 +319,7 @@ struct gc_list {
struct gc_list *next;
};
-#define STACK_CHUNK_SIZE 500
-
-typedef struct stack_chunk {
- VALUE data[STACK_CHUNK_SIZE];
- struct stack_chunk *next;
-} stack_chunk_t;
-
-typedef struct mark_stack {
- stack_chunk_t *chunk;
- stack_chunk_t *cache;
- size_t index;
- size_t limit;
- size_t cache_size;
- size_t unused_cache_size;
-} mark_stack_t;
-
-#ifndef CALC_EXACT_MALLOC_SIZE
#define CALC_EXACT_MALLOC_SIZE 0
-#endif
typedef struct rb_objspace {
struct {
@@ -218,14 +334,13 @@ typedef struct rb_objspace {
size_t increment;
struct heaps_slot *ptr;
struct heaps_slot *sweep_slots;
- struct heaps_slot *free_slots;
- struct heaps_header **sorted;
+ struct sorted_heaps_slot *sorted;
size_t length;
size_t used;
- struct heaps_free_bitmap *free_bitmap;
+ RVALUE *freelist;
RVALUE *range[2];
- struct heaps_header *freed;
- size_t marked_num;
+ RVALUE *freed;
+ size_t live_num;
size_t free_num;
size_t free_min;
size_t final_num;
@@ -235,13 +350,16 @@ typedef struct rb_objspace {
int dont_gc;
int dont_lazy_sweep;
int during_gc;
- rb_atomic_t finalizing;
} flags;
struct {
st_table *table;
RVALUE *deferred;
} final;
- mark_stack_t mark_stack;
+ struct {
+ VALUE buffer[MARK_STACK_MAX];
+ VALUE *ptr;
+ int overflow;
+ } markstack;
struct {
int run;
gc_profile_record *record;
@@ -251,14 +369,7 @@ typedef struct rb_objspace {
} profile;
struct gc_list *global_list;
size_t count;
- size_t total_allocated_object_num;
- size_t total_freed_object_num;
int gc_stress;
-
- struct mark_func_data_struct {
- void *data;
- void (*mark_func)(VALUE v, void *data);
- } *mark_func_data;
} rb_objspace_t;
#if defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE
@@ -266,7 +377,7 @@ typedef struct rb_objspace {
#define ruby_initial_gc_stress initial_params.gc_stress
int *ruby_initial_gc_stress_ptr = &ruby_initial_gc_stress;
#else
-static rb_objspace_t rb_objspace = {{GC_MALLOC_LIMIT}};
+static rb_objspace_t rb_objspace = {{GC_MALLOC_LIMIT}, {HEAP_MIN_SLOTS}};
int *ruby_initial_gc_stress_ptr = &rb_objspace.gc_stress;
#endif
#define malloc_limit objspace->malloc_params.limit
@@ -274,100 +385,25 @@ int *ruby_initial_gc_stress_ptr = &rb_objspace.gc_stress;
#define heaps objspace->heap.ptr
#define heaps_length objspace->heap.length
#define heaps_used objspace->heap.used
+#define freelist objspace->heap.freelist
#define lomem objspace->heap.range[0]
#define himem objspace->heap.range[1]
#define heaps_inc objspace->heap.increment
#define heaps_freed objspace->heap.freed
#define dont_gc objspace->flags.dont_gc
#define during_gc objspace->flags.during_gc
-#define finalizing objspace->flags.finalizing
#define finalizer_table objspace->final.table
#define deferred_final_list objspace->final.deferred
+#define mark_stack objspace->markstack.buffer
+#define mark_stack_ptr objspace->markstack.ptr
+#define mark_stack_overflow objspace->markstack.overflow
#define global_List objspace->global_list
#define ruby_gc_stress objspace->gc_stress
#define initial_malloc_limit initial_params.initial_malloc_limit
#define initial_heap_min_slots initial_params.initial_heap_min_slots
#define initial_free_min initial_params.initial_free_min
-#define is_lazy_sweeping(objspace) ((objspace)->heap.sweep_slots != 0)
-
-#if SIZEOF_LONG == SIZEOF_VOIDP
-# define nonspecial_obj_id(obj) (VALUE)((SIGNED_VALUE)(obj)|FIXNUM_FLAG)
-# define obj_id_to_ref(objid) ((objid) ^ FIXNUM_FLAG) /* unset FIXNUM_FLAG */
-#elif SIZEOF_LONG_LONG == SIZEOF_VOIDP
-# define nonspecial_obj_id(obj) LL2NUM((SIGNED_VALUE)(obj) / 2)
-# define obj_id_to_ref(objid) (FIXNUM_P(objid) ? \
- ((objid) ^ FIXNUM_FLAG) : (NUM2PTR(objid) << 1))
-#else
-# error not supported
-#endif
-
-#define RANY(o) ((RVALUE*)(o))
-#define has_free_object (objspace->heap.free_slots && objspace->heap.free_slots->freelist)
-
-#define HEAP_HEADER(p) ((struct heaps_header *)(p))
-#define GET_HEAP_HEADER(x) (HEAP_HEADER((uintptr_t)(x) & ~(HEAP_ALIGN_MASK)))
-#define GET_HEAP_SLOT(x) (GET_HEAP_HEADER(x)->base)
-#define GET_HEAP_BITMAP(x) (GET_HEAP_HEADER(x)->bits)
-#define NUM_IN_SLOT(p) (((uintptr_t)(p) & HEAP_ALIGN_MASK)/sizeof(RVALUE))
-#define BITMAP_INDEX(p) (NUM_IN_SLOT(p) / (sizeof(uintptr_t) * CHAR_BIT))
-#define BITMAP_OFFSET(p) (NUM_IN_SLOT(p) & ((sizeof(uintptr_t) * CHAR_BIT)-1))
-#define MARKED_IN_BITMAP(bits, p) (bits[BITMAP_INDEX(p)] & ((uintptr_t)1 << BITMAP_OFFSET(p)))
-
-#ifndef HEAP_ALIGN_LOG
-/* default tiny heap size: 16KB */
-#define HEAP_ALIGN_LOG 14
-#endif
-
-#define CEILDIV(i, mod) (((i) + (mod) - 1)/(mod))
-
-enum {
- HEAP_ALIGN = (1UL << HEAP_ALIGN_LOG),
- HEAP_ALIGN_MASK = (~(~0UL << HEAP_ALIGN_LOG)),
- REQUIRED_SIZE_BY_MALLOC = (sizeof(size_t) * 5),
- HEAP_SIZE = (HEAP_ALIGN - REQUIRED_SIZE_BY_MALLOC),
- HEAP_OBJ_LIMIT = (unsigned int)((HEAP_SIZE - sizeof(struct heaps_header))/sizeof(struct RVALUE)),
- HEAP_BITMAP_LIMIT = CEILDIV(CEILDIV(HEAP_SIZE, sizeof(struct RVALUE)), sizeof(uintptr_t) * CHAR_BIT)
-};
-
-int ruby_gc_debug_indent = 0;
-VALUE rb_mGC;
-extern st_table *rb_class_tbl;
-int ruby_disable_gc_stress = 0;
-
static void rb_objspace_call_finalizer(rb_objspace_t *objspace);
-static VALUE define_final0(VALUE obj, VALUE block);
-VALUE rb_define_final(VALUE obj, VALUE block);
-VALUE rb_undefine_final(VALUE obj);
-static void run_final(rb_objspace_t *objspace, VALUE obj);
-static void initial_expand_heap(rb_objspace_t *objspace);
-
-static void negative_size_allocation_error(const char *);
-static void *aligned_malloc(size_t, size_t);
-static void aligned_free(void *);
-
-static void init_mark_stack(mark_stack_t *stack);
-
-static VALUE lazy_sweep_enable(void);
-static int garbage_collect(rb_objspace_t *);
-static int gc_prepare_free_objects(rb_objspace_t *);
-static void mark_tbl(rb_objspace_t *, st_table *);
-static void rest_sweep(rb_objspace_t *);
-static void gc_mark_stacked_objects(rb_objspace_t *);
-
-static double getrusage_time(void);
-static inline void gc_prof_timer_start(rb_objspace_t *);
-static inline void gc_prof_timer_stop(rb_objspace_t *, int);
-static inline void gc_prof_mark_timer_start(rb_objspace_t *);
-static inline void gc_prof_mark_timer_stop(rb_objspace_t *);
-static inline void gc_prof_sweep_timer_start(rb_objspace_t *);
-static inline void gc_prof_sweep_timer_stop(rb_objspace_t *);
-static inline void gc_prof_set_malloc_info(rb_objspace_t *);
-
-
-/*
- --------------------------- ObjectSpace -----------------------------
-*/
#if defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE
rb_objspace_t *
@@ -382,8 +418,53 @@ rb_objspace_alloc(void)
}
#endif
+static void initial_expand_heap(rb_objspace_t *objspace);
+
+void
+rb_gc_set_params(void)
+{
+ char *malloc_limit_ptr, *heap_min_slots_ptr, *free_min_ptr;
+
+ if (rb_safe_level() > 0) return;
+
+ malloc_limit_ptr = getenv("RUBY_GC_MALLOC_LIMIT");
+ if (malloc_limit_ptr != NULL) {
+ int malloc_limit_i = atoi(malloc_limit_ptr);
+ if (RTEST(ruby_verbose))
+ fprintf(stderr, "malloc_limit=%d (%d)\n",
+ malloc_limit_i, initial_malloc_limit);
+ if (malloc_limit_i > 0) {
+ initial_malloc_limit = malloc_limit_i;
+ }
+ }
+
+ heap_min_slots_ptr = getenv("RUBY_HEAP_MIN_SLOTS");
+ if (heap_min_slots_ptr != NULL) {
+ int heap_min_slots_i = atoi(heap_min_slots_ptr);
+ if (RTEST(ruby_verbose))
+ fprintf(stderr, "heap_min_slots=%d (%d)\n",
+ heap_min_slots_i, initial_heap_min_slots);
+ if (heap_min_slots_i > 0) {
+ initial_heap_min_slots = heap_min_slots_i;
+ initial_expand_heap(&rb_objspace);
+ }
+ }
+
+ free_min_ptr = getenv("RUBY_FREE_MIN");
+ if (free_min_ptr != NULL) {
+ int free_min_i = atoi(free_min_ptr);
+ if (RTEST(ruby_verbose))
+ fprintf(stderr, "free_min=%d (%d)\n", free_min_i, initial_free_min);
+ if (free_min_i > 0) {
+ initial_free_min = free_min_i;
+ }
+ }
+}
+
#if defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE
-static void free_stack_chunks(mark_stack_t *);
+static void gc_sweep(rb_objspace_t *);
+static void slot_sweep(rb_objspace_t *, struct heaps_slot *);
+static void rest_sweep(rb_objspace_t *);
void
rb_objspace_free(rb_objspace_t *objspace)
@@ -397,84 +478,534 @@ rb_objspace_free(rb_objspace_t *objspace)
struct gc_list *list, *next;
for (list = global_List; list; list = next) {
next = list->next;
- xfree(list);
+ free(list);
}
}
- if (objspace->heap.free_bitmap) {
- struct heaps_free_bitmap *list, *next;
- for (list = objspace->heap.free_bitmap; list; list = next) {
- next = list->next;
- free(list);
- }
- }
if (objspace->heap.sorted) {
size_t i;
for (i = 0; i < heaps_used; ++i) {
- free(objspace->heap.sorted[i]->bits);
- aligned_free(objspace->heap.sorted[i]);
+ free(objspace->heap.sorted[i].slot->membase);
+ free(objspace->heap.sorted[i].slot);
}
free(objspace->heap.sorted);
heaps_used = 0;
heaps = 0;
}
- free_stack_chunks(&objspace->mark_stack);
free(objspace);
}
#endif
+/* tiny heap size */
+/* 32KB */
+/*#define HEAP_SIZE 0x8000 */
+/* 128KB */
+/*#define HEAP_SIZE 0x20000 */
+/* 64KB */
+/*#define HEAP_SIZE 0x10000 */
+/* 16KB */
+#define HEAP_SIZE 0x4000
+/* 8KB */
+/*#define HEAP_SIZE 0x2000 */
+/* 4KB */
+/*#define HEAP_SIZE 0x1000 */
+/* 2KB */
+/*#define HEAP_SIZE 0x800 */
+
+#define HEAP_OBJ_LIMIT (unsigned int)(HEAP_SIZE / sizeof(struct RVALUE))
+
+extern st_table *rb_class_tbl;
+
+int ruby_disable_gc_stress = 0;
+
+static void run_final(rb_objspace_t *objspace, VALUE obj);
+static int garbage_collect(rb_objspace_t *objspace);
+static int gc_lazy_sweep(rb_objspace_t *objspace);
+
void
rb_global_variable(VALUE *var)
{
rb_gc_register_address(var);
}
+static void *
+ruby_memerror_body(void *dummy)
+{
+ rb_memerror();
+ return 0;
+}
+
static void
-allocate_sorted_heaps(rb_objspace_t *objspace, size_t next_heaps_length)
+ruby_memerror(void)
+{
+ if (ruby_thread_has_gvl_p()) {
+ rb_memerror();
+ }
+ else {
+ if (ruby_native_thread_p()) {
+ rb_thread_call_with_gvl(ruby_memerror_body, 0);
+ }
+ else {
+ /* no ruby thread */
+ fprintf(stderr, "[FATAL] failed to allocate memory\n");
+ exit(EXIT_FAILURE);
+ }
+ }
+}
+
+void
+rb_memerror(void)
{
- struct heaps_header **p;
- struct heaps_free_bitmap *bits;
- size_t size, add, i;
+ rb_thread_t *th = GET_THREAD();
+ if (!nomem_error ||
+ (rb_thread_raised_p(th, RAISED_NOMEMORY) && rb_safe_level() < 4)) {
+ fprintf(stderr, "[FATAL] failed to allocate memory\n");
+ exit(EXIT_FAILURE);
+ }
+ if (rb_thread_raised_p(th, RAISED_NOMEMORY)) {
+ rb_thread_raised_clear(th);
+ GET_THREAD()->errinfo = nomem_error;
+ JUMP_TAG(TAG_RAISE);
+ }
+ rb_thread_raised_set(th, RAISED_NOMEMORY);
+ rb_exc_raise(nomem_error);
+}
- size = next_heaps_length*sizeof(struct heaps_header *);
- add = next_heaps_length - heaps_used;
+/*
+ * call-seq:
+ * GC.stress -> true or false
+ *
+ * returns current status of GC stress mode.
+ */
- if (heaps_used > 0) {
- p = (struct heaps_header **)realloc(objspace->heap.sorted, size);
- if (p) objspace->heap.sorted = p;
+static VALUE
+gc_stress_get(VALUE self)
+{
+ rb_objspace_t *objspace = &rb_objspace;
+ return ruby_gc_stress ? Qtrue : Qfalse;
+}
+
+/*
+ * call-seq:
+ * GC.stress = bool -> bool
+ *
+ * Updates the GC stress mode.
+ *
+ * When stress mode is enabled the GC is invoked at every GC opportunity:
+ * all memory and object allocations.
+ *
+ * Enabling stress mode makes Ruby very slow, it is only for debugging.
+ */
+
+static VALUE
+gc_stress_set(VALUE self, VALUE flag)
+{
+ rb_objspace_t *objspace = &rb_objspace;
+ rb_secure(2);
+ ruby_gc_stress = RTEST(flag);
+ return flag;
+}
+
+/*
+ * call-seq:
+ * GC::Profiler.enable? -> true or false
+ *
+ * The current status of GC profile mode.
+ */
+
+static VALUE
+gc_profile_enable_get(VALUE self)
+{
+ rb_objspace_t *objspace = &rb_objspace;
+ return objspace->profile.run;
+}
+
+/*
+ * call-seq:
+ * GC::Profiler.enable -> nil
+ *
+ * Starts the GC profiler.
+ *
+ */
+
+static VALUE
+gc_profile_enable(void)
+{
+ rb_objspace_t *objspace = &rb_objspace;
+
+ objspace->profile.run = TRUE;
+ return Qnil;
+}
+
+/*
+ * call-seq:
+ * GC::Profiler.disable -> nil
+ *
+ * Stops the GC profiler.
+ *
+ */
+
+static VALUE
+gc_profile_disable(void)
+{
+ rb_objspace_t *objspace = &rb_objspace;
+
+ objspace->profile.run = FALSE;
+ return Qnil;
+}
+
+/*
+ * call-seq:
+ * GC::Profiler.clear -> nil
+ *
+ * Clears the GC profiler data.
+ *
+ */
+
+static VALUE
+gc_profile_clear(void)
+{
+ rb_objspace_t *objspace = &rb_objspace;
+ MEMZERO(objspace->profile.record, gc_profile_record, objspace->profile.size);
+ objspace->profile.count = 0;
+ return Qnil;
+}
+
+static void *
+negative_size_allocation_error_with_gvl(void *ptr)
+{
+ rb_raise(rb_eNoMemError, "%s", (const char *)ptr);
+ return 0; /* should not be reached */
+}
+
+static void
+negative_size_allocation_error(const char *msg)
+{
+ if (ruby_thread_has_gvl_p()) {
+ rb_raise(rb_eNoMemError, "%s", msg);
}
else {
- p = objspace->heap.sorted = (struct heaps_header **)malloc(size);
+ if (ruby_native_thread_p()) {
+ rb_thread_call_with_gvl(negative_size_allocation_error_with_gvl, (void *)msg);
+ }
+ else {
+ fprintf(stderr, "[FATAL] %s\n", msg);
+ exit(EXIT_FAILURE);
+ }
}
+}
- if (p == 0) {
- during_gc = 0;
- rb_memerror();
+static void *
+gc_with_gvl(void *ptr)
+{
+ return (void *)(VALUE)garbage_collect((rb_objspace_t *)ptr);
+}
+
+static int
+garbage_collect_with_gvl(rb_objspace_t *objspace)
+{
+ if (dont_gc) return TRUE;
+ if (ruby_thread_has_gvl_p()) {
+ return garbage_collect(objspace);
+ }
+ else {
+ if (ruby_native_thread_p()) {
+ return (int)(VALUE)rb_thread_call_with_gvl(gc_with_gvl, (void *)objspace);
+ }
+ else {
+ /* no ruby thread */
+ fprintf(stderr, "[FATAL] failed to allocate memory\n");
+ exit(EXIT_FAILURE);
+ }
}
+}
- for (i = 0; i < add; i++) {
- bits = (struct heaps_free_bitmap *)malloc(HEAP_BITMAP_LIMIT * sizeof(uintptr_t));
- if (bits == 0) {
- during_gc = 0;
- rb_memerror();
- return;
+static void vm_xfree(rb_objspace_t *objspace, void *ptr);
+
+static inline size_t
+vm_malloc_prepare(rb_objspace_t *objspace, size_t size)
+{
+ if ((ssize_t)size < 0) {
+ negative_size_allocation_error("negative allocation size (or too big)");
+ }
+ if (size == 0) size = 1;
+
+#if CALC_EXACT_MALLOC_SIZE
+ size += sizeof(size_t);
+#endif
+
+ if ((ruby_gc_stress && !ruby_disable_gc_stress) ||
+ (malloc_increase+size) > malloc_limit) {
+ garbage_collect_with_gvl(objspace);
+ }
+
+ return size;
+}
+
+static inline void *
+vm_malloc_fixup(rb_objspace_t *objspace, void *mem, size_t size)
+{
+ malloc_increase += size;
+
+#if CALC_EXACT_MALLOC_SIZE
+ objspace->malloc_params.allocated_size += size;
+ objspace->malloc_params.allocations++;
+ ((size_t *)mem)[0] = size;
+ mem = (size_t *)mem + 1;
+#endif
+
+ return mem;
+}
+
+#define TRY_WITH_GC(alloc) do { \
+ if (!(alloc) && \
+ (!garbage_collect_with_gvl(objspace) || \
+ !(alloc))) { \
+ ruby_memerror(); \
+ } \
+ } while (0)
+
+static void *
+vm_xmalloc(rb_objspace_t *objspace, size_t size)
+{
+ void *mem;
+
+ size = vm_malloc_prepare(objspace, size);
+ TRY_WITH_GC(mem = malloc(size));
+ return vm_malloc_fixup(objspace, mem, size);
+}
+
+static void *
+vm_xrealloc(rb_objspace_t *objspace, void *ptr, size_t size)
+{
+ void *mem;
+
+ if ((ssize_t)size < 0) {
+ negative_size_allocation_error("negative re-allocation size");
+ }
+ if (!ptr) return vm_xmalloc(objspace, size);
+ if (size == 0) {
+ vm_xfree(objspace, ptr);
+ return 0;
+ }
+ if (ruby_gc_stress && !ruby_disable_gc_stress)
+ garbage_collect_with_gvl(objspace);
+
+#if CALC_EXACT_MALLOC_SIZE
+ size += sizeof(size_t);
+ objspace->malloc_params.allocated_size -= size;
+ ptr = (size_t *)ptr - 1;
+#endif
+
+ mem = realloc(ptr, size);
+ if (!mem) {
+ if (garbage_collect_with_gvl(objspace)) {
+ mem = realloc(ptr, size);
+ }
+ if (!mem) {
+ ruby_memerror();
}
- bits->next = objspace->heap.free_bitmap;
- objspace->heap.free_bitmap = bits;
}
+ malloc_increase += size;
+
+#if CALC_EXACT_MALLOC_SIZE
+ objspace->malloc_params.allocated_size += size;
+ ((size_t *)mem)[0] = size;
+ mem = (size_t *)mem + 1;
+#endif
+
+ return mem;
}
static void
-link_free_heap_slot(rb_objspace_t *objspace, struct heaps_slot *slot)
+vm_xfree(rb_objspace_t *objspace, void *ptr)
+{
+#if CALC_EXACT_MALLOC_SIZE
+ size_t size;
+ ptr = ((size_t *)ptr) - 1;
+ size = ((size_t*)ptr)[0];
+ objspace->malloc_params.allocated_size -= size;
+ objspace->malloc_params.allocations--;
+#endif
+
+ free(ptr);
+}
+
+void *
+ruby_xmalloc(size_t size)
+{
+ return vm_xmalloc(&rb_objspace, size);
+}
+
+static inline size_t
+xmalloc2_size(size_t n, size_t size)
+{
+ size_t len = size * n;
+ if (n != 0 && size != len / n) {
+ rb_raise(rb_eArgError, "malloc: possible integer overflow");
+ }
+ return len;
+}
+
+void *
+ruby_xmalloc2(size_t n, size_t size)
+{
+ return vm_xmalloc(&rb_objspace, xmalloc2_size(n, size));
+}
+
+static void *
+vm_xcalloc(rb_objspace_t *objspace, size_t count, size_t elsize)
+{
+ void *mem;
+ size_t size;
+
+ size = xmalloc2_size(count, elsize);
+ size = vm_malloc_prepare(objspace, size);
+
+ TRY_WITH_GC(mem = calloc(1, size));
+ return vm_malloc_fixup(objspace, mem, size);
+}
+
+void *
+ruby_xcalloc(size_t n, size_t size)
+{
+ return vm_xcalloc(&rb_objspace, n, size);
+}
+
+void *
+ruby_xrealloc(void *ptr, size_t size)
+{
+ return vm_xrealloc(&rb_objspace, ptr, size);
+}
+
+void *
+ruby_xrealloc2(void *ptr, size_t n, size_t size)
+{
+ size_t len = size * n;
+ if (n != 0 && size != len / n) {
+ rb_raise(rb_eArgError, "realloc: possible integer overflow");
+ }
+ return ruby_xrealloc(ptr, len);
+}
+
+void
+ruby_xfree(void *x)
+{
+ if (x)
+ vm_xfree(&rb_objspace, x);
+}
+
+
+/*
+ * call-seq:
+ * GC.enable -> true or false
+ *
+ * Enables garbage collection, returning <code>true</code> if garbage
+ * collection was previously disabled.
+ *
+ * GC.disable #=> false
+ * GC.enable #=> true
+ * GC.enable #=> false
+ *
+ */
+
+VALUE
+rb_gc_enable(void)
+{
+ rb_objspace_t *objspace = &rb_objspace;
+ int old = dont_gc;
+
+ dont_gc = FALSE;
+ return old ? Qtrue : Qfalse;
+}
+
+/*
+ * call-seq:
+ * GC.disable -> true or false
+ *
+ * Disables garbage collection, returning <code>true</code> if garbage
+ * collection was already disabled.
+ *
+ * GC.disable #=> false
+ * GC.disable #=> true
+ *
+ */
+
+VALUE
+rb_gc_disable(void)
+{
+ rb_objspace_t *objspace = &rb_objspace;
+ int old = dont_gc;
+
+ dont_gc = TRUE;
+ return old ? Qtrue : Qfalse;
+}
+
+VALUE rb_mGC;
+
+void
+rb_gc_register_mark_object(VALUE obj)
{
- slot->free_next = objspace->heap.free_slots;
- objspace->heap.free_slots = slot;
+ VALUE ary = GET_THREAD()->vm->mark_object_ary;
+ rb_ary_push(ary, obj);
}
+void
+rb_gc_register_address(VALUE *addr)
+{
+ rb_objspace_t *objspace = &rb_objspace;
+ struct gc_list *tmp;
+
+ tmp = ALLOC(struct gc_list);
+ tmp->next = global_List;
+ tmp->varptr = addr;
+ global_List = tmp;
+}
+
+void
+rb_gc_unregister_address(VALUE *addr)
+{
+ rb_objspace_t *objspace = &rb_objspace;
+ struct gc_list *tmp = global_List;
+
+ if (tmp->varptr == addr) {
+ global_List = tmp->next;
+ xfree(tmp);
+ return;
+ }
+ while (tmp->next) {
+ if (tmp->next->varptr == addr) {
+ struct gc_list *t = tmp->next;
+
+ tmp->next = tmp->next->next;
+ xfree(t);
+ break;
+ }
+ tmp = tmp->next;
+ }
+}
+
+
static void
-unlink_free_heap_slot(rb_objspace_t *objspace, struct heaps_slot *slot)
+allocate_sorted_heaps(rb_objspace_t *objspace, size_t next_heaps_length)
{
- objspace->heap.free_slots = slot->free_next;
- slot->free_next = NULL;
+ struct sorted_heaps_slot *p;
+ size_t size;
+
+ size = next_heaps_length*sizeof(struct sorted_heaps_slot);
+
+ if (heaps_used > 0) {
+ p = (struct sorted_heaps_slot *)realloc(objspace->heap.sorted, size);
+ if (p) objspace->heap.sorted = p;
+ }
+ else {
+ p = objspace->heap.sorted = (struct sorted_heaps_slot *)malloc(size);
+ }
+
+ if (p == 0) {
+ during_gc = 0;
+ rb_memerror();
+ }
+ heaps_length = next_heaps_length;
}
static void
@@ -486,16 +1017,16 @@ assign_heap_slot(rb_objspace_t *objspace)
size_t objs;
objs = HEAP_OBJ_LIMIT;
- p = (RVALUE*)aligned_malloc(HEAP_ALIGN, HEAP_SIZE);
+ p = (RVALUE*)malloc(HEAP_SIZE);
if (p == 0) {
during_gc = 0;
rb_memerror();
}
slot = (struct heaps_slot *)malloc(sizeof(struct heaps_slot));
if (slot == 0) {
- aligned_free(p);
- during_gc = 0;
- rb_memerror();
+ xfree(p);
+ during_gc = 0;
+ rb_memerror();
}
MEMZERO((void*)slot, struct heaps_slot, 1);
@@ -504,10 +1035,11 @@ assign_heap_slot(rb_objspace_t *objspace)
heaps = slot;
membase = p;
- p = (RVALUE*)((VALUE)p + sizeof(struct heaps_header));
if ((VALUE)p % sizeof(RVALUE) != 0) {
- p = (RVALUE*)((VALUE)p + sizeof(RVALUE) - ((VALUE)p % sizeof(RVALUE)));
- objs = (HEAP_SIZE - (size_t)((VALUE)p - (VALUE)membase))/sizeof(RVALUE);
+ p = (RVALUE*)((VALUE)p + sizeof(RVALUE) - ((VALUE)p % sizeof(RVALUE)));
+ if ((HEAP_SIZE - HEAP_OBJ_LIMIT * sizeof(RVALUE)) < (size_t)((char*)p - (char*)membase)) {
+ objs--;
+ }
}
lo = 0;
@@ -515,7 +1047,7 @@ assign_heap_slot(rb_objspace_t *objspace)
while (lo < hi) {
register RVALUE *mid_membase;
mid = (lo + hi) / 2;
- mid_membase = (RVALUE *)objspace->heap.sorted[mid];
+ mid_membase = objspace->heap.sorted[mid].slot->membase;
if (mid_membase < membase) {
lo = mid + 1;
}
@@ -527,19 +1059,15 @@ assign_heap_slot(rb_objspace_t *objspace)
}
}
if (hi < heaps_used) {
- MEMMOVE(&objspace->heap.sorted[hi+1], &objspace->heap.sorted[hi], struct heaps_header*, heaps_used - hi);
- }
- heaps->header = (struct heaps_header *)membase;
- objspace->heap.sorted[hi] = heaps->header;
- objspace->heap.sorted[hi]->start = p;
- objspace->heap.sorted[hi]->end = (p + objs);
- objspace->heap.sorted[hi]->base = heaps;
- objspace->heap.sorted[hi]->limit = objs;
- assert(objspace->heap.free_bitmap != NULL);
- heaps->bits = (uintptr_t *)objspace->heap.free_bitmap;
- objspace->heap.sorted[hi]->bits = (uintptr_t *)objspace->heap.free_bitmap;
- objspace->heap.free_bitmap = objspace->heap.free_bitmap->next;
- memset(heaps->bits, 0, HEAP_BITMAP_LIMIT * sizeof(uintptr_t));
+ MEMMOVE(&objspace->heap.sorted[hi+1], &objspace->heap.sorted[hi], struct sorted_heaps_slot, heaps_used - hi);
+ }
+ objspace->heap.sorted[hi].slot = slot;
+ objspace->heap.sorted[hi].start = p;
+ objspace->heap.sorted[hi].end = (p + objs);
+ heaps->membase = membase;
+ heaps->slot = p;
+ heaps->limit = objs;
+ objspace->heap.free_num += objs;
pend = p + objs;
if (lomem == 0 || lomem > p) lomem = p;
if (himem < pend) himem = pend;
@@ -547,24 +1075,19 @@ assign_heap_slot(rb_objspace_t *objspace)
while (p < pend) {
p->as.free.flags = 0;
- p->as.free.next = heaps->freelist;
- heaps->freelist = p;
+ p->as.free.next = freelist;
+ freelist = p;
p++;
}
- link_free_heap_slot(objspace, heaps);
}
static void
add_heap_slots(rb_objspace_t *objspace, size_t add)
{
size_t i;
- size_t next_heaps_length;
- next_heaps_length = heaps_used + add;
-
- if (next_heaps_length > heaps_length) {
- allocate_sorted_heaps(objspace, next_heaps_length);
- heaps_length = next_heaps_length;
+ if ((heaps_used + add) > heaps_length) {
+ allocate_sorted_heaps(objspace, heaps_used + add);
}
for (i = 0; i < add; i++) {
@@ -577,14 +1100,12 @@ static void
init_heap(rb_objspace_t *objspace)
{
add_heap_slots(objspace, HEAP_MIN_SLOTS / HEAP_OBJ_LIMIT);
- init_mark_stack(&objspace->mark_stack);
-
#ifdef USE_SIGALTSTACK
{
/* altstack of another threads are allocated in another place */
rb_thread_t *th = GET_THREAD();
void *tmp = th->altstack;
- th->altstack = malloc(rb_sigaltstack_size());
+ th->altstack = malloc(ALT_STACK_SIZE);
free(tmp); /* free previously allocated area */
}
#endif
@@ -616,7 +1137,6 @@ set_heaps_increment(rb_objspace_t *objspace)
if (next_heaps_length > heaps_length) {
allocate_sorted_heaps(objspace, next_heaps_length);
- heaps_length = next_heaps_length;
}
}
@@ -631,8 +1151,17 @@ heaps_increment(rb_objspace_t *objspace)
return FALSE;
}
-static VALUE
-newobj(VALUE klass, VALUE flags)
+int
+rb_during_gc(void)
+{
+ rb_objspace_t *objspace = &rb_objspace;
+ return during_gc;
+}
+
+#define RANY(o) ((RVALUE*)(o))
+
+VALUE
+rb_newobj(void)
{
rb_objspace_t *objspace = &rb_objspace;
VALUE obj;
@@ -650,42 +1179,22 @@ newobj(VALUE klass, VALUE flags)
}
}
- if (UNLIKELY(!has_free_object)) {
- if (!gc_prepare_free_objects(objspace)) {
+ if (UNLIKELY(!freelist)) {
+ if (!gc_lazy_sweep(objspace)) {
during_gc = 0;
rb_memerror();
}
}
- obj = (VALUE)objspace->heap.free_slots->freelist;
- objspace->heap.free_slots->freelist = RANY(obj)->as.free.next;
- if (objspace->heap.free_slots->freelist == NULL) {
- unlink_free_heap_slot(objspace, objspace->heap.free_slots);
- }
+ obj = (VALUE)freelist;
+ freelist = freelist->as.free.next;
MEMZERO((void*)obj, RVALUE, 1);
#ifdef GC_DEBUG
RANY(obj)->file = rb_sourcefile();
RANY(obj)->line = rb_sourceline();
#endif
- objspace->total_allocated_object_num++;
-
- return obj;
-}
-
-VALUE
-rb_newobj(void)
-{
- return newobj(0, T_NONE);
-}
-
-VALUE
-rb_newobj_of(VALUE klass, VALUE flags)
-{
- VALUE obj;
-
- obj = newobj(klass, flags);
- OBJSETUP(obj, klass, flags);
+ GC_PROF_INC_LIVE_NUM;
return obj;
}
@@ -756,14 +1265,129 @@ rb_objspace_data_type_name(VALUE obj)
}
}
-static void gc_mark(rb_objspace_t *objspace, VALUE ptr);
-static void gc_mark_children(rb_objspace_t *objspace, VALUE ptr);
+#ifdef __ia64
+#define SET_STACK_END (SET_MACHINE_STACK_END(&th->machine_stack_end), th->machine_register_stack_end = rb_ia64_bsp())
+#else
+#define SET_STACK_END SET_MACHINE_STACK_END(&th->machine_stack_end)
+#endif
+
+#define STACK_START (th->machine_stack_start)
+#define STACK_END (th->machine_stack_end)
+#define STACK_LEVEL_MAX (th->machine_stack_maxsize/sizeof(VALUE))
+
+#if STACK_GROW_DIRECTION < 0
+# define STACK_LENGTH (size_t)(STACK_START - STACK_END)
+#elif STACK_GROW_DIRECTION > 0
+# define STACK_LENGTH (size_t)(STACK_END - STACK_START + 1)
+#else
+# define STACK_LENGTH ((STACK_END < STACK_START) ? (size_t)(STACK_START - STACK_END) \
+ : (size_t)(STACK_END - STACK_START + 1))
+#endif
+#if !STACK_GROW_DIRECTION
+int ruby_stack_grow_direction;
+int
+ruby_get_stack_grow_direction(volatile VALUE *addr)
+{
+ VALUE *end;
+ SET_MACHINE_STACK_END(&end);
+
+ if (end > addr) return ruby_stack_grow_direction = 1;
+ return ruby_stack_grow_direction = -1;
+}
+#endif
+
+#define GC_LEVEL_MAX 250
+#define STACKFRAME_FOR_GC_MARK (GC_LEVEL_MAX * GC_MARK_STACKFRAME_WORD)
+
+size_t
+ruby_stack_length(VALUE **p)
+{
+ rb_thread_t *th = GET_THREAD();
+ SET_STACK_END;
+ if (p) *p = STACK_UPPER(STACK_END, STACK_START, STACK_END);
+ return STACK_LENGTH;
+}
+
+static int
+stack_check(int water_mark)
+{
+ int ret;
+ rb_thread_t *th = GET_THREAD();
+ SET_STACK_END;
+ ret = STACK_LENGTH > STACK_LEVEL_MAX - water_mark;
+#ifdef __ia64
+ if (!ret) {
+ ret = (VALUE*)rb_ia64_bsp() - th->machine_register_stack_start >
+ th->machine_register_stack_maxsize/sizeof(VALUE) - water_mark;
+ }
+#endif
+ return ret;
+}
+
+#define STACKFRAME_FOR_CALL_CFUNC 512
+
+int
+ruby_stack_check(void)
+{
+#if defined(POSIX_SIGNAL) && defined(SIGSEGV) && defined(HAVE_SIGALTSTACK)
+ return 0;
+#else
+ return stack_check(STACKFRAME_FOR_CALL_CFUNC);
+#endif
+}
+
+static void
+init_mark_stack(rb_objspace_t *objspace)
+{
+ mark_stack_overflow = 0;
+ mark_stack_ptr = mark_stack;
+}
+
+#define MARK_STACK_EMPTY (mark_stack_ptr == mark_stack)
+
+static void gc_mark(rb_objspace_t *objspace, VALUE ptr, int lev);
+static void gc_mark_children(rb_objspace_t *objspace, VALUE ptr, int lev);
+
+static void
+gc_mark_all(rb_objspace_t *objspace)
+{
+ RVALUE *p, *pend;
+ size_t i;
+
+ init_mark_stack(objspace);
+ for (i = 0; i < heaps_used; i++) {
+ p = objspace->heap.sorted[i].start; pend = objspace->heap.sorted[i].end;
+ while (p < pend) {
+ if ((p->as.basic.flags & FL_MARK) &&
+ (p->as.basic.flags != FL_MARK)) {
+ gc_mark_children(objspace, (VALUE)p, 0);
+ }
+ p++;
+ }
+ }
+}
+
+static void
+gc_mark_rest(rb_objspace_t *objspace)
+{
+ VALUE tmp_arry[MARK_STACK_MAX];
+ VALUE *p;
+
+ p = (mark_stack_ptr - mark_stack) + tmp_arry;
+ MEMCPY(tmp_arry, mark_stack, VALUE, p - tmp_arry);
+
+ init_mark_stack(objspace);
+ while (p != tmp_arry) {
+ p--;
+ gc_mark_children(objspace, *p, 0);
+ }
+}
static inline int
is_pointer_to_heap(rb_objspace_t *objspace, void *ptr)
{
register RVALUE *p = RANY(ptr);
- register struct heaps_header *heap;
+ register struct sorted_heaps_slot *heap;
register size_t hi, lo, mid;
if (p < lomem || p > himem) return FALSE;
@@ -774,7 +1398,7 @@ is_pointer_to_heap(rb_objspace_t *objspace, void *ptr)
hi = heaps_used;
while (lo < hi) {
mid = (lo + hi) / 2;
- heap = objspace->heap.sorted[mid];
+ heap = &objspace->heap.sorted[mid];
if (heap->start <= p) {
if (p < heap->end)
return TRUE;
@@ -787,12 +1411,161 @@ is_pointer_to_heap(rb_objspace_t *objspace, void *ptr)
return FALSE;
}
+static void
+mark_locations_array(rb_objspace_t *objspace, register VALUE *x, register long n)
+{
+ VALUE v;
+ while (n--) {
+ v = *x;
+ VALGRIND_MAKE_MEM_DEFINED(&v, sizeof(v));
+ if (is_pointer_to_heap(objspace, (void *)v)) {
+ gc_mark(objspace, v, 0);
+ }
+ x++;
+ }
+}
+
+static void
+gc_mark_locations(rb_objspace_t *objspace, VALUE *start, VALUE *end)
+{
+ long n;
+
+ if (end <= start) return;
+ n = end - start;
+ mark_locations_array(objspace, start, n);
+}
+
+void
+rb_gc_mark_locations(VALUE *start, VALUE *end)
+{
+ gc_mark_locations(&rb_objspace, start, end);
+}
+
+#define rb_gc_mark_locations(start, end) gc_mark_locations(objspace, (start), (end))
+
+struct mark_tbl_arg {
+ rb_objspace_t *objspace;
+ int lev;
+};
+
static int
-free_method_entry_i(ID key, rb_method_entry_t *me, st_data_t data)
+mark_entry(ID key, VALUE value, st_data_t data)
+{
+ struct mark_tbl_arg *arg = (void*)data;
+ gc_mark(arg->objspace, value, arg->lev);
+ return ST_CONTINUE;
+}
+
+static void
+mark_tbl(rb_objspace_t *objspace, st_table *tbl, int lev)
{
- if (!me->mark) {
- rb_free_method_entry(me);
+ struct mark_tbl_arg arg;
+ if (!tbl || tbl->num_entries == 0) return;
+ arg.objspace = objspace;
+ arg.lev = lev;
+ st_foreach(tbl, mark_entry, (st_data_t)&arg);
+}
+
+static int
+mark_key(VALUE key, VALUE value, st_data_t data)
+{
+ struct mark_tbl_arg *arg = (void*)data;
+ gc_mark(arg->objspace, key, arg->lev);
+ return ST_CONTINUE;
+}
+
+static void
+mark_set(rb_objspace_t *objspace, st_table *tbl, int lev)
+{
+ struct mark_tbl_arg arg;
+ if (!tbl) return;
+ arg.objspace = objspace;
+ arg.lev = lev;
+ st_foreach(tbl, mark_key, (st_data_t)&arg);
+}
+
+void
+rb_mark_set(st_table *tbl)
+{
+ mark_set(&rb_objspace, tbl, 0);
+}
+
+static int
+mark_keyvalue(VALUE key, VALUE value, st_data_t data)
+{
+ struct mark_tbl_arg *arg = (void*)data;
+ gc_mark(arg->objspace, key, arg->lev);
+ gc_mark(arg->objspace, value, arg->lev);
+ return ST_CONTINUE;
+}
+
+static void
+mark_hash(rb_objspace_t *objspace, st_table *tbl, int lev)
+{
+ struct mark_tbl_arg arg;
+ if (!tbl) return;
+ arg.objspace = objspace;
+ arg.lev = lev;
+ st_foreach(tbl, mark_keyvalue, (st_data_t)&arg);
+}
+
+void
+rb_mark_hash(st_table *tbl)
+{
+ mark_hash(&rb_objspace, tbl, 0);
+}
+
+static void
+mark_method_entry(rb_objspace_t *objspace, const rb_method_entry_t *me, int lev)
+{
+ const rb_method_definition_t *def = me->def;
+
+ gc_mark(objspace, me->klass, lev);
+ if (!def) return;
+ switch (def->type) {
+ case VM_METHOD_TYPE_ISEQ:
+ gc_mark(objspace, def->body.iseq->self, lev);
+ break;
+ case VM_METHOD_TYPE_BMETHOD:
+ gc_mark(objspace, def->body.proc, lev);
+ break;
+ case VM_METHOD_TYPE_ATTRSET:
+ case VM_METHOD_TYPE_IVAR:
+ gc_mark(objspace, def->body.attr.location, lev);
+ break;
+ default:
+ break; /* ignore */
}
+}
+
+void
+rb_mark_method_entry(const rb_method_entry_t *me)
+{
+ mark_method_entry(&rb_objspace, me, 0);
+}
+
+static int
+mark_method_entry_i(ID key, const rb_method_entry_t *me, st_data_t data)
+{
+ struct mark_tbl_arg *arg = (void*)data;
+ mark_method_entry(arg->objspace, me, arg->lev);
+ return ST_CONTINUE;
+}
+
+static void
+mark_m_tbl(rb_objspace_t *objspace, st_table *tbl, int lev)
+{
+ struct mark_tbl_arg arg;
+ if (!tbl) return;
+ arg.objspace = objspace;
+ arg.lev = lev;
+ st_foreach(tbl, mark_method_entry_i, (st_data_t)&arg);
+}
+
+static int
+free_method_entry_i(ID key, rb_method_entry_t *me, st_data_t data)
+{
+ rb_free_method_entry(me);
return ST_CONTINUE;
}
@@ -804,6 +1577,24 @@ rb_free_m_table(st_table *tbl)
}
static int
+mark_const_entry_i(ID key, const rb_const_entry_t *ce, st_data_t data)
+{
+ struct mark_tbl_arg *arg = (void*)data;
+ gc_mark(arg->objspace, ce->value, arg->lev);
+ return ST_CONTINUE;
+}
+
+static void
+mark_const_tbl(rb_objspace_t *objspace, st_table *tbl, int lev)
+{
+ struct mark_tbl_arg arg;
+ if (!tbl) return;
+ arg.objspace = objspace;
+ arg.lev = lev;
+ st_foreach(tbl, mark_const_entry_i, (st_data_t)&arg);
+}
+
+static int
free_const_entry_i(ID key, rb_const_entry_t *ce, st_data_t data)
{
xfree(ce);
@@ -817,20 +1608,357 @@ rb_free_const_table(st_table *tbl)
st_free_table(tbl);
}
-static int obj_free(rb_objspace_t *, VALUE);
+void
+rb_mark_tbl(st_table *tbl)
+{
+ mark_tbl(&rb_objspace, tbl, 0);
+}
-static inline struct heaps_slot *
-add_slot_local_freelist(rb_objspace_t *objspace, RVALUE *p)
+void
+rb_gc_mark_maybe(VALUE obj)
{
- struct heaps_slot *slot;
+ if (is_pointer_to_heap(&rb_objspace, (void *)obj)) {
+ gc_mark(&rb_objspace, obj, 0);
+ }
+}
+
+static void
+gc_mark(rb_objspace_t *objspace, VALUE ptr, int lev)
+{
+ register RVALUE *obj;
+
+ obj = RANY(ptr);
+ if (rb_special_const_p(ptr)) return; /* special const not marked */
+ if (obj->as.basic.flags == 0) return; /* free cell */
+ if (obj->as.basic.flags & FL_MARK) return; /* already marked */
+ obj->as.basic.flags |= FL_MARK;
+ objspace->heap.live_num++;
+
+ if (lev > GC_LEVEL_MAX || (lev == 0 && stack_check(STACKFRAME_FOR_GC_MARK))) {
+ if (!mark_stack_overflow) {
+ if (mark_stack_ptr - mark_stack < MARK_STACK_MAX) {
+ *mark_stack_ptr = ptr;
+ mark_stack_ptr++;
+ }
+ else {
+ mark_stack_overflow = 1;
+ }
+ }
+ return;
+ }
+ gc_mark_children(objspace, ptr, lev+1);
+}
+
+void
+rb_gc_mark(VALUE ptr)
+{
+ gc_mark(&rb_objspace, ptr, 0);
+}
+
+static void
+gc_mark_children(rb_objspace_t *objspace, VALUE ptr, int lev)
+{
+ register RVALUE *obj = RANY(ptr);
+
+ goto marking; /* skip */
+
+ again:
+ obj = RANY(ptr);
+ if (rb_special_const_p(ptr)) return; /* special const not marked */
+ if (obj->as.basic.flags == 0) return; /* free cell */
+ if (obj->as.basic.flags & FL_MARK) return; /* already marked */
+ obj->as.basic.flags |= FL_MARK;
+ objspace->heap.live_num++;
+
+ marking:
+ if (FL_TEST(obj, FL_EXIVAR)) {
+ rb_mark_generic_ivar(ptr);
+ }
+
+ switch (BUILTIN_TYPE(obj)) {
+ case T_NIL:
+ case T_FIXNUM:
+ rb_bug("rb_gc_mark() called for broken object");
+ break;
+
+ case T_NODE:
+ switch (nd_type(obj)) {
+ case NODE_IF: /* 1,2,3 */
+ case NODE_FOR:
+ case NODE_ITER:
+ case NODE_WHEN:
+ case NODE_MASGN:
+ case NODE_RESCUE:
+ case NODE_RESBODY:
+ case NODE_CLASS:
+ case NODE_BLOCK_PASS:
+ gc_mark(objspace, (VALUE)obj->as.node.u2.node, lev);
+ /* fall through */
+ case NODE_BLOCK: /* 1,3 */
+ case NODE_OPTBLOCK:
+ case NODE_ARRAY:
+ case NODE_DSTR:
+ case NODE_DXSTR:
+ case NODE_DREGX:
+ case NODE_DREGX_ONCE:
+ case NODE_ENSURE:
+ case NODE_CALL:
+ case NODE_DEFS:
+ case NODE_OP_ASGN1:
+ case NODE_ARGS:
+ gc_mark(objspace, (VALUE)obj->as.node.u1.node, lev);
+ /* fall through */
+ case NODE_SUPER: /* 3 */
+ case NODE_FCALL:
+ case NODE_DEFN:
+ case NODE_ARGS_AUX:
+ ptr = (VALUE)obj->as.node.u3.node;
+ goto again;
+
+ case NODE_WHILE: /* 1,2 */
+ case NODE_UNTIL:
+ case NODE_AND:
+ case NODE_OR:
+ case NODE_CASE:
+ case NODE_SCLASS:
+ case NODE_DOT2:
+ case NODE_DOT3:
+ case NODE_FLIP2:
+ case NODE_FLIP3:
+ case NODE_MATCH2:
+ case NODE_MATCH3:
+ case NODE_OP_ASGN_OR:
+ case NODE_OP_ASGN_AND:
+ case NODE_MODULE:
+ case NODE_ALIAS:
+ case NODE_VALIAS:
+ case NODE_ARGSCAT:
+ gc_mark(objspace, (VALUE)obj->as.node.u1.node, lev);
+ /* fall through */
+ case NODE_GASGN: /* 2 */
+ case NODE_LASGN:
+ case NODE_DASGN:
+ case NODE_DASGN_CURR:
+ case NODE_IASGN:
+ case NODE_IASGN2:
+ case NODE_CVASGN:
+ case NODE_COLON3:
+ case NODE_OPT_N:
+ case NODE_EVSTR:
+ case NODE_UNDEF:
+ case NODE_POSTEXE:
+ ptr = (VALUE)obj->as.node.u2.node;
+ goto again;
+
+ case NODE_HASH: /* 1 */
+ case NODE_LIT:
+ case NODE_STR:
+ case NODE_XSTR:
+ case NODE_DEFINED:
+ case NODE_MATCH:
+ case NODE_RETURN:
+ case NODE_BREAK:
+ case NODE_NEXT:
+ case NODE_YIELD:
+ case NODE_COLON2:
+ case NODE_SPLAT:
+ case NODE_TO_ARY:
+ ptr = (VALUE)obj->as.node.u1.node;
+ goto again;
+
+ case NODE_SCOPE: /* 2,3 */
+ case NODE_CDECL:
+ case NODE_OPT_ARG:
+ gc_mark(objspace, (VALUE)obj->as.node.u3.node, lev);
+ ptr = (VALUE)obj->as.node.u2.node;
+ goto again;
+
+ case NODE_ZARRAY: /* - */
+ case NODE_ZSUPER:
+ case NODE_VCALL:
+ case NODE_GVAR:
+ case NODE_LVAR:
+ case NODE_DVAR:
+ case NODE_IVAR:
+ case NODE_CVAR:
+ case NODE_NTH_REF:
+ case NODE_BACK_REF:
+ case NODE_REDO:
+ case NODE_RETRY:
+ case NODE_SELF:
+ case NODE_NIL:
+ case NODE_TRUE:
+ case NODE_FALSE:
+ case NODE_ERRINFO:
+ case NODE_BLOCK_ARG:
+ break;
+ case NODE_ALLOCA:
+ mark_locations_array(objspace,
+ (VALUE*)obj->as.node.u1.value,
+ obj->as.node.u3.cnt);
+ ptr = (VALUE)obj->as.node.u2.node;
+ goto again;
+
+ default: /* unlisted NODE */
+ if (is_pointer_to_heap(objspace, obj->as.node.u1.node)) {
+ gc_mark(objspace, (VALUE)obj->as.node.u1.node, lev);
+ }
+ if (is_pointer_to_heap(objspace, obj->as.node.u2.node)) {
+ gc_mark(objspace, (VALUE)obj->as.node.u2.node, lev);
+ }
+ if (is_pointer_to_heap(objspace, obj->as.node.u3.node)) {
+ gc_mark(objspace, (VALUE)obj->as.node.u3.node, lev);
+ }
+ }
+ return; /* no need to mark class. */
+ }
- (void)VALGRIND_MAKE_MEM_UNDEFINED((void*)p, sizeof(RVALUE));
+ gc_mark(objspace, obj->as.basic.klass, lev);
+ switch (BUILTIN_TYPE(obj)) {
+ case T_ICLASS:
+ case T_CLASS:
+ case T_MODULE:
+ mark_m_tbl(objspace, RCLASS_M_TBL(obj), lev);
+ mark_tbl(objspace, RCLASS_IV_TBL(obj), lev);
+ mark_const_tbl(objspace, RCLASS_CONST_TBL(obj), lev);
+ ptr = RCLASS_SUPER(obj);
+ goto again;
+
+ case T_ARRAY:
+ if (FL_TEST(obj, ELTS_SHARED)) {
+ ptr = obj->as.array.as.heap.aux.shared;
+ goto again;
+ }
+ else {
+ long i, len = RARRAY_LEN(obj);
+ VALUE *ptr = RARRAY_PTR(obj);
+ for (i=0; i < len; i++) {
+ gc_mark(objspace, *ptr++, lev);
+ }
+ }
+ break;
+
+ case T_HASH:
+ mark_hash(objspace, obj->as.hash.ntbl, lev);
+ ptr = obj->as.hash.ifnone;
+ goto again;
+
+ case T_STRING:
+#define STR_ASSOC FL_USER3 /* copied from string.c */
+ if (FL_TEST(obj, RSTRING_NOEMBED) && FL_ANY(obj, ELTS_SHARED|STR_ASSOC)) {
+ ptr = obj->as.string.as.heap.aux.shared;
+ goto again;
+ }
+ break;
+
+ case T_DATA:
+ if (RTYPEDDATA_P(obj)) {
+ RUBY_DATA_FUNC mark_func = obj->as.typeddata.type->function.dmark;
+ if (mark_func) (*mark_func)(DATA_PTR(obj));
+ }
+ else {
+ if (obj->as.data.dmark) (*obj->as.data.dmark)(DATA_PTR(obj));
+ }
+ break;
+
+ case T_OBJECT:
+ {
+ long i, len = ROBJECT_NUMIV(obj);
+ VALUE *ptr = ROBJECT_IVPTR(obj);
+ for (i = 0; i < len; i++) {
+ gc_mark(objspace, *ptr++, lev);
+ }
+ }
+ break;
+
+ case T_FILE:
+ if (obj->as.file.fptr) {
+ gc_mark(objspace, obj->as.file.fptr->pathv, lev);
+ gc_mark(objspace, obj->as.file.fptr->tied_io_for_writing, lev);
+ gc_mark(objspace, obj->as.file.fptr->writeconv_asciicompat, lev);
+ gc_mark(objspace, obj->as.file.fptr->writeconv_pre_ecopts, lev);
+ gc_mark(objspace, obj->as.file.fptr->encs.ecopts, lev);
+ gc_mark(objspace, obj->as.file.fptr->write_lock, lev);
+ }
+ break;
+
+ case T_REGEXP:
+ gc_mark(objspace, obj->as.regexp.src, lev);
+ break;
+
+ case T_FLOAT:
+ case T_BIGNUM:
+ case T_ZOMBIE:
+ break;
+
+ case T_MATCH:
+ gc_mark(objspace, obj->as.match.regexp, lev);
+ if (obj->as.match.str) {
+ ptr = obj->as.match.str;
+ goto again;
+ }
+ break;
+
+ case T_RATIONAL:
+ gc_mark(objspace, obj->as.rational.num, lev);
+ gc_mark(objspace, obj->as.rational.den, lev);
+ break;
+
+ case T_COMPLEX:
+ gc_mark(objspace, obj->as.complex.real, lev);
+ gc_mark(objspace, obj->as.complex.imag, lev);
+ break;
+
+ case T_STRUCT:
+ {
+ long len = RSTRUCT_LEN(obj);
+ VALUE *ptr = RSTRUCT_PTR(obj);
+
+ while (len--) {
+ gc_mark(objspace, *ptr++, lev);
+ }
+ }
+ break;
+
+ default:
+ rb_bug("rb_gc_mark(): unknown data type 0x%x(%p) %s",
+ BUILTIN_TYPE(obj), (void *)obj,
+ is_pointer_to_heap(objspace, obj) ? "corrupted object" : "non object");
+ }
+}
+
+static int obj_free(rb_objspace_t *, VALUE);
+
+static inline void
+add_freelist(rb_objspace_t *objspace, RVALUE *p)
+{
+ VALGRIND_MAKE_MEM_UNDEFINED((void*)p, sizeof(RVALUE));
p->as.free.flags = 0;
- slot = GET_HEAP_SLOT(p);
- p->as.free.next = slot->freelist;
- slot->freelist = p;
+ p->as.free.next = freelist;
+ freelist = p;
+}
- return slot;
+static void
+finalize_list(rb_objspace_t *objspace, RVALUE *p)
+{
+ while (p) {
+ RVALUE *tmp = p->as.free.next;
+ run_final(objspace, (VALUE)p);
+ if (!FL_TEST(p, FL_SINGLETON)) { /* not freeing page */
+ if (objspace->heap.sweep_slots) {
+ p->as.free.flags = 0;
+ }
+ else {
+ GC_PROF_DEC_LIVE_NUM;
+ add_freelist(objspace, p);
+ }
+ }
+ else {
+ struct heaps_slot *slot = (struct heaps_slot *)(VALUE)RDATA(p)->dmark;
+ slot->limit--;
+ }
+ p = tmp;
+ }
}
static void
@@ -848,24 +1976,22 @@ unlink_heap_slot(rb_objspace_t *objspace, struct heaps_slot *slot)
slot->next = NULL;
}
+
static void
free_unused_heaps(rb_objspace_t *objspace)
{
size_t i, j;
- struct heaps_header *last = 0;
+ RVALUE *last = 0;
for (i = j = 1; j < heaps_used; i++) {
- if (objspace->heap.sorted[i]->limit == 0) {
- struct heaps_header* h = objspace->heap.sorted[i];
- ((struct heaps_free_bitmap *)(h->bits))->next =
- objspace->heap.free_bitmap;
- objspace->heap.free_bitmap = (struct heaps_free_bitmap *)h->bits;
+ if (objspace->heap.sorted[i].slot->limit == 0) {
if (!last) {
- last = objspace->heap.sorted[i];
+ last = objspace->heap.sorted[i].slot->membase;
}
else {
- aligned_free(objspace->heap.sorted[i]);
+ free(objspace->heap.sorted[i].slot->membase);
}
+ free(objspace->heap.sorted[i].slot);
heaps_used--;
}
else {
@@ -877,14 +2003,246 @@ free_unused_heaps(rb_objspace_t *objspace)
}
if (last) {
if (last < heaps_freed) {
- aligned_free(heaps_freed);
+ free(heaps_freed);
heaps_freed = last;
}
else {
- aligned_free(last);
+ free(last);
}
}
}
+
+static void
+slot_sweep(rb_objspace_t *objspace, struct heaps_slot *sweep_slot)
+{
+ size_t free_num = 0, final_num = 0;
+ RVALUE *p, *pend;
+ RVALUE *free = freelist, *final = deferred_final_list;
+ int deferred;
+
+ p = sweep_slot->slot; pend = p + sweep_slot->limit;
+ while (p < pend) {
+ if (!(p->as.basic.flags & FL_MARK)) {
+ if (p->as.basic.flags &&
+ ((deferred = obj_free(objspace, (VALUE)p)) ||
+ (FL_TEST(p, FL_FINALIZE)))) {
+ if (!deferred) {
+ p->as.free.flags = T_ZOMBIE;
+ RDATA(p)->dfree = 0;
+ }
+ p->as.free.flags |= FL_MARK;
+ p->as.free.next = deferred_final_list;
+ deferred_final_list = p;
+ final_num++;
+ }
+ else {
+ add_freelist(objspace, p);
+ free_num++;
+ }
+ }
+ else if (BUILTIN_TYPE(p) == T_ZOMBIE) {
+ /* objects to be finalized */
+ /* do nothing remain marked */
+ }
+ else {
+ RBASIC(p)->flags &= ~FL_MARK;
+ }
+ p++;
+ }
+ if (final_num + free_num == sweep_slot->limit &&
+ objspace->heap.free_num > objspace->heap.do_heap_free) {
+ RVALUE *pp;
+
+ for (pp = deferred_final_list; pp != final; pp = pp->as.free.next) {
+ RDATA(pp)->dmark = (void (*)(void *))(VALUE)sweep_slot;
+ pp->as.free.flags |= FL_SINGLETON; /* freeing page mark */
+ }
+ sweep_slot->limit = final_num;
+ freelist = free; /* cancel this page from freelist */
+ unlink_heap_slot(objspace, sweep_slot);
+ }
+ else {
+ objspace->heap.free_num += free_num;
+ }
+ objspace->heap.final_num += final_num;
+
+ if (deferred_final_list) {
+ rb_thread_t *th = GET_THREAD();
+ if (th) {
+ RUBY_VM_SET_FINALIZER_INTERRUPT(th);
+ }
+ }
+}
+
+static int
+ready_to_gc(rb_objspace_t *objspace)
+{
+ if (dont_gc || during_gc) {
+ if (!freelist) {
+ if (!heaps_increment(objspace)) {
+ set_heaps_increment(objspace);
+ heaps_increment(objspace);
+ }
+ }
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static void
+before_gc_sweep(rb_objspace_t *objspace)
+{
+ freelist = 0;
+ objspace->heap.do_heap_free = (size_t)((heaps_used * HEAP_OBJ_LIMIT) * 0.65);
+ objspace->heap.free_min = (size_t)((heaps_used * HEAP_OBJ_LIMIT) * 0.2);
+ if (objspace->heap.free_min < initial_free_min) {
+ objspace->heap.do_heap_free = heaps_used * HEAP_OBJ_LIMIT;
+ objspace->heap.free_min = initial_free_min;
+ }
+ objspace->heap.sweep_slots = heaps;
+ objspace->heap.free_num = 0;
+
+ /* sweep unlinked method entries */
+ if (GET_VM()->unlinked_method_entry_list) {
+ rb_sweep_method_entry(GET_VM());
+ }
+}
+
+static void
+after_gc_sweep(rb_objspace_t *objspace)
+{
+ GC_PROF_SET_MALLOC_INFO;
+
+ if (objspace->heap.free_num < objspace->heap.free_min) {
+ set_heaps_increment(objspace);
+ heaps_increment(objspace);
+ }
+
+ if (malloc_increase > malloc_limit) {
+ malloc_limit += (size_t)((malloc_increase - malloc_limit) * (double)objspace->heap.live_num / (heaps_used * HEAP_OBJ_LIMIT));
+ if (malloc_limit < initial_malloc_limit) malloc_limit = initial_malloc_limit;
+ }
+ malloc_increase = 0;
+
+ free_unused_heaps(objspace);
+}
+
+static int
+lazy_sweep(rb_objspace_t *objspace)
+{
+ struct heaps_slot *next;
+
+ heaps_increment(objspace);
+ while (objspace->heap.sweep_slots) {
+ next = objspace->heap.sweep_slots->next;
+ slot_sweep(objspace, objspace->heap.sweep_slots);
+ objspace->heap.sweep_slots = next;
+ if (freelist) {
+ during_gc = 0;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static void
+rest_sweep(rb_objspace_t *objspace)
+{
+ if (objspace->heap.sweep_slots) {
+ while (objspace->heap.sweep_slots) {
+ lazy_sweep(objspace);
+ }
+ after_gc_sweep(objspace);
+ }
+}
+
+static void gc_marks(rb_objspace_t *objspace);
+
+static int
+gc_lazy_sweep(rb_objspace_t *objspace)
+{
+ int res;
+ INIT_GC_PROF_PARAMS;
+
+ if (objspace->flags.dont_lazy_sweep)
+ return garbage_collect(objspace);
+
+
+ if (!ready_to_gc(objspace)) return TRUE;
+
+ during_gc++;
+ GC_PROF_TIMER_START;
+ GC_PROF_SWEEP_TIMER_START;
+
+ if (objspace->heap.sweep_slots) {
+ res = lazy_sweep(objspace);
+ if (res) {
+ GC_PROF_SWEEP_TIMER_STOP;
+ GC_PROF_SET_MALLOC_INFO;
+ GC_PROF_TIMER_STOP(Qfalse);
+ return res;
+ }
+ after_gc_sweep(objspace);
+ }
+ else {
+ if (heaps_increment(objspace)) {
+ during_gc = 0;
+ return TRUE;
+ }
+ }
+
+ gc_marks(objspace);
+
+ before_gc_sweep(objspace);
+ if (objspace->heap.free_min > (heaps_used * HEAP_OBJ_LIMIT - objspace->heap.live_num)) {
+ set_heaps_increment(objspace);
+ }
+
+ GC_PROF_SWEEP_TIMER_START;
+ if(!(res = lazy_sweep(objspace))) {
+ after_gc_sweep(objspace);
+ if(freelist) {
+ res = TRUE;
+ during_gc = 0;
+ }
+ }
+ GC_PROF_SWEEP_TIMER_STOP;
+
+ GC_PROF_TIMER_STOP(Qtrue);
+ return res;
+}
+
+static void
+gc_sweep(rb_objspace_t *objspace)
+{
+ struct heaps_slot *next;
+
+ before_gc_sweep(objspace);
+
+ while (objspace->heap.sweep_slots) {
+ next = objspace->heap.sweep_slots->next;
+ slot_sweep(objspace, objspace->heap.sweep_slots);
+ objspace->heap.sweep_slots = next;
+ }
+
+ after_gc_sweep(objspace);
+
+ during_gc = 0;
+}
+
+void
+rb_gc_force_recycle(VALUE p)
+{
+ rb_objspace_t *objspace = &rb_objspace;
+ GC_PROF_DEC_LIVE_NUM;
+ if (RBASIC(p)->flags & FL_MARK) {
+ RANY(p)->as.free.flags = 0;
+ }
+ else {
+ add_freelist(objspace, (RVALUE *)p);
+ }
+}
+
static inline void
make_deferred(RVALUE *p)
{
@@ -927,9 +2285,7 @@ obj_free(rb_objspace_t *objspace, VALUE obj)
case T_MODULE:
case T_CLASS:
rb_clear_cache_by_class((VALUE)obj);
- if (RCLASS_M_TBL(obj)) {
- rb_free_m_table(RCLASS_M_TBL(obj));
- }
+ rb_free_m_table(RCLASS_M_TBL(obj));
if (RCLASS_IV_TBL(obj)) {
st_free_table(RCLASS_IV_TBL(obj));
}
@@ -1009,11 +2365,6 @@ obj_free(rb_objspace_t *objspace, VALUE obj)
xfree(RANY(obj)->as.node.u1.tbl);
}
break;
- case NODE_ARGS:
- if (RANY(obj)->as.node.u3.args) {
- xfree(RANY(obj)->as.node.u3.args);
- }
- break;
case NODE_ALLOCA:
xfree(RANY(obj)->as.node.u1.node);
break;
@@ -1028,19 +2379,227 @@ obj_free(rb_objspace_t *objspace, VALUE obj)
break;
default:
- rb_bug("gc_sweep(): unknown data type 0x%x(%p) 0x%"PRIxVALUE,
- BUILTIN_TYPE(obj), (void*)obj, RBASIC(obj)->flags);
+ rb_bug("gc_sweep(): unknown data type 0x%x(%p)",
+ BUILTIN_TYPE(obj), (void*)obj);
}
return 0;
}
+#define GC_NOTIFY 0
+
+#if STACK_GROW_DIRECTION < 0
+#define GET_STACK_BOUNDS(start, end, appendix) ((start) = STACK_END, (end) = STACK_START)
+#elif STACK_GROW_DIRECTION > 0
+#define GET_STACK_BOUNDS(start, end, appendix) ((start) = STACK_START, (end) = STACK_END+(appendix))
+#else
+#define GET_STACK_BOUNDS(start, end, appendix) \
+ ((STACK_END < STACK_START) ? \
+ ((start) = STACK_END, (end) = STACK_START) : ((start) = STACK_START, (end) = STACK_END+(appendix)))
+#endif
+
+#define numberof(array) (int)(sizeof(array) / sizeof((array)[0]))
+
+static void
+mark_current_machine_context(rb_objspace_t *objspace, rb_thread_t *th)
+{
+ union {
+ rb_jmp_buf j;
+ VALUE v[sizeof(rb_jmp_buf) / sizeof(VALUE)];
+ } save_regs_gc_mark;
+ VALUE *stack_start, *stack_end;
+
+ FLUSH_REGISTER_WINDOWS;
+ /* This assumes that all registers are saved into the jmp_buf (and stack) */
+ rb_setjmp(save_regs_gc_mark.j);
+
+ SET_STACK_END;
+ GET_STACK_BOUNDS(stack_start, stack_end, 1);
+
+ mark_locations_array(objspace, save_regs_gc_mark.v, numberof(save_regs_gc_mark.v));
+
+ rb_gc_mark_locations(stack_start, stack_end);
+#ifdef __ia64
+ rb_gc_mark_locations(th->machine_register_stack_start, th->machine_register_stack_end);
+#endif
+#if defined(__mc68000__)
+ mark_locations_array(objspace, (VALUE*)((char*)STACK_END + 2),
+ (STACK_START - STACK_END));
+#endif
+}
+
+static void
+gc_marks(rb_objspace_t *objspace)
+{
+ struct gc_list *list;
+ rb_thread_t *th = GET_THREAD();
+ GC_PROF_MARK_TIMER_START;
+
+ objspace->heap.live_num = 0;
+ objspace->count++;
+
+
+ SET_STACK_END;
+
+ init_mark_stack(objspace);
+
+ th->vm->self ? rb_gc_mark(th->vm->self) : rb_vm_mark(th->vm);
+
+ mark_tbl(objspace, finalizer_table, 0);
+ mark_current_machine_context(objspace, th);
+
+ rb_gc_mark_symbols();
+ rb_gc_mark_encodings();
+
+ /* mark protected global variables */
+ for (list = global_List; list; list = list->next) {
+ rb_gc_mark_maybe(*list->varptr);
+ }
+ rb_mark_end_proc();
+ rb_gc_mark_global_tbl();
+
+ mark_tbl(objspace, rb_class_tbl, 0);
+
+ /* mark generic instance variables for special constants */
+ rb_mark_generic_ivar_tbl();
+
+ rb_gc_mark_parser();
+
+ rb_gc_mark_unlinked_live_method_entries(th->vm);
+
+ /* gc_mark objects whose marking are not completed*/
+ while (!MARK_STACK_EMPTY) {
+ if (mark_stack_overflow) {
+ gc_mark_all(objspace);
+ }
+ else {
+ gc_mark_rest(objspace);
+ }
+ }
+ GC_PROF_MARK_TIMER_STOP;
+}
+
+static int
+garbage_collect(rb_objspace_t *objspace)
+{
+ INIT_GC_PROF_PARAMS;
+
+ if (GC_NOTIFY) printf("start garbage_collect()\n");
+
+ if (!heaps) {
+ return FALSE;
+ }
+ if (!ready_to_gc(objspace)) {
+ return TRUE;
+ }
+
+ GC_PROF_TIMER_START;
+
+ rest_sweep(objspace);
+
+ during_gc++;
+ gc_marks(objspace);
+
+ GC_PROF_SWEEP_TIMER_START;
+ gc_sweep(objspace);
+ GC_PROF_SWEEP_TIMER_STOP;
+
+ GC_PROF_TIMER_STOP(Qtrue);
+ if (GC_NOTIFY) printf("end garbage_collect()\n");
+ return TRUE;
+}
+
+int
+rb_garbage_collect(void)
+{
+ return garbage_collect(&rb_objspace);
+}
+
+void
+rb_gc_mark_machine_stack(rb_thread_t *th)
+{
+ rb_objspace_t *objspace = &rb_objspace;
+ VALUE *stack_start, *stack_end;
+
+ GET_STACK_BOUNDS(stack_start, stack_end, 0);
+ rb_gc_mark_locations(stack_start, stack_end);
+#ifdef __ia64
+ rb_gc_mark_locations(th->machine_register_stack_start, th->machine_register_stack_end);
+#endif
+}
+
+
+/*
+ * call-seq:
+ * GC.start -> nil
+ * gc.garbage_collect -> nil
+ * ObjectSpace.garbage_collect -> nil
+ *
+ * Initiates garbage collection, unless manually disabled.
+ *
+ */
+
+VALUE
+rb_gc_start(void)
+{
+ rb_gc();
+ return Qnil;
+}
+
+#undef Init_stack
+
+void
+Init_stack(volatile VALUE *addr)
+{
+ ruby_init_stack(addr);
+}
+
+/*
+ * Document-class: ObjectSpace
+ *
+ * The <code>ObjectSpace</code> module contains a number of routines
+ * that interact with the garbage collection facility and allow you to
+ * traverse all living objects with an iterator.
+ *
+ * <code>ObjectSpace</code> also provides support for object
+ * finalizers, procs that will be called when a specific object is
+ * about to be destroyed by garbage collection.
+ *
+ * include ObjectSpace
+ *
+ *
+ * a = "A"
+ * b = "B"
+ * c = "C"
+ *
+ *
+ * define_finalizer(a, proc {|id| puts "Finalizer one on #{id}" })
+ * define_finalizer(a, proc {|id| puts "Finalizer two on #{id}" })
+ * define_finalizer(b, proc {|id| puts "Finalizer three on #{id}" })
+ *
+ * <em>produces:</em>
+ *
+ * Finalizer three on 537763470
+ * Finalizer one on 537763480
+ * Finalizer two on 537763480
+ *
+ */
+
void
Init_heap(void)
{
init_heap(&rb_objspace);
}
+static VALUE
+lazy_sweep_enable(void)
+{
+ rb_objspace_t *objspace = &rb_objspace;
+
+ objspace->flags.dont_lazy_sweep = FALSE;
+ return Qnil;
+}
+
typedef int each_obj_callback(void *, void *, size_t, void *);
struct each_obj_args {
@@ -1060,16 +2619,16 @@ objspace_each_objects(VALUE arg)
i = 0;
while (i < heaps_used) {
- while (0 < i && (uintptr_t)membase < (uintptr_t)objspace->heap.sorted[i-1])
+ while (0 < i && (uintptr_t)membase < (uintptr_t)objspace->heap.sorted[i-1].slot->membase)
i--;
- while (i < heaps_used && (uintptr_t)objspace->heap.sorted[i] <= (uintptr_t)membase)
+ while (i < heaps_used && (uintptr_t)objspace->heap.sorted[i].slot->membase <= (uintptr_t)membase)
i++;
if (heaps_used <= i)
break;
- membase = (RVALUE *)objspace->heap.sorted[i];
+ membase = objspace->heap.sorted[i].slot->membase;
- pstart = objspace->heap.sorted[i]->start;
- pend = pstart + objspace->heap.sorted[i]->limit;
+ pstart = objspace->heap.sorted[i].slot->slot;
+ pend = pstart + objspace->heap.sorted[i].slot->limit;
for (; pstart != pend; pstart++) {
if (pstart->as.basic.flags) {
@@ -1083,7 +2642,6 @@ objspace_each_objects(VALUE arg)
}
}
}
- RB_GC_GUARD(v);
return Qnil;
}
@@ -1144,46 +2702,30 @@ struct os_each_struct {
};
static int
-internal_object_p(VALUE obj)
-{
- RVALUE *p = (RVALUE *)obj;
-
- if (p->as.basic.flags) {
- switch (BUILTIN_TYPE(p)) {
- case T_NONE:
- case T_ICLASS:
- case T_NODE:
- case T_ZOMBIE:
- break;
- case T_CLASS:
- if (FL_TEST(p, FL_SINGLETON))
- break;
- default:
- if (!p->as.basic.klass) break;
- return 0;
- }
- }
- return 1;
-}
-
-int
-rb_objspace_internal_object_p(VALUE obj)
-{
- return internal_object_p(obj);
-}
-
-static int
os_obj_of_i(void *vstart, void *vend, size_t stride, void *data)
{
struct os_each_struct *oes = (struct os_each_struct *)data;
RVALUE *p = (RVALUE *)vstart, *pend = (RVALUE *)vend;
+ volatile VALUE v;
for (; p != pend; p++) {
- volatile VALUE v = (VALUE)p;
- if (!internal_object_p(v)) {
- if (!oes->of || rb_obj_is_kind_of(v, oes->of)) {
- rb_yield(v);
- oes->num++;
+ if (p->as.basic.flags) {
+ switch (BUILTIN_TYPE(p)) {
+ case T_NONE:
+ case T_ICLASS:
+ case T_NODE:
+ case T_ZOMBIE:
+ continue;
+ case T_CLASS:
+ if (FL_TEST(p, FL_SINGLETON))
+ continue;
+ default:
+ if (!p->as.basic.klass) continue;
+ v = (VALUE)p;
+ if (!oes->of || rb_obj_is_kind_of(v, oes->of)) {
+ rb_yield(v);
+ oes->num++;
+ }
}
}
}
@@ -1265,12 +2807,6 @@ os_each_obj(int argc, VALUE *argv, VALUE os)
static VALUE
undefine_final(VALUE os, VALUE obj)
{
- return rb_undefine_final(obj);
-}
-
-VALUE
-rb_undefine_final(VALUE obj)
-{
rb_objspace_t *objspace = &rb_objspace;
st_data_t data = obj;
rb_check_frozen(obj);
@@ -1291,7 +2827,9 @@ rb_undefine_final(VALUE obj)
static VALUE
define_final(int argc, VALUE *argv, VALUE os)
{
- VALUE obj, block;
+ rb_objspace_t *objspace = &rb_objspace;
+ VALUE obj, block, table;
+ st_data_t data;
rb_scan_args(argc, argv, "11", &obj, &block);
rb_check_frozen(obj);
@@ -1302,17 +2840,6 @@ define_final(int argc, VALUE *argv, VALUE os)
rb_raise(rb_eArgError, "wrong type argument %s (should be callable)",
rb_obj_classname(block));
}
-
- return define_final0(obj, block);
-}
-
-static VALUE
-define_final0(VALUE obj, VALUE block)
-{
- rb_objspace_t *objspace = &rb_objspace;
- VALUE table;
- st_data_t data;
-
if (!FL_ABLE(obj)) {
rb_raise(rb_eArgError, "cannot define finalizer for %s",
rb_obj_classname(obj));
@@ -1334,17 +2861,6 @@ define_final0(VALUE obj, VALUE block)
return block;
}
-VALUE
-rb_define_final(VALUE obj, VALUE block)
-{
- rb_check_frozen(obj);
- if (!rb_respond_to(block, rb_intern("call"))) {
- rb_raise(rb_eArgError, "wrong type argument %s (should be callable)",
- rb_obj_classname(block));
- }
- return define_final0(obj, block);
-}
-
void
rb_gc_copy_finalizer(VALUE dest, VALUE obj)
{
@@ -1369,13 +2885,11 @@ run_single_final(VALUE arg)
}
static void
-run_finalizer(rb_objspace_t *objspace, VALUE obj, VALUE table)
+run_finalizer(rb_objspace_t *objspace, VALUE objid, VALUE table)
{
long i;
int status;
VALUE args[3];
- VALUE objid = nonspecial_obj_id(obj);
- VALUE saved_errinfo = rb_errinfo();
if (RARRAY_LEN(table) > 0) {
args[1] = rb_obj_freeze(rb_ary_new3(1, objid));
@@ -1385,7 +2899,6 @@ run_finalizer(rb_objspace_t *objspace, VALUE obj, VALUE table)
}
args[2] = (VALUE)rb_safe_level();
- rb_set_errinfo(Qnil);
for (i=0; i<RARRAY_LEN(table); i++) {
VALUE final = RARRAY_PTR(table)[i];
args[0] = RARRAY_PTR(final)[1];
@@ -1395,17 +2908,18 @@ run_finalizer(rb_objspace_t *objspace, VALUE obj, VALUE table)
if (status)
rb_set_errinfo(Qnil);
}
- GET_THREAD()->errinfo = saved_errinfo;
}
static void
run_final(rb_objspace_t *objspace, VALUE obj)
{
+ VALUE objid;
RUBY_DATA_FUNC free_func = 0;
st_data_t key, table;
objspace->heap.final_num--;
+ objid = rb_obj_id(obj); /* make obj into id */
RBASIC(obj)->klass = 0;
if (RTYPEDDATA_P(obj)) {
@@ -1420,35 +2934,17 @@ run_final(rb_objspace_t *objspace, VALUE obj)
key = (st_data_t)obj;
if (st_delete(finalizer_table, &key, &table)) {
- run_finalizer(objspace, obj, (VALUE)table);
- }
-}
-
-static void
-finalize_list(rb_objspace_t *objspace, RVALUE *p)
-{
- while (p) {
- RVALUE *tmp = p->as.free.next;
- run_final(objspace, (VALUE)p);
- objspace->total_freed_object_num++;
- if (!FL_TEST(p, FL_SINGLETON)) { /* not freeing page */
- add_slot_local_freelist(objspace, p);
- objspace->heap.free_num++;
- }
- else {
- struct heaps_slot *slot = (struct heaps_slot *)(VALUE)RDATA(p)->dmark;
- slot->header->limit--;
- }
- p = tmp;
+ run_finalizer(objspace, objid, (VALUE)table);
}
}
static void
finalize_deferred(rb_objspace_t *objspace)
{
- RVALUE *p;
+ RVALUE *p = deferred_final_list;
+ deferred_final_list = 0;
- while ((p = ATOMIC_PTR_EXCHANGE(deferred_final_list, 0)) != 0) {
+ if (p) {
finalize_list(objspace, p);
}
}
@@ -1456,10 +2952,22 @@ finalize_deferred(rb_objspace_t *objspace)
void
rb_gc_finalize_deferred(void)
{
- rb_objspace_t *objspace = &rb_objspace;
- if (ATOMIC_EXCHANGE(finalizing, 1)) return;
- finalize_deferred(objspace);
- ATOMIC_SET(finalizing, 0);
+ finalize_deferred(&rb_objspace);
+}
+
+static int
+chain_finalized_object(st_data_t key, st_data_t val, st_data_t arg)
+{
+ RVALUE *p = (RVALUE *)key, **final_list = (RVALUE **)arg;
+ if ((p->as.basic.flags & (FL_FINALIZE|FL_MARK)) == FL_FINALIZE) {
+ if (BUILTIN_TYPE(p) != T_ZOMBIE) {
+ p->as.free.flags = FL_MARK | T_ZOMBIE; /* remain marked */
+ RDATA(p)->dfree = 0;
+ }
+ p->as.free.next = *final_list;
+ *final_list = p;
+ }
+ return ST_CONTINUE;
}
struct force_finalize_list {
@@ -1493,23 +3001,25 @@ rb_objspace_call_finalizer(rb_objspace_t *objspace)
RVALUE *final_list = 0;
size_t i;
- rest_sweep(objspace);
-
- if (ATOMIC_EXCHANGE(finalizing, 1)) return;
-
/* run finalizers */
- finalize_deferred(objspace);
- assert(deferred_final_list == 0);
+ rest_sweep(objspace);
+ do {
+ /* XXX: this loop will make no sense */
+ /* because mark will not be removed */
+ finalize_deferred(objspace);
+ mark_tbl(objspace, finalizer_table, 0);
+ st_foreach(finalizer_table, chain_finalized_object,
+ (st_data_t)&deferred_final_list);
+ } while (deferred_final_list);
/* force to run finalizer */
while (finalizer_table->num_entries) {
struct force_finalize_list *list = 0;
st_foreach(finalizer_table, force_chain_object, (st_data_t)&list);
while (list) {
struct force_finalize_list *curr = list;
- st_data_t obj = (st_data_t)curr->obj;
- run_finalizer(objspace, curr->obj, curr->table);
- st_delete(finalizer_table, &obj, 0);
+ run_finalizer(objspace, rb_obj_id(curr->obj), curr->table);
+ st_delete(finalizer_table, (st_data_t*)&curr->obj, 0);
list = curr->next;
xfree(curr);
}
@@ -1520,7 +3030,7 @@ rb_objspace_call_finalizer(rb_objspace_t *objspace)
/* run data object's finalizers */
for (i = 0; i < heaps_used; i++) {
- p = objspace->heap.sorted[i]->start; pend = p + objspace->heap.sorted[i]->limit;
+ p = objspace->heap.sorted[i].start; pend = objspace->heap.sorted[i].end;
while (p < pend) {
if (BUILTIN_TYPE(p) == T_DATA &&
DATA_PTR(p) && RANY(p)->as.data.dfree &&
@@ -1556,48 +3066,15 @@ rb_objspace_call_finalizer(rb_objspace_t *objspace)
st_free_table(finalizer_table);
finalizer_table = 0;
- ATOMIC_SET(finalizing, 0);
-}
-
-static inline int
-is_id_value(rb_objspace_t *objspace, VALUE ptr)
-{
- if (!is_pointer_to_heap(objspace, (void *)ptr)) return FALSE;
- if (BUILTIN_TYPE(ptr) > T_FIXNUM) return FALSE;
- if (BUILTIN_TYPE(ptr) == T_ICLASS) return FALSE;
- return TRUE;
}
-static inline int
-is_swept_object(rb_objspace_t *objspace, VALUE ptr)
-{
- struct heaps_slot *slot = objspace->heap.sweep_slots;
-
- while (slot) {
- if ((VALUE)slot->header->start <= ptr && ptr < (VALUE)(slot->header->end))
- return FALSE;
- slot = slot->next;
- }
- return TRUE;
-}
-
-static inline int
-is_dead_object(rb_objspace_t *objspace, VALUE ptr)
-{
- if (!is_lazy_sweeping(objspace) || MARKED_IN_BITMAP(GET_HEAP_BITMAP(ptr), ptr))
- return FALSE;
- if (!is_swept_object(objspace, ptr))
- return TRUE;
- return FALSE;
-}
-
-static inline int
-is_live_object(rb_objspace_t *objspace, VALUE ptr)
+void
+rb_gc(void)
{
- if (BUILTIN_TYPE(ptr) == 0) return FALSE;
- if (RBASIC(ptr)->klass == 0) return FALSE;
- if (is_dead_object(objspace, ptr)) return FALSE;
- return TRUE;
+ rb_objspace_t *objspace = &rb_objspace;
+ garbage_collect(objspace);
+ finalize_deferred(objspace);
+ free_unused_heaps(objspace);
}
/*
@@ -1633,8 +3110,7 @@ id2ref(VALUE obj, VALUE objid)
if (ptr == Qfalse) return Qfalse;
if (ptr == Qnil) return Qnil;
if (FIXNUM_P(ptr)) return (VALUE)ptr;
- if (FLONUM_P(ptr)) return (VALUE)ptr;
- ptr = obj_id_to_ref(objid);
+ ptr = objid ^ FIXNUM_FLAG; /* unset FIXNUM_FLAG */
if ((ptr % sizeof(RVALUE)) == (4 << 2)) {
ID symid = ptr / sizeof(RVALUE);
@@ -1643,10 +3119,11 @@ id2ref(VALUE obj, VALUE objid)
return ID2SYM(symid);
}
- if (!is_id_value(objspace, ptr)) {
+ if (!is_pointer_to_heap(objspace, (void *)ptr) ||
+ BUILTIN_TYPE(ptr) > T_FIXNUM || BUILTIN_TYPE(ptr) == T_ICLASS) {
rb_raise(rb_eRangeError, "%p is not id value", p0);
}
- if (!is_live_object(objspace, ptr)) {
+ if (BUILTIN_TYPE(ptr) == 0 || RBASIC(ptr)->klass == 0) {
rb_raise(rb_eRangeError, "%p is recycled object", p0);
}
return (VALUE)ptr;
@@ -1657,33 +3134,26 @@ id2ref(VALUE obj, VALUE objid)
* Document-method: object_id
*
* call-seq:
- * obj.__id__ -> integer
- * obj.object_id -> integer
- *
- * Returns an integer identifier for +obj+.
- *
- * The same number will be returned on all calls to +id+ for a given object,
- * and no two active objects will share an id.
- *
- * Object#object_id is a different concept from the +:name+ notation, which
- * returns the symbol id of +name+.
- *
- * Replaces the deprecated Object#id.
+ * obj.__id__ -> fixnum
+ * obj.object_id -> fixnum
+ *
+ * Returns an integer identifier for <i>obj</i>. The same number will
+ * be returned on all calls to <code>id</code> for a given object, and
+ * no two active objects will share an id.
+ * <code>Object#object_id</code> is a different concept from the
+ * <code>:name</code> notation, which returns the symbol id of
+ * <code>name</code>. Replaces the deprecated <code>Object#id</code>.
*/
/*
* call-seq:
* obj.hash -> fixnum
*
- * Generates a Fixnum hash value for this object.
- *
- * This function must have the property that <code>a.eql?(b)</code> implies
- * <code>a.hash == b.hash</code>.
- *
- * The hash value is used by Hash class.
- *
- * Any hash value that exceeds the capacity of a Fixnum will be truncated
- * before being used.
+ * Generates a <code>Fixnum</code> hash value for this object. This
+ * function must have the property that <code>a.eql?(b)</code> implies
+ * <code>a.hash == b.hash</code>. The hash value is used by class
+ * <code>Hash</code>. Any hash value that exceeds the capacity of a
+ * <code>Fixnum</code> will be truncated before being used.
*/
VALUE
@@ -1720,17 +3190,10 @@ rb_obj_id(VALUE obj)
if (SYMBOL_P(obj)) {
return (SYM2ID(obj) * sizeof(RVALUE) + (4 << 2)) | FIXNUM_FLAG;
}
- else if (FLONUM_P(obj)) {
-#if SIZEOF_LONG == SIZEOF_VOIDP
- return LONG2NUM((SIGNED_VALUE)obj);
-#else
- return LL2NUM((SIGNED_VALUE)obj);
-#endif
- }
- else if (SPECIAL_CONST_P(obj)) {
- return LONG2NUM((SIGNED_VALUE)obj);
+ if (SPECIAL_CONST_P(obj)) {
+ return LONG2NUM((SIGNED_VALUE)obj);
}
- return nonspecial_obj_id(obj);
+ return (VALUE)((SIGNED_VALUE)obj|FIXNUM_FLAG);
}
static int
@@ -1748,22 +3211,17 @@ set_zero(st_data_t key, st_data_t val, st_data_t arg)
*
* Counts objects for each type.
*
- * It returns a hash, such as:
- * {
- * :TOTAL=>10000,
- * :FREE=>3011,
- * :T_OBJECT=>6,
- * :T_CLASS=>404,
- * # ...
- * }
+ * It returns a hash as:
+ * {:TOTAL=>10000, :FREE=>3011, :T_OBJECT=>6, :T_CLASS=>404, ...}
*
- * The contents of the returned hash are implementation specific.
- * It may be changed in future.
+ * If the optional argument, result_hash, is given,
+ * it is overwritten and returned.
+ * This is intended to avoid probe effect.
*
- * If the optional argument +result_hash+ is given,
- * it is overwritten and returned. This is intended to avoid probe effect.
+ * The contents of the returned hash is implementation defined.
+ * It may be changed in future.
*
- * This method is only expected to work on C Ruby.
+ * This method is not expected to work except C Ruby.
*
*/
@@ -1778,7 +3236,7 @@ count_objects(int argc, VALUE *argv, VALUE os)
VALUE hash;
if (rb_scan_args(argc, argv, "01", &hash) == 1) {
- if (!RB_TYPE_P(hash, T_HASH))
+ if (TYPE(hash) != T_HASH)
rb_raise(rb_eTypeError, "non-hash given");
}
@@ -1789,7 +3247,7 @@ count_objects(int argc, VALUE *argv, VALUE os)
for (i = 0; i < heaps_used; i++) {
RVALUE *p, *pend;
- p = objspace->heap.sorted[i]->start; pend = p + objspace->heap.sorted[i]->limit;
+ p = objspace->heap.sorted[i].start; pend = objspace->heap.sorted[i].end;
for (;p < pend; p++) {
if (p->as.basic.flags) {
counts[BUILTIN_TYPE(p)]++;
@@ -1798,7 +3256,7 @@ count_objects(int argc, VALUE *argv, VALUE os)
freed++;
}
}
- total += objspace->heap.sorted[i]->limit;
+ total += objspace->heap.sorted[i].slot->limit;
}
if (hash == Qnil) {
@@ -1849,1279 +3307,6 @@ count_objects(int argc, VALUE *argv, VALUE os)
return hash;
}
-
-
-/*
- ------------------------ Garbage Collection ------------------------
-*/
-
-/* Sweeping */
-
-static VALUE
-lazy_sweep_enable(void)
-{
- rb_objspace_t *objspace = &rb_objspace;
-
- objspace->flags.dont_lazy_sweep = FALSE;
- return Qnil;
-}
-
-static void
-gc_clear_slot_bits(struct heaps_slot *slot)
-{
- memset(slot->bits, 0, HEAP_BITMAP_LIMIT * sizeof(uintptr_t));
-}
-
-static size_t
-objspace_live_num(rb_objspace_t *objspace)
-{
- return objspace->total_allocated_object_num - objspace->total_freed_object_num;
-}
-
-static void
-slot_sweep(rb_objspace_t *objspace, struct heaps_slot *sweep_slot)
-{
- size_t empty_num = 0, freed_num = 0, final_num = 0;
- RVALUE *p, *pend;
- RVALUE *final = deferred_final_list;
- int deferred;
- uintptr_t *bits;
-
- p = sweep_slot->header->start; pend = p + sweep_slot->header->limit;
- bits = GET_HEAP_BITMAP(p);
- while (p < pend) {
- if ((!(MARKED_IN_BITMAP(bits, p))) && BUILTIN_TYPE(p) != T_ZOMBIE) {
- if (p->as.basic.flags) {
- if ((deferred = obj_free(objspace, (VALUE)p)) ||
- (FL_TEST(p, FL_FINALIZE))) {
- if (!deferred) {
- p->as.free.flags = T_ZOMBIE;
- RDATA(p)->dfree = 0;
- }
- p->as.free.next = deferred_final_list;
- deferred_final_list = p;
- assert(BUILTIN_TYPE(p) == T_ZOMBIE);
- final_num++;
- }
- else {
- (void)VALGRIND_MAKE_MEM_UNDEFINED((void*)p, sizeof(RVALUE));
- p->as.free.flags = 0;
- p->as.free.next = sweep_slot->freelist;
- sweep_slot->freelist = p;
- freed_num++;
- }
- }
- else {
- empty_num++;
- }
- }
- p++;
- }
- gc_clear_slot_bits(sweep_slot);
- if (final_num + freed_num + empty_num == sweep_slot->header->limit &&
- objspace->heap.free_num > objspace->heap.do_heap_free) {
- RVALUE *pp;
-
- for (pp = deferred_final_list; pp != final; pp = pp->as.free.next) {
- RDATA(pp)->dmark = (void (*)(void *))(VALUE)sweep_slot;
- pp->as.free.flags |= FL_SINGLETON; /* freeing page mark */
- }
- sweep_slot->header->limit = final_num;
- unlink_heap_slot(objspace, sweep_slot);
- }
- else {
- if (freed_num + empty_num > 0) {
- link_free_heap_slot(objspace, sweep_slot);
- }
- else {
- sweep_slot->free_next = NULL;
- }
- objspace->heap.free_num += freed_num + empty_num;
- }
- objspace->total_freed_object_num += freed_num;
- objspace->heap.final_num += final_num;
-
- if (deferred_final_list && !finalizing) {
- rb_thread_t *th = GET_THREAD();
- if (th) {
- RUBY_VM_SET_FINALIZER_INTERRUPT(th);
- }
- }
-}
-
-static int
-ready_to_gc(rb_objspace_t *objspace)
-{
- if (dont_gc || during_gc) {
- if (!has_free_object) {
- if (!heaps_increment(objspace)) {
- set_heaps_increment(objspace);
- heaps_increment(objspace);
- }
- }
- return FALSE;
- }
- return TRUE;
-}
-
-static void
-before_gc_sweep(rb_objspace_t *objspace)
-{
- objspace->heap.do_heap_free = (size_t)((heaps_used * HEAP_OBJ_LIMIT) * 0.65);
- objspace->heap.free_min = (size_t)((heaps_used * HEAP_OBJ_LIMIT) * 0.2);
- if (objspace->heap.free_min < initial_free_min) {
- objspace->heap.free_min = initial_free_min;
- if (objspace->heap.do_heap_free < initial_free_min)
- objspace->heap.do_heap_free = initial_free_min;
- }
- objspace->heap.sweep_slots = heaps;
- objspace->heap.free_num = 0;
- objspace->heap.free_slots = NULL;
-
- /* sweep unlinked method entries */
- if (GET_VM()->unlinked_method_entry_list) {
- rb_sweep_method_entry(GET_VM());
- }
-}
-
-static void
-after_gc_sweep(rb_objspace_t *objspace)
-{
- size_t inc;
-
- gc_prof_set_malloc_info(objspace);
- if (objspace->heap.free_num < objspace->heap.free_min) {
- set_heaps_increment(objspace);
- heaps_increment(objspace);
- }
-
- inc = ATOMIC_SIZE_EXCHANGE(malloc_increase, 0);
- if (inc > malloc_limit) {
- malloc_limit +=
- (size_t)((inc - malloc_limit) * (double)objspace->heap.marked_num / (heaps_used * HEAP_OBJ_LIMIT));
- if (malloc_limit < initial_malloc_limit) malloc_limit = initial_malloc_limit;
- }
-
- free_unused_heaps(objspace);
-}
-
-static int
-lazy_sweep(rb_objspace_t *objspace)
-{
- struct heaps_slot *next;
-
- heaps_increment(objspace);
- while (objspace->heap.sweep_slots) {
- next = objspace->heap.sweep_slots->next;
- slot_sweep(objspace, objspace->heap.sweep_slots);
- objspace->heap.sweep_slots = next;
- if (has_free_object) {
- during_gc = 0;
- return TRUE;
- }
- }
- return FALSE;
-}
-
-static void
-rest_sweep(rb_objspace_t *objspace)
-{
- if (objspace->heap.sweep_slots) {
- while (objspace->heap.sweep_slots) {
- lazy_sweep(objspace);
- }
- after_gc_sweep(objspace);
- }
-}
-
-static void gc_marks(rb_objspace_t *objspace);
-
-static int
-gc_prepare_free_objects(rb_objspace_t *objspace)
-{
- int res;
-
- if (objspace->flags.dont_lazy_sweep)
- return garbage_collect(objspace);
-
-
- if (!ready_to_gc(objspace)) return TRUE;
-
- during_gc++;
- gc_prof_timer_start(objspace);
- gc_prof_sweep_timer_start(objspace);
-
- if (objspace->heap.sweep_slots) {
- res = lazy_sweep(objspace);
- if (res) {
- gc_prof_sweep_timer_stop(objspace);
- gc_prof_set_malloc_info(objspace);
- gc_prof_timer_stop(objspace, Qfalse);
- return res;
- }
- after_gc_sweep(objspace);
- }
- else {
- if (heaps_increment(objspace)) {
- during_gc = 0;
- return TRUE;
- }
- }
-
- gc_marks(objspace);
-
- before_gc_sweep(objspace);
- if (objspace->heap.free_min > (heaps_used * HEAP_OBJ_LIMIT - objspace->heap.marked_num)) {
- set_heaps_increment(objspace);
- }
-
- gc_prof_sweep_timer_start(objspace);
- if (!(res = lazy_sweep(objspace))) {
- after_gc_sweep(objspace);
- if (has_free_object) {
- res = TRUE;
- during_gc = 0;
- }
- }
- gc_prof_sweep_timer_stop(objspace);
-
- gc_prof_timer_stop(objspace, Qtrue);
- return res;
-}
-
-static void
-gc_sweep(rb_objspace_t *objspace)
-{
- struct heaps_slot *next;
-
- before_gc_sweep(objspace);
-
- while (objspace->heap.sweep_slots) {
- next = objspace->heap.sweep_slots->next;
- slot_sweep(objspace, objspace->heap.sweep_slots);
- objspace->heap.sweep_slots = next;
- }
-
- after_gc_sweep(objspace);
-
- during_gc = 0;
-}
-
-/* Marking stack */
-
-static void push_mark_stack(mark_stack_t *, VALUE);
-static int pop_mark_stack(mark_stack_t *, VALUE *);
-static void shrink_stack_chunk_cache(mark_stack_t *stack);
-
-static stack_chunk_t *
-stack_chunk_alloc(void)
-{
- stack_chunk_t *res;
-
- res = malloc(sizeof(stack_chunk_t));
- if (!res)
- rb_memerror();
-
- return res;
-}
-
-static inline int
-is_mark_stask_empty(mark_stack_t *stack)
-{
- return stack->chunk == NULL;
-}
-
-static void
-add_stack_chunk_cache(mark_stack_t *stack, stack_chunk_t *chunk)
-{
- chunk->next = stack->cache;
- stack->cache = chunk;
- stack->cache_size++;
-}
-
-static void
-shrink_stack_chunk_cache(mark_stack_t *stack)
-{
- stack_chunk_t *chunk;
-
- if (stack->unused_cache_size > (stack->cache_size/2)) {
- chunk = stack->cache;
- stack->cache = stack->cache->next;
- stack->cache_size--;
- free(chunk);
- }
- stack->unused_cache_size = stack->cache_size;
-}
-
-static void
-push_mark_stack_chunk(mark_stack_t *stack)
-{
- stack_chunk_t *next;
-
- assert(stack->index == stack->limit);
- if (stack->cache_size > 0) {
- next = stack->cache;
- stack->cache = stack->cache->next;
- stack->cache_size--;
- if (stack->unused_cache_size > stack->cache_size)
- stack->unused_cache_size = stack->cache_size;
- }
- else {
- next = stack_chunk_alloc();
- }
- next->next = stack->chunk;
- stack->chunk = next;
- stack->index = 0;
-}
-
-static void
-pop_mark_stack_chunk(mark_stack_t *stack)
-{
- stack_chunk_t *prev;
-
- prev = stack->chunk->next;
- assert(stack->index == 0);
- add_stack_chunk_cache(stack, stack->chunk);
- stack->chunk = prev;
- stack->index = stack->limit;
-}
-
-#if defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE
-static void
-free_stack_chunks(mark_stack_t *stack)
-{
- stack_chunk_t *chunk = stack->chunk;
- stack_chunk_t *next = NULL;
-
- while (chunk != NULL) {
- next = chunk->next;
- free(chunk);
- chunk = next;
- }
-}
-#endif
-
-static void
-push_mark_stack(mark_stack_t *stack, VALUE data)
-{
- if (stack->index == stack->limit) {
- push_mark_stack_chunk(stack);
- }
- stack->chunk->data[stack->index++] = data;
-}
-
-static int
-pop_mark_stack(mark_stack_t *stack, VALUE *data)
-{
- if (is_mark_stask_empty(stack)) {
- return FALSE;
- }
- if (stack->index == 1) {
- *data = stack->chunk->data[--stack->index];
- pop_mark_stack_chunk(stack);
- return TRUE;
- }
- *data = stack->chunk->data[--stack->index];
- return TRUE;
-}
-
-static void
-init_mark_stack(mark_stack_t *stack)
-{
- int i;
-
- push_mark_stack_chunk(stack);
- stack->limit = STACK_CHUNK_SIZE;
-
- for (i=0; i < 4; i++) {
- add_stack_chunk_cache(stack, stack_chunk_alloc());
- }
- stack->unused_cache_size = stack->cache_size;
-}
-
-
-/* Marking */
-
-#define MARK_IN_BITMAP(bits, p) (bits[BITMAP_INDEX(p)] = bits[BITMAP_INDEX(p)] | ((uintptr_t)1 << BITMAP_OFFSET(p)))
-
-
-#ifdef __ia64
-#define SET_STACK_END (SET_MACHINE_STACK_END(&th->machine_stack_end), th->machine_register_stack_end = rb_ia64_bsp())
-#else
-#define SET_STACK_END SET_MACHINE_STACK_END(&th->machine_stack_end)
-#endif
-
-#define STACK_START (th->machine_stack_start)
-#define STACK_END (th->machine_stack_end)
-#define STACK_LEVEL_MAX (th->machine_stack_maxsize/sizeof(VALUE))
-
-#if STACK_GROW_DIRECTION < 0
-# define STACK_LENGTH (size_t)(STACK_START - STACK_END)
-#elif STACK_GROW_DIRECTION > 0
-# define STACK_LENGTH (size_t)(STACK_END - STACK_START + 1)
-#else
-# define STACK_LENGTH ((STACK_END < STACK_START) ? (size_t)(STACK_START - STACK_END) \
- : (size_t)(STACK_END - STACK_START + 1))
-#endif
-#if !STACK_GROW_DIRECTION
-int ruby_stack_grow_direction;
-int
-ruby_get_stack_grow_direction(volatile VALUE *addr)
-{
- VALUE *end;
- SET_MACHINE_STACK_END(&end);
-
- if (end > addr) return ruby_stack_grow_direction = 1;
- return ruby_stack_grow_direction = -1;
-}
-#endif
-
-size_t
-ruby_stack_length(VALUE **p)
-{
- rb_thread_t *th = GET_THREAD();
- SET_STACK_END;
- if (p) *p = STACK_UPPER(STACK_END, STACK_START, STACK_END);
- return STACK_LENGTH;
-}
-
-#if !(defined(POSIX_SIGNAL) && defined(SIGSEGV) && defined(HAVE_SIGALTSTACK))
-static int
-stack_check(int water_mark)
-{
- int ret;
- rb_thread_t *th = GET_THREAD();
- SET_STACK_END;
- ret = STACK_LENGTH > STACK_LEVEL_MAX - water_mark;
-#ifdef __ia64
- if (!ret) {
- ret = (VALUE*)rb_ia64_bsp() - th->machine_register_stack_start >
- th->machine_register_stack_maxsize/sizeof(VALUE) - water_mark;
- }
-#endif
- return ret;
-}
-#endif
-
-#define STACKFRAME_FOR_CALL_CFUNC 512
-
-int
-ruby_stack_check(void)
-{
-#if defined(POSIX_SIGNAL) && defined(SIGSEGV) && defined(HAVE_SIGALTSTACK)
- return 0;
-#else
- return stack_check(STACKFRAME_FOR_CALL_CFUNC);
-#endif
-}
-
-static void
-mark_locations_array(rb_objspace_t *objspace, register VALUE *x, register long n)
-{
- VALUE v;
- while (n--) {
- v = *x;
- (void)VALGRIND_MAKE_MEM_DEFINED(&v, sizeof(v));
- if (is_pointer_to_heap(objspace, (void *)v)) {
- gc_mark(objspace, v);
- }
- x++;
- }
-}
-
-static void
-gc_mark_locations(rb_objspace_t *objspace, VALUE *start, VALUE *end)
-{
- long n;
-
- if (end <= start) return;
- n = end - start;
- mark_locations_array(objspace, start, n);
-}
-
-void
-rb_gc_mark_locations(VALUE *start, VALUE *end)
-{
- gc_mark_locations(&rb_objspace, start, end);
-}
-
-#define rb_gc_mark_locations(start, end) gc_mark_locations(objspace, (start), (end))
-
-struct mark_tbl_arg {
- rb_objspace_t *objspace;
-};
-
-static int
-mark_entry(st_data_t key, st_data_t value, st_data_t data)
-{
- struct mark_tbl_arg *arg = (void*)data;
- gc_mark(arg->objspace, (VALUE)value);
- return ST_CONTINUE;
-}
-
-static void
-mark_tbl(rb_objspace_t *objspace, st_table *tbl)
-{
- struct mark_tbl_arg arg;
- if (!tbl || tbl->num_entries == 0) return;
- arg.objspace = objspace;
- st_foreach(tbl, mark_entry, (st_data_t)&arg);
-}
-
-static int
-mark_key(st_data_t key, st_data_t value, st_data_t data)
-{
- struct mark_tbl_arg *arg = (void*)data;
- gc_mark(arg->objspace, (VALUE)key);
- return ST_CONTINUE;
-}
-
-static void
-mark_set(rb_objspace_t *objspace, st_table *tbl)
-{
- struct mark_tbl_arg arg;
- if (!tbl) return;
- arg.objspace = objspace;
- st_foreach(tbl, mark_key, (st_data_t)&arg);
-}
-
-void
-rb_mark_set(st_table *tbl)
-{
- mark_set(&rb_objspace, tbl);
-}
-
-static int
-mark_keyvalue(st_data_t key, st_data_t value, st_data_t data)
-{
- struct mark_tbl_arg *arg = (void*)data;
- gc_mark(arg->objspace, (VALUE)key);
- gc_mark(arg->objspace, (VALUE)value);
- return ST_CONTINUE;
-}
-
-static void
-mark_hash(rb_objspace_t *objspace, st_table *tbl)
-{
- struct mark_tbl_arg arg;
- if (!tbl) return;
- arg.objspace = objspace;
- st_foreach(tbl, mark_keyvalue, (st_data_t)&arg);
-}
-
-void
-rb_mark_hash(st_table *tbl)
-{
- mark_hash(&rb_objspace, tbl);
-}
-
-static void
-mark_method_entry(rb_objspace_t *objspace, const rb_method_entry_t *me)
-{
- const rb_method_definition_t *def = me->def;
-
- gc_mark(objspace, me->klass);
- again:
- if (!def) return;
- switch (def->type) {
- case VM_METHOD_TYPE_ISEQ:
- gc_mark(objspace, def->body.iseq->self);
- break;
- case VM_METHOD_TYPE_BMETHOD:
- gc_mark(objspace, def->body.proc);
- break;
- case VM_METHOD_TYPE_ATTRSET:
- case VM_METHOD_TYPE_IVAR:
- gc_mark(objspace, def->body.attr.location);
- break;
- case VM_METHOD_TYPE_REFINED:
- if (def->body.orig_me) {
- def = def->body.orig_me->def;
- goto again;
- }
- break;
- default:
- break; /* ignore */
- }
-}
-
-void
-rb_mark_method_entry(const rb_method_entry_t *me)
-{
- mark_method_entry(&rb_objspace, me);
-}
-
-static int
-mark_method_entry_i(ID key, const rb_method_entry_t *me, st_data_t data)
-{
- struct mark_tbl_arg *arg = (void*)data;
- mark_method_entry(arg->objspace, me);
- return ST_CONTINUE;
-}
-
-static void
-mark_m_tbl(rb_objspace_t *objspace, st_table *tbl)
-{
- struct mark_tbl_arg arg;
- if (!tbl) return;
- arg.objspace = objspace;
- st_foreach(tbl, mark_method_entry_i, (st_data_t)&arg);
-}
-
-static int
-mark_const_entry_i(ID key, const rb_const_entry_t *ce, st_data_t data)
-{
- struct mark_tbl_arg *arg = (void*)data;
- gc_mark(arg->objspace, ce->value);
- gc_mark(arg->objspace, ce->file);
- return ST_CONTINUE;
-}
-
-static void
-mark_const_tbl(rb_objspace_t *objspace, st_table *tbl)
-{
- struct mark_tbl_arg arg;
- if (!tbl) return;
- arg.objspace = objspace;
- st_foreach(tbl, mark_const_entry_i, (st_data_t)&arg);
-}
-
-#if STACK_GROW_DIRECTION < 0
-#define GET_STACK_BOUNDS(start, end, appendix) ((start) = STACK_END, (end) = STACK_START)
-#elif STACK_GROW_DIRECTION > 0
-#define GET_STACK_BOUNDS(start, end, appendix) ((start) = STACK_START, (end) = STACK_END+(appendix))
-#else
-#define GET_STACK_BOUNDS(start, end, appendix) \
- ((STACK_END < STACK_START) ? \
- ((start) = STACK_END, (end) = STACK_START) : ((start) = STACK_START, (end) = STACK_END+(appendix)))
-#endif
-
-#define numberof(array) (int)(sizeof(array) / sizeof((array)[0]))
-
-static void
-mark_current_machine_context(rb_objspace_t *objspace, rb_thread_t *th)
-{
- union {
- rb_jmp_buf j;
- VALUE v[sizeof(rb_jmp_buf) / sizeof(VALUE)];
- } save_regs_gc_mark;
- VALUE *stack_start, *stack_end;
-
- FLUSH_REGISTER_WINDOWS;
- /* This assumes that all registers are saved into the jmp_buf (and stack) */
- rb_setjmp(save_regs_gc_mark.j);
-
- SET_STACK_END;
- GET_STACK_BOUNDS(stack_start, stack_end, 1);
-
- mark_locations_array(objspace, save_regs_gc_mark.v, numberof(save_regs_gc_mark.v));
-
- rb_gc_mark_locations(stack_start, stack_end);
-#ifdef __ia64
- rb_gc_mark_locations(th->machine_register_stack_start, th->machine_register_stack_end);
-#endif
-#if defined(__mc68000__)
- mark_locations_array(objspace, (VALUE*)((char*)STACK_END + 2),
- (STACK_START - STACK_END));
-#endif
-}
-
-void
-rb_gc_mark_machine_stack(rb_thread_t *th)
-{
- rb_objspace_t *objspace = &rb_objspace;
- VALUE *stack_start, *stack_end;
-
- GET_STACK_BOUNDS(stack_start, stack_end, 0);
- rb_gc_mark_locations(stack_start, stack_end);
-#ifdef __ia64
- rb_gc_mark_locations(th->machine_register_stack_start, th->machine_register_stack_end);
-#endif
-}
-
-void
-rb_mark_tbl(st_table *tbl)
-{
- mark_tbl(&rb_objspace, tbl);
-}
-
-void
-rb_gc_mark_maybe(VALUE obj)
-{
- if (is_pointer_to_heap(&rb_objspace, (void *)obj)) {
- gc_mark(&rb_objspace, obj);
- }
-}
-
-static int
-gc_mark_ptr(rb_objspace_t *objspace, VALUE ptr)
-{
- register uintptr_t *bits = GET_HEAP_BITMAP(ptr);
- if (MARKED_IN_BITMAP(bits, ptr)) return 0;
- MARK_IN_BITMAP(bits, ptr);
- objspace->heap.marked_num++;
- return 1;
-}
-
-static int
-markable_object_p(rb_objspace_t *objspace, VALUE ptr)
-{
- register RVALUE *obj = RANY(ptr);
-
- if (rb_special_const_p(ptr)) return 0; /* special const not marked */
- if (obj->as.basic.flags == 0) return 0 ; /* free cell */
-
- return 1;
-}
-
-int
-rb_objspace_markable_object_p(VALUE obj)
-{
- return markable_object_p(/* now it doesn't use &rb_objspace */ 0, obj);
-}
-
-static void
-gc_mark(rb_objspace_t *objspace, VALUE ptr)
-{
- if (!markable_object_p(objspace, ptr)) {
- return;
- }
-
- if (LIKELY(objspace->mark_func_data == 0)) {
- if (!gc_mark_ptr(objspace, ptr)) return; /* already marked */
- push_mark_stack(&objspace->mark_stack, ptr);
- }
- else {
- objspace->mark_func_data->mark_func(ptr, objspace->mark_func_data->data);
- }
-}
-
-void
-rb_gc_mark(VALUE ptr)
-{
- gc_mark(&rb_objspace, ptr);
-}
-
-static void
-gc_mark_children(rb_objspace_t *objspace, VALUE ptr)
-{
- register RVALUE *obj = RANY(ptr);
-
- goto marking; /* skip */
-
- again:
- if (LIKELY(objspace->mark_func_data == 0)) {
- obj = RANY(ptr);
- if (!markable_object_p(objspace, ptr)) return;
- if (!gc_mark_ptr(objspace, ptr)) return; /* already marked */
- }
- else {
- gc_mark(objspace, ptr);
- return;
- }
-
- marking:
- if (FL_TEST(obj, FL_EXIVAR)) {
- rb_mark_generic_ivar(ptr);
- }
-
- switch (BUILTIN_TYPE(obj)) {
- case T_NIL:
- case T_FIXNUM:
- rb_bug("rb_gc_mark() called for broken object");
- break;
-
- case T_NODE:
- switch (nd_type(obj)) {
- case NODE_IF: /* 1,2,3 */
- case NODE_FOR:
- case NODE_ITER:
- case NODE_WHEN:
- case NODE_MASGN:
- case NODE_RESCUE:
- case NODE_RESBODY:
- case NODE_CLASS:
- case NODE_BLOCK_PASS:
- gc_mark(objspace, (VALUE)obj->as.node.u2.node);
- /* fall through */
- case NODE_BLOCK: /* 1,3 */
- case NODE_ARRAY:
- case NODE_DSTR:
- case NODE_DXSTR:
- case NODE_DREGX:
- case NODE_DREGX_ONCE:
- case NODE_ENSURE:
- case NODE_CALL:
- case NODE_DEFS:
- case NODE_OP_ASGN1:
- gc_mark(objspace, (VALUE)obj->as.node.u1.node);
- /* fall through */
- case NODE_SUPER: /* 3 */
- case NODE_FCALL:
- case NODE_DEFN:
- case NODE_ARGS_AUX:
- ptr = (VALUE)obj->as.node.u3.node;
- goto again;
-
- case NODE_WHILE: /* 1,2 */
- case NODE_UNTIL:
- case NODE_AND:
- case NODE_OR:
- case NODE_CASE:
- case NODE_SCLASS:
- case NODE_DOT2:
- case NODE_DOT3:
- case NODE_FLIP2:
- case NODE_FLIP3:
- case NODE_MATCH2:
- case NODE_MATCH3:
- case NODE_OP_ASGN_OR:
- case NODE_OP_ASGN_AND:
- case NODE_MODULE:
- case NODE_ALIAS:
- case NODE_VALIAS:
- case NODE_ARGSCAT:
- gc_mark(objspace, (VALUE)obj->as.node.u1.node);
- /* fall through */
- case NODE_GASGN: /* 2 */
- case NODE_LASGN:
- case NODE_DASGN:
- case NODE_DASGN_CURR:
- case NODE_IASGN:
- case NODE_IASGN2:
- case NODE_CVASGN:
- case NODE_COLON3:
- case NODE_OPT_N:
- case NODE_EVSTR:
- case NODE_UNDEF:
- case NODE_POSTEXE:
- ptr = (VALUE)obj->as.node.u2.node;
- goto again;
-
- case NODE_HASH: /* 1 */
- case NODE_LIT:
- case NODE_STR:
- case NODE_XSTR:
- case NODE_DEFINED:
- case NODE_MATCH:
- case NODE_RETURN:
- case NODE_BREAK:
- case NODE_NEXT:
- case NODE_YIELD:
- case NODE_COLON2:
- case NODE_SPLAT:
- case NODE_TO_ARY:
- ptr = (VALUE)obj->as.node.u1.node;
- goto again;
-
- case NODE_SCOPE: /* 2,3 */
- case NODE_CDECL:
- case NODE_OPT_ARG:
- gc_mark(objspace, (VALUE)obj->as.node.u3.node);
- ptr = (VALUE)obj->as.node.u2.node;
- goto again;
-
- case NODE_ARGS: /* custom */
- {
- struct rb_args_info *args = obj->as.node.u3.args;
- if (args) {
- if (args->pre_init) gc_mark(objspace, (VALUE)args->pre_init);
- if (args->post_init) gc_mark(objspace, (VALUE)args->post_init);
- if (args->opt_args) gc_mark(objspace, (VALUE)args->opt_args);
- if (args->kw_args) gc_mark(objspace, (VALUE)args->kw_args);
- if (args->kw_rest_arg) gc_mark(objspace, (VALUE)args->kw_rest_arg);
- }
- }
- ptr = (VALUE)obj->as.node.u2.node;
- goto again;
-
- case NODE_ZARRAY: /* - */
- case NODE_ZSUPER:
- case NODE_VCALL:
- case NODE_GVAR:
- case NODE_LVAR:
- case NODE_DVAR:
- case NODE_IVAR:
- case NODE_CVAR:
- case NODE_NTH_REF:
- case NODE_BACK_REF:
- case NODE_REDO:
- case NODE_RETRY:
- case NODE_SELF:
- case NODE_NIL:
- case NODE_TRUE:
- case NODE_FALSE:
- case NODE_ERRINFO:
- case NODE_BLOCK_ARG:
- break;
- case NODE_ALLOCA:
- mark_locations_array(objspace,
- (VALUE*)obj->as.node.u1.value,
- obj->as.node.u3.cnt);
- gc_mark(objspace, (VALUE)obj->as.node.u2.node);
- break;
-
- case NODE_CREF:
- gc_mark(objspace, obj->as.node.nd_refinements);
- gc_mark(objspace, (VALUE)obj->as.node.u1.node);
- ptr = (VALUE)obj->as.node.u3.node;
- goto again;
-
- default: /* unlisted NODE */
- if (is_pointer_to_heap(objspace, obj->as.node.u1.node)) {
- gc_mark(objspace, (VALUE)obj->as.node.u1.node);
- }
- if (is_pointer_to_heap(objspace, obj->as.node.u2.node)) {
- gc_mark(objspace, (VALUE)obj->as.node.u2.node);
- }
- if (is_pointer_to_heap(objspace, obj->as.node.u3.node)) {
- gc_mark(objspace, (VALUE)obj->as.node.u3.node);
- }
- }
- return; /* no need to mark class. */
- }
-
- gc_mark(objspace, obj->as.basic.klass);
- switch (BUILTIN_TYPE(obj)) {
- case T_ICLASS:
- case T_CLASS:
- case T_MODULE:
- mark_m_tbl(objspace, RCLASS_M_TBL(obj));
- if (!RCLASS_EXT(obj)) break;
- mark_tbl(objspace, RCLASS_IV_TBL(obj));
- mark_const_tbl(objspace, RCLASS_CONST_TBL(obj));
- ptr = RCLASS_SUPER(obj);
- goto again;
-
- case T_ARRAY:
- if (FL_TEST(obj, ELTS_SHARED)) {
- ptr = obj->as.array.as.heap.aux.shared;
- goto again;
- }
- else {
- long i, len = RARRAY_LEN(obj);
- VALUE *ptr = RARRAY_PTR(obj);
- for (i=0; i < len; i++) {
- gc_mark(objspace, *ptr++);
- }
- }
- break;
-
- case T_HASH:
- mark_hash(objspace, obj->as.hash.ntbl);
- ptr = obj->as.hash.ifnone;
- goto again;
-
- case T_STRING:
-#define STR_ASSOC FL_USER3 /* copied from string.c */
- if (FL_TEST(obj, RSTRING_NOEMBED) && FL_ANY(obj, ELTS_SHARED|STR_ASSOC)) {
- ptr = obj->as.string.as.heap.aux.shared;
- goto again;
- }
- break;
-
- case T_DATA:
- if (RTYPEDDATA_P(obj)) {
- RUBY_DATA_FUNC mark_func = obj->as.typeddata.type->function.dmark;
- if (mark_func) (*mark_func)(DATA_PTR(obj));
- }
- else {
- if (obj->as.data.dmark) (*obj->as.data.dmark)(DATA_PTR(obj));
- }
- break;
-
- case T_OBJECT:
- {
- long i, len = ROBJECT_NUMIV(obj);
- VALUE *ptr = ROBJECT_IVPTR(obj);
- for (i = 0; i < len; i++) {
- gc_mark(objspace, *ptr++);
- }
- }
- break;
-
- case T_FILE:
- if (obj->as.file.fptr) {
- gc_mark(objspace, obj->as.file.fptr->pathv);
- gc_mark(objspace, obj->as.file.fptr->tied_io_for_writing);
- gc_mark(objspace, obj->as.file.fptr->writeconv_asciicompat);
- gc_mark(objspace, obj->as.file.fptr->writeconv_pre_ecopts);
- gc_mark(objspace, obj->as.file.fptr->encs.ecopts);
- gc_mark(objspace, obj->as.file.fptr->write_lock);
- }
- break;
-
- case T_REGEXP:
- ptr = obj->as.regexp.src;
- goto again;
-
- case T_FLOAT:
- case T_BIGNUM:
- case T_ZOMBIE:
- break;
-
- case T_MATCH:
- gc_mark(objspace, obj->as.match.regexp);
- if (obj->as.match.str) {
- ptr = obj->as.match.str;
- goto again;
- }
- break;
-
- case T_RATIONAL:
- gc_mark(objspace, obj->as.rational.num);
- ptr = obj->as.rational.den;
- goto again;
-
- case T_COMPLEX:
- gc_mark(objspace, obj->as.complex.real);
- ptr = obj->as.complex.imag;
- goto again;
-
- case T_STRUCT:
- {
- long len = RSTRUCT_LEN(obj);
- VALUE *ptr = RSTRUCT_PTR(obj);
-
- while (len--) {
- gc_mark(objspace, *ptr++);
- }
- }
- break;
-
- default:
- rb_bug("rb_gc_mark(): unknown data type 0x%x(%p) %s",
- BUILTIN_TYPE(obj), (void *)obj,
- is_pointer_to_heap(objspace, obj) ? "corrupted object" : "non object");
- }
-}
-
-static void
-gc_mark_stacked_objects(rb_objspace_t *objspace)
-{
- mark_stack_t *mstack = &objspace->mark_stack;
- VALUE obj = 0;
-
- if (!mstack->index) return;
- while (pop_mark_stack(mstack, &obj)) {
- gc_mark_children(objspace, obj);
- }
- shrink_stack_chunk_cache(mstack);
-}
-
-static void
-gc_marks(rb_objspace_t *objspace)
-{
- struct gc_list *list;
- rb_thread_t *th = GET_THREAD();
- struct mark_func_data_struct *prev_mark_func_data;
-
- prev_mark_func_data = objspace->mark_func_data;
- objspace->mark_func_data = 0;
-
- gc_prof_mark_timer_start(objspace);
- objspace->heap.marked_num = 0;
- objspace->count++;
-
- SET_STACK_END;
-
- th->vm->self ? rb_gc_mark(th->vm->self) : rb_vm_mark(th->vm);
-
- mark_tbl(objspace, finalizer_table);
- mark_current_machine_context(objspace, th);
-
- rb_gc_mark_symbols();
- rb_gc_mark_encodings();
-
- /* mark protected global variables */
- for (list = global_List; list; list = list->next) {
- rb_gc_mark_maybe(*list->varptr);
- }
- rb_mark_end_proc();
- rb_gc_mark_global_tbl();
-
- mark_tbl(objspace, rb_class_tbl);
-
- /* mark generic instance variables for special constants */
- rb_mark_generic_ivar_tbl();
-
- rb_gc_mark_parser();
-
- rb_gc_mark_unlinked_live_method_entries(th->vm);
-
- /* marking-loop */
- gc_mark_stacked_objects(objspace);
-
- gc_prof_mark_timer_stop(objspace);
-
- objspace->mark_func_data = prev_mark_func_data;
-}
-
-/* GC */
-
-void
-rb_gc_force_recycle(VALUE p)
-{
- rb_objspace_t *objspace = &rb_objspace;
- struct heaps_slot *slot;
-
- objspace->total_freed_object_num++;
- if (MARKED_IN_BITMAP(GET_HEAP_BITMAP(p), p)) {
- add_slot_local_freelist(objspace, (RVALUE *)p);
- }
- else {
- objspace->heap.free_num++;
- slot = add_slot_local_freelist(objspace, (RVALUE *)p);
- if (slot->free_next == NULL) {
- link_free_heap_slot(objspace, slot);
- }
- }
-}
-
-void
-rb_gc_register_mark_object(VALUE obj)
-{
- VALUE ary = GET_THREAD()->vm->mark_object_ary;
- rb_ary_push(ary, obj);
-}
-
-void
-rb_gc_register_address(VALUE *addr)
-{
- rb_objspace_t *objspace = &rb_objspace;
- struct gc_list *tmp;
-
- tmp = ALLOC(struct gc_list);
- tmp->next = global_List;
- tmp->varptr = addr;
- global_List = tmp;
-}
-
-void
-rb_gc_unregister_address(VALUE *addr)
-{
- rb_objspace_t *objspace = &rb_objspace;
- struct gc_list *tmp = global_List;
-
- if (tmp->varptr == addr) {
- global_List = tmp->next;
- xfree(tmp);
- return;
- }
- while (tmp->next) {
- if (tmp->next->varptr == addr) {
- struct gc_list *t = tmp->next;
-
- tmp->next = tmp->next->next;
- xfree(t);
- break;
- }
- tmp = tmp->next;
- }
-}
-
-#define GC_NOTIFY 0
-
-static int
-garbage_collect(rb_objspace_t *objspace)
-{
- if (GC_NOTIFY) printf("start garbage_collect()\n");
-
- if (!heaps) {
- return FALSE;
- }
- if (!ready_to_gc(objspace)) {
- return TRUE;
- }
-
- gc_prof_timer_start(objspace);
-
- rest_sweep(objspace);
-
- during_gc++;
- gc_marks(objspace);
-
- gc_prof_sweep_timer_start(objspace);
- gc_sweep(objspace);
- gc_prof_sweep_timer_stop(objspace);
-
- gc_prof_timer_stop(objspace, Qtrue);
- if (GC_NOTIFY) printf("end garbage_collect()\n");
- return TRUE;
-}
-
-static void *
-gc_with_gvl(void *ptr)
-{
- return (void *)(VALUE)garbage_collect((rb_objspace_t *)ptr);
-}
-
-static int
-garbage_collect_with_gvl(rb_objspace_t *objspace)
-{
- if (dont_gc) return TRUE;
- if (ruby_thread_has_gvl_p()) {
- return garbage_collect(objspace);
- }
- else {
- if (ruby_native_thread_p()) {
- return (int)(VALUE)rb_thread_call_with_gvl(gc_with_gvl, (void *)objspace);
- }
- else {
- /* no ruby thread */
- fprintf(stderr, "[FATAL] failed to allocate memory\n");
- exit(EXIT_FAILURE);
- }
- }
-}
-
-int
-rb_garbage_collect(void)
-{
- return garbage_collect(&rb_objspace);
-}
-
-#undef Init_stack
-
-void
-Init_stack(volatile VALUE *addr)
-{
- ruby_init_stack(addr);
-}
-
-/*
- * call-seq:
- * GC.start -> nil
- * gc.garbage_collect -> nil
- * ObjectSpace.garbage_collect -> nil
- *
- * Initiates garbage collection, unless manually disabled.
- *
- */
-
-VALUE
-rb_gc_start(void)
-{
- rb_gc();
- return Qnil;
-}
-
-void
-rb_gc(void)
-{
- rb_objspace_t *objspace = &rb_objspace;
- garbage_collect(objspace);
- if (!finalizing) finalize_deferred(objspace);
- free_unused_heaps(objspace);
-}
-
-int
-rb_during_gc(void)
-{
- rb_objspace_t *objspace = &rb_objspace;
- return during_gc;
-}
-
/*
* call-seq:
* GC.count -> Integer
@@ -3135,7 +3320,7 @@ rb_during_gc(void)
static VALUE
gc_count(VALUE self)
{
- return UINT2NUM(rb_objspace.count);
+ return UINT2NUM((&rb_objspace)->count);
}
/*
@@ -3146,19 +3331,17 @@ gc_count(VALUE self)
*
* The hash includes information about internal statistics about GC such as:
*
- * {
- * :count=>0,
- * :heap_used=>12,
- * :heap_length=>12,
- * :heap_increment=>0,
- * :heap_live_num=>7539,
- * :heap_free_num=>88,
- * :heap_final_num=>0,
- * :total_allocated_object=>7630,
- * :total_freed_object=>88
- * }
- *
- * The contents of the hash are implementation specific and may be changed in
+ * {
+ * :count => 18,
+ * :heap_used => 77,
+ * :heap_length => 77,
+ * :heap_increment => 0,
+ * :heap_live_num => 23287,
+ * :heap_free_num => 8115,
+ * :heap_final_num => 0,
+ * }
+ *
+ * The contents of the hash are implementation defined and may be changed in
* the future.
*
* This method is only expected to work on C Ruby.
@@ -3170,24 +3353,9 @@ gc_stat(int argc, VALUE *argv, VALUE self)
{
rb_objspace_t *objspace = &rb_objspace;
VALUE hash;
- static VALUE sym_count;
- static VALUE sym_heap_used, sym_heap_length, sym_heap_increment;
- static VALUE sym_heap_live_num, sym_heap_free_num, sym_heap_final_num;
- static VALUE sym_total_allocated_object, sym_total_freed_object;
- if (sym_count == 0) {
- sym_count = ID2SYM(rb_intern_const("count"));
- sym_heap_used = ID2SYM(rb_intern_const("heap_used"));
- sym_heap_length = ID2SYM(rb_intern_const("heap_length"));
- sym_heap_increment = ID2SYM(rb_intern_const("heap_increment"));
- sym_heap_live_num = ID2SYM(rb_intern_const("heap_live_num"));
- sym_heap_free_num = ID2SYM(rb_intern_const("heap_free_num"));
- sym_heap_final_num = ID2SYM(rb_intern_const("heap_final_num"));
- sym_total_allocated_object = ID2SYM(rb_intern_const("total_allocated_object"));
- sym_total_freed_object = ID2SYM(rb_intern_const("total_freed_object"));
- }
if (rb_scan_args(argc, argv, "01", &hash) == 1) {
- if (!RB_TYPE_P(hash, T_HASH))
+ if (TYPE(hash) != T_HASH)
rb_raise(rb_eTypeError, "non-hash given");
}
@@ -3197,1000 +3365,51 @@ gc_stat(int argc, VALUE *argv, VALUE self)
rest_sweep(objspace);
- rb_hash_aset(hash, sym_count, SIZET2NUM(objspace->count));
- /* implementation dependent counters */
- rb_hash_aset(hash, sym_heap_used, SIZET2NUM(objspace->heap.used));
- rb_hash_aset(hash, sym_heap_length, SIZET2NUM(objspace->heap.length));
- rb_hash_aset(hash, sym_heap_increment, SIZET2NUM(objspace->heap.increment));
- rb_hash_aset(hash, sym_heap_live_num, SIZET2NUM(objspace_live_num(objspace)));
- rb_hash_aset(hash, sym_heap_free_num, SIZET2NUM(objspace->heap.free_num));
- rb_hash_aset(hash, sym_heap_final_num, SIZET2NUM(objspace->heap.final_num));
- rb_hash_aset(hash, sym_total_allocated_object, SIZET2NUM(objspace->total_allocated_object_num));
- rb_hash_aset(hash, sym_total_freed_object, SIZET2NUM(objspace->total_freed_object_num));
+ rb_hash_aset(hash, ID2SYM(rb_intern("count")), SIZET2NUM(objspace->count));
+ /* implementation dependent counters */
+ rb_hash_aset(hash, ID2SYM(rb_intern("heap_used")), SIZET2NUM(objspace->heap.used));
+ rb_hash_aset(hash, ID2SYM(rb_intern("heap_length")), SIZET2NUM(objspace->heap.length));
+ rb_hash_aset(hash, ID2SYM(rb_intern("heap_increment")), SIZET2NUM(objspace->heap.increment));
+ rb_hash_aset(hash, ID2SYM(rb_intern("heap_live_num")), SIZET2NUM(objspace->heap.live_num));
+ rb_hash_aset(hash, ID2SYM(rb_intern("heap_free_num")), SIZET2NUM(objspace->heap.free_num));
+ rb_hash_aset(hash, ID2SYM(rb_intern("heap_final_num")), SIZET2NUM(objspace->heap.final_num));
return hash;
}
-/*
- * call-seq:
- * GC.stress -> true or false
- *
- * Returns current status of GC stress mode.
- */
-
-static VALUE
-gc_stress_get(VALUE self)
-{
- rb_objspace_t *objspace = &rb_objspace;
- return ruby_gc_stress ? Qtrue : Qfalse;
-}
-
-/*
- * call-seq:
- * GC.stress = bool -> bool
- *
- * Updates the GC stress mode.
- *
- * When stress mode is enabled, the GC is invoked at every GC opportunity:
- * all memory and object allocations.
- *
- * Enabling stress mode will degrade performance, it is only for debugging.
- */
-
-static VALUE
-gc_stress_set(VALUE self, VALUE flag)
-{
- rb_objspace_t *objspace = &rb_objspace;
- rb_secure(2);
- ruby_gc_stress = RTEST(flag);
- return flag;
-}
-
-/*
- * call-seq:
- * GC.enable -> true or false
- *
- * Enables garbage collection, returning +true+ if garbage
- * collection was previously disabled.
- *
- * GC.disable #=> false
- * GC.enable #=> true
- * GC.enable #=> false
- *
- */
-
-VALUE
-rb_gc_enable(void)
-{
- rb_objspace_t *objspace = &rb_objspace;
- int old = dont_gc;
-
- dont_gc = FALSE;
- return old ? Qtrue : Qfalse;
-}
-
-/*
- * call-seq:
- * GC.disable -> true or false
- *
- * Disables garbage collection, returning +true+ if garbage
- * collection was already disabled.
- *
- * GC.disable #=> false
- * GC.disable #=> true
- *
- */
-
-VALUE
-rb_gc_disable(void)
-{
- rb_objspace_t *objspace = &rb_objspace;
- int old = dont_gc;
-
- rest_sweep(objspace);
-
- dont_gc = TRUE;
- return old ? Qtrue : Qfalse;
-}
-
-void
-rb_gc_set_params(void)
-{
- char *malloc_limit_ptr, *heap_min_slots_ptr, *free_min_ptr;
-
- if (rb_safe_level() > 0) return;
-
- malloc_limit_ptr = getenv("RUBY_GC_MALLOC_LIMIT");
- if (malloc_limit_ptr != NULL) {
- int malloc_limit_i = atoi(malloc_limit_ptr);
- if (RTEST(ruby_verbose))
- fprintf(stderr, "malloc_limit=%d (%d)\n",
- malloc_limit_i, initial_malloc_limit);
- if (malloc_limit_i > 0) {
- initial_malloc_limit = malloc_limit_i;
- }
- }
-
- heap_min_slots_ptr = getenv("RUBY_HEAP_MIN_SLOTS");
- if (heap_min_slots_ptr != NULL) {
- int heap_min_slots_i = atoi(heap_min_slots_ptr);
- if (RTEST(ruby_verbose))
- fprintf(stderr, "heap_min_slots=%d (%d)\n",
- heap_min_slots_i, initial_heap_min_slots);
- if (heap_min_slots_i > 0) {
- initial_heap_min_slots = heap_min_slots_i;
- initial_expand_heap(&rb_objspace);
- }
- }
-
- free_min_ptr = getenv("RUBY_FREE_MIN");
- if (free_min_ptr != NULL) {
- int free_min_i = atoi(free_min_ptr);
- if (RTEST(ruby_verbose))
- fprintf(stderr, "free_min=%d (%d)\n", free_min_i, initial_free_min);
- if (free_min_i > 0) {
- initial_free_min = free_min_i;
- }
- }
-}
-
-void
-rb_objspace_reachable_objects_from(VALUE obj, void (func)(VALUE, void *), void *data)
-{
- rb_objspace_t *objspace = &rb_objspace;
-
- if (markable_object_p(objspace, obj)) {
- struct mark_func_data_struct mfd;
- mfd.mark_func = func;
- mfd.data = data;
- objspace->mark_func_data = &mfd;
- gc_mark_children(objspace, obj);
- objspace->mark_func_data = 0;
- }
-}
-
-/*
- ------------------------ Extended allocator ------------------------
-*/
-
-static void vm_xfree(rb_objspace_t *objspace, void *ptr);
-
-static void *
-negative_size_allocation_error_with_gvl(void *ptr)
-{
- rb_raise(rb_eNoMemError, "%s", (const char *)ptr);
- return 0; /* should not be reached */
-}
-
-static void
-negative_size_allocation_error(const char *msg)
-{
- if (ruby_thread_has_gvl_p()) {
- rb_raise(rb_eNoMemError, "%s", msg);
- }
- else {
- if (ruby_native_thread_p()) {
- rb_thread_call_with_gvl(negative_size_allocation_error_with_gvl, (void *)msg);
- }
- else {
- fprintf(stderr, "[FATAL] %s\n", msg);
- exit(EXIT_FAILURE);
- }
- }
-}
-
-static void *
-ruby_memerror_body(void *dummy)
-{
- rb_memerror();
- return 0;
-}
-
-static void
-ruby_memerror(void)
-{
- if (ruby_thread_has_gvl_p()) {
- rb_memerror();
- }
- else {
- if (ruby_native_thread_p()) {
- rb_thread_call_with_gvl(ruby_memerror_body, 0);
- }
- else {
- /* no ruby thread */
- fprintf(stderr, "[FATAL] failed to allocate memory\n");
- exit(EXIT_FAILURE);
- }
- }
-}
-
-void
-rb_memerror(void)
-{
- rb_thread_t *th = GET_THREAD();
- if (!nomem_error ||
- (rb_thread_raised_p(th, RAISED_NOMEMORY) && rb_safe_level() < 4)) {
- fprintf(stderr, "[FATAL] failed to allocate memory\n");
- exit(EXIT_FAILURE);
- }
- if (rb_thread_raised_p(th, RAISED_NOMEMORY)) {
- rb_thread_raised_clear(th);
- GET_THREAD()->errinfo = nomem_error;
- JUMP_TAG(TAG_RAISE);
- }
- rb_thread_raised_set(th, RAISED_NOMEMORY);
- rb_exc_raise(nomem_error);
-}
-
-static void *
-aligned_malloc(size_t alignment, size_t size)
-{
- void *res;
-
-#if defined __MINGW32__
- res = __mingw_aligned_malloc(size, alignment);
-#elif defined _WIN32 && !defined __CYGWIN__
- res = _aligned_malloc(size, alignment);
-#elif defined(HAVE_POSIX_MEMALIGN)
- if (posix_memalign(&res, alignment, size) == 0) {
- return res;
- }
- else {
- return NULL;
- }
-#elif defined(HAVE_MEMALIGN)
- res = memalign(alignment, size);
-#else
- char* aligned;
- res = malloc(alignment + size + sizeof(void*));
- aligned = (char*)res + alignment + sizeof(void*);
- aligned -= ((VALUE)aligned & (alignment - 1));
- ((void**)aligned)[-1] = res;
- res = (void*)aligned;
-#endif
-
-#if defined(_DEBUG) || defined(GC_DEBUG)
- /* alignment must be a power of 2 */
- assert((alignment - 1) & alignment == 0);
- assert(alignment % sizeof(void*) == 0);
-#endif
- return res;
-}
-
-static void
-aligned_free(void *ptr)
-{
-#if defined __MINGW32__
- __mingw_aligned_free(ptr);
-#elif defined _WIN32 && !defined __CYGWIN__
- _aligned_free(ptr);
-#elif defined(HAVE_MEMALIGN) || defined(HAVE_POSIX_MEMALIGN)
- free(ptr);
-#else
- free(((void**)ptr)[-1]);
-#endif
-}
-
-static inline size_t
-vm_malloc_prepare(rb_objspace_t *objspace, size_t size)
-{
- if ((ssize_t)size < 0) {
- negative_size_allocation_error("negative allocation size (or too big)");
- }
- if (size == 0) size = 1;
-
-#if CALC_EXACT_MALLOC_SIZE
- size += sizeof(size_t);
-#endif
-
- if ((ruby_gc_stress && !ruby_disable_gc_stress) ||
- (malloc_increase+size) > malloc_limit) {
- garbage_collect_with_gvl(objspace);
- }
-
- return size;
-}
-
-static inline void *
-vm_malloc_fixup(rb_objspace_t *objspace, void *mem, size_t size)
-{
- ATOMIC_SIZE_ADD(malloc_increase, size);
-
-#if CALC_EXACT_MALLOC_SIZE
- ATOMIC_SIZE_ADD(objspace->malloc_params.allocated_size, size);
- ATOMIC_SIZE_INC(objspace->malloc_params.allocations);
- ((size_t *)mem)[0] = size;
- mem = (size_t *)mem + 1;
-#endif
-
- return mem;
-}
-
-#define TRY_WITH_GC(alloc) do { \
- if (!(alloc) && \
- (!garbage_collect_with_gvl(objspace) || \
- !(alloc))) { \
- ruby_memerror(); \
- } \
- } while (0)
-
-static void *
-vm_xmalloc(rb_objspace_t *objspace, size_t size)
-{
- void *mem;
-
- size = vm_malloc_prepare(objspace, size);
- TRY_WITH_GC(mem = malloc(size));
- return vm_malloc_fixup(objspace, mem, size);
-}
-
-static void *
-vm_xrealloc(rb_objspace_t *objspace, void *ptr, size_t size)
-{
- void *mem;
-#if CALC_EXACT_MALLOC_SIZE
- size_t oldsize;
-#endif
-
- if ((ssize_t)size < 0) {
- negative_size_allocation_error("negative re-allocation size");
- }
-
- if (!ptr) return vm_xmalloc(objspace, size);
-
- /*
- * The behavior of realloc(ptr, 0) is implementation defined.
- * Therefore we don't use realloc(ptr, 0) for portability reason.
- * see http://www.open-std.org/jtc1/sc22/wg14/www/docs/dr_400.htm
- */
- if (size == 0) {
- vm_xfree(objspace, ptr);
- return 0;
- }
- if (ruby_gc_stress && !ruby_disable_gc_stress)
- garbage_collect_with_gvl(objspace);
-
-#if CALC_EXACT_MALLOC_SIZE
- size += sizeof(size_t);
- ptr = (size_t *)ptr - 1;
- oldsize = ((size_t *)ptr)[0];
-#endif
-
- mem = realloc(ptr, size);
- if (!mem) {
- if (garbage_collect_with_gvl(objspace)) {
- mem = realloc(ptr, size);
- }
- if (!mem) {
- ruby_memerror();
- }
- }
- ATOMIC_SIZE_ADD(malloc_increase, size);
-
-#if CALC_EXACT_MALLOC_SIZE
- ATOMIC_SIZE_ADD(objspace->malloc_params.allocated_size, size - oldsize);
- ((size_t *)mem)[0] = size;
- mem = (size_t *)mem + 1;
-#endif
-
- return mem;
-}
-
-static void
-vm_xfree(rb_objspace_t *objspace, void *ptr)
-{
-#if CALC_EXACT_MALLOC_SIZE
- size_t size;
- ptr = ((size_t *)ptr) - 1;
- size = ((size_t*)ptr)[0];
- if (size) {
- ATOMIC_SIZE_SUB(objspace->malloc_params.allocated_size, size);
- ATOMIC_SIZE_DEC(objspace->malloc_params.allocations);
- }
-#endif
-
- free(ptr);
-}
-
-void *
-ruby_xmalloc(size_t size)
-{
- return vm_xmalloc(&rb_objspace, size);
-}
-
-static inline size_t
-xmalloc2_size(size_t n, size_t size)
-{
- size_t len = size * n;
- if (n != 0 && size != len / n) {
- rb_raise(rb_eArgError, "malloc: possible integer overflow");
- }
- return len;
-}
-
-void *
-ruby_xmalloc2(size_t n, size_t size)
-{
- return vm_xmalloc(&rb_objspace, xmalloc2_size(n, size));
-}
-
-static void *
-vm_xcalloc(rb_objspace_t *objspace, size_t count, size_t elsize)
-{
- void *mem;
- size_t size;
-
- size = xmalloc2_size(count, elsize);
- size = vm_malloc_prepare(objspace, size);
-
- TRY_WITH_GC(mem = calloc(1, size));
- return vm_malloc_fixup(objspace, mem, size);
-}
-
-void *
-ruby_xcalloc(size_t n, size_t size)
-{
- return vm_xcalloc(&rb_objspace, n, size);
-}
-
-void *
-ruby_xrealloc(void *ptr, size_t size)
-{
- return vm_xrealloc(&rb_objspace, ptr, size);
-}
-
-void *
-ruby_xrealloc2(void *ptr, size_t n, size_t size)
-{
- size_t len = size * n;
- if (n != 0 && size != len / n) {
- rb_raise(rb_eArgError, "realloc: possible integer overflow");
- }
- return ruby_xrealloc(ptr, len);
-}
-
-void
-ruby_xfree(void *x)
-{
- if (x)
- vm_xfree(&rb_objspace, x);
-}
-
-
-/* Mimic ruby_xmalloc, but need not rb_objspace.
- * should return pointer suitable for ruby_xfree
- */
-void *
-ruby_mimmalloc(size_t size)
-{
- void *mem;
-#if CALC_EXACT_MALLOC_SIZE
- size += sizeof(size_t);
-#endif
- mem = malloc(size);
-#if CALC_EXACT_MALLOC_SIZE
- /* set 0 for consistency of allocated_size/allocations */
- ((size_t *)mem)[0] = 0;
- mem = (size_t *)mem + 1;
-#endif
- return mem;
-}
#if CALC_EXACT_MALLOC_SIZE
/*
* call-seq:
* GC.malloc_allocated_size -> Integer
*
- * Returns the size of memory allocated by malloc().
+ * The allocated size by malloc().
*
- * Only available if ruby was built with +CALC_EXACT_MALLOC_SIZE+.
+ * It returns the allocated size by malloc().
*/
static VALUE
gc_malloc_allocated_size(VALUE self)
{
- return UINT2NUM(rb_objspace.malloc_params.allocated_size);
+ return UINT2NUM((&rb_objspace)->malloc_params.allocated_size);
}
/*
* call-seq:
* GC.malloc_allocations -> Integer
*
- * Returns the number of malloc() allocations.
+ * The number of allocated memory object by malloc().
*
- * Only available if ruby was built with +CALC_EXACT_MALLOC_SIZE+.
+ * It returns the number of allocated memory object by malloc().
*/
static VALUE
gc_malloc_allocations(VALUE self)
{
- return UINT2NUM(rb_objspace.malloc_params.allocations);
+ return UINT2NUM((&rb_objspace)->malloc_params.allocations);
}
#endif
-/*
- ------------------------------ WeakMap ------------------------------
-*/
-
-struct weakmap {
- st_table *obj2wmap; /* obj -> [ref,...] */
- st_table *wmap2obj; /* ref -> obj */
- VALUE final;
-};
-
-static int
-wmap_mark_map(st_data_t key, st_data_t val, st_data_t arg)
-{
- gc_mark_ptr((rb_objspace_t *)arg, (VALUE)val);
- return ST_CONTINUE;
-}
-
-static void
-wmap_mark(void *ptr)
-{
- struct weakmap *w = ptr;
- st_foreach(w->obj2wmap, wmap_mark_map, (st_data_t)&rb_objspace);
- rb_gc_mark(w->final);
-}
-
-static int
-wmap_free_map(st_data_t key, st_data_t val, st_data_t arg)
-{
- rb_ary_resize((VALUE)val, 0);
- return ST_CONTINUE;
-}
-
-static void
-wmap_free(void *ptr)
-{
- struct weakmap *w = ptr;
- st_foreach(w->obj2wmap, wmap_free_map, 0);
- st_free_table(w->obj2wmap);
- st_free_table(w->wmap2obj);
-}
-
-size_t rb_ary_memsize(VALUE ary);
-static int
-wmap_memsize_map(st_data_t key, st_data_t val, st_data_t arg)
-{
- *(size_t *)arg += rb_ary_memsize((VALUE)val);
- return ST_CONTINUE;
-}
-
-static size_t
-wmap_memsize(const void *ptr)
-{
- size_t size;
- const struct weakmap *w = ptr;
- if (!w) return 0;
- size = sizeof(*w);
- size += st_memsize(w->obj2wmap);
- size += st_memsize(w->wmap2obj);
- st_foreach(w->obj2wmap, wmap_memsize_map, (st_data_t)&size);
- return size;
-}
-
-static const rb_data_type_t weakmap_type = {
- "weakmap",
- {
- wmap_mark,
- wmap_free,
- wmap_memsize,
- }
-};
-
-static VALUE
-wmap_allocate(VALUE klass)
-{
- struct weakmap *w;
- VALUE obj = TypedData_Make_Struct(klass, struct weakmap, &weakmap_type, w);
- w->obj2wmap = st_init_numtable();
- w->wmap2obj = st_init_numtable();
- w->final = rb_obj_method(obj, ID2SYM(rb_intern("finalize")));
- return obj;
-}
-
-static int
-wmap_final_func(st_data_t *key, st_data_t *value, st_data_t arg, int existing)
-{
- VALUE wmap, ary;
- if (!existing) return ST_STOP;
- wmap = (VALUE)arg, ary = (VALUE)*value;
- rb_ary_delete_same(ary, wmap);
- if (!RARRAY_LEN(ary)) return ST_DELETE;
- return ST_CONTINUE;
-}
-
-static VALUE
-wmap_finalize(VALUE self, VALUE objid)
-{
- st_data_t orig, wmap, data;
- VALUE obj, rids;
- long i;
- struct weakmap *w;
-
- TypedData_Get_Struct(self, struct weakmap, &weakmap_type, w);
- /* Get reference from object id. */
- obj = obj_id_to_ref(objid);
-
- /* obj is original referenced object and/or weak reference. */
- orig = (st_data_t)obj;
- if (st_delete(w->obj2wmap, &orig, &data)) {
- rids = (VALUE)data;
- for (i = 0; i < RARRAY_LEN(rids); ++i) {
- wmap = (st_data_t)RARRAY_PTR(rids)[i];
- st_delete(w->wmap2obj, &wmap, NULL);
- }
- }
-
- wmap = (st_data_t)obj;
- if (st_delete(w->wmap2obj, &wmap, &orig)) {
- wmap = (st_data_t)obj;
- st_update(w->obj2wmap, orig, wmap_final_func, wmap);
- }
- return self;
-}
-
-/* Creates a weak reference from the given key to the given value */
-static VALUE
-wmap_aset(VALUE self, VALUE wmap, VALUE orig)
-{
- st_data_t data;
- VALUE rids;
- struct weakmap *w;
-
- TypedData_Get_Struct(self, struct weakmap, &weakmap_type, w);
- rb_define_final(orig, w->final);
- rb_define_final(wmap, w->final);
- if (st_lookup(w->obj2wmap, (st_data_t)orig, &data)) {
- rids = (VALUE)data;
- }
- else {
- rids = rb_ary_tmp_new(1);
- st_insert(w->obj2wmap, (st_data_t)orig, (st_data_t)rids);
- }
- rb_ary_push(rids, wmap);
- st_insert(w->wmap2obj, (st_data_t)wmap, (st_data_t)orig);
- return nonspecial_obj_id(orig);
-}
-
-/* Retrieves a weakly referenced object with the given key */
-static VALUE
-wmap_aref(VALUE self, VALUE wmap)
-{
- st_data_t data;
- VALUE obj;
- struct weakmap *w;
- rb_objspace_t *objspace = &rb_objspace;
-
- TypedData_Get_Struct(self, struct weakmap, &weakmap_type, w);
- if (!st_lookup(w->wmap2obj, (st_data_t)wmap, &data)) return Qnil;
- obj = (VALUE)data;
- if (!is_id_value(objspace, obj)) return Qnil;
- if (!is_live_object(objspace, obj)) return Qnil;
- return obj;
-}
-
-
-/*
- ------------------------------ GC profiler ------------------------------
-*/
-
-static inline void gc_prof_set_heap_info(rb_objspace_t *, gc_profile_record *);
-#define GC_PROFILE_RECORD_DEFAULT_SIZE 100
-
-static double
-getrusage_time(void)
-{
-#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_PROCESS_CPUTIME_ID)
- {
- static int try_clock_gettime = 1;
- struct timespec ts;
- if (try_clock_gettime && clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts) == 0) {
- return ts.tv_sec + ts.tv_nsec * 1e-9;
- }
- else {
- try_clock_gettime = 0;
- }
- }
-#endif
-
-#ifdef RUSAGE_SELF
- {
- struct rusage usage;
- struct timeval time;
- if (getrusage(RUSAGE_SELF, &usage) == 0) {
- time = usage.ru_utime;
- return time.tv_sec + time.tv_usec * 1e-6;
- }
- }
-#endif
-
-#ifdef _WIN32
- {
- FILETIME creation_time, exit_time, kernel_time, user_time;
- ULARGE_INTEGER ui;
- LONG_LONG q;
- double t;
-
- if (GetProcessTimes(GetCurrentProcess(),
- &creation_time, &exit_time, &kernel_time, &user_time) != 0) {
- memcpy(&ui, &user_time, sizeof(FILETIME));
- q = ui.QuadPart / 10L;
- t = (DWORD)(q % 1000000L) * 1e-6;
- q /= 1000000L;
-#ifdef __GNUC__
- t += q;
-#else
- t += (double)(DWORD)(q >> 16) * (1 << 16);
- t += (DWORD)q & ~(~0 << 16);
-#endif
- return t;
- }
- }
-#endif
-
- return 0.0;
-}
-
-static inline void
-gc_prof_timer_start(rb_objspace_t *objspace)
-{
- if (objspace->profile.run) {
- size_t count = objspace->profile.count;
-
- if (!objspace->profile.record) {
- objspace->profile.size = GC_PROFILE_RECORD_DEFAULT_SIZE;
- objspace->profile.record = malloc(sizeof(gc_profile_record) * objspace->profile.size);
- }
- if (count >= objspace->profile.size) {
- objspace->profile.size += 1000;
- objspace->profile.record = realloc(objspace->profile.record, sizeof(gc_profile_record) * objspace->profile.size);
- }
- if (!objspace->profile.record) {
- rb_bug("gc_profile malloc or realloc miss");
- }
- MEMZERO(&objspace->profile.record[count], gc_profile_record, 1);
- objspace->profile.record[count].gc_time = getrusage_time();
- objspace->profile.record[objspace->profile.count].gc_invoke_time =
- objspace->profile.record[count].gc_time - objspace->profile.invoke_time;
- }
-}
-
-static inline void
-gc_prof_timer_stop(rb_objspace_t *objspace, int marked)
-{
- if (objspace->profile.run) {
- double gc_time = 0;
- size_t count = objspace->profile.count;
- gc_profile_record *record = &objspace->profile.record[count];
-
- gc_time = getrusage_time() - record->gc_time;
- if (gc_time < 0) gc_time = 0;
- record->gc_time = gc_time;
- record->is_marked = !!(marked);
- gc_prof_set_heap_info(objspace, record);
- objspace->profile.count++;
- }
-}
-
-#if !GC_PROFILE_MORE_DETAIL
-
-static inline void
-gc_prof_mark_timer_start(rb_objspace_t *objspace)
-{
- if (RUBY_DTRACE_GC_MARK_BEGIN_ENABLED()) {
- RUBY_DTRACE_GC_MARK_BEGIN();
- }
-}
-
-static inline void
-gc_prof_mark_timer_stop(rb_objspace_t *objspace)
-{
- if (RUBY_DTRACE_GC_MARK_END_ENABLED()) {
- RUBY_DTRACE_GC_MARK_END();
- }
-}
-
-static inline void
-gc_prof_sweep_timer_start(rb_objspace_t *objspace)
-{
- if (RUBY_DTRACE_GC_SWEEP_BEGIN_ENABLED()) {
- RUBY_DTRACE_GC_SWEEP_BEGIN();
- }
-}
-
-static inline void
-gc_prof_sweep_timer_stop(rb_objspace_t *objspace)
-{
- if (RUBY_DTRACE_GC_SWEEP_END_ENABLED()) {
- RUBY_DTRACE_GC_SWEEP_END();
- }
-}
-
-static inline void
-gc_prof_set_malloc_info(rb_objspace_t *objspace)
-{
-}
-
-static inline void
-gc_prof_set_heap_info(rb_objspace_t *objspace, gc_profile_record *record)
-{
- size_t live = objspace_live_num(objspace);
- size_t total = heaps_used * HEAP_OBJ_LIMIT;
-
- record->heap_total_objects = total;
- record->heap_use_size = live * sizeof(RVALUE);
- record->heap_total_size = total * sizeof(RVALUE);
-}
-
-#else
-
-static inline void
-gc_prof_mark_timer_start(rb_objspace_t *objspace)
-{
- if (RUBY_DTRACE_GC_MARK_BEGIN_ENABLED()) {
- RUBY_DTRACE_GC_MARK_BEGIN();
- }
- if (objspace->profile.run) {
- size_t count = objspace->profile.count;
-
- objspace->profile.record[count].gc_mark_time = getrusage_time();
- }
-}
-
-static inline void
-gc_prof_mark_timer_stop(rb_objspace_t *objspace)
-{
- if (RUBY_DTRACE_GC_MARK_END_ENABLED()) {
- RUBY_DTRACE_GC_MARK_END();
- }
- if (objspace->profile.run) {
- double mark_time = 0;
- size_t count = objspace->profile.count;
- gc_profile_record *record = &objspace->profile.record[count];
-
- mark_time = getrusage_time() - record->gc_mark_time;
- if (mark_time < 0) mark_time = 0;
- record->gc_mark_time = mark_time;
- }
-}
-
-static inline void
-gc_prof_sweep_timer_start(rb_objspace_t *objspace)
-{
- if (RUBY_DTRACE_GC_SWEEP_BEGIN_ENABLED()) {
- RUBY_DTRACE_GC_SWEEP_BEGIN();
- }
- if (objspace->profile.run) {
- size_t count = objspace->profile.count;
-
- objspace->profile.record[count].gc_sweep_time = getrusage_time();
- }
-}
-
-static inline void
-gc_prof_sweep_timer_stop(rb_objspace_t *objspace)
-{
- if (RUBY_DTRACE_GC_SWEEP_END_ENABLED()) {
- RUBY_DTRACE_GC_SWEEP_END();
- }
- if (objspace->profile.run) {
- double sweep_time = 0;
- size_t count = objspace->profile.count;
- gc_profile_record *record = &objspace->profile.record[count];
-
- sweep_time = getrusage_time() - record->gc_sweep_time;\
- if (sweep_time < 0) sweep_time = 0;\
- record->gc_sweep_time = sweep_time;
- }
-}
-
-static inline void
-gc_prof_set_malloc_info(rb_objspace_t *objspace)
-{
- if (objspace->profile.run) {
- gc_profile_record *record = &objspace->profile.record[objspace->profile.count];
- if (record) {
- record->allocate_increase = malloc_increase;
- record->allocate_limit = malloc_limit;
- }
- }
-}
-
-static inline void
-gc_prof_set_heap_info(rb_objspace_t *objspace, gc_profile_record *record)
-{
- size_t live = objspace_live_num(objspace);
- size_t total = heaps_used * HEAP_OBJ_LIMIT;
-
- record->heap_use_slots = heaps_used;
- record->heap_live_objects = live;
- record->heap_free_objects = total - live;
- record->heap_total_objects = total;
- record->have_finalize = deferred_final_list ? Qtrue : Qfalse;
- record->heap_use_size = live * sizeof(RVALUE);
- record->heap_total_size = total * sizeof(RVALUE);
-}
-
-#endif /* !GC_PROFILE_MORE_DETAIL */
-
-
-/*
- * call-seq:
- * GC::Profiler.clear -> nil
- *
- * Clears the GC profiler data.
- *
- */
-
-static VALUE
-gc_profile_clear(void)
-{
- rb_objspace_t *objspace = &rb_objspace;
-
- if (GC_PROFILE_RECORD_DEFAULT_SIZE * 2 < objspace->profile.size) {
- objspace->profile.size = GC_PROFILE_RECORD_DEFAULT_SIZE * 2;
- objspace->profile.record = realloc(objspace->profile.record, sizeof(gc_profile_record) * objspace->profile.size);
- if (!objspace->profile.record) {
- rb_memerror();
- }
- }
- MEMZERO(objspace->profile.record, gc_profile_record, objspace->profile.size);
- objspace->profile.count = 0;
- return Qnil;
-}
-
-/*
- * call-seq:
- * GC::Profiler.raw_data -> [Hash, ...]
- *
- * Returns an Array of individual raw profile data Hashes ordered
- * from earliest to latest by +:GC_INVOKE_TIME+.
- *
- * For example:
- *
- * [
- * {
- * :GC_TIME=>1.3000000000000858e-05,
- * :GC_INVOKE_TIME=>0.010634999999999999,
- * :HEAP_USE_SIZE=>289640,
- * :HEAP_TOTAL_SIZE=>588960,
- * :HEAP_TOTAL_OBJECTS=>14724,
- * :GC_IS_MARKED=>false
- * },
- * # ...
- * ]
- *
- * The keys mean:
- *
- * +:GC_TIME+::
- * Time elapsed in seconds for this GC run
- * +:GC_INVOKE_TIME+::
- * Time elapsed in seconds from startup to when the GC was invoked
- * +:HEAP_USE_SIZE+::
- * Total bytes of heap used
- * +:HEAP_TOTAL_SIZE+::
- * Total size of heap in bytes
- * +:HEAP_TOTAL_OBJECTS+::
- * Total number of objects
- * +:GC_IS_MARKED+::
- * Returns +true+ if the GC is in mark phase
- *
- * If ruby was built with +GC_PROFILE_MORE_DETAIL+, you will also have access
- * to the following hash keys:
- *
- * +:GC_MARK_TIME+::
- * +:GC_SWEEP_TIME+::
- * +:ALLOCATE_INCREASE+::
- * +:ALLOCATE_LIMIT+::
- * +:HEAP_USE_SLOTS+::
- * +:HEAP_LIVE_OBJECTS+::
- * +:HEAP_FREE_OBJECTS+::
- * +:HAVE_FINALIZE+::
- *
- */
-
static VALUE
gc_profile_record_get(void)
{
@@ -4227,71 +3446,75 @@ gc_profile_record_get(void)
return gc_profile;
}
-static void
-gc_profile_dump_on(VALUE out, VALUE (*append)(VALUE, VALUE))
+/*
+ * call-seq:
+ * GC::Profiler.result -> String
+ *
+ * Returns a profile data report such as:
+ *
+ * GC 1 invokes.
+ * Index Invoke Time(sec) Use Size(byte) Total Size(byte) Total Object GC time(ms)
+ * 1 0.012 159240 212940 10647 0.00000000000001530000
+ */
+
+static VALUE
+gc_profile_result(void)
{
rb_objspace_t *objspace = &rb_objspace;
- size_t count = objspace->profile.count;
+ VALUE record;
+ VALUE result;
+ int i, index;
- if (objspace->profile.run && count) {
- int index = 1;
- size_t i;
- gc_profile_record r;
- append(out, rb_sprintf("GC %"PRIuSIZE" invokes.\n", objspace->count));
- append(out, rb_str_new_cstr("Index Invoke Time(sec) Use Size(byte) Total Size(byte) Total Object GC Time(ms)\n"));
- for (i = 0; i < count; i++) {
- r = objspace->profile.record[i];
+ record = gc_profile_record_get();
+ if (objspace->profile.run && objspace->profile.count) {
+ result = rb_sprintf("GC %d invokes.\n", NUM2INT(gc_count(0)));
+ index = 1;
+ rb_str_cat2(result, "Index Invoke Time(sec) Use Size(byte) Total Size(byte) Total Object GC Time(ms)\n");
+ for (i = 0; i < (int)RARRAY_LEN(record); i++) {
+ VALUE r = RARRAY_PTR(record)[i];
#if !GC_PROFILE_MORE_DETAIL
- if (r.is_marked) {
+ if (rb_hash_aref(r, ID2SYM(rb_intern("GC_IS_MARKED")))) {
#endif
- append(out, rb_sprintf("%5d %19.3f %20"PRIuSIZE" %20"PRIuSIZE" %20"PRIuSIZE" %30.20f\n",
- index++, r.gc_invoke_time, r.heap_use_size,
- r.heap_total_size, r.heap_total_objects, r.gc_time*1000));
+ rb_str_catf(result, "%5d %19.3f %20"PRIuSIZE" %20"PRIuSIZE" %20"PRIuSIZE" %30.20f\n",
+ index++, NUM2DBL(rb_hash_aref(r, ID2SYM(rb_intern("GC_INVOKE_TIME")))),
+ (size_t)NUM2SIZET(rb_hash_aref(r, ID2SYM(rb_intern("HEAP_USE_SIZE")))),
+ (size_t)NUM2SIZET(rb_hash_aref(r, ID2SYM(rb_intern("HEAP_TOTAL_SIZE")))),
+ (size_t)NUM2SIZET(rb_hash_aref(r, ID2SYM(rb_intern("HEAP_TOTAL_OBJECTS")))),
+ NUM2DBL(rb_hash_aref(r, ID2SYM(rb_intern("GC_TIME"))))*1000);
#if !GC_PROFILE_MORE_DETAIL
}
#endif
}
#if GC_PROFILE_MORE_DETAIL
- append(out, rb_str_new_cstr("\n\n" \
- "More detail.\n" \
- "Index Allocate Increase Allocate Limit Use Slot Have Finalize Mark Time(ms) Sweep Time(ms)\n"));
+ rb_str_cat2(result, "\n\n");
+ rb_str_cat2(result, "More detail.\n");
+ rb_str_cat2(result, "Index Allocate Increase Allocate Limit Use Slot Have Finalize Mark Time(ms) Sweep Time(ms)\n");
index = 1;
- for (i = 0; i < count; i++) {
- r = objspace->profile.record[i];
- append(out, rb_sprintf("%5d %17"PRIuSIZE" %17"PRIuSIZE" %9"PRIuSIZE" %14s %25.20f %25.20f\n",
- index++, r.allocate_increase, r.allocate_limit,
- r.heap_use_slots, (r.have_finalize ? "true" : "false"),
- r.gc_mark_time*1000, r.gc_sweep_time*1000));
+ for (i = 0; i < (int)RARRAY_LEN(record); i++) {
+ VALUE r = RARRAY_PTR(record)[i];
+ rb_str_catf(result, "%5d %17"PRIuSIZE" %17"PRIuSIZE" %9"PRIuSIZE" %14s %25.20f %25.20f\n",
+ index++, (size_t)NUM2SIZET(rb_hash_aref(r, ID2SYM(rb_intern("ALLOCATE_INCREASE")))),
+ (size_t)NUM2SIZET(rb_hash_aref(r, ID2SYM(rb_intern("ALLOCATE_LIMIT")))),
+ (size_t)NUM2SIZET(rb_hash_aref(r, ID2SYM(rb_intern("HEAP_USE_SLOTS")))),
+ rb_hash_aref(r, ID2SYM(rb_intern("HAVE_FINALIZE")))? "true" : "false",
+ NUM2DBL(rb_hash_aref(r, ID2SYM(rb_intern("GC_MARK_TIME"))))*1000,
+ NUM2DBL(rb_hash_aref(r, ID2SYM(rb_intern("GC_SWEEP_TIME"))))*1000);
}
#endif
}
+ else {
+ result = rb_str_new2("");
+ }
+ return result;
}
-/*
- * call-seq:
- * GC::Profiler.result -> String
- *
- * Returns a profile data report such as:
- *
- * GC 1 invokes.
- * Index Invoke Time(sec) Use Size(byte) Total Size(byte) Total Object GC time(ms)
- * 1 0.012 159240 212940 10647 0.00000000000001530000
- */
-
-static VALUE
-gc_profile_result(void)
-{
- VALUE str = rb_str_buf_new(0);
- gc_profile_dump_on(str, rb_str_buf_append);
- return str;
-}
/*
* call-seq:
* GC::Profiler.report
- * GC::Profiler.report(io)
+ * GC::Profiler.report io
*
- * Writes the GC::Profiler.result to <tt>$stdout</tt> or the given IO object.
+ * Writes the GC::Profiler#result to <tt>$stdout</tt> or the given IO object.
*
*/
@@ -4306,16 +3529,16 @@ gc_profile_report(int argc, VALUE *argv, VALUE self)
else {
rb_scan_args(argc, argv, "01", &out);
}
- gc_profile_dump_on(out, rb_io_write);
+ rb_io_write(out, gc_profile_result());
return Qnil;
}
/*
* call-seq:
- * GC::Profiler.total_time -> float
+ * GC::Profiler.total_time -> float
*
- * The total time used for garbage collection in seconds
+ * The total time used for garbage collection in milliseconds
*/
static VALUE
@@ -4333,138 +3556,6 @@ gc_profile_total_time(VALUE self)
return DBL2NUM(time);
}
-/*
- * call-seq:
- * GC::Profiler.enabled? -> true or false
- *
- * The current status of GC profile mode.
- */
-
-static VALUE
-gc_profile_enable_get(VALUE self)
-{
- rb_objspace_t *objspace = &rb_objspace;
- return objspace->profile.run ? Qtrue : Qfalse;
-}
-
-/*
- * call-seq:
- * GC::Profiler.enable -> nil
- *
- * Starts the GC profiler.
- *
- */
-
-static VALUE
-gc_profile_enable(void)
-{
- rb_objspace_t *objspace = &rb_objspace;
-
- objspace->profile.run = TRUE;
- return Qnil;
-}
-
-/*
- * call-seq:
- * GC::Profiler.disable -> nil
- *
- * Stops the GC profiler.
- *
- */
-
-static VALUE
-gc_profile_disable(void)
-{
- rb_objspace_t *objspace = &rb_objspace;
-
- objspace->profile.run = FALSE;
- return Qnil;
-}
-
-#ifdef GC_DEBUG
-
-/*
- ------------------------------ DEBUG ------------------------------
-*/
-
-void
-rb_gcdebug_print_obj_condition(VALUE obj)
-{
- rb_objspace_t *objspace = &rb_objspace;
-
- if (is_pointer_to_heap(objspace, (void *)obj)) {
- fprintf(stderr, "pointer to heap?: true\n");
- }
- else {
- fprintf(stderr, "pointer to heap?: false\n");
- return;
- }
- fprintf(stderr, "marked?: %s\n",
- MARKED_IN_BITMAP(GET_HEAP_BITMAP(obj), obj) ? "true" : "false");
- if (is_lazy_sweeping(objspace)) {
- fprintf(stderr, "lazy sweeping?: true\n");
- fprintf(stderr, "swept?: %s\n",
- is_swept_object(objspace, obj) ? "done" : "not yet");
- }
- else {
- fprintf(stderr, "lazy sweeping?: false\n");
- }
-}
-
-static VALUE
-gcdebug_sential(VALUE obj, VALUE name)
-{
- fprintf(stderr, "WARNING: object %s(%p) is inadvertently collected\n", (char *)name, (void *)obj);
- return Qnil;
-}
-
-void
-rb_gcdebug_sentinel(VALUE obj, const char *name)
-{
- rb_define_final(obj, rb_proc_new(gcdebug_sential, (VALUE)name));
-}
-#endif /* GC_DEBUG */
-
-
-/*
- * Document-class: ObjectSpace
- *
- * The ObjectSpace module contains a number of routines
- * that interact with the garbage collection facility and allow you to
- * traverse all living objects with an iterator.
- *
- * ObjectSpace also provides support for object finalizers, procs that will be
- * called when a specific object is about to be destroyed by garbage
- * collection.
- *
- * include ObjectSpace
- *
- * a = "A"
- * b = "B"
- * c = "C"
- *
- * define_finalizer(a, proc {|id| puts "Finalizer one on #{id}" })
- * define_finalizer(a, proc {|id| puts "Finalizer two on #{id}" })
- * define_finalizer(b, proc {|id| puts "Finalizer three on #{id}" })
- *
- * _produces:_
- *
- * Finalizer three on 537763470
- * Finalizer one on 537763480
- * Finalizer two on 537763480
- *
- */
-
-/*
- * Document-class: ObjectSpace::WeakMap
- *
- * An ObjectSpace::WeakMap object holds references to
- * any objects, but those objects can get garbage collected.
- *
- * This class is mostly used internally by WeakRef, please use
- * +lib/weakref.rb+ for the public interface.
- */
-
/* Document-class: GC::Profiler
*
* The GC profiler provides access to information on GC runs including time,
@@ -4476,7 +3567,7 @@ rb_gcdebug_sentinel(VALUE obj, const char *name)
*
* require 'rdoc/rdoc'
*
- * GC::Profiler.report
+ * puts GC::Profiler.result
*
* GC::Profiler.disable
*
@@ -4484,11 +3575,9 @@ rb_gcdebug_sentinel(VALUE obj, const char *name)
*/
/*
- * The GC module provides an interface to Ruby's mark and
- * sweep garbage collection mechanism.
- *
- * Some of the underlying methods are also available via the ObjectSpace
- * module.
+ * The <code>GC</code> module provides an interface to Ruby's mark and
+ * sweep garbage collection mechanism. Some of the underlying methods
+ * are also available via the ObjectSpace module.
*
* You may obtain information about the operation of the GC through
* GC::Profiler.
@@ -4513,7 +3602,6 @@ Init_GC(void)
rb_mProfiler = rb_define_module_under(rb_mGC, "Profiler");
rb_define_singleton_method(rb_mProfiler, "enabled?", gc_profile_enable_get, 0);
rb_define_singleton_method(rb_mProfiler, "enable", gc_profile_enable, 0);
- rb_define_singleton_method(rb_mProfiler, "raw_data", gc_profile_record_get, 0);
rb_define_singleton_method(rb_mProfiler, "disable", gc_profile_disable, 0);
rb_define_singleton_method(rb_mProfiler, "clear", gc_profile_clear, 0);
rb_define_singleton_method(rb_mProfiler, "result", gc_profile_result, 0);
@@ -4539,14 +3627,6 @@ Init_GC(void)
rb_define_module_function(rb_mObSpace, "count_objects", count_objects, -1);
- {
- VALUE rb_cWeakMap = rb_define_class_under(rb_mObSpace, "WeakMap", rb_cObject);
- rb_define_alloc_func(rb_cWeakMap, wmap_allocate);
- rb_define_method(rb_cWeakMap, "[]=", wmap_aset, 2);
- rb_define_method(rb_cWeakMap, "[]", wmap_aref, 1);
- rb_define_private_method(rb_cWeakMap, "finalize", wmap_finalize, 1);
- }
-
#if CALC_EXACT_MALLOC_SIZE
rb_define_singleton_method(rb_mGC, "malloc_allocated_size", gc_malloc_allocated_size, 0);
rb_define_singleton_method(rb_mGC, "malloc_allocations", gc_malloc_allocations, 0);
diff --git a/gc.h b/gc.h
index 10f634e346..f280a460ed 100644
--- a/gc.h
+++ b/gc.h
@@ -2,10 +2,10 @@
#ifndef RUBY_GC_H
#define RUBY_GC_H 1
-#if defined(__x86_64__) && defined(__GNUC__) && !defined(__native_client__)
-#define SET_MACHINE_STACK_END(p) __asm__ volatile ("movq\t%%rsp, %0" : "=r" (*(p)))
-#elif defined(__i386) && defined(__GNUC__) && !defined(__native_client__)
-#define SET_MACHINE_STACK_END(p) __asm__ volatile ("movl\t%%esp, %0" : "=r" (*(p)))
+#if defined(__x86_64__) && defined(__GNUC__)
+#define SET_MACHINE_STACK_END(p) __asm__("movq\t%%rsp, %0" : "=r" (*(p)))
+#elif defined(__i386) && defined(__GNUC__)
+#define SET_MACHINE_STACK_END(p) __asm__("movl\t%%esp, %0" : "=r" (*(p)))
#else
NOINLINE(void rb_gc_set_stack_end(VALUE **stack_end_p));
#define SET_MACHINE_STACK_END(p) rb_gc_set_stack_end(p)
@@ -87,12 +87,7 @@ int ruby_get_stack_grow_direction(volatile VALUE *addr);
#pragma GCC visibility push(default)
#endif
-/* exports for objspace module */
size_t rb_objspace_data_type_memsize(VALUE obj);
-void rb_objspace_reachable_objects_from(VALUE obj, void (func)(VALUE, void *), void *data);
-int rb_objspace_markable_object_p(VALUE obj);
-int rb_objspace_internal_object_p(VALUE obj);
-
void rb_objspace_each_objects(
int (*callback)(void *start, void *end, size_t stride, void *data),
void *data);
diff --git a/goruby.c b/goruby.c
index 6095fc0894..17be654800 100644
--- a/goruby.c
+++ b/goruby.c
@@ -1,19 +1,8 @@
void Init_golf(void);
-#define ruby_options goruby_options
#define ruby_run_node goruby_run_node
#include "main.c"
-#undef ruby_options
#undef ruby_run_node
-#if defined _WIN32
-#include <io.h>
-#include <fcntl.h>
-#define pipe(p) _pipe(p, 32L, _O_NOINHERIT)
-#elif defined HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-RUBY_EXTERN void *ruby_options(int argc, char **argv);
RUBY_EXTERN int ruby_run_node(void*);
RUBY_EXTERN void ruby_init_ext(const char *name, void (*init)(void));
@@ -24,29 +13,6 @@ init_golf(VALUE arg)
return arg;
}
-void *
-goruby_options(int argc, char **argv)
-{
- static const char cmd[] = "END{require 'irb';IRB.start}";
- int rw[2], infd;
- void *ret;
-
- if ((isatty(0) && isatty(1) && isatty(2)) && (pipe(rw) == 0)) {
- infd = dup(0);
- dup2(rw[0], 0);
- close(rw[0]);
- write(rw[1], cmd, sizeof(cmd) - 1);
- close(rw[1]);
- ret = ruby_options(argc, argv);
- dup2(infd, 0);
- close(infd);
- return ret;
- }
- else {
- return ruby_options(argc, argv);
- }
-}
-
int
goruby_run_node(void *arg)
{
diff --git a/hash.c b/hash.c
index 0cb3379236..fbd82374eb 100644
--- a/hash.c
+++ b/hash.c
@@ -15,16 +15,10 @@
#include "ruby/st.h"
#include "ruby/util.h"
#include "ruby/encoding.h"
-#include "internal.h"
#include <errno.h>
-#include "probes.h"
#ifdef __APPLE__
-# ifdef HAVE_CRT_EXTERNS_H
-# include <crt_externs.h>
-# else
-# include "missing/crt_externs.h"
-# endif
+#include <crt_externs.h>
#endif
static VALUE rb_hash_s_try_convert(VALUE, VALUE);
@@ -50,8 +44,8 @@ rb_any_cmp(VALUE a, VALUE b)
if (FIXNUM_P(a) && FIXNUM_P(b)) {
return a != b;
}
- if (RB_TYPE_P(a, T_STRING) && RBASIC(a)->klass == rb_cString &&
- RB_TYPE_P(b, T_STRING) && RBASIC(b)->klass == rb_cString) {
+ if (TYPE(a) == T_STRING && RBASIC(a)->klass == rb_cString &&
+ TYPE(b) == T_STRING && RBASIC(b)->klass == rb_cString) {
return rb_str_hash_cmp(a, b);
}
if (a == Qundef || b == Qundef) return -1;
@@ -86,14 +80,20 @@ rb_any_hash(VALUE a)
VALUE hval;
st_index_t hnum;
- if (SPECIAL_CONST_P(a)) {
- if (a == Qundef) return 0;
- hnum = rb_hash_end(rb_hash_start((st_index_t)a));
- }
- else if (BUILTIN_TYPE(a) == T_STRING) {
+ switch (TYPE(a)) {
+ case T_FIXNUM:
+ case T_SYMBOL:
+ case T_NIL:
+ case T_FALSE:
+ case T_TRUE:
+ hnum = rb_hash_end(rb_hash_start((unsigned int)a));
+ break;
+
+ case T_STRING:
hnum = rb_str_hash(a);
- }
- else {
+ break;
+
+ default:
hval = rb_hash(a);
hnum = FIX2LONG(hval);
}
@@ -106,8 +106,10 @@ static const struct st_hash_type objhash = {
rb_any_hash,
};
-extern const struct st_hash_type st_hashtype_num;
-#define identhash st_hashtype_num
+static const struct st_hash_type identhash = {
+ st_numcmp,
+ st_numhash,
+};
typedef int st_foreach_func(st_data_t, st_data_t, st_data_t);
@@ -122,6 +124,7 @@ foreach_safe_i(st_data_t key, st_data_t value, struct foreach_safe_arg *arg)
{
int status;
+ if (key == Qundef) return ST_CONTINUE;
status = (*arg->func)(key, value, arg->arg);
if (status == ST_CONTINUE) {
return ST_CHECK;
@@ -137,7 +140,7 @@ st_foreach_safe(st_table *table, int (*func)(ANYARGS), st_data_t a)
arg.tbl = table;
arg.func = (st_foreach_func *)func;
arg.arg = a;
- if (st_foreach_check(table, foreach_safe_i, (st_data_t)&arg, 0)) {
+ if (st_foreach(table, foreach_safe_i, (st_data_t)&arg)) {
rb_raise(rb_eRuntimeError, "hash modified during iteration");
}
}
@@ -151,21 +154,21 @@ struct hash_foreach_arg {
};
static int
-hash_foreach_iter(st_data_t key, st_data_t value, st_data_t argp)
+hash_foreach_iter(st_data_t key, st_data_t value, struct hash_foreach_arg *arg)
{
- struct hash_foreach_arg *arg = (struct hash_foreach_arg *)argp;
int status;
st_table *tbl;
tbl = RHASH(arg->hash)->ntbl;
+ if ((VALUE)key == Qundef) return ST_CONTINUE;
status = (*arg->func)((VALUE)key, (VALUE)value, arg->arg);
if (RHASH(arg->hash)->ntbl != tbl) {
rb_raise(rb_eRuntimeError, "rehash occurred during iteration");
}
switch (status) {
case ST_DELETE:
+ st_delete_safe(tbl, &key, 0, Qundef);
FL_SET(arg->hash, HASH_DELETED);
- return ST_DELETE;
case ST_CONTINUE:
break;
case ST_STOP:
@@ -177,9 +180,11 @@ hash_foreach_iter(st_data_t key, st_data_t value, st_data_t argp)
static VALUE
hash_foreach_ensure(VALUE hash)
{
- if (--RHASH_ITER_LEV(hash) == 0) {
+ RHASH(hash)->iter_lev--;
+
+ if (RHASH(hash)->iter_lev == 0) {
if (FL_TEST(hash, HASH_DELETED)) {
- st_cleanup_safe(RHASH(hash)->ntbl, (st_data_t)Qundef);
+ st_cleanup_safe(RHASH(hash)->ntbl, Qundef);
FL_UNSET(hash, HASH_DELETED);
}
}
@@ -187,10 +192,9 @@ hash_foreach_ensure(VALUE hash)
}
static VALUE
-hash_foreach_call(VALUE arg)
+hash_foreach_call(struct hash_foreach_arg *arg)
{
- VALUE hash = ((struct hash_foreach_arg *)arg)->hash;
- if (st_foreach_check(RHASH(hash)->ntbl, hash_foreach_iter, (st_data_t)arg, (st_data_t)Qundef)) {
+ if (st_foreach(RHASH(arg->hash)->ntbl, hash_foreach_iter, (st_data_t)arg)) {
rb_raise(rb_eRuntimeError, "hash modified during iteration");
}
return Qnil;
@@ -203,7 +207,7 @@ rb_hash_foreach(VALUE hash, int (*func)(ANYARGS), VALUE farg)
if (!RHASH(hash)->ntbl)
return;
- RHASH_ITER_LEV(hash)++;
+ RHASH(hash)->iter_lev++;
arg.hash = hash;
arg.func = (rb_foreach_func *)func;
arg.arg = farg;
@@ -213,23 +217,14 @@ rb_hash_foreach(VALUE hash, int (*func)(ANYARGS), VALUE farg)
static VALUE
hash_alloc(VALUE klass)
{
- NEWOBJ_OF(hash, struct RHash, klass, T_HASH);
+ NEWOBJ(hash, struct RHash);
+ OBJSETUP(hash, klass, T_HASH);
RHASH_IFNONE(hash) = Qnil;
return (VALUE)hash;
}
-static VALUE
-empty_hash_alloc(VALUE klass)
-{
- if (RUBY_DTRACE_HASH_CREATE_ENABLED()) {
- RUBY_DTRACE_HASH_CREATE(0, rb_sourcefile(), rb_sourceline());
- }
-
- return hash_alloc(klass);
-}
-
VALUE
rb_hash_new(void)
{
@@ -239,11 +234,8 @@ rb_hash_new(void)
VALUE
rb_hash_dup(VALUE hash)
{
- NEWOBJ_OF(ret, struct RHash,
- rb_obj_class(hash),
- (RBASIC(hash)->flags)&(T_MASK|FL_EXIVAR|FL_TAINT|FL_UNTRUSTED));
- if (FL_TEST((hash), FL_EXIVAR))
- rb_copy_generic_ivar((VALUE)(ret),(VALUE)(hash));
+ NEWOBJ(ret, struct RHash);
+ DUPSETUP(ret, hash);
if (!RHASH_EMPTY_P(hash))
ret->ntbl = st_copy(RHASH(hash)->ntbl);
@@ -278,30 +270,14 @@ rb_hash_modify(VALUE hash)
rb_hash_tbl(hash);
}
-NORETURN(static void no_new_key(void));
static void
-no_new_key(void)
+hash_update(VALUE hash, VALUE key)
{
- rb_raise(rb_eRuntimeError, "can't add a new key into hash during iteration");
-}
-
-#define NOINSERT_UPDATE_CALLBACK(func) \
-int \
-func##_noinsert(st_data_t *key, st_data_t *val, st_data_t arg, int existing) \
-{ \
- if (!existing) no_new_key(); \
- return func(key, val, arg, existing); \
+ if (RHASH(hash)->iter_lev > 0 && !st_lookup(RHASH(hash)->ntbl, key, 0)) {
+ rb_raise(rb_eRuntimeError, "can't add a new key into hash during iteration");
+ }
}
-#define UPDATE_CALLBACK(iter_lev, func) ((iter_lev) > 0 ? func##_noinsert : func)
-
-#define RHASH_UPDATE_ITER(hash, iter_lev, key, func, arg) \
- st_update(RHASH(hash)->ntbl, (st_data_t)(key), \
- UPDATE_CALLBACK((iter_lev), func), \
- (st_data_t)(arg))
-#define RHASH_UPDATE(hash, key, func, arg) \
- RHASH_UPDATE_ITER(hash, RHASH_ITER_LEV(hash), key, func, arg)
-
static void
default_proc_arity_check(VALUE proc)
{
@@ -355,7 +331,9 @@ rb_hash_initialize(int argc, VALUE *argv, VALUE hash)
rb_hash_modify(hash);
if (rb_block_given_p()) {
- rb_check_arity(argc, 0, 0);
+ if (argc > 0) {
+ rb_raise(rb_eArgError, "wrong number of arguments");
+ }
ifnone = rb_block_proc();
default_proc_arity_check(ifnone);
RHASH_IFNONE(hash) = ifnone;
@@ -408,27 +386,11 @@ rb_hash_s_create(int argc, VALUE *argv, VALUE klass)
hash = hash_alloc(klass);
for (i = 0; i < RARRAY_LEN(tmp); ++i) {
- VALUE e = RARRAY_PTR(tmp)[i];
- VALUE v = rb_check_array_type(e);
+ VALUE v = rb_check_array_type(RARRAY_PTR(tmp)[i]);
VALUE key, val = Qnil;
- if (NIL_P(v)) {
-#if 0 /* refix in the next release */
- rb_raise(rb_eArgError, "wrong element type %s at %ld (expected array)",
- rb_builtin_class_name(e), i);
-
-#else
- rb_warn("wrong element type %s at %ld (expected array)",
- rb_builtin_class_name(e), i);
- rb_warn("ignoring wrong elements is deprecated, remove them explicitly");
- rb_warn("this causes ArgumentError in the next release");
- continue;
-#endif
- }
+ if (NIL_P(v)) continue;
switch (RARRAY_LEN(v)) {
- default:
- rb_raise(rb_eArgError, "invalid number of elements (%ld for 1..2)",
- RARRAY_LEN(v));
case 2:
val = RARRAY_PTR(v)[1];
case 1:
@@ -480,17 +442,12 @@ rb_hash_s_try_convert(VALUE dummy, VALUE hash)
return rb_check_hash_type(hash);
}
-struct rehash_arg {
- VALUE hash;
- st_table *tbl;
-};
-
static int
rb_hash_rehash_i(VALUE key, VALUE value, VALUE arg)
{
st_table *tbl = (st_table *)arg;
- st_insert(tbl, (st_data_t)key, (st_data_t)value);
+ if (key != Qundef) st_insert(tbl, key, value);
return ST_CONTINUE;
}
@@ -517,41 +474,22 @@ rb_hash_rehash_i(VALUE key, VALUE value, VALUE arg)
static VALUE
rb_hash_rehash(VALUE hash)
{
- VALUE tmp;
st_table *tbl;
- if (RHASH_ITER_LEV(hash) > 0) {
+ if (RHASH(hash)->iter_lev > 0) {
rb_raise(rb_eRuntimeError, "rehash during iteration");
}
rb_hash_modify_check(hash);
if (!RHASH(hash)->ntbl)
return hash;
- tmp = hash_alloc(0);
tbl = st_init_table_with_size(RHASH(hash)->ntbl->type, RHASH(hash)->ntbl->num_entries);
- RHASH(tmp)->ntbl = tbl;
-
rb_hash_foreach(hash, rb_hash_rehash_i, (VALUE)tbl);
st_free_table(RHASH(hash)->ntbl);
RHASH(hash)->ntbl = tbl;
- RHASH(tmp)->ntbl = 0;
return hash;
}
-static VALUE
-hash_default_value(VALUE hash, VALUE key)
-{
- if (rb_method_basic_definition_p(CLASS_OF(hash), id_default)) {
- VALUE ifnone = RHASH_IFNONE(hash);
- if (!FL_TEST(hash, HASH_PROC_DEFAULT)) return ifnone;
- if (key == Qundef) return Qnil;
- return rb_funcall(ifnone, id_yield, 2, hash, key);
- }
- else {
- return rb_funcall(hash, id_default, 1, key);
- }
-}
-
/*
* call-seq:
* hsh[key] -> value
@@ -572,7 +510,13 @@ rb_hash_aref(VALUE hash, VALUE key)
st_data_t val;
if (!RHASH(hash)->ntbl || !st_lookup(RHASH(hash)->ntbl, key, &val)) {
- return hash_default_value(hash, key);
+ if (!FL_TEST(hash, HASH_PROC_DEFAULT) &&
+ rb_method_basic_definition_p(CLASS_OF(hash), id_default)) {
+ return RHASH_IFNONE(hash);
+ }
+ else {
+ return rb_funcall(hash, id_default, 1, key);
+ }
}
return (VALUE)val;
}
@@ -715,7 +659,7 @@ rb_hash_default(int argc, VALUE *argv, VALUE hash)
static VALUE
rb_hash_set_default(VALUE hash, VALUE ifnone)
{
- rb_hash_modify_check(hash);
+ rb_hash_modify(hash);
RHASH_IFNONE(hash) = ifnone;
FL_UNSET(hash, HASH_PROC_DEFAULT);
return ifnone;
@@ -747,9 +691,9 @@ rb_hash_default_proc(VALUE hash)
/*
* call-seq:
- * hsh.default_proc = proc_obj or nil
+ * hsh.default_proc = proc_obj -> proc_obj
*
- * Sets the default proc to be executed on each failed key lookup.
+ * Sets the default proc to be executed on each key lookup.
*
* h.default_proc = proc do |hash, key|
* hash[key] = key + key
@@ -763,12 +707,7 @@ rb_hash_set_default_proc(VALUE hash, VALUE proc)
{
VALUE b;
- rb_hash_modify_check(hash);
- if (NIL_P(proc)) {
- FL_UNSET(hash, HASH_PROC_DEFAULT);
- RHASH_IFNONE(hash) = proc;
- return proc;
- }
+ rb_hash_modify(hash);
b = rb_check_convert_type(proc, T_DATA, "Proc", "to_proc");
if (NIL_P(b) || !rb_obj_is_proc(b)) {
rb_raise(rb_eTypeError,
@@ -836,8 +775,8 @@ rb_hash_delete_key(VALUE hash, VALUE key)
if (!RHASH(hash)->ntbl)
return Qundef;
- if (RHASH_ITER_LEV(hash) > 0) {
- if (st_delete_safe(RHASH(hash)->ntbl, &ktmp, &val, (st_data_t)Qundef)) {
+ if (RHASH(hash)->iter_lev > 0) {
+ if (st_delete_safe(RHASH(hash)->ntbl, &ktmp, &val, Qundef)) {
FL_SET(hash, HASH_DELETED);
return (VALUE)val;
}
@@ -852,8 +791,8 @@ rb_hash_delete_key(VALUE hash, VALUE key)
* hsh.delete(key) -> value
* hsh.delete(key) {| key | block } -> value
*
- * Deletes the key-value pair and returns the value from <i>hsh</i> whose
- * key is equal to <i>key</i>. If the key is not found, returns the
+ * Deletes and returns a key-value pair from <i>hsh</i> whose key is
+ * equal to <i>key</i>. If the key is not found, returns the
* <em>default value</em>. If the optional code block is given and the
* key is not found, pass in the key and return the result of
* <i>block</i>.
@@ -870,7 +809,7 @@ rb_hash_delete(VALUE hash, VALUE key)
{
VALUE val;
- rb_hash_modify_check(hash);
+ rb_hash_modify(hash);
val = rb_hash_delete_key(hash, key);
if (val != Qundef) return val;
if (rb_block_given_p()) {
@@ -889,6 +828,7 @@ shift_i(VALUE key, VALUE value, VALUE arg)
{
struct shift_var *var = (struct shift_var *)arg;
+ if (key == Qundef) return ST_CONTINUE;
if (var->key != Qundef) return ST_STOP;
var->key = key;
var->val = value;
@@ -900,6 +840,7 @@ shift_i_safe(VALUE key, VALUE value, VALUE arg)
{
struct shift_var *var = (struct shift_var *)arg;
+ if (key == Qundef) return ST_CONTINUE;
var->key = key;
var->val = value;
return ST_STOP;
@@ -923,33 +864,35 @@ rb_hash_shift(VALUE hash)
{
struct shift_var var;
- rb_hash_modify_check(hash);
- if (RHASH(hash)->ntbl) {
- var.key = Qundef;
- rb_hash_foreach(hash, RHASH_ITER_LEV(hash) > 0 ? shift_i_safe : shift_i,
- (VALUE)&var);
-
- if (var.key != Qundef) {
- if (RHASH_ITER_LEV(hash) > 0) {
- rb_hash_delete_key(hash, var.key);
- }
- return rb_assoc_new(var.key, var.val);
+ rb_hash_modify(hash);
+ var.key = Qundef;
+ rb_hash_foreach(hash, RHASH(hash)->iter_lev > 0 ? shift_i_safe : shift_i,
+ (VALUE)&var);
+
+ if (var.key != Qundef) {
+ if (RHASH(hash)->iter_lev > 0) {
+ rb_hash_delete_key(hash, var.key);
}
+ return rb_assoc_new(var.key, var.val);
+ }
+ else if (FL_TEST(hash, HASH_PROC_DEFAULT)) {
+ return rb_funcall(RHASH_IFNONE(hash), id_yield, 2, hash, Qnil);
+ }
+ else {
+ return RHASH_IFNONE(hash);
}
- return hash_default_value(hash, Qnil);
}
static int
delete_if_i(VALUE key, VALUE value, VALUE hash)
{
+ if (key == Qundef) return ST_CONTINUE;
if (RTEST(rb_yield_values(2, key, value))) {
rb_hash_delete_key(hash, key);
}
return ST_CONTINUE;
}
-static VALUE rb_hash_size(VALUE hash);
-
/*
* call-seq:
* hsh.delete_if {| key, value | block } -> hsh
@@ -968,10 +911,9 @@ static VALUE rb_hash_size(VALUE hash);
VALUE
rb_hash_delete_if(VALUE hash)
{
- RETURN_SIZED_ENUMERATOR(hash, 0, 0, rb_hash_size);
- rb_hash_modify_check(hash);
- if (RHASH(hash)->ntbl)
- rb_hash_foreach(hash, delete_if_i, hash);
+ RETURN_ENUMERATOR(hash, 0, 0);
+ rb_hash_modify(hash);
+ rb_hash_foreach(hash, delete_if_i, hash);
return hash;
}
@@ -989,7 +931,7 @@ rb_hash_reject_bang(VALUE hash)
{
st_index_t n;
- RETURN_SIZED_ENUMERATOR(hash, 0, 0, rb_hash_size);
+ RETURN_ENUMERATOR(hash, 0, 0);
rb_hash_modify(hash);
if (!RHASH(hash)->ntbl)
return Qnil;
@@ -1042,6 +984,7 @@ rb_hash_values_at(int argc, VALUE *argv, VALUE hash)
static int
select_i(VALUE key, VALUE value, VALUE result)
{
+ if (key == Qundef) return ST_CONTINUE;
if (RTEST(rb_yield_values(2, key, value)))
rb_hash_aset(result, key, value);
return ST_CONTINUE;
@@ -1066,7 +1009,7 @@ rb_hash_select(VALUE hash)
{
VALUE result;
- RETURN_SIZED_ENUMERATOR(hash, 0, 0, rb_hash_size);
+ RETURN_ENUMERATOR(hash, 0, 0);
result = rb_hash_new();
rb_hash_foreach(hash, select_i, result);
return result;
@@ -1075,6 +1018,7 @@ rb_hash_select(VALUE hash)
static int
keep_if_i(VALUE key, VALUE value, VALUE hash)
{
+ if (key == Qundef) return ST_CONTINUE;
if (!RTEST(rb_yield_values(2, key, value))) {
return ST_DELETE;
}
@@ -1095,8 +1039,8 @@ rb_hash_select_bang(VALUE hash)
{
st_index_t n;
- RETURN_SIZED_ENUMERATOR(hash, 0, 0, rb_hash_size);
- rb_hash_modify_check(hash);
+ RETURN_ENUMERATOR(hash, 0, 0);
+ rb_hash_modify(hash);
if (!RHASH(hash)->ntbl)
return Qnil;
n = RHASH(hash)->ntbl->num_entries;
@@ -1120,10 +1064,9 @@ rb_hash_select_bang(VALUE hash)
VALUE
rb_hash_keep_if(VALUE hash)
{
- RETURN_SIZED_ENUMERATOR(hash, 0, 0, rb_hash_size);
- rb_hash_modify_check(hash);
- if (RHASH(hash)->ntbl)
- rb_hash_foreach(hash, keep_if_i, hash);
+ RETURN_ENUMERATOR(hash, 0, 0);
+ rb_hash_modify(hash);
+ rb_hash_foreach(hash, keep_if_i, hash);
return hash;
}
@@ -1144,14 +1087,14 @@ clear_i(VALUE key, VALUE value, VALUE dummy)
*
*/
-VALUE
+static VALUE
rb_hash_clear(VALUE hash)
{
rb_hash_modify_check(hash);
if (!RHASH(hash)->ntbl)
return hash;
if (RHASH(hash)->ntbl->num_entries > 0) {
- if (RHASH_ITER_LEV(hash) > 0)
+ if (RHASH(hash)->iter_lev > 0)
rb_hash_foreach(hash, clear_i, 0);
else
st_clear(RHASH(hash)->ntbl);
@@ -1160,64 +1103,40 @@ rb_hash_clear(VALUE hash)
return hash;
}
-static int
-hash_aset(st_data_t *key, st_data_t *val, st_data_t arg, int existing)
+static st_data_t
+copy_str_key(st_data_t str)
{
- *val = arg;
- return ST_CONTINUE;
+ return (st_data_t)rb_str_new4((VALUE)str);
}
-static int
-hash_aset_str(st_data_t *key, st_data_t *val, st_data_t arg, int existing)
-{
- *key = (st_data_t)rb_str_new_frozen((VALUE)*key);
- return hash_aset(key, val, arg, existing);
-}
-
-static NOINSERT_UPDATE_CALLBACK(hash_aset)
-static NOINSERT_UPDATE_CALLBACK(hash_aset_str)
-
/*
* call-seq:
* hsh[key] = value -> value
* hsh.store(key, value) -> value
*
- * == Element Assignment
- *
- * Associates the value given by +value+ with the key given by +key+.
+ * Element Assignment---Associates the value given by
+ * <i>value</i> with the key given by <i>key</i>.
+ * <i>key</i> should not have its value changed while it is in
+ * use as a key (a <code>String</code> passed as a key will be
+ * duplicated and frozen).
*
* h = { "a" => 100, "b" => 200 }
* h["a"] = 9
* h["c"] = 4
* h #=> {"a"=>9, "b"=>200, "c"=>4}
*
- * +key+ should not have its value changed while it is in use as a key (an
- * <tt>unfrozen String</tt> passed as a key will be duplicated and frozen).
- *
- * a = "a"
- * b = "b".freeze
- * h = { a => 100, b => 200 }
- * h.key(100).equal? a #=> false
- * h.key(200).equal? b #=> true
- *
*/
VALUE
rb_hash_aset(VALUE hash, VALUE key, VALUE val)
{
- int iter_lev = RHASH_ITER_LEV(hash);
- st_table *tbl = RHASH(hash)->ntbl;
-
rb_hash_modify(hash);
- if (!tbl) {
- if (iter_lev > 0) no_new_key();
- tbl = RHASH_TBL(hash);
- }
- if (tbl->type == &identhash || rb_obj_class(key) != rb_cString) {
- RHASH_UPDATE_ITER(hash, iter_lev, key, hash_aset, val);
+ hash_update(hash, key);
+ if (RHASH(hash)->ntbl->type == &identhash || rb_obj_class(key) != rb_cString) {
+ st_insert(RHASH(hash)->ntbl, key, val);
}
else {
- RHASH_UPDATE_ITER(hash, iter_lev, key, hash_aset_str, val);
+ st_insert2(RHASH(hash)->ntbl, key, val, copy_str_key);
}
return val;
}
@@ -1225,43 +1144,11 @@ rb_hash_aset(VALUE hash, VALUE key, VALUE val)
static int
replace_i(VALUE key, VALUE val, VALUE hash)
{
- rb_hash_aset(hash, key, val);
-
- return ST_CONTINUE;
-}
-
-static VALUE
-rb_hash_initialize_copy(VALUE hash, VALUE hash2)
-{
- st_table *ntbl;
-
- rb_hash_modify_check(hash);
- hash2 = to_hash(hash2);
-
- Check_Type(hash2, T_HASH);
-
- if (hash == hash2) return hash;
-
- ntbl = RHASH(hash)->ntbl;
- if (RHASH(hash2)->ntbl) {
- if (ntbl) st_free_table(ntbl);
- RHASH(hash)->ntbl = st_copy(RHASH(hash2)->ntbl);
- if (RHASH(hash)->ntbl->num_entries)
- rb_hash_rehash(hash);
- }
- else if (ntbl) {
- st_clear(ntbl);
+ if (key != Qundef) {
+ rb_hash_aset(hash, key, val);
}
- if (FL_TEST(hash2, HASH_PROC_DEFAULT)) {
- FL_SET(hash, HASH_PROC_DEFAULT);
- }
- else {
- FL_UNSET(hash, HASH_PROC_DEFAULT);
- }
- RHASH_IFNONE(hash) = RHASH_IFNONE(hash2);
-
- return hash;
+ return ST_CONTINUE;
}
/*
@@ -1340,6 +1227,7 @@ rb_hash_empty_p(VALUE hash)
static int
each_value_i(VALUE key, VALUE value)
{
+ if (key == Qundef) return ST_CONTINUE;
rb_yield(value);
return ST_CONTINUE;
}
@@ -1366,7 +1254,7 @@ each_value_i(VALUE key, VALUE value)
static VALUE
rb_hash_each_value(VALUE hash)
{
- RETURN_SIZED_ENUMERATOR(hash, 0, 0, rb_hash_size);
+ RETURN_ENUMERATOR(hash, 0, 0);
rb_hash_foreach(hash, each_value_i, 0);
return hash;
}
@@ -1374,6 +1262,7 @@ rb_hash_each_value(VALUE hash)
static int
each_key_i(VALUE key, VALUE value)
{
+ if (key == Qundef) return ST_CONTINUE;
rb_yield(key);
return ST_CONTINUE;
}
@@ -1399,7 +1288,7 @@ each_key_i(VALUE key, VALUE value)
static VALUE
rb_hash_each_key(VALUE hash)
{
- RETURN_SIZED_ENUMERATOR(hash, 0, 0, rb_hash_size);
+ RETURN_ENUMERATOR(hash, 0, 0);
rb_hash_foreach(hash, each_key_i, 0);
return hash;
}
@@ -1407,6 +1296,7 @@ rb_hash_each_key(VALUE hash)
static int
each_pair_i(VALUE key, VALUE value)
{
+ if (key == Qundef) return ST_CONTINUE;
rb_yield(rb_assoc_new(key, value));
return ST_CONTINUE;
}
@@ -1436,7 +1326,7 @@ each_pair_i(VALUE key, VALUE value)
static VALUE
rb_hash_each_pair(VALUE hash)
{
- RETURN_SIZED_ENUMERATOR(hash, 0, 0, rb_hash_size);
+ RETURN_ENUMERATOR(hash, 0, 0);
rb_hash_foreach(hash, each_pair_i, 0);
return hash;
}
@@ -1444,6 +1334,7 @@ rb_hash_each_pair(VALUE hash)
static int
to_a_i(VALUE key, VALUE value, VALUE ary)
{
+ if (key == Qundef) return ST_CONTINUE;
rb_ary_push(ary, rb_assoc_new(key, value));
return ST_CONTINUE;
}
@@ -1476,16 +1367,17 @@ inspect_i(VALUE key, VALUE value, VALUE str)
{
VALUE str2;
+ if (key == Qundef) return ST_CONTINUE;
str2 = rb_inspect(key);
if (RSTRING_LEN(str) > 1) {
- rb_str_buf_cat_ascii(str, ", ");
+ rb_str_cat2(str, ", ");
}
else {
rb_enc_copy(str, str2);
}
rb_str_buf_append(str, str2);
OBJ_INFECT(str, str2);
- rb_str_buf_cat_ascii(str, "=>");
+ rb_str_buf_cat2(str, "=>");
str2 = rb_inspect(value);
rb_str_buf_append(str, str2);
OBJ_INFECT(str, str2);
@@ -1539,33 +1431,10 @@ rb_hash_to_hash(VALUE hash)
return hash;
}
-/*
- * call-seq:
- * hsh.to_h -> hsh or new_hash
- *
- * Returns +self+. If called on a subclass of Hash, converts
- * the receiver to a Hash object.
- */
-
-static VALUE
-rb_hash_to_h(VALUE hash)
-{
- if (rb_obj_class(hash) != rb_cHash) {
- VALUE ret = rb_hash_new();
- if (!RHASH_EMPTY_P(hash))
- RHASH(ret)->ntbl = st_copy(RHASH(hash)->ntbl);
- if (FL_TEST(hash, HASH_PROC_DEFAULT)) {
- FL_SET(ret, HASH_PROC_DEFAULT);
- }
- RHASH_IFNONE(ret) = RHASH_IFNONE(hash);
- return ret;
- }
- return hash;
-}
-
static int
keys_i(VALUE key, VALUE value, VALUE ary)
{
+ if (key == Qundef) return ST_CONTINUE;
rb_ary_push(ary, key);
return ST_CONTINUE;
}
@@ -1596,6 +1465,7 @@ rb_hash_keys(VALUE hash)
static int
values_i(VALUE key, VALUE value, VALUE ary)
{
+ if (key == Qundef) return ST_CONTINUE;
rb_ary_push(ary, value);
return ST_CONTINUE;
}
@@ -1654,6 +1524,7 @@ rb_hash_search_value(VALUE key, VALUE value, VALUE arg)
{
VALUE *data = (VALUE *)arg;
+ if (key == Qundef) return ST_CONTINUE;
if (rb_equal(value, data[1])) {
data[0] = Qtrue;
return ST_STOP;
@@ -1697,6 +1568,7 @@ eql_i(VALUE key, VALUE val1, VALUE arg)
struct equal_data *data = (struct equal_data *)arg;
st_data_t val2;
+ if (key == Qundef) return ST_CONTINUE;
if (!st_lookup(data->tbl, key, &val2)) {
data->result = Qfalse;
return ST_STOP;
@@ -1727,7 +1599,7 @@ hash_equal(VALUE hash1, VALUE hash2, int eql)
struct equal_data data;
if (hash1 == hash2) return Qtrue;
- if (!RB_TYPE_P(hash2, T_HASH)) {
+ if (TYPE(hash2) != T_HASH) {
if (!rb_respond_to(hash2, rb_intern("to_hash"))) {
return Qfalse;
}
@@ -1798,6 +1670,7 @@ hash_i(VALUE key, VALUE val, VALUE arg)
st_index_t *hval = (st_index_t *)arg;
st_index_t hdata[2];
+ if (key == Qundef) return ST_CONTINUE;
hdata[0] = rb_hash(key);
hdata[1] = rb_hash(val);
*hval ^= st_hash(hdata, sizeof(hdata), 0);
@@ -1838,6 +1711,7 @@ rb_hash_hash(VALUE hash)
static int
rb_hash_invert_i(VALUE key, VALUE value, VALUE hash)
{
+ if (key == Qundef) return ST_CONTINUE;
rb_hash_aset(hash, value, key);
return ST_CONTINUE;
}
@@ -1864,38 +1738,23 @@ rb_hash_invert(VALUE hash)
}
static int
-rb_hash_update_callback(st_data_t *key, st_data_t *value, st_data_t arg, int existing)
-{
- *value = arg;
- return ST_CONTINUE;
-}
-
-static NOINSERT_UPDATE_CALLBACK(rb_hash_update_callback)
-
-static int
rb_hash_update_i(VALUE key, VALUE value, VALUE hash)
{
- RHASH_UPDATE(hash, key, rb_hash_update_callback, value);
+ if (key == Qundef) return ST_CONTINUE;
+ hash_update(hash, key);
+ st_insert(RHASH(hash)->ntbl, key, value);
return ST_CONTINUE;
}
static int
-rb_hash_update_block_callback(st_data_t *key, st_data_t *value, st_data_t arg, int existing)
-{
- VALUE newvalue = (VALUE)arg;
- if (existing) {
- newvalue = rb_yield_values(3, (VALUE)*key, (VALUE)*value, newvalue);
- }
- *value = (st_data_t)newvalue;
- return ST_CONTINUE;
-}
-
-static NOINSERT_UPDATE_CALLBACK(rb_hash_update_block_callback)
-
-static int
rb_hash_update_block_i(VALUE key, VALUE value, VALUE hash)
{
- RHASH_UPDATE(hash, key, rb_hash_update_block_callback, value);
+ if (key == Qundef) return ST_CONTINUE;
+ if (rb_hash_has_key(hash, key)) {
+ value = rb_yield_values(3, key, rb_hash_aref(hash, key), value);
+ }
+ hash_update(hash, key);
+ st_insert(RHASH(hash)->ntbl, key, value);
return ST_CONTINUE;
}
@@ -1906,11 +1765,11 @@ rb_hash_update_block_i(VALUE key, VALUE value, VALUE hash)
* hsh.merge!(other_hash){|key, oldval, newval| block} -> hsh
* hsh.update(other_hash){|key, oldval, newval| block} -> hsh
*
- * Adds the contents of _other_hash_ to _hsh_. If no block is specified,
- * entries with duplicate keys are overwritten with the values from
- * _other_hash_, otherwise the value of each duplicate key is determined by
- * calling the block with the key, its value in _hsh_ and its value in
- * _other_hash_.
+ * Adds the contents of <i>other_hash</i> to <i>hsh</i>. If no
+ * block is specified, entries with duplicate keys are overwritten
+ * with the values from <i>other_hash</i>, otherwise the value
+ * of each duplicate key is determined by calling the block with
+ * the key, its value in <i>hsh</i> and its value in <i>other_hash</i>.
*
* h1 = { "a" => 100, "b" => 200 }
* h2 = { "b" => 254, "c" => 300 }
@@ -1938,32 +1797,21 @@ rb_hash_update(VALUE hash1, VALUE hash2)
struct update_arg {
VALUE hash;
- VALUE value;
rb_hash_update_func *func;
};
static int
-rb_hash_update_func_callback(st_data_t *key, st_data_t *value, st_data_t arg0, int existing)
-{
- struct update_arg *arg = (struct update_arg *)arg0;
- VALUE newvalue = arg->value;
- if (existing) {
- newvalue = (*arg->func)((VALUE)*key, (VALUE)*value, newvalue);
- }
- *value = (st_data_t)newvalue;
- return ST_CONTINUE;
-}
-
-static NOINSERT_UPDATE_CALLBACK(rb_hash_update_func_callback)
-
-static int
rb_hash_update_func_i(VALUE key, VALUE value, VALUE arg0)
{
struct update_arg *arg = (struct update_arg *)arg0;
VALUE hash = arg->hash;
- arg->value = value;
- RHASH_UPDATE(hash, key, rb_hash_update_func_callback, arg);
+ if (key == Qundef) return ST_CONTINUE;
+ if (rb_hash_has_key(hash, key)) {
+ value = (*arg->func)(key, rb_hash_aref(hash, key), value);
+ }
+ hash_update(hash, key);
+ st_insert(RHASH(hash)->ntbl, key, value);
return ST_CONTINUE;
}
@@ -2015,6 +1863,7 @@ assoc_i(VALUE key, VALUE val, VALUE arg)
{
VALUE *args = (VALUE *)arg;
+ if (key == Qundef) return ST_CONTINUE;
if (RTEST(rb_equal(args[0], key))) {
args[1] = rb_assoc_new(key, val);
return ST_STOP;
@@ -2052,6 +1901,7 @@ rassoc_i(VALUE key, VALUE val, VALUE arg)
{
VALUE *args = (VALUE *)arg;
+ if (key == Qundef) return ST_CONTINUE;
if (RTEST(rb_equal(args[0], val))) {
args[1] = rb_assoc_new(key, val);
return ST_STOP;
@@ -2168,8 +2018,6 @@ static char **origenviron;
static char **my_environ;
#undef environ
#define environ my_environ
-#undef getenv
-#define getenv(n) rb_w32_ugetenv(n)
#elif defined(__APPLE__)
#undef environ
#define environ (*_NSGetEnviron())
@@ -2191,11 +2039,7 @@ extern char **environ;
static VALUE
env_str_new(const char *ptr, long len)
{
-#ifdef _WIN32
- VALUE str = rb_str_conv_enc(rb_str_new(ptr, len), rb_utf8_encoding(), rb_locale_encoding());
-#else
VALUE str = rb_locale_str_new(ptr, len);
-#endif
rb_obj_freeze(str);
return str;
@@ -2274,11 +2118,7 @@ rb_f_getenv(VALUE obj, VALUE name)
env = getenv(nam);
if (env) {
if (ENVMATCH(nam, PATH_ENV) && !env_path_tainted(env)) {
-#ifdef _WIN32
- VALUE str = rb_str_conv_enc(rb_str_new(env, strlen(env)), rb_utf8_encoding(), rb_filesystem_encoding());
-#else
VALUE str = rb_filesystem_str_new_cstr(env);
-#endif
rb_obj_freeze(str);
return str;
@@ -2329,11 +2169,7 @@ env_fetch(int argc, VALUE *argv)
return if_none;
}
if (ENVMATCH(nam, PATH_ENV) && !env_path_tainted(env))
-#ifdef _WIN32
- return rb_str_conv_enc(rb_str_new(env, strlen(env)), rb_utf8_encoding(), rb_filesystem_encoding());
-#else
return rb_filesystem_str_new_cstr(env);
-#endif
return env_str_new2(env);
}
@@ -2362,7 +2198,7 @@ rb_env_path_tainted(void)
}
#if defined(_WIN32) || (defined(HAVE_SETENV) && defined(HAVE_UNSETENV))
-#elif defined __sun
+#elif defined __sun__
static int
in_origenv(const char *str)
{
@@ -2416,12 +2252,9 @@ ruby_setenv(const char *name, const char *value)
rb_sys_fail("ruby_setenv");
}
if (value) {
- char* p = GetEnvironmentStringsA();
- size_t n;
+ const char* p = GetEnvironmentStringsA();
if (!p) goto fail; /* never happen */
- n = strlen(name) + 2 + strlen(value) + getenvsize(p);
- FreeEnvironmentStringsA(p);
- if (n >= getenvblocksize()) {
+ if (strlen(name) + 2 + strlen(value) + getenvsize(p) >= getenvblocksize()) {
goto fail; /* 2 for '=' & '\0' */
}
buf = rb_sprintf("%s=%s", name, value);
@@ -2453,7 +2286,7 @@ ruby_setenv(const char *name, const char *value)
rb_sys_fail("unsetenv");
#endif
}
-#elif defined __sun
+#elif defined __sun__
size_t len;
char **env_ptr, *str;
if (strchr(name, '=')) {
@@ -2547,8 +2380,8 @@ env_aset(VALUE obj, VALUE nm, VALUE val)
env_delete(obj, nm);
return Qnil;
}
- SafeStringValue(nm);
- SafeStringValue(val);
+ StringValue(nm);
+ StringValue(val);
name = RSTRING_PTR(nm);
value = RSTRING_PTR(val);
if (memchr(name, '\0', RSTRING_LEN(nm)))
@@ -2596,24 +2429,6 @@ env_keys(void)
return ary;
}
-static VALUE
-rb_env_size(VALUE ehash)
-{
- char **env;
- long cnt = 0;
-
- rb_secure(4);
-
- env = GET_ENVIRON(environ);
- for (; *env ; ++env) {
- if (strchr(*env, '=')) {
- cnt++;
- }
- }
- FREE_ENVIRON(environ);
- return LONG2FIX(cnt);
-}
-
/*
* call-seq:
* ENV.each_key { |name| } -> Hash
@@ -2629,7 +2444,7 @@ env_each_key(VALUE ehash)
VALUE keys;
long i;
- RETURN_SIZED_ENUMERATOR(ehash, 0, 0, rb_env_size);
+ RETURN_ENUMERATOR(ehash, 0, 0);
keys = env_keys(); /* rb_secure(4); */
for (i=0; i<RARRAY_LEN(keys); i++) {
rb_yield(RARRAY_PTR(keys)[i]);
@@ -2678,7 +2493,7 @@ env_each_value(VALUE ehash)
VALUE values;
long i;
- RETURN_SIZED_ENUMERATOR(ehash, 0, 0, rb_env_size);
+ RETURN_ENUMERATOR(ehash, 0, 0);
values = env_values(); /* rb_secure(4); */
for (i=0; i<RARRAY_LEN(values); i++) {
rb_yield(RARRAY_PTR(values)[i]);
@@ -2704,7 +2519,7 @@ env_each_pair(VALUE ehash)
VALUE ary;
long i;
- RETURN_SIZED_ENUMERATOR(ehash, 0, 0, rb_env_size);
+ RETURN_ENUMERATOR(ehash, 0, 0);
rb_secure(4);
ary = rb_ary_new();
@@ -2727,7 +2542,7 @@ env_each_pair(VALUE ehash)
/*
* call-seq:
- * ENV.reject! { |name, value| } -> ENV or nil
+ * ENV.reject! { |name, value| } -> Hash or nil
* ENV.reject! -> Enumerator
*
* Equivalent to ENV#delete_if but returns +nil+ if no changes were made.
@@ -2741,9 +2556,8 @@ env_reject_bang(VALUE ehash)
long i;
int del = 0;
- RETURN_SIZED_ENUMERATOR(ehash, 0, 0, rb_env_size);
+ RETURN_ENUMERATOR(ehash, 0, 0);
keys = env_keys(); /* rb_secure(4); */
- RBASIC(keys)->klass = 0;
for (i=0; i<RARRAY_LEN(keys); i++) {
VALUE val = rb_f_getenv(Qnil, RARRAY_PTR(keys)[i]);
if (!NIL_P(val)) {
@@ -2770,7 +2584,7 @@ env_reject_bang(VALUE ehash)
static VALUE
env_delete_if(VALUE ehash)
{
- RETURN_SIZED_ENUMERATOR(ehash, 0, 0, rb_env_size);
+ RETURN_ENUMERATOR(ehash, 0, 0);
env_reject_bang(ehash);
return envtbl;
}
@@ -2809,22 +2623,24 @@ static VALUE
env_select(VALUE ehash)
{
VALUE result;
- VALUE keys;
- long i;
+ char **env;
- RETURN_SIZED_ENUMERATOR(ehash, 0, 0, rb_env_size);
+ RETURN_ENUMERATOR(ehash, 0, 0);
rb_secure(4);
result = rb_hash_new();
- keys = env_keys();
- for (i = 0; i < RARRAY_LEN(keys); ++i) {
- VALUE key = RARRAY_PTR(keys)[i];
- VALUE val = rb_f_getenv(Qnil, key);
- if (!NIL_P(val)) {
- if (RTEST(rb_yield_values(2, key, val))) {
- rb_hash_aset(result, key, val);
+ env = GET_ENVIRON(environ);
+ while (*env) {
+ char *s = strchr(*env, '=');
+ if (s) {
+ VALUE k = env_str_new(*env, s-*env);
+ VALUE v = env_str_new2(s+1);
+ if (RTEST(rb_yield_values(2, k, v))) {
+ rb_hash_aset(result, k, v);
}
}
+ env++;
}
+ FREE_ENVIRON(environ);
return result;
}
@@ -2843,9 +2659,8 @@ env_select_bang(VALUE ehash)
long i;
int del = 0;
- RETURN_SIZED_ENUMERATOR(ehash, 0, 0, rb_env_size);
+ RETURN_ENUMERATOR(ehash, 0, 0);
keys = env_keys(); /* rb_secure(4); */
- RBASIC(keys)->klass = 0;
for (i=0; i<RARRAY_LEN(keys); i++) {
VALUE val = rb_f_getenv(Qnil, RARRAY_PTR(keys)[i]);
if (!NIL_P(val)) {
@@ -2872,7 +2687,7 @@ env_select_bang(VALUE ehash)
static VALUE
env_keep_if(VALUE ehash)
{
- RETURN_SIZED_ENUMERATOR(ehash, 0, 0, rb_env_size);
+ RETURN_ENUMERATOR(ehash, 0, 0);
env_select_bang(ehash);
return envtbl;
}
@@ -2954,7 +2769,7 @@ env_inspect(void)
*
* Converts the environment variables into an array of names and value arrays.
*
- * ENV.to_a # => [["TERM", "xterm-color"], ["SHELL", "/bin/bash"], ...]
+ * ENV.to_a # => [["TERM" => "xterm-color"], ["SHELL" => "/bin/bash"], ...]
*
*/
static VALUE
@@ -3006,7 +2821,7 @@ env_size(void)
rb_secure(4);
env = GET_ENVIRON(environ);
- for (i=0; env[i]; i++)
+ for(i=0; env[i]; i++)
;
FREE_ENVIRON(environ);
return INT2FIX(i);
@@ -3048,8 +2863,7 @@ env_has_key(VALUE env, VALUE key)
char *s;
rb_secure(4);
- SafeStringValue(key);
- s = RSTRING_PTR(key);
+ s = StringValuePtr(key);
if (memchr(s, '\0', RSTRING_LEN(key)))
rb_raise(rb_eArgError, "bad environment variable name");
if (getenv(s)) return Qtrue;
@@ -3069,8 +2883,7 @@ env_assoc(VALUE env, VALUE key)
char *s, *e;
rb_secure(4);
- SafeStringValue(key);
- s = RSTRING_PTR(key);
+ s = StringValuePtr(key);
if (memchr(s, '\0', RSTRING_LEN(key)))
rb_raise(rb_eArgError, "bad environment variable name");
e = getenv(s);
@@ -3093,7 +2906,6 @@ env_has_value(VALUE dmy, VALUE obj)
rb_secure(4);
obj = rb_check_string_type(obj);
if (NIL_P(obj)) return Qnil;
- rb_check_safe_obj(obj);
env = GET_ENVIRON(environ);
while (*env) {
char *s = strchr(*env, '=');
@@ -3125,7 +2937,6 @@ env_rassoc(VALUE dmy, VALUE obj)
rb_secure(4);
obj = rb_check_string_type(obj);
if (NIL_P(obj)) return Qnil;
- rb_check_safe_obj(obj);
env = GET_ENVIRON(environ);
while (*env) {
char *s = strchr(*env, '=');
@@ -3157,7 +2968,7 @@ env_key(VALUE dmy, VALUE value)
VALUE str;
rb_secure(4);
- SafeStringValue(value);
+ StringValue(value);
env = GET_ENVIRON(environ);
while (*env) {
char *s = strchr(*env, '=');
@@ -3190,8 +3001,7 @@ env_index(VALUE dmy, VALUE value)
/*
* call-seq:
- * ENV.to_hash -> hash
- * ENV.to_h -> hash
+ * ENV.to_hash -> Hash
*
* Creates a hash with a copy of the environment variables.
*
@@ -3242,7 +3052,6 @@ static VALUE
env_shift(void)
{
char **env;
- VALUE result = Qnil;
rb_secure(4);
env = GET_ENVIRON(environ);
@@ -3252,11 +3061,11 @@ env_shift(void)
VALUE key = env_str_new(*env, s-*env);
VALUE val = env_str_new2(getenv(RSTRING_PTR(key)));
env_delete(Qnil, key);
- result = rb_assoc_new(key, val);
+ return rb_assoc_new(key, val);
}
}
FREE_ENVIRON(environ);
- return result;
+ return Qnil;
}
/*
@@ -3275,9 +3084,11 @@ env_invert(void)
static int
env_replace_i(VALUE key, VALUE val, VALUE keys)
{
- env_aset(Qnil, key, val);
- if (rb_ary_includes(keys, key)) {
- rb_ary_delete(keys, key);
+ if (key != Qundef) {
+ env_aset(Qnil, key, val);
+ if (rb_ary_includes(keys, key)) {
+ rb_ary_delete(keys, key);
+ }
}
return ST_CONTINUE;
}
@@ -3309,10 +3120,12 @@ env_replace(VALUE env, VALUE hash)
static int
env_update_i(VALUE key, VALUE val)
{
- if (rb_block_given_p()) {
- val = rb_yield_values(3, key, rb_f_getenv(Qnil, key), val);
+ if (key != Qundef) {
+ if (rb_block_given_p()) {
+ val = rb_yield_values(3, key, rb_f_getenv(Qnil, key), val);
+ }
+ env_aset(Qnil, key, val);
}
- env_aset(Qnil, key, val);
return ST_CONTINUE;
}
@@ -3337,116 +3150,15 @@ env_update(VALUE env, VALUE hash)
}
/*
- * A Hash is a dictionary-like collection of unique keys and their values.
- * Also called associative arrays, they are similar to Arrays, but where an
- * Array uses integers as its index, a Hash allows you to use any object
- * type.
- *
- * Hashes enumerate their values in the order that the corresponding keys
- * were inserted.
- *
- * A Hash can be easily created by using its implicit form:
- *
- * grades = { "Jane Doe" => 10, "Jim Doe" => 6 }
- *
- * Hashes allow an alternate syntax form when your keys are always symbols.
- * Instead of
- *
- * options = { :font_size => 10, :font_family => "Arial" }
- *
- * You could write it as:
- *
- * options = { font_size: 10, font_family: "Arial" }
- *
- * Each named key is a symbol you can access in hash:
- *
- * options[:font_size] # => 10
- *
- * A Hash can also be created through its ::new method:
- *
- * grades = Hash.new
- * grades["Dorothy Doe"] = 9
+ * A <code>Hash</code> is a collection of key-value pairs. It is
+ * similar to an <code>Array</code>, except that indexing is done via
+ * arbitrary keys of any object type, not an integer index. Hashes enumerate
+ * their values in the order that the corresponding keys were inserted.
*
* Hashes have a <em>default value</em> that is returned when accessing
- * keys that do not exist in the hash. If no default is set +nil+ is used.
- * You can set the default value by sending it as an argument to Hash.new:
- *
- * grades = Hash.new(0)
- *
- * Or by using the #default= method:
- *
- * grades = {"Timmy Doe" => 8}
- * grades.default = 0
- *
- * Accessing a value in a Hash requires using its key:
- *
- * puts grades["Jane Doe"] # => 10
- *
- * === Common Uses
- *
- * Hashes are an easy way to represent data structures, such as
- *
- * books = {}
- * books[:matz] = "The Ruby Language"
- * books[:black] = "The Well-Grounded Rubyist"
- *
- * Hashes are also commonly used as a way to have named parameters in
- * functions. Note that no brackets are used below. If a hash is the last
- * argument on a method call, no braces are needed, thus creating a really
- * clean interface:
- *
- * Person.create(name: "John Doe", age: 27)
- *
- * def self.create(params)
- * @name = params[:name]
- * @age = params[:age]
- * end
- *
- * === Hash Keys
- *
- * Two objects refer to the same hash key when their <code>hash</code> value
- * is identical and the two objects are <code>eql?</code> to each other.
- *
- * A user-defined class may be used as a hash key if the <code>hash</code>
- * and <code>eql?</code> methods are overridden to provide meaningful
- * behavior. By default, separate instances refer to separate hash keys.
- *
- * A typical implementation of <code>hash</code> is based on the
- * object's data while <code>eql?</code> is usually aliased to the overridden
- * <code>==</code> method:
- *
- * class Book
- * attr_reader :author, :title
- *
- * def initialize(author, title)
- * @author = author
- * @title = title
- * end
- *
- * def ==(other)
- * self.class === other and
- * other.author == @author and
- * other.title == @title
- * end
- *
- * alias eql? ==
- *
- * def hash
- * @author.hash ^ @title.hash # XOR
- * end
- * end
- *
- * book1 = Book.new 'matz', 'Ruby in a Nutshell'
- * book2 = Book.new 'matz', 'Ruby in a Nutshell'
- *
- * reviews = {}
- *
- * reviews[book1] = 'Great reference!'
- * reviews[book2] = 'Nice and compact!'
- *
- * reviews.length #=> 1
+ * keys that do not exist in the hash. By default, that value is
+ * <code>nil</code>.
*
- * See also Object#hash and Object#eql?
*/
void
@@ -3463,15 +3175,14 @@ Init_Hash(void)
rb_include_module(rb_cHash, rb_mEnumerable);
- rb_define_alloc_func(rb_cHash, empty_hash_alloc);
+ rb_define_alloc_func(rb_cHash, hash_alloc);
rb_define_singleton_method(rb_cHash, "[]", rb_hash_s_create, -1);
rb_define_singleton_method(rb_cHash, "try_convert", rb_hash_s_try_convert, 1);
rb_define_method(rb_cHash,"initialize", rb_hash_initialize, -1);
- rb_define_method(rb_cHash,"initialize_copy", rb_hash_initialize_copy, 1);
+ rb_define_method(rb_cHash,"initialize_copy", rb_hash_replace, 1);
rb_define_method(rb_cHash,"rehash", rb_hash_rehash, 0);
rb_define_method(rb_cHash,"to_hash", rb_hash_to_hash, 0);
- rb_define_method(rb_cHash,"to_h", rb_hash_to_h, 0);
rb_define_method(rb_cHash,"to_a", rb_hash_to_a, 0);
rb_define_method(rb_cHash,"inspect", rb_hash_inspect, 0);
rb_define_alias(rb_cHash, "to_s", "inspect");
@@ -3582,7 +3293,6 @@ Init_Hash(void)
rb_define_singleton_method(envtbl,"key?", env_has_key, 1);
rb_define_singleton_method(envtbl,"value?", env_has_value, 1);
rb_define_singleton_method(envtbl,"to_hash", env_to_hash, 0);
- rb_define_singleton_method(envtbl,"to_h", env_to_hash, 0);
rb_define_singleton_method(envtbl,"assoc", env_assoc, 1);
rb_define_singleton_method(envtbl,"rassoc", env_rassoc, 1);
diff --git a/ia64.s b/ia64.s
index 1087105585..92415b4e97 100644
--- a/ia64.s
+++ b/ia64.s
@@ -5,11 +5,11 @@
//
// void rb_ia64_flushrs(void) { __builtin_ia64_flushrs(); }
// void *rb_ia64_bsp(void) { return __builtin_ia64_bsp(); }
-//
+//
// Note that rb_ia64_flushrs and rb_ia64_bsp works in its own stack frame.
// It's because BSP is updated by br.call/brl.call (not alloc instruction).
// So rb_ia64_flushrs flushes stack frames including caller's one.
-// rb_ia64_bsp returns the address next to caller's register stack frame.
+// rb_ia64_bsp returns the address next to caller's register stack frame.
//
// See also
// Intel Itanium Architecture Software Developer's Manual
diff --git a/id.c b/id.c
new file mode 100644
index 0000000000..89ae4a4e77
--- /dev/null
+++ b/id.c
@@ -0,0 +1,51 @@
+/**********************************************************************
+
+ id.c -
+
+ $Author$
+ created at: Thu Jul 12 04:37:51 2007
+
+ Copyright (C) 2004-2007 Koichi Sasada
+
+**********************************************************************/
+
+#include "ruby/ruby.h"
+
+#include "id.h"
+
+static void
+Init_id(void)
+{
+#undef rb_intern
+#define rb_intern(str) rb_intern_const(str)
+ rb_encoding *enc = rb_usascii_encoding();
+
+ REGISTER_SYMID(idNULL, "");
+ REGISTER_SYMID(idIFUNC, "<IFUNC>");
+ REGISTER_SYMID(idCFUNC, "<CFUNC>");
+ REGISTER_SYMID(idRespond_to, "respond_to?");
+
+ REGISTER_SYMID(id_core_set_method_alias, "core#set_method_alias");
+ REGISTER_SYMID(id_core_set_variable_alias, "core#set_variable_alias");
+ REGISTER_SYMID(id_core_undef_method, "core#undef_method");
+ REGISTER_SYMID(id_core_define_method, "core#define_method");
+ REGISTER_SYMID(id_core_define_singleton_method, "core#define_singleton_method");
+ REGISTER_SYMID(id_core_set_postexe, "core#set_postexe");
+
+ REGISTER_SYMID(idEach, "each");
+ REGISTER_SYMID(idLength, "length");
+ REGISTER_SYMID(idSize, "size");
+ REGISTER_SYMID(idLambda, "lambda");
+ REGISTER_SYMID(idIntern, "intern");
+ REGISTER_SYMID(idGets, "gets");
+ REGISTER_SYMID(idSucc, "succ");
+ REGISTER_SYMID(idMethodMissing, "method_missing");
+#if SUPPORT_JOKE
+ REGISTER_SYMID(idBitblt, "bitblt");
+ REGISTER_SYMID(idAnswer, "the_answer_to_life_the_universe_and_everything");
+#endif
+ REGISTER_SYMID(idSend, "send");
+ REGISTER_SYMID(id__send__, "__send__");
+ REGISTER_SYMID(idInitialize, "initialize");
+ REGISTER_SYMID(idUScore, "_");
+}
diff --git a/include/ruby.h b/include/ruby.h
index 076b5ce258..862b1687d4 100644
--- a/include/ruby.h
+++ b/include/ruby.h
@@ -22,7 +22,6 @@
#define HAVE_RUBY_REGEX_H 1
#define HAVE_RUBY_RUBY_H 1
#define HAVE_RUBY_ST_H 1
-#define HAVE_RUBY_THREAD_H 1
#define HAVE_RUBY_UTIL_H 1
#define HAVE_RUBY_VERSION_H 1
#define HAVE_RUBY_VM_H 1
diff --git a/include/ruby/backward/rubysig.h b/include/ruby/backward/rubysig.h
index f46679ae67..3952f7e85e 100644
--- a/include/ruby/backward/rubysig.h
+++ b/include/ruby/backward/rubysig.h
@@ -27,10 +27,6 @@ extern "C" {
#endif
#endif
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
-
struct rb_blocking_region_buffer;
DEPRECATED(RUBY_EXTERN struct rb_blocking_region_buffer *rb_thread_blocking_region_begin(void));
DEPRECATED(RUBY_EXTERN void rb_thread_blocking_region_end(struct rb_blocking_region_buffer *));
@@ -42,10 +38,6 @@ DEPRECATED(RUBY_EXTERN void rb_thread_blocking_region_end(struct rb_blocking_reg
#define ALLOW_INTS do {CHECK_INTS;} while (0)
#define CHECK_INTS rb_thread_check_ints()
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
-
#if defined(__cplusplus)
#if 0
{ /* satisfy cc-mode */
diff --git a/include/ruby/debug.h b/include/ruby/debug.h
deleted file mode 100644
index 4ef45a8327..0000000000
--- a/include/ruby/debug.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/**********************************************************************
-
- ruby/debug.h -
-
- $Author: ko1 $
- created at: Tue Nov 20 20:35:08 2012
-
- Copyright (C) 2012 Yukihiro Matsumoto
-
-**********************************************************************/
-
-#ifndef RB_DEBUG_H
-#define RB_DEBUG_H 1
-
-#if defined(__cplusplus)
-extern "C" {
-#if 0
-} /* satisfy cc-mode */
-#endif
-#endif
-
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
-
-/* Note: This file contains experimental APIs. */
-/* APIs can be replaced at Ruby 2.0.1 or later */
-
-/* debug inspector APIs */
-typedef struct rb_debug_inspector_struct rb_debug_inspector_t;
-typedef VALUE (*rb_debug_inspector_func_t)(const rb_debug_inspector_t *, void *);
-
-VALUE rb_debug_inspector_open(rb_debug_inspector_func_t func, void *data);
-VALUE rb_debug_inspector_frame_self_get(const rb_debug_inspector_t *dc, long index);
-VALUE rb_debug_inspector_frame_class_get(const rb_debug_inspector_t *dc, long index);
-VALUE rb_debug_inspector_frame_binding_get(const rb_debug_inspector_t *dc, long index);
-VALUE rb_debug_inspector_frame_iseq_get(const rb_debug_inspector_t *dc, long index);
-VALUE rb_debug_inspector_backtrace_locations(const rb_debug_inspector_t *dc);
-
-/* Old style set_trace_func APIs */
-
-/* duplicated def of include/ruby/ruby.h */
-void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data);
-int rb_remove_event_hook(rb_event_hook_func_t func);
-
-int rb_remove_event_hook_with_data(rb_event_hook_func_t func, VALUE data);
-void rb_thread_add_event_hook(VALUE thval, rb_event_hook_func_t func, rb_event_flag_t events, VALUE data);
-int rb_thread_remove_event_hook(VALUE thval, rb_event_hook_func_t func);
-int rb_thread_remove_event_hook_with_data(VALUE thval, rb_event_hook_func_t func, VALUE data);
-
-/* TracePoint APIs */
-
-VALUE rb_tracepoint_new(VALUE target_thread_not_supported_yet, rb_event_flag_t events, void (*func)(VALUE, void *), void *data);
-VALUE rb_tracepoint_enable(VALUE tpval);
-VALUE rb_tracepoint_disable(VALUE tpval);
-VALUE rb_tracepoint_enabled_p(VALUE tpval);
-
-typedef struct rb_trace_arg_struct rb_trace_arg_t;
-rb_trace_arg_t *rb_tracearg_from_tracepoint(VALUE tpval);
-
-VALUE rb_tracearg_event(rb_trace_arg_t *trace_arg);
-VALUE rb_tracearg_lineno(rb_trace_arg_t *trace_arg);
-VALUE rb_tracearg_path(rb_trace_arg_t *trace_arg);
-VALUE rb_tracearg_method_id(rb_trace_arg_t *trace_arg);
-VALUE rb_tracearg_defined_class(rb_trace_arg_t *trace_arg);
-VALUE rb_tracearg_binding(rb_trace_arg_t *trace_arg);
-VALUE rb_tracearg_self(rb_trace_arg_t *trace_arg);
-VALUE rb_tracearg_return_value(rb_trace_arg_t *trace_arg);
-VALUE rb_tracearg_raised_exception(rb_trace_arg_t *trace_arg);
-
-/* undocumented advanced tracing APIs */
-
-typedef enum {
- RUBY_EVENT_HOOK_FLAG_SAFE = 0x01,
- RUBY_EVENT_HOOK_FLAG_DELETED = 0x02,
- RUBY_EVENT_HOOK_FLAG_RAW_ARG = 0x04
-} rb_event_hook_flag_t;
-
-void rb_add_event_hook2(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data, rb_event_hook_flag_t hook_flag);
-void rb_thread_add_event_hook2(VALUE thval, rb_event_hook_func_t func, rb_event_flag_t events, VALUE data, rb_event_hook_flag_t hook_flag);
-
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
-
-#if defined(__cplusplus)
-#if 0
-{ /* satisfy cc-mode */
-#endif
-} /* extern "C" { */
-#endif
-
-#endif /* RUBY_DEBUG_H */
diff --git a/include/ruby/defines.h b/include/ruby/defines.h
index de0883d2c9..8fd09716f1 100644
--- a/include/ruby/defines.h
+++ b/include/ruby/defines.h
@@ -149,6 +149,76 @@ void xfree(void*);
#endif
#endif
+#ifdef __NeXT__
+/* NextStep, OpenStep, Rhapsody */
+#ifndef S_IRUSR
+#define S_IRUSR 0000400 /* read permission, owner */
+#endif
+#ifndef S_IRGRP
+#define S_IRGRP 0000040 /* read permission, group */
+#endif
+#ifndef S_IROTH
+#define S_IROTH 0000004 /* read permission, other */
+#endif
+#ifndef S_IWUSR
+#define S_IWUSR 0000200 /* write permission, owner */
+#endif
+#ifndef S_IWGRP
+#define S_IWGRP 0000020 /* write permission, group */
+#endif
+#ifndef S_IWOTH
+#define S_IWOTH 0000002 /* write permission, other */
+#endif
+#ifndef S_IXUSR
+#define S_IXUSR 0000100 /* execute/search permission, owner */
+#endif
+#ifndef S_IXGRP
+#define S_IXGRP 0000010 /* execute/search permission, group */
+#endif
+#ifndef S_IXOTH
+#define S_IXOTH 0000001 /* execute/search permission, other */
+#endif
+#ifndef S_IRWXU
+#define S_IRWXU 0000700 /* read, write, execute permissions, owner */
+#endif
+#ifndef S_IRWXG
+#define S_IRWXG 0000070 /* read, write, execute permissions, group */
+#endif
+#ifndef S_IRWXO
+#define S_IRWXO 0000007 /* read, write, execute permissions, other */
+#endif
+#ifndef S_ISBLK
+#define S_ISBLK(mode) (((mode) & (0170000)) == (0060000))
+#endif
+#ifndef S_ISCHR
+#define S_ISCHR(mode) (((mode) & (0170000)) == (0020000))
+#endif
+#ifndef S_ISDIR
+#define S_ISDIR(mode) (((mode) & (0170000)) == (0040000))
+#endif
+#ifndef S_ISFIFO
+#define S_ISFIFO(mode) (((mode) & (0170000)) == (0010000))
+#endif
+#ifndef S_ISREG
+#define S_ISREG(mode) (((mode) & (0170000)) == (0100000))
+#endif
+#ifndef __APPLE__
+/* NextStep, OpenStep (but not Rhapsody) */
+#ifndef GETPGRP_VOID
+#define GETPGRP_VOID 1
+#endif
+#ifndef WNOHANG
+#define WNOHANG 01
+#endif
+#ifndef WUNTRACED
+#define WUNTRACED 02
+#endif
+#ifndef X_OK
+#define X_OK 1
+#endif
+#endif /* __APPLE__ */
+#endif /* NeXT */
+
#ifdef _WIN32
#include "ruby/win32.h"
#endif
@@ -197,7 +267,7 @@ void xfree(void*);
/* MB_CUR_MAX will not work well in C locale */
#endif
-#if defined(__sparc)
+#if defined(sparc) || defined(__sparc__)
void rb_sparc_flush_register_windows(void);
# define FLUSH_REGISTER_WINDOWS rb_sparc_flush_register_windows()
#elif defined(__ia64)
diff --git a/include/ruby/encoding.h b/include/ruby/encoding.h
index 41640ec7e0..cced3d2688 100644
--- a/include/ruby/encoding.h
+++ b/include/ruby/encoding.h
@@ -89,7 +89,6 @@ void rb_enc_set_index(VALUE obj, int encindex);
int rb_enc_find_index(const char *name);
int rb_to_encoding_index(VALUE);
rb_encoding* rb_to_encoding(VALUE);
-rb_encoding* rb_find_encoding(VALUE);
rb_encoding* rb_enc_get(VALUE);
rb_encoding* rb_enc_compatible(VALUE,VALUE);
rb_encoding* rb_enc_check(VALUE,VALUE);
@@ -112,8 +111,6 @@ VALUE rb_str_export_to_enc(VALUE, rb_encoding *);
VALUE rb_str_conv_enc(VALUE str, rb_encoding *from, rb_encoding *to);
VALUE rb_str_conv_enc_opts(VALUE str, rb_encoding *from, rb_encoding *to, int ecflags, VALUE ecopts);
-PRINTF_ARGS(NORETURN(void rb_enc_raise(rb_encoding *, VALUE, const char*, ...)), 3, 4);
-
/* index -> rb_encoding */
rb_encoding* rb_enc_from_index(int idx);
@@ -220,7 +217,6 @@ char *rb_enc_path_last_separator(const char *,const char *,rb_encoding*);
char *rb_enc_path_end(const char *,const char *,rb_encoding*);
const char *ruby_enc_find_basename(const char *name, long *baselen, long *alllen, rb_encoding *enc);
const char *ruby_enc_find_extname(const char *name, long *len, rb_encoding *enc);
-ID rb_check_id_cstr(const char *ptr, long len, rb_encoding *enc);
RUBY_EXTERN VALUE rb_cEncoding;
#define ENC_DUMMY_FLAG (1<<24)
diff --git a/include/ruby/intern.h b/include/ruby/intern.h
index 838beb9e68..927b536678 100644
--- a/include/ruby/intern.h
+++ b/include/ruby/intern.h
@@ -31,15 +31,6 @@ extern "C" {
#else
# include <varargs.h>
#endif
-
-#if defined(HAVE_SYS_TYPES_H)
-#include <sys/types.h>
-#endif
-
-#if defined(HAVE_SYS_TIME_H)
-#include <sys/time.h>
-#endif
-
#include "ruby/st.h"
#if defined __GNUC__ && __GNUC__ >= 4
@@ -51,7 +42,7 @@ extern "C" {
* the kernel.
*/
-#define UNLIMITED_ARGUMENTS (-1)
+#define ID_ALLOCATOR 1
/* array.c */
void rb_mem_clear(register VALUE*, register long);
@@ -65,7 +56,6 @@ VALUE rb_ary_tmp_new(long);
void rb_ary_free(VALUE);
void rb_ary_modify(VALUE);
VALUE rb_ary_freeze(VALUE);
-VALUE rb_ary_shared_with_p(VALUE, VALUE);
VALUE rb_ary_aref(int, VALUE*, VALUE);
VALUE rb_ary_subseq(VALUE, long, long);
void rb_ary_store(VALUE, long, VALUE);
@@ -81,7 +71,6 @@ VALUE rb_ary_entry(VALUE, long);
VALUE rb_ary_each(VALUE);
VALUE rb_ary_join(VALUE, VALUE);
VALUE rb_ary_reverse(VALUE);
-VALUE rb_ary_rotate(VALUE, long);
VALUE rb_ary_sort(VALUE);
VALUE rb_ary_sort_bang(VALUE);
VALUE rb_ary_delete(VALUE, VALUE);
@@ -133,7 +122,6 @@ VALUE rb_dbl2big(double);
double rb_big2dbl(VALUE);
VALUE rb_big_cmp(VALUE, VALUE);
VALUE rb_big_eq(VALUE, VALUE);
-VALUE rb_big_eql(VALUE, VALUE);
VALUE rb_big_plus(VALUE, VALUE);
VALUE rb_big_minus(VALUE, VALUE);
VALUE rb_big_mul(VALUE, VALUE);
@@ -172,6 +160,7 @@ VALUE rb_Complex(VALUE, VALUE);
VALUE rb_class_boot(VALUE);
VALUE rb_class_new(VALUE);
VALUE rb_mod_init_copy(VALUE, VALUE);
+VALUE rb_class_init_copy(VALUE, VALUE);
VALUE rb_singleton_class_clone(VALUE);
void rb_singleton_class_attached(VALUE,VALUE);
VALUE rb_make_metaclass(VALUE, VALUE);
@@ -182,7 +171,6 @@ VALUE rb_define_class_id_under(VALUE, ID, VALUE);
VALUE rb_module_new(void);
VALUE rb_define_module_id(ID);
VALUE rb_define_module_id_under(VALUE, ID);
-VALUE rb_include_class_new(VALUE, VALUE);
VALUE rb_mod_included_modules(VALUE);
VALUE rb_mod_include_p(VALUE, VALUE);
VALUE rb_mod_ancestors(VALUE);
@@ -208,47 +196,34 @@ VALUE rb_fiber_yield(int argc, VALUE *args);
VALUE rb_fiber_current(void);
VALUE rb_fiber_alive_p(VALUE);
/* enum.c */
-VALUE rb_enum_values_pack(int, VALUE*);
/* enumerator.c */
VALUE rb_enumeratorize(VALUE, VALUE, int, VALUE *);
-VALUE rb_enumeratorize_with_size(VALUE, VALUE, int, VALUE *, VALUE (*)(ANYARGS));
-#define RETURN_SIZED_ENUMERATOR(obj, argc, argv, size_fn) do { \
+#define RETURN_ENUMERATOR(obj, argc, argv) do { \
if (!rb_block_given_p()) \
- return rb_enumeratorize_with_size((obj), ID2SYM(rb_frame_this_func()),\
- (argc), (argv), (size_fn)); \
+ return rb_enumeratorize((obj), ID2SYM(rb_frame_this_func()),\
+ (argc), (argv)); \
} while (0)
-#define RETURN_ENUMERATOR(obj, argc, argv) RETURN_SIZED_ENUMERATOR(obj, argc, argv, 0)
/* error.c */
VALUE rb_exc_new(VALUE, const char*, long);
VALUE rb_exc_new2(VALUE, const char*);
VALUE rb_exc_new3(VALUE, VALUE);
PRINTF_ARGS(NORETURN(void rb_loaderror(const char*, ...)), 1, 2);
-PRINTF_ARGS(NORETURN(void rb_loaderror_with_path(VALUE path, const char*, ...)), 2, 3);
PRINTF_ARGS(NORETURN(void rb_name_error(ID, const char*, ...)), 2, 3);
-PRINTF_ARGS(NORETURN(void rb_name_error_str(VALUE, const char*, ...)), 2, 3);
NORETURN(void rb_invalid_str(const char*, const char*));
PRINTF_ARGS(void rb_compile_error(const char*, int, const char*, ...), 3, 4);
PRINTF_ARGS(void rb_compile_error_with_enc(const char*, int, void *, const char*, ...), 4, 5);
PRINTF_ARGS(void rb_compile_error_append(const char*, ...), 1, 2);
+NORETURN(void rb_load_fail(const char*));
NORETURN(void rb_error_frozen(const char*));
-void rb_error_untrusted(VALUE);
void rb_check_frozen(VALUE);
-void rb_check_trusted(VALUE);
#define rb_check_frozen_internal(obj) do { \
VALUE frozen_obj = (obj); \
if (OBJ_FROZEN(frozen_obj)) { \
rb_error_frozen(rb_obj_classname(frozen_obj)); \
} \
} while (0)
-#define rb_check_trusted_internal(obj) do { \
- VALUE untrusted_obj = (obj); \
- if (!OBJ_UNTRUSTED(untrusted_obj)) { \
- rb_error_untrusted(untrusted_obj); \
- } \
- } while (0)
#ifdef __GNUC__
#define rb_check_frozen(obj) __extension__({rb_check_frozen_internal(obj);})
-#define rb_check_trusted(obj) __extension__({rb_check_trusted_internal(obj);})
#else
static inline void
rb_check_frozen_inline(VALUE obj)
@@ -256,29 +231,13 @@ rb_check_frozen_inline(VALUE obj)
rb_check_frozen_internal(obj);
}
#define rb_check_frozen(obj) rb_check_frozen_inline(obj)
-static inline void
-rb_check_trusted_inline(VALUE obj)
-{
- rb_check_trusted_internal(obj);
-}
-#define rb_check_trusted(obj) rb_check_trusted_inline(obj)
#endif
-void rb_check_copyable(VALUE obj, VALUE orig);
-
-#define OBJ_INIT_COPY(obj, orig) \
- ((obj) != (orig) && (rb_obj_init_copy((obj), (orig)), 1))
/* eval.c */
int rb_sourceline(void);
const char *rb_sourcefile(void);
VALUE rb_check_funcall(VALUE, ID, int, VALUE*);
-NORETURN(void rb_error_arity(int, int, int));
-#define rb_check_arity(argc, min, max) do { \
- if (((argc) < (min)) || ((argc) > (max) && (max) != UNLIMITED_ARGUMENTS)) \
- rb_error_arity(argc, min, max); \
- } while(0)
-
#if defined(NFDBITS) && defined(HAVE_RB_FD_INIT)
typedef struct {
int maxfd;
@@ -382,8 +341,7 @@ VALUE rb_require_safe(VALUE, int);
void rb_obj_call_init(VALUE, int, VALUE*);
VALUE rb_class_new_instance(int, VALUE*, VALUE);
VALUE rb_block_proc(void);
-DEPRECATED(VALUE rb_f_lambda(void));
-VALUE rb_block_lambda(void);
+VALUE rb_f_lambda(void);
VALUE rb_proc_new(VALUE (*)(ANYARGS/* VALUE yieldarg[, VALUE procarg] */), VALUE);
VALUE rb_obj_is_proc(VALUE);
VALUE rb_proc_call(VALUE, VALUE);
@@ -394,18 +352,22 @@ VALUE rb_binding_new(void);
VALUE rb_obj_method(VALUE, VALUE);
VALUE rb_obj_is_method(VALUE);
VALUE rb_method_call(int, VALUE*, VALUE);
-VALUE rb_method_call_with_block(int, VALUE *, VALUE, VALUE);
int rb_mod_method_arity(VALUE, ID);
int rb_obj_method_arity(VALUE, ID);
VALUE rb_protect(VALUE (*)(VALUE), VALUE, int*);
void rb_set_end_proc(void (*)(VALUE), VALUE);
+void rb_mark_end_proc(void);
void rb_exec_end_proc(void);
+void ruby_finalize(void);
+NORETURN(void ruby_stop(int));
+int ruby_cleanup(volatile int);
+DEPRECATED(void rb_gc_mark_threads(void));
void rb_thread_schedule(void);
void rb_thread_wait_fd(int);
int rb_thread_fd_writable(int);
void rb_thread_fd_close(int);
int rb_thread_alone(void);
-DEPRECATED(void rb_thread_polling(void));
+void rb_thread_polling(void);
void rb_thread_sleep(int);
void rb_thread_sleep_forever(void);
VALUE rb_thread_stop(void);
@@ -426,7 +388,6 @@ void rb_thread_atfork_before_exec(void);
VALUE rb_exec_recursive(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE);
VALUE rb_exec_recursive_paired(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE,VALUE);
VALUE rb_exec_recursive_outer(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE);
-VALUE rb_exec_recursive_paired_outer(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE,VALUE);
/* dir.c */
VALUE rb_dir_getwd(void);
/* file.c */
@@ -435,6 +396,8 @@ VALUE rb_file_expand_path(VALUE, VALUE);
VALUE rb_file_s_absolute_path(int, VALUE *);
VALUE rb_file_absolute_path(VALUE, VALUE);
VALUE rb_file_dirname(VALUE fname);
+void rb_file_const(const char*, VALUE);
+int rb_file_load_ok(const char *);
int rb_find_file_ext_safe(VALUE*, const char* const*, int);
VALUE rb_find_file_safe(VALUE, int);
int rb_find_file_ext(VALUE*, const char* const*);
@@ -443,7 +406,10 @@ VALUE rb_file_directory_p(VALUE,VALUE);
VALUE rb_str_encode_ospath(VALUE);
int rb_is_absolute_path(const char *);
/* gc.c */
+void ruby_set_stack_size(size_t);
NORETURN(void rb_memerror(void));
+int ruby_stack_check(void);
+size_t ruby_stack_length(VALUE**);
int rb_during_gc(void);
void rb_gc_mark_locations(VALUE*, VALUE*);
void rb_mark_tbl(struct st_table*);
@@ -459,6 +425,7 @@ void rb_gc_call_finalizer_at_exit(void);
VALUE rb_gc_enable(void);
VALUE rb_gc_disable(void);
VALUE rb_gc_start(void);
+#define Init_stack(addr) ruby_init_stack(addr)
void rb_gc_set_params(void);
/* hash.c */
void st_foreach_safe(struct st_table *, int (*)(ANYARGS), st_data_t);
@@ -473,7 +440,6 @@ VALUE rb_hash_lookup(VALUE, VALUE);
VALUE rb_hash_lookup2(VALUE, VALUE, VALUE);
VALUE rb_hash_fetch(VALUE, VALUE);
VALUE rb_hash_aset(VALUE, VALUE, VALUE);
-VALUE rb_hash_clear(VALUE);
VALUE rb_hash_delete_if(VALUE);
VALUE rb_hash_delete(VALUE,VALUE);
typedef VALUE rb_hash_update_func(VALUE newkey, VALUE oldkey, VALUE value);
@@ -513,14 +479,8 @@ void rb_write_error2(const char*, long);
void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds);
int rb_pipe(int *pipes);
int rb_reserved_fd_p(int fd);
-int rb_cloexec_open(const char *pathname, int flags, mode_t mode);
-int rb_cloexec_dup(int oldfd);
-int rb_cloexec_dup2(int oldfd, int newfd);
-int rb_cloexec_pipe(int fildes[2]);
-int rb_cloexec_fcntl_dupfd(int fd, int minfd);
#define RB_RESERVED_FD_P(fd) rb_reserved_fd_p(fd)
void rb_update_max_fd(int fd);
-void rb_fd_fix_cloexec(int fd);
/* marshal.c */
VALUE rb_marshal_dump(VALUE, VALUE);
VALUE rb_marshal_load(VALUE);
@@ -531,7 +491,7 @@ NORETURN(void rb_num_zerodiv(void));
VALUE rb_num_coerce_bin(VALUE, VALUE, ID);
VALUE rb_num_coerce_cmp(VALUE, VALUE, ID);
VALUE rb_num_coerce_relop(VALUE, VALUE, ID);
-VALUE rb_num_coerce_bit(VALUE, VALUE, ID);
+VALUE rb_float_new(double);
VALUE rb_num2fix(VALUE);
VALUE rb_fix2str(VALUE, int);
VALUE rb_dbl_cmp(double, double);
@@ -564,28 +524,26 @@ VALUE rb_check_convert_type(VALUE,int,const char*,const char*);
VALUE rb_check_to_integer(VALUE, const char *);
VALUE rb_check_to_float(VALUE);
VALUE rb_to_int(VALUE);
-VALUE rb_check_to_int(VALUE);
VALUE rb_Integer(VALUE);
VALUE rb_to_float(VALUE);
VALUE rb_Float(VALUE);
VALUE rb_String(VALUE);
VALUE rb_Array(VALUE);
-VALUE rb_Hash(VALUE);
double rb_cstr_to_dbl(const char*, int);
double rb_str_to_dbl(VALUE, int);
/* parse.y */
RUBY_EXTERN int ruby_sourceline;
RUBY_EXTERN char *ruby_sourcefile;
ID rb_id_attrset(ID);
+void rb_gc_mark_parser(void);
int rb_is_const_id(ID);
-int rb_is_global_id(ID);
int rb_is_instance_id(ID);
-int rb_is_attrset_id(ID);
int rb_is_class_id(ID);
int rb_is_local_id(ID);
int rb_is_junk_id(ID);
int rb_symname_p(const char*);
int rb_sym_interned_p(VALUE);
+void rb_gc_mark_symbols(void);
VALUE rb_backref_get(void);
void rb_backref_set(VALUE);
VALUE rb_lastline_get(void);
@@ -595,19 +553,23 @@ VALUE rb_sym_all_symbols(void);
void rb_last_status_set(int status, rb_pid_t pid);
VALUE rb_last_status_get(void);
struct rb_exec_arg {
- VALUE execarg_obj;
+ int argc;
+ VALUE *argv;
+ const char *prog;
+ VALUE options;
+ VALUE redirect_fds;
};
-DEPRECATED(int rb_proc_exec_n(int, VALUE*, const char*));
+int rb_proc_exec_n(int, VALUE*, const char*);
int rb_proc_exec(const char*);
-DEPRECATED(VALUE rb_exec_arg_init(int argc, VALUE *argv, int accept_shell, struct rb_exec_arg *e));
-DEPRECATED(int rb_exec_arg_addopt(struct rb_exec_arg *e, VALUE key, VALUE val));
-DEPRECATED(void rb_exec_arg_fixup(struct rb_exec_arg *e));
-DEPRECATED(int rb_run_exec_options(const struct rb_exec_arg *e, struct rb_exec_arg *s));
-DEPRECATED(int rb_run_exec_options_err(const struct rb_exec_arg *e, struct rb_exec_arg *s, char*, size_t));
-DEPRECATED(int rb_exec(const struct rb_exec_arg*));
-DEPRECATED(int rb_exec_err(const struct rb_exec_arg*, char*, size_t));
-DEPRECATED(rb_pid_t rb_fork(int*, int (*)(void*), void*, VALUE));
-DEPRECATED(rb_pid_t rb_fork_err(int*, int (*)(void*, char*, size_t), void*, VALUE, char*, size_t));
+VALUE rb_exec_arg_init(int argc, VALUE *argv, int accept_shell, struct rb_exec_arg *e);
+int rb_exec_arg_addopt(struct rb_exec_arg *e, VALUE key, VALUE val);
+void rb_exec_arg_fixup(struct rb_exec_arg *e);
+int rb_run_exec_options(const struct rb_exec_arg *e, struct rb_exec_arg *s);
+int rb_run_exec_options_err(const struct rb_exec_arg *e, struct rb_exec_arg *s, char*, size_t);
+int rb_exec(const struct rb_exec_arg*);
+int rb_exec_err(const struct rb_exec_arg*, char*, size_t);
+rb_pid_t rb_fork(int*, int (*)(void*), void*, VALUE);
+rb_pid_t rb_fork_err(int*, int (*)(void*, char*, size_t), void*, VALUE, char*, size_t);
VALUE rb_f_exec(int,VALUE*);
rb_pid_t rb_waitpid(rb_pid_t pid, int *status, int flags);
void rb_syswait(rb_pid_t pid);
@@ -627,7 +589,6 @@ VALUE rb_random_bytes(VALUE rnd, long n);
VALUE rb_random_int(VALUE rnd, VALUE max);
unsigned int rb_random_int32(VALUE rnd);
double rb_random_real(VALUE rnd);
-unsigned long rb_random_ulong_limited(VALUE rnd, unsigned long limit);
unsigned long rb_genrand_ulong_limited(unsigned long i);
/* re.c */
#define rb_memcmp memcmp
@@ -653,12 +614,20 @@ int rb_reg_options(VALUE);
RUBY_EXTERN VALUE rb_argv0;
VALUE rb_get_argv(void);
void *rb_load_file(const char*);
+void ruby_script(const char*);
+void ruby_prog_init(void);
+void ruby_set_argv(int, char**);
+void *ruby_process_options(int, char**);
+void ruby_init_loadpath(void);
+void ruby_incpush(const char*);
/* signal.c */
VALUE rb_f_kill(int, VALUE*);
+void rb_gc_mark_trap_list(void);
#ifdef POSIX_SIGNAL
#define posix_signal ruby_posix_signal
RETSIGTYPE (*posix_signal(int, RETSIGTYPE (*)(int)))(int);
#endif
+void ruby_sig_finalize(void);
void rb_trap_exit(void);
void rb_trap_exec(void);
const char *ruby_signal_name(int);
@@ -704,7 +673,6 @@ VALUE rb_str_buf_cat2(VALUE, const char*);
VALUE rb_str_buf_cat_ascii(VALUE, const char*);
VALUE rb_obj_as_string(VALUE);
VALUE rb_check_string_type(VALUE);
-void rb_must_asciicompat(VALUE);
VALUE rb_str_dup(VALUE);
VALUE rb_str_resurrect(VALUE str);
VALUE rb_str_locktmp(VALUE);
@@ -836,10 +804,8 @@ typedef void rb_unblock_function_t(void *);
typedef VALUE rb_blocking_function_t(void *);
void rb_thread_check_ints(void);
int rb_thread_interrupted(VALUE thval);
-
-/* Use rb_thread_call_without_gvl family instead. */
-DEPRECATED(VALUE rb_thread_blocking_region(rb_blocking_function_t *func, void *data1,
- rb_unblock_function_t *ubf, void *data2));
+VALUE rb_thread_blocking_region(rb_blocking_function_t *func, void *data1,
+ rb_unblock_function_t *ubf, void *data2);
#define RUBY_UBF_IO ((rb_unblock_function_t *)-1)
#define RUBY_UBF_PROCESS ((rb_unblock_function_t *)-1)
VALUE rb_mutex_new(void);
@@ -849,6 +815,10 @@ VALUE rb_mutex_lock(VALUE mutex);
VALUE rb_mutex_unlock(VALUE mutex);
VALUE rb_mutex_sleep(VALUE self, VALUE timeout);
VALUE rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg);
+VALUE rb_barrier_new(void);
+VALUE rb_barrier_wait(VALUE self);
+VALUE rb_barrier_release(VALUE self);
+VALUE rb_barrier_destroy(VALUE self);
/* time.c */
VALUE rb_time_new(time_t, long);
VALUE rb_time_nano_new(time_t, long);
@@ -868,12 +838,15 @@ VALUE rb_class_name(VALUE);
void rb_autoload(VALUE, ID, const char*);
VALUE rb_autoload_load(VALUE, ID);
VALUE rb_autoload_p(VALUE, ID);
+void rb_gc_mark_global_tbl(void);
VALUE rb_f_trace_var(int, VALUE*);
VALUE rb_f_untrace_var(int, VALUE*);
VALUE rb_f_global_variables(void);
void rb_alias_variable(ID, ID);
struct st_table* rb_generic_ivar_table(VALUE);
void rb_copy_generic_ivar(VALUE,VALUE);
+void rb_mark_generic_ivar(VALUE);
+void rb_mark_generic_ivar_tbl(void);
void rb_free_generic_ivar(VALUE);
VALUE rb_ivar_get(VALUE, ID);
VALUE rb_ivar_set(VALUE, ID, VALUE);
@@ -905,20 +878,20 @@ VALUE rb_cvar_get(VALUE, ID);
void rb_cv_set(VALUE, const char*, VALUE);
VALUE rb_cv_get(VALUE, const char*);
void rb_define_class_variable(VALUE, const char*, VALUE);
-VALUE rb_mod_class_variables(int, VALUE*, VALUE);
+VALUE rb_mod_class_variables(VALUE);
VALUE rb_mod_remove_cvar(VALUE, VALUE);
+/* version.c */
+void ruby_show_version(void);
+void ruby_show_copyright(void);
ID rb_frame_callee(void);
VALUE rb_str_succ(VALUE);
VALUE rb_time_succ(VALUE);
+void rb_frame_pop(void);
int rb_frame_method_id_and_class(ID *idp, VALUE *klassp);
VALUE rb_make_backtrace(void);
VALUE rb_make_exception(int, VALUE*);
-/* deprecated */
-DEPRECATED(void rb_frame_pop(void));
-
-
#if defined __GNUC__ && __GNUC__ >= 4
#pragma GCC visibility pop
#endif
diff --git a/include/ruby/io.h b/include/ruby/io.h
index b5ea2e9c95..cfdfaf1fb7 100644
--- a/include/ruby/io.h
+++ b/include/ruby/io.h
@@ -29,17 +29,7 @@ extern "C" {
#include "ruby/config.h"
#if defined(HAVE_POLL)
-# ifdef _AIX
-# define reqevents events
-# define rtnevents revents
-# endif
# include <poll.h>
-# ifdef _AIX
-# undef reqevents
-# undef rtnevents
-# undef events
-# undef revents
-# endif
# define RB_WAITFD_IN POLLIN
# define RB_WAITFD_PRI POLLPRI
# define RB_WAITFD_OUT POLLOUT
@@ -178,7 +168,6 @@ void rb_io_synchronized(rb_io_t*);
void rb_io_check_initialized(rb_io_t*);
void rb_io_check_closed(rb_io_t*);
VALUE rb_io_get_io(VALUE io);
-VALUE rb_io_check_io(VALUE io);
VALUE rb_io_get_write_io(VALUE io);
VALUE rb_io_set_write_io(VALUE io, VALUE w);
int rb_io_wait_readable(int);
diff --git a/include/ruby/missing.h b/include/ruby/missing.h
index 9b502cd3d8..bded5521d1 100644
--- a/include/ruby/missing.h
+++ b/include/ruby/missing.h
@@ -20,26 +20,22 @@ extern "C" {
#include "ruby/config.h"
#include <stddef.h>
-#include <math.h> /* for INFINITY and NAN */
#ifdef RUBY_EXTCONF_H
#include RUBY_EXTCONF_H
#endif
-#if !defined(HAVE_STRUCT_TIMEVAL) || !defined(HAVE_STRUCT_TIMESPEC)
-#if defined(HAVE_TIME_H)
-# include <time.h>
-#endif
#if defined(HAVE_SYS_TIME_H)
-# include <sys/time.h>
-#endif
-#endif
-
-#if !defined(HAVE_STRUCT_TIMEVAL)
+# include <sys/time.h>
+#elif !defined(_WIN32)
+# define time_t long
struct timeval {
time_t tv_sec; /* seconds */
long tv_usec; /* microseconds */
};
-#endif /* HAVE_STRUCT_TIMEVAL */
+#endif
+#if defined(HAVE_SYS_TYPES_H)
+# include <sys/types.h>
+#endif
#if !defined(HAVE_STRUCT_TIMESPEC)
struct timespec {
@@ -55,6 +51,11 @@ struct timezone {
};
#endif
+#if defined(HAVE___SYSCALL) && defined(__APPLE__)
+/* Mac OS X has __syscall but doen't defined in headers */
+off_t __syscall(quad_t number, ...);
+#endif
+
#ifdef RUBY_EXPORT
#undef RUBY_EXTERN
#endif
@@ -123,27 +124,20 @@ RUBY_EXTERN double lgamma_r(double, int *);
RUBY_EXTERN double cbrt(double);
#endif
-#if !defined(INFINITY) || !defined(NAN)
-union bytesequence4_or_float {
- unsigned char bytesequence[4];
- float float_value;
-};
-#endif
-
#ifdef INFINITY
# define HAVE_INFINITY
#else
/** @internal */
-RUBY_EXTERN const union bytesequence4_or_float rb_infinity;
-# define INFINITY (rb_infinity.float_value)
+RUBY_EXTERN const unsigned char rb_infinity[];
+# define INFINITY (*(float *)rb_infinity)
#endif
#ifdef NAN
# define HAVE_NAN
#else
/** @internal */
-RUBY_EXTERN const union bytesequence4_or_float rb_nan;
-# define NAN (rb_nan.float_value)
+RUBY_EXTERN const unsigned char rb_nan[];
+# define NAN (*(float *)rb_nan)
#endif
#ifndef isinf
diff --git a/include/ruby/oniguruma.h b/include/ruby/oniguruma.h
index cdc4382596..67773aa482 100644
--- a/include/ruby/oniguruma.h
+++ b/include/ruby/oniguruma.h
@@ -1,11 +1,10 @@
#ifndef ONIGURUMA_H
#define ONIGURUMA_H
/**********************************************************************
- oniguruma.h - Onigmo (Oniguruma-mod) (regular expression library)
+ oniguruma.h - Oniguruma (regular expression library)
**********************************************************************/
/*-
- * Copyright (c) 2002-2009 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
- * Copyright (c) 2011-2013 K.Takata <kentkt AT csc DOT jp>
+ * Copyright (c) 2002-2008 K.Kosako <sndgk393 AT ybb DOT ne DOT jp>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -39,8 +38,8 @@ extern "C" {
#define ONIGURUMA
#define ONIGURUMA_VERSION_MAJOR 5
-#define ONIGURUMA_VERSION_MINOR 13
-#define ONIGURUMA_VERSION_TEENY 5
+#define ONIGURUMA_VERSION_MINOR 9
+#define ONIGURUMA_VERSION_TEENY 2
#ifdef __cplusplus
# ifndef HAVE_PROTOTYPES
@@ -102,8 +101,6 @@ extern "C" {
#pragma GCC visibility push(default)
#endif
-#include <stddef.h> /* for size_t */
-
/* PART: character encoding */
#ifndef ONIG_ESCAPE_UCHAR_COLLISION
@@ -111,10 +108,9 @@ extern "C" {
#endif
typedef unsigned char OnigUChar;
-typedef unsigned int OnigCodePoint;
+typedef unsigned int OnigCodePoint;
typedef unsigned int OnigCtype;
typedef size_t OnigDistance;
-typedef ptrdiff_t OnigPosition;
#define ONIG_INFINITE_DISTANCE ~((OnigDistance )0)
@@ -175,7 +171,6 @@ typedef struct OnigEncodingTypeST {
OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
int ruby_encoding_index;
- unsigned int flags;
} OnigEncodingType;
typedef OnigEncodingType* OnigEncoding;
@@ -209,12 +204,17 @@ ONIG_EXTERN OnigEncodingType OnigEncodingASCII;
#define ONIGENC_CTYPE_ALNUM 13 /* alpha || digit */
#define ONIGENC_CTYPE_ASCII 14
#define ONIGENC_MAX_STD_CTYPE ONIGENC_CTYPE_ASCII
+#define ONIGENC_CTYPE_SPECIAL_MASK 256
+#define ONIGENC_CTYPE_S /* [\t\n\v\f\r\s] */ \
+ ONIGENC_CTYPE_SPECIAL_MASK | ONIGENC_CTYPE_SPACE
+#define ONIGENC_CTYPE_D /* [0-9] */ \
+ ONIGENC_CTYPE_SPECIAL_MASK | ONIGENC_CTYPE_DIGIT
+#define ONIGENC_CTYPE_W /* [0-9A-Za-z_] */ \
+ ONIGENC_CTYPE_SPECIAL_MASK | ONIGENC_CTYPE_WORD
+#define ONIGENC_CTYPE_SPECIAL_P(ctype) ((ctype) & ONIGENC_CTYPE_SPECIAL_MASK)
-/* flags */
-#define ONIGENC_FLAG_NONE 0U
-#define ONIGENC_FLAG_UNICODE 1U
-#define onig_enc_len(enc,p,e) ONIGENC_MBC_ENC_LEN(enc, p, e)
+#define onig_enc_len(enc,p,e) ONIGENC_MBC_ENC_LEN(enc, p, e)
#define ONIGENC_IS_UNDEF(enc) ((enc) == ONIG_ENCODING_UNDEF)
#define ONIGENC_IS_SINGLEBYTE(enc) (ONIGENC_MBC_MAXLEN(enc) == 1)
@@ -223,10 +223,6 @@ ONIG_EXTERN OnigEncodingType OnigEncodingASCII;
#define ONIGENC_IS_CODE_ASCII(code) ((code) < 128)
#define ONIGENC_IS_MBC_WORD(enc,s,end) \
ONIGENC_IS_CODE_WORD(enc,ONIGENC_MBC_TO_CODE(enc,s,end))
-#define ONIGENC_IS_MBC_ASCII_WORD(enc,s,end) \
- onigenc_ascii_is_code_ctype( \
- ONIGENC_MBC_TO_CODE(enc,s,end),ONIGENC_CTYPE_WORD,enc)
-#define ONIGENC_IS_UNICODE(enc) ((enc)->flags & ONIGENC_FLAG_UNICODE)
#define ONIGENC_NAME(enc) ((enc)->name)
@@ -340,7 +336,6 @@ int onigenc_str_bytelen_null P_((OnigEncoding enc, const OnigUChar* p));
/* config parameters */
#define ONIG_NREGION 10
#define ONIG_MAX_BACKREF_NUM 1000
-#define ONIG_MAX_CAPTURE_GROUP_NUM 32767
#define ONIG_MAX_REPEAT_NUM 100000
#define ONIG_MAX_MULTI_BYTE_RANGES_NUM 10000
/* constants */
@@ -355,7 +350,6 @@ typedef unsigned int OnigOptionType;
#define ONIG_OPTION_IGNORECASE 1U
#define ONIG_OPTION_EXTEND (ONIG_OPTION_IGNORECASE << 1)
#define ONIG_OPTION_MULTILINE (ONIG_OPTION_EXTEND << 1)
-#define ONIG_OPTION_DOTALL ONIG_OPTION_MULTILINE
#define ONIG_OPTION_SINGLELINE (ONIG_OPTION_MULTILINE << 1)
#define ONIG_OPTION_FIND_LONGEST (ONIG_OPTION_SINGLELINE << 1)
#define ONIG_OPTION_FIND_NOT_EMPTY (ONIG_OPTION_FIND_LONGEST << 1)
@@ -366,13 +360,7 @@ typedef unsigned int OnigOptionType;
#define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1)
#define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1)
#define ONIG_OPTION_POSIX_REGION (ONIG_OPTION_NOTEOL << 1)
-/* options (ctype range) */
-#define ONIG_OPTION_ASCII_RANGE (ONIG_OPTION_POSIX_REGION << 1)
-#define ONIG_OPTION_POSIX_BRACKET_ALL_RANGE (ONIG_OPTION_ASCII_RANGE << 1)
-#define ONIG_OPTION_WORD_BOUND_ALL_RANGE (ONIG_OPTION_POSIX_BRACKET_ALL_RANGE << 1)
-/* options (newline) */
-#define ONIG_OPTION_NEWLINE_CRLF (ONIG_OPTION_WORD_BOUND_ALL_RANGE << 1)
-#define ONIG_OPTION_MAXBIT ONIG_OPTION_NEWLINE_CRLF /* limit */
+#define ONIG_OPTION_MAXBIT ONIG_OPTION_POSIX_REGION /* limit */
#define ONIG_OPTION_ON(options,regopt) ((options) |= (regopt))
#define ONIG_OPTION_OFF(options,regopt) ((options) &= ~(regopt))
@@ -394,11 +382,9 @@ ONIG_EXTERN const OnigSyntaxType OnigSyntaxEmacs;
ONIG_EXTERN const OnigSyntaxType OnigSyntaxGrep;
ONIG_EXTERN const OnigSyntaxType OnigSyntaxGnuRegex;
ONIG_EXTERN const OnigSyntaxType OnigSyntaxJava;
-ONIG_EXTERN const OnigSyntaxType OnigSyntaxPerl58;
-ONIG_EXTERN const OnigSyntaxType OnigSyntaxPerl58_NG;
ONIG_EXTERN const OnigSyntaxType OnigSyntaxPerl;
+ONIG_EXTERN const OnigSyntaxType OnigSyntaxPerl_NG;
ONIG_EXTERN const OnigSyntaxType OnigSyntaxRuby;
-ONIG_EXTERN const OnigSyntaxType OnigSyntaxPython;
/* predefined syntaxes (see regsyntax.c) */
#define ONIG_SYNTAX_ASIS (&OnigSyntaxASIS)
@@ -408,11 +394,9 @@ ONIG_EXTERN const OnigSyntaxType OnigSyntaxPython;
#define ONIG_SYNTAX_GREP (&OnigSyntaxGrep)
#define ONIG_SYNTAX_GNU_REGEX (&OnigSyntaxGnuRegex)
#define ONIG_SYNTAX_JAVA (&OnigSyntaxJava)
-#define ONIG_SYNTAX_PERL58 (&OnigSyntaxPerl58)
-#define ONIG_SYNTAX_PERL58_NG (&OnigSyntaxPerl58_NG)
#define ONIG_SYNTAX_PERL (&OnigSyntaxPerl)
+#define ONIG_SYNTAX_PERL_NG (&OnigSyntaxPerl_NG)
#define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby)
-#define ONIG_SYNTAX_PYTHON (&OnigSyntaxPython)
/* default syntax */
ONIG_EXTERN const OnigSyntaxType* OnigDefaultSyntax;
@@ -450,12 +434,11 @@ ONIG_EXTERN const OnigSyntaxType* OnigDefaultSyntax;
#define ONIG_SYN_OP_ESC_OCTAL3 (1U<<28) /* \OOO */
#define ONIG_SYN_OP_ESC_X_HEX2 (1U<<29) /* \xHH */
#define ONIG_SYN_OP_ESC_X_BRACE_HEX8 (1U<<30) /* \x{7HHHHHHH} */
-#define ONIG_SYN_OP_ESC_O_BRACE_OCTAL (1U<<31) /* \o{OOO} */ /* NOTIMPL */
#define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE (1U<<0) /* \Q...\E */
#define ONIG_SYN_OP2_QMARK_GROUP_EFFECT (1U<<1) /* (?...) */
-#define ONIG_SYN_OP2_OPTION_PERL (1U<<2) /* (?imsxadlu), (?-imsx), (?^imsxalu) */
-#define ONIG_SYN_OP2_OPTION_RUBY (1U<<3) /* (?imxadu), (?-imx) */
+#define ONIG_SYN_OP2_OPTION_PERL (1U<<2) /* (?imsx),(?-imsx) */
+#define ONIG_SYN_OP2_OPTION_RUBY (1U<<3) /* (?imx), (?-imx) */
#define ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT (1U<<4) /* ?+,*+,++ */
#define ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL (1U<<5) /* {n,m}+ */
#define ONIG_SYN_OP2_CCLASS_SET_OP (1U<<6) /* [...&&..[..]..] */
@@ -473,17 +456,6 @@ ONIG_EXTERN const OnigSyntaxType* OnigDefaultSyntax;
/* #define ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS (1U<<18) */
#define ONIG_SYN_OP2_ESC_H_XDIGIT (1U<<19) /* \h, \H */
#define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE (1U<<20) /* \ */
-#define ONIG_SYN_OP2_ESC_CAPITAL_R_LINEBREAK (1U<<21) /* \R as (?>\x0D\x0A|[\x0A-\x0D\x{85}\x{2028}\x{2029}]) */
-#define ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER (1U<<22) /* \X as (?>\P{M}\p{M}*) */
-#define ONIG_SYN_OP2_ESC_V_VERTICAL_WHITESPACE (1U<<23) /* \v, \V -- Perl */ /* NOTIMPL */
-#define ONIG_SYN_OP2_ESC_H_HORIZONTAL_WHITESPACE (1U<<24) /* \h, \H -- Perl */ /* NOTIMPL */
-#define ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP (1U<<25) /* \K */
-#define ONIG_SYN_OP2_ESC_G_BRACE_BACKREF (1U<<26) /* \g{name}, \g{n} */
-#define ONIG_SYN_OP2_QMARK_SUBEXP_CALL (1U<<27) /* (?&name), (?n), (?R), (?0) */
-#define ONIG_SYN_OP2_QMARK_VBAR_BRANCH_RESET (1U<<28) /* (?|...) */ /* NOTIMPL */
-#define ONIG_SYN_OP2_QMARK_LPAREN_CONDITION (1U<<29) /* (?(cond)yes...|no...) */
-#define ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP (1U<<30) /* (?P<name>...), (?P=name), (?P>name) -- Python/PCRE */
-#define ONIG_SYN_OP2_OPTION_JAVA (1U<<31) /* (?idmsux), (?-idmsux) */ /* NOTIMPL */
/* syntax (behavior) */
#define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31) /* not implemented */
@@ -497,7 +469,6 @@ ONIG_EXTERN const OnigSyntaxType* OnigDefaultSyntax;
#define ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP (1U<<7) /* see doc/RE */
#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME (1U<<8) /* (?<x>)(?<x>) */
#define ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY (1U<<9) /* a{n}?=(?:a{n})? */
-#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME_CALL (1U<<10) /* (?<x>)(?<x>)(?&x) */
/* syntax (behavior) in char class [...] */
#define ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC (1U<<20) /* [^...] */
@@ -534,7 +505,7 @@ ONIG_EXTERN const OnigSyntaxType* OnigDefaultSyntax;
#define ONIGERR_UNDEFINED_BYTECODE -13
#define ONIGERR_UNEXPECTED_BYTECODE -14
#define ONIGERR_MATCH_STACK_LIMIT_OVER -15
-#define ONIGERR_DEFAULT_ENCODING_IS_NOT_SET -21
+#define ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED -21
#define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22
/* general error */
#define ONIGERR_INVALID_ARGUMENT -30
@@ -561,7 +532,6 @@ ONIG_EXTERN const OnigSyntaxType* OnigDefaultSyntax;
#define ONIGERR_INVALID_POSIX_BRACKET_TYPE -121
#define ONIGERR_INVALID_LOOK_BEHIND_PATTERN -122
#define ONIGERR_INVALID_REPEAT_RANGE_PATTERN -123
-#define ONIGERR_INVALID_CONDITION_PATTERN -124
/* values error (syntax error) */
#define ONIGERR_TOO_BIG_NUMBER -200
#define ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE -201
@@ -573,7 +543,6 @@ ONIG_EXTERN const OnigSyntaxType* OnigDefaultSyntax;
#define ONIGERR_TOO_BIG_BACKREF_NUMBER -207
#define ONIGERR_INVALID_BACKREF -208
#define ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED -209
-#define ONIGERR_TOO_SHORT_DIGITS -210
#define ONIGERR_TOO_LONG_WIDE_CHAR_VALUE -212
#define ONIGERR_EMPTY_GROUP_NAME -214
#define ONIGERR_INVALID_GROUP_NAME -215
@@ -585,7 +554,6 @@ ONIG_EXTERN const OnigSyntaxType* OnigDefaultSyntax;
#define ONIGERR_NEVER_ENDING_RECURSION -221
#define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY -222
#define ONIGERR_INVALID_CHAR_PROPERTY_NAME -223
-#define ONIGERR_TOO_MANY_CAPTURE_GROUPS -224
#define ONIGERR_INVALID_CODE_POINT_VALUE -400
#define ONIGERR_INVALID_WIDE_CHAR_VALUE -400
#define ONIGERR_TOO_BIG_WIDE_CHAR_VALUE -401
@@ -603,8 +571,8 @@ ONIG_EXTERN const OnigSyntaxType* OnigDefaultSyntax;
typedef struct OnigCaptureTreeNodeStruct {
int group; /* group number */
- OnigPosition beg;
- OnigPosition end;
+ int beg;
+ int end;
int allocated;
int num_childs;
struct OnigCaptureTreeNodeStruct** childs;
@@ -614,8 +582,8 @@ typedef struct OnigCaptureTreeNodeStruct {
struct re_registers {
int allocated;
int num_regs;
- OnigPosition* beg;
- OnigPosition* end;
+ int* beg;
+ int* end;
/* extended */
OnigCaptureTreeNode* history_root; /* capture history tree root */
};
@@ -721,7 +689,7 @@ typedef struct {
ONIG_EXTERN
int onig_init P_((void));
ONIG_EXTERN
-int onig_error_code_to_str PV_((OnigUChar* s, OnigPosition err_code, ...));
+int onig_error_code_to_str PV_((OnigUChar* s, int err_code, ...));
ONIG_EXTERN
void onig_set_warn_func P_((OnigWarnFunc f));
ONIG_EXTERN
@@ -729,7 +697,7 @@ void onig_set_verb_warn_func P_((OnigWarnFunc f));
ONIG_EXTERN
int onig_new P_((OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo));
ONIG_EXTERN
-int onig_reg_init P_((OnigRegex reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, const OnigSyntaxType* syntax));
+int onig_reg_init P_((regex_t* reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, const OnigSyntaxType* syntax));
ONIG_EXTERN
int onig_new_without_alloc P_((OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo));
ONIG_EXTERN
@@ -743,11 +711,9 @@ int onig_recompile P_((OnigRegex, const OnigUChar* pattern, const OnigUChar* pat
ONIG_EXTERN
int onig_recompile_deluxe P_((OnigRegex reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo));
ONIG_EXTERN
-OnigPosition onig_search P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option));
-ONIG_EXTERN
-OnigPosition onig_search_gpos P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* global_pos, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option));
+long onig_search P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option));
ONIG_EXTERN
-OnigPosition onig_match P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option));
+long onig_match P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option));
ONIG_EXTERN
OnigRegion* onig_region_new P_((void));
ONIG_EXTERN
@@ -777,7 +743,7 @@ int onig_number_of_capture_histories P_((OnigRegex reg));
ONIG_EXTERN
OnigCaptureTreeNode* onig_get_capture_tree P_((OnigRegion* region));
ONIG_EXTERN
-int onig_capture_tree_traverse P_((OnigRegion* region, int at, int(*callback_func)(int,OnigPosition,OnigPosition,int,int,void*), void* arg));
+int onig_capture_tree_traverse P_((OnigRegion* region, int at, int(*callback_func)(int,int,int,int,int,void*), void* arg));
ONIG_EXTERN
int onig_noname_group_capture_is_active P_((OnigRegex reg));
ONIG_EXTERN
diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h
index 833bd2d8de..2f97b33bc4 100644
--- a/include/ruby/ruby.h
+++ b/include/ruby/ruby.h
@@ -36,9 +36,6 @@ extern "C" {
#ifndef NOINLINE
# define NOINLINE(x) x
#endif
-#ifndef UNREACHABLE
-# define UNREACHABLE /* unreachable */
-#endif
#ifdef __GNUC__
#define PRINTF_ARGS(decl, string_index, first_to_check) \
@@ -73,26 +70,13 @@ extern "C" {
#pragma GCC visibility push(default)
#endif
-/* Make alloca work the best possible way. */
-#ifdef __GNUC__
-# ifndef atarist
-# ifndef alloca
-# define alloca __builtin_alloca
-# endif
-# endif /* atarist */
+#if defined(HAVE_ALLOCA_H)
+#include <alloca.h>
#else
-# ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-# else
# ifdef _AIX
#pragma alloca
-# else
-# ifndef alloca /* predefined by HP cc +Olibcalls */
-void *alloca();
-# endif
-# endif /* AIX */
-# endif /* HAVE_ALLOCA_H */
-#endif /* __GNUC__ */
+# endif
+#endif
#if defined HAVE_UINTPTR_T && 0
typedef uintptr_t VALUE;
@@ -114,7 +98,7 @@ typedef unsigned LONG_LONG ID;
# define SIZEOF_VALUE SIZEOF_LONG_LONG
# define PRI_VALUE_PREFIX PRI_LL_PREFIX
#else
-# error ---->> ruby requires sizeof(void*) == sizeof(long) or sizeof(LONG_LONG) to be compiled. <<----
+# error ---->> ruby requires sizeof(void*) == sizeof(long) to be compiled. <<----
#endif
typedef char ruby_check_sizeof_int[SIZEOF_INT == sizeof(int) ? 1 : -1];
@@ -133,18 +117,18 @@ typedef char ruby_check_sizeof_voidp[SIZEOF_VOIDP == sizeof(void*) ? 1 : -1];
#if defined PRIdPTR && !defined PRI_VALUE_PREFIX
#define PRIdVALUE PRIdPTR
+#define PRIiVALUE PRIiPTR
#define PRIoVALUE PRIoPTR
#define PRIuVALUE PRIuPTR
#define PRIxVALUE PRIxPTR
#define PRIXVALUE PRIXPTR
-#define PRIsVALUE PRIiPTR
#else
#define PRIdVALUE PRI_VALUE_PREFIX"d"
+#define PRIiVALUE PRI_VALUE_PREFIX"i"
#define PRIoVALUE PRI_VALUE_PREFIX"o"
#define PRIuVALUE PRI_VALUE_PREFIX"u"
#define PRIxVALUE PRI_VALUE_PREFIX"x"
#define PRIXVALUE PRI_VALUE_PREFIX"X"
-#define PRIsVALUE PRI_VALUE_PREFIX"i"
#endif
#ifndef PRI_VALUE_PREFIX
# define PRI_VALUE_PREFIX ""
@@ -311,16 +295,15 @@ NORETURN(void rb_out_of_int(SIGNED_VALUE num));
#endif
#if SIZEOF_INT < SIZEOF_LONG
+#define rb_long2int_internal(n, i) \
+ int (i) = (int)(n); \
+ if ((long)(i) != (n)) rb_out_of_int(n)
+#ifdef __GNUC__
+#define rb_long2int(n) __extension__ ({long i2l_n = (n); rb_long2int_internal(i2l_n, i2l_i); i2l_i;})
+#else
static inline int
-rb_long2int_inline(long n)
-{
- int i = (int)n;
- if ((long)i != n)
- rb_out_of_int(n);
-
- return i;
-}
-#define rb_long2int(n) rb_long2int_inline(n)
+rb_long2int(long n) {rb_long2int_internal(n, i); return i;}
+#endif
#else
#define rb_long2int(n) ((int)(n))
#endif
@@ -363,59 +346,11 @@ rb_long2int_inline(long n)
#define ID2SYM(x) (((VALUE)(x)<<RUBY_SPECIAL_SHIFT)|SYMBOL_FLAG)
#define SYM2ID(x) RSHIFT((unsigned long)(x),RUBY_SPECIAL_SHIFT)
-#ifndef USE_FLONUM
-#if SIZEOF_VALUE >= SIZEOF_DOUBLE
-#define USE_FLONUM 1
-#else
-#define USE_FLONUM 0
-#endif
-#endif
-
-#if USE_FLONUM
-#define FLONUM_P(x) ((((int)(SIGNED_VALUE)(x))&FLONUM_MASK) == FLONUM_FLAG)
-#else
-#define FLONUM_P(x) 0
-#endif
-
/* Module#methods, #singleton_methods and so on return Symbols */
#define USE_SYMBOL_AS_METHOD_NAME 1
-/*
-!USE_FLONUM
--------------------------
-...xxxx xxx1 Fixnum
-...0000 1110 Symbol
-...0000 0000 Qfalse
-...0000 0010 Qtrue
-...0000 0100 Qnil
-...0000 0110 Qundef
-
-USE_FLONUM
--------------------------
-...xxxx xxx1 Fixnum
-...xxxx xx10 Flonum
-...0000 1100 Symbol
-...0000 0000 Qfalse 0x00 = 0
-...0000 1000 Qnil 0x08 = 8
-...0001 0100 Qtrue 0x14 = 20
-...0011 0100 Qundef 0x34 = 52
- */
-
/* special constants - i.e. non-zero and non-fixnum constants */
enum ruby_special_consts {
-#if USE_FLONUM
- RUBY_Qfalse = 0x00,
- RUBY_Qtrue = 0x14,
- RUBY_Qnil = 0x08,
- RUBY_Qundef = 0x34,
-
- RUBY_IMMEDIATE_MASK = 0x07,
- RUBY_FIXNUM_FLAG = 0x01,
- RUBY_FLONUM_MASK = 0x03,
- RUBY_FLONUM_FLAG = 0x02,
- RUBY_SYMBOL_FLAG = 0x0c,
- RUBY_SPECIAL_SHIFT = 8
-#else
RUBY_Qfalse = 0,
RUBY_Qtrue = 2,
RUBY_Qnil = 4,
@@ -423,11 +358,8 @@ enum ruby_special_consts {
RUBY_IMMEDIATE_MASK = 0x03,
RUBY_FIXNUM_FLAG = 0x01,
- RUBY_FLONUM_MASK = 0x00, /* any values ANDed with FLONUM_MASK cannot be FLONUM_FLAG */
- RUBY_FLONUM_FLAG = 0x02,
RUBY_SYMBOL_FLAG = 0x0e,
RUBY_SPECIAL_SHIFT = 8
-#endif
};
#define Qfalse ((VALUE)RUBY_Qfalse)
@@ -436,14 +368,10 @@ enum ruby_special_consts {
#define Qundef ((VALUE)RUBY_Qundef) /* undefined value for placeholder */
#define IMMEDIATE_MASK RUBY_IMMEDIATE_MASK
#define FIXNUM_FLAG RUBY_FIXNUM_FLAG
-#if USE_FLONUM
-#define FLONUM_MASK RUBY_FLONUM_MASK
-#define FLONUM_FLAG RUBY_FLONUM_FLAG
-#endif
#define SYMBOL_FLAG RUBY_SYMBOL_FLAG
-#define RTEST(v) !(((VALUE)(v) & ~Qnil) == 0)
-#define NIL_P(v) !((VALUE)(v) != Qnil)
+#define RTEST(v) (((VALUE)(v) & ~Qnil) != 0)
+#define NIL_P(v) ((VALUE)(v) == Qnil)
#define CLASS_OF(v) rb_class_of((VALUE)(v))
@@ -512,8 +440,6 @@ enum ruby_value_type {
static inline int rb_type(VALUE obj);
#define TYPE(x) rb_type((VALUE)(x))
-/* RB_GC_GUARD_PTR() is an intermediate macro, and has no effect by
- * itself. don't use it directly */
#ifdef __GNUC__
#define RB_GC_GUARD_PTR(ptr) \
__extension__ ({volatile VALUE *rb_gc_guarded_ptr = (ptr); rb_gc_guarded_ptr;})
@@ -529,12 +455,6 @@ static inline volatile VALUE *rb_gc_guarded_ptr(volatile VALUE *ptr) {return ptr
#endif
#define RB_GC_GUARD(v) (*RB_GC_GUARD_PTR(&(v)))
-#ifdef __GNUC__
-#define RB_UNUSED_VAR(x) x __attribute__ ((unused))
-#else
-#define RB_UNUSED_VAR(x) x
-#endif
-
void rb_check_type(VALUE,int);
#define Check_Type(v,t) rb_check_type((VALUE)(v),(t))
@@ -581,80 +501,59 @@ void rb_set_errinfo(VALUE);
SIGNED_VALUE rb_num2long(VALUE);
VALUE rb_num2ulong(VALUE);
+#define NUM2LONG_internal(x) ((long)(FIXNUM_P(x) ? FIX2LONG(x) : rb_num2long(x)))
+#ifdef __GNUC__
+#define NUM2LONG(x) \
+ __extension__ ({VALUE num2long_x = (x); NUM2LONG_internal(num2long_x);})
+#else
static inline long
-rb_num2long_inline(VALUE x)
-{
- if (FIXNUM_P(x))
- return FIX2LONG(x);
- else
- return (long)rb_num2long(x);
-}
-#define NUM2LONG(x) rb_num2long_inline(x)
-static inline unsigned long
-rb_num2ulong_inline(VALUE x)
+NUM2LONG(VALUE x)
{
- if (FIXNUM_P(x))
- return (unsigned long)FIX2LONG(x);
- else
- return (unsigned long)rb_num2ulong(x);
+ return NUM2LONG_internal(x);
}
-#define NUM2ULONG(x) rb_num2ulong_inline(x)
+#endif
+#define NUM2ULONG(x) rb_num2ulong((VALUE)(x))
#if SIZEOF_INT < SIZEOF_LONG
long rb_num2int(VALUE);
long rb_fix2int(VALUE);
#define FIX2INT(x) ((int)rb_fix2int((VALUE)(x)))
-
+#define NUM2INT_internal(x) (FIXNUM_P(x) ? FIX2INT(x) : (int)rb_num2int(x))
+#ifdef __GNUC__
+#define NUM2INT(x) \
+ __extension__ ({VALUE num2int_x = (x); NUM2INT_internal(num2int_x);})
+#else
static inline int
-rb_num2int_inline(VALUE x)
+NUM2INT(VALUE x)
{
- if (FIXNUM_P(x))
- return FIX2INT(x);
- else
- return (int)rb_num2int(x);
+ return NUM2INT_internal(x);
}
-#define NUM2INT(x) rb_num2int_inline(x)
-
+#endif
unsigned long rb_num2uint(VALUE);
#define NUM2UINT(x) ((unsigned int)rb_num2uint(x))
unsigned long rb_fix2uint(VALUE);
#define FIX2UINT(x) ((unsigned int)rb_fix2uint(x))
-#else /* SIZEOF_INT < SIZEOF_LONG */
+#else
#define NUM2INT(x) ((int)NUM2LONG(x))
#define NUM2UINT(x) ((unsigned int)NUM2ULONG(x))
#define FIX2INT(x) ((int)FIX2LONG(x))
#define FIX2UINT(x) ((unsigned int)FIX2ULONG(x))
-#endif /* SIZEOF_INT < SIZEOF_LONG */
-
-short rb_num2short(VALUE);
-unsigned short rb_num2ushort(VALUE);
-short rb_fix2short(VALUE);
-unsigned short rb_fix2ushort(VALUE);
-#define FIX2SHORT(x) (rb_fix2short((VALUE)(x)))
-static inline short
-rb_num2short_inline(VALUE x)
-{
- if (FIXNUM_P(x))
- return FIX2SHORT(x);
- else
- return rb_num2short(x);
-}
-
-#define NUM2SHORT(x) rb_num2short_inline(x)
-#define NUM2USHORT(x) rb_num2ushort(x)
+#endif
#ifdef HAVE_LONG_LONG
LONG_LONG rb_num2ll(VALUE);
unsigned LONG_LONG rb_num2ull(VALUE);
+# define NUM2LL_internal(x) (FIXNUM_P(x) ? FIX2LONG(x) : rb_num2ll(x))
+# ifdef __GNUC__
+# define NUM2LL(x) \
+ __extension__ ({VALUE num2ll_x = (x); NUM2LL_internal(num2ll_x);})
+# else
static inline LONG_LONG
-rb_num2ll_inline(VALUE x)
+NUM2LL(VALUE x)
{
- if (FIXNUM_P(x))
- return FIX2LONG(x);
- else
- return rb_num2ll(x);
+ return NUM2LL_internal(x);
}
-# define NUM2LL(x) rb_num2ll_inline(x)
-# define NUM2ULL(x) rb_num2ull(x)
+# endif
+# define NUM2ULL(x) rb_num2ull((VALUE)(x))
#endif
#if defined(HAVE_LONG_LONG) && SIZEOF_OFF_T > SIZEOF_LONG
@@ -665,7 +564,7 @@ rb_num2ll_inline(VALUE x)
#if defined(HAVE_LONG_LONG) && SIZEOF_SIZE_T > SIZEOF_LONG
# define NUM2SIZET(x) ((size_t)NUM2ULL(x))
-# define NUM2SSIZET(x) ((ssize_t)NUM2LL(x))
+# define NUM2SSIZET(x) ((size_t)NUM2LL(x))
#else
# define NUM2SIZET(x) NUM2ULONG(x)
# define NUM2SSIZET(x) NUM2LONG(x)
@@ -678,9 +577,7 @@ VALUE rb_uint2big(VALUE);
VALUE rb_int2big(SIGNED_VALUE);
VALUE rb_newobj(void);
-VALUE rb_newobj_of(VALUE, VALUE);
#define NEWOBJ(obj,type) type *(obj) = (type*)rb_newobj()
-#define NEWOBJ_OF(obj,type,klass,flags) type *(obj) = (type*)rb_newobj_of(klass, flags)
#define OBJSETUP(obj,c,t) do {\
RBASIC(obj)->flags = (t);\
RBASIC(obj)->klass = (c);\
@@ -699,11 +596,7 @@ VALUE rb_newobj_of(VALUE, VALUE);
struct RBasic {
VALUE flags;
VALUE klass;
-}
-#ifdef __GNUC__
- __attribute__((aligned(sizeof(VALUE))))
-#endif
-;
+};
#define ROBJECT_EMBED_LEN_MAX 3
struct RObject {
@@ -745,95 +638,12 @@ struct RClass {
#define RMODULE_CONST_TBL(m) RCLASS_CONST_TBL(m)
#define RMODULE_M_TBL(m) RCLASS_M_TBL(m)
#define RMODULE_SUPER(m) RCLASS_SUPER(m)
-#define RMODULE_IS_OVERLAID FL_USER2
-#define RMODULE_IS_REFINEMENT FL_USER3
-#define RMODULE_INCLUDED_INTO_REFINEMENT FL_USER4
struct RFloat {
struct RBasic basic;
double float_value;
};
-
-VALUE rb_float_new_in_heap(double);
-
-#if USE_FLONUM
-#define RUBY_BIT_ROTL(v, n) (((v) << (n)) | ((v) >> ((sizeof(v) * 8) - n)))
-#define RUBY_BIT_ROTR(v, n) (((v) >> (n)) | ((v) << ((sizeof(v) * 8) - n)))
-
-static inline double
-rb_float_value(VALUE v)
-{
- if (FLONUM_P(v)) {
- if (v != (VALUE)0x8000000000000002) { /* LIKELY */
- union {
- double d;
- VALUE v;
- } t;
-
- VALUE b63 = (v >> 63);
- /* e: xx1... -> 011... */
- /* xx0... -> 100... */
- /* ^b63 */
- t.v = RUBY_BIT_ROTR((2 - b63) | (v & ~0x03), 3);
- return t.d;
- }
- else {
- return 0.0;
- }
- }
- else {
- return ((struct RFloat *)v)->float_value;
- }
-}
-
-static inline VALUE
-rb_float_new(double d)
-{
- union {
- double d;
- VALUE v;
- } t;
- int bits;
-
- t.d = d;
- bits = (int)((VALUE)(t.v >> 60) & 0x7);
- /* bits contains 3 bits of b62..b60. */
- /* bits - 3 = */
- /* b011 -> b000 */
- /* b100 -> b001 */
-
- if (t.v != 0x3000000000000000 /* 1.72723e-77 */ &&
- !((bits-3) & ~0x01)) {
- return (RUBY_BIT_ROTL(t.v, 3) & ~(VALUE)0x01) | 0x02;
- }
- else {
- if (t.v == (VALUE)0) {
- /* +0.0 */
- return 0x8000000000000002;
- }
- else {
- /* out of range */
- return rb_float_new_in_heap(d);
- }
- }
-}
-
-#else /* USE_FLONUM */
-
-static inline double
-rb_float_value(VALUE v)
-{
- return ((struct RFloat *)v)->float_value;
-}
-
-static inline VALUE
-rb_float_new(double d)
-{
- return rb_float_new_in_heap(d);
-}
-#endif
-
-#define RFLOAT_VALUE(v) rb_float_value(v)
+#define RFLOAT_VALUE(v) (RFLOAT(v)->float_value)
#define DBL2NUM(dbl) rb_float_new(dbl)
#define ELTS_SHARED FL_USER2
@@ -1109,8 +919,8 @@ struct RBignum {
#define RCOMPLEX(obj) (R_CAST(RComplex)(obj))
#define FL_SINGLETON FL_USER0
-#define FL_RESERVED1 (((VALUE)1)<<5)
-#define FL_RESERVED2 (((VALUE)1)<<6) /* will be used in the future GC */
+#define FL_MARK (((VALUE)1)<<5)
+#define FL_RESERVED (((VALUE)1)<<6) /* will be used in the future GC */
#define FL_FINALIZE (((VALUE)1)<<7)
#define FL_TAINT (((VALUE)1)<<8)
#define FL_UNTRUSTED (((VALUE)1)<<9)
@@ -1154,70 +964,71 @@ struct RBignum {
#define OBJ_TAINT(x) FL_SET((x), FL_TAINT)
#define OBJ_UNTRUSTED(x) (!!FL_TEST((x), FL_UNTRUSTED))
#define OBJ_UNTRUST(x) FL_SET((x), FL_UNTRUSTED)
-#define OBJ_INFECT(x,s) do { \
- if (FL_ABLE(x) && FL_ABLE(s)) \
- RBASIC(x)->flags |= RBASIC(s)->flags & \
- (FL_TAINT | FL_UNTRUSTED); \
-} while (0)
+#define OBJ_INFECT(x,s) do {if (FL_ABLE(x) && FL_ABLE(s)) RBASIC(x)->flags |= RBASIC(s)->flags & (FL_TAINT | FL_UNTRUSTED);} while (0)
-#define OBJ_FROZEN(x) (!!(FL_ABLE(x)?(RBASIC(x)->flags&(FL_FREEZE)):(FIXNUM_P(x)||FLONUM_P(x))))
+#define OBJ_FROZEN(x) (!!FL_TEST((x), FL_FREEZE))
#define OBJ_FREEZE(x) FL_SET((x), FL_FREEZE)
#if SIZEOF_INT < SIZEOF_LONG
# define INT2NUM(v) INT2FIX((int)(v))
# define UINT2NUM(v) LONG2FIX((unsigned int)(v))
#else
+# define INT2NUM_internal(v) (FIXABLE(v) ? INT2FIX(v) : rb_int2big(v))
+# ifdef __GNUC__
+# define INT2NUM(v) __extension__ ({int int2num_v = (v); INT2NUM_internal(int2num_v);})
+# else
static inline VALUE
-rb_int2num_inline(int v)
+INT2NUM(int v)
{
- if (FIXABLE(v))
- return INT2FIX(v);
- else
- return rb_int2big(v);
+ return INT2NUM_internal(v);
}
-#define INT2NUM(x) rb_int2num_inline(x)
+# endif
+# define UINT2NUM_internal(v) (POSFIXABLE(v) ? LONG2FIX(v) : rb_uint2big(v))
+# ifdef __GNUC__
+# define UINT2NUM(v) __extension__ ({unsigned int uint2num_v = (v); UINT2NUM_internal(uint2num_v);})
+# else
static inline VALUE
-rb_uint2num_inline(unsigned int v)
+UINT2NUM(unsigned int v)
{
- if (POSFIXABLE(v))
- return LONG2FIX(v);
- else
- return rb_uint2big(v);
+ return UINT2NUM_internal(v);
}
-#define UINT2NUM(x) rb_uint2num_inline(x)
+# endif
#endif
+#define LONG2NUM_internal(v) (FIXABLE(v) ? LONG2FIX(v) : rb_int2big(v))
+#ifdef __GNUC__
+# define LONG2NUM(v) __extension__ ({long long2num_v = (v); LONG2NUM_internal(long2num_v);})
+#else
static inline VALUE
-rb_long2num_inline(long v)
+LONG2NUM(long v)
{
- if (FIXABLE(v))
- return LONG2FIX(v);
- else
- return rb_int2big(v);
+ return LONG2NUM_internal(v);
}
-#define LONG2NUM(x) rb_long2num_inline(x)
+#endif
+#define ULONG2NUM_internal(v) (POSFIXABLE(v) ? LONG2FIX(v) : rb_uint2big(v))
+#ifdef __GNUC__
+# define ULONG2NUM(v) __extension__ ({unsigned long ulong2num_v = (v); ULONG2NUM_internal(ulong2num_v);})
+#else
static inline VALUE
-rb_ulong2num_inline(unsigned long v)
+ULONG2NUM(unsigned long v)
{
- if (POSFIXABLE(v))
- return LONG2FIX(v);
- else
- return rb_uint2big(v);
+ return ULONG2NUM_internal(v);
}
-#define ULONG2NUM(x) rb_ulong2num_inline(x)
+#endif
+#define NUM2CHR_internal(x) (((TYPE(x) == T_STRING)&&(RSTRING_LEN(x)>=1))?\
+ RSTRING_PTR(x)[0]:(char)(NUM2INT(x)&0xff))
+#ifdef __GNUC__
+# define NUM2CHR(x) __extension__ ({VALUE num2chr_x = (x); NUM2CHR_internal(num2chr_x);})
+#else
static inline char
-rb_num2char_inline(VALUE x)
+NUM2CHR(VALUE x)
{
- if ((TYPE(x) == T_STRING) && (RSTRING_LEN(x)>=1))
- return RSTRING_PTR(x)[0];
- else
- return (char)(NUM2INT(x) & 0xff);
+ return NUM2CHR_internal(x);
}
-#define NUM2CHR(x) rb_num2char_inline(x)
-
+#endif
#define CHR2FIX(x) INT2FIX((long)((x)&0xff))
#define ALLOC_N(type,n) ((type*)xmalloc2((n),sizeof(type)))
@@ -1257,7 +1068,6 @@ VALUE rb_define_module_under(VALUE, const char*);
void rb_include_module(VALUE,VALUE);
void rb_extend_object(VALUE,VALUE);
-void rb_prepend_module(VALUE,VALUE);
struct rb_global_variable;
@@ -1304,7 +1114,6 @@ ID rb_intern(const char*);
ID rb_intern2(const char*, long);
ID rb_intern_str(VALUE str);
const char *rb_id2name(ID);
-ID rb_check_id(volatile VALUE *);
ID rb_to_id(VALUE);
VALUE rb_id2str(ID);
@@ -1344,13 +1153,9 @@ VALUE rb_funcall(VALUE, ID, int, ...);
VALUE rb_funcall2(VALUE, ID, int, const VALUE*);
VALUE rb_funcall3(VALUE, ID, int, const VALUE*);
VALUE rb_funcall_passing_block(VALUE, ID, int, const VALUE*);
-VALUE rb_funcall_with_block(VALUE, ID, int, const VALUE*, VALUE);
int rb_scan_args(int, const VALUE*, const char*, ...);
VALUE rb_call_super(int, const VALUE*);
-/* rb_scan_args() format allows ':' for optional hash */
-#define HAVE_RB_SCAN_ARGS_OPTIONAL_HASH 1
-
VALUE rb_gv_set(const char*, VALUE);
VALUE rb_gv_get(const char*);
VALUE rb_iv_get(VALUE, const char*);
@@ -1372,7 +1177,6 @@ NORETURN(void rb_sys_fail_str(VALUE));
NORETURN(void rb_mod_sys_fail(VALUE, const char*));
NORETURN(void rb_mod_sys_fail_str(VALUE, VALUE));
NORETURN(void rb_iter_break(void));
-NORETURN(void rb_iter_break_value(VALUE));
NORETURN(void rb_exit(int));
NORETURN(void rb_notimplement(void));
VALUE rb_syserr_new(int, const char *);
@@ -1411,6 +1215,21 @@ NORETURN(void rb_throw_obj(VALUE,VALUE));
VALUE rb_require(const char*);
+#ifdef __ia64
+void ruby_init_stack(volatile VALUE*, void*);
+#define ruby_init_stack(addr) ruby_init_stack((addr), rb_ia64_bsp())
+#else
+void ruby_init_stack(volatile VALUE*);
+#endif
+#define RUBY_INIT_STACK \
+ VALUE variable_in_this_stack_frame; \
+ ruby_init_stack(&variable_in_this_stack_frame);
+void ruby_init(void);
+void *ruby_options(int, char**);
+int ruby_run_node(void *);
+int ruby_exec_node(void *);
+int ruby_executable_node(void *n, int *status);
+
RUBY_EXTERN VALUE rb_mKernel;
RUBY_EXTERN VALUE rb_mComparable;
RUBY_EXTERN VALUE rb_mEnumerable;
@@ -1504,7 +1323,6 @@ rb_class_of(VALUE obj)
{
if (IMMEDIATE_P(obj)) {
if (FIXNUM_P(obj)) return rb_cFixnum;
- if (FLONUM_P(obj)) return rb_cFloat;
if (obj == Qtrue) return rb_cTrueClass;
if (SYMBOL_P(obj)) return rb_cSymbol;
}
@@ -1520,20 +1338,17 @@ rb_type(VALUE obj)
{
if (IMMEDIATE_P(obj)) {
if (FIXNUM_P(obj)) return T_FIXNUM;
- if (FLONUM_P(obj)) return T_FLOAT;
- if (obj == Qtrue) return T_TRUE;
+ if (obj == Qtrue) return T_TRUE;
if (SYMBOL_P(obj)) return T_SYMBOL;
if (obj == Qundef) return T_UNDEF;
}
else if (!RTEST(obj)) {
- if (obj == Qnil) return T_NIL;
+ if (obj == Qnil) return T_NIL;
if (obj == Qfalse) return T_FALSE;
}
return BUILTIN_TYPE(obj);
}
-#define RB_FLOAT_TYPE_P(obj) (FLONUM_P(obj) || (!SPECIAL_CONST_P(obj) && BUILTIN_TYPE(obj) == T_FLOAT))
-
#define RB_TYPE_P(obj, type) ( \
((type) == T_FIXNUM) ? FIXNUM_P(obj) : \
((type) == T_TRUE) ? ((obj) == Qtrue) : \
@@ -1541,7 +1356,6 @@ rb_type(VALUE obj)
((type) == T_NIL) ? ((obj) == Qnil) : \
((type) == T_UNDEF) ? ((obj) == Qundef) : \
((type) == T_SYMBOL) ? SYMBOL_P(obj) : \
- ((type) == T_FLOAT) ? RB_FLOAT_TYPE_P(obj) : \
(!SPECIAL_CONST_P(obj) && BUILTIN_TYPE(obj) == (type)))
#ifdef __GNUC__
@@ -1572,11 +1386,18 @@ rb_special_const_p(VALUE obj)
static char *dln_libs_to_be_linked[] = { EXTLIB, 0 };
#endif
+#if (defined(__APPLE__) || defined(__NeXT__)) && defined(__MACH__)
+#define RUBY_GLOBAL_SETUP /* use linker option to link startup code with ObjC support */
+#else
+#define RUBY_GLOBAL_SETUP
+#endif
+
+void ruby_sysinit(int *, char ***);
+
#define RUBY_VM 1 /* YARV */
#define HAVE_NATIVETHREAD
int ruby_native_thread_p(void);
-/* traditional set_trace_func events */
#define RUBY_EVENT_NONE 0x0000
#define RUBY_EVENT_LINE 0x0001
#define RUBY_EVENT_CLASS 0x0002
@@ -1586,25 +1407,24 @@ int ruby_native_thread_p(void);
#define RUBY_EVENT_C_CALL 0x0020
#define RUBY_EVENT_C_RETURN 0x0040
#define RUBY_EVENT_RAISE 0x0080
-#define RUBY_EVENT_ALL 0x00ff
-
-/* for TracePoint extended events */
-#define RUBY_EVENT_B_CALL 0x0100
-#define RUBY_EVENT_B_RETURN 0x0200
-#define RUBY_EVENT_THREAD_BEGIN 0x0400
-#define RUBY_EVENT_THREAD_END 0x0800
-#define RUBY_EVENT_TRACEPOINT_ALL 0xFFFF
+#define RUBY_EVENT_ALL 0xffff
+#define RUBY_EVENT_VM 0x10000
+#define RUBY_EVENT_SWITCH 0x20000
+#define RUBY_EVENT_COVERAGE 0x40000
-/* special events */
-#define RUBY_EVENT_SPECIFIED_LINE 0x10000
-#define RUBY_EVENT_SWITCH 0x20000
-#define RUBY_EVENT_COVERAGE 0x40000
+typedef unsigned int rb_event_flag_t;
+typedef void (*rb_event_hook_func_t)(rb_event_flag_t, VALUE data, VALUE, ID, VALUE klass);
-typedef unsigned long rb_event_flag_t;
-typedef void (*rb_event_hook_func_t)(rb_event_flag_t evflag, VALUE data, VALUE self, ID mid, VALUE klass);
+typedef struct rb_event_hook_struct {
+ rb_event_flag_t flag;
+ rb_event_hook_func_t func;
+ VALUE data;
+ struct rb_event_hook_struct *next;
+} rb_event_hook_t;
#define RB_EVENT_HOOKS_HAVE_CALLBACK_DATA 1
-void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data);
+void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events,
+ VALUE data);
int rb_remove_event_hook(rb_event_hook_func_t func);
/* locale insensitive functions */
@@ -1653,80 +1473,14 @@ unsigned long ruby_strtoul(const char *str, char **endptr, int base);
PRINTF_ARGS(int ruby_snprintf(char *str, size_t n, char const *fmt, ...), 3, 4);
int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
-#ifndef RUBY_DONT_SUBST
-#include "ruby/subst.h"
-#endif
-
-/**
- * @defgroup embed CRuby Embedding APIs
- * CRuby interpreter APIs. These are APIs to embed MRI interpreter into your
- * program.
- * These functions are not a part of Ruby extention library API.
- * Extension libraries of Ruby should not depend on these functions.
- * @{
- */
-
-/** @defgroup ruby1 ruby(1) implementation
- * A part of the implementation of ruby(1) command.
- * Other programs that embed Ruby interpreter do not always need to use these
- * functions.
- * @{
- */
-
-void ruby_sysinit(int *argc, char ***argv);
-void ruby_init(void);
-void* ruby_options(int argc, char** argv);
-int ruby_executable_node(void *n, int *status);
-int ruby_run_node(void *n);
-
-/* version.c */
-void ruby_show_version(void);
-void ruby_show_copyright(void);
-
-
-/*! A convenience macro to call ruby_init_stack(). Must be placed just after
- * variable declarations */
-#define RUBY_INIT_STACK \
- VALUE variable_in_this_stack_frame; \
- ruby_init_stack(&variable_in_this_stack_frame);
-/*! @} */
-
-#ifdef __ia64
-void ruby_init_stack(volatile VALUE*, void*);
-#define ruby_init_stack(addr) ruby_init_stack((addr), rb_ia64_bsp())
-#else
-void ruby_init_stack(volatile VALUE*);
-#endif
-#define Init_stack(addr) ruby_init_stack(addr)
-
-int ruby_setup(void);
-int ruby_cleanup(volatile int);
-
-void ruby_finalize(void);
-NORETURN(void ruby_stop(int));
-
-void ruby_set_stack_size(size_t);
-int ruby_stack_check(void);
-size_t ruby_stack_length(VALUE**);
-
-int ruby_exec_node(void *n);
-
-void ruby_script(const char* name);
-void ruby_set_script_name(VALUE name);
-
-void ruby_prog_init(void);
-void ruby_set_argv(int, char**);
-void *ruby_process_options(int, char**);
-void ruby_init_loadpath(void);
-void ruby_incpush(const char*);
-void ruby_sig_finalize(void);
-
-/*! @} */
-
#if defined __GNUC__ && __GNUC__ >= 4
#pragma GCC visibility pop
#endif
+#ifndef RUBY_DONT_SUBST
+#include "ruby/subst.h"
+#endif
+
#if defined(__cplusplus)
#if 0
{ /* satisfy cc-mode */
diff --git a/include/ruby/st.h b/include/ruby/st.h
index c2294a92c1..50f2a75328 100644
--- a/include/ruby/st.h
+++ b/include/ruby/st.h
@@ -36,7 +36,7 @@ typedef unsigned long st_data_t;
#elif SIZEOF_LONG_LONG == SIZEOF_VOIDP
typedef unsigned LONG_LONG st_data_t;
#else
-# error ---->> st.c requires sizeof(void*) == sizeof(long) or sizeof(LONG_LONG) to be compiled. <<----
+# error ---->> st.c requires sizeof(void*) == sizeof(long) to be compiled. <<----
#endif
#define ST_DATA_T_DEFINED
@@ -91,16 +91,8 @@ struct st_table {
__extension__
#endif
st_index_t num_entries : ST_INDEX_BITS - 1;
- union {
- struct {
- struct st_table_entry **bins;
- struct st_table_entry *head, *tail;
- } big;
- struct {
- struct st_packed_entry *entries;
- st_index_t real_entries;
- } packed;
- } as;
+ struct st_table_entry **bins;
+ struct st_table_entry *head, *tail;
};
#define st_is_member(table,key) st_lookup((table),(key),(st_data_t *)0)
@@ -121,10 +113,7 @@ int st_insert(st_table *, st_data_t, st_data_t);
int st_insert2(st_table *, st_data_t, st_data_t, st_data_t (*)(st_data_t));
int st_lookup(st_table *, st_data_t, st_data_t *);
int st_get_key(st_table *, st_data_t, st_data_t *);
-typedef int st_update_callback_func(st_data_t *key, st_data_t *value, st_data_t arg, int existing);
-int st_update(st_table *table, st_data_t key, st_update_callback_func *func, st_data_t arg);
int st_foreach(st_table *, int (*)(ANYARGS), st_data_t);
-int st_foreach_check(st_table *, int (*)(ANYARGS), st_data_t, st_data_t);
int st_reverse_foreach(st_table *, int (*)(ANYARGS), st_data_t);
void st_add_direct(st_table *, st_data_t, st_data_t);
void st_free_table(st_table *);
diff --git a/include/ruby/subst.h b/include/ruby/subst.h
index 1f0e6db5a4..6c01b25900 100644
--- a/include/ruby/subst.h
+++ b/include/ruby/subst.h
@@ -16,4 +16,5 @@
#undef close
#define close ruby_close
#endif
+
#endif
diff --git a/include/ruby/thread.h b/include/ruby/thread.h
deleted file mode 100644
index fb9057c70f..0000000000
--- a/include/ruby/thread.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/**********************************************************************
-
- thread.h -
-
- $Author: matz $
- created at: Tue Jul 10 17:35:43 JST 2012
-
- Copyright (C) 2007 Yukihiro Matsumoto
-
-**********************************************************************/
-
-#ifndef RUBY_THREAD_H
-#define RUBY_THREAD_H 1
-
-#if defined(__cplusplus)
-extern "C" {
-#if 0
-} /* satisfy cc-mode */
-#endif
-#endif
-
-#include "ruby/intern.h"
-
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
-
-void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1);
-
-void *rb_thread_call_without_gvl(void *(*func)(void *), void *data1,
- rb_unblock_function_t *ubf, void *data2);
-void *rb_thread_call_without_gvl2(void *(*func)(void *), void *data1,
- rb_unblock_function_t *ubf, void *data2);
-
-#define RUBY_CALL_WO_GVL_FLAG_SKIP_CHECK_INTS_AFTER 0x01
-#define RUBY_CALL_WO_GVL_FLAG_SKIP_CHECK_INTS_
-
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
-
-#if defined(__cplusplus)
-#if 0
-{ /* satisfy cc-mode */
-#endif
-} /* extern "C" { */
-#endif
-
-#endif /* RUBY_THREAD_H */
diff --git a/include/ruby/util.h b/include/ruby/util.h
index 02aa643916..e82f537728 100644
--- a/include/ruby/util.h
+++ b/include/ruby/util.h
@@ -62,7 +62,7 @@ void ruby_unsetenv(const char *);
#undef setenv
#undef unsetenv
#define setenv(name,val) ruby_setenv((name),(val))
-#define unsetenv(name,val) ruby_unsetenv(name)
+#define unsetenv(name,val) ruby_unsetenv(name);
char *ruby_strdup(const char *);
#undef strdup
diff --git a/include/ruby/version.h b/include/ruby/version.h
index b41b64fe66..458efff320 100644
--- a/include/ruby/version.h
+++ b/include/ruby/version.h
@@ -30,9 +30,9 @@
#define RUBY_BIRTH_DAY 24
/* API version */
-#define RUBY_API_VERSION_MAJOR 2
-#define RUBY_API_VERSION_MINOR 0
-#define RUBY_API_VERSION_TEENY 0
+#define RUBY_API_VERSION_MAJOR 1
+#define RUBY_API_VERSION_MINOR 9
+#define RUBY_API_VERSION_TEENY 1
#define RUBY_API_VERSION_CODE (RUBY_API_VERSION_MAJOR*10000+RUBY_API_VERSION_MINOR*100+RUBY_API_VERSION_TEENY)
#ifdef RUBY_EXTERN
diff --git a/include/ruby/win32.h b/include/ruby/win32.h
index a190355a9c..99382f48e3 100644
--- a/include/ruby/win32.h
+++ b/include/ruby/win32.h
@@ -20,16 +20,16 @@ extern "C" {
*
*/
-/*
- * Definitions for NT port of Perl
- */
+//
+// Definitions for NT port of Perl
+//
-/*
- * Ok now we can include the normal include files.
- */
+//
+// Ok now we can include the normal include files.
+//
-/* #include <stdarg.h> conflict with varargs.h? */
+// #include <stdarg.h> conflict with varargs.h?
#if !defined(WSAAPI)
#if defined(__cplusplus) && defined(_MSC_VER)
extern "C++" { /* template without extern "C++" */
@@ -44,10 +44,12 @@ extern "C++" { /* template without extern "C++" */
#endif
#endif
-/*
- * We're not using Microsoft's "extensions" to C for
- * Structured Exception Handling (SEH) so we can nuke these
- */
+#define NT 1 /* deprecated */
+
+//
+// We're not using Microsoft's "extensions" to C for
+// Structured Exception Handling (SEH) so we can nuke these
+//
#undef try
#undef except
#undef finally
@@ -103,8 +105,14 @@ typedef unsigned int uintptr_t;
# include <unistd.h>
#endif
+#ifdef WIN95
+extern DWORD rb_w32_osid(void);
+#define rb_w32_iswinnt() (rb_w32_osid() == VER_PLATFORM_WIN32_NT)
+#define rb_w32_iswin95() (rb_w32_osid() == VER_PLATFORM_WIN32_WINDOWS)
+#else
#define rb_w32_iswinnt() TRUE
#define rb_w32_iswin95() FALSE
+#endif
#define WNOHANG -1
@@ -222,7 +230,7 @@ struct msghdr {
int msg_flags;
};
-extern DWORD rb_w32_osid(void);
+#define NtInitialize ruby_sysinit
extern int rb_w32_cmdvector(const char *, char ***);
extern rb_pid_t rb_w32_pipe_exec(const char *, const char *, int, int *, int *);
extern int flock(int fd, int oper);
@@ -259,14 +267,13 @@ extern struct servent *WSAAPI rb_w32_getservbyname(const char *, const char *);
extern struct servent *WSAAPI rb_w32_getservbyport(int, const char *);
extern int rb_w32_socketpair(int, int, int, int *);
extern char * rb_w32_getcwd(char *, int);
-extern char * rb_w32_ugetenv(const char *);
extern char * rb_w32_getenv(const char *);
extern int rb_w32_rename(const char *, const char *);
extern int rb_w32_urename(const char *, const char *);
extern char **rb_w32_get_environ(void);
extern void rb_w32_free_environ(char **);
extern int rb_w32_map_errno(DWORD);
-extern const char *WSAAPI rb_w32_inet_ntop(int,const void *,char *,size_t);
+extern char * WSAAPI rb_w32_inet_ntop(int,void *,char *,size_t);
extern DWORD rb_w32_osver(void);
extern int chown(const char *, int, int);
@@ -308,20 +315,6 @@ extern FILE *rb_w32_fsopen(const char *, const char *, int);
#endif
#include <float.h>
-
-#if defined _MSC_VER && _MSC_VER >= 1800 && defined INFINITY
-#pragma warning(push)
-#pragma warning(disable:4756)
-static inline float
-rb_infinity_float(void)
-{
- return INFINITY;
-}
-#pragma warning(pop)
-#undef INFINITY
-#define INFINITY rb_infinity_float()
-#endif
-
#if !defined __MINGW32__ || defined __NO_ISOCEXT
#ifndef isnan
#define isnan(x) _isnan(x)
@@ -388,9 +381,9 @@ scalb(double a, long b)
#define S_IXOTH 0001
#endif
-/*
- * define this so we can do inplace editing
- */
+//
+// define this so we can do inplace editing
+//
#define SUFFIX
@@ -431,9 +424,9 @@ extern int rb_w32_fseeko(FILE *stream, off_t offset, int whence);
#define ftello rb_w32_ftello
#endif
-/*
- * stubs
- */
+//
+// stubs
+//
extern int ioctl (int, int, ...);
extern rb_uid_t getuid (void);
extern rb_uid_t geteuid (void);
@@ -578,16 +571,7 @@ extern char *rb_w32_strerror(int);
# define EREMOTE WSAEREMOTE
#endif
-#define F_DUPFD 0
-#if 0
-#define F_GETFD 1
-#define F_SETFD 2
-#define F_GETFL 3
-#endif
-#define F_SETFL 4
-#if 0
-#define FD_CLOEXEC 1 /* F_GETFD, F_SETFD */
-#endif
+#define F_SETFL 1
#define O_NONBLOCK 1
#undef FD_SET
@@ -715,10 +699,8 @@ struct tms {
int rb_w32_times(struct tms *);
-struct tm *gmtime_r(const time_t *, struct tm *);
-struct tm *localtime_r(const time_t *, struct tm *);
-
/* thread stuff */
+HANDLE GetCurrentThreadHandle(void);
int rb_w32_sleep(unsigned long msec);
int rb_w32_putc(int, FILE*);
int rb_w32_getc(FILE*);
@@ -736,8 +718,6 @@ long rb_w32_write_console(uintptr_t, int); /* use uintptr_t instead of VALUE bec
int WINAPI rb_w32_Sleep(unsigned long msec);
int rb_w32_wait_events_blocking(HANDLE *events, int num, DWORD timeout);
int rb_w32_time_subtract(struct timeval *rest, const struct timeval *wait);
-int rb_w32_wrap_io_handle(HANDLE, int);
-int rb_w32_unwrap_io_handle(int);
/*
== ***CAUTION***
@@ -754,7 +734,6 @@ uintptr_t rb_w32_asynchronize(asynchronous_func_t func, uintptr_t self, int argc
#endif
#ifdef __MINGW_ATTRIB_PURE
-/* License: Ruby's */
/* get rid of bugs in math.h of mingw */
#define frexp(_X, _Y) __extension__ ({\
int intpart_frexp_bug = intpart_frexp_bug;\
@@ -762,7 +741,6 @@ uintptr_t rb_w32_asynchronize(asynchronous_func_t func, uintptr_t self, int argc
*(_Y) = intpart_frexp_bug;\
result_frexp_bug;\
})
-/* License: Ruby's */
#define modf(_X, _Y) __extension__ ({\
double intpart_modf_bug = intpart_modf_bug;\
double result_modf_bug = modf((_X), &intpart_modf_bug);\
@@ -778,7 +756,7 @@ uintptr_t rb_w32_asynchronize(asynchronous_func_t func, uintptr_t self, int argc
} /* extern "C" { */
#endif
-#if defined(__MINGW64__)
+#ifdef __MINGW64__
/*
* Use powl() instead of broken pow() of x86_64-w64-mingw32.
* This workaround will fix test failures in test_bignum.rb,
@@ -789,24 +767,6 @@ rb_w32_pow(double x, double y)
{
return powl(x, y);
}
-#elif defined(__MINGW64_VERSION_MAJOR)
-/*
- * Set floating point precision for pow() of mingw-w64 x86.
- * With default precision the result is not proper on WinXP.
- */
-static inline double
-rb_w32_pow(double x, double y)
-{
- double r;
- unsigned int default_control = _controlfp(0, 0);
- _controlfp(_PC_64, _MCW_PC);
- r = pow(x, y);
- /* Restore setting */
- _controlfp(default_control, _MCW_PC);
- return r;
-}
-#endif
-#if defined(__MINGW64_VERSION_MAJOR) || defined(__MINGW64__)
#define pow rb_w32_pow
#endif
diff --git a/inits.c b/inits.c
index fe0aade090..73b9eb4283 100644
--- a/inits.c
+++ b/inits.c
@@ -60,6 +60,5 @@ rb_call_inits(void)
CALL(Rational);
CALL(Complex);
CALL(version);
- CALL(vm_trace);
}
#undef CALL
diff --git a/insns.def b/insns.def
index 02465ad4af..49faec5d09 100644
--- a/insns.def
+++ b/insns.def
@@ -1,4 +1,4 @@
-/** ##skip -*- mode:c; style:ruby; coding: utf-8 -*-
+/** ##skip -*- mode:c; style:ruby; coding: shift_jis -*-
insns.def - YARV instruction definitions
$Author: $
@@ -46,81 +46,107 @@ nop
/**
@c variable
- @e Get local variable (pointed by `idx' and `level').
- 'level' indicates the nesting depth from the current block.
- @j level, idx で指定されたローカル変数の値をスタックに置く。
- level はブロックのネストレベルで、何段上かを示す。
+ @e get local variable value (which is pointed by idx).
+ @j idx Ŏw肳ꂽ[JϐX^bNɒuB
*/
DEFINE_INSN
getlocal
-(lindex_t idx, rb_num_t level)
+(lindex_t idx)
()
(VALUE val)
{
- int i, lev = (int)level;
- VALUE *ep = GET_EP();
-
- for (i = 0; i < lev; i++) {
- ep = GET_PREV_EP(ep);
- }
- val = *(ep - idx);
+ val = *(GET_LFP() - idx);
}
/**
@c variable
- @e Set a local variable (pointed to by 'idx') as val.
- 'level' indicates the nesting depth from the current block.
- @j level, idx で指定されたローカル変数の値を val にする。
- level はブロックのネストレベルで、何段上かを示す。
+ @e set local variable value (which is pointed by idx) as val.
+ @j idx Ŏw肳ꂽ[Jϐ val ɐݒ肷B
*/
DEFINE_INSN
setlocal
-(lindex_t idx, rb_num_t level)
+(lindex_t idx)
(VALUE val)
()
{
- int i, lev = (int)level;
- VALUE *ep = GET_EP();
-
- for (i = 0; i < lev; i++) {
- ep = GET_PREV_EP(ep);
- }
- *(ep - idx) = val;
+ (*(GET_LFP() - idx)) = val;
}
/**
@c variable
- @e Get value of special local variable ($~, $_, ..).
- @j 特殊なローカル変数($~, $_, ...)の値を得る。
+ @e get special local variable ($~, $_, ..) value.
+ @j ȃ[Jϐi$~, $_, ...j̒l𓾂B
*/
DEFINE_INSN
getspecial
-(rb_num_t key, rb_num_t type)
+(VALUE key, rb_num_t type)
()
(VALUE val)
{
- val = vm_getspecial(th, GET_LEP(), key, type);
+ val = vm_getspecial(th, GET_LFP(), key, type);
}
/**
@c variable
- @e Set value of special local variable ($~, $_, ...) to obj.
- @j 特別なローカル変数($~, $_, ...)の値を設定する。
+ @e set special local variable ($~, $_, ...) value as obj.
+ @j ʂȃ[Jϐi$~, $_, ...j̒lݒ肷B
*/
DEFINE_INSN
setspecial
-(rb_num_t key)
+(VALUE key)
(VALUE obj)
()
{
- lep_svar_set(th, GET_LEP(), key, obj);
+ lfp_svar_set(th, GET_LFP(), key, obj);
+}
+
+/**
+ @c variable
+ @e get block local variable(which is pointed by idx and level).
+ level means nest level of block, and specify how above this variable.
+ @j level, idx Ŏw肳ꂽubN[Jϐ̒lX^bNɒuB
+ level ̓ubÑlXgxŁAiォB
+ */
+DEFINE_INSN
+getdynamic
+(dindex_t idx, rb_num_t level)
+()
+(VALUE val)
+{
+ rb_num_t i;
+ VALUE *dfp2 = GET_DFP();
+ for (i = 0; i < level; i++) {
+ dfp2 = GET_PREV_DFP(dfp2);
+ }
+ val = *(dfp2 - idx);
+}
+
+/**
+ @c variable
+ @e set block local variable(which is pointed by 'idx') as val.
+ level means nest level of block, and specify how above this variable.
+ @j level, idx Ŏw肳ꂽubN[Jϐ̒l val ɂB
+ level ̓ubÑlXgxŁAiォB
+ */
+DEFINE_INSN
+setdynamic
+(dindex_t idx, rb_num_t level)
+(VALUE val)
+()
+{
+ rb_num_t i;
+ VALUE *dfp2 = GET_DFP();
+ for (i = 0; i < level; i++) {
+ dfp2 = GET_PREV_DFP(dfp2);
+ }
+ *(dfp2 - idx) = val;
}
/**
@c variable
- @e Get value of instance variable id of self.
- If is_local is not 0, get value of class local variable.
- @j self のインスタンス変数 id の値を得る。
+ @e get instance variable id of obj.
+ if is_local is not 0, search as class local variable.
+ @j self ̃CX^Xϐ id ̒l𓾂B
*/
DEFINE_INSN
getinstancevariable
@@ -128,14 +154,14 @@ getinstancevariable
()
(VALUE val)
{
- val = vm_getinstancevariable(GET_SELF(), id, ic);
+ val = vm_getivar(GET_SELF(), id, ic);
}
/**
@c variable
- @e Set value of instance variable id of self to val.
- If is_local is not 0, set value of class local variable.
- @j self のインスタンス変数 id を val にする。
+ @e set instance variable id of obj as val.
+ if is_local is not 0, search as class local variable.
+ @j self ̃CX^Xϐ id val ɂB
*/
DEFINE_INSN
setinstancevariable
@@ -143,13 +169,13 @@ setinstancevariable
(VALUE val)
()
{
- vm_setinstancevariable(GET_SELF(), id, val, ic);
+ vm_setivar(GET_SELF(), id, val, ic);
}
/**
@c variable
- @e Get value of class variable id of klass as val.
- @j 現在のスコープのクラス変数 id の値を得る。
+ @e get class variable id of klass as val.
+ @j ݂̃XR[ṽNXϐ id ̒l𓾂B
*/
DEFINE_INSN
getclassvariable
@@ -157,14 +183,14 @@ getclassvariable
()
(VALUE val)
{
- NODE *cref = rb_vm_get_cref(GET_ISEQ(), GET_EP());
- val = rb_cvar_get(vm_get_cvar_base(cref, GET_CFP()), id);
+ NODE * const cref = vm_get_cref(GET_ISEQ(), GET_LFP(), GET_DFP());
+ val = rb_cvar_get(vm_get_cvar_base(cref), id);
}
/**
@c variable
- @e Set value of class variable id of klass as val.
- @j klass のクラス変数 id を val にする。
+ @e set class variable id of klass as val.
+ @j klass ̃NXϐ id val ɂB
*/
DEFINE_INSN
setclassvariable
@@ -172,21 +198,21 @@ setclassvariable
(VALUE val)
()
{
- NODE *cref = rb_vm_get_cref(GET_ISEQ(), GET_EP());
- rb_cvar_set(vm_get_cvar_base(cref, GET_CFP()), id, val);
+ NODE * const cref = vm_get_cref(GET_ISEQ(), GET_LFP(), GET_DFP());
+ rb_cvar_set(vm_get_cvar_base(cref), id, val);
}
/**
@c variable
@e
- Get constant variable id. If klass is Qnil, constants
- are searched in the current scope. If klass is Qfalse, constants
- are searched as top level constants. Otherwise, get constant under klass
+ get constant variable id. if klass is Qnil, constant
+ are searched in current scope. if klass is Qfalse, constant as
+ top level constant. otherwise, get constant under klass
class or module.
- @j 定数 id の値を得る。
- klass が Qnil なら、そのスコープで得られる定数の値を得る。
- Qfalse なら、トップレベルスコープを得る。
- それ以外なら、klass クラスの下の定数を得る。
+ @j 萔 id ̒l𓾂B
+ klass Qnil ȂÃXR[vœ萔̒l𓾂B
+ Qfalse ȂAgbvxXR[v𓾂B
+ ȊOȂAklass NX̉̒萔𓾂B
*/
DEFINE_INSN
getconstant
@@ -200,15 +226,15 @@ getconstant
/**
@c variable
@e
- Set constant variable id. If klass is Qfalse, constant
+ set constant variable id. if klass is Qfalse, constant
is able to access in this scope. if klass is Qnil, set
top level constant. otherwise, set constant under klass
class or module.
- @j 定数 id の値を val にする。
- klass が Qfalse なら、そのスコープで得られる定数 id の値を設定する。
- Qnil なら、トップレベルスコープの値を設定する。
- それ以外なら、klass クラスの下の定数を設定する。
+ @j 萔 id ̒l val ɂB
+ klass Qfalse ȂÃXR[vœ萔 id ̒lݒ肷B
+ Qnil ȂAgbvxXR[v̒lݒ肷B
+ ȊOȂAklass NX̉̒萔ݒ肷B
*/
DEFINE_INSN
setconstant
@@ -224,7 +250,7 @@ setconstant
/**
@c variable
@e get global variable id.
- @j グローバル変数 id の値を得る。
+ @j O[oϐ id ̒l𓾂B
*/
DEFINE_INSN
getglobal
@@ -238,7 +264,7 @@ getglobal
/**
@c variable
@e set global variable id as val.
- @j グローバル変数 id の値を設定する。
+ @j O[oϐ id ̒lݒ肷B
*/
DEFINE_INSN
setglobal
@@ -257,7 +283,7 @@ setglobal
/**
@c put
@e put nil to stack.
- @j スタックに nil をプッシュする。
+ @j X^bN nil vbVB
*/
DEFINE_INSN
putnil
@@ -271,7 +297,7 @@ putnil
/**
@c put
@e put self.
- @j スタックに self をプッシュする。
+ @j X^bN self vbVB
*/
DEFINE_INSN
putself
@@ -286,7 +312,7 @@ putself
@c put
@e put some object.
i.e. Fixnum, true, false, nil, and so on.
- @j オブジェクト val をスタックにプッシュする。
+ @j IuWFNg val X^bNɃvbVB
i.e. Fixnum, true, false, nil, and so on.
*/
DEFINE_INSN
@@ -301,8 +327,8 @@ putobject
/**
@c put
@e put special object. "value_type" is for expansion.
- @j 特別なオブジェクト val をスタックにプッシュする。
- オブジェクトの種類は value_type による.
+ @j ʂȃIuWFNg val X^bNɃvbVB
+ IuWFNg̎ނ value_type ɂD
*/
DEFINE_INSN
putspecialobject
@@ -317,10 +343,10 @@ putspecialobject
val = rb_mRubyVMFrozenCore;
break;
case VM_SPECIAL_OBJECT_CBASE:
- val = vm_get_cbase(GET_ISEQ(), GET_EP());
+ val = vm_get_cbase(GET_ISEQ(), GET_LFP(), GET_DFP());
break;
case VM_SPECIAL_OBJECT_CONST_BASE:
- val = vm_get_const_base(GET_ISEQ(), GET_EP());
+ val = vm_get_const_base(GET_ISEQ(), GET_LFP(), GET_DFP());
break;
default:
rb_bug("putspecialobject insn: unknown value_type");
@@ -344,7 +370,7 @@ putiseq
/**
@c put
@e put string val. string will be copied.
- @j 文字列をコピーしてスタックにプッシュする。
+ @j Rs[ăX^bNɃvbVB
*/
DEFINE_INSN
putstring
@@ -358,7 +384,7 @@ putstring
/**
@c put
@e put concatenate strings
- @j スタックトップの文字列を n 個連結し,結果をスタックにプッシュする。
+ @j X^bNgbv̕ n ˜ACʂX^bNɃvbVB
*/
DEFINE_INSN
concatstrings
@@ -379,7 +405,7 @@ concatstrings
/**
@c put
@e to_str
- @j to_str の結果をスタックにプッシュする。
+ @j to_str ̌ʂX^bNɃvbVB
*/
DEFINE_INSN
tostring
@@ -393,8 +419,8 @@ tostring
/**
@c put
@e to Regexp
- @j 文字列 str を正規表現にコンパイルしてスタックにプッシュする。
- コンパイル時,opt を正規表現のオプションとする。
+ @j str 𐳋K\ɃRpCăX^bNɃvbVB
+ RpCCopt 𐳋K\̃IvVƂB
*/
DEFINE_INSN
toregexp
@@ -416,7 +442,7 @@ toregexp
/**
@c put
@e put new array.
- @j 新しい配列をスタック上の num 個の値で初期化して生成しプッシュする。
+ @j VzX^bN num ‚̒lŏĐvbVB
*/
DEFINE_INSN
newarray
@@ -431,7 +457,7 @@ newarray
/**
@c put
@e dup array
- @j 配列 ary を dup してスタックにプッシュする。
+ @j z ary dup ăX^bNɃvbVB
*/
DEFINE_INSN
duparray
@@ -445,13 +471,13 @@ duparray
/**
@c put
@e expand array to num objects.
- @j スタックトップのオブジェクトが配列であれば、それを展開する。
- 配列オブジェクトの要素数が num以下ならば、代わりに nil を積む。num以上なら、
- num以上の要素は切り捨てる。
- 配列オブジェクトでなければ、num - 1 個の nil を積む。
- もし flag が真なら、残り要素の配列を積む
- flag: 0x01 - 最後を配列に
- flag: 0x02 - postarg 用
+ @j X^bNgbṽIuWFNgzł΁AWJB
+ zIuWFNg̗vf numȉȂ΁A nil ςށBnumȏȂA
+ numȏ̗vf͐؂̂ĂB
+ zIuWFNgłȂ΁Anum - 1 ‚ nil ςށB
+ flag ^ȂAcvf̔zς
+ flag: 0x01 - Ōz
+ flag: 0x02 - postarg p
flag: 0x04 - reverse?
*/
DEFINE_INSN
@@ -466,7 +492,7 @@ expandarray
/**
@c put
@e concat two arrays
- @j 二つの配列 ary1, ary2 を連結しスタックへプッシュする。
+ @j ‚̔z ary1, ary2 AX^bNփvbVB
*/
DEFINE_INSN
concatarray
@@ -495,7 +521,7 @@ concatarray
/**
@c put
@e splat array
- @j 配列 ary に対して to_a を呼び出す。
+ @j z ary ɑ΂ to_a ĂяoB
*/
DEFINE_INSN
splatarray
@@ -515,9 +541,49 @@ splatarray
/**
@c put
+ @e check value is included in ary
+ @j z ary ɗvf obj Ă邩ǂ`FbNBcase/when ŗpB
+ */
+DEFINE_INSN
+checkincludearray
+(VALUE flag)
+(VALUE obj, VALUE ary)
+(VALUE obj, VALUE result)
+{
+ int i;
+ result = Qfalse;
+
+ if (TYPE(ary) != T_ARRAY) {
+ ary = rb_Array(ary);
+ }
+
+ if (flag == Qtrue) {
+ /* NODE_CASE */
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ /* TODO: fix me (use another method dispatch) */
+ if (RTEST(rb_funcall2(RARRAY_PTR(ary)[i], idEqq, 1, &obj))) {
+ result = Qtrue;
+ break;
+ }
+ }
+ }
+ else {
+ obj = Qfalse;
+ /* NODE_WHEN */
+ for (i = 0; i < RARRAY_LEN(ary); i++) {
+ if (RTEST(RARRAY_PTR(ary)[i])) {
+ obj = result = Qtrue;
+ break;
+ }
+ }
+ }
+}
+
+/**
+ @c put
@e put new Hash.
- @j 新しいハッシュをスタックトップの n 個を初期値として生成する。
- n はキーと値のペアなので 2 の倍数でなければならない。
+ @j VnbVX^bNgbv n ‚lƂĐB
+ n ̓L[ƒl̃yAȂ̂ 2 ̔{łȂ΂ȂȂB
*/
DEFINE_INSN
newhash
@@ -526,11 +592,6 @@ newhash
(VALUE val) // inc += 1 - num;
{
rb_num_t i;
-
- if(RUBY_DTRACE_HASH_CREATE_ENABLED()) {
- RUBY_DTRACE_HASH_CREATE(num, rb_sourcefile(), rb_sourceline());
- }
-
val = rb_hash_new();
for (i = num; i > 0; i -= 2) {
@@ -544,7 +605,7 @@ newhash
/**
@c put
@e put new Range object.(Range.new(low, high, flag))
- @j Range.new(low, high, flag) のようなオブジェクトを生成しスタックにプッシュする。
+ @j Range.new(low, high, flag) ̂悤ȃIuWFNg𐶐X^bNɃvbVB
*/
DEFINE_INSN
newrange
@@ -562,7 +623,7 @@ newrange
/**
@c stack
@e pop from stack.
- @j スタックから一つポップする。
+ @j X^bNƒ|bvB
*/
DEFINE_INSN
pop
@@ -570,14 +631,14 @@ pop
(VALUE val)
()
{
- (void)val;
+ val = val;
/* none */
}
/**
@c stack
@e duplicate stack top.
- @j スタックトップをコピーしてスタックにプッシュする。
+ @j X^bNgbvRs[ăX^bNɃvbVB
*/
DEFINE_INSN
dup
@@ -591,7 +652,7 @@ dup
/**
@c stack
@e duplicate stack top n elements
- @j スタックトップの n 個をコピーしてスタックにプッシュする。
+ @j X^bNgbv n ‚Rs[ăX^bNɃvbVB
*/
DEFINE_INSN
dupn
@@ -611,7 +672,7 @@ dupn
/**
@c stack
@e swap top 2 vals
- @j スタックトップの 2 つの値を交換する。
+ @j X^bNgbv 2 ‚̒lB
*/
DEFINE_INSN
swap
@@ -625,7 +686,7 @@ swap
/**
@c stack
@e for stack caching.
- @j スタックキャッシングの状態を調整するために必要な命令。
+ @j X^bNLbVȌԂ𒲐邽߂ɕKvȖ߁B
*/
DEFINE_INSN
reput
@@ -639,7 +700,7 @@ reput
/**
@c stack
@e get nth stack value from stack top
- @j スタックトップから n 個目をスタックにプッシュする。
+ @j X^bNgbv n –ڂX^bNɃvbVB
*/
DEFINE_INSN
topn
@@ -653,7 +714,7 @@ topn
/**
@c stack
@e set Nth stack entry to stack top
- @j スタックトップの値を n 個目のスタックにコピー
+ @j X^bNgbv̒l n –ڂ̃X^bNɃRs[
*/
DEFINE_INSN
setn
@@ -667,7 +728,7 @@ setn
/**
@c stack
@e empt current stack
- @j current stack を空にする。
+ @j current stack ɂB
*/
DEFINE_INSN
adjuststack
@@ -686,7 +747,7 @@ adjuststack
/**
@c setting
@e defined?
- @j defined? を行う。
+ @j defined? sB
*/
DEFINE_INSN
defined
@@ -695,7 +756,7 @@ defined
(VALUE val)
{
VALUE klass;
- enum defined_type expr_type = 0;
+ const char *expr_type = 0;
enum defined_type type = (enum defined_type)op_type;
val = Qnil;
@@ -703,47 +764,48 @@ defined
switch (type) {
case DEFINED_IVAR:
if (rb_ivar_defined(GET_SELF(), SYM2ID(obj))) {
- expr_type = DEFINED_IVAR;
+ expr_type = "instance-variable";
}
break;
case DEFINED_IVAR2:
- klass = vm_get_cbase(GET_ISEQ(), GET_EP());
+ klass = vm_get_cbase(GET_ISEQ(), GET_LFP(), GET_DFP());
break;
case DEFINED_GVAR:
if (rb_gvar_defined(rb_global_entry(SYM2ID(obj)))) {
- expr_type = DEFINED_GVAR;
+ expr_type = "global-variable";
}
break;
- case DEFINED_CVAR: {
- NODE *cref = rb_vm_get_cref(GET_ISEQ(), GET_EP());
- klass = vm_get_cvar_base(cref, GET_CFP());
+ case DEFINED_CVAR:
+ {
+ NODE *cref = vm_get_cref(GET_ISEQ(), GET_LFP(), GET_DFP());
+ klass = vm_get_cvar_base(cref);
if (rb_cvar_defined(klass, SYM2ID(obj))) {
- expr_type = DEFINED_CVAR;
+ expr_type = "class variable";
}
break;
- }
+ }
case DEFINED_CONST:
klass = v;
if (vm_get_ev_const(th, GET_ISEQ(), klass, SYM2ID(obj), 1)) {
- expr_type = DEFINED_CONST;
+ expr_type = "constant";
}
break;
case DEFINED_FUNC:
klass = CLASS_OF(v);
if (rb_method_boundp(klass, SYM2ID(obj), 0)) {
- expr_type = DEFINED_METHOD;
+ expr_type = "method";
}
break;
case DEFINED_METHOD:{
VALUE klass = CLASS_OF(v);
- const rb_method_entry_t *me = rb_method_entry(klass, SYM2ID(obj), 0);
+ const rb_method_entry_t *me = rb_method_entry(klass, SYM2ID(obj));
if (me) {
if (!(me->flag & NOEX_PRIVATE)) {
if (!((me->flag & NOEX_PROTECTED) &&
!rb_obj_is_kind_of(GET_SELF(),
rb_class_real(klass)))) {
- expr_type = DEFINED_METHOD;
+ expr_type = "method";
}
}
}
@@ -752,32 +814,37 @@ defined
VALUE r;
args[0] = obj; args[1] = Qfalse;
- r = rb_check_funcall(v, idRespond_to_missing, 2, args);
- if (r != Qundef && RTEST(r))
- expr_type = DEFINED_METHOD;
+ r = rb_check_funcall(v, rb_intern("respond_to_missing?"), 2, args);
+ if (r != Qundef && RTEST(r))
+ expr_type = "method";
}
break;
}
case DEFINED_YIELD:
if (GET_BLOCK_PTR()) {
- expr_type = DEFINED_YIELD;
+ expr_type = "yield";
}
break;
case DEFINED_ZSUPER:{
- rb_call_info_t cit;
- if (vm_search_superclass(GET_CFP(), GET_ISEQ(), Qnil, &cit) == 0) {
- VALUE klass = cit.klass;
- ID id = cit.mid;
- if (rb_method_boundp(klass, id, 0)) {
- expr_type = DEFINED_ZSUPER;
+ rb_iseq_t *iseq = GET_ISEQ();
+ while (iseq) {
+ if (iseq->defined_method_id) {
+ break;
+ }
+ iseq = iseq->parent_iseq;
+ }
+ if (iseq) {
+ VALUE klass = vm_search_normal_superclass(iseq->klass, GET_SELF());
+ if (rb_method_boundp(klass, iseq->defined_method_id, 0)) {
+ expr_type = "super";
}
}
break;
}
case DEFINED_REF:{
- val = vm_getspecial(th, GET_LEP(), Qfalse, FIX2INT(obj));
+ val = vm_getspecial(th, GET_LFP(), Qfalse, FIX2INT(obj));
if (val != Qnil) {
- expr_type = DEFINED_GVAR;
+ expr_type = "global-variable";
}
break;
}
@@ -787,7 +854,7 @@ defined
}
if (expr_type != 0) {
if (needstr != Qfalse) {
- val = rb_iseq_defined_string(expr_type);
+ val = rb_str_new2(expr_type);
}
else {
val = Qtrue;
@@ -797,44 +864,8 @@ defined
/**
@c setting
- @e check `target' matches `pattern'.
- `flag & VM_CHECKMATCH_TYPE_MASK' describe how to check pattern.
- VM_CHECKMATCH_TYPE_WHEN: ignore target and check pattern is truthy.
- VM_CHECKMATCH_TYPE_CASE: check `patten === target'.
- VM_CHECKMATCH_TYPE_RESCUE: check `pattern.kind_op?(Module) && pattern == target'.
- if `flag & VM_CHECKMATCH_ARRAY' is not 0, then `patten' is array of patterns.
- @j see above comments.
- */
-DEFINE_INSN
-checkmatch
-(rb_num_t flag)
-(VALUE target, VALUE pattern)
-(VALUE result)
-{
- enum vm_check_match_type checkmatch_type =
- (enum vm_check_match_type)(flag & VM_CHECKMATCH_TYPE_MASK);
- result = Qfalse;
-
- if (flag & VM_CHECKMATCH_ARRAY) {
- int i;
- for (i = 0; i < RARRAY_LEN(pattern); i++) {
- if (RTEST(check_match(RARRAY_PTR(pattern)[i], target, checkmatch_type))) {
- result = Qtrue;
- break;
- }
- }
- }
- else {
- if (RTEST(check_match(pattern, target, checkmatch_type))) {
- result = Qtrue;
- }
- }
-}
-
-/**
- @c setting
@e trace
- @j trace 用の命令。
+ @j trace p̖߁B
*/
DEFINE_INSN
trace
@@ -844,29 +875,7 @@ trace
{
rb_event_flag_t flag = (rb_event_flag_t)nf;
- if (RUBY_DTRACE_METHOD_ENTRY_ENABLED() ||
- RUBY_DTRACE_METHOD_RETURN_ENABLED() ||
- RUBY_DTRACE_CMETHOD_ENTRY_ENABLED() ||
- RUBY_DTRACE_CMETHOD_RETURN_ENABLED()) {
-
- switch(flag) {
- case RUBY_EVENT_CALL:
- RUBY_DTRACE_METHOD_ENTRY_HOOK(th, 0, 0);
- break;
- case RUBY_EVENT_C_CALL:
- RUBY_DTRACE_CMETHOD_ENTRY_HOOK(th, 0, 0);
- break;
- case RUBY_EVENT_RETURN:
- RUBY_DTRACE_METHOD_RETURN_HOOK(th, 0, 0);
- break;
- case RUBY_EVENT_C_RETURN:
- RUBY_DTRACE_CMETHOD_RETURN_HOOK(th, 0, 0);
- break;
- }
- }
-
- EXEC_EVENT_HOOK(th, flag, GET_SELF(), 0, 0 /* id and klass are resolved at callee */,
- (flag & (RUBY_EVENT_RETURN | RUBY_EVENT_B_RETURN)) ? TOPN(0) : Qundef);
+ EXEC_EVENT_HOOK(th, flag, GET_SELF(), 0, 0 /* TODO: id, klass */);
}
/**********************************************************/
@@ -878,29 +887,23 @@ trace
@e
enter class definition scope. if super is Qfalse, and clsas
"klass" is defined, it's redefine. otherwise, define "klass" class.
- @j クラス定義スコープへ移行する。
- もし super が Qfalse で klassクラスが定義されていれば再定義である。
- そうでなければ、klass クラスを定義する。
+ @j NX`XR[vֈڍsB
+ super Qfalse klassNX`Ă΍Ē`łB
+ łȂ΁Aklass NX`B
*/
DEFINE_INSN
defineclass
-(ID id, ISEQ class_iseq, rb_num_t flags)
+(ID id, ISEQ class_iseq, rb_num_t define_type)
(VALUE cbase, VALUE super)
(VALUE val)
{
VALUE klass;
- rb_vm_defineclass_type_t type = VM_DEFINECLASS_TYPE(flags);
- switch (type) {
- case VM_DEFINECLASS_TYPE_CLASS:
+ switch ((int)define_type) {
+ case 0: /* scoped: class Foo::Bar */
+ case 3: /* no scope: class Bar */
/* val is dummy. classdef returns class scope value */
- if (VM_DEFINECLASS_HAS_SUPERCLASS_P(flags) &&
- !RB_TYPE_P(super, T_CLASS)) {
- rb_raise(rb_eTypeError, "superclass must be a Class (%s given)",
- rb_obj_classname(super));
- }
-
if (super == Qnil) {
super = rb_cObject;
}
@@ -911,9 +914,8 @@ defineclass
rb_autoload_load(cbase, id);
if ((klass = vm_search_const_defined_class(cbase, id)) != 0) {
/* already exist */
- klass = VM_DEFINECLASS_SCOPED_P(flags) ?
- rb_public_const_get_at(klass, id) : rb_const_get_at(klass, id);
- if (!RB_TYPE_P(klass, T_CLASS)) {
+ klass = define_type == 0 ? rb_public_const_get_at(klass, id) : rb_const_get_at(klass, id);
+ if (TYPE(klass) != T_CLASS) {
rb_raise(rb_eTypeError, "%s is not a class", rb_id2name(id));
}
@@ -935,12 +937,13 @@ defineclass
rb_class_inherited(super, klass);
}
break;
- case VM_DEFINECLASS_TYPE_SINGLETON_CLASS:
+ case 1:
/* val is dummy. classdef returns class scope value */
/* super is dummy */
klass = rb_singleton_class(cbase);
break;
- case VM_DEFINECLASS_TYPE_MODULE:
+ case 2: /* scoped: module Foo::Bar or module ::Bar */
+ case 5: /* no scope: module Bar */
/* val is dummy. classdef returns class scope value */
/* super is dummy */
@@ -948,10 +951,9 @@ defineclass
/* find klass */
if ((klass = vm_search_const_defined_class(cbase, id)) != 0) {
- klass = VM_DEFINECLASS_SCOPED_P(flags) ?
- rb_public_const_get_at(klass, id) : rb_const_get_at(klass, id);
+ klass = define_type == 2 ? rb_public_const_get_at(klass, id) : rb_const_get_at(klass, id);
/* already exist */
- if (!RB_TYPE_P(klass, T_MODULE)) {
+ if (TYPE(klass) != T_MODULE) {
rb_raise(rb_eTypeError, "%s is not a module", rb_id2name(id));
}
}
@@ -963,16 +965,16 @@ defineclass
}
break;
default:
- rb_bug("unknown defineclass type: %d", (int)type);
+ rb_bug("unknown defineclass type: %d", (int)define_type);
}
COPY_CREF(class_iseq->cref_stack, vm_cref_push(th, klass, NOEX_PUBLIC, NULL));
/* enter scope */
- vm_push_frame(th, class_iseq, VM_FRAME_MAGIC_CLASS,
- klass, 0, VM_ENVVAL_BLOCK_PTR(GET_BLOCK_PTR()),
- class_iseq->iseq_encoded, GET_SP(),
- class_iseq->local_size, 0);
+ vm_push_frame(th, class_iseq,
+ VM_FRAME_MAGIC_CLASS, klass, (VALUE) GET_BLOCK_PTR(),
+ class_iseq->iseq_encoded, GET_SP(), 0,
+ class_iseq->local_size);
RESTORE_REGS();
INC_VM_STATE_VERSION();
@@ -986,74 +988,85 @@ defineclass
/**
@c method/iterator
- @e invoke method.
- @j メソッド呼び出しを行う。ci に必要な情報が格納されている。
+ @e obj.send(id, args..) # args.size => num
+ @j \bhĂяosB
+ obj.send(id, args..) # args.size => num
+ flag & VM_CALL_ARGS_SPLAT_BIT != 0 -> splat last arg
+ flag & VM_CALL_ARGS_BLOCKARG_BIT != 0 -> Proc as Block
+ flag & VM_CALL_FCALL_BIT != 0 -> FCALL ( func() )
+ flag & VM_CALL_VCALL_BIT != 0 -> VCALL ( func )
+ ...
*/
DEFINE_INSN
send
-(CALL_INFO ci)
+(ID op_id, rb_num_t op_argc, ISEQ blockiseq, rb_num_t op_flag, IC ic)
(...)
-(VALUE val) // inc += - (int)(ci->orig_argc + ((ci->flag & VM_CALL_ARGS_BLOCKARG) ? 1 : 0));
+(VALUE val) // inc += - (int)(op_argc + ((op_flag & VM_CALL_ARGS_BLOCKARG_BIT) ? 1 : 0));
{
- ci->argc = ci->orig_argc;
- ci->blockptr = 0;
- vm_caller_setup_args(th, reg_cfp, ci);
- vm_search_method(ci, ci->recv = TOPN(ci->argc));
- CALL_METHOD(ci);
-}
+ const rb_method_entry_t *me;
+ VALUE recv, klass;
+ rb_block_t *blockptr = 0;
+ VALUE flag = op_flag;
+ int num = caller_setup_args(th, GET_CFP(), flag, (int)op_argc,
+ (rb_iseq_t *)blockiseq, &blockptr);
+ ID id = op_id;
-/**
- @c optimize
- @e Invoke method without block, splat
- @j Invoke method without block, splat
- */
-DEFINE_INSN
-opt_send_simple
-(CALL_INFO ci)
-(...)
-(VALUE val) // inc += -ci->orig_argc;
-{
- vm_search_method(ci, ci->recv = TOPN(ci->argc));
- CALL_METHOD(ci);
+ /* get receiver */
+ recv = TOPN(num);
+ klass = CLASS_OF(recv);
+ me = vm_method_search(id, klass, ic);
+ CALL_METHOD(num, blockptr, flag, id, me, recv);
}
/**
@c method/iterator
@e super(args) # args.size => num
- @j super を実行する。ci に必要な情報が格納されている。
+ @j super sB
+ super(args) # args.size => num
+ flag IyḧӖ send ƓB
*/
DEFINE_INSN
invokesuper
-(CALL_INFO ci)
+(rb_num_t op_argc, ISEQ blockiseq, rb_num_t op_flag)
(...)
-(VALUE val) // inc += - (int)(ci->orig_argc + ((ci->flag & VM_CALL_ARGS_BLOCKARG) ? 1 : 0));
+(VALUE val) // inc += - (int)(op_argc + ((op_flag & VM_CALL_ARGS_BLOCKARG_BIT) ? 1 : 0));
{
- ci->argc = ci->orig_argc;
- ci->blockptr = !(ci->flag & VM_CALL_ARGS_BLOCKARG) ? GET_BLOCK_PTR() : 0;
+ rb_block_t *blockptr = !(op_flag & VM_CALL_ARGS_BLOCKARG_BIT) ? GET_BLOCK_PTR() : 0;
+ VALUE flag = op_flag;
+ int num = caller_setup_args(th, GET_CFP(), flag,
+ (int)op_argc, blockiseq, &blockptr);
+ VALUE recv, klass;
+ ID id;
+ const rb_method_entry_t *me;
- if (UNLIKELY(!(ci->flag & VM_CALL_ARGS_SKIP_SETUP))) {
- vm_caller_setup_args(th, reg_cfp, ci);
+ flag = VM_CALL_SUPER_BIT | VM_CALL_FCALL_BIT;
+
+ recv = GET_SELF();
+ vm_search_superclass(GET_CFP(), GET_ISEQ(), recv, TOPN(num), &id, &klass);
+
+ /* temporary measure for [Bug #2402] [Bug #2502] [Bug #3136] */
+ if (!rb_obj_is_kind_of(recv, klass)) {
+ rb_raise(rb_eNotImpError, "super from singleton method that is defined to multiple classes is not supported; this will be fixed in 1.9.3 or later");
}
- ci->recv = GET_SELF();
- vm_search_super_method(th, GET_CFP(), ci);
- CALL_METHOD(ci);
+
+ me = rb_method_entry(klass, id);
+
+ CALL_METHOD(num, blockptr, flag, id, me, recv);
}
/**
@c method/iterator
- @e yield(args)
- @j yield を実行する。
+ @e yield(args) # args.size => num, flag shows expand argument or not
+ @j yield sB
+ yield(args) # args.size => num
*/
DEFINE_INSN
invokeblock
-(CALL_INFO ci)
+(rb_num_t num, rb_num_t flag)
(...)
-(VALUE val) // inc += 1 - ci->orig_argc;
+(VALUE val) // inc += 1 - num;
{
- ci->argc = ci->orig_argc;
- ci->blockptr = 0;
- ci->recv = GET_SELF();
- val = vm_invoke_block(th, GET_CFP(), ci);
+ val = vm_invoke_block(th, GET_CFP(), num, flag);
if (val == Qundef) {
RESTORE_REGS();
NEXT_INSN();
@@ -1063,7 +1076,7 @@ invokeblock
/**
@c method/iterator
@e return from this scope.
- @j このスコープから抜ける。
+ @j ̃XR[v甲B
*/
DEFINE_INSN
leave
@@ -1072,28 +1085,34 @@ leave
(VALUE val)
{
if (OPT_CHECKED_RUN) {
- if (reg_cfp->sp != vm_base_ptr(reg_cfp)) {
+ if (reg_cfp->sp != reg_cfp->bp) {
rb_bug("Stack consistency error (sp: %"PRIdPTRDIFF", bp: %"PRIdPTRDIFF")",
- VM_SP_CNT(th, reg_cfp->sp), VM_SP_CNT(th, vm_base_ptr(reg_cfp)));
+ VM_SP_CNT(th, reg_cfp->sp), VM_SP_CNT(th, reg_cfp->bp));
}
}
- RUBY_VM_CHECK_INTS(th);
-
- if (UNLIKELY(VM_FRAME_TYPE_FINISH_P(GET_CFP()))) {
- vm_pop_frame(th);
+ RUBY_VM_CHECK_INTS();
+ vm_pop_frame(th);
+ RESTORE_REGS();
+}
+/**
+ @c method/iterator
+ @e return from this vm loop
+ @j VM loop 甲B
+ */
+DEFINE_INSN
+finish
+()
+(VALUE val)
+(VALUE val)
+{
#if OPT_CALL_THREADED_CODE
- th->retval = val;
- return 0;
+ rb_bug("unused instruction on OPT_CALL_THREADED_CODE");
#else
- return val;
+ th->cfp++;
+ return val;
#endif
- }
- else {
- vm_pop_frame(th);
- RESTORE_REGS();
- }
}
/**********************************************************/
@@ -1103,7 +1122,7 @@ leave
/**
@c exception
@e longjump
- @j 大域ジャンプを行う。
+ @j WvsB
*/
DEFINE_INSN
throw
@@ -1111,7 +1130,7 @@ throw
(VALUE throwobj)
(VALUE val)
{
- RUBY_VM_CHECK_INTS(th);
+ RUBY_VM_CHECK_INTS();
val = vm_throw(th, GET_CFP(), throw_state, throwobj);
THROW_EXCEPTION(val);
/* unreachable */
@@ -1124,7 +1143,7 @@ throw
/**
@c jump
@e set PC to (PC + dst).
- @j PC を (PC + dst) にする。
+ @j PC (PC + dst) ɂB
*/
DEFINE_INSN
jump
@@ -1132,14 +1151,14 @@ jump
()
()
{
- RUBY_VM_CHECK_INTS(th);
+ RUBY_VM_CHECK_INTS();
JUMP(dst);
}
/**
@c jump
@e if val is not false or nil, set PC to (PC + dst).
- @j もし val が false か nil でなければ、PC を (PC + dst) にする。
+ @j val false nil łȂ΁APC (PC + dst) ɂB
*/
DEFINE_INSN
branchif
@@ -1148,7 +1167,7 @@ branchif
()
{
if (RTEST(val)) {
- RUBY_VM_CHECK_INTS(th);
+ RUBY_VM_CHECK_INTS();
JUMP(dst);
}
}
@@ -1156,7 +1175,7 @@ branchif
/**
@c jump
@e if val is false or nil, set PC to (PC + dst).
- @j もし val が false か nil ならば、PC を (PC + dst) にする。
+ @j val false nil Ȃ΁APC (PC + dst) ɂB
*/
DEFINE_INSN
branchunless
@@ -1165,7 +1184,7 @@ branchunless
()
{
if (!RTEST(val)) {
- RUBY_VM_CHECK_INTS(th);
+ RUBY_VM_CHECK_INTS();
JUMP(dst);
}
}
@@ -1178,7 +1197,7 @@ branchunless
/**
@c optimize
@e inline cache
- @j インラインキャッシュが有効なら、値をスタックにプッシュして dst へジャンプする。
+ @j CCLbVLȂAlX^bNɃvbV dst փWvB
*/
DEFINE_INSN
getinlinecache
@@ -1199,7 +1218,7 @@ getinlinecache
/**
@c optimize
@e inline cache (once)
- @j once を実現する。
+ @j once B
*/
DEFINE_INSN
onceinlinecache
@@ -1214,8 +1233,8 @@ onceinlinecache
}
else if (ic->ic_value.value == Qundef)
{
- RUBY_VM_CHECK_INTS(th);
- rb_thread_schedule();
+ RUBY_VM_CHECK_INTS();
+ rb_thread_schedule();
goto retry;
}
else {
@@ -1228,7 +1247,7 @@ onceinlinecache
/**
@c optimize
@e set inline cache
- @j インラインキャッシュの値を設定する。
+ @j CCLbV̒lݒ肷B
*/
DEFINE_INSN
setinlinecache
@@ -1237,7 +1256,7 @@ setinlinecache
(VALUE val)
{
if (ic->ic_value.value == Qundef) {
- rb_iseq_add_mark_object(GET_ISEQ(), val);
+ rb_ary_push(GET_ISEQ()->mark_ary, val);
}
ic->ic_value.value = val;
ic->ic_vmstat = GET_VM_STATE_VERSION() - ruby_vm_const_missing_count;
@@ -1247,7 +1266,7 @@ setinlinecache
/**
@c optimize
@e case dispatcher
- @j case 文で、可能なら表引きでジャンプする。
+ @j case ŁA”\Ȃ\ŃWvB
*/
DEFINE_INSN
opt_case_dispatch
@@ -1266,11 +1285,7 @@ opt_case_dispatch
case T_FIXNUM:
case T_BIGNUM:
case T_STRING:
- if (BASIC_OP_UNREDEFINED_P(BOP_EQQ,
- SYMBOL_REDEFINED_OP_FLAG |
- FIXNUM_REDEFINED_OP_FLAG |
- BIGNUM_REDEFINED_OP_FLAG |
- STRING_REDEFINED_OP_FLAG)) {
+ if (BASIC_OP_UNREDEFINED_P(BOP_EQQ)) {
st_data_t val;
if (st_lookup(RHASH_TBL(hash), key, &val)) {
JUMP(FIX2INT((VALUE)val));
@@ -1285,21 +1300,45 @@ opt_case_dispatch
}
}
+/**
+ @c optimize
+ @e check environment
+ @j ̊gpB
+ */
+DEFINE_INSN
+opt_checkenv
+()
+()
+()
+{
+ if (GET_CFP()->bp != GET_DFP() + 1) {
+ VALUE *new_dfp = GET_CFP()->bp - 1;
+ /* TODO: copy env and clean stack at creating env? */
+ *new_dfp = *GET_DFP();
+ SET_DFP(new_dfp);
+ }
+}
+
+
/** simple functions */
/**
@c optimize
@e optimized X+Y.
- @j 最適化された X+Y。
+ @j œKꂽ X+YB
*/
DEFINE_INSN
opt_plus
-(CALL_INFO ci)
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
- if (FIXNUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_PLUS,FIXNUM_REDEFINED_OP_FLAG)) {
+ if (0) {
+
+ }
+#if 1
+ else if (FIXNUM_2_P(recv, obj) &&
+ BASIC_OP_UNREDEFINED_P(BOP_PLUS)) {
/* fixnum + fixnum */
#ifndef LONG_LONG_VALUE
val = (recv + (obj & (~1)));
@@ -1321,48 +1360,57 @@ opt_plus
}
#endif
}
- else if (FLONUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_PLUS, FLOAT_REDEFINED_OP_FLAG)) {
- val = DBL2NUM(RFLOAT_VALUE(recv) + RFLOAT_VALUE(obj));
- }
+#endif
+
else if (!SPECIAL_CONST_P(recv) && !SPECIAL_CONST_P(obj)) {
- if (HEAP_CLASS_OF(recv) == rb_cFloat && HEAP_CLASS_OF(obj) == rb_cFloat &&
- BASIC_OP_UNREDEFINED_P(BOP_PLUS, FLOAT_REDEFINED_OP_FLAG)) {
+ if (0) {
+ }
+#if 1
+ else if (HEAP_CLASS_OF(recv) == rb_cFloat &&
+ HEAP_CLASS_OF(obj) == rb_cFloat &&
+ BASIC_OP_UNREDEFINED_P(BOP_PLUS)) {
val = DBL2NUM(RFLOAT_VALUE(recv) + RFLOAT_VALUE(obj));
}
- else if (HEAP_CLASS_OF(recv) == rb_cString && HEAP_CLASS_OF(obj) == rb_cString &&
- BASIC_OP_UNREDEFINED_P(BOP_PLUS, STRING_REDEFINED_OP_FLAG)) {
+#endif
+
+#if 1
+ else if (HEAP_CLASS_OF(recv) == rb_cString &&
+ HEAP_CLASS_OF(obj) == rb_cString &&
+ BASIC_OP_UNREDEFINED_P(BOP_PLUS)) {
val = rb_str_plus(recv, obj);
}
+#endif
+#if 1
else if (HEAP_CLASS_OF(recv) == rb_cArray &&
- BASIC_OP_UNREDEFINED_P(BOP_PLUS, ARRAY_REDEFINED_OP_FLAG)) {
+ BASIC_OP_UNREDEFINED_P(BOP_PLUS)) {
val = rb_ary_plus(recv, obj);
}
+#endif
else {
goto INSN_LABEL(normal_dispatch);
}
}
else {
- INSN_LABEL(normal_dispatch):
+ INSN_LABEL(normal_dispatch):
PUSH(recv);
PUSH(obj);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(1, idPLUS, recv);
}
}
/**
@c optimize
@e optimized X-Y.
- @j 最適化された X-Y。
+ @j œKꂽ X-YB
*/
DEFINE_INSN
opt_minus
-(CALL_INFO ci)
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
if (FIXNUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_MINUS, FIXNUM_REDEFINED_OP_FLAG)) {
+ BASIC_OP_UNREDEFINED_P(BOP_MINUS)) {
long a, b, c;
a = FIX2LONG(recv);
@@ -1376,15 +1424,16 @@ opt_minus
val = rb_big_minus(rb_int2big(a), rb_int2big(b));
}
}
- else if (FLONUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_MINUS, FLOAT_REDEFINED_OP_FLAG)) {
- val = DBL2NUM(RFLOAT_VALUE(recv) - RFLOAT_VALUE(obj));
- }
else if (!SPECIAL_CONST_P(recv) && !SPECIAL_CONST_P(obj)) {
- if (HEAP_CLASS_OF(recv) == rb_cFloat && HEAP_CLASS_OF(obj) == rb_cFloat &&
- BASIC_OP_UNREDEFINED_P(BOP_MINUS, FLOAT_REDEFINED_OP_FLAG)) {
+ if (0) {
+ }
+#if 1
+ else if (HEAP_CLASS_OF(recv) == rb_cFloat &&
+ HEAP_CLASS_OF(obj) == rb_cFloat &&
+ BASIC_OP_UNREDEFINED_P(BOP_MINUS)) {
val = DBL2NUM(RFLOAT_VALUE(recv) - RFLOAT_VALUE(obj));
}
+#endif
else {
goto INSN_LABEL(normal_dispatch);
}
@@ -1394,23 +1443,23 @@ opt_minus
INSN_LABEL(normal_dispatch):
PUSH(recv);
PUSH(obj);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(1, idMINUS, recv);
}
}
/**
@c optimize
@e optimized X*Y.
- @j 最適化された X*Y。
+ @j œKꂽ X*YB
*/
DEFINE_INSN
opt_mult
-(CALL_INFO ci)
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
if (FIXNUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_MULT, FIXNUM_REDEFINED_OP_FLAG)) {
+ BASIC_OP_UNREDEFINED_P(BOP_MULT)) {
long a, b;
a = FIX2LONG(recv);
@@ -1418,24 +1467,28 @@ opt_mult
val = recv;
}
else {
+ volatile long c;
b = FIX2LONG(obj);
- if (MUL_OVERFLOW_FIXNUM_P(a, b)) {
+ c = a * b;
+
+ if (FIXABLE(c) && c / a == b) {
+ val = LONG2FIX(c);
+ }
+ else {
val = rb_big_mul(rb_int2big(a), rb_int2big(b));
- }
- else {
- val = LONG2FIX(a * b);
- }
+ }
}
}
- else if (FLONUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_MULT, FLOAT_REDEFINED_OP_FLAG)) {
- val = DBL2NUM(RFLOAT_VALUE(recv) * RFLOAT_VALUE(obj));
- }
else if (!SPECIAL_CONST_P(recv) && !SPECIAL_CONST_P(obj)) {
- if (HEAP_CLASS_OF(recv) == rb_cFloat && HEAP_CLASS_OF(obj) == rb_cFloat &&
- BASIC_OP_UNREDEFINED_P(BOP_MULT, FLOAT_REDEFINED_OP_FLAG)) {
+ if (0) {
+ }
+#if 1
+ else if (HEAP_CLASS_OF(recv) == rb_cFloat &&
+ HEAP_CLASS_OF(obj) == rb_cFloat &&
+ BASIC_OP_UNREDEFINED_P(BOP_MULT)) {
val = DBL2NUM(RFLOAT_VALUE(recv) * RFLOAT_VALUE(obj));
}
+#endif
else {
goto INSN_LABEL(normal_dispatch);
}
@@ -1444,23 +1497,23 @@ opt_mult
INSN_LABEL(normal_dispatch):
PUSH(recv);
PUSH(obj);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(1, idMULT, recv);
}
}
/**
@c optimize
@e optimized X/Y.
- @j 最適化された X/Y。
+ @j œKꂽ X/YB
*/
DEFINE_INSN
opt_div
-(CALL_INFO ci)
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
if (FIXNUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_DIV, FIXNUM_REDEFINED_OP_FLAG)) {
+ BASIC_OP_UNREDEFINED_P(BOP_DIV)) {
long x, y, div;
x = FIX2LONG(recv);
@@ -1490,15 +1543,16 @@ opt_div
}
val = LONG2NUM(div);
}
- else if (FLONUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_DIV, FLOAT_REDEFINED_OP_FLAG)) {
- val = DBL2NUM(RFLOAT_VALUE(recv) / RFLOAT_VALUE(obj));
- }
else if (!SPECIAL_CONST_P(recv) && !SPECIAL_CONST_P(obj)) {
- if (HEAP_CLASS_OF(recv) == rb_cFloat && HEAP_CLASS_OF(obj) == rb_cFloat &&
- BASIC_OP_UNREDEFINED_P(BOP_DIV, FLOAT_REDEFINED_OP_FLAG)) {
+ if (0) {
+ }
+#if 1
+ else if (HEAP_CLASS_OF(recv) == rb_cFloat &&
+ HEAP_CLASS_OF(obj) == rb_cFloat &&
+ BASIC_OP_UNREDEFINED_P(BOP_DIV)) {
val = DBL2NUM(RFLOAT_VALUE(recv) / RFLOAT_VALUE(obj));
}
+#endif
else {
goto INSN_LABEL(normal_dispatch);
}
@@ -1507,23 +1561,23 @@ opt_div
INSN_LABEL(normal_dispatch):
PUSH(recv);
PUSH(obj);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(1, idDIV, recv);
}
}
/**
@c optimize
@e optimized X%Y.
- @j 最適化された X%Y。
+ @j œKꂽ X%YB
*/
DEFINE_INSN
opt_mod
-(CALL_INFO ci)
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
if (FIXNUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_MOD, FIXNUM_REDEFINED_OP_FLAG )) {
+ BASIC_OP_UNREDEFINED_P(BOP_MOD)) {
long x, y, mod;
x = FIX2LONG(recv);
@@ -1554,13 +1608,12 @@ opt_mod
}
val = LONG2FIX(mod);
}
- else if (FLONUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_MOD, FLOAT_REDEFINED_OP_FLAG)) {
- val = DBL2NUM(ruby_float_mod(RFLOAT_VALUE(recv), RFLOAT_VALUE(obj)));
- }
else if (!SPECIAL_CONST_P(recv) && !SPECIAL_CONST_P(obj)) {
- if (HEAP_CLASS_OF(recv) == rb_cFloat && HEAP_CLASS_OF(obj) == rb_cFloat &&
- BASIC_OP_UNREDEFINED_P(BOP_MOD, FLOAT_REDEFINED_OP_FLAG)) {
+ if (0) {
+ }
+ else if (HEAP_CLASS_OF(recv) == rb_cFloat &&
+ HEAP_CLASS_OF(obj) == rb_cFloat &&
+ BASIC_OP_UNREDEFINED_P(BOP_MOD)) {
val = DBL2NUM(ruby_float_mod(RFLOAT_VALUE(recv), RFLOAT_VALUE(obj)));
}
else {
@@ -1571,48 +1624,48 @@ opt_mod
INSN_LABEL(normal_dispatch):
PUSH(recv);
PUSH(obj);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(1, idMOD, recv);
}
}
/**
@c optimize
@e optimized X==Y.
- @j 最適化された X==Y。
+ @j œKꂽ X==YB
*/
DEFINE_INSN
opt_eq
-(CALL_INFO ci)
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
- val = opt_eq_func(recv, obj, ci);
+ val = opt_eq_func(recv, obj, ic);
if (val == Qundef) {
/* other */
PUSH(recv);
PUSH(obj);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(1, idEq, recv);
}
}
/**
@c optimize
@e optimized X!=Y.
- @j 最適化された X!=Y。
+ @j œKꂽ X!=YB
*/
DEFINE_INSN
opt_neq
-(CALL_INFO ci, CALL_INFO ci_eq)
+(IC ic, IC ic_eq)
(VALUE recv, VALUE obj)
(VALUE val)
{
extern VALUE rb_obj_not_equal(VALUE obj1, VALUE obj2);
- vm_search_method(ci, recv);
+ const rb_method_entry_t *me = vm_method_search(idNeq, CLASS_OF(recv), ic);
val = Qundef;
- if (check_cfunc(ci->me, rb_obj_not_equal)) {
- val = opt_eq_func(recv, obj, ci_eq);
+ if (check_cfunc(me, rb_obj_not_equal)) {
+ val = opt_eq_func(recv, obj, ic_eq);
if (val != Qundef) {
val = RTEST(val) ? Qfalse : Qtrue;
@@ -1623,23 +1676,23 @@ opt_neq
/* other */
PUSH(recv);
PUSH(obj);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(1, idNeq, recv);
}
}
/**
@c optimize
@e optimized X<Y.
- @j 最適化された X<Y。
+ @j œKꂽ X<YB
*/
DEFINE_INSN
opt_lt
-(CALL_INFO ci)
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
if (FIXNUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_LT, FIXNUM_REDEFINED_OP_FLAG)) {
+ BASIC_OP_UNREDEFINED_P(BOP_LT)) {
SIGNED_VALUE a = recv, b = obj;
if (a < b) {
@@ -1649,16 +1702,22 @@ opt_lt
val = Qfalse;
}
}
- else if (FLONUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_LT, FLOAT_REDEFINED_OP_FLAG)) {
- /* flonum is not NaN */
- val = RFLOAT_VALUE(recv) < RFLOAT_VALUE(obj) ? Qtrue : Qfalse;
- }
else if (!SPECIAL_CONST_P(recv) && !SPECIAL_CONST_P(obj)) {
- if (HEAP_CLASS_OF(recv) == rb_cFloat && HEAP_CLASS_OF(obj) == rb_cFloat &&
- BASIC_OP_UNREDEFINED_P(BOP_LT, FLOAT_REDEFINED_OP_FLAG)) {
- val = double_cmp_lt(RFLOAT_VALUE(recv), RFLOAT_VALUE(obj));
+ if (0) {
+ }
+#if 1
+ else if (HEAP_CLASS_OF(recv) == rb_cFloat &&
+ HEAP_CLASS_OF(obj) == rb_cFloat &&
+ BASIC_OP_UNREDEFINED_P(BOP_LT)) {
+ double a = RFLOAT_VALUE(recv);
+ double b = RFLOAT_VALUE(obj);
+#if defined(_MSC_VER) && _MSC_VER < 1300
+ if (isnan(a) || isnan(b)) val = Qfalse;
+ else
+#endif
+ val = a < b ? Qtrue : Qfalse;
}
+#endif
else {
goto INSN_LABEL(normal_dispatch);
}
@@ -1667,23 +1726,23 @@ opt_lt
INSN_LABEL(normal_dispatch):
PUSH(recv);
PUSH(obj);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(1, idLT, recv);
}
}
/**
@c optimize
@e optimized X<=Y.
- @j 最適化された X<=Y。
+ @j œKꂽ X<=YB
*/
DEFINE_INSN
opt_le
-(CALL_INFO ci)
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
if (FIXNUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_LE, FIXNUM_REDEFINED_OP_FLAG)) {
+ BASIC_OP_UNREDEFINED_P(BOP_LE)) {
SIGNED_VALUE a = recv, b = obj;
if (a <= b) {
@@ -1693,32 +1752,27 @@ opt_le
val = Qfalse;
}
}
- else if (FLONUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_LE, FLOAT_REDEFINED_OP_FLAG)) {
- /* flonum is not NaN */
- val = RFLOAT_VALUE(recv) <= RFLOAT_VALUE(obj) ? Qtrue : Qfalse;
- }
else {
/* other */
PUSH(recv);
PUSH(obj);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(1, idLE, recv);
}
}
/**
@c optimize
@e optimized X>Y.
- @j 最適化された X>Y。
+ @j œKꂽ X>YB
*/
DEFINE_INSN
opt_gt
-(CALL_INFO ci)
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
if (FIXNUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_GT, FIXNUM_REDEFINED_OP_FLAG)) {
+ BASIC_OP_UNREDEFINED_P(BOP_GT)) {
SIGNED_VALUE a = recv, b = obj;
if (a > b) {
@@ -1728,16 +1782,22 @@ opt_gt
val = Qfalse;
}
}
- else if (FLONUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_GT, FLOAT_REDEFINED_OP_FLAG)) {
- /* flonum is not NaN */
- val = RFLOAT_VALUE(recv) > RFLOAT_VALUE(obj) ? Qtrue : Qfalse;
- }
else if (!SPECIAL_CONST_P(recv) && !SPECIAL_CONST_P(obj)) {
- if (HEAP_CLASS_OF(recv) == rb_cFloat && HEAP_CLASS_OF(obj) == rb_cFloat &&
- BASIC_OP_UNREDEFINED_P(BOP_GT, FLOAT_REDEFINED_OP_FLAG)) {
- val = double_cmp_gt(RFLOAT_VALUE(recv), RFLOAT_VALUE(obj));
+ if (0) {
+ }
+#if 1
+ else if (HEAP_CLASS_OF(recv) == rb_cFloat &&
+ HEAP_CLASS_OF(obj) == rb_cFloat &&
+ BASIC_OP_UNREDEFINED_P(BOP_GT)) {
+ double a = RFLOAT_VALUE(recv);
+ double b = RFLOAT_VALUE(obj);
+#if defined(_MSC_VER) && _MSC_VER < 1300
+ if (isnan(a) || isnan(b)) val = Qfalse;
+ else
+#endif
+ val = a > b ? Qtrue : Qfalse;
}
+#endif
else {
goto INSN_LABEL(normal_dispatch);
}
@@ -1746,23 +1806,23 @@ opt_gt
INSN_LABEL(normal_dispatch):
PUSH(recv);
PUSH(obj);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(1, idGT, recv);
}
}
/**
@c optimize
@e optimized X>=Y.
- @j 最適化された X>=Y。
+ @j œKꂽ X>=YB
*/
DEFINE_INSN
opt_ge
-(CALL_INFO ci)
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
if (FIXNUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_GE, FIXNUM_REDEFINED_OP_FLAG)) {
+ BASIC_OP_UNREDEFINED_P(BOP_GE)) {
SIGNED_VALUE a = recv, b = obj;
if (a >= b) {
@@ -1772,36 +1832,33 @@ opt_ge
val = Qfalse;
}
}
- else if (FLONUM_2_P(recv, obj) &&
- BASIC_OP_UNREDEFINED_P(BOP_GE, FLOAT_REDEFINED_OP_FLAG)) {
- /* flonum is not NaN */
- val = RFLOAT_VALUE(recv) >= RFLOAT_VALUE(obj) ? Qtrue : Qfalse;
- }
else {
PUSH(recv);
PUSH(obj);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(1, idGE, recv);
}
}
/**
@c optimize
@e <<
- @j 最適化された X<<Y。
+ @j œKꂽ X<<YB
*/
DEFINE_INSN
opt_ltlt
-(CALL_INFO ci)
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
if (!SPECIAL_CONST_P(recv)) {
- if (HEAP_CLASS_OF(recv) == rb_cString &&
- BASIC_OP_UNREDEFINED_P(BOP_LTLT, STRING_REDEFINED_OP_FLAG)) {
+ if (0) {
+ }
+ else if (HEAP_CLASS_OF(recv) == rb_cString &&
+ BASIC_OP_UNREDEFINED_P(BOP_LTLT)) {
val = rb_str_concat(recv, obj);
}
else if (HEAP_CLASS_OF(recv) == rb_cArray &&
- BASIC_OP_UNREDEFINED_P(BOP_LTLT, ARRAY_REDEFINED_OP_FLAG)) {
+ BASIC_OP_UNREDEFINED_P(BOP_LTLT)) {
val = rb_ary_push(recv, obj);
}
else {
@@ -1812,26 +1869,26 @@ opt_ltlt
INSN_LABEL(normal_dispatch):
PUSH(recv);
PUSH(obj);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(1, idLTLT, recv);
}
}
/**
@c optimize
@e []
- @j 最適化された recv[obj]。
+ @j œKꂽ recv[obj]B
*/
DEFINE_INSN
opt_aref
-(CALL_INFO ci)
+(IC ic)
(VALUE recv, VALUE obj)
(VALUE val)
{
- if (!SPECIAL_CONST_P(recv)) {
- if (HEAP_CLASS_OF(recv) == rb_cArray && BASIC_OP_UNREDEFINED_P(BOP_AREF, ARRAY_REDEFINED_OP_FLAG) && FIXNUM_P(obj)) {
+ if (!SPECIAL_CONST_P(recv) && BASIC_OP_UNREDEFINED_P(BOP_AREF)) {
+ if (HEAP_CLASS_OF(recv) == rb_cArray && FIXNUM_P(obj)) {
val = rb_ary_entry(recv, FIX2LONG(obj));
}
- else if (HEAP_CLASS_OF(recv) == rb_cHash && BASIC_OP_UNREDEFINED_P(BOP_AREF, HASH_REDEFINED_OP_FLAG)) {
+ else if (HEAP_CLASS_OF(recv) == rb_cHash) {
val = rb_hash_aref(recv, obj);
}
else {
@@ -1842,27 +1899,28 @@ opt_aref
INSN_LABEL(normal_dispatch):
PUSH(recv);
PUSH(obj);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(1, idAREF, recv);
}
}
/**
@c optimize
@e recv[obj] = set
- @j 最適化された recv[obj] = set。
+ @j œKꂽ recv[obj] = setB
*/
DEFINE_INSN
opt_aset
-(CALL_INFO ci)
+(IC ic)
(VALUE recv, VALUE obj, VALUE set)
(VALUE val)
{
- if (!SPECIAL_CONST_P(recv)) {
- if (HEAP_CLASS_OF(recv) == rb_cArray && BASIC_OP_UNREDEFINED_P(BOP_ASET, ARRAY_REDEFINED_OP_FLAG) && FIXNUM_P(obj)) {
+ if (!SPECIAL_CONST_P(recv) &&
+ BASIC_OP_UNREDEFINED_P(BOP_ASET)) {
+ if (HEAP_CLASS_OF(recv) == rb_cArray && FIXNUM_P(obj)) {
rb_ary_store(recv, FIX2LONG(obj), set);
val = set;
}
- else if (HEAP_CLASS_OF(recv) == rb_cHash && BASIC_OP_UNREDEFINED_P(BOP_ASET, HASH_REDEFINED_OP_FLAG)) {
+ else if (HEAP_CLASS_OF(recv) == rb_cHash) {
rb_hash_aset(recv, obj, set);
val = set;
}
@@ -1875,32 +1933,30 @@ opt_aset
PUSH(recv);
PUSH(obj);
PUSH(set);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(2, idASET, recv);
}
}
/**
@c optimize
@e optimized length
- @j 最適化された recv.length()。
+ @j œKꂽ recv.length()B
*/
DEFINE_INSN
opt_length
-(CALL_INFO ci)
+(IC ic)
(VALUE recv)
(VALUE val)
{
- if (!SPECIAL_CONST_P(recv)) {
- if (HEAP_CLASS_OF(recv) == rb_cString &&
- BASIC_OP_UNREDEFINED_P(BOP_LENGTH, STRING_REDEFINED_OP_FLAG)) {
+ if (LIKELY(!SPECIAL_CONST_P(recv) &&
+ BASIC_OP_UNREDEFINED_P(BOP_LENGTH))) {
+ if (HEAP_CLASS_OF(recv) == rb_cString) {
val = rb_str_length(recv);
}
- else if (HEAP_CLASS_OF(recv) == rb_cArray &&
- BASIC_OP_UNREDEFINED_P(BOP_LENGTH, ARRAY_REDEFINED_OP_FLAG)) {
+ else if (HEAP_CLASS_OF(recv) == rb_cArray) {
val = LONG2NUM(RARRAY_LEN(recv));
}
- else if (HEAP_CLASS_OF(recv) == rb_cHash &&
- BASIC_OP_UNREDEFINED_P(BOP_LENGTH, HASH_REDEFINED_OP_FLAG)) {
+ else if (HEAP_CLASS_OF(recv) == rb_cHash) {
val = INT2FIX(RHASH_SIZE(recv));
}
else {
@@ -1910,32 +1966,30 @@ opt_length
else {
INSN_LABEL(normal_dispatch):
PUSH(recv);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(0, idLength, recv);
}
}
/**
@c optimize
@e optimized size
- @j 最適化された recv.size()。
+ @j œKꂽ recv.size()B
*/
DEFINE_INSN
opt_size
-(CALL_INFO ci)
+(IC ic)
(VALUE recv)
(VALUE val)
{
- if (!SPECIAL_CONST_P(recv)) {
- if (HEAP_CLASS_OF(recv) == rb_cString &&
- BASIC_OP_UNREDEFINED_P(BOP_SIZE, STRING_REDEFINED_OP_FLAG)) {
+ if (LIKELY(BASIC_OP_UNREDEFINED_P(BOP_SIZE) &&
+ !SPECIAL_CONST_P(recv))) {
+ if (HEAP_CLASS_OF(recv) == rb_cString) {
val = rb_str_length(recv);
}
- else if (HEAP_CLASS_OF(recv) == rb_cArray &&
- BASIC_OP_UNREDEFINED_P(BOP_SIZE, ARRAY_REDEFINED_OP_FLAG)) {
+ else if (HEAP_CLASS_OF(recv) == rb_cArray) {
val = LONG2NUM(RARRAY_LEN(recv));
}
- else if (HEAP_CLASS_OF(recv) == rb_cHash &&
- BASIC_OP_UNREDEFINED_P(BOP_SIZE, HASH_REDEFINED_OP_FLAG)) {
+ else if (HEAP_CLASS_OF(recv) == rb_cHash) {
val = INT2FIX(RHASH_SIZE(recv));
}
else {
@@ -1945,62 +1999,24 @@ opt_size
else {
INSN_LABEL(normal_dispatch):
PUSH(recv);
- CALL_SIMPLE_METHOD(recv);
- }
-}
-
-/**
- @c optimize
- @e optimized empty?
- @j 最適化された recv.empty?()。
- */
-DEFINE_INSN
-opt_empty_p
-(CALL_INFO ci)
-(VALUE recv)
-(VALUE val)
-{
- if (!SPECIAL_CONST_P(recv)) {
- if (HEAP_CLASS_OF(recv) == rb_cString &&
- BASIC_OP_UNREDEFINED_P(BOP_EMPTY_P, STRING_REDEFINED_OP_FLAG)) {
- if (RSTRING_LEN(recv) == 0) val = Qtrue;
- else val = Qfalse;
- }
- else if (HEAP_CLASS_OF(recv) == rb_cArray &&
- BASIC_OP_UNREDEFINED_P(BOP_EMPTY_P, ARRAY_REDEFINED_OP_FLAG)) {
- if (RARRAY_LEN(recv) == 0) val = Qtrue;
- else val = Qfalse;
- }
- else if (HEAP_CLASS_OF(recv) == rb_cHash &&
- BASIC_OP_UNREDEFINED_P(BOP_EMPTY_P, HASH_REDEFINED_OP_FLAG)) {
- if (RHASH_EMPTY_P(recv)) val = Qtrue;
- else val = Qfalse;
- }
- else {
- goto INSN_LABEL(normal_dispatch);
- }
- }
- else {
- INSN_LABEL(normal_dispatch):
- PUSH(recv);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(0, idSize, recv);
}
}
/**
@c optimize
@e optimized succ
- @j 最適化された recv.succ()。
+ @j œKꂽ recv.succ()B
*/
DEFINE_INSN
opt_succ
-(CALL_INFO ci)
+(IC ic)
(VALUE recv)
(VALUE val)
{
if (SPECIAL_CONST_P(recv)) {
if (FIXNUM_P(recv) &&
- BASIC_OP_UNREDEFINED_P(BOP_SUCC, FIXNUM_REDEFINED_OP_FLAG)) {
+ BASIC_OP_UNREDEFINED_P(BOP_SUCC)) {
const VALUE obj = INT2FIX(1);
/* fixnum + INT2FIX(1) */
val = (recv + (obj & (~1)));
@@ -2015,11 +2031,11 @@ opt_succ
}
else {
if (HEAP_CLASS_OF(recv) == rb_cString &&
- BASIC_OP_UNREDEFINED_P(BOP_SUCC, STRING_REDEFINED_OP_FLAG)) {
+ BASIC_OP_UNREDEFINED_P(BOP_SUCC)) {
val = rb_str_succ(recv);
}
else if (HEAP_CLASS_OF(recv) == rb_cTime &&
- BASIC_OP_UNREDEFINED_P(BOP_SUCC, TIME_REDEFINED_OP_FLAG)) {
+ BASIC_OP_UNREDEFINED_P(BOP_SUCC)) {
val = rb_time_succ(recv);
}
else
@@ -2030,30 +2046,30 @@ opt_succ
if (0) {
INSN_LABEL(normal_dispatch):
PUSH(recv);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(0, idSucc, recv);
}
}
/**
@c optimize
@e optimized not
- @j 最適化された recv.!()。
+ @j œKꂽ recv.!()B
*/
DEFINE_INSN
opt_not
-(CALL_INFO ci)
+(IC ic)
(VALUE recv)
(VALUE val)
{
extern VALUE rb_obj_not(VALUE obj);
- vm_search_method(ci, recv);
+ const rb_method_entry_t *me = vm_method_search(idNot, CLASS_OF(recv), ic);
- if (check_cfunc(ci->me, rb_obj_not)) {
+ if (check_cfunc(me, rb_obj_not)) {
val = RTEST(recv) ? Qfalse : Qtrue;
}
else {
PUSH(recv);
- CALL_SIMPLE_METHOD(recv);
+ CALL_SIMPLE_METHOD(0, idNot, recv);
}
}
@@ -2061,7 +2077,7 @@ opt_not
/**
@c optimize
@e optimized regexp match
- @j 最適化された正規表現マッチ。
+ @j œKꂽK\}b`B
*/
DEFINE_INSN
opt_regexpmatch1
@@ -2075,7 +2091,7 @@ opt_regexpmatch1
/**
@c optimize
@e optimized regexp match 2
- @j 最適化された正規表現マッチ 2
+ @j œKꂽK\}b` 2
*/
DEFINE_INSN
opt_regexpmatch2
@@ -2083,7 +2099,7 @@ opt_regexpmatch2
(VALUE obj2, VALUE obj1)
(VALUE val)
{
- if (RB_TYPE_P(obj2, T_STRING)) {
+ if (TYPE(obj2) == T_STRING) {
val = rb_reg_match(obj1, obj2);
}
else {
@@ -2094,7 +2110,7 @@ opt_regexpmatch2
/**
@c optimize
@e call native compiled method
- @j ネイティブコンパイルしたメソッドを起動。
+ @j lCeBuRpC\bhNB
*/
DEFINE_INSN
opt_call_c_function
@@ -2131,7 +2147,7 @@ bitblt
/**
@c joke
@e The Answer to Life, the Universe, and Everything
- @j 人生、宇宙、すべての答え。
+ @j lAFAׂĂ̓B
*/
DEFINE_INSN
answer
diff --git a/internal.h b/internal.h
index 62b178e473..59c928462e 100644
--- a/internal.h
+++ b/internal.h
@@ -19,15 +19,6 @@ extern "C" {
#endif
#endif
-#define MUL_OVERFLOW_SIGNED_INTEGER_P(a, b, min, max) ( \
- (a) == 0 ? 0 : \
- (a) == -1 ? (b) < -(max) : \
- (a) > 0 ? \
- ((b) > 0 ? (max) / (a) < (b) : (min) / (a) > (b)) : \
- ((b) > 0 ? (min) / (a) < (b) : (max) / (a) > (b)))
-#define MUL_OVERFLOW_FIXNUM_P(a, b) MUL_OVERFLOW_SIGNED_INTEGER_P(a, b, FIXNUM_MIN, FIXNUM_MAX)
-#define MUL_OVERFLOW_LONG_P(a, b) MUL_OVERFLOW_SIGNED_INTEGER_P(a, b, LONG_MIN, LONG_MAX)
-
struct rb_deprecated_classext_struct {
char conflict[sizeof(VALUE) * 3];
};
@@ -36,9 +27,6 @@ struct rb_classext_struct {
VALUE super;
struct st_table *iv_tbl;
struct st_table *const_tbl;
- VALUE origin;
- VALUE refined_class;
- rb_alloc_func_t allocator;
};
#undef RCLASS_SUPER
@@ -48,22 +36,15 @@ struct rb_classext_struct {
#define RCLASS_CONST_TBL(c) (RCLASS_EXT(c)->const_tbl)
#define RCLASS_M_TBL(c) (RCLASS(c)->m_tbl)
#define RCLASS_IV_INDEX_TBL(c) (RCLASS(c)->iv_index_tbl)
-#define RCLASS_ORIGIN(c) (RCLASS_EXT(c)->origin)
-#define RCLASS_REFINED_CLASS(c) (RCLASS_EXT(c)->refined_class)
struct vtm; /* defined by timev.h */
/* array.c */
VALUE rb_ary_last(int, VALUE *, VALUE);
-void rb_ary_set_len(VALUE, long);
-VALUE rb_ary_cat(VALUE, const VALUE *, long);
-void rb_ary_delete_same(VALUE, VALUE);
/* bignum.c */
VALUE rb_big_fdiv(VALUE x, VALUE y);
VALUE rb_big_uminus(VALUE x);
-VALUE rb_integer_float_cmp(VALUE x, VALUE y);
-VALUE rb_integer_float_eq(VALUE x, VALUE y);
/* class.c */
VALUE rb_obj_methods(int argc, VALUE *argv, VALUE obj);
@@ -71,19 +52,13 @@ VALUE rb_obj_protected_methods(int argc, VALUE *argv, VALUE obj);
VALUE rb_obj_private_methods(int argc, VALUE *argv, VALUE obj);
VALUE rb_obj_public_methods(int argc, VALUE *argv, VALUE obj);
int rb_obj_basic_to_s_p(VALUE);
-VALUE rb_special_singleton_class(VALUE);
-VALUE rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach);
void Init_class_hierarchy(void);
-/* compar.c */
-VALUE rb_invcmp(VALUE, VALUE);
-
/* compile.c */
int rb_dvar_defined(ID);
int rb_local_defined(ID);
int rb_parse_in_eval(void);
int rb_parse_in_main(void);
-const char * rb_insns_name(int i);
VALUE rb_insns_name_array(void);
/* cont.c */
@@ -106,11 +81,6 @@ void rb_gc_mark_encodings(void);
NORETURN(PRINTF_ARGS(void rb_compile_bug(const char*, int, const char*, ...), 3, 4));
VALUE rb_check_backtrace(VALUE);
NORETURN(void rb_async_bug_errno(const char *,int));
-const char *rb_builtin_type_name(int t);
-const char *rb_builtin_class_name(VALUE x);
-
-/* eval.c */
-VALUE rb_refinement_module_get_refined_class(VALUE module);
/* eval_error.c */
void ruby_error_print(void);
@@ -118,17 +88,12 @@ VALUE rb_get_backtrace(VALUE info);
/* eval_jump.c */
void rb_call_end_proc(VALUE data);
-void rb_mark_end_proc(void);
/* file.c */
VALUE rb_home_dir(const char *user, VALUE result);
VALUE rb_realpath_internal(VALUE basedir, VALUE path, int strict);
-void rb_file_const(const char*, VALUE);
-int rb_file_load_ok(const char *);
VALUE rb_file_expand_path_fast(VALUE, VALUE);
VALUE rb_file_expand_path_internal(VALUE, VALUE, int, int, VALUE);
-VALUE rb_get_path_check_to_string(VALUE, int);
-VALUE rb_get_path_check_convert(VALUE, VALUE, int);
void Init_File(void);
#ifdef _WIN32
@@ -138,7 +103,6 @@ void rb_w32_init_file(void);
/* gc.c */
void Init_heap(void);
-void *ruby_mimmalloc(size_t size);
/* inits.c */
void rb_call_inits(void);
@@ -148,15 +112,13 @@ const char *ruby_get_inplace_mode(void);
void ruby_set_inplace_mode(const char *);
ssize_t rb_io_bufread(VALUE io, void *buf, size_t size);
void rb_stdio_set_default_encoding(void);
-void rb_write_error_str(VALUE mesg);
/* iseq.c */
+VALUE rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE filepath, VALUE line, VALUE opt);
VALUE rb_iseq_clone(VALUE iseqval, VALUE newcbase);
/* load.c */
VALUE rb_get_load_path(void);
-VALUE rb_get_expanded_load_path(void);
-NORETURN(void rb_load_fail(VALUE, const char*));
/* math.c */
VALUE rb_math_atan2(VALUE, VALUE);
@@ -174,90 +136,18 @@ void Init_newline(void);
/* numeric.c */
int rb_num_to_uint(VALUE val, unsigned int *ret);
-VALUE num_interval_step_size(VALUE from, VALUE to, VALUE step, int excl);
int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl);
double ruby_float_mod(double x, double y);
-int rb_num_negative_p(VALUE);
-VALUE rb_int_succ(VALUE num);
-VALUE rb_int_pred(VALUE num);
/* object.c */
-void rb_obj_copy_ivar(VALUE dest, VALUE obj);
VALUE rb_obj_equal(VALUE obj1, VALUE obj2);
-VALUE rb_class_search_ancestor(VALUE klass, VALUE super);
/* parse.y */
VALUE rb_parser_get_yydebug(VALUE);
VALUE rb_parser_set_yydebug(VALUE, VALUE);
-int rb_is_const_name(VALUE name);
-int rb_is_class_name(VALUE name);
-int rb_is_global_name(VALUE name);
-int rb_is_instance_name(VALUE name);
-int rb_is_attrset_name(VALUE name);
-int rb_is_local_name(VALUE name);
-int rb_is_method_name(VALUE name);
-int rb_is_junk_name(VALUE name);
-void rb_gc_mark_parser(void);
-void rb_gc_mark_symbols(void);
/* proc.c */
VALUE rb_proc_location(VALUE self);
-st_index_t rb_hash_proc(st_index_t hash, VALUE proc);
-
-/* process.c */
-#define RB_MAX_GROUPS (65536)
-
-struct rb_execarg {
- int use_shell;
- union {
- struct {
- VALUE shell_script;
- } sh;
- struct {
- VALUE command_name;
- VALUE command_abspath; /* full path string or nil */
- VALUE argv_str;
- VALUE argv_buf;
- } cmd;
- } invoke;
- VALUE redirect_fds;
- VALUE envp_str;
- VALUE envp_buf;
- VALUE dup2_tmpbuf;
- unsigned pgroup_given : 1;
- unsigned umask_given : 1;
- unsigned unsetenv_others_given : 1;
- unsigned unsetenv_others_do : 1;
- unsigned close_others_given : 1;
- unsigned close_others_do : 1;
- unsigned chdir_given : 1;
- unsigned new_pgroup_given : 1;
- unsigned new_pgroup_flag : 1;
- unsigned uid_given : 1;
- unsigned gid_given : 1;
- rb_pid_t pgroup_pgid; /* asis(-1), new pgroup(0), specified pgroup (0<V). */
- VALUE rlimit_limits; /* Qfalse or [[rtype, softlim, hardlim], ...] */
- mode_t umask_mask;
- rb_uid_t uid;
- rb_gid_t gid;
- VALUE fd_dup2;
- VALUE fd_close;
- VALUE fd_open;
- VALUE fd_dup2_child;
- int close_others_maxhint;
- VALUE env_modification; /* Qfalse or [[k1,v1], ...] */
- VALUE chdir_dir;
-};
-
-/* argv_str contains extra two elements.
- * The beginning one is for /bin/sh used by exec_with_sh.
- * The last one for terminating NULL used by execve.
- * See rb_exec_fillarg() in process.c. */
-#define ARGVSTR2ARGC(argv_str) (RSTRING_LEN(argv_str) / sizeof(char *) - 2)
-#define ARGVSTR2ARGV(argv_str) ((char **)RSTRING_PTR(argv_str) + 1)
-
-rb_pid_t rb_fork_ruby(int *status);
-void rb_last_status_clear(void);
/* rational.c */
VALUE rb_lcm(VALUE x, VALUE y);
@@ -269,24 +159,12 @@ VALUE rb_reg_check_preprocess(VALUE);
/* signal.c */
int rb_get_next_signal(void);
-int rb_sigaltstack_size(void);
/* strftime.c */
-#ifdef RUBY_ENCODING_H
-size_t rb_strftime_timespec(char *s, size_t maxsize, const char *format, rb_encoding *enc,
- const struct vtm *vtm, struct timespec *ts, int gmt);
-size_t rb_strftime(char *s, size_t maxsize, const char *format, rb_encoding *enc,
- const struct vtm *vtm, VALUE timev, int gmt);
-#endif
+size_t rb_strftime_timespec(char *s, size_t maxsize, const char *format, const struct vtm *vtm, struct timespec *ts, int gmt);
/* string.c */
int rb_str_buf_cat_escaped_char(VALUE result, unsigned int c, int unicode_p);
-int rb_str_symname_p(VALUE);
-VALUE rb_str_quote_unprintable(VALUE);
-VALUE rb_id_quote_unprintable(ID);
-#define QUOTE(str) rb_str_quote_unprintable(str)
-#define QUOTE_ID(id) rb_id_quote_unprintable(id)
-VALUE rb_str_locktmp_ensure(VALUE str, VALUE (*func)(VALUE), VALUE arg);
/* struct.c */
VALUE rb_struct_init_copy(VALUE copy, VALUE s);
@@ -296,17 +174,11 @@ struct timeval rb_time_timeval(VALUE);
/* thread.c */
VALUE rb_obj_is_mutex(VALUE obj);
-VALUE rb_suppress_tracing(VALUE (*func)(VALUE), VALUE arg);
+VALUE ruby_suppress_tracing(VALUE (*func)(VALUE, int), VALUE arg, int always);
void rb_thread_execute_interrupts(VALUE th);
void rb_clear_trace_func(void);
+VALUE rb_thread_backtrace(VALUE thval);
VALUE rb_get_coverages(void);
-VALUE rb_thread_shield_new(void);
-VALUE rb_thread_shield_wait(VALUE self);
-VALUE rb_thread_shield_release(VALUE self);
-VALUE rb_thread_shield_destroy(VALUE self);
-void rb_mutex_allow_trap(VALUE self, int val);
-VALUE rb_uninterruptible(VALUE (*b_proc)(ANYARGS), VALUE data);
-VALUE rb_mutex_owned_p(VALUE self);
/* thread_pthread.c, thread_win32.c */
void Init_native_thread(void);
@@ -321,8 +193,6 @@ void rb_vm_change_state(void);
void rb_vm_inc_const_missing_count(void);
void rb_thread_mark(void *th);
const void **rb_vm_get_insns_address_table(void);
-VALUE rb_sourcefilename(void);
-void rb_vm_pop_cfunc_frame(void);
/* vm_dump.c */
void rb_vm_bugreport(void);
@@ -330,29 +200,13 @@ void rb_vm_bugreport(void);
/* vm_eval.c */
void Init_vm_eval(void);
VALUE rb_current_realfilepath(void);
-VALUE rb_check_block_call(VALUE, ID, int, VALUE *, VALUE (*)(ANYARGS), VALUE);
-typedef void rb_check_funcall_hook(int, VALUE, ID, int, VALUE *, VALUE);
-VALUE rb_check_funcall_with_hook(VALUE recv, ID mid, int argc, VALUE *argv,
- rb_check_funcall_hook *hook, VALUE arg);
/* vm_method.c */
void Init_eval_method(void);
-int rb_method_defined_by(VALUE obj, ID mid, VALUE (*cfunc)(ANYARGS));
/* miniprelude.c, prelude.c */
void Init_prelude(void);
-/* vm_backtrace.c */
-void Init_vm_backtrace(void);
-VALUE vm_thread_backtrace(int argc, VALUE *argv, VALUE thval);
-VALUE vm_thread_backtrace_locations(int argc, VALUE *argv, VALUE thval);
-
-VALUE rb_make_backtrace(void);
-void rb_backtrace_print_as_bugreport(void);
-int rb_backtrace_p(VALUE obj);
-VALUE rb_backtrace_to_str_ary(VALUE obj);
-VALUE rb_vm_backtrace_object();
-
#if defined __GNUC__ && __GNUC__ >= 4
#pragma GCC visibility push(default)
#endif
@@ -361,25 +215,15 @@ const char *rb_objspace_data_type_name(VALUE obj);
/* Temporary. This API will be removed (renamed). */
VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd);
-/* io.c */
-void rb_maygvl_fd_fix_cloexec(int fd);
-
-/* process.c */
-int rb_exec_async_signal_safe(const struct rb_execarg *e, char *errmsg, size_t errmsg_buflen);
-rb_pid_t rb_fork_async_signal_safe(int *status, int (*chfunc)(void*, char *, size_t), void *charg, VALUE fds, char *errmsg, size_t errmsg_buflen);
-VALUE rb_execarg_new(int argc, VALUE *argv, int accept_shell);
-struct rb_execarg *rb_execarg_get(VALUE execarg_obj); /* dangerous. needs GC guard. */
-VALUE rb_execarg_init(int argc, VALUE *argv, int accept_shell, VALUE execarg_obj);
-int rb_execarg_addopt(VALUE execarg_obj, VALUE key, VALUE val);
-void rb_execarg_fixup(VALUE execarg_obj);
-int rb_execarg_run_options(const struct rb_execarg *e, struct rb_execarg *s, char* errmsg, size_t errmsg_buflen);
-VALUE rb_execarg_extract_options(VALUE execarg_obj, VALUE opthash);
-void rb_execarg_setenv(VALUE execarg_obj, VALUE env);
-
-/* variable.c */
-void rb_gc_mark_global_tbl(void);
-void rb_mark_generic_ivar(VALUE);
-void rb_mark_generic_ivar_tbl(void);
+/* experimental.
+ * These APIs can be changed on Ruby 1.9.4 or later.
+ * We will change these APIs (spac, name and so on) if there are something wrong.
+ * If you use these APIs, catch up future changes.
+ */
+void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1);
+VALUE rb_thread_call_without_gvl(
+ rb_blocking_function_t *func, void *data1,
+ rb_unblock_function_t *ubf, void *data2);
#if defined __GNUC__ && __GNUC__ >= 4
#pragma GCC visibility pop
diff --git a/io.c b/io.c
index 786b8883a8..36eb39d3d6 100644
--- a/io.c
+++ b/io.c
@@ -13,13 +13,10 @@
#include "ruby/ruby.h"
#include "ruby/io.h"
-#include "ruby/thread.h"
#include "dln.h"
#include "internal.h"
-#include "id.h"
#include <ctype.h>
#include <errno.h>
-#include "ruby_atomic.h"
#define free(x) xfree(x)
@@ -31,16 +28,14 @@
#if defined HAVE_NET_SOCKET_H
# include <net/socket.h>
#elif defined HAVE_SYS_SOCKET_H
-# ifndef __native_client__
-# include <sys/socket.h>
-# endif
+# include <sys/socket.h>
#endif
#if defined(__BOW__) || defined(__CYGWIN__) || defined(_WIN32) || defined(__EMX__) || defined(__BEOS__) || defined(__HAIKU__)
# define NO_SAFE_RENAME
#endif
-#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__sun) || defined(_nec_ews)
+#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(sun) || defined(_nec_ews)
# define USE_SETVBUF
#endif
@@ -52,9 +47,6 @@
#if defined(HAVE_SYS_IOCTL_H) && !defined(_WIN32)
#include <sys/ioctl.h>
#endif
-#if defined(__native_client__) && defined(NACL_NEWLIB)
-# include "nacl/ioctl.h"
-#endif
#if defined(HAVE_FCNTL_H) || defined(_WIN32)
#include <fcntl.h>
#elif defined(HAVE_SYS_FCNTL_H)
@@ -110,11 +102,6 @@
# endif
#endif
-#if defined(HAVE___SYSCALL) && (defined(__APPLE__) || defined(__OpenBSD__))
-/* Mac OS X and OpenBSD have __syscall but don't define it in headers */
-off_t __syscall(quad_t number, ...);
-#endif
-
#define numberof(array) (int)(sizeof(array) / sizeof((array)[0]))
#define IO_RBUF_CAPA_MIN 8192
@@ -159,149 +146,38 @@ struct argf {
int8_t init_p, next_p, binmode;
};
-static rb_atomic_t max_file_descriptor = NOFILE;
+static int max_file_descriptor = NOFILE;
void
rb_update_max_fd(int fd)
{
struct stat buf;
- rb_atomic_t afd = (rb_atomic_t)fd;
-
if (fstat(fd, &buf) != 0 && errno == EBADF) {
rb_bug("rb_update_max_fd: invalid fd (%d) given.", fd);
}
-
- while (max_file_descriptor < afd) {
- ATOMIC_CAS(max_file_descriptor, max_file_descriptor, afd);
- }
+ if (max_file_descriptor < fd) max_file_descriptor = fd;
}
void
rb_maygvl_fd_fix_cloexec(int fd)
{
/* MinGW don't have F_GETFD and FD_CLOEXEC. [ruby-core:40281] */
-#if defined(HAVE_FCNTL) && defined(F_GETFD) && defined(F_SETFD) && defined(FD_CLOEXEC)
- int flags, flags2, ret;
- flags = fcntl(fd, F_GETFD); /* should not fail except EBADF. */
- if (flags == -1) {
- rb_bug("rb_maygvl_fd_fix_cloexec: fcntl(%d, F_GETFD) failed: %s", fd, strerror(errno));
- }
- if (fd <= 2)
- flags2 = flags & ~FD_CLOEXEC; /* Clear CLOEXEC for standard file descriptors: 0, 1, 2. */
- else
- flags2 = flags | FD_CLOEXEC; /* Set CLOEXEC for non-standard file descriptors: 3, 4, 5, ... */
- if (flags != flags2) {
- ret = fcntl(fd, F_SETFD, flags2);
- if (ret == -1) {
- rb_bug("rb_maygvl_fd_fix_cloexec: fcntl(%d, F_SETFD, %d) failed: %s", fd, flags2, strerror(errno));
- }
- }
-#endif
-}
-
-void
-rb_fd_fix_cloexec(int fd)
-{
- rb_maygvl_fd_fix_cloexec(fd);
- rb_update_max_fd(fd);
-}
-
-int
-rb_cloexec_open(const char *pathname, int flags, mode_t mode)
-{
- int ret;
-#ifdef O_CLOEXEC
- /* O_CLOEXEC is available since Linux 2.6.23. Linux 2.6.18 silently ignore it. */
- flags |= O_CLOEXEC;
-#elif defined O_NOINHERIT
- flags |= O_NOINHERIT;
-#endif
- ret = open(pathname, flags, mode);
- if (ret == -1) return -1;
- rb_maygvl_fd_fix_cloexec(ret);
- return ret;
-}
-
-int
-rb_cloexec_dup(int oldfd)
-{
- /* Don't allocate standard file descriptors: 0, 1, 2 */
- return rb_cloexec_fcntl_dupfd(oldfd, 3);
-}
-
-int
-rb_cloexec_dup2(int oldfd, int newfd)
-{
- int ret;
-
- /* When oldfd == newfd, dup2 succeeds but dup3 fails with EINVAL.
- * rb_cloexec_dup2 succeeds as dup2. */
- if (oldfd == newfd) {
- ret = newfd;
- }
- else {
-#if defined(HAVE_DUP3) && defined(O_CLOEXEC)
- static int try_dup3 = 1;
- if (2 < newfd && try_dup3) {
- ret = dup3(oldfd, newfd, O_CLOEXEC);
- if (ret != -1)
- return ret;
- /* dup3 is available since Linux 2.6.27, glibc 2.9. */
- if (errno == ENOSYS) {
- try_dup3 = 0;
- ret = dup2(oldfd, newfd);
- }
- }
- else {
- ret = dup2(oldfd, newfd);
- }
-#else
- ret = dup2(oldfd, newfd);
-# ifdef _WIN32
- if (newfd >= 0 && newfd <= 2)
- SetStdHandle(newfd == 0 ? STD_INPUT_HANDLE : newfd == 1 ? STD_OUTPUT_HANDLE : STD_ERROR_HANDLE, (HANDLE)rb_w32_get_osfhandle(newfd));
-# endif
-#endif
- if (ret == -1) return -1;
- }
- rb_maygvl_fd_fix_cloexec(ret);
- return ret;
-}
-
-int
-rb_cloexec_pipe(int fildes[2])
-{
- int ret;
-
-#if defined(HAVE_PIPE2)
- static int try_pipe2 = 1;
- if (try_pipe2) {
- ret = pipe2(fildes, O_CLOEXEC);
- if (ret != -1)
- return ret;
- /* pipe2 is available since Linux 2.6.27, glibc 2.9. */
- if (errno == ENOSYS) {
- try_pipe2 = 0;
- ret = pipe(fildes);
- }
- }
- else {
- ret = pipe(fildes);
- }
-#else
- ret = pipe(fildes);
-#endif
- if (ret == -1) return -1;
-#ifdef __CYGWIN__
- if (ret == 0 && fildes[1] == -1) {
- close(fildes[0]);
- fildes[0] = -1;
- errno = ENFILE;
- return -1;
+#ifdef F_GETFD
+ int flags, flags2, ret;
+ flags = fcntl(fd, F_GETFD); /* should not fail except EBADF. */
+ if (flags == -1) {
+ rb_bug("rb_maygvl_fd_fix_cloexec: fcntl(%d, F_GETFD) failed: %s", fd, strerror(errno));
+ }
+ if (fd <= 2)
+ flags2 = flags & ~FD_CLOEXEC; /* Clear CLOEXEC for standard file descriptors: 0, 1, 2. */
+ else
+ flags2 = flags | FD_CLOEXEC; /* Set CLOEXEC for non-standard file descriptors: 3, 4, 5, ... */
+ if (flags != flags2) {
+ ret = fcntl(fd, F_SETFD, flags2);
+ if (ret == -1) {
+ rb_bug("rb_maygvl_fd_fix_cloexec: fcntl(%d, F_SETFD, %d) failed: %s", fd, flags2, strerror(errno));
}
+ }
#endif
- rb_maygvl_fd_fix_cloexec(fildes[0]);
- rb_maygvl_fd_fix_cloexec(fildes[1]);
- return ret;
}
int
@@ -309,38 +185,31 @@ rb_cloexec_fcntl_dupfd(int fd, int minfd)
{
int ret;
-#if defined(HAVE_FCNTL) && defined(F_DUPFD_CLOEXEC) && defined(F_DUPFD)
+#if defined(HAVE_FCNTL) && defined(F_DUPFD_CLOEXEC)
static int try_dupfd_cloexec = 1;
if (try_dupfd_cloexec) {
- ret = fcntl(fd, F_DUPFD_CLOEXEC, minfd);
- if (ret != -1) {
- if (ret <= 2)
- rb_maygvl_fd_fix_cloexec(ret);
- return ret;
- }
- /* F_DUPFD_CLOEXEC is available since Linux 2.6.24. Linux 2.6.18 fails with EINVAL */
- if (errno == EINVAL) {
- ret = fcntl(fd, F_DUPFD, minfd);
- if (ret != -1) {
- try_dupfd_cloexec = 0;
- }
- }
+ ret = fcntl(fd, F_DUPFD_CLOEXEC, minfd);
+ if (ret != -1) {
+ if (ret <= 2)
+ rb_maygvl_fd_fix_cloexec(ret);
+ return ret;
+ }
+ /* F_DUPFD_CLOEXEC is available since Linux 2.6.24. Linux 2.6.18 fails with EINVAL */
+ if (errno == EINVAL) {
+ ret = fcntl(fd, F_DUPFD, minfd);
+ if (ret != -1) {
+ try_dupfd_cloexec = 0;
+ }
+ }
}
else {
- ret = fcntl(fd, F_DUPFD, minfd);
+ ret = fcntl(fd, F_DUPFD, minfd);
}
-#elif defined(HAVE_FCNTL) && defined(F_DUPFD)
+#elif defined(F_DUPFD)
ret = fcntl(fd, F_DUPFD, minfd);
-#elif defined(HAVE_DUP)
- ret = dup(fd);
- if (ret != -1 && ret < minfd) {
- const int prev_fd = ret;
- ret = rb_cloexec_fcntl_dupfd(fd, minfd);
- close(prev_fd);
- }
- return ret;
#else
-# error "dup() or fcntl(F_DUPFD) must be supported."
+ ret = -1;
+ errno = EINVAL;
#endif
if (ret == -1) return -1;
rb_maygvl_fd_fix_cloexec(ret);
@@ -577,26 +446,18 @@ is_socket(int fd, VALUE path)
}
#endif
-static const char closed_stream[] = "closed stream";
-
void
rb_eof_error(void)
{
rb_raise(rb_eEOFError, "end of file reached");
}
-static VALUE
-taint_check(VALUE io)
-{
- if (!OBJ_UNTRUSTED(io) && rb_safe_level() >= 4)
- rb_raise(rb_eSecurityError, "Insecure: operation on trusted IO");
- return io;
-}
-
VALUE
rb_io_taint_check(VALUE io)
{
- rb_check_frozen(taint_check(io));
+ if (!OBJ_UNTRUSTED(io) && rb_safe_level() >= 4)
+ rb_raise(rb_eSecurityError, "Insecure: operation on trusted IO");
+ rb_check_frozen(io);
return io;
}
@@ -613,7 +474,7 @@ rb_io_check_closed(rb_io_t *fptr)
{
rb_io_check_initialized(fptr);
if (fptr->fd < 0) {
- rb_raise(rb_eIOError, closed_stream);
+ rb_raise(rb_eIOError, "closed stream");
}
}
@@ -624,7 +485,7 @@ rb_io_get_io(VALUE io)
return rb_convert_type(io, T_FILE, "IO", "to_io");
}
-VALUE
+static VALUE
rb_io_check_io(VALUE io)
{
return rb_check_convert_type(io, T_FILE, "IO", "to_io");
@@ -757,6 +618,8 @@ flush_before_seek(rb_io_t *fptr)
# define SEEK_END 2
#endif
+#define FMODE_SYNCWRITE (FMODE_SYNC|FMODE_WRITABLE)
+
void
rb_io_check_char_readable(rb_io_t *fptr)
{
@@ -852,11 +715,11 @@ ruby_dup(int orig)
{
int fd;
- fd = rb_cloexec_dup(orig);
+ fd = dup(orig);
if (fd < 0) {
if (errno == EMFILE || errno == ENFILE || errno == ENOMEM) {
rb_gc();
- fd = rb_cloexec_dup(orig);
+ fd = dup(orig);
}
if (fd < 0) {
rb_sys_fail(0);
@@ -869,7 +732,8 @@ ruby_dup(int orig)
static VALUE
io_alloc(VALUE klass)
{
- NEWOBJ_OF(io, struct RFile, klass, T_FILE);
+ NEWOBJ(io, struct RFile);
+ OBJSETUP(io, klass, T_FILE);
io->fptr = 0;
@@ -929,13 +793,6 @@ internal_write_func(void *ptr)
return write(iis->fd, iis->buf, iis->capa);
}
-static void*
-internal_write_func2(void *ptr)
-{
- struct io_internal_write_struct *iis = ptr;
- return (void*)(intptr_t)write(iis->fd, iis->buf, iis->capa);
-}
-
static ssize_t
rb_read_internal(int fd, void *buf, size_t count)
{
@@ -958,18 +815,6 @@ rb_write_internal(int fd, const void *buf, size_t count)
return (ssize_t)rb_thread_io_blocking_region(internal_write_func, &iis, fd);
}
-static ssize_t
-rb_write_internal2(int fd, const void *buf, size_t count)
-{
- struct io_internal_write_struct iis;
- iis.fd = fd;
- iis.buf = buf;
- iis.capa = count;
-
- return (ssize_t)rb_thread_call_without_gvl2(internal_write_func2, &iis,
- RUBY_UBF_IO, NULL);
-}
-
static long
io_writable_length(rb_io_t *fptr, long l)
{
@@ -1001,18 +846,6 @@ io_flush_buffer_sync(void *arg)
return (VALUE)-1;
}
-static void*
-io_flush_buffer_sync2(void *arg)
-{
- VALUE result = io_flush_buffer_sync(arg);
-
- /*
- * rb_thread_call_without_gvl2 uses 0 as interrupted.
- * So, we need to avoid to use 0.
- */
- return !result ? (void*)1 : (void*)result;
-}
-
static VALUE
io_flush_buffer_async(VALUE arg)
{
@@ -1020,33 +853,11 @@ io_flush_buffer_async(VALUE arg)
return rb_thread_io_blocking_region(io_flush_buffer_sync, fptr, fptr->fd);
}
-static VALUE
-io_flush_buffer_async2(VALUE arg)
-{
- rb_io_t *fptr = (rb_io_t *)arg;
- VALUE ret;
-
- ret = (VALUE)rb_thread_call_without_gvl2(io_flush_buffer_sync2, fptr,
- RUBY_UBF_IO, NULL);
-
- if (!ret) {
- /* pending async interrupt is there. */
- errno = EAGAIN;
- return -1;
- } else if (ret == 1) {
- return 0;
- } else
- return ret;
-}
-
static inline int
io_flush_buffer(rb_io_t *fptr)
{
if (fptr->write_lock) {
- if (rb_mutex_owned_p(fptr->write_lock))
- return (int)io_flush_buffer_async2((VALUE)fptr);
- else
- return (int)rb_mutex_synchronize(fptr->write_lock, io_flush_buffer_async2, (VALUE)fptr);
+ return (int)rb_mutex_synchronize(fptr->write_lock, io_flush_buffer_async, (VALUE)fptr);
}
else {
return (int)io_flush_buffer_async((VALUE)fptr);
@@ -1059,7 +870,9 @@ io_fflush(rb_io_t *fptr)
rb_io_check_closed(fptr);
if (fptr->wbuf.len == 0)
return 0;
- rb_io_check_closed(fptr);
+ if (!rb_thread_fd_writable(fptr->fd)) {
+ rb_io_check_closed(fptr);
+ }
while (fptr->wbuf.len > 0 && io_flush_buffer(fptr) != 0) {
if (!rb_io_wait_writable(fptr->fd))
return -1;
@@ -1072,21 +885,21 @@ int
rb_io_wait_readable(int f)
{
if (f < 0) {
- rb_raise(rb_eIOError, closed_stream);
+ rb_raise(rb_eIOError, "closed stream");
}
switch (errno) {
case EINTR:
#if defined(ERESTART)
case ERESTART:
#endif
- rb_thread_check_ints();
+ rb_thread_wait_fd(f);
return TRUE;
case EAGAIN:
#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
case EWOULDBLOCK:
#endif
- rb_thread_wait_fd(f);
+ rb_wait_for_single_fd(f, RB_WAITFD_IN, NULL);
return TRUE;
default:
@@ -1098,30 +911,21 @@ int
rb_io_wait_writable(int f)
{
if (f < 0) {
- rb_raise(rb_eIOError, closed_stream);
+ rb_raise(rb_eIOError, "closed stream");
}
switch (errno) {
case EINTR:
#if defined(ERESTART)
case ERESTART:
#endif
- /*
- * In old Linux, several special files under /proc and /sys don't handle
- * select properly. Thus we need avoid to call if don't use O_NONBLOCK.
- * Otherwise, we face nasty hang up. Sigh.
- * e.g. http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=31b07093c44a7a442394d44423e21d783f5523b8
- * http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=31b07093c44a7a442394d44423e21d783f5523b8
- * In EINTR case, we only need to call RUBY_VM_CHECK_INTS_BLOCKING().
- * Then rb_thread_check_ints() is enough.
- */
- rb_thread_check_ints();
+ rb_thread_fd_writable(f);
return TRUE;
case EAGAIN:
#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
case EWOULDBLOCK:
#endif
- rb_thread_fd_writable(f);
+ rb_wait_for_single_fd(f, RB_WAITFD_OUT, NULL);
return TRUE;
default:
@@ -1203,7 +1007,7 @@ io_binwrite_string(VALUE arg)
{
struct binwrite_arg *p = (struct binwrite_arg *)arg;
long l = io_writable_length(p->fptr, p->length);
- return rb_write_internal2(p->fptr->fd, p->ptr, l);
+ return rb_write_internal(p->fptr->fd, p->ptr, l);
}
static long
@@ -1211,9 +1015,6 @@ io_binwrite(VALUE str, const char *ptr, long len, rb_io_t *fptr, int nosync)
{
long n, r, offset = 0;
- /* don't write anything if current thread has a pending interrupt. */
- rb_thread_check_ints();
-
if ((n = len) <= 0) return n;
if (fptr->wbuf.ptr == NULL && !(!nosync && (fptr->mode & FMODE_SYNC))) {
fptr->wbuf.off = 0;
@@ -1221,18 +1022,12 @@ io_binwrite(VALUE str, const char *ptr, long len, rb_io_t *fptr, int nosync)
fptr->wbuf.capa = IO_WBUF_CAPA_MIN;
fptr->wbuf.ptr = ALLOC_N(char, fptr->wbuf.capa);
fptr->write_lock = rb_mutex_new();
- rb_mutex_allow_trap(fptr->write_lock, 1);
}
if ((!nosync && (fptr->mode & (FMODE_SYNC|FMODE_TTY))) ||
(fptr->wbuf.ptr && fptr->wbuf.capa <= fptr->wbuf.len + len)) {
struct binwrite_arg arg;
- /*
- * xxx: use writev to avoid double write if available
- * writev may help avoid context switch between "a" and "\n" in
- * STDERR.puts "a" [ruby-dev:25080] (rebroken since native threads
- * introduced in 1.9)
- */
+ /* xxx: use writev to avoid double write if available */
if (fptr->wbuf.len && fptr->wbuf.len+len <= fptr->wbuf.capa) {
if (fptr->wbuf.capa < fptr->wbuf.off+fptr->wbuf.len+len) {
MEMMOVE(fptr->wbuf.ptr, fptr->wbuf.ptr+fptr->wbuf.off, char, fptr->wbuf.len);
@@ -1246,8 +1041,11 @@ io_binwrite(VALUE str, const char *ptr, long len, rb_io_t *fptr, int nosync)
return -1L;
if (n == 0)
return len;
-
- rb_io_check_closed(fptr);
+ /* avoid context switch between "a" and "\n" in STDERR.puts "a".
+ [ruby-dev:25080] */
+ if (fptr->stdio_file != stderr && !rb_thread_fd_writable(fptr->fd)) {
+ rb_io_check_closed(fptr);
+ }
arg.fptr = fptr;
arg.str = str;
retry:
@@ -1384,8 +1182,6 @@ io_write(VALUE io, VALUE str, int nosync)
io = tmp;
if (RSTRING_LEN(str) == 0) return INT2FIX(0);
- str = rb_str_new_frozen(str);
-
GetOpenFile(io, fptr);
rb_io_check_writable(fptr);
@@ -1448,16 +1244,6 @@ rb_io_addstr(VALUE io, VALUE str)
return io;
}
-#ifdef HAVE_FSYNC
-static VALUE
-nogvl_fsync(void *ptr)
-{
- rb_io_t *fptr = ptr;
-
- return (VALUE)fsync(fptr->fd);
-}
-#endif
-
/*
* call-seq:
* ios.flush -> ios
@@ -1479,7 +1265,7 @@ rb_io_flush(VALUE io)
{
rb_io_t *fptr;
- if (!RB_TYPE_P(io, T_FILE)) {
+ if (TYPE(io) != T_FILE) {
return rb_funcall(io, id_flush, 0);
}
@@ -1490,9 +1276,9 @@ rb_io_flush(VALUE io)
if (io_fflush(fptr) < 0)
rb_sys_fail(0);
#ifdef _WIN32
- if (GetFileType((HANDLE)rb_w32_get_osfhandle(fptr->fd)) == FILE_TYPE_DISK) {
- rb_thread_io_blocking_region(nogvl_fsync, fptr, fptr->fd);
- }
+ if (GetFileType((HANDLE)rb_w32_get_osfhandle(fptr->fd)) == FILE_TYPE_DISK) {
+ fsync(fptr->fd);
+ }
#endif
}
if (fptr->mode & FMODE_READABLE) {
@@ -1581,8 +1367,6 @@ rb_io_seek_m(int argc, VALUE *argv, VALUE io)
* ios.pos = integer -> integer
*
* Seeks to the given position (in bytes) in <em>ios</em>.
- * It is not guranteed that seeking to the right position when <em>ios</em>
- * is textmode.
*
* f = File.new("testfile")
* f.pos = 17
@@ -1755,8 +1539,6 @@ rb_io_sync(VALUE io)
return (fptr->mode & FMODE_SYNC) ? Qtrue : Qfalse;
}
-#ifdef HAVE_FSYNC
-
/*
* call-seq:
* ios.sync = boolean -> boolean
@@ -1788,6 +1570,14 @@ rb_io_set_sync(VALUE io, VALUE sync)
return sync;
}
+#ifdef HAVE_FSYNC
+static VALUE nogvl_fsync(void *ptr)
+{
+ rb_io_t *fptr = ptr;
+
+ return (VALUE)fsync(fptr->fd);
+}
+
/*
* call-seq:
* ios.fsync -> 0 or nil
@@ -1795,7 +1585,7 @@ rb_io_set_sync(VALUE io, VALUE sync)
* Immediately writes all buffered data in <em>ios</em> to disk.
* Note that <code>fsync</code> differs from
* using <code>IO#sync=</code>. The latter ensures that data is flushed
- * from Ruby's buffers, but does not guarantee that the underlying
+ * from Ruby's buffers, but doesn't not guarantee that the underlying
* operating system actually writes it to disk.
*
* <code>NotImplementedError</code> is raised
@@ -1812,26 +1602,18 @@ rb_io_fsync(VALUE io)
if (io_fflush(fptr) < 0)
rb_sys_fail(0);
-# ifndef _WIN32 /* already called in io_fflush() */
+#ifndef _WIN32 /* already called in io_fflush() */
if ((int)rb_thread_io_blocking_region(nogvl_fsync, fptr, fptr->fd) < 0)
rb_sys_fail_path(fptr->pathv);
-# endif
+#endif
return INT2FIX(0);
}
#else
-# define rb_io_fsync rb_f_notimplement
-# define rb_io_sync rb_f_notimplement
-static VALUE
-rb_io_set_sync(VALUE io, VALUE sync)
-{
- rb_notimplement();
- UNREACHABLE;
-}
+#define rb_io_fsync rb_f_notimplement
#endif
#ifdef HAVE_FDATASYNC
-static VALUE
-nogvl_fdatasync(void *ptr)
+static VALUE nogvl_fdatasync(void *ptr)
{
rb_io_t *fptr = ptr;
@@ -1885,10 +1667,10 @@ rb_io_fdatasync(VALUE io)
static VALUE
rb_io_fileno(VALUE io)
{
- rb_io_t *fptr = RFILE(io)->fptr;
+ rb_io_t *fptr;
int fd;
- rb_io_check_closed(fptr);
+ GetOpenFile(io, fptr);
fd = fptr->fd;
return INT2FIX(fd);
}
@@ -1940,7 +1722,7 @@ rb_io_inspect(VALUE obj)
VALUE result;
static const char closed[] = " (closed)";
- fptr = RFILE(taint_check(obj))->fptr;
+ fptr = RFILE(rb_io_taint_check(obj))->fptr;
if (!fptr) return rb_any_to_s(obj);
result = rb_str_new_cstr("#<");
rb_str_append(result, rb_class_name(CLASS_OF(obj)));
@@ -2009,6 +1791,7 @@ io_bufread(char *ptr, long len, rb_io_t *fptr)
}
offset += c;
if ((n -= c) <= 0) break;
+ rb_thread_wait_fd(fptr->fd);
}
return len - n;
}
@@ -2019,6 +1802,7 @@ io_bufread(char *ptr, long len, rb_io_t *fptr)
offset += c;
if ((n -= c) <= 0) break;
}
+ rb_thread_wait_fd(fptr->fd);
rb_io_check_closed(fptr);
if (io_fillbuf(fptr) < 0) {
break;
@@ -2027,34 +1811,15 @@ io_bufread(char *ptr, long len, rb_io_t *fptr)
return len - n;
}
-static void io_setstrbuf(VALUE *str, long len);
-
-struct bufread_arg {
- char *str_ptr;
- long len;
- rb_io_t *fptr;
-};
-
-static VALUE
-bufread_call(VALUE arg)
-{
- struct bufread_arg *p = (struct bufread_arg *)arg;
- p->len = io_bufread(p->str_ptr, p->len, p->fptr);
- return Qundef;
-}
-
static long
-io_fread(VALUE str, long offset, long size, rb_io_t *fptr)
+io_fread(VALUE str, long offset, rb_io_t *fptr)
{
long len;
- struct bufread_arg arg;
-
- io_setstrbuf(&str, offset + size);
- arg.str_ptr = RSTRING_PTR(str) + offset;
- arg.len = size;
- arg.fptr = fptr;
- rb_str_locktmp_ensure(str, bufread_call, (VALUE)&arg);
- len = arg.len;
+
+ rb_str_locktmp(str);
+ len = io_bufread(RSTRING_PTR(str) + offset, RSTRING_LEN(str) - offset,
+ fptr);
+ rb_str_unlocktmp(str);
if (len < 0) rb_sys_fail_path(fptr->pathv);
return len;
}
@@ -2249,33 +2014,29 @@ io_shift_cbuf(rb_io_t *fptr, int len, VALUE *strp)
}
static void
-io_setstrbuf(VALUE *str, long len)
+io_setstrbuf(VALUE *str,long len)
{
#ifdef _WIN32
- len = (len + 1) & ~1L; /* round up for wide char */
-#endif
if (NIL_P(*str)) {
- *str = rb_str_new(0, 0);
+ *str = rb_str_new(0, len+1);
+ rb_str_set_len(*str,len);
}
else {
- VALUE s = StringValue(*str);
- long clen = RSTRING_LEN(s);
- if (clen >= len) {
- rb_str_modify(s);
- return;
- }
- len -= clen;
+ StringValue(*str);
+ rb_str_modify(*str);
+ rb_str_resize(*str, len+1);
+ rb_str_set_len(*str,len);
}
- rb_str_modify_expand(*str, len);
-}
-
-static void
-io_set_read_length(VALUE str, long n)
-{
- if (RSTRING_LEN(str) != n) {
- rb_str_modify(str);
- rb_str_set_len(str, n);
+#else
+ if (NIL_P(*str)) {
+ *str = rb_str_new(0, len);
+ }
+ else {
+ StringValue(*str);
+ rb_str_modify(*str);
+ rb_str_resize(*str, len);
}
+#endif
}
static VALUE
@@ -2288,27 +2049,23 @@ read_all(rb_io_t *fptr, long siz, VALUE str)
int cr;
if (NEED_READCONV(fptr)) {
- int first = !NIL_P(str);
SET_BINARY_MODE(fptr);
io_setstrbuf(&str,0);
make_readconv(fptr, 0);
while (1) {
VALUE v;
if (fptr->cbuf.len) {
- if (first) rb_str_set_len(str, first = 0);
io_shift_cbuf(fptr, fptr->cbuf.len, &str);
}
v = fill_cbuf(fptr, 0);
if (v != MORE_CHAR_SUSPENDED && v != MORE_CHAR_FINISHED) {
if (fptr->cbuf.len) {
- if (first) rb_str_set_len(str, first = 0);
io_shift_cbuf(fptr, fptr->cbuf.len, &str);
}
rb_exc_raise(v);
}
if (v == MORE_CHAR_FINISHED) {
clear_readconv(fptr);
- if (first) rb_str_set_len(str, first = 0);
return io_enc_str(str, fptr);
}
}
@@ -2325,19 +2082,18 @@ read_all(rb_io_t *fptr, long siz, VALUE str)
io_setstrbuf(&str,siz);
for (;;) {
READ_CHECK(fptr);
- n = io_fread(str, bytes, siz - bytes, fptr);
+ n = io_fread(str, bytes, fptr);
if (n == 0 && bytes == 0) {
- rb_str_set_len(str, 0);
break;
}
bytes += n;
- rb_str_set_len(str, bytes);
if (cr != ENC_CODERANGE_BROKEN)
pos += rb_str_coderange_scan_restartable(RSTRING_PTR(str) + pos, RSTRING_PTR(str) + bytes, enc, &cr);
if (bytes < siz) break;
siz += BUFSIZ;
- rb_str_modify_expand(str, BUFSIZ);
+ rb_str_resize(str, siz);
}
+ if (bytes != siz) rb_str_resize(str, bytes);
str = io_enc_str(str, fptr);
ENC_CODERANGE_SET(str, cr);
return str;
@@ -2363,27 +2119,12 @@ rb_io_set_nonblock(rb_io_t *fptr)
}
}
-struct read_internal_arg {
- int fd;
- char *str_ptr;
- long len;
-};
-
-static VALUE
-read_internal_call(VALUE arg)
-{
- struct read_internal_arg *p = (struct read_internal_arg *)arg;
- p->len = rb_read_internal(p->fd, p->str_ptr, p->len);
- return Qundef;
-}
-
static VALUE
io_getpartial(int argc, VALUE *argv, VALUE io, int nonblock)
{
rb_io_t *fptr;
VALUE length, str;
long n, len;
- struct read_internal_arg arg;
rb_scan_args(argc, argv, "11", &length, &str);
@@ -2408,12 +2149,9 @@ io_getpartial(int argc, VALUE *argv, VALUE io, int nonblock)
if (nonblock) {
rb_io_set_nonblock(fptr);
}
- io_setstrbuf(&str, len);
- arg.fd = fptr->fd;
- arg.str_ptr = RSTRING_PTR(str);
- arg.len = len;
- rb_str_locktmp_ensure(str, read_internal_call, (VALUE)&arg);
- n = arg.len;
+ rb_str_locktmp(str);
+ n = rb_read_internal(fptr->fd, RSTRING_PTR(str), len);
+ rb_str_unlocktmp(str);
if (n < 0) {
if (!nonblock && rb_io_wait_readable(fptr->fd))
goto again;
@@ -2422,7 +2160,7 @@ io_getpartial(int argc, VALUE *argv, VALUE io, int nonblock)
rb_sys_fail_path(fptr->pathv);
}
}
- io_set_read_length(str, n);
+ rb_str_resize(str, n);
if (n == 0)
return Qnil;
@@ -2440,8 +2178,6 @@ io_getpartial(int argc, VALUE *argv, VALUE io, int nonblock)
* It doesn't block if some data available.
* If the optional <i>outbuf</i> argument is present,
* it must reference a String, which will receive the data.
- * The <i>outbuf</i> will contain only the received data after the method call
- * even if it is not empty at the beginning.
* It raises <code>EOFError</code> on end of file.
*
* readpartial is designed for streams such as pipe, socket, tty, etc.
@@ -2497,7 +2233,8 @@ io_readpartial(int argc, VALUE *argv, VALUE io)
ret = io_getpartial(argc, argv, io, 0);
if (NIL_P(ret))
rb_eof_error();
- return ret;
+ else
+ return ret;
}
/*
@@ -2511,8 +2248,6 @@ io_readpartial(int argc, VALUE *argv, VALUE io)
*
* If the optional <i>outbuf</i> argument is present,
* it must reference a String, which will receive the data.
- * The <i>outbuf</i> will contain only the received data after the method call
- * even if it is not empty at the beginning.
*
* read_nonblock just calls the read(2) system call.
* It causes all errors the read(2) system call causes: Errno::EWOULDBLOCK, Errno::EINTR, etc.
@@ -2559,7 +2294,8 @@ io_read_nonblock(int argc, VALUE *argv, VALUE io)
ret = io_getpartial(argc, argv, io, 1);
if (NIL_P(ret))
rb_eof_error();
- return ret;
+ else
+ return ret;
}
/*
@@ -2622,7 +2358,7 @@ rb_io_write_nonblock(VALUE io, VALUE str)
long n;
rb_secure(4);
- if (!RB_TYPE_P(str, T_STRING))
+ if (TYPE(str) != T_STRING)
str = rb_obj_as_string(str);
io = GetWriteIO(io);
@@ -2646,7 +2382,7 @@ rb_io_write_nonblock(VALUE io, VALUE str)
/*
* call-seq:
- * ios.read([length [, outbuf]]) -> string, outbuf, or nil
+ * ios.read([length [, buffer]]) -> string, buffer, or nil
*
* Reads <i>length</i> bytes from the I/O stream.
*
@@ -2666,10 +2402,8 @@ rb_io_write_nonblock(VALUE io, VALUE str)
*
* If <i>length</i> is zero, it returns <code>""</code>.
*
- * If the optional <i>outbuf</i> argument is present, it must reference
+ * If the optional <i>buffer</i> argument is present, it must reference
* a String, which will receive the data.
- * The <i>outbuf</i> will contain only the received data after the method call
- * even if it is not empty at the beginning.
*
* At end of file, it returns <code>nil</code> or <code>""</code>
* depend on <i>length</i>.
@@ -2703,10 +2437,7 @@ rb_io_write_nonblock(VALUE io, VALUE str)
* }
*
* Note that this method behaves like fread() function in C.
- * This means it retry to invoke read(2) system call to read data with the specified length (or until EOF).
- * This behavior is preserved even if <i>ios</i> is non-blocking mode.
- * (This method is non-blocking flag insensitive as other methods.)
- * If you need the behavior like single read(2) system call,
+ * If you need the behavior like read(2) system call,
* consider readpartial, read_nonblock and sysread.
*/
@@ -2736,23 +2467,24 @@ io_read(int argc, VALUE *argv, VALUE io)
GetOpenFile(io, fptr);
rb_io_check_byte_readable(fptr);
- if (len == 0) {
- io_set_read_length(str, 0);
- return str;
- }
+ if (len == 0) return str;
READ_CHECK(fptr);
#if defined(RUBY_TEST_CRLF_ENVIRONMENT) || defined(_WIN32)
previous_mode = set_binary_mode_with_seek_cur(fptr);
#endif
- n = io_fread(str, 0, len, fptr);
- io_set_read_length(str, n);
+ n = io_fread(str, 0, fptr);
#if defined(RUBY_TEST_CRLF_ENVIRONMENT) || defined(_WIN32)
if (previous_mode == O_TEXT) {
setmode(fptr->fd, O_TEXT);
}
#endif
- if (n == 0) return Qnil;
+ if (n == 0) {
+ if (fptr->fd < 0) return Qnil;
+ rb_str_resize(str, 0);
+ return Qnil;
+ }
+ rb_str_resize(str, n);
OBJ_TAINT(str);
return str;
@@ -3283,6 +3015,11 @@ rb_io_readlines(int argc, VALUE *argv, VALUE io)
* ios.each_line(sep,limit) {|line| block } -> ios
* ios.each_line(...) -> an_enumerator
*
+ * ios.lines(sep=$/) {|line| block } -> ios
+ * ios.lines(limit) {|line| block } -> ios
+ * ios.lines(sep,limit) {|line| block } -> ios
+ * ios.lines(...) -> an_enumerator
+ *
* Executes the block for every line in <em>ios</em>, where lines are
* separated by <i>sep</i>. <em>ios</em> must be opened for
* reading or an <code>IOError</code> will be raised.
@@ -3317,20 +3054,10 @@ rb_io_each_line(int argc, VALUE *argv, VALUE io)
}
/*
- * This is a deprecated alias for <code>each_line</code>.
- */
-
-static VALUE
-rb_io_lines(int argc, VALUE *argv, VALUE io)
-{
- rb_warn("IO#lines is deprecated; use #each_line instead");
- if (!rb_block_given_p())
- return rb_enumeratorize(io, ID2SYM(rb_intern("each_line")), argc, argv);
- return rb_io_each_line(argc, argv, io);
-}
-
-/*
* call-seq:
+ * ios.bytes {|byte| block } -> ios
+ * ios.bytes -> an_enumerator
+ *
* ios.each_byte {|byte| block } -> ios
* ios.each_byte -> an_enumerator
*
@@ -3350,14 +3077,15 @@ static VALUE
rb_io_each_byte(VALUE io)
{
rb_io_t *fptr;
+ char *p, *e;
RETURN_ENUMERATOR(io, 0, 0);
GetOpenFile(io, fptr);
for (;;) {
while (fptr->rbuf.len > 0) {
- char *p = fptr->rbuf.ptr + fptr->rbuf.off++;
- fptr->rbuf.len--;
+ p = fptr->rbuf.ptr + fptr->rbuf.off++;
+ e = p + fptr->rbuf.len--;
rb_yield(INT2FIX(*p & 0xff));
errno = 0;
}
@@ -3370,19 +3098,6 @@ rb_io_each_byte(VALUE io)
return io;
}
-/*
- * This is a deprecated alias for <code>each_byte</code>.
- */
-
-static VALUE
-rb_io_bytes(VALUE io)
-{
- rb_warn("IO#bytes is deprecated; use #each_byte instead");
- if (!rb_block_given_p())
- return rb_enumeratorize(io, ID2SYM(rb_intern("each_byte")), 0, 0);
- return rb_io_each_byte(io);
-}
-
static VALUE
io_getc(rb_io_t *fptr, rb_encoding *enc)
{
@@ -3431,11 +3146,7 @@ io_getc(rb_io_t *fptr, rb_encoding *enc)
}
else {
io_shift_cbuf(fptr, MBCLEN_CHARFOUND_LEN(r), &str);
- cr = ENC_CODERANGE_VALID;
- if (MBCLEN_CHARFOUND_LEN(r) == 1 && rb_enc_asciicompat(read_enc) &&
- ISASCII(RSTRING_PTR(str)[0])) {
- cr = ENC_CODERANGE_7BIT;
- }
+ cr = ISASCII(r) ? ENC_CODERANGE_7BIT : ENC_CODERANGE_VALID;
}
str = io_enc_str(str, fptr);
ENC_CODERANGE_SET(str, cr);
@@ -3492,6 +3203,9 @@ io_getc(rb_io_t *fptr, rb_encoding *enc)
/*
* call-seq:
+ * ios.chars {|c| block } -> ios
+ * ios.chars -> an_enumerator
+ *
* ios.each_char {|c| block } -> ios
* ios.each_char -> an_enumerator
*
@@ -3524,19 +3238,6 @@ rb_io_each_char(VALUE io)
return io;
}
-/*
- * This is a deprecated alias for <code>each_char</code>.
- */
-
-static VALUE
-rb_io_chars(VALUE io)
-{
- rb_warn("IO#chars is deprecated; use #each_char instead");
- if (!rb_block_given_p())
- return rb_enumeratorize(io, ID2SYM(rb_intern("each_char")), 0, 0);
- return rb_io_each_char(io);
-}
-
/*
* call-seq:
@@ -3634,18 +3335,6 @@ rb_io_each_codepoint(VALUE io)
return io;
}
-/*
- * This is a deprecated alias for <code>each_codepoint</code>.
- */
-
-static VALUE
-rb_io_codepoints(VALUE io)
-{
- rb_warn("IO#codepoints is deprecated; use #each_codepoint instead");
- if (!rb_block_given_p())
- return rb_enumeratorize(io, ID2SYM(rb_intern("each_codepoint")), 0, 0);
- return rb_io_each_codepoint(io);
-}
/*
@@ -3718,7 +3407,7 @@ rb_io_getbyte(VALUE io)
GetOpenFile(io, fptr);
rb_io_check_byte_readable(fptr);
READ_CHECK(fptr);
- if (fptr->fd == 0 && (fptr->mode & FMODE_TTY) && RB_TYPE_P(rb_stdout, T_FILE)) {
+ if (fptr->fd == 0 && (fptr->mode & FMODE_TTY) && TYPE(rb_stdout) == T_FILE) {
rb_io_t *ofp;
GetOpenFile(rb_stdout, ofp);
if (ofp->mode & FMODE_TTY) {
@@ -3817,7 +3506,7 @@ rb_io_ungetc(VALUE io, VALUE c)
if (FIXNUM_P(c)) {
c = rb_enc_uint_chr(FIX2UINT(c), io_read_encoding(fptr));
}
- else if (RB_TYPE_P(c, T_BIGNUM)) {
+ else if (TYPE(c) == T_BIGNUM) {
c = rb_enc_uint_chr(NUM2UINT(c), io_read_encoding(fptr));
}
else {
@@ -3926,14 +3615,6 @@ rb_io_close_on_exec_p(VALUE io)
* f.close_on_exec = true
* system("cat", "/proc/self/fd/#{f.fileno}") # cat: /proc/self/fd/3: No such file or directory
* f.closed? #=> false
- *
- * Ruby sets close-on-exec flags of all file descriptors by default
- * since Ruby 2.0.0.
- * So you don't need to set by yourself.
- * Also, unsetting a close-on-exec flag can cause file descriptor leak
- * if another thread use fork() and exec() (via system() method for example).
- * If you really needs file descriptor inheritance to child process,
- * use spawn()'s argument such as fd=>fd.
*/
static VALUE
@@ -3994,10 +3675,7 @@ finish_writeconv(rb_io_t *fptr, int noalloc)
res = rb_econv_convert(fptr->writeconv, NULL, NULL, &dp, de, 0);
while (dp-ds) {
retry:
- if (fptr->write_lock && rb_mutex_owned_p(fptr->write_lock))
- r = rb_write_internal2(fptr->fd, ds, dp-ds);
- else
- r = rb_write_internal(fptr->fd, ds, dp-ds);
+ r = rb_write_internal(fptr->fd, ds, dp-ds);
if (r == dp-ds)
break;
if (0 <= r) {
@@ -4005,7 +3683,7 @@ finish_writeconv(rb_io_t *fptr, int noalloc)
}
if (rb_io_wait_writable(fptr->fd)) {
if (fptr->fd < 0)
- return noalloc ? Qtrue : rb_exc_new3(rb_eIOError, rb_str_new_cstr(closed_stream));
+ return noalloc ? Qtrue : rb_exc_new3(rb_eIOError, rb_str_new_cstr("closed stream"));
goto retry;
}
return noalloc ? Qtrue : INT2NUM(errno);
@@ -4052,51 +3730,10 @@ finish_writeconv_sync(VALUE arg)
return finish_writeconv(p->fptr, p->noalloc);
}
-static void*
-nogvl_close(void *ptr)
-{
- int *fd = ptr;
-
- return (void*)(intptr_t)close(*fd);
-}
-
-static int
-maygvl_close(int fd, int keepgvl)
-{
- if (keepgvl)
- return close(fd);
-
- /*
- * close() may block for certain file types (NFS, SO_LINGER sockets,
- * inotify), so let other threads run.
- */
- return (int)(intptr_t)rb_thread_call_without_gvl(nogvl_close, &fd, RUBY_UBF_IO, 0);
-}
-
-static void*
-nogvl_fclose(void *ptr)
-{
- FILE *file = ptr;
-
- return (void*)(intptr_t)fclose(file);
-}
-
-static int
-maygvl_fclose(FILE *file, int keepgvl)
-{
- if (keepgvl)
- return fclose(file);
-
- return (int)(intptr_t)rb_thread_call_without_gvl(nogvl_fclose, file, RUBY_UBF_IO, 0);
-}
-
static void
fptr_finalize(rb_io_t *fptr, int noraise)
{
VALUE err = Qnil;
- int fd = fptr->fd;
- FILE *stdio_file = fptr->stdio_file;
-
if (fptr->writeconv) {
if (fptr->write_lock && !noraise) {
struct finish_writeconv_arg arg;
@@ -4118,30 +3755,29 @@ fptr_finalize(rb_io_t *fptr, int noraise)
err = INT2NUM(errno);
}
}
-
- fptr->fd = -1;
- fptr->stdio_file = 0;
- fptr->mode &= ~(FMODE_READABLE|FMODE_WRITABLE);
-
- if (IS_PREP_STDIO(fptr) || fd <= 2) {
- /* need to keep FILE objects of stdin, stdout and stderr */
+ if (IS_PREP_STDIO(fptr) || fptr->fd <= 2) {
+ goto skip_fd_close;
}
- else if (stdio_file) {
- /* stdio_file is deallocated anyway
+ if (fptr->stdio_file) {
+ /* fptr->stdio_file is deallocated anyway
* even if fclose failed. */
- if ((maygvl_fclose(stdio_file, noraise) < 0) && NIL_P(err))
- err = noraise ? Qtrue : INT2NUM(errno);
+ if (fclose(fptr->stdio_file) < 0 && NIL_P(err))
+ err = noraise ? Qtrue : INT2NUM(errno);
}
- else if (0 <= fd) {
- /* fptr->fd may be closed even if close fails.
+ else if (0 <= fptr->fd) {
+ /* fptr->fd may be closed even if close fails.
* POSIX doesn't specify it.
* We assumes it is closed. */
- if ((maygvl_close(fd, noraise) < 0) && NIL_P(err))
- err = noraise ? Qtrue : INT2NUM(errno);
+ if (close(fptr->fd) < 0 && NIL_P(err))
+ err = noraise ? Qtrue : INT2NUM(errno);
}
+ skip_fd_close:
+ fptr->fd = -1;
+ fptr->stdio_file = 0;
+ fptr->mode &= ~(FMODE_READABLE|FMODE_WRITABLE);
if (!NIL_P(err) && !noraise) {
- switch (TYPE(err)) {
+ switch(TYPE(err)) {
case T_FIXNUM:
case T_BIGNUM:
errno = NUM2INT(err);
@@ -4250,11 +3886,16 @@ rb_io_close(VALUE io)
if (fptr->fd < 0) return Qnil;
fd = fptr->fd;
+#if defined __APPLE__ && defined(__MACH__) && \
+ (!defined(MAC_OS_X_VERSION_MIN_ALLOWED) || MAC_OS_X_VERSION_MIN_ALLOWED <= 1050)
+ /* close(2) on a fd which is being read by another thread causes
+ * deadlock on Mac OS X 10.5 */
rb_thread_fd_close(fd);
+#endif
rb_io_fptr_cleanup(fptr, FALSE);
+ rb_thread_fd_close(fd);
if (fptr->pid) {
- rb_last_status_clear();
rb_syswait(fptr->pid);
fptr->pid = 0;
}
@@ -4290,31 +3931,13 @@ rb_io_close_m(VALUE io)
static VALUE
io_call_close(VALUE io)
{
- rb_check_funcall(io, rb_intern("close"), 0, 0);
- return io;
-}
-
-static VALUE
-ignore_closed_stream(VALUE io, VALUE exc)
-{
- enum {mesg_len = sizeof(closed_stream)-1};
- VALUE mesg = rb_attr_get(exc, rb_intern("mesg"));
- if (!RB_TYPE_P(mesg, T_STRING) ||
- RSTRING_LEN(mesg) != mesg_len ||
- memcmp(RSTRING_PTR(mesg), closed_stream, mesg_len)) {
- rb_exc_raise(exc);
- }
- return io;
+ return rb_funcall(io, rb_intern("close"), 0, 0);
}
static VALUE
io_close(VALUE io)
{
- VALUE closed = rb_check_funcall(io, rb_intern("closed?"), 0, 0);
- if (closed != Qundef && RTEST(closed)) return io;
- rb_rescue2(io_call_close, io, ignore_closed_stream, io,
- rb_eIOError, (VALUE)0);
- return io;
+ return rb_rescue(io_call_close, io, 0, 0);
}
/*
@@ -4399,16 +4022,11 @@ rb_io_close_read(VALUE io)
write_io = GetWriteIO(io);
if (io != write_io) {
rb_io_t *wfptr;
+ rb_io_fptr_cleanup(fptr, FALSE);
GetOpenFile(write_io, wfptr);
- wfptr->pid = fptr->pid;
- fptr->pid = 0;
RFILE(io)->fptr = wfptr;
- /* bind to write_io temporarily to get rid of memory/fd leak */
- fptr->tied_io_for_writing = 0;
- fptr->mode &= ~FMODE_DUPLEX;
- RFILE(write_io)->fptr = fptr;
- rb_io_fptr_cleanup(fptr, FALSE);
- /* should not finalize fptr because another thread may be reading it */
+ RFILE(write_io)->fptr = NULL;
+ rb_io_fptr_finalize(fptr);
return Qnil;
}
@@ -4464,12 +4082,12 @@ rb_io_close_write(VALUE io)
rb_raise(rb_eIOError, "closing non-duplex IO for writing");
}
+ rb_io_close(write_io);
if (io != write_io) {
GetOpenFile(io, fptr);
fptr->tied_io_for_writing = 0;
fptr->mode &= ~FMODE_DUPLEX;
}
- rb_io_close(write_io);
return Qnil;
}
@@ -4533,21 +4151,21 @@ rb_io_syswrite(VALUE io, VALUE str)
long n;
rb_secure(4);
- if (!RB_TYPE_P(str, T_STRING))
+ if (TYPE(str) != T_STRING)
str = rb_obj_as_string(str);
io = GetWriteIO(io);
GetOpenFile(io, fptr);
rb_io_check_writable(fptr);
- str = rb_str_new_frozen(str);
-
if (fptr->wbuf.len) {
rb_warn("syswrite for buffered IO");
}
+ if (!rb_thread_fd_writable(fptr->fd)) {
+ rb_io_check_closed(fptr);
+ }
n = rb_write_internal(fptr->fd, RSTRING_PTR(str), RSTRING_LEN(str));
- RB_GC_GUARD(str);
if (n == -1) rb_sys_fail_path(fptr->pathv);
@@ -4563,8 +4181,6 @@ rb_io_syswrite(VALUE io, VALUE str)
* that read from <em>ios</em> or you may get unpredictable results.
* If the optional <i>outbuf</i> argument is present, it must reference
* a String, which will receive the data.
- * The <i>outbuf</i> will contain only the received data after the method call
- * even if it is not empty at the beginning.
* Raises <code>SystemCallError</code> on error and
* <code>EOFError</code> at end of file.
*
@@ -4578,7 +4194,6 @@ rb_io_sysread(int argc, VALUE *argv, VALUE io)
VALUE len, str;
rb_io_t *fptr;
long n, ilen;
- struct read_internal_arg arg;
rb_scan_args(argc, argv, "11", &len, &str);
ilen = NUM2LONG(len);
@@ -4594,33 +4209,21 @@ rb_io_sysread(int argc, VALUE *argv, VALUE io)
}
n = fptr->fd;
-
- /*
- * FIXME: removing rb_thread_wait_fd() here changes sysread semantics
- * on non-blocking IOs. However, it's still currently possible
- * for sysread to raise Errno::EAGAIN if another thread read()s
- * the IO after we return from rb_thread_wait_fd() but before
- * we call read()
- */
rb_thread_wait_fd(fptr->fd);
-
rb_io_check_closed(fptr);
- io_setstrbuf(&str, ilen);
rb_str_locktmp(str);
- arg.fd = fptr->fd;
- arg.str_ptr = RSTRING_PTR(str);
- arg.len = ilen;
- rb_ensure(read_internal_call, (VALUE)&arg, rb_str_unlocktmp, str);
- n = arg.len;
+ n = rb_read_internal(fptr->fd, RSTRING_PTR(str), ilen);
+ rb_str_unlocktmp(str);
if (n == -1) {
rb_sys_fail_path(fptr->pathv);
}
- io_set_read_length(str, n);
+ rb_str_set_len(str, n);
if (n == 0 && ilen > 0) {
rb_eof_error();
}
+ rb_str_resize(str, n);
OBJ_TAINT(str);
return str;
@@ -4727,8 +4330,6 @@ rb_io_fmode_modestr(int fmode)
return MODE_BTMODE("a", "ab", "at");
}
switch (fmode & FMODE_READWRITE) {
- default:
- rb_raise(rb_eArgError, "invalid access fmode 0x%x", fmode);
case FMODE_READABLE:
return MODE_BTMODE("r", "rb", "rt");
case FMODE_WRITABLE:
@@ -4739,6 +4340,8 @@ rb_io_fmode_modestr(int fmode)
}
return MODE_BTMODE("r+", "rb+", "rt+");
}
+ rb_raise(rb_eArgError, "invalid access fmode 0x%x", fmode);
+ return NULL; /* not reached */
}
static int
@@ -4896,8 +4499,6 @@ rb_io_oflags_modestr(int oflags)
}
}
switch (oflags & (O_RDONLY|O_WRONLY|O_RDWR)) {
- default:
- rb_raise(rb_eArgError, "invalid access oflags 0x%x", oflags);
case O_RDONLY:
return MODE_BINARY("r", "rb");
case O_WRONLY:
@@ -4905,6 +4506,8 @@ rb_io_oflags_modestr(int oflags)
case O_RDWR:
return MODE_BINARY("r+", "rb+");
}
+ rb_raise(rb_eArgError, "invalid access oflags 0x%x", oflags);
+ return NULL; /* not reached */
}
/*
@@ -4913,7 +4516,7 @@ rb_io_oflags_modestr(int oflags)
* Qnil => no encoding specified (internal only)
*/
static void
-rb_io_ext_int_to_encs(rb_encoding *ext, rb_encoding *intern, rb_encoding **enc, rb_encoding **enc2, int fmode)
+rb_io_ext_int_to_encs(rb_encoding *ext, rb_encoding *intern, rb_encoding **enc, rb_encoding **enc2)
{
int default_ext = 0;
@@ -4924,8 +4527,7 @@ rb_io_ext_int_to_encs(rb_encoding *ext, rb_encoding *intern, rb_encoding **enc,
if (intern == NULL && ext != rb_ascii8bit_encoding())
/* If external is ASCII-8BIT, no default transcoding */
intern = rb_default_internal_encoding();
- if (intern == NULL || intern == (rb_encoding *)Qnil ||
- (!(fmode & FMODE_SETENC_BY_BOM) && (intern == ext))) {
+ if (intern == NULL || intern == (rb_encoding *)Qnil || intern == ext) {
/* No internal encoding => use external + no transcoding */
*enc = (default_ext && intern != ext) ? NULL : ext;
*enc2 = NULL;
@@ -4937,18 +4539,11 @@ rb_io_ext_int_to_encs(rb_encoding *ext, rb_encoding *intern, rb_encoding **enc,
}
static void
-unsupported_encoding(const char *name)
-{
- rb_warn("Unsupported encoding %s ignored", name);
-}
-
-static void
parse_mode_enc(const char *estr, rb_encoding **enc_p, rb_encoding **enc2_p, int *fmode_p)
{
const char *p;
char encname[ENCODING_MAXNAMELEN+1];
int idx, idx2;
- int fmode = fmode_p ? *fmode_p : 0;
rb_encoding *ext_enc, *int_enc;
/* parse estr as "enc" or "enc2:enc" or "enc:-" */
@@ -4960,7 +4555,7 @@ parse_mode_enc(const char *estr, rb_encoding **enc_p, rb_encoding **enc2_p, int
idx = -1;
else {
if (io_encname_bom_p(estr, len)) {
- fmode |= FMODE_SETENC_BY_BOM;
+ if (fmode_p) *fmode_p |= FMODE_SETENC_BY_BOM;
estr += 4;
len -= 4;
}
@@ -4973,7 +4568,7 @@ parse_mode_enc(const char *estr, rb_encoding **enc_p, rb_encoding **enc2_p, int
else {
long len = strlen(estr);
if (io_encname_bom_p(estr, len)) {
- fmode |= FMODE_SETENC_BY_BOM;
+ if (fmode_p) *fmode_p |= FMODE_SETENC_BY_BOM;
estr += 4;
len -= 4;
memcpy(encname, estr, len);
@@ -4982,13 +4577,12 @@ parse_mode_enc(const char *estr, rb_encoding **enc_p, rb_encoding **enc2_p, int
}
idx = rb_enc_find_index(estr);
}
- if (fmode_p) *fmode_p = fmode;
if (idx >= 0)
ext_enc = rb_enc_from_index(idx);
else {
if (idx != -2)
- unsupported_encoding(estr);
+ rb_warn("Unsupported encoding %s ignored", estr);
ext_enc = NULL;
}
@@ -5001,8 +4595,9 @@ parse_mode_enc(const char *estr, rb_encoding **enc_p, rb_encoding **enc2_p, int
else {
idx2 = rb_enc_find_index(p);
if (idx2 < 0)
- unsupported_encoding(p);
- else if (!(fmode & FMODE_SETENC_BY_BOM) && (idx2 == idx)) {
+ rb_warn("Unsupported encoding %s ignored", p);
+ else if (idx2 == idx) {
+ rb_warn("Ignoring internal encoding %s: it is identical to external encoding %s", p, estr);
int_enc = (rb_encoding *)Qnil;
}
else
@@ -5010,7 +4605,24 @@ parse_mode_enc(const char *estr, rb_encoding **enc_p, rb_encoding **enc2_p, int
}
}
- rb_io_ext_int_to_encs(ext_enc, int_enc, enc_p, enc2_p, fmode);
+ rb_io_ext_int_to_encs(ext_enc, int_enc, enc_p, enc2_p);
+}
+
+static void
+mode_enc(rb_io_t *fptr, const char *estr)
+{
+ clear_codeconv(fptr);
+
+ parse_mode_enc(estr, &fptr->encs.enc, &fptr->encs.enc2, NULL);
+}
+
+static void
+rb_io_mode_enc(rb_io_t *fptr, const char *modestr)
+{
+ const char *p = strchr(modestr, ':');
+ if (p) {
+ mode_enc(fptr, p+1);
+ }
}
int
@@ -5071,12 +4683,12 @@ rb_io_extract_encoding_option(VALUE opt, rb_encoding **enc_p, rb_encoding **enc2
parse_mode_enc(StringValueCStr(tmp), enc_p, enc2_p, fmode_p);
}
else {
- rb_io_ext_int_to_encs(rb_to_encoding(encoding), NULL, enc_p, enc2_p, 0);
+ rb_io_ext_int_to_encs(rb_to_encoding(encoding), NULL, enc_p, enc2_p);
}
}
else if (extenc != Qundef || intenc != Qundef) {
extracted = 1;
- rb_io_ext_int_to_encs(extencoding, intencoding, enc_p, enc2_p, 0);
+ rb_io_ext_int_to_encs(extencoding, intencoding, enc_p, enc2_p);
}
return extracted;
}
@@ -5113,19 +4725,11 @@ extract_binmode(VALUE opthash, int *fmode)
if (!NIL_P(opthash)) {
VALUE v;
v = rb_hash_aref(opthash, sym_textmode);
- if (!NIL_P(v)) {
- if (*fmode & FMODE_TEXTMODE)
- rb_raise(rb_eArgError, "textmode specified twice");
- if (RTEST(v))
- *fmode |= FMODE_TEXTMODE;
- }
+ if (!NIL_P(v) && RTEST(v))
+ *fmode |= FMODE_TEXTMODE;
v = rb_hash_aref(opthash, sym_binmode);
- if (!NIL_P(v)) {
- if (*fmode & FMODE_BINMODE)
- rb_raise(rb_eArgError, "binmode specified twice");
- if (RTEST(v))
- *fmode |= FMODE_BINMODE;
- }
+ if (!NIL_P(v) && RTEST(v))
+ *fmode |= FMODE_BINMODE;
if ((*fmode & FMODE_BINMODE) && (*fmode & FMODE_TEXTMODE))
rb_raise(rb_eArgError, "both textmode and binmode specified");
@@ -5147,7 +4751,7 @@ rb_io_extract_modeenc(VALUE *vmode_p, VALUE *vperm_p, VALUE opthash,
vmode = *vmode_p;
/* Set to defaults */
- rb_io_ext_int_to_encs(NULL, NULL, &enc, &enc2, 0);
+ rb_io_ext_int_to_encs(NULL, NULL, &enc, &enc2);
vmode_handle:
if (NIL_P(vmode)) {
@@ -5175,7 +4779,7 @@ rb_io_extract_modeenc(VALUE *vmode_p, VALUE *vperm_p, VALUE opthash,
rb_encoding *e;
e = (fmode & FMODE_BINMODE) ? rb_ascii8bit_encoding() : NULL;
- rb_io_ext_int_to_encs(e, NULL, &enc, &enc2, fmode);
+ rb_io_ext_int_to_encs(e, NULL, &enc, &enc2);
}
}
@@ -5194,13 +4798,10 @@ rb_io_extract_modeenc(VALUE *vmode_p, VALUE *vperm_p, VALUE opthash,
else {
VALUE v;
extract_binmode(opthash, &fmode);
- if (fmode & FMODE_BINMODE) {
#ifdef O_BINARY
+ if (fmode & FMODE_BINMODE)
oflags |= O_BINARY;
#endif
- if (!has_enc)
- rb_io_ext_int_to_encs(rb_ascii8bit_encoding(), NULL, &enc, &enc2, fmode);
- }
#if DEFAULT_TEXTMODE
else if (NIL_P(vmode)) {
fmode |= DEFAULT_TEXTMODE;
@@ -5265,19 +4866,19 @@ struct sysopen_struct {
mode_t perm;
};
-static void *
+static VALUE
sysopen_func(void *ptr)
{
const struct sysopen_struct *data = ptr;
const char *fname = RSTRING_PTR(data->fname);
- return (void *)(VALUE)rb_cloexec_open(fname, data->oflags, data->perm);
+ return (VALUE)open(fname, data->oflags, data->perm);
}
static inline int
rb_sysopen_internal(struct sysopen_struct *data)
{
int fd;
- fd = (int)(VALUE)rb_thread_call_without_gvl(sysopen_func, data, RUBY_UBF_IO, 0);
+ fd = (int)rb_thread_blocking_region(sysopen_func, data, RUBY_UBF_IO, 0);
if (0 <= fd)
rb_update_max_fd(fd);
return fd;
@@ -5303,6 +4904,7 @@ rb_sysopen(VALUE fname, int oflags, mode_t perm)
rb_sys_fail_path(fname);
}
}
+ rb_update_max_fd(fd);
return fd;
}
@@ -5311,18 +4913,18 @@ rb_fdopen(int fd, const char *modestr)
{
FILE *file;
-#if defined(__sun)
+#if defined(sun)
errno = 0;
#endif
file = fdopen(fd, modestr);
if (!file) {
if (
-#if defined(__sun)
+#if defined(sun)
errno == 0 ||
#endif
errno == EMFILE || errno == ENFILE) {
rb_gc();
-#if defined(__sun)
+#if defined(sun)
errno = 0;
#endif
file = fdopen(fd, modestr);
@@ -5330,7 +4932,7 @@ rb_fdopen(int fd, const char *modestr)
if (!file) {
#ifdef _WIN32
if (errno == 0) errno = EINVAL;
-#elif defined(__sun)
+#elif defined(sun)
if (errno == 0) errno = EMFILE;
#endif
rb_sys_fail(0);
@@ -5422,16 +5024,13 @@ static void
io_set_encoding_by_bom(VALUE io)
{
int idx = io_strip_bom(io);
- rb_io_t *fptr;
- GetOpenFile(io, fptr);
if (idx) {
+ rb_io_t *fptr;
+ GetOpenFile(io, fptr);
io_encoding_set(fptr, rb_enc_from_encoding(rb_enc_from_index(idx)),
rb_io_internal_encoding(io), Qnil);
}
- else {
- fptr->encs.enc2 = NULL;
- }
}
static VALUE
@@ -5441,7 +5040,7 @@ rb_file_open_generic(VALUE io, VALUE filename, int oflags, int fmode, convconfig
convconfig_t cc;
if (!convconfig) {
/* Set to default encodings */
- rb_io_ext_int_to_encs(NULL, NULL, &cc.enc, &cc.enc2, fmode);
+ rb_io_ext_int_to_encs(NULL, NULL, &cc.enc, &cc.enc2);
cc.ecflags = 0;
cc.ecopts = Qnil;
convconfig = &cc;
@@ -5475,7 +5074,7 @@ rb_file_open_internal(VALUE io, VALUE filename, const char *modestr)
/* Set to default encodings */
e = (fmode & FMODE_BINMODE) ? rb_ascii8bit_encoding() : NULL;
- rb_io_ext_int_to_encs(e, NULL, &convconfig.enc, &convconfig.enc2, fmode);
+ rb_io_ext_int_to_encs(e, NULL, &convconfig.enc, &convconfig.enc2);
convconfig.ecflags = 0;
convconfig.ecopts = Qnil;
}
@@ -5588,11 +5187,11 @@ int
rb_pipe(int *pipes)
{
int ret;
- ret = rb_cloexec_pipe(pipes);
+ ret = pipe(pipes);
if (ret == -1) {
if (errno == EMFILE || errno == ENFILE) {
rb_gc();
- ret = rb_cloexec_pipe(pipes);
+ ret = pipe(pipes);
}
}
if (ret == 0) {
@@ -5602,23 +5201,14 @@ rb_pipe(int *pipes)
return ret;
}
-#ifdef _WIN32
-#define HAVE_SPAWNV 1
-#define spawnv(mode, cmd, args) rb_w32_aspawn((mode), (cmd), (args))
-#define spawn(mode, cmd) rb_w32_spawn((mode), (cmd), 0)
-#endif
-
-#if defined(HAVE_FORK) || defined(HAVE_SPAWNV)
+#ifdef HAVE_FORK
struct popen_arg {
- VALUE execarg_obj;
- struct rb_execarg *eargp;
+ struct rb_exec_arg *execp;
int modef;
int pair[2];
int write_pair[2];
};
-#endif
-#ifdef HAVE_FORK
static void
popen_redirect(struct popen_arg *p)
{
@@ -5650,75 +5240,25 @@ popen_redirect(struct popen_arg *p)
}
}
-#if defined(__linux__)
-/* Linux /proc/self/status contains a line: "FDSize:\t<nnn>\n"
- * Since /proc may not be available, linux_get_maxfd is just a hint.
- * This function, linux_get_maxfd, must be async-signal-safe.
- * I.e. opendir() is not usable.
- *
- * Note that memchr() and memcmp is *not* async-signal-safe in POSIX.
- * However they are easy to re-implement in async-signal-safe manner.
- * (Also note that there is missing/memcmp.c.)
- */
-static int
-linux_get_maxfd(void)
-{
- int fd;
- char buf[4096], *p, *np, *e;
- ssize_t ss;
- fd = rb_cloexec_open("/proc/self/status", O_RDONLY|O_NOCTTY, 0);
- if (fd == -1) return -1;
- ss = read(fd, buf, sizeof(buf));
- if (ss == -1) goto err;
- p = buf;
- e = buf + ss;
- while ((int)sizeof("FDSize:\t0\n")-1 <= e-p &&
- (np = memchr(p, '\n', e-p)) != NULL) {
- if (memcmp(p, "FDSize:", sizeof("FDSize:")-1) == 0) {
- int fdsize;
- p += sizeof("FDSize:")-1;
- *np = '\0';
- fdsize = (int)ruby_strtoul(p, (char **)NULL, 10);
- close(fd);
- return fdsize;
- }
- p = np+1;
- }
- /* fall through */
-
- err:
- close(fd);
- return -1;
-}
-#endif
-
-/* This function should be async-signal-safe. */
void
rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds)
{
int fd, ret;
- int max = (int)max_file_descriptor;
-#ifdef F_MAXFD
- /* F_MAXFD is available since NetBSD 2.0. */
- ret = fcntl(0, F_MAXFD); /* async-signal-safe */
- if (ret != -1)
- maxhint = max = ret;
-#elif defined(__linux__)
- ret = linux_get_maxfd();
- if (maxhint < ret)
- maxhint = ret;
- /* maxhint = max = ret; if (ret == -1) abort(); // test */
-#endif
+ int max = max_file_descriptor;
if (max < maxhint)
max = maxhint;
for (fd = lowfd; fd <= max; fd++) {
if (!NIL_P(noclose_fds) &&
- RTEST(rb_hash_lookup(noclose_fds, INT2FIX(fd)))) /* async-signal-safe */
+ RTEST(rb_hash_lookup(noclose_fds, INT2FIX(fd))))
continue;
- ret = fcntl(fd, F_GETFD); /* async-signal-safe */
+#ifdef FD_CLOEXEC
+ ret = fcntl(fd, F_GETFD);
if (ret != -1 && !(ret & FD_CLOEXEC)) {
- fcntl(fd, F_SETFD, ret|FD_CLOEXEC); /* async-signal-safe */
+ fcntl(fd, F_SETFD, ret|FD_CLOEXEC);
}
+#else
+ ret = close(fd);
+#endif
#define CONTIGUOUS_CLOSED_FDS 20
if (ret != -1) {
if (max < fd + CONTIGUOUS_CLOSED_FDS)
@@ -5732,15 +5272,14 @@ popen_exec(void *pp, char *errmsg, size_t errmsg_len)
{
struct popen_arg *p = (struct popen_arg*)pp;
- return rb_exec_async_signal_safe(p->eargp, errmsg, errmsg_len);
+ rb_thread_atfork_before_exec();
+ return rb_exec_err(p->execp, errmsg, errmsg_len);
}
#endif
static VALUE
-pipe_open(VALUE execarg_obj, const char *modestr, int fmode, convconfig_t *convconfig)
+pipe_open(struct rb_exec_arg *eargp, VALUE prog, const char *modestr, int fmode, convconfig_t *convconfig)
{
- struct rb_execarg *eargp = NIL_P(execarg_obj) ? NULL : rb_execarg_get(execarg_obj);
- VALUE prog = eargp ? (eargp->use_shell ? eargp->invoke.sh.shell_script : eargp->invoke.cmd.command_name) : Qfalse ;
rb_pid_t pid = 0;
rb_io_t *fptr;
VALUE port;
@@ -5748,116 +5287,85 @@ pipe_open(VALUE execarg_obj, const char *modestr, int fmode, convconfig_t *convc
VALUE write_port;
#if defined(HAVE_FORK)
int status;
- char errmsg[80] = { '\0' };
-#endif
-#if defined(HAVE_FORK) || defined(HAVE_SPAWNV)
struct popen_arg arg;
- int e = 0;
-#endif
-#if defined(HAVE_SPAWNV)
-# if defined(HAVE_SPAWNVE)
-# define DO_SPAWN(cmd, args, envp) ((args) ? \
- spawnve(P_NOWAIT, (cmd), (args), (envp)) : \
- spawne(P_NOWAIT, (cmd), (envp)))
-# else
-# define DO_SPAWN(cmd, args, envp) ((args) ? \
- spawnv(P_NOWAIT, (cmd), (args)) : \
- spawn(P_NOWAIT, (cmd)))
-# endif
-# if !defined(HAVE_FORK)
+ char errmsg[80] = { '\0' };
+#elif defined(_WIN32)
+ volatile VALUE argbuf;
char **args = NULL;
-# if defined(HAVE_SPAWNVE)
- char **envp = NULL;
-# endif
-# endif
+ int pair[2], write_pair[2];
#endif
#if !defined(HAVE_FORK)
- struct rb_execarg sarg, *sargp = &sarg;
+ struct rb_exec_arg sarg;
#endif
FILE *fp = 0;
int fd = -1;
int write_fd = -1;
-#if !defined(HAVE_FORK)
const char *cmd = 0;
-#if !defined(HAVE_SPAWNV)
int argc;
VALUE *argv;
-#endif
if (prog)
cmd = StringValueCStr(prog);
-#endif
-#if defined(HAVE_FORK) || defined(HAVE_SPAWNV)
- arg.execarg_obj = execarg_obj;
- arg.eargp = eargp;
+ if (!eargp) {
+ /* fork : IO.popen("-") */
+ argc = 0;
+ argv = 0;
+ }
+ else if (eargp->argc) {
+ /* no shell : IO.popen([prog, arg0], arg1, ...) */
+ argc = eargp->argc;
+ argv = eargp->argv;
+ }
+ else {
+ /* with shell : IO.popen(prog) */
+ argc = 0;
+ argv = 0;
+ }
+
+#if defined(HAVE_FORK)
+ arg.execp = eargp;
arg.modef = fmode;
arg.pair[0] = arg.pair[1] = -1;
arg.write_pair[0] = arg.write_pair[1] = -1;
-# if !defined(HAVE_FORK)
- if (eargp && !eargp->use_shell) {
- args = ARGVSTR2ARGV(eargp->invoke.cmd.argv_str);
- }
-# endif
switch (fmode & (FMODE_READABLE|FMODE_WRITABLE)) {
case FMODE_READABLE|FMODE_WRITABLE:
if (rb_pipe(arg.write_pair) < 0)
- rb_sys_fail_str(prog);
+ rb_sys_fail(cmd);
if (rb_pipe(arg.pair) < 0) {
int e = errno;
close(arg.write_pair[0]);
close(arg.write_pair[1]);
errno = e;
- rb_sys_fail_str(prog);
+ rb_sys_fail(cmd);
}
if (eargp) {
- rb_execarg_addopt(execarg_obj, INT2FIX(0), INT2FIX(arg.write_pair[0]));
- rb_execarg_addopt(execarg_obj, INT2FIX(1), INT2FIX(arg.pair[1]));
+ rb_exec_arg_addopt(eargp, INT2FIX(0), INT2FIX(arg.write_pair[0]));
+ rb_exec_arg_addopt(eargp, INT2FIX(1), INT2FIX(arg.pair[1]));
}
break;
case FMODE_READABLE:
if (rb_pipe(arg.pair) < 0)
- rb_sys_fail_str(prog);
+ rb_sys_fail(cmd);
if (eargp)
- rb_execarg_addopt(execarg_obj, INT2FIX(1), INT2FIX(arg.pair[1]));
+ rb_exec_arg_addopt(eargp, INT2FIX(1), INT2FIX(arg.pair[1]));
break;
case FMODE_WRITABLE:
if (rb_pipe(arg.pair) < 0)
- rb_sys_fail_str(prog);
+ rb_sys_fail(cmd);
if (eargp)
- rb_execarg_addopt(execarg_obj, INT2FIX(0), INT2FIX(arg.pair[0]));
+ rb_exec_arg_addopt(eargp, INT2FIX(0), INT2FIX(arg.pair[0]));
break;
default:
- rb_sys_fail_str(prog);
+ rb_sys_fail(cmd);
}
- if (!NIL_P(execarg_obj)) {
- rb_execarg_fixup(execarg_obj);
-# if defined(HAVE_FORK)
- pid = rb_fork_async_signal_safe(&status, popen_exec, &arg, arg.eargp->redirect_fds, errmsg, sizeof(errmsg));
-# else
- rb_execarg_run_options(eargp, sargp, NULL, 0);
-# if defined(HAVE_SPAWNVE)
- if (eargp->envp_str) envp = (char **)RSTRING_PTR(eargp->envp_str);
-# endif
- while ((pid = DO_SPAWN(cmd, args, envp)) == -1) {
- /* exec failed */
- switch (e = errno) {
- case EAGAIN:
-# if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
- case EWOULDBLOCK:
-# endif
- rb_thread_sleep(1);
- continue;
- }
- break;
- }
- if (eargp)
- rb_execarg_run_options(sargp, NULL, NULL, 0);
-# endif
+ if (eargp) {
+ rb_exec_arg_fixup(arg.execp);
+ pid = rb_fork_err(&status, popen_exec, &arg, arg.execp->redirect_fds, errmsg, sizeof(errmsg));
}
else {
-# if defined(HAVE_FORK)
- pid = rb_fork_ruby(&status);
+ fflush(stdin); /* is it really needed? */
+ pid = rb_fork(&status, 0, 0, Qnil);
if (pid == 0) { /* child */
rb_thread_atfork();
popen_redirect(&arg);
@@ -5865,16 +5373,11 @@ pipe_open(VALUE execarg_obj, const char *modestr, int fmode, convconfig_t *convc
rb_io_synchronized(RFILE(orig_stderr)->fptr);
return Qnil;
}
-# else
- rb_notimplement();
-# endif
}
/* parent */
if (pid == -1) {
-# if defined(HAVE_FORK)
- e = errno;
-# endif
+ int e = errno;
close(arg.pair[0]);
close(arg.pair[1]);
if ((fmode & (FMODE_READABLE|FMODE_WRITABLE)) == (FMODE_READABLE|FMODE_WRITABLE)) {
@@ -5882,11 +5385,9 @@ pipe_open(VALUE execarg_obj, const char *modestr, int fmode, convconfig_t *convc
close(arg.write_pair[1]);
}
errno = e;
-# if defined(HAVE_FORK)
if (errmsg[0])
rb_sys_fail(errmsg);
-# endif
- rb_sys_fail_str(prog);
+ rb_sys_fail(cmd);
}
if ((fmode & FMODE_READABLE) && (fmode & FMODE_WRITABLE)) {
close(arg.pair[1]);
@@ -5902,18 +5403,114 @@ pipe_open(VALUE execarg_obj, const char *modestr, int fmode, convconfig_t *convc
close(arg.pair[0]);
fd = arg.pair[1];
}
+#elif defined(_WIN32)
+ if (argc) {
+ int i;
+
+ if (argc >= (int)(FIXNUM_MAX / sizeof(char *))) {
+ rb_raise(rb_eArgError, "too many arguments");
+ }
+ argbuf = rb_str_tmp_new((argc+1) * sizeof(char *));
+ args = (void *)RSTRING_PTR(argbuf);
+ for (i = 0; i < argc; ++i) {
+ args[i] = StringValueCStr(argv[i]);
+ }
+ args[i] = NULL;
+ }
+ switch (fmode & (FMODE_READABLE|FMODE_WRITABLE)) {
+ case FMODE_READABLE|FMODE_WRITABLE:
+ if (rb_pipe(write_pair) < 0)
+ rb_sys_fail(cmd);
+ if (rb_pipe(pair) < 0) {
+ int e = errno;
+ close(write_pair[0]);
+ close(write_pair[1]);
+ errno = e;
+ rb_sys_fail(cmd);
+ }
+ if (eargp) {
+ rb_exec_arg_addopt(eargp, INT2FIX(0), INT2FIX(write_pair[0]));
+ rb_exec_arg_addopt(eargp, INT2FIX(1), INT2FIX(pair[1]));
+ }
+ break;
+ case FMODE_READABLE:
+ if (rb_pipe(pair) < 0)
+ rb_sys_fail(cmd);
+ if (eargp)
+ rb_exec_arg_addopt(eargp, INT2FIX(1), INT2FIX(pair[1]));
+ break;
+ case FMODE_WRITABLE:
+ if (rb_pipe(pair) < 0)
+ rb_sys_fail(cmd);
+ if (eargp)
+ rb_exec_arg_addopt(eargp, INT2FIX(0), INT2FIX(pair[0]));
+ break;
+ default:
+ rb_sys_fail(cmd);
+ }
+ if (eargp) {
+ rb_exec_arg_fixup(eargp);
+ rb_run_exec_options(eargp, &sarg);
+ }
+ while ((pid = (args ?
+ rb_w32_aspawn(P_NOWAIT, cmd, args) :
+ rb_w32_spawn(P_NOWAIT, cmd, 0))) == -1) {
+ /* exec failed */
+ switch (errno) {
+ case EAGAIN:
+#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
+ case EWOULDBLOCK:
+#endif
+ rb_thread_sleep(1);
+ break;
+ default:
+ {
+ int e = errno;
+ if (eargp)
+ rb_run_exec_options(&sarg, NULL);
+ close(pair[0]);
+ close(pair[1]);
+ if ((fmode & (FMODE_READABLE|FMODE_WRITABLE)) == (FMODE_READABLE|FMODE_WRITABLE)) {
+ close(write_pair[0]);
+ close(write_pair[1]);
+ }
+ errno = e;
+ rb_sys_fail(cmd);
+ }
+ break;
+ }
+ }
+
+ RB_GC_GUARD(argbuf);
+
+ if (eargp)
+ rb_run_exec_options(&sarg, NULL);
+ if ((fmode & FMODE_READABLE) && (fmode & FMODE_WRITABLE)) {
+ close(pair[1]);
+ fd = pair[0];
+ close(write_pair[0]);
+ write_fd = write_pair[1];
+ }
+ else if (fmode & FMODE_READABLE) {
+ close(pair[1]);
+ fd = pair[0];
+ }
+ else {
+ close(pair[0]);
+ fd = pair[1];
+ }
#else
if (argc) {
prog = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" "));
cmd = StringValueCStr(prog);
}
- if (!NIL_P(execarg_obj)) {
- rb_execarg_fixup(execarg_obj);
- rb_execarg_run_options(eargp, sargp, NULL, 0);
+ if (eargp) {
+ rb_exec_arg_fixup(eargp);
+ rb_run_exec_options(eargp, &sarg);
}
fp = popen(cmd, modestr);
if (eargp)
- rb_execarg_run_options(sargp, NULL, NULL, 0);
+ rb_run_exec_options(&sarg, NULL);
if (!fp) rb_sys_fail_path(prog);
fd = fileno(fp);
#endif
@@ -5960,36 +5557,39 @@ pipe_open(VALUE execarg_obj, const char *modestr, int fmode, convconfig_t *convc
return port;
}
-static int
-is_popen_fork(VALUE prog)
+static VALUE
+pipe_open_v(int argc, VALUE *argv, const char *modestr, int fmode, convconfig_t *convconfig)
{
- if (RSTRING_LEN(prog) == 1 && RSTRING_PTR(prog)[0] == '-') {
-#if !defined(HAVE_FORK)
- rb_raise(rb_eNotImpError,
- "fork() function is unimplemented on this machine");
-#else
- return TRUE;
-#endif
- }
- return FALSE;
+ VALUE prog;
+ struct rb_exec_arg earg;
+ prog = rb_exec_arg_init(argc, argv, FALSE, &earg);
+ return pipe_open(&earg, prog, modestr, fmode, convconfig);
}
static VALUE
pipe_open_s(VALUE prog, const char *modestr, int fmode, convconfig_t *convconfig)
{
+ const char *cmd = RSTRING_PTR(prog);
int argc = 1;
VALUE *argv = &prog;
- VALUE execarg_obj = Qnil;
+ struct rb_exec_arg earg;
- if (!is_popen_fork(prog))
- execarg_obj = rb_execarg_new(argc, argv, TRUE);
- return pipe_open(execarg_obj, modestr, fmode, convconfig);
+ if (RSTRING_LEN(prog) == 1 && cmd[0] == '-') {
+#if !defined(HAVE_FORK)
+ rb_raise(rb_eNotImpError,
+ "fork() function is unimplemented on this machine");
+#endif
+ return pipe_open(0, 0, modestr, fmode, convconfig);
+ }
+
+ rb_exec_arg_init(argc, argv, TRUE, &earg);
+ return pipe_open(&earg, prog, modestr, fmode, convconfig);
}
/*
* call-seq:
- * IO.popen([env,] cmd, mode="r" [, opt]) -> io
- * IO.popen([env,] cmd, mode="r" [, opt]) {|io| block } -> obj
+ * IO.popen(cmd, mode="r" [, opt]) -> io
+ * IO.popen(cmd, mode="r" [, opt]) {|io| block } -> obj
*
* Runs the specified command as a subprocess; the subprocess's
* standard input and output will be connected to the returned
@@ -6029,11 +5629,6 @@ pipe_open_s(VALUE prog, const char *modestr, int fmode, convconfig_t *convconfig
* ls_result_with_error = ls_io.read
* }
*
- * # spawn options can be mixed with IO options
- * IO.popen(["ls", "/"], :err=>[:child, :out]) {|ls_io|
- * ls_result_with_error = ls_io.read
- * }
- *
* Raises exceptions which <code>IO.pipe</code> and
* <code>Kernel.spawn</code> raise.
*
@@ -6078,24 +5673,14 @@ static VALUE
rb_io_s_popen(int argc, VALUE *argv, VALUE klass)
{
const char *modestr;
- VALUE pname, pmode = Qnil, port, tmp, opt = Qnil, env = Qnil, execarg_obj = Qnil;
+ VALUE pname, pmode, port, tmp, opt;
int oflags, fmode;
convconfig_t convconfig;
- if (argc > 1 && !NIL_P(opt = rb_check_hash_type(argv[argc-1]))) --argc;
- if (argc > 1 && !NIL_P(env = rb_check_hash_type(argv[0]))) --argc, ++argv;
- switch (argc) {
- case 2:
- pmode = argv[1];
- case 1:
- pname = argv[0];
- break;
- default:
- {
- int ex = !NIL_P(opt);
- rb_error_arity(argc + ex, 1 + ex, 2 + ex);
- }
- }
+ argc = rb_scan_args(argc, argv, "11:", &pname, &pmode, &opt);
+
+ rb_io_extract_modeenc(&pmode, 0, opt, &oflags, &fmode, &convconfig);
+ modestr = rb_io_oflags_modestr(oflags);
tmp = rb_check_array_type(pname);
if (!NIL_P(tmp)) {
@@ -6107,25 +5692,13 @@ rb_io_s_popen(int argc, VALUE *argv, VALUE klass)
#endif
tmp = rb_ary_dup(tmp);
RBASIC(tmp)->klass = 0;
- execarg_obj = rb_execarg_new((int)len, RARRAY_PTR(tmp), FALSE);
+ port = pipe_open_v((int)len, RARRAY_PTR(tmp), modestr, fmode, &convconfig);
rb_ary_clear(tmp);
}
else {
SafeStringValue(pname);
- execarg_obj = Qnil;
- if (!is_popen_fork(pname))
- execarg_obj = rb_execarg_new(1, &pname, TRUE);
- }
- if (!NIL_P(execarg_obj)) {
- if (!NIL_P(opt))
- opt = rb_execarg_extract_options(execarg_obj, opt);
- if (!NIL_P(env))
- rb_execarg_setenv(execarg_obj, env);
+ port = pipe_open_s(pname, modestr, fmode, &convconfig);
}
- rb_io_extract_modeenc(&pmode, 0, opt, &oflags, &fmode, &convconfig);
- modestr = rb_io_oflags_modestr(oflags);
-
- port = pipe_open(execarg_obj, modestr, fmode, &convconfig);
if (NIL_P(port)) {
/* child */
if (rb_block_given_p()) {
@@ -6191,29 +5764,27 @@ rb_open_file(int argc, VALUE *argv, VALUE io)
*
* With no associated block, <code>File.open</code> is a synonym for
* File.new. If the optional code block is given, it will
- * be passed the opened +file+ as an argument and the File object will
- * automatically be closed when the block terminates. The value of the block
- * will be returned from <code>File.open</code>.
+ * be passed the opened +file+ as an argument, and the File object will
+ * automatically be closed when the block terminates. In this instance,
+ * <code>File.open</code> returns the value of the block.
*
- * If a file is being created, its initial permissions may be set using the
- * +perm+ parameter. See File.new for further discussion.
- *
- * See IO.new for a description of the +mode+ and +opt+ parameters.
+ * See IO.new for a list of values for the +opt+ parameter.
*/
/*
* Document-method: IO::open
*
* call-seq:
- * IO.open(fd, mode="r" [, opt]) -> io
- * IO.open(fd, mode="r" [, opt]) { |io| block } -> obj
+ * IO.open(fd, mode_string="r" [, opt]) -> io
+ * IO.open(fd, mode_string="r" [, opt]) {|io| block } -> obj
+ *
+ * With no associated block, <code>IO.open</code> is a synonym for IO.new. If
+ * the optional code block is given, it will be passed +io+ as an
+ * argument, and the IO object will automatically be closed when the block
+ * terminates. In this instance, IO.open returns the value of the block.
*
- * With no associated block, <code>IO.open</code> is a synonym for IO.new. If
- * the optional code block is given, it will be passed +io+ as an argument,
- * and the IO object will automatically be closed when the block terminates.
- * In this instance, IO.open returns the value of the block.
+ * See IO.new for a description of values for the +opt+ parameter.
*
- * See IO.new for a description of the +fd+, +mode+ and +opt+ parameters.
*/
static VALUE
@@ -6236,6 +5807,7 @@ rb_io_s_open(int argc, VALUE *argv, VALUE klass)
* <code>Fixnum</code>.
*
* IO.sysopen("testfile") #=> 3
+ *
*/
static VALUE
@@ -6283,58 +5855,72 @@ check_pipe_command(VALUE filename_or_command)
/*
* call-seq:
- * open(path [, mode [, perm]] [, opt]) -> io or nil
- * open(path [, mode [, perm]] [, opt]) {|io| block } -> obj
- *
- * Creates an IO object connected to the given stream, file, or subprocess.
- *
- * If +path+ does not start with a pipe character (<code>|</code>), treat it
- * as the name of a file to open using the specified mode (defaulting to
- * "r").
- *
- * The +mode+ is either a string or an integer. If it is an integer, it
- * must be bitwise-or of open(2) flags, such as File::RDWR or File::EXCL. If
- * it is a string, it is either "fmode", "fmode:ext_enc", or
- * "fmode:ext_enc:int_enc".
- *
- * See the documentation of IO.new for full documentation of the +mode+ string
- * directives.
- *
- * If a file is being created, its initial permissions may be set using the
- * +perm+ parameter. See File.new and the open(2) and chmod(2) man pages for
- * a description of permissions.
- *
- * If a block is specified, it will be invoked with the IO object as a
- * parameter, and the IO will be automatically closed when the block
- * terminates. The call returns the value of the block.
- *
- * If +path+ starts with a pipe character (<code>"|"</code>), a subprocess is
- * created, connected to the caller by a pair of pipes. The returned IO
- * object may be used to write to the standard input and read from the
- * standard output of this subprocess.
- *
- * If the command following the pipe is a single minus sign
- * (<code>"|-"</code>), Ruby forks, and this subprocess is connected to the
- * parent. If the command is not <code>"-"</code>, the subprocess runs the
- * command.
- *
- * When the subprocess is ruby (opened via <code>"|-"</code>), the +open+
- * call returns +nil+. If a block is associated with the open call, that
- * block will run twice --- once in the parent and once in the child.
- *
- * The block parameter will be an IO object in the parent and +nil+ in the
- * child. The parent's +IO+ object will be connected to the child's $stdin
- * and $stdout. The subprocess will be terminated at the end of the block.
- *
- * === Examples
+ * open(path [, mode_enc [, perm]] [, opt]) -> io or nil
+ * open(path [, mode_enc [, perm]] [, opt]) {|io| block } -> obj
+ *
+ * Creates an <code>IO</code> object connected to the given stream,
+ * file, or subprocess.
+ *
+ * If <i>path</i> does not start with a pipe character
+ * (``<code>|</code>''), treat it as the name of a file to open using
+ * the specified mode (defaulting to ``<code>r</code>'').
+ *
+ * The mode_enc is
+ * either a string or an integer. If it is an integer, it must be
+ * bitwise-or of open(2) flags, such as File::RDWR or File::EXCL.
+ * If it is a string, it is either "mode", "mode:ext_enc", or
+ * "mode:ext_enc:int_enc".
+ * The mode is one of the following:
+ *
+ * r: read (default)
+ * w: write
+ * a: append
+ *
+ * The mode can be followed by "b" (means binary-mode), or "+"
+ * (means both reading and writing allowed) or both.
+ * If ext_enc (external encoding) is specified,
+ * read string will be tagged by the encoding in reading,
+ * and output string will be converted
+ * to the specified encoding in writing.
+ * If ext_enc starts with 'BOM|', check whether the input has a BOM. If
+ * there is a BOM, strip it and set external encoding as
+ * what the BOM tells. If there is no BOM, use ext_enc without 'BOM|'.
+ * If two encoding names,
+ * ext_enc and int_enc (external encoding and internal encoding),
+ * are specified, the read string is converted from ext_enc
+ * to int_enc then tagged with the int_enc in read mode,
+ * and in write mode, the output string will be
+ * converted from int_enc to ext_enc before writing.
+ *
+ * If a file is being created, its initial permissions may be
+ * set using the integer third parameter.
+ *
+ * If a block is specified, it will be invoked with the
+ * <code>File</code> object as a parameter, and the file will be
+ * automatically closed when the block terminates. The call
+ * returns the value of the block.
*
- * Reading from "testfile":
+ * If <i>path</i> starts with a pipe character, a subprocess is
+ * created, connected to the caller by a pair of pipes. The returned
+ * <code>IO</code> object may be used to write to the standard input
+ * and read from the standard output of this subprocess. If the command
+ * following the ``<code>|</code>'' is a single minus sign, Ruby forks,
+ * and this subprocess is connected to the parent. In the subprocess,
+ * the <code>open</code> call returns <code>nil</code>. If the command
+ * is not ``<code>-</code>'', the subprocess runs the command. If a
+ * block is associated with an <code>open("|-")</code> call, that block
+ * will be run twice---once in the parent and once in the child. The
+ * block parameter will be an <code>IO</code> object in the parent and
+ * <code>nil</code> in the child. The parent's <code>IO</code> object
+ * will be connected to the child's <code>$stdin</code> and
+ * <code>$stdout</code>. The subprocess will be terminated at the end
+ * of the block.
*
* open("testfile") do |f|
* print f.gets
* end
*
- * Produces:
+ * <em>produces:</em>
*
* This is line one
*
@@ -6344,7 +5930,7 @@ check_pipe_command(VALUE filename_or_command)
* print cmd.gets
* cmd.close
*
- * Produces:
+ * <em>produces:</em>
*
* Wed Apr 9 08:56:31 CDT 2003
*
@@ -6358,23 +5944,21 @@ check_pipe_command(VALUE filename_or_command)
* puts "Got: #{f.gets}"
* end
*
- * Produces:
+ * <em>produces:</em>
*
* Got: in Child
*
- * Open a subprocess using a block to receive the IO object:
+ * Open a subprocess using a block to receive the I/O object:
*
- * open "|-" do |f|
- * if f then
- * # parent process
- * puts "Got: #{f.gets}"
- * else
- * # child process
+ * open("|-") do |f|
+ * if f == nil
* puts "in Child"
+ * else
+ * puts "Got: #{f.gets}"
* end
* end
*
- * Produces:
+ * <em>produces:</em>
*
* Got: in Child
*/
@@ -6504,7 +6088,7 @@ io_reopen(VALUE io, VALUE nfile)
if (fd != fd2) {
if (IS_PREP_STDIO(fptr) || fd <= 2 || !fptr->stdio_file) {
/* need to keep FILE objects of stdin, stdout and stderr */
- if (rb_cloexec_dup2(fd2, fd) < 0)
+ if (dup2(fd2, fd) < 0)
rb_sys_fail_path(orig->pathv);
rb_update_max_fd(fd);
}
@@ -6512,7 +6096,7 @@ io_reopen(VALUE io, VALUE nfile)
fclose(fptr->stdio_file);
fptr->stdio_file = 0;
fptr->fd = -1;
- if (rb_cloexec_dup2(fd2, fd) < 0)
+ if (dup2(fd2, fd) < 0)
rb_sys_fail_path(orig->pathv);
rb_update_max_fd(fd);
fptr->fd = fd;
@@ -6555,12 +6139,12 @@ io_reopen(VALUE io, VALUE nfile)
static VALUE
rb_io_reopen(int argc, VALUE *argv, VALUE file)
{
- VALUE fname, nmode, opt;
+ VALUE fname, nmode;
int oflags;
rb_io_t *fptr;
rb_secure(4);
- if (rb_scan_args(argc, argv, "11:", &fname, &nmode, &opt) == 1) {
+ if (rb_scan_args(argc, argv, "11", &fname, &nmode) == 1) {
VALUE tmp = rb_io_check_io(fname);
if (!NIL_P(tmp)) {
return io_reopen(file, tmp);
@@ -6575,11 +6159,8 @@ rb_io_reopen(int argc, VALUE *argv, VALUE file)
MEMZERO(fptr, rb_io_t, 1);
}
- if (!NIL_P(nmode) || !NIL_P(opt)) {
- int fmode;
- convconfig_t convconfig;
-
- rb_io_extract_modeenc(&nmode, 0, opt, &oflags, &fmode, &convconfig);
+ if (!NIL_P(nmode)) {
+ int fmode = rb_io_modestr_fmode(StringValueCStr(nmode));
if (IS_PREP_STDIO(fptr) &&
((fptr->mode & FMODE_READWRITE) & (fmode & FMODE_READWRITE)) !=
(fptr->mode & FMODE_READWRITE)) {
@@ -6589,13 +6170,13 @@ rb_io_reopen(int argc, VALUE *argv, VALUE file)
rb_io_fmode_modestr(fmode));
}
fptr->mode = fmode;
- fptr->encs = convconfig;
- }
- else {
- oflags = rb_io_fmode_oflags(fptr->mode);
+ rb_io_mode_enc(fptr, StringValueCStr(nmode));
+ fptr->encs.ecflags = 0;
+ fptr->encs.ecopts = Qnil;
}
fptr->pathv = rb_str_new_frozen(fname);
+ oflags = rb_io_fmode_oflags(fptr->mode);
if (fptr->fd < 0) {
fptr->fd = rb_sysopen(fptr->pathv, oflags, 0666);
fptr->stdio_file = 0;
@@ -6613,29 +6194,16 @@ rb_io_reopen(int argc, VALUE *argv, VALUE file)
rb_sys_fail_path(fptr->pathv);
}
fptr->fd = fileno(fptr->stdio_file);
- rb_fd_fix_cloexec(fptr->fd);
#ifdef USE_SETVBUF
if (setvbuf(fptr->stdio_file, NULL, _IOFBF, 0) != 0)
rb_warn("setvbuf() can't be honoured for %s", RSTRING_PTR(fptr->pathv));
#endif
- if (fptr->stdio_file == stderr) {
- if (setvbuf(fptr->stdio_file, NULL, _IONBF, BUFSIZ) != 0)
- rb_warn("setvbuf() can't be honoured for %s", RSTRING_PTR(fptr->pathv));
- }
- else if (fptr->stdio_file == stdout && isatty(fptr->fd)) {
- if (setvbuf(fptr->stdio_file, NULL, _IOLBF, BUFSIZ) != 0)
- rb_warn("setvbuf() can't be honoured for %s", RSTRING_PTR(fptr->pathv));
- }
}
else {
- int tmpfd = rb_sysopen(fptr->pathv, oflags, 0666);
- int err = 0;
- if (rb_cloexec_dup2(tmpfd, fptr->fd) < 0)
- err = errno;
- (void)close(tmpfd);
- if (err) {
- rb_sys_fail_path(fptr->pathv);
- }
+ if (close(fptr->fd) < 0)
+ rb_sys_fail_path(fptr->pathv);
+ fptr->fd = -1;
+ fptr->fd = rb_sysopen(fptr->pathv, oflags, 0666);
}
return file;
@@ -6651,7 +6219,7 @@ rb_io_init_copy(VALUE dest, VALUE io)
off_t pos;
io = rb_io_get_io(io);
- if (!OBJ_INIT_COPY(dest, io)) return dest;
+ if (dest == io) return dest;
GetOpenFile(io, orig);
MakeOpenFile(dest, fptr);
@@ -6721,7 +6289,7 @@ rb_f_printf(int argc, VALUE *argv)
VALUE out;
if (argc == 0) return Qnil;
- if (RB_TYPE_P(argv[0], T_STRING)) {
+ if (TYPE(argv[0]) == T_STRING) {
out = rb_stdout;
}
else {
@@ -6833,7 +6401,7 @@ static VALUE
rb_io_putc(VALUE io, VALUE ch)
{
VALUE str;
- if (RB_TYPE_P(ch, T_STRING)) {
+ if (TYPE(ch) == T_STRING) {
str = rb_str_substr(ch, 0, 1);
}
else {
@@ -6890,15 +6458,13 @@ io_puts_ary(VALUE ary, VALUE out, int recur)
if (recur) {
tmp = rb_str_new2("[...]");
rb_io_puts(1, &tmp, out);
- return Qtrue;
+ return Qnil;
}
- ary = rb_check_array_type(ary);
- if (NIL_P(ary)) return Qfalse;
for (i=0; i<RARRAY_LEN(ary); i++) {
tmp = RARRAY_PTR(ary)[i];
rb_io_puts(1, &tmp, out);
}
- return Qtrue;
+ return Qnil;
}
/*
@@ -6933,11 +6499,13 @@ rb_io_puts(int argc, VALUE *argv, VALUE out)
return Qnil;
}
for (i=0; i<argc; i++) {
- if (RB_TYPE_P(argv[i], T_STRING)) {
+ if (TYPE(argv[i]) == T_STRING) {
line = argv[i];
goto string;
}
- if (rb_exec_recursive(io_puts_ary, argv[i], out)) {
+ line = rb_check_array_type(argv[i]);
+ if (!NIL_P(line)) {
+ rb_exec_recursive(io_puts_ary, line, out);
continue;
}
line = rb_obj_as_string(argv[i]);
@@ -6974,7 +6542,7 @@ void
rb_p(VALUE obj) /* for debug print within C code */
{
VALUE str = rb_obj_as_string(rb_inspect(obj));
- if (RB_TYPE_P(rb_stdout, T_FILE) &&
+ if (TYPE(rb_stdout) == T_FILE &&
rb_method_basic_definition_p(CLASS_OF(rb_stdout), id_write)) {
io_write(rb_stdout, str, 1);
io_write(rb_stdout, rb_default_rs, 0);
@@ -6985,35 +6553,6 @@ rb_p(VALUE obj) /* for debug print within C code */
}
}
-struct rb_f_p_arg {
- int argc;
- VALUE *argv;
-};
-
-static VALUE
-rb_f_p_internal(VALUE arg)
-{
- struct rb_f_p_arg *arg1 = (struct rb_f_p_arg*)arg;
- int argc = arg1->argc;
- VALUE *argv = arg1->argv;
- int i;
- VALUE ret = Qnil;
-
- for (i=0; i<argc; i++) {
- rb_p(argv[i]);
- }
- if (argc == 1) {
- ret = argv[0];
- }
- else if (argc > 1) {
- ret = rb_ary_new4(argc, argv);
- }
- if (RB_TYPE_P(rb_stdout, T_FILE)) {
- rb_io_flush(rb_stdout);
- }
- return ret;
-}
-
/*
* call-seq:
* p(obj) -> obj
@@ -7035,11 +6574,22 @@ rb_f_p_internal(VALUE arg)
static VALUE
rb_f_p(int argc, VALUE *argv, VALUE self)
{
- struct rb_f_p_arg arg;
- arg.argc = argc;
- arg.argv = argv;
+ int i;
+ VALUE ret = Qnil;
- return rb_uninterruptible(rb_f_p_internal, (VALUE)&arg);
+ for (i=0; i<argc; i++) {
+ rb_p(argv[i]);
+ }
+ if (argc == 1) {
+ ret = argv[0];
+ }
+ else if (argc > 1) {
+ ret = rb_ary_new4(argc, argv);
+ }
+ if (TYPE(rb_stdout) == T_FILE) {
+ rb_io_flush(rb_stdout);
+ }
+ return ret;
}
/*
@@ -7085,10 +6635,7 @@ void
rb_write_error2(const char *mesg, long len)
{
if (rb_stderr == orig_stderr || RFILE(orig_stderr)->fptr->fd < 0) {
- if (fwrite(mesg, sizeof(char), (size_t)len, stderr) < (size_t)len) {
- /* failed to write to stderr, what can we do? */
- return;
- }
+ (void)fwrite(mesg, sizeof(char), len, stderr);
}
else {
rb_io_write(rb_stderr, rb_str_new(mesg, len));
@@ -7101,23 +6648,6 @@ rb_write_error(const char *mesg)
rb_write_error2(mesg, strlen(mesg));
}
-void
-rb_write_error_str(VALUE mesg)
-{
- /* a stopgap measure for the time being */
- if (rb_stderr == orig_stderr || RFILE(orig_stderr)->fptr->fd < 0) {
- size_t len = (size_t)RSTRING_LEN(mesg);
- if (fwrite(RSTRING_PTR(mesg), sizeof(char), len, stderr) < len) {
- RB_GC_GUARD(mesg);
- return;
- }
- }
- else {
- /* may unlock GVL, and */
- rb_io_write(rb_stderr, mesg);
- }
-}
-
static void
must_respond_to(ID mid, VALUE val, ID id)
{
@@ -7199,117 +6729,59 @@ rb_io_stdio_file(rb_io_t *fptr)
* call-seq:
* IO.new(fd [, mode] [, opt]) -> io
*
- * Returns a new IO object (a stream) for the given integer file descriptor
- * +fd+ and +mode+ string. +opt+ may be used to specify parts of +mode+ in a
- * more readable fashion. See also IO.sysopen and IO.for_fd.
- *
- * IO.new is called by various File and IO opening methods such as IO::open,
- * Kernel#open, and File::open.
- *
- * === Open Mode
- *
- * When +mode+ is an integer it must be combination of the modes defined in
- * File::Constants (+File::RDONLY+, +File::WRONLY | File::CREAT+). See the
- * open(2) man page for more information.
- *
- * When +mode+ is a string it must be in one of the following forms:
- *
- * fmode
- * fmode ":" ext_enc
- * fmode ":" ext_enc ":" int_enc
- * fmode ":" "BOM|UTF-*"
- *
- * +fmode+ is an IO open mode string, +ext_enc+ is the external encoding for
- * the IO and +int_enc+ is the internal encoding.
- *
- * ==== IO Open Mode
+ * Returns a new IO object (a stream) for the given IO object or integer file
+ * descriptor and mode string. See also IO.sysopen and IO.for_fd.
*
- * Ruby allows the following open modes:
- *
- * "r" Read-only, starts at beginning of file (default mode).
- *
- * "r+" Read-write, starts at beginning of file.
- *
- * "w" Write-only, truncates existing file
- * to zero length or creates a new file for writing.
- *
- * "w+" Read-write, truncates existing file to zero length
- * or creates a new file for reading and writing.
- *
- * "a" Write-only, each write call appends data at end of file.
- * Creates a new file for writing if file does not exist.
+ * === Parameters
*
- * "a+" Read-write, each write call appends data at end of file.
- * Creates a new file for reading and writing if file does
- * not exist.
+ * fd:: numeric file descriptor or IO object
+ * mode:: file mode. a string or an integer
+ * opt:: hash for specifying +mode+ by name.
*
- * The following modes must be used separately, and along with one or more of
- * the modes seen above.
+ * ==== Mode
*
- * "b" Binary file mode
- * Suppresses EOL <-> CRLF conversion on Windows. And
- * sets external encoding to ASCII-8BIT unless explicitly
- * specified.
+ * When mode is an integer it must be combination of the modes defined in
+ * File::Constants.
*
- * "t" Text file mode
+ * When mode is a string it must be in one of the following forms:
+ * - "fmode",
+ * - "fmode:extern",
+ * - "fmode:extern:intern".
+ * <code>extern</code> is the external encoding name for the IO.
+ * <code>intern</code> is the internal encoding.
+ * <code>fmode</code> must be a file open mode string. See the description of
+ * class IO for mode string directives.
*
- * When the open mode of original IO is read only, the mode cannot be
- * changed to be writable. Similarly, the open mode cannot be changed from
- * write only to readable.
+ * When the mode of original IO is read only, the mode cannot be changed to
+ * be writable. Similarly, the mode cannot be changed from write only to
+ * readable.
*
* When such a change is attempted the error is raised in different locations
* according to the platform.
*
- * === IO Encoding
- *
- * When +ext_enc+ is specified, strings read will be tagged by the encoding
- * when reading, and strings output will be converted to the specified
- * encoding when writing.
- *
- * When +ext_enc+ and +int_enc+ are specified read strings will be converted
- * from +ext_enc+ to +int_enc+ upon input, and written strings will be
- * converted from +int_enc+ to +ext_enc+ upon output. See Encoding for
- * further details of transcoding on input and output.
- *
- * If "BOM|UTF-8", "BOM|UTF-16LE" or "BOM|UTF16-BE" are used, ruby checks for
- * a Unicode BOM in the input document to help determine the encoding. For
- * UTF-16 encodings the file open mode must be binary. When present, the BOM
- * is stripped and the external encoding from the BOM is used. When the BOM
- * is missing the given Unicode encoding is used as +ext_enc+. (The BOM-set
- * encoding option is case insensitive, so "bom|utf-8" is also valid.)
- *
- * === Options
- *
- * +opt+ can be used instead of +mode+ for improved readability. The
- * following keys are supported:
- *
+ * ==== Options
+ * +opt+ can have the following keys
* :mode ::
* Same as +mode+ parameter
- *
- * :\external_encoding ::
+ * :external_encoding ::
* External encoding for the IO. "-" is a synonym for the default external
* encoding.
- *
- * :\internal_encoding ::
+ * :internal_encoding ::
* Internal encoding for the IO. "-" is a synonym for the default internal
* encoding.
*
* If the value is nil no conversion occurs.
- *
* :encoding ::
* Specifies external and internal encodings as "extern:intern".
- *
* :textmode ::
* If the value is truth value, same as "t" in argument +mode+.
- *
* :binmode ::
* If the value is truth value, same as "b" in argument +mode+.
- *
* :autoclose ::
* If the value is +false+, the +fd+ will be kept open after this IO
* instance gets finalized.
*
- * Also, +opt+ can have same keys in String#encode for controlling conversion
+ * Also +opt+ can have same keys in String#encode for controlling conversion
* between the external encoding and the internal encoding.
*
* === Example 1
@@ -7319,7 +6791,7 @@ rb_io_stdio_file(rb_io_t *fptr)
* $stderr.puts "Hello"
* a.puts "World"
*
- * Produces:
+ * <em>produces:</em>
*
* Hello
* World
@@ -7406,14 +6878,20 @@ rb_io_initialize(int argc, VALUE *argv, VALUE io)
* File.new(filename, mode="r" [, opt]) -> file
* File.new(filename [, mode [, perm]] [, opt]) -> file
*
- * Opens the file named by +filename+ according to the given +mode+ and
- * returns a new File object.
+ * Opens the file named by +filename+ according to +mode+ (default is "r")
+ * and returns a new <code>File</code> object.
+ *
+ * === Parameters
*
- * See IO.new for a description of +mode+ and +opt+.
+ * See the description of class IO for a description of +mode+. The file
+ * mode may optionally be specified as a Fixnum by +or+-ing together the
+ * flags (O_RDONLY etc, again described under +IO+).
*
- * If a file is being created, permission bits may be given in +perm+. These
- * mode and permission bits are platform dependent; on Unix systems, see
- * open(2) and chmod(2) man pages for details.
+ * Optional permission bits may be given in +perm+. These mode and
+ * permission bits are platform dependent; on Unix systems, see
+ * <code>open(2)</code> for details.
+ *
+ * Optional +opt+ parameter is same as in IO.open.
*
* === Examples
*
@@ -7482,9 +6960,9 @@ rb_io_s_for_fd(int argc, VALUE *argv, VALUE klass)
static VALUE
rb_io_autoclose_p(VALUE io)
{
- rb_io_t *fptr = RFILE(io)->fptr;
+ rb_io_t *fptr;
rb_secure(4);
- rb_io_check_closed(fptr);
+ GetOpenFile(io, fptr);
return (fptr->mode & FMODE_PREP) ? Qfalse : Qtrue;
}
@@ -7536,21 +7014,6 @@ argf_free(void *ptr)
xfree(p);
}
-static size_t
-argf_memsize(const void *ptr)
-{
- const struct argf *p = ptr;
- size_t size = sizeof(*p);
- if (!ptr) return 0;
- if (p->inplace) size += strlen(p->inplace) + 1;
- return size;
-}
-
-static const rb_data_type_t argf_type = {
- "ARGF",
- {argf_mark, argf_free, argf_memsize},
-};
-
static inline void
argf_init(struct argf *p, VALUE v)
{
@@ -7564,7 +7027,7 @@ static VALUE
argf_alloc(VALUE klass)
{
struct argf *p;
- VALUE argf = TypedData_Make_Struct(klass, struct argf, &argf_type, p);
+ VALUE argf = Data_Make_Struct(klass, struct argf, argf_mark, argf_free, p);
argf_init(p, Qnil);
return argf;
@@ -7586,7 +7049,6 @@ argf_initialize(VALUE argf, VALUE argv)
static VALUE
argf_initialize_copy(VALUE argf, VALUE orig)
{
- if (!OBJ_INIT_COPY(argf, orig)) return argf;
ARGF = argf_of(orig);
ARGF.argv = rb_obj_dup(ARGF.argv);
if (ARGF.inplace) {
@@ -7599,7 +7061,7 @@ argf_initialize_copy(VALUE argf, VALUE orig)
/*
* call-seq:
- * ARGF.lineno = integer -> integer
+ * ARGF.lineno = number -> nil
*
* Sets the line number of +ARGF+ as a whole to the given +Integer+.
*
@@ -7612,7 +7074,7 @@ argf_initialize_copy(VALUE argf, VALUE orig)
* ARGF.lineno #=> 0
* ARGF.readline #=> "This is line 1\n"
* ARGF.lineno #=> 1
- * ARGF.lineno = 0 #=> 0
+ * ARGF.lineno = 0 #=> nil
* ARGF.lineno #=> 0
*/
static VALUE
@@ -7650,7 +7112,7 @@ argf_forward(int argc, VALUE *argv, VALUE argf)
#define next_argv() argf_next_argv(argf)
#define ARGF_GENERIC_INPUT_P() \
- (ARGF.current_file == rb_stdin && !RB_TYPE_P(ARGF.current_file, T_FILE))
+ (ARGF.current_file == rb_stdin && TYPE(ARGF.current_file) != T_FILE)
#define ARGF_FORWARD(argc, argv) do {\
if (ARGF_GENERIC_INPUT_P())\
return argf_forward((argc), (argv), argf);\
@@ -7678,7 +7140,7 @@ argf_next_argv(VALUE argf)
int stdout_binmode = 0;
int fmode;
- if (RB_TYPE_P(rb_stdout, T_FILE)) {
+ if (TYPE(rb_stdout) == T_FILE) {
GetOpenFile(rb_stdout, fptr);
if (fptr->mode & FMODE_BINMODE)
stdout_binmode = 1;
@@ -7726,7 +7188,7 @@ argf_next_argv(VALUE argf)
VALUE str;
int fw;
- if (RB_TYPE_P(rb_stdout, T_FILE) && rb_stdout != orig_stdout) {
+ if (TYPE(rb_stdout) == T_FILE && rb_stdout != orig_stdout) {
rb_io_close(rb_stdout);
}
fstat(fr, &st);
@@ -7844,7 +7306,7 @@ argf_getline(int argc, VALUE *argv, VALUE argf)
retry:
if (!next_argv()) return Qnil;
if (ARGF_GENERIC_INPUT_P()) {
- line = rb_funcall3(ARGF.current_file, idGets, argc, argv);
+ line = rb_funcall3(ARGF.current_file, rb_intern("gets"), argc, argv);
}
else {
if (argc == 0 && rb_rs == rb_default_rs) {
@@ -7922,7 +7384,7 @@ rb_f_gets(int argc, VALUE *argv, VALUE recv)
if (recv == argf) {
return argf_gets(argc, argv, argf);
}
- return rb_funcall2(argf, idGets, argc, argv);
+ return rb_funcall2(argf, rb_intern("gets"), argc, argv);
}
/*
@@ -8113,7 +7575,6 @@ rb_f_backquote(VALUE obj, VALUE str)
rb_io_t *fptr;
SafeStringValue(str);
- rb_last_status_clear();
port = pipe_open_s(str, "r", FMODE_READABLE|DEFAULT_TEXTMODE, NULL);
if (NIL_P(port)) return rb_str_new(0,0);
@@ -8345,7 +7806,7 @@ do_io_advise(rb_io_t *fptr, VALUE advice, off_t offset, off_t len)
* The platform doesn't support this hint. We don't raise exception, instead
* silently ignore it. Because IO::advise is only hint.
*/
- if (NIL_P(num_adv))
+ if (num_adv == Qnil)
return Qnil;
ias.fd = fptr->fd;
@@ -8354,11 +7815,10 @@ do_io_advise(rb_io_t *fptr, VALUE advice, off_t offset, off_t len)
ias.len = len;
rv = (int)rb_thread_io_blocking_region(io_advise_internal, &ias, fptr->fd);
- if (rv) {
+ if (rv)
/* posix_fadvise(2) doesn't set errno. On success it returns 0; otherwise
it returns the error code. */
- rb_syserr_fail_str(rv, fptr->pathv);
- }
+ rb_syserr_fail(rv, RSTRING_PTR(fptr->pathv));
return Qnil;
}
@@ -8443,7 +7903,7 @@ rb_io_advise(int argc, VALUE *argv, VALUE io)
#ifdef HAVE_POSIX_FADVISE
return do_io_advise(fptr, advice, off, l);
#else
- ((void)off, (void)l); /* Ignore all hint */
+ /* Ignore all hint */
return Qnil;
#endif
}
@@ -8524,10 +7984,10 @@ rb_f_select(int argc, VALUE *argv, VALUE obj)
#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
typedef unsigned long ioctl_req_t;
-# define NUM2IOCTLREQ(num) NUM2ULONG(num)
+ #define NUM2IOCTLREQ(num) NUM2ULONG(num)
#else
typedef int ioctl_req_t;
-# define NUM2IOCTLREQ(num) NUM2INT(num)
+ #define NUM2IOCTLREQ(num) NUM2INT(num)
#endif
struct ioctl_arg {
@@ -8536,8 +7996,7 @@ struct ioctl_arg {
long narg;
};
-static VALUE
-nogvl_ioctl(void *ptr)
+static VALUE nogvl_ioctl(void *ptr)
{
struct ioctl_arg *arg = ptr;
@@ -8779,9 +8238,8 @@ setup_narg(ioctl_req_t cmd, VALUE *argp, int io_p)
narg = (long)(SIGNED_VALUE)RSTRING_PTR(arg);
}
}
-
- return narg;
-}
+ return narg;
+ }
static VALUE
rb_ioctl(VALUE io, VALUE req, VALUE arg)
@@ -8790,7 +8248,7 @@ rb_ioctl(VALUE io, VALUE req, VALUE arg)
rb_io_t *fptr;
long narg;
int retval;
-
+
rb_secure(2);
narg = setup_narg(cmd, &arg, 1);
@@ -8834,8 +8292,7 @@ struct fcntl_arg {
long narg;
};
-static VALUE
-nogvl_fcntl(void *ptr)
+static VALUE nogvl_fcntl(void *ptr)
{
struct fcntl_arg *arg = ptr;
@@ -8977,7 +8434,7 @@ rb_f_syscall(int argc, VALUE *argv)
# else
# error ---->> it is asserted that __syscall takes the first argument and returns retval in 64bit signed integer. <<----
# endif
-#elif defined(__linux__)
+#elif defined linux
# define SYSCALL syscall
# define NUM2SYSCALLID(x) NUM2LONG(x)
# define RETVAL2NUM(x) LONG2NUM(x)
@@ -9090,14 +8547,6 @@ io_new_instance(VALUE args)
return rb_class_new_instance(2, (VALUE*)args+1, *(VALUE*)args);
}
-static rb_encoding *
-find_encoding(VALUE v)
-{
- rb_encoding *enc = rb_find_encoding(v);
- if (!enc) unsupported_encoding(StringValueCStr(v));
- return enc;
-}
-
static void
io_encoding_set(rb_io_t *fptr, VALUE v1, VALUE v2, VALUE opt)
{
@@ -9106,7 +8555,7 @@ io_encoding_set(rb_io_t *fptr, VALUE v1, VALUE v2, VALUE opt)
VALUE ecopts, tmp;
if (!NIL_P(v2)) {
- enc2 = find_encoding(v1);
+ enc2 = rb_to_encoding(v1);
tmp = rb_check_string_type(v2);
if (!NIL_P(tmp)) {
if (RSTRING_LEN(tmp) == 1 && RSTRING_PTR(tmp)[0] == '-') {
@@ -9115,26 +8564,21 @@ io_encoding_set(rb_io_t *fptr, VALUE v1, VALUE v2, VALUE opt)
enc2 = NULL;
}
else
- enc = find_encoding(v2);
- if (enc == enc2) {
- /* Special case - "-" => no transcoding */
- enc2 = NULL;
- }
- }
- else {
- enc = find_encoding(v2);
+ enc = rb_to_encoding(v2);
if (enc == enc2) {
/* Special case - "-" => no transcoding */
enc2 = NULL;
}
}
+ else
+ enc = rb_to_encoding(v2);
SET_UNIVERSAL_NEWLINE_DECORATOR_IF_ENC2(enc2, ecflags);
ecflags = rb_econv_prepare_options(opt, &ecopts, ecflags);
}
else {
if (NIL_P(v1)) {
/* Set to default encodings */
- rb_io_ext_int_to_encs(NULL, NULL, &enc, &enc2, 0);
+ rb_io_ext_int_to_encs(NULL, NULL, &enc, &enc2);
SET_UNIVERSAL_NEWLINE_DECORATOR_IF_ENC2(enc2, ecflags);
ecopts = Qnil;
}
@@ -9146,7 +8590,7 @@ io_encoding_set(rb_io_t *fptr, VALUE v1, VALUE v2, VALUE opt)
ecflags = rb_econv_prepare_options(opt, &ecopts, ecflags);
}
else {
- rb_io_ext_int_to_encs(find_encoding(v1), NULL, &enc, &enc2, 0);
+ rb_io_ext_int_to_encs(rb_to_encoding(v1), NULL, &enc, &enc2);
SET_UNIVERSAL_NEWLINE_DECORATOR_IF_ENC2(enc2, ecflags);
ecopts = Qnil;
}
@@ -9450,35 +8894,31 @@ seek_before_access(VALUE argp)
* IO.read(name, [length [, offset]] ) -> string
* IO.read(name, [length [, offset]], open_args) -> string
*
- * Opens the file, optionally seeks to the given +offset+, then returns
- * +length+ bytes (defaulting to the rest of the file). <code>read</code>
- * ensures the file is closed before returning.
+ * Opens the file, optionally seeks to the given <i>offset</i>, then returns
+ * <i>length</i> bytes (defaulting to the rest of the file).
+ * <code>read</code> ensures the file is closed before returning.
*
* If the last argument is a hash, it specifies option for internal
* open(). The key would be the following. open_args: is exclusive
* to others.
*
- * encoding::
- * string or encoding
+ * encoding: string or encoding
*
- * specifies encoding of the read string. +encoding+ will be ignored
+ * specifies encoding of the read string. encoding will be ignored
* if length is specified.
*
- * mode::
- * string
+ * mode: string
*
- * specifies mode argument for open(). It should start with "r"
- * otherwise it will cause an error.
+ * specifies mode argument for open(). it should start with "r"
+ * otherwise it would cause error.
*
- * open_args:: array of strings
+ * open_args: array of strings
*
* specifies arguments for open() as an array.
*
- * Examples:
- *
- * IO.read("testfile") #=> "This is line one\nThis is line two\nThis is line three\nAnd so on...\n"
- * IO.read("testfile", 20) #=> "This is line one\nThi"
- * IO.read("testfile", 20, 10) #=> "ne one\nThis is line "
+ * IO.read("testfile") #=> "This is line one\nThis is line two\nThis is line three\nAnd so on...\n"
+ * IO.read("testfile", 20) #=> "This is line one\nThi"
+ * IO.read("testfile", 20, 10) #=> "ne one\nThis is line "
*/
static VALUE
@@ -9640,11 +9080,18 @@ rb_io_s_write(int argc, VALUE *argv, VALUE io)
/*
* call-seq:
* IO.binwrite(name, string, [offset] ) => fixnum
- * IO.binwrite(name, string, [offset], open_args ) => fixnum
*
- * Same as <code>IO.write</code> except opening the file in binary mode
- * and ASCII-8BIT encoding ("wb:ASCII-8BIT").
+ * Opens the file, optionally seeks to the given <i>offset</i>, writes
+ * <i>string</i> then returns the length written.
+ * <code>binwrite</code> ensures the file is closed before returning.
+ * The open mode would be "wb:ASCII-8BIT".
+ * If <i>offset</i> is not given, the file is truncated. Otherwise,
+ * it is not truncated.
*
+ * IO.binwrite("testfile", "0123456789", 20) # => 10
+ * # File could contain: "This is line one\nThi0123456789two\nThis is line three\nAnd so on...\n"
+ * IO.binwrite("testfile", "0123456789") #=> 10
+ * # File would now read: "0123456789"
*/
static VALUE
@@ -9884,7 +9331,7 @@ nogvl_copy_stream_sendfile(struct copy_stream_struct *stp)
#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
case EWOULDBLOCK:
#endif
-#ifndef __linux__
+#ifndef linux
/*
* Linux requires stp->src_fd to be a mmap-able (regular) file,
* select() reports regular files to always be "ready", so
@@ -10042,7 +9489,7 @@ nogvl_copy_stream_read_write(struct copy_stream_struct *stp)
}
}
-static void *
+static VALUE
nogvl_copy_stream_func(void *arg)
{
struct copy_stream_struct *stp = (struct copy_stream_struct *)arg;
@@ -10061,7 +9508,7 @@ nogvl_copy_stream_func(void *arg)
#ifdef USE_SENDFILE
finish:
#endif
- return 0;
+ return Qnil;
}
static VALUE
@@ -10093,13 +9540,11 @@ copy_stream_fallback_body(VALUE arg)
l = buflen < rest ? buflen : (long)rest;
}
if (stp->src_fd == -1) {
- VALUE rc = rb_funcall(stp->src, read_method, 2, INT2FIX(l), buf);
-
- if (read_method == id_read && NIL_P(rc))
- break;
+ rb_funcall(stp->src, read_method, 2, INT2FIX(l), buf);
}
else {
ssize_t ss;
+ rb_thread_wait_fd(stp->src_fd);
rb_str_resize(buf, buflen);
ss = maygvl_copy_stream_read(1, stp, RSTRING_PTR(buf), l, off);
if (ss == -1)
@@ -10147,13 +9592,13 @@ copy_stream_body(VALUE arg)
stp->total = 0;
if (stp->src == argf ||
- !(RB_TYPE_P(stp->src, T_FILE) ||
- RB_TYPE_P(stp->src, T_STRING) ||
+ !(TYPE(stp->src) == T_FILE ||
+ TYPE(stp->src) == T_STRING ||
rb_respond_to(stp->src, rb_intern("to_path")))) {
src_fd = -1;
}
else {
- src_io = RB_TYPE_P(stp->src, T_FILE) ? stp->src : Qnil;
+ src_io = TYPE(stp->src) == T_FILE ? stp->src : Qnil;
if (NIL_P(src_io)) {
VALUE args[2];
int oflags = O_RDONLY;
@@ -10174,13 +9619,13 @@ copy_stream_body(VALUE arg)
stp->src_fd = src_fd;
if (stp->dst == argf ||
- !(RB_TYPE_P(stp->dst, T_FILE) ||
- RB_TYPE_P(stp->dst, T_STRING) ||
+ !(TYPE(stp->dst) == T_FILE ||
+ TYPE(stp->dst) == T_STRING ||
rb_respond_to(stp->dst, rb_intern("to_path")))) {
dst_fd = -1;
}
else {
- dst_io = RB_TYPE_P(stp->dst, T_FILE) ? stp->dst : Qnil;
+ dst_io = TYPE(stp->dst) == T_FILE ? stp->dst : Qnil;
if (NIL_P(dst_io)) {
VALUE args[3];
int oflags = O_WRONLY|O_CREAT|O_TRUNC;
@@ -10190,7 +9635,7 @@ copy_stream_body(VALUE arg)
FilePathValue(stp->dst);
args[0] = stp->dst;
args[1] = INT2NUM(oflags);
- args[2] = INT2FIX(0666);
+ args[2] = INT2FIX(0600);
dst_io = rb_class_new_instance(3, args, rb_cFile);
stp->dst = dst_io;
stp->close_dst = 1;
@@ -10208,9 +9653,9 @@ copy_stream_body(VALUE arg)
#ifdef O_BINARY
if (src_fptr)
SET_BINARY_MODE_WITH_SEEK_CUR(src_fptr);
-#endif
if (dst_fptr)
- rb_io_ascii8bit_binmode(dst_io);
+ setmode(dst_fd, O_BINARY);
+#endif
if (stp->src_offset == (off_t)-1 && src_fptr && src_fptr->rbuf.len) {
size_t len = src_fptr->rbuf.len;
@@ -10246,8 +9691,7 @@ copy_stream_body(VALUE arg)
rb_fd_set(src_fd, &stp->fds);
rb_fd_set(dst_fd, &stp->fds);
- rb_thread_call_without_gvl(nogvl_copy_stream_func, (void*)stp, RUBY_UBF_IO, 0);
- return Qnil;
+ return rb_thread_blocking_region(nogvl_copy_stream_func, (void*)stp, RUBY_UBF_IO, 0);
}
static VALUE
@@ -10396,7 +9840,7 @@ rb_io_set_encoding(int argc, VALUE *argv, VALUE io)
rb_io_t *fptr;
VALUE v1, v2, opt;
- if (!RB_TYPE_P(io, T_FILE)) {
+ if (TYPE(io) != T_FILE) {
return rb_funcall2(io, id_set_encoding, argc, argv);
}
@@ -10666,7 +10110,7 @@ argf_eof(VALUE argf)
/*
* call-seq:
- * ARGF.read([length [, outbuf]]) -> string, outbuf, or nil
+ * ARGF.read([length [, buffer]]) -> string, buffer, or nil
*
* Reads _length_ bytes from ARGF. The files named on the command line
* are concatenated and treated as a single file by this method, so when
@@ -10683,10 +10127,8 @@ argf_eof(VALUE argf)
*
* If _length_ is zero, it returns _""_.
*
- * If the optional _outbuf_ argument is present, it must reference a String,
+ * If the optional _buffer_ argument is present, it must reference a String,
* which will receive the data.
- * The <i>outbuf</i> will contain only the received data after the method call
- * even if it is not empty at the beginning.
*
* For example:
*
@@ -10772,10 +10214,7 @@ static VALUE argf_getpartial(int argc, VALUE *argv, VALUE argf, int nonblock);
* Reads at most _maxlen_ bytes from the ARGF stream. It blocks only if
* +ARGF+ has no data immediately available. If the optional _outbuf_
* argument is present, it must reference a String, which will receive the
- * data.
- * The <i>outbuf</i> will contain only the received data after the method call
- * even if it is not empty at the beginning.
- * It raises <code>EOFError</code> on end of file.
+ * data. It raises <code>EOFError</code> on end of file.
*
* +readpartial+ is designed for streams such as pipes, sockets, and ttys. It
* blocks only when no data is immediately available. This means that it
@@ -10926,7 +10365,7 @@ argf_getbyte(VALUE argf)
retry:
if (!next_argv()) return Qnil;
- if (!RB_TYPE_P(ARGF.current_file, T_FILE)) {
+ if (TYPE(ARGF.current_file) != T_FILE) {
ch = rb_funcall3(ARGF.current_file, rb_intern("getbyte"), 0, 0);
}
else {
@@ -10966,7 +10405,7 @@ argf_readchar(VALUE argf)
retry:
if (!next_argv()) rb_eof_error();
- if (!RB_TYPE_P(ARGF.current_file, T_FILE)) {
+ if (TYPE(ARGF.current_file) != T_FILE) {
ch = rb_funcall3(ARGF.current_file, rb_intern("getc"), 0, 0);
}
else {
@@ -11022,6 +10461,10 @@ argf_readbyte(VALUE argf)
* ARGF.each_line(sep=$/,limit) {|line| block } -> ARGF
* ARGF.each_line(...) -> an_enumerator
*
+ * ARGF.lines(sep=$/) {|line| block } -> ARGF
+ * ARGF.lines(sep=$/,limit) {|line| block } -> ARGF
+ * ARGF.lines(...) -> an_enumerator
+ *
* Returns an enumerator which iterates over each line (separated by _sep_,
* which defaults to your platform's newline character) of each file in
* +ARGV+. If a block is supplied, each line in turn will be yielded to the
@@ -11056,19 +10499,6 @@ argf_each_line(int argc, VALUE *argv, VALUE argf)
}
/*
- * This is a deprecated alias for <code>each_line</code>.
- */
-
-static VALUE
-argf_lines(int argc, VALUE *argv, VALUE argf)
-{
- rb_warn("ARGF#lines is deprecated; use #each_line instead");
- if (!rb_block_given_p())
- return rb_enumeratorize(argf, ID2SYM(rb_intern("each_line")), argc, argv);
- return argf_each_line(argc, argv, argf);
-}
-
-/*
* call-seq:
* ARGF.bytes {|byte| block } -> ARGF
* ARGF.bytes -> an_enumerator
@@ -11104,20 +10534,10 @@ argf_each_byte(VALUE argf)
}
/*
- * This is a deprecated alias for <code>each_byte</code>.
- */
-
-static VALUE
-argf_bytes(VALUE argf)
-{
- rb_warn("ARGF#bytes is deprecated; use #each_byte instead");
- if (!rb_block_given_p())
- return rb_enumeratorize(argf, ID2SYM(rb_intern("each_byte")), 0, 0);
- return argf_each_byte(argf);
-}
-
-/*
* call-seq:
+ * ARGF.chars {|char| block } -> ARGF
+ * ARGF.chars -> an_enumerator
+ *
* ARGF.each_char {|char| block } -> ARGF
* ARGF.each_char -> an_enumerator
*
@@ -11144,59 +10564,6 @@ argf_each_char(VALUE argf)
}
/*
- * This is a deprecated alias for <code>each_char</code>.
- */
-
-static VALUE
-argf_chars(VALUE argf)
-{
- rb_warn("ARGF#chars is deprecated; use #each_char instead");
- if (!rb_block_given_p())
- return rb_enumeratorize(argf, ID2SYM(rb_intern("each_char")), 0, 0);
- return argf_each_char(argf);
-}
-
-/*
- * call-seq:
- * ARGF.each_codepoint {|codepoint| block } -> ARGF
- * ARGF.each_codepoint -> an_enumerator
- *
- * Iterates over each codepoint of each file in +ARGF+.
- *
- * This method allows you to treat the files supplied on the command line as
- * a single file consisting of the concatenation of each named file. After
- * the last codepoint of the first file has been returned, the first
- * codepoint of the second file is returned. The +ARGF.filename+ method can
- * be used to determine the name of the file in which the current codepoint
- * appears.
- *
- * If no block is given, an enumerator is returned instead.
- */
-static VALUE
-argf_each_codepoint(VALUE argf)
-{
- RETURN_ENUMERATOR(argf, 0, 0);
- for (;;) {
- if (!next_argv()) return argf;
- rb_block_call(ARGF.current_file, rb_intern("each_codepoint"), 0, 0, 0, 0);
- ARGF.next_p = 1;
- }
-}
-
-/*
- * This is a deprecated alias for <code>each_codepoint</code>.
- */
-
-static VALUE
-argf_codepoints(VALUE argf)
-{
- rb_warn("ARGF#codepoints is deprecated; use #each_codepoint instead");
- if (!rb_block_given_p())
- return rb_enumeratorize(argf, ID2SYM(rb_intern("each_codepoint")), 0, 0);
- return argf_each_codepoint(argf);
-}
-
-/*
* call-seq:
* ARGF.filename -> String
* ARGF.path -> String
@@ -11594,59 +10961,91 @@ argf_write(VALUE argf, VALUE str)
*/
/*
- * The IO class is the basis for all input and output in Ruby.
+ * Class <code>IO</code> is the basis for all input and output in Ruby.
* An I/O stream may be <em>duplexed</em> (that is, bidirectional), and
* so may use more than one native operating system stream.
*
- * Many of the examples in this section use the File class, the only standard
- * subclass of IO. The two classes are closely associated. Like the File
- * class, the Socket library subclasses from IO (such as TCPSocket or
- * UDPSocket).
+ * Many of the examples in this section use class <code>File</code>,
+ * the only standard subclass of <code>IO</code>. The two classes are
+ * closely associated.
*
- * The Kernel#open method can create an IO (or File) object for these types
- * of arguments:
+ * As used in this section, <em>portname</em> may take any of the
+ * following forms.
*
* * A plain string represents a filename suitable for the underlying
* operating system.
*
- * * A string starting with <code>"|"</code> indicates a subprocess.
- * The remainder of the string following the <code>"|"</code> is
+ * * A string starting with ``<code>|</code>'' indicates a subprocess.
+ * The remainder of the string following the ``<code>|</code>'' is
* invoked as a process with appropriate input/output channels
* connected to it.
*
- * * A string equal to <code>"|-"</code> will create another Ruby
+ * * A string equal to ``<code>|-</code>'' will create another Ruby
* instance as a subprocess.
*
- * The IO may be opened with different file modes (read-only, write-only) and
- * encodings for proper conversion. See IO.new for these options. See
- * Kernel#open for details of the various command formats described above.
- *
- * IO.popen, the Open3 library, or Process#spawn may also be used to
- * communicate with subprocesses through an IO.
- *
* Ruby will convert pathnames between different operating system
- * conventions if possible. For instance, on a Windows system the
- * filename <code>"/gumby/ruby/test.rb"</code> will be opened as
- * <code>"\gumby\ruby\test.rb"</code>. When specifying a Windows-style
- * filename in a Ruby string, remember to escape the backslashes:
+ * conventions if possible. For instance, on a Windows system the
+ * filename ``<code>/gumby/ruby/test.rb</code>'' will be opened as
+ * ``<code>\gumby\ruby\test.rb</code>''. When specifying a
+ * Windows-style filename in a Ruby string, remember to escape the
+ * backslashes:
*
- * "c:\\gumby\\ruby\\test.rb"
+ * "c:\\gumby\\ruby\\test.rb"
*
* Our examples here will use the Unix-style forward slashes;
- * File::ALT_SEPARATOR can be used to get the platform-specific separator
- * character.
+ * <code>File::SEPARATOR</code> can be used to get the
+ * platform-specific separator character.
+ *
+ * I/O ports may be opened in any one of several different modes, which
+ * are shown in this section as <em>mode</em>. The mode may
+ * either be a Fixnum or a String. If numeric, it should be
+ * one of the operating system specific constants (O_RDONLY,
+ * O_WRONLY, O_RDWR, O_APPEND and so on). See man open(2) for
+ * more information.
+ *
+ * If the mode is given as a String, it must be one of the
+ * values listed in the following table.
+ *
+ * Mode | Meaning
+ * -----+--------------------------------------------------------
+ * "r" | Read-only, starts at beginning of file (default mode).
+ * -----+--------------------------------------------------------
+ * "r+" | Read-write, starts at beginning of file.
+ * -----+--------------------------------------------------------
+ * "w" | Write-only, truncates existing file
+ * | to zero length or creates a new file for writing.
+ * -----+--------------------------------------------------------
+ * "w+" | Read-write, truncates existing file to zero length
+ * | or creates a new file for reading and writing.
+ * -----+--------------------------------------------------------
+ * "a" | Write-only, starts at end of file if file exists,
+ * | otherwise creates a new file for writing.
+ * -----+--------------------------------------------------------
+ * "a+" | Read-write, starts at end of file if file exists,
+ * | otherwise creates a new file for reading and
+ * | writing.
+ * -----+--------------------------------------------------------
+ * "b" | Binary file mode (may appear with
+ * | any of the key letters listed above).
+ * | Suppresses EOL <-> CRLF conversion on Windows. And
+ * | sets external encoding to ASCII-8BIT unless explicitly
+ * | specified.
+ * -----+--------------------------------------------------------
+ * "t" | Text file mode (may appear with
+ * | any of the key letters listed above except "b").
+ *
*
* The global constant ARGF (also accessible as $<) provides an
* IO-like stream which allows access to all files mentioned on the
- * command line (or STDIN if no files are mentioned). ARGF#path and its alias
- * ARGF#filename are provided to access the name of the file currently being
- * read.
+ * command line (or STDIN if no files are mentioned). ARGF provides
+ * the methods <code>#path</code> and <code>#filename</code> to access
+ * the name of the file currently being read.
*
* == io/console
*
* The io/console extension provides methods for interacting with the
- * console. The console can be accessed from IO.console or the standard
- * input/output/error IO objects.
+ * console. The console can be accessed from <code>IO.console</code> or
+ * the standard input/output/error IO objects.
*
* Requiring io/console adds the following methods:
*
@@ -11669,7 +11068,7 @@ argf_write(VALUE argf, VALUE str)
*
* require 'io/console'
* rows, columns = $stdin.winsize
- * puts "Your screen is #{columns} wide and #{rows} tall"
+ * puts "You screen is #{columns} wide and #{rows} tall"
*/
void
@@ -11776,10 +11175,10 @@ Init_IO(void)
rb_define_method(rb_cIO, "each_byte", rb_io_each_byte, 0);
rb_define_method(rb_cIO, "each_char", rb_io_each_char, 0);
rb_define_method(rb_cIO, "each_codepoint", rb_io_each_codepoint, 0);
- rb_define_method(rb_cIO, "lines", rb_io_lines, -1);
- rb_define_method(rb_cIO, "bytes", rb_io_bytes, 0);
- rb_define_method(rb_cIO, "chars", rb_io_chars, 0);
- rb_define_method(rb_cIO, "codepoints", rb_io_codepoints, 0);
+ rb_define_method(rb_cIO, "lines", rb_io_each_line, -1);
+ rb_define_method(rb_cIO, "bytes", rb_io_each_byte, 0);
+ rb_define_method(rb_cIO, "chars", rb_io_each_char, 0);
+ rb_define_method(rb_cIO, "codepoints", rb_io_each_codepoint, 0);
rb_define_method(rb_cIO, "syswrite", rb_io_syswrite, 1);
rb_define_method(rb_cIO, "sysread", rb_io_sysread, -1);
@@ -11882,7 +11281,6 @@ Init_IO(void)
rb_define_method(rb_cARGF, "initialize", argf_initialize, -2);
rb_define_method(rb_cARGF, "initialize_copy", argf_initialize_copy, 1);
rb_define_method(rb_cARGF, "to_s", argf_to_s, 0);
- rb_define_alias(rb_cARGF, "inspect", "to_s");
rb_define_method(rb_cARGF, "argv", argf_argv, 0);
rb_define_method(rb_cARGF, "fileno", argf_fileno, 0);
@@ -11893,11 +11291,9 @@ Init_IO(void)
rb_define_method(rb_cARGF, "each_line", argf_each_line, -1);
rb_define_method(rb_cARGF, "each_byte", argf_each_byte, 0);
rb_define_method(rb_cARGF, "each_char", argf_each_char, 0);
- rb_define_method(rb_cARGF, "each_codepoint", argf_each_codepoint, 0);
- rb_define_method(rb_cARGF, "lines", argf_lines, -1);
- rb_define_method(rb_cARGF, "bytes", argf_bytes, 0);
- rb_define_method(rb_cARGF, "chars", argf_chars, 0);
- rb_define_method(rb_cARGF, "codepoints", argf_codepoints, 0);
+ rb_define_method(rb_cARGF, "lines", argf_each_line, -1);
+ rb_define_method(rb_cARGF, "bytes", argf_each_byte, 0);
+ rb_define_method(rb_cARGF, "chars", argf_each_char, 0);
rb_define_method(rb_cARGF, "read", argf_read, -1);
rb_define_method(rb_cARGF, "readpartial", argf_readpartial, -1);
@@ -11969,6 +11365,58 @@ Init_IO(void)
rb_define_method(rb_cFile, "initialize", rb_file_initialize, -1);
+ /* open for reading only */
+ rb_file_const("RDONLY", INT2FIX(O_RDONLY));
+ /* open for writing only */
+ rb_file_const("WRONLY", INT2FIX(O_WRONLY));
+ /* open for reading and writing */
+ rb_file_const("RDWR", INT2FIX(O_RDWR));
+ /* append on each write */
+ rb_file_const("APPEND", INT2FIX(O_APPEND));
+ /* create file if it does not exist */
+ rb_file_const("CREAT", INT2FIX(O_CREAT));
+ /* error if CREAT and the file exists */
+ rb_file_const("EXCL", INT2FIX(O_EXCL));
+#if defined(O_NDELAY) || defined(O_NONBLOCK)
+# ifndef O_NONBLOCK
+# define O_NONBLOCK O_NDELAY
+# endif
+ /* do not block on open or for data to become available */
+ rb_file_const("NONBLOCK", INT2FIX(O_NONBLOCK));
+#endif
+ /* truncate size to 0 */
+ rb_file_const("TRUNC", INT2FIX(O_TRUNC));
+#ifdef O_NOCTTY
+ /* not to make opened IO the controlling terminal device */
+ rb_file_const("NOCTTY", INT2FIX(O_NOCTTY));
+#endif
+#ifndef O_BINARY
+# define O_BINARY 0
+#endif
+ /* disable line code conversion and make ASCII-8BIT */
+ rb_file_const("BINARY", INT2FIX(O_BINARY));
+#ifdef O_SYNC
+ rb_file_const("SYNC", INT2FIX(O_SYNC));
+#endif
+#ifdef O_DSYNC
+ rb_file_const("DSYNC", INT2FIX(O_DSYNC));
+#endif
+#ifdef O_RSYNC
+ rb_file_const("RSYNC", INT2FIX(O_RSYNC));
+#endif
+#ifdef O_NOFOLLOW
+ /* do not follow symlinks */
+ rb_file_const("NOFOLLOW", INT2FIX(O_NOFOLLOW)); /* FreeBSD, Linux */
+#endif
+#ifdef O_NOATIME
+ /* do not change atime */
+ rb_file_const("NOATIME", INT2FIX(O_NOATIME)); /* Linux */
+#endif
+#ifdef O_DIRECT
+ /* Try to minimize cache effects of the I/O to and from this file. */
+ rb_file_const("DIRECT", INT2FIX(O_DIRECT));
+#endif
+
sym_mode = ID2SYM(rb_intern("mode"));
sym_perm = ID2SYM(rb_intern("perm"));
sym_extenc = ID2SYM(rb_intern("external_encoding"));
diff --git a/iseq.c b/iseq.c
index 43e4c8273e..73806630b5 100644
--- a/iseq.c
+++ b/iseq.c
@@ -11,20 +11,17 @@
#include "ruby/ruby.h"
#include "internal.h"
-#include "eval_intern.h"
/* #define RUBY_MARK_FREE_DEBUG 1 */
#include "gc.h"
#include "vm_core.h"
#include "iseq.h"
-#define numberof(array) (int)(sizeof(array) / sizeof((array)[0]))
-
#include "insns.inc"
#include "insns_info.inc"
-#define ISEQ_MAJOR_VERSION 2
-#define ISEQ_MINOR_VERSION 0
+#define ISEQ_MAJOR_VERSION 1
+#define ISEQ_MINOR_VERSION 2
VALUE rb_cISeq;
@@ -72,8 +69,8 @@ iseq_free(void *ptr)
if (!iseq->orig) {
/* It's possible that strings are freed */
if (0) {
- RUBY_GC_INFO("%s @ %s\n", RSTRING_PTR(iseq->location.label),
- RSTRING_PTR(iseq->location.path));
+ RUBY_GC_INFO("%s @ %s\n", RSTRING_PTR(iseq->name),
+ RSTRING_PTR(iseq->filename));
}
if (iseq->iseq != iseq->iseq_encoded) {
@@ -81,13 +78,11 @@ iseq_free(void *ptr)
}
RUBY_FREE_UNLESS_NULL(iseq->iseq);
- RUBY_FREE_UNLESS_NULL(iseq->line_info_table);
+ RUBY_FREE_UNLESS_NULL(iseq->insn_info_table);
RUBY_FREE_UNLESS_NULL(iseq->local_table);
RUBY_FREE_UNLESS_NULL(iseq->ic_entries);
- RUBY_FREE_UNLESS_NULL(iseq->callinfo_entries);
RUBY_FREE_UNLESS_NULL(iseq->catch_table);
RUBY_FREE_UNLESS_NULL(iseq->arg_opt_table);
- RUBY_FREE_UNLESS_NULL(iseq->arg_keyword_table);
compile_data_free(iseq->compile_data);
}
ruby_xfree(ptr);
@@ -103,14 +98,11 @@ iseq_mark(void *ptr)
if (ptr) {
rb_iseq_t *iseq = ptr;
- RUBY_GC_INFO("%s @ %s\n", RSTRING_PTR(iseq->location.label), RSTRING_PTR(iseq->location.path));
+ RUBY_GC_INFO("%s @ %s\n", RSTRING_PTR(iseq->name), RSTRING_PTR(iseq->filename));
RUBY_MARK_UNLESS_NULL(iseq->mark_ary);
-
- RUBY_MARK_UNLESS_NULL(iseq->location.label);
- RUBY_MARK_UNLESS_NULL(iseq->location.base_label);
- RUBY_MARK_UNLESS_NULL(iseq->location.path);
- RUBY_MARK_UNLESS_NULL(iseq->location.absolute_path);
-
+ RUBY_MARK_UNLESS_NULL(iseq->name);
+ RUBY_MARK_UNLESS_NULL(iseq->filename);
+ RUBY_MARK_UNLESS_NULL(iseq->filepath);
RUBY_MARK_UNLESS_NULL((VALUE)iseq->cref_stack);
RUBY_MARK_UNLESS_NULL(iseq->klass);
RUBY_MARK_UNLESS_NULL(iseq->coverage);
@@ -144,12 +136,11 @@ iseq_memsize(const void *ptr)
}
size += iseq->iseq_size * sizeof(VALUE);
- size += iseq->line_info_size * sizeof(struct iseq_line_info_entry);
+ size += iseq->insn_info_size * sizeof(struct iseq_insn_info_entry);
size += iseq->local_table_size * sizeof(ID);
size += iseq->catch_table_size * sizeof(struct iseq_catch_table_entry);
size += iseq->arg_opts * sizeof(VALUE);
size += iseq->ic_size * sizeof(struct iseq_inline_cache_entry);
- size += iseq->callinfo_size * sizeof(rb_call_info_t);
if (iseq->compile_data) {
struct iseq_compile_data_storage *cur;
@@ -183,98 +174,72 @@ iseq_alloc(VALUE klass)
return TypedData_Make_Struct(klass, rb_iseq_t, &iseq_data_type, iseq);
}
-static rb_iseq_location_t *
-iseq_location_setup(rb_iseq_t *iseq, VALUE path, VALUE absolute_path, VALUE name, size_t first_lineno)
-{
- rb_iseq_location_t *loc = &iseq->location;
- loc->path = path;
- if (RTEST(absolute_path) && rb_str_cmp(path, absolute_path) == 0)
- loc->absolute_path = path;
- else
- loc->absolute_path = absolute_path;
- loc->label = loc->base_label = name;
- loc->first_lineno = first_lineno;
- return loc;
-}
-
static void
set_relation(rb_iseq_t *iseq, const VALUE parent)
{
const VALUE type = iseq->type;
rb_thread_t *th = GET_THREAD();
- rb_iseq_t *piseq;
/* set class nest stack */
if (type == ISEQ_TYPE_TOP) {
/* toplevel is private */
- iseq->cref_stack = NEW_CREF(rb_cObject);
- iseq->cref_stack->nd_refinements = Qnil;
+ iseq->cref_stack = NEW_BLOCK(rb_cObject);
iseq->cref_stack->nd_visi = NOEX_PRIVATE;
if (th->top_wrapper) {
- NODE *cref = NEW_CREF(th->top_wrapper);
- cref->nd_refinements = Qnil;
+ NODE *cref = NEW_BLOCK(th->top_wrapper);
cref->nd_visi = NOEX_PRIVATE;
cref->nd_next = iseq->cref_stack;
iseq->cref_stack = cref;
}
- iseq->local_iseq = iseq;
}
else if (type == ISEQ_TYPE_METHOD || type == ISEQ_TYPE_CLASS) {
- iseq->cref_stack = NEW_CREF(0); /* place holder */
- iseq->cref_stack->nd_refinements = Qnil;
- iseq->local_iseq = iseq;
+ iseq->cref_stack = NEW_BLOCK(0); /* place holder */
}
else if (RTEST(parent)) {
+ rb_iseq_t *piseq;
GetISeqPtr(parent, piseq);
iseq->cref_stack = piseq->cref_stack;
+ }
+
+ if (type == ISEQ_TYPE_TOP ||
+ type == ISEQ_TYPE_METHOD || type == ISEQ_TYPE_CLASS) {
+ iseq->local_iseq = iseq;
+ }
+ else if (RTEST(parent)) {
+ rb_iseq_t *piseq;
+ GetISeqPtr(parent, piseq);
iseq->local_iseq = piseq->local_iseq;
}
if (RTEST(parent)) {
+ rb_iseq_t *piseq;
GetISeqPtr(parent, piseq);
iseq->parent_iseq = piseq;
}
-
- if (type == ISEQ_TYPE_MAIN) {
- iseq->local_iseq = iseq;
- }
-}
-
-void
-rb_iseq_add_mark_object(rb_iseq_t *iseq, VALUE obj)
-{
- if (!RTEST(iseq->mark_ary)) {
- iseq->mark_ary = rb_ary_tmp_new(3);
- OBJ_UNTRUST(iseq->mark_ary);
- RBASIC(iseq->mark_ary)->klass = 0;
- }
- rb_ary_push(iseq->mark_ary, obj);
}
static VALUE
prepare_iseq_build(rb_iseq_t *iseq,
- VALUE name, VALUE path, VALUE absolute_path, VALUE first_lineno,
+ VALUE name, VALUE filename, VALUE filepath, VALUE line_no,
VALUE parent, enum iseq_type type, VALUE block_opt,
const rb_compile_option_t *option)
{
- iseq->type = type;
- iseq->arg_rest = -1;
- iseq->arg_block = -1;
- iseq->arg_keyword = -1;
- iseq->klass = 0;
- set_relation(iseq, parent);
-
OBJ_FREEZE(name);
- OBJ_FREEZE(path);
-
- iseq_location_setup(iseq, path, absolute_path, name, first_lineno);
- if (iseq != iseq->local_iseq) {
- iseq->location.base_label = iseq->local_iseq->location.label;
- }
+ OBJ_FREEZE(filename);
+ iseq->name = name;
+ iseq->filename = filename;
+ iseq->filepath = filepath;
+ iseq->line_no = (unsigned short)line_no; /* TODO: really enough? */
iseq->defined_method_id = 0;
- iseq->mark_ary = 0;
+ iseq->mark_ary = rb_ary_tmp_new(3);
+ OBJ_UNTRUST(iseq->mark_ary);
+ RBASIC(iseq->mark_ary)->klass = 0;
+ iseq->type = type;
+ iseq->arg_rest = -1;
+ iseq->arg_block = -1;
+ iseq->klass = 0;
/*
* iseq->special_block_builder = GC_GUARDED_PTR_REF(block_opt);
@@ -302,11 +267,13 @@ prepare_iseq_build(rb_iseq_t *iseq,
iseq->compile_data->option = option;
iseq->compile_data->last_coverable_line = -1;
+ set_relation(iseq, parent);
+
iseq->coverage = Qfalse;
if (!GET_THREAD()->parse_in_eval) {
VALUE coverages = rb_get_coverages();
if (RTEST(coverages)) {
- iseq->coverage = rb_hash_lookup(coverages, path);
+ iseq->coverage = rb_hash_lookup(coverages, filename);
if (NIL_P(iseq->coverage)) iseq->coverage = Qfalse;
}
}
@@ -323,7 +290,7 @@ cleanup_iseq_build(rb_iseq_t *iseq)
compile_data_free(data);
if (RTEST(err)) {
- rb_funcall2(err, rb_intern("set_backtrace"), 1, &iseq->location.path);
+ rb_funcall2(err, rb_intern("set_backtrace"), 1, &iseq->filename);
rb_exc_raise(err);
}
return Qtrue;
@@ -398,7 +365,6 @@ make_compile_option_value(rb_compile_option_t *option)
SET_COMPILE_OPTION(option, opt, operands_unification);
SET_COMPILE_OPTION(option, opt, instructions_unification);
SET_COMPILE_OPTION(option, opt, stack_caching);
- SET_COMPILE_OPTION(option, opt, trace_instruction);
SET_COMPILE_OPTION_NUM(option, opt, debug_level);
}
#undef SET_COMPILE_OPTION
@@ -407,31 +373,31 @@ make_compile_option_value(rb_compile_option_t *option)
}
VALUE
-rb_iseq_new(NODE *node, VALUE name, VALUE path, VALUE absolute_path,
+rb_iseq_new(NODE *node, VALUE name, VALUE filename, VALUE filepath,
VALUE parent, enum iseq_type type)
{
- return rb_iseq_new_with_opt(node, name, path, absolute_path, INT2FIX(0), parent, type,
+ return rb_iseq_new_with_opt(node, name, filename, filepath, INT2FIX(0), parent, type,
&COMPILE_OPTION_DEFAULT);
}
VALUE
-rb_iseq_new_top(NODE *node, VALUE name, VALUE path, VALUE absolute_path, VALUE parent)
+rb_iseq_new_top(NODE *node, VALUE name, VALUE filename, VALUE filepath, VALUE parent)
{
- return rb_iseq_new_with_opt(node, name, path, absolute_path, INT2FIX(0), parent, ISEQ_TYPE_TOP,
+ return rb_iseq_new_with_opt(node, name, filename, filepath, INT2FIX(0), parent, ISEQ_TYPE_TOP,
&COMPILE_OPTION_DEFAULT);
}
VALUE
-rb_iseq_new_main(NODE *node, VALUE path, VALUE absolute_path)
+rb_iseq_new_main(NODE *node, VALUE filename, VALUE filepath)
{
rb_thread_t *th = GET_THREAD();
VALUE parent = th->base_block->iseq->self;
- return rb_iseq_new_with_opt(node, rb_str_new2("<main>"), path, absolute_path, INT2FIX(0),
+ return rb_iseq_new_with_opt(node, rb_str_new2("<main>"), filename, filepath, INT2FIX(0),
parent, ISEQ_TYPE_MAIN, &COMPILE_OPTION_DEFAULT);
}
static VALUE
-rb_iseq_new_with_bopt_and_opt(NODE *node, VALUE name, VALUE path, VALUE absolute_path, VALUE first_lineno,
+rb_iseq_new_with_bopt_and_opt(NODE *node, VALUE name, VALUE filename, VALUE filepath, VALUE line_no,
VALUE parent, enum iseq_type type, VALUE bopt,
const rb_compile_option_t *option)
{
@@ -441,28 +407,28 @@ rb_iseq_new_with_bopt_and_opt(NODE *node, VALUE name, VALUE path, VALUE absolute
GetISeqPtr(self, iseq);
iseq->self = self;
- prepare_iseq_build(iseq, name, path, absolute_path, first_lineno, parent, type, bopt, option);
+ prepare_iseq_build(iseq, name, filename, filepath, line_no, parent, type, bopt, option);
rb_iseq_compile_node(self, node);
cleanup_iseq_build(iseq);
return self;
}
VALUE
-rb_iseq_new_with_opt(NODE *node, VALUE name, VALUE path, VALUE absolute_path, VALUE first_lineno,
+rb_iseq_new_with_opt(NODE *node, VALUE name, VALUE filename, VALUE filepath, VALUE line_no,
VALUE parent, enum iseq_type type,
const rb_compile_option_t *option)
{
/* TODO: argument check */
- return rb_iseq_new_with_bopt_and_opt(node, name, path, absolute_path, first_lineno, parent, type,
+ return rb_iseq_new_with_bopt_and_opt(node, name, filename, filepath, line_no, parent, type,
Qfalse, option);
}
VALUE
-rb_iseq_new_with_bopt(NODE *node, VALUE name, VALUE path, VALUE absolute_path, VALUE first_lineno,
+rb_iseq_new_with_bopt(NODE *node, VALUE name, VALUE filename, VALUE filepath, VALUE line_no,
VALUE parent, enum iseq_type type, VALUE bopt)
{
/* TODO: argument check */
- return rb_iseq_new_with_bopt_and_opt(node, name, path, absolute_path, first_lineno, parent, type,
+ return rb_iseq_new_with_bopt_and_opt(node, name, filename, filepath, line_no, parent, type,
bopt, &COMPILE_OPTION_DEFAULT);
}
@@ -476,18 +442,17 @@ iseq_load(VALUE self, VALUE data, VALUE parent, VALUE opt)
VALUE iseqval = iseq_alloc(self);
VALUE magic, version1, version2, format_type, misc;
- VALUE name, path, absolute_path, first_lineno;
+ VALUE name, filename, filepath, line_no;
VALUE type, body, locals, args, exception;
st_data_t iseq_type;
- static struct st_table *type_map_cache = 0;
struct st_table *type_map = 0;
rb_iseq_t *iseq;
rb_compile_option_t option;
int i = 0;
/* [magic, major_version, minor_version, format_type, misc,
- * label, path, first_lineno,
+ * name, filename, line_no,
* type, locals, args, exception_table, body]
*/
@@ -498,13 +463,12 @@ iseq_load(VALUE self, VALUE data, VALUE parent, VALUE opt)
version2 = CHECK_INTEGER(rb_ary_entry(data, i++));
format_type = CHECK_INTEGER(rb_ary_entry(data, i++));
misc = rb_ary_entry(data, i++); /* TODO */
- ((void)magic, (void)version1, (void)version2, (void)format_type, (void)misc);
name = CHECK_STRING(rb_ary_entry(data, i++));
- path = CHECK_STRING(rb_ary_entry(data, i++));
- absolute_path = rb_ary_entry(data, i++);
- absolute_path = NIL_P(absolute_path) ? Qnil : CHECK_STRING(absolute_path);
- first_lineno = CHECK_INTEGER(rb_ary_entry(data, i++));
+ filename = CHECK_STRING(rb_ary_entry(data, i++));
+ filepath = rb_ary_entry(data, i++);
+ filepath = NIL_P(filepath) ? Qnil : CHECK_STRING(filepath);
+ line_no = CHECK_INTEGER(rb_ary_entry(data, i++));
type = CHECK_SYMBOL(rb_ary_entry(data, i++));
locals = CHECK_ARRAY(rb_ary_entry(data, i++));
@@ -520,9 +484,7 @@ iseq_load(VALUE self, VALUE data, VALUE parent, VALUE opt)
GetISeqPtr(iseqval, iseq);
iseq->self = iseqval;
- type_map = type_map_cache;
if (type_map == 0) {
- struct st_table *cached_map;
type_map = st_init_numtable();
st_insert(type_map, ID2SYM(rb_intern("top")), ISEQ_TYPE_TOP);
st_insert(type_map, ID2SYM(rb_intern("method")), ISEQ_TYPE_METHOD);
@@ -533,20 +495,14 @@ iseq_load(VALUE self, VALUE data, VALUE parent, VALUE opt)
st_insert(type_map, ID2SYM(rb_intern("eval")), ISEQ_TYPE_EVAL);
st_insert(type_map, ID2SYM(rb_intern("main")), ISEQ_TYPE_MAIN);
st_insert(type_map, ID2SYM(rb_intern("defined_guard")), ISEQ_TYPE_DEFINED_GUARD);
- cached_map = ATOMIC_PTR_CAS(type_map_cache, (struct st_table *)0, type_map);
- if (cached_map) {
- st_free_table(type_map);
- type_map = cached_map;
- }
}
if (st_lookup(type_map, type, &iseq_type) == 0) {
- ID typeid = SYM2ID(type);
- VALUE typename = rb_id2str(typeid);
+ const char *typename = rb_id2name(type);
if (typename)
- rb_raise(rb_eTypeError, "unsupport type: :%"PRIsVALUE, typename);
+ rb_raise(rb_eTypeError, "unsupport type: :%s", typename);
else
- rb_raise(rb_eTypeError, "unsupport type: %p", (void *)typeid);
+ rb_raise(rb_eTypeError, "unsupport type: %p", (void *)type);
}
if (parent == Qnil) {
@@ -554,7 +510,7 @@ iseq_load(VALUE self, VALUE data, VALUE parent, VALUE opt)
}
make_compile_option(&option, opt);
- prepare_iseq_build(iseq, name, path, absolute_path, first_lineno,
+ prepare_iseq_build(iseq, name, filename, filepath, line_no,
parent, (enum iseq_type)iseq_type, 0, &option);
rb_iseq_build_from_ary(iseq, locals, args, exception, body);
@@ -563,9 +519,6 @@ iseq_load(VALUE self, VALUE data, VALUE parent, VALUE opt)
return iseqval;
}
-/*
- * :nodoc:
- */
static VALUE
iseq_s_load(int argc, VALUE *argv, VALUE self)
{
@@ -581,92 +534,45 @@ rb_iseq_load(VALUE data, VALUE parent, VALUE opt)
return iseq_load(rb_cISeq, data, parent, opt);
}
-VALUE
-rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE absolute_path, VALUE line, rb_block_t *base_block, VALUE opt)
+static NODE *
+parse_string(VALUE str, const char *file, int line)
{
- int state;
- rb_thread_t *th = GET_THREAD();
- rb_block_t *prev_base_block = th->base_block;
- VALUE iseqval = Qundef;
-
- th->base_block = base_block;
-
- TH_PUSH_TAG(th);
- if ((state = EXEC_TAG()) == 0) {
- VALUE parser;
- int ln = NUM2INT(line);
- NODE *node;
- rb_compile_option_t option;
-
- StringValueCStr(file);
- make_compile_option(&option, opt);
-
- parser = rb_parser_new();
-
- if (RB_TYPE_P((src), T_FILE))
- node = rb_parser_compile_file_path(parser, file, src, ln);
- else {
- node = rb_parser_compile_string_path(parser, file, src, ln);
+ VALUE parser = rb_parser_new();
+ NODE *node = rb_parser_compile_string(parser, file, str, line);
- if (!node) {
- rb_exc_raise(GET_THREAD()->errinfo); /* TODO: check err */
- }
- }
-
- if (base_block && base_block->iseq) {
- iseqval = rb_iseq_new_with_opt(node, base_block->iseq->location.label,
- file, absolute_path, line, base_block->iseq->self,
- ISEQ_TYPE_EVAL, &option);
- }
- else {
- iseqval = rb_iseq_new_with_opt(node, rb_str_new2("<compiled>"), file, absolute_path, line, Qfalse,
- ISEQ_TYPE_TOP, &option);
- }
+ if (!node) {
+ rb_exc_raise(GET_THREAD()->errinfo); /* TODO: check err */
}
- TH_POP_TAG();
-
- th->base_block = prev_base_block;
-
- if (state) {
- JUMP_TAG(state);
- }
-
- return iseqval;
+ return node;
}
VALUE
-rb_iseq_compile(VALUE src, VALUE file, VALUE line)
+rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE filepath, VALUE line, VALUE opt)
{
- return rb_iseq_compile_with_option(src, file, Qnil, line, 0, Qnil);
+ rb_compile_option_t option;
+ const char *fn = StringValueCStr(file);
+ int ln = NUM2INT(line);
+ NODE *node = parse_string(StringValue(src), fn, ln);
+ rb_thread_t *th = GET_THREAD();
+ make_compile_option(&option, opt);
+
+ if (th->base_block && th->base_block->iseq) {
+ return rb_iseq_new_with_opt(node, th->base_block->iseq->name,
+ file, filepath, line, th->base_block->iseq->self,
+ ISEQ_TYPE_EVAL, &option);
+ }
+ else {
+ return rb_iseq_new_with_opt(node, rb_str_new2("<compiled>"), file, filepath, line, Qfalse,
+ ISEQ_TYPE_TOP, &option);
+ }
}
VALUE
-rb_iseq_compile_on_base(VALUE src, VALUE file, VALUE line, rb_block_t *base_block)
+rb_iseq_compile(VALUE src, VALUE file, VALUE line)
{
- return rb_iseq_compile_with_option(src, file, Qnil, line, base_block, Qnil);
+ return rb_iseq_compile_with_option(src, file, Qnil, line, Qnil);
}
-/*
- * call-seq:
- * InstructionSequence.compile(source[, file[, path[, line[, options]]]]) -> iseq
- * InstructionSequence.new(source[, file[, path[, line[, options]]]]) -> iseq
- *
- * Takes +source+, a String of Ruby code and compiles it to an
- * InstructionSequence.
- *
- * Optionally takes +file+, +path+, and +line+ which describe the filename,
- * absolute path and first line number of the ruby code in +source+ which are
- * metadata attached to the returned +iseq+.
- *
- * +options+, which can be +true+, +false+ or a +Hash+, is used to
- * modify the default behavior of the Ruby iseq compiler.
- *
- * For details regarding valid compile options see ::compile_option=.
- *
- * RubyVM::InstructionSequence.compile("a = 1 + 2")
- * #=> <RubyVM::InstructionSequence:<compiled>@<compiled>>
- *
- */
static VALUE
iseq_s_compile(int argc, VALUE *argv, VALUE self)
{
@@ -678,29 +584,9 @@ iseq_s_compile(int argc, VALUE *argv, VALUE self)
if (NIL_P(file)) file = rb_str_new2("<compiled>");
if (NIL_P(line)) line = INT2FIX(1);
- return rb_iseq_compile_with_option(src, file, path, line, 0, opt);
+ return rb_iseq_compile_with_option(src, file, path, line, opt);
}
-/*
- * call-seq:
- * InstructionSequence.compile_file(file[, options]) -> iseq
- *
- * Takes +file+, a String with the location of a Ruby source file, reads,
- * parses and compiles the file, and returns +iseq+, the compiled
- * InstructionSequence with source location metadata set.
- *
- * Optionally takes +options+, which can be +true+, +false+ or a +Hash+, to
- * modify the default behavior of the Ruby iseq compiler.
- *
- * For details regarding valid compile options see ::compile_option=.
- *
- * # /tmp/hello.rb
- * puts "Hello, world!"
- *
- * # elsewhere
- * RubyVM::InstructionSequence.compile_file("/tmp/hello.rb")
- * #=> <RubyVM::InstructionSequence:<main>@/tmp/hello.rb>
- */
static VALUE
iseq_s_compile_file(int argc, VALUE *argv, VALUE self)
{
@@ -726,38 +612,6 @@ iseq_s_compile_file(int argc, VALUE *argv, VALUE self)
ISEQ_TYPE_TOP, &option);
}
-/*
- * call-seq:
- * InstructionSequence.compile_option = options
- *
- * Sets the default values for various optimizations in the Ruby iseq
- * compiler.
- *
- * Possible values for +options+ include +true+, which enables all options,
- * +false+ which disables all options, and +nil+ which leaves all options
- * unchanged.
- *
- * You can also pass a +Hash+ of +options+ that you want to change, any
- * options not present in the hash will be left unchanged.
- *
- * Possible option names (which are keys in +options+) which can be set to
- * +true+ or +false+ include:
- *
- * * +:inline_const_cache+
- * * +:instructions_unification+
- * * +:operands_unification+
- * * +:peephole_optimization+
- * * +:specialized_instruction+
- * * +:stack_caching+
- * * +:tailcall_optimization+
- * * +:trace_instruction+
- *
- * Additionally, +:debug_level+ can be set to an integer.
- *
- * These default options can be overwritten for a single run of the iseq
- * compiler by passing any of the above values as the +options+ parameter to
- * ::new, ::compile and ::compile_file.
- */
static VALUE
iseq_s_compile_option_set(VALUE self, VALUE opt)
{
@@ -768,14 +622,6 @@ iseq_s_compile_option_set(VALUE self, VALUE opt)
return opt;
}
-/*
- * call-seq:
- * InstructionSequence.compile_option -> options
- *
- * Returns a hash of default options used by the Ruby iseq compiler.
- *
- * For details, see InstructionSequence.compile_option=.
- */
static VALUE
iseq_s_compile_option_get(VALUE self)
{
@@ -787,20 +633,12 @@ iseq_check(VALUE val)
{
rb_iseq_t *iseq;
GetISeqPtr(val, iseq);
- if (!iseq->location.label) {
+ if (!iseq->name) {
rb_raise(rb_eTypeError, "uninitialized InstructionSequence");
}
return iseq;
}
-/*
- * call-seq:
- * iseq.eval -> obj
- *
- * Evaluates the instruction sequence and returns the result.
- *
- * RubyVM::InstructionSequence.compile("1 + 2").eval #=> 3
- */
static VALUE
iseq_eval(VALUE self)
{
@@ -808,244 +646,23 @@ iseq_eval(VALUE self)
return rb_iseq_eval(self);
}
-/*
- * Returns a human-readable string representation of this instruction
- * sequence, including the #label and #path.
- */
static VALUE
iseq_inspect(VALUE self)
{
rb_iseq_t *iseq;
GetISeqPtr(self, iseq);
- if (!iseq->location.label) {
+ if (!iseq->name) {
return rb_sprintf("#<%s: uninitialized>", rb_obj_classname(self));
}
return rb_sprintf("<%s:%s@%s>",
rb_obj_classname(self),
- RSTRING_PTR(iseq->location.label), RSTRING_PTR(iseq->location.path));
-}
-
-/*
- * Returns the path of this instruction sequence.
- *
- * <code><compiled></code> if the iseq was evaluated from a string.
- *
- * For example, using irb:
- *
- * iseq = RubyVM::InstructionSequence.compile('num = 1 + 2')
- * #=> <RubyVM::InstructionSequence:<compiled>@<compiled>>
- * iseq.path
- * #=> "<compiled>"
- *
- * Using ::compile_file:
- *
- * # /tmp/method.rb
- * def hello
- * puts "hello, world"
- * end
- *
- * # in irb
- * > iseq = RubyVM::InstructionSequence.compile_file('/tmp/method.rb')
- * > iseq.path #=> /tmp/method.rb
- */
-static VALUE
-iseq_path(VALUE self)
-{
- rb_iseq_t *iseq;
- GetISeqPtr(self, iseq);
- return iseq->location.path;
-}
-
-/*
- * Returns the absolute path of this instruction sequence.
- *
- * +nil+ if the iseq was evaluated from a string.
- *
- * For example, using ::compile_file:
- *
- * # /tmp/method.rb
- * def hello
- * puts "hello, world"
- * end
- *
- * # in irb
- * > iseq = RubyVM::InstructionSequence.compile_file('/tmp/method.rb')
- * > iseq.absolute_path #=> /tmp/method.rb
- */
-static VALUE
-iseq_absolute_path(VALUE self)
-{
- rb_iseq_t *iseq;
- GetISeqPtr(self, iseq);
- return iseq->location.absolute_path;
-}
-
-/* Returns the label of this instruction sequence.
- *
- * <code><main></code> if it's at the top level, <code><compiled></code> if it
- * was evaluated from a string.
- *
- * For example, using irb:
- *
- * iseq = RubyVM::InstructionSequence.compile('num = 1 + 2')
- * #=> <RubyVM::InstructionSequence:<compiled>@<compiled>>
- * iseq.label
- * #=> "<compiled>"
- *
- * Using ::compile_file:
- *
- * # /tmp/method.rb
- * def hello
- * puts "hello, world"
- * end
- *
- * # in irb
- * > iseq = RubyVM::InstructionSequence.compile_file('/tmp/method.rb')
- * > iseq.label #=> <main>
- */
-static VALUE
-iseq_label(VALUE self)
-{
- rb_iseq_t *iseq;
- GetISeqPtr(self, iseq);
- return iseq->location.label;
-}
-
-/* Returns the base label of this instruction sequence.
- *
- * For example, using irb:
- *
- * iseq = RubyVM::InstructionSequence.compile('num = 1 + 2')
- * #=> <RubyVM::InstructionSequence:<compiled>@<compiled>>
- * iseq.base_label
- * #=> "<compiled>"
- *
- * Using ::compile_file:
- *
- * # /tmp/method.rb
- * def hello
- * puts "hello, world"
- * end
- *
- * # in irb
- * > iseq = RubyVM::InstructionSequence.compile_file('/tmp/method.rb')
- * > iseq.base_label #=> <main>
- */
-static VALUE
-iseq_base_label(VALUE self)
-{
- rb_iseq_t *iseq;
- GetISeqPtr(self, iseq);
- return iseq->location.base_label;
-}
-
-/* Returns the number of the first source line where the instruction sequence
- * was loaded from.
- *
- * For example, using irb:
- *
- * iseq = RubyVM::InstructionSequence.compile('num = 1 + 2')
- * #=> <RubyVM::InstructionSequence:<compiled>@<compiled>>
- * iseq.first_lineno
- * #=> 1
- */
-static VALUE
-iseq_first_lineno(VALUE self)
-{
- rb_iseq_t *iseq;
- GetISeqPtr(self, iseq);
- return iseq->location.first_lineno;
+ RSTRING_PTR(iseq->name), RSTRING_PTR(iseq->filename));
}
static
VALUE iseq_data_to_ary(rb_iseq_t *iseq);
-/*
- * call-seq:
- * iseq.to_a -> ary
- *
- * Returns an Array with 14 elements representing the instruction sequence
- * with the following data:
- *
- * [magic]
- * A string identifying the data format. <b>Always
- * +YARVInstructionSequence/SimpleDataFormat+.</b>
- *
- * [major_version]
- * The major version of the instruction sequence.
- *
- * [minor_version]
- * The minor version of the instruction sequence.
- *
- * [format_type]
- * A number identifying the data format. <b>Always 1</b>.
- *
- * [misc]
- * A hash containing:
- *
- * [+:arg_size+]
- * the total number of arguments taken by the method or the block (0 if
- * _iseq_ doesn't represent a method or block)
- * [+:local_size+]
- * the number of local variables + 1
- * [+:stack_max+]
- * used in calculating the stack depth at which a SystemStackError is
- * thrown.
- *
- * [#label]
- * The name of the context (block, method, class, module, etc.) that this
- * instruction sequence belongs to.
- *
- * <code><main></code> if it's at the top level, <code><compiled></code> if
- * it was evaluated from a string.
- *
- * [#path]
- * The relative path to the Ruby file where the instruction sequence was
- * loaded from.
- *
- * <code><compiled></code> if the iseq was evaluated from a string.
- *
- * [#absolute_path]
- * The absolute path to the Ruby file where the instruction sequence was
- * loaded from.
- *
- * +nil+ if the iseq was evaluated from a string.
- *
- * [#first_lineno]
- * The number of the first source line where the instruction sequence was
- * loaded from.
- *
- * [type]
- * The type of the instruction sequence.
- *
- * Valid values are +:top+, +:method+, +:block+, +:class+, +:rescue+,
- * +:ensure+, +:eval+, +:main+, and +:defined_guard+.
- *
- * [locals]
- * An array containing the names of all arguments and local variables as
- * symbols.
- *
- * [args]
- * The arity if the method or block only has required arguments.
- *
- * Otherwise an array of:
- *
- * [required_argc, [optional_arg_labels, ...],
- * splat_index, post_splat_argc, post_splat_index,
- * block_index, simple]
- *
- * More info about these values can be found in +vm_core.h+.
- *
- * [catch_table]
- * A list of exceptions and control flow operators (rescue, next, redo,
- * break, etc.).
- *
- * [bytecode]
- * An array of arrays containing the instruction names and operands that
- * make up the body of the instruction sequence.
- *
- */
static VALUE
iseq_to_a(VALUE self)
{
@@ -1055,53 +672,33 @@ iseq_to_a(VALUE self)
}
int
-rb_iseq_first_lineno(const rb_iseq_t *iseq)
+rb_iseq_first_lineno(rb_iseq_t *iseq)
{
- return FIX2INT(iseq->location.first_lineno);
+ return FIX2INT(iseq->line_no);
}
/* TODO: search algorithm is brute force.
this should be binary search or so. */
-static struct iseq_line_info_entry *
-get_line_info(const rb_iseq_t *iseq, size_t pos)
+static struct iseq_insn_info_entry *
+get_insn_info(const rb_iseq_t *iseq, const unsigned long pos)
{
- size_t i = 0, size = iseq->line_info_size;
- struct iseq_line_info_entry *table = iseq->line_info_table;
- const int debug = 0;
-
- if (debug) {
- printf("size: %"PRIdSIZE"\n", size);
- printf("table[%"PRIdSIZE"]: position: %d, line: %d, pos: %"PRIdSIZE"\n",
- i, table[i].position, table[i].line_no, pos);
- }
-
- if (size == 0) {
- return 0;
- }
- else if (size == 1) {
- return &table[0];
- }
- else {
- for (i=1; i<size; i++) {
- if (debug) printf("table[%"PRIdSIZE"]: position: %d, line: %d, pos: %"PRIdSIZE"\n",
- i, table[i].position, table[i].line_no, pos);
+ unsigned long i, size = iseq->insn_info_size;
+ struct iseq_insn_info_entry *table = iseq->insn_info_table;
- if (table[i].position == pos) {
- return &table[i];
- }
- if (table[i].position > pos) {
- return &table[i-1];
- }
+ for (i = 0; i < size; i++) {
+ if (table[i].position == pos) {
+ return &table[i];
}
}
- return &table[i-1];
+
+ return 0;
}
-static unsigned int
-find_line_no(const rb_iseq_t *iseq, size_t pos)
+static unsigned short
+find_line_no(rb_iseq_t *iseq, unsigned long pos)
{
- struct iseq_line_info_entry *entry = get_line_info(iseq, pos);
+ struct iseq_insn_info_entry *entry = get_insn_info(iseq, pos);
if (entry) {
return entry->line_no;
}
@@ -1110,31 +707,27 @@ find_line_no(const rb_iseq_t *iseq, size_t pos)
}
}
-unsigned int
-rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos)
+static unsigned short
+find_prev_line_no(rb_iseq_t *iseqdat, unsigned long pos)
{
- if (pos == 0) {
- return find_line_no(iseq, pos);
- }
- else {
- return find_line_no(iseq, pos - 1);
- }
-}
+ unsigned long i, size = iseqdat->insn_info_size;
+ struct iseq_insn_info_entry *iiary = iseqdat->insn_info_table;
-static VALUE
-id_to_name(ID id, VALUE default_value)
-{
- VALUE str = rb_id2str(id);
- if (!str) {
- str = default_value;
- }
- else if (!rb_str_symname_p(str)) {
- str = rb_str_inspect(str);
+ for (i = 0; i < size; i++) {
+ if (iiary[i].position == pos) {
+ if (i > 0) {
+ return iiary[i - 1].line_no;
+ }
+ else {
+ return 0;
+ }
+ }
}
- return str;
+
+ return 0;
}
-VALUE
+static VALUE
insn_operand_intern(rb_iseq_t *iseq,
VALUE insn, int op_no, VALUE op,
int len, size_t pos, VALUE *pnop, VALUE child)
@@ -1152,20 +745,34 @@ insn_operand_intern(rb_iseq_t *iseq,
ret = rb_sprintf("%"PRIuVALUE, op);
break;
- case TS_LINDEX:{
- if (insn == BIN(getlocal) || insn == BIN(setlocal)) {
- if (pnop) {
- rb_iseq_t *diseq = iseq;
- VALUE level = *pnop, i;
+ case TS_LINDEX:
+ {
+ rb_iseq_t *liseq = iseq->local_iseq;
+ int lidx = liseq->local_size - (int)op;
+ const char *name = rb_id2name(liseq->local_table[lidx]);
- for (i = 0; i < level; i++) {
- diseq = diseq->parent_iseq;
- }
- ret = id_to_name(diseq->local_table[diseq->local_size - op], INT2FIX('*'));
+ if (name) {
+ ret = rb_str_new2(name);
}
else {
- ret = rb_sprintf("%"PRIuVALUE, op);
+ ret = rb_str_new2("*");
}
+ break;
+ }
+ case TS_DINDEX:{
+ if (insn == BIN(getdynamic) || insn == BIN(setdynamic)) {
+ rb_iseq_t *diseq = iseq;
+ VALUE level = *pnop, i;
+ const char *name;
+ for (i = 0; i < level; i++) {
+ diseq = diseq->parent_iseq;
+ }
+ name = rb_id2name(diseq->local_table[diseq->local_size - op]);
+
+ if (!name) {
+ name = "*";
+ }
+ ret = rb_str_new2(name);
}
else {
ret = rb_inspect(INT2FIX(op));
@@ -1179,9 +786,7 @@ insn_operand_intern(rb_iseq_t *iseq,
op = obj_resurrect(op);
ret = rb_inspect(op);
if (CLASS_OF(op) == rb_cISeq) {
- if (child) {
- rb_ary_push(child, op);
- }
+ rb_ary_push(child, op);
}
break;
@@ -1189,7 +794,7 @@ insn_operand_intern(rb_iseq_t *iseq,
{
rb_iseq_t *iseq = (rb_iseq_t *)op;
if (iseq) {
- ret = iseq->location.label;
+ ret = iseq->name;
if (child) {
rb_ary_push(child, iseq->self);
}
@@ -1210,40 +815,6 @@ insn_operand_intern(rb_iseq_t *iseq,
ret = rb_sprintf("<ic:%"PRIdPTRDIFF">", (struct iseq_inline_cache_entry *)op - iseq->ic_entries);
break;
- case TS_CALLINFO:
- {
- rb_call_info_t *ci = (rb_call_info_t *)op;
- VALUE ary = rb_ary_new();
-
- if (ci->mid) {
- rb_ary_push(ary, rb_sprintf("mid:%s", rb_id2name(ci->mid)));
- }
-
- rb_ary_push(ary, rb_sprintf("argc:%d", ci->orig_argc));
-
- if (ci->blockiseq) {
- if (child) {
- rb_ary_push(child, ci->blockiseq->self);
- }
- rb_ary_push(ary, rb_sprintf("block:%"PRIsVALUE, ci->blockiseq->location.label));
- }
-
- if (ci->flag) {
- VALUE flags = rb_ary_new();
- if (ci->flag & VM_CALL_ARGS_SPLAT) rb_ary_push(flags, rb_str_new2("ARGS_SPLAT"));
- if (ci->flag & VM_CALL_ARGS_BLOCKARG) rb_ary_push(flags, rb_str_new2("ARGS_BLOCKARG"));
- if (ci->flag & VM_CALL_FCALL) rb_ary_push(flags, rb_str_new2("FCALL"));
- if (ci->flag & VM_CALL_VCALL) rb_ary_push(flags, rb_str_new2("VCALL"));
- if (ci->flag & VM_CALL_TAILCALL) rb_ary_push(flags, rb_str_new2("TAILCALL"));
- if (ci->flag & VM_CALL_SUPER) rb_ary_push(flags, rb_str_new2("SUPER"));
- if (ci->flag & VM_CALL_OPT_SEND) rb_ary_push(flags, rb_str_new2("SNED")); /* maybe not reachable */
- if (ci->flag & VM_CALL_ARGS_SKIP_SETUP) rb_ary_push(flags, rb_str_new2("ARGS_SKIP")); /* maybe not reachable */
- rb_ary_push(ary, rb_ary_join(flags, rb_str_new2("|")));
- }
- ret = rb_sprintf("<callinfo!%"PRIsVALUE">", rb_ary_join(ary, rb_str_new2(", ")));
- }
- break;
-
case TS_CDHASH:
ret = rb_str_new2("<cdhash>");
break;
@@ -1253,7 +824,7 @@ insn_operand_intern(rb_iseq_t *iseq,
break;
default:
- rb_bug("insn_operand_intern: unknown operand type: %c", type);
+ rb_bug("rb_iseq_disasm: unknown operand type: %c", type);
}
return ret;
}
@@ -1294,15 +865,23 @@ rb_iseq_disasm_insn(VALUE ret, VALUE *iseq, size_t pos,
}
}
- {
- unsigned int line_no = find_line_no(iseqdat, pos);
- unsigned int prev = pos == 0 ? 0 : find_line_no(iseqdat, pos - 1);
+ if (1) {
+ int line_no = find_line_no(iseqdat, pos);
+ int prev = find_prev_line_no(iseqdat, pos);
if (line_no && line_no != prev) {
long slen = RSTRING_LEN(str);
slen = (slen > 70) ? 0 : (70 - slen);
str = rb_str_catf(str, "%*s(%4d)", (int)slen, "", line_no);
}
}
+ else {
+ /* for debug */
+ struct iseq_insn_info_entry *entry = get_insn_info(iseqdat, pos);
+ long slen = RSTRING_LEN(str);
+ slen = (slen > 60) ? 0 : (60 - slen);
+ str = rb_str_catf(str, "%*s(line: %d, sp: %d)",
+ (int)slen, "", entry->line_no, entry->sp);
+ }
if (ret) {
rb_str_cat2(str, "\n");
@@ -1336,24 +915,6 @@ catch_type(int type)
}
}
-/*
- * call-seq:
- * iseq.disasm -> str
- * iseq.disassemble -> str
- *
- * Returns the instruction sequence as a +String+ in human readable form.
- *
- * puts RubyVM::InstructionSequence.compile('1 + 2').disasm
- *
- * Produces:
- *
- * == disasm: <RubyVM::InstructionSequence:<compiled>@<compiled>>==========
- * 0000 trace 1 ( 1)
- * 0002 putobject 1
- * 0004 putobject 2
- * 0006 opt_plus <ic:1>
- * 0008 leave
- */
VALUE
rb_iseq_disasm(VALUE self)
{
@@ -1414,8 +975,8 @@ rb_iseq_disasm(VALUE self)
iseqdat->arg_simple);
for (i = 0; i < iseqdat->local_table_size; i++) {
- long width;
- VALUE name = id_to_name(tbl[i], 0);
+ const char *name = rb_id2name(tbl[i]);
+ char info[0x100];
char argi[0x100] = "";
char opti[0x100] = "";
@@ -1436,14 +997,10 @@ rb_iseq_disasm(VALUE self)
i < iseqdat->arg_post_start + iseqdat->arg_post_len) ? "Post" : "",
iseqdat->arg_block == i ? "Block" : "");
- rb_str_catf(str, "[%2d] ", iseqdat->local_size - i);
- width = RSTRING_LEN(str) + 11;
- if (name)
- rb_str_append(str, name);
- else
- rb_str_cat2(str, "?");
- if (*argi) rb_str_catf(str, "<%s>", argi);
- if ((width -= RSTRING_LEN(str)) > 0) rb_str_catf(str, "%*s", (int)width, "");
+ snprintf(info, sizeof(info), "%s%s%s%s", name ? name : "?",
+ *argi ? "<" : "", argi, *argi ? ">" : "");
+
+ rb_str_catf(str, "[%2d] %-11s", iseqdat->local_size - i, info);
}
rb_str_cat2(str, "\n");
}
@@ -1461,43 +1018,8 @@ rb_iseq_disasm(VALUE self)
return str;
}
-/*
- * Returns the instruction sequence containing the given proc or method.
- *
- * For example, using irb:
- *
- * # a proc
- * > p = proc { num = 1 + 2 }
- * > RubyVM::InstructionSequence.of(p)
- * > #=> <RubyVM::InstructionSequence:block in irb_binding@(irb)>
- *
- * # for a method
- * > def foo(bar); puts bar; end
- * > RubyVM::InstructionSequence.of(method(:foo))
- * > #=> <RubyVM::InstructionSequence:foo@(irb)>
- *
- * Using ::compile_file:
- *
- * # /tmp/iseq_of.rb
- * def hello
- * puts "hello, world"
- * end
- *
- * $a_global_proc = proc { str = 'a' + 'b' }
- *
- * # in irb
- * > require '/tmp/iseq_of.rb'
- *
- * # first the method hello
- * > RubyVM::InstructionSequence.of(method(:hello))
- * > #=> #<RubyVM::InstructionSequence:0x007fb73d7cb1d0>
- *
- * # then the global proc
- * > RubyVM::InstructionSequence.of($a_global_proc)
- * > #=> #<RubyVM::InstructionSequence:0x007fb73d7caf78>
- */
static VALUE
-iseq_s_of(VALUE klass, VALUE body)
+iseq_s_disasm(VALUE klass, VALUE body)
{
VALUE ret = Qnil;
rb_iseq_t *iseq;
@@ -1509,73 +1031,14 @@ iseq_s_of(VALUE klass, VALUE body)
GetProcPtr(body, proc);
iseq = proc->block.iseq;
if (RUBY_VM_NORMAL_ISEQ_P(iseq)) {
- ret = iseq->self;
+ ret = rb_iseq_disasm(iseq->self);
}
}
else if ((iseq = rb_method_get_iseq(body)) != 0) {
- ret = iseq->self;
+ ret = rb_iseq_disasm(iseq->self);
}
- return ret;
-}
-/*
- * call-seq:
- * InstructionSequence.disasm(body) -> str
- * InstructionSequence.disassemble(body) -> str
- *
- * Takes +body+, a Method or Proc object, and returns a String with the
- * human readable instructions for +body+.
- *
- * For a Method object:
- *
- * # /tmp/method.rb
- * def hello
- * puts "hello, world"
- * end
- *
- * puts RubyVM::InstructionSequence.disasm(method(:hello))
- *
- * Produces:
- *
- * == disasm: <RubyVM::InstructionSequence:hello@/tmp/method.rb>============
- * 0000 trace 8 ( 1)
- * 0002 trace 1 ( 2)
- * 0004 putself
- * 0005 putstring "hello, world"
- * 0007 send :puts, 1, nil, 8, <ic:0>
- * 0013 trace 16 ( 3)
- * 0015 leave ( 2)
- *
- * For a Proc:
- *
- * # /tmp/proc.rb
- * p = proc { num = 1 + 2 }
- * puts RubyVM::InstructionSequence.disasm(p)
- *
- * Produces:
- *
- * == disasm: <RubyVM::InstructionSequence:block in <main>@/tmp/proc.rb>===
- * == catch table
- * | catch type: redo st: 0000 ed: 0012 sp: 0000 cont: 0000
- * | catch type: next st: 0000 ed: 0012 sp: 0000 cont: 0012
- * |------------------------------------------------------------------------
- * local table (size: 2, argc: 0 [opts: 0, rest: -1, post: 0, block: -1] s1)
- * [ 2] num
- * 0000 trace 1 ( 1)
- * 0002 putobject 1
- * 0004 putobject 2
- * 0006 opt_plus <ic:1>
- * 0008 dup
- * 0009 setlocal num, 0
- * 0012 leave
- *
- */
-
-static VALUE
-iseq_s_disasm(VALUE klass, VALUE body)
-{
- VALUE iseqval = iseq_s_of(klass, body);
- return NIL_P(iseqval) ? Qnil : rb_iseq_disasm(iseqval);
+ return ret;
}
const char *
@@ -1611,7 +1074,7 @@ static VALUE
exception_type2symbol(VALUE type)
{
ID id;
- switch (type) {
+ switch(type) {
case CATCH_TYPE_RESCUE: CONST_ID(id, "rescue"); break;
case CATCH_TYPE_ENSURE: CONST_ID(id, "ensure"); break;
case CATCH_TYPE_RETRY: CONST_ID(id, "retry"); break;
@@ -1635,10 +1098,8 @@ cdhash_each(VALUE key, VALUE value, VALUE ary)
static VALUE
iseq_data_to_ary(rb_iseq_t *iseq)
{
- long i;
- size_t ti;
- unsigned int pos;
- unsigned int line = 0;
+ long i, pos;
+ int line = 0;
VALUE *seq;
VALUE val = rb_ary_new();
@@ -1680,7 +1141,7 @@ iseq_data_to_ary(rb_iseq_t *iseq)
}
/* type */
- switch (iseq->type) {
+ switch(iseq->type) {
case ISEQ_TYPE_TOP: type = sym_top; break;
case ISEQ_TYPE_METHOD: type = sym_method; break;
case ISEQ_TYPE_BLOCK: type = sym_block; break;
@@ -1755,6 +1216,7 @@ iseq_data_to_ary(rb_iseq_t *iseq)
break;
}
case TS_LINDEX:
+ case TS_DINDEX:
case TS_NUM:
rb_ary_push(ary, INT2FIX(*seq));
break;
@@ -1784,17 +1246,6 @@ iseq_data_to_ary(rb_iseq_t *iseq)
rb_ary_push(ary, INT2FIX(ic - iseq->ic_entries));
}
break;
- case TS_CALLINFO:
- {
- rb_call_info_t *ci = (rb_call_info_t *)*seq;
- VALUE e = rb_hash_new();
- rb_hash_aset(e, ID2SYM(rb_intern("mid")), ci->mid ? ID2SYM(ci->mid) : Qnil);
- rb_hash_aset(e, ID2SYM(rb_intern("flag")), ULONG2NUM(ci->flag));
- rb_hash_aset(e, ID2SYM(rb_intern("orig_argc")), INT2FIX(ci->orig_argc));
- rb_hash_aset(e, ID2SYM(rb_intern("blockptr")), ci->blockiseq ? iseq_data_to_ary(ci->blockiseq) : Qnil);
- rb_ary_push(ary, e);
- }
- break;
case TS_ID:
rb_ary_push(ary, ID2SYM(*seq));
break;
@@ -1847,7 +1298,6 @@ iseq_data_to_ary(rb_iseq_t *iseq)
/* make body with labels and insert line number */
body = rb_ary_new();
- ti = 0;
for (i=0, pos=0; i<RARRAY_LEN(nbody); i++) {
VALUE ary = RARRAY_PTR(nbody)[i];
@@ -1857,10 +1307,9 @@ iseq_data_to_ary(rb_iseq_t *iseq)
rb_ary_push(body, (VALUE)label);
}
- if (ti < iseq->line_info_size && iseq->line_info_table[ti].position == pos) {
- line = iseq->line_info_table[ti].line_no;
+ if (iseq->insn_info_table[i].line_no != line) {
+ line = iseq->insn_info_table[i].line_no;
rb_ary_push(body, INT2FIX(line));
- ti++;
}
rb_ary_push(body, ary);
@@ -1873,10 +1322,9 @@ iseq_data_to_ary(rb_iseq_t *iseq)
rb_hash_aset(misc, ID2SYM(rb_intern("local_size")), INT2FIX(iseq->local_size));
rb_hash_aset(misc, ID2SYM(rb_intern("stack_max")), INT2FIX(iseq->stack_max));
- /* TODO: compatibility issue */
/*
* [:magic, :major_version, :minor_version, :format_type, :misc,
- * :name, :path, :absolute_path, :start_lineno, :type, :locals, :args,
+ * :name, :filename, :filepath, :line_no, :type, :locals, :args,
* :catch_table, :bytecode]
*/
rb_ary_push(val, rb_str_new2("YARVInstructionSequence/SimpleDataFormat"));
@@ -1884,10 +1332,10 @@ iseq_data_to_ary(rb_iseq_t *iseq)
rb_ary_push(val, INT2FIX(ISEQ_MINOR_VERSION)); /* minor */
rb_ary_push(val, INT2FIX(1));
rb_ary_push(val, misc);
- rb_ary_push(val, iseq->location.label);
- rb_ary_push(val, iseq->location.path);
- rb_ary_push(val, iseq->location.absolute_path);
- rb_ary_push(val, iseq->location.first_lineno);
+ rb_ary_push(val, iseq->name);
+ rb_ary_push(val, iseq->filename);
+ rb_ary_push(val, iseq->filepath);
+ rb_ary_push(val, iseq->line_no);
rb_ary_push(val, type);
rb_ary_push(val, locals);
rb_ary_push(val, args);
@@ -1914,9 +1362,7 @@ rb_iseq_clone(VALUE iseqval, VALUE newcbase)
iseq1->local_iseq = iseq1;
}
if (newcbase) {
- iseq1->cref_stack = NEW_CREF(newcbase);
- iseq1->cref_stack->nd_refinements = iseq0->cref_stack->nd_refinements;
- iseq1->cref_stack->nd_visi = iseq0->cref_stack->nd_visi;
+ iseq1->cref_stack = NEW_BLOCK(newcbase);
if (iseq0->cref_stack->nd_next) {
iseq1->cref_stack->nd_next = iseq0->cref_stack->nd_next;
}
@@ -1929,14 +1375,14 @@ rb_iseq_clone(VALUE iseqval, VALUE newcbase)
VALUE
rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc)
{
- int i, r;
+ int i, r, s;
VALUE a, args = rb_ary_new2(iseq->arg_size);
- ID req, opt, rest, block, key, keyrest;
+ ID req, opt, rest, block;
#define PARAM_TYPE(type) rb_ary_push(a = rb_ary_new2(2), ID2SYM(type))
#define PARAM_ID(i) iseq->local_table[(i)]
#define PARAM(i, type) ( \
PARAM_TYPE(type), \
- rb_id2str(PARAM_ID(i)) ? \
+ rb_id2name(PARAM_ID(i)) ? \
rb_ary_push(a, ID2SYM(PARAM_ID(i))) : \
a)
@@ -1945,7 +1391,7 @@ rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc)
if (is_proc) {
for (i = 0; i < iseq->argc; i++) {
PARAM_TYPE(opt);
- rb_ary_push(a, rb_id2str(PARAM_ID(i)) ? ID2SYM(PARAM_ID(i)) : Qnil);
+ rb_ary_push(a, rb_id2name(PARAM_ID(i)) ? ID2SYM(PARAM_ID(i)) : Qnil);
rb_ary_push(args, a);
}
}
@@ -1954,10 +1400,13 @@ rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc)
rb_ary_push(args, PARAM(i, req));
}
}
- r = iseq->argc + iseq->arg_opts - 1;
- for (; i < r; i++) {
+ r = iseq->arg_rest != -1 ? iseq->arg_rest :
+ iseq->arg_post_len > 0 ? iseq->arg_post_start :
+ iseq->arg_block != -1 ? iseq->arg_block :
+ iseq->arg_size;
+ for (s = i; i < r; i++) {
PARAM_TYPE(opt);
- if (rb_id2str(PARAM_ID(i))) {
+ if (rb_id2name(PARAM_ID(i))) {
rb_ary_push(a, ID2SYM(PARAM_ID(i)));
}
rb_ary_push(args, a);
@@ -1970,7 +1419,7 @@ rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc)
if (is_proc) {
for (i = iseq->arg_post_start; i < r; i++) {
PARAM_TYPE(opt);
- rb_ary_push(a, rb_id2str(PARAM_ID(i)) ? ID2SYM(PARAM_ID(i)) : Qnil);
+ rb_ary_push(a, rb_id2name(PARAM_ID(i)) ? ID2SYM(PARAM_ID(i)) : Qnil);
rb_ary_push(args, a);
}
}
@@ -1979,20 +1428,6 @@ rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc)
rb_ary_push(args, PARAM(i, req));
}
}
- if (iseq->arg_keyword != -1) {
- CONST_ID(key, "key");
- for (i = 0; i < iseq->arg_keywords; i++) {
- PARAM_TYPE(key);
- if (rb_id2str(iseq->arg_keyword_table[i])) {
- rb_ary_push(a, ID2SYM(iseq->arg_keyword_table[i]));
- }
- rb_ary_push(args, a);
- }
- if (rb_id2str(iseq->local_table[iseq->arg_keyword])) {
- CONST_ID(keyrest, "keyrest");
- rb_ary_push(args, PARAM(iseq->arg_keyword, keyrest));
- }
- }
if (iseq->arg_block != -1) {
CONST_ID(block, "block");
rb_ary_push(args, PARAM(iseq->arg_block, block));
@@ -2000,58 +1435,19 @@ rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc)
return args;
}
-VALUE
-rb_iseq_defined_string(enum defined_type type)
-{
- static const char expr_names[][18] = {
- "nil",
- "instance-variable",
- "local-variable",
- "global-variable",
- "class variable",
- "constant",
- "method",
- "yield",
- "super",
- "self",
- "true",
- "false",
- "assignment",
- "expression",
- };
- const char *estr;
- VALUE *defs, str;
-
- if ((unsigned)(type - 1) >= (unsigned)numberof(expr_names)) return 0;
- estr = expr_names[type - 1];
- if (!estr[0]) return 0;
- defs = GET_VM()->defined_strings;
- if (!defs) {
- defs = ruby_xcalloc(numberof(expr_names), sizeof(VALUE));
- GET_VM()->defined_strings = defs;
- }
- str = defs[type-1];
- if (!str) {
- str = rb_str_new_cstr(estr);;
- OBJ_FREEZE(str);
- defs[type-1] = str;
- }
- return str;
-}
-
/* ruby2cext */
VALUE
rb_iseq_build_for_ruby2cext(
const rb_iseq_t *iseq_template,
const rb_insn_func_t *func,
- const struct iseq_line_info_entry *line_info_table,
+ const struct iseq_insn_info_entry *insn_info_table,
const char **local_table,
const VALUE *arg_opt_table,
const struct iseq_catch_table_entry *catch_table,
const char *name,
- const char *path,
- const unsigned short first_lineno)
+ const char *filename,
+ const unsigned short line_no)
{
unsigned long i;
VALUE iseqval = iseq_alloc(rb_cISeq);
@@ -2060,10 +1456,11 @@ rb_iseq_build_for_ruby2cext(
/* copy iseq */
*iseq = *iseq_template;
- iseq->location.label = rb_str_new2(name);
- iseq->location.path = rb_str_new2(path);
- iseq->location.first_lineno = first_lineno;
- iseq->mark_ary = 0;
+ iseq->name = rb_str_new2(name);
+ iseq->filename = rb_str_new2(filename);
+ iseq->line_no = line_no;
+ iseq->mark_ary = rb_ary_tmp_new(3);
+ OBJ_UNTRUST(iseq->mark_ary);
iseq->self = iseqval;
iseq->iseq = ALLOC_N(VALUE, iseq->iseq_size);
@@ -2082,8 +1479,8 @@ rb_iseq_build_for_ruby2cext(
} \
} while (0)
- ALLOC_AND_COPY(iseq->line_info_table, line_info_table,
- struct iseq_line_info_entry, iseq->line_info_size);
+ ALLOC_AND_COPY(iseq->insn_info_table, insn_info_table,
+ struct iseq_insn_info_entry, iseq->insn_info_size);
ALLOC_AND_COPY(iseq->catch_table, catch_table,
struct iseq_catch_table_entry, iseq->catch_table_size);
@@ -2096,148 +1493,6 @@ rb_iseq_build_for_ruby2cext(
return iseqval;
}
-/* Experimental tracing support: trace(line) -> trace(specified_line)
- * MRI Specific.
- */
-
-int
-rb_iseq_line_trace_each(VALUE iseqval, int (*func)(int line, rb_event_flag_t *events_ptr, void *d), void *data)
-{
- int trace_num = 0;
- size_t pos, insn;
- rb_iseq_t *iseq;
- int cont = 1;
- GetISeqPtr(iseqval, iseq);
-
- for (pos = 0; cont && pos < iseq->iseq_size; pos += insn_len(insn)) {
- insn = iseq->iseq[pos];
-
- if (insn == BIN(trace)) {
- rb_event_flag_t current_events = (VALUE)iseq->iseq[pos+1];
-
- if (current_events & RUBY_EVENT_LINE) {
- rb_event_flag_t events = current_events & RUBY_EVENT_SPECIFIED_LINE;
- trace_num++;
-
- if (func) {
- int line = find_line_no(iseq, pos);
- /* printf("line: %d\n", line); */
- cont = (*func)(line, &events, data);
- if (current_events != events) {
- iseq->iseq[pos+1] = iseq->iseq_encoded[pos+1] =
- (VALUE)(current_events | (events & RUBY_EVENT_SPECIFIED_LINE));
- }
- }
- }
- }
- }
- return trace_num;
-}
-
-static int
-collect_trace(int line, rb_event_flag_t *events_ptr, void *ptr)
-{
- VALUE result = (VALUE)ptr;
- rb_ary_push(result, INT2NUM(line));
- return 1;
-}
-
-/*
- * <b>Experimental MRI specific feature, only available as C level api.</b>
- *
- * Returns all +specified_line+ events.
- */
-VALUE
-rb_iseq_line_trace_all(VALUE iseqval)
-{
- VALUE result = rb_ary_new();
- rb_iseq_line_trace_each(iseqval, collect_trace, (void *)result);
- return result;
-}
-
-struct set_specifc_data {
- int pos;
- int set;
- int prev; /* 1: set, 2: unset, 0: not found */
-};
-
-static int
-line_trace_specify(int line, rb_event_flag_t *events_ptr, void *ptr)
-{
- struct set_specifc_data *data = (struct set_specifc_data *)ptr;
-
- if (data->pos == 0) {
- data->prev = *events_ptr & RUBY_EVENT_SPECIFIED_LINE ? 1 : 2;
- if (data->set) {
- *events_ptr = *events_ptr | RUBY_EVENT_SPECIFIED_LINE;
- }
- else {
- *events_ptr = *events_ptr & ~RUBY_EVENT_SPECIFIED_LINE;
- }
- return 0; /* found */
- }
- else {
- data->pos--;
- return 1;
- }
-}
-
-/*
- * <b>Experimental MRI specific feature, only available as C level api.</b>
- *
- * Set a +specified_line+ event at the given line position, if the +set+
- * parameter is +true+.
- *
- * This method is useful for building a debugger breakpoint at a specific line.
- *
- * A TypeError is raised if +set+ is not boolean.
- *
- * If +pos+ is a negative integer a TypeError exception is raised.
- */
-VALUE
-rb_iseq_line_trace_specify(VALUE iseqval, VALUE pos, VALUE set)
-{
- struct set_specifc_data data;
-
- data.prev = 0;
- data.pos = NUM2INT(pos);
- if (data.pos < 0) rb_raise(rb_eTypeError, "`pos' is negative");
-
- switch (set) {
- case Qtrue: data.set = 1; break;
- case Qfalse: data.set = 0; break;
- default:
- rb_raise(rb_eTypeError, "`set' should be true/false");
- }
-
- rb_iseq_line_trace_each(iseqval, line_trace_specify, (void *)&data);
-
- if (data.prev == 0) {
- rb_raise(rb_eTypeError, "`pos' is out of range.");
- }
- return data.prev == 1 ? Qtrue : Qfalse;
-}
-
-/*
- * Document-class: RubyVM::InstructionSequence
- *
- * The InstructionSequence class represents a compiled sequence of
- * instructions for the Ruby Virtual Machine.
- *
- * With it, you can get a handle to the instructions that make up a method or
- * a proc, compile strings of Ruby code down to VM instructions, and
- * disassemble instruction sequences to strings for easy inspection. It is
- * mostly useful if you want to learn how the Ruby VM works, but it also lets
- * you control various settings for the Ruby iseq compiler.
- *
- * You can find the source for the VM instructions in +insns.def+ in the Ruby
- * source.
- *
- * The instruction sequence results will almost certainly change as Ruby
- * changes, so example output in this documentation may be different from what
- * you see.
- */
-
void
Init_ISeq(void)
{
@@ -2250,26 +1505,9 @@ Init_ISeq(void)
rb_define_method(rb_cISeq, "to_a", iseq_to_a, 0);
rb_define_method(rb_cISeq, "eval", iseq_eval, 0);
- /* location APIs */
- rb_define_method(rb_cISeq, "path", iseq_path, 0);
- rb_define_method(rb_cISeq, "absolute_path", iseq_absolute_path, 0);
- rb_define_method(rb_cISeq, "label", iseq_label, 0);
- rb_define_method(rb_cISeq, "base_label", iseq_base_label, 0);
- rb_define_method(rb_cISeq, "first_lineno", iseq_first_lineno, 0);
-
-#if 0
- /* Now, it is experimental. No discussions, no tests. */
- /* They can be used from C level. Please give us feedback. */
- rb_define_method(rb_cISeq, "line_trace_all", rb_iseq_line_trace_all, 0);
- rb_define_method(rb_cISeq, "line_trace_specify", rb_iseq_line_trace_specify, 2);
-#else
- (void)rb_iseq_line_trace_all;
- (void)rb_iseq_line_trace_specify;
-#endif
-
#if 0 /* TBD */
- rb_define_private_method(rb_cISeq, "marshal_dump", iseq_marshal_dump, 0);
- rb_define_private_method(rb_cISeq, "marshal_load", iseq_marshal_load, 1);
+ rb_define_method(rb_cISeq, "marshal_dump", iseq_marshal_dump, 0);
+ rb_define_method(rb_cISeq, "marshal_load", iseq_marshal_load, 1);
#endif
/* disable this feature because there is no verifier. */
@@ -2283,5 +1521,5 @@ Init_ISeq(void)
rb_define_singleton_method(rb_cISeq, "compile_option=", iseq_s_compile_option_set, 1);
rb_define_singleton_method(rb_cISeq, "disasm", iseq_s_disasm, 1);
rb_define_singleton_method(rb_cISeq, "disassemble", iseq_s_disasm, 1);
- rb_define_singleton_method(rb_cISeq, "of", iseq_s_of, 1);
}
+
diff --git a/iseq.h b/iseq.h
index 4de08169d8..beeacbb236 100644
--- a/iseq.h
+++ b/iseq.h
@@ -23,15 +23,9 @@ VALUE rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE locals, VALUE args,
VALUE exception, VALUE body);
/* iseq.c */
-void rb_iseq_add_mark_object(rb_iseq_t *iseq, VALUE obj);
VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt);
VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc);
struct st_table *ruby_insn_make_insn_table(void);
-unsigned int rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos);
-
-int rb_iseq_line_trace_each(VALUE iseqval, int (*func)(int line, rb_event_flag_t *events_ptr, void *d), void *data);
-VALUE rb_iseq_line_trace_all(VALUE iseqval);
-VALUE rb_iseq_line_trace_specify(VALUE iseqval, VALUE pos, VALUE set);
/* proc.c */
rb_iseq_t *rb_method_get_iseq(VALUE body);
@@ -49,19 +43,20 @@ struct rb_compile_option_struct {
int debug_level;
};
-struct iseq_line_info_entry {
- unsigned int position;
- unsigned int line_no;
+struct iseq_insn_info_entry {
+ unsigned short position;
+ unsigned short line_no;
+ unsigned short sp;
};
struct iseq_catch_table_entry {
enum catch_type {
- CATCH_TYPE_RESCUE = INT2FIX(1),
- CATCH_TYPE_ENSURE = INT2FIX(2),
- CATCH_TYPE_RETRY = INT2FIX(3),
- CATCH_TYPE_BREAK = INT2FIX(4),
- CATCH_TYPE_REDO = INT2FIX(5),
- CATCH_TYPE_NEXT = INT2FIX(6)
+ CATCH_TYPE_RESCUE,
+ CATCH_TYPE_ENSURE,
+ CATCH_TYPE_RETRY,
+ CATCH_TYPE_BREAK,
+ CATCH_TYPE_REDO,
+ CATCH_TYPE_NEXT
} type;
VALUE iseq;
unsigned long start;
@@ -99,6 +94,7 @@ struct iseq_compile_data {
struct iseq_compile_data_storage *storage_current;
int last_line;
int last_coverable_line;
+ int flip_cnt;
int label_no;
int node_level;
const rb_compile_option_t *option;
@@ -110,29 +106,18 @@ struct iseq_compile_data {
/* defined? */
enum defined_type {
- DEFINED_NIL = 1,
- DEFINED_IVAR,
- DEFINED_LVAR,
+ DEFINED_IVAR = 1,
+ DEFINED_IVAR2,
DEFINED_GVAR,
DEFINED_CVAR,
DEFINED_CONST,
DEFINED_METHOD,
DEFINED_YIELD,
- DEFINED_ZSUPER,
- DEFINED_SELF,
- DEFINED_TRUE,
- DEFINED_FALSE,
- DEFINED_ASGN,
- DEFINED_EXPR,
- DEFINED_IVAR2,
DEFINED_REF,
+ DEFINED_ZSUPER,
DEFINED_FUNC
};
-VALUE rb_iseq_defined_string(enum defined_type type);
-
-#define DEFAULT_SPECIAL_VAR_COUNT 2
-
#if defined __GNUC__ && __GNUC__ >= 4
#pragma GCC visibility pop
#endif
diff --git a/lib/English.rb b/lib/English.rb
index 32769fb18b..4fd53c5ec6 100644
--- a/lib/English.rb
+++ b/lib/English.rb
@@ -15,37 +15,7 @@
# $OUTPUT_FIELD_SEPARATOR = ' -- '
# "waterbuffalo" =~ /buff/
# print $LOADED_FEATURES, $POSTMATCH, $PID, "\n"
-#
-# Below is a full list of descriptive aliases and their associated global
-# variable:
-#
-# $ERROR_INFO:: $!
-# $ERROR_POSITION:: $@
-# $FS:: $;
-# $FIELD_SEPARATOR:: $;
-# $OFS:: $,
-# $OUTPUT_FIELD_SEPARATOR:: $,
-# $RS:: $/
-# $INPUT_RECORD_SEPARATOR:: $/
-# $ORS:: $\
-# $OUTPUT_RECORD_SEPARATOR:: $\
-# $INPUT_LINE_NUMBER:: $.
-# $NR:: $.
-# $LAST_READ_LINE:: $_
-# $DEFAULT_OUTPUT:: $>
-# $DEFAULT_INPUT:: $<
-# $PID:: $$
-# $PROCESS_ID:: $$
-# $CHILD_STATUS:: $?
-# $LAST_MATCH_INFO:: $~
-# $IGNORECASE:: $=
-# $ARGV:: $*
-# $MATCH:: $&
-# $PREMATCH:: $`
-# $POSTMATCH:: $'
-# $LAST_PAREN_MATCH:: $+
-#
-module English end if false
+
# The exception object passed to +raise+.
alias $ERROR_INFO $!
@@ -149,7 +119,7 @@ alias $CHILD_STATUS $?
# and <tt>$1</tt> to <tt>$9</tt> are all derived from
# <tt>$~</tt>. Assigning to <tt>$~</tt> changes the values of these
# derived variables. This variable is local to the current
-# scope.
+# scope. Thread local.
alias $LAST_MATCH_INFO $~
# If set to any value apart from +nil+ or +false+, all pattern matches
@@ -165,21 +135,21 @@ alias $ARGV $*
# The string matched by the last successful pattern
# match. This variable is local to the current
-# scope. Read only.
+# scope. Read only. Thread local.
alias $MATCH $&
# The string preceding the match in the last
# successful pattern match. This variable is local to
-# the current scope. Read only.
+# the current scope. Read only. Thread local.
alias $PREMATCH $`
# The string following the match in the last
# successful pattern match. This variable is local to
-# the current scope. Read only.
+# the current scope. Read only. Thread local.
alias $POSTMATCH $'
# The contents of the highest-numbered group matched in the last
# successful pattern match. Thus, in <tt>"cat" =~ /(c|a)(t|z)/</tt>,
# <tt>$+</tt> will be set to "t". This variable is local to the
-# current scope. Read only.
+# current scope. Read only. Thread local.
alias $LAST_PAREN_MATCH $+
diff --git a/lib/README b/lib/README
new file mode 100644
index 0000000000..cfe7145307
--- /dev/null
+++ b/lib/README
@@ -0,0 +1,91 @@
+English.rb lets Perl'ish global variables have English names
+README this file
+abbrev.rb abbreviation calculator
+base64.rb Base64 de- and encoder
+benchmark.rb a benchmark utility
+cgi.rb CGI support library
+cgi/session.rb CGI session class
+cmath.rb math support for complex numbers
+complex.rb includes cmath and set complex arithemtic as default (obsolete)
+csv.rb CSV parser/generator
+debug.rb ruby debugger
+delegate.rb delegates messages to other object
+drb.rb distributed Ruby
+e2mmap.rb exception utilities
+erb.rb tiny eRuby library
+fileutils.rb file utilities
+find.rb traverses directory tree
+forwardable.rb explicit delegation library
+gauntlet_rubygems.rb Gem package validator
+getoptlong.rb GNU getoptlong compatible
+gserver.rb general TCP server
+ipaddr.rb defines the IPAddr class
+irb.rb interactive ruby
+logger.rb simple logging utility
+mathn.rb extended math operation (obsolete)
+matrix.rb matrix calculation library
+minitest/unit minimal drop-in replacement for test-unit
+mkmf.rb Makefile maker
+monitor.rb exclusive region monitor for thread
+mutex_m.rb mutex mixin
+net/ftp.rb ftp access
+net/http.rb HTTP access
+net/https.rb HTTPS access
+net/imap.rb IMAP4 access
+net/pop.rb POP3 access
+net/protocol.rb abstract class for net library (DO NOT USE)
+net/smtp.rb SMTP access
+net/telnet.rb telnet library
+observer.rb observer desing pattern library (provides Observable)
+open-uri.rb easy-to-use network interface using URI and Net
+open3.rb opens subprocess connection stdin/stdout/stderr
+optparse.rb command line option analysis
+ostruct.rb python style object
+pathname.rb Object-Oriented Pathname Class
+pp.rb pretty print objects
+prettyprint.rb pretty printing algorithm
+prime.rb prime numbers and factorization
+profile.rb runs ruby profiler
+profiler.rb ruby profiler module
+pstore.rb persistent object strage using marshal
+racc/parser.rb racc (Ruby yACC) runtime
+rake.rb Ruby Make
+rational.rb rational number support (obsolete)
+rdoc source-code documentation tool
+resolv-replace.rb replace Socket DNS by resolve.rb
+resolv.rb DNS resolver in Ruby
+rexml an XML parser for Ruby, in Ruby
+rinda/rinda.rb Linda distributed computing paradigm for drb
+rinda/ring.rb RingServer for tuplespace
+rinda/tuplespace.rb tuplespace for drb
+rss.rb RSS parser/generator
+rubygems Ruby package management system
+scanf.rb scanf for Ruby
+securerandom.rb Secure random number generator interface
+set.rb defines the Set class
+shell.rb runs commands and does pipeline operations like shell
+shellwords.rb split into words like shell
+singleton.rb singleton design pattern library
+sync.rb 2 phase lock
+tempfile.rb temporary file with automatic removal
+test/unit Ruby Unit Testing Framework
+thread.rb thread support
+thwait.rb thread syncronization class
+time.rb RFC2822, RFC2616, ISO8601 style time formatting/parsing
+timeout.rb provides timeout
+tmpdir.rb retrieve temporary directory path
+tracer.rb execution tracer
+tsort.rb topological sorting
+ubygems.rb command line shortcut for RubyGems
+un.rb Utilities to replace common UNIX commands in Makefiles etc
+uri.rb URI support
+uri/ftp.rb ftp scheme support
+uri/http.rb http scheme support
+uri/https.rb https scheme support
+uri/ldap.rb ldap scheme support
+uri/ldaps.rb ldaps scheme support
+uri/mailto.rb mailto scheme support
+weakref.rb weak reference class
+webrick.rb WEB server toolkit
+xmlrpc XML-RPC implementation
+yaml.rb YAML implementation
diff --git a/lib/abbrev.rb b/lib/abbrev.rb
index 841f6d980e..aa7e33a65d 100755..100644
--- a/lib/abbrev.rb
+++ b/lib/abbrev.rb
@@ -10,72 +10,48 @@
# $Id$
#++
-##
-# Calculates the set of unique abbreviations for a given set of strings.
+# Calculate the set of unique abbreviations for a given set of strings.
#
# require 'abbrev'
# require 'pp'
#
-# pp Abbrev.abbrev(['ruby', 'rules'])
+# pp Abbrev::abbrev(['ruby', 'rules']).sort
#
-# Generates:
+# <i>Generates:</i>
#
-# { "rub" => "ruby",
-# "ruby" => "ruby",
-# "rul" => "rules",
-# "rule" => "rules",
-# "rules" => "rules" }
+# [["rub", "ruby"],
+# ["ruby", "ruby"],
+# ["rul", "rules"],
+# ["rule", "rules"],
+# ["rules", "rules"]]
#
-# It also provides an array core extension, Array#abbrev.
-#
-# pp %w{summer winter}.abbrev
-# #=> {"summe"=>"summer",
-# "summ"=>"summer",
-# "sum"=>"summer",
-# "su"=>"summer",
-# "s"=>"summer",
-# "winte"=>"winter",
-# "wint"=>"winter",
-# "win"=>"winter",
-# "wi"=>"winter",
-# "w"=>"winter",
-# "summer"=>"summer",
-# "winter"=>"winter"}
+# Also adds an +abbrev+ method to class +Array+.
module Abbrev
# Given a set of strings, calculate the set of unambiguous
# abbreviations for those strings, and return a hash where the keys
# are all the possible abbreviations and the values are the full
- # strings.
- #
- # Thus, given +words+ is "car" and "cone", the keys pointing to "car" would
- # be "ca" and "car", while those pointing to "cone" would be "co", "con", and
- # "cone".
- #
- # require 'abbrev'
- #
- # Abbrev.abbrev(['car', 'cone'])
- # #=> {"ca"=>"car", "con"=>"cone", "co"=>"cone", "car"=>"car", "cone"=>"cone"}
+ # strings. Thus, given input of "car" and "cone", the keys pointing
+ # to "car" would be "ca" and "car", while those pointing to "cone"
+ # would be "co", "con", and "cone".
#
# The optional +pattern+ parameter is a pattern or a string. Only
- # input strings that match the pattern or start with the string
- # are included in the output hash.
- #
- # Abbrev.abbrev(%w{car box cone}, /b/)
- # #=> {"bo"=>"box", "b"=>"box", "box"=>"box"}
+ # those input strings matching the pattern, or begging the string,
+ # are considered for inclusion in the output hash
+
def abbrev(words, pattern = nil)
table = {}
seen = Hash.new(0)
if pattern.is_a?(String)
- pattern = /\A#{Regexp.quote(pattern)}/ # regard as a prefix
+ pattern = /^#{Regexp.quote(pattern)}/ # regard as a prefix
end
words.each do |word|
- next if word.empty?
- word.size.downto(1) { |len|
- abbrev = word[0...len]
+ next if (abbrev = word).empty?
+ while (len = abbrev.rindex(/[\w\W]\z/)) > 0
+ abbrev = word[0,len]
next if pattern && pattern !~ abbrev
@@ -87,7 +63,7 @@ module Abbrev
else
break
end
- }
+ end
end
words.each do |word|
@@ -104,22 +80,12 @@ end
class Array
# Calculates the set of unambiguous abbreviations for the strings in
- # +self+.
- #
- # require 'abbrev'
- # %w{ car cone }.abbrev
- # #=> {"ca" => "car", "con"=>"cone", "co" => "cone",
- # "car"=>"car", "cone" => "cone"}
- #
- # The optional +pattern+ parameter is a pattern or a string. Only
- # input strings that match the pattern or start with the string
- # are included in the output hash.
- #
- # %w{ fast boat day }.abbrev(/^.a/)
- # #=> {"fas"=>"fast", "fa"=>"fast", "da"=>"day",
- # "fast"=>"fast", "day"=>"day"}
+ # +self+. If passed a pattern or a string, only the strings matching
+ # the pattern or starting with the string are considered.
#
- # See also Abbrev.abbrev
+ # %w{ car cone }.abbrev #=> { "ca" => "car", "car" => "car",
+ # "co" => "cone", "con" => cone",
+ # "cone" => "cone" }
def abbrev(pattern = nil)
Abbrev::abbrev(self, pattern)
end
diff --git a/lib/benchmark.rb b/lib/benchmark.rb
index f52ba7df34..6a00da1359 100644
--- a/lib/benchmark.rb
+++ b/lib/benchmark.rb
@@ -19,7 +19,7 @@
# used to execute Ruby code.
#
# * Measure the time to construct the string given by the expression
-# <code>"a"*1_000_000</code>:
+# <tt>"a"*1_000_000</tt>:
#
# require 'benchmark'
#
@@ -122,18 +122,18 @@
module Benchmark
- BENCHMARK_VERSION = "2002-04-25" # :nodoc:
+ BENCHMARK_VERSION = "2002-04-25" #:nodoc"
- # Invokes the block with a Benchmark::Report object, which
+ # Invokes the block with a <tt>Benchmark::Report</tt> object, which
# may be used to collect and report on the results of individual
- # benchmark tests. Reserves +label_width+ leading spaces for
- # labels on each line. Prints +caption+ at the top of the
- # report, and uses +format+ to format each line.
+ # benchmark tests. Reserves <i>label_width</i> leading spaces for
+ # labels on each line. Prints _caption_ at the top of the
+ # report, and uses _format_ to format each line.
# Returns an array of Benchmark::Tms objects.
#
# If the block returns an array of
- # Benchmark::Tms objects, these will be used to format
- # additional lines of output. If +label+ parameters are
+ # <tt>Benchmark::Tms</tt> objects, these will be used to format
+ # additional lines of output. If _label_ parameters are
# given, these are used to label these extra lines.
#
# _Note_: Other methods provide a simpler interface to this one, and are
@@ -153,7 +153,7 @@ module Benchmark
# [tf+tt+tu, (tf+tt+tu)/3]
# end
#
- # Generates:
+ # <i>Generates:</i>
#
# user system total real
# for: 1.016667 0.016667 1.033333 ( 0.485749)
@@ -169,7 +169,7 @@ module Benchmark
label_width ||= 0
label_width += 1
format ||= FORMAT
- print ' '*label_width + caption unless caption.empty?
+ print ' '*label_width + caption
report = Report.new(label_width, format)
results = yield(report)
Array === results and results.grep(Tms).each {|t|
@@ -181,9 +181,8 @@ module Benchmark
end
- # A simple interface to the #benchmark method, #bm is generates sequential
- # reports with labels. The parameters have the same meaning as for
- # #benchmark.
+ # A simple interface to the #benchmark method, #bm is generates sequential reports
+ # with labels. The parameters have the same meaning as for #benchmark.
#
# require 'benchmark'
#
@@ -194,7 +193,7 @@ module Benchmark
# x.report("upto:") { 1.upto(n) do ; a = "1"; end }
# end
#
- # Generates:
+ # <i>Generates:</i>
#
# user system total real
# for: 1.050000 0.000000 1.050000 ( 0.503462)
@@ -212,7 +211,7 @@ module Benchmark
# that run later. #bmbm attempts to minimize this effect by running
# the tests twice, the first time as a rehearsal in order to get the
# runtime environment stable, the second time for
- # real. GC.start is executed before the start of each of
+ # real. <tt>GC.start</tt> is executed before the start of each of
# the real timings; the cost of this is not included in the
# timings. In reality, though, there's only so much that #bmbm can
# do, and the results are not guaranteed to be isolated from garbage
@@ -230,7 +229,7 @@ module Benchmark
# x.report("sort") { array.dup.sort }
# end
#
- # Generates:
+ # <i>Generates:</i>
#
# Rehearsal -----------------------------------------
# sort! 11.928000 0.010000 11.938000 ( 12.756000)
@@ -244,7 +243,7 @@ module Benchmark
# #bmbm yields a Benchmark::Job object and returns an array of
# Benchmark::Tms objects.
#
- def bmbm(width = 0) # :yield: job
+ def bmbm(width = 0, &blk) # :yield: job
job = Job.new(width)
yield(job)
width = job.width + 1
@@ -284,7 +283,7 @@ module Benchmark
t1.stime - t0.stime,
t1.cutime - t0.cutime,
t1.cstime - t0.cstime,
- r1 - r0,
+ r1.to_f - r0.to_f,
label)
end
@@ -308,8 +307,8 @@ module Benchmark
# Returns an initialized Job instance.
# Usually, one doesn't call this method directly, as new
# Job objects are created by the #bmbm method.
- # +width+ is a initial value for the label offset used in formatting;
- # the #bmbm method passes its +width+ argument to this constructor.
+ # _width_ is a initial value for the label offset used in formatting;
+ # the #bmbm method passes its _width_ argument to this constructor.
#
def initialize(width)
@width = width
@@ -346,7 +345,7 @@ module Benchmark
# Returns an initialized Report instance.
# Usually, one doesn't call this method directly, as new
# Report objects are created by the #benchmark and #bm methods.
- # +width+ and +format+ are the label offset and
+ # _width_ and _format_ are the label offset and
# format string used by Tms#format.
#
def initialize(width = 0, format = nil)
@@ -354,8 +353,8 @@ module Benchmark
end
#
- # Prints the +label+ and measured time for the block,
- # formatted by +format+. See Tms#format for the
+ # Prints the _label_ and measured time for the block,
+ # formatted by _format_. See Tms#format for the
# formatting rules.
#
def item(label = "", *format, &blk) # :yield:
@@ -400,7 +399,7 @@ module Benchmark
# Elapsed real time
attr_reader :real
- # Total time, that is +utime+ + +stime+ + +cutime+ + +cstime+
+ # Total time, that is _utime_ + _stime_ + _cutime_ + _cstime_
attr_reader :total
# Label
@@ -408,9 +407,9 @@ module Benchmark
#
# Returns an initialized Tms object which has
- # +utime+ as the user CPU time, +stime+ as the system CPU time,
- # +cutime+ as the children's user CPU time, +cstime+ as the children's
- # system CPU time, +real+ as the elapsed real time and +label+ as the label.
+ # _utime_ as the user CPU time, _stime_ as the system CPU time,
+ # _cutime_ as the children's user CPU time, _cstime_ as the children's
+ # system CPU time, _real_ as the elapsed real time and _label_ as the label.
#
def initialize(utime = 0.0, stime = 0.0, cutime = 0.0, cstime = 0.0, real = 0.0, label = nil)
@utime, @stime, @cutime, @cstime, @real, @label = utime, stime, cutime, cstime, real, label.to_s
@@ -419,7 +418,7 @@ module Benchmark
#
# Returns a new Tms object whose times are the sum of the times for this
- # Tms object, plus the time required to execute the code block (+blk+).
+ # Tms object, plus the time required to execute the code block (_blk_).
#
def add(&blk) # :yield:
self + Benchmark.measure(&blk)
@@ -485,13 +484,13 @@ module Benchmark
#
def format(format = nil, *args)
str = (format || FORMAT).dup
- str.gsub!(/(%[-+.\d]*)n/) { "#{$1}s" % label }
- str.gsub!(/(%[-+.\d]*)u/) { "#{$1}f" % utime }
- str.gsub!(/(%[-+.\d]*)y/) { "#{$1}f" % stime }
- str.gsub!(/(%[-+.\d]*)U/) { "#{$1}f" % cutime }
- str.gsub!(/(%[-+.\d]*)Y/) { "#{$1}f" % cstime }
- str.gsub!(/(%[-+.\d]*)t/) { "#{$1}f" % total }
- str.gsub!(/(%[-+.\d]*)r/) { "(#{$1}f)" % real }
+ str.gsub!(/(%[-+\.\d]*)n/) { "#{$1}s" % label }
+ str.gsub!(/(%[-+\.\d]*)u/) { "#{$1}f" % utime }
+ str.gsub!(/(%[-+\.\d]*)y/) { "#{$1}f" % stime }
+ str.gsub!(/(%[-+\.\d]*)U/) { "#{$1}f" % cutime }
+ str.gsub!(/(%[-+\.\d]*)Y/) { "#{$1}f" % cstime }
+ str.gsub!(/(%[-+\.\d]*)t/) { "#{$1}f" % total }
+ str.gsub!(/(%[-+\.\d]*)r/) { "(#{$1}f)" % real }
format ? str % args : str
end
@@ -513,7 +512,7 @@ module Benchmark
end
protected
-
+
#
# Returns a new Tms object obtained by memberwise operation +op+
# of the individual times for this Tms object with those of the other
@@ -554,7 +553,7 @@ if __FILE__ == $0
n = ARGV[0].to_i.nonzero? || 50000
puts %Q([#{n} times iterations of `a = "1"'])
- benchmark(CAPTION, 7, FORMAT) do |x|
+ benchmark(" " + CAPTION, 7, FORMAT) do |x|
x.report("for:") {for _ in 1..n; _ = "1"; end} # Benchmark.measure
x.report("times:") {n.times do ; _ = "1"; end}
x.report("upto:") {1.upto(n) do ; _ = "1"; end}
diff --git a/lib/cgi.rb b/lib/cgi.rb
index 1c5ccd369f..31730bd60c 100644
--- a/lib/cgi.rb
+++ b/lib/cgi.rb
@@ -122,7 +122,7 @@ raise "Please, use ruby 1.9.0 or later." if RUBY_VERSION < "1.9.0"
#
# The simplest way to send output to the HTTP client is using the #out() method.
# This takes the HTTP headers as a hash parameter, and the body content
-# via a block. The headers can be generated as a string using the #http_header()
+# via a block. The headers can be generated as a string using the #header()
# method. The output stream can be written directly to using the #print()
# method.
#
@@ -234,26 +234,22 @@ raise "Please, use ruby 1.9.0 or later." if RUBY_VERSION < "1.9.0"
# === Print http header and html string to $DEFAULT_OUTPUT ($>)
#
# require "cgi"
-# cgi = CGI.new("html4") # add HTML generation methods
-# cgi.out do
-# cgi.html do
-# cgi.head do
-# cgi.title { "TITLE" }
-# end +
-# cgi.body do
-# cgi.form("ACTION" => "uri") do
-# cgi.p do
-# cgi.textarea("get_text") +
-# cgi.br +
-# cgi.submit
-# end
+# cgi = CGI.new("html3") # add HTML generation methods
+# cgi.out() do
+# cgi.html() do
+# cgi.head{ cgi.title{"TITLE"} } +
+# cgi.body() do
+# cgi.form() do
+# cgi.textarea("get_text") +
+# cgi.br +
+# cgi.submit
# end +
-# cgi.pre do
+# cgi.pre() do
# CGI::escapeHTML(
-# "params: #{cgi.params.inspect}\n" +
-# "cookies: #{cgi.cookies.inspect}\n" +
-# ENV.collect do |key, value|
-# "#{key} --> #{value}\n"
+# "params: " + cgi.params.inspect + "\n" +
+# "cookies: " + cgi.cookies.inspect + "\n" +
+# ENV.collect() do |key, value|
+# key + " --> " + value + "\n"
# end.join("")
# )
# end
@@ -266,7 +262,6 @@ raise "Please, use ruby 1.9.0 or later." if RUBY_VERSION < "1.9.0"
# CGI.new("html4") # html4.01 (Strict)
# CGI.new("html4Tr") # html4.01 Transitional
# CGI.new("html4Fr") # html4.01 Frameset
-# CGI.new("html5") # html5
#
class CGI
diff --git a/lib/cgi/cookie.rb b/lib/cgi/cookie.rb
index a26bd16c32..c2526931d5 100644
--- a/lib/cgi/cookie.rb
+++ b/lib/cgi/cookie.rb
@@ -1,4 +1,3 @@
-require 'cgi/util'
class CGI
@@accept_charset="UTF-8" unless defined?(@@accept_charset)
# Class representing an HTTP cookie.
diff --git a/lib/cgi/core.rb b/lib/cgi/core.rb
index 1ab8e8c7d9..e961b16474 100644
--- a/lib/cgi/core.rb
+++ b/lib/cgi/core.rb
@@ -67,8 +67,8 @@ class CGI
# Create an HTTP header block as a string.
#
# :call-seq:
- # http_header(content_type_string="text/html")
- # http_header(headers_hash)
+ # headers(content_type_string="text/html")
+ # headers(headers_hash)
#
# Includes the empty line that ends the header block.
#
@@ -127,29 +127,29 @@ class CGI
#
# Examples:
#
- # http_header
+ # header
# # Content-Type: text/html
#
- # http_header("text/plain")
+ # header("text/plain")
# # Content-Type: text/plain
#
- # http_header("nph" => true,
- # "status" => "OK", # == "200 OK"
- # # "status" => "200 GOOD",
- # "server" => ENV['SERVER_SOFTWARE'],
- # "connection" => "close",
- # "type" => "text/html",
- # "charset" => "iso-2022-jp",
- # # Content-Type: text/html; charset=iso-2022-jp
- # "length" => 103,
- # "language" => "ja",
- # "expires" => Time.now + 30,
- # "cookie" => [cookie1, cookie2],
- # "my_header1" => "my_value"
- # "my_header2" => "my_value")
+ # header("nph" => true,
+ # "status" => "OK", # == "200 OK"
+ # # "status" => "200 GOOD",
+ # "server" => ENV['SERVER_SOFTWARE'],
+ # "connection" => "close",
+ # "type" => "text/html",
+ # "charset" => "iso-2022-jp",
+ # # Content-Type: text/html; charset=iso-2022-jp
+ # "length" => 103,
+ # "language" => "ja",
+ # "expires" => Time.now + 30,
+ # "cookie" => [cookie1, cookie2],
+ # "my_header1" => "my_value"
+ # "my_header2" => "my_value")
#
# This method does not perform charset conversion.
- def http_header(options='text/html')
+ def header(options='text/html')
if options.is_a?(String)
content_type = options
buf = _header_for_string(content_type)
@@ -170,15 +170,7 @@ class CGI
buf << EOL # empty line of separator
return buf
end
- end # http_header()
-
- # This method is an alias for #http_header, when HTML5 tag maker is inactive.
- #
- # NOTE: use #http_header to create HTTP header blocks, this alias is only
- # provided for backwards compatibility.
- #
- # Using #header with the HTML5 tag maker will create a <header> element.
- alias :header :http_header
+ end # header()
def _header_for_string(content_type) #:nodoc:
buf = ''
@@ -291,7 +283,7 @@ class CGI
# +content_type_string+::
# If a string is passed, it is assumed to be the content type.
# +headers_hash+::
- # This is a Hash of headers, similar to that used by #http_header.
+ # This is a Hash of headers, similar to that used by #header.
# +block+::
# A block is required and should evaluate to the body of the response.
#
@@ -352,7 +344,7 @@ class CGI
options["length"] = content.bytesize.to_s
output = stdoutput
output.binmode if defined? output.binmode
- output.print http_header(options)
+ output.print header(options)
output.print content unless "HEAD" == env_table['REQUEST_METHOD']
end
@@ -375,13 +367,12 @@ class CGI
params = {}
query.split(/[&;]/).each do |pairs|
key, value = pairs.split('=',2).collect{|v| CGI::unescape(v) }
-
- next unless key
-
- params[key] ||= []
- params[key].push(value) if value
+ if key && value
+ params.has_key?(key) ? params[key].push(value) : params[key] = [value]
+ elsif key
+ params[key]=[]
+ end
end
-
params.default=[].freeze
params
end
@@ -461,10 +452,10 @@ class CGI
end
##
- # Parses multipart form elements according to
+ # Parses multipart form elements according to
# http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2
#
- # Returns a hash of multipart form parameters with bodies of type StringIO or
+ # Returns a hash of multipart form parameters with bodies of type StringIO or
# Tempfile depending on whether the multipart form element exceeds 10 KB
#
# params[name => body]
@@ -487,12 +478,10 @@ class CGI
bufsize = 10 * 1024
max_count = MAX_MULTIPART_COUNT
n = 0
- tempfiles = []
while true
(n += 1) < max_count or raise StandardError.new("too many parameters.")
## create body (StringIO or Tempfile)
body = create_body(bufsize < content_length)
- tempfiles << body if defined?(Tempfile) && body.kind_of?(Tempfile)
class << body
if method_defined?(:path)
alias local_path path
@@ -540,17 +529,16 @@ class CGI
/Content-Disposition:.* filename=(?:"(.*?)"|([^;\r\n]*))/i.match(head)
filename = $1 || $2 || ''
filename = CGI.unescape(filename) if unescape_filename?()
- body.instance_variable_set(:@original_filename, filename.taint)
+ body.instance_variable_set('@original_filename', filename.taint)
## content type
/Content-Type: (.*)/i.match(head)
(content_type = $1 || '').chomp!
- body.instance_variable_set(:@content_type, content_type.taint)
+ body.instance_variable_set('@content_type', content_type.taint)
## query parameter name
/Content-Disposition:.* name=(?:"(.*?)"|([^;\r\n]*))/i.match(head)
name = $1 || $2 || ''
if body.original_filename.empty?
value=body.read.dup.force_encoding(@accept_charset)
- body.unlink if defined?(Tempfile) && body.kind_of?(Tempfile)
(params[name] ||= []) << value
unless value.valid_encoding?
if @accept_charset_error_block
@@ -574,15 +562,6 @@ class CGI
raise EOFError, "bad boundary end of body part" unless boundary_end =~ /--/
params.default = []
params
- rescue Exception
- if tempfiles
- tempfiles.each {|t|
- if t.path
- t.unlink
- end
- }
- end
- raise
end # read_multipart
private :read_multipart
def create_body(is_large) #:nodoc:
@@ -791,7 +770,6 @@ class CGI
# "html4":: HTML 4.0
# "html4Tr":: HTML 4.0 Transitional
# "html4Fr":: HTML 4.0 with Framesets
- # "html5":: HTML 5
#
# <tt>block</tt>::
# If provided, the block is called when an invalid encoding is
@@ -809,7 +787,7 @@ class CGI
# cookies and other parameters are parsed automatically from the standard
# CGI locations, which varies according to the REQUEST_METHOD.
def initialize(options = {}, &block) # :yields: name, value
- @accept_charset_error_block = block_given? ? block : nil
+ @accept_charset_error_block=block if block_given?
@options={:accept_charset=>@@accept_charset}
case options
when Hash
@@ -852,11 +830,6 @@ class CGI
extend Html4Fr
element_init()
extend HtmlExtension
- when "html5"
- require 'cgi/html'
- extend Html5
- element_init()
- extend HtmlExtension
end
end
diff --git a/lib/cgi/html.rb b/lib/cgi/html.rb
index ba19e3d603..04e2431735 100644
--- a/lib/cgi/html.rb
+++ b/lib/cgi/html.rb
@@ -63,8 +63,8 @@ class CGI
# cgi.a("http://www.example.com") { "Example" }
# # => "<A HREF=\"http://www.example.com\">Example</A>"
#
- # Modules Html3, Html4, etc., contain more basic HTML-generation methods
- # (+#title+, +#h1+, etc.).
+ # Modules Http3, Http4, etc., contain more basic HTML-generation methods
+ # (:title, :center, etc.).
#
# See class CGI for a detailed example.
#
@@ -334,7 +334,7 @@ class CGI
body = ""
end
if @output_hidden
- body << @output_hidden.collect{|k,v|
+ body += @output_hidden.collect{|k,v|
"<INPUT TYPE=\"HIDDEN\" NAME=\"#{k}\" VALUE=\"#{v}\">"
}.join
end
@@ -420,18 +420,18 @@ class CGI
if attributes.has_key?("DOCTYPE")
if attributes["DOCTYPE"]
- buf << attributes.delete("DOCTYPE")
+ buf += attributes.delete("DOCTYPE")
else
attributes.delete("DOCTYPE")
end
else
- buf << doctype
+ buf += doctype
end
if block_given?
- buf << super(attributes){ yield }
+ buf += super(attributes){ yield }
else
- buf << super(attributes)
+ buf += super(attributes)
end
if pretty
@@ -845,15 +845,14 @@ class CGI
# Initialise the HTML generation methods for this version.
def element_init
extend TagMaker
- return if defined?(html)
methods = ""
# - -
for element in %w[ A TT I B U STRIKE BIG SMALL SUB SUP EM STRONG
- DFN CODE SAMP KBD VAR CITE FONT ADDRESS DIV CENTER MAP
- APPLET PRE XMP LISTING DL OL UL DIR MENU SELECT TABLE TITLE
+ DFN CODE SAMP KBD VAR CITE FONT ADDRESS DIV center MAP
+ APPLET PRE XMP LISTING DL OL UL DIR MENU SELECT table TITLE
STYLE SCRIPT H1 H2 H3 H4 H5 H6 TEXTAREA FORM BLOCKQUOTE
CAPTION ]
- methods << <<-BEGIN + nn_element_def(element) + <<-END
+ methods += <<-BEGIN + nn_element_def(element) + <<-END
def #{element.downcase}(attributes = {})
BEGIN
end
@@ -863,7 +862,7 @@ class CGI
# - O EMPTY
for element in %w[ IMG BASE BASEFONT BR AREA LINK PARAM HR INPUT
ISINDEX META ]
- methods << <<-BEGIN + nOE_element_def(element) + <<-END
+ methods += <<-BEGIN + nOE_element_def(element) + <<-END
def #{element.downcase}(attributes = {})
BEGIN
end
@@ -871,9 +870,9 @@ class CGI
end
# O O or - O
- for element in %w[ HTML HEAD BODY P PLAINTEXT DT DD LI OPTION TR
- TH TD ]
- methods << <<-BEGIN + nO_element_def(element) + <<-END
+ for element in %w[ HTML HEAD BODY P PLAINTEXT DT DD LI OPTION tr
+ th td ]
+ methods += <<-BEGIN + nO_element_def(element) + <<-END
def #{element.downcase}(attributes = {})
BEGIN
end
@@ -896,7 +895,6 @@ class CGI
# Initialise the HTML generation methods for this version.
def element_init
extend TagMaker
- return if defined?(html)
methods = ""
# - -
for element in %w[ TT I B BIG SMALL EM STRONG DFN CODE SAMP KBD
@@ -904,7 +902,7 @@ class CGI
H1 H2 H3 H4 H5 H6 PRE Q INS DEL DL OL UL LABEL SELECT OPTGROUP
FIELDSET LEGEND BUTTON TABLE TITLE STYLE SCRIPT NOSCRIPT
TEXTAREA FORM A BLOCKQUOTE CAPTION ]
- methods << <<-BEGIN + nn_element_def(element) + <<-END
+ methods += <<-BEGIN + nn_element_def(element) + <<-END
def #{element.downcase}(attributes = {})
BEGIN
end
@@ -913,7 +911,7 @@ class CGI
# - O EMPTY
for element in %w[ IMG BASE BR AREA LINK PARAM HR INPUT COL META ]
- methods << <<-BEGIN + nOE_element_def(element) + <<-END
+ methods += <<-BEGIN + nOE_element_def(element) + <<-END
def #{element.downcase}(attributes = {})
BEGIN
end
@@ -922,8 +920,8 @@ class CGI
# O O or - O
for element in %w[ HTML BODY P DT DD LI OPTION THEAD TFOOT TBODY
- COLGROUP TR TH TD HEAD ]
- methods << <<-BEGIN + nO_element_def(element) + <<-END
+ COLGROUP TR TH TD HEAD]
+ methods += <<-BEGIN + nO_element_def(element) + <<-END
def #{element.downcase}(attributes = {})
BEGIN
end
@@ -946,7 +944,6 @@ class CGI
# Initialise the HTML generation methods for this version.
def element_init
extend TagMaker
- return if defined?(html)
methods = ""
# - -
for element in %w[ TT I B U S STRIKE BIG SMALL EM STRONG DFN
@@ -955,7 +952,7 @@ class CGI
INS DEL DL OL UL DIR MENU LABEL SELECT OPTGROUP FIELDSET
LEGEND BUTTON TABLE IFRAME NOFRAMES TITLE STYLE SCRIPT
NOSCRIPT TEXTAREA FORM A BLOCKQUOTE CAPTION ]
- methods << <<-BEGIN + nn_element_def(element) + <<-END
+ methods += <<-BEGIN + nn_element_def(element) + <<-END
def #{element.downcase}(attributes = {})
BEGIN
end
@@ -965,7 +962,7 @@ class CGI
# - O EMPTY
for element in %w[ IMG BASE BASEFONT BR AREA LINK PARAM HR INPUT
COL ISINDEX META ]
- methods << <<-BEGIN + nOE_element_def(element) + <<-END
+ methods += <<-BEGIN + nOE_element_def(element) + <<-END
def #{element.downcase}(attributes = {})
BEGIN
end
@@ -975,7 +972,7 @@ class CGI
# O O or - O
for element in %w[ HTML BODY P DT DD LI OPTION THEAD TFOOT TBODY
COLGROUP TR TH TD HEAD ]
- methods << <<-BEGIN + nO_element_def(element) + <<-END
+ methods += <<-BEGIN + nO_element_def(element) + <<-END
def #{element.downcase}(attributes = {})
BEGIN
end
@@ -997,11 +994,10 @@ class CGI
# Initialise the HTML generation methods for this version.
def element_init
- return if defined?(frameset)
methods = ""
# - -
for element in %w[ FRAMESET ]
- methods << <<-BEGIN + nn_element_def(element) + <<-END
+ methods += <<-BEGIN + nn_element_def(element) + <<-END
def #{element.downcase}(attributes = {})
BEGIN
end
@@ -1010,7 +1006,7 @@ class CGI
# - O EMPTY
for element in %w[ FRAME ]
- methods << <<-BEGIN + nOE_element_def(element) + <<-END
+ methods += <<-BEGIN + nOE_element_def(element) + <<-END
def #{element.downcase}(attributes = {})
BEGIN
end
@@ -1020,58 +1016,6 @@ class CGI
end
end # Html4Fr
+end
- # Mixin module for HTML version 5 generation methods.
- module Html5 # :nodoc:
-
- # The DOCTYPE declaration for this version of HTML
- def doctype
- %|<!DOCTYPE HTML>|
- end
-
- # Initialise the HTML generation methods for this version.
- def element_init
- extend TagMaker
- return if defined?(html)
- methods = ""
- # - -
- for element in %w[ SECTION NAV ARTICLE ASIDE HGROUP HEADER
- FOOTER FIGURE FIGCAPTION S TIME U MARK RUBY BDI IFRAME
- VIDEO AUDIO CANVAS DATALIST OUTPUT PROGRESS METER DETAILS
- SUMMARY MENU DIALOG I B SMALL EM STRONG DFN CODE SAMP KBD
- VAR CITE ABBR SUB SUP SPAN BDO ADDRESS DIV MAP OBJECT
- H1 H2 H3 H4 H5 H6 PRE Q INS DEL DL OL UL LABEL SELECT
- FIELDSET LEGEND BUTTON TABLE TITLE STYLE SCRIPT NOSCRIPT
- TEXTAREA FORM A BLOCKQUOTE CAPTION ]
- methods += <<-BEGIN + nn_element_def(element) + <<-END
- def #{element.downcase}(attributes = {})
- BEGIN
- end
- END
- end
-
- # - O EMPTY
- for element in %w[ IMG BASE BR AREA LINK PARAM HR INPUT COL META
- COMMAND EMBED KEYGEN SOURCE TRACK WBR ]
- methods += <<-BEGIN + nOE_element_def(element) + <<-END
- def #{element.downcase}(attributes = {})
- BEGIN
- end
- END
- end
-
- # O O or - O
- for element in %w[ HTML HEAD BODY P DT DD LI OPTION THEAD TFOOT TBODY
- OPTGROUP COLGROUP RT RP TR TH TD ]
- methods += <<-BEGIN + nO_element_def(element) + <<-END
- def #{element.downcase}(attributes = {})
- BEGIN
- end
- END
- end
- eval(methods)
- end
-
- end # Html5
-end
diff --git a/lib/cgi/session.rb b/lib/cgi/session.rb
index 2bdc94606d..42b5ead81a 100644
--- a/lib/cgi/session.rb
+++ b/lib/cgi/session.rb
@@ -308,7 +308,7 @@ class CGI
@data[key]
end
- # Set the session data for key +key+.
+ # Set the session date for key +key+.
def []=(key, val)
@write_lock ||= true
@data ||= @dbman.restore
diff --git a/lib/cgi/util.rb b/lib/cgi/util.rb
index 0959f0f094..2bb3b0da78 100644
--- a/lib/cgi/util.rb
+++ b/lib/cgi/util.rb
@@ -4,10 +4,9 @@ class CGI
# url_encoded_string = CGI::escape("'Stop!' said Fred")
# # => "%27Stop%21%27+said+Fred"
def CGI::escape(string)
- encoding = string.encoding
- string.dup.force_encoding('ASCII-8BIT').gsub(/([^ a-zA-Z0-9_.-]+)/) do
+ string.gsub(/([^ a-zA-Z0-9_.-]+)/) do
'%' + $1.unpack('H2' * $1.bytesize).join('%').upcase
- end.tr(' ', '+').force_encoding(encoding)
+ end.tr(' ', '+')
end
# URL-decode a string with encoding(optional).
@@ -22,7 +21,6 @@ class CGI
# The set of special characters and their escaped values
TABLE_FOR_ESCAPE_HTML__ = {
- "'" => '&#39;',
'&' => '&amp;',
'"' => '&quot;',
'<' => '&lt;',
@@ -33,7 +31,7 @@ class CGI
# CGI::escapeHTML('Usage: foo "bar" <baz>')
# # => "Usage: foo &quot;bar&quot; &lt;baz&gt;"
def CGI::escapeHTML(string)
- string.gsub(/['&\"<>]/, TABLE_FOR_ESCAPE_HTML__)
+ string.gsub(/[&\"<>]/, TABLE_FOR_ESCAPE_HTML__)
end
# Unescape a string that has been HTML-escaped
@@ -42,9 +40,8 @@ class CGI
def CGI::unescapeHTML(string)
enc = string.encoding
if [Encoding::UTF_16BE, Encoding::UTF_16LE, Encoding::UTF_32BE, Encoding::UTF_32LE].include?(enc)
- return string.gsub(Regexp.new('&(apos|amp|quot|gt|lt|#[0-9]+|#x[0-9A-Fa-f]+);'.encode(enc))) do
+ return string.gsub(Regexp.new('&(amp|quot|gt|lt|#[0-9]+|#x[0-9A-Fa-f]+);'.encode(enc))) do
case $1.encode("US-ASCII")
- when 'apos' then "'".encode(enc)
when 'amp' then '&'.encode(enc)
when 'quot' then '"'.encode(enc)
when 'gt' then '>'.encode(enc)
@@ -55,10 +52,9 @@ class CGI
end
end
asciicompat = Encoding.compatible?(string, "a")
- string.gsub(/&(apos|amp|quot|gt|lt|\#[0-9]+|\#[xX][0-9A-Fa-f]+);/) do
+ string.gsub(/&(amp|quot|gt|lt|\#[0-9]+|\#x[0-9A-Fa-f]+);/) do
match = $1.dup
case match
- when 'apos' then "'"
when 'amp' then '&'
when 'quot' then '"'
when 'gt' then '>'
@@ -91,7 +87,7 @@ class CGI
def CGI::escape_html(str)
escapeHTML(str)
end
-
+
# Synonym for CGI::unescapeHTML(str)
def CGI::unescape_html(str)
unescapeHTML(str)
@@ -145,7 +141,7 @@ class CGI
def CGI::escape_element(str)
escapeElement(str)
end
-
+
# Synonym for CGI::unescapeElement(str)
def CGI::unescape_element(str)
unescapeElement(str)
diff --git a/lib/csv.rb b/lib/csv.rb
index ba690dd3e0..13f86ec318 100644
--- a/lib/csv.rb
+++ b/lib/csv.rb
@@ -274,7 +274,7 @@ class CSV
# field( header, offset )
# field( index )
#
- # This method will return the field value by +header+ or +index+. If a field
+ # This method will fetch the field value by +header+ or +index+. If a field
# is not found, +nil+ is returned.
#
# When provided, +offset+ ensures that a header match occurrs on or later
@@ -293,42 +293,6 @@ class CSV
#
# :call-seq:
- # fetch( header )
- # fetch( header ) { |row| ... }
- # fetch( header, default )
- #
- # This method will fetch the field value by +header+. It has the same
- # behavior as Hash#fetch: if there is a field with the given +header+, its
- # value is returned. Otherwise, if a block is given, it is yielded the
- # +header+ and its result is returned; if a +default+ is given as the
- # second argument, it is returned; otherwise a KeyError is raised.
- #
- def fetch(header, *varargs)
- raise ArgumentError, "Too many arguments" if varargs.length > 1
- pair = @row.assoc(header)
- if pair
- pair.last
- else
- if block_given?
- yield header
- elsif varargs.empty?
- raise KeyError, "key not found: #{header}"
- else
- varargs.first
- end
- end
- end
-
- # Returns +true+ if there is a field with the given +header+.
- def has_key?(header)
- !!@row.assoc(header)
- end
- alias_method :include?, :has_key?
- alias_method :key?, :has_key?
- alias_method :member?, :has_key?
-
- #
- # :call-seq:
# []=( header, value )
# []=( header, offset, value )
# []=( index, value )
@@ -511,8 +475,7 @@ class CSV
# same order as +other+.
#
def ==(other)
- return @row == other.row if other.is_a? CSV::Row
- @row == other
+ @row == other.row
end
#
@@ -1010,7 +973,6 @@ class CSV
# <b><tt>:header_converters</tt></b>:: +nil+
# <b><tt>:skip_blanks</tt></b>:: +false+
# <b><tt>:force_quotes</tt></b>:: +false+
- # <b><tt>:skip_lines</tt></b>:: +nil+
#
DEFAULT_OPTIONS = { col_sep: ",",
row_sep: :auto,
@@ -1022,8 +984,7 @@ class CSV
return_headers: false,
header_converters: nil,
skip_blanks: false,
- force_quotes: false,
- skip_lines: nil }.freeze
+ force_quotes: false }.freeze
#
# This method will return a CSV instance, just like CSV::new(), but the
@@ -1051,6 +1012,133 @@ class CSV
end
#
+ # This method allows you to serialize an Array of Ruby objects to a String or
+ # File of CSV data. This is not as powerful as Marshal or YAML, but perhaps
+ # useful for spreadsheet and database interaction.
+ #
+ # Out of the box, this method is intended to work with simple data objects or
+ # Structs. It will serialize a list of instance variables and/or
+ # Struct.members().
+ #
+ # If you need need more complicated serialization, you can control the process
+ # by adding methods to the class to be serialized.
+ #
+ # A class method csv_meta() is responsible for returning the first row of the
+ # document (as an Array). This row is considered to be a Hash of the form
+ # key_1,value_1,key_2,value_2,... CSV::load() expects to find a class key
+ # with a value of the stringified class name and CSV::dump() will create this,
+ # if you do not define this method. This method is only called on the first
+ # object of the Array.
+ #
+ # The next method you can provide is an instance method called csv_headers().
+ # This method is expected to return the second line of the document (again as
+ # an Array), which is to be used to give each column a header. By default,
+ # CSV::load() will set an instance variable if the field header starts with an
+ # @ character or call send() passing the header as the method name and
+ # the field value as an argument. This method is only called on the first
+ # object of the Array.
+ #
+ # Finally, you can provide an instance method called csv_dump(), which will
+ # be passed the headers. This should return an Array of fields that can be
+ # serialized for this object. This method is called once for every object in
+ # the Array.
+ #
+ # The +io+ parameter can be used to serialize to a File, and +options+ can be
+ # anything CSV::new() accepts.
+ #
+ def self.dump(ary_of_objs, io = "", options = Hash.new)
+ obj_template = ary_of_objs.first
+
+ csv = new(io, options)
+
+ # write meta information
+ begin
+ csv << obj_template.class.csv_meta
+ rescue NoMethodError
+ csv << [:class, obj_template.class]
+ end
+
+ # write headers
+ begin
+ headers = obj_template.csv_headers
+ rescue NoMethodError
+ headers = obj_template.instance_variables.sort
+ if obj_template.class.ancestors.find { |cls| cls.to_s =~ /\AStruct\b/ }
+ headers += obj_template.members.map { |mem| "#{mem}=" }.sort
+ end
+ end
+ csv << headers
+
+ # serialize each object
+ ary_of_objs.each do |obj|
+ begin
+ csv << obj.csv_dump(headers)
+ rescue NoMethodError
+ csv << headers.map do |var|
+ if var[0] == ?@
+ obj.instance_variable_get(var)
+ else
+ obj[var[0..-2]]
+ end
+ end
+ end
+ end
+
+ if io.is_a? String
+ csv.string
+ else
+ csv.close
+ end
+ end
+
+ #
+ # This method is the reading counterpart to CSV::dump(). See that method for
+ # a detailed description of the process.
+ #
+ # You can customize loading by adding a class method called csv_load() which
+ # will be passed a Hash of meta information, an Array of headers, and an Array
+ # of fields for the object the method is expected to return.
+ #
+ # Remember that all fields will be Strings after this load. If you need
+ # something else, use +options+ to setup converters or provide a custom
+ # csv_load() implementation.
+ #
+ def self.load(io_or_str, options = Hash.new)
+ csv = new(io_or_str, options)
+
+ # load meta information
+ meta = Hash[*csv.shift]
+ cls = meta["class".encode(csv.encoding)].split("::".encode(csv.encoding)).
+ inject(Object) do |c, const|
+ c.const_get(const)
+ end
+
+ # load headers
+ headers = csv.shift
+
+ # unserialize each object stored in the file
+ results = csv.inject(Array.new) do |all, row|
+ begin
+ obj = cls.csv_load(meta, headers, row)
+ rescue NoMethodError
+ obj = cls.allocate
+ headers.zip(row) do |name, value|
+ if name[0] == ?@
+ obj.instance_variable_set(name, value)
+ else
+ obj.send(name, value)
+ end
+ end
+ end
+ all << obj
+ end
+
+ csv.close unless io_or_str.is_a? String
+
+ results
+ end
+
+ #
# :call-seq:
# filter( options = Hash.new ) { |row| ... }
# filter( input, options = Hash.new ) { |row| ... }
@@ -1146,9 +1234,9 @@ class CSV
io.seek(0, IO::SEEK_END)
args.unshift(io)
else
- encoding = args[-1][:encoding] if args.last.is_a?(Hash)
+ encoding = (args[-1] = args[-1].dup).delete(:encoding) if args.last.is_a?(Hash)
str = ""
- str.force_encoding(encoding) if encoding
+ str.encode!(encoding) if encoding
args.unshift(str)
end
csv = new(*args) # wrap
@@ -1466,14 +1554,6 @@ class CSV
# skip over any rows with no content.
# <b><tt>:force_quotes</tt></b>:: When set to a +true+ value, CSV will
# quote all CSV fields it creates.
- # <b><tt>:skip_lines</tt></b>:: When set to an object responding to
- # <tt>match</tt>, every line matching
- # it is considered a comment and ignored
- # during parsing. When set to +nil+
- # no line is considered a comment.
- # If the passed object does not respond
- # to <tt>match</tt>, <tt>ArgumentError</tt>
- # is thrown.
#
# See CSV::DEFAULT_OPTIONS for the default settings.
#
@@ -1504,15 +1584,15 @@ class CSV
# if we can transcode the needed characters
#
@re_esc = "\\".encode(@encoding) rescue ""
- @re_chars = /#{%"[-\\]\\[\\.^$?*+{}()|# \r\n\t\f\v]".encode(@encoding)}/
+ @re_chars = /#{%"[-][\\.^$?*+{}()|# \r\n\t\f\v]".encode(@encoding)}/
+ # @re_chars = /#{%"[-][\\.^$?*+{}()|# \r\n\t\f\v]".encode(@encoding, fallback: proc{""})}/
init_separators(options)
init_parsers(options)
init_converters(options)
init_headers(options)
- init_comments(options)
- @force_encoding = !!(encoding || options.delete(:encoding))
+ options.delete(:encoding)
options.delete(:internal_encoding)
options.delete(:external_encoding)
unless options.empty?
@@ -1540,10 +1620,6 @@ class CSV
attr_reader :quote_char
# The limit for field size, if any. See CSV::new for details.
attr_reader :field_size_limit
-
- # The regex marking a line as a comment. See CSV::new for details
- attr_reader :skip_lines
-
#
# Returns the current list of converters in effect. See CSV::new for details.
# Built-in converters will be returned by name, while others will be returned
@@ -1652,13 +1728,10 @@ class CSV
output = row.map(&@quote).join(@col_sep) + @row_sep # quote and separate
if @io.is_a?(StringIO) and
- output.encoding != (encoding = raw_encoding)
- if @force_encoding
- output = output.encode(encoding)
- elsif (compatible_encoding = Encoding.compatible?(@io.string, output))
- @io.set_encoding(compatible_encoding)
- @io.seek(0, IO::SEEK_END)
- end
+ output.encoding != raw_encoding and
+ (compatible_encoding = Encoding.compatible?(@io.string, output))
+ @io = StringIO.new(@io.string.force_encoding(compatible_encoding))
+ @io.seek(0, IO::SEEK_END)
end
@io << output
@@ -1800,8 +1873,6 @@ class CSV
end
end
- next if @skip_lines and @skip_lines.match parse
-
parts = parse.split(@col_sep, -1)
if parts.empty?
if in_extended_col
@@ -2118,17 +2189,6 @@ class CSV
init_converters(options, :header_converters)
end
- # Stores the pattern of comments to skip from the provided options.
- #
- # The pattern must respond to +.match+, else ArgumentError is raised.
- #
- # See also CSV.new
- def init_comments(options)
- @skip_lines = options.delete(:skip_lines)
- if @skip_lines and not @skip_lines.respond_to?(:match)
- raise ArgumentError, ":skip_lines has to respond to matches"
- end
- end
#
# The actual work method for adding converters, used by both CSV.convert() and
# CSV.header_convert().
@@ -2259,8 +2319,8 @@ class CSV
private
- #
- # Returns the encoding of the internal IO object or the +default+ if the
+ #
+ # Returns the encoding of the internal IO object or the +default+ if the
# encoding cannot be determined.
#
def raw_encoding(default = Encoding::ASCII_8BIT)
@@ -2276,41 +2336,20 @@ class CSV
end
end
-# Passes +args+ to CSV::instance.
-#
-# CSV("CSV,data").read
-# #=> [["CSV", "data"]]
-#
-# If a block is given, the instance is passed the block and the return value
-# becomes the return value of the block.
-#
-# CSV("CSV,data") { |c|
-# c.read.any? { |a| a.include?("data") }
-# } #=> true
-#
-# CSV("CSV,data") { |c|
-# c.read.any? { |a| a.include?("zombies") }
-# } #=> false
-#
+# Another name for CSV::instance().
def CSV(*args, &block)
CSV.instance(*args, &block)
end
-class Array # :nodoc:
- # Equivalent to CSV::generate_line(self, options)
- #
- # ["CSV", "data"].to_csv
- # #=> "CSV,data\n"
+class Array
+ # Equivalent to <tt>CSV::generate_line(self, options)</tt>.
def to_csv(options = Hash.new)
CSV.generate_line(self, options)
end
end
-class String # :nodoc:
- # Equivalent to CSV::parse_line(self, options)
- #
- # "CSV,data".parse_csv
- # #=> ["CSV", "data"]
+class String
+ # Equivalent to <tt>CSV::parse_line(self, options)</tt>.
def parse_csv(options = Hash.new)
CSV.parse_line(self, options)
end
diff --git a/lib/debug.rb b/lib/debug.rb
index 40886b14a6..e99f69826a 100644
--- a/lib/debug.rb
+++ b/lib/debug.rb
@@ -12,178 +12,18 @@ end
require 'tracer'
require 'pp'
-class Tracer # :nodoc:
+class Tracer
def Tracer.trace_func(*vars)
Single.trace_func(*vars)
end
end
-SCRIPT_LINES__ = {} unless defined? SCRIPT_LINES__ # :nodoc:
-
-##
-# This library provides debugging functionality to Ruby.
-#
-# To add a debugger to your code, start by requiring +debug+ in your
-# program:
-#
-# def say(word)
-# require 'debug'
-# puts word
-# end
-#
-# This will cause Ruby to interrupt execution and show a prompt when the +say+
-# method is run.
-#
-# Once you're inside the prompt, you can start debugging your program.
-#
-# (rdb:1) p word
-# "hello"
-#
-# == Getting help
-#
-# You can get help at any time by pressing +h+.
-#
-# (rdb:1) h
-# Debugger help v.-0.002b
-# Commands
-# b[reak] [file:|class:]<line|method>
-# b[reak] [class.]<line|method>
-# set breakpoint to some position
-# wat[ch] <expression> set watchpoint to some expression
-# cat[ch] (<exception>|off) set catchpoint to an exception
-# b[reak] list breakpoints
-# cat[ch] show catchpoint
-# del[ete][ nnn] delete some or all breakpoints
-# disp[lay] <expression> add expression into display expression list
-# undisp[lay][ nnn] delete one particular or all display expressions
-# c[ont] run until program ends or hit breakpoint
-# s[tep][ nnn] step (into methods) one line or till line nnn
-# n[ext][ nnn] go over one line or till line nnn
-# w[here] display frames
-# f[rame] alias for where
-# l[ist][ (-|nn-mm)] list program, - lists backwards
-# nn-mm lists given lines
-# up[ nn] move to higher frame
-# down[ nn] move to lower frame
-# fin[ish] return to outer frame
-# tr[ace] (on|off) set trace mode of current thread
-# tr[ace] (on|off) all set trace mode of all threads
-# q[uit] exit from debugger
-# v[ar] g[lobal] show global variables
-# v[ar] l[ocal] show local variables
-# v[ar] i[nstance] <object> show instance variables of object
-# v[ar] c[onst] <object> show constants of object
-# m[ethod] i[nstance] <obj> show methods of object
-# m[ethod] <class|module> show instance methods of class or module
-# th[read] l[ist] list all threads
-# th[read] c[ur[rent]] show current thread
-# th[read] [sw[itch]] <nnn> switch thread context to nnn
-# th[read] stop <nnn> stop thread nnn
-# th[read] resume <nnn> resume thread nnn
-# p expression evaluate expression and print its value
-# h[elp] print this help
-# <everything else> evaluate
-#
-# == Usage
-#
-# The following is a list of common functionalities that the debugger
-# provides.
-#
-# === Navigating through your code
-#
-# In general, a debugger is used to find bugs in your program, which
-# often means pausing execution and inspecting variables at some point
-# in time.
-#
-# Let's look at an example:
-#
-# def my_method(foo)
-# require 'debug'
-# foo = get_foo if foo.nil?
-# raise if foo.nil?
-# end
-#
-# When you run this program, the debugger will kick in just before the
-# +foo+ assignment.
-#
-# (rdb:1) p foo
-# nil
-#
-# In this example, it'd be interesting to move to the next line and
-# inspect the value of +foo+ again. You can do that by pressing +n+:
-#
-# (rdb:1) n # goes to next line
-# (rdb:1) p foo
-# nil
-#
-# You now know that the original value of +foo+ was nil, and that it
-# still was nil after calling +get_foo+.
-#
-# Other useful commands for navigating through your code are:
-#
-# +c+::
-# Runs the program until it either exists or encounters another breakpoint.
-# You usually press +c+ when you are finished debugging your program and
-# want to resume its execution.
-# +s+::
-# Steps into method definition. In the previous example, +s+ would take you
-# inside the method definition of +get_foo+.
-# +r+::
-# Restart the program.
-# +q+::
-# Quit the program.
-#
-# === Inspecting variables
-#
-# You can use the debugger to easily inspect both local and global variables.
-# We've seen how to inspect local variables before:
-#
-# (rdb:1) p my_arg
-# 42
-#
-# You can also pretty print the result of variables or expressions:
-#
-# (rdb:1) pp %w{a very long long array containing many words}
-# ["a",
-# "very",
-# "long",
-# ...
-# ]
-#
-# You can list all local variables with +v l+:
-#
-# (rdb:1) v l
-# foo => "hello"
-#
-# Similarly, you can show all global variables with +v g+:
-#
-# (rdb:1) v g
-# all global variables
-#
-# Finally, you can omit +p+ if you simply want to evaluate a variable or
-# expression
-#
-# (rdb:1) 5**2
-# 25
-#
-# === Going beyond basics
-#
-# Ruby Debug provides more advanced functionalities like switching
-# between threads, setting breakpoints and watch expressions, and more.
-# The full list of commands is available at any time by pressing +h+.
-#
-# == Staying out of trouble
-#
-# Make sure you remove every instance of +require 'debug'+ before
-# shipping your code. Failing to do so may result in your program
-# hanging unpredictably.
-#
-# Debug is not available in safe mode.
+SCRIPT_LINES__ = {} unless defined? SCRIPT_LINES__
class DEBUGGER__
- MUTEX = Mutex.new # :nodoc:
+ MUTEX = Mutex.new
- class Context # :nodoc:
+ class Context
DEBUG_LAST_CMD = []
begin
@@ -705,9 +545,7 @@ Commands
th[read] [sw[itch]] <nnn> switch thread context to nnn
th[read] stop <nnn> stop thread nnn
th[read] resume <nnn> resume thread nnn
- pp expression evaluate expression and pretty_print its value
p expression evaluate expression and print its value
- r[estart] restart program
h[elp] print this help
<everything else> evaluate
EOHELP
@@ -891,34 +729,22 @@ EOHELP
@stdout = STDOUT
class << DEBUGGER__
- # Returns the IO used as stdout. Defaults to STDOUT
def stdout
@stdout
end
- # Sets the IO used as stdout. Defaults to STDOUT
def stdout=(s)
@stdout = s
end
- # Returns the display expression list
- #
- # See DEBUGGER__ for more usage
def display
@display
end
- # Returns the list of break points where execution will be stopped.
- #
- # See DEBUGGER__ for more useage
def break_points
@break_points
end
- # Returns the list of waiting threads.
- #
- # When stepping through the traces of a function, thread gets suspended, to
- # be resumed later.
def waiting
@waiting
end
diff --git a/lib/delegate.rb b/lib/delegate.rb
index e46e4f8c23..2086a721f9 100644
--- a/lib/delegate.rb
+++ b/lib/delegate.rb
@@ -92,8 +92,8 @@ class Delegator < BasicObject
# Returns the methods available to this delegate object as the union
# of this object's and \_\_getobj\_\_ methods.
#
- def methods(all=true)
- __getobj__.methods(all) | super
+ def methods
+ __getobj__.methods | super
end
#
@@ -130,9 +130,6 @@ class Delegator < BasicObject
__getobj__ != obj
end
- #
- # Delegates ! to the \_\_getobj\_\_
- #
def !
!__getobj__
end
@@ -288,7 +285,8 @@ class SimpleDelegator<Delegator
end
end
-def Delegator.delegating_block(mid) # :nodoc:
+# :stopdoc:
+def Delegator.delegating_block(mid)
lambda do |*args, &block|
target = self.__getobj__
begin
@@ -298,6 +296,7 @@ def Delegator.delegating_block(mid) # :nodoc:
end
end
end
+# :startdoc:
#
# The primary interface to this library. Use to setup delegation when defining
diff --git a/lib/drb/drb.rb b/lib/drb/drb.rb
index 8e03cdcde1..69456b1db2 100644
--- a/lib/drb/drb.rb
+++ b/lib/drb/drb.rb
@@ -34,11 +34,17 @@
# [http://www2a.biglobe.ne.jp/~seki/ruby/druby.en.html]
# The English version of the dRuby home page.
#
-# [http://pragprog.com/book/sidruby/the-druby-book]
-# The dRuby Book: Distributed and Parallel Computing with Ruby
-# by Masatoshi Seki and Makoto Inoue
+# [http://www.chadfowler.com/ruby/drb.html]
+# A quick tutorial introduction to using dRuby by Chad Fowler.
#
-# [http://www.ruby-doc.org/docs/ProgrammingRuby/html/ospace.html]
+# [http://www.linux-mag.com/2002-09/ruby_05.html]
+# A tutorial introduction to dRuby in Linux Magazine by Dave Thomas.
+# Includes a discussion of Rinda.
+#
+# [http://www.eng.cse.dmu.ac.uk/~hgs/ruby/dRuby/]
+# Links to English-language Ruby material collected by Hugh Sasse.
+#
+# [http://www.rubycentral.com/book/ospace.html]
# The chapter from *Programming* *Ruby* by Dave Thomas and Andy Hunt
# which discusses dRuby.
#
@@ -426,8 +432,6 @@ module DRb
# An exception wrapping an error object
class DRbRemoteError < DRbError
-
- # Creates a new remote error that wraps the Exception +error+
def initialize(error)
@reason = error.class.to_s
super("#{error.message} (#{error.class})")
@@ -507,16 +511,7 @@ module DRb
end
end
- # An Array wrapper that can be sent to another server via DRb.
- #
- # All entries in the array will be dumped or be references that point to
- # the local server.
-
class DRbArray
-
- # Creates a new DRbArray that either dumps or wraps all the items in the
- # Array +ary+ so they can be loaded by a remote DRb server.
-
def initialize(ary)
@ary = ary.collect { |obj|
if obj.kind_of? DRbUndumped
@@ -532,11 +527,11 @@ module DRb
}
end
- def self._load(s) # :nodoc:
+ def self._load(s)
Marshal::load(s)
end
- def _dump(lv) # :nodoc:
+ def _dump(lv)
Marshal.dump(@ary)
end
end
@@ -640,7 +635,7 @@ module DRb
end
private
- def make_proxy(obj, error=false) # :nodoc:
+ def make_proxy(obj, error=false)
if error
DRbRemoteError.new(obj)
else
@@ -804,13 +799,10 @@ module DRb
module_function :auto_load
end
- # The default drb protocol which communicates over a TCP socket.
+ # The default drb protocol.
#
- # The DRb TCP protocol URI looks like:
- # <code>druby://<host>:<port>?<option></code>. The option is optional.
-
+ # Communicates over a TCP socket.
class DRbTCPSocket
- # :stopdoc:
private
def self.parse_uri(uri)
if uri =~ /^druby:\/\/(.*?):(\d+)(\?(.*))?$/
@@ -826,12 +818,7 @@ module DRb
public
- # Open a client connection to +uri+ (DRb URI string) using configuration
- # +config+.
- #
- # This can raise DRb::DRbBadScheme or DRb::DRbBadURI if +uri+ is not for a
- # recognized protocol. See DRb::DRbServer.new for information on built-in
- # URI protocols.
+ # Open a client connection to +uri+ using configuration +config+.
def self.open(uri, config)
host, port, = parse_uri(uri)
host.untaint
@@ -840,7 +827,6 @@ module DRb
self.new(uri, soc, config)
end
- # Returns the hostname of this server
def self.getservername
host = Socket::gethostname
begin
@@ -850,9 +836,6 @@ module DRb
end
end
- # For the families available for +host+, returns a TCPServer on +port+.
- # If +port+ is 0 the first available port is used. IPv4 servers are
- # preferred over IPv6 servers.
def self.open_server_inaddr_any(host, port)
infos = Socket::getaddrinfo(host, nil,
Socket::AF_UNSPEC,
@@ -863,7 +846,6 @@ module DRb
return TCPServer.open('0.0.0.0', port) if families.has_key?('AF_INET')
return TCPServer.open('::', port) if families.has_key?('AF_INET6')
return TCPServer.open(port)
- # :stopdoc:
end
# Open a server listening for connections at +uri+ using
@@ -1032,13 +1014,10 @@ module DRb
self.new_with(uri, ref)
end
- # Creates a DRb::DRbObject given the reference information to the remote
- # host +uri+ and object +ref+.
-
def self.new_with(uri, ref)
it = self.allocate
- it.instance_variable_set(:@uri, uri)
- it.instance_variable_set(:@ref, ref)
+ it.instance_variable_set('@uri', uri)
+ it.instance_variable_set('@ref', ref)
it
end
@@ -1085,7 +1064,6 @@ module DRb
undef :to_s
undef :to_a if respond_to?(:to_a)
- # Routes respond_to? to the referenced remote object.
def respond_to?(msg_id, priv=false)
case msg_id
when :_dump
@@ -1097,7 +1075,7 @@ module DRb
end
end
- # Routes method calls to the referenced remote object.
+ # Routes method calls to the referenced object.
def method_missing(msg_id, *a, &b)
if DRb.here?(@uri)
obj = DRb.to_obj(@ref)
@@ -1122,8 +1100,7 @@ module DRb
end
end
- # Given the +uri+ of another host executes the block provided.
- def self.with_friend(uri) # :nodoc:
+ def self.with_friend(uri)
friend = DRb.fetch_server(uri)
return yield() unless friend
@@ -1134,9 +1111,7 @@ module DRb
Thread.current['DRb'] = save if friend
end
- # Returns a modified backtrace from +result+ with the +uri+ where each call
- # in the backtrace came from.
- def self.prepare_backtrace(uri, result) # :nodoc:
+ def self.prepare_backtrace(uri, result)
prefix = "(#{uri}) "
bt = []
result.backtrace.each do |x|
@@ -1267,9 +1242,9 @@ module DRb
@@load_limit = sz
end
- # Set the default access control list to +acl+. The default ACL is +nil+.
+ # Set the default value for the :acl option.
#
- # See also DRb::ACL and #new()
+ # See #new(). The initial default value is nil.
def self.default_acl(acl)
@@acl = acl
end
@@ -1281,9 +1256,6 @@ module DRb
@@idconv = idconv
end
- # Set the default safe level to +level+. The default safe level is 0
- #
- # See #new for more information.
def self.default_safe_level(level)
@@safe_level = level
end
@@ -1341,9 +1313,6 @@ module DRb
# :argc_limit :: the maximum number of arguments to a remote
# method accepted by the server. Defaults to
# 256.
- # :safe_level :: The safe level of the DRbServer. The attribute
- # sets $SAFE for methods performed in the main_loop.
- # Defaults to 0.
#
# The default values of these options can be modified on
# a class-wide basis by the class methods #default_argc_limit,
@@ -1403,10 +1372,6 @@ module DRb
# The configuration of this DRbServer
attr_reader :config
- # The safe level for this server. This is a number corresponding to
- # $SAFE.
- #
- # The default safe_level is 0
attr_reader :safe_level
# Set whether to operate in verbose mode.
@@ -1423,8 +1388,7 @@ module DRb
def alive?
@thread.alive?
end
-
- # Is +uri+ the URI for this server?
+
def here?(uri)
@exported_uri.include?(uri)
end
@@ -1453,10 +1417,6 @@ module DRb
end
private
-
- ##
- # Starts the DRb main loop in a new thread.
-
def run
Thread.start do
begin
@@ -1766,10 +1726,7 @@ module DRb
end
module_function :thread
- # Set the default id conversion object.
- #
- # This is expected to be an instance such as DRb::DRbIdConv that responds to
- # #to_id and #to_obj that can convert objects to and from DRb references.
+ # Set the default id conv object.
#
# See DRbServer#default_id_conv.
def install_id_conv(idconv)
@@ -1777,7 +1734,7 @@ module DRb
end
module_function :install_id_conv
- # Set the default ACL to +acl+.
+ # Set the default acl.
#
# See DRb::DRbServer.default_acl.
def install_acl(acl)
@@ -1786,24 +1743,12 @@ module DRb
module_function :install_acl
@mutex = Mutex.new
- def mutex # :nodoc:
+ def mutex
@mutex
end
module_function :mutex
@server = {}
- # Registers +server+ with DRb.
- #
- # This is called when a new DRb::DRbServer is created.
- #
- # If there is no primary server then +server+ becomes the primary server.
- #
- # Example:
- #
- # require 'drb'
- #
- # s = DRb::DRbServer.new # automatically calls regist_server
- # DRb.fetch_server s.uri #=> #<DRb::DRbServer:0x...>
def regist_server(server)
@server[server.uri] = server
mutex.synchronize do
@@ -1812,15 +1757,11 @@ module DRb
end
module_function :regist_server
- # Removes +server+ from the list of registered servers.
def remove_server(server)
@server.delete(server.uri)
end
module_function :remove_server
- # Retrieves the server with the given +uri+.
- #
- # See also regist_server and remove_server.
def fetch_server(uri)
@server[uri]
end
diff --git a/lib/drb/eq.rb b/lib/drb/eq.rb
index 553f30c598..6328c81202 100644
--- a/lib/drb/eq.rb
+++ b/lib/drb/eq.rb
@@ -1,5 +1,5 @@
module DRb
- class DRbObject # :nodoc:
+ class DRbObject
def ==(other)
return false unless DRbObject === other
(@ref == other.__drbref) && (@uri == other.__drburi)
diff --git a/lib/drb/extserv.rb b/lib/drb/extserv.rb
index c70ced877c..bb11211cd1 100644
--- a/lib/drb/extserv.rb
+++ b/lib/drb/extserv.rb
@@ -42,8 +42,6 @@ module DRb
end
end
-# :stopdoc:
-
if __FILE__ == $0
class Foo
include DRbUndumped
diff --git a/lib/drb/gw.rb b/lib/drb/gw.rb
index b3568ab08d..b7a5f5383f 100644
--- a/lib/drb/gw.rb
+++ b/lib/drb/gw.rb
@@ -2,36 +2,8 @@ require 'drb/drb'
require 'monitor'
module DRb
-
- # Gateway id conversion forms a gateway between different DRb protocols or
- # networks.
- #
- # The gateway needs to install this id conversion and create servers for
- # each of the protocols or networks it will be a gateway between. It then
- # needs to create a server that attaches to each of these networks. For
- # example:
- #
- # require 'drb/drb'
- # require 'drb/unix'
- # require 'drb/gw'
- #
- # DRb.install_id_conv DRb::GWIdConv.new
- # gw = DRb::GW.new
- # s1 = DRb::DRbServer.new 'drbunix:/path/to/gateway', gw
- # s2 = DRb::DRbServer.new 'druby://example:10000', gw
- #
- # s1.thread.join
- # s2.thread.join
- #
- # Each client must register services with the gateway, for example:
- #
- # DRb.start_service 'drbunix:', nil # an anonymous server
- # gw = DRbObject.new nil, 'drbunix:/path/to/gateway'
- # gw[:unix] = some_service
- # DRb.thread.join
-
class GWIdConv < DRbIdConv
- def to_obj(ref) # :nodoc:
+ def to_obj(ref)
if Array === ref && ref[0] == :DRbObject
return DRbObject.new_with(ref[1], ref[2])
end
@@ -39,29 +11,19 @@ module DRb
end
end
- # The GW provides a synchronized store for participants in the gateway to
- # communicate.
-
class GW
include MonitorMixin
-
- # Creates a new GW
-
def initialize
super()
@hash = {}
end
- # Retrieves +key+ from the GW
-
def [](key)
synchronize do
@hash[key]
end
end
- # Stores value +v+ at +key+ in the GW
-
def []=(key, v)
synchronize do
@hash[key] = v
@@ -69,7 +31,7 @@ module DRb
end
end
- class DRbObject # :nodoc:
+ class DRbObject
def self._load(s)
uri, ref = Marshal.load(s)
if DRb.uri == uri
diff --git a/lib/drb/invokemethod.rb b/lib/drb/invokemethod.rb
index d11feabcb8..353dbd00d8 100644
--- a/lib/drb/invokemethod.rb
+++ b/lib/drb/invokemethod.rb
@@ -2,7 +2,7 @@
module DRb
class DRbServer
- module InvokeMethod18Mixin # :nodoc: all
+ module InvokeMethod18Mixin
def block_yield(x)
if x.size == 1 && x[0].class == Array
x[0] = DRbArray.new(x[0])
diff --git a/lib/drb/observer.rb b/lib/drb/observer.rb
index cab9ebc60b..149426db7b 100644
--- a/lib/drb/observer.rb
+++ b/lib/drb/observer.rb
@@ -1,12 +1,9 @@
require 'observer'
module DRb
- # The Observable module extended to DRb. See Observable for details.
module DRbObservable
include Observable
- # Notifies observers of a change in state. See also
- # Observable#notify_observers
def notify_observers(*arg)
if defined? @observer_state and @observer_state
if defined? @observer_peers
diff --git a/lib/drb/ssl.rb b/lib/drb/ssl.rb
index e7d9569eb6..2b6a2376ef 100644
--- a/lib/drb/ssl.rb
+++ b/lib/drb/ssl.rb
@@ -5,31 +5,16 @@ require 'singleton'
module DRb
- # The protocol for DRb over an SSL socket
- #
- # The URI for a DRb socket over SSL is:
- # <code>drbssl://<host>:<port>?<option></code>. The option is optional
class DRbSSLSocket < DRbTCPSocket
- # SSLConfig handles the needed SSL information for establishing a
- # DRbSSLSocket connection, including generating the X509 / RSA pair.
- #
- # An instance of this config can be passed to DRbSSLSocket.new,
- # DRbSSLSocket.open and DRbSSLSocket.open_server
- #
- # See DRb::DRbSSLSocket::SSLConfig.new for more details
class SSLConfig
- # Default values for a SSLConfig instance.
- #
- # See DRb::DRbSSLSocket::SSLConfig.new for more details
DEFAULT = {
:SSLCertificate => nil,
:SSLPrivateKey => nil,
:SSLClientCA => nil,
:SSLCACertificatePath => nil,
:SSLCACertificateFile => nil,
- :SSLTmpDhCallback => nil,
:SSLVerifyMode => ::OpenSSL::SSL::VERIFY_NONE,
:SSLVerifyDepth => nil,
:SSLVerifyCallback => nil, # custom verification
@@ -39,90 +24,6 @@ module DRb
:SSLCertComment => "Generated by Ruby/OpenSSL"
}
- # Create a new DRb::DRbSSLSocket::SSLConfig instance
- #
- # The DRb::DRbSSLSocket will take either a +config+ Hash or an instance
- # of SSLConfg, and will setup the certificate for its session for the
- # configuration. If want it to generate a generic certificate, the bare
- # minimum is to provide the :SSLCertName
- #
- # === Config options
- #
- # From +config+ Hash:
- #
- # :SSLCertificate ::
- # An instance of OpenSSL::X509::Certificate. If this is not provided,
- # then a generic X509 is generated, with a correspond :SSLPrivateKey
- #
- # :SSLPrivateKey ::
- # A private key instance, like OpenSSL::PKey::RSA. This key must be
- # the key that signed the :SSLCertificate
- #
- # :SSLClientCA ::
- # An OpenSSL::X509::Certificate, or Array of certificates that will
- # used as ClientCAs in the SSL Context
- #
- # :SSLCACertificatePath ::
- # A path to the directory of CA certificates. The certificates must
- # be in PEM format.
- #
- # :SSLCACertificateFile ::
- # A path to a CA certificate file, in PEM format.
- #
- # :SSLTmpDhCallback ::
- # A DH callback. See OpenSSL::SSL::SSLContext.tmp_dh_callback
- #
- # :SSLVerifyMode ::
- # This is the SSL verification mode. See OpenSSL::SSL::VERIFY_* for
- # available modes. The default is OpenSSL::SSL::VERIFY_NONE
- #
- # :SSLVerifyDepth ::
- # Number of CA certificates to walk, when verifying a certificate
- # chain.
- #
- # :SSLVerifyCallback ::
- # A callback to be used for additional verification. See
- # OpenSSL::SSL::SSLContext.verify_callback
- #
- # :SSLCertificateStore ::
- # A OpenSSL::X509::Store used for verification of certificates
- #
- # :SSLCertName ::
- # Issuer name for the certificate. This is required when generating
- # the certificate (if :SSLCertificate and :SSLPrivateKey were not
- # given). The value of this is to be an Array of pairs:
- #
- # [["C", "Raleigh"], ["ST","North Carolina"],
- # ["CN","fqdn.example.com"]]
- #
- # See also OpenSSL::X509::Name
- #
- # :SSLCertComment ::
- # A comment to be used for generating the certificate. The default is
- # "Generated by Ruby/OpenSSL"
- #
- #
- # === Example
- #
- # These values can be added after the fact, like a Hash.
- #
- # require 'drb/ssl'
- # c = DRb::DRbSSLSocket::SSLConfig.new {}
- # c[:SSLCertificate] =
- # OpenSSL::X509::Certificate.new(File.read('mycert.crt'))
- # c[:SSLPrivateKey] = OpenSSL::PKey::RSA.new(File.read('mycert.key'))
- # c[:SSLVerifyMode] = OpenSSL::SSL::VERIFY_PEER
- # c[:SSLCACertificatePath] = "/etc/ssl/certs/"
- # c.setup_certificate
- #
- # or
- #
- # require 'drb/ssl'
- # c = DRb::DRbSSLSocket::SSLConfig.new({
- # :SSLCertName => [["CN" => DRb::DRbSSLSocket.getservername]]
- # })
- # c.setup_certificate
- #
def initialize(config)
@config = config
@cert = config[:SSLCertificate]
@@ -130,13 +31,10 @@ module DRb
@ssl_ctx = nil
end
- # A convenience method to access the values like a Hash
def [](key);
@config[key] || DEFAULT[key]
end
- # Connect to IO +tcp+, with context of the current certificate
- # configuration
def connect(tcp)
ssl = ::OpenSSL::SSL::SSLSocket.new(tcp, @ssl_ctx)
ssl.sync = true
@@ -144,8 +42,6 @@ module DRb
ssl
end
- # Accept connection to IO +tcp+, with context of the current certificate
- # configuration
def accept(tcp)
ssl = OpenSSL::SSL::SSLSocket.new(tcp, @ssl_ctx)
ssl.sync = true
@@ -153,9 +49,6 @@ module DRb
ssl
end
- # Ensures that :SSLCertificate and :SSLPrivateKey have been provided
- # or that a new certificate is generated with the other parameters
- # provided.
def setup_certificate
if @cert && @pkey
return
@@ -201,8 +94,6 @@ module DRb
@pkey = rsa
end
- # Establish the OpenSSL::SSL::SSLContext with the configuration
- # parameters provided.
def setup_ssl_context
ctx = ::OpenSSL::SSL::SSLContext.new
ctx.cert = @cert
@@ -210,7 +101,6 @@ module DRb
ctx.client_ca = self[:SSLClientCA]
ctx.ca_path = self[:SSLCACertificatePath]
ctx.ca_file = self[:SSLCACertificateFile]
- ctx.tmp_dh_callback = self[:SSLTmpDhCallback]
ctx.verify_mode = self[:SSLVerifyMode]
ctx.verify_depth = self[:SSLVerifyDepth]
ctx.verify_callback = self[:SSLVerifyCallback]
@@ -219,12 +109,7 @@ module DRb
end
end
- # Parse the dRuby +uri+ for an SSL connection.
- #
- # Expects drbssl://...
- #
- # Raises DRbBadScheme or DRbBadURI if +uri+ is not matching or malformed
- def self.parse_uri(uri) # :nodoc:
+ def self.parse_uri(uri)
if uri =~ /^drbssl:\/\/(.*?):(\d+)(\?(.*))?$/
host = $1
port = $2.to_i
@@ -236,15 +121,6 @@ module DRb
end
end
- # Return an DRb::DRbSSLSocket instance as a client-side connection,
- # with the SSL connected. This is called from DRb::start_service or while
- # connecting to a remote object:
- #
- # DRb.start_service 'drbssl://localhost:0', front, config
- #
- # +uri+ is the URI we are connected to,
- # <code>'drbssl://localhost:0'</code> above, +config+ is our
- # configuration. Either a Hash or DRb::DRbSSLSocket::SSLConfig
def self.open(uri, config)
host, port, = parse_uri(uri)
host.untaint
@@ -256,15 +132,6 @@ module DRb
self.new(uri, ssl, ssl_conf, true)
end
- # Returns a DRb::DRbSSLSocket instance as a server-side connection, with
- # the SSL connected. This is called from DRb::start_service or while
- # connecting to a remote object:
- #
- # DRb.start_service 'drbssl://localhost:0', front, config
- #
- # +uri+ is the URI we are connected to,
- # <code>'drbssl://localhost:0'</code> above, +config+ is our
- # configuration. Either a Hash or DRb::DRbSSLSocket::SSLConfig
def self.open_server(uri, config)
uri = 'drbssl://:0' unless uri
host, port, = parse_uri(uri)
@@ -283,35 +150,19 @@ module DRb
self.new(@uri, soc, ssl_conf, false)
end
- # This is a convenience method to parse +uri+ and separate out any
- # additional options appended in the +uri+.
- #
- # Returns an option-less uri and the option => [uri,option]
- #
- # The +config+ is completely unused, so passing nil is sufficient.
- def self.uri_option(uri, config) # :nodoc:
+ def self.uri_option(uri, config)
host, port, option = parse_uri(uri)
return "drbssl://#{host}:#{port}", option
end
- # Create a DRb::DRbSSLSocket instance.
- #
- # +uri+ is the URI we are connected to.
- # +soc+ is the tcp socket we are bound to.
- # +config+ is our configuration. Either a Hash or SSLConfig
- # +is_established+ is a boolean of whether +soc+ is currenly established
- #
- # This is called automatically based on the DRb protocol.
def initialize(uri, soc, config, is_established)
@ssl = is_established ? soc : nil
super(uri, soc.to_io, config)
end
- # Returns the SSL stream
- def stream; @ssl; end # :nodoc:
+ def stream; @ssl; end
- # Closes the SSL stream before closing the dRuby connection.
- def close # :nodoc:
+ def close
if @ssl
@ssl.close
@ssl = nil
@@ -319,7 +170,7 @@ module DRb
super
end
- def accept # :nodoc:
+ def accept
begin
while true
soc = @socket.accept
@@ -328,9 +179,8 @@ module DRb
end
begin
ssl = @config.accept(soc)
- rescue Exception
- soc.close
- raise
+ ensure
+ soc.close if $!
end
self.class.new(uri, ssl, @config, true)
rescue OpenSSL::SSL::SSLError
diff --git a/lib/drb/timeridconv.rb b/lib/drb/timeridconv.rb
index 4ea3035f39..b460e2c987 100644
--- a/lib/drb/timeridconv.rb
+++ b/lib/drb/timeridconv.rb
@@ -2,17 +2,8 @@ require 'drb/drb'
require 'monitor'
module DRb
-
- # Timer id conversion keeps objects alive for a certain amount of time after
- # their last access. The default time period is 600 seconds and can be
- # changed upon initialization.
- #
- # To use TimerIdConv:
- #
- # DRb.install_id_conv TimerIdConv.new 60 # one minute
-
class TimerIdConv < DRbIdConv
- class TimerHolder2 # :nodoc:
+ class TimerHolder2
include MonitorMixin
class InvalidIndexError < RuntimeError; end
@@ -80,19 +71,18 @@ module DRb
end
end
- # Creates a new TimerIdConv which will hold objects for +timeout+ seconds.
def initialize(timeout=600)
@holder = TimerHolder2.new(timeout)
end
- def to_obj(ref) # :nodoc:
+ def to_obj(ref)
return super if ref.nil?
@holder.fetch(ref)
rescue TimerHolder2::InvalidIndexError
raise "invalid reference"
end
- def to_id(obj) # :nodoc:
+ def to_id(obj)
return @holder.add(obj)
end
end
diff --git a/lib/drb/unix.rb b/lib/drb/unix.rb
index 4d245780a5..6de5052451 100644
--- a/lib/drb/unix.rb
+++ b/lib/drb/unix.rb
@@ -6,13 +6,7 @@ raise(LoadError, "UNIXServer is required") unless defined?(UNIXServer)
module DRb
- # Implements DRb over a UNIX socket
- #
- # DRb UNIX socket URIs look like <code>drbunix:<path>?<option></code>. The
- # option is optional.
-
class DRbUNIXSocket < DRbTCPSocket
- # :stopdoc:
def self.parse_uri(uri)
if /^drbunix:(.*?)(\?(.*))?$/ =~ uri
filename = $1
@@ -111,5 +105,4 @@ module DRb
end
DRbProtocol.add_protocol(DRbUNIXSocket)
- # :startdoc:
end
diff --git a/lib/erb.rb b/lib/erb.rb
index eb7461bca5..bb47943a86 100644
--- a/lib/erb.rb
+++ b/lib/erb.rb
@@ -1,4 +1,3 @@
-# -*- coding: us-ascii -*-
# = ERB -- Ruby Templating
#
# Author:: Masatoshi SEKI
@@ -11,8 +10,6 @@
#
# You can redistribute it and/or modify it under the same terms as Ruby.
-require "cgi/util"
-
#
# = ERB -- Ruby Templating
#
@@ -257,7 +254,7 @@ require "cgi/util"
# Rails, the web application framework, uses ERB to create views.
#
class ERB
- Revision = '$Date:: $' # :nodoc: #'
+ Revision = '$Date:: $' #'
# Returns revision information for the erb.rb module.
def self.version
@@ -583,14 +580,6 @@ class ERB
end
end
- def add_put_cmd(out, content)
- out.push("#{@put_cmd} #{content_dump(content)}")
- end
-
- def add_insert_cmd(out, content)
- out.push("#{@insert_cmd}((#{content}).to_s)")
- end
-
# Compiles an ERB template into Ruby code. Returns an array of the code
# and encoding like ["code", Encoding].
def compile(s)
@@ -608,7 +597,7 @@ class ERB
if scanner.stag.nil?
case token
when PercentLine
- add_put_cmd(out, content) if content.size > 0
+ out.push("#{@put_cmd} #{content_dump(content)}") if content.size > 0
content = ''
out.push(token.to_s)
out.cr
@@ -616,11 +605,11 @@ class ERB
out.cr
when '<%', '<%=', '<%#'
scanner.stag = token
- add_put_cmd(out, content) if content.size > 0
+ out.push("#{@put_cmd} #{content_dump(content)}") if content.size > 0
content = ''
when "\n"
content << "\n"
- add_put_cmd(out, content)
+ out.push("#{@put_cmd} #{content_dump(content)}")
content = ''
when '<%%'
content << '<%'
@@ -640,7 +629,7 @@ class ERB
out.push(content)
end
when '<%='
- add_insert_cmd(out, content)
+ out.push("#{@insert_cmd}((#{content}).to_s)")
when '<%#'
# out.push("# #{content_dump(content)}")
end
@@ -653,7 +642,7 @@ class ERB
end
end
end
- add_put_cmd(out, content) if content.size > 0
+ out.push("#{@put_cmd} #{content_dump(content)}") if content.size > 0
out.close
return out.script, enc
end
@@ -686,7 +675,7 @@ class ERB
Scanner.make_scanner(src, @trim_mode, @percent)
end
- # Construct a new compiler using the trim_mode. See ERB::new for available
+ # Construct a new compiler using the trim_mode. See ERB#new for available
# trim modes.
def initialize(trim_mode)
@percent, @trim_mode = prepare_trim_mode(trim_mode)
@@ -740,7 +729,6 @@ class ERB
# % enables Ruby code processing for lines beginning with %
# <> omit newline for lines starting with <% and ending in %>
# > omit newline for lines ending in %>
- # - omit blank lines ending in -%>
#
# _eoutvar_ can be used to set the name of the variable ERB will build up
# its output in. This is useful when you need to run multiple ERB
@@ -794,19 +782,12 @@ class ERB
#
def initialize(str, safe_level=nil, trim_mode=nil, eoutvar='_erbout')
@safe_level = safe_level
- compiler = make_compiler(trim_mode)
+ compiler = ERB::Compiler.new(trim_mode)
set_eoutvar(compiler, eoutvar)
@src, @enc = *compiler.compile(str)
@filename = nil
end
- ##
- # Creates a new compiler for ERB. See ERB::Compiler.new for details
-
- def make_compiler(trim_mode)
- ERB::Compiler.new(trim_mode)
- end
-
# The Ruby code generated by ERB
attr_reader :src
@@ -815,31 +796,39 @@ class ERB
attr_accessor :filename
#
- # Can be used to set _eoutvar_ as described in ERB::new. It's probably
- # easier to just use the constructor though, since calling this method
- # requires the setup of an ERB _compiler_ object.
+ # Can be used to set _eoutvar_ as described in ERB#new. It's probably easier
+ # to just use the constructor though, since calling this method requires the
+ # setup of an ERB _compiler_ object.
#
def set_eoutvar(compiler, eoutvar = '_erbout')
compiler.put_cmd = "#{eoutvar}.concat"
compiler.insert_cmd = "#{eoutvar}.concat"
- compiler.pre_cmd = ["#{eoutvar} = ''"]
- compiler.post_cmd = ["#{eoutvar}.force_encoding(__ENCODING__)"]
+
+ cmd = []
+ cmd.push "#{eoutvar} = ''"
+
+ compiler.pre_cmd = cmd
+
+ cmd = []
+ cmd.push("#{eoutvar}.force_encoding(__ENCODING__)")
+
+ compiler.post_cmd = cmd
end
# Generate results and print them. (see ERB#result)
- def run(b=new_toplevel)
+ def run(b=TOPLEVEL_BINDING)
print self.result(b)
end
#
# Executes the generated ERB code to produce a completed template, returning
- # the results of that code. (See ERB::new for details on how this process
- # can be affected by _safe_level_.)
+ # the results of that code. (See ERB#new for details on how this process can
+ # be affected by _safe_level_.)
#
- # _b_ accepts a Binding object which is used to set the context of
+ # _b_ accepts a Binding or Proc object which is used to set the context of
# code evaluation.
#
- def result(b=new_toplevel)
+ def result(b=TOPLEVEL_BINDING)
if @safe_level
proc {
$SAFE = @safe_level
@@ -850,15 +839,6 @@ class ERB
end
end
- ##
- # Returns a new binding each time *near* TOPLEVEL_BINDING for runs that do
- # not specify a binding.
-
- def new_toplevel
- TOPLEVEL_BINDING.dup
- end
- private :new_toplevel
-
# Define _methodname_ as instance method of _mod_ from compiled ruby source.
#
# example:
@@ -929,7 +909,7 @@ class ERB
# is a &gt; 0 &amp; a &lt; 10?
#
def html_escape(s)
- CGI.escapeHTML(s.to_s)
+ s.to_s.gsub(/&/, "&amp;").gsub(/\"/, "&quot;").gsub(/>/, "&gt;").gsub(/</, "&lt;")
end
alias h html_escape
module_function :h
diff --git a/lib/fileutils.rb b/lib/fileutils.rb
index 43b3e1ce49..ee396e35cb 100644
--- a/lib/fileutils.rb
+++ b/lib/fileutils.rb
@@ -118,7 +118,7 @@ module FileUtils
# FileUtils.cd('/') do # chdir
# [...] # do something
# end # return to original directory
- #
+ #
def cd(dir, options = {}, &block) # :yield: dir
fu_check_options options, OPT_TABLE['cd']
fu_output_message "cd #{dir}" if options[:verbose]
@@ -142,7 +142,9 @@ module FileUtils
# FileUtils.uptodate?('hello.o', %w(hello.c hello.h)) or \
# system 'make hello.o'
#
- def uptodate?(new, old_list)
+ def uptodate?(new, old_list, options = nil)
+ raise ArgumentError, 'uptodate? does not accept any option' if options
+
return false unless File.exist?(new)
new_time = File.mtime(new)
old_list.each do |old|
@@ -271,7 +273,7 @@ module FileUtils
Dir.rmdir(dir)
end
end
- rescue Errno::ENOTEMPTY, Errno::EEXIST, Errno::ENOENT
+ rescue Errno::ENOTEMPTY, Errno::ENOENT
end
end
end
@@ -361,7 +363,7 @@ module FileUtils
# Options: noop verbose
#
# Same as
- # #ln_s(src, dest, :force => true)
+ # #ln_s(src, dest, :force)
#
def ln_sf(src, dest, options = {})
fu_check_options options, OPT_TABLE['ln_sf']
@@ -422,7 +424,7 @@ module FileUtils
# # If you want to copy all contents of a directory instead of the
# # directory itself, c.f. src/x -> dest/x, src/y -> dest/y,
# # use following code.
- # FileUtils.cp_r 'src/.', 'dest' # cp_r('src', 'dest') makes dest/src,
+ # FileUtils.cp_r 'src/.', 'dest' # cp_r('src', 'dest') makes src/dest,
# # but this doesn't.
#
def cp_r(src, dest, options = {})
@@ -449,22 +451,20 @@ module FileUtils
# Both of +src+ and +dest+ must be a path name.
# +src+ must exist, +dest+ must not exist.
#
- # If +preserve+ is true, this method preserves owner, group, and
- # modified time. Permissions are copied regardless +preserve+.
+ # If +preserve+ is true, this method preserves owner, group, permissions
+ # and modified time.
#
# If +dereference_root+ is true, this method dereference tree root.
#
# If +remove_destination+ is true, this method removes each destination file before copy.
#
def copy_entry(src, dest, preserve = false, dereference_root = false, remove_destination = false)
- Entry_.new(src, nil, dereference_root).wrap_traverse(proc do |ent|
+ Entry_.new(src, nil, dereference_root).traverse do |ent|
destent = Entry_.new(dest, ent.rel, false)
File.unlink destent.path if remove_destination && File.file?(destent.path)
ent.copy destent.path
- end, proc do |ent|
- destent = Entry_.new(dest, ent.rel, false)
ent.copy_metadata destent.path if preserve
- end)
+ end
end
module_function :copy_entry
@@ -747,7 +747,7 @@ module FileUtils
File.symlink nil, nil
rescue NotImplementedError
return false
- rescue TypeError
+ rescue
return true
end
private_module_function :fu_have_symlink?
@@ -823,13 +823,16 @@ module FileUtils
#
def compare_stream(a, b)
bsize = fu_stream_blksize(a, b)
- sa = ""
- sb = ""
- begin
- a.read(bsize, sa)
- b.read(bsize, sb)
- return true if sa.empty? && sb.empty?
- end while sa == sb
+ sa = sb = nil
+ while sa == sb
+ sa = a.read(bsize)
+ sb = b.read(bsize)
+ unless sa and sb
+ if sa.nil? and sb.nil?
+ return true
+ end
+ end
+ end
false
end
module_function :compare_stream
@@ -848,8 +851,7 @@ module FileUtils
fu_check_options options, OPT_TABLE['install']
fu_output_message "install -c#{options[:preserve] && ' -p'}#{options[:mode] ? (' -m 0%o' % options[:mode]) : ''} #{[src,dest].flatten.join ' '}" if options[:verbose]
return if options[:noop]
- fu_each_src_dest(src, dest) do |s, d|
- st = File.stat(s)
+ fu_each_src_dest(src, dest) do |s, d, st|
unless File.exist?(d) and compare_file(s, d)
remove_file d, true
copy_file s, d
@@ -905,8 +907,8 @@ module FileUtils
def symbolic_modes_to_i(modes, path) #:nodoc:
current_mode = (File.stat(path).mode & 07777)
modes.split(/,/).inject(0) do |mode, mode_sym|
- mode_sym = "a#{mode_sym}" if mode_sym =~ %r!^[=+-]!
- target, mode = mode_sym.split %r![=+-]!
+ mode_sym = "a#{mode_sym}" if mode_sym =~ %r!^[+-=]!
+ target, mode = mode_sym.split %r![+-=]!
user_mask = user_mask(target)
mode_mask = mode_mask(mode ? mode : "", path)
@@ -928,11 +930,6 @@ module FileUtils
end
private_module_function :fu_mode
- def mode_to_s(mode) #:nodoc:
- mode.is_a?(String) ? mode : "%o" % mode
- end
- private_module_function :mode_to_s
-
#
# Options: noop verbose
#
@@ -951,25 +948,23 @@ module FileUtils
# FileUtils.chmod "u=wr,go=rr", %w(my.rb your.rb his.rb her.rb)
# FileUtils.chmod "u=wrx,go=rx", '/usr/bin/ruby', :verbose => true
#
- # "a" :: is user, group, other mask.
- # "u" :: is user's mask.
- # "g" :: is group's mask.
- # "o" :: is other's mask.
- # "w" :: is write permission.
- # "r" :: is read permission.
- # "x" :: is execute permission.
- # "X" ::
- # is execute permission for directories only, must be used in conjunction with "+"
- # "s" :: is uid, gid.
- # "t" :: is sticky bit.
- # "+" :: is added to a class given the specified mode.
- # "-" :: Is removed from a given class given mode.
- # "=" :: Is the exact nature of the class will be given a specified mode.
+ # "a" is user, group, other mask.
+ # "u" is user's mask.
+ # "g" is group's mask.
+ # "o" is other's mask.
+ # "w" is write permission.
+ # "r" is read permission.
+ # "x" is execute permission.
+ # "s" is uid, gid.
+ # "t" is sticky bit.
+ # "+" is added to a class given the specified mode.
+ # "-" Is removed from a given class given mode.
+ # "=" Is the exact nature of the class will be given a specified mode.
def chmod(mode, list, options = {})
fu_check_options options, OPT_TABLE['chmod']
list = fu_list(list)
- fu_output_message sprintf('chmod %s %s', mode_to_s(mode), list.join(' ')) if options[:verbose]
+ fu_output_message sprintf('chmod %o %s', mode, list.join(' ')) if options[:verbose]
return if options[:noop]
list.each do |path|
Entry_.new(path).chmod(fu_mode(mode, path))
@@ -991,9 +986,9 @@ module FileUtils
def chmod_R(mode, list, options = {})
fu_check_options options, OPT_TABLE['chmod_R']
list = fu_list(list)
- fu_output_message sprintf('chmod -R%s %s %s',
+ fu_output_message sprintf('chmod -R%s %o %s',
(options[:force] ? 'f' : ''),
- mode_to_s(mode), list.join(' ')) if options[:verbose]
+ mode, list.join(' ')) if options[:verbose]
return if options[:noop]
list.each do |root|
Entry_.new(root).traverse do |ent|
@@ -1024,8 +1019,8 @@ module FileUtils
def chown(user, group, list, options = {})
fu_check_options options, OPT_TABLE['chown']
list = fu_list(list)
- fu_output_message sprintf('chown %s %s',
- (group ? "#{user}:#{group}" : user || ':'),
+ fu_output_message sprintf('chown %s%s',
+ [user,group].compact.join(':') + ' ',
list.join(' ')) if options[:verbose]
return if options[:noop]
uid = fu_get_uid(user)
@@ -1053,9 +1048,9 @@ module FileUtils
def chown_R(user, group, list, options = {})
fu_check_options options, OPT_TABLE['chown_R']
list = fu_list(list)
- fu_output_message sprintf('chown -R%s %s %s',
+ fu_output_message sprintf('chown -R%s %s%s',
(options[:force] ? 'f' : ''),
- (group ? "#{user}:#{group}" : user || ':'),
+ [user,group].compact.join(':') + ' ',
list.join(' ')) if options[:verbose]
return if options[:noop]
uid = fu_get_uid(user)
@@ -1232,12 +1227,7 @@ module FileUtils
end
def exist?
- begin
- lstat
- true
- rescue Errno::ENOENT
- false
- end
+ lstat! ? true : false
end
def file?
@@ -1386,37 +1376,14 @@ module FileUtils
def copy_metadata(path)
st = lstat()
- if !st.symlink?
- File.utime st.atime, st.mtime, path
- end
+ File.utime st.atime, st.mtime, path
begin
- if st.symlink?
- begin
- File.lchown st.uid, st.gid, path
- rescue NotImplementedError
- end
- else
- File.chown st.uid, st.gid, path
- end
+ File.chown st.uid, st.gid, path
rescue Errno::EPERM
# clear setuid/setgid
- if st.symlink?
- begin
- File.lchmod st.mode & 01777, path
- rescue NotImplementedError
- end
- else
- File.chmod st.mode & 01777, path
- end
+ File.chmod st.mode & 01777, path
else
- if st.symlink?
- begin
- File.lchmod st.mode, path
- rescue NotImplementedError
- end
- else
- File.chmod st.mode, path
- end
+ File.chmod st.mode, path
end
end
@@ -1481,16 +1448,6 @@ module FileUtils
yield self
end
- def wrap_traverse(pre, post)
- pre.call self
- if directory?
- entries.each do |ent|
- ent.wrap_traverse pre, post
- end
- end
- post.call self
- end
-
private
$fileutils_rb_have_lchmod = nil
@@ -1555,7 +1512,7 @@ module FileUtils
def fu_each_src_dest(src, dest) #:nodoc:
fu_each_src_dest0(src, dest) do |s, d|
raise ArgumentError, "same file: #{s} and #{d}" if fu_same?(s, d)
- yield s, d
+ yield s, d, File.stat(s)
end
end
private_module_function :fu_each_src_dest
diff --git a/lib/find.rb b/lib/find.rb
index 571609cdef..cd2d1bf38b 100644
--- a/lib/find.rb
+++ b/lib/find.rb
@@ -30,8 +30,6 @@ module Find
# Calls the associated block with the name of every file and directory listed
# as arguments, then recursively on their subdirectories, and so on.
#
- # Returns an enumerator if no block is given.
- #
# See the +Find+ module documentation for an example.
#
def find(*paths) # :yield: path
diff --git a/lib/forwardable.rb b/lib/forwardable.rb
index d7116ed1bc..2b71b904d0 100644
--- a/lib/forwardable.rb
+++ b/lib/forwardable.rb
@@ -7,49 +7,29 @@
# Revised by Daniel J. Berger with suggestions from Florian Gross.
#
# Documentation by James Edward Gray II and Gavin Sinclair
-
-
-
-# The Forwardable module provides delegation of specified
-# methods to a designated object, using the methods #def_delegator
-# and #def_delegators.
#
-# For example, say you have a class RecordCollection which
-# contains an array <tt>@records</tt>. You could provide the lookup method
-# #record_number(), which simply calls #[] on the <tt>@records</tt>
-# array, like this:
+# == Introduction
#
-# class RecordCollection
-# extend Forwardable
-# def_delegator :@records, :[], :record_number
-# end
+# This library allows you delegate method calls to an object, on a method by
+# method basis.
#
-# Further, if you wish to provide the methods #size, #<<, and #map,
-# all of which delegate to @records, this is how you can do it:
+# == Notes
#
-# class RecordCollection
-# # extend Forwardable, but we did that above
-# def_delegators :@records, :size, :<<, :map
-# end
-# f = Foo.new
-# f.printf ...
-# f.gets
-# f.content_at(1)
+# Be advised, RDoc will not detect delegated methods.
#
-# If the object isn't a Module and Class, You can too extend Forwardable
-# module.
+# <b>forwardable.rb provides single-method delegation via the
+# def_delegator() and def_delegators() methods. For full-class
+# delegation via DelegateClass(), see delegate.rb.</b>
#
-# printer = String.new
-# printer.extend Forwardable # prepare object for delegation
-# printer.def_delegator "STDOUT", "puts" # add delegation for STDOUT.puts()
-# printer.puts "Howdy!"
+# == Examples
#
-# == Another example
+# === Forwardable
#
-# We want to rely on what has come before obviously, but with delegation we can
-# take just the methods we need and even rename them as appropriate. In many
-# cases this is preferable to inheritance, which gives us the entire old
-# interface, even if much of it isn't needed.
+# Forwardable makes building a new class based on existing work, with a proper
+# interface, almost trivial. We want to rely on what has come before obviously,
+# but with delegation we can take just the methods we need and even rename them
+# as appropriate. In many cases this is preferable to inheritance, which gives
+# us the entire old interface, even if much of it isn't needed.
#
# class Queue
# extend Forwardable
@@ -80,7 +60,7 @@
# q.clear
# puts q.first
#
-# This should output:
+# <i>Prints:</i>
#
# 2
# 3
@@ -90,22 +70,72 @@
# Ruby
# nil
#
-# == Notes
+# SingleForwardable can be used to setup delegation at the object level as well.
#
-# Be advised, RDoc will not detect delegated methods.
+# printer = String.new
+# printer.extend SingleForwardable # prepare object for delegation
+# printer.def_delegator "STDOUT", "puts" # add delegation for STDOUT.puts()
+# printer.puts "Howdy!"
#
-# +forwardable.rb+ provides single-method delegation via the def_delegator and
-# def_delegators methods. For full-class delegation via DelegateClass, see
-# +delegate.rb+.
+# Also, SingleForwardable can be use to Class or Module.
#
+# module Facade
+# extend SingleForwardable
+# def_delegator :Implementation, :service
+#
+# class Implementation
+# def service...
+# end
+# end
+#
+# If you want to use both Forwardable and SingleForwardable, you can
+# use methods def_instance_delegator and def_single_delegator, etc.
+#
+# If the object isn't a Module and Class, You can too extend
+# Forwardable module.
+# printer = String.new
+# printer.extend Forwardable # prepare object for delegation
+# printer.def_delegator "STDOUT", "puts" # add delegation for STDOUT.puts()
+# printer.puts "Howdy!"
+#
+# <i>Prints:</i>
+#
+# Howdy!
+
+#
+# The Forwardable module provides delegation of specified
+# methods to a designated object, using the methods #def_delegator
+# and #def_delegators.
+#
+# For example, say you have a class RecordCollection which
+# contains an array <tt>@records</tt>. You could provide the lookup method
+# #record_number(), which simply calls #[] on the <tt>@records</tt>
+# array, like this:
+#
+# class RecordCollection
+# extend Forwardable
+# def_delegator :@records, :[], :record_number
+# end
+#
+# Further, if you wish to provide the methods #size, #<<, and #map,
+# all of which delegate to @records, this is how you can do it:
+#
+# class RecordCollection
+# # extend Forwardable, but we did that above
+# def_delegators :@records, :size, :<<, :map
+# end
+# f = Foo.new
+# f.printf ...
+# f.gets
+# f.content_at(1)
+#
+# Also see the example at forwardable.rb.
+
module Forwardable
- # Version of +forwardable.rb+
FORWARDABLE_VERSION = "1.1.0"
@debug = nil
class << self
- # If true, <tt>__FILE__</tt> will remain in the backtrace in the event an
- # Exception is raised.
attr_accessor :debug
end
@@ -147,7 +177,7 @@ module Forwardable
# Define +method+ as delegator instance method with an optional
# alias name +ali+. Method calls to +ali+ will be delegated to
- # +accessor.method+.
+ # +accessor.method+.
#
# class MyQueue
# extend Forwardable
@@ -155,7 +185,7 @@ module Forwardable
# def initialize
# @queue = []
# end
- #
+ #
# def_delegator :@queue, :push, :mypush
# end
#
@@ -189,30 +219,9 @@ module Forwardable
alias def_delegator def_instance_delegator
end
-# SingleForwardable can be used to setup delegation at the object level as well.
#
-# printer = String.new
-# printer.extend SingleForwardable # prepare object for delegation
-# printer.def_delegator "STDOUT", "puts" # add delegation for STDOUT.puts()
-# printer.puts "Howdy!"
-#
-# Also, SingleForwardable can be used to set up delegation for a Class or Module.
-#
-# class Implementation
-# def self.service
-# puts "serviced!"
-# end
-# end
-#
-# module Facade
-# extend SingleForwardable
-# def_delegator :Implementation, :service
-# end
+# Usage of The SingleForwardable is like Fowadable module.
#
-# Facade.service #=> serviced!
-#
-# If you want to use both Forwardable and SingleForwardable, you can
-# use methods def_instance_delegator and def_single_delegator, etc.
module SingleForwardable
# Takes a hash as its argument. The key is a symbol or an array of
# symbols. These symbols correspond to method names. The value is
@@ -250,12 +259,11 @@ module SingleForwardable
end
end
- # :call-seq:
- # def_single_delegator(accessor, method, new_name=method)
#
- # Defines a method _method_ which delegates to _accessor_ (i.e. it calls
- # the method of the same name in _accessor_). If _new_name_ is
+ # Defines a method _method_ which delegates to _obj_ (i.e. it calls
+ # the method of the same name in _obj_). If _new_name_ is
# provided, it is used as the name for the delegate method.
+ #
def def_single_delegator(accessor, method, ali = method)
str = %{
def #{ali}(*args, &block)
diff --git a/lib/getoptlong.rb b/lib/getoptlong.rb
index cf635f0438..259382e8ec 100644
--- a/lib/getoptlong.rb
+++ b/lib/getoptlong.rb
@@ -356,7 +356,7 @@ class GetoptLong
#
def terminate
return nil if @status == STATUS_TERMINATED
- raise RuntimeError, "an error has occurred" if @error != nil
+ raise RuntimeError, "an error has occured" if @error != nil
@status = STATUS_TERMINATED
@non_option_arguments.reverse_each do |argument|
diff --git a/lib/gserver.rb b/lib/gserver.rb
index 9877417fa0..f6f37d3a89 100644
--- a/lib/gserver.rb
+++ b/lib/gserver.rb
@@ -3,7 +3,7 @@
#
# Author:: John W. Small
# Documentation:: Gavin Sinclair
-# Licence:: Ruby License
+# Licence:: Freeware.
require "socket"
require "thread"
@@ -37,7 +37,7 @@ require "thread"
# super(port, *args)
# end
# def serve(io)
-# io.puts(Time.now.to_i)
+# io.puts(Time.now.to_s)
# end
# end
#
@@ -144,7 +144,7 @@ class GServer
attr_reader :port
# Host on which to bind, as a String
attr_reader :host
- # Maximum number of connections to accept at a time, as a FixNum
+ # Maximum number of connections to accept at at ime, as a FixNum
attr_reader :maxConnections
# IO Device on which log messages should be written
attr_accessor :stdlog
@@ -156,7 +156,7 @@ class GServer
# Called when a client connects, if auditing is enabled.
#
- # +client+:: a TCPSocket instance representing the client that connected
+ # +client+:: a TCPSocket instances representing the client that connected
#
# Return true to allow this client to connect, false to prevent it.
def connecting(client)
@@ -192,7 +192,7 @@ class GServer
# Called if #debug is true whenever an unhandled exception is raised.
# This implementation simply logs the backtrace.
#
- # +detail+:: the Exception that was caught
+ # +detail+:: The Exception that was caught
def error(detail)
log(detail.backtrace.join("\n"))
end
@@ -212,9 +212,9 @@ class GServer
# Create a new server
#
- # +port+:: the port, as a FixNum, on which to listen
+ # +port+:: the port, as a FixNum, on which to listen.
# +host+:: the host to bind to
- # +maxConnections+:: the maximum number of simultaneous connections to
+ # +maxConnections+:: The maximum number of simultaneous connections to
# accept
# +stdlog+:: IO device on which to log messages
# +audit+:: if true, lifecycle callbacks will be called. See #audit
@@ -261,8 +261,7 @@ class GServer
end
}
client = @tcpServer.accept
- Thread.new(client) { |myClient|
- @connections << Thread.current
+ @connections << Thread.new(client) { |myClient|
begin
myPort = myClient.peeraddr[1]
serve(myClient) if !@audit or connecting(myClient)
diff --git a/lib/ipaddr.rb b/lib/ipaddr.rb
index 13016fcbba..b6bea19832 100644
--- a/lib/ipaddr.rb
+++ b/lib/ipaddr.rb
@@ -82,21 +82,6 @@ class IPAddr
\z
}xi
- # Generic IPAddr related error. Exceptions raised in this class should
- # inherit from Error.
- class Error < ArgumentError; end
-
- # Raised when the provided IP address is an invalid address.
- class InvalidAddressError < Error; end
-
- # Raised when the address family is invalid such as an address with an
- # unsupported family, an address with an inconsistent family, or an address
- # who's family cannot be determined.
- class AddressFamilyError < Error; end
-
- # Raised when the address is an invalid length.
- class InvalidPrefixError < InvalidAddressError; end
-
# Returns the address family of this IP address.
attr_reader :family
@@ -115,7 +100,7 @@ class IPAddr
when 16
s = IN6FORMAT % addr.unpack('n8')
else
- raise AddressFamilyError, "unsupported address family"
+ raise ArgumentError, "unsupported address family"
end
return s
end
@@ -241,7 +226,7 @@ class IPAddr
(@addr >> (112 - 16 * i)) & 0xffff
}.pack('n8')
else
- raise AddressFamilyError, "unsupported address family"
+ raise "unsupported address family"
end
end
@@ -273,7 +258,7 @@ class IPAddr
# into an IPv4-mapped IPv6 address.
def ipv4_mapped
if !ipv4?
- raise InvalidAddressError, "not an IPv4 address"
+ raise ArgumentError, "not an IPv4 address"
end
return self.clone.set(@addr | 0xffff00000000, Socket::AF_INET6)
end
@@ -282,7 +267,7 @@ class IPAddr
# into an IPv4-compatible IPv6 address.
def ipv4_compat
if !ipv4?
- raise InvalidAddressError, "not an IPv4 address"
+ raise ArgumentError, "not an IPv4 address"
end
return self.clone.set(@addr, Socket::AF_INET6)
end
@@ -306,14 +291,14 @@ class IPAddr
when Socket::AF_INET6
return ip6_arpa
else
- raise AddressFamilyError, "unsupported address family"
+ raise "unsupported address family"
end
end
# Returns a string for DNS reverse lookup compatible with RFC3172.
def ip6_arpa
if !ipv6?
- raise InvalidAddressError, "not an IPv6 address"
+ raise ArgumentError, "not an IPv6 address"
end
return _reverse + ".ip6.arpa"
end
@@ -321,7 +306,7 @@ class IPAddr
# Returns a string for DNS reverse lookup compatible with RFC1886.
def ip6_int
if !ipv6?
- raise InvalidAddressError, "not an IPv6 address"
+ raise ArgumentError, "not an IPv6 address"
end
return _reverse + ".ip6.int"
end
@@ -361,7 +346,7 @@ class IPAddr
when Socket::AF_INET6
end_addr = (@addr | (IN6MASK ^ @mask_addr))
else
- raise AddressFamilyError, "unsupported address family"
+ raise "unsupported address family"
end
return clone.set(begin_addr, @family)..clone.set(end_addr, @family)
@@ -376,7 +361,7 @@ class IPAddr
when Socket::AF_INET6
af = "IPv6"
else
- raise AddressFamilyError, "unsupported address family"
+ raise "unsupported address family"
end
return sprintf("#<%s: %s:%s/%s>", self.class.name,
af, _to_string(@addr), _to_string(@mask_addr))
@@ -391,14 +376,14 @@ class IPAddr
case family[0] ? family[0] : @family
when Socket::AF_INET
if addr < 0 || addr > IN4MASK
- raise InvalidAddressError, "invalid address"
+ raise ArgumentError, "invalid address"
end
when Socket::AF_INET6
if addr < 0 || addr > IN6MASK
- raise InvalidAddressError, "invalid address"
+ raise ArgumentError, "invalid address"
end
else
- raise AddressFamilyError, "unsupported address family"
+ raise ArgumentError, "unsupported address family"
end
@addr = addr
if family[0]
@@ -407,7 +392,7 @@ class IPAddr
return self
end
- # Set current netmask to given mask.
+ # Set current netmask to given mask.
def mask!(mask)
if mask.kind_of?(String)
if mask =~ /^\d+$/
@@ -415,7 +400,7 @@ class IPAddr
else
m = IPAddr.new(mask)
if m.family != @family
- raise InvalidPrefixError, "address family is not same"
+ raise ArgumentError, "address family is not same"
end
@mask_addr = m.to_i
@addr &= @mask_addr
@@ -427,18 +412,18 @@ class IPAddr
case @family
when Socket::AF_INET
if prefixlen < 0 || prefixlen > 32
- raise InvalidPrefixError, "invalid length"
+ raise ArgumentError, "invalid length"
end
masklen = 32 - prefixlen
@mask_addr = ((IN4MASK >> masklen) << masklen)
when Socket::AF_INET6
if prefixlen < 0 || prefixlen > 128
- raise InvalidPrefixError, "invalid length"
+ raise ArgumentError, "invalid length"
end
masklen = 128 - prefixlen
@mask_addr = ((IN6MASK >> masklen) << masklen)
else
- raise AddressFamilyError, "unsupported address family"
+ raise "unsupported address family"
end
@addr = ((@addr >> masklen) << masklen)
return self
@@ -472,9 +457,9 @@ class IPAddr
@mask_addr = (family == Socket::AF_INET) ? IN4MASK : IN6MASK
return
when Socket::AF_UNSPEC
- raise AddressFamilyError, "address family must be specified"
+ raise ArgumentError, "address family must be specified"
else
- raise AddressFamilyError, "unsupported address family: #{family}"
+ raise ArgumentError, "unsupported address family: #{family}"
end
end
prefix, prefixlen = addr.split('/')
@@ -497,7 +482,7 @@ class IPAddr
@family = Socket::AF_INET6
end
if family != Socket::AF_UNSPEC && @family != family
- raise AddressFamilyError, "address family mismatch"
+ raise ArgumentError, "address family mismatch"
end
if prefixlen
mask!(prefixlen)
@@ -526,8 +511,8 @@ class IPAddr
octets = m.captures
end
octets.inject(0) { |i, s|
- (n = s.to_i) < 256 or raise InvalidAddressError, "invalid address"
- s.match(/\A0./) and raise InvalidAddressError, "zero-filled number in IPv4 address is ambiguous"
+ (n = s.to_i) < 256 or raise ArgumentError, "invalid address"
+ s.match(/\A0./) and raise ArgumentError, "zero-filled number is ambiguous"
i << 8 | n
}
end
@@ -544,19 +529,18 @@ class IPAddr
right = ''
when RE_IPV6ADDRLIKE_COMPRESSED
if $4
- left.count(':') <= 6 or raise InvalidAddressError, "invalid address"
+ left.count(':') <= 6 or raise ArgumentError, "invalid address"
addr = in_addr($~[4,4])
left = $1
right = $3 + '0:0'
else
- left.count(':') <= ($1.empty? || $2.empty? ? 8 : 7) or
- raise InvalidAddressError, "invalid address"
+ left.count(':') <= 7 or raise ArgumentError, "invalid address"
left = $1
right = $2
addr = 0
end
else
- raise InvalidAddressError, "invalid address"
+ raise ArgumentError, "invalid address"
end
l = left.split(':')
r = right.split(':')
@@ -576,7 +560,7 @@ class IPAddr
when Socket::AF_INET6
return addr & IN6MASK
else
- raise AddressFamilyError, "unsupported address family"
+ raise "unsupported address family"
end
end
@@ -589,7 +573,7 @@ class IPAddr
when Socket::AF_INET6
return ("%.32x" % @addr).reverse!.gsub!(/.(?!$)/, '\&.')
else
- raise AddressFamilyError, "unsupported address family"
+ raise "unsupported address family"
end
end
@@ -602,13 +586,13 @@ class IPAddr
when Socket::AF_INET6
return (("%.32x" % addr).gsub!(/.{4}(?!$)/, '\&:'))
else
- raise AddressFamilyError, "unsupported address family"
+ raise "unsupported address family"
end
end
end
-unless Socket.const_defined? :AF_INET6
+unless Socket.const_defined? "AF_INET6"
class Socket < BasicSocket
# IPv6 protocol family
AF_INET6 = Object.new
@@ -642,7 +626,7 @@ unless Socket.const_defined? :AF_INET6
# Returns a +String+ based representation of a valid DNS hostname,
# IPv4 or IPv6 address.
- #
+ #
# IPSocket.getaddress 'localhost' #=> "::1"
# IPSocket.getaddress 'broadcasthost' #=> "255.255.255.255"
# IPSocket.getaddress 'www.ruby-lang.org' #=> "221.186.184.68"
@@ -672,8 +656,6 @@ class TC_IPAddr < Test::Unit::TestCase
["0:0:0:1::"],
["2001:200:300::/48"],
["2001:200:300::192.168.1.2/48"],
- ["1:2:3:4:5:6:7::"],
- ["::2:3:4:5:6:7:8"],
].each { |args|
assert_nothing_raised {
IPAddr.new(*args)
@@ -730,18 +712,20 @@ class TC_IPAddr < Test::Unit::TestCase
assert_equal("2001:200:300::", IPAddr.new("2001:200:300::/48").to_s)
assert_equal("2001:200:300::", IPAddr.new("[2001:200:300::]/48").to_s)
- assert_equal("1:2:3:4:5:6:7:0", IPAddr.new("1:2:3:4:5:6:7::").to_s)
- assert_equal("0:2:3:4:5:6:7:8", IPAddr.new("::2:3:4:5:6:7:8").to_s)
- assert_raises(IPAddr::InvalidAddressError) { IPAddr.new("192.168.0.256") }
- assert_raises(IPAddr::InvalidAddressError) { IPAddr.new("192.168.0.011") }
- assert_raises(IPAddr::InvalidAddressError) { IPAddr.new("fe80::1%fxp0") }
- assert_raises(IPAddr::InvalidAddressError) { IPAddr.new("[192.168.1.2]/120") }
- assert_raises(IPAddr::InvalidPrefixError) { IPAddr.new("::1/255.255.255.0") }
- assert_raises(IPAddr::InvalidPrefixError) { IPAddr.new("::1/129") }
- assert_raises(IPAddr::InvalidPrefixError) { IPAddr.new("192.168.0.1/33") }
- assert_raises(IPAddr::AddressFamilyError) { IPAddr.new(1) }
- assert_raises(IPAddr::AddressFamilyError) { IPAddr.new("::ffff:192.168.1.2/120", Socket::AF_INET) }
+ [
+ ["192.168.0.256"],
+ ["192.168.0.011"],
+ ["fe80::1%fxp0"],
+ ["::1/255.255.255.0"],
+ [IPAddr.new("::1").to_i],
+ ["::ffff:192.168.1.2/120", Socket::AF_INET],
+ ["[192.168.1.2]/120"],
+ ].each { |args|
+ assert_raises(ArgumentError) {
+ IPAddr.new(*args)
+ }
+ }
end
def test_s_new_ntoh
@@ -802,14 +786,14 @@ class TC_IPAddr < Test::Unit::TestCase
def test_ip6_arpa
assert_equal("f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.5.0.5.0.e.f.f.3.ip6.arpa", IPAddr.new("3ffe:505:2::f").ip6_arpa)
- assert_raises(IPAddr::InvalidAddressError) {
+ assert_raises(ArgumentError) {
IPAddr.new("192.168.2.1").ip6_arpa
}
end
def test_ip6_int
assert_equal("f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.0.5.0.5.0.e.f.f.3.ip6.int", IPAddr.new("3ffe:505:2::f").ip6_int)
- assert_raises(IPAddr::InvalidAddressError) {
+ assert_raises(ArgumentError) {
IPAddr.new("192.168.2.1").ip6_int
}
end
diff --git a/lib/irb.rb b/lib/irb.rb
index 72ebe1bd35..c8fa04c4e5 100644
--- a/lib/irb.rb
+++ b/lib/irb.rb
@@ -21,341 +21,19 @@ require "irb/locale"
STDOUT.sync = true
-# IRB stands for "interactive ruby" and is a tool to interactively execute ruby
-# expressions read from the standard input.
-#
-# The +irb+ command from your shell will start the interpreter.
-#
-# == Usage
-#
-# Use of irb is easy if you know ruby.
-#
-# When executing irb, prompts are displayed as follows. Then, enter the ruby
-# expression. An input is executed when it is syntactically complete.
-#
-# $ irb
-# irb(main):001:0> 1+2
-# #=> 3
-# irb(main):002:0> class Foo
-# irb(main):003:1> def foo
-# irb(main):004:2> print 1
-# irb(main):005:2> end
-# irb(main):006:1> end
-# #=> nil
-#
-# The Readline extension module can be used with irb. Use of Readline is
-# default if it's installed.
-#
-# == Command line options
-#
-# Usage: irb.rb [options] [programfile] [arguments]
-# -f Suppress read of ~/.irbrc
-# -m Bc mode (load mathn, fraction or matrix are available)
-# -d Set $DEBUG to true (same as `ruby -d')
-# -r load-module Same as `ruby -r'
-# -I path Specify $LOAD_PATH directory
-# -U Same as `ruby -U`
-# -E enc Same as `ruby -E`
-# -w Same as `ruby -w`
-# -W[level=2] Same as `ruby -W`
-# --inspect Use `inspect' for output (default except for bc mode)
-# --noinspect Don't use inspect for output
-# --readline Use Readline extension module
-# --noreadline Don't use Readline extension module
-# --prompt prompt-mode
-# --prompt-mode prompt-mode
-# Switch prompt mode. Pre-defined prompt modes are
-# `default', `simple', `xmp' and `inf-ruby'
-# --inf-ruby-mode Use prompt appropriate for inf-ruby-mode on emacs.
-# Suppresses --readline.
-# --simple-prompt Simple prompt mode
-# --noprompt No prompt mode
-# --tracer Display trace for each execution of commands.
-# --back-trace-limit n
-# Display backtrace top n and tail n. The default
-# value is 16.
-# --irb_debug n Set internal debug level to n (not for popular use)
-# -v, --version Print the version of irb
-#
-# == Configuration
-#
-# IRB reads from <code>~/.irbrc</code> when it's invoked.
-#
-# If <code>~/.irbrc</code> doesn't exist, +irb+ will try to read in the following order:
-#
-# * +.irbrc+
-# * +irb.rc+
-# * +_irbrc+
-# * <code>$irbrc</code>
-#
-# The following are alternatives to the command line options. To use them type
-# as follows in an +irb+ session:
-#
-# IRB.conf[:IRB_NAME]="irb"
-# IRB.conf[:MATH_MODE]=false
-# IRB.conf[:INSPECT_MODE]=nil
-# IRB.conf[:IRB_RC] = nil
-# IRB.conf[:BACK_TRACE_LIMIT]=16
-# IRB.conf[:USE_LOADER] = false
-# IRB.conf[:USE_READLINE] = nil
-# IRB.conf[:USE_TRACER] = false
-# IRB.conf[:IGNORE_SIGINT] = true
-# IRB.conf[:IGNORE_EOF] = false
-# IRB.conf[:PROMPT_MODE] = :DEFALUT
-# IRB.conf[:PROMPT] = {...}
-# IRB.conf[:DEBUG_LEVEL]=0
-#
-# === Auto indentation
-#
-# To enable auto-indent mode in irb, add the following to your +.irbrc+:
-#
-# IRB.conf[:AUTO_INDENT] = true
-#
-# === Autocompletion
-#
-# To enable autocompletion for irb, add the following to your +.irbrc+:
-#
-# require 'irb/completion'
-#
-# === History
-#
-# By default, irb disables history and will not store any commands you used.
-#
-# If you want to enable history, add the following to your +.irbrc+:
-#
-# IRB.conf[:SAVE_HISTORY] = 1000
-#
-# This will now store the last 1000 commands in <code>~/.irb_history</code>.
-#
-# See IRB::Context#save_history= for more information.
-#
-# == Customizing the IRB Prompt
-#
-# In order to customize the prompt, you can change the following Hash:
-#
-# IRB.conf[:PROMPT]
-#
-# This example can be used in your +.irbrc+
-#
-# IRB.conf[:PROMPT][:MY_PROMPT] = { # name of prompt mode
-# :AUTO_INDENT => true # enables auto-indent mode
-# :PROMPT_I => nil, # normal prompt
-# :PROMPT_S => nil, # prompt for continuated strings
-# :PROMPT_C => nil, # prompt for continuated statement
-# :RETURN => " ==>%s\n" # format to return value
-# }
-#
-# IRB.conf[:PROMPT_MODE] = :MY_PROMPT
-#
-# Or, invoke irb with the above prompt mode by:
-#
-# irb --prompt my-prompt
-#
-# Constants +PROMPT_I+, +PROMPT_S+ and +PROMPT_C+ specify the format. In the
-# prompt specification, some special strings are available:
-#
-# %N # command name which is running
-# %m # to_s of main object (self)
-# %M # inspect of main object (self)
-# %l # type of string(", ', /, ]), `]' is inner %w[...]
-# %NNi # indent level. NN is degits and means as same as printf("%NNd").
-# # It can be ommited
-# %NNn # line number.
-# %% # %
-#
-# For instance, the default prompt mode is defined as follows:
-#
-# IRB.conf[:PROMPT_MODE][:DEFAULT] = {
-# :PROMPT_I => "%N(%m):%03n:%i> ",
-# :PROMPT_S => "%N(%m):%03n:%i%l ",
-# :PROMPT_C => "%N(%m):%03n:%i* ",
-# :RETURN => "%s\n" # used to printf
-# }
-#
-# irb comes with a number of available modes:
-#
-# # :NULL:
-# # :PROMPT_I:
-# # :PROMPT_N:
-# # :PROMPT_S:
-# # :PROMPT_C:
-# # :RETURN: |
-# # %s
-# # :DEFAULT:
-# # :PROMPT_I: ! '%N(%m):%03n:%i> '
-# # :PROMPT_N: ! '%N(%m):%03n:%i> '
-# # :PROMPT_S: ! '%N(%m):%03n:%i%l '
-# # :PROMPT_C: ! '%N(%m):%03n:%i* '
-# # :RETURN: |
-# # => %s
-# # :CLASSIC:
-# # :PROMPT_I: ! '%N(%m):%03n:%i> '
-# # :PROMPT_N: ! '%N(%m):%03n:%i> '
-# # :PROMPT_S: ! '%N(%m):%03n:%i%l '
-# # :PROMPT_C: ! '%N(%m):%03n:%i* '
-# # :RETURN: |
-# # %s
-# # :SIMPLE:
-# # :PROMPT_I: ! '>> '
-# # :PROMPT_N: ! '>> '
-# # :PROMPT_S:
-# # :PROMPT_C: ! '?> '
-# # :RETURN: |
-# # => %s
-# # :INF_RUBY:
-# # :PROMPT_I: ! '%N(%m):%03n:%i> '
-# # :PROMPT_N:
-# # :PROMPT_S:
-# # :PROMPT_C:
-# # :RETURN: |
-# # %s
-# # :AUTO_INDENT: true
-# # :XMP:
-# # :PROMPT_I:
-# # :PROMPT_N:
-# # :PROMPT_S:
-# # :PROMPT_C:
-# # :RETURN: |2
-# # ==>%s
-#
-# == Restrictions
-#
-# Because irb evaluates input immediately after it is syntactically complete,
-# the results may be slightly different than directly using ruby.
-#
-# == IRB Sessions
-#
-# IRB has a special feature, that allows you to manage many sessions at once.
-#
-# You can create new sessions with Irb.irb, and get a list of current sessions
-# with the +jobs+ command in the prompt.
-#
-# === Commands
-#
-# JobManager provides commands to handle the current sessions:
-#
-# jobs # List of current sessions
-# fg # Switches to the session of the given number
-# kill # Kills the session with the given number
-#
-# The +exit+ command, or ::irb_exit, will quit the current session and call any
-# exit hooks with IRB.irb_at_exit.
-#
-# A few commands for loading files within the session are also available:
-#
-# +source+::
-# Loads a given file in the current session and displays the source lines,
-# see IrbLoader#source_file
-# +irb_load+::
-# Loads the given file similarly to Kernel#load, see IrbLoader#irb_load
-# +irb_require+::
-# Loads the given file similarly to Kernel#require
-#
-# === Configuration
-#
-# The command line options, or IRB.conf, specify the default behavior of
-# Irb.irb.
-#
-# On the other hand, each conf in IRB@Command+line+options is used to
-# individually configure IRB.irb.
-#
-# If a proc is set for IRB.conf[:IRB_RC], its will be invoked after execution
-# of that proc with the context of the current session as its argument. Each
-# session can be configured using this mechanism.
-#
-# === Session variables
-#
-# There are a few variables in every Irb session that can come in handy:
-#
-# <code>_</code>::
-# The value command executed, as a local variable
-# <code>__</code>::
-# The history of evaluated commands
-# <code>__[line_no]</code>::
-# Returns the evaluation value at the given line number, +line_no+.
-# If +line_no+ is a negative, the return value +line_no+ many lines before
-# the most recent return value.
-#
-# === Example using IRB Sessions
-#
-# # invoke a new session
-# irb(main):001:0> irb
-# # list open sessions
-# irb.1(main):001:0> jobs
-# #0->irb on main (#<Thread:0x400fb7e4> : stop)
-# #1->irb#1 on main (#<Thread:0x40125d64> : running)
-#
-# # change the active session
-# irb.1(main):002:0> fg 0
-# # define class Foo in top-level session
-# irb(main):002:0> class Foo;end
-# # invoke a new session with the context of Foo
-# irb(main):003:0> irb Foo
-# # define Foo#foo
-# irb.2(Foo):001:0> def foo
-# irb.2(Foo):002:1> print 1
-# irb.2(Foo):003:1> end
-#
-# # change the active session
-# irb.2(Foo):004:0> fg 0
-# # list open sessions
-# irb(main):004:0> jobs
-# #0->irb on main (#<Thread:0x400fb7e4> : running)
-# #1->irb#1 on main (#<Thread:0x40125d64> : stop)
-# #2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
-# # check if Foo#foo is available
-# irb(main):005:0> Foo.instance_methods #=> [:foo, ...]
-#
-# # change the active sesssion
-# irb(main):006:0> fg 2
-# # define Foo#bar in the context of Foo
-# irb.2(Foo):005:0> def bar
-# irb.2(Foo):006:1> print "bar"
-# irb.2(Foo):007:1> end
-# irb.2(Foo):010:0> Foo.instance_methods #=> [:bar, :foo, ...]
-#
-# # change the active session
-# irb.2(Foo):011:0> fg 0
-# irb(main):007:0> f = Foo.new #=> #<Foo:0x4010af3c>
-# # invoke a new session with the context of f (instance of Foo)
-# irb(main):008:0> irb f
-# # list open sessions
-# irb.3(<Foo:0x4010af3c>):001:0> jobs
-# #0->irb on main (#<Thread:0x400fb7e4> : stop)
-# #1->irb#1 on main (#<Thread:0x40125d64> : stop)
-# #2->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
-# #3->irb#3 on #<Foo:0x4010af3c> (#<Thread:0x4010a1e0> : running)
-# # evaluate f.foo
-# irb.3(<Foo:0x4010af3c>):002:0> foo #=> 1 => nil
-# # evaluate f.bar
-# irb.3(<Foo:0x4010af3c>):003:0> bar #=> bar => nil
-# # kill jobs 1, 2, and 3
-# irb.3(<Foo:0x4010af3c>):004:0> kill 1, 2, 3
-# # list open sesssions, should only include main session
-# irb(main):009:0> jobs
-# #0->irb on main (#<Thread:0x400fb7e4> : running)
-# # quit irb
-# irb(main):010:0> exit
module IRB
@RCS_ID='-$Id$-'
- # An exception raised by IRB.irb_abort
class Abort < Exception;end
+ #
@CONF = {}
-
- # Displays current configuration.
- #
- # Modifing the configuration is achieved by sending a message to IRB.conf.
- #
- # See IRB@Configuration for more information.
def IRB.conf
@CONF
end
- # Returns the current version of IRB, including release version and last
- # updated date.
+ # IRB version method
def IRB.version
if v = @CONF[:VERSION] then return v end
@@ -364,16 +42,11 @@ module IRB
@CONF[:VERSION] = format("irb %s(%s)", rv, @LAST_UPDATE_DATE)
end
- # The current IRB::Context of the session, see IRB.conf
- #
- # irb
- # irb(main):001:0> IRB.CurrentContext.irb_name = "foo"
- # foo(main):002:0> IRB.conf[:MAIN_CONTEXT].irb_name #=> "foo"
def IRB.CurrentContext
IRB.conf[:MAIN_CONTEXT]
end
- # Initializes IRB and creates a new Irb.irb object at the +TOPLEVEL_BINDING+
+ # initialize IRB and start TOP_LEVEL irb
def IRB.start(ap_path = nil)
$0 = File::basename(ap_path, ".rb") if ap_path
@@ -402,19 +75,14 @@ module IRB
# print "\n"
end
- # Calls each event hook of IRB.conf[:AT_EXIT] when the current session quits.
def IRB.irb_at_exit
@CONF[:AT_EXIT].each{|hook| hook.call}
end
- # Quits irb
def IRB.irb_exit(irb, ret)
throw :IRB_EXIT, ret
end
- # Aborts then interrupts irb.
- #
- # Will raise an Abort exception, or the given +exception+.
def IRB.irb_abort(irb, exception = Abort)
if defined? Thread
irb.context.thread.raise exception, "abort then interrupt!"
@@ -423,8 +91,10 @@ module IRB
end
end
+ #
+ # irb interpreter main routine
+ #
class Irb
- # Creates a new irb session
def initialize(workspace = nil, input_method = nil, output_method = nil)
@context = Context.new(self, workspace, input_method, output_method)
@context.main.extend ExtendCommandBundle
@@ -433,12 +103,9 @@ module IRB
@scanner = RubyLex.new
@scanner.exception_on_syntax_error = false
end
- # Returns the current context of this irb session
attr_reader :context
- # The lexer used by this irb session
attr_accessor :scanner
- # Evaluates input for this session.
def eval_input
@scanner.set_prompt do
|ltype, indent, continue, line_no|
@@ -472,7 +139,7 @@ module IRB
if l = @context.io.gets
print l if @context.verbose?
else
- if @context.ignore_eof? and @context.io.readable_after_eof?
+ if @context.ignore_eof? and @context.io.readable_atfer_eof?
l = "\n"
if @context.verbose?
printf "Use \"exit\" to leave %s\n", @context.ap_name
@@ -537,11 +204,6 @@ module IRB
end
end
- # Evaluates the given block using the given +path+ as the Context#irb_path
- # and +name+ as the Context#irb_name.
- #
- # Used by the irb command +source+, see IRB@IRB+Sessions for more
- # information.
def suspend_name(path = nil, name = nil)
@context.irb_path, back_path = path, @context.irb_path if path
@context.irb_name, back_name = name, @context.irb_name if name
@@ -553,11 +215,6 @@ module IRB
end
end
- # Evaluates the given block using the given +workspace+ as the
- # Context#workspace.
- #
- # Used by the irb command +irb_load+, see IRB@IRB+Sessions for more
- # information.
def suspend_workspace(workspace)
@context.workspace, back_workspace = workspace, @context.workspace
begin
@@ -567,11 +224,6 @@ module IRB
end
end
- # Evaluates the given block using the given +input_method+ as the
- # Context#io.
- #
- # Used by the irb commands +source+ and +irb_load+, see IRB@IRB+Sessions
- # for more information.
def suspend_input_method(input_method)
back_io = @context.io
@context.instance_eval{@io = input_method}
@@ -582,7 +234,6 @@ module IRB
end
end
- # Evaluates the given block using the given +context+ as the Context.
def suspend_context(context)
@context, back_context = context, @context
begin
@@ -592,7 +243,6 @@ module IRB
end
end
- # Handler for the signal SIGINT, see Kernel#trap for more information.
def signal_handle
unless @context.ignore_sigint?
print "\nabort!\n" if @context.verbose?
@@ -614,7 +264,6 @@ module IRB
end
end
- # Evaluates the given block using the given +status+.
def signal_status(status)
return yield if @signal_status == :IN_LOAD
@@ -627,7 +276,7 @@ module IRB
end
end
- def prompt(prompt, ltype, indent, line_no) # :nodoc:
+ def prompt(prompt, ltype, indent, line_no)
p = prompt.dup
p.gsub!(/%([0-9]+)?([a-zA-Z])/) do
case $2
@@ -658,12 +307,10 @@ module IRB
p
end
- def output_value # :nodoc:
+ def output_value
printf @context.return_format, @context.inspect_last_value
end
- # Outputs the local variables to this current session, including
- # #signal_status and #context, using IRB::Locale.
def inspect
ary = []
for iv in instance_variables
@@ -680,6 +327,7 @@ module IRB
end
end
+ # Singleton method
def @CONF.inspect
IRB.version unless self[:VERSION]
diff --git a/lib/irb/cmd/chws.rb b/lib/irb/cmd/chws.rb
index 1889e75d5e..65c977016b 100644
--- a/lib/irb/cmd/chws.rb
+++ b/lib/irb/cmd/chws.rb
@@ -12,7 +12,6 @@
require "irb/cmd/nop.rb"
require "irb/ext/change-ws.rb"
-# :stopdoc:
module IRB
module ExtendCommand
@@ -30,4 +29,4 @@ module IRB
end
end
end
-# :startdoc:
+
diff --git a/lib/irb/cmd/fork.rb b/lib/irb/cmd/fork.rb
index fbe5126c85..c2664626ae 100644
--- a/lib/irb/cmd/fork.rb
+++ b/lib/irb/cmd/fork.rb
@@ -11,11 +11,11 @@
@RCS_ID='-$Id$-'
-# :stopdoc:
+
module IRB
module ExtendCommand
class Fork<Nop
- def execute
+ def execute(&block)
pid = send ExtendCommand.irb_original_method_name("fork")
unless pid
class << self
@@ -34,6 +34,5 @@ module IRB
end
end
end
-# :startdoc:
diff --git a/lib/irb/cmd/help.rb b/lib/irb/cmd/help.rb
index 76e299fc20..67cf89990b 100644
--- a/lib/irb/cmd/help.rb
+++ b/lib/irb/cmd/help.rb
@@ -12,7 +12,6 @@ require 'rdoc/ri/driver'
require "irb/cmd/nop.rb"
-# :stopdoc:
module IRB
module ExtendCommand
class Help<Nop
@@ -38,4 +37,3 @@ module IRB
end
end
end
-# :startdoc:
diff --git a/lib/irb/cmd/load.rb b/lib/irb/cmd/load.rb
index 6c9e9f67ce..2a6de21ed7 100644
--- a/lib/irb/cmd/load.rb
+++ b/lib/irb/cmd/load.rb
@@ -12,7 +12,6 @@
require "irb/cmd/nop.rb"
require "irb/ext/loader"
-# :stopdoc:
module IRB
module ExtendCommand
class Load<Nop
@@ -65,4 +64,3 @@ module IRB
end
end
-# :startdoc:
diff --git a/lib/irb/cmd/nop.rb b/lib/irb/cmd/nop.rb
index 7bd443121e..2b028975c8 100644
--- a/lib/irb/cmd/nop.rb
+++ b/lib/irb/cmd/nop.rb
@@ -8,7 +8,6 @@
#
#
#
-# :stopdoc:
module IRB
module ExtendCommand
class Nop
@@ -36,4 +35,4 @@ module IRB
end
end
end
-# :startdoc:
+
diff --git a/lib/irb/cmd/pushws.rb b/lib/irb/cmd/pushws.rb
index cee8538e3e..5fd567731c 100644
--- a/lib/irb/cmd/pushws.rb
+++ b/lib/irb/cmd/pushws.rb
@@ -12,7 +12,6 @@
require "irb/cmd/nop.rb"
require "irb/ext/workspaces.rb"
-# :stopdoc:
module IRB
module ExtendCommand
class Workspaces<Nop
@@ -36,5 +35,4 @@ module IRB
end
end
end
-# :startdoc:
diff --git a/lib/irb/cmd/subirb.rb b/lib/irb/cmd/subirb.rb
index 7363d64769..4d54a72b6f 100644
--- a/lib/irb/cmd/subirb.rb
+++ b/lib/irb/cmd/subirb.rb
@@ -11,7 +11,6 @@
require "irb/cmd/nop.rb"
require "irb/ext/multi-irb"
-# :stopdoc:
module IRB
module ExtendCommand
class IrbCommand<Nop
@@ -39,4 +38,3 @@ module IRB
end
end
end
-# :startdoc:
diff --git a/lib/irb/completion.rb b/lib/irb/completion.rb
index 3be0610c6e..7fd69a0a09 100644
--- a/lib/irb/completion.rb
+++ b/lib/irb/completion.rb
@@ -9,12 +9,10 @@
require "readline"
module IRB
- module InputCompletor # :nodoc:
+ module InputCompletor
@RCS_ID='-$Id$-'
- # Set of reserved words used by Ruby, you should not use these for
- # constants or variables
ReservedWords = [
"BEGIN", "END",
"alias", "and",
@@ -44,7 +42,7 @@ module IRB
when /^((["'`]).*\2)\.([^.]*)$/
# String
receiver = $1
- message = Regexp.quote($3)
+ message = $3
candidates = String.instance_methods.collect{|m| m.to_s}
select_message(receiver, message, candidates)
@@ -79,7 +77,7 @@ module IRB
if Symbol.respond_to?(:all_symbols)
sym = $1
candidates = Symbol.all_symbols.collect{|s| ":" + s.id2name}
- candidates.grep(/^#{Regexp.quote(sym)}/)
+ candidates.grep(/^#{sym}/)
else
[]
end
@@ -154,10 +152,9 @@ module IRB
gv = eval("global_variables", bind).collect{|m| m.to_s}
lv = eval("local_variables", bind).collect{|m| m.to_s}
- iv = eval("instance_variables", bind).collect{|m| m.to_s}
cv = eval("self.class.constants", bind).collect{|m| m.to_s}
- if (gv | lv | iv | cv).include?(receiver) or /^[A-Z]/ =~ receiver && /\./ !~ receiver
+ if (gv | lv | cv).include?(receiver) or /^[A-Z]/ =~ receiver && /\./ !~ receiver
# foo.func and foo is var. OR
# foo::func and foo is var. OR
# foo::Const and foo is var. OR
@@ -204,13 +201,12 @@ module IRB
select_message(receiver, message, candidates)
else
- candidates = eval("methods | private_methods | local_variables | instance_variables | self.class.constants", bind).collect{|m| m.to_s}
+ candidates = eval("methods | private_methods | local_variables | self.class.constants", bind).collect{|m| m.to_s}
(candidates|ReservedWords).grep(/^#{Regexp.quote(input)}/)
end
}
- # Set of available operators in Ruby
Operators = ["%", "&", "*", "**", "+", "-", "/",
"<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", ">>",
"[]", "[]=", "^", "!", "!=", "!~"]
diff --git a/lib/irb/context.rb b/lib/irb/context.rb
index 72b36307d5..61b519170d 100644
--- a/lib/irb/context.rb
+++ b/lib/irb/context.rb
@@ -12,16 +12,13 @@ require "irb/workspace"
require "irb/inspector"
module IRB
- # A class that wraps the current state of the irb session, including the
- # configuration of IRB.conf.
class Context
- # Creates a new IRB context.
#
- # The optional +input_method+ argument:
+ # Arguments:
+ # input_method: nil -- stdin or readline
+ # String -- File
+ # other -- using this as InputMethod
#
- # +nil+:: uses stdin or Readline
- # +String+:: uses a File
- # +other+:: uses this as InputMethod
def initialize(irb, workspace = nil, input_method = nil, output_method = nil)
@irb = irb
if workspace
@@ -54,10 +51,10 @@ module IRB
self.prompt_mode = IRB.conf[:PROMPT_MODE]
- if IRB.conf[:SINGLE_IRB] or !defined?(IRB::JobManager)
+ if IRB.conf[:SINGLE_IRB] or !defined?(JobManager)
@irb_name = IRB.conf[:IRB_NAME]
else
- @irb_name = IRB.conf[:IRB_NAME]+"#"+IRB.JobManager.n_jobs.to_s
+ @irb_name = "irb#"+IRB.JobManager.n_jobs.to_s
end
@irb_path = "(" + @irb_name + ")"
@@ -100,139 +97,50 @@ module IRB
if @echo.nil?
@echo = true
end
- self.debug_level = IRB.conf[:DEBUG_LEVEL]
+ @debug_level = IRB.conf[:DEBUG_LEVEL]
end
- # The top-level workspace, see WorkSpace#main
def main
@workspace.main
end
- # The toplevel workspace, see #home_workspace
attr_reader :workspace_home
- # WorkSpace in the current context
attr_accessor :workspace
- # The current thread in this context
attr_reader :thread
- # The current input method
- #
- # Can be either StdioInputMethod, ReadlineInputMethod, FileInputMethod or
- # other specified when the context is created. See ::new for more
- # information on +input_method+.
attr_accessor :io
- # Current irb session
attr_accessor :irb
- # A copy of the default <code>IRB.conf[:AP_NAME]</code>
attr_accessor :ap_name
- # A copy of the default <code>IRB.conf[:RC]</code>
attr_accessor :rc
- # A copy of the default <code>IRB.conf[:LOAD_MODULES]</code>
attr_accessor :load_modules
- # Can be either name from <code>IRB.conf[:IRB_NAME]</code>, or the number of
- # the current job set by JobManager, such as <code>irb#2</code>
attr_accessor :irb_name
- # Can be either the #irb_name surrounded by parenthesis, or the
- # +input_method+ passed to Context.new
attr_accessor :irb_path
- # Whether +Readline+ is enabled or not.
- #
- # A copy of the default <code>IRB.conf[:USE_READLINE]</code>
- #
- # See #use_readline= for more information.
attr_reader :use_readline
- # A copy of the default <code>IRB.conf[:INSPECT_MODE]</code>
attr_reader :inspect_mode
- # A copy of the default <code>IRB.conf[:PROMPT_MODE]</code>
attr_reader :prompt_mode
- # Standard IRB prompt
- #
- # See IRB@Customizing+the+IRB+Prompt for more information.
attr_accessor :prompt_i
- # IRB prompt for continuated strings
- #
- # See IRB@Customizing+the+IRB+Prompt for more information.
attr_accessor :prompt_s
- # IRB prompt for continuated statement (e.g. immediately after an +if+)
- #
- # See IRB@Customizing+the+IRB+Prompt for more information.
attr_accessor :prompt_c
- # See IRB@Customizing+the+IRB+Prompt for more information.
attr_accessor :prompt_n
- # Can be either the default <code>IRB.conf[:AUTO_INDENT]</code>, or the
- # mode set by #prompt_mode=
- #
- # To enable auto-indentation in irb:
- #
- # IRB.conf[:AUTO_INDENT] = true
- #
- # or
- #
- # irb_context.auto_indent_mode = true
- #
- # or
- #
- # IRB.CurrentContext.auto_indent_mode = true
- #
- # See IRB@Configuration for more information.
attr_accessor :auto_indent_mode
- # The format of the return statement, set by #prompt_mode= using the
- # +:RETURN+ of the +mode+ passed to set the current #prompt_mode.
attr_accessor :return_format
- # Whether <code>^C</code> (+control-c+) will be ignored or not.
- #
- # If set to +false+, <code>^C</code> will quit irb.
- #
- # If set to +true+,
- #
- # * during input: cancel input then return to top level.
- # * during execute: abandon current execution.
attr_accessor :ignore_sigint
- # Whether <code>^D</code> (+control-d+) will be ignored or not.
- #
- # If set to +false+, <code>^D</code> will quit irb.
attr_accessor :ignore_eof
- # Whether to echo the return value to output or not.
- #
- # Uses IRB.conf[:ECHO] if available, or defaults to +true+.
- #
- # puts "hello"
- # # hello
- # #=> nil
- # IRB.CurrentContext.echo = false
- # puts "omg"
- # # omg
attr_accessor :echo
- # Whether verbose messages are displayed or not.
- #
- # A copy of the default <code>IRB.conf[:VERBOSE]</code>
attr_accessor :verbose
- # The debug level of irb
- #
- # See #debug_level= for more information.
attr_reader :debug_level
- # The limit of backtrace lines displayed as top +n+ and tail +n+.
- #
- # The default value is 16.
- #
- # Can also be set using the +--back-trace-limit+ command line option.
- #
- # See IRB@Command+line+options for more command line options.
attr_accessor :back_trace_limit
- # Alias for #use_readline
alias use_readline? use_readline
- # Alias for #rc
alias rc? rc
alias ignore_sigint? ignore_sigint
alias ignore_eof? ignore_eof
alias echo? echo
- # Returns whether messages are displayed or not.
def verbose?
if @verbose.nil?
if defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod)
@@ -247,26 +155,18 @@ module IRB
end
end
- # Whether #verbose? is +true+, and +input_method+ is either
- # StdioInputMethod or ReadlineInputMethod, see #io for more information.
def prompting?
verbose? || (STDIN.tty? && @io.kind_of?(StdioInputMethod) ||
(defined?(ReadlineInputMethod) && @io.kind_of?(ReadlineInputMethod)))
end
- # The return value of the last statement evaluated.
attr_reader :last_value
- # Sets the return value from the last statement evaluated in this context
- # to #last_value.
def set_last_value(value)
@last_value = value
@workspace.evaluate self, "_ = IRB.CurrentContext.last_value"
end
- # Sets the +mode+ of the prompt in this context.
- #
- # See IRB@Customizing+the+IRB+Prompt for more information.
def prompt_mode=(mode)
@prompt_mode = mode
pconf = IRB.conf[:PROMPT][mode]
@@ -282,42 +182,26 @@ module IRB
end
end
- # Whether #inspect_mode is set or not, see #inspect_mode= for more detail.
def inspect?
@inspect_mode.nil? or @inspect_mode
end
- # Whether #io uses a File for the +input_method+ passed when creating the
- # current context, see ::new
def file_input?
@io.class == FileInputMethod
end
- # Specifies the inspect mode with +opt+:
- #
- # +true+:: display +inspect+
- # +false+:: display +to_s+
- # +nil+:: inspect mode in non-math mode,
- # non-inspect mode in math mode
- #
- # See IRB::Inspector for more information.
- #
- # Can also be set using the +--inspect+ and +--noinspect+ command line
- # options.
- #
- # See IRB@Command+line+options for more command line options.
def inspect_mode=(opt)
- if i = Inspector::INSPECTORS[opt]
+ if i = INSPECTORS[opt]
@inspect_mode = opt
@inspect_method = i
i.init
else
case opt
when nil
- if Inspector.keys_with_inspector(Inspector::INSPECTORS[true]).include?(@inspect_mode)
+ if INSPECTORS.keys_with_inspector(INSPECTORS[true]).include?(@inspect_mode)
self.inspect_mode = false
- elsif Inspector.keys_with_inspector(Inspector::INSPECTORS[false]).include?(@inspect_mode)
+ elsif INSPECTORS.keys_with_inspector(INSPECTORS[false]).include?(@inspect_mode)
self.inspect_mode = true
else
puts "Can't switch inspect mode."
@@ -336,10 +220,10 @@ module IRB
when Inspector
prefix = "usr%d"
i = 1
- while Inspector::INSPECTORS[format(prefix, i)]; i += 1; end
+ while INSPECTORS[format(prefix, i)]; i += 1; end
@inspect_mode = format(prefix, i)
@inspect_method = opt
- Inspector.def_inspector(format(prefix, i), @inspect_method)
+ INSPECTORS.def_inspector(format(prefix, i), @inspect_method)
else
puts "Can't switch inspect mode(#{opt})."
return
@@ -349,55 +233,44 @@ module IRB
@inspect_mode
end
- # Obsolete method.
- #
- # Can be set using the +--noreadline+ and +--readline+ command line
- # options.
- #
- # See IRB@Command+line+options for more command line options.
+
def use_readline=(opt)
- print "This method is obsolete."
- print "Do nothing."
+ @use_readline = opt
+ print "use readline module\n" if @use_readline
end
- # Sets the debug level of irb
- #
- # Can also be set using the +--irb_debug+ command line option.
- #
- # See IRB@Command+line+options for more command line options.
def debug_level=(value)
@debug_level = value
RubyLex.debug_level = value
+ SLex.debug_level = value
end
- # Whether or not debug mode is enabled, see #debug_level=.
def debug?
@debug_level > 0
end
- def evaluate(line, line_no) # :nodoc:
+ def evaluate(line, line_no)
@line_no = line_no
set_last_value(@workspace.evaluate(self, line, irb_path, line_no))
# @workspace.evaluate("_ = IRB.conf[:MAIN_CONTEXT]._")
# @_ = @workspace.evaluate(line, irb_path, line_no)
end
- def inspect_last_value # :nodoc:
+ def inspect_last_value
@inspect_method.inspect_value(@last_value)
end
alias __exit__ exit
- # Exits the current session, see IRB.irb_exit
def exit(ret = 0)
IRB.irb_exit(@irb, ret)
end
- NOPRINTING_IVARS = ["@last_value"] # :nodoc:
- NO_INSPECTING_IVARS = ["@irb", "@io"] # :nodoc:
- IDNAME_IVARS = ["@prompt_mode"] # :nodoc:
+ NOPRINTING_IVARS = ["@last_value"]
+ NO_INSPECTING_IVARS = ["@irb", "@io"]
+ IDNAME_IVARS = ["@prompt_mode"]
alias __inspect__ inspect
- def inspect # :nodoc:
+ def inspect
array = []
for ivar in instance_variables.sort{|e1, e2| e1 <=> e2}
ivar = ivar.to_s
diff --git a/lib/irb/ext/change-ws.rb b/lib/irb/ext/change-ws.rb
index ce921eb5e3..dea969d384 100644
--- a/lib/irb/ext/change-ws.rb
+++ b/lib/irb/ext/change-ws.rb
@@ -9,10 +9,9 @@
#
#
-module IRB # :nodoc:
+module IRB
class Context
- # Inherited from +TOPLEVEL_BINDING+.
def home_workspace
if defined? @home_workspace
@home_workspace
@@ -21,13 +20,6 @@ module IRB # :nodoc:
end
end
- # Changes the current workspace to given object or binding.
- #
- # If the optional argument is omitted, the workspace will be
- # #home_workspace which is inherited from +TOPLEVEL_BINDING+ or the main
- # object, <code>IRB.conf[:MAIN_CONTEXT]</code> when irb was initialized.
- #
- # See IRB::WorkSpace.new for more information.
def change_workspace(*_main)
if _main.empty?
@workspace = home_workspace
diff --git a/lib/irb/ext/history.rb b/lib/irb/ext/history.rb
index 3239c57a6c..1495f9eb14 100644
--- a/lib/irb/ext/history.rb
+++ b/lib/irb/ext/history.rb
@@ -9,13 +9,12 @@
#
#
-module IRB # :nodoc:
+module IRB
class Context
NOPRINTING_IVARS.push "@eval_history_values"
- # See #set_last_value
alias _set_last_value set_last_value
def set_last_value(value)
@@ -30,17 +29,7 @@ module IRB # :nodoc:
@last_value
end
- # The command result history limit.
attr_reader :eval_history
- # Sets command result history limit.
- #
- # +no+ is an Integer or +nil+.
- #
- # Returns +no+ of history items if greater than 0.
- #
- # If +no+ is 0, the number of history items is unlimited.
- #
- # If +no+ is +nil+, execution result history isn't used (default).
def eval_history=(no)
if no
if defined?(@eval_history) && @eval_history
@@ -58,7 +47,7 @@ module IRB # :nodoc:
end
end
- class History # :nodoc:
+ class History
@RCS_ID='-$Id$-'
def initialize(size = 16)
diff --git a/lib/irb/ext/loader.rb b/lib/irb/ext/loader.rb
index 6cdc8ec898..26a3203676 100644
--- a/lib/irb/ext/loader.rb
+++ b/lib/irb/ext/loader.rb
@@ -10,20 +10,15 @@
#
-module IRB # :nodoc:
- # Raised in the event of an exception in a file loaded from an Irb session
+module IRB
class LoadAbort < Exception;end
- # Provides a few commands for loading files within an irb session.
- #
- # See ExtendCommandBundle for more information.
module IrbLoader
@RCS_ID='-$Id$-'
alias ruby_load load
alias ruby_require require
- # Loads the given file similarly to Kernel#load
def irb_load(fn, priv = nil)
path = search_file_from_ruby_path(fn)
raise LoadError, "No such file to load -- #{fn}" unless path
@@ -31,7 +26,7 @@ module IRB # :nodoc:
load_file(path, priv)
end
- def search_file_from_ruby_path(fn) # :nodoc:
+ def search_file_from_ruby_path(fn)
if /^#{Regexp.quote(File::Separator)}/ =~ fn
return fn if File.exist?(fn)
return nil
@@ -45,9 +40,6 @@ module IRB # :nodoc:
return nil
end
- # Loads a given file in the current session and displays the source lines
- #
- # See Irb#suspend_input_method for more information.
def source_file(path)
irb.suspend_name(path, File.basename(path)) do
irb.suspend_input_method(FileInputMethod.new(path)) do
@@ -67,9 +59,6 @@ module IRB # :nodoc:
end
end
- # Loads the given file in the current session's context and evaluates it.
- #
- # See Irb#suspend_input_method for more information.
def load_file(path, priv = nil)
irb.suspend_name(path, File.basename(path)) do
@@ -98,7 +87,7 @@ module IRB # :nodoc:
end
end
- def old # :nodoc:
+ def old
back_io = @io
back_path = @irb_path
back_name = @irb_name
diff --git a/lib/irb/ext/math-mode.rb b/lib/irb/ext/math-mode.rb
index 067eb1e7fa..41be79841c 100644
--- a/lib/irb/ext/math-mode.rb
+++ b/lib/irb/ext/math-mode.rb
@@ -12,22 +12,11 @@ require "mathn"
module IRB
class Context
- # Returns whether bc mode is enabled.
- #
- # See #math_mode=
attr_reader :math_mode
- # Alias for #math_mode
alias math? math_mode
- # Sets bc mode, which loads +lib/mathn.rb+ so fractions or matrix are
- # available.
- #
- # Also available as the +-m+ command line option.
- #
- # See IRB@Command+line+options and the unix manpage <code>bc(1)</code> for
- # more information.
def math_mode=(opt)
- if @math_mode == true && !opt
+ if @math_mode == true && opt == false
IRB.fail CantReturnToNormalMode
return
end
diff --git a/lib/irb/ext/multi-irb.rb b/lib/irb/ext/multi-irb.rb
index e49a158fa3..a8475b75cd 100644
--- a/lib/irb/ext/multi-irb.rb
+++ b/lib/irb/ext/multi-irb.rb
@@ -12,61 +12,44 @@ IRB.fail CantShiftToMultiIrbMode unless defined?(Thread)
require "thread"
module IRB
+ # job management class
class JobManager
@RCS_ID='-$Id$-'
- # Creates a new JobManager object
def initialize
# @jobs = [[thread, irb],...]
@jobs = []
@current_job = nil
end
- # The active irb session
attr_accessor :current_job
- # The total number of irb sessions, used to set +irb_name+ of the current
- # Context.
def n_jobs
@jobs.size
end
- # Returns the thread for the given +key+ object, see #search for more
- # information.
def thread(key)
th, = search(key)
th
end
- # Returns the irb session for the given +key+ object, see #search for more
- # information.
def irb(key)
_, irb = search(key)
irb
end
- # Returns the top level thread.
def main_thread
@jobs[0][0]
end
- # Returns the top level irb session.
def main_irb
@jobs[0][1]
end
- # Add the given +irb+ session to the jobs Array.
def insert(irb)
@jobs.push [Thread.current, irb]
end
- # Changes the current active irb session to the given +key+ in the jobs
- # Array.
- #
- # Raises an IrbAlreadyDead exception if the given +key+ is no longer alive.
- #
- # If the given irb session is already active, an IrbSwitchedToCurrentThread
- # exception is raised.
def switch(key)
th, irb = search(key)
IRB.fail IrbAlreadyDead unless th.alive?
@@ -77,12 +60,6 @@ module IRB
@current_job = irb(Thread.current)
end
- # Terminates the irb sessions specified by the given +keys+.
- #
- # Raises an IrbAlreadyDead exception if one of the given +keys+ is already
- # terminated.
- #
- # See Thread#exit for more information.
def kill(*keys)
for key in keys
th, _ = search(key)
@@ -91,20 +68,6 @@ module IRB
end
end
- # Returns the associated job for the given +key+.
- #
- # If given an Integer, it will return the +key+ index for the jobs Array.
- #
- # When an instance of Irb is given, it will return the irb session
- # associated with +key+.
- #
- # If given an instance of Thread, it will return the associated thread
- # +key+ using Object#=== on the jobs Array.
- #
- # Otherwise returns the irb session with the same top-level binding as the
- # given +key+.
- #
- # Raises a NoSuchJob exception if no job can be found with the given +key+.
def search(key)
job = case key
when Integer
@@ -120,7 +83,6 @@ module IRB
job
end
- # Deletes the job at the given +key+.
def delete(key)
case key
when Integer
@@ -144,7 +106,6 @@ module IRB
@jobs.push assoc
end
- # Outputs a list of jobs, see the irb command +irb_jobs+, or +jobs+.
def inspect
ary = []
@jobs.each_index do
@@ -174,20 +135,15 @@ module IRB
@JobManager = JobManager.new
- # The current JobManager in the session
def IRB.JobManager
@JobManager
end
- # The current Context in this session
def IRB.CurrentContext
IRB.JobManager.irb(Thread.current).context
end
- # Creates a new IRB session, see Irb.new.
- #
- # The optional +file+ argument is given to Context.new, along with the
- # workspace created with the remaining arguments, see WorkSpace.new
+ # invoke multi-irb
def IRB.irb(file = nil, *main)
workspace = WorkSpace.new(*main)
parent_thread = Thread.current
diff --git a/lib/irb/ext/save-history.rb b/lib/irb/ext/save-history.rb
index 7b3fcbbeec..f9c983ac11 100644
--- a/lib/irb/ext/save-history.rb
+++ b/lib/irb/ext/save-history.rb
@@ -11,31 +11,21 @@
require "readline"
module IRB
- module HistorySavingAbility # :nodoc:
+ module HistorySavingAbility
@RCS_ID='-$Id$-'
end
class Context
- def init_save_history# :nodoc:
+ def init_save_history
unless (class<<@io;self;end).include?(HistorySavingAbility)
@io.extend(HistorySavingAbility)
end
end
- # A copy of the default <code>IRB.conf[:SAVE_HISTORY]</code>
def save_history
IRB.conf[:SAVE_HISTORY]
end
- # Sets <code>IRB.conf[:SAVE_HISTORY]</code> to the given +val+ and calls
- # #init_save_history with this context.
- #
- # Will store the number of +val+ entries of history in the #history_file
- #
- # Add the following to your +.irbrc+ to change the number of history
- # entries stored to 1000:
- #
- # IRB.conf[:SAVE_HISTORY] = 1000
def save_history=(val)
IRB.conf[:SAVE_HISTORY] = val
if val
@@ -45,18 +35,16 @@ module IRB
end
end
- # A copy of the default <code>IRB.conf[:HISTORY_FILE]</code>
def history_file
IRB.conf[:HISTORY_FILE]
end
- # Set <code>IRB.conf[:HISTORY_FILE]</code> to the given +hist+.
def history_file=(hist)
IRB.conf[:HISTORY_FILE] = hist
end
end
- module HistorySavingAbility # :nodoc:
+ module HistorySavingAbility
include Readline
# def HistorySavingAbility.create_finalizer
@@ -99,18 +87,7 @@ module IRB
history_file = File.expand_path(history_file)
end
history_file = IRB.rc_file("_history") unless history_file
-
- # Change the permission of a file that already exists[BUG #7694]
- begin
- if File.stat(history_file).mode & 066 != 0
- File.chmod(0600, history_file)
- end
- rescue Errno::ENOENT
- rescue
- raise
- end
-
- open(history_file, 'w', 0600 ) do |f|
+ open(history_file, 'w' ) do |f|
hist = HISTORY.to_a
f.puts(hist[-num..-1] || hist)
end
diff --git a/lib/irb/ext/tracer.rb b/lib/irb/ext/tracer.rb
index 8c9083dbad..46a9d53a2e 100644
--- a/lib/irb/ext/tracer.rb
+++ b/lib/irb/ext/tracer.rb
@@ -23,16 +23,9 @@ module IRB
end
class Context
- # Whether Tracer is used when evaluating statements in this context.
- #
- # See +lib/tracer.rb+ for more information.
attr_reader :use_tracer
alias use_tracer? use_tracer
- # Sets whether or not to use the Tracer library when evaluating statements
- # in this context.
- #
- # See +lib/tracer.rb+ for more information.
def use_tracer=(opt)
if opt
Tracer.set_get_line_procs(@irb_path) {
@@ -48,10 +41,6 @@ module IRB
class WorkSpace
alias __evaluate__ evaluate
- # Evaluate the context of this workspace and use the Tracer library to
- # output the exact lines of code are being executed in chronological order.
- #
- # See +lib/tracer.rb+ for more information.
def evaluate(context, statements, file = nil, line = nil)
if context.use_tracer? && file != nil && line != nil
Tracer.on
diff --git a/lib/irb/ext/use-loader.rb b/lib/irb/ext/use-loader.rb
index 4e98f5b7a2..64283b8989 100644
--- a/lib/irb/ext/use-loader.rb
+++ b/lib/irb/ext/use-loader.rb
@@ -19,11 +19,9 @@ end
module IRB
module ExtendCommandBundle
- # Loads the given file similarly to Kernel#load, see IrbLoader#irb_load
def irb_load(*opts, &b)
ExtendCommand::Load.execute(irb_context, *opts, &b)
end
- # Loads the given file similarly to Kernel#require
def irb_require(*opts, &b)
ExtendCommand::Require.execute(irb_context, *opts, &b)
end
@@ -33,19 +31,12 @@ module IRB
IRB.conf[:USE_LOADER] = false
- # Returns whether +irb+'s own file reader method is used by
- # +load+/+require+ or not.
- #
- # This mode is globally affected (irb-wide).
def use_loader
IRB.conf[:USE_LOADER]
end
alias use_loader? use_loader
- # Sets IRB.conf[:USE_LOADER]
- #
- # See #use_loader for more information.
def use_loader=(opt)
if IRB.conf[:USE_LOADER] != opt
diff --git a/lib/irb/ext/workspaces.rb b/lib/irb/ext/workspaces.rb
index 641befbdf3..118ea598c0 100644
--- a/lib/irb/ext/workspaces.rb
+++ b/lib/irb/ext/workspaces.rb
@@ -9,15 +9,13 @@
#
#
-module IRB # :nodoc:
+module IRB
class Context
- # Size of the current WorkSpace stack
def irb_level
workspace_stack.size
end
- # WorkSpaces in the current stack
def workspaces
if defined? @workspaces
@workspaces
@@ -26,11 +24,6 @@ module IRB # :nodoc:
end
end
- # Creates a new workspace with the given object or binding, and appends it
- # onto the current #workspaces stack.
- #
- # See IRB::Context#change_workspace and IRB::WorkSpace.new for more
- # information.
def push_workspace(*_main)
if _main.empty?
if workspaces.empty?
@@ -50,10 +43,6 @@ module IRB # :nodoc:
end
end
- # Removes the last element from the current #workspaces stack and returns
- # it, or +nil+ if the current workspace stack is empty.
- #
- # Also, see #push_workspace.
def pop_workspace
if workspaces.empty?
print "workspace stack empty\n"
diff --git a/lib/irb/extend-command.rb b/lib/irb/extend-command.rb
index 487c0bbeff..190c49ae78 100644
--- a/lib/irb/extend-command.rb
+++ b/lib/irb/extend-command.rb
@@ -8,30 +8,21 @@
#
#
#
-module IRB # :nodoc:
- # Installs the default irb extensions command bundle.
+module IRB
+ #
+ # IRB extended command
+ #
module ExtendCommandBundle
- EXCB = ExtendCommandBundle # :nodoc:
+ EXCB = ExtendCommandBundle
- # See #install_alias_method.
NO_OVERRIDE = 0
- # See #install_alias_method.
OVERRIDE_PRIVATE_ONLY = 0x01
- # See #install_alias_method.
OVERRIDE_ALL = 0x02
- # Quits the current irb context
- #
- # +ret+ is the optional signal or message to send to Context#exit
- #
- # Same as <code>IRB.CurrentContext.exit</code>.
def irb_exit(ret = 0)
irb_context.exit(ret)
end
- # Displays current configuration.
- #
- # Modifing the configuration is achieved by sending a message to IRB.conf.
def irb_context
IRB.CurrentContext
end
@@ -114,33 +105,13 @@ module IRB # :nodoc:
]
- # Installs the default irb commands:
- #
- # +irb_current_working_workspace+:: Context#main
- # +irb_change_workspace+:: Context#change_workspace
- # +irb_workspaces+:: Context#workspaces
- # +irb_push_workspace+:: Context#push_workspace
- # +irb_pop_workspace+:: Context#pop_workspace
- # +irb_load+:: #irb_load
- # +irb_require+:: #irb_require
- # +irb_source+:: IrbLoader#source_file
- # +irb+:: IRB.irb
- # +irb_jobs+:: JobManager
- # +irb_fg+:: JobManager#switch
- # +irb_kill+:: JobManager#kill
- # +irb_help+:: IRB@Command+line+options
def self.install_extend_commands
for args in @EXTEND_COMMANDS
def_extend_command(*args)
end
end
- # Evaluate the given +cmd_name+ on the given +cmd_class+ Class.
- #
- # Will also define any given +aliases+ for the method.
- #
- # The optional +load_file+ parameter will be required within the method
- # definition.
+ # aliases = [commands_alias, flag], ...
def self.def_extend_command(cmd_name, cmd_class, load_file = nil, *aliases)
case cmd_class
when Symbol
@@ -180,8 +151,7 @@ module IRB # :nodoc:
end
end
- # Installs alias methods for the default irb commands, see
- # ::install_extend_commands.
+ # override = {NO_OVERRIDE, OVERRIDE_PRIVATE_ONLY, OVERRIDE_ALL}
def install_alias_method(to, from, override = NO_OVERRIDE)
to = to.id2name unless to.kind_of?(String)
from = from.id2name unless from.kind_of?(String)
@@ -202,12 +172,10 @@ module IRB # :nodoc:
end
end
- def self.irb_original_method_name(method_name) # :nodoc:
+ def self.irb_original_method_name(method_name)
"irb_" + method_name + "_org"
end
- # Installs alias methods for the default irb commands on the given object
- # using #install_alias_method.
def self.extend_object(obj)
unless (class << obj; ancestors; end).include?(EXCB)
super
@@ -220,9 +188,9 @@ module IRB # :nodoc:
install_extend_commands
end
- # Extends methods for the Context module
+ # extension support for Context
module ContextExtender
- CE = ContextExtender # :nodoc:
+ CE = ContextExtender
@EXTEND_COMMANDS = [
[:eval_history=, "irb/ext/history.rb"],
@@ -232,23 +200,12 @@ module IRB # :nodoc:
[:save_history=, "irb/ext/save-history.rb"],
]
- # Installs the default context extensions as irb commands:
- #
- # Context#eval_history=:: +irb/ext/history.rb+
- # Context#use_tracer=:: +irb/ext/tracer.rb+
- # Context#math_mode=:: +irb/ext/math-mode.rb+
- # Context#use_loader=:: +irb/ext/use-loader.rb+
- # Context#save_history=:: +irb/ext/save-history.rb+
def self.install_extend_commands
for args in @EXTEND_COMMANDS
def_extend_command(*args)
end
end
- # Evaluate the given +command+ from the given +load_file+ on the Context
- # module.
- #
- # Will also define any given +aliases+ for the method.
def self.def_extend_command(cmd_name, load_file, *aliases)
line = __LINE__; Context.module_eval %[
def #{cmd_name}(*opts, &b)
@@ -265,10 +222,7 @@ module IRB # :nodoc:
CE.install_extend_commands
end
- # A convenience module for extending Ruby methods.
module MethodExtender
- # Extends the given +base_method+ with a prefix call to the given
- # +extend_method+.
def def_pre_proc(base_method, extend_method)
base_method = base_method.to_s
extend_method = extend_method.to_s
@@ -283,8 +237,6 @@ module IRB # :nodoc:
]
end
- # Extends the given +base_method+ with a postfix call to the given
- # +extend_method+.
def def_post_proc(base_method, extend_method)
base_method = base_method.to_s
extend_method = extend_method.to_s
@@ -299,13 +251,7 @@ module IRB # :nodoc:
]
end
- # Returns a unique method name to use as an alias for the given +name+.
- #
- # Usually returns <code>#{prefix}#{name}#{postfix}<num></code>, example:
- #
- # new_alias_name('foo') #=> __alias_of__foo__
- # def bar; end
- # new_alias_name('bar') #=> __alias_of__bar__2
+ # return #{prefix}#{name}#{postfix}<num>
def new_alias_name(name, prefix = "__alias_of__", postfix = "__")
base_name = "#{prefix}#{name}#{postfix}"
all_methods = instance_methods(true) + private_instance_methods(true)
diff --git a/lib/irb/frame.rb b/lib/irb/frame.rb
index bcfa3a3140..8814b47a9d 100644
--- a/lib/irb/frame.rb
+++ b/lib/irb/frame.rb
@@ -17,17 +17,13 @@ module IRB
def_exception :FrameOverflow, "frame overflow"
def_exception :FrameUnderflow, "frame underflow"
- # Default number of stack frames
INIT_STACK_TIMES = 3
- # Default number of frames offset
CALL_STACK_OFFSET = 3
- # Creates a new stack frame
def initialize
@frames = [TOPLEVEL_BINDING] * INIT_STACK_TIMES
end
- # Used by Kernel#set_trace_func to register each event in the call stack
def trace_func(event, file, line, id, binding)
case event
when 'call', 'class'
@@ -37,37 +33,27 @@ module IRB
end
end
- # Returns the +n+ number of frames on the call stack from the last frame
- # initialized.
- #
- # Raises FrameUnderflow if there are no frames in the given stack range.
def top(n = 0)
bind = @frames[-(n + CALL_STACK_OFFSET)]
Fail FrameUnderflow unless bind
bind
end
- # Returns the +n+ number of frames on the call stack from the first frame
- # initialized.
- #
- # Raises FrameOverflow if there are no frames in the given stack range.
def bottom(n = 0)
bind = @frames[n]
Fail FrameOverflow unless bind
bind
end
- # Convenience method for Frame#bottom
+ # singleton functions
def Frame.bottom(n = 0)
@backtrace.bottom(n)
end
- # Convenience method for Frame#top
def Frame.top(n = 0)
@backtrace.top(n)
end
- # Returns the binding context of the caller from the last frame initialized
def Frame.sender
eval "self", @backtrace.top
end
diff --git a/lib/irb/help.rb b/lib/irb/help.rb
index 9fd734038f..4a308b6e46 100644
--- a/lib/irb/help.rb
+++ b/lib/irb/help.rb
@@ -12,7 +12,6 @@
require 'irb/magic-file'
module IRB
- # Outputs the irb help message, see IRB@Command+line+options.
def IRB.print_usage
lc = IRB.conf[:LC_MESSAGES]
path = lc.find("irb/help-message")
diff --git a/lib/irb/init.rb b/lib/irb/init.rb
index 826bcaf3ac..fce2df4f09 100644
--- a/lib/irb/init.rb
+++ b/lib/irb/init.rb
@@ -9,7 +9,7 @@
#
#
-module IRB # :nodoc:
+module IRB
# initialize config
def IRB.setup(ap_path)
@@ -115,7 +115,7 @@ module IRB # :nodoc:
@CONF[:AT_EXIT] = []
- @CONF[:DEBUG_LEVEL] = 0
+ @CONF[:DEBUG_LEVEL] = 1
end
def IRB.init_error
@@ -197,7 +197,7 @@ module IRB # :nodoc:
@CONF[:CONTEXT_MODE] = ($1 || ARGV.shift).to_i
when "--single-irb"
@CONF[:SINGLE_IRB] = true
- when /^--irb_debug(?:=(.+))?/
+ when /^--irb_debug=(?:=(.+))?/
@CONF[:DEBUG_LEVEL] = ($1 || ARGV.shift).to_i
when "-v", "--version"
print IRB.version, "\n"
@@ -256,12 +256,7 @@ module IRB # :nodoc:
end
end
end
- case rc_file = @CONF[:RC_NAME_GENERATOR].call(ext)
- when String
- return rc_file
- else
- IRB.fail IllegalRCNameGenerator
- end
+ @CONF[:RC_NAME_GENERATOR].call ext
end
# enumerate possible rc-file base name generators
diff --git a/lib/irb/input-method.rb b/lib/irb/input-method.rb
index 55363fe0c4..7227df4ca0 100644
--- a/lib/irb/input-method.rb
+++ b/lib/irb/input-method.rb
@@ -12,39 +12,34 @@ require 'irb/src_encoding'
require 'irb/magic-file'
module IRB
- STDIN_FILE_NAME = "(line)" # :nodoc:
+ #
+ # InputMethod
+ # StdioInputMethod
+ # FileInputMethod
+ # (ReadlineInputMethod)
+ #
+ STDIN_FILE_NAME = "(line)"
class InputMethod
@RCS_ID='-$Id$-'
- # Creates a new input method object
def initialize(file = STDIN_FILE_NAME)
@file_name = file
end
- # The file name of this input method, usually given during initialization.
attr_reader :file_name
- # The irb prompt associated with this input method
attr_accessor :prompt
- # Reads the next line from this input method.
- #
- # See IO#gets for more information.
def gets
IRB.fail NotImplementedError, "gets"
end
public :gets
- # Whether this input method is still readable when there is no more data to
- # read.
- #
- # See IO#eof for more information.
- def readable_after_eof?
+ def readable_atfer_eof?
false
end
end
class StdioInputMethod < InputMethod
- # Creates a new input method object
def initialize
super
@line_no = 0
@@ -53,67 +48,40 @@ module IRB
@stdout = IO.open(STDOUT.to_i, 'w', :external_encoding => IRB.conf[:LC_MESSAGES].encoding, :internal_encoding => "-")
end
- # Reads the next line from this input method.
- #
- # See IO#gets for more information.
def gets
print @prompt
line = @stdin.gets
@line[@line_no += 1] = line
end
- # Whether the end of this input method has been reached, returns +true+ if
- # there is no more data to read.
- #
- # See IO#eof? for more information.
def eof?
@stdin.eof?
end
- # Whether this input method is still readable when there is no more data to
- # read.
- #
- # See IO#eof for more information.
- def readable_after_eof?
+ def readable_atfer_eof?
true
end
- # Returns the current line number for #io.
- #
- # #line counts the number of times #gets is called.
- #
- # See IO#lineno for more information.
def line(line_no)
@line[line_no]
end
- # The external encoding for standard input.
def encoding
@stdin.external_encoding
end
end
- # Use a File for IO with irb, see InputMethod
class FileInputMethod < InputMethod
- # Creates a new input method object
def initialize(file)
super
@io = IRB::MagicFile.open(file)
end
- # The file name of this input method, usually given during initialization.
attr_reader :file_name
- # Whether the end of this input method has been reached, returns +true+ if
- # there is no more data to read.
- #
- # See IO#eof? for more information.
def eof?
@io.eof?
end
- # Reads the next line from this input method.
- #
- # See IO#gets for more information.
def gets
print @prompt
l = @io.gets
@@ -121,7 +89,6 @@ module IRB
l
end
- # The external encoding for standard input.
def encoding
@io.external_encoding
end
@@ -131,7 +98,6 @@ module IRB
require "readline"
class ReadlineInputMethod < InputMethod
include Readline
- # Creates a new input method object using Readline
def initialize
super
@@ -143,9 +109,6 @@ module IRB
@stdout = IO.open(STDOUT.to_i, 'w', :external_encoding => IRB.conf[:LC_MESSAGES].encoding, :internal_encoding => "-")
end
- # Reads the next line from this input method.
- #
- # See IO#gets for more information.
def gets
Readline.input = @stdin
Readline.output = @stdout
@@ -158,32 +121,18 @@ module IRB
end
end
- # Whether the end of this input method has been reached, returns +true+
- # if there is no more data to read.
- #
- # See IO#eof? for more information.
def eof?
@eof
end
- # Whether this input method is still readable when there is no more data to
- # read.
- #
- # See IO#eof for more information.
- def readable_after_eof?
+ def readable_atfer_eof?
true
end
- # Returns the current line number for #io.
- #
- # #line counts the number of times #gets is called.
- #
- # See IO#lineno for more information.
def line(line_no)
@line[line_no]
end
- # The external encoding for standard input.
def encoding
@stdin.external_encoding
end
diff --git a/lib/irb/inspector.rb b/lib/irb/inspector.rb
index eaff44fc0b..aefe077f37 100644
--- a/lib/irb/inspector.rb
+++ b/lib/irb/inspector.rb
@@ -10,122 +10,86 @@
#
#
-module IRB # :nodoc:
+module IRB
-
- # Convenience method to create a new Inspector, using the given +inspect+
- # proc, and optional +init+ proc and passes them to Inspector.new
- #
- # irb(main):001:0> ins = IRB::Inspector(proc{ |v| "omg! #{v}" })
- # irb(main):001:0> IRB.CurrentContext.inspect_mode = ins # => omg! #<IRB::Inspector:0x007f46f7ba7d28>
- # irb(main):001:0> "what?" #=> omg! what?
- #
def IRB::Inspector(inspect, init = nil)
Inspector.new(inspect, init)
end
- # An irb inspector
- #
- # In order to create your own custom inspector there are two things you
- # should be aware of:
- #
- # Inspector uses #inspect_value, or +inspect_proc+, for output of return values.
- #
- # This also allows for an optional #init+, or +init_proc+, which is called
- # when the inspector is activated.
- #
- # Knowing this, you can create a rudimentary inspector as follows:
- #
- # irb(main):001:0> ins = IRB::Inspector.new(proc{ |v| "omg! #{v}" })
- # irb(main):001:0> IRB.CurrentContext.inspect_mode = ins # => omg! #<IRB::Inspector:0x007f46f7ba7d28>
- # irb(main):001:0> "what?" #=> omg! what?
- #
class Inspector
- # Default inspectors available to irb, this includes:
- #
- # +:pp+:: Using Kernel#pretty_inspect
- # +:yaml+:: Using YAML.dump
- # +:marshal+:: Using Marshal.dump
- INSPECTORS = {}
-
- # Determines the inspector to use where +inspector+ is one of the keys passed
- # during inspector definition.
- def self.keys_with_inspector(inspector)
- INSPECTORS.select{|k,v| v == inspector}.collect{|k, v| k}
- end
-
- # Example
- #
- # Inspector.def_inspector(key, init_p=nil){|v| v.inspect}
- # Inspector.def_inspector([key1,..], init_p=nil){|v| v.inspect}
- # Inspector.def_inspector(key, inspector)
- # Inspector.def_inspector([key1,...], inspector)
- def self.def_inspector(key, arg=nil, &block)
- # if !block_given?
- # case arg
- # when nil, Proc
- # inspector = IRB::Inspector(init_p)
- # when Inspector
- # inspector = init_p
- # else
- # IRB.Raise IllegalParameter, init_p
- # end
- # init_p = nil
- # else
- # inspector = IRB::Inspector(block, init_p)
- # end
-
- if block_given?
- inspector = IRB::Inspector(block, arg)
- else
- inspector = arg
- end
-
- case key
- when Array
- for k in key
- def_inspector(k, inspector)
- end
- when Symbol
- INSPECTORS[key] = inspector
- INSPECTORS[key.to_s] = inspector
- when String
- INSPECTORS[key] = inspector
- INSPECTORS[key.intern] = inspector
- else
- INSPECTORS[key] = inspector
- end
- end
-
- # Creates a new inspector object, using the given +inspect_proc+ when
- # output return values in irb.
def initialize(inspect_proc, init_proc = nil)
@init = init_proc
@inspect = inspect_proc
end
- # Proc to call when the inspector is activated, good for requiring
- # dependant libraries.
def init
@init.call if @init
end
- # Proc to call when the input is evaluated and output in irb.
def inspect_value(v)
@inspect.call(v)
end
end
- Inspector.def_inspector([false, :to_s, :raw]){|v| v.to_s}
- Inspector.def_inspector([true, :p, :inspect]){|v|
+ INSPECTORS = {}
+
+ def INSPECTORS.keys_with_inspector(inspector)
+ select{|k,v| v == inspector}.collect{|k, v| k}
+ end
+
+ # ex)
+ # INSPECTORS.def_inspector(key, init_p=nil){|v| v.inspect}
+ # INSPECTORS.def_inspector([key1,..], init_p=nil){|v| v.inspect}
+ # INSPECTORS.def_inspector(key, inspector)
+ # INSPECTORS.def_inspector([key1,...], inspector)
+
+ def INSPECTORS.def_inspector(key, arg=nil, &block)
+# if !block_given?
+# case arg
+# when nil, Proc
+# inspector = IRB::Inspector(init_p)
+# when Inspector
+# inspector = init_p
+# else
+# IRB.Raise IllegalParameter, init_p
+# end
+# init_p = nil
+# else
+# inspector = IRB::Inspector(block, init_p)
+# end
+
+ if block_given?
+ inspector = IRB::Inspector(block, arg)
+ else
+ inspector = arg
+ end
+
+ case key
+ when Array
+ for k in key
+ def_inspector(k, inspector)
+ end
+ when Symbol
+ self[key] = inspector
+ self[key.to_s] = inspector
+ when String
+ self[key] = inspector
+ self[key.intern] = inspector
+ else
+ self[key] = inspector
+ end
+ end
+
+ INSPECTORS.def_inspector([false, :to_s, :raw]){|v| v.to_s}
+ INSPECTORS.def_inspector([true, :p, :inspect]){|v|
begin
v.inspect
rescue NoMethodError
puts "(Object doesn't support #inspect)"
end
}
- Inspector.def_inspector([:pp, :pretty_inspect], proc{require "pp"}){|v| v.pretty_inspect.chomp}
- Inspector.def_inspector([:yaml, :YAML], proc{require "yaml"}){|v|
+ INSPECTORS.def_inspector([:pp, :pretty_inspect], proc{require "pp"}){|v| v.pretty_inspect.chomp}
+ INSPECTORS.def_inspector([:yaml, :YAML], proc{require "yaml"}){|v|
begin
YAML.dump(v)
rescue
@@ -134,7 +98,7 @@ module IRB # :nodoc:
end
}
- Inspector.def_inspector([:marshal, :Marshal, :MARSHAL, Marshal]){|v|
+ INSPECTORS.def_inspector([:marshal, :Marshal, :MARSHAL, Marshal]){|v|
Marshal.dump(v)
}
end
diff --git a/lib/irb/lc/.document b/lib/irb/lc/.document
deleted file mode 100644
index 524bb9430b..0000000000
--- a/lib/irb/lc/.document
+++ /dev/null
@@ -1,4 +0,0 @@
-# hide help-message files which contain usage information
-error.rb
-ja/encoding_aliases.rb
-ja/error.rb
diff --git a/lib/irb/lc/error.rb b/lib/irb/lc/error.rb
index c0c6c30d79..742821e3af 100644
--- a/lib/irb/lc/error.rb
+++ b/lib/irb/lc/error.rb
@@ -10,7 +10,6 @@
#
require "e2mmap"
-# :stopdoc:
module IRB
# exceptions
@@ -25,7 +24,6 @@ module IRB
def_exception :CantShiftToMultiIrbMode, "Can't shift to multi irb mode."
def_exception :CantChangeBinding, "Can't change binding to (%s)."
def_exception :UndefinedPromptMode, "Undefined prompt mode(%s)."
- def_exception :IllegalRCGenerator, 'Define illegal RC_NAME_GENERATOR.'
end
-# :startdoc:
+
diff --git a/lib/irb/lc/ja/encoding_aliases.rb b/lib/irb/lc/ja/encoding_aliases.rb
index 5bef32e20e..a713dff4be 100644
--- a/lib/irb/lc/ja/encoding_aliases.rb
+++ b/lib/irb/lc/ja/encoding_aliases.rb
@@ -1,4 +1,3 @@
-# :stopdoc:
module IRB
class Locale
@@legacy_encoding_alias_map = {
@@ -7,4 +6,3 @@ module IRB
}.freeze
end
end
-# :startdoc:
diff --git a/lib/irb/lc/ja/error.rb b/lib/irb/lc/ja/error.rb
index 4f09d781cb..9a7670f459 100644
--- a/lib/irb/lc/ja/error.rb
+++ b/lib/irb/lc/ja/error.rb
@@ -10,7 +10,6 @@
#
require "e2mmap"
-# :stopdoc:
module IRB
# exceptions
extend Exception2MessageMapper
@@ -24,7 +23,5 @@ module IRB
def_exception :CantShiftToMultiIrbMode, 'multi-irb modeに移れません.'
def_exception :CantChangeBinding, 'バインディング(%s)に変更できません.'
def_exception :UndefinedPromptMode, 'プロンプトモード(%s)は定義されていません.'
- def_exception :IllegalRCNameGenerator, 'RC_NAME_GENERATORが正しく定義されていません.'
end
-# :startdoc:
# vim:fileencoding=utf-8
diff --git a/lib/irb/locale.rb b/lib/irb/locale.rb
index accce9e13f..7781006da4 100644
--- a/lib/irb/locale.rb
+++ b/lib/irb/locale.rb
@@ -8,7 +8,7 @@
#
#
#
-module IRB # :nodoc:
+module IRB
class Locale
@RCS_ID='-$Id$-'
diff --git a/lib/irb/magic-file.rb b/lib/irb/magic-file.rb
index 339ed60b6b..861262050e 100644
--- a/lib/irb/magic-file.rb
+++ b/lib/irb/magic-file.rb
@@ -8,10 +8,9 @@ module IRB
line = io.gets
line = io.gets if line[0,2] == "#!"
encoding = detect_encoding(line)
- internal_encoding = encoding
encoding ||= default_src_encoding
io.rewind
- io.set_encoding(encoding, internal_encoding)
+ io.set_encoding(encoding, nil)
if block_given?
begin
diff --git a/lib/irb/notifier.rb b/lib/irb/notifier.rb
index effb12c30d..d20679da4a 100644
--- a/lib/irb/notifier.rb
+++ b/lib/irb/notifier.rb
@@ -13,7 +13,6 @@ require "e2mmap"
require "irb/output-method"
module IRB
- # An output formatter used internally by the lexer.
module Notifier
extend Exception2MessageMapper
def_exception :ErrUndefinedNotifier,
@@ -21,100 +20,59 @@ module IRB
def_exception :ErrUnrecognizedLevel,
"unrecognized notifier level: %s is specified"
- # Define a new Notifier output source, returning a new CompositeNotifier
- # with the given +prefix+ and +output_method+.
- #
- # The optional +prefix+ will be appended to all objects being inspected
- # during output, using the given +output_method+ as the output source. If
- # no +output_method+ is given, StdioOuputMethod will be used, and all
- # expressions will be sent directly to STDOUT without any additional
- # formatting.
def def_notifier(prefix = "", output_method = StdioOutputMethod.new)
CompositeNotifier.new(prefix, output_method)
end
module_function :def_notifier
- # An abstract class, or superclass, for CompositeNotifier and
- # LeveledNotifier to inherit. It provides several wrapper methods for the
- # OutputMethod object used by the Notifier.
class AbstractNotifier
- # Creates a new Notifier object
def initialize(prefix, base_notifier)
@prefix = prefix
@base_notifier = base_notifier
end
- # The +prefix+ for this Notifier, which is appended to all objects being
- # inspected during output.
attr_reader :prefix
- # A wrapper method used to determine whether notifications are enabled.
- #
- # Defaults to +true+.
def notify?
true
end
- # See OutputMethod#print for more detail.
def print(*opts)
@base_notifier.print prefix, *opts if notify?
end
- # See OutputMethod#printn for more detail.
def printn(*opts)
@base_notifier.printn prefix, *opts if notify?
end
- # See OutputMethod#printf for more detail.
def printf(format, *opts)
@base_notifier.printf(prefix + format, *opts) if notify?
end
- # See OutputMethod#puts for more detail.
def puts(*objs)
if notify?
@base_notifier.puts(*objs.collect{|obj| prefix + obj.to_s})
end
end
- # Same as #ppx, except it uses the #prefix given during object
- # initialization.
- # See OutputMethod#ppx for more detail.
def pp(*objs)
if notify?
@base_notifier.ppx @prefix, *objs
end
end
- # Same as #pp, except it concatenates the given +prefix+ with the #prefix
- # given during object initialization.
- #
- # See OutputMethod#ppx for more detail.
def ppx(prefix, *objs)
if notify?
@base_notifier.ppx @prefix+prefix, *objs
end
end
- # Execute the given block if notifications are enabled.
def exec_if
yield(@base_notifier) if notify?
end
end
- # A class that can be used to create a group of notifier objects with the
- # intent of representing a leveled notification system for irb.
- #
- # This class will allow you to generate other notifiers, and assign them
- # the appropriate level for output.
- #
- # The Notifier class provides a class-method Notifier.def_notifier to
- # create a new composite notifier. Using the first composite notifier
- # object you create, sibling notifiers can be initialized with
- # #def_notifier.
class CompositeNotifier<AbstractNotifier
- # Create a new composite notifier object with the given +prefix+, and
- # +base_notifier+ to use for output.
def initialize(prefix, base_notifier)
super
@@ -122,39 +80,17 @@ module IRB
@level_notifier = D_NOMSG
end
- # List of notifiers in the group
attr_reader :notifiers
- # Creates a new LeveledNotifier in the composite #notifiers group.
- #
- # The given +prefix+ will be assigned to the notifier, and +level+ will
- # be used as the index of the #notifiers Array.
- #
- # This method returns the newly created instance.
def def_notifier(level, prefix = "")
notifier = LeveledNotifier.new(self, level, prefix)
@notifiers[level] = notifier
notifier
end
- # Returns the leveled notifier for this object
attr_reader :level_notifier
alias level level_notifier
- # Sets the leveled notifier for this object.
- #
- # When the given +value+ is an instance of AbstractNotifier,
- # #level_notifier is set to the given object.
- #
- # When an Integer is given, #level_notifier is set to the notifier at the
- # index +value+ in the #notifiers Array.
- #
- # If no notifier exists at the index +value+ in the #notifiers Array, an
- # ErrUndefinedNotifier exception is raised.
- #
- # An ErrUnrecognizedLevel exception is raised if the given +value+ is not
- # found in the existing #notifiers Array, or an instance of
- # AbstractNotifier
def level_notifier=(value)
case value
when AbstractNotifier
@@ -171,61 +107,38 @@ module IRB
alias level= level_notifier=
end
- # A leveled notifier is comparable to the composite group from
- # CompositeNotifier#notifiers.
class LeveledNotifier<AbstractNotifier
include Comparable
- # Create a new leveled notifier with the given +base+, and +prefix+ to
- # send to AbstractNotifier.new
- #
- # The given +level+ is used to compare other leveled notifiers in the
- # CompositeNotifier group to determine whether or not to output
- # notifications.
def initialize(base, level, prefix)
super(prefix, base)
@level = level
end
- # The current level of this notifier object
attr_reader :level
- # Compares the level of this notifier object with the given +other+
- # notifier.
- #
- # See the Comparable module for more information.
def <=>(other)
@level <=> other.level
end
- # Whether to output messages to the output method, depending on the level
- # of this notifier object.
def notify?
@base_notifier.level >= self
end
end
- # NoMsgNotifier is a LeveledNotifier that's used as the default notifier
- # when creating a new CompositeNotifier.
- #
- # This notifier is used as the +zero+ index, or level +0+, for
- # CompositeNotifier#notifiers, and will not output messages of any sort.
class NoMsgNotifier<LeveledNotifier
- # Creates a new notifier that should not be used to output messages.
def initialize
@base_notifier = nil
@level = 0
@prefix = ""
end
- # Ensures notifications are ignored, see AbstractNotifier#notify? for
- # more information.
def notify?
false
end
end
- D_NOMSG = NoMsgNotifier.new # :nodoc:
+ D_NOMSG = NoMsgNotifier.new
end
end
diff --git a/lib/irb/output-method.rb b/lib/irb/output-method.rb
index aae9e2294d..9cccda1c6a 100644
--- a/lib/irb/output-method.rb
+++ b/lib/irb/output-method.rb
@@ -12,27 +12,21 @@
require "e2mmap"
module IRB
- # An abstract output class for IO in irb. This is mainly used internally by
- # IRB::Notifier. You can define your own output method to use with Irb.new,
- # or Context.new
- class OutputMethod
- extend Exception2MessageMapper
- def_exception :NotImplementedError, "Need to define `%s'"
+ # OutputMethod
+ # StdioOutputMethod
+ class OutputMethod
+ @RCS_ID='-$Id$-'
- # Open this method to implement your own output method, raises a
- # NotImplementedError if you don't define #print in your own class.
def print(*opts)
- OutputMethod.Raise NotImplementedError, "print"
+ IRB.fail NotImplementError, "print"
end
- # Prints the given +opts+, with a newline delimiter.
def printn(*opts)
print opts.join(" "), "\n"
end
- # Extends IO#printf to format the given +opts+ for Kernel#sprintf using
- # #parse_printf_format
+ # extend printf
def printf(format, *opts)
if /(%*)%I/ =~ format
format, opts = parse_printf_format(format, opts)
@@ -40,22 +34,16 @@ module IRB
print sprintf(format, *opts)
end
- # Returns an array of the given +format+ and +opts+ to be used by
- # Kernel#sprintf, if there was a successful Regexp match in the given
- # +format+ from #printf
- #
- # %
- # <flag> [#0- +]
- # <minimum field width> (\*|\*[1-9][0-9]*\$|[1-9][0-9]*)
- # <precision>.(\*|\*[1-9][0-9]*\$|[1-9][0-9]*|)?
- # #<length modifier>(hh|h|l|ll|L|q|j|z|t)
- # <conversion specifier>[diouxXeEfgGcsb%]
+ # %
+ # <flag> [#0- +]
+ # <minimum field width> (\*|\*[1-9][0-9]*\$|[1-9][0-9]*)
+ # <precision>.(\*|\*[1-9][0-9]*\$|[1-9][0-9]*|)?
+ # #<length modifier>(hh|h|l|ll|L|q|j|z|t)
+ # <conversion specifier>[diouxXeEfgGcsb%]
def parse_printf_format(format, opts)
return format, opts if $1.size % 2 == 1
end
- # Calls #print on each element in the given +objs+, followed by a newline
- # character.
def puts(*objs)
for obj in objs
print(*obj)
@@ -63,27 +51,17 @@ module IRB
end
end
- # Prints the given +objs+ calling Object#inspect on each.
- #
- # See #puts for more detail.
def pp(*objs)
puts(*objs.collect{|obj| obj.inspect})
end
- # Prints the given +objs+ calling Object#inspect on each and appending the
- # given +prefix+.
- #
- # See #puts for more detail.
def ppx(prefix, *objs)
puts(*objs.collect{|obj| prefix+obj.inspect})
end
end
- # A standard output printer
class StdioOutputMethod<OutputMethod
- # Prints the given +opts+ to standard output, see IO#print for more
- # information.
def print(*opts)
STDOUT.print(*opts)
end
diff --git a/lib/irb/ruby-lex.rb b/lib/irb/ruby-lex.rb
index 4a700b3324..2a23534bf3 100644
--- a/lib/irb/ruby-lex.rb
+++ b/lib/irb/ruby-lex.rb
@@ -13,7 +13,6 @@ require "e2mmap"
require "irb/slex"
require "irb/ruby-token"
-# :stopdoc:
class RubyLex
@RCS_ID='-$Id$-'
@@ -54,7 +53,6 @@ class RubyLex
@lex_state = EXPR_BEG
@space_seen = false
@here_header = false
- @post_symbeg = false
@continue = false
@line = ""
@@ -88,8 +86,8 @@ class RubyLex
end
def get_readed
- if idx = @readed.rindex("\n")
- @base_char_no = @readed.size - (idx + 1)
+ if idx = @readed.reverse.index("\n")
+ @base_char_no = idx
else
@base_char_no += @readed.size
end
@@ -153,8 +151,8 @@ class RubyLex
@seek -= 1
if c == "\n"
@line_no -= 1
- if idx = @readed.rindex("\n")
- @char_no = idx + 1
+ if idx = @readed.reverse.index("\n")
+ @char_no = @readed.size - idx
else
@char_no = @base_char_no + @readed.size
end
@@ -219,8 +217,6 @@ class RubyLex
@here_header = false
@continue = false
- @post_symbeg = false
-
prompt
@line = ""
@@ -289,8 +285,6 @@ class RubyLex
begin
tk = @OP.match(self)
@space_seen = tk.kind_of?(TkSPACE)
- @lex_state = EXPR_END if @post_symbeg && tk.kind_of?(TkOp)
- @post_symbeg = tk.kind_of?(TkSYMBEG)
rescue SyntaxError
raise if @exception_on_syntax_error
tk = TkError.new(@seek, @line_no, @char_no)
@@ -317,8 +311,6 @@ class RubyLex
"r" => "/",
"w" => "]",
"W" => "]",
- "i" => "]",
- "I" => "]",
"s" => ":"
}
@@ -547,7 +539,7 @@ class RubyLex
@lex_state = EXPR_BEG
Token(TkCOLON)
else
- @lex_state = EXPR_FNAME
+ @lex_state = EXPR_FNAME;
Token(TkSYMBEG)
end
end
@@ -912,25 +904,10 @@ class RubyLex
end
@here_header = false
-# while l = gets
-# l = l.sub(/(:?\r)?\n\z/, '')
-# if (indent ? l.strip : l) == quoted
-# break
-# end
-# end
-
- line = ""
- while ch = getc
- if ch == "\n"
- if line == quoted
- break
- end
- line = ""
- else
- line.concat ch unless indent && line == "" && /\s/ =~ ch
- if @ltype != "'" && ch == "#" && peek(0) == "{"
- identify_string_dvar
- end
+ while l = gets
+ l = l.sub(/(:?\r)?\n\z/, '')
+ if (indent ? l.strip : l) == quoted
+ break
end
end
@@ -1208,4 +1185,3 @@ class RubyLex
end
end
end
-# :startdoc:
diff --git a/lib/irb/ruby-token.rb b/lib/irb/ruby-token.rb
index 2c7565dbfc..531fb859ff 100644
--- a/lib/irb/ruby-token.rb
+++ b/lib/irb/ruby-token.rb
@@ -8,7 +8,6 @@
#
#
#
-# :stopdoc:
module RubyToken
EXPR_BEG = :EXPR_BEG
EXPR_MID = :EXPR_MID
@@ -264,4 +263,3 @@ module RubyToken
def_token(*defs)
end
end
-# :startdoc:
diff --git a/lib/irb/slex.rb b/lib/irb/slex.rb
index 09c1c02ebc..b395eaa475 100644
--- a/lib/irb/slex.rb
+++ b/lib/irb/slex.rb
@@ -12,7 +12,6 @@
require "e2mmap"
require "irb/notifier"
-# :stopdoc:
module IRB
class SLex
@RCS_ID='-$Id$-'
@@ -76,7 +75,7 @@ module IRB
return @head.match_io(token)
end
ret = @head.match(token)
- D_DETAIL.exec_if{D_DETAIL.printf "match end: %s:%s\n", ret, token.inspect}
+ D_DETAIL.exec_if{D_DEATIL.printf "match end: %s:%s\n", ret, token.inspect}
ret
end
@@ -244,7 +243,6 @@ module IRB
end
end
end
-# :startdoc:
if $0 == __FILE__
# Tracer.on
diff --git a/lib/irb/version.rb b/lib/irb/version.rb
index bb998db3dd..621a127ebd 100644
--- a/lib/irb/version.rb
+++ b/lib/irb/version.rb
@@ -9,7 +9,7 @@
#
#
-module IRB # :nodoc:
+module IRB
@RELEASE_VERSION = "0.9.6"
@LAST_UPDATE_DATE = "09/06/30"
end
diff --git a/lib/irb/workspace.rb b/lib/irb/workspace.rb
index 65214a2217..edc0d3b147 100644
--- a/lib/irb/workspace.rb
+++ b/lib/irb/workspace.rb
@@ -8,11 +8,9 @@
#
#
#
-module IRB # :nodoc:
+module IRB
class WorkSpace
- # Creates a new workspace.
- #
- # set self to main if specified, otherwise
+ # create new workspace. set self to main if specified, otherwise
# inherit main from TOPLEVEL_BINDING.
def initialize(*main)
if main[0].kind_of?(Binding)
@@ -40,7 +38,7 @@ EOF
unless defined? BINDING_QUEUE
require "thread"
- IRB.const_set(:BINDING_QUEUE, SizedQueue.new(1))
+ IRB.const_set("BINDING_QUEUE", SizedQueue.new(1))
Thread.abort_on_exception = true
Thread.start do
eval "require \"irb/ws-for-case-2\"", TOPLEVEL_BINDING, __FILE__, __LINE__
@@ -50,7 +48,7 @@ EOF
@binding = BINDING_QUEUE.pop
when 3 # binging in function on TOPLEVEL_BINDING(default)
- @binding = eval("def irb_binding; private; binding; end; irb_binding",
+ @binding = eval("def irb_binding; binding; end; irb_binding",
TOPLEVEL_BINDING,
__FILE__,
__LINE__ - 3)
@@ -75,13 +73,9 @@ EOF
eval("_=nil", @binding)
end
- # The Binding of this workspace
attr_reader :binding
- # The top-level workspace of this context, also available as
- # <code>IRB.conf[:__MAIN__]</code>
attr_reader :main
- # Evaluate the given +statements+ within the context of this workspace.
def evaluate(context, statements, file = __FILE__, line = __LINE__)
eval(statements, @binding, file, line)
end
diff --git a/lib/irb/xmp.rb b/lib/irb/xmp.rb
index 947d2cf5a2..bcef964020 100644
--- a/lib/irb/xmp.rb
+++ b/lib/irb/xmp.rb
@@ -12,46 +12,9 @@
require "irb"
require "irb/frame"
-# An example printer for irb.
-#
-# It's much like the standard library PrettyPrint, that shows the value of each
-# expression as it runs.
-#
-# In order to use this library, you must first require it:
-#
-# require 'irb/xmp'
-#
-# Now, you can take advantage of the Object#xmp convenience method.
-#
-# xmp <<END
-# foo = "bar"
-# baz = 42
-# END
-# #=> foo = "bar"
-# #==>"bar"
-# #=> baz = 42
-# #==>42
-#
-# You can also create an XMP object, with an optional binding to print
-# expressions in the given binding:
-#
-# ctx = binding
-# x = XMP.new ctx
-# x.puts
-# #=> today = "a good day"
-# #==>"a good day"
-# ctx.eval 'today # is what?'
-# #=> "a good day"
class XMP
@RCS_ID='-$Id$-'
- # Creates a new XMP object.
- #
- # The top-level binding or, optional +bind+ parameter will be used when
- # creating the workspace. See WorkSpace.new for more information.
- #
- # This uses the +:XMP+ prompt mode, see IRB@Customizing+the+IRB+Prompt for
- # full detail.
def initialize(bind = nil)
IRB.init_config(nil)
#IRB.parse_opts
@@ -69,17 +32,6 @@ class XMP
IRB.conf[:MAIN_CONTEXT] = @irb.context
end
- # Evaluates the given +exps+, for example:
- #
- # require 'irb/xmp'
- # x = XMP.new
- #
- # x.puts '{:a => 1, :b => 2, :c => 3}'
- # #=> {:a => 1, :b => 2, :c => 3}
- # # ==>{:a=>1, :b=>2, :c=>3}
- # x.puts 'foo = "bar"'
- # # => foo = "bar"
- # # ==>"bar"
def puts(exps)
@io.puts exps
@@ -99,22 +51,16 @@ class XMP
end
end
- # A custom InputMethod class used by XMP for evaluating string io.
class StringInputMethod < IRB::InputMethod
- # Creates a new StringInputMethod object
def initialize
super
@exps = []
end
- # Whether there are any expressions left in this printer.
def eof?
@exps.empty?
end
- # Reads the next expression from this printer.
- #
- # See IO#gets for more information.
def gets
while l = @exps.shift
next if /^\s+$/ =~ l
@@ -125,10 +71,6 @@ class XMP
l
end
- # Concatenates all expressions in this printer, separated by newlines.
- #
- # An Encoding::CompatibilityError is raised of the given +exps+'s encoding
- # doesn't match the previous expression evaluated.
def puts(exps)
if @encoding and exps.encoding != @encoding
enc = Encoding.compatible?(@exps.join("\n"), exps)
@@ -143,28 +85,10 @@ class XMP
@exps.concat exps.split(/\n/)
end
- # Returns the encoding of last expression printed by #puts.
attr_reader :encoding
end
end
-# A convenience method that's only available when the you require the IRB::XMP standard library.
-#
-# Creates a new XMP object, using the given expressions as the +exps+
-# parameter, and optional binding as +bind+ or uses the top-level binding. Then
-# evaluates the given expressions using the +:XMP+ prompt mode.
-#
-# For example:
-#
-# require 'irb/xmp'
-# ctx = binding
-# xmp 'foo = "bar"', ctx
-# #=> foo = "bar"
-# #==>"bar"
-# ctx.eval 'foo'
-# #=> "bar"
-#
-# See XMP.new for more information.
def xmp(exps, bind = nil)
bind = IRB::Frame.top(1) unless bind
xmp = XMP.new(bind)
diff --git a/lib/logger.rb b/lib/logger.rb
index c0a64c0dda..6092959399 100644
--- a/lib/logger.rb
+++ b/lib/logger.rb
@@ -18,19 +18,18 @@ require 'monitor'
#
# The messages have associated levels, such as +INFO+ or +ERROR+ that indicate
# their importance. You can then give the Logger a level, and only messages
-# at that level or higher will be printed.
+# at that level of higher will be printed.
#
# The levels are:
#
-# +UNKNOWN+:: An unknown message that should always be logged.
-# +FATAL+:: An unhandleable error that results in a program crash.
-# +ERROR+:: A handleable error condition.
-# +WARN+:: A warning.
-# +INFO+:: Generic (useful) information about system operation.
-# +DEBUG+:: Low-level information for developers.
+# +FATAL+:: an unhandleable error that results in a program crash
+# +ERROR+:: a handleable error condition
+# +WARN+:: a warning
+# +INFO+:: generic (useful) information about system operation
+# +DEBUG+:: low-level information for developers
#
# For instance, in a production system, you may have your Logger set to
-# +INFO+ or even +WARN+.
+# +INFO+ or even +WARN+
# When you are developing the system, however, you probably
# want to know about the program's internal state, and would set the Logger to
# +DEBUG+.
@@ -52,29 +51,24 @@ require 'monitor'
#
# === Example
#
-# This creates a Logger that outputs to the standard output stream, with a
-# level of +WARN+:
+# This creates a logger to the standard output stream, with a level of +WARN+
#
-# require 'logger'
+# log = Logger.new(STDOUT)
+# log.level = Logger::WARN
#
-# logger = Logger.new(STDOUT)
-# logger.level = Logger::WARN
-#
-# logger.debug("Created logger")
-# logger.info("Program started")
-# logger.warn("Nothing to do!")
-#
-# path = "a_non_existent_file"
+# log.debug("Created logger")
+# log.info("Program started")
+# log.warn("Nothing to do!")
#
# begin
-# File.foreach(path) do |line|
+# File.each_line(path) do |line|
# unless line =~ /^(\w+) = (.*)$/
-# logger.error("Line in wrong format: #{line.chomp}")
+# log.error("Line in wrong format: #{line}")
# end
# end
# rescue => err
-# logger.fatal("Caught exception; exiting")
-# logger.fatal(err)
+# log.fatal("Caught exception; exiting")
+# log.fatal(err)
# end
#
# Because the Logger's level is set to +WARN+, only the warning, error, and
@@ -108,16 +102,16 @@ require 'monitor'
# 3. Create a logger for the specified file.
#
# file = File.open('foo.log', File::WRONLY | File::APPEND)
-# # To create new (and to remove old) logfile, add File::CREAT like:
-# # file = File.open('foo.log', File::WRONLY | File::APPEND | File::CREAT)
+# # To create new (and to remove old) logfile, add File::CREAT like;
+# # file = open('foo.log', File::WRONLY | File::APPEND | File::CREAT)
# logger = Logger.new(file)
#
-# 4. Create a logger which ages the logfile once it reaches a certain size.
-# Leave 10 "old" log files where each file is about 1,024,000 bytes.
+# 4. Create a logger which ages logfile once it reaches a certain size. Leave
+# 10 "old log files" and each file is about 1,024,000 bytes.
#
# logger = Logger.new('foo.log', 10, 1024000)
#
-# 5. Create a logger which ages the logfile daily/weekly/monthly.
+# 5. Create a logger which ages logfile daily/weekly/monthly.
#
# logger = Logger.new('foo.log', 'daily')
# logger = Logger.new('foo.log', 'weekly')
@@ -130,13 +124,13 @@ require 'monitor'
# +debug+. +add+ is used below to log a message of an arbitrary (perhaps
# dynamic) level.
#
-# 1. Message in a block.
+# 1. Message in block.
#
# logger.fatal { "Argument 'foo' not given." }
#
# 2. Message as a string.
#
-# logger.error "Argument #{@foo} mismatch."
+# logger.error "Argument #{ @foo } mismatch."
#
# 3. With progname.
#
@@ -174,7 +168,8 @@ require 'monitor'
#
# logger.level = Logger::INFO
#
-# # DEBUG < INFO < WARN < ERROR < FATAL < UNKNOWN
+# DEBUG < INFO < WARN < ERROR < FATAL < UNKNOWN
+#
#
# == Format
#
@@ -182,22 +177,22 @@ require 'monitor'
# default. The default format and a sample are shown below:
#
# Log format:
-# SeverityID, [DateTime #pid] SeverityLabel -- ProgName: message
+# SeverityID, [Date Time mSec #pid] SeverityLabel -- ProgName: message
#
# Log sample:
-# I, [1999-03-03T02:34:24.895701 #19074] INFO -- Main: info.
+# I, [Wed Mar 03 02:34:24 JST 1999 895701 #19074] INFO -- Main: info.
#
-# You may change the date and time format via #datetime_format=.
+# You may change the date and time format via #datetime_format=
#
-# logger.datetime_format = '%Y-%m-%d %H:%M:%S'
+# logger.datetime_format = "%Y-%m-%d %H:%M:%S"
# # e.g. "2004-01-03 00:54:26"
#
-# Or, you may change the overall format via the #formatter= method.
+# Or, you may change the overall format with #formatter= method.
#
# logger.formatter = proc do |severity, datetime, progname, msg|
# "#{datetime}: #{msg}\n"
# end
-# # e.g. "2005-09-22 08:51:08 +0900: hello world"
+# # e.g. "Thu Sep 22 08:51:08 GMT+9:00 2005: hello world"
#
class Logger
VERSION = "1.2.7"
@@ -218,17 +213,17 @@ class Logger
# Logging severity.
module Severity
- # Low-level information, mostly for developers.
+ # Low-level information, mostly for developers
DEBUG = 0
- # Generic (useful) information about system operation.
+ # generic, useful information about system operation
INFO = 1
- # A warning.
+ # a warning
WARN = 2
- # A handleable error condition.
+ # a handleable error condition
ERROR = 3
- # An unhandleable error that results in a program crash.
+ # an unhandleable error that results in a program crash
FATAL = 4
- # An unknown message that should always be logged.
+ # an unknown message that should always be logged
UNKNOWN = 5
end
include Severity
@@ -236,7 +231,7 @@ class Logger
# Logging severity threshold (e.g. <tt>Logger::INFO</tt>).
attr_accessor :level
- # Program name to include in log messages.
+ # program name to include in log messages.
attr_accessor :progname
# Set date-time format.
@@ -254,9 +249,9 @@ class Logger
# Logging formatter, as a +Proc+ that will take four arguments and
# return the formatted message. The arguments are:
#
- # +severity+:: The Severity of the log message.
- # +time+:: A Time instance representing when the message was logged.
- # +progname+:: The #progname configured, or passed to the logger method.
+ # +severity+:: The Severity of the log message
+ # +time+:: A Time instance representing when the message was logged
+ # +progname+:: The #progname configured, or passed to the logger method
# +msg+:: The _Object_ the user passed to the log message; not necessarily a
# String.
#
@@ -289,7 +284,8 @@ class Logger
def fatal?; @level <= FATAL; end
#
- # :call-seq:
+ # === Synopsis
+ #
# Logger.new(name, shift_age = 7, shift_size = 1048576)
# Logger.new(name, shift_age = 'weekly')
#
@@ -321,7 +317,8 @@ class Logger
end
#
- # :call-seq:
+ # === Synopsis
+ #
# Logger#add(severity, message = nil, progname = nil) { ... }
#
# === Args
@@ -341,8 +338,8 @@ class Logger
#
# +true+ if successful, +false+ otherwise.
#
- # When the given severity is not high enough (for this particular logger),
- # log no message, and return +true+.
+ # When the given severity is not high enough (for this particular logger), log
+ # no message, and return +true+.
#
# === Description
#
@@ -361,7 +358,7 @@ class Logger
#
# * Logfile is not locked.
# * Append open does not need to lock file.
- # * If the OS supports multi I/O, records possibly may be mixed.
+ # * If the OS which supports multi I/O, records possibly be mixed.
#
def add(severity, message = nil, progname = nil, &block)
severity ||= UNKNOWN
@@ -405,17 +402,18 @@ class Logger
#
# :call-seq:
# info(message)
- # info(progname, &block)
+ # info(progname,&block)
#
# Log an +INFO+ message.
#
- # +message+:: The message to log; does not need to be a String.
- # +progname+:: In the block form, this is the #progname to use in the
- # log message. The default can be set with #progname=.
- # +block+:: Evaluates to the message to log. This is not evaluated unless
- # the logger's level is sufficient to log the message. This
- # allows you to create potentially expensive logging messages that
- # are only called when the logger is configured to show them.
+ # +message+:: the message to log; does not need to be a String
+ # +progname+:: in the block form, this is the #progname to use in the
+ # the log message. The default can be set with #progname=
+ # <tt>&block</tt>:: evaluates to the message to log. This is not evaluated
+ # unless the logger's level is sufficient
+ # to log the message. This allows you to create
+ # potentially expensive logging messages that are
+ # only called when the logger is configured to show them.
#
# === Examples
#
@@ -465,7 +463,7 @@ class Logger
#
# Log an +UNKNOWN+ message. This will be printed no matter what the logger's
- # level is.
+ # level.
#
# See #info for more information.
#
@@ -482,7 +480,7 @@ class Logger
private
- # Severity label for logging (max 5 chars).
+ # Severity label for logging. (max 5 char)
SEV_LABEL = %w(DEBUG INFO WARN ERROR FATAL ANY)
def format_severity(severity)
@@ -494,7 +492,7 @@ private
end
- # Default formatter for log messages.
+ # Default formatter for log messages
class Formatter
Format = "%s, [%s#%d] %5s -- %s: %s\n"
@@ -680,13 +678,13 @@ private
#
# == Description
#
- # Application --- Add logging support to your application.
+ # Application -- Add logging support to your application.
#
# == Usage
#
# 1. Define your application class as a sub-class of this class.
- # 2. Override the +run+ method in your class to do many things.
- # 3. Instantiate it and invoke #start.
+ # 2. Override 'run' method in your class to do many things.
+ # 3. Instantiate it and invoke 'start'.
#
# == Example
#
@@ -713,7 +711,8 @@ private
attr_reader :appname
#
- # :call-seq:
+ # == Synopsis
+ #
# Application.new(appname = '')
#
# == Args
diff --git a/lib/matrix.rb b/lib/matrix.rb
index b1d1a5c2bd..3c078c0c06 100644
--- a/lib/matrix.rb
+++ b/lib/matrix.rb
@@ -32,93 +32,93 @@ end
# == Method Catalogue
#
# To create a matrix:
-# * Matrix[*rows]
-# * Matrix.[](*rows)
-# * Matrix.rows(rows, copy = true)
-# * Matrix.columns(columns)
-# * Matrix.build(row_count, column_count, &block)
-# * Matrix.diagonal(*values)
-# * Matrix.scalar(n, value)
-# * Matrix.identity(n)
-# * Matrix.unit(n)
-# * Matrix.I(n)
-# * Matrix.zero(n)
-# * Matrix.row_vector(row)
-# * Matrix.column_vector(column)
+# * <tt> Matrix[*rows] </tt>
+# * <tt> Matrix.[](*rows) </tt>
+# * <tt> Matrix.rows(rows, copy = true) </tt>
+# * <tt> Matrix.columns(columns) </tt>
+# * <tt> Matrix.build(row_size, column_size, &block) </tt>
+# * <tt> Matrix.diagonal(*values) </tt>
+# * <tt> Matrix.scalar(n, value) </tt>
+# * <tt> Matrix.identity(n) </tt>
+# * <tt> Matrix.unit(n) </tt>
+# * <tt> Matrix.I(n) </tt>
+# * <tt> Matrix.zero(n) </tt>
+# * <tt> Matrix.row_vector(row) </tt>
+# * <tt> Matrix.column_vector(column) </tt>
#
# To access Matrix elements/columns/rows/submatrices/properties:
-# * #[](i, j)
-# * #row_count (row_size)
-# * #column_count (column_size)
-# * #row(i)
-# * #column(j)
-# * #collect
-# * #map
-# * #each
-# * #each_with_index
-# * #find_index
-# * #minor(*param)
+# * <tt> [](i, j) </tt>
+# * <tt> #row_size </tt>
+# * <tt> #column_size </tt>
+# * <tt> #row(i) </tt>
+# * <tt> #column(j) </tt>
+# * <tt> #collect </tt>
+# * <tt> #map </tt>
+# * <tt> #each </tt>
+# * <tt> #each_with_index </tt>
+# * <tt> #find_index </tt>
+# * <tt> #minor(*param) </tt>
#
# Properties of a matrix:
-# * #diagonal?
-# * #empty?
-# * #hermitian?
-# * #lower_triangular?
-# * #normal?
-# * #orthogonal?
-# * #permutation?
-# * #real?
-# * #regular?
-# * #singular?
-# * #square?
-# * #symmetric?
-# * #unitary?
-# * #upper_triangular?
-# * #zero?
+# * <tt> #diagonal? </tt>
+# * <tt> #empty? </tt>
+# * <tt> #hermitian? </tt>
+# * <tt> #lower_triangular? </tt>
+# * <tt> #normal? </tt>
+# * <tt> #orthogonal? </tt>
+# * <tt> #permutation? </tt>
+# * <tt> #real? </tt>
+# * <tt> #regular? </tt>
+# * <tt> #singular? </tt>
+# * <tt> #square? </tt>
+# * <tt> #symmetric? </tt>
+# * <tt> #unitary? </tt>
+# * <tt> #upper_triangular? </tt>
+# * <tt> #zero? </tt>
#
# Matrix arithmetic:
-# * #*(m)
-# * #+(m)
-# * #-(m)
-# * #/(m)
-# * #inverse
-# * #inv
-# * #**
+# * <tt> *(m) </tt>
+# * <tt> +(m) </tt>
+# * <tt> -(m) </tt>
+# * <tt> #/(m) </tt>
+# * <tt> #inverse </tt>
+# * <tt> #inv </tt>
+# * <tt> ** </tt>
#
# Matrix functions:
-# * #determinant
-# * #det
-# * #rank
-# * #round
-# * #trace
-# * #tr
-# * #transpose
-# * #t
+# * <tt> #determinant </tt>
+# * <tt> #det </tt>
+# * <tt> #rank </tt>
+# * <tt> #round </tt>
+# * <tt> #trace </tt>
+# * <tt> #tr </tt>
+# * <tt> #transpose </tt>
+# * <tt> #t </tt>
#
# Matrix decompositions:
-# * #eigen
-# * #eigensystem
-# * #lup
-# * #lup_decomposition
+# * <tt> #eigen </tt>
+# * <tt> #eigensystem </tt>
+# * <tt> #lup </tt>
+# * <tt> #lup_decomposition </tt>
#
# Complex arithmetic:
-# * conj
-# * conjugate
-# * imag
-# * imaginary
-# * real
-# * rect
-# * rectangular
+# * <tt> conj </tt>
+# * <tt> conjugate </tt>
+# * <tt> imag </tt>
+# * <tt> imaginary </tt>
+# * <tt> real </tt>
+# * <tt> rect </tt>
+# * <tt> rectangular </tt>
#
# Conversion to other data types:
-# * #coerce(other)
-# * #row_vectors
-# * #column_vectors
-# * #to_a
+# * <tt> #coerce(other) </tt>
+# * <tt> #row_vectors </tt>
+# * <tt> #column_vectors </tt>
+# * <tt> #to_a </tt>
#
# String representations:
-# * #to_s
-# * #inspect
+# * <tt> #to_s </tt>
+# * <tt> #inspect </tt>
#
class Matrix
include Enumerable
@@ -138,7 +138,7 @@ class Matrix
# -1 66
#
def Matrix.[](*rows)
- rows(rows, false)
+ Matrix.rows(rows, false)
end
#
@@ -156,7 +156,7 @@ class Matrix
end
size = (rows[0] || []).size
rows.each do |row|
- raise ErrDimensionMismatch, "row size differs (#{row.size} should be #{size})" unless row.size == size
+ Matrix.Raise ErrDimensionMismatch, "row size differs (#{row.size} should be #{size})" unless row.size == size
end
new rows, size
end
@@ -168,11 +168,11 @@ class Matrix
# 93 66
#
def Matrix.columns(columns)
- rows(columns, false).transpose
+ Matrix.rows(columns, false).transpose
end
#
- # Creates a matrix of size +row_count+ x +column_count+.
+ # Creates a matrix of size +row_size+ x +column_size+.
# It fills the values by calling the given block,
# passing the current row and column.
# Returns an enumerator if no block is given.
@@ -182,17 +182,17 @@ class Matrix
# m = Matrix.build(3) { rand }
# => a 3x3 matrix with random elements
#
- def Matrix.build(row_count, column_count = row_count)
- row_count = CoercionHelper.coerce_to_int(row_count)
- column_count = CoercionHelper.coerce_to_int(column_count)
- raise ArgumentError if row_count < 0 || column_count < 0
- return to_enum :build, row_count, column_count unless block_given?
- rows = Array.new(row_count) do |i|
- Array.new(column_count) do |j|
+ def Matrix.build(row_size, column_size = row_size)
+ row_size = CoercionHelper.coerce_to_int(row_size)
+ column_size = CoercionHelper.coerce_to_int(column_size)
+ raise ArgumentError if row_size < 0 || column_size < 0
+ return to_enum :build, row_size, column_size unless block_given?
+ rows = Array.new(row_size) do |i|
+ Array.new(column_size) do |j|
yield i, j
end
end
- new rows, column_count
+ new rows, column_size
end
#
@@ -220,7 +220,7 @@ class Matrix
# 0 5
#
def Matrix.scalar(n, value)
- diagonal(*Array.new(n, value))
+ Matrix.diagonal(*Array.new(n, value))
end
#
@@ -230,7 +230,7 @@ class Matrix
# 0 1
#
def Matrix.identity(n)
- scalar(n, 1)
+ Matrix.scalar(n, 1)
end
class << Matrix
alias unit identity
@@ -243,9 +243,9 @@ class Matrix
# => 0 0
# 0 0
#
- def Matrix.zero(row_count, column_count = row_count)
- rows = Array.new(row_count){Array.new(column_count, 0)}
- new rows, column_count
+ def Matrix.zero(row_size, column_size = row_size)
+ rows = Array.new(row_size){Array.new(column_size, 0)}
+ new rows, column_size
end
#
@@ -273,8 +273,8 @@ class Matrix
end
#
- # Creates a empty matrix of +row_count+ x +column_count+.
- # At least one of +row_count+ or +column_count+ must be 0.
+ # Creates a empty matrix of +row_size+ x +column_size+.
+ # At least one of +row_size+ or +column_size+ must be 0.
#
# m = Matrix.empty(2, 0)
# m == Matrix[ [], [] ]
@@ -285,26 +285,26 @@ class Matrix
# m * n
# => Matrix[[0, 0, 0], [0, 0, 0]]
#
- def Matrix.empty(row_count = 0, column_count = 0)
- raise ArgumentError, "One size must be 0" if column_count != 0 && row_count != 0
- raise ArgumentError, "Negative size" if column_count < 0 || row_count < 0
+ def Matrix.empty(row_size = 0, column_size = 0)
+ Matrix.Raise ArgumentError, "One size must be 0" if column_size != 0 && row_size != 0
+ Matrix.Raise ArgumentError, "Negative size" if column_size < 0 || row_size < 0
- new([[]]*row_count, column_count)
+ new([[]]*row_size, column_size)
end
#
# Matrix.new is private; use Matrix.rows, columns, [], etc... to create.
#
- def initialize(rows, column_count = rows[0].size)
+ def initialize(rows, column_size = rows[0].size)
# No checking is done at this point. rows must be an Array of Arrays.
- # column_count must be the size of the first row, if there is one,
+ # column_size must be the size of the first row, if there is one,
# otherwise it *must* be specified and can be any integer >= 0
@rows = rows
- @column_count = column_count
+ @column_size = column_size
end
- def new_matrix(rows, column_count = rows[0].size) # :nodoc:
- self.class.send(:new, rows, column_count) # bypass privacy of Matrix.new
+ def new_matrix(rows, column_size = rows[0].size) # :nodoc:
+ Matrix.send(:new, rows, column_size) # bypass privacy of Matrix.new
end
private :new_matrix
@@ -327,16 +327,14 @@ class Matrix
#
# Returns the number of rows.
#
- def row_count
+ def row_size
@rows.size
end
- alias_method :row_size, :row_count
#
# Returns the number of columns.
#
- attr_reader :column_count
- alias_method :column_size, :column_count
+ attr_reader :column_size
#
# Returns row vector number +i+ of the matrix as a Vector (starting at 0 like
@@ -358,14 +356,14 @@ class Matrix
#
def column(j) # :yield: e
if block_given?
- return self if j >= column_count || j < -column_count
- row_count.times do |i|
+ return self if j >= column_size || j < -column_size
+ row_size.times do |i|
yield @rows[i][j]
end
self
else
- return nil if j >= column_count || j < -column_count
- col = Array.new(row_count) {|i|
+ return nil if j >= column_size || j < -column_size
+ col = Array.new(row_size) {|i|
@rows[i][j]
}
Vector.elements(col, false)
@@ -382,7 +380,7 @@ class Matrix
def collect(&block) # :yield: e
return to_enum(:collect) unless block_given?
rows = @rows.collect{|row| row.collect(&block)}
- new_matrix rows, column_count
+ new_matrix rows, column_size
end
alias map collect
@@ -404,7 +402,7 @@ class Matrix
#
def each(which = :all) # :yield: e
return to_enum :each, which unless block_given?
- last = column_count - 1
+ last = column_size - 1
case which
when :all
block = Proc.new
@@ -417,7 +415,7 @@ class Matrix
end
when :off_diagonal
@rows.each_with_index do |row, row_index|
- column_count.times do |col_index|
+ column_size.times do |col_index|
yield row[col_index] unless row_index == col_index
end
end
@@ -429,7 +427,7 @@ class Matrix
end
when :strict_lower
@rows.each_with_index do |row, row_index|
- [row_index, column_count].min.times do |col_index|
+ [row_index, column_size].min.times do |col_index|
yield row[col_index]
end
end
@@ -446,7 +444,7 @@ class Matrix
end
end
else
- raise ArgumentError, "expected #{which.inspect} to be one of :all, :diagonal, :off_diagonal, :lower, :strict_lower, :strict_upper or :upper"
+ Matrix.Raise ArgumentError, "expected #{which.inspect} to be one of :all, :diagonal, :off_diagonal, :lower, :strict_lower, :strict_upper or :upper"
end
self
end
@@ -465,7 +463,7 @@ class Matrix
#
def each_with_index(which = :all) # :yield: e, row, column
return to_enum :each_with_index, which unless block_given?
- last = column_count - 1
+ last = column_size - 1
case which
when :all
@rows.each_with_index do |row, row_index|
@@ -479,7 +477,7 @@ class Matrix
end
when :off_diagonal
@rows.each_with_index do |row, row_index|
- column_count.times do |col_index|
+ column_size.times do |col_index|
yield row[col_index], row_index, col_index unless row_index == col_index
end
end
@@ -491,7 +489,7 @@ class Matrix
end
when :strict_lower
@rows.each_with_index do |row, row_index|
- [row_index, column_count].min.times do |col_index|
+ [row_index, column_size].min.times do |col_index|
yield row[col_index], row_index, col_index
end
end
@@ -508,7 +506,7 @@ class Matrix
end
end
else
- raise ArgumentError, "expected #{which.inspect} to be one of :all, :diagonal, :off_diagonal, :lower, :strict_lower, :strict_upper or :upper"
+ Matrix.Raise ArgumentError, "expected #{which.inspect} to be one of :all, :diagonal, :off_diagonal, :lower, :strict_lower, :strict_upper or :upper"
end
self
end
@@ -554,39 +552,39 @@ class Matrix
#
# Like Array#[], negative indices count backward from the end of the
# row or column (-1 is the last element). Returns nil if the starting
- # row or column is greater than row_count or column_count respectively.
+ # row or column is greater than row_size or column_size respectively.
#
def minor(*param)
case param.size
when 2
row_range, col_range = param
from_row = row_range.first
- from_row += row_count if from_row < 0
+ from_row += row_size if from_row < 0
to_row = row_range.end
- to_row += row_count if to_row < 0
+ to_row += row_size if to_row < 0
to_row += 1 unless row_range.exclude_end?
size_row = to_row - from_row
from_col = col_range.first
- from_col += column_count if from_col < 0
+ from_col += column_size if from_col < 0
to_col = col_range.end
- to_col += column_count if to_col < 0
+ to_col += column_size if to_col < 0
to_col += 1 unless col_range.exclude_end?
size_col = to_col - from_col
when 4
from_row, size_row, from_col, size_col = param
return nil if size_row < 0 || size_col < 0
- from_row += row_count if from_row < 0
- from_col += column_count if from_col < 0
+ from_row += row_size if from_row < 0
+ from_col += column_size if from_col < 0
else
- raise ArgumentError, param.inspect
+ Matrix.Raise ArgumentError, param.inspect
end
- return nil if from_row > row_count || from_col > column_count || from_row < 0 || from_col < 0
+ return nil if from_row > row_size || from_col > column_size || from_row < 0 || from_col < 0
rows = @rows[from_row, size_row].collect{|row|
row[from_col, size_col]
}
- new_matrix rows, [column_count - from_col, size_col].min
+ new_matrix rows, [column_size - from_col, size_col].min
end
#--
@@ -607,7 +605,7 @@ class Matrix
# or the number of columns is 0.
#
def empty?
- column_count == 0 || row_count == 0
+ column_size == 0 || row_size == 0
end
#
@@ -616,7 +614,7 @@ class Matrix
#
def hermitian?
Matrix.Raise ErrDimensionMismatch unless square?
- each_with_index(:upper).all? do |e, row, col|
+ each_with_index(:strict_upper).all? do |e, row, col|
e == rows[col][row].conj
end
end
@@ -653,9 +651,9 @@ class Matrix
def orthogonal?
Matrix.Raise ErrDimensionMismatch unless square?
rows.each_with_index do |row, i|
- column_count.times do |j|
+ column_size.times do |j|
s = 0
- row_count.times do |k|
+ row_size.times do |k|
s += row[k] * rows[k][j]
end
return false unless s == (i == j ? 1 : 0)
@@ -670,7 +668,7 @@ class Matrix
#
def permutation?
Matrix.Raise ErrDimensionMismatch unless square?
- cols = Array.new(column_count)
+ cols = Array.new(column_size)
rows.each_with_index do |row, i|
found = false
row.each_with_index do |e, j|
@@ -711,7 +709,7 @@ class Matrix
# Returns +true+ is this is a square matrix.
#
def square?
- column_count == row_count
+ column_size == row_size
end
#
@@ -720,10 +718,9 @@ class Matrix
#
def symmetric?
Matrix.Raise ErrDimensionMismatch unless square?
- each_with_index(:strict_upper) do |e, row, col|
- return false if e != rows[col][row]
+ each_with_index(:strict_upper).all? do |e, row, col|
+ e == rows[col][row]
end
- true
end
#
@@ -733,9 +730,9 @@ class Matrix
def unitary?
Matrix.Raise ErrDimensionMismatch unless square?
rows.each_with_index do |row, i|
- column_count.times do |j|
+ column_size.times do |j|
s = 0
- row_count.times do |k|
+ row_size.times do |k|
s += row[k].conj * rows[k][j]
end
return false unless s == (i == j ? 1 : 0)
@@ -767,13 +764,13 @@ class Matrix
#
def ==(other)
return false unless Matrix === other &&
- column_count == other.column_count # necessary for empty matrices
+ column_size == other.column_size # necessary for empty matrices
rows == other.rows
end
def eql?(other)
return false unless Matrix === other &&
- column_count == other.column_count # necessary for empty matrices
+ column_size == other.column_size # necessary for empty matrices
rows.eql? other.rows
end
@@ -783,7 +780,7 @@ class Matrix
# There should be no good reason to do this since Matrices are immutable.
#
def clone
- new_matrix @rows.map(&:dup), column_count
+ new_matrix @rows.map(&:dup), column_size
end
#
@@ -809,22 +806,22 @@ class Matrix
rows = @rows.collect {|row|
row.collect {|e| e * m }
}
- return new_matrix rows, column_count
+ return new_matrix rows, column_size
when Vector
- m = self.class.column_vector(m)
+ m = Matrix.column_vector(m)
r = self * m
return r.column(0)
when Matrix
- Matrix.Raise ErrDimensionMismatch if column_count != m.row_count
+ Matrix.Raise ErrDimensionMismatch if column_size != m.row_size
- rows = Array.new(row_count) {|i|
- Array.new(m.column_count) {|j|
- (0 ... column_count).inject(0) do |vij, k|
+ rows = Array.new(row_size) {|i|
+ Array.new(m.column_size) {|j|
+ (0 ... column_size).inject(0) do |vij, k|
vij + self[i, k] * m[k, j]
end
}
}
- return new_matrix rows, m.column_count
+ return new_matrix rows, m.column_size
else
return apply_through_coercion(m, __method__)
end
@@ -841,20 +838,20 @@ class Matrix
when Numeric
Matrix.Raise ErrOperationNotDefined, "+", self.class, m.class
when Vector
- m = self.class.column_vector(m)
+ m = Matrix.column_vector(m)
when Matrix
else
return apply_through_coercion(m, __method__)
end
- Matrix.Raise ErrDimensionMismatch unless row_count == m.row_count and column_count == m.column_count
+ Matrix.Raise ErrDimensionMismatch unless row_size == m.row_size and column_size == m.column_size
- rows = Array.new(row_count) {|i|
- Array.new(column_count) {|j|
+ rows = Array.new(row_size) {|i|
+ Array.new(column_size) {|j|
self[i, j] + m[i, j]
}
}
- new_matrix rows, column_count
+ new_matrix rows, column_size
end
#
@@ -868,20 +865,20 @@ class Matrix
when Numeric
Matrix.Raise ErrOperationNotDefined, "-", self.class, m.class
when Vector
- m = self.class.column_vector(m)
+ m = Matrix.column_vector(m)
when Matrix
else
return apply_through_coercion(m, __method__)
end
- Matrix.Raise ErrDimensionMismatch unless row_count == m.row_count and column_count == m.column_count
+ Matrix.Raise ErrDimensionMismatch unless row_size == m.row_size and column_size == m.column_size
- rows = Array.new(row_count) {|i|
- Array.new(column_count) {|j|
+ rows = Array.new(row_size) {|i|
+ Array.new(column_size) {|j|
self[i, j] - m[i, j]
}
}
- new_matrix rows, column_count
+ new_matrix rows, column_size
end
#
@@ -896,7 +893,7 @@ class Matrix
rows = @rows.collect {|row|
row.collect {|e| e / other }
}
- return new_matrix rows, column_count
+ return new_matrix rows, column_size
when Matrix
return self * other.inverse
else
@@ -912,12 +909,12 @@ class Matrix
#
def inverse
Matrix.Raise ErrDimensionMismatch unless square?
- self.class.I(row_count).send(:inverse_from, self)
+ Matrix.I(row_size).send(:inverse_from, self)
end
alias inv inverse
def inverse_from(src) # :nodoc:
- last = row_count - 1
+ last = row_size - 1
a = src.to_a
0.upto(last) do |k|
@@ -976,7 +973,7 @@ class Matrix
x = self
if other <= 0
x = self.inverse
- return self.class.identity(self.column_count) if other == 0
+ return Matrix.identity(self.column_size) if other == 0
other = -other
end
z = nil
@@ -987,7 +984,7 @@ class Matrix
end
when Numeric
v, d, v_inv = eigensystem
- v * self.class.diagonal(*d.each(:diagonal).map{|e| e ** other}) * v_inv
+ v * Matrix.diagonal(*d.each(:diagonal).map{|e| e ** other}) * v_inv
else
Matrix.Raise ErrOperationNotDefined, "**", self.class, other.class
end
@@ -1010,7 +1007,7 @@ class Matrix
def determinant
Matrix.Raise ErrDimensionMismatch unless square?
m = @rows
- case row_count
+ case row_size
# Up to 4x4, give result using Laplacian expansion by minors.
# This will typically be faster, as well as giving good results
# in case of Floats
@@ -1059,7 +1056,7 @@ class Matrix
# intermediate results with better precision.
#
def determinant_bareiss
- size = row_count
+ size = row_size
last = size - 1
a = to_a
no_pivot = Proc.new{ return 0 }
@@ -1091,7 +1088,7 @@ class Matrix
#
def determinant_e
warn "#{caller(1)[0]}: warning: Matrix#determinant_e is deprecated; use #determinant"
- determinant
+ rank
end
alias det_e determinant_e
@@ -1108,8 +1105,8 @@ class Matrix
# We currently use Bareiss' multistep integer-preserving gaussian elimination
# (see comments on determinant)
a = to_a
- last_column = column_count - 1
- last_row = row_count - 1
+ last_column = column_size - 1
+ last_row = row_size - 1
pivot_row = 0
previous_pivot = 1
0.upto(last_column) do |k|
@@ -1154,7 +1151,7 @@ class Matrix
#
def trace
Matrix.Raise ErrDimensionMismatch unless square?
- (0...column_count).inject(0) do |tr, i|
+ (0...column_size).inject(0) do |tr, i|
tr + @rows[i][i]
end
end
@@ -1171,8 +1168,8 @@ class Matrix
# 2 4 6
#
def transpose
- return self.class.empty(column_count, 0) if row_count.zero?
- new_matrix @rows.transpose, row_count
+ return Matrix.empty(column_size, 0) if row_size.zero?
+ new_matrix @rows.transpose, row_size
end
alias t transpose
@@ -1200,7 +1197,7 @@ class Matrix
# l.lower_triangular? # => true
# u.upper_triangular? # => true
# p.permutation? # => true
- # l * u == p * a # => true
+ # l * u == a * p # => true
# a.lup.solve([2, 5]) # => Vector[(1/1), (1/2)]
#
def lup
@@ -1288,7 +1285,7 @@ class Matrix
# Returns an array of the row vectors of the matrix. See Vector.
#
def row_vectors
- Array.new(row_count) {|i|
+ Array.new(row_size) {|i|
row(i)
}
end
@@ -1297,7 +1294,7 @@ class Matrix
# Returns an array of the column vectors of the matrix. See Vector.
#
def column_vectors
- Array.new(column_count) {|i|
+ Array.new(column_size) {|i|
column(i)
}
end
@@ -1333,9 +1330,9 @@ class Matrix
#
def to_s
if empty?
- "#{self.class}.empty(#{row_count}, #{column_count})"
+ "Matrix.empty(#{row_size}, #{column_size})"
else
- "#{self.class}[" + @rows.collect{|row|
+ "Matrix[" + @rows.collect{|row|
"[" + row.collect{|e| e.to_s}.join(", ") + "]"
}.join(", ")+"]"
end
@@ -1346,9 +1343,9 @@ class Matrix
#
def inspect
if empty?
- "#{self.class}.empty(#{row_count}, #{column_count})"
+ "Matrix.empty(#{row_size}, #{column_size})"
else
- "#{self.class}#{@rows.inspect}"
+ "Matrix#{@rows.inspect}"
end
end
@@ -1502,40 +1499,40 @@ end
# == Method Catalogue
#
# To create a Vector:
-# * Vector.[](*array)
-# * Vector.elements(array, copy = true)
+# * <tt> Vector.[](*array) </tt>
+# * <tt> Vector.elements(array, copy = true) </tt>
#
# To access elements:
-# * #[](i)
+# * <tt> [](i) </tt>
#
# To enumerate the elements:
-# * #each2(v)
-# * #collect2(v)
+# * <tt> #each2(v) </tt>
+# * <tt> #collect2(v) </tt>
#
# Vector arithmetic:
-# * #*(x) "is matrix or number"
-# * #+(v)
-# * #-(v)
+# * <tt> *(x) "is matrix or number" </tt>
+# * <tt> +(v) </tt>
+# * <tt> -(v) </tt>
#
# Vector functions:
-# * #inner_product(v)
-# * #collect
-# * #magnitude
-# * #map
-# * #map2(v)
-# * #norm
-# * #normalize
-# * #r
-# * #size
+# * <tt> #inner_product(v) </tt>
+# * <tt> #collect </tt>
+# * <tt> #magnitude </tt>
+# * <tt> #map </tt>
+# * <tt> #map2(v) </tt>
+# * <tt> #norm </tt>
+# * <tt> #normalize </tt>
+# * <tt> #r </tt>
+# * <tt> #size </tt>
#
# Conversion to other data types:
-# * #covector
-# * #to_a
-# * #coerce(other)
+# * <tt> #covector </tt>
+# * <tt> #to_a </tt>
+# * <tt> #coerce(other) </tt>
#
# String representations:
-# * #to_s
-# * #inspect
+# * <tt> #to_s </tt>
+# * <tt> #inspect </tt>
#
class Vector
include ExceptionForMatrix
@@ -1657,7 +1654,7 @@ class Vector
# Return a copy of the vector.
#
def clone
- self.class.elements(@elements)
+ Vector.elements(@elements)
end
#
@@ -1678,7 +1675,7 @@ class Vector
case x
when Numeric
els = @elements.collect{|e| e * x}
- self.class.elements(els, false)
+ Vector.elements(els, false)
when Matrix
Matrix.column_vector(self) * x
when Vector
@@ -1698,7 +1695,7 @@ class Vector
els = collect2(v) {|v1, v2|
v1 + v2
}
- self.class.elements(els, false)
+ Vector.elements(els, false)
when Matrix
Matrix.column_vector(self) + v
else
@@ -1716,7 +1713,7 @@ class Vector
els = collect2(v) {|v1, v2|
v1 - v2
}
- self.class.elements(els, false)
+ Vector.elements(els, false)
when Matrix
Matrix.column_vector(self) - v
else
@@ -1731,7 +1728,7 @@ class Vector
case x
when Numeric
els = @elements.collect{|e| e / x}
- self.class.elements(els, false)
+ Vector.elements(els, false)
when Matrix, Vector
Vector.Raise ErrOperationNotDefined, "/", self.class, x.class
else
@@ -1752,7 +1749,7 @@ class Vector
p = 0
each2(v) {|v1, v2|
- p += v1 * v2.conj
+ p += v1 * v2
}
p
end
@@ -1763,7 +1760,7 @@ class Vector
def collect(&block) # :yield: e
return to_enum(:collect) unless block_given?
els = @elements.collect(&block)
- self.class.elements(els, false)
+ Vector.elements(els, false)
end
alias map collect
@@ -1772,7 +1769,7 @@ class Vector
# Vector[5,8,2].r => 9.643650761
#
def magnitude
- Math.sqrt(@elements.inject(0) {|v, e| v + e.abs2})
+ Math.sqrt(@elements.inject(0) {|v, e| v + e*e})
end
alias r magnitude
alias norm magnitude
@@ -1783,7 +1780,7 @@ class Vector
def map2(v, &block) # :yield: e1, e2
return to_enum(:map2, v) unless block_given?
els = collect2(v, &block)
- self.class.elements(els, false)
+ Vector.elements(els, false)
end
class ZeroVectorError < StandardError
diff --git a/lib/matrix/eigenvalue_decomposition.rb b/lib/matrix/eigenvalue_decomposition.rb
index 0dd9d42f29..55e41aaf7c 100644
--- a/lib/matrix/eigenvalue_decomposition.rb
+++ b/lib/matrix/eigenvalue_decomposition.rb
@@ -20,7 +20,7 @@ class Matrix
# @v: Array for internal storage of eigenvectors.
# @h: Array for internal storage of nonsymmetric Hessenberg form.
raise TypeError, "Expected Matrix but got #{a.class}" unless a.is_a?(Matrix)
- @size = a.row_count
+ @size = a.row_size
@d = Array.new(@size, 0)
@e = Array.new(@size, 0)
@@ -84,14 +84,14 @@ class Matrix
private
def build_eigenvectors
# JAMA stores complex eigenvectors in a strange way
- # See http://web.archive.org/web/20111016032731/http://cio.nist.gov/esd/emaildir/lists/jama/msg01021.html
+ # See http://cio.nist.gov/esd/emaildir/lists/jama/msg01021.html
@e.each_with_index.map do |imag, i|
if imag == 0
Array.new(@size){|j| @v[j][i]}
elsif imag > 0
Array.new(@size){|j| Complex(@v[j][i], @v[j][i+1])}
else
- Array.new(@size){|j| Complex(@v[j][i-1], -@v[j][i])}
+ Array.new(@size){|j| Complex(@v[j][i], -@v[j][i-1])}
end
end
end
@@ -659,10 +659,14 @@ class Matrix
q = @h[k+1][k-1]
r = (notlast ? @h[k+2][k-1] : 0.0)
x = p.abs + q.abs + r.abs
- next if x == 0
- p /= x
- q /= x
- r /= x
+ if (x != 0.0)
+ p /= x
+ q /= x
+ r /= x
+ end
+ end
+ if (x == 0.0)
+ break
end
s = Math.sqrt(p * p + q * q + r * r)
if (p < 0)
diff --git a/lib/matrix/lup_decomposition.rb b/lib/matrix/lup_decomposition.rb
index 30f3276253..8f5aac2e5a 100644
--- a/lib/matrix/lup_decomposition.rb
+++ b/lib/matrix/lup_decomposition.rb
@@ -19,7 +19,7 @@ class Matrix
include Matrix::ConversionHelper
def l
- Matrix.build(@row_count, [@column_count, @row_count].min) do |i, j|
+ Matrix.build(@row_size, @col_size) do |i, j|
if (i > j)
@lu[i][j]
elsif (i == j)
@@ -33,7 +33,7 @@ class Matrix
# Returns the upper triangular factor +U+
def u
- Matrix.build([@column_count, @row_count].min, @column_count) do |i, j|
+ Matrix.build(@col_size, @col_size) do |i, j|
if (i <= j)
@lu[i][j]
else
@@ -45,9 +45,9 @@ class Matrix
# Returns the permutation matrix +P+
def p
- rows = Array.new(@row_count){Array.new(@row_count, 0)}
+ rows = Array.new(@row_size){Array.new(@col_size, 0)}
@pivots.each_with_index{|p, i| rows[i][p] = 1}
- Matrix.send :new, rows, @row_count
+ Matrix.send :new, rows, @col_size
end
# Returns +L+, +U+, +P+ in an array
@@ -64,7 +64,7 @@ class Matrix
# Returns +true+ if +U+, and hence +A+, is singular.
def singular? ()
- @column_count.times do |j|
+ @col_size.times do |j|
if (@lu[j][j] == 0)
return true
end
@@ -76,11 +76,11 @@ class Matrix
# from the factorization.
def det
- if (@row_count != @column_count)
- Matrix.Raise Matrix::ErrDimensionMismatch
+ if (@row_size != @col_size)
+ Matrix.Raise Matrix::ErrDimensionMismatch unless square?
end
d = @pivot_sign
- @column_count.times do |j|
+ @col_size.times do |j|
d *= @lu[j][j]
end
d
@@ -96,24 +96,24 @@ class Matrix
Matrix.Raise Matrix::ErrNotRegular, "Matrix is singular."
end
if b.is_a? Matrix
- if (b.row_count != @row_count)
+ if (b.row_size != @row_size)
Matrix.Raise Matrix::ErrDimensionMismatch
end
# Copy right hand side with pivoting
- nx = b.column_count
+ nx = b.column_size
m = @pivots.map{|row| b.row(row).to_a}
# Solve L*Y = P*b
- @column_count.times do |k|
- (k+1).upto(@column_count-1) do |i|
+ @col_size.times do |k|
+ (k+1).upto(@col_size-1) do |i|
nx.times do |j|
m[i][j] -= m[k][j]*@lu[i][k]
end
end
end
# Solve U*m = Y
- (@column_count-1).downto(0) do |k|
+ (@col_size-1).downto(0) do |k|
nx.times do |j|
m[k][j] = m[k][j].quo(@lu[k][k])
end
@@ -126,7 +126,7 @@ class Matrix
Matrix.send :new, m, nx
else # same algorithm, specialized for simpler case of a vector
b = convert_to_array(b)
- if (b.size != @row_count)
+ if (b.size != @row_size)
Matrix.Raise Matrix::ErrDimensionMismatch
end
@@ -134,13 +134,13 @@ class Matrix
m = b.values_at(*@pivots)
# Solve L*Y = P*b
- @column_count.times do |k|
- (k+1).upto(@column_count-1) do |i|
+ @col_size.times do |k|
+ (k+1).upto(@col_size-1) do |i|
m[i] -= m[k]*@lu[i][k]
end
end
# Solve U*m = Y
- (@column_count-1).downto(0) do |k|
+ (@col_size-1).downto(0) do |k|
m[k] = m[k].quo(@lu[k][k])
k.times do |i|
m[i] -= m[k]*@lu[i][k]
@@ -154,28 +154,28 @@ class Matrix
raise TypeError, "Expected Matrix but got #{a.class}" unless a.is_a?(Matrix)
# Use a "left-looking", dot-product, Crout/Doolittle algorithm.
@lu = a.to_a
- @row_count = a.row_count
- @column_count = a.column_count
- @pivots = Array.new(@row_count)
- @row_count.times do |i|
+ @row_size = a.row_size
+ @col_size = a.column_size
+ @pivots = Array.new(@row_size)
+ @row_size.times do |i|
@pivots[i] = i
end
@pivot_sign = 1
- lu_col_j = Array.new(@row_count)
+ lu_col_j = Array.new(@row_size)
# Outer loop.
- @column_count.times do |j|
+ @col_size.times do |j|
# Make a copy of the j-th column to localize references.
- @row_count.times do |i|
+ @row_size.times do |i|
lu_col_j[i] = @lu[i][j]
end
# Apply previous transformations.
- @row_count.times do |i|
+ @row_size.times do |i|
lu_row_i = @lu[i]
# Most of the time is spent in the following dot product.
@@ -192,13 +192,13 @@ class Matrix
# Find pivot and exchange if necessary.
p = j
- (j+1).upto(@row_count-1) do |i|
+ (j+1).upto(@row_size-1) do |i|
if (lu_col_j[i].abs > lu_col_j[p].abs)
p = i
end
end
if (p != j)
- @column_count.times do |k|
+ @col_size.times do |k|
t = @lu[p][k]; @lu[p][k] = @lu[j][k]; @lu[j][k] = t
end
k = @pivots[p]; @pivots[p] = @pivots[j]; @pivots[j] = k
@@ -207,8 +207,8 @@ class Matrix
# Compute multipliers.
- if (j < @row_count && @lu[j][j] != 0)
- (j+1).upto(@row_count-1) do |i|
+ if (j < @row_size && @lu[j][j] != 0)
+ (j+1).upto(@row_size-1) do |i|
@lu[i][j] = @lu[i][j].quo(@lu[j][j])
end
end
diff --git a/lib/minitest/.document b/lib/minitest/.document
deleted file mode 100644
index 6850e5befb..0000000000
--- a/lib/minitest/.document
+++ /dev/null
@@ -1,2 +0,0 @@
-# Ignore README.txt, it is included in the minitest documentation.
-*.rb
diff --git a/lib/minitest/README.txt b/lib/minitest/README.txt
index 6430c1b442..7b1e6e681f 100644
--- a/lib/minitest/README.txt
+++ b/lib/minitest/README.txt
@@ -1,25 +1,12 @@
-= minitest/{unit,spec,mock,benchmark}
+= minitest/*
-home :: https://github.com/seattlerb/minitest
-rdoc :: http://docs.seattlerb.org/minitest
-vim :: https://github.com/sunaku/vim-ruby-minitest
+* http://rubyforge.org/projects/bfts
== DESCRIPTION:
minitest provides a complete suite of testing facilities supporting
TDD, BDD, mocking, and benchmarking.
- "I had a class with Jim Weirich on testing last week and we were
- allowed to choose our testing frameworks. Kirk Haines and I were
- paired up and we cracked open the code for a few test
- frameworks...
-
- I MUST say that minitest is *very* readable / understandable
- compared to the 'other two' options we looked at. Nicely done and
- thank you for helping us keep our mental sanity."
-
- -- Wayne E. Seguin
-
minitest/unit is a small and incredibly fast unit testing framework.
It provides a rich set of assertions to make your tests clean and
readable.
@@ -33,39 +20,23 @@ algorithms in a repeatable manner. Now you can assert that your newb
co-worker doesn't replace your linear algorithm with an exponential
one!
-minitest/mock by Steven Baker, is a beautifully tiny mock (and stub)
-object framework.
+minitest/mock by Steven Baker, is a beautifully tiny mock object
+framework.
minitest/pride shows pride in testing and adds coloring to your test
-output. I guess it is an example of how to write IO pipes too. :P
+output.
minitest/unit is meant to have a clean implementation for language
implementors that need a minimal set of methods to bootstrap a working
test suite. For example, there is no magic involved for test-case
discovery.
- "Again, I can't praise enough the idea of a testing/specing
- framework that I can actually read in full in one sitting!"
-
- -- Piotr Szotkowski
-
-Comparing to rspec:
-
- rspec is a testing DSL. minitest is ruby.
-
- -- Adam Hawkins, "Bow Before MiniTest"
-
-minitest doesn't reinvent anything that ruby already provides, like:
-classes, modules, inheritance, methods. This means you only have to
-learn ruby to use minitest and all of your regular OO practices like
-extract-method refactorings still apply.
-
== FEATURES/PROBLEMS:
* minitest/autorun - the easy and explicit way to run all your tests.
* minitest/unit - a very fast, simple, and clean test system.
* minitest/spec - a very fast, simple, and clean spec system.
-* minitest/mock - a simple and clean mock/stub system.
+* minitest/mock - a simple and clean mock system.
* minitest/benchmark - an awesome way to assert your algorithm's performance.
* minitest/pride - show your pride in testing!
* Incredibly small and fast runner, but no bells and whistles.
@@ -104,10 +75,6 @@ Given that you'd like to test the following class:
def test_that_it_will_not_blend
refute_match /^no/i, @meme.will_it_blend?
end
-
- def test_that_will_be_skipped
- skip "test this later"
- end
end
=== Specs
@@ -132,10 +99,6 @@ Given that you'd like to test the following class:
end
end
-For matchers support check out:
-
-https://github.com/zenspider/minitest-matchers
-
=== Benchmarks
Add benchmarks to your regular unit tests. If the unit tests fail, the
@@ -148,7 +111,9 @@ benchmarks won't run.
# Override self.bench_range or default range is [1, 10, 100, 1_000, 10_000]
def bench_my_algorithm
assert_performance_linear 0.9999 do |n| # n is a range value
- @obj.my_algorithm(n)
+ n.times do
+ @obj.my_algorithm
+ end
end
end
end
@@ -186,7 +151,7 @@ Output is tab-delimited to make it easy to paste into a spreadsheet.
def ask(question)
method = question.tr(" ","_") + "?"
- @meme.__send__(method)
+ @meme.send(method)
end
end
@@ -209,18 +174,6 @@ Output is tab-delimited to make it easy to paste into a spreadsheet.
end
end
-=== Stubs
-
- def test_stale_eh
- obj_under_test = Something.new
-
- refute obj_under_test.stale?
-
- Time.stub :now, Time.at(0) do # stub goes away once the block is done
- assert obj_under_test.stale?
- end
- end
-
=== Customizable Test Runner Types:
MiniTest::Unit.runner=(runner) provides an easy way of creating custom
@@ -273,77 +226,6 @@ fixture loading:
MiniTest::Unit.runner = MiniTestWithTransactions::Unit.new
-== Known Extensions:
-
-minitest-capistrano :: Assertions and expectations for testing Capistrano recipes
-minitest-capybara :: Capybara matchers support for minitest unit and spec
-minitest-chef-handler :: Run Minitest suites as Chef report handlers
-minitest-ci :: CI reporter plugin for MiniTest.
-minitest-colorize :: Colorize MiniTest output and show failing tests instantly.
-minitest-context :: Defines contexts for code reuse in MiniTest
- specs that share common expectations.
-minitest-debugger :: Wraps assert so failed assertions drop into
- the ruby debugger.
-minitest-display :: Patches MiniTest to allow for an easily configurable output.
-minitest-emoji :: Print out emoji for your test passes, fails, and skips.
-minitest-excludes :: Clean API for excluding certain tests you
- don't want to run under certain conditions.
-minitest-firemock :: Makes your MiniTest mocks more resilient.
-minitest-growl :: Test notifier for minitest via growl.
-minitest-instrument :: Instrument ActiveSupport::Notifications when
- test method is executed
-minitest-instrument-db :: Store information about speed of test
- execution provided by minitest-instrument in database
-minitest-libnotify :: Test notifier for minitest via libnotify.
-minitest-macruby :: Provides extensions to minitest for macruby UI testing.
-minitest-matchers :: Adds support for RSpec-style matchers to minitest.
-minitest-metadata :: Annotate tests with metadata (key-value).
-minitest-mongoid :: Mongoid assertion matchers for MiniTest
-minitest-must_not :: Provides must_not as an alias for wont in MiniTest
-minitest-predicates :: Adds support for .predicate? methods
-minitest-rails :: MiniTest integration for Rails 3.x
-minitest-rails-capybara :: Capybara integration for MiniTest::Rails
-minitest-reporters :: Create customizable MiniTest output formats
-minitest-rg :: redgreen minitest
-minitest-shouldify :: Adding all manner of shoulds to MiniTest (bad idea)
-minitest-spec-magic :: Minitest::Spec extensions for Rails and beyond
-minitest-tags :: add tags for minitest
-minitest-wscolor :: Yet another test colorizer.
-minitest_owrapper :: Get tests results as a TestResult object.
-minitest_should :: Shoulda style syntax for minitest test::unit.
-minitest_tu_shim :: minitest_tu_shim bridges between test/unit and minitest.
-mongoid-minitest :: MiniTest matchers for Mongoid.
-pry-rescue :: A pry plugin w/ minitest support. See pry-rescue/minitest.rb.
-
-== Unknown Extensions:
-
-Authors... Please send me a pull request with a description of your minitest extension.
-
-* assay-minitest
-* capybara_minitest_spec
-* detroit-minitest
-* em-minitest-spec
-* flexmock-minitest
-* guard-minitest
-* guard-minitest-decisiv
-* minitest-activemodel
-* minitest-ar-assertions
-* minitest-around
-* minitest-capybara-unit
-* minitest-colorer
-* minitest-deluxe
-* minitest-extra-assertions
-* minitest-nc
-* minitest-rails-shoulda
-* minitest-spec
-* minitest-spec-context
-* minitest-spec-rails
-* minitest-spec-should
-* minitest-sugar
-* minitest_should
-* mongoid-minitest
-* spork-minitest
-
== REQUIREMENTS:
* Ruby 1.8, maybe even 1.6 or lower. No magic is involved.
@@ -361,18 +243,11 @@ the gem, but you'll need to activate the gem explicitly to use it:
# ... usual testing stuffs ...
-DO NOTE: There is a serious problem with the way that ruby 1.9/2.0
-packages their own gems. They install a gem specification file, but
-don't install the gem contents in the gem path. This messes up
-Gem.find_files and many other things (gem which, gem contents, etc).
-
-Just install minitest as a gem for real and you'll be happier.
-
== LICENSE:
(The MIT License)
-Copyright (c) Ryan Davis, seattle.rb
+Copyright (c) Ryan Davis, Seattle.rb
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/lib/minitest/autorun.rb b/lib/minitest/autorun.rb
index cb4a3a0e5d..443f2f61d4 100644
--- a/lib/minitest/autorun.rb
+++ b/lib/minitest/autorun.rb
@@ -1,4 +1,3 @@
-# encoding: utf-8
######################################################################
# This file is imported from the minitest project.
# DO NOT make modifications in this repo. They _will_ be reverted!
diff --git a/lib/minitest/benchmark.rb b/lib/minitest/benchmark.rb
index 02121db340..77c0afafb7 100644
--- a/lib/minitest/benchmark.rb
+++ b/lib/minitest/benchmark.rb
@@ -1,4 +1,3 @@
-# encoding: utf-8
######################################################################
# This file is imported from the minitest project.
# DO NOT make modifications in this repo. They _will_ be reverted!
@@ -8,7 +7,9 @@
require 'minitest/unit'
require 'minitest/spec'
-class MiniTest::Unit # :nodoc:
+class MiniTest::Unit
+ attr_accessor :runner
+
def run_benchmarks # :nodoc:
_run_anything :benchmark
end
@@ -82,8 +83,8 @@ class MiniTest::Unit # :nodoc:
#
# def bench_algorithm
# validation = proc { |x, y| ... }
- # assert_performance validation do |n|
- # @obj.algorithm(n)
+ # assert_performance validation do |x|
+ # @obj.algorithm
# end
# end
@@ -126,8 +127,8 @@ class MiniTest::Unit # :nodoc:
# Eg:
#
# def bench_algorithm
- # assert_performance_constant 0.9999 do |n|
- # @obj.algorithm(n)
+ # assert_performance_constant 0.9999 do |x|
+ # @obj.algorithm
# end
# end
@@ -152,8 +153,8 @@ class MiniTest::Unit # :nodoc:
# Eg:
#
# def bench_algorithm
- # assert_performance_exponential 0.9999 do |n|
- # @obj.algorithm(n)
+ # assert_performance_exponential 0.9999 do |x|
+ # @obj.algorithm
# end
# end
@@ -172,8 +173,8 @@ class MiniTest::Unit # :nodoc:
# Eg:
#
# def bench_algorithm
- # assert_performance_linear 0.9999 do |n|
- # @obj.algorithm(n)
+ # assert_performance_linear 0.9999 do |x|
+ # @obj.algorithm
# end
# end
@@ -317,15 +318,6 @@ class MiniTest::Spec
define_method "bench_#{name.gsub(/\W+/, '_')}", &block
end
- ##
- # Specifies the ranges used for benchmarking for that class.
- #
- # bench_range do
- # bench_exp(2, 16, 2)
- # end
- #
- # See Unit::TestCase.bench_range for more details.
-
def self.bench_range &block
return super unless block
@@ -337,8 +329,8 @@ class MiniTest::Spec
# Create a benchmark that verifies that the performance is linear.
#
# describe "my class" do
- # bench_performance_linear "fast_algorithm", 0.9999 do |n|
- # @obj.fast_algorithm(n)
+ # bench_performance_linear "fast_algorithm", 0.9999 do
+ # @obj.fast_algorithm
# end
# end
@@ -352,8 +344,8 @@ class MiniTest::Spec
# Create a benchmark that verifies that the performance is constant.
#
# describe "my class" do
- # bench_performance_constant "zoom_algorithm!" do |n|
- # @obj.zoom_algorithm!(n)
+ # bench_performance_constant "zoom_algorithm!" do
+ # @obj.zoom_algorithm!
# end
# end
@@ -367,8 +359,8 @@ class MiniTest::Spec
# Create a benchmark that verifies that the performance is exponential.
#
# describe "my class" do
- # bench_performance_exponential "algorithm" do |n|
- # @obj.algorithm(n)
+ # bench_performance_exponential "algorithm" do
+ # @obj.algorithm
# end
# end
diff --git a/lib/minitest/hell.rb b/lib/minitest/hell.rb
deleted file mode 100644
index 0e4101f3f8..0000000000
--- a/lib/minitest/hell.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# encoding: utf-8
-######################################################################
-# This file is imported from the minitest project.
-# DO NOT make modifications in this repo. They _will_ be reverted!
-# File a patch instead and assign it to Ryan Davis.
-######################################################################
-
-class Minitest::Unit::TestCase # :nodoc:
- class << self
- alias :old_test_order :test_order
-
- def test_order # :nodoc:
- :parallel
- end
- end
-end
diff --git a/lib/minitest/mock.rb b/lib/minitest/mock.rb
index c636b9e901..c342c04995 100644
--- a/lib/minitest/mock.rb
+++ b/lib/minitest/mock.rb
@@ -1,17 +1,15 @@
-# encoding: utf-8
######################################################################
# This file is imported from the minitest project.
# DO NOT make modifications in this repo. They _will_ be reverted!
# File a patch instead and assign it to Ryan Davis.
######################################################################
-class MockExpectationError < StandardError # :nodoc:
-end # omg... worst bug ever. rdoc doesn't allow 1-liners
+class MockExpectationError < StandardError; end
##
# A simple and clean mock object framework.
-module MiniTest # :nodoc:
+module MiniTest
##
# All mock objects are an instance of Mock
@@ -26,13 +24,13 @@ module MiniTest # :nodoc:
end
def initialize # :nodoc:
- @expected_calls = Hash.new { |calls, name| calls[name] = [] }
- @actual_calls = Hash.new { |calls, name| calls[name] = [] }
+ @expected_calls = {}
+ @actual_calls = Hash.new {|h,k| h[k] = [] }
end
##
- # Expect that method +name+ is called, optionally with +args+ or a
- # +blk+, and returns +retval+.
+ # Expect that method +name+ is called, optionally with +args+, and returns
+ # +retval+.
#
# @mock.expect(:meaning_of_life, 42)
# @mock.meaning_of_life # => 42
@@ -40,10 +38,6 @@ module MiniTest # :nodoc:
# @mock.expect(:do_something_with, true, [some_obj, true])
# @mock.do_something_with(some_obj, true) # => true
#
- # @mock.expect(:do_something_else, true) do |a1, a2|
- # a1 == "buggs" && a2 == :bunny
- # end
- #
# +args+ is compared to the expected args using case equality (ie, the
# '===' operator), allowing for less specific expectations.
#
@@ -55,146 +49,58 @@ module MiniTest # :nodoc:
# @mock.uses_one_string("bar") # => true
# @mock.verify # => raises MockExpectationError
- def expect(name, retval, args=[], &blk)
- if block_given?
- raise ArgumentError, "args ignored when block given" unless args.empty?
- @expected_calls[name] << { :retval => retval, :block => blk }
- else
- raise ArgumentError, "args must be an array" unless Array === args
- @expected_calls[name] << { :retval => retval, :args => args }
- end
+ def expect(name, retval, args=[])
+ @expected_calls[name] = { :retval => retval, :args => args }
self
end
- def __call name, data # :nodoc:
- case data
- when Hash then
- "#{name}(#{data[:args].inspect[1..-2]}) => #{data[:retval].inspect}"
- else
- data.map { |d| __call name, d }.join ", "
- end
- end
-
##
# Verify that all methods were called as expected. Raises
# +MockExpectationError+ if the mock object was not called as
# expected.
def verify
- @expected_calls.each do |name, calls|
- calls.each do |expected|
- msg1 = "expected #{__call name, expected}"
- msg2 = "#{msg1}, got [#{__call name, @actual_calls[name]}]"
-
- raise MockExpectationError, msg2 if
- @actual_calls.has_key?(name) and
- not @actual_calls[name].include?(expected)
-
- raise MockExpectationError, msg1 unless
- @actual_calls.has_key?(name) and
- @actual_calls[name].include?(expected)
- end
+ @expected_calls.each_key do |name|
+ expected = @expected_calls[name]
+ msg1 = "expected #{name}, #{expected.inspect}"
+ msg2 = "#{msg1}, got #{@actual_calls[name].inspect}"
+
+ raise MockExpectationError, msg2 if
+ @actual_calls.has_key? name and
+ not @actual_calls[name].include?(expected)
+
+ raise MockExpectationError, msg1 unless
+ @actual_calls.has_key? name and @actual_calls[name].include?(expected)
end
true
end
def method_missing(sym, *args) # :nodoc:
- unless @expected_calls.has_key?(sym) then
+ expected = @expected_calls[sym]
+
+ unless expected then
raise NoMethodError, "unmocked method %p, expected one of %p" %
[sym, @expected_calls.keys.sort_by(&:to_s)]
end
- index = @actual_calls[sym].length
- expected_call = @expected_calls[sym][index]
+ expected_args, retval = expected[:args], expected[:retval]
- unless expected_call then
- raise MockExpectationError, "No more expects available for %p: %p" %
- [sym, args]
- end
-
- expected_args, retval, val_block =
- expected_call.values_at(:args, :retval, :block)
-
- if val_block then
- raise MockExpectationError, "mocked method %p failed block w/ %p" %
- [sym, args] unless val_block.call(args)
-
- # keep "verify" happy
- @actual_calls[sym] << expected_call
- return retval
- end
-
- if expected_args.size != args.size then
+ unless expected_args.size == args.size
raise ArgumentError, "mocked method %p expects %d arguments, got %d" %
- [sym, expected_args.size, args.size]
- end
-
- fully_matched = expected_args.zip(args).all? { |mod, a|
- mod === a or mod == a
- }
-
- unless fully_matched then
- raise MockExpectationError, "mocked method %p called with unexpected arguments %p" %
- [sym, args]
+ [sym, expected[:args].size, args.size]
end
@actual_calls[sym] << {
:retval => retval,
- :args => expected_args.zip(args).map { |mod, a| mod === a ? mod : a }
+ :args => expected_args.zip(args).map { |mod, a| mod if mod === a }
}
retval
end
- def respond_to?(sym, include_private = false) # :nodoc:
- return true if @expected_calls.has_key?(sym.to_sym)
- return __respond_to?(sym, include_private)
+ def respond_to?(sym) # :nodoc:
+ return true if @expected_calls.has_key?(sym)
+ return __respond_to?(sym)
end
end
end
-
-class Object # :nodoc:
-
- ##
- # Add a temporary stubbed method replacing +name+ for the duration
- # of the +block+. If +val_or_callable+ responds to #call, then it
- # returns the result of calling it, otherwise returns the value
- # as-is. Cleans up the stub at the end of the +block+.
- #
- # def test_stale_eh
- # obj_under_test = Something.new
- # refute obj_under_test.stale?
- #
- # Time.stub :now, Time.at(0) do
- # assert obj_under_test.stale?
- # end
- # end
-
- def stub name, val_or_callable, &block
- new_name = "__minitest_stub__#{name}"
-
- metaclass = class << self; self; end
-
- if respond_to? name and not methods.map(&:to_s).include? name.to_s then